Castellano

From jmips



BD Bengali BG Bulgarian CN EN ES ET FR DE IN IT JP PL Polish RO RU Russian

Se trata de jMIPS, el procesador MIPS en Java. Vd ya debería haber descargado el archivo (hay siempre una copia actualisada en las paginas web del proyecto).

En el archivo puede encontrarse esta documentación en el subdirectorio 'doc/html'.

Si estudia el software seria mas fácil entender el arquitectura del procesador MIPS y los conceptos generales de sistemas y arquitecturas de ordenadores.

Hay varias maquetas procesadores en el archivo, identificados aquí como 1, 2, 3, etc. Los números aumentan con la complejidad de la maqueta y su arquitectura.

  1. procesador 'unpipelined' básico
  2. procesador 'pipelined' sin optimizar
  3. procesador 'pipelined' optimizado
  4. procesador 'pipelined' optimizado con memoria cache
  5. procesador 'pipelined' optimizado con memoria cache y manejo de interrupciones

Las paginas siguientes le ayudaran a entender el uso y -si hace falte- la compilación de la maqueta procesador básica, y luego las demás maquetas.

Las maquetas no se diferencian por la forma de su construcción ni su manera de uso. Son unicamente sus arquitecturas interiores que diferan entre ellos. Pero por eso una maqueta aún puede demostrarse mas rápido que otra en el mismisimo contexto.

Seria mejor trabajar con cada maqueta a su vez, quizá con el objetivo de mejorar el arquitectura pare hacerlo más rápido.

El tiempo de ejecución en total y por instrucción es por defecto la salida impresa.

Si quiere las estadísticas tal como el tiempo que necesita cada clase de instrucción para ejecutarse en circunstancias particulares, tendrá que añadir el código Vd mismo. Después de todo, es código libre de restricciones para usos personales (ver la licencia incluido en el archivo que ha descargado)! El código esta claramente escrito y explicado en las paginas aquí.

Contents

Como ejecutar el modelo de procesador básico MIPS.

Hay una libreria Java (un 'jar') en el archivo 'zip' o 'tar' descargado (conseguir uno de ellos desde el enlace de descarga en la pagina del proyecto). Si no lo hay dentro, pasa directamente a la siguiente sección para aprender como construirselo.Si lo hay ...

Extraer la libreria 'jar' del archivo descargado con:

% unzip jMIPS-1.7.zip jMIPS-1.7/lib/CPU.jar

o

% tar xzvf jMIPS-1.7.tgz jMIPS-1.7/lib/CPU.jar

Ademâs. extraer algunos de los contenidos del directorio 'misc' con:

% unzip jMIPS-1.7.zip jMIPS-1.7/misc/hello_mips32

o

% tar xzvf jMIPS-1.7.tgz jMIPS-1.7/lib/hello_mips32

Pues la maqueta CPU1 puede ser ejecutado por un Java Virtual Machine (JVM) en cualquiera plataforma. Se puede hacerlo en Unix o Linux con:

% java -cp jMIPS-1.7/lib/CPU.jar CPU.Cpu1 -q jMIPS-1.7/misc/hello_mips32

Por ejemplo:

% java -cp jMIPS-1.7/lib/CPU.jar CPU.Cpu1 -q jMIPS-1.7/misc/hello_mips32
  Hello world
%

Como compilar el modelo básico del procesador MIPS

Si quiera o si tiene que compilar el código fuente Java para conseguir un código ejecutable, haría lo siguiente, según las herramientas a su alcanze.

Dado que existen herramientas diferentes en los sistemas operativos diferentes, las subsecciones siguientes son específicas a su sistema operativo particular.

Compilar en Linux o Unix

Si esté trabajando en un Mac, y utiliza el sistema de ficheros formato HFS o HFS+, entre en las características del sistema y habilitar su sensibilidad a las variaciones entre majusulas y minusculas en los nombres de los ficheros.

Lo hará falta porque si no, algunos ficheros en el archivo chocarián por sus nombres, que no sea exactamente deseable.

Desarchivar los contenidos del archivo zip o tar comprimido con

% unzip jMIPS-1.7.zip 

o

% tar xzvf jMIPS-1.7.tgz

respectivamente.

Después buscar el directorio src/ en la jerarquía nuevamente desempaquetada y cambiar su directorio actual a él (utilice el comando 'cd').

Prefiero generar el bytecode genérico Java para la máquina virtual Java (JVM), con

% javac CPU/Cpu1.java

en el directorio src/, y entonces el archivo resultante Cpu1.class puede ser ejecutado por la JVM en cualquier plataforma.

Se puede hacerlo en Linux con

% java CPU/Cpu1 -q ../misc/hello_mips32

Por ejemplo:

% java CPU/Cpu1 -q ../misc/hello_mips32
  Hello world
