You are on page 1of 14

Arquitetura PA-RISC

Daniel M. Aquino, Marcelo C. Perez , Thas A. B. Fernandes. Projeto de Sistemas Computacionais Prof. Rodolfo J. Azevedo. Universidade Estadual de Campinas - Novembro, 2004. {ra019157, ra016746, ra017410}@ic.unicamp.br

1 - Introduo:
Nos ltimos anos da dcada de 1970, os projetos de arquiteturas de processadores desenvolviam-se no rumo de aumentar a complexidade dos sistemas. Via-se ento arquiteturas possuidoras de grandes conjuntos de instrues, contendo muitas instrues especializadas e muito complexas, que visavam diminuir o chamado gap semntico, aquilo que a mquina podia realizar e aquilo que as linguagens de programao de alto nvel exigiam, e cuja implementao era muito simples com o emprego de interpretadores. Esses modelos de arquitetura ficaram conhecidos como CISC (Complex Instruction Set Computer). Essa filosofia de projeto, apesar de coerente no ponto de vista evolutivo, apresentava alguns inconvenientes. verificado que computadores de uso geral passam a maior parte do tempo executando instrues simples, como load, store ou branch. Instrues complexas levam a um aumento do overhead devido a decodificao de instrues, microcdigos, alm de forar um aumento no tamanho dos ciclos de clock, o que vem a prejudicar o desempenho do processador. Em 1980, dois pesquisadores da universidade de Berkley desenvolveram chips processadores VLSI que no usavam interpretao. Para designar esse conceito eles cunharam o termo RISC (Reduced Instruction Set Computer) e deram ao chip desenvolvido por eles nessa filosofia o nome RISC I. Esses processadores simples chamavam a ateno pelo pequeno nmero de instrues, em torno de 50. Esse nmero era bem menor que as 200 ou 300 instrues dos processadores CISC que lideravam o mercado. Foi nesse contexto que surgiu a arquitetura PA-RISC 1.0 (Precision Architecture RISC), concebida pela Hewlett-Packards para ser usada em trs de suas linhas de computadores: os mini-computadores comerciais HP3000, as estaes tcnicas e servidoras HP9000, e os controladores de tempo real HP1000. sobre essa arquitetura que ser falado nesse trabalho. Sero abordados os aspectos principais da arquitetura, seus princpios e peculiaridades. Como existem vrias verses da arquitetura PA-RISC, tivemos que optar por uma delas, e escolhemos a PA-RISC 1.1 por ser a que apresenta a maior famlia de processadores. Apesar dessa escolha, a grande maioria das informaes aqui expostas vlida para todas as verses. 1.1 - Princpios da Arquitetura PA-RISC A arquitetura PA-RISC uma extenso dos princpios da arquitetura RISC, muitos dos quais tornaram-se um padro de fato no projeto de processadores modernos. Dito isso, vamos examinar um conjunto de princpios de projeto, conhecido como princpios de projeto RISC, os quais so a base da arquitetura PA-RISC. Todas as instrues so diretamente executadas por hardware Todas as instrues das mquinas PA-RISC so executadas diretamente pelo hardware, o que dispensa a presena de um nvel de interpretao, e resulta em uma velocidade de execuo bastante rpida para a maioria das instrues. Maximizar a taxa qual as instrues so executadas Os computadores modernos utilizam muitos artifcios com o objetivo de maximizar a sua performance, buscando principalmente executar o mximo possvel de instrues por segundo. Considerando que a execuo de um grande nmero de instrues lentas em um curto intervalo de tempo s possvel se vrias instrues forem executadas ao mesmo tempo, o paralelismo visto como uma importante estratgia para a melhoria de performance.

As instrues precisam ser facilmente decodificadas A decodificao de instrues um fator crtico para a velocidade de execuo de instrues. Dessa forma, as mquinas PA-RISC possuem instrues as mais regulares possveis, com tamanho nico para todas elas e com o menor nmero de campos possvel, o que contribui para o processo de decodificao. Somente as instrues de load e store devem referenciar a memria Forar que os operandos para uma determinada operao venham de registradores e os resultados dessa retornem para registradores uma forma de facilitar a diviso de operaes em uma srie de passos. Dessa forma, em mquinas PA-RISC somente as instrues load e store podem acessar a memria, no havendo instrues computacionais que o faa. Com essa poltica de acesso a memria, o hardware de controle pode ser simplificado, a implementao de pipelines facilitada, assim como o tempo do ciclo do processador pode ser reduzido. 1.2 Organizao Geral dos Sistemas PA-RISC Um sistema PA-RISC tpico composto de elementos processadores, memria, adaptadores de Entrada/Sada e barramentos de interconexo entre esses elementos. A figura 1.1 mostra o esquema de um sistema PA-RISC com um mdulo processador, um mdulo de memria principal, um barramento central de alta velocidade, um conversor que serve de interface do barramento central para um barramento nativo de performance e custo menores, e dispositivos de E/S de alta velocidade, ligados ao barramento central, e de baixa velocidade, ligados ao barramento nativo.

Figura 1.1

2 - O Mdulo Processador
2.1 Estrutura Geral Os mdulos processadores das mquinas PA-RISC so projetados para apresentar uma alta performance em computao de resultados. A unidade central de processamento (UCP) em mquinas RISC inclui um conjunto registradores de propsito geral, um conjunto de registradores para endereamento e um conjunto de registradores de estado. A memria cache passou a ser includa como parte da UCP a partir do PA-7100LC. Em mquinas que suportam endereamento de memria virtual, um hardware TLB (Translation Lookaside Buffer) includo para efetuar a traduo entre endereos virtuais e absolutos. Nos mdulos de processamento PA-RISC v-se uma extensiva presena de unidades de funes especias, as SFUs (Special Function Units), e de coprocessadores, que juntos formam o chamado conjuto de processadores assistentes. Essas unidades de hardware dedicadas produzem um aumento significativo de performance quando executam alguns algoritmos especializados. A figura 2.1 mostra o esquema simplificado de um mdulo processador PA-RISC, apresentando a UCP, um mdulo SFU, memria cache, um mdulo TLB, e um coprocessador.

Figura 2.1 2.2 Fluxo de Execuo de Instrues Aps o PA-7100, todos os processadores PA-RISC apresentam pipeline e implementam execuo superescalar. As instrues seguem juntas pelo pipeline de execuo, o qual chamado de instruction bundling (do ingls, bundle significa pr alguma coisa em algum lugar rapidamente). A execuo superescalar nos processadores PA-RISC transparente para o software, sendo o resultado dessas independentes do fato de elas serem executadas como parte do bundle ou sozinhas. PA-8000: Execuo fora de Ordem

Com o advento da arquitetura PA-RISC 2.0, implementada primeiramente nas mquinas PA-8000 (em 1996), a arquitetura passou a apresentar um esquema ousado de execuo de instrues fora de ordem que leva a uma taxa de execuo prxima a quatro instrues por ciclo de clock. Para isso apresenta 10 unidades funcionais, que provem processamento auxiliar ao processador. Para manter essas unidades ocupadas, essas mquinas empregam um escalonamento de instrues a nvel de hardware, obtendo um paralelismo muito alto, diferentemente das implementaes anteriores que delegavam essa tarefa ao compilador. As mquinas PA-8000 possuem um IRB (Instruction Reorder Buffer) que examina as 56 instrues provavelmente mais prximas de serem executadas, para encontrar 4 delas que possam ser executadas imediatamente. A unidade de fetch de instrues carrega blocos de 4 instrues por ciclo de um I-cache externo, enviando-os para uma unidade de ordenao que alimenta o IRB. Esse por sua vez consiste de dois buffers de 28 slots: o buffer ALU, que guarda instrues destinadas as unidades aritmticas e lgicas, e o buffer de memria, que guarda instrues de load/store. Certos tipos de instrues, como o branch por exemplo, podem ser guardadas em qualquer um dos buffers. Cada um desses buffers pode enviar duas instrues para unidades funcionais por ciclo de clock. Uma vez executada, uma instruo retirada do IRB na ordem que aparece no programa. O processadores PA-8000 empregam renomeamento de registradores via 56 registradores extras (um para cada slot do IRB) e 64 registradores da arquitetura (32 inteiros e 32 de ponto flutuante). Isso possibilita a execuo especulativa (mas no a retirada) de muitas instrues, sem se corromper o estado do processador se a especulao quanto a execuo de uma determinada instruo estiver incorreta e tiver que ser desfeita. Esse esquema de execuo permite abrandar enormemente os efeitos de retardos em branchs (que sero vistos adiante nesse trabalho) e outras latncias. A figura 2.2 abaixo mostra o esquema da microarquitetura desse processador.

