Professional Documents
Culture Documents
Sistemas de Multiprocesamiento
Bus PCI
Realizado por: Beln Martn Muoz Melisa Nez Platero 5 Automtica y Electrnica
Sistemas de Multiprocesamiento
Bus PCI
INDICE
1. INTRODUCCIN AL PC Y A SUS BUSES 1.1 Recursos de un PC
1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 Memoria Puertos Entrada / Salida Interrupciones Canales de DMA Escenario
2. CONCEPTOS Y CARACTERSTICAS DE LOS BUSES 2. 1 Estructura de un bus 2. 2 Jerarqua de buses 3. CARACTERSTICAS DEL BUS PCI
Sistemas de Multiprocesamiento
Bus PCI
4. DESCRIPCIN FUNCIONAL DEL BUS LOCAL PCI 4. 1 4. 2 4. 3 4. 4 4. 5 Seales del sistema Seales de control de transacciones Protocolo de transacciones Espacio de configuracin del interfaz Direccionamiento
4. 5. 1 Configuracin 4. 5. 2 Entrada/Salida y memoria
4. 6 Control de paridad
5. DISEO DE INTERFACES PARA BUS PCI 5. 1 Requerimientos para el diseo de interfaces PCI 5. 2 Soluciones comerciales
5. 2. 1 5. 2. 2 5. 2. 3 5. 2. 4 ASICs PCI Dispositivos programables FPGA Libreras de macroceldas para ASICs Modelados de alto nivel, LogiCores
5. 3 Otras alternativas
Sistemas de Multiprocesamiento
Bus PCI
Los PCs han ido variando su arquitectura con los aos a fin de conseguir ms potencia y velocidad. Este pequeo porttil incorpora ms tecnologa que la empleada en las primeras misiones espaciales.
1. 1 RECURSOS DE UN PC
Antes de comenzar el estudio de los buses del PC, y en concreto el bus PCI, vamos a dar unas definiciones bsicas, para la comprensin del entorno en el cual trabajan estos buses. Los principales recursos de un PC son: memoria, puertos de entrada/salida, interrupciones y canales de DMA.
Sistemas de Multiprocesamiento
Bus PCI
1.1.1 MEMORIA
Remontndonos al principio de los tiempos, a los microprocesadores 8088 y 8086, se les poda hacer funcionar en modo mnimo o mximo, segn estuviera cableada una de sus patillas. En cuanto, principalmente al uso de la memoria, los procesadores del 80286 en adelante funcionan en modo Real o Protegido. En modo Real el acceso a memoria fsica est limitado al primer megabyte, y a los primeros 64K-16 bytes del segundo megabyte. El procesador arranca en modo Real, y pasa a protegido ejecutando determinadas instrucciones. El MSDOS se dise para uso del primer megabyte, y distingue los primeros 640 K bytes (memoria convencional) del resto del primer megabyte. Con el transcurso de los aos se vio que esto era insuficiente. En ese resto tenemos el espacio de memoria de video (ram y rom), rom de diversos perifricos, rom bios, etc La memoria fsica por encima del primer megabyte se llama extendida. Hay que tener en cuenta que en el bus ISA de 16 bits slo hay acceso a los primeros 16 MB de memoria direccionable, ya que slo contiene los bits de direccin A0-A23. En resumen, se distingue: ? Primer megabyte, donde a su vez se distinguen: ? Memoria convencional: 640K iniciales. ? Resto de 384K ? Memoria extendida, cuyos primeros 64K-16 bytes conocidos como Memoria Alta (HMA) son accesibles en modo Real del 80286 en adelante.
Algunos puertos tienen nombres simblicos asignadas en el sistema operativo, como: ? ? Comunicaciones: COM1 (3F8H-3FFH), COM2 (2F8H-2FFH), COM3 (3E8H-3EFH) y COM4(2E8H-2EH). Impresoras: LPT1 (3BCH-3BFH), LPT2 (378H-37FH) y LPT3 (278H27FH)
Sistemas de Multiprocesamiento
Bus PCI
No obstante, puede ser que LPT1, por ejemplo, para el sistema operativo sea el primer puerto encontrado buscando segn orden anterior. Es importante conocer la ubicacin de otros puertos: Puerto de juegos: 200H-207H Puertos IDE: IDE primario: 1F0H-1F7H y 3F6H-3F7H. Usa IRQ14 IDE secundario: 170H-177H y 376H-377H. Usa IRQ15 IDE terciario: 1E8H-1EFH y 3EEH-3EFH. Suele usar IRQ11. IDE cuaternario: 168H-16FH y 36EH-36FH. Suele usar IRQ10.
1. 1. 3 INTERRUPCIONES
Desgraciadamente IBM, hacia 1981, hizo un diseo deficiente y pobre del sistema de interrupciones hardware del PC, que no se mejor mucho cuando apareci el AT, y que por compatibilidad se ha mantenido. Las interrupciones de sistema (fijas) son: ? IRQ0: reloj del sistema ? IRQ1: teclado ? IRQ2: cascada para IRQ8-15 ? IRQ6: disquetera ? IRQ8: reloj cmos ? IRQ13: coprocesador Las interrupciones casi fijas (pueden reasignarse) son: ? IRQ3: COM2 ? IRQ4: COM1 ? IRQ12: ratn PS/2 ? IRQ14: IDE primario ? IRQ15: IDE secundario El resto suele tener una asignacin tradicional: ? IRQ7: impresora si el software de impresin utiliza interrupciones, lo que suele ser configurable ? IRQ9: tarjeta grfica, si sta utiliza interrupciones ? IRQ10: tarjeta de sonido o de red ? IRQ11: tarjeta SCSI Supongamos un PC con tarjeta grfica que utiliza interrupciones, tarjeta de sonido, tarjeta de red, tarjeta SCSI, mdem interno, dos discos duros IDE, CDROM IDE, ratn PS/2, y queremos utilizar COM1 y COM2 simultneamente con el mdem interno.
Sistemas de Multiprocesamiento
Bus PCI
La asignacin debe ser: ? ? ? ? ? ? ? ? ? ? IRQ3: COM2 IRQ4: COM1 IRQ5: mdem interno, configurado en COM3. IRQ7: tarjeta de sonido. El software de impresin no debe utilizar interrupciones (o bien cuando imprimamos no pondremos en marcha la tarjeta de sonido, y a la inversa). IRQ9: tarjeta grfica IRQ10: tarjeta de red IRQ11: tarjeta SCSI IRQ12: ratn PS/2 IRQ14: IDE primario, donde se instalarn ambos discos duros IRQ15: IDE secundario, donde se instalar el CDROM
En el bus ISA las interrupciones podran compartirse si no se utilizan simultneamente, aunque para asegurar esto debera disponerse del esquema elctrico de las fuentes de interrupcin. En el bus PCI las interrupciones pueden compartirse, pero los sistemas operativos no soportan esta comparticin. Sobre 1999 las placas base ya no deberan incluir bus ISA.
1. 1. 4 CANALES DE DMA
Son: ? ? ? ? ? ? ? ? DMA0: libre (en primeros PCs se utilizaba para refresco de la memoria dinmica) DMA1: libre DMA2: disquetera DMA3: libre DMA4: cascada para DMA5-7 DMA5: libre, transferencias de 16 bits con DMA4 DMA6: libre, transferencias de 16 bits con DMA4 DMA7: libre, transferencias de 16 bits con DMA4
A veces nos podemos encontrar que tarjetas de sonido se estn utilizando en puertos de impresora ECP o en dispositivos especiales.
Sistemas de Multiprocesamiento
Bus PCI
1. 1. 5 ESCENARIO
Normalmente, las dificultades en el uso de los recursos aqu mencionados provienen del pobre diseo de las interrupciones en el primer PC. De la misma forma, los perifricos para el bus ISA se disearon de modo que no se podan compartir las interrupciones, por lo que los sistemas operativos tampoco previeron que se compartieran. El bus PCI s permite compartir interrupciones, por lo que sistemas operativos nuevos como Linux, NT y Windows 98 ya prevn la comparticin. No obstante, interrupciones en: ? ? ? ? en un PC moderno, y como se ha explicado, podemos localizar Bus ISA: no compartibles, pero este bus tiende a desaparecer Internas en la placa base. Bus PCI: pueden compartirse Bus AGP: este es un bus nuevo, exclusivamente para placas grficas
Luego, puede ser posible, por ejemplo, una tarjeta SCSI PCI y una tarjeta de red PCI ambas en IRQ11, pero sobre si la comparticin de interrupciones puede mezclarse de entre las cuatro partes antes dichas (por ejemplo, una tarjeta de red ISA y una tarjeta SCSI PCI ambas sobre IRQ11), aunque elctricamente debera ser fcil, no parece que los fabricantes de placas base lo hayan realizado, y no parece haber documentacin al respecto.
Sistemas de Multiprocesamiento
Bus PCI
Al hablar de BUS nos referimos a lo que podramos denominar el camino interno por donde circulan los datos dentro de un PC.
Dependiendo del tipo de Bus conseguiremos mejores o peores prestaciones del ordenador que utilicemos. Dentro de un PC -o de cualquier otro tipo de ordenador- se utilizan tpicamente tres tipos de Buses: ? ? ? En la prctica existentes: ? ? ? ? ? ? Bus de DATOS Bus de CONTROL Bus de DIRECCIONES podemos encontrar los siguiente estndares dentro de los tipos de Buses Bus ISA Bus EISA Bus VESA Local Bus MCA Bus PCI Bus AGP
10
Sistemas de Multiprocesamiento
Bus PCI
Existen en el Mercado toda una serie de adaptadores para compatibilizar conexiones del ordenador. Vemos aqu diferentes adaptadores
Todos los buses de los cuales hablaremos a continuacin se llaman buses de expansin, y se pueden definir como el conjunto de lneas encargadas de conectar el bus del sistema con otros buses de dispositivos externos a la placa principal, como una tarjeta controladora de discos, una controladora de videos, un controlador de CD-ROM, un faxmodem, una tarjeta multi I/O, etc... Buscando que la comunicacin de los datos entre los buses de dispositivos externos y el bus del sistema sea lo ms rpida posible, se han diseado varias arquitecturas o esquemas que combinan software (programas de manejo) y hardware (cantidad de lneas, conectores y circuitos electrnicos), entre las que se destacan el bus de expansin ISA, el EISA, el EDSI, el SCSI, el IDE, etc.... El bus de expansin usualmente dispone de 6 a 8 conectores de ranura o slots en los que se puede conectar, en cualquier orden, las tarjetas controladoras de dispositivos perifricos. Adems de tener acceso a las lneas principales del bus del sistema, los conectores del bus de expansin tambin tienen las lneas que conducen la potencia elctrica requerida por los dispositivos para funcionar. En apartados posteriores profundizaremos un poco ms en las caractersticas y en la estructura de los buses, as como en su jerarqua. En este momento daremos unas nociones bsicas de los diferentes tipos de buses de expansin que existen en el mercado.
11
Sistemas de Multiprocesamiento
Bus PCI
El Bus tipo ISA (Industry Standard Architecture) es el tipo de BUS con el que naci el ordenador tipo PC tal y como hoy lo conocemos.
Si echamos la vista atrs podemos ver que el Bus ISA naci a la sombra de los primeros chips 8088, los cuales utilizaban un bus de datos de tan slo 8 bits. En el ao 1984 la firma Intel introdujo en el mercado los procesadores de tipo 80286, lo que forz a ampliar la norma ISA a 16 bits. Para ello, simplemente se coloc a continuacin de algunas de las ranuras de expansin de 8 bits, otra ranura suplemento ms corta, la cual se encarga de manejar los 8 bits adicionales del bus de datos, adems de otras cosas. El bus ISA no ha sugerido ulteriores variaciones y existe en las placas base actuales. Puesto que el bus de datos puede manejar paralelamente datos hasta de 16 bits, muchos se refieren al bus de expansin como bus de 16 bits.
12
Sistemas de Multiprocesamiento
Bus PCI
13
Sistemas de Multiprocesamiento
Bus PCI
Dentro del ordenador el puerto paralelo se comunica con los buses de datos, control y direcciones.
14
Sistemas de Multiprocesamiento
Bus PCI
La adquisicin de datos a travs de los puertos del PC permite disponer de herramientas de trabajo muy potentes.
Los diseos del bus local VESA, permiten actualmente hasta tres ranuras de expansin, suficiente para alojar la tarjeta de video, la tarjeta controladora de disco y una tarjeta adaptadora de res. El nmero de ranuras se ha mantenido bajo debido a la limitacin impuesta por la capacitancia electrnica interna de los conectores y las altas frecuencias que deben manejar (hasta 66 MHz). Los problemas citados son: la fuerte dependencia del diseo VLB de la arquitectura 486 y su dificultad para ser readaptado a las familias Pentium, la poca viabilidad elctrica del sistema al ser capaz de soportar un nmero muy reducido de tarjetas VLB (incluso slo una en el peor de los casos) y, por ltimo, la no compatibilidad del VLB con las normas Bus mastering y Plug & Play. Incluso antes de la desaparicin masiva de los PCs tipo 486 del mercado la norma VLB haba sido y sustituida en algunas placas por la PCI.
15
Sistemas de Multiprocesamiento
Bus PCI
mejoras sobre el existente bus ISA. Este nuevo tipo de bus puede ser considerado como un adelantado a su poca al ofrecer all por el ao 1997 prestaciones que luego no veramos implementadas hasta bastantes aos despus. Entre stas podemos destacar: o Anchura de bus de 32 bits: el bus MCA incorpora un ancho de 32 bits mejorando prestaciones del bus ISA (tal y como luego haran las normas VLB y PCI). o Bus Mastering: la norma MCA ofrece bus mastering lo que mejora su eficacia. o Plug & Play: el bus MCA configuraba automticamente tarjetas sin necesidad de puentes especficos (esto ocurra 8 aos antes de que Microsoft incorporara la norma PnP en el mercado).
Podemos ver aqu una tabla que resume la asignacin de los buses que componen el puerto paralelo del PC.
El bus MCA ofreca grandes perspectivas pero IBM cometi dos grandes errores en su definicin: primero que la norma MCA no era compatible con la existente ISA (luego las tarjetas MCA solo trabajaban en ranuras Micro Canal), y segundo que no cedi sus patentes a los fabricantes de tarjetas y perifricos para PC. Estas dos razones, unidas al alto coste de los equipos con MCA, dieron al traste con esta norma.
1. 2. 5 EL BUS PCI
El estndar para Interconexin de Componente Perifrico es lo ms nuevo en la tecnologa de bus local. Aunque por medio del bus local VL-Bus o las ranuras exclusivas de expansin de bus local se puede manejar el video con alta velocidad y se logran mejoras en el rendimiento del disco duro, es con el bus PCI que se eleva de manera impresionante el lmite del rendimiento en el manejo de datos, especialmente en los sistemas Pentium.
16
Sistemas de Multiprocesamiento
Bus PCI
El bus PCI (the Peripheral Component Interconnect) fue desarrollado por la firma Intel en el ao 1993. Estaba enfocado a la quinta y sexta generacin de micros, pero algunos miembros de la familia 486 incorporaron ya esta norma. Al igual que el VLB, el bus PCI puede manejar perifricos de 32 y 64 bits. Tiene el potencial para llevar a la pantalla video lleno de color con alta resolucin y movimiento completamente uniforme (sin saltos) en ventanas mltiples, lo que lo hace ideal para aplicaciones de multimedia. Puede manejar grficos de color verdadero (True Color) de 24 bits a razn de 30 cuadros por segundo. Las tarjetas controladoras de perifricos diseadas para el bus local PCI tienen especificaciones de autoconfiguracin grabadas en una memoria incluida en la misma tarjeta, para proveer la informacin de instalacin necesaria para el sistema durante la fase de arranque. Las rutinas de la BIOS configuran automticamente cada dispositivo de PCI basndose en los recursos que ya estn en uso por otras tarjetas. Al menos tericamente, el usuario no tiene que ajustar interruptores o puentes para elegir niveles de IRQ, de DMA o direcciones de memoria cada vez que agregue un perifrico al sistema. Su principal ventaja con respecto al VLB estriba en su no dependencia del micro, tal como ocurra entre el bus VLB y los micros tipo 486. Adems la norma PCI se utiliza tambin en sistemas no PCs, lo que ha universalizado an ms, si cabe, su uso, reduciendo a la vez sus costes. Adems de estas ventajas el bus PCI (norma 2.1) est preparado (no an en sistemas PC) para manejar un ancho de 64 bits.
En esta ilustracin podemos ver un sencillo circuito de control para gobernar un conjunto de opto-acopladores y, con ellos, mediante el uso de triacs, controlar cualquier dispositivo ajeno al PC pero controlado por ste.
Ms adelante, profundizaremos ms en las caractersticas, seales, direccionamiento, configuracin, etc... del bus PCI.
17
Sistemas de Multiprocesamiento
Bus PCI
1. 2. 6 EL BUS AGP
El bus AGP (Accelerated Graphics Port) es un tipo especficamente diseado de bus local para operaciones de video. Nace de la necesidad de incrementar el ancho de banda disponible entre el microprocesador del sistema y los subsistemas de vide. Fue diseado por la firma Intel a finales de 1997 para combatir la saturacin existente en los buses existentes a la hora de transferir informacin de video. Su utilizacin comenz en los microprocesadores de tipo PentiumII. Las necesidades de los nuevos grficos con aceleracin 3D y reproduccin de video a pantalla completa forzaron el desarrollo de una tecnologa dedicada. En realidad el bus AGP puede ser considerado como un puerto y no como un bus ya que est ideado para la comunicacin entre dos nicos dispositivos: el procesador principal y el procesador de video. Entre sus ventajas est la posibilidad de compartir los recursos de memoria del equipo segn necesidades del momento.
El BUS que incorpora una placa base incluye a la comunicacin que se da entre el procesador, la memoria, las tarjetas del sistema, los dispositivos de almacenamiento (discos, CDs etc.), y los puertos de conexin al exterior del ordenador.
18
Sistemas de Multiprocesamiento
Bus PCI
Las tarjetas capturadoras de video disponen de diferentes entradas y salidas que proporcionan las seales de audio y de vdeo necesarias para los monitores destinados, principalmente, a la edicin de vdeo.
1. 3. 1 EL PUERTO PARALELO
El conocido como puerto paralelo de un ordenador es el destinado tpicamente a conectar la impresora del sistema. Fue ideado por un fabricante de impresoras (en concreto la firma Centronics), lo que hace que este puerto sea conocido como puerto paralelo o Centronics. Dentro del ordenador el puerto se comunica con los buses de datos, control y direcciones. La forma de este conector es una clavija de 25 patillas cuya foto podemos observar en la ilustracin. Dicho tipo de conector se denomina Sub-D de 25 patillas. La informacin como su nombre indica- se transmite en forma paralela e incorpora tanto lneas de entrada como de salida. En la ilustracin podemos ver un esquema de los tres buses que incorpora el puerto paralelo. Tambin podemos observar un sencillo circuito de control para gobernar un conjunto de opto-acopladores y, con ellos, mediante el uso de triacs, controlar cualquier dispositivo ajeno al PC pero controlado por ste. Mediante una sencilla rutina en un lenguaje de alto nivel (C, Pascal, itc.) podremos acceder a las direcciones que controlan los tres buses del puerto paralelo. En la ilustracin podemos ver una tabla que resume la asignacin de los citados buses.
19
Sistemas de Multiprocesamiento
Bus PCI
FOTO 10 La impresora de un ordenador es la conexin final tpica del puerto Centronics, sin olvidar que el puerto serie tambin puede ser utilizado por una impresora.
1. 3. 2 EL PUERTO SERIE
La otra fuente de comunicacin de los datos desde o hacia el PC es en formato serie o, lo que es igual, los bits se van transmitiendo de uno en uno. Un puerto estndar tipo serie de un PC puede reconocerse por los dos tipos externos de conector que puede incorporar: el tipo Sub-D de 9 patillas y el homnimo de 25. Su funcionamiento es idntico. Estos puertos han sido los tpicamente utilizados para conectarse al MODEM o el mouse del sistema. Los puertos serie tpicos estn preparados (dependiendo de el chip de control que el PC incorpore) para trabajar con velocidades comprendidas entre 19,2 y 115,2 Kbit/s.
20
Sistemas de Multiprocesamiento
Bus PCI
? ?
? ? ?
Es importante conocer estas caractersticas, ya que en el apartado siguiente sern enumeradas para el caso concreto del bus PCI.
21
Sistemas de Multiprocesamiento
Bus PCI
2. 1 ESTRUCTURA DE UN BUS
El bus de un sistema est constituido normalmente por entre 50 y 100 lneas. A cada lnea se le asigna un significado o una funcin particular. Aunque existen muchos diseos de buses todos ellos se pueden clasificar en tres grupos: ? Lneas de datos ? Lneas de direcciones ? Lneas de control Adems pueden existir lneas de alimentacin para suministrar energa a los mdulos conectados al bus. Las lneas de datos proporcionan un camino para transmitir datos entre los mdulos del sistema. El conjunto constituido por estas lneas se llama bus de datos. El bus de datos normalmente est compuestos por 8, 16 o 32 lneas diferentes, este nmero se conoce como anchura del bus de datos. Ya que cada lneas slo puede transportar un bit cada vez, el nmero de lneas determina cuntos bits se pueden transferir a la vez. A anchura del bus es un factor clave a la hora de determinar las prestaciones del conjunto del sistema. Las lneas de direccin se utilizan para designar la fuente o el destino del datos situado en el bus de datos. La cantidad de lneas de direcciones determinan la anchura del bus de direcciones y por tanto la mxima capacidad de memoria posible en el sistema. Adems, estas lneas tambin se utilizan para direccionar los puertos de E/S. Las lneas de control se utilizan para controlar el acceso y el uso de las lneas de datos y de direcciones. Como las lneas de datos y de direcciones son compartidas por todos los componentes, debe existir una forma de controlar su uso. Las seales de control transmiten rdenes e informacin de Temporizacin entre los mdulos del sistema. Las seales de Temporizacin indican validez de los datos y las direcciones. Las seales de rdenes especifican las operaciones a realizar. Algunas lneas de control son las siguientes: ? ? ? ? ? ? ? Escritura en memoria (Memory Write): hace que el datos del bus se escriba en la posicin direccionada. Lectura de memoria (Memory Read): hace que el dato de la posicin direccionada se site en el bus Escritura de E/S (I/O Write): hace que el dato del bus se transfiera a travs del puerto de E/S seleccionado. Lectura de E/S (E/S Read): hace que el dato del puerto de E/S direccionado se site en el bus. Transferencia reconocida (Transfer ACK): indica que el dato se ha aceptado o se ha situado en el bus. Peticin de bus (Bus Request): indica que un mdulo necesita disponer del control del bus. Cesin de bus (Bus Grant): indica que se cede el control del bus a un mdulo que lo haba solicitado 22
Sistemas de Multiprocesamiento ? ? ? ?
Bus PCI
Peticin de interrupcin (Interrupt Request): indica si hay una interrupcin pendiente. Interrupcin reconocida (Interrupt ACK): seala que la interrupcin pendiente se ha aceptado. Reloj (Clock): se utiliza para sincronizar las operaciones. Inicio (Reset): pone los mdulos conectado en su estado inicial.
Si un mdulo desea enviar un dato a otro debe hacer dos cosas, primero obtener el uso del bus, y despus transferir el dato a travs del bus. Cuando un mdulo desea pedir un dato a otro mdulo, primero debe obtener el uso del bus, y despus transferir la peticin al otro mdulo mediante las lneas de control y direccin apropiadas. Despus se debe esperar a que el segundo mdulo enve el dato. Fsicamente, el bus de sistema es un conjunto de conductores elctricos paralelos. Estos conductores son lneas de metal grabadas en una tarjeta (tarjeta de circuito impreso). El bus se extiende a travs de todos los componentes del sistema, y cada uno se conecta a las lneas correspondientes del bus. Una disposicin muy comn del bus de sistema consiste en una disposicin vertical de dos columnas de conductores. A lo largo de ellas, existen puntos de conexin en forma de ranuras dispuestas de forma horizontal para sostener las tajetas de circuito impreso. Cada uno de los componentes principales del sistema ocupa una o varias tarjetas y se conecta al bus a travs de esas ranuras. El sistema completo se introduce dentro de un chasis.
2. 2 JERARQUIA DE BUSES
Si se conecta un gran nmero de dispositivos al bus, las prestaciones pueden disminuir. Hay dos causas principales: 1.- En general, a ms dispositivos conectados al bus, mayor es el retardo de propagacin. Este retardo determina el tiempo que necesitan los dispositivos para coordinarse en el uso del bus. Si el control del bus pasa frecuentemente de un dispositivo a otro, los retardos de propagacin pueden afectar sensiblemente a las prestaciones. 2.- El bus puede convertirse en un cuello de botella a medida que las peticiones de transferencia acumuladas se aproximan a la capacidad del bus. Este problema se puede resolver en alguna medida incrementando la velocidad a la que el bus puede transferir los datos, y utilizando buses ms anchos. Sin embargo, puesto que la velocidad de transferencia que necesitan los dispositivos conectados al bus est incrementndose rpidamente, es un hecho que el bus nico est destinado a dejar de utilizarse. La mayora de los computadores utilizan varios buses, normalmente organizados jerrquicamente. La estructura ms utilizada es la siguiente:
23
Sistemas de Multiprocesamiento
Bus PCI
Existe un bus local que est conectado al procesador y a una memoria cach, y al que pueden conectarse tambin uno o ms dispositivos locales. El controlador de memoria cache conecta la cache no slo al bus local, sino tambin al bus de sistema donde se conectan todos los mdulos de memoria principal. Como sabemos, el uso de una memoria cache, alivia el hecho de tener que acceder el procesador de forma continua a la memoria principal. De hecho, la memoria principal puede pasar del bus local al bus de sistema. De esta forma, las transferencias de E/S con la memoria principal a travs del bus de sistema no interfieren la actividad del procesador. Es posible conectar controladores de E/S directamente al bus de sistema. Una solucin mejor consiste en utilizar uno o ms buses de expansin. La interfaz del bus de expansin regula las transferencias de datos entre el bus de sistema y los controladores conectados al bus de expansin. Esta disposicin permite conectar al sistema una amplia variedad de dispositivos de E/S y, al mismo tiempo, aislar el trfico de informacin entre la memoria y el procesador del trfico correspondiente a las E/S. A continuacin mostramos un esquema de la arquitectura utilizada en el bus tradicional, tambin llamada arquitectura de entreplanta:
Procesador
Bus local
Cache
SCSI
Modem
Serie
Bus de expansin
Esta arquitectura de buses tradicional es razonablemente eficiente, pero muestra su debilidad a medida que los dispositivos de E/S ofrecen prestaciones cada vez mayores. La respuesta a esta situacin, ha sido proponer un bus de alta velocidad, que est estrechamente integrado con el resto del sistema, y requiere slo un adaptador entre el bus del procesador y el bus de alta velocidad.
24
Sistemas de Multiprocesamiento
Bus PCI
En el esquema siguiente se muestra esta posible solucin. Como podemos ver, existe un bus local que conecta el procesador a un controlador de cache, que a su vez est conectado al bus de sistema que soporta a la memoria principal. El controlador de cache est integrado junto con el adaptador, o dispositivo de acoplo, que permite la conexin al bus de alta velocidad. Este bus permite la conexin de LAN de alta velocidad. Los dispositivos de velocidad menor pueden conectarse al bus de expansin, que utiliza una interfaz para adaptar el trfico entre el bus de expansin y el bus de alta velocidad. La ventaja de esta organizacin es que el bus de alta velocidad acerca al procesador los dispositivos que exigen prestaciones elevadas y, al mismo tiempo, es independiente del procesador. As, se pueden tolerar las diferencias de velocidad entre el procesador y el bus de
altas prestaciones y las variaciones en la definicin de las lneas de los buses. Los cambios en la arquitectura del procesador no afectan al bus de alta velocidad, y viceversa.
Memoria principal
Cache/ adaptador
SCSI
FireWire
Grficos
Vdeo
LAN
FAX
Modem
Serie
Bus de expansin 25
Sistemas de Multiprocesamiento
Bus PCI
26
Sistemas de Multiprocesamiento
Bus PCI
El bus PCI puede configurarse como un bus de 32 o 64 bits. En el apartado siguiente podemos ver las diferentes lneas de seal obligatorias que existen en el bus PCI (en total son 49). Las seales se dividen en los grupos funcionales siguientes: ? ? ? ? ? ? Terminales (patillas) de sistema: constituidas por los terminales de reloj y de inicio (reset). Terminales de direcciones y datos: incluye 32 lneas para datos y direcciones multiplexadas en el tiempo. Las otras lneas del grupo se utilizan para interpretar y validar las lneas de seal correspondientes a los datos y a las direcciones. Terminales de control de la interfaz: controlan la Temporizacin de las transferencias y proporcionan coordinacin entre los que las inician y los destinatarios. Terminales de arbitraje: a diferencia de las otras lneas de seal del PCI, stas no son lneas compartidas. Cada maestro del PCI tiene su par propio de lneas que lo conectan directamente al rbitro del bus PCI. Terminales para seales de error: utilizadas para indicar errores de paridad, u otros. Terminales de Interrupcin: para los dispositivos PCI que deben generar peticiones de servicio. Igual que los terminales de arbitraje, no son lneas compartidas sino que cada dispositivo PCI tiene su propia lnea o lneas de peticin de interrupcin a un controlador de interrupciones. Terminales de Soporte de Cache: necesarios para permitir memorias cache en el bus PCI asociadas a un procesador o a otro dispositivo. Estos terminales permiten el uso de protocolos de coherencia de cache de sondeo de bus. Terminales de Ampliacin a Bus de 64 bits: incluye 32 lneas multiplexadas en el tiempo para direcciones y datos y se combinan con las lneas obligatorias de direccin y datos para constituir un bus de direcciones y datos de 64 bits. Hay otras lneas de este grupo que se utilizan para interpretar y validar las lneas de datos y direcciones. Por ltimo, hay dos lneas que permiten que dos dispositivos PCI se pongan de acuerdo para usar los 64 bits. Terminales de Test (JTAG/Boundary Scan): estas seales se ajustan al estndar IEEE 1149.1 para la definicin de procedimientos de test.
? ?
27
Sistemas de Multiprocesamiento
Bus PCI
El reconocimiento de interrupcin es una orden de lectura proporcionada por el dispositivo que acta como controlador de interrupciones en el bus PCI. Las lneas de direcciones no se utilizan en la fase de direccionamiento, y las lneas de byte activo indican el tamao del identificador de interrupcin a devolver. La orden de ciclo especial se utiliza para iniciar la difusin de un mensaje a uno o ms destinos. Las rdenes de lectura de E/S y escritura en E/S se utilizan para intercambiar datos entre el mdulo que inicia la transferencia y un controlador de E/S. Cada dispositivo de E/S tiene su propio espacio de direcciones, y las lneas de direcciones se utilizan para indicar un dispositivo concreto y para especificar los datos a transferir a, o desde, ese dispositivo. Las rdenes de lectura y escritura en memoria se utilizan para especificar la transferencia de una secuencia de datos, utilizando uno o ms ciclos de reloj. La interpretacin de estas rdenes depende de si el controlador se memoria del bus PCI utiliza el protocolo PCI para transferencias entre memoria y cache, o no. Si lo utiliza, la transferencia de datos a, y desde, la memoria normalmente se produce en trminos de lneas o bloques de cach. La orden de escritura en memoria se utiliza para transferir datos a memoria en uno o ms ciclos de datos. La orden de escritura e invalidacin de memoria transfiere datos a memoria en uno o ms ciclos. Adems, indica que se ha escrito en al menos una lnea de cache. Esta orden permite el funcionamiento de la cache con posterior escritura en memoria. Las dos rdenes de configuracin permiten que un dispositivo maestro lea y actualice los parmetros de configuracin de un dispositivo conectado al bus PCI. Cada dispositivo PCI puede disponer de hasta 256 registros internos, utilizados para configurar dichos dispositivo durante la inicializacin del sistema.
28
Sistemas de Multiprocesamiento
Bus PCI
La orden de ciclo de direccin dual se utiliza por el dispositivo que inicia la transferencia para indicar que est utilizando direcciones de 64 bits.
A continuacin indicamos una descripcin de las seales obligatorias en un interfaz con funcionalidad de esclavo.
29
Sistemas de Multiprocesamiento
Bus PCI
Nombre Clk
Tipo In
Rsti
In
PciAD[3:0]
t/s
PciCBE[3:0]
t/s
Par
t/s
Descripcin Reloj del bus Sealde sincronizacin de todas las seales, excepto la de inicializacin de todos los registros Rsti. Activa con el flanco de subida. Mxima frecuencia 33 MHz y mnima de 0. Reset asncrono. Pone en un valor conocido a todos los registros y mquinas de estado del sistema: ? Seales de salida al PCI en triestado ? Registros en el valor asignado por defecto ? FSM al estado inactivo Activa a nivel bajo Datos y direcciones multiplexados. Las direcciones coinciden con la validacin de la seal Framei y los datos con la seal de escritura Irdyi y la de lectura Trdyi Lnea de comandos e indicacin de byte activo. En la fase de direccionamiento recogen el comando asociado al tipo de transferencia. En fase de datos su significado se relaciona con la validacin de los bytes de datos. Paridad. Bit de control de paridad impar. Puesto por el maestro en las transacciones de escritura y por el esclavo en las de lectura. Seal retrasada un ciclo de la lnea PciAD.
30
Sistemas de Multiprocesamiento
Bus PCI
Irdyi
s/t/s
Trdyi
s/t/s
Stopi
s/t/s
IdSel
In
DevSeli
s/t/s
Intai
output
Perri
s/t/s
Serri
output
REQ
t/s
GNT
t/s
Sistemas de Multiprocesamiento
Bus PCI
4. 3 PROTOCOLO DE TRANSACCIONES
La estrategia de control del bus PCI est basada en la asignacin de acceso a travs de un protocolo de simple peticin / concesin, de forma que cualquier maestro que quiera hacer uso del mismo debe negociarlo con el resto de los maestros. Para ello se debe emplear un esquema de arbitraje centralizado que la norma PCI no determina. Los maestros disponen de seales de peticin y concesin del bus. El tipo de transaccin realizada entre los dispositivos conectados al bus PCI se define mediante comandos que habilitan las lneas de datos para realizar operaciones de lectura, escritura, configuracin, etc... Una transferencia tpica se compone de una fase de direccionamiento seguida por una o ms fases de datos para permitir una transferencia a rfaga. Una transaccin de lectura o escritura tpicamente se inicia con el siguiente protocolo: Ciclo 1. Fase de direccionamiento. El maestro pone la direccin del dispositivo deseado y el comando relacionado con la transaccin a realizar. Todos los dispositivos conectados al bus registran la direccin, el comando puesto en el bus Cbei [3:0] y el estado de la seal Framei. Comienza la decodificacin de la direccin en cada dispositivo. Ciclo 2. El esclavo direccionado responde a la peticin activando la seal DevSeli Ciclo 3 y posteriores. Transferencias de datos gobernadas por las seales Framei, Irdyi y Trdyi, que segn se combinen indican: espera, transferencia de datos o fin de transaccin.
32
Sistemas de Multiprocesamiento
Bus PCI
33
Sistemas de Multiprocesamiento
Bus PCI
34
Sistemas de Multiprocesamiento
Bus PCI
Ultimo ciclo. Fin de transaccin. Antes de liberar el bus para que otro dispositivo pueda utilizarlo deben ponerse las seales s/t/s a nivel alto y posteriormente en un valor triestado. La relacin temporal entre las distintas seales para casos sencillos de configuracin y acceso a memoria puede la hemos podido observar en las grficas anteriores. El mximo aprovechamiento de la velocidad de transferencia del bus se alcanza mediante una transaccin en m odo a rfagas (burst mode). En este caso, en primer lugar se enva la direccin base de la transaccin y en los siguientes ciclos el esclavo y el maestro las incrementan consecutivamente hasta que el maestro acaba la transaccin deshabilitando la seal apropiada. En algunos casos es imprescindible el empleo de memorias FIFO o RAM para albergar los datos que se transfieran dada la velocidad del bus (33 MHz).
35
Sistemas de Multiprocesamiento
Bus PCI
La funcionalidad de un dispositivo PCI est descrita por el registro de estado. Este registro est asociado a una serie de operaciones que puede realizar el interfaz (commands) y a valores de estado del registro (status). As, la capacidad de sealizar un error de paridad o la velocidad de respuesta del dispositivo por ejemplo, son programadas mediante escritura en dicho registro en tiempo de configuracin o implementadas por el propio dispositivo (hardwired). Un PC al arrancar realiza ciclos de configuracin en todos los dispositivos conectados al bus PCI. Parte de la informacin presente en el espacio de configuracin de cada dispositivo PCI permite a la BIOS del sistema habilitar el dispositivo PCI y asignarle un espacio de memoria en la tabla de memoria del sistema elaborada por el software de arranque. Los registros base (BARs), son los encargados de informar a la BIOS del nmero y tamao de los espacios de memoria o de entrada / salida necesarios y de identificar una zona de memoria del sistema mapeada sobre un determinado dispositivo PCI. Este proceso se realiza en dos fases: ? En primer lugar, el contenido de cada BAR es ledo para determinar si se relaciona con un espacio de me moria o de entrada / salida y qu tamao precisa. El bit 0 de cada BAR indica si es un 0 que se trata de memoria y si es un 1, un espacio de entrada/salida. El peso binario del primer bit no nulo indica su tamao segn se trate de memoria o entrada / salida. Posteriormente, el sistema decodifica esta informacin y escribe en cada BAR la direccin de memoria que le ha asignado el software de arranque.
Para poder comprender mejor este proceso, es decir, como se asignan los recursos del sistema a un dispositivo PCI en fase de inicializacin, tomaremos como ejemplo el paquete de desarrollo S5920DK1 de AMCC, que contiene un chip con funcionalidades PCI. El usuario dispone de hasta 4 mdulos de memoria configurables asociados a cada BAR sobre los que se realizarn las operaciones de lectura o escritura. En la siguiente tabla, mostramos un ejemplo del valor de los registros base en tiempo de configuracin y el posteriormente asignado por la BIOS para cada regin de memoria: Registro base Tamao y Tipo Valor asignado en tiempo de configuracin 10E8FFC1 FFFFFFF9 FFFFFF80 FFFFF000 000000000 Valor asignado por la BIOS 0000FC81 0000FFF1 FFFBFF80 FFFBE000 -
36
Sistemas de Multiprocesamiento
Bus PCI
La direccin preasignada al BAR0 en este caso es confusa porque no se corresponde exactamente con la norma PCI. Esto se debe a las caractersticas propias del chip AMCC que emplea el BAR0 para direccionar como espacio de E/S una coleccin de registros propios de operacin y estado. La decodificacin del BAR1 y BAR2 es la siguiente: ? ? ? BAR1 = FFFFFFF9 ? Espacio de E/S. Primer bit no nulo = 3, por lo que el tamao solicitado es de 23 = 8 bytes. BAR2 = FFFFFF80 ? Espacio de memoria. Primer bit no bulo = 7, por lo que el tamao solicitado es de 27 = 128 bytes. BAR4 = 00000000 ? Deshabilitado.
4. 5 DIRECCIONAMIENTO
PCI define tres espacios fsicos de direccionamiento: configuracin, entrada / salida y memoria. Los cuales describiremos a continuacin.
4. 5. 1 CONFIGURACIN
El nmero de dispositivos que pueden conectarse al bus PCI est limitado a 32. No obstante, la norma PCI admite la jerarquizacin de buses incrementndose el nmero de dispositivos que pueden conectarse. El software de configuracin debe ser capaz de realizar transacciones de configuracin en todos los dispositivos PCI que residan ms all del puente PCI/host (bridge). La identificacin del bus en una jerarqua se realiza mediante los dos bits de menor peso del bus PciAD, si PciAD[1:0] = 00 los dispositivos estn alojados en el mismo segmento del bus principal que el bridge (transaccin de configuracin tipo 0); en caso contrario, lo estn en un segmento diferente (tipo 1). Un agente detecta acceso a su espacio de configuracin si se activa l a seal IDSEL, detecta una transaccin de configuracin tipo 0 y adems recibe el comando de configuracin. En caso contrario la transaccin es ignorada.
37
Sistemas de Multiprocesamiento
Bus PCI
4. 6 CONTROL DE PARIDAD
La norma PCI admite cierto control sobre los datos que se transfieren entre el maestro y el esclavo. El control se basa en la deteccin de paridad par en las lneas de datos (PciAd) y comandos (PciCbe). Para ello se emplea la seal bidireccional Par, las seales de indicacin de error Serri (System Error Enable) y Perri (Parity Error Report) y ciertos registros del espacio de configuracin que permiten sealizar la deteccin de fallos en la transmisin. Deben destacarse dos instantes significativos en el control de la paridad:
a) Fase de direccionamiento Los datos viajan desde el maestro al esclavo. El esclavo recibe los datos y el bit de paridad y comprueba que la paridad de los datos recibidos es la esperada, en caso contrario activa la seal Serri (System Error Enable).
b) Fase de datos Pueden darse dos casos escritura o lectura. En caso de escritura de configuracin o de memoria el proceso es anlogo al descrito en la fase de direccionamiento con la salvedad de que si se produce un error en la paridad se activa la seal Perri (Parity Error Report). En caso de lectura los datos viajan desde el esclavo al maestro poniendo el primero el bit de paridad calculado en la lnea Par.
En ambos casos, la seal Par se alimenta un ciclo despus de realizada la transmisin de los datos dando tiempo al maestro o al esclavo a calcular la paridad. Si se produce un error
en cualquiera de las dos situaciones las seales de indicacin de error Perri o Serri se activan un ciclo despus de la recepcin de la paridad esperada.
38
Sistemas de Multiprocesamiento
Bus PCI
En la prctica, estos requerimientos se traducen en las siguientes recomendaciones de diseo: 1. Las seales de los buses deben presentar un tiempo de set- un inferior a los 7 ns. El bus de datos y direcciones PciAD, se emplean como entrada a varios mdulos: el decodificador de direcciones del espacio de configuracin, registro de direcciones y los registros de datos para las transferenc ias a memoria o al espacio de configuracin. Esto puede representar un alto fan-out para los datos por lo que el retardo de entrada puede superar los 7 ns. La solucin consiste en registrar los buses a cada transicin del reloj, de manera que se disponga de datos estables durante todo un ciclo de reloj. 2. Las seales de salida deben presentarse entre 2 y 11 ns despus de una transicin en el reloj. Para satisfaces este requisito, las seales de salida pueden registrarse. Registrar las seales de entrada y salida proporciona control sobre los tiempo en que estas seales estn disponibles pero introducen un ciclo de espera extra. En principio, estos ciclos de espera adicionales pueden ser asumidos por la especificacin PCI.
39
Sistemas de Multiprocesamiento
Bus PCI
5. 2 SOLUCIONES COMERCIALES
5. 2. 1 ASICs PCI
Son circuitos predifundidos con funcionalidades PCI. Admiten cierta programacin. El sistema de desarrollo S5920DK1 de AMCC convierte las seales del bus PCI en un bus de usuario de 8/16/32 bits con una velocidad independiente al reloj del interfaz PCI. El circuito integrado incluido en el sistema realiza las operaciones propias de un interfaz esclavo PCI y otras propias para controlar las transacciones entre el bus PCI y el bus de usuario conforme a las distintas configuraciones posibles para las regiones de memoria.
5K y 124K), en alguna de las pastillas FPGA que Xilinx tiene precaracterizadas para este tipo de interfaces. Con ello se consigue un alto grado de integracin. Cipress no mantiene un control tan estricto de sus dispositivos y en principio no tiene que emplearse una FPGA concreta. El usuario debe adaptar la descripcin de alto nivel (VHDL) que se le proporciona para adecuarla a sus necesidades. Esta descripcin se encarga de realizar la lgica de control, configuracin del espacio de registros, temporizacin, control de paridad y otras funciones asociadas al interfaz PCI. Una vez adaptado el cdigo, basta con sintetizarlo sobre una FPGA de Cypress. 40
Sistemas de Multiprocesamiento
Bus PCI
5. 3 OTRAS ALTERNATIVAS
Mediante lenguajes de descripcin de hardware se puede disear un interfaz que se adecue ms a unas necesidades especficas, eliminando y aadiendo funciones propias de la aplicacin a la que se va a dar servicio.
41