84
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA ESTRUTURA E FUNCIONAMENTO DA CPU ÍNDICE: 1. Organização do Processador...................................................... ..................... 2 2. Organização de Registradores.................................................... ..................... 3 3. Ciclo de Instrução........................................................ .................................... 10 4. Pipeline de Instruções....................................................... .............................. 14 5. Características e Recursos......................................................... .................... 20 1 de 84

4-Estrutura e Funcionamento Da Cpu

Embed Size (px)

Citation preview

Page 1: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

ESTRUTURA E FUNCIONAMENTO DA CPU

ÍNDICE:

1. Organização do Processador........................................................................... 2

2. Organização de Registradores......................................................................... 3

3. Ciclo de Instrução............................................................................................ 10

4. Pipeline de Instruções..................................................................................... 14

5. Características e Recursos............................................................................. 20

6. Evolução da Família de Processadores x86 e Seus Compatíveis...............

23

7. O Processador Pentium II............................................................................... 41

8. O Processador PowerPC................................................................................. 52

9. Bibliografia....................................................................................................... 60

10. Lista de Exercícios......................................................................................... 61

1 de 62

Page 2: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

1. ORGANIZAÇÃO DO PROCESSADOR

Para entender a organização da CPU, devemos considerar as ações que ela deve

executar:

Busca de instrução: a CPU lê uma instrução da memória.

Interpretação de instrução: a instrução é decodificada para determinar a ação

requerida.

Busca de dados: a execução de uma instrução pode requerer efetuar uma

operação aritmética ou lógica sobre os dados.

Escrita de dados: os resultados da execução podem requerer escrever dados

na memória ou em um módulo de E/S.

Para executar essas ações, a CPU precisa armazenar alguns dados

temporariamente. Ela deve manter a posição de memória da última instrução, para saber

onde obter a próxima instrução, e precisa também armazenar instruções e dados

temporariamente, enquanto uma instrução está sendo executada. Em outras palavras, a

CPU necessita de uma pequena memória interna.

A Figura 1 é uma visão simplificada de uma CPU, que indica também sua conexão

com o resto do sistema, por meio do barramento de sistema. Uma interface semelhante

é necessária para qualquer das estruturas de interconexão descritas na aula de

Barramentos. Os componentes mais importantes da CPU são a unidade lógica e

aritmética ou ULA e a unidade de controle ou UC. A ULA efetua o processamento de

dados. A UC controla não só a transferência de dados e instruções para dentro e para

fora da CPU, como também a operação da ULA. A figura mostra, além desses

componentes, uma memória interna mínima, constituída de um conjunto de posições de

armazenamento denominadas registradores.

Figura 1: A CPU com o barramento do sistema

2 de 62

Page 3: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

A Figura 2 é uma visão um pouco mais detalhada da CPU. São indicados os

caminhos de transferência de dados e de sinais de controle, o que inclui um elemento

denominado barramento interno da CPU. Esse elemento é necessário pra transferir

dados entre os vários registradores e a ULA, uma vez que esta última apenas opera

sobre dados localizados na memória interna da CPU. A figura mostra ainda os

elementos básicos típicos de uma ULA. Note a semelhança entre a estrutura interna do

computador como um todo e a estrutura interna da CPU. Em ambos os casos, existe

uma pequena coleção de elementos importantes, conectados por caminhos de dados.

Figura 2: Estrutura interna da CPU

2. ORGANIZAÇÃO DE REGISTRADORES

Um sistema de computação emprega uma hierarquia de memória. Nos níveis mais

altos da hierarquia, a memória é mais rápida, menor e mais cara (custo por bit). Dentro

da CPU, existe um conjunto de registradores que funciona como um nível da hierarquia

de memória acima da memória principal e da memória cache. Os registradores da CPU

têm duas funções:

Registradores visíveis para o usuário: possibilitam ao programador de

linguagem de montagem ou de máquina minimizar referências à memória, pela

otimização do uso de registradores.

3 de 62

Page 4: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Registradores de controle e de estado: são usados pela unidade de controle

para controlar a operação da CPU e por programas privilegiados do sistema

operacional para controlar a execução de programas.

Não existe uma separação clara entre os registradores dessas duas categorias. Por

exemplo, em algumas máquinas, o contador de programa é visível para o usuário (no

VAX), mas em muitas outras não é.

Registradores Visíveis para o Usuário

Um registrador visível para o usuário é aquele que pode ser referenciado pela

linguagem de máquina que a CPU executa. Esses registradores podem ser classificados

nas seguintes categorias:

Registradores de propósito geral

Registradores de dados

Registradores de endereço

Registradores de códigos de operação

Registradores de propósito geral podem ser usados pelo programador para uma

variedade de funções. Algumas vezes, seu uso no conjunto de instruções é ortogonal ao

código de operação, ou seja, qualquer registrador de propósito geral pode conter um

operando para qualquer código de operação. Esse é o real significado de propósito

geral. Entretanto, existem freqüentemente algumas restrições. Por exemplo, podem

existir registradores dedicados para operações sobre números de ponto flutuante e para

operações sobre a pilha.

Em alguns casos, os registradores de propósito geral podem ser usados para

endereçamento. Em outros, existe uma separação clara ou parcial entre registradores de

dados e registradores de endereços. Registradores de dados podem ser usados

apenas para conter dados e não podem ser empregados no cálculo de endereços de

operandos. Registradores de endereço podem também ser empregados até certo

ponto como registradores de propósito geral ou podem ser dedicados para um

determinado modo de endereçamento. Alguns exemplos são:

Registradores de segmento: em uma máquina com endereçamento

segmentado, um registrador de segmento é usado para conter o endereço

da base de um segmento. Podem existir múltiplos registradores de

segmento: por exemplo, um para o sistema operacional e um para o

processo corrente.

Registradores de índices: são usados para endereçamento indexado,

possivelmente com auto-indexação.

4 de 62

Page 5: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Apontador de topo de pilha: se houver endereçamento de operandos na

pilha visível para o usuário, então tipicamente a pilha será alocada na

memória e existirá um registrador dedicado que aponta para o topo da pilha.

Isso possibilita um endereçamento implícito, ou seja, as instruções de

empilhar e desempilhar não requerem um operando explícito.

O projeto do conjunto de registradores envolve diversas questões. Uma questão

importante é decidir se os registradores serão de propósito geral ou se terão uso

específico. Com o uso de registradores especializados, o tipo de registrador referenciado

como operando de uma instrução geralmente é implícito, sendo determinado pelo código

de operação. O campo de operando apenas identifica um registrador de um conjunto de

registradores especializados, economizando, portanto, alguns bits de instrução. Por

outro lado, essa especialização limita a flexibilidade de programação. Embora não exista

melhor solução, para essa questão de projeto, a tendência atual é usar registradores

especializados.

Outra questão de projeto é o número de registradores a serem disponibilizados, seja

de propósito geral seja para registradores de dados e de endereços. Isso também afeta

o projeto do conjunto de instruções, uma vez que um número maior de registradores

requer maior número de bits para especificar um operando. O número adequado parece

ser entre 8 e 32 registradores. Um pequeno número de registradores resulta em mais

referências à memória, mas o uso de um número muito grande de registradores, não

reduz substancialmente o número de referências à memória. Uma abordagem diferente

é adotada na arquitetura RISC que obtém vantagem com a utilização de centenas de

registradores.

Finalmente, existe a questão do tamanho do registrador. Registradores de endereço

devem ter tamanho suficiente para conter o maior endereço usado no sistema.

Registradores de dados devem ser capazes de conter valores da maioria dos tipos de

dados. Algumas máquinas permitem o uso de dois registradores contíguos para conter

valores de tamanho duplo.

Uma última categoria de registradores que são visíveis para o usuário, pelo menos

parcialmente, contém códigos de condição (também conhecidos como flags). Códigos

de condição são bits atualizados pelo hardware da CPU como resultados de operações.

Por exemplo, em uma operação aritmética, esses bits podem indicar se o resultado

produzido é positivo, negativo, zero ou overflow. Além de o próprio resultado da

operação ser armazenado em um registrador ou na memória, são também atualizados

os registradores que contêm códigos de condição. Esses códigos podem ser testados

em seguida, por uma operação de desvio condicional.

5 de 62

Page 6: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Normalmente, os bits de código de condição fazem parte de um registrador de

controle, embora algumas vezes possam ser organizados em mais de um registrador. As

instruções de máquina geralmente possibilitam ler esses bits, por meio de uma

referencia implícita, mas não permitem que eles sejam alterados pelo programador.

Registradores de Controle e de Estado

Vários registradores da CPU são empregados para controlar a operação da CPU.

Na maioria das máquinas, eles não são visíveis para o usuário. Alguns deles podem ser

visíveis para instruções de máquinas executadas em um modo de controle ou de

sistema operacional.

É claro que máquinas diferentes têm organizações de registradores diferentes e

usam uma terminologia distinta. Quatro registradores são essenciais para a execução de

instruções:

Contador de programa (PC): contém o endereço da instrução a ser

buscada.

Registrador de instrução (IR): contém a última instrução buscada.

Registrador de endereçamento à memória (MAR): contém o endereço de

uma posição de memória.

Registrador de armazenamento temporário de dados (MBR): contém

uma palavra de dados a ser escrita na memória ou a palavra lida mais

recentemente.

Tipicamente, o contador de programa é atualizado pela CPU depois de cada busca

de instrução, de modo que ele sempre indique a próxima instrução a ser executada.

Uma instrução de desvio ou de salto também modifica o conteúdo do contador de

programa. A instrução buscada é carregada no IR, onde o código de operação e as

referências a operando são analisadas. A troca de dados com a memória é feita usando

o MAR e o MBR. Em um sistema com barramento, o MAR é conectado diretamente ao

barramento de endereço e o MBR, ao barramento de dados. Registradores visíveis ao

usuário, por sua vez, trocam dados com o MBR.

Os quatro registradores relacionados são usados para transferência de dados entre

a CPU e a memória. Dentro da CPU, os dados devem ser apresentados à ULA para

processamento. A ULA pode ter acesso direto ao MBR e aos registradores visíveis para

o usuário. Alternativamente, podem existir registradores adicionais para armazenamento

temporário de dados, que servem como registradores de entrada e de saída da ULA e

trocam dados com o MBR e os registradores visíveis para o usuário.

Todo o projeto da CPU inclui um registrador, ou conjunto de registradores,

freqüentemente conhecido como palavra de estado de programa (PSW), que contém

6 de 62

Page 7: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

informação de estado. Tipicamente, o registrador PSW contém códigos de condição e

outras informações de estado, incluindo os seguintes campos:

Sinal: contém o bit de sinal do resultado da última operação aritmética.

Zero: atualizado com o valor 1 se o resultado da última operação for 0.

‘Vai-um’: atualizado com o valor 1 se uma operação resultar em um ‘vai-um’

para fora do bit de ordem superior (adição) ou em um ‘vem-um’ para o bit de

ordem superior (subtração). É usado por operações aritméticas de múltiplas

palavras.

Igual: atualizado com valor 1 se uma comparação lógica resultar em

igualdade.

Overflow: usado para indicar overflow aritmético.

Habilitar/desabilitar interrupção: usada para habilitar ou desabilitar

interrupções.

Supervisor: indica se a CPU está executando em modo supervisor ou em

modo de usuário. Certas instruções privilegiadas apenas podem ser

executadas no modo supervisor, assim como certas áreas de memória

apenas podem ser acessadas no modo supervisor.

O projeto de uma CPU pode também incluir outros registradores relacionados ao

estado e ao controle. Além do registrador PSW, deve existir um registrador que aponta

para um bloco de memória que contém informação de estado adicional (por exemplo,

blocos de controle de processo). Em máquinas que usam vetor de interrupções, pode

existir um registrador de vetor de interrupções. Se for usada uma pilha para implementar

certas funções (por exemplo, chamada de sub-rotina), será necessário um registrador

indicador de topo de pilha. EM um sistema com memória virtual, um registrador é usado

para apontador para a tabela de páginas. Finalmente, podem também ser usados

registradores para o controle de operações de E/S.

Diversos fatores devem ser considerados no projeto da organização de

registradores de controle e de estado. Uma questão-chave é o suporte para o sistema

operacional. Certos tipos de informação de controle são úteis especificamente para o

sistema operacional. Se o projetista da CPU tem entendimento funcional sobre o sistema

operacional a ser usado, a organização dos registradores pode ser feita razoavelmente

de acordo com o sistema operacional.

Outra decisão de projeto importante é a alocação de informação de controle entre

registradores e memória. É comum reservar as primeiras (de endereço mais baixo)

centenas ou milhares de palavras da memória para armazenar informações de controle.

O projetista deve decidir que parte das informações de controle deve ser mantida em

7 de 62

Page 8: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

registradores e que parte deve ficar na memória, levando-se em conta o custo e a

velocidade de acesso.

Exemplos de Organização de Registradores de Microprocessadores

Vamos abordar dois microprocessadores de 16 bits: o Motorola MC68000 e o Intel

8086. As figuras 3a e 3b representam a organização de registradores de cada um; os

