EL BUS XT y EL BUS ISA (AT)
Cuando en 1980 IBM fabricó su primer PC, este contaba con un bus de expansión conocido como XT que funcionaba a la misma velocidad que los procesadores Intel 8086 y 8088 (4.77 Mhz). El ancho de banda de este bus (8 bits) con el procesador 8088 formaba un tandem perfecto, pero la ampliación del bus de datos en el 8086 a 16 bits dejo en entredicho este tipo de bus (aparecieron los famosos cuellos de botella).
Dada la evolución de los microprocesadores el bus del PC no era ni mucho menos la solución para una comunicación fluida con el exterior del micro. En definitiva no podía hablarse de una autopista de datos en un PC cuando esta sólo tenía un ancho de 8 bits. Por lo tanto con la introducción del AT apareció un nuevo bus en el mundo del PC, que en relación con el bus de datos tenía finalmente 16 bits (ISA), pero que era compatible con su antecesor. La única diferencia fue que el bus XT era síncrono y el nuevo AT era asíncrono. Las viejas tarjetas de 8 bits de la época del PC pueden por tanto manejarse con las nuevas tarjetas de 16 bits en un mismo dispositivo. De todas maneras las tarjetas de 16 bits son considerablemente más rápidas, ya que transfieren la misma cantidad de datos en comparación con las tarjetas de 8 bits en la mitad de tiempo (transferencia de 16 bits en lugar de transferencia de 8 bits).
No tan solo se amplió el bus de datos sino que también se amplió el bus de direcciones, concretamente hasta 24 bits, de manera que este se podía dirigir al AT con memoria de 16 MB. Además también se aumentó la velocidad de cada una de las señales de frecuencia, de manera que toda la circulación de bus se desarrollaba más rápidamente. De 4.77 Mhz en el XT se pasó a 8.33 Mhz. Como consecuencia el bus forma un cuello de botella por el cual no pueden transferirse nunca los datos entre la memoria y la CPU lo suficientemente rápido. En los discos duros modernos por ejemplo, la relación (ratio) de transferencia de datos ya es superior al ratio del bus.
A las tarjetas de ampliación se les ha asignado incluso un freno de seguridad, concretamente en forma de una señal de estado de espera (wait state), que deja todavía mas tiempo a las tarjetas lentas para depositar los datos deseados en la CPU.
Especialmente por este motivo el bus AT encontró sucesores de más rendimiento en Micro Channel y en el Bus EISA, que sin embargo, debido a otros motivos, hasta ahora no se han podido introducir en el mercado.
La coexistencia hoy en día de tarjetas de ampliación de 8 bits y de tarjetas de ampliación de 16 bits es problemática mientras el campo de direcciones, del cual estas tarjetas son responsables, se encuentre en cualquier área de 128 KB. El dilema empieza cuando una tarjeta de 16 bits debe señalizar mediante una línea de control al principio de una transferencia de datos, que ella puede recoger una palabra de 16 bits del bus y que al contrario de una tarjeta de 8 bits no tiene que desdoblar la transferencia en dos bytes.
Sin embargo esta señal la tiene que mandar en un momento en el que todavía no puede saber que la dirección del bus de datos se refiere verdaderamente a ella y que por tanto tiene la obligación de contestar. Ya que de las 24 líneas de dirección que contienen la dirección deseada, hasta este momento sólo están inicializadas correctamente las líneas A17 hasta A23, con lo cual la tarjeta reconoce sólo los bits 17 hasta 23 de la dirección. Estos sin embargo cubren siempre un área completa de 128 KB, independientemente de lo que pueda haber en los bits de dirección 0 hasta 16. La tarjeta en este momento sólo sabe si la dirección de la memoria se encuentre en el área entre 0 y 127 KB, 128 y 255, etc.
Si en este momento la tarjeta de 16 bits manda por tanto una señal para una transmisión de 16 bits, hablará de esta forma por el resto de las tarjetas que se encuentren dentro de este área. Esto podrá notarse acto seguido ya que una vez también hayan llegado al bus los bits de dirección 0 a 16, quedará claro cual es la tarjeta a la cual realmente se estaba dirigiendo. Si realmente se trata de una tarjeta de 16 bits todo irá bien. Pero si se estaba dirigiendo a una tarjeta de 8 bits, la tarjeta de 16 bits se despreocupa del resto de la transferencia y deja la tarjeta de 8 bits a su propia suerte. Ésta no podrá resolver la transferencia ya que está configurada sólo para transmisiones de 8 bits. En cualquier caso el resultado será una función de error de la tarjeta de ampliación.
Conector |
Función |
B1 |
Tierra |
B-13 |
Escritura E/S |
B-14 |
Lectura E/S |
B21-B25 |
Interrupciones entre 7-3 |
A1-A13 |
Mira si E/S preparado y envía los datos a direcciones |
D1-D18 |
Hace peticiones y reconocimiento de DMA |
C1-C18 |
Desbloquea las Direcciones y pasa los datos a mem. |