Biblioteca / Conteúdo preservado

Funcionamento

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