๐Ÿ–ฅ๏ธ System

NVMe Architecture

๊ฐœ์š”

NVMe(Non-Volatile Memory Express)๋Š” PCIe๋ฅผ ์ค‘์‹ฌ์œผ๋กœ, ํ™•์žฅ ์‹œ์—๋Š” RDMA๋‚˜ TCP ๊ฐ™์€ fabric transport ์œ„์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •์˜๋œ ๊ณ ์„ฑ๋Šฅ ๋น„ํœ˜๋ฐœ์„ฑ ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค ํ‘œ์ค€์ด๋‹ค. 2011๋…„์— ์ฒ˜์Œ ๊ณต๊ฐœ๋œ ์ดํ›„, SATA/AHCI๊ฐ€ ๊ฐ€์ง„ ๋‹จ์ผ ํ์™€ ๋ ˆ์ง€์Šคํ„ฐ ์ค‘์‹ฌ ๊ฒฝ๋กœ์˜ ๋ณ‘๋ชฉ์„ ์ค„์ด๋„๋ก ์„ค๊ณ„๋˜์–ด ํ˜„๋Œ€ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ์™€ ๊ฐœ์ธ์šฉ ์‹œ์Šคํ…œ์˜ ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ๋Œ์–ด์˜ฌ๋ ธ๋‹ค.

NVMe๋Š” ๋‚ฎ์€ ๋ ˆ์ดํ„ด์‹œ์™€ ๋†’์€ ๋ณ‘๋ ฌ์„ฑ์„ ํ™œ์šฉํ•˜๋„๋ก ์„ค๊ณ„๋˜์–ด, ๊ธฐ์กด HDD ์ค‘์‹ฌ ์ธํ„ฐํŽ˜์ด์Šค์ธ AHCI ๋Œ€๋น„ ํ›จ์”ฌ ๋งŽ์€ ๋™์‹œ ๋ช…๋ น์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ CPU ์ฝ”์–ด๋ณ„ ํ ๋ฐฐ์น˜, DMA ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ด๋™, MSI-X ๊ธฐ๋ฐ˜ ์™„๋ฃŒ ์•Œ๋ฆผ ๋•๋ถ„์— ๋ฉ€ํ‹ฐ์ฝ”์–ด ์„œ๋ฒ„์™€ ๊ณ ์„ฑ๋Šฅ SSD์—์„œ ์„ฑ๋Šฅ์„ ์•ˆ์ •์ ์œผ๋กœ ๋Œ์–ด๋‚ด๊ธฐ ์‰ฝ๋‹ค. ํ˜„์žฌ๋Š” ํด๋ผ์ด์–ธํŠธ PC์˜ M.2 SSD๋ถ€ํ„ฐ ์„œ๋ฒ„์šฉ U.2, EDSFF, NVMe-oF ์Šคํ† ๋ฆฌ์ง€๊นŒ์ง€ ํญ๋„“๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.

ํ•ต์‹ฌ ๊ฐœ๋…

NVMe ์Šคํƒ ๊ตฌ์กฐ

NVMe Architecture Overview

NVMe ์•„ํ‚คํ…์ฒ˜๋Š” ํฌ๊ฒŒ ์„ธ ๊ฐ€์ง€ ๋ ˆ์ด์–ด๋กœ ๊ตฌ์„ฑ๋œ๋‹ค:

  1. Host System (CPU/GPU): NVMe ๋“œ๋ผ์ด๋ฒ„์™€ ํŒŒ์ผ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด ์Šคํ† ๋ฆฌ์ง€ ์š”์ฒญ์„ ๊ด€๋ฆฌ
  2. PCIe Bus: Gen3/4/5 x4 ๋ ˆ์ธ์„ ํ†ตํ•ด ๊ณ ๋Œ€์—ญํญ ์ €์ง€์—ฐ ์—ฐ๊ฒฐ ์ œ๊ณต
  3. NVMe Controller: ๋ช…๋ น ํ ๊ด€๋ฆฌ, NAND Flash ์ธํ„ฐํŽ˜์ด์Šค, FTL(Flash Translation Layer) ์ฒ˜๋ฆฌ

๋ช…๋ น ํ ๊ตฌ์กฐ

