You are on page 1of 9

EscuelaUniversitariadeInformtica

IngenieradeComputadores

ARQUITECTURADECOMPUTADORES
PRCTICAN1
INTRODUCCINALSIMULADORWINMIPS64

INTRODUCCIN

Este documento contiene el enunciado de la prctica de introduccin al simulador


WinMIPS64.
OBJETIVO

El objetivo perseguido es la familiarizacin del alumno con el simulador WinMIPS64.


Para conseguirlo se llevarn a cabo varias actividades que irn introduciendo de
maneragraduallosdiferentesaspectosdelsimulador,desdelaedicindeprogramas
hastalaejecucindelosmismos.
INSTALACINDELSIMULADOR

ElsimuladornicamentefuncionaenentornosMicrosoftWindows.Estdisponible,en
formato ZIP para su instalacin, en la web del Departamento de Informtica Aplica
http://www.dia.eui.upm.es
Una vez descargado es necesario utilizar una herramienta como WinZIP, para poder
extraersucontenidoenundirectoriodestino(p.e.C:\Winmips64).
Juntoconelsimulador(winmips64.exe)estndisponibleslosficherossiguientes:
asm.exe

Programa que permite comprobar la sintaxis de un


fichero con cdigo MIPS64. Para utilizarlo es necesario
una ventana de comandos (cmd.exe), admitiendo como
parmetros de entrada el nombre del fichero con
extensin.s.Ejemplodeutilizacin:C:\Winmips64>
asm prueba.s (Suponiendo que tanto asm como el
fichero prueba.s estn situados en el mismo
directorio)

winmipstut.doc

Fichero en formato MS Word con el Manual de Usuario


del simulador en ingls (existen traducciones al espaol
enInternet)

ejemplos

Programas de ejemplo listos para ser cargados y


ejecutadosenelsimulador.

ELPRIMERPROGRAMA

Antes de mostrar la funcionalidad del simulador se va a describir brevemente el


formatodeunprogramaenensambladorlistoparasercargadoenelsimulador.
El programa debe editarse con un editor de texto y consta de dos secciones
diferenciadas:definicindevariablesycdigo.
ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64

Enlaseccin de definicinde variables sedeclaran todaslasvariablesquevan aser


usadasporelprograma.Enrealidadladefinicindevariablesnoesmsquereservar
unespaciodememoriaparaalojarlasyasignarlasunnombresimblico(nombredela
variable)parareferenciarlasdeunamaneramssencillaenelcdigo.
Para definir variables el ensamblador proporciona unas serie de directivas (ver
transparencias de clase del tema 2) que facilitan la declaracin de las variables.
Conviene que la declaracin de cada variable comience en una nueva lnea en su
columna0.
El cdigo (las instrucciones) comienza tras la directiva .text o .code). Las
primeras columnas de la lnea se reservan para situar una etiqueta como posible
destinodeunainstruccindesalto.
Acontinuacinseincluyeunpequeoprogramaamododeejemplo:
; Arquitectura de Computadores
; Prctica de introduccin al simulador
.data
i:
.word32 0
j:
.word32 0
.text
daddi R2,R0,0 ; comentario
daddi R3,R0,0 ;
daddi R5,R0,10 ;
WHILE:
slt R6,R2,R5
beqz R6,ENDWHILE
daddi R3,R3,5
sw R3,j(R0)
daddi R2,R2,1
sw R2,i(R0)
j WHILE
ENDWHILE: nop
halt

Programa1

EsteprogramacorrespondealprogramaCsiguiente:
int main ()
{
int i = 0;
int j = 0;
while ( i < 10) {
j = j + 5;
i = i + 1;
}
}
Programa2

ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64

En el programa fuente (ensamblador) las directivas .data y .text indican el


