Vous êtes sur la page 1sur 17

Universidade Estadual de Maring

Centro de Tecnologia
Departamento de Informtica

ESTUDO SOBRE A ARQUITETURA


RISC
Carlos Sica, 1999

1. Arquitetura RISC (Reduced Instruction Set Computing)


1.1. Histrico
Inicialmente os computadores tinham poucas instrues e um ou dois modos de
endereamento
Num segundo passo, surgiram os computadores microprogramados, com um conjunto de
instrues extremamente complexo no nvel de mquina, essa linguagem de mquina era
interpretada por microprograma que ficam em ROM, o que implica em no modificar,
apesar de ser um programa. Esta tecnologia levou a criao de computadores (ex. VAX)
com 200 instrues e 12 modos de endereamento.
A linguagem de alto nvel comeou a predominar e a distncia semntica (semantic gap)
complicou a construo de compiladores. Instrues de alto nvel do tipo: if, while, case,
etc., devem ser traduzidas para instrues de baixo nvel tipo: mov, add e jump. A soluo
para reduzir esta distncia foi elevar o nvel da linguagem de mquina, o que era analisado
positivamente por alguns autores, que desejavam instrues de mquina com mais campos
e menos registradores.
Tambm, em outros tempos, a velocidade da RAM era muito mais baixa que a da CPU,
alm disso, 10 vezes mais baixa que a ROM, o que criou o desejo de que todos as
instrues fossem resolvidas em microcdigos ao invs de programao normal.
1.2. Regras
Sacrifique tudo para reduzir o tempo de ciclo da via de dados.
Microcdigo no mgico.

1.3. Filosofia bsica


1. Analisar as aplicaes para encontrar as operaes chave e elaborar uma mquina
tima para as realizadas pelos programas alvo. Segundo Tanenbaum - 1992, quase
50% das instrues de um programa so comandos de atribuio, 23% de comandos
de seleo, 15% de chamadas funes, 6% de laos de repetio e, 10%, de outros
comandos.
2. Projetar uma via de dados que seja tima para as operaes chave. Este o corao
de uma mquina RISC. Composto pelos registradores, pela ULA e pelos barramento
internos que os conectam. Em um nico ciclo, os operandos devem ser lidos dos
registradores, operados pela ULA e o resultado armazenado em um registrador.
Operando1
Resultado
Operando2

3. Projetar as instrues que executem as operaes chaves, estas devem utilizar de


forma tima as vias de dados, ou seja, cada instruo deve utilizar um nico ciclo da
via de dados.
4. Adicionar novas instrues somente se elas no diminurem a velocidades da
mquina
5. Repetir este processo para outros recursos
1.4. Instrues por ciclo de via de dados
A caracterstica mais importante de uma mquina RISC que as instrues so
completadas em um nico ciclo de via de dados. Se isso no ocorre, ela no pode fazer
parte do conjunto de instrues. Isto acarreta em no ser possvel ter instrues como de
multiplicao, o que resolvido por uma srie de operaes de soma e deslocamento.
Um instruo RISC muito parecida com uma microinstruo. Uma operao de alto nvel
precisa de muitas instrues para ser completada, por outro lado, uma instruo CISC pode
levar, muitos ciclos para ser completada devido a interpretao pelo microprograma.
1.5. Registradores
Os compiladores escritos para mquinas RISC fazem uso intenso de registradores, com
inteno de reduzir o trfego na via de dados em comunicao com a memria.
Um processador RISC no tendo microcdigo, no ocupa rea de memria para tal tipo de
operao, portanto, pode construir um grande nmero de registradores utilizando esse
espao.
1.5.1. Organizao dos registradores
Os registradores so organizados na forma de janelas sobrepostas. Apesar da CPU possuir
muitos registradores, em mdia 512, nesta tcnica apenas um conjunto de registadores, em
geral de 32 registradores de 32 bits, visvel para o programa a cada momento. Este
conjunto ainda dividido em subconjuntos conforme mostra a figura abaixo.
R0..R7

32 bits
Variveis globais e ponteiros

R8..R15

Parmetros de entrada

R16..R23

Variveis locais

R24..R31

Parmetros de sada

Utilizados por todos os procedimentos, o


compilador decide o que colocar aqui.
Evita o uso de pilha na memria, que utilizada
apenas em caso de exceder 8 parmetros.
Em geral 8 variveis so suficientes para um
procedimento, excesso vai na pilha.
Parmetros para os procedimentos chamados
(entrada para eles).

Por este formato, facilmente podemos concluir que os registradores de variveis globais
podem ser os mesmos para todos os procedimentos, assim, no h necessidade de se ter
fisicamente um conjunto para cada.

Os parmetros de sada, que so entradas para o procedimento chamado, tambm podem


ser sobrepostos economizando espao.
ProcA
Globais
Entrada
Locais
Sada

