据我所知,串行意味着数据被逐个发送,而不是并行,并行意味着多个数据位同时流式传输。
然而,SATA 和 USB 3 等连接实际上有超过 2 个数据引脚。那么串行和并行的真正含义到底是什么?
答案1
据我所知,串行意味着数据被逐个发送,而不是并行,并行意味着多个数据位同时流式传输。
这或多或少是正确的。串行意味着符号(一个符号可以编码多个位,最简单的例子是使用 4 种不同的电压而不是仅仅使用“开”和“关”来传输 2 个位)在一条线上一个接一个地发送,并行意味着多个符号同时发送,每个符号都在一条单独的并行线上。
这大问题并行传输的一个关键问题是时序:如果其中一条线路比其他线路稍长或稍短,那么该符号将在其他线路之前或之后到达。这意味着接收端需要有某种方式缓冲符号的长度至少与最早到达的符号和最晚到达的符号之间的差值一样长。
电缆的每一次弯曲、制造过程中的每一个细微缺陷,都会增加路径差异量。想想你如何将电路板上的走线布线到连接器:每次绕过一个角落,外侧走线都会比内侧走线长。
一旦差分接近时钟速率(的倒数),即最早和最晚符号之间的差分接近两个符号之间的时间,您就无法再重建数据。
有两种方法可以加快并行传输速度:提高时钟速率和增加并行线路数量。但是,上述问题提出了一个硬限制两种方式都可以使并行传输更快:
- 如果增加时钟速率,符号之间的时间会减少,因此允许的最大差分也会减少。这意味着如果增加时钟速率,则可能需要限制并行线路的数量,以限制路径差分的可能性。
- 如果增加并行线的数量,则会增加路径差异的潜在量。这意味着,如果增加并行线的数量,则可能需要限制时钟速率以允许增加路径差异。
较长的电缆也会增加路径差异的可能性,因此传输速度越快,允许的电缆长度就越短。一个真实的例子是并行 ATA 的最新版本,其中允许的最大电缆长度非常短,以至于在某些大型塔式机箱中(这是用于高性能工作站的机箱外形尺寸,这将有利于最多由于 HDD 传输速度更快,您甚至无法从主板接触到 HDD 托架!
一旦达到更高的速度,复杂性就会变得难以控制。
然而,SATA 和 USB 3 等连接实际上有超过 2 个数据引脚。那么串行和并行的真正含义到底是什么?
让我们看看这些别针到底是什么为了。
这里我们要谈几点。第一点是单工,半双工, 和全双工。 在一般的,您只能在(电气)线路上单向发送数据。这称为单工通信。
但是,您通常希望双向发送数据。一种方法是半双工通信,您可以双向发送数据,但不能同时发送。链路一端只有一个站可以发送数据,然后您将其切换以便另一个站可以发送数据。这是不可取的。相反,大多数高速通信链路(无论是串行还是并行)都是全双工,通常的做法是简单地使用两条线路,一条用于发送,一条用于接收。(不需要两条线路,但这样更简单。)
顺便说一句,这就是为什么交叉电缆存在连接器中 Tx 和 Rx 引脚之间的电线交换的情况。
因此,我们已经需要两根别针为了一个连接。
我们需要讨论的另一件事是差分信号这是一种提高电缆对外部电磁噪声抵抗力的方法。从高层次来看,这实际上非常简单:不是在电缆上传输信号,而是在一电线,你使用两根电线,其中一根电线承载着精确反相信号另一根导线的导线。这两根导线绞合在一起形成双绞线。
由于两根电线紧密绞合在一起,因此引入的任何噪声都会大致相同地影响两根电线。但是!由于一根电线承载完全相反的信号另一根电线,接收器能做的就是看看不同之处两根导线的交点,由于噪声是相同的在两根电线上,它将抵消:
- 导线 1 承载:+信号+噪声
- 线 2 承载:-信号 + 噪声
- 差异在于: 导线 1 - 导线 2 = +信号 +噪声 - (-信号 +噪声) = +信号 +信号 +噪声 -噪声 = 2×信号
因此,我们再次强调,一个信号需要两个引脚。
要是我们结合全双工和差分信号,这意味着我们已经有 4 个引脚用于一个串行连接。这是不是并行通信,这是一个单身的串行链路。(事实上,并行连接也经常使用全双工和差分信号,这意味着每条并行线路有 4 个引脚。)
因此,如果我们看一下超高速 USB,它有 8 个数据引脚。但如果我们考虑到我们讨论的内容,它实际上只有两条通信线路。
但为什么是两个呢?这不就等于平行了吗?
不,不是,原因是这两个独立的串行数据通信通道。此类通道通常称为车道. 两条车道各有其自己的独立的串行通信通道。这两个通道可用于两个完全独立的数据流(我相信 Thunderbolt 可以做到这一点)。或者,您可以将单个高级数据流复用到多个低级数据包流中。
这是从根本上与单个位/符号的并行传输不同。每个符号都通过一条线路串行传输,符号组一起被视为单个数据包,但数据包再次通过一条线路串行发送。只有在更高级别,您才会将数据拆分为单个数据包并通过多条通道发送这些数据包。
由于我们不仅并行发送单个符号,而且还存在更高级别的分组/帧,因此处理跨不同通道的不同传输时间要容易得多。我们可以为数据包添加序列号,这样即使它们相互超越,我们仍然可以按正确的顺序组装它们。我们可以检测丢失的序列号并请求重新传输。
我们的“同步边界”,即我们需要同步并行通道的点要大得多:我们需要同步数据包,数据包的长度可能为多个位,而不是每个单独的位。因此,我们的“同步时钟”只是线路时钟速度的一小部分。
答案2
通信是串行的,为了提高对噪声的免疫力,数据不是通过一根单端线发送,而是作为双绞线上的差分信号发送。
USB3 和 SATA 均具有一个发送对和一个接收对,用于高速信号。
USB3 还具有向下兼容性,因此它具有传统的 USB2 数据对,它是双向的。