Emulación de Alto/Bajo nivel

De Emulation Wiki
Ir a la navegación Ir a la búsqueda

La emulación de alto nivel (HLE) y la emulación de bajo nivel (LLE) se refieren a los métodos utilizados al emular componentes o sistemas completos. Se utilizan para diferenciar los enfoques de las implementaciones del sistema por la forma en que cada emulador maneja un componente dado; un emulador de nivel superior abstrae el componente con el objetivo de mejorar el rendimiento en el host, sacrificando las medidas necesarias para garantizar el comportamiento correcto. La simplicidad de la mayoría de las consolas clásicas permite que la emulación de bajo nivel sea factible, pero el aumento exponencial de la potencia de procesamiento en las consolas más nuevas ha requerido la necesidad de abstracción. Debido a que la emulación de alto nivel a menudo se puede ver como una simulación, los volcados de BIOS y otros códigos específicos de la máquina que normalmente entrarían en el área gris legal de las copias de seguridad generalmente no son necesarios.

Como ejemplo, en una consola que tenga un chip de gráficos 3D que apoya a la CPU para representar los gráficos de los juegos. Un emulador preciso de bajo nivel usaría un procesador de software para garantizar que la salida del componente sea 1: 1 con la consola original. Sin embargo, el procesador de software se ejecuta en la CPU del host, que no está diseñada para aplicaciones 3D, el rendimiento será lento si la CPU no es lo suficientemente potente como para manejar la representación 3D precisa en tiempo real. Afortunadamente, las API 3D modernas pueden aliviar este problema al redirigir los cálculos 3D a la GPU del host, por lo que un emulador de alto nivel realizará llamadas al chip de gráficos del host para que el juego sea más rápido. Y HLE no sólo acelera la representación en 3D, también puede actuar como componentes que no requieren una emulación precisa para que el software original lo use correctamente. Como otro ejemplo, una consola tiene una interfaz de administración del sistema separada del resto del hardware al que los programas llamarán para interactuar con el sistema, desde guardar archivos hasta configuraciones. La emulación precisa de esto, como un componente discreto, ralentizaría la emulación de manera severa sin ningún beneficio real, ya que estos datos pueden proporcionarse fácilmente al software sin tener que sortear todos los obstáculos del hardware original.

Contrariamente a la creencia popular, la idea detrás de HLE ha existido antes de que apareciera el emulador de N64 UltraHLE. Algunos sistemas del pasado solo pueden simularse en computadoras hoy en día, ya que no fueron diseñados con hardware convencional (es decir, una CPU, bancos de memoria, chip de video, etc.), sino con circuitos discretos. UltraHLE comenzó la discusión de si HLE es o no un buen enfoque para preservar el hardware a día de hoy, pero es un debate que aún continúa.

Comparación con los modelos tradicionales

En comparación con LLE, HLE tiene un conjunto muy diferente de decisiones de diseño y compensaciones. A medida que la complejidad de las consolas aumenta rápidamente (quinta generación y superiores), también lo hace su potencia, más importante aún, la diferencia en el poder de cómputo de los PC de los consumidores, que son los sistemas host más comunes para los emuladores, se ha reducido con el tiempo. Por lo tanto, los requisitos sobre la calidad de los servicios emulados aumentan, junto con la dificultad de hacerlo. Los chips de hardware en las consolas suelen ser extremadamente especializados para unas funciones especificas que necesitan los juegos desarrollados para ellos, a menudo en direcciones que son completamente diferentes de las que toma el hardware en un PC estándar. Por ejemplo, los gráficos en 3D podrían realizarse mediante un procesador de enteros extremadamente rápido. Emular una arquitectura de este tipo mediante programación en un PC, enfocado por las operaciones de punto flotante, y el hardware de gráficos especializado con memoria separada de la memoria del sistema sería extremadamente difícil. Si le sumamos la escasez de documentación de dicho hardware especializado y propietario la dificultad aumenta. Incluso si se pudiera crear un emulador de este tipo, podría ser demasiado lento para poder usarlo. Un emulador HLE tomaría los datos a procesar, junto con la lista de operaciones, y los implementaría utilizando los medios disponibles en los sistemas host. Las operaciones de punto flotante de matemáticas y GPU se pueden realizar de forma nativa. El resultado no solo es una coincidencia mucho mejor con la plataforma de host, sino que también a menudo genera resultados significativamente mejores, ya que el cálculo de punto flotante produce gráficos de mayor calidad que son adecuados para pantallas de alta resolución disponibles para PC. Sin embargo, es importante tener en cuenta que la diferencia en la resolución, el sombreado o el procesamiento de la memoria gráfica, el sonido y otros cambiará la salida del entorno de la máquina nativa que el emulador está tratando de replicar. Además de ser menos auténtico, en algunos casos, esto podría ser indeseable, por ejemplo, representar partes del juego que no estaban destinadas a ser vistas, haciendo que las costuras en las texturas sean más evidentes debido a las resoluciones más altas, las capas de píxeles de filtrado bi-lineal y en el peor de los casos, hará que el software falle o no ejecute ciertas instrucciones debido a que las interrupciones no se manejan correctamente por la simulación HLE.

Ventajas y desventajas de HLE

