Материал из РУВИКИ — свободной энциклопедии
У этого термина существуют и другие значения, см. MMX (значения).
MMX (Multimedia Extensions — мультимедийные расширения) — коммерческое название дополнительного SIMD-набора инструкций, разработанного компанией Intel и впервые представленного в 1997 году одновременно с линией процессоров Pentium MMX. Набор инструкций был предназначен для ускорения процессов кодирования/декодирования потоковых аудио- и видеоданных. Является развитием технологий, предложенных в микропроцессоре i860[1]. Разработан в лаборатории Intel в Хайфе, Израиль, в первой половине 1990-х[2][3].
Сейчас набор инструкций MMX, представленный в 1997 году, является откровенно устаревшим и уже давно вытеснен различными версиями SSE и AVX. Тем не менее, в средствах разработки он всё ещё формально поддерживается; правда, в силу редкости использования, реализация страдает от многочисленных дефектов. Поэтому есть предложения удалить его из популярного набора компиляторов LLVM[4].
Расширение MMX включает в себя восемь 64-битных регистров общего пользования MM0—MM7. Для совместимости со способами переключения контекста процессора в существующих ОС Intel была вынуждена объединить в программной модели процессора восемь регистров MMX с мантиссами восьми регистров FPU. Аппаратно это могут быть разные устройства, но с точки зрения программиста — это одни и те же регистры. Таким образом, нельзя одновременно пользоваться командами математического сопроцессора и MMX.
Команды технологии MMX обрабатывают целочисленные данные, упакованные в группы (векторы) общей длиной 64 бита, либо одиночные 64-битные слова. Такие данные могут находиться в памяти или в восьми MMX-регистрах.
Команды технологии MMX работают со следующими типами данных:
- упакованные байты (восемь байтов в одном 64-разрядном регистре) (англ. packed byte);
- упакованные слова (четыре 16-разрядных слова в 64-разрядном регистре) (англ. packed word);
- упакованные двойные слова (два 32-разрядных слова в 64-разрядном регистре) (англ. packed doubleword);
- 64-разрядные слова (англ. quadword).
MMX-команды имеют следующий синтаксис:
instruction [dest, src]
Здесь instruction — имя команды, dest обозначает выходной операнд, src — входной операнд.
Систему команд образуют 57 инструкций, позволяющих параллельно обрабатывать несколько элементов данных[5].
Большинство команд имеет суффикс, который определяет тип данных и используемую арифметику:
- US (unsigned saturation) — арифметика с насыщением, данные без знака.
- S или SS (signed saturation) — арифметика с насыщением, данные со знаком. Если в суффиксе нет ни S, ни SS, используется циклическая арифметика (wraparound).
- B, W, D, Q указывают тип данных. Если в суффиксе есть две из этих букв, первая соответствует входному операнду, а вторая — выходному.
Можно выделить следующие группы инструкций[5]:
- пересылки данных, позволяющих перемещать данные между регистрами MMX и целочисленными регистрами процессора или памятью;
- упаковки и распаковки данных, позволяющих преобразовывать элементы векторов в элементы с меньшей разрядностью или попарно объединять элементы с образованием элементов большей разрядности;
- арифметических, например, сложение и вычитание в различных режимах, умножение, а также операция умножения 4 пар операндов с последующим сложением первого произведения со вторым, а третьего — с четвёртым;
- сравнения векторов с записью результата сравнения в виде битовой маски;
- логических — И, инверсия прямой импликации, ИЛИ и исключающее ИЛИ;
- логических и арифметических сдвигов;
- управления состоянием — установка признаков пустых регистров слова тегов FPU.
Выполнение инструкций MMX не приводит к изменению флагов условий слова состояния FPU, за исключением поля TOP.
К регистрам MMX можно обращаться непосредственно по именам, в отличие от регистров FPU, которые организованы в стек с вершиной, определяемой полем TOP слова состояния FPU. При этом поле TOP сбрасывается после выполнения любой инструкции MMX.
Выполнение инструкций MMX возможно в любом режиме процессора[5].
Семейство процессоров Intel XScale, начиная с модели PXA270, содержит дополнение к системе команд ARM, называемое iwMMXt, похожее на расширение IA-32 MMX.
- ↑ Millind Mittal, Alex Peleg, Uri Weiser. MMX Technology Architecture Overview // Intel Technology Journal. — 1997. — Т. 1, № 3.
- ↑ Intel in Haifa, Israel Архивная копия от 19 июля 2013 на Wayback Machine // intel.com
- ↑ Intel Israel Fab Tour — первое официальное международное пресс-мероприятие Intel в Израиле Архивная копия от 11 ноября 2013 на Wayback Machine // ixbt.com
- ↑ Компиляторы могут остаться без поддержки Intel MMX Архивная копия от 3 сентября 2020 на Wayback Machine // 2.09.2020
- ↑ 1 2 3 Михаил Гук. Процессоры Intel: от 8086 до Pentium II. — СПб.: Питер, 1997. — С. 96. — 224 с. — ISBN 5-88782-398-4.
- Бердышев Евгений. Технология MMX. Новые возможности процессоров P5 и P6. — М.: ДИАЛОГ-МИФИ, 1998. — 234 с. — ISBN 5-86404-105-x.
- Технология MMX — новый этап развития процессоров Intel (рус.)
- IA Software Developer’s Manual, Vol 1 (англ.), см. раздел 8 о программировании MMX
- IA Optimization manual (англ.), Руководство
- Codenet.ru (рус.), статья о программировании ММХ, codenet.ru
Процессор не поддерживает MMX
Однако такие исключения встречаются редко и в большинстве случав программа, взамен отсутствующих SIMD, будет использовать универсальные (genegic) х86 инструкции. При этом мы не получим никакого повышения быстродействия, но и снижения производительности (по сравнению с обычным кодом) также не будет.
Поскольку каждый производитель процессоров по-своему улучшал архитекутуру, развитие микропроцессоров сопровождалось появлением нескольких вариантов SIMD расширений. Основные из них мы рассмотрим ниже.
MMX-расширение появилось в Pentium MMX (P55, январь 1997) и включало в себя 57 новых команд, предназначенных для обработки звуковых и видеосигналов. Позднее их поддержка появилась в K6 (Little Foot) от AMD и в 6х86MX от Cyrix.
MMX-расширение микропроцессора Pentium предназначено для поддержки приложений, ориентированных на работу с большими массивами данных целого типа, над которыми выполняются одинаковые операции. С данными такого типа обычно работают мультимедийные, графические, коммуникационные программы. По этой причине данное расширение архитектуры микропроцессоров Intel и названо
MultiMedia eXtensions (MMX), что переводится как мультимедиа расширения.
Основа программной компоненты – система команд MMX-расширения (те самые 57 новых команд) и четыре новых типа данных. MMX-команды являются естественным дополнением основной системы команд микропроцессора. Основным принципом их работы является одновременная обработка нескольких единиц однотипных данных одной командой. Основа аппаратной компоненты – 8 MMX регистров, каждый размером в 64 бит = 8 байт. MMX работает только с целыми числами; поддерживаются данные размером в 1, 2, 4 или 8 байт. То есть, один MMX регистр может содержать 8, 4, 2 или 1 операнд соответственно.
Формат регистра ММХ
На самом деле эти регистры не являются новыми, а MMX-расширение использует регистры сопроцессора (FPU). Как известно, регистры сопроцессора стека имеют размерность 80 бит, что касается MMX регистров, то их разрядность только 64 бита. Поэтому, когда регистры сопроцессора играют роль MMX-регистров, то доступными являются лишь их младшие 64 бита. К тому же, при работе стека сопроцессора в режиме MMX-расширения, он рассматривается не как стек, а как обычный регистровый массив с произвольным доступом. Таким образом, можно сказать, что расширения MMX реализованы в виде дополнительного pежима, в который процессор может переключаться из обычного pежима работы. Регистровый стек сопроцессора не может одновременно использоваться и по своему прямому назначению и как MMX-расширение, поэтому необходимо заботиться о его разделении и корректной работе с ним. Такое совмещение может снизить эффективность работы в случае попеременного использования обычных вычислений с плавающей точкой и работы в режиме MMX.
Данные, содержащиеся в MMX-регистрах, можно покомпонентно складывать, умножать, вычитать, выполнять разнообразные специфические, необходимые для мультимедиа приложений, операции, вроде сложения без переполнения, вычисления среднего арифметического и производить логические операции с битами (побитовый and, or, xor). Делить, правда, нельзя, есть ещё ограничения. Но многие операции можно делать на порядок быстрее, даже больше. Однако, применение MMX в особенности требует специальной ручной оптимизации, никакой компилятор тут существенно не поможет. Под MMX, например, оптимизируются разнообразные кодеки аудио файлов, алгоритмы работы которых хорошо сочетаются с MMX. Причём, не вся программа целиком, а небольшая часть, выполняющая основную работу, и это обстоятельство упрощает оптимизацию.
SSE
Данное расширение появилось в Pentium III (ядро Katmai, сентябрь 1999) и насчитывало 70 новых команд. Позднее в Athlon XP (начиная с Palomino) его стали поддерживать и процессоры AMD. Аббревиатура SSE расшифровывается как
Streaming SIMD Extensions (потоковые SIMD расширения).
SSE интересно прежде всего тем, что оперирует с данными вещественного типа, которые используются в геометрических расчётах, то есть, приложениях трёхмерной графики, компьютерных играх, редакторах вроде 3DStudioMax, и многих других. С тех пор как в компьютерных играх вроде Quake текстурирование треугольников стало производиться при помощи видеоускорителей, большая надобность в целочисленных вычислениях отпала. На первое место вышла скорость операций с плавающей точкой, вроде перемножения вещественного вектора на вещественную матрицу.
При внедрении SSE процессор получил в дополнение к стандартным регистрам архитектуры x87 8 новых больших регистров размером по 128 бит, в каждом из которых содержится 4 32-битных вещественных числа. С четвёрками операндов можно покомпонентно производить следующие операции: сложить две четвёрки чисел, вычесть, перемножить, разделить. Вычислить одновременно 4 (обратных) квадратных корня, точно или приближённо. Ещё можно тасовать содержимое регистров, перекладывать данные из одних частей регистра в другие и производить некоторые другие аналогичные операции. Однако перемещение данных происходит не быстрее их сложения, так что эффективное использование SSE возможно только на подготовленных правильно упакованных данных.
Если посчитать, что SSE-операция заменяет 4 аналогичных обыкновенных, то при оптимизации можно получить прирост производительности в 4 раза. Если быть более точным, то даже несколько больше, за счёт использования новых больших регистров. Однако, далеко не все вычисления можно эффективно оптимизировать под SSE. Как пример «хорошей» задачи следует привести умножение четырёхмерной матрицы на четырёхмерный вектор. Ускорение четырёхкратное без особых затрат.
В первую очередь использование SSE позволяет современным процессорам при выполнении трансформации вершин треугольников, составляющих трёхмерную сцену, успешно соревноваться с видеоускорителями. Другое дело, что у процессора много других задач, и лучше его по возможности разгрузить, чтобы он работал параллельно с видеоускорителем, и каждый выполнял свою задачу.
SSE2
Следующее расширение, являющееся логическим продолжением MMX и SSE появилось в Pentium 4 (начиная с Willamette). В Athlon 64 появилось начиная с Clawhammer.
В данное расширение включены 144 команды SSE2, ориентированные, в первую очередь, на работу с потоковыми данными. Подобно Pentium III, они также оперируют со 128-битными регистрами, но уже не только с четверками чисел одинарной точности, но и с любыми другими типами данных, которые умещаются в 128 бит. Это пары вещественных чисел двойной точности, шестнадцать однобайтовых целых, восьмерки двухбайтовых целых, пары восьмибайтовых целых etc. В результате получился некий симбиоз MMX и SSE.
Теперь те же 8 больших 128-битных регистров уже можно интерпретировать как содержащие не четыре 32-битных вещественных числа, а два 64-битных вещественных числа повышенной точности. Числа с повышенной точностью используются в тех случаях, когда вычисления с обычной точностью приводят к большим погрешностям. Все операции перенеслись с SSE, только работают не с четвёркой пар операндов, а с двойкой пар операндов.
В SSE2 регистры по сравнению с MMX удвоились, то есть, там стало помещаться не, например, 8 чисел, а 16. Поскольку скорость выполнения инструкций не изменилась, при оптимизации под SSE2 программа запросто получала двукратный прирост производительности. Надо отметить ещё следующее обстоятельство. Если программа уже была оптимизирована под MMX, то оптимизация под SSE2 даётся сравнительно легко в силу сходности системы команд.
SSE3
Следующий набор появился в Pentium 4 начиная с Prescott и Athlon 64 начиная с Venice. Это расширение, имевшее поначалу имело рабочее название
Prescott New Instruction, но получившее в итоге не совсем верное с технической точки зрения название SSE3, призвано облегчить оптимизацию программ под SSE и SSE2. Причём, в первую очередь, сделать более легкой полностью автоматическую оптимизацию программ средствами компилятора. То есть, для оптимизации необходимо будет просто перекомпилировать программу.
Некорректность названия SSE3 объясняется тем, что в отличие от других SIMD инструкций, где операции (например сложение) выполняются вертикально, здесь появилась возможность горизонтального выполнения операций.
Вертикальное сложение
Горизонтальное сложение
Таким образом в SSE3 появились удобные команды горизонтального последовательного сложения и вычитания операндов, а также другие разнообразные вспомогательные команды, облегчающие работу с данными.
SSE4 *
Данный набор появился в новейших процессорах Intel Core 2. Конкретная информация по этим инструкциям пока отсутствует.
Кстати стоит отметить, что в новых интеловских процессорах появилась технология Intel Advanced Digital Media Boost, суть которой в ускорении выполнения SIMD инструкций. Если раньше каждая инструкция выполнялась за два такта (один такт для обработки старших 64 бит, а второй такт для младших), то теперь выполнение этой инструкции занимает один такт. Налицо двукратное ускорение, что должно сказываться на работе программ, оптимизированных под этот набор инструкций.
*Обновлено: информация о наборе инструкций SSE4 оказалась преждевременной, на самом деле SSE4 появится в процессорах поколения Penryn, которые предположительно должны появиться в четвертом квартале 2007 года.
3DNow!
Различают три поколения этого расширения инструкций: 3DNow!, Enhanced 3DNow! и 3DNow! Professional, однако очень часто их все называют просто 3DNow!
Набор инструкций 3DNow! появился в AMD K6-2 (Chomper). Данный набор, состоящий из 21 команды, был оптимизирован для еще более узкой области, нежели «универсально-мультимедийный» Intel MMX, а именно: для наиболее ресурсоемких расчетов, связанных с 3D-графикой. Даже в самом названии этого набора (3DNow!) отразилась область его применения. Это расширение во многом сходно с SSE, но так же имеет и значительные отличия. Регистров так же 8, но они размером не 128 бит, а 64. Соответственно, в них помещается не 4 числа, а только 2. Имеется аналогичный SSE набор арифметических операций с регистрами. Сложить-умножить-разделить две пары операндов и т.п. Есть и операции нахождения (обратного) квадратного корня, точные и более быстрые приближённые. Однако, есть ещё одно важное отличие расширения 3DNow! Можно складывать между собой содержимое одного регистра. То есть, так же как и в SSE3, производить не только вертикальные операции, но и горизонтальные.
Другое важное обстоятельство, говорящее в пользу 3DNow!, это возможность достаточно эффективной автоматической оптимизации средствами компилятора. SSE слишком громоздко — размеры регистров большие — для автоматической организации данных. На коде, наполненном вычислениями с плавающей точкой, можно было бы бесплатно получить примерно полуторный прирост производительности.
В дальнейшем изменения блока 3DNow! произошли в К7. Он, как и раньше, работал с 64-битными регистрами, в которых находились пары вещественных чисел одинарной точности, зато его набор команд расширился еще на 24 инструкции (Enhanced 3DNow!). Последнее расширение этого набора до 3DNow! Professional появилось в ядре Thoroughbred.
На развитие набора 3DNow! негативно повлияло то, что у AMD первое время отсутствовал оптимизирующий компилятор, к тому же разработчики программ не торопились оптимизировать свои программы под эти инструкции.
Оценка прироста производительности.
Для того, чтобы определить, какой прирост быстродействия дают SIMD-инструкции было решено провести тестирование. Мы должны сравнить быстродействие программы в двух режимах (или двух программ): с оптимизацией под SIMD-инструкции и без нее. Это возможно в двух случаях: при использовании двух версий одной и той же программы (одна версия оптимизирована, а другая нет) или при наличии в программе функции отключения оптимизации. Однако здесь я столкнулся с проблемой – программ, имеющих такую фичу крайне мало
. В случае с различными версиями одной программы, просматривая Changelog было обнаружено, что практически всегда наряду с включением поддержки SIMD-инструкций, в новой версии появлялись какие-либо дополнительные оптимизации. В таком случае сравнение программ разных версий представляется некорректным с точки зрения поставленной цели.
После продолжительного поиска необходимые бенчмарки были найдены. Все они имеют возможность включать/отключать оптимизацию под определнные виды инструкций. Итак, тесты условно были поделены на четыре группы:
1.Видео: кодек XviD 1.1.0, MSU Deblocking Filter v2.2 (фильтр для VirtualDub)
2.Аудио: Lame 3.97 b2.
3.Синтетика: Sandra 2007, CPU RightMark 2003B.
4.Игры: Doom 3 ,Quake 4.
Тестовая конфигурация:
Материнская плата: Gigabyte GA-8I945P-G, BIOS v.F10
Процессор: Intel Pentium 4 630@3.600 MHz
Система охлаждения: TT Big Typhoon
Оперативная память: 512 Mb DDR2–667@638 Samsung Original (5-5-4-14), 512 Mb DDR2–667@638 Hynix (5-5-4-14)
Видеокарта: PCI-E Palit GeForce 6600GT@585/551 MHz
Дисковая подсистема: 160Gb SATA-II SAMSUNG HD160JJ, 40Gb Ultra-ATA/100 Seagate Barracuda ST340014A
Software: Windows XP SP2, ForceWare 91.28
Видео
XviD 1.1.0
MSU Deblocking Filter v2.2
Кодеком Xvid кодировался 160 MB файл из формата mpeg2. Перед фильтром MSU Deblocking стояла задача обработки 80 MB файла без последующего сжатия. Оба теста проводились в VirtualDub 1.6.15. Измерялось время выполнения в секундах. Как видно из результатов, использование оптимизации дает более чем двукратный прирост производительности
. Особенно впечатляет ускорение c MMX и SSE. Малый прирост у SSE2 можно списать под плохую оптимизацию кодека.
Аудио
Lame 3.97 b2
Данный аудиокодек хоть и не обладает графическим интерфейсом, но имеет большое число настраиваемых параметров через командную строку. Для отключения оптимизации используется флаг —noasm xxx (где xxx – отключаемый набор инструкций). В формат mp3 преобразовывался 400 MB wav файл. Прирост не такой большой, как в случае с видео, но все же ускорение в 1,5 раза можно назвать успехом. Особенно сильна ”заточка” под MMX, что не удивительно ведь данное расширение создавалось специально для мультимедиа.
Синтетические тесты
Sandra 2007, Whetstone
Sandra 2007, Dhrystone
CPU RightMark 2003B, Math
CPU RightMark 2003B, Rendering
C Сандрой все понятно: при прогоне арифметического теста, прирост в тесте с FPU объясняется увеличением объема обрабатываемых данных (за счет увеличенного размера SIMD-регистров), а его отсутствие в тесте АЛУ тем, что SSE2 и SSE3 предназначены для операций с плавающей запятой.
Тест CPU RightMark достаточно редко встречается в обзорах, и я не удивлюсь если о нем слышали немногие (я сам только недавно его ”выловил”). Тест моделирует поведение притягивающихся и отталкивающих шаров в пространстве. Сам он представляет собой, по сути, два теста, объединенных в один. Модуль решателя (solver) рассчитывает физику взаимодействия тел, а модуль рендеринга (render) отображает это взаимодействие на экране. Нагрузку можно изменять и на модуль решателя (увеличивая количество рассчитываемых объектов), и на модуль рендеринга (изменяя количество источников света и качество текстур). В обоих модулях можно настраивать то, какие инструкции будут использованы при решении задачи. Тест больше оптимизирован под SSE/SSE3, поскольку требуется рассчитывать координаты объектов и силы их взаимодействия.
Игры
Doom3, Low Quality
Doom 3, Ultra Quality 2xAA, 4xAF
Quake 4, Low Quality
Quake 4, Ultra Quality 2xAA, 4xAF
Из игр только последние версии Doom и Quake позволяют отключать оптимизацию под SIMD-инструкции. Делается это в консольной командой com_ForceGenericSimd. Тесты проводились при разрешении 1024*768, при минимальном и максимальном (с 2xAA и 4xAF) качестве. При этом настройки антиалиасинга и анизотропной фильтрации принудительно выставлялись в настройках драйвера видеокарты. Для тестирования Doom 3 использовалось стандартное demo1, для Q4 была записана демка на уровне Air Defence Trenches. Демо прогонялись четыре раза, вычислялось среднее арифметическое последних трех прогонов.
Как и ожидалось прирост от использования SIMD-инструкций в играх мал, и он тем меньше, чем лучше настройки графики.
Заключение
Как видно оптимизация приложений под SIMD-инструкции приносит свои плоды в виде повышения производительности. Прирост состоит от нескольких процентов играх, до полутора-двух раз при обработке видео и звука. Насколько же хороша оптимизация и во сколько секунд/fps/попугаев она выльется зависит и от создателей процессоров, и от производителей программного обеспечения. При их тесном сотрудничестве производительность компьютеров будет повышаться, а это именно то, что нам и надо
.
Напоследок хочу привести таблицу десктопных ядер от Intel и AMD с указанием поддерживаемых наборов инструкций.
Ядро | MMX | SSE | SSE2 | SSE3 | SSE4 | 3DNow! |
---|---|---|---|---|---|---|
P54 | — | — | — | — | — | — |
P55 | + | — | — | — | — | — |
Covington | + | — | — | — | — | — |
Mendocino | + | — | — | — | — | — |
Klamath | + | — | — | — | — | — |
Deschutes | + | — | — | — | — | — |
Katmai | + | + | — | — | — | — |
Coppermine | + | + | — | — | — | — |
Tualatin | + | + | — | — | — | — |
Willamette | + | + | + | — | — | — |
Northwood | + | + | + | — | — | — |
Prescott | + | + | + | + | — | — |
Prescott-2M | + | + | + | + | — | — |
Smithfield | + | + | + | + | — | — |
Presler | + | + | + | + | — | — |
Core 2 | + | + | + | + | — | — |
5K86 | — | — | — | — | — | — |
Little Foot | + | — | — | — | — | — |
Chomper | + | — | — | — | — | + |
Sharptooth | + | — | — | — | — | + |
Pluto | + | — | — | — | — | + |
Orion | + | — | — | — | — | + |
Spitfire | + | — | — | — | — | + |
Morgan | + | + | — | — | — | + |
Thunderbird | + | — | — | — | — | + |
Palomino | + | + | — | — | — | + |
Thoroughbred | + | + | — | — | — | + |
Barton | + | + | — | — | — | + |
Thorton | + | + | — | — | — | + |
Applebred | + | + | — | — | — | + |
Sledgehammer | + | + | + | — | — | + |
Clawhammer | + | + | + | — | — | + |
Paris | + | + | + | — | — | + |
Palermo | + | + | + | + | — | + |
Newcastle | + | + | + | — | — | + |
Venice | + | + | + | + | — | + |
San Diego | + | + | + | + | — | + |
Winchester | + | + | + | — | — | + |
Manchester | + | + | + | + | — | + |
Toledo | + | + | + | + | — | + |
Manila | + | + | + | + | — | + |
Orleans | + | + | + | + | — | + |
Windsor | + | + | + | + | — | + |
При написании статьи использовались материалы с сайтов overclockers.ru, ferra.ru, fcenter.ru, thg.ru, ixbt.com, intel.com, 3dnews.ru.
С уважением, Таболин Юра aka olddanmer
Вопросы и предложения мылить на danmer@udm.ru
В мире компьютерных технологий нет ничего странного в обилии всевозможных аббревиатур: CPU, GPU, RAM, SSD, BIOS, CD-ROM, и многих других. И почти каждый день появляются всё новые и новые сокращения названий каких-то технологий, что является неизбежным следствием бесконечного стремления инженеров улучшить функции и возможности наших вычислительных устройств.
Сегодня речь пойдёт о таких расширениях набора команд процессоров, как MMX, SSE и AVX. Многим знакомы эти сокращения, и мы выясним, действительно ли это какие-то интересные разработки, или же это не более чем бессмысленные маркетинговые уловки.
Ну о-о-очень первые дни
Середина 80-х прошлого столетия. Рынок процессоров был очень похож на сегодняшний. Intel бесспорно преобладала, но столкнулась с жесткой конкуренцией со стороны AMD. Домашние компьютеры, такие как Commodore 64, использовали базовые 8-битные процессоры, тогда как настольные ПК начинали переходить с 16-битных на 32-битные чипы.
Эти числа означают размер значений данных, которые могут быть обработаны математически, при этом чем выше эти значения, тем выше точность и возможности. Они также определяет размер основных регистров в микросхеме: небольших участков памяти, используемых для хранения рабочих данных.
Такие процессоры являются также скалярными и целочисленными. Что это означает? Скаляр – это когда над одним элементом данных выполняется только одна любая математическая операция. Обычно это обозначается как SISD (single instruction, single data, «одиночный поток команд – одиночный поток данных»).
Таким образом, инструкция по сложению двух значений данных просто обрабатывается для этих двух чисел. А если вам, например, нужно прибавить одно и то же значение к группе из 16 чисел, то для этого потребуется выполнить все 16 наборов инструкций – для каждого числа из этой группы по отдельности. По-другому процессоры тех лет складывать ещё не умели.
Intel 80386DX с частотой 16МГц (1985).
Целое (Integer) – в математике, это такое число, которое не имеет дробной части. Например, 8 или -12. Процессоры типа интеловского 80386SX не имели врожденной способности сложить, скажем, 3.80 и 7.26 – такие дробные числа называются числами с плавающей точкой (или запятой, в русском языке это без разницы) – по-английски FP, floating point или просто floats. Чтобы справиться с ними, нужен был другой процессор, например 80387SX, и отдельный набор инструкций – список команд, который сообщает процессору, что делать.
В те времена под инструкциями x86 понимали наборы команд для целочисленных (integer) операций, а под инструкциями x87 – для чисел с плавающей точкой (float). В наши дни все операции умеет выполнять один процессор, поэтому мы используем термин x86 для обозначения набора инструкций обоих типов данных.
Использование отдельных сопроцессоров для обработки разных типов данных было нормой, пока Intel не представила 80486: их первый CPU для персоналок со встроенным математическим сопроцессором для обработки вещественных данных (FPU, Floating Point Unit).
Intel 80486: Жёлтым цветом выделен блок FPU для обработки чисел с плавающей точкой.
Как вы можете видеть, этот блок совсем немного занимает места в процессоре, но рывок в производительности, благодаря этому решению, был огромен.
Но в целом принцип работы оставался скалярным, и таким он перешел и к преемнику 486-го: оригинальному Intel Pentium.
И пройдёт ещё три года после релиза этого первого Пентиума, прежде чем Intel представит миру Pentium MMX. Это произошло в октябре 1996 года.
V – значит «векторный». А MMX что значит?
В мире математики числа можно группировать в наборы различных видов и размеров – одна такая упорядоченная совокупность называется арифметическим вектором. Проще всего представить его себе в виде списка значений, расположенных горизонтально или вертикально. Технология MMX привнесла в мир процессоров возможность выполнять векторные математические вычисления.
Однако она была изначально довольно ограниченной, поскольку оперировала только целыми числами и фактически эксплуатировала для своих целей регистры FPU. Поэтому программисты, желающие использовать какие-то инструкции MMX, вынуждены иметь в виду, что при выполнении таких инструкций любые вычисления с плавающей запятой не могут выполняться одновременно с ними.
Знаменитая реклама технологии Intel MMX (1997).
FPU Pentium имел 64-битные регистры, и в операциях MMX каждый из них мог вместить два 32-битных, четыре 16-битных или восемь 8-битных целых числа. Именно эти группы чисел и являются векторами, и каждая инструкция, предназначенная для них, будет выполняться сразу над всеми значениями в группе.
Такой принцип получил название SIMD (single instruction, multiple data, «одиночный поток команд, множественный поток данных») и знаменует собой большой шаг вперед в развитии возможностей процессоров для персональных компьютеров.
Ну а какие приложения выигрывают от использования такого принципа? Практически все, которым приходится выполнять одинаковые вычисления над группой однородных данных, и в первую очередь это некоторые функции в 3D-моделировании и мультимедийных технологиях, а также в системах обработки стандартных сигналов.
Например, MMX можно применить для ускорения умножения матриц при обработке вершин в 3D, или для смешивания видеопотоков при работе с хромакеем или альфа-композитингом.
Процессор AMD K6-2 – где-то там есть 3DNow!
К сожалению, внедрение MMX продвигалось довольно медленными темпами из-за негативного влияния этой технологии на производительность операций с плавающей точкой. AMD частично решила эту проблему, создав свою собственную версию под названием 3DNow! примерно через два года после появления MMX. Технология от AMD предлагала больше инструкций SIMD и умела обрабатывать числа с плавающей точкой, но также страдала от недостатка понимания программистами.
Ах, да! Как же официально расшифровывается аббревиатура MMX? Согласно Intel – никак!
Проще пареной SSE
Ситуация переломилась в лучшую сторону с приходом в 1999 году процессора Intel Pentium III. Он принёс с собой блестящую реализацию векторной функции под названием SSE (Streaming SIMD Extensions, «потоковые расширения SIMD»). На этот раз это был дополнительный набор из восьми 128-битных регистров, отдельных от регистров в FPU, и стек дополнительных инструкций для обработки чисел с плавающей точкой.
Использование независимых регистров означает, что больше нет такой сильной зависимости от FPU, хотя Pentium III не мог выполнять инструкции SSE одновременно с инструкциями FP. А также, новая функция поддерживает только один тип данных в регистрах: четыре 32-битных FP-числа.
Но переход к использованию FP-инструкций SIMD позволил значительно увеличить производительность в таких приложениях, как кодирование/декодирование видео, обработка изображений и звука, сжатие файлов и многих других.
Pentium IV: желтым цветом выделен блок регистров SSE2.
Усовершенствованная версия SSE2 появилась в 2001 году вместе с Pentium 4, и на этот раз поддержка типов данных была намного лучше: четыре 32-битных или два 64-битных FP-числа, а также шестнадцать 8-битных, восемь 16-битных, четыре 32-битных или два 64-битных целых числа. Регистры MMX остались в процессоре, но все операции MMX и SSE могли выполняться с использованием независимых 128-битных регистров SSE.
Модификация SSE3 появилась на свет в 2003 году, имея больше инструкций и возможность выполнять некоторые математические вычисления между значениями внутри одного регистра.
Ещё через 3 года мы познакомились с архитектурой Intel Core, принёсшей ещё одну ревизию технологии SIMD (SSSE3 – Supplemental SSE, «расширенные SSE»), и чуть позже в том же году – финальную версию, SSE4.
В 2007 году AMD применила собственную версию расширений CPU-инструкций SSE4 в своей архитектуре Barcelona. С названием в AMD париться не стали, и назвали свою версию просто SSE4a.
С линейкой Nehalem Core в 2008 году было выпущено незначительное обновление этой версии, которую Intel обозначила как SSE4.2 (а под SSE4.1 стали понимать исходную версию этого обновления). Обновления не затронули регистры, а лишь добавили больше инструкций в таблицу, расширив диапазон возможных математических и логических операций.
AMD, со своей стороны, сперва предложила новую версию SSE5, но позже решила разделить ее на три отдельных расширения, одно из которых довольно проблемное – подробнее об этом чуть позже.
К концу 2008 года и Intel, и AMD поставляли процессоры, которые уже могли обрабатывать все версии наборов инструкций от MMX до SSE4.2, и многие приложения (в основном игры) начали требовать этих функций для работы.
Время для новых букв
2008 год также был годом, когда Intel объявила о том, что они работают над значительным апгрейдом своей системы SIMD, и в 2011 году выкатила линейку процессоров Sandy Bridge с поддержкой набора инструкций AVX (Advanced Vector Extensions, «продвинутые векторные расширения»).
Всё удвоилось: вдвое больше векторных регистров и вдвое больше их размер.
Шестнадцать 256-битных регистров вмещают только восемь 32-битных или четыре 64-битных вещественных числа, поэтому в плане форматов данных, этот набор инструкций более ограничен в сравнении с SSE, но ведь и SSE никто не отменял. К тому времени программная поддержка векторных операций для CPU была уже хорошо отлажена, начиная с фундаментального мира компиляторов, заканчивая сложными приложениями.
И не даром: Core i7-2600K (или подобный ему), работающий на частоте 3,8ГГц, потенциально может выдавать более 230 GFLOPS (миллиардов операций с плавающей точкой в секунду) при выполнении инструкций AVX – неплохо для дополнения, относительно немного места занимающего на кристалле процессора.
Или могло бы быть неплохо, если бы он действительно работал на частоте 3,8ГГц. Частично проблема AVX заключалась в том, что нагрузка на чип получалась настолько высокой, что Intel пришлось заставить процессор автоматически снижать тактовую частоту в этом режиме примерно на 20%, чтобы уменьшить энергопотребление и не допустить перегрева. К сожалению, такова цена за выполнение любой работы SIMD в современном процессоре.
Еще одно усовершенствование, предлагаемое в AVX – это возможность работать одновременно с тремя значениями. Во всех версиях SSE операции выполнялись между двумя значениями, после чего результат заменял одно из них в регистре. При выполнении инструкций SIMD AVX не трогает исходные значения, сохраняя результирующее значение в отдельный регистр.
AVX2 был выпущен вместе с архитектурой Haswell для процессоров Core 4-го поколения в 2013 году, и представлял собой довольно значительный апгрейд, благодаря добавлению нового расширения: FMA (Fused Multiply-Add, «умножение-сложение с однократным округлением»).
Эта независимая функция в составе AVX2 была крайне востребована для приложений, работающих с векторной и матричной математикой, поскольку давала возможность выполнять две операции с помощью одной инструкции. Функция поддерживала и скалярные операции также.
Проблема оказалась в том, что FMA от Intel отличался от аналогичного расширения AMD настолько, что они были совершенно несовместимы. Причина в том, что Intel FMA представляет собой систему с тремя операндами, то есть работает с тремя отдельными значениями: два слагаемых и сумма, либо три слагаемых и сумма, замещающая одно из слагаемых.
У версии от AMD четыре операнда, поэтому она может вычислить 3 числа и записать ответ в отдельный регистр, не трогая исходные значения. Математически FMA4 лучше, чем FMA3, но его реализация немного сложнее, как с точки зрения программирования, так и с точки зрения интеграции функции в процессор.
AVX-512: а не многовато-ли?
AVX2 ещё только начал появляться на рынке процессоров, а Intel уже плела маниакальные планы относительно его преемника, AVX-512, и общий настрой среди разработчиков был такой: «больше регистров богу регистров!». Мало того, что этих самых регистров снова вдвое больше, и они снова вдвое увеличились в размере, так ещё и появился стек новых инструкций и поддержка устаревших.
Первой партией чипов, на которых поднялся в воздух набор функций AVX-512, стала серия Xeon Phi 7200 – второе поколение громоздких и очень многоядерных процессоров Intel, ориентированных на рынок суперкомпьютеров.
72-ядерный 288-потоковый Knights Landing Xeon Phi.
В отличие от всех предыдущих реализаций, новый набор векторных инструкций состоял из 19-и компонентов: базового – AVX-512F, – необходимого для обеспечения совместимости, и множества весьма специфических. Эти дополнительные наборы охватывают такие области операций, как обратная математика, целочисленные FMA и алгоритмы свёрточной (конволюционной) нейронной сети (CNN-алгоритмы).
Первоначально AVX-512 был только прерогативой крупнейших чипов Intel, предназначенных для рабочих станций и серверов, но теперь их недавние архитектуры Ice Lake и Tiger Lake также поддерживают его. Да, не удивляйтесь: вы можете купить легкий ноутбук с процессором, имеющим 512-битные векторные блоки.
Это может показаться круто. А может и не показаться – в зависимости от вашей точки зрения. Регистры на кристалле CPU обычно группируются в так называемом регистровом файле, как видно на макрофото ниже.
2-ядерный Intel Skylake
Желтым прямоугольником выделен файл векторных регистров, красный прямоугольник – это наиболее вероятное расположение файла целочисленного регистра. Обратите внимание, насколько файл векторного регистра больше integer-регистра. В Skylake используются 256-битные регистры AVX2, следовательно аналогичный векторный регистровый файл AVX-512 занял бы на таком же кристалле в четыре раза больше места: вдвое больше, потому что вдвое больше их размер, и ещё вдвое – потому что самих регистров вдвое больше.
А очень-ли нужно такое количество векторных регистров маленькому чипу, который должен быть максимально мобильным? Хоть речь и не о лишних килограммах в ноутбуке, а лишь о небольшой части площади ядра процессора, каждый квадратный миллиметр имеет значение, когда речь идет о миниатюризации мобильных устройств и наиболее эффективном использовании доступного пространства в них.
И учитывая, что использование AVX в любом виде приводит к автоматическому уменьшению тактовой частоты, использование AVX-512 на таких платформах скорее всего приведет к ещё более сомнительным издержкам по сравнению с любым из своих предшественников, поскольку при работе он потребляет еще больше энергии.
И проблема AVX-512 не только в применении к небольшим мобильным процессорам. Разработчикам, пишущим код для работы на рабочих станциях и серверах, и для которых увеличение возможностей векторных расширений действительно важный вопрос, потребуется создавать несколько версий кода. Это связано с тем, что не все процессоры с AVX-512 работают с одинаковым набором команд.
Например, набор IFMA (Integer Fused Multiply Add, «целочисленное умножение-сложение с однократным округлением») доступен только на процессорах Cannon, Ice и Tiger Lake. В то время как процессоры на архитектуре Cooper и Cascade Lake его не поддерживают, несмотря на то, что они относятся к сегменту процессоров для серверов и рабочих станций.
Стоит отметить, что AMD не предлагает поддержку AVX-512, и не собирается. По их мнению, обработка массивных векторных вычислений – это прерогатива GPU. С AMD полностью солидарна Nvidia, и обе компании уже выпустили продукты специально для таких нужд.
И дальше что?
Много лет назад процессор с возможностью обработки векторной математики ознаменовал собой эпохальный прорыв. Современные процессоры обладают огромными возможностями, предлагая множество наборов инструкций для обработки целочисленных операций и операций с плавающей запятой для скалярных, векторных и матричных данных.
Что касается последних двух типов данных, то CPU теперь напрямую конкурируют с GPU: ведь мир 3D-графики – это как раз всё, что связано с SIMD, векторами, плавающими точками и т.д. И производители GPU не спали – разработка графических ускорителей велась стремительными темпами. В начале 2010-х годов купить видеокарту, процессор которой способен выполнять почти 800 миллиардов инструкций SIMD в секунду, вы уже могли менее чем за 500 долларов.
Это больше, чем то, на что сейчас способны лучшие из десктопных CPU. Но они и не предназначены для рекордов в какой-то конкретной области – их задача обрабатывать очень обобщенный код, который зачастую не повторяется или легко распараллеливается. Поэтому, не стоит думать, что возможности SIMD столь жизненно-важны для CPU, скорее это полезное дополнение к его арсеналу.
Вас интересует производительность SIMD в чистом виде? Ваш выбор – видеокарта, а не материнка!
Стремительное развитие графических процессоров недвусмысленно намекает, что для CPU нет нужды иметь чересчур большие векторные блоки, и почти наверняка именно поэтому AMD даже не пыталась разрабатывать своего собственного преемника для AVX2 (расширение, которое они используют в своих чипах с 2015 года). Давайте также не будем забывать, что процессоры следующего поколения могут больше походить на мобильные однокристальные (SoC, System-on-a-Chip), где под каждый тип задач выделена площадь на кристалле. Intel, в свою очередь, похоже, стремится внедрить AVX-512 в как можно большее количество продуктов.
Ждёт ли нас ещё и AVX-1024? Вряд ли, либо очень нескоро. Скорее всего, Intel займётся расширением AVX-512 с помощью дополнительных компонентов с инструкциями, чтобы повысить гибкость, а чистую SIMD-производительность переложит на плечи своей недавно разработанной линейки графических процессоров Xe.
Библиотеки SSE и AVX теперь являются неотъемлемой частью программного обеспечения: Adobe Photoshop требует, чтобы процессоры поддерживали как минимум SSE4.2; API машинного обучения TensorFlow требует поддержки AVX; Microsoft Teams может выполнять фоновые видеоэффекты, только если доступен AVX2.
Это говорит только об одном: несмотря на то, что в плане обработки SIMD графическим процессорам нет равных, этот функционал ещё долго будет в арсенале CPU. Так что будем ждать нового поколения векторных расширений и надеюсь, реклама нас впечатлит.
Pentium MMX
Процессоры Pentium c технологией MMX, выпускающиеся с тактовой частотой 233, 200 и 166 МГц, являются существенным дополнением семейства Pentium. Скорость работы приложений в системах с процессором Pentium с технологией MMX на 10-20% больше, чем в системах с процессором Pentium той же тактовой частоты. Приложения, разработанные для технологии MMX, реализуют дополнительную производительность, которую обеспечивает технология MMX, позволяя использовать богатую цветовую гамму, более реалистичную графику, полно-экранное видео и т.д. Конкретные возможности определяются типом приложения и степенью использования технологии MMX. Эталонный тест Intel Media Benchmark, который оценивает производительность мультимедиа, исполняетс более чем на 60% быстрее в системе на базе процессора Pentium с технологией MMX, чем в системе с процессором Pentium той же тактовой частоты.
Для более полного интерактивного использования ПК система должна обладать высокой производительностью в трех направлениях: при выполнении целочисленных вычислений и операций с плавающей запятой, а также при работе с мультимедиа. Обычные приложения, такие как текстовые редакторы, программы для создания и просмотра презентаций, персональные финансовые программы, требуют высокой производительности целочисленных вычислений. Однако, для использования видео, трехмерных игр и обработки изображений необходимо максимальное расширение мультимедийных возможностей ваших процессоров и систем, а также высокая производительность операций с плавающей запятой. Процессор Pentiumг c технологией MMX с тактовой частотой 233 МГц имеет лучшие показатели производительности во всех трех областях.
Процессор Pentium с технологией MMX обеспечивает полную совместимость, как программную, так и по выводам, с предыдущими процессорами семейства Pentium. Он содержит 4.5 миллиона транзисторов и изготовлен по расширенной 0.35 микронной технологии с использованием технологии КМОП и технологии понижения напряжения. Это позволяет сохранить тепловые характеристики оригинального процессора Pentium при существенном увеличении производительности.
Описание процессора
Процессор Pentium с технологией MMX — новый представитель семейства процессоров Pentium c улучшенной микроархитектурой:
— Полная поддержка технологии MMX.
— В основе технологии MMX лежит метод SIMD — одна инструкция над многими данными, — который позволяет увеличить производительность широкого набора мультимедийных и коммуникационных приложений.
— Процессор Pentium c технологией MMX поддерживает 57 новых инструкций и 4 новых 64-разрядных типа данных.
Рекомендуемые материалы
— Все существующие операционные системы и приложени полностью совместимы с процессором Pentium с технологией MMX.
— Удвоен объем кэш данных и кэш кода до 16К каждой.
— Кэш данных и кэш кода 1-го уровня процессора были удвоены до 16kb каждая. Раздельные встроенные кэш увеличивают производительность, сокращая среднее время доступа к памяти и обеспечивая быстрый доступ к часто используемым инструкциям и данным. Кэш кода и кэш данных используются одновременно, причем кэш данных поддерживает два обращения одновременно. Кэш данных поддерживает метод обратной записи (write-back) или, альтернативно, построчной сквозной записи (writethrough).
Рекомендуем посмотреть лекцию «Ультразвуковая диагностика мастопатии».
— Улучшенное предсказание ветвления. Динамическое предсказание ветвления использует Branch Target Buffer (BTB), который предсказывает наиболее вероятный набор инструкций для исполнения.
— Улучшенная конвейерная обработка. Для повышения производительности была добавлена дополнительная стадия конвейерной обработки.
— Более глубокие буферы записи. Для улучшени производительности записи в память, буферная область, состоящая из четырех буферов, теперь используется совместно двумя конвейерами.
Технология MMX+ и новый 0.25-микронный производственный процесс
Семейство процессоров Pentium для мобильных ПК призвано обеспечить наивысшую на сегодня производительность мобильных компьютеров. Компьютеры на базе мобильных процессоров Pentium с технологией MMX+ показывают отличную производительность при работе с графикой, видео- и аудио- приложениями. Новый 0.25-микронный технологический процесс Intel позволяет увеличить тактовую частоту процессора на 40%, сократив при этом расход энергии почти на 50% по сравнению с предыдущими высокопроизводительными процессорами для мобильных ПК. Это дает пользователям целый ряд преимуществ — от значительного повышения общей производительности до серьезного увеличения времени автономной работы. Тактовая частота увеличена до 233 МГц, расход энергии снижен почти на 50%
Технология производства микропроцессоров обычно характеризуется минимальным возможным размером элемента — чем меньше кристалл, тем с большей скоростью может работать схема. 0.25-микронная технология позволяет создавать элементы, имеющие вдвое меньшую площадь по сравнению с возможностями 0.35-микронной технологии (обычно применяемой в производстве самых быстрых устройств).
Что такое MMX?
Новый стандарт семейства x86
Производители оборудования — за
MMX
Решающее слово — за разработчиками
ПО
Что дальше?
Как быть пользователям?
История разработки Pentium MMX
В чем причина задержки выпуска Pentium
MMX
Каким будет микропроцессор начала
2000 г.
MMX
ПО
MMX
2000 г.
Итак, 8 января 1997 г. произошло событие, которого мировое компьютерное сообщество ждало в течение всего прошлого года: компания Intel объявила о выпуске процессора Pentium с технологией MMX и начале его поставок на рынок. (О планах создания новой модели с рабочим названием P55C руководство Intel объявило еще в начале прошлого года.) Выпуск нового процессора являет собой очень важный шаг в развитии всей индустрии ПК; это событие имеет огромное значение не только для производителей оборудования и разработчиков ПО, но и для пользователей.
Внешняя сторона дела выглядит следующим образом. В новом процессоре реализован дополнительный набор из 57 команд; таким образом, их общее число достигло 277. Тут можно вспомнить, что в первом процессоре серии x86, знаменитой модели 8086, выпущенной в 1979 г., оно было равно 170. Следующее расширение произошло только в 1985 г.: в микропроцессоре 386 число команд выросло до 220. С тех пор развитие архитектуры процессоров шло постоянно, росла их производительность, менялся аппаратный интерфейс (разъем), но с точки зрения программного обеспечения все оставалось по-прежнему — система команд не изменилась даже в Pentium Pro. В 486-м стандарт был расширен за счет включения в него операций с плавающей запятой, которые ранее рассматривались как стандартное, но необязательное дополнение, реализуемое сопроцессором. На уровне микрокоманд тоже происходили многие важные изменения, и именно поэтому постоянно появлялись компиляторы, оптимизирующие программы под процессоры 386, 486 и т. д. Однако в программировании, даже на ассемблере, все оставалось в принципе по-прежнему. И вот теперь, через 12 лет, Intel решила дополнить систему команд процессора.
Следует отметить некоторые принципиальные различия между ситуациями 1997 и 1985 гг. Выпуск модели 386 ознаменовал не просто смену второго поколения микропроцессоров третьим, а начало перехода от 16-разрядных к 32-разрядным системам. В случае с MMX ни о каком переходе к новому поколению микропроцессоров речь не ведет даже Intel: несмотря на увеличение числа команд, в его основе лежит внутренняя архитектура и технология производства Pentium. В какой-то степени появление нового набора команд можно сравнить с интеграцией на кристалле встроенного математического сопроцессора. И тем не менее, хотя речь идет в первую очередь о вроде бы чисто механическом расширении топологии процессора, на самом деле Pentium MMX, учитывая реализацию в нем целого ряда новых архитектурных и технологических решений, вполне можно отнести к классу 5,5.
Что такое MMX?
Несмотря на официальные утверждения Intel, что название MMX является просто товарным знаком фирмы и не несет никакой смысловой нагрузки, уже давно принято производить сокращение ММХ от MultiMedia eXtention — мультимедийное расширение. Действительно, дополнительный набор команд предназначен в первую очередь для реализации алгоритмов, характерных для обработки графических, видео- и аудиоданных: фильтрации, преобразований Фурье, свертки и пр.
Включение подобных специальных операций в универсальный процессор является признанием того факта, что мультимедийные задачи становятся массовыми и будут сохранять свою актуальность в течение длительного времени. Тем самым часто используемые в них математические операции выходят на один уровень с традиционными арифметическими командами. Следует обратить внимание, что, хотя первые предложения по их реализации на уровне процессора выдвигались еще в 1992 г., окончательное решение расширить стандартный набор команд было принято лишь два года спустя, когда четко обозначились перспективы развития ПК в сторону мультимедиа и телекоммуникаций.
По числу команд MMX-набор выглядит довольно представительно, но состоит он из достаточно простых операций с беззнаковыми целочисленными данными: сложения, умножения, логических операций. Выигрыш в производительности должен достигаться за счет реализации принципа SIMD (Single Instruction Multiple Data — одна команда, множественные данные) — параллельного выполнения одной операции сразу над несколькими порциями (8-, 16-, 32-разрядных) данных, представленными в виде одного 64-разрядного блока, помещенного в один регистр. Именно такие типы данных используются для хранения мультимедийной и телекоммуникационной информации. В результате можно, например, обрабатывать одновременно четыре пиксела графической информации с числом цветовых оттенков 64 тысячи. Кроме реализации чисто параллельных операций, в MMX включен целый ряд специальных векторных операций типа подсчета суммы произведений пар чисел: a1*b1+a2*b2.
Таким образом, вычислительный эффект от применения MMX-технологии в мультимедийном и коммуникационном ПО может оказаться весьма существенным. По оценкам Intel, на долю таких команд приходится не более 10% кода подобных программ, а тратится до 90% общего времени исполнения программы. Иными словами, прирост производительности для подобных приложений может достигать 50-400% (На практике такого прироста пока не наблюдается. О результатах тестирования программ, использующих MMX-технологию, см. «Мир
ПК» # 2/97, с. 22. — Прим. ред.).
Принципиальным моментом технологии MMX является то, что она реализована в «облегченном» архитектурном варианте: в структуру процессора добавляются только логические схемы для выполнения операций. А вот для хранения MMX-данных в процессоре применяется тот же набор 64-разрядных регистров, который ранее использовался для чисел с плавающей запятой. Но в отличие от устройства обработки вещественных чисел, которое использовало этот набор только в виде стека, для MMX-команд регистры имеют статус регистров общего назначения с прямой адресацией.
Кроме экономии на аппаратной части, такое решение обеспечивает совместимость с программным обеспечением. В частности, в многозадачных операционных системах (OS/2, Windows 95) при переключении с одной задачи на другую необходимо осуществлять сохранение и восстановление всех регистров процессора. Появление же дополнительных регистров потребовало бы хотя и не очень значительных, но все же изменений в существующих ОС. Не говоря уже об увеличении времени, уходящего на переключение между приложениями.
Следствием использования общего набора регистров является необходимость четкого разделения в программе фрагментов обработки чисел с плавающей запятой и новых MMX-данных. В общем случае для перехода от одного вида операций к другому требуется сохранение в ОЗУ всего блока регистров, что занимает относительно много времени. Однако эта проблема, хотя о ней часто говорится в последнее время, не слишком актуальна — обычно процессы обработки целых и вещественных чисел достаточно изолированы даже в задачах трехмерной графики, где нужно использовать и то и другое.
Новый стандарт семейства x86
Большие объемы мультимедийных операций при решении широкого класса задач на современном ПК стали привычным делом. Для повышения скорости таких преобразований с давних пор использовался механизм аппаратной поддержки (модемы, графические ускорители, звуковые и MPEG-платы и пр.). Около двух лет назад стало очевидно, что самый лучший выход — создать единое устройство, которое взяло бы на себя большую часть функций этих приборов. При этом требовалось решить две проблемы: достичь договоренности о новом стандарте — наборе команд — и выбрать способ реализации — либо в виде отдельного мультимедийного сопроцессора, либо в составе основного вычислителя.
Тут следует заметить, что стандарта на семейство процессоров x86, принятого сообществом производителей его клонов, не существует. Есть только стандарт де-факто. С некоторыми оговорками это относится и к стандартам на другие компоненты ПК: системные платы, шины и пр. На начальном этапе развития IBM PC их утверждала компания IBM, но последние 10 лет законы диктует Intel. А для остальных производителей (выпускающих процессоры, системные платы и все остальное) вопрос о том, следовать этому стандарту или нет, решается сугубо добровольно. Впрочем, возможность выбора здесь весьма ограничена, и это хорошо видно на примере деятельности производителей клонов x86.
Показательна попытка Cyrix в начале 90-х годов сделать экзотические варианты промежуточных моделей процессоров 386-486, требующих специальных системных плат. После той неудачи Cyrix уже не рискует заниматься подобными экспериментами. Но ее опыт не пошел на пользу другой компании, NexGen, которая продолжала попытки выпускать собственные модификации x86, имеющие очень хорошие характеристики, но неспособные работать на стандартных платах. В результате к моменту ее покупки фирмой AMD в конце 1995 г. NexGen уже стояла на пороге финансового краха.
Технические характеристики процессоров (это относится к любому отдельному компоненту вычислительной системы) сами по себе не являются решающим фактором в их успешном продвижении на рынке. Сравнение процессоров разных типов, безусловно, представляет научный интерес, но весьма опосредованно влияет на практические предпочтения потребителей. Ведь они хотят купить не просто систему, состоящую из огромного набора аппаратных и программных компонент, а комплекс, обладающий эксплуатационными характеристиками, проверенными опытом других, и имеющий ясные перспективы развития. Именно поэтому на массовом рынке успехом всегда будут пользоваться в первую очередь стандартные продукты, а уже потом — лучшие среди них.
Успешность AMD во многом объясняется именно тем, что она всегда шла четко в кильватере Intel. В 1994 г. после заключения соответствующих соглашений и прекращения судебных преследований со стороны Intel по поводу использования внутренней архитектуры ее процессоров дела AMD пошли еще лучше. И хотя в своей модели AMDk586 фирма впервые реализовала собственную архитектуру процессора, для уверенности в совместимости с внешним интерфейсом Pentium она опять-таки заключила соответствующие кросс-лицензионные соглашения с Intel.
Вполне понятно, что новый стандарт x86 могла предложить только компания Intel. Внешне это решение выглядит как диктат, но на самом деле это далеко не так — сколь бы крупной ни была фирма, она может принять какие-либо решения, лишь будучи уверенной в том, что рынок поддержит их.
Вопрос о том, в какой степени стандарт MMX будет поддержан отраслью, начал обсуждаться среди экспертов еще год назад, сразу после его объявления. Тут можно вспомнить, что фирма NexGen еще осенью 1995 г. сообщила о планах создания специального мультимедийного сопроцессора. Но проект закрылся сам собой вместе с ликвидацией компании.
В самом начале 1996 г. (когда Intel еще хранила полное молчание на этот счет) Cyrix, не уточняя особо детали, заявила с своем намерении включить мультимедийные расширения в процессор M2, позиционируемый ею как альтернатива Pentium Pro. На прошедшей летом в Калифорнии конференции Hot Chip, посвященной разработкам микросхем для мультимедиа, Cyrix представила также проект создания оригинальной мультимедийной схемы, по мнению экспертов, весьма похожей на P55C. Фактически фирма признала стандарт Intel, при этом пытаясь создать собственный расширенный вариант. Тем временем осенью начались препирательства между Intel и Cyrix по поводу законности использования последней названия MMX, которое является торговой маркой Intel (сейчас Cyrix пытается отстоять свое «право на ММХ» в суде). Но пока суд да дело, на выставке CeBIT’97 Cyrix представила свой вариант MMX в процессоре M2.
Фирма AMD, как обычно следуя за лидером, еще в январе прошлого года без лишнего шума заключила с Intel соглашение о лицензировании MMX-технологии (имелось в виду только право на использование набора команд, внутренняя реализация должна была разрабатываться самой компанией). Как и Cyrix, AMD представила свой новый процессор на выставке CeBIT’97.
Производители оборудования — за MMX
Весьма естественно предположить, что реакция собратьев по семейству x86 на новый стандарт волнует Intel меньше всего — ведь это конкуренты. Совсем другое дело — производители ПК и комплектующих, которые считаются стратегическими партнерами компании. Реакцию отрасли предугадать было легко — ММХ-технологию встретили с горячим энтузиазмом.
Оно и понятно: появление нового процессора автоматически означает начало массового обновления парка ПК (точно так же, как появление Windows 95 вызвало волну обновления всего прикладного ПО). И, обещая принципиальную аппаратную совместимость Pentium MMX с основными узлами ПК, Intel создала стимул для пользователей двигаться по пути не частичной модернизации ПК, а его полной замены: для его установки нужна новая системная плата, которая отличается от старой единственным свойством — на один из контактов разъема процессора подается дополнительный номинал напряжения. Из-за этого «пустяка» (можно было встроить источник напряжения в сам кристалл) придется менять всю плату. Впрочем, с выпуском Pentium OverDrive MMX для замены платы появился еще один стимул — на плате будут стоять новые компоненты (например, BIOS), оптимизированные для работы с MMX. Короче говоря, теперь пользователь просто обречен на покупку нового ПК.
А для производителей системных плат, которые пока боятся переходить на выпуск новых изделий, найдется поучительный пример. В момент выхода в свет процессора Pentium в 1992 г. тайваньские производители плат (мировые лидеры в этой сфере) засомневались, стоит ли форсировать переход на эту платформу, — рынок 486-х моделей был тогда на подъеме. Но собственное производство системных плат, развернутое Intel, оказалось для них важным доводом — лидерства можно ведь и лишиться.
Немного сложнее обстоят дела с многочисленными производителями плат расширения. Совершенно очевидно, что появление MMX-технологии затрагивает интересы разработчиков мультимедийных аппаратных средств, так как она должна отобрать часть выполняемых их устройствами функций. В связи с этим следует отметить, что новая технология полностью соответствует объявленной Intel еще в середине 1995 г. стратегической программе NSP (Native Signal Processing — естественная обработка сигнала), суть которой заключается в постепенном переносе специализированных функций обработки с дополнительных плат на центральный процессор. Эффект для конечного пользователя — уменьшение затрат на оборудование, функции которого теперь будут реализовываться программными средствами. Еще тогда возникал вопрос, не собирается ли Intel таким образом «отбирать хлеб» у производителей аппаратуры? Но опыт прошедших почти двух лет показал, что такие опасения безосновательны.
Более мощный центральный процессор возьмет на себя реализацию только самых массовых мультимедийных алгоритмов. Уникальные алгоритмы обработки будут по-прежнему реализовываться специализированными средствами расширения. Практика показывает, что требования к видео- и аудиообработке растут очень быстро, поэтому производители мультимедийного оборудования не останутся без дела. При этом перенос массовых операций нижнего уровня на центральный процессор ведет к необходимости выпуска новых модификаций их изделий, в которых соотношение «стоимость-производительность» действительно снижается, но цена «средней модели» остается примерно той же. Таким образом, положительная реакция разработчиков аппаратуры мультимедиа на MMX-технологию представляется вполне естественной.
Решающее слово — за разработчиками ПО
И все же, несмотря на важность одобрения со стороны производителей аппаратных средств, успех MMX-технологии в решающей степени зависит от соответствующей переориентации огромного числа специализированных программных пакетов, а значит, и от активности участия в ней разработчиков ПО. Именно они должны обеспечить программную реализацию того, что раньше выполняла аппаратура.
Специфика же современной ситуации в вычислительной технике заключается в том, что смена поколений программного обеспечения, несмотря на «мягкость» процесса, происходит существенно медленнее, чем смена аппаратуры. Чтобы убедиться в этом, достаточно обратить внимание на такой факт. Хотя технические возможности для создания 32-разрядных приложений для ПК появились еще 12 лет назад, полный переход к ним от 16-разрядных систем не закончился еще и поныне.
Реальный временной цикл создания современных коммерческих прикладных пакетов с учетом их бета-тестирования и апробации на рынке составляет не менее полутора-двух лет. Что же касается MMX, то сейчас эта технология находится еще в стадии освоения разработчиками прикладного ПО. Несмотря на то что технология объявлена достаточно давно, только сейчас, с появлением ПК с Pentium MMX на рынке, большинство программистов получат реальную возможность использовать ее.
Теперь понятно, почему Intel уделяет такое внимание не только своим стратегическим партнерам типа Microsoft, но и всем независимым программистам. Еще в 1995 г. в рамках поддержки разработчиков ПО компания объявила свободный доступ к собственным программным технологиям для всех желающих. Год назад было сделано предварительное объявление о будущем архитектурном расширении процессора именно для программистов, сопровождавшееся предоставлением широкой публике подробных материалов на CD-ROM.
Переход к использованию MMX-технологии для разработчиков ПО не так уж прост. На первый взгляд, переделке должны быть подвергнуты относительно небольшие фрагменты кода, на которые приходится основная вычислительная нагрузка. Но для эффективного использования параллельной обработки зачастую потребуется принципиальное изменение вычислительных алгоритмов. Отдельно надо будет решать задачи оптимального чередования MMX-команд и операций с плавающей запятой. Кроме того, совершенно очевидно, что некоторое усложнение программ произойдет за счет того, что придется поддерживать оба варианта обработки — с MMX-архитектурой и без нее. Здесь вполне уместна аналогия с проблемой наличия/отсутствия сопроцессоров — до сих пор некоторые новые приложения поддерживают оба варианта.
Еще один немаловажный момент — программировать c использованием MMX сегодня можно только на ассемблере (например, Microsoft Macro Assembler с MMX-расширениями). Поддержка MMX на языках высокого уровня — дело будущего, хотя наверняка не очень далекого. В настоящее время, например, при работе в VC++ использование MMX-команд возможно лишь с помощью ассемблерных вставок.
Уже сейчас видно, что разработчики ПО довольно активно занялись поддержкой MMX: практика показывает, что опаздывать с внедрением новых технологий просто опасно. К тому же это дает отличную возможность без хлопот выпустить новые версии собственных программных продуктов. Например, Microsoft включила поддержку MMX (ActiveMovie, Direct3D API и ряд других средств) в новую версию Windows 95 OEM Service Release 2, выпущенную в августе 1996 г.
Что дальше?
В общем виде ответ на этот вопрос довольно очевиден: в будущем Pentium MMX полностью заменит старые процессоры 486 и Pentium. Но как скоро это произойдет? На какой тип процессора ориентироваться покупателю ПК сегодня?
По словам бывшего президента Intel Энди Гроува, в течение 1997 г. MMX-технология будет внедрена во все модели процессоров, выпускаемых компанией. Но из этого заявления совсем не следует, что за год полностью исчезнут модели, не поддерживающие MMX. Возможно, ситуация будет развиваться следующим образом (рассмотрим только процессоры для настольных систем).
Сегодня Intel предлагает на рынке шесть типов процессора Pentium (с тактовой частотой 100, 120, 133, 150, 166 и 200 МГц) и два типа Pentium MMX (с тактовой частотой 166 и 200 МГц). Следует обратить внимание, что только Pentium-100 и -120 выпускаются по технологии 0,6 мкм, все остальные — по технологии 0,35 мкм. Судя по темпам обновления производства Intel (доля 0,6 мкм за 1996 г. сократилась с 85 до 10%), выпуск этих моделей прекратится уже весной. Экстраполируя данные прошлых лет, можно прогнозировать, что тактовая частота Pentium, произведенного по 0,35-мкм технологии, поднимется к концу года до 166 МГц.
По чисто техническим причинам дальнейшее повышение частоты модели Pentium/0,35мкм уже невозможно: 200 МГц — это предел данной технологии. В частности, создание Pentium-200 потребовало специальных решений для улучшения теплоотвода на уровне корпусирования. Конечно, скоро должна появиться технология 0,25 мкм, но ее применение для старых моделей явно нецелесообразно.
Что касается Pentium MMX, то при всей своей архитектурной схожести с Pentuim в конструктивном плане это новая модель процессора и соответственно новая технология его производства (чего стоит одно снижение напряжения питания!). Представленные сегодня модели с частотами 166 и 200 МГц являются начальными в новой технологической линии Pentium MMX/0,35мкм. Значит, можно ожидать, что ее верхняя граница находится на отметке около 260 МГц и будет достигнута в начале 1998 г., а модели 166/200 превратятся к тому моменту в самые ходовые процессоры нижнего уровня. Таким образом, получается, что с чисто технологической точки зрения производство Pentium-200 должно естественным образом прекратиться в первой половине 1998 г., после чего останется один Pentium MMX.
Впрочем, необходимо подчеркнуть, что прекращение производства совсем не означает конец использованию в новых ПК имеющегося товарного запаса — компьютеры на базе 486-го процессора собирались более года после окончания его выпуска.
Как долго продержится Pentium MMX? Срок жизни одной производственной технологии для конкретной модели составляет около двух лет. Далее возможен переход к технологии 0,25 (наверное, реально она может появиться в 1998 г.), тогда к 2000 г. будет достигнуто увеличение тактовой частоты процессора до 400-450 МГц. Но есть большие сомнения, что так будет в действительности. С одной стороны, при существующей пропускной способности системной шины PCI (хотя, конечно, возможна ее модернизация) производительность ПК уже заметно отстает от роста частоты: например, замена Pentium-100 на Pentium-200 увеличивает производительность лишь на 50%. С другой стороны, архитектуру Pentium уже в ближайшем будущем будет вытеснять Pentium Pro.
О перспективах развития Pentium Pro сейчас говорить довольно сложно. Фактически первый год его жизни на рынке был в основном посвящен апробации архитектуры и решению маркетинговых проблем: пользователь должен был поверить в него, а разработчики — написать 32-разрядные программы. Этим, наверное, объясняется тот факт, что за прошедший год не было выпущено ни одной новой модели. Поэтому вполне уместно ожидать появления некоторых принципиально новых технологических решений (например, по аналогии перехода от Pentuim-60/66 к Pentium-75/120).
В процессоре Pentium II Klamath реализованы весьма радикальные новые решения — например, он будет устанавливаться на специальную плату расширения, подключаемую к системной плате посредством нового разъема. Но пока этот процессор реально недоступен, какие-либо выводы о его будущем делать рано.
Как быть пользователям?
Одновременное предложение двух альтернативных моделей Pentium и Pentium MMX вносит естественную сумятицу в умы пользователей — что покупать? Тем более что Intel подкинула еще одну загадку, предлагая Pentium и Pentium MMX (оба с тактовой частотой 200 МГц) практически по одной цене.
На самом деле переход к широкому применению MMX-технологии в практических задачах будет происходить все же не так быстро, как это могло показаться вначале. Как уже отмечалось выше, основная проблема состоит в создании соответствующего программного обеспечения. Многочисленные объявления о выпуске программ с «полной поддержкой MMX» не должны вводить в заблуждение: в них речь идет либо о рекламных приемах (технология-то поддерживается, только неясно, как она повышает эффективность программ и, вообще, нужна ли такая поддержка в этих задачах), либо о чисто демонстрационных или тестовых вариантах.
Кроме того, несмотря на расширяющуюся сферу мультимедиа, следует отметить, что в действительности она сегодня занимает лишь относительно небольшую часть нашей реальной жизни, а в современных массовых офисных задачах ее присутствие пока минимально. Поэтому появления ПО с эффективным использованием MMX-технологии следует ожидать в первую очередь в специализированных профессиональных приложениях. Совершенно обоснованным выглядит прогноз ряда производителей ПК о том, что в текущем году компьютеры с Pentium MMX будут пользоваться спросом в основном у профессионалов, а уже потом — у домашних пользователей.
Что же касается домашних пользователей, то здесь все зависит от финансовых возможностей: если у вас достаточно денег, то, конечно, лучше покупать Pentium MMX-200 (цены на них будут выше, чем на Pentium-200, хотя бы по маркетинговым причинам). Если вы ориентируетесь на средний уровень ПК, то тогда можно смело приобретать компьютер с Pentium-133. Но при этом лучше убедиться, что в нем стоит новая системная плата, позволяющая через год поставить Pentium MMX-200.
Андрей Колесов — к.т.н., независимый эксперт по компьютерным
технологиям. E-mail: akolesov@glasnet.ru
|
|
|
запятой), 486 = 220 команд + FP Pentium MMX =220 + FP + MMX |
История разработки Pentium MMX
Еще в 1992 г. ( год выпуска Pentium!) в израильском научно-исследовательском центре Intel группа компьютерной архитектуры под руководством Ури Вайсера начала предварительную проработку вопроса о расширении архитектуры x86 за счет дополнительных команд для обработки мультимедиа-данных.
Тогда этим занимались лишь около дюжины инженеров. Несколько позже они представили руководству компании свои предложения, после тщательного анализа которых в начале 1994 г. было принято решение одобрить проект и приступить к его реализации.
В марте прошлого года Intel официально сообщила о планах выпуска будущего процессора с кодовым названием P55C в четвертом квартале 1996 г. и представила разработчикам ПО его полные спецификации. Тогда же была объявлена специальная программа поддержки программистов, призванная стимулировать их участие в создании новых приложений с использованием технологии MMX. Начиная с лета 1996 г. опытные образцы процессоров стали передаваться для ознакомления и тестирования партнерам компании по производству ПК, а также фирмам-разработчикам ПО. Однако в августе компания неожиданно объявила о переносе срока выпуска P55C на начало 1997 г.
В чем причина задержки выпуска Pentium MMX
Официальное объяснение задержки с выходом нового процессора — желание создать достаточно большой товарный запас, который сразу бы обеспечил неограниченные поставки процессора производителям ПК. Действительно, говоря о своих планах начать производство Pentium MMX в 1996 г., представители компании всегда подчеркивали, что его поставки на первом этапе будут носить ограниченный характер.
Однако вполне можно предположить, что такая коррекция планов объясняется складывающейся конъюнктурой на рынке микропроцессоров для ПК. По крайней мере раньше Intel всегда спешила выйти на рынок, невзирая на ограниченные возможности поставок, характерные для начального периода производства любого продукта.
Летом же прошлого года стало отчетливо видно, что ее конкуренты как по семейству x86 (AMD и Cyrix), так и из стана PowerPC явно не успевают с массовым выпуском своей альтернативной продукции. В результате у компании появилась возможность не спешить с началом официального выпуска новых процессоров. Следует отметить, что одновременное присутствие на рынке моделей Pentium и Pentium MMX создает для пользователей непростую дилемму. Тогда, летом 1996 г., она звучала так: покупать ПК с обычным Pentium-166/200 сейчас или подождать несколько месяцев до выхода Pentium MMX? Таким образом, отодвинув сроки выпуска нового процессора, компания обеспечила продвижение появившейся незадолго до этого модели Pentium-200, в частности в четвертом квартале, на который традиционно приходится наибольший объем продаж года.
Кроме того, воспользовавшись паузой, Intel начала прошлым летом активную подготовку рынка прикладных программных средств к появлению мультимедийных процессоров, предложив разработчикам ПО новую большую программу информационной и технической поддержки. Конечно, нелишней была и возможность дополнительного широкого тестирования процессоров.
Еще одной причиной задержки могли стать и проблемы с организацией производства. Несмотря на то, что Intel всегда очень тщательно планировала расширение своих производственных мощностей (строительство одного современного завода по изготовлению кремниевых пластин требует 2-3 лет и 2-3 млрд. долл.), осенью прошлого года у компании возникли проблемы с поставками процессоров Pentium Pro 200. Из-за неудовлетворенного спроса цены на эти модели на вторичном рынке подскочили до 950 долл. (при цене производителя 525 долл.).
Сейчас процессоры Pentium MMX выпускаются заводами # 11 и 15, расположенными в штатах Нью-Мехико и Орегон. В ближайшем будущем должно начаться их производство на заводе # 12 в штате Аризона. Корпусирование процессоров производится в Малайзии, на Филиппинах и в штате Аризона.
Каким будет микропроцессор начала 2000 г.
В связи с отмечавшимся в конце 1996 г. юбилеем выпуска своего первого микропроцессора компания Intel поделилась с общественностью своим видением перспектив развития микропроцессорной технологии компании. В частности, было обнародовано мнение экспертов Intel о характеристиках ее микропроцессора в 2000 г., особенно интересное тем, что позволило увидеть изменения в прогнозах, сделанных в 1989 г. и 1996 г. (см.таблицу).
Современное состояние и прогноз развития микропроцессоров Intel
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
По данным уточненного прогноза с учетом сегодняшних реалий ожидается, что кристалл будет компактнее, а число транзисторов на нем меньше, чем это представлялось семь лет назад. Но показатели производительности микропроцессора будут существенно выше по сравнению с предполагаемыми ранее. В основном это будет достигнуто за счет значительного увеличения тактовой частоты (до 900 МГц вместо ранее предполагавшихся 250).
Как известно, следующая модель микропроцессора компании P7 (Merced) должна быть уже 64-разрядной. Ее появление ожидается в 1998 г., и очевидно, что именно она будет самым мощным изделием Intel в течение, по крайней мере, двух-трех лет. И скорее всего, принципиально новых шагов до конца этого тысячелетия в области развития микропроцессорной технологии сделано не будет.
Что касается общих тенденций развития микропроцессорных технологий, то, по мнению представителей Intel, они будут заключаться в следующем:
- — уменьшение минимальной ширины проводника на кристалле;
- — увеличение числа металлических слоев;
- — снижение напряжения питания (в современных моделях оно равно 2,9-3,3
В); - — усовершенствование микроархитектуры (суперскалярность, суперконвейерность,
увеличение внутренней кэш-памяти и пр.).