Powered By Blogger

quinta-feira, 10 de fevereiro de 2011

Processadores

Como já vimos, os PC usaram inicialmente os processadores da família Intel. No entanto, outras empresas como a AMD, a Cyrix e mesmo a própria IBM desenvolveram também os seus próprios processadores compatíveis com os Intel, pelo que vamos agora ver as características particulares de alguns deles.


8086 e 8088:

O 8086 foi um dos primeiros processadores 16 bits do mercado e também o que dispunha de maior espaço de endereçamento de memória disponível, 20 bits, o que equivalia a 1MB. Mas não foi esse o eleito pela IBM para fabricar o seu primeiro PC, por uma razão muito simples: os custos de produção. Tanto o processador como a placa principal do computador tinham custos agravados pelo facto de serem 16 bits, pelo que ficava mais caro construir uma placa com um barramento de dados de 16 bits do que um mesmo barramento de 8 bits. Por essa razão, a Intel apresentou o 8088 em 1978.

Basicamente, é uma versão de baixo custo do 8086. Eles são idênticos em tudo, com excepção dos circuitos de comunicação com o exterior, os quais foram modificados para funcionar com um desenho de 8 bits. Com este chip híbrido conseguimos um sistema que pode correr software de 16 bits (usando os registos internos de 16 bits), ter acesso a 1 MB de memória (devido ao barramento de endereços de 20 bits) e ainda assim ter os custos de um processador de 8 bits. No entanto, e embora ele só tenha 8 bits de barramento de dados, é referido como sendo um processador de 16 bits, porque os caminhos da dados e os registos internos são de 16 bits.

Alguns poderão perguntar porque existe um limite de memória convencional de 640 KB se o processador tem capacidade para endereçar 1MB. Esse limite existe porque a IBM decidiu reservar a porção alta dos 1024 KB, isto é, os últimos 384 KB para serem usados por placas e rotinas do BIOS, deixando os 640 KB iniciais para a execução das aplicações.

O IBM PC trabalhava a 4,77 MHz, o que contrastava com alguns clones que apareceram posteriormente com versões mais rápidas do 8088 e conseguiam quase o dobro dessa velocidade. No entanto, a IBM retomou o 8086 nos modelos 25 e 30 doPS2, mas mesmo assim não foi pioneira, dado que a Compacq e a AT6T já o estavam a utilizar nos seus modelos Deskpro e 6300, respectivamente. A capacidade de comunicações de 8086 dava-lhe um aumento de cerca de 20% na sua performance em relação a um 8088 de velocidade idêntica.


8087:

Embora seja um coprocessador aritmético e não um microprocessador, não ficará fora de contexto falar-se dele aqui.

Foi desenhado para executar operações matemáticas complexas. A primeira vantagem da sua utilização é o aumento da velocidade de execução de programas que usem cálculo matemático intensivo. Mas também pode ter algumas desvantagens, tais como suporte de software, custo, consumo de potência e aumento da temperatura da máquina.

A primeira desvantagem é que somente alguns programas tiram partido do coprocessador, isto é, o programa tem de ser escrito de modo a tirar partido do coprocessador, embora mesmo esses programas nem sempre tirem o devido partido das vantagens de ter um coprocessador aritmético. Dentro desses programas, temos as folhas de cálculo, programas de estatística, de CAD e software de engenharia que tiram o devido partido do coprocessador. Como é lógico, um processador de texto não necessita dele para nada.

Como já se disse, mesmo os programas que fazem uso do coprocessador não o fazem em todas as operações. Tomemos como exemplo uma folha de cálculo clássica, o Lotus 1-2-3, que não faz uso do coprocessador para operações simples, tipo adição, subtracção, etc. senão vejamos o seguinte teste.

Temos duas folhas de cálculo, cada uma com 8000 células. A primeira tem operações de divisão, subtracção, adição e multiplicação espalhadas pelas 8000 células. A segunda folha tem 8000 células com fórmulas que usam as funções SQRT, SIN, CÓS e TAN. Analisemos os resultados da tabela 3.6, com um computador com e outro sem coprocessador.

Por aqui podemos ver que não valia o investimento, a não ser que fosse estritamente necessário.

O 8087, assim como mais tarde o 80387, tem de trabalhar sempre à mesma velocidade do processador, seja qual for a sua velocidade. Isto porque o processador e o coprocessador trabalham sincronizadamente. No caso do XT, a 4,77 MHz, o 8087 tinha de trabalhar pelo menos a essa velocidade e o mesmo aconteceria mais tarde com o 80386. Se trabalhasse a 20 MHz, o 80387 teria de trabalhar a essa velocidade ou superior, caso contrário, não funcionaria correctamente. No entanto, com o 80286 já não era assim, pois tanto o 80286como o 80287 eram assíncronos.


