No estoy seguro de si este es el sitio de intercambio de pila correcto para hacer esta pregunta, lo siento si no lo es. Si alguien puede citar un buen libro que explique la arquitectura de la computadora en general (no para una computadora específica), sería útil.
La pregunta es si la CPU accede a un disco duro transfiriendo primero un bloque de datos del disco duro a la RAM y luego la CPU lo lee de la RAM. Lo mismo sucede con los dispositivos de entrada y salida, donde la memoria RAM siempre es un almacén intermediario para todas las transferencias de datos fuera de la memoria primaria. ¿Es este el caso?
Dado que este es un sitio de ingeniería eléctrica, intentaré dar una perspectiva de nivel inferior.
Cualquier dispositivo, como un controlador de disco duro, debe tener alguna forma de transferir datos. Esto podría ser un bus de datos paralelo o uno en serie, podría ser a través de ondas de radio o incluso podría ser a través de LED de lectura humana e interruptores DIP establecidos por humanos (por lo tanto, no necesariamente necesita una CPU en absoluto). Entonces, surge la pregunta: ¿Cuál es la mejor manera de conectar un dispositivo a la CPU? Puede hacer que el dispositivo busque una dirección específica en el bus de direcciones de la CPU y luego envíe o reciba datos solo cuando la CPU lea o escriba en esa dirección. Esto omitiría la RAM por completo, lo que permitiría que la CPU copie los datos directamente desde el dispositivo a un registro del procesador. Por supuesto, en su arquitectura tendría que asegurarse de que no haya conflicto y que la RAM tampoco responda a la solicitud generando una colisión de bus. Para evitar eso, podría agregar una línea IO especial en la arquitectura de su CPU que se afirma para leer y escribir desde dispositivos y deshabilita la RAM. Incluso podría agregar un bus IO especial a la arquitectura de la CPU si lo desea.
Esta fue en realidad la cantidad de dispositivos conectados a la CPU en los primeros días (es decir, en los años 70 y 80). Considere, sin embargo, un disco duro y su uso típico. Por lo general, un procesador manipula datos que se almacenan en registros, pero los registros no son muy grandes, por lo que para grandes cantidades de datos, la RAM se utiliza como un lugar de alta velocidad para almacenar datos. El disco duro sería demasiado lento para tal uso. Sin embargo, si estos datos deben almacenarse de forma permanente, deben transferirse desde la RAM al disco duro. Usando el método que especifiqué anteriormente, la CPU tendría que estar constantemente ocupada transfiriendo byte por byte los datos que desea almacenar en el disco duro. Esto resultó ser bastante doloroso en los primeros días, por lo que se creó un mecanismo llamado Acceso directo a la memoria (DMA) para permitir que los dispositivos lean y escriban directamente desde la RAM. La CPU podría simplemente enviar un comando al controlador del disco duro, por ejemplo, para leer alguna sección del disco duro y ponerla en RAM o viceversa. La CPU entonces sería libre para hacer otras cosas mientras la HD hacía su trabajo. La transferencia también fue mucho más rápida que el antiguo método basado en CPU.
Entonces, para responder a su pregunta: ¿Hay otras formas de conectar dispositivos? ¡Absolutamente! Pero descubrirá que la forma más rápida de transferir grandes cantidades de datos desde un dispositivo no es a través del procesador, sino directamente desde el dispositivo a la RAM, por lo que la mayoría de los dispositivos modernos utilizan la RAM como almacén intermediario.
No es necesariamente así; para microcontroladores simples o computadoras antiguas como las populares microcomputadoras de los años 80, los periféricos se conectan directamente a los buses de dirección y datos sin almacenar los datos en la memoria RAM intermedia. Puede haber una línea de decodificación de dirección adicional para distinguir entre la memoria y los periféricos, con las instrucciones correspondientes como IN/OUT de x86.
olin lathrop
mtanti