当前位置: 首页 > java >正文

DDR的那些事,lesson1

颗粒计算

DDR1

BA(2) A(14) 

以1Gb为例

30 = 2 + 14 + 14, 如果是X4, 则14 = 2 + 12,因此需要列的地址是12bits

如果是X8,则需要列的地址是11bits, 类推如果是X16,则需要列的地址是10bits

DDR3

BA(3) A(16)

以1Gb为例

30 = 3 + 14 +13,如果是X4, 则13= 2+ 11,因此需要列的地址是11bits

 如果是X8的话,则13 = 3 +10,因此列需要10bits

如果是X16的话,则13 = 4 + 9,因此需要列是9bits,看下表,发现列地址是10bits,那么行地址就不是原来的14bits,而是13bits

DDR4

BA(2) BG(2) A(18)

 注意这时候引入了bank group的概念,相当于把bank数量提升了。

以2Gb为例

31 =  4+ 14 + 13 ,如果是X4,则13 = 2 +11, 列地址需要11bits,可以看到下面表格,将行地址14bits减一来实现。列保持10bits

X8, X16计算方法如上,前提是列地址的宽度为10bits,根据不同的Xn来行地址或者BG的宽度

命令定义

DDR 1

通过操作CS/RAS/CAS/WE来实现command编码。

DDR3

通过操作CS/RAS/CAS/WE来实现command编码。

DDR4

通过操作地址A中的CS/RAS/CAS/WE来实现command编码。

那么分析个问题,最大容量的问题,4 + 14 + 10 + 4 = 32 4G大小  ,再次看表格发现单个颗粒可以是16G,上面的计算是错误的。为啥呢?

原因是我们认为RAS/CAS/WE这三bits是没有地址的意义。那么加上这三bits,单个颗粒的容量是4 * 8 =32G,然而规格中写的是4G,原因是A17不能再X16用,A17仅仅对X4支持。

想一个问题,如果继续单个颗粒内存扩大的话,可以操作的范围是修改列地址,增加bank的数量,或者是增加Xn,可不可以激进点直接X16

配置寄存器

DDR1

MR0如下图所示,通过BA1/BA0为0进行选择MR的位置。

有两个MR

DDR3

MR0 如下所示,可知和DDR1已经不兼容了

有MR0, MR1, MR2,MR3

好了,本篇内容就到这里。

http://www.xdnf.cn/news/2562.html

相关文章:

  • Redis一些小记录
  • Java——琐碎知识点一
  • Suna开源框架分析
  • C++:迭代器失效问题
  • 手搓传染病模型(SEIA-拓展)
  • Segment Anything in Images and Videos
  • angular跨组件通讯
  • 【误差理论与可靠性工程】蒙特卡洛法计算电路可靠度和三极管静态工作点电压
  • 从数据孤岛到智能决策:健康管理系统如何打通企业健康大数据?
  • 使用DeepSeek进行PPT制作
  • ARCGIS PRO 在地图中飞行
  • node20的安装和vue的入门准备
  • Python3(12) 条件控制
  • AI发展史
  • java(三) -------------运算符、字符串、输入输出、大数值和数组
  • CoOAG:首个捕捉学术研究兴趣动态演变的数据集
  • SQL命令
  • 高频关键字、函数、容器、智能指针和算法例子
  • 深度学习新趋势:利用MLP取代卷积层——S2-MLPv2模型解析
  • EdgeOne 防盗刷实践教程
  • 19.TVS特性与使用注意事项
  • JAVA中的贪婪爬取和非贪婪爬取
  • C++:STL——list
  • PG-EXPLAIN基础
  • 稳扎稳打,25西电生命科学技术学院(考研录取情况)
  • HTML 的基本结构与简单文件编写方法
  • 【MobaXterm】win10下载v25.1安装流程
  • Java——封装(面向对象)
  • AI算力革命驱动光模块产业跃迁:800G规模化部署与1.6T技术竞速下的市场新纪元
  • RAGFlow解决Docker Compose include 报错问题