Sunteți pe pagina 1din 26

DEPARTAMENTO DE INFORMTICA Y SISTEMAS FACULTAD DE INFORMTICA Ingeniera en Informtica

ESTRUCTURA DE COMPUTADORES

PRCTICAS DE LABORATORIO

Mdulo 1 Prctica 1 Introduccin al entorno de simulacin WinDLX

Actualizado: 30/09/03

Prctica 1

Introduccin al entorno de simulacin WinDLX

NDICE

1 2

4 5

6 7

Objetivos ................................................................................................................................................................... 3 Arquitectura del procesador DLX ............................................................................................................................. 3 2.1 Modos de direccionamiento............................................................................................................................. 4 2.2 Formato de las instrucciones............................................................................................................................ 5 2.3 Repertorio de instrucciones DLX .................................................................................................................... 5 Lenguaje ensamblador DLX ..................................................................................................................................... 8 3.1 Sintaxis de las expresiones .............................................................................................................................. 8 3.2 Directivas......................................................................................................................................................... 8 El simulador WinDLX .............................................................................................................................................. 9 4.1 Descripcin general del entorno de simulacin ............................................................................................. 10 Traps........................................................................................................................................................................ 22 5.1 Trap #1 Abrir un archivo ............................................................................................................................... 23 5.2 Trap #2 Cerrar un archivo.............................................................................................................................. 24 5.3 Trap #3 Leer un bloque de un archivo ........................................................................................................... 24 5.4 Trap #4 Escribir un bloque en un archivo...................................................................................................... 25 5.5 Trap #5 Enviar informacin al dispositivo de salida ..................................................................................... 25 Realizacin prctica ................................................................................................................................................ 26 Defensa y entrega de la memoria ............................................................................................................................ 26

Tiempo: 1 sesin de laboratorio (2 horas)

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

1 Objetivos
Los objetivos que se pretenden alcanzar en esta primera prctica de la asignatura Estructura de Computadores son, bsicamente, dos: a) Familiarizar al alumno con la arquitectura del procesador DLX, un procesador RISC de tipo carga/almacenamiento, que se estudia en el libro Arquitectura de Computadores de Pattersson y Hennessy y b) introducir al alumno en el uso del entorno de simulacin WinDLX que simula el pipeline de dicho procesador con capacidades para cargar, depurar y ejecutar programas escritos en lenguaje ensamblador. Una vez realizada esta prctica el alumno habr adquirido los suficientes conocimientos y destreza para realizar sin dificultad las tareas bsicas asociadas al desarrollo de software (edicin, ejecucin y depuracin) en lenguaje ensamblador del procesador DLX. Esta prctica se considera como prembulo para la segunda prctica en la que se estudia la tcnica de la segmentacin aplicada a la ejecucin de instrucciones.

2 Arquitectura del procesador DLX


En este apartado se citan las caractersticas bsicas de la arquitectura del procesador DLX diseado a partir de las observaciones sobre las primitivas ms frecuentemente utilizadas en los programas. Otras funciones ms sofisticadas son implementadas en software con varias instrucciones. El procesador DLX ha sido diseado bajo la filosofa de diseo RISC cuyos principios se pueden concretar en los siguientes puntos: Arquitectura de carga-almacenamiento. Repertorio de instrucciones sencillo. Diseo de la segmentacin eficiente. Fcil implementacin hardware de las instrucciones: Instrucciones de longitud fija y pocos modos de direccionamiento. Eficiencia como objeto del compilador. Introducir en hardware slo aquello que no sea rentable hacerlo en software y que, por tanto, suponga un aumento del rendimiento global del sistema.

El diseo de los procesadores con esta filosofa hace que las diferencias entre ellos sean mnimas en cuanto a la arquitectura del repertorio de instrucciones. As, por ejemplo, las arquitecturas de los procesadores DLX y MIPS son similares existiendo slo ligeras diferencias. Seguidamente resumimos las caractersticas ms importantes de la arquitectura del procesador DLX: La arquitectura DLX tiene 32 registros de propsito general (GPR) de 32 bits. Son referenciados como R0, R1, ... R31; el valor de R0 siempre es 0. Adicionalmente, hay un conjunto de registros de punto flotante (FPR), que se pueden utilizar como registros de simple precisin (F0, F1, F2, ....F31) de 32 bits, o como parejas par-impar que contienen valores de doble precisin (D0, D2, D4, D30) de 64 bits. El registro de estado FPSR (Floating Point Status Register) se utiliza para comparaciones y excepciones de FP. Todas las transferencias al y del registro de estado se realizan a travs de los GPR; hay una instruccin de salto que examina el bit de comparacin del registro FPSR. El registro Di est formado por la pareja Fi+1:Fi. Arquitectura de carga-almacenamiento: Slo dispone de instrucciones del tipo load y store para acceder a memoria. Todas las instrucciones de la ALU son instrucciones registro-registro, es decir, los operandos de las instrucciones aritmtico-lgicas han de estar en registros. Unidades funcionales separadas: o Una unidad principal de enteros: Manipula todas las cargas y almacenamiento en ambos conjuntos de registros (enteros y punto flotante), todas las operaciones enteras (excepto la multiplicacin y la divisin) y los saltos. o Multiplicador Punto Flotante (PF) y entero. o Divisor PF y entero La memoria es direccionable por bytes en el modo Big Endian con una direccin de 32 bits. Todas las referencias a memoria se realizan a travs de instrucciones de carga-almacenamiento entre memoria y los GPR

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

o FPR. Los accesos que involucran los GPR pueden realizarse a un byte, a media palabra, o a una palabra. Los FPR se pueden cargar y almacenar con palabras en simple o doble precisin (utilizando registros Di). Todos los accesos a memoria deben estar alineados. Conjunto reducido de instrucciones. Hay cuatro clases de instrucciones: o Carga y almacenamiento. o Operaciones ALU del tipo aritmtico-lgicas sobre enteros. o Instrucciones de control: saltos (condicionales) y bifurcaciones. o Instrucciones de punto flotante. Estructura segmentada. La ejecucin de una instruccin se divide en cinco etapas. Dichas etapas, convenientemente interconectadas, forman el cauce o pipeline del procesador y son las siguientes: o Etapa IF: Bsqueda de instruccin o Etapa ID: Decodificacin de instruccin o Etapa EX: Ejecucin (operacin ALU o clculo de la direccin efectiva). Esta etapa puede realizarse en diferentes unidades, segn la instruccin sea una operacin de enteros (intEX), o flotantes donde se distingue entre: suma (faddEX), multiplicacin FP y enteros (fmulEX) y divisin FP y enteros (fdivEX). o Etapa MEM: Lectura o escritura de datos en memoria o Etapa WB (write back): Almacenamiento de los resultados de la instruccin en los registros correspondientes. La escritura en los registros se realiza en la primera mitad del ciclo de reloj, de forma que una instruccin que simultneamente se encuentra en la etapa de ID puede tomar el valor de los registros en la segunda mitad del ciclo, sin necesidad de utilizar la tcnica de cortocircuito o anticipacin de los datos (forwarding) para adelantar el dato y resolver, as, el riesgo del dato. Todas las etapas ocupan un ciclo de reloj, salvo las de ejecucin de punto flotante (faddEX, fmulEX, fdivEX) que tardan ms de un ciclo en ejecutarse.

2.1 Modos de direccionamiento


Siguiendo la filosofa de diseo RISC, el procesador DLX tiene muy pocos modos de direccionamiento y se clasifican en: Modos de direccionamiento para instrucciones Todos los modos de direccionamiento a instrucciones son relativos al contador de programa excepto la bifurcacin indirecta por registro. o Relativo al Contador de Programa (PC) La direccin de destino se genera sumando al PC+4 el valor de desplazamiento (en bytes) que se indica en la propia instruccin. Ejemplo : J etiqueta; JAL etiqueta; BEQZ Rn, despl..; BNEZ Rn, despl.. o Indirecto por registro La direccin de destino es el contenido del registro que se indica en la instruccin. En otras arquitecturas pueden aparecer dos registros, siendo entonces el destino, el resultado de la suma de los contenidos de ambos registros. Ejemplo: JR Rn; JALR Rn Modos de direccionamiento para datos o Registro-Registro Los operandos se encuentran en registros Ejemplo: ADD R1,R2,R3 o Inmediato Uno de los operandos aparece de forma inmediata en la propia instruccin Ejemplo: ADD R1,R2,#5 o Registro Base + Desplazamiento Uno de los operandos se encuentra en memoria. La direccin de memoria donde se encuentra el operando es el resultado de sumar el registro base y el desplazamiento. Ejemplo: LW R2,100(R3)

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

2.2 Formato de las instrucciones


Todas las instrucciones del procesador DLX son de longitud fija y se codifican con slo tres formatos de instruccin. stos son:

Formato R (Registro) op rs1 rs2 rd func Instrucciones tipo R 6 bits 5 bits 5 bits 5 bits 11 bits Todas las instrucciones DLX de 32 bits 000000 01010 11111 00011 00000 100000 0x015f1820 add R3,R10,R31 Operaciones de ALU registro-registro: rd <- rs1 op rs2; el campo de func indica la operacin a realizar por el camino de datos. Formato I (Inmediato) op rs1 rd Inmediato Instruciones de carga e inmediatas 6 bits 5 bits 5 bits 16 bits Todas las instrucciones DLX de 32 bits 100011 00011 00101 0000000000100000 0x8c650020 lw $5,32($3) Carga y almacenamiento de bytes, palabras y medias palabras; todos los inmediatos ( rd <- rs1 op inmediato); saltos condicionales (rs1 es el registro, rd no usado); saltos indirectos por registro jr y salta y enlaza por registro jalr (rd=0; rs1 =destino; inmediato=0). Formato J (Jump) op Direccin objetivo Instrucciones de bifurcacin 6 bits 26 bits Todas las instrucciones DLX de 32 bits 000010 11111111111111111111110100 0x0bfffff4 0x10c: j 0x100 Bifurcacin j; bifurcacin y enlace jal; trap y retorno de excepcin rfe.

2.3 Repertorio de instrucciones DLX


El repertorio de instrucciones del DLX puede clasificarse en cuatro clases: Operaciones de transferencias de datos Operaciones aritmticas y lgicas (ALU) Instrucciones de saltos y bifurcaciones Operaciones en coma flotante Las siguientes tablas muestran de forma muy resumida las instrucciones pertenecientes a cada una de las clases. Instrucciones de transferencias de Datos Significado de la instruccin Load byte (sign extension) Load byte (unsigned) Load halfword (sign extension) Load halfword (unsigned) Load word Load single-precision Floating point Load double-precision Floating point Store byte Store halfword Store word Store single-precision Floating point Store double-precision Floating point Move 32 bits from integer registers to FP registers

