Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MProc / M9 / Системная архитектура часть 6..doc
Скачиваний:
21
Добавлен:
16.04.2013
Размер:
270.85 Кб
Скачать

6. Механизм стека регистров (rse)

Механизм стека регистров (RSE–RegisterstackEngine) перемещает регистры между стеком регистров и вспомогательной памятью, без явного программного вмешательства. МеханизмRSEработает параллельно с процессором и может использовать для динамического запуска операций сливания и заливания регистров, недозагрузку пропускной способности памяти. В этом смысле, время ожидания операций сливания/заливания регистров, может перекрываться с полезной работой программы. Основные принципы стека регистров обсуждались в разделе 4.1. В этой главе представлены внутреннее состояние, модель программирования и поведение прерывания механизма стека регистров.

6.1. Обзор rsEи вспомогательной памяти

Окна стека регистров отображаются в набор физических регистров, который работает как циклический буфер, содержащий самые последние созданные окна. Механизм RSEсливает и заливает эти физические регистры во вспомогательную память и из нее. МеханизмRSEперемещает регистры между стеком физических регистров и вспомогательной памятью, без явного программного вмешательства. Как показано на рис. 6.1,RSEобрабатывает физические стековые регистры, вне текущего активного окна (как определено с помощьюCFM). Эти регистры содержат окна родительских процедур текущей процедуры.

Как показано на рис. 6.1, вспомогательная память организована как стек памяти, который растет от более низких к более высоким адресам. Прикладной регистр BSP(BackingStorePointer– указатель вспомогательной памяти) содержит адрес самого первого (низкого) места памяти, резервированного для текущего окна (т.е. места, в которое будет слитGR32 текущего окна). ДействиеRSEсливания/заливания, происходит от адреса содержащегося вBSP, т.к.RSEсливает/заливает окна родителей текущей процедуры. Прикладной регистрBSPSTOREсодержит адрес, с которого произойдет следующееRSEсливание. Регистр адреса, который соответствует следующей операцииRSEзаливания, указатель загрузкиBSP, не является архитектурно видимым. Адреса, содержащиеся вBSPиBSPSTORE, всегда выровнены на 8-байтовую границу. Вспомогательная память содержит локальную область каждого окна. Выходная область не сливается во вспомогательную память (если только позже она не становится частью локальной области вызванной процедуры). В каждом окне стека, регистры с меньшими адресами сохраняются в меньших адресах памяти. Сливания типаRSE, стековых регистров со значениямиNaT, подчиняются тем же самым ограничениям модификации памяти, что и программные сливания (st8.still) статических регистров со значениямиNaT(см. раздел 4.4.4.6 первого тома «Сливания и заливания регистров»).

Механизм RSE, также сливает/заливаетNaTбиты соответствующие стековым регистрам. БитыNaT, соответствующие статическому подмножеству, при необходимости, должны сливаться/заливаться программным обеспечением. БитыNaTявляются 65-ми битами каждого основного регистра. БитыNaTдля стекового подмножества, сливаются/заливаются группами по 63 бита, соответствующими 63-ём последовательным физическим стековым регистрам. КогдаRSEсливает регистр во вспомогательную память, соответствующийNaTбит копируется в прикладной регистрRNAT(RSENaTcollectionApplicationRegister– прикладной регистр совокупностиRSENaT). Каждый раз, когда биты 8:3 регистраBSPSTOREустанавливаются все в 1, механизмRSEсохраняет регистрRNATво вспомогательной памяти. Как показано на рис. 6.2, в результате, во внешней памяти отображаются значения 63-х регистров, а следом за ними совокупностьNaTбитов. Бит 0 совокупностиNaTбитов, соответствует первому (с наименьшим адресом) из 63-х значений регистров, а бит 62 соответствует 63-му значению регистра. В 63-ем бите совокупностиNaTбитов всегда записан ноль. Когда механизмRSEзаливает стековые регистры из вспомогательной памяти, он также заливает иNaTбиты регистров. Каждый раз, когда биты 8:3 указателя загрузки вспомогательной памятиRSEустанавливаются все в 1, механизмRSEперезагружает совокупностьNaTбитов из вспомогательной памяти. 63-ий бит совокупностиNaTбитов игнорируется при чтении из вспомогательной памяти.

Физические стековые регистры

Вспомогательная память

procA calls procB calls procC

call

unallocated

текущее активное окно

sofc

procC

AR[BSP]

solb

procB

RSE loads/stores

procB

AR[BSPSTOR]

sola

procA

procA

unallocated

Предшествен­ники procA

return

Более старшие адреса регистров

Более старшие адреса памяти

Рис. 6.1. Взаимоотношения между физическими регистрами и вспомогательной памятью

8 байтов

BSPSTORE{10:3}

11 000000

10 111111

NaTcollection

10 111110

63 стековых

основных регистров

10 000000

01 111111

NaTcollection

01 111110

63 стековых

основных регистров

01 000000

00 111111

NaT collection

Рис. 6.2. Формат вспомогательной памяти.

Механизм RSEработает параллельно и асинхронно относительно выполнения инструкций, используя для динамического запуска операций сливания и заливания регистров, недозагрузку пропускной способности памяти. Алгоритм, используемый механизмомRSEдля определения того, следует ли делать сливание/заливание и когда именно, зависит от реализации. Программное обеспечение не имеет связи с алгоритмом сливания/заливания. Чтобы гарантировать, что процессор и работаRSEне влияют друг на друга, программное обеспечение не должно обращаться к стековым регистрам вне текущего стекового окна. Архитектура гарантирует целостность стека регистров, вызывая ошибку при попытке записи вне окна регистров. Чтение вне окна регистров, может взаимодействовать сRSEоперациями и вернуть неопределенное значения данных. Однако чтения вне окна регистров требуются для распространенияNaTбитов.

Работа RSEмеханизма, управляется прикладным регистромRSC(RegisterStackConfiguration– конфигурации стека регистров). Действия между процессором и механизмомRSEсинхронизируются только тогда, когда инструкцииflushrs, loadrs, br.ret или rfiреально требуют, чтобы регистры были слиты или залиты, либо когда программное обеспечение явно запрашивает синхронизациюRSE, путем выполнения инструкцииmovв/из прикладных регистровRSC,BSPSTOREиRNAT.