Sistema de entrada/salida

Anuncio
Buses y Periféricos 99/00
Entrada/Salida
Sistema de entrada/salida
Un computador se compone de tres elementos básicos: el procesador, el sistema de memoria y el sistema
de entrada/salida. El sistema de entrada/salida es la parte del computador que interactúa con el medio
externo. Lo hace a través de una variedad de dispositivos cuyo objetivo básico es la transmisión de datos.
El cometido de un dispositivo de entrada salida es el de traducción de un lenguaje externo y variado a un
código más próximo al computador ( y a la inversa).
1.- Características de diseño.
Así como en el diseño del procesador el objetivo principal (además del coste) es el rendimiento, en el
diseño del sistema de entrada/salida se han de tener en cuentas otras y tan importantes consideraciones:

Expansión. Dada la variedad de entornos en los que se puede insertar, un computador se
encontrará ante una amplia variedad de lenguajes, lo que le exigirá incorporar nuevos
dispositivos.

Recuperación ante problemas. La comunicación entre el computador y el dispositivo externo
no siempre va a ser fiable, dependiendo del medio en el que este se ubique; el sistema de
entrada/salida debe ser capaz de recuperarse ante errores de comunicación y de cualquier otra
clase de carácter impredecible; lo que significa que deben poder restablecerse conexiones
cortadas, determinar situaciones de error...
En cuanto al rendimiento.
Dado que su principal objetivo es la transmisión de datos, el rendimiento de un dispositivo se determina
por dos parámetros relacionados con ello.

Latencia: o tiempo de respuesta de un dispositivo

