題 為什麼串行數據傳輸比並行更快?


直覺上,您會認為並行數據傳輸應該比串行數據傳輸更快;並行地,您同時傳輸多個位,而在串行中,您一次只傳輸一個位。

那麼是什麼讓SATA接口比PATA更快,PCI-e設備比PCI更快,串口比並行更快?


125
2018-06-02 16:27


起源


也許是這樣,但如果是這樣的話,我會看到所有這些 intel.com/content/www/us/en/chipsets/performance-chipsets/...    它說PCIe的多個通道,我在維基百科上查找了FDI,它說“2個獨立的4位固定頻率鏈路/通道/管道”和4個鏈路的DMI會話。 (補充 - 斯科特的回答可能部分涵蓋了這一點) - barlop
這一切都歸結為時鐘頻率。 - Daniel R Hicks
現有的三個答案未提及經濟學,即 成本。製作非常快速的串行接口比製作非常快的並行接口要便宜得多。對於傳輸線,僅使用幾根導線的串行電纜比並行電纜便宜,而並行電纜屏蔽起來困難且昂貴。 - sawdust
回到過去的日子 DB25 和 DB9 連接,你很幸運 115 kbit / s到串口 而並行得到了你 12 Mbit / s 帶有8個並行數據引腳。 - α CVn


答案:


你不能用這種方式表達它。

串行傳輸是 慢點 比並行傳輸給出的 相同的信號頻率 使用並行傳輸,您可以每個週期傳輸一個字(例如,1個字節= 8位),但串行傳輸只能傳輸一小部分(例如1位)。

現代設備使用串行傳輸的原因如下:

  • 您不能無限制地增加並行傳輸的信號頻率,因為根據設計,來自發射機的所有信號都需要到達接收機處。 同一時間。這不能保證高頻率,因為你不能保證 信號傳輸時間 對於所有信號線都是相同的(考慮主板上的不同路徑)。頻率越高,差異就越小。因此接收器必須等到所有信號線都穩定下來 - 顯然,等待會降低傳輸速率。

  • 另一個好點(來自 這個帖子)是需要考慮的 相聲 帶有並行信號線。頻率越高,串擾越明顯,隨之而來的是單詞損壞的可能性越高,需要重新發送。1

因此,即使您使用串行傳輸每個週期傳輸的數據較少,您也可以使用更高的頻率,從而獲得更高的淨傳輸速率。


1 這也解釋了原因 UDMA-電纜 (具有增加的傳輸速度的並行ATA)具有兩倍於引腳的線。每隔一根導線接地以減少串擾。


141
2018-06-02 16:44



接收器不必等待所有線路同時穩定 - 現在快速並行傳輸涉及測量然後補償到達延遲 分別在每根電線上。這甚至適用於像CPU < - > DRAM這樣的短板載鏈路!通過採用諸如嵌入式時鐘(例如8b / 10b編碼)和/或訓練序列的一些串行技術,這成為可能。 - Beni Cherniavsky-Paskin
你的闡述與你的陳述相矛盾。你開始說明序列是 慢點 並解釋為什麼它更快。我認為它是混亂的源頭,並且想知道它是如何回答的。 - Val
@Val你沒有讀完整個答案。當公共汽車以相同的速度行駛時,公共汽車比汽車更多 - 但由於物理作用的方式,這些汽車可以行駛 辦法 比公共汽車快,所以使用汽車比乘公共汽車更快。數據鏈路也是如此:以相同的速度,並行電纜比串行電纜移動的數據更多;但是,我們可以推動串行電纜的運行速度遠遠超過並行電纜。如果我們試圖加速並行電纜,物理會導致數據變成垃圾。 - Darth Android
事實上,我看到了顛倒。乘客(公共)交通擁有更高的吞吐量,因為你不會與所有人一起運輸汽車,儘管人們更喜歡單獨移動,並行汽車,因此,開發廣泛的郊區基礎設施,而不是將人們打包到緊湊的三維城市。我看到串行位的爆發作為一列火車。粗略地說,發送數據包很昂貴,但每個數據包發送的數據量並不重要。因此,發送一列1000比特而不是1000輛並行汽車便宜1000倍。 - Val
@Val這就是交通工作的原因,是的,但這不是電磁物理學的工作方式,也不適合作為類比。這裡沒有人談論效率,只是速度和吞吐量。即使並行鏈路每個時鐘週期可以移動更多數據,串行鏈路每個時鐘週期可以移動更少的數據,但在相同的時間範圍內有更多的時鐘週期,仍然具有更高的吞吐量。 - Darth Android


