Мой сайт
Главная
Вход
Регистрация
Воскресенье, 22.10.2017, 14:35Приветствую Вас Гость | RSS
Меню сайта

Наш опрос
Оцените мой сайт
Всего ответов: 4

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » 2013 » Декабрь » 27 » Обзор AMD FX-8150
01:18
 

Обзор AMD FX-8150



Общий препроцессор и два целочисленных ядра

Общий препроцессор

Как мы уже упоминали, этапы выборки инструкций и декодирования в Bulldozer являются общими для обоих ядер. AMD использовала чередующуюся многопоточность, чтобы отслеживать ID каждой инструкции "на лету", решать, какому потоку сильнее всего требуется выполнение работы, и исполнять операцию от имени этого потока. Причём архитектура может переключаться между потоками по тактам, чтобы поддерживать работу для обоих потоков.

AMD на самом деле отделила блок прогнозирования ветвлений от этапа выборки инструкций, позволив ему забегать вперед, независимо от любых задержек, которые возникают в конвейере выборки. Более важно, как утверждает AMD, здесь то, что разделение этих компонентов позволяет реализовать функцию под названием "предварительная выборка инструкций на основе прогнозирования", которая отличается высоким уровнем точности и эффективности в плане энергопотребления.

Прогнозирование ветвления подкреплено буфером ветвлений (BTB) L1 на 512 записей и буфером L2 на 5000 записей. Этот конвейер отвечает за заведомое прогнозирование, чтобы заполнять очередь будущей выборки инструкций, а также поддерживает её в заполненном состоянии. На самом деле, поддерживаются две очереди – по одной на каждый поток – что обеспечивает постоянную работу. Конвейер выборки инструкции будет получать адреса инструкций из очереди прогнозирования.

Эти адреса направляются в кэш инструкций (два пути, 64 кбайт) конвейера выборки, являющийся общим для двух потоков (потоки динамически конкурируют за доступ к этому кэшу). Затем очередь выборки Bulldozer отправляет инструкции x86 на конвейер декодирования, состоящий из четырёх декодеров x86, которые в свою очередь отвечают за диспетчеризацию до четырёх операций за такт на блоки планирования.

Если происходит промах (то есть инструкция не доступна в кэше инструкций), отправляется запрос в кэш L2, который при необходимости перенаправляется в оперативную память. Как вы понимаете, это приведёт к серьёзной задержке. Поэтому во время выполнения данного запроса, происходит проверка уже выбранных адресов в очереди прогнозирования, будут они запрашиваться или нет. Если с ними тоже произошёл промах, то к кэшу L2 отправляется следующий запрос параллельно с извлечением из памяти первой инструкции, перекрывая запросы пропавших инструкций.

Два целочисленных ядра

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

Каждое ядро использует собственные 16 кбайт кэша предсказанных данных L1. Более того, оба ядра включают буферы быстрого преобразования адреса (TLB) L1 на 32 записи, опирающиеся на буфер TLB L2 с восемью путями из 1024 записей, который уже общий для двух ядер. Наконец, каждое из двух целочисленных ядер использует внеочередные блоки загрузки/сохранения, способные выполнять две 128-битных загрузки за такт или одно 128-битное сохранение за такт.

Один FPU, производительность AVX, и L2

Два ядра, один FPU

Общий модуль операций с плавающей запятой (FPU) оделён от двух целочисленных конвейеров. Поэтому когда операции достигают интерфейса диспетчеризации в конце конвейера декодирования, чтобы направиться на целочисленные блоки, все операции с плавающей запятой из этого потока переходят на планировщик работы с плавающей запятой. Там они конкурируют друг с другом за ресурсы и пропускную способность независимо от потока, к которому они принадлежат.

Как можно видеть на диаграмме ниже, логика AMD работы с плавающей запятой отличается от целочисленной логики. Её цель заключается только в исполнении; она сообщает о завершении работы и информации об исключениях обратно на родительское целочисленное ядро, которое отвечает за изъятие инструкций.

Модуль с плавающей запятой содержит два конвейера MMX и пару 128-битных объединённых блоков умножения-накопления (fused multiply-accumulate, FMAC). Конвейеры FMAC поддерживают инструкции с четырьмя операндами, что даёт неразделяемый результат. Intel планирует добавить формат с тремя операндами в микро-архитектуре Haswell (которая последует за Ivy Bridge). AMD утверждает, что будет поддерживать FMA3 в преемнике Bulldozer под названием Piledriver, который ожидается в 2012 году.

Всякий раз, когда мы видим, что производители объявляют такие расходящиеся планы, нам становиться интересно, как это повлияет на разработчиков. Поэтому мы спросили у Адриана Силаси (Adrian Silasi) из SiSoftware, чего он ожидает в будущем, и он отметил, что вряд ли большинство разработчиков захотят реализовывать три пути кода (один только для AVX, ещё один для AVX плюс FMA3, и ещё один для AVX плюс FMA4). Это имеет смысл. И если учесть, что немногие приложения сегодня поддерживают AVX и ни одно из приложений не поддерживает FMA, AMD следует подумать о том, чтобы качественно поддержать все три пути, когда Piledriver выйдет в свет.

Но более важен вопрос, насколько хорошо Bulldozer поддерживает инструкции AVX по сравнению с Intel? Sandy Bridge выдаёт две 256-битные операции AVX за такт, а Bulldozer обеспечивает только одну.

В преддверии выхода мы начали разговор с Ноелом Бортвиком (Noel Borthwick), талантливым музыкантом и главным техническим директором компании Cakewalk, Inc., о работе его компании по оптимизации Sonar X1 под AVX. Согласно докладу, соавтором которого является Ноел, поддержка инструкций AVX помогает снизить программную нагрузку, связанную с выполнением преобразований битовой глубины звука, при его потоковой передаче и буферизации для отображения диаграммы воспроизведения, рендеринга или микширования. Распространённые преобразования включают перевод из 24-битного целочисленного формата в 32-битный формат с плавающей запятой или 64-битный формат с двойной точностью, а также перевод из 32-битного формата с плавающей запятой в 64-битный формат с двойной точностью.

С этой целью Ноел выслал нам тестовую программу, которая сравнивает выполнение двух процедур Cakewalk, оптимизированных под AVX, с неоптимизированное версией. AMD и Intel тоже получили доступ к данному тесту, поэтому результаты не должны удивить обе компании.

Архитектура Операция Результат (Прирост/потеря тактов CPU) AMD Bulldozer Копирование Int24 в Float64 61% прирост AMD Bulldozer Копирование Float32 в Float64 77% потеря Intel Sandy Bridge Копирование Int24 в Float64 69% прирост Intel Sandy Bridge Копирование Float32 в Float64 14% прирост

В операции копирования формата Int24 в Float64 процессор Intel Core i7-2600K показывает 69% прирост производительности, AMD FX-8150 обеспечил не менее впечатляющий прирост 61%. Что на самом деле означает слово "прирост"? Мы говорим о тактах CPU, количество которых поддержка AVX помогает снизить, увеличивая таким образом потенциальную пропускную способность процессора. Выражаясь другими словами, архитектура Sandy Bridge урезала количество потребовавшихся тактов в 1,69 раза, а Bulldozer уменьшила их количество в 1,61.

С другой стороны, в операции копирования формата Float32 в Float64, процессор Core i7-2600K смог обеспечить 14% прирост, в то время как FX-8150 показал 77% потери. Если попытаться объяснить эту потерю, то, кажется, что встроенные средства Visual Studio 2010 не оптимизированы под архитектуру AMD. В любом случае, требуется патч приложения или пакет обновления Visual Studio.

Перейдя к результатам Sandra 2011, вы увидит, что поддержка AVX действительно помогает FX-8150 увеличить целочисленную производительность и производительность с плавающей запятой. Однако Sandy Bridge просто получает намного больший прирост по производительности работы с плавающей запятой в этом тесте.

Как раз перед завершением тестирования AMD выслала нам две версии x264, программной библиотеки, которая работает внутри таких внешних интерфейсов, как HandBrake (вы скоро увидите наши тесты последней версии HandBrake). Однако данная сборка библиотеки имеет поддержку инструкций AVX и XOP, причём последние являются эксклюзивной особенностью архитектуры AMD.

Мы модифицировали тест Tech ARP x264 HD Benchmark 4.0 для использования каждого нового кода, а также запустил CPU-Z 1.58 для вывода системной информации. Потом мы запустили тесты обоих оптимизированных кодов на FX-8150, а также оптимизированной под AVX версии на Core i5-2500K.

Результаты кода AMD AVX и XOP довольно близки. Intel смогла закончить первый проход быстрее, но AMD обеспечила лучшую производительность на втором проходе.

Теперь учтите, что тестов, оптимизированных под AVX, очень мало. Разработчикам надо проделать немало работы, прежде чем мы получим более ясную картину о том, как поддержка инструкций AVX сказывается на каждой архитектуре.

Делим L2

Мы уже упомянули, что TLBL2 помогает процессору работать с инструкциями (со стороны препроцессора) и запросами данных (со стороны целочисленных ядер). Но также есть унифицированный кэш L2, который совместно используют оба ядра. Объём кэша составляет 2 Мбайт на модуль, что даёт в сумме 8 Мбайт кэша L2 для процессора семейства FX-8000 с четырьмя модулями.

AMD утверждает, что блок предварительной выборки данных Bulldozer подвергся серьёзной переделке, поскольку теперь он работает с обоими ядрами.


Просмотров: 140 | Добавил: formennow | Рейтинг: 0.0/0
Всего комментариев: 0
Поиск

Календарь
«  Декабрь 2013  »
ПнВтСрЧтПтСбВс
      1
2345678
9101112131415
16171819202122
23242526272829
3031

Архив записей

Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2017Создать бесплатный сайт с uCoz