ProcB
Globais
Entrada
Locais
Sada

ProcC
Globais

Entrada
Locais
Sada

ProcD
Globais

Entrada
Locais
Sada

Quando o procedimento A chama o procedimento B passando parmetros para ele, a rea


comum, este subconjunto de registradores so sobrepostos.
1.5.2. Estudo comparativo: REGISTRADORES x CACHE
Na arquitetura RISC, os registradores so organizados por janelas sobrepostas, e servem
para armazenar as variveis e parmetros que so acessadas mais rapidamente. Esta
filosofia coincide com a filosofia da memria cache utilizada pela maioria das arquiteturas
conhecidas atualmente.
1.5.2.1.
Variveis locais
No RISC todas as variveis locais, com as excees discutidas no item 1.5.1, so
armazenadas em registradores. J, no caso da cache, isto feito apenas com as variveis
mais recentemente utilizadas.
A vantagem da cache aparece quando se discute a transferncia de funes ou trechos de
programas para ela, o que seria impossvel para os registradores. Porm, uma desvantagem
aparece justamente neste ponto, pois, a transferncia feita por blocos e, quando se trata de
variveis, algumas que so carregadas na chache so sero utilizadas.
1.5.2.2.
Variveis globais
Semelhante tcnica anterior. Estudos mostram que existe um bom nmero de variveis
globais, porm, nem todos so fortemente utilizadas. A cache, como guarda as mais
recentemente utilizadas, com o tempo, ter a vantagem de guardar apenas aquelas mais
necessrias.
1.5.2.3.
Endereamento de memria
No caso de procedimentos ou funes, nos registradores, os dados so movimentados entre
eles e a memria com baixa freqncia e, como a cache, em geral pequena e de uso geral,
outras informaes podem sobrepor os blocos j carregados, incorrendo no atraso de
execuo.
Para um registrador ser acessado basta conhecer o seu nmero e o da janela. Atividade
simples e rpida. Porm, para acessar a memria cache, um endereo completo deve ser
calculado e a complexidade deste clculo diretamente proporcional complexidade do

modo de endereamento e, sabemos que na arquitetura CISC, isto pode ser muito
complexo. A cache realmente to rpida quanto um registrador, porm, o acesso a ela
demasiadamente lento.
1.6. Acesso memria
impossvel acessar a memria em um nico ciclo. Neste caso a arquitetura RISC tem que
abrir mo da regra bsica e aceitar pelo menos duas instrues maiores: leitura e escrita na
memria.
Instrues comuns continuam tendo apenas registradores como operandos, o que limita os
modos de endereamento, excluindo por exemplo o direto, o indexado e o indireto.
Assim, apenas duas instrues estabelecem a comunicao da CPU com a memria, ainda
assim, devem utilizar registradores especficos.
H que se analisar tambm a questo de instrues como as necessrias para trabalhar com
memria virtual, multiprocessamento e assim por diante. Talvez estas tenham sido o grande
problema de se manter a ideologia da arquitetura RISC proposta, ento o conjunto foi
incrementado com novas instrues para executar tais tarefas.
1.7. Pipelining
Pensemos no seguinte exemplo: um homem sozinho assenta os azulejos de uma cozinha.
Ele precisa buscar cada pea na pilha, acomodar a massa, colocar o ladrilho. Se ele utilizar
os servios de um ajudante, pode eliminar a tarefa de buscar os azulejos e se concentrar nop
assentamento. Simples, duas pessoas trabalhando termina o servio mais rpido.
A tcnica do pipelining muito semelhante ao exemplo acima e tambm uma linha de
montagem de carros. Cada funcionrio faz sua tarefa e no final o carro est pronto mais
rpido que se cada pessoa montasse um deles.
Uma CPU pipelined deve permitir a execuo total da instruo por estgios, por exemplo,
busca da instruo na memria; execuo da instruo e referncias memria (quando
houver). Se utilizando esta tcnica uma instruo for iniciada a cada ciclo, mesmo que ela
demore mais de uma para ser finalizada, em mdia a regra estaria cumprida. Em cinco
ciclos, cinco instrues foram iniciadas.
Busca da instruo
Execuo da instruo
Referncia a memria

1
A

2
B
A

3
C
B

4
D
C
B

5
E
D

A instruo A buscada no primeiro ciclo e executada no segundo. J a instruo B utiliza


dois ciclos para terminar sua operao, porm, no interfere na busca e execuo da
instruo C, e mais, se a instruo C no utilizar o registrador que est sendo atualizado
pela instruo C, ela pode terminar sua operao sem problemas e a mquina continua
trabalhando em velocidade total.
Caso isto no acontea, necessrio inserir uma instruo NOP para esperar o trmino
daquela instruo de dois ciclos, o que, naturalmente atrasa o processamento geral.

Busca da instruo
Execuo da instruo
Referncia a memria

1
A

2
B
A

3
C
B

