Teoria de microprocessadores

Autor: Laércio Vasconcelos
Setembro/2003
   

    Com este artigo você entenderá os termos técnicos envolvidos em hardware de microprocessadores, como caches L1 e L2, barramentos, interrupções, DMA, E/S, clock interno e externo, número de bits, capacidade de endereçamento, etc. 

Copyright (C)
Laércio Vasconcelos Computação

Nenhuma parte deste site pode ser reproduzida sem o consentimento do autor. Apenas usuários individuais estão autorizados a fazer download ou listar as páginas e figuras para estudo e uso próprio e individual, sem fins comerciais.

Este componente é o principal responsável pelo desempenho de um PC. Exemplos de processadores usados nos PCs são o Pentium 4, Athlon, Pentium III e Duron, além de outros, é claro. Todos os processadores usados nos PCs são descendentes do 8086, o primeiro processador de 16 bits lançado pela Intel, no final dos anos 70. Na discussão que faremos a seguir, encontraremos diversos termos técnicos relacionados com os processadores, por exemplo:

Para facilitar a compreensão desses termos, apresentaremos aqui uma descrição simplificada de um processador. Esta descrição não irá reproduzir diretamente as características dos processadores usados nos PCs, mas dará ao leitor, o embasamento necessário para entendê-los.

Um processador é um chip que contém o que chamamos de Unidade Central de Processamento (em inglês, Central Processing Unit, ou CPU). É responsável por buscar e executar instruções existentes na memória. Es­sas instruções são o que chamamos de “linguagem de máquina”. São co­mandos muito simples, como operações aritméticas e lógicas, leituras, gra­vações, comparações e movimentações de dados. Essas instruções sim­ples, quando agrupadas, formam o que chamamos de programas.

Um processador precisa realizar operações de leitura da memória. Nessas leituras o processador recebe as instruções a serem executa­das e os dados a serem processados. Também é preciso realizar grava­ções de dados na memória, para guardar os resultados intermediários e finais do processamento.

Não basta ser capaz de realizar leituras e gravações na memória. Um processador também precisa ser capaz de comunicar-se com o mundo exterior. Neste mundo exterior está o usuário que opera o computa­dor. É preciso ler dados provenientes do teclado, mouse e outros dispositivos de entrada, bem como transferir da­dos para o vídeo, impressora e outros dispositivos de saída. Essas operações são chamadas de “entrada e saída”, ou E/S (em inglês, Input/Output, ou I/O). Portanto, além de processar dados, um processador deve ser capaz de realizar operações de entrada e saída, bem como realizar leituras e gravações na memória.

Figura 4.1
Representação simplificada de um processador.

 

 

 

A figura 1 mostra, de forma bem simplificada, alguns dos sinais digitais existentes em um processador. Temos o chamado “barramento de dados”, através do qual trafegam os dados que são transmitidos ou recebi­dos pelo processador. Os dados transmitidos podem ser enviados para a memória ou para um dispositivo de saída, como o vídeo. Os dados recebidos podem ser provenientes da memória, ou de um dispositivo de entrada, como o teclado. Cada uma das “perninhas” do processador pode operar com um bit. No processador da figura 1, temos um bar­ramento de dados com 16 bits. Observe que as linhas desenhadas sobre o barramento de dados possuem duas setas, indicando que os bits podem trafegar em duas direções, saindo e entrando no processador. Dize­mos então que o barramento de dados é bidirecional.

O barramento de endereços serve para que o processador especifi­que qual é a posição de memória a ser acessada, ou qual é o dispositivo de entrada e saída a ser ativado. Na figura 1, temos um barramento de ende­reços com 24 bits, já que são usadas 24 “perninhas” do processador para a formação deste barramento. Observe ainda que o barramento de endereços é unidirecional, ou seja, os bits “saem” do processador.

Além desses dois barramentos, a figura mostra ainda dois sinais de con­trole que servem para definir se a operação a ser realizada é uma leitura ou uma gravação, e se deve atuar sobre a memória ou sobre um dispositivo de E/S. São eles:

MIO:    Este sinal indica se a operação diz respeito à memória ou a E/S
RW:     Este sinal indica se a operação é uma leitura ou uma gravação

Através desses dois sinais, podem ser definidas 4 operações básicas:

Figura 4.2
Outra forma de representar os barramentos de um processador.

 

 

 

Note que o processador representado na figura 1 tem 20 linhas que indicam os endereços e 16 que indicam os dados. São ao todo 36 linhas. Processadores mais modernos operam com um número ainda maior de bits. Por exemplo, 32 bits de enereços e 64 bits de dados. O número de linhas é tão grande que sua representação torna-se confusa. Por isso é comum utilizar a representação da figura 2. Usamos setas maiores para representar um conjunto de bits que têm a mesma função, como o barramento de dados e o barramento de endereços.

Os processadores possuem, além do barramento de dados e de en­dereços, o chamado barramento de controle, no qual existe uma miscelâ­nea de sinais digitais com diversas finalidades. Os sinais RW e MIO exemplificados na figura 1 são parte do barramento de controle. Outros exemplos de sinais deste barramento são os que descrevemos a seguir.

INT

Este sinal é uma entrada que serve para que dispositivos externos possam interromper o processador para que seja realizada uma tarefa que não pode esperar. Por exemplo, a interface de teclado interrompe o processador para indicar que uma tecla foi pressionada. Esta tecla precisa ser lida, e seu código deve ser armazenado na memória para processa­mento posterior. As interfaces de drives e do disco rígido interrompem o processador para avisar o término de uma operação de leitura ou escrita. Vários outros dispositivos também precisam gerar interrupções. Como existe apenas uma entrada INT, o processador opera em con­junto com um chip chamado controlador de interrupções. Este chip é en­carregado de receber requisições de interrupção de vários dispositivos e enviá-las ao processador, de forma ordenada, através do sinal INT.

NMI

Este é um sinal de interrupção especial para ser usado em emergências. Significa Non Maskable Interrupt, ou Interrupção não mascarável. Em ou­tras palavras, esta interrupção deve ser atendida imediatamente. Ao con­trário do sinal INT, que pode ser ignorado pelo processador durante pequenos intervalos de tempo (isto se chama mascarar a interrupção), o sinal NMI é uma interrupção não mascarável. Nos PCs, o NMI é usado para informar erros de paridade na memória e outras condições catastróficas.

INTA

