Xreferat.com » Рефераты по информатике и программированию » Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

Форматы данных и команды их обработки процессоров Pentium III, Pentium IV

Форматы данных и команды их обработки процессоров Intel Pentium III и Intel Pentium IV


АННОТАЦИЯ


В курсовой работе представлены данные о всевозможных форматах данных процессоров Intel Pentium III и Intel Pentium IV. Так же приведён полный список команд, реализованных в данных процессорах, с кратким описанием для обработки этих данных. Более подробно рассмотрены команды блока XMM: SSE – Pentium III и SSE2 – Pentium IV, с подробным описанием: для данных команд предсталено описание синтксиса, правила построения машинного кода, принцип действия (для многих команд принцип действия для большей наглядности представлен графически, ввиде схем), воздействие команды на флаги процессора, возможные возникаемые исключения во время выполнения команд.


СОДЕРЖАНИЕ


Введение. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1. Типы данных процессоров Pentium 3, Pentium 4 . . . . . . . . . . . . 5

2. Математический сопроцессор x87 . . . . . . . . . . . . . . . . 9

3. Технология MMX . . . . . . . . . . . . . . . . . . . . . . . 12

4. Расширение SSE и SSE2 — блок XMM. . . . . . . . . . . . . . . 14

5. Команды обработки данных. . . . . . . . . . . . . . . . . . . 15

6. Команды блока XMM (SSE и SSE2) . . . . . . . . . . . . . . . . 31

6.1. Команды блока XMM (SSE – Pentium 3) . . . . . . . . . . . 33

6.2. Команды блока XMM (SSE2 – Pentium 4) . . . . . . . . . . . 50

Литература . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89

ВВЕДЕНИЕ

Целью курсовой работы «Форматы данных и команды их обработки процессоров Intel Pentium III, Intel Pentium IV» является поытка наиболее полно показать отличительные признаки современных процессоров. В данной работе автор не ставил себе задачу расписать каждую команду обработки данных существующую в данных процессорах, ведь отличительная особенность процессоров Intel заключается в том, что наиболее поздние модификации полностью совместимы с более ранними. В процессорах Intel Pentium III, Intel Pentium IV нововведением стали два блока XMM (eXtended MultiMedia) – это SSE (Streaming SIMD (Single Istruction Multiply Data) Extensions) – введённый в процессоре Intel Pentium III и SSE2 – введённый в процессоре Intel Pentium IV. Поэтому базовые команды (существующие в более ранних модификациях Intel, начиная с 8086), команды математического сопроцессора (FPU) и команды блока MMX, появившегося впервые в процессоре Intel Pentium рассмотрены лишь обзорно. Так как расширение 3Dnow! блока MMX, введённое фирмой AMD в процессорах K6-2 на данный момент отсутствует в процессорах фирмы Intel, то оно совсем не рассмотренно в курсовой работе.


  1. Типы данных процессоров Pentium 3, Pentium 4


История 32-разрядных процессоров Intel Pentium 3 и Pentium 4 началась с процессора Intel386. Он вобрал в себя все черты своих 16-разрядных предшественников 8086/88 и 80286 для обеспечения совместимости с громадным объемом программного обеспечения, существовавшего на момент его появления. Процессоры могут оперировать с 8-,16- и 32-битными операндами, строками байт, слов и двойных слов, а также с битами, битовыми полями и строками бит.


Рассматриваемые процессоры непосредственно поддерживают (используют в качестве операндов) знаковые и беззнаковые целые числа, строки байт, цифр и символов, битовые строки, указатели и числа с плавающей точкой. В семействе х86 принято, что слова записываются в двух смежных байтах памяти, начиная с младшего. Адресом слова является адрес его младшего байта. Двойные слова записываются в четырех смежных байтах, опять-таки начиная с младшего байта, адрес которого и является адресом двойного слова. Этот порядок называется Little-Endian Memory Format. В других семействах процессоров применяют и обратный порядок — Big-Endian Memory Format, в котором адресом слова (двойного слова) является адрес его старшего байта, а младшие байты располагаются в последующих адресах. Для взаимного преобразования форматов слова имеется инструкция XCHG, двойного слова — BSWAP (процессор 486 и выше).


На рис.1. приведены форматы данных, обрабатываемых целочисленным блоком АЛУ всех 32-разрядных процессоров:

