sexta-feira, 11 de fevereiro de 2011

Microprocessador

O CPU recebe continuamente instruções para serem executadas. Cada instrução é uma ordem de processamento de dados e o trabalho do CPU consiste principalmente em cálculos e transporte de dados.

O CPU recebe pelo menos dois tipos de dados:
  • Instruções acerca do que fazer com outros dados.
  • Dados que serão processados de acordo com as instruções.
Chamamos instruções ao código de programação, que inclui mensagens enviadas ao computador, ordens de impressão, entre outras.
Os dados são normalmente dados do utilizador, sejam eles informações numa base de dados, uma folha de cálculo, um desenho, etc.

A maior carga de trabalho do CPU consiste na descodificação de instruções e localização de dados, e os cálculos em si não são o tipo de trabalho muito pesado para um microprocessador.

A descodificação é, no fundo, a percepção de instruções que o utilizador envia para o CPU. Todos os CPU dos PC são compatíveis com o 8086. Isto quer dizer que os programas comunicam com o CPU através de uma família específica de instruções.

Dado que existe a necessidade dos CPU das gerações subsequentes poderem utilizar as mesmas instruções do 8088, foi necessário criar um conjunto de instruções compatíveis. Os CPU mais recentes têm de perceber as mesmas instruções. Esta compatibilidade é um standard da indústria desde então. Todos os processadores novos, independentemente dasua geração, têm de ser capazes de perceber e manipular o formato de instruções 8088.

Para nos ajudar a entender o funcionamento do microprocessador, vamos ver passo a passo o modo como ele executa uma operação simples, do tipo 2 + 2:
  1. Quando se prime a tecla 2, é enviado um sinal ao processador e pede-se à unidade de prefetch para pesquisar na memória principal do computador uma instrução específica sobre os dados novos, dado que não há nada acerca disso na cache de instruções.
  2. As instruções chegam ao microprocessador através da unidade de barramentos, vindas da memória principal, e são armazenadas na cache de instruções como “2=X”.
  3. A unidade de prefetch solicita então à cache de instruções uma cópia do código “2=X”e envia-o à unidade de descodificação para processamento.
  4. Seguidamente, na unidade de descodificação “2=X”, o código é descodificado numa string de código binário, que é enviada para a unidade de controlo e para a cache de dados.
  5. Agora a unidade de controlo executa a instrução para “2=X”. Isso faz com que o número 2 seja enviado para um endereço X na cache de dados, onde aguarda por outras instruções.
  6. Quando se prime a tecla 2, novamente a unidade de prefetch pergunta à memória principal do computador e à cache de instruções quais são as instruções específicas para esses dados novos. Como não encontra nenhuma informaçãona cache de instruções, as ordens vêm da memória principal.
  7. Similarmente ao que aconteceu com o “2=X”, os novos dados vêm da memória principal e são armazenados na cache de instruções como “2=Y”.
  8. A unidade de prefetch vai à cache de instruções buscar uma cópia do código “2=Y” e envia-a para a unidade de descodificação onde será processada.
  9. Na unidade de descodificação, a instrução “2=Y” é descodificada e transformada numa string de código binário, que será enviada para a unidade de controlo e para a cache de dados e que lhes dirá o que fazer com a instrução.
  10. Dado que a unidade de controlo sabe que o número 2 será armazenado para uso futuro na cache de dados, executa a instrução para “2=Y”. Isto faz com que o número 2 seja enviado para um endereço na cache de dados chamado Y, onde, tal como o outro 2, aguardará futuras ordens.
  11. Quando premimos a tecla “+”, a unidade de prefetch pergunta à memória principal do computador e À cache de instruções o que há-de fazer com os novos dados recebidos, que devem ser “pescados” da memória principal.
  12. Dado que é uma instrução nova, “+” vem para o microprocessador, da memória principal, e é armazenado num endereço da cache de instruções como “X+Y=Z”, indicando que os dois valores vão ser adicionados um ao outro.
  13. Então, a unidade de prefetch pede á cache de instruções uma cópia do código “X+Y=Z” e envia-a para a unidade de controlo para posterior processamento.
  14. Na unidade de descodificação, “X+Y=Z” é traduzido e descodificado, sendo em seguida enviado para a cache de dados, dando indicação do que hão-de fazer com a instrução. Além disso, também a unidade aritmética e lógica é informada que uma operação ADD vai ser executada.
  15. A unidade de controlo envia um comando ADD para a unidade aritmética e lógica, onde X e Y são adicionados, após serem chamados da cache de dados. Após realizar a operação, a unidade aritmética e lógica envia o resultado para ser armazenado num dos endereços dos registos.
  16. Quando se prime a tecla “=”, novamente a unidade de prefetch verifica a cache de instruções para solicitar informações sobre os novos dados, mas não vai encontrar lá nada.
  17. A instrução sobre “=” vem da memória principal para o microprocesador através da unidade de barramentos e fica armazenada num endereço da cache de instruções como código “PRINT Z”.
  18. A unidade de prefetch pede à cache de instruções uma cópia do código “PRINT Z” e envia-a para a unidade de descodificação para posterior processamento.
  19. Na unidade de descodificação, “PRINT Z” é traduzido e descodificado numa string de código binário, que é enviada para a unidade de controlo para lhe dizer o que fazer com a instrução.
  20. Agora que o valor de “Z” foi calculado e está armazenado nos registos, o comando print só tem de ir buscar o conteúdo do registo e apresentá-lo no ecrã no computador. E assim o microprocessador acaba o seu serviço, pelo menos de momento.

segunda-feira, 7 de fevereiro de 2011

Memórias e Outros

Memoria cache interna (level 1) – A cache L1 tem uma média de 90% a 95% de actos, isto é, a percentagem de vezes que o processador encontra lá as instruções que procura. Com a ajuda de uma cache externa, essa média pode ainda ser melhorada.

