Таксономия Флинна - это классификация компьютерных архитектур , предложенная Майклом Дж. Флинном в 1966 году. [1] [2] Система классификации прижилась и использовалась в качестве инструмента при проектировании современных процессоров и их функций. С появлением многопроцессорных центральных процессоров (ЦП) контекст мультипрограммирования развился как расширение системы классификации.
Классификации
Четыре классификации, определенные Флинном, основаны на количестве параллельных потоков инструкций (или управления) и потоков данных, доступных в архитектуре. [3]
Одиночный поток инструкций, одиночный поток данных (SISD)
Последовательный компьютер, не использующий параллелизм ни в потоках команд, ни в потоках данных. Одиночный блок управления (CU) извлекает единый поток инструкций (IS) из памяти. Затем CU генерирует соответствующие управляющие сигналы, чтобы указать одному элементу обработки (PE) работать с одним потоком данных (DS), т. Е. По одной операции за раз.
Примерами архитектуры SISD являются традиционные однопроцессорные машины, такие как старые персональные компьютеры (ПК; к 2010 году многие ПК имели несколько ядер) и мэйнфреймы .
Один поток инструкций, несколько потоков данных (SIMD)
Одна инструкция работает с несколькими разными потоками данных. Инструкции могут выполняться последовательно, например, путем конвейерной обработки, или параллельно несколькими функциональными модулями.
Одна инструкция, несколько потоков (SIMT) - это модель выполнения, используемая в параллельных вычислениях, где одна инструкция, несколько данных (SIMD) сочетается с многопоточностью . Это не отдельная классификация в таксономии Флинна, где это было бы подмножеством SIMD. Nvidia обычно использует этот термин в своих маркетинговых материалах и технических документах, где аргументирует новизну архитектуры Nvidia. [4]
Несколько потоков инструкций, один поток данных (MISD)
Несколько инструкций работают с одним потоком данных. Это необычная архитектура, которая обычно используется для обеспечения отказоустойчивости. Гетерогенные системы работают с одним и тем же потоком данных и должны согласовывать результат. Примеры включают компьютер управления полетом Space Shuttle . [5]
Несколько потоков инструкций, несколько потоков данных (MIMD)
Несколько автономных процессоров одновременно выполняют разные инструкции с разными данными. Архитектуры MIMD включают многоядерные суперскалярные процессоры и распределенные системы , использующие либо одно пространство общей памяти, либо пространство распределенной памяти.
Схема сравнения классификаций
Эти четыре архитектуры визуально показаны ниже. Каждый процессор (PU) показан для одноядерного или многоядерного компьютера:
Дальнейшие подразделения
По состоянию на 2006 г.[Обновить]все суперкомпьютеры первой десятки и большая часть суперкомпьютеров TOP500 основаны на архитектуре MIMD.
Некоторые делят категорию MIMD на две категории ниже, [6] [7] [8] [9] [10], и иногда рассматриваются даже дополнительные подразделения. [11]
Одна программа, несколько потоков данных (SPMD)
Несколько автономных процессоров, одновременно выполняющих одну и ту же программу (но в независимых точках, а не в блокировке, которую накладывает SIMD) с разными данными. Также называется « один процесс, несколько данных» [10] - использование этой терминологии для SPMD технически некорректно, поскольку SPMD является моделью параллельного выполнения и предполагает, что несколько взаимодействующих процессоров выполняют программу. SPMD - наиболее распространенный стиль параллельного программирования. [12] Модель и термин SPMD были предложены Фредерикой Даремой из команды RP3. [13]
Несколько программ, несколько потоков данных (MPMD)
Несколько автономных процессоров одновременно работают как минимум с 2 независимыми программами. Обычно такие системы выбирают один узел в качестве «хоста» («явная модель программирования хост / узел») или «менеджера» (стратегия «менеджер / рабочий»), который запускает одну программу, которая передает данные всем остальным узлам. которые все запускают вторую программу. Затем эти другие узлы возвращают свои результаты непосредственно менеджеру. Примером этого может быть игровая консоль Sony PlayStation 3 с процессором SPU / PPU .
Смотрите также
- Таксономия Дункана
- Классификация Фэна
- Обработчик «S Система Эрланген Классификация (ECS)
- SWAR
Рекомендации
- ^ Флинн, Майкл Дж. (Сентябрь 1972 г.). «Некоторые компьютерные организации и их эффективность». Транзакции IEEE на компьютерах . С-21 (9): 948–960. DOI : 10.1109 / TC.1972.5009071 .
- ^ Дункан, Ральф (февраль 1990 г.). «Обзор параллельных компьютерных архитектур» (PDF) . Компьютер . 23 (2): 5–16. DOI : 10.1109 / 2.44900 . Архивировано (PDF) из оригинала 18.07.2018 . Проверено 18 июля 2018 .
- ^ http://www.cse.msu.edu/~cse820/lectures/CAQA5e_ch4.pdf
- ^ http://www.nvidia.com/content/PDF/fermi_white_papers/NVIDIA_Fermi_Compute_Architecture_Whitepaper.pdf
- ^ Спектор, А .; Гиффорд, Д. (сентябрь 1984 г.). «Основная компьютерная система космического челнока». Коммуникации ACM . 27 (9): 872–900. DOI : 10.1145 / 358234.358246 .
- ^ «Однопрограммный поток множественных данных (SPMD)» . Llnl.gov . Проверено 9 декабря 2013 .
- ^ [1] Архивировано 1 сентября 2006 г., в Wayback Machine.
- ^ «Виртуальная мастерская СТС» . Web0.tc.cornell.edu . Проверено 9 декабря 2013 .
- ^ «Учебник по NIST SP2: программирование с распределенной памятью» . Math.nist.gov. Архивировано из оригинала на 2013-12-13 . Проверено 9 декабря 2013 .
- ^ a b [2] Архивировано 3 февраля 2007 года в Wayback Machine.
- ↑ [3] Архивировано 10 сентября 2006 г., в Wayback Machine.
- ^ «Одна программа с множеством данных» . Nist.gov. 2004-12-17 . Проверено 9 декабря 2013 .
- ^ Дарема, Фредерика ; Джордж, Дэвид А .; Нортон, В. Алан; Пфистер, Грегори Ф. (1988). "Вычислительная модель" одна программа - несколько данных "для EPEX / FORTRAN". Параллельные вычисления . 7 (1): 11–24. DOI : 10.1016 / 0167-8191 (88) 90094-4 .
Эта статья основана на материалах, взятых из Free On-line Dictionary of Computing до 1 ноября 2008 г. и включенных в соответствии с условиями «перелицензирования» GFDL версии 1.3 или новее.