Modulos De Entrada Y Salida
soldeandrea1 de Noviembre de 2012
3.542 Palabras (15 Páginas)717 Visitas
Que son los módulos de entradas y salidas
Los modulos de E/S establecen la comunicación entre la unidad central y el proceso, filtrando, adaptando y codificando de forma comprensible para dicha unidad las señales procedentes de los elementos de entrada, y decodificando y amplificando las señales generadas durante la ejecución del programa antes de enviarlas a los elementos de salida
Como funcionan?
Si consideramos que el núcleo del ordenador está constituido por la placa-base y los elementos montados en ella (los elementos que podemos llamar "internos"), y que el resto de los dispositivos conectados son "externos", entonces podemos considerarlas dos tipos de comunicaciones o transferencias de información:
• Transferencias externas o de entrada/salida (E/S); ocurren entre los elementos exteriores y la placa-base. Básicamente son transferencias entre dispositivos exteriores (periféricos) y el procesador, o entre periféricos y memoria.
• Transferencias Internas; ocurren entre los elementos internos. Mayoritariamente se trata de transferencias entre el procesador y la memoria, o entre las diversas posiciones de memoria. Pero también (y esto es importante) existen transferencias entre los anteriores y otros dispositivos hardware que conectan directamente con el bus. Considere que al fin y al cabo, incluso los dispositivos considerados "externos" o periféricos, conectan con algún dispositivo (por ejemplo, un adaptador) que está a su vez conectado al bus de la placa base.
Debemos recordar aquí que las operaciones E/S en las que interviene la memoria, son abrumadoramente más importantes y frecuentes que las del resto, por lo que el PC les da un tratamiento especial; disponen de un subsistema específico en el bus, y el tratamiento software también es especial (el procesador dispone de un montón de instrucciones específicas para controlar las operaciones con la memoria).
En general los procesos de E/S pueden ser de tres tipos según la forma en que se inician y controlan:
- E/S programadas
También denominadas de interrogación o encuesta ("Polling"). El programa decide cuando y con que dispositivos se establecerá la comunicación de E/S. Es un método adecuado en determinadas circunstancias (periféricos lentos), pero resulta ineficiente si deben atenderse periféricos rápidos o gran cantidad de ellos. Sobre todo si la comunicación se origina del lado de los dispositivos (es el periférico el que solicita la comunicación), porque el procesador debe interrogar periódicamente al periférico, lo que supone un tiempo extra.
E/S solicitada mediante interrupción
Este método es utilizado intensivamente en la programación actual, y es la base del funcionamiento de los procesadores modernos
La esencia del método consiste en que el periférico que desea establecer comunicación, dispone de un canal especial ("casi" siempre abierto) para solicitarla al procesador. Cuando el procesador recibe esta señal, que se denomina petición de interrupción, termina la instrucción que esté en ejecución y atiende al periférico. Es el sistema más eficiente para atender a periféricos de velocidad media, o cuando hay que atender a gran número de ellos.
E/S gobernada por controlador de bus
Los sistemas anteriores tienen el inconveniente de que cualquiera que sea el procedimiento por el que se inicia la E/S, es el procesador el que debe atenderla. Sin embargo, hay ocasiones, en especial cuando se trata de transferencias de datos entre periféricos rápidos y memoria (por ejemplo discos), en que se alcanza una mayor eficacia dejando al procesador al margen del proceso (la cuestión tiene cierta lógica pues al fin y al cabo, el asunto no va con él). Estos procesos se conocen como acceso directo a memoria DMA ("Direct Memory Access"), y exigen dos requisitos:
I- El procesador debe ser capaz de dejar libre el bus de datos para que otro dispositivo tome su control, limitándose mientras tanto a esperar.
II- Otro dispositivo debe tomar el control del bus ("bus mastering"), para controlar él mismo el proceso.
Siendo mas especifico el DMA significa acceso directo a memoria el sistema DMA dispone de algunos elementos hardware auxiliares que lo convierten en un subsistema autónomo dentro del bus externo.
Estos elementos son:
• Ciertas líneas dedicadas en el bus de control .
• Un procesador específico, el DMAC ("DMA Controller"), que permite que puedan realizarse estos intercambios sin apenas intervención del procesador .
• Pequeñas zonas auxiliares de memoria, conocidas como Registros de página .
§3 Líneas de control
El bus de control tiene líneas específicas para este tipo de intercambios, de forma que el DMA es un subsistema autónomo dentro del mecanismo general de intercambio de datos y control del bus. Son las siguientes:
• Líneas DRQ1 a DRQ3 ("DMA request"). Utilizadas por los dispositivos que necesitan efectuar un acceso directo a memoria.
• Líneas DACK1 a DACK3 ("DMA acknowledge"). Se utilizan para acusar recibo de la petición DRQ correspondiente.
• AEN ("Access Enabled") Cuando esta señal está alta, el controlador DMA tiene control sobre ciertas líneas del bus; precisamente las que gobiernan los intercambios con memoria y puertos (MEMR, MEMW, IOR, IOW, Etc).
• MEMR ("Memory Read") Cuando se activa, esta señal indica a la memoria conectada al bus que escriba los datos en el bus de datos.
• MEMW ("Memory Write") Cuando se activa, indica a la memoria que almacene los datos situados en el bus de datos.
• Conexiones del controlador DMA con las patillas 30 y 31 de la UCP ( 3.2.1)
§4 Controlador DMA
El mecanismo de acceso directo a memoria está controlado por un chip específico, el DMAC ("DMA Controller"), que permite realizar estos intercambios sin apenas intervención del procesador. En los XT estaba integrado en un chip 8237A que proporcionaba 4 canales de 8 bits (puede mover solo 1 Byte cada vez); sus direcciones de puerto son 000-00Fh. Posteriormente en los AT se instalaron dos de estos integrados y las correspondientes líneas auxiliares en el bus de control.
En contra de lo que podría parecer, el resultado no fue disponer de 8 canales, porque el segundo controlador se colgó en "Cascada" de la línea 4 del primero (más adelante se explica este concepto ). Los canales del segundo DMAC está asignado a las direcciones 0C0-0DFh y son de 16 bits. Pueden mover 2 Bytes (de posiciones contiguas) cada vez.
Cada canal tiene asignada una prioridad para el caso de recibirse simultáneamente varias peticiones (los números más bajos tienen prioridad más alta). Pueden ser utilizados por cualquier dispositivo que los necesite (suponiendo naturalmente que esté diseñado para soportar este modo de operación). Cada sistema los asigna de forma arbitraria, pero hay algunos cuya asignación es estándar.
Canal Uso
0 En los primitivos PCs estaba dedicado al refresco de memoria. En los sistemas actuales está libre.
1 Libre: Generalmente a dispositivos SDLC [3] (codificadores de audio)
2 Controlador de disquete
3 Controlador puerto de impresora ECP [2]
4 Libre en los XT. Ocupado en los AT (segundo controlador DMAC)
5 Libre (AT)
6 Libre (AT)
7 Libre (AT)
Nota: El Sistema Windows 98 incluye el programa MSINFO32.EXE con el que se pueden comprobar muchas características del sistema, incluyendo la asignación de canales DMA. Los usuario de Linux pueden utilizar el comando dmesg | grep -i dma para obtener una relación de los dispositivos del sistema que, en principio, están habilitados para utilizar este tipo de transferencias. Generalmente la relación contiene como mínimo los dos canales IDE (ide0 e ide1) y la unidad de disco (hda).
§5 Funcionamiento
El mecanismo de acceso directo a memoria DMA es bastante complejo en sus detalles, y por supuesto, el movimiento de grandes volúmenes de datos entre memoria y un dispositivo requiere cierta intervención del procesador. El movimiento se hace a ráfagas, y cada transferencia se inicia con una interrupción que obliga al procesador a suspender su tarea para permitir un nuevo intercambio. A continuación intentaremos mostrar una visión general del proceso.
Empezaremos señalando que el DMA permite mover datos entre un puerto y memoria, o entre memoria y un puerto, pero no entre dos puertos o entre dos posiciones de memoria [4]. Como veremos a continuación, cada transferencia DMA requiere cierta preparación previa; conocer el volumen de datos a transferir (la más simple es de 1 byte) y la dirección de inicio del bufer de memoria involucrado (del que se leerán los datos o donde se escribirán). Para esto dispone de dos registros para cada línea; el contador y el registro de direcciones. Según se refieran a operaciones de lectura (memoria dispositivo) o escritura (dispositivo memoria) reciben distintos nombres porque su significado difiere:
• Escritura: Dirección de inicio ("Write starting address"). Contador ("Write starting word count")
• Lectura: Dirección actual de lectura ("Read current address"). Contador ("Read remaining word count")
Después de cada transferencia (de 1 byte) el registro de direcciones del DMAC es incrementado en una unidad, y el contador es disminuido en una unidad.
...