Fonte: Numerous function units and smart load/store processing make the PA-8000 the fastest RISC processor Pountain, Dick. In: Byte.com - Copyright 2004 CMP Media LLC. All rights reserved.

Figura 2.2 2.3 A Famlia de Processadores PA-RISC A tabela a seguir contm informaes importantes sobre os processadores da famlia PA-RISC. Nela discriminada a identificao do processador (CPU), a verso da arquitetura implementada, se ele de 32 ou 64 bits (ISA tamanho), a maior freqncia de clock atingida pelo processador (Clock Max.), o tamanho dos caches L1 (cache da primeira camada), o tamanho dos caches L2 (caches da segunda camada), o nmero de entradas no TLB, possibilidade de mltiplas CPUs simultneas (SMP: Symmetric Multiprocessing) e finalmente as unidades funcionais presentes, sendo INT ALU para nmeros inteiros; FP Unidade Para operaes com ponto flutuante e LS Pipelines para Load/Store.

CPU

Verso da Arquitetura
1.1a

ISA tamanho 32-bit

Clock max. 66MHz

PA-7000 PA-7100/ PA-7150 PA7100LC PA-7200 PA7300LC PA-8000

1.1b

32-bit 32-bit 32-bit

125MHz 100MHz 140MHz

1.1c

1.1d

L1 Caches max. 256KB I 256KB D off-chip 1MB I 2MB D off-chip 1KB I on-chip 2KB on-chip 64KB I 64KB D on-chip 1MB I 1MB D off-chip 2MB I 2MB D off-chip 512KB I 1MB D on-chip 512KB I 1MB D on-chip 768KB I 1.5MB D on-chip 1.5MB I 1.5MB D on-chip 8KB I 4KB D

L2 Caches max.

TLB 96 I 96 D

SMP

Unidades Funcionais 1 INT 1 INT 1 FP 2 INT 1 FP 2 INT 1 FP 2 INT 1 FP 4 INT 4 FP 2 L/S 4 INT 4 FP 2 L/S 4 INT 4 FP 2 L/S 4 INT 4 FP 2 L/S 4 INT 4 FP 2 L/S 8 INT 8 FP 4 L/S 1 INT 1 FP

No

120 2MB off-chip 1MB I 2MB D off-chip 8MB off-chip 64 120

Sim No Sim

1.1e

32-bit

180MHz

96

No

2.0

64-bit

230MHz

96

Sim

PA-8200

2.0

64-bit

300MHz

120

Sim

PA-8500

2.0

64-bit

440MHz

160

Sim

PA-8600

2.0

64-bit

550MHz

160

Sim

PA-8700

2.0

64-bit

875MHz

240 32MB off-chip

Sim

PA-8800

2.0 1.1

64-bit 32-bit

1GHz 60MHz

480 32 I 64 D

Sim No

Hitachi PA/50

Hitachi HARP-1

1.1

32-bit

150MHz

on-chip 8KB I 16KB D on-chip

512KB I 512KB D off-chip

128 I 128 D

No

1 INT 1 FP

Tabela 1

3 Organizao da Memria
O sistema de memria em mquinas PA-RISC apresenta uma hierarquia explicita visvel pelo software, e organizada da seguinte forma (do mais rpido para o mais lento): registradores da UCP, cache (quando implementado), memria principal e dispositivos de armazenamento de acesso direto, como os discos. 3.1 Sistema de Entrada/Sada Na arquitetura PA-RISC, os dispositivos de E/S so mapeados na memria, em pginas fsicas que no fazem parte da memria principal mas so endereadas da mesma maneira. A comunicao entre o processador e os mdulos de E/S pode ser feita atravs de instrues de load e store para endereos virtuais. 3.2 Endereamento de memria principal e dispositivos de E/S Mquinas PA-RISC 1.1 utilizam endereamento absoluto de memria principal de 32 bits, representando um inteiro sem sinal, cujo valor representa o endereo do primeiro (com o menor endereo) byte do operando ao qual ele faz referncia. Os endereos que referenciam a memria vo de 0x0000000 a 0xEFFFFFFF, e aqueles que referenciam dispositivos de E/S vo de 0xF0000000 a 0xFFFFFFFF. Esse formato de endereamento deixa disponvel um espao de endereamento de memria de 4 GBytes e um espao de endereamento de dispositivos de E/S de 256 MBytes. A figura 3.1 ilustra o relacionamento entre o espao de endereamento de E/S e o espao de endereamento de memria principal. As unidades de memria referenciveis na arquitetura PA-RISC so os bytes, as meia-palavras (halfwords) com dois bytes, as palavras (words) com 4 bytes e as palavras duplas (double words) com 8 bytes. Seguindo a lgica de endereamento, bytes podem aparecer em qualquer endereo, mas as meias palavras devem aparecer sempre em endereos pares, as palavras em endereos mltiplos de quatro e as palavras duplas em endereos mltiplos de oito. Se uma referncia a memria virtual violar essa regra, uma interrupo ocorre. Dispositivos de E/S podem ser referenciados como palavras, meias palavras e bytes.

