๐Ÿ’พ NAND

NVMe 2.0 ๋ถ„์„

NVMe 2.0 ์ŠคํŽ™ ์•„ํ‚คํ…์ฒ˜ ๋ถ„์„

๋ชจ๋“ˆํ™”๋œ Command Set ยท Endurance Group ยท I/O Determinism ยท ZNS/KV Command Set ยท SR-IOV ๊ฐ€์ƒํ™”

๊ฐœ์š”

NVMe 2.0์€ 2021๋…„ 6์›”์— ๊ณต๊ฐœ๋œ NVMe ์ŠคํŽ™์˜ ๋‘ ๋ฒˆ์งธ ๋ฉ”์ด์ € ๋ฆฌ๋น„์ „์œผ๋กœ, ๊ธฐ์กด์˜ ๋‹จ์ผ ๋ชจ๋†€๋ฆฌ์‹ ์ŠคํŽ™์„ Base, Command Set, Transport, Management Interface๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ชจ๋“ˆํ™” ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€๊ฒฝ์€ NVMe SSD๋ฅผ ๋„˜์–ด HDD, ๊ณ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€, ํ‚ค-๋ฐธ๋ฅ˜ ์Šคํ† ๋ฆฌ์ง€ ๋“ฑ ๋‹ค์–‘ํ•œ ๋””๋ฐ”์ด์Šค ์œ ํ˜•์„ ํ•˜๋‚˜์˜ ํ”„๋ ˆ์ž„์›Œํฌ ์•ˆ์—์„œ ์ง€์›ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ฐ˜์„ ๋งˆ๋ จํ–ˆ์Šต๋‹ˆ๋‹ค.

NVMe 1.4(2019๋…„) ๋Œ€๋น„ ZNS Command Set์˜ ํ‘œ์ค€ํ™”, KV Command Set ์‹ ๊ทœ ์ถ”๊ฐ€, ํšŒ์ „ ๋ฏธ๋””์–ด(HDD) ์ง€์›, Endurance Group Management, I/O Determinism(๊ฐ€๋Šฅ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ชจ๋“œ), SR-IOV ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™”, ๋ณต์‚ฌ ๋ช…๋ น(Simple Copy Command) ์˜คํ”„๋กœ๋”ฉ ๋“ฑ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์ด ๋Œ€ํญ ํ™•์žฅ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ๊ธฐ์กด NVM Command Set์„ ๋…๋ฆฝ ์ŠคํŽ™์œผ๋กœ ๋ถ„๋ฆฌํ•ด ํ–ฅํ›„ ํ™•์žฅ์„ ์œ ์—ฐํ•˜๊ฒŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“ˆํ™”๋œ ๊ตฌ์กฐ ๋•๋ถ„์— ๊ฐ Command Set๊ณผ Transport๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ๋ฒ„์ „ ๊ด€๋ฆฌ๋˜๊ณ , ์ปจํŠธ๋กค๋Ÿฌ ํ•˜๋‚˜๊ฐ€ ์—ฌ๋Ÿฌ Command Set์„ ๋™์‹œ์— ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” NVMe๋ฅผ ๋‹จ์ˆœํ•œ ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€ ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ๋ฒ”์šฉ ์Šคํ† ๋ฆฌ์ง€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ™•์žฅํ•˜๋Š” ๊ฒฐ์ •์ ์ธ ๋ณ€ํ™”์ž…๋‹ˆ๋‹ค.

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

1.1 ๋ชจ๋“ˆํ™” ์•„ํ‚คํ…์ฒ˜

NVMe 2.0์€ ์ŠคํŽ™์„ ๋„ค ๊ฐ€์ง€ ๋…๋ฆฝ ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค:

NVMe 2.0 ๋ชจ๋“ˆ ์•„ํ‚คํ…์ฒ˜

๊ทธ๋ฆผ 1. NVMe 2.0 ์ŠคํŽ™ ๋ชจ๋“ˆ ๊ตฌ์กฐ โ€” Base + Command Set + Transport + MI

