с мультимедийными данными допускают простейшие
Многие алгоритмы работы с мультимедийными данными допускают простейшие элементы распараллеливания, когда одна операция может выполняться параллельно над несколькими числами. Такой подход называется SIMD - single-instruction multiple-data (одна инструкция - множество данных). Впервые эта технология была реализована в поколении P55 (микропроцессор Pentium MMX).
MMX (Multi-Media eXtension) - это SIMD-расширение для потоковой обработки целочисленных данных, реализованное на основе блока FPU (с использованием регистров FPU). Набор инструкций MMX оперирует 64-битными регистрами MM0-MM7, являющимися псевдонимами для младшей 64-битной части регистров FPU R0-R7), так что одновременное выполнение команд MMX и вещественной арифметики невозможно. Инструкции MMX оперируют 64-битными типами данных:
- упакованные байты (8 х 8 бит);
- упакованные слова (4 х 16 бит);
- упакованные двойные слова (2 х 32 бит);
- четверное слово (1 х 64 бит).
Таким образом, одна инструкция MMX может выполнить арифметическую или логическую операцию над "пакетами" целых чисел, упакованных в регистрах MMX. Например, инструкция PADDSB складывает 8 байт одного "пакета" с соответствующими восьмью байтами другого пакета, фактически выполняя сложение восьми пар чисел одной инструкцией.
Первый процессор P6 (Pentium Pro) был разработан до выхода Pentium MMX, поэтому в нем отсутствует эта возможность, однако в последующих моделях P6 данная технология закрепилась.
В процессоре Pentium II соединены лучшие свойства процессоров Intel: производительность процессора Pentium Pro и возможности технологии MMX. Это сочетание обеспечивает существенное увеличение производительности процессоров Pentium II по сравнению с предыдущими процессорами IA-32-архитектуры.
Процессор содержит раздельные внутренние блоки кэш-памяти команд и данных по 16 Кбайт и 512 Кбайт общей неблокирующей кэш-памяти второго уровня.
Впервые реализована высокопроизводительная архитектура двойной независимой шины (системная шина и шина кэш), обеспечивающая повышение пропускной способности и производительности, а также масштабируемость при использовании будущих технологий.
Развитием идеи SIMD для вещественных чисел стала технология SSE (Streamed SIMD Extensions), впервые представленная в процессорах Pentium III. Блок SSE дополняет технологию MMX восемью 128-битными регистрами XMM0-XMM7 и 32-битным регистром управления и состояния MXCSR. Регистры XMM0-XMM7 независимы, т.е., в отличие от регистров MM0-MM7, не отображаются ни на какие другие регистры процессора. Инструкции SSE оперируют 128-битным типом данных - "упакованные одинарной точности" (4 х 32 бит), содержащим 4 вещественных числа в формате IEEE-754 single precision. Инструкции SSE могут выполнять операции над "пакетами" вещественных чисел, т. е. одна инструкция выполняет операцию над пакетом из четырех пар вещественных чисел (рис. 6.1).
Рис. 6.1. Схема работы инструкции ADDPS (сложение "пакетов")
В МП Pentium 4 была представлена технология SSE2, дополняющая SSE новыми типами данных и новыми инструкциями. Инструкции SSE2 также оперируют 128-битными регистрами XMM0-XMM7, но при этом добавлены пять новых типов данных:
- упакованные двойной точности (2 х 64 бит IEEE-754 double precision);
- упакованные байты (16 x 8 бит);
- упакованные слова (8 х 16 бит);
- упакованные двойные слова (4 х 32 бит);
- упакованные четверные слова (2 х 64 бит).
Все команды MMX, SSE и SSE2 доступны в любом режиме работы процессора: реальном, защищенном, виртуальном.