¿El almacenamiento en búfer de la memoria primaria es la única forma de acceder a los dispositivos de E / S y al almacenamiento secundario?

2

No estoy seguro si este es el sitio de intercambio de pila correcto para hacer esta pregunta, lo siento mucho 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 desde la RAM. Lo mismo sucede con los dispositivos de entrada y salida, donde la RAM siempre es un almacén intermedio para todas las transferencias de datos fuera de la memoria primaria. ¿Es este el caso?

    
pregunta mtanti

2 respuestas

3

Dado que este es un sitio de ingeniería eléctrica, intentaré ofrecer 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 a través de LED de lectura humana e interruptores DIP de conjunto humano (por lo tanto, no necesariamente se necesita una CPU). Entonces, surge la pregunta: ¿Cómo es la mejor manera de conectar un dispositivo a la CPU? Podría hacer que el dispositivo busque una dirección específica en el bus de direcciones de la CPU y luego enviaría o recibiría datos solo cuando la CPU lea o escriba en esa dirección. Esto omitiría la memoria RAM por completo, permitiendo 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 no responda a la solicitud generando una colisión de bus. Para evitar eso, puede agregar una línea de E / S especial en la arquitectura de su CPU que se afirma que lee y escribe desde dispositivos y desactiva la RAM. Incluso podría agregar un bus de E / S especial a la arquitectura de la CPU si lo desea.

En realidad, esto era cuántos dispositivos estaban 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. Normalmente, un procesador manipula los datos que se almacenan en los 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 manera permanente, entonces los datos deben transferirse desde la RAM al disco duro. Usando el método que especifiqué anteriormente, la CPU tendría que estar constantemente conectada 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 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 una sección del disco duro y colocarlo en la RAM o viceversa. La CPU entonces sería libre de hacer otras cosas mientras que el HD hizo 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: ¿Existen otras formas de conectar dispositivos? ¡Absolutamente! Pero encontrará 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 una tienda intermedia.

    
respondido por el Dougvj
2

No es necesariamente así; Para los microcontroladores simples, o las computadoras viejas como las populares microcomputadoras de los 80, los periféricos se conectan directamente a los buses de datos y direcciones sin almacenar los datos en la RAM intermedia. Puede haber una línea de decodificación de dirección adicional para distinguir entre la memoria y los periféricos, con instrucciones correspondientes como la entrada / salida de x86.

    
respondido por el pjc50

Lea otras preguntas en las etiquetas