Cosa c'è di nuovo?
HWReload

Registrati e partecipa alle attività del forum

WIKI SSD NVME DRAM-LESS con tecnologia HMB

Liupen

Moderatore
Staff
Iscritto dal:
23 Dicembre 2017
Messaggi
533
Host Memory Buffer (HMB) è una caratteristica del protocollo Non-Volatile Memory Express (NVMe), che è l'interfaccia di archiviazione per un tipo di unità a stato solido (SSD).
l'HMB è stato introdotto per la prima volta nella specifica NVMe 1.2.

01-300x116.jpg


L'HMB consente allo storage sottostante di utilizzare una porzione della memoria host (RAM) per memorizzare nella cache le informazioni sulla mappatura degli indirizzi e/o i dati dell'utente, in modo da poter superare la capacità limitata della memoria all'interno dello storage (DRAM).
Questa tecnologia offre l'opportunità di ottimizzare le prestazioni di I/O in modo conveniente condividendo l'ampia memoria RAM dell'host (il Sistema Operativo) con il dispositivo con risorse limitate.

La traduzione degli indirizzi degli SSD diventerà più veloce poiché la tabella di mappatura ha il rapporto di perdita della cache ridotto grazie alla maggiore capacità di memoria.

[Un dispositivo di memorizzazione funziona così: il sistema operativo registra cosa scrive in una tabella logica fatta di coordinate e la trasmette al disco. Il disco scrive realmente su di se il dato e segna in una propria tabella la corrispondenza tra le coordinate logiche e quelle reali su disco. La lettura corrispondente avviene quando il sistema operativo vuole un dato e lo cerca nella tabella logica trasmettendo poi al disco di andare a leggere il dato fisico sulla corrispondenza reale. la tabella di mappatura viene tenuta dal disco in un apposita area dell'hdd o del SSD. In questo modo il dispositivo può essere letto da qualsiasi sistema operativo, anche quando il disco è esterno. Si capisce che più rapido è l'accesso alla tabella di mappatura in un SSD, più reattivo è l'SSD stesso. NDR]

Sfruttando efficacemente la memoria host come buffer di archiviazione, gli SSD senza DRAM, ma con HMB, possono fornire prestazioni paragonabili a quelle dei prodotti contenenti DRAM, pur essendo superiori in termini di costi. Inoltre, quando la funzione HMB è supportata, è possibile accedere direttamente alla memoria host sia dall'host (Sistema Operativo) che dal dispositivo (NVMe), ottenendo così ulteriori vantaggi se utilizzata in modo efficace. Ad esempio, poiché le richieste di I/O dall'host possono essere passate direttamente al controller SSD tramite la memoria condivisa, possono essere elaborate rapidamente, senza il sovraccarico di passare attraverso lo stack di I/O convenzionale.

[Ho sottolineato questa parte perchè potrebbe essere un po la chiave dell'efficienza del HMB. Dice l'autore infatti che le richieste fatte dal sistema operativo (I/O) passano direttamente al controller dalla RAM senza passare dallo slot fisico dell'SSD NVMe. NDR]

02-300x202.jpg


Per realizzare la funzionalità HMB, è necessaria una modifica a più livelli dell'intero processo di archiviazione, che va dal livello di I/O a blocchi nel kernel al livello del controller di archiviazione sottostante; cosa non è banale da implementare.

Come funziona l'algoritmo HMB?

Pur costituendo segreto tecnico dei produttori di SSD, questa tecnologia si basa su 3 diversi elementi che prendono il nome di:

Attivatore HMB

Allocatore HMB

Gestore Fast Write Buffer (FWB)


04-300x258.jpg


L'host (il Sistema Operativo) invia un comando di identificazione al controller, che risponde con un messaggio di risposta che include attributi come Host Memory Buffer Preferred Size (HMPRE) e Host Memory Buffer Minimum Size (HMMIN).
Il controller SSD informa l'host se supporta l'HMB utilizzando questi attributi. In particolare, se il valore di HMPRE non è zero, significa che l'SSD supporta l'HMB. Infine, l'HMB viene attivato quando l'host invia un comando "Set Features" dopo aver allocato uno spazio HMB con una dimensione di HMPRE al controller:

03-300x68.jpg


L' allocatore HMB è responsabile della gestione dello spazio di memoria HMB.
Inizia impostando un determinato spazio di memoria sulla RAM di sistema.
Lo spazio HMB comprende un gruppo di blocchi di memoria fisicamente continui chiamati segmenti, come mostrato in Figura sotto. Ad esempio, se lo spazio allocato per l'HMB è 64 MB, il driver del dispositivo host lo divide in 16 segmenti, in cui ogni segmento è un'area continua di 4 MB. Su richiesta, l'allocatore HMB alloca o rilascia lo spazio di memoria alla granularità del blocco di memoria (cioè 4 KB) all'interno di un segmento.

05-300x160.jpg


Gli indirizzi e le dimensioni di tutti i segmenti vengono acquisiti al momento dell'inizializzazione della memoria tramite l'attivatore HMB che comunica con un sistema host. Una volta ottenute tutte le informazioni necessarie, l'allocatore HMB inizializza lo spazio HMB impostando correttamente le strutture di dati associate. Ad esempio, il blocco di controllo HMB, situato nel primo segmento, mantiene i metadati associati all'intero spazio HMB, come la posizione della tabella dei blocchi di memoria e della tabella del buffer di scrittura veloce (Tabella FTL).



Il gestore Fast Write Buffer (FWB) consente al dispositivo di archiviazione sottostante di sfruttare la memoria lato host come buffer di scrittura. Questo controllo flessibile dell'accesso alla memoria tra diversi livelli astratti va oltre la semplice limitazione delle penalità prestazionali introdotte da una capacità di memoria limitata della memoria e fornisce un breve canale di comunicazione tra due estremità.
Quando si verifica una richiesta di lettura, il gestore FWB esamina prima il buffer di scrittura HMB per verificare se i dati richiesti risiedono in esso. Se la richiesta arriva nel buffer, viene servita dai dati nel buffer; in caso contrario, i dati vengono letti dall'archiviazione sottostante tramite l'interfaccia di archiviazione convenzionale. Al contrario, le richieste di scrittura vengono gestite dal buffer di scrittura HMB senza raggiungere la memoria in tutti i casi. Se la versione precedente dei dati richiesti esiste nel buffer di scrittura HMB, il gestore FWB la sovrascrive; in caso contrario, il gestore FWB alloca uno spazio libero e scrive i dati forniti nello spazio appena allocato nel buffer di scrittura HMB.
La latenza media di I/O e il tempo di esecuzione dei carichi di lavoro sono migliorati in modo significativo. Poiché nello schema FWB vengono bypassati più livelli di stack di I/O, la latenza di I/O diminuisce di conseguenza. Inoltre, poiché il buffer di scrittura HMB riduce intrinsecamente il traffico di I/O di archiviazione servendo molte richieste all'interno di un lato host, le prestazioni dell'SSD possono essere migliorate con un minor numero di richieste.

(Abstract IEEE Access 14/10/2019)
 
Top