80286:

O 80286, i286 como ficou conhecido, era também um processador de 16 bits. Apresentava grandes avanços em relação aos processadores da primeira geração. A frequência de relógio foi aumentada, mas um dos seus maiores melhoramentos foi o manuseamento de instruções.

Foi apresentado inicialmente a uma velocidade de 6 MHz e funcionava quatro vezes mais rápido do que os 8088 a 4,77 MHz. Posteriormente surgiram as versões a 8 MHz, 10 MHz e 12 MHz.

Há várias razões para que o i286 seja mais rápido do que os seus antecessores: a principal, como já foi referido, refere-se ao manuseamento de instrução, isto é, o 286 era muito mais eficiente ao executar as instruções. Em média, uma instrução demorava 12 ciclos de relógio para ser executada no 8088, mas no 286 passava para uma média de 4,5 ciclos. Adicionalmente, o 286 podia manusear até 16 bits de dados simultaneamente, através de um barramento de dados com o dobro do tamanho do 8088.

Outra das inovações do i286 era o facto de ter dois modos de operação, “o modo real” e o “modo protegido2. Estes dois modos eram de tal forma distintos que poderíamos pensar que tínhamos dois processadores diferentes num só, senão, vejamos: em modo real, o 286 actua essencialmente como se tratasse de um 8086/88, além de ser totalmente compatível com o 8086/88 no seu código máquina.

No modo protegido era um processador totalmente diferente. Neste modo, um programa desenhado para o i286 trabalha como se conseguisse endereçar 1GB de memória, memória virtual incluída. No entanto, o i286 só é capaz de endereçar 16 MB de memória. Um ligeiro senão neste cenário era o simples facto de o i286 não pode mudar de modo protegido para o real, sem que fosse feito um reset ao sistema. No entanto, podia mudar de modo real para protegido sem o reset.


80287:

O 80287 era o coprocessador matemático desenhado para trabalhar com o i286. Este circuito integrado era em tudo idêntico ao seu congénere 8087, isto é, continha as mesmas capacidades de processamento internas do 8087, mas a interface foi modificada de modo a trabalhar com o i286.

Ao contrário do 8088 e 8087, o i286 e o 80287 não trabalham sincronizados. A interface é assíncrona e menos eficiente que a do 8087. Além do mais, o circuito interno do i286 divide a frequência do relógio de sistema por 2 e o 80287 divide essa mesma frequência por 3. Devido a isso, muitos computadores trabalhavam com 80287 a 1/3 da velocidade do sistema, ou 2/3 da velocidade do i286.

Como já se disse, o i286 e o 80287 trabalham assincronamente e, como tal, podem trabalhar a velocidades diferentes um do outro. No desenho do i286, há um pino de entrada através do qual ele recebe o sinal de relógio. Este sinal é dividido por 2 no interior do processador e gera o sinal de relógio do processador. O 80287 tem dois modos de entrada de sinal de relógio: se o 80287 trabalha com o mesmo sinal de relógio que o i286, o seu circuito interno divide o sinal de relógio de sistema por 3; se desejarmos uma maior performance do 80287, no desenho da placa principal do computador, podemos usar um 80284, que é o circuito gerador de relógio e um oscilador separados para o 80287. Mas, caso a placa não seja desenhada especificamente para isso, o 80287 trabalhará a 2/3 da velocidade do i286.


80386:

O 80386 ou i386 revolucionou em parte a indústria dos PC devido aos melhoramentos de performance que trouxe para os computadores pessoais, começando pelo facto de ser um processador de 32 bits optimizado para operar a alta velocidade e para sistemas operativos multitarefa.

O i386 pode executar instruções 8088 em modo real, mas em menos ciclos de relógio. Tema a mesma eficiência que o i286 para a execução dessas instruções, o que quer dizer que uma instrução média demora cerca de 4,5 ciclos de relógio para ser executada. Em termos de performance bruta, o 228 e o 386 estão praticamente a par um do outro. No entanto, o i386 oferecia uma melhor performance de outros modos, principalmente devido a alguns modos adicionais de software e a uma unidade de gestão de memória (MMU – Memory Management Unit) aperfeiçoada.

Contrariamente ao i286, o i386 pode mudar de e para um modo protegido sob o controlo de software sem necessidade de um reset do sistema, uma capacidade que torna a utilização do modo protegido muito mais prática. Além disso, o i386 tem um novo modo, chamado “modo virtual”, que permite ter várias sessões em modo real a correr simultaneamente sob modo protegido.
Além da velocidade de processamento, a característica mais importante deste processador são os seus modos de operação:

  • Modo real – Quer seja no i826 ou no i836, o modo real é compatível com o 8086/88. Neste modo, o i386 comporta-se como um PC muito rápido com 640 KB de memória convencional, isto é, comporta-se exactamente como um 8088. Não devemos esquecer que, independentemente do processador, qualquer aplicação em DOS necessita deste modo para correr.
  • Modo protegido – Este modo é totalmente compatível com o modo protegido do i286. Normalmente este modo é designado como modo nativo, isto porque tanto o i826 como o i836 foram desenhados para operar sistemas operativos avançados como o Windows NT ou OS/2 da IBM, que trabalham somente em modo protegido. No i386, as capacidades de endereçamento de memória em modo protegido foram melhoradas com uma nova MMU que permite uma paginação de memória mais avançada. Estas características são extensões à MMU do i286.
  • Modo real virtual – Este modo é novo. Em modo real virtual, o processador pode trabalhar com protecção de memória física enquanto simula o modo real do 8088. Assim, neste processador podemos correr múltiplas cópias do DOS ou de outros sistemas operativos, cada uma numa área protegida da memória. Caso um programa de um segmento da memória bloqueie, o resto do sistema está protegido.

A Intel lançou algumas versões do i386, cada uma com características próprias que a diferenciava das outras, pelo que vamos agora ver as características de cada uma delas.


i386DX:

O i386 foi o primeiro processador da família 386 e era um processador a 32 bits com registos internos de 32 bits, um barramento de dados internos de 32 bits e um barramento externo também de 32 bits. O i386 tem 275.000 transístores, num encapsulamento VLSI (Very Large Scale Integration) com 132 pinos e um consumo de energia de aproximadamente 400 mA, bastante menor do que o 8088. O baixo consumo energético é devido ao facto de ser fabricado com tecnologia CMOS (Complementary Metal Oxide Semiconductor).

O i386DX estava disponível em velocidades de processamento que iam dos 16 MHz aos 33 MHz e endereçava até 4GB de memória física.


i386SX:

O i386 SX foi desenvolvido para aqueles utilizadores que necessitavam de um processador potente, mas a um preço mais acessível. O i386SX era em tudo idêntico ao i386DX, tinha registos internos de 32 bits e, como tal, capacidade para correr software de 32 bits, mas tinha um barramento de dados externo de 16 bits, idêntico ao do i286, assim com um esquema de endereçamento de memória de 24 bits em vez dos 32 bits do i386DX. Como tal, somente podia endereçar 16 MB de RAM, em vez dos 4GB da versão DX. Antes de ser descontinuado, esteve disponível em versões que iam dos 16 MHz aos 33 MHz.


i386SL:

Outra variante do i386 foi o i386SL, que é uma versão de baixa potência do i386SX destinada aos computadores portáteis. Este processador tem características especiais de gestão de energia.

Incorpora uma arquitectura estendida, que inclui um sistema de gestão de interrupções ou SMI (System Management Interrupt) e que permite aceder às características de gestão de energia. Além disso, tem suporte para função de memória expandida LIM (Lotus Intel Microsoft) e um controlador de cache usado para controlar a memória de cache externa.

Como é lógico, para acrescentar estas características extra, foi necessário aumentar também o número de transístores, que passou de 275.000 no caso do i386DX para 885.000 no i386SL. A sua velocidade de processamento era de 25 MHz.


80387:

O coprocessador matemático 80387 foi desenhado especificamente para os processadores i386, isto porque, apesar de podermos usar um 287 como coprocessador para um i386, o sistema ficava bastante penalizado em termos de performance. Contrariamente ao que acontecia com os 287, o 387 trabalhava sincronizadamente com o i386, o que quer dizer que trabalhava à mesma velocidade do processador.


80486:

Com o aparecimento do i486 deu-se um salto em termos de performance na família dos PC. O i486 é uma espécie i386 mais musculado, que combina um 386 aperfeiçoado com mais dois chips, um controlador de cache 385 e um coprocessador matemático 387. O microcódigo foi aumentado e é mais rápido. Neste processador, há o equivalente a 1,25 milhões de transístores. Em certas aplicações, um i386DX a 25 MHz com controlador 385 e coprocessador i387 por vezes conseguia executar somente metade das instruções por segundo que um i486 a 25 MHz.

Para que o i486 consiga ser duas vezes mais rápido do que o seu equivalente i386, além do já referido, tem quatro características principais:

  • Tempo de execução de instruções reduzido – No i486, as instruções, em média, só necessitam de dois ciclos de relógio para serem executadas.
  • Memória cache interna (Level 1) – A cache L1 tem uma média de 90% a 95% de acertos, 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 dados 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 16MHz e os 120MHz. 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 que a versão Overdrive já tem 169 pinos que eram introduzidos num suporte que ficou denominado socket 1. Posteriormente, surgiram os socket 2 e 3 com scoket 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 100MHz trabalha perfeitamente a 75MHz numa placa principal de 25 MHz. Note-se que os processadores Overdrive e DX2 funcionam internamente a duas vezes e 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. Na tabela 3.8 podemos ver o resultado das várias combinações de processadores com as velocidades das placas principais.

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.


Cache interna (L1) do 486:

Todos os membros da família i486 incluem um controlador interno de cache (Level 1) com 8KB de memória cache. Basicamente, esta cache é uma área de memória muito rápida incorporada no processador e que é usada para guardar dados e código que vai ser acedido pelo processador.

O uso da memória cache reduz o tempo de espera do processador por dados evitando que o processador fique à espera desses mesmos dados da memória principal, que é muito mais lenta, aumentando, assim, substancialmente, a performance do processador.

A organização da memória cache no 486 é tecnicamente denominada de “four-way set associative cache”, o que quer dizer que a memória é dividida em quatro blocos, sendo cada bloco organizado em 128 ou 256 linhas, com 16 bytes cada linha.

O conteúdo da cache deve ser sempre sincronizado com o conteúdo da memória principal, de modo a assegurar que o processador está a trabalhar com os dados correctos. Por essa razão, a cache nos 486 é do tipo Write-Throug, isto é, quando o processador escreve informação na cache, essa informação é também escrita automaticamente na memória principal.


i486DX:

O I486DX é fabricado com tecnologia CMOS (Complementary Metal Oxide Semiconductor) de baixo consumo, originalmente disponível na versão de 168 PGA (Pin Grid Array) de 168 pinos e uma tensão de 5 volts. Posteriormente, foi lançada uma versão de 196 pinos PQFP (Plastic Quad Flat Pack) a 3,3 volts, assim como uma versão para computadores portáteis de 208 pinos SQFP (Small Quad Flat Pack).

Entre outras características, o i486DX tem registos internos de 32 bits, barramento de dados externo de 32 bits e barramento de endereços de 32 bits. No seu interior tem qualquer coisa como 1,2 milhões de transístores e encontramos também um coprocessador matemático, uma unidade de gestão de memória e um controlador de cache com uma cache L1 de 8 KB. Devido a isso e a uma unidade interna de processamento mais eficiente, ele é capaz de executar instruções individuais a cerca de dois ciclos de processador.

Tal como o i386DX, o i786DX pode endereçar 4GB de memória e gerir até 64 TB de memória virtual. Suporta inteiramente os três modos de operação
do i386, isto é, modo real, modo protegido e modo real virtual.


i486SX:

O i486SX é virtualmente igual ao i486DX, mas com uma diferença: não tem coprocessador matemático. Algumas das primeiras versões do SX eram integradas da série DX, mas com defeitos no processador matemático, os quais foram aproveitados pela Intel para lançar uma versão mais barata do 486. No entanto, esta opção durou pouco, porque a Intel logo desenhou um novo chip sem coprocessador, tendo isso baixado o número de transístores de 1,2 milhões para 1,185 milhões.

O i486SX foi lançado numa versão de 168 pinos e a velocidade de 16 MHz, 20 MHz, 25 MHz e 33 MHz, tendo também sido lançada uma versão SX2 que trabalhava a 50 MHz ou 66 MHz.


i487SX:

O i487SX na realidade não é um coprocessador matemático, como a sua designação poderá dar a entender, pois na realidade não é mais do que um i486DX a 25 MHz completo, com um pino extra e alguns outros alterados. Aquando da introdução do I487SX no respectivo socket, ele desactiva o 486SX através de um novo sinal de um dos seus pinos. Quanto ao pino extra, ele não tem absolutamente sinal nenhum e serve somente para evitar que se introduza o integrado indevidamente no socket.


i486DX2 e 1486DX4:

Começando pelo DX2, ele trabalha internamente a duas vezes a velocidade de relógio do sistema, isto é, trabalha a 50MHz se a placa principal for configurada para 25 MHz. No entanto, se a configurarmos para 33 MHz, o processador já trabalhará a 66 MHz. Foram lançadas três versões para este processador:

  • DX2 a 40 MHz para sistemas de 16 MHz ou 20 MHz;
  • DX2 a 50MHz para sistemas de 25 MHz;
  • DX2 a 66 MHz para sistemas de 33 MHz.

A única parte do DX2 que não trabalha a duas vezes a velocidade do sistema é a unidade de interface de barramento, dado que é a região do integrado que gere os I/O entre o CPU e o exterior. Como serve de “intermediário” entre ambas as partes, a unidade de interface de barramento torna a multiplicação transparente para o resto do sistema, fazendo com que o DX2 pareça um DX normal, exceptuando o facto de executar as instruções ao dobro da velocidade.

No caso do DX4, em vez de um dobrador de velocidade, temos um triplicador. Isto é, se multiplicarmos os 33 MHz do relógio de sistema por 3, temos 99MHz, mas, por questões de marketing, a Intel denominou-o de 100MHz. Uma diferença muito importante do DX4 em relação ao DX2 era o facto de trabalhar a 3,3 volts.


Pentium:

Em Outubro de 1992, a Intel anunciou a sua quinta geração de processadores, com o nome de código P5 e nome comercial Pentium. Este processador é inteiramente compatível com todos os anteriores processadores Intel, no entanto, tem grandes diferenças em relação aos seus antecessores.

Uma das grandes e revolucionárias diferenças entre o Pentium e os processadores anteriores é o facto de ter duas pipelines, o que lhe permite executar dois processos simultaneamente. A esta capacidade a Intel chamou de tecnologia superescalar, normalmente associada a processadoras RISC, tendo o Pentium sido o primeiro processador CISC a ser considerado como superescalar. Na prática, é quase como se tivéssemos dois processadores i486 dentro de um só chip.

As duas pipelines de instruções do Pentium são denominadas de “Pipeline U” e “Pipeline V”: a “U”, que é a primária, pode executar as instruções de inteiros e de vírgula flutuante; a “V”, que logicamente é secundária, somente pode executar instruções simples de inteiros e certas instruções de vírgula flutuante. A grande vantagem de dupla pipeline é permitir a execução de duas instruções simultaneamente. No entanto, como já vimos anteriormente, nem todas as instruções sequenciais podem ser executadas simultaneamente e nesses casos é usada somente a pipeline “U”.

O Pentium tem um barramento de endereços de 32 bits, o que lhe dá a mesma capacidade de endereçamento de 4 GB do i386 e i486, mas, no entanto, o Pentium tem um barramento de dados de 64 bits, o que quer dizer que pode movimentar o dobro dos dados do seu antecessor i486, à mesma velocidade de relógio. O facto de ter um barramento de dados de 64 bits implica que a memória de sistema seja acedida a 64 bits, o que quer dizer que cada banco de memória passou a ser de 64 bits. Não esqueçamos que o i486 só tinha 32 bits. No i486 bastava uma SIMM para termos um banco de memória, no Pentium passamos a necessitar de duas SIMM para ter o mesmo resultado, no entanto, com o dobro da memória.

Apesar de ter um barramento de dados de 64 bits, o Pentium só tem registos de 32 bits. Devido a isso, quando as instruções são processadas internamente, são divididas em blocos de 32 bits e processadas do mesmo modo que no 486.

O Pentium tem uma cache interna de 16 KB, dividida em dois blocos de 8 KB cada, sendo um para instruções e outro para dados. Esta cache está organizada no modo “two-way set associative”, sendo cada “set” ou conjunto dividido em linhas de 32 bits. Cada bloco de cache tem um TLB (Translation Lookaside Buffer), o qual traduz os endereços lineares para endereços físicos.

O Pentium foi lançado com dois desenhos básicos, cada um deles com várias versões. A primeira geração foi lançada com velocidades de 60 MHz e 66 MHz. O chip tinha 273 pinos no formato PGA e trabalhava a 5 volts; além disso, o processador trabalhava à mesma velocidade da placa principal.

Em Março de 1994, a Intel lançou o Pentium de segunda geração, com velocidades que variavam dos 75 MHz aos 200MHz. Nesta segunda geração foi utilizada uma tecnologia BICMOS de 0,6u nas versões de 75 MHz, 90 MHz e 100 MHz, nas versões 120 MHz a 200MHz foi utilizada também a tecnologia BICMOS, mas de 0,35u.

