Распараллеливание в ВС на уровне исполнительных устройств
Адресный способ распараллеливания
Продемонстрируем общий подход при реализации адресного распараллеливания, используемого после формирования трехадресных команд.
Пусть в буфере команд АЛУ, или в "окне просмотра", формируется поток трехадресных команд, как рассматривалось выше:
.
Очевидно, что одновременно или с перекрытием во времени могут выполняться такие две команды, каждая из которых не использует в качестве операнда результат выполнения другой. Если же команда меняет значение некоторой величины, то предшествующие команды в "окне просмотра" должны раньше выполнения данной команды успеть использовать предыдущее значение. При этом должна соблюдаться последовательность присваивания значений одной величине.
Пусть — логическая переменная (признак), соответствующая возможности назначения j -й команды для выполнения. Тогда в процессе назначения команд на ИУ j -я команда может быть назначена для выполнения в соответствии со значением истинности следующих предикатов:
При наличии незанятых ИУ необходимой специализации или при наличии свободных регистров в буферах этих ИУ, команды с признаком назначаются для выполнения. Так, в АЛУ процессора МВК "Эльбрус-2" каждое специализированное конвейерное ИУ имеет небольшой буфер, в которые записываются назначенные команды.
Назначенные команды снабжаются признаком назначения и не исключаются из "окна просмотра" до сигнала ИУ о завершении выполнения. Это необходимо для исключения преждевременного начала выполнения других команд, использующих результат данной.
Легко видеть, что в каждой из одновременно выполняющихся команд, на разных ИУ, в данном случае используются адреса СОЗУ, которых нет ни в одной из других команд. Т.е. одновременно работающие ИУ используют непересекающиеся множества адресов. Это исключает конфликты обращения к регистрам СОЗУ, ускоряет работу. В таком случае говорят, что ИУ полностью сегментированы. Хотя в общем случае работы на общих вычислительных ресурсах (решающих полях) это необязательно.
Пример. Пусть "окно просмотра" вместило в себя весь фрагмент ранее рассмотренной программы. АЛУ содержит необходимые устройства сложения, умножения и деления, а также два одновременно работающих канала обращения к ОП. Последовательное преобразование содержимого "окна просмотра" показано на рис. 3.9.
Данный способ распределения команд, потребовавший промежуточного перевода безадресных команд в трехадресные, эффективен в случае многофункционального АЛУ. Универсальные исполнительные устройства, образующие АЛУ, — решающие поля, могут потребовать разработки других способов распределения работ.