You are on page 1of 26

2 La placa-base http://www.zator.com/Hardware/H2.

htm#Bus%20de %20control 1 Presentacin


En la arquitectura PC, el ncleo del sistema est integrado en una sola placa, denominada placabase ("Motherboard" o "Mainboard"). En los sistemas actuales de sobremesa, es una placa de circuito impreso multicapa de unos 600 cm2 en la que se incluyen elementos de montaje superficial (soldados), amn de zcalos y conectores para diversos elementos desmontables. Existen diversos tamaos y disposiciones ( H2.6); el aspecto de una de estas placas se muestra en la pgina adjunta ( Figura).

Representacin esquemtica de una placa-base.

2 Componentes A grandes rasgos, los componentes principales de la placa base son los que se han esquematizado en la figura adjunta: Bus externo Procesador BIOS Chipset. Juego de chips auxiliares Memoria . . . . (UCP).

Conectores de E/S, incluyendo alimentacin

3 Bus Observacin: Lo que sigue es una descripcin somera de las caractersticas funcionales y principios operativos del bus del PC. Hemos de advertir que en la literatura tcnica leer que existen varios estndares de bus: ISA, EISA, VESA, MCA etc. En realidad esto se refiere a las especificaciones mecnicas de los conectores (zcalos) que se incluyen en la placa-base

para insertar dispositivos tales como placas de video, mdems internos, controladores de disco, etc. etc. De hecho es frecuente que una placa base tenga zcalos de ms de un tipo (por ejemplo, ISA y PCI). El elemento principal de la placa-base es el bus [1], una especie de autopista que la recorre y que acta como espina dorsal del ordenador. La mayora de los datos pasan por esta va para ir de un sitio a otro (el ordenador se parece a uno de esos pueblos del salvaje Oeste -de las pelculas- que solo tienen una calle). Nota: Como muchas otras cosas de esta tecnologa tan cambiante, el smil propuesto es de una exactitud relativa. La tendencia apunta a la creacin de otros "buses" secundarios para misiones especficas que van y vienen con las modas tecnolgicas de cada momento. Ver en el siguiente epgrafe algunos comentarios sobre los denominados Buses locales ( H2.2). Esta autopista pasa por los zcalos y conectores de las tarjetas de expansin y perifricos, y es frecuente que en algunos equipos porttiles el bus tenga una conexin externa (en la figura anterior se ha sealado como "Conexin exterior"). Las denominadas "Dock stations" se acoplan a dichos conectores formando una prolongacin del bus, lo que permite que puedan aadirse dispositivos externos. La inclusin del bus obedece a dos razones: Por un lado es un elemento necesario para transportar datos entre las partes del ordenador. De otro, es el resultado de un criterio de diseo de los creadores del PC. La adopcin de una arquitectura abierta que permitiese conectar la mayor cantidad de dispositivos, lo que exiga que todas las seales estuviesen presentes en los zcalos de conexin y que sus caractersticas estuviesen debidamente documentadas. Ambas premisas se cumplieron y el resultado ha sido uno de los mayores xitos comerciales de todos los tiempos. El bus es un conjunto de pistas conductoras grabadas en la placa-base. Precisamente su caracterstica ms importante es el nmero de tales pistas, pues cuanto mayor sea este nmero, mayor es la cantidad de bits de la seal que transporta. Como cada conductor puede transportar un bit, en realidad no se suele hablar de "conductores" para referirse a la anchura del bus, sino de "bits" (ms concretamente bits de datos). Nota: Cada lnea transporta un bit de valor 0 o 1. Un valor "alto" (5 V.) se considera un 1; un valor "bajo" (0 V. = masa) se considera un 0. Determinados sucesos ocurren cuando en una lnea se recibe un 1, se denominan "activo alto". Por contra, otros sucesos ocurren cuando en ciertas lneas se recibe un 0, se dice entonces que dicha lnea es de "activo bajo". En los primeros PCs, el bus de datos era de 8 bits (a pesar que el procesador utilizado, el 8088 era de 16 bits), por lo que se poda transferir 1 octeto cada vez, y las direcciones deban ser manejadas en dos partes (esto dio origen a una forma de direccionamiento denominada

"Segmentada", a la que nos referiremos a continuacin ). El "ancho" del bus de datos se aument posteriormente a 16 bits; en las mquinas actuales es de 32 y la tendencia es ir a 64. No confundir este bus de la placa-base, denominado tambin bus externo [4] o FSB ("Frontside bus"), con el existente en el interior del procesador para comunicar entre s sus diversos mdulos ( H3.2). Este ltimo se conoce como bus interno o bus del sistema ("System bus"), y ni su "anchura" ni su velocidad (frecuencia) tienen porqu coincidir con las del externo. Hemos visto como en el 8086 es de 16 bits, mientras que el bus externo del PC XT que utilizaba dicho procesador, es solo de 8 bits. En los sistemas actuales (2001) una velocidad tpica del procesador es del orden de 400/500 MHz, mientras que el FSB suele trabajar a una fraccin de aquella (tpicamente 100 MHz), adems la anchura del bus del procesador suele ser de dos a cuatro veces la del bus externo. Nota: Este divorcio entre la velocidad del procesador y la que puede aceptar la placa-base (bastante inferior a la del primero), comenz con la introduccin del procesador Intel486, lo que a su vez condujo a que la cach L1 cobrara especial relevancia ( H5.2).

Adems de los conductores de datos, existen otros auxiliares, de modo que en esta "autopista" tiene en realidad ms carriles. En el PC original, a pesar de ser "solo" de 8 bits, existan en realidad 62 conductores (31 en la cara superior "de componentes" -A- y 31 en la inferior "de soldaduras" -B-). En el argot de los ingenieros de hardware estas lneas se conocen con acrnimos y abreviaturas universalmente admitidas, de las que indicaremos algunas.

Los zcalos para tarjetas de expansin del PC XT eran del modelo denominado ISA ("Industry Standard Architecture") corta o ISA de 8 bits, en el que se podan insertar tarjetas con 62 contactos (31 por cada cara). Posteriormente, en 1984, los modelos AT aadieron 36 nuevas lneas al bus, utilizando Esquema de contactos ISA 8 bits el zcalo ISA de 16 bits, que admita tarjetas con 98 contactos (49 por cara), pero manteniendo un diseo de zcalos que los haca elctricamente compatibles con las tarjetas ISA cortas. De estas nuevas lneas, 8 eran de datos (el bus pasaba a ser de 16 bits), cinco nuevas lneas de control de interrupciones, y siete de direccin, puesto que el nuevo ancho de bus permita direccionar ms memoria. Adems de la compatibilidad mecnica, se haba incluido un ingenioso dispositivo que detectaba si la tarjeta insertada era larga o corta para adecuar el Esquema de contactos (medidas en pulgadas) ISA 16 bits modo de direccionamiento al estilo adecuado. El resultado era que los equipos ISA de 16 bits podan aprovechar las antiguas tarjetas ISA, aunque con un cierto desaprovechamiento de las capacidades de los sistemas AT, una de las cuales era precisamente la capacidad de utilizar 16 bits para direcciones y datos.

En 1988 Compaq y otros fabricantes mejoran el ISA de 16 bits, adoptando el que se denomina bus EISA (ISA Extendido), que guardaba compatibilidad hacia atrs con los buses ISA anteriores, y que ha persistido largamente. En 1993 Intel introdujo el bus PCI ("Peripheral Component Interconnect") que proporciona 32 bits. Su versin 2.1 soporta 64 bits y velocidades ms rpidas en la frecuencia de reloj del bus. En la actualidad (2001) PCI es el nuevo estndar de facto, y ha sustituido casi completamente a EISA, de forma que empiezan a verse tarjetas que no tienen ningn conector para las antiguas tarjetas EISA.

3.1 Principios de funcionamiento Para comprender el funcionamiento del bus, y en general del mecanismo de transmisin de la informacin dentro del ordenador, es preciso hacer tres observaciones previas: a: En realidad, el bus externo puede considerarse dividido en cuatro vas para otros tantos servicios distintos: Bus de datos Bus de alimentacin Bus de control . . .

Bus de Direcciones

b: Sealar que el bus externo responde al modelo que en tecnologa de redes se conoce como "Broadcast" o difusin amplia [5]. En este modo de transmisin, cuando se quiere transmitir alguna informacin, el dato es puesto en el bus de datos , y la direccin de destino en el bus de direcciones . Ambas seales llegan a todos los dispositivos conectados al bus, pero el dato solo es aceptado por aquel cuya direccin coincide con la sealada por el bus (en realidad un dispositivo puede aceptar una sola direccin o un rango de ellas). c: Todos los sistemas de redes (el bus es una red) tienen un sistema de "direcciones" para saber quin, de entre todos los elementos conectados, debe recibir la informacin (el mensaje recibido puede a su vez ser la orden de enviar una respuesta). En nuestro caso, los intercambios pueden ser entre cualquier par de dispositivos. Por ejemplo, un almacenamiento en disco y una impresora, pero los que involucran memoria RAM son especialmente importantes, ya que antes o despus todos los datos pasan por all (incluso los datos e instrucciones de los programas en ejecucin estn en RAM). Esto indujo a los diseadores del PC a disponer que las transferencias de datos entre la memoria y ciertos dispositivos recibieran un tratamiento especial. Hasta el punto que dentro del bus existe un subsistema especfico para controlar estas transferencias, el denominado acceso directo a memoria (DMA ). Lo de "directo" viene a cuento de que en los dems casos, la transferencia de datos entre dos dispositivos A y B requiere la intervencin del procesador, mientras que las transferencias DMA lo mantienen al margen. El resultado es que la comunicacin entre la memoria y ciertos dispositivos, o entre esta y el procesador, se efecta de forma un tanto especial. Mientras que las comunicaciones entre dispositivos, o entre dispositivo y procesador, se realizan mediante un sistema distinto, denominado puerto de E/S ( H2.1).

d: El mecanismo DMA es posible porque el PC permite que el microprocesador, que en ltimo extremo gobierna el sistema, ceda el control del bus ("Bus mastering") a otro dispositivo que asume su control durante determinados periodos. La finalidad es suprimir la intervencin del procesador cuando no es estrictamente necesario, lo que simplifica y agiliza el proceso. Resumen Para que pueda conocerse el destino de los datos en esta red de elementos intercomunicados que constituyen el bus, cada dispositivo tiene una direccin. Cualquiera que sea su origen, para enviar un dato a un puerto (dispositivo) o a una direccin de memoria, la UCP coloca la direccin de destino en el bus de direcciones, a continuacin el remitente sita el dato en el bus de datos. Cuando esto sucede, el destinatario se da por aludido y lee el dato. Es de vital importancia recordar que, para distinguir el tipo de transmisin a realizar por el bus de datos, existe una lnea especfica en el bus de control, que indica si la direccin colocada en el bus de direcciones se refiere a un "puerto" o a memoria.

3.2 Bus de datos Junto con el tipo de procesador soportado, la "anchura" del bus de datos es quizs una de las caractersticas distintivas ms importantes de una placa-base, pues determina la cantidad de informacin que puede fluir por ella en cada ciclo de reloj. Las 8 lneas de datos se identifican D0 a D7. Con la introduccin del PC AT se aadieron 8 nuevas lneas (D8 a D15), hasta un total de 16. Al tratar de la arquitectura del procesador ( H3b1), veremos que en los primeros PC's algunas de estas lneas eran de doble uso. Nota: Aparentemente la decisin inicial de adoptar un bus de datos de 8 bits a pesar que el procesador 8088 utilizado era de 16 bits, se debi exclusivamente a razones econmicas. En la poca, la circuitera auxiliar de 8 bits era ms abundante y econmica que la de 16 bits.

3.3 Bus de alimentacin En los primeros PCs, la fuente de alimentacin alimenta a la placa-base a travs de dos conectores Molex de 6 contactos cada uno. En estos cables estn las tensiones de alimentacin (+12V.; -12V.; +5V. y -5V.); conexiones a masa, y la seal de Power Good, que est relacionada con la seal de "reset" . A partir de este punto, el bus cuenta con una serie de lneas que trasladan estas tensiones a los dispositivos instalados en la propia placa-base y al resto de tarjetas instaladas en los zcalos. El bus de alimentacin cuenta con lneas para las tensiones +5, -5, +12 y -12 V (la de +5 V est duplicada). Adems existen tres lneas conectadas a masa GND (para que todos los elementos tengan una referencia de potencial comn). Nota: En el IBM PC, la fuente proporcionaba 65 W. Las fuentes actuales suministran de 200 a 250 W de potencia para los sistemas de sobremesa. Adems los conectores se han modificado (actualmente los cables que van a la placa-base utilizan un solo conector de 20 pines Conector ATX) y se han aadido nuevas seales, de forma que la fuente puede

desconectarse mediante una seal enviada desde la placa base. Esta seal puede ser enviada por el Sistema -desconexin software- o por el usuario desde el teclado.

3.4 Bus de control Adems de los datos y la energa, el bus transporta una serie de seales de control, por lo que a estas lneas se las denomina bus de control o del sistema. Las principales son las siguientes: 0WS ("Zero Wait State"). Es utilizado por los dispositivos rpidos conectados al bus para prevenir al procesador que no inserte estados adicionales de espera. AEN ("Address Enabled") Se utiliza para indicar si es la UCP o el controlador DMA, el que tiene control sobre las lneas de datos y de direcciones en ese momento. Cuando est alta, el controlador DMA controla el bus de datos y el de direcciones, adems de las lneas MEMR, MEMW, IOR e IOW, ALE ("Address Latch Enabled") Cuando est alta, seala que la UCP ha colocado una direccin vlida en el bus de direcciones. CLK. Seal del reloj que conecta directamente con una patilla del procesador ( H3b1). En el XT es de 4.77 MHz, un tercio de la seal del oscilador (OSC). En el AT esta frecuencia se elev a 7 MHz, la mitad de la seal del oscilador. OSC. Seal del oscilador ; basada en la frecuencia de un cristal instalado en la placabase. En el XT es de 14.31818 MHz. I/O CH CHK ("Channel Check"). Es una seal de deteccin de errores. Cuando est baja, algn dispositivo del bus ha detectado un error de paridad. I/O CH RDY ("Channel Ready"). Sirve para avisar al procesador o al MDAC que un dispositivo lento necesita tiempo extra para estar preparado. Cuando algn dispositivo necesita tiempo extra, baja esta seal, aunque nunca durante un periodo de ms de 10 ciclos CLK. IRQ ("Interrupt request"). En el PC XT existen 6 lneas identificadas IRQ2 a IRQ7, que juegan un papel fundamental en el funcionamiento del ordenador, ya que la tecnologa de los ordenadores modernos se basa en un sistema de interrupciones al que nos referiremos ms adelante ( H2.4). Estas 6 lneas fueron aumentadas posteriormente en el PC AT, aadindose 8, aunque no todas fueron destinadas al servicio de perifricos, por lo que en el nuevo BUS solo aparecen IRQ10, IRQ11, IRQ12, IRQ14 e IRQ15. Adelantamos aqu que una interrupcin es una seal que se origina en un dispositivo (un perifrico) para indicar al procesador que algo requiere su atencin inmediata (de ah su nombre, literalmente "Peticin de interrupcin"). Se solicita al procesador que suspenda lo que est haciendo para atender la peticin. IOR ("I/O Read") Orden de lectura. Esta lnea indica a un dispositivo E/S conectado al bus que debe colocar un dato en el bus de datos. IOW ("I/O Write") Orden de escritura. Esta lnea indica a un dispositivo E/S que debe leer el dato situado en el bus de datos. RESET. Una seal en esta lnea ( H4), que conecta con una patilla especial del procesador, origina el reinicio del sistema. Cuando esta lnea es puesta a masa

(desaparece su tensin) y despus vuelve a su valor normal, se origina un reinicio del procesador. SBHE ("System Bus High Enable"). Cuando est activado indica que se est realizando una transferencia de datos. DRQ ("DMA Request"). Similares en concepto a las lneas IRQ, pero utilizadas para solicitar acceso directo a memoria. Existen tres de ellas, sealadas DRQ1 a DRQ3. DACK ("DMA Acknowledge"). Se utilizan para acusar recibo de la peticin DRQ correspondiente. Existen cuatro, sealadas DACK0 a DACK3, aunque el mecanismo DMA solo utiliza las tres ltimas, DACK0 es utilizada en el XT para sealar un ciclo de refresco de memoria. MEMR ("Memory Read") Cuando se activa, esta seal indica a la memoria conectada al bus que escriba los datos en el bus de datos. MEMW ("Memory Write") Cuando se activa, indica a la memoria que almacene los datos situados en el bus de datos. T/C ("Terminal Count"). Sirve para sealar que el controlador DMA ha alcanzado el final de una transferencia ( 2.3).

El sistema de acceso directo a memoria DMA ("Direct Memory Access") es muy importante. Como puede verse, algunas lneas del bus estn destinadas a este servicio, que ser tratado ms adelante con mayor detalle ( 2.3).

3.5 Bus de direcciones El bus del PC XT contiene 20 lneas identificadas SA0 a SA19; que en el AT se aumentaron a 27, aadiendo las denominaciones LA17 a LA23. Estas lneas contienen las direcciones que identifican la parte del ordenador que comunica. Las direcciones son de dos tipos; unas se refieren a direcciones de memoria; otras a direcciones de puertos de E/S, pero en cualquier caso son de 20 bits para el PC XT y de 27 para los ATs. Con los datos anteriores, resulta evidente ( 0.4) que el PC XT poda manejar 1.048.576 direcciones (220), mientras que en el AT esta cantidad asciende a algo ms de 134 millones (227). Sin embargo, recordemos que tanto los procesadores 8088 presentes en el XT, como los 80287 del AT, tenan registros de 16 bits ( H3b) que solo podan albergar 65.536 posiciones (216), muy alejado de los valores anteriores. Para resolver el problema, se utilizan las direcciones segmentadas ( H5.1), compuestas por dos palabras de 16 bits que se componen para formar una direccin de 20 bits. Nota: durante las operaciones E/S de puertos, las direcciones SA16-SA19 del 8088 permanecen iguales a cero ( direcciones de puertos. H3.2.1), por lo que solo pueden utilizarse 16 bits para

4 Procesador A estas alturas del siglo XXI no creo que exista nadie que necesite explicacin general sobre su funcin e importancia. El procesador es realmente el "Cerebro" del Sistema (cuando empezaron a verse los primeros ordenadores, la gente los llamaba "cerebros electrnicos").

En el siguiente epgrafe ( H3) exponemos un resumen de sus partes principales desde el punto de vista que interesan al informtico. Aqu sealaremos solamente que, en los PCs actuales, es el chip ms grande que puede encontrarse en la placa-base, denominado genricamente "Procesador", contiene en una sola unidad lo que anteriormente se denominaba Unidad Central de Proceso UCP (CPU en la literatura inglesa); el coprocesador matemtico MCP ("Math coprocessor") y una cierta cantidad de memoria auxiliar (cach) de acceso rpido.

5 Chips auxiliares Nota: Las alusiones en el texto a los chips utilizados se refieren a los PCs originales IBM PC; XT y AT. Aunque actualmente han sido suplantados por un par de circuitos (ver figura 1 ), sin embargo, la funcionalidad permanece. El juego de chips auxiliares ("Chipset") es un conjunto de circuitos integrados que realizan misiones especficas de apoyo. Por ejemplo organizar el trfico en esa autopista que es el bus externo. Generalmente estn soldados de forma permanente y forman un conjunto armnico con el procesador y con las caractersticas de la placa (las placas modernas vienen bastante "desnudas", sin procesador, ni memoria, ni dispositivos perifricos, de forma que resultan altamente configurables, pero siempre incluyen este conjunto de integrados de apoyo). Los ms significativos son los siguientes: Elementos de temporizacin Controlador del bus externo Controladores de acceso directo a memoria DMAC Controlador programable de interrupciones PIC Controladores de perifricos .

5.1 Elementos de temporizacin Los ordenadores son mquinas sncronas, lo que significa que todas sus partes funcionan de forma acompasada. Es frecuente poner el ejemplo de los remeros en las pelculas de galeras, donde cada remero no va por su cuenta, todos siguen el ritmo del gordo del tambor. En el PC ocurre otro tanto, aqu el ritmo no lo marca un tambor, sino un metrnomo (reloj) que genera una seal (seal de reloj), que marca el ritmo de la "msica" que es capaz de ejecutar el sistema. Esta seal est presente en el bus de control , la lnea CLK.

El corazn del reloj es un oscilador controlado por un cristal de cuarzo que acta de patrn (es un elemento fcilmente identificable con aspecto de almohadilla plateada). En los PC originales la frecuencia del cristal es de 14.31818 MHz. Esta seal est tambin presente en el bus de control, lnea OSC, y la denominaremos frecuencia del oscilador. En los primitivos PCs la seal del reloj era de 4.772720 MHz. Es decir, un tercio de la frecuencia del oscilador [3]. A su vez, la seal del reloj es dividida por 262144 (218) para proporcionar una interrupcin (tic) a una cadencia aproximada de 18.2 veces por segundo. La seal CLK es importantsima, ya que sin ella sera imposible un funcionamiento armnico de los distintos elementos (incluyendo el procesador, una de cuyas patillas conecta directamente con ella). Todos los sucesos internos tienen lugar al comps de este tic-tac electrnico [6].

Nota: Hemos sealado , que a partir de la introduccin del 80486 algunos elementos del ordenador no pueden funcionar al ritmo endiablado del reloj, que resulta demasiado rpido para el resto de chips instalados en la placa, por lo que en esta se utilizan frecuencias inferiores. Esto se consigue utilizando solo uno de cada tres, cuatro o cinco pulsos de CLK. En este sentido es particularmente significativa la denominada velocidad del bus externo. Que es la que se utiliza en dicho bus. Por ejemplo, un procesador que est trabajando a 200 MHz, puede que est utilizando una frecuencia de 66 MHz en sus comunicaciones con el bus externo. Exactamente la misma que un procesador de "solo" 66 MHz de reloj que utilice tambin 66 MHz para el bus externo. La situacin actual es que las velocidades tpicas de las placas-base son de 60- 66- 100- 133 MHz mientras que los procesadores funcionan a frecuencias mltiplos de aquellas; tpicamente de 1x hasta 10x, es decir, desde 60 a 1330 MHz (lo que se denomina velocidad del ncleo).

5.1.1 Chip del reloj En el PC original, el oscilador antes mencionado est montado en un chip 8284A (88284 en el AT), que se conoce como generador de reloj (no confundir con el reloj programable ). La fecha y hora, que haba que introducir en la puesta en marcha del sistema, se perda cada vez que se apagaba el equipo. Durante el funcionamiento, el sistema de fecha y hora era mantenido por una interrupcin de alta prioridad ( H2.4) que ocurra unas 18 veces cada segundo.

A partir de la introduccin del PC AT, se instal en la placa base el denominado chip del reloj, abreviadamente RTC ("Real Time Clock"). Es un autntico reloj que suministra la fecha y hora al sistema. Como este reloj deba continuar su funcionamiento incluso estando el equipo desconectado, se le dot de una pequea pila o batera. Aprovechando que este circuito dispona de su propia fuente de energa, se utiliz para aadirle cierta cantidad de memoria CMOS ("Complementary Metal-Oxide Semiconductor") de bajo consumo, la denominada ROM del sistema, que se utiliza para guardar informacin relativa a la configuracin del equipo. Estos datos son accesibles pulsando una combinacin de teclas en los momentos iniciales de arranque, lo que inicia un programa de configuracin grabado en la BIOS conocido generalmente como Set-up. Nota: La batera de backup de la placa base, es un elemento fcilmente identificable; tiene forma de pila de botn reemplazable, o de elementos soldados recubiertos de una funda plstica. Este ltimo es el caso mostrado en la fig. 2. La batera es el elemento azul; por encima est el conector del teclado y sobre ste, junto al letrero BATTERY, se distinguen tres de los 4 pines del conector para la batera auxiliar [7]. Esta batera se agota con el tiempo, especialmente si el equipo permanece mucho tiempo apagado, en cuyo caso se pierde la fecha y (lo que es ms importante) los datos de configuracin establecidos con el programa de Set-up. Aunque Fig. 2 la mayora de equipos funcionan bien con la configuracin por defecto, en caso de sustituir la batera es posible que sea necesario reconfigurar el Set-up.

Tradicionalmente este circuito CMOS/RTC era un Motorola MC146818. En los modelos iniciales esta memoria era de 128 bytes. Actualmente es de 256 KB, y junto con algunos otros elementos estn incluidos en un chipset de solo dos circuitos integrados. A su vez el programa de configuracin es cada vez ms sofisticado, de forma que simplifica la configuracin del sistema. Por ejemplo, dispone de un sistema de proteccin ("Password") de acceso y de autodeteccin del tipo de disco instalado; algo que en los modelos antiguos deba hacerse manualmente.

5.1.2 Temporizador programable Junto con el anterior se encuentra un circuito que recibe varios nombres: PIT ("Programmable Interval Timer") temporizador programable, reloj programable, temporizador ("timer"), Etc. Constituido por un chip 8253 (8254 en el AT y mquinas con bus EISA/MCA) que dispone de tres temporizadores programables independientes numerados del 0 al 2. En realidad son divisores de frecuencia que obtienen la seal del generador de reloj. Tienen cuatro modos de funcionamiento programables que pueden generar diversas seales: Pulsos de anchura variable. Generar una interrupcin al final de la cuenta de una serie de pulsos de reloj, para lo que dispone de tres contadores independientes de 16 bits. Ondas cuadradas que sean una fraccin de la frecuencia de entrada (reloj). Por ejemplo, podemos conseguir que generen una seal por cada 1000 seales de la frecuencia del reloj RTC, con lo que en un PC XT obtendramos una frecuencia de 4.77 KHz. Medir el intervalo entre sucesos.

Estas capacidades se utilizan para cuestiones tales como producir seales de sincronizacin para refresco de la RAM, o tonos audibles de diversas frecuencias en el altavoz del PC. La distribucin de tareas es como sigue: Canal 0: Produce una interrupcin cada 54.94 ms en IRQ0, que activa la rutina de actualizacin del reloj de tiempo real RTC .

Canal 1: Produce una interrupcin cada 15.12 microsegundos que marca el comienzo del ciclo de refresco de las memorias RAM dinmicas ( 5.3.2).

Canal 2: Este canal se destina a generar tonos para el altavoz del sistema.

5.2 Controlador del bus Es una especie de controlador de trfico. En el PC XT es el chip 8288 y en el AT es el 82288. El procesador necesita del concurso de este chip para generar el juego completo de seales del bus de control.

5.3 Controlador DMA DMA es el acrnimo de "Direct Memory Access"; se trata de un mecanismo incluido en la arquitectura del PC, que permite intercambios de datos entre la memoria y ciertos dispositivos sin intervencin del procesador (por esta razn se denomina precisamente acceso directo a memoria). Est controlado por un chip especfico, el DMAC ("DMA Controller"). En los XT estaba integrado en un chip 8237A que proporcionaba 4 canales. Posteriormente en los AT se instalaron

dos, amplindose a 8 el nmero de canales. En el epgrafe dedicado al Acceso directo a memoria ( H2.3), se expone con ms detalle su funcionamiento.

5.4 Controlador de interrupciones Las interrupciones del PC, a las que nos referimos ms detenidamente en el epgrafe correspondiente ( H2.4), son manejadas por un chip conocido como PIC ("Programmable Interrupt Controller"). Originariamente era un 8259A, que puede manejar 8 peticiones de interrupcin, pero pronto se hizo evidente que eran un nmero excesivamente corto, por lo que en 1984, IBM aadi un segundo controlador en el modelo AT. Este diseo, con dos controladores, ha permanecido invariable hasta nuestros das en lo que se refiere a su funcionalidad. Recientemente ha sido sustituido por el denominado APIC ("Advanced Programmable Interrupt Controller") en las mquinas Pentium y sucesoras, que est basado en un chip 82489DX.

5.5 Controladores de perifricos En la placa-base existen diversos chips destinados especficamente al control de perifricos serie y paralelo. A continuacin researemos brevemente algunos de los ms conocidos. El PPI ("Programmable peripheral interface"), tambin conocido como PIO ("Programmable Input/Output") era originariamente un 8255. Se trata de un chip de 24 patillas que pueden ser programadas individualmente en dos grupos de 12, de las cuales 8 son de datos y 4 bits auxiliares incluyen seales de control (STROBE; ACKNOWLEDGE; BUFFER FULL, Etc.) Este chip tiene gran variedad de aplicaciones, entre ellas almacenar informacin sobre el estado de configuracin de la placa-base y controlar otros chips, como el temporizador programable y la interfaz del teclado, pero su uso caracterstico es como interfase paralelo bidireccional para perifricos que utilizan este tipo de comunicacin (por ejemplo impresoras, escneres, Etc.) El altavoz del sistema est conectado a dos patillas de este integrado. Desde el punto de vista lgico este dispositivo responde a las direcciones 060h-063h, que son sus nmeros de puerto y dispone de tres registros de 1 byte conocidos como A, B y C, cuyas direcciones respectivas son 060h, 061h y 062h. La direccin 063h se utiliza para configurar el dispositivo. Nota: Como hemos sealado anteriormente, a partir del AT, el estado de configuracin de la placa-base se almacena en un integrado alimentado con batera que contiene tambin el reloj de tiempo real. En realidad el AT no tiene un 8255 como tal, pero emula su comportamiento. En este caso el controlador es un 8742 responde a las direcciones 060h064h, y realiza otras funciones no directamente relacionadas con el teclado, como resetear la UCP, controlar la puerta A20 y manejar el ratn [9]. El 8250 ACE ("Asynchronous communication equipment"), es una interfaz entre el bus paralelo del sistema y los perifricos que utilizan comunicacin serie, como mdems y ratones. Puede generar las seales de control de la popular interfaz RS-232 [8]; dispone de un generador de velocidad de transmisin que permite generar cualquiera de las ms frecuentes. Puede funcionar bajo control de programa o mediante interrupciones ( H2a) y dispone de una cierta capacidad de comprobacin y correccin de los errores tpicos de las comunicaciones serie.

El PD765, que controlaba el disquete en los XT, ms conocido como FDC ("Floppy Disc Controller"). Fue sustituido por el 82072A en el AT y por el 82077A en el PS/2.

6 Memoria El trmino "memoria" se refiere desde luego a cualquier dispositivo capaz de almacenar datos, pero aplicado a un ordenador actual es demasiado ambiguo, ya que existen varias clases. En principio, pueden clasificarse en dos grandes grupos: Internas y externas (tambin denominadas primarias y secundarias). 6.1 Las memorias internas estn situadas en el procesador, la placa base, o en tarjetas insertas en zcalos de esta. En el captulo correspondiente ( H5), comentamos algunos de aspectos funcionales que son de especial inters para el programador. 6.2 La memoria externa est situada en dispositivos que se consideran "Externos" o "Perifricos" al ordenador, tales como disquetes, discos duros, cintas, CDs, DVDs, etc. Algunas de ellas son intercambiables, de forma que la capacidad de almacenamiento puede ser virtualmente ilimitada, aunque con el costo de tener que insertar manualmente la cinta, CD o DVD en la unidad correspondiente. Los SOs utilizan la memoria externa para almacenar ficheros con informacin, pero los sistemas modernos, tipo Windows o Linux tambin utilizan la memoria externa en sustitucin de la interna; un artificio conocido como memoria virtual ( H5.1). La memoria virtual utiliza un fichero de intercambio ("Swap file") en memoria externa, que almacena la informacin que no cabe en RAM. Nota: Actualmente ha surgido una nueva forma de memoria externa, que seguramente es el sistema del futuro. Nos referimos a Internet como fuente inagotable de almacenamiento de informacin. Ya han surgido incluso PSIs [2] que ofrecen almacenamiento "ilimitado" a sus usuarios. El estudio de las memorias externas, aunque muy interesante (apasionante, dira desde el punto de vista tecnolgico) y de uso constante, en especial los discos duros, se sale totalmente de los mrgenes que hemos impuesto a esta obra.

7 BIOS Bsicamente es una memoria en la que se guardan datos fundamentales para el funcionamiento de la placa-base y sus perifricos principales. El funcionamiento de los IBM PCs y compatibles se basa en su existencia, y su importancia justifica que se le asigne un chip especialmente dedicado a contenerla. En los equipos modernos, el chip de la BIOS es fcilmente identificable por una pegatina plateada con un holograma, en la que junto a la palabra BIOS, aparece el nombre del fabricante. Probablemente alguno de los siguientes: AMI; Phoenix; Award; AST; Compaq; Microid; Mylex; IBM; Quadtel; ACER, o ALR (los ms conocidos). En atencin a su importancia, le hemos dedicado un captulo ( H3).

8 Conectores auxiliares

La placa-base dispone generalmente de una serie de conectores para enchufar determinados dispositivos. Entre los ms frecuentes estn: Conector para la fuente de alimentacin ( Conector); Conector DB25 de puerto paralelo; conector DB9 para puerto serie; conector USB; conectores mini-DIN para ratn y teclado, etc. Algunos de ellos se muestran en la figura ( Figura-1). Inicio. [1] Utilizamos el vocablo original ingls "Bus" porque ha tomado carta de naturaleza en nuestro idioma. Seguramente si usted dice el "autobs" del PC nadie sabr a que se refiere. [2] PSI: Proveedor de Servicios de Internet (ISP "Internet Service Provider"). [3] Posteriormente esta frecuencia fue elevada al 50%, es decir, 7.15 MHz en los ATs. Aunque desde luego hoy nos parecen ridculas, muchos de los primeros usuarios sobrecargaban sus sistemas cambiando los cuarzos ("overclocking") a fin de conseguir algo ms de velocidad, ya que los valores adoptados por IBM eran muy conservadores, y los equipos funcionaban sin dificultad a frecuencias algo ms elevadas. [4] A veces el bus externo es llamado impropiamente bus de datos ("Data bus"), cuando este es en realidad solo una parte del bus externo .

[5] El caso opuesto, cuando la informacin se transmite solo al dispositivo receptor se denomina "Multicast". Esta modalidad requiere que la red tenga cierta capacidad de direccionamiento o conmutacin, de forma que pueda establecerse una va exclusiva entre el transmisor y el receptor. [6] Para que esta sincrona sea posible, se dispone incluso de un mecanismo que obliga al procesador a permanecer inactivo un nmero determinado de ciclos (de espera) cuando un perifrico no est preparado para seguirlo ( H3.2.1)

[7] En estos casos, la placa base tiene unos pequeos pines metlicos (generalmente 4 en lnea) en los que puede abrocharse un pequeo conector para instalar una batera auxiliar externa que puede conseguirse en el comercio especializado; la nica precaucin es respetar la polaridad. El cable rojo que acompaa a la batera es el positivo; debe corresponder con el pin positivo que est claramente sealado con "+" o "1" en la placa-base. [8] Durante muchos aos esta ha sido la interfaz estndar para comunicaciones serie de la EIA ("Electronic Industries Association"). [9] Esta es la razn por la que, en los modelos PS/2, el conector mini-DIN pueda conectarse a un teclado o al ratn. Por su parte, la puerta ("Gate") A20 maneja el acceso a memoria en modo protegido, siendo por tanto es responsable de la memoria extendida ( 5.1). Esta es tambin la razn por la que algunos test de diagnstico de la placa base reporten errores de memoria por encima de 1 MByte cuando en realidad pueden deberse al 8742. Inicio

4 Interrupciones http://www.zator.com/Hardware/H2_4.htm
1 Sinopsis Una peticin de interrupcin IRQ ("Interrupt Request") es una seal que se origina en un dispositivo hardware (por ejemplo, un perifrico), para indicar al procesador que algo requiere su atencin inmediata; se solicita al procesador que suspenda lo que est haciendo para atender la peticin. Hemos sealado ( H2) que las interrupciones juegan un papel fundamental, en especial en la operacin de dispositivos E/S, ya que les permite enviar estas peticiones a la UCP. Sin ellas el sistema debera chequear constantemente los dispositivos para comprobar su actividad, pero las interrupciones permiten que los dispositivos puedan permanecer en silencio hasta el momento que requieren atencin del procesador. Podra figurarse un sistema telefnico donde hubiera que levantar peridicamente el auricular para comprobar si alguien nos llama? [4]. Nota: Veremos que estas peticiones pueden ser generadas no solo por dispositivos hardware, tambin por los programas, e incluso en circunstancias especiales (errores generalmente) por el propio procesador. Resumimos que existen tres posibles orgenes de estas peticiones: Hardware, Software, y del procesador.

2 Principio de funcionamiento Cuando un dispositivo reclama atencin del procesador es para que este haga algo. Este "algo" es lo que se conoce como servicio; controlador o gestor de la interrupcin, ISR ("Interrupt service routine"). En cualquier caso se trata siempre de ejecutar un programa situado en algn lugar de la memoria RAM o en la ROM-BIOS. Ocurre que las direcciones de inicio de estos programas, que se conocen como vectores de interrupcin, se copian en una tabla de 1024 Bytes que se carga al principio de la memoria de usuario (direcciones 0000h a 0400h) durante el proceso de inicio del sistema ( servicios del BIOS. H4), razn por la cual estas rutinas se conocen tambin como

La citada tabla se denomina tabla de vectores de interrupcin IDT ("Interrupt Description Table") y en sus 1024 bytes pueden almacenarse 256 vectores de 4 bytes. Es decir, los vectores de interrupcin son punteros de 32 bits, numerados de 0 a 255, que sealan las direcciones donde comienza la rutina que atiende la interrupcin [3]. Como veremos a continuacin, el diseo del PC solo permite 16 interrupciones distintas, por lo que puede parecer extrao que se hayan previsto 256 vectores para atenderlas. La razn es que adems de los servicios del BIOS propiamente dichos, se cargan las direcciones de inicio de otras rutinas del Sistema Operativo, los denominados servicios del Sistema ( Servicios del Sistema). Incluso es posible cargar direcciones para rutinas especficas de usuario. Al disear el 8088, Intel estableci un reparto de estos vectores, reservando los 5 primeros para uso interno del procesador (precisamente para atender las excepciones ). A continuacin estableci otros 27 de uso reservado, aunque no desvel ningn uso especfico para algunos de