Significa Interrupt Acknowledge, ou seja, reconhecimento de interrupção. Serve para o processador indicar que aceitou uma interrupção, e que está aguardando que o dispositivo que gerou a interrupção identifique-se, para que seja realizado o atendimento adequado.

VCC

Esta é a entrada de corrente elétrica que alimenta os circuitos internos do processador. Processadores antigos operavam a partir de uma tensão de 5 volts. A partir de meados dos anos 90, passaram a utilizar tensões mais baixas, como 3,5 volts. Todos os processadores modernos operam com duas tensões (VCC1 e VCC2). A tensão externa é sempre de 3,3 volts (já existem modelos mais recentes que operam externamente com 2,5 volts), e é usada para alimentar os circuitos que se comunicam com o exterior do processador. A tensão interna é usada para alimentar o interior (núcleo) do processador, e é sempre mais baixa. Nos processadores recentes, a tensão interna é inferior a 2 volts. Note que cada tensão de entrada não ocupa um único pino do processador, e sim, vários pinos. Como a corrente total é relativamente alta, os processadores usam vários pinos para a entrada da tensão do núcleo (Core) e para a tensão externa (I/O).

GND

Significa Ground, ou Terra. Deve ser ligado ao polo negativo da fonte de  alimentação. Assim como ocorre com as entradas de VCC, os processadores possuem diversos pinos de terra, para que o fornecimento de corrente seja melhor distribuído.

Reset

Este é um sinal que está ligado ao botão Reset do painel frontal do gabinete. Ao ser ativado, o processador para tudo, e atua como se tivesse acabado de ser ligado. Este sinal é também conectado a um circuito chamado Power on Reset. Sua função é gerar, no instante em que o computador é ligado, um pulso eletrônico similar ao criado pelo pressionamento deste botão. Aproveitando os conhecimentos de eletrônica apresentados no capítulo 3, mostramos no final deste capítulo, o funcionamento de um circuito de Reset.

Clock

Esta entrada deve receber um sinal digital que será usado internamente para sincronizar todo o funcionamento do processador. Explicando de forma simplificada, se um processador recebe um clock de 100 milhões de ciclos por segundo, ele executará 100 milhões de operações por segundo.

Figura 4.3
Diagrama de tempo de um sinal de clock.

A figura 3 mostra o diagrama de tempo de um sinal de clock. Seus bits se alternam de forma periódica, entre 0 e 1. Um trecho com valor 1, seguindo por um trecho com valor 0, é o que chamamos de período do clock. O período é calculado em função do valor do clock, pela seguinte fórmula:

T = 1/f

Na fórmula, T é o período, dado em segundos, e f é a freqüência do clock, medida em Hz (hertz). Por exemplo, se tivermos um clock de 100 MHz (100.000.000 Hz), o período será de:

T = 1/100.000.000 = 0,000 000 01s

Para evitar o uso de casas decimais, toma-se o hábito de usar a unidade ns (nano-segundo, ou bilionésimo de segundo). Para fazer a conversão basta andar com a vírgula, 9 casas decimais para a direita. Portanto temos:

0,000 000 01s = 10 ns

A maioria dos circuitos digitais opera a partir de uma base de tempo, um clock. São chamados de circuitos síncronos. Os processadores são circuitos síncronos, já que são comandados por sinais de clock. As transições se positivas e negativas (0 para 1 e 1 para 0) do sinal de clock indicam aos circuitos digitais que o utilizam, o momento certo de realizar suas operações.

Processadores antigos (até o 486DX-50) utilizavam um único sinal de clock para suas operações internas e externas. A partir daí, e até os dias atuais, os processadores passaram a operar com dois clocks, sendo um interno e um externo. O clock interno é sempre mais alto, e é usado para sincronizar as operações de processamento. Quando falamos, por exemplo, sobre um “Pentium III/800”, estamos dizendo que o seu clock interno é de 800 MHz. O clock externo tem um valor menor, e é usado para sincronizar as operações de comunicação entre o processador, a memória, o chipset e outros circuitos externos.

Não só o processador opera a partir de um clock. Vários outros circuitos e barramentos do computador têm suas operações sincronizadas por um clock. Por exemplo:

Memórias PC133 operam a partir de um clock de 133 MHz

Memórias PC100 operam a partir de um clock de 100 MHz

O barramento PCI opera a partir de um clock de 33 MHz

O barramento AGP utiliza um clock de 66 MHz

O barramento ISA utiliza um clock de 8 MHz

Placas de som fazem digitalizações em até 44 kHz

A princípio, quanto maior é o clock de um processador, maior é o seu desempenho. Por exemplo, um processador de 800 MHz é seguramente mais veloz que um de 200 MHz. Os fabricantes de processadores se esforçam para criar modelos capazes de operar com clocks cada vez mais elevados. Não devemos entretanto levar ao pé da letra, a relação entre desempenho e clock. Por exemplo, em certas condições, um processador de 700 MHz pode ser mais veloz que um de 900 MHz. O motivo desta discrepância é que além do clock, existem outros fatores que influenciam no desempenho, como por exemplo:

Quando as memórias não são suficientemente velozes, podem demorar muito na entrega de dados e instruções para o processador, que acaba ficando parte do tempo ocioso, tendo seu desmpenho prejudicado pela lentidão da memória. Também a cache L2 tem papel fundamental. A cache L2 do processador Pentium III Coppermine, por exemplo, é mais eficiente que a do processador Pentium III Katmai. Portanto existem diferenças de desempenho, se comparamos essas duas versões do Pentium III, mesmo quando ambas operam com o mesmo clock. O tamanho da cache L2 também tem influência no desempenho. Processadores Athlon e Duron são idênticos, exceto pelo tamanho da cache L2 (256 kB para o Athlon e 64 kB para o Duron). Por isso ao compararmos os desempenhos desses dois processadores, mesmo operando com o mesmo clock, o Athlon leva vantagem. A arquitetura mais avançada também tem influência direta no desempenho. Um processador de 1200 MHz de 7a geração, por exemplo, tende a ser mais rápido que um de 1200 MHz, mas de 6a geração. Processadores de gerações mais avançadas são capazes de executar mais instruções ao mesmo tempo e operam com mais eficiência, tirando assim maior proveito do seu clock. É como comparar um carro com motor 2.0 produzido no ano 2000 com outro de motor 2.0 produzido em 1980. Os motores de geração mais nova têm maior rendimento, e tendem a obter maior desempenho em relação à potência do motor.

