quinta-feira, 25 de setembro de 2008

IRQ, DMA, APIC e I/O: Entendendo os endereços

Os endereços de IRQ são interrupções de hardware, canais que os dispositivos podem utilizar para chamar a atenção do processador. Na maioria das situações, o sistema operacional simplesmente chaveia entre os aplicativos ativos, permitindo que ele utilize o processador durante um determinado espaço de tempo e passe a bola para o seguinte. Como o processador trabalha a uma freqüência de clock muito alta, o chaveamento é feito de forma muito rápida, dando a impressão de que todos realmente estão sendo executados ao mesmo tempo

No caso dos processadores dual-core, temos na realidade dois processadores, de forma que dois threads podem ser processados simultaneamente, mas o princípio continua o mesmo, já que em um PC típico temos um número sempre muito maior de aplicativos ativos. Muitas operações, entretanto, não podem esperar. O exemplo mais típico são os caracteres digitados no teclado e os movimentos do mouse (que precisam ser interpretados rapidamente pelo sistema, mesmo enquanto o PC está executando tarefas pesadas), mas existem muitas outras operações que precisam de atenção semelhante, incluindo as transferências de dados recebidos através da placa de rede, operações de leitura e escrita nos HDs e assim por diante.

A placa de rede, por exemplo, não pode ficar simplesmente esperando que chegue a sua vez dentro do sistema multitarefa, pois isso retardaria a transmissão dos pacotes, aumentando o ping e reduzindo a taxa de transmissão da rede. É neste ponto que entram os endereços de IRQ. Ao ser avisado através de qualquer um desses canais, o processador imediatamente pára qualquer coisa que esteja fazendo e dá atenção ao dispositivo, voltando ao trabalho logo depois. Cada endereço é uma espécie de campainha, que pode ser tocada a qualquer momento. Se não fossem pelos endereços de IRQ, o processador não seria capaz de ler as teclas digitadas no teclado ou os clicks do mouse, a transmissão de dados através da rede pararia toda vez que você abrisse qualquer programa e assim por diante.

Em PCs antigos, os endereços de IRQ não podiam ser compartilhados entre os dispositivos, o que freqüentemente causava problemas, já que existem apenas 16 endereços de IRQ disponíveis. Sempre que os endereços de IRQ se esgotavam (pela instalação de muitos periféricos) ou dois dispositivos eram configurados para utilizar o mesmo endereço, tínhamos os famosos conflitos, que faziam com que ambos os dispositivos deixassem de funcionar corretamente.

Atualmente, os conflitos relacionados aos endereços de IRQ são muito raros, pois as placas atuais suportam diversos sistemas de compartilhamento e atribuição automática de endereços. No caso das placas PCI, por exemplo, o controlador PCI passa a centralizar as requisições enviadas por todas as placas instaladas, de forma que todas possam utilizar um único endereço. Isto é possível porque as placas passam a enviar as requisições para o controlador e apenas ele entra em contato direto com o processador.

Para variar, tudo começa com o PC original, aquele lançado em 1981. Ele tinha apenas 8 endereços de IRQ, numerados de 0 a 7. Isso acontecia porque ele ainda era baseado no processador 8088, que apesar de ser internamente um processador de 16 bits, utilizava um barramento de apenas 8 bits para comunicar-se com os periféricos. Com isto, tinha apenas 8 IRQs.

A partir do 286, houve uma evolução nesse esquema, pois finalmente os PCs passaram a ter 16 endereços de IRQ, numerados de 0 a 15, como nos dias de hoje. Como quase todas as evoluções na família PC, foi preciso manter compatibilidade com o padrão anterior, para que as placas para XT pudessem funcionar nos PCs 286 em diante.

Assim, resolveram manter o controlador de IRQs original para que tudo continuasse funcionando da mesma maneira que antes e simplesmente adicionar um segundo controlador para obter os 8 novos endereços. Este segundo controlador passou a ser ligado no IRQ 2 que, como vimos, costumava ficar livre. Todos os pedidos de interrupção dos periféricos ligados aos endereços entre 8 e 15, controlados pelo segundo controlador, passam primeiro pelo IRQ 2, para só depois chegar ao processador. Isto é chamado de cascateamento de IRQs:

Em casos em que todos os endereços já estão ocupados, a solução seria desabilitar dispositivos que não estivessem sendo usados como, por exemplo, a segunda porta serial, a porta PS/2 e o controlador USB (naquela época os dispositivos USB ainda eram novidade e as portas raramente eram usadas). Mas, de qualquer forma, se você continuasse instalando mais e mais periféricos, logo chegaria o ponto em que não teria mais o que desabilitar.

Esse problema começou a tornar-se cada vez mais evidente, à medida que mais e mais periféricos passaram a ser utilizados por padrão. Os únicos periféricos “de fábrica” em um 286 eram o monitor e o teclado, todo o restante era opcional. Em um PC atual temos um número muito maior de dispositivos, a começar pelos componentes onboard.

