
文章目录概述DDR技术标准及演进DDR子系统组成DRAM存储单元DDR访存层次结构DDR传输速率传输带宽计算DDR内存交织Memory Interleaving内存交织实现内存交织模式相关参考概述DDR全称Double Data Rate SDRAM本质也是SDRAM技术的一种通过在IO总线时钟的上升沿和下降沿都支持传输数据从而达成双倍数据传输速率(对比SDR技术)。DDR技术标准及演进各代SDRAM芯片的主要参数如下表所示标准传输速率核心速率PrefetchIO总线频率最大位宽电压SDR100-166100-1661n100-16616/163.3DDR200-400100-2002n100-20016/322.5/2.6DDR2400-1066100-2664n200-53316/641.8/1.55DDR3800-2133100-2668n400-106616/1281.5/1.35DDR41600-3200200-4008n800-160016/1281.2DDR54800-8400300-52516n2400-420016/2561.1DDR子系统组成DDR子系统由控制器、PHY接口以及DRAM共同组成逻辑结构示意如下DDR ControllerDDRC通常内置在SoC通过片上总线例如ARM AMBA总线接入到系统中接收Host发起的访存请求对外通过DFI接口与DDR PHY进行通信DDR PHYDDR Physical Interface用于物理层接入DRAM完成数字/模拟信号转换。DDR PHY通过DFI接口接受DDRC的访存事务将其转换为DRAM的访问操作命令序列下发到DRAM颗粒处理DRAMDynamic Random Access Memory动态随机访问内存即内存颗粒。DRAM存储单元DDR访存层次结构DDR系统采用采用分层访存结构从内存控制器到内存颗粒内部逻辑系统访存的层次从高到低可依次分为ChannelDIMMRankChipBankRow/ColumnCell。其中Channel、DIMM、Rank、Chip 属于模块级的物理与逻辑组织而Bank、Row、Column、Cell 则是单个内存芯片内部的存储阵列结构。如下图Channel: 内存访问的物理通道现代内存控制器基本都支持多通道技术用于提升内存带宽DIMMDIMM对应于主板上的一个内存插槽单个Channel可以支持多个DIMMRankRank的概念与CPU位宽有关CPU与内存之间就是CPU到DIMM槽的接口位宽是64bit也就意味着CPU一次会向内存发送或从内存读取64bit的数据那么这一个64bit的数据集合就是一个Rank也有些厂商描述为物理BankP-BankChipChip对应于内存条上的内存颗粒芯片包含了多个BankBankBank是一张大的内存矩阵也有厂商称为逻辑BankL-BankCell芯片的内部内存的数据是以位(bit)为单位写入到Bank中每个存储单元我们称为CELL只要指定一个行(Row)再指定一个列(Column)就可以准确地定位到某个CELL。DDR传输速率DDR传输性能取决于DRAM颗粒自身的访问速度及外部IO总线的传输速度通常DRAM颗粒会运行在较低的频率但通过数据预取功能可以在单个时钟周期内读取多bit数据然后通过外部IO总线进行数据传输并支持在IO总线时钟的上升沿和下降沿各传输一次数据。核心频率DRAM颗粒运行频率DDR各个代次变化不明显主要通过增加数据预取位数提升传输带宽外部通常不直接感知核心频率IO总线传输频率DRAM与DDR PHY之间IO传输总线的运行频率支持上升沿和下降沿都传输数据数据传输速率MT/s每秒传输数据的次数通常也是DRAM的标称速率如DDR5-4800中4800指的就是传输速率。数据传输速率和核心频率、IO总线频率的关联核心频率和数据预取倍数决定了DRAM介质的存取速度是所有DDR数据访问的源头。传输速率是核心频率的Prefetch倍数SDR的传输频率与总线频率相同而DDR的传输频率则为IO总线频率的2倍因为在一个总线时钟周期内上升沿和下降沿各有一次数据传输。传输带宽计算DDR常用的传输带宽计算方式有两种带宽计算方式1核心频率 x 数据预取位数 x IO总线位数 / 8带宽计算方式2数据传输速率 x IO总线位数 / 8。DRAM核心频率一般不直接对外感知相关参数需要查询DDR标准手册才能获取。日常应用中看的最多的是内存标称频率即数据传输速率以DDR5-4800说明通过数据传输速率可以算出其传输带宽为4800MT/s x 64bit / 8 38,400MB/sDDR内存交织Memory InterleavingDDR内存控制器发起访存请求后由于DRAM介质自身特性不能立刻做到数据的存取DRAM需要先进行数据准备在这期间尽管内存通道上还有其它DIMM但整个物理通道只能处于空闲等待数据状态。另外基于DDR多通道技术虽然理论上可以让系统访问DDR时获得多倍传输带宽但当系统存取的数据只位于其中一个DIMM时那么只有对应DIMM所在的DDR通道才能传输数据在此期间其它通道则无法参与多通道的技术优势无法发挥。解决上述这两个问题的基本思路就是让数据能分散到各个通道对应的DIMM上系统可以并行存取多个DIMM上的数据从而最大化多通道传输性能这也就是内存交织的核心思想。内存交织实现程序中的数据通常遵循局部性存储原理在连续的物理内存空间中进行存储而不会散落到各个DIMM内存上因此要实现内存交织就需要将多片内存颗粒/内存通道交替分配物理地址把连续地址打散分到不同Bank/通道然后并行读写从而提升带宽、降低单颗粒访问瓶颈。开启内存交织后内存物理地址交替排布内存控制器会以交替模式将数据分配到各个DIMM上允许内存控制器访问每个DIMM来获取较小的数据位而不是访问单个DIMM来获取整个数据块。内存交织模式根据DDR的访存逻辑可以在不同的层次对DDR内存进行地址交织排布包括Bank交织、Rank交织、以及通道交织等其中最常用的是通道交织。在支持多个DDRC以及NUMA系统中甚至还可以支持DDRC间管理的内存交织以及NUMA间内存的交织但是这种情况下不同内存的访问时延存在较大差异实际应用不多根据业务情况选择性开启。相关参考如何深入浅出地理解DDR Controller?深入理解DDRDDR的演进