Wat is 128b/130b-codering?

Methode waarbij aan 128 databits een kop van 2 bits wordt toegevoegd. Het rendement is ongeveer 98,5% en schakelovergangen worden met scrambling gewaarborgd. Wordt gebruikt vanaf PCI Express 3.0.

Japanse benaming: 128b/130b符号化

“128b/130b-codering” komt voor in 2 oefenvragen uit 1 onderwerpen, bijv. Interfaces en busstandaarden.

Vakgebied: Interfaces en busstandaarden

Hoe een 128b/130b-blok is opgebouwd

128b/130b-codering groepeert data in blokken van 130 bits: een sync-header van 2 bits gevolgd door een payload van 128 bits. Alleen de headerwaarden 01 en 10 zijn toegestaan, zodat elk blok gegarandeerd minstens één overgang aan het begin heeft, waarmee de ontvanger de bloklimieten kan vinden. De header vertelt de ontvanger ook of de payload data bevat of een ordered set, de speciale symbolen voor linktraining en klokcompensatie. De payload zelf gaat door een scrambler, die hem XOR't met een pseudowillekeurige reeks uit een lineair teruggekoppeld schuifregister (LFSR), en de ontvanger descrambelt hem met dezelfde reeks.

Scrambling in plaats van gegarandeerde balans

Een seriële ontvanger haalt zijn klok uit de overgangen in de data, en AC-gekoppelde links hebben ongeveer evenveel enen als nullen nodig. 8b/10b-codering garandeert beide per constructie: geen reeks van meer dan vijf gelijke bits en een running disparity die de lijn DC-gebalanceerd houdt, ten koste van twee extra bits per byte. 128b/130b vertrouwt in plaats daarvan op scrambling om lange reeksen en onbalans statistisch zeer onwaarschijnlijk te maken. De garantie is zwakker, dus egalisatie (equalization) en klokherstel moeten af en toe een langere reeks verdragen, maar de overhead daalt van 20% naar ongeveer 1,5%.

Wat het rendement betekent voor PCI Express

Het rendement is 128/130, ongeveer 98,5%, tegenover 80% voor 8b/10b. Daarom verdubbelde PCI Express 3.0 de bruikbare bandbreedte bijna, terwijl de signaleringssnelheid alleen van 5 naar 8 GT/s ging: een PCIe 2.0-lane draagt 5 × 0,8 = 4 Gb/s aan data, terwijl een PCIe 3.0-lane 8 × 128/130 ≈ 7,88 Gb/s draagt, ofwel ongeveer 0,985 GB/s. Een x16-link geeft daardoor ongeveer 15,8 GB/s in elke richting vóór pakketheaders en protocoloverhead, die het geleverde getal wat verlagen.

Verwante codes

128b/130b wordt gebruikt door PCI Express 3.0, 4.0 en 5.0, die de codering behielden en de transfersnelheid elke generatie verdubbelden. Het behoort tot dezelfde familie als 64b/66b, gebruikt in 10 Gigabit Ethernet, dat eveneens een sync-header van 2 bits combineert met een gescrambelde payload. PCI Express 6.0 stapte over op PAM4-signalering met flits van vaste grootte en forward error correction, en gebruikt dus geen 128b/130b-blokken meer. Controleer bij het vergelijken van linksnelheden altijd welke codering geldt, omdat de ruwe snelheid in GT/s niet de datasnelheid is.

Nu oefenen: vragen over 128b/130b-codering

Welke waarde komt het best overeen met de efficiëntie van de 128b/130b-codering die vanaf PCI Express 3.0 wordt gebruikt?

  1. AOngeveer 80%
  2. BOngeveer 50%
  3. COngeveer 98,5%
Antwoord en toelichting tonen

Antwoord: C. Ongeveer 98,5%

Bij 128b/130b-codering worden 128 databits met een header van 2 bits in 130 bits verzonden, dus de efficiëntie is 128/130 ≈ 98,5%. De overhead is sterk verminderd ten opzichte van de 80% van 8b/10b. De frequentie van overgangen wordt gewaarborgd door de data te scramblen (exclusieve OF met een vaste pseudowillekeurige reeks) om nullen en enen te mengen. Daardoor kon PCI Express 3.0 de effectieve snelheid vrijwel verdubbelen door de signaalsnelheid slechts van 5 naar 8 GT/s te verhogen.

Welke waarde komt het best overeen met de effectieve bandbreedte in één richting van een x16-verbinding van PCI Express 3.0 (8 GT/s per lane, 128b/130b-codering)?

  1. AOngeveer 128 GB/s
  2. BOngeveer 1 GB/s
  3. COngeveer 16 GB/s
Antwoord en toelichting tonen

Antwoord: C. Ongeveer 16 GB/s

De effectieve snelheid van één lane is 8 Gb/s × 128/130 ≈ 7,88 Gb/s, en gedeeld door 8 ongeveer 0,985 GB/s. Bij 16 lanes is de bandbreedte in één richting ongeveer 15,8 GB/s, dus ongeveer 16 GB/s, en voor zenden en ontvangen samen ongeveer 32 GB/s. De bandbreedte van PCI Express volgt uit het product van generatie (snelheid per lane), coderingsefficiëntie en aantal lanes. In de praktijk is hij iets kleiner door overhead zoals pakketheaders.

Veelgestelde vragen

Waarom is 128b/130b efficiënter dan 8b/10b?

8b/10b besteedt 2 extra bits aan elke 8 databits, een overhead van 20%, terwijl 128b/130b 2 headerbits besteedt aan elke 128 databits, ongeveer 1,5%. Dat kan omdat scrambling, en niet de code zelf, voor de overgangen en balans zorgt die de ontvanger nodig heeft.

Wat is de sync-header bij 128b/130b-codering?

Het is het voorvoegsel van 2 bits van elk blok van 130 bits, 01 of 10, dat de bloklimiet markeert met een gegarandeerde overgang en aangeeft of het blok data of een ordered set bevat.

Hoeveel bandbreedte heeft een PCIe 3.0 x16-link?

Ongeveer 15,8 GB/s in elke richting, uit 8 GT/s × 128/130 ÷ 8 bits per byte × 16 lanes. Door pakketoverhead is de bruikbare doorvoer iets lager.

“128b/130b-codering” in de toelichting

Vragen met “128b/130b-codering” (2)

  1. Welke waarde komt het best overeen met de efficiëntie van de 128b/130b-codering die vanaf PCI Express 3.0 wordt gebruikt?
  2. Welke waarde komt het best overeen met de effectieve bandbreedte in één richting van een x16-verbinding van PCI Express 3.0 (8 GT/s per lane, 128b/130b-codering)?

Verwante termen

PCI Express 8b/10b-codering AXI Bitfoutenpercentage (BER) Clock-and-data-recovery (CDR) Creditgebaseerde flowcontrol CXL Differentiële signalering Equalizer Hot-plug

Naar de woordenlijst