Об эффективном использовании регистров
Под эффективностью использования регистров будем понимать отношение числа обращений к переменным, расположенным в регистрах, к общему числу обращений к переменным в программе.
Так как большая часть операндов представляет локальные скалярные переменные, ускорить доступ к операндам можно с помощью увеличения объема регистровой памяти процессора.
Регистровая память имеет наименьшее время обращения, поэтому стремятся разработать такую стратегию использования регистров в программах, которая обеспечивала бы размещение в регистрах как можно большего количества операндов и минимизировала потребность в пересылке данных из оперативной памяти в регистры и обратно.
Возможны два подхода к решению этой проблемы. Один подход основывается на программных методах — разработке эффективных компиляторов, а второй — на аппаратных — включении в состав процессора большого количества регистров.
При использовании программных методов основные функции выполняет компилятор, преобразующий программу на языке высокого уровня в последовательность машинных команд. При этом машинная программа должна быть составлена таким образом, чтобы как можно большая часть переменных, необходимых при выполнении текущего фрагмента программы, размещалась в регистрах процессора. В таком компиляторе требуется реализовать сложные алгоритмы анализа структуры и статистических характеристик исходной программы и на основании этого анализа выполнить оптимальное распределение переменных между ячейками памяти и регистрами процессора.
Аппаратный подход состоит в том, чтобы включить в состав процессора по возможности больше регистров и организовать наиболее эффективное их использование, размещая в регистрах переменные на более длительный период времени.
В настоящее время в основном используется программный метод. Аппаратный подход используется редко, например, в компьютерах фирмы Sun семейства SPARC, в компьютерах с архитектурой EPIC.
Дата добавления: 2015-09-29; просмотров: 540;