Chapter_15 (1110567), страница 7
Текст из файла (страница 7)
Даже современные персональные ЭВМ массового выпуска содержат в своей архитектуре, помимо общей шины,различные средства прямого обмена с оперативной памятью (DMA – Direct Memory Access), похожиена простейшие каналы ввода/вывода (правда, обычно без средств их программирования пользователем).15.3.
Уровни параллелизмаКак мы знаем, первые компьютеры удовлетворяли почти всем принципам Фон Неймана. В этихкомпьютерах поток последовательно выполняемых в центральном процессоре команд обрабатывалпоток данных. ЭВМ такой простой архитектуры носят в литературе сокращённое название ОКОД1В теории программирования ввод/вывод называется блокирующим, если программа, производящая операцию обмена, ждёт полного завершения операции ввода/вывода, и лишь потом продолжает свой счёт.
До сихпор в языках Паскаль и Ассемблер Вы имели дело только с таким блокирующим вводом/выводом. Неблокирующий ввод/вывод позволяет производить счёт программы параллельно с операцией обмена. Как видим, архитектура ЭВМ с каналами позволяет производить и неблокирующий ввод/вывод.16(Один поток Команд обрабатывает Один поток Данных, английское сокращение SISD – SingleInstruction Single Data). В настоящее время компьютеры, однако, нарушают почти все принципы ФонНеймана.1Дело в том, что вычислительная мощность современных компьютеров базируется как на скорости работы всех узлов ЭВМ, так и, в значительно большей степени, на параллельной обработкеданных.
Это связано с тем, что увеличение быстродействия каждого отдельного узла ЭВМ уже приближается к тем критическим ограничениям, которые накладывает конечность скорости распространения электромагнитных сигналов (скорости света). Исходя из этого, мы в заключение нашего краткого изучения архитектуры современных ЭВМ рассмотрим классификацию способов параллельнойобработки данных на компьютере.• Параллельное выполнения программ может производиться на одном компьютере, если онимеет несколько центральных процессоров (ЭВМ массового производства этого класса обычно являются так называемые многоядерные компьютеры). Как правило, в этом случае такойкомпьютер имеет и несколько периферийных процессоров (каналов). Существуют ЭВМ, у которых могут быть от нескольких десятков до нескольких сотен и даже тысяч центральныхпроцессоров.2 В таких компьютерах много потоков команд одновременно обрабатывают много потоков данных, в научной литературе это обозначается сокращением МКМД (или поанглийски MIMD – Multiple Instruction Multiple Data).• Параллельные процессы в рамках одной программы.
Одна программа пользователя может породить несколько параллельных вычислительных процессов обработки данных, каждый такойпроцесс для операционной системы является самостоятельной единицей работы (с этой возможностью мы уже сталкивались, когда изучали реентерабельные программы). Таким образом, вычислительные процессы одной программы могут псевдопараллельно выполняться вмультипрограммном режиме точно так же, как и процессы, порождённые программами разных пользователей.В качестве примера рассмотрим простой случай, когда программисту необходимо вычислить сумму значений двух функций F(x)+G(x), причём каждая из этих функций для своеговычисления требует больших затрат процессорного времени и производит много обменовданными с внешними запоминающими устройствами. В этом случае программисту выгоднораспараллелить алгоритм решения задачи и породить в своей программе два параллельныхвычислительных процесса, каждому из которых поручить вычисления одной из этих функций. Можно понять, что в этом случае вся программа будет посчитана за меньшее физическое время, чем при использовании одного вычислительного процесса.
Действительно, покаодин процесс будет производить обмен данными с медленными внешними устройствами, другой процесс может продолжать выполняться на центральном процессоре, а в случае с однимпроцессом вся программа была бы вынуждена ждать окончания обмена с внешним устройством. Стоит заметить, что скорость счёта программы с несколькими параллельными процессами ещё больше возрастёт на компьютерах, у которых более одного центрального процессора.Подробно параллельные процессы изучаются в другом курсе, посвящённом операционнымсистемам.• Параллельное выполнение нескольких команд одной программы может производиться, какмы знаем, конвейером центрального процессора.
В мощных ЭВМ центральный процессорможет содержать и несколько конвейеров. Например, один из конвейеров выполняет командыцелочисленной арифметики, другой предназначен для обработки вещественных чисел, а третий – для всех остальных команд.• Параллельная обработка данных в одном вычислительном процессе производится и на такназываемых векторных и матричных ЭВМ.У векторных ЭВМ наряду с обычными (скалярными) регистрами есть и векторные регистры, которые могут хранить и выполнять операции над векторами целых или вещественных1Как уже упоминалось ранее, не нарушается только принцип хранимой программы.В настоящее время популярен также подход, при котором большое количество самостоятельных ЭВМобъединяются высокоскоростными шинами связи в вычислительный комплекс, называемый кластером.
Такиекластеры могут состоять от нескольких десятков до сотен тысяч компьютеров, которые все могут параллельнорешать одну большую задачу, обмениваясь между собой данными по высокоскоростным каналам связи.217чисел. Пусть, например, у такой ЭВМ есть регистры с именами axv и bxv, каждый из которых может хранить вектор из 64 чисел, тогда, например, команда векторного сложенияaddv axv,bxv будет производить параллельное покомпонентное сложение всех элементовтаких векторов по схеме axv[i]:=axv[i]+bxv[i].У матричных ЭВМ на одно устройство управления приходится много (иногда до несколькихсотен или даже тысяч) арифметико-логических устройств.
Таким образом, выбранная в устройство управления команда, например сложения, параллельно исполняется над разнымиоперандами в каждом из арифметико-логических устройств. Можно сказать, что на векторныхи матричных ЭВМ один поток команд обрабатывает много потоков данных. Отсюда понятнои сокращённое название ЭВМ такой архитектуры – ОКМД (по-английски SIMD: SingleInstruction Multiple Data).В 1966 году М.Флинном (M.Flynn) был предложен подход к классификации вычислительныхсистем, основанный на понятии последовательностей (потоков) команд и данных. Исходя из этого,деление архитектур ЭВМ по способу организации вычислительного процесса (ОКОД, МКМД иОКМД) в компьютерной литературе часто называется классификацией по Флинну.
Для полнотыэтой классификации следует упомянуть и архитектуру МКОД (MISD – Multiple Instruction SingleData), при этом один поток данных обрабатывается параллельно многими потоками команд. В качестве несколько надуманного примера можно привести специализированную ЭВМ, управляющуюдвижением самолётов над крупным аэропортом. В этой ЭВМ один поток данных от аэродромногорадиолокатора обрабатывается многими параллельно работающими процессорами, каждый из которых следит за безопасностью полёта одного закреплённого за ним самолёта, давая ему при необходимости команды на изменение курса, чтобы предотвратить столкновение с другими самолётами.
Сдругой стороны, однако, можно считать, что каждый процессор обрабатывает свою копию общихвходных данных, и рассматривать это как частный случай архитектуры МКМД, так и делается вомногих учебниках, в которых класс МКОД считается пустым.1Параллельная обработка команд и данных позволяет значительно увеличить производительностькомпьютера. Необходимо сказать, что в современных высокопроизводительных компьютерах обычнореализуется сразу несколько из рассмотренных выше уровней параллелизма.
Познакомится с историей развития параллельной обработки данных можно, например, по книгам [15,23]. Заметим, однако,что, несмотря на непрерывный рост мощности компьютеров, постоянно появляются всё новые задачи, для счёта которых необходимы ещё более мощные ЭВМ. Таким образом, к сожалению, ростсложности подлежащих решению задач всё время опережает рост производительности компьютеров. Например, только для составления местного (например, для Московской области) и краткосрочного (на одни сутки вперёд) достоверного прогноза погоды необходим компьютер с производительностью порядка 100 млрд. операций над вещественными числами в секунду [1].Производительность мощных компьютеров меряется в единицах, называемых флопами (flps).Один flps равен одной операции над длинными (64-х разрядными) вещественными числами в секунду (floating point per second).