Módulo I
El sistema de entrada/salida
Oliverio J. Santana Jaria
Periféricos e Interfaces
Ingeniería en Informática
Curso 2009 – 2010
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
2
Componentes de un computador

Los componentes de un computador son:
 Unidad Central de Proceso (CPU – Procesador)
▫ Procesa los datos
▫ Controla el funcionamiento del computador
 Memoria
▫ Almacenamiento de datos
 Entrada/Salida
▫ Transfiere datos entre el computador
y el entorno externo
 Sistema de interconexión
▫ Proporciona la comunicación necesaria
entre los tres componentes anteriores
[STALLINGS 1.2]
3
Interacción entre los componentes

El procesador
controla el
computador
 Registros de
dirección:
indican donde
leer/escribir
 Registros de
almacenamiento
temporal
[STALLINGS 3.1]
4
Interacción entre los componentes

La memoria es
un conjunto de
posiciones
secuenciales
 Instrucciones
 Datos
[STALLINGS 3.1]
5
Interacción entre los componentes

La entrada/salida
gestiona las
transferencias
con el exterior
 A/desde el
procesador
 A/desde memoria
 Utiliza registros
internos para
almacenamiento
temporal
[STALLINGS 3.1]
6
Importancia de la entrada/salida
[PATTERSON 8.1]
7
Periféricos e interfaces

Un periférico es un dispositivo físico que permite
al computador interactuar con su entorno
 Adquirir información del exterior
 Proporcionar información al exterior
 Transformar información del formato
interno al formato externo y/o viceversa

Una interfaz es una conexión entre dispositivos
que permite la interacción entre ellos
8
Clasificación de los periféricos

Las características principales que nos permiten
clasificar los periféricos son:
 Comportamiento
▫ Entrada (lectura)
▫ Salida (escritura)
▫ Almacenamiento
 Interlocutor: ¿quién está al otro lado de la comunicación?
▫ Humano
▫ Máquina
 Velocidad: ¿cómo de rápido se transmiten los datos?
[PATTERSON 8.3]
9
Clasificación de los periféricos
[PATTERSON 8.3]
10
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
11
Controladores de entrada/salida

Los periféricos no pueden conectarse
directamente al computador
 Hay muchos periféricos con funcionamientos distintos, no
puede incorporarse lógica al procesador para que sepa como
interactuar con todos ellos
 La velocidad de los periféricos suele ser diferente
a la velocidad de la memoria o del procesador
 El formato de los datos usado por los periféricos
suele ser diferente al usado por el computador
[STALLINGS 7.0]
12
Controladores de entrada/salida

Un controlador de E/S es un módulo que implementa
la interfaz de los periféricos con el procesador y la
memoria
control
dirección
Procesador
dato
controlador E/S
…
Memoria
periférico
[STALLINGS 7.0]
controlador E/S
periférico
13
Controladores de entrada/salida

El principal objetivo de un controlador de E/S
es establecer una abstracción
 Simplificar la visión que el computador
tiene de los periféricos
 Ocultar detalles físicos, de formato, de temporización…
control
dirección
Procesador
dato
controlador E/S
…
Memoria
periférico
[STALLINGS 7.0]
controlador E/S
periférico
14
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
15
Funciones de un controlador

Control y temporización: coordinar el tráfico entre los
recursos internos y los dispositivos externos
Ejemplo: transferencia de datos de un dispositivo al procesador
solicitud
solicitud
reconocimiento
reconocimiento
procesador
[STALLINGS 7.2]
controlador
periférico
dato
dato
reconocimiento
reconocimiento
16
Funciones de un controlador

Almacenamiento temporal de datos: compensar
la diferencia de velocidad en las transferencias
 Si los datos llegan con demasiada rapidez se
almacenan y se van procesando al ritmo adecuado
 Si los datos llegan con demasiada lentitud se van
almacenando y se procesan cuando hay suficientes

Detección de errores
 Defectos mecánicos o eléctricos
 Errores de transmisión
[STALLINGS 7.2]
17
Funciones de un controlador

Comunicación con el procesador





Decodificar órdenes provenientes del procesador
Intercambiar datos
Comunicar información de estado y condiciones de error
Reconocimiento de una dirección como correspondiente
a uno de los periféricos bajo control
Comunicación con el dispositivo:
intercambio de señales de control, estado y datos
[STALLINGS 7.2]
18
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
19
Interconexión con los controladores

