DRAM 内存介绍(二)
DDR3 SDRAM的读写操作都是burst相关的,在一个address启动读写操作后,它都要连续进行burst length的byte读写,就像前一章的图中,ACT命令后,会跟着一个多个读写命令。read burst 的长度总是4 clocks,这是因为DDR传输数据频率是主机的两倍,4 clocks x 2 transactions/clock = 8 transactions or 8 bits per bank。
DDR3的内存地址中,可以包括以下的位:1位chip select位,0表示rank0,1表示rank1;bank选择位 BA0-BA2 ,DDR3是8个bank,所以3位就足够了,GDDR5是16个bank,所以需要4位,HBM也是16个bank,也需要4位。page选择位A0-A13,表示每个bank内,有16,384 (214) pages。列用A00-A09 表示,每个page有210 = 1,024列。A12bit通常作为Burst Chop bit,如果A12 是high,则在一个读burst中,仅有一半的数据被发送。A10 bit用来决定precharge是对于一个bank(A10 low)还是对于所有bank(A10 high)。
图一, 内存读写操作
数据输入/输出 pins DQ0-DQ63 在cpu和DIMM之间提供了64bit宽的数据接口,比如Intel Core i7处理器,有三个64bit宽的memory channel,所以内存总线宽度为192bit, intel i5处理器则有两个64bit的memory channel,所以内存总线宽度是128bit。
每个channel能够管理操作两个DIMM,这意思是说每个channel最多有4个rank,在同一个channel中增加DIMM,并不能增加内存总线宽度,但这增加了bank的数目,提高了同时操作page的能力。
图二,内存读写操作
在图二的例子中,我们假定bank中没有打开的page,也就是说bank处于precharge状态,我们可以启动访问一个新的page。第一步,选择page,第二步,选择列,第三步,burst数据到内存总线。在图中,行地址是1位,列地址是4位,所存的数据总共是2 x 4-bit x 1 (bank)。
一个ACT命令指定访问行地址解码器,这将触发输入传感放大器中的row address word line,就像前一篇文章介绍的,这需要消耗tRCD cycles的最小等待时间,才能发送下一条命令。如果设置时序过小,可能会导致数据出错。接着,读命令伴随着列地址访问,选择了coloumn address bit line,这将需要消耗CL cycles,然后传感放大器的word line被激活,传感放大器开始工作,开始读burst操作,之后就是precharge操作,需要消耗tRP的cycles时间。
Click to enlarge
图三. bank读操作时序图
图三显示了16byte的读写时序图。
DRAM 内存介绍(二)的更多相关文章
- DRAM 内存介绍(一)
转载自博客大神迈克老狼的blog: http://www.cnblogs.com/mikewolf2002/archive/2012/11/13/2768804.html 参考资料:http://ww ...
- DRAM 内存介绍(三)
参考资料:http://www.anandtech.com/show/3851/everything-you-always-wanted-to-know-about-sdram-memory-but- ...
- { MySQL基础数据类型}一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型
MySQL基础数据类型 阅读目录 一 介绍 二 数值类型 三 日期类型 四 字符串类型 五 枚举类型与集合类型 一 介绍 存储引擎决定了表的类型,而表内存放的数据也要有不同的类型,每种数据类型都有自己 ...
- iOS 11开发教程(五)iOS11模拟器介绍二
iOS 11开发教程(五)iOS11模拟器介绍二 3.iOS11模拟器中设置语言 对于不同国家的人来说,使用到的语言是不一样的.一般情况下iOS11模拟器默认使用的English(英语).对于英文不好 ...
- C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法
C#构造方法(函数) 一.概括 1.通常创建一个对象的方法如图: 通过 Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...
- 必须要注意的 C++ 动态内存资源管理(二)——指针对象简单实现
必须要注意的 C++动态内存资源管理(二)——指针对象简单实现 四.拷贝类型的资源 上节我们说过,对于图片类型的资源我们有时候往往采用拷贝(如果对于那种公共图片,可能采用唯一副本,提供 ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(六)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(六) Lucene.Net的上一个版本是2.1,而在2.3.1版本中才引入了Next(Token)方法重载,而ReusableStrin ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(五)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(五) 2.1.3 二元分词 上一节通过变换查询表达式满足了需求,但是在实际应用中,如果那样查询,会出现另外一个问题,因为,那样搜索,是只 ...
- Lucene.Net 2.3.1开发介绍 —— 二、分词(三)
原文:Lucene.Net 2.3.1开发介绍 -- 二.分词(三) 1.3 分词器结构 1.3.1 分词器整体结构 从1.2节的分析,终于做到了管中窥豹,现在在Lucene.Net项目中添加一个类关 ...
随机推荐
- Odoo下拉动作列表
- Ubuntu系统监控cpu memery 磁盘Io次数 IO速率 网卡 运行时间等信息的采集
实验室最近在做的项目要做ubuntu系统监控,要获得系统的一些信息并返回给web服务器. web服务器与ubuntu主机的通信我写的程序用的是socket,至于为什么不用java程序ssh到对应的主机 ...
- Android -- The Manifest File
Before the Android system can start an app component, the system must know that the component exists ...
- [[4], [5, 6, 7]](Python)list的方法
现在我们要学习一些Python的数据结构了,本节将主要学习列表(list)的用法 1.list的方法 list.append(x) 在list的末尾添加一个元素 >>> a=[1,2 ...
- git以及git flow 的使用
转载:http://selfcontroller.iteye.com/blog/996494 在这里主要讲一下我在项目中用到的关于gitflow的用法. 公司的项目中,专门有一台用来存放版本库的服 ...
- [译]GLUT教程 - glutPostRedisplay函数
Lighthouse3d.com >> GLUT Tutorial >> Avoiding the Idle Func >> glutPostRedisplay 直 ...
- React Native填坑之旅--Button篇
从React过来,发现React Native(以下简称RN)居然没有Button.隔壁的iOS是有UIButton的,隔壁的隔壁的Android里也是有的.没有Button,就没有点击效果啊.这还真 ...
- C++ 无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序。
C++ 无法将值写入注册表 HKEY_LOCAL_MACHINE\Sofeware\Microsoft\Windows\CurrentVersion\Run,以实现开机自启动应用程序.但可以写入到H ...
- EDMA3随笔
最近查DM814x上两个M3莫名其妙挂掉的问题查了将近两周,最后发现居然是各个模块的dma乱用引起的. A8上的音频mcasp用了两个dma通道…… TI给的simcop里面imx实现的swosd又用 ...
- UISwitch(开关控件)、UISegmentedControl(分段控件)
一.UISwitch 1.初始化 UISwitch *s1 = [[UISwitch alloc]initWithFrame:CGRectMake(50, 170, 100, 200)]; 2.设 ...