DDR内存技术原理分析讲解

标签:RF射频DRAM
分享到:

DRAM(Dynamic Random Access Memory,动态随机存取存储器)是一种半导体存储器,对于DRAM来说,周期性地充电是一个无可避免的要件。由于这种需要定时刷新的特性,因此被称为“动态”存储器。本文将详细介绍DRAM的基本组成、工作原理、基本命令与时序参数。

1

DRAM基本组成

对于DRAM,其主要由行和列组成,每一个bit中都是由类似右下图的类晶体管的结构组成,对于sdram的数据,可以通过控制column和row就可以访问sdram的随机地址的内容。

RF, 射频, DRAM

·读取某一个bit的状态,就是选中word line,那么图示中的晶体管M1就会导通,通过bit line的sense就可以感知到这个时候电容Cs上的状态,例如,现在如果这个bit的状态为1,那么导通之后就会从bit line上得到1,反之也是同样的道理。

·向某一bit写入1,首先通过row decoder选中word line,将会导致m1导通,那么bit line为1,会导致电容Cs充电,导致其电平为1,如果要写入,那么bit line的电平 为0,将会导致电容Cs放电,致使此时的电平为0。

由上面可以看出一个位只能表示一个bit,那么我们想读取多个位的时候,该怎么办呢?那就出现了ddr中的bank的概念,由多个memory array就组成了一个bank,如下图,一次可以读取2bit/4bit/8bit的数据:

RF, 射频, DRAM

由多个bank就可以组成一个memory device,如下图,一个dram的芯片,由8个banks组成,而每个bank由4个memory array构成,而此时每个bank输出4个bit的I/O bus,那么为什么会出现bank的概念呢?动态内存区别于静态内存要定时刷新,每读取一个状态的时候,都需要重新充电。如果没有采用bank,假设我们现在要读取01-08地址的数据,当读取01的地址后,要等这个bank自刷新后才能读取02地址的值,而采用8个bank之后,没有这类问题,例如我们读取完01地址之后,那么读取02,因为02与01的控制方式不同,所以对于这段时间01可以后台的完成自刷新,依次类推,那么就可以很好的解决动态内存需要刷新的问题。

RF, 射频, DRAM

上图中,对于RANK、DIMM等在深入浅出DDR系列(1)——DDR原理篇中已经详细介绍了。

2

DDR工作原理

了解了DDR的基本组成后,我们来看看DDR如何来完成一次的读写过程。如下图所示,DRAM 的相关操作在内部大概可以分为以下的四个阶段:

RF, 射频, DRAM

·command transport and decode: 在这个阶段,Host 端会通过 Command Bus 和 Address Bus 将具体的 Command 以及相应参数传递给 DRAM。DRAM 接收并解析 Command,接着驱动内部模块进行相应的操作。其中会根据将addr bus上的数据解码成对应的row address和通过bank control解码后得到对应的bank,其次对应的column也会解码得到对应的地址

**·in bank data movement: **在这个阶段,第一阶段发送需要读取的 Column 的地址给 DRAM。然后 DRAM 再将 Active Command 所选中的 Row 中,DRAM 就将 Memory Array 中的数据从 DRAM Cells 中读出到 Sense Amplifiers,或者将数据从 Sense Amplifiers 写入到 DRAM Cells。

·in device data movement: 这个阶段中,数据将通过 IO 电路缓存到 Read Latchs 或者通过 IO 电路和 Write Drivers 更新到 Sense Amplifiers。

**·system data transport: **在这个阶段,进行读数据操作时,SDRAM 会将数据输出到数据总线上,进行写数据操作时,则是 Host 端的 Controller 将数据输出到总线上。

在上述的四个阶段中,每个阶段都会有一定的耗时,例如数据从 DRAM Cells 搬运到 Read Latchs 的操作需要一定的时间,因此在一个具体的操作需要按照一定时序进行。同时,由于内部的一些部件可能会被多个操作使用,例如读数据和写数据都需要用到部分 IO 电路,因此多个不同的操作通常不能同时进行,也需要遵守一定的时序。此外,某些操作会消耗很大的电流,为了满足 SDRAM 设计上的功耗指标,可能会限制某一些操作的执行频率。

3

DRAM基本命令

对于一款ddr,我们需要知道通过什么样的方式来控制完成我们需要,我们来看看ddr的状态,ddr的工作就是在这几个状态之间切换:

RF, 射频, DRAM

在芯片上电后,完成初始化后,dram处于idle阶段,上图是需要进入各个阶段的时候,应该需要进行那些基本的操作,对于ddr使用比较频繁的几个基本命令访问方式如下

·刷新模式: 储体中电容的数据有效是有时间限制的,所以为了保证数据的不丢失,所以要对ddr进行定时的刷新,SDRAM内部有一个行地址生成器(也称刷新计数器)用来自动的依次生成行地址。由于刷新是针对一行中的所有存储体进行。该模式是由Host主动控制DRAM完成刷新,存储体中电容的数据有效保存期上限是64ms(毫秒,1/1000秒),也就是说每一行刷新的循环周期是64ms。

·自我刷新模式: 当系统进入低功耗模式,只需要发送一条 SRF指令,主要用于休眠模式低功耗状态下的数据保存,比较常见的应用是STR(Suspend to RAM,休眠挂起于内存)。就进入了该模式,此时不再依靠系统时钟工作,而是根据内部的时钟进行刷新操作。期间除了CKE之外的所有外部信号都是无效的(无需外部提供刷新指令),只有重新使CKE有效才能退出自刷新模式并进入正常操作状态。

·MRS模式(mode register set): 模式寄存器中的数据控制着 DDR2 SDRAM的操作模式.它控制着 CAS 延迟, 突发长度, 突发顺序, 测试模式, DLL复位, WR等各种选项,支持着 DDR2 SDRAM 的各种应用. 模式寄存器的默认值没有被定义, 所以上电之后必须按规定的时序规范来设定模式寄存器的值。

·EMRS 扩展模式寄存器: 存储着激活或禁止DLL的控制信息, 输出驱动强度, ODT 值的选择 和附加延迟等信息。

·预充电: 对一行读写操作后,关闭现有工作行,准备打开新行的操作就是预充电。

·读过程: 访问操作开始ACT一个激活命令,主要是激活bank和rol,就等于选通了某一Bank的某一行,接着发送一个read指令,就可以通过数据总线将数据送出去了,然后就进行预充电,恢复到读写的状态,预充电完成后,就恢复到idle状态。

·写过程: 与读过程基本类似。

DRAM的基本命令是通过操作各种控制信号/地址信号的组合来完成,下表是DRAM的命令表:

RF, 射频, DRAM

4

DDR的时序参数

4.1 Row Active Command

在进行数据的读写前,Controller 需要先发送 Row Active Command,打开 DRAM Memory Array 中的指定的 Row。Row Active Command 的时序如下图所示:

RF, 射频, DRAM

tRCD:RAS-to-CAS Delay(tRCD),内存行地址传输到列地址的延迟时间。

Row Active Command 通过地址总线指明需要打开某一个 Bank 的某一个 Row。DRAM 在接收到该 Command 后,会打开该 Row 的 Wordline,将其存储的数据读取到 Sense Amplifiers 中,这一时间定义为 tRCD(RCD for Row Address to Column Address Delay)。DRAM 在完成 Row Sense 阶段后,Controller 就可以发送 Read 或 Write Command 进行数据的读写了。这也意味着,Controller 在发送 Row Active Command 后,需要等待 tRCD 时间才能接着发送 Read 或者 Write Command 进行数据的读写。

tRAS: Row Active Time,内存行地址选通延迟

由于 DRAM 的特性,Row 中的数据在被读取到 Sense Amplifiers 后,需要进行 Restore 的操作。Restore 操作可以和数据的读取同时进行,即在这个阶段,Controller 可能发送了 Read Command 进行数据读取。

DRAM 接收到 Row Active Command 到完成 Row Restore 操作所需要的时间定义为 tRAS(RAS for Row Address Strobe)。

