Форматы данных и команды их обработки процессоров Pentium III, Pentium IV
| Категория реферата: Рефераты по информатике, программированию
| Теги реферата: виды докладов, конституция реферат
| Добавил(а) на сайт: Хабалов.
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата
Различие в способе адресации регистров (относительная для FPU и явная
прямая в ММХ), обнуление тегов инструкциями ММХ и некоторые другие нюансы
не позволяют чередовать инструкции FPU и ММХ. Блок FPU/MMX может работать
либо в одном, либо в другом режиме. Если, к примеру, в цепочку инструкций
FPU нужно вклинить инструкции ММХ, после чего продолжить вычисления FPU, то
перед первой инструкцией ММХ приходится сохранять контекст (состояние
регистров) FPU в памяти, а после этих инструкций снова загружать контекст.
На эти сохранения и загрузки расходуется процессорное время, в результате
возможна полная потеря выигрыша от реализации технологии SIMD. Совпадение
регистров ММХ и FPU оправдывают тем, что для сохранения контекста ММХ при
переключении задач не требуется доработок в операционной системе — контекст
ММХ сохраняется тем же способом, что и FPU, с которым умели работать
издавна. Таким образом, операционным системам было все равно, какой
процессор установлен — с ММХ или без. Но для того чтобы реализовать
преимущества SIMD, приложения должны "уметь" ими пользоваться (и не
проиграть на переключениях).
Частое чередование кодов FPU и ММХ может снизить производительность за
счет необходимости сохранения и восстановления весьма объемного контекста
FPU.
4. Расширение SSE и SSE2 — блок XMM
Процессоры Pentium 3 имеют так называемое потоковое расширение SSE
(Streaming SIMD Extensions). В те времена, когда будущий Pentium III
называли еще Kathmai, фирма Intel объявила о новых инструкциях KNI (Kathmai
New Instruction), так что SSE — это синоним "староинтеловского" KNI. Новые
процессоры имеют дополнительный независимый блок из восьми 128-битных
регистров, названных ХММ0...ХММ7 (очевидно, eXtended MultiMedia), и регистр
состояния/управления MXCSR. В каждый из регистров ХММ помещаются четыре 32-
битных числа в формате с плавающей точкой одинарной точности. Блок
позволяет выполнять векторные (они же пакетные) и скалярные инструкции.
Векторные инструкции реализуют операции сразу над четырьмя комплектами
операндов. Скалярные инструкции работают с одним комплектом операндов —
младшим 32-битным словом. При выполнении инструкций с ХММ традиционное
оборудование FPU/MMX не используется, что позволяет эффективно смешивать
инструкции ММХ с инструкциями над операндами с плавающей точкой. Здесь
блоки процессора меняются ролями — регистры ММХ, наложенные на регистры
традиционного сопроцессора, используются для целочисленных потоковых
вычислений, а вычисления с плавающей точкой (правда, только с одинарной
точностью, но для мультимедийпых приложений ее хватает) возлагаются на
новый блок ХММ. Кроме инструкций с новым блоком ХММ в расширение SSE входят
и дополнительные целочисленные инструкции с регистрами ММХ, а также
инструкции управления кэшированием. Новые инструкции с регистрами ММХ, как
и их предшественники из "классического" ММХ, не допускают чередования с
инструкциями FPU без переключения контекста FPU/MMX.
С инструкциями SSE могут использоваться префиксы замены сегмента и
изменения разрядности адреса (влияют на инструкции, обращающиеся к памяти).
Использование префиксов изменения разрядности операнда зарезервировано
(может привести к непредсказуемым результатам). Префикс Lock вызывает
исключение #UD. Из префиксов повтора можно использовать только безусловный
(REP) и только для "потоковых" инструкций (с ХММ), Остальные применения
префиксов повтора могут привести к непредсказуемым результатам.
В процессоре Pentium 4 набор инструкций получил очередное расширение —
SSE2, в основном касающееся добавления новых типов 128-битных операндов для
блока ХММ:
• упакованная пара вещественных чисел двойной точности;
• упакованные целые числа: 16 байт, 8 слов, 4 двойных слова или пара учетверенных (по 64 бита) слов.
В процессор введены новые функции целочисленной арифметики SIMD, 128- разрядные для регистров ХММ и такие же 64-разрядные для регистров ММХ; ряд старых инструкций ММХ распространили и на ХММ (в 128-битном варианте); добавлены инструкции преобразований для новых форматов данных, а также расширены возможности "перемешивания" данных в блоке ХММ. Кроме того, расширена поддержка управления кэшированием и порядком исполнения операций с памятью. Инструкции SSE2 предназначены для ЗD-графики, кодирования/декодирования видео, а также шифрования данных.
5. Команды обработки данных
Система команд 32-разрядных процессоров является существенно расширенной системой команд процессоров 8086/80286. Расширения касаются увеличения разрядности адресов и операндов, более гибкой системы адресации, появления принципиально новых типов данных (битовые строки и поля) и команд.
Команды (инструкции) содержат одно- или двухбайтный код инструкции, за
которым может следовать несколько байт, определяющих режим исполнения
команды, и операнды. Команды могут использовать до трех операндов (или ни
одного). Операнды могут находиться в памяти, регистрах процессора или
непосредственно в команде. Для 32-разрядных процессоров разрядность слова
(word) по умолчанию может составлять 32, а не 16 бит. Это распространяется
на многие инструкции, включая и строковые. В реальном режиме и режиме
виртуального процессора 8086 по умолчанию используется 16-битная адресация
и 16-битные операнды-слова. В защищенном режиме режим адресации и
разрядность слов по умолчанию определяются дескриптором кодового сегмента.
Перед любой инструкцией может быть указан префикс переключения разрядности
адреса или слова. При адресации памяти использование сегментного регистра, предусмотренного командой, в ряде инструкций может подавляться префиксом
изменения сегмента (Segment Override).
В системе команд насчитывается несколько сотен инструкций, поэтому в
данной работе обзорно рассмотрены все команды обработки данных (блоков
процессора АЛУ, FPU, MMX, и XMM), а далее более подробно описаны
инструкции, появившиеся в процессорах Pentium 3 (блок XMM — SSE) и Pentium
4 (блок XMM — SSE2).
Инструкции пересылки данных (см. табл) позволяют передавать константы или переменные между регистрами и памятью, а также портами ввода-вывода в различных комбинациях, но в памяти может находиться не более одного операнда. В эту группу отнесены и инструкции преобразования форматов — расширений и перестановки байт. Операции со стеком выполняются словами с разрядностью, определяемой текущим режимом. При помещении в стек слова указатель стека SP уменьшается на число байт слова (2 или 4), при извлечении — увеличивается. "Классические" (8086) инструкции пересылки не влияют на содержимое регистра флагов. Инструкции пересылки по результатам сравнения (CMPXCHG) модифицируют флаг ZF. Новые инструкции условной пересылки (CMOVxx) позволяют сократить число ветвлений в программе.
Таблица. Инструкции пересылки данных
Инструкция Описание
BSWAP Перестановка байт из порядка младший-старший (L-H) в порядок старший- младший (H-L) (486+)
CBW/CWDE Преобразование байта AL в слово АХ (расширение знака AL в АН:
АН заполняется битом AL.7) или слова АХ в двойное слово ЕАХ
CMOVA/CMOVNBE Пересылка, если выше "CF ИЛИ ZF)=0) (P6+)
CMOVAE/CMOVNB Пересылка, если не ниже (CF=0) (P6+)
CMOVB/CMOVNAE Пересылка, если ниже (CF=1) (P6+)
CMOVBE/CMOVNA Пересылка, если не выше ((CF ИЛИ ZF)=1) (P6+)
CMOVC Пересылка, если перенос (CF=1) (P6+)
CMOVE/CMOVZ Пересылка, если равно (ZF=1) (P6+)
CMOVG/CMOVNLE Пересылка, если больше (SF=(0F И ZF)) (P6+)
CMOVGE/CMOVNL Пересылка, если больше или равно (SF=0F) (P6+)
CMOVL/CMOVNGE Пересылка, если меньше (ZF0F) (P6+)
CMOVLE/CMOVNG Пересылка, если меньше или равно (SF0F или ZF=0) (P6+)
CMOVNC Пересылка, если нет переноса (CF=0) (P6+)
CMOVNE/CMOVNZ Пересылка, если не равно (ZF=0) (P6+)
CMOVNO Пересылка, если нет переполнения (0F=0) (P6+)
CMOVNP/CMOVPO Пересылка, если нет паритета (нечетность) (P6+)
CMOVNS Пересылка, если неотрицательно (SF=0) (P6+)
CMOVO Пересылка, если переполнение (0F=1) (P6+)
CMOVP/CMOVPE Пересылка, если паритет (четность) (Р6+)
CMOVS Пересылка, если отрицательно (SF=1)(P6+)
CMPXCHG r/in,r Обмен по результату сравнения байта, слова или двойного слова (486+)
CMPXCHG8B m64 Обмен по результату сравнения учетверенного слова
(5+)
CWD/CDQ Преобразование слова АХ в двойное слово DX:AX (расширение знака, DX заполняется битом АХ. 15) или двойного слова ЕАХ в учетверенное EDX:EAX
IN Ввод из порта ввода-вывода в AL/(E)AX
MOV Пересылка(копирование)данных
MOVSX Копирование байта/слова со знаковым расширением до слова/ двойного слова(386+)
MOVZX Копирование байта/слова с нулевым расширением до слова/ двойного слова(386+)
OUT Вывод в порт из AL/(E)AX
POP Извлечение слова данных из стека в регистр или память, (E)SP инкрементируется
POPA(POPAll) Извлечение данных из стека в регистры Dl, SI, ВР, ВХ, DX,
CX, AX (286+)
POPAD Извлечение данных из стека в регистры EDI, ESI, ЕВР, ЕВХ, EDX, ЕСХ,
ЕАХ (386+)
PUSH Помещение слова из регистра или памяти в стек после декремента (E)SP
PUSHA (PUSH All) Помещение в стек регистров АХ, CX, DX, BX, SP (исходное значение), ВР, SI, Dl (286+)
PUSHAD Помещение в стек регистров ЕАХ, ЕСХ, EDX, ЕВХ, ESP (исходное значение), ЕВР, ESI, EDI (386+)
XCHG Обмен данными (взаимный) между регистрами или регистром и памятью
Инструкции ввода-вывода позволяют пересылать как одиночный бант или
слово между портом и регистром процессора (инструкции IN и OUT), так и блок
байт (слов) между портом и группой смежных ячеек памяти (инструкции
INSB/INSW и OUTSB/OUTSW с префиксом повтора, см. ниже). Непосредственная
адресация порта в команде обеспечивает доступ только к первым 256 адресам
портов, косвенная (через регистр DX) — ко всему пространству ввода-вывода
(64 Кбайт). Разрядность операнда и адрес должны согласовываться с
физическими возможностями и особенностями поведения адресуемого устройства.
При работе с памятью такие нюансы во внимание принимать обычно не
приходится.
Инструкции двоичной арифметики выполняют все арифметические действия с байтами, словами и двойными словами, кодирующими знаковые или беззнаковые целые числа. Умножение и деление для 8086 возможны только с аккумулятором, результат для 16-битных операндов расширяется в регистре DX.
Для 286+ возможно двух- и трехадресное умножение с расширенном тилько в старший байт (два байта для 386+).
Таблица. Инструкции двоичной арифметики
Инструкция Описание
Рекомендуем скачать другие рефераты по теме: изложение по русскому 7 класс, образ сочинение.
Категории:
Предыдущая страница реферата | 1 2 3 4 5 6 7 8 9 10 11 | Следующая страница реферата