registradores usados apenas internamente pela CPU, como registradores de

endereçamento à memória, não são mostrados.

Figura 3: Exemplos de organização de registradores de microprocessadores

O MC68000 divide seus registradores de 32 bits em oito registradores de dados e

nove registradores de endereço. Os oito registradores de dados são usados

principalmente para manipulação de dados, mas também como registradores índice. O

8 de 62

Page 9: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

tamanho dos registradores permite operar dados de 8, 16 ou 32 bits, conforme

determinado pelo código de operação. Os registradores de endereço contêm endereços

de 32 bits (sem segmentação); dois desses registradores são também usados como

apontadores de pilha, um para o usuário e outro para o sistema operacional,

dependendo do modo de execução corrente. Esses dois registradores são ambos

identificados pelo número 7, uma vez que apenas um pode ser usado de cada vez. O

MC68000 inclui também um contador de programa de 32 bits e um registrador de estado

de 16 bits.

Os projetistas da Motorola tinham como objetivo definir um conjunto de instruções

bastante regular, sem registradores de uso especial. A preocupação com a eficiência de

código levou-os a dividir os registradores de dois grupos funcionais, economizando um

bit na especificação de registradores e mantendo, assim, um compromisso razoável

entre a total generalidade e a compactação de código.

O Intel 8086 adota uma abordagem diferente para a organização dos registradores.

Todo registrador é de uso especial, embora alguns também possam ser de propósito

geral. O 8086 contém quatro registradores de dados de 16 bits, que podem ser

endereçados em unidades de 16 bits ou byte a byte, e quatro outros registradores de 16

bits, usados como apontadores e registradores índice. Os registradores de dados podem

ser usados como propósito geral em algumas instruções, sendo, em outras, usados

implicitamente. Por exemplo, uma instrução de multiplicação usa sempre o acumulador.

Os quatro registradores apontadores são também usados implicitamente em diversas

operações; cada um contém um deslocamento relativo ao início de um segmento.

Existem também quatro registradores de segmento de 16 bits, dos quais três são usados

de modo dedicado e implícito, pra indicar o segmento da instrução corrente (útil para

instruções de desvio), um segmento de dados e um segmento de pilha. O uso desses

registradores de modo dedicado e implícito proporciona uma codificação mais compacta,

ao custo de uma flexibilidade mais reduzida. O 8086 inclui também um contador de

programa e um conjunto de bits de estado e de controle.

Outro ponto a respeito do projeto da organização de registradores é mostrado na

figura 3c. Essa figura apresenta a organização dos registradores visíveis para o usuário

no Intel 80386, que é um microprocessador de 32 bits. Entretanto, para fornecer

compatibilidade com programas escritos para máquinas anteriores, ele retém a

organização de registradores original embutida na nova organização. Em virtude dessa

restrição, os projetistas dos processadores de 32 bits tinham flexibilidade limitada para

definir a organização de registradores.

3. CICLO DE INSTRUÇÃO

9 de 62

Page 10: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Conforme podemos ver na figura 4, o ciclo de instrução inclui os seguintes

subciclos:

Busca: lê a próxima instrução da memória para a CPU.

Execução: interpreta o código de operação e efetua a operação indicada.

Interrupção: se as interrupções estão habilitadas e ocorreu uma

interrupção, salva o estado do processo atual e processa a interrupção.

Figura 4: Ciclo de instruções com interrupção

Podemos agora detalhar um pouco mais o ciclo de instrução. Primeiramente,

devemos introduzir um subciclo adicional, conhecido como ciclo indireto.

Ciclo Indireto

10 de 62

Page 11: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

A execução de uma instrução pode envolver um ou mais operandos, cada um dos

quais requerendo um acesso à memória. Além disso, se for usado endereçamento

indireto, serão requeridos acessos à memória adicionais.

Podemos imaginar a busca de endereços indiretos como mais um subciclo de

instrução. O resultado é mostrado na figura 5. A linha principal de atividade consiste em

alternar as atividades de busca de instruções e de execução de instrução. Depois que

uma instrução é buscada, ela é examinada para determinar se algum endereçamento

indireto está envolvido. Se isso ocorrer, os operandos requisitados são buscados,

usando endereçamento indireto. Seguindo a execução, pode ocorrer processamento de

uma interrupção, antes da busca da próxima instrução.

Figura 5: Ciclo de instrução

Outra maneira de ver esse processo é apresentada na figura 6. Essa figura mostra

mais corretamente a natureza do ciclo de instrução. Quando uma instrução é buscada,

seus campos de referência a operandos devem ser identificados. Cada operando de

entrada localizado na memória é então buscado, podendo esse processo requerer

endereçamento indireto. Operandos localizados em registradores não precisam ser

buscados. Depois que a operação é executada, pode ser requerido um processo

semelhante para armazenar o resultado na memória.

11 de 62

Page 12: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 6: Diagrama de transição de estados do ciclo de instrução

Fluxo de Dados

A seqüência exata de eventos durante um ciclo de instrução depende do projeto da

CPU. É possível, entretanto, indicar o que pode acontecer em termos gerais. Suponha

que a CPU empregue um registrador de endereço de memória (MAR), um registrador de

armazenamento temporário de dados (MBR), um contador de programa (PC) e um

registrador de instrução (IR).

12 de 62

Page 13: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Durante o ciclo de busca, uma instrução é lida a partir da memória. A figura 7

mostra o fluxo de dados durante esse ciclo. O contador de programa contém o endereço

da próxima instrução a ser buscada. Esse endereço é movido para o MAR e colocado no

barramento de endereço. A unidade de controle requisita uma leitura na memória, e o

resultado é colocado no barramento de dados e copiado no MBR e então movido para o

IR. Enquanto isso, o contador de programa é incrementado de 1, para preparar a

próxima busca de instrução.

Figura 7: Fluxo de dados no ciclo de busca

Uma vez que o ciclo de busca termina, a unidade de controle examina o conteúdo

do IR para determinar se a instrução especifica algum operando com endereçamento

indireto. Se isso ocorrer, um ciclo indireto é efetuado. Como mostra a figura 8, esse ciclo

é bastante simples. Os N bits mais à direita do MBR, que contém a referência ao

endereço, são transferidos para o MAR. Então, a unidade de controle requisita uma

leitura de memória, para transferir o endereço do operando desejado para o MBR.

Figura 8: Fluxo de dados no ciclo indireto

13 de 62

Page 14: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

O ciclo de busca e o ciclo indireto são simples e previsíveis. O ciclo de execução

pode ter muitas formas, dependendo de qual das várias instruções de máquina está

contida no IR. Ele pode envolver transferência de dados entre registradores, leitura e

escrita na memória ou em dispositivos de E/S e invocação da ULA.

Assim como o ciclo de busca e o ciclo indireto, o ciclo de interrupção é simples e

previsível (Figura 9). O conteúdo corrente do PC deve ser salvo, para que a CPU possa

retomar sua atividade normal depois de processar a interrupção. Assim, o conteúdo do

PC é transferido para o MBR, para depois ser escrito na memória. A posição especial da

memória reservada para esse propósito é carregada no MAR pela unidade de controle.

Ela pode ser, por exemplo, a posição apontada pelo registrador de topo de pilha. O PC é

carregado com o endereço da rotina de interrupção. Como resultado, o próximo ciclo de

instrução começará buscando a instrução apropriada.

Figura 9: Fluxo de dados no ciclo de interrupção

4. PIPELINE DE INSTRUÇÕES

À medida que os sistemas de computação evoluem, é possível obter maior

desempenho com o uso de tecnologias mais avançadas, tais como um conjunto de

circuitos mais rápidos. Além disso, uma melhor organização da CPU pode também

melhorar o desempenho. Alguns exemplos disso foram vistos anteriormente, tais como o

uso de múltiplos registradores no lugar de um único acumulador e o uso de memória

cache. Outra abordagem comum na organização da CPU é o uso de um pipeline de

instruções.

Estratégia de Pipeline

Uma pipeline de instruções é semelhante a uma linha de montagem de uma

industria. Uma linha de montagem tira proveito do fato de que um produto passa por

14 de 62

Page 15: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

vários estágios de produção: produtos em vários estágios do processo de produção

podem ser trabalhados simultaneamente. Em uma pipeline de instruções, novas

entradas são aceitas em uma extremidade, antes que entradas aceitas previamente

apareçam como saídas na outra extremidade.

Para aplicar esse conceito para a execução de instruções, precisamos reconhecer

que, de fato, uma instrução possui vários estágios. A figura 6, por exemplo, divide o ciclo

de instrução em dez tarefas que ocorrem em seqüência. De maneira clara, existe

oportunidade para trabalhar simultaneamente várias instruções, cada uma em um

diferente estágio de execução.

Como uma abordagem mais simples, suponha que o processamento de uma

instrução é subdividido em dois estágios: busca da instrução e execução da instrução.

Existem momentos durante a execução de uma instrução em que a memória principal

não está sendo usada. Esse instante pode ser usado para buscar a próxima instrução,

em paralelo com a execução da instrução corrente. A figura 10a representa essa

abordagem. A pipeline tem dois estágios independentes. O estágio busca uma instrução

e a armazena em uma área de armazenamento temporário. Quando o segundo estágio

está livre, o primeiro passa para ele a instrução armazenada. Enquanto o segundo está

executando essa instrução, o primeiro tira proveito de ciclos de memória que não são

usados para buscar e armazenar a próxima instrução. Isso é chamado de busca

antecipada de instrução (instruction prefetch) ou superposição de busca (fetch overlap).

Figura 10: Pipeline de instruções de dois estágios

Note que esse processo acelera a execução de instruções. Se os estágios de busca

e de execução tiverem a mesma duração, o número de instruções executadas por

unidade de tempo será dobrado. Entretanto, se examinarmos bem essa pipeline (Figura

10b), veremos que essa duplicação da taxa de execução de instruções será pouco

provável, por duas razões:

15 de 62

Page 16: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

1. O tempo de execução geralmente é maior que o tempo de busca, pois a

execução de uma instrução geralmente envolve leitura e armazenamento de

operandos e execução de algumas operações. Portanto, o estágio de busca

pode ter de esperar algum tempo antes que possa esvaziar sua área de

armazenamento temporário.

2. A ocorrência de instruções de desvio condicional faz com que o endereço da

próxima instrução a ser buscada seja desconhecido. Nesse caso, o estágio de

busca teria de esperar até receber o endereço da próxima instrução do estágio

de execução. O estágio de execução poderia, então, ter de esperar enquanto a

próxima instrução é buscada.

Em razão da ocorrência de instruções de desvio, o tempo perdido pode ser reduzido

pelo uso de uma estratégia de adivinhação. Uma regra simples é a seguinte: quando

uma instrução de desvio condicional é passada do estágio de busca para o de

execução, o estágio de busca obtém na memória a instrução imediatamente seguinte à

instrução de desvio. Então, se não ocorrer o desvio, nenhum tempo será perdido. Se

ocorrer o desvio, a instrução buscada deve ser descartada, sendo buscada uma nova

instrução.

Embora esses fatores reduzam a potencial efetividade da pipeline de dois estágios,

algum ganho de desempenho é obtido. Para conseguir maior desempenho, a pipeline

deve ter maior número de estágios. Considere a seguinte decomposição do

processamento de uma instrução:

Busca de instrução (BI): lê a próxima instrução esperada e a armazena em

uma área de armazenamento temporário.

Decodificação da instrução (DI): determina o código de operação da

instrução e as referências a operandos.

Cálculo de operandos (CO): determina o endereço efetivo de cada

operando fonte. Isso pode envolver endereçamento por deslocamento,

endereçamento indireto via registrador, endereçamento indireto, assim como

outras formas de cálculo de endereço.

Busca de operandos (BO): busca cada operando localizado na memória.

Os operandos localizados em registradores não precisam ser buscados.

Execução da instrução (EI): efetua a operação indicada e armazena o

resultado, se houver, na localização do operando de destino especificado.

Escrita de operando (EO): armazena o resultado na memória.

Com essa decomposição, os vários estágios têm duração aproximadamente igual.

Para fins ilustrativos, vamos supor que a duração de cada estágio seja igual. A figura 11

16 de 62

Page 17: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

mostra que uma pipeline de seis estágios pode reduzir o tempo de execução de 9

instruções de 54 para 14 unidades de tempo.

Figura 11: Diagrama de tempo para operação da pipeline de instruções

O diagrama considera que cada instrução passa por todos os seis estágios da

pipeline. Nem sempre isso acontece. Por exemplo, uma instrução de carga não

necessita do estágio EO. Entretanto, para simplificar o hardware da pipeline, a

sincronização é feita ao supor que cada instrução requer todos os seis estágios. Além

disso, o diagrama supõe que todos os estágios possam ser executados em paralelo. Em

particular, supõe-se que não existam conflitos de acesso À memória. Por exemplo, os

estágios BI, BO e EO envolvem acesso à memória. O diagrama subentende que a

memória pode ser usada simultaneamente por esses estágios, o que não é possível na

