sexta-feira, 11 de fevereiro de 2011

Intel Centrino Duo e Intel Core 2 Duo

O Centrino Duo e a actualização do processador Centrino. Com dois núcleos e 4MB de cache, este processador vê o seu desempenho aumentado 20% e, muito importante nos portáteis, a sua autonomia fica acrescida, pois consome menos 28% de energia.
Algumas das características deste processador são:
·         Intel Core 2 Duo – Com dois núcleos a funcionar à mesma frequência, o desempenho aumenta consideravelmente.
·         Intel Wide Dynamic Execution – permite melhorar o desempenho de cada núcleo, podendo desta forma executar até quatro instruções em simultâneo.
·         Intel Advanced Digital Media Boost – Duplica a velocidade de execução para instruções multimédia e aplicações gráficas.
·         Intel 64 – Utiliza tecnologia a 64bits, como o Futuro Windows Vista e aplicaoes futuras.
·         Intel Dynamic Power Coordination – Permite gerir o consumo de energia de cada núcleo, independentemente, poupando energia.
·         Intel Dynamic Bus Parking – O chipset é desligado quando o processador está a trabalhar em baixa frequência.
Este processador foi desenvolvido a pensar na crescente necessidade dos utilizadores das empresas bem como os domésticos, de utilizarem programas cada vez mais “pesados” como edição de vídeo, tratamento de imagem e jogos, que são cada vez mais exigentes.
Desta forma, o intel Core 2 Duo bem equipado com dois núcleos e com uma gestão de energia mais avançada, como a referida no processador anterior. A única diferença é que este CPU é para computadores de secretaria e não para portáteis. Utilizando o chipset Intel 965 Express, permite a este processador medir a temperatura do mesmo, pois possui sensores térmicos internos. Desta forma, diminui o ruído das ventoinhas, pois só funcionam a velocidades maiores se a temperatura for alta.
O Core 2 Extreme foi projectado para processar múltiplas tarefas simultaneamente sem perder desempenho, como jogos ultrarrealistas, processamento de vídeo profissional e cálculos elaborados (fig. 3.46).
Este processador vem equipado com o sistema DTS (Digital Thermal Sensor) o que permite regular o funcionamento das ventoinhas e assim diminuir o ruído das mesmas.
Como suporte, foi criado o chipset Intel P965 Express desenhado para um melhor desempenho da memória e permite a instalação de duas placas gráficas em simultâneo.
Algumas das características deste processador são:
  • Processamento Dual Core – Com dois núcleos a partilhar 4 MB de cache e com um Front Side Bus de 1066 MHz.
  • Intel Wide Dynamic Execution – Permite melhorar o desempenho de cada núcleo, podendo desta forma executar até quatro instruções em simultâneo.
  • Intel Advanced Digital Boost – Duplica a velocidade de execução para instruções multimédia e aplicações gráficas.
  • Intel 64 – Utiliza tecnologia a 64 bits, como o futuro Windows Vista e aplicações futuras.
  • Intel Virtualization Technology – Este sistema permite que uma única plataforma de hardware funcione como múltiplas plataformas virtuais
  • Intel Designed Thermal – Este sistema permite que uma única plataforma de hardware funcione como múltiplas plataformas virtuais.
  • Intel Designed Thermal Solution for Boxed Processors – Inclui um conector de quatro pinos para controlo da velocidade das ventoinhas para diminuir a sua acústica, dependendo da temperatura e voltagem que o processador está a utilizar.

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.

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.

Celeron


O processador Intel Celeron a 266 MHz é actualmente o processador de base da Intel.





O Celeron disponibiliza a performance necessária para tirar partido de sistemas operativos como o Windows 95. O núcleo do processador tem 7,5 milhões de transístores e é baseado na tecnologia CMOS 0,25u. Além disso, beneficia da mesma micro arquitectura do núcleo do P6, tal como o Pentium II.
Características principais:
  • Pensado e desenvolvido para o mercado dos PC caseiros.
  • Velocidade de processamento a partir de 266MHz.
  • Baseado na micro arquitectura Intel P6, a mesma do Pentium II.
  • Inclusão da tecnologia MMX.
  • Oferta das vantagens da tecnologia dynamic execution.
  • Fabricado segundo o processo Intel 0,25u, que permite um aumento da frequência do núcleo e reduzido consumo de potência.
  • Oferta de funcionalidade nos três vectores da performance – vírgula flutuante, integrais e multimédia.
  • Utilização do sistema de bus de multitransacção a 66 MHz da micro arquitectura P6.
  • Inclusão de uma cache de nível 1 (L1) de 32 KB (16K/16K).
  • Fabricado usando a norma SEPP(Single Edge Processor Package), o que mantém a compatibilidade com o slot 1 para Pentium II.
