Андрей Колесов
В 1999 г. одним из ключевых направлений развития процессоров Intel семейства Pentium II станет переход на расширенную систему команд Katmai. Это название соответствует кодовому имени первого процессора новой архитектурной линии, который должен появиться в I квартале следующего года. Модификация системы команд процессоров x86 выполняется всего в третий раз за двадцатилетнюю историю существования этого семейства, и уже это указывает на значимость предстоящего события, которое было в центре внимания прошедшей в сентябре конференции Intel Developer Forum (см. PC Week/RE, № 40/98, с. 7)
Повышенное внимание к переходу на новую систему команд со стороны Intel определяется в значительной степени тем, что успех модифицированной архитектуры на рынке в основном зависит от внешних факторов - поддержки сообщества разработчиков ПО. (Смену поколений процессоров при модификации разъема корпорация может поддержать сама, выпуская собственные чипсеты и системные платы.) В свою очередь, особый интерес компьютерной индустрии к этому переходу объясняется тем, что в прошедшем мае компания AMD реализовала собственный набор команд 3DNow! в качестве дополнения к существующему с 1997 г. стандарту де-факто. Таким образом, учитывая различия между расширениями 3DNow! и Katmai, сегодня можно говорить о реальной перспективе разделения некогда единого семейства x86 на две несовместимые на программном уровне архитектурные линии.
Дополнительные 70 команд архитектуры Katmai делятся на три группы инструкций: новый набор команд SIMD-FP, дополнительные MMX-команды и команды оптимизации управления потоковым обменом данными с памятью.
Появление SIMD-FP-команд (Single Instruction Multiple Data - обработка нескольких порций информации одной командой, FP - данные с плавающей запятой) связано с необходимостью повышения производительности при решении задач трехмерной графики. В целом SIMD-FP является механизмом параллельной обработки информации, аналогичным технологии MMX (но она работает только с целочисленными данными). В Katmai набор SIMD-FP полностью включает функциональность 3DNow!.
Принципиальное отличие Katmai от MMX и 3DNow! заключается в оснащении его дополнительным блоком из восьми 128-разрядных регистров для SIMD-FP-команд, что позволяет параллельно обрабатывать четыре вещественных числа. Напомним, что MMX-инструкции (а также 3DNow!) используют давно существующий набор 64-разрядных регистров, где хранятся данные для обычных FP-команд. В результате такого совместного использования ресурсов при смешанном применении MMX- и FP-команд возникают известные проблемы, что, в частности, требует MMX-программирования только на уровне Ассемблера.
Отдельный буфер памяти (128 x 8) байт обеспечивает возможность совершенно независимой работы SIMD-FP и всех других команд процессора, что снижает затраты времени на переключение между инструкциями разного типа и позволяет использовать языки высокого уровня при программировании. Интересным новшеством SIND-FP можно считать возможность автоматического отслеживания ситуаций с исчезновением порядка чисел (автоматическое обнуление очень малых величин), что часто бывает при работе с 3D-графикой.
Новые мультимедиа-команды лишь расширяют состав уже существующего набора MMX-инструкций, в котором теперь появились дополнительные параллельные операции для двух аргументов: вычисление минимума, максимума, среднего значения, модуля разности и др.
Также интересен в Katmai новый набор команд, который позволит оптимизировать процесс обмена данными между процессором и памятью на программном уровне (Memory Streaming Architecture, SMA - архитектура потокового обмена данными с памятью).
Системная шина P6 изначально могла передавать за один раз четыре (с возможностью расширения в будущем до восьми) отдельные порции данных (bucket), что и лежало в основе конвейерной обработки информации. Однако ранее этим процессом автоматически управлял механизм “арбитра”, алгоритм работы которого был не всегда оптимален для ряда специфических алгоритмов. Теперь же программист получил возможность частично взять функции “арбитра” на себя и задавать такую последовательность формирования блоков данных, какая наилучшим образом подходит для его задачи.
Вторым элементом MSA является увеличение внешних буферов при выводе данных из процессора во внешние устройства. По мнению Intel, это приведет к увеличению максимальной пропускной способности шины при этих операциях на 20%, что очень важно, поскольку уже появились высокоскоростные внешние разъемы AGP4 и 1394.
Третий компонент MSA - команды выборки с упреждением (prefetching) и потоковой записи данных (streaming store). Особенность этих инструкций в том, что сам программист может задать режим сохранения или блокировки записи информации в кэш-память. До настоящего времени управление кэш-памятью было фактически ограничено заданием на уровне установок BIOS: сохранение при чтении, сохранение при выводе, блокировка использования кэш-памяти.
Теперь разработчик ПО может сделать предварительную запись блока данных из ОЗУ в кэш-память или выполнить обмен информацией между ОЗУ и процессором без ее сохранения в кэш-памяти, обращение к которой требует временных затрат. Последний режим может быть полезен при обмене данными, используемыми в разовом режиме, например при простой операции копирования элементов одного массива в другой.
В заключение следует отметить, что появление в Katmai двух новых архитектурных расширений - SIMD-FP/MMX и SMA - не случайно. Как было показано в ряде докладов на конференции IDF, эффект от программного управления обмена данными может быть особенно высоким именно при решении специфических мультимедийных задач и обработке 3D-графики с использованием технологий SIMD-FP и MMX.
Развитие системы команд процессоров архитектуры Intel