(一)DDR 基础介绍——(演进、构成、存储原理)

news/2024/2/28 11:40:37

文章目录

  • 一、DDR的演进变化
  • 二、DDR的内存组成
  • 三、DDR的内存原理

  我们常说的DDR,亦即DDR SDRAM,指的是PC端或者消费电子(手机,平板)中的内存,是 “Double Data Rate Synchronous Dynamic Random Access Memory”(双数据率同步动态随机存储器)的简称,它 允许在时钟脉冲的上升沿和下降沿传输数据,其主要作用是为了和CPU频率同步,进而大大提高数据传输效率

  SDRAM从发展到现在已经经历了五代,分别是:

  • 第一代SDR SDRAM,单边沿传输数据;
  • 第二代DDR SDRAM,允许在时钟脉冲的上升沿和下降沿传输数据;
  • 第三代DDR2 SDRAM,拥有两倍于上一代DDR内存预读取能力(即4bit数据读预取能力);
  • 第四代DDR3 SDRAM,具备更低的工作电压(1.5v),240线接口,支持8bit预读;
  • 第五代DDR4 SDRAM,16bit预取机制(DDR3为8bit),同样内核频率下理论速度是DDR3的两倍,;
  • 目前已经发展到DDR5 SDRAM;

   DDR核心技术点就在于(1)双沿传输。(2)预取prefetch。
   DDR的频率(1)核心频率、(2)时钟频率、(3)数据传输频率;核心频率就是内存的工作频率;DDR1内存的核心频率是和时钟频率相同的,到了DDR2和DDR3时才有了时钟频率的概念,就是将核心频率通过倍频技术得到的一个频率。数据传输频率就是传输数据的频率。DDR1预读取是2位,DDR2预读取是4位,DDR3预读取是8位…
   与DDR相比LPDDR内存全称是Low Power Double Data Rate SDRAM,中文意为低功耗双倍数据速率内存,又称为mDDR(Mobile DDR SDRM),主要针对于移动端电子产品
   LPDDR4X可以看作是LPDDR4的省电优化版本,比LPDDR4功耗更低、更省电;目前市面上主流旗舰手机内存使用的都是LPDDR4X和LPDDR4,由于二者经常同时出现,名字也十分相似,所以很容易让人混淆。

一、DDR的演进变化

  DDR到DDR5的主要变化主要表现在DDR的性能,容量和省电三个方面:IO的速率也越来越高,规范的工作电压越来越低,芯片容量越来越大。除了电压,容量和IO的速率变化之外,还包含Bank,Bank Group,Prefetch和Burst Length的演进,bank数越来越多,到DDR4出现bank group,prefetch也从2n增加到4n,8n。
  详细的变化图示:
      在这里插入图片描述
  DRAM是怎么实现用比较低的核心传输频率来满足日益高涨的高速IO传输速率的需求呢?这就是prefetch来实现的。

  • 从DDR开始到DDR3很好理解,Prefetch相当于DRAM core同时修了多条高速公路连到外面的IO口,来解决IO速率比内部核心速率快的问题,IO数据速率跟核心频率的倍数关系就是prefetch
  • burst length的长度跟CPU的cache line大小有关。Burst length的长度有可能大于或者等于prefetch。但是如果prefetch的长度大于burst length的长度,就有可能造成数据浪费,因为CPU一次用不了那么多。所以从DDR3到DDR4,如果在保持DDR4内存data lane还是64的前提下,继续采用增加prefetch的方式来提高IO速率的话,一次prefetch取到的数据就会大于一个cache line的大小 (512bits),对于目前的CPU系统,反而会带来性能问题。
  • DDR4出现了Bank Group,这就是DDR4在不改变prefetch的情况下,能继续提升IO速率的秘密武器。DDR4利用Bank group的interleave,实现IO速率在DDR3基础上进一步提升。

二、DDR的内存组成

  DDR SDRAM内存条从外观上可以看出由很多内存颗粒组成。从内存控制器到内存颗粒内部逻辑,笼统上讲从大到小为:Channel>DIMM>Rank>Chip>Bank>Row/Column,如下图:
