CPU

Микроархитектура AMD ZEN: шаг вперед или назад? Часть 3


В 2017 году компания AMD представила процессоры Ryzen с новой микроархитектурой Zen. Сегодня редакция ServersTech.ru детально разберет микроархитектуру Zen.

Остальные материалы по микроархитектуре Zen собраны здесь.

В предыдущих частях по микроархитектуре Zen наша редакция рассмотрела изменения в кэшах и буферах, сегодня мы рассмотрим архитектурные изменения в фронт-энде и бэк-энде.

Фронт-энд

k10 1

K10

bulldozer 1

Bulldozer

zen 1

Zen

Поскольку изменения в системе кэширования рассмотрены в предшествующих частях, перейдем сразу к декодеру, который, судя по представленным схемам, принципиально не поменялся с Bulldozer - декодирование инструкций как в Bulldozer, так и в Zen осуществляется четырьмя декодерами (хотя стоит заметить, что у Bulldozer декодер общий для двух ядер). Поскольку декодер является узким местом Zen (декодер может выдавать 4 μops, в то время как исполнительный тракт Zen - 10 μops), был внедрен μop-кэш, принцип работы которого аналогичен μop-кэшу в процессорах Intel Core (о котором мы писали - здесь). Стоит отметить, что у Zen не только объем кэша МОПов выше, чем у Skylake (2048 записей против 1536), но и темп выдачи МОПов - 8 против 6. Высокий темп выдачи декодированных инструкций у μop-кэша позволяет частично нивелировать невысокую пропускную способность декодирования (4 μops) у Zen.
Следующим важным элементом за декодером идет блок очереди отставки МОПов (RQ - Retirement Queue), емкость которого росла из поколения в поколение: K10 – 72 записи; Bulldozer – 128; Zen – 192.
Как можно заметить, со времен K10 стадия предвыборки и декодирования инструкций не претерпела кардинальных изменений (за исключением перехода с трехканального декодера в K10 на четырехканальный в Zen), пожалуй, наиболее существенным изменением стало появление μop-кэша, хорошо зарекомендовавшего себя в процессорах Интел, и позволяющего не только повысить производительность и нивелировать низкую пропускную способность декодера, но и снизить энергопотребление.

Бэк-энд

k10 2

K10

bulldozer 2

Bulldozer

zen 2

Zen

Регистровые файлы росли из поколения в поколение: для целочисленной арифметики его объем увеличился с 40 до 168 записей (K10 и Zen); а для арифметики с плавающей точкой – с 120 до 160 записей (K10 и Zen). Увеличение емкости на первый взгляд может показаться существенным, если не смотреть на то, что между K10 и Zen 10 лет разницы.
Поскольку процессоры AMD имеют большое количество ИУ (исполнительных устройств), то важную роль на производительность ядра оказывает емкость очереди планировщика, увеличение которой повышает утилизацию ИУ, а следовательно, и производительность. В процессорах AMD реализованы индивидуальные планировщики для целочисленной арифметики и с плавающей точкой. Емкость очереди целочисленного планировщика выросла с 24 до 84 записей, а для арифметики с плавающей точкой – с 36 до 96. При этом важно отметить, что Zen частично «копирует» K10 и частично Bulldozer: целочисленный тракт Zen располагает 6 отдельными очередями, что схоже с K10 - три очереди; а «вещественный» тракт Zen используют общую очередь, как и в Bulldozer.
После планировщиков располагаются исполнительные устройства, от скорости и количества которых и зависит в большей мере производительность процессора, а также и «универсальность»: Bulldozer располагал всего лишь 4 ИУ для «вещественной» арифметики, при этом эти ИУ были общими для двух ядер, что и ограничивало производительность процессора в научных вычислениях. Смотря же на представленные схемы, видно: в K10 - 9 ИУ; Bulldozer - 8 (из них 4 общие для двух ядер); Zen - 10. По компоновке Zen частично повторяет Bulldozer, а частично K10: у Zen и Bulldozer два AGU, в то время как у K10 – 3; у Zen и Bulldozer также 4 ИУ для FP-арифметики, тогда как у K10 – 3. Несмотря на увеличение количества ИУ, в Zen слабым местом остались «вещественные» ИУ - они, как и в K10, 128-битные. То есть с 2007 года разрядность не поменялась... при этом необходимо помнить, что Zen поддерживает 256-битные AVX-инструкции, выполнение которых на 128-битных ИУ вдвое снизит пиковую скорость вычислений. В то время как у прямого конкурента с 2011 года используются 256-битные ИУ для выполнения 256-битных AVX-инструкций, а с 2017 - 512-битные ИУ для 512-битных инструкций. Пожалуй, разрядность ИУ - это самое слабое место Zen (вероятно, AMD в Zen 2 исправит это и расширит ИУ, как минимум, до 256-бит).
Детально рассмотрим микроархитектуры и сделаем выводы.

k10 3

K10

bulldozer 3

Bulldozer

zen 3

Zen

Подведем итог: Zen вобрал в себя как архитектурные решения из K10, так и Bulldozer (что говорит о том, что в Bulldozer были полензные нововведения), при этом незабыв «подсмотреть» удачные решения у конкурента. Смотря на схему ядра, можно сказать, что архитектура Zen получилась весьма сбалансированной (по сравнению с Bulldozer), но не без узких мест (часть из которых «удалось» нивелировать, например, использование μop-кэша) - использование 128-битных ИУ тогда, когда прямой конкурент внедряет 512-битные, недопустимо (а если учесть, что 128-битные ИУ AMD использует с 2007 года, то назвать Zen шагом вперед крайне сложно). Стоит надеяться, что в Zen 2 AMD исправит основные недостатки Zen, повысив как в целом IPC, так и в 256/512 -битных вычислениях.

Остальные материалы по микроархитектуре Zen собраны здесь.

0 logo low

Copyright © by ServersTech.ru, 2015-2020. Копирование запрещено.
Коммерческие предложения, сотрудничество и реклама: cooperation@serverstech.ru
Предложения, вопросы и пожелания читателей: readership@serverstech.ru
Copyright © 2015-2020 ServersTech.ru. Все права сохранены
Copyright © 2015-2020 ServersTech.ru. All rights reserved