Controller 在发出一个 Row Active Command 后,必须要等待 tRAS 时间后,才可以发起另一次的 Precharge 和 Row Access。

4.2 Column Read Command

Controller 发送 Row Active Command 并等待 tRCD 时间后,再发送 Column Write Command 进行数据写入。数据 Burst Length 为 8 时的 Column Write Command 时序如下图所示:

RF, 射频, DRAM

tCWD/tCL/tCWL:内存CAS延迟时间

Column Write Command 通过地址总线 A[0:9] 指明需要写入数据的 Column 的起始地址。Controller 在发送完 Write Command 后,需要等待 tCWD (CWD for Column Write Delay) 时间后,才可以发送待写入的数据。tCWD 在一些描述中也称为 tCWL(CWL for Column Write Latency)

tWR(WR for Write Recovery)

DRAM 接收完数据后,需要一定的时间将数据写入到 DRAM Cells 中,这个时间定义为 tWR(WR for Write Recovery)。该值说明在一个激活的bank中完成有效的写操作及预充电前,必须等待多少个时钟周期。这段必须的时钟周期用来确保在预充电发生前,写缓冲中的数据可以被写进内存单元中。同样的,过低的tWD虽然提高了系统性能,但可能导致数据还未被正确写入到内存单元中,就发生了预充电操作,会导致数据的丢失及损坏。

4.3 Precharge Command

要访问 DRAM Cell 中的数据,需要先进行 Precharge 操作。相应地,在 Controller 发送 Row Active Command 访问一个具体的 Row 前, Controller 需要发送 Precharge Command 对该 Row 所在的 Bank 进行 Precharge 操作。下面的时序图描述了 Controller 访问一个 Row 后,执行 Precharge,然后再访问另一个 Row 的流程。

RF, 射频, DRAM

DRAM 执行 Precharge Command 所需要的时间定义为 tRP(RP for Row Precharge)。Controller 在发送一个 Row Active Command 后,需要等待 tRC(RC for Row Cycle)时间后,才能发送第二个 Row Active Command 进行另一个 Row 的访问。

从时序图上我们可以看到,tRC = tRAS + tRP,tRC 时间决定了访问 DRAM 不同 Row 的性能。在实际的产品中,通常会通过降低 tRC 耗时或者在一个 Row Cycle 执行尽可能多数据读写等方式来优化性能。

4.4 Row Refresh Command

一般情况下,为了保证 DRAM 数据的有效性,Controller 每隔 tREFI(REFI for Refresh Interval) 时间就需要发送一个 Row Refresh Command 给 DRAM,进行 Row 刷新操作。DRAM 在接收到 Row Refresh Command 后,会根据内部 Refresh Counter 的值,对所有 Bank 的一个或者多个 Row 进行刷新操作。

DRAM 刷新的操作与 Active + Precharge Command 组合类似,差别在于 Refresh Command 是对 DRAM 所有 Bank 同时进行操作的。下图为 DRAM Row Refresh Command 的时序图:

RF, 射频, DRAM

DRAM 完成刷新操作所需的时间定义为 tRFC(RFC for Refresh Cycle)。

tRFC 包含两个部分的时间,一是完成刷新操作所需要的时间,由于 DRAM Refresh 是同时对所有 Bank 进行的,刷新操作会比单个 Row 的 Active + Precharge 操作需要更长的时间;tRFC 的另一部分时间则是为了降低平均功耗而引入的延时,DRAM Refresh 操作所消耗的电流会比单个 Row 的 Active + Precharge 操作要大的多,tRFC 中引入额外的时延可以限制 Refresh 操作的频率。

4.5 Read Cycle

一个完整的 Burst Length 的 Read Cycle 如下图所示:

RF, 射频, DRAM

下面是DDR常见的一些参数及定义如下:

RF, 射频, DRAM

上述的 DRAM Timing 中的一部分参数可以编程设定,例如 tCAS、tAL、Burst Length 等。这些参数通常是在 Host 初始化时,通过 Controller 发起 Load Mode Register Command 写入到 DRAM 的 Mode Register 中。DRAM 完成初始化后,就会按照设定的参数运行。

