viernes, 1 de julio de 2011

15 - Funcionamiento de los Buses de datos, de dirección y de control

¿QUE ES UN BUS?

En informática, un bus es un conjunto cableado que sirve para que los dispositivos hardware puedan comunicarse entre sí. Son rutas compartidas por todos los dispositivos y les permiten transmitir información de unos a otros, son, en definitiva, las autopistas de la información interna, las que permiten las transferencias de toda la información manejada por el sistema.

En un bus, todos los nodos conectados a él reciben los datos que se vuelcan, pero sólo aquél dispositivo al que va dirigida la información es quien la toma y la procesa, el resto la ignora.

Los conductores eléctricos de un bus pueden ser tanto en paralelo como en serie. El bus de datos de los discos duros IDE (ATA) es paralelo (varios cables); en cambio, en los discos Serial ATA, el bus es serie (una sola vía de datos).

Existen varios tipos:
- Bus de direcciones
- Bus de control
- Bus de datos




En esta imagen tenemos una representación de la arquitectura Northbridge/Southbridge. Las flechas indican buses de datos que comunican los diferentes dispositivos de un ordenador. El chipset de una placa base, formado básicamente por el Northbridge (controlador de puente norte) y el Southbridge (controlador de puente sur), se encarga de gobernar las comunicaciones en los buses, de la misma manera que los semáforos regulan el tráfico en las calles de una ciudad.

El Northbridge es el chip más importante, el núcleo de la placa base; tiene la función de controlar las comunicaciones entre procesador, memoria RAM, tarjeta gráfica y el Southbridge, y servir de conexión central entre los dispositivos mencionados.

El Southbridge es un chip que controla los dispositivos de entrada/salida del sistema (periféricos como disco duro, teclado, ratón, puertos PCI...), se comunica con el resto del sistema mediante el chip principal: Northbridge.

Uno de los buses de datos más importante es el que conecta al procesador (CPU) con el resto del sistema a través del Northbridge, se le conoce como FSB (bus frontal), y transmite toda la información del procesador al resto de dispositivos y viceversa. La frecuencia de un procesador se expresa en términos de la frecuencia del FSB multiplicado por un valor predeterminado por el fabricante, por eso conocer bien el FSB es vital en la práctica del Overclocking (forzar un procesador a trabajar a una velocidad mayor que la de serie).

El resto de buses no tienen un nombre concreto y se les conoce por el dispositivo con el que conectan. El bus de memoria conecta la memoria RAM al sistema mediante el Northbridge (en algunas arquitecturas, como HyperTransport, la memoria RAM se comunica directamente con el procesador sin pasar por el Northbridge), el bus AGP (o PCI-Express) conecta la tarjeta gráfica con el Northbridge. También existe un bus especial que conecta el Northbridge con el Southbridge, ya que estos chips deben pasarse grandes cantidades de datos debido a la naturaleza de los dispositivos que controlan.



En la siguiente imagen mostramos una variación de la arquitectura mencionada anteriormente, aunque sus fundamentos son muy similares. En este caso la memoria se conecta a la CPU directamente mediante un controlador independiente, el resto es similar cambiando algunos nombres. Las flechas y barras de color verde (y negro) indican buses de datos.

Por tanto, el bus de datos y las interconexiones de la placa base, así como su chipset, son esenciales para la eficiencia. De nada serviría un procesador extremadamente rápido, si las tuberías que le abastecen y a través de las cuales debe mandar la información son lentas. De ahí que una buena placa base, con un chipset potente y unas conexiones internas rápidas, sea extremadamente importante al comprar un ordenador a fin de mantener estabilidad y equilibrio entre los componentes.




FUNCIONAMIENTO
En el bus se encuentran dos pistas separadas, el bus de datos y el bus de direcciones. La CPU escribe la dirección de la posición deseada de la memoria en el bus de direcciones accediendo a la memoria, teniendo cada una de las líneas carácter binario. Es decir solo pueden representar 0 o 1 y de esta manera forman conjuntamente el numero de la posición dentro de la memoria (es decir: la dirección). Cuanto mas líneas haya disponibles, mayor es la dirección máxima y mayor es la memoria a la cual puede dirigirse de esta forma. En el bus de direcciones original habían ya 20 direcciones, ya que con 20 bits se puede dirigir a una memoria de 1 MB y esto era exactamente lo que correspondía a la CPU.
Esto que en le teoría parece tan fácil es bastante mas complicado en la práctica, ya que aparte de los bus de datos y de direcciones existen también casi dos docenas más de líneas de señal en la comunicación entre la CPU y la memoria, a las cuales también se acude. Todas las tarjetas del bus escuchan, y se tendrá que encontrar en primer lugar una tarjeta que mediante el envío de una señal adecuada indique a la CPU que es responsable de la dirección que se ha introducido. Las demás tarjetas se despreocupan del resto de la comunicación y quedan a la espera del próximo ciclo de transporte de datos que quizás les incumba a ellas.