ellos. A partir de aqu, los vectores 32 a 255 estaban disponibles. El esquema resultante se muestra en la tabla adjunta. Vector Hex Uso 0 Error: Divisin por cero Excepciones para depuracin (ejecucin paso a 1 1 paso) 2 2 Interrupcin no enmascarable 3 3 Punto de ruptura interrupcin (Instruccin INT) 4 4 Desbordamiento ("Overflow"). Utilizado cuando un clculo aritmtico se desborda. Instruccin INTO 5 5 (reservado) 6 6 Cdigo de instruccin no vlido 7 7 Coprocesador no disponible 8 8 Fallo doble 9 9 (reservado -Rutina de atencin del Teclado-) 10 A TSS no vlido 11 B Segmento no disponible 12 C Excepcin de pila 13 D Proteccin general 14 E Fallo de pgina 15 F (reservado) 16 1A Error de coprocesador 17-31 1B-1F (reservado) 32-255 20-FF Disponibles para interrupciones enmascarables Dec. 0 Sin embargo, aunque tericamente las interrupciones 0 a 31 estaban restringidas, IBM y Microsoft utilizaron algunas de ellas sin respetar las indicaciones de Intel. En concreto, IBM y Microsoft utilizaron algunas para los servicios BIOS ( H2.4.1). Es significativo que, a pesar de haber sufrido ampliaciones, la especificacin inicial se mantiene para las 31 interrupciones iniciales. Lo que hace posible que pueda cargarse un Sistema PC-DOS 1.0 en una mquina Pentium. El "modus operandi" es como sigue: Cuando se recibe la peticin de interrupcin, el procesador termina la instruccin que est ejecutando; guarda el contenido de los registros; deshabilita el sistema de interrupciones; ejecuta el "servicio", y vuelve a su punto de ejecucin. El servicio suele terminar con una instruccin IRET ("Interrupt Return") que restituye el contenido de los registros y vuelve a habilitar el sistema de interrupciones. En cierto sentido, el proceso es similar al que ocurre cuando aparece la invocacin de una funcin en el cdigo de un programa ( 4.4.6b). En el prrafo anterior hemos indicado someramente el proceso cuando "se recibe" una peticin, pero cabe una cuestin: Como se recibe la peticin?. Hemos adelantado que estas peticiones pueden ser generadas desde el software o incluso por el procesador, lo que nos conduce a que en realidad las nicas que deben recibirse (desde el exterior) son las que denominadas interrupciones hardware (que se originan en dispositivos externos al procesador). Antes de describir brevemente el camino hasta que la solicitud es recibida por la UCP, permitidme adelantar que para su gestin existen tres tipos de elementos de soporte: Ciertas lneas especficas (IRQ's) en el bus de control

El controlador de interrupciones (PIC). Un procesador especfico que realiza cierta elaboracin previa de las peticiones antes de entregar la seal a la UCP Ciertas patillas especficas en el procesador . .

El resumen del proceso es como sigue: Un perifrico, tarjeta o dispositivo necesita atencin; a tal efecto pone en tensin baja una de las lneas IRQ del bus de control (que le haba sido asignada). La seal es recogida por el PIC, que la procesa, la clasifica, y enva una seal a una de las patillas del procesador. A continuacin el procesador se da por notificado y pregunta que tipo de excepcin debe atender. Como respuesta, PIC asigna un nmero de servicio (0-256) en forma de un octeto que es colocado en el bus de datos, con lo que estamos en el punto inicial del proceso. Para la asignacin del nmero de servicio a partir de una de las 16 solicitudes de las IRQ, el PIC realiza un cierto proceso ("Interrupt Handling Routine") a partir de los datos de programacin iniciales y del estado actual del propio sistema de interrupciones. Por ejemplo, puede estar procesndose el servicio de una interrupcin, pero la rutina esta suspendida momentneamente porque se ha solicitado otra interrupcin de prioridad ms alta, o tal vez se recibe otra interrupcin del mismo perifrico antes de haber atendido la anterior, Etc.

3 Lneas de peticin de interrupcin El bus de control dispone de lneas especficas para el sistema de interrupciones ( H2). En el PC XT existen 8, numeradas del 0 al 7, aunque las dos primeras estn asignadas al temporizador y al teclado, con lo que solo quedaban 6 lneas para otros dispositivos, que aparecen como tales en el bus de control (IRQ2- IRQ7). A partir del modelo AT se aadieron otras 8 lneas, numeradas del 8 al 15, mediante un segundo procesador PIC , aunque la tecnologa empleada exigi colgarlo de la lnea IRQ2, de forma que esta lnea se dedica a atender las interrupciones del segundo controlador a travs de la lnea 9 de este ltimo, y la lnea 8 se dedic al reloj de tiempo real, un dispositivo que no exista en los modelos XT. Aunque internamente se manejan 16 lneas, no todas tienen contacto en los zcalos del bus externo; Son las marcadas con asterisco (*) en la tabla que sigue . La razn de esta ausencia en los zcalos de conexin es que son de asignacin fija, y nadie ms que ciertos dispositivos instalado en la propia placa tiene que utilizarlas. En concreto la lnea NMI est asignada al mecanismo de control de paridad de la memoria; la lnea 0 est asignada al cronmetro del sistema ( H2) y la lnea 1 al chip que controla el teclado (dispositivos que pueden requerir atencin urgente por parte del procesador). Es costumbre denominar IRQx a las que tienen prolongacin en el bus. Tericamente las restantes lneas podran ser asignadas a cualquier nuevo dispositivo, pero en la prctica algunas estn reservadas a dispositivos estndar. Por ejemplo, IRQ3 est casi siempre asignado al puerto serie COM2 y IRQ4 a COM1; IRQ6 al controlador estndar de disquetes y IRQ7 al puerto de impresora LPT1. La tabla 1 muestra las asignaciones clsicas para el XT y el AT.

Tabla-1 Nombre NMI Int (hex) XT: Descripcin --Paridad* AT: Descripcin Paridad*

0 1 IRQ2 IRQ3 IRQ4 IRQ5 IRQ6 IRQ7 8 9 IRQ10 IRQ11 IRQ12 13 IRQ14 IRQ15

08 09 0A 0B 0C 0D 0E 0F 70 71 72 73 74 75 76 77

Temporizador* Teclado* Reservado Puertos serie COM2/COM4 Puertos serie COM1/COM3 Disco duro Disquete Impresora primaria LPT1 No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable No aplicable

Temporizador* Teclado* Interrupciones 8 a 15 (PIC#2) Puerto serie COM2/COM4 Puerto serie COM1/COM3 Impresora secundaria LPT2 Disquete Impresora primaria LPT1 [8] Reloj de tiempo real* Redirigido a IRQ2* no asignado no asignado Ratn PS2 Coprocesador 80287* Contr. disco IDE primario Contr. disco IDE secundario

Cuando se instala un dispositivo E/S que puede necesitar atencin del procesador, debe asignrsele una IRQ adecuada. Dicho en otras palabras, cuando requiera atencin debe enviar una seal en la lnea IRQ especificada. Inicialmente esta asignacin se efectuaba de forma manual, por medio de puentes ("Jumpers") en la placa o dispositivo, pero actualmente esta seleccin puede hacerse por software. Los dispositivos son de enchufar y usar PnP ("Plug and play" ).

3.1 A continuacin se nuestra la distribucin de lneas IRQ en un ordenador tpico (AT), bajo Windows-98SE [7]. Nota: Los usuarios de Windows 98 pueden comprobar la asignacin de IRQ's a los diversos dispositivos del sistema mediante el programa msinfo032.exe. Generalmente en C:\Archivos de programa\Archivos comunes\Microsoft Shared\MSINFO IRQ 0 1 2 3 4 5 6 7 8 9 10 11 11 11 11 11 11 11 11 11 Utilizacin Cronmetro del sistema Teclado estndar de 101/102 teclas o MS Natural Keyboard Controlador programable de interrupciones Puerto de infrarrojos rpidos ThinkPad de IBM Puerto de comunicaciones (COM1) Crystal SoundFusion(tm) Game Device Controlador estndar de disquetes Puerto de impresora (LPT1) Sistema CMOS/reloj en tiempo real (libre) (libre) Marcador IRQ para manejo de PCI Marcador IRQ para manejo de PCI Marcador IRQ para manejo de PCI Marcador IRQ para manejo de PCI Controlador universal de host Intel 82371AB/EB PCI a USB Crystal SoundFusion(tm) PCI Audio Accelerator Lucent Win Modem Intel(R) PRO/100 SP Mobile Combo Adapter Texas Instruments PCI-1450 CardBus Controller

11 11 12 13 14 15

Texas Instruments PCI-1450 CardBus Controller RAGE MOBILITY-M AGP (English) Puerto de mouse compatible con PS/2 Procesador de datos numricos Controlador estndar para disco duro Bus Mastering IDE Controlador estndar para disco duro Bus Mastering IDE

3.2 Interrupciones en el ordenador anterior bajo Linux: Nota: Los usuarios de Linux pueden consultar las interrupciones utilizadas en el sistema en el fichero /proc/interrupts mediante el comando cat /proc/interrupts. Tambin mediante la utilidad dmesg en la forma dmesg | grep -i irq IRQ Utilizacin CPU0 0: 3407670 XT-PIC timer 1: 7149 XT-PIC keyboard 2: 0 XT-PIC cascade 8: 2 XT-PIC rtc 9: 1461 XT-PIC acpi 11: 2508 XT-PIC usb-uhci, Texas Instruments PCI1450, Texas Instruments PCI1450 (#2), CS46XX 12: 74331 XT-PIC PS/2 Mouse 14: 90666 XT-PIC ide0 15: 50966 XT-PIC ide1 NMI: LOC: ERR: MIS: 0 0 0 0

4 Controlador PIC Las peticiones hardware de interrupcin del PC son manejadas por un chip, conocido como PIC#1 ("Programmable Interrupt Controller"). Originariamente era un 8259A, que puede manejar 8 peticiones (IRQ0/IRQ7), pero pronto se hizo evidente que eran un nmero excesivamente corto, por lo que en 1984 IBM aadi un segundo controlador PIC#2 en el modelo AT, que poda manejar las peticiones IRQ8 a IRQ15, aunque las interrupciones utilizables resultantes no fuesen de 16 como cabra suponer, por las razones apuntadas en el prrafo anterior.

4.1 Nivel de prioridad El PIC dispone de 16 niveles de prioridad, numerados del 0 al 15, de forma que los de nmero ms bajo se atienden antes que los de nmero ms alto. La asignacin a cada nivel es como sigue: Nivel 0 4 Asign. NMI IRQ9 Nivel 1 5 Asign. Nivel Asign. Nivel Asign. IRQ0 IRQ10 2 6 IRQ1 IRQ11 3 7 IRQ8 IRQ12

8 12

IRQ13 IRQ4

9 13

IRQ14 IRQ5

10 14

IRQ15 IRQ6

11 15

IRQ3 IRQ7

Como puede verse, la prioridad ms alta se asigna a las interrupciones no enmascarables (NMI ), a las que nos referimos ms adelante. A continuacin se atienden IRQ0 e IRQ1; asignadas como hemos visto al cronmetro del sistema y al teclado (el cronmetro no puede ser interrumpido por nadie porque perdera la hora). Despus se atienden las peticiones IRQ8 a IRQ15 del controlador esclavo, que hereda la prioridad de IRQ2 de la que est colgado (en realidad no existe IRQ2). A continuacin se atienden las IRQ3 a IRQ7 de PIC#1. Las peticiones de prioridad ms baja son las del controlador estndar de disquetes (IRQ6) y las del puerto de impresora LPT1 (IRQ7). Fsicamente, el 8259A es un chip de 28 patillas, 8 de las cuales conectan con las lneas IRQ0IRQ7; ocho para el bus de datos (D0-D7), una entrada INTA ("Interrupt Acknowledge") y una salida INTR ("Interrupt Request"). Aparte de otras auxiliares, como tensin de alimentacin y masa. Como veremos a continuacin , cuando el 8259A recibe una seal IRQ, activa la seal INTR que es recibida por el procesador. Cuando este responde con un INTA, pone en el bus de datos un byte en el rango 0/256, que es identificado a su vez por el procesador como un nmero de interrupcin. Desde el punto de vista lgico, PIC #1 responde a las direcciones 020h-021h, mientras que PIC#2 lo hace en 0A0h-0A1h. Cada PIC dispone de tres registros de 1 byte; IRR, ISR e IMR, que en conjunto gobiernan las decisiones del dispositivo: Registro de solicitud de interrupcin IRR ("Interrupt Request Register"). Cada bit de este registro controla el estado de una lnea IRQ. Cuando se detecta una peticin en una de estas lneas, el bit correspondiente del IRR es pueto a 1. Registro de interrupciones activas ISR ("In Service Register"). Cada bit indica si ya existe una interrupcin activada en la lnea correspondiente. Registro de mscara de interrupciones IMR ("Interrupt Mask Register"). Tambin aqu cada bit corresponde a una lnea IRQ, e indica si esta permitida un interrupcin de ese nivel en ese momento. El PIC es un dispositivo complejo que realiza varias tareas; a continuacin se muestra un resumen de ellas: Puesto que existen muchos dispositivos que pueden solicitar interrupciones, es responsabilidad del PIC priorizarlas segn el esquema indicado en el punto anterior, cuando existen varias IRQ's simultneas [5]. Despus de enviar una solicitud de interrupcin y el procesador contesta que est listo para atenderla, debe enviar un nmero de interrupcin (nmero de vector). Mantiene un registro de que se est procesando una interrupcin. Cuando esto sucede, no enva ms peticiones del mismo dispositivo al procesador hasta que este le responde con una seal EOI ("End Of Interrupt"), indicando que la rutina de servicio precedente ha terminado, o puede aceptar otra interrupcin. Puede enmascarar de forma selectiva cualquiera de las 8 IRQ's que tiene conectadas (como se ver ms adelante, es la nica forma de enmascarar las interrupciones no enmascarables).

El 8259A tiene distintos modos de operacin, uno de los cuales es el utilizado por los diseadores del PC; esta seleccin se realiza va software en los momentos iniciales. Tambin se decide en este momento que nmero de interrupcin deber devolver el PIC en respuesta a las seales recibidas en las lneas IRQ. Puntos importantes a destacar es que, como se ha sealado, se trata de un dispositivo programable; que esta programacin es realizada por el BIOS en la fase de inicio, y que el PIC es una parte fundamental del mecanismo de excepciones hardware.

5 Patillas del procesador Otro elemento que interviene en el mecanismo de excepciones son ciertas patillas del procesador. Todos los miembros de la saga 8088 disponen de dos patillas, designadas INTR y NMI, para este servicio especfico ( H3.2.1). Sirven respectivamente para atender las interrupciones enmascarables y no enmascarables (nos referimos a ellas inmediatamente). A su vez, el procesador utiliza ciertas seales en algunas de sus patillas para generar un ciclo INTA ("Interrupt Acknowledge"), que sirve para notificar al PIC que ha recibido la interrupcin.

6 Tipos de interrupcin Atendiendo a su origen, en el PC existen tres tipos de interrupciones: Interrupciones hardware; interrupciones software , y excepciones del procesador .

6.1 Las interrupciones hardware ocurren cuando un dispositivo necesita atencin del procesador y genera una seal elctrica en la lnea IRQ que tiene asignada. Esta seal es recogida y procesada por el controlador de excepciones PIC antes de ser enviada al procesador, lo que puede realizarse de dos formas, segn el tipo de interrupcin sea enmascarable o no enmascarable. 6.1.1 Interrupcin enmascarable significa que, bajo control del software, el procesador puede aceptar o ignorar (enmascarar) la seal de interrupcin. Para ello se enva una seal a la patilla INTR , y el procesador la atiende o la ignora en funcin del contenido de un bit (IF) en un registro (FLAGS) que puede estar habilitado o deshabilitado ( H3.2). En el primer caso, cuando se recibe la seal, el procesador concluye la instruccin que estuviese en proceso y a continuacin responde con una combinacin de seales en algunas de sus patillas componiendo una sucesin de dos seales INTA ("Interrupt Acknowledge" H3.2.1).

La primera seal es simplemente un aviso; la segunda es una peticin para que el PIC coloque en el bus de datos un Byte con el nmero de interrupcin, de forma que el procesador pueda localizar el servicio solicitado. El valor recibido (0-255) es multiplicado por 4 para calcular la direccin del vector correspondiente en la tabla de vectores de interrupcin, lo que se realiza mediante un desplazamiento binario de dos posiciones a la izquierda ( 4.9.3). A continuacin, el procesador salva en la pila los valores del registro de estado ( H3.2), del contador de programa (PC) y del segmento de cdigo (CS); deshabilita el bit IF del registro de estado, para que la interrupcin no pueda ser molestada con una nueva interrupcin enmascarable hasta que sea especficamente permitido, y finalmente ejecuta el servicio.

La penltima secuencia de la rutina de servicio es enviar una seal de que la interrupcin ha terminado (EOI) para que el PIC pueda seguir enviando interrupciones. A continuacin debe restaurar los registros a su estado inicial (existente antes de que se produjera la interrupcin). La seal de terminacin del servicio de la interrupcin EOI ("End of interrupt") es la siguiente secuencia: MOV DX, PIC0 MOV AL, EOI OUT DX, AL La primera instruccin mueve el contenido PIC0 al registro DX (PIC0 es el nemnico de la direccin ms baja de puerto A0 = 0). La segunda mueve el valor EOI (nemnico del valor 20h) al registro AL. La tercera es una sentencia de escritura a puerto; escribe el contenido del registro AL (el valor EOI puesto en la sentencia anterior) en el puerto sealado por el contenido del registro DX (establecido en la primera instruccin). Para facilitar el manejo de interrupciones, el 8088 y sucesores disponen de algunas instrucciones especficas: IRET Retorno de interrupcin ("Interrupt Return"). Recupera de la pila el contador de programa PC; el segmento de cdigo CS (lo que supone devolver el programa al punto de ejecucin original), y el registro de estado FLAGS (lo que supone devolver las interrupciones enmascarables al estado inicial). CLI Limpiar la interrupcin ("Clear Interrupt"); pone a cero el registro IF, deshabilitando las interrupciones enmascarables. STI Es la instruccin opuesta ("Set Interrupt") pone a 1 el registro IF habilitando las interrupciones enmascarables.

La idea importante a resaltar aqu, es que el PIC asocia un nmero entre 0 y 255 a cada peticin. Este nmero, que se conoce como nmero de interrupcin, no debe ser confundido con el nmero de lnea IRQ's que realiz la solicitud. El nmero de interrupcin sirve para identificar el servicio mediante la tabla IDT . Una vez ejecutado el servicio, deben dejarse las cosas como estaban para que el programa original pueda continuar su ejecucin. 6.1.2 Interrupcin no enmascarable significa que la interrupcin no puede ser deshabilitada por software. Este tipo de interrupciones ocurren cuando se recibe una seal en la patilla NMI ("Nonmaskable Interrupt" 5 ) del procesador. Se reservan para casos en que es crtica la respuesta, por ejemplo que se detecte un error de paridad en la memoria. Adems son de prioridad ms alta que las enmascarables. Nota: La nica forma de enmascarar estas interrupciones es a travs de circuitos externos al procesador, por ejemplo a nivel del PIC. Cuando el procesador recibe una de estas instrucciones no se genera ningn ciclo de reconocimiento de la instruccin (INTA), y el procesador le asigna un 2 como nmero de excepcin.

6.2 Interrupciones software Los procesadores Intel de la gama x86 y compatibles, disponen de una instruccin INT que permite generar por software cualquiera de los 256 tipos de interrupcin anteriormente descritos (2 ). El proceso seguido es exactamente el mismo que si se recibe una interrupcin hardware en la patilla INTR, salvo que en este caso se conoce el tipo de interrupcin, y no se requiere ningn ciclo INTA. Por ejemplo, en lenguaje ensamblador, la instruccin INT 21 invoca la interrupcin 33d (21h), que en MS-DOS es la llamada a los servicios del Sistema. Este tipo de interrupciones son de prioridad ms alta que las de hardware (enmascarables y no enmascarables), de forma que si se recibe una interrupcin hardware mientras que se ejecuta una software, esta ltima tiene prioridad. Este tipo de interrupciones son utilizadas tanto por el Sistema Operativo como por los programas de usuario que pueden instalar las suyas particulares (hemos sealado , que algunas de las 255 posiciones de la tabla de vectores de interrupcin estn desocupadas). Precisamente, aquellas posiciones de la IDT que sealan a posiciones dentro de la ROM-BIOS (por encima de la direccin F0000h H5.1) se refieren a interrupciones relacionadas con servicios de la BIOS, mientras que las situadas en la zona de memoria convencional, se refieren a interrupciones instaladas por el Sistema o los programas de aplicacin.

6.3 Excepciones del procesador Durante el funcionamiento del procesador pueden ocurrir circunstancias excepcionales; es usual citar como ejemplo el caso de una divisin por cero. En estos casos, el procesador genera una excepcin, que es tratada como si fuese una interrupcin software (6.2 ), con la diferencia de que el nmero de interrupcin asociado depende del tipo de excepcin. En el caso de la divisin por cero el nmero asociado es cero. Este era el nico tipo de excepcin de procesador prevista en el 8088, pero en los modelos sucesivos de la saga x86 y Pentium esta posibilidad fue amplindose paulatinamente.

6.5 Orden de prioridad Las interrupciones tienen un orden de prioridad, de forma que si ocurren dos de forma simultnea es atendida la de prioridad ms alta. El orden en que se atienden es el siguiente: 1: Excepciones del procesador. 2: Interrupciones software. 3: Interrupciones hardware no enmascarables. 4: Interrupciones hardware enmascarables.

7 Evolucin 7.1 El estndar PnP

El sistema de interrupciones es una excepcin en lo que a evolucin se refiere. A partir de la introduccin del segundo controlador 8259A en 1.984, el diseo ha permanecido invariable. La razn es que su modificacin supondra un cambio demasiado drstico en la arquitectura del PC, con un parque de millones de sistemas y perifricos instalados con millones de programas y Sistemas Operativos funcionando que no podran ser trasladados "tal cual" a las nuevas mquinas [6]. Puede decirse que desde su nacimiento, el PC arrastraba ciertas carencias congnitas, que podan resumirse en escasez de Lneas de acceso directo a memoria DMA's ( H2.3); lneas de interrupciones IRQ's; direcciones de puertos, y memoria convencional ( H5.1). El resultado era que la configuracin de los primeros sistemas era una pesadilla para los instaladores, que deban configurar manualmente los dispositivos instalados poniendo y quitando los fastidiosos "Jumpers" [1]. A pesar de todo, muchas veces el resultado era que sencillamente no poda instalarse el nuevo dispositivo porque los canales DMA o lneas IRQ que podan seleccionarse estaban ya ocupadas por otros. Como consecuencia de tales deficiencias, en una conferencia sobre hardware para Windows celebrada en marzo de 1.993, Microsoft e Intel propusieron un nuevo estndar que intentaba simplificar el problema. Conocido como Plug and Play (PnP), enchufar y usar (precisamente el "sueo" de los instaladores en la poca), que se basa en varias premisas. La principal, que los dispositivos fueran configurables por software mediante un programa especial de "Set-up". Adems tanto el hardware como el software (controladores de dispositivos cargados por el Sistema), deberan ser reconfigurables dinmicamente para adaptarse a los cambios de configuracin. Por ejemplo, insertar o retirar un dispositivo PC-Card de un bus PCMCIA [2].

7.2 Compartir IRQs La especificacin PnP antes comentada, aunque simplificaba las cosas, en realidad no resolva el problema de fondo: la escasez de ciertos recursos, principalmente lneas de interrupcin. Por lo que al desarrollar la interfaz PCI ( pudieran compartir la misma IRQ. 6.4), Intel incluy la posibilidad de que estos dispositivos

A continuacin se muestra la distribucin de IRQs en un sistema Linux dotado de bus PCI, tal como se obtiene con el comando dmesg sealado anteriormente sentencias interesantes) : . (se han resaltado las

PCI: Using IRQ router PIIX [8086/7110] at 00:02.0 PCI: Found IRQ 11 for device 00:03.0 PCI: Sharing IRQ 11 with 00:03.1 PCI: Sharing IRQ 11 with 01:00.0 Serial driver version 5.05c (2001-07-08) with HUB-6 MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI enabled PIIX4: not 100% native mode: will probe irqs later ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 ide1 at 0x170-0x177,0x376 on irq 15 PCI: Found IRQ 11 for device 00:02.2 usb-uhci.c: USB UHCI at I/O 0x1060, IRQ 11 PCI: Found IRQ 11 for device 00:03.0 PCI: Sharing IRQ 11 with 00:03.1 PCI: Sharing IRQ 11 with 01:00.0 PCI: Found IRQ 11 for device 00:03.1

PCI: Sharing IRQ 11 with 00:03.0 PCI: Sharing IRQ 11 with 01:00.0 Yenta IRQ list 0698, PCI irq11 Yenta IRQ list 0698, PCI irq11 eth0: AboCom FE2000VX (RealTek RTL8139) at 0xd0afa000, 00:4f:62:01:5c:7a, IRQ 11 eth1: Xircom: port 0x300, irq 3, hwaddr 00:10:A4:01:FF:F1 ttyS03 at port 0x02e8 (irq = 3) is a 16550A PCI: Found IRQ 5 for device 00:07.0 Puede apreciarse que los dispositivos PCI comparten las IRQ11 e IRQ5. Como es habitual, las controladoras IDE primaria y secundaria, identificadas aqu como ide0 e ide1, utilizan IRQ14 e IRQ15. Los dispositivos identificados como eth0 y eth1 son sendas tarjetas de red. ttyS03 es un puerto serie cuya UART es una 16550A ( 2.5.11). Yenta se refiere al tipo de controladora de conexin de los dispositivos PCMCIA (se trata de un equipo porttil que dispone de este tipo de bahas).

8 Interrupciones en Windows La descripcin anterior corresponde a lo que ocurre en el hardware, o lo que es lo mismo, en una aplicacin trabajando en modo real ( H5.1); es la descripcin clsica del mecanismo de interrupciones de una aplicacin bajo MS-DOS. Hemos sealado que en los sistemas Windows, cada aplicacin corre en una mquina virtual MV ( 0.2), de modo que est ms alejada del hardware que las aplicaciones que se ejecutan en modo real. En este caso, las aplicaciones interactan con dispositivos virtuales VDs ("Virtual devices") a travs de controladores virtuales de dispositivos VxDs. En concreto, el controlador PIC es virtualizado por el VPICD ("Virtual PIC Device"); este es un controlador virtual proporcionado de forma estndar por Windows que emula las funciones del autntico controlador programable de interrupciones. Esta simulacin implica reflejar las interrupciones en las mquinas virtuales y simular E/S, por ejemplo, reconocer cuando una MV emite un final de interrupcin EOI ("End of interrupt"). Lo mismo que ocurre en modo real, durante la inicializacin del controlador virtual VPICD, se establece un manejador de excepciones por defecto para cada peticin de interrupcin (IRQ). Estos manejadores determinan que mquina virtual ser afectada y con que interrupcin. Tambin arbitran los posibles conflictos cuando diversas mquinas virtuales intentan desenmascarar la misma interrupcin. Cualquier interrupcin no enmascarada cuando se inicia Windows es considerada una interrupcin global. Este tipo de interrupciones sern reflejadas en la mquina virtual que est en ejecucin en ese momento (a su vez la MV puede enmascarar o no enmascarar esta IRQ). Si una MV desenmascara una IRQ que fue enmascarada cuando se inici Windows, es declarada propietaria de dicha interrupcin, y la IRQ ser reflejada exclusivamente en su mquina propietaria (si alguna otra MV intenta desenmascarar dicha interrupcin, Windows terminar la segunda MV, y puede sealar la necesidad de reiniciar el sistema).

Si algn otro VxD virtualiza una peticin IRQ, es su responsabilidad determinar que MV debe recibir las interrupciones y arbitrar los posibles conflictos. Adems, el controlador por virtual por defecto VPICD dejar de proporcionar soporte para dicha IRQ.

9 Webografa The x86 interrupt list ftp.cs.cmu.edu/

Conocida tambin como RBIL ("Ralf Brown's Interrupt List"), esta pgina de la universidad Carnegie Mellon en Pittsburg (Pensilvania - USA), es quizs la ms famosa y extensa fuente de informacin respecto al asunto de las interrupciones; puertos Entrada/Salida; posiciones de memoria y otros detalles tcnicos de diseo de los PCs IBM y compatibles. Casi seis Megabytes de informacin que incluyen algunos programas de utilidad. Inicio. [1] Un estudio de 1.993 sobre el costo total a 5 aos para las empresas que utilizaban sistemas PC-Windows, revelaba que este se elevaba a 37.000 USD, debidos principalmente a su complejidad. [2] PCMCIA "Personal Computer Memory Card International Association". Un estndar para conexin de dispositivos en el PC, especialmente difundido en los porttiles, aunque tambin existen adaptadores para los buses ISA y PCI de los equipos de sobremesa. [3] Estas direcciones se guardan en forma segmentada ( H5.1) y la forma real de

almacenamiento es de palabras invertidas ("Back-words" H5), de forma que los dos bytes ms bajos contienen el desplazamiento, y los dos ms altos el segmento. Esto supone que al recuperarlos para ejecutar la interrupcin, los dos bytes ms bajos pasan al registro de instruccin IP, y los dos siguientes al registro de segmento de cdigo CS ( H3.2).

[4] El sistema opuesto al de interrupciones requiere que el procesador interrogue peridicamente a los dispositivos, lo que evidentemente requiere mucho tiempo si el nmero de candidatos potenciales es elevado. Este sistema se denomina de encuesta o interrogacin ("Polling"); tambin como entrada programada, ya que la informacin llega del exterior cuando se ha decidido aceptarla. [5] El PIC puede incluso rotar las prioridades de forma que las de prioridad ms baja tengan alguna posibilidad de ser atendidas incluso si hay muchas de prioridades ms altas. La rotacin de prioridad se ha comparado a dar la posibilidad de conectar a un telfono que estuviese siempre comunicando. [6] De acuerdo con ciertos autores, una de las razones del tremendo xito de la plataforma PC, ha sido precisamente la estabilidad de su arquitectura, que ha posibilitado ejecutar programas desarrollados hace 25 aos en las mquinas actuales. [7] Se trata de un equipo dotado de bus PCI ( 6.4) donde puede apreciarse como algunas IRQs son compartidas por varios dispositivos. Esta capacidad de compartir una IRQ entre distintos dispositivos (a la que nos referimos ms adelante), es una caracterstica del bus PCI, que no es compartida por el bus tradicional ISA.

[8] Cuando est en modo ECP (

2.5.2)

You might also like