terça-feira, 7 de setembro de 2010

MÓDULO II - HARDWARES

UNIDADE I - INTRODUÇÃO AO HARDWARE

UNIDADE I - INTRODUÇÃO

O QUE SE ESPERA
O objetivo desta proposta de estudo, é que ao final dessa jornada, você compreenda os conceitos e fundamentos relacionados a alguns modelos de computadores modernos e quais são os seus principais componentes e processos. E, assim, possa entender que, ao contrário do que pregam os comerciais da mídia, o desempenho de um computador é resultado de uma conjunção de fatores, e não uma consequência direta da velocidade do processador.

DE ONDE PARTIMOS
Aqui, partimos da visão de que, o que se esconde dentro da maioria dos computadores pessoais, nada mais é que um grupo de
componentes eletrônicos integrados, dispostos sobre um grande circuito denominado placa-mãe, que os interconecta e permite que se coordenem a fim de executar determinado processamento.

UNIDADE II - PROCESSADORES

Você já deve ter notado a ênfase que é dada, nas lojas e na mídia em geral, ao processador, quando o assunto é modelos de computadores. De todos os componentes de um computador, o processador, sem dúvida, é aquele sobre o qual mais fábulas foram criadas ao longo da história. Fabricantes de microeletrônicos e, sobretudo, o comércio varejista, frequentemente se valem da falta de compreensão a respeito do funcionamento de tais componentes, a fim de promover suas vendas.

Vale dizer que, embora existam processadores destinados aos mais diversos fins, e que sejam empregados, em parte considerável dos eletrodomésticos produzidos recentemente, a maioria das pessoas se acostumou a associar o termo a um tipo bastante específico de processador: os microprocessadores de propósitos gerais. São eles, exatamente, que propomos aqui, como foco da atenção.

GERADORES DE CLOCK

Observe ainda, que intimamente associado à unidade central de processamento, existe um circuito bastante simples, denominado gerador de clock, responsável pelo envio periódico de sinais elétricos ao barramento frontal, que ditarão a frequência de trabalho do processador.

O circuito gerador de clock é bastante simples. Isso é verdade, e ele não seria digno de maiores detalhes, não fosse a criatividade da indústria de publicidade: quando um ator de comercial de TV anuncia a venda de um “computador com processador de 1 giga”, ele inconscientemente faz referência à frequência de cerca de 1 bilhão de vezes por segundo, com que o gerador de clock envia pulsos elétricos ao processador através do barramento frontal, e que o processador executa instruções contidas na memória RAM.

Então, você fica imaginando... que frequências como aquelas, em que trabalham o gerador de clock e a unidade central de processamento, ao primeiro contato podem parecer muito elevadas, e na realidade foi exatamente nisso que elas se transformaram. Sob o prisma da física, chegou-se ao ponto em que o aumento sistemático da frequência de operação do clock, como resultado da busca incessante por melhoria de desempenho, encontrou como limitante, a velocidade de propagação de impulsos eletromagnéticos.

Isto em virtude de que, voltando ao exemplo do processador de 1 giga, a onda elétrica vinda do gerador de clock (resultante da criação momentânea de um campo magnético sobre um condutor metálico típico) teria que desencadear todas as alterações de estados nos circuitos afetados pela respectiva instrução, antes da ocorrência do próximo impulso, ou seja, em um intervalo de aproximadamente um bilionésimo de segundo. Considerando, de um modo geral, que a velocidade de propagação de radiações eletromagnéticas se situa na faixa dos 300.000 km/s, não é complicado perceber que na nossa máquina de exemplo, entre dois sinais consecutivos de clock, a malha disponível para o fluxo da corrente, obrigatoriamente, deveria possuir alguns poucos centímetros, sob a pena de que, caso assim não o fosse, um sinal de clock se sobreporia ao anterior, e fatalmente causaria a corrupção do estado intermediário, armazenado nos circuitos.

A CORRIDA PELO DESEMPENHO
É importante saber que, como consequência, a corrida pelo aumento de desempenho implicou na aceleração da corrida pela integração de componentes. Esta última trouxe à tona um problema antigo, mas que ainda não havia recebido a atenção necessária, da indústria de microeletrônicos: o da degradação da energia elétrica em forma de calor. À medida que as técnicas de miniaturização foram sendo empregadas na fabricação de componentes eletrônicos, menores se tornaram as suas capacidades de trocar calor com o meio, uma vez que a facilidade com que dois corpos trocam calor é proporcional, entre outros fatores, à dimensão da superfície que os separa, o que fazia, e de certa forma ainda faz, com que o calor dissipado pela corrente que fluía através deles, se acumulasse e, em casos extremos, danificasse o componente.

DISSIPADORES DE CALOR
Agora observe na figura ao lado, que certos circuitos não periféricos, a exemplo da unidade central de processamento, o northbridge, o southbridge, e processadores gráficos em geral, são especialmente penalizados pelo problema da dissipação excessiva de calor. E não é por outra razão, que dificilmente um iniciante consegue localizá-los dentro de um computador aberto, senão por ter se tornado prática comum associá-los a dissipadores: estruturas usualmente fabricadas com cerâmica ou metal, possuidoras de alto poder de condutibilidade térmica, e que por tal, favorecem o fluxo do calor dissipado.

O QUE É UMA INSTRUÇÃO?
Um programa de computador é um arquivo que contém uma sequência de instruções destinadas ao processador. Enquanto o programa não está sendo executado, o arquivo fica armazenado no disco rígido da máquina. No momento em que é executado - o que ocorre, por exemplo, quando você dá um duplo clique sobre o ícone que o representa - as instruções do programa são copiadas para a memória RAM e enviadas uma a uma para o processador. O processador, então, as interpreta e executa as operações necessárias. Os processadores modernos suportam uma variedade de instruções, e elas podem representar diversos conceitos distintos: somar dois números, pintar um pixel na tela com uma cor específica, obter ou enviar informações para dispositivos periféricos, são alguns exemplos.