O clock de um processador está diretamente relacionado com o número de instruções que podem ser executadas a cada segundo. O 8086 e o 8088, nas suas primeiras versões, operavam a 5 MHz. Isto não significa exatamente 5 milhões de instruções por segundo, e sim, 5 milhões de CICLOS por segundo. Algumas instru­ções mais simples podiam ser executadas em apenas dois ciclos. Desta forma, em um segundo seria possível executar 2.500.000 dessas instru­ções. Outras instruções mais complexas, como a multiplicação e a divisão, eram muito mais demoradas. Suponha por exemplo uma instrução que precise de 10 ciclos para ser executada. Operando a 5 MHz, esses processadores poderiam executar 500.000 dessas instruções por segundo.

Com o passar do tempo e a evolução da tecnologia foi possível desenvol­ver processadores capazes de operar com clocks mais elevados, e o que é mais importante: executar instruções em um reduzido número de ciclos. Os processadores mais modernos são capazes de executar a maioria das instruções em apenas um ciclo. A partir do Pentium, passaram a executar instruções de forma simultânea, tornando possível, por exemplo, executar duas instruções em um único ciclo. Isto faria com que, teoricamente, operar a 200 MHz resulte em 400 milhões de instruções por segundo.

Algumas características dos processadores

Ao compararmos processadores novos e antigos, simples e sofisticados, vemos que eles possuem muitas características comuns, e as diferenças estão no nível dessas características. Um exemplo simples é o clock, já abordado neste capítulo. No ano 2000 já existiam processadores com clocks superiores a 1000 MHz. Em 1980, os modelos típicos operavam na faixa dos 5 MHz. Mesmo com esta diferença tão grande, o significado do clock é exatamente o mesmo nos dois casos. Passemos então a apresentar as principais características de um processador genérico, e vejamos como se aplicam aos modelos atuais.

Número de bits internos

Daqui vêm as terminologias “micro de 8 bits”, “micro de 16 bits” e “micro de 32 bits”, etc. Dentro de um processador, existem vários circuitos que ar­mazenam, transportam e processam dados. Na maioria dos processadores atuais, tais circuitos operam com 32 bits de cada vez. Nos antigos processadores dos anos 80, todos esses circuitos operavam com 16 bits, enquanto os modelos dos anos 70 operavam com 4 ou 8 bits.

Quanto maior é o número de bits de um processador, mais veloz po­derá realizar cálculos e processamento de instruções em geral. Veja por exemplo, os limites de números inteiros positivos que podem ser manipula­dos com 8, 16 e 32 bits:

8 bits

0 a 255

16 bits

0 a 65.535

32 bits

0 a 4.294.967.295

Suponha por exemplo que um processador de 16 bits precise realizar a opera­ção 245.818.768 + 978.798.423. Ambas as parcelas desta adição não po­dem ser representadas em um grupo de 16 bits. Portanto, deve ser reali­zada por etapas. Um processador de 32 bits é capaz de representar e operar tais números de forma direta, o que faz com que o cálculo seja feito, no mínimo duas vezes mais rápido. Este é apenas um exemplo no qual um processador de 32 bits leva vantagem sobre um de 16 bits. Pratica­mente em todas as instruções, esta vantagem existe.

Os processadores 8086, 8088 e 80286, usados nos PCs do início dos anos 80 e ainda encontrados no mercado até o início dos anos 90, operavam com 16 bits. A partir do 80386, os processadores usados nos PCs passaram a operar com 32 bits. Por incrível que pareça, os processadores mais modernos, como Pentium III, Pentium 4, Athlon e diversos outros atuais, também operam com 32 bits.

Número de bits externos

Para que um processador seja rápido, é preciso que ele seja capaz de manipular instruções em alta velocidade. Essas instruções são armaze­nadas na memória, e portanto, é preciso que a memória seja acessada em alta velocidade. Ao mesmo tempo em que executa instruções, o processador também lê e armazena dados na memória, o que é mais uma razão para que a memória seja rápida. A velocidade de transferência de dados entre o processador e a memória depende de diversos fatores, e um dos principais é o número de bits do seu barramento de dados (data bus). O barramento de dados é um conjunto de sinais digitais que ligam o processador à memória e aos dispositivos de entrada e saída de dados.

Os processadores de 8 bits utilizavam um barramento de dados também com 8 bits. O processador 8086, operava com 16 bits, tanto internamente como externamente, ou seja, utilizava um barramento de dados também com 16 bits. Até então, o número de bits internos era igual ao número de bits exter­nos do processador, mas isto nem sempre ocorre. Por exemplo, o processador 8088, usado nos primeiros PCs, operava internamente com 16 bits, e externamente com apenas 8. Já com os processadores modernos (a partir do Pentium), ocorre o inverso: operam internamente com 32 bits e externamente com 64. A tabela abaixo apresenta o número interno e o número externo de bits dos processadores usados nos PCs.

Processador

Número interno de bits

Número externo de bits

8086

16

16

8088

16

8

286

16

16

386SX

32

16

386DX

32

32

486

32

32

486DLC / SLC

32

32

Pentium, Pentium MMX

32

64

Pentium Pro

32

64

Cyrix 5x86 e AMD 5x86

32

32

Cyrix 6x86

32

64

AMD K5, K6, K6-2, K6-III

32

64

Pentium II, Pentium III

32

64

Celeron

32

64

Pentium 4

32

64

AMD Athlon, Duron

32

64

Como vemos, os processadores mais recentes operam com 32 bits internos e 64 bits externos, ou seja, barramento de dados com 64 bits. Uma nova configuração foi introduzida com o processador Intel Itanium, inaugurando a era dos processadores de 64 bits. São 64 bits internos e 64 bits externos.

Capacidade de endereçamento

Aqui está um fator que não está exatamente relacionado com a velocidade, e sim, com a capacidade de manipular grandes quantidades de dados. A capacidade de endereçamento nada mais é que o máximo tamanho que pode ter a memória, ou, seja, o número máximo de células de memória que um processador consegue acessar. Para acessar uma célula (ou posição) de memória, o processador precisa informar qual é o ende­reço desta célula. Cada célula armazena um byte. Processadores com barramento de dados de 16 bits podem acessar duas células de uma só vez. Aqueles com barramentos de dados com 32 e 64 bits podem acessar até 4 e 8 células, respectivamente.

O 8086 e o 8088 possuíam barramentos de dados com 20 bits, e por isto podiam acessar 1 MB de memória. Para saber a quantidade máxima de memória que um processador pode acessar, basta saber o número de bits do seu barramento de endereços e calcular 2 elevado a esta número. Portanto:

220 bytes = 1.048.576 bytes = 1 MB
224 bytes = 16.777.216 bytes = 16 MB
232 bytes = 4.294.967.296 bytes = 4 GB

Para a época do 8086 e do 8088 (em torno de 1980), a capacidade de endereçar 1 MB era considerada bem elevada. Os primeiros PCs nem mesmo chegavam a usar toda esta capacidade. Eram comuns modelos com 64 kB, 128 kB e 256 kB de memória RAM. Apenas em meados dos anos 80 começaram a ser comuns os PCs com 512 kB e 640 kB de RAM.

O processador 286, com sua capacidade de endereçar até 16 MB de memória (usava um barramento de endereços com 24 bits) foi um grande avanço em relação ao 8086 e ao 8088. Mesmo no início dos anos 90, a maioria dos PCs usava entre 1 MB e 2 MB de memória, apenas uma fração da capacidade de endereçamento do 286.

O 386, com seu barramento de endereços com 32 bits, possibilitava endere­çar até 4 GB de memória, uma quantidade espantosamente alta até para os dias atuais. Um PC com 256 MB de RAM, por exemplo, não chega a usar 10% da sua capacidade máxima de memória. Por isto, mesmo os processadores mais modernos, em sua maioria, ainda utilizam barramentos de endereços com 32 bits. A tabela abaixo apresenta o número de bits do barramento de endereços, bem como a capacidade máxima de endereça­mento de memória para os processadores usados nos PCs:

Processador

Número bits de Endereço

Capacidade de endereçamento

8086

20

1 MB

8088

20

1 MB

286

24

16 MB

386SX

24

16 MB

386DX

32

4 GB

486

32

4 GB

486DLC

32

4 GB

486SLC

24

16 MB

Pentium e similares

32

4 GB

Pentium Pro e superiores

36

64 GB

Memória cache

Os processadores experimentaram ao longo dos anos, grandes avan­ços na velocidade de processamento. Um já ultrapassado Pentium II de 300 MHz, por exemplo, é mais de 1000 vezes mais veloz que o velho 8088 usado no IBM PC XT. As memórias também experimentaram avanços significativos, porém mais modestos. No início dos anos 80, eram comuns as memórias DRAM com 250 ns de tempo de acesso. Em meados dos anos 80, este tempo de acesso chegou à casa dos 60 ns, e no final dos anos 90, aos 10 ns. Portanto essas memórias são apenas cerca de 25 vezes mais rápidas que há 20 anos atrás, enquanto os processadores são no mínimo 1000 vezes mais rápidos. O resul­tado disso é um grande desequilíbrio entre a velocidade do processador e a velocidade da memória.

Este problema é antigo, pois já ocorria com os computadores de grande porte durante os anos 60. Com os processadores, só passou a existir tal problema a partir de 1990, aproximadamente. Antes disso os processadores, sendo mais lentos, ficavam perfeitamente sintonizados com a velocidade das memórias. As memórias, mesmo sendo relativamente len­tas, ainda eram capazes de entregar dados na velocidade exigida pelos processadores. Somente quando o seu clock chegou a 25 MHz (por volta de 1990), os processadores passaram a ter seu desempenho penalizado pela baixa velocidade das memórias.

A memória RAM usada em larga escala nos PCs é cha­mada de DRAM (Dynamic RAM, ou RAM Dinâmica). Suas principais carac­terísticas são:

O preço baixo e o alto grau de miniaturização fizeram com que a DRAM fosse o tipo de memória mais indicado para os microcomputadores. A sua baixa velocidade não chegava a ser um problema, pelo menos até 1990.

Existe um outro tipo de memória RAM que apresenta uma velocidade de operação muito mais alta. É chamada de SRAM (Static RAM, ou RAM Estática). Suas principais características são:

Tecnicamente seria possível equipar um PC com memória SRAM, mas teríamos duas grandes desvantagens. Uma delas é o preço. A SRAM é cerca de 10 vezes mais cara que a DRAM de mesma capacidade. A outra desvantagem é o seu baixo grau de compactação. Seriam necessárias placas de circuito enormes para dotar um PC com uma razoável quantidade de memória.

A solução utilizada pela indústria de PCs foi a mesma usada nos computadores de grande porte nos anos 60. Esta solução é a memória cache. É for­mada por uma pequena quantidade de SRAM, usada para acelerar uma grande quantidade de DRAM. Quando o processador precisa ler da­dos da DRAM, estes são antes transferidos para a cache (isto não é feito pelo processador, e sim, por um circuito especial chamado controlador de cache, que faz parte do chipset). O processador obtém os dados diretamente da cache, e enquanto esses dados estão sendo lidos, o controlador de cache se antecipa e acessa mais dados da DRAM, transferindo-os para a memória cache. O resultado é que na maior parte do tempo, o processador encontra dentro da cache os dados que procura. Este processo funciona bem porque, mesmo com grandes quantidades de memória, um processador passa bastante tempo utilizando trechos pequenos de memória. Por exemplo, ao executar um programa com o tamanho de 200 kB, todo ele cabe dentro de uma cache com apenas 256 kB. Ao executá-lo, os dados estariam, praticamente o tempo todo, sendo obtidos da rápida memória cache.

O primeiro processador a utilizar memória cache foi o 486. Em seu interior existem 8 kB de memória estática super veloz, operando como ca­che. Este tipo de cache, localizada dentro do processador, é chamada de:

Apesar de ter apenas 8 kB, a cache interna do 486 podia acelerar conside­ravelmente o desempenho do acesso à memória.

Os processadores 386 não tinham cache interna, e nem precisavam dela, enquanto operavam com até 20 MHz. Com o lançamento de versões de 25, 33 e 40 MHz, o baixo desempenho da memória DRAM obrigou os fabricantes a acrescentarem memória cache. Esta cache não era locali­zada dentro do processador, como ocorria com o 486. Era formada por chips de memória SRAM, e era chamada de:

OBS: Note que só é correto usar o termo cache secundária ou cache L2 quando existe cache primária (ou L1), como no caso do 486.

Foram lançadas placas de CPU baseadas no 386, equipadas com 8 kB, depois com 16, 32, 64 e finalmente 128 kB de memória cache externa (isto ocorreu entre 1990 e 1993). Um computador baseado no 386DX-40, com 128 kB de cache externa, era mais veloz que um 486 de 25 MHz sem ca­che externa.