4
NOP
NOP

5
D
C

Para amenizar este tipo de problema, e muitas vezes realmente solucion-lo, o compilador
deve ser bom o suficiente para garantir que a prxima instruo, no vai utilizar o dado que
est sendo trazido da memria. Isto pode ser feito com uma instruo que no seja a que
esteja na seqncia escrita pelo programador. O compilador deve organizar a execuo das
instrues visando o resultado final, tapando os "buracos" que surgirem por execuo de
instrues de mais de um ciclo, com "coisas teis" ao nves de NOPS's.
Outras instrues alm da que acessam a memria podem atrapalhar o processamento. Um
JUMP condicional, onde o compilador no pode prever o resultado, obriga algumas vezes o
esvaziamento do pipeline para executar o desvio.
Nestes casos as tcnicas utilizadas se chamam, repectivamente, carga atrasada e desvio
atrasado, ambas resolvidas pelo compilador.
1.8. Ausncia do microcdigo
As instrues geradas por um compilador para uma mquina RISC, executam diretamente
no hardware. A eliminao do nvel de interpretao, o fato que influencia diretamente na
velocidade do computador.
Um programa compilado para CISC tem menos instrues assembly que para um RISC, o
que vantajoso na economia de memria, porm, no na velocidade de execuo.
1.9. Formato das instrues
Como as instrues so decodificadas pelo hardware a necessidade de se criar um formato
fixo para elas se torna claro. Cada bit que forma uma instruo entra diretamente no
decodificar ou at mesmo em outras partes do hardware.
opcode

c destino fonte

offset

Neste exemplo o mnemnico composto pelo cdigo de operao, um sinalizador para


instrues condicionais, um campo para enderear o registrador destino e um para o fonte,
outro sinalizador para o modo de endereamento imediato ou no e finalmente o offset do
endereo do operando.
1.10.

Modos de endereamento

1.10.1.
Modo imediato (i = 1)
Para instrues com um operando que faz parte da instruo, o segundo operando uma
constante descrita no offset.

1.10.2.
Modo direto
Para operandos em registrador (i = 0), o primeiro operando seria o contedo do registrador
fonte e, o segundo, endereado pelos bits menos significativos do offset, consequentemente,
o resultado armazenado no registrador destino.
1.10.3.
Modo indexado
Para instrues de leitura e escrita na memria, o endereo seria composto pelo offset
somado ao registrador fonte, criando o modo indexado.
1.10.4.
Modo indireto por registrador
O decodificador de instrues quando encontra o offset igual a zero, traduz o endereo
como indireto por registrador, pois, o endereo do operando seria o contido no registrador
fonte.
1.10.5.
Outros modos
O compilador pode criar outros tipos de modos, traduzindo-os para os bsicos, por
exemplo, no projeto RISCII, criou-se um JUMP condicional relativo ao ponteiro de
instrues ou contador de programa (IP ou PC), concatenando os trs campos de baixa
ordema para formar um offset de 19 bits com sinal, podendo assim, se deslocar para cima
ou para baixo.
1.10.6.
Concluso
O crescimento do nmero de modos de endereamento em uma mquina, implica na perda
de velocidade e tambm no aumento da complexidade. Porm, apesar do nome, uma
mquina RISC poderia ter muitas instrues, contanto que elas executassem em um nico
ciclo de via de dados e tivessem o formato fixo. O comprometimento nesse caso, seria o de
construir uma unidade de decodificao bastante complexa, j que ele cresceria
exponencialmente com o nmero de instrues.

2. Compiladores
2.1. Compiladores x hardware
Todo esse estudo conduz para um hardware mais simples quanto possvel, no necessrio
muito esforo para concluir que a complexidade do compilador cresce proporcionalmente
simplicidade do conjunto de instrues, que no RISC esta diretamente ligado ao hardware.
Instruo em alto nvel

compilador

Cdigo de mquina

Quando chega-se justamente ao ponto mais controverso no debate entre CISC x RISC, o
desenho do compilador.
Os defensores do CISC alegam que a distncia semntica conduz a ineficincia de
execuo, programas excessivamente grandes e compiladores complexos e argumentam
que a disponibilidade de instrues de alto nvel e a habilidade de especificar mltiplos

operandos baseados na memria, simplifica o desenho do compilador. Naturalmente, isto


leva diretamente para um conjunto de instrues grande, dezenas de modos de
endereamento e muitas declaraes da linguagem de alto nvel implementadas em
firmware.
Surgem divergncias entre as estruturas estudadas e as implementadas, como exemplo
pode-se citar a instruo LOOP utilizada j no PC-xt para controle de lao de repetio.
Esta instruo repete um bloco de instrues por um nmero fixo de vezes como o "parafaa", mas faz isto, pelo menos uma vez como o "repita-at".
mov cx, 32
Aqui:

;estabelece o critrio de parada

