PCIe для хакеров: извлекаем максимум
Итак, теперь вы знаете основы подхода к PCIe и, возможно, у вас есть цель, связанная с PCIe. Возможно, вы хотите оснастить свой одноплатный компьютер кучей дешевых, но мощных карт PCIe WiFi для управления сетью, возможно, добавить к ноутбуку второй твердотельный накопитель NVMe вместо контроллера Ethernet, который вы никогда не используете, или, может быть, добавить полноценный размер графического процессора к вашему Raspberry Pi 4 через изящный адаптер. Что бы вы ни хотели сделать, давайте убедимся, что нет такой области PCIe, с которой вы не знакомы.
Возможно, вы слышали термин «бифуркация», если имели дело с PCIe, особенно в сообществах майнеров или специалистов по ПК. Это разделение слота PCIe на несколько каналов PCIe, и, как вы понимаете, это весьма полезная функция для хакеров; на самом деле вам не нужно никакого дополнительного оборудования, все, что вам нужно, это добавить буфер для REFCLK. Видите ли, он по-прежнему необходим каждому дополнительному порту, который вы получаете, но вы не можете физически просто подключить одну и ту же пару тактовых импульсов ко всем слотам одновременно, поскольку это приведет к заглушкам и, следовательно, к отражению сигнала; Буферная микросхема REFCLK принимает тактовую частоту от хоста и создает несколько идентичных копий сигнала REFCLK, которые затем извлекаются автономно. Возможно, вы видели в Интернете карты слотов NVMe от x16 до четырех — неизменно где-то в углу карты вы можете заметить буферный чип REFCLK. В идеальном случае это все, что вам нужно, чтобы получить больше PCIe от вашего PCIe.
На самом деле правильная поддержка бифуркации — это беспорядок. Раздвоение требует поддержки со стороны хоста – и эта поддержка весьма ситуативна: только некоторые наборы микросхем способны выполнять раздвоение, и довольно много материнских плат могут это сделать, но по какой-либо причине предпочитают не делать это возможным программно. Даже если вы создаете свой собственный хост PCIe с FPGA и подразумевает полную гибкость, ваша FPGA может просто не поддерживать раздвоение по внутренним причинам. Более того, вы не можете просто получить шестнадцать каналов x1 из одного слота x16 — обычно поддерживаемая комбинация представляет собой четыре канала x4 из слота x16 или, возможно, два канала x4 из слота x16 с проводной проводкой x8.
Теперь есть альтернатива, и это коммутаторы PCIe — это здоровенные чипы, которые предоставляют интерфейс устройства PCIe вашему хосту и несколько хост-интерфейсов PCIe для всех ваших устройств; их можно сравнить с коммутаторами Ethernet с точки зрения их работы, за исключением того, что линии коммутатора PCIe имеют роли хоста или устройства, а порты коммутатора Ethernet обычно равны. Размеры этих коммутаторов варьируются от QFN в стиле RP2040 (в случае ASM1182 — коммутатор 1:2) до размера процессора x86. Им часто требуется внешнее охлаждение, они также имеют тенденцию быть дорогими и потребляют приличное количество энергии. власть. Если вы ищете раздвоенные карты, скажем, на Aliexpress, вы неизбежно наткнетесь на карты с переключателями PCIe.
Преимущество в том, что они не требуют специальной поддержки со стороны хоста, поскольку с точки зрения хоста они выглядят как любое обычное устройство PCIe. Недостаток – опять же, они стоят значительных денег, а также редко документируются. Например, я искал чипы переключателя PCIe 1:4 и наткнулся на контроллер ASM1184 1:4, который создает четыре канала x1 из одного канала x1. Это было именно то, что мне было нужно, и, погуглив, я обнаружил, что этот чип используется в тоннах китайских разветвителей PCIe всех видов, материнских платах для настольных ПК от таких производителей, как Gigabyte, а платы даже продаются в таких местах, как Walmart. Сами чипы ASM118x (1:4 для ASM1184 и 1:2 для ASM1182) тоже легко найти на Aliexpress – основная проблема в отсутствии документации. Технически, схема реального устройства — это необходимый минимум, поскольку микросхемы, судя по всему, предназначены для автономной работы, без внешнего управления — я нашел схему для ASM1182, а мой друг недавно нашел схему для ASM1184. Однако такие вещи, как регистры I2C для внешнего управления, останутся загадкой.
Таким образом, хотя такие чипы, как ASM1184, заманчивы, дешевы и легко доступны на Aliexpress как в виде отдельных микросхем, так и в составе продуктов, отладка может оказаться сложной задачей. К счастью, я знаю одного западного производителя, который спасет вас, когда дело доходит до коммутаторов PCIe, — это Diodes Incorporated с их приобретенной Pericom линейкой продуктов PCIe; вы можете открыто загрузить полные технические характеристики их коммутаторов PCIe, и на Digikey их немало. Вы также можете наткнуться на коммутаторы PCIe от Broadcom, но, как вы можете догадаться, их открытость является нормой для типичного продукта Broadcom – то есть ее не существует.