12/5/2019
BUSES DE E/S
Unidad 3 – Buses de E/S y Puertos
Ing. Marcelo Alvarez – 2019
(Stallings, William (2007) “Organización y Arquitectura de computadores” , capítulo X).
Un módulo de E/S (por ejemplo un controlador de
disco) puede intercambiar datos directamente con el
procesador. Igual que el procesador puede iniciar una
lectura o escritura en memoria, especificando la
dirección de una posición concreta de la misma, el
procesador también puede leer o escribir datos de (o
Módulos de E/S en) un módulo de E/S. En este último caso, el
procesador identifica un dispositivo específico
controlado por un módulo de E/S determinado. Por
consiguiente, se puede producir una secuencia de
instrucciones similar a la siguiente Figura, con
instrucciones de E/S en lugar de las instrucciones de
referencia a memoria.
2
12/5/2019
Ejemplo de ejecucción
de un programa
(contenidos de la
memoria y registros en
hexadecimal).
En algunos casos, es deseable permitir que los intercambios de E/S
se produzcan directamente con la memoria. En ese caso, el
procesador cede a un módulo de E/S la autoridad para leer de o
escribir en memoria, para que así la transferencia E/S-memoria
pueda producirse sin la intervención del procesador. Durante esas
transferencias, el módulo de E/S proporciona a la memoria las
órdenes de lectura o escritura, liberando al procesador de
cualquier responsabilidad en el intercambio. Esta operación se
conoce con el nombre de acceso directo a memoria (DMA, Direct
Memory Access)
4
12/5/2019
Un computador está constituido por un conjunto de unidades
o módulos de tres tipos elementales (procesador, memoria,
E/S) que se comunican entre sí. En efecto, un computador es
una red de módulos elementales. Por consiguiente, deben
existir líneas para interconectar estos módulos. El conjunto de
líneas que conectan los diversos módulos se denomina
estructura de interconexión. El diseño de dicha estructura
dependerá de los intercambios que deban producirse entre los
módulos.
• Memoria: generalmente, un módulo de memoria está constituido por N
palabras de la misma longitud. A cada palabra se le asigna una única dirección
numérica (0,1,..., N — 1). Una palabra de datos puede leerse de o escribirse
en la memoria. El tipo de operación se indica mediante las señales de control
Read (Leer) y Write (Escribir). La posición de memoria para la operación se
especifica mediante una dirección.
• Módulo de E/S: desde un punto de vista interno (al computador), la E/S es
funcionalmente similar a la memoria. Hay dos tipos de operaciones, leer y
escribir. Además, un módulo de E/S puede controlar más de un dispositivo
externo. Nos referiremos a cada una de estas interfaces con un dispositivo
externo con el nombre de puerto (port), y se le asignará una dirección a cada
uno (0,1,...,M-1). Por otra parte, existen líneas externas de datos para la
entrada y la salida de datos por un dispositivo externo. Por último, un módulo
de E/S puede enviar señales de interrupción al procesador.
• Procesador: el procesador lee instrucciones y datos, escribe datos una vez los
ha procesado, y utiliza ciertas señales para controlar el funcionamiento del
sistema. También puede recibir señales de interrupción.
6
12/5/2019
Módulos
de un
computador
La lista precedente especifica los datos que se intercambian. La estructura
de interconexión debe dar cobertura a los siguientes tipos de
transferencias:
• Memoria a procesador: el procesador lee una instrucción o un dato
desde la memoria.
• Procesador a memoria: el procesador escribe un dato en la memoria.
• E/S a procesador: el procesador lee datos de un dispositivo de E/S a
través de un módulo de E/S.
• Procesador a E/S: el procesador envía datos al dispositivo de E/S.
• Memoria a E/S y viceversa: en estos dos casos, un módulo de E/S puede
intercambiar datos directamente con la memoria, sin que tengan que
pasar a través del procesador, utilizando el acceso directo a memoria
(DMA).
A través de los años, se han probado diversas estructuras de
interconexión. Las más comunes son, con diferencia, las estructuras de
bus y de buses múltiples.
8
12/5/2019
Un bus es un camino de comunicación entre dos o
más dispositivos. Una característica clave de un bus es
que se trata de un medio de transmisión compartido.
Al bus se conectan varios dispositivos, y cualquier
Interconexión señal transmitida por uno de esos dispositivos está
disponible para que los otros dispositivos conectados
con Buses al bus puedan acceder a ella. Si dos dispositivos
transmiten durante el mismo periodo de tiempo, sus
señales pueden solaparse y distorsionarse.
Consiguientemente, solo un dispositivo puede
transmitir con éxito en un momento dado.
Usualmente, un bus está constituido por varios caminos de
comunicación, o líneas. Cada línea es capaz de transmitir señales
binarias representadas por 1 y por 0. En un intervalo de tiempo, se
puede transmitir una secuencia de dígitos binarios a través de una
única línea. Se pueden utilizar varias líneas del bus para transmitir
dígitos binarios simultáneamente (en paralelo). Por ejemplo, un
dato de 8 bits puede transmitirse mediante ocho líneas del bus.
Los computadores poseen diferentes tipos de buses que
proporcionan comunicación entre sus componentes a distintos
niveles dentro de la jerarquía del sistema. El bus que conecta los
componentes principales del computador (procesador, memoria,
E/S) se denomina bus del sistema (system bus). Las estructuras de
interconexión más comunes dentro de un computador están
basadas en el uso de uno o más buses del sistema.
10
12/5/2019
El bus de sistema está constituido, usualmente, por
entre cincuenta y cien líneas. A cada línea se le asigna
un significado o una función particular. Aunque existen
diseños de buses muy diversos, en todos ellos las
Estructura del líneas se pueden clasificar en tres grupos funcionales:
• Líneas de datos.
Bus • Líneas de direcciones.
• Líneas de control.
Además, pueden existir líneas de alimentación para
suministrar energía a los módulos conectados al bus.
11
Esquema de Interconexión mediante un Bus.
12
12/5/2019
Las líneas de datos proporcionan un camino para transmitir datos entre los módulos del
sistema. El conjunto constituido por estas líneas se denomina bus de datos. El bus de datos
puede incluir entre 32 y cientos de líneas, cuyo número se conoce como anchura del bus
de datos. Puesto que cada línea solo puede transportar un bit cada vez, el número de
líneas determina cuántos bits se pueden transferir al mismo tiempo. La anchura del bus es
un factor clave a la hora de determinar las prestaciones del conjunto del sistema. Por
ejemplo, si el bus de datos tiene una anchura de ocho bits, y las instrucciones son de 16
bits, entonces el procesador debe acceder al módulo de memoria dos veces por cada ciclo
de instrucción.
Las líneas de dirección se utilizan para designar la fuente o el destino del dato situado en
el bus de datos. Por ejemplo, si el procesador desea leer una palabra (8,16 o 32 bits) de
datos de la memoria, sitúa la dirección de la palabra deseada en las líneas de direcciones.
Claramente, la anchura del bus de direcciones determina la máxima capacidad de memoria
posible en el sistema. Además, las líneas de direcciones generalmente se utilizan también
para direccionar los puertos de E/S. Usualmente, los bits de orden más alto se utilizan para
seleccionar una posición de memoria o un puerto de E/S dentro de un módulo. Por
ejemplo, en un bus de 8 bits, la dirección 01111111 e inferiores harían referencia a
posiciones dentro de un módulo de memoria (el módulo 0) con 128 palabras de memoria,
y las direcciones 10000000 y superiores designarían dispositivos conectados a un módulo
de E/S (módulo 1).
13
Las líneas de control se utilizan para controlar el acceso y el uso de
las líneas de datos y de direcciones. Puesto que las líneas de datos
y de direcciones son compartidas por todos los componentes,
debe existir una forma de controlar su uso. Las señales de control
transmiten tanto órdenes como información de temporización
entre los módulos del sistema.
Las señales de temporización indican la validez de los datos y las
direcciones. Las señales de órdenes especifican las operaciones a
realizar. Algunas líneas de control típicas son:
• Escritura en memoria (Memory write): hace que el dato del bus
se escriba en la posición direccionada.
• Lectura de memoria (Memory read): hace que el dato de la
posición direccionada se sitúe en el bus.
• Escritura de E/S (I/O write): hace que el dato del bus se transfiera
a través del puerto de E/S direccionado.
14
12/5/2019
• Lectura de E/S (E/S read): hace que el dato del puerto de E/S
direccionado se sitúe en el bus.
• Transferencia reconocida (Transfer ACK): indica que el dato se ha
aceptado o se ha situado en el bus.
• Petición de bus (Bus request): indica que un módulo necesita
disponer del control del bus.
• Cesión de bus (Bus grant): indica que se cede el control del bus a
un módulo que lo había solicitado.
• Petición de interrupción (Interrupt request): indica si hay una
interrupción pendiente.
• Interrupción reconocida (Interrupt ACK): Señala que la
interrupción pendiente se ha aceptado.
• Reloj (clock): se utiliza para sincronizar las operaciones.
• Inicio (reset): pone los módulos conectados en su estado inicial.
15
Implementación
Física típica de
una arquitectura
en Bus.
16
12/5/2019
El funcionamiento del bus se describe a continuación. Si un módulo desea enviar un dato a
otro debe hacer dos cosas: (1) obtener el uso del bus y (2) transferir el dato a través del
bus. Si un módulo desea pedir un dato a otro módulo, debe (1) obtener el uso del bus y (2)
transferir la petición al otro módulo mediante las líneas de control y dirección apropiadas.
Después debe esperar a que el segundo módulo envíe el dato.
Físicamente, el bus de sistema es de hecho un conjunto de conductores eléctricos
paralelos. Estos conductores son líneas de metal grabadas en una tarjeta (tarjeta de
circuito impreso). El bus se extiende a través de todos los componentes del sistema, cada
uno de los cuales se conecta a algunas o a todas las líneas del bus., a intervalos regulares,
hay puntos de conexión en forma de ranura disposición física muy común se muestra en la
Figura anterior. En este ejemplo, el bus consta de dos columnas verticales de conductores.
A lo largo de esas columnas (slots) dispuestas en sentido horizontal para sostener las
tarjetas de circuito impreso. Cada uno de los componentes principales del sistema ocupa
una o varias tarjetas y se conecta al bus a través de esas ranuras. El sistema completo se
introduce dentro de un chasis. Esta organización puede encontrarse todavía en alguno de
los buses del computador. No obstante, los sistemas actuales tienden a tener sus
componentes principales en la misma tarjeta y los circuitos integrados incluyen más
elementos. Así, el bus que conecta el procesador y la memoria caché se integra en el
microprocesador junto con el procesador y la caché (on-chip), y el bus que conecta el
procesador con la memoria y otros componentes se incluye en la tarjeta (on-board).
17
Esta es la disposición más conveniente. Así se puede adquirir
un computador pequeño y expandirlo (ampliar memoria,
módulos de E/S) más adelante añadiendo más tarjetas. Si un
componente de una tarjeta falla, la tarjeta puede quitarse y
sustituirse fácilmente.
18
12/5/2019
Si se conecta un gran número de dispositivos al bus, las prestaciones
pueden disminuir. Hay dos causas principales:
1. En general, a más dispositivos conectados al bus, mayor es el
retardo de propagación. Este retardo determina el tiempo que
necesitan los dispositivos para coordinarse en el uso del bus. Si el
control del bus pasa frecuentemente de un dispositivo a otro, los
JERARQUÍAS DE retardos de propagación pueden afectar sensiblemente a las
prestaciones.
BUSES 2. 2. El bus puede convertirse en un cuello de botella a medida que
MÚLTIPLES las peticiones de transferencia acumuladas se aproximan a la
capacidad del bus. Este problema se puede resolver en alguna
medida incrementando la velocidad a la que el bus puede
transferir los datos y utilizando buses más anchos (por ejemplo
incrementando el bus de datos de 32 a 64 bits). Sin embargo,
puesto que la velocidad de transferencia que necesitan los
dispositivos conectados al bus (por ejemplo, controladores de
gráficos y de vídeo, interfaces de red) está incrementándose
rápidamente, es un hecho que el bus único está destinado a dejar
de utilizarse.
19
Por consiguiente, la mayoría de los computadores utilizan
varios buses, normalmente organizados jerárquicamente. Una
estructura típica se muestra en la Figura a continuación. Hay
un bus local que conecta el procesador a una memoria caché y
al que pueden conectarse también uno o más dispositivos
locales. El controlador de memoria caché conecta la caché no
solo al bus local sino también al bus de sistema, donde se
conectan todos los módulos de memoria principal.
El uso de una caché alivia la exigencia de soportar los accesos
frecuentes del procesador a memoria principal. De hecho, la
memoria principal puede pasar del bus local al bus de sistema.
De esta forma, las transferencias de E/S con la memoria
principal a través del bus de sistema no interfieren la actividad
del procesador.
20
12/5/2019
21
Es posible conectar controladores de E/S directamente al bus de sistema.
Una solución más eficiente consiste en utilizar uno o más buses de
expansión. La interfaz del bus de expansión regula las transferencias de
datos entre el bus de sistema y los controladores conectados al bus de
expansión. Esta disposición permite conectar al sistema una amplia
variedad de dispositivos de E/S y al mismo tiempo aislar el tráfico de
información entre la memoria y el procesador del tráfico correspondiente
a las E/S.
La Figura anterior muestra algunos ejemplos típicos de dispositivos de E/S
que pueden estar conectados al bus de expansión. Las conexiones a red
incluyen conexiones a redes de área local (LAN, Local Area Networks) tales
como una red Ethernet de diez Mbps y conexiones a redes de area amplia
( Wide Area Networks) tales como la red de conmutación de paquetes
(packet-switching network). La interfaz SCSI (Small Computer System
Interfacé) es en sí un tipo de bus utilizado para conectar controladores de
disco y otros periféricos. El puerto serie puede utilizarse para conectar una
impresora o un escáner.
22
12/5/2019
Esta arquitectura de buses tradicional es razonablemente
eficiente, pero muestra su debilidad a medida que los dispositivos
de E/S ofrecen prestaciones cada vez mayores. La respuesta
común a esta situación, por parte de la industria, ha sido proponer
un bus de alta velocidad que está estrechamente integrado con el
resto del sistema, y requiere solo un adaptador (bridge) entre el
bus del procesador y el bus de alta velocidad. En algunas
ocasiones, esta disposición es conocida como arquitectura de
entreplanta (mezzanine architecture).
La ventaja de esta organización es que el bus de alta velocidad
acerca al procesador los dispositivos que exigen prestaciones
elevadas y al mismo tiempo es independiente del procesador. Así,
se pueden tolerar las diferencias de velocidad entre el procesador
y el bus de altas prestaciones y las variaciones en la definición de
las líneas de los buses. Los cambios en la arquitectura del
procesador no afectan al bus de alta velocidad, y viceversa.
23
ELEMENTOS DE
DISEÑO DE UN Tipos de buses. Las líneas del bus se pueden dividir en dos tipos
BUS genéricos: dedicadas y multi- plexadas. Una línea de bus dedicada está
permanente asignada a una función o a un subconjunto físico de
componentes del computador
Método de arbitraje. En todos los sistemas, exceptuando los más
simples, más de un módulo puede necesitar el control del bus. Por
ejemplo, un módulo de E/S puede necesitar leer o escribir
directamente en memoria, sin enviar el dato al procesador. Puesto que
en un instante dado solo una unidad puede transmitir a través del bus,
se requiere algún método de arbitraje. Los diversos métodos se
pueden clasificar aproximadamente como centralizados o distribuidos.
24
12/5/2019
Temporización. El término temporización hace referencia a la forma en
la que se coordinan los eventos en el bus. Los buses utilizan
temporización síncrona o asíncrona.
ELEMENTOS DE Anchura del bus. El concepto de anchura del bus se ha presentado ya.
La anchura del bus de datos afecta a las prestaciones del sistema:
DISEÑO DE UN cuanto más ancho es el bus de datos, mayor es el número de bits que
se transmiten a la vez. La anchura del bus de direcciones afecta a la
BUS capacidad del sistema: cuanto más ancho es el bus de direcciones,
mayor es el rango de posiciones a las que se puede hacer referencia.
Tipo de transferencia de datos. Por último, un bus permite varios tipos
de transferencias de datos. Todos los buses permiten tanto
transferencias de escritura (dato de maestro a esclavo) como de
lectura (dato de esclavo a maestro).
25
El bus PCI (Peripheral Component Interconnect,
Interconexión de Componente Periférico) es un bus muy
popular de ancho de banda elevado, independiente del
procesador, que se puede utilizar como bus de
periféricos o bus para una arquitectura de entreplanta.
Comparado con otras especificaciones comunes de bus,
el PCI proporciona mejores prestaciones para los
subsistemas de E/S de alta velocidad (por ejemplo, los
adaptadores de pantalla gráfica, los controladores de
interfaz de red, los controladores de disco, etc.).
PCI
El estándar actual permite el uso de hasta 64 líneas de
datos a 66 MHz, para una velocidad de transferencia de
528 MB, o 4,224 Gbps. Pero no es precisamente su
elevada velocidad la que hace atractivo al PCI. El PCI ha
sido diseñado específicamente para ajustarse,
económicamente a los requisitos de E/S de los sistemas
actuales; se implementa con muy pocos circuitos
integrados y permite que otros buses se conecten al bus
PCI.
26
12/5/2019
Intel empezó a trabajar en el PCI en 1990 pensando en sus sistemas
basados en el Pentium. Muy pronto Intel cedió sus patentes al dominio
público y promovió la creación de una asociación industrial, la PCI SIG (de
Special Interest Group), para continuar el desarrollo y mantener la
compatibilidad de las especificaciones del PCI. El resultado ha sido que el
PCI ha sido ampliamente adoptado y se está incrementando su uso en los
computadores personales, estaciones de trabajo, y servidores. Puesto que
las especificaciones son de dominio público y están soportadas por una
amplia banda de la industria de procesadores y periféricos, los productos
PCI fabricados por compañías diferentes son compatibles.
El PCI está diseñado para permitir una cierta variedad de configuraciones
basadas en microprocesadores, incluyendo sistemas tanto de uno como
de varios procesadores. Por consiguiente, proporciona un conjunto de
funciones de uso general. Utiliza temporización síncrona y un esquema de
arbitraje centralizado
27
28