Simulador de Microprocesadores
Simulador de Microprocesadores
Simulador de Microprocesadores
Laboratorio de:
Arquitectura de Computadores
Práctica No.: 6
Tema:
Simulación de Microprocesadores
Objetivos:
Marco teórico:
Los simuladores de los procesadores son ampliamente utilizados en docencia debido a que ofrecen
un entorno de programación menos peligroso y mejor que una máquina real porque pueden
detectar errores, ofrecer más posibilidades que un ordenador real y no modifican elementos físicos
del computador.
Simula3MS cuenta con un entorno de trabajo gráfico y de fácil manejo que permite depurar
cómodamente los programas, observar la evolución de la memoria, así como la ejecución de las
instrucciones sobre distintos caminos de datos. La presencia de las distintas implementaciones en
la misma herramienta permite observar las diferencias de ejecución de un mismo código según
cuales sean las características del procesador. Simula3MS implementa un subconjunto de
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
Intérpretes de software
Los intérpretes de software admiten un entorno de programación interactiva que alienta al usuario
a experimentar iterativamente con su definición de problema en una serie de sesiones de edición /
ejecución / evaluación. La interpretación de software en tiempo de ejecución proporciona un
entorno de programación potente y flexible, y continúa hoy como un enfoque de ejecución de
software común.
Una desventaja se produce debido a la actividad continua de traducción de texto que el intérprete
realiza en cada iteración de su ciclo de ejecución. Algunos intérpretes reducen la sobrecarga de
traducción de texto al primer tokenizar la sintaxis de las líneas de texto del programa de usuario
original en una estructura de datos especial. El ciclo principal de interpretación opera en contra de
esa estructura de datos, en lugar del texto original sin formato.
Procesamiento Monociclo
En el modelo monociclo los recursos (Memoria, ALU) deben utilizarse solo una vez por cada ciclo del
reloj. Incluso esto causa que hay veces en que estos recursos deben duplicarse. El período del reloj
se ajusta con la ruta crítica combinacional, que es la establecida por la instrucción más lenta en
completar sus transferencias, si existen instrucciones que demoran demasiado (las de punto
flotante) la frecuencia del reloj debe ajustarse a la instrucción que más tarda.
Procesamiento Multiciclo
Se tienen cinco etapas para la ejecución de instrucciones (no todas las instrucciones usan todas las
etapas):
La activación de las señales que controlan las transferencias deben efectuarse asociadas a diferentes
ciclos del reloj. Para lograr esto es preciso modelar la unidad de control como una máquina
secuencial de estados finitos.
Procesamiento segmentado
Los procesamientos segmentados sirven para mejorar el rendimiento sin necesidad de duplicar
excesivamente el hardware. Presenta múltiples instrucciones solapadas, este permite mejorar La
ejecución de una instrucción pasa por varias etapas:
1. Búsqueda de Instrucción.
2. Decodificación.
3. Búsqueda de Operandos.
4. Ejecución.
5. Almacenamiento de Resultados
Desarrollo de la práctica:
Parte 1:
2. Editar un nuevo código en lenguaje ensamblador o cargar un fichero creado con anterioridad
en este caso un código que realiza operaciones con números flotantes que son almacenados
en un vector de 4 espacios.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
3. Una vez editado o cargado el fichero, el siguiente paso es ensamblarlo, para ello hay que pulsar el
botón Ensamblar. A partir de aquí hay dos posibles resultados:
Si el código no tiene errores: Se activará el botón "Ejecutar" y podremos simular nuestro
programa
Si el código contiene errores: Aparecerán todos ellos en el "Cuadro de errores" y se
remarcará sobre nuestro código el primer error. Es posible remarcar el resto de errores (En
caso de existir) pulsando el botón "Error siguiente".
4.- Escoger la configuración del simulador sobre la que queremos que se ejecute el código. Para ello,
en el menú Configuración tenemos tres posibles opciones. Por defecto la opción activada es el
camino de datos Monociclo con la Entrada/Salida deshabilitada.
5.- Una vez obtenido, el código correcto y configurado el simulador, se pulsa Ejecutar.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
7.- Una vez que hemos identificado todas las partes tendremos que ir pulsando sobre ciclo siguiente
hasta que lleguemos a la última orden anotando todos los cambios que se van produciendo en los
diferentes registros.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
Parte 2:
Realizamos los mismos pasos hechos en la parte 1 con la excepción que ahora las operaciones son
con tres flotantes y tres enteros con un vector de 8 espacios donde la respuesta se almacena en la
ultimo espacio del vector.
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
Parte 3:
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
Análisis de resultados:
Conclusiones:
Recomendaciones:
Para evitar problemas de ejecución al momento de realizar las sumas, se recomienda para
iniciar introducir únicamente números flotantes.
Es necesario realizar una lectura del manual adjunto a la práctica, para el correcto
desarrollo de la misma.
Estar concentrados e ingresar correctamente el código del programa.
Buscar contenido extra en internet para saber como funcionan cada uno de los programas.
Bibliografía:
http://simula3ms.des.udc.es/
http://culturacion.com/cual-es-la-funcion-del-procesador/
http://simula3ms.des.udc.es/Manual.pdf
Anexos:
ALGORITMO 1:
#programa que define un vector array_word de palabras de 4 elementos, valores 210, 240, 330, 5640
#direccion del vector se almacena en $t1, palabras se almacenan en un $sn de palabra en palabra
hay una diferencia de 4 bytes
#seccion .data
.data
#cargo el vector con los valores para el sistema directamente
array_word: .word 210,240,330,5640
ALGORITMO 2:
#programa que solicita valores enteros los almacena en un vector junto al resultado
#seccion .data
.data
vector: .space 16
#seccion principal
.text
.globl main
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
main:
#cargar la direccion del vector en t0 la=load adress
la $t0, vector
#operacion aritmetica
add $s1,$s0, $s1
add $s3,$s1,$s2
ALGORITMO3:
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
#Programa que solicita valores flotantes los almacena en un vector junto al resultado
#seccion .data
.data
vector: .space 32
#seccion principal
.text
.globl main
main:
#NUMEROS ENTEROS
#Peticion de primer entero
li $v0,0x00000005
syscall
sw $v0,0($t0)
#Peticion de segundo entero
li $v0,0x00000005
syscall
sw $v0,4($t0)
#Peticion de tercer entero
li $v0,0x00000005
syscall
sw $v0,8($t0)
#NUMEROS FLOTANTES
#Peticion de primer Flotante
li $v0,0x00000006
syscall
swc1 $f0,12($t0)
#Peticion de segundo flotante
li $v0,0x00000006
syscall
swc1 $f0,16($t0)
#Peticion de tercer flotante
li $v0,0x00000006
syscall
swc1 $f0,20($t0)
#CARGAR ENTEROS
#cargar en s0, s1, s2 los valores almacenados en el vector
#carge la posicon de t0 en s0
lw $s0,0($t0)
lw $s1,4($t0)
lw $s2,8($t0)
#suama
add $s1,$s0, $s1
add $s3,$s1,$s2
ESCUELA POLITÉCNICA NACIONAL
FACULTAD DE INGENIERÍA DE SISTEMAS
INGENIERÍA DE SISTEMAS INFORMÁTICOS Y DE COMPUTACIÓN
#CARGAR FLOTANTES
#cargar en f0, f1, f2 los valores almacenados en el vector
#carge la posicon de t0 en f0
lwc1 $f0,12($t0)
lwc1 $f1,16($t0)
lwc1 $f2,20($t0)
ALGORITMO 4:
#Programa que solicita valores flotantes los almacena en un vector junto al resultado
#seccion .data
.data
vector: .space 16
#seccion principal
.text
.globl main
main:
#operacion aritmetica
add.s $f1,$f0, $f1
add.s $f3,$f1,$f2