- •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.2. Внутреннее состояние rse
Табл. 6.1 описывает архитектурное состояние, поддерживаемое механизмом стека регистров. Описанные здесь элементы внутреннего состояния RSE, не предоставлены программисту прямо, как архитектурно видимые регистры. Следовательно, внутреннее состояние RSE не нуждается в сохранении при переключениях контекста или прерываниях. Вместо этого, оно меняется как побочный эффект инструкций, связанных с регистровым стеком. Для описания эффектов этих инструкций, необходимо полное описание внутреннего состояния RSE. Чтобы отличить их от архитектурно видимых ресурсов, все элементы внутреннего состояния RSE имеют префикс «RSE». Другие ресурсы, связанные с RSE, являются архитектурно видимыми и представляются программному обеспечению, как прикладные регистры RSC, BSP, BSPSTORE и RNAT.
Табл. 6.1. Внутреннее состояние RSE
Имя |
Описание |
Соответствует |
RSE.N_STACKED_PHYS |
Количество физических регистров в стеке (Number of Stacked Physical register): размер файла физических стековых регистров зависит от реализации. |
|
RSE.BOF |
Номер регистра нижнего края окна (Bottom-of –frame register number): номер физического регистра GR32. |
AR[BSP] |
RSE.StoreReg |
Номер регистра сохранения RSE (RSE Store Register number): физический номер регистра, который будет следующим регистром сохраненным RSE. |
AR[BSPSTORE] |
RSE.LoadReg |
Номер регистра загрузки RSE (RSE Load Register number): физический номер регистра, на единицу больший, чем тот, который будет следующим регистром для загрузки (по модулю количества физических стековых регистров). |
RSE.BspLoad |
RSE.BspLoad |
Указатель вспомогательной памяти (Backing Store Pointer) для загрузок памяти: 64-битный адрес вспомогательной памяти, на 8 байт больший, чем следующий адрес для загрузки механизмом RSE. |
RSE.BspLoad |
RSE.RNATBitIndex |
Индекс совокупности NaT битов RSE (RSE NaT Collection Bit Index): 6-битный указатель в регистре RNAT (определен, когда обновляется совокупность битов RNAT). |
AR[BSPSTORE] {8:3} |
RSE.CFLE |
Разрешение RSE для загрузки текущего окна (RSE Current Frame Load Enable): управляющий бит, который разрешает RSE загрузить регистры в текущее окно после br.ret или rfi. |
|
RSE.ndirty |
Количество грязных регистров (number of dirty registers) в регистровом стеке. |
|
RSE.ndirty_words |
Количество грязных слов (number of dirty words) в регистровом стеке, плюс количество соответствующих регистров NaT совокупности. |
AR[BSP] – AR[BSPSTORE] |