๋ชจ๋“ˆ ๋ฒ”์œ„ ์„ค๋ช…
Base Specification ๊ณตํ†ต ์ฝ”์–ด ๊ด€๋ฆฌ ๋ช…๋ น, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ๋ ˆ์ง€์Šคํ„ฐ ์ •์˜
NVM Command Set ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ์กด NVMe 1.x ํ˜ธํ™˜ ๋ธ”๋ก I/O
ZNS Command Set ์กด ๊ธฐ๋ฐ˜ ์Šคํ† ๋ฆฌ์ง€ ์ˆœ์ฐจ ์“ฐ๊ธฐ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜
KV Command Set ํ‚ค-๋ฐธ๋ฅ˜ ์Šคํ† ๋ฆฌ์ง€ ํ‚ค-๋ฐธ๋ฅ˜ ํŽ˜์–ด ์ง์ ‘ ์ ‘๊ทผ
Transport ํ†ต์‹  ๊ณ„์ธต PCIe, RDMA, TCP, FC
NVMe-MI ๊ด€๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค ์•„์›ƒ ์˜ค๋ธŒ ๋ฐด๋“œ ๊ด€๋ฆฌ

๊ธฐ์กด NVMe 1.4์—์„œ๋Š” ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํ•˜๋‚˜์˜ ์ŠคํŽ™์— ํฌํ•จ๋˜์–ด ์žˆ์—ˆ์œผ๋‚˜, NVMe 2.0์—์„œ๋Š” ๊ฐ Command Set์ด ๋…๋ฆฝ ์ŠคํŽ™์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ๋…๋ฆฝ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ZNS, KV ๊ฐ™์€ ์ƒˆ๋กœ์šด Command Set์ด ์ถ”๊ฐ€๋˜๋”๋ผ๋„ Base Specification์˜ ์•ˆ์ •์„ฑ์„ ํ•ด์น˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

1.2 Namespace ์œ ํ˜•๊ณผ Command Set ๋งคํ•‘

NVMe 2.0์—์„œ๋Š” Namespace์— Command Set Type์„ ๋ช…์‹œ์ ์œผ๋กœ ๋ถ€์—ฌํ•˜์—ฌ, ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์—ฌ๋Ÿฌ Command Set์„ ๋™์‹œ์— ์ง€์›ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Namespace ์œ ํ˜• Command Set ์šฉ๋„
NVM Namespace NVM Command Set ๊ธฐ์กด ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€
Zoned Namespace ZNS Command Set ๋กœ๊ทธ ๊ตฌ์กฐ, ๋Œ€์šฉ๋Ÿ‰ ์ˆœ์ฐจ ์“ฐ๊ธฐ
KV Namespace KV Command Set ํ‚ค-๋ฐธ๋ฅ˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
CSL Namespace Computational Programs ๊ณ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€

ํ•˜๋‚˜์˜ NVMe subsystem ์•„๋ž˜์— ์—ฌ๋Ÿฌ ์œ ํ˜•์˜ Namespace๊ฐ€ ๊ณต์กดํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ˜ธ์ŠคํŠธ๋Š” ๊ฐ Namespace์˜ Command Set์— ๋งž๋Š” I/O ๋ช…๋ น์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋™์ผ SSD์— ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์šฉ NVM Namespace์™€ ๋กœ๊ทธ ๊ตฌ์กฐ์šฉ ZNS Namespace๋ฅผ ๋™์‹œ์— ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.3 Endurance Group Management

Endurance Group์€ NVMe 2.0์—์„œ ๋„์ž…๋œ ๊ฐœ๋…์œผ๋กœ, ๋ฌผ๋ฆฌ NVM ๋งค์ฒด๋ฅผ ๋‚ด๊ตฌ์„ฑ ํŠน์„ฑ๋ณ„๋กœ ๊ทธ๋ฃนํ•‘ํ•˜์—ฌ ์›Œํฌ๋กœ๋“œ ๋ฐฐ์น˜๋ฅผ ์ตœ์ ํ™”ํ•ฉ๋‹ˆ๋‹ค.

Endurance Group ๊ตฌ์กฐ

๊ทธ๋ฆผ 2. Endurance Group๊ณผ Namespace ๊ด€๊ณ„

๊ฐœ๋… ์„ค๋ช…
Endurance Group ๋‚ด๊ตฌ์„ฑ ํŠน์„ฑ์ด ๋™์ผํ•œ NVM ์ง‘ํ•ฉ
NVM Set Endurance Group ๋‚ด๋ถ€์˜ ๋ฌผ๋ฆฌ NVM ํ• ๋‹น ๋‹จ์œ„
Namespace ํ˜ธ์ŠคํŠธ์— ๋…ธ์ถœ๋˜๋Š” ๋…ผ๋ฆฌ์  ์ €์žฅ ๊ณต๊ฐ„

