SIMD-расширения архитектуры IA-32
Многие алгоритмы работы с мультимедийными данными допускают простейшие элементы распараллеливания, когда одна операция может выполняться параллельно над несколькими числами. Такой подход называется 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-битными типами данных:
Таким образом, одна инструкция 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).
В МП Pentium 4 была представлена технология SSE2, дополняющая SSE новыми типами данных и новыми инструкциями. Инструкции SSE2 также оперируют 128-битными регистрами XMM0-XMM7, но при этом добавлены пять новых типов данных:
Все команды MMX, SSE и SSE2 доступны в любом режиме работы процессора: реальном, защищенном, виртуальном. Лекция 6: Анализ развития процессоров фирмы Intel: семейство Pentium
|