这两天正在学习FPGA如何控制DDR3的读写,找到一篇个人感觉比较有意义的文章,可以对DDR的内部结构有一个初步的了解。原文出处:http://blog.chinaunix.net/uid-28458801-id-3459509.html,感谢大神的付出。

首先,我们先了解一下内存的大体结构工作流程,这样会比较容量理解这些参数在其中所起到的作用。这部分的讲述运用DDR3的简化时序图。

DDR3的 内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就 可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑 Bank(Logical Bank,下面简称Bank)。

DDR3内部Bank示意图,这是一个NXN的阵列,B代表Bank地址编号,C代表列地址编号,R代表行地址编号。

如果寻址命令是B1、R2、C6,就能确定地址是图中红格的位置

目前DDR3内存芯片基本上都是8个Bank设计,也就是说一共有8个这样的“表格”。

寻址的流程也就是先指定Bank地址,再指定行地址,然后指列地址最终的确寻址单元。

目 前DDR3系统而言,还存在物理Bank的概念,这是对内存子系统的一个相关术语,并不针对内存芯片。内存为了保证CPU正常工作,必须一次传输完CPU 在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。控制内存与CPU之间数据交换的 北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,这个位宽就称为物理Bank(Physical Bank,有的资料称之为Rank)的 位宽。目前这个位宽基本为64bit。

在 实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(Row Active)。在此之后,将发送列地址寻址命令与具体的 操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被 定义为tRCD,即RAS to CAS Delay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以时钟周期(tCK,Clock Time)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,DDR3-800,tRCD=3,代表30ns的延迟。

图中显示的是tRCD=3

接 下来,相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的 I/O 接口之间还需要一定的时间(数据触发本身就有延 迟,而且还需要进行信号放大),这段时间就是非常著名的 CL(CAS Latency,列地址脉冲选通潜伏期)。CL 的数值与 tRCD 一样,以时 钟周期数表示。如 DDR3-800,时钟频率为 100MHz,时钟周期为 10ns,如果 CL=2 就意味着 20ns 的潜伏期。不过CL只是针对读取操作。

由 于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S- AMP通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时 钟上升沿开始,数据即已传向S-AMP,也就是说此时数据已经被触发,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间我们称之为 tAC(Access Time from CLK,时钟触发后的访问时间)。

图中标准CL=2,tAC=1

目前内存的读写基本都是连续的,因为与CPU交换的数据量以一个Cache Line(即CPU内Cache的存储单位)的容量为准,一般为64字节。而现有的Rank位宽为8字节(64bit),那么就要一次连续传输8次,这就涉及到我们也经常能遇到的突发传输的概念。突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(Burst Lengths,简称BL)。

在 进行突发传输时,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除 了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。

突发连续读取模式:只要指定起始列地址与突发长度,后续的寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输。

谈到了突发长度时。如果BL=4,那 么也就是说一次就传送4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码 (Data I/O Mask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的 数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个DQM 信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于 16bit位宽芯片,则需要两个DQM引脚。

在 数据读取完之后,为了腾出读出放大器以供同一Bank内其他行的寻址并传输数据,内存芯片将进行预充电的操作来关闭当前工作行。还是以上面那个Bank示 意图为例。当前寻址的存储单元是B1、R2、C6。如果接下来的寻址命令是B1、R2、C4,则不用预充电,因为读出放大器正在为这一行服务。但如果地址 命令是B1、R4、C4,由于是同一Bank的不同行,那么就必须要先把R2关闭,才能对R4寻址。从开始关闭现有的工作行,到可以打开新的工作行之间的 间隔就是tRP(Row Precharge command Period,行预充电有效周期),单位也是时钟周期数。

在不同Bank间读写也是这样,先把原来数据写回,再激活新的Bank/Row。

数据选取脉冲(DQS)

DQS 是DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双 向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是数据的同步信号。

在 读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,DQS生成时,芯片内部 的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要 求,对于DDR266,tAC的允许范围是±0.75ns,对于DDR333,则是±0.7ns,有关它们的时序图示见前文,其中CL里包含了一段DQS 的导入期。

DQS 在读取时与数据同步传输,那么接收时也是以DQS的上下沿为准吗?不,如果以DQS的上下沿区分数据周期的危险很大。由于芯片有预取的操作,所以输出时的 同步很难控制,只能限制在一定的时间范围内,数据在各I/O端口的出现时间可能有快有慢,会与DQS有一定的间隔,这也就是为什么要有一个tAC规定的原 因。而在接收方,一切必须保证同步接收,不能有tAC之类的偏差。这样在写入时,芯片不再自己生成DQS,而以发送方传来的DQS为基准,并相应延后一定 的时间,在DQS的中部为数据周期的选取分割点(在读取时分割点就是上下沿),从这里分隔开两个传输周期。这样做的好处是,由于各数据信号都会有一个逻辑 电平保持周期,即使发送时不同步,在DQS上下沿时都处于保持周期中,此时数据接收触发的准确性无疑是最高的。

在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿

3.容量的计算

上图为X8data的单颗DDR3架构图,行(Row)地址线复用14根,列(Column)地址线复用10根,Bank数量为8个,IO Buffer 通过8组数位线(DQ0-DQ7)来完成对外的通信,故此单颗DDR3芯片的容量为2的14次方乘2的10次方乘8乘8,结果为1Gbit,因为1B包含8bit,1GB/8=128MB。

如果我们要做成容量为1GB的内存条则需要8颗这样的DDR3内存芯片,每颗芯片含8根数位线(DQ0-DQ7)则总数宽为64bit,这样正好用了一个Rank。

假果还用128MB的DDR3芯片去做2GB内存条,结果就会有所不同。我们最好选用4根数位线(DQ0-DQ3),数量是16颗,这样也是用了一个Rank。

在K2的项目中我们要做容量为8GB的内存条,则数量用64颗128M的DDR3,这样位宽高达64X4=256bit,要做成4个Rank。

1.结构框图:

2.管脚功能描述

3.状态图:

Power on: 上电

Reset Procedure: 复位过程

Initialization: 初始化

ZQCL: 上电初始化后,用完成校准ZQ电阻。ZQCL会触发DRAM内部的校准引擎,

一旦校准完成,校准后的值会传递到DRAM的IO管脚上,并反映为输出驱动和ODT阻值。

ZQCS: 周期性的校准,能够跟随电压和温度的变化而变化。校准需要更短的时间窗口,

一次校准,可以有效的纠正最小0.5%的RON和RTT电阻。

Al:Additive latency.是用来在总线上保持命令或者数据的有效时间。

在ddr3允许直接操作读和写的操作过程中,AL是总线上的数据出现到进入器件内部的时间。

下图为DDR3标准所支持的时间操作。

Write Leveling:为了得到更好的信号完整性,DDR3存储模块采取了FLY_BY的拓扑结构,

来处理命令、地址、控制信号和时钟。FLY_BY的拓扑结构可以有效的减少stub的数量和他们的长度,

但是却会导致时钟和strobe信号在每个芯片上的flight time skew,这使得控制器(FPGA或者CPU)

很难以保持Tdqss ,tdss和tdsh这些时序。这样,ddr3支持write leveling这样一个特性,

来允许控制器来补偿倾斜(flight time skew)。存储器控制器能够用该特性和从DDR3反馈的数据调成DQS和CK之间的关系。

在这种调整中,存储器控制器可以对DQS信号可调整的延时,来与时钟信号的上升边沿对齐。

控制器不停对DQS进行延时,直到发现从0到1之间的跳变出现,然后DQS的延时通过这样的方式被建立起来了,由此可以保证tDQSS。

MRS: MODE Register Set, 模式寄存器设置。为了应用的灵活性,不同的功能、特征和模式等在四个在DDR3芯片上的Mode Register中,

通过编程来实现。模式寄存器MR没有缺省值,因此模式寄存器MR必须在上电或者复位后被完全初始化,

这样才能使得DDR可以正常工作。正常工作模式下,MR也可以被重新写入。模式寄存器的设置命令周期,

tMRD两次操作的最小时间,其具体时序图,如下图所示。模式寄存器,分为MR0、MR1、MR2和MR4。

MR0用来存储DDR3的不同操作模式的数据:包括突发长度、读取突发种类、CAS长度、测试模式、DLL复位等。

MR1用来存储是否使能DLL、输出驱动长度、Rtt_Nom、额外长度、写电平使能等。MR2用来存储控制更新的特性,

Rtt_WR阻抗,和CAS写长度。MR3用来控制MPR。

MPR: Multi-purpose register. 多用途寄存器。MPR的功能是读出一个预先设定的系统时序校准比特序列。

为了使能MPR功能,需要在MRS的寄存器MR3的A2位写1,并且在此之前需要将ddr3的所有bank处于idle状态;

一旦MPR被使能后,任何RD和RDA的命令都会被引入到MPR寄存器中,当MPR寄存器被使能后,

除非MPR被禁止(MR3的A2=0),否则就只有RD和RDA被允许。在MPR被使能的时候,RESET功能是被允许的。

Precharge Power Down: bank在in-progress命令后关闭

Active Power Down:bank在in-progress命令后依然打开

Idle:所有的bank必须预先充电,所有时序满足,DRAM的ODT电阻,RTT必须为高阻。

CWL:CAS write latency. 以时钟周期为单位,在内部写命令和第一位输入数据的时间延时,该单位始终为整数。

在操作过程中,所有的写延时WL被定义为AL(Additive Latency)+CWL。

Rtt: Dynamic ODT.DDR3引入的新特性。在特定的应用环境下为了更好的在数据总线上改善信号完整性,

不需要特定的MRS命令即可以改变终结强度(或者称为终端匹配)。在MR2中的A9和A10位设置了Rtt_WR。Ddr3中,

有两种RTT值是可以选择的,一种是RTT_Nom,另一种是RTT_WR;Rtt_Nom是在没有写命令的时候被选择的,

当有了写命令后,ODT就会变成Rtt_wr,当写命令结束后,又会回到Rtt_nom。也就是说,RTT在ODT使能后,出现,

当总线上没有数据的时候,采用的RTT值为RTT_nom;而当总线上有了数据后,要求此时的ODT的值为Rtt_wr。

具体的DDR3的ODT产生时序见图2。当ODT被使能后,必须要保持高电平ODTH4个时钟周期才可以有效;

如果写命令被放入寄存器并且ODT是高,那么ODT必须保持ODTH4或者ODTH8,这样ODT才可以有效。

ACT = ACTIVATE                        PREA = PRECHARGE ALL                           SRX = 自刷新推出

MPR = 多用处寄存器                 READ = RD,RDS4,RDS8                        WRITE=WR,WRS4,WRS8

MRS=模式寄存器集                   READ AP=RDAP,RDAPS4,RDAPS8               WRITE=WRAP,WRAPS4,WRAPS8

PDE=掉电进入                           REF=REFRESH                                           ZQCL=ZQ LONG CALIBRATION

PDX=掉电推出                           RESET=启动复位过程                                ZACS=ZA SHORT CALIBTATION

PRE=预充电                               SRE=自刷新进入

4、工作原理

在描述了上述的一些基本概念后,就可以对图1中的DDR3工作原理进行基本的描述了理解了。

首先,芯片进入上电,在上电最小为200us的平稳电平后,等待500usCKE使能,

在这段时间芯片内部开始状态初始化,该过程与外部时钟无关。在时钟使能信号前(cke),

必须保持最小10ns或者5个时钟周期,除此之外,还需要一个NOP命令或者Deselect命令出现在CKE的前面。

然后DDR3开始了ODT的过程,在复位和CKE有效之前,ODT始终为高阻。

在CKE为高后,等待tXPR(最小复位CKE时间),然后开始从MRS中读取模式寄存器。

然后加载MR2、MR3的寄存器,来配置应用设置;然后使能DLL,并且对DLL复位。

接着便是启动ZQCL命令,来开始ZQ校准过程。等待校准结束后,DDR3就进入了可以正常操作的状态。

对于基本的配置过程,现在就可以结束了。下面,结合CH1的控制器FPGA,说明对DDR3相关的配置。

上表中MRS可以设置Mode寄存器值

以                         上图为例CS#,RAS#,CAS#,WE#为L,L,H,H。则指令为Row/Bank Active;随后CS#拉高,command无效,

在第4个时钟周期这4个信号变为L,H,L,H,对照表格,指令为Read,经过几个时钟周期延迟,在3CLK后读数据。

5. 基本功能

DDR3 SDRAM是高速动态随机存取存储器,内部配置有8个BANK。DDR3 SDRAM使用8n预取结构,以获得高速操作。8n预取结构同接口组合起来以完成在I/O脚上每个时钟两个数据字的传输。DDR3  SDRAM的一个单次读或写操作由两部分组成:一是在内部DRAM核中进行的8n位宽四个时钟数据传输,另一个是在I/O脚上进行的两个对应n位宽、半时钟周期的数据传输。

对DDR3 SDRAM的读写操作是有方向性的突发操作,从一个选择的位置开始,突发长度是8或者是一个以编程序列的长度为4的Chopped突发方式。操作开始于Active命令,随后是一个Read/Write命令。Active命令同时并发含带地址位,以选择Bank和Row地址(BA0-BA2选择BANK、A0-A15选择Row)。而Read/Write命令并发含带突发操作的起始Column地址,并确定是否发布自动预充电命令(通过A10)和选择BC4或BL8模式(通过A12)(如果模式寄存器使能)。

在正常操作之前,DDR3 SDRAM必要以预先定义的方式上电和初始化。

引入DDR3内存的动因
 
  目前DDR2尚未完全取代DDR内存,在目前的整机环境下,DDR2基本能够满足各类型计算机的应用需求,那么最新一代的DDR3相比DDR2具有哪些优势,使得包括Intel和AMD以及A-DATA在内的众多国际顶级厂商都致力于DDR3的开发与应用呢?
 
  最主要的原因是,由于DDR2的数据传输频率发展到800MHz时,其内核工作频率已经达到了200MHz,因此,再向上提升较为困难,这就需要釆用新的技术来保证速度的可持续发展性。另外,也是由于速度提高的缘故,内存的地址/命令与控制总线需要有全新的拓朴结构,而且业界也要求内存要具有更低的能耗。
 
 
CPU厂商的DDR3内存攻略
 
  Intel计划在明年年中为其芯片组加入DDR3内存的支持。Intel芯片组事业部总经理Malinowski说,到那时市场才能准备好接受DDR3内存。
 
  Intel最新的965芯片组家族只支持DDR2,并放弃了对DDR的支持。
 
  AMD方面则要积极得多,与当年对DDR2内存的暧昧形成鲜明对比,这显然与AM2平台CPU在DDR2内存下表现不尽如人意有关:要表现出AMD CPU从DDR平台迁移到DDR2平台的优势,其对DDR2内存频率提高的要求比Intel Core更甚,但现阶段以DDR2 533/667为主的内存市场,则让AM2 CPU更多地受制于DDR2内存的高时延而不是受益于DDR2内存的高频率。
 
  AMD计划在下一代的K8L架构CPU中全面导入对DDR3内存的支持。在AMD的路线图看,K8L CPU将支持同时DDR2和DDR3内存,但很显然,DDR2内存不是AMD最好的选择,高频率、低时序的DDR3内存必然会是AMD积极开拓的对象。
 
  同时,加大对DDR3内存的支持力度,也可以让AMD改善与Intel的竞争中的被动地位。
 
 
DDR3内存的发展
 
  早在2002年6月28日,JEDEC就宣布开始开发DDR3内存标准,但从目 前的情况来看,DDR2才刚开始普及,DDR3标准更是连影也没见到。不过目前已经有众多厂商拿出了自己的DDR3解决方案,纷纷宣布成功开发出了 DDR3内存芯片,从中我们仿佛能感觉到DDR3临近的脚步。而从已经有芯片可以生产出来这一点来看,DDR3的标准设计工作也已经接近尾声。
 
  半导体市场调查机构iSuppli预测DDR3内存将会在2008年替代DDR2成为市场上的主流产品,iSuppli认为在那个时候DDR3的市场份额将达到55%。不过,就具体的设计来看,DDR3与DDR2的基础架构并没有本质的不同。从某种角度讲,DDR3是为了解决DDR2发展所面临的限制而催生的产物。
 
  由于DDR2内存的各种不足,制约了其进一步的广泛应用,DDR3内存的出现,正是为了解决DDR2内存出现的问题,具体有:
  更高的外部数据传输率 
  更先进的地址/命令与控制总线的拓朴架构 
  在保证性能的同时将能耗进一步降低
 
  为了满足这些要求,DDR3内存在DDR2内存的基础上所做的主要改进包括:
  8bit预取设计,DDR2为4bit预取,这样DRAM内核的频率只有接口频率的1/8,DDR3-800的核心工作频率只有100MHz。
  采用点对点的拓朴架构,减轻地址/命令与控制总线的负担。 
  采用100nm以下的生产工艺,将工作电压从1.8V降至1.5V,增加异步重置(Reset)与ZQ校准功能。
 
 
DDR3内存的封装
 
  从规格来看,DDR3仍将沿用FBGA封装方式,故在生产上与DDR2内存区别不大。但是由设计的角度上来看,因DDR3的起跳工作频率在1066MHz,这在电路布局上将是一大挑战,特别是电磁干扰,因此也将反映到PCB上增加模块的成本。
 
  预计在DDR3进入市场初期,其价格将是一大阻碍,而随着逐步的普及,产量的提升才能进一步降低成本。
 
 
DDR3内存的技术改进
 
  那么,从技术看,DDR3内存与目前主流的DDR2内存相比,其特点体现在哪些方面呢?我们首先介绍DDR3内存针对DDR2中存在的不足的改进
 
  逻辑Bank数量
  DDR2 SDRAM中有4Bank和8Bank的设计,目的就是为了应对未来大容量芯片的需求。而DDR3很可能将从2Gb容量起步,因此起始的逻辑Bank就是8个,另外还为未来的16个逻辑Bank做好了准备。
 
  封装(Packages)
  DDR3由于新增了一些功能,所以在引脚方面会有所增加,8bit芯片采用78球FBGA封装,16bit芯片采用96球FBGA封装,而DDR2则有60/68/84球FBGA封装三种规格。并且DDR3必须是绿色封装,不能含有任何有害物质。
 
  突发长度(BL,Burst Length)
  由于DDR3的预取为8bit,所以突发传输周期(BL,Burst Length)也固定为8,而对于DDR2和早期的DDR架构的系统,BL=4也是常用的,DDR3为此增加了一个4-bit Burst Chop(突发突变)模式,即由一个BL=4的读取操作加上一个BL=4的写入操作来合成一个BL=8的数据突发传输,届时可通过A12地址线来控制这一突发模式。而且需要指出的是,任何突发中断操作都将在DDR3内存中予以禁止,且不予支持,取而代之的是更灵活的突发传输控制(如4bit顺序突发)。
  
  寻址时序(Timing)
  就像DDR2从DDR转变而来后延迟周期数增加一样,DDR3的CL周期也将比DDR2有所提高。DDR2的CL范围一般在2至5之间,而DDR3则在5至11之间,且附加延迟(AL)的设计也有所变化。DDR2时AL的范围是0至4,而DDR3时AL有三种选项,分别是0、CL-1和CL-2。另外,DDR3还新增加了一个时序参数——写入延迟(CWD),这一参数将根据具体的工作频率而定。
 
DDR3内存的新增功能 
 
  如果上一部分介绍的DDR3内存对DDR2内存的改进更多的是某种程度上的修正或简单提高的话,DDR3内存还有部分DDR2内存所不具备的功能,正是这些,让DDR3内存的表现有了根本性的提高
  
  重置(Reset)
  重置是DDR3新增的一项重要功能,并为此专门准备了一个引脚。DRAM业界已经很早以前就要求增这一功能,如今终于在DDR3身上实现。这一引脚将使DDR3的初始化处理变得简单。当Reset命令有效时,DDR3内存将停止所有的操作,并切换至最少量活动的状态,以节约电力。在Reset期间,DDR3内存将关闭内在的大部分功能,所以有数据接收与发送器都将关闭。所有内部的程序装置将复位,DLL(延迟锁相环路)与时钟电路将停止工作,而且不理睬数据总线上的任何动静。这样一来,将使DDR3达到最节省电力的目的。
  
  ZQ校准
  ZQ也是一个新增的脚,在这个引脚上接有一个240欧姆的低公差参考电阻。这 个引脚通过一个命令集,通过片上校准引擎(ODCE,On-Die Calibration  Engine)来自动校验数据输出驱动器导通电阻与ODT的终结电阻值。当系统发出这一指令之后,将用相应的时钟周期(在加电与初始化之后用512个时钟 周期,在退出自刷新操作后用256时钟周期、在其他情况下用64个时钟周期)对导通电阻和ODT电阻进行重新校准。
  
  参考电压分成两个
  对于内存系统工作非常重要的参考电压信号VREF,在DDR3系统中将分为两个信号。一个是为命令与地址信号服务的VREFCA,另一为数据总线服务的VREFDQ,它将有效的提高系统数据总线的信噪等级。
 
  根据温度自动自刷新(SRT,Self-Refresh Temperature)
  为了保证所保存的数据不丢失,DRAM必须定时进行刷新,DDR3也不例外。不过,为了最大的节省电力,DDR3采用了一种新型的自动自刷新设计(ASR,Automatic Self-Refresh)。当开始ASR之后,将通过一个内置于DRAM芯片的温度传感器来控制刷新的频率,因为刷新频率高的话,消电就大,温度也随之升高。而温度传感器则在保证数据不丢失的情况下,尽量减少刷新频率,降低工作温度。不过DDR3的ASR是可选设计, 并不见得市场上的DDR3内存都支持这一功能,因此还有一个附加的功能就是自刷新温度范围(SRT,Self-Refresh  Temperature)。通过模式寄存器,可以选择两个温度范围,一个是普通的的温度范围(例如0℃至85℃),另一个是扩展温度范围,比如最高到 95℃。对于DRAM内部设定的这两种温度范围,DRAM将以恒定的频率和电流进行刷新操作。
 
  局部自刷新(RASR,Partial Array Self-Refresh)
  这是DDR3的一个可选项,通过这一功能,DDR3内存芯片可以只刷新部分逻辑Bank,而不是全部刷新,从而最大限度的减少因自刷新产生的电力消耗。这一点与移动型内存(Mobile DRAM)的设计很相似。
 
  点对点连接(P2P,Point-to-Point)
  这是为了提高系统性能而进行了重要改动,也是与DDR2系统的一个关键区别。在DDR3系统中,一个内存控制器将只与一个内存通道打交道,而且这个内存通道只能一个插槽。因此内存控制器与DDR3内存模组之间是点对点(P2P,Point-to-Point)的关系(单物理Bank的模组),或者是点对双点(P22P,Point-to-two-Point)的关系(双物理Bank的模组),从而大大减轻了地址/命令/控制与数据总线的负载。 而在内存模组方面,与DDR2的类别相类似,也有标准DIMM(台式PC)、SO-DIMM/Micro-DIMM(笔记本电脑)、FB-DIMM2(服 务器)之分,其中第二代FB-DIMM将采用规格更高的AMB2(高级内存缓冲器)。不过目前有关DDR3内存模组的标准制定工作刚开始,引脚设计还没有 最终确定。
 
  此外,DDR3还在功耗管理,多用途寄存器方面有不少新的设计。

【转】DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)的更多相关文章

  1. DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)

    转自:http://www.360doc.com/content/14/0116/16/15528092_345730642.shtml 以及参考网络. 首先,我们先了解一下内存的大体结构工作流程,这 ...

  2. 转:DDR3详解(以Micron MT41J128M8 1Gb DDR3 SDRAM为例)之一

    转载来自:http://blog.csdn.net/shanghaiqianlun/article/details/6976804 作者:shanghaiqianlun的专栏 1.结构框图: 2.管脚 ...

  3. (转)详解汇编系统调用过程(以printf为例)

    本文以printf为例,详细解析一个简单的printf调用里头,系统究竟做了什么,各寄存器究竟如何变化. 环境: linux + gnu as assembler + ld linker 如何在汇编调 ...

  4. DES对称加密算法详解和c++代码实现(带样例和详细的中间数据)

    特点: 1.DES是对称性加密算法,即加密和解密是对称的,用的是同一个密钥 2.DES只处理二进制数据,所以需要将明文转换成为2进制数据 3.DES每次处理64位的数据,所以应该将明文切割成64位的分 ...

  5. 【Python】Django 的邮件引擎用法详解!!(调用163邮箱为例)

    1. send_mall()方法介绍 位置: 在django.core.mail模块提供了send_mail()来发送邮件. 方法参数: send_mail(subject, message, fro ...

  6. 详解TableStore模糊查询——以订单场景为例

    背景 订单系统在各行各业中广泛应用,为消费者.商家后台.促销系统等第三方提供用户.产品.订单等多维度的管理和查询服务.为了挖掘出海量订单数据的潜能,丰富高效的查询必不可少.然而很多时候并不能给出完整准 ...

  7. jquery ui tabs详解(中文)

    1 属性1.11 ajaxOptions,当选项卡加载内容时,添加一个ajax选项.只有ajax时,添加的ajax选项才起作用.默认值为null.上面的例子中,添加了beforeSend和succes ...

  8. 一步一步造个IoC轮子(二),详解泛型工厂

    一步一步造个Ioc轮子目录 一步一步造个IoC轮子(一):Ioc是什么 一步一步造个IoC轮子(二):详解泛型工厂 一步一步造个IoC轮子(三):构造基本的IoC容器 详解泛型工厂 既然我说IoC容器 ...

  9. PHP常用设计模式,PHP常用设计模式详解,PHP详解设计模式,PHP设计模式

    PHP常用设计模式详解 单例模式: php交流群:159789818 特性:单例类只能有一个实例 类内__construct构造函数私有化,防止new实例 类内__clone私有化,防止复制对象 设置 ...

随机推荐

  1. MongoDB 3.0.6的主,从,仲裁节点搭建

    在MongoDB所在路径创建log和data目录mkdir logmkdir data 在data目录下 创建master.slaver.arbiter路径 mkdir master mkdir sl ...

  2. HDFS的运行原理(转)

    简介 HDFS(Hadoop Distributed File System )Hadoop分布式文件系统.是根据google发表的论文翻版的.论文为GFS(Google File System)Go ...

  3. JAVA 数组算法(复制、查找、插入)

    一.复制数组算法 //数组复制算法 public class Test{ public static void main(String[] args){ int[] arrA = {100,800,5 ...

  4. Servlet3.0学习总结(二)——使用注解标注过滤器(Filter)

    Servlet3.0提供@WebFilter注解将一个实现了javax.servlet.Filter接口的类定义为过滤器,这样我们在web应用中使用过滤器时,也不再需要在web.xml文件中配置过滤器 ...

  5. jQuery实现的鼠标滑过切换图片代码实例

    jQuery实现的鼠标滑过切换图片代码实例:有时候网页需要这样的简单效果,那就是当鼠标滑过默认图片的时候,能够实现图片的切换,可能在实际应用中,往往没有这么简单,不过大家可以自行扩展一下,下面简单介绍 ...

  6. Python标准库的学习准备

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python标准库是Python强大的动力所在,我们已经在前文中有所介绍.由于标准 ...

  7. df和du显示的磁盘空间使用情况不一致的原因及处理

    在Linux下查看磁盘空间使用情况,最常使用的就是du和df了.然而两者还是有很大区别的,有时候其输出结果甚至非常悬殊. 1. 如何记忆这两个命令 du-Disk Usage df-Disk Free ...

  8. 临时改GCC编译器,重启后失效

    临时改GCC编译器,重启后失效.例如,用如下命令: export CROSS_COMPILE= <gcc 文件所在的目录>/arm-linux-gnueabihf- 本例中使用的命令如下: ...

  9. Kafka单机版环境搭建

    使用版本:kafka_2.10-0.8.1.1 安装: -0.8.1.1.tgz -C ~/app/ 添加环境变量:.bash_profile export KAFKA_HOME=/home/spar ...

  10. C与Lua互相调用的时候,栈变化分析

    1  C调用Lua函数的堆栈变化 例子 Lua文件中的函数 function testNewCounter2() return "第四个结果" end C中的例子 void t_n ...