PCIe pour les pirates : extraire le maximum
Donc, vous connaissez maintenant les bases de l'approche PCIe, et vous avez peut-être un objectif lié à PCIe en tête. Peut-être souhaitez-vous équiper votre ordinateur monocarte d'un tas de cartes WiFi PCIe bon marché mais puissantes pour le wardriving, peut-être ajouter un deuxième SSD NVMe à votre ordinateur portable au lieu de ce contrôleur Ethernet que vous n'utilisez jamais, ou peut-être ajouter un plein- taille GPU à votre Raspberry Pi 4 via un adaptateur astucieux. Quoi que vous vouliez faire, assurons-nous qu'il n'y a pas un domaine de PCIe que vous ne connaissez pas.
Vous avez peut-être entendu le terme "bifurcation" si vous avez côtoyé PCIe, en particulier dans les communautés minières ou de bricolage sur PC. Il s'agit de diviser un emplacement PCIe en plusieurs liens PCIe, et comme vous pouvez l'imaginer, c'est une fonctionnalité assez savoureuse pour les pirates ; vous n'avez pas besoin de matériel supplémentaire, tout ce dont vous avez besoin est d'ajouter un tampon pour REFCLK. Vous voyez, il est toujours nécessaire pour chaque port supplémentaire que vous obtenez - mais vous ne pouvez pas physiquement simplement tirer la même diffpair d'horloge vers tous les slots à la fois, car cela entraînera des stubs et, par conséquent, des réflexions de signal ; une puce tampon REFCLK prend l'horloge de l'hôte et produit un certain nombre de copies identiques du signal REFCLK que vous extrayez ensuite de manière autonome. Vous avez peut-être vu x16 à quatre cartes à sous NVMe en ligne – invariablement, quelque part dans le coin de la carte, vous pouvez repérer la puce tampon REFCLK. Dans un scénario parfait, c'est tout ce dont vous avez besoin pour tirer davantage de PCIe de votre PCIe.
En réalité, un bon support de bifurcation est désordonné. La bifurcation nécessite la prise en charge de l'hôte - et cette prise en charge est assez situationnelle, seuls certains chipsets pouvant effectuer la bifurcation, et un certain nombre de cartes mères pouvant le faire mais choisissant de ne pas le rendre possible au niveau logiciel pour une raison quelconque. Même si vous créez votre propre hôte PCIe avec un FPGA et la flexibilité que cela implique, votre FPGA peut ne pas prendre en charge la bifurcation pour des raisons internes. De plus, vous ne pouvez pas simplement obtenir seize liens x1 à partir d'un seul emplacement x16 - généralement, la combinaison prise en charge est de quatre liens x4 sur un emplacement x16, peut-être deux liens x4 sur un emplacement x8 câblé x16.
Maintenant, il existe une alternative, et ce sont les commutateurs PCIe - ce sont des puces lourdes qui présentent une interface de périphérique PCIe à votre hôte, et plusieurs interfaces hôtes PCIe pour tous vos périphériques ; vous pouvez les comparer aux commutateurs Ethernet en termes de fonctionnement, sauf que les voies d'un commutateur PCIe ont des rôles d'hôte ou de périphérique et que les ports de commutateur Ethernet sont généralement tous égaux. Ces commutateurs sont dimensionnés d'un QFN de style RP2040 (dans le cas d'ASM1182, un commutateur 1: 2) à la taille d'un processeur x86, ils auront souvent besoin d'un refroidissement externe, ils ont également tendance à être coûteux et consomment une quantité décente de pouvoir. Si vous recherchez des cartes de bifurcation sur, par exemple, Aliexpress, vous tomberez inévitablement sur des cartes avec des commutateurs PCIe dessus.
L'avantage est qu'ils ne nécessitent pas de support spécial de la part de l'hôte, car ils ressemblent à n'importe quel périphérique PCIe ordinaire du point de vue de l'hôte. L'inconvénient - encore une fois, ils coûtent cher et sont également rarement documentés. Par exemple, je cherchais à obtenir des puces de commutation PCIe 1: 4 et je suis tombé sur le contrôleur ASM1184 1: 4, qui produit quatre liaisons x1 à partir d'une seule liaison x1. C'était exactement ce dont j'avais besoin, et en cherchant sur Google, j'ai trouvé cette puce utilisée dans des tonnes de cartes de séparation PCIe chinoises de toutes sortes, des cartes mères de bureau de fabricants comme Gigabyte, avec des cartes même vendues dans des endroits comme Walmart. Les puces ASM118x (1:4 pour ASM1184 et 1:2 pour ASM1182) elles-mêmes sont également faciles à trouver sur Aliexpress - le principal problème est qu'elles manquent de documentation. Techniquement, un schéma de dispositif réel est le strict minimum nécessaire, car les puces semblent être conçues pour fonctionner de manière autonome, sans contrôle externe - j'en ai trouvé un pour ASM1182, et mon ami en a récemment trouvé un pour ASM1184. Cependant, des choses comme les registres I2C pour le contrôle externe resteront un mystère.
Ainsi, même si des puces comme l'ASM1184 sont tentantes, bon marché et facilement disponibles sur Aliexpress en tant que CI autonome et dans le cadre de produits, le débogage peut devenir délicat. Heureusement, je connais un fabricant occidental qui vous fera gagner du temps en matière de commutateurs PCIe - c'est Diodes Incorporated, avec sa gamme de produits PCIe acquise par Pericom ; vous pouvez télécharger ouvertement des fiches techniques complètes pour leurs commutateurs PCIe, et il y en a quelques-uns sur Digikey. Vous pouvez également tomber sur des commutateurs PCIe de Broadcom, mais comme vous pouvez le deviner, leur ouverture est comparable à celle d'un produit Broadcom typique - c'est-à-dire inexistant.
Si vous cherchez à tirer PCIe via un câble et que vous êtes d'accord avec un lien x1, vous pourriez faire pire qu'un câble USB3 – en fait, c'est un support assez approprié. Il y a deux diffpairs USB3 à haute vitesse, et étant donné que l'USB3 est une interface délicate en ce qui concerne les exigences d'intégrité, le câblage prévu pour l'USB3 fonctionne bien pour PCIe. Les câbles USB3 transportent également une paire USB2 - et la paire REFCLK 100 MHz s'adapte parfaitement ; dans l'ensemble, les câbles USB3 et les liaisons PCIe x1 sont un match parfait. Les fabricants d'équipements miniers l'ont reconnu, inondant le marché de toutes sortes d'accessoires qui tirent des liens PCIe via des câbles et des connecteurs USB3 - extensions de slot, commutateurs PCIe, adaptateurs NVMe, etc. Depuis que l'exploitation minière est devenue moins populaire, ces accessoires sont là pour la prise, disponibles à bas prix.
Une carte de montage minière typique se compose d'une carte de connexion x1 avec une prise USB3 destinée à être branchée sur une carte mère, une carte à fente x16 avec une prise USB3 correspondante, ainsi que des entrées d'alimentation supplémentaires, parfois également avec certains régulateurs de puissance ; le troisième composant est un câble USB3 avec des connecteurs USB-A aux deux extrémités. Pour un pirate informatique concevant quelque chose de non conventionnel avec PCIe, la réutilisation de ces accessoires peut être tentante - les prises et les câbles USB3 sont faciles à trouver dans de nombreuses variétés, après tout.
En effet, vous réussirez probablement - si quelque chose peut prouver qu'il est absolument viable de parcourir PCIe de cette manière, c'est que tous ces extendeurs miniers ont effectivement fonctionné pour tous les innombrables mineurs, dans des conditions 24/7/365. Attention cependant à quelques ratés. Par exemple, il y a un problème de brochage mineur qui ne se produit pas souvent - les paires de diff TX et RX haute vitesse resteront sur les broches USB3, mais quelle paire PCIe va à quelle paire USB3, n'est pas tout à fait garanti.
Plus important encore, cependant, le type de signaux mis sur les fils + 5V et GND (oui, un fil séparé) de la partie USB2 peut différer - et cela est connu pour se produire. Mon amie a construit un appareil avec ces fils, et les risers PCIe qu'elle avait, se sont avérés avoir PEWAKE et PREST, et la conception a fait des merveilles. Cependant, plus tard, une enquête sur la compatibilité des colonnes montantes sur un forum minier russe (traduit) a trouvé quelques cartes de montage et de commutation où le fil + 5V transportait 3,3V, voire 12V à la place - au lieu de PREST ou PEWAKE auquel vous pourriez vous attendre si vous concevez pour la colonne montante spécifique que vous possédez. Si vous essayez de concevoir pour un équipement de colonne montante et que vous comptez soit sur la "prise x1 intégrée à la carte mère" soit sur les cartes "emplacement x16" d'une extension de colonne montante typique, vous feriez mieux de vous assurer que celles que vous utilisez, le font en effet conformez-vous au brochage que vous avez en tête ; l'utilisation d'une colonne montante douteuse peut conduire à une situation explosive. Malheureusement, ces élévateurs ont presque défini une norme pour le transport de PCIe sur des câbles pratiques, mais ils n'en sont pas encore là.
Assurez-vous également d'éviter les adaptateurs d'alimentation parfois inclus avec ces kits de mineur - tous ces "alimentation SATA vers PCIe 6 broches" ont une grave inadéquation entre la puissance d'entrée et de sortie ; s'il y a quelque chose qui ne va pas avec ces cartes minières, c'est l'inclusion de ces adaptateurs, qui peut être un véritable risque d'incendie dans la pratique, si votre carte PCIe consomme un peu plus d'énergie que le connecteur d'alimentation SATA bon marché de l'adaptateur ne peut en supporter.
La voie des pirates consistant à subvertir les accessoires miniers pour les objectifs de manigance PCIe n'est pas la seule. Si vous trouvez une puce savoureuse qui se connecte via PCIe, ou si vous souhaitez étendre une liaison PCIe que vous avez trouvée quelque part par des moyens totalement légitimes, continuez et concevez votre propre PCB ! De nos jours, vous avez le choix entre des emplacements pleine grandeur pour une utilisation sur ordinateur de bureau ou des emplacements M.2 pour une utilisation mobile - et si vous visez un équipement plus ancien ou industriel, mPCIe fonctionne également.
Pour une utilisation de bureau, il existe une abondance de sockets PCIe parmi lesquels choisir. Pour brancher une telle prise, vous avez besoin d'un PCB de 1,6 mm d'épaisseur - ce qui est, heureusement, l'épaisseur de PCB standard que vous pouvez obtenir de n'importe quel fabricant, et c'est aussi l'épaisseur de PCB la moins chère en règle générale, à cela ! Vous voudrez chanfreiner le bord du PCB qui se branche sur la prise PCIe - votre fabricant de PCB peut souvent le faire moyennant un peu de frais supplémentaires, mais vous pouvez également ajouter ce chanfrein post-factum avec une lime ou un couteau xacto avec une pièce de rechange lame.
En ce qui concerne les machines à sous mobiles, j'ai déjà beaucoup parlé de M.2. Les directives M.2 simples sont - utilisez un PCB de 0,8 mm avec ENIG pour une carte, et assurez-vous d'avoir un gabarit si vous ajoutez un slot M.2 à votre PCB. Ensuite, choisissez la clé avec laquelle vous êtes à l'aise - A + E pour les cartes WiFi, les prises E pour connecter les cartes WiFi, les emplacements et cartes M-key pour PCIe jusqu'à x4, et les cartes B + M pour PCIe jusqu'à x2 et la compatibilité avec les prises B-key (WWAN) et M-key (SSD). Il y a beaucoup de sockets M.2 à vendre, ainsi que des modèles pour les slots et les cartes aussi ! Pour mPCIe, les PCB de 1 mm fonctionneront et le placage à l'or (ENIG) est, encore une fois, un must.
Que vous utilisiez une carte ou un socket PCIe mobile ou de bureau, les directives de mise en page diffpair, les quelques signaux requis et la forte compatibilité entre les largeurs de liaison et les générations restent les mêmes. Quoi que vous conceviez avec PCIe, ce n'est pas une tâche difficile à accomplir - et grâce à la résilience de PCIe qui nous aide dans nos incursions à haute vitesse, vous avez de fortes chances d'atteindre les objectifs de votre projet PCIe.