Desde el punto de vista del procesador, la
entrada/salida funciona igual que la memoria
 Operaciones de lectura
 Operaciones de escritura

Un controlador de E/S
tiene dos interfaces
 Con el procesador y
la memoria
 Con los periféricos
[STALLINGS 3.3] [STALLINGS 7.1]
20
Interconexión con los controladores

Las conexiones entre el procesador, la memoria y los
controladores E/S reciben usualmente el nombre de bus
 Líneas de control
 Líneas de dirección
 Líneas de datos
[STALLINGS 3.3] [STALLINGS 7.1]
21
Estructura de un controlador de E/S

Registro de datos
 Almacena los datos que se envían/reciben
[STALLINGS 7.2]
22
Estructura de un controlador de E/S

Registro de estado
 Proporciona información del estado actual
 Puede funcionar como un registro de control para almacenar
la información de control transmitida por el procesador
[STALLINGS 7.2]
23
Estructura de un controlador de E/S

Lógica de entrada/salida
 Interactúa con el procesador por medio de líneas de control
por las que recibe órdenes del procesador pero que también
puede usar para solicitar recursos (acceso al bus…)
 Reconoce y genera los identificadores asociados con cada
dispositivo que controla
[STALLINGS 7.2]
24
Estructura de un controlador de E/S

Lógica específica de interfaz con cada
dispositivo gestionado
[STALLINGS 7.2]
25
Estructura de un periférico

Lógica de control: maneja el periférico en función
de las indicaciones del controlador de E/S
[STALLINGS 7.1]
26
Estructura de un periférico

Transductor: convierte señales digitales a otra
forma de energía (salida) o viceversa (entrada)
 Un buffer permite el almacenamiento temporal de las señales
 Hay gran variedad de interfaces entre el periférico
y el exterior (teclado, monitor, ratón…)
[STALLINGS 7.1]
27
Interfaz controlador de E/S – periférico

La interfaz puede ser serie o paralela
 Serie: sólo hay una línea
de conexión, los bits se
transmiten de uno en uno
 Paralela: hay varias líneas
de conexión, lo que permite
transmitir varios bits de forma
simultánea
 Tradicionalmente se asocian las interfaces paralelas con
dispositivos de alta velocidad (cinta, disco…) y las interfaces
serie con dispositivos más lentos (impresoras, terminales…)
 Hoy en día, las interfaces serie de alta velocidad hacen que
las paralelas sean cada vez menos frecuentes
[STALLINGS 7.7]
28
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
29
Técnicas para las operaciones de E/S

E/S programada
 Los datos se intercambian entre el procesador y el controlador
 El procesador envía una orden y espera a que la operación
termine ejecutando un programa que controla la operación
(lectura, escritura, comprobación de estado…)
[STALLINGS 7.3] [STALLINGS 7.4] [STALLINGS 7.5]
30
Técnicas para las operaciones de E/S

Desventajas de la E/S programada
 Consume tiempo: el procesador debe dedicar parte
de su tiempo a gestionar las operaciones de E/S
 Mantiene al procesador innecesariamente ocupado:
si el procesador es más rápido se verá obligado a
comprobar el estado del controlador una y otra vez
hasta que la operación finaliza
 Velocidad limitada: la velocidad de transferencia está
limitada por la velocidad a la que el procesador puede
atender al controlador
[STALLINGS 7.3] [STALLINGS 7.4] [STALLINGS 7.5]
31
Técnicas para las operaciones de E/S

E/S mediante interrupciones
 El procesador da la orden y sigue ejecutando otras
instrucciones hasta que el controlador de E/S le interrumpe
para comunicarle que la operación ha concluido
 Es más eficiente porque elimina esperas innecesarias, pero los
datos siguen pasando a través del procesador
▫ Consume tiempo
▫ Limita velocidad
[STALLINGS 7.3] [STALLINGS 7.4] [STALLINGS 7.5]
32
Técnicas para las operaciones de E/S

Acceso directo a memoria (DMA – Direct Memory Access)
 La memoria y el controlador de E/S intercambian datos
directamente sin intervención del procesador
 El procesador da la orden y sigue ejecutando otras
instrucciones hasta que el controlador de E/S le interrumpe
para comunicarle que la operación ha concluido, pero los
datos no pasan a través de él
[STALLINGS 7.3] [STALLINGS 7.4] [STALLINGS 7.5]
33
Técnicas para las operaciones de E/S

