Страница 2: Архитектура Zen

Самое большое изменение в архитектуре Zen заключается в том, что каждое ядро вновь приобрело большую независимость. В архитектуре Bulldozer использовалось множество общих компонентов: FPU, SIMD и кэш L2 использовались двумя ядрами CPU. Все эти ресурсы теперь доступны исключительно для одного ядра, но при необходимости к ним могут обращаться два потока – как в случае Intel Hyper-Threading.

Важной инновацией AMD стал кэш микроопераций (Micro-Op). Intel начала использовать его еще с архитектуры Sandy Bridge. Кэш микроопераций ускоряет декодирование инструкций x86, которые поступают на него с блока выборки инструкций и конвейера декодирования. Блоки выборки инструкций и предсказания ветвлений 64-байтные, в случае выборки инструкций мы получаем разделение на 2x 32 байта. Блок предсказания ветвлений работает более динамично, он может переназначать ветвления и изменять приоритет при ошибке.

У ядра Zen используются четыре целочисленных блока, которые имеют 168 регистров и могут обрабатывать 192 инструкции одновременно. Два блока Load/Store отвечают за запись данных обратно в кэши после вычислений. Используются два блока работы с плавающей запятой, по 128 FMAC каждый (Floating Point Multiply Accumulators). Кэш инструкций имеет размер 64 кбайт 4-way, кэш данных - 32 кбайт с восемью одновременными обращениями (8-way). Кэш L2 имеет размер 512 кбайт, к нему тоже возможно одновременное обращение на чтение или запись по восьми каналам (8-way). Добавим к этому общий кэш L3.

Новое ядро Zen опирается на три ключевых "столпа": оптимизированные и быстрые ядра сами по себе, улучшенная система кэширования и меньшее энергопотребление. Поддержка многопоточности должна дать прирост в соответствующих приложениях, ее можно назвать значимым шагом вперед. Также AMD указывает улучшения в сферах предсказания ветвлений и выделения вычислительных ресурсов, что приведет к меньшим ошибкам предсказания – а это, в свою очередь, уменьшит число проходов и пустую трату вычислительных ресурсов. Более крупный кэш операций (Op Cache) здесь тоже будет полезен.

Блок диспетчеризации микроопераций (Micro-Op Dispatch) стал шире – с четырех операций до шести. Планировщик инструкций (Instruction Scheduler) тоже значительно расширился – до 84 с 48 целочисленных операций и до 96 с 60 операций с плавающей запятой. Потенциально ошибочные инструкции теперь могут сниматься в количестве восьми штук вместо четырех ранее еще до того, как они выйдут на конвейер. Очереди тоже увеличились: 192 операций снятия (retire), 72 для загрузки (load) и 44 для записи (store).

Кэш L1 получили функцию обратной записи (write back), которая обеспечивает более эффективную работу отдельных ядер. Кэш K2 тоже был существенно ускорен, а кэш L3 теперь работает на той же частоте, что и самое быстрое ядро CPU Complex. AMD указывает на удвоение пропускной способности кэшей L1 и L2, кэш L3 стал до пяти раз быстрее.

Если посмотреть на снимок кристалла CPU Complex архитектуры Zen, то обращаешь внимание на мизерность размеров вычислительных блоков ALU и FPU по сравнению с остальными компонентами. Кэши, планировщики и блоки предсказания занимают около 80% площади.

AMD существенно продвинулась вперед по улучшению кэша L2. Начнем с производства кристалла, 512 кбайт размещаются на площади 1,5 мм², хотя Intel удалось упаковать на 0,9 мм² только 256 кбайт. AMD также подобрала пропускную способность кэша L2 более сбалансированно, чем Intel, которая потеряла много места на интерфейсы – такой подход важен для серверной сферы, но для настольных систем особой роли не играет. Так что здесь AMD говорит о достижении лучшего баланса.

Данное преимущество AMD отмечает и для кэша L3. Объем составляет 8 Мбайт, ассоциативность 16-way, кэшем могут совместно пользоваться до четырех ядер CPU Complex. Частота кэша L3 соответствует самому быстрому ядру в CPU Complex. Для экономии энергии кэш L3 разделен на четыре области, питание к которым подводится по-отдельности, чтобы работали только нужные области.