問題是同步。

當您並行發送時,必須在完全相同的時刻測量所有線條,因為隨著時間的推移,窗口的尺寸變得越來越小,最終它會變得如此之小以至於某些線纜可能仍在穩定而其他人在你沒時間用完之前就完成了。

通過串行發送,您不再需要擔心所有線路穩定,只需一條線路。並且使一條線的穩定速度比以相同速度增加10條線的速度快10倍更具成本效益。

像PCI Express這樣的東西可以做到兩全其美,它們會做一組並行的串行連接(主板上的16x端口有16個串行連接)。通過這樣做,每條線路不需要與其他線路完美同步,只要另一端的控制器可以使用正確的順序對數據的“數據包”進行重新排序。

如何使用PCI-Express的Stuff Works頁面 深入探討串行PCI Express如何比PCI或PCI-X並行更快。


TL; DR版本: 一旦達到非常高的頻率,單個連接比8個連接快16倍,速度提高2倍。


68
2018-06-02 16:40



@barlop你可以在以太網中做並行,但它在消費者使用中並不常見,它的術語叫做 通道綁定。 - 更正:使用無線頻率的綁定在消費者使用中已經變得很普遍。是如何 802.11n可以獲得高達600 Mbit / s的速率,它們最多使用4個串行流。 - Scott Chamberlain
@barlop我給了你一個錯誤的術語,Channel Bonding是更廣泛的通用術語,特別是對於以太網,你所詢問的正確術語被稱為 鏈接聚合。 - Scott Chamberlain
Rich Seifert寫道:“確實,許多人稱之為IEEE 802.11無線以太網”。雖然這肯定會在任何技術論證面前出現(它甚至不使用與IEEE 802.3相同的幀格式),但我可以忍受它 與技術差異不重要的人交談時“< - 他的話。幾年前我讀過他主持和編輯802.3x並主持以太網II(顯然是DIX以太網,10Mbps以太網) - 我讀到他是”IEEE 802.3z千兆以太網任務的積極參與者強制“。所以,相當有權說802.11不是以太網。 - barlop
1000BASE-T以太網(802.3ab,“千兆以太網”)並行使用4個線對。 - MSalters
以太網的經濟性與SATA之類的總線不同 - 電纜非常長且更換費用昂貴,因此您最終將重點放在升級電子設備上。早期以太網使用1對電線,但標準化為4對電纜,預計未來的使用(在那個時代,並行是更快傳輸的明顯方法)。由於串擾,這變得很難,但由於電纜已經存在,所以不使用它們是一種恥辱。最終,通過非常複雜的DSP處理 - > D2A-> ...電纜...... - > A2D-> DSP處理,可以進行串音消除。 - Beni Cherniavsky-Paskin


並行本身並不慢,但它確實引入了串行通信所不具備的挑戰。

但許多最快的鏈接仍然是並行的:計算機中的前端總線通常是高度並行的,通常是計算機中最快的鏈接。通過在單根光纖上承載多個波長,光纖連接也可以是高度並行的。這是昂貴的,因此不典型。最常見的千兆以太網形式實際上是單線中的4個250Mbit以太網並行通道。

並行性引入的最明顯的挑戰是“串擾”:當信號電流開始或停止時,它會瞬間在其旁邊的導線上感應出小電流。信號越快,發生的次數越多,過濾得越困難。並行IDE試圖通過將帶狀電纜中的導線數量加倍並將每個其他導線連接到地來最小化此問題。但是這個解決方案只能讓你到目前為止。長電纜,折疊和環路以及與其他帶狀電纜的接近都使得這對於非常高速的信號來說是不可靠的解決方案。

但是如果你只使用一條信號線,那麼你就可以像硬件允許的那樣快速切換它。它還解決了一些微妙的同步問題,其中一些信號傳輸速度比其他信號快。

理論上,兩條線的速度始終是一條線的兩倍,但是您添加的每條信號線都會使物理特性變得複雜,這可能會更好地避免。


17
2018-06-03 08:47



