Beruflich Dokumente
Kultur Dokumente
Computadores
MIPS
Arquitetura MIPS
Microprocessor without Interlocked Pipeline Stages
Os processadores MIPS so usados em aplicaes tais como:
Computadores da Silicon Graphics;
muitos sistemas embarcados;
Dispositivos com Windows CE;
Roteadores da Cisco
Videogames como Nintendo 64 e Playstation.
Arquitetura MIPS
Curiosidades:
Super Mario 64 (1996):
O coelho nomeado MIPS em homenagem ao processador usado no sistema Nintendo 64.
Arquitetura MIPS
Arquitetura RISC (Reduced Instruction Set Computer)
Em meados de 1990s
Estimou-se que um em cada trs microprocessadores RISC era MIPS.
Influenciou processadores tais como o SPARC da Sun e Alpha.
Linguagem de Mquina
MIPS Instruction Set Architecture (ISA).
1300
1200
1100
1000
900
800
Other
SPARC
Hitachi SH
PowerPC
Motorola 68K
MIPS
IA-32
ARM
700
600
500
400
300
200
100
0
1998
1999
2000
2001
2002
Arquitetura MIPS
Arquitetura RISC (Reduced Instruction Set Computer)
Tipos de Dados:
Instrues esto formatadas em 32 bits.
Byte(8 bits), meia palavra (2 bytes), palavra (4 bytes)
Arquitetura MIPS
Arquitetura RISC (Reduced Instruction Set Computer)
Valor dos dados:
Nmeros so literalmente representados. e.g. 4
Caractere deve estar entre aspas simples. e.g. 'b'
String devem estar entre aspas duplas. e.g. "A string"
Registradores - MIPS
Registradores:
32 registradores de propsito geral.
Registradores so precedidos por $ na instruo de linguagem de mquina.
Duas formas de enderear os registradores:
Usando o nmero do registrador. Ex: $0 - $31.
Usando o nome alternative (macros). Ex: $t, $sp
Registradores especiais Lo e Hi so utilizados para armazenar a multiplicao e diviso.
No so diretamente endereveis. Contedo acessado atravs de instrues
especiais mfhi(move from Hi) and mflo(move from Lo).
Registradores - MIPS
Syscall- MIPS
Servios do sistemas (Entrada/Sada) esto disponveis:
Servio
Imprime inteiro
Imprime float
Imprime double
Imprime String
L inteiro
L float
L double
$v0
Argumentos
Resultado
1 $a0 = Inteiro a imprimir
2 $f12 = float a imprimir
3 $f12 = double a imprimir
4 $a0 = Endereo da string
$v0 contem o valor inteiro lido
5
$f0 contem o valor float lido
6
$f0 contem o valor double lido
7
L string
Sair
10
Syscall- MIPS
Para setar o valor de $v0:
# load immediate value
li $v0, (valor da constante)
Para setar o valor de $a0 para strings:
# load address from the memory
la $a0, (label da memria)
tipo_de_dados
valor
Arquitetura e Organizao de
Computadores
HELLO WORLD MIPS
string.
O que
string.
O que
Arquitetura e Organizao de
Computadores
CONJUNTO DE INSTRUES MIPS
a = b + c;
MIPS :
add a, b, c
a = b + c + d;
MIPS:
add a, b, c
add a, a, d
R-TYPE.
I-TYPE.
J-TYPE.
Arquitetura e Organizao de
Computadores
ORGANIZAO DA MEMRIA
Organizao da Memria
A indexao por bytes util, porm a maior parte dos tipos de dados usa palavras maiores que 1 byte.
Em MIPS uma palavra contm 32 bits (4 bytes).
Word Addresses
32 bits of data
32 bits of data
32 bits of data
12
32 bits of data
32 bits of data
...
Organizao da Memria
Visualizamos a memria como um grande e simples array unidimensional
endereado.
O endereo de memria e o ndice do array.
Endereamento de Byte significa o ndice do n-simo byte na memria.
byte 1
Byte 0
byte 2
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
byte 10
byte 3
A[12] = h + A[8];
MIPS:
lw $t0, 32($s3)
#addr of A in reg s3
add $t0, $s2, $t0
#h in reg s2
sw $t0, 48($s3)
Funo Swap
Imaginando uma subrotina:
swap:
sll $2,
add $2,
lw $15,
lw $16,
sw $16,
sw $15,
jr $31
$5, 2
$4, $2
0($2)
4($2)
0($2)
4($2)
Analisando o cdigo
Return
Address
8000
8004
8008
800C
8010
Instruo 1
Instruo 2
call swap
Instruo 3
Instruo 4
Jump to
8050
E $31 = 800C
8050
8054
8058
805C
8060
Instruo 1
Instruo 2
do swap
Instruo 3
Instruo 4
Analisando o cdigo
Vamos rodar no MARS e ver o que acontece...
MARS (MIPS Assembler and Runtime Simulator)
Instruo
Significa
Controle de Fluxo
Instrues para tomada de deciso
Alteram o fluxo de execuo
Alterar o fluxo muito simples, s alterar o valor atual de PC
Desvio condicional:
bne $t0, $t1, Label
beq $t0, $t1, Label
Exemplo:
if (i==j) h = i + j;
bne $s0, $s1, not_add
add $s3, $s0, $s1
not_add :
....
Controle de Fluxo
Desvio incondicional:
j label
Example:
if (i!=j)
h=i+j;
else
h=i-j;
Revisando
Instruo
Significa
add $s1,$s2,$s3
$s1 = $s2 + $s3
sub $s1,$s2,$s3
$s1 = $s2 $s3
lw $s1,100($s2)
$s1 = Memory[$s2+100]
sw $s1,100($s2)
Memory[$s2+100] = $s1
bne $s4,$s5,Label Next instr. is at Label if
$s4 $s5
beq $s4,$s5,Label Next instr. is at Label if
$s4 = $s5
j Label
Next instr. is at Label
Formatos:
op
rs
rt
rd
op
rs
rt
16 bit address
op
shamt
26 bit address
funct
instr
Jump para um endereo especificado, podendo ser uma label.
jr
$ra
Jump de para o endereo do registrador $ra. Usado para retorno de chamadas de subprocedimentos.
jal
addr
Seta $ra = PC+4 e desvia para um endereo especificado, usado para chamada de
procedimentos.
Controle de Fluxo
Outras formas de desvio condicional
if
slt $t0, $s1, $s2
else
$t0 = 0
Pseudoinstrues
blt $s1, $s2, reladdr
O Assembler converte para:
slt $1, $s1, $s2
bne $1, $zero, reladdr
No so implementadas em Hardware
O Assembler expande as instrues
O registrador 1, chamado de $at, reservado para converter
pseudoinstrues em cdigo de mquina.
Modos de Endereamento
Existem 5 formas de endereamento no MIPS. Atravs delas, efetuamos todas as operaes
necessrias:
Registrador: Representamos o dado passando o nome do registrador no qual ele est contido.
Ex: add $r1, $r2, $r2.
Relativo ao PC: Passamos o dado descrevendo o seu valor relativo ao endereo da instruo atual.
Ex: beq $r1, $r2, DESTINO.
Arquitetura e Organizao de
Computadores
I/O EM MIPS
Exerccio MIPS
Input em MIPS
Input em MIPS
Input em MIPS
Input em MIPS
Input em MIPS
Input em MIPS
Input em MIPS
Input em MIPS
Input em MIPS
I/O em MIPS
Agora desenvolva um programa em MIPS.
1. O programa deve ter o seu nome armazenado na memria.
2. Voc deve escrever uma frase e ele deve retornar o seu nome.
Leituras Recomendadas
Bsica
Patterson
Captulo 2 e Apndice B
Complementar
Stallings
Captulo 10