Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Practicas de Mips, Ejercicios de Arquitectura de ordenadores

Asignatura: Arquitectura de computadoras, Profesor: Don Carlos, Carrera: Teología, Universidad: UPCO

Tipo: Ejercicios

2014/2015

Subido el 02/07/2015

arturo_rosado
arturo_rosado 🇪🇸

2 documentos

1 / 9

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Escuela(Universitaria(de(Informática(
Ingeniería(de(Computadores(
(
(
(
(
(
(
ARQUITECTURA(DE(COMPUTADORES(
PRÁCTICA(Nº(1((
INTRODUCCIÓN(AL(SIMULADOR(WINMIPS64(
!
pf3
pf4
pf5
pf8
pf9

Vista previa parcial del texto

¡Descarga Practicas de Mips y más Ejercicios en PDF de Arquitectura de ordenadores solo en Docsity!

Escuela Universitaria de Informática

Ingeniería de Computadores

ARQUITECTURA DE COMPUTADORES

PRÁCTICA Nº 1

INTRODUCCIÓN AL SIMULADOR WINMIPS

INTRODUCCIÓN Este documento contiene el enunciado de la práctica de introducción al simulador WinMIPS64. OBJETIVO El objetivo perseguido es la familiarización del alumno con el simulador WinMIPS64. Para conseguirlo se llevarán a cabo varias actividades que irán introduciendo de manera gradual los diferentes aspectos del simulador, desde la edición de programas hasta la ejecución de los mismos. INSTALACIÓN DEL SIMULADOR El simulador únicamente funciona en entornos Microsoft Windows. Está disponible, en formato ZIP para su instalación, en la web del Departamento de Informática Aplica http://www.dia.eui.upm.es Una vez descargado es necesario utilizar una herramienta como WinZIP, para poder extraer su contenido en un directorio destino (p.e. C:\Winmips64). Junto con el simulador (winmips64.exe) están disponibles los ficheros siguientes:

  • asm.exe Programa que permite comprobar la sintaxis de un fichero con código MIPS64. Para utilizarlo es necesario una ventana de comandos (cmd.exe), admitiendo como parámetros de entrada el nombre del fichero con extensión “.s”. Ejemplo de utilización: C:\Winmips64> asm prueba.s (Suponiendo que tanto asm como el fichero prueba.s están situados en el mismo directorio)
  • winmipstut.doc Fichero en formato MS Word con el Manual de Usuario del simulador en inglés (existen traducciones al español en Internet)
  • ejemplos Programas de ejemplo listos para ser cargados y ejecutados en el simulador. EL PRIMER PROGRAMA Antes de mostrar la funcionalidad del simulador se va a describir brevemente el formato de un programa en ensamblador listo para ser cargado en el simulador. El programa debe editarse con un editor de texto y consta de dos secciones diferenciadas: definición de variables y código.

En el programa fuente (ensamblador) las directivas “.data” y “.text” indican el comienzo de la declaración de variables y de código respectivamente. La otra directiva presente “.word32” indica que la variable ocupara 32 bits de memoria. El identificador que precede a “.word32” es el nombre simbólico asignado a la variable seguido del carácter “:” (en este caso se han declarado dos variables de nombre “i” y “j”). Por último, el número que aparece tras la directiva es el valor inicial que tendrá la variable. Resumiendo, se han declarado dos variables (i y j) de 32 bits y con valor inicial

El código del programa consta de trece instrucciones y tres etiquetas (MAIN, WHILE y ENDWHILE). Como ya se ha comentado antes la declaración de etiquetas se realiza en el comienzo de la línea (columna 0) terminando su nombre con el carácter “:”. Las etiquetas WHILE y ENDWHILE son destinos de las instrucciones de salto (beqz y j). El nombre de la etiqueta suele ser representativo del código en el que se utiliza, en este caso se trata de un bucle while. En el fichero también pueden aparecer comentarios, se considera como tal cualquier texto que aparezca a la derecha del carácter “;” Las constantes numéricas pueden expresarse en base decimal o bien en hexadecimal anteponiendo al valor los caracteres (0x). Un ejemplo sería daddi r1,r0,0xf (inicializa el registro r1 con el valor hexadecimal F. ARRANQUE DEL SIMULADOR Para arrancar el simulador basta con repicar en el icono correspondiente al fichero winmips64.exe desde el explorador de ficheros. El aspecto del simulador es:

Consta de siete ventanas:

  1. Pipeline Muestra la estructura del cauce con las etapas y las diferentes unidades funcionales disponible. Al ejecutarse un programa va mostrando qué instrucciones están en cada etapa.
  2. Code Muestra el contenido del segmento de memoria. En la primera columna aparece la dirección de memoria en la que se encuentra cargada la instrucción, a continuación el código máquina y, por último, la instrucción en ensamblador tal y como se editó. Si en el código no se ha indicado nada, el simulador carga el código a partir de la dirección 0 del segmento de código. El contenido de las direcciones se muestra en palabras de 32 bits.
  3. Data Contenido del segmento de datos con las variables declaradas en el programa. A diferencia de la ventana de código, el contenido de las direcciones se muestra en palabras de 64 bits. El simulador utiliza ordenación little‐endian para las variables de tamaño superior a un octeto.

Cuando aparece la ventana anterior indica que existe al menos un error, pero desgraciadamente muchas veces los programas contienen más de un error siendo deseable corregirlos todos y no necesitar sucesivas cargas del programa en el simulador para detectarlos todos y proceder a corregirlos. Cómo ya se ha indicado anteriormente junto con el simulador está disponible el programa asm.exe que permite comprobar la validez de un programa, mostrando todos los errores que contenga. EJECUCIÓN DE UN PROGRAMA La ejecución de un programa puede realizarse de tres formas distintas: Ciclo‐a‐Ciclo (Single Cycle), Multi‐Ciclo (Multi‐Cycle) y Hasta‐Breakpoint (Run‐to). Ciclo‐a‐Ciclo permite ir ejecutando el programa comprobando que sucede cada vez que transcurre un nuevo ciclo de reloj. Este modo nos permite ver con gran nivel de detalle el funcionamiento del cauce, desde cuántas instrucciones están activas, riesgos en los que incurren, paradas, etc. Para acceder a este modo hay que utilizar la opción Single cycle del menú Execute o utilizar la tecla de función F. En el modo Multi‐ciclo la ejecución del programa avanza cinco ciclos (valor por defecto que puede modificarse a través de la opción Multi Step del menú Configure o bien pulsando la combinación de teclas ctrl.+T ). Para acceder a este modo se puede utilizar la opción Multi Cycle del menú Execute o bien la tecla de función F. El modo Hasta‐breakpoint ejecuta el programa hasta encontrar un punto de parada o hasta el final del programa (normalmente la instrucción halt es la última, procediendo a detener el procesador). Este modo está disponible mediante la opción Run to del menú Execute o la tecla de función F. Los puntos de parada se fijan repicando con el ratón en una instrucción de la ventana de código pasando ésta a color azul para indicar que se ha fijado un punto de parada. Para quitarlos se procederá de idéntica forma, es decir, repicando en la instrucción que lo tenga fijado, pasando a continuación del color azul al negro original. En cualquier momento de la simulación podemos reiniciar el simulador mediante las opciones Reset MIPS64 y Full Reset del menú File. La primera opción simula un reset hardware del procesador, la segunda además borra el contenido de la memoria. OTRAS COSAS DEL SIMULADOR El simulador tiene mucha más funcionalidad que iremos viendo en las siguientes prácticas.

TAREAS A REALIZAR Para llevar a cabo las tareas es necesario configurar el simulador con las opciones Forwarding y Delay Slot inhibidas (menú Configure opciones Enable Forwarding y Enable Delay Slot) Una vez visto el funcionamiento básico del simulador se proponen las tareas siguientes:

  1. Editar y ejecutar en el simulador el que hemos visto como ejemplo. Respondiendo a las cuestiones siguientes: a. ¿Qué registros se utilizan en el programa para trabajar con las variables i y j? b. ¿Qué hace la instrucción slt R6,R2,R5? ¿Qué ocurre si intercambias los dos últimos registros de la instrucción? c. ¿Qué registro tiene almacenado el número de veces que tiene que ejecutarse el bucle? d. Comprueba en la memoria que valores tienen las variables i y j tras finalizar la ejecución del programa. e. Modifica el programa anterior para que las variables y el código se almacenen a partir de las direcciones 100 y 200 de sus respectivos segmentos de datos y código.
  2. Escribe un programa que almacene las primeras 20 potencias de dos ( 1 , 2, 4, …) en un array de 20 posiciones. El tamaño de los elementos del array debe ser 32 bits. a. Implementarlo primero utilizando para calcular las potencias de dos mediante la multiplicación. b. Implementarlo utilizando desplazamientos a la izquierda. c. Comprobar el tiempo de ejecución (ciclos)^2 empleado en cada uno de ellos, ¿hay diferencias? Y si las hay ¿cuál es el motivo? (^2) Consultar la ventana de Statistics