Sei sulla pagina 1di 47

Arquitetura de

Computadores A
Aula 4

Arquitetura do processador MIPS
1
Prof. Mateus Beck Rutzig
Linguagem de alto
nvel (e.g., C)
Linguagem de
Montagem (e.g.,MIPS)
Cdigo de
Montagem
RTL Register Transfer
Level
Compilador
Montador/Ligador
I nterpretao da mquina
temp = v[k];
v[k] = v[k+1];
v[k+1] = temp;
O Processo de Gerao de
Cdigo
lw $15, 0($2)
add $16, $15, $0
sw $16, 0($2)
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
Prof. Mateus Beck Rutzig
MIPS - Sumrio
Introduo
Registradores e Memria
Tipos de Dados
Instrues
Modos de Endereamento
Formato das Instrues
3
Prof. Mateus Beck Rutzig
MIPS - Sumrio
Introduo
Registradores e Memria
Tipos de Dados
Instrues
Modos de Endereamento
Formato das Instrues
4
Prof. Mateus Beck Rutzig
Famlia
5
MIPS Microprocessors
Model Frequency
(MHz)
Year Process
(m)
Transistors
(Millions)
Die Size
(mm)
Pin Count Power (W) Voltage Dcache
(KB)
Icache
(KB)
L2 Cache L3 Cache
R2000 8-16.7 1985 2.0 0.11 ? ? ? ? 32 64 None None
R3000 12-40 1988 1.2 0.11 66.12 145 4 ? 64 64
0-256 KB
External
None
R4000 100 1991 0.8 1.35 213 179 15 5 8 8
1 MB
External
None
R4400 100-250 1992 0.6 2.3 186 179 15 5 16 16
1-4 MB
External
None
R4600 100-133 1994 0.64 2.2 77 179 4.6 5 16 16
512 KB
External
None
R5000 150-200 1996 0.35 3.7 84 223 10 3.3 32 32
1 MB
External
None
R8000 75-90 1994 0.7 2.6 299 591+591 30 3.3 16 16
4 MB
External
None
R10000 150-250 1996 0.35, 0.25 6.7 299 599 30 3.3 32 32
1-4 MB
External
None
R12000 270-400 1998 0.25, 0.18 6.9 204 600 20 4 32 32
2 MB
External
None
RM7000 250-600 1998
0.25,
0.18, 0.13
18 91 304 10, 6, 3
3.3, 2.5,
1.5
16 16
256 KB
Internal
1 MB
External
R14000 500-600 2001 0.13 7.2 204 527 17 ? 32 32
2-4 MB
External
None
R16000 700-1000 2002 0.11 ? ? ? 20 ? 64 64
4-16 MB
External
None
Prof. Mateus Beck Rutzig
Famlia
6
Prof. Mateus Beck Rutzig
Exemplos de aplicao
7
Linksys Wireless Access Point
Samsung Digimax 430
Nintendo 64 (MIPS R4300 @ 93.75MHz)
Sony PlayStation (MIPS R3000A @ 33 MHz)
Sony PlayStation 2 (MIPS @300 MHz)
Sony PSP(MIPS R4000 @333MHz)
etc.

Prof. Mateus Beck Rutzig
MIPS - Sumrio
Introduo
Registradores e Memria
Tipos de Dados
Instrues
Modos de Endereamento
Formato das Instrues
8
Prof. Mateus Beck Rutzig
Registradores
32 registradores de propsito geral de 32 bits
$0, $1, , $31
operaes inteiras
endereamento
$0 tem sempre valor 0
$31 guarda endereo de retorno de sub-rotina
32 registradores de ponto flutuante de 32 bits
(preciso simples) $f0, $f1, , $f31
podem ser usados em pares para preciso
dupla
registradores Hi e Lo para uso em multiplicao e
diviso
9
Prof. Mateus Beck Rutzig
Organizao da memria
Endereada a BYTE Como sabemos?
Uma palavra no MIPS tem 32 bits, ou 4 bytes

