我的日常

登录/注册
您现在的位置:论坛 盖世程序员(我猜到了开头 却没有猜到结局) 盖世程序员 > 为什么串行接口比并行接口快?
总共48087条微博

动态微博

查看: 577|回复: 0

为什么串行接口比并行接口快?

[复制链接]

10

主题

3

听众

1289

金钱

五袋长老

该用户从未签到

跳转到指定楼层
楼主
发表于 2016-05-31 14:36:05 |只看该作者 |倒序浏览
1,高速串口不需要传时钟来同步数据流,没有时钟周期性的沿变,频谱不会集中,所以噪声干扰少很多。以PCIE和SATA为例,时钟信息通过8b/10b编码已经集成在数据流里面,数据本身经过加扰,绝对不可能有多于5个0或者5个1的长串(利于时钟恢复),也绝对不存在周期性(避免频谱集中)。这样,通过数据流的沿变可以直接用PLL恢复出时钟,再用恢复的时钟采集数据流。这有什么好处?时钟信号消耗的功耗极多,带来的噪声也最大,不传时钟可以降低功耗,减少噪声。1 L& w- V1 v  n, V$ t
2 f; p' X+ D$ `* j- w& y: n
2,所有高速串口都采用差分总线传输,外界噪声同时加载到并行传输的两条差分线上,相减之后可以抵消,对外部噪声的抵抗能力强。
% e+ y- y. W& D% k8 K
3,没有时钟skew问题,因为它根本就没有同步时钟,不存在时钟和数据流的对齐问题。只需要保证差分信号线是对齐的就行,这是很容易的,因为差分信号线的值总是相反,相关性强,易控制。一根线跳的时候,另一根线经过一个非门的延时马上会跳,这个非门的延时是很容易补偿的。并行总线最大的问题就是多根线传输的时候,无法保证所有的沿变都对齐,很有可能传着传着某些信号跟不上,落后了一个T,数据就传错了。想控制也难,因为各个信号没有相关性,互相的沿变本身就是独立的,因为布线不同,很有可能一个跳的早点,另一个跳的晚点,再加上各个传输线电阻不同,噪声不同,传一会儿就分辨不出来哪个值对应哪个周期。

+ ~) v- L2 T+ c
4,线少,干扰少。并行传输,一般32根或者64根,一根线跳变,会给旁边的线带来噪声,频率越高,这种噪声越大,很容易导致别的线值被篡改或者无法辨认,所以频率不可能很高。串行传输一般就4根数据线,分成Rx两根差分线和Tx两根差分线,差分线总是往相反方向跳,可以抵消各自的跳变噪声,比如Rx的正极性发生跳变时会产生噪声,这种噪声可以被Rx的负极性以相反的跳变直接抵消掉(因为他们是差分信号对),总的噪声为0,根绝了内部噪声。综上,串口传输的各种优势使得其内外噪声皆免疫,又没有信号对齐之忧,可以以极高的速率传输。比如SATA可以以6Gb的速率传输数据流,PCIE可以以8Gb的速率传输数据流。这种速率,并行传输是根本做不到的,更不要说串行传输还能节省大量引脚。
! ~) l7 D! f" O9 m! h3 s, H
为了提高单根线的传输速率,必须要讲到我们模拟电路工程师的三大法宝,差分信号(differential signaling),时钟-数据恢复(Clock-Data Recovery,简称CDR),和信道均一化(Channel Equalization,Eq)
" p! M- t8 @2 I0 F$ m( d
差分信号的好处 不外乎抗干扰能力强,引入的噪声也比较小,虽然必须要两根线,但速度从几百M提高到几G,还是很值得的。
5 l5 B7 b. W% T' t' W- d6 s" ]; I! |
CDR的好处 消灭了skew,减少了时钟的功耗和噪声(但多出了CDR电路本身的功耗和噪声),同时避免了电磁干扰。想想在PCB或者电线上传一个15G的时钟,太带感了,幸亏我们不用做这种事。
- n/ M8 _( z( F6 g# w' ^& r
信道均一化 相当值得一提,这才是SerDes高速发展的决定性因素,所以我决定花点文字讲一下。) V0 X) g5 a) e/ _  n0 ~! t
1 `5 @2 j- ~4 ?! V0 H( s
一般来说,真实世界中的信道都是低通特性的,到处都是小电容,所谓绝缘体中的分子在高频情况下吸收电场能量,再加上金属线中的趋肤效应,所以我们想要的高频信号走不了多远就不像样子了,比如下面某信道的频率特性(绿线)。/ G+ u  B: V+ C6 W+ h
$ r& c; x( e! {8 `3 m
+ l( h" H! {& F, z% s3 x% m
( h" U5 K* x( o- z- C6 l. N" B
如图所示,在对应28Gbps的频点上,信号能量被衰减了30db,电压幅度只剩3%了;在对应56Gbps的频点上更惨,65db意味着信号电压摆幅剩下不到千分之一。在这种信道中,发送端一个完美漂亮的数据眼图:
% j5 J/ v2 y$ }9 U1 ^
到了接收端会变成这样的一堆垃圾:

8 R+ g3 f( L" B* D+ x4 W, o什么都辨认不出来对吧。但是,经过我们聪明的工程师们一番努力,均一化开关打开,信号就变成了这样:

; C4 Q* s, H5 J3 `3 M* x  Y: I2 j
既然有了三大法宝,他们只能用在串口上吗?9 `4 Y, Q  N) P/ a# _7 ]
答案很显然,不是,串口可以用的,我们并口一样可以用。那为什么并口不用呢?
& B" U6 C8 v/ p8 V% `) U
差分信号这条不用说了,并口的电线本来已经够多了,数目还要再翻一倍?系统工程师会杀人的。
( ~5 C) \$ O+ x( g. {3 K9 E* s. C; q( p" J- G, d
CDR 意义也不大,反正你并口速度也不高,一堆数据线中顺便传下时钟,比做接收端做CDR再采样每一位数据省事多了。2 Y3 ?4 f# Z6 n: I
0 y" e' r0 ~' _2 U& o
信道均一化属于屠龙之技,不用差分信号的话也就传几百M,本来就没啥衰减,用这个干啥?还是考虑下各种噪声串扰的问题吧。

" y+ H) I4 x* n0 i$ j8 Z+ l4 F
于是答案就呼之欲出了。串口为啥比并口快?是因为串口的特性和应用场景,决定了它更加适合采用一些可以提高单根信道速率的设计方法,这些方法用在并口上并不合适。

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

1 t" I+ `3 c1 A* k: K0 g8 {% D4 E; \" g+ a3 n: E& @, c

科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表