Endurance Group์€ SSD๊ฐ€ ์–ด๋–ป๊ฒŒ ๋‚ด๊ตฌ์„ฑ์„ ๊ด€๋ฆฌํ•˜๋Š”์ง€๋ฅผ ํ˜ธ์ŠคํŠธ์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ค‘์‹ฌ, ์“ฐ๊ธฐ ์ค‘์‹ฌ, ํ˜ผํ•ฉ ์›Œํฌ๋กœ๋“œ ๋“ฑ ์„œ๋กœ ๋‹ค๋ฅธ ๋‚ด๊ตฌ์„ฑ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฐ€์ง„ Namespace๋ฅผ ์ ์ ˆํ•œ Endurance Group์— ๋ฐฐ์น˜ํ•จ์œผ๋กœ์จ SSD์˜ ์ „์ฒด ์ˆ˜๋ช…์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ SSD์—์„œ๋Š” ์ด ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•ด ์ฝ๊ธฐ ์ตœ์ ํ™” ์˜์—ญ๊ณผ ์“ฐ๊ธฐ ์ตœ์ ํ™” ์˜์—ญ์„ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ๊ฐ๊ฐ์˜ ๋‚ด๊ตฌ์„ฑ ๋“ฑ๊ธ‰์— ๋งž๋Š” ์›Œํฌ๋กœ๋“œ๋ฅผ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1.4 I/O Determinism (๊ฐ€๋Šฅ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ชจ๋“œ)

I/O Determinism์€ NVMe 1.4์—์„œ ๋„์ž…๋˜์–ด 2.0์—์„œ ํ™•์žฅ๋œ ๊ธฐ๋Šฅ์œผ๋กœ, ์ง€์—ฐ ์‹œ๊ฐ„์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

Predictable Latency Mode (PLM):
- Deterministic Window: ์ง€์—ฐ ์‹œ๊ฐ„์ด ์ •ํ•ด์ง„ ๋ฒ”์œ„ ์•ˆ์— ์žˆ์Œ์„ ๋ณด์žฅํ•˜๋Š” ๊ตฌ๊ฐ„
- Non-Deterministic Window: ๋ณด์žฅ ๋ฒ”์œ„ ๋ฐ–์˜ ์ผ๋ฐ˜ ๋™์ž‘ ๊ตฌ๊ฐ„

๊ธฐ๋Šฅ ์„ค๋ช…
Namespace Preferred Write Granularity ์ตœ์  ์“ฐ๊ธฐ ์ •๋ ฌ ํžŒํŠธ
Namespace Write Assist Read-modify-write ๋ฐฉ์ง€ ์ง€์›
I/O Performance Hints ์ตœ์  ์ ‘๊ทผ ํŒจํ„ด ํ†ต์ง€
I/O Endurance Hints ๋‚ด๊ตฌ์„ฑ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ ํŒจํ„ด ํ†ต์ง€

์ด ๊ธฐ๋Šฅ์€ ๊ธˆ์œต ํŠธ๋ ˆ์ด๋”ฉ, ์‹ค์‹œ๊ฐ„ ์ œ์–ด, ์ž์œจ์ฃผํ–‰ ๋“ฑ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ณ€๋™์ด ์น˜๋ช…์ ์ธ ์‘์šฉ์—์„œ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์›Œํฌ๋กœ๋“œ์˜ ํŠน์„ฑ์„ ์ดํ•ดํ•˜๊ณ , deterministic ๊ตฌ๊ฐ„์—์„œ ์ผ๊ด€๋œ ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•˜๋„๋ก ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

2.1 NVMe 1.4 vs 2.0 ๋น„๊ต

ํ•ญ๋ชฉ NVMe 1.4 NVMe 2.0
์ŠคํŽ™ ๊ตฌ์กฐ ๋ชจ๋†€๋ฆฌ์‹ ๋‹จ์ผ ์ŠคํŽ™ ๋ชจ๋“ˆํ™”๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Command Set ํ†ตํ•ฉ ๋…๋ฆฝ ์ŠคํŽ™์œผ๋กœ ๋ถ„๋ฆฌ
ZNS ์ง€์› ์‹คํ—˜์  ํ‘œ์ค€ํ™” (๋…๋ฆฝ Command Set)
KV Command Set ์—†์Œ ์‹ ๊ทœ ์ถ”๊ฐ€
HDD ์ง€์› ์—†์Œ ํšŒ์ „ ๋ฏธ๋””์–ด ์ง€์›
Endurance ๊ด€๋ฆฌ ๊ธฐ๋ณธ Endurance Group Management
I/O Determinism ๊ธฐ๋ณธ ๋„์ž… ํ™•์žฅ (Performance/Endurance Hints)
๋ณต์‚ฌ ๋ช…๋ น ๊ธฐ๋ณธ Simple Copy Command
Protection Information 16-bit 32/64-bit CRC
๊ฐ€์ƒํ™” ์ œํ•œ์  SR-IOV ์ง€์›

