Всем привет! С вами снова Максим. Сегодня немного расскажу про плату управления для нашего сервера. В общем-то, она не отличается особенной сложностью, но и пропускать этот компонент тоже никак нельзя — мы с коллегами решили, что все существенные подсистемы и компоненты сервера должны быть освещены.
Тут, может быть, сразу последует вопрос — а зачем вообще выносить функции управления с материнской платы на отдельную карточку? Зачем умножать число компонентов, не проще ли всё засунуть на материнку, как это обычно делают производители серверов?
Согласен, в обычных условиях и мы поступили бы именно так — но в этом проекте и в таком вопросе пришлось поступить нестандартно. Из-за плотности компоновки материнской платы просто не было лишнего места для размещения чипов BMC, USB-хоста, PCIe-коммутатора и разводки всех связанных с ними цепей. А кроме того, просто не было места на задней панели шасси для установки коннекторов Ethernet/USB напрямую на материнской плате. В общем, мы решили не усложнять и без того сложную системную плату, и вынесли все эти компоненты на отдельную плату управления. Этот способ, кроме всего прочего, даёт больше гибкости в плане будущих доработок и изменений.
Собственно, структурная схема платы весьма проста:
Структурная схема платы управления сервером.
Главный компонент — чип BMC ASPEED AST2400, очень популярный и наверняка многим хорошо знакомый. У него есть своя выделенная память DDR3 объёмом 512 МБ.
К BMC подключен хост USB3.0, для которого мы используем чип TI7340. От него два порта USB3.0 выводятся наружу. Также к BMC прицеплен двухканальный контроллер Gigabit Ethernet (BCM5720), порты которого выведены наружу. Это очень распространённый контроллер, который отлично поддерживается архитектурой POWER.
Всю эту компанию объединяет PCIe-коммутатор (по цене оптимально было поставить PEX8714), напрямую присоединённый к разъёму для подключения к системной плате. Он разводит PCIe x4 на x2 и 2 по x1.
Разъём для подключения к системной плате имеет небольшую особенность. Сам-то коннектор полностью стандартный. Но чтобы полностью исключить установку платы управления в обычный PCIe-слот (на материнке у нас есть специальный выделенный слот для платы управления), мы развернули коннектор на 180 градусов и сдвинули его относительно стандартного для PCIe размещения.
На схеме можно также заметить видеовыход VGA и два последовательных порта — их наружу не выводили, оставили в виде header-ов. Они нужны в основном для отладочных целей — да и на внешней панели низкопрофильной PCIe-карты просто не осталось места после размещения двух USB и двух Ethernet портов.
Собственно, геометрия платы получилась такая (плата низкопрофильная, но длинная):
В левой стороне изображения задняя панель платы — из неё выведены 2 порта USB3.0, а под ними — сдвоенные порты GbE.
Покажу и нашу любимую техноживопись дорожками по плате:
Сигналы и питание разведены по 8 слоям.
Считаю, отлично годится, чтобы распечатать в цвете и повесить на стенку — нарядно, воодушевляюще, и очень жизненно! :)
Пожалуй, стоит ещё немного сказать про BMC. Прошивку для него мы разрабатываем сами на основе OpenBMC. Собственно, задачи стоят простые:
Получившуюся в результате версию, естественно, в OpenBMC будем коммитить.
Можно ли обойтись без этой платы?
Тут, может быть, сразу последует вопрос — а зачем вообще выносить функции управления с материнской платы на отдельную карточку? Зачем умножать число компонентов, не проще ли всё засунуть на материнку, как это обычно делают производители серверов?
Согласен, в обычных условиях и мы поступили бы именно так — но в этом проекте и в таком вопросе пришлось поступить нестандартно. Из-за плотности компоновки материнской платы просто не было лишнего места для размещения чипов BMC, USB-хоста, PCIe-коммутатора и разводки всех связанных с ними цепей. А кроме того, просто не было места на задней панели шасси для установки коннекторов Ethernet/USB напрямую на материнской плате. В общем, мы решили не усложнять и без того сложную системную плату, и вынесли все эти компоненты на отдельную плату управления. Этот способ, кроме всего прочего, даёт больше гибкости в плане будущих доработок и изменений.
Что внутри?
Собственно, структурная схема платы весьма проста:
Структурная схема платы управления сервером.
Главный компонент — чип BMC ASPEED AST2400, очень популярный и наверняка многим хорошо знакомый. У него есть своя выделенная память DDR3 объёмом 512 МБ.
Под спойлером краткая ориентировка про BMC, вряд ли интересная опытным в этих сферах людям.
BMC — это Baseboard Management Controller, контроллер управления системной платой. Он включается при подаче дежурного напряжения на системную плату (т.е. когда кабель подключается к блоку питания), загружает Linux из собственной ROM-памяти. В рабочем режиме мониторит работу системы — собирает информацию с датчиков (обороты вентиляторов, температуры, напряжения и токи на компонентах, датчик проникновения в корпус), считывает коды ошибок памяти, позволяет управлять компонентами системы как автоматически, так и вручную через сеть. Ведёт журналы мониторинга системы, может включать/выключать/перезагружать систему, обновлять прошивку ROM хоста, и т.д. В общем, недремлющая рабочая лошадка.
К BMC подключен хост USB3.0, для которого мы используем чип TI7340. От него два порта USB3.0 выводятся наружу. Также к BMC прицеплен двухканальный контроллер Gigabit Ethernet (BCM5720), порты которого выведены наружу. Это очень распространённый контроллер, который отлично поддерживается архитектурой POWER.
Всю эту компанию объединяет PCIe-коммутатор (по цене оптимально было поставить PEX8714), напрямую присоединённый к разъёму для подключения к системной плате. Он разводит PCIe x4 на x2 и 2 по x1.
Разъём для подключения к системной плате имеет небольшую особенность. Сам-то коннектор полностью стандартный. Но чтобы полностью исключить установку платы управления в обычный PCIe-слот (на материнке у нас есть специальный выделенный слот для платы управления), мы развернули коннектор на 180 градусов и сдвинули его относительно стандартного для PCIe размещения.
На схеме можно также заметить видеовыход VGA и два последовательных порта — их наружу не выводили, оставили в виде header-ов. Они нужны в основном для отладочных целей — да и на внешней панели низкопрофильной PCIe-карты просто не осталось места после размещения двух USB и двух Ethernet портов.
Как выглядит плата
Собственно, геометрия платы получилась такая (плата низкопрофильная, но длинная):
В левой стороне изображения задняя панель платы — из неё выведены 2 порта USB3.0, а под ними — сдвоенные порты GbE.
Покажу и нашу любимую техноживопись дорожками по плате:
Сигналы и питание разведены по 8 слоям.
Считаю, отлично годится, чтобы распечатать в цвете и повесить на стенку — нарядно, воодушевляюще, и очень жизненно! :)
Пожалуй, стоит ещё немного сказать про BMC. Прошивку для него мы разрабатываем сами на основе OpenBMC. Собственно, задачи стоят простые:
- зафиксировать требования к прошивке и расставить приоритеты по их реализации;
- поднять исходный вариант на нашем сервере (адаптировав базовый функционал к нашему железу);
- добавить нужный для нас функционал.
Получившуюся в результате версию, естественно, в OpenBMC будем коммитить.