Calcolo del tempo di lettura del modello di blocco del disco rigido


8

Il mio professore ha pubblicato una diapositiva su come calcolare il recupero dei dati dal disco rigido utilizzando il modello a blocchi. Le specifiche erano:

  • 7200 RPM
  • 5ms SEEK
  • TASSO DI TRASFERIMENTO 80 MB / s
  • MODELLO BLOCCO: dimensione del blocco 4KB

Non capisco come abbia fatto il seguente calcolo o da dove provengano alcuni dei numeri:

5 ms + 1000/240 ms + 0,05 ms = 9,216 ms per leggere il blocco.

Qualcuno può dirmi da dove provengono 1000/240 ms e 0,05ms?

EDIT: SE i numeri fossero completamente sbagliati, come faresti allora?


Vi sono tre componenti. Il tempo di ricerca, il tempo di rotazione dei dati sotto la testina di lettura (ha impiegato metà del tempo di rotazione completo come media) e il tempo di trasferimento.
David Marshall,

In realtà c'è un quarto componente, il "tempo di trasferimento" è in due distinte operazioni non sovrapposte. Innanzitutto c'è la lettura dal piatto al buffer di settore. Quindi c'è un altro trasferimento dal buffer di settore all'host tramite l'interfaccia dell'unità (ad es. SATA). C'è un malinteso diffuso sul fatto che questi due trasferimenti possano avvenire contemporaneamente; loro non possono. I dati del settore devono essere convalidati dopo essere stati letti e prima di essere inviati all'host. @Hennes menziona questo come parte degli oggetti ignorati.
segatura,

Attenzione che i punti più fini del tempo di ricerca sono capiti male da quasi tutti. Il tempo di ricerca non è una funzione lineare ma una curva basata sul numero di cilindri. La ricerca (utilizzando un attuatore a bobina) consiste in una fase di accelerazione e una fase di decelerazione e quando la ricerca è abbastanza lunga, una fase di massima velocità nel mezzo. Un tempo di ricerca medio deve essere ponderato per tenere conto solo di 2 possibili ricerche a corsa piena ma 2 * (NCYL-1) ricerche a traccia singola, 2 * (NCYL-2) ricerche a 2 tracce ... e NCYL "ricerche" di zero volte quando non è necessaria la corsa della testa.
segatura

Risposte:


11

Il disco in questione ha una velocità di trasferimento di 80 MiB / s, o 81920 kiB / s, o 20480 blocchi / s. Qui arrotonderemo a 20.000 blocchi / secondo, poiché questo sembra essere quello che ha fatto il tuo professore. Ciò equivale a 0,05 ms per trasferire un blocco, spiegando l'ultimo termine dell'equazione.

Infine, oltre a cercare il tempo (tempo per spostare la testa del drive sulla traccia), c'è anche la latenza rotazionale del disco stesso da affrontare. A 7200 RPM, nel peggiore dei casi, dobbiamo attendere 1 giro completo, ma in media dobbiamo aspettare una mezza rivoluzione - o 4.166ms (7200 RPM = 120 giri / sec = 8.333ms / giro).

Pertanto, per trasferire un blocco al computer, dobbiamo attendere l'equivalente Seek Time+ Rotational Latency+ Transfer Time:

5 ms + 4.166 ms + 0.05 ms = 9.216 ms

Si noti che per le unità a stato solido, sebbene non vi sia alcuna latenza di rotazione da tenere in considerazione, esiste sicuramente un tempo di ricerca misurabile (per indirizzare effettivamente il contenuto dei settori nella memoria flash) e un tempo di trasferimento (ampiamente limitato dal bus utilizzato per trasferire i dati stessi, ad esempio SATA).

Pertanto, in generale, il tempo di accesso totale per leggere un singolo settore per un'unità è (trascurando il software):

Rotational/Hard Drive:  Seek Time + Rotational Latency + Transfer Time

Solid-State Drive:      Seek Time + Transfer Time

5

Il tempo di ricerca di 5 ms è il tempo in cui il disco rigido sposta la testa nella giusta traccia (e seleziona la testa giusta, qualcosa che richiede anche tempo ma che il tuo prof. Ha ignorato).


Una volta che la testa è sulla strada giusta, deve attendere che il settore giusto passi sotto la testa destra. Ci viene dato che si tratta di un'unità a 7200 giri / min. Questo significa:

  • Nel peggiore dei casi i dati sono appena passati e devono attendere una rotazione completa.
  • Nel migliore dei casi il settore dei dati è appena arrivato. È tutto felice.
  • Nel caso medio , l'unità deve attendere mezza rotazione.

Per ottenere il tempo necessario per una rotazione completa dell'unità su un'unità 7200 RPM:

  • 7200 rotazione al minuto (aka 7200 RPM)
  • O 7200/60 volte al secondo.
  • O 120 volte al secondo.
  • O una singola rotazione prende 1 / 120 ° di secondo.
  • Che è di 8,3 ms

Quindi, una mezza rotazione dovrebbe vorrà metà di quel tempo, 1 / 240 ° di secondo.

1 secondo è 1000 ms

Questo è il vostro 1000 / 240 ms.


Tutto questo è il tempo fino a quando l'unità può iniziare a leggere i dati. Dovrà comunque leggerlo e trasmetterlo all'host.

La lettura dall'unità di solito è molto più veloce del passaggio, quindi mi concentrerò sulla parte più lenta:

I dati sono:

1) 80 MB / s TASSO DI TRASFERIMENTO
2) MODELLO BLOCCO: dimensione del blocco 4KB

  • 80 MiB in un secondo o 80 * 1024 KiB un minuto o 4 * 20 * 1024 KiB / secondo.
  • Dividi per 20480.
  • 4 KB per 1 / 20480 ° di secondo.
  • O 0.488281 ms, che è il tuo ultimo 0,05 ms .


Nota che questa risposta ignora che:

  1. l'unità deve leggere i dati prima di poterli trasmettere, questo renderà leggermente più lento.
  2. Ma non ci sono informazioni su quanto velocemente i dati vengono letti dal piatto. (che è una questione di velocità di rotazione, lunghezza dei dati da leggere, lunghezza dei dati di checksum e gap intersettoriali. (4KiB può essere 8 letture di "Header | data | checksum | gap" o una sola lettura.
  3. Ignora anche che i dati potrebbero essere già presenti nella cache delle unità.
  4. E presuppone che il calcolo del checksum non richieda alcun tempo piatto.

Questa è probabilmente la prima volta che vedo una menzione corretta del tempo di trasferimento del disco che fa una distinzione tra lettura del piatto e trasferimento (dell'interfaccia). Il "checksum" è in realtà un codice di correzione errori (ECC) in grado di rilevare e correggere un breve errore di scoppio.
segatura
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.