• Nenhum resultado encontrado

O Processador PowerPC

No documento 4-Estrutura e Funcionamento Da Cpu (páginas 52-60)

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.

campo para um contador de bytes, que é usado como operando em algumas instruções que operam sobre seqüências de caracteres (figura 33a).

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.

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

é 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 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 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

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.

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.

No documento 4-Estrutura e Funcionamento Da Cpu (páginas 52-60)

Documentos relacionados