直观地讲,您会认为并行数据传输应该比串行数据传输更快;在并行模式下,您会同时传输许多位,而在串行模式下,您每次只传输一位。
那么,是什么使得 SATA 接口比 PATA 更快、PCI-e 设备比 PCI 更快、串行端口比并行端口更快呢?
答案1
你不能用这种方式来表述它。
串行传输是慢点比并行传输相同信号频率。通过并行传输,每个周期可以传输一个字(例如 1 字节 = 8 位),但通过串行传输只能传输其中的一小部分(例如 1 位)。
现代设备采用串行传输的原因如下:
你不能无限制地增加并行传输的信号频率,因为根据设计,来自发射机的所有信号都需要以同一时间。对于高频,这无法保证,因为你不能保证信号传输时间对于所有信号线来说都是相等的(想象一下主板上的不同路径)。频率越高,微小的差异就越重要。因此,接收器必须等到所有信号线都稳定下来——显然,等待会降低传输速率。
另一个好的观点(来自这个帖子)需要考虑的是相声并行信号线。频率越高,串扰越明显,出现错误字的可能性就越大,需要重新传输。1
因此,即使您通过串行传输每个周期传输的数据较少,您也可以使用更高的频率,从而实现更高的净传输速率。
1这也解释了为什么UDMA-电缆(传输速度更快的并行 ATA)的导线数量是针脚数量的两倍。每隔一条导线就接地以减少串扰。
答案2
问题在于同步。
当您并行发送时,您必须在同一时刻测量所有的线,随着速度的加快,那一刻的窗口大小会越来越小,最终它会变得非常小,以至于一些电线可能仍然处于稳定状态,而其他电线在您用完时间之前就已经完成了。
通过串行发送,您不再需要担心所有线路的稳定,只需一条线路即可。使一条线路稳定 10 倍比以相同速度添加 10 条线路更具成本效益。
有些东西,比如 PCI Express,可以兼顾两方面的优点,它们可以并行设置串行连接(主板上的 16x 端口有 16 个串行连接)。这样,每条线路就不需要与其他线路完全同步,只要另一端的控制器能够按照正确的顺序对传入的数据“数据包”进行重新排序即可。
这PCI-Express 的工作原理页面深入阐述了串行 PCI Express 如何比并行 PCI 或 PCI-X 更快。
TL;DR 版本:一旦达到非常高的频率,让单个连接的速度提高 16 倍比让 8 个连接的速度提高 2 倍要容易得多。
答案3
并行本质上并不是更慢,但它确实带来了串行通信不会带来的挑战。
但许多最快的链路仍然是并行的:计算机中的前端总线通常高度并行,并且通常是计算机中最快的互连链路之一。光纤连接也可以通过在单根光纤上承载多个波长来实现高度并行。但这很昂贵,因此并不常见。千兆以太网最常见的形式实际上是单根线路上的 4 个 250Mbit 以太网并行通道。
并行性带来的最显著挑战是“串扰”:当信号电流开始或停止时,它会瞬间在旁边的电线上感应出一个小电流。信号越快,这种情况发生得越频繁,而且越难过滤掉。并行 IDE 试图通过将带状电缆中的电线数量增加一倍并将每隔一根电线接地来尽量减少这个问题。但这种解决方案只能让你走这么远。长电缆、折叠和环路以及与其他带状电缆的距离都使这种解决方案对于非常高速的信号来说不可靠。
但如果你只使用一条信号线,那么你就可以自由地以硬件允许的速度切换它。它还可以解决某些信号比其他信号传输得更快的微妙同步问题。
从理论上讲,两根线的速度总是单根线的两倍,但每添加一条信号线都会使物理原理变得更加复杂,这种情况最好避免。
答案4
当逻辑门速度足够慢时,并行是提高速度的明显方法,您可以使用类似的电气技术进行总线/电缆和片上传输。如果您已经以晶体管允许的最快速度切换线路,那么扩展的唯一方法就是使用更多线路。
随着时间的推移,摩尔定律超越了电磁约束,因此与片上速度相比,电缆或板载总线上的传输成为瓶颈。另一方面,速度差异允许在两端进行复杂的处理,从而更有效地利用通道。
一旦传播延迟接近几个时钟的数量级,您就会开始担心反射等模拟效应 => 您需要沿途匹配阻抗(对于连接器来说尤其棘手),并且更喜欢点对点线路而不是多点总线。这就是 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 相比……
上述大多数技术对于两个都并行和串行传输。只是线路越长,用更少的线路实现更高的速率就越有吸引力。