Está en la página 1de 4

En inform�tica, un emulador es un software que permite ejecutar programas o

videojuegos en una plataforma (sea una arquitectura de hardware o un sistema


operativo) diferente de aquella para la cual fueron escritos originalmente. A
diferencia de un simulador, que solo trata de reproducir el comportamiento del
programa, un emulador trata de modelar de forma precisa el dispositivo de manera
que este funcione como si estuviese siendo usado en el aparato original.

�ndice
1 Usos
2 Emulaci�n
2.1 Estructura
2.1.1 Simulador de CPU
2.1.2 Dispositivos de entrada y salida
2.2 Sistema de ROM
3 Virtualizaci�n
4 Emulador de videoconsola
5 V�ase tambi�n
6 Enlaces externos
Usos
Un uso popular de los emuladores es el de imitar la experiencia de los videojuegos
de m�quinas recreativas o videoconsolas en computadoras personales, o el poder ser
jugados en otras videoconsolas. La emulaci�n de videojuegos de sistemas antiguos
(abandonware) en las modernas computadoras personales y videoconsolas de hoy d�a
resulta generalmente m�s c�moda y pr�ctico que en los dispositivos originales. Sin
embargo, puede ser requerido a los creadores de emuladores una licencia de software
para escribir programas originales que dupliquen la funcionabilidad de la ROM y
BIOS del hardware original, lo que com�nmente se conoce como high-level emulation o
emulaci�n de alto nivel.

Otro uso com�n es el de emular sistemas operativos obsoletos, o vigentes para otra
m�quina o dispositivo, para utilizar programas compatibles con estos sistemas
operativos.

Emulaci�n
En sentido te�rico, la tesis de Church-Turing implica que cualquier ambiente
funcional puede ser emulado dentro de cualquier otro. En la pr�ctica, esto puede
resultar realmente dif�cil, particularmente cuando el comportamiento exacto del
sistema emulado no est� documentado y debe ser deducido mediante ingenier�a
inversa. Tampoco se habla en la tesis sobre las diferencias en sincronizaci�n; si
el emulador no act�a tan r�pidamente como el hardware original, el software de
emulaci�n va a ir m�s lento que si fuese el hardware original.

Estructura
La mayor�a de los emuladores solo emulan una determinada configuraci�n arquitectura
de hardware - si el sistema de explotaci�n ( o sistema operativo) tambi�n se
requiere para emular cierto programa entonces ha de ser emulado tambi�n. Tanto el
sistema de explotaci�n como el programa deben ser interpretados por el emulador,
como si estuviese ejecut�ndose en el equipo original. Aparte de la interpretaci�n
del lenguaje de la m�quina emulada, es preciso emular el resto del equipo, como los
dispositivos de entrada y salida, de forma virtual: si escribir en una regi�n
espec�fica de la memoria debe influir en el contenido en pantalla, por ejemplo,
esto tambi�n debe ser emulado.

En vez de una emulaci�n completa del equipo, una compatibilidad superficial puede
ser suficiente. Esto traduce las llamadas del sistema emulado a llamadas del
sistema anfitri�n.

Los desarrolladores de programas para m�quinas con sistemas computarizados y


consolas de videojuego com�nmente utilizan emuladores especialmente exactos
llamados simuladores antes de ejecutarlos en el equipo real. Esto permite que el
programa pueda ser producido y probado antes de que la versi�n final del equipo
para el cual se est� desarrollando sea producida en grandes cantidades, de esta
forma puede ser probado sin tener que copiar el programa en el equipo, de modo que
puedan ser eliminados errores en un nivel bajo sin tener los efectos colaterales de
un depurador.

T�picamente, un emulador se divide en m�dulos que corresponden de forma precisa a


los subsistemas del equipo emulado. Lo m�s com�n, es que un emulador este compuesto
por los siguientes m�dulos:

Un emulador de la unidad central de procesamiento.


Un m�dulo para el subsistema de memoria.
Varios emuladores para los dispositivos de entrada y salida.
Lo m�s com�n es que los buses no sean emulados, por razones de simplicidad y
rendimiento, y para que los perif�ricos virtuales se comuniquen directamente con la
UCP y los subsistemas de memoria.

Simulador de CPU
El simulador de la unidad central de procesamiento (CPU) es a menudo la parte m�s
compleja de un emulador. Muchos emuladores son escritos utilizando simuladores de
CPU "preempaquetados", para as� poder realizar una emulaci�n fiel y eficiente de
una m�quina espec�fica.

El simulador de CPU m�s simple ser�a un int�rprete inform�tico, que sigue el flujo
de ejecuci�n del c�digo de programaci�n emulado y, por cada instrucci�n de c�digo
de la m�quina emulada, ejecuta en el procesador en que se carga, instrucciones
sem�nticamente equivalentes a las originales.

