Máquina virtual, parte 1

UNIVERSIDAD DEL CARIBE

Ingeniería en Telemática

PRIMER CONGRESO REGIONAL DE ESTUDIANTES DE INGENIERÍA 

PARTIDA HANON ANGÉLICA INÉS

Cancún, Quintana Roo Jueves 9 de Febrero de 2006

 

Justificación:
El prototipo emula el funcionamiento de una computadora simple que contiene un microprocesador MOS 6510 (El que tenía la Commodore 64) programado en C. Tiene memoria de 64 KB, un bus de direcciones de 16 bits y  un bus de datos de 8 bits

Objetivo:

Este proyecto sirve para demostrar cómo es que un procesador realiza sus tareas, de esta manera entenderemos de una mejor forma los procedimientos que se llevan a cabo dentro de una computadora, yendo más allá del límite de nuestra imaginación.
Con esta simulación podemos entender perfectamente el funcionamiento de un procesador e implementarlo para mejorar el funcionamiento de los que se manejan en la actualidad.
Usamos C para ver de una manera más sencilla los procesos que se están llevando a cabo a lo largo del programa.


Procedimiento:

Lo que el programa hace es implementar buses de direcciones, tal y como lo hace un procesador real.  Un procesador se compone de la memoria, de la ALU (Unidad Aritmético Lógica),  unidad de control, buses internos y conexiones con el exterior.
Una de las primeras decisiones a la hora de diseñar un procesador es decidir cual será su juego de instrucciones. Este conjunto de instrucciones (órdenes) es el lenguaje que realmente entiende el procesador, y constituye lo que se conoce como lenguaje ensamblador o lenguaje-máquina. La decisión es trascendente, por dos razones.  Primero: el juego de instrucciones decide el diseño físico del conjunto.  Segundo: cualquier operación que deba ejecutarse con el procesador deberá poder ser descrita en términos de este “lenguaje” elemental (recuerde que los compiladores e intérpretes son en realidad traductores desde el lenguaje de alto nivel (fuente) a este lenguaje-máquina) Sin entrar en detalles, podemos decir que frente a esta cuestión caben dos filosofías de diseño.  La primera conduce a máquinas denominadas CISC (“Complex Instruction Set Computer”); las máquinas construidas según el otro criterio se denominan RISC (“Reduced Instruction Set Computer”).
Como puede deducirse de sus propios nombres, las máquinas CISC utilizan instrucciones muy complejas, diríamos que muy descriptivas y específicas, lo que necesariamente se traduce en varias consecuencias
El lenguaje debe contener un amplio surtido de ellas (una para cada circunstancia distinta).
Son instrucciones complejas, por tanto de ejecución lenta.  La circuitería del procesador también es compleja.
Para un trabajo específico se requieren pocas instrucciones (siempre hay una que resuelve el problema).
Las máquinas RISC representan el enfoque opuesto.  Utilizan instrucciones muy simples, que deben ser cuidadosamente escogidas, porque cualquier operación debe ser expresada como una secuencia de estas pocas instrucciones.  Las consecuencias son justamente opuestas a las anteriores:
El lenguaje contiene un conjunto pequeño de instrucciones.
Las instrucciones son muy simples, por tanto de ejecución rápida.  La circuitería es más simple que en los procesadores CISC.
Para cualquier operación se requieren varias instrucciones elementales.
Naturalmente cada criterio tiene sus pros y sus contras en lo que a rendimiento se refiere.  En las máquinas CISC, lentitud de cada instrucción frente a poca cantidad de ellas;  en las RISC, rapidez individual aunque hay que ejecutar un mayor número.

Desarrollo:
El procesador asigna áreas de almacenamiento en la memoria, y por su parte la ALU se encarga de las operaciones lógicas que será necesario realizar para su correcto funcionamiento tales como manejar números enteros.
Necesitamos tener registros para la asignación de memoria, y en relación a la Unidad de Control, esta se encarga de coordinar que todos los elementos funcionen de manera armónica.

Conclusiones:
Al desarrollar este prototipo puedo demostrar de lo que es capaz de hacer un procesador, sus funcionamientos. Y llevar más allá la aplicación de la computadora y la programación.
Ya que este proyecto se desarrolló con fines didácticos, espero y lo valoren por las horas y meses de trabajo que conlleva su realización, por los planteamientos tan abstractos que tuve que comprender al 100% acerca del funcionamiento de todo un microprocesador y así realizar un programa que lo simule en su totalidad. Las horas que llevan aprender un lenguaje máquina, un ensamblador e implementarlo dentro de un código fuente.

Animación 1

Animación 2

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *