Processadores
Funcionamento

Por que um Pentium funcionando a 100 MHz é muito mais rápido do que um 486, mesmo se este funcionando também a 100 MHz?

Façamos um esforço de simplificação e imagine um processsador como uma fábrica com uma série de linhas de produção paralelas, essas linhas de produção formam o chamado "set de instruções". Pois bem, em um ciclo de máquina essas "linhas de produção" andam um pedaço, algumas terminam o seu trabalho em apenas um ciclo - o Pentium processa duas instruções MMX em apenas um ciclo, por exemplo. A quantidade de instruções ou etapas que são feitas por um processaor em um ciclo de máquina é mais importante até do que o clock em si. Veja que um Pentium de 100 MHz é muitíssimo mais veloz do que um 486 também de 100 MHz, isso significa que o Pentium cumpre mais etapas de processamento em um único ciclo de máquina do que o 486. Essas instruções presentes nos processadores são constantes, ou seja, fazem sempre a mesmíssima coisa , assim se uma determinada instrução diz para transformar "a" em "b" toda vez que "pintar" um "a" por lá esse trecho vai entregar um "b" do outro lado, na verdade, a lógica de um processador é na sua mais pura essência uma coisa simplérrima, o que faz dele uma peça sofisticada da tecnologia moderna é a gigantesca quantidade de "coisas simples" que ele é capaz de fazer ao mesmo tempo, além, é claro, da tecnologia empregada para produzir fisicamente esses chips.

Como as instruções estão pré-definidas no processador o ato de desenvolver um programa leva o programador a ter que saber que instruções o processador possui e como usá-las, para que, através dessas rotinas contidas no processador, ele possa construir as rotinas de seus programas. Assim, um programa construído para determinado "tipo"o u arquitetura de processador não irá funcionar em outro, pois ele necessita da existência daquele tipo de rotina existente fisicamente nos circuitos do processador para o qual o programa foi projetado. Como projetar programas fazendo passo a passo a descrição de que característica do processador usar (a chamada programação em baixíssimo nível) demandava uma gigantesca quantidade de homens-hora, além de um profundo conhecimento de todas as instruções do processador foram criadas as chamadas linguagens de programação de alto nível. Com o advento dessas linguagens uma grande quantidade de informações que nessecitavam ser transmitidas em Assembly (linguagem que o processador entende diretamente) para o processador, passaram a ser feitas por um único e simples comando do programador em alto nível. Essas linguagens usam um programa chamado compilador, ou o mais lento interpretador (deixemos para outra oportunidade essa diferença), para transformar esse único comando em alto nível naquela enorme seqüência de baixo nível, tirando do programador o peso de ter que conhecer tantos detalhes do processador e poder se fixar mais na lógica do seu programa - é óbvio que esse nível de conhecimento é neccessário para aqueles que programam em assembly e também para os que programam os próprios compiladores. Embora o surgimento dessas linguagens tenha alavancado enormemente o uso dos computadores e tenha permitido o aparecimento de programas excepcionais (praticamente inviáveis de serem programados em baixo nível), quanto mais alto o nível da liguagem menos eficiente, de um modo geral, é o código gerado em baixo nível - caindo em uma série de rotinas e tomando tempo do processador de forma absolutamente dispensável - por pura impossibilidade dos compiladores em gerar melhores códigos. Uma liguagem que nasceu nos laboratórios Bell no início dos anos sessenta, se tornou uma estrela no sentido de gerar enxutos e rapidíssimos códigos de baixo nível, quase tão eficientes como se tivessem sido programados em Assembly, além de permitir uma boa manipulação em baixo nível, trata-se da linguagem "C" , essa linguagem foi e ainda é a mola principal de desenvolvimento dos grandes programas que conhecemos, quase todos, das grandes sofwarehouses, que usamos no nosso dia-a-dia foram desenvolvidos ou em C ou em C++.

Nota: A linguagem C é considerada por muitos autores atuais como uma linguagem de nível médio, por diversas características presentes nela, como por exemplo a possibilidade de se usar código Assembly no meio do código C. Um exemplo de linguagem considerada de alto nível é o Pascal. - Marcelo Vanzin.

