ZNS SSD: caratteristiche e utilizzo di questo formato di archiviazione

Gli SSD ZNS saranno una realtà in pochissimo tempo. Non sono un tipo diverso di hardware, ma variano nel modo in cui accedono ai dati sui chip di memoria NAND Flash e adottano un metodo più ottimizzato per l'utilizzo della memoria NAND Flash. Quindi comportano cambiamenti nel Flash Controller integrato in ciascuno SSD.

Lo standard SSD ZNS è stato approvato come standard all'interno di NVMe e fa parte della versione 2.0 dello stesso. Implica grandi cambiamenti nel modo in cui accedi e organizzi i dati memorizzati all'interno. Finora si è avuto accesso all'SSD come se fosse un disco rigido convenzionale, il che non è il metodo migliore per questo tipo di memoria.

SSD ZNS

Cos'è un SSD?

Un SSD convenzionale a livello hardware è un insieme di non volatili RAM memorie, nello specifico le memorie NAND Flash, che sono collegate a un controller flash, che funziona come un normale controller di memoria ed è responsabile della gestione delle richieste di accesso alla memoria che hai collegato.

Finora, gli SSD hanno utilizzato lo stesso modo di gestire i propri dati di un disco rigido convenzionale, che non è molto efficiente in termini di durata e modalità di utilizzo delle proprie capacità. Il motivo è che la memoria NAND Flash pur non essendo volatile come quella di un hard disk è più simile alla RAM in termini di accesso ai dati. Ciò che rende migliore adottare un nuovo modo di accedere a questo tipo di memoria che è più avanzato e quindi in linea con le sue capacità.

Lo ZNS è proprio quella forma, vediamo ora le sue caratteristiche.

Che cos'è un SSD ZNS?

Controllore ZNS

Prima di tutto, cosa significa ZNS? Bene, sono l'acronimo di Zoned NameSpaces. Che è un modo di organizzare l'archiviazione su un disco e quindi stiamo parlando del modo in cui i dati vengono archiviati sull'SSD. Nei dischi rigidi ciò che si fa è organizzare le informazioni in pagine, che sono memorizzate in tabelle e queste ultime in directory. Il sistema di paging viene utilizzato per organizzare i dati su un hard disk convenzionale in cui ogni pagina ha uno spazio fisso e specifico.

D'altra parte, in un SSD ZNS ciò che si fa è dividere lo spazio in zone di diverse dimensioni. L'obiettivo è che quando il CPU, le GPU o qualsiasi altro elemento deve scrivere i dati in memoria invece di puntare a un indirizzo di memoria virtuale, ciò che farà è puntare a quell'area. Che sarà stato precedentemente definito in termini di dimensioni. Qual è il suo funzionamento? Semplice, ogni volta che si desidera scrivere sulla memoria flash, viene richiamato il Namespace assegnato a quella zona. Il controller flash scriverà quindi i dati in quella zona e non al di fuori di essa. Lo farà anche in sequenza, per non lasciare spazi morti sul disco e ottimizzarne l'utilizzo.

SSD ZNS

Ciò che si ottiene con questa tecnica è che il controller di memoria flash non deve gestire scritture su indirizzi di memoria casuali e l'uso dello spazio sull'SSD è ottimizzato. La CPU riserva semplicemente una parte delimitata della memoria come area per memorizzare i dati. Quando è necessario accedere a quella zona, il PC dirà al controller di memoria flash che desidera accedere ai dati in quella specifica zona invocando quello specifico Namespace.

Gli SSD ZNS utilizzano ciò che chiamiamo indirizzamento dei blocchi logici, ognuna delle zone è composta da blocchi logici o LBA. Ogni zona può avere un numero qualsiasi di blocchi logici per memorizzare i dati, ma deve avere una dimensione minima di 2 e quando i dati di un blocco logico o LBA sono stati scritti, le informazioni del successivo vengono compilate in sequenza.

Il vantaggio principale è che non crea spazi morti sull'SSD non riservando più memoria del necessario in ogni momento. Questo rende i cicli di scrittura molto più brevi e ci permette anche di prevedere più facilmente la latenza nell'accesso ai dati in quanto è organizzata in sequenza invece di essere distribuita dall'unità.

Macchina a stati su SSD ZNS e comandi

Maquina Estado ZNS

Per supportare i NameSpace delle zone, il controller della memoria flash deve essere in grado di eseguire una serie di istruzioni per gestire correttamente le informazioni e accedere all'SSD. Ecco perché vengono utilizzate una serie di macchine a stati finiti per controllare le informazioni sull'SSD. Le macchine a stati finiti sono codice micro-cablato nell'hardware, in questo caso il controller flash, che, in base alle informazioni di input, indica come deve funzionare con quell'area di memoria flash.

  • Vuoto: i dati possono essere scritti quando non c'è nulla, se viene eseguita una lettura, restituirà i dati predefiniti dal produttore. Il più delle volte spazzatura. Una zona può essere completamente cancellata tramite il comando di reset, questo distrugge l'organizzazione delle diverse zone.
  • Pieno: la zona è piena di dati e non può memorizzare ulteriori informazioni, ma può essere utilizzata in sola lettura.
  • Aperto: permette la lettura e scrittura dei dati nell'attuale LBA attivo della zona. Ogni zona può essere aperta implicitamente o aperta esplicitamente. Il primo si riferisce al fatto che possiamo aprirlo invocando il comando Open del controller flash. La modalità esplicita invece ha la stessa funzione, ma dall'applicazione stessa.
  • Chiuso: quando una zona viene chiusa accetta solo comandi di lettura e non permette l'inserimento di nuovi dati.
  • Fine: non cancella i dati, ma contrassegna la zona come completa. Indipendentemente dal fatto che sia stata originariamente allocata più memoria per l'archiviazione sotto forma di più LBA, non è possibile archiviare più dati in quella zona.

All'inizio di ogni zona, ciò che fa il controller flash è posizionare un'etichetta che ti ricorderà lo stato di quella zona in memoria.