Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Расширенные форматы данных ⇐ ПредыдущаяСтр 2 из 2
1. MMX (Matrix Math eXtension, Multi-Media eXtension ). В МП присутствует набор команд, позволяющий использовать регистры блока FPU для параллельной обработки пакета целочисленных данных в соответствии с технологией SIMD – " single instruction, multiple data - одна инструкция, несколько операндов". MMX-команды обеспечивают параллельную обработку нескольких байтов, слов или двойных слов. Команды технологии MMX работают со следующими типами данных, размещенными в 64 младших разрядах 80-разрядных регистров стека FPU: · восемь упакованных байтов (Packed Byte), · четыре упакованных 16-разрядных слова (Packed Word), · два упакованных двойных 32-разрядных слова (Packed Doubleword), · одно 64-разрядное слово (Quadword). К регистрам MM0,..., MM7 обеспечивается непосредственный доступ с помощью специальных ММХ-команд, при выполнении которых: · все биты порядка и знаковый бит в соответствующем регистре с плавающей запятой заполняются единицами (это биты 64-79), · все разряды слова состояния регистров с плавающей запятой заполняются нулями. Примеры команд fmul A и pmulhw MM3, MM4 показаны на рис.7.
Рис.7 Примеры выполнения команд Основа технологии MMX - расширение набора команд процессора с учетом особенностей мультимедиа-программ. Обычно в таких программах: · данные имеют небольшое число разрядов; · однотипные операции выполняются над многими данными; · поток команд редко зависит от данных; · требуется высокая производительность вычислений.
Команды ММХ объединены в следующие группы: · арифметические (Arithmetic Instructions), · сравнение (Comparison Instructions), · преобразование форматов (Conversion Instructions), · логические (Logical Instructions), · сдвиг (Shift Instructions) – логический и арифметический, · пересылка данных (Data Transfer Instructions) – между регистрами ММХ и целочисленными регистрами или памятью, · очистка регистров ММХ (Empty MMX State) – установка признаков пустого регистра в слове тегов (комбинация 11). Команды ММХ не влияют на признаки условий в слове состояния FPU. В отличие от стековых регистров FPU регистры ММХ адресуются непосредственно, а не относительно. Любая команда ММХ обнуляет поле указания вершины стека в регистре состояния сопроцессора. Неиспользуемые в регистрах ММХ биты (79: 64) заполняются единицами. Поэтому ошибочная обработка данных ММХ командой FPU приведет к исключению. MMX-команды не генерируют исключений, кроме тех, которые связаны с доступом к памяти (нарушение границ при обращениях к памяти). В результате выполнения этих команд могут транслироваться прерывания арифметики с плавающей запятой, если до выполнения MMX-команды уже было сгенерировано исключение плавающей арифметики. Команды MMX и FPU несовместны и их частое чередование с перенастройкой конвейера на обработку (например, сброс регистров ММХ после команд ММХ перед командами FPU) существенно снижает быстродействие вычислений. Регистры ММХ не могут использоваться для адресации памяти. В технологии ММХ применяется обработка переполнения согласно арифметике с насыщением (saturating arithmetic). В отличие от обычной арифметики с циклическим переполнением (wraparound mode) фиксируется максимально (или минимально) возможное значение для текущего типа данных, а перенос игнорируется. В процессорах архитектуры Intel сохранение состояния задачи с MMX-командами аналогично сохранению состояния задачи, использующей арифметику с плавающей запятой. Поэтому механизм переключения задач многозадачных операционных систем совместим с задачами, использующими MMX-команды. Наличие поддержки ММХ определяется по биту 23 регистра EDX после вызова инструкции CPUID.
2. SSE (Streaming SIMD Extension). Используется вSIMD-командах для работы с 32-разрядными данными одинарной точности с плавающей запятой (SPFP-данными - single precision floating point). Для хранения данных используются восемь 128-разрядных регистров XMM (XMM0,..., XMM7), которые дополнены регистром состояния/управления MXCSR. XMM-регистры являются новыми компонентами процессора, а SIMD-команды используют новый тип данных - 128-разрядное значение, содержащее четыре последовательно расположенных (" упакованных") 32-разрядных числа с плавающей запятой. Возможна также параллельная обработка двух чисел в формате длинного с плавающей запятой.
Рис.8 Упакованные SPFP-данные Каждое 32-разрядное число с плавающей запятой имеет 1 знаковый бит, 8 битов характеристики и 23 бита мантиссы, что соответствует стандарту IEEE-754 (SPFP-числа). Первоначально команды имели название KNI (Kathmai New Instruction), т.к. были ориентированы на применение в процессорах Pentium-III, имевших также название Kathmai. SIMD-команды поддерживают два типа операций над упакованными данными с плавающей запятой - параллельные и скалярные. Параллельные операции, как правило, действуют одновременно на все четыре 32-разрядных элемента данных в каждом из 128-разрядных операндов. В именах команд, выполняющих параллельные операции, присутствует суффикс ps. Например, команда addps складывает 4 пары элементов данных и записывает полученные 4 суммы в соответствующие элементы первого операнда. Скалярные операции действуют на младшие (занимающие разряды 0-31) элементы данных двух операндов. Остальные три элемента данных в выходном операнде не изменяются (исключение составляет команда скалярного копирования movss). В имени команд, выполняющих скалярные операции, присутствует суффикс ss (например, команда addss). Большинство команд имеют два операнда. Данные, содержащиеся в первом операнде, могут использоваться командой, а после ее выполнения, как правило, замещаются результатами. Данные во втором операнде используются в команде и после ее выполнения не изменяются. Далее в тексте входным называется второй операнд, а выходным - первый.
SIMD-команды обработки целочисленных данных (аналогично командам технологии MMX): · Выполняют SIMD-операции над несколькими целочисленными элементами данных, упакованными в 64-разрядные группы (байты, слова, длинные слова, 64-разрядные слова), · Загружают и хранят упакованные данные в 64-разрядных MMX-регистрах (отдельно от 128-разрядных XMM-регистров данных с плавающей запятой). SIMD-команды содержат префикс и суффиксы, указывающие на характер выполняемой операции и тип используемых данных. Префикс p указывает на то, что команда выполняет параллельные операции над несколькими элементами данных. Суффиксы b, w, d и q указывают на используемый тип данных. Суффиксы u или s указывают на использование данных со знаком или без знака, соответственно. Так, например, команда умножения pmulhuw работает с данными типа " упакованные 16-разрядные слова без знака". Команды управления кэшированием обеспечивают: · Управление кэшированием данных с целью минимизации " засорения" кэш-памяти и сокращения числа обращений на запись в основную память; · Упреждающее кэширование данных с целью организации параллельной работы конвейера. Работа этих команд базируется на следующей классификации данных: · Данные со слабой локализацией – этоданные, к которым программа обращается нерегулярно и через значительные интервалы времени. Примером может являться набор данных, описывающих трехмерный объект, если обращение к каждой вершине этого набора происходит только один раз при генерации очередного кадра. · Данные с временной локализацией хранятся в ячейках памяти, к которым МП обращается большое число раз за короткий промежуток времени. Пример - циклы. · Данные с пространственной локализацией имеют место, когда программа последовательно обращается к ячейкам памяти с близкими друг к другу адресами. Например, при обработке массивов, причем каждое следующее обращение наиболее вероятно к элементу, смежному с предшествующим. Команды сохранения и восстановления компонент состояния МП ориентированы на работу с регистрами XMM и регистром состояния и управления MXCSR.
Рис.9 Регистр MXCSR Состояние процессора архитектуры Intel - это состояние всех его регистров, доступных программе. Сохранение и восстановление состояния процессора необходимо при переключении контекста задач. Назначение разрядов: 0-5 (поле обнаружения исключений) - содержат 6 флагов-признаков арифметических исключений. При наличии исключения соответствующий флаг установлен в 1, в противном случае - нет. Регистр состояния и управления MXCSR служит для: 1. Установки флагов обнаружения арифметических исключений. Под арифметическими исключениями понимаются генерируемые МП при вычислениях с использованием SPFP-команд: недействительная операция (I), денормализованный операнд (D), деление на нуль (Z), переполнение (O), исчезновение порядка (U), неточный результат (P). Обнаружение и обработка каждого из этих исключений управляется флагами состояния (биты 0 - 5) и битовой маской (биты 7 - 12) в регистре MXCSR. 2. Установки флагов маскирования арифметических исключений. Арифметическое исключение обрабатывается с учетом маскирования. Исключение считается маскированным, если соответствующий бит поля обработки исключений в регистре MXCSR установлен в 1, и немаскированным - в противном случае. Маскированные исключения обрабатываются процессором, который формирует приемлемый результат (в соответствии с процедурой, установленной по умолчанию) и продолжает выполнение программы. Немаскированные исключения инициируют программный обработчик исключений. 3. Установки режима округления. Поле RC (биты 13 и 14) регистра MXCSR управляет режимами округления результатов при выполнении SIMD-команд над данными с плавающей запятой. Возможны четыре режима округления: - 00 – Округление до ближайшего (по умолчанию), - 01 – Округление до меньшего или равного, - 10 – Округление до большего или равного, - 11 – Округление в сторону нуля. 4. Установки режима flush-to-zero. Если произошло исчезновение порядка (underflow), а поле flush-to-zero (FZ, бит 15) регистра MXCSR установлено в 1, то МП возвращает нулевое значение в качестве результата, присваивая ему знак истинного результата и устанавливает в 1 биты 4 и 5 регистра MXCSR (флаги обнаружения исключений исчезновения порядка и неточного результата). Указанные действия выполняются при маскировании исключения underflow (бит 11 регистра MXCSR установлен в 1). При таком режиме увеличивается скорость работы программ, в которых часто происходит исчезновение порядка результата, но при одновременном снижении точности вычислений. Возможны случаи, когда результаты вычислений с плавающей запятой х87 могут отличаться от результатов вычислений, использующих SIMD SPFP-команды.
|