Ciclos de memória Burst-Mode- Uma memória standard de 32 bits demora dois ciclos de relógio para uma transferência. Após uma transferência standard de 32 bits podem ser transferidos mais dados, até aos próximos 12 bits, somente com um ciclo de relógio para cada transferência de 32 bits. Assim, em cinco ciclos de relógio, podem ser transferidos 16 bytes de dada de memória sequencial contígua, em vez de oito ou mais ciclos.

Coprocessador matemático incorporado – O coprocessador trabalha sincronizadamente com o processador e executa as instruções matemáticas em menos ciclos do que os necessários nos desenhos anteriores. Em média, isso permite uma performance duas ou três vezes superior à de um i387 externo.
O i486 ofereceu uma grande variedade de velocidades que variavam entre os 16 MHz e os 120 MHz. Para isso, a Intel lançou várias versões do 486, versões que com certeza são conhecidas de todos, nomeadamente o i486SX, o i486DX2 e o i486DX4, isto além do 486 Overdrive, como veremos à frente. Além disso, os i486 têm algumas diferenças na configuração dos pinos. As versões DX, DX2 e SX têm uma configuração de 168 pinos, enquanto a versão Overdrive já tem 169 pinos que eram introduzidos num suporte que ficou denominado socket1. Posteriormente, surgiram os socket 2 e 3 com socket ZIF (Zero Insertion Force), capazes já de aceitar inclusivamente um Overdrive para Pentium.

Um processador marcado para uma determinada velocidade funciona sempre a velocidades inferiores e um i486DX4 a 100 MHz trabalha perfeitamente a 75MHz numa placa principal de 25MHz. Nota-se que os processadores Overdrive e DX2 funcionam internamente a duas vezes a velocidade de relógio da placa principal, enquanto que o DX4 opera a duas , duas e meia ou três vezes a velocidade de relógio da placa principal. 
A velocidade do processador dependendo do factor multiplicativo que configuramos na placa, isto é, no caso do DX2 é extremamente simples, pois só necessitamos de multiplicar a velocidade do processador pelo facto multiplicativo e teremos a velocidade de processamento. Mas no caso do DX4 temos muitas mais possibilidades, já que ele, como já referimos, pode funcionar com factores multiplicativos superiores ao do DX2.

A velocidade interna do DX4 é controlada pelo sinal CLKMUL (Clock Multiplier) no pino R-17 no caso do socket 1 ou S-18 no socket 2 e 3. O sinal CLKMUL é lido durante o reset do processador e define a razão do relógio interno para a frequência externa do barramento, a que corresponde o sinal CLK no pino C-3 (socket 1) ou D-4 (socket 2 e 3). Se CLKMUL é um sinal de nível baixo, a velocidade será duas vezes a frequência do barramento externo. Se lido como nível alto ou sinal flutuante, isto é, sem qualquer tipo de sinal, é seleccionado o modo de três vezes a frequência do barramento. Caso o sinal CLKMUL seja ligado a BREQ (Bus Request), pino Q-15 (socket 1) ou R-16 ( socket 2 e 3), a velocidade interna do CPU será duas vezes e meia a frequência do barramento.

domingo, 6 de fevereiro de 2011

Execução dinâmica

A dynamic executioon , ou execução dinâmica das instruções, pelo que vamos ver como isso e feito no Pentium Pro. Este tipo de execução e possível porque o Pentium Pro possui três pipelines e desta forma consegue executar três instruções simultaneamente. As instruções são analisadas quanto a sua interligação, mas não são executadas ordenadamente, isto e, são enviadas para os pipelines as instruções que não dependem umas das outras e so depois e que são executadas as que necessitam dos dados das anteriores.
A unidade de execução executa as instruções baseada na não dependência de execução de outras instruções e não na sua ordem original dentro de um programa. Para isso, baseia-se nas seguintes três técnicas:

·         Multiple branch prediction (revisão de desvios múltiplos) – Prediz a execução do programa através de vários ramos. Através de um algoritmo especial, o processador pode antecipar saltos ou ramificações no fluxo de instruções. Isto e possível porque, enquanto o processador recebe as instruções, ele também esta a verificar as instruções do programa mais para a frente.
·         Data flow analysis (análise de fluxo de dados) – Cria, optimiza e reordena as instruções analisando a dependência entre elas, independentemente da sua ordem quando estão disponíveis para processamento ou, por outro lado, se são dependentes de outras instruções que necessitam de ser executadas primeiro. Assim, o processador determina qual e a sequência óptima para o processamento e executa as instruções de um modo mais eficiente. 

·         Speculative execution  (execução especulativa) – É o resultado do multiple Branch Prediction e do Data Flow Analysis. Executa as instruções de modo especulativo, isto é, as instruções que podem ser executadas sem dependências umas das outras. Utiliza a técnica de Data Flow Analysins para verificar as dependências entre instruções e o algoritmo

Velocidade do Processador - Overclocking

A velocidade do relógio de sistema de um computador é medida como frequência ou número de ciclos por segundo. Um oscilador de quartzo controla a velocidade de relógio. Quando uma tensão é aplicada ao quartzo, ele vibra a uma determinada frequência. A oscilação emana do cristal na forma de corrente alterna na proporção da harmónica do cristal - esta corrente alterna é o sinal do relógio.

Um computador trabalha a milhões destes ciclos por segundo, pelo que a sua velocidade é medida em megahertz (MHz), isto tenho em linha de conta que um hertz é igual a um ciclo por segundo.

A denominação Hertz foi dada em homenagem ao fisico alemão Heinrich Rudolph Hertz. Em 1885, ele provou, através da experimentação, a teoria electromagnética, que diz que a luz é uma forma de radiação electromagnética e propaga-se através de ondas.

Quando vemos um processador 600 MHz, sabemos que a frequência do relógio é de 600 MHz, pelo que temos na placa principal um pequeno oscilador de quartzo que oscila continuamente a um determinado
número de impulsos por segundo. A cada impulso algo acontece no processador. Assim, quantos mais impulsos por segundo, maior número de dados são processados por segundo.
Os primeiros processadores trabalhavam a 4,77 MHz e, subsequentemente, foram aumentando para 8 MHZ, 16MHz, 25 MHz, 50 MHz, 66 MHz, 90 MHz, 133 MHz e 200 MHz, até ás velocidades que hoje conhecemos e que se aproxima cada vez mais dos 2000 MHz.
Para atingir estes valores de velocidade de processamento, os fabricantes tiveram de utilizar uma técnica de multiplicação de frequência, a qual vamos ver seguidamente.

