Привет всем!
Довольно долго от нас не было вестей — превращали схемы и чертежи сервера в реальное железо. Теперь у нас появилась рабочая первая ревизия, и в преддверии майских праздников можно порадовать вас рассказом, чем занимались наши разработчики последние полгода. И конечно, показать результат — в этой статье впервые опубликуем фотографии, а не только схемы и модели.
Райзеры с памятью в первой ревизии нашего сервера.
Сделали мы немало:
- Завершили трассировку и изготовили образцы материнских плат, плат управления и плат райзеров памяти.
- Разработали и отправили в производство платы коммутаторов PCIe, платы для вентиляторов и платы индикации и интерфейсов (с кнопками, разъёмами и светодиодами).
- Разработали и запустили в производство платы распределения питания от CRPS-источников и бэкплейны для NVMe-дисков.
- После приезда первых образцов прошли этап отладки материнской платы, платы управления и райзеров памяти.
- Доработали корпус сервера — во время проектировки плат потребовались небольшие изменения в нескольких местах.
Дальше расскажу про каждую тему по очереди, и для каждой подкину свежие порции стильной инженерной графики и фотографий. За хорошие фотки спасибо коллеге-программисту, увлекающемуся фотографией — поснимал компоненты вчера, пока был перерыв в тестах железа (фотку для шапки статьи пришлось снимать уже после его ухода домой).
Материнская плата
С момента публикации нашей вводной статьи про материнку мы занялись окончательным согласованием всех требований к расположению шин питания и разъёмов. Также зафиксировали схемы райзера памяти — они влияют на pin-out разъёмов для райзеров на материнской плате. Утвердили схемы платы распределения питания от CRPS-блоков и распиновку разъёмов OCuLink (Nano-Pitch).
По питанию всё-таки получилось разместить и развести VRM для процессоров на материнской плате — дополнительные платы не понадобились. Учитывая плотность платы, необходимую площадь питающих полигонов и количество переходных отверстий, необходимых для прохождения большого тока, — пришлось повозиться. И после этого ещё выполнили тонкую настройку высокоскоростных цепей для наилучшего качества сигнала.
На выходе получилось могуче:
Материнская плата сервера во всей беспощадной для глаз красе.
Где-то трассировка была попроще:
Трассировка шины DMI рядом с разъёмами для райзеров памяти.
Где-то чуть посложнее:
Трассировка шины A-Bus между двумя процессорами. Немного тёмной магии и ловкости рук.
А на этой картинке видно, как упакованы те самые VRM-ы процессоров:
VRM процессоров в сплочённом ряду.
И вот, наконец, можем предъявить результат работы над материнкой. Так она выглядит после изготовления и монтажа:
Первая ревизия материнской платы.
Райзер памяти
Райзер памяти мы сделали на основе референсного дизайна OpenPOWER. Основное отличие заключается в том, что мы увеличили количество DIMM-разъёмов до двух на канал (был один) при приблизительно одинаковых габаритах платы.
Вот иллюстрации райзера из референсного дизайна и нашего:
Референсный дизайн райзера.
А это наш дизайн райзера.
Чтобы разместить большее количество разъёмов, пришлось сразу по нескольким направлениям модифицировать референсный дизайн:
- Заменили SMD DIMM коннекторы на Press-Fit, так как их можно разместить гораздо ближе друг к другу.
- Приблизили слоты DIMM к чипу буфера памяти.
- Выкинули из схемы множество отладочных коннекторов.
- Оптимизировали схематику подсистемы питания, чтобы снизить площадь, занимаемую компонентами.
- Использовали более плотный коннектор для подключения к материнской плате.
В ходе разработки этой платы столкнулись с двумя основными сложностями:
1. Разводка стала более плотной
Основная проблема была с разводкой шины адреса и команд, так как при сближении DIMM и Memory Buffer мы не оставили себе места для выравнивания этой шины (она находится по центру DIMM сокета). Чтобы преодолеть эту проблему, мы вынесли часть шины адреса и команд на внешние слои (в референсном дизайне вся разводка осуществлена на внутренних слоях).
Разводка райзера памяти.
Скорость распространения сигналов на внешних и внутренних слоях разная – поэтому выравнивание этой шины мы осуществляли в единицах времени, а не длины.
2. Ограничения коннектора
Вторая проблема заключалась в том, что используемый нами коннектор не имеет 85- Омной версии, только 100-Омную. В то время как быстрая шина DMI, проходящая через него имеет импеданс 85 Ом.
Однако мы пришли к выводу, что вследствие падения импеданса на пэдах коннектора примерно до 60 Ом, использование 100-Омного коннектора даже более предпочтительно, так как приводит к определенной компенсации данной неравномерности.
Вот что получилось в итоге:
Райзер памяти. Под радиатором прячется буфер памяти Centaur. Для экономии места использовали плотные 240-контактные разъёмы Samtec Searay SEAF-RA.
Плата для коммутаторов NVMe-дисков
Плата с PCIe-коммутаторами в сервере находится над дисками — как писали в обзорной статье про сервер, на бэкплейне их разместить просто физически невозможно, слишком большие чипы. Уместили под самую крышку сервера.
На плате помещаются 2 чипа коммутаторов PCIe, и каждый из них в нашем случае может состоять из 2 независимых частей (партиций). Итого до 4 свитчей, и каждый из них подключен к своему процессору по шине PCIe Gen3 x16. Эти соединения мы сделали кабелями OCuLink. В случае если в системе установлено меньшее число процессоров — можно переконфигурировать разбиение свитчей чтобы обеспечить необходимую связь дисков с процессорами.
Во время разработки и трассировки пришлось учитывать множество ограничений по расположению компонентов на плате, вызванных жёсткими требованиями по высоте. Из-за того, что под платой находятся дисковые корзины, на нижнюю сторону платы мы могли поставить только пассивные компоненты размера 0402. На верхней стороне мы были ограничены высотой 9 мм.
Пришлось подумать и над относительным расположением разъёмов OCuLink и коммутаторов, чтобы удобнее было трассировать и подключать кабели при сборке сервера. Получилась такая схема расположения компонентов:
Схема платы коммутаторов для NVMe-дисков, внизу видны выступающие части дисковых корзин.
Такое расположение чипов и разъёмов потребовало сделать отдельный конфигурационный файл для каждого из чипов. Выбранные нами чипы коммутаторов имеют 5 блоков линий x16 (производитель чипов — Microsemi — называет их стеками), которые делятся между двумя партициями. Из-за того, что для удобства трассировки и монтажа чипы развёрнуты относительно друг друга, было удобно прописать разным чипам разные линии для подключения к хосту и к NVMe-дискам. Само по себе не вызывает сложностей, но на производстве придётся следить, чтобы в каждый из двух чипов была прошита предназначенная для него конфигурация.
Верхний слой платы коммутаторов.
Нижний слой платы коммутаторов. Welcome to the dark side.
С внутренней стороны на краю платы находится линейка edge-коннекторов, через них плата подключается к дисковому бэкплейну. А с передней стороны мы разместили на ней сигнальные светодиоды для дисков — таким способом упростили конструкцию дисковых модулей и дискового бэкплейна. Сама плата ещё находится в производстве, её фотографии покажем в следующих статьях.
Дисковая объединительная плата (backplane)
В бэкплейн подключаются до 24 NVMe-дисков. Поскольку дисковые светодиоды мы вынесли на плату коммутаторов, не пришлось использовать световоды для вывода индикации на переднюю панель. Если бы светодиоды были на бэкплейне, то без 24 длинных световодов обойтись бы не получилось (они обычно размещаются в трее для дисков).
Плата бэкплейна стоит поперёк всего сервера перпендикулярно воздушному потоку. Чтобы обеспечивать хорошее охлаждение для процессоров и памяти, пришлось сделать в ней много равномерно расположенных отверстий. Старались и размер отверстий сделать побольше, увеличивая плотность трассировки и продумывая оптимальное расположение компонентов на плате. Но во время трассировки пришлось всё-таки немного уменьшить размеры прорезей для качественного прохождения высокоскоростных PCIe сигналов к дискам.
Cхема дискового бэкплейна. Дорожки навевают воспоминания о Гигере.
Питание на плату поступает через 3 пары мощных пинов (RADSOK) — площадки для них хорошо видно на картинке внизу. Подается питание на диски, а также на плату коммутаторов через edge-разъёмы.
Дисковый бэкплейн, вид со стороны дисковых корзин.
Плата вентиляторов (fan midplane)
Сразу за дисковым бэкплейном в нашем сервере располагаются 5 вентиляторов. Они размещены в направляющих и подключены к мидплейну с помощью небольших плат, которые размещены на корпусе вентилятора.
Кроме передачи управляющего сигнала на вентиляторы и обратной связи от них, плата вентиляторов распределяет питание от CRPS-источников к вентиляторам, а также к дисковому бэкплейну. Общий ток достаточно высок (до 75 А в пике), а ширина платы не очень велика, поэтому пришлось создать мидплейн с увеличенной толщиной меди на слоях. Питание от CRPS-источников подвели через медные шины.
Плата вентиляторов. Несложная.
Плата распределения питания
Это почти самая маленькая плата в сервере, но она играет важную роль – снимает электропитание от двух блоков и распределяет его на модули сервера. Передавать питание от этой платы в остальную систему мы решили через с помощью медных шин через мощные контакты (серия RADSOK).
Дежурное (Standby) питание передается через edge коннектор. Также через этот разъём идут сигналы на включение блоков питания, «power good» сигналы CRPS, а также данные от датчика тока, который измеряет потребление дисков и вентиляторов.
Плата распределения питания — маленькая, но мощная.
Что дальше?
После майских праздников будем рассказывать более детально про тестирование и отладку разных подсистем. Следите за обновлениями!
Автор: SemenovNV