La E/S programada puede resultar más rápida para
pequeñas cantidades de datos, pero el procesador
no podrá hacer nada más

La E/S mediante interrupciones libera el procesador
para que haga otras tareas, pero la transferencia será
más lenta

DMA es la técnica más eficiente cuando se trata de
transmitir grandes volúmenes de información
[STALLINGS 7.3] [STALLINGS 7.4] [STALLINGS 7.5]
34
Técnicas para las operaciones de E/S
Ejemplo: lectura de datos (transferencia E/S  memoria)
[STALLINGS 7.3] [STALLINGS 7.4] [STALLINGS 7.5]
35
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
36
E/S programada

Al encontrar una instrucción E/S, el procesador genera:
 El identificador del controlador y el periférico
 Una orden de E/S

La orden de E/S es enviada al controlador

El controlador realiza la operación y ajusta el valor
del registro de estado, pero no avisa al procesador

El procesador debe controlar periódicamente el estado
del controlador hasta que comprueba que la operación
ha finalizado
[STALLINGS 7.3]
37
Órdenes de E/S

Hay cuatro tipos de órdenes de E/S
 Control: son específicas de cada tipo particular de periférico
(activar periférico, indicarle qué hacer…)
 Test: comprueban condiciones de estado (¿conectado?,
¿disponible?, ¿operación terminada?, ¿error?…)
 Lectura
▫ El controlador lee un dato del periférico y lo almacena internamente
▫ El procesador podrá obtener el dato pidiendo al controlador que lo
ponga en el bus
 Escritura
▫ El controlador toma un dato del bus
▫ El dato es transmitido al periférico
[STALLINGS 7.3]
38
Direccionamiento de los periféricos

Las instrucciones de E/S suelen tener una
correspondencia directa 1-1 con las órdenes de E/S

El formato de las instrucciones de E/S depende de la
forma de direccionamiento de los dispositivos, pues
deben contener la dirección adecuada

Si el procesador, la memoria y la E/S comparten un bus
se pueden usar dos modos de direccionamiento
 E/S asignada en memoria
 E/S aislada de memoria
[STALLINGS 7.3]
39
E/S asignada en memoria

Existe un único espacio de direcciones para posiciones
de memoria y dispositivos de E/S

Los registros de estado y de datos de los controladores
son vistos por el procesador como posiciones de
memoria y accede a ellos como si lo fueran

Sólo existe una línea de lectura y una línea de escritura
Por ejemplo, con 10 líneas de dirección tendríamos
un total de 210 = 1024 posiciones de memoria y E/S
[STALLINGS 7.3]
40
E/S aislada de memoria

Existen líneas de lectura/escritura en memoria y otras
separadas para las órdenes de E/S
Por ejemplo, con 10 líneas para memoria y otras 10 líneas
de dirección para E/S tendríamos 210 = 1024 posiciones de
memoria y otras tantas de E/S

Las instrucciones deben especificar si se refieren a una
posición de memoria o a un dispositivo de E/S
[STALLINGS 7.3]
41
E/S asignada vs. aislada

E/S asignada en memoria
 La programación es más eficiente porque existe una gran
variedad de instrucciones de lectura/escritura en memoria
 La desventaja es que hay que compartir el valioso espacio
de direcciones de memoria

E/S aislada de memoria
 Hay menos opciones de programación porque sólo
se dispone de unas pocas instrucciones de E/S
 No se comparte el espacio de direcciones

Ambas se utilizan frecuentemente hoy en día
[STALLINGS 7.3]
42
E/S asignada vs. aislada
Ejemplo de programa que realiza una operación de E/S
(se asumen direcciones de 10 bits)
[STALLINGS 7.3]
43
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
44
E/S mediante interrupciones

Desde el punto de vista del controlador de E/S
 El controlador recibe una orden del procesador
 El controlador gestiona la operación con el
periférico asociado
 Una vez concluye la operación, el controlador
envía una interrupción al procesador
 El controlador espera a que el procesador actúe
▫ Lectura: toma el dato
▫ Escritura: comprueba el estado
 El controlador queda preparado para la siguiente operación
[STALLINGS 7.4]
45
E/S mediante interrupciones

Desde el punto de vista del procesador
 El procesador envía una orden al controlador y luego
continúa ejecutando instrucciones
▫ Del mismo programa si es posible paralelizar
▫ De un programa distinto
[STALLINGS 7.4] [STALLINGS 3.2]
46
E/S mediante interrupciones

