NVM Express

Allikas: Vikipeedia
NVM Express logo

NVM Express (NVMe) või NVMHCI (inglise keeles Non-Volatile Memory Host Controller Interface Specification) on liides, mis lubab juhttarkvaral suhelda säilmälude alamsüsteemiga kasutades PCI Express siini.[1]

NVM (inglise keeles Non-Volatile Memory) tähendab säilmälu. Kõige rohkem kasutuses olevad säilmälud on välkmälud, mida kasutatakse ka pooljuhtketastena. NVM Expressi on algusest saati arendatud NVMHCI töörühma poolt, hiljem NVM Express Inc., et kasutada ära välkmälu põhjal loodud andmekandjate väikest latentsust ja sisemist paralleelsust. Eesmärgiks oli järjendada tolleaegsete keskprotsessorite, platvormide ja rakenduste paralleelsust.[2]

Disaini poolest lubab NVM Express hosttarkvaral ja -riistvaral ära kasutada tänapäevaste SSD-ketaste paralleelsust. Selle tulemusena vähendab NVM Express I/O üldkulusid ja võrreldes eelnevate loogikaseadmete liidestega parandab mitme pika käskudeloendi ja vähendatud latentsusaja abil jõudlust.[1] Varasemad liideseprotokollid (AHCI) olid loodud kasutamiseks palju aeglasemate kõvaketastega, kus päringute ja andmete kättesaamise vahel on pikemad viivitused, andmekiirused on madalamad kui muutmälu kiirused ja kus ketta pöörlemine ja otsimisaeg kutsuvad esile edasisi optimeerimise nõudeid.

NVM Expressi kasutavaid seadmeid on nii PCI Expressi seadmetena[3] kui ka tavalise 2,5-tollise SSD kesta sees, mis kasutavad PCIe 3.0 X4 liidest läbi U.2 pistiku, mille varasem nimetus oli SFF-8639.[4] SATA Expressi salvestusseadmed ja M.2 spetsifikatsioon arvuti siseste laienduskaartide jaoks toetavad NVM Expressi kui loogilist liidest.[5][6]

Taust[muuda | muuda lähteteksti]

NVM Expressi toetusega Intel P3608 SSD-ketas, PCI Express 3.0 x8

Varem kasutasid paljud SSD-kettad arvutisüsteemiga liidestumiseks kas SATA, SAS või kiudkanali siine. SSD-ketaste turuletulekuga sai SATA kõige populaarsemaks viisiks ühendada SSD-kettaid personaalarvutitesse. Kuna SATA oli mõeldud eelkõige kõvaketaste (HDD) ühendamiseks, siis ajapikku muutus see ebasobivaks SSDde jaoks, mille kiirused aina kasvasid.[7] Aastaks 2013 olid paljude uute SSD-ketaste piiranguks kõvaketaste jaoks loodud siinide kiirused. Erinevalt kõvaketastest olid paljud SSD-kettad piiratud SATA maksimaalse läbilaskevõimega.[8]

Tipptasemel SSD-kettaid on tehtud enne NVM Expressi kasutades PCI Express, kuid kasutades ebastandardseid spetsifikatsiooni liideseid. Luues ühtse, standardse liidese SSD-ketastele vajavad operatsioonisüsteemid ainult ühte seadmedraiverit, et suhelda kõigi SSD-ketastega, mis jälgivad seda spetsifikatsiooni. See vähendab ka erinevate SSD-ketaste tootjate kulusid, sest nad ei pea kulutama ressursse, et luua seadmele vastavat seadmedraiverit.[9] See sarnaneb USB-andmekandjate ehitusega, kus seadmed ehitatakse jälgides kindlat USB-andmekandjate klassi spetsifikatsiooni. Sel moel töötavad spetsifikatsiooni jälgivad USB-andmekandjad kõigi arvutitega ilma, et need vajaksid eraldi seadmedraiverit erinevatele seadmetele.

Ajalugu[muuda | muuda lähteteksti]

Esimesed detailid uuest standardist pääsemaks juurde säilmälule ilmusid 2007. aastal toimunud Inteli Development Forumil. Sellel foorumil esitleti NVMHCId kui peremeesseadmete protokolli välja pakutud arhitektuuri disainile, mille välkmälu osas kasutati ONFIt (ingl k Open NAND Flash Interface Working Group).[10] NVMHCI töörühm, mida juhtis Intel, loodi hiljem samal aastal. NVMHCI spetsifikatsiooni esimene versioon valmis ning avaldati Inteli kodulehel 2008. aasta aprillis.[11][12][13]

Tehniline töö NVMe kallal algas 2009. aasta teisel poolel.[14] NVMe spetsifikatsiooni arendas rohkem kui 90 firmast koosnev rühm, mida nimetati NVM Expressi töörühmaks (ingl k NVM Express Workgroup). Seda töörühma juhtis Amber Huffman. Esimene spetsifikatsioon NVM Expressi nime all, versioon 1.0, avaldati 1. märtsil 2011 NVMe töörühma poolt. Versioonis 1.0 määratleti optimeeritud registrite liides, käsustiku kogum ja tunnusjoonte kogum PCI Express siini kasutavatele SSD-ketastele.[15] 2011. aasta juunis loodi NVMe edendajate rühm (ingl k promoter group) kus algselt oli seitse kohta. Rühma eesmärgiks oli edendada NVMe standardi laialdasemat kasutuselevõttu.[15] Spetsifikatsiooni versioon 1.1 avaldati 11. oktoobril 2012. Peamised lisad versioonis 1.1 olid multi-path IO, koos nimeruumi jagamisega ja suvalise pikkusega scatter-gather IO.[14] NVMe versiooni 1.1 nimetati algselt Enterprise NVMHCI-ks, eelkõige tema funktsioonide koonduvuse pärast.[16] 23. jaanuaril 2013 avaldati NVMe versiooni 1.0 uuendus, mille versiooniks märgiti 1.0e.[17]

Esimene kaubanduslik saadaval olevad NVMe kiibistikud avalikustati 2012. aasta augustis Integrated Device Technology poolt. Nende nimetused olid 89HF16P04AG3 ja 89HF32P08AG3.[18] Esimene NVMe-ketas, Samsungi XS1715, tehti teatavaks juulis 2013. Samsungi sõnul toetab SSD-ketas järjestiklugemise kiirust kuni 3 GB/s, kuus korda kiirem kui senised tipptaseme enterprise SSD-kettad.[19] 2013. aasta novembris avaldatud LSI SandForce SF3700 kontrollerite perekond toetab samuti NVM Expressi. Testidest saadi teada, et nende kontrollerite järjestikku lugemise ja kirjutamise kiirused on 1,8 GB/s ja 150k/80k IOPSi.[20] Sama kontrollerit kasutavat Kingstoni HyperX-ketast esitleti 2014. aasta Consumer Electronics Show'l, ning see ketas lubas sarnaseid kiiruseid. See ketas oli sel ajal Kingstoni firma kiireim ja esimene PCIe SSD-ketas.[21] Intel teatas oma esimestest NVM Expressi seadmetest juunis 2014. aastal. Selleks oli Inteli SSD andmekeskuse perekond, mis ühendus hostiga kasutades PCI Express siini. Sellesse perekonda kuuluvad DC P3500, DC P3600 ja DC P3700 seeria kettad.[22]

2014. aasta märtsis muudeti kontsern NVM Express Inc.-iks, kuhu 2017. aastal kuulub üle 60 firma. NVM Expressi spetsifikatsioone omab ja haldab NVM Express Inc., mis tegeleb tööstuse teadlikkuse suurendamisega NVM Expressist kui tööstusharu laiust standardit. NVM Express Inc.-i juhib 13-liikmeline rühm firmasid, mida nimetatakse promootorite rühmaks. Promootorite rühma liikmed valitakse NVM Expressi liikmefirmade seast. Igal firmal promootorite rühmast on koht juhatuses ja juhatuse valimised toimuvad iga kahe aasta tagant.[23][24][25]

NVMe spetsifikatsioonid[muuda | muuda lähteteksti]

Seni avaldatud NVMe spetsifikatsioonid:[26]

  • 1.0e (jaanuar 2013)
  • 1.1b (juuli 2014)
  • 1.2 (november 2014)
    • 1.2a (oktoober 2015)
    • 1.2b (juuni 2016)
    • 1.2.1 (juuni 2016)
  • 1.3 (Mai 2017)
    • 1.3a (oktoober 2017)
    • 1.3b (mai 2018)
    • 1.3c (mai 2018)
    • 1.3d (märts 2019)
  • 1.4 (juuni 2019)
    • 1.4a (märts 2020)
    • 1.4b (september 2020)

NVMe vormitegurid[muuda | muuda lähteteksti]

M.2 Samsung MZ-V6P2T0

Järgnevalt on väljatoodud NVMe liidest toetavad vormitegurid:[27]

  • Laienduskaart
  • U.2 (SFF-8639)
  • U.3 (SFF-8639)
  • EDSFF (Enterprise and Data Center SSD Form Factor)
  • M.2

NVMe-oF[muuda | muuda lähteteksti]

NVMe-oF (NVM Express over Fabrics) on standard, mis suudab edastada andmeid hosti ja SSD või süsteemi vahel kiudkanali kaudu. NVMe-oF on enim mõeldud ettevõtetele kiireks andmevahetuseks. Selle kasutusaladeks on näiteks reaalaja analüüs ja tehisintellekt ning masinõpe. NVMe-oF põhierinevus NVMe-ga on võimekus kasutada teisi transpordi protokolle, peale PCIe siini, andmete vahetamiseks.[28] RDMA (Remote Direct Memory Access) protokolli kasutavad seadmed kasutavad järgmiseid transpordi protokolle:[29]

Transpordi protokollid, mis ei kasuta RDMA-d, on NVMe/TCP, mis on ADQ (Application Device Queues) abil kiirendatud, kiudkanal, Future Fabrics jm.

Seni avaldatud NVMe-oF spetsifikatsioonid:[30]

  • 1.0 (juuni 2016)
    • 1.0a (juuli 2017)
  • 1.1 (oktoober 2019)

NVMe-MI[muuda | muuda lähteteksti]

NVMe-MI (NVMe Management Interface) standard, mis võimaldab hallata NVMe mälu. NVMe-MI abil on võimalik uuendada, jälgida, seadistada ja leida NVMe seadmeid erinevates süsteemides. NVMe-MI spetsifikatsioonid on järgmised:[31]

  • 1.0 (november 2015)
    • 1.0a (aprill 2017)
  • 1.1 (aprill 2019)
    • 1.1a (aprill 2020)
    • 1.1b (oktoober 2020)
    • 1.1c (veebruar 2021)
    • 1.1d (aprill 2021)

NVMe ja AHCI erinevused[muuda | muuda lähteteksti]

AHCI (Advanced Host Controller Interface) eelis on lai tarkvara ühilduvus, kuid negatiivseks küljeks on kehv jõudlus pooljuht-andmekandjatega, mis on ühendatud PCIe siinile. See tuleneb sellest, et AHCI töötati välja ajal, mil HBA (Host Bus Adapter) ühendas protsessori/operatiivmälu alamsüsteemi pöörleva magnetilise mälu alamsüsteemiga, mis oli palju aeglasem. Sellest tulenevalt on AHCI liides pooljuht-andmekandjatega vähem efektiivne.

NVMe liides disainiti nullist selleks, et ära kasutada PCIe siini madala latentsi ja paralleelarvutuse võimekust pooljuht-andmekandjate puhul, mis omakorda täiendades kaasaegsete protsessorite, platvormide ja rakenduste paralleelsust. NVMe võimekus ära kasutada paralleelarvutusi riistvaras ja tarkvaras ning mitmetes tööprotsessides on tulemuseks andnud jõudluse paranemise mitmetes valdkondades üle AHCI liidese.

