Статический и динамический подходы к преобразованию косвенных переходов - Черноног, В.В.; Дьячков, И.Л.; Добров, А.Д. (Современные информационные технологии и IT-образование, 2023)
С ростом популярности модульной парадигмы программирования количество косвенных переходов в продуцируемом коде значительно возросло. Аппаратные способы уменьшить задержки, связанные с такими переходами, требуют сложной логики непосредственно на кристалле, которую зачастую невыгодно реализовывать из-за дополнительного энергопотребления процессора. Существующие в компиляторе GCC-подходы преобразования косвенных переходов позволяют существенно увеличить производительность программ, однако без сбора статистики и перекомпиляции кода все еще остается большое количество непреобразованных переходов, которые приводят к уменьшению производительности программ. В этой статьи предлагается два метода повышения производительности, связанных с оптимизацией косвенных переходов. Статический метод позволяет расширить существующие оптимизационные возможности компилятора. Динамический метод является новым подходом подстановки целевых адресов переходов во время выполнения программы. Наше исследование показывает, что эти подходы способны увеличить производительность отдельных участков программ, содержащих косвенные переходы, до 2,3 раза. Применение статического метода позволило улучшить производительность отдельных тестов из пакета CPUBench на 15 % при увеличении затраченного на компиляцию времени не более чем на 1 %.