Buffer su disco

Read-ahead/lettura behindEdit

Quando un controller del disco esegue una lettura fisica, l’attuatore si sposta la testina di lettura/scrittura (o vicino a) la corretta cilindro, dopo qualche assestamento e possibilmente fine di azionamento la testa comincia a raccogliere i dati di traccia, e tutto è rimasto da fare è attendere piatto di rotazione porta i dati richiesti.

I dati letti prima della richiesta durante questa attesa non sono richiesti ma gratuiti, quindi in genere vengono salvati nel buffer del disco nel caso in cui venga richiesto in seguito.

Allo stesso modo, i dati possono essere letti gratuitamente dietro quello richiesto se la testa può rimanere in pista perché non c’è altra lettura da eseguire o l’azionamento successivo può iniziare più tardi e ancora completare in tempo.

Se più letture richieste si trovano sulla stessa traccia (o nelle vicinanze su una traccia a spirale), la maggior parte dei dati non richiesti tra di loro saranno letti sia avanti che dietro.

Speed matchingEdit

La velocità dell’interfaccia I/O del disco al computer non corrisponde quasi mai alla velocità con cui i bit vengono trasferiti da e verso il piatto del disco rigido. Il buffer del disco viene utilizzato in modo che sia l’interfaccia I/O che la testina di lettura/scrittura del disco possano funzionare a piena velocità.

Write accelerationEdit

Il microcontrollore incorporato del disco può segnalare al computer principale che una scrittura del disco è completa immediatamente dopo aver ricevuto i dati di scrittura, prima che i dati vengano effettivamente scritti sul piatto. Questo segnale iniziale consente al computer principale di continuare a lavorare anche se i dati non sono ancora stati scritti. Questo può essere un po ‘ pericoloso, perché se l’alimentazione viene persa prima che i dati vengano fissati permanentemente nel supporto magnetico, i dati verranno persi dal buffer del disco e il file system sul disco potrebbe essere lasciato in uno stato incoerente.

Su alcuni dischi, questo periodo vulnerabile tra la segnalazione della scrittura completa e la correzione dei dati può essere arbitrariamente lungo, poiché la scrittura può essere differita indefinitamente dalle richieste appena arrivate. Per questo motivo, l’uso dell’accelerazione di scrittura può essere controverso. La coerenza può essere mantenuta, tuttavia, utilizzando un sistema di memoria a batteria per la memorizzazione nella cache dei dati, anche se questo si trova in genere solo nei controller RAID di fascia alta.

In alternativa, la memorizzazione nella cache può essere semplicemente disattivata quando l’integrità dei dati è ritenuta più importante delle prestazioni di scrittura. Un’altra opzione è quella di inviare i dati su disco in un ordine gestito con cura e di emettere comandi “cache flush” nei posti giusti, che di solito viene indicato come l’implementazione di barriere di scrittura.

Command queuingEdit

I dischi SATA più recenti e la maggior parte dei dischi SCSI possono accettare più comandi mentre un comando è in funzione tramite “command queuing” (vedere NCQ e TCQ). Questi comandi vengono memorizzati dal controller incorporato del disco fino al completamento. Un vantaggio è che i comandi possono essere riordinati per essere elaborati in modo più efficiente, in modo che i comandi che interessano la stessa area di un disco siano raggruppati insieme. Se una lettura fa riferimento ai dati alla destinazione di una scrittura in coda, i dati da scrivere verranno restituiti.

NCQ viene solitamente utilizzato in combinazione con il buffer di scrittura abilitato. Nel caso di un comando FPDMA in lettura/scrittura con bit FUA (Force Unit Access) impostato su 0 e abilitato il buffer di scrittura, un sistema operativo potrebbe vedere l’operazione di scrittura terminata prima che i dati vengano scritti fisicamente sul supporto. In caso di bit FUA impostato su 1 e abilitato il buffer di scrittura, l’operazione di scrittura ritorna solo dopo che i dati sono stati scritti fisicamente sul supporto.



+