Entre las ventajas de la emulación HLE, principalmente está la capacidad de utilizar el hardware del host mucho mejor y más fácilmente, la capacidad de optimizar los resultados a medida que mejoran el código y el hardware, y se necesita mucho menos trabajo para lograr el fin deseado. Como resultado, si el host ya proporciona una función apropiada, como sería común en la representación de los gráficos 3D. El progreso de las implementaciones también es mucho más independiente de la documentación detallada del hardware, en lugar de depender solo de la lista de posibles funciones disponibles para el programador, que ya se proporciona con un kit de desarrollo de software disponible para cada plataforma.

Las desventajas incluyen una dependencia mucho mayor en la estandarización entre las aplicaciones de destino y la presencia de mecanismos suficientemente de alto nivel en las plataformas emuladas. Si no existe tal mecanismo, o si las aplicaciones no lo utilizan de una de las formas ya admitidas, no funcionarán correctamente, incluso si otras aplicaciones similares en la superficie funcionan sin problemas. Por lo tanto, se puede requerir una cantidad significativa de ajustes para que todos los títulos deseados se ejecuten satisfactoriamente.

Como efecto secundario, HLE elimina la fuente común de problemas de legalidad, ya que no requiere que los usuarios le proporcionen al software bootstrap que utiliza la plataforma original para crear un entorno para que se ejecuten las aplicaciones. Debido a que el propio emulador proporciona dicho entorno, ya no necesita ROM del sistema, imágenes de cartuchos de arranque u otro software obtenido de una copia física del sistema emulado, un proceso que generalmente resulta en un estado poco claro a la luz de la ley de derechos de autor.

HLE es más fácil de iniciar y, cuando está optimizado, puede alcanzar una gran velocidad incluso en hardware más débil. Pero lo hace sacrificando la autenticidad. Además, la precisión del enfoque HLE no se puede comparar con el software LLE adecuado. La velocidad de HLE es la mayor ventaja, sin embargo, se logra mediante las simulaciones de la salida deseada, en lugar de una salida matemáticamente correcta cronometrada correctamente. En muchos casos, un software específico puede ejecutarse en un 90% tan cerca en comparación con la máquina emulada, y en otro caso, un 50% o incluso un 0% (es posible que no pueda iniciarse o arrancar) en el mismo emulador, debido a un software que depende en gran medida de tiempos o funciones que no salen correctamente. En LLE, ya que el software está intentando replicar los chips de hardware originales, la mayoría del software debería funcionar sin errores y no romperse entre sí debido a los extensos trucos específicos del juego y los ajustes individuales, a veces por juego que se hacen necesarios una vez que se detecta un error en HLE. Por lo tanto, mantener la compatibilidad y la precisión en un software HLE que apunta a una máquina que tuvo muchos juegos lanzados en su momento, demostrará mucho más trabajo y pruebas de cientos, a veces miles de software individual.

Perspectiva del futuro

A medida que los sistemas de las consolas avanzan en una complejidad cada vez mayor, la importancia del enfoque HLE aumenta. Las consolas de video modernas (6ª y 7ª generación) ya son demasiado complejas y poderosas para facilitar su emulación utilizando el enfoque tradicional. Además, algunos sistemas (en particular Xbox 360) tienen poco más que un sistema operativo de PC estandarizado, por lo que es inútil intentar recrear el hardware utilizando un PC como máquina host. Por lo tanto, HLE se convierte cada vez más en el único enfoque sensible.

El estado de los PC también a cambiado, los ordenadores más nuevos son mucho más rápidos que hace 20 años, y LLE se está volviendo posible por fin para algunas de las primeras consolas y CPU que tuvieron que emularse a través de HLE en los años 90. Como resultado, muchos emuladores pueden optar por la precisión y la réplica de los microchips con precisión de ciclo, lo que resulta en entornos de software muy precisos que finalmente pueden reemplazar a las consolas y computadoras antiguas. Además, Blueshogun, uno de los desarrolladores de Cxbx, ha declarado que hacer un emulador LLE de Xbox sería mucho más ideal y factible, y él, junto con otros, han estado trabajando en XQEMU, un emulador de LLE de Xbox que ha ido progresando lentamente. Sin embargo, HLE ha encontrado un nuevo propósito en los teléfonos inteligentes, dispositivos de mano y otros dispositivos electrónicos que tienen especificaciones mucho más bajas que un ordenador medio, y para estos dispositivos, la velocidad y la funcionalidad simulada se traducen en velocidades de cuadro más altas.

Actualmente, desde mediados de 2016 y hasta bien entrado el año 2017, existe una extraña sinergia entre Cxbx-Reloaded, un emulador de Xbox principalmente de HLE, y XQEMU, un emulador LLE. JayFoxRox, un colaborador del emulador XQEMU de código abierto y comentarista habitual de la base y el progreso de ese emulador, ha aparecido en un hilo de Reddit afirmando el hecho de que muchos más juegos originales de Xbox han podido introducirse en el juego y, en algunos casos, a velocidades decentes en XQEMU; además de más trabajo en herramientas de backend y un wiki dedicado.

Ejemplos

El término HLE se origina en UltraHLE, el primer emulador de la consola Nintendo 64 que ejecutaba juegos comerciales. La discusión inicial sobre HLE ocurrió para dar contexto por las razones detrás de algunos videojuegos que no funcionan correctamente con el emulador.

Dolphin utiliza HLE para el coprocesador Starlet y sus diversas funciones del sistema, relacionadas con Wiimotes, redes, acceso a archivos, USB y similares, pero conserva componentes de bajo nivel para la CPU, GPU y manejo de memoria.

External links

References