Desde el punto de vista del procesador
 En cada ciclo de instrucción, el procesador comprueba
el estado de las interrupciones
 Una vez detectada, la interrupción es procesada
[STALLINGS 7.4] [STALLINGS 3.2]
47
Procesamiento de interrupciones

El procesamiento de una interrupción consiste en
 Suspender la ejecución del programa y guardar su contexto
 Cargar la rutina de gestión de la interrupción
▫ Puede haber una por interrupción o una por interrupción y dispositivo
▫ Puede haber más de una adecuada
▪ La interrupción puede haber indicado cual era la adecuada
▪ Puede ser necesario interrogar al dispositivo al respecto
 Ejecutar la rutina de gestión
de la interrupción, lo que puede
implicar comunicarse de nuevo
con el dispositivo
 Recuperar el contexto del programa
anterior (u otro distinto)
[STALLINGS 7.4] [STALLINGS 3.2]
48
Procesamiento de interrupciones
Procedimiento de interrupción
simplificado
PC = Program Counter
PSW = Program Status Word
[STALLINGS 7.4]
49
Procesamiento de interrupciones
El contexto de un
programa se almacena
en la pila del sistema
[STALLINGS 7.4]
50
Procesamiento de interrupciones

Es posible que se produzca una interrupción
mientras se está procesando otra

Para tratar con estos casos hay dos alternativas
 Deshabilitar interrupciones
 Establecer prioridades
[STALLINGS 7.4] [STALLINGS 3.2]
51
Deshabilitar interrupciones

Mientras se está tratando una interrupción se ignora
cualquier interrupción que llegue posteriormente
 Las interrupciones posteriores quedan pendientes
y se procesarán cuando acabe la actual
 Las interrupciones son tratadas en un orden estrictamente
secuencial, pero no se tienen en cuenta la prioridad relativa
o las operaciones en tiempo crítico
[STALLINGS 7.4]
52
Interrupciones con prioridades

Se permite que una interrupción de
mayor prioridad interrumpa al gestor
de una interrupción de menor prioridad
[STALLINGS 7.4]
53
¿Quién interrumpe?

La presencia de múltiples controladores implica
que es necesario establecer una estrategia para que
el procesador sepa quién generó una interrupción

Múltiples líneas de interrupción
 Se podrían tener varias líneas de interrupción
entre el procesador y los controladores
 No resulta práctico tener sino unas pocas líneas
 Incluso si hay varias líneas, tendrán que ser
compartidas entre controladores distintos
[STALLINGS 7.4]
54
¿Quién interrumpe?

Consulta software (software poll)
 Cuando se detecta una interrupción se salta a una rutina
general de servicio de interrupción que consulta a cada
controlador para determinar el responsable
▫ Activar una señal de control para que el controlador responda
▫ Direccionar el registro de estado de cada controlador
 Una vez identificado el controlador se salta a una rutina
específica de servicio de interrupción
 El principal problema de esta técnica es que consume
demasiado tiempo
[STALLINGS 7.4]
55
¿Quién interrumpe?

Conexión en cadena (daisy chain)
 Todos los controladores comparten una
línea común para solicitar interrupciones
 La línea de reconocimiento de interrupciones se conecta
encadenando los controladores uno tras otro
▫ Cuando el procesador detecta una interrupción activa el
reconocimiento, que se va propagando hasta el controlador correcto
▫ El controlador responde poniendo en el bus un identificador (vector)
que el procesador usa como puntero a la rutina de interrupción
 De esta forma se evita ejecutar una rutina de servicio general
primero pues la consulta es hardware (hardware poll)
 Esta técnica también recibe el nombre de
“interrupciones vectorizadas”
[STALLINGS 7.4]
56
¿Quién interrumpe?

Arbitraje de bus
 Un controlador debe disponer del bus
antes de poder activar una interrupción
 Sólo un controlador puede interrumpir en cada momento
 Cuando el procesador detecta la interrupción responde
activando la línea de reconocimiento, con lo que el
controlador coloca su vector en el bus
(esta técnica también es vectorizada)
[STALLINGS 7.4]
57
¿Quién tiene prioridad?

Las técnicas anteriores proporcionan una forma de
asignar prioridades a las interrupciones
 Múltiples líneas de interrupción: el procesador
elige la línea que tenga mayor prioridad
 Consulta software: la prioridad viene determinada
por el orden en el que se consultan los controladores
 Conexión en cadena: la prioridad viene determinada por el