....
....
loop aqui

;decrementa cx, e desvia para aqui se cx > 0

Este bloco poderia facilmente ser traduzido com a utilizao de decrementos, comparao e
desvio condicional, porm, nota-se aqui que a arquitetura CISC no economiza instrues.
Fica ento a pergunta: qual a arquitetura que melhora o desenho do compilador? Sabendose que este compilador deve ser um compilador otimizador, ir produzir cdigos de
execuo mais rpidos. Uma vez que as instrues devem ocupar um ciclo em mdia, o
compilador deve reorganizar a seqncia das instrues, de forma a tapar os "buracos"
gerados pelas de maior tempo.
2.2. Otimizao dos compiladores
Um programa escrito em linguagem de alto nvel, no explicita os registradores que sero
utilizados, ao invs disso, faz referncias simblicas aos valores atravs das variveis
criadas. Alm disso, no explicita se o valor associado varivel ser guardado num
registrador ou na memria. Como sabe-se que os registradores so mais rpidos que a
memria, desejvel que sejam largamente utilizados.
Cada varivel passvel de ser guardada em um registrador, recebe um tratamento especial.
O compilador pode criar um nmero ilimitado "registradores virtuais" para armazen-las e,
a partir da, compartilhar o registrador real de acordo com alguma tcnica especfica. Claro,
isto feito dentro da limitao da CPU e muitas variveis vo obrigatoriamente para a
memria.
Os compiladores mantm esta filosofia de forma transparente para o programador, mas
alguns, como o caso da linguagem C, oferecem a possibilidade do programador decidir
quais variveis devem, sempre que possvel, serem armazenadas em registradores, para
tanto, ao declarar uma varivel, ao invs de escrever: int soma; escreve-se: register
int soma; obrigando ento, o compilador a priorizar os registradores para aquela varivel.
As arquiteturas RISC utilizam, freqentemente, a tcnica dos grafos coloridos para
otimizar o uso de registradores pelas variveis. Est tcnica no discutida nesta
publicao.

3. Estudo comparativo: RISC x CISC


3.1. Histrico
A tecnologia RISC foi desenvolvida pela IBM nos anos 70 e o primeiro chip surgiu em
1980. Sua proposta baseou-se em um conjunto reduzido de instrues, sendo definidas
apenas as mais freqentemente utilizadas e se evitando o uso de microcdigos. As
instrues tambm seriam simplificadas, trabalhando com apenas um operando.
As operaes enfatizavam o uso de registradores, sendo o acesso memria limitado a
instrues tipo leitura e escrita na memria (load/store). Assim, o processador gastaria
apenas um ciclo por instruo. Porm, o que sucedeu no foi to simples assim, pois havia
muita dificuldade em se escrever programas complexos utilizando um conjunto muito
reduzido de instrues. Ento este conjunto foi incrementado com novas instrues, como
as necessrias para trabalhar com memria virtual, multiprocessamento e assim por diante.
A tecnologia RISC comeou a ser promovida no mercado com o surgimento das estaes
de trabalho cientficas, pois sua atividade bsica "CPU bound". Os chips CISC (Complex
Instrution Set Computing) de aplicao mais geral - tpicas de ambientes comerciais - no
ofereciam a velocidade necessria aos trabalhos com extensas manipulao de nmeros e
visualizao grfica. Em ambiente comercial, por seu lado, necessrio considerar todo o
conjunto que compe o sistema, como CPU, memria, velocidade de discos, sistema
operacional e software de aplicao.
Uma comparao levando em conta apenas o processador e sua tcnica, no correta.
Muitos dos fatores que aumentam a velocidade de um processador RISC, no so inerentes
a esta tecnologia (como uso de cache, pipeline de instrues e grande nmero de
registradores na CPU), sendo que estes recursos esto disponveis a qualquer projeto de
computador, sendo usados tambm em mquinas CISC.
A anlise dos processadores do mercado mostra que nos aspectos de mips ou operaes
aritmticas com nmeros inteiros (SPEC Integer), o desempenho dos chips RISC e CISC
so similares; em ponto flutuante (SPEC Floating Point) os RISC tendem a apresentar
resultados melhores, embora o Pentium lhes seja equivalente.
3.2. A evoluo da tecnologia conduz para a igualdade
Cada vez mais as tecnologias RISC e CISC esto se aproximando: processadores RISC
esto aumentando seu conjunto de instrues e os CISC esto adotando tcnicas
originalmente implementadas nos RISC. Por exemplo, o nmero de ciclos por instruo
bastante similar em ambos. O resultado prtico que o "path length" destes processadores
para executar uma tarefa praticamente igual.
As razes para isso so simples. Em aplicaes comerciais, a CPU trabalha cerca de 30%
do tempo com instrues de movimentao de cadeias de caracteres de um lugar a outro na
memria; em programao Cobol interessante dispor de instrues de aritmtica decimal
e trabalhar com operandos "no alinhados". Desta forma, ser necessrio adicionar-se
instrues tipicamente CISC para trabalhar adequadamente com estas tarefas.

