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

4.5.3. Инструкции предсказания переходов

Инструкции предсказания переходов – это полные инструкции, предназначенные только для того, чтобы обеспечить предварительную информацию о будущих переходах. Инструкции предсказания переходов обеспечивают следующие детали информации:

  • Месторасположение перехода. Смещение в инструкцииbrpдобавляется кIPсвязки, содержащей инструкциюbrp,даетIPсвязки содержащей будущий переход.

  • Адресат перехода. Относительные инструкцииbrpопределяют адресат будущего перехода с помощью 21-битного смещения (также как в переходах). Смещение плюсIPсвязки содержащей инструкциюbrp,дает конечный адрес перехода. Косвенные инструкцииbrpзадают регистр перехода, который будет использоваться будущим переходом.

  • Важность перехода. Эта подсказка указывает аппаратным средствам, что они должны применить очень быструю (но маленькую) структуру предсказания для этого перехода (используется в плотных циклах).

  • Сомнительная стратегия предсказания. Такая же так и стратегия, подсказывающая переходы, за исключением того, что доступные подсказки несколько отличаются. Статически не принятые, не поддерживаются (бесполезно обеспечивать раннее указание таких ветвей), кроме того, поддерживается только одна форма динамического предсказания. Вместо этого, включены две стратегии для указания того, что будет циклический переход либо «положительного» (cloop, ctop, wtop), либо «отрицательного» (cexit, wexit) типа.

Инструкция записи в регистр перехода, тоже может обеспечиваться той же информацией подсказки, упрощая установку подсказки косвенного перехода.

4.6. Инструкции мультимедиа.

Инструкции мультимедиа (см. табл. 4.29) обрабатывают основные регистры, как объединение восьми 8-разрядных, четырех 16-разрядных или двух 32-разрядных элементов. Они работают с каждым элементом независимо и параллельно. Элементы всегда выравниваются по своим естественным границам внутри основного регистра. Большинство мультимедиа инструкций могут работать с элементами нескольких размеров. Существует три класса мультимедиа инструкций: арифметические, сдвиговые и преобразования данных (arrangement).

4.6.1. Параллельная арифметика

Есть три формы параллельного сложения и вычитания: модульные (padd, psub), со знаковым насыщением (padd.sss, psub.sss) и с насыщением без знака (padd.uuu, padd.uus, psub.uuu, psub.uus). Модульные формы циклически замыкают результат между наибольшим и наименьшим представимым значением в диапазоне результата элемента. В формах с насыщением, результаты большие, чем наибольшее представимое значение в диапазоне результата элемента, либо меньшие, чем наименьшее представимое значение диапазона, округляются, соответственно, к наибольшему или наименьшему представимому значению диапазона результата. Форма со знаковым насыщением обрабатывает оба исходных значения как знаковые и округляет результат к границам знакового диапазона. Форма с насыщением без знака, обрабатывает оба исходных значения как беззнаковые и округляет результат к границам беззнакового диапазона. Два варианта заданы для того, чтобы обрабатывать второе исходное значение либо как знаковое (.uus), либо как беззнаковое (.uuu).

Инструкция параллельного вычисления среднего арифметического значения (pavg, pavg.raz) складывает соответствующие элементы из каждого источника, а каждый результат сдвигается вправо на один бит. В простой форме инструкции, перенос самого старшего бита каждой суммы записывается в самый старший бит результирующего элемента. В форме.raz(roundawayfromzero– округление в сторону бесконечности), перед смещением каждой суммы к ней добавляется 1. Инструкция параллельного вычисления средней разности (pavgsub) выполняет подобную операцию над разностью исходных значений.

Инструкция параллельного сдвига влево и сложения (pshladd) выполняет сдвиг влево элементов первого исходного значения, а затем складывает их с соответствующими элементами второго исходного значения. Операции сдвига и сложения выполняются со знаковым насыщением. Инструкция параллельного сдвига вправо и сложения (pshradd) аналогичнаpshladd. Обе эти инструкции работают только с 2-байтными элементами.

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

Инструкция правого параллельного умножения (pmpy.r) перемножает два соответствующих знаковых 2-байтных элемента стоящих на четных местах из обоих источников и записывает результат в два четырехбайтных элемента приемника. Инструкцияpmpy.lвыполняет аналогичную операцию с нечетными 2-байтными элементами. Инструкция параллельного умножения и сдвига вправо (pmpyshr, pmpyshr.u) перемножает соответствующие 2-байтные элементы обоих источников, создавая четыре 4-байтных результата. Четырехбайтные результаты сдвигаются вправо на 0, 7, 15 или 16 бит, в зависимости от указания в инструкции. После этого в приемном регистре запоминаются младшие двухбайтовые части от сдвинутых четырехбайтных результатов.

Инструкция параллельного суммирования абсолютного различия (psad) накапливает абсолютные различия соответствующих 1-байтных элементов и записывает результат в приемник.

Инструкции параллельного минимума (pmin.u, pmin) и параллельного максимума (pmax.u, pmax) поставляют в приемник, соответственно минимум и максимум для соответствующих 1-байтных или 2-байтных элементов. 1-байтные элементы обрабатываются как значения без знака, а 2-байтные элементы обрабатываются как значения со знаком.

Табл. 4.29. Инструкции параллельной арифметики.

Мнемоника

Действие

1-байт

2-байт

4-байт

padd

Параллельное сложение по модулю

х

х

х

padd.sss

Параллельное сложение со знаковым насыщением

х

х

padd.uuu, padd.uus

Параллельное сложение с насыщением без знака

х

х

psu

Параллельное вычитание по модулю

х

х

х

psub.sss

Параллельное вычитание со знаковым насыщением

х

х

psub.uuu, psub.uus

Параллельное вычитание с насыщением без знака

х

х

pavg

Параллельное среднее арифметическое

х

х

pavg.raz

Параллельное среднее арифметическое с округлением в сторону бесконечности

х

х

pavgsub

Параллельные средние разности

х

х

pshladd

Параллельный сдвиг влево и сложение со знаковым насыщением

х

pshradd

Параллельный сдвиг вправо и сложение со знаковым насыщением

х

pcmp

Параллельное сравнение

х

х

х

pmpy.l

Параллельное знаковое умножение нечетных элементов

х

pmpy.r

Параллельное знаковое умножение четных элементов

х

pmpyshr

Параллельное знаковое умножение и сдвиг вправо

х

pmpyshr.u

Параллельное умножение без знака и сдвиг вправо

х

psad

Параллельная сумма абсолютных разностей

х

pmin

Параллельный минимум

х

х

pmax

Параллельный максимум

х

х

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