Waarom is seriële gegevensoverdracht sneller dan parallelle gegevensoverdracht?
SATA-hardeschijfverbindingen zijn sneller dan oudere PATA-harde schijfverbindingen en hetzelfde kan worden gezegd voor externe bekabelingsnormen, maar dit is contra-intuïtief: waarom zou de parallelle transmissie niet sneller zijn??
De Question & Answer-sessie van vandaag komt tot ons dankzij SuperUser - een onderdeel van Stack Exchange, een gemeenschapsgedreven groep van Q & A-websites.
De vraag
SuperUser-lezer Modest is nieuwsgierig naar de gegevensoverdrachtsnelheden van parallelle en seriële verbindingen:
Intuïtief zou je denken dat parallelle datatransmissie sneller zou moeten zijn dan seriële datatransmissie; parallel verplaats je veel bits tegelijkertijd, terwijl je in serie een bit tegelijk doet.
Dus wat maakt SATA-interfaces sneller dan PATA, PCI-e apparaten sneller dan PCI en seriële poorten sneller dan parallel?
Hoewel het gemakkelijk is in te gaan op de redenering dat SATA nieuwer is dan PATA, moet er een meer concreet mechanisme aan het werk zijn dan alleen ouderdom.
Het antwoord
SuperUser-bijdrager Mpy biedt enig inzicht in de aard van de overdrachtstypen:
Je kunt het niet op deze manier formuleren.
Seriële verzending is tragere dan parallelle transmissie gezien de dezelfde signaalfrequentie. Met een parallelle verzending kunt u één woord per cyclus overbrengen (bijvoorbeeld 1 byte = 8 bits) maar met een seriële verzending slechts een fractie ervan (bijvoorbeeld 1 bit).
De reden waarom moderne apparaten seriële verzending gebruiken, is de volgende:
- U kunt de signaalfrequentie voor een parallelle verzending niet onbeperkt verhogen, omdat alle signalen van de zender bij ontwerp bij de ontvanger moeten aankomen bij dezelfde tijd. Dit kan niet worden gegarandeerd voor hoge frequenties, omdat u niet kunt garanderen dat de signaal transittijd is gelijk voor alle signaallijnen (denk aan verschillende paden op het moederbord). Hoe hoger de frequentie, hoe kleiner de verschillen. Vandaar dat de ontvanger moet wachten tot alle signaallijnen zijn afgewikkeld - uiteraard, wachtend verlaagt de overdrachtsnelheid.
- Een ander goed punt (uit deze post) is dat men moet overwegen crosstalk met parallelle signaallijnen. Hoe hoger de frequentie, des te meer uitgesproken overspraak en daarmee des te groter de kans op een beschadigd woord en de noodzaak om het opnieuw uit te zenden. [1]
Dus zelfs als u minder gegevens per cyclus overdraagt met een seriële verzending, kunt u naar veel hogere frequenties gaan, wat resulteert in een hogere netto overdrachtssnelheid.
[1] Dit verklaart ook waarom UDMA-kabels (parallelle ATA met verhoogde overdrachtssnelheid) tweemaal zoveel draden als pinnen had. Elke tweede draad was geaard om overspraak te verminderen.
Scott Chamberlain weergalmt Myp's antwoord en breidt uit naar de economie van design:
Het probleem is synchronisatie.
Wanneer u parallel verzendt, moet u alle lijnen exact op hetzelfde moment meten, naarmate u sneller gaat, wordt de grootte van het venster voor dat moment kleiner en kleiner, uiteindelijk kan het zo klein worden dat sommige draden nog steeds stabiliseren terwijl anderen klaar zijn voordat je tijd op was.
Door het versturen van een serie hoeft u zich niet langer zorgen te maken over het stabiliseren van alle regels, slechts één regel. En het is kostenefficiënter om een lijn 10 keer sneller te laten stabiliseren dan om 10 lijnen met dezelfde snelheid toe te voegen.
Sommige dingen zoals PCI Express doen het beste van beide werelden, ze doen een parallelle serie seriële verbindingen (de 16x poort op je moederbord heeft 16 seriële verbindingen). Op die manier hoeft elke lijn niet perfect synchroon te lopen met de andere lijnen, net zo lang als de controller aan de andere kant de "pakketten" van gegevens opnieuw kan ordenen als ze binnenkomen met de juiste volgorde.
De How Stuff Works-pagina voor PCI-Express geeft een zeer goede uiteenzetting over de manier waarop PCI Express in serie sneller kan zijn dan PCI of PCI-X parallel.
TL; DR-versie: Het is gemakkelijker om een enkele verbinding 16 maal sneller te laten verlopen dan 8 verbindingen die 2 keer sneller gaan zodra je tot zeer hoge frequenties komt.
Heb je iets toe te voegen aan de uitleg? Geluid uit in de reacties. Wilt u meer antwoorden van andere technisch onderlegde Stack Exchange-gebruikers lezen? Bekijk hier de volledige discussiethread.