Hoje em dia, tanto a cache primária como a secundária são importantes para o desempe­nho. A tabela que se segue apresenta a quantidade de memória cache interna existente nos processadores usados nos PCs.

Processador

Cache L1

386 e anteriores

Sem cache L1

486DX / DX2 / SX / SX2

8 kB

486 DX4 *

16 kB

486DLC, 486SLC

1 kB

Pentium

16 kB

Pentium Pro

16 kB

Pentium MMX

32 kB

Cyrix 5x86 e AMD 5x86

16 kB

Cyrix 6x86

16 kB

AMD-K5

24 kB

AMD K6, K6-2, K6-III

64 kB

Cyrix 6x86MX, MII

64 kB

Cyrix III

128 kB

Pentium II, Celeron

32 kB

Pentium III

32 kB

Athlon, Duron

128 kB

Pentium 4

8 kB + 12.000 micro-ops

Os primeiros processadores a utilizarem cache (486) tinham uma única área para dados e instruções. Novas versões do 486 e todos os processadores seguintes passaram a utilizar uma cache L1 dividida em duas áreas iguais, sendo uma para dados e uma para instruções (data cache e instruction cache). Isto tornou a cache L1 mais eficiente. Notáveis são as caches L1 dos processadores Cyrix e AMD, normalmente maiores que as de processadores Intel de mesmo poder de processamento. Por exemplo, o AMD Athlon tem 128 kB de cache L1, enquanto o Pentium III tem apenas 32 kB. Também notável é o caso da cache L1 do processador Pentium 4. Esta cache não armazena dados e instruções vindos da memória, e sim, micro-instruções já decodificadas. Isso significa que as instruções existentes na cache L1 podem ser executadas mais rapidamente.

Evolução da cache

Os primeiros processadores usados nos PCs não necessitavam de memória cache. A memória DRAM disponível na época era suficientemente veloz para aqueles processadores. O IBM PC XT, por exemplo, usava memórias com 250 ns de tempo de acesso, mas o seu processador operava com ciclos de 800 ns para realizar os acessos, portanto 250 ns era um tempo de acesso mais que satisfatório. Apenas computadores de grande porte, aqueles que custavam alguns milhões de dólares, utilizavam memória cache.

Em 1989 surgiu o processador Intel 80486, o primeiro a utilizar cache. Com clock de 25 MHz e ciclos de 80 ns, necessitava de memórias com menor tempo de acesso, porém na época as mais rápidas eram de 100 ns, tempo muito grande para aquele processador. Os 8 kB de cache, localizadas dentro do próprio processador (cache interna) permitiam o funcionamento do processador com bom desempenho, mesmo com a memória DRAM mais lenta que o necessário.

Figura 4.4
Cache interna do 486.

 

 

 

Processadores 386 produzidos pela AMD na época (1991-1993) eram concorrentes do 486, até então produzidos apenas pela Intel. Assim como ocorria no 486, os processadores 386 daquela época também necessitavam de cache para melhorar o seu desempenho. Como o 386 não tinha cache interna, foram produzidas placas de CPU 386 com cache externa, ou seja, formada por chips SRAM (RAM estática) localizados na placa de CPU. Um processador 386 de 40 MHz e 128 kB de cache externa era praticamente tão veloz quanto um 486 de 25 MHz e 8 kB de cache interna, mas a opção do 386 era muito mais barata.

Figura 4.5
Cache externa de placas de CPU para 386.

 

 

 

A cache externa realmente acelerava bastante o desempenho, e assim foram criadas placas de CPU para processadores 486, também com cache externa. Eram comuns placas para 486 com 256 kB de cache externa, além dos 8 kB de cache interna existentes no processador.

Figura 4.6
Cache interna e externa.

 

 

 

Este esquema de dupla cache (interna e externa) utilizada em processadores 486 foi mantido em processadores mais modernos, como o 586, o Pentium e todos os demais processadores para Soquete 7, com exceção do AMD K6-III, que operava com 3 caches.

Os termos “cache interna” e “cache externa” caíram em desuso. Atualmente ambas as caches ficam localizadas dentro do próprio processador, portanto não faz mais sentido classificá-las como interna e externa. A cache interna é agora chamada de cache primária ou cache L1 (level 1 ou nível 1). A cache externa é agora chamada de cache secundária ou cache L2 (level 2 ou nível 2).

Na época em que o Pentium e o Pentium MMX eram utilizados em computadores de uso pessoal, a Intel produzia o Pentium Pro, utilizado em aplicações de nível profissional e em servidores (1995-1997). Este foi o primeiro processador a embutir a cache L2. Em outras palavras, dentro do processador Pentium Pro encontrávamos a cache L1 e 256 kB de cache L2.

Figura 4.7
Cache L2 do Pentium Pro.

 

 

 

O Pentium Pro era construído em uma pastilha de silício (die) com dupla cavidade, ou seja, como se fossem dois chips montados em um mesmo substrato. Um deles é o núcleo do processador, o outro é a cache L2. Este método permitiu a construção de uma cache L2 bastante veloz, entretanto tinha um elevado custo de produção. O núcleo do Pentium Pro utiliza a arquitetura Intel P6, usada nos processadores seguintes (Pentium II, Celeron e Pentium III). A cache L2 entretanto nunca mais foi produzida com o sistema de dupla cavidade.

O Pentium II foi lançado em 1997, utilizando um núcleo similar ao do Pentium Pro, ou seja, ele também usa a microarquitetura P6. A principal diferença está na sua cache L2. Ao invés de utilizar uma única pastilha de silício contendo o processador e a cache L2, o Pentium II é montado em uma placa de circuito, juntamente com chips de memória que formam a cache L2. O conjunto inteiro é montado em um cartucho metálico. Do ponto de vista do núcleo do processador, esta cache L2 é externa, mas considerando o cartucho como um todo, a cache L2 é interna. Para evitar confusão, os termos interna e externa não são mais usados, e em seu lugar usamos hoje, L1 e L2.

Figura 4.8
Cache do Pentium II e das primeiras versões do Pentium III e do Athlon.

 

 

 

Este sistema de cache L2 foi também utilizado nas primeiras versões do Pentium III e do AMD Athlon.

Cache L2 integrada no núcleo

Integrar a cache L2 no núcleo significa produzir um processador contendo na mesma base de silício, com uma única cavidade, o núcleo e a cache L2. Integrar a cache no núcleo foi possível com a adoção de tecnologia de 0,18 mícron, no lugar da antiga tecnologia de 0,25 mícron, possibilitando a construção de transistores menores, e em conseqüência, chips menores e com menor aquecimento. Além do menor custo, a cache L2 integrada ao núcleo do processador resulta em maior desempenho, já que os acessos à cache podem ser feitos com maior velocidade.

O primeiro processador a integrar a cache L2 no seu núcleo foi o Celeron. Posteriormente a mesma técnica passou a ser usada pelo Pentium III. A Intel utiliza vários nomes para diferenciar seus modelos de processador. O Pentium III versão Katmai era o original, que tinha a cache L2 formada por chips SRAM adicionais. A versão chamada Coppermine é a que integra a cache L2 no núcleo. Apesar de ter apenas 256 kB, contra os 512 kB do Pentium III Katmai, a nova versão do Pentium III oferece maior desempenho, pois sua cache L2 opera com um clock duas vezes maior.

Também os processadores Athlon passaram a utilizar cache L2 integrada no núcleo. Assim como ocorre com os processadores Intel, são usados nomes adicionais para designar as versões do Athlon. A versão com cache L2 embutida no núcleo é chamada de Thunderbird, ou simplesmente T-Bird. Ao mesmo tempo em que foi lançado o Athlon T-Bird, com 256 kB de cache L2 integrada no núcleo, foi também lançado o Duron, utilizando a mesma tecnologia. A diferença é a cache L2, que no Duron tem apenas 64 kB. Entretanto, sua cache L1 de 128 kB (encontrada tanto no Athlon quanto no Duron) oferece um bom desempenho, mesmo com uma cache L2 de apenas 64 kB.

Velocidades das caches

Um dos principais melhoramentos introduzidos nos processadores modernos foi o aumento de velocidade da cache L2. Quando um processador se torna mais rápido, a memória DRAM não necessariamente precisa acompanhar este aumento de velocidade (e na prática não acompanha), mas a cache L2 precisa acompanhar. Se o processador se tornar mais veloz mas a cache L2 mantiver velocidade constante, o desempenho será prejudicado.

Figura 4.9
Relação entre o processador e as caches.

 

 

 

A figura 9 mostra a relação entre o processador, as caches e a memória DRAM. Para que o sistema tenha um bom desempenho, deve ocorrer o seguinte:

a) O processador encontra na maior parte das vezes, os dados e instruções que precisa na própria cache L1.

b) Os dados a serem transferidos para a cache L1 estão na maior parte das vezes, localizados na cache L2

Desta forma, a cache L2 acelera o desempenho da DRAM. Ao mesmo tempo, a cache L1 acelera o desempenho da cache L2. Note que na figura estão indicadas as freqüências F1, F2 e F3.

F1: Velocidade na qual os dados trafegam entre a cache L1 e o núcleo
F2: Velocidade na qual os dados são transferidos entre as caches L1 e L2
F3: Velocidade de transferência entre a DRAM e a cache L2

Veja como ficam essas velocidades em alguns processadores produzidos em um passado recente:

Processador

F1

F2

F3

Pentium-200

200 MHz

66 MHz

66 MHz

AMD K6-2/300

300 MHz

100 MHz

100 MHz

AMD K6-2/500

500 MHz

100 MHz

100 MHz

Pentium II/400

400 MHz

200 MHz

100 MHz

Em todos os casos, o clock usado na transferência de dados entre a cache L1 e o núcleo do processador é o próprio clock do núcleo. Por exemplo, em um núcleo de 500 MHz, esta transferência é feita a 500 MHz.

Observe o que ocorre com os valores de F2, que representa a velocidade da cache L2. Nos processadores Pentium, K6-2 e similares, a cache L2 opera com freqüência fixa, igual à freqüência do barramento externo. Um K6-2/500 tem condições de processar dados mais rapidamente que um K6-2/300, entretanto ambos possuem caches L2 com velocidades semelhantes. Aumentar mais ainda o clock do processador e manter fixa a velocidade da cache L2 é a mesma coisa que usar em um carro de Fórmula 1, pneus de Fusca.

Finalmente observe o valor de F2 para o Pentium II. Este processador possui uma cache L2 capaz de transferir dados em uma velocidade maior que a do seu barramento externo. É usado um barramento dual, um de 100 MHz para acessar a DRAM e um de 200 MHz para acessar a cache L2. No caso geral, a cache L2 do Pentium II e das primeiras versões do Pentium III (Katmai) opera com a metade da freqüência do núcleo do processador. Um Pentium III/600, por exemplo, tem cache L2 operando a 300 MHz.

O aumento do valor de F2 foi uma das prioridades nos processadores lançados recentemente. Veja o que ocorre com os modelos mais novos:

Processador

F1

F2

F3

Pentium IIIE

F

F

100 MHz

Pentium IIIB

F

F/2

133 MHz

Pentium IIIEB

F

F

133 MHz

Athlon original

F

F/2, F/2.5, F/3

200 MHz

Athlon T-bird

F

F

200/266 MHz

Duron

F

F

200 MHz

Pentium 4

F

F

400 MHz

Na tabela usamos F para indicar a freqüência do núcleo do processador. Por exemplo, em um Pentium III/1000, F vale 1000 MHz. Observe que nos processadores mais modernos, F2 (freqüência da cache L2) é igual à freqüência do núcleo do processador. Núcleo a 1000 MHz significa cache L2 a 1000 MHz. Isto resulta em um grande aumento de desempenho, em comparação com versões mais antigas. Nas primeiras versões do Pentium III, bem como no Pentium IIIB (clock externo de 133 MHz), a cache L2 operava com a metade da freqüência do núcleo. Isto também ocorria com as primeiras versões do Athlon, onde a cache L2 operava com a metade, e até com 1/3 da freqüência do núcleo. Nas versões mais novas do Pentium III (Coppermine) e nas versões T-Bird do Athlon e Duron, a cache L2 também opera com a freqüência do núcleo. Esta é uma característica que será mantida em todos os processadores modernos: cache L2 em full speed., integrada no núcleo do processador (on-die). 

Finalmente observe na tabela que melhoramentos têm sido feitos na freqüência da DRAM. Novas tecnologias como DDR e RDRAM estão aos poucos sendo implantadas para tornar mais elevada a taxa de transferência dos dados que chegam da DRAM.

Cache L3

Durante aproximadamente um ano (meados de 1999 a meados de 2000), a AMD produziu o processador K6-III. Foi lançado apenas nas versões de 400 e 450 MHz, mas foi logo retirado de linha, devido ao seu custo de produção relativamente alto, o que dificultava a concorrência com os processadores Intel. O K6-III tinha uma cache L2 de 256 kB full speed integrada no seu núcleo. Processador a 450 MHz, cache L2 a 450 MHz. Seu desempenho era muito bom, bem mais veloz que o K6-2 e igualando-se ao Pentium III de mesmo clock. A AMD achou melhor descontinuá-lo e dedicar sua linha de produção ao Athlon.

O processador K6-III tinha no seu núcleo, caches L1 e L2. Podia ser instalado em placas de CPU para K6-2, que já tinham cache externa. Sendo assim, a cache existente na placa de CPU era de nível 3 (L3). A figura 10 mostra a relação entre as três caches do K6-III.

Figura 4.10
Relação entre as caches de um K6-III/400.

Na figura 10 foi tomado como exemplo um K6-III de 400 MHz. Estando o núcleo operando a 400 MHz, as transferências feitas entre o processador, a cache L1 e a cache L2 (internas) são feitas na mesma freqüência. Para o modelo de 450 MHz, essas transferências são feitas a 450 MHz. Em ambos os modelos, as transferências entre a cache L2 e a L3 (externa), e entre a cache L3 e a DRAM são feitas a 100 MHz.

Desempenho

Todos os esforços no sentido de melhorar a tecnologia dos processadores giram em torno de um ponto chave: o desempenho, ou seja, a veloci­dade de processamento. Entre as técnicas implantadas visando obter maio­res velocidades, podemos citar:

Avanços em todas essas áreas têm possibilitado obter velocidades cada vez maiores. Para avaliar essas velocidades, é fundamental que existam métodos precisos para medir o desempenho de um processador. No tempo do PC XT, quando apenas o processador 8088 era usado, bastava indicar o seu clock, e automaticamente poderíamos ter uma idéia da sua velocidade de processamento. Por exemplo, um XT de 10 MHz era duas vezes mais veloz que um XT de 5 MHz.

OBS: O primeiro PC XT não operava com 5 MHz, e sim, com 4,77 MHz. Portanto, um XT de 10 MHz era cerca de 2,09 vezes mais veloz que o XT original.

Durante muitos anos, o desempenho dos processadores usados nos PCs foi estimado através de comparações com o IBM PC XT. Por exemplo, o 80286 de 6 MHz usado no IBM PC AT era cerca de 5,7 vezes mais rápido que o IBM PC XT. Esta comparação é realizada através de progra­mas chamados de benchmarks. A idéia é relativamente simples. Colo­cava-se um XT para executar uma grande quantidade de instruções, todas elas envolvendo apenas o processador e a memória, isto, é não eram levados em conta acessos a disco, ao vídeo e demais dispositivos. Mar­cava-se o tempo que o XT levava para executar esta miscelânea de instru­ções. Digamos que o XT tenha demorado, por exemplo, 10 segundos. Este tempo era registrado dentro do programa de benchmark. Ao usarmos este programa em um computador de teste, são executadas as mesmas instru­ções processadas pelo XT, e o tempo total de processamento sendo regis­trado. Suponha por exemplo que o tempo de execução foi de 2 segundos. Portanto, dividindo o tempo de execução do XT (10 segundos) pelo tempo de execução do computador em teste (2 segundos), encontramos como resultado o índice de velocidade. Neste exemplo, o computador em teste mostrou ser 5 vezes mais veloz que o XT.

Vários programas de benchmark foram criados ao longo dos últimos anos. Todos eles são baseados na execução de uma miscelânea de instruções, a contagem do tempo para esta execução, e a comparação com o tempo requerido por um computador tomado como referência, normalmente o IBM PC XT. Sem dúvida, um dos programas mais usados na medição do de­sempenho de processadores é no Norton Sysinfo. Outro menos co­tado, mas também muito conhecido é Checkit. Ambos fazem medidas e apresentam resultados comparativos com o IBM PC XT. A tabela que se segue apresenta os índices de velocidades de vários processadores, medidos com o Norton SI 8.0 e com o Checkit 3.0. Hoje os testes de desempenho feitos com esses dois programas são obsoletos, por isso não faz mais sentido usá-los para processadores novos. Apresentamos portanto os índices de velociodade para processadores até o Pentium-200.

Processador e clock

Norton Si 8.0

Checkit 3.0

Pentium-200

640

460

Pentium-166

525

380

Pentium-150

475

340

Pentium-133

420

300

Pentium-120

380

273

Pentium-100

317

228

Pentium-90

285

205

Pentium-75

235

170

Pentium-66

209

150

Pentium-60

190

136

486DX4-120

261

166

486DX4-100

218

139

486DX2-80

174

114

486DX4-75

163

105

486DX2-66

144

91.8

486DX2-50

108

69.5

486DX-40

87.0

57.0

486DX-33

72.0

45.9

486DX-25

54.0

34.7

386DX-40

43.2

31.6

386DX-33

35.6

26.1

386DX-25

27.0

19.8

386DX-20

21.6

15.8

386SX-40

40.6

25.1

386SX-33

33.5

20.7

386SX-25

25.4

15.7

386SX-20

20.3

12.6

386SX-16

16.2

10.0

286-25

18.4

13.9

286-20

14.7

11.1

286-16

11.8

8.9

286-12

8.8

6.7

286-10

7.4

5.6

286-8

5.9

4.4

8088 10 Mhz

2.1

2.1

8088  8 Mhz

1.7

1.7

Observando esta tabela, notamos um fato muito interessante que ocorre com os programas medidores de desempenho. Observe que os índices são iguais quando dizem respeito ao 8088. Em todos os outros processadores, o Norton SI e o Checkit encontram índices diferentes. Porque esses índices são diferentes? Qual dos dois está correto?

Os índices são diferentes porque esses dois programas usam “miscelâneas de instruções” diferentes. Nos processadores mais modernos, as mul­tiplicações e divisões são incrivelmente mais rápidas que nos antigos. En­tretanto, operações que realizam acessos à memória são penalizadas pelo fato das memórias não serem tão velozes quanto os processadores exigem. Um programa de benchmark que utiliza operações de multiplicação e divisão tende a apresentar índices muito mais altos que outro que realiza muitos acessos à memória. O resultado é que um processador pode ser muito veloz ao processar programas que fazem muitos cálculos, mas pode não ser tão veloz quanto executa programas que manipulam grandes quantidades de dados na memória.

