Многие слышали о многоклеточной архитектуре, процессорах и даже первых устройствах на их основе.
Особо продвинутые пользователи тестировали свои алгоритмы.
Были проведены первые простые тесты производительности, а также пользовательские Барсмонстр , вытравил кристалл процессора P1. Процессор R1 сейчас проходит первые испытания и вскоре станет доступен каждому.
Но не все знают ответ на вопрос, как работает многоклеточная архитектура и в чем ее отличие.
Давайте попробуем сейчас освежить ситуацию.
1.Многоклеточность Многоклеточное ядро представляет собой группу идентичных процессоров (2 и более), объединенных полностью связанной однонаправленной коммутационной средой.
Особенности взаимодействия процессорных блоков друг с другом следуют из изложения алгоритма (подробнее об этом ниже).
Процессор в многоклеточной архитектуре называется клеткой.
Набор команд, которые он может выполнять, определяется конкретной реализацией и не зависит от архитектуры.
Алгоритмы «глазами» многоклеточного ядра Во-первых.
Любую формулу можно представить в виде многоуровнево-параллельной формы (ЛПФ).
Давайте рассмотрим
простой пример: g = e*(a+b) + (a-c)*f, в LFP это может выглядеть так:
Рис 1. Пример ядерной программы
В общем случае для выполнения операций узлы, расположенные на i-м ярусе, могут использовать результаты, полученные на уровнях с 1 по (i-1)-й.
Из этого следует, что команды, находящиеся на одном уровне, независимы.
Любой алгоритм представляет собой набор формул, который разбит на подмножества – линейные участки, связанные между собой операторами передачи управления.
Под линейным участком (ЛС) понимают подмножество формул, которое рассчитывается тогда и только тогда, когда управление передается на данный линейный участок.
Внутри линейного участка информационно несвязанные формулы могут выполняться в любом порядке.
Как известно, результат выполнения процессором любой команды выражается в изменении состояния процессора.
Использование этого нового состояния последующими командами формирует информационную связь между командой, являющейся источником результата, и командами, получающими этот результат. Такая связь может быть как косвенной (косвенной), так и прямой (прямой).
При непрямой связи результат доступен только после его отчуждения: записи в публичные регистры или память или другие устройства.
Исходная команда должна будет поместить результат в эти устройства, а команда приемника должна будет взять данные оттуда.
Имя устройства указывается в качестве операнда.
Такая связь между командами лежит в основе абсолютно всех современных процессоров, кроме многоклеточных.
При прямой информационной передаче команды именуются, причем названия должны идентифицировать саму команду, а не ее местонахождение или другие особенности реализации.
Доступ к результатам можно получить по именам команд источника и назначения.
В первом случае используется широковещательная рассылка с последующим выбором имени, при котором имя исходной команды указывается в поле операнда принимающей команды.
Во втором осуществляется именная рассылка, при которой в исходной команде указывается имя команды получения результата.
Теоретически мы можем назвать узлы NAP как угодно.
Единственное требование – однозначность.
Для этого в многоклеточном процессоре команды при выборке из памяти получают тег (метку) — таким образом, им и их результатам присваивается локальное имя — и тогда взаимодействие между командами организуется через теги.
Данные можно получить от любой команды с тегом меньше вашего.
Требуемый номер тега результата определяется разницей между значениями тега команды и требуемого тега результата.
Например, если в операнде указано @5, а тег команды равен 7, то в качестве операнда используется результат команды с тегом 2. Все результаты выполнения команд поступают в среду коммутации, из которой по тегу выбираются нужные.
Таким образом, многоклеточный процессор использует широковещательную рассылку результатов с последующим их отбором по имени.
Стоит отметить, что из-за физических ограничений существует понятие «окна видимости», определяющее максимальное расстояние источника команды от команды приемника.
Тег изменяется циклически во время выборки команды.
Его максимальное значение определяется размером командного буфера.
Фактически размер тега определяет количество команд, которые могут одновременно находиться на разных стадиях выполнения.
Значение тега нельзя использовать, если команда, которой оно было ранее присвоено, еще не была выполнена.
Во-вторых.
Многоклеточный процессор оперирует структурами, которые мы называем абзацами.
Параграф представляет собой информационно замкнутую последовательность команд. Абзац является аналогом команды, после выполнения которой изменяется состояние процессора и/или систем внутри него (регистров, шин, ячеек памяти, каналов ввода-вывода и т.п.
).
Те.
для многоклеточного ядра абзац — это команда.
Основная особенность многоклеточной архитектуры заключается в том, что он напрямую реализует PLP-представление алгоритма.
Из такого понимания алгоритма вытекают многие свойства многоклеточной архитектуры.
2.Свойства многоклеточной архитектуры.
- независимость от количества ячеек;
- динамическое распределение вычислительных ресурсов;
- все команды, готовые к выполнению, выполняются одновременно;
- снижение энергопотребления.
Работает, когда есть работа;
- масштабируемость, отсутствие ограничений на количество ячеек.
Для многоклеточного ядра характерна следующая схема построения параграфа (она не является обязательной; в приведенном примере имеются и отклонения):
- получение данных для работы (команды с тегом 0-2,4,6 в примере);
- процесс обработки данных (в примере команды с тегами 3,5,7-9);
- сохранение результатов (команда с тегом 10 в примере).
Алгоритм не зависит от количества ячеек.
Информационные связи между командами указываются явно и нет необходимости знать количество процессорных блоков при написании программы.
Команды просто ждут, пока их операнды будут готовы, а затем переходят к выполнению, и им не важно, кто и когда готовит для них операнды.
Представьте себе лейку – вы не думаете о том, сколько дырок в ее насадке, когда поливаете.
Ячейки идентичны и нет разницы, в какой ячейке будет выполнена та или иная команда.
Команды распределяются по ячейкам в порядке их появления, 1 команда в ячейке 0, команда 2 в ячейке 1 и т.д., при передаче команды в последнюю доступную ячейку снова начинаем раздачу с ячейки 0. Рассмотрим работу 4-клеточное ядро.
Абзац выше будет выполнен следующим образом:
Рис 2. Распределение команд по ячейкам Количество одновременно выполняемых команд зависит от количества ячеек.
Выбор оптимального количества ячеек для каждой задачи — задача, требующая анализа.
Создать универсальную систему пока не получается, поэтому можно ориентироваться на следующие данные: 4 ячейки хорошо справляются с общими задачами, а 16 ячеек хорошо справляются с задачами по обработке сигналов, а для обработки видео их количество может составлять порядка сотен.
Вы можете проанализировать свой код и представить, какое для них будет оптимальное количество ячеек.
Для этого вам нужно будет представить свой алгоритм в YAPF и посчитать количество команд на уровнях.
Среднее количество команд в них подскажет оптимальное количество ячеек в вашем конкретном случае.
Все команды, готовые к выполнению, выполняются одновременно.
Как упоминалось выше, многоклеточное ядро реализует представление алгоритма NAP; независимые команды расположены на ярусах.
Все, что может быть выполнено на данный момент, будет выполнено без каких-либо специальных указаний программиста, главное условие — команда должна получить все данные для выполнения.
Стоит учитывать технологические ограничения: количество ячеек ограничено, поэтому одновременно будет выполняться столько команд, сколько ячеек есть в ядре.
Схождение колес или динамическое распределение вычислительных ресурсов Потому что код не зависит от количества ячеек, на которых он будет выполняться; многоклеточное ядро имеет возможность распределять свои вычислительные ресурсы во время работы, при этом управление происходит программно.
Способность многоклеточной архитектуры перераспределять свои ресурсы мы называем - реконфигурация .
Например, клетки многоклеточного ядра могут быть распределены каким угодно образом для выполнения любого алгоритма или его части.
Группа (лучшего названия пока не придумали) — это часть клеток многоклеточного ядра, соединенных между собой для выполнения какого-то алгоритма или части алгоритма.
Группа может содержать 1 или несколько ячеек.
Когда многоклеточное ядро делит группу на части, это называется разложение .
Процесс присоединения к группе — состав .
На рисунке 3 ниже показано, как 4-клеточное ядро перестраивается с течением времени (пример).
Ячейки, выполняющие одну задачу, имеют одну цветовую заливку.
Рисунок 3. Пример реконфигурации ячейки Снижение энергопотребления.
Это работает, когда есть работа.
Фундаментальной основой многоклеточной архитектуры является вещание.
На сегодняшний день это единственная архитектура, использующая прямую информационную связь для передачи данных между командами в программе.
Если обратить внимание на рисунок 1, на котором показан пример выполнения кода 4-ячеечным процессором, то можно увидеть, что ячейки выполняют команды, расположенные на ярусах, когда они готовы к выполнению.
Результат помещается в среду коммутации и ожидает своего потребителя.
Многоклеточное ядро не совершает лишних действий; это работает, когда есть работа.
Если какой-либо из компонентов процессора не готов выполнить команду, то работа с ним приостанавливается до ее отпускания.
Масштабируемость, ограничений по количеству ячеек нет. Архитектура не ограничивает количество ячеек.
Все дело в технологиях.
Есть несколько вариантов организации большого количества ячеек, но это тема отдельной статьи, которую мы подготовим позже.
3.Реализация Многоклеточный процессор «во плоти» Многоклеточный процессор состоит из N одинаковых ячеек с номерами от 0 до n-1, объединенных средой коммутации.
Каждая ячейка содержит память программ (ПМ), блок управления (БУ), буферные устройства (БУФ), причем каждая ячейка соответствует коммутационному устройству (СУ), совокупность которых образует коммутационную среду (СБ).
Процессор также содержит память данных (DM), блок регистров общего назначения (GPR) и исполнительный блок (EU), состоящий из арифметико-логического блока для чисел с плавающей запятой (ALU_FLOAT), ALU для целых чисел (ALU_INTEGER).
и данные блока доступа к памяти (DMS).
Программа для многоклеточного ассемблера состоит из параграфов.
Например:
Теги: #мультиклет #многоклеточные процессоры #архитектура #мультиклет #программированиеParagraph:
-
Обучение Работе С Компьютером Обязательно
19 Oct, 24 -
Перевод Rss В Yahoo! Трубы
19 Oct, 24 -
Теперь Можно Распечатать)
19 Oct, 24 -
Надстройка Для Expression Blend 2.5
19 Oct, 24 -
Юнит-Тесты. Первый Шаг К Качеству
19 Oct, 24 -
Как Работает Международный Роуминг
19 Oct, 24 -
Pvs-Studio 7.18: Обновления И Улучшения
19 Oct, 24