O Pentium, segundo a Intel, utiliza tecnologia CRISC, acoplamento das duas tcnicas. Na
verdade algumas mquinas RISC utilizam poucas de suas tcnicas bsicas, ao mesmo
tempo que implementam conceitos tpicos dos projetos CISC; entretanto, adotam o jargo
RISC por questo de marketing.
Um ambiente comercial caracterizado por processamento transacional, com muita
manipulao de cadeias e inteiros alm de alto fluxo de entrada/sada. J o cientfico se
caracteriza por grande nmero de instrues de ponto flutuante. A concluso lgica que as
mquinas dos dois tipos tem diferentes concepes para diferentes utilizaes.
3.3. Oito diferenas crticas
1
2
3
4
5
6
7
8

Instrues simples levando um ciclo


Apenas LOAD/STORE referenciam a memria
Altamente pipelined
Instrues executadas pelo hardware
Instrues com formato fixo
Poucas instrues e modos
A complexidade est no compilador
Mltiplos conjuntos de registradores

Instrues complexas levando mltiplos ciclos


Qualquer instruo pode referenciar a memria
No tem pipeline ou tem pouco
Instrues interpretadas pelo microprograma
Instrues com vrios formatos
Muitas instrues e modos de endereamento
A complexidade est no microprograma
Conjunto nico de registradores

4. Exerccios Resolvidos
i.

Historicamente, quais necessidades levaram a criao do RISC? e do CISC?

Os primeiros computadores digitais eram extremamente simples, possuam poucas


instrues e somente um ou dois modos de endereamento (detalhe: as instrues eram
executadas diretamente pelo hardware). A mudana veio com a introduo da srie
IBM360. Todos os modelos desta srie eram microprogramados.
Os microprogramas executados apresentavam um conjunto de instrues no nvel de
mquina, chamada de linguagem de mquina (exemplo: ADD, MOVE, etc.). A grande
evoluo das linguagens de programao de alto nvel acarretou no problema da distncia
semntica (semantic gap) entre estas linguagens e a linguagem de mquina, o que tornou a
construo de compiladores uma tarefa bastante complexa.
Na tentativa de reduzir a distncia semntica, optou-se por elevar o nvel da linguagem de
mquina. Uma forma encontrada para realizar isto foi introduzir o conceito de microcdigo.
O microcdigo um software bastante primitivo, que controla diretamente os dispositivos
de hardware. Este software composto por um conjunto de microprogramas, usualmente
armazenado em ROM, mais rpida do que a RAM. Ele na verdade um interpretador que
busca as instrues de mquina na memria principal gerando um conjunto de sinais de
controle necessrios para a execuo de tais instrues pelo hardware. Para executar uma
instruo ADD, por exemplo, o microprograma especfico precisa determinar onde os
valores a serem adicionados esto armazenados, busc-los na memria, adicion-los e
armazenar o resultado em um registrador ou na prpria memria. Desta forma, foram
adicionadas novas instrues na linguagem de mquina, assim como outros modos de
endereamento.

medida que o nvel da linguagem de mquina eleva-se (oferece mais instrues


complexas), o seu interpretador torna-se maior, mais complexo e mais lento e, um maior
nmero de instrues, implica em um maior tempo gasto na decodificao dos opcodes.
Com o aumento da velocidade da RAM, diminuindo a diferena com a velocidade da
ROM, e a crescente complexidade do microcdigo (devido grande quantidade de
microprogramas acrescentados) o desempenho desta arquitetura j no era to
extraordinrio. Alm disso, apesar da arquitetura CISC oferecer um grande conjunto de
instrues e vrios modos de endereamento, apenas uma pequena poro destas instrues
so realmente utilizados. O restante so utilizados eventualmente. Deste modo, constatouse que a velocidade da mquina era abreviada devido adio de instrues e modos que
raramente so utilizados.
A partir disto, percebeu-se que era possvel aumentar a velocidade de um computador
eliminando-se o interpretador de instrues complexas, reduzindo o conjunto de instrues,
eliminado todas as instrues que no podem ser completadas em um nico ciclo da via de
dados, com exceo de LOAD/STORE. Os programas de usurios, desta forma, so
compilados para seqncias destas instrues e ento executadas diretamente pelo
hardware.
APLICATIVOS
S.0.
LINGUAGEM DE MQUINA
MICROCDIGO
DISPOSITIVOS FSICOS

ii.

Um sistema de computador que utiliza o conceito


de microcdigo. Este, serve de intermedirio entre
a linguagem de mquina e os dispositivos fsicos,
ou seja, serve como um interpretador.

Qual o nmero mximo de instrues que um processador deve ter para ser
considerado RISC?

