概念理解: DDR的寻址容量设计

server/2024/10/18 0:24:07/

主要内容:DDR寻址容量设计的概念理解示例。       

DDR的数据存储在不同的bank上,你知道具体是如何通过数据总线和地址总线的配合,拿到所需的数据吗?通过下面这样一个简单的问题,我们来逐渐了解这个过程的实现。

DDR寻址容量设计

假如我们用20根地址线,16根数据线,设计一款DDR,我们能设计出的DDR寻址容量有多大?

传统的单线编码寻址的DDR容量是计算的:2^20 * 16bit = 2BM? 显然这个内存空间太小了。

实际上如果DDR的内存颗粒位宽是16bit,通过设计,20根地址线可以把该DDR最大容量做到1GB。利用的是分时复用技术。

1)首先我们可以把存储空间分成两个大块,分别是BANK GROUP0(BG0) 和BANK GROUP1(BG1)。用1根地址线表示是BG0,还是BG1。

2)然后再让1个BANK GROUP区域分成4个BANK小区域,分别命令为:BANK0、BANK1、BANK2、BANK3。用2根地址线为这4个小BANK进行地址编码。

3)此时,20根地址线已经用取了3根,还有17根。系统信号设计为传输2次地址,再传输一次数据为一个周期(原来是1次地址+1次数据)。我们将这17根拿出1根用来表示行地址,和列地址的区分。

在第1次传输时,行地址选择使能,剩下16根线表示行地址范围,可以得到行地址范围为2^16=64K个。

在第2次传输时,行地址选择使能关闭,表示列地址,16根线使用10根表示列地址范围,剩下6根用来表示读写状态/刷新状态/复用等功能。列地址的表示范围为2^10=1K个。

这样1个BANK就划分成了64K*1K=64M个地址编号。每个存储单元是16bit,所以这个DDR芯片可以表示的内存容量就是:64M * 16bit * 4BANK * 2BANK GROUOP = 1GB。

每行存储1K*16bit = 2KB, 每行的存储容量称为Page Size。

至此,20根地址线和16根数据线全部分配完成,我们用正向设计的思维方式,为大家讲解了DDR4的存储原理以及接口定义和寻址方式。

Burst Type 按对Burst Order的概念

下面引入另外一个和地址线的分配相关的Burst的概念。

你可能会发现,一个DDR4标记的列地址数据范围很可能不是上面分析的10bit,而是7bit。这是为什么呢?

上图中明显可以看出,列地址编码只使用了7bit。在JESD79-3规范中有如下的这个表格,可以发现,Column Address的A2,A1,A0三位被用于Burst Order功能,并且A3也被用于Burst Type功能。

形象地理解就是对于一个Bank里面的Memory Array,每个Memory Cell可以看作是一个Byte的集合体。CA[9:3]选中一行中的一个特定Byte,再由CA[2:0]选择从这个Byte的哪个位置开始操作。CA3既参与了列地址译码,也决定Burst是连续读取还是交错读取。(感觉CA3的指示有点像是否把连续2个位置的值颠倒一下?)

来源:深入浅出:全面解读DDR内存原理 - 墨天轮


http://www.ppmy.cn/server/7532.html

相关文章

暴雨智算中心解决方案助跑人工智能新赛道

ChatGPT、Sora等AI大模型应用让人工智能热潮迭起,越来越多的科技企业纷纷入局,竞跑AI和大模型新赛道。2024年中国《政府工作报告》也指出,人工智能成为新质生产力的重要代表,将持续开展“人工智能 ”行动。与此同时,以…

qt camkelist编写实现程序运行时动态加载库并访问其函数

文章目录 **创建库并实现导出函数****编写CMakeLists.txt****调用** 在使用C和Qt进行项目开发时,CMake是一个常用的跨平台构建系统生成工具,它能够管理构建过程,生成Makefile或者项目文件。想要使用CMake来动态链接一个库,并调用其…

PyTorch小技巧:使用Hook可视化网络层激活(各层输出)

这篇文章将演示如何可视化PyTorch激活层。可视化激活,即模型内各层的输出,对于理解深度神经网络如何处理视觉信息至关重要,这有助于诊断模型行为并激发改进。 我们先安装必要的库: pip install torch torchvision matplotlib加载CIFAR-10数据…

浏览器CSS兼容性问题解决方案整理

1、CSS Hack 使用 hacker 可以把浏览器分为3类:IE6;IE7和遨游;其他(IE8 Chrome ff Safari opera等) (1)IE6认识的 hacker 是 下划线 _ 和星号 * (2)IE7和遨游认识的 hac…

npm常用命令详解

前言 npm(Node Package Manager)是Node.js的包管理器,它允许开发者安装、分享、更新和管理JavaScript库和工具。以下是一些常用的npm命令及其详细解释: 基础命令 1. 初始化一个新项目 npm init这个命令会引导你创建一个新的pack…

安全狗云眼的主要功能有哪些?

"安全狗云眼"是一款综合性的网络安全产品,主要用于实时监控和保护企业的网络安全。其核心功能包括威胁检测、漏洞扫描、日志管理和合规性检查等。 以下是安全狗云眼的主要功能详细介绍: 1、资产管理 定期获取并记录主机上的Web站点、Web容器、…

vite+vue3+antDesignVue 记录-持续记录

记录学习过程 持续补充 每天的学习点滴 开始时间2024-04-12 1,报错记录 (1)env.d.ts文件 解决方法: 在env.d.ts文件中添加以下代码(可以看一下B站尚硅谷的讲解视频) declare module *.vue {import { Defi…

Android startForegroundService与startForeground

启动service service启动有四种形式。 1.显示启动(如直接按service的全路径启动) 2.隐示启动(如通过intent-filter的action标签启动) 3.通过bindservice显示启动。 4.通过bindservice隐示启动。 Demo 创建一个service的子类,如 import android.app.Notifica…