高速串行相关

各种高速串行接口(如USB3.0/3.1、ThunderBolt)速度是由什么决定的?


以光缆为例,数据先由电路中的并行数据变成串行传送出去,然后再经过光纤接口,变成光信号在光纤里传输,接收时先由光信号变成电信号,再由串行变成并行到内部使用。其中由并行到串行/串行到并行经过的就称为SERDES PHY,高速SERDES的技术实现难度较高,得由模拟电路实现,在很多场合就是一块单独的SERDES PHY芯片,那就有专门的公司来做这个事情,比如在业界大名鼎鼎的TI德州仪器,其TI芯片就卖得很好。逐渐实现这样的产业链:做数字电路的、模拟电路的、测试设备的、生产制造的(包括PCB和SERDES PHY、光口、光纤等),已经定了个基本速率后,再往上的更新换代往往是X2地叠加,在数字电路上最好实现,在模拟电路上也有这样的动力,整个技术就一直这样往前走下去。
2001年PCIE开始制定,决定以串行方式代替并行的PCI总线时,那时产业内2.5G PHY已经比较成熟了,PCI组织PCI-SIG决定直接借鉴此速度就很正常;等到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或128b/130b编码方案,8G*64/66=7.88G,解码后的速度几乎就是2.0的二倍,2.0采用传统的8b/10b编码,解码后速度5G*8/10=4G)。
等到USB3.1发布,也就是最近的事情(2014年),觉得10G PHY也比较成熟了,那也直接采用10G吧,USB 3.1采用128b/132b编码,效率与PCIE 3.0是等效的,它直接向PCIE借鉴了很多内容。
而ThunderBolt,定位在更高速速度传输,其1.0速度最开始设计时就是一 路10G PHY(大约2011年),而后2.0就成两路10G PHY了,最近的3.0成两路20G PHY,为什么不直接成40G PHY,工艺做不上去啊。
很早前,业界有个传说,铜界质PCB走线最高速度只能到16G,几年前就已经打破了,28G甚至32G以上跑铜界质的高速PHY已经有DEMO演示了,ThunderBolt 2.0推出两路10G PHY,自然也是业界有这样能力去推出成熟产品。
不出意外的是,ThunderBolt定位在高端,从最先推出1.0接口的MAC电脑(2011年),到现在已经四年过去了,相对来说还很不普及,只在高端电脑上才有配备,其外设产品,比如支持该接口的外接存储和高清显示器见到过报道,但市场上卖得真不太多,比起这几年一下子普及开来的USB 3.0还是相差不少。与此类似待遇的是DisplayPort接口,显示器接口从最早的VGA到DVI,到同时支持声音图像传输的HDMI、DisplayPort接口,HDMI逐渐变得常见,尤其是电视接口上,而DisplayPort仍然不太多见。而ThunderBolt在外观上与Mini DP接口兼容,在功能上可认为是图像传输接口DP和数据传输协议PCIE的合体。
这不,Intel一琢磨,那ThunderBolt 3.0改成USB3.1-C接口兼容吧,这样支持ThunderBolt 3.0的外设既可以连接对应的ThunderBolt 3.0 host,享受40G的高速,也可以接在USB3.1-C上,尽管只能跑USB 3.0 5G速率(注意,资料显示所兼容的控制器是USB 3.0,而不是最新的3.1; 也有人指出Intel推出的控制器是支持10G速度的。anyway,PHY通道是支持的,这主要取决于控制器部分),但是更常见啊,这样对于外设厂商也是一大利好,用户也可以放心地买啦,不用担心接口不支持啦。
最后做个总结:高速串行接口速度由什么决定?当时协议公布时前代技术的积累与影响和已成熟技术,二者占重要因素。比如2.5G速率和STM-1 155M的关系,比如不同年代PHY技术的成熟度,再者还有业界领先公司在制定标准时的号召力及技术前瞻性,如Intel在多种协议上的主导力。
为什么Thunderbolt 3要改成USB3.1-C兼容接口?因为它是Intel啊,这两家标准都基本以Intel为主导啊,PHY team的人碰碰头,小会议室一坐,说咱们做成一样的吧,就成啦!
从商业角度来讲,统一标准有多少好处,Thunderbolt现在流行范围还不广泛且由Intel主导,阻力比较小等考虑就不多说啦,谈点技术上的实现。
为什么插上去可以实现兼容?因为它们都属于高速串行传输协议,在技术上有很多共用的地方,且在速率上不同的代本身是匹配的(Thunderbolt 1的速度就是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子卡配置一组向量去支持不同的模式。
并且这些协议不同的代数间往往速率是成倍翻的,不仅是PHY的速率成倍翻,而且控制器内部的运行时钟或数据位宽也是成倍翻。比如PCIE GEN1 2.5G, GEN2 5G, GEN3 8G(编码方式从之前的8b/10b变成64b/66b或128b/130b,实现有效负载是翻倍的),而数字控制器内部有两种方法:如果数据位宽固定都是32bit,那GEN1时core clock的速率为62.5MHZ,GEN2时为125MHZ,GEN3时为250MHZ;如果是clock速率保持为125MHZ不变,则GEN1时数据位宽为16bit,GEN2时为32bit,GEN3时为64bit。GEN3的芯片同时支持在GEN1和GEN2模式下运行,并且最开始初始化时即从GEN1开始,然后硬件双方进行握手,看一起能支持的最大速率是多少,然后再调节到最大速率;如果在高速率下出现不稳定、自检错误过多,还可以自动回退到低速率上安全运行。这样的设计方式是非常合理的
同样,对于Thunderbolt来说,GEN1是10Gbps X1,GEN2是10Gbps X2, GEN3是20Gbps X2,它本身是可以运行在GEN1 10Gbps,接在USB3.1-C接口上时,是以USB 3.0的控制器协议运行的,也就是5G的速度,并不是USB 3.1 10G,这点是最近几天看到资料才知道的。这么做应该是出于设计成本和稳定性的考虑吧,毕竟USB 3.1协议出来没多久,设计公司还没有成熟稳定的代码,那ThunderBolt 3.1就要使用USB 3.1的协议的话,设计ThunderBolt 3.1控制器部分时就比较困难了,还不如直接采用成熟的USB 3.0。这也从一个角度说明了,协议的设计是比较接地气的,要考虑多方面的因素,而不是一昧地求新求快。
也有网友留言说现在Intel推出的控制器支持10G。anyway,PHY通道是支持的,这主要取决于控制器部分。
Thunderbolt 3.0单通道的速率就是20Gbps,这个对物理通道的要求是相当高的,通常铜介质做到16Gbps就很困难了(目前还有做到28G甚至30G以上的铜介质传输的报道),想要完美地运行如此高的速率,官方认证的原装线缆必不可少,价钱也很昂贵罗。
作者:Evan172
链接:https://www.zhihu.com/question/30886313/answer/50442985
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

其实真的可以从接口不一样说起啊。3.0有9个pin,2.0有4个pin,这就很能说明问题了啊。。。。
本质上3.0对比2.0的提速是靠提高带宽。
也就是2.0用两根线D+, D- 传输数据。叫半双工,可以双向传输但不能同时既tx又rx。
3.0加了四根线,全双工,就是说可以同时tx,rx了。
带宽高了自然传输速率快。
补充下3.0到3.1,却是把频宽翻倍,还有编码方式也不同,从8b/10b到128b/132b,就是有效传输速率提高了。
再扩充一下,最终限制serdes最高传输速率的应该是物理层的功耗和干扰。
作者:匿名用户
链接:https://www.zhihu.com/question/30886313/answer/49950649
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。



你可能感兴趣的:(软硬件底层)