Prof. Mateus Beck Rutzig
Registradores e Memria
Os operandos das instrues aritmticas e
lgicas tm de estar em registradores
O compilador associa as variveis com
registradores
E programas com muitas variveis?
Usar load/store pra transferir dados da memria pros registradores
Se no houver registradores suficientes
SPILL (derramamento) de registradores pra memria
Prof. Mateus Beck Rutzig
Registradores - Conveno
12
0 zero constante 0
1 at reservado para o assembler
2 v0 valores retornados
3 v1
4 a0 argumentos passados
5 a1
6 a2
7 a3
8 t0 temporrios
. . .
15 t7
16 s0 variveis da funo
. . .
23 s7
24 t8 temporrios
25 t9
26 k0 reservado para o SO
27 k1
28 gp ponteiro para a rea global
29 sp ponteiro de pilha
30 fp ponteiro do frame
31 ra Endereo de retorno
Prof. Mateus Beck Rutzig
MIPS - Sumrio
Introduo
Registradores
Tipos de Dados
Instrues
Modos de Endereamento
Formato das Instrues
13
Prof. Mateus Beck Rutzig
Tipos de dados
Dados inteiros disponveis em instrues load e store
bytes
meias-palavras de 16 bits
palavras de 32 bits
Dados inteiros disponveis em instrues aritmticas e lgicas
meias-palavras de 16 bits (estendidos para 32 bits)
palavras de 32 bits
Dados em ponto flutuante
preciso simples em 32 bits (expoente: 8 bits, magnitude: 24 bits)
preciso dupla em 64 bits (expoente: 11 bits, magnitude: 53 bits)
Prof. Mateus Beck Rutzig
MIPS - Sumrio
Introduo
Registradores
Tipos de Dados
Instrues
Modos de Endereamento
Formato das Instrues
15
Prof. Mateus Beck Rutzig
Instrues Soma e Subtrao

add, sub, and, or, nor, xor
ADD Rd, Rt, Rs
(Rd <- Rt+Rs)



Cdigo C: A = B + C + D;
E = F - A;

Cdigo MIPS add $t0, $s1, $s2
add $s0, $t0, $s3
sub $s4, $s5, $s0


Instrues Aritmticas e
Lgicas
Prof. Mateus Beck Rutzig
Instrues Aritmticas e
Lgicas
Instrues de deslocamento varivel
Nmero de bits a deslocar est em um registrador
sllv, srlv shift lgico (entra 0 na extremidade)
srav shift aritmtico (duplica sinal)
Exemplo:
SRAV Rd, Rt, Rs (Rd <-Rt) deslocamento em Rs
Instrues de deslocamento constante
Nmero de bits a deslocar est no campo shamt (imediato)
sll, sra, srl
Exemplo:
SLL Rd, Rt, shamt (Rd <-Rt) deslocamento no campo
shamt

Prof. Mateus Beck Rutzig
Exemplo
Considere que os operandos esto associados,
da esquerda para direita, em
$s1, $s2, $s3, $s4, $s5
Cdigo em C
X = ( (A + B) + (C - D) )
Cdigo MIPS
add $t0, $s2, $s3
sub $t1, $s4, $s5
add $s1, $t0, $t1
Prof. Mateus Beck Rutzig
Instrues Load/Store


Instruo Load
Primeiro operando o destino
Lw Rt, imed16(Rs)
Rt <- Mem[est(imed16) + Rs]

lb, lh, lw load byte, halfword, word
sinal estendido em lb e lh
lbu, lhu load byte unsigned, halfword unsigned
sem extenso de sinal
endereamento sempre por base e deslocamento



deslocamento
Endereo base
Prof. Mateus Beck Rutzig
Instrues Load/Store


Instruo Store
ltimo operando o destino
SW Rt, imed16(Rs)
Mem[est(imed16) + Rs] <- Rt

sb, sh, sw store byte, halfword, word
endereamento sempre por base e deslocamento


deslocamento
Endereo base
Prof. Mateus Beck Rutzig
Exemplo


Cdigo C : A[8] = h + A[8];


Cdigo MIPS: lw $t0, 32($s3)
add $t0, $s2, $t0
sw $t0, 32($s3)

deslocamento
Endereo base
valor
Prof. Mateus Beck Rutzig
Instrues de Desvio
Condicional
Instrues Bne e Beq
Instrues que comparam dois registradores
bne $t0, $t1, Label
(PC = PC + (Imed16 com sinal estendido), se $t0=!$t1)


Cdigo em C: if (i==j) h = i + j;


Cdigo em MIPS: bne $s0, $s1, Label
add $s3, $s0, $s1
Label: ....
Prof. Mateus Beck Rutzig
Instrues de Desvio
Condicional
Instrues bgez, bgtz, blez, bltz
Instrues comparam um registrador com o valor 0
bgez $t0, Label
(PC = PC + (Imed16 com sinal estendido), se $t0>=0)

Cdigo em C: if (i<0) h = i + j;


Cdigo em MIPS: bgez $s0,Label
add $s3, $s0, $s1
Label: ....


