Распараллеливание в ВС на уровне исполнительных устройств
Адресный способ распараллеливания
Продемонстрируем общий подход при реализации адресного распараллеливания, используемого после формирования трехадресных команд.
Пусть в буфере команд АЛУ, или в "окне просмотра", формируется поток трехадресных команд, как рассматривалось выше:
.
Очевидно, что одновременно или с перекрытием во времени могут выполняться такие две команды, каждая из которых не использует в качестве операнда результат выполнения другой. Если же команда меняет значение некоторой величины, то предшествующие команды в "окне просмотра" должны раньше выполнения данной команды успеть использовать предыдущее значение. При этом должна соблюдаться последовательность присваивания значений одной величине.
Пусть — логическая переменная
(признак), соответствующая возможности назначения j -й команды для
выполнения. Тогда в процессе назначения команд на ИУ j -я команда
может быть назначена для выполнения в соответствии со значением истинности
следующих предикатов:
![\begin{gathered}
\alpha_1=1\\
\alpha_j=(A_{j1}\ne A_{13})\wedge(A_{j2}\ne A_{13})\wedge(A_{j1}\ne
A_{23})\wedge\\
\wedge (A_{j2}\ne A_{23})\wedge\ldots\wedge (A_{j1}\ne A_{j-1,3})
\wedge (A_{j2}\ne A_{j-1,3})\wedge \\
\wedge (A_{j3}\ne A_{11}) \wedge (A_{j3}\ne
A_{12})\wedge \ldots\wedge (A_{j3}\ne A_{j-1,1})\wedge\\
\wedge (A_{j3}\ne A_{j-1,2})
\wedge (A_{j3}\ne A_{j-1,3})\\
j=2,\ldots,m.
\end{gathered}](/sites/default/files/tex_cache/3032609d052d3894f545608eaf1e3ef3.png)
При наличии незанятых ИУ необходимой специализации или при наличии
свободных регистров в буферах этих ИУ, команды с признаком назначаются для выполнения. Так, в АЛУ процессора
МВК "Эльбрус-2" каждое специализированное конвейерное ИУ имеет небольшой
буфер, в которые записываются назначенные команды.
Назначенные команды снабжаются признаком назначения и
не исключаются из "окна просмотра" до сигнала ИУ о завершении
выполнения. Это необходимо для исключения преждевременного начала выполнения других
команд, использующих результат данной.
Легко видеть, что в каждой из одновременно выполняющихся команд, на разных ИУ, в данном случае используются адреса СОЗУ, которых нет ни в одной из других команд. Т.е. одновременно работающие ИУ используют непересекающиеся множества адресов. Это исключает конфликты обращения к регистрам СОЗУ, ускоряет работу. В таком случае говорят, что ИУ полностью сегментированы. Хотя в общем случае работы на общих вычислительных ресурсах (решающих полях) это необязательно.
Пример. Пусть "окно просмотра" вместило в себя весь фрагмент ранее рассмотренной программы. АЛУ содержит необходимые устройства сложения, умножения и деления, а также два одновременно работающих канала обращения к ОП. Последовательное преобразование содержимого "окна просмотра" показано на рис. 3.9.
Данный способ распределения команд, потребовавший промежуточного перевода безадресных команд в трехадресные, эффективен в случае многофункционального АЛУ. Универсальные исполнительные устройства, образующие АЛУ, — решающие поля, могут потребовать разработки других способов распределения работ.