PCI Express-technologie wordt al lang gebruikt om grafische kaarten en andere randapparatuur zoals NVMe SSD's aan te sluiten. De implementatie van de vijfde generatie van de interface vindt plaats met de komst van de Alder Lake-processors van Intel en de Zen 4-processors van AMD. Maar de PCI Express 6.0-specificatie is afgerond en brengt verschillende verbeteringen met zich mee ten opzichte van de vijfde generatie.
De PCI Express 6.0 volgt vanaf het begin dezelfde verbeteringen als de vorige generaties van deze interface, dat wil zeggen, het is gebaseerd op een verdubbeling van de bandbreedte in vergelijking met de vorige generatie. In het geval van PCI Express 6.0 waren er echter ingrijpende veranderingen nodig bij de ontwikkeling van de zesde generatie van deze interface.
De bandbreedte van PCI Express 6.0 is 128 GB/s voor een 16-lijns interface, een overdreven hoge bandbreedte voor een I/O-interface en dat is een viervoudige sprong ten opzichte van de huidige PCI Express 4.0 die we gebruiken voor huidige graphics kaarten. De sprong betekent ook een sprong van NVMe SSD flashcontrollers van 7-8 GB/s tot 28 -32 GB/s met PCI Express 6.0.
Achterwaartse compatibiliteit en het probleem van signaalinstabiliteit
De PCI Express-interface is altijd achterwaarts compatibel geweest met eerdere versies van het protocol, dit betekent dat we een PCI Express 1.0-kaart in een PCI Express 6.0-slot kunnen steken en het zal werken omdat de pinage precies hetzelfde zal zijn. Het is dus niet mogelijk om het aantal pinnen te vergroten om de bandbreedte te vergroten zonder de snelheid te verhogen. De oplossing? Verhoog de kloksnelheid waarmee de interface werkt.
Het probleem met PCI Express 6.0? Naarmate we de kloksnelheid van een interface verhogen, wordt deze onstabieler met de afstand en na zes generaties hebben ze wijzigingen aan de interface moeten aanbrengen vanwege de hoge snelheid waarmee de interface op een traditionele manier werkt. En als je kijkt naar de tabel die bij deze lijnen hoort, dan hebben we het over een theoretische snelheid van 64 GHz, die het signaal voldoende vervormt, zelfs op korte afstand zitten beide uiteinden in een PCI Express-interface.
Dit heeft geleid tot een reeks maatregelen om de sprong naar PCI Express 6.0 mogelijk te maken.
Eerste van de verbeteringen in PCI Express 6.0, gebruik van PAM4
Hoe weet een externe of interne interface van een chip of de waarde een 1 of een 0 is? Nou ja, simpel, afhankelijk van de spanning waarin de informatie wordt verzonden. Binaire systemen zijn gebaseerd op het gebruik van twee spanningen met voldoende afstand ertussen zodat de spanningsdaling of -stijging het signaal niet verward maakt. In analoge systemen veronderstelt een eenvoudige variatie in de spanning een verandering in de informatie. Om deze reden spreken computers binair.
Wat heeft dit met PCI Express 6.0 te maken? Aangezien we de bandbreedte niet kunnen vergroten omdat het signaal vervormd is en noch het aantal pinnen voor achterwaartse compatibiliteit, moet er een oplossing worden gevonden en dit gaat door het gebruik van PAM4-codering of Pulse Amplitude Modulation, die we al hebben gezien in de GDDR6X en is niet gebaseerd op het gebruik van twee spanningswaarden maar 4 spanningswaarden voor elke pin. Op deze manier kunnen we de waarden 00, 01, 10 en 11 op elke pin coderen. Vier waarden in totaal, in plaats van de twee klassieke waarden die 0 of 1 zouden zijn.
De oplossing vermijdt het vergroten van de bandbreedte en de pinnen, maar het vertelt ons dat dit in PCI Express 7.0 niet langer mogelijk zal zijn met conventionele methoden. We zien misschien het gebruik van fotonica en optische interfaces, maar met de verbeteringen aan de PCI Express 6.0 vers uit de oven, kun je maar beter geduld hebben met zijn opvolger.
Wijzigingen in het pakketsysteem
De sprong naar PAM-4 heeft de manier veranderd waarop de PCI Express 6.0-interface zijn pakketten verzendt, ondanks het feit dat deze compatibel is met eerdere generaties door te communiceren in de traditionele PAM-2- of NRZ-modus. De realiteit is dat het PAM-4-formaat het vorige pakketsysteem niet ondersteunt en daarom is het communicatieprotocol daardoor veranderd.
De eerste verandering is de zogenaamde Forward Error Correction of FEC, het nieuwe protocol voor het corrigeren van fouten bij het verzenden van gegevens. Het probleem is dat de te verwerken bandbreedte zo hoog is dat de FEC een enorme latency toevoegt bij het verzenden van de data. Om dit te verlichten, gebruikt de PCI Express 6.0-standaard een type pakket genaamd FLIT. Een pakket is niets meer dan een set bits met een specifieke bestemming. De verzendlatentie van elke FLIT? Het hangt af van het aantal lijnen op de interface, maar elk pakket heeft een latentie van slechts 2 ns op een 16-lijns PCI Express 6.0, maar gaat tot 32 ns op een enkellijnige interface.
De FEC werkt alleen met vaste maten, daarom heeft de FLIT een grootte van 256 bytes per send. Elk pakket of TLP kan een grootte hebben van 0 bytes tot 4096 bytes en daarom kan elk pakket uit meerdere FLITS bestaan.
Derde upgrade naar PCI Express 6.0, variabel verbruik
PCI Express 6.0 voegt een nieuwe energiezuinige toestand toe, genaamd L0P. In deze modus kan de interface zijn stroomverbruik verminderen wanneer de gegevensstroom die wordt verzonden lager is dan de interface kan verzenden. Om dit te doen, varieert de kloksnelheid waarmee de interface op specifieke momenten van gegevensoverdracht werkt, zonder een onderbreking te veroorzaken die latentie aan de gegevensoverdracht toevoegt.
Het probleem is dat dit mechanisme geassocieerd is met FLITS en FEC en dus met PAM4, wat betekent dat het alleen mogelijk is om te gebruiken in PCI Express 6.0-modus en niet in de andere modi.