Классификация Флинна — различия между версиями

Материал из ЭНЭ
Перейти к: навигация, поиск
(из когдатошних лекц. заметок; источников ровно два, для второго указан только автор и год издания (нужно искать))
 
м (ах, да :))
Строка 1: Строка 1:
{{DEFAULTSORT:Флинн}}
 
 
__NOTOC__<!--нужен шаблон для оглавления справа-->
 
__NOTOC__<!--нужен шаблон для оглавления справа-->
 
'''Классификация Флинна''' рассматривает [[архитектура ЭВМ|архитектуры]] вычислительного оборудования по признаку единичности/множественности потоков [[поток команд|команд]] и [[поток данных|данных]].<ref name="fnflynn1972">Flynn 1972.</ref> Выделяются следующие четыре класса:
 
'''Классификация Флинна''' рассматривает [[архитектура ЭВМ|архитектуры]] вычислительного оборудования по признаку единичности/множественности потоков [[поток команд|команд]] и [[поток данных|данных]].<ref name="fnflynn1972">Flynn 1972.</ref> Выделяются следующие четыре класса:
Строка 47: Строка 46:
 
== Терминология ==
 
== Терминология ==
 
''Следует иметь в виду, что области параллельных вычислений и смежных тем присущи использование жаргона и близких по смыслу понятий, а также не вполне правильное использование терминологии, что может создавать сложности при общении, переводе'' и т.д.<ref name="fn1">Отмечено, напр., в: Parallel Programming and Cluster Computing: Distributed Multiprocessing. SC09 Education Program. University of Oklahoma, Aug 9-15 2009.</ref> Так, например, «многонитевость» (multi-threading) может называться «параллельность с разделяемой памятью», а «многопроцессорность» (multi-processing) — «распределённая параллельность».
 
''Следует иметь в виду, что области параллельных вычислений и смежных тем присущи использование жаргона и близких по смыслу понятий, а также не вполне правильное использование терминологии, что может создавать сложности при общении, переводе'' и т.д.<ref name="fn1">Отмечено, напр., в: Parallel Programming and Cluster Computing: Distributed Multiprocessing. SC09 Education Program. University of Oklahoma, Aug 9-15 2009.</ref> Так, например, «многонитевость» (multi-threading) может называться «параллельность с разделяемой памятью», а «многопроцессорность» (multi-processing) — «распределённая параллельность».
 +
 +
— [[user:Yury Tarasievich|Ю.Т.]]
  
 
;Ссылки и замечания
 
;Ссылки и замечания
Строка 53: Строка 54:
 
* Some computer organizations and their effectiveness / M.J. Flynn // IEEE Trans. Comp. – 1972. – V. C‑21, № 9. – P. 948–960.
 
* Some computer organizations and their effectiveness / M.J. Flynn // IEEE Trans. Comp. – 1972. – V. C‑21, № 9. – P. 948–960.
 
* Sinnen. Scheduling... 2007.
 
* Sinnen. Scheduling... 2007.
 +
 +
[[category:Параллельные вычисления]]
 +
{{DEFAULTSORT:Флинн}}

Версия 10:37, 19 августа 2015

Классификация Флинна рассматривает архитектуры вычислительного оборудования по признаку единичности/множественности потоков команд и данных.[1] Выделяются следующие четыре класса:

ОКОД

ОКОД (SISDsingle instruction [stream], single data [stream]): обыкновенная (последовательная) вычислительная машина, т. е., машина фон Неймана. Одна команда исполняется за один раз над одним элементом данных. Сюда относятся все традиционные вычислительные машины с одним процессором и одним комплектом памяти; например, все однопроцессорные IBM PC с одноядерным процессором без конвейеризации исполнения команд.

МКОД

