Cálculo del tiempo de lectura del modelo de bloque de disco duro

8

Mi profesor publicó una diapositiva sobre cómo calcular la recuperación de datos del disco duro utilizando el modelo de bloque. Las especificaciones fueron:

  • 7200 RPM
  • 5ms BUSCAR
  • 80MB / s TASA DE TRANSFERENCIA
  • MODELO DE BLOQUE: Tamaño de bloque 4KB

No entiendo cómo hizo el siguiente cálculo o de dónde provienen algunos de los números:

5 ms + 1000/240 ms + 0,05 ms = 9,216 ms para leer el bloque.

¿Alguien puede decirme de dónde vinieron 1000/240 ms y 0.05ms?

EDITAR: SI los números fueran completamente incorrectos, ¿cómo harías esto entonces?

tambor
fuente
Hay tres componentes. El tiempo de búsqueda, el tiempo para que los datos giren debajo del cabezal de lectura (ha tomado la mitad del tiempo de rotación completo como promedio) y el tiempo de transferencia.
David Marshall
En realidad, hay un cuarto componente, el "tiempo de transferencia" está en dos operaciones distintas y no superpuestas. Primero está la lectura del plato al búfer del sector. Luego hay otra transferencia desde el búfer de sector al host a través de la interfaz de la unidad (por ejemplo, SATA). Existe una idea errónea generalizada de que estas dos transferencias pueden ocurrir simultáneamente; ellos no pueden. Los datos del sector deben validarse después de haber sido leídos y antes de enviarlos al host. @Hennes menciona esto como parte de los elementos ignorados.
aserrín
Tenga en cuenta que los puntos más finos del tiempo de búsqueda son poco conocidos por casi todos. El tiempo de búsqueda no es una función lineal, sino una curva basada en el número de cilindros. La búsqueda (usando un actuador de bobina móvil) consiste en una fase de aceleración y una fase de desaceleración y cuando la búsqueda es lo suficientemente larga, una fase de velocidad máxima en el medio. Se debe ponderar un tiempo de búsqueda promedio para tener en cuenta solo 2 posibles búsquedas de carrera completa, pero 2 * (NCYL-1) búsquedas de una sola pista, 2 * (NCYL-2) búsquedas de 2 pistas ... y NCYL "busca" de tiempo cero cuando no es necesario viajar por la cabeza.
aserrín

Respuestas:

11

El disco en cuestión tiene una velocidad de transferencia de 80 MiB / s, o 81920 kiB / s, o 20480 bloques / s. Aquí, redondearemos a 20,000 bloques / segundo, ya que esto parece ser lo que hizo su profesor. Esto equivale a 0.05 ms para transferir un bloque, explicando el último término en la ecuación.

Finalmente, además del tiempo de búsqueda (tiempo para mover el cabezal de la unidad a la pista), también hay que lidiar con la latencia rotacional del disco. A 7200 RPM, en el peor de los casos, tenemos que esperar 1 revolución completa, pero en promedio tenemos que esperar media revolución, o 4.166 ms (7200 RPM = 120 rev / seg = 8.333ms / rev).

Por lo tanto, para transferir un bloque a la computadora, debemos esperar el equivalente Seek Time+ Rotational Latency+ Transfer Time:

5 ms + 4.166 ms + 0.05 ms = 9.216 ms

Tenga en cuenta que, para las unidades de estado sólido, si bien no hay una latencia rotacional a tener en cuenta, ciertamente todavía hay un tiempo de búsqueda medible (para abordar realmente el contenido de los sectores en la memoria flash) y el tiempo de transferencia (en gran medida limitado por el bus se utiliza para transferir los datos en sí, por ejemplo, SATA).

Por lo tanto, en general, el tiempo de acceso total para leer un solo sector para una unidad es (descuidar el software):

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

Solid-State Drive:      Seek Time + Transfer Time
Penetración
fuente
5

El tiempo de búsqueda de 5 ms es el tiempo para que el disco duro mueva su cabeza hacia la pista correcta (y seleccione la cabeza correcta, algo que también lleva tiempo pero que su profesor ignora).


Una vez que la cabeza está sobre el camino correcto, debe esperar a que el sector correcto pase por debajo de la cabeza R / W. Se nos dice que es una unidad de 7200 RPM. Eso significa:

  • En el peor de los casos, los datos acaban de pasar y tiene que esperar una rotación completa.
  • En el mejor de los casos, el sector de datos acaba de llegar. Todo es feliz
  • En el caso promedio , la unidad necesita esperar media rotación.

Para obtener el tiempo para una rotación completa de la unidad en una unidad de 7200 RPM:

  • 7200 rotación por minuto (también conocido como 7200 RPM)
  • O 7200/60 veces por segundo.
  • O 120 veces por segundo.
  • O una sola rotación tiene 1 / 120 º de un segundo.
  • Que es 8.3 ms

Así que la mitad de una rotación debe tomará la mitad de ese tiempo, 1 / 240 º de segundo.

1 segundo es 1000 ms

Se trata de sus 1000 / 240 ms.


Todo esto es el tiempo hasta que la unidad puede comenzar a leer los datos. Todavía tendrá que leerlo y pasarlo al host.

Leer desde el disco suele ser mucho más rápido que pasarlo, por lo que me centraré en la parte más lenta:

Los dados son:

1) 80 MB / s TASA DE TRANSFERENCIA
2) MODELO DE BLOQUE: Tamaño de bloque 4KB

  • 80 MiB en un segundo, o 80 * 1024 KiB uno un segundo, o 4 * 20 * 1024 KiB / segundo.
  • Dividir por 20480.
  • 4 KB por 1 / 20,48 mil ésimo de un segundo.
  • O 0.488281 ms, que es su último 0.05 ms .


Tenga en cuenta que esta respuesta ignora que:

  1. la unidad necesita leer los datos antes de poder transmitirlos, esto lo hará un poco más lento.
  2. Pero no hay información sobre qué tan rápido se leen los datos del plato. (que es una cuestión de velocidad de rotación, longitud de los datos a leer, longitud de los datos de suma de verificación y espacios entre sectores. (4KiB puede ser 8 lecturas de "Encabezado | datos | suma de verificación | espacio" o una sola lectura.
  3. También ignora que los datos ya podrían estar presentes en la memoria caché de unidades.
  4. Y supone que el cálculo de la suma de verificación no toma casi nada de tiempo.
Hennes
fuente
Esta es probablemente la primera vez que he visto una mención correcta del tiempo de transferencia de disco que hace una distinción entre la lectura de disco y la transferencia (de interfaz). La "suma de verificación" es realmente un Código de corrección de errores (ECC) que puede detectar y corregir un error de ráfaga corta.
aserrín