在阅读有关 PCIe 和 PCI 的文章时,我偶然发现了一些网页,详细介绍了串行和并行通信之间的区别。我发现了一个特定的陈述,即
有些东西,比如 PCI Express,可以兼顾两方面的优点,它们可以并行设置串行连接(主板上的 16x 端口有 16 个串行连接)。这样,每条线路就不需要与其他线路完全同步,只要另一端的控制器能够按照正确的顺序对传入的数据“数据包”进行重新排序即可。来源
我认为即使在并行通信中,重新排序也会出现。那么 16 个并行串行连接如何避免数据同步问题?
谢谢。
答案1
并行通信容易受到时钟偏差的影响,而串行通信则不会。基于数据包的通信协议允许多个串行通道并行运行,而不会受到时钟偏差的不利影响。
并行通信很难在非常高的速度下实现,因为每个比特的传输可能会很快失去同步。并非所有信号都以相同的速度传输,整个通信信道的速度受到最慢信号的限制。这称为时钟偏移。
在并行通信信道中重新排序数据是不可能的,因为必须先完整接收一组信号,然后才能接收下一组信号。当线路不同步时,信号不包含确定位顺序所需的元数据。
串行通信避免了这个问题,因为没有这样的时钟偏差需要处理。并行使用多个串行通道可以显著提高性能,尽管这样做会引入时钟偏差,因为通道可能会彼此不同步。但是,这可以通过并行总线无法解决的方式解决。
几条高速串行总线,包括PCI Express和USB,封包化数据流,这样每个通道都可以独立传输数据,控制器会根据需要对数据进行重新排序。每个数据包都包含一个包含元数据的标头以及正在传输的实际数据。这意味着即使由于时钟偏差导致通道不同步,也可以重建正确的数据。PCI Express 使用这种技术来实现极高速的通信,最多可并行 32 个通道(但实际上不超过 16 个)。
答案2
重新排序往往不是并行通信的问题,因为只使用一条并行总线并且数据按顺序发送。
您引用的文本的意思是每个端点不需要同步,因此数据可能会整体无序接收,因此正在运行的机制应该能够检测并纠正这种情况。
让多个串行连接并行工作并不能解决问题,而问题本身就是问题。