GUIDA Algoritmo Host Memory Buffer (HMB) per gli SSD NVMe senza DRAM

Liupen

SSD MAN
Utente Èlite
11,482
5,728
Abstract IEEE Access 14/10/2019


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.

1594614072442.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.
Questa tecnologia offre l'opportunità di ottimizzare le prestazioni di I/O in modo conveniente condividendo l'ampia memoria RAM dell'host 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 con una maggiore capacità di memoria.
Sfruttando efficacemente la memoria host come buffer di archiviazione, gli SSD senza DRAM 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, 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. Questo - aggiungo personalmente - mi lascia anche il sospetto che l'host possa prendere per fatte tutte le operazioni di scrittura caricate in RAM, anche quando su ssd nvme ancora non sono state fissate]

1656505773078.png

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 HMB?

attivatore HMB
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:

kim1-2947350-large.gif

L'architettura complessiva dell'HMB-SSD è costituita da tre componenti chiave:
  • l'attivatore HMB (che abbiamo visto sopra)
  • l'allocatore HMB
  • il gestore Fast Write Buffer (FWB)
che sono rappresentati con caselle ombreggiate nella figura

kim2-2947350-small.gif

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.

kim3-2947350-small.gif


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.
 

Liupen

SSD MAN
Utente Èlite
11,482
5,728
Non sempre c'è il passaggio: host-controller ssd-ram di sistema
L'algoritmo prevede di default: host-ram di sistema
laddove vengono scritti dati mediante FWB, sono realmente bufferizzati, sfruttando più memoria e velocità che non la DRAM chip degli SSD DRAM yes.

In pratica per i dati I/0 del sistema operativo avviene sempre. Le scritture/letture "extra" no... li c'è un rallentamento da maggiore per latenza.

Uno schema grossolano di come agisce, può essere questo

1657543851325.png

La latenza (per i dati I/0 solo, ma ovviamente per i sequenziali la latenza c'è e si accumula) in scrittura (1) come per i DRAM yes è un ok già quando entra nella memoria volatile e non dipende dal completamento di (2).
In lettura, dove la latenza metterebbe a terra questo tipo di sistema, invece viene gestita assai velocemente (sempre richieste I/0 appena processate o comunque storaggiate nella sessione attiva) (3) se il dato è ancora in buffer o meglio in cache, allora viene letto direttamente dalla RAM senza che l'SSD venga minimamente questionato (4).

Quindi - nella teoria - questi tipi di SSD nvme sono validi anche per sistemi operativi, meno (rispetto ai DRAM yes) per richiamare dati o applicazioni (o giochi), li la latenza è maggiore (parlando sempre di pochi secondi).
 
Ultima modifica:

hifiman738

Nuovo Utente
1
0
Abstract IEEE Access 14/10/2019


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.

1594614072442.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.
Questa tecnologia offre l'opportunità di ottimizzare le prestazioni di I/O in modo conveniente condividendo l'ampia memoria RAM dell'host 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 con una maggiore capacità di memoria.
Sfruttando efficacemente la memoria host come buffer di archiviazione, gli SSD senza DRAM 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, 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. Questo - aggiungo personalmente - mi lascia anche il sospetto che l'host possa prendere per fatte tutte le operazioni di scrittura caricate in RAM, anche quando su ssd nvme ancora non sono state fissate]


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 HMB?

attivatore HMB
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:

kim1-2947350-large.gif

L'architettura complessiva dell'HMB-SSD è costituita da tre componenti chiave:
  • l'attivatore HMB (che abbiamo visto sopra)
  • l'allocatore HMB
  • il gestore Fast Write Buffer (FWB)
che sono rappresentati con caselle ombreggiate nella figura

kim2-2947350-small.gif

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.

kim3-2947350-small.gif


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.
L'SSD sul quale si installa Windows 11 è meglio averlo con la DRAM senza HMB o senza DRAM con HMB?
 

Liupen

SSD MAN
Utente Èlite
11,482
5,728
L'SSD sul quale si installa Windows 11 è meglio averlo con la DRAM senza HMB o senza DRAM con HMB?

In assoluto sono meglio gli ssd con il chip di memoria DRAM, sia per ssd con OS che senza, proprio perchè averlo tolto porta dei vantaggi dal punto di vista del costo ma non altro.
Gli ssd senza DRAM o DRAM less di tipo SATA sono da evitare.
Gli stessi DRAM less ma NVME sono ormai tutti con l'algoritmo HMB (evita se non ce l'hanno).
Essendo questo tipo di nvme che memorizzano un set di informazioni da usarsi nell'immediato come cache allora il modo più efficace è l'uso di questi ssd nvme come dischi da sistema operativo.
Si è visto che tenendo in cache i dati sono ssd veloci sui dati I/0.

Quindi ricapitolando.

SATA DRAM less: mai
NVMe DRAM less con HMB: si per Windows... SE non ci fosse un nvme con DRAM allo stesso prezzo.
Insomma sono una "seconda scelta" che vale la pena quando si trovano a costi convenientemente più bassi rispetto ai normali nvme.
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,450
11,351
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Scusate quindi un ssd per i dati non vanno bene mi pare di capire?
è il contrario: per i dati vanno bene, sono meglio che i DRAM-less senza neanche l'HMB

invece per il sistema operativo sarebbe meglio un SSD con DRAM-cache a bordo
 
  • Mi piace
Reazioni: Dani_m

Liupen

SSD MAN
Utente Èlite
11,482
5,728
Chiarisco meglio allora.

Si è testato che i nvme con hmb non hanno ripercussioni negative di velocità con sopra un sistema operativo.
Utilizzano la cache ottimamente sulla RAM di sistema per mantenere i dati I/0 che servono.

Usati come secondari o esterni non hanno controindicazioni o ce l'hanno in un solo caso. Usati esterni via USB non allocano memoria cache e stessa cosa se utilizzati con un sistema operativo che non supporta la funzione.
 
  • Mi piace
Reazioni: Dani_m

Dani_m

Nuovo Utente
55
7
Ok quindi nulla, ho visto che alcuni modelle come il wd 550 qui vengono consigliati, ma servirebbe uno come disco principale ed uno esterno usb. Grazie
 
  • Mi piace
Reazioni: Liupen

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili