quarta-feira, 2 de maio de 2012

Gestão de memória e o DMA


DMA - Acesso Direto à Memória (Direct Memory Access) 


O DMA é um controlador existente integrado na placa-mãe desde a época do primeiro PC. Ele permite que periféricos façam transferências de dados para a memória RAM sem a intervenção do processador. Isto economiza um tempo absurdo. 

Imagine um arquivo de 50 KB gravado em disquete. Se não existisse o recurso de DMA, a transferência seria feita byte-a-byte, ou seja, seriam necessárias mais de 50.000 instruções por parte do processador para que esta transferência fosse executada. 

No mundo real, porém, a transferência seria controlada pelo controlador de DMA e com um detalhe importantíssimo: o processador não interage no processo, ficando disponível para executar outra tarefa. Bastaria uma única instrução para o controlador de DMA iniciar o processo. 

O problema, no entanto, é a colcha de retalhos que se tornou o padrão PC. Para manter compatibilidade com o projeto do AT da IBM, o controlador de DMA existente em todos os micros é um controlador de 16 bits, portanto lento para ser utilizado com os discos rígidos atualmente utilizados. 

PIO - Programmed Input/Output


Para resolver este problema de velocidade, o padrão ATA/IDE utiliza um outro esquema de transferência, chamado PIO. Existem 5 modos de operação PIO (PIO0 a PIO4), cada um utilizando um protocolo e uma taxa de transferência. Veja abaixo uma comparação das taxas de transferências utilizadas pelo controlador de DMA, PIO e o novo padrão Ultra-ATA que ainda está sendo implantado (colocado aqui somente a título de comparação): 

DMA padrão: 1 MB/s
PIO modo 0: 3,3 MB/s
PIO modo 1: 4,2 MB/s
PIO modo 2: 8,3 MB/s
PIO modo 3: 11,1 MB/s (EIDE - Fast ATA)
PIO modo 4: 16,6 MB/s (EIDE - Fast ATA-2)
Ultra-ATA: 33,3 MB/s


Conclusão: por mais lento que seja o disco rígido IDE, ele utiliza PIO modo 0, sendo mesmo assim mais rápido do que se estivesse utilizando o controlador de DMA. 

Bus Mastering


O Chipset "Triton" da Intel (430FX, HX, VX ou TX), presente nas placas-mãe Pentium permite um novo modo de transferência de dados do disco rígido para a memória, chamado PIIX (PCI-ISA IDE Xcelerator). Este modo de transferência utiliza um novo esquema de DMA, chamado "Fast Multiword DMA", que transfere em vez de 1 dado de 16 bits por vez como no padrão AT original, 3 dados de 16 bits por vez (ou seja, 48 bits). Isto faz com que a taxa de transferência chegue a 16,6 MB/s. Com um detalhe: a transferência de dados da memória com o disco rígido é feita sem a interferência do processador, ao contrário do esquema PIO. 

Para saber se o seu micro aceita o "bus mastering" é fácil, basta olhar na placa-mãe qual é o "chipset". Normalmente é o circuito escrito "PCIset". Se este circuito for da Intel e possuir o sufixo FX, HX, VX ou TX (ou seja, a maioria das placas-mãe existentes), então o seu micro pode se beneficiar do bus mastering. 

Instalando o Bus Mastering


Toda a placa-mãe vem com um disquete. é neste disquete justamente que está o driver de bus mastering para a sua placa-mãe. Muita gente não sabe disto e simplesmente joga fora este disquete. 
Se você quiser aumentar o desempenho do seu micro, instale o driver de bus mastering de acordo com o sistema operacional que você possuir. Geralmente os drivers vêm separados em subdiretórios no disquete e você não deverá encontrar maiores dificuldades neste processo. 

E se você não tiver este disquete? Baixe os drivers de Bus Mastering diretamente do site do fabricante de sua placa mãe ( geralmente descrito no manual da placa-mãe. 

Incompatibilidade


Atenção, muito importante: os drivers de bus mastering no Windows 95 geralmente apresentam incompatibilidade com unidades de CD-ROM IDE, pois as unidades de CD não sabem como operar com DMA, somente com PIO. 

Para resolver este problema e instalar os drivers de bus mastering corretamente, siga as instruções passo-a-passo: 

  • Mantenha a unidade de CD-ROM instalada na porta IDE secundária e o seu disco rígido na porta IDE primária. 
  • Instale os drivers de bus mastering que vem em um disquete com a sua placa-mãe ou que você baixou na Internet. 
  • Após a instalação dos drivers, o que você deverá fazer será alterar o driver da porta IDE secundária de DMA para PIO novamente. 
  • Para isto, utilize o editor de registro do Windows 95. Basta executar C:\WINDOWS\REGEDIT.EXE.
    Abra a chave HKEY_LOCAL_MACHINE/System/ CurrentControlSet/control/Services/Class/hdc
    Você encontrará diversos diretórios, como 0000, 0001, 0002, etc. Procure pelo diretório que conter a string "Secondary Bus Master IDE Controller" ou similar (o nome exato depende do fabricante do driver que você instalou).
    Encontrando o diretório, altere a linha "PortDriver" para "ESDI_506.pdr". Basta selecionar a linha e escolher a opção "Modificar" do menu "Editar". Isto irá alterar o driver para o driver IDE padrão. 
  • Altere a linha "DriverDesc" para "Controlador IDE secundário", bastando selecionar a linha e escolher a opção "Modificar" do menu "Editar". 
  • Basta dar um reboot no sistema. 
Após este processo, a porta IDE primária estará operando em "Fast Multiword DMA" e a porta IDE secundária em PIO. Recomendamos que este processo seja feito sempre, independentemente se o seu micro possua ou não unidade de CD-ROM IDE (ele, desta forma, já ficará preparado para uma futura instalação). 

Windows 95 OSR2 e Windows 98

O Windows 95 Release 2 (OSR2) e o Windows 98 já possuem drivers de bus mastering, não necessitando a instalação de drivers externos. Para isto, vá no Gerenciador de Dispositivos (Painel de Controle, ícone "Sistema") e selecione "Controladores de Disco Rígido". Selecione a porta IDE primária. Habilite a caixa "DMA" existente em uma das guias. Pronto! 

0 comentários:

Enviar um comentário