NVM Express

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 23. januar 2022; checks kræver 7 redigeringer .

NVM Express ( NVMe , NVMHCI  - fra den engelske  Non-Volatile Memory Host Controller Interface Specification ) - en grænseflade til adgang til solid state-drev, der er tilsluttet via PCI Express-bussen . "NVM" i specifikationens navn refererer til ikke-flygtig hukommelse, som almindeligvis bruges i SSD'er som NAND -flashhukommelse . Den logiske NVM Express-grænseflade blev designet fra bunden til at opnå lav latenstid og effektiv brug af den høje parallelitet af SSD'er gennem brugen af ​​et nyt sæt kommandoer og en kømekanisme, der er optimeret til at arbejde med moderne multi-core processorer [1] .

Typen af ​​stik og designet af NVMe-medier kan være anderledes. Drev i formfaktorerne M.2 , U.2 (strukturelt kompatible med SATA 2.5"-drev) og PCI Express - udvidelseskort [2] [3] er almindelige. SATA Express-drev og kompakte interne drev formfaktor M .2 , når brug af PCIe understøtter også NVM Express som en af ​​de logiske grænseflader [4] [5] .

Forudsætninger for udseendet

Tidlige SSD'er brugte parallel SCSI til tilslutning og blev brugt i servere og højtydende arbejdsstationer [6] . Indtrængen af ​​SSD'er på massemarkedet fandt sted i midten af ​​2000'erne og faldt sammen med forskydningen af ​​parallel SCSI af SATA- og SAS -grænseflader . Over tid begyndte begrænsningerne af SATA- og SAS-grænseflader, som primært er fokuseret på at forbinde traditionelle mekaniske harddiske , at forstyrre en yderligere stigning i SSD-ydeevne [7] [8] . For eksempel, i modsætning til harddiske, er den sekventielle læsehastighed for de fleste moderne SSD'er begrænset af båndbredden på SATA-grænsefladen.

Højtydende SSD'er forbundet til PCI Express-bussen blev produceret før NVMe, men brugte enten unikke lukkede standarder og teknologier til optimering af flashhukommelse, eller var en SATA- eller SAS-controller og flere SSD'er med SATA/SAS-grænseflader placeret på samme kort. Overgangen til NVMe har gjort det muligt at standardisere PCIe SSD-grænsefladen - producenter behøver ikke længere at bruge ressourcer på at udvikle unikke drivere, stik og formfaktorer [9] . Tilsvarende har vedtagelsen af ​​USB-masselagringsspecifikationer gjort det muligt at skabe en lang række USB-flashdrev , der kan fungere med enhver computer uden at kræve originale drivere til hver model [10] .

For effektivt at bruge NVMe-drev i lagernetværk udvikles forskellige NVMe-kommandotransmissionsstandarder over RDMA (over InfiniBand eller Ethernet  - RoCE og iWARP ) og Fibre Channel uden oversættelse til SCSI under det generelle navn NVMe over Fabrics [ 11] .

Historie

Arbejder med specifikationen

De første detaljer om den nye standard for adgang til ikke-flygtig hukommelse dukkede op på Intel Developer Forum i 2007, hvor NVMHCI (Non-Volatile Memory Host Controller Interface) blev introduceret - en foreslået version af en ny kommunikationsgrænseflade mellem værten og NAND controller [12] . Samme år blev der dannet en arbejdsgruppe for at studere NVMHCI, ledet af Intel. Den første NVMHCI 1.0-specifikation blev færdiggjort i april 2008 og offentliggjort på Intels hjemmeside [13] .

Den tekniske udvikling af NVMe begyndte i anden halvdel af 2009 [14] . NVMe-specifikationerne blev udviklet af "NVM Express Workgroup", som omfattede mere end 90 virksomheder, og blev ledet af Intels Amber Huffman . Den første version af NVMe-specifikationen blev præsenteret den 1. marts 2011 [15] . Da de arbejdede på version 1.1, som udkom den 11. oktober 2012, fokuserede udviklerne på at tilføje funktionalitet til enheder i virksomhedsklassen. Den nye standard tilføjede multipath I/O med delt adgang til NVMe-navnerum [ca. 1] og understøttelse af vektor I/O ( arbitrær-længde scatter-gather I/O ) [14] [16] . 

I fremtiden blev arbejdet med nye versioner af NVMe-specifikationen fortsat:

Tidlige controllere og hyldedrev

De første NVMe-aktiverede SSD-controllere og et referenceflashdrevdesign i en fuld-profil PCIe-kortformfaktor blev frigivet af Integrated Device Technology i august 2012 [24] [25] .

Den første server NVMe drev Samsung XS1715 i U.2 formfaktor (2,5", stik SFF-8639) blev annonceret i juli 2013. Controlleren udviklet af PMC-Sierra fungerede som grundlag for drevet De angivne egenskaber var 3 GB / s for sekventielle læsninger og 740.000  IOPS for random access i 4 KiB blokke [26] .

I juni 2014 introducerede Intel sin første linje af server NVMe-drev. DC P3700, DC P3600, DC P3500-linjerne, som adskiller sig i ydeevne og ressourcer, er tilgængelige i U.2-formfaktoren og som lavprofil-PCIe-kort [27] . I 2015 udgav Intel et drev i forbrugerkvalitet baseret på P3500, Intel 750.

I juni 2015 blev et af de første NVMe-drev i forbrugerkvalitet i den kompakte M.2-formfaktor, Samsung SM951-NVMe [ca. 2] [28] .

Introduceret i september 2015 blev Apple iPhone 6s og iPhone 6s Plus de første mobile enheder udstyret med indbygget NVMe-lagring [29] .

Tekniske funktioner og infrastruktur

Sammenligning med AHCI

De vigtigste fordele ved NVMe frem for AHCI er en optimeret kø- og afbrydelseshåndteringsmekanisme, som giver mulighed for et højere niveau af ydeevne [4] .

AHCI-enheden er begrænset til én kødybde på 32, mens NVMe understøtter 64K (65536) køer med en dybde på 65536 hver. NVMe kommandosættet er væsentligt forenklet sammenlignet med ATA og SCSI, specifikationen definerer kun 13 obligatoriske kommandoer, hvilket først og fremmest i høj grad forenkler enhedsudvikling [2] .

Drive Form Factors

Ikke alle U.2-formfaktordrev er NVMe-kompatible. I begyndelsen af ​​2013 udgav Dell en ny generation af servere med mulighed for at forbinde op til fire Micron P320h-drev. De blev lavet i en U.2-kompatibel formfaktor, forbundet via fire PCIe-baner, men brugte ikke NVMe som en logisk grænseflade [30] . For at forbinde backplanes med understøttelse af U.2-drev til PCI Express-bussen, bruges kabler med OCuLink eller SFF-8643 stik [ca. 3] , som giver tilslutning af fire PCI Express baner. Kablet kan tilsluttes et specielt stik på bundkortet, til et almindeligt PCI Express-udvidelsesslot via et retimer-kort eller til et M.2-stik via en adapter [2] .

NVMe over Fabrics

I løbet af de seneste år er der udviklet enheder og protokoller, der tillader brugen af ​​NVMe-drev ikke kun lokalt, inden for en enkelt server, men også til at opbygge lagernetværk ved at bruge fordelene ved NVMe. Tilslutning af systemer baseret på NVMe-drev til traditionelle lagernetværk mister hovedfordelen ved NVMe i form af reduceret latenstid på grund af eliminering af SCSI, da kun SCSI-kommandoer er indkapslet i Fibre Channel og iSCSI .

Arbejdet med at fjerne denne mangel udføres i to retninger:

Understøttelse af operativsystem

Windows

Arbejdet med den første version af Microsoft-driveren til Windows blev udført af NVMe Windows Working Group dannet på initiativ af OpenFabrics Alliance og blev afsluttet i 2012 [37] .

Microsoft har integreret NVMe-driveren i Windows 8.1 og Windows Server 2012 R2 [38] . Microsoft-driveren til Windows 7 og Windows Server 2008 R2 er blevet frigivet som opdateringer [39] . Samsung tilbyder sin egen NVMe-driver, som giver bedre ydeevne [40] . Windows 10 understøtter Host Memory Buffer med en maksimal størrelse på 64 MB [41] .

Linux

Den oprindelige udvikling af Linux -driveren blev udført af Intel. Driveren blev inkluderet i 3.3-grenen af ​​Linux-kernen den 19. marts 2012 [42] .

Under udviklingen af ​​NVMe-driveren blev der identificeret fejl i blok I/O-arkitekturen i Linux-kernen, hvilket gjorde det vanskeligt at skalere ydeevnen ud over 1 million IOPS pr. enhed [43] . Med input fra Fusion-io- ingeniører blev et skalerbart blok I/O-lag til højtydende SSD'er, kendt som blk-multiqueue eller blk-mq , udviklet og tilføjet til 3.13-kernen den 19. januar 2014 [44] . En anden tendens inden for blok-I/O-optimering er at reducere latensen forbundet med afbrydelseshåndtering [45] .

Linux understøtter Host Memory Buffer (HMB) [46] siden version 4.13.1 [47] med en maksimal størrelse på 128 MB som standard [48] .

macOS

På macOS har NVMe-driveren været bundtet med systemet siden version 10.13, udgivet den 25. september 2017.

OS af BSD-familien

Udviklingen af ​​NVMe-driveren til den 9. gren af ​​FreeBSD blev understøttet af Intel [49] . Fra og med FreeBSD version 10.2 er nvd(4)- og nvme(4)-driverne inkluderet i standardkernekonfigurationen [50] .

NVMe-driveren til DragonFly blev skrevet fra bunden af ​​Matt Dillon [51] . Den første officielle udgivelse med NVMe-understøttelse er 4.6 [52] .

Udvikling af NVMe-driveren til OpenBSD blev startet i april 2014 af en udvikler, som tidligere har udviklet USB 2.0- og AHCI- driverne [53] . Den første udgivelse af driveren dukkede op i OpenBSD 6.0 [54] .

NVMe-understøttelse i NetBSD dukkede op i release 8.0 [54] .

Solaris

Solaris har modtaget NVMe-support siden Oracle Solaris 11.2 [55] .

Haiku

Fuld NVMe-support er tilgængelig i Haiku fra revision 54102 [56] .

QEMU

Til fejlfinding af drivere og anden software i QEMU , fra version 1.6, dukkede emulering af NVMe-enheder op (august 2013) [57] .

UEFI

En NVMe-driver til UEFI - opstartsmiljøet er tilgængelig fra SourceForge (edk2-projekt) [58] .

Noter

  1. NVMe-navneområde ( eng.  NVMe-navneområde ) - et område af NVMe-drevet formateret til blokadgang.
  2. Den første variant af Samsung SM951 blev udgivet i samme formfaktor, men understøttede SATA Express.
  3. SFF-8643-stikket, alias Mini-SAS HD, bruges almindeligvis i SAS -kabler , men NVMe-kabler og SAS-kabler med disse stik er ikke udskiftelige.
  4. M.2 formfaktordrev kan bruge både AHCI og NVMe
  5. JBOF (bare et bundt flash) - et chassis med solid state-drev og PCIe-switche, hvoraf nogle af portene er bragt ud.
  1. Micheloni, Marelli, Eshghi, 2012 , s. 43.
  2. 1 2 3 4 Jonmichael Hands, Peter Onufryk. NVM Express Infrastructure - Udforskning af datacenter PCIe-topologier  (engelsk) (PDF). Intel (29. januar 2015). Dato for adgang: 10. februar 2016. Arkiveret fra originalen 1. juli 2016.
  3. Intel Solid-State Drive DC P3600 Series  (engelsk) (PDF) 18, 20–22. Intel (20. marts 2015). Dato for adgang: 10. februar 2016. Arkiveret fra originalen 2. april 2015.
  4. 1 2 Dave Landsman. AHCI og NVMe som grænseflader til SATA Express-enheder - Oversigt  (engelsk) (PDF)  (link ikke tilgængeligt) . SanDisk. Hentet 10. februar 2016. Arkiveret fra originalen 5. oktober 2013.
  5. Paul Wassenberg. SATA Express: PCIe Client Storage  (engelsk) (PDF)  (link ikke tilgængeligt) . SATA-IO (25. juni 2013). Dato for adgang: 10. februar 2016. Arkiveret fra originalen 4. oktober 2013.
  6. Zsolt Kerekes. SSD-markedshistorie - Kortlægning af stigningen i Solid State Disk-  markedet . storagesearch.com. Hentet 11. februar 2016. Arkiveret fra originalen 25. maj 2017.
  7. Amber Huffman. NVMHCI: Den optimerede grænseflade til caches og SSD'er  (engelsk) (PDF). Flash Memory Summit (2008). Dato for adgang: 12. februar 2016. Arkiveret fra originalen 4. marts 2016.
  8. En sammenligning af NVMe og AHCI  (engelsk) (PDF)  (link ikke tilgængeligt) . SATA-IO (31. juli 2012). Hentet 11. februar 2016. Arkiveret fra originalen 12. februar 2019.
  9. Amber Huffman. Udvidelse af NVMHCI-standarden til Enterprise  (engelsk) (PDF). Flash Memory Summit (2009). Dato for adgang: 20. februar 2017. Arkiveret fra originalen 17. april 2016.
  10. NVM Express Explained  ( PDF). NVM Express Inc. Hentet 10. februar 2016. Arkiveret fra originalen 4. marts 2016.
  11. Dave Minturn. NVM Express Over Stoffer  (engelsk) (PDF). OFADevWorkshop (2015). Dato for adgang: 11. februar 2016. Arkiveret fra originalen 22. april 2016.
  12. Fremskyndelse af Flash... lynhurtigt  (engelsk)  (downlink) . The Inquirer (13. oktober 2007). Hentet 12. februar 2016. Arkiveret fra originalen 18. september 2009.
  13. Amber Huffman. Non-Volatil Memory Host Controller Interface (NVMHCI) 1.0  (engelsk) (PDF). Intel Corporation . NVM Express Inc. (14. april 2008). Hentet 20. februar 2017. Arkiveret fra originalen 5. juni 2015.
  14. 1 2 Peter Onufryk. Hvad er nyt i NVMe 1.1 og Future Directions  (engelsk) (PDF). Flash Memory Summit (2013). Hentet 12. februar 2016. Arkiveret fra originalen 22. februar 2016.
  15. Ny promotorgruppe dannet for at fremme NVM Express  (engelsk) (PDF), NVM Express, Inc. (1. juni 2011). Arkiveret fra originalen den 4. marts 2016. Hentet 12. februar 2016.
  16. Amber Huffman. NVM Express Revision 1.1  (engelsk) (PDF). NVM Express Inc. (11. oktober 2012). Dato for adgang: 12. februar 2016. Arkiveret fra originalen 6. juli 2017.
  17. NVM Express Inc. NVM Express Revision 1.1b  (engelsk) (PDF) (2. juli 2014). Dato for adgang: 15. februar 2016. Arkiveret fra originalen 1. juli 2016.
  18. NVM Express Inc. NVM Express Revision 1.2  (engelsk) (PDF) (3. november 2014). Hentet 15. februar 2016. Arkiveret fra originalen 29. juni 2016.
  19. NVM Express Inc. NVM Express Revision 1.2a  (engelsk) (PDF) (23. oktober 2015). Hentet 12. februar 2016. Arkiveret fra originalen 13. april 2016.
  20. NVM Express Inc. NVM Express Revision 1.3c  (engelsk) (PDF) (24. maj 2018). Hentet 25. juni 2018. Arkiveret fra originalen 25. juni 2018.
  21. NVM Express Inc. NVM Express Revision 2.0  (engelsk) (PDF). NVM Express (13. maj 2021). Hentet 8. august 2021. Arkiveret fra originalen 20. juli 2021.
  22. NVM Express Inc. NVM Express Revision 2.0a  (engelsk) (PDF). NVM Express (23. juli 2021). Hentet 8. august 2021. Arkiveret fra originalen 8. august 2021.
  23. NVM Express Inc. NVM Express Revision  2.0b . NVM Express (6. januar 2022). Hentet 9. februar 2022. Arkiveret fra originalen 20. januar 2022.
  24. IDT frigiver to NVMe PCI-Express SSD-controllere  (engelsk)  (downlink) . The Inquirer (21. august 2012). Hentet 12. februar 2016. Arkiveret fra originalen 24. august 2012.
  25. ↑ IDT viser den første NVMe PCIe SSD-processor og referencedesign - FMS 2012-opdatering  . SSD-gennemgangen (24. august 2012). Dato for adgang: 12. februar 2016. Arkiveret fra originalen 1. januar 2016.
  26. Samsung annoncerer industriens første 2,5-tommer NVMe SSD | StorageReview.com - Lageranmeldelser  (eng.)  (link ikke tilgængeligt) . StorageReview.com (18. juli 2013). Dato for adgang: 12. februar 2016. Arkiveret fra originalen 10. januar 2014.
  27. Scott Strong. Intel tilføjer PCIe-løsninger til sin datacenterfamilie af  SSD'er . SSD-gennemgangen (3. juni 2014). Dato for adgang: 12. februar 2016. Arkiveret fra originalen 23. december 2015.
  28. Kristian Vättö. Samsung SM951-NVMe (256GB) PCIe SSD  anmeldelse . AnandTech (25. juni 2015). Hentet 26. august 2016. Arkiveret fra originalen 28. august 2016.
  29. Les Tokar. iPhone 6S bruger NVMe Storage - Ydeevne bestemt af  kapacitet . SSD-gennemgangen (oktober 2015). Dato for adgang: 12. februar 2016. Arkiveret fra originalen 7. november 2015.
  30. Kevin OBrien. Dell PowerEdge R720 12G  anmeldelse . Opbevaringsgennemgang (5. februar 2013). Hentet 15. februar 2016. Arkiveret fra originalen 11. februar 2016.
  31. Patrick Kennedy. Intel Ruler SSD : Markeder i bevægelse allerede  . Serverthehome (9. august 2017). Hentet 25. juni 2018. Arkiveret fra originalen 25. juni 2018.
  32. Supermicro lancerer 1U Ruler NVMe  Server . StorageReview (3. marts 2018). Hentet 25. juni 2018. Arkiveret fra originalen 25. juni 2018.
  33. Cliff Robinson. Supermicro 36x NGSFF SSD-server tilbyder 576TB NVMe Storage i  1U . StorageReview (11. januar 2018). Hentet 25. juni 2018. Arkiveret fra originalen 25. juni 2018.
  34. David Wang. Næste generations Small Form Factor (NGSFF) SSD-  forslag . Flash Memory Summit. Hentet 25. juni 2018. Arkiveret fra originalen 25. juni 2018.
  35. Andy Herron. NVM Express Moves Into The Future  (eng.) (pdf). NVM Express Inc. (2016). Hentet 11. august 2016. Arkiveret fra originalen 22. august 2016.
  36. NVM Express over Fabrics Specification frigivet  , NVM Express, Inc. (9. juni 2016). Arkiveret fra originalen den 18. august 2016. Hentet 11. august 2016.
  37. Kwok Kong. Det seneste om NVMe open source-drivere til Windows og VMware  (engelsk)  (downlink) . Opbevaringsanmeldelse (4. august 2014). Dato for adgang: 15. februar 2016. Arkiveret fra originalen 4. marts 2016.
  38. Andy Herron. Fremskridt i lager- og filsystemer i Windows 8.1  (eng.) (pdf). Storage Developer Conference (11. januar 2014). Dato for adgang: 15. februar 2016. Arkiveret fra originalen 10. januar 2014.
  39. ↑ Opdater for at tilføje indbygget driverunderstøttelse i NVM Express i Windows 7 og Windows Server 2008 R2  . Microsoft Support (4. august 2014). — KB2990941. Hentet 15. februar 2016. Arkiveret fra originalen 13. marts 2016.
  40. Ober, Michael. Side 3: Hvad er forskellen mellem AHCI og NVMe?  - Q: Valg af SSD: en oversigt over teknologier på markedet og sammenlignende test // XX hardware LUXX: journal. - 2016. - 2. januar. - S. 3. - Elektr. udg.
  41. Hvordan aktiverer man værtshukommelsesbuffer i Windows10 med registreringsnøgle? (utilgængeligt link) . Hentet 16. oktober 2021. Arkiveret fra originalen 16. oktober 2021. 
  42. Keith Busch. Opdater for at tilføje indbygget driverunderstøttelse i NVM Express i Windows 7 og Windows Server 2008 R2  (engelsk) (pdf). Flash Memory Summit (12. august 2013). Dato for adgang: 15. februar 2016. Arkiveret fra originalen 5. november 2013.
  43. Matias Bjørling; Jens Axboe; David Nellans; Philip Bonnet. Linux Block IO: Introduktion af Multi-queue SSD Access på Multi-core Systems  (eng.) (pdf). IT-Universitetet i København (5. marts 2013). Hentet 15. februar 2016. Arkiveret fra originalen 2. februar 2014.
  44. Werner Fischer. Linux Multi-Queue Block IO Queuing Mechanism (blk-mq  ) . Thomas-Krenn. Dato for adgang: 15. februar 2016. Arkiveret fra originalen 3. marts 2016.
  45. Stephen Bates. At have det sjovt ved kødybde = 1: Hvad næste generation af ikke-flygtig hukommelse (NG-NVM) betyder for PCIe SSD'er og SSD-drivere  ( dødt  link) . PMC-Sierra (12. november 2015). Hentet 15. februar 2016. Arkiveret fra originalen 6. marts 2016.
  46. HMB i DRAM-løse NVMe SSD'er: Deres brug og effekter på ydeevne . Hentet 16. oktober 2021. Arkiveret fra originalen 22. februar 2022.
  47. Linux 4.13 er blevet frigivet den 3. september 2017 . Hentet 16. oktober 2021. Arkiveret fra originalen 29. oktober 2017.
  48. NVM Express enhedsdriver v4.13.1 . Hentet 16. oktober 2021. Arkiveret fra originalen 16. oktober 2021.
  49. ↑ Log af /head/sys/dev/nvme  . FreeBSD kildetræ . FreeBSD-projektet. Dato for adgang: 15. februar 2016. Arkiveret fra originalen 29. maj 2013.
  50. FreeBSD 10.2-RELEASE Release  Notes . FreeBSD-projektet. Dato for adgang: 15. februar 2016. Arkiveret fra originalen 18. juni 2017.
  51. ↑ NVMe kommer til DragonFly - DragonFly BSD Digest  . Hentet 8. september 2016. Arkiveret fra originalen 19. september 2016.
  52. DragonFly BSD 4.6 . Hentet 8. september 2016. Arkiveret fra originalen 4. september 2016.
  53. David Gwynne. ikke-flygtig memory express controller (/sys/dev/ic/nvme.c  ) . BSD Cross Reference (16. april 2014). Dato for adgang: 15. februar 2016. Arkiveret fra originalen 28. april 2014.
  54. 12 NVME (4). NetBSD Kernel Interfaces Manual (downlink) . Hentet 9. september 2016. Arkiveret fra originalen 17. september 2016. 
  55. nvme(7D  ) . Oracle. Dato for adgang: 15. februar 2016. Arkiveret fra originalen 9. december 2015.
  56. Ingen opstart 54077 64 bit NVMe  SSD . Haiku officielle diskussionsfora . Haiku-fællesskabet (28. april 2020). Dato for adgang: 28. april 2020.
  57. ChangeLog/1.6 - QEMU . Hentet 8. juli 2020. Arkiveret fra originalen 17. juli 2020.
  58. Download EDK II fra . sourceforge.net. Dato for adgang: 11. januar 2014. Arkiveret fra originalen 31. december 2013.

Litteratur

  • Rino Micheloni, Alessia Marelli, Kam Eshghi. Inde i Solid State-drev (SSD'er) . - Springer Science & Business Media, 2012. - 382 s. - (Springer Series in Advanced Microelectronics). — ISBN 9789400751453 .

Links