Figura 3.1 3.3 Memria Virtual Nos processadores que suportam endereamento virtual, um hardware TLB (translation lookaside buffer) responsvel pela converso entre endereos virtuais e absolutos. O TLB contm informaes salvas sobre traduo de endereos para pginas virtuais acessadas recentemente, assim como informaes para determinar acessos vlidos a pginas de memria, assim como os tipos de acesso permitidos. A maioria dos processadores apresentam o hardware TLB dividido em dois mdulos principais, sendo um deles para lidar com endereos de instrues (ITLB) e outro para lidar com endereos de dados (DTLB). A arquitetura PA-RISC 1.1 descreve um sistema de memria virtual com endereamento de 48, 56 ou 64 bits. Os endereos provindos dos softwares so tratados como endereos lgicos e traduzidos, a nvel de pgina, para endereos absolutos pela TLB quando a memria referenciada. A memria virtual global organizada como um conjunto de espaos lineares de 4 GBytes de comprimento. Cada um desses possui um identificador (space ID) e dividido em pginas de tamanho fixo de 4 Kbytes. Cada objeto dentro do espao especificado por um offset de 32 bits. A concatenao do offset com o identificador de espao forma um endereo virtual completo. O offset de cada byte dentro de cada pgina especificado pelos 12 bits menos significativos do endereo virtual. A figura 3.2 ilustra essa estrutura de memria. Existe ainda a possibilidade de emulao de pginas maiores agrupando oito pginas juntas.

Figura 3.2 A traduo do endereo virtual para o endereo fsico feita atravs de uma busca por um registro no TLB que coincida com o nmero da pgina virtual em questo. Se o registro for encontrado, o nmero da pgina fsica (20 bits) fornecido pelo TLB concatenado com os 12 bits do offset do byte dentro da pgina, formando assim o endereo fsico absoluto de 32 bits. Caso esse registro no seja encontrado, ocorre um miss. Caso a implementao do processador disponha de um mdulo de hardware para tratar o miss, esse procura a traduo da pgina virtual para a pgina fsica na tabela de pginas, inserindo informaes da traduo e de campos de proteo no TLB. Caso essas informaes no sejam achadas na tabela de pginas, ocorre uma interrupo, e uma rotina de software faz a traduo em questo, insere as informaes sobre a traduo e sobre os campos de proteo no TLB, reiniciando em seguida a rotina interrompida. 3.4 Memria Cache A memria cache, quando implementada em mquinas PA-RISC, parte do processador. Essa guarda dados e instrues freqentemente acessados, no intuito de diminuir o acesso a memria principal, que mais custoso em termos temporais. O cache no necessita est sempre coerente com a memria e com os mdulos de E/S. Os dados devem ser trazidos para o cache somente como resultado de referncias feitas pela stream de instrues. tens podem ser explicitamente removidos do cache via software, sendo possvel dessa forma o controle via software de quais pores da memria esto presentes no cache. Os itens do cache podem ser removidos a qualquer momento via hardware.

