banner
Centro notizie
Assistenza post-vendita di prima qualità

PCIe per hacker: estrarre il massimo

Jun 29, 2023

Quindi, ora conosci le basi dell'approccio PCIe e forse hai in mente un obiettivo relativo a PCIe. Forse vuoi dotare il tuo computer a scheda singola di una serie di schede WiFi PCIe economiche ma potenti per il wardriving, magari aggiungere un secondo SSD NVMe al tuo laptop invece del controller Ethernet che non usi mai o forse aggiungere un full- GPU di dimensioni ridotte al tuo Raspberry Pi 4 tramite un elegante adattatore. Qualunque cosa tu voglia fare, assicuriamoci che non ci sia un'area di PCIe che non ti è familiare.

Potresti aver sentito il termine "biforcazione" se hai frequentato PCIe, specialmente nelle comunità di mining o di armeggiamento di PC. Questo sta dividendo uno slot PCIe in più collegamenti PCIe e, come puoi immaginare, è una funzionalità piuttosto interessante per gli hacker; non hai bisogno di hardware aggiuntivo, in realtà, tutto ciò che serve è aggiungere un buffer per REFCLK. Vedi, è ancora necessario per ogni singola porta aggiuntiva che ottieni, ma non puoi fisicamente semplicemente inserire la stessa differenza di clock su tutti gli slot contemporaneamente, poiché ciò si tradurrà in stub e, di conseguenza, riflessioni di segnale; un chip buffer REFCLK prende l'orologio dall'host e produce un numero di copie identiche del segnale REFCLK che puoi quindi estrarre in modo autonomo. Potresti aver visto online schede slot NVMe da x16 a quattro: invariabilmente, da qualche parte nell'angolo della scheda, puoi individuare il chip buffer REFCLK. In uno scenario perfetto, questo è tutto ciò che serve per ottenere più PCIe dal tuo PCIe.

In realtà, il corretto supporto della biforcazione è complicato. La biforcazione richiede il supporto dell'host e questo supporto è piuttosto situazionale, con solo alcuni chipset in grado di eseguire la biforcazione e alcune schede madri in grado di farlo ma che scelgono di non renderlo possibile dal punto di vista software per qualsiasi motivo. Anche se stai creando il tuo host PCIe con un FPGA e l'assoluta flessibilità che ciò implica, il tuo FPGA potrebbe non supportare la biforcazione per motivi interni. Inoltre, non è possibile ottenere semplicemente sedici collegamenti x1 da un singolo slot x16: di solito, la combinazione supportata è di quattro collegamenti x4 da uno slot x16, forse due collegamenti x4 da uno slot x16 cablato x8.

Ora c'è un'alternativa e sono gli switch PCIe: si tratta di chip pesanti che presentano un'interfaccia del dispositivo PCIe al tuo host e più interfacce host PCIe per tutti i tuoi dispositivi; potresti confrontarli con gli switch Ethernet in termini di funzionamento, tranne per il fatto che le corsie di uno switch PCIe hanno ruoli host o dispositivo e le porte dello switch Ethernet sono generalmente tutte uguali. Questi switch hanno dimensioni che vanno da un QFN in stile RP2040 (nel caso di ASM1182, uno switch 1:2) alle dimensioni di una CPU x86, spesso necessitano di raffreddamento esterno, tendono anche ad essere costosi e consumano una discreta quantità di energia. Se stai cercando schede biforcazione, ad esempio, su Aliexpress, ti imbatterai inevitabilmente in schede con interruttori PCIe su di esse.

Il vantaggio è che non richiedono un supporto speciale da parte dell'host, poiché dal punto di vista dell'host assomigliano a qualsiasi normale dispositivo PCIe. Lo svantaggio è che, ancora una volta, costano molto e sono raramente documentati. Ad esempio, stavo cercando alcuni chip switch PCIe 1:4 e mi sono imbattuto nel controller ASM1184 1:4, che produce quattro collegamenti x1 da un singolo collegamento x1. Questo era proprio ciò di cui avevo bisogno e, cercando su Google, ho scoperto che questo chip veniva utilizzato in tonnellate di schede splitter PCIe cinesi di tutti i tipi, schede madri desktop di produttori come Gigabyte, con schede vendute anche in posti come Walmart. I chip ASM118x (1:4 per ASM1184 e 1:2 per ASM1182) sono facili da trovare anche su Aliexpress: il problema principale è che mancano di documentazione. Tecnicamente, uno schema di un dispositivo reale è il minimo indispensabile, dal momento che i chip sembrano essere pensati per funzionare in modo autonomo, senza controllo esterno: ne ho trovato uno per ASM1182 e recentemente un mio amico ne ha trovato uno per ASM1184. Tuttavia, cose come i registri I2C per il controllo esterno rimarranno un mistero.

Quindi, anche se chip come ASM1184 sono allettanti, economici e facilmente disponibili su Aliexpress sia come circuiti integrati autonomi che come parte di prodotti, il debug potrebbe diventare complicato. Per fortuna, c'è un produttore occidentale che conosco, che ti salverà la giornata quando si tratta di switch PCIe: è Diodes Incorporated, con la linea di prodotti PCIe acquisita da Pericom; puoi scaricare apertamente le schede tecniche complete per i loro switch PCIe e ce ne sono alcuni su Digikey. Potresti anche imbatterti negli switch PCIe di Broadcom, ma come puoi immaginare, la loro apertura è normale per un tipico prodotto Broadcom, ovvero inesistente.