Планирование инструкций

Планирование инструкций Планирование команд в информатике Оптимизация компилятора для улучшения параллелизма и производительности.  Избегает сбоев в конвейере команд, изменяя порядок […]

Планирование инструкций

  • Планирование команд в информатике

    • Оптимизация компилятора для улучшения параллелизма и производительности. 
    • Избегает сбоев в конвейере команд, изменяя порядок инструкций. 
    • Избегает незаконных и семантически неоднозначных операций. 
  • Сбои в конвейере и зависимости данных

    • Сбои могут быть вызваны структурными, данными и управлением проблемами. 
    • Зависимости данных определяют порядок выполнения инструкций. 
    • Существуют три типа зависимостей: чтение после записи, запись после чтения и запись после записи. 
    • Чтение за чтением не ограничивает порядок выполнения, но полезно для скалярной замены элементов массива. 
  • Графы зависимостей и топологическая сортировка

    • Граф зависимостей представляет собой ориентированный ациклический граф. 
    • Топологическая сортировка — это алгоритм для построения допустимого расписания команд. 
    • Задержка зависимости — это количество тактовых циклов, необходимых для выполнения команды без сбоев. 
  • Алгоритмы и эвристики планирования

    • Используются эвристики для прогнозирования и повышения приоритета кандидатов на планирование. 
    • Планирование может выполняться до или после выделения регистров, с преимуществами и недостатками каждого подхода. 
  • Типы планирования команд

    • Локальное планирование ограничивает перемещение инструкций базовым блоком. 
    • Глобальное планирование позволяет перемещать инструкции за пределы блоков. 
    • Планирование по модулю чередует итерации внутреннего цикла для повышения параллелизма. 
    • Планирование трассировки оптимизирует путь потока управления, выполняемый чаще всего. 
    • Планирование суперблоков упрощает работу генератора кода, не объединяя пути потока управления на «боковых входах» трассировки. 
  • Примеры компиляторов и источники информации

    • GCC и LLVM предоставляют информацию о задержках и использовании портов для планирования команд. 
    • Агнер Фог и InstLatx64 собирают данные для архитектуры x86. 
    • LLVM-exegesis предоставляет информацию о процессорах, отличных от x86. 
  • Рекомендации и дальнейшее чтение

    • Упоминаются дополнительные темы, такие как предикация ветви, генерация кода и управление процессом выполнения. 

Полный текст статьи:

Планирование инструкций — Википедия

Оставьте комментарий

Прокрутить вверх