Proyecto Petunia

Proyecto Petunia

Emulador Motorola 680x0
para procesadores PowerPC
basado en Recompilación dinámica

Última actualización: 28.03.2005
en Inglés
, en Húngaro

Tabla de Contenidos


Introducción

El Proyecto Petunia se centra en la emulación de procesadores Motorola 680x0 en procesadores PowerPC, utilizando para ello una técnica de recompilación dinámica que ofrece excelentes resultados.

Recompilación Dinámica (o también llamada Compilación en el Acto o también compilación JIT) . Es una técnica de traducción del código máquina del procesador a emular a un procesador que ejecuta código máquina en tiempo real (al vuelo).
Es una técnica muy empleada hoy en día, sobre todo en aplicaciones JAVA, y también se aplica a numerosos emuladores con grandes resultados siempre.

Petunia es un elemento oficial del sistema operativo AmigaOS4.

Características

El objetivo del emulador es conseguir la mayor compatibilidad con el procesador 68040 de Motorola, sin soporte para su unidad MMU.

¿Qué ofrece la versión 51.9 actual?

La versión actual corre perfectamente integrada con la emulación interpretativa de AmigaOS4.0

Opcodes emulados:

Direccionamiento:

Emulación de Flags: todos los flags.
Es posible optimizar el código compilado al vuelo en el momento de compilación gracias al análisis del flag de control del flujo a bajo nivel.

Se implementan de forma automática los cambios de contexto en el código nativo PowerPC o en la emulación interpretativa, llamados automáticamente cuando se hacen necesarios.

Problemas

Funciones no implementadas: ¿Qué programas aún no funcionan? Pues aquellos...

Planes Futuros

Test de Velocidad

Desheché los test de velocidad, por las críticas recibidas al respecto. Podrá comprobar la velocidad de petunia en la versión final de AmigaOS4.0

Preguntas Más Frecuentes

Tras largos periodos visitando foros, canales de chat y respondiendo e-mails decidí añadir una sección FAQ para la página de este proyecto. Espero con ello aclarar todas las preguntas de importancia que puedan surgirles.
Si hubiese cualquier cosa que no quedase lo suficientemente clara puede sin problemas
escribirme un correo.

NO haga caso de los embaucadores que pululan por los foros y listas de correo, muchos de ellos creen saber cómo funcionan las cosas, pero en realidad poco saben. (Sobre todo en lo referente al funcionamiento interno de los emuladores o sobre el sistema AmigaOS4.) Si tiene alguna duda no se lo piense y pregúnteme.

No espere que ofrezca respuestas en algún foro en particular, no tengo tiempo suficiente para leerlos casi nunca.
Si tiene preguntas, repito, hágamelas.

¿Cuando estará lista la emulación?
Muy pronto... ;)
Restan por implementar algunas funciones y corregir pequeños fallos.
Ya se encuentra casi del todo integrado en el sistema AmigaOS4, carga desde el arranque del sistema (en el espacio del kernel) y se puede apreciar cómo la mayoría de los programas emulados son rápidos como una rayo :)

¿Cuenta la versión prerelease de AmigaOS4 con una actualización de Petunia?
No. Como ya dije en otras ocasiones: Petunia sólo estará incluído en la versión final de AmigaOS4.

¿ Y si le ofrezco cerveza fría /chicas/ mucho dinero/ filetes de pollo?
No. Pero gracias....;)

He comprobado mi sistema AmigaOS4 prerelease2 con SnoopDOS y veo gran cantidad de errores al abrir petunia.library. ¿Qué porras es esto?
No se preocupe. Es algo inofensivo. El kernel trata de abrir petunia.library con cada nueva inicialización de proceso/tarea, pero la librería no está incluída en la actualización del prerelease. No hay nada malo si hubo en error de apertura. Ya he corregido este "flujo" en el inminente kernel, por tanto desaparecerá en la siguiente actualización.

¿Por qué es tan alto el número de versión? Ha pasado de la 1.0 a la 50.x desde la última vez que visité esta página. ¿Qué ha sucedido?
El número de versión no indica nada, es pura ficción del creador del programa. Los componentes de AmigaOS4 empiezan con un número de versión V51, por lo tanto Petunia tiene ese número de versión como componente de AmigaOS4 que es.

