Intuicyjnie można by pomyśleć, że równoległa transmisja danych powinna być szybsza niż szeregowa transmisja danych; równolegle przesyłasz wiele bitów jednocześnie, podczas gdy szeregowo robisz po jednym bicie.
Co więc sprawia, że interfejsy SATA są szybsze niż PATA, urządzenia PCI-e szybsze niż PCI, a porty szeregowe szybsze niż równoległe?
data-transfer
skromny
źródło
źródło
Odpowiedzi:
Nie możesz sformułować tego w ten sposób.
Transmisja szeregowa jest wolniejsza niż transmisja równoległa przy tej samej częstotliwości sygnału . Przy transmisji równoległej możesz przesłać jedno słowo na cykl (np. 1 bajt = 8 bitów), ale przy transmisji szeregowej tylko jego część (np. 1 bit).
Powód, dla którego nowoczesne urządzenia korzystają z transmisji szeregowej, jest następujący:
Nie można zwiększyć częstotliwości sygnału dla transmisji równoległej bez ograniczeń, ponieważ z założenia wszystkie sygnały z nadajnika muszą docierać do odbiornika w tym samym czasie . Nie można tego zagwarantować dla wysokich częstotliwości, ponieważ nie można zagwarantować, że czas przejścia sygnału jest równy dla wszystkich linii sygnałowych (pomyśl o różnych ścieżkach na płycie głównej). Im wyższa częstotliwość, tym mniejsze różnice mają znaczenie. Dlatego odbiornik musi poczekać, aż wszystkie linie sygnałowe zostaną ustalone - oczywiście oczekiwanie obniża szybkość transferu.
Kolejną dobrą rzeczą (z tego postu ) jest to, że należy rozważyć przesłuch z równoległymi liniami sygnałowymi. Im wyższa częstotliwość, tym bardziej wyraźny jest przesłuch, a wraz z nim wyższe prawdopodobieństwo uszkodzenia słowa i potrzeba jego ponownej transmisji. 1
Tak więc, nawet jeśli przesyłasz mniej danych na cykl za pomocą transmisji szeregowej, możesz przejść na znacznie wyższe częstotliwości, co skutkuje wyższą szybkością transferu netto.
1 Wyjaśnia to również, dlaczego kable UDMA (równoległy ATA ze zwiększoną prędkością transferu) miały dwa razy więcej przewodów niż pinów. Co drugi drut był uziemiony w celu zmniejszenia przesłuchu.
źródło
Problemem jest synchronizacja.
Kiedy wysyłasz równolegle, musisz zmierzyć wszystkie linie dokładnie w tym samym momencie, ponieważ im szybciej jedziesz, rozmiar okna w tym momencie staje się coraz mniejszy, w końcu może być tak mały, że niektóre druty mogą się nadal stabilizować podczas gdy inni są skończeni, zanim skończy Ci się czas.
Wysyłając szeregowo, nie musisz się już martwić o stabilizację wszystkich linii, tylko jedną linię. Bardziej opłacalne jest 10-krotnie szybsze stabilizowanie jednej linii niż dodawanie 10 linii przy tej samej prędkości.
Niektóre rzeczy, takie jak PCI Express, działają najlepiej z obu światów, wykonują równoległy zestaw połączeń szeregowych (port 16x na płycie głównej ma 16 połączeń szeregowych). Dzięki temu każda linia nie musi być idealnie zsynchronizowana z innymi liniami, pod warunkiem, że kontroler na drugim końcu może zmienić kolejność „pakietów” danych, gdy przychodzą w prawidłowej kolejności.
Strona How Stuff działa dla PCI-Express bardzo dokładnie wyjaśnia, w jaki sposób PCI Express w trybie szeregowym może być szybszy niż PCI lub PCI-X równolegle.
Wersja TL; DR: Łatwiej jest zrobić jedno połączenie 16 razy szybciej niż 8 połączeń 2 razy szybciej, gdy dojdziesz do bardzo wysokich częstotliwości.
źródło
Równoległość nie jest z natury wolniejsza, ale wprowadza wyzwania, których nie zapewnia komunikacja szeregowa.
Ale wiele najszybszych łączy jest nadal równoległych: szyna frontowa komputera jest zwykle bardzo równoległa i zwykle należy do najszybszych połączeń wewnętrznych w komputerze. Połączenia światłowodowe mogą być również wysoce równoległe, przenosząc wiele długości fal przez pojedyncze włókno. Jest to jednak drogie i dlatego nietypowe. Najpopularniejszą formą Gigabit Ethernet są w rzeczywistości 4 równoległe kanały 250Mbit Ethernet w jednym przewodzie.
Najbardziej wyraźnym wyzwaniem wprowadzonym przez równoległość jest „przesłuch”: gdy prąd sygnału zaczyna się lub zatrzymuje, chwilowo indukuje mały prąd na przewodach obok niego. Im szybszy sygnał, tym częściej tak się dzieje i tym trudniej jest go odfiltrować. Równoległe IDE próbowało zminimalizować ten problem poprzez podwojenie liczby drutów w kablu taśmowym i podłączenie każdego innego drutu do uziemienia. Ale to rozwiązanie prowadzi cię tylko do tej pory. Długie kable, zagięcia i pętle oraz bliskość innych kabli wstążkowych sprawiają, że jest to niewiarygodne rozwiązanie dla sygnałów o bardzo dużej prędkości.
Ale jeśli wybierzesz tylko jedną linię sygnałową, to możesz ją zmienić tak szybko, jak pozwala na to sprzęt. Rozwiązuje również subtelne problemy z synchronizacją z niektórymi sygnałami podróżującymi szybciej niż inne.
Dwa przewody są zawsze teoretycznie dwa razy szybsze niż jeden, ale każda dodana linia sygnału subtelnie komplikuje fizykę, której lepiej unikać.
źródło
Szeregowa transmisja danych nie jest szybsza niż równoległa. Jest to wygodniejsze i dlatego opracowano szybkie zewnętrzne połączenie szeregowe między urządzeniami. Nikt nie chce zajmować się kablami wstążkowymi, które mają 50 lub więcej przewodów.
Pomiędzy układami scalonymi na płytce drukowanej łatwiej jest sobie poradzić z szeregowym protokołem, takim jak I2C, który wymaga tylko dwóch przewodów, niż routing wielu równoległych ścieżek.
Ale istnieje wiele przykładów w twoim komputerze, w których równoległość jest używana do znacznego zwiększenia przepustowości. Na przykład słowa nie są odczytywane pojedynczo z pamięci. W rzeczywistości pamięci podręczne są napełniane w dużych blokach. Wyświetlacze rastrowe to kolejny przykład: równoległy dostęp do wielu banków pamięci, aby uzyskać piksele szybciej, równolegle. Pasmo pamięci zależy krytycznie od równoległości.
To urządzenie DAC reklamowane przez Tektronix jako „najszybszy dostępny na rynku 10-bitowy szybki przetwornik cyfrowo-analogowy” korzysta z równoległości w celu wprowadzenia danych, które trafiają do przetwornika DAC przez 320 linii, które są zredukowane do 10 dzięki dwóm etapom multipleksowania napędzany przez różne działy głównego zegara 12 GHZ. Jeśli najszybszy na świecie 10-bitowy przetwornik cyfrowo-analogowy mógłby zostać wykonany przy użyciu pojedynczej linii szeregowej, prawdopodobnie tak by było.
źródło
Równoległość była oczywistym sposobem na zwiększenie prędkości, gdy bramki logiczne były wystarczająco wolne, aby można było zastosować podobne techniki elektryczne w autobusach / kablach i transmisji na chipie. Jeśli już przełączasz drut tak szybko, jak pozwala na to twój tranzystor, więc jedynym sposobem na skalowanie jest użycie większej liczby drutów.
Z czasem prawo Moore'a wyprzedziło ograniczenia elektromagnetyczne, dlatego transmisje kablami, a nawet autobusami pokładowymi, stały się wąskim gardłem w porównaniu do prędkości na chipie. OTOH, rozbieżność prędkości pozwala na zaawansowane przetwarzanie na końcach w celu bardziej efektywnego wykorzystania kanału.
Gdy opóźnienie propagacji zbliża się do rzędu kilku zegarów, zaczynasz martwić się efektami analogowymi, takimi jak odbicia => potrzebujesz po drodze dopasowanych impedancji (szczególnie trudnych dla złączy) i wolisz przewody punkt-punkt niż magistrale wielopunktowe. Dlatego SCSI potrzebowało terminacji i dlatego USB wymaga koncentratorów zamiast prostych rozgałęźników.
Przy wyższych prędkościach masz wiele bitów w locie w danym momencie wzdłuż drutu => musisz użyć protokołów potokowych (dlatego właśnie protokoły FSB Intela stały się strasznie skomplikowane; myślę, że pakiety spakowane, takie jak PCIe, były reakcją na tę złożoność).
Kolejnym efektem jest kara za wiele cykli za zmianę kierunku przepływu sygnału - dlatego Firewire oraz SATA i PCIe za pomocą dedykowanych przewodów w każdym kierunku przewyższają USB 2.0.
Hałas indukowany, inaczej przesłuch, wzrasta wraz z częstotliwością. Największy wzrost prędkości nastąpił po przyjęciu sygnalizacji różnicowej, która radykalnie zmniejszyła przesłuch (matematycznie pole niezrównoważonego ładunku spada jako R ^ 2, ale pole dipola spada jako R ^ 3).
Myślę, że to właśnie spowodowało wrażenie, że „serial jest szybszy niż równoległy” - skok był tak duży, że można było zejść do 1 lub 2 par różnicowych i nadal być szybszy niż kable LPT lub IDE . Wygrano również przesłuch z posiadania tylko jednej pary sygnałów w kablu, ale to niewielkie.
Opóźnienie propagacji drutu jest różne (zarówno dlatego, że długości drutu są trudne do dopasowania w zwojach 90º, złączach itp., A także z powodu pasożytniczych efektów innych przewodów), co spowodowało, że synchronizacja była problemem.
Rozwiązaniem było dostrojenie opóźnień w każdym odbiorniku i dostrojenie ich przy uruchamianiu i / lub w sposób ciągły na podstawie samych danych. Kodowanie danych w celu uniknięcia zera lub zera wiąże się z niewielkim obciążeniem, ale ma zalety elektryczne (pozwala uniknąć dryftu prądu stałego, kontroluje widmo) i, co najważniejsze, pozwala całkowicie upuścić przewody zegarowe (co nie jest niczym więcej niż 40 sygnały, ale to wielka sprawa, że kabel szeregowy ma 1 lub 2 pary zamiast 2 lub 3).
Zauważ, że są rzucanie równoległość w wąskim gardłem - Dzisiejsze chipy BGA mieć setki lub tysiące szpilek, PCB mieć więcej i więcej warstw. Porównaj to ze starymi 40-pinowymi mikrokontrolerami i 2-warstwowymi płytkami drukowanymi ...
Większość z wyżej wymienionych technik się niezbędne dla zarówno równoległej i transmisji szeregowej. Tyle, że im dłuższe są druty, tym bardziej atrakcyjne staje się przepychanie wyższych prędkości przez mniejszą liczbę drutów.
źródło