Instruccin LB Rd,Adr LBU Rd,Adr LH Rd,Adr LHU Rd,Adr LW Rd,Adr LF Fd,Adr LD Dd,Adr SB Adr,Rs SH Adr,Rs SW Adr,Rs SF Adr,Fs SD Adr,Fs MOVI2FP Fd,Rs

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

MOVI2FP Rd,Fs MOVF Fd,Fs MOVD Dd,Ds MOVI2S SR,Rs MOVS2I Rs,SR

Move 32 bits from FP registers to integer registers Copy one Floating point register to another register Copy a double-precision pair to another pair Copy a register to a special register (not implemented!) Copy a special register to a GPR (not implemented!)

Instruccin ADD Rd,Ra,Rb ADDI Rd,Ra,Imm ADDU Rd,Ra,Rb ADDUI Rd,Ra,Imm SUB Rd,Ra,Rb SUBI Rd,Ra,Imm SUBU Rd,Ra,Rb SUBUI Rd,Ra,Imm MULT Rd,Ra,Rb MULTU Rd,Ra,Rb DIV Rd,Ra,Rb DIVU Rd,Ra,Rb AND Rd,Ra,Rb ANDI Rd,Ra,Imm OR Rd,Ra,Rb ORI Rd,Ra,Imm XOR Rd,Ra,Rb XORI Rd,Ra,Imm LHI Rd,Imm SLL Rd,Rs,Rc SRL Rd,Rs,Rc SRA Rd,Rs,Rc SLLI Rd,Rs,Imm SRLI Rd,Rs,Imm SRAI Rd,Rs,Imm S__ Rd,Ra,Rb S__I Rd,Ra,Imm S__U Rd,Ra,Rb S__UI Rd,Ra,Imm NOP

Instrucciones aritmticas y lgicas Significado de la instruccin Add Add immediate (all immediates are 16 bits) Add unsigned Add unsigned immediate Subtract Subtract immediate Subtract unsigned Subtract unsigned immediate Multiply signed Multiply unsigned Divide signed Divide unsigned And And immediate Or Or immediate Xor Xor immediate LOad high immediate - loads upper half of register with immediate Shift left logical hift right logical Shift right arithmetic Shift left logical 'immediate' bits Shift right logical 'immediate' bits Shift right arithmetic 'immediate' bits Set conditional: "__" may be EQ, NE, LT, GT, LE or GE Set conditional immediate: "__" may be EQ, NE, LT, GT, LE or GE Set conditional unsigned: "__" may be EQ, NE, LT, GT, LE or GE Set conditional unsigned immediate: "__" may be EQ, NE, LT, GT, LE or GE No operation

Instruccin BEQZ Rt,Dest BNEZ Rt,Dest BFPT Dest BFPF J JR JAL JALR TRAP RFE Dest Dest Rx Dest Rx Imm Dest

Instrucciones de salto y bifurcacin Significado de la instruccin Branch if GPR equal to zero; 16-bit offset from PC Branch if GPR not equal to zero; 16-bit offset from PC Test comparison bit in the FP status register (true) and branch; 16bit offset from PC Test comparison bit in the FP status register (false) and branch; 16bit offset from PC Jump: 26-bit offset from PC Jump: target in register Jump and link: save PC+4 to R31; target is PC-relative Jump and link: save PC+4 to R31; target is a register Transfer to operating system at a vectored address; see Traps. Return to user code from an execption; restore user mode (not implemented!)

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

Instruccin ADDD Dd,Da,Db ADDF Fd,Fa,Fb SUBD Dd,Da,Db SUBF Fd,Fa,Fb MULTD Dd,Da,Db MULTF Fd,Fa,Fb DIVD Dd,Da,Db DIVF Fd,Fa,Fb CVTF2D Dd,Fs CVTD2F Fd,Ds CVTF2I Fd,Fs CVTI2F Fd,Fs CVTD2I Fd,Ds CVTI2D Dd,Fs __D Da,Db __F Fa,Fb

Instrucciones de operaciones en punto flotante Significado de la instruccin Add double-precision numbers Add single-precision numbers Subtract double-precision numbers Subtract single-precision numbers. Multiply double-precision Floating point numbers Multiply single-precision Floating point numbers Divide double-precision Floating point numbers Divide single-precision Floating point numbers Converts from type single-precision to type double-precision Converts from type double-precision to type single-precision Converts from type single-precision to type integer Converts from type integer to type single-precision Converts from type double-precision to type integer Converts from type integer to type double-precision Double-precision compares: "__" may be EQ, NE, LT, GT, LE or GE; sets comparison bit in FP status register Single-precision compares: "__" may be EQ, NE, LT, GT, LE or GE; sets

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

3 Lenguaje ensamblador DLX


En este apartado comentaremos los aspectos ms importantes del ensamblador del DLX disponible en el entorno de simulacin WinDLX, que tambin ser objeto de estudio en prximos apartados.

3.1 Sintaxis de las expresiones


