Você está na página 1de 32

INF113 ORGANIZAO

DE COMPUTADORES B
TURMA B
Aula 2b
Caractersticas de uma ISA
(Instruction Set Architecture)
Sumrio
Instrues e Classes de ISA
Formato das Instrues
Resumo e Exerccio
Organizao de Computadores B 2
INSTRUES E CLASSES
DE ISA
Organizao de Computadores B 3
Instrues
Linguagem da mquina
Mais primitiva que linguagens de alto nvel
Ex.: No h controle sofisticado de fluxo
Bastante restrita
Organizao de Computadores B 4
Instrues
Linguagem da mquina
Mais primitiva que linguagens de alto nvel
Ex.: No h controle sofisticado de fluxo
Bastante restrita
Objetivos
Maximizar desempenho, diminuir custos, reduzir tempo de projeto
Organizao de Computadores B 5
Linguagem de alto nvel
(e.g., C)
Instrues (2)
Organizao de Computadores B 6
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
Programador
Linguagem de alto nvel
(e.g., C)
Linguagem de Montagem
(e.g., MIPS)
Compilador
Instrues (2)
Organizao de Computadores B 7
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
lw $15,0($2)
lw $16,4($2)
sw $16,0($2)
sw $15,4($2)
Programador
Linguagem de alto nvel
(e.g., C)
Linguagem de Montagem
(e.g., MIPS)
Cdigo de Montagem
Compilador
Montador
Instrues (2)
Organizao de Computadores B 8
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
lw $15,0($2)
lw $16,4($2)
sw $16,0($2)
sw $15,4($2)
0000 1001 1100 0110 1010 1111 0101 1000
1010 1111 0101 1000 0000 1001 1100 0110
1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111
Programador
Linguagem de alto nvel
(e.g., C)
Linguagem de Montagem
(e.g., MIPS)
Cdigo de Montagem
RTL Register Transfer Level
Compilador
Montador
Interpretao da mquina
Instrues (2)
Organizao de Computadores B 9
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
lw $15,0($2)
lw $16,4($2)
sw $16,0($2)
sw $15,4($2)
0000 1001 1100 0110 1010 1111 0101 1000
1010 1111 0101 1000 0000 1001 1100 0110
1100 0110 1010 1111 0101 1000 0000 1001
0101 1000 0000 1001 1100 0110 1010 1111
IR <- Imem[PC];
PC <- PC + 4;
Programador
Instrues Classes de ISA
Acumulador
1 address add A acc acc + mem[A]
1+x address addx A acc acc + mem[A + x]
Pilha
0 address add tos tos + next
Registrador de
Propsito Geral
2 addresses add A B EA(A) EA(A) + EA(B)
3 addresses add A B C EA(A) EA(B) + EA(C)
Load / Store
load Ra Rb Ra mem[Rb]
store Ra Rb mem[Rb] Ra
Mem. Mem.
2 addresses add A B mem[A] mem[A] + mem[B]
Organizao de Computadores B 10
Comparando o nmero de instrues
Comparao:
Bytes por instruo?
Nmero de instrues?
Ciclos por instrues?
C = A + B para 4 classes de conjunto de instrues:
Organizao de Computadores B 11
Pilha Acumulador
Registrador
(Reg-Mem)
Registrador
(Load/Store)
Push A Load A Load R1, A Load R1, A
Push B Add B Add R1, B Load R2, B
Add Store C Store C, R1 Add R3, R1, R2
Pop C Store C, R3
Vantagens dos registradores de propsito
geral
So mais rpidos que a memria
Guardam variveis
Trfego de memria reduzido
Densidade do cdigo pode aumentar (Menos bits so
necessrios para enderear registradores que a
memria)
Organizao de Computadores B 12
Formatos de Instrues
Varivel:
Fixo:
Hbrido:

Organizao de Computadores B 13
Se o mais importante for ...
Tamanho do cdigo, use instrues de tamanho varivel
Controle complexo pra verificar qual a prxima instruo
Operaes complexas (pode usar microprogramao)
Lenta muitos acessos memria
Organizao de Computadores B 14
Se o mais importante for ...
Tamanho do cdigo, use instrues de tamanho varivel
Controle complexo pra verificar qual a prxima instruo
Operaes complexas (pode usar microprogramao)
Lenta muitos acessos memria
Desempenho, use instrues de tamanho fixo
Fcil de decodificar, execuo direta em hardware
Perde espao de cdigo quando operaes so simples
Trabalha bem com pipelines (veremos!)
Organizao de Computadores B 15
Se o mais importante for ...
Tamanho do cdigo, use instrues de tamanho varivel
Controle complexo pra verificar qual a prxima instruo
Operaes complexas (pode usar microprogramao)
Lenta muitos acessos memria
Desempenho, use instrues de tamanho fixo
Fcil de decodificar, execuo direta em hardware
Perde espao de cdigo quando operaes so simples
Trabalha bem com pipelines (veremos!)
Organizao de Computadores B 16
Alguns processadores para sistemas Embarcados (ARM, MIPS) tem
um modo opcional para executar um subconjunto de instrues com
16-bit de comprimento (Thumb, MIPS16).
Pode-se decidir por desempenho ou densidade
Operaes Tpicas
(Poucas mudanas desde os anos 80)
Organizao de Computadores B 17
Tipo Exemplos
Movimento de Dados
Load (da memria)
Store (para memria)
memory-to-memory move
register-to-register move
input (do dispositivo de E/S)
output (para o dispositivo de E/S)
push, pop (da/para a pilha)
Aritmtico
Inteira ou Ponto Flutuante
Add, Subtract, Multiply, Divide
Deslocamento shift left/right, rotate left/right
Lgica not, and, or, set, clear
Controle Condicional, incondicional
Sub-rotina call, return
Interrupo trap, return
Sincronizao test & set (atomic r-m-w)
String search, translate
Multimdia Ops paralelos (ex. 4x 16bit add)
Instrues MIPS mais utilizadas
Figura 2.45 Patterson/4 Edio
Organizao de Computadores B 18
Note que a frequncia das instrues mudam
de acordo com o tipo de programa.
Eg. Inteiros vs. Ponto Flutuante
Instrues MIPS mais utilizadas (2)
Figura 3.26 Patterson/4 Edio
Organizao de Computadores B 19
FORMATO DAS
INSTRUES
Organizao de Computadores B 20
Organizao de Memria
Desde os anos 80, quase todo processador usa
endereamento de 8 bits
2 questes de projeto para ISA:
1) Como endereamentos para bytes so mapeados para
palavras?
Ler 32 bits atravs de 4 loads de 8 bits em endereos sequnciais
ou
Uma palavra de 32 bits em um nico endereo?
2) Uma palavra pode ser colocada em qualquer limite endereado
a byte?
Organizao de Computadores B 21
CPU
Barramento
de
Endereos
Endereamento da Memria
Pode ser vista como um grande vetor
ndice deste vetor o endereo de memria
Computadores mais antigos eram endereados a palavra
memoria[0], memoria[1], memoria[2] ...
Atualmente, memria endereada a byte.
ndice aponta para um byte na memria
Para acessar palavras de 32 bits:
memoria[0], memoria[4], memoria[8]
Por qu? Computadores precisam acessar
Bytes e
Palavras
Organizao de Computadores B 22
0
1
2
3
4
5
6
8 bits
8 bits
8 bits
8 bits
8 bits
8 bits

Alinhamento
Alinhado
Requer que o incio dos dados estejam em mltiplos de seus
tamanhos
Organizao de Computadores B 23
0 1 2 3
Alinhado
No
alinhado
Endianess
Big Endian
Endereo da memria aponta para o byte mais significativo
Ex.: IBM 360/370, Motorola 68k, Sparc, HP PA
Little Endian
Endereo da memria aponta para o byte menos significativo
Ex.: Intel 80x86, DEC Vax, DEC Alpha
Bi-Endian
Escolha na hora de iniciar o processador
Ex.: MIPS, ARM
msb lsb
3 2 1 0
little endian byte 0
0 1 2 3
big endian byte 0
Organizao de Computadores B 24
Endianess
Big Endian Little Endian = x86
Organizao de Computadores B 25
0 1 2 3
A B C D
Registrador
0
1
2
3
A
B
C
D
Memria
3 2 1 0
A B C D
0
1
2
3
D
C
B
A
Registrador
Memria
Endianess
Organizao de Computadores B 26
Big Endian vs. Little Endian
Modos de Endereamento
Organizao de Computadores B 27
Modo de End. Exemplo Significado
Registrador Add r4, r3 r4 r4 + r3
Imediato Add r4, #3 r4 r4 + 3
Deslocamento Add r4, 100(r1) r4 r4 + mem[100 + r1]
Registrador Indireto Add r4, (r1) r4 r4 + mem[r1]
Base Indexado Add r3, (r1+r2) r3 r3 + mem[r1 + r2]
Direto ou Absoluto Add r1, (1001) r1 r1 + mem[1001]
Memria Indireto Add r1, @(r3) r1 r1 + mem[mem[r3]]
Auto Incremento Add r1, (r2)+ r1 r1 + mem[r2]; r2r2 + d
Auto Decremento Add r1, -(r2) r2 r2 d; r1 r1 + mem[r2]
Escalar Add r1, 100(r2)[r3] r1 r1 + mem[100 + r2 + r3 * d]
P
a
r
a

q
u
e

s
e
r
v
e
m
?
Sintaxe de cdigo
Cdigo x86 pode ter diferentes sintaxes.
Organizao de Computadores B 28
AT&T Intel
Parameter
order
Origem antes do destino
eax := 5 is mov $5, %eax
Destino antes da origem
eax := 5 is mov eax, 5
Parameter
size
Mnemonics so ps-fixados com uma
letra indicando o tamanho dos
operandos.
e.g., "q" qword, "l" long (dword), "w"
word, and "b" byte
addl $4, %esp
Tamanho derivado a partir do nome do
registrador usado.
e.g., rax, eax, ax, al implica q,l,w,b
add esp, 4
Immediate
value
sigils
Imediato pr-fixado com "$", e
registradores pr-fixados com "%"
O assembler detecta automaticamente o
tipo dos simbolos.
i.e., registradores, constants, etc.
Effective
addresses
Sintaxe geral:
DISP(BASE,INDEX,SCALE)
movl mem_location(%ebx,%ecx,4), %eax
Uso de variveis e necessita uso de [];
Adicionalmente nome de tamanhos
devem ser usados (byte, word, or dword)
mov eax, dword [ebx + ecx*4 +
mem_location]
Modos de Endereamento % Uso
Modo registrador no computado
3 programas, processador VAX
Deslocamento: 42% mdia, 32% a 55%
Imediato: 33% mdia, 17% a 43%
Indireto: 13% mdia, 3% a 24%
Escalar: 7% mdia, 0% a 16%
Memria Indireto: 3% mdia, 1% a 6%
Outros: 2% mdia, 0% a 3%
Tamanho do Imediato:
50% a 60% cabem em 8 bits
75% a 80% cabem em 16 bits
Organizao de Computadores B 29
75%
88%
RESUMO E EXERCCIO
Organizao de Computadores B 30
Resumindo...
Enquanto teoricamente podemos falar sobre instrues e
modos de endereamentos complexos, os mais utilizados
nos programas so na verdade os mais simples.
Organizao de Computadores B 31
Exerccios
Vamos projetar uma ISA. A palavra deve ter 16 bits. Com
operaes do tipo Rd = Rs + Rt, onde R designa um
registrador:
1. Quantas instrues podemos ter, se tivermos 16
registradores?
2. Se fosse necessrio utilizar um valor imediato, de
quantos bits ele poderia ser? (Assumindo a operao
Rd = imediato)
3. Quantas posies podemos enderear de modo direto?
4. Considerando endereamento por byte, o salto
condicional (beq) poderia cobrir qual distncia?
Organizao de Computadores B 32

Você também pode gostar