Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПВС_шпоры.docx
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
576.47 Кб
Скачать

20.Регистры в risc-процессорах.

Отличительная черта RISC-архитектуры - большое число регистров общего назначения, что объясняется стремлением свести все пересылки к типу «регистр-регистр». Но увеличение числа РОН способно дать эффект лишь при разумном их использовании. Оптимизация использования регистров в RISC-процессорах обеспечивается как программными, так и аппаратными средствами.

На начальном этапе компилятор выделяет каждой переменной виртуальный регистр. Число виртуальных регистров в принципе не ограничено. Затем компилятор отображает виртуальные регистры на ограниченное количество физических регистров. Виртуальные регистры, использование которых не перекрывается, отображаются на один и тот же физический регистр. Если в определенном фрагменте программы физических регистров не хватает, то их роль для оставшихся виртуальных регистров выполняют ячейки памяти. В ходе вычислений содержимое каждой такой ячейки с помощью команды «Чтение» временно засылается в регистр, после чего командой «Запись» вновь возвращается в ячейку памяти.

Аппаратная оптимизация использования регистров в RISC-процессорах ориентирована на две проблемы.

1. Предотвращение конфликтов между командами при конвейеризации команд.

Для этого некоторым регистрам придают специальные качества: такие регистры в состоянии принимать на себя имя любого РОН. Набор регистров, обладающих подобным свойством, называют буфером переименования. Прием оказывается очень удобным при конвейеризации команд и позволяет предотвратить конфликты, когда одна команда хочет воспользоваться регистром, в данный момент занятым другой командой.

2. Сокращение затрат времени при работе с процедурами.

Наибольшее время в программах, написанных на ЯВУ, расходуется на вызовы процедур и возврат из них. Связано это с созданием и обработкой большого числа локальных переменных и констант. Одним из механизмов для борьбы с этим эффектом являются регистровые окна. Главная их задача — упростить и ускорить передачу параметров от вызывающей процедуры к вызываемой и обратно.

Регистровый файл разбивается на группы регистров, называемые окнами. Отдельное окно назначается глобальным переменным. Глобальные регистры доступны всем процедурам, выполняемым в системе в любое время. Каждой процедуре выделяется отдельное окно в регистровом файле. Все окна имеют одинаковый размер (обычно по 32 регистра) и состоят из трех полей. Левое поле каждого регистрового окна одновременно является и правым полем предшествующего ему окна (рис. 4.2). Среднее поле служит для хранения локальных переменных и констант процедуры.

21.Микропроцессор r10000.

В основе микропроцессора R10000 лежит суперскалярная RISC-технология 5-го поколения. Микропроцессор R10000 представляет собой однокристальный процессор общего назначения для настольных персональных компьютеров, рабочих станций и серверов. Производительность процессора с тактовой частотой 200 МГц составляет 10,7 SPECint 95 и 19,0 SPECfp 95. Структура процессора представлена на рис. 4.3.

Основными особенностями архитектуры процессора R10000 являются:

- высокая степень параллельности выполнения микроопераций;

- эффективное предсказание переходов;

- планирование загрузки функциональных модулей.

R10000 имеет 5 функциональных блоков: два блока операций с плавающей точкой, два блока целочисленных операций и один блок загрузки/хранения (и соответственно 5 конвейеров).

Схема предсказания переходов использует 512-входовую таблицу предыс-тории переходов. Вероятность правильного предсказания на SPEC92 составляет 0,87. В момент выполнения предсказательного перехода процессор сохраняет свое состояние в 4-х позиционном стеке переходов. В него заносится альтернативный адрес перехода, полная копия таблиц отображения регистров с плавающей точкой и фиксированной точкой и различные управляющие биты. Эта информация требуется для восстановления в случае неправильного предсказания перехода. При заполнении стека декодирование команд производится до новой команды перехода, после чего ожидается освобождение позиции в стеке. При неправильно предсказанном переходе отменяются все команды, выбранные после неправильно предсказанного перехода.

На этапе предвыборки команд в кэш первого уровня осуществляется загрузка четырех 32-разрядных команд и их предварительное декодирование. Каждая команда в кэше снабжается дополнительным 4-битовым тэгом, который необходим для дальнейшего декодирования и классификации команды. Для команд перехода осуществляется вычисление результирующего адреса.

На втором этапе декодирования устраняются (если это возможно) зависи-мости между командами по данным. С этой целью используется механизм пе-реименования регистров. Зависимости по памяти устанавливаются по содер-жимому очереди обращений к памяти. Независимые команды могут выпол-няться в порядке, отличном от первоначального, задаваемого программой. Все результаты выполнения команд, полученные вне очереди, являются временными и могут быть отменены в случае неправильного предсказания перехода.

После декодирования команды разделяются на три очереди (l=16), в которых ожидают готовности операндов и функциональных блоков: целочисленных АЛУ, блоков выполнения операций с плавающей точкой и блока загрузки/записи. Очереди обслуживаются в порядке освобождения функциональных блоков процессора. Команда выполняется в одном из 5 конвейеров процессора, связанном с функциональным блоком. Функциональные блоки выполнения операций с фиксированной и плавающей точкой независимы, имеют раздельные регистровые файлы и пути передачи данных. Длина целочисленного конвейера – 1 такт, конвейера блока загрузки/сохранения – 2, блока операций с плавающей точкой – 3. При потенциальной способности выполнять 5 команд за такт R10000 допускает выборку только четырех, оставляя «пространство для маневра» при планировании загрузки функциональных блоков. Это позволяет R10000 в большинстве случаев выполнять четыре команды за такт, благодаря чему за один такт можно получить до 4 результатов.

R10000 содержит высокоскоростной (до 1,6 Гбайт/с) внутрикристальный интерфейс «процессор-шина», позволяющий объединить до 4-х процессоров без использования дополнительных интегральных схем.