4 Conjunto de Instrues
4.1 Formato geral das instrues Nas mquinas PA-RISC as instrues possuem sempre 32 bits. Os primeiros seis bits definem o opcode, podendo existir combinaes, dentre as 64 possveis, que resultam em operaes invlidas. Esse campo de seis bits geralmente seguido por dois campos de 5 bits, que definem os registradores fontes. Os registradores de destino no possuem uma localizao fixa na palavra de cada instruo. Dependendo do opcode, os demais bits da instruo so agrupados em campos que especificam valores imediatos, registradores de espao, extenses adicionais do opcode e condies. 4.2 Registradores Registradores de Uso Geral Trinta e dois registradores de 32 bits de propsito geral formam a fonte principal de dados para as operaes. Eles so numerados de GR0 a GR31, e esto disponveis para todos os programas em todos os nveis de privilgio. Apesar de serem denominados de propsito geral, existe uma conveno para a utilizao de alguns desses registradores, mostrada na tabela abaixo. Registradores GR0 GR1 GR2 Conveno de Uso Fonte do valor zero. Se usado como destino o resultado descartado. Destino da operao ADDIL (Add Immediate Left). Return Pointer (RP) aonde a instruo BranchAndLink (BL), usada para a chamada de procedimentos, guarda o endereo de retorno e aonde, consequentemente, a funo BranchVectored (BV), usada para retornar de procedimentos, pega o endereo de retorno. Quarto parmetro de uma chamada de procedimento. Terceiro parmetro de uma chamada de procedimento. Segundo parmetro de uma chamada de procedimento. Primeiro parmetro de uma chamada de procedimento. Resultado de funes. Em GR28 se for de 32 bits e em ambos se for de 64 bits. Recebe o offset do endereo da instruo alvo na ocorrncia de uma chamada de funo externa com BLE (Branch and Link External).

GR23 GR24 GR25 GR26 GR28 29 GR31

Registradores de Espao Outra categoria importante de registradores nas mquinas PA-RISC so os registradores de espao. Em sistemas que suportam memria virtual, oito registradores de espao esto disponveis, nomeados de SR0 a SR7. Esses contm identificadores de espao para endereamento virtual. As instrues especificam registradores de espao tanto diretamente na instruo como indiretamente atravs do contedo de registradores de propsito geral. Assim como os registradores de propsito geral, os registradores de espao possuem uma conveno de utilizao que mostrada na tabela abaixo. Registrador SR0 SR1 SR3 SR4 SR5 Conveno de Uso Endereo de retorno de chamadas inter-espaciais (inter-space) de procedimentos. Ponteiros para endereamento virtual. Podem ser acessados diretamente pela instruo. Aponta para o espao de endereamento de instruo e prov acesso para dados literais no segmento de cdigo atual. Aponta para um espao contendo dados privados do processo: pilha e heap.

SR6 SR7

Aponta para um espao contendo dados compartilhados por processos. Aponta para um espao contendo cdigo pblico, literais e dados do sistema operacional.

Como j mencionado acima, o espao de endereamento pode ser grandemente ampliado quando o identificador de espao combinado com um offset de 32 bits.

4.3 Instrues de Referncia a Memria As instrues de referncia a memria transferem dados entre os registradores de propsito geral e a memria principal. Instrues de Load e Store so as nicas que referenciam a memria. Os operandos requeridos para uma dada operao so primeiramente trazidos da memria para um registrador da CPU por uma instrues de Load. O resultado da operao explicitamente salvo na memria por uma instruo de Store. Existem dois modos de endereamento primrio nas mquinas PA-RISC para acesso a memria: o base-relativo e o indexado. Os campos de endereamento, portanto, devem possuir dois valores, um como sendo base (B) e outro como sendo o deslocamento relativo (D). O endereo final calculado como B + D. Referncias a memria podem ser especificadas tanto por endereos virtuais quanto por endereos absolutos. Segue abaixo como exemplo uma instruo de Load e uma instruo de Store: LDW-12(0,5),21 STH8,0(0,21) RISC: LDW deslocamento(espao_id, base), destino STH fonte, deslocamento(espao_id, base) Na figura 4.1 abaixo mostrada a estrutura em 32 bits de uma instruo geral de Load ou Store. Os 6 primeiros bits definem o opcode, seguido por um campo de 5 bits que define o registrador base. O campo nomeado t/r define o registrador fonte/destino da operao. O campo s o identificador de espao e o im14 o deslocamento. R21 := memria(R5-12) Memria(R21) := R8 Load Word Store Half-Word

