Download - 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
INTRODUÇÃO A ORGANIZAÇÃO DE COMPUTADORES – NOTAS DE AULA
Figura 32: Registradores visíveis para o usuário do PowerPC
54 de 62
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
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
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
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
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
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
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
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