2.2 Command Set ๋น„๊ต

Command Set ๋ฐ์ดํ„ฐ ๋ชจ๋ธ ๋Œ€์ƒ ์›Œํฌ๋กœ๋“œ ํ˜ธ์ŠคํŠธ ์†Œํ”„ํŠธ์›จ์–ด
NVM ๋ธ”๋ก (LBA) ๋ฒ”์šฉ ํŒŒ์ผ ์‹œ์Šคํ…œ OS ๋ธ”๋ก ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„
ZNS ์กด (์ˆœ์ฐจ ์“ฐ๊ธฐ) ๋กœ๊ทธ ๊ตฌ์กฐ, ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ ZNS-aware ํŒŒ์ผ ์‹œ์Šคํ…œ
KV ํ‚ค-๋ฐธ๋ฅ˜ ํŽ˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ KV ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
Computational ๋ช…๋ น์–ด ํ”„๋กœ๊ทธ๋žจ ๊ณ„์‚ฐ ์Šคํ† ๋ฆฌ์ง€ ์‚ฌ์šฉ์ž ์ •์˜ ๋Ÿฐํƒ€์ž„

2.3 Transport ๋น„๊ต

Transport ๋Œ€์—ญํญ ๋ ˆ์ดํ„ด์‹œ ๋ฐฐํฌ ์šฉ์ด์„ฑ ์ฃผ์š” ์‚ฌ์šฉ์ฒ˜
PCIe ๋†’์Œ ๋งค์šฐ ๋‚ฎ์Œ ๋†’์Œ (์ง์ ‘ ์—ฐ๊ฒฐ) ํด๋ผ์ด์–ธํŠธ, ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ
RDMA (RoCE v2) ๋†’์Œ ๋‚ฎ์Œ ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ ์„ผํ„ฐ, ์Šคํ† ๋ฆฌ์ง€ ์–ด๋ ˆ์ด
TCP ์ค‘๊ฐ„ ์ค‘๊ฐ„ ๋†’์Œ (๊ธฐ์กด ์ธํ”„๋ผ) ์›๊ฒฉ ์Šคํ† ๋ฆฌ์ง€, ํด๋ผ์šฐ๋“œ
FC ์ค‘๊ฐ„~๋†’์Œ ์ค‘๊ฐ„ ์ค‘๊ฐ„ ๊ธฐ์กด SAN ์ธํ”„๋ผ

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

3.1 ZNS Command Set ๋™์ž‘

ZNS(Zoned Namespace)๋Š” NVMe 2.0์—์„œ ํ‘œ์ค€ํ™”๋œ Command Set์œผ๋กœ, ์ €์žฅ ๊ณต๊ฐ„์„ Zone ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ  ์ˆœ์ฐจ ์“ฐ๊ธฐ ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

๊ทธ๋ฆผ 3. ZNS Zone ๋ชจ๋ธ โ€” Write Pointer ๊ธฐ๋ฐ˜ ์ˆœ์ฐจ ์“ฐ๊ธฐ

  • Zone: ๋…๋ฆฝ์ ์ธ ์ˆœ์ฐจ ์“ฐ๊ธฐ ์˜์—ญ, ๊ณ ์œ ํ•œ Write Pointer ๋ณด์œ 
  • Zone Reset: Zone ์ „์ฒด๋ฅผ ํ•œ ๋ฒˆ์— ์†Œ๊ฑฐํ•˜์—ฌ ์žฌ์‚ฌ์šฉ
  • Zone Append: Write Pointer ์œ„์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ช…๋ น

๊ธฐ์กด ๋ธ”๋ก ์Šคํ† ๋ฆฌ์ง€์—์„œ FTL์ด ๋…ผ๋ฆฌ-๋ฌผ๋ฆฌ ์ฃผ์†Œ ๋ณ€ํ™˜, GC, ๋งˆ๋ชจ ํ‰์ค€ํ™”๋ฅผ ๋‚ด๋ถ€์—์„œ ์ฒ˜๋ฆฌํ–ˆ์œผ๋‚˜, ZNS์—์„œ๋Š” ํ˜ธ์ŠคํŠธ๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๋ช…๊ณผ ๊ฐฑ์‹  ํŒจํ„ด์„ ์•Œ๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์žฅ์น˜์— ์ง์ ‘ ์ „๋‹ฌํ•˜์—ฌ ๋‚ด๋ถ€ GC ๋ถ€๋‹ด์„ ์ค„์ž…๋‹ˆ๋‹ค. ์ด๋Š” Write Amplification์„ ํฌ๊ฒŒ ๊ฐ์†Œ์‹œํ‚ค๊ณ  SSD์˜ ์ˆ˜๋ช…๊ณผ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

3.2 KV Command Set ๋™์ž‘

KV Command Set์€ ํ‚ค-๋ฐธ๋ฅ˜ ํŽ˜์–ด๋ฅผ ๋ธ”๋ก ๋ณ€ํ™˜ ์—†์ด ์ง์ ‘ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด ๋ธ”๋ก I/O KV Command Set
LBA ๊ธฐ๋ฐ˜ ์ฃผ์†Œ ์ง€์ • ํ‚ค ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ
FTL ๋…ผ๋ฆฌ-๋ฌผ๋ฆฌ ๋งคํ•‘ ํ•„์š” ๋งคํ•‘ ๋ถˆํ•„์š”
ํŒŒ์ผ ์‹œ์Šคํ…œ/DB ์ธ๋ฑ์Šค ํ•„์š” ํ‚ค๋กœ ์ง์ ‘ ๊ฒ€์ƒ‰
์ฝ๊ธฐ/์“ฐ๊ธฐ ๋ช…๋ น์–ด ์„ธํŠธ Get/Set/Delete ๋ช…๋ น์–ด ์„ธํŠธ

KV Command Set์€ NoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€, ์บ์‹œ ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ๋ธ”๋ก ๋ณ€ํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์ด๊ณ  ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด LBA๋กœ ๋ณ€ํ™˜ํ•ด์•ผ ํ–ˆ์œผ๋‚˜, KV Command Set์„ ์‚ฌ์šฉํ•˜๋ฉด ํ‚ค๋กœ ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3.3 SR-IOV ๊ธฐ๋ฐ˜ ๊ฐ€์ƒํ™”

NVMe 2.0์—์„œ๋Š” SR-IOV(Single Root I/O Virtualization)๋ฅผ ๊ณต์‹ ์ง€์›ํ•˜์—ฌ, ํ•˜๋‚˜์˜ ๋ฌผ๋ฆฌ NVMe ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์—ฌ๋Ÿฌ ๊ฐ€์ƒ ๋จธ์‹ (VM)์— ์ง์ ‘ ํ• ๋‹นํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SR-IOV ๊ฐ€์ƒํ™” ๊ตฌ์กฐ

๊ทธ๋ฆผ 4. NVMe SR-IOV ๊ฐ€์ƒํ™” โ€” ๋ฌผ๋ฆฌ ๊ธฐ๋Šฅ(PF)๊ณผ ๊ฐ€์ƒ ๊ธฐ๋Šฅ(VF) ๊ตฌ์กฐ

๊ฐœ๋… ์„ค๋ช…
Physical Function (PF) ๋ฌผ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ „์ฒด ๊ธฐ๋Šฅ
Virtual Function (VF) VM์— ์ง์ ‘ ํ• ๋‹น๋˜๋Š” ๊ฐ€์ƒ ๊ธฐ๋Šฅ
IOMMU VM ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌ ๋ฐ DMA ๋ณดํ˜ธ

SR-IOV๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜์ดํผ๋ฐ”์ด์ €์˜ I/O ๊ฒฝ๋กœ๋ฅผ ์šฐํšŒํ•˜๊ณ , VM์ด NVMe ์ปจํŠธ๋กค๋Ÿฌ์˜ VF์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ ˆ์ดํ„ด์‹œ๋ฅผ ์ค„์ด๊ณ  ์ฒ˜๋ฆฌ๋Ÿ‰์„ ๋†’์ด๋ฉฐ, ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์—์„œ์˜ ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.

3.4 Simple Copy Command