Há que notar, no entanto, um pormenor em relação ao Celeron: ele necessita de um chipset novo para suportar, o 440EX. Apesar de também oferecer o suporte para gráficos AGP, oferece metade do desempenho do LX.
Mantendo as mesmas características do Celeron inicial, a Intel lançou novos processadores para as máquinas de entrada de gama: o Celeron 300 A e o Celeron 333, respectivamente, a 300 MHz e a 333Mhz, mas com a particularidade de terem já cache nível 2 de 128 KB, além de continuarem a beneficiar da mesma micro arquitectura P6 do Pentium II.
Devido à adição de 128 KB de cache L2, o núcleo do processador passou de 7,5 milhões de transístores de Celeron 266 MHz e 300 MHz, para 19 milhões nos Celeron 300 A e 333 MHz. Todos eles estão baseados na tecnologia de fabrico “Intels’s Advanced 0,25u”.
A partir das versões a 366 MHz e 400 MHz, a Intel adoptou um novo encapsulamento para o Celeron, o PPGA (Plastic Pin Grid Array) ou PGA370. O pga370 é idêntico ao tradicional socket 7, embora com 370 pinos.





Outra das possibilidades do Celeron é termos dois CPU numa só board e assim ter uma estação de trabalho de alto desempenho, mas económica. O único senão é termos de usar um sistema operativo que tire partido do multiprocessamento, como o Windows NT ou, 2000, por exemplo. Na figura 3.40 podemos ver uma motherboard com dois sockets PGA370.
 
Vamos agora ver um resumo das principais versões do Celeron lançadas pela Intel.
.
 
3.5.8.5 Pentium II Xeon
O Pentium II Xeon foi desenvolvido a pensar nos servidores de média e alta gama, assim como nas estações de trabalho.





O Pentium II Xeon apresenta, entre as suas características, compatibilidade de arquitectura com os processadores Intel de gerações anteriores, entre elas a execução dinâmica e o barramento duplo independente da micro arquitectura P6 encontrada nos Pentium II.
As principais características do Xeon são:
  • Velocidade de processamento de 400 MHz e 450 MHz.
  • Cache L1 de 32 KB (16 KB para dados e 16 KB para instruções), o que permite um rápido acesso a dados mais solicitados.
  • Endereços para cache até 64 GB de memória.
  • Arquitectura de duplo bus independente 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 de nível L2 à mesma velocidade do núcleo do CPU, isto é, a 400 MHz ou 450 MHz, 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- 4 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é 64 GB de memória.
  • Tendo em vista a utilização de mais de 4 GB de memória por aplicações empresariais, combinação do suporte avançado ao processador de 36 bits (PSE-36) a caches de 36 bits e chipsets maiores de 4 GB.
Dentro das novidades em relação aos seus predecessores tem as características avançadas de gestão, entre as quais:
  • Sensor térmico que permita que o sistema faça a gestão das condições térmicas, através da monitorização constante da temperatura do núcleo. Essa monitorização é efectuada por um díodo térmico incorporado no núcleo do CPU.
No caso de uma falha da ventoinha do dissipador, o díodo térmico inicia o processo de encerramento do sistema, de maneira a não provocar danos irreparáveis no processador ou mesmo no sistema.
  • Verificação e correcção de erros (ECC), sendo essa verificação feita para todas as transacções do barramento do sistema e da cache L2 – os erros de bit único são corrigidos automaticamente e no caso dos de bit duplo o sistema é alertado. É efectuado um registo de todos os erros, de modo a que o sistema possa identificar quaisquer falhas nos seus componentes.
  • Verificação de redundância funcional (FRC – Functional Redundancy Cheking) de modo a confirmar a integridade do processamento em aplicações “mission critical”. Este recurso compara as saídas de váriso processadores e verifica a existência de discrepâncias. No caso de dois processadores, um funciona como mestre e o outro como verificador. Caso exista alguma diferença entre as saídas dos processadores, o verificador envia um sinal ao sistema.
  • Barramento de gestão do sistema (SMBus – System Management Bus) usado para uma comunicação eficiente entre o sensor térmico, a ROM de informações doprocessador (PI ROM – Processor Information ROM), a E2 PROM e o resto do sistema.
