ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 19.06.2021

Просмотров: 219

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Тема 8. Архитектурные особенности организации ЭВМ различных классов


Лекция 17. Архитектурные особенности организации ЭВМ различных классов.


1. ВС на базе транспьютеров.

2. Вычислительные системы с управлением вычислениями от потока данных. Архитектура потоковых ВС. Макропотоковые ВС. Гиперпотоковая обработка.

3. ВС с управлением вычислениями по запросу.




1. ВС на базе транспьютеров


Появление транспьютеров связано с идеей создания различных по производительности ВС (от небольших до мощных массивно-параллельных) посредством прямого соединения однотипных процессорных чипов. Сам термин объединяет два понятия – «транзистор» и «компьютер».

Транспьютер – это сверхбольшая интегральная микросхема (СБИС), заключающая в себе центральный процессор, блок операций с плавающей запятой, статическое оперативное запоминающее устройство, интерфейс с внешней памятью и несколько каналов связи.

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

На базе транспьютеров легко могут быть построены различные виды ВС (рис.1). Так, четыре канала связи обеспечивают построение двухмерного массива, где каждый транспьютер связан с четырьмя ближайшими соседями.

Рис.1 Группы из полностью взаимосвязанных транспьютеров: а – два транспьютера; б – три транспьютера; в – четыре транспьютера


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

Принято говорить о двух поколениях транспьютеров и языка Occam. Первое поколение отражает требования тех приложений, для которых транспьютеры и разрабатывались: цифровой обработки сигналов и систем реального времени. Для подобных задач нужны сравнительно небольшие В С со скоростными каналами связи (главным образом, между соседними процессорами) и быстрым переключением контекста.

С появлением вычислительных систем второго и третьего поколений стало ясно, что ВС на транспьютерах ранней организации уже стали неконкурентоспособными, что и побудило к созданию их второго поколения (Т9000). Главная особенность транспьютеров второго поколения – развитые коммуникационные возможности, хотя в вычислительном плане, даже несмотря на наличие в них блоков для операций с плавающей запятой, они сильно уступают универсальным микропроцессорам.


Обобщенная структура транспьютера, показанная на рис. 2, включает в себя:

Рис. 2


центральный процессор;

АЛУ для операций с плавающей запятой;

каналы связи;

внутреннюю память (ОЗУ);

интерфейс для подключения внешней памяти;

интерфейс событий (систему прерываний);

логику системного сервиса (систему обслуживания);

таймеры.

Первый транспьютер содержал 16-разрядный арифметический процессор. Последующие транспьютеры были оснащены 32-разрядным целочисленным процессором и процессором с плавающей запятой (ПЗ) (до 100 MIPS). Версии, поддерживающие процессор с ПЗ, организованы так, что этот процессор и целочисленный процессор могут работать одновременно.

Сам по себе процессор транспьютера построен по архитектуре RISC, имеет микропрограммное УУ, а команды в нем выполняются за минимальное число циклов процессора. Простые операции, такие как сложение или вычитание, занимают один цикл, в то и время как более сложные операции требуют нескольких циклов, Команды состоят из одного или нескольких байтов. Большинство версий транспьютеров имеют по четыре последовательных канала связи со скоростью передачи по каналу порядка 10 Мбит/с. По мере развития транспьютеров повысилась скорость передачи по каналам связи и появилась возможность подключения внешней памяти через интерфейс памяти. Схема этого интерфейса программируется и способна формировать различные сигналы для удовлетворения различных требований самых разнообразных микросхем внешней памяти.

Передача информации производится синхронно под воздействием либо общего генератора тактовых импульсов (ГТИ), либо локальных ГТИ с одинаковой частотой следования импульсов. Информация передается в виде пакетов. Каждый раз, когда пересылается пакет данных, приемник отвечает пакетом подтверждения.

Для коммуникаций между процессами внутри транспьютера вместо внешних каналов операторы ввода/вывода используют внутренние каналы транспьютера.

Интерфейс событий дает возможность внешнему устройству привлечь внимание и получить подтверждение. Этот интерфейс функционирует как входной канал и аналогично программируется.




2. Вычислительные системы с управлением вычислениями от потока данных


В потоковой вычислительной модели для описания вычислений используется ориентированный граф, иногда называемый графом потоков данных (dataflow graph). Этот граф состоит из узлов или вершин, отображающих операции, и ребер или дуг, показывающих потоки данных между теми вершинами графа, которые они соединяют. Узловые операции выполняются, когда по дугам в узел поступила вся необходимая информация. Обычно узловая операция требует одного или двух операндов, а для условных операций необходимо наличие входного логического значения. По выполнении операции формируются один или два результата. Таким образом, у каждой вершины может быть от одной до трех входящих дуг и одна или две выходящих. После активации вершины и выполнения узловой операции (это иногда называют инициированием вершины) результаты передаются по ребрам к ожидающим вершинам. Процесс повторяется, пока не будут инициированы все вершины и получен окончательный результат. Одновременно может быть инициировано несколько узлов, при этом параллелизм в вычислительной модели выявляется автоматически.


Рис. 3. Потоковый граф


На рис. 3 показан простой потоковый граф для вычисления выражения f= А/В + В С. Входами служат переменные А, В и С, изображенные вверху графа. Дуги между вершинами, показывают тракты узловых операций. Направление вычислений – сверху вниз. Используются три вычислительные операции: сложение, умножение и деление. При этом В требуется в двух узлах. Вершина «Копирование» предназначена для формирования дополнительной копий переменной В.

Данные (операнды/результаты), перемещаемые вдоль дуг, содержатся в опознавательных информационных кадрах, маркерах специального формата – «токенах» – (иначе «фишках» или маркерах доступа).

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