Operatsioonisüsteemide tugi[muuda | muuda lähteteksti]

  • 9Front: esimene NVMe draiver 9Frontile kehtestati 29. märtsil 2017, lootuses, et keegi saaks reaalse riistvara peal testida.[32]
  • Chrome OS: NVM Expressi ketastelt alglaadimise tugi lisati Chrome OS-i veebruaris 2015.[33]
  • DragonFly BSD: DragonFly versioon 4.6, mis avaldati 2. augustil 2016, oli esimene NVM Expressi draiveriga versioon. Selles versioonis ei olnud NVMe tugi vaikimisi kernelisse lisatud, vaid tuli loader.conf failis lisada rida nvme_load="YES".[34]
  • FreeBSD: FreeBSD versioon 10.2 oli esimene, kus NVM Expressi tugi oli vaikimisi lisatud üldisesse kerneli konfiguratsiooni. Selleks lisati NVMe ketta draiver ja NVMe tuuma draiver. Draiverite loomist toetas Intel.[35]
  • Genode: Genode sai NVMe toe 18.05 versiooniga.[36]
  • Haiku: Haiku NVMe tugi algas 18. aprillil 2019.[37]
  • Linux: Linuxil on olnud NVM Expressi tugi alates kerneli versioonist 3.1.[38] Alates kerneli verioonist 3.3 on NVM Expressi draiver kernelis olemas.[39]
  • macOS: alates OS X Yosemite uuendusest 10.10.3 on NVM Expressi tugi ka macOS operatsioonisüsteemil. Retina MacBook kasutab NVM Expressi üle PCI Expressi kui loogilist seadme liidest.[40]
  • Windows: Microsoft lisas NVM Expressi toe esimesena Windows 8.1 ja Windows Server 2012 R2-le.[41] Hiljem loodi uuendus, et lisada NVM Expressi tugi ka Windows 7 ja Windows Server 2008 R2-le.[42] NVMe Windowsi draiveri avatud lähtekoodi haldab OpenFabrics Alliance. Viimane versioon, 1.5, toetab Windows 7/8/8.1/10 ja Server 2008R2/2012/2012R2/2016RTM operatsioonisüsteeme.[43]

Tarkvaraline tugi[muuda | muuda lähteteksti]

  • QEMU: NVMe toe sai QEMU 1.6 versiooniga, mis saabus 15. augustil 2013.[44]
  • UEFI: UEFI NVMe tugi on leitav vabavarana.

