RISC - Reduced Instruction
Set Computers
Cap. 12
Maiores Avanços nos
Computadores
Conceito de Família
IBM System/360 – 1964
DEC PDP-8
Separa Arquitetura da Implementação
Unidade de Controle Microprogramada
Idealizada por Wilkes – 1951
Produzida pela IBM S/360 – 1964
Memória Cache
IBM S/360 model 85 – 1969
Maiores Avanços nos
Computadores
RAM no Estado Sólido
Microprocessadores
Intel 4004 – 1971
Pipelining
Introduz Paralelismo no Ciclo de Execução
Múltiplos Processadores
Próximo Passo – RISC
Reduced Instruction Set Computer
Recursos Chaves
Grande Número de Registradores de
Propósito Geral
Ou Uso de Tecnologia de Compilador para
Otimizar Uso dos Registradores
Conjunto de Instruções Simples e Limitado
Ênfase na Otimização do Pipeline de
Instruções
Comparação de Processadores




CISC
IBM
370/168
1973


Nº de Instruções
208
303


DEC VAX Intel
11/780
486
1978
1989
235
RISC
Motorola MIPS
88000
R4000
1988
1991
Superscalar
IBM
Intel
RS/6000 80960
1990
1989
51
94
184
62
Tamanho de Instrução (Bytes)
2-6
2-57
1-11
4
32
4
4 or 8


Modos de Endereçamento
4
22
11
3
1
2
11


Registradores de Propósito Geral (GP)
16
16
8
32
32
32
23-256


Memória de Controle (KBytes) (Microprogramação)
420
480
246
0
0
0
0
Força Motriz do CISC
Custos de Software
>> Custos do
Hardware
Linguagens de Alto
Nível (HLL) Cada Vez
Mais Complexas
Gap Semântico
Grandes Conjtos. de
Instrução
Mais Modos de
Endereçamento
Implementações em
Hardware de
Sentenças HLL
e.g. CASE (switch) no
VAX
Intenção de CISC
Facilitar o Desenvolvimento do Compilador
Aumentar a Eficiência de Execução
Operações Complexas em Microcódigo
Suportar HLLs Mais Complexas
Características de Execução
Estudos Realizados Baseados em
Programas Escritos em HLLs
Estudos Dinâmicos Medidos Durante a
Execução do Programa
Análise
Operações Executadas
Operandos Utilizadas
Seqüenciamento de Execução
Operações
Atribuições
Movimentação de Dados
Sentenças Condicionais (IF, LOOP)
Controle de Seqüência
Chamada/Retorno de Procedimento
Consome Muito Tempo
Algumas Instruções HLL Resultam em
Muitas Operações em Código de Máqina
Freqüência Dinâmica Relativa
Atrib.
Loop
Call
If
GoTo
Outra
Ocorrência
Dinâmica
Pascal C
45
38
5
3
15
12
29
43
3
6
1
Instrução de Máq.
(Ponderada)
Pascal C
13
13
42
32
31
33
11
21
3
1
Referência à Mem.
(Ponderada)
Pascal C
14
15
33
26
44
45
7
13
2
1
Operandos
Principalmente Variáveis Locais Escalares
Otimização Deveria se Concentrar no
Acesso a Variáveis Locais
Constante Inteira
Variável Escalar
Matriz/Estrutura
Pascal
16
58
26
C
23
53
24
Média
20
55
25
Chamadas de Procedimentos
Consome Muito Tempo
Depende do Nº de Parâmetros Passados
Depende do Nível de Aninhamento
Maioria do Programa Não Realizam Muitas
Chamadas Seguidas de Muitos Retornos
Maioria das Variáveis São Locais
Localidade de Referência
Implicações
Melhor Suporte  Otimizando
Recursos Mais Utilizados
Recursos que Consomem Mais Tempo
Grande Nº de Registradores
Referência a Operandos
Projeto Cuidadoso de Pipelines
Predição de Desvios, etc.
Conjunto de Instruções Simplificado
(Reduzido)
Implementações RISC
Registradores
Grande Arquivo de Registradores
Solução em Software
Requer que o Compilador Aloque
Registradores
Alocação Baseada nas Variáveis Mais Utilizadas
em um Dado Momento
Requer Análise de Programa Sofisticada
Solução em Hardware
Tem Mais Registradores
Portanto Mais Variáveis Estarão nos Registradores
Registradores para Variáveis
Locais
Armazena Variáveis Locais Escalares em
Registradores
Reduz Acesso à Memória
Cada Chamada de Procedimento/Função
Muda a Localidade
Parâmetros são Passados
Resultados são Retornados
Variáveis dos Programas que Chamaram são
Restauradas
Janelas de Registradores
Apenas Poucos Parâmetros
Faixa Limitada de Profundidade de
Chamadas
Uso de Múltiplos Conjuntos Pequenos de
Registradores
Chamadas Chaveiam para um Conjunto
Diferente de Registradores
Retornos Chaveiam de Volta para Um
Conjunto de Reg. Previamente Utilizado
Janelas de Registradores
Três Áreas Dentro do Conjunto de
Registradores
Registradores de Parâmetro
Registradores Locais
Registradores Temporários
Registradores Temporários de um Conjto.
Superpõem-se aos Registradores de Parâmetros
do Seguinte
• Passagem de Parâmetros Sem Movimentação de Dados
Janelas de Registradores
Superpostas
Diagrama de Buffer Circular
Exemplo de Janela de Registrador