A PI ROM é uma memória de leitura, que tem um variado número de especificações operacionais, dados especiais e informações exclusivas do processador.
A E2PROM vem de fábrica sem qualquer tipo de informação armazenada, podendo ser utilizada por fabricantes de placas para introduzirem dados que considerem necessários.
Vejamos agora na tabela 3.15 as características principais do Pentium II Xeon.
400
450
450
Apresentação
Junho 1998
Outubro 1998
Janeiro 1999
Velocidade de Relógio
400 MHz
450 MHz
450 MHz
Cache L2
512 KB ou 1 MB
512 KB ou 1 MB
512 KB ou 1 MB
Número de Transístores
7,5 milhões
7,5 milhões
7,5 milhões
Encapsulamento
SEC
SEC
SEC
Velocidade do Bus
100 MHz
100 MHz
100 MHz
Bus do Sistema
8 bytes
8 bytes
8 bytes
Memória Endereçável
64 GB
64 GB
64 GB
Memória Virtual
64 TB
64 TB
64 TB
Tabela 3.15 – Características do Pentium II Xeon

3.5.8.6 Pentium III
O processador Intel Pentium III, cujo nome de código é Katmai, oferece uma performance excelente para qualquer software e é totalmente compatível com todo o tipo de software baseado na arquitectura Intel. O Pentium III está disponível nas velocidades de 450 MHz e 500 MHz. O processo de fabrico a 0,25u permite a estes processadores incorporar cerca de 9,5 milhões de transístores, o que resulta num maior poder de processamento em menos espaço.
O aumento significativo de performance sobre as arquitecturas baseia-se numa combinação da micro arquitectura P6, extensões Internet Streaming SIMD, aperfeiçoamento da tecnologia MMX e o número de série do processador.
As principais características do Pentium III são:
  • Velocidade de processamento de 450 MHz e 500MHz.
  • Utilização do processo de fabrico a 0,25u, 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 da largura de banda e da performance em relação aos processadores de barramento único.
  • Inclusão de um 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 32 KB (16 KB para dados e 16 KB para instruções) e cache L2 unificada de 512 KB, o que permite um mais rápido acesso aos dados mais usados.
  • Suporte de cache de memória até 4 GB de espaço endereçável.
  • Permissão de sistemas escaláveis expandidos até dois processadores e 64 GB de memória física.
A tecnologia da micro arquitectura P6 Dynamic Execution, tal como visto anteriormente, consiste em:
  • 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 nesta 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 SIMD – 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 queo CPU permite mais altas contagens de polígonos e efeitos de luz.
  • Animação, dado que o CPU vai permitir incorporar um maior 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 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 do processador é o primeiro passo para a segurança no PC e serve com um número de série electrónico para o processador e, por extensão, ao sistema ou ao utilizador, permitindo que o sistema ou o utilizador seja identificado por aplicações ou mesmo por uma rede. O número de série associado ao nome do utilizador e a uma palavra- -passe pode ser utilizado na Internet como um sistema de segurança em comércio electrónico, por exemplo. 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, desenvolvido 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.
O barramento de sistema suporta transacções múltiplas e suporta até dois processadores. Isto permite multiprocessamento simétrico, aumentando a performance dos sistemas operativos multitarefa e das aplicações multithreaded.
A memória cache L2 unificada aumenta a performance, reduzindo a média do tempo de acesso e permitindo um rápido acesso a instruções e dados recentemente utilizados. A performance é aumentada através de um barramento de cache dedicado de 64 bits. A velocidade de cache L2 é igual à frequência do núcleo do CPU. Há verificação de erros (ECC) no barramento da cache L2.
Em Outubro de 1999, 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 a Intel abandonado a cartridge SECC e tendo voltado ao aspecto de CHIP com o socket 370. Outra diferença é o facto de a cache nível 2 ter passado de 52 KB para 256 KB, 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,18u, isto é, os fios no interior do chip foram reduzidos de 0,25u para 0,18u, que é 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 de 2,2 volts para 1,6 volts. 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 133 MHz e as mesmas características da versão E, sendo EB simplesmente a indicação de barramento a 133 MHz. Teoricamente, a linha de processadoresP6 da Intel acabaria aqui. No entanto, a Intel decidiu continuar pelo menos durante mais um ano e, em Agosto de 2001, saiu uma versão de 0,13u, à qual foi dado o nome de “Tualatin”. Ao contrário dos seus antecessores que usavam fios de alumínio para as suas ligações internas, esta versão usa fios de cobre para fazer essas ligações. Este novo processador tem uma cache L2 de 256 KB ou 512 KB, trabalha a 1,475 volts e está montado num socket 370. O PIII Tualatin foi lançado em versões de 1,2 e 1,13 GHz, usando ambas as versões um FSB (Front Side Bus) de 133 MHz. Na figura 3.42 podemos ver todas as versões Pentium baseadas no núcleo P6.

sexta-feira, 4 de fevereiro de 2011

