Estructura y Tecnología de Computadores
Módulo E. El subsistema de E/S
Tema 9. Acceso directo a memoria (DMA) y procesadores de E/S
Jose Manuel Mendías Cuadros
Dpto. Arquitectura de Computadores y Automática
Universidad Complutense de Madrid
Contenidos del Acceso Directo a Memoria
Acceso directo a memoria
- Necesidad del DMA. El controlador de DMA. Etapas de una transferencia por DMA. Tipos de
transferencias: por ráfaga y por robo de ciclo.
El controlador de DMA
- Estructura. Registros del DMAC. Señales de control del periférico. Funcionamiento de una
transferencia. Controlador DMA de varios canales.
Ejemplo de Controlador DMA
- Controlador de DMA i82C37.
Procesadores de E/S
- Función. Esquema típico de conexión. Tipos de procesadores de E/S: multiplexor, selector y
multiplexor por bloques. Evolución de los procesadores de E/S.
estructura y tecnología de computadores3
Acceso Directo a Memoria: Necesidad de DMA
X
La E/S con espera de respuesta o por interrupciones resulta inadecuada para periféricos de
alta velocidad, sobre todo si hay que transferir una gran cantidad de datos
x
Ejemplo periférico lento
- Procesador a 200 MHz (tiempo ciclo = 5 ns .; Ciclo medio por instrucción: CPI = 2 ciclos
Una instrucción tarda en promedio 2 x 5 ns = 10 ns = el computador puede ejecutar ~100 MIPS
- Queremos imprimir un fichero de 10 Kbytes en una impresora laser de 20 páginas por minuto
- 1 página £ 3.000 caracteres (1 carácter = 1 byte)
La impresora imprime 60.000 caracteres por minuto = 1 Kbyte/s
E/S con espera de respuesta
- La CPU entra en un bucle y envía un nuevo byte cada vez que la impresora está preparado para recibirlo
La impresora tarda 10 s en imprimir 10 Kbyte
La CPU está ocupada con la operación de E/S durante 10 s
(en ese tiempo la CPU podría haber ejecutado 1000 millones de instrucciones)
E/S por interrupciones
- La impresora genera una interrupción cada vez que está preparada para recibir un nuevo byte
Suponemos que la RTI tiene 10 instrucciones (salvar contexto, comprobar estado, transferir byte, restaurar contexto, RTE)
Para transferir 10 Kbyte tenemos que ejecutar 10.000 veces la RTI
= hay ejecutar 100.000 instrucciones para atender al periférico = la CPU tarda 0,001 s
La CPU está ocupada con la operación de E/S durante 0,001 s
Conclusión de E/S
- La E/S por interrupciones reduce en 10.000 veces el tiempo que la CPU está ocupada gestionando la impresora
estructura y tecnología de computadores
4
Necesidad de DMA (cont.)
X
Ejemplo periférico rápido
- Procesador a 200 MHz (tiempo ciclo = 5 ns .; Ciclo medio por instrucción: CPI = 2 ciclos
- Una instrucción tarda en promedio 2 x 5 ns = 10 ns = el computador puede ejecutar ~100 MIPS
- Disco con velocidad de transferencia de 10 Mbytes/s (1 byte cada 2*107 seg)
- Queremos transferir un fichero de memoria a disco de 10 Mbytes
E/S con espera de respuesta en periférico rápido
- La CPU entra en un bucle y envía un nuevo byte cada vez que el disco está preparado para recibirlo
El disco tarda 1 seg en recibir un fichero de 10 Mbyte
La CPU está ocupada con la operación de E/S durante 1 s
(en ese tiempo la CPU podría haber ejecutado 200 millones de instrucciones)
E/S por interrupciones en periférico rápido
- El disco genera una interrupción cada vez que está preparado para recibir un nuevo byte
- Suponemos que la RTI tiene 10 instrucciones (salvar contexto, comprobar estado, transferir byte, restaurar contexto, RTE)
Para transferir 10 Mbytes tenemos que ejecutar 107 veces la RTI
= hay ejecutar 100 millones de instrucciones para atender al periférico = la CPU tarda 1 s
La CPU está ocupada con la operación de E/S durante 1 s
Conclusión de E/S en periférico rápido
- La E/S por interrupciones no mejora el tiempo que la CPU está ocupada en atender al periférico
La técnica de DMA permite la transferencia de datos entre un periférico y la memoria
sin intervención de la CPU (salvo en la fase de inicialización de los parámetros de la transferencia)
estructura y tecnología de computadores5
El controlador de DMA (DMAC)
[X> El controlador de DMA es un dispositivo capaz de controlar una transferencia de datos entre un periférico
y memoria sin intervencion de la CPU
CPU
Memoria
DMAC
E/S
Bus Datos
Bus Direcciones
..
Bus Control
EI DMAC debe actuar como master del bus durante la transferencia DMA y debe ser capaz de
- Solicitar el uso del bus mediante las señales y la lógica de arbitraje necesarias
- Especificar la dirección de memoria sobre la que se realiza la transferencia
- Generar las señales de control del bus
Tipo de operación (lectura/escritura)
Señales de sincronización de la transferencia
estructura y tecnología de computadores
6
Etapas de una transferencia por DMA
[X> Inicialización de la transferencia
- La CPU debe enviar al interfaz del periférico y al DMAC los parámetros de la transferencia
Inicialización del interfaz (Bus master: CPU - Bus slave: Interfaz )
Nº de bytes a transferir
Tipo de transferencia (lectura/escritura)
Otra información de control (pista, sector, etc.)
Inicialización del controlador DMA (Bus master: CPU - Bus slave: DMAC)
Nº de bytes o palabras a transferir
Tipo de transferencia (lectura/escritura)
Dirección de memoria inicial para la transferencia
Nº de canal (para DMAs con varios canales)
- Después de la inicialización la CPU retorna a sus tareas y ya no se preocupa más de la evolución de la transferencia
X
Realización de la transferencia
- Cuando el periférico está listo para realizar la transferencia se lo indica al DMAC
- EI DMAC pide el control del bus y se realiza la transferencia entre el periférico y la memoria
Bus master: DMAC + Periferico - Bus slave: Memoria
Después de la transferencia de cada palabra se actualizan los registros del DMA
Nº de bytes o palabras a transferir
v Dirección de memoria
X
Finalización de la transferencia
- EI DMAC libera el bus y devuelve el control a la CPU
- EI DMAC suele activar una señal de interrupción para indicar a la CPU la finalización de la
operación de E/S solicitada
estructura y tecnología de computadores7
Tipos de transferencias DMA
x Problema que puede presentar el DMA
- Puede degradar el rendimiento de la CPU si el DMAC hace uso intensivo del bus
Si el bus está ocupado en una transferencia DMA, la CPU no puede acceder a la memoria para leer instruc.
- Este problema se reduce con el uso de memoria cache
La mayor parte del tiempo, la CPU lee instruc. de la cache, por lo que no necesita usar el bus de memoria
EI DMAC puede aprovechar estos intervalos en los que la CPU está leyendo instrucciones de la cache (y por
tanto no usa el bus de memoria) para realizar las transferencias
- En caso de computadores sin cache
El procesador no utiliza el bus en todas las fases de la ejecución de una instrucción
El DMAC puede aprovechar las fases de ejecución de una instrucción en las que la CPU no utiliza el bus para
realizar sus transferencias
acceso de CPU
a memoria o E/S
USO DEL BUS
Lectura de
instrucción
Lectura de
operando
Escritura de
resultado
operación
interna a la CPU
NO USO DEL BUS
Cálculo de EA
de instrucción
Decodificación
de instrucción
Cálculo de EA
de operando
Operación
Calculo de EA
de resultado
X
Conclusión
- Si el DMAC sólo toma el control del bus durante los intervalos de tiempo en los que la CPU no hace
uso del mismo = el rendimiento del sistema no sufrirá degradación alguna
- Se distinguen, por tanto, dos tipos de transferencias
- Por ráfagas (burst)
- Por robo de ciclo (cycle-stealing)
estructura y tecnología de computadores
8
Tipos de transferencias (cont.)
Transferencia DMA modo ráfaga
- EI DMAC solicita el control del bus a la CPU
- Cuando la CPU concede el bus el DMAC no lo libera hasta haber finalizado la transferencia de todo
el bloque de datos completo
- VENTAJAS:
La transferencia se realiza de forma rápida
- DESVENTAJAS:
Durante el tiempo que dura la transferencia la CPU no puede utilizar el bus con memoria, lo que puede
degradar el rendimiento del sistema
Transferencia DMA modo robo de ciclo
- EI DMAC solicita el control del bus a la CPU
- Cuando la CPU concede el bus al DMAC, se realiza la transferencia de una única palabra y
despues el DMAC libera el bus
- EI DMAC vuelve a solicitar el control del bus tantas veces como sea necesario hasta haber
finalizado la transferencia del bloque completo
- La CPU cede el control del bus durante los ciclos que hace uso del mismo
- VENTAJAS:
No se degrada el rendimiento del sistema
- DESVENTAJAS:
La transferencia tarda más tiempo en llevarse a cabo
estructura y tecnología de computadores
Estructura hardware de un DMAC
CPU
Datos
Bus datos
Direcciones
Bus direcc.
INTR*
Sincroniz.
Bus control
Arbitraje
R/W*
DMAC
Reg. dir. memoria
Lógica de
descodific.
4
Reg. Nº palabras
E/S
Memoria
y control
Reg. sentido
DMA-REQ
DMA-ACK
R/W*10
Registros del DMAC
- Reg. dir. memoria: almacena la dir. inicial de memoria y se incrementa/decrementa después de transferir cada palabra
- Reg. Nº palabras: almacena el número de palabras a transferir y se decrementa después de transferir cada palabra
- Reg. sentido: almacena el sentido de la transferencia (lectura o escritura)
estructura y tecnología de computadores
10
Señales de control del periférico
×
DMA-REQ: solicitud de servicio DMA
- La activa el periférico para indicar al DMAC que está listo para transmitir/recibir
X
DMA-ACK: Concesion del servicio DMA
- La activa el DMAC para indicar al periférico que puede realizar la transferencia
- Antes de activar esta señal el DMAC debe estar en posesión del bus
R/W *- IO: Sentido de la transferencia para el periférico
- El periférico no puede utilizar la misma señal de R/W* que la memoria, ya que la transferencia tiene sentidos
opuestos desde el punto de vista de uno y otro dispositivo
- Operación DMA de lectura (memoria - periférico )
Para la memoria es una lectura: R/W* = 1
Para el periférico es una escritura: R/W *- IO = 0
- Operación DMA de escritura (periférico -+ memoria )
Para la memoria es una escritura: R/W* = 0
Para el periférico es una lectura: R/W *- IO = 1
Esquema de conexión de R/W* y R/W *- IO
R/W*
DMA-ACK R/W*
R/W *- 10
Operación de E/S normal
CPU
0
0
0
R/W
0
1
1
Operación de E/S
DMA
DMA-ACK
DMA-REQ
E/S
Mem.
1
1
0
controlada por DMA
R/W *- 10 = NOT (R/W*)
estructura y tecnología de computadores
1
0
1
(controlada por la CPU)
R/W *- 10 = R/W*
R/W *- IQ