Перспективные многопроцессорные системы

Institute for System Programming Russian Academy of Science
Sait: http://www.ispras.ru/


Традиционные архитектурные принципы построения ЭВМ, сформулированные фон Нейманом, использовались в неизменном виде свыше 40 лет. Основные из этих принципов следующие:

Возможности повышения скорости обработки в рамках фон-Неймановской архитектуры оказались исчерпанными из-за ограничений, определяемых последовательной выборкой команд и данных через общий интерфейс памяти. Для повышения производительности ЭВМ их архитектурные принципы должны будут претерпеть изменения, которые с наибольшей вероятностью выразятся во введении тех или иных видов параллелизма, имеющего целью преодоление узких мест фон-Неймановской архитектуры.
Известны четыре основных принципа реализации параллельной обработки, которые можно применить при проектировании новых систем.
  1. Потоковая архитектура, управляемая потоками данных, которые передаются от источников к потребителям, будучи обозначены маркерами данных. Обработка имеет место при наличии всех входных данных (в отличие от фон- Неймановской архитектуры, в которой последовательность управления обычно определяется командами программы). Потоковая архитектура ориентирована на распараллеливание обработки, особенно для машин баз данных, концепции построения которых соответствуют японскому проекту ЭВМ пятого поколения.
  2. Архитектура ОКМД, когда в ЭВМ одна и та же операция выполняется одновременно над различными данными. Большинство суперЭВМ представляют собой ОКМД-машины.
  3. Архитектура МКМД, в которой объединяется множество независимых ЭВМ, каждая со своей памятью, способных одновременно выполнять несколько различных операций.
  4. Архитектура МКМД, включающая множество подчиненных процессоров, которые могут быть по отдельности подключены к общей памяти с множественным доступом через коммутационную матрицу, управляемую ведущим процессором. Такая архитектура применена в экспериментальных мини-суперЭВМ.

Параллелизм может быть использован для повышения производительности ЭВМ на нескольких уровнях:
Категории a и b образуют рубрику, которая может быть названа классом параллельных ЭВМ, а разновидности c и d представляют собой более тонкие формы параллелизма, который иногда используется в блоках последовательной обработки и часто реализуется посредством конвейерных процессоров.
Основные архитектурные формы параллельных мультипроцессоров, которые используются в настоящее время, представлены ниже:
  1. Архитектура с потоком управления, суть которой в том, что отдельный управляющий процессор служит для посылки команд множеству процессорных элементов, состоящих из процессора и связанной с ним памяти.
  2. Архитектура с потоком данным, которая децентрализована в высокой степени и в которой параллельные команды посылаются вместе с данными во многие одинаковые процессорные элементы.
  3. Архитектура с управлением по запросам, в которой задачи разбиваются на менее сложные подзадачи и результаты выполнения которых после обработки данных снова объединяются для формирования окончательного результата. Команда, которую следует выполнять, определяется, когда ее результат оказывается нужным для другой активной команды.
  4. Архитектура с управлением наборами условий, в которой задачи разбиваются на менее сложные подзадачи, результаты решения которых снова соединяются и дают окончательный результат. Команда, которую следует выполнять, определяется, когда имеет место некоторый набор условий. Типичное применение такой архитектуры – распознавание изображений с использованием клеточных матриц процессорных элементов.
  5. Архитектура, содержащая ЭВМ с общей памятью, в которой используется та или иная система межсоединений для объединения процессоров с памятью. Системы межсоединений могут быть конструктивно оформлены в виде шин, колей, кубов, кэшей (быстродействующих буферных ЗУ большой емкости) или матриц переключателей.

