Классификация Флинна
Классифика́ция Фли́нна (таксономия Флинна), наиболее известная классификация архитектур вычислительных систем, предложенная в 1966 г. М. Флинном. Классификация базируется на понятии «поток», под которым понимается последовательность команд или данных, обрабатываемая процессором. На основе числа потоков команд и потоков данных выделяется 4 класса архитектур.
SISD (от англ. Single Instruction stream / Single Data stream) – одиночный поток команд и одиночный поток данных (рис. 1). На рисунках, иллюстрирующих классификацию Флинна, здесь и далее использованы следующие обозначения: ПР – один или несколько процессорных элементов, УУ – устройство управления, ПД – память данных. К классу SISD относятся, прежде всего, классические последовательные машины, или, иначе, машины фон-неймановского типа, например PDP-11 или VAX-11/780. В таких машинах есть только один поток команд, все команды обрабатываются последовательно друг за другом, и каждая команда инициирует одну скалярную операцию. Не имеет значения тот факт, что для увеличения скорости обработки команд и скорости выполнения арифметических операций может применяться конвейерная обработка: как машина CDC 6600 со скалярными функциональными устройствами, так и CDC 7600 – с конвейерными попадают в этот класс (см. также Векторная обработка данных).
SIMD (от англ. Single Instruction stream / Multiple Data stream) – одиночный поток команд и множественный поток данных (рис. 2). В архитектурах подобного рода сохраняется один поток команд, включающий, в отличие от предыдущего класса, векторные команды. Это позволяет выполнять одну арифметическую операцию сразу над многими данными, например над элементами вектора. Способ выполнения векторных операций не оговаривается, поэтому обработка элементов вектора может производиться либо процессорной матрицей, как в ILLIAC IV, ICL DAP или как в мультипроцессоре графического процессора NVIDIA, либо с помощью конвейерного функционального устройства, как, например, в суперкомпьютере Cray-1, либо одновременной обработкой всех элементов вектора, как это делается, например, в инструкциях AVX-512.
MISD (от англ. Multiple Instruction stream / Single Data stream) – множественный поток команд и одиночный поток данных (рис. 3). Определение подразумевает наличие в архитектуре многих процессоров, обрабатывающих один и тот же поток данных. Однако ни Флинн, ни другие специалисты в области архитектуры компьютеров до сих пор не смогли представить убедительный пример реально существующей вычислительной системы, построенной на данном принципе. Ряд исследователей относят конвейерные машины к данному классу, однако это не нашло окончательного признания в научном сообществе.
MIMD (от англ. Multiple Instruction stream / Multiple Data stream) – множественный поток команд и множественный поток данных (рис. 4). Этот класс предполагает, что в вычислительной системе есть несколько устройств обработки команд, объединённых в единый комплекс и работающих каждое со своим потоком команд и данных.
В SISD, как уже говорилось, входят классические однопроцессорные последовательные компьютеры типа VAX 11/780. Однако многие критики отмечают, что в этот класс можно включить и векторно-конвейерные машины, если рассматривать вектор как одно неделимое данное для соответствующей команды. В таком случае в этот класс попадут и такие системы, как Cray-1, CDC Cyber 205, машины семейства FACOM VP и многие другие.
Бесспорными представителями класса SIMD считаются матрицы процессоров: ILLIAC IV, ICL DAP, Goodyear Aerospace MPP, Connection Machine 1 и др. В таких системах единое управляющее устройство контролирует множество процессорных элементов. Каждый процессорный элемент получает от устройства управления в каждый фиксированный момент времени одинаковую команду и выполняет её над своими локальными данными. Для классических процессорных матриц никаких вопросов не возникает. Однако в этот же класс можно включить и векторно-конвейерные машины, например Cray-1. В этом случае каждый элемент вектора надо рассматривать как отдельный элемент потока данных.
Класс MIMD на практике чрезвычайно широк, поскольку включает в себя всевозможные мультипроцессорные системы: Cm*, C.mmp, Cray Y-MP, Denelcor HEP, BBN Butterfly, Intel Paragon, Cray T3D, HP Superdome, IBM Blue Gene, NEC SX-Aurora TSUBASA, Fugaku, Frontier, многоядерные и многопроцессорные системы, вычислительные кластеры и многие другие. Если конвейерную обработку рассматривать как выполнение последовательности различных команд (операций ступеней конвейера) не над одиночным векторным потоком данных, а над множественным скалярным потоком, то все рассмотренные выше векторно-конвейерные компьютеры можно расположить и в данном классе.
Предложенная схема классификации вплоть до 2020-х гг. является самой применяемой при начальной характеристике того или иного компьютера. Если говорится, что компьютер принадлежит классу SIMD или MIMD, то сразу становится понятным базовый принцип его работы, и в некоторых случаях этого бывает достаточно. Видны и явные недостатки классификации. В частности, некоторые заслуживающие внимания архитектуры, например архитектуры с управлением потоком данных (англ. dataflow) и векторно-конвейерные машины, чётко не вписываются в данную классификацию. Другой недостаток – это чрезмерная заполненность класса MIMD. В данный класс входят системы как с общей памятью, так и с распределённой, хотя технологии работы с ними на практике принципиально разные. По большому счёту, в класс MIMD сегодня входит бо́льшая часть современных вычислительных систем, что говорит о том, что задача поиска классификации архитектуры вычислительных систем до сих пор не решена. Необходимы дополнительные признаки и характеристики, более избирательно систематизирующие архитектуры, которые, по Флинну, попадают в один класс MIMD, но совершенно различны по числу и типу процессоров, степени однородности и неоднородности вычислительных узлов, технологии и топологии связи между ними, по используемым принципам синхронной и асинхронной обработки данных, по способу организации памяти и технологиям программирования.