maioria dos sistemas de memória. Entretanto, o valor desejado pode estar na memória

cache ou os estágios BO e EO podem não ser executados. Assim, esses conflitos de

acesso à memória muitas vezes não diminuem a velocidade de execução de instruções

na pipeline.

Diversos outros fatores limitam o aumento de desempenho. Se os seis estágios não

têm duração igual, existe certa espera envolvida em vários estágios da pipeline. Outra

dificuldade é que uma instrução de desvio condicional pode invalidar diversas buscas de

instrução. Um exemplo imprevisível semelhante é a ocorrência de uma interrupção. A

figura 12 mostra o efeito de um desvio condicional, que usa o mesmo programa da figura

17 de 62

Page 18: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

11. Suponha que a instrução 3 seja um desvio condicional para a instrução 15. Até que a

execução dessa instrução seja efetuada, não há como saber qual a instrução que virá a

seguir. Nesse exemplo, a pipeline simplesmente carrega a próxima instrução da

seqüência (instrução 4) e prossegue a execução. Na figura 11, o desvio não é tomado e,

portanto, obtemos total benefício do aumento de desempenho. Na figura 12, o desvio é

tomado, mas isso é determinado apenas ao final da unidade de tempo 7. Nesse ponto,

devem ser retiradas da pipeline as instruções que não são úteis. Durante a unidade de

tempo 8, a instrução 15 entra na pipeline. Nenhuma instrução é completada durante as

unidades de tempo 9 a 12; essa é a penalidade de desempenho em virtude do fato de

não termos previsto corretamente o resultado da instrução de desvio. A figura 13 mostra

a lógica necessária para que a pipeline possa tratar desvios e interrupções.

Figura 12: O efeito de um desvio condicional na operação de uma pipeline de

instruções

18 de 62

Page 19: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 13: Pipeline de instruções de seis estágios

O uso de uma pipeline de seis estágios apresenta alguns problemas que não

ocorrem na organização mais simples de dois estágios. O estágio CO pode depender do

conteúdo de um registrador que pode ser alterado por uma instrução anterior que ainda

está na pipeline. Outros conflitos de memória e de registradores podem ocorrer. O

sistema deve conter algum tipo de lógica para tratar esses conflitos.

19 de 62

Page 20: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Da discussão anterior, pode parecer que quanto maior o número de estágios da

pipeline, mais rápida é a taxa de execução. Alguns projetistas do S/360 da IBM

apontaram dois fatores que frustram esse padrão para projetos de alto desempenho:

1. Em cada estagio da pipeline, existe certo custo (overhead) envolvido na

movimentação de dados entre áreas de armazenamento temporário e na

execução de várias atividades de preparação e entrega de dados. Esse custo

pode aumentar consideravelmente o tempo total de execução de uma única

instrução. Isso é significativo quando instruções consecutivas são logicamente

dependentes, seja pelo uso intensivo de desvios, seja por dependências de

acesso à memória.

2. A lógica de controle requerida para manipular dependências entre acessos à

memória ou entre registradores, assim como para otimizar o uso da pipeline,

aumenta bastante com o número de estágios. Isso pode levar a uma situação

em que a lógica que controla a comutação entre estágios é mais complexa que

os estágios a serem controlados.

O uso da pipeline de instruções é uma técnica poderosa para aumentar o

desempenho, mas requer um projeto cuidadoso para que possa alcançar resultados

ótimos com uma complexidade razoável.

5. CARACTERÍSTICAS E RECURSOS

Apesar do processador ser o componente de maior importância do computador, já

que ele processa as informações, ele não é, necessariamente, o maior responsável pelo

seu desempenho. Na verdade, dependendo da aplicação à qual o computador se

destina, o desempenho do processador poderá ser menos importante que a quantidade

de memória principal, que o desempenho da placa de vídeo ou até mesmo que o

desempenho do disco rígido.

Nunca esqueça que o computador é um conjunto onde cada componente depende

dos demais para mostrar o seu potencial. Logo, o computador será tão rápido quanto

seu componente mais lento. O componente de baixo desempenho será um gargalo que

impedirá que o conjunto manifeste todo o seu potencial.

Com o rápido avanço da tecnologia, e com várias empresas disputando o mercado

de processadores, são desenvolvidos projetos, cada vez mais ousados, a fim de

produzir processadores com melhor desempenho. Isso criou uma série de "armadilhas"

de avaliação de desempenho já que, com projetos tão diferentes, cada processador

20 de 62

Page 21: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

acaba saindo-se bem em algumas aplicações mas mal em outras. Não é mais possível

julgar o desempenho do processador apenas pela sua freqüência de operação.

Clock

Quando vamos comprar um processador a primeira coisa que perguntamos é: qual

sua freqüência de operação? (medida em Megahertz - MHz - ou milhões de ciclos por

segundo, também chamada de clock). Acontece que nem sempre um processador com

uma velocidade de operação mais alta é mais rápido do que outro que opera com uma

freqüência um pouco mais baixa. A freqüência de operação de um processador indica

apenas quantos ciclos de processamentos são realizados por segundo, o que cada

processador é capaz de fazer em cada ciclo é outra história.

Imagine um processador 80486 de 100 MHz ao lado de um Pentium também de 100

MHz. Apesar da freqüência de operação ser a mesma, o 80486 perderia em

desempenho. O Pentium seria pelo menos 2 vezes mais rápido devido às diferenças da

arquitetura interna que existe entre estes dois processadores.

Coprocessador Aritmético

Todos os processadores da família x86 (desde o 8086 até o Pentium 4 e todos os

compatíveis) são originalmente processadores de números inteiros. Desta forma, para o

tratamento de números em ponto flutuante é necessário o uso de um coprocessador

aritmético. A sua função é de auxiliar o processador principal no cálculo de funções

complexas.

Até o 386, o coprocessador aritmético era um acessório que tinha que ser comprado

à parte e instalado num encaixe apropriado na placa mãe. Cada modelo de processador

possuía um modelo equivalente de coprocessador. O problema era que: como poucos

usuários equipavam seus computadores com coprocessadores aritméticos, a produção

destes era baixa e os preços eram altíssimos.

Com o aumento da quantidade de aplicativos que necessitavam do coprocessador

aritmético (jogos com visual sofisticado, planilhas eletrônicas, sistemas de

processamento de imagem, sistemas de desenhos auxiliado por computador – CAD,

entre tantos outros) sua incorporação ao interior do processador foi um passo natural.

Atualmente todos os processadores possuem pelo menos um coprocessador

aritmético incorporado. Mas existem diferenças significativas de desempenho que iram

determinar as diferenças de desempenho dos processadores em aplicações como jogos

e aplicativos gráficos que são as aplicações onde os processadores são mais exigidos.

21 de 62

Page 22: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 14: Encaixe para um coprocessador aritmético numa placa-mãe com

processador 80486.

Cache

Enquanto os processadores tornavam-se mais rápidos a memória principal, sua

principal ferramenta de trabalho, pouco evoluía em performance.

Durante o desenvolvimento do processador 80386, percebeu-se que a velocidade

de trabalho da memória principal não seria capaz de acompanhar a velocidade do

processador. Isto faria com que ele tivesse que ficar “esperando” os dados serem

liberados pela memória principal para poder concluir suas tarefas, ocasionando uma

enorme perda de desempenho.

Para solucionar este problema começou a ser usada a memória cache, um tipo

ultra-rápido de memória que serve para armazenar os dados usados com mais

freqüência pelo processador evitando que ele tenha que recorrer diretamente à memória

principal

São usados dois tipos de memória cache: o cache primário, ou cache L1, e o cache

secundário, ou cache L2. O cache primário (cache L1) é embutido no próprio

processador e é rápido o bastante para acompanhá-lo em velocidade. Como este tipo de

memória é extremamente caro é utilizada apenas uma pequena quantidade.

O cache secundário, por ser mais barato, é usado em uma quantidade maior.

Dependendo do processador, o cache L2 pode ser embutido no próprio processador ou

ser externo ao processador. Atualmente a maioria dos processadores trazem o cache L2

integrado, não permitindo qualquer modificação.

Encaixes

Definimos o processador como o componente de maior importância do computador,

já que é ele quem processa quase todas as informações. Agora vamos falar um pouco

sobre a placa-mãe. Ela integra todos os componentes que permitem ao processador

22 de 62

Page 23: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

comunicar-se com os demais periféricos, como discos rígidos, placas de vídeo, etc., o

acomoda e o alimenta eletricamente.

Cada processador precisa de uma placa mãe desenvolvida especialmente para ele,

pois, devido às diferenças nas suas arquiteturas os processadores possuem

“necessidades” diferentes. Cada processador possui um número diferente de contatos

elétricos, ou terminais, opera usando uma voltagem diferente e precisa de um conjunto

de circuitos de apoio desenvolvidos especialmente para ele. O próprio encaixe do

processador muda de família para família. O Pentium II, por exemplo, utiliza um encaixe

conhecido como Slot 1 que é parecido com o encaixe de um cartucho de video-game

enquanto o AMD K6 e o Pentium comum utilizam outro tipo de encaixe chamado de

Soquete 7.

Figura 15: Pentium comum, a direita o Slot 1 utilizado pelo Pentium II.

6. EVOLUÇÃO DA FAMÍLIA DE PROCESSADORES x86 E SEUS COMPATÍVEIS

Intel 8088

O 8088, lançado em 79 pela Intel, é o irmão menor do 8086 lançado um ano antes.

Internamente os dois são idênticos; a diferença é que o 8088 usava periféricos de 8 bits

enquanto o 8086 usava periféricos de 16 bits que, apesar de mais avançados, eram

muito caros. Para baratear o projeto do primeiro PC a IBM optou por usar o 8088.

Na época o 8088 era considerado um processador bastante avançado. Era

composto por 29.000 transistores (o Pentium 4 tem 41 milhões), acessava 1 megabyte

de memória e operava numa freqüência de clock de 4,77 MHz.

Curiosidade: o PC original da IBM, lançado em agosto de 1981, vinha com 64

Kbytes de memória principal, um monitor monocromático (fósforo verde – resolução

320x200) de 12 polegadas, uma unidade de disquetes de 5 1/4 de 160 KB, não dispunha

de disco rígido e usava o sistema operacional MS-DOS 1.0. Dois anos depois foi

lançado o PC XT que, apesar de continuar usando o 8088 de 4,77 MHz, vinha com 256

KB de RAM, um disco rígido de 10 MB, monitor CGA (colorido – resolução 320x200) e

usava o sistema operacional MS-DOS 2.0. Fabricantes de clones (micros compatíveis

com os da IBM) criaram projetos de micros XT mais avançados equipados com o

23 de 62

Page 24: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

processadores 8088 de 8 MHz até 10 MHz, discos rígidos maiores e até 640 KB de

memória principal.

Intel 80286

O 286 foi o sucessor do 8088. O principal avanço trazido pelo 286 são seus dois

modos de operação batizados de Modo Real e Modo Protegido. No Modo Real o 286 se

comporta exatamente como um 8086 sendo mais rápido e oferecendo total

compatibilidade com os programas já existentes. No Modo Protegido ele manifesta todo

o seu potencial incorporando funções mais avançadas como a capacidade de acessar

até 16 MB de memória principal, multitarefa, memória virtual em disco e proteção de

memória.

Porém, junto com os avanços veio um grande defeito. Para acessar os novos

recursos era preciso que o processador entrasse em Modo Protegido. O problema é que

uma vez em Modo Protegido o 286 deixa de ser compatível com os programas de Modo

Real, ou seja, deixava de ser compatível com o MS-DOS, que é um programa de Modo

Real, e não havia nenhuma instrução que o fizesse voltar ao Modo Real apenas

“Resetando” o computador.

Por isso, apesar dos avanços, os computadores baseados no 286 acabavam sendo

usados apenas para rodar aplicativos de Modo Real, que também podiam ser rodados

em um XT, aproveitando apenas a maior velocidade do 286. Sua primeira versão

funcionava com clock de 6 MHz e foram desenvolvidas versões de até 20 MHz de clock.

Intel 80386

O 386 pode ser considerado como o primeiro processador contemporâneo.

Incorporava todas as instruções do conjunto x86 usadas pelos programas atuais, ou

seja, um 386 com quantidade suficiente de memória principal e suficiente espaço em

disco rígido é capaz de rodar o Windows 95 e a maioria dos programas, até mesmo

jogos, claro que extremamente devagar.

O 386 trouxe a solução para o problema do 286 em Modo Protegido incorporando

uma instrução que permitia ao processador alternar entre o Modo Real e o Modo

Protegido a qualquer momento. Com isto os programas podiam usar o Modo Protegido e

voltar ao Modo Real sempre que fosse preciso acessar alguma rotina do MS-DOS.

Intel 80486

O 486 foi o primeiro processador a ter cache interno, o cache L1 (8 KB), que era

complementado pelo cache L2, externo, incorporado à placa mãe. Também foi o

primeiro processador da Intel a trazer coprocessador aritmético embutido. Somadas com

24 de 62

Page 25: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

mudanças na sua arquitetura interna, estas melhorias tornavam o 486 praticamente 2

