找回密码
 注册
关于网站域名变更的通知
查看: 1416|回复: 10
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2016-6-28 02:26 来自手机 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

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

! ]7 J' R6 e6 R' y4 B( B  DDR3的内部是一个存储阵列,将数据“填”进去,你可以它想象成一张表格。和表格的检索原理一样,先指定一个行(Row),再指定一个列(Column),我们就可以准确地找到所需要的单元格,这就是内存芯片寻址的基本原理。对于内存,这个单元格可称为存储单元,那么这个表格(存储阵列)就是逻辑 Bank(LogicalBank,下面简称Bank)。. l0 X" C, ]8 p( t" s4 V& j- b+ z

8 g* V  I7 W  z  G  
7 Q& ~1 m1 H$ t6 c$ }3 [& }- E6 I8 `. O) y# ]$ e
<img src="http://image61.360doc.com/DownloadImg/2013/06/0817/33026688_1.png" />
/ }! l* _$ z7 O; K' f  DDR3内部Bank示意图,这是一个NXN的阵列,B代表Bank地址编号,C代表列地址编号,R代表行地址编号。3 _3 o- [. `( G# {4 ?
, N5 W5 o; E: Q" f
  如果寻址命令是B1、R2、C6,就能确定地址是图中红格的位置& t# j# Z9 J/ @- L7 y( J7 F

8 N  S5 x% ^: n1 w3 y7 g7 f# A  目前DDR3内存芯片基本上都是8个Bank设计,也就是说一共有8个这样的“表格”。/ ?, }  @; @8 T/ Y5 Z/ m7 L
6 }% _  H9 m) X2 i. C9 k+ y4 @
  寻址的流程也就是先指定Bank地址,再指定行地址,然后指列地址最终的确寻址单元。
/ \, Z% ?% Z$ W* T& \- _9 h
9 Z, }$ |) {/ h( \$ {  目前DDR3系统而言,还存在物理Bank的概念,这是对内存子系统的一个相关术语,并不针对内存芯片。内存为了保证CPU正常工作,必须一次传输完CPU 在一个传输周期内所需要的数据。而CPU在一个传输周期能接受的数据容量就是CPU数据总线的位宽,单位是bit(位)。控制内存与CPU之间数据交换的北桥芯片也因此将内存总线的数据位宽等同于CPU数据总线的位宽,这个位宽就称为物理Bank(PhysicalBank,有的资料称之为Rank)的位宽。目前这个位宽基本为64bit。& E1 Q7 A8 G. J) z% o

, d8 `! H5 G" j& l$ `  在实际工作中,Bank地址与相应的行地址是同时发出的,此时这个命令称之为“行激活”(RowActive)。在此之后,将发送列地址寻址命令与具体的操作命令(是读还是写),这两个命令也是同时发出的,所以一般都会以“读/写命令”来表示列寻址。根据相关的标准,从行有效到读/写命令发出之间的间隔被定义为tRCD,即RAStoCASDelay(RAS至CAS延迟,RAS就是行地址选通脉冲,CAS就是列地址选通脉冲),我们可以理解为行选通周期。tRCD是DDR的一个重要时序参数,广义的tRCD以时钟周期(tCK,ClockTime)数为单位,比如tRCD=3,就代表延迟周期为两个时钟周期,具体到确切的时间,则要根据时钟频率而定,DDR3-800,tRCD=3,代表30ns的延迟。  |$ P- |1 C' ]; ?3 J7 N7 p* m
/ j/ \8 C4 D& m; @; g, m3 e
  
! y9 K/ ]" \2 H6 y: ]* g! o9 j& |' T6 b0 O3 c
<img src="http://image61.360doc.com/DownloadImg/2013/06/0817/33026688_2.png" />
, X% A' H3 a' y: v! j( M  图中显示的是tRCD=3
8 Q' g9 y+ @0 x8 {  G$ t9 }! Q! K% w
  接下来,相关的列地址被选中之后,将会触发数据传输,但从存储单元中输出到真正出现在内存芯片的I/O接口之间还需要一定的时间(数据触发本身就有延迟,而且还需要进行信号放大),这段时间就是非常著名的CL(CASLatency,列地址脉冲选通潜伏期)。CL的数值与tRCD一样,以时钟周期数表示。如DDR3-800,时钟频率为100MHz,时钟周期为10ns,如果CL=2就意味着20ns的潜伏期。不过CL只是针对读取操作。
0 O; O: f' l5 w5 t+ o/ p) v  F8 g
3 u5 K7 r) F5 F  由于芯片体积的原因,存储单元中的电容容量很小,所以信号要经过放大来保证其有效的识别性,这个放大/驱动工作由S-AMP负责,一个存储体对应一个S- AMP通道。但它要有一个准备时间才能保证信号的发送强度(事前还要进行电压比较以进行逻辑电平的判断),因此从数据I/O总线上有数据输出之前的一个时钟上升沿开始,数据即已传向S-AMP,也就是说此时数据已经被触发,经过一定的驱动时间最终传向数据I/O总线进行输出,这段时间我们称之为 tAC(AccessTimefromCLK,时钟触发后的访问时间)。9 p# |3 N6 P  c% H7 k
! M1 f* a# |$ Q$ _( Z% H5 W1 I) i* {! s1 J
  4 s4 E6 G5 ~) ~: O
! x0 g) W" C, G. W% W# v
<img src="http://image61.360doc.com/DownloadImg/2013/06/0817/33026688_3.png" />/ ^/ a, P! o: h
  图中标准CL=2,tAC=15 K' E& l0 i/ ~2 A/ s! y" V

: h4 }* ~& b9 Y3 ~; w4 |% W$ l, N  目前内存的读写基本都是连续的,因为与CPU交换的数据量以一个CacheLine(即CPU内Cache的存储单位)的容量为准,一般为64字节。而现有的Rank位宽为8字节(64bit),那么就要一次连续传输8次,这就涉及到我们也经常能遇到的突发传输的概念。突发(Burst)是指在同一行中相邻的存储单元连续进行数据传输的方式,连续传输的周期数就是突发长度(BurstLengths,简称BL)。0 Z3 d1 O/ ]6 c
! k: J) z' f6 V6 r4 o- d4 k
  在进行突发传输时,只要指定起始列地址与突发长度,内存就会依次地自动对后面相应数量的存储单元进行读/写操作而不再需要控制器连续地提供列地址。这样,除了第一笔数据的传输需要若干个周期(主要是之前的延迟,一般的是tRCD+CL)外,其后每个数据只需一个周期的即可获得。& i) ]& ^; o" i2 u& V

* Q6 z; ]1 c! r8 [, M* U8 H# t  2 G. k! G) E# l7 p( O# H

# E* V" U# z  s( D5 I; z2 S<img src="http://image61.360doc.com/DownloadImg/2013/06/0817/33026688_4.png" />
* F& Q  i: y1 z4 \( ^2 n. u4 I' g6 Q  突发连续读取模式:只要指定起始列地址与突发长度,后续的寻址与数据的读取自动进行,而只要控制好两段突发读取命令的间隔周期(与BL相同)即可做到连续的突发传输。7 N& J( P( Y  m; O
$ b7 g8 N9 E- R4 t1 {$ ]2 C% F% A8 U
  谈到了突发长度时。如果BL=4,那么也就是说一次就传送4×64bit的数据。但是,如果其中的第二笔数据是不需要的,怎么办?还都传输吗?为了屏蔽不需要的数据,人们采用了数据掩码(DataI/OMask,简称DQM)技术。通过DQM,内存可以控制I/O端口取消哪些输出或输入的数据。这里需要强调的是,在读取时,被屏蔽的数据仍然会从存储体传出,只是在“掩码逻辑单元”处被屏蔽。DQM由北桥控制,为了精确屏蔽一个P-Bank位宽中的每个字节,每个DIMM有8个DQM 信号线,每个信号针对一个字节。这样,对于4bit位宽芯片,两个芯片共用一个DQM信号线,对于8bit位宽芯片,一个芯片占用一个DQM信号,而对于 16bit位宽芯片,则需要两个DQM引脚。) B6 T: s  c: J6 Q% f: Z% e& G, p. j

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

  o- ~# C* D$ F* V: f" E( E/ p  
2 K# [5 }, @' p" e
, R# m0 R9 B3 U<img src="http://image61.360doc.com/DownloadImg/2013/06/0817/33026688_5.png" />
' d$ h1 K; Y  ?) f$ S  在不同Bank间读写也是这样,先把原来数据写回,再激活新的Bank/Row。9 ?$ r% p7 ^, E1 l* _) V) [
  ~& Z6 o3 e* {) p9 ]
  数据选取脉冲(DQS)
