- •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. Показатели производительности
Большие компьютерные системы
Виды параллельной обработки
Классификация систем параллельной обработки
Матричная обработка данных
Архитектура мультипроцессорных систем общего назначения
Коммуникационные сети
Организация памяти в мультипроцессорных системах
Программный параллелизм и общие переменные
Доступ к общим переменным
Согласованность кэша
Блокировка и согласованность кэш-памяти
Мультикомпьютерные системы
Общая память и передача сообщений
Система с общей памятью
Система с передачей сообщений
Производительность мультипроцессорных систем
Закон Амдала
Показатели производительности
Выводы
Приложения, которые планируется использовать для выполнения значительного объема вычислений, следует устанавливать в системах с высоким быстродействием. Подобные системы часто называют суперкомпьютерами. В настоящее время без применения суперкомпьютеров невозможно представить себе решение задач в таких областях, как метеорология и исследование Мирового океана, строительство и материаловедение, генная инженерия, гидро- и газодинамика, моделирование сложных физических систем и автоматизированное проектирование (САПР). Но ни одна из описанных в предыдущих лекциях вычислительных систем не относится к классу суперкомпьютеров.
Для создания высокопроизводительных процессоров могут быть задействованы самые передовые технологии разработки быстродействующих схем и наиболее эффективные архитектурные решения, в частности параллелизм вычислений, конвейерная обработка, кэш-память большого объема, чередование адресов основной памяти и раздельные шины для команд и данных. Все перечисленные, а также подобные им решения используются при создании процессоров для рабочих станций. Они ориентированы на повышение производительности системы без значительного увеличения ее стоимости, и результаты их применения действительно впечатляют — современные рабочие станции имеют более высокую производительность, чем суперкомпьютеры всего лишь десятилетней давности.
Но даже такая высокая производительность рабочих станций не удовлетворяет нуждам ряда приложений, требующих значительно больших вычислительных мощностей, поэтому спрос на суперкомпьютеры по-прежнему сохраняется. Одним из возможных подходов к их разработке является создание системы с несколькими очень мощными процессорными устройствами. Как правило, с этой целью используются самые быстрые из существующих схем, широкие шины для доступа к основной памяти очень большого размера и мощные средства ввода-вывода. Такие компьютеры потребляют значительное количество энергии и требуют специальных систем охлаждения. В приложениях, выполняющих немалые объемы вычислений, суперкомпьютеры должны с максимальной эффективностью обрабатывать так называемые векторные данные, то есть одномерные массивы чисел (элементов), рассматриваемые как единое целое. Например, может возникнуть необходимость сохранить в основной памяти векторное значение, находящееся в регистрах, или же произвести какие-либо операции над вектором, являющимся результатом поэлементного сложения двух 64-элементных векторов. Для наиболее эффективного выполнения приложений с многочисленными векторными операциями используются компьютеры векторной архитектуры. Суперкомпьютеры такого класса производятся компаниями Cray (Cray-1, Y-MIP и SV1), Fujitsu (VPP5000), Hitachi (SR8000) и NEC (SX-5). Основным недостатком подобных систем является их очень высокая стоимость (куда входит не только цена, но и затраты на сопровождение и обслуживание).
Привлекательной альтернативой использованию специализированных суперкомпьютеров является применение большого количества однопроцессорных рабочих станций. Это можно сделать одним из двух способов. Первый из них заключается в создании системы с эффективными средствами взаимодействия между процессорами, общими модулями памяти и устройствами ввода-вывода. Системы такого типа обычно называются мультипроцессорными. Второй способ предполагает создание системы, состоящей из большого количества рабочих станций, объединенных в локальную коммуникационную сеть. Подобные системы называются распределенными компьютерными системами. Мультипроцессорные и распределенные компьютерные системы имеют много общего. Первые характеризуются высокой производительностью и высокой стоимостью, вторые же более естественно вписываются в современные компьютерные инфраструктуры предприятий и имеют более низкую цену. В этой лекции мы рассмотрим особенности систем обоих типов.
Высокая производительность системы с большим количеством процессоров обеспечивается за счет параллельного выполнения огромного числа операций. Однако трудность эффективного использования указанных систем заключается в том, что не каждое приложение удается разбить на отдельные задачи, которые можно распределить между несколькими процессорами для параллельного выполнения. Для выделения подобных задач, планирования и координирования путей их решения в мультипроцессорной системе необходимо наличие сложного программного обеспечения и специализированных аппаратных средств.
10.1. Виды параллельной обработки
Существует много способов параллельного выполнения отдельных частей вычислительной задачи. С некоторыми из них вы уже познакомились. Так, для осуществления операций ввода-вывода в большинстве компьютеров предусмотрены аппаратные средства, обеспечивающие прямой доступ к памяти, то есть передачу данных между памятью и устройствами ввода-вывода без участия процессора. В частности, передача данных между основной памятью и магнитным диском в обоих направлениях может выполняться контроллером DMA параллельно с работой центрального процессора.
Передача блока данных с диска в основную память инициируется процессором, направляющим контроллеру DMA соответствующие команды. После этого процессор возвращается к своей работе и продолжает выполнять вычисления, никак не связанные с инициированной им передачей информации. А в это время контроллер DMA самостоятельно производит передачу данных и по ее завершении информирует об этом процессор с помощью сигнала прерывания. Получив уведомление о том, что информация прочитана с диска в основную память, процессор переключается на выполнение той задачи, в которой она используется.
Приведенный пример иллюстрирует два фундаментальных аспекта параллельной обработки.
Во-первых, для того чтобы такой способ обработки можно было применить для решения конкретной задачи, последняя должна включать подзадачи, допускающие параллельное выполнение разными аппаратными компонентами. В нашем примере такими подзадачами являются вычисления, производимые процессором, и операция чтения данных с диска в основную память, выполняемая контроллером DMA.
Во-вторых, необходимо наличие средств для активизации и координирования параллельной обработки. В данном примере параллельная обработка активизируется процессором, инициирующим операцию прямого доступа к памяти. Координирование действий процессора и контроллера DMA осуществляется с помощью прерывания, сигнал которого генерируется контролером DMA по завершении операции. В ответ на этот сигнал процессор начинает вычисления с использованием полученных данных.
Мы рассмотрели самый простой случай параллелизма, в котором выполняются только две задачи. В общем случае масштабные вычисления можно разделить на множество параллельно выполняемых частей. Для поддержки таких параллельных вычислений может использоваться несколько аппаратных структур.
10.1.1. Классификация систем параллельной обработки
В соответствии с общей классификацией систем параллельной обработки данных, однопроцессорная компьютерная система называется системой с одиночным потоком команд и одиночным потоком данных (Single Instruction stream, Single Data stream, SISD). Выполняемая процессором программа составляет поток команд, а последовательность элементов данных, которые она обрабатывает, составляет поток данных.
Возможна другая схема функционирования, при которой один поток команд выполняется множеством процессоров. При этом каждый процессор обрабатывает только собственные данные. Системы с такой архитектурой именуются системами с одиночным потоком команд и множественным потоком данных (Single Instruction stream, Multiple Data stream, SIMD). Несколькими потоками данных являются последовательности элементов данных, с которыми работают разные процессоры, каждый в своей памяти.
Третья схема функционирования системы предполагает использование нескольких независимых процессоров, которые выполняют разные программы и работают с разными последовательностями данных. Системы, функционирующие по этой схеме, называются системами с множественным потоком команд и множественным потоком данных (Multiple Instruction stream, Multiple Data stream, MIMD).
Системы четвертого типа известны как системы с множественным потоком команд и одиночным потоком данных (Multiple Instruction stream, Single Data stream, MISD). В таких системах единый поток данных обрабатывается несколькими процессорами, выполняющими разные программы. Эта форма параллельных вычислений редко используется на практике, и поэтому мы не будем ее рассматривать.
Основное внимание в данной главе уделяется структурам MIMD, имеющим наиболее широкое применение. Однако сначала мы коротко рассмотрим структуру SIMD и покажем, для каких приложений она используется.