当前位置: 首页 > 新闻中心 > 常见问答
返回
列表

为什么串口比并口快?

发表时间: 2024-04-24 作者: 常见问答

  作为一个电路设计师,我整个职业生涯都花在接口电路上,串行并行都做过,且速度不慢(DDR3-1600Mbps, SerDes 30Gbps),这样的一个问题不答实在技痒难耐。已经看到的答案中,大家大多数都命中了关键的知识点,但是没有把背后的逻辑说清楚,也没有人从电学特性和经济的角度分析这样的一个问题。大言不惭,欢迎各位拍砖讨论。

  还有人说贯口最快的,我们来算一算。业界目前大量应用的28Gbps SerDes,传一个比特只要35.7皮秒,这点时间光在真空中可以走上一厘米,连角膜到视网膜都不够。哪个快?

  先说我的答案,串行接口为啥比并行接口快?是因为串口的特性和应用场景,决定了它更为适合采用一些提高单根信道速率的设计方法,这一些方法用在并口上并不合适。

  讨论这样的一个问题,首先要搞清楚定义,什么叫并行接口(parallel link)? 什么叫串行接口(serial link)?这就可以吵一天。

  并口代表DDR说:“我是并口的纯正血统杰出代表,每8bit要附带一对DQS线作为时钟,每个bit都要同步到这对DQS上去,skew超标就不能工作,64位DDR3-1600总带宽可以到100Gbps,哪个串口做得到”?鄙人冷笑,说:“别以为我不知道你的底细,别看你IO是1.6G,内存控制器给你的一般都是4位并行的400M,你要先悄悄做一下并行转串行,再输出。何况你传64bit数据需要80根全速率的DQ/DQS线多根半速率命令地址线G还不到”。

  XAUI举手问:“我算串口么?XAUI一定是8组16根差分线组写,缺任何一组都不符合协议,看着很并行啊?” 32位的PCI-E也一脸关心的等着答案。

  我们先这么定义:在一个独立的信道上,每次同时传输1bit为串口,每次同时传输多个bit为并口。标准的串口如XAUI,HDMI等,每对差分线组成一个信道(channel),每个信道是否能成功传输并不取决于其他信道。而DDR这种,10根线组成一个信道,每次同时传8bit,错了某一bit只能重新传,便是标准并口,芯片内部的并转串和IO并不相关,不影响定性。按照这一个定义,大家都看看各种接口协议怎么样来划分呢?我觉得已经很清楚了,以单个channel的传输速率衡量,串口一般来说更快。下一个问题是,为什么呢?

  对任何一种协议,提高总带宽不过是两种办法,首先要提高单根线的传输速率,其次只能增加电线的数目。增加线的数目实在费钱,首先现在的芯片往往IO都很紧张,增加了IO PAD还要搭上额外的ESD和面积;封装和PCB上增加额外的线更复杂更贵这就不用说了,对某些用cable的协议基本就是不可接受的。你是愿意插16根网线还是一根?接电视机的时候喜欢一根线的HDMI,还是五根线的RGB+音频?还有

  提到的150米长线。。。。。。何况并口还要对这些线进行长度匹配,想想头就大了。

  历史上,工程师们确实是先做了串口,速度不够没办法只好含泪加电线上并口,直到他们发现了三宝来提速,并口的动力就不那么强劲了,正如

  所言。但是在芯片内部,增加总线宽度的代价并不高,因此CPU里面有个1024位的数据总线也不奇怪。

  已经提过了,不外乎抗干扰能力强,引入的噪声也比较小,虽然必须要两根线,但速度从几百M提高到几G,还是很值得的。

  也说过了,消灭了skew,减少了时钟的功耗和噪声(但多出了CDR电路本身的功耗和噪声),同时避免了电磁干扰。想想在PCB或者电线G的时钟,太带感了,幸亏我们不用做这种事。

  信道均一化相当值得一提,这才是SerDes快速地发展的决定性因素,所以我决定花点文字讲一下。

  一般来说,真实世界中的信道都是低通特性的,到处都是小电容,所谓绝缘体中的分子在高频情况下吸收电场能量,再加上金属线中的趋肤效应,所以我们想要的高频信号走不了多远就不像样子了,比如下面某信道的频率特性(绿线)。

  如图所示,在对应28Gbps的频点上,信号能量被衰减了30db,电压幅度只剩3%了;在对应56Gbps的频点上更惨,65db意味着信号电压摆幅剩下不到千分之一。在这种信道中,发送端一个完美漂亮的数据眼图:

  什么都辨认不出来对吧。但是,经过我们聪明的工程师们一番努力,均一化开关打开,信号就变成了这样:

  神奇么?我觉得挺神奇的,我认识的电子工程师们第一次看到这一个,没人觉得不神奇。

  答案很显然,不是,串口可以用的,我们并口一样可以用。那为什么并口不用呢?

  差分信号这条不用说了,并口的电线本来已经够多了,数目还要再翻一倍?系统工程师会杀人的。

  CDR意义也不大,反正你并口速度也不高,一堆数据线中顺便传下时钟,比做接收端做CDR再采样每一位数据省事多了。

  信道均一化属于屠龙之技,不用差分信号的话也就传几百M,本来就没啥衰减,用这个干啥?还是考虑下各种噪声串扰的问题吧。

  于是答案就呼之欲出了。串口为啥比并口快?是因为串口的特性和应用场景,决定了它更为适合采用一些能大大的提升单根信道速率的设计方法,这一些方法用在并口上并不合适。

  从现有的应用看来,需要持续稳定高带宽的应用,往往使用高速串行接口,一根带宽不够再加一根,各种视频网络应用,基本如此。而一些历史遗留速度不高的应用,还有一些需要突发性高带宽的应用,并口仍然存活,比如很特殊的DDR。虽然XDR/GDDR/HMC/HCM这些新标准都在试图引入SerDes, 但DRAM行业的特殊性还是让并口继续存活着。

  答案的批评,欢迎指正。这个答案清楚明晰的指出了几乎所有串口的优势,但是忘了提及一点,这些优势其实是三宝带来的,并非串口与生俱来。就像小强开车小明走路,小强自然快很多,但并非他天生就快,而是因为小明腿短够不到油门。蛤蛤蛤蛤

  基于这两条基本假设,我们来讨论一下串行总线和并行总线各自的发展史,以及二者是如何融合在一起的。

  早期的板级电子通信都是基于串口的,最经典的莫过于uart,异步,全双工,基于波特率匹配的串口通信。在那个计算速度异常缓慢,对通信速率要求不高的时代,其实这就足够了。但随着以硅集成电路为核心的电子信息技术的发展,大家对通信速率的要求都变高了,尝试着若使用八根线呢(外加一根时钟线进行同步),那岂不是一次传输能收发8比特,也就是一个字节?想法非常美好,但是并行传输并没能走到32bit以上就走不下去了。原因如下:

  1.金属信号线之间的串扰非常厉害,噪声难以避免(来自于外界的干扰和自身对外界的干扰即EMI)。

  3.由于走线数量的增加,对系统工程师非常不友好,加之芯片pin脚的数量本就十分宝贵,版级布线的难度急剧增加。

  前两个问题造成了严重的信号完整性问题,传输效率变得极其低下,从而又导致了数据完整性的问题。

  就在这时,差分电路的优点反映出来了,两颗高度匹配的mos连上尾电流源拥有了强大的共模抑制比,可以将共模干扰降到最低,同时也能将EMI降到最低,此外差分电路在传递信号时所需的翻转电压的绝对值只要达到vdd的一半(取的是两个mos漏极的电压差),更低的翻转电压意味着更低的传输功耗,更短的翻转时间。此时,工程师们发现,用两根传输线连接至差分电路的两个栅极能够给大家提供极高的信号稳定性,这在某种程度上预示着更高的带宽,更高的信号完整性,更高的数据传输率,更低的传输功耗。至此,串行总线再一次获得了生命力,并开创了以数据包为基本传输单位的各种高速总线协议。

  惊不惊喜,意不意外?串行-并行-串行,如此一个循环,最终又回到了串行(基于差分总线的串行传输)。否定之否定,这是基于唯物辩证法的伟大实践。很多同学会有疑问,就这些?故事到这里就结束了?没有并行总线啥事了?别急,我们不是说过嘛,事物是普遍联系的,请看。

  随着计算机体系结构的持续不断的发展,两组差分信号线(一组作为RX,一组作为TX,我们叫做一条lane)很快就不够用了(貌似见的最少的都是两条lane起步),多条lane开始一起进行数据收发,目前已知的pcie gen5能支持32条lane的数据传输,并行并没有消失,他只是以另外一种生命形式继续存在着,至此串行与并行已发展成了“你中有我,我中有你”的相互关系,目前基于单通道差分总线的传输模式已经很少见了,并行和串行以这种的形式完成了阶段性的融合。

  1,高速串口不需要传时钟来同步数据流,没有时钟周期性的沿变,频谱不会集中,所以噪声干扰少很多。以PCIE和SATA为例,时钟信息通过8b/10b编码已经集成在数据流里面,数据本身经过加扰,绝对不可能有多于5个0或者5个1的长串(利于时钟恢复),也绝对不存在周期性(避免频谱集中)。这样,通过数据流的沿变可以直接用PLL恢复出时钟,再用恢复的时钟采集数据流。这有啥好处?时钟信号消耗的功耗极多,带来的噪声也最大,不传时钟能够更好的降低功耗,减少噪声。

  2,所有高速串口都采用差分总线传输,外界噪声同时加载到并行传输的两条差分线上,相减之后可以抵消,对外部噪声的抵抗能力强。

  3,没有时钟skew问题,因为它根本就没有同步时钟,不存在时钟和数据流的对齐问题。只需要保证差分信号线是对齐的就行,这是很容易的,因为差分信号线的值总是相反,相关性强,易控制。一根线跳的时候,另一根线经过一个非门的延时马上会跳,这个非门的延时是很容易补偿的。并行总线最大的问题是多根线传输的时候,没办法保证所有的沿变都对齐,有很大的可能性传着传着某些信号跟不上,落后了一个T,数据就传错了。想控制也难,因为各个信号没有相关性,互相的沿变本身就是独立的,因为布线不同,有很大的可能性一个跳的早点,另一个跳的晚点,再加上各个传输线电阻不同,噪声不同,传一会儿就分辨不出来哪个值对应哪个周期。

  4,线少,干扰少。并行传输,一般32根或者64根,一根线跳变,会给旁边的线带来噪声,频率越高,这种噪声越大,非常容易造成别的线值被篡改或没办法辨认,所以频率不可能很高。串行传输一般就4根数据线,分成Rx两根差分线和Tx两根差分线,差分线总是往相反方向跳,可以抵消各自的跳变噪声,比如Rx的正极性发生跳变时会产生噪声,这种噪声可以被Rx的负极性以相反的跳变直接抵消掉(因为他们是差分信号对),总的噪声为0,根绝了内部噪声。

  综上,串口传输的各种优势使得其内外噪声皆免疫,又没信号对齐之忧,可以以极高的速率传输。比如SATA可以以6Gb的速率传输数据流,PCIE可以以8Gb的速率传输数据流。这种速率,并行传输是根本做不到的,更不要说串行传输还能节省大量引脚。

  对信号传输品质的影响跟ISI和duty cycle loss产生的恶化完全就不是一回事。在任意一个victim bit上,同lane甚至隔老远的bit,都会因为目前越来越变态的package密度,引入无可避免的电磁场耦合效果和来自power grid和bulk的直接干扰。

  这在串口通信上不是什么样的问题。因为普遍的使用光纤或差分电缆。这些影响都表现成common mode的扰动,不是事。所以串口需要仔细考虑的仅仅是channel bandwidth引起的channel loss, reflect loss,时域上这些干扰,你都是直到怎么回事的,大多数来自就是ISI嘛,最典型的就各种CTLE然后直接DFE。

  并口不行,并口的来自别人,你根本不知道是些啥。你把整个channel model当成多端口器件去考察,会发现更悲催的事情。任意一个其他s,到victim s的频率特性都不同,而且fly time也不同。换言之,你接收端对far end crosstalk的时域表现,根本毛都没法预测。怎么办?tcoil呗。

  所以并口的Dj Rj都很麻烦,仅供参考。我这种老油条基本上就算算了事,我自己都不信。你的dual Dirac外推会发现根本就不符合统计曲线。并口的dps上限其实是无法通过测试以外的方法估算出来的。并口能做多快?我现在做过最快的是12800 ddr5,14in channel,已经要跟si不断扯皮,恶心得要死,已经能用的技术全用上了。还能不能更快?用短channel还有余地,短到cowos或者fop撑死2mm的channel。但任何mipi,ucie,同样的eq技术都轻轻松松48Gbps。

  我个人认为,串口最大的优势是简化了传输的成本。外设我设备里面,从USB,485,232,CAN以及以太网,几乎都是串行技术。最大特点是简化线缆,易于传输。在这个基础上,工程师不断使用各种电路来优化传输带来的反射,损耗等挑战。传输速度慢慢的升高,距离也不断刷新高度。

  进而,在板子内部和板间以及背板之间,由于诸多的并行口引起PCB布线与背板压力,所以工程师开始使用类似serdes技术来使用串行莱传输高速数据,进而出现DDRx,PCIE,JESD204B,Rapidio等板内的传输技术,也有类似于mipi,HDMi等视频串行接口等等。

  再物理层上,需要CDR,加重与均衡等技术,根据不同的协议也定了很多MAC层等同步的机制等。随着传输速度发提升,也需要类似于P CB板材提升,进而产生高速传输的仿真等工具和模型等。

  于此同时,传统的模拟信号的传输,由于线缆重量和成本的限制,模拟信号被串行数字化也逐渐出现。例如最近出现的10M base SPE可以替代 4-20mA的电流传输,车载音频数字总线B替代传统的同轴的音频电缆,车载LVDS替代CVBS的模拟传输视频线缆。

  未来传输数据,也逐渐出现无线被lora,zigebee,433M私有协议,6lowpan的mesh网络,中速率的10M网络被LTE- CAT1来替代。无线技术主要受限于功耗,传输距离等限制,无线技术一个大挑战是同步传输技术,无线技术实现高同步精度的传输,往往要利用GPS,IEEE1588等第三方硬件或者有连接来辅助。当然也有些协议利用协议等一些开销来实现us量级的同步进度。更高速率的传输,例如微波点对点技术,60G的UWB传输,也能轻松实现超短距离的GPS数据传输,也在一些场景到得到使用。

  首先接口都是一种总线,然后是一个结论:在不考虑工程复杂性和造价的前提下并行总线总会达到比串行总线更高的速度。这一个道理很简单,两根管子总会比一根管子吞吐量大,但是。。。

  想要弄清楚这样的一个问题,还是需要掰掰历史,历史的发展是这样子的:计算机刚开始发展的时候有个叫做COM口的总线,啥东西都可以往上面连接

  后来COM口的速度满足不了打印机等设备的需求,工程师们很自然就想到了“把路修宽”,然后就有了并口

  然后计算机技术快速的提升,CPU频率慢慢的升高,主板内置BUS速度也慢慢变得高。工程师们也想过通过提高并口的时钟速度来满足大家对带宽的无尽需求,但由于线材等原因,提高并口时钟频率会带来更大的串扰。

  于是呢,大家在一起开了个会。推出了新一代“宇宙串行总线”--USB,苹果自己搞的火线)也属于串行总线,USB迅速一统天下,大家过上了USB能连接任何东西的美好生活。

  内部接口也有自己的更大江湖。就从PCI说起吧,PCI接口在提供了自动的IRQ分配机制后迅速的替代了ISA总线,成为系统内部总线的霸主,为提升带宽,PCI总线位接口(大多数都用在服务器),但频率始终没突破133MHz(暂且不起AGP接口)

  历史总是那么的相似,大家在一起开了个会,推出了一个基于并行总线的接口PCI Express,并且一口气推出了PCIE 1x 2x 4x 8x 16x,然后PCIE这个说不好算是并口还是串口的东东基本上也要一统天下了

  比起内部接口,发展更快的是CPU&MEM总线,由于对计算机性能的巨大影响,从诞生之初,这条总线就是高规格的,不那么在乎成本的,这条总线就绝大多数都是一直在提高频率,提高宽度。为实现这个变态的需求,我们聪明的工程师贡献了两宝:

  曾经一度为增加内存总线的吞吐量,厂商们甚至推出了“双通道内存”这种不惜工本的技术……

  所以真相只有一个:在不考虑工程复杂性和造价的前提下并行总线总会达到比串行总线更高的速度。

  因为串口用的传输线线时,做串口更简单一些,但是并转串,串转并在机器内部都是需要花时间的。

  如果做一个32bit的并行总线线或者更多,线缆的重量,成本,传输距离都有挑战。

  并口最大的问题是时钟同步问题,从目前电气传输理论上来看,并口速率无法过Gbps,即使有这种私有接口,造价一定也是相当昂贵,没有串口经济,串口的传输@又见山人已经讲的相当详细了。

  个人认为,串口并口使用就是牵涉谁更经济实用的问题,没有快或慢绝对的差别。

  作为一个曾经做模拟IC,如今做数字IC,现在整天在分析serdes电路的工程师先来简单补充一下这样的一个问题答案,今天晚上回去再做补充----

  是一个数字工程师(其实现在整天在炒股 ),他的答案中提到8B/10B转码后数据流中不可能会出现连续的五个1或者0,建议你查下K28.5(110000101或者0011111010)的作用哈,注意:一个8B码对应两个10B码哦。

  另外要补充一点的是:serdes因为是不可靠的传输,加上其实冗余开销,其传输内容的真正有效数据信息绝对远低于所谓的8/10。

  我去,我看排名第一的人回答完了都没提DDR,我就想补充一下DDR,结果排名第二的人就补充了DDR,这让人怎么玩。。。

  1、是我们“觉得”串行比并行快,实际上并非总是如此(比如DDR)。因为并行接口由于线间易互相干扰以及占地面积大等原因,一般都是PCB板上芯片互联才用(能提供完整参考面),而这是大多数用户接触不到的。我们能接触到的并口一般都属于低速型。 相反,串行接口一般都会采用差分设计,两个信号互为参考,大幅度减少了对外干扰的同时也提升了抗干扰能力。串行线适合做长距离传输,连接器也小巧,用户易于使用,因此印象更深刻罢了。

  2、其实对于芯片而言(从芯片设计方面出发),是喜欢并口而不喜欢串口的。因为芯片的电路更适合并行处理数据而非串行。串行提速要提升工作频率,频率提升的天花板又比晶体管规模提升的天花板要低太多。

  记得当年Intel死磕频率好不容易提到6GHz左右,还出了一堆问题,现在CPU主频“退步”到2GHz~3GHz,而核心数一而再再而三的提升。这也是怎么回事,CPU的草稿纸“DDR”这么多年来,从始至终坚持并口的原因。

  说到这里,你知道便宜到死的网线Gb/s)的速度嘛。。人家的方案是4个差分线个差分线Gb/s(不过相对网线价格贵了超多还对长度有要求)。我真觉得未来“并用多组差分串行”(感谢@又见山人提醒)接口或许是个方向哦(目前PCI-E接口就是这样,不过还仅限板对板金手指连接)。不过用户能接受日益复杂的连接器吗?毕竟太复杂的话也容易损坏嘛。。。

  串口不用随路时钟,可以从数据里恢复,每次单bit,能分段添加纠错码保证信噪比。并口需要多BIT同步,传输时间相同,这个长距传输很难保证。

  科学的对比,环境首先要相同,串口并口应用环境差别太大,根本不具备可比行。

  在同一个时期的串口和并口中,单个口速度应该是差不多的。并口速度=串口速度x并口个数。

  不同时期的口不能用来比较啊,你不能用2005年的USB口与1980年插打印机的并口比较啊。