Prof. Mateus Beck Rutzig
Instrues de Desvio
Incondicional
24
Instruo j
Endereo destino imediato concatenado com o PC)
J imed26
(PC <- PC[31:28] & Imed26 & 00)
Instruo jal (jump and link)
Jal imed26
($ra <-PC e PC <- PC[31:28] & Imed26 & 00)
Serve para chamadas de sub-rotina,
endereo de retorno salvo em $31
Instruo jr
Endereo destino contido em registrador
Jr $ra (PC <- $ra)
Serve para retornar de sub-rotina (Registrador?)

Prof. Mateus Beck Rutzig
Exemplo

Cdigo em C: if (i!=j)
h=i+j;
else
h=i-j;

Cdigo em MIPS beq $s4, $s5, Lab1
add $s3, $s4, $s5
j Lab2
Lab1: sub $s3, $s4, $s5
Lab2:
Prof. Mateus Beck Rutzig
Exemplo (2)

Cdigo em C:
while (save[i] == k) i = i + j;


Cdigo em MIPS:
Loop: add $t1, $s3, $s3
add $t1, $t1, $t1
add $t1, $t1, $s6
lw $t0, 0($t1)
bne $t0, $s5, Exit
add $s3, $s3, $s4
j Loop
Exit:

Prof. Mateus Beck Rutzig
Instruo de Auxlio de
Controle
Instruo SLT (Set on Less Than)
slt $t0, $s4, $s5
Compara os dois ltimos registradores
Se $s4 < $s5
$t0 = 1
Seno
$t0 = 0
Cdigo em C if (i>=0) h = i + j;


Cdigo em MIPS slt $t1, $s0, $r0
bne $t1,$r0,Label
add $s3, $s0, $s1
Label: ....



Prof. Mateus Beck Rutzig
Instrues Lgicas e Aritmticas com Imediatos
o Pequenas constantes so utilizadas muito freqentemente
A = A + 5;
addi $s4, $s3, 5 (constantes de 16 bits)
B++;
addi $s4, $s4, 1 (constantes de 16 bits)






Dados Imediatos
Outros exemplos
andi, ori, xori, slti

Prof. Mateus Beck Rutzig
Duas instrues so necessrias
Lui load upper immediate
16 bits mais significativos
lui $t0, 1010101010101010



Dados Imediatos (2)
E para constantes maiores que no podem ser
representadas em 16 bits???
Ex: 2,863,333,375 (10101010101010101111111111111111 )
1010101010101010 0000000000000000
1010101010101010 0000000000000000
0000000000000000 1111111111111111
1010101010101010 1111111111111111
ori

Ori Or com um imediato de 16 bits
16 bits menos significativos
ori $t0, $t0, 1111111111111111
Prof. Mateus Beck Rutzig
Movimentao de dados
$zero usado para sintetizar operaes populares
Carga de constante = soma imediata onde $zero um dos
operandos
addi $s5, $zero, 10
Mover de registrador para registrador = soma com $0
add $s6, $s2, $zero

Prof. Mateus Beck Rutzig
Multiplicao e Diviso
Instruo de multiplicao: mul
multiplica registradores rs e rt
resultado colocado em hi (32 msb) e lo (32 lsb)
Instruo de diviso: div
divide registrador rs pelo registrador rt
quociente colocado em lo
resto colocado em hi
Instrues de movimentao permitem transferir dados
entre hi e lo e os demais registradores
mfhi Rd, mflo Rd
mthi Rs, mtlo Rs
Prof. Mateus Beck Rutzig
Overflow
instrues unsigned no geram overflow
addu, addiu, divu, multu, subu, sltu, sltiu
instrues no-unsigned geram overflow
endereo da instruo que causou overflow colocado no
registrador EPC = registrador 0 de um co-processador
instruo mfc0 copia valor do EPC para outro registrador
qualquer
instruo jr (jump para endereo especificado por
registrador) usada para desviar para rotina de atendimento

32
Prof. Mateus Beck Rutzig
Algumas instrues
Category Instruction Example Meaning Comments
Arithmetic
add add $s1, $s2, $s3 $s1 = $s2 + $s3 Three operands; data in registers
subtract sub $s1, $s2, $s3 $s1 = $s2 - $s3 Three operands; data in registers
add immediate addi $s1, $s2, 100 $s1 = $s2 + 100 Used to add constants
load word lw $s1, 100($s2) $s1 = Memory[$s2 + 100] Word from memory to register
Data
Transfer
store word sw $s1, 100($s2) Memory[$s2 + 100] = $s1 Word from register to memory
load word lb $s1, 100($s2) $s1 = Memory[$s2 + 100] Byte from memory to register
Conditional
Branch
branch on equal beq $s1, $s2, 25 if ($s1 == $s2) go to PC
+ 4 + 100
Equal test; PC-relative branch
branch on not
equal
bne $s1, $s2, 25 if ($s1 != $s2) go to PC
+ 4 + 100
Not equal test; PC-relative
set on less than slt $s1, $s2, $s3 if ($s2 < $s3) $s1 = 1; else
$s1 = 0
Compare less than; for beq, bne

