Organización procesador MIPS -...

41
Organización procesador MIPS

Transcript of Organización procesador MIPS -...

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.

Procesador MIPS

Sumador completo de un bit, tiene tres entradas y dos salidas, con la siguiente tabla de verdad: