Tópico 02: Arquitetura do Conjunto de Instruções Objetivos

Objetivos
Tópico 02:
• Estudar as principais características de
arquiteturas de conjunto de instruções.
Arquitetura do Conjunto de
Instruções
– “Instruction set architecture” (ISA)
• Baseando-se em propriedades extraídas de
programas reais (típicos) ...
• Como deve ser a ISA de uma máquina
contemporânea ?
– Que instruções e modos de endereçamento ?
– Que formatos e tamanho de campos ?
– Qual o impacto da ISA no compilador ?
Some pictures are adapted from “Computer Architecture: A Quantitative
Approach ”, J. Hennessy and D. Patterson, Morgan Kaufmann Publishers . 3rd
edition.
CA, A2, slide 1
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 2
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 1
Sumário
Sumário
• Arquiteturas de conjuntos de instruções
• O papel dos compiladores
– Classificação
– Estrutura de um compilador moderno
– Impacto das otimizações no desempenho
– Sintonia compilador ↔ ISA
» Pilha, acumulador, registrador-memória, load/store
– Medidas “independentes” de ISA
» Endereçamento de memória
» Tipo e tamanho de operandos
» Operações
» Impacto da tecnologia de compiladores no projeto de
uma ISA
» Impacto do projeto de uma ISA na eficiência do
compilador
– Codificação de instruções
• A arquitetura do MIPS 64
» Formatos e seu impacto
– Exemplo real de uma ISA contemporânea
CA, A2, slide 3
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 4
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 2
ISA: classificação
ISA: classificação
←TOS
←
←TOS
←
ULA
ULA
CPU
ULA
CPU
MEM
MEM
Pilha
Pilha
CA, A2, slide 5
Luiz C. V. dos Santos - INE/CTC/UFSC
CPU
MEM
Acumulador
CA, A2, slide 6
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 3
ISA: classificação
ISA: classificação
←TOS
←
ULA
ULA
CPU
MEM
Pilha
←TOS
←
ULA
CPU
ULA
CPU
MEM
MEM
Acumulador
Reg-Memória
ULA
CPU
MEM
Pilha
CA, A2, slide 7
Luiz C. V. dos Santos - INE/CTC/UFSC
ULA
CPU
ULA
CPU
MEM
MEM
Acumulador
Reg-Memória
CPU
MEM
Load/Store
CA, A2, slide 8
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 4
ISA: exemplo
ISA: classificação
• C = A+B
• Instruções ALU: operandos e endereços
Pilha
Acumulador
Reg-Memória Load/Store
Push A
Push B
Add
Pop C
Load A
Add B
Store C
Load R1,A
Load R1,A
Add R3,R1,B Load R2,B
Store R3,C Add R3,R1,R2
Store R3,C
Número de Número máximo
endereços
de operandos Tipo de ISA Exemplos
de memória
permitidos
CA, A2, slide 9
Luiz C. V. dos Santos - INE/CTC/UFSC
0
3
1
2
2
3
2
3
Alpha, ARM, MIPS, PowerPC,
SPARC, Trimedia TM5200
IBM 360/370, Intel 80x86,
Reg-Mem
Motorola 68000
Mem-Mem VAX
Mem-Mem VAX
Load/Store
CA, A2, slide 10
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 5
Modos de endereçamento:
classificação
ISA: vantagens e desvantagens
Tipo
Reg-Reg
(0,3)
Vantagens
Codificação : comprimento fixo.
Geração de código : simples.
CPI: pouco variável
Número de instruções : reduzido,
Reg-Mem pois dispensa pré-carga.
(1,2)
Codificação : comprimento variável.
Densidade : boa
Mem-Mem
Densidade : a mais alta.
(2,2) ou (3,3)
Desvantagens
Número de instruções: o mais alto
Densidade : a mais baixa
Operandos: um fonte é destruído
CPI: variável com a posição do
operando
Codificação : comprimento muito
variável
CPI: muito variável entre instruções
CA, A2, slide 11
Luiz C. V. dos Santos - INE/CTC/UFSC
Modo
Exemplo
Significado
Registrador
Imediato
Deslocamento
Indireto de
registrador
Indexado
Direto ou
absoluto
Add R4, R3
Add R4, #3
Add R4, 100(R1)
Regs[R4] <= Regs[R4] + Regs[R3]
Regs[R4] <= Regs[R4] + 3
Regs[R4] <= Regs[R4] + Mem[100+Regs[R1]]
Add R4, (R1)
Add R3, (R1+R2)
Regs[R4] <= Regs[R4] + Mem[Regs[R1]]
Regs[R3] <= Regs[R3] + Mem[Regs[R1]+Regs[R2]]
Add R1, (1001)
Regs[R1] <= Regs[R1] + Mem[1001]
CA, A2, slide 12
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 6
Modos de endereçamento:
classificação
Modos de endereçamento:
utilização
• 50% do acesso a operandos
– Modo registrador
Modo
Exemplo
Significado
Indireto de
memória
Add R1, @(R3)
Regs[R1] <= Regs[R1] + Mem[Mem[Regs[R3]]]
Regs[R1] <= Regs[R1] + Mem[Regs[R2]]
Regs[R2] <= Regs[R2] + d
• 50% dos acessos usam outros modos
Auto-incremento Add R1, (R2) +
– Quais ? Em que proporção ?
Regs[R2] <= Regs[R2] - d
Regs[R1] <= Regs[R1] + Mem[Regs[R2]]
Regs[R1] <= Regs[R1] +
Mem[100+Regs[R2]] +
Add R1, 100(R2) [R3] Regs[R3]*d
Auto-decremento Add R1, - (R2)
Escalonado
CA, A2, slide 13
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 14
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 7
Modos de endereçamento:
utilização
Deslocamento: distribuição de valores
• % ocorrência × # bits magnitude (log2 d - 1)
1
0%3%
3%
1% 6%
1%
0%
6%
outros
Indireto de memória
Escalonado
Indireto de registrador
Imediato
3%
TeX
spice
gcc
16%
24%
11%
43%
39%
17%
32%
Deslocamento
40%
0%
40%
35%
30%
25%
20%
15%
10%
5%
0%
55%
0 1 2
10% 20% 30% 40% 50% 60%
3 4
5
6 7 8
inteiros
9 10 11 12 13 14 15
ponto flutuante
75%
CA, A2, slide 15
Luiz C. V. dos Santos - INE/CTC/UFSC
99%
CA, A2, slide 16
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 8
Modo imediato: utilização
Imediato: distribuição de valores
• % ocorrência × # bits magnitude (log2 i - 1)
1
45%
40%
35%
30%
25%
20%
15%
10%
5%
0%
23%
22%
Cargas
25%
Operações da ALU
19%
21%
Todas
16%
0%
5%
10%
15%
Ponto flutuante
20%
25%
30%
Inteiros
0 1 2
3 4
5
6 7 8
inteiros
9 10 11 12 13 14 15
ponto flutuante
Conclusão: Inteiros: 1/5 das instruções; Ponto flutuante: 1/6 das instruções
50%
CA, A2, slide 17
Luiz C. V. dos Santos - INE/CTC/UFSC
80%
CA, A2, slide 18
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 9
Operações no conjunto de
instruções
Desvios: nomenclatura
• As 10 instruções mais freqüentes no 80x86
• Desvio condicional
– Desvio ou “Branch”
» Exemplo: BNE R3,R4, nome
• Desvio incondicional
– Salto ou “Jump”
» Exemplo: J nome
CA, A2, slide 19
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 20
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 10
Desvios e saltos: utilização
Desvios e saltos: destino
• Conhecido em tempo de compilação
– Salto direto
19%
Call/Return
» J nome
8%
– Salto e vínculo
6%
10%
Jump
» JAL nome
75%
82%
Branch
– Desvio condicional
» BNE R3,R4, nome
0%
20%
40%
60%
80%
Ponto flutuante
100%
• Desconhecido em tempo de compilação
Inteiros
– Retorno
– Salto indireto
» JR R3
CA, A2, slide 21
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 22
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 11
Salto indireto: utilização
Desvios: distribuição de deslocamentos
• % ocorrência × # bits magnitude (log2 d - 1)
1
• Case ou switch
30%
– Tabela de endereços
25%
• Funções ou métodos virtuais
20%
– Chamadas de rotinas diferentes
– Dependendo do tipo do argumento
15%
10%
• Ponteiros de Funções
5%
– Passagem de funções como parâmetros
0%
• Bibliotecas compartilhadas dinamicamente
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
– Carregadas e ligadas sob demanda
inteiros
ponto flutuante
85%
CA, A2, slide 23
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 24
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 12
Desvio condicional: alternativas
Nome
Exemplos
Como a condição é testada
Código
condicional
(CC)
80x86, 68000,
PowerPC,
ARM, SPARC
Registrador
de condição Alpha, MIPS
Operação da ULA define bit
especial, que é testado pela
instrução de desvio
Resultado de uma comparação
armazenado em registrador
arbitrário, que é testado pela
instrução de desvio
Comparação
e desvio
PA-RISC, VAX
A comparação faz parte da
instrução de desvio
Desvio condicional: alternativas
If (A > B) then S1;
S2;
CA, A2, slide 25
Luiz C. V. dos Santos - INE/CTC/UFSC
CMP B, A
BLE end
S1
end: S2
SLT X, B, A
BEQ X, $zero,end
S1
end: S2
Define CC
(68020)
Não define CC
(MIPS)
BLE B, A,end
S1
end: S2
Em geral só quando
teste é simples
(<0, >0, ≥0, ≤ 0)
CA, A2, slide 26
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 13
Desvio condicional: teste
Desvios: comparações com zero
2%
5%
não =
• Não requerem o uso da ULA
18%
16%
=
>=
0%
11%
33%
<=
44%
35%
34%
<
0%
10%
20%
30%
S
40%
Ponto flutuante
50%
Inteiros
Teste “>” ocorre em porcentagem desprezível
CA, A2, slide 27
Luiz C. V. dos Santos - INE/CTC/UFSC
Z
BLTZ
<< 0
S
BLEZ
≤≤ 0
S+Z
BGEZ
≥≥ 0
S′′
BGTZ
>> 0
S′′ . Z ′′
CA, A2, slide 28
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 14
Operandos: tipos e tamanhos
Codificação de instruções
Operação e número
de operandos
Byte (8 bits)
Meia palavra (16 bits)
1%
10%
Operação
26%
29%
59%
Palavra dupla (64 bits)
0%
20%
Campo de
endereço 1
...
Especificador
de endereço n
Campo de
endereço n
Comprimento variável: VAX, Intel 80x86
5%
0%
Palavra (32 bits)
Especificador
de endereço 1
40%
60%
Ponto flutuante
Campo de
endereço 1
Campo de
endereço 2
Campo de
endereço 3
Comprimento fixo: Alpha, ARM, MIPS, PowerPC, SPARC
70%
Operação
Especificador
de endereço
Campo de
endereço
Operação
Especificador
de endereço 1
Especificador
de endereço 2
Operação
Especificador
de endereço
Campo de
endereço 1
80%
Inteiros
CA, A2, slide 29
Luiz C. V. dos Santos - INE/CTC/UFSC
Híbrido: IBM 360/70, MIPS16, Thumb
Page 15
Campo de
endereço
Campo de
endereço 2
CA, A2, slide 30
Luiz C. V. dos Santos - INE/CTC/UFSC
O papel dos compiladores
Compiladores: estrutura
• Desempenho
Front-end por
linguagem
– Tecnologia de CIs
– Organização do HW
– Tecnologia de Compiladores
Traduzir linguagem para
formato intermediário comum
Representação intermediária
• Que características do ISA resultam em
código mais eficiente ?
• Que características do ISA tornam mais
fácil escrever compiladores eficientes ?
CA, A2, slide 31
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 16
Otimizações
de alto nível
Otimização de laços e
inserção de in-lining
Otimizador
global
Otimizações locais, globais
e alocação de registradores
Gerador de
código
Seleção de instruções e
escalonamento de código
CA, A2, slide 32
Luiz C. V. dos Santos - INE/CTC/UFSC
Compiladores: estrutura
Compiladores: objetivos
•
•
•
•
Front-end por
linguagem
Representação intermediária
Otimizações
de alto nível
Dependência da
linguagem
Correção
Velocidade do código compilado
Compilação rápida
Suporte para depuração ...
Dependência da
máquina
Otimizador
global
Gerador de
código
CA, A2, slide 33
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 34
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 17
Compiladores: complexidade
Compiladores: otimizações
• Complexidade impede solução monolítica
• Solução: Múltiplos passos (fases)
• Otimizações de alto nível
– Integração de procedimentos (“inlining”)
» Exemplo:
Definição: inline int metodo(a,b,c) {return a+b-c;}
Chamada: z = metodo(w,x,y);
Resultado: z = w+x-y;
– Vantagem: reduz complexidade
– Desvantagem: problema de ordenação de fases
• Exemplo:
– Eliminação de expressões comuns
– Transformação de laços
» Assume temporário em registrador
» Exemplo: “loop unrolling”
for (i=0; i < N; i=i+1)
– Decidir se “inlining”
{ a[i]=b[i]*c[i];}
» Resultado:
» Antes de conhecer o tamanho do procedimento
for (i=0; i < N; i=i+2) { a[i]=b[i]*c[i];
a[i+1]=b[i+1]*c[i+1];}
CA, A2, slide 35
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 36
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 18
Compiladores: otimizações
Compiladores: otimizações
• Otimizações de alto nível
• Otimizações locais
– Integração de procedimentos (“inlining”)
– Escopo = bloco básico
» Exemplo:
Definição: inline int metodo(a,b,c) {return a+b-c;}
Chamada: z = metodo(w,x,y);
Resultado: z = w+x-y;
» Eliminação de expressões comuns
a = x+y;
...
b = a+1;
...
c = x+y+z;
– Transformação de laços
» Exemplo: “loop unrolling”
for (i=0; i < N; i=i+1)
{ a[i]=b[i]*c[i];}
a = x+y;
...
b = a+1;
...
c = a+z;
» Resultado:
for (i=0; i < N/2; i=i+1) { a[i*2]=b[i*2]*c[i*2];
a[i*2+1]=b[i*2+1]*c[i*2+1];}
CA, A2, slide 37
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 38
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 19
Compiladores: otimizações
Compiladores: otimizações
• Otimizações locais
• Otimizações globais
– Escopo = bloco básico
– Escopo: além do bloco básico
» Propagação de constantes e variáveis
a = 0;
a = 0;
...
...
b = a+1;
b = 1;
...
...
c = 2*b;
c = 2;
a = x;
...
b = a+1;
...
c = 2*a;
» Eliminação global de expressões comuns
» Code Motion
x = y+A[i];
x = y+A[i];
if (x == y) {
a = k + w;
a = k + w;
b = f + g; }
a = x;
...
b = x+1;
...
c = 2*x;
else
a = k - w;
A[i] = a;
CA, A2, slide 39
Luiz C. V. dos Santos - INE/CTC/UFSC
if (x == y) {
b = f + g; }
else
a = k - w;
A[i] = a;
CA, A2, slide 40
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 20
Otimizações: code motion
else
exit
else
exit
LD R1, 0(R2)
IF
DADD R3, R4, R1
BNE R5, R6, else
DADD R7, R8, R9
DADD R10, R11, R12
J exit
DSUB R7, R8, R9
SD R7, 0(R2)
...
ID EX ME WB
X IF ID EX ME WB
IF ID EX ME WB
X IF ID EX ME WB
IF ID EX ME WB
IF ID EX ME WB
LD R1, 0(R2)
IF
DADD R7, R8, R9
DADD R3, R4, R1
BNE R5, R6, else
DADD R10, R11, R12
J exit
DSUB R7, R8, R9
SD R7, 0(R2)
...
ID EX ME
IF ID EX
IF ID
IF
IF
WB
ME
EX
ID
X
Compiladores: otimizações
• Alocação de registradores
– Mapeamento de variáveis para registradores
– Talvez a mais importante otimização
» Aceleração do código
» Torna outras otimizações úteis
ID EX ME WB
WB
ME WB
EX ME WB
IF ID EX ME WB
IF ID EX ME WB
IF ID
EX ME WB
CA, A2, slide 41
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 42
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 21
Otimizações: escalonamento de
código
Compiladores: otimizações
• Otimizações dependentes da máquina
• Seleção de instruções
• Exemplo:
x = y + A[i];
z = w - B[i];
– Exemplo: a = b * 2;
» MULT R1, R2, #2 ou
» SLLI R1, R2, #2
• Escalonamento de código
– Reordenamento de instruções para melhorar o
desempenho
» Redução do número de pausas devidas a “hazards”
CA, A2, slide 43
Luiz C. V. dos Santos - INE/CTC/UFSC
LD R1, 0(R8)
DADD R3, R4, R1
LD R5, 0(R9)
DSUB R6, R 7, R5
IF
ID
X
EX ME W B
IF ID EX ME W B
IF ID EX ME W B
X IF ID EX ME W B
LD R1, 0(R8)
LD R5, 0(R9)
DADD R3, R4, R1
DSUB R6, R7, R5
IF
ID EX ME
IF ID EX
IF ID
IF
WB
ME WB
EX ME WB
ID EX ME WB
CA, A2, slide 44
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 22
Otimizações: impacto
lucas, nível 3
11%
lucas, nível 2
12%
lucas, nível 1
Alocação de registradores
• Coloração de grafos
– Problema NP-completo
– Mas, há heurísticas eficientes
x 0,57
21%
x 0,21
» Desde que #vértices > 16
» Difícil construir bom alocador com poucos regs.
lucas, nível 0
mcf, nível 3
76%
mcf, nível 2
76%
» Não somente há poucas posições de armazenamento
» Mas também são mal gerenciadas
84%
mcf, nível 1
x 0,84
mcf, nível 0
0
ULA: inteiros
– Poucos registradores
x 0,90
20
ULA: ponto flutuante
40
60
80
Desvios/Chamadas
100
Load/Store
CA, A2, slide 45
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 46
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 23
Alocação de registradores
Alocação de registradores
• Áreas de dados
• Restrições
– Pilha (endereços relativos ao SP)
– Mais efetiva para objetos alocados na pilha
– Impossível para objetos na “heap”
– Variáveis globais possuem diversos “alias”
» Variáveis locais
– Área de dados globais
Exemplo:
» Váriaveis globais, constantes, arranjos
– Heap (acesso via ponteiros)
» Ilegal alocá-las em registradores
p = &a;
a = ...
» Objetos alocados dinamicamente
*p = ...
• Aliases (nomes alternativos)
– Dificultam alocação de registradores
...a...
CA, A2, slide 47
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 48
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 24
Características desejáveis de uma
máquina contemporânea
ISA ↔ Compilador
• Propriedades desejáveis de uma ISA
• Registradores de uso geral + load/store
• Modos de endereçamento simples
– Regularidade
» Operações e modos de endereçamento ortogonais
– deslocamento (12 a 16 bits)
– imediato (8 a 16 bits)
– indireto de registrador
– Oferta de primitivas não de soluções completas
» Não tentar sintonizar compilador com a linguagem
• Ex.: salvamento automático para chamada de procedure
• Tipo e tamanho de dados
– Simplicidade em avaliar alternativas
– inteiros (8, 16,32 e 64 bits ); PF (32 e 64 bits)
» Reg-mem: depois de quantas referências uma variável
deve ser alocada em registrador ?
CA, A2, slide 49
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 50
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 25
Características desejáveis de uma
máquina contemporânea
Características desejáveis de uma
máquina contemporânea
• Instruções simples, pois dominantes:
• Formato de instrução
– load/store, soma, subtração, move entre
registradores, deslocamento
– fixo (desempenho)
– variável (tamanho do código)
• Comparações:
• Mais de 16 registradores de uso geral
– Igual, diferente, menor que
– Registradores separados para PF
• Desvios
• Modos de endereçamento regulares
– condicional (com endereçamento relativo ao PC)
– incondicional (salto)
– chamada
– retorno
– Aplicam-se a todas as instruções de
transferência
CA, A2, slide 51
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 52
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 26
MIPS64: um modelo arquitetônico
MIPS64: um modelo arquitetônico
• Características
• Registradores
– Um conjunto simples de instruções
– Máquina load/store
– Projeto orientado à eficiência do pipeline
– GPRs: 32 reg. de uso geral (64 bits)
» R0, ..., R31;
» R0 = zero;
– FPRs: registradores para PF (32 ou 64 bits)
» codificação fixa de instruções
» F0, ..., F31
– Projeto orientado à eficiência do compilador
CA, A2, slide 53
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 54
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 27
MIPS64: um modelo arquitetônico
MIPS64: um modelo arquitetônico
• Tipos de dados
• Modos de endereçamento
– Inteiros
– Só imediato e deslocamento
» byte (8), meias palavras (16)
» palavras (32), palavras duplas (64)
» Indireto e absoluto como casos particulares
» Valor codificado em 16 bits
– Ponto flutuante
• Memória
» precisão simples (32)
» precisão dupla (64)
– Endereçável por byte
– Endereço: 64 bits
– Ordem dos bytes configurável
• Operações
– Sobre inteiros de 64 bits ou valores em ponto
flutuante de 32 ou 64 bits
– Meias palavras e bytes carregados em GPRs
com ou sem extensão de sinal
» Big endian ou little endian
CA, A2, slide 55
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 56
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 28
MIPS64: um modelo arquitetônico
MIPS64: formatos de instrução
• Máquina Load/store
– GPRs:
I
» byte, meia palavra, palavra ou palavra dupla
– FPRs:
» precisão simples ou dupla
R
• Acesso à memória
6
5
5
16
Opcode
rs
rt
imediato
6
5
5
5
5
6
Opcode
rs
rt
rd
shamt
funct
– Alinhamento obrigatório
J
CA, A2, slide 57
Luiz C. V. dos Santos - INE/CTC/UFSC
6
26
Opcode
deslocamento adicionado ao PC
CA, A2, slide 58
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 29
MIPS64: um modelo arquitetônico
MIPS64: freqüência de instruções
• Exemplos de instruções
load imm
– Instruções de load/store
call/return
» Figura 2.28
compare
– Instruções aritméticas/lógicas
store
cond branch
» Figura 2.29
2%
2%
5%
10%
12%
16%
and/or/xor
– Instruções que afetam o fluxo de controle
21%
add/sub
» Figura 2.30
26%
load
– Instruções de ponto flutuante
0%
» Figura 2.31
• Conjunto completo de instruções
10%
20%
30%
Média inteiros
» Apêndice C (www.campus.com.br)
CA, A2, slide 59
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 60
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 30
Perspectiva histórica: VAX × MIPS
MIPS64: freqüência de instruções
store int
2%
compare int
2%
and/or/xor
cond branch
load imm
• VAX
– compilador simples, densidade de código
3%
» Instruções e modos de endereçamento poderosos,
formato de instrução variável, poucos registradores
4%
5%
store PF
• MIPS
7%
mul PF
8%
add/sub PF
– alto desempenho via pipelining, facilidade de
implementação do HW, compatibilidade com
compiladores altamente otimizados
10%
load int
15%
load PF
15%
add/sub int
0%
» Instruções e modos de endereçamento simples,
formato de instrução fixo, muitos registradores
25%
5%
10%
15%
20%
25%
30%
Média PF
CA, A2, slide 61
Luiz C. V. dos Santos - INE/CTC/UFSC
CA, A2, slide 62
Luiz C. V. dos Santos - INE/CTC/UFSC
Page 31
VAX 8700 × MIPS M2000
VAX 8700 × MIPS M2000
• Razão: MIPS/VAX
IMIPS/IVAX ≈ 2
• Razão: MIPS/VAX = 3/1
CA, A2, slide 63
CPI MIPSLuiz
/CPI
≈ 1/6
C. V.VAX
dos Santos - INE/CTC/UFSC
IMIPS/IVAX ≈ 2
Page 32
CA, A2, slide 64
CPI MIPSLuiz
/CPI
≈ 1/6
C. V.VAX
dos Santos - INE/CTC/UFSC