NVMe์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ๋‹ค์ค‘ ๋ช…๋ น ํ(Multi-Queue) ๊ตฌ์กฐ์ด๋‹ค:

  • Admin Queue: ๋””๋ฐ”์ด์Šค ๊ด€๋ฆฌ ๋ช…๋ น (ํฌ๋งท, ์„ค์ • ๋ณ€๊ฒฝ ๋“ฑ)
  • I/O Queue: ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋ช…๋ น (์ตœ๋Œ€ 65,535๊ฐœ ํ ์ง€์›)
  • ํ ๊นŠ์ด: ๊ฐ ํ๋‹น ์ตœ๋Œ€ 65,536๊ฐœ ๋ช…๋ น ๋™์‹œ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

๊ฐ CPU ์ฝ”์–ด๋Š” ์ „์šฉ I/O ํ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฝ ๊ฒฝ์Ÿ ์—†์ด ๋ณ‘๋ ฌ๋กœ I/O ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋Š” AHCI์˜ ๋‹จ์ผ ํ ๊ตฌ์กฐ์™€ ๊ทน๋ช…ํ•˜๊ฒŒ ๋Œ€๋น„๋œ๋‹ค.

์‹ค์ œ ๋™์ž‘์€ Submission Queue์™€ Completion Queue๊ฐ€ ํ•œ ์Œ์„ ์ด๋ฃจ๋Š” queue pair๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์ง„ํ–‰๋œ๋‹ค. ํ˜ธ์ŠคํŠธ๋Š” Submission Queue์— ๋ช…๋ น์„ ์ ์žฌํ•˜๊ณ  doorbell ๋ ˆ์ง€์Šคํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜๋ฉฐ, ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ช…๋ น ์ฒ˜๋ฆฌ ํ›„ Completion Queue์— ์ƒํƒœ๋ฅผ ๊ธฐ๋กํ•˜๊ณ  MSI-X ์ธํ„ฐ๋ŸฝํŠธ ๋˜๋Š” polling์œผ๋กœ ์™„๋ฃŒ๋ฅผ ์•Œ๋ฆฐ๋‹ค.

๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ์—๋Š” ๋ช…๋ น ์ž์ฒด์— ๋ฐ์ดํ„ฐ๋ฅผ ์‹ฃ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ PRP(Physical Region Page) ๋˜๋Š” SGL(Scatter-Gather List)๋กœ ํ˜ธ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ ๋ฒ„ํผ๋ฅผ ๊ฐ€๋ฆฌํ‚จ๋‹ค. ์ด ๋•๋ถ„์— NVMe๋Š” ๋ช…๋ น ๊ฒฝ๋กœ๋ฅผ ์งง๊ฒŒ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ํฐ I/O๋ฅผ DMA๋กœ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

Namespace์™€ ์ปจํŠธ๋กค๋Ÿฌ

NVMe๋Š” ์ €์žฅ ์žฅ์น˜๋ฅผ ํ•˜๋‚˜์˜ namespace ๋˜๋Š” ์—ฌ๋Ÿฌ namespace๋กœ ๋‚˜๋ˆ„์–ด ํ˜ธ์ŠคํŠธ์— ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ฐ namespace๋Š” ๋…๋ฆฝ์ ์ธ LBA ์ฃผ์†Œ ๊ณต๊ฐ„์„ ๊ฐ€์ง€๋ฉฐ, ํ•œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์—ฌ๋Ÿฌ namespace๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

์ด ๊ตฌ์กฐ ๋•๋ถ„์— ํ˜ธ์ŠคํŠธ๋Š” ์›Œํฌ๋กœ๋“œ, ํ…Œ๋„ŒํŠธ, ์šฉ๋„๋ณ„๋กœ ์ €์žฅ ๊ณต๊ฐ„์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์‰ฝ๊ณ , ๋ฉ€ํ‹ฐํ ๊ตฌ์กฐ์™€ ๊ฒฐํ•ฉํ•˜๋ฉด ๋ณ‘๋ ฌ I/O ๊ฒฝ๋กœ๋ฅผ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.

