Векторний процесор
Матеріал з Вікіпедії — вільної енциклопедії.
Векторний процесор — процесор, в якому операндами деяких команд можуть слугувати впорядковані масиви даних — вектори. Відрізняється від скалярних процесорів, які можуть працювати лише з одним оператором в одиницю часу. Абсолютна більшість процесорів є скалярними або близькими до них. Векторні процесори були розповсюджені в галузі наукових обчислень, де вони були основою більшості суперкомп'ютерів починаючи з 1980х і до 1990х. Але різке збільшення продуктивності і активна розробка нових процесорів призвели до того, що векторні процесори були витіснені зі сфери повсякденних процесорів.
В сучасних комп'ютерах як векторні співпроцесори можна розглядати:
- векторні розширення (3DNow!, SSE, AVX, ARM NEON) в сучасних центральних процесорах загального призначення.
- Обчислювальні блоки відеокарти
- Тензорні прискорювачі та прискорювачі ШІ
Для ілюстрації відмінностей в роботі векторного і скалярного процесора, розглянемо приклад додавання 10 чисел. При «звичайному» програмуванні використовується цикл, що бере пари чисел послідовно, і додає їх.
повторити цикл 10 разів прочитати наступну інструкцію та декодувати отримати перший доданок отримати другий доданок скласти зберегти результат кінець циклу
Для векторного процесора алгоритм буде значно відрізнятися:
отримати наступну інструкцію і декодувати отримати 10 перших доданків отримати 10 других доданків додати зберегти результат
Реалізація фірми Cray розширила можливості обчислень, що дозволило виконувати декілька різних операцій одразу. Наприклад, розглянемо код, що додає 2 набори чисел і помножує на третій, у Cray ці операції здійснились би так:
отримати наступну інструкцію і декодувати отримати 10 чисел отримати 10 чисел отримати 10 чисел додати і помножити їх зберегти результат
Таким чином, математичні операції виконуються значно швидше, основним фактором, що обмежує стає час необхідний для добуття даних з пам'яті.
Архітектура | |
---|---|
Архітектура системи команд | |
Розрядність | |
Виконання інструкцій |
|
Паралельні обчислення | |
Багатонитевість | |
Таксономія Флінна | |
Типи | |
Складові |
|
Управління живленням[en] |
|
Загальне | |
---|---|
Рівні паралелізму | |
Нитки | Super-threading · Hyper-threading |
Теорія | Закон Амдала · Закон Густавсона — Барсіса · Цінова ефективність · Метрика Карпа-Флатта · Паралельне сповільнення · Прискорення |
Елементи | |
Координація | |
Програмування | |
Апаратне забезпечення | Багатопроцесорність (Симетрична · Асиметрична) · Пам'ять (NUMA · COMA · distributed · shared · distributed shared) · SMT Масово-паралельна архітектура · Суперскалярність · Векторний процесор · Суперкомп'ютер · Beowulf |
API | POSIX Threads · OpenMP · MPI · OpenACC · UPC · Intel Threading Building Blocks · Boost.Thread · Global Arrays · Charm++ · Cilk |
Проблеми | Приголомшлива паралельність · Великий Виклик · Програмне блокування · Масштабовність · Стан гонитви · Взаємне блокування · Детермінований алгоритм |
Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |
Це незавершена стаття про апаратне забезпечення. Ви можете допомогти проєкту, виправивши або дописавши її. |
Text is available under the CC BY-SA 4.0 license; additional terms may apply.
Images, videos and audio are available under their respective licenses.