O grande problema das altas-frequências de relógio é conseguirmos assegurar que todos os outros componentes electrónicos trabalhem de acordo com o processador. É relativamente simples fazer com que os dados se movam a grandes velocidades dentro do integrado do CPU. Mas quando essa operação se passa cá fora, isto é, nos circuitos de apoio, aí não pode correr tão bem. Os outros componentes têm de ser capazes de dar resposta ás exigências de velocidade do processador. Quando a frequência atinge valores muito elevados, as pistas do circuito impresso começam a actuar como antenas de radiofrequência, dando-se o aparecimento de várias formas de ruído. Resumindo, torna-se extremamente caro e difícil construir todo o hardware de modo a trabalhar á mesma velocidade do processador.

A solução para o problema é dividir a frequência do relógio por dois:
  • Uma frequência interna, alta, que controla o funcionamento do CPU.
  • Uma frequência externa, baixa, que controla o barramento do sistema. É aqui que o CPU troca os dados com os dispositivos de I/O.
O primeiro processador a  utilizar esta técnica foi o 486DX2 25/50 MHz da Intel, o que proporcionou a possibilidade de se adquirir por um baixo preço um processador que nos dava 90% da performance do 486DX 50. O DX50 trabalhava a 50 MHz, tanto internamente como externamente. O DX2 trabalha a 25 MHz externamente, isto é, no barramento do sistema. Isto permitiu a construção de placas de baixo custo e a utilização de memória RAM também mais barata.


Esta duplicação da velocidade do relógio ocorre no interior do processador. Se o cristal da placa principal oscilar a 25 MHz, o processador receberá um impulso a cada 40 nanossegundos. No interior do processador esta frequência é dobrada para 50 MHz. Agora, no interior do processador, o relógio dá um impulso a cada 20 nanossegundos. Esta frequência controla todas as transacções internas, incluindo, entre outras, a unidade de vírgula flutuante, a unidade aritmética e lógica e os registos internos. A única área que continua a funcionar a 25 MHz é a das transferências externas de dados, ou seja, a comunicação com a RAM, a BIOS e os I/O.

O problema da velocidade também é crucial para a memória RAM. As SIMM FPM ou EDO trabalham a 66 MHz; quanto muito, poderão chegar aos 75 MHz, porque os processadores Pentium necessitam de factores multiplicativos internos que vão de 2 até 5.

Com a introdução, em 1998, da RAM PC100 a trabalhar a 100 MHz, juntamente com novos chipsets e placas principais, passou-se a usar factores de 3.5, 4 e 4.5, o que permitiu ter CPU a 350 MHz, 400MHz e 450MHz. Mas com Pentium II, Celeron e Pentium III passamos a operar com factores superiores a 12, o que, associado a RAM PC133, nos permitem atingir os 1700 MHz.

Registos Internos

No tamanho dos registos internos temos um bom indicador da quantidade de informação que o processador pode operar num determinado tempo.

Os processadores podem manipular números de qualquer tamanho, mas quanto maior for o número, mais tempo o processador demora a executar as operações necessárias.

Os registos são áreas de armazenamento internas do processador e são usadas para guardar dados que estão por ele a ser "trabalhados". Os registos são o mais rápido tipo de memória acessível ao processador, isto porque, além de fazerem parte integrante do processador, também estão ligados directamente á sua lógica.

A maior parte das operações é executada nos registos; o processador não pode executar operações aritméticas directamente na memória, por isso, se quisermos adicionar o valor 1 a uma localização de memóia, o que o processador faz é carregar o valor incial da memória para um registo, adicionar 1 ao registo e depois guardar o valor novamente na memória.

Alguns processadores têm um barramento de dados interno de tamanho diferente do barramento de dados externo. Um bom exxemplo disso é o 8088 e o 386SX, cada um deles com um barramento de dados interno que é o dobro do correspondente barramento externo. Estes desenhos híbridos são versões mais económicas do processador original. O 386SX, por exemplo, pode transportar dados internamente com um tamanho de registos de 32 bits, mas, para comunicar com o exterior, o chip está limitado a um barramento de dados de 16 bits.

Os registos internos, por vezes, são maiores do que o barramento de dados, o que quer dizer que o processador necessita de dois ciclos de relógio para encher um registo antes de ele poder ser usado. Podemos ver como exemplo disso o 386SX e o 386DX, ambos com registos internos de 32 bits, embora o 386SX necessite de dois ciclos para encher os registos, enquanto que o 386DX necessita somente de um. O mesmo acontece quando os dados são passados dos registos internos de volta ao barramento do sistema.

No entanto, o Pentium temos o caso inverso. O Pentium tem um barramento de dados de 64 bits, mas somente 32 bits nos registos internos. Isto pode parecer problemático para o funcionamento do processador, mas o Pentium tem duas pipelines internas de 32 bits para processamento de informação. É quase como se o Pentium tivesse dois processadores de 32 bits num só chip. Além disso, o barramento de dados de 64 bits assegura um funcionamento eficiente desses registos de 32 bits.

Velocidade do Processador - Overclocking (continuação)

Overclocking

Dado que quase todas as placas principais nos permitem alterar livremente a velocidade do barramento e a velocidade do relógio, em princípio, podemos aumentar a velocidade de processamento da nossa máquina, isto é, podemos configurar a nossa placa de modo que o nosso computador funcione, por exemplo, a 800 MHz, ,mesmo que as características de fábrica digam que ele é um 600 MHz, isto é, se ele funcionar , o que nem sempre acontece.

As frequências que podemos alterar são:
  • A velocidade do barramento, normalmente de 100 MHz ou 133MHz, mas digamos que a queremos alterar de 100 MHz para 133 MHz.
  • A velocidade do processador pode também ser aumentada e aqui esse aumento pode ser efectuado de dois modos: pelo aumento da velocidade do barramento e pelo aumento do seu factor multiplicativo.
