You are on page 1of 41

Organizacin

procesador MIPS

Procesador MIPS

Organizacin MIPS
Memoria

CPU

Alu

Registros

FPU
Registros

Mul Div
Hi

Lo

U. Aritmtica

Traps Manejo de Memoria

Procesador MIPS

Organizacin MIPS
Unidad

Aritmtica y Lgica (ALU).


Unidad Aritmtica entera, operaciones de
multiplicacin y divisin.
Unidad punto flotante (FPU).
Coprocesador
dedicado al manejo de
memoria cach y virtual.

Procesador MIPS

Memoria
Se

denomina palabra (word) al contenido de


una celda de memoria.
MIPS posee palabras de 32 bits. Las
direcciones de memoria correspondes a
datos de 8 bits (byte). 4 bytes en una palabra.
Para acceder a una palabra se leen 4 bytes.

Procesador MIPS

Memoria
Dos

formas de numerar los bytes contenidos


en una palabra:

Big endian (IBM, Motorola, MIPS)

Byte 0
Byte 1
Byte 2
Byte 3
La direccin del byte ms significativo termina en
00 (en binario), slo si la palabra est alineada
Direcciones
Aumentan
Hacia abajo

Byte 3
Byte 2
Byte 1
Byte 0

Direccin de palabra
Direccin de palabra

Procesador MIPS

Memoria
Dos

formas de numerar los bytes contenidos


en una palabra:

Little endian (Intel, Dec)

Byte 3
Byte 2
Byte 1
Byte 0
La direccin del byte menos significativo termina
en 00 (en binario), slo si la palabra est alineada
Direcciones
Aumentan
Hacia abajo

Byte 0
Byte 1
Byte 2
Byte 3

Direccin de palabra
Direccin de palabra
siguiente

Procesador MIPS

Memoria
El

ancho de la direccin define el espacio de


direccionamiento.
Las instrucciones ocupan una palabra
alineada. 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.

Procesador MIPS

Nombres de los Tipos de Datos


Bit:

0,1
Bit String
4 bits
8 bits
16 bits
32 bits
64 bits

nibble
byte
half-word
word
double-word

Procesador MIPS

Nombres de los Tipos de Datos


Character

ASCII Cdigo de 7 bits por smbolo.

Decimal(BCD)

Dgitos de 0-9 codificados desde 0000 hasta 1001

Enteros

Sin signo y con signo en complemento dos.


Las representaciones de nmeros binarios con signo se
tratarn ms adelante.

Reales

Precisin Simple. Precisin Doble.


Las representaciones de nmeros reales en binario se
tratarn ms adelante.

Procesador MIPS

Caractersticas
Puede

mover bytes, medias palabras y


palabras, desde registro hacia la memoria y
viceversa.
Puede procesar nmeros enteros binarios de
32 bits, con y sin signo .
Capacidad de procesar nmeros binarios
reales o de punto flotante en simple y doble
precisin.
El procesador MIPS no tiene operaciones al
bit.

Procesador MIPS

Registros
Posee 32 registros de 32 bits cada uno.
Se requieren 5 bits para especificar un
registro.
Poseen nombres simblicos y nmeros.
Su uso adems se rige bajo algunos
convenios.

Procesador MIPS

Registros

Nombre Registro

Nmero

Uso

zero

Constante 0

at

Reservado para el assembler

v0

v1

Para evaluacin de expresiones y


retorno de resultados de una funcin

a0

Argumento 1

a1

Argumento 2

a2

Argumento 3

a3

Argumento 4

t0

Temporal (no se preserva a travs de los llamados)

t1

Temporal (no se preserva a travs de los llamados)

t2

10

Temporal (no se preserva a travs de los llamados)

t3

11

Temporal (no se preserva a travs de los llamados)

t4

12

Temporal (no se preserva a travs de los llamados)

t5

13

Temporal (no se preserva a travs de los llamados)

t6

14

Temporal (no se preserva a travs de los llamados)

t7

15

Temporal (no se preserva a travs de los llamados)

Procesador MIPS

Registros

Nombre Registro

Nmero

Uso

s0

16

Temporal que debe preservarse entre llamados a funciones

s1

17

