从PCI被“拍在沙滩上”谈并行总线和串行总线
串行总线和并行总线接口
在高速串行总线流行起来之前,芯片之间的互联通过系统同步或者源同步的并行接口传输数据,而所谓的并行接口,是指通信中一个或几个字节(8位)数据是在n*8条并行传输线上同时由源端传到目的地,也可以说有多个数据线(几根就是几位),在每个时钟脉冲下可以发送多个数据位(几位的并行口就发送几位)。
串行通信指数据在单条一位宽的传输线上,一比特接一比特地按顺序传送的方式,在早期的定义里也有说只有一根数据线,每个时钟脉冲下只能发送一位数据的方式。
所以早期对串行通信与并行通信的理解为:同样的一个字节数据(8位),串行通信要分8次由低位到高位按顺序一位位地传送,而并行通信由于有8根线路,所以只要一次就可以传送过去,形象的说,把线路(通道)比作道路,能并排开几辆车的就可以说是“并行”,只能一辆一辆开的就属于“串行”了。
并行总线与串行总线的区别对比及优缺点
很明显,并行通信的速度要比串行通信的速度快得多,效率更高,费时更少。不过这些都是早期I/O速率都不高的情况下的理论理解,随着信息技术的飞速发展,之前的理解放在现在来看已经过时了,因为现在是高速串行信号时代了。
按照理论分析并行总线可以一次传多个数据位,而且时钟远远低于串行,理论应该成为目前高速传输信号的首选,那为什么像PCI、IEEE 1284、PATA等并行总线被PCIe、USB、SAT等串行总线所取代呢?
下面就针对并行总线为什么不能成为目前总线接口的主流?
图1‑5演示了系统同步(共同时钟)方式及源同步时钟方式并行总线接口。
图1‑5 系统同步(共同时钟)方式及源同步时钟方式并行总线接口
随着接口频率的提高,在系统同步接口方式中,有几个因素限制了有效数据窗口宽度的继续增加。
Ø时钟到达两个芯片的传播延时不相等(clock skew)
Ø并行数据各个bit的传播延时不相等(data skew)
Ø时钟的传播延时和数据的传播延时不一致(skew between data and clock)
虽然可以通过在目的芯片(chip #2)内用PLL补偿时钟延时差(clock skew),但是电压和温度(PVT)变化时,时钟延时的变化量和数据延时的变化量是不一样的,这又进一步恶化了数据窗口。
源同步接口方式中,发送侧Tx把时钟伴随数据一起发送出去,限制了clock skew对有效数据窗口的危害。通常在发送侧芯片内部,源同步接口把时钟信号和数据信号作一样的处理,也就是让它和数据信号经过相同的路径,保持相同的延时。这样PVT变化时,时钟和数据会朝着同一个方向增大或者减小相同的量,对skew最有利。
我们来做一些合理的典型假设,假设一个32bit数据的并行总线,
a)发送端的数据skew = 50 ps ---很高的要求
b)pcb走线引入的skew = 50ps ---很高的要求
c)时钟的周期抖动jitter = +/-50 ps ---很高的要求
d)接收端触发器采样窗口 = 250 ps ---Xilinx V7高端器件的IO触发器
可以大致估计出并行接口的最高时钟 = 1/(50+50+100+250) = 2.2GHz (DDR)或者1.1GHz (SDR)。
利用源同步接口,数据的有效窗口可以提高很多。通常频率都在1GHz以下。在实际应用中可以见到如SPI4.2接口的时钟可以高达DDR 700MHz x 16bits位宽。DDR Memory接口也算一种源同步接口,如DDR3在FPGA中可以做到大约800MHz的时钟。
要提高接口的传输带宽有两种方式,一种是提高时钟频率,一种是加大数据位宽。那么是不是可以无限制的增加数据的位宽呢?这就要牵涉到另外一个非常重要的问题-----同步开关噪声(SSN)。
这里不讨论SSN的原理,直接给出SSN的公式:SSN = L *N* di/dt。
L是芯片封装电感,N是数据宽度,di/dt是电流变化的斜率。
随着频率的提高,数据位宽的增加,SSN成为提高传输带宽的主要瓶颈。图1.2是一个DDR3串扰的例子。图中低电平的理论值在0V,由于SSN的影响,低电平表现为震荡,震荡噪声的最大值达610mV,因此噪声余量只有1.5V/2-610mV=140mV。
图1‑6 DDR3串扰演示
因此也不可能靠无限的提高数据位宽来继续增加带宽。一种解决SSN的办法是使用差分信号替代单端信号,使用差分信号可以很好的解决SSN问题,代价是使用更多的芯片引脚。这在早期是可以接受的。但是摩尔定律的现象使得与几十年前相比可生产的芯片中硅电路的数量大幅增加,而芯片封装技术的pin密度并没有像硅密度一样以相同的速度在增加,因此I/O pin的封装实际上比硅电路还贵,这就意味着对于大多数芯片来说pin管脚越来越多变得不可接受。就好像我们都知道车道越多我们的通行效率就会更快,但随着现在的城市空间越来越小以及地价越来越贵,更多的车道慢慢的只能变得越来越难以实现。况且并行本身的I/O速率不高,就像拖拉机或毛马路,速度上不去再多车道也是枉然。
并且使用差分信号仍然解决不了数据skew的问题,很大位宽的差分信号再加上严格的时序限制,给并行接口带来了很大的挑战。
经上所述,并行总线在发高速传输的今天遇到了很多瓶颈,而这些瓶颈因为不能被解决,所以被串行总线所取代,但是将来随着一些工艺问题的解决,并行总线可能又被抬上“舞台”,像《PCIe“拍了拍”PCI- PCI和PCIe发展历史》这篇文章的演练历史一样。
PS:将来的DDR接口或许也会被串行总线所取代。。。(意淫ing)
这篇文章,没有过多的介绍串行总线,并不是串行总线并无缺点,高速的时钟带来的问题也很多,只不过后面要花大量篇幅介绍串行总线,以及他带来的问题及解决方式,所以这篇文章就没有进行过多介绍。
—END—