Планирование выполнения инструкций для векторных процессоров с переменной длиной векторов Пантелеев Алексей Юрьевич Национальный исследовательский ядерный университет «МИФИ»
Векторные инструкции (SIMD) применяются во многих современных процессорах – MMX, SSE, AVX (X86) – AltiVec (PowerPC) – NEON (ARM) Повышают производительность – Явно параллельная обработка массивов данных Повышают энергоэффективность – Планирование выполнения одной инструкции вместо цикла Введение 2
Длина (размерность) векторов 3
Переменная длина векторов 4
Следующие инструкции используют результаты выполнения предыдущих C = A × B; E = C + D; Когда запускать следующую инструкцию? – Слишком ранний запуск приведет к функциональным ошибкам – Слишком поздний запуск приведет к потере производительности – Существуют простые решения для скалярных и фиксированных векторных инструкций Зависимые инструкции 5
Простейшее решение 6
Ранний запуск 7
Зацепление 8 Требует выполнения зависимых инструкций на разных функциональных устройствах. В данной работе не используется.
Одно функциональное устройство – Невозможно использовать зацепление – Поддерживает различные вычислительные операции – Запуск операции – 1 или 2 такта – Длинный конвейер – от 2 до 24 стадий Память: два порта чтения, один порт записи – Операции имеют до трех операндов (например, MAD) – Чтение операндов – от 1 до 3 тактов, зависит от расположения данных Переменная длина векторов Требуется высокая производительность Конкретная задача 9
Подготовить план чтения операндов заранее – «На первом такте прочитать операнд А с первого порта» и т.п. Рассчитать время запуска инструкции – Учесть различные планы для данной и предыдущих инструкций В нужное время выполнить план для всех векторных элементов последовательно Решение 10
Структурная схема планировщика 11
Основной блок планировщика Каждая запись в таблице: – Содержит конечный автомат и несколько регистров для расчета времени – Представляет одну инструкцию, находящуюся в конвейере – Может блокировать выполнение других инструкций, если есть неразрешенная RAW-зависимость Достаточно 4-8 записей, в зависимости от максимальной глубины конвейера и типичной длины векторов Таблица зависимостей 12
Пример расчета времени 13 CPE = Cycles Per Element для зависимых инструкций с разной скоростью выполнения
Простая тестовая программа: a = a + const; b = b + const; c = c + const; (NI операций) a = a + const; b = b + const; c = c + const; … Аналитический расчет времени выполнения: – T Overall = max (T Issue, T Latency, T Control, T Scoreboard ) – Подробные формулы приведены в печатном варианте доклада Экспериментальная производительность в 97% случаев отличается от теоретической не более чем на 3% Производительность 14
Производительность 15
Ускорение от раннего запуска 16
Представлен способ планирования инструкций для векторных процессоров с переменной длиной векторов: – Поддерживаются зависимые инструкции с разной скоростью выполнения и разной длиной конвейера – Применение раннего запуска повышает производительность на 10 – 90% при использовании коротких векторов Может применяться в сопроцессорах, предназначенных для быстрой обработки небольших вычислительных задач (например, при цифровой обработке сигналов) Заключение 17
Вопросы? Адрес для связи: Спасибо за внимание! 18