En las primeras computadoras, cada byte de datos leídos o escritos era manejado por la CPU (es decir, no había DMA). ¿Qué implicaciones tiene esto para la multiprogramación?

En realidad, no lo hace, a menos que algún proceso también esté leyendo o escribiendo en periféricos lentos. Lo que hará que todos los demás se ralenticen. Además, al hacer que la CPU principal realice transacciones de nivel de byte impuso una velocidad de datos superior en los periféricos debido a la

  • estado de lectura
  • estado de prueba
  • saltar hacia atrás si no está listo
  • lectura de datos
  • escribir datos
  • cuenta regresiva
  • saltar hacia atrás si no está hecho

Se requiere un bucle de código mínimo (7 instrucciones de máquina, tal vez 14 ciclos de reloj de máquina) para hacer eso (realmente más si desea verificación de error y tiempo de espera) Tan pronto como los periféricos más rápidos (tambores, cintas magnéticas) aparecieron, el soporte de hardware para sus transferencias de datos fue realmente obligatorio. Todavía ralentiza un poco todo lo demás, pero a un costo de quizás 2 ciclos de reloj y sin código por transferencia.

Sin embargo,

Tendría que volver a antes de que hubiera una multiprogramación para encontrar máquinas sin DMA. Entonces no lo llamaron así, por lo general, el dispositivo que manejaba las transacciones de memoria periférica se llamaba controlador de canal. DMA estaba bien establecido por los años 60 al menos; Trabajé en una máquina diseñada en 1964 que lo hizo, y también tenía superposición de código y soporte de multiprogramación (serie Elliott / NCR 4100). El soporte de MP generalmente requiere al menos un hardware de modos operativos Supervisor / Esclavo para minimizar la posibilidad de interferencia de proceso – proceso, y, con las RAM principales más pequeñas del día, administración de superposición de procesos y procesos.

Cuando aparecieron los primeros microordenadores, no todos admitían DMA ni nada parecido a los controladores de canal. No se consideraba que tuvieran aplicaciones de tareas multiprogramación o paralelas (lo cual hice. Y les hice que lo hicieran también). Por ejemplo, la línea Motorola 68HC11 no. Pero tenía un medio ciclo de bus abierto (pin E falso), y era un dispositivo de lógica estática, por lo que pude darle DMA con menos de una máquina de estado EEPROM GAL16V8 que detuvo temporalmente la alimentación y salida del reloj del chip una señal de activación del ciclo DMA cuando un periférico necesita una transferencia (por ejemplo, un puerto de comunicación de datos de alta velocidad). El único inconveniente de esto fue que se equivocó con la sincronización del puerto serie incorporado, lo que lo hace efectivamente inútil. Por el contrario, el Zilog Z80 tenía controles DMA integrados (pines BUSREQ y BUSACK).

Estás equivocado acerca de las “primeras computadoras”. El IBM System 360 (y todos sus sucesores desde su introducción en 1964 hasta el recientemente anunciado z14) ha tenido un procesador dedicado y separado que no hace más que manejar E / S. El motor de procesamiento principal tiene muy poca participación en E / S. La secuencia de instrucciones es básicamente (parafraseada). CPU: “Hola, amigo de E / S, ve a realizar esta operación de E / S por mí”. Avíseme cuando esté hecho “. Subsistema de E / S:” Claro. Me encargaré de eso ”. El tiempo pasa mientras la CPU continúa haciendo otro trabajo. Mientras tanto, el subsistema de E / S (que, por cierto, es capaz de manejar múltiples operaciones de E / S a la vez en nombre de cada motor de CPU en el ‘frame) “lo maneja”. Subsistema de E / S: “Ok hombre, ya está hecho. Puse tus datos donde me lo dijiste. “CPU:” Groovy. Gracias amigo “.