Всем привет! С вами снова Максим. Сегодня немного расскажу про плату управления для нашего сервера. В общем-то, она не отличается особенной сложностью, но и пропускать этот компонент тоже никак нельзя — мы с коллегами решили, что все существенные подсистемы и компоненты сервера должны быть освещены.

Можно ли обойтись без этой платы?


Тут, может быть, сразу последует вопрос — а зачем вообще выносить функции управления с материнской платы на отдельную карточку? Зачем умножать число компонентов, не проще ли всё засунуть на материнку, как это обычно делают производители серверов?

Согласен, в обычных условиях и мы поступили бы именно так — но в этом проекте и в таком вопросе пришлось поступить нестандартно. Из-за плотности компоновки материнской платы просто не было лишнего места для размещения чипов 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. Собственно, задачи стоят простые:

  1. зафиксировать требования к прошивке и расставить приоритеты по их реализации;
  2. поднять исходный вариант на нашем сервере (адаптировав базовый функционал к нашему железу);
  3. добавить нужный для нас функционал.

Получившуюся в результате версию, естественно, в OpenBMC будем коммитить.
Поделиться с друзьями
-->

Комментарии (25)


  1. erlyvideo
    01.10.2016 14:18

    простите, немного не понял: вы сами скомпоновали материнку и к ней ещё приделали такую плату с пачкой разъёмов?


    1. czed
      01.10.2016 17:52

      ИМХО все очевидно:
      Есть мать — https://habrahabr.ru/company/yadro/blog/308508/
      На матери кроме разъемов памяти и слотов расширения нет ничего и быть не может, ибо не помещается.
      Есть отдельный Management модуль с BMC о котором эта публикация.


      1. Paging
        01.10.2016 22:35

        Да, все верно.


    1. Paging
      01.10.2016 22:35

      Выше уже правильно написали — в целом да, все именно так :)


  1. maxbrsw
    01.10.2016 17:52

    Здравстуйте!

    Позвольте, пожалуйста, полюбопытствовать- как Вы и/или Ваши PCB Designer-ы/CAD librarian-ы, разрабатывают библиотеки футпринтов? Просто смотрю под увеличением на плату и вижу несколько принципиально разных методологий, в числе которых большой интерес представляют скругленные пады: возможно это глюк рендера Allegro, однако сравнивая с результатом PCB Library Expert PRO последней версии, пресловутое скругление в некоторых местах видится несколько с перебором.

    Также хотелось бы спросить вот что: правильно ли я понимаю, в Ваших библиотеках футпринтов не используется courtyard(особенно пропорциональный), при этом зазоры между партами контролируете только через DFA boundary?


    1. Paging
      01.10.2016 22:43

      Библиотеки — вещь во многом историческая (зачем заново рисовать футпринт который был нарисован еще пять лет назад?), отсюда может быть некоторый зоопарк конечно: что-то рисовалось давно и совсем другими людьми и даже в бытность нашу в других компаниях, где-то просто берутся футпринты от вендоров компонентов. Основной принцип простой: работает — не трогай!

      Зазор контролируется по DFA.


      1. maxbrsw
        02.10.2016 03:15

        Правильно ли я понимаю, вы не следуете IPC-7351, и стало быть, никогда не устанавливаете компоненты courtyard edge-to-edge(т.е по-настоящему плотная упаковка)? И вытекающий вывод- в ваших платах возможны футпринты сделанные по «любой» методологии и/или с любой плотностью во вышеозначенному стандарту: главный критерий- раньше запаивалось и «заработало»?

        Что касается «новый футпринт vs. старый 5 летней давности»- очевидно что результат в пользу нового футпринта, ибо по вышеприведенному стандарту поменялся что land pattern, что courtyard: все это имеет критическое значение как в плане качества пайки, так и возможности устанавливать плотно компоненты. Говоря же о «футпринтах вендоров», очень часто бывает что они сделаны либо кривовато, либо попросту скопированы с сомнительных мест- особенно это касается платных библиотек американского происхождения.


        1. Paging
          02.10.2016 08:57

          Не совсем так. Мы в первую очередь ориентируемся на рекомендации производителей компонентов из документации на компоненты. Если там футпринт отсутствует — естественно делаем по IPC. Иногда футпринты слегка правятся при получении фидбека от наших партнеров — производителей PCB (это может быть вызвано их технологическими ограничениями или опытом).

          Если компонент пять лет назад прекрасно паялся и мы не имели брака с ним — нет повода считать, что брак появится сейчас из-за того, что в IPC изменились рекомендации. И здесь даже не то, что «лучшее — враг хорошего» — просто у нас и без перелопачивания по десять раз библиотек хватает занятий. И да, никакие платные библиотеки (или просто библиотеки скачанные непонятно откуда) мы не используем. Логика всегда простая, в порядке убывания предпочтительности — либо берется уже готовый футпринт от производителя компонента (кто-то выкладывает их в явном виде, где-то можно быстро выдрать из выложенных референс-дизайнов), или рисуем его сами по рекомендациям из datasheet'а, или рисуем сами по IPC. И естественно везде не выключаем голову (это насчет кривовато сделано — да, бывает, но редко довольно).


  1. hardegor
    01.10.2016 17:52

    > Считаю, отлично годится, чтобы распечатать в цвете и повесить на стенку — нарядно, воодушевляюще, и очень жизненно! :)
    Так тогда сделайте картинку в высоком разрешении и raw/bmp/tiff-формате.


    1. Paging
      01.10.2016 22:38

      А PNG чем плох? Он же без потерь жмет.


  1. VJean
    01.10.2016 17:52

    Вы издеваетесь?


    1. Paging
      01.10.2016 22:35

      Нет.


      1. VJean
        01.10.2016 23:11
        +1

        Я понимаю, что это блог компании и описываемая железка наверняка с кучей навешанных ярлыков авторских прав, патентов, NDA и т.д. Открывая статью на хабре в хабе Разработка с подобным названием (не от ализара) хочется прочесть что-то более техническое и более развернутое, а не упоминание пары чипов на пару картинок.
        Вкратце: очень разочаровали.


        1. czed
          01.10.2016 23:15
          -1

          Зачем? Это мало кому интересно.
          При всей своей технической направленности — данный ресурс является в первую очередь развлекательным. Поэтому тексты должны читаться легко а картинки быть красивыми.


        1. Paging
          02.10.2016 09:00
          +1

          Мы описываем разработку сервера, и статьи в целом освещают его устройство (даже эта, хотя она конечно совсем поверхностная, но тем не менее). Можно начать описывать какие-то совсем узкие технические аспекты — но круг лиц, кому это хоть как-то может быть интересно будет совсем небольшим.

          Для нас эти статьи в первую очередь — просто worklog, а не цикл мастер-классов.


  1. Xalium
    01.10.2016 17:52

    А в какой программе сделана разводка платы, в которой (проге) сделаны скриншоты?


    1. Paging
      01.10.2016 22:34

      Cadence Allegro


      1. maxbrsw
        02.10.2016 03:17

        Используете ли IFP/GRE а также опцию предоставляющую возможность одновременной работы нескольких человек?


        1. Paging
          02.10.2016 09:04

          Первое — да, а тимдизайн — нет.


          1. maxbrsw
            02.10.2016 10:05

            Т.е по сути отдельно взятый проект серверной матплаты разводит также отдельно взятый человек?


            1. Paging
              02.10.2016 13:18

              Отдельно взятую серверную плату делает один человек, да.


              1. maxbrsw
                02.10.2016 17:40

                Если не секрет, сколько по времени «в среднем» это занимает?


                1. Paging
                  02.10.2016 18:33

                  Единицы месяцев. Больше месяца назад у нас был первый пост, в котором были видны уже некоторые прикидки и наброски по плате. Они сами по себе, понятное дело, требовали времени. Сейчас работа по трассировке сильно продвинулась, но сказать что через две недели совсем закончим — точно нельзя. Плюс еще будет цикл ревью, как внутреннего, так и внешнего (IBM) — это тоже время.


  1. foxmuldercp
    03.10.2016 11:32

    а почему отказались от стандартного порта и сделали свой для платы?


    1. Paging
      03.10.2016 11:46

      Помимо PCIe через этот коннектор проходит еще много всяких специфических сигналов (например для подключения BMC к менеджмент-шине процессоров), не предусмотренных в стандартной распиновке PCIe слота.