Organización procesador MIPS -...
Transcript of Organización procesador MIPS -...
Procesador MIPS
Organización MIPS
CPUCPURegistrosRegistros
AluAlu Mul DivMul Div
HiHi LoLo
MemoriaMemoria
FPUFPU
RegistrosRegistros
U. AritméticaU. Aritmética
Traps Manejo de MemoriaTraps Manejo de Memoria
Procesador MIPS
Organización MIPSUnidad 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
MemoriaSe 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
MemoriaDos formas de numerar los bytes contenidos
en una palabra: Big endian (IBM, Motorola, MIPS)
La dirección del byte más significativo termina en 00 (en binario), sólo si la palabra está alineada
Byte 0Byte 0 Byte 1Byte 1 Byte 2Byte 2 Byte 3Byte 3
Byte 3Byte 3Byte 2Byte 2Byte 1Byte 1Byte 0Byte 0
DireccionesAumentanHacia abajo
Dirección de palabra
Dirección de palabrasiguiente
Procesador MIPS
MemoriaDos formas de numerar los bytes contenidos
en una palabra: Little endian (Intel, Dec)
La dirección del byte menos significativo termina en 00 (en binario), sólo si la palabra está alineada
Byte 3Byte 3 Byte 2Byte 2 Byte 1Byte 1 Byte 0Byte 0
Byte 0Byte 0Byte 1Byte 1Byte 2Byte 2Byte 3Byte 3
DireccionesAumentanHacia abajo
Dirección de palabra
Dirección de palabrasiguiente
Procesador MIPS
MemoriaEl 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 DatosBit: 0,1Bit String
4 bits nibble 8 bits byte 16 bits half-word 32 bits word 64 bits 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ísticasPuede 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
RegistrosNombre Registro Número Uso
zero 0 Constante 0
at 1 Reservado para el assembler
v0 2 Para evaluación de expresiones yretorno de resultados de una función
v1 3
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
RegistrosNombre 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 MIPSMIPS posee tres formatos de instrucciones
denominados R, I y J
Procesador MIPS
Formato de Instrucciones MIPS Formato R para operaciones.
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.
Op 6Op 6 Rs 5Rs 5 Rt 5Rt 5 Rd 5Rd 5 Shamnt 5Shamnt 5 Funct 6Funct 6
Procesador MIPS
Formato de Instrucciones MIPS Formato I para inmediatas, transferencias y
bifurcaciones.
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.
Op 6Op 6 Rs 5Rs 5 Rt 5Rt 5 Inmediato 16Inmediato 16
Procesador MIPS
Formato de Instrucciones MIPS Formato I para inmediatas, transferencias y
bifurcaciones.
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
Op 6Op 6 Rs 5Rs 5 Rt 5Rt 5 Inmediato 16Inmediato 16
Procesador MIPS
Formato de Instrucciones MIPS Formato J para saltos
Posee un campo de 26 bits que se emplea para generar la dirección efectiva de salto
Op 6Op 6 Dirección 26Dirección 26
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, SLTUInstrucción Ejemplo Significado add add $t1,$t2,$t3 $t1 = $t2 + $t3add unsigned addu $t1,$t2,$t3 $t1 = $t2 + $t3subtract sub $t1,$t2,$t3 $t1 = $t2 – $t3subtract unsignedsubu $t1,$t2,$t3 $t1 = $t2 – $t3and and $t1,$t2,$t3 $t1 = $t2 & $t3or or $t1,$t2,$t3 $t1 = $t2 | $t3xor xor $t1,$t2,$t3 $t1 = $t2 ^ $t3nor 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 | 10xor 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 SignificadoLoad 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] = $t1Store 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 Significado
multiply mult $t2,$t3 Hi, Lo = $t2 * $t3
multiply unsigned multu $t2,$t3 Hi, Lo = $t2 * $t3
divide div $t2,$t3 Lo = $t2 ÷ $t3 Lo = cuociente
Hi = $2 mod $3 Hi = resto
divide unsigned divu $t2,$t3 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 Ejemplo Significado
Move to Hi mthi $t1 Hi = $t1
Move to Lo mtlo $t1 Lo = $t1
Procesador MIPS
Repertorio MIPS (tipo carga-almacenamiento) Formato I Comparación y bifurcaciones
Instrucción Ejemplo Significado
branch on equal beq $t1,$t2,100 if ($t1 == $t2)
PC = (PC+4)+100*4;
branch on not eq. bne $t1,$t2,100 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, JALInstrucción Ejemplo Significado
Jump j rótulo salto rótulo.
jump and link jal rótulo $ra = (PC + 4); salto rótulo;
(Formato R)
jump register jr $t1 PC = $t1;
jr $ra PC = $ra
jump and link jalr $t1 $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 a PC:
En bifurcaciones 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ónTransferencias
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ónControl
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.