背景:死磕内存的bank和rank概念的一天。网上的资料都差不多,还是有些地方没理通顺,有什么内存基础知识的书籍可以推荐吗?
物理RANK的概念
当我们给计算机购买内存条时候,上面显示的1RX8, 2RX8,其中R就是rank的意思,X8表示内存颗粒的位宽是8bit。RANK是指物理的内存条概念, 有时也称为P-RBANK(physical RANK)。
现在计算机内存总线一般是64bit,当接入如下图左边的那个内存条时候,每个黑色内存颗粒取1个8bit的数据,有8个这个的黑色内存颗粒就组成了一次总线传输所需要的64bit数据,把这8个黑色内存颗粒理解为1个RANK。2R的话表现为这个芯片正反面都有8个内存颗粒。下图是其中一个Rank的示意。
黑色内存颗粒也可以称为chip,图中每个chip的内存是128MB。每个chip上有8个bank,每个bank可以寻址的二维空间大小是16384*1024。
逻辑BANK的概念
在芯片的内部,内存的数据是以位(bit)为单位写入一张大的矩阵中,每个单元我们称为CELL,只要指定一个行(Row),再指定一个列(Column),就可以准确地定位到某个CELL,这就是内存芯片寻址的基本原理。这个阵列我们就称为内存芯片的BANK,也称之为逻辑BANK(Logical BANK)
下图中,当我们访问一个0x0-0x7地址的数据时候, 因为数据是存在不同的bank上都是(0,0)位置,所以可以通过一次内存事物请求得到。同理如果要访问地址是0x1-0x8的数据,因为0x8存在bank0中(0,1)位置,所以需要两次内存事物请求。
BURST的概念
Burst则是指对一个bank的地址矩阵,给定一个row,可以同时把col的burst_size个数一起取出来,增加取数效率。假设要取一个bank的4个数,需要给4个(row,col)组合,而burst mode情况下,只用给一个row,和burst_size=4的知识,即可取出所需的4个连续数据。