А. В. Каляев
ПРИНЦИПЫ ОРГАНИЗАЦИИ МНОГОПРОЦЕССОРНЫХ
СИСТЕМ СВЕРХВЫСОКОЙ ПРОИЗВОДИТЕЛЬНОСТИ
Переход от классических принципов организации
вычислительных систем к новым принципам представ-
ляет собой концепцию синтеза многопроцессорных вы-
числительных систем сверхвысокой производительности
с программируемой архитектурой, распределенной па-
мятью, машинными языками высокого уровня и про-
фессорами с программируемой структурой, реализую-
щими макрооперации над потоками данных.
Необходимость создания многопроцессорных вычис-
лительных систем возникает в тех случаях, когда тре-
буется обеспечить исключительно высокие характерис-
тики и эксплуатационные качества вычислительных
устройств. Одним из наиболее распространенных тре-
бований, предъявляемых к вычислительным системам,
•является требование высокой, а в ряде случаев и
■сверхвысокой информационной производительности.
Это требование часто возникает при использовании
вычислительных систем для целей управления и циф-
рового моделирования, когда вычислительные системы
должны работать с опережением реальных процессов
в управляемом или моделируемом объекте и обеспе-
чивать при этом высокую точность вычислений. Особен-
но остро эта проблема ставится, если необходимо
управлять высокодинамичными, быстро функциониру-
ющими объектами, в которых процессы протекают в
-короткие премежутки времени и весьма чувствительны
к точности управления.
Во многих случаях при работе вычислительных
систем в реальном масштабе времени точность и ско-
рость вычислений связаны обратно пропорциональной
зависимостью, поэтому для того, чтобы обеспечить од-
новременно заданную точность и работу в реальном
-я тем более опережающем масштабе времени, вычис-
лительные системы должны обладать очень высоким
■быстродействием.
Для задач, не требующих решения в реальном
масштабе времени, но связанных с необходимостью
переработки сверхбольших .объемов информации в
разумные интервалы времени (задачи вычислительно-
го эксперимента, расчета систем с распределенными
параметрами, сложные нелинейные нестационарные
■системы дифференциальных уравнений с частными
производными и другие) также необходим переход
от однопроцессорных ЭВМ с общей сосредоточенной
памятью к мощным многопроцессорным суперсистемам
•с распределенной памятью, обеспечивающей парал-
лельный обмен информацией одновременно со всеми
процессорами.
Для обеспечения максимальной скорости вычисле-
ний и повышения производительности вычислительной
■системы необходимо как можно полнее использовать
внутреннюю естественную параллельность, присущую
большинству решаемых задач и моделируемых объек-
тов. В классических однопроцессорных вычислитель-
ных системах естественные параллельные процессы и
связи, существующие в решаемых задачах и модели-
руемых объектах, преобразуются в чисто последова-
тельную, развернутую во времени процедуру перера-
ботки информации. В результате пространственные и
структурные характеристики решаемой задачи или
моделируемого объекта не находят адекватного отоб-
ражения в структуре системы (адекватность сохра-
;няется только в отношении логических и математичес-
ких зависимостей и свойств). Это резко снижает про-
изводительность, создает трудности в организации
взаимодействия вычислительной системы с внешними
объектами, сложности в программировании и транс-
ляции.
Более естественным и эффективным является струк-
турный метод организации вычислений, который обес-
печивает адекватное отображение в вычислительной
системе не только математических зависимостей и опе-
раторов решаемой задачи или моделируемого объек-
та, но и их внутренней структуры, внутренних связей
между отдельными частями задачи или объекта.
Наряду с требованиями высокой производительно-
сти и широкого использования естественного паралле-
лизма в структуре задач к современным вычислитель-
ным системам предъявляются высокие требования по
обеспечению живучести и надежности. Чтобы обеспе-
чить высокую живучесть вычислительной системы, не-
обходима возможность взаимозаменяемости ее струк-
турных частей и однотипность последних. Единствен-
ная реальная перспектива обеспечения живучести ле-
жит на пути создания многопроцессорных вычисли-
тельных систем,- позволяющих заменять вышедшие из
строя процессоры, секторы памяти и другие элементы
системы эквивалентными сохранившимися элемента-
ми, которые в процессе вычислений не загружены илй
выполняют менее ответственные функции и могут быть
переключены на выполнение других задач без особого
ущерба для дальнейшей работы системы. При этом,
конечно, необходима эффективная система переключе-
ния процессоров, секторов памяти и других составных
частей многопроцессорной системы.
Требуемая надежность вычислительной системы мо-
жет быть обеспечена, а в необходимых случаях и по-
вышена, за счет использования методов мажорирования,
которые достаточно просто реализуются в многопро-
цессорных системах путем соответствующей организа-
ции каналов связи между параллельно работающими
процессорами, секторами памяти и другими узлами.
Существенное повышение надежности обеспечивается
также за счет широкого использования при конструи-
ровании многопроцессорных вычислительных систем:
минимального числа типов БИС и СБИС и регулярно-
сти их соединений.
Важным является требование возможности нара-
щивания аппаратурных ресурсов вычислительной сис-
темы в процессе ее эксплуатации и расширение таким
образом ее функциональных способностей. Многопро-
цессорные системы, состоящие из однотипных процес- '
соров, секторов памяти, коммутационных и других
элементов решают эту проблему. Технически наращи-
вание аппаратурных ресурсов осуществляется путем
регулярного подключения к находящейся в эксплуата-
ции многопроцессорной системе дополнительных БИС
и СБИС процессоров, памяти и других элементов.
Главная проблема при синтезе многопроцессорных
вычислительных систем — снижение затрат времени на
обмен данными между параллельно работающими про-
цессорами и на программные операции, необходимые
для организации эффективного взаимодействия всех
процессоров системы, участвующих в решении зада-
чи. Другая проблема — повышение скорости обмена
данными между процессорами системы и памятью и
устранение очередей в процессе такого обмена.
Очень важно также создать предпосылки повыше-
ния информационной производительности каждого про-
цессора многопроцессорной системы, т. е. увеличить
его быстродействие за счет повышения тактовой час-
тоты и организации параллельных вычислений с ис-
пользованием машинного языка макроопераций.
Необходимо, наконец, синтезировать такую архи-
тектуру многопроцессорной системы, которая обеспе-
чивала бы простоту программирования задач и транс-
ляции с внешних языков высокого уровня на внут-
ренний параллельный машинный язык, а также широ-
кие возможности операционной системы, предназна-
ченной для распределения заданий между параллель-
но работающими процессорами и управления их сов-
местной деятельностью. По существу эта проблема
сводится к организации в многопроцессорной системе
мощной программируемой системы каналог связи и
приближении внутренних машинных языков многопро-
цессорной системы к внешним языкам высокого уровня.
В последние десять-пятнадцать лет проведены ши-
рокие исследования и созданы высокопроизводитель-
ные многопроцессорные вычислительные системы, в
той или иной мере отвечающие сформулированным
требованиям. Эти системы, как правило, имеют жест-
кую архитектуру, в которой структура каналов связей
между процессорами, процессорами и памятью при
эксплуатации системы не изменяется.
Отличительной особенностью известных архитектур
многопроцессорных вычислительных систем — магист-
ральных, конвейерных, векторных, матричных, и иерар-
хических и т. д. является то, что они позволяют полу-
чить максимальную производительность лишь для тех
классов задач, внутренняя структура которых адекват-
на архитектуре системы. При переходе к другим клас-
сам задач существенно осложняется обмен информа-
цией в процессе решения между параллельно работа-
ющими процессорами, падает скорость обмена и в ре-
зультате значительно снижается производительность
вычислительной системы в целом.
Помимо этого, неадекватность структуры задач и
архитектуры многопроцессорных вычислительных сис-
тем приводит к сложному программированию, к труд-
ностям распределения отдельных частей задач между
параллельно работающими процессорами. Значительно
осложняется согласование параллельно работающих
процессоров и управление процедурой переработки ин-
формации.
Большие трудности решения этих проблем обуслов-
лены рядом известных принципов, положенных в осно-
ву архитектуры классических однопроцессорных ЭВМ,
которые часто без каких-либо изменений и достаточных
оснований переносятся в архитектуру многопроцессор-
ных систем. К ним относятся: жесткая архитектура
системы; процедурная реализация задач; фон-Нейма-
новский принцип потока управления; организация па-
мяти, общей для всей системы; выполнение макроопе-
раций в процессорах на основе последовательности
элементарных операций; низкий уровень внутренних
машинных языков; представление и обработка инфор-
мации параллельными кодами; процедурный принцип
организации обменов информацией между процессора-
ми, а также между процессорами и памятью системы.
Если эти принципы используются при синтезе много-
процессорных вычислительных систем, они в той или
иной степени отрицательно влияют на их работу и
приводят к снижению производительности.
Опыт разработки и эксплуатации многопроцессор-
ных систем подсказывает, что для повышения их про-
изводительности во многих случаях целесообразно и
даже необходимо отказаться от перечисленных клас-
сических принципов и перейти к новым принципам
синтеза архитектуры многопроцессорных систем.
От использования жесткой архитектуры следует пе-
рейти к программируемой архитектуре многопроцес-
сорной вычислительной системы; способ процедурной
реализации задач в вычислительной системе заме-
нить способом структурной реализации, структурного
моделирования. Важен переход от фон-Неймановского
принципа потока управления к принципу потока дан-
ных. Существенное значение имеет переход от органи-
зации сосредоточенной общей для всей вычислитель-
ной системы памяти к распределенной памяти, обеспе-
чивающей прямой параллельный доступ для всех про-
процедурного принципа выполнения макроопераций в
процессорах системы в виде последовательности эле-
ментарных команд и переход к аппаратному, струк-
турному принципу реализации макроопераций за счет,
соответствующей настройки внутренней коммутации
процессоров.
Необходимо, далее, сделать решительный шаг и
перейти от использования внутренних машинных язы-
ков низкого уровня, строящихся на основе набора про-
шизаци
>аций
уровня, основанным на
операций, реализуемых <
торых случаях может oi
представления и обработ
лельных кодов и перехо;
ке информации в последо
Наконец, важное зна<
. ного принц
процессора»
системы, принципом программиро!
мутационной систем
вающих непосредст]
речисленными узла!^
юм наборе макро-
[аратурным путем. В неко-
аться полезным отказ от
информации в виде парал-
: представлению и обработ-
гельных кодах,
не имеет замена процедур-
[ обменов данными между
обмен
. Переход с
лм принципам предст
новую концепцию мн
с систем с программ!
систем!
и между пе-
«еских прин-
: рассмотрен-
тляет собой в сово-
>гопроцессорных вычис-
>уемой архитектурой.
Многопроцессорные системы с программируемой
архитектурой существенно отличаются от многопро-
цессорных систем с жесткой архитектурой своей высо-
кой производительностью, простотой организации вы-
числительных процессов, наглядностью и гибкостью
программирования, простотой трансляторов, высокой
живучестью и надежностью, возможностью разделе-
ния аппаратурных ресурсов между потребителями и
способностью организации виртуальных многопроцес-
сорных систем. Такие системы должны иметь мощную
универсальную коммутационную структуру (КС), ко-
торая позволит образовывать путем программирования
любые прямые каналы связи между входами и выхода-
ми процессоров, входящих в систему, между процес-
сорами и распределенной памятью, а также между от-
дельными секторами памяти (рис. 1). Универсальная
Рис. 2. Структура многопроцессорной вычислительной
системы с программируемой архитектурой
Рис. 2. Структура многопроцессорной вычислительной
системы с программируемой архитектурой
коммутационная структура дает возможность запро-
граммировать при решении любой задачи такую сис-
тему каналов связи между процессорами многопроцес-
сорной системы, которая будет адекватна внутренней
структуре решаемой задачи.
Программирование прямых каналов связи обеспе-
чивает наилучшее распараллеливание вычислительного
процесса, высокую скорость обмена данными между
процессорами и линейный рост производительности
системы в зависимости от числа задействованных в
решении задачи процессоров, что не удается обеспе-
чить в многопроцессорных системах с жесткой архи-
тектурой.
Конструктивно многопроцессорная вычислительная
система с программируемой архитектурой может быть
выполнена в модульной форме (рис. 2) и состоять из
СБИС, каждая из которых включает процессор, сек-
тор распределенной памяти и локальную коммутаци-
онную структуру. Внутренние каналы связи СБИС
организуются так, чтобы процессор имел прямой дос-
туп к распределенной памяти и к коммутационной
структуре, а распределенная память была бы связана
прямым каналом связи с коммутационной структурой.
Такие СБИС соединяются регулярно при помощи же-
стких каналов между ближайшими локальными ком
мутационными структурами, в результате чего обра
зуется общая программируемая коммутационная струк
тура и многопроцессорная система с программируе
мой архитектурой в целом.
Рис. 4. Структура многопроцессорной системы с кон-
вейерной архитектурой
Рис. 4. Структура многопроцессорной системы с кон-
вейерной архитектурой
Многопроцессорные системы с программируемой
архитектурой дают возможность образовывать вирту-
альные многопроцессорные системы других классов.
В частности, в такой системе может быть легко за-
программирована любая известная жесткая многопро-
цессорная система: магистральная (рис. 3), конвейер-
ная (рис. 4), матричная (рис. 5), иерархическая
(рис. 6). Это соответствует программированию вир-
туальных машин в однопроцессорных ЭВМ, однако в
многопроцессорной системе с программируемой архи-
тектурой виртуальная вычислительная система реали-
зуется аппаратурно, структурно, а не процедурно.
Таким образом, мощная программируемая комму-
тационная структура обеспечивает быструю пере-
стройку многопроцессорной системы на любую архи-
тектуру, как известную, так и такую, которая может
быть предложена в дальнейшем. В настоящее время
созданы большие интегральные схемы коммутаторов
(БИСК) со значительным числом входов и выходов,
которые позволяют программировать соединение любо-
го входа БИСК с любой группой выходов. Из подоб-
ных БИСК могут быть образованы весьма мощные
коммутационные структуры с сотнями и даже тыся-
чами входов и выходов, которые обеспечивают воз-
можность программирования, настройки и перестрой-
ки сотен и тысяч каналов связи в процессе работы мно-
гопроцессорной системы.
Рис. 3. Структура многопроцессорной системы с маги- Рис. 5. Структура многопроцессорной системы с матрич-
стральной архитектурой ной архитектурой
Основу организации вычислительных процессов в
многопроцессорных системах с программируемой ар-
хитектурой составляет принцип потока данных. Как
известно, господствующий в настоящее время при раз-
работке и синтезе ЭВМ и даже большинства много-
процессорных систем фон-Неймановский принцип по-
тока управления заключается в том, что программой
задается поток инструкций, под воздействием которо-
го системой управления в процессоре организуется
процедура обработки данных. Поток инструкций цир-
кулирует в соответствии с программой между сосредо-
точенной памятью, системой управления и процессо-
ром. Каждая инструкция (команда) потока определя-
ет необходимые данные, которые должны быть извле-
чены из памяти, операцию, выполняемую над ними,
адрес памяти, куда направляется результат и очеред-
ную инструкцию потока управления.
Принцип потока данных, используемый при синте-
зе многопроцессорных систем с программируемой ар-
хитектурой, состоит в том, что к каждому процессору
многопроцессорной системы подводится поток данных,
под воздействием которого процессор настраивается
на необходимые операции и затем эти операции вы-
полняются над поступившими данными. Инструкции
в многопроцессорной системе, основанной на этом
принципе (рис. 7), распределяются заранее или в про-
цессе решения задач операционной системой и систе-
мой управления между параллельно работающими
процессорами. Поступившие в процессоры инструкции
не изменяются затем в течение длительного периода
времени, необходимого для реализации законченного
алгоритма или даже для решения задачи в целом.
Одновременно с распределением инструкций между
процессорами операционная система и система управ-
ления задают в коммутационной структуре многопро-
цессорной системы каналы связи для передачи пото-
ков данных между процессорами, а также между про-
цессорами и распределенной памятью.
В результате в многопроцессорной системе с про-
граммируемой архитектурой каждый процессор реа-
лизует одну из инструкций, которая начинает выпол-
няться, как только поступают соответствующие дан-
ные, а результаты сразу же передаются для дальней-
шей обработки в следующие параллельно функциони-
рующие процессоры. Таким образом, каждый процес-
сор обрабатывает определенный поток данных, ис-
пользуя для этого одну длительно действующую инст-
рукцию и выполняя соответствующую ей операцию.
Отличительной особенностью такого подхода является
безадресная работа с данными и использование раз-
дельных каналов связи для передачи данных и обме-
на инструкциями.
При разработке многопроцессорных систем с про-
граммируемой архитектурой за основу принят прин-
цип организации распределенной памяти, к которой
все процессоры системы могут обращаться параллель-
но без очередей. Мощная коммутационная структура
обеспечивает возможность образования прямых кана-
лов связи для перекачки информации из одного секто-
ра памяти в другой и обмена данными между каждым
процессором и любым сектором распределенной памя-
ти. Однако полностью исключать из многопроцессор-
ной системы с программируемой архитектурой общую
сосредоточенную память нецелесообразно. Ее удобно
использовать в сочетании с распределенной памятью
для хранения редко используемой в процессорах ин-
формации и извлекать последнюю по мере необходи- ;
мости, образуя для этого в программируемой комму-
тационной структуре временные прямые каналы связи
(см. рис. 7).
В многопроцессорных системах с программируемой
архитектурой используется, аппаратурный принцип реа-
лизации макроопераций, при котором программируется
не процедура последовательности простейших команд
и соответствующих им операций, как это делается в
обычных классических процессорах, а внутреняя
структура процессора. Решается эта задача путем
введения в процессор внутренней коммутационной
структуры.
Организация внутренней структуры процессоров,
основанных на принципе программирования аппарату-
ры, значительно отличается от классических процессо-
ров, основанных на принципе программирования про-
цедуры. Классический процессор, использующий про-
цедурный принцип выполнения макроопераций, содер-
жит как известно, арифметическо-логическое устройст-
во, блок регистров, интерфейс и систему управления.
В отличие от него, процессор с программируемой
структурой, основанный на принципе аппаратурной
реализации макроопераций, содержит наборы элемен-
тарных процессоров (рис. 8), выполняющих простей-
шие операции типа арифметических; элементарных
коммутаторов, обеспечивающих соединение элементар-
ных процессоров в схему, реализующую крупную опе-
рацию (макрооперацию); секторов памяти операций,
обеспечивающих настройку на соответствующие эле-
ментарные операции; секторов памяти коммутаций, оп-
ределяющих настройку элементарных коммутаторов на
образование каналов связи, которые формируют из
элементарных процессоров схему, осуществляющую не-
обходимую макрооперацию; секторов оперативной па-
мяти, предназначенных для хранения обрабатываемых
данных. Программирование макроопераций в таком
процессоре осуществляется настройкой элементарных
процессоров на элементарные операции с помощью
памяти операций и последующего программиро-
вания необходимых каналов связи между элемен-
тарными процессорами за счет настройки элементарных
коммутаторов при помощи памяти коммутаций.
Процессоры с программируемой структурой не толь-
ко решают задачу аппаратурной реализации макроопе-
раций и их структурного программирования, но одно-
временно создают основу для перехода от внутренних
машинных языков низкого уровня к машинным
языкам высокого уровня, которые приближаются к
внешним языкам высокого уровня и тем самым упро-
щают трансляцию и программирование.
Использование в многопроцессорных системах с
программируемой архитектурой мощных коммутацион-
ных систем и процессоров с программируемой структу-
рой, основанных на принципе аппаратурной реализации
макроопераций, приводит к необходимости перехода от
параллельных кодов, широко используемых в классиче-
ских ЭВМ для представления, передачи и обработки
информации, к последовательным кодам, позволяющим
значительно уменьшить число необходимых коммута-
ционных элементов и настраиваемых каналов связи в
коммутационных системах и упростить структуру про-
цессоров.
Однако следует иметь в виду, что выполнение опе-
раций над последовательными кодами путем их обра-
ботки младшими разрядами вперед в процессорах с
программируемой структурой требует значительного
времени, в несколько раз превышающего время про-
хождения одного последовательного слова. Кроме это-
го, для различных операций требуются неодинаковые
затраты времени, что создает технические трудности
при реализации макроопераций. В связи с этим в мно-
гопроцессорных системах с программируемой архитек-
турой оказывается более удобным использовать знако-
разрядную двоичную систему, которая позволяет вы-
полнять операции над последовательными знакоразряд-
ными кодами старшими разрядами вперед за время, не-
обходимое для прохождения слова и нескольких допол-
нительных служебных тактов. При этом обеспечивается
возможность по мере выдачи процессором старших раз-
рядов результата сразу же использовать их в других
процессорах, не ожидая появления младших разрядов.
В результате снижается время на реализацию макро-
операций и стандартизируется время, необходимое для
выполнения различных операций, а также существенно
уменьшается оборудование, необходимое для организа-
ции каналов связи.
Отличительной особенностью многопроцессорных си-
стем с программируемой архитектурой является просто-
та программирования, которое по существу сводится к
двум простым этапам. Первый этап состоит в распре-
делении макроопераций между процессорами системы в
соответствии с решаемой задачей. Распределение вы-
полняется на машинном языке высокого уровня, прак-
тически совпадающим с внешним входным языком вы-
сокого уровня. Второй этап заключается в настройке в
соответствии со структурой задачи необходимых кана-
лов связи между процессорами, а также между про-
цессорами^ распределенной памятью, что осуществляет-
ся программированием коммутационной структуры мно-
гопроцессорной системы. После этого многопроцессор-
ная система работает в автоматическом режиме, в те-
чение которого в нее вводится и перерабатывается не-
обходимая информация и выдаются результаты вычис-
лений. Перепрограммирование структуры процессоров и
коммутации системы производится только при перехо-
де от. одной задачи к другой.
Следует отметить такую функциональную возмож-
ность многопроцессорной системы с программируемой
архитектурой, как работа со многими потребителями
путем распределения между ними аппаратурных ресур-
сов системы, осуществляемого соответствующей на-
стройкой коммутационной структуры. Здесь имеется
принципиальное отличие от однопроцессорных ЭВМ и от
многопроцессорных систем с жесткой архитектурой, в
которых при работе с многими потребителями осущест-
вляется разделение времени, а не аппаратурных ре-
сурсов.
Вследствие однотипности процессоров, однородности
распределенной памяти и коммутационной структуры
многопроцессорные системы с программируемой архи-
тектурой отличаются высокой технологичностью и ре-
монтоспособностью, а также способностью к наращи-
ванию аппаратурных ресурсов. Все структурные эле-
менты этих систем могут быть изготовлены в виде
БИС или СБИС, причем число типов необходимых БИС
и СБИС невелико. Многопроцессорные системы с про-
граммируемой архитектурой обладают высокой живу-
честью и надежностью — они продолжают эффективно
работать при выходе из строя даже значительной час-
ти входящих в систему микропроцессоров, секторов рас-
пределенной памяти или локальных элементов комму-
тационной структуры.
Статья поступила 2 апреля 1984 г.
НА КНИЖНОЙ ПОЛКЕ
Цветков А. Н., Епанечников В. А. При-
кладные программы для микроЭВМ «Электроника
БЗ-34», «Электроника МК-56», «Электроника МК-54»,—
М.: Финансы и статистика, 1984.
Книга содержит алгоритм и программы, позволяю-
щие автоматизировать процесс решения типовых мате-
матических, научно-технических, экономико-статистичес-
ких и учебных задач.
Штернберг Л. Ф. Разработка и отладка про-
грамм. — М.: Радио и связь, 1984, 6,5 л., 35 к.
Рассмотрена технология работы программиста, раз-
рабатывающего автономную программу или модуль
программного комплекса: от получения задания до
оформления документации. Центральное место зани-
мают вопросы оптимизации программы по различным
параметрам (скорости, памяти и т. д.) и практические
приемы отладки программ, которые мало освещены в
литературе. Изложение иллюстрируется примерами.
УДК 681.325.5:681.326.1