|
Arquitetura PowerPC
|
3.1 Definição da Arquitetura PowerPC
3.2 O Conjunto de Registradores PowerPC
Uma arquitetura pode ser rígida, flexível ou específica. Caso uma arquitetura seja rígida será muito mais dispendioso realizar melhorias na performance quando esta arquitetura for superada. Com base nisto, a Arquitetura PowerPC foi projetada para permitir com facilidade mudanças na sua implementação prevendo um passo importante para um esquema de endereçamento de 64 bits. Logo, a flexibilidade é uma das características mais importantes da Arquitetura PowerPC.
Sem dúvida, o aspecto mais notável da flexibilidade da arquitetura é o fato de estar incluído definições de 32 e 64 bits, garantindo que aplicativos escritos para processadores de 32 bits rodem em processadores de 64 bits, sem problemas de compatibilidade.
Especificamente, a Arquitetura PowerPC é uma arquitetura RISC quem tem algumas convenções para garantir a compatibilidade de software entre os aplicativos desenvolvidos para dispositivos compatíveis com o PowerPC utilizando um único processador.
Um outro aspecto da flexibilidade da Arquitetura PowerPC é que ela é dividida em três níveis que correspondem ao três ambientes de programação, que são:
- A Arquitetura do conjunto de instruções do usuário (UISA - User Instruction Set Architecture): inclui as instruções de nível de aplicação do usuário e os registradores acessados por essas instruções A UISA também define parâmetros relacionados à instrução, tais como modos de endereçamento e formatos de instruções.
- A Arquitetura de ambiente virtual (VEA - Virtual Enviroment Architecture): descreve o modelo de memória par um meio no qual múltiplos dispositivos podem acessar a memória, define aspectos do modelo de memória - especialmente o modelo de cache - e a base de tempo. A VEA define os recursos usados primeiramente pelos compiladores.
- A Arquitetura de ambiente operacional (OEA - Operating Enviroment Architecture): define o modelo de gerenciamento de memória, o modelo de exceção e, principalmente, os recursos utilizados pelos sistemas operacionais.
As implementações podem existir em diferentes níveis, por exemplo, uma implementação pode ser compatível com a UISA sem ser compatível com os outros níveis.
Todos o dispositivos PowerPC aderem com a UISA, oferecendo compatibilidade entre todas as aplicações do PowerPC. Entretanto, existem várias versões diferentes da VEA e OEA, por exemplo, alguns dispositivos como controladores embutidos podem não requererem algumas características definidas por estes níveis VEA e OEA, e podem implementar mais simplificadamente ou modificar a versão destas características.
A Arquitetura PowerPC define algumas características importantes:
a) Registradores separados de 32 bits para inteiros e instruções de ponto flutuante. Os registradores de uso geral (GPRs, general-purpose registers) guardam os dados de instruções aritméticas de inteiros e os registradores de ponto flutuante (FPRs, floating-point registers) guardam dados de instruções de ponto flutuante;
b) Instruções para carga (loading) e armazenamento (store) dados entre a memória do sistema e os registradores FPRs ou GPRs;
c) Tamanho uniforme das instruções para permitir uma simplificação na aplicação do pipeline e no processamento paralelo de instruções.
d) Um preciso modelo de exceção , que fornece opcionalmente o tratamento de exceções de ponto flutuante);
e) Suporte para caches de dados e cache de instruções;
f) Suporte para endereçamento de 64 bits. A arquitetura suporta ambas as implementações, 32 bits ou 64 bits;
g) Capacidade de operar em precisão simples ou dupla de ponto flutuante;
h) A Arquitetura PowerPC segue a metodologia RISC; as instruções aritméticas utilizam um grande complemento de arquivos de registradores como operando;
i) São implementadas instruções separadas para operações de carga e armazenamento de inteiros e de ponto flutuante;
j) As instruções são na maioria simples e o conjunto de instruções é em sua maioria ortogonal. Há relativamente poucos modos de endereçamento e os formatos de instruções são sempre os mesmos;
l) As instruções empregam modos de endereçamento indestrutíveis para as instruções aritméticas em que o segundo e o terceiro (e raramente o quarto) operandos especificam registradores-fonte e o destino é especificado pelo primeiro operando.
Salienta-se que a Arquitetura PowerPC é deliberadamente flexível e não especifica detalhes de hardware para cada implementação, a PowerPC foi projeta de acordo com o modelo conceitual, apresentado na FIG. 3.1, garantindo assim que o despacho superescalar, o processamento paralelo e outros esquemas de otimização estejam na base do projeto da arquitetura.
FIG 3.1 - O modelo conceitual de processador da Arquitetura PowerPC mostrando o papel de execução paralela no projeto da arquitetura.
A unidade de processamento de desvio (BPU - Branch Processing Unit) está diretamente relacionada à unidade de instrução. Permitindo, desta maneira, muitas facilidades para dirimir o efeito sobre o throughput (desempenho) causado pelas instruções de desvio. Como as instruções são de tamanho uniforme o armazenamento torna-se mais fácil, o que por sua vez facilita a execução de operações de desvio futuras.
A BPU pode fornecer rapidamente o endereço de uma instrução de desvio quando este é previsto, ou buscar o caminho da instrução quando o desvio previsto estiver incorreto.
A arquitetura fornece uma variedade de mecanismos de previsão de desvio e, em particular, ela especifica um bit programável que determina se será executado o mecanismo de desvio estático.
A unidade de inteiros (FIG 3.1) opera em paralelo com a unidade de ponto flutuante e incorpora os GRPs, usados para os cálculos de endereços para instruções de carga/armazenagem em ponto flutuante.
A arquitetura também oferece um modelo de memória em que as operações de carga e armazenagem podem ocorrer fora de ordem, reduzindo desta maneira, a latência de memória.
Para que isto seja possível, a arquitetura define um conjunto de instruções sincronizadas quando operações fortemente ordenadas são necessárias.
Como as operações de carga e armazenagem podem ocorrer fora de ordem, elas podem ser priorizadas. Como nos processadores 603e e MPC750, onde pode-se configurar de modo a dar certa prioridades a determinadas operações de armazenagem de cache para memória em relação a cargas e armazenagens convencionais.
A Arquitetura PowerPC define implementações de cache do tipo Harward - onde separa-se caches para dados e para instruções. Também oferece instruções de cache "touch" adicionais que podem ser usadas normalmente por um compilador. O compilador ao usar estas instruções disponibiliza dados para a cache de processador, antes que sejam solicitadas por um programa. Desta maneira quando a instrução precisar destes dados, não haverá a necessidade de esperar o acesso à memória.
Também é oferecido pela arquitetura outras maneiras de implementações de multiprocessador, como os aspectos de coerência. Como por exemplo, um par, definido pela arquitetura, de carga/armazenagem com instruções de reserva, usadas como primitivas como "test e set"(testar e ajustar), úteis em implementações do tipo multiprocessador.
Um fato interessante é que a arquitetura permite que o processador seja configurado de dois modos em relação a organização física dos bytes na memória. Pois uma questão que surge é como deve-se armazenar os dados mais significativos, se à direita ou à esquerda? A decisão é simples desde que não haja a preocupação em manter a compatibilidade - as duas opções são boas. Quando a compatibilidade precisa ser levada em conta, a decisão torna-se significativa.
Por isso existem dois modos na arquitetura que tornam isto possível, o little-endiam e o big-endian.
No modo big-endian o byte pode ser colocado na parte mais significativa e no modo little-endiam o byte pode ser colocado na parte menos significativa. A Arquitetura PowerPC, por default, é big-endian.
Este recurso é de importância fundamental para manter a compatibilidade entre os hardwares e softwares existentes. Um exemplo disso é que os sistemas PowerPC podem ser configurados de modo a suportar o Windows NT, que foi projetado para sistemas little-endiam.
3.1 Definição da Arquitetura PowerPC
A arquitetura define os seguintes aspectos do projeto do processador:
- Conjunto de instruções: A Arquitetura PowerPC define a funcionalidade, o tamanho das instruções, modos de endereçamento, codificação e outros aspectos do conjunto de instruções;
- Modelo de programação: Este modelo fornece ao programador um modelo consistente que garante ao programador a compatibilidade entre os processadores PowerPC. A arquitetura define o gerenciamento da memória, o tratamento de exceções, os registradores usados para a execução das instruções;
- Modelo de memória: define o tamanho de memória endereçável, como também como as conversões de endereço lógico em físicos são realizadas e quais são os mecanismos de procura e conversão de endereços.
- Modelo de exceção: define as exceções do PowerPC e as condições que a originam.
3.2 O Conjunto de Registradores PowerPC
A arquitetura PowerPC define operações entre registradores e registradores para maioria da instruções.
O modelo de programação incorpora 32 GRPs e 32 FPRs, registradores de uso específico (SPRs) e vários outros registradores. Da mesma maneira, cada implementação tem seu próprio conjunto de registradores de implementação de hardware (HID).
Os processadores PowerPC possuem dois níveis de privilégio. Todas as instruções e registradores definidos pela UISA são acessados pelo software no nível do usuário. A VEA proporciona acesso de leitura no nível usuário aos registradores de base de tempo. Todos os demais registradores, definidos pela OEA, são acessados somente pelo software de nível superior, normalmente usado por sistemas operacionais.
O conjunto de registradores de nível do usuário inclui o seguinte;
- Registradores que suportam operações de inteiros:
Registradores de Uso Geral;
Registradores de Exceção de Inteiros (XER- Integer Exception Register).
- Registradores que suportam operações em ponto flutuante:
Registradores de Ponto Flutuante (FPRs);
Registradores de Status e Controle de ponto flutuante (FPSCR - Floating Point Status e Control Register).
- Registradores que suportam operação de desvio:
Registrador de Condição (CR - Condition Register), este registrador é definido como um registrador de 32 bits tanto nas implementações de 32 e 64 bits. O CR indica o resultado de determinadas operações aritméticas para fornecer um mecanismo de teste de desvio. A Arquitetura PowerPC divide o CR em oito bits, CR0 a CR7, os bits do CR são interpretados por instruções de condição de desvio (branch condition);
Registrador de Ligação (LR - Link Register);
Registrador de Contagem (CTR - Count Register).
Os registradores que são acessados somente por software de nível superior são todos definidos pela OEA. São usados na configuração do sistema, tratamento de exceção e etc.
- Configuração e status do sistema:
Registrador do Estado de Máquina (MSR - Machine State Register);
- Registradores utilizados para tratamento de Exceção:
Registrador 0 de Salvamento/Restauração do Status da Máquina (SRR0 - Save/Restore Register 0);
Registrador 1 de Salvamento/Restauração do Status da Máquina (SRR1 - Save/Restore Register 1);
Registrador de endereço de dados (DAR - Data Address Register);
- Registradores utilizados para gerenciamento da memória:
Registradores de Segmento;
Registrador Descritor de Tabela 1 (SDR1 - Table Search Descriptor Register 1);
- Registradores utilizados para manutenção do tempo:
Registradores de Base de Tempo (TBU e TBL);
Registrador Decrementador (DEC - Decrementer Register);
- Registradores diversos:
SPRs Gerais (SPRG0 - SPRG3);
Registrador de Versão do Processador (PVR - Processor Version Register)
|
|
         |
|