orden en el que los controladores se conectan en la cadena
 Arbitraje de bus: la prioridad en la asignación del
bus determina la prioridad de las interrupciones
[STALLINGS 7.4]
58
Intel 82C59A

El controlador de interrupciones Intel 82C59A es
un árbitro de interrupciones externo utilizado con
el procesador 80386
 El 80386 tiene una única línea de petición de interrupción:
INTR (interrupt request)
 El 80386 tiene una única línea de reconocimiento de
interrupción: INTA (interrupt acknowledge)
 La conexión con el 82C59A permite al procesador manejar
cierta variedad de dispositivos y estructuras de prioridad
[STALLINGS 7.4]
59
Intel 82C59A

Este chip se encarga únicamente de la gestión
de interrupciones






Acepta solicitudes de los controladores
Determina quién tiene la prioridad más alta
Activa INTR para indicárselo al procesador
El procesador activa INTA para reconocer la solicitud
El chip pone el vector apropiado en el bus
El procesador inicia el gestor de la interrupción y pasa a
comunicarse directamente con el controlador a partir de
ese momento
[STALLINGS 7.4]
60
Intel 82C59A
Un chip puede manejar
hasta 8 controladores
 Pueden conectarse
varios chips en cascada
para manejar hasta 64
controladores

[STALLINGS 7.4]
61
Intel 82C59A
El 82C59A es programable
 El procesador determina el esquema de prioridad que
se va a usar cargando una palabra de control en el chip

 Completamente anidado: las solicitudes de interrupción
se ordenan según el nivel de prioridad (de IR0 a IR7)
 Rotatorio: hay varios dispositivos con igual prioridad pero,
después de ser atendido, un dispositivo pasa a tener la menor
prioridad del grupo
 Con máscara especial: se permite que el procesador
pueda inhibir selectivamente las interrupciones desde
ciertos dispositivos
[STALLINGS 7.4]
62
Intel 82C55A

Mientras que el 82C59A era un árbitro de
interrupciones externo, la interfaz programable de
periféricos 82C55A es un verdadero controlador de E/S
 Es un controlador de propósito general que puede usarse tanto
para E/S programada como para E/S mediante interrupciones
 Está integrado en un solo chip
con 40 terminales
 También se utiliza junto con el
procesador 80386
[STALLINGS 7.4]
63
Intel 82C55A

La interfaz externa se compone de 24 líneas de E/S
configurables mediante un registro de control
 Tres buses de 8 bits
(A, B y C)
 Dos buses de 8 bits
(A y B) y cuatro bits
de señales de control
y estado para cada uno
(CA y CB)
[STALLINGS 7.4]
64
Intel 82C55A

La interfaz externa se compone de 24 líneas de E/S
configurables mediante un registro de control
 Cada puerto puede
designarse como de
entrada o salida
 Las líneas C pueden
usarse para
sincronización
mediante
confirmación de
señales o para
petición de
interrupciones
[STALLINGS 7.4]
65
Intel 82C55A

La interfaz interna se compone de
 Un bus bidireccional de 8 bits (D) usado para transferir datos
a/desde los puertos de
E/S y al registro de
control
 Dos líneas de dirección
(A0,A1) para
especificar uno de los
puertos de E/S o el
registro de control
[STALLINGS 7.4]
66
Intel 82C55A

La interfaz interna se compone de
 Una señal RESET para inicializar el controlador
 Una señal
CHIP SELECT que
indicará el comienzo
de una transferencia
cuando se active junto
con la señal READ o
la señal WRITE
[STALLINGS 7.4]
67
Procesamiento de interrupciones
Ejemplo: controlar una
terminal con teclado y pantalla
[STALLINGS 7.4]
68
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
69
Controlador de DMA
El controlador de DMA es un módulo capaz de recibir
el control del bus del sistema (cedido por el procesador)
para transferir datos a/desde memoria
 Dos opciones de
funcionamiento:

 Utilizar el bus sólo
cuando el procesador
no lo necesita
 Lo más común es forzar
al procesador a que
suspenda temporalmente
el uso del bus
(robo de un ciclo de bus)
[STALLINGS 7.5]
70
Controlador de DMA

Cuando el procesador desea leer/escribir un bloque
de datos envía una orden al controlador de DMA
incluyendo la siguiente información:
 Indicación de si es lectura
o escritura usando la línea
de control apropiada
 Dirección del dispositivo
