los buses del pc el bus pci - Departamento de Tecnología Electrónica

Transcripción

los buses del pc el bus pci - Departamento de Tecnología Electrónica
LOS BUSES DEL PC
EL BUS PCI
Sistemas de Multiprocesamiento
Bus PCI
Realizado por:
Belén Martín Muñoz
Melisa Núñez Platero
5º Automática y Electrónica
2
Sistemas de Multiprocesamiento
Bus PCI
INDICE
1. INTRODUCCIÓN 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
1.2 Algo sobre “buses”
1.2.1
1.2.2
1.2.3
1.2.4
1.2.5
1.2.6
El bus tipo ISA
El bus tipo EISA
El bus tipo VESA LOCAL BUS (VLB)
El bus tipo Micro Channel Architecture (MCA)
El bus PCI
El bus AGP
1.3 Algo sobre “puertos”
1.3.1
1.3.2
El puerto paralelo
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
3
Sistemas de Multiprocesamiento
Bus PCI
4. DESCRIPCIÓN FUNCIONAL DEL BUS LOCAL PCI
4. 1
4. 2
4. 3
4. 4
4. 5
Señales del sistema
Señales de control de transacciones
Protocolo de transacciones
Espacio de configuración del interfaz
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
5. 2. 2
5. 2. 3
5. 2. 4
ASICs PCI
Dispositivos programables FPGA
Librerías de macroceldas para ASICs
Modelados de alto nivel, LogiCores
5. 3 Otras alternativas
4
Sistemas de Multiprocesamiento
Bus PCI
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.
5
Sistemas de Multiprocesamiento
Bus PCI
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 (278H27FH)
6
Sistemas de Multiprocesamiento
Bus PCI
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.
7
Sistemas de Multiprocesamiento
Bus PCI
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.
8
Sistemas de Multiprocesamiento
Bus PCI
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,
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 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.
9
Sistemas de Multiprocesamiento
Bus PCI
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:
?
?
?
En la práctica
existentes:
?
?
?
?
?
?
Bus de DATOS
Bus de CONTROL
Bus de DIRECCIONES
podemos encontrar los siguiente estándares 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 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 faxmodem, 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.
11
Sistemas de Multiprocesamiento
Bus PCI
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.
12
Sistemas de Multiprocesamiento
Bus PCI
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.
13
Sistemas de Multiprocesamiento
Bus PCI
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 dir ecciones 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.
14
Sistemas de Multiprocesamiento
Bus PCI
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 MCAfue 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
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 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.
16
Sistemas de Multiprocesamiento
Bus PCI
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.
17
Sistemas de Multiprocesamiento
Bus PCI
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.
18
Sistemas de Multiprocesamiento
Bus PCI
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.
19
Sistemas de Multiprocesamiento
Bus PCI
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.
20
Sistemas de Multiprocesamiento
Bus PCI
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 cone xió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.
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 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
22
Sistemas de Multiprocesamiento
?
?
?
?
Bus PCI
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:
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 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:
Procesador
Cache
Bus local
Controlador
Local de E/S
Memoria
Principal
Bus del sistema
Re
d
SCSI
Interfaz con el
bus de
expansión
Modem
Serie
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.
24
Sistemas de Multiprocesamiento
Bus PCI
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
Bus
local
Procesado
r
SCSI
FireWire
Bus del sistema
Cache/
adaptador
Gráficos
Vídeo
LAN
Bus de alta ve locidad
FAX
Interfaz con el
bus de
expansión
Bus de expansión
25
Modem
Serie
Sistemas de Multiprocesamiento
Bus PCI
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.
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 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.
27
Sistemas de Multiprocesamiento
Bus PCI
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.
28
Sistemas de Multiprocesamiento
Bus PCI
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 al 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.
29
Sistemas de Multiprocesamiento
Bus PCI
4.1 SEÑALES DEL SISTEMA
A continuación resumiremos en tablas las líneas de señal obligatorias del bus PCI:
Nombre
Clk
Tipo
In
Rsti
In
PciAD[3:0]
t/s
PciCBE[3:0]
t/s
Par
t/s
Descripción
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.
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
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
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.
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.
30
Sistemas de Multiprocesamiento
Bus PCI
4. 2 SEÑALES DE CONTROL DE TRANSACCIONES
Nombre
Framei
Tipo
s/t/s
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
Descripción
Transacción activa
Gobernada por el maestro del bus para indicar inicio y duración
de una transacción
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
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.
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
Dispositivo seleccionado
Habilitación de dispositivo durante las transferencias de
configuración exclusivamente
Activa a nivel alto.
Selector de dispositivo.
Informa al maestro que el esclavo direccionado reconoce la
dirección.
Activa a nivel bajo.
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.
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.
Error del sistema.
Reporta errores del sistema provocado por error de paridad u otra
causa que deteriore la comunicación.
Activa a nivel bajo.
Indica al árbitro que el dispositivo correspondiente solicita
utilizar el bus. Es una línea punto a punto específica para cada
dispositivo.
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.
31
Sistemas de Multiprocesamiento
Bus PCI
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.
32
Sistemas de Multiprocesamiento
Bus PCI
Diagramas de tiempo de transacciones de configuración
33
Sistemas de Multiprocesamiento
Bus PCI
Diagramas de tiempo en transacciones de acceso a memoria
34
Sistemas de Multiprocesamiento
Bus PCI
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:
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 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 me moria 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 por
la BIOS
64 bytes E/S
Valor asignado en
tiempo de
configuración
10E8FFC1
BAR0
BAR1
8 bytes E/S
FFFFFFF9
0000FFF1
BAR2
128 bytes Memoria
FFFFFF80
FFFBFF80
BAR3
4 Kb Memoria
FFFFF000
FFFBE000
BAR4
Inhabilitado
000000000
-
36
0000FC81
Sistemas de Multiprocesamiento
Bus PCI
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.
37
Sistemas de Multiprocesamiento
Bus PCI
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.
38
Sistemas de Multiprocesamiento
Bus PCI
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.
39
Sistemas de Multiprocesamiento
Bus PCI
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.
40
Sistemas de Multiprocesamiento
Bus PCI
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.
41

Documentos relacionados