comienzodeladeclaracindevariablesydecdigorespectivamente.Laotradirectiva
presente .word32 indica que la variable ocupara 32 bits de memoria. El
identificadorqueprecedea.word32eselnombresimblicoasignadoalavariable
seguidodelcarcter:(enestecasosehandeclaradodosvariablesdenombreiy
j).Porltimo,elnmeroqueaparecetrasladirectivaeselvalorinicialquetendrla
variable.Resumiendo,sehandeclaradodosvariables(iyj)de32bitsyconvalorinicial
0.
Elcdigodelprogramaconstadetreceinstruccionesytresetiquetas(MAIN,WHILEy
ENDWHILE).Comoyasehacomentadoantesladeclaracindeetiquetasserealizaen
elcomienzodelalnea(columna0)terminandosunombreconelcarcter:.
Las etiquetas WHILE y ENDWHILE son destinos de las instrucciones de salto (beqz y
j).Elnombredelaetiquetasueleserrepresentativodelcdigoenelqueseutiliza,en
estecasosetratadeunbuclewhile.
Enelficherotambinpuedenaparecercomentarios,seconsideracomotalcualquier
textoqueaparezcaaladerechadelcarcter;
Lasconstantesnumricaspuedenexpresarseenbasedecimalobienenhexadecimal
anteponiendo al valor los caracteres (0x). Un ejemplo sera daddi r1,r0,0xf
(inicializaelregistror1conelvalorhexadecimalF.
ARRANQUEDELSIMULADOR

Para arrancar el simulador basta con repicar en el icono correspondiente al fichero


winmips64.exedesdeelexploradordeficheros.Elaspectodelsimuladores:

ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64


Constadesieteventanas:
1. Pipeline

Muestra la estructura del cauce con las etapas y las diferentes


unidades funcionales disponible. Al ejecutarse un programa va
mostrandoquinstruccionesestnencadaetapa.

2. Code

Muestra el contenido del segmento de memoria. En la primera


columna aparece la direccin de memoria en la que se
encuentra cargada la instruccin, a continuacin el cdigo
mquinay,porltimo,lainstruccinenensambladortalycomo
se edit. Si en el cdigo no se ha indicado nada, el simulador
cargaelcdigoapartirdeladireccin0delsegmentodecdigo.
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 cdigo, el
contenidodelasdireccionessemuestraenpalabrasde64bits.
Elsimuladorutilizaordenacinlittleendianparalasvariablesde
tamaosuperioraunocteto.

ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64

4. Register

Contenidodelosregistrosdepropsitogeneral(desdeR0aR31)
ydecomaflotante(F0F31).Elcontenidodelosregistrospuede
modificarseencualquiermomentorepicandosobresunombre.

5. Cycles

Muestra el contenido del cauce a lo largo del tiempo de


ejecucin. El tamao del buffer histrico est limitado. Cada
etapadelcaucetieneasignadouncoloryunnombre.

6. Statistics

Contiene informacin sobre la ejecucin del programa (n


instrucciones ejecutadas, ciclos empleados, paradas clasificadas
portipoderiesgo,etc.).

7. Terminal

SimulaelcomportamientodeunterminaldeE/S,permitiendoa
losprogramasleeryescribirinformacindesde/haciaelexterior.

Todos los valores numricos mostrados en las anteriores ventanas estn expresados
enhexadecimal.
En la barra de estado de la ventana principal del simulador se van mostrando
informaciones de cmo transcurre la ejecucin de un programa en el modo paso a
paso(SingleCycle)

CARGADEUNPROGRAMA

Unavezquetengamoseditadoelprogramaenunfichero,seprocedeasucargaenel
simuladorutilizandolaopcinOpendelmenFile.Sitrasseleccionarelficheroydaral
botn Abrir1 no aparece la ventana siguiente es que el programa es sintcticamente
correctoysepuedeprocederaejecutarlo:

Una vez cargado, las ventanas de cdigo (Code) y datos (Data) aparecen rellenas a
partirdelainformacinquecontenaelficheroqueseacabadecargar.

Elnombredelbotnapareceenespaolalserestelidiomadisponibleenelsistemaoperativoenel
queseejecutaelsimulador
ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64

Cuando aparece la ventana anterior indica que existe al menos un error, pero
desgraciadamente muchas veces los programas contienen ms de un error siendo
deseable corregirlos todos y no necesitar sucesivas cargas del programa en el
simuladorparadetectarlostodosyprocederacorregirlos.
Cmo ya se ha indicado anteriormente junto con el simulador est disponible el
programa asm.exe que permite comprobar la validez de un programa, mostrando
todosloserroresquecontenga.
EJECUCINDEUNPROGRAMA

La ejecucin de un programa puede realizarse de tres formas distintas: CicloaCiclo


(SingleCycle),MultiCiclo(MultiCycle)yHastaBreakpoint(Runto).
CicloaCiclopermiteirejecutandoelprogramacomprobandoquesucedecadavezque
transcurreunnuevociclodereloj.Estemodonospermitevercongranniveldedetalle
elfuncionamientodelcauce,desdecuntasinstruccionesestnactivas,riesgosenlos
queincurren,paradas,etc.ParaaccederaestemodohayqueutilizarlaopcinSingle
cycledelmenExecuteoutilizarlatecladefuncinF7.
EnelmodoMulticiclolaejecucindelprogramaavanzacincociclos(valorpordefecto
que puede modificarse a travs de la opcin Multi Step del men Configure o bien
pulsandolacombinacindeteclasctrl.+T).Paraaccederaestemodosepuedeutilizar
laopcinMultiCycledelmenExecuteobienlatecladefuncinF8.
ElmodoHastabreakpointejecutaelprogramahastaencontrarunpuntodeparadao
hasta el final del programa (normalmente la instruccin halt es la ltima,
procediendo a detener el procesador). Este modo est disponible mediante la opcin
RuntodelmenExecuteolatecladefuncinF4.
Lospuntosdeparadasefijanrepicandoconelratnenunainstruccindelaventana
decdigopasandostaacolorazulparaindicarquesehafijadounpuntodeparada.
Paraquitarlosseprocederdeidnticaforma,esdecir,repicandoenlainstruccin
quelotengafijado,pasandoacontinuacindelcolorazulalnegrooriginal.
En cualquier momento de la simulacin podemos reiniciar el simulador mediante las
opcionesResetMIPS64yFullResetdelmenFile.Laprimeraopcinsimulaunreset
hardwaredelprocesador,lasegundaademsborraelcontenidodelamemoria.

OTRASCOSASDELSIMULADOR

El simulador tiene mucha ms funcionalidad que iremos viendo en las siguientes


prcticas.
ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64

TAREASAREALIZAR

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
EnableDelaySlot)
Una vez visto el funcionamiento bsico del simulador se proponen las tareas
siguientes:
1. Editar y ejecutar en el simulador el que hemos visto como ejemplo.
Respondiendoalascuestionessiguientes:
a. Quregistrosseutilizanenelprogramaparatrabajarconlasvariables
iyj?
b. Qu hace la instruccin slt R6,R2,R5? Qu ocurre si intercambias
losdosltimosregistrosdelainstruccin?
c. Qu registro tiene almacenado el nmero de veces que tiene que
ejecutarseelbucle?
d. Comprueba en la memoria que valores tienen las variables i y j tras
finalizarlaejecucindelprograma.
e. Modifica el programa anterior para que las variables y el cdigo se
almacenen a partir de las direcciones 100 y 200 de sus respectivos
segmentosdedatosycdigo.
2. Escribeunprogramaquealmacenelasprimeras20potenciasdedos(1,2,4,)
enunarrayde20posiciones.Eltamaodeloselementosdelarraydebeser32
bits.
a. Implementarlo primero utilizando para calcular las potencias de dos
mediantelamultiplicacin.
b. Implementarloutilizandodesplazamientosalaizquierda.
c. Comprobar el tiempo de ejecucin (ciclos)2 empleado en cada uno de
ellos,haydiferencias?Ysilashayculeselmotivo?

ConsultarlaventanadeStatistics

ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64

HOJADERESPUESTAS

NombreyApellidos:

Cuestiones

1.
a)
b)
c)
d)
e)

2.
a)
b)
c)

ArquitecturadeComputadores

PrcticadeIntroduccinalsimuladorWinMIPS64

You might also like