de E/S usando las líneas
de datos
[STALLINGS 7.5]
71
Controlador de DMA

Cuando el procesador desea leer/escribir un bloque
de datos envía una orden al controlador de DMA
incluyendo la siguiente información:
 Posición inicial de memoria
a la que leer/escribir usando
las líneas de datos y que será
almacenada en el registro
de direcciones
 Número de palabras a
leer/escribir usando las
líneas de datos y que
será almacenado en el
registro de cuenta de datos
[STALLINGS 7.5]
72
Controlador de DMA

El controlador de DMA puede robarle el bus al
procesador justo antes de que lo necesite
 No es una interrupción: el procesador no guarda el contexto,
tan solo espera un ciclo de bus
 El procesador se
ralentiza, pero para
transmitir varias
palabras es más
eficiente que las otras
 Cuando termina la
transmisión, el
controlador de DMA
devuelve el control del bus al procesador
[STALLINGS 7.5]
73
Controlador de DMA

El procesador puede continuar con su trabajo después
de enviar la orden al controlador de DMA pues, a todos
los efectos, ha delegado en él la operación

El controlador de DMA se encarga de transferir
el bloque completo de datos, palabra a palabra,
directamente a/desde memoria
(sin pasar por el procesador)

Cuando la operación concluye, el controlador envía una
interrupción al procesador para comunicárselo
[STALLINGS 7.5]
74
Configuración del DMA

La configuración más económica es que todos los
controladores compartan el bus del sistema
 El controlador de DMA actuará como un procesador
suplementario que usa E/S programada para transferir
datos entre la memoria y un controlador de E/S
 Es ineficiente porque cada dato consumirá dos ciclos de bus
(E/S  DMA  Memoria)
[STALLINGS 7.5]
75
Configuración del DMA

Integrar las funciones de DMA y E/S reduciría el
número de ciclos de bus necesarios
 Existe un camino entre el controlador de DMA y uno o varios
controladores de E/S que no pasa por el bus del sistema
 El controlador de DMA puede ser un módulo separado que
gestiona varios controladores de E/S o parte de uno de ellos
 Cada dato consumirá un solo ciclo del bus del sistema
(DMA  Memoria)
[STALLINGS 7.5]
76
Configuración del DMA

Se puede dar un paso más conectando los controladores
de E/S a un controlador de DMA usando un bus de E/S
 El controlador de DMA sólo tiene una interfaz con la E/S,
dando lugar a una configuración fácilmente ampliable
 De nuevo, cada dato consumirá un solo ciclo del bus
del sistema (DMA  Memoria)
[STALLINGS 7.5]
77
Intel 8237A

El controlador de DMA Intel 8237A proporciona la
interfaz necesaria para realizar el acceso directo a
memoria en computadores basados en procesadores
de la familia 80x86
[STALLINGS 7.5]
78
Intel 8237A

El 8237A es un controlador de DMA al vuelo
(fly-by DMA) porque los datos no pasan nunca
a través del propio controlador y no se almacenan
en él
 Puede controlar transferencias Memoria  E/S
 No puede controlar transferencias E/S  E/S
 Puede controlar transferencias Memoria  Memoria
usando un registro temporal

En cualquier caso, mientras el controlador de DMA
utiliza los buses, el procesador permanece ocioso (idle)
[STALLINGS 7.5]
79
Intel 8237A – Ejemplo de transferencia

Por ejemplo, supongamos que el controlador de DMA
va a transferir un bloque de datos desde la memoria
hasta el disco
1. El controlador de disco solicitará el DMA activando la señal
DREQ (DMA Request)
2. El controlador DMA necesita usar los buses para la
transferencia (datos, dirección y control), por lo que
envía al procesador la señal HRQ (Hold Request);
esta señal debe estar activa durante toda la transmisión
3. El procesador terminará el ciclo de bus en el que se
encuentre, aunque no necesariamente terminará la
ejecución de la instrucción
[STALLINGS 7.5]
80
Intel 8237A – Ejemplo de transferencia

Por ejemplo, supongamos que el controlador de DMA
va a transferir un bloque de datos desde la memoria
hasta el disco
4. El procesador responde al controlador de DMA activando la
señal de reconocimiento HLDA (Hold Acknowledge) para
indicarle que puede usar los buses
5. El controlador de DMA activará la señal DACK (DMA
Acknowledge) para indicar al periférico que comienza la
transmisión
6. Se realiza la transmisión de datos
7. Una vez finalizado el proceso, el controlador de DMA
desactiva la señal HRQ para indicarle al procesador que
puede volver a hacer uso de los buses
[STALLINGS 7.5]
81
Intel 8237A – Ejemplo de transferencia