CICLO DE EXECUÇÃO DE INSTRUÇÕES
Por outro lado, podemos perceber que a existência do ciclo de processamento pouco nos diz a respeito da organização interna do processador. A verdade é que existem, dentro do núcleo da maioria dos processadores modernos, três repartições, sendo que cada uma, encontra-se envolvida em uma ou mais etapas do ciclo fetch-decode-execute, em português, busca-decodificação-execução. De tal modo que a busca e a decodificação de instruções são relegadas a uma repartição denominada unidade de controle, ao passo que a etapa seguinte, de execução, é atribuída à unidade lógica e aritmética. Para melhor compreensão do que comentamos aqui, sobre essas estruturas, o convidamos a observar a ilustração no diagrama de blocos da figura.



REGISTRADORES
Vale observarmos que, durante os instantes que sucedem a busca e precedem a decodificação, certos dados referentes à instrução a ser executada são temporariamente armazenados em unidades de memória denominadas registradores, com funções semelhantes aos módulos RAM, mas com uma distinção importante: registradores são mantidos internamente aos processadores e, por esta e outras razões, os dados que encerram podem ser acessados em muito menor tempo. Esse recurso é considerado extremamente importante, quando se percebe o quanto é difícil a tarefa de manter a sincronia e o desempenho do sistema como um todo.
Bom, imaginamos que até aqui, você já deve ter uma ideia um pouco mais clara sobre o ciclo busca-decodificação-execução de execução de instruções em um processador moderno e suas estruturas relacionadas. No entanto, gostaríamos de lhe informar que ainda existem outros personagens envolvidos, e que a partir de agora, eles também entrarão em cena. Imagine o seguinte cenário: você acabou de voltar de uma festa, e lá, você tinha tirado um monte de fotos com sua câmera fotográfica digital. Chegando em casa, você conecta a câmera no computador e para sua surpresa... Você percebe que esqueceu de usar o flash em todas as fotos! Elas estariam perdidas, e você, com certeza, apagaria todas elas. Mas por mera coincidência, você se lembra de um programa que tinha instalado alguns dias antes, no seu computador, para edição de imagens. Nossa, que alívio! Hein? Então, você decide usar esse programa para alterar a luminosidade das fotos e, embora o resultado não fique lá essas coisas, se formos comparar com uma foto tirada com flash, pelo menos você consegue distinguir seus amigos nas fotos, e vai poder assim, guardá-las como recordação.

PROGRAMAS DE EDIÇÃO DE IMAGENS
Há recursos interessantes em programas de edição de imagens. Aliás, há muitos recursos interessantes neste tipo de software. Mas uma das funcionalidades mais notáveis é que, processamentos como os de alteração da iluminação de uma imagem possuem natureza repetitiva. Intuitivamente, como você deve saber, imagens digitais são formadas por um conjunto de pontos denominados pixels. A única coisa que programas de edição de imagens fazem, na maioria das vezes, é alterar as propriedades de cada um dos pixels que compõem os arquivos sobre os quais eles operam. Então, é de se supor que as instruções do programa usadas para se alterar a luminosidade de qualquer pixel de uma imagem, sejam exatamente iguais às instruções usadas na alteração de quaisquer outros pixels da mesma imagem.

MEMÓRIA CACHE
Agora, já com esses outros personagens em cena, voltando ao contexto do ciclo de execução de instruções, fica evidente o quanto seria trabalhoso se o processador acessasse, para cada pixel da imagem, a mesma instrução da memória RAM. Será que ele não poderia simplesmente armazenar dentro de si, instruções que fossem executadas repetidamente, evitando assim, acessar o barramento da memória e ter que esperar até que os módulos RAM estivessem prontos para enviá-las? De fato, é exatamente isso o que ocorre dentro da maioria dos processadores atuais. Essa região interna ao processador, onde são armazenadas instruções repetidas, é denominada memória cache, e é justamente a capacidade de armazenamento dessas estruturas, um dos fatores que mais contribuem para o desempenho de um processador. Isso se explica pelo fato de que, independente do tipo de software, seja ele um programa de edição de imagens, um navegador, ou um player de vídeo, a ocorrência repetitiva de instruções idênticas é bastante comum.

CONCLUSÃO
Poderíamos detalhar mais o funcionamento das memórias cache, mas para o momento, consideramos como suficiente que você entenda as razões que as tornam importantes. Este conhecimento, aliado às informações que serão apresentadas nas seções seguintes, permitirão que você tome a decisão mais sensata no momento em que precisar adquirir o seu próprio computador.

UNIDADE III - MEMÓRIA RAM

RECAPITULANDO
omo vimos nas etapas anteriores, um resultado importante do aumento da frequência de trabalho do processador foi o encurtamento das distâncias que separam os componentes, de modo que o intervalo de tempo entre dois pulsos consecutivos de clock fosse suficiente para que a corrente elétrica caminhasse pelo circuito. O passo que seguiu essa técnica foi manter ainda mais próximos do processador, aqueles componentes envolvidos em cargas de trabalho pesadas, permitindo que pudessem se comunicar através de barramentos velozes. Assim surgiu o northbridge.

MEMÓRIA RAM E CONTROLADOR DE MEMÓRIA
Talvez você não tenha vivido essa experiência, mas na época em que o vídeo cassete era o sonho dos consumidores, não era raro ser surpreendido com avisos solicitando que, antes de se devolver uma fita VHS alugada, deveria rebobiná-la. Caso você não tenha passado por isso, rebobinar significa retroceder o rolo de filme contido dentro da fita, até o início, deixando-a preparada para o próximo cliente da locadora que tivesse interesse em alugá-la. Esse procedimento era necessário porque, usando os recursos de um vídeo cassete, não era possível partir de uma cena do filme e avançar instantaneamente para outra cena qualquer. Por essa razão, fitas de vídeo cassete são enquadradas como dispositivos de armazenamento de acesso sequencial.

Agora, uma desvantagem própria dos dispositivos de armazenamento de acesso sequencial, reside no fato de que, quanto maior sua capacidade, maior o tempo perdido na localização de determinada informação. Essa limitação foi responsável pela mobilização da indústria eletrônica com vistas à invenção de dispositivos de armazenamento de acesso randômico, que oferecem velocidades constantes de acesso, independentes, portanto, da localização do dado em seu interior.