Temporal que debe preservarse entre llamados a funciones

s2

18

Temporal que debe preservarse entre llamados a funciones

s3

19

Temporal que debe preservarse entre llamados a funciones

s4

20

Temporal que debe preservarse entre llamados a funciones

s5

21

Temporal que debe preservarse entre llamados a funciones

s6

22

Temporal que debe preservarse entre llamados a funciones

s7

23

Temporal que debe preservarse entre llamados a funciones

t8

24

Temporal (no se preserva a travs de los llamados)

t9

25

Temporal (no se preserva a travs de los llamados)

k0

26

Reservado para el ncleo del Sist. Operativo

k1

27

Reservado para el ncleo del Sist. Operativo

gp

28

Puntero al rea global de datos

sp

29

Puntero al tope de la pila. Stack pointer

fp

30

Puntero a zona de variables en la pila. Frame pointer

ra

31

Direccin de retorno (usado en invocaciones a funciones)

Procesador MIPS

Ciclo de Ejecucin
Corresponde

a una secuencia repetitiva de los


siguientes pasos:

Bsqueda de instruccin:
Obtiene desde la memoria la instruccin que ser ejecutada.

Decodificacin de Instruccin:
Determina el tipo de instruccin y su largo en caso de que la
instruccin est compuesta de varias palabras.
Debe especificarse cmo estarn codificados los operandos, la
operacin y la direccin de la prxima instruccin.

Procesador MIPS

Ciclo de Ejecucin

Bsqueda de Operandos:
Localiza y obtiene los datos que son los operandos de la
instruccin.
Accesar registros o la memoria, o decodificar valores que vienen
contenidos en la misma instruccin (operandos inmediatos), lo
cual debe especificarse en la instruccin.

Ejecucin:
Realiza la operacin con los operandos de entrada para generar
un resultado y determina el estado de ste.

Procesador MIPS

Ciclo de Ejecucin

Almacenamiento de resultados:
Deposita los resultados en la memoria de datos o en registros.
Esto se especifica en el cdigo de la instruccin.

Determinacin de prxima instruccin:


Determina cual ser la prxima instruccin a ejecutarse.
Incluye mecanismos para saltos incondicionales, bifurcaciones o
llamado a subrutinas.

Procesador MIPS

Formato de Instrucciones MIPS


MIPS

posee tres formatos de instrucciones


denominados R, I y J

Procesador MIPS

Formato de Instrucciones MIPS


Formato
Op 6

R para operaciones.
Rs 5

Rt 5

Rd 5

Shamnt 5

Funct 6

Tres registros, dos para especificar las fuentes de datos y el


lugar para almacenar el resultado.
Instrucciones de corrimiento utilizan el campo Shamnt (Shift
Amount), especifica el nmero de posiciones de bits que se
desplazar uno de los operandos.
Un campo para expandir el cdigo de operacin.

Procesador MIPS

Formato de Instrucciones MIPS


Formato

I para
bifurcaciones.
Op 6

Rs 5

Rt 5

inmediatas,

transferencias

Inmediato 16

Se emplean 16 bits, para programar un valor constante.


Basta un registro de operando y otro para depositar el
resultado.
Las operaciones lgicas se extienden los 16 bits a 32 con
ceros en la parte ms significativa.
Las operaciones aritmticas se extienden con signo.

Procesador MIPS

Formato de Instrucciones MIPS


Formato

I para
bifurcaciones.
Op 6

Rs 5

Rt 5

inmediatas,

transferencias

Inmediato 16

En transferencias el registro especificado en rs se emplea


como registro base y el valor inmediato se interpreta como
desplazamiento con signo, rt especifica el registro donde se
leer o ser escrito desde o hacia la memoria

Procesador MIPS

Formato de Instrucciones MIPS


Formato
Op 6

J para saltos

Direccin 26

Posee un campo de 26 bits que se emplea para generar la


direccin efectiva de salto

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Aritmticas y Lgicas.
Formato R. (10 instrucciones). Todas de tres operandos.

