SIMD
| Одиночный поток команд (single instruction) | Множество потоков команд (multiple instruction) | |
|---|---|---|
| Одиночный поток данных (single data) | SISD (ОКОД) | MISD (МКОД) |
| Множество потоков данных (multiple data) | SIMD (ОКМД) | MIMD (МКМД) |

SIMD (англ. single instruction, multiple data —одиночный поток команд, множественный поток данных,ОКМД) — принцип компьютерных вычислений, позволяющий обеспечитьпараллелизм на уровнеданных. Один изклассов вычислительных систем вклассификации Флинна.
SIMD-компьютеры состоят из одного командногопроцессора (управляющего модуля), называемого контроллером, и нескольких модулей обработки данных, называемых процессорными элементами. Управляющий модуль принимает, анализирует и выполняет команды. Если в команде встречаются данные, контроллер рассылает на все процессорные элементы команду, и эта команда выполняется на нескольких или на всех процессорных элементах. Каждый процессорный элемент имеет свою собственную память для хранения данных. Одним из преимуществ данной архитектуры считается то, что в этом случае более эффективно реализована логика вычислений. До половины логических инструкций обычного процессора связано с управлением выполнением машинных команд, а остальная их часть относится к работе с внутренней памятью процессора и выполнениюарифметических операций. В SIMD-компьютере управление выполняется контроллером, а «арифметика» отдана процессорным элементам.
Векторные процессоры также использовали принцип SIMD, одной командой могли обрабатываться векторы размером до нескольких тысяч элементов.
SIMD-расширения различных архитектур
[править |править код]Короткие SIMD инструкции (64 или 128 бит) стали появляться в процессорах общего назначения в 1990-х годах. В разной степени следующие процессорные архитектуры поддерживают SIMD-расширения или SIMD-инструкции:
- DEC Alpha — Motion Video Instructions (MVI)
- IBMPowerPC:AltiVec,SPE
- HP'sPA-RISCMultimedia Acceleration eXtensions (MAX)
- Intel:MMX, iwMMXt,SSE,SSE2,SSE3,SSSE3,SSE4.x,AVX,AVX2
- AMD:3DNow!
- ARC: ARC Video subsystem
- SPARC:VIS, VIS2
- Sun:MAJC
- ARM:NEON
- MIPS:MDMX (MaDMaX),MIPS-3D
- RISC-V: P-extension
Группа из IBM, Sony, Toshiba совместно разработала для процессораCell Processor сопроцессорSPU, набор команд которого в значительной степени использовал SIMD. NXP (Philips) разработала несколько SIMD-процессоровXetal, в котором имелось 320 процессорных элементов, работавших с 16-битными данными.
Современные видеоускорители (GPU) обычно основаны на SIMD-архитектуре с поддержкой векторов длины 128, 256 или более бит.
РасширениеAdvanced Vector Extensions компании Intel предоставляет набор SIMD-инструкций для обработкиданных в формате с плавающей запятой в группах длиной 256 бит.СопроцессорыIntel MIC включают в себя 512-битный набор инструкций.
x86-совместимые процессоры
[править |править код]- MMX (англ.Multimedia Extensions) — коммерческое название набора SIMD-командIntel, предназначенного для ускорения кодирования/декодирования аудио- и видеоданных и впервые представленного 8 января 1997 года в процессорахIntel Pentium MMX.
- MMX Extended — расширенный набор команд MMX, используемый в процессорахAMD иCyrix.
- 3DNow! — расширение набора команд MMX процессоров AMD, начиная сAMD K6-2.
- 3DNow! Extended — расширение набора команд 3DNow! процессоров AMD, начиная сAMD Athlon.
- SSE (англ.Streaming SIMD Extensions) — набор 128-битных SIMD-команд Intel, впервые представленный в процессорах серииIntel Pentium III.
- SSE2 — вторая версия набора SSE-команд Intel, впервые представленная в процессорах серииIntel Pentium 4.
- SSE3 — третья версия набора SSE-команд Intel, впервые представленная 2 февраля 2004 года в процессорах Intel Pentium 4 на ядреPrescott.
- SSSE3 — четвертая версия набора SSE-команд Intel, используемая в процессорахIntel Core 2 Duo.
- SSE4 — пятая версия набора SSE-команд Intel, анонсированная 27 сентября 2006 года и представленная в 2007 году в процессорах архитектурыPenryn.
- AVX (англ.Advanced Vector Extensions) — набор 256-битных SIMD-команд Intel, впервые представленный в 2010 году в процессорах архитектурыSandy Bridge.
- AVX2
- AVX512 — расширение системы команд при помощи кодировки с префиксом EVEX.
См. также
[править |править код]- Таксономия Флинна
- Система команд
- Список систем команд
- Архитектура набора команд
- Расширения архитектуры x86