E SE NÃO HOUVESSE CONTROLADORES DE MEMÓRIA?
Você pode observar, como exemplificado no vídeo, que durante o ciclo busca-decodificação-execução, ao fazer uma busca em RAM por uma instrução, basta ao processador se comunicar com o controlador e solicitar a instrução contida no endereço 1000, ou 20.000 ou qualquer que seja a localização na sequência de endereços. Portanto, não há necessidade de informar precisamente em quais módulos e chip ela se encontra. Então, se o plano sair como combinado, alguns bilionésimos de segundo depois de feita a solicitação, o processador terá “em mãos” o dado requerido.

O GARGALO DE VON NEUMANN
Como você pode perceber, até aqui, preocupamos em enumerar as cenas da peça onde atua a memória RAM, mas foram poucas as intervenções orientadas à apresentação de tais dispositivos como componentes independentes. A verdade é que o desconforto histórico causado pelo descompasso existente entre memória e processador (o que é apresentado, no vídeo ao lado, como Gargalo de Von Neumann) gerou uma variedade de modelos tão diversificada que sua apresentação só poderia soar coerente se feita após a exposição de seu uso.

Sendo assim, vale ressaltarmos que, do ponto de vista taxonômico, as referências anteriores à memória RAM foram pouco precisas. A rigor, memórias RAM não compreendem um único tipo de dispositivo eletrônico, mas uma variedade inteira. Você gostaria de saber em decorrência do quê, não é mesmo? Bom, elas, corriqueiramente, são classificadas de acordo com critérios referentes a certas características de seus módulos, como: encapsulamento, dinamicidade e volatilidade. Vamos analisar cada um deles.

ENCAPSULAMENTO
Mediante o critério do encapsulamento, classificam-se os dispositivos de memória RAM em três grupos distintos: SIMM, DIMM e RIMM. Na prática, esse critério poderia ser relevante, se durante a corrida na disputa pela aceitação do mercado, a combinação de desempenho e o preço acessível das memórias DIMM não tivesse conferido a elas tamanha vantagem sobre os modelos concorrentes. Passada essa fase da competição, tudo o que restou foram anedotas sobre as memórias SIMM, referentes a tempos em que, quando não instaladas aos pares, impediam que o computador sequer fosse ligado. Ainda, associada à beleza desses dissipadores metálicos que, ao mesmo tempo em que cobriam os chips dos módulos RIMM e ocultavam o preço exorbitante com que eram vendidos, também revelavam o desfecho menos ambicioso, restrito a nichos específicos, daquela tecnologia por vezes considerada a antecipação de uma receita de sucesso para a aceitação em massa que ela jamais obteve.

Observe a Figura, nela há representações dos três formatos de encapsulamento discutidos. As memórias RAM dos tipos SIMM e DIMM são identificadas, respectivamente, por perfurações circulares e semicirculares contidas nas extremidades de seus módulos. Veja que a identificação das memórias RIMM e seus chamativos dissipadores, não apresentam dúvida.

VOLATILIDADE
O critério da volatilidade, como o próprio nome sugere, divide as memórias RAM em dois grupos: o das memórias RAM voláteis, representado por dispositivos cujos conteúdos dependem de realimentação elétrica; e o grupo das memórias RAM não voláteis, cujos conteúdos independem de realimentação. Entretanto, é importante que você esteja atento ao fato de que o uso popular da expressão “memória RAM” tratou injustamente de consagrar as RAM voláteis como as únicas representantes da classe.

VOLATILIDADE, NA PRÁTICA
Tratamos das RAM voláteis. Agora, focaremos as memórias RAM não voláteis que têm ganhado notícia, pois elas são o meio mais difundido de armazenamento do conteúdo de players de áudio e vídeo portáteis. Podemos ainda, destacar outro emprego de fundamental importância e menor visibilidade da variedade não volátil das memórias RAM, que é o que consiste na fabricação de circuitos que contêm um tipo híbrido de hardware e software denominado BIOS. Este assunto será discutido mais adiante, em uma seção à parte.

DINAMICIDADE

Continuando a nossa discussão sobre a taxonomia das memórias RAM, chegamos à dinamicidade, o mais importante dos três critérios e que, como sugere a palavra, responde pela divisão das RAM em dois grupos distintos: as memórias estáticas e as memórias dinâmicas.

As memórias RAM estáticas, comumente denominadas SRAM, são compostas por uma infinidade de circuitos denominados flip-flops. Esses circuitos são portadores de certas propriedades que a manutenção de determinados regimes de tensão elétrica, em seus terminais de entrada, gera, em seus terminais de saída, correntes que podem ser interpretadas como os dois estados, 0 e 1, correspondentes aos possíveis valores da menor unidade de informação digital: o já mencionado bit.
As memórias RAM dinâmicas, comumente denominadas DRAM, devem sua estruturação a um conjunto muito numeroso de capacitores, cada um dos quais com potencial de representar os dois estados de um bit; bastando para tanto que esteja eletrizado ou descarregado.

Assim como os nossos corpos que constantemente se eletrizam e perdem a carga elétrica resultante do atrito com o ar, a carga elétrica repassada aos capacitores que compreendem os módulos de memória DRAM também é perdida no ambiente em que se encontram. Por conta disso, os módulos de memória fabricados com esta tecnologia precisam ser periodicamente realimentados. Esta tarefa repetitiva de realimentação elétrica de módulos de memória DRAM é mais conhecida pelo termo em inglês refresh, e é mais uma das responsabilidades que fazem do controlador de memória um dos componentes fundamentais dos computadores modernos.

Vale destacarmos que as memórias DRAM são tradicionalmente caracterizadas por trabalhar sob o ritmo do circuito gerador de clock associado ao barramento frontal. Diz-se, por isso, que elas são memórias “síncronas”. Os modelos mais comercializados, atualmente, de módulos DRAM, são memórias síncronas, capazes de operar a frequências muito altas e com larguras de banda consideráveis. Ao anunciá-las, a indústria exibiu mais uma vez sua preferência pelas siglas, batizando-as de DDR.

CONCLUSÃO

Discutimos bastante a respeito das memórias de acesso randômico, mas mesmo assim, não esgotamos esse assunto. Nem era essa a nossa intenção, pois a cada dia novos modelos, baseados em novas tecnologias, são lançados no mercado e, a quantidade de informações que trazem consigo, torna-se inesgotável, até mesmo para quem se dedica exclusivamente ao estudo da área. Nosso intuito foi apresentar uma imagem mais coesa desse campo, baseada na identificação de grupos de componentes com características semelhantes e na análise das aplicações desses grupos. Esperamos que assim, você tenha uma visão mais clara dessa questão e, nas mãos, a capacidade de fazer escolhas que, na prática, sejam mais adequadas.


