Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Суперкомпьютеры и системы. Мультипроцессоры. Учебное пособие
.pdf
Министерство образования и науки Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
А.А. МАЛЯВКО, С.А. МЕНЖУЛИН
СУПЕРКОМПЬЮТЕРЫ
И СИСТЕМЫ
МУЛЬТИПРОЦЕССОРЫ
Утверждено Редакционно-издательским советом
университета в качестве учебного пособия
НОВОСИБИРСК
2017
1

УДК 004.272.43:004.382.2(075.8)
М 219
Рецензенты:
канд. техн. наук, доцент В.Г. Качальский
канд. техн. наук, доцент С.П. Ильиных
Работа подготовлена на кафедре вычислительной техники
для студентов III–IV курсов АВТФ
Малявко А.А.
М 219 Суперкомпьютеры и системы. Мультипроцессоры: учеб-
ное пособие / А.А. Малявко, С.А. Менжулин. – Новосибирск:
Изд-во НГТУ, 2017. – 64 с.
ISBN 978-5-7782-3295-2
В пособии содержатся материалы, которые можно использовать при
изучении структурной и функциональной организации суперкомпьютеров и параллельных вычислительных систем, а также для освоения
принципов их использования. Приводятся основные сведения о классификации архитектур суперкомпьютеров, делается обзор поколений
средств вычислительной техники, в результате смены которых появились современные суперкомпьютеры. Описываются основные архитектурные решения одного из подклассов параллельных вычислительных
систем – мультипроцессоров.
Пособие адресовано студентам, обучающимся по направлениям
«Информатика и вычислительная техника» и «Программная инженерия».
УДК 004.272.43:004.382.2(075.8)
ISBN 978-5-7782-3295-2 © Малявко А.А., Менжулин С.А., 2017
© Новосибирский государственный
технический университет, 2017
2

ВВЕДЕНИЕ
Суперкомпьютеры представляют собой класс средств вычислительной техники, который появился и развивался в результате непрерывной погони за достижением высокой производительности, позволившей решать так называемые «большие задачи», с которыми не
справляются обычные широко распространенные компьютеры. Соответственно суперкомпьютер – это вычислительная машина, значительно превосходящая по скорости вычислений и другим важным для
практических применений параметрам большинство имеющихся в мире компьютеров. Существует обширный круг направлений человеческой деятельности [1], постоянно нуждающихся во все более мощных
вычислительных средствах. Перечень «больших задач» не только не
сужается по мере появления все более мощных вычислительных
средств, но постоянно растет.
Суперкомпьютеры как уникальные образцы высокопроизводительных вычислительных систем существовали практически с того момента, когда был создан более чем один компьютер. Начиная с 1993 года
регулярно (дважды в год) составляется список Top-500 – перечень и
характеристики наиболее высокопроизводительных компьютеров всего мира [2]. Анализ совокупности всех списков более чем за 20 лет
наглядно свидетельствует о постоянной жесткой конкуренции ведущих производителей средств вычислительной техники за достижение
все более высокой производительности и о том, что вычислительная
мощность самых совершенных машин каждое десятилетие увеличивается приблизительно на три порядка (в тысячу раз). Суперкомпьютеры
играют все более важную роль в науке, технике и производстве.
В настоящем учебном пособии содержатся материалы для изучения
структурной и функциональной организации суперкомпьютеров и параллельных вычислительных систем и освоения принципов их исполь-
3

зования. В первом разделе приводятся основные сведения о классификации архитектур суперкомпьютеров. Второй раздел представляет собой обзор поколений средств вычислительной техники, в результате
смены которых появились современные суперкомпьютеры. В третьем
разделе описываются основные архитектурные решения таких параллельных вычислительных систем, как мультипроцессоры.
4

1. КЛАССИФИКАЦИЯ АРХИТЕКТУР
СУПЕРКОМПЬЮТЕРОВ
Под архитектурой средств вычислительной техники принято пони-
мать [3, 4]:
c одной стороны, физическое устройство системы, т. е. состав и
способы соединения ее блоков, таких как устройства оперативной памяти, процессоры, контроллеры ввода/вывода, устройства внешней
памяти, периферийные устройства;
c другой – логическое устройство, т. е. то, как систему «видит»
программист: возможные способы ввода исходных данных; способы
размещения данных в оперативной памяти и доступа к ним; возможность и способы совмещения во времени различных процессов, ведущих к решению задачи; способы использования результатов работы
этих процессов.
Одной из первых и до сих пор популярной является классификация, предложенная в 1966 году М. Флинном [5, 6], основанная на сочетаниях двух основных потоков – команд и данных, различным образом
реализуемых в разных системах. Теоретически возможны четыре варианта таких сочетаний.
1. Один поток команд, один поток данных (ОКОД). В оригинальной английской транскрипции – Single Instruction Single Data (SISD).
К этой архитектуре относят все однопроцессорные компьютеры, построенные по принципам фон Неймана (двоичное представление данных и команд, хранение и данных и команд в одной памяти, двоичная
последовательная адресация элементов памяти, программное управление вычислениями, возможность условных переходов в программе).
2. Один поток команд, много потоков данных (ОКМД), соответственно Single Instruction Multiple Data (SIMD). Типичными представителями систем этой архитектуры являются графические процессоры и
другие вычислительные акселераторы. Вначале системы с такой архи-
5

тектурой развивались как полностью однородные, содержащие одно
устройство управления, выбирающее команды из памяти и массив
арифметико-логических устройств, обрабатывающих этими командами
разные данные. В настоящее время значительно большее распространение получили системы, содержащие несколько относительно независимых друг от друга устройств управления и массивов арифметикологических устройств.
3. Много потоков команд, один поток данных (МКОД). Английский вариант – Multiple Instruction Single Data (MISD). Относительно
реализации этой архитектуры единого мнения нет. Иногда к ней относят конвейерные процессоры и высоконадежные дублированные системы защиты от аппаратных сбоев.
4. Много потоков команд, много потоков данных (МКМД). Английский вариант – multiple instruction multiple data (MIMD). Это очень
обширный класс, включающий в себя мультипроцессоры, массивнопараллельные процессоры, вычислительные кластеры и другие параллельные системы. В связи с большой разнородностью вычислительных
средств этого класса их иногда делят на подклассы по дополнительным признакам. Наиболее употребительным способом разделения на
подклассы является доступность всей памяти системы для составляющих ее процессоров: общая или раздельная. Более того, системы с общей памятью подразделяются на такие, в которых способ доступа ко
всей памяти одинаков для всех процессоров, и на те, в которых обращение каждого процессора к «своей» части памяти выполняется проще
и быстрее, чем обращение к «чужой» части.
В настоящее время сложилась тенденция совмещения нескольких
вариантов организации параллельных вычислений в одном суперкомпьютере (или даже просто в компьютере). Типичный современный суперкомпьютер – это кластер или массивно-параллельный процессор,
содержащий большое количество вычислительных узлов и несколько
так называемых инфраструктурных узлов. Инфраструктурные узлы
обеспечивают прием заданий и выдачу результатов их обработки, распределение ресурсов для выполнения заданий, хранение обрабатываемых данных и т. д. Память кластера распределена, непосредственного
доступа к данным, хранящимся в других узлах, никакой вычислительный узел не имеет. Для обеспечения возможности совместно решать
большие задачи вычислительные узлы соединены друг с другом несколькими коммуникационными сетями: сеть передачи обрабатывае-
6

мых данных, управляющая сеть, сеть синхронизации. Каждый вычислительный узел – это обычно многопроцессорный комплекс с многоуровневой общей памятью и, как правило, неунифицированным доступом процессоров к разным уровням памяти. Процессоры узла обычно
бездисковые многоядерные. Ядра, как правило, конвейерные с векторными расширениями, для них обычно реализован унифицированный
доступ к памяти «своего» процессора. Во многих суперкомпьютерах
вычислительные узлы оснащены графическими процессорами или вычислительными акселераторами.
Такая организация наиболее высокопроизводительных компьютеров сложилась далеко не сразу и явилась результатом нескольких этапов развития – поколений средств ВТ.
7

