PCIe für Hacker: Das Meiste herausholen
Sie kennen nun die Grundlagen des PCIe-Ansatzes und haben möglicherweise ein PCIe-bezogenes Ziel vor Augen. Vielleicht möchten Sie Ihren Einplatinencomputer mit einer Reihe günstiger, aber leistungsstarker PCIe-WLAN-Karten für Wardriving ausstatten, vielleicht eine zweite NVMe-SSD zu Ihrem Laptop anstelle des Ethernet-Controllers hinzufügen, den Sie nie verwenden, oder vielleicht eine vollwertige SSD hinzufügen. Über einen praktischen Adapter können Sie eine GPU-Größe an Ihren Raspberry Pi 4 anschließen. Was auch immer Sie tun möchten – wir stellen sicher, dass es keinen Bereich von PCIe gibt, mit dem Sie nicht vertraut sind.
Möglicherweise haben Sie den Begriff „Bifurkation“ gehört, wenn Sie sich mit PCIe auskennen, insbesondere in Mining- oder PC-Tüftler-Communitys. Dadurch wird ein PCIe-Steckplatz in mehrere PCIe-Links aufgeteilt, und wie Sie sich vorstellen können, ist dies für Hacker eine recht schmackhafte Funktion; Sie benötigen eigentlich keine zusätzliche Hardware, Sie müssen lediglich einen Puffer für REFCLK hinzufügen. Sehen Sie, es wird immer noch von jedem einzelnen zusätzlichen Port benötigt, den Sie erhalten – aber Sie können physisch nicht einfach das gleiche Taktdifferenzpaar auf alle Steckplätze gleichzeitig ziehen, da dies zu Stichleitungen und folglich zu Signalreflexionen führt; Ein REFCLK-Pufferchip übernimmt den Takt vom Host und erzeugt eine Reihe identischer Kopien des REFCLK-Signals, die Sie dann eigenständig abrufen. Möglicherweise haben Sie online x16- bis vier-NVMe-Steckplatzkarten gesehen – irgendwo in der Ecke der Karte können Sie immer den REFCLK-Pufferchip erkennen. Im Idealfall ist das alles, was Sie brauchen, um mehr PCIe aus Ihrem PCIe herauszuholen.
In Wirklichkeit ist eine ordnungsgemäße Bifurkationsunterstützung chaotisch. Die Bifurkation erfordert Unterstützung vom Host – und diese Unterstützung ist recht situativ, da nur einige Chipsätze zur Bifurkation in der Lage sind und einige Motherboards dazu in der Lage sind, sich aber aus irgendeinem Grund dafür entscheiden, dies softwaretechnisch nicht zu ermöglichen. Selbst wenn Sie Ihren eigenen PCIe-Host mit einem FPGA und der damit verbundenen Flexibilität erstellen, unterstützt Ihr FPGA aus internen Gründen möglicherweise keine Bifurkation. Darüber hinaus können Sie nicht einfach sechzehn x1-Links aus einem einzigen x16-Steckplatz herausholen – normalerweise besteht die unterstützte Kombination aus vier x4-Links aus einem x16-Steckplatz, möglicherweise zwei x4-Links aus einem x8-verkabelten x16-Steckplatz.
Jetzt gibt es eine Alternative, und zwar PCIe-Switches – dabei handelt es sich um leistungsstarke Chips, die Ihrem Host eine PCIe-Geräteschnittstelle und mehrere PCIe-Hostschnittstellen für alle Ihre Geräte bieten; Sie können sie hinsichtlich ihrer Funktionsweise mit Ethernet-Switches vergleichen, mit dem Unterschied, dass die Lanes eines PCIe-Switches entweder Host- oder Geräterollen haben und Ethernet-Switch-Ports im Allgemeinen alle gleich sind. Diese Switches haben eine Größe von einem QFN im RP2040-Stil (im Fall von ASM1182 ein 1:2-Switch) bis zur Größe einer x86-CPU. Sie benötigen häufig eine externe Kühlung, sind außerdem tendenziell teuer und verbrauchen eine angemessene Menge Leistung. Wenn Sie beispielsweise bei Aliexpress nach Bifurkationskarten suchen, werden Sie unweigerlich auf Karten mit PCIe-Switches stoßen.
Der Vorteil besteht darin, dass sie keine besondere Unterstützung durch den Host benötigen, da sie aus der Sicht eines Hosts wie jedes normale PCIe-Gerät aussehen. Der Nachteil: Auch hier sind die Kosten sehr hoch und werden zudem selten dokumentiert. Ich war zum Beispiel auf der Suche nach einigen PCIe 1:4-Switch-Chips und bin auf den ASM1184 1:4-Controller gestoßen, der aus einem einzigen x1-Link vier x1-Links erzeugt. Das war genau das, was ich brauchte, und als ich googelte, fand ich diesen Chip in unzähligen chinesischen PCIe-Splitter-Boards aller Art, Desktop-Motherboards von Herstellern wie Gigabyte und Boards, die sogar in Geschäften wie Walmart verkauft werden. Auch die ASM118x-Chips (1:4 für ASM1184 und 1:2 für ASM1182) selbst sind bei Aliexpress leicht zu finden – das Hauptproblem besteht darin, dass ihnen die Dokumentation fehlt. Technisch gesehen ist ein realer Geräteschaltplan das absolute Minimum, da die Chips offenbar eigenständig und ohne externe Steuerung funktionieren sollen – ich habe einen für ASM1182 gefunden, und mein Freund hat kürzlich einen für ASM1184 gefunden. Dinge wie I2C-Register zur externen Steuerung bleiben jedoch ein Rätsel.
Obwohl Chips wie der ASM1184 verlockend und günstig sind und bei Aliexpress sowohl als eigenständiger IC als auch als Teil von Produkten leicht erhältlich sind, kann das Debuggen schwierig werden. Zum Glück gibt es einen westlichen Hersteller, den ich kenne, der Ihnen den Tag retten wird, wenn es um PCIe-Switches geht – es ist Diodes Incorporated mit seiner von Pericom übernommenen PCIe-Produktlinie; Sie können vollständige Datenblätter für ihre PCIe-Switches kostenlos herunterladen, und auf Digikey gibt es einige davon. Möglicherweise stoßen Sie auch auf PCIe-Switches von Broadcom, aber wie Sie sich vorstellen können, ist ihre Offenheit für ein typisches Broadcom-Produkt selbstverständlich – also nicht existent.
Wenn Sie PCIe über ein Kabel ziehen möchten und mit einem x1-Link einverstanden sind, können Sie schlechter abschneiden als mit einem USB3-Kabel – tatsächlich ist es ein ziemlich geeignetes Medium. Es gibt zwei Hochgeschwindigkeits-USB3-Diffpairs, und da USB3 eine heikle Schnittstelle ist, wenn es um Integritätsanforderungen geht, funktioniert die für USB3 vorgesehene Verkabelung gut für PCIe. USB3-Kabel tragen auch ein USB2-Paar – und das 100-MHz-REFCLK-Paar passt perfekt dazu; Alles in allem sind USB3-Kabel und PCIe-x1-Links eine himmlische Kombination. Hersteller von Bergbaumaschinen haben dies erkannt und überschwemmen den Markt mit allerlei Zubehör, das PCIe-Verbindungen über USB3-Kabel und -Anschlüsse zieht – Slot-Extender, PCIe-Switches, NVMe-Adapter und so weiter. Seitdem der Bergbau an Beliebtheit verloren hat, gibt es dieses Zubehör zu einem günstigen Preis.
Ein typisches Mining-Riser-Board besteht aus einem x1-Steckerboard mit einem USB3-Anschluss, der an ein Mainboard angeschlossen werden soll, einem x16-Steckplatzboard mit einem entsprechenden USB3-Anschluss sowie zusätzlichen Stromeingängen, manchmal auch mit einigen Leistungsreglern; Die dritte Komponente ist ein USB3-Kabel mit USB-A-Anschlüssen an beiden Enden. Für einen Hacker, der mit PCIe etwas Unkonventionelles entwickelt, könnte die Wiederverwendung dieses Zubehörs verlockend sein – USB3-Buchsen und -Kabel sind schließlich in vielen Varianten leicht zu finden.
In der Tat werden Sie wahrscheinlich Erfolg haben – wenn irgendetwas ein Beweis dafür sein kann, dass es absolut machbar ist, PCIe auf diese Weise zu nutzen, dann die Tatsache, dass all diese Mining-Extender tatsächlich für alle unzähligen Miner rund um die Uhr im Einsatz waren. Achten Sie jedoch auf ein paar Schluckaufe. Zum Beispiel gibt es einen kleinen Pinbelegungsfehler, der nicht oft auftritt: Die Hochgeschwindigkeits-TX- und RX-Diff-Paare bleiben auf den USB3-Pins, aber welches PCIe-Paar zu welchem USB3-Paar gehört, ist nicht ganz garantiert.
Noch wichtiger ist jedoch, dass die Art der Signale, die an die +5V- und GND-Leitungen (ja, ein separates Kabel) des USB2-Teils angelegt werden, unterschiedlich sein kann – und das kommt bekanntermaßen vor. Meine Freundin hat mit diesen Kabeln ein Gerät gebaut, und die PCIe-Riser, die sie hatte, verfügten über PEWAKE und PEST, und das Design hat Wunder gewirkt. Später wurden jedoch bei einer Riser-Kompatibilitätsuntersuchung in einem russischen Bergbauforum (übersetzt) einige Riser- und Schaltplatinen gefunden, bei denen das +5-V-Kabel 3,3 V oder stattdessen sogar 12 V lieferte – statt entweder PEST oder PEWAKE, was man vielleicht erwarten würde Sie entwerfen für den spezifischen Riser, den Sie besitzen. Wenn Sie versuchen, Riser-Geräte zu entwerfen und sich dabei entweder auf den „In-Mainboard-x1-Stecker“ oder die „x16-Steckplatz“-Boards eines typischen Riser-Extenders verlassen, sollten Sie besser doppelt sicherstellen, dass die von Ihnen verwendeten Boards dies auch tatsächlich tun Halten Sie sich an die Pinbelegung, die Sie sich vorgestellt haben. Die Verwendung eines fragwürdigen Tragegurts kann zu einer explosiven Situation führen. Leider haben diese Riser fast einen Standard für die Übertragung von PCIe über praktische Kabel definiert – aber sie sind noch nicht ganz da.
Vermeiden Sie außerdem unbedingt die Netzteile, die manchmal in solchen Miner-Kits enthalten sind – bei all diesen „SATA-Stromversorgung zu PCIe 6-Pin“ besteht ein gravierendes Missverhältnis zwischen Eingangs- und Ausgangsleistung; Wenn bei diesen Mining-Boards irgendetwas nicht stimmt, dann ist es der Einbau dieser Adapter, der in der Praxis eine echte Brandgefahr darstellen kann, wenn Ihre PCIe-Karte etwas mehr Strom verbraucht, als der billig hergestellte SATA-Stromanschluss des Adapters verarbeiten kann.
Der Hacker-Ansatz, Mining-Geräte für PCIe-Spielereien zu manipulieren, ist nicht der einzige. Wenn Sie einen leckeren Chip finden, der eine Verbindung über PCIe herstellt, oder Sie einen PCIe-Link, den Sie irgendwo gefunden haben, mit völlig legitimen Mitteln erweitern möchten, entwerfen Sie Ihre eigene Leiterplatte! Heutzutage hat man die Wahl zwischen Full-Size-Steckplätzen für den Desktop-Einsatz oder M.2-Steckplätzen für den mobilen Einsatz – und wenn es um ältere oder industrielle Geräte geht, funktioniert auch mPCIe.
Für den Desktop-Einsatz stehen zahlreiche PCIe-Steckplätze zur Auswahl. Zum Einstecken in eine solche Buchse benötigen Sie eine Leiterplatte mit einer Dicke von 1,6 mm – das ist glücklicherweise die Standard-Leiterplattendicke, die Sie in jeder Fabrik bekommen können, und in der Regel auch die günstigste Leiterplattendicke! Sie sollten die PCB-Kante anfasen, die in den PCIe-Sockel gesteckt wird – Ihre PCB-Fabrik kann dies oft gegen einen kleinen Aufpreis tun, aber Sie können diese Fase auch nachträglich mit einer Feile oder einem Xacto-Messer mit einem Ersatzmesser hinzufügen Klinge.
Was mobile Slots betrifft, habe ich bereits ausführlich über M.2 gesprochen. Die einfachen M.2-Richtlinien lauten: Verwenden Sie eine 0,8-mm-Leiterplatte mit ENIG für eine Karte und stellen Sie sicher, dass Sie eine Schablone haben, wenn Sie Ihrer Leiterplatte einen M.2-Steckplatz hinzufügen. Wählen Sie dann die Verschlüsselung aus, die Sie bequem verwenden können – A+E für WLAN-Karten, E-Sockel zum Anschließen von WLAN-Karten, M-Key-Steckplätze und -Karten für PCIe bis x4 und B+M-Karten für PCIe bis x2 und Kompatibilität mit B-Key- (WWAN) und M-Key- (SSD) Sockeln. Es gibt viele M.2-Sockel zum Verkauf und auch Vorlagen für Steckplätze und Karten! Für mPCIe funktionieren 1-mm-Leiterplatten, und eine Vergoldung (ENIG) ist wiederum ein Muss.
Unabhängig davon, ob Sie eine mobile oder eine Desktop-PCIe-Karte oder einen PCIe-Sockel verwenden, bleiben die Diffpair-Layoutrichtlinien, die wenigen erforderlichen Signale und die starke Kompatibilität zwischen Linkbreiten und Generationen gleich. Was auch immer Sie mit PCIe entwerfen, es ist keine schwierige Aufgabe – und dank der Widerstandsfähigkeit von PCIe, die uns bei unseren Hochgeschwindigkeitsversuchen unterstützt, werden Sie Ihre PCIe-Projektziele mit hoher Wahrscheinlichkeit erreichen.