O resultado de qualquer um destes processos é um processador mais rápido. No entanto, se aumentarmos a velocidade do barramento, isso vai afectar também a velocidade com que os dados são enviados e recebidos da RAM e para isso a RAM também tem de suportar esse aumento.

Por outro lado, quando aumentamos a velocidade interna do processador, temos de ver se as aplicações que utilizamos funcionam eficazmente, pois as muitas aplicações não suportam esse tipo de aventuras.

Quando fazemos o overclocking, temos de ter em atenção um factor extremamente importante nos processadores: aquecimento, já que o aumento da temperatura é um dos maiores perigos para o nosso processador.

Quanto mais aumentamos a velocidade de processamento, maior necessidade temos de uma boa refrigeração para o processador. Os processadores são construídos com tecnologia CMOS, a qual funciona melhor a baixas temperaturas. Assim, com o aumento da temperatura, podemos ter o resultado oposto ao desejado, isto é, uma drástica diminuição da performance.

Por isso, se está a pensar fazer o overclocking á sua máquina, primeiro veja se o processador o permite, procure saber qual a performance máxima que pode tirar dele e, muito importante, não se esqueça de reforçar o dissipador de calor do processador.

Cache Interna

A cache interna apareceu pela primeira vez no processador Intel 80486Dx e denominou-se L1 (Level 1). Desde esse momento, a cache teve o seu desenvolvimento natural, principalmente em tamanho, como podemos ver na tabela abaixo apresentada.

Nesta tabela podemos ver que alguns processadores têm também uma cache L2, o equivalente à cache externa situada nas placas principais, que posteriormente começou a ser parte integrante do processador.



CPU
Tamanho da Cache
80486DX e DX2
8 kb L1
Pentium
16 Kb L1
Pentium Pro
16Kb L1 + 256 KB L2
Pentium MMX
32 KB L1
AMD K6 e K6-2
64 KB L1
Pentium II e Pentium III
32 KB L1
Celeron
32 KB + 128KB L2
Pentium II CuMine
32 KB L1 + 256KB L2
AMD K6-3
64KB L1 + 256KB L2
AMD K7 Athlon
128Kb L1
AMD Duron
128 KB L1 + 64 KB L2
AMD Athlon Thunderbird
128 KB L1 + 256KB L2


 O processador tem de receber e entregar os dados a alta velocidade. A memória RAM não consegue acompanhar essa necessidade de velocidade, pelo que foi criada uma memória RAM especial, a que se chamou cache, a qual é utilizada como área de armazenamento temporário. Para se tirar a máxima performance do CPU, o número de transacções para o exterior deve ser minimizado. Quanto mais dados puderem ser mantidos dentro do CPU, melhor será a performance. Tomemos como exemplo os processadores 486, equipados com uma unidade de virgula flutuante e uma cache interna de 8KB. Estes dois elementos ajudam a minimizar o fluxo de dados que entra e sai do CPU, aumentando a sua performance.

Como já vimos, a cache funciona como um armazenamento temporário para instruções frequentemente utilizadas, reduzindo assim a busca de dados na memória principal do sistema.

Apesar de a cache L1 aparecer inicialmente no 486, a partir do Pentium ela passou a ter um refinamento. O 486 tem uma cache unificada de 8KB, que era usada para código e para instruções. A partir do Pentium, os processadores passaram a ter cache L1 dividida em duas partes, sendo uma delas reservada para dados e outra reservada para código. Retomando o exemplo do Pentium, temos uma cache L1 com 16Kb, sendo 8KB para código e 8KB para dados. Vejamos as características da cada um destes tipos de cache.

Temos as seguintes características da cache única:
  • Para um dado tamanho de cache, uma cache única apresenta uma taxa de acerto maior do que caches separadas.
  • Apenas é necessário projectar uma cache.
  • A manipulação do código é mais simples.
Vejamos agora as caches separadas:
  • Reduzem os conflitos de barramento.
  • Aumentam a disponibilidade de cache quando necessário.
A opção do uso de caches separadas para o Pentium foi devida á necessidade de uma maior largura de banda do que a que era proporcionada pela cache única.

A memória cache torna-se especialmente importante nos processadores em que a frequnência interna é multiplicada, o que a torna muito superior á externa. Assim, a cache permite uma recepção e entrega de dados muito mais rápida.

Os computadores têm dois niveis de memória cache, a L1 interna e a L2 inicialmente externa, mas que posteriormente passou também a ser colocada no próprio chip do processador, com notórias vantagens a nível de performance global.


Arquitectura Superescalar

O termo superescalar refere-se a uma arquitectura de processador que tenha mais de uma unidade de execução ou pipelines. Estas unidades são nada mais nada menos que os locais do processador onde são processados os dados e as instruções.

No caso de uma arquitectura simples, as instruções são executadas numa só pipeline, enquanto que numa arquitectura superescalar as instruções são executadas em duas ou mais pipelines.

Vamos ver com um pequeno exemplo como isso se processa, tomando o caso dos processadores i486 e Pentium, sendo o primeiro um processador convencional e o segundo um superescalar de grau dois, isto é, capaz de executar duas instruções simultaneamente.

Imaginemos um programa com duas instruções seguidas:  A+B e C+D. Como as instruções não têm qualquer dependência entre elas, executar C+D antes de A+B não têm qualquer interferência no resultado final. Assim sendo, o processador pode executá-las simultaneamente, isto é, podem ser executadas paralelamente, uma em cada canal ou pipeline. Com isto podemos obter o dobro do desempenho em relação a outros processdores anteriores ao Pentium, já que foi o primeiro superescalar da Intel.

No entanto, se o nosso programa tiver instruções dependentes, isto é, a continuação de uma dependa do resultado da outra, a operação já se processa de outro modo.

Se tivermos a instrução A+B e (A+B)+C, podemos ver que esta segunda instrução não pode ser executada sem que a primeira forneça um resultado, pelo que cada instrução será executada pela sua ordem lógica, como aconteceria em qualquer processador convencional anterior ao Pentium.

