Смекни!
smekni.com

Концепция 8 1 Описание алгоритма в виде «триад» 8 2 Принципы построения процессора 11 (стр. 2 из 7)

1.2 Принципы построения процессора

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

Так, во-первых, отличен способ описания информационных связей между операциями и, следовательно, будет отличен способ их реализации. Если в фон-неймановской модели информационные связи между командами (операциями) явно не описываются и реализуются опосредованно, через память (регистры общего назначения, ЗУ), то на языке «триад» они задаются явно, указанием информационных связей между командами. При этом, в отличие от не-фон-неймановских моделей способ задания носит не адресный, а выборочный характер. Результат команды не посылается конкретному потребителю (потоковые процессоры) и не указывается конкретная команда для получения результата (редукционные процессоры), а потребители сами должны выбирать требуемые им результаты из общего потока результатов, который формируется не по заявкам, а императивно, путем выборки и исполнения всех команд линейного участка. Следовательно, архитектура процессора должна иметь механизм идентификации получаемых результатов и интеллектуальную коммутационную среду, обеспечивающую не только широковещательную рассылку всех результатов, но и отбор необходимых результатов для конкретных операций.

Во-вторых, отличен и сам этот процесс. Если потоковые и редукционные процессоры имеют неупорядоченную выборку и исполнение команд, «по готовности» данных или «по запросу» результата, соответственно, то язык «триад» предполагает последовательную выборку команд линейного участка и исполнение их не только «по готовности» данных, но и «по готовности» потребителей результатов. А именно, выбранная команда не может быть выполнена до тех пор пока не будут получены все операнды (готовность данных) и пока не будут выбраны все команды использующие ее результат (готовность потребителей). Такой подход к исполнению последовательно выбираемых команд связан с их неупорядоченностью.

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


2 АРХИТЕКТУРА

2.1 Схема мультиклеточного процессора

Рассмотрим параллельную систему показанную на рисунке 2.1 и состоящую из N процессорных блоков PU_0, PU_1, …, PU_n-1 связанных между собой однонаправленным коммутатором(SB) типа «каждый с каждым», имеющим N информационных входов и 2N информационных выходов, а также 2N адресных входов.

Рисунок 2.1 — Концептуальная схема процессора

Предположим, что система содержит четыре процессорных блока (клетки). Разместим рассматриваемую последовательность команд в РМ процессорных блоков, начиная с нулевого PU так, как показано на рисунке 2.2. Каждой триаде сопоставим индивидуальный тег (адреса и значения тегов приведены для 0-го PU).

Адрес

Тег

PM_0

PM_1

PM_2

PM_3

A+0

A+4

A+8

t+0

t+4

t+8

RD a

RD e

/ 5,6

RD b

- 0,2

+ 7,8

RD c

RD f

WR 9,a

+ 0,1

* 3,4

Рисунок 2.2 - Размещение программы в памяти программ процессорных блоков

Для того, чтобы обеспечить параллельное выполнение данной программы функциональными блоками процессора, структура которого приведена на рисунке 2.1, необходимо:

обеспечить согласованную (когерентную) выборку команд находящихся в одной строке;

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

2.2 Исполнение программы

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

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

Команда записывается в свободную строку буфера. Если команда содержит значение аргумента непосредственно в командном слове, например, адрес переменной находящейся в памяти данных (DM), то это значение также переписывается в соответствующее поле этой строки буфера. После записи “заготовки” команды в строку буфера устройство управления (CU) приступает к выборке следующей команды.

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

Поля аргументов в строках буфера организованы как два массива с ассоциативной адресацией. Ассоциативным адресом, по которому осуществляется запись значения поступающего результата при совпадении его с тегом результата является тег запрашиваемого результата.

Команда находится в буфере до тех пор, пока в буфер не придут запрошенные ею результаты и пока в буфера не будут записаны все команды использующие ее результат. Если эти условия удовлетворяются хотя бы для одной команды, инициализируется процесс исполнения команд. При этом, если готовых к исполнению команд несколько, то на исполнение передается команда, которая была выбрана раньше всех.

Исполнительное устройство (EU) выполняет команду и выдает в буфер её результат с тегом, равным тегу исполненной команды. Завершается или приостанавливается этот процесс тогда, когда в буфере нет готовых к исполнению команд.