NVMe 2.0 ๊ณ„์—ด์—์„œ๋Š” command set ๋ถ„๋ฆฌ์™€ subsystem ๊ฐœ๋…์ด ๋” ์ค‘์š”ํ•ด์กŒ๋‹ค. ํ•˜๋‚˜์˜ NVMe subsystem ์•„๋ž˜์— ์—ฌ๋Ÿฌ ์ปจํŠธ๋กค๋Ÿฌ์™€ namespace๊ฐ€ ๋ฐฐ์น˜๋  ์ˆ˜ ์žˆ๊ณ , namespace๋Š” NVM command set ์™ธ์—๋„ ZNS ๊ฐ™์€ ๋‹ค๋ฅธ command set๊ณผ ๊ฒฐํ•ฉ๋  ์ˆ˜ ์žˆ์–ด ์žฅ์น˜ ํŠนํ™” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ๋…ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

NVMe vs AHCI ๋น„๊ต

NVMe vs AHCI Comparison
ํ•ญ๋ชฉ AHCI NVMe
๋ช…๋ น ํ 1๊ฐœ (๊นŠ์ด: 32) 65,535๊ฐœ (๊นŠ์ด: 64K)
์ธํ„ฐ๋ŸฝํŠธ ๋‹จ์ผ IRQ MSI-X (2,048 ๋ฒกํ„ฐ)
๋ ˆ์ง€์Šคํ„ฐ ์ ‘๊ทผ 6~9ํšŒ/๋ช…๋ น 2ํšŒ/๋ช…๋ น
๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ˜์ด์ค‘ ํ’€ ๋“€ํ”Œ๋ ‰์Šค
๋™๊ธฐํ™” ๋ฝ ํ•„์š” ๋ฝ ๋ถˆํ•„์š”
์ ์šฉ ์‹œ๋Œ€ HDD (1990s) NVMe SSD (2011+)

ํฌ๋งท ํŒฉํ„ฐ

NVMe Form Factors

NVMe SSD๋Š” ๋‹ค์–‘ํ•œ ํฌ๋งท ํŒฉํ„ฐ๋กœ ์ œ๊ณต๋œ๋‹ค:

M.2 (NGFF)

  • ํฌ๊ธฐ: 22mm ร— 30~110mm (2280์ด ๊ฐ€์žฅ ํ”ํ•จ)
  • ์ธํ„ฐํŽ˜์ด์Šค: PCIe Gen3/4/5 x4
  • ์ ์šฉ: ์†Œ๋น„์ž ๋…ธํŠธ๋ถ, ๋ฐ์Šคํฌํ†ฑ, ๋ชจ๋ฐ”์ผ
  • ์žฅ์ : ์†Œํ˜•, ์ €์ „๋ ฅ, ๋†’์€ ํ˜ธํ™˜์„ฑ

U.2 (SFF-8639)

  • ํฌ๊ธฐ: 2.5" ํผ ํŒฉํ„ฐ
  • ์ธํ„ฐํŽ˜์ด์Šค: PCIe Gen3/4 x4
  • ์ ์šฉ: ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ์„œ๋ฒ„, ์Šคํ† ๋ฆฌ์ง€ ์–ด๋ ˆ์ด
  • ์žฅ์ : ํ•ซ์Šค์™‘ ์ง€์›, ์ตœ๋Œ€ 25W ์ „๋ ฅ

AIC (Add-in Card)

  • ํฌ๊ธฐ: HHHL/FHHL PCIe ์Šฌ๋กฏ
  • ์ธํ„ฐํŽ˜์ด์Šค: PCIe Gen3/4 x4/x8
  • ์ ์šฉ: ๋ฐ์ดํ„ฐ ์„ผํ„ฐ, ๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ…
  • ์žฅ์ : ๋†’์€ ์šฉ๋Ÿ‰, ๋ฐฉ์—ดํŒ ์žฅ์ฐฉ ๊ฐ€๋Šฅ

EDSFF (Enterprise and Data Center Standard Form Factor)

  • ํฌ๊ธฐ: E1.S, E3.S ๋“ฑ ํ‘œ์ค€ํ™”๋œ ๊ทœ๊ฒฉ
  • ์ธํ„ฐํŽ˜์ด์Šค: PCIe Gen5
  • ์ ์šฉ: ์ฐจ์„ธ๋Œ€ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ
  • ์žฅ์ : ํ™•์žฅ์„ฑ, ํ‘œ์ค€ํ™”๋œ ๊ด€๋ฆฌ

NVMe over Fabrics (NVMe-oF)