自英特爾酷睿2時代以來,FSB一直沒有成為主流CPU設計的一部分,AMD在幾年前就將其置於AMD64設計之後。相反,兩者都將內存控制器移動到CPU本身,並使用快/窄總線將其他所有內容連接到CPU,而不是FSB的(相對)寬/慢設計。 - Dan Neely
幾十年來,串擾減少技術已為人所知,但正如對問題的評論所述,它們引入了額外的成本,其中一些使同步問題更加嚴重(具有不同捻率的雙絞線阻抗略有變化,這意味著輕微的傳輸速度的變化,以及......)。 - dmckee


串行數據傳輸並不比並行快。它更方便,因此開髮用於在設備單元之間進行快速外部串行接口。沒人想要處理具有50個或更多導體的帶狀電纜。

在電路板上的芯片之間,像I2C這樣僅需要兩條線的串行協議比路由多條並行線更容易處理。

但是在您的計算機中有很多示例,其中並行性用於大量增加帶寬。例如,一次不從存儲器讀取一個字。事實上,緩存是以大塊重新填充的。光柵顯示是另一個例子:並行訪問多個存儲體以更快地並行獲得像素。內存帶寬主要取決於並行性。

這個DAC設備 被泰克稱為“世界上最快的商用10位高速DAC”,大量使用並行技術來引入數據,這些數據通過320線路進入DAC,通過不同驅動的兩級多路復用降低到10主控12 GHZ時鐘的劃分。 如果世界上最快的10位DAC可以使用單個串行輸入線製作,那麼它可能會。


12
2018-06-02 19:25



+1提到50針帶狀電纜。轉向SAS / SATA電纜的動機之一是寬電纜會影響機箱內的氣流。 - jqa


當邏輯門足夠慢以至於您可以使用類似的電氣技術進行總線/電纜和片上傳輸時,並行是提高速度的明顯方法。如果您已經按照晶體管允許的速度切換導線,那麼擴展的唯一方法就是使用更多的導線。

隨著時間的推移,摩爾定律超越了電磁約束,因此與片上速度相比,通過電纜或甚至板載總線的傳輸成為瓶頸。 OTOH,速度差異允許在末端進行複雜處理以更有效地使用信道。

  • 一旦傳播延遲接近幾個時鐘的數量級,你就開始擔心模擬效應,比如反射=>你需要一路上匹配的阻抗(特別是對連接器來說很棘手),而且更喜歡多點總線上的點對點線。這就是SCSI需要終止的原因,這就是為什麼USB需要集線器而不是簡單的分離器。

  • 在更高的速度下,你在線路的任何給定時刻都有多個位在飛行中=>你需要使用流水線協議(這就是為什麼英特爾的FSB協議變得非常複雜;我認為像PCIe這樣的分組協議是對這種複雜性的反應)。

    另一個影響是切換信號流方向的多周期懲罰 - 這就是為什麼Firewire和SATA和PCIe使用每個方向的專用線路優於USB 2.0。

  • 感應噪聲,即串擾,隨頻率上升。速度的最大進步來自採用差分信號,這大大降低了串擾(數學上,不平衡電荷場隨R ^ 2下降,但偶極子場下降為R ^ 3)。

    我認為這是導致“串行更快並行”印象的原因 - 跳躍是如此之大,你可以下降到1或2個差分對,仍然比LPT或IDE電纜更快。在電纜中只有一個信號對,也有一個串音勝利,但那是次要的。

  • 導線傳播延遲各不相同(因為導線長度在90º轉彎,連接器等之間難以匹配,並且由於其他導體的寄生效應)導致同步成為問題。

    解決方案是在每個接收器上具有可調延遲,並在啟動時和/或從數據本身連續調整它們。對數據進行編碼以避免0或1的條紋會產生較小的開銷,但具有電氣優勢(避免直流漂移,控制頻譜),最重要的是允許完全丟棄時鐘線(這在40之上並不是一個大問題)信號,但對於串行電纜有1或2對而不是2或3)是一個巨大的交易。

請注意我們  把並行性放在瓶頸 - 今天的BGA芯片有數百或數千個引腳,PCB有越來越多的層。將其與舊的40引腳微控制器和2層PCB進行比較......

大多數上述技術變得不可或缺  並行和串行傳輸。只是電線越長,通過更少的電線推動更高的速率就越有吸引力。


9
2018-06-04 22:00