МКОД (MISDmultiple instruction [streams], single data [stream]); также, по конструктивному исполнению, архитектура с единообразной памятью (доступом к памяти) (UMAunified memory 'access): машины с конвейерными (pipeline) архитектурами процессоров; симметричные многопроцессорные (SMP) и многоядерные (multicore) машины, многопроцессорные графические адаптеры в соответствующих режимах работы и подобные.

Следует иметь в виду, что в литературе встречается оценка этой архитектуры как «не очень полезной»; такие источники относятся к периоду, когда конструктивное исполнение МКОД было неэффективным и/или дорогим.

ОКМД

ОКМД (SIMDsingle instruction [stream], multiple data [streams]): векторные машины или машины, параллельные по данным (data parallel); один и тот же набор команд выполняется над множественными различными элементами данных; структурно состоят из множественных вычисляющих устройств и центрального управляющего устройства; название «параллельный по данным» (data parallel) означает, что параллелизм проистекает из данных (присущ обрабатываемым данным).

Сопоставление команд и тех или иных элементов данных производится векторным компилятором при условии, что расчёт векторизуемый; существуют особые языки программирования, а также т.наз. диалекты языков программирования: следующий пример на High Performance Fortran (HPF) занимает (заказывает) 10 процессоров и объявляет распределение 1.000 элементов массива x – по 100 последовательных элементов на каждый процессор:

real x(1000)

!HPF$ PROCESSORS p(10)

!HPF$ DISTRIBUTE x(BLOCK) ONTO p

Сравнительно рано возникшая архитектура; класс особенно приспособлен к однообразным вычислениям, производимым в науке и производстве (напр., в обработке сигналов), которые могут быть представлены в виде векторов и матриц. Скажем, скалярное умножение вектора (матрицы) требует лишь раздельного умножения каждого элемента на некоторое число.

«Чистые» архитектуры ОКМД немногочисленнны. В их числе считаются ранние векторные машины, как, например, Cray-1 и Hitachi S-3600. В наше время такая архитектура представлена векторными процессорами, а также узлами в процессорных комплектах, как, например, MMX/SSE в комплекте Intel Pentium или AltiVec в PowerPC. Сюда же относятся узлы (процессоры) обработки графики (GPU) в соответствующих режимах работы.

Любопытным воплощением этой парадигмы была «вымершая» Connection Machine (МИТ, ранние 1980-е гг.), имевшая тогда до 65 тыс. процессоров, каждый из которых был снабжён собственной рабочей памятью; процессоры в 1-й модели машины соединялись в гиперкуб. При работе машины команды передавались (транслировались) на процессоры, каждый из которых работал над своей частью входного массива данных.

Ограничения класса очевидны – хорошо работает не с каждым набором данных.

МКМД

МКМД (MIMDmultiple instruction [streams], multiple data [streams]), также «настоящая параллельная вычислительная машина» (true parallel computer): множественные вычисляющие устройства и множественные управляющие устройства. Соответственно, возможно выполнение различных потоков команд в отношении различных потоков данных. Выполнение общей задачи обеспечивается синхронизацией и взаимообменом данными по сети между вычислительными узлами.

Обычно в контексте параллельных вычислений сочетание вычисляющего узла и соответствующего ему узла управляющего (если такое сочетание вообще имеет смысл) называют процессором.

Архитектура МКМД может «принимать вид» ОКМД, если на всех узлах, взятых совместно, выполняется один и тот же поток команд. Такой случай имеет собственное наименование ОПМД (одна программа, много данных или SPMDsingle program, multiple data [streams]). Вообще, выполнение одной и той же программы на совокупности выч. узлов не есть то же самое, что выполнение на каждом из них одного и того же потока команд, потому что различные части программы выполняются на различных узлах.

К этому классу относятся (вычислительные) кластеры и грид-сети в режиме распределённого счёта (обработки).

Смешанные

Также архитектура распределённой системы может быть смешанной, как, напр., в случае Cray J90 или NEC SX-6, которые включают множественные векторные процессоры, и которые по Флинну могут считаться имеющими архитектуру МКМД с включениями архитектуры ОКМД. Наиболее полезными для параллельных вычислений считаются классы ОКМД (SIMD) и МКМД (MIMD).

Терминология

Следует иметь в виду, что области параллельных вычислений и смежных тем присущи использование жаргона и близких по смыслу понятий, а также не вполне правильное использование терминологии, что может создавать сложности при общении, переводе и т.д.[2] Так, например, «многонитевость» (multi-threading) может называться «параллельность с разделяемой памятью», а «многопроцессорность» (multi-processing) — «распределённая параллельность».

Ю.Т.

Ссылки и замечания
  1. Flynn 1972.
  2. Отмечено, напр., в: Parallel Programming and Cluster Computing: Distributed Multiprocessing. SC09 Education Program. University of Oklahoma, Aug 9-15 2009.

Источники

  • Some computer organizations and their effectiveness / M.J. Flynn // IEEE Trans. Comp. – 1972. – V. C‑21, № 9. – P. 948–960.
  • Sinnen. Scheduling... 2007.