ARQUITECTURA BÁSICA DE MIPS 64

Slides:



Advertisements
Presentaciones similares
1 Datos sobre webloggers Datos extraidos de la encuesta a webloggers disponibles en la web de los autores.
Advertisements

el 1, el 4 y el 9 tres cuadrados perfectos autosuficientes
Dirección IP - Características
Curso de java básico (scjp)
DATSI, FI, UPM José M. Peña Programación en C DATSI, FI, UPM José M. Peña Programación en C.
Diseño de la ruta de datos monociclo para la arquitectura MIPS
Introducción al lenguaje C
INTEGRACIONVIGILANCIAMEDICAMENTORRHHPROMOCION Resultados por AREA.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS ( Resumen PYMES ) Noviembre de 2004.
1 INFORME RESUMEN SOBRE EL NIVEL DE UTILIZACION DE LAS TIC EN LAS EMPRESAS GALLEGAS (MICROEMPRESAS, resultados provisionales) 29 de julio de 2004.
TEMA 2 MÚLTIPLOS Y DIVISORES
GESTION DE DISPOSITIVOS
REGISTROS INTERNOS DEL PROCESADOR.
Procesadores Pipeline II
Los Objetos de la Clase Escriban la palabra (the word) en español para los objetos de la clase (#1-20).
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Camino de Datos y Control
Arquitectura de Computadores I
Círculos de proporción
Fermín Sánchez Carracedo Universitat Politècnica de Catalunya
El Doctoral.
Circuitos Digitales II Alineamiento en Memoria y Ejecución de un programa Semana No.8 Semestre Prof. Gustavo Patiño Prof. Eugenio.
Proyecto para Centros que trabajan una vez por semana.
Sintaxis básica del lenguaje
CLASE 10.
Circuitos Digitales II
Circuitos Digitales II Elementos sobre la Arquitectura del Conjunto de Instrucciones Semana No.2 Semestre Prof. Gustavo Patiño
Programación en C (Segunda Parte) DATSI, FI, UPM José M. Peña
ENTRADA / SALIDA 1.
Arquitectura de Computadores
¿Qué es un conjunto? Un conjunto es una colección de objetos considerada como un todo. Los objetos de un conjunto son llamados elementos o miembros del.
Datapath DLX.
Iván López Espejo Jonathan Prados Garzón
SEGMENTACIÓN DEL CAUCE
3. INTRODUCCIÓN A LA PROGRAMACIÓN
INTRODUCCIÓN A LA PROGRAMACIÓN
CULENDARIO 2007 Para los Patanes.
Números enteros.
Arquitectura de Conjunto de Instrucciones (ISA)
Componentes de la computadora
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.
Conceptos Básicos de Java
POO Java Módulo 3 Elementos de programas Identificadores
CLASE 11.
Introducción.
Aritmética y Computadores. Refresco de aritmética binaria. Operaciones aritméticas y lógicas. Construcción de una ALU para MIPS. Multiplicación y División.
Lenguaje Ensamblador integrantes: Esthela Vianey Vázquez Medina No.30
El microprocesador Z80 características.
ISA (Instruction Set Architecture)
Práctica 7 AOC. Gestión de la pila Una pila es una estructura de datos caracterizada por que el último dato que se almacena es el primero que se obtiene.
MIPS Intermedio.
© Prof. José Mª Foces Morán PCSpim: SPIM sobre Windows Ventana principal de PCSpim Consola: permite interactuar con el programa que está siendo.
Organización del Computador I Verano Aritmética (1 de 3) Basado en el capítulo 4 del libro de Patterson y Hennessy Verano 2004Profesora Borensztejn.
(CC) , José M. Foces-Morán.
Instrucciones: FORMATO DE INSTRUCCIONES
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 13.
Laboratorio de Organización del Computador. Cómo nos podemos comunicar con un computador Add A, B CA0 Ensamblador Hexadecimal Binario.
Organización del Computador
CLASE 13.
ARQUITECTURA DE COMPUTADORES Semestre A-2009 Clase 10.
Fundamentos de Programación
ARQUITECTURA DE COMPUTADORES
Arquitecturas de Computadoras Capitulo 2 Aritmética de enteros.
Lenguaje ensamblador Conceptos introductorios. Formatos de Instrucción. Modos de Direccionamiento. Conjunto de instrucciones básico. Introducción al Lenguaje.
Arquitectura 2013 Explicación 4.
Arquitectura 2013 Explicación 6.
Arquitectura 2013 Explicación 5 Parte II.
Arquitectura 2013 Explicación 6 Entrada-Salida.
Transcripción de la presentación:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 0x012345678901234567 ; 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

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

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

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

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

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

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