41
LOS BUSES DEL PC EL BUS PCI

LOS BUSES DEL PC EL BUS PCI - geocities.ws · 3. 1 Estructura del bus 3. 2 Ordenes del PCI . Sistemas de Multiprocesamiento Bus PCI 4 4. DESCRIPCIÓN FUNCIONAL DEL BUS LOCAL PCI 4

Embed Size (px)

Citation preview

LOS BUSES DEL PC

EL BUS PCI

Sistemas de Multiprocesamiento Bus PCI

2

Realizado por:

Belén Martín Muñoz Melisa Núñez Platero 5º Automática y Electrónica

Sistemas de Multiprocesamiento Bus PCI

3

INDICE

1. INTRODUCCIÓN AL PC Y A SUS BUSES

1.1 Recursos de un PC

1.1.1 Memoria 1.1.2 Puertos Entrada / Salida 1.1.3 Interrupciones 1.1.4 Canales de DMA 1.1.5 Escenario

1.2 Algo sobre “buses”

1.2.1 El bus tipo ISA 1.2.2 El bus tipo EISA 1.2.3 El bus tipo VESA LOCAL BUS (VLB) 1.2.4 El bus tipo Micro Channel Architecture (MCA) 1.2.5 El bus PCI 1.2.6 El bus AGP

1.3 Algo sobre “puertos”

1.3.1 El puerto paralelo 1.3.2 El puerto serie

2. CONCEPTOS Y CARACTERÍSTICAS DE LOS BUSES

2. 1 Estructura de un bus 2. 2 Jerarquía de buses

3. CARACTERÍSTICAS DEL BUS PCI

3. 1 Estructura del bus 3. 2 Ordenes del PCI

Sistemas de Multiprocesamiento Bus PCI

4

4. DESCRIPCIÓN FUNCIONAL DEL BUS LOCAL PCI

4. 1 Señales del sistema 4. 2 Señales de control de transacciones 4. 3 Protocolo de transacciones 4. 4 Espacio de configuración del interfaz 4. 5 Direccionamiento 4. 5. 1 Configuración 4. 5. 2 Entrada/Salida y memoria 4. 6 Control de paridad

5. DISEÑO DE INTERFACES PARA BUS PCI

5. 1 Requerimientos para el diseño de interfaces PCI 5. 2 Soluciones comerciales 5. 2. 1 ASICs PCI 5. 2. 2 Dispositivos programables FPGA 5. 2. 3 Librerías de macroceldas para ASICs 5. 2. 4 Modelados de alto nivel, LogiCores 5. 3 Otras alternativas

Sistemas de Multiprocesamiento Bus PCI

5

1. INTRODUCCIÓN AL PC Y A SUS BUSES En las líneas siguientes hemos decidido describir una guía ejemplo, del desglose de una cantidad de términos relacionados con el ordenador personal (PC) y lo que el “hardware” ha ido proporcionando al mercado desde la aparición del primer ordenador compatible hasta los modernos equipos que ahora nos ofrece el panorama informático. Pretendemos dar una breve descripción de términos tales como buses y puertos. Para comenzar vamos a comentar las siglas más estandarizadas dentro de la terminología informática.

Los PC’s han ido variando su arquitectura con los años a fin de conseguir más potencia y velocidad. Este pequeño portátil incorpora más tecnología 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 básicas, para la comprensión 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

6

1.1.1 MEMORIA

Remontándonos al principio de los tiempos, a los microprocesadores 8088 y 8086, se les podía hacer funcionar en modo mínimo o máximo, según 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 física 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 años se vio que esto era insuficiente. En ese resto tenemos el espacio de memoria de video (ram y rom), rom de diversos periféricos, rom bios, etc

La memoria física por encima del primer megabyte se llama extendida. Hay que tener

en cuenta que en el bus ISA de 16 bits sólo hay acceso a los primeros 16 MB de memoria direccionable, ya que sólo contiene los bits de dirección 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.

1.1.2 PUERTOS DE ENTRADA / SALIDA

El rango de puertos puede ir de 0 a 0FFFFH; no obstante, en muchos PC’s existe una

limitación al reconocimiento de puertos superiores al 3FFH. De estos totales, podemos distinguir varios rangos:

? 0-FFH: puertos estándar en la placa base, o reservados en el chipset. ? 100H-1FFH: algunos puertos estándar ? 200H-3FFH: la generalidad de puertos estándar en el bus ISA. ? 400H en adelante: funciones especiales, puertos en bus PCI, etc...

Algunos puertos tienen nombres simbólicos 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 (278H-27FH)

Sistemas de Multiprocesamiento Bus PCI

7

No obstante, puede ser que LPT1, por ejemplo, para el sistema operativo sea el primer puerto encontrado buscando según orden anterior.

Es importante conocer la ubicación 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 diseño 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: ratón PS/2 ? IRQ14: IDE primario ? IRQ15: IDE secundario

El resto suele tener una asignación tradicional:

? IRQ7: impresora si el software de impresión utiliza interrupciones, lo que suele ser configurable

? IRQ9: tarjeta gráfica, si ésta utiliza interrupciones ? IRQ10: tarjeta de sonido o de red ? IRQ11: tarjeta SCSI

Supongamos un PC con tarjeta gráfica que utiliza interrupciones, tarjeta de sonido,

tarjeta de red, tarjeta SCSI, módem interno, dos discos duros IDE, CDROM IDE, ratón PS/2, y queremos utilizar COM1 y COM2 simultáneamente con el módem interno.

Sistemas de Multiprocesamiento Bus PCI

8

La asignación debe ser:

? IRQ3: COM2 ? IRQ4: COM1 ? IRQ5: módem interno, configurado en COM3. ? IRQ7: tarjeta de sonido. El software de impresión no debe utilizar

interrupciones (o bien cuando imprimamos no pondremos en marcha la tarjeta de sonido, y a la inversa).

? IRQ9: tarjeta gráfica ? IRQ10: tarjeta de red ? IRQ11: tarjeta SCSI ? IRQ12: ratón PS/2 ? IRQ14: IDE primario, donde se instalarán ambos discos duros ? IRQ15: IDE secundario, donde se instalará el CDROM

En el bus ISA las interrupciones podrían compartirse si no se utilizan simultáneamente,

aunque para asegurar esto debería disponerse del esquema eléctrico de las fuentes de interrupción. En el bus PCI las interrupciones pueden compartirse, pero los sistemas operativos no soportan esta compartición. Sobre 1999 las placas base ya no deberían incluir bus ISA.

1. 1. 4 CANALES DE DMA

Son:

? DMA0: libre (en primeros PC’s se utilizaba para refresco de la memoria dinámica)

? 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 están utilizando en puertos de

impresora ECP o en dispositivos especiales.

Sistemas de Multiprocesamiento Bus PCI

9

1. 1. 5 ESCENARIO

Normalmente, las dificultades en el uso de los recursos aquí mencionados provienen

del pobre diseño de las interrupciones en el primer PC. De la misma forma, los periféricos para el bus ISA se diseñaron de modo que no se podían 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 prevén la compartición. No obstante, en un PC moderno, y como se ha explicado, podemos localizar

interrupciones en: ? 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 gráficas

Luego, puede ser posible, por ejemplo, una tarjeta SCSI PCI y una tarjeta de red PCI

ambas en IRQ11, pero sobre si la compartición 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 eléctricamente debería ser fácil, no parece que los fabricantes de placas base lo hayan realizado, y no parece haber documentación al respecto.

1. 2 ALGO SOBRE “BUSES”

Al hablar sobre ordenadores hemos de remitirnos a su propia terminología y una de las palabras comúnmente aceptadas dentro del mundillo electrónico / informático es el de “BUS”, donde nos referimos a lo que podríamos denominar el “camino” interno por donde circulan los datos dentro de un PC. Esto incluye a la comunicación que se da entre el procesador, la memoria, las tarjetas del sistema, los dispositivos de almacenamiento (discos, DC’s, etc..), y los puertos de conexión al exterior del ordenador.

Un BUS, en términos estrictamente electrónicos, es un canal constituido por una serie de conductores donde los diferentes componentes conectan entre sí e intercambian información. Si quisiéramos buscar un ejemplo podríamos citar el recorrido que el cable telefónico describe dentro de nuestra casa. En este caso el Bus sería este cable y los dispositivos interconectados serían los diferentes equipos telefónicos de que dispongamos en nuestro hogar.

Sistemas de Multiprocesamiento Bus PCI

10

Al hablar de “BUS” nos referimos a lo que podríamos 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 típicamente tres tipos de Buses:

? Bus de DATOS ? Bus de CONTROL ? Bus de DIRECCIONES

En la práctica podemos encontrar los siguiente estándares dentro de los tipos de Buses existentes:

? Bus ISA ? Bus EISA ? Bus VESA Local ? Bus MCA ? Bus PCI ? Bus AGP

Sistemas de Multiprocesamiento Bus PCI

11

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 continuación se llaman buses de expansión, y se pueden definir como el conjunto de líneas 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 fax-modem, una tarjeta multi I/O, etc... Buscando que la comunicación de los datos entre los buses de dispositivos externos y el bus del sistema sea lo más rápida posible, se han diseñado varias arquitecturas o esquemas que combinan software (programas de manejo) y hardware (cantidad de líneas, conectores y circuitos electrónicos), entre las que se destacan el bus de expansión ISA, el EISA, el EDSI, el SCSI, el IDE, etc.... El bus de expansión 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 periféricos. Además de tener acceso a las líneas principales del bus del sistema, los conectores del bus de expansión también tienen las líneas que conducen la potencia eléctrica requerida por los dispositivos para funcionar. En apartados posteriores profundizaremos un poco más en las características y en la estructura de los buses, así como en su jerarquía. En este momento daremos unas nociones básicas de los diferentes tipos de buses de expansión que existen en el mercado.

Sistemas de Multiprocesamiento Bus PCI

12

1. 2. 1 EL BUS TIPO ISA

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 y, por tanto, el más extendido y común de los existentes. El bus ISA ha sido también uno de los mayores frenos al desarrollo hardware de los ordenadores desde su inicio ya que su naturaleza de 8 bits no fue actualizada a los 16 bits hasta el año 1984. Su existencia actual se debe, principalmente, a la enorme compatibilidad existente en el mercado de las tarjetas de ordenador a nivel mundial. Aún así la norma ISA es más que suficiente para muchos tipos de tarjetas (los MODEM de tipo genérico son un claro ejemplo de ello).

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 atrás podemos ver que el Bus ISA nació a la sombra de los primeros chips 8088, los cuales utilizaban un bus de datos de tan sólo 8 bits. En el año 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 continuación de algunas de las ranuras de expansión de 8 bits, otra ranura suplemento más corta, la cual se encarga de manejar los 8 bits adicionales del bus de datos, además 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 expansión como bus de 16 bits.

Sistemas de Multiprocesamiento Bus PCI

13

1. 2. 2 EL BUS TIPO EISA

El Bus tipo EISA (Extended Industry Standard Architecture) hace mención en su denominación a la “extensión” de su uso, lo cual no es fiel reflejo de la realidad ya que el Bus EISA nunca ha sido utilizado de forma masiva en el mundo informático. Su nacimiento no fue más que una respuesta de nueve fabricantes de equipos compatibles con IBM, encabezados por la firma Compaq al lanzamiento al mercado, por parte de IBM, del estándar denominado MCA y que posteriormente comentaremos. Debido a la forma en que apareció en el mercado, y deseando evitar los garrafales errores cometidos por IBM, la firma Compaq tomó dos medidas que diferenciaron su lanzamiento del efectuado por IBM: compatibilizar el nuevo Bus con el existente (ISA) y facilitar a todos los fabricantes el acceso al desarrollo de equipos enfocados al uso de este BUS. Luego es un bus ISA mejorado. Alguna de las características más interesantes del bus EISA son:

? Compatibilidad con la norma ISA existente. ? Ancho de bus de 32 bits, que se traduce en una mejora de la velocidad

de adquisición o envío de datos ? Modo de trabajo “Bus mastering”·. ? Modo de trabajo tipo “Plug & Play”.

Para las tarjetas interfaz de periféricos tiene más funciones y más contactos que un

conector de bus ISA (188 contra 98), pero se diseñó para tener plena compatibilidad previa con las tarjetas de ISA, como ya hemos dicho. Se mantienen todas las conexiones ISA en sus posiciones normales, pero se añade una nueva fila de contactos más baja para unirse a las funciones avanzadas. Estos contactos se unieron a los circuitos de la tarjeta de expansión intercalando las líneas adicionales en los espacios dejados entre los contactos normales de una tarjeta ISA.

Las ranuras o slots para tarjetas EISA pueden recibir tanto tarjetas de bus ISA como de

bus EISA, pero la compatibilidad es de un solo sentido: las tarjetas diseñadas para el bus EISA no trabajan en ranuras de bus ISA.

A pesar de sus evidentes ventajas el bus EISA no caló en el mercado y su presencia en equipos de tipo doméstico es bastante extraño. Tan solo en equipos de tipo “servidor” de cierta envergadura se puede encontrar este tipo de bus. Las razones del fracaso de la norma EISA hay que buscarlas en el alto precio de los equipos que la incorporan, la poca disponibilidad de tarjetas compatibles con la misma y, por último, la menor prestación que ofrece si se compara con el bus VESA LOCAL y el PCI existentes en la actualidad.

Sistemas de Multiprocesamiento Bus PCI

14

Dentro del ordenador el puerto paralelo se comunica con los buses de datos, control y direcciones.

1. 2. 3 EL BUS TIPO VESA LOCAL BUS (VLB) Una manera de acelerar la transferencia de grandes cantidades de información desde el

microprocesador a la pantalla, entre periféricos, o entre periféricos y la memoria, es crear una conexión más directa y rápida entre ellos para evitar el uso del bus de expansión común a todos los circuitos del computador, el cual es muy lento. A este minibús se le llama “bus local”.

Existen actualmente fabricantes que pueden escoger entre tres diseños de bus local: uno es el bus local para video VL-Bus diseñado por VESA (que comentamos en este apartado), el segundo es un bus local para interconectar periféricos directamente a los buses de datos y direcciones del microprocesador, y el tercero es el bus local PCI (Peripheral Component Interconnect) desarrollado por Intel para aprovechar al máximo los recursos de su microprocesador Pentium, pero también se puede usar con procesadores 80486.

El BUS tipo VESA Local Bus (VLB) fue introducido en el mercado en el año 1992 por

la VESA (Video Electronics Standards Association), la cual se dedicaba principalmente a la mejora de los periféricos de vídeo para PCs. Esto significa que el BUS VESA Local Bus (VLB) naciera como una mejora destinada a las tarjetas de video conectables a nuestro ordenador.

El VLB tiene un ancho de 32 bits lo que lo relaciona directamente con la tecnología de

los microprocesadores de la familia 486. Al ser el BUS VESA Local Bus (VLB) una extensión de la tecnología ISA podemos utilizar un bus tipo VLB para conectar también tarjetas tipo ISA. La tecnología BUS VESA Local Bus (VLB) fue fulminada con la aparición de los micros tipo Pentium en 1994, los cuales hacen un uso más extendido de la tecnología PCI. La aparición del bus PCI promovida por Intel, añadida a los problemas específicos del BUS VESA Local Bus (VLB), forzaron la desaparición de este último.

Sistemas de Multiprocesamiento Bus PCI

15

La adquisición de datos a través de los puertos del PC permite disponer de

herramientas de trabajo muy potentes. Los diseños del bus local VESA, permiten actualmente hasta tres ranuras de

expansión, suficiente para alojar la tarjeta de video, la tarjeta controladora de disco y una tarjeta adaptadora de res. El número de ranuras se ha mantenido bajo debido a la limitación impuesta por la capacitancia electrónica interna de los conectores y las altas frecuencias que deben manejar (hasta 66 MHz).

Los problemas citados son: la fuerte dependencia del diseño VLB de la arquitectura

486 y su dificultad para ser readaptado a las familias Pentium, la poca viabilidad eléctrica del sistema al ser capaz de soportar un número muy reducido de tarjetas VLB (incluso sólo 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 desaparición masiva de los PC’s tipo 486 del mercado la norma VLB había sido y sustituida en algunas placas por la PCI.

1. 2. 4 EL BUS TIPO MICRO CHANNEL ARCHITECTURE (MCA) El bus tipo Micro Channel Architecture (MCA) –también conocido como bus MCA-

fue un intento de la firma IBM por reemplazar a la norma ISA con algo aparentemente mayor y más rápido. Con la aparición de los micros tipo 80386DX a mediados de los 80 y su ancho de bus asociado de 32 bits. La firma IBM decidió apostar por la creación de un BUS que se adaptara a dicho de bus. El Bus MCA tiene un ancho de 32 bits e incorpora sustanciales

Sistemas de Multiprocesamiento Bus PCI

16

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 año 1997 prestaciones que luego no veríamos implementadas hasta bastantes años después. 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 harían 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 automáticamente tarjetas sin necesidad de puentes específicos (esto ocurría 8 años antes de que Microsoft incorporara la norma PnP en el mercado).

Podemos ver aquí una tabla que resume la asignación de los buses que componen el puerto paralelo del PC.

El bus MCA ofrecía grandes perspectivas pero IBM cometió dos grandes errores en su definición: 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 periféricos 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 estándar para Interconexión de Componente Periférico es lo más nuevo en la tecnología de bus local. Aunque por medio del bus local VL-Bus o las ranuras exclusivas de expansión 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 límite del rendimiento en el manejo de datos, especialmente en los sistemas Pentium.

Sistemas de Multiprocesamiento Bus PCI

17

El bus PCI (the Peripheral Component Interconnect) fue desarrollado por la firma Intel en el año 1993. Estaba enfocado a la quinta y sexta generación de micros, pero algunos miembros de la familia 486 incorporaron ya esta norma. Al igual que el VLB, el bus PCI puede manejar periféricos de 32 y 64 bits. Tiene el potencial para llevar a la pantalla video lleno de color con alta resolución y movimiento completamente uniforme (sin saltos) en ventanas múltiples, lo que lo hace ideal para aplicaciones de multimedia. Puede manejar gráficos de color verdadero (True Color) de 24 bits a razón de 30 cuadros por segundo.

Las tarjetas controladoras de periféricos diseñadas para el bus local PCI tienen

especificaciones de autoconfiguración grabadas en una memoria incluida en la misma tarjeta, para proveer la información de instalación necesaria para el sistema durante la fase de arranque. Las rutinas de la BIOS configuran automáticamente cada dispositivo de PCI basándose en los recursos que ya están en uso por otras tarjetas. Al menos teóricamente, 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 periférico al sistema.

Su principal ventaja con respecto al VLB estriba en su no dependencia del micro, tal como ocurría entre el bus VLB y los micros tipo 486. Además la norma PCI se utiliza también en sistemas no PC’s, lo que ha universalizado aún más, si cabe, su uso, reduciendo a la vez sus costes. Además de estas ventajas el bus PCI (norma 2.1) está preparado (no aún en sistemas PC) para manejar un ancho de 64 bits.

En esta ilustración 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. Más adelante, profundizaremos más en las características, señales, direccionamiento,

configuración, etc... del bus PCI.

Sistemas de Multiprocesamiento Bus PCI

18

1. 2. 6 EL BUS AGP

El bus AGP (Accelerated Graphics Port) es un tipo específicamente diseñado 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 diseñado por la firma Intel a finales de 1997 para combatir la saturación existente en los buses existentes a la hora de transferir información de video. Su utilización comenzó en los microprocesadores de tipo PentiumII. Las necesidades de los nuevos gráficos con aceleración 3D y reproducción de video a pantalla completa forzaron el desarrollo de una tecnología dedicada. En realidad el bus AGP puede ser considerado como un puerto y no como un bus ya que está ideado para la comunicación 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 según necesidades del momento.

El BUS que incorpora una placa base incluye a la comunicación que se da entre el

procesador, la memoria, las tarjetas del sistema, los dispositivos de almacenamiento (discos, CD’s etc.), y los puertos de conexión al exterior del ordenador.

1. 3 ALGO SOBRE “PUERTOS” Las comunicaciones de un ordenador con el mundo que le rodea deben utilizar los

conectores específicos que el mismo incorpora. Estos conectores –existentes en toda computadora- obedecen a dos tipos principales: el puertos o conexión paralelo y el puerto serie. En las siguientes líneas vamos a comentar brevemente algo sobre los puertos de un ordenador tipo PC.

Sistemas de Multiprocesamiento Bus PCI

19

Las tarjetas capturadoras de video disponen de diferentes entradas y salidas que proporcionan las señales de audio y de vídeo necesarias para los monitores destinados,

principalmente, a la edición de vídeo.

1. 3. 1 EL PUERTO PARALELO

El conocido como puerto paralelo de un ordenador es el destinado típicamente 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 ilustración. Dicho tipo de conector se denomina “Sub-D de 25 patillas”. La información –como su nombre indica- se transmite en forma paralela e incorpora tanto líneas de entrada como de salida. En la ilustración podemos ver un esquema de los tres buses que incorpora el puerto paralelo.

También 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 ilustración podemos ver una tabla que resume la asignación de los citados buses.

Sistemas de Multiprocesamiento Bus PCI

20

FOTO 10

La impresora de un ordenador es la conexión final típica del puerto Centronics, sin olvidar que el puerto serie también puede ser utilizado por una impresora.

1. 3. 2 EL PUERTO SERIE La otra fuente de comunicación 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 estándar 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 homónimo de 25. Su funcionamiento es idéntico. Estos puertos han sido los típicamente utilizados para conectarse al MODEM o el “mouse” del sistema. Los puertos serie típicos están preparados (dependiendo de el chip de control que el PC incorpore) para trabajar con velocidades comprendidas entre 19,2 y 115,2 Kbit/s.

Sistemas de Multiprocesamiento Bus PCI

21

2. CONCEPTOS Y CARACTERÍSTICAS DE LOS BUSES

La operación básica de un bus se realiza en un tiempo llamado ciclo de bus. En toda

transacción intervienen dos participantes (agentes): el dispositivo que inicia la transacción (maestro) y el que es direccionado (esclavo). En una transferencia elemental la información se transfiere desde el origen al destino. Los buses actuales permiten realizar varias transferencias en una sola operación.

Estas son algunas de las características de un bus:

? Banda base: la información se envía directamente sin ningún tipo de modulación. ? Paralelismo: serie (bit a bit) o paralelo permitiendo el envío de toda una palabra. ? Multiplexación: es frecuente que las líneas de un bus se encuentren

multiplexadas para permitir reducir su número. De esta manera se envían por las mismas líneas informaciones distintas, por ejemplo direcciones y datos, en diferentes instantes de tiempo.

? Temporización: ciclo completo o partido, depende de si se ocupa completamente el tiempo del bus para realizar una transferencia. Se relaciona también con la presencia o ausencia de un único reloj que determine del inicio y fin de los ciclos, sincronismo o asincronía.

? Modo de operación: síncrono o asíncrono en función de la forma en que se realice el diálogo entre los dispositivos conectados.

? Estrategia de control: en general, la CPU controla todas las transferencias entre un dispositivo maestro y el resto de los dispositivos. En los sistemas que disponen de varios procesadores hay varios maestros potenciales del bus por lo que se precisará de un mecanismo de arbitraje para que no se produzcan colisiones de datos.

? Longitud : depende de la aplicación. ? Velocidad de transmisión: depende de la longitud y de la lógica de control.

Velocidad es igual al producto de la longitud por el paralelismo. Se suele asociar este valor con el ancho de banda.

? Direccionamiento: define la forma por la que el maestro elige un destino para la transferencia. Puede ser geográfica, si las direcciones están asociadas a conectores físicos o lógica, en caso de que la información sobre la dirección esté almacenada en el dispositivo destino. En este caso de direccionamiento todos los dispositivos esclavos comparan su dirección con la enviada por el maestro; si coinciden se inicia el ciclo de transferencia de datos.

? Capacidad de conexión: determinada por el número de dispositivos que pueden conectarse al bus. Está determinada por el direccionamiento y las características físicas del soporte.

Es importante conocer estas características, ya que en el apartado siguiente

serán enumeradas para el caso concreto del bus PCI.

Sistemas de Multiprocesamiento Bus PCI

22

2. 1 ESTRUCTURA DE UN BUS

El bus de un sistema está constituido normalmente por entre 50 y 100 líneas. A cada línea se le asigna un significado o una función particular. Aunque existen muchos diseños de buses todos ellos se pueden clasificar en tres grupos:

? Líneas de datos ? Líneas de direcciones ? Líneas de control

Además pueden existir líneas de alimentación para suministrar energía a los módulos conectados al bus. Las líneas de datos proporcionan un camino para transmitir datos entre los módulos del sistema. El conjunto constituido por estas líneas se llama bus de datos. El bus de datos normalmente está compuestos por 8, 16 o 32 líneas diferentes, este número se conoce como anchura del bus de datos. Ya que cada líneas sólo puede transportar un bit cada vez, el número de líneas determina cuántos 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 líneas de dirección se utilizan para designar la fuente o el destino del datos situado en el bus de datos. La cantidad de líneas de direcciones determinan la anchura del bus de direcciones y por tanto la máxima capacidad de memoria posible en el sistema. Además, estas líneas también se utilizan para direccionar los puertos de E/S. Las líneas de control se utilizan para controlar el acceso y el uso de las líneas de datos y de direcciones. Como las líneas de datos y de direcciones son compartidas por todos los componentes, debe existir una forma de controlar su uso. Las señales de control transmiten órdenes e información de Temporización entre los módulos del sistema. Las señales de Temporización indican validez de los datos y las direcciones. Las señales de órdenes especifican las operaciones a realizar. Algunas líneas de control son las siguientes:

? Escritura en memoria (Memory Write): hace que el datos del bus se escriba en la posición direccionada.

? Lectura de memoria (Memory Read): hace que el dato de la posición direccionada se sitúe en el bus

? Escritura de E/S (I/O Write): hace que el dato del bus se transfiera a través del puerto de E/S seleccionado.

? Lectura de E/S (E/S Read): hace que el dato del puerto de E/S direccionado se sitúe en el bus.

? Transferencia reconocida (Transfer ACK): indica que el dato se ha aceptado o se ha situado en el bus.

? Petición de bus (Bus Request): indica que un módulo necesita disponer del control del bus.

? Cesión de bus (Bus Grant): indica que se cede el control del bus a un módulo que lo había solicitado

Sistemas de Multiprocesamiento Bus PCI

23

? Petición de interrupción (Interrupt Request): indica si hay una interrupción pendiente.

? Interrupción reconocida (Interrupt ACK): señala que la interrupción pendiente se ha aceptado.

? Reloj (Clock): se utiliza para sincronizar las operaciones. ? Inicio (Reset): pone los módulos conectado en su estado inicial.

Si un módulo desea enviar un dato a otro debe hacer dos cosas, primero obtener el uso del

bus, y después transferir el dato a través del bus. Cuando un módulo desea pedir un dato a otro módulo, primero debe obtener el uso del bus, y después transferir la petición al otro módulo mediante las líneas de control y dirección apropiadas. Después se debe esperar a que el segundo módulo envíe el dato.

Físicamente, el bus de sistema es un conjunto de conductores eléctricos paralelos.

Estos conductores son líneas de metal grabadas en una tarjeta (tarjeta de circuito impreso). El bus se extiende a través de todos los componentes del sistema, y cada uno se conecta a las líneas correspondientes del bus.

Una disposición muy común del bus de sistema consiste en una disposición vertical de

dos columnas de conductores. A lo largo de ellas, existen puntos de conexión 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 través de esas ranuras. El sistema completo se introduce dentro de un chasis.

2. 2 JERARQUIA DE BUSES Si se conecta un gran número de dispositivos al bus, las prestaciones pueden disminuir.

Hay dos causas principales: 1.- En general, a más dispositivos conectados al bus, mayor es el retardo de propagación.

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 propagación 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 más anchos. Sin embargo, puesto que la velocidad de transferencia que necesitan los dispositivos conectados al bus está incrementándose rápidamente, es un hecho que el bus único está destinado a dejar de utilizarse.

La mayoría de los computadores utilizan varios buses, normalmente organizados

jerárquicamente. La estructura más utilizada es la siguiente:

Sistemas de Multiprocesamiento Bus PCI

24

Existe un bus local que está conectado al procesador y a una memoria caché, y al que

pueden conectarse también uno o más dispositivos locales. El controlador de memoria cache conecta la cache no sólo al bus local, sino también al bus de sistema donde se conectan todos los módulos 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 través del bus de sistema no interfieren la actividad del procesador.

Es posible conectar controladores de E/S directamente al bus de sistema. Una solución

mejor consiste en utilizar uno o más buses de expansión. La interfaz del bus de expansión regula las transferencias de datos entre el bus de sistema y los controladores conectados al bus de expansión. Esta disposición permite conectar al sistema una amplia variedad de dispositivos de E/S y, al mismo tiempo, aislar el tráfico de información entre la memoria y el procesador del tráfico correspondiente a las E/S.

A continuación mostramos un esquema de la arquitectura utilizada en el bus tradicional,

también llamada arquitectura de entreplanta: Bus local

Bus del sistema

Bus de expansión 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 situación, ha sido proponer un bus de alta velocidad, que está estrechamente integrado con el resto del sistema, y requiere sólo un adaptador entre el bus del procesador y el bus de alta velocidad.

Procesador Cache

Controlador Local de E/S

Memoria Principal

Red

SCSI Interfaz con el bus de

expansión

Modem Serie

Sistemas de Multiprocesamiento Bus PCI

25

En el esquema siguiente se muestra esta posible solución. 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 conexión al bus de alta velocidad. Este bus permite la conexión de LAN de alta velocidad. Los dispositivos de velocidad menor pueden conectarse al bus de expansión, que utiliza una interfaz para adaptar el tráfico entre el bus de expansión y el bus de alta velocidad. La ventaja de esta organización 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 definición de las líneas de los buses. Los cambios en la arquitectura del procesador no afectan al bus de alta velocidad, y viceversa.

Memoria principal

Procesador

Cache/ adaptador

SCSI FireWire Gráficos Vídeo LAN

FAX Interfaz con el

bus de expansión

Modem Serie

Bus local Bus del sistema

Bus de alta ve locidad

Bus de expansión

Sistemas de Multiprocesamiento Bus PCI

26

3. CARACTERÍSTICAS DEL BUS PCI

Según las características que hemos mencionado en el apartado 2 anterior, el bus PCI

puede definirse como un bus paralelo, multiplexado y síncrono. Estos son algunos datos más precisos sobre sus características:

? Frecuencia de operación: 33 MHz y 66 MHz. ? Velocidad de transferencia: típicamente 33 MHz * 32 bits = 132 MB/s. Se

permite una extensión transparente de 64 bits de los buses de datos y direcciones de 32 bits, que a una frecuencia de 66 MHz darían lugar a 264 MB/s.

? Duradero: independencia del procesador. Idealmente se garantiza una transición de los dispositivos a futuras generaciones de procesadores.

? Configuración automática: mediante un espacio de configuración compuesto por una colección de registros propio de cada dispositivo (“Plug & Play”).

? Capacidad: soporte de varias tarjetas operando concurrentemente sobre el bus. Modo de operación “multi-master”.

? Integridad de datos: el protocolo del bus PCI proporciona control de paridad y chequeo de errores durante las transferencias de datos y direcciones.

3. 1 ESTRUCTURA DEL BUS Como ya hemos comentado en otro apartado, el bus PCI (Peripheral Component Interconnect, <interconexión de componente periférico>) es un bus muy popular, de ancho de banda elevado, independiente del procesador, que se puede utilizar como bus de periféricos o bus para una arquitectura de entreplanta, como la que hemos comentado en un apartado anterior. Comparado con otras especificaciones comunes de bus, el PCI proporciona mejores prestaciones para los subsistemas de E/S de alta velocidad (por ejemplo, los adaptadores de pantalla gráfica, los controladores de interfaz de red, los controladores de disco, etc.). El estándar actual permite el uso de hasta 64 líneas de datos a 66 MHz, para una velocidad de transferencia de 528 Mbytes/s o 4,224 Gbps. Pero no es precisamente su elevada velocidad la que hace atractivo al PCI. El PCI ha sido diseñado específicamente para ajustarse económicamente a los requisitos de E/S de los sistemas actuales; se implementa con muy pocos circuitos integrados, y permite que otros buses se conecten al bus PCI. Intel empezó a trabajar en el PCI en 1990, pensando en sus sistemas basados en el Pentium. Muy pronto, Intel cedió sus patentes al dominio público y promovió la creación de una asociación industrial, la PCI SIG (Special Interest Group), para continuar el desarrollo y mantener la compatibilidad de las especificaciones del PCI. El resultado ha sido que el PCI ha sido ampliamente adoptado, y se está incrementando su uso en los computadores personales, estaciones de trabajo, y servidores de sistema.

Sistemas de Multiprocesamiento Bus PCI

27

El bus PCI puede configurarse como un bus de 32 o 64 bits. En el apartado siguiente podemos ver las diferentes líneas de señal obligatorias que existen en el bus PCI (en total son 49). Las señales 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 líneas para datos y direcciones multiplexadas en el tiempo. Las otras líneas del grupo se utilizan para interpretar y validar las líneas de señal correspondientes a los datos y a las direcciones.

? Terminales de control de la interfaz: controlan la Temporización de las transferencias y proporcionan coordinación entre los que las inician y los destinatarios.

? Terminales de arbitraje: a diferencia de las otras líneas de señal del PCI, éstas no son líneas compartidas. Cada maestro del PCI tiene su par propio de líneas que lo conectan directamente al árbitro del bus PCI.

? Terminales para señales de error: utilizadas para indicar errores de paridad, u otros. ? Terminales de Interrupción: para los dispositivos PCI que deben generar peticiones de

servicio. Igual que los terminales de arbitraje, no son líneas compartidas sino que cada dispositivo PCI tiene su propia línea o líneas de petición de interrupción 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 Ampliación a Bus de 64 bits: incluye 32 líneas multiplexadas en el tiempo para direcciones y datos y se combinan con las líneas obligatorias de dirección y datos para constituir un bus de direcciones y datos de 64 bits. Hay otras líneas de este grupo que se utilizan para interpretar y validar las líneas de datos y direcciones. Por último, hay dos líneas que permiten que dos dispositivos PCI se pongan de acuerdo para usar los 64 bits.

? Terminales de Test (JTAG/Boundary Scan): estas señales se ajustan al estándar IEEE 1149.1 para la definición de procedimientos de test.

Sistemas de Multiprocesamiento Bus PCI

28

3. 2 ORDENES DEL PCI La actividad del bus consiste en transferencias entre dos elementos, denominándose maestro al que inicia la transacción. Cuando un maestro del bus adquiere el control del mismo, determina el tipo de transferencia que se producirá a continuación. Durante la fase de direccionamiento de transferencia, se utilizan las líneas C/BE para indicar el tipo de transferencia. Los tipo de órdenes son:

? Reconocimiento de interrupción ? Ciclo especial ? Lectura de E/S ? Escritura de E/S ? Lectura de memoria ? Lectura de línea de memoria ? Lectura múltiple de memoria ? Escritura en memoria ? Escritura e invalidación de memoria ? Lectura de configuración ? Escritura de configuración ? Ciclo de dirección dual

El reconocimiento de interrupción es una orden de lectura proporcionada por el

dispositivo que actúa como controlador de interrupciones en el bus PCI. Las líneas de direcciones no se utilizan en la fase de direccionamiento, y las líneas de byte activo indican el tamaño del identificador de interrupción a devolver.

La orden de ciclo especial se utiliza para iniciar la difusión de un mensaje a uno o más destinos.

Las órdenes de lectura de E/S y escritura en E/S se utilizan para intercambiar datos entre

el módulo que inicia la transferencia y un controlador de E/S. Cada dispositivo de E/S tiene su propio espacio de direcciones, y las líneas 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 más ciclos de reloj. La interpretación 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 términos de líneas o bloques de caché. La orden de escritura en memoria se utiliza para transferir datos a memoria en uno o más ciclos de datos. La orden de escritura e invalidación de memoria transfiere datos a memoria en uno o más ciclos. Además, indica que se ha escrito en al menos una línea de cache. Esta orden permite el funcionamiento de la cache con posterior escritura en memoria.

Las dos órdenes de configuración permiten que un dispositivo maestro lea y actualice los

parámetros de configuración de un dispositivo conectado al bus PCI. Cada dispositivo PCI puede disponer de hasta 256 registros internos, utilizados para configurar dichos dispositivo durante la inicialización del sistema.

Sistemas de Multiprocesamiento Bus PCI

29

La orden de ciclo de dirección dual se utiliza por el dispositivo que inicia la transferencia para indicar que está utilizando direcciones de 64 bits. 4. DESCRIPCIÓN FUNCIONAL DEL BUS LOCAL PCI El bus PCI requiere un mínimo de 47 señales para operar como esclavo y 49 si opera como maestro para el tratamiento de datos, direcciones, control del interface y funciones del sistema. En la siguiente figura podemos ver las señales del bus PCI agrupadas según su funcionalidad:

A continuación indicamos una descripción de las señales obligatorias en un interfaz con funcionalidad de esclavo.

Sistemas de Multiprocesamiento Bus PCI

30

4.1 SEÑALES DEL SISTEMA

A continuación resumiremos en tablas las líneas de señal obligatorias del bus PCI:

Nombre Tipo Descripción Clk In Reloj del bus

Señalde sincronización de todas las señales, excepto la de inicialización de todos los registros Rsti. Activa con el flanco de subida. Máxima frecuencia 33 MHz y mínima de 0.

Rsti In Reset asíncrono. Pone en un valor conocido a todos los registros y máquinas de estado del sistema:

? Señales de salida al PCI en triestado ? Registros en el valor asignado por defecto ? FSM al estado inactivo

Activa a nivel bajo PciAD[3:0] t/s Datos y direcciones multiplexados.

Las direcciones coinciden con la validación de la señal Framei y los datos con la señal de escritura Irdyi y la de lectura Trdyi

PciCBE[3:0] t/s Línea de comandos e indicación 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 validación de los bytes de datos.

Par t/s Paridad. Bit de control de paridad impar. Puesto por el maestro en las transacciones de escritura y por el esclavo en las de lectura. Señal retrasada un ciclo de la línea PciAD.

Sistemas de Multiprocesamiento Bus PCI

31

4. 2 SEÑALES DE CONTROL DE TRANSACCIONES

Nombre Tipo Descripción Framei s/t/s Transacción activa

Gobernada por el maestro del bus para indicar inicio y duración de una transacción

Irdyi s/t/s Entrada lista Gobierna la transacción sobre el esclavo junto con la señal Trdyi. Una fase de dato sólo tiene lugar cuando ambas señales están validadas. Su activación durante una operación de escritura indica que el bus PciAD tiene datos válidos, en lectura que está preparado para recibir datos. Activa a nivel bajo

Trdyi s/t/s Esclavo listo. Puesta por el esclavo para indicar que está listo. En lectura indica que el bus PciAD tiene datos válidos, en escritura que está listo para recibir datos. Activa a nivel bajo.

Stopi s/t/s Solicitud de parada de transacción. Puesta por el esclavo para solicitar al maestro el final de la transacción en curso Activa a nivel bajo

IdSel In Dispositivo seleccionado Habilitación de dispositivo durante las transferencias de configuración exclusivamente Activa a nivel alto.

DevSeli s/t/s Selector de dispositivo. Informa al maestro que el esclavo direccionado reconoce la dirección. Activa a nivel bajo.

Intai output Línea de interrupciones. Señal asíncrona. Opcional, indica la existencia de una interrupción que debe ser resuelta por el maestro. Activa a nivel bajo.

Perri s/t/s Error de paridad. Señal activada por el agente que recibe los datos dos ciclos después de que se detecte el error de paridad. Activa a nivel bajo.

Serri output Error del sistema. Reporta errores del sistema provocado por error de paridad u otra causa que deteriore la comunicación. Activa a nivel bajo.

REQ t/s Indica al árbitro que el dispositivo correspondiente solicita utilizar el bus. Es una línea punto a punto específica para cada dispositivo.

GNT t/s Indica al dispositivo que el árbitro le ha cedido el acceso al bus. Es una línea punto a punto específica para cada dispositivo.

Sistemas de Multiprocesamiento Bus PCI

32

4. 3 PROTOCOLO DE TRANSACCIONES

La estrategia de control del bus PCI está basada en la asignación de acceso a través de un protocolo de simple petición / concesión, 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 señales de petición y concesión del bus.

El tipo de transacción realizada entre los dispositivos conectados al bus PCI se define

mediante comandos que habilitan las líneas de datos para realizar operaciones de lectura, escritura, configuración, etc... Una transferencia típica se compone de una fase de direccionamiento seguida por una o más fases de datos para permitir una transferencia a ráfaga. Una transacción de lectura o escritura típicamente se inicia con el siguiente protocolo:

Ciclo 1. Fase de direccionamiento. El maestro pone la dirección del dispositivo

deseado y el comando relacionado con la transacción a realizar. Todos los dispositivos conectados al bus registran la dirección, el comando puesto en el bus Cbei [3:0] y el estado de la señal Framei. Comienza la decodificación de la dirección en cada dispositivo.

Ciclo 2. El esclavo direccionado responde a la petición activando la señal DevSeli Ciclo 3 y posteriores. Transferencias de datos gobernadas por las señales Framei, Irdyi

y Trdyi, que según se combinen indican: espera, transferencia de datos o fin de transacción.

Sistemas de Multiprocesamiento Bus PCI

33

Diagramas de tiempo de transacciones de configuración

Sistemas de Multiprocesamiento Bus PCI

34

Diagramas de tiempo en transacciones de acceso a memoria

Sistemas de Multiprocesamiento Bus PCI

35

Ultimo ciclo. Fin de transacción. Antes de liberar el bus para que otro dispositivo

pueda utilizarlo deben ponerse las señales s/t/s a nivel alto y posteriormente en un valor triestado.

La relación temporal entre las distintas señales para casos sencillos de configuración y acceso a memoria puede la hemos podido observar en las gráficas anteriores.

El máximo aprovechamiento de la velocidad de transferencia del bus se alcanza

mediante una transacción en modo a ráfagas (burst mode). En este caso, en primer lugar se envía la dirección base de la transacción y en los siguientes ciclos el esclavo y el maestro las incrementan consecutivamente hasta que el maestro acaba la transacción deshabilitando la señal 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).

