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