返回列表 发帖
10# rrr_z

袁大大是个牛人哦
如果人生也能仿真...

TOP

ripple
看到你发了这个帖子
我很喜欢
可是我现在有些问题
就是内存颗粒的划分是Bank   行地址   列地址
是靠这三个量来定位一个内存颗粒中的存储空间
然后根据内存颗粒的位宽  来决定使用几个内存颗粒组成一个rank

TOP

这样的内存储空间确定之后
不知道你是否思考过
如何把CPU发出的32bit   4G的空间映射到具体的哪个 rank  哪个bank  哪个行列地址上呢?

TOP

以下是我思考的一个结果
以MT47H64M16为例   存储密度是1Gbit
存储规划为  8 Meg x 16 x 8 banks
那么一个rank需要4个这样的颗粒

颗粒的突发读写Burst Length可以是4或者8

我以8为例(在北桥内部设置寄存器,是内存控制器的突发长度为8)

Row address           A[12:0]
Bank address          BA[2:0]
Column address      A[9:0]
0,1,2 bit不接    因为内存的位宽是64bit
3,4,5 bit接Column address    的A[2:0]              发挥突发读写的性能
6,7,8 bit接Bank address        的BA[2:0]            发挥各个bank独立的性能
9-15     bit接Column address     的A[9:3]
16- 28  bit接Row address          的A[12:0]
29        bit接下一个Rank的CS信号
30        bit接下一个Rank的CS信号
31        bit接下一个Rank的CS信号

这样形成了一个单通道    双slot   每个slot双rank的架构    支持内存2G

对于双通道,要把bit3用来选择两个通道中的一个,往上的bit依上顺推
那么就形成一个双通道的架构    支持内存4G
1

评分人数

  • Triton

TOP

我认真地阅读了intel  北桥中内存控制器的寄存器位
里面只是有寄存器设置每个rank的大小
是否启动双通道模式

但是并没有具体讲CPU的32bit地址空间怎么映射到具体的内存颗粒的存储空间

上面只是我的关于映射的一个想法
由于我对于DDR2还不甚理解
请ripple大师给我答疑解惑

谢谢!

TOP

首先澄清几个概念:
通道,其实指控制器。如果说一个芯片支持双通道,那就表明这个芯片支持两个控制器;
slot是指插槽数量。通常考虑到控制器的实际驱动能力,以及用户使用的不确定性,通常做成2个slot。在PC主板上,我们可以常见的是双通道,4个插槽,其实就是一个控制器带两个slot。

内存容量的计算问题:
从一个颗粒的构成可以直接确定其地址的数量,比如:8 Meg x 16 x 8 banks结构的颗粒,由于有8个bank,则其应该有BA[2:0]3根bank地址线;
X16表示其数据位宽,一次操作可以输出16bits的数据。
8M代表其拥有的cell单元。由于DDR*是先通过active命令将raw打开,然后read/write命令选通column,输出数据,而两次不同的操作都是适用同一组地址线(在Read/Write命令时A10被用于决定是否进行Auto precharge的操作,由此下read/write命令时,地址的数量会比active命令时少一位。)这样建立一个等式:2^n*2^(n-1)=8M;其中n表示颗粒所拥有的地址数量。由此可以知道n=13;也就是颗粒的地址为A[12:0]。
通过上面的描述也就可以知道每组数据的具体地址了,对应到DRAM颗粒内部最基本的cell单元。注意这里的8M对于单颗DRAM来说是8M个cell单元,但是对于一组Rank来说,就是8M个地址单元了.一个单元包含64bits的数据!

关于地址表的对应关系:
对整个系统来说,肯定有一个具体的地址对应表格。每个地址被划分给不同的设备。典型如PC架构,内存、显卡、PCI、BIOS等都是有它固定的地址空间的。颗粒通过固件来建立对应关系。每个片选常常会对应一个地址空间,这个地址空间是可以通过软件来进行设置的。片选决定的地址空间段的第一个地址与该片选所决定的rank上地址0是对应的。对于有多个片选时,依次类推。
1

评分人数

  • Triton

TOP

按照整个设计过程,首先从原理设计开始:
1、确定控制器和所选用DRAM颗粒的总线位宽;以你描述的NB和Micron的DRAM为例,控制器数据位宽为X64(不算ECC);DRAM  颗粒的位宽为X16,这样为构成X64位宽总线需要64/16=4片DRAM颗粒并行构成;既需要4个DRAM颗粒同时被选通才能提供64位宽的总线结构。
结合你的分析:通过上面的描述,可以肯定,你一个rank选择4片DRAM是正确的。注意到,操作的时候,需要一次选通相同rank的4个颗粒,那么就意味着这4个颗粒需要使用一个片选,也就是CS信号。这样在你描述的CS片选应该是有问题的。
2、对于DRAM端的bank地址线,在寄存器上应该是有对应的连线的,你选择8bank的DRAM颗粒,直接将NB端的ba[2:0]与颗粒上的
   ba[2:0]相连即可。注意,这里的相连肯定是一个rank内的颗粒。也就是bank网络的拓扑是1驱4;Intel通常已BS开头(bank select).
3,地址线,命令,控制线直接连接即刻.如下给出了一个连接图示.
附件: 您需要登录才可以下载或查看附件。没有帐号?敬请注册
1

评分人数

  • Triton

TOP

如果一个控制器驱动多个CS(rank)的话,原理上直接将另外的Rank的信号逐一与控制器相连即可.
然后就是SI开始如何确定拓扑结构了!

TOP

o yeah, thank you very much!

TOP

这些可都是一个字一个字敲出来的呀

TOP

返回列表