set less than
immediate
slti $s1, $s2, 100 if ($s2 < 100) $s1 = 1; else
$s1 = 0
Compare less than constant
Unconditional
Jump jump j 2500 go to 10000 Jump to target address
Prof. Mateus Beck Rutzig
MIPS - Sumrio
Introduo
Registradores
Tipos de Dados
Instrues
Modos de Endereamento
Formato das Instrues
34
Prof. Mateus Beck Rutzig
Modo registrador
para instrues aritmticas e lgicas: dado est em
registrador
para instrues de desvio incondicional: endereo est em
registrador (Jump Register)
Modos de endereamento
op rs rt rd
register
Prof. Mateus Beck Rutzig
Modos de endereamento
Modo base e deslocamento
para instrues load e store
base registrador inteiro de 32 bits
deslocamento de 16 bits contido na prpria instruo
immed op rs rt
register +
Memory
Prof. Mateus Beck Rutzig
Modos de endereamento
Modo relativo ao PC
para instrues de branch condicional
endereo a soma do PC com deslocamento contido na
instruo
deslocamento dado em palavras e precisa ser
multiplicado por 4
immed op rs rt
PC +
Memory
Prof. Mateus Beck Rutzig
Modos de endereamento
Modo imediato
para instrues aritmticas e lgicas com imediato
dado imediato de 16 bits contido na prpria instruo
dado estendido para 32 bits
extenso com sinal nas instrues aritmticas
extenso sem sinal nas instrues lgicas


immed op rs rt
Prof. Mateus Beck Rutzig
Modos de endereamento
Modo absoluto
para instrues de desvio incondicional
instruo tem campo com endereo de palavra com 26 bits
4 bits mais significativos obtidos do PC
s permite desvios dentro de uma rea de 256 Mbytes

Immed 26 bits
op
PC [31:28] &
Memory
Prof. Mateus Beck Rutzig
MIPS - Sumrio
Introduo
Registradores
Tipos de Dados
Instrues
Modos de Endereamento
Formato das Instrues
40
Prof. Mateus Beck Rutzig
Formatos das instrues
instrues tm 32 bits
todas tm opcode de 6 bits (indicando o que a instruo faz)
Apenas trs formatos diferentes
R
I
J
41
Prof. Mateus Beck Rutzig
Formatos das instrues
Instrues de tipo R
aritmticas e lgicas
movimentao entre registradores


42
op-code rs rt
6 5 5
rd
5
shamt funct
5 6
op: operao bsica da instruo, opcode
rs: 1o registrador de origem
rt: 2o registrador de origem
rd: registrador de destino
shamt: shift amount
funct: Funo, ou function code, indica a funo especfica que a
ALU ir fazer
Prof. Mateus Beck Rutzig
Formatos das instrues
Instrues de tipo I
loads, stores
operaes aritmticas e lgicas com operando imediato
desvios condicionais (branches)
desvios incondicionais para endereo em registrador
43
op-code rs rt
oper. imed. ou deslocam.
6 5 5 16
Prof. Mateus Beck Rutzig
Formatos das instrues
Primeiros 3 campos so os mesmos do R
Facilita para o hardware decodificar
Porm, o campo rt muda de significado
Formato R: rt a 2a origem
Formato I: rt pode ser destino

44
op-code rs rt
oper. imed. ou deslocam.
op-code rs rt
6 5 5
rd
5
shamt funct
5 6
R
I
Prof. Mateus Beck Rutzig
Formatos das instrues (6)
Instrues de tipo J
desvios com endereamento absoluto
chamada de sub-rotina
45
op-code
6
endereo
26
Prof. Mateus Beck Rutzig
op-code endereo
Trs formatos
46
op-code rs rt
oper. imed. ou deslocam.
op-code rs rt
6 5 5
rd
5
shamt funct
5 6
R
I
J
Prof. Mateus Beck Rutzig
Leitura
Patterson/Hennessy
2 e 3 Edies
Captulo 3
4 Edio
Captulo 2

47

Potrebbero piacerti anche