Hoje em dia faz pouco sentido medir o desempenho usando programas que fazem comparação com o IBM PC XT. O fato de um Pentium-166 apresentar o índice 525 medido com o Norton SI não significa que ele realmente será 525 vezes mais veloz que o XT para qualquer tipo de processamento. Por exemplo, quando desabilitamos a memória cache L2 em um PC equipado com um Pentium-166, ele continua apresentando um índice de 525 medido pelo Norton SI, graças à eficiência da sua cache interna. Esta eficiência não é tão grande assim quando é preciso acessar grandes quantidades de memória. A cache L1 não consegue dar conta do serviço, e o desempenho cai considera­velmente.

Sem a cache L2, um Pentium-166 apresenta um desempe­nho similar ao de um Pentium-90, apesar do seu índice de velocidade me­dido com o Norton SI (ou com o Checkit) permanecer inalterado.  Para medir de forma mais realista o desempenho do Pentium e processadores mais avançados, é pre­ciso usar programas que são baseados na execução de uma miscelânea de instruções mais comuns nos programas mais sofisticados para o ambi­ente Windows. Exemplos de programas adequados são o Norton Sysinfo para Windows 9x, o Winbench e o Winstone.

A tabela que se segue mostra ídices de velocidade para alguns processadores na faixa de 200 a 500 MHz. Nesses testes usamos os programas Norton Sysinfo para Windows 9x e o Winbench 99, que apresenta por sua vez dois índices: CPUMark32, para processamento não numérico, e o FPUWinMark, para processamento numérico. Observe como processadores de gerações mais novas apresentam desempenho muito superior ao de processadores mais antigos porém com o mesmo clock. Por exemplo, o Pentium II/233 tem índice CPUMark32 igual a 560, enquanto o Pentium MMX/233 tem índice de apenas 440.

Processador e clock

Norton

CPUMark32

FPUWinMark

Pentium II, 450 MHz

210

1100

2290

Pentium II, 400 MHz

190

1000

2060

Pentium II, 350 MHz

170

900

1800

Pentium II, 300 MHz

150

800

1500

Pentium II, 333 MHz

150

780

1600

Pentium II, 300 MHz

140

730

1500

Pentium II, 266 MHz

130

650

1300

Pentium II, 233 MHz

110

560

1150

Pentium MMX, 233 MHz

61

440

830

Pentium MMX, 200 MHz

55

400

750

AMD K6-2, 400 MHz

140

860

1250

AMD K6-2, 350 MHz

130

800

1100

AMD K6-2, 300 MHz

120

760

950

AMD K6, 300 MHz

110

620

930

AMD K6, 266 MHz

100

580

850

AMD K6, 233 MHz

90

550

750

AMD K6, 200 MHz

80

520

640

Celeron 300 MHz

100

610

1500

Cyrix MII PR300

85

560

520

6x86MX PR266

75

540

460

6x86MX PR233

64

470

420

6x86MX PR200

60

430

390

6x86 PR200

52

420

380

Processadores mais com clocks mais elevados apresentam índices de desempenho ainda maiores. A tabela que se segue mostra os índices CPUMark32, medidos com o programa Winbench 99 versão 1.2, para alguns processadores acima de 500 MHz. Note que os índices do Winbench 99 versão 1.2 não têm relação com os índices do Winbench 99 versão 1.0, usados na tabela anterior.

Processador e clock

CPUMark32 (ver 1.2)

Athlon 1 GHz

90

Athlon 800 MHz

72

Athlon 600 MHz

55

Pentium III 1 GHz

85

Pentium III 800 MHz

70

Pentium III 600 MHz

45

Duron 800 MHz

65

Unidade de ponto flutuante

Os velhos processadores 8086 e 8088 podiam operar em conjunto com um chip auxiliar chamado 8087. Este chip era chamado de processador (ou coprocessador) matemático. Era uma espécia de processador secundário, especializado em realizar cálculos com números reais em alta veloci­dade. Enquanto o 8086 e o 8088 faziam apenas adição, subtração, multipli­cação e divisão de números inteiros de 32 bits, o 8087 podia realizar essas mesmas operações, e ainda uma grande quantidade de funções algébricas (raiz quadrada, logaritmo, exponencial, etc), trigonométricas (seno, tan­gente, arco tangente, etc) e hiperbólicas (seno hiperbólico, cosseno hiper­bólico, etc), com números reais de 80 bits de mantissa (lembrando que um número real pode ser representado por uma base, ou mantissa, e um expoente). Programas que utilizam grandes quantidades de cálculos deste tipo ficavam incrivelmente mais velozes quando usavam o 8087. Normalmente, os softwares eram fornecidos simultaneamente em duas versões, uma para operar através do 8086/8088, e outra para usar o 8087. Quando o PC não tinha o 8087 insta­lado, mesmo assim podia realizar esses cálculos, mas estes eram feitos por etapas, o que era muito mais demorado. Os programas que se benefi­ciam de um coprocessador matemático são os seguintes:

Ao lançar os seus novos processadores, a Intel sempre lançava tam­bém um coprocessador matemático compatível:

Processador

Coprocessador matemático

8086 / 8088

8087

80286

80287

80386SX

80387SX

80386DX

80387DX

Ao lançar o 486, a Intel finalmente colocou o coprocessador matemático dentro de próprio processador. O chamado 486DX possui um copro­cessador matemático interno, enquanto o 486SX não o possui. Outros processadores mais avançados como o Pentium e o Pentium Pro tam­bém possuem o coprocessador matemático interno. O mesmo ocorre com todos os processadores produzidos depois do 486, ou seja, todos possuem um coprocessador matemático embutido. Esta parte do processador é chamada atualmente de unidade de ponto flutuante (FPU, ou Float Point Unit).

Antigamente apenas engenheiros, arquitetos e cientistas precisavam de um coprocessador matemático. No tempo em que reinava o processador 486, a sua unidade de ponto flutuante ficava praticamente ociosa, pois os softwares da época quase não a utilizavam. Hoje em dia, além das aplicações sérias já citadas, existe uma categoria de programas que faz uso intensivo da unidade de ponto flutuante: os jogos tridimensionais. A geração de imagens tridimensionais demanda uma grande quantidade de cálculos, portanto a unidade de ponto flutuante passou a ser um ítem essencial, mesmo para os usuários domésticos.