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 kabelförhållanden, men det är kontraintuitivt: varför skulle inte parallellöverföringen vara snabbare?
Dagens Question & Answer-session 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äsaren Modest är nyfiken på dataöverföringshastigheterna för parallella och seriella anslutningar:
Intuitivt skulle du tro 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 typ av överföringstyper:
Du kan inte formulera det på så sätt.
Seriell överföring är långsammare än parallell överföring med tanke på 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 den (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, eftersom 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 signaltransitstid är lika för alla signallinjer (tänk på olika vägar på moderkortet). Ju högre frekvens, desto mer små skillnader är. Därför måste mottagaren vänta tills alla signallinjer är avgjorda - uppenbarligen väntar sänker överföringshastigheten.
- En annan bra punkt (från detta inlägg) är det man måste överväga överhörning med parallella signallinjer. Ju högre frekvensen, desto mer uttalad kryssnål 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 kablar 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 vid exakt samma stund. 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 stabilisera medan andra är färdiga innan du sprang ur tiden.
Genom att skicka in seriell behöver du inte längre oroa dig för alla linjerna stabiliserande, bara en rad. Och det är mer kostnadseffektivt att få en linje att stabilisera 10 gånger snabbare än att lägga till 10 linjer i samma hastighet.
Vissa 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 att varje rad inte behöver vara i perfekt synkronisering med de andra linjerna, så länge som kontrollern i andra änden kan omordna "paket" med data när de kommer in med rätt ordning.
Sidan How Stuff Works för PCI-Express gör ett mycket bra fördjupning 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 enda anslutning gå 16 gånger snabbare än 8 anslutningar gå 2 gånger snabbare när du kommer till mycket höga frekvenser.
Har du 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.