• Бит (Bit) — единица информации. Бит в памяти задается базой (адресом слова) и смещением (номером бита в слове).

• Битовое поле (Bit Field) — группа до 32 смежных бит, располагающихся не более чем в 4 байтах.

• Битовая строка (Bit String) — набор смежных бит длиной до 4 Гбит.

• Байт (Byte) — 8 бит.

• Числа без знака: байт/слово/двойное/учетверенное слово (Unsigned Byte/ Word/Double Word/Quade Word), 8/16/32/64 бит.

• Целые числа со знаком: байт/слово/двойное/учетверенное слово (Integer Byte/ Word/Double Word/Quade Word). Единичное значение самого старшего бита (знак) является признаком отрицательного числа, которое хранится в дополнительном коде.

• Двоично-десятичные числа (BCD — Binary Coded Decimal):

• 8-разрядные упакованные (Packed BCD), содержащие два десятичных разряда в одном байте;

• 8-разрядные неупакованные (Unpacked BCD), содержащие один десятичный разряд в байте (значение бит 7:4 при сложении и вычитании несущественно, при умножении и делении они должны быть нулевыми).

• Строки байт, слов и двойных слов (Bit String, Byte String, Word String, Double Word String) длиной до 4 Гбайт.

• Указатели:

• длинный указатель (48 бит) — 16-битный селектор (или сегмент) и 32-битное смещение;

• короткий указатель — 32-битное смещение;

• просто указатель (32 бит, единственный тип указателя для 8086 и 80286) • 16-битный селектор (или сегмент) и 16-битное смещение.

16-разрядные процессоры из приведенных типов данных не поддерживают учетверенные слова всех типов, битовые поля и строки, строки двойных слов, короткие и длинные указатели.


Числа в формате с плавающей точкой и упакованные 80-битные BCD-числа обрабатываются блоками FPU процессоров класса 486 и выше, а также сопроцессорами 8087/287/387. Упакованные 64-битные и 128-битные данные обрабатываются процессорами с ММХ и SSE. Форматы данных, обрабатываемых блоками FPU/MMX и ХММ, представлены на рис. 2.


• Действительные числа в формате с плавающей точкой:

• одинарной точности (Single Precision), 32 бит — 23 бит мантисса, 8 бит порядок;

• двойной точности (Double Precision), 64 бит — 52 бит мантисса, 11 бит порядок;

• повышенной точности (Extended Precision), 80 бит — 64 бит мантисса, 15 бит порядок.

• Двоично-десятичные 80-битные упакованные числа (18 десятичных разрядов и знак).

• Упакованные действительные числа одинарной точности в формате с плавающей точкой, обрабатываются блоком ХММ.

• Упакованные целые числа, знаковые и беззнаковые, обрабатываются блоком ММХ:

• упакованные байты (Packed byte) — восемь байт;

• упакованные слова (Packed word) — четыре слова;

• упакованные двойные слова (Packed doubleword) — два двойных слова;

• учетверенное слово (Quadword) — одно слово.


Для 16-разрядных процессоров, естественно, все форматы чисел для блоков ММХ и ХММ недоступны.


Рассмотрим более подробно блоки, упомянутые выше: блоки FPU, MMX, XMM, которые архитектуре процессоров IA-32 х86 держатся особняком. Они присутствуют не но всех процессорах и даже по схемотехнической реализации являются пристройками к центральному процессору с его набором обычных целочисленных регистров. Данные блоки предназначены для ускорения вычислений.


Математический сопроцессор (FPU) позволяет использовать несколько форматов чисел с плавающей точкой — FP-форматов. Операции с такими числами можно выполнять и программно средствами целочисленного процессора, но сопроцессор выполняет эти операции анпаратно во много раз быстрее. Блок ММХ дает ускорение целочисленных вычислений за счет одновременной обработки одной инструкцией целого пакета чисел (пар чисел). Блок ХММ комбинирует эти два приема — обрабатывает одной инструкцией пакет из четырех чисел в FP-формате. Исторически первым появился сопроцессор. Блок ММХ ради совместимости с операционными системами "спрятали" в то же оборудование, что и сопроцессор. Так появился комбинированный блок, называемый блоком FP/MMX, или FPU/ММХ. И толысо блок ХММ, используемый расширением SSE процессоров Pentium 3, стал полностью новым самостоятельным набором регистров.

Рис. 1. Типы данных, обрабатываемых целочисленным АЛУ


Рис. 2. Типы данных, обрабатываемых блоками FPU/MMX и ХММ

При отсутствии математического сопроцессора прикладная программа все-таки может использовать инструкции FPU, но для этого операционная система должна поддерживать эмуляцию сопроцессора. Эмулятор сопроцессора — это программа-обработчик прерывания от сопроцессора или исключения #NM, которая должна "выловить" код операции, сопроцессора, определить местонахождение данных и выполнить требуемые вычисления, используя целочисленную арифметику центрального процессора. Понятно, что эмуляция будет выполняться во много раз медленнее, чем те же действия, выполняемые настоящим сопроцессором. Тем не менее эмуляция позволяет все-таки пользоваться прикладными программами, требующими вычислений с плавающей точкой. Для этого в регистре CR0 должно быть установлено сочетание флагов ЕМ = 1, МР = 0. Для эмуляции в IBM PC обычно устанавливают значение NE = 0. Тогда каждая инструкция FPU автоматически будет вызывать эмулятор генерацией запроса прерывания (а не исключения #NM, как было бы при NE = 1).


Эмуляция для блоков ММХ и ХММ не предусматривается — эти блоки предназначены для ускорения вычислений в приложениях реального времени, и выполнять их с крайне низкой скоростью эмуляции было бы просто бессмысленно. Если установлен флаг эмуляции ЕМ = 1, то любая инструкция ММХ вызовет исключение #UD.


  1. Математический сопроцессор x87


Математический сопроцессор предназначен для расширения вычислительных возможностей центрального процессора — выполнения арифметических операций, вычисления основных математических функции (тригонометрических, экспоненты, логарифма) и т. д. В разных поколениях процессоров он назывался по-разному — FPU (Floating Point Unit — блок чисел с плавающей точкой) или NPX (Numeric Processor eXtension — числовое расширение процессора).


Сопроцессор поддерживает семь типов данных: 16-, 32-, 64-битные целые числа; 32-, 64-, 80-битные числа с плавающей точкой и 18-разрядные числа в двоично-десятичном формате. Формат чисел с плавающей точкой соответствует стандартам IEEE 754 и 854. Применение сопроцессора повышает производительность вычислений в сотни раз. С программной точки зрения сопроцессор и процессор выглядят как единое целое. В современных (486+) процессорах FPU располагается на одном кристалле с центральным процессором. Для процессоров 386 и ниже сопроцессор был отдельной микросхемой, подключаемой к локальной нише основного процессора. В любом случае сопроцессор исполняет только свои специфические команды, а всю работу по декодированию инструкции и доставке данных осуществляет CPU. Сопроцессор может выполнять вычисления параллельно с центральным процессором, независимо от переключения задач в защищенном режиме. Как и основной процессор, сопроцессор может работать в реальном или защищенном режиме и переключать разрядность- 16 или 32. Переключение режимов влияет на формат отображения регистров сопроцессора в оперативной памяти, при этом формат используемых внутренних регистров не изменяется.


Форматы данных FPU


Сопроцессор оперирует данными в формате с плавающей точкой, который позволяет представлять существенно больше действительных чисел, чем целочисленное АЛУ центрального процессора. Арифметические операции (здесь под арифметическими понимаются операции, изменяющие значения операндов, а также операции сравнения) в FPU выполняются над 80-битными числами, преде га пленными во внутреннем формате расширенной точности (рис. 3). Формат позволяет представлять следующие категории чисел:

• нули (положительный и отрицательный) — оба значения эквивалентны;

• денормализованные конечные числа (положительные и отрицательные);

• нормализованные конечные числа (положительные и отрицательные);

• бесконечность (положительная и отрицательная).


Числа представляются в аффинном пространстве. Это означает, что меньше любого конечного числа, а больше любого конечного числа.

Рис. 3. Формат внутреннего представления чисел.


