Un método de traducción binaria dinámica y estática basado en la predicción de ramas
Autores: Sun, Lianshan; Wu, Yanjin; Li, Linxiangyi; Zhang, Changbin; Tang, Jingyan
Idioma: Inglés
Editor: MDPI
Año: 2023
Acceso abierto
Artículo científico
2023
Un método de traducción binaria dinámica y estática basado en la predicción de ramas
Categoría
Ingeniería y Tecnología
Subcategoría
Ingeniería Eléctrica y Electrónica
Palabras clave
Traducción binaria
Traducción binaria dinámica-estática
Predicción de ramas
QEMU
Bloques de traducción
Rendimiento
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 52
Citaciones: Sin citaciones
La traducción binaria es una técnica importante para lograr la migración de software entre arquitecturas cruzadas. Sin embargo, los marcos de traducción binaria dinámica principales, como QEMU, a menudo generan una gran cantidad de código redundante, lo que degrada la eficiencia del código objetivo. Por ello, proponemos un método de traducción binaria dinámico-estático basado en la predicción de ramas. Identifica primero partes de bloques de traducción siguiendo técnicas estáticas de predicción de ramas. Luego traduce estos bloques de traducción en bloques de código nativo menos redundantes mediante algoritmos de traducción estática canónica. Finalmente, ejecuta todos los bloques de código que son traducidos ya sea estática o dinámicamente manteniendo y cambiando correctamente sus contextos de ejecución. Para entrelazar correctamente las dos tipos de actividades de traducción, el método propuesto solo traduce el siguiente bloque de traducción que es independiente de datos del actual mediante el algoritmo de análisis de variables activas, y registra y comparte los estados intermedios de las actividades de traducción dinámica y estática a través de una estructura de datos cuidadosamente diseñada. En particular, se propone un mecanismo de recuperación de contexto basado en registros sombra para registrar correctamente el contexto de ejecución de bloques de traducción estáticos, y para recuperar correctamente el contexto para traducir y ejecutar dinámicamente bloques que no fueron traducidos estáticamente. También diseñamos un mecanismo de optimización de memoria adaptativa para liberar dinámicamente la memoria de los bloques de traducción mal predichos. Implementamos un marco de traducción binaria dinámico-estático mediante la extensión de QEMU, llamado BP-QEMU (QEMU con predicción de ramas). Evaluamos la corrección de la traducción de BP-QEMU utilizando los programas de prueba para los conjuntos de instrucciones ARM y PPC de QEMU, y evaluamos el rendimiento de BP-QEMU utilizando el código de referencia CoreMark. Los resultados experimentales muestran que BP-QEMU puede traducir las instrucciones de las arquitecturas ARM y PPC correctamente; además, la eficiencia de ejecución promedio del código CoreMark en BP-QEMU mejora en un 13.3% en comparación con la de QEMU.
Descripción
La traducción binaria es una técnica importante para lograr la migración de software entre arquitecturas cruzadas. Sin embargo, los marcos de traducción binaria dinámica principales, como QEMU, a menudo generan una gran cantidad de código redundante, lo que degrada la eficiencia del código objetivo. Por ello, proponemos un método de traducción binaria dinámico-estático basado en la predicción de ramas. Identifica primero partes de bloques de traducción siguiendo técnicas estáticas de predicción de ramas. Luego traduce estos bloques de traducción en bloques de código nativo menos redundantes mediante algoritmos de traducción estática canónica. Finalmente, ejecuta todos los bloques de código que son traducidos ya sea estática o dinámicamente manteniendo y cambiando correctamente sus contextos de ejecución. Para entrelazar correctamente las dos tipos de actividades de traducción, el método propuesto solo traduce el siguiente bloque de traducción que es independiente de datos del actual mediante el algoritmo de análisis de variables activas, y registra y comparte los estados intermedios de las actividades de traducción dinámica y estática a través de una estructura de datos cuidadosamente diseñada. En particular, se propone un mecanismo de recuperación de contexto basado en registros sombra para registrar correctamente el contexto de ejecución de bloques de traducción estáticos, y para recuperar correctamente el contexto para traducir y ejecutar dinámicamente bloques que no fueron traducidos estáticamente. También diseñamos un mecanismo de optimización de memoria adaptativa para liberar dinámicamente la memoria de los bloques de traducción mal predichos. Implementamos un marco de traducción binaria dinámico-estático mediante la extensión de QEMU, llamado BP-QEMU (QEMU con predicción de ramas). Evaluamos la corrección de la traducción de BP-QEMU utilizando los programas de prueba para los conjuntos de instrucciones ARM y PPC de QEMU, y evaluamos el rendimiento de BP-QEMU utilizando el código de referencia CoreMark. Los resultados experimentales muestran que BP-QEMU puede traducir las instrucciones de las arquitecturas ARM y PPC correctamente; además, la eficiencia de ejecución promedio del código CoreMark en BP-QEMU mejora en un 13.3% en comparación con la de QEMU.