Archiviazione, memoria o entrambe?

In attesa del debutto, ecco un quadro su 3D XPoint. Ecco cosa abbiamo appreso dalle ultime presentazioni di Intel e Micron.

Avatar di Tom's Hardware

a cura di Tom's Hardware

Abbiamo visto come 3D XPoint rimuova molta latenza interna associata all'accesso all'archiviazione NAND. La slide Optimized System Interconnect ribadisce il concetto, ma aggiunge al quadro anche la DIMM Intel.

NVM Tread e NVM xfer, che sono rispettivamente i processi di lettura della NAND e il trasferimento dei dati al controller, vengono quasi completamente rimossi all'interno di un SSD 3D XPoint. La nuova interfaccia "non ONFI", inoltre, aiuta a fornire tali prestazioni al controller più velocemente. L'overhead rimanente deriva dal controller ASIC (ECC e altro) e firmware (wear leveling, GC, ecc.). 3D XPoint mitiga di molto questi problemi, ma la piattaforma "link xfer&protocol" (NVMe), il driver, lo stack di archiviazione e il file system sono ancora presenti nel mezzo.

supporto 01 PNG
supporto 02 JPG
supporto 03 PNG
supporto 04 PNG
supporto 05 PNG
supporto 06 PNG
supporto 07 PNG
 

Rimuovere questi ultimi ostacoli sbloccherà le piene capacità di 3D XPoint. La differenza chiave tra accesso alla memoria e all'archiviazione è il modo in cui il sistema accede ai dati. L'accesso all'archiviazione richiede comandi di lettura/scrittura piuttosto lenti che devono passare dal driver e dallo stack per arrivare all'applicazione, mentre la memoria usa comandi load/store che hanno un percorso più veloce verso l'applicazione, eliminando l'ulteriore overhead.

Di solito l'archiviazione semantica richiede interrupt, ma c'è un movimento crescente verso l'uso del polling. Quest'ultimo controlla la presenza di richieste "outstanding" a cadenza regolare, al contrario dell'attesa di un interrupt per avviare il processo. Sono necessari 6,9 microsecondi di tempo dell'OS per emanare e ricevere un interrupt, mentre solo 4,4 microsecondi per il polling. Questa tecnica emergente aumenta le prestazioni con QD bassa, ma impatta nettamente sulla CPU. Intel ha già inserito il polling nel suo SPDK (Storage Performance Development Kit), quindi ci aspettiamo diventi più comune, in particolare con le memorie persistenti. Ci sono anche sviluppi di Linux che fanno il poll solo con la coda attiva, cosa che dovrebbe aiutare l'overhead.

L'ecosistema di supporto

Per accogliere 3D XPoint è necessario sviluppare un ecosistema adeguato. Non sappiamo se Intel userà un approccio NVDIMM, o semplicemente userà le sue DIMM come un rimpiazzo della memoria standard o in ambedue i modi.

I produttori possono usare sia il bus PCIe che gli slot DIMM per usare 3D XPoint sia come memoria che come archiviazione, con lo slot DIMM che rappresenta l'opzione più desiderabile per via dell'interfaccia più veloce. L'in-memory compute ruggisce e l'industria sta già sviluppando tecnologia NVDIMM con DIMM basate su memoria NAND. Le NVDIMM (Non-Volatile DIMM) sono elettricamente e fisicamente DIMM compatibili con le DDR4 che supportano archiviazione o uso come memoria persistente grazie alla memoria NAND. 3D XPoint potrebbe servire allo stesso scopo, offrendo più velocità. L'uso come NVDIMM richiede un po' di manipolazione dello stack attuale, cosa peraltro già ben avviata.

ecosistema 01 PNG

ecosistema 02 PNG

ecosistema 03 PNG

Le NVDIMM sono disponibili in diverse varianti. Alcune usano una memoria non volatile per sostenere la DRAM volatile (NVDIMM-N indirizzabile via byte o blocco), indirizzare la NAND flash (o altre memorie non volatili) come memoria ad accesso a blocchi (NVDIMM-F) o indirizzare sia DRAM che NAND come un pool di memoria combinato sia per la DRAM persistente che l'accesso al blocco (NVDIMM-P).

Diverse aziende stanno lavorando su iniziative software-defined memory (SDM), che sbloccano una nuova ondata di pool di memoria e archiviazione combinati. Plexistor è in prima linea e sta lavorando con Micron. Ci sono anche altre tecniche come Memory1 di Diablo che usano semplicemente la memoria NAND come pool primario.

Microsoft e il supporto NVDIMM-N

Buona parte del lavoro per la programmazione della memoria persistente è in corso, ma le NVDIMM sono già avanti. Windows Server 2016 e una futura build di Windows 10 permettono l'uso di NVMDIMM-N sia come blocco di archiviazione (senza cambiamenti al software) o come volume Direct Access (DAX) per uso byte-addressable, memory-mapped. Microsoft ha persino inserito tale funzionalità in Storage Spaces.

so 01 JPG
so 02 JPG
so 03 JPG
so 04 JPG
so 05 JPG
so 06 JPG

Il sistema operativo elimina la complessità e parla al media sottostante con memoria semantica standard, come load/store e memcopies. Microsoft ha dato una dimostrazione di un SSD NVMe a QD1 rispetto a un dispositivo NVDIMM-N. L'SSD ha raggiunto 14.177 IOPS, mentre NVDIMM ha toccato 179.276 IOPS. Un altro sviluppo interessante è la nuova voce "Storage Class Memory disks" in Gestione Dispositivi, che non vediamo l'ora di vedere sui nostri computer. 

Interconnessione proprietarie alla riscossa

La strategia di Intel per imporre le DIMM Optane è usare 3D XPoint come una memoria proprietaria che offre il beneficio di una maggiore densità. Secondo Intel sono necessarie estensioni proprietarie all'interfaccia DDR4 a causa dei lunghi "valori anomali" o per le risposte ritardate che sono inerenti a ogni supporto di archiviazione non volatile. Ad esempio un comando di lettura o scrittura potrebbe non essere processato nel modo richiesto dall'interfaccia DDR4 in base a un evento ECC.

La specifica DDR4 richiede un numero fisso di cicli di clock per il ritorno dei dati e non ha disposizioni per accettare comandi a latenza variabile. Le estensioni proprietarie DDR4 di Intel copriranno tale necessità. Le DIMM richiederanno il supporto del processore, probabilmente come risultato di qualche aggiustamento all'IMC (Integrated Memory Controller) necessario a ospitare le nuove estensioni.

memoria persistente 01 PNG
memoria persistente 02 PNG
memoria persistente 03 PNG
memoria persistente 04 JPG
memoria persistente 05 JPG
memoria persistente 06 JPG
memoria persistente 07 PNG
memoria persistente 08 PNG
memoria persistente 09 PNG

Il sistema di memoria è un complesso modello a più livelli di cache L1, L2 e L3 e altre cache volatili; assicurarsi che il dato scritto nella memoria persistente sia in una locazione non volatile diventa un requisito critico. Il sistema operativo e le applicazioni devono essere a conoscenza della posizione del dato per poterlo spostare nella posizione corretta.

Il modello di programmazione SNIA Open NVM, sviluppato da più partner industriali e comune a Linux e Windows, ha definito nuove librerie con istruzioni x86 progettate per accelerare l'accesso e assicurare che i dati persistenti siano relegati alla porzione non volatile della gerarchia di memoria - nelle memorie DIMM persistenti. L'insieme di librerie NVM pmem.io di Linux consente l'uso di memorie persistenti memory-mapped, che comunicano con il file system tramite comandi load/store per aumentare le prestazioni con lo stesso supporto di archiviazione (come le NAND) tramite la rimozione di comandi di archiviazione read/write push/get.

Il modello Windows definisce nuove istruzioni di gestione per cache e memoria come CLFLUSHOPT (Optimized Cache Line Flush) e CLWB (Cache Line Write-Back) per sostituire CLFLUSH (Cache-Line Flush). Le istruzioni gestiscono e assicurano il flusso dei dati. Questi approcci software si applicano sia alla NVDIMM persistente che alla DIMM standard persistente.

Stiamo però parlando di un settore che si evolve velocemente. Il comando pcommitt, una volta parte importante della strategia e uno dei primi segnali dell'arrivo delle memorie persistenti, è stato recentemente deprecato. Ci saranno probabilmente ulteriori cambiamenti quando saranno pubblicate le specifiche finali.

I primi indicatori sembrano far intuire che la resistenza di 3D XPoint potrebbe non essere adatta all'uso come puro rimpiazzo della memoria, ma ci sono modi per attenuare il problema della minore resistenza. Le DIMM Optane potrebbero funzionare in molti modi, ad esempio accanto a memorie DDR4 usate come una veloce cache front-end per vasti insiemi di memoria 3D XPoint - gestiti dall'IMC - o persino per DIMM ibride formate da DDR4 e 3D XPoint. Se lo sviluppo delle DIMM Intel ha incontrato qualche intoppo c'è sempre l'opzione di usare la prima generazione di 3D XPoint nello stesso modo delle attuali NVDIMM, in attesa di migliorare resistenza e temperatura.