1 / 23

Verano 2004

Organización del Computador I Verano MIPS (2 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy. Verano 2004. Profesora Borensztejn. Arquitectura MIPS (R2000). Registros Formato de Instrucción Modos de Direccionamiento Juego de Instrucciones. Registros Visibles.

phuoc
Download Presentation

Verano 2004

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Organización del Computador I VeranoMIPS (2 de 2)Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn

  2. Arquitectura MIPS (R2000) • Registros • Formato de Instrucción • Modos de Direccionamiento • Juego de Instrucciones

  3. Registros Visibles • 32 registros de 32 bits • Todas las operaciones aritméticas operan con registros • Se identifican: $0,$1,....$31 • $0 está cableado a cero.

  4. op rs rt Address/inmediate Formato 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

  5. 31 26 21 16 11 6 0 shamt funct op rs rt rd Formato 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. add=32, sub=34)

  6. 31 26 21 16 11 6 0 31 26 21 16 11 6 0 • Jr $31 • Sub $1, $2, $3 0 0 8 34 0 0 2 31 0 3 1 0 31 26 21 16 11 6 0 0 42 0 2 3 1 Formato R :Ejemplos 31 26 21 16 11 6 0 0 32 0 2 3 1 • Add $1, $2, $3 • Slt $1, $2, $3 Set Less Than si ($2<$3) entonces $1=1sino $1=0 Jump Register PC<--$31

  7. 31 26 21 16 0 31 26 21 16 0 op 35 43 rs 2 2 1 1 rt 100 Address/inmediate 100 Formato I : Transferencias 31 26 21 16 0 • Lw $1, 100($2) Load Word $1=M[$2+100] • Sw $1, 100($2) Store Word M[$2+100]=$1

  8. 31 26 21 16 0 31 26 21 16 0 op 4 5 rs 1 1 2 2 rt 100 Address/inmediate 100 Formato I : Saltos Inmediatos 31 26 21 16 0 • Beq $1,$2,100 Branch Equal si ($1=$2) entonces ir a PC+4+100 • Bne $1,$2,100 Branch Not Equal si ($1!=$2) entonces ir a PC+4+100

  9. 31 26 21 16 0 31 26 21 16 0 op 8 15 rs 2 0 1 1 rt 100 Address/inmediate 100 Formato I : Transferencias inmediatas 31 26 21 16 0 • Addi $1,$2,100 $1=$2+100 • Lui $1, 100 Load upper inmediato $1=100*216

  10. Formato J : Transferencias inmediatas 31 26 0 op Target Address • J 10000 31 26 0 2 10000 PC 27..2=10000 PC1..0=00 31 26 0 • Jal 10000 3 10000 JUMP AND LINK $31=PC+4 PC 27..2=10000 PC1..0=00

  11. Modos de Direccionamiento • Modo Registro • Modo Base • Modo Inmediato • Modo Relativo al PC • Modo Pseudodirecto

  12. Modos de Direccionamiento

  13. Ejemplo: Ensamblar I,j,k están en $s3,$s4 y $s5. La dirección de A está en $s6 while (a[i]==k) i=i+j; bucle: add $t1,$s3,$s3 add $t1,$t1,$t1 #$t1=4*i 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

  14. 0 0 0 0 32 32 32 32 0 0 0 0 9 9 19 19 9 21 19 20 9 9 19 9 Ejemplo: Ensamblar 80000 80004 80008 80012 0 35 9 8 2 80016 5 8 21 80020 80024 80000 2

  15. Cálculo de la dirección destino de salto Branch Equal si ($1=$2) entonces ir a PC+4+offset El campo desplazamiento mide la cantidad de words (4 bytes) que separan el valor actual del PC de la dirección destino de salto

  16. Cálculo de la dirección destino de salto J 10000 PC 27..2=10000 PC1..0=00 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

  17. Tipos de Datos • Byte (8 bits) • Halfword (16 bits) • Word (32 bits) • Single FP (32 bits) • Double FP (64bits)

  18. Juego 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

  19. Juego de Instrucciones • De Tratamiento de Constantes • Instrucción: carga valor inmediato en mitad superior de registro • lui • De Comparación • No hay flags==> 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

  20. Juego 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 PC+4) • 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

  21. Juego 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

  22. Juego de Instrucciones Hi y Lo, recordemos, usados en las instrucciones de multiplicación y división. • 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........ Z indica el coprocesador. La unidad de coma flotante es el coprocesador 1

  23. FIN MIPS ISA(2 de 2)

More Related