Классификация параллельных вычислительных систем
Введение
Классификация М. Флинна
Другие классификации
Классификация современных вычислительных систем с учетом структуры оперативной памяти, модели связи и обмена
Одним из перспективных и динамичных направлений увеличения скорости решения прикладных задач является широкое внедрение идей параллелизма в работу вычислительных систем. К настоящему времени спроектированы и опробованы сотни различных компьютеров, использующих в своей структуре тот или иной вид параллельной обработки данных. В научной литературе и технической документации можно найти десятки различных названий, характеризующих лишь общие принципы функционирования параллельных машин: векторно-конвейерные, массово параллельные, компьютеры с широким командным словом, систолические массивы, гиперкубы, спецпроцессоры и мультипроцессоры, иерархические и кластерные компьютеры, dataflow, матричные вычислительные системы и многие другие. Если же к подобным названиям для полноты описания добавить еще и данные о таких важных параметрах, как, например, организация оперативной памяти, топология связей между процессорами, синхронность работы отдельных устройств или способ исполнения арифметических операций, то число различных структур станет и вовсе необозримым.
Попытки систематизировать все множество структур начались после опубликования М. Флинном первого варианта классификации вычислительных систем в конце 60-х годов и непрерывно продолжаются по сей день. Ясно, что навести порядок в хаосе очень важно для лучшего понимания исследуемой предметной области, однако нахождение удачной классификации может иметь целый ряд существенных следствий.
В самом деле, вспомним открытый в 1869 году Д.И.Менделеевым периодический закон. Выписав на карточках названия химических элементов и указав их важнейшие свойства, он сумел найти такое расположение, при котором четко прослеживалась закономерность в изменении свойств элементов, расположенных в каждом столбце и в каждой строке. Теперь, зная положение какого-либо элемента в таблице, он мог с большой степенью точности описывать его свойства, не проводя с ним никаких непосредственных экспериментов. Другим, поистине фантастическим следствием, явилось то, что данный закон сразу указал на несколько "белых пятен" в таблице и позволил предсказать существование и свойства неизвестных до тех пор элементов. В 1875 году французский ученый Буабодран, изучая спектры минералов, открыл предсказанный Менделеевым галлий и впервые подробно описал его свойства. В свою очередь Менделеев, никогда прежде не видевший данного химического элемента, не только смог указать на ошибку в определении плотности, но и вычислил ее правильное значение.
Существующая классификация растительного и животного мира, в отличие от периодического закона, носит скорее описательный характер. С ее помощью намного сложнее предсказывать существование нового вида, однако знание того, что исследуемый экземпляр принадлежит такому-то роду/семейству/отряду/классу позволяет оправданно предположить наличие у него вполне определенных свойств.
Подобную классификацию хотелось бы найти и для структур параллельных вычислительных систем. Основной вопрос - что заложить в основу классификации, может решаться по-разному, в зависимости от того, для кого данная классификация создается и на решение какой задачи направлена. Так, часто используемое деление вычислительных систем на персональные компьютеры, рабочие станции, серверы, кластеры, суперпроизводительные вычислительные системы, позволяет, быть может, примерно прикинуть стоимость вычислительной системы. Однако оно не приближает пользователя к пониманию того, что от него потребуется для написания программы, работающей на пределе производительности параллельной вычислительной системы, т.е. того, ради чего он и решился ее использовать. Как это ни странно, но от обилия разных параллельных вычислительных систем страдает, прежде всего, конечный пользователь, для которого, вроде бы, они и создавались: он вынужден каждый раз подбирать наиболее эффективный алгоритм, он испытывает на себе "прелести" параллельного программирования и отладки, решает проблемы переносимости и затем все повторяется заново.
Хотелось бы, чтобы такая классификация помогла пользователю разобраться с тем, что представляет собой каждая структура, как они взаимосвязаны между собой, что он должен учитывать для написания действительно эффективных программ или же на какой класс структур вычислительных систем ему следует ориентироваться для решения требуемого класса задач. Одновременно удачная классификация могла бы подсказать возможные пути совершенствования вычислительных систем, и в этом смысле она должна быть достаточно содержательной. Трудно рассчитывать на нахождение нетривиальных "белых пятен", например, в классификации по стоимости, однако размышления о возможной систематике с точки зрения простоты и технологичности программирования могут оказаться чрезвычайно полезными для определения направлений поиска новых структур.
При введении классификации можно преследовать самые различные цели, и главный вопрос – что заложить в основу классификации, может решаться по-разному. Так, например, одной из целей может быть эффективное решение задачи отображения алгоритмов на структуру вычислительных систем. В некоторых случаях вводят описания классов вычислительных систем. На основе информации о принадлежности вычислительной системы к конкретному классу пользователь сам принимает решение о способе записи алгоритма в терминах выбранной технологии параллельного программирования. Иногда в качестве классификации пытаются ввести формальное описание структуры, используя специальную нотацию. Такое направление интересно тем, что создается благоприятная основа для построения автоматизированных систем отображения. В самом деле, с одной стороны, есть формальное описание структуры целевой вычислительной системы, с другой стороны, есть формальное описание алгоритма. Созданы условия для совместного исследования этих двух объектов и последующего синтеза оптимальной программы. Правда, результат очень сильно зависит как от качества введенных описаний, так и от методов их совместного исследования. О степени решенности даже упрощенного варианта данной проблемы можно судить по качеству компиляторов, работающих на существующих параллельных вычислительных системах.
Удачная содержательная классификация может подсказать возможные пути совершенствования вычислительных систем. Ведь размышления о возможной систематике с точки зрения простоты и технологичности программирования могут оказаться чрезвычайно полезными для определения направлений поиска новых структур.
Классификация М. Флинна
По-видимому, самой ранней, наиболее известной и распространенной является классификация структур вычислительных систем, предложенная в 1966 году М. Флинном. Классификация базируется на понятии потока, под которым понимается последовательность команд или данных, обрабатываемая процессором. На основе числа потоков команд и потоков данных М. Флинн выделял четыре класса структур.
SISD (Single Instruction stream/Single Data stream) – одиночный поток команд и одиночный поток данных
К классу SISD относятся, прежде всего, классические последовательные вычислительные системы, иначе, вычислительные системы фон-неймановского типа, например, персональные компьютеры, построенные на базе процессоров линии Pentium. В таких вычислительных системах есть только один поток команд, каждая команда инициирует одну скалярную операцию. Не имеет значения тот факт, что для увеличения скорости обработки команд и скорости выполнения арифметических операций может применяться конвейерная и суперскалярная обработка.
SIMD (Single Instruction stream/Multiple Data stream) – одиночный поток команд и множественный поток данных. В структурах подобного рода сохраняется один поток команд, включающий, в отличие от предыдущего класса, векторные команды. Это позволяет выполнять одну арифметическую операцию сразу над многими данными, например, над элементами вектора. Способ выполнения векторных операций не оговаривается, поэтому обработка элементов вектора может производиться либо процессорной матрицей, как в ILLIAC IV, либо с помощью конвейера, как, например, в вычислительной системе Сгау-1.
MISD (Multiple Instruction stream/Single Data stream) – множественный поток команд и одиночный поток данных. Определение подразумевает наличие в структуре многих процессоров, обрабатывающих один и тот же поток данных. Однако, ни М. Флинн, ни другие специалисты в области структуры вычислительных систем до сих пор не смогли представить убедительный пример реально существующей вычислительной системы, построенной на данном принципе. Ряд исследователей относят конвейерные машины к данному классу, однако это не нашло окончательного признания в научном сообществе. Будем считать, что пока данный класс пуст.
MIMD (Multiple Instruction stream/Multiple Data stream) – множественный поток команд и множественный поток данных. Этот класс предполагает, что в вычислительной системе есть несколько процессоров, объединенных в единый комплекс и работающих каждый со своим потоком команд и данных.
Рассмотрим подробнее каждый класс.
Класс SISD
В SISD, как уже говорилось, входят однопроцессорные последовательные вычислительные системы типа персональных компьютеров. Однако, в этот класс можно включить и векторно-конвейерные вычислительные системы, если рассматривать вектор как одно неделимое данное для соответствующей команды. В таком случае в этот класс попадают и такие системы, как Сгау-1 и все последующие однопроцессорные модели векторной линии (как фирмы Сгау, так и других фирм).
Класс SIMD
Бесспорными представителями класса SIMD считаются матрицы процессоров: ILLIAC IV, ICL DAP, Goodyear Aerospace MPP, Connection Machine 1, ПС 2000 и т. п. В таких вычислительных системах одно управляющее устройство контролирует множество процессорных элементов. Каждый процессорный элемент получает от устройства управления в каждый фиксированный момент времени одинаковую команду и выполняет ее над своими локальными данными. Для классических процессорных матриц никаких вопросов не возникает. Однако в этот же класс можно включить и векторно-конвейерные вычислительные системы, например, Сгау-1. В этом случае каждый элемент вектора надо рассматривать как отдельный элемент потока данных.
Класс MIMD
Класс MIMD чрезвычайно широк, поскольку включает в себя всевозможные мультипроцессорные вычислительные системы. Интересно то, что если конвейерную обработку рассматривать как выполнение последовательности различных команд (операций ступеней конвейера) не над одиночным векторным потоком данных, а над множественным скалярным потоком, то все рассмотренные выше векторно-конвейерные вычислительные системы можно расположить и в данном классе.
Предложенная схема классификации вплоть до настоящего времени является самой применяемой при начальной характеристике той или иной вычислительной системы. Если говорится, что вычислительная система принадлежит классу SIMD или MIMD, то сразу становится понятным базовый принцип ее работы (один или много потоков команд, что эквивалентно один или много процессоров), и в некоторых случаях этого бывает достаточно. Однако видны и явные недостатки. В частности, некоторые заслуживающие внимания структуры, например dataflow и векторно-конвейерные вычислительные системы, четко не вписываются в данную классификацию. Другой недостаток – это чрезмерная заполненность класса MIMD. Необходимо средство, более избирательно систематизирующее структуры, которые по М. Флинну попадают в один класс, но совершенно различные по числу процессоров, природе и топологии связей между ними, по способу организации оперативной памяти и, конечно же, по технологии программирования.
Другие классификации вычислительных систем
Так как классификация Флинна не смогла ответить на многие вопросы, то, естественно, многие исследователи продолжили разработку новых вариантов классификации вычислительных систем. Можно назвать ряд классификаций, таких как:
классификация Фенга;
классификация Хендлера;
классификация Шнайдера;
классификация Скилликорна;
классификация Хокни;
классификация Шора;
классификация Джонсона;
классификация Дункана;
классификация Дазгупты;
классификация Базу;
классификация Кришнамарфи.
Все названные классификации были предложены в 80-х годах 20-го века (последние – в 1988 - 1990 г.г.). Естественно, все эти классификации базировались на анализе обширной номенклатуры разработанных еще в 70-е и 80-е годы 20-го века вычислительных систем.
Начиная со второй половины 90-х годов прошлого века, произошли очень серьезные изменения в проектировании параллельных вычислительных систем. Исчезли матричные вычислительные системы, так называемые ассоциативные системы, различные одноразрядные последовательные системы. Главенствующее положение заняли мультипроцессорные системы разных классов, кластерные структуры.
В настоящее время интерес к классификации вычислительных систем существенно снизился.
Основными параметрами классификации современных параллельных вычислительных систем являются:
количество процессоров (один/много);
тип операционной системы (одна операционная система/много операционных систем);
архитектура процессоров/узлов (скалярная/векторная);
организация оперативной памяти (разделяемая, физически общая или распределенная);
вид коммуникационной подсистемы между активными компонентами системы и механизма обмена.
- Что такое параллельные вычислительные системы и зачем они нужны
- Некоторые примеры использования параллельных вычислительных систем Об использования суперкомпьютеров
- Классификация параллельных вычислительных систем
- Классификация современных параллельных вычислительных систем с учетом структуры оперативной памяти, модели связи и обмена Симметричные скалярные мультипроцессорные вычислительные системы
- Несимметричные скалярные мультипроцессорные вычислительные системы
- Массово параллельные вычислительные системы с общей оперативной памятью
- Массово параллельные вычислительные системы с распределенной оперативной памятью
- Серверы
- Требования к серверам Основные компоненты и подсистемы современных серверов
- Структуры несимметричных мвс с фирмы Intel Структурные особенности процессоров со структурой Nehalem
- Структуры мвс с процессорами Nehalem
- Мвс на базе процессоров фирмы amd
- Структура шестиядерного процессора Istanbul приведена на рис. 23.
- Примеры структур несимметричных мвс с процессорами линии Opteron Barcelona, Shanghai, Istanbul
- Сравнение структур мвс с процессорами Barcelona, Shanghai, Istanbul с мвс с процессорами со структурой Nehalem
- 12 Ядерные процессоры Magny-Cours
- Основные особенности 12-ти и 8-ми ядерных микросхем Magny-Cours
- Структуры мвс с процессорами Magny--Cours
- Перспективы развития процессоров фирмы amd для мвс
- Мвс на базе процессоров фирмы ibm power6, power7 Основные особенности процессоров power6, power7
- Процессор power6
- Структуры мвс на базе процессоров power4, power5
- Структуры мвс на базе процессоров power6, power7
- Требования к серверам
- Основные компоненты и подсистемы современных серверов
- Поддерживаемые шины ввода-вывода
- Raid контроллеры
- Сервер Superdome 2 для бизнес-критичных приложений
- Структура сервера
- Надежность и доступность
- Конфигурации и производительность
- Основные особенности симметричных мультипроцессорных систем?
- Векторные параллельные системы
- Скалярная и векторная обработка
- Основные особенности векторных параллельных систем
- Векторные параллельные системы sx-6, sx-7 фирмы nec
- Особенности вычислительной системы sx-7
- Параллельная векторная система Earth Simulator
- Cуперкластерная система
- Суперкомпьютер CrayXt5h
- «Лезвия» векторной обработки Cray x2
- «Лезвия» с реконфигурируемой структурой
- Массово параллельные вычислительные системы с скалярными вычислительными узлами и общей оперативной памятью
- Массово параллельные вычислительные системы с скалярными вычислительными узлами и распределенной оперативной памятью
- Cуперкомпьютеры семейства cray xt Семейство Cray xt5
- «Гибридные» суперкомпьютеры CrayXt5h
- «Лезвия» векторной обработки Cray x2
- «Лезвия» с реконфигурируемой структурой
- Развитие линии Cray хт5 – Cray xt6/xt6m
- Модель Cray xe6
- Процессор
- Коммуникационная среда с топологией «3-мерный тор»
- Реализация коммуникационных сред
- Операционная система
- Суперкомпьютер RoadRunner
- Топологии связей в массово параллельных системах
- Оценка производительности параллельных вычислительных систем
- Необходимость оценки производительности параллельных вычислительных систем
- Реальная производительность параллельных вычислительных систем Анализ «узких мест» процесса решения задач и их влияния на реальную производительность
- «Узкие» места, обусловленные иерархической структурой памяти
- Влияние на реальную производительность параллельных вычислительных систем соответствия их структуры и структуры программ
- Анализ реальной производительности («узких» мест) мвс с общей оперативной памятью
- Анализ реальной производительности («узких» мест) кластерных систем с распределённой оперативной памятью
- Какие «узкие места» процесса решения задач существенно влияют на реальную производительность параллельных вычислительных систем?
- Тенденции развития суперкомпьютеров. Список top500
- Что такое список тор 500 и как он создается?
- 38 Редакция списка (ноябрь 2011 г.)
- Коммуникационные технологии
- Архитектуры, модели процессоров и их количество в системах списка
- Основные тенденции развития суперкомпьютеров
- Перспективные суперкомпьютеры тера- и экзафлопного масштаба
- Производительность 500 лучших суперкомпьютеров за последние 18 лет
- Перспективные суперкомпьютеры тера- и экзафлопного масштаба
- Программа darpa uhpc
- Основные положения программы uhpc
- Экзафлопсный барьер: проблемы и решения
- Проблемы
- Эволюционный путь
- Революционный путь
- Кто победит?
- Примеры перспективных суперкомпьютеров Суперкомпьютер фирмы ibm Mira
- Стратегические суперкомпьютерные технологии Китая