You are on page 1of 19

Universitat de Girona - Escola Politcnica Superior Ingeniera Informtica Arquitectura de Computadores

Manual de WinDLX

Autores: Maria Reyes Toro Len Alejandro Galisteo Arribas

WinDLX

ndice
Manual de WinDLX............................................................................1 ndice....................................................................................................2 El simulador WinDLX...............................................................................3 Interfaz..................................................................................................3 Ventana Pipeline..................................................................................3 Ventana Clock Cycle Diagram................................................................5 Ventana Code......................................................................................5 Ventana Breakpoints............................................................................6 Ventana Register..................................................................................6 Ventana Statistics................................................................................8 Opciones y configuracin del simulador.....................................................9 Caractersticas del WinDLX.....................................................................11 Ejemplo................................................................................................16

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

El simulador WinDLX
WinDLX (Windows Deluxe Simulator) 1.3E es un simulador DLX, de computadores DLX Una aplicacin desarrollada para entornos Windows de Microsoft. Este programa fue elaborado por la Universidad de Tecnologa de Viena y, en concreto, esta versin sali a la luz en mayo de 1992. Este programa se puede descargar gratuitamente de Internet y es el que utilizaremos para realizar este pequeo manual prctico. El objetivo es estudiar las caractersticas de este simulador de las arquitecturas DLX sin entrar en profundidad en el funcionamiento general del DLX.

Interfaz
Si ahora se arranca el simulador, se pueden ver 6 subventanas (child window) dentro de ste: Pipeline (segmentacin de flujo), Clock Cycle Diagram (diagramas de ciclo de reloj), Code (cdigo), Breakpoints (puntos de interrupcin), Register (registro) y Statistics (estadsticas).

V EN TAN A P I PELIN E
En primer lugar, se encuentra esta ventana dnde muestra el diagrama interno del procesador DLX. Se compone de un conjunto de estados segmentados (Pipeline) de 5 estados. Los estados van desde que la informacin se carga hasta que es almacenada tras la ejecucin es: IF (Instruction Fetch o bsqueda de instruccin) es la unidad que se encarga de importar la instruccin correspondiente de la memoria al registro de instruccin; ID (Instruction Decode o descodificacin de instruccin) dnde la instruccin es descodificada y los ficheros de registro accedidos para leer los operndoos A y B (las entradas de la ALU); EX (EXecution o Ejecucin) unidad que opera con los operadores A y B cargados en el ciclo anterior; MEM (MEMory access o acceso en memoria) etapa utilizada nicamente por las instrucciones de carga y almacenamiento para leer y escribir en memoria respectivamente en la direccin calculada en el estado anterior; y WB (WriteBack o escritura) en este ltimo paso el resultado, provenga de la memoria o de la ALU, se escribe en los registros. Como esta operacin (al igual que la de ID) se realizan en medio ciclo, es posible almacenar la informacin en la unidad de WB y obtener esta

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

informacin en el mdulo de ID; todo dentro del mismo ciclo evitando la necesidad de realizar Forwarding.

Se puede observar el detalle que el estado de ejecucin esta ramificado en cuatro unidades: intEX (INTeger EXecution o ejecucin con operadores Enteros); faddEX (single and doble precision Folating point ADD EXecution o Ejecucin de Suma con operadores de Punto Flotante de simple o doble precisin); fmulEX (single and doble precision Folating point MULtiply EXecution o Ejecucin de Multiplicacin con operadores de Punto Flotante de simple o doble precisin) y fdivEX (single and doble precision Folating point DIVide EXecution o Ejecucin de Divisin con operadores de Punto Flotante de simple o doble precisin). Esto se debe a que el tradicional mdulo de ejecucin EX ha sido substituido por 4 etapas paralelas de mbito ms especifico. Aunque estas dos ltimas unidades, fmulEX y fdivEX, tambin realizan operaciones de multiplicacin y divisin con operadores enteros de tamao simple o doble, y con o sin signo (la suma de operadores enteros no est implementada por faddEX ya que se realiza intEX). Estos mdulos permiten la ejecucin simultnea de varias operaciones distintas. Adems, como las ejecuciones de instrucciones de este tipo suelen ser complejas y por lo tanto largas y requieren varios ciclos de reloj para completarse, este sistema permite que el mdulo de ejecucin principal no quede acaparado por una operacin compleja demorando la ejecucin de las instrucciones posteriores. En esta representacin esquemtica de la arquitectura DLX se mostrarn los estados en los que se encuentre cada instruccin. A medida que la ejecucin vaya avanzando, cada uno de los estados se rellenar con la instruccin que este tratando.

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

