10Aug

Varför är seriell dataöverföring snabbare än parallell dataöverföring?

SATA-hårddiskanslutningar är snabbare än äldre PATA-hårddiskanslutningar, och detsamma kan sägas om externa kablingsstandarder, men det är kontraintuitivt: varför skulle inte parallellöverföringen bli snabbare?

Dagens fråga &Svarssession kommer till oss med tillstånd av SuperUser-en indelning av Stack Exchange, en community-driven gruppering av Q & A-webbplatser.

Frågan

SuperUser-läsare Modest är nyfiken på dataöverföringshastigheterna för parallella och seriella anslutningar:

Intuitivt tror du att parallell dataöverföring bör vara snabbare än seriell dataöverföring;parallellt överför du många bitar samtidigt, medan i serie gör man en bit åt gången.

Så vad gör SATA-gränssnitten snabbare än PATA, PCI-e-enheter snabbare än PCI, och seriella portar snabbare än parallella?

Även om det är lätt att falla in i resonemanget att SATA är nyare än PATA, måste det finnas en mer konkret mekanism på jobbet än bara ålder.

Svaret

SuperUser-bidragsgivaren Mpy ger viss inblick i överföringstypernas natur:

Du kan inte formulera det på så sätt.

Seriell överföring är långsammare än parallell överföring med samma signalfrekvens . Med en parallell överföring kan du överföra ett ord per cykel( t ex 1 byte = 8 bitar) men med en seriell överföring bara en bråkdel av det( t ex 1 bit).

Anledningen till att moderna enheter använder seriell överföring är följande:

  • Du kan inte öka signalfrekvensen för en parallell överföring utan gränsvärde, därför att alla signaler från sändaren genom konstruktion måste komma fram till mottagaren vid samtidigt .Detta kan inte garanteras för högfrekvenser, eftersom du inte kan garantera att -signaltransittiden är lika för alla signallinjer( tänk på olika vägar på moderkortet).Ju högre frekvens, desto mer små skillnader är. Mottagaren måste därför vänta tills alla signallinjer är avgjorda - uppenbarligen väntar sänker överföringshastigheten.
  • En annan bra punkt( från detta inlägg) är att man måste överväga crosstalk med parallella signallinjer. Ju högre frekvens, desto mer uttalad kryssning blir och därmed desto högre är sannolikheten för ett skadat ord och behovet av att sända det igen.[1]

Så även om du överför mindre data per cykel med en seriell överföring kan du gå till mycket högre frekvenser vilket resulterar i en högre nätöverföringshastighet.

[1] Detta förklarar också varför UDMA-kablar( parallell ATA med ökad överföringshastighet) hade dubbelt så många ledningar som stiften. Varannan tråd var jordad för att minska övergången.

Scott Chamberlain echo Myps svar och expanderar på designens ekonomi:

Problemet är synkronisering.

När du skickar parallellt måste du mäta alla linjer i exakt samma ögonblick. När du går snabbare blir fönstrets storlek för det ögonblicket mindre och mindre, så småningom kan det bli så litet att några av ledningarna fortfarande kan varastabiliserar medan andra är färdiga innan du slutfört.

Genom att skicka in seriell behöver du inte längre oroa dig för alla linjer som stabiliserar, bara en rad. Och det är mer kostnadseffektivt att stabilisera en linje 10 gånger snabbare än att lägga till 10 linjer i samma hastighet.

Några saker som PCI Express gör det bästa av båda världarna, de gör en parallell uppsättning seriella anslutningar( 16x porten på moderkortet har 16 seriella anslutningar).Genom att göra så behöver varje rad inte vara i perfekt synkronisering med de andra linjerna, så länge som kontrollern i andra änden kan ordna "paket" med data när de kommer in med rätt ordning.

Sidan How Stuff Works för PCI-Express gör det mycket bra att fördjupa sig på hur PCI Express i seriell kan vara snabbare än PCI eller PCI-X parallellt.

TL; DR Version: Det är lättare att göra en enkel anslutning gå 16 gånger snabbare än 8 anslutningar gå 2 gånger snabbare när du kommer till mycket höga frekvenser.

Har något att lägga till förklaringen? Ljud av i kommentarerna. Vill du läsa mer svar från andra tech-savvy Stack Exchange-användare? Kolla in hela diskussionsgängan här.