WikiDer > Планирование трассировки

Trace scheduling

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

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

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

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

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

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

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

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