Cosa fa la ricerca con l'archiviazione a stato solido?


13

Con l'archiviazione meccanica, il funzionamento a basso livello del disco seek()fa spostare le testine del disco rigido in una posizione in modo che siano pronte per la lettura da una determinata area del disco.

Con l'archiviazione a stato solido, come schede SD, unità flash e SSD, non ci sono parti mobili dell'hardware, solo segnali elettrici.

Supponendo che una tecnologia RAM non volatile NAND sia la base dell'hardware, quale funzione svolge seek()effettivamente a livello hardware per tale dispositivo?

Per essere chiari, so già che succede quanto segue:

  1. Il programma Userspace chiama la seek()chiamata di sistema o l'equivalente specifico del sistema operativo

  2. Il kernel interpreta la chiamata di sistema e invia un messaggio al controller SATA per cercare

  3. Il controller SATA interpreta il comando e dice al dispositivo a disco collegato, che è a stato solido, di cercare (o forse è abbastanza intelligente da riconoscere che è a stato solido e non lo dice nemmeno ??)

  4. Quello che non so è, dispositivo a stato solido fa ??? con il comando di "cercare".

Se ci sono dettagli che dipendono dal sistema operativo, si supponga una versione desktop relativamente standard di GNU / Linux con la versione 3.2 del kernel.


2
Penso che faccia un NOP molto grosso. A parte gli scherzi, se fossi un disco SSD, farei qualche lettura "precauzionale" nella cache, per assicurarmi che le cose accadessero il più rapidamente possibile. Ma poiché questa è solo una vaga ipotesi su qualcosa di cui non ho la minima idea, quindi prendilo con un granello di sale ...
ppeterka

Non credo che le operazioni di "ricerca" vengano più utilizzate nell'interfaccia di archiviazione di basso livello. Se esistessero, cambieranno semplicemente la posizione memorizzata per la successiva operazione I / O.
David Schwartz,

Risposte:


4

se ti riferisci a Linux, cerca continua ad avanzare del numero richiesto di byte. Per esempio:

dd if=/dev/zero of=/dev/sdb bs=512 SEEK=2

Inizierà a copiare zeri 1024 byte all'inizio di un disco, non importa se sdb è una scheda sd o un'unità ssd, a causa di una piccola cosa chiamata astrazione, la meccanica reale di questo è curata a un livello inferiore.

Aggiornare

Vedo quello che stai dicendo ora. Seguendo il mio esempio di scheda SD, la memoria flash utilizza qualcosa chiamato pagine e le pagine hanno dimensioni particolari. quando arriva una ricerca, il sistema operativo invia il comando al controller della scheda SD / scheda per passare a una determinata pagina per la lettura e la scrittura.


Sono consapevole che avanza logicamente nel file , ma a parte l'impatto logico sul file in termini di "blocchi" astratti, l'hardware fa qualcosa di diverso quando gli viene effettivamente chiesto di cercare? È possibile guardare la lseek()chiamata di sistema come esempio specifico, se necessario. So che questa chiamata di sistema non solo fa la ricerca logica, ma fa muovere anche le testine dell'HDD quando si tratta di un disco meccanico, quindi cosa fa l'SSD?
allquixotic,

@allquixotic Ho aggiornato la mia risposta.
MDMoore313,

1
Anche su un disco rigido rotante fisico, il sistema operativo invia un comando (un comando SCSI, un comando ATA / SATA o un comando di archiviazione di massa USB) per guidare per ottenere LBA X. L'host in realtà non finisce per dire all'unità di spostare il testa a qualsiasi livello, il firmware dell'unità lo fa. Se vuoi avere un'idea di cosa fa un firmware SSD in risposta ai comandi di archiviazione, consulta alcune delle specifiche del progetto Jasmine OpenSSD se riesci a trovarle, alcune di queste spiegano le cose a un livello molto basso.
LawrenceC,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.