Планирование трассировки - Trace scheduling

Планирование трассировки является оптимизация техника, разработанная Джош Фишер используется в компиляторы за компьютерные программы.[1]

Компилятор часто может перестановка это сгенерировано машинные инструкции для более быстрого выполнения улучшите производительность программы. Увеличивает ILP (Параллелизм на уровне инструкций ) вдоль важного пути выполнения путем статического прогнозирования частого пути выполнения. Планирование трассировки - один из многих известных методов для этого.

Трассировка - это последовательность инструкций, включая ветви, но не включая циклы, которая выполняется для некоторых входных данных. Планирование трассировки использует базовый метод планирования блоков для планирования выполнения инструкций на каждой трассе, начиная с трассы с наивысшей частотой. Затем он добавляет код компенсации на входе и выходе каждой трассы, чтобы компенсировать любые эффекты, которые могло иметь исполнение вне очереди.

Это может привести к значительному увеличению размеров кода и плохой или нестабильной производительности, если поведение программы значительно зависит от ввода.

Планирование трассировки изначально было разработано для очень длинного командного слова или VLIW машин, и представляет собой форму глобального движения кода. Он работает путем преобразования цикла в длинную прямолинейную кодовую последовательность с использованием разворачивание петли и статический предсказание ветвления. Этот процесс отделяет «маловероятный» код и добавляет обработчики выходов из трассировки. Цель состоит в том, чтобы наиболее распространенный случай выполнялся как последовательный набор инструкций без ветвей.

Смотрите также

Рекомендации

  1. ^ Стивен Мучник; Muchnick and Associates (15 августа 1997 г.). Расширенная реализация проекта компилятора. Морган Кауфманн. ISBN  978-1-55860-320-2. Планирование трассировки.