5

性能分析

在学习完DDR的基本操作和时序参数之后,我们就看看性能的影响。当频率和位宽固定后,带宽也就不可更改,但是在内存的工作周期内,不可能总处于数据传输的状态,因为要有命令、寻址等必要的过程。那么这些操作占用的时间越短,内存工作的效率就越高,性能也就越好。

对于我们来说,最好的方法是提高频率,但是提高频率会受多方面的影响,还有什么办法提高内存访问采取速度。

**·多通道: **现代内存控制器从北桥移入CPU内部,而内存控制器都可以同时操作多个通道。比如现在的笔记本开始支持双通道、三通道,如果数据分布在不同通道的内存条上,内存控制器就可以不用管上面的这些延迟时序,同时可以读取它们,速度可以增加两倍,甚至三倍。

·交织方式(Interleaving): 同一块内存分布到不同的通道中去,这样无论Cache命中与否都可以同时存取,多通道的技术才能发挥更大的用处。

·超频内存: 也就是提升DDR的频率来增加速度

总结

对于DDR的读写以及一些时序参数的原理性知识后,下一步就进入到DDR的驱动调式,主要是对于一款控制器,我们该如何去调试DDR。其实对于DDR的调试,主要的读写的控制,都是由DDR的控制器完成了,我们主要是通过MRS模式/EMRS模式来完成对于DDR参数的配置,而对于MRS模式的使用,已经集成到DDR控制器中完成了,我们只需要根据控制器手册配置相应的寄存器就可以完成对于DDR调试。

继续阅读
加强先进芯片制造:散射检测仪与CD-SEM的结合为关键

随着芯片制造工艺的不断迭代更新,对于芯片检测技术的要求也日益提高。在传统的制程检测方法中,传送带承载芯片逐一通过光学显微镜、SEM(扫描电子显微镜)等仪器进行检测,但这种方式存在检测精度低、追溯性差等问题。为此,散射检测仪和CD-SEM结合应运而生,成为目前先进芯片制造过程中的重要检测手段之一。本文将介绍散射检测仪和CD-SEM结合的原理、优势及应用情况,探讨其在先进芯片制造方面的重要作用。

浅谈射频环行器

对于射频工程师来说,射频环行器是有很多应用的,在整个电路设计过程中能够起到很大的作用。它是将进入其任一端口的入射波,按照由静偏磁场确定的方向顺序传入下一个端口的多端口器件,又叫射频隔离器。射频或微波环行器或隔离器是通常具有三个,有时是四个端口的设备,它们用于射频系统设计,需要将电源从一个端口传输到另一个端口,同时将电源与另一个端口隔离。

还在为射频电路设计犯愁吗?看这一篇就够了

电路设计是非常复杂的一门学科,可以说是学无止境,几乎没有一个人说自己精通所有的电路设计,即使是最自信的设计人员,对于射频电路也往往望而却步,因为它会带来巨大的设计挑战,并且需要专业的设计和分析工具。今天我们就带大家一起看看在射频 PCB 设计中的一些技巧,帮助你事半功倍。

车际互联,出行多元

智能汽车是目前科技领域的热门话题,与传统汽车相比,它不仅在驾乘体验上提供更加舒适、安全和高效的服务,还可以实现与其他车辆、基础设施和云端等设备的互联互通,构建一个智慧出行的生态系统。因此,汽车行业正在经历前所未有的变革,被称为“新四化”,即电气化、网联化、智能化和共享化。其中,网联化是这场变革的基础和核心,指的是汽车通过各种通信技术与车内设备、车际设备和云端设备进行车联网,实现数据交换、信息共享和服务协同。

CAN报文自定义协议转发操作原理与步骤

在CAN总线通信的应用领域中,很多客户需要将CANID放在CAN报文中,这样更方便接入不同的设备,有利于用户通过模块更方便地组建自己的网络,使用自定的应用协议。但是要实现这样的应用,用户往往需要不停地去修改参数。