Comparativamente com a execução simples, ou sequencial, o pipelining leva-nos a um aumento da performance do processador. Teoricamente, quantos mais estágios tivermos numa pipeline, maior será a velocidade que podemos tirar dela. Por exemplo, suponhamos que são necessários 12 ciclos de relógio para processar todos os passos necessários de uma instrução; se usarmos uma pipeline de quatro estágios, o máximo que ela consegue processar será uma instrução por cada três ciclos, mas se usarmos uma pipeline de seis estágios, já conseguimos uma instrução em cada dois ciclos. Como é lógico, isto é somente um exemplo muito simplificado.

Processadores RISC e processadores CISC

Os processadores obedecem a uma de duas tecnologias, a RISC (Reduced Instruction Set Computer) e a CISC (Complex Instruction Set Computer). Até ao aparecimento do Pentium Pro, todos os processadores, para PC é claro, eram baseados na tecnologia CISC. Esta classe de processadores possui um grande conjunto de instruções em código máquina. Essas instruções necessitam de ser descodificadas de modo a poderem ser executadas. Para isso, os processadores CISC socorrem-se de um microcódigo interno que indica ao processador como deve manipular cada instrução individualmente. No entanto, à medida que são acrescentadas novas instruções ao processador, o descodificador de instruções torna-se mais complexo, o que o torna mais lento.
A solução para construir processadores mais rápidos é a utilização da tecnologia RISC. Ao contrário da CISC, os processadores com tecnologia RISC são de fabrico mais simples, pois não necessitam de um descodificador de instruções. Cada bit de uma instrução abre ou fecha directamente um determinado circuito lógico do processador, o que o torna bastante mais rápido.

O ideal seria que todos os processadores fossem baseados na tecnologia RISC, mas , há sempre um "mas", as duas tecnologias são perfeitamente incompatíveis. Assim, se a Intel decidisse acabar com os processadores CISC e fabricar somente processadores RISC , não seríamos capazes de correr nenhum dos programas já existentes, o que nenhum de nós iria gostar particularmente.

A solução para o problema foi a apresentação de um processador híbrido, isto é, um processador RISC, mas capaz de correr instruções CISC. Assim nasceu o Pentium Pro, de que iremos falar em pormenor mais à frente. No entanto, podemos adiantar que se trata de um processador RISC com um emulador CISC. Para executar instruções CISC, ele tem um descodificador interno que transforma essas instruções CISC em tantas instruções RISC quantas as necessárias, de modo a poder executar aquilo que lhe é solicitado. Esta opção da Intel mantém-se em todos os processadores seguintes ao Pentium Pro.

Passos da Execução Nativa

Os processadores de execução nativa são aqueles que correm directamente o código x86, sem tradução para RISC. Os passos necessários à execução das instruções varia conforme o processador. No entanto, na generalidade, são os que vamos ver em seguida e em processadores mais recentes estas instruções correm em pipelines:

  • Fetch- O primeiro passo é carregar a instrução na unidade de execução. Dado que a memória é muito lenta comparada com o processador, este passo não envolve uma leitura directa da memória. Em vez disso, um circuito de controlo carrega blocos de 16 ou 32 bits de instruções ou dados, da memória directamente para uma cache primária de instruções. Estes dados estão assim disponíveis para as unidades de execução, conforme forem solicitados. Alguns processadores têm unidades de prefetch para executar esta operação.
  • Decode- A descodificação é usada para examinar a instrução carregada e determinar o seu tamanho, se requer um acesso à memória para ler dados, etc. Alguns processadores empregam múltiplos descodificadores, de modo a aumentar a sua performance.
  • Address Generate- Enquanto algumas instruções operam em localizações de memória, outras não. Para aquelas que acedem á memória, neste estágio é gerado o endereço da localização baseado na informação dada como parte da instrução.
  • Execute- É aqui que a instrução é executada, de acordo com a informação processada nos passos anteriores.
  • Write-Back- Após a execução da instrução, é produzido um resultado que é escrito num regist interno da memória de sistema. Mas como a memória de sistema é muito lenta, na realidade esse resultado é escrito num write buffer, onde é mantido até que possa ser finalmente escrito na memória de sistema ou na cache.

Cronologia do microprocessador

Os microprocessadores são componentes essenciais para muitos dos produtos que nos rodeiam no dia-a-dia, sejam eles electrodomésticos, como televisores e rádios, sejam máquinas industriais ou mesmo automóveis, como é lógico, computadores.

O microprocessador é um dispositivo de computação completo, fabricado num só chip. O primeiro microprocessador a ser fabricado foi o Intel 4004 e foi apresentado em 1971. O 4004 não era muito potente, pois executava simplesmente adições e subtracções, e somente a 4 bits de cada vez. Mas, contrariamente aos anteriores, ele era construído num só chip. O 4004 foi usado num dos primeiros calculadores electrónicos que foi construído.
O primeiro microprocessador que foi utilizado num computador pessoal foi o Intel 8080, um processador completo de 8 bits, apresentado em 1971. O primeiro processador que verdadeiramente provocou ondas foi o Intel 8088, dado que incorporou o primeiro IBM Personal Computer. Seguidamente ainda, a Intel desenvolveu o 80286, o 80386, o 80486 e por ai fora, como vamos ver mais à frente.
Paralelamente à Intel, também outras marcas desenvolveram os seus processadores, como, por exemplo, a Motorola, em 1974 apresentou o 6800, um processador de 8 bits e com 4.000 transístores. O chip era fabricado segundo a tecnologia NMOS de 6 microns e necessitava de uma alimentação de somente 5 volts.
Nesse mesmo ano apareceu o TCA 1802, capaz de trabalhar a uma velocidade de 6.4MHz, o que era impressionante para a altura, funcionando a 8 bits com endereçamento de 16 bits. Já era fabricado com a tecnologia CMOS e continha registos de 15 bits que podiam ser acedidos com 32 registos de 8 bits.



Em 1975, Faggin e Shima desenvolveram o Zilog  Z80. Este processador era considerado um grande avanço sobre o 8080, trabalhava a 2.5MHz e continha 8.500 transístores.

Mais tarde o Z80A, que funcionava a 4MHz, sendo capaz de endereçar directamente 64KB de espaço de memória. Este processador ja incorporava o primeiro sistema operativo standard para microprocessadores. Foi usado em sistemas, como Osborne, o Kaypro e o nosso sobejamente conhecido Sinclair ZX80, ZX81 e Spectrum, entre outros.



Gerações de Processadores

Em Abril de 1997, AMD anuncia o AMD-K6/PR-233. Este chip tem uma cache primária de 64 KB e 3,3 milhões de transístores. Baseia-se numa microarquitectura superescalar RISC86 e inclui suporte para a tecnologia MMX da Intel. Este chip foi desenvolvido inicialmente pela NexGen e adquirido pela AMD na Primavera de 1996.
Também em 1997, a Intel lançou o Pentium II. Inicialmente baptizado Klamath, Começou por trabalhar a 233MHz e tinha uma cache nível 2 de 256 KB ou 512 KB. Incorporava tecnologia MMX, além de outras inovações tecnológicas, tais como a Dynamic Execution, a arquitectura DIB (Dual Independent Bus) e o Intelegent Input/Output. As suas velocidades de trabalho são 233 MHz, 266 MHz, 300 MHz, 333 MHz, 350 MHz, 400 MHz e 450 MHz.
Em 1998 foi o lançamento do Pentium II Xeon, pensando para os servidores de média alta gama, assim como para estações de trabalho. Apesar de manter a compatibilidade com os seus antecessores, ele trouxe algumas novidades. Foi lançado somente em duas versões, 400 MHz e 450 MHz.
Ainda em 1998, a Intel lançou um CPU que seria a partir desse momento o processador de gama baixa: o Celeron, inicialmente a trabalhar a 266 MHz e 300 MHz e sem cache nível 2. Algum tempo depois, cerca de quatro meses, a Intel apercebeu-se da asneira e lançou o Celeron A. A diferença básica era o facto de a versão A já ter uma cache nível 2, embora de somente 128 KB. Esta versão começou com 300 MHz e acabou em 533 MHz. Enquanto o Celeron inicial tinha 7,5 milhões de transístores, na versão A passou a 19 milhões. O Celeron mantém as mesmas características do Pentium II, exceptuando a cache nível 2, é claro.
Em Fevereiro de 1999, apareceu o Pentium III, ou Katmai, que oferece um desempenho excelente para qualquer tipo de software e é totalmente compatível com todo o tipo de software baseado na arquitectura Intel. Tem no seu interior qualquer coisa como 9,5 milhões de transístores e velocidades entre os 400 MHz e os 600 MHz.
Em Março do mesmo ano, a Intel lançou o Pentium III na sua versão musculada, isto é, o PIII Xeon, tendo no seu interior 9,5 milhões de transístores, com velocidades de 500 MHz e 550 MHz, e algumas diferenças substanciais em relação ao seu predecessor, o PIII, diferenças essas analisadas posteriormente.
Também em 1999, a AMD lança o K6®-III a 450 MHz, com a tecnologia 3Dnow e com o desenho TriLevel Cache, o que maximiza a performance dos PC através de uma cache interna nível 1 de 64 KB e uma cache também interna nível 2 de 256 KB de alta velocidade, além de um barramento a 100 KHz para uma terceira cache opcional externa, o que permite ter uma capacidade de cache total até 2.368 KB.
Em Outubro de 1999, novamente a Intel lança o Pentium III E, com 28,1 milhões de transístores e velocidades entre os 600 MHz e 1,26 GHz. A partir desta versão, a Intel introduziu algumas diferenças no PIII e uma delas tem a ver com o aspecto físico do mesmo, tendo abandonado o cartridge SECC e voltado ao aspecto de CHIP com o socket 370. Outra diferença é o facto de a cache nível 2 ter passado de 512 KB a 256 KB.
Em Janeiro de 2000, apareceu a versão PIII EB, com barramento a 133 MHz e as mesmas características da versão E.
Em Fevereiro de 2000, a AMD lançou o K6®-2 a 500 MHz, 533 MHz e 550 MHz e tecnologia 3DNow.
Em Março de 2000, a Intel lança uma nova versão do seu processador de entrada, o Celeron II. Mantém as mesmas características dos anteriores, mas desta vez vem com uma cache nível 2 de 512 KB, tem 28,1 milhões de transístores e velocidades entre os 500 MHz e os 766 MHz.
Em Novembro de 2000, aparece o Pentium 4, tendo abandonado a arquitectura P6, que vinha a utilizar desde o Pentium Pro, e utilizando a nova arquitectura NetBurst. A Intel oferece um processador com 42 milhões de transístores no seu interior, 1,4 GHz de velocidade, cache nível 1 de 64 KB e cache nível 2 de 256 KB.
Em Janeiro de 2001, a AMD lança o Atlhon, com velocidades entre os 900 MHz e 1,13 GHz. É um processador pensado para estações de trabalho de grande desempenho.
Vejamos agora os CPU numa divisão de gerações na seguinte imagem:

Pentium II Xeon