vezes mais rápido do que um 386 do mesmo clock.

Foram lançadas versões do 486 com 25 MHz, 33 MHz e 40 MHz de clock. Mas

havia uma barreira; as placas-mãe não eram capazes de trabalhar com mais de 40 MHz.

Para solucionar esse problema foi criado o recurso de Multiplicação de Clock no qual o

processador trabalha internamente a uma velocidade maior do que a da placa-mãe.

Então foram lançados os processadores 486DX2 (que trabalham com dobro da

freqüência da placa-mãe) e os 486DX4 (que trabalham com triplo da freqüência da

placa-mãe). A freqüência de operação da placa-mãe é chamada de freqüência de

barramento, ou de BUS.

Freqüência do Processador

Freqüência da placa mãe

Multiplicador

486DX-2 50 MHz 25 MHz 2x

486DX-2 66 MHz 33 MHz 2x

486DX-4 100 MHz 33 MHz 3x

Como só a velocidade do processador é que muda foi possível desenvolver placas-

mãe com possibilidade de up-grade (subir de nível – melhoria) que permitiam a troca de

um 486DX-33 por um 486DX2-66 ou por um 486DX4-100 simplesmente ajustando o

valor do multiplicador da placa-mãe. Esta tendência se mantém até hoje, com o detalhe

que nas placas-mãe atuais a configuração é muito mais fácil.

Outra novidade trazida pelos processadores 486 foi a necessidade do uso de um

ventilador (Cooler – resfriador) sobre o processador para evitar que ele se aqueça

demais. O uso do cooler é obrigatório em todos os processadores 486DX-2 e

posteriores.

Intel Pentium

O Pentium trouxe várias melhorias que o tornam quase duas vezes mais rápido que

um 486 do mesmo clock. Como destaque podemos citar o aumento do tamanho do

cache L1, que passou a ser de 16 KB (o dobro do encontrado no 486) e um

coprocessador aritmético completamente redesenhado (quase 5 vezes mais rápido do o

486) tornando o Pentium ainda mais rápido em aplicativos que demandam um grande

número de cálculos.

Outro aperfeiçoamento do Pentium, e um dos principais motivos de seu maior

desempenho, foi a adoção de uma arquitetura Superescalar (relacionada com a

capacidade de processamento paralelo de instruções). Internamente, o Pentium é

composto por dois pipelines distintos sendo capaz de processar até duas instruções por

ciclo de clock, uma em cada pipeline.

25 de 62

Page 26: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Como o Pentium é na verdade um conjunto de dois “processadores” de 32 bits

trabalhando em paralelo é possível acessar a memória usando palavras binárias de 64

bits. Devido a esta característica, era necessário a utilização de módulos de memória de

72 vias em pares já que cada módulos permite o acesso aos dados usando palavras de

32 bits. Acessando os dois módulos, ao mesmo tempo, chegamos aos 64 necessários.

AMD 5x86

Este processador foi lançado pela AMD pouco depois do lançamento do Pentium.

Apesar do nome é na verdade um processador 486 que trabalha com 133 MHz de clock.

Cyrix Cx5x86

Além de desenvolver projetos de processadores 486, que eram fabricados pela

Texas Instruments, a Cyrix lançou um processador que misturava recursos do 486 e do

Pentium, oferecendo um desempenho bastante superior a um 486 padrão. Como o 5x86

da AMD, Cx5x86 é totalmente compatível com o 486 e tinha versões com 100 MHz e

com 120 MHz de clock.

AMD K5

Na época do 386 e do 486 a AMD era uma parceira da Intel. A Intel fornecia os

projetos dos processadores e a AMD os produzia e vendia com o seu nome. Um 486 da

AMD é idêntico a um 486 da Intel mudando apenas o nome do fabricante. Em troca a

AMD pagava royalties para a Intel.

Porém, a partir do Pentium a Intel desfez o acordo restando para a AMD

desenvolver seus próprios projetos de processadores. A primeira tentativa foi o AMD K5

com um projeto superior ao Pentium em alguns quesitos porém seu lançamento ocorreu

atrasado tornando a concorrência com o Pentium quase impossível.

Pentium MMX

O Pentium MMX é mais avançado e mais rápido que o Pentium antigo por dois

fatores: primeiro por possuir mais cache L1 (o Pentium possui 16 KB enquanto o MMX

possui 32 KB) e L2 de 512 Kb externa, segundo, o MMX foi o primeiro processador a

trazer as instruções MMX encontradas em todos os processadores atuais.

O conjunto de instruções MMX melhorou o desempenho do processador em

aplicações multimídia e em processamento de imagens. Nestas aplicações algumas

rotinas podem ser executadas até 400% mais rápido com o uso das instruções MMX. O

ganho de performance porém não é automático, sendo necessário que o programa seja

otimizado para utilizar as novas instruções, caso contrário não haverá nenhum ganho de

performance.

26 de 62

Page 27: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Curiosidade: É possível instalar o MMX na maioria das placas-mãe soquete 7, para

Pentium, desde que ela suporte a voltagem de 2.9 volts usada pelo MMX. O Pentium

trabalha com uma voltagem de 3,3 volts.

AMD K6

O K6 foi o primeiro processador da AMD a conseguir conquistar uma fatia

considerável do mercado. Em termos de arquitetura é semelhante ao Pentium Pro da

Intel mas equipado com 64 KB de cache L1 e utilizando o cache L2 da placa mãe. O

ponto fraco do K6 era o coprocessador aritmético que possui uma arquitetura muito mais

simples do que a utilizada pela Intel no Pentium MMX e no Pentium II, sendo bem mais

lento.

Apesar deste detalhe não atrapalhar o desempenho do K6 em aplicativos de

escritório faz com que o seu desempenho em aplicativos gráficos e em jogos com

gráficos tridimensionais fique bastante prejudicado. Nestes aplicativos o K6 chega a ser

20% mais lento do que um Pentium MMX do mesmo clock.

AMD K6-2

A exemplo da Intel, que incorporou as instruções MMX ao conjunto de instruções

x86 padrão, a AMD incorporou novas instruções ao seu processador K6-2. Estas

instruções são chamadas de 3D-Now! e tem o objetivo de agilizar o processamento de

imagens tridimensionais. Como acontece com o MMX, é necessário que o programa

faça uso das instruções 3D-Now!. Esta tecnologia continua sendo suportada pelos

processadores Athlon e Duron, sucessores do K6-2, e foi incorporada pela maioria dos

jogos disponíveis no mercado. Utilizava cache L1 de 64 Kb e cache L2 externa de 256

Kb half speed.

AMD K6-3

Apesar de ter sido lançado bem depois do K6-2, o K6-3 acabou saindo de linha bem

mais cedo. O K6-3 é um K6-2 com 256 KB de cache L2 embutido e trabalhando na

mesma freqüência do processador. O cache L2 mais rápido aumenta bastante o

desempeno do K6-3 em relação ao K6-2; mais de 20% em alguns aplicativos, porem,

devido ao cache L2, o K6-3 era muito caro; um K6-3 de 400 MHz custava bem mais do

que um K6-2 de 500 MHz.

Cyrix 6x86MX

O 6x86MX é o concorrente da Cyrix para o MMX da Intel. Apesar da arquitetura

simples, este processador traz os mesmos 64 KB de cache L1 encontrados no K6. Em

alguns aplicativos o 6x86 leva vantagem sobre um Pentium do mesmo clock o que levou

27 de 62

Page 28: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

a Cyrix a vender estes processadores não segundo o clock mas sim segundo um índice

denominado de Pr. Um 6x86MX Pr 233 por exemplo opera a apenas 200 MHz de clock.

O grande problema é que o coprocessador aritmético do 6x86 é bem mais fraco que

o coprocessador do K6 fazendo com que ele apresentasse um desempenho muito ruim

em aplicativos gráficos e, principalmente, jogos. A vantagem era que o 6x86 era bem

mais barato que um Pentium MMX ou que um AMD K6 tornando-se uma opção razoável

para aplicações de escritório.

Pentium Pro

Até aqui os processadores foram apresentados numa ordem mais ou menos

cronológica mas cabe uma exceção para o Pentium Pro. Este processador foi lançado

bem antes do Pentium MMX e do AMD K6-2 sendo, praticamente, um contemporâneo

do Pentium Clássico. Porém, a sua arquitetura serviu como base para o Pentium II, para

o Pentium III, para o Celeron e, apesar das modificações, a idéia básica continua

também no Pentium 4. Os processadores AMD a partir do K6 também usam uma

arquitetura semelhante.

O Pentium Pro foi desenvolvido para competir no mercado de máquinas de alto

desempenho, equipando workstations (estações de trabalho) e servidores, onde o seu

principal atrativo era o suporte ao Multiprocessamento permitindo a construção de

equipamentos com até 4 processadores numa mesma placa-mãe trabalhando em

paralelo.

A partir do Pentium Pro, os processadores Intel passaram a incorporar um núcleo

RISC. Até o Pentium MMX todos os processadores eram capazes de executar

diretamente instruções complexas porém esta versatilidade começou a comprometer a

performance. O Pentium Pro, ao invés de executar diretamente as instruções do

conjunto x86, é capaz de executar apenas operações básicas. Foi acrescentado um

circuito Decodificador de Instruções encarregado de converter as instruções do conjunto

x86 nas instruções simples entendidas pelo processador.

Outra inovação: o Pentium Pro foi o primeiro processador a trazer cache L2

integrado e operando na mesma freqüência do processador. Foi produzido em versões

equipadas com 256 KB, 512 KB e 1024 KB de cache L2 e operava com clock de 166

MHz ou 200 MHz, além da cache L1 de 16 Kb.

Devido a sua forma de encapsulamento (colocar em capsula – técnica de acomodar

a pastilha de silício do processador dentro de uma capsula de cerâmica que serve de

suporte) o Pentium Pro utiliza um outro tipo de encaixe, batizado de Soquete 8, bem

maior do que o Soquete 7 utilizado pelo Pentium clássico e similares, possuindo também

uma pinagem diferenciada que impede que o processador seja encaixado ao contrário.

28 de 62

Page 29: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 16: Vista da parte inferior de um processador Pentium PRO.

Pentium II

A Intel desenvolveu o Pentium II usando como base o projeto do Pentium Pro.

Suporta multiprocessamento, mas é limitado à dois processadores. Para habilitar este

recurso, basta uma placa-mãe com suporte para dois processadores, dois

processadores idênticos e um sistema operacional com suporte para

multiprocessamento como o Windows NT, o Windows 2000 ou o Linux. O Windows 98

não serve pois reconhecerá apenas o primeiro processador deixando o segundo

desativado.

A mudança mais visível no Pentium II é o seu novo formato. Ao invés do

encapsulamento de cerâmica, foi usada uma placa de circuito que traz o processador e

o cache L2 integrado. Protegendo esta placa existe uma capa plástica formando um

cartucho parecido com um cartucho de video-game. O novo encaixe foi batizado pela

Intel de Slot 1. Além do cache L1 de 32 KB, o Pentium II vem com 256 ou 512 KB de

cache L2 trabalhando com metade do clock do processador.

Figura 17: O novo encaixe e o novo formato utilizado pelo Pentium II

Pentium II Xeon

O Xeon usa, basicamente, a mesma arquitetura do Pentium II. A diferença está no

cache L2 que funciona na mesma velocidade do processador. Foi concebido para

29 de 62

Page 30: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

equipar servidores substituindo o Pentium Pro. Nestas aplicações o processamento é

muito repetitivo e o cache, mais rápido e em maior quantidade, faz uma grande

diferença. Outro recurso importante é a possibilidade de se usar até 4 processadores na

mesma placa-mãe. Foi substituído pelo Pentium III Xeon e, mais recentemente, pelo

Xeon baseado no Pentium 4.

Celeron

Depois que lançou o Pentium II, no início de 1998, a Intel abandonou a fabricação

do Pentium MMX passando a vender apenas o processador Pentium II, que era muito

caro. A estratégia não deu muito certo e o Pentium II perdeu boa parte do mercado para

o AMD K6-2 e o Cyrix 6x86 que, apesar de terem um desempenho inferior, eram muito

mais baratos.

Tentando reverter a situação a Intel lançou uma versão de baixo custo do Pentium II

batizada de Celeron, do latin Celerus que significa velocidade. O Celeron original nada

mais era do que um Pentium II desprovido do cache L2 integrado e do invólucro plástico.

Figura 18: Um Celeron de 300 MHz de clock

As primeiras versões do Celeron (todos com clock 266 MHz e alguns com clock 300

MHz) não traziam cache L2 e, por isso, apresentavam um desempenho muito fraco.

Com a retirada do cache L2, a performance do processador caiu em 40% fazendo o

Celeron perder para processadores menos avançados como o Pentium MMX, o AMD

K6-2 e o 6x86MX.

Devido ao seu baixo desempenho, o Celeron sem cache L2 não conseguiu uma boa

aceitação no mercado. Numa tentativa de reverter a péssima performance do

processador a Intel lançou novas versões do Celeron com 128 KB de cache L2 que, ao