Поддержка SMT (simultaneous multithreading) позволяет надеяться на увеличение многопоточной производительности. Здесь, конечно, подразумевается возможность выполнять два потока на ядро. В случае выполнения одного потока на ядро, он получает все ресурсы. Если же выполняются два потока, то без приоритезации не обойтись, поскольку некоторые ресурсы могут использоваться только совместно. На диаграмме показаны выделенные и общие ресурсы.

Архитектура Zen не во всем оптимальна для серверов

AMD планирует представить архитектуру Zen в виде процессоров Naples и на серверный рынок. Сможет ли AMD хорошо здесь показать себя по сравнению с Intel – вопрос открытый. В случае Naples AMD фокусируется на одно- и двухсокетные системы. Чтобы не распыляться по всем сферам серверного сегмента, AMD планирует продвигать Naples на определенные рынки. Серверы с одним сокетом вскоре заменят двухсокетные системы – хотя последние будут играть определенную роль какое-то время. Впрочем, с Naples AMD планирует захватить оба рынка.

Форрест Норрод (Forrest Norrod) из AMD: "Односокетные платформы CPU побеждают. Благодаря переходу на более совершенные техпроцессы и увеличению числа транзисторов на кристалле, односокетные серверы (1P) уже могут удовлетворить потребности многих современных серверных платформ 2P. Отличная новость для ИТ-рынка".

Конечно, с 32 ядрами и 64 потоками на SoC AMD ориентируется на задачи, которые смогут использовать большое число ядер одновременно. "Число ядер имеет значение. В мире облачных вычислений возможность выполнить больший объем работы благодаря большему числу ядер и соответствующих ресурсов позволяет более эффективно предоставлять услуги большему числу клиентов и снизить TCO. Все просто", сказал Форрест.

Похоже, что AMD разработала широкую стратегию, SoC и процессоры составляют только ее часть. Почти во всех сферах вычислений GPU будут играть все более важную роль, с видеокартами Radeon Instinct AMD как раз планирует представить соответствующее решение. На Tech Summit в 2016 году AMD впервые показала сервер Naples с GPU-ускорителями. По чистой вычислительной производительности процессоры все же не могут конкурировать с архитектурами Intel Haswell и Skylake для серверного рынка. Например, с инструкциями AVX FMA Intel обеспечивает выполнение в два раза большего числа инструкций FLOPS за такт, а также обеспечивает в два раза большую пропускную способность кэша для блоков FPU и SIMD. Использование инструкций AVX512 даст Intel еще больше преимуществ. В сфере HPC AMD будет нелегко конкурировать с Intel, поэтому решение AMD концентрироваться на определенных областях выглядит вполне логично.

"Гетерогенные системы становятся массовыми. GPU и другие ускорители, дополняющие CPU, станут составными строительными блоками вычислительных систем. Сочетание GPU, CPU и ускорителей FPGA в дата-центрах обеспечит поддержку различных новых сфер, в том числе сетей глубокого и машинного обучения, искусственного интеллекта, виртуальной и дополненной реальности", сказал Форрест.

Но не следует забывать, что в серверном сегменте кроме чистой производительности CPU важны такие факторы, как подсистема памяти, возможности ввода/вывода и функции защиты. Скажем, определенные области рабочего пространства должны быть зашифрованы – здесь можно упомянуть технологии Secure Memory Encryption (SME) и Secure Encrypted Virtualization (SEV). Обе технологии ориентированы на шифрование данных в памяти. Для поддержки технологий AMD использует шифрование AES128 с закрытым ключом. Так что злоумышленник вряд ли сможет получить доступ к данным. Но SME и SEV работают на разных уровнях шифрования.

Чтобы сэкономить пространство кристалла и обеспечить высокую эффективность AMD пришлось пойти на некоторые жертвы, касающиеся использования в серверах. На конференции International Solid State Circuits Conference 2017 (ISSCC) AMD провела сравнение с Intel.