NVM Express

Den aktuella versionen av sidan har ännu inte granskats av erfarna bidragsgivare och kan skilja sig väsentligt från versionen som granskades den 23 januari 2022; kontroller kräver 7 redigeringar .

NVM Express ( NVMe , NVMHCI  - från engelska  Non-Volatile Memory Host Controller Interface Specification ) - ett gränssnitt för åtkomst till solid state-enheter anslutna via PCI Express-bussen . "NVM" i specifikationens namn hänvisar till icke-flyktigt minne, som vanligtvis används i SSD:er som NAND -flashminne . NVM Express logiska gränssnitt designades från grunden för att uppnå låg latens och effektiv användning av den höga parallelliteten hos SSD:er genom användning av en ny uppsättning kommandon och en kömekanism optimerad för att fungera med moderna flerkärniga processorer [1] .

Typen av kontakt och utformningen av NVMe-media kan vara olika. Enheter i formfaktorerna M.2 , U.2 (strukturellt kompatibla med SATA 2,5"-enheter) och PCI Express- expansionskort [2] [3] är vanliga. SATA Express-enheter och kompakta interna enheter formfaktor M .2 när använder PCIe stöder också NVM Express som ett av de logiska gränssnitten [4] [5] .

Förutsättningar för utseendet

Tidiga SSD:er använde parallell SCSI för anslutning och användes i servrar och högpresterande arbetsstationer [6] . SSD-enheternas penetration på massmarknaden ägde rum i mitten av 2000-talet och sammanföll med förskjutningen av parallell SCSI av SATA- och SAS -gränssnitt . Med tiden började begränsningarna för SATA- och SAS-gränssnitt, som främst är inriktade på att ansluta traditionella mekaniska hårddiskar , störa en ytterligare ökning av SSD-prestanda [7] [8] . Till exempel, till skillnad från hårddiskar, är den sekventiella läshastigheten för de flesta moderna SSD-enheter begränsad av bandbredden för SATA-gränssnittet.

Högpresterande SSD:er kopplade till PCI Express-bussen producerades före NVMe, men använde antingen unika slutna standarder och teknologier för att optimera flashminne, eller var en SATA- eller SAS-kontroller och flera SSD:er med SATA/SAS-gränssnitt placerade på samma kort. Övergången till NVMe har gjort det möjligt för PCIe SSD-gränssnittet att standardiseras - tillverkare behöver inte längre spendera resurser på att utveckla unika drivrutiner, kontakter och formfaktorer [9] . På samma sätt har antagandet av USB-masslagringsspecifikationer gjort det möjligt att skapa en mängd olika USB-minnen som kan fungera med vilken dator som helst utan att kräva originaldrivrutiner för varje modell [10] .

För att effektivt använda NVMe-enheter i lagringsnätverk utvecklas olika NVMe-kommandoöverföringsstandarder över RDMA (över InfiniBand eller Ethernet  - RoCE och iWARP ) och Fibre Channel utan översättning till SCSI under det allmänna namnet NVMe over Fabrics [ 11] .

Historik

Arbetar med specifikationen

De första detaljerna om den nya standarden för åtkomst av icke-flyktigt minne dök upp på Intel Developer Forum 2007, där NVMHCI (Non-Volatile Memory Host Controller Interface) introducerades - en föreslagen version av ett nytt kommunikationsgränssnitt mellan värden och NAND styrenhet [12] . Samma år bildades en arbetsgrupp för att studera NVMHCI, ledd av Intel. Den första NVMHCI 1.0-specifikationen slutfördes i april 2008 och publicerades på Intels webbplats [13] .

Den tekniska utvecklingen av NVMe började under andra halvan av 2009 [14] . NVMe-specifikationerna utvecklades av "NVM Express Workgroup", som omfattade mer än 90 företag, och var ordförande av Intels Amber Huffman . Den första versionen av NVMe-specifikationen presenterades den 1 mars 2011 [15] . När de arbetade med version 1.1, som dök upp den 11 oktober 2012, fokuserade utvecklarna på att lägga till funktionalitet för enheter i företagsklass. Den nya standarden lade till flervägs I/O med delad åtkomst till NVMe-namnrymder [ca. 1] och stöd för vektor I/O ( scatter-gather I/O med godtycklig längd ) [14] [16] . 

I framtiden fortsatte arbetet med nya versioner av NVMe-specifikationen:

Tidiga kontroller och standardenheter

De första NVMe-aktiverade SSD-kontrollerna och en referensflashenhetsdesign i en PCIe-kortformfaktor med full profil släpptes av Integrated Device Technology i augusti 2012 [24] [25] .

Den första servern NVMe-enheten Samsung XS1715 i U.2-formfaktor (2,5", kontakt SFF-8639) tillkännagavs i juli 2013. Styrenheten utvecklad av PMC-Sierra fungerade som bas för enheten De deklarerade egenskaperna var 3 GB / s för sekventiell läsning och 740 000  IOPS för direktåtkomst i 4 KiB-block [26] .

I juni 2014 introducerade Intel sin första linje av server NVMe-enheter. DC P3700, DC P3600, DC P3500-linjerna, som skiljer sig i prestanda och resurs, finns i formfaktorn U.2 och som lågprofilerade PCIe-kort [27] . Under 2015 släppte Intel en disk i konsumentklass baserad på P3500, Intel 750.

I juni 2015, en av de första konsumentklassade NVMe-enheterna i den kompakta M.2-formfaktorn, Samsung SM951-NVMe [ca. 2] [28] .

Apple iPhone 6s och iPhone 6s Plus introducerades i september 2015 och blev de första mobila enheterna utrustade med inbyggd NVMe-lagring [29] .

Tekniska funktioner och infrastruktur

Jämförelse med AHCI

De främsta fördelarna med NVMe framför AHCI är en optimerad kö- och avbrottshanteringsmekanism, som möjliggör en högre prestandanivå [4] .

AHCI-enheten är begränsad till ett ködjup på 32, medan NVMe stöder 64K (65536) köer med ett djup på 65536 vardera. NVMe-kommandouppsättningen är avsevärt förenklad i jämförelse med ATA och SCSI, specifikationen definierar endast 13 obligatoriska kommandon, vilket först och främst förenklar enhetsutvecklingen [2] .

Drive Form Factors

Inte alla U.2 formfaktorenheter är NVMe-kompatibla. I början av 2013 släppte Dell en ny generation servrar med möjlighet att ansluta upp till fyra Micron P320h-enheter. De gjordes i en U.2-kompatibel formfaktor, anslutna via fyra PCIe-banor, men använde inte NVMe som ett logiskt gränssnitt [30] . För att ansluta bakplan med stöd för U.2-enheter till PCI Express-bussen används kablar med OCuLink- eller SFF-8643-kontakter [ca. 3] , som ger anslutning av fyra PCI Express-banor. Kabeln kan anslutas till en speciell kontakt på moderkortet, till en vanlig PCI Express-expansionsplats via ett retimerkort, eller till en M.2-kontakt via en adapter [2] .

NVMe över tyger

Under de senaste åren har enheter och protokoll utvecklats som tillåter användning av NVMe-enheter inte bara lokalt, inom en enda server, utan också för att bygga lagringsnätverk med fördelarna med NVMe. Att ansluta system baserade på NVMe-enheter till traditionella lagringsnätverk förlorar den största fördelen med NVMe i form av minskad latens på grund av elimineringen av SCSI, eftersom endast SCSI-kommandon är inkapslade i Fibre Channel och iSCSI .

Arbetet för att eliminera denna brist utförs i två riktningar:

Stöd för operativsystem

Windows

Arbetet med den första versionen av Microsoft-drivrutinen för Windows utfördes av NVMe Windows Working Group som bildades på initiativ av OpenFabrics Alliance och slutfördes 2012 [37] .

Microsoft har integrerat NVMe-drivrutinen i Windows 8.1 och Windows Server 2012 R2 [38] . Microsoft-drivrutinen för Windows 7 och Windows Server 2008 R2 har släppts som uppdateringar [39] . Samsung erbjuder sin egen NVMe-drivrutin som ger bättre prestanda [40] . Windows 10 stöder Host Memory Buffer med en maximal storlek på 64 MB [41] .

Linux

Den ursprungliga utvecklingen av Linux- drivrutinen gjordes av Intel. Drivrutinen inkluderades i 3.3-grenen av Linux-kärnan den 19 mars 2012 [42] .

Under utvecklingen av NVMe-drivrutinen identifierades brister i block I/O-arkitekturen i Linux-kärnan, vilket gjorde det svårt att skala prestanda över 1 miljon IOPS per enhet [43] . Med input från Fusion-io- ingenjörer utvecklades ett skalbart block I/O-lager för högpresterande SSD-enheter, känt som blk-multiqueue eller blk-mq , och lades till 3.13-kärnan den 19 januari 2014 [44] . En annan trend inom block-I/O-optimering är att minska latensen förknippad med avbrottshantering [45] .

Linux stöder Host Memory Buffer (HMB) [46] sedan version 4.13.1 [47] med en maximal storlek på 128 MB som standard [48] .

macOS

På macOS har NVMe-drivrutinen följts med systemet sedan version 10.13, släppt den 25 september 2017.

OS för BSD-familjen

Utvecklingen av NVMe-drivrutinen för den 9:e grenen av FreeBSD stöddes av Intel [49] . Från och med FreeBSD version 10.2 ingår nvd(4)- och nvme(4)-drivrutinerna i standardkärnkonfigurationen [50] .

NVMe-drivrutinen för DragonFly skrevs från grunden av Matt Dillon [51] . Den första officiella utgåvan med NVMe-stöd är 4.6 [52] .

Utvecklingen av NVMe-drivrutinen för OpenBSD startades i april 2014 av en utvecklare som tidigare utvecklat USB 2.0- och AHCI- drivrutinerna [53] . Den första versionen av drivrutinen dök upp i OpenBSD 6.0 [54] .

NVMe-stöd i NetBSD dök upp i release 8.0 [54] .

Solaris

Solaris har fått NVMe-stöd sedan Oracle Solaris 11.2 [55] .

Haiku

Fullständigt NVMe-stöd finns tillgängligt i Haiku från och med revision 54102 [56] .

QEMU

För felsökning av drivrutiner och annan programvara i QEMU , från och med version 1.6, dök emulering av NVMe-enheter upp (augusti 2013) [57] .

UEFI

En NVMe-drivrutin för UEFI - startmiljön är tillgänglig från SourceForge (edk2-projekt) [58] .

Anteckningar

  1. NVMe-namnområde ( eng.  NVMe-namnområde ) - ett område på NVMe-enheten formaterat för blockåtkomst.
  2. Den första varianten av Samsung SM951 släpptes i samma formfaktor men stödde SATA Express.
  3. SFF-8643-kontakten, aka Mini-SAS HD, används vanligtvis i SAS -kablar , men NVMe-kablar och SAS-kablar med dessa kontakter är inte utbytbara.
  4. M.2 formfaktorenheter kan använda både AHCI och NVMe
  5. JBOF (Bara ett paket med blixt) - ett chassi med solid state-enheter och PCIe-switchar, vars några av portarna tas ut.
  1. Micheloni, Marelli, Eshghi, 2012 , sid. 43.
  2. 1 2 3 4 Jonmichael Hands, Peter Onufryk. NVM Express Infrastructure - Utforska datacenter PCIe-topologier  (engelska) (PDF). Intel (29 januari 2015). Tillträdesdatum: 10 februari 2016. Arkiverad från originalet 1 juli 2016.
  3. Intel Solid-State Drive DC P3600 Series  (engelska) (PDF) 18, 20–22. Intel (20 mars 2015). Tillträdesdatum: 10 februari 2016. Arkiverad från originalet 2 april 2015.
  4. 1 2 Dave Landsman. AHCI och NVMe som gränssnitt för SATA Express-enheter - Översikt  (engelska) (PDF)  (länk ej tillgänglig) . SanDisk. Hämtad 10 februari 2016. Arkiverad från originalet 5 oktober 2013.
  5. Paul Wassenberg. SATA Express: PCIe Client Storage  (engelska) (PDF)  (länk ej tillgänglig) . SATA-IO (25 juni 2013). Datum för åtkomst: 10 februari 2016. Arkiverad från originalet den 4 oktober 2013.
  6. Zsolt Kerekes. SSD-marknadshistorik – Kartlägger uppkomsten av Solid State-  diskmarknaden . storagesearch.com. Hämtad 11 februari 2016. Arkiverad från originalet 25 maj 2017.
  7. Amber Huffman. NVMHCI: Det optimerade gränssnittet för cacher och SSD:er  (engelska) (PDF). Flash Memory Summit (2008). Tillträdesdatum: 12 februari 2016. Arkiverad från originalet 4 mars 2016.
  8. En jämförelse av NVMe och AHCI  (engelska) (PDF)  (länk ej tillgänglig) . SATA-IO (31 juli 2012). Hämtad 11 februari 2016. Arkiverad från originalet 12 februari 2019.
  9. Amber Huffman. Utöka NVMHCI-standarden till Enterprise  (engelska) (PDF). Flash Memory Summit (2009). Datum för åtkomst: 20 februari 2017. Arkiverad från originalet 17 april 2016.
  10. NVM Express Explained  ( PDF). NVM Express Inc. Hämtad 10 februari 2016. Arkiverad från originalet 4 mars 2016.
  11. Dave Minturn. NVM Express Over Fabrics  (engelska) (PDF). OFADevWorkshop (2015). Tillträdesdatum: 11 februari 2016. Arkiverad från originalet 22 april 2016.
  12. Snabba upp Flash... i ett nafs  (engelska)  (nedlänk) . The Inquirer (13 oktober 2007). Hämtad 12 februari 2016. Arkiverad från originalet 18 september 2009.
  13. Amber Huffman. Non-Volatile Memory Host Controller Interface (NVMHCI) 1.0  (engelska) (PDF). Intel Corporation . NVM Express Inc. (14 april 2008). Hämtad 20 februari 2017. Arkiverad från originalet 5 juni 2015.
  14. 1 2 Peter Onufryk. Vad är nytt i NVMe 1.1 och Future Directions  (engelska) (PDF). Flash Memory Summit (2013). Hämtad 12 februari 2016. Arkiverad från originalet 22 februari 2016.
  15. Ny promotorgrupp bildad för att avancera NVM Express  (engelska) (PDF), NVM Express, Inc. (1 juni 2011). Arkiverad från originalet den 4 mars 2016. Hämtad 12 februari 2016.
  16. Amber Huffman. NVM Express version 1.1  (engelska) (PDF). NVM Express Inc. (11 oktober 2012). Datum för åtkomst: 12 februari 2016. Arkiverad från originalet den 6 juli 2017.
  17. NVM Express Inc. NVM Express Revision 1.1b  (engelska) (PDF) (2 juli 2014). Tillträdesdatum: 15 februari 2016. Arkiverad från originalet 1 juli 2016.
  18. NVM Express Inc. NVM Express version 1.2  (engelska) (PDF) (3 november 2014). Hämtad 15 februari 2016. Arkiverad från originalet 29 juni 2016.
  19. NVM Express Inc. NVM Express Revision 1.2a  (engelska) (PDF) (23 oktober 2015). Hämtad 12 februari 2016. Arkiverad från originalet 13 april 2016.
  20. NVM Express Inc. NVM Express Revision 1.3c  (engelska) (PDF) (24 maj 2018). Hämtad 25 juni 2018. Arkiverad från originalet 25 juni 2018.
  21. NVM Express Inc. NVM Express Revision 2.0  (engelska) (PDF). NVM Express (13 maj 2021). Hämtad 8 augusti 2021. Arkiverad från originalet 20 juli 2021.
  22. NVM Express Inc. NVM Express Revision 2.0a  (engelska) (PDF). NVM Express (23 juli 2021). Hämtad 8 augusti 2021. Arkiverad från originalet 8 augusti 2021.
  23. NVM Express Inc. NVM Express version  2.0b . NVM Express (6 januari 2022). Hämtad 9 februari 2022. Arkiverad från originalet 20 januari 2022.
  24. IDT släpper två NVMe PCI-Express SSD-kontroller  (engelska)  (nedlänk) . The Inquirer (21 augusti 2012). Hämtad 12 februari 2016. Arkiverad från originalet 24 augusti 2012.
  25. ↑ IDT visar upp den första NVMe PCIe SSD-processorn och referensdesignen - FMS 2012-uppdateringen  . SSD-granskningen (24 augusti 2012). Datum för åtkomst: 12 februari 2016. Arkiverad från originalet 1 januari 2016.
  26. Samsung tillkännager industrins första 2,5-tums NVMe SSD | StorageReview.com - Lagringsrecensioner  (eng.)  (länk ej tillgänglig) . StorageReview.com (18 juli 2013). Datum för åtkomst: 12 februari 2016. Arkiverad från originalet 10 januari 2014.
  27. Scott Strong. Intel lägger till PCIe-lösningar till sin datacenterfamilj av  SSD:er . SSD-granskningen (3 juni 2014). Tillträdesdatum: 12 februari 2016. Arkiverad från originalet 23 december 2015.
  28. Kristian Vättö. Samsung SM951-NVMe (256GB) PCIe SSD  recension . AnandTech (25 juni 2015). Hämtad 26 augusti 2016. Arkiverad från originalet 28 augusti 2016.
  29. Les Tokar. iPhone 6S använder NVMe-lagring - Prestanda bestäms av  kapacitet . SSD-granskningen (oktober 2015). Datum för åtkomst: 12 februari 2016. Arkiverad från originalet den 7 november 2015.
  30. Kevin OBrien. Dell PowerEdge R720 12G  recension . Lagringsgranskning (5 februari 2013). Hämtad 15 februari 2016. Arkiverad från originalet 11 februari 2016.
  31. Patrick Kennedy. Intel Ruler SSD : Redan rörliga marknader  . Serverthehome (9 augusti 2017). Hämtad 25 juni 2018. Arkiverad från originalet 25 juni 2018.
  32. Supermicro lanserar 1U Ruler NVMe  Server . StorageReview (3 mars 2018). Hämtad 25 juni 2018. Arkiverad från originalet 25 juni 2018.
  33. Cliff Robinson. Supermicro 36x NGSFF SSD-server erbjuder 576 TB NVMe-lagring i  1U . StorageReview (11 januari 2018). Hämtad 25 juni 2018. Arkiverad från originalet 25 juni 2018.
  34. David Wang. Nästa generations Small Form Factor (NGSFF) SSD-  förslag . Flash Memory Summit. Hämtad 25 juni 2018. Arkiverad från originalet 25 juni 2018.
  35. Andy Herron. NVM Express flyttar in i framtiden  (eng.) (pdf). NVM Express Inc. (2016). Hämtad 11 augusti 2016. Arkiverad från originalet 22 augusti 2016.
  36. NVM Express över tygspecifikation släppt  , NVM Express, Inc. (9 juni 2016). Arkiverad från originalet den 18 augusti 2016. Hämtad 11 augusti 2016.
  37. Kwok Kong. Det senaste om NVMe drivrutiner för öppen källkod för Windows och VMware  (engelska)  (nedlänk) . Lagringsgranskning (4 augusti 2014). Tillträdesdatum: 15 februari 2016. Arkiverad från originalet 4 mars 2016.
  38. Andy Herron. Framsteg inom lagrings- och filsystem i Windows 8.1  (eng.) (pdf). Storage Developer Conference (11 januari 2014). Tillträdesdatum: 15 februari 2016. Arkiverad från originalet 10 januari 2014.
  39. ↑ Uppdatera för att lägga till inbyggt drivrutinsstöd i NVM Express i Windows 7 och Windows Server 2008 R2  . Microsoft Support (4 augusti 2014). — KB2990941. Hämtad 15 februari 2016. Arkiverad från originalet 13 mars 2016.
  40. Ober, Michael. Sida 3: Vad är skillnaden mellan AHCI och NVMe?  - F: Att välja en SSD: en översikt över tekniker på marknaden och jämförande tester // XX hårdvara LUXX: journal. - 2016. - 2 januari. - S. 3. - Elektr. ed.
  41. Hur aktiverar man värdminnesbuffert i Windows10 med registernyckel? (inte tillgänglig länk) . Hämtad 16 oktober 2021. Arkiverad från originalet 16 oktober 2021. 
  42. Keith Busch. Uppdatera för att lägga till inbyggt drivrutinsstöd i NVM Express i Windows 7 och Windows Server 2008 R2  (engelska) (pdf). Flash Memory Summit (12 augusti 2013). Tillträdesdatum: 15 februari 2016. Arkiverad från originalet den 5 november 2013.
  43. Matias Bjørling; Jens Axboe; David Nellans; Philip Bonnet. Linux Block IO: Introducerar Multi-queue SSD Access på multi-core system  (eng.) (pdf). IT-universitetet i Köpenhamn (5 mars 2013). Hämtad 15 februari 2016. Arkiverad från originalet 2 februari 2014.
  44. Werner Fischer. Linux Multi-Queue Block IO Queuing Mechanism (blk-mq  ) . Thomas-Krenn. Tillträdesdatum: 15 februari 2016. Arkiverad från originalet 3 mars 2016.
  45. Stephen Bates. Ha kul på ködjup = 1: Vad nästa generations icke-flyktiga minne (NG-NVM) betyder för PCIe SSD:er och SSD-drivrutiner  ( död  länk) . PMC-Sierra (12 november 2015). Hämtad 15 februari 2016. Arkiverad från originalet 6 mars 2016.
  46. HMB i DRAM-lösa NVMe SSD:er: deras användning och effekter på prestanda . Hämtad 16 oktober 2021. Arkiverad från originalet 22 februari 2022.
  47. Linux 4.13 har släppts den sön, 3 sep 2017 . Hämtad 16 oktober 2021. Arkiverad från originalet 29 oktober 2017.
  48. NVM Express enhetsdrivrutin v4.13.1 . Hämtad 16 oktober 2021. Arkiverad från originalet 16 oktober 2021.
  49. ↑ Logg för /head/sys/dev/nvme  . FreeBSD källträd . FreeBSD-projektet. Tillträdesdatum: 15 februari 2016. Arkiverad från originalet den 29 maj 2013.
  50. ↑ Releaseinformation för FreeBSD 10.2-RELEASE  . FreeBSD-projektet. Datum för åtkomst: 15 februari 2016. Arkiverad från originalet 18 juni 2017.
  51. ↑ NVMe kommer till DragonFly - DragonFly BSD Digest  . Hämtad 8 september 2016. Arkiverad från originalet 19 september 2016.
  52. DragonFly BSD 4.6 . Hämtad 8 september 2016. Arkiverad från originalet 4 september 2016.
  53. David Gwynne. icke-flyktigt minne expresskontroller (/sys/dev/ic/nvme.c  ) . BSD Cross Reference (16 april 2014). Tillträdesdatum: 15 februari 2016. Arkiverad från originalet 28 april 2014.
  54. 12 NVME (4). NetBSD Kernel Interfaces Manual (nedlänk) . Hämtad 9 september 2016. Arkiverad från originalet 17 september 2016. 
  55. nvme(7D  ) . Orakel. Tillträdesdatum: 15 februari 2016. Arkiverad från originalet 9 december 2015.
  56. Ingen start 54077 64 bitars NVMe  SSD . Haiku officiella diskussionsforum . Haiku Community (28 april 2020). Tillträdesdatum: 28 april 2020.
  57. ChangeLog/1.6 - QEMU . Hämtad 8 juli 2020. Arkiverad från originalet 17 juli 2020.
  58. Ladda ner EDK II från . sourceforge.net. Datum för åtkomst: 11 januari 2014. Arkiverad från originalet den 31 december 2013.

Litteratur

  • Rino Micheloni, Alessia Marelli, Kam Eshghi. Inuti Solid State-enheter (SSD) . - Springer Science & Business Media, 2012. - 382 sid. - (Springer Series in Advanced Microelectronics). — ISBN 9789400751453 .

Länkar