¿Qué procesador emulará?
Motorola 68040 con FPU, pero sin unidad de Manejo de Memoria (MMU).

¿68040 sólo? ¿Qué pasa con los programas optimizados para 060?
No se alarme, todo lo que funciona en 060 lo hace también en 040.

Pero AmigaOS muestra sólo un 68020+FPU. Lo he visto en mi versión prerelease. ¿Qué es lo que sucede?
Es sólo una cuestión técnica, es mejor indicar una CPU menor para las aplicaciones, pero no afecta para nada la capacidad de los emuladores integrados en el sistema. Ambos funcionan en modo 68040, que es por cierto compatible con cualquier programa para 68020.
(Esto tampoco es del todo cierto: aquellos programas que dependen en gran medida de la pila FPU podrían fallar, pero es un caso muy muy raro y casi siempre empleados para hackear algún elemento del sistema. Aún no se emulan correctamente los frames de la pila FPU.)

¿Cuando funcionará el soporte para FPU?
Ya lo hace.

¿Que sucede con los opcodes 68881/882 "emulados por software"?¿Es necesaria algún tipo de emulación tipo Oxypatcher?
No, no tendría sentido alguno. Implementé los opcodes FPU 68881/882 como si fueran soportados por el procesador "nativamente". De ahí que no sea necesario ningún parche tipo 68040.library u Oxypatcher.

¿Qué velocidad conseguirá la emulación en AmigaOS4?
La emulación está al nivel de un M68060/50Mhz en un procesador PPC604/180. Con procesadores más potentes desde luego se ganará velocidad.
Ciertos opcodes y operaciones requieren más esfuerzo por parte del emulador para mantener la compatibilidad, el resto son sencillos de implementar, por lo tanto la velocidad actual depende en gran medida del código 680x0 emulado.

¿Emulará mis juegos/demos AGA preferidos?
A ciencia cierta: no lo creo. Mi empeño se centra únicamente en la emulación del procesador y no en el soporte completo. Las dependencias respecto del chipset de un programa AGA no son sencillas de resolver. (Es algo realmente difícil).
Sólo existe una manera de hacer que casi todo funcione: utilizar UAE. Podrá utilizar la versión nativa de UAE para AmigaOS4, que de hecho ya funciona y lo hace muy bien.
En mi opinión, el 90-95% de los programas 680x0 que cumplen las normas del sistema funcionarán con Petunia. Usted mismo podrá comprobarlo.

¿Tiene intención de soportar UAE?
Aún no lo se. Cabe la posibilidad de llegar a la emulación desde "fuera" por lo que en teoría UAE podría tirar con el motor de Petunia, si alguien desarrolla una versión especial. No está en mi agenda de momento, pero prestaría mi ayuda a todo aquel que quisiera emprender esta tarea.

¿Es cierto que Petunia es un derivado del emulador UAE-JIT o de otro emulador?
Petunia no tiene nada que ver ni con la versión Intel ni con la PowerPC de UAE JIT, mi emulador funciona de otra manera. Está basado completamente en mis ideas. (Si le soy sincero: No tengo ni idea de cómo funciona la traducción JIT de UAE exactamente, nunca me he puesto a comprobarlo.)

¿Cómo funciona la emulación?
Hay tres aproximaciones para un emulador:

He leído en un foro que Petunia sólo emula el ejecutable principal de las aplicaciones y no las librerías/devices/plugins. ¿Es cierto?
No, ya no. Hace tiempo pretendía implementar Petunia de esta manera, pero asumimos que este modo generaría problemas y ralentizaciones en demasiadas aplicaciones. Por ello modificamos el funcionamiento interno y ahora todo el código 680x0 se emula a través de Petunia que a su vez carga via DOS.
La única excepción tiene lugar cuando un ejecutable se expulsa explícitmanete de la recompilación dinámica. En este caso el ejecutable es tratado con el emulador interpretativo.

Escuché que Petunia maneja la traducción examinando una lista blanca, que luego pasa a ser una lista negra. ¿Qué quiere decir?
La actual versión de prueba de Petunia traduce sólo los ejecutables que están permitidos explícitamente A esto le llamamos "lista blanca", tiene soporte del propio DOS y puede modificarse con un editor de texto.
En cuanto creamos que Petunia es lo suficientemente estable y que hemos corregido sus errores, entonces haré que la "lista blanca", pase a ser la "lista negra", en la que sólo los ejecutables incompatibles queden explícitamente excluídos de la traducción. La versión final de AmigaOS4 funcionará de este modo.

¿Por qué hay dos emuladores diferentes (interpretativo y recompilador dinámico) en el sistema?
El recompilador dinámico no es válido para situaciones especiales. Por ejemplo si no hay memoria suficiente para los bloques de código traducidos. Algunas aplicaciones no son compatibles por esto, y quedan excluídas de la recompilación dinámica.

¿Soportará Petunia Altivec en los PowerPC G4?
No veo la lógica en utilizar Altivec para la emulación. De todos modos veré si se podría utilizar alguna instrucción SIMD.

¿Y que hay acerca de los nuevos procesadores PowerPC que van a salir?
La plataforma PowerPC es una familia superescalar bien planeada y ofrece la posibilidad de girar hacia una implementación 64bits desde una de 32bits. Mientras los futuros Amiga utilicen procesadores PowerPC de 32bits, Petunia funcionará sin problemas.
La migración a procesadores PowerPC 64bit requiere reelaborar algunas partes, pero no es un gran problema.
Migrar a otro tipo de procesador que no sea compatible con el código máquina PowerPC no tiene sentido y es casi imposible, puesto que todo el código de la emulación está creado bajo ensamblador PowerPC y está fuertemente ligado a su arquitectura.

¿Qué diría del soporte para multiprocesadores simétricos?
No es ningún problema. Al ser una emulación basada en tareas cuenta con su propia fase de traducción. Siempre que el kernel y el administrador de tareas resuelvan el tema del reparto de recursos para cada tarea, Petunia se ejecutaría más rápido en un entorno multiprocesador. (La emulación de un ordenador completo o una máquina virtual en algunos casos no ganarían velocidad con multprocesadores simétricos, en este caso la emulación basada en tareas sería la más beneficiada. Ver más arriba: funcionamiento de la emulación.)

¿Tiene pensado implementar Petunia para procesadores Intel (o compatibles)?
No programa para chips Intel, lo intento evitar. Gracias por preguntar ....;)

¿Qué opina de AmigaOS4?
Bonito diseño e implementación. ¡ Buen trabajo chicos !. Aportaré algo más de velocidad con Petunia ...:)
¿Recuerda la transición de AOS1.3 a AOS2.0? AmigaOS4 supone un salto mucho más grande.

¿Tiene pensado compartir su trabajo con la gente de MorphOS?
No, MOS sigue su propio plan y es diferente a lo que yo busco. De todos modos ya tienen su propia solución.

Descargas.

Por ahora no.

Agradecimientos:

Quisiera agradecer a las siguientes personas su gran ayuda (directa o indirecta) en la conclusión de este proyecto (sin un orden en especial):

Thomas Frieden, Hans-Jörg Frieden, Colin Wenzel, Michael Sinz, Frank Wille, Steffen Häuser, Sam Jordan, Thomas Richter, Jochen Becher, Stephen Fellner, Csaba Simon, Ben Hermans, Timothy De Groote, Sven Ottemann, Ben Yoris, Konrad Bielski, Jörg Strohmayer, Adam Kowalczyk, Martin McKenzie, Bill Borsari, Nicolas Mendoza, Philippe "Elwood" Ferrucci, Viktor Varga, Péter "Jam" Markovits, Tamás Baldauf, Emeric/SpaceHawks, LouiSe, Artlace, Tibor Szakács, László "Ph03n1x" Török, Attila Bácskai, Róbert Márk Horváth, Blackie, Sau, Charlie/inQ, Víctor Gutiérrez, Andreas Loong

y

Csaba "UnReal" Kémeri por el logotipo del proyecto.

Contacto

Visite mi página web, ¡ aquí !

Página principal