После ММХ


Введение

О том, что Advanced Micro Devices (AMD), Cyrix и Centaur Technology собираются независимо друг от друга расширить систему команд процессоров архитектуры х86, было официально объявлено на Microprocessor Forum в середине октября прошлого года, хотя слухи ходили уже давно. Компании анонсировали также и ряд других усовершенствований своих процессоров, однако новые расширения для работы с 3D-графикой привлекли наибольшее внимание. Компании планируют добавить от 12 до 30 команд в свои процессоры уже в 1998 году. Эти команды резко повысят производительность AMD K6, Cyrix 6x86MX и Centaur IDT WinChip при обработке чисел в формате с плавающей точкой одинарной точности (single-precision floating-point numbers), что крайне важно для ускорения работы с 3D-графикой. Они существенно отличаются от команд ММХ, работающих с целыми числами. Кстати, вопреки распространённому мнению, команды ММХ не ускоряют проведение геометрических преобразований — главную задачу 3D-графики.

Хотя команды похожи, компании не действовали сообща. Число и формат команд, а также способ использования регистров у них различны. В результате архитектура х86 будет "расширяться" тремя похожими, но различными путями. А что же Intel? Компания также планирует расширить систему команд в рамках ММХ2. По мнению аналитиков, это расширение появится в процессорах класса Pentium II (Katmai) в 1999 году. После его выхода конкуренты, для обеспечения полной совместимости с х86, почти наверняка включат команды ММХ2 в свои чипы, что может привести к ситуации, когда процессор содержит несколько команд, делающих одно и то же и лишь незначительно отличающихся кодом мнемоникой. Пока же конкуренты "оторвались" от Intel.

"Рассматривайте это как расширение ММХ для вычислений с плавающей точкой и 3D-графики",- советует Дуг Бёрд (Doug Beard), руководитель проекта (project manager) компании Cyrix.

"Здесь есть всё, что будет в ММХ2, только гораздо раньше",- заявляет Дана Крель (Dana Krelle), директор по маркетингу отделения процессоров компании AMD (marketing director for AMD's CPU group).

"Почему мы должны ограничивать наших пользователей в работе с 3D-графикой и заставлять их ждать Intel, когда мы можем сделать это сейчас?" — спрашивает Глен Генри (Glenn Henry), президент Centaur.

Когда дорогая фарфоровая ваза разбивается, её пытаются склеить. В данном случае в роли такого клея выступает библиотеки Direct3D фирмы Microsoft для Windows 95 и Windows NT. Хорошей новостью явилось то, что Microsoft модифицирует Direct3D с целью поддержки расширений, предлагаемых AMD, Cyrix и Centaur. Таким образом, стандарт Wintel PC вроде бы опять "склеили".

Direct3D представляет собой API уровня операционной системы, находящийся между приложением и "железом". Динамические библиотеки и драйвера устройств, входящие в Direct3D, позволяют программисту вызывать высокоуровневые функции работы с 3D-графикой, не беспокоясь о том, какое "железо" реально будет работать в системе. Программа может запросить Direct3D, содержит ли процессор акселератор 3D-графики. Далее hardware abstraction layer (HAL), содержащийся в Direct3D, транслирует вызовы API, содержащиеся в программе, в команды, распознаваемые процессором. Если какая-либо функция не может быть выполнена аппаратно, hardware emulation layer (HEL) использует стандартные команды х86 для программной эмуляции функции. Благодаря некоторым хитростям, заложенным в Direct3D, Microsoft не придётся тратить много времени для обеспечения поддержки новых расширений. Фактически, большая часть кода пишется самими разработчиками процессоров.

Тем не менее, склеенная ваза всё-таки хуже целой. Программисты, которые в погоне за быстродействием обходят Direct3D, вынуждены будут использовать ассемблер, поскольку компиляторы не поддерживают новые команды. Более того, для обеспечения полной совместимости программы должны будут на этапе выполнения опрашивать систему и вызвать соответствующую подпрограмму в зависимости от того, какой процессор установлен.

Проблемы возникают и с операционными системами, не содержащими Direct3D, то есть со всеми остальными, включая Windows 3.1, OS/2, Linux и другие версии Unix для процессоров х86. Проблемы также будут с программами, использующими другие библиотеки 3D-графики, например OpenGL, пока в них не будет включена поддержка новых расширений. На данный момент AMD, Cyrix и Centaur заявили, что их первоочередной целью является поддержка Direct3D.

AMD-3D

Компания AMD планирует встроить свое расширение AMD-3D в новый чип К6, выпуск которого планируется начать в первом квартале этого года. Предлагается добавить 24 команды, в основном для обработки чисел с плавающей точкой одинарной точности. AMD предлагает команду "умножение со сложением" (multiply-add или MADD) или "умножение с накоплением" (multiply-accumulate или MAC), аналогичную команде сигнального процессора. Эта команда перемножает два 32-битных числа с плавающей точкой и прибавляет результат к другому числу с плавающей точкой за одну операцию. Нынешние чипы х86 требуют для этого две операции. В прошлом году компания Silicon Graphics добавила похожую команду в процессор Mips R5000, что привело к существенному росту производительности рабочих станций серии Indy при работе с 3D-графикой. Для выполнения команд AMD-3D в процессор К6 будет добавлен новый функциональный узел, отделённый от узла вычислений с плавающей точкой. Компания заявляет, что узел будет содержать конвейер.

Команды AMD-3D будут использовать в качестве операндов 8 ММХ регистров, которые являются псевдонимами регистров с плавающей точкой и не требуют изменений в операционной системе (кроме изменений в Direct3D, о чём было сказано выше).

Centaur

Не успела компания Centaur выйти на рынок со своим первым процессором х86, как тут же убедила Microsoft включить своё расширение в Direct3D. Этот шаг ставит расширение от Centaur "на одну ногу" с расширением от AMD. Как и остальные, Centaur предлагает две дюжины новых команд, включая MADD/MAC. Однако компания предлагает кое-что ещё: новые регистры.

Чип компании Centaur будет содержать 30 доступных программисту новых регистров произвольного доступа. 22 из них — новые физические регистры процессора, а остальные 8 - псевдонимы регистров с плавающей точкой. Длина всех регистров — 80 бит — достаточна для хранения чисел с плавающей точкой повышенной точности (хотя длина чисел с плавающей точкой одинарной точности составляет 32 бита, некоторые команды могут создавать промежуточные результаты повышенной точности). Программист может ничего не знать об этих регистрах, если он пишет с использованием Direct3D.

По идее, новый набор регистров требует изменений в ОС, поскольку она должна в определённые моменты сохранять их состояние. Однако код Direct3D, использующий расширения, является нереентерабельной (nonreentrant) критической секцией (как, например, низкоуровневые драйвера устройств). Он "защищён" от прерываний. Поэтому у ОС не возникает необходимости сохранять состояние регистров и вообще знать что-либо о расширении. Таким образом, Direct3D — достаточно важная составляющая успеха новых расширений.

Cyrix Cayenne

Cyrix, как и AMD и Centaur, заявляет, что Microsoft включит поддержку их расширения в Direct3D. Это расширение не появится раньше, чем во второй половине 1998 года, то есть позже, чем у AMD и Centaur, но, скорее всего, всё-таки раньше, чем ММХ2. Компания планирует включить в свой процессор серии М2 под кодовым наименованием Cayenne 12 — 14 новых команд MMX-FP. Наиболее интересное отличие ММХ-FP состоит в том, что в нём нет команды MADD/MAC. Вместо этого процессор может выполнять две операции умножения за такт, при этом каждая из них способна помещать два 32-битных операнда в 64-битную мантиссу 80-битного FP-регистра. Компания утверждает, что с помощью "грамотного управления" порядком выполнения команд умножения и сложения удаётся достичь такой же производительности, как и при использовании команды MADD/MAC. Cyrix также предполагает добавить ряд команд для оптимизации параллелизма при вычислении координат вершин треугольников в 3D-графике и даже специальную команду сравнения блоков пикселов, используемую при компрессии/декомпрессии видео по алгоритму MPEG.

3D-графика: процессор или видеокарта?

Не стоит надеяться, что новые расширения системы команд х86 сделают ненужными видеокарты с 3D-ускорителями. На самом деле только очень дорогие видеокарты имеют встроенный ускоритель графических преобразований (например, ELSA Gloria-L с микросхемой процессора графических преобразований 3Dlabs Glint Delta+). Большинство же карт имеют ускорители только последних стадий обработки 3D-графики: преобразования 3-мерных координат треугольников в 2-мерные экранные координаты, наложения текстур и растеризации. Описанные расширения позволят ускорить работу таких плат, поскольку на данный момент карты могут отображать треугольники на экране быстрее, чем процессор может вычислить их координаты. Например, чип Nvidia RIVA 128, по заявлению директора по техническому маркетингу (technical marketing director) фирмы Nvidia Дейва Рида (Dave Reed), может отображать 1.5 миллиона типичных многоугольников в секунду, в то время как процессор Pentium II 300 MHz может вычислить в секунду координаты не более миллиона многоугольников, и никакой AGP тут не поможет. Доказательства этого факта можно увидеть хотя бы в нашем тесте PCI/AGP видеокарт.

Intel учится на ошибках?

Корпорация Intel завершила бета-тестирование системы команд процессора Katmai (то есть команд MMX2), и в настоящее время совместно с более чем пятьюдесятью (по данным Intel) фирмами-разработчиками компьютерных игр работает над оптимизацией их кода под использование 70 новых SIMD (Single Instructoin, Multiply Data) команд, работающих с плавающей точкой. Одновременно Intel совместно с Microsoft продвигают компилятор низкого уровня для новой системы команд — как раз то, чего не хватало в свое время MMX.

Доминирующим на рынке в 1999 году, по мнению ISV marketing manager for Intel's Microprocessor 6 division, Hillsboro, Ore (даже не решаюсь переводить — вдруг чего напутаю) Тауфик Ма (Taufic Ma), будет, естественно компьютер на базе чипсета 440ВХ с процессором Katmai (>400 Mhz) и видеокартой на базе чипа i740.

Правда, в 1996 году корпорация также проводила массированную компанию с целью побудить разработчиков игр оптимизировать свои продукты под расширение MMX, однако, даже Intel признает, что компания не достигла желаемого результата из-за отсутствия средств разработки. "MMX многому научил нас",- говорит Ма,- "у нас не было компилятора для ММХ, что доставляло массу неприятностей разработчикам, которым приходилось писать код вручную".

Компиляторы под Katmai, которые должны появиться в конце года, будут представлять собой plug-in к Microsoft Visual C++ suite. Как заявлено, компилятор будет обеспечивать почти такую же эффективность кода, как и ассемблер (!!!). Специальная утилита Vtune позволит использовать параллелизм SIMD-команд. Кстати, в Июле (наконец-то!!!), Intel планирует представить аналогичный компилятор для MMX.

Как заявляет Ма, Intel вложил в разработку Katmai в 3 раза больше ресурсов, чем в ММХ, в том числе и на создание средств разработки для производителей программного обеспечения. Среди компаний, вовлеченных в эту программу, Intel называет Westwood Studios, id Software, Microsoft, LucasArts Entertainment, Activision, Definition Six, Shiny Entertainment и Black Isle Studios. Ну что же, посмотрим, как эта "работа над ошибками" способствует продвижению нового процессора на фоне ужесточающейся конкцуренции.

Кстати, одновременно Intel представила пакет разработчика (software developers' kit) для процессора i740. По заявлениям компании, пакет позволяет проводить мониторинг распределения затрат на обработку 3D-графики между центральным и графическим процессорами, и, соответственно, оптимизировать код.

Что дальше

До настоящего момента конкуренты Intel только один раз пытались расширить систему команд х86. В 1995 году компания NexGen встроила несколько мультимедийных команд в прототип процессора Nx686. После этого компания была приобретена AMD, которая переделала этот чип в К6. Однако к тому времени Intel выпустила ММХ, и AMD с целью совместимости пожертвовала оригинальными командами.

Пока неясно, найдутся ли у Intel легальные способы борьбы с "отступниками". Скорее всего, корпорация будет убеждать разработчиков не обращать внимания на новые команды и ждать выхода ММХ2. Принятие ММХ2 в качестве стандарта действительно может облегчить жизнь разработчикам, и уж наверняка — компании Intel.

Однако программисты, не желающие ждать, могут использовать новые команды, например, для написания "хитовых" игр, что даст им годичное преимущество перед теми, кто верен Intel. Такое положение может привести и к тому, что на рынке повысится интерес к продукции конкурентов Intel.

За основу взята информация журнала BYTE и компаний Centaur Technology, AMD, Cyrix и Intel



Дополнительно

Нашли ошибку на сайте? Выделите текст и нажмите Shift+Enter

Код для блога бета

Выделите HTML-код в поле, скопируйте его в буфер и вставьте в свой блог.