La sintaxis de las expresiones es similar al lenguaje de programacin C (por ejemplo las ristras de caracteres deben ir entre ). Nmeros: WinDLX acepta nmeros en notacin decimal (por defecto); hexadecimal, si los dos primeros caracteres son 0x y octal, si el primer carcter empieza por 0. Direcciones: La forma ms simple para esta expresin es un nmero que es interpretado como una direccin de memoria. De forma ms general, las expresiones de direcciones pueden consistir de nmeros, smbolos (que deben estar definidos en los ficheros de ensamblador actualmente cargados en el simulador), operadores *, /, +, -, <<, >>, &, |, y ^ (que tienen el mismo significado y precedencias que en C) y parntesis para realizar agrupaciones. El valor de una expresin debe estar dentro de los lmites propios definidos para el tipo de expresin: Bytes: Halfwords: Words: -128 +127 (8 Bit) -32768 +32767 (16-Bit) -2147483648 +2147483647; 0xffffffff (32-Bit)

3.2 Directivas
Las directivas de un programa ensamblador son instrucciones que controlan diversos aspectos de funcionamiento del programa ensamblador. Por tanto, no son instrucciones para el procesador sino para el programa (ensamblador) que traduce los mnemnicos de las instrucciones a lenguaje mquina (unos y ceros). La sintaxis de una directiva es: .directiva [parmetros] Mientras el ensamblador procesa un fichero fuente, los datos e instrucciones ensambladas (traducidas a lenguaje mquina) son colocadas en memoria utilizando dos punteros: uno para datos y otro para instrucciones. El puntero que se utiliza en cada momento viene determinado por la directiva ms recientemente utilizada: .DATA o .TEXT. Por defecto, el cdigo del programa se carga a partir de la direccin dada por la variable $TEXT (con valor inicial 0x100) y los datos a partir de la direccin dada por la variable $DATA (con valor inicial 0x1000).

.align n .ascii "string1","..." .asciiz "string1","..." .byte byte1,byte2,... .data [address]

Causa que el siguiente cdigo (o dato) sea cargado en una direccin de memoria mltiplo de 2n (por ejemplo, align 2 significa que comienza en la siguiente direccin de memoria mltiplo de 4). Almacena en memoria las "strings" mostradas en la lnea como una lista de caracteres. Similar a la directiva .ascii, excepto que cada string se termina con el carcter null (byte 0) que indica el final de la string. Almacena secuencialmente en memoria los bytes listados en la lnea. Causa que el siguiente dato sean almacenado en el segmento de datos de la memoria (DATA). Si se especifica la direccin, los datos sern cargados a partir de dicha direccin; en caso contrario, se utilizar el ltimo valor del puntero de datos ($DATA).

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

.double number1,... .global label .space size

.text [address]

.word word1,word2,...

Almacena secuencialmente en memoria los "nmeros" listados en la lnea, como nmeros en punto flotante de doble precisin. Declara el smbolo label como global de modo que pueda ser referenciado por otros mdulos que se carguen despus de este fichero. Se utiliza para reservar espacio de memoria. Mueve el puntero de almacenamiento actual (cdigo o datos, $TEXT o $DATA) size bytes adelante. Causa que el siguiente cdigo sea almacenado en el rea de texto o cdigo de memoria (TEXT). Si se especifica la direccin, el cdigo ser cargado a partir de dicha direccin; en caso contrario, se utilizar el ltimo valor del puntero de datos ($TEXT). Almacena secuencialmente en memoria las palabras (words) listadas en memoria.

