当前位置:网站首页>DDRx寻址原理
DDRx寻址原理
2022-07-05 10:45:00 【ltqshs】
DDR4-DRAM的工作原理
一颗DDR4芯片的内部功能框图如下:
其引脚按照功能可以分为7类:前3类为电源、地、配置信号。
后4类为:控制信号、时钟信号、地址信号、数据信号。
电源、地、配置信号的功能很简单,此处不赘述。控制信号主要是用来完成DDR4与DDR4 Controller之间的状态切换。
DDR4中最重要的信号就是地址信号和数据信号。
如上DDR4芯片有20根地址线(17根Address、2根BA、1根BG),16根数据线。在搞清楚这些信号线的作用以及地址信号为何还有复用功能之前,我们先抛出1个问题。假如我们用20根地址线,16根数据线,设计一款DDR,我们能设计出的DDR寻址容量有多大?
按照课本中学到的最简单的单线8421编码寻址的方式,我们知道20根地址线(连读写控制信号都不考虑了)的寻址空间为2^20,16根数据线可以1次传输16位数据,我们能很容易计算出,如果按照单线8421编码寻址方式,DDR芯片的最大存储容量为:
Size_max=2^20)16=104857616=16777216bit=2097152B=2048KB=2MB。
但是事实上,该DDR最大容量可以做到1GB,比传统的单线编码寻址容量大了整整512倍,它是如何做到的呢?答案很简单,分时复用。
我们把DDR存储空间可以设计成如下样式:
首先将DDR芯片的存储空间分成两个大块,分别为BANK GROUP0和BANK GROUP1,再用1根地址线(还剩19根),命名为BG,进行编码。若BG拉高选择BANK GROUP0,拉低选择BANK GROUP1。(当然你也可以划分成4个大块,用2根线进行编码)
再将1个BANK GROUP区域分成4个BANK小区域,分别命名为BANK0、BANK1、BANK2、BANK3。然后我们挑出2根地址线(还剩余17根)命名为BA0和BA1,为4个小BANK进行地址编码。
此时,我们将DDR内存颗粒划分成了2个BANK GROUP,每个BANK GROUP又分成了4个BANK,共8个BANK区域,分配了3根地址线,分别命名为BG0,BA0,BA1。然后我们还剩余17根信号线,每个BANK又该怎么设计呢?这时候,就要用到分时复用的设计理念了。剩下的17根线,第一次用来表示行地址,第二次用来表示列地址。
原本传输1次地址,就传输1次数据,寻址范围最多16KB(不要读写信号)。
现在修改为传输2次地址,在传输1次数据,寻址范围最多被扩展为2GB。虽然数据传输速度降低了一半,但是存储空间被扩展了很多倍。
所以,剩下的17根地址线,留1根用来表示传输地址是否为行地址。
在第1次传输时,行地址选择使能,剩下16根地址线,可以表示行地址范围,可以轻松算出行地址范围为2^16=65536个=64K个。
在第2次传输时,行地址选择禁用,剩下16根地址线,留10根列地址线表示列地址范围,可以轻松表示的列地址范围为2^10=1024个=1K个,剩下6根用来表示读写状态/刷新状态/行使能、等等复用功能。
这样,我们可以把1个BANK划分成67108864个=64M个地址。如下所示:
在每个地址空间中,我们一次存储16位数据。
所以,每个BANK可以分成65536行,每行1024列,每个地址空间存储的数据长度为16bit。
每行可以存储1024*16bit=2048bit=2KB。每行的存储的容量,称为Page Size。
单个BANK共65536行,所以每个BANK存储容量为65536*2KB=128MB。
单个BANK GROUP共4个BANK,每个BANK GROUP存储容量为512MB。
单个DDR4芯片有2个BANK GROUP,故单个DDR4芯片的存储容量为1024MB=1GB。
至此,20根地址线和16根数据线全部分配完成,我们用正向设计的思维方式,为大家讲解了DDR4的存储原理以及接口定义和寻址方式。
边栏推荐
猜你喜欢
2022年危险化学品生产单位安全生产管理人员特种作业证考试题库模拟考试平台操作
基于昇腾AI丨爱笔智能推出银行网点数字化解决方案,实现从总部到网点的信息数字化全覆盖
数据库三大范式
9、 Disk management
谈谈对Flink框架中容错机制及状态的一致性的理解
【js学习笔记五十四】BFC方式
Wechat nucleic acid detection appointment applet system graduation design completion (6) opening defense ppt
【DNS】“Can‘t resolve host“ as non-root user, but works fine as root
Implement the rising edge in C #, and simulate the PLC environment to verify the difference between if statement using the rising edge and not using the rising edge
[JS] extract the scores in the string, calculate the average score after summarizing, compare with each score, and output
随机推荐
String
App各大应用商店/应用市场网址汇总
websocket
iframe
2022 Pengcheng cup Web
[JS] extract the scores in the string, calculate the average score after summarizing, compare with each score, and output
Web3基金会「Grant计划」赋能开发者,盘点四大成功项目
Explanation of full vulnerability script of network security C module of secondary vocational group script containing 4 vulnerabilities
Web Security
脚手架开发基础
ModuleNotFoundError: No module named ‘scrapy‘ 终极解决方式
数据类型 ntext 和 varchar 在not equal to 运算符中不兼容 -九五小庞
数据类型、
uniapp
2022年T电梯修理操作证考试题及答案
Go-2-Vim IDE常用功能
LSTM应用于MNIST数据集分类(与CNN做对比)
LDAP overview
【SWT组件】内容滚动组件 ScrolledComposite
Implement the rising edge in C #, and simulate the PLC environment to verify the difference between if statement using the rising edge and not using the rising edge