NVM Express (NVMe) o Non-Volatile Memory Host Controller Interface Specification (NVMHCIS) è una specifica aperta di interfacciamento logico ai supporti di memoria non volatile di un computer, solitamente collegati tramite il bus PCI Express. La prima parte del nome, NVM sta per memoria non volatile, che è spesso una memoria flash NAND disponibile in diversi fattori di forma fisica, tra cui unità a stato solido (SSD), schede aggiuntive PCIe e schede M.2, il successore delle schede mSATA. NVM Express, come interfaccia per dispositivi logici, è stata progettata per sfruttare la bassa latenza e il parallelismo interno dei dispositivi di archiviazione a stato solido.[1][2]

Logo NVM Express

Dal punto di vista dell'architettura, la logica della specifica è archiviata ed eseguita fisicamente all'interno dal chip del controller NVMe che si trova fisicamente insieme al supporto di archiviazione, in genere un SSD. Le modifiche alla versione per NVMe, ad esempio da 1.3 a 1.4, sono incorporate nei supporti di archiviazione e non influiscono sui componenti compatibili con PCIe come schede madri e CPU.[3]

Grazie al suo design, NVM Express consente all'hardware e al software host di sfruttare appieno i livelli di parallelismo possibili nei moderni SSD. Di conseguenza, NVM Express riduce l'overhead I/O e apporta vari miglioramenti delle prestazioni rispetto alle precedenti interfacce di dispositivi logici, tra cui lunghe code di comandi multiple e latenza ridotta. I precedenti protocolli di interfaccia come AHCI sono stati sviluppati per l'uso con dischi rigidi (HDD) molto più lenti in cui esiste un ritardo molto lungo (relativo alle operazioni della CPU) tra una richiesta e il trasferimento dei dati, in cui le velocità dei dati sono molto più lente delle velocità della RAM e dove la rotazione del disco e il tempo di ricerca danno origine a ulteriori esigenze di ottimizzazione.

I dispositivi NVM Express sono principalmente disponibili sotto forma di schede di espansione PCI Express di dimensioni standard[4] e come dispositivi con fattore di forma da 2,5 pollici che forniscono un'interfaccia PCI Express a quattro corsie tramite il connettore U.2 (precedentemente noto come SFF- 8639).[5] I dispositivi di archiviazione che utilizzano SATA Express e la specifica M.2 che supportano NVM Express come interfaccia del dispositivo logico sono un caso d'uso popolare per NVMe e sono diventati la forma dominante di archiviazione a stato solido per server, desktop e laptop.[6][7]

Specifiche

modifica

Le specifiche per NVMe rilasciate fino ad oggi includono:

  • 1.0e (gennaio 2013)
  • 1.1b (luglio 2014)
  • 1.2 (novembre 2014)
    • 1.2a (ottobre 2015)
    • 1.2b (giugno 2016)
    • 1.2.1 (giugno 2016)
  • 1.3 (maggio 2017)
    • 1.3a (ottobre 2017)
    • 1.3b (maggio 2018)
    • 1.3c (maggio 2018)
    • 1.3d (marzo 2019)
  • 1.4 (giugno 2019)
    • 1.4a (marzo 2020)
    • 1.4b (settembre 2020)
    • 1.4c (giugno 2021)
  • 2.0 (maggio 2021) [8]
    • 2.0a (luglio 2021)
    • 2.0b (gennaio 2022)
    • 2.0c (ottobre 2022)

Formati fisici

modifica

Esistono molti form factor delle unità a stato solido NVMe, come AIC, U.2, U.3, M.2 ecc.

AIC (scheda aggiuntiva)

modifica
 
Un SSD Intel P3608 per slot PCI Express

Quasi tutte le prime unità a stato solido NVMe sono AIC HHHL (mezza altezza, metà lunghezza) o FHHL (altezza intera, metà lunghezza), con un'interfaccia PCIe 2.0 o 3.0. Una scheda per unità a stato solido HHHL NVMe è facile da inserire in uno slot PCIe di un server.

U.2 (SFF-8639)

modifica
 
Un SSD OCZ Z6300 in formato U.2

U.2, precedentemente noto come SFF-8639, è un'interfaccia per computer per il collegamento di unità a stato solido a un computer. Utilizza fino a quattro corsie PCI Express. I server disponibili possono combinare fino a 48 unità a stato solido U.2 NVMe.[9]

U.3 (SFF-8639 o SFF-TA-1001)

modifica

