Está en la página 1de 26

Buses, la interfaz interna del sistema

Manuel Alejandro Barranco Gonzlez.


Ivn Guardia Hernndez.
1.- Introduccin
La comunicacin entre el ser humano y el sistema se realiza a travs
de los dispositivos de entrada/salida. stos forman la interfaz externa y
permiten al usuario interaccionar con l intercambiando informacin. Sin
embargo, debe existir una interfaz interna entre los diferentes dispositivos de
entrada/salida y el resto del sistema, compuesto, bsicamente, por el
procesador y la memoria principal.
Para interconectar los dispositivos de una forma eficaz y con un coste
aceptable, es necesario utilizar un medio o lnea compartida por la que circule
la informacin. De otro modo, tendramos que incorporar varias lneas
dedicadas para cada dispositivo, incrementando el coste e impidiendo la
posibilidad de aadir nuevos dispositivos de entrada/salida. A este medio o
lnea compartida se le llama bus. Los dispositivos conectados a l se
comunican a travs de transacciones, es decir, mediante lecturas y escrituras
de unos a otros.
La gran variedad de dispositivos que se pueden interconectar a travs
de un bus origina toda una serie de problemas. Por un lado, se complica el
estudio de los buses, ya que, de hecho, un bus puede ser casi cualquier medio
que sea capaz de interconectar dispositivos. Por otro lado, el hecho de que el
bus sea compartido y que los dispositivos tengan distintas prioridades y
velocidades, requiere un control del mismo. Se ha de decidir como se ocupa el
bus durante una transaccin, en qu forma debern acceder los distintos
dispositivos para no ocasionar conflictos elctricos, se ha de especificar el
modo de que unos dispositivos dirigen a otros durante una operacin, se ha de
arbitrar quin puede acceder al bus (atendiendo a las prioridades) en cada
momento y se ha de sincronizar a los dispositivos que interaccionan durante
una transaccin.
La gran diversidad de buses y de dispositivos de entrada/salida que
existen en el mercado origina la aparicin de problemas en el diseo de
diferentes buses y dispositivos que sean compatibles.
Adems de los aspectos de interconexin, debemos tener en cuenta la
forma en que el procesador dialoga y se comunica con los dispositivos de
entrada/salida. Cuando un proceso (programa en ejecucin), a travs de una o
varias transacciones, realiza una transferencia de salida o entrada de datos con
un dispositivo, se dice que realiza una operacin de entrada/salida. Se debe
encontrar una manera para que el procesador pueda direccionar los distintos
dispositivos e intercambie datos e informacin de control con ellos. Sin
embargo, la responsabilidad que recae sobre el procesador y los dispositivos a
la hora de dirigir las operaciones de entrada/salida influye de forma distinta en
el rendimiento del sistema.
Por otro lado, el sistema operativo se encuentra con una serie de
dificultades para gestionar las operaciones de entrada/salida. stas estn
relacionadas con el uso de memoria cache y de memoria virtual, ya que
provocan la aparicin de datos obsoletos, as como de conflictos en los
direccionamientos utilizados para realizar las transferencias.
Comenzaremos describiendo el sistema de buses clasificndolo desde
diversos criterios, explicando las diferentes tcnicas para controlarlos y
estudiando algunos estndares. Despus, haremos una descripcin de los
distintos mtodos que se han utilizado y se utilizan para establecer una
interfaz entre el procesador y el sistema operativo con los dispositivos de
entrada/salida.
2.- Buses
El bus es el medio de interconexin entre los diferentes subsistemas de
un sistema. El procesador y la memoria principal se han de comunicar con los
dispositivos de entrada/salida, adems de estar interconectados entre s. En
definitiva, el bus nos permite tener todos los subsistemas conectados sin la
necesidad de tener lneas dedicadas para cada uno de ellos.
El bus est compuesto por diversas lneas en paralelo que conectan los
diferentes dispositivos. Esta organizacin permite un bajo coste y versatilidad.
Por otro lado, ofrece una configuracin flexible, ya que se pueden ir
incorporando nuevos dispositivos sin la obligacin de reestructurar el sistema
segn las nuevas necesidades.
Debido a que por el bus pasa toda la informacin que ha viajar entre
los dispositivos, ste se puede convertir en un serio cuello de botella del
sistema. Por esta razn, el diseo de buses es una pieza clave para aumentar el
rendimiento del mismo. Principalmente, las mayores dificultades de diseo
son de carcter fsico, es decir, la longitud del bus y el nmero de dispositivos
interconectados.
2.1.- Clasificacin
Debido a la gran cantidad de tipos de dispositivos y a las diferentes
funcionalidades que se pueden presentar, a lo largo de la historia, han ido
apareciendo muchas clases de buses que han ido cubriendo las distintas
necesidades. Por ello, para catalogarlos es necesario establecer algn tipo de
clasificacin. Los buses se pueden clasificar segn su organizacin,
construccin o temporizacin.
2.1.1.-Organizacin
Existen muchas formas de organizar los buses y los dispositivos
dentro del sistema. Bsicamente, esas organizaciones se ajustan a los
siguientes tipos:
1) Bus de sistema: Hay un nico bus compartido que interconecta
tanto al procesador y a la memoria principal como a todos los dispositivos de
entrada/salida. A este bus se le conoce con el nombre de bus de sistema . Es el
ms fcil de implementar, pero puede presentar serios cuellos de botella.
2) Bus de sistema y buses de entrada/salida: Las transacciones entre el
procesador y la memoria principal se realizan a travs del bus del sistema. Los
dispositivos de entrada/salida se comunican entre s a travs de un bus
dedicado que recibe el nombre de bus de entrada/salida. Como los
dispositivos de entrada/salida requieren estar conectados con la memoria
principal, se habilita un acceso a sta desde el bus de entrada/salida mediante
un dispositivo llamado adaptador de bus. Esta organizacin libera trfico entre
el procesador y la memoria, separando las transacciones de entrada/salida.
2.1.2.- Construccin
Existen tres formas para implementar las interconexiones de los
diferentes dispositivos del sistema a los buses:
1) Motherboard: El bus se implementa sobre una placa donde se
encuentran unos zcalos especficos para conectar tanto el procesador como la
memoria principal. Adems, la placa posee un conjunto de ranuras (slots de
expansin), para incorporar nuevos dispositivos. Esta construccin no permite
modificaciones. Al saber de antemano como estarn colocados todos los
dispositivos, se puede conseguir una implementacin mucho ms eficiente.
Hoy en da prcticamente todos los ordenadores personales presentan este tipo
de construccin. Una foto de motherboard se muestra en la figura 1.
2) Backplane: La interconexin de los dispositivos de entrada/salida,
el procesador y la memoria principal se realiza en una caja donde no hay
ninguna ranura de conexin ms relevante que las dems. Simplemente, los
diferentes componentes estn implementados sobre unas tarjetas que se van
insertando en la caja, quedando, as, interconectados. Esta construccin es
muy flexible, ya que permite muchas organizaciones diferentes y ofrece
posibilidades de ampliacin.
3) Entrada/Salida: Son cables que conectan dispositivos entre s. Por
ejemplo, el cable de una impresora o el cable de red. Se suelen usar para
cubrir distancias largas y, por limitaciones fsicas, no suelen ser muy rpidos.
FIGURA 1 Motherboard del Intel 0.286.
2.1.3.- Temporizacin
Cuando un dispositivo consigue tomar el control del bus, debe
sincronizarse con ste y los dispositivos con los que va a interactuar para
realizar la transferencia o transaccin de los datos. Segn la forma en que se
realiza esta sincronizacin, los buses se clasifican en:
1) Sncronos: Todos los dispositivos se rigen por una seal de clock
comn. Se da un nmero de ciclos de reloj fijo para cada transaccin. Todas
las transacciones tardan lo mismo en llevarse a cabo.
2) Asncronos: La duracin de las transacciones es variable. El
comienzo y la finalizacin se da a conocer a travs de seales de control.
2.2.- Las operaciones bsicas del bus, las transacciones
A travs de un bus bsicamente se llevaran a cabo transacciones, es
decir, lecturas o escrituras de un determinado dispositivo a memoria principal.
En una lectura, el dispositivo usa inicialmente el bus para especificar la
direccin de memoria requerida. Tras un determinado tiempo de bsqueda del
dato, el bus se vuelve a utilizar parar recuperar la informacin. En caso de una
escritura, es suficiente mandar la direccin y los datos de golpe, haciendo uso
del bus una sola vez. Existen dos tipos de transacciones segn sea la
ocupacin del bus:
1) Ciclo continuo: El bus est ocupado durante toda la transaccin, es
decir, desde que se realiza la peticin mandando la direccin hasta que se
recuperan los datos.
2) Ciclo dividido: El dispositivo ocupa el bus slo los ciclos
necesarios para enviar las direcciones y los datos. Cuando se realiza una
lectura, el dispositivo enva la direccin y libera al bus hasta que el dato est
listo a la salida de la memoria. Despus, vuelve a ocupar el bus para leer el
dato que haba solicitado. De esta manera, aumentamos el ancho de banda
(nmero de palabras que se transmiten por unidad de tiempo) del bus, ya que
mientras un dispositivo espera la respuesta de una lectura, en el bus se puede
iniciar otra transaccin. Sin embargo, disminuye el tiempo de respuesta, ya
que cuando el dato solicitado est disponible, el bus puede estar ocupado
atendiendo otra transaccin.
Otro enfoque se basa en usar dos buses, uno para datos y otro para
direcciones. De esta manera, se libera considerablemente la carga que debe
soportar cada bus, equilibrndolas.
2.3.- Cmo funciona el bus
Debido a que el bus es un hilo compartido por muchos dispositivos, se
hace indispensable un mnimo de organizacin que permita el buen
funcionamiento. Primero, se debe tener en cuenta la forma y la prioridad en
que cada uno de los dispositivos puede acceder al bus. Luego, se debe
determinar quin inicia y finaliza las transacciones, as como la sincronizacin
que debe existir entre ellos. En definitiva, se debe especificar de forma
exhaustiva el protocolo del bus.
2.3.1.- Peticin de bus
Como los hilos de los que est formado el bus han de ser compartidos,
hay que evitar los conflictos elctricos derivados del uso comn. Se debe
asegurar que slo un dispositivo estar usando el bus en un momento
determinado. Cuando un dispositivo requiere la utilizacin de ste, utiliza un
hilo del mismo para indicar que desea realizar una transaccin. Los
dispositivos hacen uso, bsicamente, de dos tcnicas para utilizar los hilos del
bus sin conflictos. La eleccin de una tcnica u otra estar condicionada por la
particularidades elctricas del bus en concreto.
1) Driver tristate: En la salida del dispositivo hacia el bus hay un
elemento electrnico, llamado tristate. Este dispositivo puede hallarse en tres
estados distintos: especificando un cero lgico a la salida, especificando un
uno lgico o en estado de alta impedancia (desconectado). As, cuando un
dispositivo accede al bus, simplemente habilita el tristate. El hecho de que
slo el triestate de uno de los dispositivos est habilitado, asegura que no
habr conflictos. Un esquema que ilustra el funcionamiento de esta tcnica se
ubica en la figura 1.
2) Driver Open Collector: En la salida del dispositivo hay un
interruptor que lo conecta con el hilo del bus. Cuando el dispositivo no desea
acceder a ste, mantiene el interruptor abierto para ser ignorado. En el
momento en que el dispositivo cierra el interruptor, el hilo del bus se deriva a
masa y se accede a l. El hecho de que varios de estos interruptores estn
cerrados en un mismo instante de tiempo no provoca conflicto elctrico
alguno en el hilo, ya que, en conjunto, implementan una funcin lgica sobre
ste. Ver figura 2.
2.3.2.- Master y slave
Cada transaccin tiene asociado un dispositivo que desempea un
papel activo en la operacin y es el encargado de iniciarla, este dispositivo
recibe el nombre de master. A su vez, para cada transaccin habr uno o ms
dispositivos llamados slave que harn lo que el master ordene. Puede haber
dispositivos que slo hagan el papel de master, otros de slave e incluso
algunos de master y slave, segn las circunstancias. Un ejemplo tpico se da
cuando el procesador quiere escribir en memoria principal, actuando el
procesador como master y la memoria como slave.
El master inicia la transaccin enviando al bus una seal que indica la
direccin del slave destino. Cada slave mira si la seal del bus le
corresponde. Una vez que quede claro cuales son los dispositivos origen y
destino de la operacin, ambos se sincronizan y llevan a cabo la operacin en
s. Es posible habilitar varios slave a la vez para un mismo master, en dicho
caso la direccin que ir a cada uno de ellos se llama direccin broadcast.
Disp
Disp
5 v.
Bus Bus
Disp
Disp
FIGURA 2 Driver tristate y Driver open collector
2.3.3.- Arbitraje
En el caso de haber ms de un master, tiene que existir algn tipo de
control sobre quin tiene derecho a tomar el control del bus y qu prioridades
tiene cada dispositivo. Para solucionar el problema, se incorpora un
controlador o rbitro de bus. Se pueden implementar tres estrategias diferentes
para el arbitraje del bus.
1) Daisy-chain: Hay dos lneas comunes del tipo open collector: busy
y request. Los dispositivos estn conectados en serie por la lnea grant.
Cuando alguien quiere usar el bus, pone a uno la lnea request. A
continuacin, el controlador del bus se da cuenta de que alguien pidi el
control y espera a que la lnea busy este a cero para enviar por la lnea grant
un uno. Este uno ir saltando de dispositivo en dispositivo, segn estn
colocados, hasta encontrar alguno que est solicitando el bus. ste pondr a
uno la lnea busy y podr empezar la transaccin. Una vez haya acabado,
pondr de nuevo a cero la lnea busy. Con este esquema, la electrnica del
controlador del bus es muy sencilla. Pero la colocacin de los dispositivos a lo
largo de la lnea grant marca las prioridades de acceso. Ver figura 3.
2) Polling: Hay dos lneas comunes del tipo open collector: busy y
request. Adems hay k lneas (donde k es el logaritmo en base dos del nmero
de dispositivos) llamadas lneas de escrutinio. Mientras la lnea busy est a
cero, el controlador va enviando por las lneas de escrutinio el nmero del
dispositivo (codificado en binario) que opta ha tener el control del bus. Si un
dispositivo reconoce su nmero y tiene que coger el bus, pone a uno la lnea
busy y realiza la transaccin. Una vez ha acabado, pone a cero la lnea busy.
Esta configuracin permite programar las prioridades. Ver figura 4.
CONTROLADOR
DEL BUS
D1 D2 D3 Dn
grant
reques
t
busy
FIGURA 3 Daisy-chain
3) Independece request: Cada dispositivo tiene dos lneas individuales
(busy, grant) que van hasta el controlador del bus. Cuando alguien quiere el
bus, pone a uno la lnea request. Por su parte, el controlador del bus analizar
todas la peticiones individuales y decidir que dispositivo coger el bus. Esto
lo indicar a cada uno en concreto a travs de las lneas grant. Esta estrategia
permite prioridades fcilmente programables y es la ms rpida. Por el
contrario, es la ms costosa debido al elevado nmero de lneas que requiere
para su funcionamiento. Ver figura 5.
CONTROLADOR
DEL BUS
D1 D2
D3
Dn
reques
t
busy
escrutinio
FIGURA 4 Polling
D1 D2 Dn
grant reques
t
grant
grant
reques
t
reques
t
CONTROLADOR
DEL BUS
FIGURA 5 Independece request
2.3.4.- Sincronizacin
Como hemos mencionado anteriormente, para que dos dispositivos
sepan en cada momento en que estado se encuentra una transaccin y puedan,
as, iniciarla y finalizarla correctamente, es necesario algn tipo de
sincronizacin. Se puede conseguir de tres formas diferentes:
1) Buses Sncronos: Existe una seal de reloj comn. Hay un nmero
de ciclos fijos asignados a cualquier transaccin. De esta manera, todas las
transacciones tardan lo mismo independientemente del dispositivo. La
velocidad del bus ser la de aquella transaccin ms lenta. Por ello, para
asegurar un buen funcionamiento, hay que conectar al bus dispositivos ms
rpidos que el ms lento que haya. Esta organizacin es rpida y barata, pero
las lneas no pueden ser largas. Tpicamente son los buses que interconecta el
procesador con la memoria principal.
2) Buses asncronos: Son autotemporizados, es decir, en cada
transaccin el master y el slave se van avisando el uno al otro del comienzo y
la finalizacin de la transaccin a travs de unas seales de control. De esta
manera, se puede conectar cualquier tipo de dispositivo al bus
independientemente del tiempo que tarde en llevar a cabo sus transacciones.
3) Buses semisncronos: Viene a ser como un bus sncrono, pero en el
que los dispositivos lentos son capaces de implementar una seal wait que los
dems interpretan como la espera de un nmero determinado de ciclos. Los
buses de los PC actuales son semisncronos.
2.5.- Estandarizacin
A lo largo del tiempo, cada fabricante disea sus dispositivos de
entrada/salida segn las necesidades del mercado. Como el bus es el lugar
donde todos estos dispositivos van a ir conectados, es importante que haya
algn tipo de interfaz estndar entre ste y los dispositivos de entrada/salida
que permita, tanto al diseador de sistemas como al diseador de dispositivos,
trabajar independientemente en nuevos modelos con la seguridad de que
funcionarn juntos.
La estandarizacin de un bus en concreto puede ser debida al uso del
mismo en muchas mquinas populares. Esto obliga a los fabricantes a
adaptarse a este diseo para poder conectar sus dispositivos. Otras veces, un
estndar aparece como un convenio entre los diseadores de sistemas y los
diseadores de dispositivos de entrada/salida.
Algunos de los buses estndares se muestran en la tabla de la figura 5.
Los tres primeros buses fueron definidos como buses procesador-memoria
principal, mientras que los dos ltimos fueron buses de entrada/salida. El
ancho de banda de los buses procesador-memoria principal suponen que ste
trabaja completamente cargado, que se transmiten palabras simples y bloques
de longitud ilimitada, que se ignora la latencia de memoria y que el tiempo de
acceso a la misma es de 150 ns. Los datos de los buses procesador-memoria
principal estn extrados de un estudio realizado por Borril en 1986. El ancho
de banda de los buses de entrada/salida estn dados suponiendo la mxima
frecuencia de transmisin. Por ltimo, el estndar SCSI ofrece tanto
entrada/salida asncrona (1.5 MB/s) como sncrona (5 MB/s).
VME Bus Future Bus Multibus II IPI SCSI
Anchura de bus
128 96 96 16 8
Direcciones/datos
multiplexados
No multiplexado Multiplexado Multiplexado N/A N/A
Anchura de datos
16 a 32 bits 32 bits 32 bits 16 bits 8 bits
Tamao de transferencia
Simple o
mltiple
Simple o
mltiple
Simple o
mltiple
Simple o
mltiple
Simple o
mltiple
Nmero de amos del bus
Mltiple Mltiple Mltiple Simple Mltiple
Divisin de transacciones
No Opcional Opcional Opcional Opcional
Reloj
Asncrono Asncrono Asncrono Asncrono Cualquiera
Ancho de banda, palabra
simple, 0 ns. Acceso a
memoria
25 MB/s 37 MB/s 20 MB/s 25 MB/s 5 15 MB/s
Ancho de banda, palabra
simple, 150 ns. acceso a
memoria
12`9 MB/s 155 MB/s 10 MB/s 25 MB/s 5 15 MB/s
Ancho de banda,
palabras mltiples, 0 ns.
acceso a memoria
279 MB/s 952 MB/s 40 MB/s 25 MB/s 5 15 MB/s
Ancho de banda,
palabras mltiples, 150
ns. Acceso a memoria
136 MB/s 208 MB/s 133 MB/s 25 MB/s 5 15 MB/s
Mximo nmero de
dispositivos
21 20 21 8 7
Longitud mxima de bus 05 metros 05 metros 05 metros 50 metros 25 metros
Estndar IEEE 1014 IEEE 896.1 ANSI/IEEE
1296
ANSI
X3.129
ANSI
X3.131
FIGURA 5 Informacin sobre cinco buses estndares.
3.- Interfaz entre la procesador y los dispositivos de
entrada/salida
En la mayora de los programas que se ejecutan en un sistema se
producen operaciones de entrada/salida. Ya hemos visto que el procesador se
comunica con los dispositivos a travs del sistema de buses, pero Cmo
dialoga con ellos? Qu parte del trabajo de entrada/salida es responsabilidad
del procesador y qu parte es de los dispositivos de entrada/salida?
Respondiendo a la primera pregunta, podemos decir que se puede
elegir entre dos alternativas para que el procesador direccione a un dispositivo
de entrada/salida. La primera de ellas y la ms comn se conoce como
entrada/salida mapeada en memoria. Consiste en reservar una parte del
espacio de direcciones de memoria principal para asignrsela a los distintos
dispositivos. De esta forma, las rdenes que se mandan hacia ellos son
accesos a direcciones mapeadas en la memoria. En la otra alternativa, el
procesador utiliza cdigos de operacin de entrada/salida especficos para
transmitir las rdenes de entrada/salida. Tanto si se utiliza un esquema como
otro, el procesador dialoga con los dispositivos mediante escrituras y lecturas
en registros de control y estado que stos poseen para tal fin.
Contestar a la segunda pregunta es ms complicado, ya que a lo largo
del tiempo se han ido sucediendo varias tcnicas que delegan diferentes
responsabilidades a las distintas partes del sistema. A medida que los sistemas
han ido evolucionando, las tcnicas dotaban de ms capacidad de proceso a
los componentes individuales, aliviando cada vez ms al procesador de tener
que hacerse cargo de las operaciones de entrada/salida y mejorando el
rendimiento. A continuacin y para clarificar este punto, describiremos las
distintas tcnicas o esquemas que se han ido empleando, aunque haremos ms
hincapi en las que se han desarrollado recientemente.
3.1.- Entrada/salida programada sin interrupciones
En un principio, los sistemas eran tan simples que el procesador
controlaba las operaciones de entrada/salida directamente. Es decir, se
encargaba de especificar cada orden a los dispositivos de entrada/salida para
realizar la operacin. Este tipo de control directo se sigue empleando en
pequeos dispositivos controlados por microcontroladores.
Cuando los sistemas se hicieron ms complejos, se aadi un mdulo
o controlador de entrada/salida para cada tipo de dispositivo. Los
controladores de entrada/salida poseen una serie de registros de estado, de
control y de datos que permiten al procesador determinar cul es el estado de
la operacin de entrada/salida y actuar en consecuencia. Los controladores se
encargan de realizar las operaciones de entrada/salida relacionadas
directamente con el dispositivo (por ejemplo, posicionar el brazo en el sector
adecuado de un disco), liberando, as, al procesador de las operaciones ms
cercanas al hardware.
Cuando el procesador encuentra una instruccin de entrada/salida,
enva al controlador adecuado una orden especfica. Cuando el controlador
completa la accin requerida, cambia sus registros de estado para informar de
que ya ha terminado. Sin embargo, no avisa al procesador de este cambio,
sino que ste tiene que revisar peridicamente los registros de estado del
controlador para determinar si la operacin de entrada/salida a concluido.
Por otro lado, es importante destacar que con este esquema el
procesador es el responsable de transferir los datos entre la memoria principal
y los dispositivos. Para ello, su repertorio de instrucciones de entrada/salida
debe abarcar los siguientes aspectos:
1) Control: Debe poseer instrucciones que se empleen para activar a
un dispositivo de entrada/salida y especificarle qu operaciones debe realizar.
2) Comprobacin: Ha de ofrecer instrucciones que se empleen para
realizar las comprobaciones necesarias de los bits de los registros de estado
asociados a cada dispositivo.
3) Lectura y escritura: Debe disponer de instrucciones que se utilicen
para realizar las transferencias de datos entre la memoria y los dispositivos.
3.2.- Entrada/salida programada con interrupciones
El problema que presenta el esquema anterior es que pierde mucho
tiempo de procesador. Mientras ste espera a que se completen las
operaciones de entrada/salida, no realiza otra tarea, degradando, as, el
rendimiento del sistema. La alternativa consiste en que el procesador enve la
orden de entrada/salida al controlador del dispositivo en concreto y que ste
se encargue de completarlas, mientras l realiza otras tareas. Cuando el
dispositivo termina su trabajo, el controlador avisa al procesador para
intercambiar los datos. Este esquema se hace imprescindible para los sistemas
que soportan multiprogramacin, es decir, aquellos sistemas en los que se
pueden estar ejecutando varios procesos a la vez. Mientras un proceso ha de
esperar a que se terminen las operaciones de entrada/salida que haba
solicitado, el sistema operativo puede suspenderlo, guardando su contexto
(contador de programa, registros del procesador...) y ejecutar otro distinto
para mantener ocupado al procesador.
Para entender mejor este esquema supongamos que se quiere realizar
una operacin de lectura en un disco. Desde el punto de vista del controlador,
el procesador le enva una orden de lectura. El controlador se encarga,
entonces, de leer los datos requeridos y de ubicarlos en sus registros de datos.
Cuando ha terminado, avisa al procesador de que ya ha concluido la lectura y
queda esperando a que ste se los solicite. Cuando el procesador lo requiera,
le enviar una orden para que ponga los datos en el bus de datos y el
controlador quedar listo para otra operacin de entrada/salida. Desde el
punto de vista del procesador, ste manda una orden de lectura al controlador
de un dispositivo en concreto. Tras mandar la orden, salva el contexto del
proceso que estaba ejecutando y se dedica a ejecutar otro distinto. Cuando se
recibe una interrupcin desde un controlador de entrada/salida, el procesador
deja de ejecutar el proceso en curso (salvando su contexto) y atiende a la
rutina de tratamiento de la interrupcin, leyendo los datos de los registros de
datos del controlador y transfirindolos a memoria principal. Una vez
atendida la interrupcin, se puede seguir ejecutando el proceso que requiri
esa operacin de entrada/salida u otro proceso diferente.
Por ltimo, es importante destacar que en un sistema suelen haber
varios dispositivos de entrada/salida, cada uno de los cuales con posibilidad
de interrumpir al procesador. Por tanto, ste debe ser capaz de distinguir cul
de ellos fue el responsable de una interrupcin determinada. Existen distintas
tcnicas para conseguir este objetivo. Por ejemplo, en algunos sistemas hay
una lnea de interrupcin diferente y con una prioridad determinada para cada
dispositivo, mientras que otros poseen una nica lnea de interrupcin, si bien
poseen otras seales adicionales que permiten determinar cul fue el
dispositivo responsable y con qu prioridad debe atenderse a su interrupcin.
3.3.- Acceso directo a memoria DMA
A pesar de que la entrada/salida dirigida por interrupciones resuelve,
en gran parte, el problema que supone tener desocupado al procesador
mientras se espera a que terminen las operaciones de entrada/salida en los
dispositivos, no libra al mismo del trabajo que supone transferir los datos
entre la memoria principal y los controladores de los dispositivos. Adems, el
hecho de que sea el procesador quien transfiera los datos hace que ste deba
ejecutar una serie de instrucciones en cada transferencia, desperdicindose
todava parte de su capacidad para ejecutar otras tareas no relacionadas con la
entrada/salida. Este problema es mucho ms grave cuando se han de mover
grandes volmenes de datos entre los dispositivos y la memoria, ya que la
velocidad de transferencia se ve limitada por la capacidad que tiene el
procesador de comprobar y dar servicio a un dispositivo.
Un esquema que soluciona este problema es el acceso directo a
memoria (DMA, Direct Memory Acces). Cuando el procesador quiere leer o
escribir un bloque de datos, manda una orden al mdulo de DMA para que sea
ste quien realice la transferencia. Esta orden especifica si se trata de una
lectura o una escritura, la direccin del dispositivo de entrada/salida
involucrado, la direccin inicial de memoria desde la que se va a realizar la
lectura o la escritura y el nmero de palabras que se han de leer o escribir. Los
datos son transferidos palabra por palabra directamente entre la memoria y el
DMA sin tener que pasar por el procesador. Una vez que la operacin ha
concluido, el DMA enva una interrupcin a ste para informarle de que ha
terminado. De esta forma, el procesador slo se ve involucrado en la
operacin de entrada/salida al principio y al final de la misma, dedicando el
tiempo que dure la operacin en ejecutar otros procesos.
El DMA se conecta al bus del sistema para poder transferir los datos
entre los dispositivos de entrada/salida y la memoria principal. Por esta razn,
debe compartirlo con el procesador, siendo capaz de robarle a ste ciclos de
bus. El DMA obliga al procesador a que suspenda temporalmente lo que est
haciendo justo antes de que ste precise el bus del sistema. La figura 7
muestra en qu momentos el DMA puede suspender al procesador durante el
ciclo de una instruccin. Una vez que el procesador est suspendido, el DMA
utiliza el ciclo de bus robado para transferir una palabra, devolviendo
inmediatamente el control al procesador. Es importante sealar que el
procesador no se ve interrumpido, ya que no debe guardar el contexto del
proceso que est ejecutando, simplemente se ve inactivo durante el ciclo de
bus que el DMA realiza la transferencia. Aunque la actividad del procesador
se ralentiza, este esquema es mucho ms eficiente que todos los anteriores.
Sin embargo, el rendimiento del DMA depende de su configuracin
dentro del propio sistema. Existen distintas alternativas de diseo, el esquema
de las cuales se puede apreciar en las figuras 8, 9 y 10. A continuacin
describiremos en qu consisten bsicamente estas configuraciones:
1) DMA independiente de bus sencillo: El DMA se conecta al bus del
sistema como un mdulo independiente, supliendo al procesador en las tareas
de entrada/salida. El DMA acta como puente entre la memoria principal y
los dispositivos de entrada/salida, de forma que tanto los datos que viajan
entre el DMA y la memoria, como los que viajan entre el DMA y los
dispositivos lo hacen a travs del bus del sistema. Este esquema es el ms
barato, pero tambin el ms ineficiente, ya que cada palabra necesita dos
ciclos de bus para poder ser transferida (como en la entrada/salida
programada).
Ciclo de Instruccin
Ciclo de
Procesador
Ciclo del
Procesador
r
Ciclo del
Procesador
r
Ciclo del
Procesador
r
Ciclo del
Procesador
r
Ciclo del
Procesador
r
Leer
Instruccin.
Decodificar
Instruccin
Leer
Operando
Ejecutar
Instruccin.
Guardar
Resultado
Interrupcin
del proceso
Puntos de
ruptura
por DMA
Puntos de
ruptura por
Interrupcin
FIGURA 7 Puntos de ruptura por DMA e interrupciones en un ciclo de instruccin.
2) Integracin DMA-Entrada/salida de bus sencillo: Este esquema
establece un camino entre el DMA y los dispositivos de entrada/salida
independiente del bus del sistema. La lgica del DMA puede estar integrada
dentro de los propios mdulos de entrada/salida, o bien puede constituir un
mdulo propio que interconecte varios dispositivos. De esta forma, cada
palabra que sea transferida slo consumir un ciclo de bus de sistema.
Procesador Mdulo
DMA
Entrada
/Salida
Memoria
FIGURA 8 DMA independiente de bus sencillo
Bus de sistema.
Procesador
Mdulo
DMA
Memoria
Entrada
/Salida
Mdulo
DMA
Entrada
/Salida
Entrada
/Salida
FIGURA 9 Integracin DMA-Entrada/Salida de bus sencillo
Bus de sistema
3) DMA con bus de entrada/salida: Al igual que en el caso anterior, se
establece entre los dispositivos y el DMA un camino que no pasa por el bus
del sistema. Para ello, se dota al DMA de su propio bus de entrada/salida,
conectndo los dispositivos que sta controla al mismo. Esta configuracin
permite mayor flexibilidad a la hora de incorporar nuevos dispositivos al
sistema. Tanto en este caso como en el anterior, el bus del sistema slo se
utiliza para transmitir los datos entre el DMA y la memoria principal y para
intercambiar seales de control con el procesador.
3.4.- Canales y procesadores de entrada/salida
Siguiendo con la tendencia de independizar al procesador de las
operaciones de entrada/salida, se libera a ste de tener que ejecutar
instrucciones relacionadas con las mismas. Es decir, las instrucciones de
entrada/salida que pueda contener un programa son ejecutadas por un
subsistema denominado canal de entrada/salida. Para iniciar una transferencia,
el procesador simplemente especifica al canal en qu lugar de la memoria se
encuentra el programa de entrada/salida. El programa contiene la informacin
necesaria sobre cuales son los dispositivos involucrados en la transferencia,
as como las zonas de memoria para el almacenamiento, la prioridad y las
acciones a llevar a cabo bajo las posibles condiciones de error. Una vez que el
canal ha terminado de dirigir toda la transferencia, informa al procesador del
cumplimiento de la operacin.
Procesador
Mdulo
DMA
Memoria
Entrada
/Salida
Entrada
/Salida
Entrada
/Salida
FIGURA 10 Bus de Entrada/Salida
Bus de sistema
Bus de entrada/salida
Veamos ahora cmo es la arquitectura bsica de un canal. ste posee
un procesador especializado en la ejecucin de instrucciones de
entrada/salida, un canal de datos y direcciones con la memoria principal, una
va de seales de control con el procesador y un bus independiente al que se
conectan distintos dispositivos con sus controladores. Segn la forma en que
el canal da servicio a los distintos dispositivos, podemos clasificarlo en
distintas clases.
1) Canal selector: Un canal selector controla varios dispositivos de alta
velocidad, dedicndose a la transferencia de uno cada vez. El procesador del
canal opera con los controladores de los dispositivos conectados al bus del
propio canal de entrada/salida. Ver figura 11.
2) Canal multiplexor: Un canal multiplexor puede manejar varios
dispositivos a la vez. Si los dispositivos son de baja velocidad se utiliza un
multiplexor de bytes, mientras que si su velocidad es elevada, se utiliza uno
de bloques. Cada controlador de dispositivos se conecta al canal multiplexor
por una va diferente. Un ejemplo ilustrativo se da en la figura 12.
Canal
Selector
Canal de datos y direcciones con la
memoria principal
Va de Seales de control
a la procesador
Controlador de
entrada/salida
Controlador de
entrada/salida
FIGURA 11 Canal Selector
A parte de estas arquitecturas, existe una variante de los canales de
entrada/salida que independiza ms al procesador. Cuando un canal posee su
propia memoria local y forma, de hecho, un sistema separado, podemos
hablar de un procesador de entrada/salida. De esta manera, se puede dar
servicio a un conjunto elevado de dispositivos con una participacin mnima
del procesador. Este tipo de arquitectura tiene un uso muy extendido en el
control de las comunicaciones con terminales interactivos.
Canal
Multiplexor
Al procesador
Controlador de
entrada/salida
A la memoria principal
Controlador de
entrada/salida
Controlador de
entrada/salida
Controlador de
entrada/salida
FIGURA 12 Canal multiplexor
4.- Interfaz entre el sistema operativo y los dispositivos de
entrada/salida
Existen, bsicamente, dos grandes problemas que un sistema operativo
debe solucionar para conseguir una transferencia correcta de datos entre la
memoria principal y los dispositivos de entrada/salida.
Uno de ellos se da cuando un sistema utiliza memoria cache. Esta
memoria es mucho ms rpida y pequea que la memoria principal y contiene
copias de los bloques de datos o instrucciones ms utilizados. El procesador
accede directamente a la cache y no a memoria principal. Si el dato que
buscaba el procesador no est ubicado en la cache, se dice que se ha
producido un fallo de cache. Cuando ocurre esto, se sustituye un bloque de la
misma por el bloque de memoria principal que contena el dato. Esta
duplicidad de datos ocasionada por la cache puede dar lugar a problemas de
datos obsoletos. Por ejemplo, si se producen actualizaciones en bloques de
datos en la memoria cache y no en la principal y un dispositivo de
entrada/salida lee parte de esos bloques de memoria principal, se producir
una lectura errnea.
El otro problema est relacionado con la memoria virtual en los
sistemas multitarea que utilizan entrada/salida programada por interrupciones
o DMA. En los sistemas multitarea con memoria virtual, el espacio de
direcciones de los procesos y de la memoria principal se subdivide en
fragmentos, de forma que el sistema operativo gestiona qu fragmentos de
cada proceso se encuentran en cada uno de los fragmentos de la memoria
principal. El sistema operativo suspende los procesos pendientes de la
finalizacin de una operacin de entrada/salida, descargando sus fragmentos
en el disco y cargando los fragmentos de otro proceso. Esta operacin se
conoce como intercambio y es la base de la memoria virtual. Ms tarde,
cuando la operacin de entrada/salida ha finalizado y el proceso es activado
de nuevo, los fragmentos del mismo son reubicados en zonas de memoria
principal que no tienen porque ser las que ocupaba inicialmente . Esto
ocasiona la aparicin de errores de lectura y escritura por parte de los
dispositivos de entrada/salida.
A continuacin expondremos estos problemas ms detalladamente, as
como las distintas soluciones que utilizan los sistemas operativos para
solventarlos.
4.1.- Cmo solucionar el problema de los datos obsoletos
Como hemos visto, existe duplicidad de los datos ubicados en la
memoria cache, de forma que se pueden producir lecturas y escrituras
errneas de los mismos por parte de el procesador y de los dispositivos de
entrada/salida. Bsicamente, el problema de los datos obsoletos se subdivide
en dos tipos.
1) Los dispositivos de entrada/salida leen datos obsoletos de memoria
principal porque stos no estn actualizados.
2) El procesador lee datos incorrectos de la cache porque los
dispositivos de entrada/salida han actualizado la memoria principal, pero no la
cache.
Una primera solucin que permite resolver estos dos problemas
consiste en conectar el bus de entrada/salida a la cache. Tanto el procesador
como los dispositivos de entrada/salida leen y escriben directamente en la
cache, utilizando los datos correctos. Sin embargo, este enfoque provoca una
perdida de rendimiento de la cache y el procesador por dos motivos. En
primer lugar, debe existir un esquema de arbitraje para que tanto el procesador
como el bus de entrada/salida puedan acceder a la cache. En segundo lugar,
como todos los datos utilizados en las operaciones de entrada/salida han de
pasar por la cache, sta contendr bloques de datos que realmente no son
frecuentemente utilizados, aumentando la probabilidad de que se produzca un
fallo de cache.
Para poder estudiar mejor como solucionar los dos problema de datos
obsoletos, trataremos a cada uno de ellos por separado.
En primer lugar veamos como asegurar que los datos ledos por parte
de los dispositivos de entrada/salida desde memoria principal sean los
correctos. Una solucin es utilizar caches de escritura directa. Cuando se
modifica un bloque en este tipo de caches, dicho bloque es tambin
actualizado en memoria principal. De esta manera, cualquier actualizacin en
la cache tambin se da en la memoria principal y los dispositivos de
entrada/salida leern los datos correctos. Si no se utilizan caches de escritura
directa, los bloques que el procesador actualiza en la cache no son
actualizados en memoria principal hasta que son descargados como
consecuencia de un fallo de cache. Para solucionar el problema el sistema
operativo debe descargar los bloques involucrados en la operacin de
entrada/salida desde la cache hacia la memoria principal. Cada bloque de la
cache tiene asociada una etiqueta, cuyo valor depende de las direcciones de
los datos que contenga. El sistema operativo comprueba secuencialmente
estas etiquetas y descarga los bloques adecuados. Sin embargo, este esquema
malgasta tiempo en hacer comprobaciones de direcciones, incluso, cuando los
datos no estn en la cache. Por esta razn el hardware puede comprobar las
etiquetas de la cache durante la operacin de salida e interactuar con la misma
en lugar de con la memoria principal si los datos estn ubicados en la cache.
Para solucionar el problema que surge cuando el procesador lee datos
de la cache que no son actualizados tras una operacin de entrada en la
memoria principal, el sistema operativo ha de garantizar que el rea de
entrada de datos no se encuentra ubicada en la cache. Con este fin, el sistema
operativo comprueba las etiquetas de la cache y elimina de ella los bloques
que contienen las direcciones de entrada, descargndolos en la memoria
principal. La perdida de tiempo que supone la comprobacin secuencial de las
etiquetas lleva, de nuevo, a incorporar hardware extra que invalide los datos
de entrada si las direcciones se encuentran en la cache.
4.2.- Buffering
La reubicacin de los fragmentos en los que se subdivide el espacio de
direcciones de los procesos provoca, como hemos mencionado, la aparicin
de problemas durante las operaciones de entrada/salida. Para ver mejor cul es
el problema, imaginemos un sistema que permita la ejecucin de varios
procesos a la vez (sistema multitarea) y que use memoria virtual. Un proceso
determinado se est ejecutando y requiere leer numerosos bloques de un
disco. Los datos sern ledos en un fragmento del espacio de direcciones del
proceso ubicado entre las direcciones 1000 a 1256 de la memoria principal.
Para que el procesador no permanezca inactivo, esperando a que finalice la
operacin de entrada/salida, suspende al proceso y elimina de la memoria
principal sus fragmentos, incluido el que ocupaba las direcciones
comprendidas entre la 1000 y la 1256. Cuando se escriban los datos
solicitados en esas direcciones, se producir un error y se perdern. Una
solucin sera suspender la operacin de lectura hasta que el proceso no
vuelva a ser activado y reubicado, pero entonces se producira un interbloqueo
entre la operacin de entrada/salida y el proceso que fue suspendido hasta que
se finalizase la transferencia solicitada. La situacin es anloga en el caso de
operaciones de escritura desde la memoria principal hacia un dispositivo de
entrada/salida.
Una solucin consiste en realizar las transferencias de entrada por
adelantado a las peticiones y hacer las transferencias de salida un tiempo
despus de que se hallan solicitado. Esta tcnica, que se basa en el
almacenamiento intermedio de los datos que se van a transferir, se conoce con
el nombre de buffering. Para entenderla, debemos recordar que el sistema
operativo ocupa una parte protegida de la memoria principal a la que ningn
otro proceso tiene acceso. Una parte de la memoria reservada para el sistema
operativo se utilizar para aplicar esta tcnica.
Cuando un proceso realiza una peticin de entrada/salida, el sistema
operativo le asigna un buffer situado en una zona de memoria principal
reservada al sistema operativo. En el caso de una lectura, los datos son ledos
desde el dispositivo de entrada/salida hacia el buffer de entrada. El proceso lee
los datos de ste y los procesa, mientras nuevos datos procedentes del
dispositivo son ledos de nuevo dentro del buffer. Como la lectura se realiza
por adelantado, suponiendo que el bloque ledo se va a necesitar, se efectuar
una transferencia innecesaria al final de la secuencia de procesamiento. Por su
parte, el sistema operativo podr suspender al proceso y reubicarlo en otro
sitio distinto, debido a que la operacin se realiza sobre el buffer, solventando,
de esta manera, el problema de lecturas hacia regiones incorrectas de memoria
principal. El caso de la escritura es similar al de la lectura. El proceso realiza
la operacin sobre el buffer y mientras los datos son transferidos desde ste al
dispositivo, el proceso puede ser suspendido o realizar otras tareas.
Para reducir el tiempo que un proceso debe esperar hasta que la
operacin de entrada/salida que haba solicitado finalice, se pueden asignar
dos buffers a cada una de ellas. A esta variante se la conoce con el nombre de
buffer doble. Mientras el proceso transfiere datos hacia (o desde) un buffer, el
sistema vaca (o rellena) el otro. Pero si el proceso realiza rpidas rfagas de
entrada/salida, el buffer doble es insuficiente para obtener un buen
rendimiento. En este caso, se puede emplear otra forma de buffering conocida
como buffer circular. Para ello, se utilizan ms de dos buffers y el proceso los
va utilizando a medida que puede disponer de ellos.
Generalmente, el mtodo de buffering supone para el sistema un
mayor rendimiento que el obtenido sin la utilizacin de almacenamiento
intermedio, an cuando se realicen lecturas innecesarias desde los dispositivos
de entrada/salida. Esta tcnica soluciona no slo los problemas derivados de
la reubicacin, sino tambin los problemas de espera en horas punta de
entrada/salida. Se consigue una mejora sustancial en la eficiencia del sistema
operativo y en el rendimiento de los procesos individuales, aunque no existe
ningn tamao de los buffers que elimine la espera en las operaciones de
entrada/salida.
Sin embargo, implica un aumento de la complejidad del sistema
operativo. Por un lado, ste debe guardar constancia de las asignaciones de los
buffers del sistema para cada proceso de usuario. Por otro lado, la lgica de
intercambio tambin se ve afectada. Supongamos, por ejemplo, que un
proceso requiere realizar una escritura sobre el mismo disco que se utiliza
para guardar los fragmentos de su espacio de direcciones. El sistema
operativo encolar la peticin de esta escritura y tambin encolar las
escrituras necesarias para descargar al proceso (suspendido) al disco. Sin
embargo, como el proceso seguramente debe ser activado tras completarse su
peticin de escritura, puede no ser ya apropiada la expulsin del mismo.
5.- Conclusin
Los dispositivos de entrada/salida son la interfaz a travs de la cual los
seres humanos se comunican con el sistema. Pero esta interfaz es slo una
interfaz externa. Dentro del propio sistema o sistema informtico, existe una
interfaz interna que permite a los dispositivos de entrada/salida comunicarse
entre s y con el resto del sistema.
La comunicacin entre los distintos dispositivos del sistema se realiza
a travs de transacciones, es decir, lecturas y escrituras de datos (ya sean de
control o no). stos se transfieren por un medio electrnico compartido
denominado bus.
Debido a la gran variedad de dispositivos que se han de interconectar,
existen muchos tipos de buses. Las distintas clases de buses se diferencian
tanto en su implementacin como en su control. La definicin de diversos
estndares permite el diseo independiente de buses y dispositivos.
La creciente complejidad de los sistemas ha ocasionado una evolucin
de los buses y dispositivos de entrada/salida hacia diseos ms sofisticados.
Este hecho es muy importante, ya que de nada sirve tener un sistema de altas
prestaciones si no se posee un bus y unos dispositivos de entrada/salida que
permitan hacer un uso eficiente del mismo.
La evolucin de los buses y de los dispositivos de entrada/salida est
orientada a independizar al propio sistema de los trabajos propios de la
interfaz externa. Aparecen procesadores y buses especializados en las
operaciones de entrada/salida que liberan al procesador de la carga que
supone gestionar esas operaciones.
Por su parte, los sistemas operativos tambin se hacen ms complejos
a medida que las prestaciones del sistema se incrementan. Se disean nuevas
tcnicas de gestin de las operaciones de la entrada/salida para hacer frente a
los problemas que surgen al interaccionar los dispositivos de entrada/salida
con la memoria principal del sistema.

También podría gustarte