Peripheral Component Interconnect (PCI) é um barramento de computador local para conectar dispositivos de hardware em um computador e faz parte do padrão PCI Local Bus. O barramento PCI suporta as funções encontradas em um barramento de processador, mas em um formato padronizado que é independente de qualquer barramento nativo do processador. Os dispositivos conectados ao barramento PCI parecem a um barramento mestre estar conectados diretamente ao seu próprio barramento e recebem endereços no espaço de endereço do processador. É um barramento paralelo, síncrono a um único clock de barramento. Os dispositivos conectados podem assumir a forma de um circuito integrado instalado na placa-mãe (chamado de dispositivo planar na especificação PCI) ou uma placa de expansão que se encaixa em um slot. O PCI Local Bus foi implementado pela primeira vez em compatíveis com IBM PC, onde substituiu a combinação de vários slots lentos Industry Standard Architecture (ISA) e um slot rápido VESA Local Bus (VLB) como a configuração do barramento. Posteriormente, foi adotado para outros tipos de computadores. As placas PCI típicas usadas em PCs incluem: placas de rede, placas de som, modems, portas extras como Universal Serial Bus (USB) ou serial, placas sintonizadoras de TV e adaptadores host de unidade de disco rígido. As placas de vídeo PCI substituíram as placas ISA e VLB até que as crescentes necessidades de largura de banda superaram as capacidades do PCI. A interface preferida para placas de vídeo tornou-se então a Accelerated Graphics Port (AGP), um superconjunto do PCI, antes de dar lugar ao PCI Express.

A primeira versão do PCI encontrada em computadores de mesa de varejo era um barramento de 32 bits usando um clock de barramento de 33 MHz e sinalização de 5 V, embora o padrão PCI 1.0 também fornecesse uma variante de 64 bits. Eles têm um entalhe de localização na placa. A versão 2.0 do padrão PCI introduziu slots de 3,3 V, fisicamente diferenciados por um conector físico invertido para evitar a inserção acidental de placas de 5 V. As placas universais, que podem operar em qualquer voltagem, têm dois entalhes. A versão 2.1 do padrão PCI introduziu a operação opcional de 66 MHz. Uma variante orientada a servidor do PCI, PCI Extended (PCI-X) operava em frequências de até 133 MHz para PCI-X 1.0 e até 533 MHz para PCI-X 2.0. Um conector interno para placas de laptop, chamado Mini PCI, foi introduzido na versão 2.2 da especificação PCI. O barramento PCI também foi adotado para um padrão de conector de laptop externo - o CardBus. A primeira especificação PCI foi desenvolvida pela Intel, mas o desenvolvimento subsequente do padrão tornou-se responsabilidade do PCI Special Interest Group (PCI-SIG).

PCI e PCI-X às vezes são chamados de PCI Paralelo ou PCI ConvencionalPCI Bus Variation para distingui-los tecnologicamente de seu sucessor mais recente, PCI Express, que adotou uma arquitetura serial baseada em pistas. O apogeu do PCI no mercado de computadores desktop foi aproximadamente de 1995 a 2005. PCI e PCI-X se tornaram obsoletos para a maioria dos propósitos e desapareceram amplamente de muitas outras placas-mãe modernas desde 2013; no entanto, eles ainda são comuns em alguns desktops modernos a partir de 2020 para fins de compatibilidade com versões anteriores e o custo relativamente baixo de produção. Outra aplicação moderna comum do PCI paralelo é em PCs industriais, onde muitas placas de expansão especializadas, usadas aqui, nunca fizeram a transição para PCI Express, assim como com algumas placas ISA. Muitos tipos de dispositivos anteriormente disponíveis em placas de expansão PCI agora são comumente integrados em placas-mãe ou disponíveis em versões USB e PCI Express.

História

O trabalho no PCI começou no Intel Architecture Labs (IAL, também Architecture Development Lab) por volta de 1990. Uma equipe composta principalmente por engenheiros do IAL definiu a arquitetura e desenvolveu um chipset e uma plataforma de prova de conceito (Saturn) em parceria com equipes nos sistemas de PC de mesa da empresa e nas principais organizações de produtos lógicos.

O PCI foi imediatamente colocado em uso em servidores, substituindo a Micro Channel architecture (MCA) e a Extended Industry Standard Architecture (EISA) como o barramento de expansão de servidor de escolha. Em PCs convencionais, o PCI foi mais lento para substituir o VLB e não ganhou penetração significativa no mercado até o final de 1994 em PCs Pentium de segunda geração. Em 1996, o VLB estava quase extinto e os fabricantes adotaram o PCI até mesmo para computadores Intel 80486 (486).VLB was designed for 486-based systems, yet even the more generic PCI was to gain prominence on that platform. O EISA continuou a ser usado junto com o PCI até 2000. A Apple Computer adotou o PCI para computadores Power Macintosh profissionais (substituindo o NuBus) em meados de 1995 e a linha de produtos Performa para o consumidor (substituindo o LC Processor Direct Slot (PDS)) em meados de 1996.

Fora do mercado de servidores, a versão de 64 bits do PCI simples permaneceu rara na prática, embora tenha sido usada, por exemplo, por todos os computadores Power Macintosh G3 e G4 (pós-iMac).Identify a variety of PCI slots, LaCie

Revisões posteriores do PCI adicionaram novos recursos e melhorias de desempenho, incluindo um padrão de 66 MHz 3,3 V e 133 MHz PCI-X, e a adaptação da sinalização PCI para outros fatores de forma. Tanto o PCI-X 1.0b quanto o PCI-X 2.0 são compatíveis com versões anteriores de alguns padrões PCI. Essas revisões foram usadas em hardware de servidor, mas o hardware de PC do consumidor permaneceu quase todo de 32 bits, 33 MHz e 5 volts.

O PCI-SIG introduziu o PCI Express serial em . Desde então, os fabricantes de placas-mãe incluíram progressivamente menos slots PCI em favor do novo padrão. Muitas placas-mãe novas não fornecem slots PCI, até o final de 2013.

+ Histórico do PCI Especificação Ano Resumo da alteração PCI 1.0 1992 Edição original PCI 2.0 1993 Conector incorporado e especificação de placa adicional PCI 2.1 1995 Esclarecimentos incorporados e capítulo de 66 MHz adicionado PCI 2.2 1998 ECNs incorporados e legibilidade melhorada PCI 2.3 2002 ECNs incorporados, erratas e placas adicionais com chave de 5 volts excluídos PCI 3.0 2004 Removido o suporte para conector de placa de sistema com chave de 5,0 volts

Configuração automática PCI fornece memória separada e espaços de endereço de porta de I/O mapeados em memória para a família de processadores x86, 64 e 32 bits, respectivamente. Endereços nesses espaços de endereço são atribuídos por software. Um terceiro espaço de endereço, chamado PCI Configuration Space, que usa um esquema de endereçamento fixo, permite que o software determine a quantidade de memória e espaço de endereço de I/O necessários para cada dispositivo. Cada dispositivo pode solicitar até seis áreas de espaço de memória ou espaço de porta de entrada/saída (I/O) por meio de seus registradores de espaço de configuração.

Em um sistema típico, o firmware (ou sistema operacional) consulta todos os barramentos PCI no momento da inicialização (por meio do PCI Configuration Space) para descobrir quais dispositivos estão presentes e quais recursos do sistema (espaço de memória, espaço de I/O, linhas de interrupção, etc.) cada um precisa. Ele então aloca os recursos e informa a cada dispositivo qual é sua alocação.

O espaço de configuração PCI também contém uma pequena quantidade de informações sobre o tipo de dispositivo, o que ajuda o sistema operacional a escolher drivers de dispositivo para ele ou, pelo menos, a dialogar com o usuário sobre a configuração do sistema.

Os dispositivos podem ter uma memória somente leitura (ROM) on-board contendo código executável para processadores x86 ou PA-RISC, um driver Open Firmware ou uma Option ROM. Eles são normalmente necessários para dispositivos usados ​​durante a inicialização do sistema, antes que os drivers de dispositivo sejam carregados pelo sistema operacional.

Além disso, há PCI Latency Timers que são um mecanismo para dispositivos PCI Bus-Mastering compartilharem o barramento PCI de forma justa. "Justo" neste caso significa que os dispositivos não usarão uma porção tão grande da largura de banda do barramento PCI disponível que outros dispositivos não consigam fazer o trabalho necessário. Observe que isso não se aplica ao PCI Express.

Interrupções Os dispositivos precisam seguir um protocolo para que as linhas de solicitação de interrupção (IRQ) possam ser compartilhadas. O barramento PCI inclui quatro linhas de interrupção, INTA# a INTD#, todas disponíveis para cada dispositivo. Até oito dispositivos PCI compartilham a mesma linha de IRQ (LNKA a LNKH) em sistemas x86 habilitados para APIC. As linhas de interrupção não são conectadas em paralelo, assim como as outras linhas de barramento PCI. As posições das linhas de interrupção giram entre os slots, então o que parece para um dispositivo como a linha INTA# é INTB# para o próximo e INTC# para o seguinte. Dispositivos de função única geralmente usam seu INTA# para sinalização de interrupção, então a carga do dispositivo é distribuída de forma bastante uniforme entre as quatro linhas de interrupção disponíveis. Isso alivia um problema comum com o compartilhamento de interrupções.

O mapeamento de linhas de interrupção PCI em linhas de interrupção do sistema, por meio da ponte de host PCI, depende da implementação. O firmware específico da plataforma ou o código do sistema operacional devem saber disso e definir o campo "linha de interrupção" no espaço de configuração de cada dispositivo, indicando a qual IRQ ele está conectado.

As linhas de interrupção PCI são acionadas por nível. Isso foi escolhido em vez do acionamento por borda para obter uma vantagem ao atender uma linha de interrupção compartilhada e para robustez: interrupções acionadas por borda são fáceis de perder.

Revisões posteriores da especificação PCI adicionam suporte para interrupções sinalizadas por mensagem. Neste sistema, um dispositivo sinaliza sua necessidade de serviço realizando uma gravação de memória, em vez de afirmar uma linha dedicada. Isso alivia o problema de escassez de linhas de interrupção. Mesmo se os vetores de interrupção ainda forem compartilhados, ele não sofre os problemas de compartilhamento de interrupções acionadas por nível. Ele também resolve o problema de roteamento, porque a gravação de memória não é modificada de forma imprevisível entre o dispositivo e o host. Finalmente, como a sinalização de mensagem é in-band, ele resolve alguns problemas de sincronização que podem ocorrer com gravações postadas e linhas de interrupção fora de banda.

O PCI Express não tem linhas de interrupção física. Ele usa interrupções sinalizadas por mensagem exclusivamente.

Especificações de hardware convencionais

Essas especificações representam a versão mais comum de PCI usada em PCs normais:

Clock de 33,33 MHz com transferências síncronas Taxa de transferência máxima de 133 MB/s (133 megabytes por segundo) para largura de barramento de 32 bits (33,33 MHz × 32 bits ÷ 8 bits/byte = 133 MB/s) Largura de barramento de 32 bits Espaço de endereço de memória de 32 ou 64 bits (4 GiB ou 16 EiB) Espaço de porta de I/O de 32 bits Espaço de configuração de 256 bytes (por dispositivo) Sinalização de 5 volts Comutação de onda refletida

A especificação PCI também fornece opções para sinalização de 3,3 V, largura de barramento de 64 bits e clock de 66 MHz, mas elas não são comumente encontradas fora do suporte PCI-X em placas-mãe de servidor.

O árbitro de barramento PCI realiza arbitragem de barramento entre vários mestres no barramento PCI. Qualquer número de mestres de barramento pode residir no barramento PCI, bem como solicitações para o barramento. Um par de sinais de solicitação e concessão é dedicado a cada mestre de barramento.

Voltagem e codificação da placa