Cómo las CPUs modernas predicen eficientemente los bucles de los intérpretes de bytecode

2025-07-05

Al investigar el rendimiento de un nuevo intérprete de Python, el autor descubrió que las CPUs modernas pueden predecir eficientemente los saltos indirectos dentro de los bucles de los intérpretes de bytecode. Esto se logra mediante predictores de bifurcación avanzados como TAGE e ITTAGE. Estos predictores asignan el contador de programa (PC) y su historial al comportamiento de ejecución pasado, utilizando varias tablas con longitudes de historial que aumentan geométricamente para elegir dinámicamente la mejor predicción. El autor explora la aplicación de los principios de ITTAGE a la fuzzing guiada por cobertura y a la exploración del estado del programa, sugiriendo que esto podría conducir a una mejor comprensión y exploración de los intérpretes y programas similares.

Leer más

Aumento del Rendimiento de CPython: Una Historia de Giros Inesperados y Regresiones de LLVM

2025-03-10

Una fusión reciente de CPython introdujo una nueva implementación del intérprete de bytecode, mostrando inicialmente impresionantes mejoras de rendimiento del 10-15% en varios benchmarks. Sin embargo, esta mejora provino de la circunvalación inadvertida de una regresión de LLVM 19. Al compararse con una línea de base mejor (como GCC o LLVM 19 ajustado), el aumento de rendimiento real se reduce a solo 1-5%. Semanas de compilación, benchmarking y desensamblaje revelaron que las limitaciones de LLVM 19 en la duplicación de llamadas de cola causaron la regresión. Si bien el intérprete de llamadas de cola es una mejora valiosa, este incidente destaca los desafíos en el benchmarking, la ingeniería de rendimiento y la ingeniería de software, como la dificultad para elegir líneas de base y comprender las complejidades de las optimizaciones del compilador.

Leer más
Desarrollo