[Перевод] PCIe для электронщиков: все нюансы использования
Итак, если вы читали предыдущие статьи по этой теме (часть 1, часть 2), то основы работы с PCIe вам уже знакомы и, возможно, у вас есть некая задумка по применению этого стандарта в своём проекте. Это может быть желание снарядить одноплатник несколькими дешёвыми, но мощными картами WiFi с PCIe для вардрайвинга, добавление второго SSD NVMe в ноутбук вместо неиспользуемого контроллера Ethernet или же подключение полноразмерной видеокарты к Raspberry Pi через навороченный переходник. Что бы вы ни собирались реализовать — давайте убедимся, что вам будут знакомы все возможности применения PCIe.
▍ Разветвление порта PCIe
Если вы уже работали с PCIe, то могли слышать термин «бифуркация», особенно в среде майнеров и любителей ковыряться в железе ПК. Бифуркация подразумевает разветвление слота PCIe на несколько каналов и как вы можете представить, является весьма интересной опцией для электронщиков. Здесь вам по факту не требуется дополнительное аппаратное обеспечение — нужно лишь добавить буфер для REFCLK. Как видите, этот сигнал по-прежнему необходим каждому получаемому порту –, но нельзя просто физически развести одну дифпару тактового генератора на все слоты одновременно, так как это приводит к появлению стабов и, следовательно, к отражению сигнала.
Микросхема буфера REFCLK получает тактовый сигнал от хоста и воссоздаёт ряд его идентичных копий, которые затем можно использовать по-отдельности. Вы могли видеть в сети разветвление х16 к четырём слотам карт NVMe — в этом случае всегда где-то в углу карты можно найти микросхему буфера REFCLK. В идеальном сценарии этого вполне достаточно для получения большего числа каналов PCIe из имеющегося одного.
На деле же правильная реализация бифуркации — дело весьма тонкое. Для этого требуется поддержка со стороны хоста — и такая поддержка оказывается довольно ситуативной в том смысле, что обеспечить бифуркацию — способны лишь некоторые чипсеты, а в большинстве материнских плат разработчики по какой-то причине предпочитают блокировать её возможность программно. Даже если вы собираете собственный хост PCIe с ППВМ и всей предполагаемой гибкостью, ваша ППВМ может запросто не поддерживать бифуркацию по внутренним причинам. Более того, вы не можете просто получить шестнадцать каналов х1 из одного слота х16 — обычно поддерживается разветвление на комбинацию из четырёх каналов х4 или, возможно, на два канала х4 в случае слота х16 с фактической шириной х8.
▍ Альтернативные пути разветвления
Тем не менее существует альтернатива, и это коммутаторы PCIe. По своей сути это массивные микросхемы, представляющие интерфейс устройства PCIe вашему хосту и множество интерфейсов хоста PCIe для всех ваших устройств. По принципу работы их можно сравнить с коммутаторами Ethernet, за исключением того, что линии коммутатора PCIe имеют роль либо хоста, либо устройства, а порты коммутатора Ethernet обычно все равнозначны. Размер этих коммутаторов варьируется от корпуса QFN для RP2040 (в случае ASM1182 — коммутатор 1:2) до размера процессора x86. Им всегда необходимо сильное охлаждение, при этом они дорогостоящи и потребляют много энергии. Если вы ищете карты для бифуркации, скажем, на AliExpress, то неизбежно наткнётесь на оснащённые коммутаторами PCIe.
Выгода их использования в том, что они не требуют особой поддержки со стороны хоста, поскольку выглядят для него как любое обычное устройство PCIe. А недостаток, опять же, в том, что они дороги и редко сопровождаются документацией. К примеру, я искала микросхемы коммутатора PCIe 1:4 и наткнулась на контроллер ASM1184 1:4, который из одного канала х1 создаёт четыре. Это было как раз то, что нужно, и через поиск в гугле я выяснила, что эта микросхема используется во множестве китайских разделительных плат, а также в десктопных материнских платах от таких производителей, как Gigabyte. При этом продаются такие платы даже в магазинах вроде Walmart.
Сами микросхемы ASM118x (1:4 для ASM1184 и 1:2 для ASM1182) также можно без проблем найти на AliExpress — основная проблема в том, что у них нет документации. Технически схема реальных устройств является базовым необходимым минимумом, поскольку подразумевается, что эти микросхемы должны работать автономно без внешнего контроля. Я нашла одну документацию для ASM1182, а мой друг — для ASM1184. Тем не менее такие компоненты, как регистры I2C для внешнего контроля остаются загадкой.
Так что, хоть чипы вроде ASM1184 и выглядят заманчиво, стоят недорого, плюс доступны на AliExpress как в виде отдельных микросхем, так и в составе готовых продуктов, их отладка может вызывать сложности. К счастью, мне известен один западный производитель, который сэкономит вам время, если вы соберётесь приобрести коммутаторы PCIe — это Diodes Incorporated, выпускающий линейку приобретённой компанией Pericom продукции с PCIe. Вы можете спокойно скачать документацию к их коммутаторам PCIe. Вам также могут встретиться коммутаторы от Broadcom, но, как можно догадаться, их открытость соответствует типичной продукции Broadcom — то есть отсутствует.
▍ Плоды майнинга
Также весьма интересно, как в некоторых товарных позициях AliExpress закрашивают маркировку ASMedia
Если вы хотите провести PCIe по кабелю, и вас вполне устраивает канал х1, то можете обойтись стандартом USB3 — в действительности это довольно неплохое средство передачи. В нём есть две высокоскоростные дифпары USB3 и, учитывая, что по части требований к целостности USB3 является довольно привередливым интерфейсом, предназначенные для него кабели отлично подходят для PCIe. В этих кабелях также есть пара USB2, с которой прекрасно сочетается пара REFCLK 100 МГц. В целом кабели USB3 и каналы PCIe х1 буквально созданы друг для друга. Осознав это, производители оборудования для майнинга заполонили рынок всевозможными аксессуарами, проводящими каналы PCIe через кабели USB3 и коннекторы — расширители слотов, коммутаторы PCIe, переходники NVMe и так далее. А с тех пор как популярность майнинга упала, все эти аксессуары стали доступны по бросовым ценам.
Типичная плата райзера состоит из платы-разъёма х1 с гнездом USB3, подключаемой к материнской плате, платы слота х16 с соответствующим гнездом USB3, а также дополнительных входов питания, иногда с регуляторами. Третьим компонентом выступает кабель USB3 с разъёмами USB-A на обоих концах. Для электронщика, проектирующего неординарный девайс с PCIe, использование этих аксессуаров может быть соблазнительным, так как гнёзда и кабели USB3 легко найти во множестве вариаций.
И на практике вы наверняка добьётесь успеха — если что и может быть подтверждением возможности задействовать PCIe таким образом, то это то, что подобные платы расширения для майнинга исправно работали у бесчисленного числа майнеров в условиях 24/7/365. Однако здесь нужно остерегаться некоторых подвохов. К примеру, существует один редко проявляемый нюанс с распиновкой — высокоскоростные дифпары TX и RX остаются на выводах USB3, но нет гарантии по поводу того, какая пара PCIe и к какой паре USB3 идёт.
Хотя ещё важнее то, что виды сигналов, подаваемые на провода +5 В и GND (да, это отдельный провод) части USB2, могут отличаться — и такое реально встречалось. Моя подруга собрала устройство с этими проводами, и у её райзеров PCIe обнаружились сигналы PEWAKE и PERST — в итоге такая схема сработала чудесно. Тем не менее позже в ходе проведённого на русском форуме майнеров расследования совместимости райзеров были обнаружены некоторые платы райзеров и коммутаторов, где по линии +5 В передавались не PERST или PEWAKE, которые вы можете ожидать в случае проектирования для конкретного имеющегося у вас райзера, а 3,3 В или даже 12 В.
Если вы проектируете что-либо для райзеров и опираетесь либо на платы «разъёма х1 материнской платы», либо «слота х16» от типичного райзера, то лучше дважды перепроверьте, чтобы те, что вы используете, действительно сочетались с задуманной распиновкой. Использование несоответствующего райзера может привести к опасной ситуации. Печально, но несмотря на то, что для райзеров есть почти определённый стандарт передачи сигнала PCIe по удобным кабелям, на деле ему никто не следует.
Также обязательно избегайте переходников питания, которые иногда идут в комплекте с такими райзерами — все эти «SATA power — PCIe 6-pin» имеют серьёзное несоответствие между входной и выходной мощностью. Если с подобными платами для майнинга возникают проблемы, то дело в использовании этих переходников, которые могут оказаться явной причиной возгорания, если ваша карта PCIe вдруг будет потреблять чуть больше питания, чем может осилить дешёвый разъём питания SATA-переходника.
▍ Все подходящие разъёмы
Подход с использованием аксессуаров для майнинга в реализации устройств с PCIe не единственный. Если вы найдёте интересную микросхему, которая подключается через PCIe, либо захотите расширить обнаруженную линию PCIe с помощью полностью подходящих средств, займитесь проектированием собственной печатной платы. Сегодня у вас есть выбор между полноразмерными слотами для десктопного применения или слотами M.2 для мобильных устройств –, а если вы ориентированы на более старое промышленное оборудование, то также подойдёт mPCIe.
Для десктопного применения существует огромное множество разъёмов PCIe на выбор. Для подключения в такой разъём вам потребуется печатная плата толщиной 1,6 мм. Такая толщина, к счастью, является стандартной толщиной печатных плат, которые вы можете заполучить от любой фабрики, и обычно соответствует самым дешёвым изделиям. При этом вам потребуется скруглить край платы, который вставляется в гнездо — зачастую эту услугу можно заказать на фабрике за небольшую плату. Но вы можете вполне сделать это сами с помощью напильника или ножа x-acto с запасным лезвием.
Что касается мобильных слотов, то я уже обширно раскрывала тему M.2 ранее. Простое руководство относительно M.2 следующее — использовать печатные платы 0,8 мм с покрытием ENIG для карты и обязательно заготовить трафарет, если вы добавляете слот M.2 на плату. Затем выбрать удобный форм-фактор разъёма — А+Е для карт WiFi, E-разъёмы для подключения карт WiFi, слоты M-key для карт PCIe вплоть до х4 и B+M для карт PCIe вплоть до х2 и для совместимости с гнёздами B-key (WWAN) и M-key (SSD). В продаже есть множество гнёзд M.2, а также шаблонов для слотов и карт. Для mPCIe подойдёт печатная плата 1 мм, конечно же, с покрытием ENIG.
Независимо от того, собираете ли вы мобильную/десктопную карту PCIe либо разъём, руководства по разводки дифпар, необходимые сигналы и высокая совместимость между шириной каналов и поколений остаются прежними. Какое бы устройство с PCIe вы ни разрабатывали, это не столь сложная задача — и благодаря отказоустойчивости PCIe, помогающей нам в наших высокоскоростных забегах, вы наверняка достигните целей своего проекта.
Telegram-канал с розыгрышами призов, новостями IT и постами о ретроиграх