O chip desta segunda geração de processadores Pentium tem 296 pinos no formato SPGA (Staggered Pin Grid Array) e trabalha a 3,3 volts, pelo que é incompatível com a primeira geração. No seu interior estão qualquer coisa como 3,3 milhões de transístores.

Nesta segunda geração é necessária a utilização de circuitos multiplicadores de relógio, de modo a o processador poder trabalhar a velocidades superiores à do barramento. Por exemplo, um Pentium a 166 MHz trabalha duas vezes e meia a velocidade do barramento.


Pentium MMX:

A terceira geração de processadores Pentium foi lançada em 1997 com o nome de código P55C e designação comercial Pentium MMX. Este processador é um Pentium de segunda geração, com tecnologia MMX. As suas velocidades vão de 166 MHz a 233 MHz, mantém as características principais dos seus antecessores, mas tem algumas alterações em relação ao desenho original dos Pentium de segunda geração. Entre elas são de realçar a cache L1 de 32 KB, dividida em dois blocos de 16 KB cada, uma unidade de pipeline específica para instruções MMX.

O MMX foi fabricado com tecnologia de silício CMOS de 0,35u, o que permitiu baixar a sua tensão de alimentação para 2,8 volts, apesar de no seu interior ter qualquer coisa como 4,5 milhões de transístores.

O seu outro trunfo é o facto de ampliar o conjunto de instruções do Pentium em mais 57 instruções, às quais foi dado o nome de instruções SIMD (Single Instrution, Multiple Data), instruções essas específicas para multimédia.

As aplicações de comunicações e multimédia actuais usam ciclos repetitivos que, apesar de ocupar 10% ou menos do código total da aplicação, podem representar cerca de 90% do tempo de execução. O SIMD permite que uma instrução execute a mesma função em múltiplos blocos de dados, sendo o mesmo que dar uma ordem a um grupo de pessoas, em vez de dar a mesma ordem a cada uma delas individualmente. O SIMD ainda permite ao processador reduzir ciclos de instruções intensivos, que são relativamente vulgares em aplicações de vídeo, áudio, gráficos ou animações.


Pentium Pro:

O sucessor do Pentium MMX é o Pentium Pro que foi apresentado em Setembro de 1995. O encapsulamento é de 387 pinos e usa o socket 8, pelo que não é compatível a nível de pinos com os seus antecessores.

O integrado é construído com o formato de um módulo multichip, a que a Intel chamou Dual Cavity PGA. No seu interior tem dois chips, um com o processador propriamente dito e no outro está a cache L2 de 256 KB ou 512 KB. O processador tem 5,5 milhões de transístores, enquanto que para a memória L2 de 256 KB tem 15,5 milhões e a de 512 KB 31 milhões de transístores, o que dá um impressionante total de 36,5 milhões de transístores no caso de ter 512 KB de cache L2.

A arquitectura do Pentium Pro inclui três pipelines, o que lhe permite executar múltiplas instruções por ciclo, incluindo também uma cache L1 de 16 KB dividida, sendo 8 KB em modo “two-way set associative” para instruções primárias e 8 KB em modo “four-way set associative” para dados. O Pentium Pro tem capacidade de “dynamic branch prediction”, assim como “speculative execution” e pode executar as instruções fora da sua ordem. Estas técnicas são denominadas pela Intel como “dynamic execution”.

Apesar de parecer um processador totalmente novo, em muitos aspectos dá-nos mais a sensação de ser uma evolução dos anteriores. O núcleo do chip é de arquitectura RISC, enquanto a interface de instruções externas é de arquitectura CISC. Por outras palavras, ele “pega” nas instruções CISC, transforma-as em várias instruções RISC e executa-as em pipelines de execução paralelas, aumentando assim a performance do processador.

Se compararmos o Pentium Pro com o Pentium, o primeiro é mais rápido, correndo software de 32 bits, já que o dynamic execution do Pentium Pro foi maximizado para trabalhar com sistemas operativos de 32 bits. No que respeita a sistemas operativos de 16 bits, tipo Windows 95 ou 98, aí o caso torna-se bastante diferente, pois um Pentium consegue superar um Pentium Pro de velocidade equivalente.

Já referimos neste capítulo a dynamic execution, ou execução dinâmica das instruções, pelo que vamos ver como isso é feito no Pentium Pro. Este tipo de execução é 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 à sua interligação, mas não são executadas ordenadamente, isto é, são enviadas para os pipelines as instruções que não dependem umas das outras e só depois é que são executadas as que necessitam dos dados das anteriores.

