Каталог
SSE128
Многие из "главных" изменений у Barcelona были сделаны ради одного существенного изменения – AMD называет это SSE128. В архитектуре K8 могут параллельно выполняться 2 SSE операции, однако блоки SSE всего 64 битные. 128-битные SSE операции K8 должен обработать как две 64-битных операции. Это также означает, что при поступлении 128-битной SSE инструкции, её нужно сначала перевести в 2 микрооперации (по одной для каждой 64-битной полукоманды), поэтому для одной инструкции нужно задействовать дополнительный порт декодирования. Barcelona увеличивает разрядность исполнительного блока, который обрабатывает SSE операции, с 64 до 128 бит, поэтому теперь 128-битные SSE операции не нужно дробить на две 64-битных операции. Из этого также следует, что теперь в вашем распоряжении большая пропускная способность декодирования, так как теперь 128-битные SSE команды задаются одной микрооперацией, вместо двух. Планировщик операций с плавающей запятой тоже может задействовать эти 128-битные SSE операции. Увеличение разрядности SSE привело и к ряду других изменений в ядре. Поскольку для исполнения 128-битных SSE команд пропускная способность декодирования теперь увеличилась, у процессора обнаружилось новое узкое место – скорость прохождения команд. 128-битных SSE команд может быть довольно много, и, чтобы увеличить число команд, декодируемых параллельно, ядро Barcelona теперь может обрабатывать 32 байта за такт, вместо 16 байтов у K8. От 32 байтной выборки команд выигрывает не только SSE код, но и целочисленные вычисления. Вообще здесь будут выигрывать в производительности большие команды. Теперь, когда можно задавать и декодировать больше команд, нужно иметь возможность предоставлять исполнительному ядру больше данных, поэтому AMD расширила у Barcelona интерфейс между L1 кэшем данных и SSE регистрами. Barcelona теперь может сделать две 128-битных SSE загрузки из L1-D кэша за такт, по сравнению с двумя 64-битными загрузками за такт у K8. AMD также расширила интерфейс между L2 кэшем и контроллером памяти так, чтобы теперь за такт можно было передавать 128 бит, чтобы, опять же, сбалансировать все вышеупомянутые изменения. Ряд усовершенствований SSE128 очень похож на изменения, сделанные при переходе от Yonah к Merom. До Conroe/Merom, Yonah не мог тягаться с K8 по скорости обсчета операций FP/SSE. Почти полтора года назад проводилось сравнение AMD'шного K8 с интеловским Yonah, работающих с одинаковыми частотами. В то время как в обычных приложениях, 3D рендеринге и играх Yonah мог тягаться по производительности с K8, по кодированию видео он отставал. У Yonah был сделан ряд усовершенствований SSE производительности, но только процессоры Core 2 смогли действительно превзойти по быстродействию процессоры AMD в тестах кодирования видео. Пока неизвестно, сказалось ли на улучшении быстродействия однотактовое выполнение SSE команд, введенное в Core 2, более широкая шина или комбинация этих параметров. Хотя трудно сравнить характеристики двух очень разных архитектур, производительность кодирования сейчас для AMD является слабым местом, и здесь ей может помочь только введение SSE128. [N4-Оптимизация ядра] Хотя самыми заметными усовершенствованиями у процессора Barcelona являются изменения SSE128, это только видимая часть айсберга. Предварительный список усовершенствований у Barcelona начинается с предсказателя переходов. Вообще, точность предсказания переходов у процессора определяет его конструкцию, как в "длину", так и в "ширину". Среднее число правильно предсказанных команд определяет, сколько команд можно иметь "в работе", что, в свою очередь, определяет число исполнительных блоков, которые обычно можно обеспечить работой. Предсказатель переходов у K8 довольно хороший, и он очень хорошо оптимизирован для его архитектуры, но у процессоров Pentium M и Pentium 4 AMD может позаимствовать некоторые алгоритмы, которые могут пойти на пользу их новому процессору. В Barcelona добавлен предсказатель непрямых переходов с 512 входами, который, поверим на слово, может предсказывать непрямые переходы. Непрямая ветка – та у которой адресат перехода задается адресом в памяти, другими словами, переход с многими адресатами. Вместо того чтобы направить переход непосредственно к метке, заданной командой перехода, непрямой переход отсылает CPU к ячейке памяти с адресом команды, к которой он должен перейти. Intel добавила предсказатель непрямых переходов в свой Pentium M. Идея следующая – чем сильнее вы ограничите количество неправильно предсказанных переходов, тем более эффективным будет процессор (понизится энергопотребление). Предсказатель непрямых переходов также был задействован в Prescott, чтобы минимизировать отставание в производительности, вызванное дальнейшим наращиванием конвейеров в архитектуре NetBurst. Для Prescott это дало более чем 12% сокращение числа неправильно предсказанных переходов в тесте SPEC CPU2000. Хотя в деталях отличия алгоритмов предсказаний AMD и Intel не известны, можно предположить, что у обеих компаний будут похожие большие улучшения в тех сценариях, где непрямые переходы широко применимы. В 253.perlbmk тесте SPEC CPU2000 уменьшение неправильно предсказанных переходов у Prescott было ощутимое – почти 55%. В случае с Barcelona, меньшее количество неправильно предсказанных ветвлений означает большее количество выполненных операций на такт и лучшую эффективность, как по энергопотреблению, так и по быстродействию. Введение предсказателя непрямых переходов было не единственным усовершенствованием предсказателя будущего у Barcelona – размер стека возврата в новом ядре в 2 раза больше, чем у K8. В очень длинных цепочках запросов, например, когда код вызывает много подпрограмм (например, рекурсивные функции), CPU может не хватить места для записи начального адреса. Если он потеряет цепочку адресов возврата, он не сможет предсказывать переходы, связанные с этими адресами. Удваивая размер стека возврата, Barcelona уменьшает вероятность возникновения подобной ситуации. Такого рода усовершенствования обычно необходимы для отслеживания работы программ, используемых изготовителями CPU, поэтому журналисты поинтересовались, какое программное обеспечение или сценарий сподвигли на это усовершенствование в Barcelona. Представители AMD не дали конкретного примера, когда это нужно, а только сказали, что стек возврата был увеличен по заказу "большой софтверной компании". Последнее улучшение, по сравнению с ветвями предсказаний у K8, сделано обычным образом – Barcelona отслеживает больше переходов, чем он. В предсказании ветвлений нет никакой мистики; процессор просто отслеживает сделанные переходы и, сравнивая их с тем, что уже было, предсказывает их дальнейший ход. Чем больше собрано информации о прошлых переходах, тем точнее предсказание. K8 разрабатывался для 130 нм техпроцесса, а первый вариант Barcelona будет сделан по 65 нм технологии, поэтому у AMD явно достаточно места на кристалле, чтобы собрать больше информации о переходах. [N5-Sideband Stack Optimizer] У самого первого Pentium M Intel ввела механизм, который она назвала "dedicated stack manager" – специальный диспетчер стека. В соответствии со своим названием, он предназначен для работы со всеми стековыми операциями x86 стека (запись в стек, извлечение из стека, запрос, возврат). Задача диспетчера стека в том, чтобы хранить в коде те операции стека, которые часто используются для вызова функций, отделяя их от остального потока x86 команд, посылаемых в CPU. Специализированный диспетчер стека будет заниматься декодированием и "выполнять" эти команды, чтобы они не забивали декодеры процессора и исполнительные блоки в конвейере. Intel, по существу, "расширила" ядро, выгрузив некоторые операции, чтобы дистанцировать аппаратные цепи. В Barcelona AMD вводит похожую технологию, которую они назвали Sideband Stack Optimizer. Команды стека больше не идут через 3-путный декодер и стековые операции больше не прогоняются через исполнительные блоки, что эффективно расширяет Barcelona при минимальном удорожании. Sideband Stack Optimizer, как и интеловский dedicated stack manager, имеет собственный сумматор, который обрабатывает все операции стека. Это небольшое дополнение может помочь увеличить общую производительность процессора и одно из тех, которое должно пойти AMD на пользу. Более быстрая загрузкаСравнивая производительность Athlon 64 и Core 2, легко понять, почему у Intel большое преимущество в производительности в приложениях, широко использующих SSE. А как насчет приложений, таких как игры и бизнес-приложения, которые должны выигрывать от интегрированного на кристалле контроллера памяти AMD? Или для того, чтобы обойти Athlon по быстродействию, Core 2 достаточно лишь большего L2 кэша и агрессивной предвыборки? Одним из главных преимуществ микроархитектуры Core является возможность разрешать командам загрузки обходить предыдущие команды загрузки и выгрузки. В среднем около 1/3 всех команд программы заканчивается их загрузкой, поэтому, если вы можете увеличить скорость загрузки, вы, как правило, можете очень сильно увеличить скорость работы приложения. Чтобы не ждать доступа к памяти, отнимающего много рабочих тактов, в микроархитектуре Core можно изменить последовательность загрузок, если вы уверены, что команды, зависящие от этих загрузок, получат нужные им данные. Core позволяет также сдвинуть загрузки и установить из перед выгрузками, что раньше было невозможно, потому что более ранняя выгрузка могла аннулировать только что загруженные данные. В Intel полагают, что вероятность того, что выгрузка произойдет перед загрузкой, очень маленькая, порядка 1 - 2%, поэтому с достаточно точным предсказателем Вы можете точно предположить, когда это может произойти. Логика прогнозирования интеловских процессоров Core 2 может предсказывать, что у выгрузки и загрузки может быть один и тот же адрес памяти. В случае такого прогноза, меняется очередность команд и загрузке разрешается завершиться перед выгрузкой. В тех маловероятных случаях, когда предсказатель ошибется, загрузку придется проводить заново ценой сброса конвейера (подобно тому, как это происходит в случае ошибки предсказания перехода). У архитектуры K8 не было эквивалентной схемы, которая бы разрешала выполнение загрузки перед другими загрузками и выгрузками, поэтому даже без интегрированного на кристалле контроллера памяти Intel может выполнять некоторые операции с памятью быстрее, чем K8. У Barcelona эта проблема решена вводом схемы, почти идентичной той, что Intel сделала у процессоров Core 2. Теперь и Barcelon |
Источник: www.anandtech.com/