在这里插入图片描述

  • Channel:一个主板上可能有多个插槽,用来插多根内存。这些槽位分成两组或多组,组内共享物理信号线。这样的一组数据信号线、对应几个槽位(内存条)称为一个channel(通道)。简单理解就是DDRC(DDR控制器),一个通道对应一个DDRC。CPU外核或北桥有两个内存控制器,每个控制器控制一个内存通道。内存带宽增加一倍。(理论上)
  • DIMM(dual inline memory module)是主板上的(一条可传输64bit数据的内存PCB,也就是内存颗粒的载体)。
  • Rank一组内存芯片的集合,当芯片位宽x芯片数=64bits(内存总位宽)时,这些芯片就组成一个Rank。一般是一个芯片位宽8bit,然后内存每面8个芯片,那么这一面就构成一个Rank(为了提高容量,有些双面内存条就有两个rank。在DDR总线上可以用一根地址线来区分当前要访问的是哪一组)。同一个Rank中的所有芯片协作来共同读取同一个Address(一个Rank8个芯片 * 8bit = 64bit),这个Address的数据分散在这个Rank的不同芯片上。设计Rank的原因是这样可以使每个芯片的位宽小一些,降低复杂度。
  • Chip内存条上的一个芯片俗称内存颗粒。由图中是由8个bank组成了一个memory device。
  • Bank:Bank是一个逻辑上的概念。一个Bank可以分散到多个Chip上,一个Chip也可以包含多个Bank。Bank和Chip的关系可以参考下面的图,每次读数据时,选定一个Rank,然后同时读取每个chip上的同一bank。
  • Row/Column组成的Memeory Array:Bank可以理解为一个二维数组bool Array[Row][Column]。而Row/Column就是指示这个二维数组内的坐标。注意读取时每个Bank都读取相同的坐标。

三、DDR的内存原理

  如DDR4芯片有20根地址线(17根Address、2根BA、1根BG),16根数据线。在搞清楚这些信号线的作用以及地址信号为何还有复用功能之前,我们先抛出1个问题。假如我们用20根地址线,16根数据线,设计一款DDR,我们能设计出的DDR寻址容量有多大?

Size(max)=(2^20) * 16=1048576 * 16=16777216bit=2097152B=2048KB=2MB。

  但是事实上,该DDR最大容量可以做到1GB,比传统的单线编码寻址容量大了整整512倍,它是如何做到的呢?答案很简单,分时复用。我们把DDR存储空间可以设计成如下样式:
  首先将存储空间分成两个大块,分别为BANK GROUP0和BANK GROUP1,再用1根地址线(还剩19根),命名为BG,进行编码。若BG拉高选择BANK GROUP0,拉低选择BANK GROUP1。(当然你也可以划分成4个大块,用2根线进行编码)
在这里插入图片描述
  此时,我们将DDR内存颗粒划分成了2个BANK GROUP,每个BANK GROUP又分成了4个BANK,共8个BANK区域,分配了3根地址线,分别命名为BG0,BA0,BA1。然后我们还剩余17根信号线,每个BANK又该怎么设计呢?这时候,就要用到分时复用的设计理念了。
  剩下的17根线,第一次用来表示行地址,第二次用来表示列地址。现在修改为传输2次地址,在传输1次数据,寻址范围最多被扩展为2GB。虽然数据传输速度降低了一半,但是存储空间被扩展了很多倍。这就是改善空间。
所以,剩下的17根地址线,留1根用来表示传输地址是否为行地址

  • 在第1次传输时,行地址选择使能,剩下16根地址线,可以表示行地址范围,可以轻松算出行地址范围为2^16=65536个=64K个。
  • 在第2次传输时,行地址选择禁用,剩下16根地址线,留10根列地址线表示列地址范围,可以轻松表示的列地址范围为2^10=1024个=1K个,剩下6根用来表示读写状态/刷新状态/行使能、等等复用功能。
  • 这样,我们可以把1个BANK划分成67108864个=64M个地址编号。如下所示
  • 所以1个BANK可以分成65536行,每行1024列,每个存储单元16bit。
所以1个BANK可以分成65536行,每行1024列,每个存储单元16bit。每行可以存储1024*16bit=2048B=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的存储原理以及接口定义和寻址方式。
  但是细心的同学发现一个问题,对于每一个bank,按照正常的10位数据,那么col应该是1024,而现在是128,是什么原因呢?
在这里插入图片描述
  那么问题又来了,为什么Column Address的寻址能力只有128呢?请继续看下图:
在这里插入图片描述
  在上图中,可以清晰地发现,10bits的Column Address只有7bits用于列地址译码!列地址0,1,2并没有用!!!列地址0,1,2,这3bits被用于什么功能了?或者是DDR的设计者脑残,故意浪费了这三个bits?在JESD79-3规范中有如下的这个表格:
在这里插入图片描述
  可以发现,Column Address的A2,A1,A0三位被用于Burst Order功能,并且A3也被用于Burst Type功能。由于一般情况,我们采用的都是顺序读写模式(即{A2,A1,A0}={0,0,0}),所以此时的A3的取值并无直接影响,这个后面章节中重点介绍。
  CA[2:0]的值决定了一次Burst sequence的读写地址顺序。

比如一次Burst Read的时候如果CA[2:0]=3’b001表示低三位从地址1开始读取,CA3=0的时候按顺序读取12305674,CA3=1的时候交错
读取10325476对于Prefetch而言,正好是8N Prefetch,对于Burst而言对应BL8。
BC4其实也是一次BL8的操作,只是丢弃了后一半的数据。

  更形象地理解就是对于一个Bank里面的Memory Array,每个Memory Cell可以看作是一个Byte的集合体。CA[9:3]选中一行中的一个特定Byte,再由CA[2:0]选择从这个Byte的哪个位置开始操作。CA3既参与了列地址译码,也决定Burst是连续读取还是交错读取。Prefetch也决定了I/O Frequency和SDRAM Core Frequency之间的关系。

参考引用:
https://www.cnblogs.com/shengansong/archive/2012/09/01/2666213.html
https://blog.csdn.net/u012489236/article/details/107730731


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

相关文章

DDR内存大小计算以及MIG核配置

范围 本文适用于DDR内存大小计算以及MIG核配置。 DDR内存大小计算 DDR型号 DDR型号为 MT41K256M16TW-107 图2.1.1 图2.1.2 此片DDR行地址位宽为[14:0],列地址位宽为[9:0],BANK位宽为[2:0],数据16位 那么此片DDR 一个BANK的地址大小&…

操作系统-作业管理

“作业”一词几乎对于每一个人并不陌生,上幼儿园时开始小孩就要写做作业,家长要辅导作业,上了大学依然在写作业。甚至工作多年也尝尝听到同事见互相调侃要交作业。更加诧异得是好些专业领域也有这么一词。作业究竟意味着什么,在我…

实验篇(7.2) 15. 站对站安全隧道 - 多条隧道聚合(FortiGate-IPsec) ❀ 远程访问

【简介】虽然隧道冗余可以解决连接问题,但是当大量数据访问或要求访问不能中断时,隧道冗余就力不从心了。这种情况就要用到隧道聚合。但是对宽带的要求也高了,双端都至少需要二条宽带。 实验要求与环境 OldMei集团深圳总部部署了域服务器和ER…

低代码靠谱吗?实操一遍就知道了

一、前言 最近一段时间,“低代码”概念特别流行,有些人特别推崇它,也有些人对此不屑一顾。 推崇它的人认为,它有很多优点,比如说能够降低开发周期,提高系统开发效率,降低开发成本,学…

mysql学习整理