O Pentium II Xeon foi criado para uso em servidores de game média/alta.
O Pentium II Xeon tem uma compatibilidade de arquitectura com os processadores Intel de gerações anteriores, permite também a execução dinâmica e o barramento duplo independente da microarquitectura P6 encontrada nos Pentium II.
·         As principais características do Xeon são: Velocidade de processamento de 400MHz e 450MHz.
·         Cache L1 de 32 KB(16KB para dados e 16Kb para instruções), o que permite um rápido acesso a dados a dados para o núcleo.
·         Endereços para cache até 64Gb de memória.
·         Arquitectura de duplo bus que aumenta a performance e permite um maior fluxo de dados para o núcleo.
·         Partilha de dados com o resto do sistema através de um barramento de multitransacção de 100MHz.
·         Incorporação de uma cache L2 em duas versões, 450MHz – 512MHz e 400MHz-512KB ou 1MB.
·         Funcionamento da cache L2 à mesma velocidade do núcleo do CPU, isto é, a 400MHz ou 450MHz, o que aumenta extraordinariamente o fluxo de dados entre o processador e a cache.
·         Suporte pelo barramento do sistema de múltiplas transacções, aceitando até 8 processadores. Isto permite multiprocessamento simétrico a 1-2-3- ou 8 vias e oferece um incremento significativo de performance para sistemas operativos multitarefa e aplicações multithreaded.
·         Permissão de endereçamento e colocação em cache de até 64GB de memória.
·         Tendo com vista utilização de mais de 4GB de memória por aplicações empresariais, combinação do suporte avançado ao processador de 36bits (PSE-36) a caches de 36bits e chipsets maiores de 4GB.

Pentium III

O processador Intel Pentium III, com o nome de código “Katmai”, tem uma performance excelente para qualquer tipo de software e é 100% compatível com todo o tipo de software baseado na arquitectura Intel. O Pentium III funciona a 450MHz e 500MHz. O fabrico a 0.25µ, o que permite estes processadores incorporar cerca de 9.5 milhões de transístores, o que da um maior poder de processamento utilizando menos espaço.
O significativo aumento de capacidade de processamento sobre as arquitecturas anteriores baseia-se numa combinação da microarquitectura P6, extensões Straming SIMD, aperfeiçoamento da tecnologia MMx e o número de série do processador.



As principais características do Intel Pentium III são:
·         Velocidade de processamento de 450MHz e 500MHz.
·         Utilização do processo de fabrico a 0.25µ, o que permite reduzir o consumo de potência e aumentar as frequências do núcleo.
·         Inclusão de extensões Internet Streaming SIMD, que são 70 novas instruções de código que permitem melhorias significativas em aplicações de imagem, 3D, vídeo, áudio e reconhecimento de fala.
·         Aumento pela arquitectura DIB de largura de banda e performance em relação aos processadores de barramento único.
·         Inclusão de número de série de processador, que permite que o computador, e por inerência o utilizador, seja facilmente reconhecido numa rede ou por aplicações.
·         Cache L1 de 32KB (16KB para dados e 16KB para instruções) cache L2 unificada de 512KB, o que permite um mais rápido acesso aos dados mais usados.
·         Suporte de cache de memória até 4GB de espaço endereçável.
·         Permissão de sistemas escaláveis expandidos até dois processadores e 64GB de memória física.
No que consiste a tecnologia P6 Dynamic Execution:
·         Multiple branch prediction – Prediz a execução do programa através de vários ramos, o que permite acelerar o funcionamento do processador.
·         Data flow analysis – Cria, optimiza e reordena instruções analisando as dependências entre elas.
·         Speculative execution – Executa as instruções especulativamente e, baseado neste optimização, assegura que a execução superescalar do processador seja sempre utilizada.
As extensões Internet Streaming SIMD são 70 instruções novas e incluem uma instrução única, dados múltiplos para operações de vírgula flutuante, instruções adicionais DIMD-integer e controlo de cache. As tecnologias que vão beneficiar mais directamente destas novas instruções serão:
·         Imagem a 3 dimensões, dado pelo CPU permite mais altas contagens de polígonos e efeitos de luz.
·         Animação, dado que o CPU vai permitir incorporar um mais realismo e interactividade.
·         Processamento de imagens, oferecendo uma mais alta taxa de frames, profundidade de cores e algarismos de processamento de imagens, o que permite trabalhar com imagens maiores e mais complexas.
·         Vídeo, que vai permitir a codificação e edição e vídeo MPEG2 em tempo real.
·         Reconhecimento de voz, que vai dar uma maior precisão e tempo de resposta mais rápido.
O número de série de um processador é o primeiro passo para a segurança no computador e serve como número de série electrónico para o processador e, por extensão, ao sistema ou ao utilizador, permitindo que o sistema ou utilizador sejam identificados por aplicações ou mesmo por uma rede. O número de série associado ao nome de utilizador e a uma palavra-passe pode ser utilizado na Internet como sistema de segurança em comércio electrónico. No entanto, estão a levantar-se obstáculos à utilização do número de série por poder criar o risco de violação de privacidade.
Entre outras características significativas do Pentium III encontram-se o encapsulamento SECC2, criado pela Intel, e que permite uma maior disponibilidade de espaço e maior protecção no manuseamento do CPU.
Tal como no Pentium II, a arquitectura de Duplo Bus Independente aumenta a performance e permite um maior fluxo de dados para o núcleo.
Em Outubro de 1999, a Intel lança o Pentium III E, com 28,1 milhões de transístores e velocidades entre os 600MHz e 1.26GHz. A partir desta versão, a Intel introduziu algumas diferenças no PIII e uma delas tem a ver com o aspecto físico do esmo, tendo a Intel abandonado a cartridge SECC e tendo voltado ao aspecto CHIP com o socket 370. Outra diferença é o facto de a cache nível 2 ter passado de 512KB para 256KB; no entanto, a cache passou a trabalhar à mesma velocidade do processador. Ainda outra  diferença bastante significativa é a utilização do processo de fabrico de 0,18µ, isto é, os fios no interior do chip foram reduzidos de 0.25µ para 0.18µ, é o mesmo que dizer 1/500 da espessura de um cabelo humano. A consequência imediata deste processo tecnológico foi a redução da tensão 2,2volts para 1,6volts. Em consequência, o chip passou a desenvolver menos calor com a mesma frequência de relógio, podendo assim aumentar-se a velocidade de processamento.
Em Janeiro de 2000 apareceu a versão PIII EB com barramento a 133MHZ e as mesmas características da versão E, sendo EB simplesmente a indicação de barramento a 133MHz.

Pentium III Xeon