No princpio, a base da arquitetura RISC pretendia que esta possibilitasse instrues


simples e que fossem as mais freqentemente utilizadas, construindo um conjunto
otimizado de instrues. Um aspecto importante era permitir a otimizao da
implementao de pipeline nesta arquitetura, no o nmero de instrues que ela
disponibilizaria. Algumas operaes exigem a implementao de operaes que no podem
ser feitas em um nico ciclo, exigindo que a arquitetura RISC tivesse ao menos algumas
instrues mais complexas, como por exemplo para lidar com gerenciamento de memria
virtual, multiprocessamento, etc. A partir da, vrias mquinas lanadas no mercado vm
apresentando nmero varivel de instrues, o que deu margem a vrias informaes
desencontradas sobre o que vem a ser uma mquina RISC e uma mquina CISC. Por
motivo de marketing muitas mquinas com caractersticas de funcionamento de arquiteturas
CISC so denominadas RISC pelo simples fato de apresentarem menos de 100 instrues.
O mximo que se pode conseguir, basear este nmero em mquinas conhecidas: a
Motorola 88000 apresenta 51 instrues, j a MIPS R4000 possui 94 instrues. Apesar de
ter sido cogitado no principio a criao de uma mquina com uma nica instruo
[FALTOU REFERNCIA], parece que seguimos o caminho contrrio, e as mquinas RISC
aumentam seu nmero de instrues a cada verso.
Segundo um popular jornal de computao [FALTOU REFERNCIA], processadores com
menos que 100 instrues so considerados RISC. Porm no existe nenhuma restrio
formal quanto ao nmero mximo de instrues de um processador RISC, desde que cada

instruo seja executada em um ciclo da via de dados. O nico problema real que a
complexidade do bloco decodificador, OP, cresce exponencialmente com o nmero de
instrues e assim consome proporcionalmente crescentes reas da pastilha.
iii.

Discorra sobre papel do compilador para um RISC (pode usar comparaes


como o CISC)

FILOSOFIA DO PROJETO RISC: Deixar tanto trabalho quanto for possvel a cargo do
compilador.
De certa forma, o trabalho para se alcanar os objetivos dos projetistas ao criar arquitetura
RISC, simplificar o conjunto de instrues e otimizar o funcionamento do processador,
recaiu sobre o compilador. Pelo fato de no mais se utilizar microcdigo para fazer a
interpretao da linguagem de mquina o trabalho do compilador se tornou um pouco mais
complicado. Agora, alm de gerar microcdigo para programas de usurios, ele deve
administrar toda a seqncia de pipeline do programa, e garantir seu funcionamento
otimizado, de forma a no permitir ciclos vazios, alm de possibilitar que operaes com
dados da memria possam ser feitas em mdia em um ciclo de via de dados. Logo, a tarefa
executada pelo microcdigo da arquitetura CISC passa a ser do compilador.
A tecnologia do compilador um fator crtico do projeto RISC. Compiladores otimizados
devem transportar toda a complexidade do hardware para a fase de compilao.
Para manter a simplicidade do hardware, o compilador projetado para lidar com
caractersticas intrincadas da arquitetura RISC, como cargas, armazenamento e desvios
atrasados, que aumentam consideravelmente a complexidade do compilador.
O compilador deve fazer uso intensivo de registradores para reduzir o trfego de memria,
para evitar instrues que demoram mais do que um ciclo da via de dados para serem
completados. Consequentemente, essencial que o compilador RISC seja capaz de otimizar
da melhor maneira possvel o uso de registradores, levando em considerao que as
instrues comuns no podem utilizar operandos de memria. Para viabilizar esta
otimizao so utilizados algoritmos de alocao de registradores sofisticados. Apesar
destes algoritmos melhorarem o cdigo colocando mais variveis em um nmero limitado
de registradores, eles tambm aumentam a complexidade do compilador.
Alm disso, o compilador RISC deve, sempre, buscar produzir um cdigo correto e
eficiente, tentando contornar os problemas acarretados pelos saltos atrasados, por exemplo.
A partir destes fatos, constata-se que a arquitetura RISC tambm possui alguns problemas,
assim como a arquitetura CISC, guardadas as devidas propores.
iv.

Descreva a passagem de parmetros entre procedimentos em uma mquina:

a)CISC
A maioria dos procedimentos recebem parmetros fornecidos pelo procedimento que
chama. Nas mquinas CISC, estes parmetros so empilhados um de cada vez, pelo
processo que chama, no incio da execuo da instruo CALL. O procedimento chamado,
busca na pilha os parmetros esperados. Este processo se baseia 100% na comunicao com
a memria.

