16
UNIVERSIDAD CARLOS III DE MADRID Práctica 1. WinMIPS64 Departamento de Ingeniería de Sistemas y Automática CESAR AUGUSTO ARISMENDI GUTIERREZ RAÚL PÉRULA MARTÍNEZ LUIS ENRIQUE MORENO LORENTE ALBERTO BRUNETE GONZALEZ DOMINGO MIGUEL GUINEA GARCIA ALEGRE JOSÉ CARLOS CASTILLO MONTOYA

Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

  • Upload
    lydien

  • View
    219

  • Download
    1

Embed Size (px)

Citation preview

Page 1: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

UNIVERSIDAD Carlos III de Madrid

Práctica 1. WinMIPS64

Departamento de Ingeniería de Sistemas y Automática

CESAR AUGUSTO ARISMENDI GUTIERREZRAÚL PÉRULA MARTÍNEZ

LUIS ENRIQUE MORENO LORENTEALBERTO BRUNETE GONZALEZ

DOMINGO MIGUEL GUINEA GARCIA ALEGREJOSÉ CARLOS CASTILLO MONTOYA

Esta obra se publica bajo una licencia Creative Commons Reconocimiento-NoComercial-CompartidaIgual 3.0 España.

Page 2: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

Fuentes:

• WinMIPS64:http://www.computing.dcu.ie/~mike/winmips64.html• Computer Architecture - a Quantitative Approach, by Hennessy & Patterson, 4th edition.

Introducción a WinMIPS64

Presentación de la arquitectura MIPS64

Organización de Computadores 1

Page 3: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

Introducción al juego de instrucciones del MIPS64

Formatos de instrucción

Simulador WinMIPS64

Registros

• Registros enteros o de propósito general. o 32 registros de 64 bits del r0 al r31.

Organización de Computadores 2

Page 4: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

o El registro r0 vale siempre cero.• Registros en coma flotante. Pueden considerarse como:

o 32 registros de precisión simple de 32 bits (f0 a f31) (la mitad del registro no se usa).o 32 registros de doble precisión de 64 bits (f0 a f31).

• Registros especiales. Son 16 registros (PC, IR, etc.). No se visualizan.

Ensamblador: directivas

• .data start of data segment• .text start of code segment• .code start of code segment (same as .text) • .org<n> start address• .space<n> leave n empty bytes• .asciiz<s> enters zero terminated ascii string• .ascii<s> enter ascii string• .align<n> align to n-byte boundary• .word<n1>,<n2>... enters word(s) of data (64-bits)• .byte<n1>,<n2>... enter bytes• .word32<n1>,<n2>... enters 32 bit number(s)• .word16<n1>,<n2>... enters 16 bit number(s)• .double<n1>,<n2>... enters floating-point number(s)

Sintaxis de las expresiones

• <n> denota un número como 24.• <s> denota una cadena como "fred".• <n1>,<n2>... denota números separados por coma. • Los registros enteros pueden ser referidos como r0-r31 o R0-R31 o $0-$31 o usando seudónimos

MIPS estándar como $zero para r0, $t0 para r8, etc. • El tamaño de un valor inmediato está limitado a 16 bits. • El valor inmediato para una instrucción de desplazamiento de registro está acotado a 5 bits, por

lo tanto, un desplazamiento mayor a 31 bits no está permitido.

Instrucciones: Memoria

• lbreg,imm(reg) load byte• lbureg,imm(reg) load byte unsigned• sbreg,imm(reg) store byte• lhreg,imm(reg) load 16-bit half-word• lhureg,imm(reg) load 16-bit half word unsigned• shreg,imm(reg) store 16-bit half-word• lwreg,imm(reg) load 32-bit word• lwureg,imm(reg) load 32-bit word unsigned• swreg,imm(reg) store 32-bit word• ldreg,imm(reg) load 64-bit double-word• sdreg,imm(reg) store 64-bit double-word• l.dfreg,imm(reg) load 64-bit floating-point

Organización de Computadores 3

Page 5: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

• s.dfreg,imm(reg) store 64-bit floating-point

Instrucciones: aritmetico-lógicas enteras