Simple Copy Command๋Š” ํ˜ธ์ŠคํŠธ CPU์˜ ๊ฐœ์ž… ์—†์ด SSD ๋‚ด๋ถ€์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ช…๋ น์ž…๋‹ˆ๋‹ค.

  • ์˜คํ”„๋กœ๋”ฉ: ํŒŒ์ผ ๋ณต์‚ฌ, ์Šค๋ƒ…์ƒท ์ƒ์„ฑ, ๋ฐฑ์—… ๋“ฑ์˜ ์ž‘์—…์„ SSD์— ์œ„์ž„
  • CPU ์ ˆ์•ฝ: ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ด๋™ ์‹œ CPU ๋ฆฌ์†Œ์Šค๋ฅผ ๋‹ค๋ฅธ ์ž‘์—…์— ํ™œ์šฉ ๊ฐ€๋Šฅ
  • ๋„ค์ดํ‹ฐ๋ธŒ ์„ฑ๋Šฅ: SSD ๋‚ด๋ถ€ ๋ฒ„์Šค๋ฅผ ํ†ตํ•œ ๋ณต์‚ฌ๊ฐ€ ํ˜ธ์ŠคํŠธ ๋ฒ„์Šค ๋Œ€๋น„ ๋น ๋ฆ„

3.5 ์ƒˆ๋กœ์šด ๊ด€๋ฆฌ ๊ธฐ๋Šฅ

Sanitize

๋””๋ฐ”์ด์Šค์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ญ์ œํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค:

๋ชจ๋“œ ๋™์ž‘ ์†Œ์š” ์‹œ๊ฐ„
Block Erase ๋ธ”๋ก ๋‹จ์œ„ ์†Œ๊ฑฐ ๋น ๋ฆ„
Crypto Erase ์•”ํ˜ธํ™” ํ‚ค ํŒŒ๊ธฐ ๊ฐ€์žฅ ๋น ๋ฆ„
Overwrite ์ „์ฒด ์˜์—ญ ๋ฎ์–ด์“ฐ๊ธฐ ๋А๋ฆผ

Self-test

๋””๋ฐ”์ด์Šค ์ž์ฒด ์ง„๋‹จ์„ ์ˆ˜ํ–‰ํ•˜์—ฌ ํ•˜๋“œ์›จ์–ด ์ด์ƒ์„ ์‚ฌ์ „์— ๊ฐ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ๊ฒฝ(self-test)๊ณผ ์ฆ‰์‹œ(offline) ๋ชจ๋“œ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

Persistent Event Log

์ด๋ฒคํŠธ ๋กœ๊ทธ๋ฅผ ๋น„ํœ˜๋ฐœ์„ฑ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜์—ฌ, ์žฌ๋ถ€ํŒ… ํ›„์—๋„ ๊ณผ๊ฑฐ ์ด๋ฒคํŠธ๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋””๋ฐ”์ด์Šค ์˜ค๋ฅ˜, ์˜จ๋„ ๋ณ€ํ™”, ์ˆ˜๋ช… ์ •๋ณด ๋“ฑ์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค.

4. ์žฅ๋‹จ์ 

4.1 ์žฅ์ 

๋ชจ๋“ˆํ™” ์•„ํ‚คํ…์ฒ˜:
- ๊ฐ Command Set์ด ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ์Œ
- ์ƒˆ๋กœ์šด Command Set ์ถ”๊ฐ€ ์‹œ Base ์ŠคํŽ™์— ์˜ํ–ฅ ์—†์Œ
- ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์œ ์ง€ (NVMe 1.x ์žฅ์น˜ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)

ZNS/KV Command Set:
- Write Amplification ๋Œ€ํญ ๊ฐ์†Œ โ†’ SSD ์ˆ˜๋ช… ํ–ฅ์ƒ
- ํ˜ธ์ŠคํŠธ-์žฅ์น˜ ํ˜‘๋ ฅ์  ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜ โ†’ ์„ฑ๋Šฅ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ ํ–ฅ์ƒ
- KV ์›Œํฌ๋กœ๋“œ์˜ ๋ธ”๋ก ๋ณ€ํ™˜ ์˜ค๋ฒ„ํ—ค๋“œ ์ œ๊ฑฐ

Endurance Group:
- ์›Œํฌ๋กœ๋“œ๋ณ„ ๋‚ด๊ตฌ์„ฑ ์ตœ์ ํ™”
- ํ˜ผํ•ฉ ์›Œํฌ๋กœ๋“œ ํ™˜๊ฒฝ์—์„œ SSD ์ˆ˜๋ช… ๊ทน๋Œ€ํ™”

I/O Determinism:
- ์‹ค์‹œ๊ฐ„ ์‘์šฉ์— ํ•„์š”ํ•œ ์ผ๊ด€๋œ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ณด์žฅ
- ๊ธˆ์œต, ์ œ์–ด, ์ž์œจ์ฃผํ–‰ ๋“ฑ ์ง€์—ฐ ์‹œ๊ฐ„ ๋ฏผ๊ฐํ•œ ๋ถ„์•ผ์— ์ ํ•ฉ

