Конвеер Р4

1999 год стал не слишком удачным годом для Intel. И Direct RDRAM
был воспринят индустрией без особого энтузиазма, и VIA более чем удачно сыграла
сосвоим Apollo Pro133/133A. Что касается процессоров, то не все было гладко и
здесь. AMD, наконец, смогла полностью использовать весь потенциал своихинженеров
и предложить процессор, выводящий ее из рыночной ниши производителя недорогих
процессоров уровня Low-End и чуть выше. Более того, ее Athlon,вышедший на
полгода позже Pentium III, оказался весьма и весьма перспективным процессором в
плане роста тактовой частоты. Предположительно, в конце 2000 годапроцессоры из
этой линейки должны достигнуть уровня порядка 1.4 ГГц. И это в то время, когда
последнее детище Intel, вышедшее этой осенью - Coppermine,оказалось куда менее
разгоняемым и к концу года, предположительно, должно достигнуть скорости около
лишь 1 ГГц. Что должен был сделать в такой ситуации Intel? Наверное,
ускорить выход своего следующего x86 ядра, последнего IA32 ядра для
пользователей -Willamette. Первоначально, срок выхода процессоров на этом ядре
колебался где-то между концом 2000 года и началом 2001. Соответственно, первое
появлениеобразцов чипа ожидалось где-то ближе к лету. И вот, в январе неожиданно
выясняется, что Intel уже получил на руки первый чип, а в апреле
компаниянамерена начать поставку образцов своим особо приближенным партнерам.
Тем временем приближался февраль - месяц двух крупных событий в мире
процессоров, конференции ISSCC и форума разработчиков Intel - IDF. Одним изсамых
ожидаемых событий ISSCC была демонстрация 1 ГГц Willamette. Однако, ничего
подобного не произошло - Intel продемонстрировал там всего лишь 1 ГГцCoppermine,
опять уступив первенство AMD с ее1.1 ГГц Athlon. Но зато как он отыгрался на
IDF! Там компания, опять совершенно неожиданно, продемонстрировалаWillamette,
работающий на частоте 1.5 ГГц. Впечатляет, что и говорить. Интересно, изменится
ли картина, если посмотреть на нее более пристально? Willamette должен
стать первой за долгие годы серьезной переделкой архитектуры P6. Пожалуй, за
последние пять лет, с момента выхода Pentium Pro, вэтой области не происходило
ничего более значительного: асимметричное ядро, с блоками, работающими на
различных скоростях, значительно улучшенная версиясуперскалярного механизма
исполнения инструкций, новый кэш, отслеживающий порядок выполнения инструкций,
переработанные блоки операций с мультимедиаданными и числами с плавающей
запятой, огромный набор новых инструкций на все случаи жизни, совершенно новая
100 МГц шина, передающая по 4 пакета данных за такт,что дает нам результирующую
частоту 400 МГц, конвейер выполнения инструкций из 20 шагов... Хватит? А
теперь попробуем пройтись по пунктам. И начнем с того, что собственно позволило
новому процессору Intel достичь столь высокой тактовой частоты -конвейера
выполнения инструкций. Для начала учтем, один общепринятый факт - чем длиннее
конвейер, тем легче наращивать тактовую частоту, но тем меньшепроизводительности
получается на каждый полученный мегагерц. И наоборот. Почему так? Потому что,
чем на большее количество стадий рассчитан конвейер, темменьше работы приходится
на каждый отдельный такт, тем быстрее этот самый такт выполняется. Но! Допустим,
у нас имеется простейший блок из нескольких,связанных друг с другом
операций: То есть, операция 1
будет находиться в кэше инструкций столько времени,сколько понадобится для
выполнения операции 2. А она будет выполняться тем больше тактов, чем длиннее
конвейер. А кстати, какой длины он у сегодняшнихпроцессоров? Pentium III имеет
конвейер длиной 12 (17 стадий FPU), Athlon - 10 стадий (15 стадий FPU), Alpha -
7 стадий (10 стадий FPU). Как видим наосновании этих данных, Willamette является
абсолютным чемпионом по длине конвейера, то есть, имеет самое меньшее время
выполнения такта, позволяющеедостичь максимальной тактовой частоты, но и самые
большие задержки для связанных друг с другом операций (операции 2 придется ждать
20 тактов, пока невыполнится до конца операция 1). Впрочем, не все так
просто. Во первых, в буфере всегда будет находиться некоторое количество
инструкций, не требующих знания результата выполненияпредыдущих (простейший
пример: A=1+2). Их тоже можно начинать выполнять во время выполнения операции 1
(в сегодняшних процессорах находится несколькоисполнительных модулей, умеющих
работать параллельно), чтобы не было простоя во время ожидания, пока та пройдет
весь конвейер и можно будет приступить квыполнению операции 2. Другой
вопрос, что чем длиннее конвейер (и, соответственно, время выполнения
инструкций), тем меньше вероятность, что в буфере удастся найтидостаточно таких
независимых инструкций, для того, чтобы полностью загрузить исполнительные
модули во время ее выполнения операции 1. И здесь немаловажнуюроль имеет объем
этого буфера. Для информации - у Pentium III он имеет объем 40 микроопераций,
(одна x86 инструкция в среднем равна примерно полуторамикрооперациям). У
Willamette его объем, по утверждению Intel, должен значительно возрасти,
результат очевиден. (Кстати, о кэше. Предполагаемый объем кэша первого
уровня Willamette - 256 Кбайт, в 8 (!) раз больше, чем у Pentium III и в два
раза больше, чем уAthlon. Объем кэша второго уровня неизвестен, но
предполагается, что он будет менее 1 Мбайт - 512 Кбайт?). Во вторых, в
действие вступает алгоритм предсказания переходов - чем длиннее конвейер, тем
более важным становится предсказание того, выполнениекакой инструкции
понадобится, задолго до самого процесса ее выполнения. И, естественно, ошибка на
этой стадии - выбор не той ветви, по которой пойдетпроцесс выполнения программы,
будет весьма и весьма сказываться на производительности процессора. И она будет
тем более критична, чем длиннееконвейер - одна ошибка в выборе исполняемых
операций в самом начале, и пока досчитается весь конвейер, и выяснится, что
считалось совсем не то... Intelпообещал в Willamette значительно повысить
точность процесса предсказания переходов, скомбинировав все доступные на
сегодня схемыпредсказаний . По некоторым сведениям, эффективность этого
алгоритма в Willamette достигла 95 процентов. Одним из инструментов
улучшения производительности в этой области, станет одна новинка - кэш с
упорядочиванием инструкций. Его задачей будетявляться хранение инструкций в том
порядке, в каком они исполняются. То есть, если первая инструкция, находящаяся
по адресу 100, выполняет переход на вторуюинструкцию, находящуюся где-то по
адресу, ну, скажем, 200, то в этом кэше вторая инструкция будет находиться
именно в том порядке, как она исполняется -сразу непосредственно за первой, и
т.д. В результате мы избавляемся от одного из скользких мест, где мог ошибиться
алгоритм предсказания переходов. Еще один такой инструмент - Advanced
Dynamic Execution. Так Intel называет улучшенную версию механизма
суперскалярного внеочередного выполненияинструкций, когда процессор жонглирует
инструкциями, нарушая их естественную последовательность, с целью более плотной
загрузки исполнительных модулей -этот пункт тоже относится к издержкам
применения длинного конвейера и призван минимизировать связанное с ним
увеличение задержек выполнения инструкций. Это все, что касается
конвейера Willamette. Этот фактор является весьма важным в определении
производительности процессора, но не менее важным являетсяи производительность
модулей, непосредственно выполняющих те или иные операции - с целыми числами, с
числами с плавающей запятой, со специфическими данными,когда одна инструкция
оперирует сразу несколькими пакетами данных (SIMD). Здесь впечатления
двойственные: что касается целочисленных операций, то здесь все в полном
порядке: в Willamette блок целочисленных операций работаетна удвоенной скорости
относительно скорости процессора - то есть, в случае с показанным на IDF 1.5 ГГц
чипом, скорость работы его целочисленных модулейсоставляла 3 ГГц! (Опять же, это
результирующая частота - на самом деле скорость остается 1.5 ГГц, просто этот
блок умеет выполнять вычисления не заполный такт, а за его половину. То есть,
фактически его скорость удваивается). Модулей - поскольку их у
Willamette два, соответственно, в самомидеальном случае получается 4 операции с
целыми числами за один такт работы процессора. А вот что касается блока
для операций с числами с плавающей запятой, то получившаяся здесь картина,
похоже, не впечатлила даже сам Intel. Два такихмодуля (против трех у Athlon)
будут обеспечивать для 1.4 ГГц процессора пиковую производительность в операциях
с плавающей запятой всего лишь 1.4 GFLOPS,поскольку реальную вычислительную
работу выполняет только модуль - операции типа FADD, FMUL, и т.д., второй же
занимается подсобной деятельностью - FMOVE,FSTORE. Здесь надо заметить, что для
Athlon, если предположить, что к тому времени он будет иметь ту же тактовую
частоту - 1.4 ГГц (а основания, впринципе, имеются), этот показатель будет равен
2.8 GFLOPS. В общем, Intel решил не связываться с x87 в своем новом
процессоре, сосредоточив все внимание на блоке, предназначенном для работы с
SIMD (Singleinstruction - multiple data) инструкциями - 64-бит инструкциями,
рассчитанными на числа с плавающей запятой, и 128-бит целочисленными
инструкциями. Такихмодулей у Willamette также два, один для регистровых операций
и один - для арифметических. За счет того, что это - SIMD, то в идеале возможны
варианты,когда за один такт выполняется одна SIMD инструкция, состоящая из
четырех операций. Итого: четыре операции, 1.4 ГГц - пиковая
производительностьWillamette в случае использования SIMD составляет 5.6 GFLOPS!
Это напомню, против 2.8 GFLOPS x87 у 1.4 ГГц Athlon или же 5.6 GFLOPS в случае
использованияего SIMD блока, работающего с набором 3DNow!. Так что
немудрено, что Intel будет всячески продвигать новый SIMD набор инструкций
Wilamette (SSE2), как наилучший вариант для работы с операциями сплавающей
точкой. Intel сможет убедить разработчиков программ использовать SSE2, набор,
состоящий из 144 новых инструкций: 76 совершенно новых,
оперирующих с широким диапазономданных (включая числа с плавающей запятой
двойной точности и целые числа из 4 слов: и то, и то - 64 бит, если используются
регистры XMM, и происходитупаковка данных, то речь идет уже о 128-бит числах),
часть инструкций из этого набора позволяет программа брать на себя контроль над
механизмами кэширования,загрузки и хранения данных в регистрах процессора.
68 расширенных SIMD инструкций для работы с
целымичислами. Если в Pentium II/III они работали только с 64-бит MMX
регистрами, то в Willamette они уже смогут использовать 128 бит регистры XMM
этого процессора. Если Intel это удастся, то Willamette
в операциях с плавающей точкой для конца года будет выглядеть вполне солидно.
Если же разработчики программного обеспечения не проявят большого
энтузиазма и продолжат использовать старый добрый x87, то Willamette
будетвыглядеть на числах с плавающей точкой отнюдь не так блестяще, практически
не отличаясь от Pentium III, работающего на той же тактовой частоте. При
все возрастающей производительности процессоров и подсистемы памяти, увеличение
скорости системной шины GTL+ за последний год всего лишь на 33 МГцвыглядит не
слишком впечатляюще. Да тут еще и появление новой платформы - IA64. В общем, с
выходом Willamette Intel вводит новуюсистемную шину, которая малотого, что
должна значительно увеличить пропускную способность (тактовая частота 100 МГц,
даже ниже, чем у сегодняшней 133 МГц GTL+, но за счет передачи 4пакетов за такт,
результирующая частота получается 400 МГц), она еще и должна стать связующим
звеном между IA32 и IA64 - после Tehama, чипсета подWillamette, ее будет
использовать i870 - чипсет, предназначенный как под IA32 Foster, так и под IA64
McKinley. Таким образом, плюсы новой шины: значительно выросшая
пропускная способность - 3.2 Гбайт/с (400 МГц, 64 бит) против 1,064 Гбайт/с (400
МГц,64-бит) у сегодняшней 133 МГц GTL+ (3.2 Гбайт/с - как раз ровно столько,
сколько будет способен обеспечить двухканальный RDRAM, на который рассчитан
Tehama) инекоторая перспективность в плане будущего. Минусы: 4 пакета
данных за один такт - это здорово, но только в том случае, когда удастся их
предоставить к моменту выполнения очередного такта.Иначе пропускная способность
шины будет использоваться далеко не в полную меру. В общем, 3.2 Гбайт/с - это в
самом идеальном случае. Второе - сегодняшниематеринские платы для Willamette
никоим образом не подходят. И даже не только за счет использования новой
системной шины, но хотя бы за счет новогоформ-фактора - Socket-462. Опять новая
платформа, и никакие переходники здесь уже не помогут. Вот такие вот
дела. Что мы имеем в результате? Мы имеем процессор, созданный в полном
соответствии с принципом покупают мегагерцы ,оптимизированный именно
под него, а не под максимальную производительность. В итоге, согласно
предварительным данным, Willamette имеет производительностьтого же уровня, что и
работающий на одной частоте с ним Coppermine. Или Athlon. Таким образом,
увеличение производительности нового процессора будет связаноисключительно с его
увеличившейся скоростью. Как предполагается, к концу года новые процессоры
AMD подойдут примерно с той же скоростью, на которой Intel намерен выпустить
Willamette. (И оба онибудут требовать новые материнские платы). Как
предполагается, производительность у них будет примерно одинаковой, то есть
сегодняшнеесостояние неустойчивого равновесия между Intel и AMD сохранится еще
как минимум до начала 2001 года. А дальше? Willamette должен стать
последним потребительским x86 процессором, то есть в 2001 году Intel начнет его
оптимизацию для дальнейшегоповышения скоростных показателей. И где-то в том
районе в свет выйдет новый x86 процессор AMD - SledgeHammer (K8). Основываясь на
сегодняшних знаниях,получается интересная картина - в следующем году Intel опять
должен оказаться в роли догоняющего на рынке x86 процессоров среднего уровня.
Если, конечно, этотрынок к тому времени будет заслуживать хоть каких-либо
усилий.