fcil de observar que essas instrues seguem o formato geral das instrues de Load e Store PA-

4.4 Instrues Aritimticas e Lgicas As instrues lgicas e aritmticas da arquitetura PA-RISC compem um simples mas poderoso conjunto de funes. Alm das operaes lgicas/aritmticas usuais, esto presentes instrues de shift-andadd que so usadas na otimizao de operaes de multiplicao de nmeros inteiros; instrues de extrao e depsito para manipulao de bits; e uma gama de funes que do suporte para aritmtica com nmeros decimais. Aritmtica de mltipla-preciso executada com instrues com carry-sensitive. Operaes aritmticas mais complicadas so providas pelos compiladores atravs da execuo de uma seqncia de instrues mais simples. A estrutura geral dessas instrues apresenta um campo com 6 bits contendo o opcode da instruo, sendo esse seguido por dois campos de 5 bits, os quais podem apresentar uma das seguintes combinaes:

1. Dois registradores fontes; 2. Um registrador fonte e um destino; 3. Um registrador fonte e um operando imediato; 4. Um registrador destino e um operando imediato. Qualquer instruo lgica/aritmtica pode anular a instruo seguinte a ela, dadas as devidas condies. A maioria das instrues possuem um campo c (3 bits) e um campo f (1 bit) para codificar essas condies. Essas condies determinam se a instruo seguinte deve ser anulada baseadas no contedo dos operandos e na operao em questo. Multiplicao sem uma instruo de Multiplicao Uma peculiaridade bastante interessante dos processadores PA-RISC que esses no possuem um hardware para executar multiplicao e diviso de inteiros diretamente. A idia por trs disso que, levando em considerao que operaes de multiplicao correspondem a menos de 1% do total de instrues, evitar um aumento no tempo do ciclo bsico de clock causado pela complexidade dessas instrues algo bastante razovel. No projeto da arquitetura PA-RISC, a questo da multiplicao de inteiros foi tratada da mesma maneira como se costuma tratar problemas de performance em sistemas de bancos de dados. Foi feita uma anlise das caractersticas das operaes de multiplicaes em programas reais e se encontrou que 91% dessas usam um operando constante conhecido durante o processo de compilao, que esse tende a ser pequeno (assim como os operandos no constantes) e que os resultados obtidos so em sua maioria de 32 bits ao invs de 64 bits. Sabendo disso, os designers buscaram fazer com que os casos mais comuns fossem otimizados, mesmo que em detrimento dos menos comuns. Qualquer multiplicao pode ser convertida em uma srie de adies e multiplicaes menores. Por exemplo, 10 * x o mesmo que ((5 * x) * 2), ou mesmo ((4 * x) + x) * 2. Vejamos um exemplo numrico: 120 = 10 * 12 120 = (5 * 12) + (5 * 12) 120 = ((4 * 12) + 12) + ((4 * 12) + 12) Partindo dessa idia, viu-se que operaes de Shift e Add podem realizar qualquer operao de inteiros por uma constante. No PA-RISC essas instrues multiplicam qualquer registrador por 2, 4 ou 8 e somam a qualquer registrador em um ciclo de clock. Para se multiplicar um registrador por 10, por exemplo, usa-se apenas 2 instrues: SH2ADD x,x,x ADD x,x,x Shift-left x em dois bits (multiplica por 4), adiciona a x e guarda o resultado em x. Soma x a ele mesmo e guarda o resultado em x.

Os compiladores para as mquinas PA-RISC convertem qualquer multiplicao por inteiros constantes em uma srie de instrues ADD e SHIFT-ADD que podem ser realizadas em um nico ciclo de clock, fazendo com que essas multiplicaes possam ser executadas em quatro ciclos de clock ou menos. Quando nenhum dos operandos conhecido em tempo de compilao, tem-se uma multiplicao por varivel, operao essa tambm com otimizao baseada na anlise dos casos mais comuns. 4.5 Instrues de Entrada/Sada Para acessar os dipositivos de E/S, os programas devem proceder de maneira anloga a quando acessam a memria principal. Os sistema de E/S mapeado na memria, como j mencionado anteriormente, de forma que os dispositivos de E/S so mapeados em pginas fsicas, as quais no fazem parte da memria principal, mas que so endereadas da mesma forma. Dessa forma tem-se a mesma flexibilidade, segurana e mecanismos de proteo disponveis para a memria principal. 4.6 Instrues de Branch

