- •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.5.2. Подсказки предсказаний переходов.
Для улучшения предсказания перехода, процессору может быть дана информация о поведении перехода. Эта информация может быть закодирована двумя способами: в виде подсказок перехода являющихся частью инструкции перехода (далее упоминаются как подсказки), либо отдельными инструкциями предсказания переходов (brp), где вся инструкция является подсказывающей информацией. Подсказки и инструкцииbrpне затрагивают функциональное поведение программы и могут игнорироваться процессором.
Инструкции перехода могут обеспечивать три типа подсказок:
Сомнительная (whether) стратегия предсказания. Она описывает (для переходов типаcond, call, ret) как процессор должен предсказать условия перехода. (Для циклических переходов предсказание основывается наLCиEC). В табл. 4.26 показаны предложенные стратегии, которые могут быть подсказаны.
Табл.4.26. Подсказки Сомнительного предсказания в переходах.
Окончание |
Стратегия |
Действие |
spnt |
Статическое не принятие |
Игнорировать этот переход, не выделять ресурсы предсказания для этого перехода |
sptk |
Статическое принятие |
Всегда предсказывать принятым, не выделять ресурсы предсказания для этого перехода |
dpnt |
Динамическое не принятие |
Использовать динамическое аппаратное предсказание. Если для этого перехода не существует информации о динамической истории, то переход не принимается |
dptk |
Динамическое принятие |
Использовать динамическое аппаратное предсказание. Если для этого перехода не существует информации о динамической истории, то переход принимается |
Последовательная предварительная выборка(prefetch). Она показывает, как много кода процессор должен выбрать предварительно из точки перехода (показана в табл.4.27). Для дальнейшей информации посмотрите документацию, определяющую процессор.
Табл. 4.27. Подсказки последовательной предварительной выборки в переходах
Окончание |
Подсказка типа prefetch |
Действие |
few |
Предварительная выборка нескольких строк |
При предварительной выборке кода из точки перехода, предвыборка останавливается после нескольких строк (их число зависит от реализации) |
many |
Предварительная выборка многих строк |
При предварительной выборке кода из точки перехода, выбирается много строк (также, их число зависит от реализации) |
Освобождение предсказателя(predictor). Она обеспечивает повторное использование информации, чтобы позволить аппаратным средствам лучше управлять ресурсами предсказания перехода. Обычно ресурсы предсказания хранят следы большинства только что выполненных переходов. Однако иногда большинство только что выполненных переходов бесполезно запоминать, либо потому, что они не будут посещаться в обозримое время, либо потому, что инструкция подсказки будет предварительно пополнять информацию о повторном посещении этого перехода. В таких случаях эта подсказка может использоваться для освобождения ресурсов предсказания.
Табл.4.28. Подсказка для освобождения предсказателя.
Окончание |
Действие |
нет |
Не делать освобождения |
clr |
Освободить информацию перехода |