V EN TAN A C LOC K C YC LE D I AG RAM


Esta ventana llamada Diagrama de Ciclos de Reloj permite ver, de forma sencilla, la evolucin cronolgicamente de la ejecucin del cdigo.

Esta

compuesta

por

una

primera

columna

donde

se mostrarn

las

instrucciones a las cuales pertenece esa ejecucin. Y a su derecha cmo las diferentes ejecuciones han trascurrido por el Pipeline, encabezadas por el nmero de ciclo al cual pertenecen los estados. La zona ms oscurecida representa la ejecucin actual del procesador. A medida que ejecuten las instrucciones aparecern distintas flechas de estados superiores a estados inferiores. Estas flechas pueden ser de dos colores: verdes y rojas. Las flechas de rojo avisan de la necesidad de hacer una detencin (stall) debido a riesgos RAW (RAW hazards): una instruccin necesita un valor que an no ha sido calculado por una instruccin anterior. Las flechas verdes significan que cmo solucin al problema anterior (el riesgo RAW) se est aplicando Forwarding: una instruccin necesita un valor que ya ha sido calculado por una instruccin anterior pero aun no ha sido almacenado en el registro y por tanto es desviado de un estado a otro sin que sea necesario pasar por el registro y acelerar su disponibilidad.

V EN TAN A C ODE
A continuacin, la ventana de cdigo. Esta representa la memoria mediante tres columnas: la direccin (simblica o numrica), la representacin mquina (en hexadecimal) de la instruccin y la instruccin en ensamblador.

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

A medida que se ejecuta la el cdigo se va coloreando, lnea a lnea, el fondo de las distintas instrucciones de la memoria con el color de los distintos pasos del procesador representado en la ventana Pipeline. Adems del remarcar estas direcciones con un color tambin se aade una etiqueta con el nombre del estado.

Desde esta ventana se pueden insertar y eliminar puntos de interrupcin (que quedarn reflejados en la ventana Breakpoints). En el cdigo aparecern junto a la direccin una etiqueta indicando que en esa instruccin hay una interrupcin.

V EN TAN A B REAKPOI N TS
Esta ventana simplemente nos informa de los distintos puntos de interrupcin insertados en el cdigo.

Al crear uno de estos puntos nos solicitar la direccin de memoria y el ciclo del computador en el que se ha de interrumpir la ejecucin. Esta ventana estar formada por 4 columnas: nmero de punto de interrupcin, direccin, ciclo donde se parar la ejecucin e instruccin en ensamblador.

V EN TAN A R EG I STER
En esta ventana, tal y como indica su nombre, se pueden observar los valores que contienen los registros del computador durante la ejecucin. Mostrndose el nombre del registro y a continuacin el valor que tiene.

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

Los valores de los registros se muestran en hexadecimal. Aunque esta caracterstica puede ser modificada permitiendo visualizar los datos en formato decimal. En cualquier momento, incluso a mitad de ejecucin de un proceso, se pueden cambiar los valores de los registros. Simplemente se selecciona uno en concreto y aparece una pequea ventana con el valor actual y una celda en blanco para introducir el nuevo valor.

Esta ventana Register lista el nombre y contenido de todos los registros de la arquitectura DLX. En concreto estos los registros accesibles para los programas: GPRs (General Propouse Register o registro de propsito general), treinta y dos registros (R0..R31) de 32 bits (para almacenar datos enteros) dnde R0 siempre tiene valor 0; FPRs (Floating Point Register o registro de punto flotante), conjunto de registros que se puede utilizar como treinta y dos registros (F0..F31) de 32 bits, es decir de precisin simple, o bien diecisis registros (D0..D30 contando de 2 en 2) de precisin doble, 64 bits, agrupando los registros de dos en dos con el objetivo de obtener mayor precisin; FPRS (Floating Point Status Register o registro de estado de punto flotante), utilizado para comparar y para excepciones de punto flotante. Todos los movimientos desde o hacia el FPRS van a travs del GPRs, existe un salto que prueba el bit de comparacin en el FPRS. Y por ltimo est el PC (Program Counter o contador de programa), que contiene la direccin de la prxima instruccin a ser buscada; este registro puede ser modificado por las instrucciones de salto (branches/jumps). Adems existen registros internos que no son visibles ni accesibles al cdigo de los programas pero que el WinDLX muestra al usuario. Estos son esos registros: IMAR (Instruction Memory Arddress Register o registro de direcciones de memoria de instrucciones), inicializado con el contenido de la direccin apuntada por PC; IR

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