Como vimos no parágrafo anterior, 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 é possível porque, enquanto o processador recebe instruções, ele també está 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 original no programa. O processador lê as instruções descodificadas e determina quando estão disponíveis para processamento ou, por outro lado, se dão dependentes de outras instruções que necessitam de ser executadas primeiro. Assim, o processador determina qual a sequência óptima para 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 especulativamente, isto é, as instruções podem ser executadas sem dependências umas das outras. Utiliza a técnica de Data Flow Analysis para verificar as dependências entre instruções e o algoritmo de Multiple Branch Prediction para estabelecer a lista das instruções que podem ser executadas. Assim, o Pentium pró pode em dada ciclo de relógio executar três instruções independentes. Após essa execução, os resultados são armazenados em registos de memória temporários e só são disponibilizados quando as instruções que as antecedem, na sequência original do programa ou processo a que pertencem, tiverem sido igualmente executadas.


Outras das características do Pentium Pro é o facto de ter cache L2 integrada. Ao colocar a cache L2 no interior do chip, a cache pode trabalhar À mesma velocidade do processador, em vez dos típicos 60 MHz do barramento da placa principal. De facto, a cache L2 tem um backside bus interno de 64 bits, o qual não partilha tempo de processamento com o barramento FSB externo de 64 bits do processador.

Outras das características da cache L2 integrada é o multiprocessamento ser grandemente melhorado. O Pentium Pro suporta um novo tipo de configuração do multiprocessador chamado Multiprocessor Specification (MPS 1.1). o Pentium Pro com MPS permite configurações de até quatro processadores. Ao contrário de outras configurações do multiprocessador, o PENTIUM pró elimina problemas de coerência de cache, porque cada chip mantém uma cache L1 e uma L2, separadas internamente.


Pentium II:

O Pentium II é o nome comercial do Klamath, o Pentium Pro com tecnologia MMX. Integra as capacidades de dynamic execution do PENTIUM Pro com a tecnologia MMX.

O núcleo do Pentium pró utiliza a tecnologia RISC, uma tecnologia que permite aos processadores tornarem-se mais rápidos. Mas esta tecnologia é totalmente incompatível com a tecnologia CISC – a tecnologia utilizada até ao Pentium – o que significa que não poderíamos utilizar nenhum do software existente. A solução encontrada para esse problema foi, como já vimos anteriormente, a utilização de um núcleo RISC com um descodificador CISC. Quando um programa é executado, este descodificador traduz as instruções CISC recebidas pelo processador em instruções RISC equivalentes, para que o núcleo consiga processar. É assim que funciona o Pentium Pro e também o Pentium II.

O descodificador CISC do Pentium Pro foi optimizado para instruções de 32 bits, possuindo baixa performance para instruções de 16 bits. Isto significa que o Pentium pró só atinge o topo da sua performance quando utilizado em conjunto com sistemas operacionais realmente de 32 bits – como Windows NT, OS/2 e UNIX. O MS-DOS e o Windows 3.x utilizam código de 16 bits e o Windows 95 é um híbrido que ainda utiliza muito código de 16 bits. Por mais incrível que possa parecer, se utilizar o Windows 3.x ou Windows 95 num Pentium-200 e num Pentium Pro-200, o seu sistema será mais rápido no Pentium e não no Pentium Pro.

A correcção deste problema vem no Pentium II: o seu descodificador foi rescrito tendo em vista uma utilização mais maciça do código de 16 bits, o que faz com que seja mais rápido do que o Pentium Pro na execução do Windows 95/98.

Mas não é só esta mudança que torna o novo Pentium II mais rápido: a cache de memória L1 passa a ser de 32 KB, dividida em dois blocos de 16 KB, um para dados e outro para instruções.

O Pentium II foi construído num novo tipo de embalagem chamado SEC (Single Edge Contact). Este tipo de encapsulamento é na verdade uma cartridge bastante similar Às utilizadas pelos vídeo-jogos e é encaixado num socket próprio existente na motherboard.

Outra das características do Pentium II é o facto de ter cache L2 incorporada na cartridge e não na motherboard, o que não só simplifica o projecto do sistema e economiza espaço, como também significa que o núcleo do CPU poderá comunicar com a cache L2 a alta velocidade.

O Pentium II inclui inovações significativas na arquitectura encontradas no Pentium Pro, como a dynamic execution, e também incorpora a tecnologia MMX, que melhora os recursos multimédia. O resultado é uma melhorai significativa no desempenho do sistema.
O Pentium II continua a usar o processo de fabrico 0,35u, tendo posteriormente sido adoptado o processo 0,25u. A corrente máxima consumida pelo Pentium II a 233 MHz é de 11,8 (A), enquanto que o 266 MHz chega a 12,7 (A) e o 300 MHz aos 14,2 (A).

