************************************************************************************************ SIMULADORES DE LOS PROCESADORES MIPS R2000 MONOCICLO Y SEGMENTADO ************************************************************************************************ Debo decir antes de explicar nada que este projecto ha sido realizado con Borland C++ 5.01 para Windows, de modo que necesitarás alguna versión de este compilador para poder simular e incluso ejecutar lo que quieras, puesto que los programas ejecutables necesitan una librería dinámica llamada "cw3220.dll" que se incluye en el directorio "bin" de dicho compilador. Yo ya suministro los ejecutables del procesador monociclo y segmentado, así como el compilador de datos e instrucciones, que son los archivos más importantes. 1. INSTALACIÓN. Crea un directorio en el disco duro y guarda en él todos los directorios que se suministran con el proyecto, respetando la estructura de directorios, quiero decir, no borres ningún directorio aunque esté vacío. 2. DESCRIPCIÓN DE LOS DIRECTORIOS. - Sources: contiene las fuentes de todos los elementos de los procesadores monociclo y segmentado, así como los procesadores ya simulados. NO toques nada aquí. - Project: contiene los proyectos que compilan y enlazan todos los archivos necesarios para simular las piezas básicas y los procesadores: * Alu32rc.ide: simula la alu de 32 bits "ripple-carry" y los sumadores de 32 bits. * Assmb.ide: ensamblador, desensamblador y convertidor de datos para la memoria de datos. * Control.ide: unidad de detección de riesgos, anticipación de las etapas ID y EX y unidades de control de la alu y del procesador. * Decods.ide: descodificadores. * Extender.ide: unidad de extensión de signo. * Flipflop.ide: flipflops, detectores de transiciones positivas y negativas, etc... * Fr32x32.ide: fichero de registros de 32 bits. * Latches.ide: cerrojos. * Muxs.ide: multiplexores de líneas de 1 bit y de buses de "n" líneas * R2000m.ide: procesador MIPS R2000 monociclo. * R2000s.ide: procesador MIPS R2000 segmentado. * Regs.ide: registros D, D con preset y clear y registros con flipflop T con entrada de habilitación (inventados por mí para el segmento IF/ID). * Srams.ide: memorias (para instrucciones y datos, sin distinción). - Exec: contiene los ficheros ejecutables - Obj: contiene los ficheros objetos resultantes de la compilación - Examples: programas de ejemplo. Todos los ejemplos están explicados en un fichero llamado "desc.txt". 3. CÓMO ENLAZAR ARCHIVOS PARA CREAR EJECUTABLES. Lo único que debes hacer es abrir el proyecto correspondiente y pulsar en el botón "make" o "build". Automáticamente el compilador creará los objetos y los ejecutables, guardándolos en los directorios "obj" y "exec" respectivamente. En aquellos proyectos en los que haya posibilidad de crear más de un ejecutable, o exista compilación condicional, como por ejemplo en el proyecto "latches.ide", deberás definir macros para lo que quieras que se compile. Simplemente define la macro que se indica en el archivo ".cpp" correspondiente en el cuadro de diálogo "defines" dentro del menú "options/project/compiler". Siempre que definas nuevas macros, NO OLVIDES COMPILAR POR SEPARADO (ANTES DE PULSAR EL BOTON MAKE) el archivo que hace referencia a ellas. Para ello, selecciónalo en la ventana del projecto y pulsa en "compile". También puedes cambiar el nombre al objetivo del proyecto (archivo ".exe"), pinchándolo con el botón derecho del ratón en la ventana del proyecto y seleccionando "edit node attributes". Así evitarás que programas ejecutables diferentes sobreescriban a los ya existentes por tener el mismo nombre. 4. ESCRIBIR Y COMPILAR PROGRAMAS PARA LOS PROCESADORES R2000 MONOCICLO Y SEGMENTADO. Lo primero que debes hacer es escribir un programa en un archivo de texto con las instrucciones permitidas siguientes, respetando los espacios en blanco: * lw o sw * add, sub, and, slt u or * beq * j * halt * nop Ejemplo: lw 4 0 0 lw 7 0 1 add 3 4 7 sw 3 0 2 halt nop nop nop Nota: siempre que escribas un programa para el procesador segmentado, acábalo tal como se indica arriba. Para el monociclo, sólo es necesaria la instrucción "halt": sobran las tres "nop" siguientes. Después, ejecuta el programa "mipsassm.exe" e indícale el archivo de texto que acabas de crear. Se creará el archivo compilado llamado "inst.ass". A continución, debes escribir los valores iniciales de la memoria de datos. Escribe los valores en un archivo de texto (un renglón para cada palabra de memoria) y ejecuta el programa "dataconv.exe". Se creará un archivo llamado "data.cnv". 5. FUNCIONAMIENTO DE LOS PROCESADORES MIPS R2000 MONOCICLO Y SEGMENTADO. Ejecuta el procesador que quieras: "r2000m.exe" para el monociclo o "r2000s.exe" para el segmentado. Indica los archivos creados en el paso anterior. Para avanzar una iteración de simulación pulsa . Para avanzar un ciclo de reloj (100 iteraciones de simulación) pulsa la barra espaciadora. Para salir, pulsa "q". Al final de la simulación, se crearán tres archivos de estatus de la memoria de instrucciones, datos y fichero de registros respectivamente, cuyos nombres deberás especificar. Rubén Lledó Calatayud, 2000-2001 rtt2jd@terra.es