Title: Organizaci
1Organización del Computador I VeranoMIPS (2 de
2) Basado en el capítulo 3 del libro de
Patterson y Hennessy
Profesora Borensztejn
2Arquitectura MIPS (R2000)
- Registros
- Formato de Instrucción
- Modos de Direccionamiento
- Juego de Instrucciones
3Registros Visibles
- 32 registros de 32 bits
- Todas las operaciones aritméticas operan con
registros - Se identifican 0,1,....31
- 0 está cableado a cero.
4Formato MIPS de Instrucción
- Son todas de 32 bits. Tres formatos
- Tipo R
- Tipo I
- Tipo J
31 26 21 16
11 6 0
shamt
funct
op
rs
rt
rd
31 26 21 16
0
31 26
0
op
Target Address
5Formato R (registro)
- Op 0
- rs, rt identificación de los registros fuente
- rd identificación del registro destino
- shamt cantidad de desplazamiento
- funct identifica la operación (por ej. add32,
sub34)
6Formato R Ejemplos
31 26 21 16
11 6 0
0
32
0
2
3
1
- Set Less Than si (2lt3) entonces 11sino 10
7Formato I Transferencias
31 26 21 16
0
8Formato I Saltos Inmediatos
31 26 21 16
0
- Branch Equal si (12) entonces ir a
PC4100
- Branch Not Equal si (1!2) entonces ir a
PC4100
9Formato I Transferencias inmediatas
31 26 21 16
0
12100
Load upper inmediato 1100216
10Formato J Transferencias inmediatas
31 26
0
op
Target Address
31 26
0
2
10000
PC 27..210000 PC1..000
31 26
0
3
10000
JUMP AND LINK 31PC4 PC
27..210000 PC1..000
11Modos de Direccionamiento
- Modo Registro
- Modo Base
- Modo Inmediato
- Modo Relativo al PC
- Modo Pseudodirecto
12Modos de Direccionamiento
13Ejemplo Ensamblar
I,j,k están en s3,s4 y s5. La dirección de A
está en s6
while (aik) iij
bucle add t1,s3,s3 add t1,t1,t1 t14i
add t1,t1,s6 lw t0,0(t1) bne t0,s5,
fin add s3,s3,s4 j bucle fin
Suponer que el bucle comienza en la dirección
80000 de memoria
14Ejemplo Ensamblar
80000
80004
80008
0
80012
35
9
8
2
80016
5
8
21
80020
80024
80000
2
15Cálculo de la dirección destino de salto
Branch Equal si (12) entonces ir a
PC4offset
El campo desplazamiento mide la cantidad de words
(4 bytes) que separan el valor actual del PC de
la dirección destino de salto
16Cálculo de la dirección destino de salto
J 10000 PC 27..210000 PC1..000
El campo dirección es una dirección de palabra,
por lo tanto habrá que traducirla a una dirección
de byte. Observar que esto conduce a una
dirección de 28 bits. Los 4 bits mas altos del PC
no se modifican. Si quisiéramos modificar los 32
bits del PC, se deberá usar la instrucción Jump
Register
17Tipos de Datos
- Byte (8 bits)
- Halfword (16 bits)
- Word (32 bits)
- Single FP (32 bits)
- Double FP (64bits)
18Juego de Instrucciones
- Aritméticas y Lógicas
- Operan con datos de 32 bits
- Con/Sin Signo (op/opu)
- Con/Sin operando inmediato (op/opi)
- Aritméticas suma, resta, división y
multiplicación - add/addu/addi/addiu
- sub/subu
- div/divu
- mult/multu
- Lógicas and, nor, or, xor
- and/andi
- or/ori
- xor/xori
- nor
- Desplazamientos lógicos y aritméticos
- sll/sllv
- sra/srav/srl/srlv
Las instrucciones de multiplicación y división
dejan sus resultados en dos registros especiales
Hi y Lo
Las versiones no variables, especifican la
cantidad de desplazamiento en el campo shamt de
la instrucción
19Juego de Instrucciones
- De Tratamiento de Constantes
- Instrucción carga valor inmediato en mitad
superior de registro - lui
- De Comparación
- No hay flagsgt inicializar registro destino si
se cumple la condición entre los registros fuente - Con/Sin Signo (op/opu)
- Con/Sin operando inmediato (op/opi)
- Instrucciones
- slt/sltu/slti/sltiu
20Juego de Instrucciones
- De salto condicional
- Especifican el desplazamiento en instrucciones ,
no en bytes - El desplazamiento es de 16 bits con signo
- Incluyen comparación entre registros o contra el
valor cero - Hay versiones para saltar y enlazar (guarda el
PC4) - Instrucciones
- beq, bne comparación entre registros
- bgez, bgt, blez, bltz comparación con cero
- bgezal, bltzal comparar con cero, saltar y
enlazar - De salto incondicional
- Especifican el desplazamiento en instrucciones ,
no en bytes - El desplazamiento es de 26 bits (cuando no es
modo registro) - Hay versiones para saltar y enlazar
- Instrucciones
- j, jal, jalr, jr
21Juego de Instrucciones
- De carga y almacenamiento (load/store)
- Carga byte, halfword, word.
- Los datos deben estar alineados.
- La carga de byte y media palabra puede ser
con/sin signo - Hay instrucciones especiales para palabras no
alineadas. - Instrucciones
- lb, lbu, sb para bytes
- lh, lhu,sh para halfwords
- lw, sw para words
- lwl, lwr para carga de words desalineados
- swl, swr para almacenamientos desalineados
Las instrucciones load con signo, extienden el
signo sobre el registro completo
22Juego de Instrucciones
- De Transferencia
- Para transferir de/a los registros Hi y Lo
- Para transferencia entre coprocesadores
- Instrucciones
- mfhi, mflo, mthi, mtlo
- mfcz, mtcz mover desde/hacia registros del copro
z - Instrucciones para CF
- No las veremos (al menos por ahora......)
- Instrucciones para tratamiento de excepciones
- Las veremos mas adelante......
- Instrucción NOP no hace nada........
Hi y Lo, recordemos, usados en las instrucciones
de multiplicación y división.
Z indica el coprocesador. La unidad de coma
flotante es el coprocesador 1
23FIN MIPS ISA(2 de 2)