i/o Flashcards
Controladores de dispositivos i/o
son circuitos digitales encargados de controlar las
partes electro/mec´anicas del dispositivo seg´un la comunicaci´on realizada con el computador. En la
mayor´ıa de los casos, los controladores son microprocesadores completos, que ejecutar´an programas
especialmente dise˜nados para controlar al dispositivo
funciones controladores de dispositivos i/o
Comunicaci´on con el computador.
Comunicaci´on con el dispositivo.
Almacenamiento temporal.
Detecci´on de errores
Control de elementos mec´anicos/f´ısicos.
Conversi´on de se˜nales continuas en digitales o vice-versa
componentes de los controladores de dispositivos i/o
Circuitos de control Conversores ADC o DAC Memoria: -Buffer -Registros de control -Registros de status -Registros de datos -Registros de direcci´on
funcion circuitos de control de un controlador
estar´an
encargados de regular el funcionamiento del dispositivo, coordinar la comunicaci´on con el
computador y ejecutar la detecci´on y/o correcci´on de errores
funcion Conversores ADC o DAC de un controlador
conversores an´alogo-digital o digital-an´alogo para traducir se˜nales el´ectricas
continuas en informaci´on para el computador o vice-versa
funcion buffer de un controlador
e almacena los datos que el dispositivo este entregando
o recibiendo del computador
funcion registro de control de un controlador
direcciones espec´ıficas de la memoria que son escritos por el
computador para indicar comandos que debe ejecutar el dispositivo
funcion registro de status de un controlador
direcciones espec´ıficas de la memoria que son escritos por el
dispositivo para indicar informaci´on al computador
funcion registro de datos de un controlador
direcciones espec´ıficas de la memoria para leer o escribir datos
individuales o asociados a la memoria local (buffer) del dispositivo
funcion registro de direcciones de un controlador
direcciones espec´ıficas de la memoria para direccionar la memoria
local (buffer) del dispositivo
comunicaciones que pueden ocurrir entre la CPU y un dispositivo i/o
- comunicaci’on de comandos
- comunicacion de estado
- transferencia de datos
comunicacion de comandos
Cuando la CPU quiere indicarle a un dispositivo que realice
una determinada acci´on, debe hacerlo envi´andole comandos a los registros de control. Por
ejemplo si la CPU quiere avisarle a un cierto dispositivo (e.g c´amara web) que se encienda,
deber´a escribir en un determinado registro de control del controlador del dispositivo un cierto
n´umero, que este interpretar´a como el comando de activaci´on
comunicacion de estado
Cuando la CPU quiere obtener informaci´on sobre el estado del
dispositivo, dee hacerlo leyendo uno de los registros de status de ´este. Por ejemplo si la CPU
quiere saber si un dispositivo tiene nueva informaci´on que enviar (e.g el mouse se movi´o, y
tiene nuevas posiciones que enviar), la CPU deber´a leer el valor almacenado en el registro
espec´ıfico e interpretarlo seg´un corresponda
transferencia de datos
Cuando la CPU quiere enviarle datos a un dispositivo o leer datos de ´el, si es poca informaci´on esto se podr´a hacer ocupando registros de datos que tenga el controlador del dispositivo. Si es m´as informaci´on, esto se realizar´a escribiendo o leyendo desde el buffer (memoria) del dispositivo. Por ejemplo, si el disco duro quiere enviarle informaci´on a la CPU, se acceder´a a ´esta mediante el buffer de datos del disco
mecanismos principales para realizar el proceso de direccionamiento y transferencia
de datos
Existen dos mecanismos principales para realizar el proceso de direccionamiento y transferencia
de datos: mapeo a memoria (memory mapped I/O) y usando el mecanismo de puertos (port
I/O).
Memory mapped i/o
. La implementaci´on de esta idea consiste en reservar un espacio de direcciones de memoria
para ser ocupados para ✭✭mapear✮✮ los registros y buffer de los dispositivos de I/O. De esta forma es
posible acceder directamente ocupando una instrucci´on como MOV A, (dir) a un dispositivo
address decoder
Se utiliza en memory mapped i/o. una pieza de hardware especializada que estar´a ✭✭vigilando✮✮ el bus de direcci´on para
determinar si la direcci´on colocada corresponde a la RAM o alguno de los dispositivos
ventajas y desventajas de memory mapped i/o
ventajas: su implementaci´on es simple a nivel de
hardware, es posible ocupar las mismas instrucciones de transferencia y modos de direccionamiento
que para trabajar con memoria y tambi´en es posible realizar operaciones en la ALU, de la misma
forma que se realizaban con datos de memoria.
desventaja: limita el espacio direccionable de la memoria, lo que se
conoce como memory barrier. Debido a que se deben reservar un grupo de direcciones para
apuntar a los dispositivos, estas direcciones no pueden ser ocupadas para almacenar en memoria.
Port i/o
se definen instrucciones espec´ıficas y un espacio de direccionamiento propio para acceder a los
dispositivos. En el caso de la arquitectura Intel, por ejemplo, se definen dos instrucciones: IN que se
ocupa para leer datos desde un dispositivo y OUT que se ocupa para escribir datos en un dispositivo
mecanismos de direccion espacial de port i/o
- utilizar un bus de direcciones especial s´olo para I/O (figura 7) con lo que se asegura
que no habr´a choque entre las direcciones. - m´etodo consiste en ocupar el mismo bus que
el de la RAM, pero indicarle mediante una se˜nal de control al bus, que se est´a refiriendo a una
direcci´on de I/O, y por tanto la RAM no debe considerar ese valor
Polling
la CPU debe estar pregunt´andole o encuestando
al dispositivo continuamente para saber si este tiene algo nuevo que reportar.
desventaja de polling
problema
de esto es que es muy ineficiente, ya que la CPU debe gastar varias instrucciones para determinar
esto, y si fueran varios dispositivos los que hay que revisar, el problema es a´un peor
interrupciones de disp i/o
el dispositivo de I/O ser´a el encargado de avisar
cuando ocurre un suceso relevante a la CPU, liberando a ´esta de tener que estar pregunt´andole
a cada dispositivo si ha habido alg´un evento relevante. Para lograr esto, el dispositivo de I/O se
debe conectar a la CPU con una se˜nal de control dedica denominada interrupt request o IRQ.
IQR interrupt request
senal de control hacia la CPU que avisa cuando ocurre un suceso relevante en algun dispositivo i/o
Interrupt Service Routine (ISR)
subrutinas para atender las interrupciones. En estas rutinas se debe definir el c´odigo encargado de atender
la solicitud del dispositivo.
1. CPU llamar a la ISR asociada al dispositivo.
2. ISR respalda el estado actual de la CPU.
3. ISR ejecuta su c´odigo.
4. ISR devuelve el estado previo a la CPU.
5. ISR retorna.
controlador de interrupciones
a el se conectan todos los dispositivos
y el cual se comunica directamente con la CPU. Cuando ocurre una interrupci´on, el controlador
notificar´a a la CPU. Est´a, para saber quien fue el que interrumpi´o, le env´ıa una se˜nal Interrupt
Acknowledge (INTA) al controlador, para que le env´ıe el id del dispositivo por el bus de datos. Las interrupciones las ordenara de acuerdo a prioridades que
estar´an preestablecidas para los distintos dispositivos
Interrupt
Acknowledge (INTA)
senal que envia la cpu al controlador de interrupciones para saber que dispositivo interrumpi’o. el controlador le env´ıe el id del dispositivo por el bus de datos
vector
de interrupciones
es un conjunto de palabras de memoria (habitualmente
almacenados al comienzo de ´esta), en el cual cada palabra tiene almacenada la direcci´on
de un ISR de un dispositivo. De esta manera, el id que entrega el controlador de interrupciones
luego de que la CPU le env´ıe la se˜nal INTA, va a corresponder a un direcci´on dentro del vector de
interrupciones, que indicara a su vez la direcci´on de memoria donde comienza la ISR asociada, y
por tanto esa direcci´on se cargar´a en el program counter, para que la CPU ejecute las subrutina
End of Interrupt (EOI)
comando enviado Una vez que se termina de ejecutar la ISR, esta se encarga de avisarle al controlador de interrupciones
que ya se completo la atenci´on
masking
consiste en poder especificar que algunas interrupciones
se desestimen
IMR Interrupt
Masking Register
controlador de interrupciones tiene un registro especial, el Interrupt
Masking Register o IMR que permite definir que interrupciones se atender´an y cuales no.
Programmable
Interrupt Controller 8259 PIC
en x86. una pieza de hardware especialmente dise˜nada para manejar
interrupciones de dispositivos de I/O
componentes de PIC
IRQs (cada iqr esta asociado a un dispositivo) Interrupt Request Register In-Service Register Interrupt Mask Register Priority Solver
Interrupt Request Register
Registro de 8 bits mantiene la informaci´on de las interrupciones
que est´an actualmente esperando un acknowledge de la CPU (INTA). Cada bit se asocia a
un IRQ, donde un 1 en ese bit representa que el dispositivo asociado a ese IRQ interrumpi´o y
espera INTA
In-Service Register
Registro de 8 bits mantiene la informaci´on de las interrupciones que
est´an siendo atendidas. Cada bit se asocia a un IRQ, donde un 1 en ese bit representa que el
dispositivo asociado a ese IRQ est´a siendo atendido y espera EOI.
Interrupt Mask Register
Registro de 8 bits mantiene la informaci´on de las interrupciones
que deben ser consideradas. Cada bit se asocia a un IRQ, donde un 1 en ese bit representa
que si el dispositivo interrumpe debe ser atendido; un 0 indicar´a que una interrupci´on de ese
dispositivo no ser´a considerada. Este registro puede ser modificado en la ISR usando el port
I/O mediante el puerto 0x21 para el primer PIC, y 0xA1 para el segundo PIC
Priority Solver
Circuito que define que interrupci´on notificar primero a la CPU, en caso de
existir varias interrupciones pendientes
Interrupt Flag (IF)
A nivel de la CPU, la habilitaci´on y deshabilitaci´on de las interrupciones est´a controlada mediante
un flag del registro de status denominado Interrupt Flag (IF) el cual cuando est´a en 0
indica que no se atender´an interrupciones, y cuando est´an en 1 indica que si se atender´an
excepciones
excepciones ocurren cuando la CPU detecta alguna condici´on de error al ejecutar alguna instrucci´on.
las excepciones las controla directamente la CPU, y no un elemento externo
exception handlers
isr de las excepciones
interrupciones
de software
corresponde a interrupciones que son
gatilladas expl´ıcitamente en un programa ejecutando una instrucci´on especial. En el caso de la
arquitectura x86, la instrucci´on usada para gatillar una interrupci´on de software es INT dir donde
dir corresponde a una direcci´on de memoria dentro del vector de interrupciones
CLI (clear interrupt flag) y STI
para deshabilitar las interrupciones se cuenta
con la instrucci´on CLI (clear interrupt flag); para setear en 1 el flag y habilitar las interrupciones
se cuenta con la instrucci´on STI
Programmed I/O (PIO)
Esta forma de transferencia de datos se conoce como Programmed I/O (PIO), ya que se
realiza a trav´es del programa. Se puede observar en este caso que en los pasos 2 y 3 la CPU
act´ua simplemente como un dep´osito intermedio de datos. El problema de esto es que la CPU debe
estar ocupada realizado la transacci´on (que pueden ser muchos datos) perdiendo la posibilidad de
hacer otra funcionalidad ´util.
Direct Memory Access (DMA)
dispositivo pudiera acceder
directamente a la memoria para copiar los datos y solamente contactarse con la CPU al comienzo
y al final,
controlador DMA
El controlador DMA
tendr´a acceso al bus de datos y se encargar´a de traspasar la informaci´on que el dispositivo le env´ıe
directamente a memoria sin pasar por la CPU
componentes controlador DMA
Registro de direcci´on destino Registro de direcci´on origen Registro contador de palabras Registro de control (permite q la cpu configure el controlador) Registro de estado Buffer Unidad de control
bridges
En la pr´actica, las conexiones entre los buses que se observan en el diagrama no se pueden
realizar directamente. La CPU, memoria y los distintos dispositivos de I/O tendr´an diferentes
velocidades, y por tanto se requieren componentes intermediarios, que sean capaces de coordinar
la comunicaci´on entre dispositivos. Estos componentes se conocen como bridges
North Bridge
el controlador encargado de comunicar a la CPU, la memoria RAM, la
tarjeta gr´afica y al resto de los dispositivos de I/O, conectados con el South Bridge. Habitualmente
se le denomina controlador de memoria, ya que es el encargado de hacer la comunicaci´on entre
la RAM y la CPU. El North Bridge se caracteriza por trabajar con dispositivos y buses de alta
velocidad, y por eso se encuentra separado del acceso directo a los I/O. El North Bridge funciona
como Address Decoder, para manejar las instrucciones de acceso a I/O mapeadas a memoria que
provengan de la CPU, y tambi´en incluye un controlador DMA.
South Bridge
l encargado de comunicar a todo el resto de los I/O con la memoria y la
CPU, a trav´es del North Bridge, por lo que se le conoce como controlador de I/O. El rango de
velocidades de los dispositivos que se conectan al South Bridge es amplio, pero en general los dispositivos
ser´an m´as lentos que los conectados al North Bridge, lo que incluye discos, DVD, teclado,
mouse, entre otros. Adicionalmente, al South Bridge se conectan dispositivos de I/O especiales,
como el controlador de interrupciones y el controlador DMA.
buses del North Bridge
Front Side Bus (FSB)
Memory Bus
BIOS
BIOS es un programa que se ocupa para
inicializar los distintos procesos que permiten el funcionamiento de un computador. Debido a que
cuando el computador est´a apagado la informaci´on del sistema operativo (el programa principal) se encuentra en disco (I/O), y que la memoria RAM es no vol´atil, al encender un computador, la
CPU no tiene acceso a las instrucciones del sistema operativo. Para lograr traspasar el programa
del sistema operativo desde el disco a la RAM, al comenzar a funcionar el computador, se carga
el programa que se encuentra almacenado en la ROM de la BIOS.