Potencia: o capacidad del dispositivo para transmitir datos por unidad de tiempo.
La valoración de estos dos parámetros no dependen completamente del dispositivo, sino también de su
interrelación con el computador:
Características del dispositivo.
Interacción con el procesador.
Interacción con el sistema operativo.
influyen de una manera u otra en la determinación del rendimiento del sistema de entrada/salida.
Medidas de rendimiento.
Para evaluar el rendimiento de un dispositivo se utiliza principalmente la medida de ancho de banda.
Sin embargo esta medida puede tener varias interpretaciones:
a) Cuanta cantidad de datos es capaz de transmitir el dispositivo por unidad de tiempo.
b) Cuantos accesos es capaz de admitir el dispositivo por unidad de tiempo.
En ambos casos se trata de transmisión de datos, pero ambas interpretaciones se diferencian en matices. a)
pide al dispositivo capacidad de transmisión de datos, esto es, potencia, mientras que b) le pide capacidad
de atención, esto es, baja latencia. Según el medio en el que se vaya a emplear el computador y el tipo de
problemas a que se vaya a enfrentar se favorecerá una definición u otra. La primera definición favorece a
problemas en los que prime la transferencia de grandes flujos de datos, mientras que la segunda definición
favorece a problemas en los que sea importante el uso compartido de ese recurso.
1
Buses y Periféricos 99/00
Entrada/Salida
2.- Clasificación de dispositivos.
Previo al diseño de un sistema de entrada/salida, es importante determinar el tipo de dispositivos que se
prevé van a ser conectados. Esto permitirá dar una orientación al sistema hacia determinados entornos o
favorecer una disposición genérica. Por ejemplo determinará qué tipo de bus es más conveniente utilizar o
en qué niveles de una jerarquía de buses sería más conveniente situar cada dispositivo. A ello ayudaría
una taxonomía de los diversos tipos de dispositivos de entrada/salida que nos podemos encontrar.
Por el comportamiento en cuanto a su uso:
-
lectura
escritura
lectura/escritura
En este caso el punto de referencia es el procesador. Los dispositivos de lectura son aquellos de los
cuales, exclusivamente, el procesador puede obtener datos (aparte dejamos el hecho de que el procesador
pueda programarlos de alguna manera escribiendo en sus registros). Los de escritura, aquellos en los que
el procesador solo puede depositar datos (salvo posibilidad de leer registros de estado). Los últimos son
dispositivos de almacenamiento o de comunicación principalmente.
Por el tipo de comunicante (siendo uno el procesador)
-
De interacción con humanos
De interacción con máquinas
De comunicación
Los primeros se caracterizan por ser relativamente lentos en comparación con las velocidades a que los
procesadores ejecutan instrucciones. Los dispositivos de comunicación pueden alcanzar velocidades de
transmisión próximas a las del procesador. En cuanto a la interacción con máquinas hay una amplia
variedad dependiendo de qué tipo de máquinas sean.
Por la tasa de transferencia de datos.
El dispositivo se caracteriza sencillamente por una medida de su capacidad de transmitir datos por unidad
de tiempo. En última instancia esta es la medida que más interesa en el momento del diseño.
3.- Controladores
Los dispositivos no se conectan directamente al computador sino que lo hacen a través de una interfaces
llamadas controladores. Esto favorece características del sistema de entrada/salida tales como la
expansión. Los controladores proporcionan, entre otras cosas, una homogeneización de las conexiones,
además de ofrecer también un traducción entre el protocolo empleado por el dispositivo y el exigido por
el procesador. Algunas de sus labores son las siguientes
1.
2.
3.
4.
5.
Establecimiento, Control y Temporización de las comunicaciones.
Comunicación con la CPU.
Comunicación con dispositivos.
Almacenamiento temporal de datos.
Detección de errores.
Elemento muy importante para lograr una comunicación eficaz es el protocolo. Un controlador se
enfrenta a dos protocolos diferentes de comunicación, el que emplea con el procesador y el que emplea
con el dispositivo. El Controlador es la interfaz entre ambos, encargándose no solo de comunicarlos sino
también de transmisor/ejecutor/generador de órdenes e información de estado sobre el dispositivo o el
estado de las transacciones . Así mismo el controlador puede servir al procesador disfrazando las
particularidades del dispositivo ante el procesador, a este respecto la posibilidad de almacenamiento
temporal de datos o la ejecución de órdenes procedentes de éste que el controlador traduce en acciones
sobre el dispositivo.
2
Buses y Periféricos 99/00
Entrada/Salida
Estructura de un controlador.
Un controlador es un circuito de dos caras. Por un lado se enfrenta al procesador, posiblemente conectado
a un bus, y por ello debe incorporar todas las señales que se le exigen: líneas de datos, líneas de
direcciones y líneas de control -básicamente de selección, lectura y escritura. Para almacenar datos
intermedios o información de estado, el controlador posee varios registros, algunos accesibles desde el
procesador y otros de uso exclusivo. Pese a ser un único dispositivo físico, el controlador puede acaparar
más de una dirección de entrada salida que utilizará el procesador según la tarea que vaya a realizar sobre
el controlador.
Por el lado del dispositivo el controlador intercambiará con éste las líneas que sean necesario según la
clase. Exigirán generalmente un conjunto de líneas de datos para transmitir la información y un conjunto
de líneas de control para regular el protocolo de esa transacción. Por el número de líneas de datos se
pueden distinguir dos tipos de controladores:
-
Comunicación serie: Existe una única línea de transmisión y la información la atraviesa bit
a bit. Es una interfaz de baja velocidad y bajo coste que puede ser adecuada para
dispositivos lentos.
-
Comunicación paralela: El paquete de datos se envía en conjunto disponiendo de una línea
por cada bit a transmitir. Proporciona mayor velocidad de transmisión y también menor
complejidad a un mayor coste.
Comunicación CPU-Controlador
El procesador se comunica con el controlador para establecer contacto a su través con el dispositivo. Con
su intercesión, el procesador enviará al dispositivo órdenes de control y recibirá de él información de
estado, además de datos. Por lo tanto los tipos de transacciones son estas cuatro:
-
Control
Estado
Lectura
Escritura
Las transacciones de control son aquellas en las que el procesador envía órdenes de actuación al
controlador. Algunas de estas órdenes modificarán el comportamiento del controlador, y otras son
reenviadas, adecuadamente traducidas, al dispositivo para programar su conducta. El dispositivo y el
propio controlador pueden responder con información de estado que dará a conocer su situación al
procesador.
4.- Instrucciones de entrada/salida
Desde dentro del procesador la asociación controlador-dispositivo de entrada salida es vista como un
conjunto de direcciones de entrada/salida. El procesador envía comandos y datos a tales direcciones y
recibe información de estado y también datos procedentes de ellas. Estas direcciones componen lo que se
denomina el espacio de direcciones de entrada/ salida del procesador.
Es una cuestión de diseño el decidir cómo se va a organizar este conjunto de direcciones en relación con
el espacio de direcciones de memoria. Según esto hay dos opciones para el espacio de direcciones de
entrada/salida
-
Mapeado en memoria: Existe un único conjunto de direcciones en el sistema computador,
una parte de este conjunto de direcciones pertenece al sistema de entrada/salida, y el resto
son direcciones de memoria.
En el circuito esto significa que únicamente las líneas de dirección son utilizadas para
3
Buses y Periféricos 99/00
Entrada/Salida
seleccionar a los controladores conectados al bus. Dentro, el procesador no utiliza
instrucciones especiales para distinguir entre un acceso a memoria y un acceso a entrada
salida.
-
Mapeado en e/s: Esto significa que existen dos espacios de direcciones, el de memoria y el
de entrada/salida. Lo que distingue a una dirección situada en el bus de pertenecer a uno u
otro espacio de direcciones es una línea de control (IO/M en 8086). Esto quiere decir que
además del conjunto de líneas de dirección, los controladores deben comprobar el estado de
esta otra línea antes de sentirse aludidos.
Ahora existen instrucciones específicas para memoria o para entrada/salida. Estas últimas
son las que activarían aquella línea de control cada vez que son ejecutadas.
5.- Esquemas de comunicación Procesador-entrada/salida.
Ya estamos en la acción misma. El procesador - un conjunto de instrucciones ejecutándose en él- tiene
que atravesar tres fases para cumplir una transacción de entrada/salida. La primera es la programación del
controlador y del dispositivo para prepararlos para la transacción. El controlador puede ser programado
para el tipo de datos que va trasegar o la cantidad de ellos. El dispositivo para comportarse de una de
varias maneras posibles de hacerlo en la captura o emisión de información. La segunda fase es la
transmisión de datos que puede conllevar una serie de comprobaciones del estado del controlador y/o
dispositivo. Por último podrá ser necesaria una finalización con un nuevo acceso de control.
1.
2.
3.
Programación
transmisión/comprobación de estado
finalización.
No es necesario puntualizar el grado de implicación que tiene el procesador en una transacción de entrada
salida. Éstas, sin embargo, consisten generalmente en un trasiego de datos entre un dispositivo y el
sistema de memoria. Posteriormente, el procesador accederá a memoria en busca de esos datos si le son
necesarios. Queremos con esto demostrar que el papel del procesador en una transacción de entrada salida
es secundario. Sin embargo necesario porque es el elemento inteligente que pone en marcha, controla y da
por finalizado el proceso. Si se consiguiera reducir la relevancia de la actuación del procesador en tales
transacciones, conseguiríamos mejorar el rendimiento del sistema, ya que éste dispondría de ese tiempo
para ejecutar instrucciones. Este es el objetivo de los diferentes esquemas de comunicación entre el
procesador y el sistema de entrada/salida.
Esquema programado. Este es el esquema básico que sigue las tres fases descritas al pié de la letra. El
procesador debe dedicarse por entero a cada transacción de entrada salida. Durante la fase de
transmisión, el procesador entra en un bucle de lecturas y escrituras entre dispositivo y memoria
en el cual su única función es la de trasegador. Este es un tiempo de computación considerado no
útil porque no se realiza ningún tipo de transformación sobre los datos.
Uso de interrupciones. La utilidad de las interrupciones es principalmente que liberan al procesador de
una espera inútil, aprovechando ese tiempo en realizar una computación más provechosa, si la
hay. En relación con los sistema de entrada/salida estas esperas se producen principalmente
debido a la menor velocidad de respuesta de los dispositivos en comparación con la del
procesador ( en términos de ejecución de instrucciones). En el esquema anterior el procesador
debería engolfarse en un bucle comprobando constantemente el estado del dispositivo hasta que
este culmine su actuación, para pasar a la siguiente transmisión. Ahora el procesador indica al
dispositivo que le avise cuando tal suceso ocurra y no entra nunca en aquel bucle, sino que se
ocupa de la ejecución de otro conjunto de instrucciones no relacionadas con el tema. Cuando el
dispositivo activa la señal, el procesador vuelve a atenderle y prepararlo para una nueva
transacción.
La primera consideración a tener en cuenta es que los controladores deben incorporar esta
capacidad de interrumpir al procesador. Por tanto es otra de las posibles funcionalidades de un
controlador. En segundo lugar no todo tipo de transacciones pueden ser adecuadas para este
esquema. Con esto quiérese decir que la asunción de un esquema de interrupciones no implica el
4
Buses y Periféricos 99/00
Entrada/Salida
abandono del esquema programado. Obsérvese que en ambos casos las fases por las que pasa
una transmisión de entrada salida son las mismas, programación, transmisión/comprobación de
estado, finalización. La diferencia estaría en la fase de transmisión, durante la cual el procesador
no espera activamente, interrogando al controlador, sino que espera pasivamente al que el
controlador le avise. Una vez lo ha hecho la tarea del procesador seguirá siendo recoger el dato
que se le ofrece y depositarlo en la correspondiente celda de memoria o viceversa. Por lo tanto
este esquema es más bien un complemento del anterior más que una alternativa.
Implantación.
El esquema de interrupciones exige un apoyo en el hardware. Tanto en el lado del procesador
como en el lado de los dispositivos. Estos deben tener capacidad para enviar una señal al
procesador y aquel debe tenerla para recibir esa señal y responder al dispositivo que la originó.
La respuesta del procesador es la ejecución de una serie de instrucciones (Rutina de atención a la
interrupción) encargadas de atender a las tareas relacionadas con el dispositivo. Por cada uno de
los dispositivos que pueden interrumpir al procesador debe existir un conjunto separados de
instrucciones (una rutina de atención diferente). Una de las tareas del procesador al responder a
una interrupción es identificar el dispositivo que la originó. Se han planteado dos esquemas:
-
-
Método vectorizado: es, de alguna manera, el propio dispositivo el que se
identifica ante el procesador. Generalmente lo hace enviándole un índice dentro de
una lista de rutinas de atención (vector de interrupciones), que apunta a la rutina
que sirve para atender a este dispositivo.
Método de consulta: el procesador determina, preguntando a cada uno de los
dispositivos, cual es el que generó la interrupción.
Puede ocurrir que varios controladores generen al mismo tiempo una interrupción, entonces el
procesador se ve obligado a seleccionar uno de ellos. Algunos esquemas que resuelven este
problema son:
-
-
Múltiples líneas de interrupción: por lo tanto cada controlador está plenamente
identificado y priorizado por la línea por la que avisan al procesador.
Consulta software: como todos los dispositivos utilizan la misma línea de
interrupción, el procesador, al recibir un aviso debe acceder dispositivo por
dispositivo inquiriendo cual ha sido el autor de la señal, el órden en que realiza las
consultas establece la prioridad.
Consulta hardware: Los propios dispositivos se auto seleccionan conforme a un
esquema de prioridades ya previsto (ejemplo daisy chain)
Arbitraje de bus: Igualmente son los propios dispositivos los que se autorregulan,
en este caso compitiendo por el acceso al bus para proporcionarle al procesador el
índice en el vector de interrupciones.
Esquemas de interrupción.
Cuando queremos que un controlador tenga capacidad de disparar una interrupción en el procesador, los
elementos de que debemos disponer son los siguientes
Procesador
Controlador
ruti
na
Int
Intrq
5
Buses y Periféricos 99/00
Entrada/Salida
El procesador debe tener una entrada de interrupción, consistente en una entrada que cuando se activa el
contador de programa salta a una dirección determinada de memoria y comienza a ejecutar código.
El controlador debe tener una salida de petición de interrupción que se activará cuando el controlador esté
dispuesto a interactuar con el procesador.
La rutina de atención a la interrupción es la que se debe ejecutar cuando se activa la interrupción y debe
estar situada en la dirección asociada con la interrupción.
¿Qué pasa cuando hay más de un controlador con capacidad para interrumpir? Pues que hay más de una
rutina esperando ser disparada cuando el controlador correspondiente genere su interrupción. Por lo tanto
el procesador debe tener un medio para identificar al controlador que generó la interrupción.
Una forma de resolverlo es teniendo más de una entrada de interrupción.
1
PROCESADOR
I1
INT1
INT2
INT3
I2
2
I3
3
Naturalmente este esquema está limitado al número de entradas de interrupción de que disponga el
procesador. Un esquema más genérico intentaría que los dispositivos se identificaran a sí mismos cuando
generan la interrupción (vectorial) o en su defecto que el procesador procediera, después de haber
recibido la interrupción a identificar al dispositivo que la generó (consulta). Así el número de dispositivos
que pueden invocar una acción en el procesador no se ve limitado por el hardware.
Esquema vectorial
En el esquema vectorial el dispositivo se identifica a sí mismo. El proceso de activar una interrupción
ocurre en dos fases: generar la interrupción, reconocimiento de la interrupción
Ack
PROCE SADOR
1
INT
I1
I2
2
3
I3
Una vez generada la inerrupción, el procesador inicia un ciclo de reconocimiento. Durante este ciclo el
dispositivo con mayor prioridad de los que han pedido simultáneamente una interrupción se identifica
ante el procesador y este utiliza esta información para invocar a la rutina correspondiente.
6
Buses y Periféricos 99/00
Entrada/Salida
El concepto de prioridad en cualquier esquema de interrupción es muy importante, en primer lugar porque
hay que tomar una decisión cuando varios dispositivos realizan una petición simultáneamente y en
segundo lugar porque hay dispositivos que requieren una atención inmediata mientras que otros pueden
verse postergados sin perjuicio relevante.
Una forma de resolver este problema es el daisy chain. Durante el ciclo de reconocimiento el procesador
genera el reconocimiento y el primer dispositivo que lo detecte es el que se identifica colocando su
identificador en el bus que el procesador leera a continuación.
Procesador
BUS
1
Ack
2
3
INT
Otro esquema es el utilizado por el 8086 en el que la tarea de identificar al dispositivo que generó la
interrupción es realizada por un controlador.
Bus
PROCE
SADOR
INT
Contro
lador
de
interru
pcione
s
1
2
3
El esquema por consulta obliga al procesador, durante el ciclo de reconocimiento a explorar uno por uno
los dispositivos hasta dar con el que generó la interrupción. Para ello va leyendo uno por uno el estado de
cada dispositivo en el que figurará si el dispositivo ha solicitado la interrupción
Procesador
BUS
1
1
2
2
3
Int
ack INT
3
Cuando recibe la petición de interrupción, el procesador activa una rutina de atención genérica que se
encarga de preguntar a cada controlador su estado. Como los explorará secuencialemente el controlador
que tenga la dirección más baja será el de mayor prioridad. Cuando haya detectado el controlador de
mayor prioridad de los que hayan solicitado la interrupción invocará a su rutina correspondiente.
Acceso directo a memoria. DMA. Este es el tercer esquema que igualmente es complementario y no
antagonista con los mencionados antes. Considerando que el papel de procesador en una
transacción de entrada/salida es meramente de trasladador de datos, el esquema DMA propone
7
Buses y Periféricos 99/00
Entrada/Salida
que exista otro controlador con cierto grado de inteligencia que realice estas labores en lugar del
procesador. Este esquema por lo tanto exige que exista un controlador que pueda leer datos de
memoria o un dispositivo y posteriormente escribirlos en un dispositivo o memoria sin la ayuda
del procesador. De manera que para un procesador una transacción e/s consistiría en programar
tal controlador de DMA para indicarle:
-
Dónde están los datos de origen.
Dónde están los datos de destino.
Cuánta cantidad de datos es.
y posteriormente liberarle para que actuase por su cuenta. Al final de la transacción el
controlador de DMA avisaría al procesador, por medio de una interrupción, y este comprobaría
que la transacción completa se ha realizado satisfactoriamente, frotándose la manos. Una de las
funcionalidades que ha de tener este controlador, entonces, es la de tener capacidad de
interrumpir al procesador para que éste no se tenga que ver obligado a quedarse esperando en un
bucle de consulta al controlador, lo que eliminaría toda la operatividad del asunto.
Acceso al bus.
Un controlador de DMA es un maestro de bus. Quiérese decir que debe tener capacidad de
iniciar una transacción. Para ello ha de robarle el bus al procesador, impidiéndole su uso a este
durante el cumplimiento de su labor. Esto puede perjudicar al procesador si el número de
transacciones es muy alto por lo que dichos controladores operan siguiendo una política de robo
de ciclos. Consiste esta política en esperar a que el procesador haya liberado el bus, al final de
un ciclo de acceso, obtener el bus entonces, realizar una única transacción y devolverlo, para
esperar a la siguiente oportunidad. Mientras el procesador no usa el bus, el controlador de DMA
lo aprovecha para realizar sus transacciones, pero nunca le disputaría el bus al procesador cuando
este tratase de utilizarlo.
8
Buses y Periféricos 99/00
Entrada/Salida
Ejemplo de evolución del sistema de entrada/salida a partir de un teclado
Un teclado es una matriz de líneas eléctricas. La pulsación de una tecla comunica una fila con una
columna. La identificación de la fila y la columna correspondientes nos proporciona un código de tecla
pulsada. A continuación el procesador debe traducir ese código a un código reconocible, sea ASCII,
(consultando unas tablas que asocian códigos de tecla pulsada con código ASCII). La interfaz de un
procesador con un dispositivo de este tipo es en el ejemplo un puerto de 4 líneas de salida y otro puerto de
4 líneas de entrada. Y las tareas que tiene que realizar el procesador son, suponiendo que en medio de el
código de usuario que está ejecutando necesite leer un carácter de teclado
Estructura de un teclado
5V
o u tp u t
5V
1
0
Pro
Ce
Sa
Dor
1
1
1
0
1
in p u t
1
Código de usuario
Explorar el teclado (implica esperar hasta que haya una tecla pulsada)
Convertir código de tecla pulsada a código ascii
Código de usuario
El siguiente paso es facilitarle la tarea al procesador. Para ello trasladamos la acción de explorar el
teclado a un dispositivo fuera del procesador, el controlador. Cada vez que lo desee el procesador se
limitará a leer del controlador la tecla pulsada. Si no hay tecla pulsada (código FF) el procesador esperará
hasta que se pulse una (lo que implica lecturas sucesivas de la salida del controlador). La interfaz del
procesador con el controlador se ha simplificado, únicamente ocho bits de entrada. Ahora el código se
reduce a:
Código de usuario
Leer del controlador (esperar hasta que haya tecla pulsada)
Convertir código de tecla pulsada a código ascii
Código de usuario
El controlador puede muy bien hacer la conversión, aunque esto le
resta flexibilidad al procesador
Pro
Ce
Sa
Dor
Controlador
Código de usuario
Leer del controlador código ascii (esperar)
Código de usuario
A continuación introducimos las interrupciones. Preferimos que el código de usuario no espere por la
tecla pulsada, sino que pueda continuar su ejecución si no se ha pulsado ninguna tecla. Para ello el código
de ususario lee la tecla de un buffer. Puede decidir, en el caso de que el buffer esté vacío, esperar o
continuar la ejecución en la confianza de que si se pulsa una tecla esta será almacenada hasta su uso.
9
Buses y Periféricos 99/00
Entrada/Salida
Pro
Ce
Sa
Dor
INT
Controlador
memo
ria
Código de usuario
Consultar el buffer de teclado
Código de usuario
Interrupción
(Cada vez que el teclado genera una interrupción)
Leer código ascii de la tecla pulsada
Escribir en la memoria (buffer)
Ahora lo que ocurre es que cada vez que se pulsa una tecla, el código de usuario se ve desplazado del
procesador para que el código de interrupción lea el valor de la tecla del controlador y lo escriba en
memoria.
El código de interrupción no elabora el valor leído sino que se limita a trasladarlo desde el controlador a
su localización de memoria.
Introducción de DMA
El mecanismo de DMA intercepta la interrupción del controlador de teclado, lee la tecla que le
proporciona y la escribe en su localización de memoria. En todo el proceso el procesador no se ve
interrrumpido y permanece ejecutando código de usuario. Al final de la realización, el controlador DMA
puede avisar al procesador de que la tarea ha sido realizada.
Pro
Ce
Sa
Dor
INT
DMA
Drq
memo
ria
10
Controlador
Buses y Periféricos 99/00
Entrada/Salida
BIBLIOGRAFÍA:
Organización y arquitectura de computadores. Diseño para optimizar prestaciones
William Stallings
Prentice Hall 4ª edición 1997
Computer, organization and Design. The hardware/software interface
David A. Patterson. John L. Hennessy
Morgan Kaupfman. 1998
11
Descargar