UNIDADE IV - COMPONENTES GRÁFICOS

COMPONENTES DE PROCESSAMENTO GRÁFICO
Enquanto falávamos sobre o ciclo de execução de instruções, ressaltamos a importância do controlador de memória ao descrever sua principal responsabilidade: oferecer para o restante dos componentes do sistema uma representação menos complexa da memória RAM, de forma que seu conteúdo pudesse ser acessado através de endereços lineares, ao invés da abordagem baseada em módulos e chips. De forma análoga à maneira com que o controlador de memória reduz a complexidade inerente ao acesso à memória RAM, um circuito denominado controlador de vídeo simplifica o acesso ao conteúdo exibido no monitor de vídeo. Mas de que forma? Você poderá encontrar as respostas a esta e outras questões nesta seção.

TUBOS DE RAIOS CATÓDICOS

Até recentemente, a maior parte dos modelos de monitores disponíveis no mercado era do tipo CRT. Monitores CRT, como ilustra a figura, em suma, são constituídos por uma ampola de vidro forrada internamente por um material luminescente, no interior da qual se aloja um dispositivo eletrônico denominado tubo de raios catódicos, capaz de emitir feixes de elétrons. Por meio da aplicação de um campo magnético sobre os feixes de elétrons, é possível desviar a direção de suas trajetórias, fazendo-os chocar em pontos e instantes específicos da região interna da ampola, iluminando-os, assim, com intensidades e cores desejadas.

MEMÓRIA DE VÍDEO
Os estímulos elétricos responsáveis pela ativação do campo magnético que causa a deflexão dos feixes emitidos pelo canhão de elétrons, como descrita anteriormente, é uma das mais maiores responsabilidades de um componente mencionado no início desta unidade: o controlador de vídeo. A região da memória RAM acessada a cada nova varredura pelo controlador de vídeo, que contém as cores com as quais devem ser pintados os pixels que compõem a imagem da tela, é denominada memória de vídeo ou framebuffer.

FLICKERING
A capacidade de retenção de energia do material luminescente, entretanto, é extremamente reduzida; o que torna o fenômeno da irradiação luminosa dos minúsculos pontos que compõem a imagem na tela, incrivelmente efêmero. Imediatamente após terem sido energizados, sua luminosidade começa a diminuir; e não seriam necessários mais do que alguns poucos décimos de segundos para que o decaimento fosse percebido por qualquer pessoa. Tal limitação foi, em parte, resolvida por meio de uma ideia engenhosa: periodicamente, sob uma frequência configurável denominada taxa de refresh, CRTs varrem a superfície interna de sua tela, reenergizando os pontos que compõem a imagem exibida. Diz-se, em parte, porque monitores incapazes de operar sob taxas de refresh mais altas, geralmente os mais baratos, causam um desconforto visual típico, decorrente de um fenômeno sensorial denominado flickering, caracterizado pela sensação de cintilância do conteúdo da tela.

TEARING
Você já sabe que um game altera o conteúdo da memória de vídeo, e que esta última é acessada pelo controlador de vídeo de modo que ele possa instruir o monitor sobre como colorir os pixels da tela. Imagine, então, se a memória de vídeo dos computadores fosse dividida em duas áreas distintas: uma referente às cores dos pixels contidos na metade superior da tela, e outra referente às cores dos pixels da metade inferior. Suponha também que a varredura feita pelo controlador de vídeo pudesse ser dividida em duas etapas: uma para cada região da tela. Nestas circunstâncias, seria possível ocorrer o seguinte:


O fato comentado anteriormente, de o controlador de vídeo, ao completar a varredura, acessar a área da memória de vídeo referente à metade inferior da tela e instruir o monitor a exibir um fragmento de imagem, é denominado tearing, e é responsável pela frustração dos mais diversos tipos de usuários: desde os amantes de games, para os quais as menores inconsistências visuais são razões suficientes para se deixarem irritar; até usuários comuns, geralmente ansiosos por tirar proveito das experiências que o mercado publicitário não teme por garantir. Embora confundido com o flickering, que é causado por taxas de refresh muito baixas, o tearing resulta, na maior parte das vezes, da imperícia de desenvolvedores de software que ignoram o funcionamento interno das máquinas, especialmente no que diz respeito à maneira com que seus componentes se comunicam.

DOUBLE BUFFERING
Controladores de vídeo, sempre que concluem a varredura da última linha da tela, notificam tal evento aos programas interessados; que por sua vez, devem interpretar tal notificação como a chegada do momento mais propício para a alteração do conteúdo da memória de vídeo. Ocorre que determinados tipos de software recorrem a cálculos computacionais tão intensivos, que mesmo que trabalhassem de forma coordenada com o controlador de vídeo, produziriam flickering, caso a geração fosse feita diretamente sobre a memória de vídeo. A solução empregada por tais softwares, na classe dos quais se enquadra, a título de curiosidade, boa parte dos games modernos, reside em gerar a imagem em uma segunda área da memória RAM e transferi-la de uma só vez, e no instante adequado, para a memória de vídeo. Esta técnica é conhecida por double buffering. A política de intercomunicação da qual participam, neste caso, o controlador de vídeo e outros componentes do sistema, é denominada interrupção, e será um dos assuntos da próxima unidade.

PIXELS
Um tubo de raios catódicos, a bem da verdade, desencadeia efeitos luminescentes de uma única cor; vermelha, verde ou azul. Assim, a representação convincente do espectro de luz visível, por uma limitação física, prescinde da atuação conjunta de três tubos, incumbidos da luminescência simultânea de uma tríade de pontos, que em conjunto compõem um pixel na tela. Essa tríade que forma um pixel, normalmente se encontra em uma disposição triangular equilateral e cada um dos pontos ocupa um dos vértices do triângulo. A distância entre os centros de dois pontos de mesma cor pertencentes a pixels adjacentes é denominada dot pitch, e configura um fator crucial para a exibição nítida de imagens. Com isso, normalmente, quanto menor o dot pitch, melhor e também mais caro será o monitor.

TAXA DE CONTRASTE
A taxa de contraste de um monitor de vídeo, por exemplo, nada mais é que uma medida indireta da diferença de luminosidade existente entre o ponto mais brilhante que o dispositivo é capaz de exibir, e o ponto menos brilhante; quaisquer que sejam as cores desses pontos. E a importância dessa taxa de contraste está diretamente relacionada à fisiologia humana como, por exemplo, a da sensibilidade dos nossos olhos às variações de luminosidade que é ainda maior que nossa capacidade de distinguir várias escalas de cores. Assim, quanto maior a taxa de contraste de um monitor, maior será a sua fidelidade na representação do brilho de uma imagem, e mais caro será seu preço. Trataremos dessa questão da fisiologia do olho humano mais adiante, quando formos discutir certas técnicas computacionais para compactação de imagens.

RESOLUÇÃO DO VÍDEO
Quando tratamos do princípio de funcionamento dos monitores CRT, vimos que a imagem formada na tela é composta por um conjunto de pontos, agrupados em tríades denominadas pixels. Os pixels, por sua vez, encontram-se dispostos na tela sob a conformação de uma matriz semelhante à de um tabuleiro de xadrez, com duas significativas diferenças: primeiro, há muito mais pixels na tela de um monitor do que há casas em um tabuleiro; e segundo, o número de pixels pode ser alterado para valores pré-estabelecidos. Assim, a resolução máxima de um monitor de vídeo indica a maior quantidade de pixels, consideradas as direções horizontal e vertical, que podem ser usados para se representar imagens na tela. E da mesma forma que um pintor, por mais habilidoso que seja, será incapaz de pintar um retrato pequenino com um pincel grande de cerdas espessas, um monitor não conseguirá exibir imagens detalhadas com precisão satisfatória em áreas muito reduzidas, tarefa a que seria submetido caso sua resolução tivesse sido alterada para valores pequenos, em que os centros dos pixels adjacentes se encontram mais distantes uns dos outros. Como você já deve imaginar, quanto maior a resolução máxima de um monitor de vídeo, maior será seu preço.

A METÁFORA DO DESKTOP
Em meados da década de 80, quando a indústria de microcomputadores dava seus primeiros passos em direção à tentativa de popularização da metáfora do desktop, tão profundamente dependente das interfaces gráficas de interação, surgiu a necessidade da adoção de padrões que pudessem nortear o desenvolvimento das tecnologias envolvidas. Um desses padrões foi denominado VGA, e tinha por objetivo definir recursos mínimos de hardware, que permitissem alavancar a disseminação das interfaces gráficas. A partir de então, aos fabricantes de monitores de vídeo interessados no usufruto das óbvias vantagens advindas da associação dos nomes de seus produtos ao de um padrão tão requisitado quanto o VGA, bastava equipá-los com conectores baratos e telas requintadas para a época: capazes de exibir imagens coloridas sobre uma matriz que deveria possuir 640 pixels na largura e 480 pixels na altura.

O PADRÃO VGA
Do ponto de vista histórico, alguns fatos referentes ao desenvolvimento do padrão VGA parecem irônicos. A qualidade superior dos monitores compatíveis com aquele padrão foi, sem dúvida alguma, essencial para sua permanência no mercado; tal afirmativa representa a conclusão a que se chega depois de considerada como são voláteis as tecnologias empregadas na criação de computadores pessoais. O irônico, no entanto, é que a história tratou de conceder créditos não à qualidade das telas de vídeo VGA, intangível por natureza, mas sim ao conector barato que as ligavam ao gabinete do computador. E tamanho foi o desequilíbrio nessa concessão, que ainda hoje, não é exagero dizer que a maior parte das pessoas ignora completamente a existência da sigla VGA, embora saiba que o monitor de vídeo, a que tem acesso, está ligado ao computador por meio de um cabo decorado, em uma de suas extremidades, por um belo conector azul.

Ainda mais surpreendente é o fato de que, mesmo que não tenham acesso a computadores pessoais, essas pessoas, muito provavelmente, têm contato direto com telas compatíveis com o padrão VGA. A matriz de 640 por 480 pixels que muitos consideraram fadada ao esquecimento, hoje em dia atua como coadjuvante no épico da convergência tecnológica, equipando telefones celulares, câmeras fotográficas digitais e handhelds dos mais variados modelos. Elas, enfim, voltaram a ser o canal por meio do qual a informação flui entre homens e máquinas.

CONECTIVIDADE
Tecnologias usadas na construção dos componentes de ligação entre um computador e um monitor de vídeo compreendem o fator da conectividade; e como já era de se imaginar, são responsáveis, em parte, pelo preço destes equipamentos. Recentemente, diversas tecnologias de conexão foram criadas; a maioria das quais, inventadas com o propósito único de reverter certas limitações impregnadas no padrão VGA. A seguir, analisaremos brevemente três destas limitações, e também as respostas dadas a elas pela indústria de microeletrônicos: os padrões de conexão DVI e HDMI.

INTERFERÊNCIA ELETROMAGNÉTICA
No início do século XX, o físico dinamarquês,
Hans Christian Oersted, fez uma descoberta interessante. Ele percebeu que a agulha de uma bússola, que em condições normais se mantinha alinhada com o campo magnético terrestre, sofria uma deflexão sempre que um fio metálico presente em suas proximidades era percorrido por uma corrente elétrica. A explicação dada por Oersted, para tal fenômeno, se baseava na teoria de que o movimento ordenado de elétrons através do condutor, provocava em suas vizinhanças, o aparecimento de um novo campo magnético, cuja interação com o campo magnético terrestre era responsável pelo movimento da agulha. Pela primeira vez na história, fenômenos elétricos puderam ser formalmente associados a fenômenos magnéticos.

O PADRÃO DVI
Em dispositivos cujo aproveitamento da corrente elétrica se dá apenas no nível térmico, a exemplo de chuveiros e ferros de passar, a presença de ruídos na corrente é absolutamente desprezível. Entretanto, dispositivos eletrônicos mais refinados, como é o caso de computadores modernos, se valem de mecanismos de sincronia bastante precisos para atribuição de significado aos sinais transportados pela corrente elétrica. E tamanha é a delicadeza dessa operação, que ruídos mínimos no sinal são capazes de alterar seu significado. O padrão de conectividade DVI foi criado, entre outras razões, como meio de se contornar as limitações do padrão VGA inerentes a este quesito.