%

La construcción del archivo 'jar' es apenas una cuestión de -primero- compilar todos los ficheros Java:

% javac CPU/*.java
%

y -segundo- crear el archivo jar con

% jar cf ../lib/CPU.jar CPU/*.class
%

En realidad, un 'jar' es nada más que un archivo 'zip' sin compresión, con un fichero 'manifest' también incluido en un subdirectorio adicional particular. Se puede crearlo todo usando unicamente el archivador zip.

Buscar los detalles por Google, o examinar un archivo 'jar' ya existente usando el archivador zip. Notará los ficheros esperados (archivados sin compresioón), más el subdirectorio adicional con su unico fichero 'manifest'.

Compilar bajo Windows

Para importar el código fuente en el IDE Java de NetBeans, crear un nuevo proyecto NetBeans (llamado `jMIPS ', probablemente), asegurándose que las casillas para `Main Class', etc, son todos sin marcar.

Una vez que el IDE ha construido todos los directorios y archivos control que necesita, copiar el contenido del directorio src/CPU/ del archivo zip en un nuevo subdirectorio src/CPU/ del proyecto jMIPS que acaba de crear. Utilice un comando para copiar directamente desde el archivo zip, si posible, para evitar que los archivos tocarian el disco. Windows puede hacer chocar algunos archivos cuyos nombres diferan unicamente por un mayuscula en vez de un minuscula, o vice versa. Eclipse lo tiene, y si Netbeans tambiên tiene la opción para importar desde zip, y sería perfecto utilizarlo.

El IDE detectará que se llena la zona con nuevo código fuente y ampliará la vista en árbol para incluir el paquete CPU y sus ficheros de código Java.

Si prefiere, puede cambiar sistemáticamente los nombres de los archivos Java Cpu1.java, Cpu2.java, etc, a, por ejemplo, WinCpu1.java, WinCpu2.java, etc. En cada caso, Vd tendrá que cambiar tambiên el nombre de la clase declarada al interior del fichero para mantenerlo igual al nombre del fichero.

Notas sobre la ejecución del modelo CPU1

El significado de las opciones de la línea de comando es el siguiente:

  • No hay opciones: cuando funciona sin ninguna opción (en particular, sin q, es decir, sin la opción "tranquilo"/"quiet"), aparecerá la trace de cada instrucción maquina ejecutada con la información de tiempo de ejecucción por su lado:
% java CPU.Cpu1  hello_mips32
0:      0.000000007s:   0x80030080:     addiu $29, $29, -32
1:      0.000000012s:   0x80030084:     sw $31, 28($29)
2:      0.000000019s:   0x80030088:     sw $30, 24($29)
3:      0.000000024s:   0x8003008c:     addu $30, $29, $0
4:      0.000000030s:   0x80030090:     sw $28, 16($29)
...
218:    0.000001567s:   0x8003000c:     lui $3, -20480
219:    0.000001573s:   0x80030010:     ori $3, $3, 16
220:    0.000001580s:   0x80030014:     sb $3, 0($3)
%

Ese ha ejecutado 220 instrucciones en 0.000001580 segundos simulados (la velocidad de reloj es 1GHz simulado). Son alrededor 5 ciclos de reloj por cada instrucción.

  • -q: usar -q ("quiet") suprime el impreso de la trace de las instrucciones que se ejecutan. En otras palabras, con -q sólo se ve lo que el programa debe imprimir, y no habria alguno ruido adicional.
% java CPU.Cpu1 -q hello_mips32
Hello world
%
  • -d: información adicional esta imprimido con d ("debug"). Repetidas opciones -d aumentan la cantidad de ruido de depuración emitido.
% java CPU.Cpu1 -d hello_mips32
text start at virtual addr 0x80030000 file offset 0x10000
text end   at virtual addr 0x800300e0 file offset 0x100e0
text entry at virtual addr 0x80030080 file offset 0x10080
read 224B at offset 65536 from file 'hello_mips32'
stack start at virtual addr 0xb0000000
stack end   at virtual addr 0xb0100000
0:      0.000000007s:   0x80030080:     addiu $29, $29, -32
1:      0.000000012s:   0x80030084:     sw $31, 28($29)
2:      0.000000019s:   0x80030088:     sw $30, 24($29)
...
%
  • -o: se puede resetear ciertas variables internas por "-o MEMORY_LATENCY=1000" (por ejemplo). Buscarlo en el código de Cmdline.java y añadir vuestras proprias opciones a la actualmente cortisima lista de opciones acceptadas.

Por favor, editar el código fuente con el fin de agregar cualquier cosa adicional que Vd desea. Añadir Vd mismo a la lista de créditos en la parte superior del fichero, y enviar el código cambiado al proyecto - o publicarlo Vd mismo en otro lugar, como desea .