Bus (informática)

Buses de comunicación en un circuito impreso.

En arquitectura de computadores, el bus (o canal) es un sistema digital que transfiere datos entre los componentes de una computadora o entre varias computadoras. Está formado por cables o pistas en un circuito impreso, dispositivos como resistores y condensadores además de circuitos integrados.[1]

Existe dos tipos de transferencia en los buses:

  1. Serie: El bus solamente es capaz de transferir los datos bit a bit. Es decir, el bus tiene un único cable que transmite la información.
  2. Paralelo: El bus permite transferir varios bits simultáneamente, por ejemplo 8 bits.

Aunque en primera instancia parece mucho más eficiente la transferencia en paralelo, esta presenta inconvenientes:

  1. La frecuencia de reloj en el bus paralelo tiene que ser más reducida.
  2. La longitud de los cables que forman el bus está limitada, ya que a partir de determinada longitud la probabilidad de que los bits lleguen desordenados es elevada.

Además, los modernos buses serie están formados por varios canales: En este caso se transmite por varios buses serie simultáneamente.

En los primeros computadores electrónicos, era muy habitual encontrar buses paralelos, quedando los buses serie dedicados para funciones de menor entidad y dispositivos lentos, como el teclado.

La tendencia en los últimos años es reemplazar los buses paralelos por buses serie (que suelen ser multicanal). Estos son más difíciles de implementar, pero están dejando velocidades de transferencia más elevadas, y permitiendo longitudes de cable mayores.

Funcionamiento

La función del bus es la de permitir la conexión lógica entre distintos subsistemas de un sistema digital, enviando datos entre dispositivos de distintos órdenes: desde dentro de los mismos circuitos integrados, hasta equipos digitales completos que forman parte de supercomputadoras.

La mayoría de los buses están basados en conductores metálicos por los cuales se trasmiten señales eléctricas que son enviadas y recibidas con la ayuda de integrados que poseen una interfaz del bus dado y se encargan de manejar las señales y entregarlas como datos útiles. Las señales digitales que se trasmiten son de datos, de direcciones o señales de control.

Los buses definen su capacidad de acuerdo a la frecuencia máxima de envío y al ancho de los datos. Por lo general estos valores son inversamente proporcionales: si se tiene una alta frecuencia, el ancho de datos debe ser pequeño. Esto se debe a que la interferencia entre las señales (crosstalk) y la dificultad de sincronizarlas, crecen con la frecuencia, de manera que un bus con pocas señales es menos susceptible a esos problemas y puede funcionar a alta velocidad.

Todos los buses de computador tienen funciones especiales como las interrupciones y las DMA que permiten que un dispositivo periférico acceda a una CPU o a la memoria usando el mínimo de recursos.

Primera generación

Bus Backplane del PDP-11 junto con algunas tarjetas.

Los primeros computadores tenían dos sistemas de buses, uno para la memoria y otro para los demás dispositivos. La CPU tenía que acceder a dos sistemas con instrucciones para cada uno, protocolos y sincronizaciones diferentes.

La empresa DEC notó que el uso de dos buses no era necesario si se combinaban las direcciones de memoria con las de los periféricos en un solo espacio de memoria ( mapeo), de manera que la arquitectura se simplificaba ahorrando costos de fabricación en equipos fabricados en masa, como eran los primeros minicomputadores.

Los primeros microcomputadores se basaban en la conexión de varias tarjetas de circuito impreso a un bus Backplane pasivo que servía de eje al sistema. En ese bus se conectaba la tarjeta de CPU que realiza las funciones de árbitro de las comunicaciones con las demás tarjetas de dispositivo conectadas; las tarjetas incluían la memoria, controladoras de disquete y disco, adaptadores de vídeo. La CPU escribía o leía los datos apuntando a la dirección que tuviera el dispositivo buscado en el espacio único de direcciones haciendo que la información fluyera a través del bus principal.

Entre las implementaciones más conocidas, están los buses Bus S-100 y el Bus ISA usados en varios microcomputadores de las décadas de 1970 y 1980. En ambos, el bus era simplemente una extensión del bus del procesador de manera que funcionaba a la misma frecuencia. Por ejemplo en los sistemas con procesador Intel 80286 el bus ISA tenía 6 u 8 megahercios de frecuencia dependiendo del procesador.[2]

Segunda generación

Jerarquía de diversos buses en un equipo relativamente moderno: SATA, FSB, AGP, USB entre otros.

El hecho de que el bus fuera pasivo y que usara la CPU como control, representaba varios problemas para la ampliación y modernización de cualquier sistema con esa arquitectura. Además que la CPU utilizaba una parte considerable de su potencia en controlar el bus.

Desde que los procesadores empezaron a funcionar con frecuencias más altas, se hizo necesario jerarquizar los buses de acuerdo a su frecuencia: se creó el concepto de bus de sistema (conexión entre el procesador y la RAM) y de buses de expansión, haciendo necesario el uso de un chipset.

El bus ISA utilizado como backplane en el PC IBM original pasó de ser un bus de sistema a uno de expansión, dejando su arbitraje a un integrado del chipset e implementando un bus a una frecuencia más alta para conectar la memoria con el procesador.

En cambio, el bus Nubus era independiente desde su creación, tenía un controlador propio y presentaba una interfaz estándar al resto del sistema, permitiendo su inclusión en diferentes arquitecturas. Fue usado en diversos equipos, incluyendo algunos de Apple y se caracterizaba por tener un ancho de 32 bits y algunas capacidades Plug and Play (autoconfiguración), que lo hacían muy versátil y adelantado a su tiempo. Entre otros ejemplos de estos buses autónomos, están el AGP y el bus PCI.

Tercera generación

Los buses de tercera generación se caracterizan por tener conexiones punto a punto, a diferencia de los buses arriba nombrados en los que se comparten señales de reloj. Esto se logra reduciendo fuertemente el número de conexiones que presenta cada dispositivo usando interfaces seriales. Entonces cada dispositivo puede negociar las características de enlace al inicio de la conexión y en algunos casos de manera dinámica, al igual que sucede en las redes de comunicaciones. Entre los ejemplos más notables, están los buses PCI-Express, el Infiniband y el HyperTransport.

Other Languages
Afrikaans: Rekenaarbus
العربية: ناقل (حاسوب)
azərbaycanca: Şin (kompüter)
български: Шина (компютри)
brezhoneg: Bus stlennegel
bosanski: Sabirnica
کوردیی ناوەندی: تێپەڕگەی کۆمپیوتەر
čeština: Sběrnice
Esperanto: Buso (komputiko)
eesti: Siin
suomi: Väylä
français: Bus informatique
hrvatski: Sabirnica
Bahasa Indonesia: Bus komputer
қазақша: Құрсым
Lëtzebuergesch: Bus (Sammelleitung)
latviešu: Kopne
олык марий: Системшай
မြန်မာဘာသာ: ဘတ်စ် (ကွန်ပျူတာ)
Nederlands: Bus (elektronica)
norsk nynorsk: Bussystem
português: Barramento
Simple English: Computer bus
slovenčina: Zbernica
slovenščina: Vodilo
українська: Комп'ютерна шина
oʻzbekcha/ўзбекча: Komputer shinasi
Tiếng Việt: Bus (máy tính)
中文: 总线