DML语言 DML语言 : 数据操作语言 数据库意义 : 数据存储、数据管理 用于操作数据库对象中所包含的数据 包括 : INSERT (添加数据语句)UPDATE (更新数据语句)DELETE(删除外键) Insert 语法 添加单条数据 语法: INSERT INTO 表名[(字段1,字段2,字段3,...)] VALUES(值1,值2,值…

git config --global core.autocrlf input (在检出代码时不自动转换行尾,在提交代码时自动将行尾转换为LF)

文章目录 git config --global core.autocrlf inputcore.autocrlf三种配置项(true、input、false)补充:git的检出(Checkout)和提交(Commit)git pull已包含检出(checkout操作&#xf…

常用API(Object,Objects,StringBuilder,Math,System,BigDecimal)

1:Object类 1:Object类的作用: 一个类要么默认继承Object类,要么间接继承了Object类,Object类是Java中的祖宗类。Object类的方法是一切子类都可以直接使用的,所以我们要学习Object类的方法。 2&#xff…

计算机未来五年最吃香的4个职位,对女生超级友好!

今年计算机毕业的学弟学妹对于找工作感觉到非常焦虑,不知道该哪个方向就业才有出路。很多同学感觉在学校好像什么都学了,又好像什么都没学到,先不说企业会不会招,自己就连投简历的勇气都没有,生怕大把的简历投出去就石…

Wallpaper壁纸提取得到tex文件,tex文件转图像,tex文件转png,tex文件提取壁纸,Wallpaper壁纸提取无法得到图像文件,RePKG-GUI提取得到tex文件而不是图像的解决方法

之前我们介绍了如何利用RePKG-GUI工具从Wallpaper壁纸的sence.pkg文件提取壁纸,但最近在提取壁纸时,我发现,有一小部分壁纸无法利用RePKG-GUI工具提取得到图像文件,而是会得到一个.tex类型的文件。 Bug是怎么产生的暂时不知道&am…

png显示黑色背景

问题:word打印的二维码png图片不能识别,画图板里面黑色的却可以识别,估计word能打bmp, 不能打png,然后测试 使用cimage加载png图片的时候,画到单文档里面变黑了,然后百度,把修改好的代码写到下面…

Frontiers in Microbiology:DAP-seq技术在猪苓C2H2转录因子PuCRZ1调控菌丝生长及渗透胁迫耐受性机制研究中的应用

猪苓(Polyporus umbellatus)是一种可食用的蘑菇,也是我国常用的菌类药材之一,至今已有2000多年的药用历史,在《神农本草经》、《本草纲目》、《本草求真》等典籍中均有记载。猪苓具有利尿、抗菌作用,近年来…

【玩转Docker小鲸鱼叭】虚拟化技术是什么?

到底什么是虚拟化? Docker 是一款基于容器虚拟化技术构建的软件,那到底什么虚拟化技术呢?在学习Docker之前,先简单了解下虚拟化技术。 虚拟化是云原生的实现基础,它能够帮助我们更加有效地利用物理计算机硬件。 虚拟…

【双曲几何学 02】什么是极点和极线?

一、说明 Pole and polar 对于几何学,是普遍的概念。可能高中就学过,问题是在双曲几何又用到这个概念,因此,这里再次强调理解这个概念 。为后边学习双曲几何扫清障碍。 二、基本概念 在几何学中,极点和极线分别是相对于…

运维数字化转型:用数字化思维重塑运维体系(文末送书五本)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

ASEMI代理光宝高速光耦LTV-5341参数,LTV-5341应用

编辑-Z LTV-5341参数描述: 型号:LTV-5341 储存温度Tstg:-55~125℃ 工作温度Topr:-40~110℃ 总输出电源电压(VCC –VEE):35V 平均正向输入电流IF:20mA 峰值瞬态输入电流IF(TRAN):1A 输入…

svn服务器 提交文件超慢,TortoiseSVN提交速度极慢

使用TortoiseSVN提交时,速度非常慢,约为3 kB/s。我做了一个更改,即将200MB文件添加到工作副本。工作副本包含245个文件,114个文件夹。我已经禁用了防病毒和备份软件。我已关闭图标叠加层。使用TortoiseSVN进行结账的速度非常快&am…

热销超极本iFunk翼S到底怎么样?

最近iFunk翼S又火了,很多人问小编这款超极本怎么样,作为iFunk翼的用户,小编还是很有话语权的,今天就和大家分享一下。 iFunk翼S是iFunk去年推出的爆款超极本iFunk翼的升级版,对于iFunk翼小编先来简单介绍一下。 去年10…

超材料 s参数反演 matlab,基于SISL的高介电常数超材料设计

1引言超材料(Metamaterials)是一种自然界中不存在的,由人工合成的具有超常物理性质的复合式材料。以相对介电常数和相对磁导率来描述其特性,其相对介电常数和相对磁导率可以为正也可以为负,因而被称为“超材料”[1]。在微波电路和系统的设计中,一般来讲,当材料的介电常数较高的…

Intel推出超极本和平板组合体:外观控大爱

超极本的理念是:薄、轻、快。对比如今的移动终端,传统PC在众人眼里已到风烛残年,笨重、缓慢、丑陋,用户体验差。虽然今年CES展会上的超极本博得众人眼球,现在它也过时了。 上周在北京召开的2012 intel开发者大会上&am…

超详细JDK1.8所有版本下载地址

文章目录 附JDK1.8安装与配置教程一、JDK官网二、查找JDK所有历史版本 JDK1.8即为JDK8,JDK8是目前是最成熟最稳定的版本,本文将详细介绍JDK所有历史版本的找寻方式,并详细介绍JDK1.8历史版本的找寻及下载。 附JDK1.8安装与配置教程 超详细JD…
最新文章