PROCESADOR
Bus de direcciones
Bus de datos
8086
20
16
8088
20
8
80186
20
16
80188
20
8
80286
24
16
80386 SX
32
16
80386 DX
32
32
80486 DX
32
32
80486 SX
32
32
PENTIUM
32
64
PENTIUM PRO
32
64


Este mismo concepto es también la razón por la cual al utilizar tarjetas de ampliación en un PC surgen problemas una y otra vez, si hay dos tarjetas que reclaman para ellas el mismo campo de dirección o campos de dirección que se solapan entre ellos.
Los datos en si no se mandan al bus de direcciones sino al bus de datos. El bus XT tenía solo 8 bits con lo cual sólo podía transportar 1 byte a la vez. Si la CPU quería depositar el contenido de un registro de 16 bits o por valor de 16 bits, tenía que desdoblarlos en dos bytes y efectuar la transferencia de datos uno detrás de otro.
De todas maneras para los fabricantes de tarjetas de ampliación, cuyos productos deben atenderse a este protocolo, es de una importancia básica la regulación del tiempo de las señales del bus, para poder trabajar de forma inmejorable con el PC. Pero precisamente este protocolo no ha sido nunca publicado por lBM con lo que se obliga a los fabricantes a medir las señales con la ayuda de tarjetas ya existentes e imitarlas. Por lo tanto no es de extrañar que se pusieran en juego tolerancias que dejaron algunas tarjetas totalmente eliminadas.
Bus de direcciones
Es utilizado por el microprocesador para señalar la celda de memoria (o el dispositivo de E/S) con el que se quiere operar. El tipo de operación será de lectura o de escritura y los datos implicados viajarán por el bus de datos.
Por él circula la expresión binaria de la dirección de memoria a la cual el microprocesador quiere acceder. Tiene sentido de flujo unidireccional desde el microprocesador hacia la memoria. Una vez localizados los datos perdidos, su transmisión hacia el microprocesador (o hacia donde sea) se hará a través del bus de datos.
Los dispositivos de E/S intercambian la información con el microprocesador mediante los puertos de E/S. Cada puerto está asociado con un determinado dispositivo y tiene una dirección que lo identifica.
El ancho de este bus también es una medida de la potencia del microprocesador, ya que determina la cantidad de memoria a la que éste puede acceder, es decir, la cantidad de espacio direccionable. El espacio de direcciones es el rango de valores distintos que el microprocesador puede seleccionar. La cantidad máxima de direcciones disponibles será 2 a la n, siendo n el número de líneas del bus de direcciones.

Tipos de bus

Existen dos grandes tipos clasificados por el método de envío de la información: bus paralelo o bus serie.
Hay diferencias en el desempeño y hasta hace unos años se consideraba que el uso apropiado dependía de la longitud física de la conexión: para cortas distancias el bus paralelo, para largas el serial.

Bus paralelo

Es un bus en el cual los datos son enviados por bytes al mismo tiempo, con la ayuda de varias líneas que tienen funciones fijas. La cantidad de datos enviada es bastante grande con una frecuencia moderada y es igual al ancho de los datos por la frecuencia de funcionamiento. En los computadores ha sido usado de manera intensiva, desde el bus del procesador, los buses de discos duros, tarjetas de expansión y de vídeo, hasta las impresoras.
Diagrama de un Bus Backplane como extensión del bus de procesador.
El Front Side Bus de los procesadores Intel es un bus de este tipo y como cualquier bus presenta unas funciones en líneas dedicadas:
  • Las Líneas de Dirección son las encargadas de indicar la posición de memoria o el dispositivo con el que se desea establecer comunicación.
  • Las Líneas de Control son las encargadas de enviar señales de arbitraje entre los dispositivos. Entre las más importantes están las líneas de interrupción, DMA y los indicadores de estado.
  • Las Líneas de Datos trasmiten los bits de forma aleatoria de manera que por lo general un bus tiene un ancho que es potencia de 2.
Un bus paralelo tiene conexiones físicas complejas, pero la lógica es sencilla, que lo hace útil en sistemas con poco poder de cómputo. En los primeros microcomputadores, el bus era simplemente la extensión del bus del procesador y los demás integrados "escuchan" las línea de direcciones, en espera de recibir instrucciones. En el PC IBM original, el diseño del bus fue determinante a la hora de elegir un procesador con I/O de 8 bits (Intel 8088), sobre uno de 16 (el 8086), porque era posible usar hardware diseñado para otros procesadores, abaratando el producto.

Bus serie


En este los datos son enviados, bit a bit y se reconstruyen por medio de registros o rutinas de software. Está formado por pocos conductores y su ancho de banda depende de la frecuencia. Es usado desde hace menos de 10 años en buses para discos duros, unidades de estado sólido, tarjetas de expansión y para el bus del procesador.

No hay comentarios:

Publicar un comentario