O PADRÃO HDMI
A tecnologia de conectividade HDMI foi desenvolvida por um consórcio de empresas formado com o intuito de oferecer meios que suprissem as demandas inerentes à transmissão digital de conteúdo audiovisual. Uma preocupação secundária dos participantes do consórcio era a disseminação de mecanismos que impedissem, ou ao menos dificultassem, a subversão de direitos autorais digitais; o que se concretizou com a criação de um padrão atrelado denominado HDCP.

A UNIDADE DE PROCESSAMENTO GRÁFICO
Para finalizar esta unidade, nos ateremos à análise de um componente de importância central dos computadores pessoais modernos, o qual, até agora, apenas ousamos citar: a Unidade de Processamento Gráfico, ou simplesmente GPU como sugere, em inglês, o nome que dá origem à sigla. Concomitantemente, ainda seguindo a filosofia adotada no início deste curso, veremos como se dá a interdependência da GPU com o restante do sistema e de que maneira eles se coordenam a fim de executar as tarefas que lhes são cabidas.

A UNIDADE DE PROCESSAMENTO GRÁFICO
A revolução causada pela invenção do desktop atuou como força aceleradora da convergência tecnológica, e fomentou práticas que os pioneiros da informática sequer vislumbraram há menos de um século. Assim, a compartimentalização da GPU em unidades funcionais distintas revela a motivação oculta por trás de sua origem: primordialmente, processadores gráficos foram projetados como solução para as restrições de desempenho provenientes do emprego dos computadores na realização de tarefas antes desempenhadas apenas por dispositivos especializados. Usar a tela do computador para assistir vídeos de alta definição ou se divertir com games de última geração tornou-se prática comum entre uma parcela significativa da população. Mas, em termos práticos, que operações são essas das quais tanto se valem os ambientes de desktop, a exibição de vídeos em alta definição e a execução de games? Vamos analisar, caso a caso, a seguir.

OPERAÇÕES GRÁFICAS 2D

O termo ambiente de desktop trata de um estilo de interface de usuário encontrada atualmente por toda a parte, baseada na metáfora do desktop, em que os softwares mais frequentemente usados e as configurações mais comuns do sistema são dispostos de maneira que o usuário possa acessá-los com o mínimo de dificuldade. Seguindo esta tendência, ambientes de desktop modernos fazem uso, por exemplo, de janelas transparentes que permitem a visualização do conteúdo sobre o qual ela se posta. Em meados de 1980, dois pesquisadores publicaram um artigo notável, em que fundamentaram teoricamente uma álgebra destinada à representação de operações voltadas à composição digital de imagens.

Esse modelo matemático levou o nome de seus idealizadores, Thomas Porter e Tom Duff; e tornou possível a simulação da transparência em elementos de interface. Entretanto, a demanda computacional associada à exibição de elementos transparentes, por anos a fio, atuou como um estorvo à disseminação daquelas técnicas; e tamanho era o comprometimento que causavam no desempenho dos processadores de propósitos gerais, que só se tornaram prevalecentes com o advento de componentes de processamento gráfico dedicados: as GPUs.

Além de operações de composição de imagens citadas acima, as engines 2D das GPUs modernas são capazes de realizar uma infinidade de outras tarefas. É bem provável que ao menos uma vez você já tenha usado seu computador para assistir vídeos em DVD. A depender da resolução usada na tela do seu monitor, e obviamente da disponibilidade de uma GPU em sua máquina, sem que tenha se dado conta, você pode ter visto não o vídeo contido no DVD, mas uma representação da versão íntegra, redimensionada a fim de ocupar mais harmonicamente o espaço da tela. Os cálculos matemáticos usados no redimensionamento dos quadros que compõem um vídeo são frequentemente relegados à GPU. Caso o vídeo tenha sido apresentado com legendas, maiores ainda são as chances de que uma GPU tenha sido envolvida.

Isso porque os cálculos para exibição de caracteres, denominados algoritmos de rasterização de glifos, também são computacionalmente pesados. Por esta mesma razão, as cores de fundo das janelas opacas do desktop, em geral, são preenchidas pela GPU através de operações denominadas fill. E a ela, normalmente, também cabe a tarefa da exibição dos ícones presentes na área de trabalho, e do cursor do mouse, ambas executadas por intermédio de operações bit blit. De uma forma geral, uma operação gráfica é realizada por meio de aceleração 2D sempre que sua execução envolve os recursos computacionais da engine 2D da GPU.

OPERAÇÕES GRÁFICAS 3D
De forma análoga, diz-se que quaisquer processamentos executados com o auxílio da engine 3D de um processador gráfico são realizados em regime de aceleração 3D. Podemos ver a representação destas duas operações através da interação ao lado. O mapeamento de texturas é um procedimento muito comum em games modernos por meio do qual uma imagem (textura) qualquer é aplicada sobre um objeto tridimensional. Já a rotação consiste nos movimentos que este objeto tridimensional é capaz de realizar. Mapeamentos de texturas e rotações no espaço, como você pode perceber, são procedimentos bastante complexos do ponto de vista computacional; e são, frequentemente, delegados à engine 3D de uma GPU.

Assim, finalizamos a quarta unidade do módulo Hardware. Nas próximas unidades trataremos dos componentes de um computador pessoal moderno que se ligam ao processador através de barramentos menos velozes.

UNIDADE V - BARRAMENTOS DE MÉDIA VELOCIDADE

A partir deste ponto, voltaremos nossa análise às responsabilidades que são atribuídas aos componentes periféricos de um computador pessoal. A nossa intenção é oferecer uma visão realista das formas como esses componentes se relacionam com os restantes e, assim, levá-lo a perceber que o funcionamento de um computador moderno, diferente da ideia que se tem, não se reduz apenas ao entendimento de seus componentes centrais. Se um computador pudesse ser visto como uma colcha de retalhos, ou seja, fabricado com periféricos e fios que se cruzam e entrecruzam, esta unidade certamente seria destinada ao estudo das técnicas usadas para unir os componentes uns aos outros.