Cuando la transmisión de datos (paso 6) sea una
lectura de memoria, el controlador de DMA realizará
las siguientes operaciones:






Poner en el bus de direcciones la dirección del primer byte a
leer de memoria
Activar MEMR (Memory Read) para obtener el byte de
datos de memoria y ponerlo en el bus de datos
Activar IOW (Input/Output Write) para escribir en el
periférico el dato presente en el bus
Decrementar el contador de bytes leídos
Incrementar el puntero a la posición que debe leerse
Repetir el proceso hasta que todos los datos se hayan leído
[STALLINGS 7.5]
82
Intel 8237A – Ejemplo de transferencia

Cuando la transmisión de datos (paso 6) sea una
escritura en memoria, el controlador de DMA
realizará las siguientes operaciónes:






Poner en el bus de direcciones la dirección de la primera
posición de memoria a escribir
Activar IOR (Input/Output Read) para obtener un byte de
datos del periférico y ponerlo en el bus de datos
Activar MEMW (Memory Write) para escribir en memoria
el dato presente en el bus
Decrementar el contador de bytes escritos
Incrementar el puntero a la posición en que se debe escribir
Repetir el proceso hasta que todos los datos se hayan escrito
[STALLINGS 7.5]
83
Intel 8237A – Canales de DMA

El 8237A tiene cuatro canales (0, 1, 2 y 3)
 Cada canal se puede programar independientemente
 Cualquiera canal puede estar activo en un momento dado,
incluso varios (o todos) de forma simultánea

El 8237A dispone de ocho registros de datos que
utiliza para indicar la posición y el tamaño de la
zona de memoria afectada por una transferencia
 Un registro de dirección de memoria por cada canal
 Un registro contador por cada canal
[STALLINGS 7.5]
84
Intel 8237A – Canales de DMA

El 8237A dispone de cinco registros de control que se
utilizan para programar y controlar la operación DMA
de cada uno de los cuatro canales





Orden (command)
Estado (status)
Modo (mode)
Máscara simple (single mask)
Máscara completa (all mask)
[STALLINGS 7.5]
85
Intel 8237A – Registros de Control
[STALLINGS 7.5]
86
Intel 8237A – Registros de Control

Orden (command): el procesador carga este registro
para controlar la operación de DMA
 D0 habilita una transferencia Memoria  Memoria que
usa el canal 0 para leer un byte en un registro temporal y el
canal 1 para transferirlo de nuevo a memoria
 D1 permite deshabilitar el incremento/decremento en el
canal 0 para forzar la transmisión de un valor fijo
 D2 habilita/deshabilita las operaciones de DMA
 D3 reduce el periodo de bus
 D4 elige entre prioridad fija y prioridad máxima rotatoria
 D5 define el comportamiento de la señal MEMW
 D6 y D7 define cuando DREQ y DACK están activas (0 ó 1)
[STALLINGS 7.5]
87
Intel 8237A – Registros de Control

Estado (status): el procesador lee este registro para
determinar el estado del controlador de DMA
 D0 – D3: indican si los canales 0 – 3 han alcanzado el valor
final de la cuenta
 D4 – D7: indican si hay una petición de DMA pendiente en
los canales 0 – 3
[STALLINGS 7.5]
88
Intel 8237A – Registros de Control

Modo (mode): el procesador carga este registro para
establecer el modo de operación de un canal
 D0,D1: selecciona el canal
 D2 – D7: establece el modo de operación del canal elegido
▫ D2,D3: indican si la transferencia es E/S  Memoria (escritura) o
Memoria  E/S (lectura)
▫ D4: vuelve a cargar el registro de dirección de memoria y el registro
contador a los valores iniciales una vez que termina la transferencia
▫ D5: indica si durante la transferencia hay que incrementar o
decrementar las direcciones
▫ D6,D7: determina el modo de utilización del 8237A
▪ Simple: se transfiere un único bit de datos
▪ Bloque/Demanda: transfiere bloques (demanda = finalización prematura)
▪ Modo cascada: permite encadenar varios para tener más de cuatro canales
[STALLINGS 7.5]
89
Intel 8237A – Registros de Control

