Классификация параллельных вычислительных систем
Самой ранней и наиболее известной является классификация ВС, предложенная в 1966 году М.Флинном /24,25/. В ее основу положено понятие потока, под которым понимается последовательность команд или данных, обрабатываемая процессором. В зависимости от количества потоков команд и потоков данных Флинн выделяет четыре класса архитектур: SISD, MISD, SIMD и MIMD (рис.13.1).
SISD (Single Instruction stream/Single Data stream) – одиночный поток команд и одиночный поток данных (рис.13.1-а). Представителями этого класса являются, прежде всего, классические последовательные вычислительные машины, иначе машины фон-неймановского типа. В таких машинах есть только один поток команд, все команды обрабатываются последовательно друг за другом и каждая команда инициирует одну операцию с одним потоком данных. То, что для увеличения скорости обработки команд и скорости выполнения арифметических операций может применяться конвейерная обработка, поэтому в класс SISD одновременно попадают вычислительные машины как со скалярными функциональными устройствами, так и с конвейерными. Некоторые специалисты считают, что к SISD-системам можно причислить и векторно-конвейерные ВС, если рассматривать вектор как неделимый элемент данных для соответствующей команды.
MISD (Multiple Instruction stream/Single Data stream) – множественный поток команд и одиночный поток данных (рис.13.1-б). Из определения следует, что в архитектуре ВС присутствует множество процессоров, обрабатывающих один и тот же поток данных. Примером могла бы служить ВС, на процессоры которой подается искаженный сигнал, а каждый из процессоров обрабатывает этот сигнал с помощью своего алгоритма фильтрации. Тем не менее ни Флинн, ни другие специалисты в области архитектуры компьютеров до сих пор не сумели представить убедительный пример реально существующей вычислительной системы, построенной на данном принципе. Ряд исследователей относят к данному классу конвейерные системы, однако это не нашло окончательного признания. Отсюда принято считать, что пока данный класс пуст. Наличие пустого класса не следует считать недостатком классификации Флинна. Такие классы, по мнению некоторых исследователей, могут стать чрезвычайно полезными для разработки принципиально новых концепций в теории и практике построения ВС.
SIMD (Single Instruction stream/Multiple Data stream) – одиночный поток команд и множественный поток данных (рис.13.1-в). В архитектуре подобного рода имеется один поток команд, включающий в отличие от архитектуры SISD векторные команды. Это позволяет позволяют выполнять одну арифметическую операцию сразу над многими данными – элементами вектора. Способ выполнения векторных операций не оговаривается, поэтому обработка элементов вектора может производиться либо процессорной матрицей, либо с помощью конвейера. В принципе в этот класс можно включить и векторно-конвейерные ВС, если каждый элемент вектора рассматривать как отдельный элемент потока данных.
MIMD(Multiple Instruction stream/Multiple Data stream) – множественный поток команд и множественный поток данных (рис.13.1-г). Этот класс предполагает наличие в ВС множества устройств обработки команд, объединенных в единый комплекс и работающих каждое со своим потоком команд и данных. Класс MIMD чрезвычайно широк, поскольку включает в себя всевозможные мультипроцессорные системы. Кроме того, приобщение к классу MIMD зависит от трактовки. Так, ранее упоминавшиеся векторно-конвейерные ВС можно вполне отнести и к классу MIMD, если конвейерную обработку рассматривать как выполнение множества команд (операций ступеней конвейера) над множественным скалярным потоком.
Схема классификации Флинна вплоть до настоящего времени является наиболее распространенной, поскольку позволяет сразу оценить базовый принцип работы системы. Однако у классификации Флинна имеются и очевидные недостатки, например, неспособность однозначно отнести некоторые архитектуры ВС к тому или иному классу.
13.3. Мультипроцессорные и мультикомпьютерные системы
Методы организации вычислений параллельных ВС постоянно развиваются, модифицируются и детализируются. В настоящее время в классе MIMD предложены и эффективно развиваются два важных типа ВС, отличающиеся способами организации оперативной памяти.
Это мультипроцессорные системы с общей разделяемой (совместно используемой) памятью и мультикомпьютерные системы с распределенной памятью (рис.13.2).
В мультипроцессорных системах с общей разделяемой памятью выделены две группы систем, отличающихся способом построения общей памяти.
В первой группе мультипроцессоров используется единая централизованная общая память команд и данных (shared memory). Такой подход обеспечивает однородный доступ к памяти (uniform memory access или UMA), при котором время доступа для всех элементов памяти одинаково.
Во второй группе мультипроцессоров используется единая физически распределенная по разным процессорам общая память команд и данных (distributed shared memory или DSM). При этом, естественно, время доступа к удаленной и локальной памяти будет разным и может отличаться на несколько порядков. Поэтому, такой подход называется неоднородным доступом к памяти (non-uniform memory access или NUMA).
В мультипроцессорных системах, реализующих подходы UMA и NUMA, вычислительные процессы могут разделять одно виртуальное адресное пространство, видимое для всех процессоров, и отображенное в общую централизованную или распределенную память. Любой вычислительный процесс имеет доступ к локальной и удаленной памяти с использованием команд LOAD и STORE, но, очевидно,
что время доступа к удаленной памяти будет существенно больше. Следовательно, все программы для систем UMA будут работать без изменений на системах NUMA, но производительность будет меньше, чем на системах UMA с той же тактовой частотой.
Два процесса могут просто обмениваться информацией, если один из них будет записывать данные в память, а другой будет считывать эти данные. Благодаря такой простой возможности взаимодействия вычислительных процессов мультипроцессорные системы эффективны для выполнения интенсивно взаимодействующих (сильно связанных) программ.
Мультикомпьютеры не обеспечивают общий доступ ко всей имеющейся в ВС памяти (no-remote memory access или NORMA). При всей схожести подобной архитектуры с системами с распределенной общей памятью, мультикомпьютеры имеют принципиальное отличие: каждый процессор системы может использовать только свою локальную память, к которой этот процессор может обращаться с использованием команд LOAD и STORE, а для доступа к данным, располагаемым в локальных блоках памяти других процессоров необходимо выполнить операции передачи сообщений (message passing operations).
Таким образом, мультипроцессоры имеют одно физическое адресное пространство, разделяемое всеми процессорами, а в мультикомпьютерах каждому из центральных процессоров выделено отдельное адресное пространство. Если процессор в мультикомпьютерной системе обнаруживает, что в его локальной памяти нет требуемых ему данных, этот процессор определяет, в локальной памяти какого процессора содержаться требуемые данные, и посылает этому процессору сообщение с запросом копии данных. Затем запрашивающий процессор блокируется до получения ответа. Процессор, получивший запрос, анализирует его и отправляет требуемые данные. Получив ответное сообщение, процессор разблокируется и продолжает работу.
Для организации взаимодействия между процессорами мультикомпьютерных системах применяют примитивы SEND и RECEIVE, а также высокоскоростную коммуникационную сеть. Организация взаимодействия процессоров в мультикомпьютерных системах при помощи передачи сообщений обычно приводит к значительным временным задержкам, что существенно влияет на производительность. Поэтому мультикомпьютерные системы эффективны для выполнения независимых или слабо связанных (слабо взаимодействующих) программ.
Данный подход применяют при построении двух важных типов мультикомпьютерных систем – массово-параллельных систем (massively parallel processors или MPP) и кластеров рабочих станций (cluster of workstations или COW).
Дата добавления: 2016-06-13; просмотров: 1127;