NVMe-oF๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์›๊ฒฉ NVMe ๋””๋ฐ”์ด์Šค์— ์ ‘๊ทผํ•˜๋Š” ํ”„๋กœํ† ์ฝœ์ด๋‹ค:

  • FC-NVMe: Fibre Channel ๊ธฐ๋ฐ˜ (๋ฐ์ดํ„ฐ ์„ผํ„ฐ ํ‘œ์ค€)
  • NVMe/TCP: TCP/IP ๊ธฐ๋ฐ˜ (๋น„์šฉ ํšจ์œจ์ )
  • NVMe/RoCE: RDMA over Converged Ethernet (์ €์ง€์—ฐ)
  • NVMe/IB: InfiniBand (๊ณ ์„ฑ๋Šฅ ์ปดํ“จํŒ…)

ํ•ต์‹ฌ์€ ๋กœ์ปฌ PCIe NVMe์˜ queue pair์™€ ๋ช…๋ น ๋ชจ๋ธ์„ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•œ ์ฑ„ transport๋งŒ ๋ฐ”๊พธ๋Š” ์ ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ณผ ์ƒ์œ„ ์Šคํ† ๋ฆฌ์ง€ ์†Œํ”„ํŠธ์›จ์–ด๋Š” ๋กœ์ปฌ NVMe์™€ ์œ ์‚ฌํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„, ๋ž™ ๋‹จ์œ„๋‚˜ ํŒจ๋ธŒ๋ฆญ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ๋œ ์Šคํ† ๋ฆฌ์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์ตœ์‹  ๊ธฐ๋Šฅ (NVMe 2.0+)

Zoned Namespaces (ZNS)

  • NAND Flash๋ฅผ ์กด(Zone)์œผ๋กœ ๊ตฌ์กฐํ™”
  • ์“ฐ๊ธฐ ์ฆํญ(Write Amplification) ๊ฐ์†Œ
  • SSD ์ˆ˜๋ช… ์—ฐ์žฅ

Key-Value (KV)

  • ํŒŒ์ผ ์‹œ์Šคํ…œ ์—†์ด ํ‚ค-๊ฐ’ ์ง์ ‘ ์ €์žฅ
  • ์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ์„ฑ ํ–ฅ์ƒ

Host Memory Buffer (HMB)

  • DRAM-less SSD๊ฐ€ ํ˜ธ์ŠคํŠธ DRAM ํ™œ์šฉ
  • ๋น„์šฉ ์ ˆ๊ฐํ•˜๋ฉด์„œ ์„ฑ๋Šฅ ์œ ์ง€

๋น„๊ต/๋ถ„์„

์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค ๋น„๊ต

์ธํ„ฐํŽ˜์ด์Šค ๋Œ€์—ญํญ ๋ ˆ์ดํ„ด์‹œ ํ ๊นŠ์ด ์ ์šฉ
SATA III 6 Gbps ~100ฮผs 32 HDD, Entry SSD
SAS 3 12 Gbps ~50ฮผs 256 Enterprise HDD/SSD
NVMe Gen3 32 Gbps ~10ฮผs 64K Consumer/Enterprise SSD
NVMe Gen4 64 Gbps ~5ฮผs 64K High-end SSD
NVMe Gen5 128 Gbps ~3ฮผs 64K Next-gen SSD

๋ฐ์ดํ„ฐ ์„ผํ„ฐ ํ™œ์šฉ ๋น„๊ต

ํ•ญ๋ชฉ SATA SSD SAS SSD NVMe SSD
IOPS 100K 200K 1M+
๋Œ€์—ญํญ 550 MB/s 1.2 GB/s 7 GB/s+
๋ ˆ์ดํ„ด์‹œ 100ฮผs 50ฮผs 10ฮผs
ํ ๊นŠ์ด 32 256 64K
๊ฐ€๊ฒฉ/GB ๋‚ฎ์Œ ์ค‘๊ฐ„ ๋†’์Œ
์ ์šฉ ๋ฒ”์šฉ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ณ ์„ฑ๋Šฅ

NVMe ์„ธ๋Œ€๋ณ„ ๋น„๊ต

