PCIe для хакеров: путешествие по картам M.2
Я разработал несколько адаптеров M.2 для себя и своих друзей, и, найдя эти проекты в Интернете, люди попросили меня сделать адаптеры на заказ. Один из этих запросов весьма специфичен — адаптер, который добавляет еще один канал PCIe к слоту E-key M.2, типу слота, который вы увидите в ноутбуках для карт Wi-Fi.
Видите ли, спецификация M.2 допускает подключение двух отдельных каналов PCIe к слоту электронного ключа; однако ни одна карта Wi-Fi не использует эту возможность, за исключением некоторых действительно старых карт с поддержкой WiGig, и производители уже давно отказались от подключения второго канала. Тем не менее, есть некоторые карты, такие как двойной AI-ускоритель Google Coral M.2 E-key и недавно анонсированный uSDR, которым действительно требуется второй канал — в противном случае доступна только половина их емкости.
Непонятно, почему и Google, и WaveletSDR разработали двухканальный разъем для электронного ключа, поскольку это редкое явление; что касается карты Google, многие люди жалуются, что купленная ими плата не работает полностью. Теоретически, все, что вам нужно сделать, чтобы помочь в такой ситуации, — это получить откуда-то второй канал PCIe, а затем подключить его к разъему — и идеальный способ сделать это — получить чип коммутатора PCIe. Вы потеряете некоторую пропускную способность, потому что восходящая линия PCIe-соединения коммутатора может работать очень быстро; для таких вещей, как этот ускоритель искусственного интеллекта, это не такая уж проблема, поскольку главная задача — обеспечить доступность второго устройства. Что касается вышеупомянутых СПЗ, это может оказаться бесполезным, или вы можете что-то выиграть, но что-то потерять – не узнаешь, пока не попробуешь!
Это дружественная к хакерам проблема, которую мы можем решить ради развлечения и обучения! Имея достаточно небольшой чип переключателя PCIe, мы могли бы сделать печатную плату карты M.2, которая также имеет разъем M.2, поместив между ними переключатель PCIe, чтобы разделить входящий канал PCIe 1x на два исходящих канала 1x.
Более того, эта проблема даже решалась раньше. Этот точный адаптер уже был кем-то создан в Интернете, однако он явно не является открытым исходным кодом, и его создатель так и не начал его продавать, заявляя об отсутствии интереса. Адаптер, который мы разрабатываем сегодня, будет полностью и правильно открытым — каждый сможет изготовить свой собственный адаптер, подобный этому, если он ему понадобится, поучиться на нем или переделать его во что-то еще.
Что касается коммутатора PCIe, в прошлый раз я упомянул небольшой, дешевый и малоизученный чип коммутатора PCIe — ASM1182e, который способен создавать два канала PCIe x1 из одного. Его легко купить на Aliexpress, он используется на многих картах с разделением PCIe из Китая, стоит 6 долларов после доставки и, кажется, не требует особого обслуживания — небольшое количество внешних компонентов, автономная работа, простое подключение. К сожалению, у нас просто нет таблицы данных, которую я смог бы найти, однако есть довольно много информации, которую мы можем использовать для создания наших собственных плат, и я покажу вам, как вы можете проектировать даже микросхемы. если у вас нет их технических данных.
Сегодня мы решаем давнюю проблему для аппаратной ниши: создаем адаптер M.2 с тремя каналами PCIe в общей сложности и проводим реверс-инжиниринг чипа коммутатора PCIe без каких-либо технических описаний. Я также хотел бы сделать эту доску плотно упакованной, чтобы показать вам, что нужно, от страницы схемы до собранной карты.
В качестве основы для этой конструкции я буду использовать один из своих дизайнов адаптеров M.2, а именно переходник с клавиши A+E на M-ключ, позволяющий вставить SSD в слот для карты Wi-Fi ноутбука. Это двухслойная плата, потому что она могла бы быть, но сегодня два слоя не подойдут – для этой конструкции потребуется четыре слоя, поскольку в противном случае правильная маршрутизация каналов PCIe и заземление повсюду будут слишком трудными! Если вы можете повторно использовать чужой дизайн для своих целей, обязательно сделайте это — здесь есть проверенные символы и посадочные места, а это означает, что мне придется перепроверять меньше переменных! В результате нам не нужно разрабатывать карту M.2 с нуля.
То же самое касается эталонной схемы, на основе которой мы можем реконструировать ASM1182 — в частности, она взята из серийного ноутбука. Сегодня нам повезло: Clevo — одна из немногих компаний, которая имеет (или имела) традицию публикации схем своих ноутбуков, чему, вероятно, способствовал тот факт, что, в отличие от любого другого производителя ноутбуков, они фактически разрабатывают свои собственные материнские платы. Единственная другая компания по производству ноутбуков, которую я видел, публиковала схемы, - это Framework, чья материнская плата передана по субподряду (норма в сфере ноутбуков), а их материнская плата является частичной, из нее удалены все возможные элементы, не связанные с неразглашением. На схеме, которую мы сегодня ищем, нет никаких пометок о конфиденциальности – тем не менее, я не даю ссылку, но это, несомненно, первый результат в вашей любимой поисковой системе, особенно если вы ищете P75xZM_ESM.pdf.