Organización procesador MIPS

Anuncio
Organización
procesador MIPS
Procesador MIPS

Organización MIPS
Memoria
CPU
Alu
Registros
FPU
Registros
Mul Div
Hi
Lo
U. Aritmética
Traps Manejo de Memoria
Procesador MIPS

Organización MIPS
 Unidad
Aritmética y Lógica (ALU).
 Unidad Aritmética entera, operaciones de
multiplicación y división.
 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 dirección del byte más significativo termina en
00 (en binario), sólo si la palabra está alineada
Direcciones
Aumentan
Hacia abajo
Byte 3
Byte 2
Byte 1
Byte 0
Dirección de palabra
Dirección 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 dirección del byte menos significativo termina
en 00 (en binario), sólo si la palabra está alineada
Direcciones
Aumentan
Hacia abajo
Byte 0
Byte 1
Byte 2
Byte 3
Dirección de palabra
Dirección de palabra
siguiente
Procesador MIPS

Memoria
 El
ancho de la dirección define el espacio de
direccionamiento.
 Las instrucciones ocupan una palabra
alineada. Implica que las direcciones de
instrucciones son múltiplos de 4.
 El alineamiento requiere que un objeto
comience a ser almacenado en una dirección
que sea un múltiplo de su tamaño.
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 Código de 7 bits por símbolo.
 Decimal(BCD)

Dígitos de 0-9 codificados desde 0000 hasta 1001
 Enteros


Sin signo y con signo en complemento dos.
Las representaciones de números binarios con signo se
tratarán más adelante.
 Reales


Precisión Simple. Precisión Doble.
Las representaciones de números reales en binario se
tratarán más adelante.
Procesador MIPS

Características
 Puede
mover bytes, medias palabras y
palabras, desde registro hacia la memoria y
viceversa.
 Puede procesar números enteros binarios de
32 bits, con y sin signo .
 Capacidad de procesar números binarios
reales o de punto flotante en simple y doble
precisión.
 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 simbólicos y números.
 Su uso además se rige bajo algunos
convenios.

Procesador MIPS

Registros
Nombre Registro
Número
Uso
zero
0
Constante 0
at
1
Reservado para el assembler
v0
2
v1
3
Para evaluación de expresiones y
retorno de resultados de una función
a0
4
Argumento 1
a1
5
Argumento 2
a2
6
Argumento 3
a3
7
Argumento 4
t0
8
Temporal (no se preserva a través de los llamados)
t1
9
Temporal (no se preserva a través de los llamados)
t2
10
Temporal (no se preserva a través de los llamados)
t3
11
Temporal (no se preserva a través de los llamados)
t4
12
Temporal (no se preserva a través de los llamados)
t5
13
Temporal (no se preserva a través de los llamados)
t6
14
Temporal (no se preserva a través de los llamados)
t7
15
Temporal (no se preserva a través de los llamados)
Procesador MIPS

Registros
Nombre Registro
Número
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 través de los llamados)
t9
25
Temporal (no se preserva a través de los llamados)
k0
26
Reservado para el núcleo del Sist. Operativo
k1
27
Reservado para el núcleo 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
Dirección de retorno (usado en invocaciones a funciones)
Procesador MIPS

Ciclo de Ejecución
 Corresponde
a una secuencia repetitiva de los
siguientes pasos:

Búsqueda de instrucción:
Obtiene desde la memoria la instrucción que será ejecutada.

Decodificación de Instrucción:
Determina el tipo de instrucción y su largo en caso de que la
instrucción esté compuesta de varias palabras.
Debe especificarse cómo estarán codificados los operandos, la
operación y la dirección de la próxima instrucción.
Procesador MIPS

Ciclo de Ejecución

Búsqueda de Operandos:
Localiza y obtiene los datos que son los operandos de la
instrucción.
Accesar registros o la memoria, o decodificar valores que vienen
contenidos en la misma instrucción (operandos inmediatos), lo
cual debe especificarse en la instrucción.

Ejecución:
Realiza la operación con los operandos de entrada para generar
un resultado y determina el estado de éste.
Procesador MIPS

Ciclo de Ejecución

Almacenamiento de resultados:
Deposita los resultados en la memoria de datos o en registros.
Esto se especifica en el código de la instrucción.

Determinación de próxima instrucción:
Determina cual será la próxima instrucción 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 número de posiciones de bits que se
desplazará uno de los operandos.
Un campo para expandir el código de operación.
Procesador MIPS

Formato de Instrucciones MIPS
 Formato
I para
bifurcaciones.
Op 6




Rs 5
Rt 5
inmediatas,
transferencias
y
Inmediato 16
Se emplean 16 bits, para programar un valor constante.
Basta un registro de operando y otro para depositar el
resultado.
Las operaciones lógicas se extienden los 16 bits a 32 con
ceros en la parte más significativa.
Las operaciones aritméticas se extienden con signo.
Procesador MIPS

Formato de Instrucciones MIPS
 Formato
I para
bifurcaciones.
Op 6

Rs 5
Rt 5
inmediatas,
transferencias
y
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
Dirección 26
Posee un campo de 26 bits que se emplea para generar la
dirección efectiva de salto
Procesador MIPS

Repertorio MIPS (tipo carga-almacenamiento)
 Aritméticas y Lógicas.
Formato R. (10 instrucciones). Todas de tres operandos.
Add, AddU, Sub, SubU, And, Or, Xor, Nor, SLT, SLTU
Instrucción
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
Aritméticos y Lógicos.
SLL, SRL, SRA, SLLV, SRLV, SRAV (6 instrucciones)
La palabra shift significa corrimiento. Left significa izquierdo. Right significa
derecha.
Instrucción
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 Aritméticas y Lógicas. Inmediatas.
AddI, AddIU, AndI, OrI, XorI, SLTI, SLTIU, LUI (8 instrucciones)
Instrucción
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)
Instrucción
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)
 Multiplicación
y división entera
Instrucción
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 multiplicación o división a un registro del
procesador. MFHI, MFLO
Instrucción
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
Instrucción
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 Comparación y bifurcaciones
Instrucción
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;
Comparación 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
Instrucción
Jump
jump and link
(Formato R)
jump register
jump and link
Ejemplo
j rótulo
jal rótulo
Significado
salto rótulo.
$ra = (PC + 4); salto rótulo;
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 lógico, se extiende a 32 agregando
ceros.
Si el operando es aritmético se extiende con signo a 32 bits.
 Base+índice:



Se usa en load, store.
El contenido de rs + inmediato (extendido en forma aritmética) es la
dirección efectiva.
El campo inmediato se interpreta como el número 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 aritmética.
El valor inmediato es el número 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 instrucción
siguiente (formando así los 32 de la dirección).
Procesador MIPS

Niveles de Representación
 Lenguaje


de alto nivel, ejemplo C.
a[x] = a[x+1];
x++;
 Assembler


Simbólico.
add $t1, $t2, $t3
lw $t5, 4($t1)
 Lenguaje
de Máquina. Binario.
 1010 1110 0100 1001 0000 0000 0000 0000
Procesador MIPS

Niveles de Representación
 Transferencias

Transferencias Lógicas


Ej. R[8] = MEM[ R[18] + sign_ext(0)]; PC = PC + 4;
Transferencias Físicas.

Ej.
IR = MemInst[PC], PC=PC+4; Unidad Instrucción.
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 Representación
 Control

Puede describirse las secuencias de las señales
de control que activan las transferencias físicas.
nPC_sel = “+4”, WEPC , WEIR ;
Unidad Instrucción.
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
representación
complemento a dos para representar números
con signo.
El complemento a dos es el complemento a uno
más uno (sumarle uno en binario).
Para obtener un número 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 número se obtiene
complementándolo, 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:
Descargar