Departamento de Sistemas Telemáticos y Computación (GSyC)
WinMIPS64 Manual de Usuario Katia Leal Algara Septiembre 2011
[email protected] http://gsyc.escet.urjc.es/~katia/ 0
Introducción
Introducción
Herramienta que nos permite entender: La codificación de datos e instrucciones El repertorio de instrucciones MIPS El pipeline La jerarquía de memoria Entrada/Salida y Llamadas al Sistema GSyC 2011 - WinMIPS64
1
Interfaz de usuario
GSyC 2011 - WinMIPS64
2
Características de WinMIPS64
Pipeline
WinMIPS64 implementa un pipeline paralelo formado por cinco etapas:
Instruction Fetch (IF) Instruction Decode (ID) Execution / Address Calculation (EX) Data memory access (MEM) Write Back (WB)
Cada etapa se representa con un color Se puede ver el estado del pipeline durante la ejecución de un programa por medio de la ventana correspondiente GSyC 2011 - WinMIPS64
3
Características de WinMIPS64
Pipeline
GSyC 2011 - WinMIPS64
4
Características de WinMIPS64
Repertorio de instrucciones
Subconjunto representativo del MIPS64 ISA Por compatibilidad con otros simuladores incluye instrucciones que no pertenecen al MIPS64: HALT Las instrucciones siguen los formatos descritos por el fabricante, es decir: I-Type, J-Type, R-Type
GSyC 2011 - WinMIPS64
5
Características de WinMIPS64
Repertorio de instrucciones lb reg,imm(reg) lbu reg,imm(reg) sb reg,imm(reg) lh reg,imm(reg) lhu reg,imm(reg) sh reg,imm(reg) lw reg,imm(reg) lwu reg,imm(reg) sw reg,imm(reg) ld reg,imm(reg) sd reg,imm(reg) l.d freg,imm(reg) s.d freg,imm(reg) halt daddi reg,reg,imm daddui reg,reg,imm andi reg,reg,imm ori reg,reg,imm xori reg,reg,imm lui reg,imm slti reg,reg,imm sltiu reg,reg,imm beq reg,reg,imm bne reg,reg,imm equal beqz reg,imm bnez reg,imm j imm jr reg
-
load byte load byte unsigned store byte load 16-bit half-word load 16-bit half word unsigned store 16-bit half-word load 32-bit word load 32-bit word unsigned store 32-bit word load 64-bit double-word store 64-bit double-word load 64-bit floating-point store 64-bit floating-point stops the program add immediate add immediate unsigned logical and immediate logical or immediate exclusive or immediate load upper half of register immediate set if less than immediate set if less than immediate unsigned branch if pair of registers are equal branch if pair of registers are not
-
branch if register is equal to zero branch if register is not equal to zero jump to address jump to address in register
GSyC 2011 - WinMIPS64
6
Características de WinMIPS64
Repertorio de instrucciones jal imm subroutine) jalr reg dsll reg,reg,imm dsrl reg,reg,imm dsra reg,reg,imm dsllv reg,reg,reg dsrlv reg,reg,reg dsrav reg,reg,reg amount movz reg,reg,reg movn reg,reg,reg nop and reg,reg,reg or reg,reg,reg xor reg,reg,reg slt reg,reg,reg sltu reg,reg,reg dadd reg,reg,reg daddu reg,reg,reg dsub reg,reg,reg dsubu reg,reg,reg dmul reg,reg,reg dmulu reg,reg,reg
GSyC 2011 - WinMIPS64
- jump and link to address (call -
jump and link to address in register shift left logical shift right logical shift right arithmetic shift left logical by variable amount shift right logical by variable amount shift right arithmetic by variable
-
move if register equals zero move if register not equal to zero no operation logical and logical or logical xor set if less than set if less than unsigned add integers add integers unsigned subtract integers subtract integers unsigned signed integer multiplication unsigned integer multiplication 7
Características de WinMIPS64
Repertorio de instrucciones ddiv reg,reg,reg - signed integer division ddivu reg,reg,reg - unsigned integer division add.d freg,freg,freg - add floating-point sub.d freg,freg,freg - subtract floating-point mul.d freg,freg,freg - multiply floating-point div.d freg,freg,freg - divide floating-point mov.d freg,freg - move floating-point cvt.d.l freg,freg - convert 64-bit integer to a double FP format cvt.l.d freg,freg - convert double FP to a 64-bit integer format c.lt.d freg,freg - set FP flag if less than c.le.d freg,freg - set FP flag if less than or equal to c.eq.d freg,freg - set FP flag if equal to bc1f imm - branch to address if FP flag is FALSE bc1t imm - branch to address if FP flag is TRUE mtc1 reg,freg - move data from integer register to FP register mfc1 reg,freg - move data from FP register to integer register
GSyC 2011 - WinMIPS64
8
Características de WinMIPS64
Adelantamiento
Técnica que permite la reducción de parones en el cauce introducidas por la dependencia de datos entre instrucciones Se pueden ejecutar los programas con o sin adelantamiento, entediendo así su impacto en el flujo del programa
GSyC 2011 - WinMIPS64
9
Formato del fichero fuente
Formato de un fichero fuente
Secciones .data .code
Comentarios “;” Todo lo que hay después de este carácter se ignora
Etiquetas Se utilizan para referirse a posiciones de memoria o a instrucciones Son case insensitive Sólo se puede utilizar una etiqueta por línea GSyC 2011 - WinMIPS64
10
Formato del fichero fuente
Ejemplo ;This is a comment .data label: .word 15 ;This is an inline comment .code daddi r1,r0,0 halt
GSyC 2011 - WinMIPS64
11
Formato del fichero fuente
Sección .data
Comandos que especifican cómo se debe rellenar la memoria antes de que el programa comience su ejecución El formato de un comando .data es: [label:] .datatype val1 [,val2 [, …]]
Tipos de datos representados: .space .asciiz .ascii .align .word .byte .word32 .word16 .double
,.. ,.. ,.. ,.. ,..
GSyC 2011 - WinMIPS64
-
leave n empty bytes enters zero terminated ascii string enter ascii string align to n-byte boundary enters word(s) of data (64-bits) enter bytes enters 32 bit number(s) enters 16 bit number(s) enters floating-point number(s) 12
Formato del fichero fuente
Sección .data
Ejemplo:
GSyC 2011 - WinMIPS64
13
Formato del fichero fuente
Sección .data Otras directivas .space Nos permite reservar memoria. Recibe como parámetro un entero que indica el número de bytes a reservar .ascii Acepta strings que contienen caracteres ASCII+secuencias de escape y los almacena en memoria .asciiz Como .ascii, solo que termina los strings con el byte cero
GSyC 2011 - WinMIPS64
14
Formato del fichero fuente
Sección .code
Instrucciones simbólicas que serán codificadas y ejecutadas cuando el programa comience Formato de un comando .code: [label:] instruction [p1 [, p2 [, p3]]]
Donde instruction es el nombre de la instrucción y p1, p2 y p3 son los tres operandos El tipo y número de los operandos viene determinado por el tipo de instrucción GSyC 2011 - WinMIPS64
15
Formato del fichero fuente
Sección .code
Las instrucciones reciben tres tipos de operandos Registros: se indica un registro por medio de una “r”, “R” ó “$” seguido de un número (entre 0 y 31). Por ejemplo, “r4”, “R4” ó “$4” Datos inmediatos: pueden ser un número o una etiqueta. El número se puede especificar en base 10 o 16. Para insertar un número en base 16 hay que añadir el prefijo “0x” Direcciones de memoria: dato inmediato (número o etiqueta) seguido del nombre de un registro entre paréntesis. El valor del registro se utilizará como offset GSyC 2011 - WinMIPS64
16
Ventanas
Ventanas
La ejecución de los programas se presenta mediante 7 ventanas Cycles Registers Statistics Pipeline Memory Code Input/Output GSyC 2011 - WinMIPS64
17
Ventanas
Cycles Muestra la evolución del flujo del programa a lo largo del tiempo
GSyC 2011 - WinMIPS64
18
Ventanas
Registers Muestra el valor de los 32 registros de propósito general, de los 32 registros de coma flotante. Con un doble click podemos modificar su valor
GSyC 2011 - WinMIPS64
19
Ventanas
Statistics Muestra datos estadísticos acerca del último programa ejecutado: ciclos consumidos de CPU, instrucciones ejecutadas en esos ciclos, el número de Ciclos Por Instrucción (CPI), parones (RAW …)
GSyC 2011 - WinMIPS64
20
Ventanas
Pipeline Muestra un gráfico con las 5 etapas de la CPU y la etapa del cauce en la que se encuentra cada instrucción
GSyC 2011 - WinMIPS64
21
Ventanas
Memory Muestra las direcciones y el contenido de las celdas de memoria junto con etiquetas y comentarios del programa fuente
GSyC 2011 - WinMIPS64
22
Ventanas
Code Muestra el código fuente correspondiente al programa en ejecución
GSyC 2011 - WinMIPS64
23
Ventanas
Input/Output Muestra la salida generada por las instrucciones SYSCALLs 4 y 5. Para las entradas, SYSCALL 3, se abre una ventana de diálogo que lee datos de la entrada estándar
GSyC 2011 - WinMIPS64
24
Menús
Menús
File: carga de ficheros y reset del simulador Execute: arrancar y para el simulador, ejecutar los programas paso a paso o en un único paso Configure: permite abrir ventanas de configuración Window: organización de las ventanas Help: manual de ususario
GSyC 2011 - WinMIPS64
25
Ejecutando WinMIPS64
¿Cómo ejecutar WinMIPS64? Podéis utilizar el editor que prefiráis para escribir los ficheros fuente en ensamblador Para arrancar el simulador tenéis que teclear en un terminal el siguiente comando: katia@epsilon02:~$ wine winmips64.exe & Así mismo, para ejecutar el comprobador sintáctico asm.exe: katia@epsilon02:~$ wine asm.exe file.s GSyC 2011 - WinMIPS64
26