contrário do cache L2 do Pentium II, funciona na mesma freqüência do processador.

Todos os Celerons atuais possuem cache L2.

Enquanto no Pentium II o cache L2 é formado por chips separados, soldados na

placa de circuito do processador, no Celeron o cache L2 foi integrado ao processador.

Este cache L2 fez uma enorme diferença na performance do processador. Enquanto um

Celeron antigo é 40% mais lento que um Pentium II do mesmo clock o Celeron com

30 de 62

Page 31: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

cache é 6% mais lento, chegando a empatar em algumas aplicações. Isto acontece

porque, apesar do Celeron ter menos cache L2, nele o cache L2 funciona na mesma

freqüência do processador compensando parte da diferença de tamanho.

Alguns programas, como o MS-Word 97, necessitam de uma grande quantidade de

cache L2. Neste caso, mesmo sendo mais lento, o cache do Pentium II é mais eficiente

por ser maior. Em compensação, aplicativos que manipulam imagens necessitam de um

cache L2 rápido pois os dados a serem manipulados são menos repetitivos. Neste caso,

o cache do Celeron acaba sendo tão, ou até mesmo mais, eficiente do que o cache do

Pentium II. Outro ponto a favor do Celeron é seu coprocessador aritmético que, sendo

idêntico ao do Pentium II, é muito mais rápido que o do Pentium MMX, e do AMD K6-2, o

que lhe garante um ótimo desempenho em aplicações gráficas.

A. Soquete 370 x Slot 1

Inicialmente o Celeron foi lançado no formato do Slot 1 para manter compatibilidade

com as placas-mãe já existentes e facilitar as vendas. Depois foi lançado um novo

formato de encapsulamento e um novo tipo de encaixe para o Celeron, chamado de

Soquete 370. O novo formato é muito parecido com o Soquete 7 do Pentium MMX, a

diferença é que possui alguns pinos a mais. O Celeron para Soquete 370, também

chamado de PPGA (Plastic Pin Grid Array), apesar dos encaixes serem parecidos

não é compatível com o Soquete 7.

Figura 19: Vista da parte traseira de um Pentium MMX (esquerda) e de um Celeron (direita). É fácil perceber a diferença na quantidade de pinos.

Figura 20: O Celeron para Soquete 370 utiliza a mesma pinagem do que é montado no Slot 1.

31 de 62

Page 32: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 21: O Celeron também evoluiu para utilizar o núcleo Coppermine do Pentium III.

Pentium III

O Pentium III é o processador com mais variações. Existem versões que: utilizam

barramento de 100 MHz, utilizam barramento de 133 MHz, L1 de 32 Kb e com L2 de 512

KB half-speed (metade da freqüência do processador) ou com L2 de 256 KB full-speed

(mesma freqüência do processador), utilizam o formato Slot 1, utilizam o formato FC-

PGA, utilizam o core (núcleo) Katmai, utilizam o core (núcleo) Coppermine (mais

avançado), operam a 2 volts, versões, operam a 1,6 volts, e por aí vai.

Nunca a escolha de um processador foi tão confusa. Para entender todas estas

variações vamos ver cada um dos recursos introduzidos no Pentium III e a sua evolução.

Figura 22: Pentium III formato Slot 1 (esquerda) e formato FC-PGA (direita)

A. As novas instruções SSE

Basicamente as instruções SSE diferem das instruções 3D-Now!, dos processadores

AMD, devido à forma como são executadas. A vantagem é que o Pentium III é capaz

de processar, simultaneamente, as instruções normais e as instruções SSE. Com as

instruções 3D-Now!, o programa tem que escolher, a todo momento, entre utilizar

uma das instruções padrão ou uma das instruções 3D-Now!.

32 de 62

Page 33: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

O Pentium III é capaz de usar os dois tipos de instruções, simultaneamente,

mantendo o coprocessador aritmético ocupado durante mais tempo, o que resulta em

ganho de performance.

B. Os núcleos Katmai x Coppermine

As primeiras versões do Pentium III (450 MHz, 500 MHz, 550 MHz e 600 MHz de

clock) foram construídas usando a mesma técnica de fabricação do Pentium II, ou

seja, utilizando o mesmo encaixe Slot 1, a mesma voltagem de 2.0 volts, os mesmos

512 KB de cache L2 trabalhando com a metade da freqüência do processador, o

mesmo cache L1 de 32 KB e barramento de 100 MHz. Em essência, nada mais do

que um Pentium II com instruções SSE. Isto significa que em aplicativos que não

foram otimizados para as novas instruções o desempenho era o mesmo de um

Pentium II do mesmo clock. O núcleo (core) utilizado nestes processadores era o de

nome código Katmai.

As próximas versões do Pentium III (533B e 600B) continuam utilizando o núcleo

(core) Katmai. A diferença é que estas versões utilizam barramento de 133 MHz. O

barramento de 133 MHz vale apenas para acesso à memória principal, todos os

demais componentes (placas de vídeo, disco rígido, etc.) continuam operando na

mesma freqüência original (33 MHz para barramento PCI e 66 MHz para barramento

AGP). Como apenas a memória principal trabalha mais rápido, o ganho de

performance com barramento de 133 MHz é pequeno, abaixo de 3%, e obriga o uso

de módulos de memória de 133 MHz (conhecidos como PC-133), mais caros que os

módulos de memórias de 100 MHz (conhecidos como PC-100).

As versões seguintes do Pentium III (650 MHz, 667 MHz, 700 MHz, 733 MHz, 750

MHz, 800 MHz, 850 MHz, 900 MHz, 1 GHz de clock e as 500E, 550E, 600E, 533EB,

600EB e 800EB) utilizam um núcleo (core) mais avançado, chamado de Coppermine,

que trouxe vários avanços sobre a versão Katmai.

No núcleo Coppermine os transistores são bem menores (0,18 mícron contra 0,25

microns do núcleo Katmai). Transistores menores geram menos calor, o que permite

processadores mais rápidos. Com o núcleo Katmai, o limite do Pentium III foi de 600

MHz de clock. Utilizando o núcleo Coppermine foi possível evoluir até 1 GHz de clock.

Transistores menores ocupam menos espaço, o que permite incluir mais

componentes no núcleo do processador; este foi o segundo avanço. No Pentium III

Katmai o cache L2 é composto por dois chips separados, soldados na placa de

circuito acoplada ao processador, e opera com metade da freqüência do processador.

No Pentium III Coppermine ele foi movido para dentro do processador e opera na

33 de 62

Page 34: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

mesma freqüência do processador, melhorando bastante o desempenho. O único

porém é que, no Coppermine o cache L2 possui 256 KB, metade do encontrado nas

versões anteriores do Pentium III.

C. FC-PGA

Para cortar custos a Intel lançou o Pentium III Coppermine no formato PPGA, que usa

o Soquete 370. Para o Pentium III Coppermine o novo encaixe é chamado de FC-

PGA.

Tabela 1: Resumo das variações do Pentium III

Versões

Recursos

450, 500, 550 e 600 MHz

533B e 600B

500E e 550E

650, 700, 750 e 800 MHz; 600E

667 e 733 MHz; 533EB, 600EB, 800EB e 1 GHz

Core Katmai Katmai Coppermine

Coppermine Coppermine

Encaixe Slot 1 Slot 1 FC-PGA Slot 1 e FC-PGA

Slot 1 e FC-PGA

Versões com barramento de 100 MHz

Sim Não Sim Sim Não

Versões com barramento de 133 MHz

Não Sim Não Não Sim

Cache L2 512 KBhalf-speed

512 KBhalf-speed

256 KBfull-speed

256 KBfull-speed

256 KBfull-speed

A sigla E diferencia os processadores Coppermine dos Katmai para versões do

mesmo clock (E são os Coppermine). A sigla B indica processadores para

barramento de 133 MHz; a combinação EB indica processadores Coppermine para

barramento de 133 MHz. Em geral estas siglas são utilizadas para diferenciar

processadores do mesmo clock.

AMD Athlon

Com o lançamento do Athlon, ou K7, a AMD mostrou que tem força para competir

não apenas no mercado de processadores de baixo custo, como na época do K6-2, mas

também para disputar no ramo de processadores de alto desempenho.

A principal vantagem do Athlon é o seu coprocessador aritmético bastante

aperfeiçoado. Enquanto o coprocessador aritmético do K6-2 processa apenas uma

instrução por ciclo, o coprocessador aritmético do Athlon processa até 3 instruções por

34 de 62

Page 35: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

ciclo. Comparado com o Pentium III, o Athlon leva vantagem pois o Pentium III é capaz

de processar apenas 2 instruções por ciclo. Isso explica o bom desempenho do Athlon

em alguns aplicativos. Mas como o Pentium III tem as instruções SSE, que são mais

poderosas que as instruções 3D-Now!, isto faz com que, em alguns aplicativos

otimizados, o Pentium III supere o Athlon.

Na média, os dois processadores ficam no mesmo nível. Cada um leva vantagem

em algumas áreas. As maiores vantagens do Athlon são: ser mais barato que um

Pentium III de mesmo clock e estar disponível em clocks maiores.

Cache L1 de 128 Kb e L2 de 512 Kb half speed ou 256 Kb full speed.

A. Versões

A primeira versão do Athlon vinham com 512 KB de cache L2, operando com 1/2, 2/5

ou 1/3 da freqüência do processador dependendo da versão. Foram produzidas

apenas no formato slot A (cartucho) que, apesar de ser parecido com o Slot 1, é

incompatível.

Figura 23: AMD Athlon slot A (esquerda) e Athlon Thunderbird (direita).

Na versão seguinte, chamada de Athlon Thunderbird, a AMD incorporou o cache L2

ao processado. Com 256 KB de cache L2 integrado e operando com mesma

freqüência do processador o Athlon Thunderbird teve um grande ganho de

performance em relação ao anterior. Utiliza um novo encaixe, chamado Soquete A,

de formato parecido com o Soquete 370 usado pelos processadores Intel.

Recomendação: ao comprar uma placa-mãe para o Athlon compre uma modelo

Soquete A que oferece a possibilidade de atualizar o processador. As placas-mãe

Slot A já estão obsoletas.

Para diferenciar o Athlon Thunderbird do modelo Athlon antigo basta checar seu formato.

35 de 62

Page 36: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 24: AMD Athlon Thunderbird Soquete A (também identificado com Soquete 462)

AMD Duron

O Duron tem o mesmo núcleo do Athlon Thunderbird porem com menos cache L2.

Enquanto o Athlon Thunderbird tem 256 KB de cache L2 full speed (mesma freqüência

do processador) o Duron tem com 64 KB de cache L2 full speed. Apesar do tamanho de

cache L2, o Duron tem um cache L1 de 128 KB totalizando 192 KB de cache.

Uma vantagem do Duron, em relação ao Celeron, é que no Duron o cache L2 é

exclusivo. Significa que os dados depositados no cache L1 e no cache L2 serão

diferentes. Então temos 192 KB de dados depositados em ambos os caches. No

Celeron, o cache é inclusivo. Significa que os 32 KB do cache L1 sempre serão cópias

de dados armazenados no cache L2 (128KB). Então temos 128 KB de dados

armazenados em ambos os caches.

O Duron também utiliza o encaixe Soquete A, que não é compatível com placas FC-

PGA.

Pentium 4

O primeiro alerta a se fazer sobre o Pentium 4 é que o aumento da freqüência de

operação não significa um ganho direto de performance. Um Pentium 4 de 1,5 GHz não

é 50% mais rápido que um Pentium III de 1 GHz. Um dado é o número de ciclos por

segundo (freqüência) que o processador pode operar outro é o que ele consegue

processar em cada ciclo.

Para entender os pontos fortes e fracos do Pentium 4 temos que analisar a sua

arquitetura interna. A Intel batizou a nova arquitetura do Pentium 4 de NetBurst. O nome

não tem nada a ver com o seu desempenho em redes, ou na Internet, mas tenta ilustrar

os seus novos recursos. A arquitetura NetBurst é composta por 4 componentes: Hyper

36 de 62

Page 37: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Pipelined Technology, Rapid Execution Engine, Execution Trace Cache e Bus de

400MHz.

A. Hyper Pipelined Technology

Esta é a característica mais marcante do Pentium 4. Pipeline é um recurso que divide

o processador em vários estágios, que trabalham simultaneamente, dividido o

trabalho de processar as instruções. A partir do 486 todos os processadores utilizam

pipeline. O Pentium III possui pipeline de 10 estágios, o Athlon possui pipeline de 11

estágios e o Pentium 4 possui pipeline de 20 estágios daí o nome Hyper Pipelined.

O uso de pipeline permite que o processador possa processar várias instruções ao

mesmo tempo, sendo que cada estágio cuida de uma fração do processamento.

Quanto mais estágios, menor será o processamento executado em cada um. No caso

do Pentium 4 cada estágio do pipeline processa apenas metade do processado por

um estágio do Pentium III, fazendo com que, teoricamente, o resultado final seja o

mesmo já que existe o dobro de estágios.

O uso de mais estágios permite que o processador opere com freqüências bem mais

