SIMD

Класифікація за Флинну
Одиночний потік команд
(Single Instruction)
Безліч потоків команд
(Multiple Instruction)
Одиночний потік даних
(Single Data)
SISD
(ОКОД)
MISD
(МКОД)
Безліч потоків даних
(Multiple Data)
SIMD
(ОКМД)
MIMD
(МКМД)

SIMD ( англ. single instruction, multiple data - Одиночний потік команд, множинний потік даних, ОКМД) - принцип комп'ютерних обчислень, що дозволяє забезпечити паралелізм на рівні даних.

SIMD-комп'ютери складаються з одного командного процесора (керуючого модуля), званого контролером, і декількох модулів обробки даних, званих процесорними елементами. Керуючий модуль приймає, аналізує і виконує команди. Якщо в команді зустрічаються дані, контролер розсилає на всі процесорні елементи команду, і ця команда виконується на декількох або на всіх процесорних елементах. Кожен процесорний елемент має свою власну пам'ять для зберігання даних. Однією з переваг даної архітектури вважається те, що в цьому випадку більш ефективно реалізована логіка обчислень. До половини логічних інструкцій звичайного процесора пов'язано з управлінням виконанням машинних команд, а інша їхня частина ставиться до роботи з внутрішньою пам'яттю процесора і виконання арифметичних операцій. У SIMD комп'ютері управління виконується контролером, а "арифметика" віддана процесорним елементам.

Векторні процесори також використовували принцип SIMD, однією командою могли оброблятися вектори розміром до декількох тисяч елементів.

SIMD.svg

SIMD-розширення різних архітектур

Короткі SIMD інструкції (64 або 128 біт) стали з'являтися в процесорах загального призначення в 1990-их роках. У різному ступені наступні процесорні архітектури поддержівют SIMD-розширення або SIMD-інструкції:

Група з IBM, Sony, Toshiba спільно розробила для процесора Cell Processor співпроцесор SPU, набір команд якого в значній мірі використав SIMD. NXP (Philips) розробила кілька SIMD процесорів Xetal, в якому малося 320 процесорних елементів, що працювали з 16 бітними даними.

Сучасні відеоприскорювачі ( GPU) звичайно засновані на SIMD-архітектурі з підтримкою векторів довжини 128, 256 або більше біт.

Розширення AVX компанії Intel надає набір SIMD-інструкцій для обробки даних у форматі з плаваючою комою в групах довжиною 256 біт. Співпроцесори Intel MIC включають в себе 512-бітний набір інструкцій.


x86 -сумісні процесори

  • MMX - Multimedia Extensions. Комерційна назва додаткового набору інструкцій, що виконують характерні для процесів кодування / декодування потокових аудіо / відео даних дії за одну машинну інструкцію. Вперше з'явився в процесорах Pentium MMX.
  • MMX Extended - розширений набір інструкцій MMX, використовуваний в процесорах AMD і Cyrix.
  • 3DNow! - розширення набору команд MMX процесорів AMD, починаючи з AMD K6-2.
  • 3DNow!Extended - розширення набору команд 3DNow! процесорів AMD, починаючи з AMD Athlon.
  • SSE - набір інструкцій, розроблений Intel, і вперше представлений в процесорах серії Pentium III
  • SSE2 - набір інструкцій, розроблений Intel, і вперше представлений в процесорах серії Pentium 4.
  • SSE3 - третя версія SIMD-розширення Intel, нащадок SSE, SSE2 і x87. Представлений 2 лютого 2004 в ядрі Prescott процесора Pentium 4.
  • SSSE3 - набір SIMD-інструкцій, використовуваний в процесорах Intel Core 2 Duo.
  • SSE4 - нова версія SIMD-розширення Intel. Анонсовано 27 вересня 2006. Представлений в 2007 в процесорах серії Penryn.
  • AVX - анонсована версія SIMD-розширення Intel, яка представлена ​​в 2010 в процесорах архітектури Sandy Bridge.



Набори розширення базових інструкцій процесорів сімейства x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES
Перегляд цього шаблону Технології цифрових процесорів
Архітектура

CISC EDGE EPIC MISC URISC RISC VLIW ZISC Фон Неймана Гарвардська

8 біт 16 біт 32 біт 64 біт 128 біт
Паралелізм
Pipeline Конвеєр Позачергове і почергове виконання Перейменування регістрів Спекулятивне виконання
Рівні Біт Інструкцій Суперскалярної Даних Завдань
Потоки Багатопоточність Simultaneous multithreading Hyperthreading Superthreading Апаратна віртуалізація
Класифікація Флінна SISD SIMD MISD MIMD
Реалізації DSP GPU SoC PPU Векторний процесор Математичний співпроцесор Мікропроцесор Мікроконтролер
Компоненти Barrel shifter FPU BSB MMU TLB Регістровий файл control unit АЛУ Демультиплексор Мультиплексор Мікрокод Тактова частота Корпус Регістри Кеш ( Кеш процесора)
Управління харчуванням APM ACPI Clock gating Динамічна зміна частоти Динамічна зміна напруги