MÉTODOS DE I/O
Os recursos de um computador que permitem a execução de operações semelhantes às citadas no vídeo deste slide, por meio das quais é possível estabelecer uma troca de informações entre o processador e os dispositivos periféricos, são denominados métodos de I/O, e representam um conceito-chave da computação moderna. Denomina-se ainda operações de I/O as operações oferecidas por cada método. A seguir, analisaremos mais detalhadamente três dos mais comuns métodos de I/O: I/O baseado em mapeamento de porta, I/O baseado em mapeamento de memória, e I/O baseado em interrupção.

EXEMPLO DE I/O BASEADO EM MAPEAMENTO DE PORTA

Para tanto, analisemos com mais detalhes, através da ilustração, o primeiro exemplo
citado há instantes atrás. Sempre que você digita em um computador, imediatamente após cada tecla ser pressionada, um sinal elétrico denominado
scan code contendo o valor da referida tecla, é enviado do teclado para um componente denominado controlador de teclado, que normalmente se encontra afixado sobre a placa mãe. O controlador de teclado armazena o valor da tecla em uma área de armazenamento temporário e, envia um sinal, avisando o processador a respeito do evento. O processador, então, se comunica com o controlador de teclado de forma a obter o valor da tecla digitada e, somente após, o exibe na tela.

I/O BASEADO EM MAPEAMENTO DE PORTA
A comunicação entre o processador e o dispositivo periférico, no caso em questão, representado pelo controlador de teclado, é baseada no conceito de portas de I/O, que são valores numéricos associados a alguns dispositivos periféricos conectados à máquina. Podemos dizer que o relacionamento das portas de I/O com os dispositivos, ocorre de maneira semelhante à forma com que se relacionam números de telefones e pessoas. Assim como é possível estabelecer contato com uma pessoa pelo seu número de telefone, também é possível acessar funcionalidades, de alguns dispositivos, através da execução de uma variedade específica de instruções, em conjunto, denominadas instruções de I/O, que tomam como parâmetro, um valor numérico pré-estabelecido, correspondente a uma porta de I/O. O método de I/O propiciado por computadores que oferecem suporte à execução de instruções de I/O, que a propósito compreendem a maior parte dos computadores pessoais, é denominado I/O baseado em mapeamento de porta, ou simplesmente PMIO.

I/O BASEADO EM MAPEAMENTO DE MEMÓRIA

Um segundo método de I/O muito comum é denominado I/O baseado em mapeamento de memória, ou MMIO. Dispositivos periféricos projetados para oferecer suporte a este método de comunicação mantêm vigilância constante sobre as operações que envolvem o acesso à memória RAM; reagindo de maneira específica sempre que ocorrem alterações em áreas da memória RAM monitoradas por eles.

EXEMPLO DE I/O BASEADO EM MAPEAMENTO DE MEMÓRIA
Você já deve ter notado que, nos instantes que sucedem a inicialização de um computador, os elementos de interação disponíveis para o usuário não são formados de janelas ou botões. Até o momento em que o sistema se habilita a exibir imagens, tudo o que se vê na tela são caracteres brancos dispostos sobre um fundo preto. Diz-se, por essa razão, que o computador opera em modo texto logo após sua inicialização, e em modo gráfico a partir desse momento. Sempre que é necessário exibir um caractere em modo texto ou um pixel em modo gráfico, é possível fazê-lo por meio da execução de uma instrução que modifica uma região específica da memória RAM, previamente reservada para esta função. Este é um exemplo típico de I/O baseado em mapeamento de memória.

EXEMPLO DE I/O BASEADO EM MAPEAMENTO DE MEMÓRIA
Como você já deve saber, os processadores pessoais modernos compreendem conjuntos enormes de instruções. Embora todos eles sejam capazes de executar os mesmos tipos de processamentos, a disponibilidade de instruções designadas especificamente para a solução de certos tipos de problemas é uma conveniência valiosa para programadores de computadores. Computadores que fazem uso de processadores capazes de lidar com diversidades grandes de instruções são enquadrados em uma categoria denominada CISC, em contraponto aos computadores RISC.

I/O BASEADO EM INTERRUPÇÃO
O terceiro e último método de comunicação discutido aqui é denominado I/O baseado em interrupção. Através desse método, um dispositivo periférico que necessita enviar dados para processamento, gera um sinal elétrico denominado interrupção, direcionado ao processador, para notificá-lo a respeito da necessidade de atenção. Como resposta, o processador interrompe imediatamente qualquer programa que esteja executando e então atende a requisição do dispositivo periférico, obtendo dele as informações convenientes e processando-as de maneira adequada. Ao final do atendimento a essa solicitação da requisição, o processador retoma o programa interrompido como se nada tivesse acontecido. Observe que a iniciativa relativa ao estabelecimento da comunicação, no caso do método de I/O baseado em interrupção, cabe invariavelmente ao dispositivo periférico, ao passo que nos métodos de PMIO e MMIO, cabe ao processador.

CONTROLADOR DE INTERRUPÇÕES
ma questão, entretanto, precisa ser esclarecida: embora a maioria dos computadores modernos conte com uma diversidade imensa de dispositivos periféricos, seus processadores contam apenas com alguns poucos pinos, quando não um único, dedicados ao recebimento de interrupções. E pelas mesmas razões que é preciso coordenar os veículos que se dirigem a uma mesma rodovia, vindos de estradas diferentes, também foi necessário racionalizar o uso do pino de interrupções do processador. Isso foi preciso, para que as interrupções advindas de dispositivos diferentes, e mesmo aquelas vindas de um mesmo dispositivo, não se chocassem umas com as outras. A solução para esse problema tomou a forma de um componente eletrônico conhecido por controlador de interrupções.

A figura ilustra um controlador de interrupções. A rigor, ele é constituído não por um, mas dois componentes eletrônicos, denominado controlador mestre de interrupções e controlador escravo de interrupções. Esses controladores são associados em cascata e mantidos em contato por um dos vários pinos metálicos que os compõem. Cada um dos referidos pinos é identificado por um valor numérico e é reservado para uso de um único dispositivo periférico. O controlador de interrupções mestre permanece conectado ao pino de interrupções do processador, e tal é a organização deste conjunto, que qualquer interrupção gerada por periféricos do sistema pode ser, seguramente, encaminhada para o processador.

