NVMe — flash storage qurilmalarini PCI Express orqali yuqori samaradorlikda boshqarish uchun yaratilgan protocol. Uning to‘liq nomi Non-Volatile Memory Express hisoblanadi.
NVMe SSDning past latency va parallel ishlash xususiyatlarini hisobga oladi. Eski AHCI protokoli mexanik disklar davridagi modelga tayangan, NVMe esa ko‘p queue va ko‘p coreli tizimlar uchun loyihalangan.
NVMe form factor emas. U M.2, U.2, add-in card va boshqa shakldagi qurilmalarda ishlashi mumkin.
PCI Express
NVMe controller CPU yoki chipsetga PCIe lane orqali ulanadi.
Link xususiyatlari:
- PCIe avlodi;
- lane soni;
- negotiated speed;
- controller joylashuvi;
- chipset uplink.
M.2 NVMe SSD ko‘pincha x4 PCIe linkdan foydalanadi.
Slot fizik x4 bo‘lsa ham, platforma x2 yoki pastroq avlodda ishlatishi mumkin.
Queue modeli
NVMe bitta Admin Queue va ko‘plab I/O Queuelarni qo‘llaydi.
Har queue:
dan iborat.
Host commandni submission queuega yozadi. Controller natijani completion queuega joylaydi.
Queue soni
NVMe nazariy jihatdan juda ko‘p queue va har queue’da ko‘p commandni qo‘llashi mumkin.
Bu har CPU core uchun alohida queue yaratib, lock contentionni kamaytirishga yordam beradi.
AHCI odatda ancha kam queue depthga ega.
Command
NVMe commandlar:
- read;
- write;
- flush;
- dataset management;
- identify;
- format;
- sanitize;
- namespace management;
- firmware download
kabi amallarni o‘z ichiga oladi.
Command fixed-size strukturaga ega va DMA orqali ishlaydi.
Namespace
NVMe controller bir yoki bir nechta namespace taqdim etishi mumkin.
Namespace hostga mustaqil block device sifatida ko‘rinadi.
Enterprise storage’da capacity va isolationni bo‘lish uchun ishlatiladi.
Oddiy consumer SSD ko‘pincha bitta namespace beradi.
M.2
M.2 — fizik form factor va connector standarti.
M.2 qurilma:
bo‘lishi mumkin.
M.2 slotning key turi va motherboard qo‘llovi tekshiriladi.
U.2 va U.3
U.2 enterprise 2.5-inch form factorda PCIe/NVMe ulanishini beradi.
Afzalliklari:
U.3 SAS, SATA va NVMe drive’larni universal bay arxitekturasida qo‘llashga qaratilgan.
Add-in card
NVMe SSD to‘g‘ridan-to‘g‘ri PCIe karta ko‘rinishida bo‘lishi mumkin.
Katta heatsink, ko‘proq NAND va enterprise power-loss protection joylashtirish qulay.
Latency
NVMe protocol stack soddaroq va parallel bo‘lgani sabab latency past.
Ammo real latencyga:
- NAND turi;
- controller;
- firmware;
- queue depth;
- SLC cache;
- thermal throttling;
- filesystem;
- CPU;
- workload
ta’sir qiladi.
IOPS
NVMe SSD kichik random I/Oda yuz minglab yoki millionlab IOPS ko‘rsatishi mumkin.
Marketing qiymati odatda yuqori queue depth va parallel threadda o‘lchanadi.
Desktop workload ko‘pincha past queue depthda ishlaydi. Shu sababli maksimal IOPS kundalik tezlikni to‘liq ifodalamaydi.
Sequential throughput
PCIe avlodi oshgani sari nazariy bandwidth ortadi.
Bir SSD controller va NAND tezligi link bandwidthiga yetmasligi mumkin.
Large sequential benchmark real applicationga mos kelmasligi mumkin.
NAND flash
NVMe protocol storage media turini belgilamaydi. Ko‘p SSD NAND flashdan foydalanadi.
NAND turlari:
- SLC;
- MLC;
- TLC;
- QLC.
Bit soni oshgani sari capacity zichligi ortadi, endurance va raw write tezligi kamayishi mumkin.
SLC cache
TLC yoki QLC SSD NANDning bir qismini SLC rejimida cache sifatida ishlatadi.
Qisqa write tez bo‘ladi.
Cache to‘lganda sustained write keskin pasayishi mumkin.
Bo‘sh diskda dynamic cache kattaroq, to‘la diskda kichikroq bo‘lishi mumkin.
DRAM va HMB
Ba’zi NVMe SSD mapping table uchun onboard DRAM ishlatadi.
DRAMsiz SSD Host Memory Buffer orqali host RAMning kichik qismini ishlatishi mumkin.
HMB barcha workload’da to‘liq DRAM o‘rnini bosmaydi.
TRIM va deallocate
OS ishlatilmayotgan blocklarni SSDga bildiradi.
NVMe Dataset Management yoki deallocate command ishlatiladi.
Controller garbage collection va wear levelingni yaxshiroq bajaradi.
Wear leveling
NAND celllar cheklangan program/erase cycle’ga ega.
Controller yozuvlarni bloklar bo‘ylab taqsimlaydi.
Endurance odatda TBW yoki DWPD bilan beriladi.
Power-loss protection
Enterprise NVMe SSD capacitor orqali volatile cache va mapping metadata’ni power loss paytida NANDga yozadi.
Consumer SSDda to‘liq PLP bo‘lmasligi mumkin.
Database va sync write workload uchun muhim.
Thermal throttling
Yuqori throughput controller va NANDni qizdiradi.
Temperature limitga yetganda SSD tezlikni pasaytiradi.
M.2 drive uchun:
- heatsink;
- airflow;
- motherboard joylashuvi;
- GPU issiqligi
muhim.
NVMe-oF
NVMe over Fabrics NVMe commandlarini tarmoq orqali remote storage’ga uzatadi.
Transportlar:
- RDMA;
- Fibre Channel;
- TCP.
Maqsad local NVMega yaqin past latency va parallel queue modelini network storage’da saqlash.
Boot
UEFI va motherboard NVMe bootni qo‘llashi kerak.
Eski platforma drive’ni OS ichida ko‘rishi, ammo undan boot qila olmasligi mumkin.
SMART va health
NVMe health log:
- temperature;
- available spare;
- percentage used;
- data units read/written;
- media error;
- unsafe shutdown;
- power cycles;
- critical warning
ni ko‘rsatishi mumkin.
Secure erase
NVMe format va sanitize commandlar data’ni yo‘q qilish uchun ishlatilishi mumkin.
Crypto erase encryption keyni o‘chiradi.
Amal qaytarib bo‘lmaydi va to‘g‘ri namespace/device tanlanadi.
Diagnostika
NVMe muammosida:
- PCIe link speed va width;
- firmware;
- temperature;
- health log;
- media error;
- unsafe shutdown;
- driver;
- slot sharing;
- power state;
- filesystem;
- benchmark queue depth
tekshiriladi.
SSD sekinlashsa avval SLC cache, disk to‘liqligi va thermal throttling aniqlanadi.
Bog‘liq tushunchalar
PCI Express, M.2, Namespace, Queue, NAND flash, SSD, SLC cache, Wear leveling, NVMe-oF, SMART