4. 4 ESPACIO DE CONFIGURACIÓN DEL INTERFAZ El estándar PCI exige que todos los dispositivos PCI deben implementar 256 Bytes de

espacio de configuración para albergar información relativa a la identificación del dispositivo, habilitación de funcionalidades, reconocimiento del espacio de direcciones y dirección base de los registros. Este espacio se compone de una región predefinida de cabecera (64 Bytes) y otra región dependiente del dispositivo (192 Bytes), parte de la cual es obligatoria. En la siguiente figura se muestra un esquema de la cabecera del espacio de configuración con los registros

obligatorios y optativos del espacio de configuración de un interfaz PCI:

Sistemas de Multiprocesamiento Bus PCI

36

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 señalizar un error de paridad o la velocidad de respuesta del dispositivo por ejemplo, son programadas mediante escritura en dicho registro en tiempo de configuración o implementadas por el propio dispositivo (hardwired).

Un PC al arrancar realiza ciclos de configuración en todos los dispositivos conectados

al bus PCI. Parte de la información presente en el espacio de configuración 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 número y

tamaño 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 leído para determinar si se relaciona

con un espacio de memoria o de entrada / salida y qué tamaño 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 tamaño según se trate de memoria o entrada / salida.

? Posteriormente, el sistema decodifica esta información y escribe en cada BAR la dirección 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 inicialización, tomaremos como ejemplo el paquete de desarrollo S5920DK1 de AMCC, que contiene un chip con funcionalidades PCI. El usuario dispone de hasta 4 módulos de memoria configurables asociados a cada BAR sobre los que se realizarán las operaciones de lectura o escritura. En la siguiente tabla, mostramos un ejemplo del valor de los registros base en tiempo de configuración y el posteriormente asignado por la BIOS para cada región de memoria:

Registro base Tamaño y Tipo Valor asignado en tiempo de

configuración

Valor asignado por la BIOS

BAR0 64 bytes E/S 10E8FFC1 0000FC81

BAR1 8 bytes E/S FFFFFFF9 0000FFF1

BAR2 128 bytes Memoria FFFFFF80 FFFBFF80

BAR3 4 Kb Memoria FFFFF000 FFFBE000

BAR4 Inhabilitado 000000000 -

Sistemas de Multiprocesamiento Bus PCI

37

La dirección preasignada al BAR0 en este caso es confusa porque no se corresponde exactamente con la norma PCI. Esto se debe a las características propias del chip AMCC que emplea el BAR0 para direccionar como espacio de E/S una colección de registros propios de operación y estado. La decodificación del BAR1 y BAR2 es la siguiente:

? BAR1 = FFFFFFF9 ? Espacio de E/S. Primer bit no nulo = 3, por lo que el tamaño solicitado es de 23 = 8 bytes.

? BAR2 = FFFFFF80 ? Espacio de memoria. Primer bit no bulo = 7, por lo que

el tamaño solicitado es de 27 = 128 bytes.

? BAR4 = 00000000 ? Deshabilitado. 4. 5 DIRECCIONAMIENTO PCI define tres espacios físicos de direccionamiento: configuración, entrada / salida y