(Instruction Register o registro de instrucciones), se carga en IF con la siguiente instruccin a ser ejecutada; A y B (registros de operndoos de precisin simple, 32 bits, que sern enviados a la ALU), se cargan en el estado de ID; AHI y BHI (registros de operndoos de precisin doble, 64 bits, que sern enviados a la ALU); BTA (Branch Trarget Address register o registro de direccin de destino del salto) en la fase de ID la direccin de destino es calculada y almacenada en este registro para ser cargado en el PC si el salto llega a ser efectivo; ALU y ALUHI (registro de la unidad aritmtico lgica donde se almacena el resultado, de simple o doble precisin respectivamente, de la operacin); DMAR (Data Memory Arddress Register o registro de direcciones de memoria de datos), la direccin para una referencia de memoria se transferida a este registro en la unidad de MEM; SDR (Store Data Register o registro de almacenamiento de datos), dnde se almacenan los datos a ser almacenados en memoria; LDR (Load Data Register o registro de carga de datos), lugar donde se guarda la informacin leda en la memoria.

V EN TAN A S TATI STI C S


Esta pantalla nos muestra informacin de diferentes aspectos de una simulacin como son: la configuracin harware que se ha utilizado en la simulacin (decidida por el usuario), las detenciones que se han realizado y sus causas (estructurales, de control, por interrupcin, RAW, WAW), los saltos que han sido efectivos, el nmero de instrucciones de carga y almacenamiento en memoria, instrucciones con punto flotante y los mensajes mostrados por pantalla. Adems de los nmeros de ciclos simulados, instrucciones que pasaron por el estado ID y las instrucciones que se encuentran en el Pipeline en ese momento.

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

Toda la informacin que encontraremos en esta ventana resulta muy til a la ahora de realizar comparaciones entre distintas simulaciones cambiando distintos parmetros de ejecucin. Puede ser muy interesante comparar cmo afectan los cambios en la configuracin del DLX: habilitar o deshabilitar Forwarding, nmero de unidades de punto flotante, etctera.

Opciones y configuracin del simulador


El simulador WinDLX se rige por unos parmetros que pueden ser variados, a gusto del usuario, como se explica a continuacin. En Floating Point Stage Configuration (Configuracin de las unidades de punto flotante) se pueden modificar la cantidad y duracin (en ciclos de ejecucin) de las unidades punto flotante: la suma (Additions Units), la multiplicacin (Multiplication Units) y la divisin (Division Units) para operndoos decimales. Estos parmetros se encuentra en la barra de men en Configuration Floating Point Stage Configuration.

El incremento de los ciclos de ejecucin de las operaciones aritmtico-lgicas sirve para poder ejecutar operaciones de punto flotante que requieren mucho tiempo de ejecucin. Y el incremento de las unidades aritmtico-lgicas (suma, multiplicacin y divisin para puntos flotantes) puede ser til para solucionar riesgos estructurales. Es decir, para solucionar problemas de conflictos de los recursos, cuando el hardware no puede soportar todas las combinaciones posibles de instrucciones en ejecuciones simultneas. Se ha de tener en cuenta que la ejecucin de una multiplicacin, suma o divisin datos punto flotante suele durar ms de un ciclo, y

Arquitectura de Computadores

Ingeniera Informtica

WinDLX

