ОГЛАВЛЕНИЕ:
- Введение
- Новые технологии или «латание дыр»?
- Спецификации Prescott
- Микроархитектура
- Кэш-память
- Усовершенствования и HT
- Набор команд SSE3
- Чипсеты
- Революция или эволюция?
Все новые микроархитектурные улучшения позволили сократить задержки передачи сигнала между блоками процессора. Главной особенностью новой архитектуры NetBurst стало удлинение конвейера с 20 до 31 стадии. Конвейер стал длиннее, но сами стадии сократились по времени. Соответственно, изменилось и прохождение инструкций по конвейеру. Увеличение количества стадий позволило поднять тактовую частоту. Также это стало необходимым из-за задействования большего числа блоков и необходимости их развязки по времени выполнения.
Как известно, увеличение стадий конвейера грозит потерями тактов при перезагрузке конвейера в случае неправильного предсказания ветвления. Поэтому, была улучшена схема предсказания ветвлений. Теперь процессор может анализировать возможную длину перехода и наличие цикла, а также распознавать его тип. Кроме того, разработчики решили проанализировать несколько готовых алгоритмов и эффективность их предсказания. Впрочем, это обоюдоострое решение. Регулярные ветвления, которые легко предсказать, будут предсказываться лучше, но случайные ветвления при удлинении конвейера, скорее всего, принесут еще больше ошибок предсказания. Так что эта оптимизация больше зависит от исходного кода и частоты появления в нем случайных переходов. Таким образом, для оптимизации приложений под Prescott, их следует перекомпилировать.
Для усовершенствования архитектуры также было увеличено число всевозможных буферов. Прежде всего, это WC-буферы, которые отвечают за сбрасывание данных в оперативную память при переполнении кэша L2. Их количество пришлось увеличить примерно до 4000, видимо, из-за удвоения кэша L2.
Остальное осталось по-прежнему. Кэш второго уровня связан с буфером TLB 64-битной шиной, а с L1 - 256 битной с пропускной способностью 108 ГБ/с. Вопреки слухам trace-кэш не увеличился: он все также отслеживает 12 тысяч микроопераций. Поскольку каждая микрооперация вовсе не обязательно равна 1 КБ, то было бы некорректно говорить об объеме trace-кэша. Он содержит уже предсказанные с учетом условных переходов инструкции в порядке их поступления на исполнительные блоки и выдает по 3 инструкции за такт. Поскольку количество исполнительных блоков не изменилось, то особого смысла увеличивать trace-кэш нет.
Prescott имеет 2 блока ALU, работающих на удвоенной частоте для простых инструкций, один для сложных, FPU с поддержкой SSE3, блок для сдвиговых операций с плавающей точкой и 2 AGU - вычислительных блока, которые высчитывают адрес хранимых и загружаемых команд. Итого 7 вычислительных блоков.
Зато удалось доработать ALU, которое состоит из 2 блоков, работающих на удвоенной частоте и одного на обычной. Так вот, первые два блока умеют совершать операции только с простыми инструкциями. Операции сдвига естественно считаются сложными операциями и поэтому выполняются на втором блоке с обычной частотой. В Prescott был добавлен специальный блок, который позволяет исполнять функции shift и rotate на «двухскоростном» блоке ALU. Кроме того, ускорена операция целочисленного умножения, которая позволила уменьшить imul latency. Для этого выделен специальный блок в FPU.
Более удачной компоновки ядра по сравнению с Northwood компании Intel удалось достичь за счет применения автоматической трассировки блоков ядра. Теперь ядро немного вытянулось в длину и не имеет четких граней отдельных блоков. Это характерный пример автоматического дизайна ядра, когда соединения между блоками очень хитро переплетаются. Такой метод позволил разместить схожие и работающие одновременно или последовательно блоки разместить вместе, чтобы не было задержки передачи сигнала из одного блока в другой.