|
Desde que pulsamos el boton de encendido de nuestro PC hasta... (parte 4) |
|
|
|
Por Jose Manuel Tella Llop, extraído de microsoft.public.es.windows98
BUSES Se conoce por BUS el conjunto de cables por los que circulan los datos de un dispositivo a otro o de un dispositivo a la memoria y/o CPU. COMUNICACION DE UNA TARJETA CON LA CPU Solo a modo de recordatorio, recordemos que cualquier tarjeta, tiene, o puede tener para comunicarse con la CPU, un rango de puertos, una(s) posible(s) interrupciones y una(s) posibles DMA(s). A continuación, veremos como se asignas o no estos, en cada tipo de BUS. BUS ISA Empecemos otra vez por las "herencias". El primer bus que se implementó en la arquitectura PC fue el bus ISA. En un principio era de 8 bits y rápidamente evolucionó a 16 bits. Esto indica que cada vez, en cada ciclo de reloj, era capaz de poner un byte o 2 bytes en el bus. Y... ¿cuantos ciclos de reloj tiene el bus ISA?, pues 8,33 MHz es decir 8 millones de ciclos de reloj. Tenía esta frecuencia y la "sigue" teniendo (por el consabido motivo de compatibilidad descendente -las herencias pesan-). Es decir el bus ISA con tarjetas de 16 bites, es capaz de soportar un máximo de 16 megas de transferencia por segundo PARA todos los dispositivos. Ridículo en la situación actual. Y ahora la pregunta del millón: ¿como se comunica con la CPU?. Bien, existían y siguen existiendo dos posibilidades principales. Esto es general para todas las tarjetas, sean ISA, PCI, etc., pero vamos a empezar a hablar de ello en esta parte. Un tarjeta, además de los consabidos puertos, IRQ y DMs que pueda pillar (evidentemente de la lista de "libres" que digamos con anterioridad, puede ser que tengo o no tenga su "propia" BIOS. ** En la arquitectura del primer PC, IBM, definió que la memoria principal del PC, podía llegar hasta la dirección hexadecimal A000:0000 (es decir, recordando un poco, hasta el segmento A000, offset 0). Si pasamos esta dirección a Kb´s nos da la increíble capacidad de 640 Kbs ¿os suena esta cifra, no?. Digo "increíble capacidad", porque en el año 82, era realmente increíble. Igualmente IBM definió las áreas con los segmentos desde A000 a C000 como reservadas para los buferes de vídeo. Definió igualmente el segmento F000 hasta el final del mega para contener la información de la BIOS de la placa madre, y dejo libre las direcciones C000 hasta F000 para posibles BIOS de dispositivos y tarjetas que necesitasen su propia BIOS para funcionar. Haciendo un mapa de la memora (referida a segmento y sabiendo que cada uno de estos ocupa 64 Kbs), tenemos: 0000 1000 2000 .... 9000 A000 Hasta aquí los 640 Kbs primeros de memoria- B000 Desde A000 hasta aquí el área para el vídeo "gráfico" C000 Hasta aquí, dos zonas B000 a B7FF y B800 a BFFF .... Libre F000 Desde aquí al final para la BIOS del PC. (nota la zona B000 a B7FF es para la memoria gráfica en modo monocromo y modo texto. La B800 a la BFFF es para la memoria gráfica en como color y modo texto. Lo que normalmente se utiliza en el modo MSDOS puro). Bine, pues ahora a las BIOS de las tarjetas: la primera tarjeta y totalmente necesaria en nuestro PC es la tarjeta gráfica o de vídeo. Esta tarjeta "siempre" tiene BIOS, y normalmente de 32 Kbs, y normalmente ocupa las direcciones desde C000 a C7FF. No es obligatorio, no está escrito, pero es una norma no escrita que prácticamente siguen todos los fabricantes de tarjetas de vídeo. Como tal BIOS, incluso es actualizable. Al menos las de las tarjetas "buenas". (Matrox, etc...). Recordad que en principio cualquier bios se puede actualizar y a veces, en las tarjetas gráficas, ha sido obligado para soportar alguna de las normas del ActiveX de Windows). En principio, ahora ya sabemos las cuatro posibles cosas que puede "tener" una tarjeta: 1) BIOS y por tanto "ocupar" un rango de memoria desde C000 a F000). 2) Puertos 3) IRQs 4) DMAs. ** Alguno de las 4 "cosas" anteriores (o cualquier combinación de ellas) se necesitan para que la tarjeta sirva para algo. Y ahora ciñéndonos a nuestro caso del BUS ISA. ¿como se asignaban las IRQs, los ports, etc., en aquel entonces?. Recordad que no existía la norma PnP. (Plug and Play, Plug and Pray para otros). Pues mediante switches. Así de fácil. Era responsabilidad nuestra saber que IRQs o ports teníamos libres y mediante switches se configuraba la tarjeta. Bueno, se configuraba lo que se podía. Cada fabricante escogía al azar un conjunto de puerto y/o IRQs de funcionamiento de su tarjeta y tú lo instalabas. Pero claro, si querías añadir otra tarjeta, era responsabilidad tuya que no "chocasen" entre ellas. Y a lo mejor, el nuevo fabricante, no te daba opciones. Resulta que los posibles puertos de tu nueva tarjeta, ya estaban siendo utilizados por otra. Y a lo mejor teníamos que utilizar una u otra. No podíamos instalar ambas a la vez. Curioso y duro el tema, ¿no?. Antes de comprar había que leerse con lupa que IRQs podía utilizar y que puertos y que DMAs y que direcciones podía pillar la posible BIOS. Llevar en el bolsillo, los que ya tenias utilizados con las otras placas, y ver, antes, si era posible instalar esa nueva..... Bien una vez instalada y asignadas (a mano) las IRQs y ports, etc., pues ya teníamos nuestra flamante tarjeta. Pero ya nos teníamos que olvidar de la IRQ o de la DMA "sacrificada". Ahora su entrada en funcionamiento era como siempre. Un driver se encargaba de su funcionamiento y dialogaba con ella con las técnicas que hemos comentado anteriormente PIO, DMA e IRQ. (como nota curiosa, todas las bios empiezan por los caracteres hexadecimales AA55. Las rutinas llamadas de POST de la bios de nuestro PC, lo que hacen es recorrese al encender el PC, la memoria comprendida entre C000 y F000, en bloques de 2 Kbs en 2 Kbs y ver si allí se encuentra esos caracteres hexadecimales. Si se encuentra, ya sabe que es una BIOS) (y como otra nota curiosa, recordad que antes hemos hablado de tarjetas ISA de 8 bits y 16 bits. Esto implica que hay tarjetas "mas cortas" que lo que es el bus en donde se pinchan. No pasa nada. Pueden pincharse ya que el bus ISA actual soporta ambos formatos de tarjeta). BUS PCI Surgió mucho mas tarde. Es relativamente joven (vamos a saltarnos aquí una serie de buses intermedios -EISA y VESA- que ya carecen de sentido). La norma PCI, indica que un bus PCI es únicamente de 4 slots (pero permite saltarse la norma e instalar mas slots en grupos de hasta 4 más, mediante un "bridge" -puente- "PCI to PCI"). Igualmente la norma define al bus PCI como un bus de 32 bites a 33 Mhz. Esto implica una velocidad de transferencia de 4 * 33 = 133 Megas por segundo. Aquí la velocidad ya empieza a ser apreciable frente al bus ISA. Igualmente, define las IRQs que pueden utilizarse como IRQs de dos tipos: "level" (por nivel) y "edge" (esquinado). Precisamente este ultimo tipo: "edge", es el que permitirá cuando surgió la norma PnP, el poder compartir una IRQ con mas de un dispositivo!... ya era hora ¿no?. Lo veremos en cuanto tengamos definidos todos los buses. Esto ultimo, ya empieza a parecer un poco mas serio. Ya nos empieza a abrir las posibilidades del PC un poco más del "corset" que teníamos hasta ese momento. Pero de paso, empieza a complicarle la vida a la BIOS de la placa madre. En ese momento, fue cuando las BIOS, pasaron de ser una cosa "tonta" y prácticamente "la misma" para todas las placas madre, a tener su "propia vida" y ser capaz de identificar los dispositivos. Complicaron la existencia a los fabricantes de BIOS.... BUS AGP Es completamente nuevo. Unicamente consta de 1 slot, y está pensado para gráficos a alta velocidad. No es importante llevar un chequeo de la integridad de los bites en este bus (ya que si se pierde un bit de un gráfico en un instante dado, ni se nota). Lo único importante aquí es la velocidad. Existen varios estándares 1X, 2X, 4X Y en general se va a llegar a utilizar la misma frecuencia que el BUS de la placa madre. Con esto, actualmente se consiguen tasas de transferencia de 500 Megas por segundo. Solo es importante aquí un matiz: *) El BUS AGP se inicializa "después" del BUS PCI. Esto para respetar al pie de la letra la norma PCI. Por tanto, si tenemos dos tarjetas gráficas, una PCI y otra AGP, siempre será la tarjeta primaria la PCI (teóricamente más lenta que la AGP). Pero como las normas están hechas precisamente para saltárselas, pues ciertos fabricantes de bios, empezaron a poner la pregunta "Primary AGP/PCI o PCI/AGP" en la configuración de la bios para saltarse esta secuencia. Pero repito: no es un estándar, por tanto nuestra BIOS, pudiera no tener esa opción.
Volver a
Artículos y FAQs
|