U.3 è costruito sulla specifica U.2 e utilizza lo stesso connettore SFF-8639. È uno standard "tri-mode", che combina il supporto SAS, SATA e NVMe in un unico controller. U.3 può anche supportare l'hot-swap tra le diverse unità in cui è disponibile il supporto del firmware. Le unità U.3 sono ancora retrocompatibili con U.2, ma le unità U.2 non sono compatibili con gli host U.3.

 
Un SSD Samsung 960 EVO su slot M.2

M.2, precedentemente noto come Next Generation Form Factor ( NGFF), utilizza uno specifico bus per computer con unità a stato solido M.2 NVMe. Le interfacce fornite tramite il connettore M.2 sono PCI Express 3.0 o superiore (fino a quattro linee di bus).

L'Enterprise and Data Center Standard Form Factor o EDSFF e precedentemente noto come Enterprise and Data Center SSD Form Factor è una famiglia di specifiche di dimensioni di SSD per l'uso nei data center sviluppata dal gruppo di lavoro tecnico Small Form Factor Technology Affiliate, che è essa stessa sotto la guida organizzativa della Storage Networking Industry Association.

Supporto dei sistemi operativi

modifica
 
La posizione dei percorsi dati NVMe e di più code interne all'interno di vari livelli dello stack di archiviazione del kernel Linux.[10]
Chrome OS
Il 24 febbraio 2015 è stato aggiunto a Chrome OS il supporto per l'avvio da dispositivi NVM Express.[11][12]
DragonFly BSD
La prima versione di DragonFly BSD con supporto NVMe è la versione 4.6.[13]
FreeBSD
Intel ha sponsorizzato un driver NVM Express per i rami head e stable/9 di FreeBSD.[14][15] I driver nvd(4) e nvme(4) sono inclusi nella configurazione del kernel GENERIC per impostazione predefinita a partire dalla versione 10.2 di FreeBSD nel 2015.[16]
Haiku
Haiku ha ottenuto il supporto per NVMe il 18 aprile 2019.[17]
illumos
illumos ha ricevuto supporto per NVMe il 15 ottobre 2014.[18]
iOS
Con il rilascio di iPhone 6S e 6S Plus, Apple ha introdotto la prima implementazione mobile di NVMe su PCIe negli smartphone.[19] Apple ha seguito queste versioni con il rilascio dell'iPad Pro di prima generazione e dell'iPhone SE di prima generazione che utilizzano anche NVMe su PCIe.[20]
Linux
Intel ha pubblicato un driver NVM Express per Linux il 3 marzo 2011,[21][22] che è stato unito al ramo principale del kernel Linux il 18 gennaio 2012 e rilasciato come parte della versione 3.3 del kernel Linux il 19 marzo 2012.[23] Linux supporta NVMe Host Memory Buffer[24] dalla versione 4.13.1 [25] con una dimensione massima predefinita di 128 MB.[26]
MacOS
Apple ha introdotto il supporto software per NVM Express in Yosemite 10.10.3. L'interfaccia hardware NVMe è stata introdotta nel MacBook e nel MacBook Pro del 2016.[27]
NetBSD
NetBSD ha aggiunto il supporto per NVMe in NetBSD 8.0.[28] L'implementazione è derivata da OpenBSD 6.0.
OpenBSD
Il lavoro di sviluppo necessario per supportare NVMe in OpenBSD è stato avviato nell'aprile 2014 da uno sviluppatore senior precedentemente responsabile del supporto USB 2.0 e AHCI.[29] Il supporto per NVMe è stato abilitato in OpenBSD versione 6.0.[30]
Oracle Solaris
Solaris ha ricevuto il supporto per NVMe in Oracle Solaris 11.2.[31]
Microsoft Windows
Microsoft ha aggiunto il supporto nativo per NVMe a Windows 8.1 e Windows Server 2012 R2[32][33] Negli aggiornamenti sono stati aggiunti driver nativi per Windows 7 e Windows Server 2008 R2.[34] Molti fornitori hanno rilasciato i propri driver Windows anche per i propri dispositivi.
  1. ^ (EN) NVM Express, su nvmexpress.org. URL consultato il 24 gennaio 2017.
    «NVMe is designed from the ground up to deliver high bandwidth and low latency storage access for current and future NVM technologies.»
  2. ^ NVMe, cos'è e come funziona, su IlSoftware.it. URL consultato il 7 luglio 2023.
  3. ^ (EN) NVMe 1.4 Specification Published: Further Optimizing Performance and Reliability, su www.anandtech.com, 14 giugno 2019.
  4. ^ (EN) Drew Riley, Intel SSD DC P3700 800GB and 1.6TB Review: The Future of Storage, su tomshardware.com. URL consultato il 21 novembre 2014.
  5. ^ (EN) Paul Alcorn, SFFWG Renames PCIe SSD SFF-8639 Connector To U.2, su tomshardware.com. URL consultato il 9 giugno 2015.
  6. ^ (EN) Dave Landsman, AHCI and NVMe as Interfaces for SATA Express™ Devices - Overview (PDF), su sata-io.org. URL consultato il 2 ottobre 2013.
  7. ^ (EN) Paul Wassenberg, SATA Express: PCIe Client Storage (PDF), su sata-io.org. URL consultato il 21 novembre 2014.
  8. ^ NVM Express Announces the Rearchitected NVMe 2.0 Library of Specifications, su nvmexpress.org, 3 giugno 2021.
  9. ^ (EN) All-Flash EDSFF and NVMe, su supermicro.com. URL consultato il 22 luglio 2022.
  10. ^ (EN) Linux Storage Stack Diagram, su thomas-krenn.com. URL consultato l'8 giugno 2015.
  11. ^ ChromeOS adds boot support for NVM Express, su nvmexpress.org. URL consultato il 7 luglio 2023.
  12. ^ storage: v2 Add simple NVMe storage driver, su chromium.googlesource.com. URL consultato il 21 marzo 2015.
  13. ^ DragonFly BSD 4.6, su www.dragonflybsd.org. URL consultato il 7 luglio 2023.
  14. ^ Log of /head/sys/dev/nvme, su svnweb.freebsd.org. URL consultato il 16 October 2012.
  15. ^ Log of /stable/9/sys/dev/nvme, su svnweb.freebsd.org. URL consultato il 3 July 2013.
  16. ^ (EN) FreeBSD 10.2-RELEASE Release Notes § Kernel Configuration, su freebsd.org. URL consultato il 5 August 2015.
  17. ^ (EN) NVMe Driver Now Available, su www.haiku-os.org, 16 aprile 2019. URL consultato il 28 luglio 2016.
  18. ^ 4053 Add NVME Driver Support to Illumos, su github.com. URL consultato il 23 maggio 2016.
  19. ^ (EN) iPhone 6s and iPhone 6s Plus Preliminary Results, su AnandTech, 28 settembre 2015. URL consultato il 1º giugno 2016.
  20. ^ (EN) The iPhone SE Review, su AnandTech, 16 maggio 2016.
  21. ^ (EN) Matthew Wilcox, NVM Express driver, su lwn.net, 3 marzo 2011. URL consultato il 5 novembre 2013.
  22. ^ (EN) Keith Busch, Linux NVMe Driver (PDF), su flashmemorysummit.com. URL consultato il 5 novembre 2013.
  23. ^ Linus Torvalds, Merge, su kernel.org, 18 gennaio 2012. URL consultato il 5 novembre 2013.
  24. ^ (EN) Kyusik Kim e Taeseok Kim, HMB in DRAM-less NVMe SSDs: Their usage and effects on performance, in PLOS ONE, vol. 15, n. 3, 2 marzo 2020, pp. e0229645, DOI:10.1371/journal.pone.0229645. URL consultato il 7 luglio 2023.
  25. ^ (EN) Linux 4.13 § 12.2. Storage, su kernelnewbies.org.
  26. ^ index: kernel/git/stable/linux.git, su git.kernel.org.
  27. ^ (EN) Faster 'NVM Express' SSD Interface Arrives on Retina MacBook and OS X 10.10.3, su macrumors.com. URL consultato l'11 April 2015.
  28. ^ (EN) nvme, su NetBSD manual pages. URL consultato il 16 maggio 2021.
  29. ^ David Gwynne, nvme.c, su BSD Cross Reference. URL consultato il 27 aprile 2014.
  30. ^ (EN) David Gwynne, nvme.4, su OpenBSD man page. URL consultato il 7 agosto 2016.
  31. ^ (EN) Device and Network Interfaces: nvme, su docs.oracle.com, Oracle. URL consultato il 2 dicembre 2014.
  32. ^ (EN) Andy Herron, Advancements in Storage and File Systems in Windows 8.1 (PDF), su snia.org, 2013. URL consultato l'11 gennaio 2014.
  33. ^ (EN) Windows 8.1 to support hybrid disks and adds native NVMe driver, su myce.com. URL consultato l'11 gennaio 2014.
  34. ^ (EN) Update to add native driver support in NVM Express in Windows 7 and Windows Server 2008 R2, su support.microsoft.com. URL consultato il 17 novembre 2014.

Voci correlate

modifica

Altri progetti

modifica

Collegamenti esterni

modifica
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
  NODES
3d 1
Association 2
Intern 4
iOS 1
mac 5
macOS 1
Note 3
os 38
server 6
web 2