Int global.a, global.b, global.c;
Void Main();
{
Int main.a, main.b, main.c;
...
Proc.b(global.a,main.b,main.c);
...
}







Void Proc.b(int a,b,c);
{
Int b.a,b.b,b.c;
...
Proc.c(global.b,b.a);
...
}





Voi Proc.c(int c,d);
{
Int c.a;
...
}
Exemplo de Janela de Registrador
A
C
Int global.a, global.b, global.c;
Void Main();
{
Int main.a, main.b, main.c;
...
Proc.b(global.a,main.b,main.c);
...
}
c.a
b.a
b.b
b.c
B
Void Proc.b(int a,b,c);
{
Int b.a,b.b,b.c;
...
Proc.c(global.b,b.a);
...
}
Voi Proc.c(int c,d);
{
Int c.a;
...
}
Variáveis Globais
Alocadas pelo Compilador na Memória
Ineficiente para Variáveis Freqüentemente
Acessadas
Solução Proposta
Ter um Conjunto de Registradores para
Variáveis Globais
Registradores X Cache
Arquivo de Registradores
 Todos Escalares Locais
Cache
Esc. Locais
Recentemente Usados (RU)
 Variáveis Individuais
 Var. Globais do Compilador
 Salvar/Restaurar Baseado em
Aninhamento de Proc.
 Endereçamento de Reg.
Blocos de Mem.
Var. Globais RU
Salv./Rest. baseado em
Algoritmo de Cache
End. de Memória
Referenciando um Escalar Arquivo de Registrador de Janela
Referenciando um Escalar - Cache
Técnica de Colorização de Grafos
Implementações RISC
RISC Pipelining
RISC Pipelining
 Maioria das Instruções são Registrador para Registrador
 Execução em Dois Estágios
I: Busca de Instrução
E: Execução
Operação ULA com Entrada e Saída de Registrador
 Para Load e Store
I: Busca de Instrução
E: Execução
Calcula Endereço de Memória
D: Memória
Operação de Registrador para Memória e de Memória para
Registrador
Efeitos de Pipelining
Otimização de Pipelining
Desvio Atrasado
Não Toma Desvio Até Execução da
Instrução Seguinte
Slot de Desvio
Desvio Normal e Atrasado
Endereço
100
101
102
103
104
105
106
Normal
LOAD X,A
ADD 1,A
JUMP 105
ADD A,B
SUB C,B
STORE A,Z
Atrasado
LOAD X,A
ADD 1,A
JUMP 105
NOOP
ADD A,B
SUB C,B
STORE A,Z
Otimizado
LOAD X,A
JUMP 105
ADD 1,A
ADD A,B
SUB C,B
STORE A,Z
Uso de Desvio Atrasado
RISC X CISC
Considerações
Porquê CISC?
Simplificação de Compilador?
Questão Controversa
Instruções de Máquina Complexas São Difíceis de Utilizar
Otimização Mais Difícil
Programas Menores?
Os Programas Ocupam Menos Memória, Mas…
Memória É Barata
Podem Não Ocupar Menos Bits, Apenas Menores na
Forma Simbólica
Mais Instruções  Opcodes Maiores
Referência a Registrador Requer Menos Bits
Porquê CISC?
Programas Mais Rápidos?
Tendência ao Uso de Instruções Simples
Unidade de Controle Mais Complexa
Armazenamento de Microprogramas de Controle
Maior
Instruções Simples Demoram Mais a Executar
Conclusão
Não é Claro que CISC é a Solução Apropriada
Características RISC
Uma Instruções Por Ciclo
Operações Registrador - Registrador
Poucos e Simples Modos de
Endereçamento
Poucos e Simples Formatos de Instrução
Projeto Hardwired (Sem Microcódigo)
Formato de Instrução Fixo
Maior Esforço/Tempo de Compilação
RISC v CISC
Não Há Divisão Clara
Muitos Projetos Utilizam Ambas Filosofias
e.g. PowerPC e Pentium II
Controvérsia
 Quantitativa
Comparação de Tamanhos de Programas e Velocidade de
Execução
 Qualitativa
Questões de Suporte a HLLs e Uso de Espaço no CI (VLSI)
 Problemas
Não Há Pares de RISC e CISC Comparáveis
Não Há um Conjunto Definitivo de Programas de Teste
Dificuldade de Separar os Efeitos do Hardware dos Efeitos do
Compilador
Maioria das Comparações Feitas em Laboratório e Não no
Mercado
Maioria dos Dispositivos Comerciais São uma Mistura
Por onde estudar ?
Arquitetura e Organização de
Computadores
William Stallings
Cap. 12
Manufacturer Web Sites
Download

Estratégia de Trabalho