altas, já que cada estágio executa menos processamento. O problema é que os

processadores atuais executam várias instruções simultaneamente, enquanto os

programas aplicativos são uma seqüência de instruções. Se as instruções seguintes

não dependem do resultado da primeira, o processador não terá nenhum problema

para resolvê-las rapidamente. Porém, caso ocorra uma tomada de decisão, onde o

processador precisa primeiro resolver uma instrução para saber qual caminho deve

tomar, entra em cena o recurso de Execução Especulativa onde, enquanto é

resolvida a primeira instrução, o processador escolhe um dos caminhos possíveis

para ir “adiantando o serviço” enquanto não sabe qual caminho deverá seguir. Se, ao

saber do resultado da primeira instrução, tiver tomado o caminho certo simplesmente

continuará. Por outro lado, se o processador tiver “adivinhado errado” então terá que

jogar fora todo o trabalho já feito e tomar o outro caminho perdendo muito tempo.

O Pentium 4 perde nesse quesito pois demora o dobro do tempo para processar a

primeira instrução, que é processada em 20 estágios contra 10 estágios do Pentium

III. Isto significa que, em cada tomada de decisão errada são perdidos 20 ciclos de

processamento. Assim, a princípio, o Pentium 4 é mais lento que um Pentium III do

mesmo clock. Em compensação ele pode operar com freqüências mais altas.

Todas as outras alterações feitas pela Intel servem como paliativos para diminuir esta

perda de desempenho trazida pelo maior número de estágios de pipeline. Devido a

isto, a Intel lançou os modelos de 1,4 GHz e 1,5 GHz de clock, pulando as versões de

37 de 62

Page 38: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

1,1 GHz e 1,2 GHz de clock. Caso fosse lançado um Pentium 4 de 1,1 GHz de clock

ele perderia para um Pentium III de 1 GHz em quase todas as aplicações.

Além da perda de desempenho, outro efeito do uso de mais estágios de pipeline é o

de tornar o processador maior, mais complexo e mais caro de ser produzir. O

Pentium 4 tem quase o dobro de área de um processador Athlon.

B. Execution Trace Cache

O uso do cache L1 no Pentium 4 é, no mínimo, inovador. O Pentium III tem 32 KB de

cache L1 dividido em 2 blocos de 16 KB cada, um para instruções e outro para dados.

O Athlon tem 128 KB de cache L1, também dividido em dois blocos. O Pentium 4 tem

apenas 8 KB de cache L1 para dados e só. Porém, ele traz duas inovações que

compensam esta aparente deficiência. A primeira é que, graças ao tamanho reduzido

o cache de dados tem um tempo de latência (tempo que demora para reagir) menor,

ou seja, é mais rápido que o cache L1 encontrado no Pentium III e no Athlon.

A segunda inovação é que o cache de instruções foi substituído pelo Execution Trace

Cache que, ao invés de armazenar instruções, armazena diretamente uOPs, que são

as instruções já decodificadas e prontas para serem processadas. Isto garante que o

cache tenha apenas um ciclo de latência, ou seja, o processador não perde tempo

algum ao utilizar um dado armazenado no Execution Trace Cache, ao contrário do

que acontece no Pentium III onde perde-se dois ciclos em cada leitura.

Uma explicação resumida sobre o que é um uOP: os processadores para PC usam o

conjunto de instruções x86 composto por 184 instruções mas, internamente, eles só

são capazes de processar instruções simples. Existe um circuito decodificador que

converte as instruções complexas, usadas pelos programas, nas instruções simples,

entendidas pelo processador. Uma instrução complexa pode ser quebrada em várias

instruções simples. No Pentium 4 cada instrução simples é chamada de uOP. No

Athlon cada conjunto de duas instruções simples ganha o nome de macro-ops.

C. Bus de 400 MHz

Para concorrer com o barramento EV6 do Athlon, que opera de 100 MHz até 133

MHz com duas transferências por ciclo o que resulta em freqüências de,

respectivamente, 200 MHz até 266 MHz, o Pentium 4 conta com um barramento

operando a 100 MHz mas com 4 transferências por ciclo o que eqüivale à um

barramento de 400 MHz.

O barramento controla a velocidade de comunicação entre o processador e o chipset

(conjunto de circuitos integrados responsáveis pelo controle do barramento e dos

38 de 62

Page 39: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

periféricos integrados na placa-mãe). Um barramento mais rápido não significa um

ganho automático de performance porém, um barramento insuficiente causa perda de

desempenho fazendo com que o processador não consiga comunicar-se com os

demais componentes na velocidade máxima.

D. Rapid Execution Engine

Todo processador atual é dividido em dois componentes básicos: as unidades de

execução de inteiros e as unidades de ponto flutuante. A parte que processa as

instruções envolvendo números inteiros é responsável pela maior parte das

instruções e pelo desempenho do processador nos aplicativos do dia a dia. As

unidades de ponto flutuante, que compõe o que chamamos de coprocessador

aritmético, são responsáveis pelo processamento das instruções envolvendo valores

complexos usados por jogos e aplicativos gráficos.

A Rapid Execution Engine do Pentium 4 consiste num reforço nas unidades de

inteiros do processador. O Pentium 4 possui um total de 5 unidades de

processamento de inteiros, duas que processam as instruções mais simples, duas

encarregadas de ler e gravar dados e uma encarregada de decodificar e processar as

instruções complexas que, embora em menor quantidade, são as instruções que

tomam mais tempo do processador.

No Pentium 4 as encarregadas das instruções simples e as encarregadas das leituras

e gravações são muito potentes. Porém, a de instruções complexas não teve a

mesma evolução e, por usar 20 estágios de pipeline, tornou-se mais lenta que a do

Pentium III. Temos então que as instruções simples são rapidamente processadas

mas as instruções complexas ficam represadas causando perda de desempenho.

No coprocessador aritmético o cenário é ainda mais complicado. Apesar das

unidades de execução terem perdido desempenho devido ao pipeline de 20 estágios,

não houve nenhum avanço para equilibrar a balança como feito nas unidades de

inteiros. Ao contrário, o coprocessador aritmético encolheu tendo sido retiradas duas

das unidades de execução, uma que processava instruções MMX e uma que

processava instruções SSE.

Ao invés de evoluir o coprocessador aritmético do Pentium 4 tornou-se mais frágil que

o do Pentium III trazendo um cenário, no mínimo, curioso. Enquanto na época do

Pentium II, e do AMD K6, a AMD competia com um processador que, apesar de

possuir um bom desempenho em aplicativos de escritório, era muito fraco nos jogos e

aplicativos gráficos agora temos um cenário semelhante porém com os lados

39 de 62

Page 40: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

invertidos: a Intel tem com um processador que é potente em inteiros mas fraco em

ponto flutuante.

E. SSE 2

A solução da Intel para tentar diminuir a deficiência do coprocessador aritmético foi a

mesma que a AMD usou na época do K6-2. A AMD usou as instruções 3D-Now! para

melhorar seu desempenho nos jogos que fossem otimizados. A Intel incorporpou

novas instruções ao Pentium 4, chamadas de SSE 2, para melhorar seu desempenho

nos jogos e em aplicativos gráficos que venham a ser otimizados.

F. Acesso à Memória

Apesar de ter que usar memórias RAMbus (muito caras), o Pentium 4 apresenta um

desempenho de acesso à memória surpreendente. Acessando simultaneamente dois

módulos pode chegar a uma taxa de transferência de dados de 3,2 GB/s, o que

corresponde a três vezes o máximo permitido por módulos de memórias PC-133

comuns. Mesmo o Athlon usando memórias DDR apresenta um desempenho inferior.

G. Instalação

O Pentium 4 utiliza o Soquete 423, semelhante ao Soquete 370 do Pentium III e pelo

Celeron, mas com mais contatos.

Uma boa novidade é que o Pentium 4 usa uma chapa metálica sobre o processador

que evita rachaduras ao ser instalado o cooler como acontece com alguns

processadores Pentium III, Celeron, Duron e Athlon soquetados, onde a parte traseira

do processador fica exposta.

Figura 25: No Pentium 4 (esquerda) a chapa metálica protege o processador. No

Duron (direita) o processador fica exposto.

40 de 62

Page 41: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Junto com o Pentium 4, a Intel lançou um novo padrão de fonte de alimentação, o

ATX 2.03, pois o Pentium 4 consome muito. O padrão consiste em fontes que podem

suportar a maior demanda e , como garantia, trazem um novo conector de 12 volts

que é ligado diretamente na placa-mãe para aumentar o fornecimento de eletricidade

para o processador.

Figura 26: O novo conector da fonte padrão ATX.

7. O PROCESSADOR PENTIUM II

Uma visão geral da organização do processador Pentium II é apresentada na

figura 27.

41 de 62

Page 42: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 27: Diagrama de blocos do Pentium II

Organização de Registradores

O Pentium II inclui os seguintes tipos de registradores:

Propósito geral: existem oito registradores de propósito geral de 32 bits.

Esses registradores podem ser usados por todos os tipos de instrução do

Pentium II; eles também podem conter operandos para cálculo de endereço.

Além disso, alguns desses registradores servem para propósitos especiais.

Por exemplo, instruções que manipulam cadeias de caracteres usam os

conteúdos dos registradores ECX, ESI e EDI como operandos, sem

referenciar explicitamente esses registradores na instrução. Como resultado,

diversas instruções podem ser codificadas de modo mais compacto.

Segmento: os seis registradores de segmento de 16 bits cada um contêm

seletores de segmento que indexam tabelas de segmentos. O registrador

segmento de código (CS) referencia o segmento que contém a instrução

sendo executada. O registrador de segmento de pilha (SS) referencia o

segmento que contém a pilha visível para o usuário. Os demais registradores

de segmento (DS, ES, FS, GS) possibilitam ao usuário referenciar até quatro

segmentos de dados distintos de cada vez.

Códigos de condição (flags): o registrador EFLAGS contém códigos de

condição e vários bits de controle.

Contador de programa: contém o endereço da instrução corrente.

Há também registradores destinados especificamente para a unidade de ponto

flutuante:

Numéricos: cada registrador contém um número de ponto flutuante de

precisão estendida de 80 bits. Existem oito registradores que funcionam

como uma pilha, havendo disponíveis, no conjunto, instruções, operações

para empilhar e desempilhar valores de ponto flutuante.

Controle: o registrador de controle de 16 bits contém bits que controlam a

operação da unidade de ponto flutuante, incluindo o controle do tipo de

arredondamento, da precisão: simples, dupla ou estendida, e bits para

habilitar ou desabilitar várias condições de exceção.

Estado: o registrador de estado de 16 bits contém bits que refletem o estado

atual da unidade de ponto flutuante, incluindo um apontador de topo de pilha

de 3 bits, códigos de condição, que relatam o resultado da última operação,

e indicadores de exceção.

42 de 62

Page 43: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Condição de conteúdo (tag world): esse registrador de 16 bits contém 2

bits para cada registrador numérico de ponto flutuante, que indicam a

natureza do conteúdo do registrador correspondente. Os quatro possíveis

valores são: número válido, zero, especial e vazio. Essa informação

possibilita que programas verifiquem o tipo do conteúdo de um registrador

numérico sem ter de efetuar uma decodificação complexa do dado corrente

no registrador. Por exemplo, quando é feita uma troca de contexto, o

processador não precisa salvar os registradores de ponto flutuante que

estejam vazios.

Tabela 2: Registradores do processador Pentium II

(a) Unidade Inteira

Tipo Número Tamanho (bits) Propósito

Propósito geral 8 32 Registradores de propósito

geral para usuários

Segmento 6 16 Contêm seletores de

segmento

Códigos de operação 1 32 Bits de estado e de controle

Contador de programa 1 32 Apontador de instruções

(b) Unidade de Ponto Flutuante

Tipo Número Tamanho (bits) Propósito

Numérico 8 80 Armazenam um número de

ponto flutuante

Controle 1 16 Bits de controle

Estado 1 16 Bits de estado

Bits de condição 1 16 Especificam o conteúdo dos

registradores numéricos

Contador de programa 1 48 Aponta para a instrução

interrompida pela execução

Apontador de dados 1 48 Aponta para o operando

interrompido pela execução

A. Registrador EFLAGS

O registrador EFLAGS (figura 28) indica o estado do processador e ajuda a

controlar sua operação. Ele inclui os seis códigos de condição (‘vai-um’, paridade,

‘vai-um’ auxiliar,’ zero, sinal, overflow), que relatam o resultado de uma operação

inteira. Além disso, alguns bits do registrador podem ser ditos de controle:

43 de 62

Page 44: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Indicador de modo de depuração (TF): quando esse bit está ligado (valor =

1), é causada uma interrupção depois da execução de cada instrução. Isso é

usado para depuração.

Habilitação de interrupção (IF): quando esse bit está ligado, o processador

reconhece interrupções externas.

Indicador de direção (DF): determina se as instruções de processamento

de cadeias de caracteres incrementam ou decrementam o valor dos

registradores de 16 bits SI e DI (para operações de 16 bits) ou dos