Felizmente, pensaram nesse problema quando desenvolveram o barramento PCI, incluindo o recurso de PCI Steering, que permite que dois ou mais periféricos PCI compartilhem o mesmo endereço de IRQ. Nesse caso, o controlador PCI passa a atuar como uma ponte entre os periféricos e o processador. Ele recebe todos os pedidos de interrupção, os encaminha para o processador e, ao receber as respostas, novamente os encaminha para os dispositivos corretos. Como o controlador é o único diretamente conectado ao processador é possível ocupar apenas um endereço de IRQ. Do lado do software, o PCI Steering passou a ser suportado a partir do Windows 95 OSR/2, além de ser suportado (por parte do Kernel) praticamente desde as primeiras versões do Linux.

Nem todos os dispositivos PCI suportam trabalhar dessa forma, mas a grande maioria funciona sem problemas. No Windows, você pode verificar a distribuição dos endereços dentro do Painel de Controle > Sistema > Hardware > Gerenciador de Dispositivos. Na janela principal, clique no Exibir > Recursos por tipo.

No screenshot a seguir, temos um PC antigo, rodando o Windows 2000, onde as duas placas de rede e a placa de som estão compartilhando o IRQ 9:

Além do barramento PCI, outros barramentos usados atualmente permitem compartilhar um único IRQ entre vários periféricos. O USB é um bom exemplo. O controlador ocupa um único IRQ, que é compartilhado entre todas as portas USB e todos os dispositivos conectados a elas. Mesmo que a placa-mãe tenha 6 portas USB e você utilize todas, terá ocupado apenas um endereço.

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.

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, do 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 isso, os fabricantes ganham margem para expansões futuras, que eventualmente se tornem necessárias.

Concluindo, 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 dessa 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. Em vez disso, o barramento PCI (seguido pelos demais barramentos modernos) trouxe o Bus Mastering, um sistema muito mais eficiente e rápido.

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 esses 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.

quarta-feira, 24 de setembro de 2008

Declaração do IR será feita pela própria Receita

Achei muito interessante, e logo, resolvi postar isso em meu blog, mesmo sendo apenas de informática, mas serve para que todos possam manter-se atualizados.

Novo sistema deve começar a funcionar em dois anos. Contribuinte terá apenas de confirmar os dados ou fazer retificações. A partir de hoje, podem ser feitas consultas ao terceiro lote de restituiçãoQue tal declarar o IR em minutos?Receita Federal implantará em dois anos modelo em que contribuinte recebe o formulário já pronto, com valoresSandra KieferOs 24,2 milhões de contribuintes brasileiros não vão mais precisar quebrar a cabeça na hora de preencher a declaração do Imposto de Renda da Pessoa Física. No prazo máximo de dois anos, eles vão passar a receber o formulário já pronto, incluindo o valor do tributo a pagar ou a restituição a receber, seguindo o modelo já usual do temido fisco norte-americano e recentemente implantado no Chile.

O sistema será alimentado com informações fornecidas por seus parceiros comerciais, entre prestadores de serviço, imobiliárias e cartórios. Seu único trabalho será confirmar os dados ou fazer pequenas modificações, se necessário.A novidade foi divulgada ontem por Marcos Mazoni, diretor-presidente do Serviço Federal de Processamento de Dados (Serpro). Embora a Receita Federal do Brasil tenha evitado se pronunciar sobre o assunto, o corpo técnico em Brasília participou esta semana da primeira reunião do ano para discutir o Imposto de Renda para 2009.

A mudança virá já na gestão da nova secretária da Receita, Lina Vieira, que assumiu o posto quinta-feira passada.Janir Adir Moreira, vice-presidente da Associação Brasileira de Direito Tributário (Abradt), calcula que a medida trará uma redução substancial na malha fina. "A Receita já monitora todos os passos do contribuinte brasileiro e não há mais como omitir uma informação de rendimento na declaração. Se ela já tem todos os dados nas mãos para fiscalizar, por que não ajudar o contribuinte?", observa. Ele acredita que o procedimento irá poupar trabalho ao contribuinte e não irá induzi-lo a erro, já que as informações serão em boa medida repassadas por ele próprio e em seguida conferidas antes de dar o OK.Atualmente, o contribuinte ou o contador indicado por ele tem por hábito recuperar os dados lançados na declaração de IR do ano anterior e salvar no novo arquivo, acrescentando uma ou outra alteração. É diferente do que irá ocorrer no futuro, quando as informações serão fornecidas à Receita por terceiros.

"Quando o contribuinte compra uma casa na praia e registra em cartório, o cartório hoje já emite uma declaração que irá alimentar o banco de dados da Receita. O mesmo irá ocorrer ele prestou ou pagou por um serviço, comprou ou vendeu ações, ou trocou o carro", lembra Moreira. "É uma via de mão dupla. Hoje quem já tem certificação ou assinatura digital no Brasil tem acesso a todos os dados da sua conta corrente fiscal. Ele consegue saber se alguém declarou qualquer valor a ele", afirma.

