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

4.4.1. Инструкции загрузки

Инструкции загрузки передают данные из памяти в основной регистр, в регистр с плавающей точкой или в пару регистров с плавающей точкой.

При загрузке основного регистра допустимы размеры 1, 2, 4 или 8 байт. При загрузке менее 8 байт, загружаемое значение расширяется до 64 бит.

При загрузке регистра с плавающей точкой доступные размеры определены так: одинарная точность (4 байта), двойная точность (8 байтов), двойная расширенная точность (10 байтов), целое либо параллельное FP(8 байтов). Значение, загружаемое из памяти, преобразуется в формат регистра с плавающей точкой (детали см. в разделе 5.3.1 «Инструкции доступа к памяти»).

Парные инструкции загрузки с плавающей точкой загружают два смежных числа одинарной точности (по 4 байта каждое), двойной точности (по 8 байт каждое), целое либо параллельное FP(по 8 байт каждое) в два независимых регистра с плавающей точкой (см. описание инструкцииldfpдля ограничений на указание принимающего регистра). Парные инструкции загрузки с плавающей точкой могут задавать обновление базового адресного регистра, но только непосредственным значением данных удвоенной точности.

Варианты загрузок регистров (и основных и с плавающей точкой) определены для поддержки управления направляемого компилятором и спекулятивности по данным. Они используют NaTбиты основных регистров иALAT. См. разделы 4.4.4 «Спекуляция по управлению» и 4.4.5 «Спекуляция по данным».

Также, обеспечиваются варианты управления подсистемой памяти/кэша. Упорядоченная загрузка может использоваться для принудительного упорядочивания доступов к памяти. См. раздел 4.4.7 «Упорядочивание доступа к памяти». Смещенная загрузка обеспечивает подсказку для запроса в исключительную собственность линии доступа. См. раздел 4.4.6 «Управление иерархией памяти и непротиворечивость».

Загрузки специального назначения задают восстановление значений регистра, которые были сброшены (spill) в память. Инструкцияld8.fillзагружает общий регистр и соответствующийNaTбит (определена только для 8-байтового доступа). Инструкцияldf.fillзагружает из памяти значение в формате регистра с плавающей точкой без преобразования (определена только для 16-байтового доступа). См. раздел 4.4.4.6 «Сливание и заливание регистров».

4.4.2. Инструкции сохранения

Инструкции сохранения передают данные из основного регистра или регистра с плавающей точкой в память. Инструкции сохранения всегда не спекулятивны. Инструкции сохранения могут задавать обновление базового адресного регистра, но только непосредственным значением. Также, обеспечивается вариант управления подсистемой памяти/кэша. Упорядоченное сохранение может использоваться для принудительного упорядочивания доступов к памяти.

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

Сохранения специального назначения задают сброс значений регистра в память. Инструкция st8.fillсохраняет общий регистр и соответствующийNaTбит (определена только для 8-байтового доступа). Это позволяет сливать в память результат спекулятивного вычисления, а затем восстанавливать его. Инструкцияstf.fillзапоминает в памяти значение в формате регистра с плавающей точкой без преобразования. Это позволяет кодировать сливание и восстановление регистра для совместимости с возможными будущими расширениями формата регистра с плавающей точкой. Также, инструкцияstf.fillне вызывает ошибку если регистр содержитNaTVal, но определена только для 16-байтового доступа. См. раздел 4.4.4.6 «Сливание и заливание регистров».

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