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

4.3.4. Передачи предикатных регистров

Инструкции обеспечивают передачу между файлом предикатных регистров и основным регистром. Эти инструкции работают в манере «широкой поверхности» (broadside), посредством чего множество предикатных регистров передается параллельно так, что предикатный регистрNпередается в/из битаNосновного регистра.

Инструкция перемещения в предикатные регистры (mov pr=) загружает множество предикатных регистров из основного регистра согласно маске указанной непосредственным операндом. Маска содержит по одному биту для каждого из регистров отPR1 доPR15 (PR0 аппаратно находится в 1) и один бит для всех регистров отPR16 доPR63 (ротируемые предикаты). Предикатный регистр записывается из соответствующего бита общего регистра, если соответствующий бит маски равен 1; если же соответствующий бит маски равен 0, то предикатный регистр не модифицируется.

Инструкция перемещения в ротируемые предикатные регистры (mov pr.rot=) копирует 48 битов из непосредственного значения в 48 ротируемых предикатов (отPR16 доPR63). Непосредственное значение включает в себя 28 битов и расширяется с учетом знака. Таким образом, предикаты отPR16 доPR42 могут быть независимо установлены в новые значения, а отPR43 доPR63 устанавливаются все вместе либо в 0, либо в 1.

Инструкция перемещения из предикатных регистров (mov =pr) передает полный файл предикатных регистров в принимающий основной регистр.

Для всех этих передач предикатных регистров, к предикатным регистрам обращаются так, как если бы база переименования регистра (поле CFM.rrb.pr) равна 0. Поэтому, как правило, перед инициализацией ротированных предикатов, нужно программно очистить полеCFM.rrb.pr.

4.4. Инструкции доступа к памяти

Доступ к памяти осуществляется простыми инструкциями загрузки, сохранения и семафорными инструкциями, которые передают данные к и от общих регистров и регистров с плавающей точкой. Адрес памяти задается содержимым общего регистра.

Большинство инструкций загрузки и сохранения могут также задавать обновление базового адресного регистра. Обновление базы добавляет к адресному регистру либо непосредственное значение, либо содержимое основного регистра и помещает результат назад в адресный регистр. Обновление делается после операции загрузки или сохранения, т.е. оно делается как пост-инкремент адреса.

Для наибольшей эффективности, данные должны быть выровнены по естественным границам. Если UM.ac=1(бит проверки выравнивания в регистре маски пользователя), то в пределах 4К-байтной границы, обращения, не выровненные относительно их естественных границ, будут всегда ошибочными. Если жеUM.ac=0, то не выровненный доступ будет успешным, если это поддерживается реализацией, в противном случае, это вызовет ошибку «Ссылка на не выровненные данные». Для дальнейшей информации нужно отслеживать специальную процессорную документацию. Все обращения к памяти, которые пересекают 4К-байтную границу, независимо отUM.ac,вызовут ошибку «Ссылка на не выровненные данные». Кроме того, если обращения не выровнены на свою естественную границу, то независимо отUM.ac,все семафорные инструкции вызовут ошибку «Ссылка на не выровненные данные».

Обращения к памяти большей, чем один байт могут делаться либо по возрастанию, либо по убыванию. Упорядочивание байт для всех инструкций доступа к памяти задается битом UM.beв регистре маски пользователя. Все обращения типаIA-32 к памяти, выполняются по убыванию.

В табл.4.12 собраны инструкции загрузки, сохранения и семафорные, а в табл.4.13 собраны состояния связанные с инструкциями, ссылающимися на память.

Табл. 4.12. Инструкции доступа к памяти

Мнемоника

Действие

Основная

С плавающей точкой

Нормальная

Парная загрузка

ld

ldf

ldfp

Загрузка

ld.s

ldf.s

ldfp.s

Спекулятивная загрузка

ld.a

ldf.a

ldfp.a

Предварительная загрузка

ld.sa

ldf.sa

ldfp.sa

Спекулятивная предварительная загрузка

ld.c.nc, ld.c.clr

ldf.c.nc, ldf.c.clr

ldfp.c.nc, ldfp.c.clr

Проверка загрузки

ld.c.clr.acq

Упорядоченная загрузка проверки

ld.acq

Упорядоченная загрузка

ld.bias

Смещенная загрузка

ld.fill

ldf.fill

Восстановление регистров

st

stf

Сохранение

st.rel

Упорядоченное сохранение

st.spill

stf.spill

Запоминание регистров

cmpxchg

Сравнить и обменять

xchg

Обмен между памятью и GR

fetchadd

Извлечь и добавить

Табл.4.13. Состояния, связанные с доступом к памяти

Регистр

Функция

UM.be

Упорядочивание байт (в маске пользователя)

UM.ac

Доступен вызов ошибки «Ссылка на не выровненные данные» (в маске пользователя)

UNAT

Коллекция NaTбитов основных регистров

CCV

Прикладной регистр значения для инструкции сравнения и обмена

Соседние файлы в папке M9