puede darse el caso que durante la utilizacin de una de estas unidades, sea necesario ejecutar otra operacin igual y se deba hacer una detencin (stall) por falta de recursos. As pues, incrementando el nmero de unidades aritmticolgicas se soluciona este problema (hasta 8 de cada tipo permite WinDLX). Se ha supuesto que las unidades punto flotante realizan su ejecucin durante ms de un ciclo. Esto se puede configurar tambin en el simulador. Se puede pronosticar cuanto tardarn en ejecutarse las operaciones de punto flotante. WinDLX permite estos estados se demoren hasta 50 ciclos en completar su ejecucin. Este simulador tambin tiene la opcin de que el usuario configure otros parmetros: el tamao de la memoria (desde 512/0x200 Bytes hasta 16777216/0x1000000 Bytes) con Configuration Memory Size; la forma de mostrar las direcciones de la memoria, absolutas (en hexadecimal) o simblicas (a partir de la primera instruccin de cdigo) a travs de Configuration Symbolic Addresses; el tipo de contador de ciclos transcurridos, absoluta (tomando el ciclo inicial como 0 y los posteriores como 1, 2, etc.) o relativa (tomando el ciclo actual como 0 y los anteriores como 1, -2, etc.) por medio de Configuration Absolute Cycle Count; y tambin la opcin de habilitar o deshabilitar Forwarding se puede hacer desde el men Configuration Enable Forwarding. A parte de la configuracin hay diversas opciones que se pueden realizar antes y durante la ejecucin de una simulacin. Hay que tener en cuenta el inconveniente de que al realizar algunos de estos se reinicia la simulacin, as que conviene ejecutar estas operaciones en primer lugar. Una de estas opciones es el Load Code or Data (Cargar cdigo o datos) que realiza la funcin de carga de uno o varios ficheros de cdigo ensamblador para una simulacin. Para acceder a ello hay que ir a la barra de men y seleccionar File Load Code or Data. Tambin se puede hacer que se reinicie el DLX (File Reset DLX), con lo que la simulacin se para y se volvera al principio, o que se reinicie todo (File Reset All), que se pare la simulacin, se descargue de memoria el cdigo ensamblador y algunos los parmetros y configuracin vuelvan al estado original. Otra opcin es la que permite ver, crear nuevo o borrar y modificar un listado de las direcciones simblicas (etiquetas para las direcciones de los saltos) y el valor actual de estas direcciones de memoria. Tambin indica si las etiquetas son

Arquitectura de Computadores

10

Ingeniera Informtica

WinDLX

globales (G) o locales (L). Es decir, si se pueden acceder desde cualquier mdulo o desde el interior del mdulo. Esta opcin se encuentra en la barra de men en Memory Symbols. Memory Display es un comando para mostrar el contenido de la memoria de diferentes formas. Se pueden abrir hasta diez ventanas de este comando. Y el Memory Change muestra y permite cambiar el contenido de la memoria de una direccin dada. Una opcin interesante es la de ver lo que ha sucedido internamente con el procesamiento de una instruccin. Para ello solamente se debe ir a la ventana Clock Cycle Diagram y seleccionar de la lnea de la instruccin que se quiere examinar y se mostrar informacin de lo sucedido en cada paso del Pipeling para esa instruccin. Como por ejemplo si el estado se supero satisfactoriamente, si ha sido necesario soluciones de Forwarding y para qu datos, o el empleo de ciclos de detencin (stalls), etctera. Adems de todas estas tenemos las opciones de ejecucin del simulador. Se puede ejecutar con un slo ciclo (Execute Single Cycle o presionando F7) y as poder ver ciclo a ciclo como va se va procesando la instruccin en cada etapa del Pipeling. Tambin se puede ejecutar ms de un ciclo a la vez (Execute Multiple Cycles o presionando F8 e indicando el nmero de ciclos). Adems se puede ejecutar el resto de ciclos hasta llegar al final del cdigo (Execute Run o presionando F5) o bien hasta llegar a un estado en concreto de una instruccin(Execute Run to ... o presionando F4 e indicando la instruccin y el estado dnde se debe interrumpir). Adems existen mltiples opciones que permiten cambiar caractersticas de la interfaz del simulador. Como por ejemplo, el tamao del registro cronolgico del diagrama de ciclos de reloj o el detalle de la informacin de las estadsticas o los mbitos de las estadsticas o los registros del procesador, etctera.

Caractersticas del WinDLX


Este simulador implementa unas soluciones a los riesgos de integridad (la mayora vistos anteriormente) que se generan durante la ejecucin de un cdigo. Seguidamente se estudiarn en profundidad cada uno de los casos y las formas de solucionarlos.