Бит Sign определяет знак числа: 0 — положительное, 1 — отрицательное число. Поле Exponent хранит смещенное значение двоичного порядка числа (biased exponent). Смещение позволяет все значения порядков допустимого диапазона чисел представлять положительным числом, при этом значению 000...000 соответствуют минимальные (по модулю) числа, значению 111...110 — максимальные допустимые числа, а значению 111...111 — бесконечно большие числа. Нуль может быть положительным или отрицательным, в зависимости от бита знака, при этом и мантисса, и порядок у него нулевые. Мантисса (Signficand) нормализованного числа, отличного от нуля, всегда имеет вид "1,ххх....ххх", то есть представляет величину, не меньшую единицы. У бесконечностей (тоже положительной и отрицательной) мантисса нулевая. Денормализованные числа имеют нулевой порядок (смещенное значение) и мантиссу вида "0,ххх...ххх" (отличную от нуля). Денормализованные числа — это слишком малые величины, которые представляются и обрабатываются с точностью меньшей, чем позволяет разрядность регистров сопроцессора.


Кроме вещественных чисел (конечных нормализованных и денормализованных, нулей и бесконечностей) регистры сопроцессора могут содержать не-числа NaN (Not a Number) четырех видов.

• -SNaN и +SNaN — порядок 111...111, мантисса 1,0ххх...ххх (ненулевая). Эти "сигнализирующие" не-числа (signaling NaN) вызывают исключения сопроцессора, если с ними пытаются выполнять арифметические действия.

• -QNaN и +QNaN — порядок 111...111, мантисса 1,1ххх...ххх (ненулевая). Эти "тихие" не-числа (quiet NaN) не вызывают исключений при арифметических операциях.


Внешние операнды могут быть представлены в одном из форматов, приведенных на рис. 2. Характеристики форматов чисел, поддерживаемых сопроцессором, приведены в таблице. При их загрузке в FPU и сохранении результатов преобразования форматов во внутренний и обратно выполняются автоматически. Во внешних представлениях вещественных чисел целая часть мантиссы всегда подразумевается равной единице. В расширенном формате целая часть задается явно (бит 63), она имеет нулевое значение только при представлении нулей и денормализованных чисел. Смещение порядка составляет 127 для одиночного, 1023 для двойного и 16 383 для расширенного вещественного форматов. Форматы вещественных чисел представляют только множество дискретных значений множества чисел, расположенных на непрерывной бесконечной числовой оси. Диапазон и плотность значений зависят от выбранного формата представления. Заметим, что не все десятичные дроби могут быть представлены точно в двоичном коде. Так, например, дробь 1/10 не имеет точного двоичного представления (аналогично тому, что 1/3 = 0,33333(3)).


Таблица. Форматы чисел, поддерживаемых сопроцессором

Тип

Длина, бит

Точность

Диапазон нормализованных значений

двоичная

десятичная

Двоичный

десятичный

Вещественные числа

Одиночные (single)

32

24

7

Двойные (double)

64

53

15-16

Рассширенные (extended)

80

64

19

Двоичные целые

Слова (word)

16

15

4

Короткие (short)

32

31

9

Длинные (long)

64

63

18

Упакованные двоично-десятичные

BCD

80

18


Сопроцессор контролирует числа, участвующие в арифметических операциях. При загрузке денормализованного операнда в регистр FPU и попытке выполнения арифметических инструкций хотя бы с одним денормализованным операндом сопроцессор фиксирует условие исключения #D. Денормализованные числа могут появляться при выполнении вычислений, в этом случае сопроцессор фиксирует факт исчезновения значащих разрядов и генерирует исключение #U. При попытке выполнения арифметических операций с нечислами, а также с недопустимыми значениями операндов (например, извлечение квадратного корня из отрицательного числа) вырабатывается исключение #I. При переполнении вырабатывается исключение #O, при попытке деления на нуль ненулевого операнда вырабатывается исключение #Z.


Если результат вычисления невозможно представить точно в выбранном формате, сопроцессор выполняет округление результата в сторону соседнего допустимого значения. Правила округления программируются. Вместо автоматического выполнения округления сопроцессор может вырабатывать исключение #Р.


  1. Технология MMX


Технология ММХ ориентирована на приложения мультимедиа, 2D/3D-графикy и коммуникации. Это расширение базовой архитектуры появилось только после выхода второго поколения процессоров Pentium. Основная идея ММХ заключается в одновременной обработке нескольких элементов данных за одну инструкцию — так называемая технология SIMD (Single Instruction — Multiple Data). Расширение ММХ использует новые типы упакованных 64-битных целочисленных данных:

• упакованные байты (Packed byte) — восемь байт;

• упакованные слова (Packed word) — четыре слова;

• упакованные двойные слова (Packed doubleword) — два двойных слова;

