180 likes | 345 Views
Планирование выполнения инструкций для векторных процессоров с переменной длиной векторов. Пантелеев Але к сей Юрьевич. Национальный исследовательский ядерный университет «МИФИ». Введение. Векторные инструкции ( SIMD) применяются во многих современных процессорах MMX, SSE, AVX (X86)
E N D
Планирование выполнения инструкций для векторных процессоров с переменной длиной векторов Пантелеев Алексей Юрьевич Национальный исследовательский ядерный университет «МИФИ»
Введение • Векторные инструкции (SIMD) применяются во многих современных процессорах • MMX, SSE, AVX (X86) • AltiVec (PowerPC) • NEON (ARM) • Повышают производительность • Явно параллельная обработка массивов данных • Повышают энергоэффективность • Планирование выполнения одной инструкции вместо цикла
Зависимые инструкции • Следующие инструкции используют результаты выполнения предыдущих C = A × B; E = C + D; • Когда запускать следующую инструкцию? • Слишком ранний запуск приведет к функциональным ошибкам • Слишком поздний запуск приведет к потере производительности • Существуют простые решения для скалярных и фиксированных векторных инструкций
Зацепление Требует выполнения зависимых инструкций на разных функциональных устройствах. В данной работе не используется.
Конкретная задача • Одно функциональное устройство • Невозможно использовать зацепление • Поддерживает различные вычислительные операции • Запуск операции – 1 или 2 такта • Длинный конвейер – от 2 до 24 стадий • Память: два порта чтения, один порт записи • Операции имеют до трех операндов (например, MAD) • Чтение операндов – от 1 до 3 тактов, зависит от расположения данных • Переменная длина векторов • Требуется высокая производительность
Решение • Подготовить план чтения операндов заранее • «На первом такте прочитать операнд А с первого порта» и т.п. • Рассчитать время запуска инструкции • Учесть различные планы для данной и предыдущих инструкций • В нужное время выполнить план для всех векторных элементов последовательно
Таблица зависимостей • Основной блок планировщика • Каждая запись в таблице: • Содержит конечный автомат и несколько регистров для расчета времени • Представляет одну инструкцию, находящуюся в конвейере • Может блокировать выполнение других инструкций, если есть неразрешенная RAW-зависимость • Достаточно 4-8 записей, в зависимости от максимальной глубины конвейера и типичной длины векторов
Пример расчета времени для зависимых инструкций с разной скоростью выполнения “CPE” = Cycles Per Element
Производительность • Простая тестовая программа: a = a + const; b = b + const; c = c + const; (“NI” операций) a = a + const; b = b + const; c = c + const; … • Аналитический расчет времени выполнения: • TOverall = max (TIssue, TLatency, TControl, TScoreboard) • Подробные формулы приведены в печатном варианте доклада • Экспериментальная производительность в 97% случаев отличается от теоретической не более чем на 3%
Заключение • Представлен способ планирования инструкций для векторных процессоров с переменной длиной векторов: • Поддерживаются зависимые инструкции с разной скоростью выполнения и разной длиной конвейера • Применение раннего запуска повышает производительность на 10 – 90% при использовании коротких векторов • Может применяться в сопроцессорах, предназначенных для быстрой обработки небольших вычислительных задач (например, при цифровой обработке сигналов)
Спасибо за внимание! • Вопросы? • Адрес для связи: apanteleev87@gmail.com