memoria. Los cuales describiremos a continuación.

4. 5. 1 CONFIGURACIÓN El número de dispositivos que pueden conectarse al bus PCI está limitado a 32. No

obstante, la norma PCI admite la jerarquización de buses incrementándose el número de dispositivos que pueden conectarse. El software de configuración debe ser capaz de realizar transacciones de configuración en todos los dispositivos PCI que residan más allá del puente PCI/host (bridge).

La identificación del bus en una jerarquía se realiza mediante los dos bits de menor

peso del bus PciAD, si PciAD[1:0] = 00 los dispositivos están alojados en el mismo segmento del bus principal que el bridge (transacción de configuración tipo 0); en caso contrario, lo están en un segmento diferente (tipo 1).

Un agente detecta acceso a su espacio de configuración si se activa la señal IDSEL,

detecta una transacción de configuración tipo 0 y además recibe el comando de configuración. En caso contrario la transacción es ignorada.

Sistemas de Multiprocesamiento Bus PCI

38

4. 5. 2 ENTRADA / SALIDA Y MEMORIA

Los acceso a las regiones de memoria o entrada / salida son en principio similares y pasan por una fase previa de comparación entre la dirección puesta en el bus por el maestro y la dirección asignada a cada BAR del esclavo en tiempo de configuración. Si el resultado de la comparación es positivo (hit) el esclavo responderá a operaciones de lectura y escritura a dichas regiones.

Sólo se decodifica la dirección de comienzo del espacio de direcciones (dirección

base), no la dirección exacta a la que se realiza el acceso. Un dispositivo de tamaño grande realiza la decodificación de forma rápida ya que precisa pocos bits para identificarla; si se dispone de más de un BAR es conveniente disponer de varios comparadores en paralelo para responder tan pronto como sea posible a la transacción.

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 detección de paridad par en las líneas de datos (PciAd) y comandos (PciCbe). Para ello se emplea la señal bidireccional Par, las señales de indicación de error Serri (System Error Enable) y Perri (Parity Error Report) y ciertos registros del espacio de configuración que permiten señalizar la detección de fallos en la transmisión.

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 señal Serri (System Error Enable). b) Fase de datos Pueden darse dos casos escritura o lectura. En caso de escritura de configuración o de memoria el proceso es análogo al descrito en la fase de direccionamiento con la salvedad de que si se produce un error en la paridad se activa la señal 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 línea Par. En ambos casos, la señal Par se alimenta un ciclo después de realizada la transmisión 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 señales de indicación de error Perri o Serri se activan un ciclo después de la recepción de la paridad esperada.

Sistemas de Multiprocesamiento Bus PCI

39

4. DISEÑO DE INTERFACES PARA BUS PCI

La adopción de un interfaz de bus PCI para una aplicación dada puede abordarse desde distintas perspectivas atendiendo a requerimientos del sistema global (máxima integración), y sobre todo a coste y tiempo de desarrollo. En la actualidad existen en el mercado diversas opciones para el diseño y puesta a punto de un interfaz PCI: puede elegirse un chip con funcionalidad PCI, un sistema de desarrollo completo o una librería de macroceldas sintetizable (esquemáticos o modelos de alto nivel). Estas opciones presentan facetas diferentes que deben estudiarse para una elección acorde a las necesidades y presupuestos.

5. 1 REQUERIMIENTOS PARA EL DISEÑO DE INTERFACES

PCI

La norma PCI exige el cumplimiento de una serie de requisitos para que un interfaz pueda considerarse 100% compatible PCI. Dichos requisitos están relacionados con la frecuencia de operación, así como el tiempo máximo de presentación y respuesta (set-up y hold) y la mínima carga asociada a determinadas señales del bus. En resumen estas restricciones son las siguientes:

? Frecuencia de operación del bus de 33 MHz sin ciclos de espera ? Tiempo de hold comprendido entre 2 y 11 ns después de una transición en el

reloj (clock-to-output) ? Tiempo máximo de setup de 7 ns (clock-to-input) ? Tiempo máximo de hold-to-system-clock de 0 ns ? Corriente menor a 70 nA ~ 10 pF de carga

En la práctica, estos requerimientos se traducen en las siguientes recomendaciones de diseño:

1. Las señales 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 módulos: el decodificador de direcciones del espacio de configuración, registro de direcciones y los registros de datos para las transferenc ias a memoria o al espacio de configuración. Esto puede representar un alto fan-out para los datos por lo que el retardo de entrada puede superar los 7 ns. La solución consiste en registrar los buses a cada transición del reloj, de manera que se disponga de datos estables durante todo un ciclo de reloj.

2. Las señales de salida deben presentarse entre 2 y 11 ns después de una transición en el reloj. Para satisfaces este requisito, las señales de salida pueden registrarse. Registrar las señales de entrada y salida proporciona control sobre los tiempo en que

estas señales están disponibles pero introducen un ciclo de espera extra. En principio, estos ciclos de espera adicionales pueden ser asumidos por la especificación PCI.

Sistemas de Multiprocesamiento Bus PCI

40

5. 2 SOLUCIONES COMERCIALES 5. 2. 1 ASICs PCI Son circuitos predifundidos con funcionalidades PCI. Admiten cierta programación. El sistema de desarrollo S5920DK1 de AMCC convierte las señales 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.

5. 2. 2 DISPOSITIVOS PROGRAMABLES FPGA Diversas casas constructoras de dispositivos programables como Altera, Ciprés,

QuickLogic o Xilinx disponen de circuitos que admiten las especificaciones de velocidad y área necesaria para albergar un interfaz PCI. En general disponen de opciones para el rutado especial de señales críticas, multiplexado apropiado para determinadas señales y otras técnicas de optimización del diseño para reducir el número de registros.

Algunas de ellas proporcionan sistemas de desarrollo de interfaces PCI en los que

ciertos detalles de implementación están ya previamente definidos. Además facilitan herramientas para la síntesis y verificación de los diseños.

El sistema de desarrollo de Xilinx, Xilinx PCI, incluye dispositivos lógicos

programables FPGA, un completo diseño programable y un interfaz gráfico de usuario. Con ello el usuario sólo tiene que adaptar el diseño del interfaz a sus necesidades rellenando un formulario. A partir de éste se genera la netlist sintetizada del interfaz, ficheros de restricciones para la herramienta de emplazado, modelos de simulación y testbenches adecuados para instanciar en el diseño. Una característica interesante del sistema Xilinx PCI es la posibilidad de cargar el interfaz PCI creado junto con una cierta cantidad de lógica (entre 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 integración.

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 descripción de alto nivel (VHDL) que se le proporciona para adecuarla a sus necesidades. Esta descripción se encarga de realizar la lógica de control, configuración del espacio de registros, temporización, control de paridad y otras funciones asociadas al interfaz PCI. Una vez adaptado el código, basta con sintetizarlo sobre una FPGA de Cypress.

Sistemas de Multiprocesamiento Bus PCI

41

5. 2. 3 LIBRERIAS DE MACROCELDAS PARA ASICs Se puede realizar la implementación del interfaz en tecnología ASIC a partir de un

conjunto de macroceldas configurables como las de LSI Logic. La librería disponible contiene un conjunto de módulos para construir un interfaz completo: máquina de estados (maestro, esclavo), registros de configuración, control de FIFOs, FIFOs e interfaz con PCI.

5. 2. 4 MODELADOS DE ALTO NIVEL, LogiCores Se trata de descripciones de alto nivel (VHDL o C) configurables de componentes

sintetizables para implementar el interfaz en un ASIC o en un dispositivo programable. 5. 3 OTRAS ALTERNATIVAS Mediante lenguajes de descripción de hardware se puede diseñar un interfaz que se

adecue más a unas necesidades específicas, eliminando y añadiendo funciones propias de la aplicación a la que se va a dar servicio.