Add, AddU, Sub, SubU, And, Or, Xor, Nor, SLT, SLTU
Instruccin
Ejemplo
Significado
add
add
$t1,$t2,$t3
$t1 = $t2 + $t3
add unsigned
addu
$t1,$t2,$t3
$t1 = $t2 + $t3
subtract
sub
$t1,$t2,$t3
$t1 = $t2 $t3
subtract unsigned subu
$t1,$t2,$t3
$t1 = $t2 $t3
and
and
$t1,$t2,$t3
$t1 = $t2 & $t3
or
or
$t1,$t2,$t3
$t1 = $t2 | $t3
xor
xor
$t1,$t2,$t3
$t1 = $t2 ^ $t3
nor
nor
$t1,$t2,$t3
$t1 = ~($t2 | $t3)
set on less than slt
$t1,$t2,$t3
if ($t2 < $t3) $t1=1; else $t1=0;

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Corrimientos

Aritmticos y Lgicos.

SLL, SRL, SRA, SLLV, SRLV, SRAV (6 instrucciones)


La palabra shift significa corrimiento. Left significa izquierdo. Right significa
derecha.
Instruccin
Ejemplo
Significado
shift left logical
sll
$t1,$t2,10
$t1 = $t2 << 10
shift right logical
srl
$t1,$t2,10
$t1 = $t2 >> 10
shift right arithm.
sra
$t1,$t2,10
$t1 = $t2 >> 10
shift left logical var.
sllv
$t1,$t2,$t3
$t1 = $t2 << $t3
shift right logical var
srlv
$t1,$t2,$t3
$t1 = $t2 >> $t3

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento


Formato

I Aritmticas y Lgicas. Inmediatas.

AddI, AddIU, AndI, OrI, XorI, SLTI, SLTIU, LUI (8 instrucciones)


Instruccin
Ejemplo
Significado
add immediate
addi $t1,$t2,100
$t1 = $t2 + 100
add imm. unsigned
addiu $t1,$t2,100 $t1 = $t2 + 100
and immediate
andi $t1,$t2,10
$t1 = $t2 & 10
or immediate
ori $t1,$t2,10
$t1 = $t2 | 10
xor immediate
xori $t1,$t2,10
$t1 = $t2 ^10
set less than imm
slti $t1,$t2,100
if ($t2 < 100) $t1=1;
else $t1=0;

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Formato

I Accesos a Memoria.

LB, LBU, LH, LHU, LW, LWL, LWR


(7 instrucciones)
SB, SH, SW, SWL, SWR
(5 instrucciones)
Instruccin
Ejemplo
Significado
Load byte
lb
$t1, 40($t2)
$t1 = M[ ($t2) + 40]
Load byte unsigned
lbu
$t1, 40($t2)
$t1 = M[ ($t2) + 40]
Load halfword
lh
$t1, 40($t2)
$t1 = M[ ($t2) + 40]
Load halfword unsig.
lhu
$t1, 40($t2)
$t1 = M[ ($t2) + 40]
Load word
lw
$t1, 40($t2)
$t1 = M[ ($t2) + 40]
Store byte
sb
$t1, 41($t2)
M[ ($t2)+ 41] = $t1
Store half
sh
$t1, 42($t2)
M[ ($t2)+ 42] = $t1
Store word
sw
$t1,100($t2)
M[ ($t2)+ 100] = $t1

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Multiplicacin

y divisin entera

Instruccin
Ejemplo
multiply
mult $t2,$t3
multiply unsigned multu $t2,$t3
divide
div $t2,$t3
divide unsigned

divu

$t2,$t3

Significado
Hi, Lo = $t2 * $t3
Hi, Lo = $t2 * $t3
Lo = $t2 $t3
Lo = cuociente
Hi = $2 mod $3 Hi = resto
Lo = $t2 $t3
Hi = $t2 mod $t3 resto

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Move

result from.

Mueve el resultado de la multiplicacin o divisin a un registro del


procesador. MFHI, MFLO
Instruccin
Ejemplo
Significado
Move from Hi
mfhi $t1
$t1 = Hi
Move from Lo
mflo $t1
$t1 = Lo

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Move

to HI or LO .

MTHI, MTLO rd
Instruccin
Move to Hi
Move to Lo

Ejemplo
mthi $t1
mtlo $t1

Significado
Hi = $t1
Lo = $t1

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Formato