Máscara simple (single mask): el procesador modifica
este registro para deshabilitar un canal determinado
enmascarando la entrada DREQ
 D0,D1: selecciona el canal
 D2: activa o desactiva el bit de máscara correspondiente al
canal seleccionado

Máscara completa (all mask): es similar al anterior
pero permite habilitar/deshabilitar todos los canales
en una sola operación
[STALLINGS 7.5]
90
Estructura del tema

Introducción
 La entrada/salida en el procesador
 Definición de periférico e interfaz

Controladores de entrada/salida
 Funciones de un controlador
 Estructura de un controlador

Técnicas para las operaciones de entrada/salida
 Entrada/salida programada
 Entrada/salida mediante interrupciones
 Acceso directo a memoria

Evolución de la entrada/salida
91
Evolución de la Entrada/Salida

A medida que los computadores evolucionaban,
la entrada/salida ha evolucionado con ellos
1. El procesador controlaba directamente los periféricos
2. Aparece el controlador de E/S y el procesador se
independiza de los detalles específicos de la interfaz
de los periféricos; las operaciones se gestionan por
medio de E/S programada
3. Surge el concepto de interrupción; el procesador
ya no tiene que esperar por las operaciones de E/S,
aumentando su eficiencia
4. Aparece el DMA; el procesador ya sólo necesita
involucrarse al comienzo y al final de las operaciones
[STALLINGS 7.6]
92
Evolución de la Entrada/Salida

A medida que los computadores evolucionaban,
la entrada/salida ha evolucionado con ellos
5. Canales de E/S: los controladores mejoran tanto que se
comportan como pequeños procesadores con su propio
repertorio de instrucciones especializado
El procesador especifica al canal una secuencia de
actividades, indicándole que ejecute su propio programa
desde memoria, y se desentiende hasta que la secuencia
termine y reciba una interrupción
6. Procesadores de E/S: el canal de E/S tiene memoria propia
puede controlar un conjunto grande de dispositivos de E/S
con una intervención mínima por parte del procesador
[STALLINGS 7.6]
93
Canales de Entrada/Salida
En general, esta evolución se caracteriza por que cada
vez más funciones se realizan sin intervención del
procesador, mejorando con ello su rendimiento
 Los canales y procesadores de E/S son un cambio
importante en el concepto de controlador de E/S

 Amplían el concepto de DMA con la capacidad de
ejecutar programas de E/S
 La capacidad de ejecutar instrucciones de E/S les
proporciona completo control sobre las operaciones de E/S
 Tanto el término canal como el término procesador se
pueden utilizar indistintamente, pero usaremos “canal
de E/S” para generalizar y evitar confusiones
[STALLINGS 7.6]
94
Canales de Entrada/Salida

El procesador no ejecuta instrucciones de E/S
 Se almacenan en memoria como programas independientes
 Al principio de una transferencia, el procesador indica al
canal de E/S qué programa debe ejecutar
 El programa de entrada salida determina
▫
▫
▫
▫
▫
Dispositivo/s a utilizar
Área/s de memoria
Prioridades
Acciones a realizar en caso de error
…
 El canal de E/S sigue estas instrucciones y controla
la transferencia
[STALLINGS 7.6]
95
Canales de Entrada/Salida

En general, se pueden distinguir dos tipos de canales
de E/S: selectores y multiplexores
 Un canal selector se usa en lugar del procesador para
gestionar los controladores
▫ Controla varios dispositivos de velocidad elevada
▫ Cada dispositivo (o grupo de ellos) es gestionado por un controlador
▫ En un momento dado, el canal de E/S selecciona un dispositivo y
efectúa una transferencia
[STALLINGS 7.6]
96
Canales de Entrada/Salida

En general, se pueden distinguir dos tipos de canales
de E/S: selectores y multiplexores
 Un canal multiplexor puede gestionar la E/S de varios
dispositivos al mismo tiempo
▫ Los datos enviados por varios
dispositivos son entrelazados
y transmitidos tan rápidamente
como sea posible
▫ Dispositivos de velocidad reducida:
entrelazado a nivel de bytes
▫ Dispositivos de velocidad elevada:
entrelazado a nivel de bloques
[STALLINGS 7.6]
97
Bibliografía
[PATTERSON]
Estructura y diseño de computadores
interficie circuitería/programación
David A. Patterson y John L. Hennessy
Editorial Reverté, 2000
[STALLINGS]
Organización y arquitectura de computadores
William Stallings
Pearson Education – Prentice Hall, 2005 (7ª edición)
98