O Pentium III Xeon é o processador ideal para servidores de rede e estações de trabalho de alto desempenho. Disponível inicialmente nas velocidades 500MHz e 550MHz, ele matem tal como os seus predecessores, compatibilidade com a arquitectura de software Intel. O Pentium III Xeon combina novas características, tais como extensões Streaming SIMD e uma mais rápida frequência de operação com características de microarquitectura P6, tais como compatibilidade com processadores mais antigos, execução dinâmica e barramento duplo independente.
Entre as suas principais características podemos encontrar as seguintes:
·         Velocidade de processamento de 500MHz a 900MHz.
·         Compatibilidade com motherboards SC330 (slot de 330 pinos).Utilização das Extensões Streaming SIMD, o que permite melhorias significativas em aplicações de imagem, 3D, vídeo, áudio reconhecimento de voz, assim como aplicações com utilização intensiva de memória.
·         Cache L2 unificada com 512KB, 1MB ou 2MB para o CPU a 500MHz e 512MHz para a versão a 550MHz. Cache L1 de 32KB (16 para dados e 16KB para instruções).
·         Aumento, pela arquitectura DIB, da largura de banda e da performance em relação aos processadores de barramento único.
·         Barramento de sistema a 100MHz, o que aumenta a velocidade de transferência entre o CPU e o sistema.
·         Suporte de cache de memória até 64GB de espaço endereçável.
·         Oferta de suporte para operação a quatro vias SMP (Symmetric Multiprocessing) podendo escalar efectivamente a oito vias e configurações maiores com chipsets especiais e tecnologias de clustering. Isto permite multiprocessamento simétrico a 2 – 4 e 8 vias a baixo custo.
·         Intel Extended Server Memory Architecture, suporte de memoria de 36bits, o que permite a sistemas operativos e a aplicações utilizarem mais de 4GB de memoria.
·         Partilha de dados com o resto do sistema através de um barramento de sistema de multitrasacções de 100MHz.
·         Tecnologia de encapsulamento SECC.

Pentium 4 e Pentium 4 HT

Em Novembro de 2000, a Intel apresentou um novo processador, o Pentium 4 inicialmente conhecido pelo nome de código “Willamette”.
Este processador é completamente novo em relação aos seus antecessores, com algumas novidades e desenvolvimentos.
·         Front Side Bus a 400MHz a 128bits.
·         Cache Residual de Instruções.
·         Cache L1 de 20KB e Cache L2 de 256KB.
·         ALU (Unidade Aritmética e Lógica) trabalha ao dobro da velocidade.
·         Tecnologia HyperPipeline.
·         SEE2 e MMX a 128bits.
·         42 milhões de transistores.
·         Dois de socket 423 e 478 pinos.
·         Memorias RamBus de duplo canal.
O P4 com tecnologia hyperthreading veio com o novo suporte, o socket LGA775 e um barramento a 800MHz. A memória cache L2 foi aumentada para 2MB o que permite ser mais eficiente em aplicações como imagem digital e vídeo. Os processadores podem alcançar, actualmente, uma velocidade até 3,8GHz. De seguida, indica-se as principais características:
·         Tecnologia HyperPipeline – Duplica a circulação de informação dentro do processador.
·         Duas unidades de aritmética e lógica – Funcionam internamente ao dobro da velocidade do processador.
·         Endereçamento de 64GB – Permite o endereçamento de 64GB de memória física.
·         Suporte para uni-processamento.
·         Memoria cache L2 com tecnologia Advanced Transfer Cache – Permite um grande desempenho na transferência de informação entre o núcleo do processador e a cache L2.

Pentium D , Pentium Extreme Edition e Pentium M

Com a necessidade de evolução, foi criado o Pentium D (desktop). Este processador com dois núcleos, permite aos utilizadores a capacidade de executar vários programas em simultâneo, como estar a jogar ou executar um programa multimédia, ao mesmo tempo que o sistema executa outras tarefas.
O processador com dois núcleos (Dual-Core) é uma evolução de Hyper-Threading. Embora as duas tecnologias permitam a execução de programas em simultâneo, a tecnologia Dual-core permite a real execução de programas simultaneamente, de forma a que vários utilizadores possam usar varias aplicações através do mesmo PC numa rede local.
As características principais deste processador são:
·         Tecnologia Dual-Core.
·         Tecnologia Enchanced Intel Speedstep, disponível nos processadores 830 e 840, que permite ao sistema ajustar automaticamente a voltagem do processador e a frequência do núcleo, baixando o consumo de energia e temperatura.
·         Memoria cache L2 com 2MB.
·         Tecnologia Extended Memory 64, que permite o acesso do processador a grandes quantidades de memória física, através de software e hardware 64bits.
·         Instrução multimédia SS3 para acelerar o desempenho de aplicações multimédia.
·         Tecnologia de fabrico de 90nm.
·         Barramento a 800MHz.
O Intel Extreme Edition é um processador com dois núcleos, semelhante ao Pentium D, mas em que cada núcleo utiliza a tecnologia Hyperthreading. Ora, se um processador com dois consegue executar duas instruções em simultâneo, esses mesmos núcleos com a tecnologia Hyperthreading permitem executar quatro instruções em simultâneo.
As principais características deste processador são:
·         Tecnologia Dual-Core – com dois núcleos a funcionar à mesma frequência, o desempenho aumenta consideravelmente.
·         Cache L1 – Este processador possui 2 caches L1 16KB cada. Para aumentar o desempenho, cada núcleo tem uma cache de 12KB, designada por Execution Trace cache, que armazena a informação já descodificada que vai ser executada.
·         Cache L2 – De 2MB.
·         Intel EM64T- O Extended Memory 64 Technology permite aumentar o acesso à memoria, com software e hardware adequados.
·         Intruçoes multimédia SSE3 – Para acelerar o desempenho de aplicações multimédia
·         Tecnologia de fabrico de 90nm.
O Pentium M(mobile) foi desenhado para computadores portáteis. Com um barramento entre os 400MHz e os 533MHz, pode alcançar velocidades entre os 1.5GHz e os 2,26GHz. Utilizando a tecnologia Speedstep, acima descrita, permite poupar energia, que, no caso de portáteis, é bastante útil, devido à autonomia das baterias.