b)RISC
O objetivo de toda mquina RISC executar uma instruo por ciclo, em mdia. Uma vez
que LOAD e STORE requerem, normalmente, dois ciclos, quanto menos instrues deste
tipo forem utilizados, maior ser a eficincia da mquina.
Grande parte do trfego de memria total est relacionada a chamadas de procedimentos.
Parmetros tm que ser passados, registradores tm que ser salvos, e o endereo de retorno
tem que ser empilhado na chamada e desempilhado no retorno. Todas estas aes geram
alto trfego de memria.
Uma forma de eliminar parte deste trfego utilizar um mtodo chamado janelas
sobrepostas de registradores, adotado por algumas mquinas RISC. Quando janelas
sobrepostas so utilizadas, a CPU contm um grande nmero de registradores, mas em cada
momento somente um subconjunto deles, 32 registradores de 32 bits, visvel para um
programa. Este conjunto dividido em quatro grupos distintos com 8 registradores cada.

O primeiro grupo (R0 a R7) guarda variveis globais e ponteiros; esses so utilizados
por todos os procedimentos ao longo do programa, sendo da responsabilidade decidir o
que colocar em cada registrador.

O segundo grupo, R8 a R15, guarda os parmetros de entrada; evita o uso de pilha, que
utilizada somente se o nmero de parmetros exceder 8, neste caso, o ltimo
registrador contm o endereo da pilha onde se encontra o restante dos parmetros. No
colocar os parmetros na pilha elimina STOREs quando eles so passados e elimina
LOADs quando eles so acessados pelo procedimento chamado.

O terceiro grupo , R16 a R23, esto disponveis para as variveis locais, o excedente
tambm vai para a pilha.

O quarto grupo de registradores, R24 a R31, utilizado para passar os parmetros para
os procedimentos chamados, sendo a pilha utilizada somente na falta de registradores
para os parmetros.

Desta forma, quando um procedimento A chama um procedimento B, A deve passar


os parmetros para B, colocando-os nos registradores de parmetros de sada. Os
parmetros de entrada de B sero os parmetros de sada de A, sendo assim, os dois
conjuntos trabalham sobrepostos (janelas sobrepostas).
v.

Debata sobre: CACHE x REGISTRADORES

O conjunto de registradores, age com um pequeno e rpido buffer para o armazenamento de


um subconjunto de todas as variveis que provavelmente sero utilizadas. Deste ponto de
vista, o conjunto de registradores se comporta como uma memria cache, porm existem
diferenas entre estes meios de armazenamento.
A cache tem a vantagem de armazenar no somente dados, como tambm instrues
recentemente utilizadas, o que seria impossvel para os registradores. Alm disso ela no
possui uma diviso rgida como a imposta pelo mtodo de janelas sobrepostas.

No RISC todas as variveis locais e globais, so armazenadas em registradores. Estudos


mostram que existe um bom nmero de variveis globais, porm, nem todos so fortemente
utilizadas. A cache, como guarda as mais recentemente utilizadas, com o tempo, ter a
vantagem de guardar apenas aquelas mais necessrias. Constata-se, ento, que a cache
possui uma importante caracterstica de se adaptar ao padro de uso real, sendo
potencialmente eficiente. Porm, toda entrada de cache possui trs partes: o bit vlido, o tag
e o dado. Somente a ltima utilizada para armazenar dados, e as duas primeiras so uma
forma de overhead o que reduz a eficincia da mquina. Alm disso, um registrador ser
acessado basta conhecer o seu nmero e o da janela. Atividade simples e rpida. J o acesso
memria cache, uma tarefa complicada, pois so necessrios realizar clculos
relativamente complexos para encontrar o endereo. A cache realmente to rpida quanto
um registrador, porm, o acesso a ela demasiadamente lento.
REGISTRADORES

CACHE

VARIVEIS LOCAIS

Todas as variveis locais so Armazena as variveis mais


armazenadas
recentemente utilizadas

VARIVEIS GLOBAIS

Todas so armazenadas

ENDEREAMENTO DE
MEMRIA

Acesso direto a partir de seu Endereamento complexo que


nmero e o da janela
deve ser calculado

TRANSFERNCIA

Impossvel a transferncia de Em blocos e permite a


funes
ou
trechos
de transferencia de trechos de
programa
programas/funes

vi.

Armazena somente as mais


recentemente utilizada

Uma Mquina RISC pode (ou deve) ter CACHE?

Uma mquina RISC pode ter cache. Isto depender da aplicao para o qual a mquina
projetada. A cache oferece muitas caractersticas que podem ser benficas para um projeto
RISC, entre elas, a possibilidade de armazenamento de trechos de cdigo, que impossvel
para os registradores. Alm disso, os on-chip caches, que quando cronometrados se
apresentam to rpidos quanto o processador.
Conclui-se que a deciso correta, quanto a implementao ou no da memria cache, deve
ser baseada numa ponderao sobre todas caractersticas debatidas no item anterior.
vii.

Quais os modos de endereamento permitidos nas mquinas RISC?

Os modos de endereamento de mquinas RISC variam de mquina para mquina, dentre


