主板上的内存条可以像PCIe一样使用延长线吗?
不存在内存条延长线(Riser Cable)。内存总线作为单端(single-ended)并行总线的钉子户,也是在计算机外部总线中硕果仅存的一个,它对单端并行总线的运用已经到了极致的地步,容不下任何大的余量,所以不存在信号完整性空间给延长线。
相对于PCIe或者USB这种自带时钟的差分串行总线,内存总线作为单端并行总线的余孽,它的难点之一在于在提高频率的同时,有并行多路数据信号的情况下,源时钟如何和数据信号对齐。内存总线实际上对此作了很多努力,其中两点大家可能都意想不到:
内存总线实际上是部分并行总线
我们都知道内存插槽288个pin,一个时钟传送64 bit的数据(不考虑纠错码的情况),这64bit是同步传输过来的吗?实际上并不是,如果要在一个源时钟的基础上,采样所有数据线DQ线,很难做到有窗口同步采样,Read Leveling和Write Leveling会很麻烦。DDR1引入DQS(DQ Strobe)作为源同步时钟,和一组DQ绑定来读取或者写入数据,而不再64bit同步一个统一CLK。如我们平时的x4内存条,就是1个DQS和4个DQ同步,x8就是1个DQS对8个DQ,以此来减少同步的代价,增大同步窗口。
引入差分信号
是的,你没看错,内存总线也有差分信号,还有好几对。为了对抗信号的干扰,尤其是对珍贵的时钟的干扰,DDR2之后将时钟信号改为差分信号,如DQS和CLK等:
内存总线还通过降低电压,将电压摆动幅度降低,减低线路的寄生电容,来提高频率,花了20年,从5v降低到DDR5的1v多一点。最近还加入了DFE等均衡器算法来增大眼图。
在计算机外部总线之中,除了内存总线之外,我们再也找不到如此极致地使用单端信号并行总线的例子,它的时序约束已经相当苛刻,也许是计算机外部总线里面要求最苛刻的。所以现在做主板电路设计的时候,需要严格按照Intel的PDG的要求,控制线长(往往是紧挨着CPU)和噪音,容不得任何误差,更不可能留下空间给延长线了。
参考资料