PCI Express, spesso abbreviato in PCIe, rappresenta oggi la dorsale per le comunicazioni ad alta velocità all’interno dei sistemi moderni: collega CPU, GPU, SSD NVMe e acceleratori con latenze estremamente basse e una struttura point-to-point altamente scalabile. Introdotto nei primi anni 2000 per sostituire PCI e AGP, il protocollo ha evoluto rapidamente le sue prestazioni: da 2,5 GT/s per lane nella prima generazione, fino a 16 GT/s in Gen4 e oltre.
Nelle configurazioni multi-lane, come x16, la banda aggregata può raggiungere decine di GB/s; il tutto con latenze nell’ordine di poche centinaia di nanosecondi, un valore che lo rende ideale per operazioni sensibili al tempo come il rendering grafico o l’accesso diretto alla memoria.
Il rovescio della medaglia è che PCIe nasce per collegamenti interni, con vincoli elettrici molto rigidi e distanze limitate a pochi centimetri o, al massimo, a qualche metro avvalendosi di cavi dedicati. Estendere questo bus oltre tali limiti richiede un approccio non convenzionale: Sylvain Munaut ha presentato un progetto convincente che per trasportare PCIe su fibra ottica, mantenendo il più possibile il comportamento nativo del protocollo, senza ricorrere a incapsulamenti complessi come quelli utilizzati in Thunderbolt o in soluzioni enterprise proprietarie.
Perché portare PCIe fuori dal sistema
Separare fisicamente risorse come GPU o storage NVMe dalla macchina host apre scenari interessanti: laboratori distribuiti, ambienti industriali isolati elettricamente, oppure semplicemente maggiore flessibilità nell’assemblaggio hardware. La fibra ottica introduce vantaggi evidenti: immunità ai disturbi elettromagnetici e capacità di coprire distanze elevate senza perdita significativa del segnale.
Va detto però che PCIe non è progettato per operare su mezzi trasmissivi così diversi: il protocollo integra in modo molto stretto il livello fisico (cioè la trasmissione elettrica dei segnali) e quello logico (la gestione dei dati e della comunicazione); di conseguenza, qualsiasi variazione nel comportamento elettrico del segnale può interferire con il corretto “training del link“, ovvero la fase iniziale in cui i dispositivi negoziano e stabiliscono una connessione stabile e affidabile.
Il punto è proprio questo: riuscire a mantenere una forma di trasparenza sufficiente affinché host e dispositivo continuino a parlarsi come se fossero collegati direttamente.
L’uso dei moduli SFP+ e la trasparenza del segnale
Il progetto sviluppato da Munaut impiega moduli SFP+ da 10 Gigabit (10G) di tipo LR (Long Range), dispositivi utilizzati per trasmissioni Ethernet ad alta velocità pari a 10,3125 Gbps su fibra ottica monomodale, cioè un tipo di fibra progettata per coprire lunghe distanze con una singola modalità di propagazione del segnale.
La scelta non è casuale: questi moduli adottano una modulazione On-Off Keying relativamente semplice, priva di meccanismi di retiming aggressivi: il flusso dati attraversa il modulo senza reinterpretazioni profonde, rendendo possibile il trasporto di segnali PCIe a 2,5, 5 o anche 8 GT/s.
I moduli SFP+ in questione tuttavia non soddisfano le specifiche elettriche richieste dallo standard PCIe: per questo motivo, un collegamento diretto non è possibile senza opportune modifiche. Serve quindi un elemento intermedio, spesso realizzato con una FPGA (un circuito integrato programmabile), che si occupa di convertire il segnale da elettrico a ottico e di gestire la serializzazione dei dati tramite SerDes (Serializer/Deserializer, un sistema che trasforma i dati tra formato parallelo e seriale per la trasmissione ad alta velocità).
Quando si parla di valori espressi in GT/s (GigaTransfer al secondo), si indica il numero di trasferimenti al secondo su una singola lane e non direttamente i bit utili: ogni trasferimento rappresenta un’unità di segnale che può includere sia dati sia informazioni di controllo. Non si parla di Gbps perché il valore effettivo dipende anche dalla codifica utilizzata.
Vincoli reali del link PCIe su fibra e tecniche di adattamento
Quando si prova a far viaggiare PCIe su fibra, i problemi non si presentano in modo isolato: si intrecciano tra loro e costringono a ragionare sull’intero comportamento del link.
Il primo ostacolo è la Receiver Detection, cioè il meccanismo con cui il controller PCIe capisce se dall’altra parte esiste davvero un dispositivo. I moduli SFP non espongono le caratteristiche elettriche attese e quindi il link resta fermo già in partenza.
Per aggirare la cosa, Munaut ha inserito resistenze di terminazione verso massa, tipicamente intorno ai 330 ohm, spesso affiancate da un redriver come il TI SN75LVP802: in pratica si “simula” un endpoint credibile e si forza l’avvio del training.
Subito dopo emerge il tema del clock, meno intuitivo ma altrettanto critico: con lo Spread Spectrum Clocking (SSC) attivo, host e device non condividono più un riferimento stabile, perché la fibra trasporta solo dati e non il clock. Basta una deriva minima e la sincronizzazione salta. La soluzione più concreta è anche la più brutale: disabilitare SSC lato host e fornire un riferimento locale pulito, tipicamente 100 MHz, al dispositivo remoto.
Un aspetto particolarmente complesso riguarda la Link Equalization, introdotta con PCIe Gen3: si tratta di un meccanismo con cui il dispositivo principale (host) e la periferica regolano in modo dinamico i parametri del segnale (tecniche usate per compensare le perdite e le distorsioni del canale trasmissivo), adattandoli alle caratteristiche del collegamento. Tuttavia, quando il segnale viene convertito da elettrico a ottico, questo scambio di informazioni tra i due dispositivi si interrompe, causando instabilità del collegamento quando si opera a 8 GT/s, ovvero la velocità di trasferimento dati tipica di PCIe Gen3.
Prestazioni reali e limiti operativi
I test pratici raccontano molto: utilizzando una Raspberry Pi 5 e una scheda Blackmagic Decklink, il collegamento su fibra single-mode ha raggiunto una stabilità piena a velocità Gen2 x1, pari a 5 GT/s. Il throughput effettivo si attesta intorno a 3,5-3,6 Gbps, sostanzialmente identico a quello ottenuto con connessione diretta in rame. La latenza aggiuntiva esiste, ma resta contenuta per molte applicazioni.
Il vero limite emerge quando si tenta di salire di generazione: Gen3 richiede un controllo molto più fine del segnale e della fase di equalizzazione: senza hardware specifico, il link tende a fallire durante il training.
Munaut spiega che il passo successivo riguarda i moduli QSFP 40G LR4, cioè transceiver ottici da 40 Gbps che sfruttano il multiplexing WDM (una tecnica che combina più segnali su diverse lunghezze d’onda della luce all’interno della stessa fibra) per trasportare quattro canali distinti su una singola coppia di fibre ottiche.
Per questa ragione risultano particolarmente adatti a configurazioni PCIe x4, permettendo in teoria di realizzare un collegamento completo di tipo Gen3 mantenendo dimensioni ridotte e un’architettura compatta.
Rimane da risolvere il problema di come gestire l’equalizzazione del segnale, cioè l’insieme di tecniche che correggono le distorsioni durante la trasmissione dei dati. Una possibile soluzione consiste nell’utilizzare switch PCIe trasparenti oppure redriver evoluti, dispositivi che rigenerano e stabilizzano il segnale adattando automaticamente i parametri elettrici in base alle condizioni operative. In alternativa, si può rinunciare al trasporto nativo del protocollo e adottare il cosiddetto PCIe tunneling, una tecnica che incapsula i dati PCIe all’interno di un altro canale di comunicazione, accettando un leggero aumento della latenza in cambio di una maggiore affidabilità complessiva.
Grandi potenzialità per un progetto nato in ambito hobbistico
L’esperimento condotto con successo da Munaut dimostra una cosa molto concreta: con componenti relativamente economici e una buona conoscenza del livello fisico, è possibile spingere PCIe ben oltre i limiti per cui è stato progettato.
Non ci troviamo ancora dinanzi a una soluzione pronta per ambienti critici, ma abbiamo a disposizione un banco di prova reale per comprendere a fondo come il protocollo reagisce quando lo si porta fuori dal suo “habitat” naturale.
È il tipo di progetto che, pur nascendo in ambito hobbistico, ha un valore tecnico notevole: consente di esplorare limiti, verificare ipotesi e, in alcuni casi, anticipare soluzioni che potrebbero essere formalizzate in ambito industriale. Guardando avanti, infatti, il margine di evoluzione è tutt’altro che trascurabile. L’integrazione di chip FPGA più avanzati, l’uso di moduli QSFP multi-lane e l’introduzione di logiche di equalizzazione più sofisticate potrebbero trasformare questo tipo di collegamento in qualcosa di molto più stabile e scalabile.
Non è difficile immaginare applicazioni pratiche: GPU remote in ambienti distribuiti, storage NVMe centralizzato o sistemi modulari in cui le risorse sono allocate dinamicamente grazie a un collegamento in fibra. Oggi è un test da laboratorio: domani potrebbe diventare una base concreta per architetture più flessibili.