Корпус и модули в сборе
Корпус и модули в сборе

Известно, что для увеличения устройств подключаемых к PCIe, можно либо разбить шину на несколько корневых контроллеров, то что называется PCIe bifurcation, либо подключить к шине коммутатор PCIe. В любом случае, для подключения дополнительных устройств также понадобятся разъемы. Существует несколько типов таких разъемов, но для подключения дисков NVME нужны разьемы M.2 M-key.

Следовательно, необходим такой модуль, который содержит коммутатор PCIe, а также несколько разъемов М.2. Такие модули существуют в виде полноценных PCIe карт. При всех достоинствах таких карт, чтобы их наращивать необходимо приложить немало усилий и тех средств.

Чтобы решить эту проблему, я разработал небольшой модуль с коммутатором PCIe и интерфейсом OCuLink, у которого на плате есть четыре разъема М.2 M-key. Модули можно включать друг за другом, либо подключать несколько модулей к одному узловому. Порядок и топология особого смысла не играет, по крайней мере, каких то особых ограничений мне неизвестно. Недавно я уже публиковал статью на Хабр, в которой встречался этот модуль, но сейчас речь немного о другом его применении.

В данном случае речь идет про некий конструктор шины PCIe в основе которого лежит данный модуль. Есть еще пара необходимых элементов, а именно, кабель OCuLink и адаптер M.2 / OCuLink. По сути, только этих трех компонентов достаточно чтобы даже из одного разъема М.2 получить неограниченное количество точек подключения новых дисков и контроллеров PCIe. Если проводить аналогию, то первое, что приходит в голову это конструктор Lego, с его базовыми brick’ами.

Пожалуй, проще всего будет показать принцип работы этого конструктора шины PCIe на примере добавления в существующую систему 10 дополнительных разъемов M.2 для подключения практически любой периферии, такой как диски NVME, контроллеры PCIe / SATA, контроллеры PCIe / USB 3.0, а также карты памяти CFexpress Type B. Этот ряд не является уникальным, а был выбран мной исходя только из доступных средств.

Шаг 1. Подключение первого модуля

В самом начале один из трех модулей подключался к разъему M.2 на материнской плате:

Установка первого модуля
Установка первого модуля

В итоге получалось четыре разъёма М.2, из которых два были заняты дисками для организации зеркала:

Вид на перный модуль
Вид на перный модуль

Шаг 2. Подключение второго модуля

Далее в один из разъемов М.2 первого модуля подключался адаптер M.2 / OCuLink. На него заходил кабель OCuLink и отдельно кабель питания:

Подключение второго модуля
Подключение второго модуля

С добавлением второго модуля, в систем стало доступно дополнительно семь разъемов М.2:

Вид на корпус с двумя модулями
Вид на корпус с двумя модулями

Второй модуль был использован лишь частично за счет установки адаптера для карты памяти CFexpress:

Устновка адаптера CFexpress на второй модуль
Устновка адаптера CFexpress на второй модуль

Шаг 3. Подключение третьего модуля

Подключение третьего модуля происходило в точности также как для второго модуля.

Заранее подготовил модуль, установил на него два контроллера PCIe / SATA и контроллер PCIe / USB3.0:

Вид на конструкцию с тремя модулями
Вид на конструкцию с тремя модулями

На этом шаге я решил остановиться, так как у меня просто уже не осталось подходящих M.2 устройств. После добавления третьего модуля в системе стало доступно десять разъемов M.2, из которых занятыми оказались лишь шесть, остальные четыре остались свободными.

Также установил дополнительный SATA диск чтобы проверить работу PCIe / SATA контроллера. На плате модуля было предусмотрено место для установки 2.5” диска, а также разъем питания::

Установка диска SATA
Установка диска SATA
Индикация работы SATA
Индикация работы SATA

Проверка системы

После запуска системы была проведена небольшая проверка результата. Так команда lspci показала наличие трех коммутаторов PCIe и всех тех железок, которые удалось подключить по сути к одному M.2 на материнской плате::

Вывод команды lspci
Вывод команды lspci

Ожидаемо дерево PCIe выглядело следующим образом, здесь цифрами обозначены все три коммутатора PCIe:

Дерево шины PCIe
Дерево шины PCIe

Также проверка в OMV показала, что все диски и карта видны. Карту я сделал сам из готового корпуса и диска Samsung размером 2230, поэтому, она видна как диск::

Список дисков в OMV
Список дисков в OMV

В итоге, получилось практически за один вечер собрать целую систему с дополнительными десятью разъемами M.2 и подключить к ним шесть устройств, не считая SATA диска. Конечно, удалось рассказать не все в рамках этой статьи, о том, что осталось за рамками, можно найти в нашем новостном канале. Так, понятно, что если все вешать на один M.2, то в какой то момент это может сказаться на общей производительности. Также при таком способе наращивания PCIe портов, накапливается джиттер, питание не вечное, но все эти моменты можно решить за счет дополнительной платы синхронизации, отдельных кабелей питания, может быть отдельного модульного источника питания, а также более производительных коммутаторов PCIe. Все это может стать неким конструктором из готовых модулей, который подходит абсолютно для любой платформы, включая как x86, так и ARM.

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


  1. kibb
    23.06.2025 18:49

    Можете объяснить, как "разбить шину на несколько корневых контроллеров"? И что такое корневой контроллер? Если вы имеете ввиду pci(e) host bridge/root port, то как вы собираетесь добавлять кусочки в io hub на процессоре?

    Практический вопрос, где вы берете карты расширения с oculink? Те как из мини-pc с oculink сделать расширяемую машину. Такой же вопрос про tb 3/4.


    1. sdy Автор
      23.06.2025 18:49

      Встроенный контроллер PCIe RK3588, например, может работать в режимах один в x4, либо два в x2, либо четыре в x1

      Карты M.2 | OCuLink заказываю с Али, также Озон возит. Что такое tb 3/4 ?


      1. kibb
        23.06.2025 18:49

        Thunderbolt 3 и 4, он туннелирует pcie.

        Можете набросать линков на oculink-карты? Вообще было бы идеально что-то наподобие корпуса расширения со слотами PCIe, втыкаемого в oculink или tb. Это звучит как корпус для внешней видеокарты, и в принципе им и является. Но вот приличных устройств на али я не находил (нужно не для видео).


        1. sdy Автор
          23.06.2025 18:49

          Про тандерболт пока не думал, просто не до него было

          Про линки не очень понял, зависит от коммутатора же ведь, сейчас самый простой использую. В планах на 12-портовом сделать аналогичный модуль, на 24 портовый пока задачи не было

          Про внешний кейс, имеет смысл OCuLink 8 ставить сразу. Точно видел адаптеры, а что касается внешнего корпуса, то вроде ничего сложного, но скорее всего надо будет уже ретаймеры ставить


          1. kibb
            23.06.2025 18:49

            Под линками я имел ввиду ссылки на позиции товаров.

            Я и хочу готовый внешний корпус с ретаймерами, со свитчем (для нескольких слотов), с блоком питания, и с oculink для апстрима.


            1. sdy Автор
              23.06.2025 18:49

              а, понял. Несколько раз брал адаптеры, они бывают -U - это когда вверх от разъема кабель уходит и -D - кабель к разьему идет. Один раз продаван напутал и прислал другого типа. Так что тут надо быть осторожным. Последний раз брал здесь: aliexpress.ru/item/1005008182661050.html


  1. kenomimi
    23.06.2025 18:49

    Классная штука.

    Сам чип хаба не нагревается? Не отваливается, если его нагрузить в 100%? Просто на майнерских платах на хабах стоят нефиговые такие радиаторы, тут же ничего нет...


    1. sdy Автор
      23.06.2025 18:49

      Не греются они, по спеке у них потребление при максимальной нагрузке порядка полутора ватт У них термал пад, плата 4х слойная, так что все тепло по плате рассеивается. Возможно более жирные чипы, у которых по 12 или 24 порта и будут греться, пока не пробовал


  1. fcoder
    23.06.2025 18:49

    Ух ты, спасибо за ликбез! Правильно я понимаю, что нужно что-то одно: ИЛИ поддержка PCIe-бифуркации на мат.плате ИЛИ "коммутатор PCIe"? У меня в домашнем насе бифуркации нет, какие слова гуглить в конечной плате расширения? Пробовал добавить вот такую штуку себе - https://www.amazon.com/dp/B0B7BHM954 но ей-таки необходима бифуркация


    1. sdy Автор
      23.06.2025 18:49

      Коммутатор более универсальное решение, так как он подходит абсолютно к любой материнке, независимо поддерживает проц/контроллер бифуркацию или нет. К тому же бифуркация все равно будет ограничена количеством доступных лэйнов, а в варианте с коммутатором, число лэйнов может только расти. Так в данном модуле, на входе два лэйна, а на выходе четыре лэйна, причем эти четыре лэйна могут работать как четыре отдельных порта, либо как один сдвоенный и два по x1. Также, как в моем примере было с тремя модулями, коммутаторы можно включать один в другой, как бы дерево получается. Проблема только в джиттере, но тут уже технический вопрос скорее будет

      Комбинация бифуркация + коммутаторы = самое оптимальное решение

      По ссылке это обычный адаптер для материнок, поддерживающих бифуркацию. Адаптеры с коммутаторами стоят от 10тр и выше в зависимости от производителя


  1. hw_store
    23.06.2025 18:49

    Забавно только то, что никто это ни черта не покупает. Даже один заказчик у нас требовал мост-разветвитель на 2 mini PCIe от одного тайваньского производителя, с которым мы уже 9 лет не поддерживаем отношений, но когда ему было сказано, что "мы можем сделать, если вы оплатите разработку или закажете минимум 20шт", они заткнулись. Купили бы, если бы было "со склада". В итоге мы сделали такой мост в инициативном порядке, сделали две рассылки по клиентской базе и только через год получили один заказ на 15 штук. Много ли денег можно заработать на пятнадцати мостах? Другие модели вообще не заказывают.


    1. sdy Автор
      23.06.2025 18:49

      Прекрасно понимаю вас. Думаю надо проталкивать не отдельные компоненты, а систему, создавать сервис, поддержку, нацеливать на решение в целом задач. Например, собрать модульный NAS, модульный софтовый маршрутизатор, комбинацию этих модулей чтобы NAS+Router получился. Можно и как отдельную свою систему на основе своих модулей, а также как систему апгрейда для существующих компов. Если еще и софт свой, сборки готовые, то тогда и модули можно будет продавать нормально, а не только тем, кто и сам софтину накатить может


      1. hw_store
        23.06.2025 18:49

        Я вам ещё в прошлой статье откомментировал, что рынок сего не понятен. Подключая 12 или 16 SSD-модулей к одному root-порту, вы создаёте бутылочное горлышко. Раздавать контент сотне клиентов по сети? надо ли для этого вписываться в конструктив mini ITX? А NAS корпоративного класса работает с другими размерностями и другими скоростями. В космос - не пустят, там куча всяких сертификаций и др и пр.