1 / 36

ARQUITECTURA BÁSICA DE MIPS 64

ARQUITECTURA BÁSICA DE MIPS 64. ARQUITECTURA BÁSICA DE MIPS 64. Características RISC de MIPS64 Registros y memoria Instrucciones enteras Instrucciones de coma flotante El ensamblador utilizado en prácticas Ejemplos de código. ARQUITECTURA BÁSICA DE MIPS 64. Características RISC de MIPS64.

akasma
Download Presentation

ARQUITECTURA BÁSICA DE MIPS 64

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. ARQUITECTURA BÁSICA DE MIPS 64

  2. ARQUITECTURA BÁSICA DE MIPS 64 • Características RISC de MIPS64 • Registros y memoria • Instrucciones enteras • Instrucciones de coma flotante • El ensamblador utilizado en prácticas • Ejemplos de código

  3. ARQUITECTURA BÁSICA DE MIPS 64 • Características RISC de MIPS64 3

  4. Características RISC de MIPS64 • MIPS64 responde a la filosofía RISC • Instrucciones: • Sencillas y ortogonales. • Longitud fija de 32 bits. • Memoria separada: • Caché de instrucciones. • Caché de datos. • Número significativo de registros. • Cauce segmentado. Hay muchas implementaciones de MIPS. La descrita a continuación es una versión reducida que coincide con la utilizada por el simulador de las prácticas. Así mismo, se han simplificado muchos aspectos de la arquitectura para facilitar su comprensión. Arquitectura básica de MIPS 64 4

  5. ARQUITECTURA BÁSICA DE MIPS 64 5 • Registros y memoria

  6. Registros y memoria Registros de Propósito General (GPR) Registros de Coma Flotante (FPR) Cableado a cero R0 R16 F0 F16 R1 R17 F1 F17 R2 R18 F2 F18 R3 R19 F3 F19 R4 R20 F4 F20 R5 R21 F5 F21 R6 R22 F6 F22 R7 R23 F7 F23 R8 R24 F8 F24 R9 R25 F9 F25 R10 R26 F10 F26 R11 R27 F11 F27 R12 R28 F12 F28 R13 R29 F13 F29 R14 R30 F14 F30 R15 R31 F15 F31 ¡Todos de 64 bits! Dirección de retorno Arquitectura básica de MIPS 64 6

  7. Registros y memoria • Bus de datos de 64 bits. • Permite accesos a memoria en cuatro longitudes diferentes: • Byte (8 bits) • Media Palabra (16 bits) • Palabra (32 bits) • Doble Palabra (64 bits) Media Palabra Byte Palabra Doble Palabra Arquitectura básica de MIPS 64 7

  8. Registros y memoria Organización de la memoria • Orden de los octetos • Big-endian • Little-endian Big-endian Bits Dir. Palabras Dir. Altas Dir. Bajas Arquitectura básica de MIPS 64 8

  9. Registros y memoria Organización de la memoria Little-endian Bits Dir. Palabras Dir. Altas Dir. Bajas ¡La utilizada por MIPS64! Arquitectura básica de MIPS 64 9

  10. Registros y memoria Organización de la memoria Alineación Los accesos de 8, 16, 32 y 64 bits tienen las restricciones siguientes: • Las medias palabras deben comenzar en frontera para (0, 2, 4, …) • Las palabras deben comenzar en direcciones divisibles por 4 (0, 4, 8, …) • Las dobles palabras deben comenzar en direcciones divisibles por 8 (0, 8, 16, …) Arquitectura básica de MIPS 64 10

  11. ARQUITECTURA BÁSICA DE MIPS 64 11 • Instrucciones enteras

  12. Instrucciones enteras INSTRUCCIONES DE LECTURA DE MEMORIA Arquitectura básica de MIPS 64 12

  13. Instrucciones enteras INSTRUCCIONES DE ESCRITURA EN MEMORIA Arquitectura básica de MIPS 64 13

  14. Instrucciones enteras INSTRUCCIONES ARITMÉTICAS Instrucción Operación Comentario dadd Rd,Rs,Rt Rd = Rs + Rt Con desbordamiento (trap) daddu Rd,Rs,Rt Rd = Rs + Rt Sin desbordamiento daddi Rd,Rs,imm Rd = Rs + imm Con desbordamiento (trap) daddui Rd,Rs,imm Rd = Rs + imm Sin desbordamiento Arquitectura básica de MIPS 64 14

  15. Instrucciones enteras INSTRUCCIONES LÓGICAS Arquitectura básica de MIPS 64 15

  16. Instrucciones enteras INSTRUCCIONES DE DESPLAZAMIENTO Arquitectura básica de MIPS 64 16

  17. Instrucciones enteras INSTRUCCIONES DE COMPARACIÓN Arquitectura básica de MIPS 64 17

  18. Instrucciones enteras INSTRUCCIONES DE SALTO CONDICIONAL Arquitectura básica de MIPS 64 18

  19. Instrucciones enteras INSTRUCCIONES DE SALTO INCONDICIONAL Arquitectura básica de MIPS 64 19

  20. Instrucciones enteras OTRAS INSTRUCCIONES Arquitectura básica de MIPS 64 20

  21. ARQUITECTURA BÁSICA DE MIPS 64 21 • Instrucciones de coma flotante

  22. Instrucciones de coma flotante INSTRUCCIONES DE ACCESO A MEMORIA Arquitectura básica de MIPS 64 22

  23. Instrucciones de coma flotante INSTRUCCIONES ARITMÉTICAS Arquitectura básica de MIPS 64 23

  24. Instrucciones de coma flotante INSTRUCCIONES DE COMPARACIÓN Arquitectura básica de MIPS 64 24

  25. Instrucciones de coma flotante INSTRUCCIONES DE SALTO CONDICIONAL Arquitectura básica de MIPS 64 25

  26. Instrucciones de coma flotante OTRAS INSTRUCCIONES Arquitectura básica de MIPS 64 26

  27. ARQUITECTURA BÁSICA DE MIPS 64 27 • El ensamblador utilizado en prácticas

  28. El ensamblador utilizado en prácticas Estructura de un programa ensamblador .data Pregunta: .ascii “Introducir nº>\0” Num: .word 8 Car: .byte 0x0D .text Comienzo: daddi r1,r0,0 daddi r2,r0,4 ……………………………… Arquitectura básica de MIPS 64

  29. El ensamblador utilizado en prácticas Son instrucciones para el programa ensamblador indicándole cómo realizar el proceso de traducción Pueden utilizarse etiquetas para referirse a direcciones de memoria (notación simbólica) Arquitectura básica de MIPS 64

  30. El ensamblador utilizado en prácticas PROGRAMA Arquitectura básica de MIPS 64

  31. ARQUITECTURA BÁSICA DE MIPS 64 31 • Ejemplos de código

  32. Ejemplos de código Ejemplo 1 MIPS64 C .data i: .word32 0 d: .double 0.0 c: .byte 0 vector: .word32 0,0,0,0,0 S: .word16 0 int main () { int i; double d; char c; int vector [5]; short s; } Arquitectura básica de MIPS 64 32

  33. Ejemplos de código Ejemplo 2 MIPS64 C .data i: .word32 0 .text lw R3,i(R0) daddi R3,R0,10 daddi R3,R3,30 sw R3,i(R0) int main () { int i; i = 10; i = i + 30; } Arquitectura básica de MIPS 64 33

  34. Ejemplos de código Ejemplo 3 MIPS64 C .data i: .word32 0 j: .word32 0 k: .word32 0 .text daddi R3,R0,10 ; i en R3 sw R3,i(R0) daddi R4,R0,20 ; j en R4 sw R4,j(R0) IF: slt R8,R3,R4 beqz R8, IFELSE daddi R10,R0,1 sw R10,k(R0) j IFEND IFELSE: daddi R12,R0,2 sw R12,k(R0) IFEND: halt int main () { int i; int j; int k; i = 10; j = 20; if (i<j) k = 1; else k = 2; } Arquitectura básica de MIPS 64 34

  35. Ejemplos de código Ejemplo 4 (Una solución) MIPS64 C .data i: .word32 0 vector: .word32 0,0,0,0,0,0,0,0,0,0 .text daddi R2,R0,10 ; tamaño daddi R4,R0,0 ; i en R4 FOR: slt R7,R4,R2 beqz R7,ENDFOR daddi R11,R0,4 dmul R12,R11,R4 sw R4,vector(R12) daddi R4,R4,1 j FOR ENDFOR: halt int main () { int vector[10]; for (i=0;i<10;i++) { vector[i]= i; } } Arquitectura básica de MIPS 64 35

  36. Ejemplos de código Ejemplo 4 (Otra solución) MIPS64 C .data vector: .word32 0,0,0,0,0,0,0,0,0,0 .text daddi R1,R0,10 ;R1=indice daddi R2,R0,4 FOR: daddi R1,R1,-1 dmul R3,R1,R2 ;R3=indice*4 sw R1,vector(R3) bnez R1,FOR halt int main () { int vector[10]; for (i=0;i<10;i++) { vector[i]= i; } } Arquitectura básica de MIPS 64 36

More Related