Программная оптимизация использования регистров
Пусть в составе процессора имеется небольшое количество регистров (примерно 16-32) и ответственность за их оптимальное использование перекладывается на программы компиляторов с языков высокого уровня в машинный код. Естественно, что в исходном тексте программы на языке высокого уровня никаких ссылок на регистры не содержится. Обращение ко всем языковым конструкциям, описывающим данные в программе, производится на уровне символов языка. Компилятор должен так преобразовать исходный текст программы в последовательность машинных команд, чтобы как можно больше часто используемых в текущем фрагменте переменных хранилось в регистрах, а не в оперативной памяти. В итоге, количество операций пересылки данных между регистрами и оперативной памятью будет минимальным.
Исследования показали, что применение даже простых алгоритмов оптимизации делает излишним использование количества регистров свыше 64. Применение же сложных алгоритмов оптимизации позволяет вполне обойтись 32 регистрами без сколько-нибудь заметного снижения производительности. Кроме того, исследователи пришли к выводу, что при использовании небольшого количества регистров (например, 16) компьютер без специализации регистров работает быстрее, чем компьютер с разделением регистров по типам форматов чисел. Аналогичные результаты были получены и в ряде других работ, в которых сравнивалась эффективность использования оптимизирующих компиляторов для процессоров с малым числом регистров по сравнению с процессорами с расширенным набором регистров, организованных в виде регистровых окон.
Дата добавления: 2015-09-29; просмотров: 546;