Arquitectura de Computadores

11

Ingeniera Informtica

WinDLX

Los saltos efectivos que se producen dentro del WinDLX son tratados como saltos no efectivos. Cuando una instruccin de salto (BEQZ, BNEZ, BFPT, BFPF, J, JR, JAL, JARL, TRAP o RFE) es cargada en la etapa de IF, el simulador sigue cargando las instrucciones siguientes indicadas por el PC. Pero es al final de la etapa de ID (la mayora de veces) dnde el DLX puede saber el salto es efectivo y se realiza el salto. En ese momento, se aborta las instrucciones siguientes que estuviesen dentro del Pipeline para pasar a realizar un IF de la instruccin de destino. Cada uno de estos saltos provoca un riesgo de control (control stall).

Otro tipo son los riesgos de bloqueo (trap stall) que se producen cuando hay una interrupcin entrada o salida, para mostrar o recoger una informacin del usuario o bien al finalizar la ejecucin del cdigo. En estos casos lo que hace el WinDLX es bloquear la entrada de nuevas instrucciones al pipeline y de esta forma limpia el pipeline. Esto lo hace aadiendo detenciones (stalls) despus del estado IF de la instruccin de trap. Estas detenciones duran hasta que la instruccin anterior acaba el estado de WB.

Tambin existen los riesgos estructurales. Suceden por dos razones: cuando en dos unidades se intenta acceder al mismo recurso o cuando dos unidades desean enviar la informacin a una misma unidad. El primer caso tiene sencilla solucin (de hecho ni se produce en WinDLX), consiste en duplicar los recursos. Por ejemplo, la unidad de ID y la unidad de MEM suelen acceder al mismo recurso, para que no hayan conflictos disponen de recursos duplicados para que puedan acceder de forma paralela.

Arquitectura de Computadores

12

Ingeniera Informtica

WinDLX

El segundo caso es ms complicado, y se produce cuando por cualquier motivo se desordena la secuencia de los estados la segmentacin respecto a la secuencia de las instrucciones. Esto sucede cuando alguna unidad funcional no est completamente segmentada, por ejemplo los mdulos de operaciones de punto flotante (faddEX, fmulEX y fdivEX) que necesitan varios ciclos. Entonces, el procesador no puede iniciar, secuencialmente, ninguna secuencia de instrucciones, en las que todas utilicen es unidad funcional. En este caso en concreto puede suceder de dos formas. Primera, cuando se esta ejecutando una instruccin en una unidad de punto flotante (faddEX, fmulEX y fdivEX) y hay otra en la unidad ID que est esperando para ejecutarse. Esto se soluciona duplicando ms veces las unidades de punto flotante.

O segunda, cuando un modulo de punto flotante (que se ha demorado ms de un ciclo en ejecutarse) ha terminado, y desea acceder al MEM y cualquier otro mdulo tambin. En esta situacin slo es posible dar paso a una sola y detener el resto de las instrucciones que intentan acceder. En este caso en concreto, el simulador WinDLX suele dar prioridad siempre a las instrucciones ms antiguas del pipeline. Por ltimo estn los riesgos por dependencias de datos. Existen tres tipos: RAW (read after write o lectura despus de escritura), cuando se intenta de leer un dato antes de que sea escrito por una instruccin anterior y se tomara un valor incorrecto; WAR (write after read o escritura despus de lectura), cuando se intenta escribir un destino antes de que sea ledo por una instruccin anterior, lo cual es imposible en la arquitectura DLX ya que los valores se leen en la fase de ID y se

Arquitectura de Computadores

13

Ingeniera Informtica

WinDLX