registradores de 32 bits ESI e EDI (para operações de 32 bits).

Indicador de privilégio de E/S (IOPL): quando esse bit está ligado, o

processador gera uma exceção para todo acesso a dispositivos de E/S,

durante a operação em modo protegido.

Indicador de reinício (RF): permite ao programador desabilitar exceções de

depuração, para que uma instrução possa ser reiniciada depois de uma

exceção de depuração sem causar imediatamente uma outra exceção de

depuração.

Verificação de alinhamento (AC): quando esse bit está ligado, é feita uma

verificação se uma palavra ou palavra dupla é endereçada fora do limite de

uma palavra ou palavra dupla.

Indicador de identificação (ID): o valor desse bit apenas pode ser

modificado se o processador oferecer suporte para a instrução CPUID. Essa

instrução informa o fabricante, a família e o modelo do processador.

Além desses bits, existem 4 bits relacionados ao modo de operação. O bit de

tarefa aninhada (NT) indica que a tarefa corrente está aninhada dentro de outra

tarefa que opera em modo protegido. O bit de modo virtual (VM) permite ao

programador habilitar ou desabilitar o modo virtual 8086, que determina se o

processador deve executar como uma máquina 8086. O bit de habilitação de

interrupção virtual (VIF) e o bit indicador de interrupção virtual pendente (VIP) são

usados em um ambiente multitarefa.

44 de 62

Page 45: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 28: Registrador EFLAGS do Pentium II

B. Registradores de Controle

O Pentium II emprega quatro registradores de controle de 32 bits (o registrador

CR1 não é usado), para controlar vários aspectos de operação de processador

(figura 29). O registrador CR0 contém indicadores de controle do sistema, que

controlam os modos de operação ou indicam estados que geralmente se aplicam ao

processador e não à execução de uma tarefa individual. Esses indicadores são:

Habilitação de proteção (PE): habilita / desabilita o modo de operação

protegido.

45 de 62

Page 46: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Monitoração de co-processador (MP): apenas tem interesse quando é

executado um programa de máquinas anteriores ao Pentium II; está

relacionado com a presença de co-processador aritmético.

Emulação (EM): se esse bit está ligado, isso indica que o processador não

possui unidade de ponto flutuante e é gerada uma interrupção em cada

tentativa de executar instruções de ponto flutuante.

Troca de tarefa (TS): indica que o processador efetuou uma troca de tarefa.

Tipo de extensão (ET): não é usado no Pentium II; é usado em máquinas

anteriores para indicar suporte a instruções do co-processador matemático.

Erro numérico (NE): habilita o mecanismo padrão de reportar erros de

ponto flutuante nas linhas do barramento externo.

Proteção de escrita (WP): quando está desligado, as páginas com

permissão de usuário apenas para leitura podem ser escritas por um

processo supervisor. Essa característica é útil para oferecer suporte à

criação de processos em alguns sistemas operacionais.

Máscara de alinhamento (AM): habilita / desabilita a verificação de

alinhamento.

Desabilita escrita direta (NW): seleciona o modo de operação da cache de

dados. Quando esse bit está ligado, a cache de dados fica impedida de

efetuar operações de escrita direta (write-through) na cache.

Desabilita cache (CD): habilita / desabilita o mecanismo de abastecimento

da cache interna.

Paginação (PG): habilita / desabilita a paginação.

46 de 62

Page 47: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 29: Registradores de controle do Pentium II

Quando a paginação é habilitada, os registradores CR2 e CR3 são válidos. O

registrador CR2 mantém o endereço linear de 32 bits da última página acessada

antes de uma interrupção de falta de página. Os 20 bits mais à esquerda de CR3

correspondem aos 20 bits mais significativos do endereço-base do diretório de

páginas; o restante do endereço contém zeros. Dois bits do CR3 são usados para

controlar a operação de uma cache externa. O bit de habilitação da cache de

páginas (PCD) habilita ou desabilita a operação da cache externa e o bit de escrita

transparente na cache de páginas (PWT) controla o modo de escrita na cache

externa.

47 de 62

Page 48: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Nove bits de controle adicionais são definidos no CR4:

Extensão do modo virtual 8086 (VME): habilita suporte para o bit indicador

de interrupção virtual no modo virtual 8086.

Interrupção virtual em modo protegido (PVI): habilita suporte para o bit

indicador de interrupção virtual no modo protegido.

Desabilitar contador de passos de execução (TSD): desabilita a instrução

de leitura do contador de passos de execução (RDTSC), que é usado para

fins de depuração.

Extensões de depuração (DE): habilita breakpoints de E/S; isso permite

que o processador interrompa as operações de E/S, tanto de leitura quanto

de escrita.

Extensão de tamanho de páginas (PSE): habilita o uso de páginas de 4

Mbytes, no Pentium, ou de páginas de 2 Mbytes, no Pentium Pro e Pentium

II.

Extensão de endereço físico (PAE): habilita as linhas de endereço A32 a

A35, sempre que um novo modo de endereçamento especial, controlado

pela PSE, é habilitado para o Pentium Pro e o Pentium II.

Habilitação de verificação de máquina (MCE): habilita interrupção de

verificação da máquina, que ocorre quando é detectado erro de paridade

durante um ciclo de leitura no barramento ou quando um ciclo de barramento

não é completado com sucesso.

Habilitação de página global (PGE): habilita o uso de páginas globais.

Quando PGE=1 é efetuada uma troca de tarefa, todas as entradas na

memória cache da tabela de páginas (TLB) são descarregadas, com

exceção daquelas marcadas como globais.

Habilitação de contador de desempenho (PCE): habilita a execução da

instrução RDPMC (leitura de contador de desempenho), para qualquer nível

de privilégio. Dois contadores de desempenho são usados para medir a

duração e o número de ocorrências de um tipo específico de evento.

C. Registradores MMX

As instruções MMX usam campos de endereço de registrador com 3 bits,

fornecendo assim suporte para oito registradores MMX. De fato, o processador não

inclui registradores MMX específicos. Em vez disso, ele utiliza uma técnica de

mapeamento de registradores MMX sobre os registradores de ponto flutuante (figura

30); ou seja, os registradores de ponto flutuante são usados para armazenar valores

MMX. Mais especificamente, os 64 bits de mais baixa ordem (mantissa) de cada

registrador de ponto flutuante são usados para formar os oito registradores MMX.

48 de 62

Page 49: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Assim, a arquitetura existente do Pentium II é facilmente estendida para oferecer

suporte para instruções MMX. As características fundamentais do uso dos

registradores de ponto flutuante como registradores MMX são:

Nas operações de ponto flutuante, os registradores de ponto flutuante são

tratados como uma pilha. Nas operações MMX, esses mesmos registradores

são acessados diretamente.

Na primeira vez em que uma instrução MMX é executada depois de uma

operação de ponto flutuante, a palavra de condição de conteúdo da unidade

de ponto flutuante é marcada como válida. Isso reflete a mudança do uso

dos registradores, que deixam de ser usados sob a forma de pilha para

serem usados por meio de endereçamento direto.

A instrução EMMS (esvazia estado MMX) altera os valores dos bits da

palavra de condição de conteúdo da unidade de ponto flutuante, para indicar

que todos os registradores estão vazios. É importante que o programador

insira essa instrução no final de cada bloco de código MMX, para que as

operações de ponto flutuante funcionem adequadamente.

Quando é escrito um valor em um registrador MMX, é atribuído valor 1 aos

bits [79:64] do registrador de ponto flutuante correspondente (bits de sinal e

de expoente), indicando que o valor do registrador de ponto flutuante deve

ser interpretado como NaN (não um número) ou infinito, quando visto como

um valor de ponto flutuante. Isso assegura que um dado MMX nunca será

visto como um valor válido de número de ponto flutuante.

Figura 30: Mapeamento de registradores MMX sobre registradores de ponto

flutuante

Processamento de Interrupção

49 de 62

Page 50: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

O processamento de interrupções dentro de um processador visa oferecer suporte

para o sistema operacional. O uso de interrupções permite que um programa de

aplicação seja suspenso, para que uma variedade de condições de interrupção possa

ser atendida, sendo a execução do programa retomada mais tarde.

A. Interrupções e Exceções

Duas classes de eventos fazem com que o Pentium II suspenda o fluxo de

execução da instrução corrente e responda ao evento: interrupções e exceções. Em

ambos os casos, o processador salva o contexto do processo corrente e transfere o

controle para uma rotina predefinida de tratamento da condição ocorrida. Uma

interrupção é gerada por um sinal de hardware e pode ocorrer aleatoriamente

durante a execução de um programa. Uma exceção é gerada por software e

provocada pela execução de uma instrução. Existem duas fontes de interrupção e

duas fontes de exceção, que são:

1. Interrupções

Interrupções mascaráveis: recebidas no pino INTR do processador. O

processador apenas reconhece uma interrupção mascarável se o bit de

habilitação de interrupção (IF) tiver valor 1.

Interrupções não-mascaráveis: recebidas no pino NMI do processador. O

reconhecimento dessas interrupções não pode ser desabilitado.

2. Exceções

Exceções detectadas pelo processador: ocorrem quando o processador

detecta um erro ao tentar executar uma instrução.

Exceções programadas: são exceções geradas por instruções (INTO,

INT3, INT e BOUND)

B. Tabela de Vetores de Interrupção

O processamento de interrupção no Pentium II usa uma tabela de vetores de

interrupção. A cada tipo de interrupção é associado um número, que é usado para

indexar a tabela de vetores de interrupção. Essa tabela contém 256 vetores de

interrupção de 32 bits, que armazenam o endereço (segmento e endereço relativo)

da rotina de tratamento para interrupções daquele tipo.

A tabela 3 mostra os índices de cada tipo de interrupção na tabela de vetores de

interrupção; as entradas sombreadas representam interrupções e as não-

sombreadas, exceções. A interrupção de hardware NMI é de tipo 2. Interrupções de

hardware INTR têm números de 32 a 255; quando é gerada uma interrupção INTR,

o sinal de interrupção enviado por meio do barramento deve ser acompanhado do

50 de 62

Page 51: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

número do vetor de interrupção correspondente. Os demais números de vetores de

interrupção são usados para exceções.

Se houver mais de uma interrupção ou exceção pendente, o processador as trata

em uma ordem previsível. A localização dos números de vetores da tabela não

reflete a prioridade das interrupções. A prioridade de exceções e interrupções é

organizada nas cinco classes a seguir, com ordem descendente de prioridade:

Classe 1: parada (trap) na instrução anterior (vetor número 1).

Classe 2: interrupções externas (2, 32 a 255).

Classe 3: falhas na busca da próxima instrução (3, 14).

Classe 4: falhas na decodificação da próxima instrução (6,7).

Classe 5: falhas na execução de uma instrução (0, 4, 5, 8, 10 a 14, 16, 17).

Tabela 3: Tabela de vetores de interrupção e exceção do Pentium II

Número do vetor Descrição

0 Erro de divisão; divisão por zero ou overflow na divisão1 Exceção de depuração; inclui várias falhas e indicadores de

parada relacionados à depuração2 Interrupção no pino NMI; sinal no pino NMI3 Ponto de parada; causado pela instrução INT3, que é uma

instrução de 1 byte, útil para depuração4 Overflow detectado por INTO; ocorre quando o processador

executa a instrução INTO e o bit de overflow tem valor 15 Limite excedido em BOUND; a instrução BOUND compara o

conteúdo de um registrador com valores-limite armazenados na memória e gera uma interrupção se o valor do registrador está fora desses limites

6 Código de operação indefinido7 Dispositivo não disponível; falha na tentativa de usar as

instruções ESC ou WAIT devido à ausência de um dispositivo externo

8 Falta dupla; duas interrupções ocorrem durante a execução de uma mesma instrução e elas não podem ser tratadas em seqüência

9 Reservado10 Segmento de estado tarefa inválido; o segmento que descreve

uma tarefa requerida não está inicializado ou é inválido11 Segmento não presente; o segmento requerido não está

presente12 Falha de pilha; o limite do segmento de pilha foi excedido ou o

segmento de pilha não está presente13 Proteção geral; uma violação de proteção que na causa outra

exceção (por exemplo, escrita em um segmento apenas de leitura)

14 Falta de página15 Reservado16 Erro de ponto flutuante; gerado por uma instrução aritmética de

ponto flutuante17 Verificação de alinhamento; acesso a uma palavra armazenada

em um endereço de byte impar ou a uma palavra dupla armazenada em um endereço que não é múltiplo de 4

51 de 62

Page 52: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

18 Verificação de máquina; específica para cada modelo19-31 Reservado

32-255 Vetores de interrupção de usuário; fornecida quando o sinal INTR está ativado

8. O PROCESSADOR POWERPC

A figura 31 apresenta uma visão da organização do processador PowerPC.

Figura 31: Diagrama de blocos do PowerPC G3

Organização de Registradores

A figura 32 mostra os registradores do PowerPC visíveis para o usuário. A unidade

de ponto fixo inclui os seguintes registradores:

Propósito geral: existem 32 registradores de propósito geral, cada um com