• daddireg,reg,imm add immediate• dadduireg,reg,imm add immediate unsigned• andireg,reg,imm logical and immediate• orireg,reg,imm logical or immediate• xorireg,reg,imm exclusive or immediate• luireg,imm load upper half of register immediate• sltireg,reg,imm set if less than immediate• sltiureg,reg,imm set if less than immediate unsigned• dsllreg,reg,imm shift left logical• dsrlreg,reg,imm shift right logical• dsrareg,reg,imm shift right arithmetic• dsllvreg,reg,reg shift left logical by variable amount • dsrlvreg,reg,reg shift right logical by variable amount• dsravreg,reg,reg shift right arithmetic by variable amount• movzreg,reg,reg move if register equals zero• movnreg,reg,reg move if register not equal to zero• andreg,reg,reg logical and• orreg,reg,reg logical or• xorreg,reg,reg logical xor• sltreg,reg,reg set if less than• sltureg,reg,reg set if less than unsigned• daddreg,reg,reg add integers• daddureg,reg,reg add integers unsigned• dsubreg,reg,reg subtract integers• dsubureg,reg,reg subtract integers unsigned• dmulreg,reg,reg signed integer multiplication• dmulureg,reg,reg unsigned integer multiplication• ddivreg,reg,reg signed integer division• ddivureg,reg,reg unsigned integer division

Instrucciones de salto

• beqreg,reg,imm branch if pair of registers are equal• bnereg,reg,imm branch if pair of registers are not equal• beqzreg,imm branch if register is equal to zero• bnezreg,imm branch if register is not equal to zero• jimm jump to address• jrreg jump to address in register• jalimm jump and link to address (call subroutine)• jalrreg jump and link to address in register

Organización de Computadores 4

Page 6: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

Instrucciones Punto Flontante

• add.dfreg,freg,freg add floating-point• sub.dfreg,freg,freg subtract floating-point• mul.dfreg,freg,freg multiply floating-point• div.dfreg,freg,freg divide floating-point• mov.dfreg,freg move floating-point• cvt.d.lfreg,freg convert 64-bit integer to a double FP format• cvt.l.dfreg,freg convert double FP to a 64-bit integer format• c.lt.dfreg,freg set FP flag if less than• c.le.dfreg,freg set FP flag if less than or equal to• c.eq.dfreg,freg set FP flag if equal to• bc1fimm branch to address if FP flag is FALSE• bc1timm branch to address if FP flag is TRUE • mtc1reg,freg move data from integer register to FP register• mfc1reg,freg move data from FP register to integer register

Instrucciones de control

• halt stops the program• nop no operation

Ejemplo

;---------------------------------------------------------------------------------------;Estructura típica;---------------------------------------------------------------------------------------

.data;Directivas

.textmain:

;Código MIPS64finish:

halt

;---------------------------------------------------------------------------------------;Fin del programa;---------------------------------------------------------------------------------------

Riesgos

• Se representan en cajas coloreadas con el color de la etapa en la que se ha detenido. En el interior aparece una etiqueta que indica información sobre el tipo de detención:

o RAW (ReadAfterWrite)o WAR (WriteAfterRead)

Organización de Computadores 5

Page 7: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

o WAW (WriteAfterWrite): este riesgo sólo se produce en cauces que escriben en los registros o en memoria en varias etapas. Este cauce escribe los registros en la etapa WB, por lo que no se produce este riesgo en las instrucciones enteras, pero si se produce en las de coma flotante.

o Str(Structuralstall): se produce por falta de recursos hw para ejecutar la instrucción.

Carga de código en memoria

• File ->Open

• Muestra el contenido de la memoria de código mediante una representación en tres columnas: o Dirección correspondiente en la memoria. o Representación en código de máquina de 32 bits de la instrucción contenida en dicha

dirección. o Instrucción en lenguaje ensamblador.

• Haciendo doble clic sobre alguna de las instrucciones de esta ventana establece o quita un punto de parada (breakpoint).

• Muestra el contenido de la memoria de datos. El contenido es mostrado en porciones de 64 bits.• Haciendo doble clic es posible editar el valor entero contenido en esa dirección de memoria.

Para editar un valor en punto flotante, es necesario hacer doble clic con el botón derecho.

Organización de Computadores 6

Page 8: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

• Representación esquemática de las cinco etapas del pipeline del procesador MIPS64 y de las unidades para operaciones de punto flotante (adición/sustracción, multiplicación y división). Se indica qué instrucción está en cada una de las etapas.

Ejecución

• Muestra el comportamiento temporal del pipeline. Registra la historia de las instrucciones a medida que entran y salen de él.

Organización de Computadores 7

Page 9: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

• Una instrucción que causa un parón (stall) es remarcada en color azul mientras que una instrucción que debe ser demorada como resultado de un parón es mostrada en color gris.