CONTROLADOR DE INTERRUPÇÕES 8259
Assim, finalizamos a análise dos princípios envolvidos na comunicação entre os componentes de um computador. Certamente, ainda há espaço para explorar mais o conteúdo apresentado. Máquinas modernas, por exemplo, contam com uma quantidade de dispositivos periféricos que facilmente ultrapassa o limite imposto pela disponibilidade de pinos do controlador de interrupções, descrito nesta unidade. Além do que, como já foi mencionado em outra ocasião, a maior parte dos computadores pessoais, comercializados atualmente, é equipada não com um, mas com vários núcleos de processamento, encerrados em um único revestimento cerâmico. Isso nos leva a crer que a carga resultante do tratamento das interrupções vindas de um número grande de dispositivos, devesse ser distribuída igualmente pelos núcleos, para evitar que alguns permanecessem sobrecarregados, ao passo que outros ficassem sem ter o que fazer. As soluções para esses problemas foram asseguradas por meio de extensões implementadas sobre a estrutura básica do controlador de interrupções, que culminaram no desenvolvimento de uma série de componentes que, atuando em conjunto, são capazes de lidar com a diversidade atual de periféricos e processadores, da qual todos nós temos nos beneficiado.

PIT, O TIMER DE INTERVALO PROGRAMÁVEL
No início do século XX, dois cientistas publicaram um estudo que desvendou um dos grandes mistérios da medicina. Embora as explorações acerca do funcionamento do corpo humano tivessem alcançado resultados incríveis, até aquele momento ninguém havia dado explicações que justificassem, de modo convincente, um fenômeno muito simples: o batimento do coração. Pesquisadores já haviam montado parte do quebra-cabeça, ao descreverem as influências de determinados hormônios sobre a frequência cardíaca, mas a razão direta das contrações do coração permanecia desconhecida. A busca pela explicação perdurou até 1907, quando Arthur Keith e Martin Flack anunciaram a descoberta de um aglomerado de células denominado nódulo sinoatrial, disposto no interior do músculo cardíaco, responsável pelo envio de sinais elétricos que, em último caso, induziam a contração do miocárdio.

Do ponto de vista biológico, o batimento do coração faz parte de uma rede complexa de atividades orgânicas que propiciam a homeostase - estado de equilíbrio fisiológico indispensável a todo ser vivente -, e que se estendem desde as esferas macroscópicas, nas quais se situam, por exemplo, os movimentos peristálticos da digestão, até as microscópicas, nas quais ocorre a transformação da energia contida nos alimentos que ingerimos. Quando observado pelo prisma do processamento de informações, levando em conta sua relação com o sistema nervoso central, entretanto, o batimento do coração pode ser visto como uma atividade de suporte, imprescindível ao funcionamento do sistema nervoso central.

Por diversas vezes, você já deve ter tido a sensação de que vários programas são executados simultaneamente em seu computador. Ouvir música enquanto navegamos na internet ou digitamos um texto são práticas tão comuns, que nós sequer temos a noção de quanto são complexos os desafios escondidos por trás das interfaces amigáveis de usuário. A bem da verdade, todo computador pessoal moderno faz uso de um software bastante complexo, denominado sistema operacional, que tem como principal finalidade a gestão dos recursos da máquina.


Como você viu na unidade II deste módulo, o processador é um dos recursos mais importantes de um computador e, por isso, o sistema operacional deve buscar meios de utilizá-lo de forma tão otimizada quanto possível, levando em conta os perfis das cargas de trabalho a que eventualmente será submetido. Uma maneira bastante eficiente de usar o processador de um computador pessoal típico, consiste em promover uma alternância de processamento entre os programas que o usuário deseja executar ao mesmo tempo. Assim, desde que os cuidados devidos sejam tomados, é possível executar o navegador de internet durante uma fração muito pequena de segundos, pausá-lo enquanto outros programas quaisquer são executados durante intervalos de tempo semelhantes, e dar prosseguimento à execução do navegador como se ele jamais tivesse sido interrompido. Uma questão crucial referente à implementação de esquemas desse tipo, reside no fato de que, se a fração de segundos em que os programas permanecem inativos for cuidadosamente escolhida, o usuário não perceberá o rodízio a que eles estão submetidos, e terá a impressão de ter sido atendido pela execução simultânea e contínua de vários programas. A função descrita aqui e ilustrada na figura, que compreende sucessivas ativações e inativações de programas a fim de propiciar melhorias na qualidade da experiência do usuário, é denominada escalonamento de processos. E como você verá mais detalhadamente em outro módulo, é uma das atividades de suporte mais importantes de um computador.

Seria perfeitamente possível implementar uma extensão do sistema operacional que periodicamente o informasse sobre a necessidade da execução de atividades de suporte, a exemplo do escalonamento de processos, mas a carga envolvida seria alta demais. A alternativa à qual recorrem os sistemas operacionais modernos, é fazer uso das facilidades oferecidas por um circuito integrado denominado timer de intervalo programável, ou simplesmente PIT, presente em praticamente todos os computadores pessoais. Então, assim como o nódulo sinoatrial informa o coração sobre o momento exato de se contrair, os PITs podem ser programados para avisar o processador sobre a hora exata da execução de atividades de suporte. Dessa forma, cabe aos sistemas operacionais programar o PIT durante a inicialização da máquina, de modo que ele passe a gerar sinais periódicos de interrupção, em resposta aos quais são executadas ações específicas para aquele dispositivo. O que no caso do PIT inclui a decisão referente à possibilidade do escalonamento de processos.

A origem do emprego de PITs em computadores pessoais, no entanto, data de meados da década de 80, época em que os requisitos impostos pelo software, sobre o hardware, eram bem diferentes dos atuais. Desde então, classes inteiras de aplicativos surgiram. Sistemas de tempo real, cuja exatidão pode ser comprometida por atrasos mínimos de processamento, tornaram-se mais comuns. Sistemas multimídia, que dependem de um controle rígido sobre a taxa de transmissão de canais de áudio e vídeo, passaram a fazer parte do cotidiano das pessoas, e disseminaram consigo a necessidade de componentes de hardware mais apurados, capazes de suprir as demandas geradas pelas inovações dos softwares. Pouco a pouco, fontes de interrupções como o PIT estão sendo substituídas por componentes mais precisos, em alguns casos denominados HPET.