Overclocking

Já que estamos a falar de velocidade do processador, vamos dizer algumas palavras acerca do overlocking.
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 de barramento, normalmente de 100MHz ou 133 MHz, 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 overlocking, 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 aumentarmos 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 overlocking à sua máquina, primeiro veja se o processador o permite, procure saber qual a performance máxima que poderia tirar dele e, muito importante, não se esqueça de reforçar o dissipador de calor do processador. Tente documentar-se o melhor possível acerca do assunto e a Internet é uma óptima fonte de informação.


Cache Interna


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 vírgula flutuante e uma cache interna de 8 KB. 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 armazenamento temporário para instruções frequentemente utilizadas, reduzindo assim a busca de dados na memória principal do sistema.
Apesar da 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 o código e para instruções. A partir do Pentium, os processadores passaram a ter a 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 16 KB, sendo 8 KB para código e 8 KB para dados. Vejamos as características de 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 da cache quando necessário.
A opção do uso de caches separadas para o Pentium foi devida à necessidade de uma maior largura debanda do que a que era proporcionada pela cache única.
A memória cache torna-se especialmente importante nos processadores em que a frequê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.
Como já foi referido e podemos ver na figura 3.19, os computadores têm dois níveis de memória cache, a L1 interna e a L2 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, como veremos mais à frente.




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.
Na figura 3.20 podemos ver um exemplo de uma arquitectura simples e de uma arquitectura superescalar. 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, C+D antes de A+B não tem 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 processadores 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, coo 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, supúnhamos 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 u 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 biológico do processador, o que o torna bastante mais rápido

O 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 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.
.     Adress 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 registo 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.

Passos da Execução por Tradução x86

Os processadores em tradução x86 são aqueles que correm instruções x86 standard, traduzindo-as em micro-instruções RISC. Este tipo de processador é muito mais complexo devido ao trabalho extra de tradução e gestão destas micro-instruções. De certo modo funciona como pequenos computadores com multiprocessamento dentro do CPU, com código especial para gerir a alocação de tarefas às diferentes unidades de execução, mais ou menos como faz um sistema operativo de multiprocessamento quando usa mais de um processador.
Tal como na execução nativa, 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 é de notar que estas instruções correm sempre 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 – Estes processadores empregam descodificadores múltiplos, sendo cada um deles capaz de pegar nas instruções e descodificá-las em micro-instruções. Como nenhuma das instruções x86 é executada directamente, faz sentido usar descodificadores múltiplos de modo a aumentar a performance. O tempo necessário à descodificação de uma instrução depende da sua complexidade. Instruções simples podem ser descodificadas a uma média de várias por ciclo de relógio, enquanto que outras mais complexas necessitam de mais de um ciclo cada. Qualquer endereço de memória que seja necessário é igualmente gerado nesta altura.
.        Issue/Schedule – As micro-instruções são atribuídas a uma unidade de execução. Um circuito interno optimiza esta tarefa e controla quais e para onde vão as instruções. Por vezes, esta operação denomina-se “instruction scheduling”, dado que, basicamente, é uma tarefa de agendamento de instruções, de acordo com os recursos disponíveis (unidades de execução).
Execute – É aqui que as micro-instruções são executadas. Normalmente são usadas múltiplas unidades de execução para aumentar a performance, onde algumas são dedicadas somente para certas instruções. Por exemplo, operações complexas de vírgula flutuante são executadas na unidade de execução de vírgula flutuante.
Retire – Dado que as micro-instruções podem ser executadas independentemente umas das outras e fora da sua ordem normal, temos que assegurar que não haverá problemas e que os resultados da execução são primeiro armazenados em locações temporárias. Uma unidade reúne os resultados das micro-instruções e assegura-se que o output é produzido correctamente, de acordo com as instruções x86 originais. A isso chama-se “retiring” as instruções.
Write-back – Após a execução da instrução, é produzido um resultado, o qual é escrito num registo 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.