I Comparacin y bifurcaciones

Instruccin
Ejemplo
branch on equal beq $t1,$t2,100
branch on not eq. bne $t1,$t2,100

Significado
if ($t1 == $t2)
PC = (PC+4)+100*4;
if ($t1!= $t2)
PC = (PC+4)+100*4;

Comparacin con cero


bgtz rs, offset if R[rs] > 0 then PC =( PC+4) + offset*4;
bltz rs,offset if R[rs] < 0 then PC =( PC+4) + offset*4;
bgez rs,offset if R[rs] >= 0 then PC =( PC+4) + offset*4;
bltzal rs, offset if R[rs] < 0 then {ra = (PC+4); PC =(PC+4) + offset*4;}
bgezal rs,offset if R[rs] >= 0 then {ra = (PC+4); PC =(PC+4) + offset*4;}

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Formato

J Saltos incondicionales
J, JR, JAL

Instruccin
Jump
jump and link
(Formato R)
jump register
jump and link

Ejemplo
j rtulo
jal rtulo

Significado
salto rtulo.
$ra = (PC + 4); salto rtulo;

jr $t1
jr $ra
jalr $t1

PC = $t1;
PC = $ra
$ra = (PC + 4); PC = $t1;

Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)


Control

de coprocesadores

10 instrucciones, en formato R).


ejemplo: syscall, break, nop, etc..

Procesador MIPS

Modos de direccionamiento MIPS.


Registro

(directo):

El valor efectivo del operando es el contenido en el registro.

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.

Procesador MIPS

Modos de direccionamiento MIPS.


Relativo

En bifurcaciones

a PC:

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)
Los primeros 4 bit se toman del valor de PC de la instruccin
siguiente (formando as los 32 de la direccin).

Procesador MIPS

Niveles de Representacin
Lenguaje

de alto nivel, ejemplo C.

a[x] = a[x+1];
x++;

Assembler

Simblico.

add $t1, $t2, $t3


lw $t5, 4($t1)

Lenguaje

de Mquina. Binario.
1010 1110 0100 1001 0000 0000 0000 0000

Procesador MIPS

Niveles de Representacin
Transferencias

Transferencias Lgicas

Ej. R[8] = MEM[ R[18] + sign_ext(0)]; PC = PC + 4;

Transferencias Fsicas.

Ej.
IR = MemInst[PC], PC=PC+4; Unidad Instruccin.
A = R[18];
Unidad Registros. Lectura.
S = A + signext(4);
Unidad Operaciones.
M = MemDat[S];
Unidad Memoria Datos.
R[9] = M
Unidad Registros. Escritura.

Procesador MIPS

Niveles de Representacin
Control

Puede describirse las secuencias de las seales


de control que activan las transferencias fsicas.

nPC_sel = +4, WEPC , WEIR ;


Unidad Instruccin.
WEA ;
Unidad Registros. Lectura.
AluSrc = "Op32", ExtOp = sign, AluCtr = add, WES ; Unidad Operaciones.
MemRd, WEM ;
Unidad Memoria Datos.
RegDst = "rt", Memtoreg = "mem", RegWr. Unidad Registros. Escritura.

Procesador MIPS

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.
El complemento a dos es el complemento a uno
ms uno (sumarle uno en binario).
Para obtener un nmero en complemento a uno,
basta cambiar sus unos por ceros y sus ceros
por unos.

Procesador MIPS
Por ejemplo para una palabra de tres
cifras (3 bits).
El negativo de un nmero se obtiene
complementndolo, excepto para el mayor
negativo que no tiene complemento en
tres cifras.
De esta manera para restar, basta sumar
el complemento.

Procesador MIPS

El complemento a uno de una palabra de tres


bits:

Si Comp ==1 se tiene que B es complemento uno


de A; en caso contrario: B = A.

Procesador MIPS

Realizar sumas o restas en complemento


dos. Mediante un sumador binario, basta
incorporar un uno a la reserva de entrada
y pasar el sustraendo en complemento a
uno, para realizar restas.

Procesador MIPS

Sumador completo de un bit, tiene tres


entradas y dos salidas, con la siguiente
tabla de verdad:

You might also like