Para a notícia completa, acesse a página da ABIN:http://www.abin.gov.br/modules/articles/article.php?id=2992

FONTE: Estado de Minas - Publicação: 08/08/2008

quinta-feira, 18 de setembro de 2008

Entendendo o AGP

Embora seja mais recente que o PCI e tenha sido largamente utilizado, o AGP é atualmente um barramento em vias de extinção, devido à popularização do PCI-Express. Desde o final de 2006, placas novas com slots AGP são um item raro, com exceção de algumas placas da PC-Chips, ECS e Phitronics.

A idéia central do AGP é ser um barramento rápido, feito sob medida para o uso das placas 3D de alto desempenho. A versão original do AGP foi finalizada em 1996, desenvolvida com base nas especificações do PCI 2.1. Ela operava a 66 MHz, permitindo uma taxa de transferência teórica de 266 MB/s. O padrão AGP inicial não chegou a ser muito usado, pois em 1998 surgiu o padrão AGP 2X, que mantém a freqüência de 66 MHz, mas introduz o uso de duas transferências por ciclo (assim como nas memórias DDR), dobrando a taxa de transferência. Em seguida foi introduzido o AGP 4X e o 8X, que realizam, respectivamente, 4 e 8 transferências por ciclo, atingindo taxas de transferência teóricas de 1066 e 2133 MB/s.


O desempenho de uma placa 3D é fortemente atrelado à velocidade de acesso à memória. Mais de 95% das informações que compõem uma cena 3D de um game atual são texturas e efeitos, que são aplicados sobre os polígonos. As texturas são imagens 2D, de resoluções variadas que são “moldadas” sobre objetos, paredes e outros objetos 3D, de forma a criar um aspecto mais parecido com uma cena real.

A velocidade do barramento AGP é importante quando o processador precisa transferir grandes volumes de texturas e outros tipos de dados para a memória da placa de vídeo, quando a memória da placa se esgota e ela precisa utilizar parte da memória principal como complemento e também no caso de placas de vídeo onboard, que não possuem memória dedicada e, justamente por isso, precisam fazer todo o trabalho usando um trecho reservado da memória principal.

Como é caro incluir simultaneamente o barramento PCI Express e o AGP na mesma placa-mãe, os slots AGP desapareceram das placas novas assim que o PCI Express se tornou popular. A principal exceção ficou por parte da ECS/PC-Chips, que encontrou uma forma “criativa” de incluir um conector AGP em placas com slot PCI-Express, criando o AGP Express (ou AGPro).

O AGP surgiu como uma evolução do PCI. Apesar do aumento na freqüência, ele mantém a mesma sinalização básica, de forma que, apesar da grande diferença de velocidade, os dois barramentos são semelhantes. O slot AGP Express nada mais é do que um slot AGP conectado ao barramento PCI, que combina a alimentação elétrica de dois slots PCI (e os reguladores de tensão apropriados) para fornecer a quantidade necessária de eletricidade à placa AGP.

Naturalmente, esta solução implica em uma grande perda de performance, já que a placa de vídeo passa a dispor dos reles 133 MB/s (compartilhados) oferecidos pelo barramento PCI, em vez dos 2133 MB/s do AGP 8X, tendo seu desempenho drasticamente reduzido. Além disso, essa quase gambiarra cria problemas de compatibilidade com diversas placas AGP, fazendo que muitas combinações simplesmente não funcionem e os problemas de instabilidade sejam comuns.

Outra solução híbrida é o AGI, que pode ser encontrado em algumas placas da ASRock, como a 939Dual-SATA2. No AGI é utilizado um bridge, ou seja, um chip conversor de sinais para ligar um slot AGP ao barramento PCI-Express. Essa solução também está longe de ser 100% compatível, mas garante um desempenho muito próximo do obtido ao usar um slot AGP 8X “de verdade”.

Concluindo, existiu também o “Ultra-AGPII“, uma solução desenvolvida pela SiS para uso de placas de vídeo onboard. No Ultra-AGPII, temos um barramento interno de 3.2 GB/s, interligando o chipset de vídeo e a memória principal. Como disse, o desempenho dos chipsets de vídeo onboard é pesadamente limitado pela velocidade de acesso à memória, de forma que ampliá-lo resulta sempre em algum ganho de desempenho. No caso da SiS, entretanto, o próprio chipset gráfico onboard era muito fraco, de forma que a melhora no barramento não chegou a fazer uma diferença tão grande assim.

O Ultra-AGPII pode ser encontrado apenas em placas com chipset SiS e é exclusivo para o uso do vídeo onboard. Ao utilizar uma placa AGP offboard, a comunicação passa a ser feita através do barramento AGP 8X tradicional.

Fonte: Guiadohardware