欢迎光临专业集成电路测试网~~欢迎加入IC测试QQ群:111938408

专业IC测试网

当前位置: 网站主页 > 相关技术 >

【一】理解DDR基本原理(3)

时间:2023-09-11 18:56来源:一个人一支队伍 作者:ictest8_edit 点击:
       
3.3.2 多RANK的意义
假设内存通道位宽为64bit,即一个RANK为64bit,每一个64bit位宽背后都是由若干个颗粒组成的。
比如,使用16颗8bit位宽内存芯片,分别组成2个RANK,如下图所示:
 
我们可以把原本两根物理DIMM的内存颗粒全部安装在一块内存印刷电路板上,使得一根内存条具备两倍的内存容量。 这就相当于,物理上虽然只有一根内存条,但是通过划分不同的RANK,在逻辑上可以看成是2根内存条。
同一个RANK内部的所有内存颗粒chips,连接到同一个CS(Chip Select,片选)信号线上,内存控制器能够对同一个RANK的所有chips同时进行读写操作,而在同一个RANK的chip也分享同样的控制信号。在RANK选择好后,RANK内部的所有内存颗粒一起被选中,共提供64bit的数据。
 
对于上面图中,也就是说,RANK0和RANK1共享同一组addr/command信号线,利用cs片选线选择欲读取或是写入的那一组内存颗粒,之后,就可以对这一组内存颗粒进行读写。
1为了保证和CPU的沟通,一个DIMM中至少要有一个RANK。但是,为了保证有一定的内存容量,经常是采用一个DIMM两个RANK的结构。
1一条DIMM(DDR3/DDR4)上RANK数的计算:所有内存芯片位宽之和为64就是1个RANK,如果是128就是2个RANK。
1纠正一个误区:假如出现了所有内存芯片位宽之和等于128。则分成两个RANK,当读取一个RANK时,另一个RANK就不能读取(片选一次只能选中一个RANK),通常很多厂家就分别将这两部分放在DIMM的两面上。这就造成了许多人的错觉:双面是两个BANK的,单面是一个BANK的,实际根本不能这样认识。
1多RANK与单RANK相比,只是纯粹增加容量,并不会提高访问带宽。
1Rank是一组内存芯片的集合,当芯片位宽x芯片数=64bits(内存总位宽)时,这些芯片就组成一个Rank。一般是一个芯片位宽8bit,然后内存每面8个芯片,那么这一面就构成一个Rank(为了提高容量,有些双面内存条就有两个rank。在DDR总线上可以用一根地址线来区分当前要访问的是哪一组)。同一个Rank中的所有芯片协作来共同读取同一个Address(一个Rank8个芯片*8bit=64bit),这个Address的数据分散在这个Rank的不同芯片上。设计Rank的原因是这样可以使每个芯片的位宽小一些,降低复杂度。                  多个颗粒并联,位宽与数据位宽一样;由于CPU与内存之间的接口位宽是64bit,也就意味着CPU在一个时钟周期内会向内存发送或从内存读取64bit的数据。但是,单个内存颗粒的位宽仅有4bit、8bit或16bit,个别也有32bit的。因此,必须要把多个颗粒并联起来。组成一个位宽为64bit的数据集合,才可以与CPU互连
3.4 Chip
1Chip是内存条上的一个芯片,俗称内存颗粒。由图中是由8个bank组成了一个memory device。
 
3.5 Bank
         我们把某型号128MB内存颗粒拆开来看,它是由8个Bank组成,我们也称为Logical Bank(逻辑Bank)。每个Bank就是一个存储矩阵,就像一个大方格子阵。一般来讲,每个Bank中格子数量是相同的。这个格子阵有很多列(Column)和很多行(Row),这样我们想存取某个格子,只需要告知是哪一行哪一列就行了,这也是为什么内存可以随机存取而硬盘等则是按块存取的原因。
 
 
图中,1638410248字样,表示一个Bank中由16384行,1024列组成,每个格子可保存8bit,也就是1字节数据。那么每行可以存储1024*8bit=1KB。每行的存储容量,称为Page Size。
内存颗粒内部逻辑层次,如下:
 
1Bank:Bank是一个逻辑上的概念。一个Bank可以分散到多个Chip上,一个Chip也可以包含多个Bank.Bank和Chip的关系可以参考下面的图,每次读数据时,选定一个Rank,然后同时读取每个chip上的同一bank.
 
 3.6  Bank group
        随着颗粒容量提升,bank数越来越多,到DDR4时出现Bank Group,我们可以理解为,将多个Bank编成一个组,这个组就是Bank Group。如下:
 
Device Width:颗粒位宽,常见为4/8/16bit。
Die Density:颗粒密度,也就是容量,随着DDR代数迭代,容量越来越大。
Bank:DDR4以前是没有Bank Group的,所以该值就表示整个颗粒中Bank数量。但是在DDR4和DDR5中,就表示每个Bank Group中Bank的数量,整个颗粒Bank数量 = Bank Group * Bank。
Bank Group:Bank分组数量,该特性只存在于DDR4和DDR5中。
         
        在DDR4中才有的概念,每个Bank Group可以独立读写数据,这样一来内部的数据吞吐量大幅度提升,可以同时读取大量的数据,内存的等效频率在这种设置下也得到巨大的提升。DDR4架构上采用了8n预取的Bank Group分组,包括使用两个或者四个可选择的Bank Group分组,这将使得DDR4内存的每个Bank Group分组都有独立的激活、读取、写入和刷新操作,从而改进内存的整体效率和带宽。如此一来如果内存内部设计了两个独立的Bank Group,相当于每次操作16bit的数据,变相地将内存预取值提高到了16n,如果是四个独立的Bank Group,则变相的预取值提高到了32n。
 
1Row/Column组成的Memeory Array:Bank可以理解为一个二维数组bool Array[Row][Column]。而Row/Column就是指示这个二维数组内的坐标。注意读取时每个Bank都读取相同的坐标。
        这次我们来看看rank和Chip里面有什么,如下图:
 
       这是个DDR3一个Rank的示意图。我们把左边128MB Chip拆开来看,它是由8个Bank组成,每个Bank核心是个一个存储矩阵,就像一个大方格子阵。这个格子阵有很多列(Column)和很多行(Row),这样我们想存取某个格子,只需要告知是哪一行哪一列就行了,这也是为什么内存可以随机存取而硬盘等则是按块存取的原因。
      实际上每个格子的存储宽度是内存颗粒(Chip)的位宽,在这里由8个Chip组成一个Rank,而CPU寻址宽度是64bit,所以64/8=8bit,即每个格子是1个字节。选择每个格子也不是简单的两组信号,是由一系列信号组成,以这个2GB DDR3为例:
 
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
用户名: 验证码: 点击我更换图片