凭直觉,您会认为并行数据传输应该比串行数据传输快;并行操作是同时传输许多位,而串行操作是一次传输一位。
那么,是什么使SATA接口比PATA更快,PCI-e设备比PCI更快,串行端口比并行更快?
凭直觉,您会认为并行数据传输应该比串行数据传输快;并行操作是同时传输许多位,而串行操作是一次传输一位。
那么,是什么使SATA接口比PATA更快,PCI-e设备比PCI更快,串行端口比并行更快?
Answers:
您不能以此方式制定。
在相同的信号频率下,串行传输比并行传输要慢。使用并行传输,您可以每个周期传输一个字(例如1字节= 8位),而使用串行传输时,仅传输其一小部分(例如1位)。
现代设备使用串行传输的原因如下:
您可以在不增加信号频率并行传输无极限,因为按照设计,需要在接收器在到达从发射的所有信号在同一时间。这不能保证在高频下使用,因为您不能保证所有信号线的信号传输时间都相等(请考虑主板上的不同路径)。频率越高,差异越小。因此,接收器必须等到所有信号线都建立好之后,显然,等待会降低传输速率。
另一个好处(来自本文)是,需要考虑与并行信号线的串扰。频率越高,串扰越明显,随之而来的词损坏和重传的可能性也就越高。1
因此,即使您使用串行传输每个周期传输较少的数据,您也可以使用更高的频率,从而实现更高的净传输速率。
1这也解释了为什么UDMA电缆(具有更高传输速度的并行ATA)的电线是引脚的两倍。每隔两根导线接地,以减少串扰。
问题是同步。
并行发送时,必须在同一时刻测量所有线路,因为随着速度的加快,该时刻的窗口尺寸越来越小,最终可能变得如此小,以至于某些电线可能仍在稳定而其他人则在您没时间用完之前就完成了。
通过串行发送,您不再需要担心所有线路都稳定下来,而只需担心一条线路。而且,使一条线的稳定速度比以相同速度添加10条线的速度快10倍,具有更高的成本效益。
诸如PCI Express之类的事情在两个方面都发挥了最大的作用,它们完成了一组并行的串行连接(主板上的16x端口具有16个串行连接)。通过这样做,只要另一端的控制器可以按照正确的顺序对数据的“数据包”进行重新排序,就不必使每一行与其他行完美同步。
在对PCI-Express的如何工作的页面做了深入的PCI Express的串行如何可以比并行PCI或PCI-X快了很好的explination。
TL; DR版本:一旦达到很高的频率,使单个连接的传输速度比8个连接的传输速度快2倍就容易了。
并行并不是天生就较慢,但是它确实带来了串行通信没有的挑战。
但是,许多最快的链接仍然是并行的:计算机中的前端总线通常是高度并行的,并且通常是计算机中最快的互连之一。通过在一根光纤上承载多个波长,光纤连接也可以高度平行。但是,这很昂贵,因此并不常见。千兆位以太网的最常见形式实际上是一条单线中的4个250Mbit以太网并行通道。
并行性带来的最明显的挑战是“串扰”:当信号电流开始或停止时,它会在其旁边的导线上瞬间产生一个小电流。信号越快,发生的频率就越高,就越难以过滤。并行IDE尝试通过将带状电缆中的电线数量加倍,并将每条其他电线连接到地面来最小化此问题。但是,这种解决方案只能带您走远。长电缆,折叠和回线以及与其他带状电缆的距离都使这对于高速信号而言是不可靠的解决方案。
但是,如果只使用一根信号线,那么您可以自由地按照硬件允许的速度进行切换。它还解决了一些信号传输速度快于其他信号的细微同步问题。
理论上,两条线的速度通常是一根线的两倍,但是添加的每条信号线都会使物理复杂化,因此最好避免。
串行数据传输并不比并行数据传输快。它更方便,因此开发已进入在设备单元之间实现快速外部串行接口的目的。没有人愿意处理具有50个或更多导体的带状电缆。
在电路板上的芯片之间,仅需要两条线的串行协议(如I2C)比路由大量并行走线要容易得多。
但是,在计算机内部,有很多使用并行处理来大量增加带宽的示例。例如,单词不能一次从存储器中读取一位。实际上,高速缓存是在大块中重新填充的。光栅显示是另一个示例:并行访问多个存储库以并行方式更快地获得像素。内存带宽严重依赖于并行性。
泰克公司将这种DAC器件誉为“世界上最快的商用10位高速DAC”,它大量利用并行性来引入数据,这些数据通过320条线进入DAC,通过两级多路复用减少到10条由主机12 GHZ时钟的不同部分驱动。如果世界上最快的10位DAC可以使用一条串行输入线制成,那么它可能会做到。
当逻辑门足够慢时,并行是提高速度的明显方法,您可以将类似的电气技术用于总线/电缆和片上传输。如果您已经在晶体管允许的范围内快速切换导线,那么唯一的缩放方法就是使用更多导线。
随着时间的流逝,摩尔定律超越了电磁约束,因此与芯片速度相比,通过电缆甚至车载总线的传输成为瓶颈。OTOH,速度差异允许在末端进行复杂的处理以更有效地使用通道。
一旦传播延迟接近几个时钟的数量级,您就开始担心诸如反射之类的模拟效应=>沿途需要匹配的阻抗(对于连接器尤其棘手),并且比多点总线更喜欢点对点电线。这就是SCSI需要端接的原因,也就是USB需要集线器而不是简单的分离器的原因。
在更高的速度下,您在线路上的任何给定时刻都有多个位在飞行中=>您需要使用流水线协议(这就是Intel FSB协议变得如此复杂的原因;我认为像PCIe这样的分组协议就是对这种复杂性的一种反应)。
另一个影响是切换信号流方向的多周期损失-这就是为什么在每个方向上使用专用线的Firewire和SATA和PCIe优于USB 2.0的原因。
感应噪声(即串扰)随频率上升。速度的最大进步来自差分信号的采用,该信号显着降低了串扰(数学上,不平衡电荷的场下降为R ^ 2,而偶极子的场下降为R ^ 3)。
我认为这就是造成“串行速度比并行速度更快”的原因- 跳变太大,您可以下降到1或2个差分对,但仍然比LPT或IDE电缆快。电缆中只有一对信号对也能带来串扰,但这是次要的。
导线传播延迟各不相同(这是因为导线长度在90º匝,连接器等之间难以匹配,并且由于其他导体的寄生效应)使得同步成为一个问题。
解决方案是在每个接收器处具有可调整的延迟,并在启动时和/或从数据本身连续对其进行调整。对数据进行编码以避免出现0或1的条纹会产生少量开销,但具有电方面的好处(避免DC漂移,控制频谱),最重要的是允许将时钟线全部掉线(在40根之内这没什么大不了的)信号,但是对于串行电缆而言,具有1对或2对而不是2对或3对是非常重要的)。
需要注意的是,我们是在瓶颈抛并行-今天的BGA芯片有引脚的数百或数千,多氯联苯有越来越多的层。将此与旧的40引脚微控制器和2层PCB进行比较...
上述大多数技术对于并行和串行传输都是必不可少的。只是电线越长,通过更少的电线推动更高的费率就越具有吸引力。