escriben en la fase de WB; y WAW (write after write o escritura despus de escritura), cuando se intenta escribir un operando antes de que sea escrito por una instruccin anterior. El caso WAW no se debera producir en la arquitectura DLX, pero como existen unidades que se demoran ms de un ciclo en completar su ejecucin hay riesgo de que suceda. Si por ejemplo existe una instruccin en el fmulEX que escribe sobre un registro en concreto, y antes de que finalice, otra instruccin intenta escribir en el mismo registro. Esto provocar un riesgo WAW y WinDLX actuar introduciendo detenciones en la instruccin ms reciente. Por ltimo est el riesgo RAW. ste se produce habitualmente y existen tres formas de solucionarlo. La primera es intrnseca por la propia estructura del DLX. Las unidades funcionales de ID y MEM realizan su funcin en un tiempo inferior a un ciclo, de hecho tardan la mitad de un ciclo en completarse. Por lo tanto si una instruccin necesita cargar un dato (durante la fase de ID) que est siendo almacenado (durante la fase MEM) en ese mismo ciclo, durante la primera mitad del ciclo la unidad MEM almacenar el dato y en la segunda mitad del ciclo la unidad ID lo recuperar. Si este no es el caso, habr que insertar una detencin para esperar hasta que el dato se encuentre, al menos en el estado de MEM y utilizar el mtodo anterior para acelerar la obtencin de este. En estos casos WinDLX utiliza una flecha de color rojo desde la instruccin que est utilizando a la instruccin que la solicita ese dato.

Pero existe una solucin ms efectiva cuando sucede esto. En vez de detener la instruccin hasta que se encuentren las dos instrucciones en el estado de ID y MEM respectivamente, es posible acelerar la obtencin del dato aplicando Forwarding. Es decir, al final de la etapa EX, enviar el dato a la mdulo ID sin tener que hacer que este lo busque en memoria. WinDLX utiliza una flecha verde para indicar que se ha aplicado esta solucin.

Arquitectura de Computadores

14

Ingeniera Informtica

WinDLX

Cabe mencionar que WinDLX clasifica las detenciones por riesgo RAW segn sea su origen. Y en concreto hay tres: por una instruccin de acceso a memoria, por una instruccin de operadores de punto flotante o por una instruccin de salto. Si se combinan los diferentes riesgos se producen situaciones donde no hay una buena optimizacin. Por ejemplo, si existe un riesgo estructural entre dos instrucciones que estn en el ltimo ciclo de estado de ejecucin, supongase: fmulEX y faddEX. Y por otro lado otro riesgo WAW entre la instruccin en fmulEX y otra instruccin que ha finalizado el estado ID y desea entrar en el mdulo de ejecucin faddEX pero lleva ya un ciclo de detencin. En este contexto, si la arquitectura introduce en la fase de MEM la instruccin que haba en faddEX, tanto la instruccin que hay en fmulEX la que hay en ID harn un ciclo de detencin antes de poder cambiar de unidad. En realidad, la instruccin que hay en ID esperando para entrar en faadEX no tendra que haber hecho ninguna detencin y podra haber cambiado de unidad ya que en ese punto, realmente, no hay riesgo WAW.

Otro detalle importante que se puede observar es que en los riegos estructurales en que dos instrucciones desean acceder a un misma unidad, WinDLX no prioriza las instrucciones que primero entraron en el pipeline, si no que puede ser que la arquitectura otorgue un recurso a una instruccin ms reciente. Por lo tanto cabe el riesgo del caso remoto en que una instruccin se quede infinitamente esperando un recurso y la arquitectura siempre se lo otorgue a las nuevas instrucciones.

Arquitectura de Computadores

15

Ingeniera Informtica

WinDLX

Ejemplo
El programa ensamblador con el que se va a trabajar como ejemplo es el siguiente: main: add lw sw jal sub and or seguir: addf multf multf addf multf trap f1,f2,f3 f1,f4,f5 f6,f6,f6 f3,f7,f4 f7,f2,f3 0 r1,r2,r3 r4,0(r1) 12(r1),r4 seguir r4,r1,r5 r6,r1,r7 r8,r1,r9

Finish:

Antes de empezar con la simulacin conviene inicializar una serie de parmetros que son los siguientes: Unidades de suma de punto flotante (Addition Units): Nmero de unidades (Count): 1 Ciclos de ejecucin (Delay): 2

Unidades de multiplicacin de punto flotante (Multiplication Units) : Nmero de unidades (Count): 1 Ciclos de ejecucin (Delay): 5

Unidades de divisin de punto flotante (Divisin Units): Nmero de unidades (Count): 1 Ciclos de ejecucin (Delay): 19

Tiene que estar activadas las opciones de: Direccin simblica (Simbolic Addreeses) Cuenta absoluta de ciclos (Absolute Cycle Count) Activado el forwarding (Enable Forwarding)

