ScholarGate
Ассистент

SIMD и векторные процессоры

SIMD и векторные процессоры используют параллелизм на уровне данных, применяя одну инструкцию ко многим элементам данных одновременно, что ускоряет регулярные, повторяющиеся вычисления, такие как мультимедийные, научные и машинные ядра.

Найти тему в PaperMindСкороFind papers & topics
Tools & resources
Скачать слайды
Learn & explore
ВидеоСкоро

Definition

SIMD (single-instruction multiple-data — одна инструкция — множество данных) и векторная обработка — это архитектурные методы, при которых одна инструкция одновременно выполняет одну и ту же операцию над несколькими элементами данных, хранящимися в широких векторных регистрах или SIMD-каналах, используя параллелизм на уровне данных.

Scope

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

Core questions

  • Как применение одной инструкции ко многим элементам данных обеспечивает параллельное ускорение?
  • Чем векторные процессоры отличаются от SIMD-расширений в коммерческих ЦП?
  • Как обрабатываются условные операции с помощью маскирования и предикации?
  • Какие виды вычислений получают наибольшую выгоду от параллельного выполнения данных?

Key concepts

  • одна инструкция — множество данных (SIMD)
  • векторные регистры и каналы
  • длина вектора и strip mining
  • маскирование и предикация
  • gather/scatter
  • SIMD-расширения ЦП
  • параллелизм на уровне данных
  • выполнение, ориентированное на пропускную способность

Key theories

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

Mechanisms

Векторный процессор хранит массивы элементов в векторных регистрах и обрабатывает их через конвейерные или реплицированные функциональные блоки, при этом одна инструкция задает операцию над всем вектором; длинные векторы обрабатываются частями (strip mining). SIMD-расширения в ЦП предоставляют регистры фиксированной ширины, работающие поэлементно. Маскирование позволяет выполнять условные операции для каждого элемента, а операции gather/scatter обрабатывают несмежный доступ к памяти.

Clinical relevance

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

History

Векторная обработка была впервые применена в суперкомпьютерах, таких как CDC STAR-100 и особенно Cray-1 в 1970-х годах. Параллелизм данных вновь появился в коммерческих ЦП благодаря SIMD-расширениям (MMX, SSE, AVX, NEON) с конца 1990-х годов, а масштабируемые векторные расширения и возрождение плотных численных рабочих нагрузок возобновили интерес к векторным архитектурам.

Key figures

  • Seymour Cray
  • Michael J. Flynn
  • John L. Hennessy
  • David A. Patterson

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

В чем разница между SIMD-расширениями и векторным процессором?
SIMD-расширения добавляют регистры фиксированной ширины (например, 128 или 256 бит) к обычному ЦП, работая с заданным числом элементов за инструкцию. Векторный процессор построен на векторных регистрах и инструкциях, которые оперируют длинными, часто переменной длины векторами, как правило, через глубоко конвейерные каналы.
Почему не все программы получают выгоду от SIMD?
SIMD ускоряет вычисления, которые применяют одну и ту же операцию ко многим независимым элементам данных с регулярным доступом к памяти. Программы, в которых преобладают ветвления, нерегулярные зависимости данных или разрозненный доступ к памяти, получают мало выгоды, потому что параллельные каналы не могут быть эффективно загружены.

Methods for this concept

Related concepts