La inminente versión Emu68 v1.1 mejora significativamente el rendimiento del emulador m68k adaptado a CPUs AArch64. En esta primera parte se detallan dos innovaciones clave: una reorganización en la estructura de caché para las entradas JIT y el nuevo sistema de caché asociativo de reemplazo LRU de 4 vías.
En versiones anteriores, las entradas JIT se distribuían en un cache de 64 MB y se enlazaban mediante listas, lo que resultaba en múltiples accesos a memoria durante la búsqueda de coincidencias de dirección de PC. En v1.1, cada nodo JIT se ha reordenado: el “hot part”, con los punteros de lista, la dirección m68k y la dirección AArch64, ocupa ahora el inicio del nodo y cabe en una sola línea de caché L1. El “cold part”, con campos menos utilizados, y finalmente el código AArch64 completan la entrada. Este nuevo diseño facilita que, al recorrer los nodos, la entrada relevante se cargue de inmediato en la caché L1. Si la dirección coincide, Emu68 puede saltar directamente al código traducido, mejorando la eficiencia.
Para optimizar aún más la búsqueda, se ha reemplazado la estructura de lista por un cache asociativo de 4 vías con reemplazo LRU. Se utiliza una pequeña estructura con 32 «sets», cada uno con 4 «ways» que contienen solo la dirección clave (PC m68k) y la dirección traducida (AArch64). Las búsquedas consisten en comparar en paralelo estas cuatro entradas. Si no hay coincidencia, se recurre al hash table completo como respaldo. La inserción en el cache LRU se realiza con un pseudo-algoritmo LRU, usando instrucciones como CLZ (count-leading-zeros) para localizar la vía disponible de forma rápida y eficiente. Limitarlo a cuatro vías permite que todo el conjunto de candidatos quepan en una línea de caché L1, maximizando el rendimiento.
Los resultados prácticos son notables. Aplicaciones intensivas como RC5/72 y OGR-NG muestran un rendimiento de alrededor de 2050 MIPS en la misma cantidad de ciclos ARM, superando el 100 % de eficiencia. En comparación, la versión 1.0 alcanzaba unos 1800 MIPS. En videojuegos 3D clásicos como Quake 1, Quake 2 y Heretic 2, se observa un aumento significativo en los fotogramas por segundo. Por ejemplo, Quake 1 a 800×600 pasa de 36 FPS a 48 FPS con el mismo reloj, superando el rendimiento de la versión anterior incluso a velocidades overclockeadas de 2.2 GHz.
Emu68 v1.1 representa un paso adelante en el diseño de emuladores: mediante pequeñas pero estratégicas optimizaciones del layout de estructuras JIT y una integración eficiente de una caché LRU asociativa, consigue mejoras de rendimiento notables en aplicaciones reales. Este enfoque inteligente permite reducir drásticamente los costes de ciclo por instrucción traducida sin sacrificar precisión o compatibilidad.
La publicación adelanta que habrá una segunda parte dedicada a la misteriosa “dumpster” y una tercera con otras mejoras adicionales.