Esto es posible asignando una variable a cada registro y flag de la CPU emulada. La
l�gica de la CPU simulada puede ser m�s o menos traducida directamente a algoritmos
de software, creando una reimplementaci�n del software que b�sicamente refleja la
implementaci�n original del hardware.

El ejemplo siguiente ilustra el modo en que la simulaci�n de CPU por un int�rprete.


En este caso, las interrupciones se revisan despu�s de la ejecuci�n de cada
instrucci�n, aunque este comportamiento no es usual en los emuladores en la
realidad, por razones de rendimiento.

void Execute(void) {
if(Interrupt!=INT_NONE) {
SuperUser=TRUE;
WriteMemory(++StackPointer, ProgramCounter);
ProgramCounter=InterruptPointer;
}
switch(ReadMemory(ProgramCounter++)) {
// Handling of every valid instruction
default:
Interrupt=INT_ILLEGAL;
}
}
Los int�rpretes son muy populares en el caso de los simuladores de CPU, ya que son
m�s sencillos de implementar que otras soluciones alternativas de mejor
rendimiento, y su velocidad es m�s que adecuada para emular computadoras de hace
m�s de una d�cada en m�quinas modernas.

Aun as�, la penalizaci�n de velocidad inherente en la interpretaci�n puede ser un


problema al emular computadores cuya velocidad de procesador est� en el mismo orden
de magnitud que la m�quina hu�sped. Hasta no hace tantos a�os, la emulaci�n en
tales situaciones era considerada impracticable.

Lo que permite el rompimiento de esta restricci�n son las t�cnicas avanzadas de


recompilaci�n din�mica. Una translaci�n simple a priori del c�digo del programa
emulado al c�digo que corre en la arquitectura original es usualmente imposible por
varias razones:

el c�digo puede ser auto modificable


no existe una forma que distinga de forma confiable los segmentos de informaci�n
(que no deben ser traducidos) de los segmentos de texto (segmentos de c�digo)
no existe forma de comunicarse con el sistema operativo emulado para que el
emulador reconozca los nuevos c�digos cargados (por ejemplo del disco)
Varias formas de recompilaci�n din�mica, incluyendo la popular t�cnica de
compilaci�n en tiempo de ejecuci�n (compilaci�n JIT), trata de bordear estos temas
esperando hasta que el proceso de control de flujo se mueva hasta donde esta la
parte donde est� localizado el c�digo sin traducir, y es solo entonces {"en tiempo
de ejecuci�n") cuando los bloques traducidos del c�digo al c�digo anfitri�n pueden
ser ejecutados.

El c�digo traducido se mantiene en el c�digo cach�, y el c�digo original no se


pierde ni es afectado; de esta forma, incluso los segmentos de data pueden ser
trasladados por el recompilador, resultando solo en un gasto de tiempo de traslado.

Dispositivos de entrada y salida


La mayor�a de los emuladores, como dicho anteriormente, no emulan el sistema
principal bus; cada dispositivo de entrada y salida es tratado a menudo como un
caso especial, y no existe una interfaz constante para los perif�ricos virtuales.

Esto puede resultar en una ventaja en el funcionamiento, proveyendo que cada m�dulo
de entrada y salida pueda ser adaptado a las caracter�sticas del dispositivo
emulado; dise�os basados en un est�ndar, entradas y salidas unificadas por medio de
API pueden sin embargo proveer modelos m�s simples, y adem�s tienen la ventaja
adicional de permitir de forma "autom�tica" la utilizaci�n de servicios plugins
para proveer dispositivos virtuales de terceros en el emulador.

Las entradas y salidas unificadas por medio de API no necesariamente reflejan la


estructura del bus del hardware real: el dise�o del bus est� limitado por varios
par�metros el�ctricos y la necesidad del manejo de programaci�n paralela que la
mayor�a de las veces puede ser ignorada en la implementaci�n del software.

A�n los emuladores que tratan cada dispositivo como un caso especial poseen una
infraestructura b�sica en com�n para ello:

manejando interruptores, por medio de procedimientos que fijen banderas legibles


por el simulador del CPU siempre que un interruptor sea levantado, permitiendo al
CPU virtual "convertir los interruptores (virtuales)".
escribiendo y leyendo de la memoria f�sica, por medio de dos procedimientos
similares mientras este lidia con la memoria l�gica (contrario a este �ltimo, el
anterior puede com�nmente ser echado a un lado, y en su lugar se emplean las
referencias directas al arreglo de memoria)
Sistema de ROM

NeoRAGEx, emulador a base de im�genes ROM.


Los emuladores arrancan im�genes ROM, o sea el contenido de los cartuchos,
disquetes o cintas que se usaban con los sistemas antiguos. F�sicamente en las PC
las ROM son archivos binarios que se pueden cargar en la memoria. Es decir, el
emulador es un programa que hace las funciones de una consola, por ejemplo la Game
Boy Advance o una PDA, y la ROM es un archivo que hace de cartucho, CD-ROM, o
cinta, por ejemplo Mario Bros..

También podría gustarte