Микроархитектура К6
Страсти по производительности
Производственный план
Некоторые сравнительные характеристики К6 и Pentium Pro

Честно говоря, после выпуска компанией Intel микропроцессора Pentium Pro (в дальнейшем - Pentium Pro) я решил, что AMD теперь останется далеко позади. То, чего AMD смогла добиться в своем новом процессоре К6, говорит об умении "держать удар и давать сдачи". С выпуском К6 компания впервые совершила попытку обойти Intel, в том числе по производительности. И в одном, по крайней мере формально, опередила, представив его в апреле, до официального объявления о начале поставок Pentium II.

Микропроцессор Pentium II можно, в сущности, охарактеризовать как Pentium Pro c расширениями MMX. Процессор К6 содержит аналогичные расширения. Таким образом, если Intel представляет два различных высокопроизводительных процессора - Pentium Pro и Pentium II, то AMD предлагает К6 как единую универсальную альтернативу.

Как и предыдущие модели процессоров AMD, процессор К6 двоично совместим с Intel Architecture (IA), и поэтому на них работают те же операционные системы, что и на процессорах х86, включая Windows 95 и NT. Реализацию IA в своих продуктах AMD называет микроархитектурой. Чтобы понять, почему К6 может обгонять Pentium и Pentium Pro по производительности, следует изучить его микроархитектуру. Только сделав это, можно судить о том, действительно ли К6 быстрее микропроцессоров Intel.

Микроархитектура К6

Многие идеи этой микроархитектуры были заложены еще в проекте микропроцессора Nx686, который разрабатывала приобретенная AMD компания NexGEN. Уже тогда NexGEN грозилась обойти по производительности и Pentium, и Pentium Pro. C другой стороны, К6 является "наследником" AMD K5. Особенности всех этих процессоров связаны с использованием микроархитектуры RISC86.

Причина, заставившая обратиться к RISC86, - та же, что и причина появления микроопераций в Pentium Pro: неэффективность непосредственной реализации CISC-архитектуры IA в высокопроизводительных микропроцессорах.

Оказывается "выгоднее" разложить CISC-команды IA в команды некоего "RISC-ядра" (микрооперации в РРго, R-операции RISC86 в К5 и К6) и непосредственно реализовывать уже RISC-команды. Любопытную информацию удалось почерпнуть в одном из писем на конференции comp.arch: со ссылкой на специалистов AMD сообщалось, что около двух третей площади К6 "съедают" функции, связанные с "эмуляцией" IA, и только одна треть задействована собственно под выполнение R-операций.

RISC86 - это развитая суперскалярная RISC-архитектура с особенностями, характерными для микропроцессоров высшего уровня производительности (переименование регистров, внеочередное и спекулятивное выполнение команд и т. д.).

Позволим себе напомнить читателю значение некоторых терминов. Суперскалярность - это способность выполнять одновременно несколько команд за такт (в К6 - до 6); внеочередное выполнение означает выполнение команд не обязательно в той последовательности, в какой они встречаются в коде программы; спекулятивное выполнение означает выполнение команды, расположенной в коде программы после условного перехода в той его (кода) ветви, которая предсказана аппаратурой. Спекулятивным оно называется потому, что предсказание может быть неверным, и тогда команду выполняли зря.

Переименование регистров помогает "развязать" некоторые проблемы, возникающие из-за наличия взаимозависимостей между командами. Они могут существенно понизить производительность при внеочередном выполнении команд. При использовании техники переименования регистров речь идет о двух наборах регистров - логических, с которыми работает программист, и физических, недоступных ему. Физических регистров больше, чем логических. Реально команды работают с физическими регистрами. Логические регистры отображаются в физические с помощью так называемых таблиц отображения. Если необходимо спекулятивно выполнить команду, то она может заменить содержимое какого-либо регистра. Но если предсказание перехода было неверным, может понадобиться восстановить старое содержимое регистра. При использовании переименования регистров старое значение регистра будет лежать в одном физическом регистре, результат спекулятивного выполнения команды - в другом, а отображение в него логического регистра произойдет только когда команда перехода будет реально выполнена в предсказанную ветвь программы. В К6 имеется 48 физических регистров и 24 логических (16 рабочих плюс регистры EAX, EBX, ECX, EDX, EBP, ESP, ESI и EDI). Для сравнения, RISC-микропроцессор SGI R10000 имеет 32 логических и 64 физических регистров.

Основными исполнительными блоками микроархитектуры К6 являются параллельные дешифраторы, планировщик R-операций и семь функциональных исполнительных устройств (ФИУ). Все эти блоки представляют собой шестиступенчатый конвейер.

Кэш-память первого уровня в К6 включает двухканальные частично-ассоциативные кэши команд и данных емкостью по 32 Кбайт каждый, что является рекордно большой величиной среди всех процессоров архитектуры x86. Длина строки кэша составляет 32 байта. В случае попадания в кэш из всей строки кэша первым в него помещается квадрослово, содержащее необходимые данные/команду. Это уменьшает задержки из-за непопадания в кэш. Кэш команд первого уровня содержит буфер TLB емкостью 64 строки, а кэш данных - TLB емкостью 128 строк. Кроме того, имеется блок предварительного декодирования команд, из которого и наполняется кэш команд. В кэше используется режим обратной записи, но можно включать режим сквозной записи или вовсе отключить кэширование.

Команды х86 выбираются из кэша команд или кэша адресов переходов - до 16 байт за такт - и попадают в буфер команд, а из него - в дешифраторы. До двух команд IA за такт может быть преобразовано в R-операции в параллельных дешифраторах. Их всего четыре: два коротких, длинный и векторный. В коротких дешифраторах обрабатываются команды длиной до 7 байт, в длинных - до 11 байт. Остальные команды преобразуются векторным дешифратором, который выбирает целые последовательности R-операций из памяти типа ROM, расположенной на кристалле. Короткие дешифраторы выдают последовательность длиной до 2 R-операций на х86-команду, а длинные - до 4 R-операций. Всего дешифраторы могут выдавать до 4 R-операций за такт, направляя их в так называемый буфер планировщика емкостью в 24 R-команды, что эквивалентно в среднем 6-12 командам х86.

Из этого буфера готовые к выполнению команды извлекаются устройством управления командами и направляются в ФИУ. Порядок выборки может не соответствовать исходной последовательности кодов. Аналогичный буфер IRB в микропроцессорах HP PA-8000 имеет емкость в 56 строк, а в Pentium Pro - 40 строк. По утверждению специалистов Intel, он позволяет просматривать поток команд на 20-30 команд вперед. Устройство управления может планировать на выполнение в ФИУ до 6 R-операций и "отзывать" из буфера до 4 завершенных R-операций за такт.

Набор ФИУ включает 2-х стадийные блоки загрузки регистров/ записи в оперативную память, 2 целочисленных ФИУ (аналогично X- и Y-устройствам в Pentium), специальное ММХ-устройство и устройство выполнения переходов. Большинство ФИУ являются однотактными; исключения - целочисленное умножение (требует 2-3 такта), операции с плавающей запятой (2 такта). Короткие конвейеры ФИУ - очевидное преимущество К6.

В К6 используется двухуровневая адаптивная система динамического предсказания ветвлений, использующая очень большую таблицу истории ветвлений - на 8192 строки. BHT не содержит предсказанных адресов; они вычисляются на лету при декодировании команды. Кроме того, имеется кэш адресатов ветвлений, хранящий первые 16 байт соответствующих команд. Как утверждают в AMD, вероятность правильного предсказания перехода в К6 превышает 95%.

Страсти по производительности

Сотрудники AMD уверяют, что К6 имеет наилучшую производительность при работе как с 16-, так и с 32-разрядными программами. По мнению представителей фирмы, К6 соперничает по производительности с Pentium Pro в Windows NT и значительно опережает Pentium Pro при работе с Windows 95. Анализ микроархитектуры К6 позволяет предположить, что эти утверждения небезосновательны.

Процесор K6 отличает от Pentium Pro, в частности, больший кэш второго уровня, более эффективное предсказание ветвлений, большее количество ФИУ, более короткие конвейеры и большее количество команд, планируемых к выполнению за такт. В Pentium Pro выполнение 16-разрядных приложений замедлено из-за отсутствия таблицы дескрипторов сегментов, имеющейся в Pentium; с другой стороны, в Pentium Pro больше буфер типа IRB, что позволяет поддерживать в реальном потоке команд большее количество одновременно выполняемых за такт микроопераций. Однако Pentium Pro может отзывать за такт до 3 микроопераций против 4 R-операций в К6. В К6 двухканальный частично-ассоциативный кэш данных, в Pentium Pro же этот кэш имеет 4 банка, что несколько повышает вероятность попадания в кэш. Кроме того, Pentium Pro имеет встроенное управление кэшем второго уровня, который располагается на собственной, а не процессорной шине и потому не нагружает последнюю.

Понятно, что только реальные тесты могут дать ответ об уровне производительности. К сожалению, применяемые оценки Winbench 97 и Winstone 97, преимуществом которых является приближенность к реальным приложениям, допускают возможность различной интерпретации. Дело в том, что они меряют производительность не процессора, а ПК, и их результаты сильно зависят не только от особенностей материнской платы, но и от установленных адаптеров, внешних устройств и т. д.

Увы, изучая данные многих тестов, хочется вслед за Станиславским воскликнуть "не верю!". Желательно проводить их с одним ПК, на одной материнской плате, меняя только процессор. Да и вообще я несомненно предпочел бы начинать сопоставление с рейтингов SPECint95/fp95.

Производственный план

Кристаллы К6 содержат 8,8 млн. транзисторов, построены по технологии 0,35 мкм и имеют площадь всего 162 мм2. Они будут выпускаться на Fab25 и, возможно, на Fab30 в Дрездене. В настоящее время выпускаются К6 с частотами 200 и 233 МГц; в планах - 266 МГц к концу года и 300 МГц, а также переход к технологии 0,25 мкм. Применение в К6 шины Socket 7, такой же, как в Pentium, позволяет легко усовершенствовать конструкцию Pentium-несущих материнских плат (доработки могут касаться уровней напряжения и модернизации BIOS) или использовать некоторые из уже существующих.

Ведущие производители ПК пока осторожничают, не объявляя об использовании К6. Одними из первых о поставках компьютеров на базе К6 объявили Digital и Fujitsu-ICL, поговаривает о планах Compaq. Как бы то ни было, новый процессор с традиционно для AMD хорошим соотношением стоимость/производительность позволяет фирме претендовать на часть столь аппетитного пирога, принадлежащего Intel.


Михаил Кузьминский - зав. отделом Института органической химии РАН. С ним можно связаться по телефону (095) 135-6388.

По приводимым AMD результатам тестов Winstone 97, процессор К6 немного отстает от Pentium Pro в Windows NT, и заметно опережает в Windows 95. В этих тестах с К6 использовался кэш второго уровня емкостью 512 Кбайт, с Pentium Pro - 256 Кбайт. Во всех тестах К6 опережал Pentium/MMX.

Помимо этого, было предпринято также независимое сопоставление производительности 200-мегагерцевых процессоров К6, Pentium, Pentium/MMX, Pentium II и Pentium Pro, а также 233-мегагерцевых К6, Pentium II и Pentium Pro (http://www.x86.org/digest/May97/Feature01.html), организаторы которого стремились обеспечить максимально равные условия. Сопоставление включало тесты Winbench 97 и Winstone 97. Естественно, речь идет о "неофициальных" Pentium II и Pentium Pro/233. По этим данным, на большинстве измерений при равной тактовой частоте Pentium Pro оказался быстрее всех, а Pentium II обычно ему немного уступал. К6 тоже показал хорошие результаты, часто оказываясь на первом месте в 16-разрядных тестах.

Скорее всего, Pentium II в окончательной версии в состоянии показать более высокую производительность.

Вообще, корректное сопоставление производительности - вещь непростая. Например, цитируемые результаты на этом Web-сервере за майские праздники успели смениться: была обнаружена некорректность первых результатов.


Некоторые сравнительные характеристики К6 и Pentium Pro

Характеристика
AMD K6
Intel Pentium Pro
Кэш команд первого уровня: размер/число банков
32 Кбайт/2
8 Кбайт/2
Кэш данных второго уровня размер/число банков
32 Кбайт/2
8 Кбайт/4
Число строк BHT
8192
512
Вероятность верного предсказания перехода
95%
90%
Число дешифраторов
2 коротких, 1 длинный, 1 векторный
2 простых, 1 сложный
Число генерируемых ими RISC-команд
4
6
Число выполняемых за такт команд
до 6 (до 4 отзывает)
до 5 (до 3 отзывает)
Число ФИУ
7
5
Длина конвейеров ФИУ
2
5-7
Размер буфера готовых к выполнению команд
24
40
Частота процессорной шины (ПШ), МГц
66
66
Пиковая пропускная способность ПШ, Мбайт/с
528
528