Менее двух лет назад, мы исследовали первый сервер Arm SoC, который теоретически мог бы составить конкуренцию интеловскому Xeon E5s — Cavium ThunderX. SoC сервер продемонстрировал все, что было заявлено, однако из-за низкой однопоточной производительности и трудностями в оптимизации энергетических характеристик 48-ядерный SoC был отнесен к нишевым рынкам. В итоге, первый сервер Cavium SoC так и не смог конкурировать с Xeon от Intel.
Но Cavium не сдавалась по понятным причинам: на данный момент серверный рынок стал привлекательнее, чем когда-либо. Дата центры мирового гиганта Intel приносят выручку около 20 миллиардов долларов США (!) в год. Мало того, прибыльность составляет 50%. По прибыли и денежному обороту серверный рынок в разы превосходит любой другой рынок оборудования. Итак, после запуска ThunderX, Cavium пообещал выпустить вторую итерацию: улучшенное управление питанием, улучшенная однопоточная производительность, и еще больше ядер (54).
Что играет не на руку Cavium, так это то, что если пользователю нужен сервер – он может просто взять отлаженную и надежную машину Intel. Ведь громкие обещания от Arm, Calxeda, Broadcom, AppliedMicro за последние 5 лет так и остались обещаниями, вызвав серьезную волну скептицизма и недоверия и к появлению новых SoCs Arm Server.
Тем не менее новое творение аутсайдера Cavium заслуживает внимания. Был внесен ряд изменений, а не только добавление цифры «2» к названию: Cavium купил дизайн «Vulcan» от Avago. Vulcan — довольно амбициозный процессорный дизайн, первоначально разработанный командой Arm server SoC Broadcom, и имеет намного большее наследие, чем оригинальный ThunderX. Плюс ко всему, основываясь на опыте работы с ThunderX, Cavium смог внедрить некоторые микроархитектурные усовершенствования в дизайн Vulcan, улучшив его производительность и мощность.
В результате ThunderX2 «получился» более продуманным ядром, чем предыдущее поколение. Ядро ThunderX имело очень короткий конвейер и вряд ли могло выдерживать две инструкции за такт, однако ядро Vulcan рассчитано на фетч 8-ми и выполнение до 4 инструкций за такт. И даже больше: одновременно могут быть активны все 4 потока (SMT4), обеспечивающие постоянную загрузку бэк-энда. В новом ThunderX2 SoC32 размещено 32 таких ядра с частотой до 2,5 ГГц.
При использовании до 128 потоков и не менее восьми контроллеров DDR4 этот CPU должен хорошо показать себя во всех серверных нагрузках. Другими словами, в отличие от ThunderX (1), ThunderX2 является первым процессором сервера Arm и имеет все шансы пошатнуть равновесие на серверном рынке.
Тридцать два ядра с высоким IPC в одном пакете кажутся многообещающими. Но как выглядит новый ThunderX2 в сравнении с продуктами AMD, Qualcomm и Intel? В приведенной ниже таблице мы сравниваем спецификации нескольких топовых серверных SKU.
Знающие читатели сразу отметят, что верхушка линейки процессоров Intel — это Xeon Platinum 8180. Однако этот SKU с 205 Вт TDP и ценой выше 10 000 долларов США вообще не сопоставим с любым процессором в списке. Мы и так почти переступили черту разумного, включая 8176, который, как нам кажется, попадает в этот список по параметрам максимальных SKU блоков ядра / потока. Фактически, Cavium позиционирует Cavium 9980 как «сопоставимый» с Xeon Platinum 8164 (а у Intel эту роль выполняет 8176), но с несколько меньшими частотами.
Однако, с точки зрения производительности за доллар, Cavium сравнивает свой флагманский 9980 с Intel Xeon Gold 6148, и в этом случае цена процессора Cavium выглядит довольно-таки аппетитно. Согласно результатам тестов, самый быстрый ThunderX2 на 30-40% опережает Xeon 6148, при этом предложение от Cavium на 1300 долларов дешевле. Такое агрессивное ценообразование объясняет появившиеся слухи о том, что Qualcomm не собирается входить на рынок серверов.
Данные в таблице выше демонстрируют важные отличия между соперниками. Похоже, что у Intel самая передовая топология ядра и самая высокая скорость турбо. Между тем Qualcomm выглядит привлекательнее, когда дело доходит до производительности на ватт.
Подобно EPYC от AMD, ThunderX2 от Cavium, вероятно, будет сиять на рынке высокопроизводительных вычислений (пропускная способность выше на 33%, высокое число ядер / потоков). Как и в случае с дизайном AMD, L3-кэш EPYC оказывается медленным, если нужны данные, которых нет в локальном 8 МБ слоте кэша. ThunderX2 намного сложнее — с двойной кольцевой архитектурой, похожей на кольцевую архитектуру Xeon v4 (Broadwell-EP). Согласно информации от Cavium, их кольцевая неблокирующая архитектура способна обеспечить пропускную способность до 6 ТБ / с.
Эта кольцевая архитектура подключена к интерконнекту Cavium's Coherent Processor Interconnect (CCPI2 — в верхней части рисунка), который работает со скоростью 600 Гбит / с. Это соединение связывает два узла сокет/NUMA. К кольцу подключены 56 дорожек PCIe 3.0 SoC, которые Cavium расположил среди 14 контроллеров PCIe. Эти 14 контроллера могут, в свою очередь, разветвляться до x4 или x1, как показано ниже.
Плюс поддерживается SR-IOV, который так важен для виртуализации ввода-вывода (Xen и KVM).
Короткий брифинг. Оригинальный ThunderX представлял собой улучшенную версиюOcteon III: ЦПУ с возможностью одновременного выполнения двух инструкций (dual-issue core) с двумя короткими конвейерами.
Преимущество оригинальной конструкции ThunderX заключается в высокой энергоэффективности ядра, особенно при рабочих нагрузках с низким уровнем ILP (параллельности уровня инструкций). Конечно же такой короткий конвейер дает серьезные ограничения при наращивании тактовой частоты, а простая конструкция дизайна гарантирует низкую однопоточную производительность при средних и высоких нагрузках ILP, в то время как более продвинутые «out-of-order» процессоры могут извлечь как можно больше «скрытого параллелизма».
По сравнению с оригинальным ThunderX ядро Vulcan ThunderX2 — совершенно другой зверь. Анонсированный в 2014 году Broadcom, Vulcan является относительно большим ядром, которое управляет 4 одновременными потоками (SMT4). В результате бэк-энд должен быть хорошо нагружен даже при работе с серверными нагрузками с низким ILP.
Для обеспечения устойчивости 4 потокам SMT, фронт-энд ThunderX2 может извлекать до 64 байтов из 8-way 32 КБ ассоциативного кэша команд, который оборудован простым «next line» префетчером. Однако, выбор 8 команд возможен только в том случае, если в этих 64 байтах нет ветвления. В противном случае выборка прерывается на разветвлении.
Это означает, что в интенсивно ветвящемся коде (базы данных, AI ...) фетчер получает в среднем ± 5 инструкций за такт, так как одна из 5 инструкций является ветвью. Выбранные инструкции затем отправляются в буфер сглаживания — буфер, в котором сохраненные инструкции хранятся для декодирования.
Затем декодер работает с пакетом из 4 инструкций. Между декодером и фазой переименования каждый поток имеет «буфер скольжения», который состоит из 8 пачек. С 4-мя потоками в любой момент может быть забуферировано до 32 пакетов (128 инструкций).
Эти 4 инструкции — пакет — перемещаются по конвейеру до тех пор, пока не достигнут единой очереди сообщений планировщика. Подобно интеловскому Loop Stream Detector (работает как небольшая кэш-память), здесь также есть буфер цикла и предиктор. Этот буфер цикла исключает неправильные предсказания ветвления и содержит декодированные μops, которые «сокращают» конвейер и уменьшают затрачиваемую на декодирование энергию.
Одновременно может выполняться до 6 инструкций. Реализация включает 2 слота ALU / FP / NEON, 1 слот ALU / ответвления, 2 слота загрузки / хранения (16 байт) и 1 чистый слот для хранения, который отправляет 16 байтов в D-кэш. Существует небольшая (Cavium не будет раскрывать, насколько) L1 TLB для перехода с нулевой задержкой с виртуального на физические адреса. Для D1-кэша L1 нет аппаратного prefetcher, но кэш L2 имеет довольно сложный аппаратный предварительный префетчер, который способен распознавать шаблоны (при этом он может работать пошагово или извлекать следующую строку).
Этого вполне достаточно, чтобы «накормить» бэк-энд, который может поддерживать 4 инструкции за цикл из 4 разных потоков.
Cavium опубликовала ограниченный объем информации о ядрах ThunderX2. Ниже кратко изложены некоторые ключевые характеристики различных архитектур процессора.
Подробный анализ выходит за рамки данной статьи. Но вы можете прочитать анализы Johan De Gelas об архитектуре Falkor, Skylake и Zen в AnandTech. Ограничимся самыми наглядными различиями.
Довольно очевидно, что однопоточная производительность Intel остается вне конкуренции: ядро Skylake — ядро, исполняющее большинство инструкций «на лету», и что самое главное, работающее на более высокой тактовой частоте. Ядро ThunderX2 отличается тем, что извлекает максимум инструкций за цикл, способно постоянно поддерживать 4 потока. Фетчер будет захватывать 8 команд из одного потока, затем 8 из второго потока, и будет продолжать циклическое перемещение между потоками. А это значит, что плохое предсказание может значительно снизить производительность одного потока.
SKU, который использовался для тестов, ThunderX2 CN9980 2.2. Это топовый SKU, содержит 32 ядра на частоте 2,2 ГГц с возможностью буста до 2,5 ГГц.
Если верить планам Cavium, в ближайшие месяцы появится еще много SKU. Cavium утверждает, что скоро будет доступен CN9980 с частотой 2,5 ГГц, и турбо до 3 ГГц.
Cavium перечислил все свои запланированные SKU вместе с сопоставимыми Intel SKU. По определению Cavium, сопоставимый Intel SKU — это чип, который достигает того же SPECInRate (2017) под gcc, что и Cavium's SKU.
Cavium считает, что доставшийся нам CN9880 2.2 сравним с гораздо более дорогим 8164. Для нашего тестирования мы сравним его с 8176 (доступный нам Intel SKU). Не то чтобы это имело большое значение: 8176 имеет только на 3% более высокую тактовую частоту и 2 дополнительных ядра (+ 7%) по сравнению с 8164. Однако обратите внимание, что, хотя ThunderX2 Cavium может действительно конкурировать с указанными Intel SKU, они предлагают такую же производительность за одну треть стоимости Intel SKU.
В следующей части:
Спасибо, что остаетесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?
Но Cavium не сдавалась по понятным причинам: на данный момент серверный рынок стал привлекательнее, чем когда-либо. Дата центры мирового гиганта Intel приносят выручку около 20 миллиардов долларов США (!) в год. Мало того, прибыльность составляет 50%. По прибыли и денежному обороту серверный рынок в разы превосходит любой другой рынок оборудования. Итак, после запуска ThunderX, Cavium пообещал выпустить вторую итерацию: улучшенное управление питанием, улучшенная однопоточная производительность, и еще больше ядер (54).
Что играет не на руку Cavium, так это то, что если пользователю нужен сервер – он может просто взять отлаженную и надежную машину Intel. Ведь громкие обещания от Arm, Calxeda, Broadcom, AppliedMicro за последние 5 лет так и остались обещаниями, вызвав серьезную волну скептицизма и недоверия и к появлению новых SoCs Arm Server.
Тем не менее новое творение аутсайдера Cavium заслуживает внимания. Был внесен ряд изменений, а не только добавление цифры «2» к названию: Cavium купил дизайн «Vulcan» от Avago. Vulcan — довольно амбициозный процессорный дизайн, первоначально разработанный командой Arm server SoC Broadcom, и имеет намного большее наследие, чем оригинальный ThunderX. Плюс ко всему, основываясь на опыте работы с ThunderX, Cavium смог внедрить некоторые микроархитектурные усовершенствования в дизайн Vulcan, улучшив его производительность и мощность.
В результате ThunderX2 «получился» более продуманным ядром, чем предыдущее поколение. Ядро ThunderX имело очень короткий конвейер и вряд ли могло выдерживать две инструкции за такт, однако ядро Vulcan рассчитано на фетч 8-ми и выполнение до 4 инструкций за такт. И даже больше: одновременно могут быть активны все 4 потока (SMT4), обеспечивающие постоянную загрузку бэк-энда. В новом ThunderX2 SoC32 размещено 32 таких ядра с частотой до 2,5 ГГц.
При использовании до 128 потоков и не менее восьми контроллеров DDR4 этот CPU должен хорошо показать себя во всех серверных нагрузках. Другими словами, в отличие от ThunderX (1), ThunderX2 является первым процессором сервера Arm и имеет все шансы пошатнуть равновесие на серверном рынке.
У кого больше: технические характеристики
Тридцать два ядра с высоким IPC в одном пакете кажутся многообещающими. Но как выглядит новый ThunderX2 в сравнении с продуктами AMD, Qualcomm и Intel? В приведенной ниже таблице мы сравниваем спецификации нескольких топовых серверных SKU.
Знающие читатели сразу отметят, что верхушка линейки процессоров Intel — это Xeon Platinum 8180. Однако этот SKU с 205 Вт TDP и ценой выше 10 000 долларов США вообще не сопоставим с любым процессором в списке. Мы и так почти переступили черту разумного, включая 8176, который, как нам кажется, попадает в этот список по параметрам максимальных SKU блоков ядра / потока. Фактически, Cavium позиционирует Cavium 9980 как «сопоставимый» с Xeon Platinum 8164 (а у Intel эту роль выполняет 8176), но с несколько меньшими частотами.
Однако, с точки зрения производительности за доллар, Cavium сравнивает свой флагманский 9980 с Intel Xeon Gold 6148, и в этом случае цена процессора Cavium выглядит довольно-таки аппетитно. Согласно результатам тестов, самый быстрый ThunderX2 на 30-40% опережает Xeon 6148, при этом предложение от Cavium на 1300 долларов дешевле. Такое агрессивное ценообразование объясняет появившиеся слухи о том, что Qualcomm не собирается входить на рынок серверов.
Данные в таблице выше демонстрируют важные отличия между соперниками. Похоже, что у Intel самая передовая топология ядра и самая высокая скорость турбо. Между тем Qualcomm выглядит привлекательнее, когда дело доходит до производительности на ватт.
Подобно EPYC от AMD, ThunderX2 от Cavium, вероятно, будет сиять на рынке высокопроизводительных вычислений (пропускная способность выше на 33%, высокое число ядер / потоков). Как и в случае с дизайном AMD, L3-кэш EPYC оказывается медленным, если нужны данные, которых нет в локальном 8 МБ слоте кэша. ThunderX2 намного сложнее — с двойной кольцевой архитектурой, похожей на кольцевую архитектуру Xeon v4 (Broadwell-EP). Согласно информации от Cavium, их кольцевая неблокирующая архитектура способна обеспечить пропускную способность до 6 ТБ / с.
Эта кольцевая архитектура подключена к интерконнекту Cavium's Coherent Processor Interconnect (CCPI2 — в верхней части рисунка), который работает со скоростью 600 Гбит / с. Это соединение связывает два узла сокет/NUMA. К кольцу подключены 56 дорожек PCIe 3.0 SoC, которые Cavium расположил среди 14 контроллеров PCIe. Эти 14 контроллера могут, в свою очередь, разветвляться до x4 или x1, как показано ниже.
Плюс поддерживается SR-IOV, который так важен для виртуализации ввода-вывода (Xen и KVM).
ThunderX: от простого к сложному
Короткий брифинг. Оригинальный ThunderX представлял собой улучшенную версиюOcteon III: ЦПУ с возможностью одновременного выполнения двух инструкций (dual-issue core) с двумя короткими конвейерами.
Преимущество оригинальной конструкции ThunderX заключается в высокой энергоэффективности ядра, особенно при рабочих нагрузках с низким уровнем ILP (параллельности уровня инструкций). Конечно же такой короткий конвейер дает серьезные ограничения при наращивании тактовой частоты, а простая конструкция дизайна гарантирует низкую однопоточную производительность при средних и высоких нагрузках ILP, в то время как более продвинутые «out-of-order» процессоры могут извлечь как можно больше «скрытого параллелизма».
«Новое» ядро Cavium: Vulcan
По сравнению с оригинальным ThunderX ядро Vulcan ThunderX2 — совершенно другой зверь. Анонсированный в 2014 году Broadcom, Vulcan является относительно большим ядром, которое управляет 4 одновременными потоками (SMT4). В результате бэк-энд должен быть хорошо нагружен даже при работе с серверными нагрузками с низким ILP.
Для обеспечения устойчивости 4 потокам SMT, фронт-энд ThunderX2 может извлекать до 64 байтов из 8-way 32 КБ ассоциативного кэша команд, который оборудован простым «next line» префетчером. Однако, выбор 8 команд возможен только в том случае, если в этих 64 байтах нет ветвления. В противном случае выборка прерывается на разветвлении.
Это означает, что в интенсивно ветвящемся коде (базы данных, AI ...) фетчер получает в среднем ± 5 инструкций за такт, так как одна из 5 инструкций является ветвью. Выбранные инструкции затем отправляются в буфер сглаживания — буфер, в котором сохраненные инструкции хранятся для декодирования.
Затем декодер работает с пакетом из 4 инструкций. Между декодером и фазой переименования каждый поток имеет «буфер скольжения», который состоит из 8 пачек. С 4-мя потоками в любой момент может быть забуферировано до 32 пакетов (128 инструкций).
Эти 4 инструкции — пакет — перемещаются по конвейеру до тех пор, пока не достигнут единой очереди сообщений планировщика. Подобно интеловскому Loop Stream Detector (работает как небольшая кэш-память), здесь также есть буфер цикла и предиктор. Этот буфер цикла исключает неправильные предсказания ветвления и содержит декодированные μops, которые «сокращают» конвейер и уменьшают затрачиваемую на декодирование энергию.
Одновременно может выполняться до 6 инструкций. Реализация включает 2 слота ALU / FP / NEON, 1 слот ALU / ответвления, 2 слота загрузки / хранения (16 байт) и 1 чистый слот для хранения, который отправляет 16 байтов в D-кэш. Существует небольшая (Cavium не будет раскрывать, насколько) L1 TLB для перехода с нулевой задержкой с виртуального на физические адреса. Для D1-кэша L1 нет аппаратного prefetcher, но кэш L2 имеет довольно сложный аппаратный предварительный префетчер, который способен распознавать шаблоны (при этом он может работать пошагово или извлекать следующую строку).
Этого вполне достаточно, чтобы «накормить» бэк-энд, который может поддерживать 4 инструкции за цикл из 4 разных потоков.
Различия в микроархитектуре
Cavium опубликовала ограниченный объем информации о ядрах ThunderX2. Ниже кратко изложены некоторые ключевые характеристики различных архитектур процессора.
Подробный анализ выходит за рамки данной статьи. Но вы можете прочитать анализы Johan De Gelas об архитектуре Falkor, Skylake и Zen в AnandTech. Ограничимся самыми наглядными различиями.
Довольно очевидно, что однопоточная производительность Intel остается вне конкуренции: ядро Skylake — ядро, исполняющее большинство инструкций «на лету», и что самое главное, работающее на более высокой тактовой частоте. Ядро ThunderX2 отличается тем, что извлекает максимум инструкций за цикл, способно постоянно поддерживать 4 потока. Фетчер будет захватывать 8 команд из одного потока, затем 8 из второго потока, и будет продолжать циклическое перемещение между потоками. А это значит, что плохое предсказание может значительно снизить производительность одного потока.
The ThunderX2 SKUs: от 16 до 32 ядер
SKU, который использовался для тестов, ThunderX2 CN9980 2.2. Это топовый SKU, содержит 32 ядра на частоте 2,2 ГГц с возможностью буста до 2,5 ГГц.
Если верить планам Cavium, в ближайшие месяцы появится еще много SKU. Cavium утверждает, что скоро будет доступен CN9980 с частотой 2,5 ГГц, и турбо до 3 ГГц.
Cavium перечислил все свои запланированные SKU вместе с сопоставимыми Intel SKU. По определению Cavium, сопоставимый Intel SKU — это чип, который достигает того же SPECInRate (2017) под gcc, что и Cavium's SKU.
Cavium считает, что доставшийся нам CN9880 2.2 сравним с гораздо более дорогим 8164. Для нашего тестирования мы сравним его с 8176 (доступный нам Intel SKU). Не то чтобы это имело большое значение: 8176 имеет только на 3% более высокую тактовую частоту и 2 дополнительных ядра (+ 7%) по сравнению с 8164. Однако обратите внимание, что, хотя ThunderX2 Cavium может действительно конкурировать с указанными Intel SKU, они предлагают такую же производительность за одну треть стоимости Intel SKU.
В следующей части:
- Конфигурация и методология тестирования
- Подсистема памяти: пропускная способность
- Однопоточная производительность: SPEC CPU2006
- SPEC CPU2006 Cont: производительность на основе ядра с SMT
Спасибо, что остаетесь с нами. Вам нравятся наши статьи? Хотите видеть больше интересных материалов? Поддержите нас оформив заказ или порекомендовав знакомым, 30% скидка для пользователей Хабра на уникальный аналог entry-level серверов, который был придуман нами для Вас: Вся правда о VPS (KVM) E5-2650 v4 (6 Cores) 10GB DDR4 240GB SSD 1Gbps от $20 или как правильно делить сервер? (доступны варианты с RAID1 и RAID10, до 24 ядер и до 40GB DDR4).
Dell R730xd в 2 раза дешевле? Только у нас 2 х Intel Dodeca-Core Xeon E5-2650v4 128GB DDR4 6x480GB SSD 1Gbps 100 ТВ от $249 в Нидерландах и США! Читайте о том Как построить инфраструктуру корп. класса c применением серверов Dell R730xd Е5-2650 v4 стоимостью 9000 евро за копейки?