- •10.1. Виды параллельной обработки
- •10.1.1. Классификация систем параллельной обработки
- •10.2. Матричная обработка данных
- •Массив процессорных элементов
- •10.3. Архитектура мультипроцессорных систем общего назначения
- •10.4. Коммуникационные сети
- •10.5. Организация памяти в мультипроцессорных системах
- •10.6. Программный параллелизм и общие переменные
- •10.6.1. Доступ к общим переменным
- •10.6.2. Согласованность кэша
- •10.6.3. Блокировка и согласованность кэш-памяти
- •10.7. Мультикомпьютерные системы
- •10.8. Общая память и передача сообщений
- •10.8.1. Система с общей памятью
- •10.8.2. Система с передачей сообщений
- •10.9. Производительность мультипроцессорных систем
- •10.9.1. Закон Амдала
- •10.9.2. Показатели производительности
10.2. Матричная обработка данных
Первым способом параллельной обработки данных, который был изучен и реализован на практике, была архитектура SIMD, называемая также матричной обработкой (array processing). В начале 1970-х годов в университете штата Иллинойс на основе принципа матричной обработки была создана система ILLIAC-IV, позднее изготовленная компанией Burroughs Corporation.
Структура матричного процессора показана на рис. 10.1. Двухмерный массив процессорных элементов обрабатывает поток команд, получаемых от центрального управляющего процессора. Каждая из команд выполняется всеми процессорными элементами одновременно. Каждый процессорный элемент обменивается данными со своим ближайшим соседом. Возможны и обходные соединения, но на рисунке они не приведены.
Массив процессорных элементов
Рис. 10.1. Матричный процессор
Массив процессорных элементов может использоваться для обработки двухмерных данных. Например, если каждый элемент массива определяет точку в пространстве, то массив может служить для вычисления значений температуры внутри плоской теплопроводной поверхности. Предположим, что температура на ее краях постоянна. Приближенное решение в дискретных точках, представленных процессорными элементами, формируется так. В начальный момент времени процессорные элементы, расположенные на границе области, инициализируются некоторыми заданными значениями температуры, а все внутренние точки — произвольными, не обязательно одинаковыми, значениями. Затем все элементы начинают параллельно оценивать значения температуры в соответствующих точках как среднее арифметическое значений температуры в четырех соседних точках. Вычисления повторяются до тех пор, пока разность результатов последовательных вычислений не окажется меньше некоторого указанного значения.
Для выполнения таких расчетов необходимо, чтобы каждый элемент матричного процессора обеспечивал обмен данными с соседними элементами через показанные на рисунке соединения. Каждый элемент должен иметь несколько регистров и небольшой объем локальной памяти для хранения данных. Кроме того, важно наличие у элемента так называемого сетевого регистра, служащего для обмена данными с соседними элементами. Центральный процессор направляет всем элементам команду пересылки значений сетевых регистров на один уровень вверх, вниз, вправо или влево. Каждый элемент должен содержать АЛУ для выполнения арифметических команд, получаемых от центрального процессора. Организовав итеративный цикл, с помощью этих базовых средств команды элементам можно передавать многократно. При этом необходимо, чтобы управляющий процессор определял момент, когда каждый процессорный элемент вычислит температуру в определенной точке с указанной точностью. С этой целью по достижении заданного значения внутренний бит состояния каждого из элементов должен устанавливаться в 1. Соединения между элементами позволяют контроллеру устанавливать все биты состояния в 1, что равнозначно завершению операции.
При разработке матричных процессоров возникает вопрос: что эффективнее использовать — несколько мощных процессоров или большое количество очень простых процессоров. Примером реализации первого подхода может служить суперкомпьютер ILLIAC-IV. В его состав входят 64 процессора, обрабатывающих 46-разрядные числа. Примером реализации второго подхода является применение матричных процессоров, разработанных в конце 1980-х годов. В системе СМ-2 производства корпорации Thinking Machines можно было установить до 65536 процессоров, но разрядность каждого из них равнялась одному биту. В системе Maspar MP-1216 допускалась установка 16384 процессоров разрядностью 4. Системы Cambridge Parallel Processing Gamma II Plus могли содержать до 4096 процессоров, обрабатывающих данные длиной в 1 байт или 1 бит. Разработчики этих систем полагали, что в SIMD-архитектуре наличие высокого уровня параллелизма эффективнее использования небольшого количества мощных процессоров.
Сфера применения матричных процессоров является достаточно узкой. В первую очередь они предназначены для решения вычислительных задач, связанных с обработкой матриц и векторов. Напомним, что для решения подобных задач подходят и суперкомпьютеры с векторной архитектурой. Главным отличием матричных процессоров от векторных систем является то, что при работе со вторыми высокая производительность достигается за счет интенсивной конвейеризации, а при использовании первых — за счет максимальной степени параллелизма, являющегося результатом параллельной работы компьютерных модулей. Но ни матричные, ни векторные компьютеры не могут значительно ускорить обычные вычисления, поэтому они не пользуются коммерческим успехом.