高速接口的速度是由什么决定的

-回复 -浏览
楼主 2020-05-12 12:53:49
举报 只看此人 收藏本贴 楼主

  大家有没有考虑过各种高速串行接口(如USB3.0/3.1、ThunderBolt)速度是由什么决定的?还有就是USB3.0和3.1之间有什么硬件或者技术上的差别导致传输速度差那么多?我来给大家解析一下,而开始之前我先讲一个老段子。

  现代铁路两条铁轨之间的标准距离是四英尺又八点五英寸。原来,早期的铁路是由建电车的人所设计的,

  而四英尺又八点五英寸正是电车所用的轮距标准。

  那么,电车的标准又是从哪里来的呢?

  最先造电车的人以前是造马车的,所以电车的标准是沿用马车的轮距标准。

  马车又为什么要用这个轮距标准呢?英国马路辙迹的宽度是四英尺又八点五英寸,所以,如果马车用其他轮距,

  它的轮子很快会在英国的老路上撞坏。这些辙迹又是从何而来的呢?从古罗马人那里来的。因为包括英国的长途老路都是由罗马人为它的军队所铺设的,而四英尺又八点五英寸正是罗马战车的

  任何其他轮宽的战车在这些路上行驶的话,轮子的寿命都不会很长。

  可以再问,罗马人为什么以四英尺又八点五英寸为战车的轮距宽度呢?

  原因很简单,这是牵引一辆战车的两匹马屁股的宽度。

  故事到此还没有结束。美国航天飞机燃料箱的两旁有两个火箭推进器,因为这些推进器造好之后要用路上又要通过一些隧道,而这些隧道的宽度只比火车轨道宽一点,因此火箭助推器的宽度是由铁轨的宽度所决定的。

  所以,最后的结论是:“路径依赖”导致了美国航天飞机火箭助推器的宽度,而这个宽度竟然是两千年前由两匹马屁股的宽度决定的。

  一旦人们做了某种判断,就好比走上了一条不归之路,惯性的力量会使这一选择不断自我强化,并让你轻易走不出去,这种现象就被称为“路径依赖”。

  以下为正文

  对于各种高速串行信号来讲,也有同样的“路径依赖”,源头是从哪里开始的,这个说不清楚了,我个人认为一个源头就是数据传输。

  上世纪七八十年代就出来了各种数据传输的协议,比如T1/E1载波系统(2.048Mbps)、X.25中继系统、ISDN(综合业务数字网)等,那时的速度还比较慢的,到了九十年代,SDH(Synchronous Digital Hierarchy,同步数字体系)和SONET(Synchronous Optical Network同步光纤网)标准出现,其基本速度就是STM-1 155.520Mbps,STM-4为622.080Mbps,STM-16为2488.240Mbps,到更后来WDM(Wavelength Division Multiplexing, 波分复用)技术,再到最新的OTN(OpticalTransportNetwork,光传送网),这里面最重要的个概念就是TDM(Time Division Multiplexing, 时分复用)。

  TDM时分复用是指一种通过不同信道或时隙中的交叉位脉冲,同时在同一个通信媒体上传输多个数字化数据、语音和视频信号等的技术。

  数字传输就像打包裹,最基本单元是一个小包裹,四个小包裹打成一个中的,再四个中的打成一个大的,再四个大的打成一个更大,然后再特大的。比如SONET的传输速度就是STM-1/-4/-16等这样叠加上去。因为电路是2进制嘛,以2的指数往上翻,数字电路尤其擅长此道。其中TDM-16速度为2488.240MBps,就是我们通常说的2.5Gbps。

  上面说了堆协议,那总要具体的物理实现,这么高的速度使用光纤是不二选择,数据先由电路中的并行数据变成串行传送出去,然后再经过光纤接口,变成光在光纤里传输(当然在内部也可以使用电学接口,像光口一样地使用),接收时先由光信号变成电信号,再由串行变成并行到内部使用。其中由并行到串行/串行到并行经过的就称为SERDES PHY,高速SERDES的技术实现难度较高,得由模拟电路实现,在很多场合就是一块单独的SERDES PHY芯片,那就有专门的公司来做这个事情,比如在业界大名鼎鼎的TI德州仪器,其TI芯片就卖得很好,逐渐实现这样的产业链:做数字电路的、模拟电路的、测试设备的、生产制造的(包括PCB和SERDESPHY、光口、光纤等),已经定了个基本速率后,再往上的更新换代往往是X2地叠加,在数字电路上最好实现,在模拟电路上也有这样的动力,整个技术就一直这样往前走下去。

  回到标题高速串行接口由什么决定的来,2001年PCIE开始制定,决定以串行方式代替并行的PCI总线时,那时产业内2.5G PHY已经比较成熟了,PCI组织PCI-SIG决定直接借鉴此速度就很正常,最开始用的SERDES估计也是TI的吧?等到PCIE 2.0发布已经是过2007年,就直接X2变成5G了; USB 3.0于2008年发布,直接借鉴业界比较成熟的5G方案也就很正常了; 而PCIE 3.0发布是2010年时(为什么PCIE 3.0是8G而不是10G,这算是个折衷吧,速度越快对PCB走线设计和生产、线缆、测试仪器等要求越高,3.0采用64b/66b编码方案,8G*64/66=7.88G,解码后的速度几乎就是2.0的二倍,4.0采用传统的8b/10b编码,解码后速度5G*8/10=4G)。

  等到USB3.1发布,也就是最近的事情(2014年),觉得10G PHY也比较成熟了,那也直接采用10G吧,USB3.1也采用128b/132b编码,效率与PCIE 3.0是等效的,它直接向PCIE借鉴了很多内容。

  而ThunderBolt,定位在更高速速度传输,其1.0速度最开始设计时就是10G PHY(大约2011年),而后2.0就翻番成20G PHY了,最近的3.0成两路20G PHY,为什么不直接成40G PHY,工艺做不上去啊。

  很早前,业界有个传说,铜界质PCB走线最高速度只能到16G,几年前就已经打破了,28G甚至32G以上跑铜界质的高速PHY已经有DEMO演示了,ThunderBolt 2.0推出20G,自然也是业界有这样能力去推出成熟产品。但是不出意外的是,ThunderBolt定位在高端,从最先推出1.0接口的MAC电脑(2011年),到现在已经四年过去了,相对来说还很不普及,只在高端电脑上才有配备,其外设产品,比如支持该接口的外接存储和高清显示器见到过报道,但市场上卖得真不太多,比起这几年一下子普及开来的USB3.0还是相差不少。

  这不,Intel一琢磨,那ThunderBolt 3.0支持USB3.1-C接口吧,这样支持ThunderBolt3.0的外设既可以连接对应的ThunderBolt 3.0口,享受40G的高速,也可以接在USB3.1-C上,尽管只能跑10G,但是更常见啊,这样对于外设厂商也是一大利好,用户也可以放心地买啦,不用担心接口不支持啦。

  最后做个总结:

  高速串行接口速度由什么决定?当时协议公布时前代技术的积累与影响和已成熟技术,二者占重要因素。比如2.5G速率和STM-1 155M的关系,比如不同年代PHY技术的成熟度,再者还有业界领先公司在制定标准时的号召力及技术前瞻性,如Intel在多种协议上的主导力。

  这里顺便吐槽下动不动国产OS、国产某技术、国产CPU……试图与业界流行的产品和技术对抗,想另起炉灶,而其本质往往只是在人家已有技术的基础上借鉴人家的思路,抄袭或模仿成类似的产品,尤其是ZF在其中扮演主导角色,这种努力往往失败,也许在某些不开放场合有一席之地,只要是开放市场,几乎无竞争力,不提其它,一个路径依赖就把你拍死了。那些号称的自主、国产,开发过程和产品里仍然有大量开放世界里的工具、成熟产品、思维、架构体系,那做出来的东西只是在某一个细节上对已有产品形成了可替代力,但其上游、下游还是与业界紧密联系在一起,这种情况下很难有所发展。

  就如水管,从自来水厂过来的水经过一系列管道,最后送到你家里打开水龙头就可以接水,你想在某一截放自己的标准,把那段加粗或减细10%,那水管的进口和出口还是得与之前保持一致吧?那水管在锻造过程中的模具、加工工艺、运输、安装等与人家不一样,这也得花力气解决吧?经过哪个涵洞时人家预留的口径大了或小了,你得解决吧?……到最后做这一切是为了什么啊?就为了感觉自己“自主、国产”地定义了个新口径大小而自豪?还不如拥抱标准,在里面做大做强,有那个实力的时候在定标准时发发言,把自己的意愿加进去,从而让自己更有竞争力。比如华为这个榜样,曾经的老东家……

  既然谈到这里,我们就说说最近发生的。

  为啥 Thunderbolt 3 改用 USB-C 接口?

  先围绕这个点答,后面再扯点相关的点吧。

  手头正用的是Macbook Pro 2012年版,用的视频输出接口是Thunderbolt 1还是2就不知道了,接口与Mini DisplayPort接口兼容,现用HDMI接口外接显示器,要使用个转接器。

  为什么Thunderbolt 3要改成USB3.1-C兼容接口?因为它是Intel啊,这两家标准都基本以Intel为主啊,一个大部门的人碰头,小会议室一坐,说咱们做成一样的吧,就成啦!

  从商业角度来讲,统一标准有多少好处,Thunderbolt现在流行范围还不广泛且由Intel主导,阻力比较小等考虑就不多说啦,谈点技术上的实现。

  为什么插上去可以实现兼容?因为它们都属于高速串行传输协议,在技术上有很多共用的地方,且在速率上不同的代本身是匹配的(Thunderbolt1的速度就是10Gbps,与USB3.1一致),再者不同的高速串行协议往往是上层协议不同,在底层实现上是通用的,也就是控制器不同,而PHY可以通用。

  我在S公司做较长时间的PCIE原型平台验证,主要是数字电路部分的控制器代码烧录到FPGA中,已经流片成功被做过基础电学测试的PHY芯片做成单独的子卡扣在原型平台上,再与PC连接进行测试。最高支持10Gbps的PHY子卡不仅仅用于PCIE GEN3 8Gbps,同时还支持SATA GEN3 6Gbps和USB3 5Gbps(是否还支持USB3.1 10Gbps还要确认下,按理说支持),子卡上留有多种接口,PCIE金手指、SATA接口、USB接口等,哪个项目要测试了,直接从一个平台拔下来,换上接口放另一个平台就可。这个过程中,FPGA内的控制器代码是变化的,同时上电时会对PHY子卡配置一组向量去支持不同的模式。

  并且这些协议不同的代数间往往速率是成倍翻的,比如PCIE GEN1 2.5G, GEN2 5G, GEN3 8G(编码方式从之前的8b/10b变成64b/66b,实现有效负载是翻倍的),支持GEN3的芯片同时支持在GEN1和GEN2模式下运行。

  同样,对于Thunderbolt来说,GEN1是10Gbps X1,GEN2是20Gbps X1, GEN3是20Gbps X2,它本身是可以运行在GEN1 10Gbps,所以接在USB3.1-C接口上时,基于上面说的原因,以10Gbps通过USB3.1 PHY是没问题的,再过去是控制器相关的部分,既然是Intel一家的,且在两个协议上Intel都有主导权,这块就比较简单了。(鉴于USB3.1先发布,且影响力更大,要考虑的因素更多,此种方式实现时应是Thunderbolt去主动兼容USB3.1的工作模式而不是相反)。

  Thunderbolt可以看成是PCIE GEN3与DisplayPort视频接口的合体,将从PCIE和视频接口进来的数据经过重新打包后,以新的格式送到20Gbps的PHY,再到连接器上。如下图,Thunderbolt3芯片的数据入口为PCIE GEN3X4和DisplayPort,其中PCIE GEN3的速度是8Gbps/lane,X4就是32Gbps,DisplayPort单通道为5.4Gbps,4通道最大为21.6Gbps(最大支持几通道?2还是4?),芯片的出口为两通道,20GbpsX2=40Gbps。(不能简单地算32G+21.6G=53.6G》40G会塞爆,在接收数据重新打包的过程中,很多开销信息是会扔掉的,真实有效负载并没那么大)

  

  从上可见,Thunderbolt单通道的速率就是20Gbps,这个对物理通道的要求是相当高的,通常铜介质做到16Gbps就很困难了(目前还有做到28G甚至30G以上的铜介质传输的报道),想要完美地运行如此高的速率,官方认证的原装线缆必不可少,价钱也很昂贵罗。

  本文经知乎LiuEvan172授权发布


我要推荐
转发到