APIC, DMA e I/O

APIC

A partir das placas soquete 7, os dois controladores de interrupções foram substituídos por um controlador aprimorado, batizado de APIC (Advanced Programmable Interrupt Controller). O APIC preserva a compatibilidade com os dois controladores antigos, o que permite que placas de legado e sistemas operacionais antigos continuem funcionando normalmente. Originalmente, ele foi desenvolvido para melhorar a eficiência de sistemas com dois ou mais processadores, mas ele traz benefícios mesmo em máquinas com apenas um.

Para que o APIC possa ser ativado, é necessário que exista suporte por parte do processador (todos os processadores a Partir do Pentium 1 o suportam), por parte da placa mãe (o suporte foi introduzido a partir das placas soquete 7, de forma que todas as placas atuais o suportam) e também por parte do sistema operacional. Na família Windows, o suporte foi introduzido a partir do Windows 2000, enquanto no Linux ele existe desde a série 2.4 do Kernel.

O APIC pode ser desativado através da opção “APIC Function” (ou similar) do Setup, mas é importante mantê-lo ativado em qualquer PC atual (sobretudo ao usar as versões atuais do Windows), pois ele acrescenta 8 novos endereços de IRQ, de 16 ao 23, além de melhorar sensivelmente o sistema de atribuição automática de endereços.

Em teoria, é possível desenvolver controladores APIC com mais endereços, ou mesmo combinar vários controladores na mesma placa, de forma a aumentar o número de endereços disponíveis. Com isto, os fabricantes ganham margem para expansões futuras, que eventualmente se tornem necessárias.

Aqui temos um screenshot do gerenciador de dispositivos, mostrando a distribuição dos endereços em um PC atual, com o Windows XP SP2 instalado:
index_html_m751890ef
Veja que além de distribuir os dispositivos instalados entre os agora 24 endereços disponíveis, o sistema permite que alguns endereços sejam compartilhados por vários dispositivos. Graças à expansão no número de endereços, o PC continua com vários endereços livres, apesar da adição das controladoras USB, placa wireless, leitor de cartões e outros dispositivos que não eram comumente usados em PCs antigos.

Embora qualquer distribuição Linux atual ofereça suporta ao APIC, é comum que problemas na implementação dos fabricantes (que frequentemente possuem bugs ou adicionam recursos fora da especificação) cause problema na detecção de alguns dispositivos, sobretudo de periféricos onboard, como a placa de som ou placa de rede.

Nestes casos, é possível desativar o APIC utilizando a opção “noapic”, especificada na tela de boot, ou adicionada na linha com opções para o Kernel dentro do arquivo “/boot/grub/menu.lst” ou “/etc/lilo.conf”.

DMA e I/O

Além dos endereços de IRQ, temos também os canais de DMA e os endereços de I/O.

Os canais de DMA são utilizados apenas por dispositivos de legado (placas ISA, portas paralelas e drives de disquete) para transferir dados diretamente para a memória RAM, reduzindo desta forma a utilização do processador.

Existem 8 canais de DMA, numerados de 0 a 7. Os canais de 0 a 3 são herança do PC original e trabalham a 8 bits, assim como o barramento externo no processador 8080. Os canais de 4 a 7 foram introduzidos com o 286 e, acompanhando o barramento de dados do processador, são canais de 16 bits. Os canais de DMA são relacionados ao barramento ISA e, justamente por isso, nunca foram introduzidos canais de 32 bits. Ao invés disso, o barramento PCI (seguido pelos demais barramentos modernos), trouxe o Bus Mastering, um sistema muito mais eficiente e rápido.

Tipicamente, o canal DMA 2 era reservado para a controladora do drive de disquetes, o 3 para a porta paralela (quando configurada para operar em modo ECP), enquanto uma placa de som ISA utilizava os endereços 1 e 5.

Justamente por serem muito lentos, os canais de DMA caíram em desuso desde a década de 1990 e continuaram sendo utilizados apenas por periféricos de legado, como drives de disquete, placas de som ISA e portas paralelas padrão ECP. Conforme estes periféricos foram caindo em desuso, os canais de DMA simplesmente deixaram de ser usados, embora permaneçam disponíveis mesmo nos PCs atuais.

Finalmente, temos os endereços de I/O (também chamados “endereços de ES”, por causa da tradução do Windows). Diferentemente dos endereços de IRQ, eles não são interrupções, mas sim endereços utilizados para a comunicação entre os dispositivos. Cada dispositivo precisa de um endereço próprio mas, ao contrário dos endereços de IRQ, existe uma abundância de endereços de I/O disponíveis, de forma que eles raramente são um problema.

No total, existem 65.536 endereços de I/O e, na maioria dos casos, cada dispositivo utiliza apenas um, de forma que 99% dos endereços permanecem disponíveis.

Temos aqui um exemplo da distribuição dos endereços DMA e de I/O em um PC atual. Como ele não possui nenhum dispositivo ISA, nem possui uma porta paralela ou a porta para o drive de disquetes, o único canal de DMA em uso é o canal 4, utilizado pela própria controladora. Já no caso dos endereços de I/O, temos uma longa lista, incluindo praticamente todos os periféricos, além de uma grande quantidade de controladores incluídos na placa mãe:
index_html_5ec20285

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X