Agenda
•Máquinas RISC
PUCC
1
Gap Semântico
• Queda do custo do Hardware o custo relativo
do Software aumentou.
• SW é pouco confiável
• Resposta dos pesquisadores foi desenvolver
linguagens de programação mais poderosas
e complexas.
• Aumento da distância semântica entre
operações disponíveis em linguagens de alto
nível e aquelas disponibilizadas pelo
hardware dos computadores
PUCC
2
GAP Semântico
• Desenvolver arquiteturas que diminuíssem a
distância entre instruções de linguagem de
alto nível e instruções de máquina.
• Características dessa Arquitetura: grande
conjunto de instruções, vários modos de
endereçamento e implementação de diversos
comandos de linguagem de alto nível no
hardware da máquina.
PUCC
3
Características das HLL (LAN): operações
Ocorrência
dinâmica
Pascal
atribuição
Laços
chamadas
if
outros
C
Instruções
valor normalizado
Pascal
C
referência a
memória
Pascal
C
45
38
13
13
14
15
5
3
42
32
33
26
15
31
33
44
45
contagem12
normalizada
Multiplicação do
29
43
11
21
7
13
do número número
pelo
número
de ocorrências
6 de 1
3
1
2
1
de referências
pelo número de
ocorrências instruções produzidas à memória
ao se
pelo compilador
executar o
normalizada pelo
Válido para arquiteturas
CISC
(Complex Instruction Set Computer)
programa
número de instruções
por comando HLL
PUCC
Características das HLL (LAN): operandos
• segundo Patterson [PATT82a] a maioria das referências
é de variáveis escalares sendo que mais de 80% dos
escalares são locais;
Integer constant
Scalar variable
Array/structure
Pascal
C
Average
16
58
26
23
53
24
20
55
25
• segundo Lunde [LUND77], cada instrução, em média,
referencia 0.5 operandos na memória e 1.4 nos
registradores;
A arquitetura deve possibilitar o rápido acesso aos operandos.
PUCC
Características das HLL (LAN): chamadas
• é a operação mais lenta nas linguagens de alto nível
compiladas;
• segundo Tanenbaum [Tane78], 98% de chamadas
dinâmicas passam menos de 6 argumentos e 92% usam
menos de 6 variáveis locais;
• segundo Katevenis[KATE83], é raro existir uma longa
seqüência de chamadas à procedimentos.
As referências aos operandos são altamente localizadas.
PUCC
Implicações
• Deve-se otimizar os processos que consomem
mais tempo.
• Deve-se usar um grande número de
registradores (referência aos operandos)
• Uso de pipelines
• Simplified (reduced) instruction set
PUCC
Uso de registradores
• os registradores são os dispositivos mais rápidos
de armazenamento;
• deve-se criar uma estratégia para se manter os
operandos mais freqüentemente acessados nos
registradores;
• deve-se minimizar as operações de transferência de
operandos da memória para registradores;
abordagem via software
PUCC
abordagem via hardware
8
Abordagem via software
• visa deixar a tarefa de maximização de uso
dos registradores para o compilador;
• o compilar irá tentar usar os registradores
para armazenar as variáveis que serão
usadas a maior parte do tempo;
• deve utilizar algoritmos sofisticados de
análise de programas.
PUCC
9
Abordagem via hardware
• uso de mais registradores para manter mais
variáveis por mais tempo;
• deve-se organizar o uso destes registradores
de forma a diminuir o número de acessos à
memória principal.
PUCC
10
Condições de contorno
• as variáveis locais devem ser salvas a cada
chamada de nova sub-rotina;
• parâmetros devem ser passados para as
sub-rotinas chamadas;
• no retorno da chamada as variáveis locais
devem ser novamente carregadas e os
resultados passados de volta;
PUCC
11
Janelas de registradores
• Uma sub-rotina típica passa poucos parâmetros;
• O número de sub-rotinas chamadas é geralmente
pequena;
• Múltiplos conjuntos de registradores são endereçados para
diferentes sub-rotinas;
• Uma nova chamada faz com que o processador use
automaticamente o próximo conjunto de registradores;
• Janelas de registradores de sub-rotinas adjacentes possuem uma
superposição de registradores que são usados para se passar os
parâmetros;
PUCC
12
Janelas de registradores
Em um dado instante de
tempo só um conjunto de
registradores é visível,
Com a sobreposição,
como se só existisse ele.
pode-se passar
argumentos sem o
movimento de dados;
Parâmetros passados pela subA janela é dividida em 3 áreas: rotina do nível J
Usado
para se passar argumentos para o próximo nível
Variáveis de
uso local
PUCC
13
Representação circular
se F for chamado,
os conteúdo de
A.in e A.loc
devem ser
salvos na memória
neste
caso, o
valor de SWP
deve ser alterado
Implementações típicas
usam 8 janelas de 16
registradores cada.
PUCC
Ao passo que
novas sub-rotinas
são chamadas, o
valor de CWP
deve ser alterado
14
Variáveis Globais
Uma possibilidade é usar endereçamento de
memória para as variáveis globais;
Ineficiente para variáveis globais muito usadas
Outra possibilidade é o uso de registradores de uso
exclusivo para variáveis globais;
Aumento de processamento para se
diferenciar os endereços dos registradores
PUCC
15
Cache vs. Janela de registradores
Referência a um escalar.
PUCC
16
Arquitetura CISC
Conjunto com um grande número de instruções .
Motivações:
• simplificação nos projetos de compiladores;
• aumento de desempenho de HLL.
Em suma: dar melhor suporte as HLL.
PUCC
17
Argumentos
Conjunto com um grande número de instruções
- dificultam a implementação de pipeline
• simplificação nos projetos de compiladores
- o compilador deve encontrar os casos que
combinam exatamente com a construção
• programas usando CISC são menores
- porém os opcodes são maiores, produzindo
maiores instruções.
PUCC
18
Características da arquitetura RISC
• Uma instrução por ciclo
• Operações entre registradores
• Modos de endereçamento mais simples
• Formatos de instruções mais simples
PUCC
19
Características RISC
• Tornar as máquinas mais simples para que sejam mais
velozes:
– Simplicidade:
• Poucas instruções, simples e com poucos
formatos;
• Poucos modos de endereçamento;
• Usar apenas LOAD/STORE para movimentação de
dados entre registradores e memória;
• Baseado em compiladores sofisticados para otimizar o
código;
PUCC
20
Características RISC
• Alcançar alto desempenho através de
registradores rápidos, altas velocidades de
CPU e otimização na compilação;
• Uma instrução por ciclo;
• Operações registrador a registrador;
• Formato fixo de instruções.
Implementação mais eficiente
PUCC
21
Exemplos
• RISC: MIPS, SPARC, Alpha, HP-PA,
PowerPC, i860, i960.
• CISC: VAX, PDP-11, Intel i86, Motorola 68K.
• CISC com macro/micro-instruções RISC
internas: Pentium, AMD Athlon.
PUCC
22
RISC x CISC
• Complex Instruction Set Computer (CISC);
• CISC é caracterizada por usar um grande conjunto de
instruções complexas, objetivando o uso mínimo de
memória;
• Instruções típicas CISC incorporam complexos modos
de endereçamento para os operandos;
• Máquinas CISC usualmente possuem número pequeno
de registradores;
• Máquinas CISC foram, na maioria, construídas como
microprogramadas, mas, recentemente, algumas têm
implementado micro/macro-instruções RISC
(executadas diretamente pelo hardware).
PUCC
23
RISC x CISC
• Reduced Instruction Set Computer (RISC);
• RISC é caracterizada por usar um conjunto pequeno
de simples instruções;
• Máquinas RISC usualmente utilizam apenas
instruções Load e Store para acesso a memória;
• Máquinas RISC frequentemente possuem número
elevado de registradores;
• Máquinas RISC têm sido construídas para que suas
instruções sejam diretamente executadas pelo
hardware (não há microcódigo).
PUCC
24
RISC vs. CISC
Não existe ‘a melhor arquitetura’
Uma boa filosofia: usar o melhor dos dois
PUCC
25
Download

Organização de Computadores