- •6. Механизм стека регистров (rse)
- •6.1. Обзор rse и вспомогательной памяти
- •6.2. Внутреннее состояние rse
- •6.3. Разделы стека регистров
- •6.4. Работа rse
- •6.5. Управление rse
- •6.5.1. Регистр конфигурации стека регистров (rsc)
- •6.5.2. Регистр NaT совокупности регистрового стека (rnat)
- •6.5.3. Прикладные регистры указатели вспомогательной памяти (bspstore и bsp)
- •6.5.4. Инструкции управления rse
- •6.5.5 Плохой pfs, используемый переходом возврата
- •6.6. Прерывания rse
- •6.7. Поведение rse при прерываниях
- •6.8. Поведение rse в неполном регистровом окне
- •6.9. Взаимодействие rse и alat
- •6.10. Когерентность вспомогательной памяти и упорядочивание памяти
- •6.11. Переключения внешней памяти rse
- •6.11.1 Переключение из прерванного контекста
- •6.11.2. Возврат в прерванный контекст
- •6.11.3. Синхронное переключение вспомогательной памяти.
- •6.12. Инициализация rse
6.3. Разделы стека регистров
Файл физических регистров процессора обеспечивает, по крайней мере, 96 стековых регистров. Фактическое число стековых регистров (RSE.N_STACKED_PHYS) зависит от реализации и должно быть кратно 16. Рис. 6.3 иллюстрирует циклический характер файла физических регистров и показывает соответствие регистров и вспомогательной памяти. Рис. 6.3 показывает также четыре раздела файла стековых регистров:
Чистый (clean) раздел (светло-серый оттенок): регистры, которые содержат значения из окон родительской процедуры. Регистры в этом разделе были успешно слиты во вспомогательную память с помощью RSE, и их содержимое не было изменено, с того момента, как они были записаны во вспомогательную память.
Грязный (dirty) раздел (просто серый оттенок): регистры, которые содержат значения из окон родительской процедуры. Регистры в этом разделе еще не были слиты во вспомогательную память с помощью RSE. Количество регистров, содержащихся в грязном разделе (расстояние между RSE.StoreReg и RSE.BOF) упоминается как RSE.ndirty.
Текущее (current) окно (темный оттенок): стековые регистры, выделенные для вычислений. Позиция текущего окна в файле физических стековых регистров определяется регистром нижнего края окна (RSE.BOF). Количество регистров в текущем окне определяется размером поля окна (CFM.sof) в маркере текущего окна.
Недействительный (invalid) раздел (диагональные полоски): регистры вне текущего окна, которые не содержат значений из окон родительских процедур. Они доступны для немедленного выделения в текущее окно, либо для операций RSE загрузки.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
invalid |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Physical Stacked Registers |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RSE.LoadReg |
RSE.StoreReg |
|
|
RSE.BOF |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
C FM. sof |
|
|
||
|
|
clean |
d |
C |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RSE load |
|
|
|
RSE store |
|
return, rfi |
call, cover |
return, rfi, alloc |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
H |
|||
|
RSE. BspLoad |
AR[BSPSTORE] |
AR[BSP] |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|||||||
Backing Store |
|
|
|
|
|
|
|
|
||||||
Рис. 6.3. Четыре раздела стека регистров.
Границы между четырьмя разделами стека регистров определяются маркером текущего окна (CFM) и тремя номерами физических регистров: StoreReg, Loadreg и BOF. Как описано в табл. 6.1, каждый из этих номеров физических регистров имеет соответствующий 64-битный указатель вспомогательной памяти. (Например, AR[BSP] всегда содержит адрес, где будет запомнен GR[32] текущего окна).
Рис. 6.3 показывает также, влияние различных инструкций на границы разделов. Загрузки RSE используют недействительные регистры. Активные RSE загрузки и сохранения расширяют чистый раздел. Инструкции br.call, brl.call или cover, могут увеличить указатель нижнего края окна (RSE.BOF), который перемещает регистры из текущего окна в грязный раздел. Инструкция alloc, может сжать или расширить текущее окно путем обновления CFM.sof. Инструкции br.ret и rfi могут сжать или расширить текущее окно путем обновления и указателя нижнего края окна (RSE.BOF), и CFM.sof.

irty
urrent
igher
Addresses