Organización del Computador I Verano
MIPS (2 de 2)
Basado en el capítulo 3 del libro de Patterson y Hennessy
Verano 2004
Profesora Borensztejn
Arquitectura MIPS (R2000)
•
•
•
•
Registros
Formato de Instrucción
Modos de Direccionamiento
Juego de Instrucciones
Registros Visibles
• 32 registros de 32 bits
• Todas las operaciones aritméticas operan
con registros
• Se identifican: $0,$1,....$31
• $0 está cableado a cero.
Formato MIPS de Instrucción
Son todas de 32 bits. Tres formatos:
31
• Tipo R
26
op
31
• Tipo I
• Tipo J
rs
26
op
31
21
16
rt
21
rs
rd
6
shamt
0
funct
16
rt
26
op
11
0
Address/inmediate
0
Target Address
Formato R (registro)
31
26
op
•
•
•
•
•
21
rs
16
rt
11
rd
6
shamt
0
funct
Op= 0
rs, rt = identificación de los registros fuente
rd = identificación del registro destino
shamt= cantidad de desplazamiento
funct= identifica la operación (por ej. add=32, sub=34)
Formato R :Ejemplos
31
• Add
$1, $2, $3
26
0
31
• Sub
$1, $2, $3
0
$1, $2, $3
Set Less Than
$31
Jump Register
3
2
0
16
21
26
16
21
11
16
6
11
0
34
6
0
1
0
32
0
1
3
6
0
1
3
2
11
0
42
si ($2<$3) entonces $1=1sino $1=0
31
• Jr
2
26
31
• Slt
21
26
0
21
31
PC<--$31
16
0
11
0
6
0
0
8
Formato I : Transferencias
31
op
26
21
rs
16
rt
31
• Lw $1, 100($2)
0
Address/inmediate
26
35
21
2
16
1
0
100
Load Word $1=M[$2+100]
31
• Sw $1, 100($2)
26
43
Store Word M[$2+100]=$1
21
2
16
1
0
100
Formato I : Saltos Inmediatos
31
26
op
21
rs
rt
31
• Beq
$1,$2,100
Branch Equal
26
21
1
16
2
0
100
si ($1=$2) entonces ir a PC+4+100
$1,$2,100
Branch Not Equal
0
Address/inmediate
4
31
• Bne
16
5
26
21
1
16
2
0
100
si ($1!=$2) entonces ir a PC+4+100
Formato I : Transferencias inmediatas
31
26
op
21
rs
16
rt
31
• Addi
$1,$2,100
0
Address/inmediate
26
8
21
2
16
1
0
100
$1=$2+100
31
• Lui
$1, 100
Load upper inmediato
15
26
21
0
16
1
$1=100*216
0
100
Formato J : Transferencias inmediatas
31
26
0
op
Target Address
31
• J
10000
26
2
10000
PC 27..2=10000
31
• Jal 10000
0
PC1..0=00
26
3
0
10000
JUMP AND LINK
$31=PC+4
PC 27..2=10000
PC1..0=00
Modos de Direccionamiento
•
•
•
•
•
Modo Registro
Modo Base
Modo Inmediato
Modo Relativo al PC
Modo Pseudodirecto
Modos de Direccionamiento
1 . Im m e d ia te a d d re s sin g
op
rs
rt
Im m e d ia te
2 . R e g is te r a d d r e ss in g
op
rs
rt
rd
. . .
fu n c t
R e g is te rs
R e g is te r
3 . B a s e a d d r e s s in g
op
rs
rt
M emory
Ad dress
+
R e g iste r
B y te
H a lfw o r d
4 . P C -re la tive a d d re ss in g
op
rs
rt
M emory
Ad dress
PC
+
W o rd
5 . P se u d o d ir e ct a d d r e s s in g
op
A d d re ss
PC
M emory
W o rd
W o rd
Ejemplo: Ensamblar
while (a[i]==k)
i=i+j;
I,j,k están en $s3,$s4 y $s5.
La dirección de A está en $s6
bucle:
add
add
add
lw
bne
add
j
$t1,$s3,$s3
$t1,$t1,$t1 #$t1=4*i
$t1,$t1,$s6
$t0,0($t1)
$t0,$s5, fin
$s3,$s3,$s4
bucle
fin:
Suponer que el bucle comienza
en la dirección 80000 de
memoria
Ejemplo: Ensamblar
80000
0
19
19
9
0
32
80004
0
9
9
9
0
32
80008
0
9
21
9
0
32
80012
35
9
8
80016
5
8
21
80020
0
19
20
80024
2
0
2
19
80000
0
32
Cálculo de la dirección destino de
salto
Branch Equal
si ($1=$2) entonces ir a PC+4+offset
El campo desplazamiento mide la cantidad
de words (4 bytes) que separan el valor
actual del PC de la dirección destino de salto
destino  PC  4   offset * 4 
Cálculo de la dirección destino de
salto
J 10000
PC 27..2=10000
PC1..0=00
El campo dirección es una dirección de
palabra, por lo tanto habrá que traducirla a
una dirección de byte. Observar que esto
conduce a una dirección de 28 bits. Los 4
bits mas altos del PC no se modifican.
Si quisiéramos modificar los 32 bits del PC,
se deberá usar la instrucción Jump Register
Tipos de Datos
•
•
•
•
•
Byte (8 bits)
Halfword (16 bits)
Word (32 bits)
Single FP (32 bits)
Double FP (64bits)
Juego de Instrucciones
• Aritméticas y Lógicas:
–
–
–
–
Operan con datos de 32 bits
Con/Sin Signo (op/opu)
Con/Sin operando inmediato (op/opi)
Aritméticas: suma, resta, división y multiplicación
•
•
•
•
add/addu/addi/addiu
sub/subu
div/divu
mult/multu
Las instrucciones de multiplicación
y división dejan sus resultados en
dos registros especiales: Hi y Lo
– Lógicas: and, nor, or, xor
•
•
•
•
and/andi
or/ori
xor/xori
nor
– Desplazamientos lógicos y aritméticos
• sll/sllv
• sra/srav/srl/srlv
Las versiones no variables,
especifican la cantidad de
desplazamiento en el campo shamt
de la instrucción
Juego de Instrucciones
• De Tratamiento de Constantes
– Instrucción: carga valor inmediato en mitad superior de registro
• lui
• De Comparación
– No hay flags==> inicializar registro destino si se cumple la
condición entre los registros fuente
– Con/Sin Signo (op/opu)
– Con/Sin operando inmediato (op/opi)
– Instrucciones:
• slt/sltu/slti/sltiu
Juego de Instrucciones
• De salto condicional
–
–
–
–
–
Especifican el desplazamiento en instrucciones , no en bytes
El desplazamiento es de 16 bits con signo
Incluyen comparación entre registros o contra el valor cero
Hay versiones para saltar y enlazar (guarda el PC+4)
Instrucciones:
• beq, bne: comparación entre registros
• bgez, bgt, blez, bltz : comparación con cero
• bgezal, bltzal: comparar con cero, saltar y enlazar
• De salto incondicional
–
–
–
–
Especifican el desplazamiento en instrucciones , no en bytes
El desplazamiento es de 26 bits (cuando no es modo registro)
Hay versiones para saltar y enlazar
Instrucciones:
• j, jal, jalr, jr
Juego de Instrucciones
• De carga y almacenamiento (load/store)
–
–
–
–
–
Carga byte, halfword, word.
Los datos deben estar alineados.
La carga de byte y media palabra puede ser con/sin signo
Hay instrucciones especiales para palabras no alineadas.
Instrucciones:
•
•
•
•
•
Las instrucciones load con signo,
lb, lbu, sb : para bytes
extienden el signo sobre el registro
lh, lhu,sh: para halfwords
completo
lw, sw: para words
lwl, lwr: para carga de words desalineados
swl, swr: para almacenamientos desalineados
Juego de Instrucciones
• De Transferencia
Hi y Lo, recordemos, usados en las
instrucciones de multiplicación y
división.
– Para transferir de/a los registros Hi y Lo
– Para transferencia entre coprocesadores
– Instrucciones:
Z indica el coprocesador. La unidad
• mfhi, mflo, mthi, mtlo
de coma flotante es el coprocesador 1
• mfcz, mtcz: mover desde/hacia registros del copro z
• Instrucciones para CF
– No las veremos (al menos por ahora......)
• Instrucciones para tratamiento de excepciones
– Las veremos mas adelante......
• Instrucción NOP: no hace nada........
FIN MIPS ISA
(2 de 2)
Descargar

Arquitectura de Procesadores Arquitectura MIPS