๊ฐ€์ƒํ™”:
- SR-IOV๋กœ ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ ํ–ฅ์ƒ
- VM ์ง์ ‘ ํ• ๋‹น์œผ๋กœ ํ•˜์ดํผ๋ฐ”์ด์ € ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ

4.2 ๋‹จ์ 

๋„์ž… ๋ณต์žก์„ฑ:
- ๋ชจ๋“ˆํ™”๋กœ ์ธํ•ด ์ŠคํŽ™ ์ดํ•ด์™€ ๊ตฌํ˜„์ด ๋” ์–ด๋ ค์›Œ์ง
- ๊ฐ Command Set๋ณ„ ์ „๋ฌธ ์ง€์‹ ํ•„์š”
- ๊ธฐ์กด NVMe 1.x ์ƒํƒœ๊ณ„์™€์˜ ํ˜ธํ™˜์„ฑ ๊ฒ€์ฆ ๋ถ€๋‹ด

ZNS/KV ์ƒํƒœ๊ณ„ ๋ฏธ์„ฑ์ˆ™:
- ZNS๋ฅผ ์ง€์›ํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ/์‘์šฉ์ด ์ œํ•œ์  (btrfs, f2fs ์ผ๋ถ€ ์ง€์›)
- KV Command Set์„ ์ง€์›ํ•˜๋Š” ์ƒ์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ถ€์กฑ
- ์†Œ๋น„์ž SSD์—์„œ์˜ ZNS/KV ์ง€์› ์ œํ’ˆ ๋ถ€์กฑ

์šด์˜ ๋ณต์žก์„ฑ:
- Endurance Group ๊ตฌ์„ฑ๊ณผ ์›Œํฌ๋กœ๋“œ ๋ฐฐ์น˜์— ๋Œ€ํ•œ ์‚ฌ์ „ ์„ค๊ณ„ ํ•„์š”
- I/O Determinism ์„ค์ •๊ณผ ๋ชจ๋‹ˆํ„ฐ๋ง ์ถ”๊ฐ€ ์ž‘์—…
- SR-IOV ํ™˜๊ฒฝ์—์„œ์˜ ๋ฆฌ์†Œ์Šค ๊ด€๋ฆฌ ๋ณต์žกํ™”

ํ˜ธํ™˜์„ฑ ๋ฌธ์ œ:
- ์ผ๋ถ€ ๊ธฐ์กด ๋“œ๋ผ์ด๋ฒ„/์†Œํ”„ํŠธ์›จ์–ด์—์„œ NVMe 2.0 ๊ธฐ๋Šฅ ๋ฏธ์ง€์›
- ๊ธฐ์กด ์‹œ์Šคํ…œ ์—…๊ทธ๋ ˆ์ด๋“œ ์‹œ ๊ฒ€์ฆ ํ•„์š”
- ํŽŒ์›จ์–ด ์—…๋ฐ์ดํŠธ๋ฅผ ํ†ตํ•œ ์ ์ง„์  ๋„์ž…์ด ์ผ๋ฐ˜์ 

5. ๊ด€๋ จ ๊ธฐ์ˆ 

5.1 NVMe-oF (NVMe over Fabrics)

NVMe 2.0์˜ Transport ๋ชจ๋“ˆ์€ RDMA, TCP, FC ๊ธฐ๋ฐ˜์˜ ์›๊ฒฉ ์Šคํ† ๋ฆฌ์ง€ ์•ก์„ธ์Šค๋ฅผ ์ •์˜ํ•ฉ๋‹ˆ๋‹ค. NVMe-oF๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ์„ผํ„ฐ ๋‚ด์—์„œ ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด NVMe SSD์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ์กด FC SAN ์ธํ”„๋ผ๋ฅผ ํ™œ์šฉํ•œ ์ ์ง„์  ์ „ํ™˜์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

5.2 CXL (Compute Express Link)

NVMe 2.0์€ CXL๊ณผ ๊ฒฐํ•ฉํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์Šคํ† ๋ฆฌ์ง€์˜ ๊ฒฝ๊ณ„๋ฅผ ํ—ˆ๋ฌด๋Š” ๋ฐ ๊ธฐ์—ฌํ•ฉ๋‹ˆ๋‹ค. CXL.mem/CXL.cache๋ฅผ ํ†ตํ•œ ๋ฉ”๋ชจ๋ฆฌ ํ’€๋ง๊ณผ NVMe์˜ ์Šคํ† ๋ฆฌ์ง€ ๊ธฐ๋Šฅ์ด ๊ฒฐํ•ฉ๋˜๋ฉด, ๋ฉ”๋ชจ๋ฆฌ-์Šคํ† ๋ฆฌ์ง€ ๊ฒฝ๊ณ„๊ฐ€ ๋ชจํ˜ธํ•ด์ง€๋Š” ์ƒˆ๋กœ์šด ์•„ํ‚คํ…์ฒ˜๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