O fluxo de execuo de instrues afetado por instrues de branch e por instrues que pulam a instruo seguinte (ver instrues aritmticas e lgicas). A condio resultante de uma operao pode ser diretamente utilizada para determinar a execuo do branch ou no. Branchs incondicionais e instrues de chamadas de procedimentos esto tambm disponveis. As instrues de Branch so classificadas em trs grupos principais: branchs incondicionais locais, branchs incondicionais externos e branchs condicionais locais. Dentro de cada uma dessas categorias existem subclassificaes baseadas em como o endereo de destino computado, se um endereo de retorno salvo ou no, e se pode ou no ocorrer mudanas de privilgio. Nem todas essas opes esto disponveis para todas as categorias. O Branch Retardado (Delayed Branching) da Arquitetura PA-RISC Uma das propostas fundamentais da arquitetura PA-RISC completar a execuo de pelo menos uma instruo til em cada ciclo de clock. Branchs so difceis de implementar em um nico ciclo de clock pois deve-se primeiramente computar o endereo de branch e em seguida ir a memria para pegar a instruo no endereo em questo. Como j mencionado enteriormente nesse trabalho, os processadores PA-RISC usam o sistema de pipeline, isto , possuem um pipeline de instrues que esto sendo preparadas para serem executadas enquanto a instruo atual o est sendo. Enquanto as instrues esto sendo executadas em seqncia, o hardware para determinar a prxima instruo a ser executada o faz diretamente. No entanto, quando um branch entra na jogada, no podemos ter a instruo seguinte a ele no pipeline porque no sabemos antecipadamente que instruo essa. Aparentemente a escolha passa a ter que estar entre executar o branch em dois ciclos de clock, ou alongar o ciclo de forma que se tenha tempo hbil para calcular o endereo de memria destino do branch. Nenhuma das duas muito atrativa. O que os projetistas da arquitetura PA-RISC fizeram, no entanto, altamente curioso. Os processadores simplesmente atrasam a execuo do branch por um ciclo de clock. Como resultado, uma instruo seguinte ao branch (localizada no slot de delay) executada antes que o controle seja passado para a instruo destino do branch. O compilador procura por uma instruo que possa ser executada durante a operao de branch, podendo assim ser colocada no slot de delay, sem que a lgica do programa seja alterada. Por exemplo: BL opencarton LDW 26 ... ;branch ;carrega palavra num registrador durante o delay

A instruo BL (branch) executada antes da instruo LDW, mas seu efeito s pronunciado um ciclo depois. A instruo LDW, que vem depois do BL, de fato executada durante a execuo do BL. Se o compilador no for capaz de achar uma instruo til para colocar no slot de delay, uma instruo No-Op utilizada. BL closecarton ; branch NOP ; cdigo 8000240, na verdade OR 0,0,0 Tratando a idia do atraso no branch com um nvel maior de abstrao, poderamos compar-lo a uma situao aonde, em ocasio de uma viagem, a mala arrumada durante o vo. Por exemplo, seguindo o fluxo de eventos abaixo: 1. 2. 3. 4. 5. 6. 7. Reservar o vo; Reservar o hotel; Reservar o carro para aluguel; Voar para o destino a. Arrumar a mala Retirar a bagagem Pegar o carro alugado Fazer check-in no hotel.

O retardo no branch no apenas uma curiosidade intelectual. Quando so marcados breakpoints para debugar programas para PA-RISC, deve-se lembrar que a instruo depois do branch ser executada antes do branch. Os processadores PA-RISC mais recentes so ainda mais radicais. Eles especulam sobre instrues que possivelmente viro a ser executadas e as executam, fora de seqncia, desfazendo aquelas que apresentarem conflitos (ver fluxo de execuo de instrues). 4.7 Instrues Aritimticas para Ponto Flutuante As instrues para ponto flutuante suportam as operaes definidas no modelo IEEE de adio, subtrao, multiplicao, diviso, raiz quadrada, converso e arredondamento para inteiro. Elas so executadas por um hardware especial denominado FPC (Floating-point Coprocessor). 4.8 Instrues de Controle de Sistema As instrues de controle de sistema fornecem o suporte necessrio para a implementao de sistemas operacionais, provendo funcionalidades como: retorno de interrupes, quebra de instrues e anlise de permisso de acesso. Elas tambm controlam o PSW (Processor Status Word, um registrador que guarda o estado atual do processador), registradores especiais, caches e TLBs (Translation Lookaside Buffers).