Viited[muuda | muuda lähteteksti]

  1. 1,0 1,1 NVM Express Inc. "NVM Express, Revision 1.2.1" (PDF) (Inglise keeles). Vaadatud 05.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  2. NVM Express Inc. "NVM Express" (Inglise keeles). Vaadatud 06.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  3. D. Riley. "Intel SSD DC P3700 800GB and 1.6TB Review: The Future of Storage". Tom's Hardware (Inglise keeles). Vaadatud 08.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  4. MASTERC. "EASY SSD GUIDE: SATA, MSATA, M.2 AND U.2". Republic of Gamers, Asus (Inglise keeles). Vaadatud 08.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  5. D. Landsman, SanDisk. "AHCI and NVMe as Interfaces for SATA Express™ Devices - Overview" (PDF). Serial ATA International Organization (Inglise keeles). Vaadatud 08.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  6. J. Burek. "2017 Guide: The Best M.2 Solid-State Drives, Tested". Computer Shopper (Inglise keeles). Originaali arhiivikoopia seisuga 6.05.2017. Vaadatud 08.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  7. W. Chu. "SSDs: What Comes After SATA III?". NewEggBusiness blog (Inglise keeles). Vaadatud 14.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)[alaline kõdulink]
  8. Z. Kerekes. "Charting the Rise of the SSD Market". Storage search (Inglise keeles). Originaali arhiivikoopia seisuga 25.05.2017. Vaadatud 14.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  9. "NVM Express Explained" (PDF) (Inglise keeles). Vaadatud 14.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  10. N. Novakovic. "Speeding up Flash... in a flash". The Inquirer (Inglise keeles). Originaali arhiivikoopia seisuga 18.09.2009. Vaadatud 18.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  11. A. Thomas. "Flash new standard tips up". The Inquirer (Inglise keeles). Originaali arhiivikoopia seisuga 11.01.2014. Vaadatud 18.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  12. A. Huffman. "NVMHCI: The Optimized Interface for Caches and SSDs" (PDF) (Inglise keeles). Vaadatud 18.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  13. A. Huffman. "Extending the NVMHCI Standard to Enterprise" (PDF) (Inglise keeles). Originaali (PDF) arhiivikoopia seisuga 17.04.2016. Vaadatud 18.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  14. 14,0 14,1 P. Onufryk. "What's New in NVMe 1.1 and Future Directions" (PDF) (Inglise keeles). Vaadatud 19.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  15. 15,0 15,1 "New Promoter Group Formed to Advance NVM Express" (PDF) (Inglise keeles). Vaadatud 19.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  16. "Solid State Storage Standards Explained". SNIA (Inglise keeles). Vaadatud 19.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  17. "NVM Express revision 1.0e" (PDF) (Inglise keeles). Vaadatud 19.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  18. L. Latif. "IDT releases two NVMe PCI-Express SSD controllers". The Inquirer (Inglise keeles). Originaali arhiivikoopia seisuga 24.08.2012. Vaadatud 20.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  19. J. Linden. "Samsung Announces Industry's First 2.5-Inch NVMe SSD". Storage Review (Inglise keeles). Originaali arhiivikoopia seisuga 10.01.2014. Vaadatud 20.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  20. P. Lilly. "LSI Introduces Blazing Fast SF3700 Series SSD Controller, Supports Both PCIe and SATA 6Gbps". Hot Hardware (Inglise keeles). Originaali arhiivikoopia seisuga 23.01.2018. Vaadatud 20.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  21. J. McEntegart. "Kingston Unveils First PCIe SSD: 1800 MB/s Read Speeds". Tom's Hardware (Inglise keeles). Vaadatud 20.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  22. "Intel® SSD Data Center Family for PCIe*". Intel (Inglise keeles). Vaadatud 20.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  23. "Promoter Information". NVM Express (Inglise keeles). Originaali arhiivikoopia seisuga 27.04.2017. Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  24. "NVM Express FAQs". NVM Express (Inglise keeles). Originaali arhiivikoopia seisuga 30.04.2017. Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  25. "NVM Express Organization History". NVM Express (Inglise keeles). Originaali arhiivikoopia seisuga 23.11.2015. Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  26. "NVMe Specification". Originaali arhiivikoopia seisuga 10. aprill 2021. Vaadatud 29. aprillil 2021.
  27. "Solid State Drive Form Factors".
  28. Alexander S. Gillis. "NVMe over Fabrics".
  29. Patricia Kummrow (24. september 2019). "Choosing the Right NVMe over Fabrics Transport Protocol Option for Data Center Storage".
  30. "NVMe over Fabrics".
  31. "NVMe Management Interface".
  32. "sdnvme.c parent". Vaadatud 21.04.2017.
  33. NVMeBMaster. "ChromeOS adds boot support for NVM Express" (Inglise keeles). Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  34. "DragonFly BSD 4.6". DragonFly BSD (Inglise keeles). Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  35. "FreeBSD 10.2-RELEASE Release Notes". FreeBSD (Inglise keeles). Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  36. "Release notes for the Genode OS Framework 18.05".
  37. "NVMe Driver Now Available".
  38. J. L. Jacobi. "Everything you need to know about NVMe, the insanely fast future for SSDs". PCWorld (Inglise keeles). Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  39. "Solid State Drives/NVMe". ArchLinux (Inglise keeles). Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  40. A. Kim. "Faster 'NVM Express' SSD Interface Arrives on Retina MacBook and OS X 10.10.3". MacRumors (Inglise keeles). Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  41. A. Herron. "Advancements in Storage and File Systems in Windows 8.1" (PDF) (Inglise keeles). Originaali (PDF) arhiivikoopia seisuga 10. jaanuar 2014. Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  42. "Update to add native driver support in NVM Express in Windows 7 and Windows Server 2008 R2". Microsoft (Inglise keeles). Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  43. "NVMe Windows Driver Community Release, December 2016" (Inglise keeles). Originaali arhiivikoopia seisuga 27.05.2018. Vaadatud 21.04.2017.{{netiviide}}: CS1 hooldus: tundmatu keel (link)
  44. "ChangeLog/1.6".
Viitamistõrge: <references>-siltide vahel olevat <ref>-silti nimega "bQX7k" ei kasutata eelnevas tekstis.