Para poder comenzar la simulacin lo primero que se debe hacer es cargar el cdigo ensamblador en memoria principal (del simulador). Tal y como ya se ha

Arquitectura de Computadores

16

Ingeniera Informtica

WinDLX

explicado anteriormente la carga del cdigo se hace desde: File Load Code or Data y se selecciona el programa. Ahora ya el simulador estar preparado para comenzar. Para empezar la ejecucin presione F7 o Execution Single Cycle, que ejecutar un paso de la simulacin. Ver que la primera lnea de la ventana de cdigo con la direccin $TEXT se colorea de amarillo. Con forme vaya apretando F7, ver que las lneas sucesivas se van coloreando. Los colores muestran por que estado del pipeline se encuentra la simulacin.

Sitese en la lnea seguir que contiene la instruccin addf f1,f2,f3 de la ventana de Code Window y seleccione CodeSet Breakpoint. Esto lo que har es indicar el lugar a partir del cual se desea continuar la ejecucin. As no tendr que ir ejecutando ciclo a ciclo. Fjese que en la ventanita de Breakpoint window aparecer la lnea que se ha indicado. Presionando ahora la tecla F5 o Execute Run se continuar la simulacin a partir del Breakpoint anteriormente puesto. Si observa la ventanita de Clock Cycle Diagram (Diagrama de los ciclos de reloj) ver que se encuentra en el ciclo 8. Adems aparecen unas lineas rojas y otras verdes. Las rojas indican la necesidad

Arquitectura de Computadores

17

Ingeniera Informtica

WinDLX

de una parada y la causa est explicada en la lnea que indica. Si hay un R-Stall significa que la parada se produce por RAW, intento de escritura antes de realizar una lectura del registro o direccin de memoria. Y las lneas verdes simbolizan el uso de forwarding (se guarda el valor de un registro tras haber estado operando con l). A parte de todo esto, en el ciclo 7 aparece la palabra aborted, que indica que se ha abortado el procesamiento de la instruccin que se estaba procesando. La explicacin a esto es que en el comando anterior hay una operacin de salto incondicional (JAL). Pero el simulador no sabe si el salto es efectivo hasta que no se haya acabado la etapa ID. Para no desperdiciar tiempo de procesamiento se adopta una tcnica salto efectivo como ya se ha explicado en el apartado anterior.

Para avanzar varios ciclos de una vez, a parte de los breakpoint, se pueden ejecutar varios ciclos a la vez apretando F8 o Execute Multiple Cycle. Si lo hace con el ejemplo que estamos tratando e introduce el nmero de ciclos de 20 se ver la simulacin toda entera y finalizada. Si observa el contenido de la ventanita Clock Cycle Diagram puede apreciar que aparece una flecha entre la instruccin sexta y sptima. La explicacin a la parada ya no es un R-Stall como en el caso anterior sino un W-Stall que es un problema por intentar escribir en un registro cuando la instruccin anterior tambin lo est modificando. A parte del W-Stall aparece un S-Stall que es debido a riesgo estructural. Es decir, falta de recursos. En el ejemplo con el que se esta trabajando, el S-Stall es debido a que se est utilizando la unidad de multiplicacin para una instruccin y la siguiente tambin necesita esta unidad. Al necesitar ms de un ciclo de ejecucin para realizar la multiplicacin se pueden solapar instrucciones de este tipo fcilmente.

Arquitectura de Computadores

18

Ingeniera Informtica

WinDLX

Lo que se suele hacer para solucionar el problema es aadir ms unidades de multiplicacin. Para ello se debe ir a Configuration Floating Point Stages e incrementar en 3 el nmero de unidades de multiplicacin (Count Multiplicaction Units). Para ver como se resuelve la situacin reiniciar el DLX yendo a File Reset DLX y eliminar el breakpoint anteriormente puesto. Y a continuacin presione F8 y ponga un nmero de ciclos de 22 y as ver la simulacin finalizada. Se puede apreciar que el nmero de ciclos ha disminuido de 28 a 22 y ya no aparecen problemas de riesgos estructurales. A aparecido un R-Stall pero viene dado por intentar acceder al contenido de un registro que esta siendo modificado.

Arquitectura de Computadores

19

Ingeniera Informtica

You might also like