5 Softwares para a arquitetura PA-RISC


Um grande nmero de sistemas operacionais est disponvel para mquinas PA-RISC, sendo todos eles sistemas Unix, ou baseados nesse. Uma vasta quantidade de sistemas alternativos aos comercias foram portados, ou mesmo desenvolvidos especificamente para as mquinas PA-RISC, to logo essas chegaram as universidades. A maioria deles, contudo, foi distribuda apenas em grupos bastante restritos, no chegando a estar disponvel para o pblico em geral. 5.1 - Sistemas Operacionais Comerciais As mquinas PA-RISC no dispem de muitos sistemas operacionais comerciais, sendo os dois principais o HP-UX e o NeXTSTEP. O HP-UX a implementao da HP do sistema Unix para computadores PA-RISC. Todas as mquinas dessa arquitetura produzidas pela HP suportam alguma verso do HP-UX. O NeXTSTEP foi introduzido no mercado em 1989 como uma implementao do Unix pela NeXT, se consagrando como um sistema operacional revolucionrio. Em 1994 a verso 3.3 foi lanada, estando essa disponvel para algumas mquinas RISC, entre elas as baseadas na arquitetura PA-RISC 1.1. 5.2 - Sistemas Operacionais de Cdigo Aberto Diversos sistemas operacionais abertos baseados em Unix esto disponveis para mquinas PARISC, incluindo OpenBSD, NetBSD e Linux. O Linux comeou a ser portado para mquinas PA-RISC em novembro de 1998 com o surgimento do projeto PA-RISC Linux executado pelo grupo The Puffin Group. Em maro de 1999 a HP comeou a fornecer mquinas e uma documentao mais completa para o grupo. Com esse apoio formal, a HP fez com que o grupo tivesse sucesso em portar o Linux para mquinas PA-RISC modernas. Hoje em dia o sistema PARISC-Linux para suportam uma vasta gama de mquinas HP PA-RISC mais recentes, como as A180, B180 e os sistemas PA 2.0 de 64 bits. No final de 1998 o OpenBSD passou a estar disponvel para a arquitetura PA-RISC. O enfoque inicial foi dado para as estaes de trabalho HP 9000/700, baseadas nos processadores PA-7x00 de 32 bits. Logo implementaes foram disponibilizadas para os servidores PA 800. Hoje em dia h suporte para a maioria das mquinas de 32 bits e para algumas de 64 bits que podem rodar em modo 32 bits.

O NetBSD est disponvel para uma vasta gama de mquinas PA-RISC de 32 bits, resultado de um trabalho realizado em 2002 que se baseou no kernel OpenBSD/hppa para portar esse sistema operacional para mquinas HP PA-RISC. O suporte para mquinas recentes ainda escasso.

6 - Concluso
A arquitetura PA-RISC caracteriza-se por sua estrutura dinmica, simples, objetiva e de grande velocidade. Trabalhando com um conjunto de instrues curtas e simples, consegue alcanar grande performance, que faz com que suas aplicaes tenham grande potencial em Sistemas de Rede, Internet e Bancos de Dados. Mas toda arquitetura tem suas vantagens e desvantagens. Se de um lado, esta arquitetura apresenta tantas qualidades, ela pode tambm se transformar num sistema de baixa performance se no for projetado de forma correta. Seus cdigos tm de ser bem construdos e bem codificados para que se tenha alto desempenho.

7 Referncias
1. 2. 3. 4. 5. PA-RISC 1.1 Architecture and Instruction Set Reference Manual, Third Edition Hewlett Packard. A. S. Tanembaum. Organizao Estruturada de Computadores, IV Edio. LTC Livros Tcnicos e Cientficos Editora. D. Pountain. Numerous function units and smart load/store processing make the PA-8000 the fastest RISC processor. In: http://www.byte.com. P. Weissmann. PA-RISC Hardware. In: The OpenPA Project (http://www.openpa.net/). The HP Server Encyclopedia - Robelle Solutions Technology Inc. Captulo 1: PA-RISC Architecture from HP.

You might also like