
- •4. Модель прикладного программирования.
- •4.1. Стек регистров
- •4.1.1. Управление стеком регистров
- •4.1.2. Инструкции стека регистров
- •4.2. Инструкции целочисленного вычисления
- •4.2.1. Арифметические инструкции
- •4.2.2. Логические инструкции
- •4.2.3. 32-Битные адреса и целые
- •4.2.4. Инструкции битовых полей и сдвигов
- •4.2.5. Большие константы.
- •4.3. Инструкции сравнения и предикация
- •4.3.1. Предикация
- •4.3.2. Инструкции сравнения
- •4.3.3. Типы сравнения
- •4.3.4. Передачи предикатных регистров
- •4.4. Инструкции доступа к памяти
- •4.4.1. Инструкции загрузки
- •4.4.2. Инструкции сохранения
- •4.4.3. Семафорные инструкции
- •4.4.4. Спекуляция по управлению
- •4.4.4.1. Концепции спекуляции по управлению
- •4.4.4.2. Спекуляция по управлению и инструкции
- •4.4.4.3. Спекулятивность по управлению и сравнения
- •4.4.4.4. Спекуляция по управлению без восстановления
- •4.4.4.5. Контроль операционной системы над откладыванием исключений
- •4.4.4.6. Сливание и заливание регистров
- •4.15. Инструкции, связанные со спекуляцией по управлению
- •4.4.5. Спекуляция по данным
- •4.4.5.1. Концепция спекуляции по данным
- •4.4.5.2. Спекуляция по данным и инструкции
- •4.4.5.3. Детализирование функциональности структуры alat и инструкции связанные с этим.
- •4.4.5.3.1. Выделение и проверка элементов alat
- •4.4.5.3.2. Аннулирование элементов alat.
- •4.4.5.4. Комбинирование спекуляций по управлению и по данным
- •4.4.5.5. Окончания инструкций для управления alat
- •4.4.6. Управление иерархией памяти и непротиворечивость
- •4.4.6.1 Иерархия памяти и подсказки
- •4.4.6.2. Согласованность памяти
- •4.4.7. Упорядочивание доступа к памяти
- •4.5. Инструкции переходов
- •4.5.1. Поддержка модульно планируемых циклов.
- •4.5.2. Подсказки предсказаний переходов.
- •4.5.3. Инструкции предсказания переходов
- •4.6. Инструкции мультимедиа.
- •4.6.1. Параллельная арифметика
- •4.6.2. Параллельные сдвиги
- •4.6.3. Преобразование данных
- •4.7. Пересылки регистрового файла
- •4.8. Символьные строки и подсчет совокупности
- •4.8.1. Символьные строки
- •4.8.2. Подсчет совокупности
- •4.9. Передача уровня привилегий
4.7. Пересылки регистрового файла
В табл.4.32 показаны инструкции пересылающие значения между файлом основных регистров и файлами прикладных регистров, регистров с плавающей точкой, предикатов, мониторинга выполнения, идентификации процессора. Несколько инструкций пересылки используют одну и ту же мнемонику (mov). Значение операнда указывает к какому файлу регистров происходит обращение.
Табл. 4.32. Инструкции пересылки регистровых файлов.
Мнемоника |
Действие |
getf.exp, getf.sig |
Перенести порядок или мантиссу из FRвGR |
getf.s, getf.d |
Перенести число в формате с одинарной или двойной точностью из FRвGR |
setf.s, setf.d |
Перенести из GRвFR, число в формате с одинарной или двойной точностью |
setf.exp, setf.sig |
Перенести из GRвFRпорядок или мантиссу |
mov =br |
Перенести из BRвGR |
mov br= |
Перенести из GRвBR |
mov =pr |
Перенести набор предикатов в GR |
mov pr=, mov pr.rot= |
Перенести из GRв набор предикатов |
mov ar= |
Перенести из GRвAR |
mov =ar |
Перенести из ARвGR |
mov =psr.um |
Перенести из маски пользователя в GR |
mov psr.um= |
Перенести из GRв маску пользователя |
sum, rum |
Установить или сбросить маску пользователя |
mov =pmd[…] |
Перенести данные из регистра мониторинга производительности в GR |
mov =cpuid[…] |
Перенести из регистра идентификации процессора в GR |
mov =ip |
Перенести данные из указателя инструкций |
К памяти могут обращаться только инструкции источниками или приемниками, которых являются общие регистры или регистры с плавающей точкой. Если необходим обмен между памятью и другими регистрами, то основные регистры используются в качестве промежуточных регистров.
Определены два класса обменов между основными регистрами и регистрами с плавающей точкой. Первый тип перемещает мантиссу или порядок со знаком (getf.sig,setf.sig, getf.exp, setf.exp). Второй тип перемещает числа с одинарной или двойной точностью (getf.s, setf.s, getf.d, setf.d). Эти инструкции также выполняют преобразования между форматами маркеров отложенных исключений.
Поддерживаются инструкции обмена между регистрами перехода и основными регистрами. Инструкция перемещения в регистр перехода, может также, дополнительно включать подсказки перехода. См. выше раздел 4.5.2 «Подсказки предсказания переходов».
Определены инструкции для обмена между файлом предикатных регистров и основным регистром. Эти инструкции работают в «широкополосной» (broadside) манере, благодаря чему множество предикатных регистров передается параллельно (предикатный регистрNсоответствует битуNосновного регистра). Инструкция загрузки предикатов (mov pr=) заполняет множество предикатных регистров из общего регистра в соответствии с маской задаваемой непосредственным значением. Маска содержит по одному биту для каждого статического предикатного регистра (отPR1 доPR15, аPR0 аппаратно установлен в 1) и один бит для всех ротационных предикатов (отPR16 доPR63). Предикатный регистр записывается из соответствующего бита общего регистра, если соответствующий бит маски установлен в 1. Если бит маски сброшен, то предикатный регистр не изменяется. Для ротационных предикатов перемещение осуществляется так, как будто бы полеCFM.rrb.prсодержит ноль. Фактическое значение поляCFM.rrb.prигнорируется и остается неизменным. Инструкция извлечения предикатов (mov =pr) перемещает целиком весь файл предикатных регистров в принимающий общий регистр.
Кроме этого, определены инструкции для перемещения значений между файлом общих регистров и маской пользователя (mov psr.um=иmov =psr.um). Инструкцииsumиrumустанавливают и сбрасывают маску пользователя. Маска пользователя является не привилегированной частью регистраPSR(регистра состояния процессора).
Инструкция mov =pmd[…] определена для переноса из регистра данных мониторинга выполнения (PMD) в основной регистр. Если операционная система запрещает чтение на уровне пользователя, регистров данных мониторинга выполнения, то возвращаются все нули. Инструкцияmov =cpuid[…] определена для переноса из регистра идентификации процессора в основной регистр.
Инструкция mov =ip обеспечивает копирование текущего значения указателя инструкций (IP) в основной регистр.