Emu68 v1.1: Más novedades
El desarrollador Michal Schulz continúa detallando las novedades de Emu68 v1.1, centradas esta vez en la gestión de la caché y en un nuevo mecanismo llamado Dumpster, diseñado para mejorar de forma notable el rendimiento en escenarios donde las frecuentes limpiezas de caché penalizaban la velocidad.
En versiones anteriores, cada vez que AmigaOS ejecutaba un LoadSeg —acción habitual en cada arranque del sistema o al cargar nuevos programas—, la caché de instrucciones se vaciaba y Emu68 se veía obligado a recompilar los bloques JIT desde cero. Aunque en el uso normal este impacto era asumible, el problema se agravaba con la emulación de MacOS mediante ShapeShifter o Fusion, ya que este sistema operativo fuerza decenas de limpiezas por segundo. El resultado: lentitud generalizada y una experiencia inferior incluso a la de aceleradoras clásicas 68040 o 68060.
Schulz observó que, en la mayoría de los casos, la memoria no cambia tras un vaciado de caché. De ahí surgió la idea de no descartar los bloques compilados, sino almacenarlos temporalmente en un “contenedor” (Dumpster) junto con un checksum CRC32 de la zona de memoria asociada. Si el contenido permanece inalterado, el bloque puede reutilizarse sin necesidad de recompilación, recuperándose en apenas microsegundos.
La primera aproximación utilizaba una segunda tabla hash, pero implicaba recortes en el tamaño de la caché y mayores colisiones, lo que reducía la velocidad en otros contextos. Finalmente, la solución definitiva llegó con la introducción del concepto de Epoch: un contador global que marca la validez temporal de los bloques JIT.
- Cuando se vacía la caché, basta con incrementar el valor de Epoch.
- Cada bloque JIT conserva un número de Epoch asociado.
- Si su checksum es válido y el Epoch coincide con el actual, puede reutilizarse de inmediato.
- El uso combinado del hash table y la caché LRU garantiza búsquedas más rápidas y eficientes.
Este sistema evita movimientos de datos innecesarios, mantiene la tabla hash en su tamaño completo y reduce drásticamente la pérdida de rendimiento en situaciones críticas como la emulación de MacOS.
Con estas mejoras, AmigaOS y MacOS arrancan de forma significativamente más rápida y la utilización de la caché JIT es mucho más eficiente. Además, el nuevo enfoque libera un núcleo extra de la Raspberry Pi para futuros proyectos, como la posible emulación de PowerPC dentro del mismo entorno.
Aunque el Dumpster todavía está en fase de refinamiento, las pruebas iniciales no muestran efectos adversos y confirman un avance importante en la experiencia de usuario con Emu68. De hecho, MacOS 7.5 ya puede iniciarse en apenas unos segundos, un hito impensable en versiones previas.
https://www.youtube.com/watch?v=JNZGNLweUyQ
#amigaos #arranqueRápido #caché #CRC32 #Dumpster #Emu68V11 #emulación #Epoch #Fusion #hashTable #jit #LoadSeg #LRUCache #macos #MichalSchulz #powerpc #raspberryPi #recompilación #rendimiento #ShapeShifter