La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

ARQUITECTURA BÁSICA DE MIPS 64

Presentaciones similares


Presentación del tema: "ARQUITECTURA BÁSICA DE MIPS 64"— Transcripción de la presentación:

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 Características RISC de MIPS64
ARQUITECTURA BÁSICA DE MIPS 64 Características RISC de MIPS64 3 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 4

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

6 Registros y memoria ¡Todos de 64 bits! Arquitectura básica de MIPS 64
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 Arquitectura básica de MIPS 64
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 7

8 Organización de la memoria
Registros y memoria Organización de la memoria Orden de los octetos Big-endian Little-endian Big-endian Bits Dir. Palabras 31 24 23 16 15 8 7 0 Dir. Altas 12 8 4 12 13 14 15 8 9 10 11 4 5 6 7 1 2 3 Dir. Bajas Arquitectura básica de MIPS 64 8

9 Organización de la memoria
Registros y memoria Organización de la memoria Little-endian Bits Dir. Palabras 31 24 23 16 15 8 7 0 Dir. Altas 12 8 4 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Dir. Bajas ¡La utilizada por MIPS64! Arquitectura básica de MIPS 64 9

10 Organización de la memoria
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 Instrucciones enteras
ARQUITECTURA BÁSICA DE MIPS 64 Instrucciones enteras 11 11

12 Instrucciones enteras
INSTRUCCIONES DE LECTURA DE MEMORIA Instrucción Operación Comentario lb Rt,offset(Rs) Rt [0..7] = MEM [Rs + offset] Lectura de 1 octeto con extensión de signo lbu Rt,offset(Rs) Lectura de 1 octeto sin extensión de signo lh Rt,offset(Rs) Rt [0..15] = MEM [Rs + offset] Lectura de media palabra (16 bits) con extensión de signo lhu Rt,offset(Rs) Lectura de media palabra (16 bits) sin extensión de signo lw Rt,offset(Rs) Rt [0..31] = MEM [Rs + offset] Lectura de una palabra (32 bits) con extensión signo lwu Rt,offset(Rs) Lectura de una palabra (32 bits) sin extensión signo ld Rt,offset(Rs) Rt [0..63] = MEM [Rs + offset] Lectura de una doble palabra (64 bits) Arquitectura básica de MIPS 64 12

13 Instrucciones enteras
INSTRUCCIONES DE ESCRITURA EN MEMORIA Instrucción Operación Comentario sb Rt,offset(Rs) MEM [Rs + offset] = Rt [0..7] Escritura de un octeto sh Rt,offset(Rs) MEM [Rs + offset] = Rt [0..15] Escritura de media palabra (16 bits) sw Rt,offset(Rs) MEM [Rs + offset] = Rt [0..31] Escritura de una palabra (32 bits) sd Rt,offset(Rs) MEM [Rs + offset] = Rt [0..63] Escritura de una doble palabra (64 bits) 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 dsub Rd,Rs,Rt Rd = Rs - Rt Con desbordamiento (trap) dsubu Rd,Rs,Rt Sin desbordamiento dmul Rd,Rs,Rt Rd = Rs * Rt Con desbordamiento (trap) dmulu Rd,Rs,Rt Sin desbordamiento ddiv Rd,Rs,Rt Rd = Rs / Rt ddviu Rd,Rs,Rt Arquitectura básica de MIPS 64 14

15 Instrucciones enteras
INSTRUCCIONES LÓGICAS Instrucción Operación Comentario and Rd,Rs,Rt Rd = Rs AND Rt And lógico andi Rt,Rs,imm Rt = Rs AND imm or Rd,Rs,Rt Rd = Rs OR RT Or lógico ori Rt,Rs,imm Rt = Rs OR imm xor Rd,Rs,Rt Rd = Rs XOR Rt Or exclusivo xori Rt,Rs,imm Rt = Rs XOR imm Or exclusivo Arquitectura básica de MIPS 64 15

16 Instrucciones enteras
INSTRUCCIONES DE DESPLAZAMIENTO Instrucción Operación Comentario dsllv Rd,Rt,Rs Rd = Rt << Rs Desplazamiento lógico a izda. Sólo se utilizan los bits 0..5 de Rs dsll Rd,Rt,imm Rd = Rt << imm Desplazamiento lógico a Izda. dsrlv Rd,Rt,Rs Rd = Rt >> Rs Desplazamiento lógico a dcha. Sólo se utilizan los bits 0..5 de Rs dsrl Rd,Rt,imm Rd = Rt >> imm Desplazamiento lógico a Dcha. dsrav Rd,Rt,Rs Desplazamiento aritm. a dcha. Sólo se utilizan los bits 0..5 de Rs dsra Rd,Rt,imm Desplazamiento aritm. a Dcha. Arquitectura básica de MIPS 64 16

17 Instrucciones enteras
INSTRUCCIONES DE COMPARACIÓN Instrucción Operación Comentario slt Rd,Rs,Rt Si Rs < Rt → Rd = 1 else Rd = 0 Comparación entera con signo sltu Rd,Rs,Rt Comparación entera sin signo slti Rt,Rs,imm Si Rs < ext_sign (imm) → Rt = 1 else Rt = 0 Sin desbordamiento sltiu Rt,Rs,imm Si l Rs l < l ext_sign (imm) l → Comparación sin signo y sin desbordamiento Arquitectura básica de MIPS 64 17

18 Instrucciones enteras
INSTRUCCIONES DE SALTO CONDICIONAL Instrucción Operación Comentario beq Rs,Rt,offset Si Rs = Rt → PC = PC [63..28] || instr_index || 02 El salto está restringido a una zona de ±128 KB bne Rs,Rt,offset Si Rs ≠ Rt → El salto está restringido a una zona de ±128 KB. beqz Rs,offset Si Rs = 0 → bnez Rs,offset Si Rs ≠ 0 → Arquitectura básica de MIPS 64 18

19 Instrucciones enteras
INSTRUCCIONES DE SALTO INCONDICIONAL Instrucción Operación Comentario j instr_index PC = PC [63..28] || instr_index || 02 El salto está restringido a una zona de 256 MB jal instr_index Almacena la dirección de retorno (PC+8) en R31 jr Rs PC = Rs La dirección de salto debe estar alineada jalr Rs PC = Rs ; R31 = PC + 8 Almacena la dirección de retorno en R31 Arquitectura básica de MIPS 64 19

20 Instrucciones enteras
OTRAS INSTRUCCIONES Instrucción Operación Comentario lui Rt,imm Rt = imm || 032 Desbordamiento movz Rd,Rs,Rt Si Rt = 0 → Rd = Rs Movimiento condicional movn Rd,Rs,Rt Si Rt ≠ 0 → Rd = Rs nop No operación Arquitectura básica de MIPS 64 20

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

22 Instrucciones de coma flotante
INSTRUCCIONES DE ACCESO A MEMORIA Instrucción Operación Comentario l.d Ft,offset(Rs) Rt [0..63] = MEM [Rs + offset] Lectura de una doble palabra (64 bits) s.d Ft,offset(Rs) MEM [Rs + offset] = Rt [0..63] Escritura de una doble palabra (64 bits) Arquitectura básica de MIPS 64 22

23 Instrucciones de coma flotante
INSTRUCCIONES ARITMÉTICAS Instrucción Operación Comentario add.d Fd,Fs,Ft Fd = Fs + Ft Varias excepciones de la unidad de coma flotante (FPU) sub.d Fd,Fs,Ft Fd = Fs - Ft mul.d Fd,Fs,Ft Fd = Fs * Ft div.d Fd,Fs,Ft Fd = Fs / Ft Arquitectura básica de MIPS 64 23

24 Instrucciones de coma flotante
INSTRUCCIONES DE COMPARACIÓN Instrucción Operación Comentario c.lt.d Fs,Ft CC = (Fs < Ft) CC es un bit de la unidad de coma flotante c.le.d Fs,Ft CC = (Fs <= Ft) c.eq.d Fs,Ft CC = (Fs = Ft) Arquitectura básica de MIPS 64 24

25 Instrucciones de coma flotante
INSTRUCCIONES DE SALTO CONDICIONAL Instrucción Operación Comentario bc1f offset Si CC = 0 → Saltar El salto está restringido a una zona de 128 KB bc1t offset Si CC = 1 → Saltar Arquitectura básica de MIPS 64 25

26 Instrucciones de coma flotante
OTRAS INSTRUCCIONES Instrucción Operación Comentario mtc1 Rt,Fs Fs [31..0] = Rt [31..0] mfc1 Rt,Fs Rt =ext_signo(Fs [31..0]) Con extensión de signo mov.d Fd,Fs Fd = Fs No genera ninguna excepción cvt.d.l Fd,Fs Fd = toDoubleFP (Fs) Varias excepciones de la unidad de coma flotante (FPU) cvt.l.d Fd,Fs Fd = to64integer (Fs) Arquitectura básica de MIPS 64 26

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

28 El ensamblador utilizado en prácticas
Estructura de un programa ensamblador Datos Código .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) Directiva Desripción .text o .code Comienzo de código .data Comienzo de datos .org DIR Dirección de comienzo de ensamblaje .space N Reserva N octetos de memoria .ascii STRING Inicializa una zona de memoria con STRING .asciiz STRING Idéntica a .ascii añadiendo un carácter NULL al final .word n1,n2,… Inicializa una zona de memoria con dobles palabras (64 bits) .byte b1,b2,… Inicializa una zona de memoria con octetos .word16 w1,w2,… Inicializa una zona de memoria con medias palabras (16 bits) .word32 w1,w2,… Inicializa una zona de memoria con palabras (32 bits) .double d1,d2,… Inicializa una zona de memoria con números en coma flotante Arquitectura básica de MIPS 64

30 PROGRAMA El ensamblador utilizado en prácticas
DATOS ; Este programa calcula la expresión X = Y + Z .data X: .word 0x0 ; en Hexadecimal Y: .word 0x ; en Hexadecimal Z: .word 10 ; en Decimal CÓDIGO .text Etiquetas Instrucciones Comentarios INICIO: FIN: ld r1,Y(r0) ld r2,Z(r0) dadd r3,r1,r2 sd r3,X(r0) halt ; Carga en r1 el valor de la var. Y (64 bits) ; Carga en r2 el valor de la var. Z (64 bits) ; Realiza la suma de r1 y r2 ; Almacena en la var. X el valor de r3 (64 bits) ; Para el procesador (Fin del programa) Arquitectura básica de MIPS 64

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

32 Ejemplos de código Ejemplo 1 Arquitectura básica de MIPS 64 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 Arquitectura básica de MIPS 64 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 Arquitectura básica de MIPS 64 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 Ejemplo 4 (Una solución)
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 Ejemplo 4 (Otra solución)
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


Descargar ppt "ARQUITECTURA BÁSICA DE MIPS 64"

Presentaciones similares


Anuncios Google