La interconexión de componentes periféricos ( PCI ) [3] es un bus de computadora local para conectar dispositivos de hardware en una computadora y es parte del estándar de bus local PCI. El bus PCI admite las funciones que se encuentran en un bus de procesador, pero en un formato estandarizado que es independiente del bus nativo de cualquier procesador . Los dispositivos conectados al bus PCI le parecen a un bus maestro que están conectados directamente a su propio bus y se les asignan direcciones en el espacio de direcciones del procesador . [4] Es un bus paralelo , síncronoa un solo reloj de bus . Los dispositivos adjuntos pueden tomar la forma de un circuito integrado instalado en la placa base (llamado dispositivo plano en la especificación PCI) o una tarjeta de expansión que encaja en una ranura. El PCI Local Bus se implementó por primera vez en IBM PC compatibles , donde desplazó la combinación de varias ranuras lentas de Arquitectura estándar de la industria (ISA) y una ranura rápida VESA Local Bus (VLB) como configuración del bus. Posteriormente se ha adoptado para otros tipos de ordenadores. Las tarjetas PCI típicas que se utilizan en las PC incluyen: tarjetas de red , tarjetas de sonido , módems , puertos adicionales como bus serie universal ( USB ) o serie , tarjetas sintonizadoras de TV y adaptadores de host de unidad de disco duro . Las tarjetas de video PCI reemplazaron a las tarjetas ISA y VLB hasta que las necesidades de ancho de banda en aumento superaron las capacidades de PCI. La interfaz preferida para las tarjetas de video se convirtió en Puerto de gráficos acelerado (AGP), un superconjunto de PCI, antes de dar paso a PCI Express. [5]
Bus local PCI | |
Año de creación | 22 de junio de 1992 [1] |
---|---|
Creado por | Intel |
Reemplaza | ISA , EISA , MCA , VLB |
Sustituida por | PCI Express (2004) |
Ancho en bits | 32 o 64 |
Velocidad | Half-duplex : [2] 133 MB / s (32 bits a 33 MHz - la configuración estándar) 266 MB / s (32 bits a 66 MHz) 266 MB / s (64 bits a 33 MHz) 533 MB / s (64 bits a 66 MHz) |
Estilo | Paralelo |
Interfaz de conexión en caliente | Opcional |
Sitio web | www .pcisig .com / home |
La primera versión de PCI encontrada en computadoras de escritorio minoristas fue un bus de 32 bits que usaba un reloj de bus de 33 MHz y señalización de 5 V, aunque el estándar PCI 1.0 también proporcionaba una variante de 64 bits . [ aclaración necesaria ] Estos tienen una muesca de localización en la tarjeta. La versión 2.0 del estándar PCI introdujo ranuras de 3.3 V, que se distinguen físicamente por un conector físico volteado para evitar la inserción accidental de tarjetas de 5 V. Las tarjetas universales, que pueden funcionar con cualquier voltaje, tienen dos muescas. La versión 2.1 del estándar PCI introdujo la operación opcional de 66 MHz. Una variante orientada al servidor de PCI, PCI Extended ( PCI-X ) que funciona a frecuencias de hasta 133 MHz para PCI-X 1.0 y hasta 533 MHz para PCI-X 2.0. Un conector interno para tarjetas de portátiles, llamado Mini PCI , se introdujo en la versión 2.2 de la especificación PCI. El bus PCI también se adoptó para un estándar de conector de computadora portátil externo: el CardBus . [6] La primera especificación PCI fue desarrollada por Intel , pero el desarrollo posterior del estándar pasó a ser responsabilidad del Grupo de Interés Especial de PCI ( PCI-SIG ). [7]
PCI y PCI-X a veces se denominan PCI paralela o PCI convencional [8] para distinguirlos tecnológicamente de su sucesor más reciente PCI Express , que adoptó una arquitectura en serie basada en carriles. [9] [10] El apogeo de PCI en el mercado de las computadoras de escritorio fue aproximadamente de 1995 a 2005. [9] PCI y PCI-X se han vuelto obsoletos para la mayoría de los propósitos; sin embargo, en 2020 siguen siendo comunes en las computadoras de escritorio modernas por motivos de compatibilidad con versiones anteriores y el bajo costo relativo de producción. Otra aplicación moderna común de PCI paralela es en PC industriales , donde muchas tarjetas de expansión especializadas, utilizadas aquí, nunca pasaron a PCI Express, al igual que con algunas tarjetas ISA. Muchos tipos de dispositivos que antes estaban disponibles en tarjetas de expansión PCI ahora se integran comúnmente en las placas base o están disponibles en versiones USB y PCI Express.
Historia
El trabajo en PCI comenzó en Intel Architecture Labs (IAL, también Architecture Development Lab) c. 1990 . Un equipo de ingenieros principalmente de IAL definió la arquitectura y desarrolló una plataforma y un conjunto de chips de prueba de concepto (Saturn) en asociación con los equipos de los sistemas de PC de escritorio de la empresa y las organizaciones de productos lógicos centrales.
PCI se puso inmediatamente en uso en servidores, reemplazando la arquitectura Micro Channel (MCA) y la Arquitectura Estándar Extendida de la Industria (EISA) como el bus de expansión de servidor de elección. En las PC convencionales, PCI fue más lento para reemplazar a VLB y no ganó una penetración significativa en el mercado hasta finales de 1994 en las PC Pentium de segunda generación . Para 1996, VLB estaba casi extinto y los fabricantes habían adoptado PCI incluso para las computadoras Intel 80486 (486). [11] EISA siguió utilizándose junto con PCI hasta el año 2000. Apple Computer adoptó PCI para las computadoras Power Macintosh profesionales (reemplazando a NuBus ) a mediados de 1995, y la línea de productos de consumo Performa (reemplazando a LC Processor Direct Slot (PDS)) a mediados de 1996.
Fuera del mercado de servidores, la versión de 64 bits de PCI simple siguió siendo rara en la práctica, [12] aunque fue utilizada, por ejemplo, por todas las computadoras (posteriores a iMac) G3 y G4 Power Macintosh . [13]
Las revisiones posteriores de PCI agregaron nuevas características y mejoras de rendimiento, incluido un estándar de 66 MHz 3.3 V y 133 MHz PCI-X , y la adaptación de la señalización PCI a otros factores de forma. Tanto PCI-X 1.0by PCI-X 2.0 son compatibles con algunos estándares PCI. Estas revisiones se utilizaron en hardware de servidor, pero el hardware de PC de consumo siguió siendo casi todo de 32 bits, 33 MHz y 5 voltios.
El PCI-SIG introdujo el PCI Express en serie en c. 2004 . Desde entonces, los fabricantes de placas base han incluido progresivamente menos ranuras PCI a favor del nuevo estándar. Muchas placas base nuevas no proporcionan ranuras PCI en absoluto, a finales de 2013. [ cita requerida ]
Especificaciones | Año | Resumen de cambios [15] |
---|---|---|
PCI 1.0 | 1992 | Emisión original |
PCI 2.0 | 1993 | Conector incorporado y especificación de tarjeta complementaria |
PCI 2.1 | 1995 | Se incorporaron aclaraciones y se agregó un capítulo de 66 MHz. |
PCI 2.2 | 1998 | ECN incorporados y legibilidad mejorada |
PCI 2.3 | 2002 | Se incorporaron ECN, erratas y se eliminaron tarjetas complementarias de 5 voltios solo con clave |
PCI 3.0 | 2004 | Se eliminó el soporte para el conector de placa del sistema con llave de 5.0 voltios |
Configuración automática
PCI proporciona espacios de direcciones de puertos de E / S asignados en memoria y memoria separados para la familia de procesadores x86 , 64 y 32 bits , respectivamente. Las direcciones en estos espacios de direcciones son asignadas por software. Un tercer espacio de direcciones, denominado PCI Configuration Space , que utiliza un esquema de direccionamiento fijo, permite que el software determine la cantidad de memoria y el espacio de direcciones de E / S que necesita cada dispositivo. Cada dispositivo puede solicitar hasta seis áreas de espacio de memoria o espacio de puerto de entrada / salida (E / S) a través de sus registros de espacio de configuración.
En un sistema típico, el firmware (o sistema operativo ) consulta todos los buses PCI en el momento del inicio (a través del espacio de configuración PCI ) para averiguar qué dispositivos están presentes y qué recursos del sistema (espacio de memoria, espacio de E / S, líneas de interrupción, etc. ) cada uno necesita. Luego asigna los recursos y le dice a cada dispositivo cuál es su asignación.
El espacio de configuración PCI también contiene una pequeña cantidad de información sobre el tipo de dispositivo, lo que ayuda al sistema operativo a elegir los controladores de dispositivo para él, o al menos a tener un diálogo con un usuario sobre la configuración del sistema.
Los dispositivos pueden tener una memoria de solo lectura (ROM) incorporada que contiene código ejecutable para procesadores x86 o PA-RISC , un controlador Open Firmware o una ROM opcional . Por lo general, estos son necesarios para los dispositivos que se utilizan durante el inicio del sistema, antes de que el sistema operativo cargue los controladores de dispositivo.
Además, existen temporizadores de latencia PCI que son un mecanismo para que los dispositivos PCI Bus-Mastering compartan el bus PCI de manera justa. "Regular" en este caso significa que los dispositivos no utilizarán una porción tan grande del ancho de banda del bus PCI disponible que otros dispositivos no puedan realizar el trabajo necesario. Tenga en cuenta que esto no se aplica a PCI Express.
Cómo funciona esto es que cada dispositivo PCI que puede operar en modo bus-maestro debe implementar un temporizador, llamado Temporizador de latencia, que limita el tiempo que el dispositivo puede contener el bus PCI. El temporizador comienza cuando el dispositivo adquiere la propiedad del bus y realiza una cuenta regresiva a la velocidad del reloj PCI. Cuando el contador llega a cero, se requiere que el dispositivo libere el bus. Si no hay otros dispositivos esperando la propiedad del bus, puede simplemente tomar el bus nuevamente y transferir más datos. [dieciséis]
Interrupciones
Los dispositivos deben seguir un protocolo para que las líneas de interrupción se puedan compartir. El bus PCI incluye cuatro líneas de interrupción, todas las cuales están disponibles para cada dispositivo. Sin embargo, no están cableados en paralelo como lo están las otras líneas de bus PCI. Las posiciones de las líneas de interrupción giran entre las ranuras, por lo que lo que aparece en un dispositivo como la línea INTA # es INTB # a la siguiente e INTC # a la siguiente. Los dispositivos de función única usan su INTA # para la señalización de interrupciones, por lo que la carga del dispositivo se distribuye de manera bastante uniforme entre las cuatro líneas de interrupción disponibles. Esto alivia un problema común al compartir interrupciones.
La asignación de líneas de interrupción PCI a líneas de interrupción del sistema, a través del puente de host PCI, depende de la implementación. El código del sistema básico de entrada / salida ( BIOS ) específico de la plataforma está destinado a saber esto y establecer el campo "línea de interrupción" en el espacio de configuración de cada dispositivo que indica a qué IRQ está conectado.
Las líneas de interrupción PCI se activan por nivel . Esto se eligió sobre el disparo por flanco para obtener una ventaja al dar servicio a una línea de interrupción compartida, y por robustez: las interrupciones disparadas por flanco son fáciles de pasar por alto.
Las revisiones posteriores de la especificación PCI agregan soporte para interrupciones señalizadas por mensajes . En este sistema, un dispositivo indica su necesidad de servicio realizando una escritura en la memoria, en lugar de afirmando una línea dedicada. Esto alivia el problema de la escasez de líneas de interrupción. Incluso si los vectores de interrupción todavía se comparten, no sufre los problemas de compartición de las interrupciones activadas por nivel. También resuelve el problema de enrutamiento, porque la escritura en la memoria no se modifica de manera impredecible entre el dispositivo y el host. Finalmente, debido a que la señalización del mensaje está en banda , resuelve algunos problemas de sincronización que pueden ocurrir con escrituras publicadas y líneas de interrupción fuera de banda .
PCI Express no tiene líneas de interrupción física en absoluto. Utiliza exclusivamente interrupciones señalizadas por mensaje.
Especificaciones de hardware convencional
Estas especificaciones representan la versión más común de PCI utilizada en PC normales:
- Reloj de 33,33 MHz con transferencias síncronas
- Tasa de transferencia máxima de 133 MB / s (133 megabytes por segundo) para ancho de bus de 32 bits (33,33 MHz × 32 bits ÷ 8 bits / byte = 133 MB / s)
- Ancho de bus de 32 bits
- Espacio de direcciones de memoria de 32 o 64 bits (4 GiB o 16 EiB )
- Espacio de puerto de E / S de 32 bits
- Espacio de configuración de 256 bytes (por dispositivo)
- Señalización de 5 voltios
- Conmutación de onda reflejada
La especificación PCI también proporciona opciones para señalización de 3.3 V, ancho de bus de 64 bits y reloj de 66 MHz, pero estos no se encuentran comúnmente fuera del soporte PCI-X en placas base de servidor.
El árbitro de bus PCI realiza el arbitraje de bus entre varios maestros en el bus PCI. Cualquier número de maestros de bus puede residir en el bus PCI, así como solicitudes para el bus. Un par de señales de solicitud y concesión se dedica a cada bus maestro.
Tensión y codificación de la tarjeta
Las tarjetas PCI típicas tienen una o dos muescas clave, dependiendo de su voltaje de señalización. Las tarjetas que requieren 3.3 voltios tienen una muesca de 56.21 mm desde la placa posterior de la tarjeta; los que requieren 5 voltios tienen una muesca de 104,47 mm desde la placa posterior. Esto permite que las tarjetas se instalen solo en ranuras con un voltaje que admitan. Las "tarjetas universales" que aceptan cualquier voltaje tienen ambas muescas clave.
Pinout del conector
El conector PCI se define por tener 62 contactos en cada lado del conector de borde , pero dos o cuatro de ellos se reemplazan por muescas clave, por lo que una tarjeta tiene 60 o 58 contactos en cada lado. El lado A se refiere al 'lado de la soldadura' y el lado B se refiere al 'lado del componente': si la tarjeta se sostiene con el conector apuntando hacia abajo, una vista del lado A tendrá la placa posterior a la derecha, mientras que una vista del lado B tendrá la placa posterior a la izquierda. Los pines de los lados B y A son los siguientes, mirando hacia abajo en el conector de la placa base (los pines A1 y B1 son los más cercanos a la placa posterior). [15] [17] [18]
Alfiler | Lado B | Lado a | Comentarios | ||
---|---|---|---|---|---|
1 | −12 V | TRST # | Pines de puerto JTAG (opcional) | ||
2 | TCK | +12 V | |||
3 | Suelo | TMS | |||
4 | TDO | TDI | |||
5 | +5 V | +5 V | |||
6 | +5 V | INTA # | Interrumpir líneas (drenaje abierto) | ||
7 | INTB # | INTC # | |||
8 | INTD # | +5 V | |||
9 | PRSNT1 # | Reservado | Tirado bajo para indicar 7.5 o 25 W de potencia requerida | ||
10 | Reservado | IOPWR | +5 V o +3,3 V | ||
11 | PRSNT2 # | Reservado | Tirado bajo para indicar 7.5 o 15 W de potencia requerida | ||
12 | Suelo | Suelo | Muesca de llave para tarjetas con capacidad 3.3 V | ||
13 | Suelo | Suelo | |||
14 | Reservado | 3,3 V auxiliar | Energía en espera (opcional) | ||
15 | Suelo | RST # | Restablecimiento de bus | ||
dieciséis | CLK | IOPWR | Reloj de 33/66 MHz | ||
17 | Suelo | GNT # | Subvención de bus de la placa base a la tarjeta | ||
18 | REQ # | Suelo | Solicitud de bus de la tarjeta a la placa base | ||
19 | IOPWR | PME # | Evento de administración de energía (opcional) 3.3 V, drenaje abierto, activo bajo. [19] | ||
20 | AD [31] | AD [30] | Bus de dirección / datos (mitad superior) | ||
21 | AD [29] | +3,3 V | |||
22 | Suelo | AD [28] | |||
23 | AD [27] | AD [26] | |||
24 | AD [25] | Suelo | |||
25 | +3,3 V | AD [24] | |||
26 | C / BE [3] # | IDSEL | |||
27 | AD [23] | +3,3 V | |||
28 | Suelo | AD [22] | |||
29 | AD [21] | AD [20] | |||
30 | AD [19] | Suelo | |||
31 | +3,3 V | AD [18] | |||
32 | AD [17] | AD [16] | |||
33 | C / BE [2] # | +3,3 V | |||
34 | Suelo | MARCO# | Transferencia de bus en curso | ||
35 | IRDY # | Suelo | Iniciador listo | ||
36 | +3,3 V | TRDY # | Objetivo listo | ||
37 | DEVSEL # | Suelo | Objetivo seleccionado | ||
38 | PCIXCAP | Suelo | DETENER# | Compatible con PCI-X ; Detención de solicitudes de destino | |
39 | CERRAR CON LLAVE# | +3,3 V | Transacción bloqueada | ||
40 | PERR # | SMBCLK | SDONE | Error de paridad; Reloj SMBus o Snoop hecho (obsoleto) | |
41 | +3,3 V | SMBDAT | SBO # | Datos de SMBus o retirada de Snoop (obsoleto) | |
42 | SERR # | Suelo | Error del sistema | ||
43 | +3,3 V | PAR | Paridad uniforme sobre AD [31:00] y C / BE [3: 0] # | ||
44 | C / BE [1] # | AD [15] | Bus de dirección / datos (mitad superior) | ||
45 | AD [14] | +3,3 V | |||
46 | Suelo | AD [13] | |||
47 | AD [12] | AD [11] | |||
48 | AD [10] | Suelo | |||
49 | M66EN | Suelo | AD [09] | ||
50 | Suelo | Suelo | Muesca de llave para 5 tarjetas con capacidad V | ||
51 | Suelo | Suelo | |||
52 | AD [08] | C / BE [0] # | Bus de dirección / datos (mitad inferior) | ||
53 | AD [07] | +3,3 V | |||
54 | +3,3 V | AD [06] | |||
55 | AD [05] | AD [04] | |||
56 | AD [03] | Suelo | |||
57 | Suelo | AD [02] | |||
58 | AD [01] | AD [00] | |||
59 | IOPWR | IOPWR | |||
60 | ACK64 # | REQ64 # | Para extensión de 64 bits; sin conexión para dispositivos de 32 bits. | ||
61 | +5 V | +5 V | |||
62 | +5 V | +5 V |
PCI de 64 bits amplía esto con 32 contactos adicionales en cada lado que proporcionan AD [63:32], C / BE [7: 4] #, la señal de paridad PAR64 y varios pines de alimentación y tierra.
Pin de tierra | Referencia de cero voltios |
---|---|
Pin de alimentación | Suministra energía a la tarjeta PCI |
Pin de salida | Impulsado por la tarjeta PCI, recibido por la placa base |
Salida del iniciador | Impulsado por el maestro / iniciador, recibido por el objetivo |
Señal de E / S | Puede ser impulsado por el iniciador o el objetivo, según la operación |
Salida de destino | Impulsado por el objetivo, recibido por el iniciador / maestro |
Aporte | Impulsado por la placa base, recibido por la tarjeta PCI |
Drenaje abierto | Puede ser tirado hacia abajo y / o detectado por múltiples tarjetas. |
Reservado | No se usa actualmente, no lo conecte |
La mayoría de las líneas están conectadas a cada ranura en paralelo. Las excepciones son:
- Cada ranura tiene su propia salida REQ # y entrada GNT # desde el árbitro de la placa base.
- Cada ranura tiene su propia línea IDSEL, generalmente conectada a una línea AD específica.
- TDO está conectado en cadena al TDI de la siguiente ranura. Las tarjetas sin soporte JTAG deben conectar TDI a TDO para no romper la cadena.
- PRSNT1 # y PRSNT2 # para cada ranura tienen sus propias resistencias pull-up en la placa base. La placa base puede (pero no tiene que hacerlo) detectar estos pines para determinar la presencia de tarjetas PCI y sus requisitos de alimentación.
- REQ64 # y ACK64 # se extraen individualmente en ranuras de solo 32 bits.
- Las líneas de interrupción INTA # a INTD # están conectadas a todas las ranuras en diferentes órdenes. (INTA # en una ranura es INTB # en la siguiente e INTC # en la siguiente).
Notas:
- IOPWR es +3,3 V o +5 V, según el panel posterior. Las ranuras también tienen un reborde en uno de los dos lugares que evita la inserción de tarjetas que no tienen la muesca correspondiente, lo que indica soporte para ese estándar de voltaje. Las tarjetas universales tienen muescas clave y usan IOPWR para determinar sus niveles de señal de E / S.
- PCI SIG recomienda encarecidamente la señalización PCI de 3,3 V, [15] que requiere soporte desde la revisión estándar 2.3, [17] pero la mayoría de las placas base de PC utilizan la variante de 5 V. Por lo tanto, aunque muchas tarjetas PCI actualmente disponibles admiten ambos y tienen dos muescas clave para indicarlo, todavía hay una gran cantidad de tarjetas de 5 V en el mercado.
- El pin M66EN es una conexión a tierra adicional en los buses PCI de 5 V que se encuentran en la mayoría de las placas base de PC. Las tarjetas y placas base que no admiten el funcionamiento a 66 MHz también conectan a tierra este pin. Si todos los participantes admiten la operación de 66 MHz, una resistencia pull-up en la placa base eleva esta señal y se habilita la operación de 66 MHz. El pin todavía está conectado a tierra a través de condensadores de acoplamiento en cada tarjeta para preservar su función de blindaje de CA.
- El pin PCIXCAP es una conexión a tierra adicional en los buses y tarjetas PCI. Si todas las tarjetas y la placa base admiten el protocolo PCI-X , una resistencia pull-up en la placa base eleva esta señal y se habilita la operación PCI-X. El pin todavía está conectado a tierra a través de condensadores de acoplamiento en cada tarjeta para preservar su función de blindaje de CA.
- La tarjeta debe conectar a tierra al menos uno de PRSNT1 # y PRSNT2 #. La combinación elegida indica los requisitos de potencia total de la tarjeta (25 W, 15 W o 7,5 W).
- SBO # y SDONE son señales de un controlador de caché al objetivo actual. No son salidas de iniciador, pero están coloreadas de esa manera porque son entradas de destino.
- PME # ( 19 A ): evento de administración de energía (opcional) que es compatible con PCI versión 2.2 y superior. Es un 3,3 V , drenaje abierto , señal de baja activa. [19] Las tarjetas PCI pueden usar esta señal para enviar y recibir PME a través del zócalo PCI directamente, lo que elimina la necesidad de un cable Wake-on-LAN especial . [20]
Mezcla de tarjetas PCI de 32 y 64 bits en ranuras de diferentes anchos
La mayoría de las tarjetas PCI de 32 bits funcionarán correctamente en las ranuras PCI-X de 64 bits, pero la frecuencia de reloj del bus se limitará a la frecuencia de reloj de la tarjeta más lenta, una limitación inherente de la topología de bus compartido de PCI. Por ejemplo, cuando se instala un periférico PCI 2.3 de 66 MHz en un bus PCI-X con capacidad de 133 MHz, todo el panel posterior del bus se limitará a 66 MHz. Para sortear esta limitación, muchas placas base tienen dos o más buses PCI / PCI-X, con un bus diseñado para usar con periféricos PCI-X de alta velocidad y el otro bus diseñado para periféricos de uso general.
Muchas tarjetas PCI-X de 64 bits están diseñadas para funcionar en modo de 32 bits si se insertan en conectores más cortos de 32 bits, con cierta pérdida de rendimiento. [21] [22] Un ejemplo de esto es la tarjeta de interfaz SCSI de 64 bits Adaptec 29160 . [23] Sin embargo, algunas tarjetas PCI-X de 64 bits no funcionan en ranuras PCI estándar de 32 bits. [24]
La instalación de una tarjeta PCI-X de 64 bits en una ranura de 32 bits dejará la parte de 64 bits del conector del borde de la tarjeta sin conectar y sobresaliendo. Esto requiere que no haya componentes de la placa base colocados de manera que obstruyan mecánicamente la parte sobresaliente del conector del borde de la tarjeta.
Dimensiones físicas
Alturas de los soportes PCI:
- Estándar: 120,02 mm; [25]
- Perfil bajo: 79,20 mm. [26]
Longitudes de la tarjeta PCI (soporte estándar y 3,3 V): [27]
- Tarjeta corta: 169,52 mm;
- Cartulina larga: 313,78 mm.
Longitudes de la tarjeta PCI (soporte de perfil bajo y 3,3 V): [28]
- MD1: 121,79 mm;
- MD2: 169,52 mm;
- MD3: 243,18 mm.
Un soporte de altura completa
Uno de bajo perfil
Mini PCI
Mini PCI se agregó a PCI versión 2.2 para su uso en computadoras portátiles ; utiliza un bus de 32 bits y 33 MHz con conexiones alimentadas (solo 3,3 V; 5 V está limitado a 100 mA) y admite bus masterizado y DMA . El tamaño estándar de las tarjetas Mini PCI es aproximadamente una cuarta parte de sus equivalentes de tamaño completo. No hay acceso a la tarjeta desde fuera de la caja, a diferencia de las tarjetas PCI de escritorio con soportes que llevan conectores. Esto limita los tipos de funciones que puede realizar una tarjeta Mini PCI.
Se desarrollaron muchos dispositivos Mini PCI como Wi-Fi , Fast Ethernet , Bluetooth , módems (a menudo Winmodems ), tarjetas de sonido , aceleradores criptográficos , SCSI , IDE - ATA , controladores SATA y tarjetas combinadas. Las tarjetas Mini PCI se pueden utilizar con hardware normal equipado con PCI, utilizando convertidores Mini PCI a PCI . Mini PCI ha sido reemplazado por la mini tarjeta PCI Express mucho más estrecha
Detalles técnicos de Mini PCI
Las minitarjetas PCI tienen un consumo máximo de energía de 2 W, lo que limita la funcionalidad que se puede implementar en este factor de forma. También son necesarios para admitir la señal CLKRUN # PCI utilizada para iniciar y detener el reloj PCI con fines de administración de energía.
Hay tres factores de forma de tarjeta : tarjetas Tipo I, Tipo II y Tipo III. El conector de tarjeta utilizado para cada tipo incluye: Los tipos I y II usan un conector apilable de 100 pines, mientras que el Tipo III usa un conector de borde de 124 pines, es decir, el conector para los Tipos I y II es diferente al del Tipo III, donde el conector está en el borde de una tarjeta, como con un SO-DIMM . Los 24 pines adicionales proporcionan las señales adicionales necesarias para enrutar las E / S a través del conector del sistema (audio, AC-Link , LAN , interfaz de línea telefónica). Las tarjetas de tipo II tienen conectores montados RJ11 y RJ45. Estas tarjetas deben ubicarse en el borde de la computadora o estación de acoplamiento para que los puertos RJ11 y RJ45 se puedan montar para acceso externo.
Tipo | Tarjeta en el borde exterior del sistema host | Conector | Tamaño (mm × mm × mm) | comentarios |
---|---|---|---|---|
I A | No | Apilamiento de 100 pines | 7.5 × 70 × 45 | Gran dimensión Z (7,5 mm) |
IB | 5.5 × 70 × 45 | Dimensión Z más pequeña (5,5 mm) | ||
IIA | sí | 17.44 × 70 | × 45Gran dimensión Z (17,44 mm) | |
IIB | 5.5 × 78 × 45 | Dimensión Z más pequeña (5,5 mm) | ||
IIIA | No | Borde de tarjeta de 124 pines | 2,4 × 59,6 × 50,95 | Dimensión Y más grande (50,95 mm) |
IIIB | 2,4 × 59,6 × 44,6 | Dimensión Y más pequeña (44,6 mm) |
Mini PCI es distinto del Micro PCI de 144 pines. [29]
Transacciones de bus PCI
El tráfico de bus PCI consta de una serie de transacciones de bus PCI. Cada transacción consta de una fase de dirección seguida de una o más fases de datos . La dirección de las fases de datos puede ser del iniciador al objetivo (transacción de escritura) o viceversa (transacción de lectura), pero todas las fases de datos deben estar en la misma dirección. Cualquiera de las partes puede pausar o detener las fases de datos en cualquier momento. (Un ejemplo común es un dispositivo PCI de bajo rendimiento que no admite transacciones en ráfagas y siempre detiene una transacción después de la primera fase de datos).
Cualquier dispositivo PCI puede iniciar una transacción. Primero, debe solicitar permiso a un árbitro de bus PCI en la placa base. El árbitro concede permiso a uno de los dispositivos solicitantes. El iniciador comienza la fase de dirección transmitiendo una dirección de 32 bits más un código de comando de 4 bits , luego espera a que responda un objetivo. Todos los demás dispositivos examinan esta dirección y uno de ellos responde unos ciclos más tarde.
El direccionamiento de 64 bits se realiza mediante una fase de dirección de dos etapas. El iniciador transmite los 32 bits de dirección bajos, acompañados de un código de comando especial de "ciclo de dirección dual". Los dispositivos que no admiten el direccionamiento de 64 bits simplemente no pueden responder a ese código de comando. El siguiente ciclo, el iniciador transmite los 32 bits de dirección más altos, más el código de comando real. La transacción opera de manera idéntica a partir de ese momento. Para garantizar la compatibilidad con dispositivos PCI de 32 bits, está prohibido utilizar un ciclo de dirección dual si no es necesario, es decir, si los bits de dirección de orden superior son todos cero.
Mientras que el bus PCI transfiere 32 bits por fase de datos, el iniciador transmite 4 señales de habilitación de bytes activos bajos que indican qué bytes de 8 bits deben considerarse significativos. En particular, una escritura debe afectar solo a los bytes habilitados en el dispositivo PCI de destino. Son de poca importancia para las lecturas de memoria, pero las lecturas de E / S pueden tener efectos secundarios. El estándar PCI permite explícitamente una fase de datos sin bytes habilitados, que debe comportarse como una no operativa.
Espacios de direcciones PCI
PCI tiene tres espacios de direcciones: memoria, dirección de E / S y configuración.
Las direcciones de memoria tienen un tamaño de 32 bits (opcionalmente 64 bits), admiten el almacenamiento en caché y pueden ser transacciones en ráfagas.
Las direcciones de E / S son para compatibilidad con el espacio de direcciones del puerto de E / S de la arquitectura Intel x86 . Aunque la especificación del bus PCI permite transacciones en ráfagas en cualquier espacio de direcciones, la mayoría de los dispositivos solo lo admiten para direcciones de memoria y no para E / S.
Finalmente, el espacio de configuración PCI proporciona acceso a 256 bytes de registros de configuración especiales por dispositivo PCI. Cada ranura PCI tiene su propio rango de direcciones de espacio de configuración. Los registros se utilizan para configurar la memoria de los dispositivos y los rangos de direcciones de E / S a los que deben responder desde los iniciadores de transacciones. Cuando una computadora se enciende por primera vez, todos los dispositivos PCI responden solo a sus accesos al espacio de configuración. El BIOS de la computadora busca dispositivos y les asigna rangos de direcciones de E / S y memoria.
Si ningún dispositivo reclama una dirección, la fase de dirección del iniciador de la transacción expirará, lo que provocará que el iniciador anule la operación. En el caso de lecturas, se acostumbra proporcionar todos unos para el valor de datos leídos (0xFFFFFFFF) en este caso. Por lo tanto, los dispositivos PCI generalmente intentan evitar el uso del valor de todos unos en registros de estado importantes, de modo que el software pueda detectar fácilmente un error de este tipo.
Códigos de comando PCI
Hay 16 códigos de comando de 4 bits posibles y 12 de ellos están asignados. Con la excepción del ciclo de dirección dual único, el bit menos significativo del código de comando indica si las siguientes fases de datos son una lectura (datos enviados desde el objetivo al iniciador) o una escritura (datos enviados desde un iniciador al objetivo). Los destinos PCI deben examinar el código de comando así como la dirección y no responder a las fases de dirección que especifican un código de comando no admitido.
Los comandos que hacen referencia a las líneas de caché dependen de que el registro de tamaño de línea de caché del espacio de configuración PCI esté configurado correctamente; no se pueden utilizar hasta que se haya hecho.
- 0000: Reconocimiento de interrupción
- Esta es una forma especial de ciclo de lectura dirigida implícitamente al controlador de interrupciones, que devuelve un vector de interrupciones. El campo de dirección de 32 bits se ignora. Una posible implementación es generar un ciclo de reconocimiento de interrupciones en un bus ISA utilizando un puente de bus PCI / ISA. Este comando es para compatibilidad con IBM PC ; Si no hay un controlador de interrupción de estilo Intel 8259 en el bus PCI, no es necesario utilizar este ciclo.
- 0001: ciclo especial
- Este ciclo es una escritura de difusión especial de eventos del sistema que puede interesar a la tarjeta PCI. El campo de dirección de un ciclo especial se ignora, pero va seguido de una fase de datos que contiene un mensaje de carga útil. Los mensajes definidos actualmente anuncian que el procesador se detiene por alguna razón (por ejemplo, para ahorrar energía). Ningún dispositivo responde nunca a este ciclo; siempre se termina con un aborto maestro después de dejar los datos en el bus durante al menos 4 ciclos.
- 0010: lectura de E / S
- Esto realiza una lectura del espacio de E / S. Se proporcionan los 32 bits de la dirección de lectura, por lo que un dispositivo puede (por razones de compatibilidad) implementar menos de 4 bytes de registros de E / S. Si el byte habilita los datos de solicitud que no están dentro del rango de direcciones admitido por el dispositivo PCI (por ejemplo, una lectura de 4 bytes de un dispositivo que solo admite 2 bytes de espacio de direcciones de E / S), debe terminarse con un aborto de destino. Se permiten múltiples ciclos de datos, utilizando un orden de ráfagas lineal (incrementos simples).
- El estándar PCI desalienta el uso de espacio de E / S en dispositivos nuevos, y prefiere que se haga todo lo posible a través del mapeo de la memoria principal.
- 0011: Escritura de E / S
- Esto realiza una escritura en el espacio de E / S.
- 010 x : reservado
- Un dispositivo PCI no debe responder a un ciclo de dirección con estos códigos de comando.
- 0110: Lectura de memoria
- Esto realiza un ciclo de lectura desde el espacio de la memoria. Debido a que el espacio de memoria más pequeño que se le permite implementar a un dispositivo PCI es de 16 bytes, [17] [15] : §6.5.2.1 los dos bits menos significativos de la dirección no son necesarios durante la fase de dirección; llegará información equivalente durante las fases de datos en forma de señales de selección de bytes. En su lugar, especifican el orden en el que deben devolverse los datos de ráfaga. [17] [15] : §3.2.2.2 Si un dispositivo no admite el pedido solicitado, debe proporcionar la primera palabra y luego desconectarse.
- Si un espacio de memoria está marcado como "prefetchable", entonces el dispositivo de destino debe ignorar las señales de selección de bytes en una lectura de memoria y siempre devolver 32 bits válidos.
- 0111: escritura en memoria
- Esto funciona de manera similar a una lectura de memoria. Las señales de selección de bytes son más importantes en una escritura, ya que los bytes no seleccionados no deben escribirse en la memoria.
- Generalmente, las escrituras PCI son más rápidas que las lecturas PCI, porque un dispositivo puede almacenar en búfer los datos de escritura entrantes y liberar el bus más rápidamente. Para una lectura, debe retrasar la fase de datos hasta que se hayan recuperado.
- 100 x : reservado
- Un dispositivo PCI no debe responder a un ciclo de dirección con estos códigos de comando.
- 1010: Lectura de configuración
- Esto es similar a una lectura de E / S, pero lee desde el espacio de configuración PCI. Un dispositivo debe responder solo si los 11 bits bajos de la dirección especifican una función y un registro que implementa, y si se afirma la señal IDSEL especial. Debe ignorar los 21 bits altos. Las lecturas en ráfaga (utilizando incrementos lineales) están permitidas en el espacio de configuración PCI.
- A diferencia del espacio de E / S, los registros de configuración PCI estándar se definen para que las lecturas nunca alteren el estado del dispositivo. Es posible que un dispositivo tenga registros de espacio de configuración más allá de los 64 bytes estándar que tienen efectos secundarios de lectura, pero esto es raro. [30]
- Los accesos al espacio de configuración a menudo tienen algunos ciclos de retraso para permitir que las líneas IDSEL se estabilicen, lo que las hace más lentas que otras formas de acceso. Además, un acceso al espacio de configuración requiere una operación de varios pasos en lugar de una sola instrucción de máquina. Por lo tanto, es mejor evitarlos durante el funcionamiento rutinario de un dispositivo PCI.
- 1011: Escritura de configuración
- Esto funciona de forma análoga a una lectura de configuración.
- 1100: lectura de memoria múltiple
- Este comando es idéntico al leer una memoria genérica, sino que incluye la insinuación de que una ráfaga larga de lectura continuará más allá del final de la línea de caché actual, y el objetivo debe internamente precargar una gran cantidad de datos. Un objetivo siempre puede considerar esto como un sinónimo de una lectura de memoria genérica.
- 1101: ciclo de dirección dual
- Al acceder a una dirección de memoria que requiere más de 32 bits para representar, la fase de dirección comienza con este comando y los 32 bits bajos de la dirección, seguida de un segundo ciclo con el comando real y los 32 bits altos de la dirección. Los destinos PCI que no admiten el direccionamiento de 64 bits pueden simplemente tratar esto como otro código de comando reservado y no responder a él. Este código de comando solo se puede utilizar con una palabra de dirección de orden superior distinta de cero; Está prohibido utilizar este ciclo si no es necesario.
- 1110: Línea de lectura de memoria
- Este comando es idéntico a una lectura de memoria genérica, pero incluye la sugerencia de que la lectura continuará hasta el final de la línea de caché. Un objetivo siempre puede considerar esto como un sinónimo de una lectura de memoria genérica.
- 1111: escritura e invalidación de memoria
- Este comando es idéntico a una escritura de memoria genérica, pero viene con la garantía de que se escribirán una o más líneas de caché completas, con todas las selecciones de bytes habilitadas. Esta es una optimización para cachés de escritura diferida que espían el bus. Normalmente, una caché de escritura diferida que contiene datos sucios debe interrumpir la operación de escritura el tiempo suficiente para escribir sus propios datos sucios primero. Si la escritura se realiza mediante este comando, se garantiza que los datos que se van a escribir son irrelevantes y pueden simplemente invalidarse en la memoria caché de escritura diferida.
- Esta optimización solo afecta a la caché de espionaje y no hace ninguna diferencia para el objetivo, que puede tratar esto como un sinónimo del comando de escritura en memoria.
Latencia del bus PCI
Poco después de la promulgación de la especificación PCI, se descubrió que las transacciones prolongadas de algunos dispositivos, debido a reconocimientos lentos, ráfagas de datos prolongadas o alguna combinación, podrían causar una insuficiencia o saturación del búfer en otros dispositivos. Las recomendaciones sobre el calendario de las fases individuales en la Revisión 2.0 se hicieron obligatorias en la revisión 2.1: [31] : 3
- Un objetivo debe poder completar la fase de datos inicial (afirmar TRDY # y / o STOP #) dentro de los 16 ciclos del inicio de una transacción.
- Un iniciador debe completar cada fase de datos (afirmar IRDY #) dentro de 8 ciclos.
Además, a partir de la revisión 2.1, todos los iniciadores capaces de generar más de dos fases de datos deben implementar un temporizador de latencia programable. El temporizador comienza a contar los ciclos del reloj cuando se inicia una transacción (el iniciador afirma FRAME #). Si el temporizador ha expirado y el árbitro ha eliminado GNT #, entonces el iniciador debe terminar la transacción en la próxima oportunidad legal. Esta suele ser la siguiente fase de datos, pero las transacciones de escritura en memoria e invalidación deben continuar hasta el final de la línea de caché.
Transacciones retrasadas
Los dispositivos que no pueden cumplir con esas restricciones de tiempo deben usar una combinación de escrituras publicadas (para escrituras de memoria) y transacciones retrasadas (para otras escrituras y todas las lecturas). En una transacción retrasada, el objetivo registra la transacción (incluidos los datos de escritura) internamente y aborta (afirma STOP # en lugar de TRDY #) la primera fase de datos. El iniciador debe volver a intentar exactamente la misma transacción más tarde. Mientras tanto, el objetivo realiza internamente la transacción y espera la transacción reintentada. Cuando se ve la transacción reintentada, se entrega el resultado almacenado en búfer.
Un dispositivo puede ser el objetivo de otras transacciones mientras se completa una transacción retrasada; debe recordar el tipo de transacción, la dirección, la selección de bytes y (si es un escrito) el valor de los datos, y solo completar la transacción correcta.
Si el objetivo tiene un límite en la cantidad de transacciones retrasadas que puede registrar internamente (los objetivos simples pueden imponer un límite de 1), obligará a esas transacciones a reintentar sin registrarlas. Se tratarán cuando se complete la transacción retrasada actual. Si dos iniciadores intentan la misma transacción, una transacción retrasada iniciada por uno puede tener su resultado entregado al otro; esto es inofensivo.
Un objetivo abandona una transacción retrasada cuando un reintento logra entregar el resultado almacenado en búfer, el bus se restablece o cuando transcurren 2 15 = 32768 ciclos de reloj (aproximadamente 1 ms) sin ver un reintento. Esto último nunca debería suceder en el funcionamiento normal, pero evita un bloqueo de todo el bus si un iniciador se reinicia o falla.
Puentes de bus PCI
El estándar PCI permite conectar múltiples buses PCI independientes mediante puentes de bus que reenviarán las operaciones de un bus a otro cuando sea necesario. Aunque PCI tiende a no utilizar muchos puentes de bus, los sistemas PCI Express utilizan muchos puentes de PCI a PCI denominados puerto raíz PCI Express ; cada ranura PCI Express parece ser un bus independiente, conectado por un puente a las demás. El puente de host PCI (generalmente el puente norte en plataformas x86) se interconecta entre la CPU, la memoria principal y el bus PCI. [32]
Escritos publicados
Generalmente, cuando un puente de bus ve una transacción en un bus que debe reenviarse al otro, la transacción original debe esperar hasta que la transacción reenviada se complete antes de que el resultado esté listo. Se produce una excepción notable en el caso de las escrituras de memoria. Aquí, el puente puede registrar los datos de escritura internamente (si tiene espacio) y señalar la finalización de la escritura antes de que se complete la escritura reenviada. O, de hecho, antes de que haya comenzado. Tales escrituras "enviadas pero aún no recibidas" se denominan "escrituras enviadas", por analogía con un mensaje de correo postal. Aunque ofrecen una gran oportunidad para mejorar el rendimiento, las reglas que rigen lo que está permitido son algo intrincadas. [33]
Combinar, fusionar y colapsar
El estándar PCI permite que los puentes de bus conviertan múltiples transacciones de bus en una transacción más grande en determinadas situaciones. Esto puede mejorar la eficiencia del bus PCI.
- Combinatorio
- Las transacciones de escritura a direcciones consecutivas se pueden combinar en una escritura en ráfaga más larga, siempre que el orden de los accesos en la ráfaga sea el mismo que el orden de las escrituras originales. Está permitido insertar fases de datos adicionales con todas las habilitaciones de bytes desactivadas si las escrituras son casi consecutivas.
- Fusión
- Múltiples escrituras en porciones disjuntas de la misma palabra se pueden fusionar en una sola escritura con habilitaciones de múltiples bytes afirmadas. En este caso, las escrituras que se presentaron al puente de bus en un orden particular se fusionan para que ocurran al mismo tiempo cuando se reenvían.
- Colapsando
- Es posible que no se combinen varias escrituras en el mismo byte o bytes , por ejemplo, realizando solo la segunda escritura y omitiendo la primera escritura que se sobrescribió. Esto se debe a que la especificación PCI permite que las escrituras tengan efectos secundarios.
Señales de bus PCI
Las transacciones de bus PCI están controladas por cinco señales de control principales, dos controladas por el iniciador de una transacción (FRAME # e IRDY #) y tres controladas por el objetivo (DEVSEL #, TRDY # y STOP #). Hay dos señales de arbitraje adicionales (REQ # y GNT #) que se utilizan para obtener permiso para iniciar una transacción. Todos son activos bajos , lo que significa que el estado activo o afirmado es un voltaje bajo . Las resistencias pull-up en la placa base aseguran que permanecerán altas (inactivas o desaplicadas ) si no son impulsadas por ningún dispositivo, pero el bus PCI no depende de las resistencias para cambiar el nivel de la señal; todos los dispositivos elevan las señales durante un ciclo antes de dejar de impulsar las señales.
Tiempo de señal
Todas las señales del bus PCI se muestrean en el flanco ascendente del reloj. Las señales cambian nominalmente en el borde descendente del reloj, lo que le da a cada dispositivo PCI aproximadamente medio ciclo de reloj para decidir cómo responder a las señales que observó en el borde ascendente y medio ciclo de reloj para transmitir su respuesta al otro dispositivo. .
El bus PCI requiere que cada vez que cambia el dispositivo que maneja una señal de bus PCI, debe transcurrir un ciclo de respuesta entre el momento en que un dispositivo deja de transmitir la señal y el otro dispositivo se inicia. Sin esto, podría haber un período en el que ambos dispositivos estuvieran transmitiendo la señal, lo que interferiría con el funcionamiento del bus.
La combinación de este ciclo de cambio y el requisito de conducir una línea de control alta durante un ciclo antes de dejar de conducir significa que cada una de las líneas de control principales debe estar alta durante un mínimo de dos ciclos al cambiar de propietario. El protocolo de bus PCI está diseñado para que esto rara vez sea una limitación; sólo en unos pocos casos especiales (notablemente transacciones consecutivas rápidas ) es necesario insertar un retraso adicional para cumplir con este requisito.
Arbitraje
Cualquier dispositivo en un bus PCI que sea capaz de actuar como maestro de bus puede iniciar una transacción con cualquier otro dispositivo. Para asegurarse de que solo se inicie una transacción a la vez, cada maestro debe esperar primero una señal de concesión de bus, GNT #, de un árbitro ubicado en la placa base. Cada dispositivo tiene una línea de solicitud REQ # separada que solicita el bus, pero el árbitro puede "estacionar" la señal de concesión del bus en cualquier dispositivo si no hay solicitudes actuales.
El árbitro puede eliminar GNT # en cualquier momento. Un dispositivo que pierde GNT # puede completar su transacción actual, pero no puede iniciar una (afirmando FRAME #) a menos que observe que GNT # afirmó el ciclo antes de que comience.
El árbitro también puede proporcionar GNT # en cualquier momento, incluso durante la transacción de otro maestro. Durante una transacción, se afirman FRAME # o IRDY # o ambos; cuando ambos están desactivados, el bus está inactivo. Un dispositivo puede iniciar una transacción en cualquier momento en que GNT # se afirma y el bus está inactivo.
Fase de dirección
Una transacción de bus PCI comienza con una fase de dirección . El iniciador, al ver que tiene GNT # y el bus está inactivo, dirige la dirección de destino a las líneas AD [31: 0], el comando asociado (por ejemplo, lectura de memoria o escritura de E / S) en el C / BE [3 : 0] # líneas y tira FRAME # bajo.
Cada otro dispositivo examina la dirección y el comando y decide si responder como el objetivo afirmando DEVSEL #. Un dispositivo debe responder afirmando DEVSEL # dentro de los 3 ciclos. Se dice que los dispositivos que prometen responder en 1 o 2 ciclos tienen "DEVSEL rápido" o "DEVSEL medio", respectivamente. (En realidad, el tiempo de respuesta es de 2,5 ciclos, ya que los dispositivos PCI deben transmitir todas las señales medio ciclo antes para que puedan recibirse tres ciclos después).
Tenga en cuenta que un dispositivo debe bloquear la dirección en el primer ciclo; se requiere que el iniciador elimine la dirección y el comando del bus en el ciclo siguiente, incluso antes de recibir una respuesta DEVSEL #. El tiempo adicional está disponible solo para interpretar la dirección y el comando una vez capturado.
En el quinto ciclo de la fase de dirección (o antes si todos los demás dispositivos tienen DEVSEL medio o más rápido), se permite una "decodificación sustractiva" general para algunos rangos de direcciones. Esto es comúnmente utilizado por un puente de bus ISA para direcciones dentro de su rango (24 bits para memoria y 16 bits para E / S).
En el sexto ciclo, si no ha habido respuesta, el iniciador puede abortar la transacción anulando FRAME #. Esto se conoce como terminación de aborto maestro y es habitual que los puentes de bus PCI devuelvan datos de todos unos (0xFFFFFFFF) en este caso. Por lo tanto, los dispositivos PCI generalmente están diseñados para evitar el uso del valor de todos unos en registros de estado importantes, de modo que el software pueda detectar fácilmente un error de este tipo.
Dirección de sincronización de fase
_ 0_ 1_ 2_ 3_ 4_ 5_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / ___ GNT # \ ___ / XXXXXXXXXXXXXXXXXXX (GNT # Irrelevante una vez iniciado el ciclo) _______ MARCO# \___________________ ___ AD [31: 0] ------- <___> --------------- (Dirección solo válida para un ciclo.) ___ _______________ C / BE [3: 0] # ------- <___ X_______________ (Comando, luego se habilita el primer byte de la fase de datos) _______________________ DEVSEL # \ ___ \ ___ \ ___ \ ___ Rápido Med Lento Sustractivo _ _ _ _ _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / 0 1 2 3 4 5
En el flanco ascendente del reloj 0, el iniciador observa FRAME # e IRDY # tanto alto como GNT # bajo, por lo que controla la dirección, el comando y afirma el FRAME # a tiempo para el flanco ascendente del reloj 1. Los objetivos bloquean la dirección y comience a decodificarlo. Pueden responder con DEVSEL # a tiempo para el reloj 2 (DEVSEL rápido), 3 (medio) o 4 (lento). Los dispositivos de decodificación sustractiva, que no ven ninguna otra respuesta en el reloj 4, pueden responder en el reloj 5. Si el maestro no ve una respuesta en el reloj 5, terminará la transacción y eliminará el FRAME # en el reloj 6.
TRDY # y STOP # se anulan (alto) durante la fase de dirección. El iniciador puede afirmar IRDY # tan pronto como esté listo para transferir datos, lo que teóricamente podría ser tan pronto como el reloj 2.
Dirección de ciclo dual
Para permitir el direccionamiento de 64 bits, un maestro presentará la dirección durante dos ciclos consecutivos. Primero, envía los bits de dirección de orden inferior con un comando especial de "dirección de ciclo dual" en el C / BE [3: 0] #. En el ciclo siguiente, envía los bits de dirección de orden superior y el comando real. Los ciclos de dirección dual están prohibidos si los bits de dirección de orden superior son cero, por lo que los dispositivos que no admiten el direccionamiento de 64 bits simplemente no pueden responder a los comandos de ciclo dual.
_ 0_ 1_ 2_ 3_ 4_ 5_ 6_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / ___ GNT # \ ___ / XXXXXXXXXXXXXXXXXXXXXXX _______ MARCO# \_______________________ ___ ___ AD [31: 0] ------- <___X___> --------------- (Bits bajos, luego altos) ___ ___ _______________ C / BE [3: 0] # ------- <___ X___X_______________ (DAC, luego comando real) ___________________________ DEVSEL # \ ___ \ ___ \ ___ \ ___ Rápido Med Lento _ _ _ _ _ _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / 0 1 2 3 4 5 6
Acceso a la configuración
Las direcciones para el acceso al espacio de configuración PCI se decodifican especialmente. Para estos, las líneas de dirección de orden inferior especifican el desplazamiento del registro de configuración PCI deseado y las líneas de dirección de orden superior se ignoran. En cambio, una señal de dirección adicional, la entrada IDSEL, debe ser alta antes de que un dispositivo pueda afirmar el número DEVSEL. Cada ranura conecta una línea de dirección de orden superior diferente al pin IDSEL y se selecciona mediante codificación one-hot en las líneas de dirección superiores.
Fases de datos
Después de la fase de dirección (específicamente, comenzando con el ciclo en el que DEVSEL # baja) viene una ráfaga de una o más fases de datos . En todos los casos, el iniciador maneja señales de selección de byte bajo activo en las líneas C / BE [3: 0] #, pero los datos en el AD [31: 0] pueden ser controlados por el iniciador (en caso de escrituras) o target (en caso de lecturas).
Durante las fases de datos, las líneas C / BE [3: 0] # se interpretan como habilitaciones de byte bajo activo . En el caso de una escritura, las señales confirmadas indican cuál de los cuatro bytes del bus AD se debe escribir en la ubicación direccionada. En el caso de una lectura, indican en qué bytes está interesado el iniciador. Para las lecturas, siempre es legal ignorar las señales de habilitación de bytes y simplemente devolver los 32 bits; Se requieren recursos de memoria caché para devolver siempre 32 bits válidos. Las habilitaciones de bytes son principalmente útiles para accesos al espacio de E / S donde las lecturas tienen efectos secundarios.
Una fase de datos con las cuatro líneas C / BE # desactivadas está explícitamente permitida por el estándar PCI, y no debe tener ningún efecto en el objetivo más que avanzar la dirección en el acceso de ráfaga en curso.
La fase de datos continúa hasta que ambas partes estén listas para completar la transferencia y continuar con la siguiente fase de datos. El iniciador afirma IRDY # ( iniciador listo ) cuando ya no necesita esperar, mientras que el objetivo afirma TRDY # ( objetivo listo ). Cualquiera que sea el lado que proporcione los datos debe conducirlos en el bus AD antes de afirmar su señal de listo.
Una vez que uno de los participantes afirma su señal de listo, no puede dejar de estar listo o alterar sus señales de control hasta el final de la fase de datos. El receptor de datos debe enganchar el bus AD en cada ciclo hasta que vea que se confirman tanto IRDY # como TRDY #, lo que marca el final de la fase de datos actual e indica que los datos recién enganchados son la palabra que se transferirá.
Para mantener la velocidad de ráfaga completa, el remitente de datos tiene medio ciclo de reloj después de ver tanto IRDY # como TRDY # confirmados para conducir la siguiente palabra al bus AD.
0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ 9_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / ___ _______ ___ ___ ___ AD [31: 0] --- <___ XXXXXXXXX_______XXXXX___X___X___ (Si escribe) ___ ___ _______ ___ ___ AD [31: 0] --- <___> ~~~___ _______________ _______ ___ ___ C / BE [3: 0] # --- <___ X_______________X_______X___X___ (Debe ser siempre válido) _______________ | ___ | | | IRDY # x \ _______ / x \ ___________ ___________________ | | | | TRDY # xx \ ___________________ ___________ | | | | DEVSEL # \ ___________________________ ___ | | | | MARCO# \___________________________________ _ _ _ _ _ | _ _ | _ | _ | _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / 0 1 2 3 4 5 6 7 8 9
Esto continúa el ciclo de dirección ilustrado anteriormente, asumiendo un ciclo de dirección única con DEVSEL medio, por lo que el objetivo responde a tiempo para el reloj 3. Sin embargo, en ese momento, ninguno de los lados está listo para transferir datos. Para el reloj 4, el iniciador está listo, pero el objetivo no. En el reloj 5, ambos están listos y se lleva a cabo una transferencia de datos (como lo indican las líneas verticales). Para el reloj 6, el objetivo está listo para transferir, pero el iniciador no. En el reloj 7, el iniciador está listo y se transfieren los datos. Para los relojes 8 y 9, ambos lados permanecen listos para transferir datos y los datos se transfieren a la velocidad máxima posible (32 bits por ciclo de reloj).
En caso de una lectura, el reloj 2 está reservado para dar la vuelta al bus AD, por lo que no se permite que el objetivo conduzca datos en el bus, incluso si es capaz de realizar un DEVSEL rápido.
# DEVSEL rápido en lecturas
Un objetivo que admita DEVSEL rápido podría, en teoría, comenzar a responder a una lectura del ciclo después de que se presente la dirección. Sin embargo, este ciclo está reservado para el cambio de rumbo del autobús AD. Por lo tanto, es posible que un objetivo no controle el bus AD (y, por lo tanto, no pueda afirmar TRDY #) en el segundo ciclo de una transacción. Tenga en cuenta que la mayoría de los objetivos no serán tan rápidos y no necesitarán ninguna lógica especial para hacer cumplir esta condición.
Finalizar transacciones
Cualquiera de las partes puede solicitar que finalice una ráfaga después de la fase de datos actual. Los dispositivos PCI simples que no admiten ráfagas de varias palabras siempre lo solicitarán de inmediato. Incluso los dispositivos que admiten ráfagas tendrán algún límite en la longitud máxima que pueden admitir, como el final de su memoria direccionable.
Terminación de ráfaga del iniciador
El iniciador puede marcar cualquier fase de datos como la última en una transacción quitando el valor de FRAME # al mismo tiempo que afirma IRDY #. El ciclo después de que el objetivo afirma TRDY #, la transferencia de datos final se completa, ambos lados anulan sus respectivas señales RDY # y el bus vuelve a estar inactivo. El maestro no puede anular FRAME # antes de afirmar IRDY #, ni puede anular FRAME # mientras espera, con IRDY # afirmado, para que el objetivo confirme TRDY #.
La única excepción menor es una terminación de aborto maestro , cuando ningún objetivo responde con DEVSEL #. Obviamente, no tiene sentido esperar TRDY # en tal caso. Sin embargo, incluso en este caso, el maestro debe afirmar el número de IRDY durante al menos un ciclo después de anular el número de MARCO. (Comúnmente, un maestro declarará IRDY # antes de recibir DEVSEL #, por lo que simplemente debe mantener IRDY # afirmado durante un ciclo más). Esto es para garantizar que las reglas de tiempo de respuesta del bus se obedezcan en la línea FRAME #.
Terminación de ráfaga de destino
El objetivo solicita al iniciador que finalice una ráfaga afirmando STOP #. El iniciador luego finalizará la transacción anulando el FRAME # en la próxima oportunidad legal; si desea transferir más datos, continuará en una transacción separada. Hay varias formas en que el objetivo puede hacer esto:
- Desconectarse de los datos
- Si el objetivo afirma STOP # y TRDY # al mismo tiempo, esto indica que el objetivo desea que esta sea la última fase de datos. Por ejemplo, un destino que no admite transferencias en ráfagas siempre hará esto para forzar transacciones PCI de una sola palabra. Esta es la forma más eficaz de que un objetivo finalice una ráfaga.
- Desconectarse sin datos
- Si el objetivo afirma STOP # sin afirmar TRDY #, esto indica que el objetivo desea detenerse sin transferir datos. STOP # se considera equivalente a TRDY # con el fin de finalizar una fase de datos, pero no se transfieren datos.
- Rever
- Una desconexión sin datos antes de transferir cualquier dato es un reintento y, a diferencia de otras transacciones de PCI, los iniciadores de PCI deben hacer una pausa leve antes de continuar con la operación. Consulte la especificación PCI para obtener más detalles.
- Abortar objetivo
- Normalmente, un objetivo contiene DEVSEL # afirmado a través de la última fase de datos. Sin embargo, si un objetivo desaprueba DEVSEL # antes de desconectarse sin datos (afirmando STOP #), esto indica un aborto del objetivo , que es una condición de error fatal. Es posible que el iniciador no vuelva a intentarlo y, por lo general, lo trata como un error de bus . Tenga en cuenta que un objetivo no puede anular DEVSEL # mientras espera con TRDY # o STOP # bajo; debe hacer esto al comienzo de una fase de datos.
Siempre habrá al menos un ciclo más después de una desconexión iniciada por el objetivo, para permitir que el maestro anule el número de MARCO. Hay dos sub-casos, que toman la misma cantidad de tiempo, pero uno requiere una fase de datos adicional:
- Desconectar-A
- Si el iniciador observa STOP # antes de afirmar su propio IRDY #, entonces puede finalizar la ráfaga anulando FRAME # al mismo tiempo que afirma IRDY #, finalizando la ráfaga después de la fase de datos actual.
- Desconectar-B
- Si el iniciador ya ha afirmado el número de IRDY (sin anular el número de MARCO) en el momento en que observa el número de PARADA del objetivo, se compromete a una fase de datos adicional. El objetivo debe esperar a través de una fase de datos adicional, manteniendo STOP # afirmado sin TRDY #, antes de que la transacción pueda finalizar.
Si el iniciador finaliza la ráfaga al mismo tiempo que el objetivo solicita la desconexión, no hay ciclo de bus adicional.
Direccionamiento por ráfagas
Para accesos al espacio de memoria, se puede acceder a las palabras en una ráfaga en varios órdenes. Los bits de dirección de orden inferior innecesarios AD [1: 0] se utilizan para transmitir la orden solicitada por el iniciador. Un objetivo que no admita una orden en particular debe terminar la ráfaga después de la primera palabra. Algunas de estas órdenes dependen del tamaño de la línea de caché, que se puede configurar en todos los dispositivos PCI.
A [1] | A [0] | Orden de ráfagas (con línea de caché de 16 bytes) |
---|---|---|
0 | 0 | Incremento lineal (0x0C, 0x10, 0x14, 0x18, 0x1C, ...) |
0 | 1 | Alternar línea de caché (0x0C, 0x08, 0x04, 0x00, 0x1C, 0x18, ...) |
1 | 0 | Ajuste de la caché (0x0C, 0x00, 0x04, 0x08, 0x1C, 0x10, ...) |
1 | 1 | Reservado (desconectar después de la primera transferencia) |
Si el desplazamiento inicial dentro de la línea de caché es cero, todos estos modos se reducen al mismo orden.
Los modos de cambio de línea de caché y ajuste de línea de caché son dos formas de obtener la línea de caché de primera palabra crítica. El modo de alternancia XORs la dirección proporcionada con un contador incremental. Este es el orden nativo para los procesadores Intel 486 y Pentium. Tiene la ventaja de que no es necesario conocer el tamaño de la línea de caché para implementarlo.
La versión 2.1 de PCI dejó obsoleto el modo de alternancia y agregó el modo de ajuste de línea de caché, [31] : 2 donde la búsqueda procede linealmente, envolviendo al final de cada línea de caché. Cuando una línea de caché se recupera por completo, la búsqueda salta al desplazamiento inicial en la siguiente línea de caché.
Tenga en cuenta que la mayoría de los dispositivos PCI solo admiten un rango limitado de tamaños de línea de caché típicos; si el tamaño de la línea de la caché está programado en un valor inesperado, fuerzan el acceso de una sola palabra.
PCI también admite acceso en ráfagas a E / S y espacio de configuración, pero solo se admite el modo lineal. (Esto se usa con poca frecuencia y puede tener errores en algunos dispositivos; es posible que no lo admitan, pero tampoco fuercen el acceso de una sola palabra de manera adecuada).
Ejemplos de transacciones
Esta es la ráfaga de escritura de cuatro palabras de mayor velocidad posible, terminada por el maestro:
0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ ___ ___ ___ ___ ___ AD [31: 0] --- <___X___X___X___X___> --- <___> ___ ___ ___ ___ ___ C / BE [3: 0] # --- <___X___X___X___X___> --- <___> | | | | ___ IRDY # ^^^^^^^^ \ ______________ / ^^^^^ | | | | ___ TRDY # ^^^^^^^^ \ ______________ / ^^^^^ | | | | ___ DEVSEL # ^^^^^^^^ \ ______________ / ^^^^^ ___ | | | ___ MARCO # \ _______________ / | ^^^^ \ ____ _ _ | _ | _ | _ | _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ 0 1 2 3 4 5 6 7
En el borde 1 del reloj, el iniciador inicia una transacción manejando una dirección, comando y afirmando FRAME # Las otras señales están inactivas (indicadas por ^^^), elevadas por las resistencias pull-up de la placa base. Ese podría ser su ciclo de recuperación. En el ciclo 2, el objetivo afirma tanto DEVSEL # como TRDY #. Como el iniciador también está listo, se produce una transferencia de datos. Esto se repite durante tres ciclos más, pero antes del último (flanco 5 del reloj), el maestro desactiva FRAME #, lo que indica que este es el final. En el borde 6 del reloj, el bus AD y el número de MARCO no se activan (ciclo de cambio) y las otras líneas de control se activan en alto durante 1 ciclo. En el borde 7 del reloj, otro iniciador puede iniciar una transacción diferente. Este es también el ciclo de respuesta para las otras líneas de control.
La ráfaga de lectura equivalente toma un ciclo más, porque el objetivo debe esperar 1 ciclo para que el bus AD dé la vuelta antes de que pueda afirmar TRDY #:
0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ ___ ___ ___ ___ ___ AD [31: 0] --- <___> --- <___X___X___X___> --- <___> ___ _______ ___ ___ ___ C / BE [3: 0] # --- <___X_______X___X___X___> --- <___> ___ | | | | ___ IRDY # ^^^^ \ ___________________ / ^^^^^ ___ _____ | | | | ___ TRDY # ^^^^ \ ______________ / ^^^^^ ___ | | | | ___ DEVSEL # ^^^^ \ ___________________ / ^^^^^ ___ | | | ___ MARCO # \ ___________________ / | ^^^^ \ ____ _ _ _ | _ | _ | _ | _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ 0 1 2 3 4 5 6 7 8
Una ráfaga de alta velocidad terminada por el objetivo tendrá un ciclo adicional al final:
0_ 1_ 2_ 3_ 4_ 5_ 6_ 7_ 8_ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ ___ ___ ___ ___ ___ AD [31: 0] --- <___> --- <___X___X___X___XXXX> ---- ___ _______ ___ ___ ___ ___ C / BE [3: 0] # --- <___X_______X___X___X___X___> ---- | | | | ___ IRDY # ^^^^^^^ \ _______________________ / _____ | | | | _______ TRDY # ^^^^^^^ \ ______________ / ________________ | ___ DETENER # ^^^^^^^ | | | \ _______ / | | | | ___ DEVSEL # ^^^^^^^ \ _______________________ / ___ | | | | ___ MARCO # \ _______________________ / ^^^^ _ _ _ | _ | _ | _ | _ _ _ CLK _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ _ / \ 0 1 2 3 4 5 6 7 8
En el borde 6 del reloj, el objetivo indica que quiere detenerse (con datos), pero el iniciador ya mantiene IRDY # bajo, por lo que hay una quinta fase de datos (borde 7 del reloj), durante la cual no se transfieren datos.
Paridad
El bus PCI detecta errores de paridad, pero no intenta corregirlos reintentando operaciones; es puramente una indicación de falla. Debido a esto, no es necesario detectar el error de paridad antes de que ocurra, y el bus PCI lo detecta unos ciclos más tarde. Durante una fase de datos, cualquier dispositivo que esté impulsando las líneas AD [31: 0] calcula la paridad uniforme entre ellas y las líneas C / BE [3: 0] #, y las envía por la línea PAR un ciclo después. Todas las reglas de acceso y ciclos de respuesta para el autobús AD se aplican a la línea PAR, solo un ciclo después. El dispositivo que escucha en el bus AD comprueba la paridad recibida y afirma la línea PERR # (error de paridad) un ciclo después de eso. Esto generalmente genera una interrupción del procesador, y el procesador puede buscar en el bus PCI el dispositivo que detectó el error.
La línea PERR # solo se usa durante las fases de datos, una vez que se ha seleccionado un objetivo. Si se detecta un error de paridad durante una fase de dirección (o la fase de datos de un ciclo especial), los dispositivos que lo observan afirman la línea SERR # (Error del sistema).
Incluso cuando algunos bytes están enmascarados por las líneas C / BE # y no están en uso, aún deben tener algún valor definido, y este valor debe usarse para calcular la paridad.
Transacciones rápidas consecutivas
Debido a la necesidad de un ciclo de respuesta entre diferentes dispositivos que controlan las señales del bus PCI, en general es necesario tener un ciclo inactivo entre las transacciones del bus PCI. Sin embargo, en algunas circunstancias se permite omitir este ciclo inactivo, yendo directamente del ciclo final de una transferencia (IRDY # afirmado, FRAME # desactivado) al primer ciclo del siguiente (FRAME # afirmado, IRDY # desactivado).
Un iniciador solo puede realizar transacciones consecutivas cuando:
- son del mismo iniciador (o no habría tiempo para cambiar las líneas C / BE # y FRAME #),
- la primera transacción fue una escritura (por lo que no es necesario dar la vuelta al bus AD), y
- el iniciador todavía tiene permiso (de su entrada GNT #) para usar el bus PCI.
Las limitaciones de tiempo adicionales pueden provenir de la necesidad de dar la vuelta a las líneas de control de destino, particularmente DEVSEL #. El objetivo desaprueba DEVSEL #, llevándolo alto, en el ciclo que sigue a la fase de datos final, que en el caso de transacciones consecutivas es el primer ciclo de la fase de dirección. El segundo ciclo de la fase de dirección se reserva entonces para el cambio de número de DEVSEL, por lo que si el objetivo es diferente al anterior, no debe afirmar el número de DEVSEL hasta el tercer ciclo (velocidad media de DEVSEL).
Un caso en el que este problema no puede surgir es si el iniciador sabe de alguna manera (presumiblemente porque las direcciones comparten suficientes bits de orden superior) que la segunda transferencia está dirigida al mismo destino que la anterior. En ese caso, puede realizar transacciones consecutivas. Todos los objetivos de PCI deben admitir esto.
También es posible que el objetivo realice un seguimiento de los requisitos. Si nunca lo hace rápido DEVSEL, se cumplen trivialmente. Si lo hace, debe esperar hasta el tiempo medio de DEVSEL a menos que:
- la transacción actual fue precedida por un ciclo inactivo (no es consecutiva), o
- la transacción anterior fue para el mismo objetivo, o
- la transacción actual comenzó con un ciclo de doble dirección.
Los destinos que tienen esta capacidad lo indican mediante un bit especial en un registro de configuración PCI, y si todos los destinos en un bus lo tienen, todos los iniciadores pueden usar transferencias consecutivas libremente.
Un puente de bus de decodificación sustractiva debe saber esperar este retraso adicional en el caso de ciclos consecutivos, para anunciar el soporte back-to-back.
PCI de 64 bits
A partir de la revisión 2.1, [se necesita aclaración ], la especificación PCI incluye soporte opcional de 64 bits. Esto se proporciona a través de un conector extendido que proporciona las extensiones de bus de 64 bits AD [63:32], C / BE [7: 4] # y PAR64, y varios pines adicionales de alimentación y tierra. El conector PCI de 64 bits se puede distinguir de un conector de 32 bits por el segmento adicional de 64 bits.
Las transacciones de memoria entre dispositivos de 64 bits pueden usar todos los 64 bits para duplicar la tasa de transferencia de datos. Es posible que las transacciones que no sean de memoria (incluida la configuración y los accesos al espacio de E / S) no utilicen la extensión de 64 bits. Durante una ráfaga de 64 bits, el direccionamiento de ráfaga funciona igual que en una transferencia de 32 bits, pero la dirección se incrementa dos veces por fase de datos. La dirección inicial debe estar alineada con 64 bits; es decir, AD2 debe ser 0. Los datos correspondientes a las direcciones intermedias (con AD2 = 1) se transportan en la mitad superior del bus AD.
Para iniciar una transacción de 64 bits, el iniciador maneja la dirección de inicio en el bus AD y afirma REQ64 # al mismo tiempo que FRAME #. Si el destino seleccionado puede admitir una transferencia de 64 bits para esta transacción, responde afirmando ACK64 # al mismo tiempo que DEVSEL #. Tenga en cuenta que un objetivo puede decidir por transacción si permite una transferencia de 64 bits.
Si se afirma REQ64 # durante la fase de dirección, el iniciador también maneja los 32 bits altos de la dirección y una copia del comando de bus en la mitad alta del bus. Si la dirección requiere 64 bits, aún se requiere un ciclo de dirección dual, pero la mitad superior del bus lleva la mitad superior de la dirección y el código de comando final durante ambos ciclos de fase de dirección; esto permite que un objetivo de 64 bits vea la dirección completa y comience a responder antes.
Si el iniciador ve DEVSEL # afirmado sin ACK64 #, realiza fases de datos de 32 bits. Los datos que se habrían transferido a la mitad superior del bus durante la primera fase de datos se transfieren en cambio durante la segunda fase de datos. Por lo general, el iniciador controla los 64 bits de datos antes de ver DEVSEL #. Si falta ACK64 #, puede dejar de controlar la mitad superior del bus de datos.
Las líneas REQ64 # y ACK64 # se mantienen afirmadas durante toda la transacción, excepto la última fase de datos, y se anulan al mismo tiempo que FRAME # y DEVSEL #, respectivamente.
La línea PAR64 funciona igual que la línea PAR, pero proporciona paridad uniforme sobre AD [63:32] y C / BE [7: 4] #. Solo es válido para las fases de dirección si se afirma REQ64 #. PAR64 solo es válido para las fases de datos si se afirman tanto REQ64 # como ACK64 #.
Cache snooping (obsoleto)
PCI originalmente incluía soporte opcional para coherencia de caché de escritura diferida . Esto requería el soporte de objetivos de memoria almacenables en caché, que escucharían dos pines del caché en el bus, SDONE (snoop done) y SBO # (snoop backoff). [34]
Debido a que esto rara vez se implementó en la práctica, se eliminó de la revisión 2.2 de la especificación PCI, [15] [35] y los pines se reutilizaron para el acceso SMBus en la revisión 2.3. [17]
La caché vería todos los accesos a la memoria, sin afirmar DEVSEL #. Si detecta un acceso que podría estar almacenado en caché, reduciría el nivel de SDONE (no se hizo el espionaje). Un objetivo de apoyo a la coherencia evitaría completar una fase de datos (afirmando TRDY #) hasta que observe SDONE alto.
En el caso de una escritura en datos que estaban limpios en la caché, la caché solo tendría que invalidar su copia y afirmaría SDONE tan pronto como se estableciera. Sin embargo, si la caché contenía datos sucios, la caché tendría que volver a escribirlos antes de que pudiera continuar el acceso. por lo que afirmaría SBO # al subir SDONE. Esto indicaría al objetivo activo que afirme STOP # en lugar de TRDY #, lo que provocaría que el iniciador se desconecte y vuelva a intentar la operación más tarde. Mientras tanto, la caché arbitraría por el bus y volvería a escribir sus datos en la memoria.
Los objetivos que admiten la coherencia de la caché también deben terminar las ráfagas antes de que crucen las líneas de la caché.
Herramientas de desarrollo
Al desarrollar y / o solucionar problemas del bus PCI, el examen de las señales de hardware puede ser muy importante. Los analizadores lógicos y los analizadores de bus son herramientas que recopilan, analizan y decodifican señales para que los usuarios las vean de manera útil.
Ver también
- Espacio de configuración PCI
- CompactPCI , PCI-X , PCI Express
- PCI-SIG , PCI Grupo de interés especial
- PICMG , Grupo de Fabricantes de Computadoras Industriales PCI
- Eurocard (placa de circuito impreso)
Referencias
- ^ Revisión 2.2 de la especificación de bus local PCI . Hillsboro, Oregón : Grupo de interés especial de PCI . 18 de diciembre de 1998. página ii.
- ^ "PCIe (Peripheral Component Interconnect Express) | En la placa base | Certificación de TI de Pearson" . www.pearsonitcertification.com . Consultado el 25 de septiembre de 2020 .
- ^ "PCI" . Web ‐ o ‐ pedia..
- ^ Hamacher, V. Carl; Vranesic, Zvonko G .; Zaky, Safwat G. (2002). Organización informática (5ª ed.). McGraw-Hill. ISBN 9780071122184.
- ^ "Tarjeta gráfica PCI Edition AMD HD 4350 de HIS" . Consultado el 27 de julio de 2009 .
- ^ Imdad-Haque, Faisal (1996). Tarjeta PC interna: CardBus y PCMCIA Diseño: CardBus y PCMCIA Diseño . Newnes. pag. 39. ISBN 978-0-08-053473-2.
- ^ Sumathi, S .; Surekha, P. (2007). Sistemas avanzados de instrumentación basados en LabVIEW . Saltador. pag. 305. ISBN 978-3-540-48501-8.
- ^ https://documentation.euresys.com/Products/MultiCam/MultiCam_6_16/Content/MultiCam_6_7_HTML_Documentation/PCI_Bus_Variation.pdf
- ^ a b Williams, John (2008). Diseño digital de VLSI con Verilog: un libro de texto del Instituto Técnico de Silicon Valley . Saltador. pag. 67. ISBN 978-1-4020-8446-1.
- ^ Bachmutsky, Alexander (2011). Diseño de sistemas para pasarelas de telecomunicaciones . John Wiley e hijos. pag. 81. ISBN 978-1-119-95642-6.
- ^ VLB fue diseñado para sistemas basados en 486, sin embargo, incluso el PCI más genérico iba a ganar prominencia en esa plataforma.
- ^ Meyers, Michael (2012). Guía de examen todo en uno de la certificación CompTIA A + (8ª ed.). Profesional de McGraw Hill. pag. 339. ISBN 978-0-07-179512-8.
- ^ Identifique una variedad de ranuras PCI , LaCie
- ^ Historia familiar de PCI
- ^ a b c d e f Especificación de bus local PCI, revisión 3.0
- ^ "Cómo del temporizador de latencia PCI" . Reric.NET de Eric Seppanen. 2004-11-14 . Consultado el 17 de julio de 2008 .
- ^ a b c d e Revisión de la especificación de bus local PCI 2.3 . Portland, Oregon : PCI Special Interest Group . 29 de marzo de 2002.
- ^ Configuración de pines del conector PCI
- ^ a b Especificación de interfaz de administración de energía PCI v1.2
- ^ archive.org/zuavra.net - Uso de Wake-On-LAN WOL / PME para encender su computadora de forma remota
- ^ ZNYX Networks (16 de junio de 2009). "Serie ZX370" . Archivado desde el original el 2 de mayo de 2011 . Consultado el 13 de julio de 2012 .
La serie ZX370 es un verdadero adaptador de 64 bits, que amplía la canalización de la red para lograr un mayor rendimiento, al tiempo que ofrece compatibilidad con versiones anteriores de las ranuras PCI estándar de 32 bits.
- ^ Redes ZNYX. "Adaptador Fast Ethernet PCI multicanal de la serie ZX370" (PDF) . Archivado desde el original (PDF) el 20 de julio de 2013 . Consultado el 13 de julio de 2012 .
Compatible con versiones anteriores con ranuras PCI de 32 bits y 33 MHz
- ^ Adaptec (enero de 2000). "Referencia del usuario del controlador SCSI de la tarjeta Adaptec SCSI 29160 Ultra160" (pdf) . pag. 1 . Consultado el 13 de julio de 2012 .
Aunque la Tarjeta SCSI 29160 de Adaptec es una tarjeta PCI de 64 bits, también funciona en una ranura PCI de 32 bits. Cuando se instala en una ranura PCI de 32 bits, la tarjeta se ejecuta automáticamente en el modo más lento de 32 bits.
- ^ LaCie. "Soporte de LaCie: Identifique una variedad de ranuras PCI" . Archivado desde el original el 4 de abril de 2012 . Consultado el 13 de julio de 2012 .[ fuente no confiable? ]
- ^ Revisión de la especificación de bus local PCI 3.0 . Hillsboro, Oregón : Grupo de interés especial de PCI . 3 de febrero de 2004. Figura 5-8.
- ^ Revisión de la especificación de bus local PCI 3.0 . Hillsboro, Oregón : Grupo de interés especial de PCI . 3 de febrero de 2004. Figura 5-9.
- ^ Revisión de la especificación de bus local PCI 3.0 . Hillsboro, Oregón : Grupo de interés especial de PCI . 3 de febrero de 2004. Figura 5-6.
- ^ Revisión de la especificación de bus local PCI 3.0 . Hillsboro, Oregón : Grupo de interés especial de PCI . 3 de febrero de 2004. Figura 5-7.
- ^ Micro PCI, AGP micro (FAQ), IBASE, Archivado desde el original en 2001-12-11 , recuperada 2010-11-20.
- ^ Roudier, Gérard (28 de noviembre de 2001). "Re: sym53c875: lectura / proc causa error de paridad SCSI" . linux-kernel (lista de correo).
- ^ a b Especificación de bus local PCI: revisión 2.1 frente a revisión 2.0 (PDF) (nota de aplicación). Corporación Intel. Marzo de 1997. AP-753. Archivado desde el original (PDF) el 30 de abril de 2015.
- ^ "Características del bus: controladores de dispositivos de escritura para Oracle® Solaris 11.3" . docs.oracle.com . Consultado el 18 de diciembre de 2020 .
- ^ Especificación de arquitectura de puente PCI a PCI, revisión 1.1
- ^ Especificación de bus local PCI, revisión 2.1
- ^ Revisión 2.2 de la especificación de bus local PCI . Hillsboro, Oregón : Grupo de interés especial de PCI . 18 de diciembre de 1998.
Otras lecturas
- Especificaciones técnicas oficiales
- Especificación de bus local PCI: revisión 2.3 . PCI-SIG. 29 de marzo de 2002. ($ 1000 para no miembros o $ 50 para miembros. La membresía PCI-SIG cuesta $ 3000 por año).
- Especificación de bus local PCI: revisión 3.0 . PCI-SIG. 12 de agosto de 2002. ($ 1000 para no miembros o $ 50 para miembros. La membresía PCI-SIG cuesta $ 3000 por año).
- Libros
- Abbott, Doug (2004). PCI Bus Desmitificado (2ª ed.). ISBN 978-0-7506-7739-4. 250 páginas.
- Shanley, Tom (1999). Arquitectura del sistema PCI (4ª ed.). ISBN 978-0-201-30974-4. 832 páginas.
- Shanley, Tom (2000). Arquitectura del sistema PCI-X (1ª ed.). ISBN 978-0-201-72682-4. 752 páginas.
- Solari, Ed (2001). Arquitectura y diseño de hardware y software PCI y PCI-X (5ª ed.). ISBN 978-0-929392-63-9. 1140 páginas.
- Goodrum, Alan (1998). Aplicación y diseño de PCI HotPlug (1ª ed.). ISBN 978-0-929392-60-8. 162 páginas.
enlaces externos
- Oficial
- Sitio web oficial , PCI Special Interest Group (PCI-SIG)
- Detalles técnicos
- Introducción al protocolo PCI Archivado el 19 de enero de 2013 en Wayback Machine , electrofriends.com
- Pin-out y señales del bus PCI , pinouts.ru
- Dimensiones de la tarjeta PCI , interfacebus.com
- Listas de proveedores, dispositivos, ID
- Listas de dispositivos y proveedores de PCI , pcidatabase.com
- Repositorio de ID de PCI , un proyecto para recopilar todas las ID conocidas
- Consejos
- Breve descripción general de los requisitos de alimentación de PCI y compatibilidad con un bonito diagrama
- Buenos diagramas y texto sobre cómo reconocer la diferencia entre ranuras de 5 voltios y 3,3 voltios
- Linux
- Linux con tarjetas miniPCI
- Página de verificación del controlador de dispositivo GNU / Linux PCI
- Decodificación de datos PCI y salida lspci en hosts Linux
- Herramientas de desarrollo
- Extensor de bus PCI activo , dinigroup.com
- Núcleos FPGA
- Núcleo de interfaz PCI , semiconductor de celosía
- Núcleo de puente PCI , OpenCore.
- Búsqueda de IP para núcleos de bus PCI , Berkeley.