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

news/2024/12/26 14:45:54/

文章目录

  • 一、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个职位,对女生超级友好!

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