DDR学习心得(一)

news/2024/10/23 9:36:25/

前言

最近在学习DDR3/DDR4相关知识,从中总结了一些心得,想放在CSDN上记录下来。之前在CSDN上看了不少大神的帖子,对我的学习颇有帮助,现在我也想把我的学习进程记录下来,希望可以和各位大神进行技术交流。这也是我第一次写技术文章,如有错误还请各位及时指正

一、SDRAM介绍及DDR3的结构

SDRAM从发展到现在已经经历了五代,分别是:第一代SDR SDRAM,第二代DDR SDRAM,第三代DDR2 SDRAM,第四代DDR3 SDRAM,第五代DDR4 SDRAM。
SDRAM:(Synchronous Dynamic Random Access Memory,同步动态随机存取存储器),是在DRAM的基础上发展而来,为DRAM的一种,同步是指Memory工作需要同步时钟,内部命令的发送与数据的传输都以时钟为基准;动态是指存储阵列需要不断的刷新来保证数据不丢失;随机是指数据不是线性依次存储,而是由指定地址进行数据读写。
下面,我们来了解一下DDR3内部结构。 DDR3的内部是一个存储阵列,类似于 一张excel表格,有相应的行(row)和列(column),我们可以通过行和列的编号来快速找到我们所需要的格子。而每一张表格我们也对其进行编号,我们称之为存储单元,这也就是我们常说的逻辑Bank(L-Bank)。
而存储单元中的每个格点,我们称之为cell。下图中黑色格点的地址为B1,R6,C5,如果寻址命令为B1,R6,C5,那么存储在这个地址中的数据将被读取出来。
在这里插入图片描述
注意:要搞清楚地址和数据的关系。把内存看成是一个大仓库,地址就是小仓库的门牌号,数据就像存放在仓库中的货物。寻址就类似通过门牌号找到数据的位置,读取或写入数据就类似把货物从仓库中取出来或者存进去。
那么每个cell中的数据量是多少呢,这就涉及到了位宽的概念。DDR的规格一般都会标注x4、x8、x16等字样,这个x后面的数字就代表DDR芯片的位宽。分别为4bit,8bit,16bit位宽的芯片。芯片中每个cell中存储的数据量和位宽是相等的,也就是说对于x4、x8、x16规格的芯片,他们内部的每个cell中存储的数据量分别为4bit,8bit,16bit。
除了逻辑Bank外,DDR3系统还存在物理Bank的概念。也叫做RANK,对SDRAM器件而言,常见的单Die数据位宽为4Bit(x4),8Bit(x8)和16Bit(x16)配置。对于现代的64Bit计算机而言,需要多个SDRAM拼接才可以完成所需的数据位宽。以常见的x8配置的SDRAM颗粒而言,需要8颗芯片拼接完成64Bit的数据位宽,这样,在Memory controller寻址一个数据单元时,8组芯片都会被选中,因此这8组芯片公用一个Cs_n信号,我们称之为1个RANK。

二、DDR3容量计算与BANK的理解

DDR容量计算个人认为最简单的方法就是 地址数x位宽 ,也可以理解为用cell数量x每个cell单元的数据量
在这里插入图片描述
这张图想必很多人都看到过,这是一颗位宽为8bit的DDR3架构图,行地址复用线为14根,列地址复用线为10根,Bank数量为8(2^3)。那么这颗芯片的地址数就为:
2的14次方×2的10次方×2的三次方=128M个地址
128M×8bit=1Gb
因此此芯片存储的数据量为1Gbit,又因为8bit=1B,所以1Gb=128MB。这也就是我们日常所说的128MB的内存条。当然,这张图片最上面已经标出了128Meg×8,这个128Meg的意思就是此芯片有128M个地址(128M个cell)
然后位宽为8,就可以直接算出来容量的大小。
还有一些标识比如16 Meg x 16 x 8 Banks,这个16Meg则代表的是一个Bank中cell的数量,16为16bit位宽,8为Bank的数量。
像上图那个8bit位宽的芯片,想要组成一个RANK需要8个芯片组合在一起,也就是组成1GB的内存条,CPU可以访问的内存大小为1GB。当CPU对内存进行访问时,给出一个类似于B1,R6,C5的地址,此时CPU认为只有一块内存,只会给出一个地址,但是拼接起来的8个芯片都会收到此地址,他们会将相应地址中的数据传出来,每颗芯片传出8bit数据,八颗芯片共64bit组成一个RANK.

三、DDR3数据传输

1.预取

DDR一大特点就是预取特性,第一代DDR为2-bit预取,第二代为4-bit预取,第三代为8-bit预取,一些公司将其称为8-n-Prefetch技术,这里的8-bit或8-n代表的是8“位”数据,也就是说DDR芯片每次预取的数据量为 8×位宽 个bit,比如一个8bit位宽的DDR3芯片,那么在每个DDR内部逻辑处理时钟(此时钟频率为DDR的核心频率)的上升沿,都有64bit数据以并行的方式被取出,注意预取时采取的方式是并行,而传输时采取的方式为串行。中间经过复杂的并行转串行结构最后输出数据,大致意思如下图所示。
在这里插入图片描述
说的简单一些,假如外部数据位宽8bit,DDR3内部就按8*8的位宽把八个相邻的数据一次读出来再并串转换输出,所以它内部100MHz就可以达到800MHz的数据率。以此来达到一个提速的目的。

2.传输速率

由于计算机现在一个RANK大多为64-bit,所以内存条每次传输的数据就为64-bit。我们首先把DDR芯片时钟引脚的频率称为工作频率,而DDR传输的方式是在时钟的上升沿和下降沿各传输一次,因此传输速率就是工作频率的二倍,也就是说;
每秒钟传输的次数=工作频率×2
传输的数据量=每秒钟传输的次数×64bit=工作频率×2×64bit
那么工作频率与核心频率是什么关系呢,我们通过一个简单的例子来看一下
就以上面图中那个8-bit位宽的128MB芯片为例,假设其核心频率为100MHz,每次预取的数据量为64-bit,但是此芯片共有八根数据线,那么意味着每根数据线要以串行的方式在10ns内输出8-bit数据,由于DDR上升沿和下降沿各传输1个bit,那么只需要在10ns内产生4次时钟,则此时钟周期为2.5ns,频率为400MHz,此频率就为DDR芯片时钟引脚的频率,也就是工作频率。可以看出:
工作频率=核心频率×4
传输速率=工作频率×2=核心频率×4=核心频率×预取数
那么内存每秒的数据量是多少呢
在这里插入图片描述
拿核心频率100MHz,位宽8bit的DDR3举例,八个DDR颗粒组成一个位宽为64bit的内存。此条内存每次传输的数据量都为64bit
传输速率=100MHz×8=800M次
也就是说每秒传输数据次数为800M次,每次传输64bit,那么总数据量为
总数据量=800M×64bit÷8=6400MBytes=6.4GB
可以看到,核心频率为100MHz的DDR3的带宽已经达到6.4GB/s了,可以看出,DDR技术对传输速率的提升是十分巨大的。


http://www.ppmy.cn/news/180990.html

相关文章

PCIE设备的x1,x4,x8,x16有什么区别?

主板上的扩展插槽曾经是多种多样的,例如曾经非常流行的组合就是PCI插槽搭配AGP插槽,其中AGP插槽主要用在显卡上,而PCI插槽的用途则更广一些,不仅有用在显卡上,还能用于扩展其它设备,如网卡、声卡、调制解调…

常见PCIE X1/X4/X8/X16插槽作用与区别

一、现在PCI-E插槽已经成为了主板上的主力扩展插槽。基本集中在PCI-E x1/x4/x8/x16四种上,有何作用? 具体作用是: 1、显卡会用到PCI-E插槽。PCI-E 3.0 x16能够满足任何高性能显卡的需求。 2、独立声卡、独立网卡、USB 3.0/3.1接口扩展卡、RAI…

CorelDRAW X8最新版本安装使用教程

这个版本,是小编无限制的第四个CDR版本,经历二十多年的发展与蜕变,CorelDRAW系列已发布了22个版本,最近推出的CorelDRAW 2022是此系列中的最新版本。一般来说,我都喜欢用最新的版本,某些人说什么印刷厂只用…

PCI-E x1/x4/x8/x16四种插槽区别是什么

我们知道,为了满足工业使用领域的扩展需要,工控机都会配备PCIe插槽,PCIe属于高速串行点对点双通道高带宽传输,所连接的设备分配独享通道带宽,不共享总线带宽,主要支持主动电源管理,错误报告&…

PCI-E x1/x4/x8/x16四种插槽区别是什么?具体有什么作用?

PCI-E x1/x4/x8/x16四种插槽区别是什么?具体有什么作用? 老许生活之体验 发布时间:18-08-0903:26教育达人 一、现在PCI-E插槽已经成为了主板上的主力扩展插槽。基本集中在PCI-E x1/x4/x8/x16四种上,有何作用? 具体作…

PAT A1162 Postfix Expression

1162 Postfix Expression 分数 25 作者 陈越 单位 浙江大学 Given a syntax tree (binary), you are supposed to output the corresponding postfix expression, with parentheses reflecting the precedences of the operators. Input Specification: Each input file …

软考A计划-电子商务设计师-电子商务系统开发知识

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

【ARMv8 SIMD和浮点指令编程】NEON 加法指令——加法都能玩出花

向量加法包括常见的普通加指令,还包括长加、宽加、半加、饱和加、按对加、按对加并累加、选择高半部分结果加、全部元素加等。如果你和我一开始以为的只有一种普通加,那就太小看设计者了!同时这么多加法指令的确会提升我们设计程序的效率&…