Speculative Execution e Branch Prediction
Como já vimos anteriormente, alguns processadores podem executar múltiplas instruções simultaneamente. Por vezes nem todos os resultados das execuções serão usados, devido a alterações no fluxo do programa. Isto pode ocorrer particularmente na vizinhança de branches ou ramificações, onde uma condição é testada e a sequência do programa é alterada dependendo do resultado dessa análise.
Branches são muito comuns no código x86 e poderão ser um sério problema para o pipeling, porque não podemos ter a certeza que as instruções serão executadas numa sequência linear. Pipelining é sinónimo de executar a instrução seguinte antes que a primeira esteja completa. Quando se trata de instruções de teste condicional, isto é, uma instrução tipo “if…then”, não sabemos qual é a instrução seguinte até que a instrução de teste condicional seja totalmente executada, pelo que não se sabe que instrução deverá ir em seguida para a pipeline.
Num processador menos actual, acontece parar a pipeline até que os resultados sejam totalmente conhecidos, tendo como consequência um decréscimo de performance. Processadores mais recentes tratam esse problema de um modo diferente, ou seja, executam especulativamente a instrução seguinte, com a esperança de poder usar os resultados se o branch for para o lado que ele julga que vai, daí a expressão speculative execution. Mas os processadores actuais combinam o speculative execution com uma outra técnica, o branch prediction, a qual permite ao processador, baseado no fluxo do programa e em instruções anteriores, prever com alguma precisão para que lado irá o branch.
Tomemos o seguinte exemplo:
IF A = B THEN
C = C + 1
ELSE
C = C - 1
END IF
A instrução “IF THEN” é um branch ou, melhor dizendo, uma ramificação. Até que esteja completamente executada, não sabemos se a próxima instrução será uma adição ou uma subtracção. Um processador que execute especulativamente pode arrancar tanto a adição como a subtracção simultaneamente, e pura e simplesmente esquece aquela que não interessar. Ou pode fazer uso do branch prediction para arrancar somente uma delas, aquela que ele considerar ser a mais indicada para se o resultado da instrução “IF”.
O branch prediction aperfeiçoa o manuseamento dos branches fazendo uso de uma pequena cache chamada branch target buffer ou BTB. Sempre que o processador executa um branch, ele armazena informações acerca do branch nessa área. Quando o processador encontra novamente o mesmo branch, ele é capaz de saber qual a melhor solução. Isto ajuda a manter o fluxo de instruções na pipeline e aumenta a performance. Quanto maior for o BTB, mais informação acerca dos branches é capaz de manter.

Tecnologia MMX
MMX é a abreviatura de MULTIMÉDIA Extensions, uma tecnologia adicionada aos processadores que tem por fim simplificar o uso do multimédia. Essa tecnologia foi usada inicialmente nos processadores Pentium MMX, sendo utilizada em todos ao processadores fabricados desde então.
Em termos práticos, a extensão MMX é composta por 57 novas instruções de software e algumas alterações em termos de hardware interno do processador.
No que respeita às 57 novas instruções, elas são capazes de lidar com dados agrupados de 64 bits, que podem tomar 3 formas:
  • 64 bits de uma só vez:
  • dois pacotes de 32 bits
  • oito pacotes de 8 bits.
A manipulação de dados de áudio é geralmente de 16 bits. No entanto, alguns recursos de vídeo trabalham com sequências de 8 bits. Deste modo, as instruções MMX podem processar sons e imagens com bastante velocidade sem a necessidade de periféricos, além de poder trabalhar sons e vídeo simultaneamente.
No entanto, e como já foi referido, também há grandes diferenças a nível do hardware, já que a arquitectura interna também foi dimensionada para aumentar a performance na execução de instruções multimédia.
O barramento interno permite que várias operações de I/O possam ser executadas muito mais rapidamente. A cache interna do processador passou de 16 KB para 32 KB, sendo 16KB de cache de dados e os restantes 16 KB de cache de instruções.
Vamos ver de um modo simplificado as diferenças de operação em multimédia de um Pentium e do Pentium MMX.
Observemos a figura 3.25 que exemplifica o funcionamento de um programa de videoconferência num Pentium normal.
A aplicação envia um comando de exibição de imagem no monitor ao sistema operativo. Esse comando é transferido pelo driver de vídeo à respectiva placa controladora, onde um circuito integrado acelerador faz o processamento da imagem. Posteriormente, este mesmo integrado faz a distribuição dos sinais para as placas de interface respectivas, isto é, fax/modem, placa de som e placa de vídeo, que por sua vez apresenta a imagem no monitor.
Vejamos, na figura 3.26, como funciona a mesma aplicação num processador MMX.
A aplicação envia um comando de exibição de imagem no monitor ao sistema operativo. O comando é processado pelo processador MMX, já sem o uso do integrado acelerador. Dado que o processador já incorpora as instruções multimédia necessárias, ele executa muitas das funções inerentes ao fax/modem e á placa de som e vídeo, aumentando substancialmente a qualidade e performance da imagem e do som.
Como é lógico, isto representa uma imagem muito simplista da realidade, mas permite-nos ter uma ideia da diferença entre um processador MMX e um não MMX. Não podemos também esquecer que as aplicações têm de tirar partido das instruções MMX, existentes no processador, porque, caso não o façam, o seu comportamento é idêntico à de um processador sem MMX.