物理内存条可以有一个或两个Memory Module (SIMM封装或DIMM封装)
每个Memory Module可以有很多个bank
每个bank可以看成一很大的表格,有行数、列数
表格中每个单元就是一个存储单元,与数据线位宽有关
----------------------------------- 华丽的分割线 ---------------------------------------
以我们开发板的1G内存条为例,查datasheet,其参数为:
DIMM封装
bank数:4
[ROW_BITS]:13 行数 1<<13
[COL_BITS]:11 列数 1<<11
数据线位宽:64bit
内存条空间大小: 1<<13 * 1<<11 * 64 * 4 * 2 = 1<<33 bit = 1<<30 Byte = 1G Byte
行数 列数 位宽 bank DIMM
做驱动的注意:在uboot中配置DDR Controller时,ROW_BITS、COL_BITS 需要配置
每个Memory Module的基址,大小也要配置的
----------------------------------------- 华丽的分割线 --------------------------------------
DDR时序简图
行地址 列地址 DATA DATA ...
1.行地址就是物理页号,列地址看做offset:
一个物理页大小 = 1<<列数 * 数据线位宽 , 如 1<<11 * 64 = 1<<17 bits = 16 Bytes
2.用于读写操作的DATA,一个DATA就是数据线位宽,如 64bit
3.DATA的个数就是brust值,影响性能,一般DDR Controller可调
若brust值太大,如前面一个DATA就完事了,后面的DATA还是要占时序的,虽然那时已是无效值
若brust值太小,同样的数据量,需要发出更多次的列地址,来完成读写
----------------------------------------- 华丽的分割线 --------------------------------------
DDR 的频率分为 数据频率 和 时钟频率
因为DDR会在时钟的上升沿和下降沿各采一次数据,所以他们的频率有以下关系:
数据频率 = 时钟频率 * 2
举个例子
DDR clock: 266 MHz (532 Mhz data rate)
阅读(383) | 评论(0) | 转发(0) |