2. ПОКОЛЕНИЯ СРЕДСТВ
ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
За все время существования вычислительной техники архитектура
ведущих по производительности компьютеров многократно изменялась [3, 4]. Самые первые компьютеры (первое поколение) представляли собой совокупность устройств ввода и обработки информации,
работавших строго последовательно (рис. 2.1):
если работает процессор (тогда он назывался арифметико-логи-
ческим устройством), то бездействуют и оперативная память, и внешние
устройства;
если оперативная память занята выборкой команд/данных или
записью данных, то ожидают и процессор, и все прочие блоки;
на время выполнения любой операции ввода-вывода останавли-
ваются и процессор, и оперативная память.
Устройство
управления
Внешнее
устройство
Рис. 2.1. Физическая структура компьютеров первого
Оперативная память
(команды и данные)
…
поколения
8
Процессор
Внешнее
устройство

В компьютерах первого поколения логическая структура практически не отличалась от физической структуры. Программисту для решения задачи предоставлялся в распоряжение полностью весь компьютер. Задача программирования состояла в том, чтобы по возможности
оптимально спланировать и организовать совместную работу всех его
блоков при решении каждой конкретной задачи. Вначале программы
разрабатывались в двоичном коде, т. е. во внутреннем представлении
машинных команд, однако довольно быстро появились ассемблеры –
программы, осуществляющие перевод мнемонических обозначений машинных операций и элементов памяти во внутреннее представление.
Довольно скоро были созданы контроллеры памяти и внешних
устройств, позволившие реализовать первичные виды параллелизма –
совмещения во времени нескольких разных процессов перемещения и
обработки информации в компьютерах. Одновременно начали появляться и развиваться типовые программные решения по управлению
внешними устройствами, ставшие впоследствии основой современных
операционных систем. Программирование алгоритма решения прикладной задачи процессором стало отделяться от управления функционированием всей совокупности устройств, образующих компьютер.
Появились первые алгоритмические языки.
Все эти изменения, а также появление полупроводниковой элементной базы взамен электронных ламп привели к возникновению второго
поколения компьютеров. Структура компьютеров второго поколения
изображена на рис 2.2, она отличается наличием собственных устройств
управления (УУ или контроллеров) у каждого отдельного функционального блока. Именно это позволяет обеспечить параллельную работу различных устройств, т. е. устранить ожидание одними устройствами других. Это привело к возникновению концепции прерываний – переключений центрального процессора с одной программы на другую в заранее
непредсказуемые моменты времени с последующим полным восстановлением прерванного вычислительного процесса.
В этой структуре производительность компьютеров ограничивается
сверху двумя факторами – временем доступа к оперативной памяти для
выборки/записи данных и временем обработки данных в центральном
процессоре. Стремление уменьшить долю накладных расходов на обращения к медленной оперативной памяти за счет увеличения сложности
операций обработки данных в процессоре привело к появлению и интенсивному развитию CISC-архитектуры (от complex instruction set
computer) процессора. Устройства управления процессоров стали микропрограммными, машинные операции все более усложнялись.
9

Оперативная память
(команды и данные)
Устройство управления памятью
УУ системы
ввода-вывода
УУ ВУ
Внешнее
устройство
Рис. 2.2. Физическая структура компьютеров
…
второго поколения
УУ
процессора
Процессор
УУ ВУ
Внешнее
устройство
Эти факторы совместно с появлением новой элементной базы – интегральных схем малой и средней степени интеграции – породили тре-
тье поколение компьютеров. В их физической структуре ничего принципиально нового не появилось, однако существенно изменилось программное обеспечение. Параллелизм прежде всего стал реализовываться на уровне мультизадачности (компьютер квазиодновременно
исполняет несколько различных программ) и многопользовательского
обслуживания (с компьютером через разные терминалы одновременно
взаимодействуют несколько различных пользователей, для каждого из
которых исполняется своя программа). Появились эффективные операционные системы, реализующие различные режимы совместного
использования компьютеров как для нужд отдельных программистов,
так и в производственных процессах: пакетная обработка, разделение
времени, реальное время. Интенсивно развивались системы программирования, стали появляться системы управления базами данных и
первые пакеты прикладных программ, автоматизирующие решение
типовых, но сложных проблем.
Дальнейшее стремление к повышению производительности одиночного компьютера привело к появлению нескольких архитектурных
решений, в основе каждого из которых лежит тот или иной вид параллелизма.
Кэш памяти [3, 4, 7] – высокоскоростное запоминающее не адре-
суемое из программы устройство, в котором оседают копии значений
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