Процесс обработки может выполняться аналогично конвейерному режиму: после обработки первого набора входных сигналов на вход графа может быть подан второй и т. д. Отличие состоит в том, что промежуточные результаты (токены) первого вычисления не обрабатываются совместно с промежуточными результатами второго и последующих вычислений. Результаты обычно требуются в последовательности использования входов.

Все известные потоковые вычислительные системы могут быть отнесены к двум основным типам: статическим и динамическим. В свою очередь, динамические потоковые ВС обычно реализуются по одной из двух схем: архитектуре с помеченными токенами и архитектуре с явно адресуемыми токенами.

Архитектура потоковых вычислительных систем

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

Рис. 4. Пример формы хранения потоковой программы


Структурная схема потоковой вычислительной системы (рис. 5) включает в себя блок управления (CS), где хранится потоковый граф, который используется для выборки обрабатываемых команд, а также функциональный блок (FS), выполняющий команду, переданную из CS, и возвращающий результат ее выполнения в CS.

Рис. 5. Структура потоковой вычислительной систмы


Блоки CS и FS работают асинхронно и параллельно, обмениваясь многочисленными пакетами команд и результатами их выполнения. В пакете результата, поступающем из блока FS, содержится значение результата (val) и адрес команды, для которой пакет предназначен (des). На основании этого адреса блок CS проверяет возможность обработки команды. Команда может быть однооперандной или двухоперандной. В последнем случае необходимо подтверждение наличия обоих операндов (opr 1 и opr 2), и для этого устанавливается специальный признак. Блок управления загрузкой (LC) каждый раз при активировании определенной функции загружает из памяти программ код этой функции.


Для повышения степени параллелизма блоки CS и FS строятся по модульному принципу, а графы потоковой программы распределяются между модулями с помощью мультиплексирования.

Статические потоковые вычислительные системы

Статическая потоковая архитектура, известная также под названием «единственный-токен-на-дугу» (single-token-per-arc dataflow) допускает присутствие на ребре графа не более чем одного токена. Это выражается в правиле активации узла: вершина активируется, когда на всех ее входных дугах присутствует по токену и ни на одном из ее выходов токенов нет. Для указания вершине о том, что ее выходной токен уже востребован последующим узлом (узлами) графа, в ВС обычно прибегают к механизму подтверждения с квитированием связи, как это показано на рис. 6. Здесь процессорами в ответ на инициирование узлов графа посылаются специальные контрольные токены.

Рис. 6 Механизм подтверждения с квинтированием


Типовую статическую потоковую архитектуру иллюстрирует рис. 7.


Рис. 7 Структура ПЭ типовой статической потоковой системы


Память действий (узел потоковой машины, хранящий потоковый граф и циркулирующий на нем поток данных) состоит их двух блоков памяти: команд/данных и управляющей памяти. Вершина графа представлена в памяти команд/данных кадром, содержащим следующие поля:

код операции;

операнд 1;

операнд N;

вершина/дуга 1;

вершина/дуга К.

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

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


Динамические потоковые вычислительные системы

Производительность потоковых систем существенно возрастает, если они в состоянии поддерживать дополнительный уровень параллелизма, соответствующий одновременному выполнению отдельных итераций цикла или параллельной обработке пар элементов в векторных операциях. Кроме того, в современных языках программирования активно используются так называемые реентерабельные процедуры, когда в памяти хранится только одна копия кода процедуры, но эта копия является повторно входимой (реентерабельной). Это означает, что к процедуре можно еще раз обратиться, не дожидаясь завершения действий в соответствии с предыдущим входом в данную процедуру. Отсюда желательно, чтобы все обращения к реентерабельной процедуре также обрабатывались параллельно. Задача обеспечения дополнительного уровня параллелизма решается в динамических потоковых ВС и реализуется двумя вариантами архитектуры потоковой ВС: архитектуры с помеченными токенами и архитектуры с явно адресуемыми токенами.

Архитектура потоковых систем с помеченными токенами

В архитектуре с помеченными токенами (tagged-token architecture) память хранит один экземпляр потокового графа. Каждый токен содержит тег (фишку), состоящий из адреса команды, для которой предназначено заключенное в токене значение, и другой информации, определяющей вычислительный контекст, в котором данное значение используется, например номера итерации цикла. Этот контекст называют «цветом значения», а токен соответственно называют «окрашенным», в силу чего метод имеет еще одно название – метод окрашенных токенов. Каждая дуга потокового графа может рассматриваться как хранилище, способное содержать произвольное число токенов с различными тегами. Основное правило активирования вершины в динамических потоковых ВС имеет вид: вершина активируется, когда на всех ее входных дугах присутствуют токены с идентичными тегами.

Типовая архитектура потоковой системы с помеченными токенами показана на рис. 8.

Рис. 8. Архитектура потоковой системы с помеченными токенами


Для обнаружения одинаково окрашенных токенов (токенов с одинаковыми тегами) в конвейер процессорного элемента введен согласующий блок. Этот блок получает очередной токен из очереди токенов и проверяет, нет ли в памяти согласования его партнера (токена с идентичным тегом). Если такой партнер не обнаружен, принятый токен заносится в память согласования. Если же токен-партнер уже хранится в памяти, то блок согласования извлекает его оттуда и направляет оба токена с совпавшими тегами в блок выборки. На основе общего тега блок выборки находит в памяти команд/данных соответствующую команду и формирует пакет операции, который затем направляет в функциональный блок. Функциональный блок выполняет операцию, создает токены результата и помещает их в очередь токенов. Чтобы учесть возможные ситуации – циклы, элементы массивов, функции и рекурсии, – тег каждого токена должен включать в себя три поля: Уровень итерации; Имя функции; Индекс.