从零开始讲DDR(2)——DDR的核心技术
我们知道DDR区分于之前的SDRAM最大的点就在于它可以做到“在时钟周期的上升沿和下降沿都能传输数据,这样它的传输速率就比SDRAM快了一倍”。其实要做到这点,背后需要的技术突破体现在很多层面:
一、双边沿触发技术(Double Data Rate)
DDR 内存利用时钟信号的上升沿和下降沿,分别触发数据传输。这不同于传统的 SDRAM 只在时钟信号的上升沿传输数据。通过这一设计,DDR 在相同的时钟频率下,能够每个周期传输两倍的数据。
这项技术从诞生到现在也经历了很长时间演变,首先DDR作为最早的双边沿触发内存技术,时钟频率较低,但实现了数据传输速率的翻倍。之后的DDR2、DDR3、DDR4、DDR5,随着内存技术的发展,双边沿触发技术被保留下来并持续改进。这些技术在进一步提升时钟频率的同时,依然使用双边沿触发技术,使得数据传输速率越来越高。例如:DDR3 的时钟频率为 800 MHz,但由于双边沿触发,其数据传输速率可达到 1600 MT/s。DDR5 在时钟频率为 3200 MHz 时,能够实现 6400 MT/s 的数据传输速率。
二、数据选通(Data Strobe, DQS)信号
但是,双边沿触发技术的引入在带来效率提高的同时,也引入了一部分挑战。首先就是信号完整性方面的考虑,在高频传输中,确保时钟和数据的同步非常重要,双边沿触发需要比单边沿更精确的时钟管理机制。DQS(数据选通信号)的引入可以确保在每个时钟周期的上升沿和下降沿准确采样数据。
它的主要作用是帮助内存控制器在读写操作时,正确采样数据,确保数据在高频率下能够稳定传输。DQS 信号的工作机制与 DDR 的读写操作紧密相关。
我们知道DDR之前的SDRAM就是使用clock来同步的,因此理论上,DQ的读写时序完全可以由clock来同步。但是,由于速度提高之后,可用的时序余量越来越小,而引入DQS是为了降低系统设计的难度和可靠性,也就是可以不用考虑DQ和clock之间的直接关系,只用分组考虑DQ和DQS之间的关系,由于 DQS 和 DQ 是分组同步的,因此可以将同一组 DQ 数据线和 DQS 信号放在电路板上的同一层来走线。这有助于保持信号的时序一致性,减少信号传播中的延迟差异和误差。
DQ和DQS只是组成了源同步时序的传输关系,可以保证数据在接收端被正确的所存,但是IC工作时,内部真正的同步时钟是clock而不是DQS,数据要在IC内部传输存储同样需要和clock(内部时钟比外部时钟慢)去同步,所以就要求所有的DQ信号还是同步的,而且和clock保持一定的关系,所以就要控制DQS和clock之间的延时了。在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿。
2.1 DQS 在读操作中的作用
当 DDR 内存执行读操作时,DQS 信号与内存发送的读数据(DQ)同步。DQS 与读数据边沿对齐,这样内存控制器可以准确地在时钟周期的上升沿和下降沿采集到内存传输的有效数据。
DQS 边沿对齐:意味着 DQS 信号的上升沿和下降沿与数据的变化点一致。控制器通过检测 DQS 信号的边沿来决定何时进行数据采样。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由芯片发来的DQS信号,读取时,则由内存生成DQS向芯片发送。因此可以认为DQS就是数据的同步信号。
2.2 DQS 在写操作中的作用
在写操作时,数据是由控制器发送给内存的。在这种情况下,DQS 信号会由内存控制器产生,并与写数据(DQ) 中心对齐,帮助内存模块在正确的时机接收写入的数据。
DQS 中心对齐:DQS 的上升沿和下降沿分别位于两个数据比特之间,确保内存能够在时钟周期的中间采样数据。由于时钟周期的中间区域波动最小,中心对齐可以提高写操作的稳定性。
2.3 DQS 与 DDR 的突发传输
DDR 内存采用突发传输模式,数据在短时间内连续传输多个比特。DQS 信号在突发传输中扮演着同步器的角色,确保每个时钟周期的数据都能准确传输与接收。DQS 在突发模式下,帮助控制器和内存模块保持数据的传输节奏一致,从而提高了 DDR 的数据吞吐量。
三、低电压差分信号传输(LVDS)
除了信号完整性方面的挑战,双边沿触发技术的引入还带来了数据传输延迟和误差控制方面的挑战。由于时钟频率较高,信号传输过程中可能会出现延迟和抖动,DDR 内存使用了差分信号传输等技术来减小噪声干扰,保持数据传输的稳定性。这种信号传输技术可以减小电压摆幅,降低电磁干扰(EMI),并提高信号的抗噪声能力,从而保证在高频下的稳定性。
四、突发传输模式(Burst Mode)
DDR 内存采用了突发传输技术。一次内存访问会触发一系列连续的数据传输(突发传输),大幅减少了时钟周期的开销。这样不仅提高了数据传输效率,还在双边沿传输下最大化利用了每个时钟周期。
4.1 什么是突发传输(Burst Mode)
突发传输是一种优化的数据传输方式,当 DDR 内存接收到一次读取或写入命令时,它不仅仅传输一个数据块,而是传输一系列连续的数据块。这使得内存可以更高效地利用时钟周期,减少了频繁的命令开销。每次突发传输的长度通常是 4 或 8,也就是一次突发操作传输 4 个或 8 个数据块(单位通常为字节或位)。
4.2 突发传输的工作方式
当内存控制器向 DDR 发送读/写命令时,内存模块会根据预设的突发长度,在每个时钟周期的上升沿和下降沿连续传输多个数据块,而不是逐个周期发出一个数据传输请求。例如,如果设定了突发长度为 8(BL8),那么 DDR 内存会在一个命令下连续传输 8 个数据块,而不需要为每个数据块单独发送命令。
双边沿传输(Double Data Rate, DDR) 是 DDR 内存的一大特点,即数据在时钟的上升沿和下降沿都可以传输。结合突发传输技术,DDR 内存能够在每个时钟周期的上升沿和下降沿连续传输多个数据块,最大限度地利用每个时钟周期。这种双边沿与突发传输的结合,显著提高了内存的数据吞吐量和传输效率。
从DDR的原理图中,我们可以注意到Column Address的A2,A1,A0被单独预留了出来。
这就是为了用于Burst Order功能,并且A3也被用于Burst Type功能。由于一般情况,我们采用的都是顺序读写模式(即{A2,A1,A0}={0,0,0}),所以此时的A3的取值并无直接影响。
4.3 突发长度的灵活性
不同的 DDR 版本可以支持不同的突发长度,比如常见的 BL4 和 BL8,即每次传输 4 个或 8 个数据块。在一些高级的 DDR 版本中,突发长度可以动态调整,甚至支持按需截断(Burst Chop),从而在需要时截断突发传输长度以适应不同的应用需求。
五、多Bank并行处理
DDR 内存内部分为多个独立的Bank,这些 Bank 可以并行处理多个操作。这种架构在双边沿触发技术下,进一步提高了内存的并发处理能力,提升了数据的吞吐量。
六、内部数据预取(Prefetch Buffer)
DDR 内存使用了预取技术,内部数据预取(Prefetch Buffer) 是 DDR 内存中的一个关键组件,用于优化数据传输效率。它的作用是在时钟周期内一次性预取多个数据块,然后在后续时钟周期内逐步输出,从而减少内存访问延迟和提高数据带宽。下面是对 Prefetch Buffer 详细的解释:
6.1 Prefetch Buffer 的基本原理
预取的意思是内存控制器一次性从内存阵列中读取多个数据块,并将这些数据暂时存储在 Prefetch Buffer 中,而不是每次只读取一个数据块。这些预取的数据将被存储在一个缓冲区中,等待传输。在随后的时钟周期内,内存可以通过双边沿传输技术,将这些预取的数据块逐一传输给控制器,从而提高内存的吞吐量。
6.2 Prefetch Buffer 的工作机制
在 DDR 内存中,预取技术通常与突发传输相结合。每次数据请求时,DDR 内存通过预取缓冲区一次性从内存阵列中读取多个数据块。预取数据存储在 Prefetch Buffer 中,控制器通过 DQS(数据选通信号)在每个时钟周期的上升沿和下降沿读取这些数据。
6.3 预取深度(Prefetch Depth)
不同的 DDR 内存有不同的预取深度,这决定了每次内存访问可以预取多少数据:DDR1 使用的是 2n 预取,即每次预取 2 个数据块。DDR2 和 DDR3 使用的是 4n 或 8n 预取,可以一次性预取 4 或 8 个数据块。DDR4 通常使用 8n 预取,即每次预取 8 个数据块。DDR5 提升至 16n 预取,一次预取 16 个数据块。预取深度越大,意味着内存能够在一次读取中获取更多的数据,这对于提升高频率下的内存效率非常重要。
显然,通过使用Prefetch架构可以解决存储单元内部数据总线频率(核心频率)较低的瓶颈。8n预取,正是DDR3提升带宽的关键技术。同样的核心频率,DDR3能提供两倍于DDR2的带宽。总结: DDR SDRAM内部存储单元的核心频率提高比较困难且成本较高,为了解决外部数据传输率和核心速度之间的矛盾,DDR3引进了8n Prefetch(数据预取架构)技术,它能够提供比DDR2更高的数据传输率。
6.4 Prefetch Buffer 与时钟频率的关系
DDR的频率的频率可以分为:
- 核心频率
- 时钟频率(I/O频率)
- 数据传输频率
核心频率就是内存的工作频率;DDR1内存的核心频率是和时钟频率相同的,到了DDR2和DDR3时才有了时钟频率的概念,就是将核心频率通过倍频技术得到的一个频率。数据传输频率就是传输数据的频率。DDR1预读取是2位,DDR2预读取是4位,DDR3预读取是8位…
随着 DDR 内存时钟频率的不断提升,直接从内存阵列中读取数据的速度很难跟上外部数据总线的需求。预取缓冲区通过提前从内存阵列中获取数据,能够在时钟频率较高的情况下,保持较高的带宽和数据吞吐量。通过这种机制,即便内存阵列访问速度相对较慢,DDR 内存仍然可以通过预取技术保持较高的外部数据传输速率。
6.5 总结
内部数据预取(Prefetch Buffer) 是 DDR 内存提高数据传输效率的重要技术之一。通过在每次内存访问时预取多个数据块,DDR 内存可以减少内存访问延迟,提升数据传输带宽。预取技术结合突发传输和双边沿传输,使得 DDR 内存在高频率下仍然能够保持高效的传输能力,并通过不同的预取深度适应各种高性能应用场景。