Documente Academic
Documente Profesional
Documente Cultură
MIPS
MIPS (Microprocessor without Interlocked Pipeline
Arquitectura de Computadoras
RISC/CISC
Ejemplos de RISC incluyen Alpha, ARC, ARM,
Universidad de Sono
Arquitectura de Computadoras
MIPS
El primer MIPS fue desarrollado en 1981 por
Arquitectura de Computadoras
Aritmtica MIPS
Todas las instrucciones aritmticas tienen 3
operandos
El orden de los operandos es fija (primero el
operando destino)
Ejemplo:
C: A = B + C
MIPS:
add $s0, $s1, $s2
(las variables son asociadas por el compilador)
Universidad de Sono
Arquitectura de Computadoras
Aritmtica MIPS
La simplicidad favorece la regularidad.
C: A = B + C + D;
E = F - A;
MIPS:
add $t0, $s1, $s2
add $s0, $t0, $s3
sub $s4, $s5, $s0
Los operandos de las instrucciones aritmticas
deben ser registros.
Universidad de Sono
Arquitectura de Computadoras
Registros?
Un registro es una memoria integrada en la
CPU.
Tienen poca capacidad, 4 bytes (32 bits) en
MIPS, pero de acceso muy rpido.
Se usan para guardar valores temporales y
resultados de operaciones aritmticas.
Universidad de Sono
Arquitectura de Computadoras
principal.
Universidad de Sono
Arquitectura de Computadoras
Universidad de Sono
Arquitectura de Computadoras
Organizacin de la
memoria
MIPS usa byte addressing, el ndice apunta a
un byte de memoria.
0
1
2
3
4
5
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
8 bits of data
...
Universidad de Sono
Arquitectura de Computadoras
10
Organizacin de la
memoria
Las palabras son de 4 bytes (32 bits).
Los registros son de 4 bytes (32 bits).
La memoria est alineada. Las palabras
Datos 32 bits
Datos 32 bits
Datos 32 bits
Datos 32 bits
Universidad de Sono
Arquitectura de Computadoras
11
Organizacin de la
memoria
MIPS se puede configurar por hardware como
big-endian o littleendian.
Se usan 32 bits para direccionar la memoria.
La memoria tiene:
232 bytes con direccin desde 0 hasta 2 32 1.
230 palabras con direccin desde 0 hasta 2 32 4.
Arquitectura de Computadoras
12
Instrucciones de referencia
a memoria
Instrucciones lw (load word) y sw (store
word).
C:
A[8] = h + A[8];
MIPS:
lw $t0, 32($s3)
add $t0, $s2, $t0
sw $t0, 32($s3)
s2 valor de h
s3 direccin A[0]
t0 valor de A[8]
Universidad de Sono
; t0 = Memoria[s3 + 32]
; t0 = s2 + t0
; Memoria[s3 + 32] = t0
Ojo:
lw el destino va primero.
sw el destino va segundo.
Arquitectura de Computadoras
13
Operandos de memoria
En las instrucciones de memoria, a la constante
Universidad de Sono
Arquitectura de Computadoras
14
En resumen:
MIPS
Carga palabras pero direcciona bytes.
Puede ser big-endian o little-endian.
Aritmtica usa solamente registros.
Instruccin
Significado
Universidad de Sono
Arquitectura de Computadoras
15
El primer ejemplo
swap(int v[], int k)
{ int temp;
temp = v[k]
v[k] = v[k+1];
}
v[k+1] = temp;
swap:
muli $2, $5, 4
add $2, $4, $2
lw $15, 0($2)
lw $16, 4($2)
sw $16, 0($2)
sw $15, 4($2)
jr $31
Universidad de Sono
Arquitectura de Computadoras
16
El primer ejemplo
swap:
swap:
1 $2 = $5 * 4 ; $5 tiene el valor de k
1 muli $2, $5, 4
2 $2 = $4 + $2 ; $4 apunta a v[0], $2
2 add $2, $4,
apunta a v[k]
$2
3 $15 = Mem[$2+0] ; $15 tiene el valor de
3 lw $15, 0($2)
v[k]
4 lw $16, 4($2)
4 $16 = Mem[$2+4] ; $16 tiene el valor de
v[k+1]
5 sw $16, 0($2)
5 Mem[$2+0] = $16 ; $16 se guarda en
6 sw $15, 4($2)
v[k]
7 jr $31
6 Mem[$2+4] = $15 ; $15 se guarda en
v[k+1]
7 jr $31 ; return
Universidad de Sono
Arquitectura de Computadoras
17
El primer ejemplo
Ahora en seudo-C con apuntadores
inicializa
1
2
3
4
5
6
$2 es (&v[k] - &v[0])
$2 apunta a v[k]
$15 tiene el valor de v[k]
$16 tiene el valor de v[k+1]
$16 se guarda en v[k]
$15 se guarda en v[k+1]
Arquitectura de Computadoras
18
El primer ejemplo
Y ahora en C normal:
Arquitectura de Computadoras
19
Lenguaje de mquina
El lenguaje de mquina es lenguaje binario.
El hardware solo entiende bits.
El ensamblador traduce cada instruccin de
Universidad de Sono
Arquitectura de Computadoras
20
Lenguaje de mquina
00000010001100100100100000100000 se
descompone en:
000000 es el opcode del add.
10001 es el nmero del registro $s1.
10010 es el nmero del registro $s2.
01001 es el nmero del registro $t0.
00000 son bits de relleno (dont care).
100000 es el cdigo de la suma de registros.
Universidad de Sono
Arquitectura de Computadoras
21
Lenguaje de mquina
En general, la instruccin
add destino, fuente1, fuente2
genera el cdigo mquina
000000fffffgggggdddddxxxxx100000
donde
1.
2.
3.
4.
5.
6.
Universidad de Sono
Arquitectura de Computadoras
22
Formatos de instruccin
Hay 3 formatos de instruccin:
Formato R. Todos los operandos son registros.
Formato I. Hay un operando inmediato
(nmero).
Formato J. La instruccin es un brinco (jump).
Universidad de Sono
Arquitectura de Computadoras
23
Formatos de instruccin
Ejemplos:
Formato R.
Arquitectura de Computadoras
24
Instrucciones de control
Instrucciones de toma de decisin.
Alteran el flujo de control.
En otras palabras, cambian la siguiente
Universidad de Sono
Arquitectura de Computadoras
25
Instrucciones de control
En MIPS hay dos instrucciones de brinco
condicional:
1. beq $s, $t, C
; brinca a la direccin C si $s ==
$t.
2. bne $s, $t, C
; brinca a la direccin C si $s !=
$t.
Universidad de Sono
Arquitectura de Computadoras
26
Instrucciones de control
Ejemplo:
C:
if (i == j)
h = i + j;
MIPS:
bne $t1, $t2, L1
$t2: valor de j
add $t0, $t1, $t2
L1:
Universidad de Sono
Arquitectura de Computadoras
; $t1: valor de i,
; $t0: valor de h
27
Instrucciones de control
En MIPS hay tres instrucciones de brinco incondicional:
1. j C
; brinca a la direccin C
2. jr $r
3. jal C
Universidad de Sono
Arquitectura de Computadoras
28
Instrucciones de control
Ejemplo:
C:
if (i != j)
h = i + j;
else
h = i j;
MIPS:
L1:
L2:
Universidad de Sono
;
;
;
;
$s1 = i, $s2 = j
$s0 = h
brinca al final
$s0 = h
Arquitectura de Computadoras
29
Instrucciones de control
Ejemplo:
C foo ();
void foo ()
{
}
MIPS: jal foo ; brinca a foo, guarda la direccin de
; regreso en el registro 31
foo:
jr $31
; regresa al programa principal
Universidad de Sono
Arquitectura de Computadoras
30
Instrucciones de control
MIPS tiene beq (brinca si es igual) y bne (brinca
Arquitectura de Computadoras
31
Instrucciones de control
Ejemplo:
C:
if (i < j)
h = i + j;
else
h = i j;
MIPS:
beq
add
j L2
L1:
L2:
Universidad de Sono
Arquitectura de Computadoras
32
Instrucciones de control
Ejemplo:
C:if (i <= j)
h = i + j;
else
h = i j;
MIPS: beq $s1, $s2, L3
; brinca si $s1 == $s2
slt $s3, $s1, $s2
; checa su $s1 < $s2
beq $s3, $zero, L1 ; $zero siempre vale 0
L3: add $s0, $s1, $s2
; then $s0 = $s1 + $s2
j L2 ; brinca al final
L1: sub $s0, $s1, $s2
; else $s0 = $s1 - $s2
L2:
Universidad de Sono
Arquitectura de Computadoras
33
Resumen
Instruccin
Significado
Arquitectura de Computadoras
34
Constantes
Las instrucciones con formato I (inmediato),
Arquitectura de Computadoras
35
Constantes
Se pueden tener constantes de 32 bits, pero
;
;
;
;
Arquitectura de Computadoras
36