Interfaz de unidades de disco

Interfaz de unidades de disco

A menudo se dice que la interfaz de la unidad de disco es un cuello de botella en la transferencia de datos. P.ej. en el caso de los discos duros, los datos se transfieren desde el búfer del disco duro al módulo de memoria del disco duro. Y dado que el búfer del disco duro es una memoria caché, ¿por qué la interfaz es entonces un cuello de botella? Quiero decir, el caché es un tipo de sram. Por tanto, la velocidad de transferencia debe ser alta. ¿Por qué no es así?

Respuesta1

Los discos duros y SSD suelen utilizar una conexión serie hoy en día, pero históricamente utilizaban la interfaz IDE. IDE era básicamente una versión simplificada del bus ISA que utilizaban las primeras PC. En dichas computadoras, puede acceder directamente a los registros del dispositivo como sugiere. Pero cuando apareció PCI, era más rápido, por lo que las unidades IDE más antiguas eran demasiado lentas para el acceso directo. Las revisiones posteriores de IDE (o más bien ATA, como se le cambió el nombre) aumentaron la velocidad (aunque no el ancho: PCI tenía 32 bits de ancho pero ATA se mantuvo en 16 bits), pero la velocidad del procesador siguió aumentando y ni PCI ni ATA pudieron seguir el ritmo.

Finalmente cambiamos de la interfaz paralela de ATA a una interfaz en serie. Esto hace que la conexión al procesador sea menos directa, pero las interfaces serie pueden funcionar mucho más rápido, por lo que están mucho más cerca de funcionar a máxima velocidad, pero aún así introduce latencia y es más lenta que la RAM rápida.

Las antiguas unidades ATA de alta velocidad solían utilizar memoria de 70 u 80 ns, que funcionaba a velocidades similares a las del bus. La memoria moderna es más rápida, pero no tanto como lo es el autobús. Me imagino que las unidades modernas han pasado de los procesadores de 16 bits que solían utilizar a tamaños de bus más amplios para aumentar el rendimiento.

Respuesta2

Y dado que el búfer del disco duro es una memoria caché, ¿por qué la interfaz es entonces un cuello de botella?

Los búferes agregan latencia (más tiempo por solicitud) porque es necesario verificar el contenido del búfer/caché. Entonces, ¿por qué los tenemos? Debido a que generalmente los datos son lineales, lo más probable es que cuando se verifique el búfer la próxima vez, ya estará en el búfer y no será necesario verificar el disco.

El otro problema es

Quiero decir, el caché es un tipo de sram. Por tanto, la velocidad de transferencia debe ser alta. ¿Por qué no es así?

Si los datos se cargan desde el búfer/caché, entonces es rápido. Esto sólo sucede si los datos ya están ahí. Si los datos no están en el caché, van al disco y eso es más lento. Si los datos se leen continuamente, lo más probable es que no estén en el caché, ya que los cachés son pequeños en comparación con el disco.

información relacionada