64 bits. Esses registradores podem ser usados para carregar, armazenar e

manipular operandos de dados e para endereçamento indireto via

registrador. O registrador 0 é tratado de modo diferenciado. Nas diversas

operações de carga e armazenamento, assim como nas diversas operações

de adição, ele é tratado como tendo valor constante, igual a zero,

independente de seu conteúdo real.

Registrador de exceção (XER): inclui 3 bits que relatam exceções em

operações aritméticas de número inteiro. Esse registrador também inclui um

campo para um contador de bytes, que é usado como operando em algumas

instruções que operam sobre seqüências de caracteres (figura 33a).

52 de 62

Page 53: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

A unidade de ponto flutuante contém registradores visíveis para o usuário

adicionais:

Propósito geral: existem 32 registradores de propósito geral de 64 bits,

usados para todas as operações de ponto flutuante.

Registrador de estado e de controle de ponto flutuante (FPSCR): esse

registrador de 32 bits contém bits que controlam a operação da unidade de

ponto flutuante e bits que registram o estado resultante de operações de

ponto flutuante.

A unidade de processamento de desvios contém os seguintes registradores visíveis

para o usuário:

Registrador de condição: consiste de oito campos de código de condição

de 4 bits cada, totalizando 32 bits (figura 33b)

Registrador de ligação: o registrador de ligação pode ser usado em uma

instrução de desvio condicional com endereçamento indireto ao endereço-

alvo. Ele é também usado para implementar a chamada e o retorno de

procedimento. Se o bit LK de uma instrução de desvio condicional está

ligado, o endereço consecutivo à instrução de desvio é colocado no

registrador de ligação e pode ser usado no retorno.

Registrador contador: o registrador contador pode ser usado para controlar

laços de repetição; ele é decrementado cada vez que é testado em uma

instrução de desvio condicional. Outro uso desse registrador é no

endereçamento indireto do endereço-alvo de uma instrução de desvio.

53 de 62

Page 54: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 32: Registradores visíveis para o usuário do PowerPC

54 de 62

Page 55: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 33: Formatos de registradores do PowerPC

Os campos do registrador de condição são usados para diversas finalidades. Os

primeiros 4 bits (CR0) são atualizados por toda instrução aritmética de número inteiro

que tem o bit Rc igual a 1. Como mostra a tabela 4, esse campo indica se o resultado da

operação é positivo, negativo ou zero. O quarto bit é uma cópia do bit de sumário de

overflow do XER. O próximo campo (CR1) é atualizado por toda instrução aritmética de

ponto flutuante que tem o bit Rc igual a 1. Nesse caso, os 4 bits são atualizados com o

valor dos primeiros 4 bits do FPSCR. Finalmente, qualquer dos oito campos de condição

(CR0 a CR7) pode ser usado em uma instrução de comparação; em cada caso, o campo

pretendido é especificado na própria instrução. Tanto em uma instrução de comparação

de números de ponto fixo quanto em uma comparação de números de ponto flutuante,

os primeiros 3 bits do campo de condição especificado registram se o primeiro operando

55 de 62

Page 56: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

é menor, maior ou igual ao segundo operando. O quarto bit é o bit de sumário de

overflow, no caso de uma comparação de números de ponto fixo, ou um indicador de

resultado não-ordenado, no caso de uma operação de números de ponto flutuante.

Tabela 4: Interpretação dos bits no registrador de condição

Posição

do bit

CR0 (instrução

de número inteiro

com Rc=1)

CR1 (instrução de

ponto flutuante

com Rc=1)

CRI (instrução

de comparação

de ponto fixo)

CRI (instrução de

comparação de

ponto flutuante)

i resultado < 0 sumário de overflow op1 < op2 op1 < op2

i + 1 resultado > 0 sumário de exceção

desabilitada

op1 > op2 op1 > op2

i + 2 resultado = 0 sumário de exceção

de operação inválida

op1 = op2 op1 = op2

i + 3 sumário de

overflow

exceção de overflow sumário de

overflow

não-ordenado (um

operando é um

NaN)

Processamento de Interrupção

Assim como qualquer processador, o PowerPC oferece um recurso para o

processador interromper o programa que está sendo executado, para tratar uma

condição de exceção.

A. Tipos de Interrupção

O PowerPC distingue dois tipos de interrupções: as interrupções causadas por

alguma condição ou evento do sistema e as causadas pela exceção de uma

instrução. A tabela 5 apresenta as interrupções reconhecidas pelo PowerPC.

A maioria das interrupções assinaladas na tabela pode ser estendida facilmente,

mas algumas requerem maior esclarecimento. A interrupção de reset reinicia o

sistema e ocorre quando a energia é ligada e quando o botão de reset da unidade

de sistema é pressionado. A interrupção de verificação de máquina lida com certas

anomalias, tais como erro de paridade da memória cache e referência a uma

posição de memória não existente, e pode fazer com que o sistema entre no que é

conhecido como estado de parada para verificação; esse estado suspende a

execução do processador e congela os conteúdos dos registradores, até que o

sistema seja reiniciado. A interrupção de auxílio à unidade de ponto flutuante habilita

o processador a invocar rotinas de software para completar operações que não

podem ser manipuladas diretamente pela unidade de ponto flutuante, tais como

56 de 62

Page 57: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

operações que envolvem números não-normalizados ou códigos de operação de

ponto flutuante não implementados.

Tabela 5: Tabela de interrupções do PowerPC

Ponto de entrada

Tipo de interrupção Descrição

00000h Reservada

00100h Reset de sistema Ativação dos sinais de reset do processador, por hardware ou por software

00200h Verificação de máquina Ativação de sinal TEA# para o processador, quando ele está habilitado para reconhecer verificações de máquina

00300h Acesso a dados Exemplos: falta de página de dados, violação de direito de acesso em instruções de carga ou de armazenamento

00400h Acesso a instrução Falta de página de código; tentativa de busca de instrução em um segmento de E/S; violação de direito de acesso

00500h Externa Ativação do sinal de entrada de interrupção externa do processador, pela lógica externa quando o reconhecimento de interrupção externa está habilitado

00600h Alinhamento Tentativa de acesso à memória malsucedida, devido ao não-alinhamento de operando

00700h Programa Interrupção de ponto flutuante; usuário tenta executar uma instrução privilegiada; execução de uma instrução de trap em que sua condição é satisfeita; instrução ilegal

00800h Unidade de ponto flutuante não-disponível

Tentativa de executar instrução de ponto flutuante com a unidade de ponto flutuante desabilitada

00900h Registrador de decremento

Esgotamento do registrador de decremento quando o reconhecimento de interrupção externa está habilitado

00A00h Reservada

00B00h Reservada

00C00h Chamada de sistema Execução de uma instrução de chamada ao sistema

00D00h Depuração (trace) Execução de programa passo a passo, para fins de depuração

00E00h Auxílio à unidade de ponto flutuante

Tentativa de executar uma operação de ponto flutuante pouco freqüente e complexa (por exemplo, uma operação sobre número não-normalizado)

00E10h a 00FFFh

Reserva

01000h a 02FFFh

Reservada (específica para cada

implementação)

Não-sombreado: interrupções causadas por execução de instrução

Sombreado: interrupções não são causadas por execução de instrução

57 de 62

Page 58: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

B. Registrador de Estado da Máquina

Para interromper um programa, é fundamental ser capaz de salvar o estado do

processador no instante da interrupção, para que possa ser restaurado mais tarde.

Isso inclui não apenas salvar o conteúdo de vários registradores mas também várias

condições relacionadas à execução. Essas condições são convenientemente

armazenadas no registrador MSR (Tabela 6). Diversos bits desse registrador

também requerem maior esclarecimento.

Quando o bit de modo de privilégio (bit 49) é igual a 1, o processador opera no

nível de privilégio de usuário e apenas um subconjunto do conjunto de instruções é

disponível. Quando esse bit tem valor 0, o processador opera no nível de privilégio

de supervisor. Isso habilita todas as instruções e permite o acesso a certos

registradores do sistema (tais como o MSR) que não são acessíveis no nível de

privilegio de usuário.

Os valores dos dois bits de exceção de ponto flutuante (bits 52 e 55) definem os tipos de

interrupção que a unidade de ponto flutuante pode gerar, tendo a seguinte interpretação:

FE0 FE1 Interrupções que serão reconhecidas

0 0 Nenhuma

0 1 Imprecisão não-recuperável

1 0 Imprecisão recuperável

1 1 Precisão

Quando o bit de depuração passo a passo (bit 53) está ligado, o processador

desvia para a rotina de tratamento da interrupção de depuração passo a passo,

depois de cada execução de instrução bem-sucedida. Quando o bit de depuração

de desvio (bit 54) está ligado, o processador desvia para a rotina de tratamento da

interrupção de depuração de desvio, após cada execução de instrução de desvio

bem-sucedida, seja o desvio tomado ou não.

Os bits de tradução de endereço de instrução (bit 58) e de tradução de endereço

de dados (bit 59) determinam se é usado endereçamento real ou se a unidade de

gerenciamento de memória efetua tradução de endereço.

Tabela 6: Registrador de estado de máquina do PowerPC

Bit Definição

0 Processador em modo de 32 bits / 64 bits

1:44 Reservado

45 Gerenciamento de energia habilitado / desabilitado

46 Dependente de implementação

47 Define se os tratadores de interrupção usam o modo little-endian ou big-endian

58 de 62

Page 59: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

48 Interrupção externa habilitada / desabilitada

49 Estado privilegiado / não-privilegiado

50 Unidade de ponto flutuante não-disponível / disponível

51 Interrupções de verificação de máquina habilitada / desabilitada

52 Modo de execução de ponto flutuante 0

53 Depuração passo a passo habilitada / desabilitada

54 Depuração de desvio habilitada / desabilitada

55 Modo de exceção de ponto flutuante 1

56 Reservado

57 A parte mais significativa do endereço de exceção é 000h/FFFh

58 Tradução de endereço de instrução ligada / desligada

59 Tradução de endereço de dados ligada / desligada

60:61 Reservado

62 Interrupção recuperável / não-recuperável

63 Processador em modo big-endian / little-endian

Não-sombreado: copiado para o SRR1

Sombreado: não copiado para o SRR1

C. Tratamento de Interrupção

Quando uma interrupção ocorre e é reconhecida pelo processador, acontece a

seguinte seqüência de eventos:

1. O processador coloca o endereço da próxima instrução a ser executada no

registrador SRR0 (save/restore register 0). Esse endereço é o endereço da

instrução corrente, se a interrupção foi causada por uma falha na tentativa de

executar essa instrução, ou, caso contrário, é o endereço da próxima

instrução a ser executada.

2. O processador copia a informação de estado da máquina, contida no

registrador MSR, para o registrador SRR1. Os bits copiados são os que não

estão sombreados na tabela 6. Os bits restantes do registrador SRR1 são

carregados com a informação específica para o tipo de interrupção.

3. O registrador MSR é atualizado com um valor definido pelo hardware,

específico para o tipo de interrupção. Para todos os tipos de interrupção, a

tradução de endereço é desligada e as interrupções externas são

desabilitadas.

4. O processador então transfere o controle para a rotina adequada de

tratamento de interrupção. Os endereços das rotinas de tratamento de

interrupção são armazenados na Tabela de Interrupção. O endereço-base

dessa tabela é determinado pelo bit 57 do registrador MSR.

59 de 62

Page 60: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Para retornar de uma interrupção, a rotina de tratamento de interrupção executa

uma instrução rfi (retorno de interrupção). Isso faz com que os valores dos bits salvos no

registrador SRR1 sejam restaurados no registrador MSR. A execução é retomada a

partir da instrução cujo endereço está armazenado no registrador SRR0.

9. BIBLIOGRAFIA

STALLINGS, William, Arquitetura e Organização de Computadores, São Paulo: Editora

Prentice Hall do Brasil, 2002

MONTEIRO, Mario, Introdução à Organização de Computadores, Rio de Janeiro: LTC

Livros Técnicos e Científicos Editora, 2002

TANENBAUM, Andrew S., Organização Estruturada de Computadores, Rio de Janeiro:

Editora Prentice Hall do Brasil, 2001

60 de 62

Page 61: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

10.LISTA DE EXERCÍCIOS

1. Considere um computador com uma palavra de 8 bits. Se a última operação

efetuada nesse computador foi uma adição na qual dois operandos foram 2 e 3,

quais seriam os valores dos seguintes bits de condição?

‘Vai-um’

Zero

Overflow

Sinal

Paridade par

‘Vai-um’ parcial

Quais seriam os valores desses bits se os operandos fossem -1 (em complemento

de dois) e +1?

2. Considere os diagramas de transição de estado da figura 34.

a. Descreva o comportamento de cada um dos

diagramas.

b. Compare esses diagramas com o diagrama de

previsão de desvios da seção 4. Discuta os méritos relativos de cada uma das

três abordagens para previsão de desvios.

61 de 62

Page 62: 4-Estrutura e Funcionamento Da Cpu

INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA

Figura 34: Diagrama de transição de estados para o exercício 2

62 de 62