์„ธ๋Œ€ ๋Œ€์—ญํญ PCIe ๋ ˆ์ธ ์ฃผ์š” ํŠน์ง•
Gen3 32 Gbps x4 ์ตœ์ดˆ ์ƒ์šฉํ™”
Gen4 64 Gbps x4 ๋†’์€ ๋Œ€์—ญํญ
Gen5 128 Gbps x4 ์ฐจ์„ธ๋Œ€ ํ”Œ๋žซํผ

๋™์ž‘ ์›๋ฆฌ

1๋‹จ๊ณ„: ๋ช…๋ น ์ œ์ถœ (Submission)

  1. ํ˜ธ์ŠคํŠธ ๋“œ๋ผ์ด๋ฒ„: NVMe ๋ช…๋ น์„ Submission Queue์— ๊ธฐ๋ก
  2. doorbell ๋ ˆ์ง€์Šคํ„ฐ: ์ปจํŠธ๋กค๋Ÿฌ์— ์ƒˆ ๋ช…๋ น ์•Œ๋ฆผ
  3. PRP/SGL ์ค€๋น„: ๋ฐ์ดํ„ฐ ๋ฒ„ํผ์˜ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ์œ„์น˜๋ฅผ ๋ช…๋ น์— ์—ฐ๊ฒฐ
  4. DMA ์ „์†ก: ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ˜ธ์ŠคํŠธ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๋ช…๋ น๊ณผ ๋ฒ„ํผ ์ •๋ณด๋ฅผ ์ฝ์Œ

2๋‹จ๊ณ„: ๋ช…๋ น ์ฒ˜๋ฆฌ (Execution)

  1. ๋ช…๋ น ํŒŒ์‹ฑ: NVMe ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ช…๋ น ํ•ด์„
  2. LBA ๋ณ€ํ™˜: ๋…ผ๋ฆฌ์  ์ฃผ์†Œ๋ฅผ NAND Flash ๋ฌผ๋ฆฌ ์ฃผ์†Œ๋กœ ๋ณ€ํ™˜ (FTL)
  3. ๋‚ด๋ถ€ ๋ณ‘๋ ฌํ™” ๋ฐฐ์น˜: ์ฑ„๋„, ๋‹ค์ด, ํ”Œ๋ ˆ์ธ ๋‹จ์œ„๋กœ ์š”์ฒญ ๋ถ„์‚ฐ
  4. ๋ฐ์ดํ„ฐ ์ „์†ก: NAND Flash์—์„œ ๋ฐ์ดํ„ฐ ์ฝ๊ธฐ/์“ฐ๊ธฐ

3๋‹จ๊ณ„: ์™„๋ฃŒ ์•Œ๋ฆผ (Completion)

  1. Completion Queue Entry: ๊ฒฐ๊ณผ๋ฅผ Completion Queue์— ๊ธฐ๋ก
  2. ์ธํ„ฐ๋ŸฝํŠธ: MSI-X๋ฅผ ํ†ตํ•ด ํ˜ธ์ŠคํŠธ์— ์™„๋ฃŒ ์•Œ๋ฆผ
  3. ์ƒํƒœ ํ™•์ธ: ํ˜ธ์ŠคํŠธ๊ฐ€ status field์™€ phase tag๋ฅผ ํ™•์ธ
  4. ํ ํ—ค๋“œ ๊ฐฑ์‹ : ํ˜ธ์ŠคํŠธ๊ฐ€ Completion Queue ์†Œ๋น„ ์œ„์น˜๋ฅผ ์—…๋ฐ์ดํŠธ

๋ฐ์ดํ„ฐ ํ๋ฆ„ ์˜ˆ์‹œ (Read Operation)

Host Application
    โ†“
File System (ext4/NTFS)
    โ†“
Block Layer (I/O Scheduler)
    โ†“
NVMe Driver
    โ†“
PCIe Bus (DMA Transfer)
    โ†“
NVMe Controller
    โ†“
FTL (LBA โ†’ PPA ๋ณ€ํ™˜)
    โ†“
NAND Flash (Multi-Channel Read)
    โ†“
Data Return to Host

