Documente Academic
Documente Profesional
Documente Cultură
Captulo 4.
Organizacin MIPS.
Luego de la introduccin informal del captulo anterior, se describirn con detalle las principales
caractersticas del procesador MIPS, desde un punto de vista del programador assembler.
El siguiente es un diagrama funcional del procesador MIPS, que se estudiar en este curso.
Memoria
CPU
FPU
Registros
Alu
Registros
Mul Div
Hi
Unidad
Aritmtica
Procesador
Traps y Manejo de Memoria
Coprocesador 0
BadVAddr
Cause
Status
EPC
Coprocesador 1
30-08-2008
4.1. Memoria.
Se denomina palabra (word) al contenido de una celda de la memoria. La cual puede leerse y
escribirse en una sola operacin.
MIPS posee palabras de 32 bits. Las direcciones de memoria corresponden a datos de 8 bits (o
sea un byte).
Entonces hay 4 bytes en una palabra. Cuando se accesa a una palabra se leen 4 bytes
simultneamente.
Existen dos formas de numerar los bytes contenidos en una palabra.
Big endian: (IBM, Motorola, MIPS)
Byte 0
Byte 1
Byte 2
Byte 3
30-08-2008
Organizacin MIPS
Direcciones
aumentan
hacia abajo
direccin de palabra
Byte 3
Byte 2
Byte 1
Byte 0
direccin de palabra
siguiente
Figura 4.3. Bytes en la memoria.
Little endian: (Intel, DEC)
Byte 3
Byte 2
Byte 1
Byte 0
Direcciones
aumentan
hacia abajo
direccin de palabra
Byte 0
Byte 1
Byte 2
Byte 3
direccin de palabra
siguiente
Figura 4.5. Bytes en la memoria.
El ancho de la direccin define el espacio de direccionamiento. Es decir el nmero total de
palabras que podra tener la memoria. ste tambin es el ancho del bus de direccin, que es el
conjunto de seales que lo forman. Los buses suelen describirse con notacin de arreglos, por
ejemplo: ADD[31..0], es el bus de direcciones (address); y ADD2 sera una de las 32 seales.
Las instrucciones ocupan una palabra alineada. Esto implica que las direcciones de
instrucciones son mltiplos de 4.
El alineamiento requiere que un objeto comience a ser almacenado en una direccin que sea un
mltiplo de su tamao.
Ejemplos de direcciones vlidas de palabras (en hexadecimal): 0, 4, 8, C, 10, 14, 18, 1C, 20,.....
Entonces la direccin 5 no es una direccin legal de una palabra.
Direcciones alineadas de objetos que ocupen medias palabras (en hexadecimal) son: 0, 2, 4, 6, 8,
A, C, .....
30-08-2008
Entonces la direccin 5 no es una direccin legal de un objeto que sea mltiplo de medias
palabras.
La definicin anterior, de alineamiento, implica que el acceso a objetos (datos, que pueden ser
de cualquier largo) y a instrucciones (que en este procesador son del tamao de una palabra de
memoria) se logre con un mnimo de accesos a memoria y con un mnimo de procesamiento.
(Usuales en Procesadores)
0, 1
30-08-2008
Organizacin MIPS
Si se desea tratar enteros largos de 64 bits, se tendr que desarrollar funciones, en base a
operaciones enteras de 32, que son la que posee el procesador, que implementen las operaciones
que se deseen(suma, resta, almacenar, cargar, etc.)
El procesador MIPS no tiene operaciones al bit. El procesador 8051, posee un diseo especial
que le permite manipular muy eficientemente los bits, razn por la cual se lo suele denominar
procesador booleano.
30-08-2008
27
28
29
30
31
30-08-2008
Organizacin MIPS
Debe notarse que una instruccin debe especificar: los operandos de entrada (y cmo
accesarlos), la operacin, dnde depositar el resultado y cul ser la prxima instruccin. En el
caso de instrucciones de mquina, las informaciones anteriores suelen codificarse en grupos de
bits o campos.
Op 6
Rs 5
Rt 5
Rd 5
Shamnt 5
Funct 6
30-08-2008
Op 6
Rs 5
Rt 5
Inmediato 16
Op 6
Direccin 26
Figura 4.9. Formato J.
30-08-2008
Organizacin MIPS
El campo de 26 bits se emplea para configurar una direccin de salto, como se ver ms
adelante.
Ejemplo
add
$t1, $t2,$t3
Significado en C.
$t1 = $t2 + $t3
$t1,$t2,$t3
$t1,$t2,$t3
subtract
unsigned
and
or
xor
nor
set on less
than
set less than
unsigned
subu
$t1,$t2,$t3
and
or
xor
nor
slt
$t1,$t2,$t3
$t1,$t2,$t3
$t1,$t2,$t3
$t1,$t2,$t3
$t1,$t2,$t3
sltu
$t1,$t2,$t3
Comentarios
si hay rebalse genera
excepcin
no genera excepcin
si hay rebalse genera
excepcin
no genera excepcin
or exclusivo.
Compara nmeros.
(con signo).
Compara nmeros naturales
(sin signo).
30-08-2008
10
slt compara el contenido de dos registros (que contienen nmeros con signo) y coloca (set) el
registro destino en uno si el registro en la segunda posicin es menor que el que est en la
tercera posicin.
Se emplea la notacin del lenguaje C, para representar la expresin que describe lo que realiza
la instruccin (semntica).
Sobre nmeros con signo.
Algunas de las instrucciones son para nmeros sin signo (llevan una u al final, por unsigned).
Los enteros se representan en una palabra de la memoria, y sus valores dependen del ancho de
palabra que tenga la memoria (en MIPS son de 32 bits).
El procesador emplea representacin complemento a dos para representar nmeros con signo.
Suponiendo un largo de palabra de la memoria de 3 bits (en lugar de 32), para simplificar la
explicacin, se tienen las siguientes representaciones:
Representacin
interna
Secuencia
Binaria
000
001
010
011
100
101
110
111
Sin
signo
0
1
2
3
4
5
6
7
Enteros
Comp. Comp.
a dos
a uno
+0
+0
+1
+1
+2
+2
+3
+3
-4
-3
-3
-2
-2
-1
-1
-0
SignoMagnitud
+0
+1
+2
+3
-0
-1
-2
-3
Fracciones
Sin
Con signo.
signo
Comp. dos
0
+0
1/8
+1/4
2/8
+2/4
3/8
+3/4
4/8
-4/4
5/8
-3/4
6/8
-2/4
7/8
-1/4
30-08-2008
Organizacin MIPS
11
A1
A0
Comp
B2
B1
B0
30-08-2008
12
A1
A0
Comp = 1
Cin
B2
~A2 B1
S. C.
~A1 B0
~A0
S. C.
S. C.
C0
S2 C1
S0
S1
Figura 4.13. Sumas y restas en complemento a dos.
C2
Ntese que Cin puede unirse a Comp. Para restar se requiere Cin = 1 y Comp = 1; y para sumar,
ambas seales deben ser cero.
La red combinacional que se ilustra en el diagrama anterior permite sumar y restar nmeros; se
ilustra el caso de la resta (B - A), ya que se ingresa al sumador el complemento a dos del
operando A.
El bloque, denominado S.C., por sumador completo de un bit, tiene tres entradas y dos salidas,
con la siguiente tabla de verdad:
Bi
0
0
0
0
1
1
1
1
Ai Cini
0
0
0
1
1
0
1
1
0
0
0
1
1
0
1
1
Entradas
Couti Si
0
0
0
1
0
1
1
0
0
1
1
0
1
0
1
1
Salidas
30-08-2008
Organizacin MIPS
13
En el caso de corrimientos aritmticos (de nmeros con signo, en complemento a dos), debe
notarse que las posiciones que quedan vacas por la izquierda deben rellenarse con el bit del
signo. Tambin, debido a que el sistema es posicional, un corrimiento aritmtico a la derecha es
equivalente a una divisin entera por dos, en la que se descarta el resto.
El siguiente ejemplo, con largo de palabra igual a cinco, ilustra lo anterior:
El entero decimal 14, con signo, se expresa en binario segn: 01110. Al correrlo a la derecha,
en una posicin, debera resultar el decimal 7. El cual en binario es: 00111.
El entero decimal -14, con signo, se expresa segn: 10010. Al correrlo aritmticamente a la
derecha, en una posicin, debera resultar el decimal -7. El cual en binario es: 11001.
Cuando sale un cero, por la derecha, el resultado es exacto.
El entero decimal 15, con signo, se expresa segn: 01111. Al correrlo a la derecha, en una
posicin, resulta el binario 00111, que equivale al 7. Se produce truncamiento.
El entero decimal -15, con signo, se expresa segn: 10001. Al correrlo a la derecha, en una
posicin, resulta el binario 11000, que equivale al decimal -8. Tambin se produce
truncamiento.
4.6.3. Corrimientos Aritmticos y Lgicos.
Formato R. (6 instrucciones). Todas de tres operandos.
SLL, SRL, SRA, SLLV, SRLV, SRAV
La palabra shift significa corrimiento. Left significa izquierdo. Right significa derecha.
Instruccin
shift left logical
shift right logical
shift right arithm.
shift left logical var.
shift right logical
var
Ejemplo
sll
$t1,$t2,10
srl
$t1,$t2,10
sra
$t1,$t2,10
sllv
$t1,$t2,$t3
srlv
$t1,$t2,$t3
Significado en C.
$t1 = $t2 << 10
$t1 = $t2 >> 10
$t1 = $t2 >> 10
$t1 = $t2 << $t3
$t1 = $t2 >> $t3
Comentarios
Inmediato(por constante)
Inmediato(por constante)
Con signo. Divide.
Variable(por registro)
Variable(por registro)
30-08-2008
14
Ejemplo
addi $t1,$t2,100
Significado en C.
$t1 = $t2 + 100
add
imm.
unsigned
and immediate
or immediate
xor immediate
set less than
imm
addiu $t1,$t2,100
andi
ori
xori
slti
$t1,$t2,10
$t1,$t2,10
$t1,$t2,10
$t1,$t2,100
Comentarios
Genera excepcin.
Con signo.
No genera excepcin.
30-08-2008
(7 instrucciones)
(5 instrucciones)
Organizacin MIPS
Instruccin
Load byte
15
Ejemplo
LB
$t1, 40($t2)
Load
byte LBU
unsigned
Load
LH
halfword
Significado en C.
$t1 = M[ ($t2) + 40]
$t1, 40($t2)
$t1, 40($t2)
Load
halfword
unsigned
Load word
Store byte
LHU
LW
SB
$t1, 40($t2)
$t1, 41($t2)
Store half
SH
$t1, 42($t2)
Store word
SW
$t1,100($t2)
Comentarios
rellena 24 primeras posiciones
de $t1 con bit signo.
rellena 24 primeras posiciones
de $t1 con ceros.
Rellena primeras 16 posiciones
de $t1 con bit signo. La
direccin
efectiva
debe
terminar en 00 en 10(en
binario).
rellena primeras 16 posiciones
de $t1 con ceros.
30-08-2008
16
Ejemplo
mult $t2,$t3
multu $t2,$t3
Significado en C.
Hi, Lo = $t2 * $t3
Hi, Lo = $t2 * $t3
Comentarios
producto de 64-bit con signo
producto de 64-bit sin signo
div
divide
unsigned
divu $t2,$t3
Lo = $t2 $t3
Hi = $2 mod $3
Lo = $t2 $t3
Hi = $t2 mod $t3
Lo = cuociente
Hi = resto
Lo = cuociente sin signo
Hi = resto
$t2,$t3
Ejemplo
mfhi $t1
mflo $t1
Significado en C.
$t1 = Hi
$t1 = Lo
Comentarios
Obtiene copia de Hi
Obtiene copia de Lo
Ejemplo
mthi $t1
mtlo $t1
Significado en C.
Hi = $t1
Lo = $t1
Comentarios
Carga registro Hi
Carga registro Lo
30-08-2008
Organizacin MIPS
17
Ejemplo
beq $t1,$t2,100
Significado en C.
if ($t1 == $t2)
PC =(PC+4)+100*4;
branch on not
eq.
bne $t1,$t2,100
if ($t1!= $t2)
PC =(PC+4)+100*4;
Comentarios
Test de igualdad. Bifurcacin
relativa a PC en el nmero de
instrucciones indicadas en el
campo inmediato (con signo).
Test de desigualdad, salto
relativo a PC.
30-08-2008
18
Puede usarse otro operador relacional (en lugar del menor, mostrado antes) a partir del cual
lograr todos los operadores relacionales.
4.6.7.2. Comparaciones de un registro con cero, seguida de bifurcacin.
assembler
BLEZ rs, offset
BGTZ rs, offset
BLTZ rs, offset
BGEZ rs, offset
BLTZAL rs, offset
BGEZAL rs, offset
Transferencias lgicas
if R[rs] <= 0 then PC =( PC+4) + offset*4;
if R[rs] > 0 then PC =( PC+4) + offset*4;
if R[rs] < 0 then PC =( PC+4) + offset*4;
if R[rs] >= 0 then PC =( PC+4) + offset*4;
if R[rs] < 0 then {ra = (PC+4); PC =(PC+4) + offset*4;}
if R[rs] >= 0 then {ra = (PC+4); PC =(PC+4) + offset*4;}
30-08-2008
Organizacin MIPS
19
30-08-2008
20
bloque:
.....
sub
brp
R, R, #1
bloque
b) Registro de Condiciones.
Los flags son ahora seteados slo por instrucciones especiales de comparacin. Las operaciones
aritmticas o de corrimiento no producen las condiciones. Esta forma evita los efectos laterales
y ofrece una metodologa ms simple para programar los bloques de decisin. Su desventaja
est en que se requieren ms instrucciones que en el caso anterior.
Por ejemplo, la repeticin de un bloque de instrucciones, que comienza en el rtulo bloque,
mientras el registro R sea mayor que cero, puede codificarse:
bloque:
.....
sub
R, R, #1
;R--, se le resta un inmediato de valor uno a R.
cmp
R, #0
;compara R con el inmediato 0. Setea flag.
brp
bloque
; salto condicional con el flag Plus(resultado positivo)
En MIPS se dispone de la instruccin set on less, que efecta una comparacin entre registros y
setea un registro. Y luego puede efectuarse una comparacin empleando el registro zero.
Se usa $t2 como registro de condiciones y $t1 como el registro R.
bloque:
.....
slt
bne
$t1, bloque
30-08-2008
Organizacin MIPS
Instruccin
jump
jump and link
21
Ejemplo
j rtulo
jal rtulo
Significado en C.
go to rtulo
$ra = (PC + 4);
go to rtulo;
Comentarios
Salto incondicional.
Para enlazar con subrutina (call )
Comentarios
go to $t1
Para retorno de subrutina
Para enlazar con subrutina (call )
Inmediato:
El valor del operando es el campo inmediato de 16 bits.
Si el operando es un valor lgico, se extiende a 32 agregando ceros.
Si el operando es aritmtico se extiende con signo a 32 bits.
Base+ndice:
Se usa en load, store.
El contenido de rs + inmediato (extendido en forma aritmtica) es la direccin efectiva.
El campo inmediato se interpreta como el nmero de bytes relativo al registro base.
30-08-2008
22
Relativo a PC:
En bifurcaciones (branch )
Al valor de PC se le suma el valor inmediato extendido en forma aritmtica.
El valor inmediato es el nmero de instrucciones que salta.
En saltos ( j, jal,jr):
El valor inmediato (que en este caso es de 26 bits) se multiplica por cuatro (de esta
forma quedan 28 bits), y los primeros 4 bit se toman del valor de PC de la instruccin siguiente
(formando as los 32 de la direccin).
Otros modos.
El direccionamiento del tipo registro indirecto, puede lograrse con el de base+offset, empleando
offset cero.
En base a estos direccionamientos pueden obtenerse otros ms complejos. Pero se requiere
ejecutar ms de una instruccin.
Existen algunos macros en el ensamblador que operan de este modo. Ejemplos son la (por load
address) y li (por load immediate), Move (por mover de un registro a otro).
Como no se puede cargar un inmediato de 32 bits en un registro. Para poder tener acceso a toda
la memoria, se dispone de la instruccin lui (Load upper immediate). Carga en los 16 bits ms
significativos de un registro el campo inmediato. Coloca ceros en los 16 menos significativos.
En repertorios con modos complejos de direccionamiento y operandos que hacen referencias a
la memoria suele emplearse un campo de la instruccin para especificar el modo de
direccionamiento; pero cuando se tiene un modelo de carga-almacenamiento y uno o dos modos
de direccionamiento suele especificarse el modo de direccionamiento a travs del cdigo de
operacin.
30-08-2008
Organizacin MIPS
23
1
v[k]
temp = v[ k];
v[ k] = v[ k+ 1];
v[ k+ 1] = temp;
temp
2
3
v[k+1]
Figura 4.27. Intercambio de valores. Swap.
Los nmeros sobre las flechas indican el orden de ejecucin de las instrucciones del programa
en C.
Un compilador traduce un lenguaje de alto nivel en assembler.
$t0
v[k]
1
4
v[k+1]
3 $t1
30-08-2008
24
1000
1001
1001
1000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0000
0100
0000
0100
Transferencias.
Las instrucciones podran describirse por las transferencias lgicas que implican, segn:
R[8] = MEM[ R[18] + sign_ext(0)]; PC = PC + 4;
R[9] = MEM[ R[18] + sign_ext(4)]; PC = PC + 4;
MEM[ R[18] + sign_ext(0)] = R[9]; PC = PC + 4;
MEM[ R[18] + sign_ext(4)] = R[8]; PC = PC + 4;
Las que a su vez puede ser descritas por secuencias de transferencias fsicas entre registros:
IR = MemInst[PC], PC=PC+4;
A = R[18];
S = A + signext(0);
M = MemDat[S];
R[8] = M.
Unidad Instruccin.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Unidad Registros. Escritura.
IR = MemInst[PC], PC=PC+4;
A = R[18];
S = A + signext(4);
M = MemDat[S];
R[9] = M.
Unidad Instruccin.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Unidad Registros. Escritura.
IR=MemInst[PC], PC=PC+4;
A=R[18], B=R[9];
S = A + signext(0);
MemDat[S] = B.
Unidad Instruccin.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
IR=MemInst[PC], PC=PC+4;
Unidad Instruccin.
30-08-2008
Organizacin MIPS
25
A=R[18], B=R[8];
S = A + signext(4);
MemDat[S] = B.
Las secuencias anteriores se explicarn ms adelante, y dependen de las conexiones internas del
procesador y de los recursos que ste disponga.
Control.
En forma alternativa puede describirse las secuencias de las seales de control que activan las
transferencias fsicas.
El hardware interpreta el lenguaje de mquina, mediante una secuencia de microinstrucciones,
cuya descripcin son las seales de control que se activan en cada ciclo del reloj:.
nPC_sel = +4, WEPC , WEIR ;
WEA ;
AluSrc = "Op32", ExtOp = sign, AluCtr = add,WES ;
MemRd, WEM ;
RegDst = "rt", Memtoreg = "mem", RegWr.
Unidad Instruccin.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Unidad Registros. Escritura.
Unidad Instruccin.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Unidad Registros. Escritura.
Unidad Instruccin.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
Unidad Instruccin.
Unidad Registros. Lectura.
Unidad Operaciones.
Unidad Memoria Datos.
30-08-2008
26
ndice general.
CAPTULO 4. .............................................................................................................................................1
ORGANIZACIN MIPS...........................................................................................................................1
4.1. MEMORIA...........................................................................................................................................2
4.2. NOMBRES DE LOS TIPOS DE DATOS. (USUALES EN PROCESADORES)...............................................4
4.3. REGISTROS MIPS. ..............................................................................................................................5
4.4. CICLO DE EJECUCIN. ........................................................................................................................6
4.5. FORMATOS DE INSTRUCCIONES MIPS. ..............................................................................................7
4.5.1. Formato R. Para Operaciones...................................................................................................7
4.5.2. Formato I. Para Inmediatas, transferencias y bifurcaciones....................................................8
4.5.3. Formato J. Para Saltos (Jumps). ...............................................................................................8
4.6. REPERTORIO MIPS I (TIPO LOAD-STORE). .........................................................................................9
4.6.1. Descripcin general de las Operaciones. ..................................................................................9
4.6.2. Aritmticas y Lgicas................................................................................................................9
4.6.3. Corrimientos Aritmticos y Lgicos........................................................................................13
4.6.4. Aritmticas y Lgicas. Inmediatas. .......................................................................................14
4.6.5. Accesos a Memoria. ................................................................................................................14
4.6.6. Multiplicacin y Divisin. (8 instrucciones, en formato R). ....................................................15
4.6.6.1. Inicio de multiplicacin y divisin entera. ........................................................................................16
4.6.6.2. Move result from...............................................................................................................................16
4.6.6.3. Move to HI or LO. ...........................................................................................................................16
Transferencias...........................................................................................................................24
Control. .....................................................................................................................................25
NDICE GENERAL. ....................................................................................................................................26
NDICE DE FIGURAS. ................................................................................................................................27
30-08-2008
Organizacin MIPS
27
ndice de figuras.
FIGURA 4.1. DIAGRAMA FUNCIONAL. ........................................................................................................... 1
FIGURA 4.2. NUMERACIN BIG-ENDIAN........................................................................................................ 2
FIGURA 4.3. BYTES EN LA MEMORIA............................................................................................................. 3
FIGURA 4.4. NUMERACIN LITTLE-ENDIAN. ................................................................................................. 3
FIGURA 4.5. BYTES EN LA MEMORIA............................................................................................................. 3
FIGURA 4.6. REGISTROS, SUS NOMBRES Y USOS. ........................................................................................... 6
FIGURA 4.7. FORMATO R. ............................................................................................................................. 7
FIGURA 4.8. FORMATO I. .............................................................................................................................. 8
FIGURA 4.9. FORMATO J. .............................................................................................................................. 8
FIGURA 4.10. ISTRUCCIONES ARITMTICAS Y LGICAS. FORMATO R............................................................ 9
FIGURA 4.11. INTERPRETACIN DE SECUENCIAS BINARIAS NUMRICAS. .................................................... 10
FIGURA 4.12. GENERACIN COMPLEMENTO A UNO..................................................................................... 11
FIGURA 4.13. SUMAS Y RESTAS EN COMPLEMENTO A DOS. ......................................................................... 12
FIGURA 4.14. TABLA DE VERDAD DEL SUMADOR COMPLETO. ..................................................................... 12
FIGURA 4.15. CORRIMIENTOS ARITMTICOS Y LGICOS. ............................................................................ 13
FIGURA 4.16. INSTRUCCIONES ARITMTICAS Y LGICAS............................................................................. 14
FIGURA 4.17. MOVIMIENTOS ENTRE REGISTROS Y MEMORIA. ..................................................................... 15
FIGURA 4.18. INICIO DE MULTIPLICACIN O DIVISIN................................................................................. 16
FIGURA 4.19. MUEVE EL RESULTADO. ........................................................................................................ 16
FIGURA 4.20. CARGA REGISTROS EN LA UNIDAD DE MULTIPLICACIN........................................................ 16
FIGURA 4.21. COMPARACIONES ENTRE REGISTROS..................................................................................... 17
FIGURA 4.22. OPERADORES RELACIONALES. .............................................................................................. 17
FIGURA 4.23. COMPARACIONES CON CERO. ................................................................................................ 18
FIGURA 4.24. DECISIN. ............................................................................................................................. 19
FIGURA 4.25. SALTOS Y ENLACES A SUBRUTINAS. ...................................................................................... 21
FIGURA 4.26. SALTOS Y ENLACES EN FORMATO R. ..................................................................................... 21
FIGURA 4.27. INTERCAMBIO DE VALORES. SWAP........................................................................................ 23
FIGURA 4.28. SWAP EN ASSEMBLER............................................................................................................ 23
30-08-2008