Задача распределения основных регистров
Ранее было показано, что традиционный подход к использованию A/S регистров не может удовлетворить компилятор для ВК ЭВМ. При таком подходе к основным регистрам стремятся использовать их как память для сохранения промежуточных результатов вычислений или результатов общих подвыражений. При этом сокращается число «активных» A/S регистров, на которых можно производить собственно вычисления. Для машин, обладающим одним последовательным функциональным устройством это оправдано, но для машин со многими параллельными конвейерными функциональными устройствами это будет приводить к неэффективному использованию устройств, поскольку, сохраняя на регистре данные, мы не можем использовать его для вычислений.
Предполагая, что в процессе вычисления выражения необходимое максимальное число объектов размещено на В/Т регистрах, лучше при необходимости сохранять и считывать данные на В/Т регистрах (имея при этом незначительные затраты, 1 такт), но использовать все A/S регистры для организации максимально распараллеленных вычислений.
Учитывая, что время выполнения, например, команды плавающего сложения 6 тактов, очевидно, что этот путь предпочтительнее.
Таким образом, A/S регистры мы рассматриваем, прежде всего, как активные сумматоры. Поэтому задачу распределения Л/5 регистров в общем виде формулируем следующим образом.
Выполнить распределение A/S регистров, обеспечивающее максимальное распараллеливание вычислительных команд в их потоке. Это, однако, потребует дальнейшего пояснения.
Метки: регистры, основные регистры