Outra das características do Pentium II é a arquitectura DIB (Dual Independent Bus), ou Barramento Duplo Independente, implementada no Pentium Pro e proporcionando um melhor desempenho.

Esta arquitectura é composta por dois barramentos independentes: o barramento de cache L2 e o barramento do sistema, de processador-a-memória. A adição do barramento de cache remove um tráfego significativo do barramento do sistema. Os dois barramentos podem ser usados simultaneamente, aumentando de forma drástica o volume de dados que pode entrar e sair do processador. A melhoria na troca de dados entre o processador e os subsistemas de memória resulta numa maior velocidade de processamento e num desempenho mais rápido do sistema.

As vantagens são as seguintes:
  • Uma maior velocidae de processamento, proporcionando desta forma um melhor desempenho.
  • A remoção do tráfego do barramento congestionado do sistema.
  • Barramento de cache L2 que pode ser dimensionado de acordo coma a velocidade do processador.

A DIB permite que a cache L2 de um Pentium II a 400 MHz trabalhe a 200 MHz, três vezes mais rápido do que a cache L2 dos sistemas baseados em processadores Pentium. Conforme for aumentando a frequência de futuros Pentium, também aumentará a velocidade do bus da cache L2.

Os processadores Pentium II suportam o protocolo ECC (Error Checking and Correction) no barramento de cache L2. Este protocolo é um método mais efiscaz de assegurar a integridade dos dados, podendo detectar tantos erros de single-bit, como de double-bit, e podendo corrigir erros de single-bit automaticamente. A paridade de memória somente pode detectar erros em bits de número ímpar e confia no software para os corrigir.

O I2O (Intelligent Input/Output) é uma arquitectura desenvolvida entre outras empresas pela Intel, de modo a melhorar significativamente o desempenho do I/O, eliminando a carga do CPU de realizar tarefas intensivas de interrupção de I/O (fig. 3.36). O I2O também permite que os programadores desenvolvam drivers de diapositivos que sejam portáteis entre plataformas de host e múltiplos sistemas operativos.

Isso apresenta como vantagens:

  • Um melhor desempenho do servidor, removendo do CPU do servidor a carga de realizar tarefas intensivas de interrupção de I/O.
  • Uma maior fiabilidade e disponibilidade dos drivers de diapositivos, através da padronização dos drivers.

Os drivers I2O são divididos em duas partes:

  • Módulo de serviço do sistema operativo (OSM), que serve de interface com o sistema operativo host.
  • Módulo do dispositivo da hardware (HDM), que faz de interface com o periférico específico a que corresponde o driver.
Estes módulos ligam-se através de uma camada de comunicação que estabelece precisamente a ligação entre os dois módulos, O OSM e o HDM, e define o modo como eles partilharão a informação. Esta camada de comunicação estabelece para o HBM uma interface independente do host e permite que os drivers dos dispositivos sejam portáteis de um sistema operativo para o outro. Isso permite a um fabricante de hardware programar um único código que poderá funcionar com outros sistemas operativos.

Além do processamento com um único CPU, o Pentium foi desenvolvido para funcionar em operação de processador duplo. A Intel implementou inicialmente o multiprocessamento com o Pentium Pro. O bus do Pentium Pro foi projectado para suportar até dois CPU Pentium II ligados em paralelo. É possível usar projectos de sistema de processadores Pentium Pro DP (Dual-Processor). Isso significa que não será necessário recorrer a lógica adicional para o duplo processamento, pois o Pentium II inclui toda a lógica necessária para suportar directamente a ligação.

Como já foi referido anteriormente, o Pentium II tem a forma de uma cartridge, pelo que as motherboards para Pentium II têm um conector próprio para o CPU, chamado slot 1.

O CPU requer um suporte próprio, designado por mecanismo de retenção. Esse mecanismo suporta o CPU no slot 1 com a segurança necessária, além de o proteger e à motherboard de qualquer dano. Esse mecanismo de retenção é fornecido pelos fabricantes de motherboards.

O cabo de alimentação da ventoinha do dissipador liga num conector de três pinos situado na motherboard e que 12 volts e massa. A ventoinha também transmite um sinal indicativo da sua velocidade de rotação para as motherboards que tenham controlo de velocidade da ventoinha.

Sem comentários:

Enviar um comentário