• учетверенное слово (Quadword) — одно слово.


Эти типы данных могут специальным образом обрабатываться в 64-битных регистрах ММХ0-ММХ7, представляющих собой младшие биты стека 80-битных регистров FPU. Каждая инструкция ММХ выполняет действие сразу над всем комплектом операндов (8, 4, 2 или 1), размещенных в адресуемых регистрах. Как и регистры FPU, эти регистры ММХ не могут использоваться для адресации памяти. Совпадение регистров ММХ и FPU накладывает ограничения на чередование кодов FPU и ММХ — забота об этом лежит на программисте приложений с ММХ.


Еще одна особенность технологии ММХ — поддержка арифметики с насыщением (saturating arithmetic). Ее отличие от обычной арифметики с циклическим переполнением (wraparound mode) заключается в том, что при возникновении переполнения в результате фиксируется максимально возможное значение для данного типа данных, а перенос игнорируется. В случае переполнения снизу в результате фиксируется минимально возможное значение. Граничные значения определяются типом (знаковый или беззнаковый) и разрядностью переменных. Такой режим вычислений удобен, например, для определения цветов.


В систему команд введено 57 дополнительных инструкций для одновременной обработки нескольких единиц данных. Одновременно обрабатываемое 64-битное слово может содержать как одну единицу обработки, так и 8 однобайтных, 4 двухбайтных или 2 четырехбайтных операнда. Новые инструкции включают следующие группы:

• арифметические (Arithmetic Instructions), куда входят сложение и вычитание в разных режимах, умножение и комбинация умножения и сложения;

• сравнение (Comparison Instructions) элементов данных на равенство или по величине;

• преобразование форматов (Conversion Instructions);

• логические инструкции (Logical Instructions) — И, И-НЕ, ИЛИ и исключающее ИЛИ, выполняемые над 64-битными операндами;

• сдвиги (Shift Instructions) — логические и арифметические;

• пересылки данных (Data Transfer Instructions) между регистрами ММХ и целочисленными регистрами или памятью;

• очистка ММХ (Empty ММХ State) — установка признаков пустых регистров в слове тегов.


Инструкции ММХ не влияют на флаги условий в слове состояния FPU.


Регистры ММХ в отличие от регистров FPU адресуются физически, а не относительно значения указателя стека ТОР. Более того, любая инструкция ММХ обнуляет поле ТОР регистра состояния FPU. В слове тегов свободному регистру соответствует комбинация 11, остальные комбинации указывают только на занятость регистра. После каждой операции ММХ биты тегов регистра назначения обнуляются. Неиспользуемые в ММХ биты [79:64] регистров FPU заполняются единицами, так что ошибочная обработка данных ММХ инструкцией FPU приведет к исключению.


Инструкции ММХ не порождают новых исключений. Исключения при выполнении инструкций ММХ могут возникать только в случае нарушения границ в обращениях к памяти (как при обмене данными, так и при выборке инструкции). Однако если предшествующая инструкция FPU породила условие исключения, то оно произойдет при выполнении инструкции ММХ. После его обработки инструкция ММХ может исполнена.


С инструкциями ММХ могут применяться префиксы замены сегмента и изменения разрядности адреса (влияют на инструкции, обращающиеся к памяти). Использование префиксов изменения разрядности операнда и повторов зарезервировано (может привести к непредсказуемым результатам). Префикс Lock вызывает исключение #UD.


Инструкции ММХ доступны из любого режима процессора. При переключении задач необходимо следить за корректностью сохранения контекста, как и при работе с FPU.


Любая инструкция ММХ вызывает обнуление полей тегов всех регистров FPU/ММХ, что для FPU означает наличие действительных данных во всех регистрах. Последующая инструкция для FPU над "неправильными" данными может привести к непредсказуемому результату, поскольку "входной контроль" данных осуществляется по состоянию тегов. Чтобы застраховаться от подобных неприятностей, после инструкций ММХ и перед инструкциями FPU в программный код вводят инструкцию EMMS, которая устанавливает в слове тегов значение FFFFh (все регистры пустые).


Различие в способе адресации регистров (относительная для FPU и явная прямая в ММХ), обнуление тегов инструкциями ММХ и некоторые другие нюансы не позволяют чередовать инструкции FPU и ММХ. Блок FPU/MMX

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту

Похожие рефераты: