Un gruppo di ricercatori della North Carolina State University afferma di aver trovato un modo velocizzare la memoria 3D XPoint usata come memoria di sistema. Intel ha recentemente presentato questo concetto nella forma di Optane DC Persistent Memory: si tratta di nuovi moduli di memoria che s'inseriscono nei classici slot DIMM delle DRAM ma, a differenza di quest'ultime, possono archiviare molti più dati e conservarli anche in assenza di energia - da qui il termine "persistente".
Per ora a questa soluzione interessa solamente il mercato dei server, ma in futuro potrebbe arrivare anche sui classici computer. Secondo Yan Solihin, professore di ingegneria elettrica e informatica alla North Carolina State University, anche se la nuova memoria è un concentrato di ottime qualità, non è perfetta: consuma di più e richiede tempi di scrittura più alti rispetto alla DRAM.
Per questo al 45esimo "International Symposium on Computer Architecture" di Los Angeles il suo team si è presentato con un'idea per ridurre la quantità di scritture necessarie, velocizzando di conseguenza la memoria.
Oggi archiviare i dati presenti nella RAM al fine di renderli "persistenti" significa convertirli in una serie di byte per il trasporto verso un SSD o un hard disk, dove poi sono salvati in modo sicuro. Se però la memoria è già di per sé non volatile come l'unità di archiviazione, non c'è necessità di passare da quel processo che richiede molto tempo.
Ciononostante è comunque necessario un processo che impedisca il danneggiamento i registri in caso di crash. Solihin prova a fare un'analogia: poniamo che stiate aggiornando un indirizzo postale. Tale operazione richiederebbe la copia del dato originale dalla memoria alla cache del processore - la velocissima SRAM integrata nel chip. A lavoro concluso, i vari campi vengono inviati dalla cache e archiviati nella memoria non volatile. Se però si presenta un crash dopo che tutti i campi eccetto quello della città sono arrivati alla memoria non volatile? Ciò vi lascerebbe con un registro con dati non validi in caso si riavvio del programma.
Il metodo migliore per impedire il verificarsi di questa situazione è chiamato eager persistency, ma sfortunatamente richiede un sacco di overhead, conteggiato in circa il 9%. Tale overhead include un sacco di scritture sulla memoria non volatile, circa il 21% in più quando le cose vanno alla perfezione. Come noto però le scritture "extra" rappresentano un problema non da poco per le memorie non volatili, che una durata di vita finita misurata proprio in scritture.
Il metodo della NC State, chiamato lazy persistency, funziona diversamente. Durante il normale funzionamento richiede molto poco overhead, ma quando le cose vanno male, richiede un po' più di lavoro per ripristinare il tutto. Poiché però i crash sono molto rari, l'obiettivo è rendere "davvero veloce il funzionamento comune".
Per capire come funziona lazy persistency è necessario sapere in che modo funziona la cache. Solihin usa un'altra analogia, quella di una cintura degli attrezzi e di un furgone. Se dovete fare un lavoro, portate tutti i vostri strumenti in un furgone (memoria principale), ma solo quelli di cui avete espressamente bisogno nella cintura (la cache). Nel caso siano necessari altri strumenti per completare lavori differenti, vi recate al furgone e lasciate gli strumenti meno usati della cintura per scambiarli con ciò che vi serve. In poche parole la cache mantiene i dati usati più di recente e sposta, o espelle, i dati meno usati verso la memoria principale.
Oltre a questa "espulsione naturale", eager persistency ne aggiunge una artificiale ad alta velocità per evitare la perdita di dati in caso crash. Anziché usare lo schema ad alto overhead di eager persistency, lazy persistency lascia semplicemente funzionare l'esistente sistema di cache, contando sul fatto che i dati nella cache saranno alla fine inviati verso la memoria 3D XPoint non volatile.
Leggi anche: Test Intel Optane SSD 900P, semplicemente una scheggia
La differenza è che lazy persistency archivia anche un numero chiamato checksum, una piccola parte di dato che può essere usata per determinare se una porzione più grande è stata cambiata. Nel caso in cui le cose dovessero andare male, il processore calcola i checksum per i dati che possiede ancora e li confronta con il checksum dello stesso dato nella memoria non volatile. Se i due non combaciano, il processore sa che deve tornare indietro e rifare il proprio lavoro.
"Il processo di recupero è più complesso, ma il funzionamento nel caso tradizionale diventa molto più rapido", conclude Solihin. E poiché i crash sono rari, lazy persistency batte in modo netto l'eager persistency. Aggiunge solo l'1% al tempo di esecuzione anziché il 9% dell'eager persistency e richiede solamente il 3% di scritture in più in memoria rispetto al 21%.
Finora il team di Solihin ha dimostrato la propria soluzione su una memoria DRAM ordinaria e in simulazioni della memoria 3D XPoint, perché i moduli di memoria Intel non sono ancora ufficialmente disponibili.
Cerchi un SSD con memoria 3D XPoint dalle prestazioni uniche? Dai un'occhiata all'Optane 900P, campione di velocità e molto utile soprattutto se lavori usando molto l'archiviazione.