5.3 ZNS-aware ํŒŒ์ผ ์‹œ์Šคํ…œ

ZNS Command Set์€ btrfs, f2fs ๊ฐ™์€ ๋กœ๊ทธ ๊ตฌ์กฐ ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ด€๋ฉ๋‹ˆ๋‹ค. zone ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜๋ฅผ ์ดํ•ดํ•˜๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์€ ZNS SSD์˜ ์žฅ์ ์„ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.4 SPDK (Storage Performance Development Kit)

SPDK๋Š” NVMe 2.0์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋“œ๋ผ์ด๋ฒ„๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ๋†’์€ ์„ฑ๋Šฅ์˜ ์Šคํ† ๋ฆฌ์ง€ ์Šคํƒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ZNS, KV Command Set, SR-IOV ๋“ฑ์„ SPDK๋ฅผ ํ†ตํ•ด ๋น ๋ฅด๊ฒŒ ํ”„๋กœํ† ํƒ€์ดํ•‘ํ•˜๊ณ  ๊ฒ€์ฆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

5.5 ์ฐธ๊ณ  ๋ฌธํ—Œ

  1. NVM Express, Inc. "NVMe Specification Revision 2.0." June 2021.
  2. NVM Express, Inc. "NVMe Zoned Namespaces Command Set Specification." June 2021.
  3. NVM Express, Inc. "NVMe Key Value Command Set Specification." June 2021.
  4. NVM Express, Inc. "NVMe Specification Revision 2.1." August 2024.
  5. NVM Express, Inc. "NVMe Specification Revision 2.3." August 2025.
  6. Samsung Electronics. "NVMe 2.0 Technology Overview." 2023.
  7. Western Digital. "Zoned Storage: Enabling the Next Generation of Cloud and Enterprise Applications." 2023.
  8. Linux Kernel Documentation. "NVMe Zoned Namespaces." 2024.

6. ํ•ต์‹ฌ ์ •๋ฆฌ

  • NVMe 2.0์€ ๋ชจ๋†€๋ฆฌ์‹ ์ŠคํŽ™์„ Base, Command Set, Transport, MI ๋„ค ๋ชจ๋“ˆ๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ NVMe๋ฅผ ๋ฒ”์šฉ ์Šคํ† ๋ฆฌ์ง€ ํ”„๋ ˆ์ž„์›Œํฌ๋กœ ํ™•์žฅํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ZNS Command Set์€ ์ˆœ์ฐจ ์“ฐ๊ธฐ ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ๋ฐฐ์น˜๋กœ Write Amplification์„ ์ค„์ด๊ณ  SSD ์ˆ˜๋ช…๊ณผ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ฉฐ, KV Command Set์€ ๋ธ”๋ก ๋ณ€ํ™˜ ์—†์ด ํ‚ค-๋ฐธ๋ฅ˜ ๋ฐ์ดํ„ฐ์— ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  • Endurance Group Management๋Š” ์›Œํฌ๋กœ๋“œ๋ณ„ ๋‚ด๊ตฌ์„ฑ ์ตœ์ ํ™”๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋ฉฐ, I/O Determinism์€ ์‹ค์‹œ๊ฐ„ ์‘์šฉ์— ํ•„์š”ํ•œ ์ผ๊ด€๋œ ์ง€์—ฐ ์‹œ๊ฐ„์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.
  • SR-IOV ์ง€์›์œผ๋กœ ํด๋ผ์šฐ๋“œ/๊ฐ€์ƒํ™” ํ™˜๊ฒฝ์—์„œ์˜ ์Šคํ† ๋ฆฌ์ง€ ์„ฑ๋Šฅ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜๋ฉฐ, Sanitize, Self-test, Persistent Event Log ๋“ฑ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์ด ๊ฐ•ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • NVMe 2.0์€ ํ•˜์œ„ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ZNS/KV ๊ฐ™์€ ์ƒˆ๋กœ์šด Command Set์„ ํ†ตํ•ด ์Šคํ† ๋ฆฌ์ง€ ์‚ฐ์—…์˜ ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์—ฐํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.