์ฝ๊ธฐ ๊ฒฝ๋กœ์—์„œ๋Š” host memory์— ์ง์ ‘ DMA๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฏ€๋กœ ์ค‘๊ฐ„ ๋ณต์‚ฌ ํšŸ์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ์“ฐ๊ธฐ ๊ฒฝ๋กœ์—์„œ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ PRP/SGL์— ์—ฐ๊ฒฐํ•œ ๋ฒ„ํผ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ„๋‹ค. ์šด์˜์ฒด์ œ ๊ด€์ ์—์„œ๋Š” blk-mq์™€ NVMe ๋“œ๋ผ์ด๋ฒ„๊ฐ€ CPU ๋กœ์ปฌ ํ๋ฅผ ์ตœ๋Œ€ํ•œ ์œ ์ง€ํ•ด lock contention์„ ์ค„์ด๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.

์žฅ๋‹จ์ 

์žฅ์  ๋‹จ์ 
AHCI ๋Œ€๋น„ 100๋ฐฐ ์ด์ƒ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ SATA SSD ๋Œ€๋น„ ๋†’์€ ๊ฐ€๊ฒฉ
65,535๊ฐœ I/O ํ๋กœ ๊ทนํ•œ ๋ณ‘๋ ฌ์„ฑ ๊ตฌํ˜• ๋ฉ”์ธ๋ณด๋“œ์—์„œ ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ
๋‚ฎ์€ ๋ ˆ์ดํ„ด์‹œ (~10ฮผs) ๊ณ ์„ฑ๋Šฅ ์‹œ ๋ฐฉ์—ด ์ฒ˜๋ฆฌ ํ•„์š”
ํ’€ ๋“€ํ”Œ๋ ‰์Šค ๋ฐ์ดํ„ฐ ์ „์†ก DRAM-less ๋ชจ๋ธ์—์„œ HMB ์˜์กด
MSI-X ์ธํ„ฐ๋ŸฝํŠธ๋กœ ํšจ์œจ์  ์ฒ˜๋ฆฌ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๋น„์šฉ
ZNS/KV๋กœ ์ฐจ์„ธ๋Œ€ ์Šคํ† ๋ฆฌ์ง€ ์ง€์› ์†Œ๋น„์ž ์ˆ˜์ค€์—์„œ ์„ฑ๋Šฅ ์ฐจ์ด ์ฒด๊ฐ ์–ด๋ ค์›€
๋ชจ๋ฐ”์ผ๊นŒ์ง€ ํ™•์žฅ (Apple NVMe) ์†Œํ”„ํŠธ์›จ์–ด ์ƒํƒœ๊ณ„ ์ง€์†์  ๋ฐœ์ „ ํ•„์š”

๊ด€๋ จ ๊ธฐ์ˆ 

ํ•ต์‹ฌ ์ •๋ฆฌ

NVMe๋Š” SSD๋ฅผ ์œ„ํ•œ ์ตœ์‹  ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค๋กœ, AHCI ๋Œ€๋น„ ํฐ ํญ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰ ํ–ฅ์ƒ๊ณผ ๋‚ฎ์€ ์ง€์—ฐ์„ ์ œ๊ณตํ•œ๋‹ค. 65,535๊ฐœ์˜ ๋‹ค์ค‘ I/O ํ์™€ 64K ๋ช…๋ น ๊นŠ์ด๋ฅผ ํ†ตํ•ด ๊ทนํ•œ์˜ ๋ณ‘๋ ฌ์„ฑ์„ ์ œ๊ณตํ•˜๋ฉฐ, M.2, U.2, AIC ๋“ฑ ๋‹ค์–‘ํ•œ ํผ ํŒฉํ„ฐ๋กœ ์ œ๊ณต๋œ๋‹ค. NVMe-oF๋ฅผ ํ†ตํ•ด ๋„คํŠธ์›Œํฌ ์Šคํ† ๋ฆฌ์ง€๊นŒ์ง€ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ZNS์™€ KV ๊ฐ™์€ ์ตœ์‹  ๊ธฐ์ˆ ๋กœ ์ฐจ์„ธ๋Œ€ ์Šคํ† ๋ฆฌ์ง€ ํšจ์œจ์„ฑ์„ ๋†’์ด๊ณ  ์žˆ๋‹ค. Apple ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ๊นŒ์ง€ ํญ๋„“๊ฒŒ ์ ์šฉ๋˜๋ฉฐ, PCIe Gen5์™€ ํ•จ๊ป˜ ๋” ๋†’์€ ๋Œ€์—ญํญ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.