6 Y9 A: |* t+ F1 r: m& c8 S
9 I  l% Y+ w( T- S! q6 @9 U. ]  DQS 是DDR中的重要功能,它的功能主要用来在一个时钟周期内准确的区分出每个传输周期,并便于接收方准确接收数据。每一颗芯片都有一个DQS信号线,它是双向的,在写入时它用来传送由北桥发来的DQS信号,读取时,则由芯片生成DQS向北桥发送。完全可以说,它就是数据的同步信号。; Z* X% X, E7 X7 i; i, `+ A) o

* `. K- ?# ~2 n9 L! [% u* [  在读取时,DQS与数据信号同时生成(也是在CK与CK#的交叉点)。而DDR内存中的CL也就是从CAS发出到DQS生成的间隔,DQS生成时,芯片内部的预取已经完毕了,由于预取的原因,实际的数据传出可能会提前于DQS发生(数据提前于DQS传出)。由于是并行传输,DDR内存对tAC也有一定的要求,对于DDR266,tAC的允许范围是±0.75ns,对于DDR333,则是±0.7ns,有关它们的时序图示见前文,其中CL里包含了一段DQS 的导入期。, B1 |* k6 S" k/ w2 r* Z' x& p4 l9 `

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

' s. H  a4 {5 D9 b6 a' w' a<img src="http://image61.360doc.com/DownloadImg/2013/06/0817/33026688_6.png" />
+ F0 h! x+ j! U& o  在写入时,以DQS的高/低电平期中部为数据周期分割点,而不是上/下沿,但数据的接收触发仍为DQS的上/下沿
5 H9 d6 \; D4 L" {5 b
3 J- ^7 l) ]- \* ]1 a  3.容量的计算) G0 y' y# M) t( f
+ L# q! F. v$ Z! |. Z: T
  
, p0 A. X% p( ]% ?: i/ U
6 j* Q/ N9 u' p! f<img src="http://image61.360doc.com/DownloadImg/2013/06/0817/33026688_7.png" />' `% M* h9 D5 `' Z
  上图为X8data的单颗DDR3架构图,

该用户从未签到

3#
发表于 2016-7-5 13:16 | 只看该作者

+ t6 {9 o! l! R要学习一下了

该用户从未签到

8#
发表于 2016-8-15 09:41 | 只看该作者
图片看不到

点评

不知道咋没了  详情 回复 发表于 2016-11-13 23:45

该用户从未签到

9#
发表于 2016-8-24 20:43 | 只看该作者
同上,但谢谢楼主

该用户从未签到

10#
 楼主| 发表于 2016-11-13 23:45 | 只看该作者
zhm 发表于 2016-8-15 09:41& x2 y) `: b" A) c6 k
图片看不到

* o6 Z* T0 B5 r7 H; d4 `不知道咋没了
2 B/ @. {6 _6 a4 o, P$ J. N
7 _' }+ X, X. N9 t+ `' ]6 H8 Y5 Y
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-20 14:47 , Processed in 0.156250 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表