O Pentium , 486, 386, enfim, a chamada arquitetura PC, possui em seus processadores um conjunto de instruções conhecido como x86, que é um conjunto do tipo "CISC" - Complex Instruction Set Code - isso significa que as instruções nos programas precisam ser do tipo complexo, claro. Outro tipo de arquitetura existe, esse tipo é conhecido como "RISC" - Reduced Instruction Set Code - ou seja um conjunto de instruções reduzidas. As diferenças entre as duas são grandes: no início, quando aconteceu essa cisão de arquiteturas, os defensores CISC acreditavam que um processador seria muito mais eficiente se ele pudesse possuir um grande número de diferentes instruções capazes de realizar operações complexas específicas, os defensores da tecnologia RISC discordavam, acreditavam que, como cada operação poderia ser dividida em trechos bem simples, cada instrução deveria ser bem simples, e o processador somente precisaria conter um reduzido número de simples instruções que, repetidas várias vezes, chegariam ao mesmo resultado que uma instrução complexa. Continuemos com o nosso esforço de simplificação e, para fim didáticos, imaginemos que um processador receba a instrução de multiplicar 8 por 4, o CISC teria uma instrução complexa capaz de cumprir com o resultado em uma única passagem pela mesma (que não necessariamente levaria um único ciclo de máquina - em nova correlação com uma linha de montagem é possível que uma instrução ande até metade da linha em um ciclo, prosseguindo no próximo ciclo) já o processador RISC tomaria essa operação por um modo mais simples e somaria 8 em 4 parcelas, em cada ciclo faria a soma de uma parcela - essa simplificação é draconiana mas exemplifica bem a diferença de filosofia de trabalho existente entre as duas arquiteturas.

Os defensores da arquitetura RISC alegavam ainda que um processador RISC teria, obviamente, um custo de produção reduzido em relação ao CISC, e ainda, como é menor o número de circuitos presentes em um processador RISC, que este trabalharia mais facilmente em maiores velocidades de clock ( maior número de ciclos por segundo), mais do que compensando a sua inferioridade em realizar instruções complexas no mesmo número de ciclos que um CISC. É por isso que o Alpha RISC de 600 MHz é só uns 35% mais rápido que um PII 300 CISC executando o NT4 ( que foi portado para Alpha tb) , e não o dobro como o raciocínio pedestre haveria de esperar ( um PII 400 deve ter igualado o desempenho de um Alpha 600). Por ter uma construção mais barata a tecnologia RISC é amplamente utilizada tb em Videogames ( 3DO, Play Station, Nintendo 64 , etc.). Há certos tipos de instruções que são melhor executadas se forem RISC, independente do clock, assim os processadores x86 de última geração como o K6, Pentium Pro e PII possuem tb um set de instruções RISC e transformam diversas instruções CISC em RISC para então processá-las ( o K6 faz uso desse recurso RISC, o Pentium não, já o Pentum Pro e o PII tb o fazem, como disse). Significa isso que a tecnologia RISC é o futuro? Claro que não, por outro lado a tecnologia CISC acaba de incorporar mais 57 instruções complexas ao conjunto x86, são as instruções MMX! O futuro ponta para uma mescla entre as duas tecnologias, nem RISC nem CISC, há instruções que se saem melhor em RISC muitas outras são superiores em CISC. Podemos dizer contudo que em se tratando de instruções matemáticas, por exemplo, um processador CISC será bem superior que um RISC de mesmo clock ( o RISC deverá ter o clock bem superior para se igualar ao CISC, afinal o RISC precisa repetir várias operações simples para chegar ao resultado de uma complexa), entretanto já vi muita gente ingnorante, inclusive profissionais da área, dizerem o absurdo de que um processador RISC é mais veloz que um CISC em operações desse tipo!

Nota: o ganho de desempenho não ser tão grande no Windows NT 4 rodando em processadores Alpha não é devido à arquitetura RISC do processador, mas sim porque o porte do NT para a arquitetura não é completo: o processador é obrigado a rodar em modo de emulação de 32 bits, lembrando que o Alpha é um processador de 64 bits. Isso causa uma boa perda de performance. Uma melhor comparação poderia ser feita com sistemas que rodam nativamente no Alpha, em 64 bits, como o Linux ou o Tru64 Unix da DEC (agora Compaq). A unidade de ponto flutuante - FPU - dos Alpha é conhecida por ser uma das mais rápidas disponíveis no mercado de processadores. - Marcelo Vanzin

Aurélio



Hard&Cia - 1999
Sugestões de Design? Webmasters
Dúvidas, sugestões e críticas gerais? Hard&Cia Mail