<<<предыдущий список следующий>>>

Это - копия документа, находившегося на http://dz.ru. Авторские права, если не указано иначе, принадлежат Дмитрию Завалишину и/или Евгении Завалишиной. Все изменения, внесенные мной, находятся в этой рамочке.Пожалуйста, прочитайте disclaimer.


27 октября 1998 года

Занимательную мне тут ссылку прислали. Зацените: http://www.dz-online.de/

Компания Texas Instruments объявила о разработке технологии производства микросхем с разрешением в 0.1 микрона. До сих пор рекордом было 0.18, да и это разрешение далеко не всем компаниям по зубам.

Рабочее напряжение для микросхем, сделанных по этой технологии - всего один вольт, что весьма удачно - при тактовой частоте в один гигагерц энергопотребление окажется достаточно разумным.

По всей видимости, переход на медные проводники для 0.1-микронных микросхем будет неизбежно, так как на сверхвысоких частотах алюминий уже не дает нужных временных характеристик.

Аналитики IDC утверждают, что к 2001-му году всякая шелупонь типа карманных машинок, приставок к телевизорам, игровых машинок и видеотелефонов обойдет по числу продаж обычные компьютеры. Правда, по деньгам не обойдет - в среднем, компьютер дороже.

Суммарно по всему миру за 98-й год мелочевки должно быть продано на 2.2 миллиарда долларов. В 2002-м - уже на 15 миллиардов. Хороший кусочек. Не странно, что Микрософт так резко занялся WinCE.

Любопытно, как оно выйдет с драчкой 3DNow! против KNI. Оба расширения традиционной системы команд предназначены для того, чтобы облегчить написание трехмерных графических программ (а заодно, может быть, и других процессороемких вещей типа обработки и синтеза звука) и, фактически, должны сделать то, что не смог сделать MMX. Интересно, что MMX "промазал" мимо рынка примерно так же, как S3 Virge. Рынок ускакал вперед, пока эти вещи разрабатывались, и оказалось, что такие команды, как в MMX и такая трехмерная графика, как в Virge, никому особо не нужны.

И если с заменой Virge и аналогичных графических акселераторов более адекватным потребностям товаром проблем не возникло, то разумную замену MMX все еще разрабатывают. Конкуренты Интела делают одно, сам Интел - другое, и оба надеются с помощью нового трехмерного моторчика в процессоре оторваться от конкурента и оставить его с носом.

У кого же шансов больше? У того, кто сделает моторчик достаточно быстрый, в обращении удобный и дешевый.

Что такое "удобный" и что такое "быстрый". Ключевой задачей считается трехмерка. Причем не рендеринг, не натягивание текстур и разборки на тему "видимо-невидимо". Это делает акселератор, и нет причин оптимизировать под такие задачи центральный процессор. Основная работа ЦП в трехмерке - геометрия, умение вертеть и двигать миром. Ибо это только так кажется, что игрок идет по уровню. На самом деле это уровень вертится и двигается вокруг игрока, и работы процессору тут изрядно.

Одно хорошо - работа эта относительно хорошо распараллеливается, бъется на группы умножений, сложений, вычислений синусов и косинусов, и все - пачками, пачками.

В принципе, KNI и 3DNow! довольно похожи. Сегодня я напишу про 3DNow!, поскольку по ней информация вполне доступна, а как только появится подробная информация про Katmai, и про него напишу. Однако в процессе описания 3DNow! некоторые сравнения с KNI, где возможно, будут сделаны. Увы, на том уровне точности, который позволяет имеющаяся информация.

Регистры

Регистры, которыми пользуется в работе 3DNow!, отображаются на стандартный набор регистров плавающей арифметики. Это - довольно неудачное решение, хотя причины, которые к нему привели, очевидны. При переключении контекстов ОС должна сохранять состояние регистров процессора, и если добавить новые, то кто ж их будет сохранять и как гарантировать, что сохранение делается системой. AMD решил, что лучше пожертвовать производительностью ради совместимости - смалодушничал. В итоге программисту прихоится выбирать - 3DNow!, плавающая точка или MMX. Регистры общие на троих.

Решение Интела более громоздко, но потенциально грозит большей производительностью. Тут введен новый режим процессора, требующий поддержки от ОС - по всей видимости и в части сохранения контекстов при переключении задач. И есть, что сохранять - KNI оперирует на восьми 128-битных (по четыре 32-битных в каждом) регистрах. Поддержка нового режима будет выпущена в виде патча для Win98 и в составе NT 5. В этом режиме можно будет использовать и KNI и что-нибудь одно из MMX и обычных операций с плавающей точкой. Странно, что Intel не пошел дальше и не разнес в новом режиме еще и MMX-регистры с регистрами плавающей точки. Вероятно, счел, что не окупится. Но было бы красиво. :-)

Исполнение

Инструкции 3DNow! делятся на категории, а процессор имеет два самостоятельных блока, каждый из которых может исполнять одну инструкцию. Если подряд идущие инструкции принадлежат разным категориям и работают с регистрами определенным образом, их исполнение начнется одновременно. Причем каждая из них обработает сразу два 32-битных числа с плавающей точкой. Таким образом, максимальная производительность - 4 операции с плавающей точкой за такт, при условии, что код правильно сгенерирован и не нарушает ограничений процессора. Например, 40 пар умножений потребуют не 21 такт, а 41 - каждое умножение будет начинаться на такт позже следующего и занимать два такта. А вот 20 пар сложений и 20 пар умножений пройдут полностью параллельно, если правильно распланировать регистры.

У Katmai, насколько я понимаю, каждая KNI-команда будет обрабатывать 4 операнда оптом. С одной стороны, это хорошо, так как позволяет выполнить те самые 40 пар умножений за 20 команд (тактировку я пока не знаю, но, вероятно, это будут те же 20-21 такт). Но. Нужно еще набрать столько умножений. Если же потребуется выполнить 20+20 пар умножений и сложений, причем строго через одно, то мощь параллельного процессора оказывается невостребованной. Это - старая-старая беда. Векторные ЭВМ, что на нее первыми напоролись, боюсь, чуть ли не ровесники мне :-).

Короче, я не готов вынести из имеющейся информации вывод, что быстрее. Два по два или один по четыре. Сильно зависит от кода.

Команды

Набор команд 3DNow! содержит несколько любопытных вещей. Например, команду для быстрого перехода из режима плавающей точки в MMX и обратно. Функционально она более ограничена, нежели стандартная (может применяться, только если содержимое регистров более не нужно), но занимает меньше времени. А ведь низкая скорость переключения между MMX и FP режимами считалась одним из существенных минусов MMX-технологии.

Команда PAVGUSB обрабатывает сразу шестнадцать байтовых операндов - одна из немногих целочисленных команд 3DNow!, кстати. Считает 8 средних арифметических и пригодна для использования в декодировании MPEG-видео.

Но, пожалуй, самая интересная команда набора - это PREFETCH. Команда эта инициирует (но не ожидает!) загрузку из памяти одной линейки кеша данных - в настоящее время это 32 байта. Если загрузка невозможна, PREFETCH просто игнорируется.

На практике PREFETCH позволяет программисту заранее сообщать процессору, какие данные скоро потребуются. Фича сильно напоминает RISC-архитектуру, где все команды делятся на загрузки-выгрузки и операции над регистрами. Первые запускаются загодя и идут асинхронно. Вторые работают на уже готовеньких данных. Так и тут. Плохо только то, что PREFETCH требует двойного указания адреса, что увеличивает объем кода и, соответственно, нагрузку на шину. Код-то тоже в процессор грузить надо.

В состав KNI входит нечто подобное, но, опять-таки, деталей я не знаю. Жаль.

Остальные инструкции из набора 3DNow! достаточно тривиальны - умножение, сложение, вычитание и некоторый комплект для быстрых вычислений квадратного корня и делений.

У нас - очередной опрос. :-)

Самая моя процессороемкая задача:

  и мой процессор для нее

Вторая по потребности в процессорной мощности задача:

  и мой процессор для нее

Я предпочитаю покупать:

процессор с максимально возможным быстродействием, на какое хватит денег, и не задумываться о распределении нагрузки.

такой процессор, чтобы он не простаивал и был как можно больше загружен моей задачей. В идеале - чтобы считал круглые сутки.

процессор, более мощный, чем минимально необходим, но из среднего ценового диапазона.

Спасибо за участие!

NB!

К сожалению, старый добрый phantom.ru исторически принадлежал не мне, а АО Релком. АО Релком решило, видимо, не возобновлять поддержку этого домена и сейчас он не работает. В любом случае, восстановить его в краткое время я не смогу, так что прошу всех, кто ведет со мной переписку, обратить на сей прискорбный факт внимание и пользоваться адресом dz@dz.ru для написания писем мне, jane@dz.ru - Евгении и we@dz.ru - нам. :-)

На сайте Золотой Кляксы - обновление. Я убедил-таки хозяина Кляксы, Александра Ласкина, в необходимости сменить дизайн, и, ура, это случилось. :-) Изначально предполагалось, что дизайн Кляксы будет сделан бесплатно студией Корвелл, но Александр передумал и нашел другого автора. Что ж, хозяин - барин. Поздравляем с новым внешним видом. :-)

Кстати, именно студия Корвелл сделала новое оформление нашей Энциклопедии Цифрового Фото, за что мы ее благодарим и всех приглашаем заценить, как оно теперь выглядит. Нам нравится.