Архитектура с параллельными процессорами, в которой используется высокая степень параллелизма, допускающая возможность независимого выполнения нескольких процессов на нескольких процессорах. Широко используемой формой структур параллельной обработки являются гиперкубы или двоичные n-кубы, в которых между вычислительными узлами имеют место двухпунктовые связи для передачи сообщений между обрабатывающими узлами. В 16-вершинном кубе каждый узел соединен с четырьмя ближайшими соседями.
В мультипроцессорных системах используют несколько процессоров, каждый из которых работает под управлением своих собственных команд и которые обычно обмениваются информацией через общую память. Одним из способов классификации мультипроцессорных систем является проявляющаяся в них степень связности составных частей. На рисунке проиллюстрировано четыре уровня связности, которые могут иметь место между процессорами. В системах с сильными связями процессоры объединены посредством системной шины, накладывающей ограничения на производительность системы. Взаимодействие через общую память является менее сильным видом связности, а для уменьшения ограничений, вносимых общей шиной, могут быть применены многопортовые запоминающие устройства. В случае использования нескольких автономных ЭВМ, снабженных каждая собственной операционной системой, объединенных в так называемый кластер и взаимодействующих с помощью коммуникационного программного обеспечения через сеть межсоединений, имеет место наиболее слабый уровень связности.
По виду взаимоотношений процессоров мультипроцессоры могут быть, кроме того, подразделены на системы с аутократическим управлением, с одной стороны, и системы с равноправными процессорами – с другой. В системах первого типа между процессорами имеют место отношения ''хозяев'' и ''подчиненных''. В системах с равноправными процессорами все они имеют одинаковые возможности доступа к общей шине.
Среди мультипроцессорных систем, состоящих из отдельных процессорных и запоминающих устройств, можно выделить системы с конфигурацией типа ''танцевальный зал'', в которых процессоры размещены в одном ряду, а запоминающие устройства, обращенные в их сторону, - в другом; соединение `процессоров с запоминающими устройствами осуществляется при этом посредством коммутационной сети. Другим крайним случаем организации мультипроцессоров является конфигурация типа ''будуар'', при которой каждый процессор тесно связан со своей собственной памятью, а коммутационная сеть служит для соединения между собой пар процессор-память.
Для описания способа организации параллельных вычислений используется также понятие одновременность, которое означает независимое, асинхронное функционирование параллельно работающих вычислительных устройств в противоположность их синхронному (или жесткому) взаимодействию в составе мультипроцессорной системы.
Фирма Meiko отказалась от использования жестких фиксированных топологий вычислительной поверхности, так как оценила эти топологии как компромисс, не позволяющий достичь абсолютной гибкости. Для различных областей применения требуются различные конфигурации; оптимальные топологии оказываются неодинаковыми для разных задач, решение которых может потребовать использования различных ресурсов. Так, например, для одних применений может понадобиться большая доля вычислительных ресурсов, а для других – наличие быстрых методов обращения к базам данных.
Гибкость вычислительной поверхности обеспечивается за счет наличия набор модульных подсистем, которым может быть придана любая топологическая конфигурация, соответствующая конкретному применению. Вычислительную поверхность можно рассматривать как целое процессорное хозяйство, работающее в многозадачном окружении, в котором на каждый вычислительный элемент приходится отдельная независимая задача. В этой ситуации многие реальные прикладные задачи могут решаться практически без каких-либо модификаций. С другой стороны, параллельность, внутренне присущая машине, может быть эффективно реализована в таких ситуациях, когда машина рассматривается со стороны задачи как однородный обрабатывающий ресурс.
Для того чтобы главная ЭВМ имела возможность создавать физическое отображение всей физической поверхности, предусмотрена поддерживающая инфраструктура. Пользуясь отображением и конфигурацией электронных средств, эта инфраструктура обеспечивает соединение топологических элементов в соответствии с высокоуровневым описанием, полученным из прикладной программы, которая должна быть загружена. Программные средства определяют как описание, выводимое на основе прикладной программы, так и машину, на которой эта программ будет выполняться. Программы могут быть написаны на языке Оккам или на других языках, таких, как Фортран, Си, Паскаль и т.д. Эти программы, выполняемые в соответствии с закономерностями языка Оккам, обеспечивают связь процессора с другими процессорами, которые, возможно, осуществляют копии той же программы.
Процесс формирования топологии обеспечивает иерархическое управление исходной программой, автоматическую рекомпиляцию, выдачу сообщений об ошибках в процессе выполнения, загрузку и прогонку программ в распределенном мультипроцессоре с использованием однофункциональных ключевых команд.

Гиперкуб, или двоичный N-куб.

Гиперкубическая архитектура впервые была разработана в Калифорнийском технологическом институте; основной ее принцип состоит в использовании множества микропроцессоров, каждый из которых снабжен локальной памятью, для формирования вычислительных узлов, соединенных между собой двухпунктовыми связями. Гиперкуб размерности n объединяет N=2n узлов, которые независимо работают над выполнением отдельных частей полной программы. Так, куб размерности 6 содержит 64 узла, каждый из которых связан с шестью ближайшими соседями в пределах 6-размерного куба.
Данные могут вводиться в узлы посредством сообщений, посылаемых по каналам связи от процессоров, выполняемых в других узлах, или от управляющего процессора куба. Для управления посылкой и получением сообщений служат специальные примитивы операционной системы. Ширина полосы пропускания сигналов связи гиперкуба растет с увеличением числа узлов пропорционально N log2N, задержка в худшем случае составляет log2N.
Гиперкуб можно определить индуктивно; гиперкуб порядка N+1 может быть построен путем удвоения гиперкуба порядка N и соединения двух наборов узлов. Такой подход позволяет создавать программное обеспечение для гиперкубов любых размерностей; необходимо лишь определить размерность на время выполнения программы. Возможно также разделить большую гуперкубическую машину на субкубы, отвести каждой программе узлы в количестве, обеспечивающем максимально эффективное ее выполнение, и использовать узлы, являющиеся в данный момент избыточными, для других программ вместо того, чтобы оставлять их без применения.
Гиперкуб представляет собой сеть с максимально возможной плотностью соединений; его объем может охватывать тысячи процессоров, потому что для удвоения количества процессоров к каждому узлу должен быть добавлен всего один коммуникационный канал. Плотность взаимосвязи узлов определяет практичность использования всей системы соединений, представляющей собой принципиально важную аппроксимацию параллельной вычислительной системы, так как конкретная конфигурация связей зачастую непредсказуема.
Если узлы пронумированы от 0 до 2n-1, каждый процессор непосредственно связан со всеми теми, номера которых отличаются от его номера одной двоичной цифрой. Отбрасывая некоторые связи гиперкуба, можно отобразить в него многие другие виды сетевой топологии, к числу которых относятся следующие:
  1. решетки, или сетки размерностью до N;
  2. кольца;
  3. цилиндры;
  4. тороиды;
  5. топология ''бабочка'' для БПФ.

В гиперкубах используется высокоуровневая форма параллелизма, которую называют параллельной обработкой, обеспечивающей асинхронное выполнение операций в мультипроцессорной системе. Для увеличения производительности отдельных узлов, в работе которых имеет место значительная доля векторной обработки, может быть применен этот вид обработки. Максимальная производительность, которая может быть достигнута в подобной вычислительной системе, определяется как произведение производительности параллельной, векторной и скалярной обработки для данного применения. Для обеспечения максимальной производительности, достижимой с учетом ограничений, налагаемых степенью параллельности, которая присутствует в решаемой прикладной задаче, необходимо использовать языки параллельного программирования, такие, как Оккам.

Назад