• Muestra los valores almacenados en cada registro del procesador en: o gris: se encuentra en proceso de ser escrito por alguna instrucción. o algún color: etapa para la cual el valor del registro está disponible para hacer forwarding.

• Esta ventana permite cambiar el contenido de los registros enteros y de punto flotante siempre que no se encuentren en proceso de ser escritos o de forwarding. Para hacerlo, basta con hacer doble clic sobre el registro que se desea cambiar

Organización de Computadores 8

Page 10: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

• Provee estadísticas sobre el número de ciclos simulados, cantidad de instrucciones procesadas, el promedio de Ciclos Por Instrucción (CPI), el tipo de parones, el número de saltos condicionales y la cantidad de instrucciones de carga (Load) y almacenamiento (Store).

Configuración

• Configuration ->Architectureo La opción CodeAddress Bus se refiere al número de cables conectados al bus de

direcciones. De esa manera, un valor de 10 significa que 210 = 1024 bytes de memoria de código van a estar disponibles y van a ser mostrados en la ventana Code. Algo similar ocurre con la opción Data Address Bus, solo que referida a la memoria de datos.

o Las latencias son las etapas de los cauces de suma, multiplicación y división en coma flotante

• Configuration ->EnableForwarding• Configuration ->EnableDelay Slot

Syscall(Traps)

• Constituyen la interfaz entre los programas MIPS64 y el sistema de entrada/salida. Se han definido 6 syscalls:

o SYSCALL #0: terminar el programa (halt) - exit().o SYSCALL #1: Abrir un archivo - open().o SYSCALL #2: Cerrar un archivo - close().o SYSCALL #3: Leer un bloque de un archivo - read().o SYSCALL #4: Escribir bloques a un archivo - write().o SYSCALL #5: Formatear y enviar información hacia la salida estandar - printf().

• No se usaran en las prácticas, salvo la de finalización “halt”.

Organización de Computadores 9

Page 11: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

Ejercicio 1: Riesgos RAW

1. Ejecutar el programa sin forwarding y observar el número de ciclos.2. Ejecutar el programa con forwarding y analizar el cambio y el speedup.

.data

.textmain:

ld R2,1(R0) ld R3,0(R0)dadd R1,R2,R3ld R4,0(R1) ; carga en R4, lee R1sd R4,12(R1) ; almacena en R4, lee

R1nopnopnopnopld R1,0(R2)dsub R4,R1,R5and R6,R1,R7or R8,R1,R9

Finish:halt

Organización de Computadores 10

Page 12: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

Ejercicio 2: Riesgos RAW

1. Analizar los riesgos de datos (RAW)2. Ejecutar el programa sin forwarding y observar el número de ciclos.3. Ejecutar el programa con forwarding y analizar el cambio y el speedup.

.data

.textmain:

dadd R1,R2,R3 ; almacena en r1dsub R4,R1,R5 ; usa r1and R6,R1,R7 ; usa r1or R8,R1,R9 ; usa r1xor R10,R1,R11 ; usa r1nopnopnopnopdadd R1,R2,R3 ; almacena en r1dsub R4,R1,R5 ; usa r1 y almacena en

r4and R6,R4,R7 ; usa r4 y almacena en

r6or R8,R6,R9 ; usa r6 y almacena en

r8xor R10,R8,R11 ; usa r8

Finish:halt ;fin del programa

Organización de Computadores 11

Page 13: Práctica 1. WinMIPS64 - ocw.uc3m.esocw.uc3m.es/.../practicas-1/OC_P01_Enunciados.docx  · Web viewPráctica 1. WinMIPS64. Departamento de Ingeniería de Sistemas y Automática

Universidad Carlos III de MadridDepartamento de Ingeniería de Sistemas y Automática

Ejercicio 3: Riesgos estructurales

Para este ejercicio hay que configurar la arquitectura para que las multiplicaciones en punto flotante tengan una latencia en ejecución de 5 ciclos y las sumas en punto flotante de 2. Dados estos parámetros:

1. Comprobar los riesgos estructurales.2. Calcular los CPI del programa en la arquitectura MIPS64.3. ¿Existen riesgos RAW?4. ¿Existen riesgos WAW? Modificar el programa para exhibir uno.5. ¿Existen riesgos WAR? ¿Se puede modificar el programa para ver uno?

.data

.textmain:

add.d F1,F2,F3mul.d F2,F4,F5add.d F3,F3,F4mul.d F6,F6,F6add.d F1,F3,F5add.d F2,F3,F4

Finish:halt ;fin del

programa

Organización de Computadores 12