as mquinas mais conhecidas existe uma variao de 1 a 4 modos de endereamento.
Entretanto, devido para no quebrar a regra primordial da arquitetura RISC: no utilizar
mais de um ciclo de via de dados, mquinas RISC s podem ter como operandos,
registradores, logo, elas no permitem modo de endereamento para endereamento direto,
endereamento indexado, ou endereamento indireto por registrador ou memria. Ou seja,
referencias memria devem ser feitas atravs de instrues especiais de LOAD e STORE
adicionadas arquitetura. Obviamente no possvel acessar memria em um nico

ciclo, porm, a tcnica de pipeline possibilita que um mtodo de execuo de instrues


permita que no total n instrues sejam executadas em n ciclos, mantendo a mdia de uma
instruo por ciclo de via de dados. O compilador do RISCII, entretanto trazia um JUMP
condicional relativo ao ponteiro de instrues ou contador de programa, concatenando os
trs campos de baixa ordem poderia-se formar um offset de 19 bits com sinal podendo ser
deslocado para cima ou para baixo.
viii.

Decodificar cada instruo o assembly da SPARC

a)
31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

1 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 1 1 1 1 0 1
rd

rs1

op

sisconst1a

Verificando o primeiro campo da instruo (da esquerda para direita), poderia-se dizer que
se trata de uma instruo para load ou store. Sendo o bit 13 igual a 1, sabemos que se trata
de uma instruo de store, entretanto, como o campo op (bits 19 a 24) armazena uma
seqncia de valores que no pertence a tabela de cdigos de operao de load e store,
descartada esta possibilidade. O valor do primeiro campo tambm poderia indicar que a
instruo seja uma instruo geral das mquinas SPARC, porm, o campo dos bits 19 a 24
tambm no fazem parte da tabela de instrues, podemos concluir que se trata de uma
instruo invlida.
b)
31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

0 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 1 1 0
Os dois primeiros bits da instruo com valores 0 e 1 indicam uma instruo call. No
existem demais exigncias para comprovao da instruo, os demais bits (0 a 29) formam
o endereo de desvio e, desta forma, esto disponveis para o contador do programa.
c)
31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1
Devido aos valores da seqncia de bits 22 a 24 no corresponderem a nenhum valor da
tabela de instrues de desvio condicional ou instrues sethi, descartou-se a possibilidade
de serem este tipo de instruo e, considerando a seqncia dos bits do campo op (22 a 24)
concluiu-se que se trata de uma instruo no implementada com cdigo de campo
correspondente a instrues ilegais.
d)
31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

1 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 0
A instruo acima corresponde a instruo de subtrao, caracterizado pelo valor 10 dos
primeiros campos e pela seqncia de bits do campo op (22 a 24) que correspondem a
instruo subcc. O campo rd (25 a 29) corresponde ao campo de registrador de destino, no
caso o %R19, o campo rs corresponde ao registrador origem (14 a 18), um segundo
operando origem pode ser um registrador (0 a 4) ou um valor constante (0 a 12). Na
instruo acima, trata-se de um valor constante no campo siconst (1FOA h).
e)
31

30

29

28

27

26

25

24

23

22

21

20

19

18

17

16

15

14

13

12

11

10

0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1 0 1 0 0 1 1 0 1 0 1 0
Esta outra instruo call, foi analisada da mesma forma que a instruo da letra b.
ix.
a)

Escreva o cdigo assembly SPARC para os seguintes mdulos


if (delta > 0)
z=0;
else
y=0;

.text
start: set delta, %r1
ld [%r1], %r2
set z, %r1
ld [%r1], %r3
set y, %r1
ld[%r1], %r4
cmp %r2, 0
bg cond
mov %r0, %r4
cond: mov %r0, %r3
b)

conta=0;
while (conta <0){
y=conta;
conta++;
}

! delta armazenado em %r2


! z armazenado em %r3
! y armazenado em %r4
! compara delta e 0
! se delta maior que zero desvia para cond
! y recebe 0
! instruo de desvio:

.text
start: set conta, %r0
ld [%r1], %r4
set y, %r0
ld [%r1], %r2
test:

mov %r0, %r4


cmp %r4, 0
bg nop
mov %r4, %r2
add %r4, 1, %r4
ba test

! conta armazenada em %r4


! y armazenado e %r2
! y=conta;
! compara conta e 0;

5. Bibliografia
TANENBAUM, A., Organizao e Arquitetura de computadores, Prentice Hall do Brasil,
1990
STALLINGS, W., Computer Organization and Architeture, Prentice Hall, 1996
5.1. Internet
http://minerva.ufpel.tche.br/~machado/risccisc/pagina.html
http://www.din.uem.br/sica/apostilas
http://www.sunworld.com/sunworldonline/swol-09-1999/swol-09-insidesolaris.html

Vous aimerez peut-être aussi