4 El simulador WinDLX
WinDLX (Windows De LuXe) es un simulador del pipeline del procesador DLX (procesador RISC similar al procesador MIPS) que ser utilizado en las prcticas correspondientes al primer mdulo del temario de la asignatura, dedicado a la mejora del rendimiento a travs de la tcnica de segmentacin. Este simulador desarrollado por el Departamento de Diseo-VLSI de la Universidad de Tecnolgica de Viena (http://ftp.vlsivie.twien.ac.at) funciona bajo el entorno Microsoft Windows, y permite el procesamiento de programas escritos en ensamblador de DLX, mostrando toda la informacin relevante de la CPU: estado del pipeline, banco de registros, memoria, estadsticas, etc.. Su versatilidad posibilita la modificacin de la estructura y tiempos de latencia del pipeline de la CPU y del tamao de la memoria. Tambin, proporciona el soporte necesario para la realizacin de llamadas al sistema a travs de TRAPs que constituyen el interfaz entre los programas DLX y el sistema de entrada/salida (abrir, cerrar, leer y escribir un archivo y visualizacin en pantalla). Existen varias razones que justifican el uso de un simulador frente a un computador real que disponga del chip procesador en cuestin. Entre ellas, cabe destacar: Las estaciones de trabajo no siempre estn disponibles. La evolucin tecnolgica hace que un computador quede obsoleto en slo algunos aos lo que conduce a estaciones de trabajo (computadores) ms rpidos y con mejores prestaciones (piense en el mercado de los ordenadores personales). Otra razn importante es la tendencia a desarrollar computadores ms rpidos utilizando tcnicas de diseo que permiten la ejecucin de varias instrucciones concurrentemente. Esto hace que una arquitectura (procesador) sea ms difcil de entender y programar en lenguaje ensamblador. Mejores entornos de programacin que una mquina real. Los simuladores pueden proporcionar mejores entornos para programar a bajo nivel (lenguaje ensamblador) que los de una mquina real debido a que pueden detectar errores y tener mejores prestaciones. Por ejemplo, el simulador WinDLX tiene un interfaz de ventanas que es mejor que muchos depuradores de mquinas reales. Los simuladores son una herramienta muy til para el estudio de los computadores y de los programas que en l se ejecutan. Debido a que son implementados en software (no silicio), los simuladores son fcilmente modificables con objeto de aadirles nuevas instrucciones, construir nuevos sistemas o, simplemente, para adquirir o recolectar datos. Proporciona ciclos de edicin, ensamblado, carga y ejecucin ms cortos que si se utiliza placas de prototipo especialmente diseadas para el aprendizaje (educativas). En muchos casos, los simuladores se distribuyen como software gratis, especialmente los desarrollados en entornos acadmicos y de investigacin.

Estructura de Computadores

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1 Descripcin general del entorno de simulacin


Una vez abierta la aplicacin puede observarse que aparece una ventana principal que a su vez contiene 6 ventanas inicialmente minimizadas, mostrando cada una de ellas diferentes aspectos relacionados con el procesador que se simula. El nombre de cada una de estas 6 ventanas es: Registros (register): Contenidos de registros. Cdigo (Code): Instrucciones DLX en memoria. Cauce (Pipeline): Estados del pipeline con las instrucciones en curso. Diagrama de mltiples ciclos de reloj (Clock Cycle): Muestra lo que hace cada etapa en un ciclo determinado. Estadsticas (Statistics): Estadsticas acerca de la ejecucin de las instrucciones. Puntos de ruptura (Breakpoints): Gestin de puntos de parada o breakpoints. Una caracterstica de estas ventanas es que no pueden cerrarse, por lo que permanecen minimizadas o abiertas durante todo el tiempo de simulacin. Adems de estas ventanas, se pueden crear, dinmicamente, hasta un mximo de 10 ventanas de memoria en las que se visualizan contenidos de memoria.

4.1.1 Ventana principal: La barra de mens


La ventana principal del simulador muestra una barra de 7 mens con los comandos necesarios para manejar las distintas posibilidades del simulador. En realidad, el nmero de mens es superior, ya que dependiendo de la ventana que est activa, la ltima opcin de la barra de mens cambia de significado mostrando informacin relativa a la ventana que en cada caso est activa.

Por ejemplo, en la figura podemos apreciar que la ventana de estadstica est seleccionada, y que la ltima opcin del men tambin corresponde a estadsticas donde se nos permite activar diversas opciones de visualizacin de las mismas.

Estructura de Computadores

10

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.1.1 Men File


Las opciones disponibles en este men son: Reset DLX o Borrado-limpieza del pipeline o Reset de estadsticas. o Inicializacin de todos los registros a 0 excepto el PC que se inicializa con $TEXT o Borrado de la historia de instrucciones ejecutadas o Cierre de todos los ficheros abiertos o Cancelacin de todas las redirecciones de la entrada/salida. o Borrado de la pantalla de visualizacin DLX-I/O. o Los contenidos de memoria y todos los smbolos definidos permanecen sin cambios.

Reset All o Esta opcin ejecuta todas las acciones de "Reset DLX" y, adems, inicializa a cero la memoria y borra los smbolos excepto $TEXT y $DATA que mantienen su valor. Load Code or Data o Cuando se selecciona esta opcin aparece un cuadro de dilogo. En l se pueden seleccionar los mdulos de programa (ficheros con extensin .S) que se quieren cargar en el simulador. Despus de realizar la carga de los programas se tiene la posibilidad de ejecutar un Reset-DLX. Si nos equivocamos al seleccionar un mdulo podemos borrar la seleccin pulsando el botn de delete. Se pueden cargar mltiples mdulos y usar variables globales. Quit WINDLX o Si seleccionamos esta opcin, se nos preguntar para confirmar alguna de las siguientes operaciones: guardar configuracin, salir del programa o cancelar operacin.

Estructura de Computadores

11

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.1.2 Men Window


Los comandos de este men son los tpicos de cualquier aplicacin Windows, por lo que no entraremos en mayor detalle. En el men desplegable se puede seleccionar la forma en que se presentan en pantalla las diferentes ventanas as como activar una de las seis ventanas disponibles.

Estructura de Computadores

12

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.1.3 Men Execute


En este men se encuentra los comandos necesarios para ejecutar, segn diferentes modos, el cdigo ensamblado residente en la memoria y visualizar la ventana de entrada/salida (DLX-I/O). Single cycle: Ejecuta la simulacin de un slo un ciclo. La ventana DLX-IO ser actualizada siempre que se produzca una entrada o salida durante este ciclo. Mltiple Cycles: Esta opcin permite definir el nmero de ciclos que se simulan en cada paso. Run: Comienza la ejecucin simulada del programa hasta que: o Se detenga por medio del botn Cancel en la ventana DLX-I/O. o Ocurra un error. o Se alcance un punto de ruptura o de parada (breakpoints). o Se procese un TRAP indefinido. Run to: Similar a Run, excepto que permite asignar un punto de parada temporal por medio de una ventana de dilogo. Display DLX-I/O: La activacin de este comando provoca la visualizacin de la ventana DLX-I/O aunque la simulacin no est funcionando.

Estructura de Computadores

13

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.1.4 Men Memory


Este men proporciona comandos para crear ventanas de memoria, cambiar el contenido de las posiciones de memoria y manipular smbolos. Los comandos del men son:

Display: Permite la creacin de forma dinmica de hasta 10 ventanas en las que se visualiza contenidos de memoria en varios tipos y formatos. La activacin de esta opcin da lugar a la presentacin de una ventana como la mostrada en la figura en la que se configuran determinadas caractersticas de la visualizacin de contenidos de memoria.

Change: Mediante esta opcin se puede cambiar o modificar el contenido de una posicin de memoria. Symbols: Permite la manipulacin de smbolos (visualizar, definir, cambiar y borrar) a travs de una ventana de dilogo.

Estructura de Computadores

14

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.1.5 Men Configuration


Los comandos de este men estn relacionados con la configuracin del procesador DLX. Las opciones dentro de este men son las siguientes:

Floating Point Stages: En este comando se define el nmero de unidades funcionales y sus latencias. Memory size: Permite modificar el tamao de la memoria disponible: mnimo 512 bytes y mximo 16Mb. Symbolic Addresses: Cuando se visualiza contenidos de memoria, la informacin de los smbolos se presentan como smbolo+desplazamiento o slo por su direccin en hexadecimal. Absolute Cycle Count: Si se habilita esta opcin los ciclos se cuentan desde 0, reiniciando el procesador y las estadsticas. Enable Fordwarding: Permite activar o desactivar el mecanismo de adelantamiento de datos. Load: Carga un fichero de configuracin del procesador. Los contenidos de memoria y los smbolos permanecen sin cambios. Save: Permite guardar la configuracin actual del procesador en un archivo con la extensin .WDC. Si no se especifica el nombre se utiliza por defecto WINDLX.WDC. El almacenamiento de la configuracin puede realizarse al finalizar la sesin de trabajo con el simulador o mediante este comando.

4.1.1.6 Men Help


El men Help contiene un conjunto de comandos que permiten acceder al sistema de ayuda del entorno de simulacin WinDLX. La mayor parte de la informacin de este cuaderno de prctica ha sido extrada del men Help con objeto de realizar una gua en castellano que sea de utilidad al estudiante. Se recomienda al alumno acudir a esta ayuda para cualquier consulta no cubierta en este documento. En cualquier instante se puede obtener informacin de ayuda presionando la tecla F1.

Estructura de Computadores

15

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.2 Ventana y men Register


En esta ventana se visualizan todos los registros disponibles del procesador. En el men Register de la barra de mens puede configurarse los registros que se desean visualizar y el formato en el que se visualizan (decimal o hexadecimal).

Adems de los registros de propsito general y el conjunto de registros de punto flotante, el procesador dispone de un conjunto de registros de propsito especial que son los siguientes: FPSR (Floating-Point Status Register). Es un registro de estado de 1 bit de longitud, utilizado para comparaciones y excepciones en punto flotante. Todos los movimientos desde y hacia este registro se realizan a travs de los registros de propsito general. PC (Program Counter). Registro cuyo contenido apunta siempre a la siguiente instruccin a ejecutar. Las instrucciones de salto y bifurcacin pueden cambiar el contenido de este registro. IMAR (Instruction Memory Address Register). Este registro es inicializado con el contenido del PC en la etapa IF y tiene conexin directa con la memoria mientras que el PC no. IR (Instruction Register): En la etapa IF este registro se carga con la instruccin que llega de la memoria y que ser la prxima instruccin en ejecutarse. A, B. Son registros que se encuentran a la salida del banco de registros. En la etapa ID son cargados con valores ledos de los registros y son luego operandos para la ALU en la siguiente etapa del pipeline, EX. En WinDLX , adems existen dos pseudo-registros AH y BHI que contienen los 32 bits superiores para valores de punto flotante de doble precisin. BTA (Branch Target Address). En la etapa ID, la direccin de salto/bifurcacin es calculada y escrita en este registro. ALU (Arithmetic Logical Unit). El resultado de una operacin realizada por la ALU es transferido a este registro. DMAR (Data Memory Address Register). La direccin de memoria a la que se va acceder es transferida a este registro en la etapa EX. En la etapa MEM se accede a la direccin de memoria especificada por este registro.

Estructura de Computadores

16

Prctica 1

Introduccin al entorno de simulacin WinDLX

SDR (Store Data Register). El dato que se va a escribir en memoria mediante la instruccin store es escrito previamente en este registro. En WINDLX existe un pseudo-registro llamado SDRHI que contiene los 32 bits ms significativos para valores de punto flotante de doble precisin. LDR (Load Data Register). El dato que es ledo de memoria se almacena en este registro. Al igual que en algunos registros anteriores, existe un pseudo-registro llamado LDRHI que contiene los 32 bits ms significativos para valores de punto flotante de doble precisin.

4.1.3 Ventana y men Code


En la ventana Code son visualizadas las instrucciones DLX almacenadas en memoria tanto en formato hexadecimal como desensambladas. Por otra parte, los puntos de ruptura o parada de cada instruccin son indicados con Bxx, siendo xx el tipo de punto de ruptura. Las instrucciones que se encuentran en el cauce o pipeline del procesador en fase de ejecucin son coloreadas utilizndose un color de fondo para cada etapa de segmentacin. Para obtener ms informacin de la ejecucin de una instruccin se puede hacer doble clic sobre ella apareciendo una nueva ventana en la que se puede obtener ms informacin acerca de la ejecucin de la misma.

Estructura de Computadores

17

Prctica 1

Introduccin al entorno de simulacin WinDLX

Por ltimo, decir que desde el men Code podemos iniciar la ejecucin del programa desde una direccin determinada y definir y borrar puntos de parada o breakpoints.

4.1.4 Ventana y men Pipeline


En la ventana pipeline se visualizan las diferentes etapas por las que pasan las instrucciones para ser ejecutadas dentro de la estructura segmentada del procesador DLX. Con el tamao de ventana adecuado las cajas pueden mostrar las instrucciones que en ese instante se est ejecutando en cada una de las etapas. Haciendo doble clic sobre las cajas se puede obtener ms informacin de las instrucciones que se encuentren en ellas. El men Pipeline contiene una nica accin denominada Display Floating Point Stages. Su utilidad es visualizar las etapas en punto flotante existentes o por el contrario mostrar slo las cinco etapas del pipeline.

Estructura de Computadores

18

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.5 Ventana y men Clock Cycle Diagram


En esta ventana se visualizan las operaciones que se realizan en cada ciclo de reloj y en cada etapa. Como puede apreciarse cada columna representa el estado de las diferentes etapas del pipeline en un determinado ciclo de reloj. El estado actual del pipeline es mostrado en la columna marcada en gris mientras que el resto de las columnas muestran el estado del pipeline en ciclos anteriores. Es posible obtener ms informacin de una instruccin haciendo doble clic sobre ella.

Las detenciones del pipeline (stalls) son representadas en cajas coloreadas en el color asociado a la etapa detenida. La etiqueta que aparece en interior de las cajas proporciona ms informacin sobre el tipo de detencin: R-Stall (RAW): Una flecha roja indica la instruccin que est provocando la detencin del cauce. T-Stall: Esta detencin slo se produce ante una instruccin de TRAP. La instruccin de TRAP permanece en la etapa de IF hasta que no queden ms instrucciones en el pipeline. W-Stall (WAW): Una flecha roja indica la instruccin que causa la detencin. En el WinDLX estas detenciones slo se pueden producen para las instrucciones en punto flotante no en las de aritmtica entera. S-Stall (Structural Stall): Se producen cuando no hay suficientes recursos hardware para ejecutar el conjunto de instrucciones residentes en el pipeline. Stall: Cuando una instruccin de punto flotante est en la etapa de MEM, la prxima instruccin ser detenida en la etapa intEX etiquetndola com la palabra Stall. El men Clock Diagran Cycle contiene los siguientes comandos: Display Fordwarding: Visualiza la anticipacin de los datos con una flecha verde. Display Cause of Stalls: Si se selecciona esta opcin la instruccin que provoca la detencin es marcada con una flecha roja. Delete History: Borra el historial de instrucciones ejecutadas Set History Length: Selecciona el tamao de la historia a visualizar que ha de estar entre 0 y 100.

Estructura de Computadores

19

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.6 Ventana y men Statistics


En esta ventana se muestra numerosas estadsticas acerca de la ejecucin de los programas. Tambin se puede configurar las estadsticas que se han de mostrar a travs del men Statistics. Para ms informacin consultar la ayuda del WinDLX.

Estructura de Computadores

20

Prctica 1

Introduccin al entorno de simulacin WinDLX

4.1.7 Ventana y men Breakpoints


El contenido de esta ventana es el conjunto de instrucciones que tienen puntos de ruptura o parada asignados. El nmero mximo puntos de parada que podemos definir es de 20. El men Breakpoints nos permite definir, borrar y cambiar puntos de parada.

Estructura de Computadores

21

Prctica 1

Introduccin al entorno de simulacin WinDLX

5 Traps
Los traps son el interfaz entre los programas DLX y el sistema de entrada/salida. Hay cinco traps definidos en WinDLX: Trap #0: Fin del programa. Trap #1: Abrir un archivo. Trap #2: Cerrar un archivo. Trap #3: Leer un bloque de un archivo. Trap #4: Escribir un bloque en un archivo. Trap #5: Formatear y enviar informacin hacia la salida estndar.

Para todos los traps se cumple lo siguiente: Representan respectivamente las llamadas al sistema UNIX/DOS de la biblioteca de funciones C: open(), close(), read(), write() y printf(). Los descriptores de archivo 0, 1 y 2 estn reservados para stdin, stdout y stderr. La entrada y la salida hacia la ventana I/O puede ser controlada con estos descriptores. La direccin del primer parmetro requerido por una llamada al sistema debe almacenarse en el registro R14. Los siguientes argumentos se situarn en la direccin R14+4, R14+8, etc. De acuerdo a lo anterior todos los parmetros tienen que ser de 32 bits de longitud, excepto los nmeros en doble precisin que son de 64 bits. El resultado es devuelto en R1 Si durante la ejecucin de una llamada al sistema ocurre un error, el registro R1 es asignado a 1 y si al smbolo _errno se le asigna el valor A, entonces el cdigo de error es almacenado en la direccin de memoria A y la simulacin continuar; en caso contrario, la simulacin ser abortada.

A continuacin se detallan las llamadas al sistema tomadas directamente de la ayuda de WinDLX (men help)

Estructura de Computadores

22

Prctica 1

Introduccin al entorno de simulacin WinDLX

5.1 Trap #1 Abrir un archivo


Parameter: 1. 2. Filename: Address of a zero-terminated string, that contains the path of the file to be opened. Mode, to open the file: Following modes can be combined using logical or-operation: 0x0001 O_RDONLY (read only) 0x0002 O_WRONLY (write only) 0x0004 O_RDWR (read and write) 0x0100 O_CREATE (create file) 0x0200 O_TRUNC (truncate file) 0x0400 O_EXCL (open file exclusively (with SHARE)) 0x0800 O_APPEND (append to file) 0x4000 O_TEXT (Convert CR/LF) 0x8000 O_BINARY (No conversion of CR/LF) (Warning: These flags are predefined in MS-DOS and not compatible to UNIX.) 3. Additional Flags: 0x0000 S_IFREG (Normal file, no directory etc.) 0x0100 S_IREAD (read access permission) 0x0080 S_IWRITE (write access permission) 0x0040 S_IEXEC (execute permission) (Warning: These flags are predefined in MS-DOS and not compatible to UNIX.) (See C-Library functions for more details.) The file descriptor is returned in register R1. Example: .data .asciiz "c:\\BSP\\DATEI.DAT" .align 2 ;*** Parameters for Trap1 (OPEN) .word FileName ;create for R/W: .word 0x0104 ;R/W-access permission: .word 0x0180 .space 4 .text lhi addui trap sw

FileName: Par:

FileDescr:

r14,Par>>16 r14,r14,Par&0xffff 1 FileDescr,R1

; upper 16 bits ; lower 16 bits

Estructura de Computadores

23

Prctica 1

Introduccin al entorno de simulacin WinDLX

5.2 Trap #2 Cerrar un archivo


Parameter:

1.

File descriptor of the file to be closed. Zero is returned in register R1, if it was successful, -1 otherwise.

Example: FileDescr: .data .space .text ;... lhi addui trap 4

r14,FileDescr>>16 r14,r14,FileDescr&0xffff 2

; higher 16 bits ; lower 16 bits

5.3 Trap #3 Leer un bloque de un archivo


A file block or a line from stdin can be read with this trap. Parameter: 1. 2. 3. File descriptor of the file Address, for the destination of the read operation Size of block (bytes) to be read

The actual number of bytes read is returned in register R1. Example: .data Buffer: .space 500 Par: ;File descriptor, Adr. of buffer, size of block .space 4 .word Buffer .word 500 .text ;... lhi addui trap

r14,Par>>16 r14,r14,Par&0xffff 3

; higher 16 bits ; lower 16 bits

Estructura de Computadores

24

Prctica 1

Introduccin al entorno de simulacin WinDLX

5.4 Trap #4 Escribir un bloque en un archivo


A block can be written to the memory or the standard output. Parameter: 1. 2. 3. File descriptor of file Address of block to be written Size of the block (bytes)

The actual number of bytes written is returned in register R1. Example: .data Buffer: .space 500 Par: ;File descriptor, Adr. of buffer, size of block .space 4 .word Buffer .word 500 .text ;... lhi addui trap

r14,Par>>16 r14,r14,Par&0xffff 4

; higher 16 bits ; lower 16 bits

5.5 Trap #5 Enviar informacin al dispositivo de salida


This function is equivalent to the C-library function printf(). Parameter: 1. 2. Format string see C-function printf() Arguments according to format string; see C-function printf()

The number of bytes transferred to stdout is returned in register R1. Example: .data .asciiz "Pi=%f, N=%d\n" .align 2 ;Adr. of format string, values .word FormatStr .double 3.141592654 .word 17 .text ;... lhi addui trap

FormatStr: Par:

r14,Par>>16 r14,r14,Par&0xffff 5

; higher 16 bits ; lower 16 bits

Estructura de Computadores

25

Prctica 1

Introduccin al entorno de simulacin WinDLX

6 Realizacin prctica
La actividad prctica a realizar consiste en la realizacin de pequeos programas que demuestre que comprende y sabe utilizar el lenguaje ensamblador y el entorno de simulacin objeto de esta prctica. Los programas a desarrollar son los siguientes: 1. 2. 3. Programa para sumar dos nmeros enteros (positivos o negativos!) suministrados por el usuario por teclado y mostrar el resultado en pantalla. Programa que lea una string desde el teclado, convierta las maysculas a minsculas y las minsculas a maysculas y visualice el resultado de la conversin por pantalla. Programa para calcular el producto escalar de dos vectores suministrados en un fichero cuyo nombre lo suministra el usuario por teclado. Una lnea por vector y terminada en retorno de carro. Los elementos de los vectores estarn separados por una coma (,). Una vez realizado el producto escalar visualizar los elementos de los vectores y el resultado.

7 Defensa y entrega de la memoria


Una vez realizada la prctica, el alumno deber elaborar una memoria que consistir en los listados de los programas convenientemente documentados y un organigrama o diagrama de flujo para cada uno de ellos. Adems, el alumno deber mostrar al profesor el funcionamiento correcto de los programas y contestar a cuantas preguntes ste formule. La fecha lmite para la entrega de las memorias es siempre la fecha de comienzo de la siguiente prctica.

Estructura de Computadores

26

S-ar putea să vă placă și