闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕濡ょ姷鍋為悧鐘汇€侀弴銏犖ч柛灞剧煯婢规洖鈹戦缁撶細闁告鍐f瀺鐎广儱娲犻崑鎾舵喆閸曨剛顦繝鈷€鍕垫疁妤犵偛妫濆顕€宕煎顏佹櫊閹鏁愭惔婵堝嚬閻庣懓鎲$换鍕閹烘挻缍囬柕濞垮劤閻熴劌顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秶鍠栭幃娆撳箣濠靛洤顦╅梺鎶芥敱閸ㄥ湱妲愰幘瀛樺濠殿喗鍩堟禍婵嬪箞閵娾晛鐐婇柕濞垮€楃粻姘渻閵堝棛澧柣鏃戝墴閻擃剟顢楅崒妤€浜鹃悷娆忓绾炬悂鏌涙惔锝嗘毈鐎殿噮鍋婇獮妯肩磼濡粯顏熼梻浣芥硶閸o箓骞忛敓锟�濠电姷鏁告慨鐑藉极閸涘﹥鍙忛柣鎴f閺嬩線鏌熼梻瀵割槮缁炬儳顭烽弻锝夊箛椤掍焦鍎撶紓浣哄С閸楁娊寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磽娴e搫啸闁哥姵鐗犲濠氬Ω閳哄倸浜滈梺鍛婄箓鐎氬懘濮€閵堝棛鍘遍梺闈浨归崕閬嶅焵椤掆偓濠€閬嶅箲閵忕姭妲堥柕蹇曞Т閼板灝鈹戦埥鍡楃仴妞ゆ泦鍥棄鐎广儱顦伴埛鎴犵磼鐎n偒鍎ラ柛搴㈠姉缁辨帞鎷犻幓鎺撴婵犵绱曢弫璇茬暦閻旂⒈鏁嶆慨妯夸含閺夋悂姊绘担鍝ユ瀮婵℃ぜ鍔庨幏瀣蓟閵夈儳锛涢梺瑙勫礃椤曆囧礃閳ь剟鎮峰⿰鍐炬█鐎殿喗鎮傚顕€宕奸悢鍝勫汲闂備胶绮ú鏍磹閸︻厸鍋撳鐐
开发学院数据库MSSQL Server 深入了解内存(三)--DRAM读取过程 阅读

深入了解内存(三)--DRAM读取过程

 2007-11-11 06:52:01 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曢梻鍌欑濠€閬嶆惞鎼淬劌绐楅柡宥庡亞娑撳秵銇勯弽顐沪闁绘挶鍎甸弻锝夊即閻愭祴鍋撻崷顓涘亾濮樼偓瀚�闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣捣閻棗銆掑锝呬壕濡ょ姷鍋涢ˇ鐢稿极閹剧粯鍋愰柟缁樺笧閳ь剦鍙冨鍝勑ч崶褏浠奸梺璇茬箲閼归箖鎮鹃悜钘夎摕闁靛濡囬崢鐢告⒑鐟欏嫷鍟忛柛鐘崇墵閵嗗倹绺介崨濠勫幈闁硅壈鎻槐鏇熺墡闂備線娼уú銈団偓姘嵆閻涱噣骞掑Δ鈧粻锝嗙節闂堟稑鏆欏ù婊堢畺閺岋綁濮€閳惰泛婀辨竟鏇熺節濮橆厾鍘甸梺缁樺姦閸撴岸鎮樻潏銊ょ箚闁圭粯甯炴晶娑氱磼缂佹ḿ娲寸€规洖宕灃闁告劕鍟犻崜婵堟崲濞戞ḿ鏆嗗┑鐘辫兌閺佹牜绱撴担浠嬪摵闁圭懓娲ら悾鐑藉箳閹搭厽鍍甸梺鐟板悁閻掞箓鎮楅幖浣光拻濞达絿鍎ら崵鈧梺鎼炲€栭悧鐘荤嵁韫囨稒鏅搁柨鐕傛嫹婵犵數濮烽弫鍛婃叏閻戣棄鏋侀柛娑橈攻閸欏繑銇勯幘鍗炵仼缂佺媭鍨堕弻娑㈠箛闂堟稒鐏堥悗鐟版啞缁诲啴濡甸崟顖氱閻庨潧鎽滈悾濂告⒑绾拋娼愭繛鑼枎椤繒绱掑Ο鑲╂嚌闂侀€炲苯澧畝锝堝劵椤︽煡鎮¢妶澶嬬厪闁割偅绻冮崑顏呯箾瀹割喕绨婚幆鐔兼⒑鐎圭姵銆冮柤鍐茬埣瀹曟繈鏁冮埀顒勨€旈崘顔嘉ч柛鈩冾殘閻熸劙姊洪悡搴℃毐闁绘牕銈稿畷鐑樼節閸パ冨祮闂侀潧楠忕槐鏇㈠储椤忓牊鈷戦柟鑲╁仜閸旀鏌¢崨顔锯姇缂佸倹甯熼ˇ瀵哥磼鏉堛劌绗氭繛鐓庣箻閸┾剝鎷呴柨瀣垫綗闂傚倷娴囧銊╂倿閿曞倸绠查柛銉墮閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓闂傚倸鍊搁崐鎼佸磹閹间礁纾瑰瀣椤愯姤鎱ㄥ鍡楀幊缂傚倹姘ㄩ幉绋款吋閸澀缃曢梻鍌欑濠€閬嶆惞鎼淬劌绐楅柡宥庡亞娑撳秵銇勯弽顐沪闁绘挶鍎甸弻锝夊即閻愭祴鍋撻崷顓涘亾濮樼偓瀚�  闂傚倸鍊搁崐鎼佸磹閹间礁纾归柣鎴eГ閸ゅ嫰鏌ら崫銉︽毄濞寸姵姘ㄧ槐鎾诲磼濞嗘帒鍘$紓渚囧櫘閸ㄥ爼濡撮崘顔煎窛闁哄鍨归崢娲倵楠炲灝鍔氭い锔诲灦瀹曪繝骞庨懞銉у帾闂婎偄娲﹀ú鏍ㄧ墡闂備浇顕х€垫帡宕滈悢濂夋綎闁惧繐婀辩壕鍏间繆椤栨碍鎯堟い顐㈢Т椤啴濡堕崱妤€顫庨梺鍛婎焼閸パ呭弨婵犮垼娉涜癌闁绘柨鍚嬮悡銉╂倵閿濆骸鍘撮柛瀣尰缁绘繂顫濋娑欏闁荤喐绮庢晶妤冩暜閹烘挾顩插ù鐓庣摠閻撴洟鏌熼幆褜鍤熼柍钘夘樀閺屽秶绱掑Ο鑽ゅ弳濡炪値鍋呯换鍫ュ箠濠婂懎鏋堟俊顖濐嚙椤忓綊姊婚崒娆戭槮闁硅绱曠划娆撳箣閿斿搫浜奸梺鍝勵槹閸ㄧ喖寮搁弮鍫熺厸闁告劧绲芥禍鍓х磽娴h櫣甯涚紒瀣尰缁傛帡鏁冮崒姘憋紲濠殿喗锕╅崜锕傛倵閹惰姤鈷掑ù锝呮憸閿涘秶绱掗鍛仸妤犵偞鍨垮畷鍫曨敆閸屾氨銈﹂梺璇插嚱缂嶅棙绂嶉弽顓炵哗濞寸姴顑嗛悡娆撴⒑椤撱劎鐣卞褜鍨遍妵鍕棘閸喒鍋撶憴鍕攳濠电姴娲﹂崐閿嬨亜韫囨挸顏ら柛瀣崌瀵€燁檨婵炲吋鐗曢埞鎴︽偐鐎圭姴顥濋梺绋胯閸斿酣骞夊宀€鐤€婵炴垶岣块悿鍛存⒑閸︻叀妾搁柛鐘愁殜瀵煡骞栨担鍦弳闂佺粯娲栭崐鍦偓姘炬嫹
核心提示:这个系列的文章已经写了两篇了,但是我们几乎还没有谈到我们都关心的一些问题,深入了解内存(三)--DRAM读取过程,比如 CAS-2和CAS-3之间的区别什么的,现在我们对于DRAM的基础知识已经有了一个基本的了解,当然出现这样的现象是每个用户都不愿意看到的,当的使用的内存速度越慢或者说你的处理器相对越快,下面的文章就是

  这个系列的文章已经写了两篇了,但是我们几乎还没有谈到我们都关心的一些问题,比如 CAS-2和CAS-3之间的区别什么的。现在我们对于DRAM的基础知识已经有了一个基本的了解,下面的文章就是给大家介绍一些现代的内存技术。 DRAM读取过程 其实我们在以前的文章中已经讨论过DRAM的读写过程了,不过对于内存比较了解的朋友都会发现在前面的介绍中仅仅是对于内存的大致读取过程进行了简述,很多重要的细节都没有详细的讨论。所以我们在文章的这一节的内容中对于这个过程进行详细的讨论。下面就是异步内存的读取过程的步骤,因为异步DRAM的运行并不需要同处理器同频,它的时序信号控制、寻址等操作基本上说是独立控制的,也就是由内存芯片本身所控制,所以在讨论起来比较简单,我们仅仅需要考虑DRAM本身的情况就可以了(这个系列的文章也是本着循序渐进的原则让大家更好的理解内存的工作原理的): 1) 行地址通过地址总线传输到地址引脚
2) /RAS引脚被激活,列地址就会被放入行地址选通电路( Row Address Latch:在文章的前面部分我们把它翻译为列地址门闩电路)
3) 行地址解码器( Row Address Decoder)选择正确的行然后送到传感放大器( sense amps)
4) /WE引脚此时不被激活,所以 DRAM知道它们不是进行写操作
5) 列地址通过地址总线传输到地址引脚
6) /CAS引脚被激活,列地址就可以被送到列地址选通器( Column Address Latch) 
7) /CAS引脚也被当作输出启动信号( Output Enable),因为一旦 /CAS信号被放到传感放大器,就因为这时需要的数据已经找到,所以Dout针脚开始有效,数据可以从内存中传输到系统了
8) /RAS和 /CAS引脚停止激活,等待下一个读取命令在内存的读取过程中,需要我们考虑的有两个主要类型的延迟。第一类的是连续的DRAM读操作之间的延迟。内存不可能在进行完一个读取操作之后就立刻进行第两个读取操作,因为DRAM的读取操作包括电容器的充电和放电另外还包括把信号传送出去的时间,所以在两个读取操作中间至少留出足够的时间让让内存进行这些方面的操作。在连续的两次读取操作之间,第一种类型的延迟包括 /RAS和 /CAS预充电延迟时间。在 /RAS被激活并且失活之后,你必须给它足够的时间为下次激活做好准备。下图可以帮助你更好了解这个过程。 /CAS预充电的过程失一样的,你只要把上图种的“RAS”换成“CAS”就可以了。从前面我们介绍的DRAM读取过程的8个步骤中,我们可以了解到 /RAS和 /CAS预充电过程是依次进行的,所以我们在一定的时间里只能进行有限次数的读取操作。特别是在第8个步骤中,当一次读取操作周期结束之后,我们必须让 /RAS和/CAS引脚都失活。实际上,在你让它们失活之后,必须等待预充电过程结束之后才能开始下一个操作(或者还是读取操作、或者是写入操作、或者是刷新操作)。当然在两次读取操作之间的预充电时间不是限制DRAM速度的唯一因素。第二种延迟类型是叫做内部读取延迟( inside-the-read)。这种延迟同同两次读取操作之间的延迟非常的相似,但是不是由停止 /RAS和/CAS激活而产生的,而是由于要激活 /RAS和/CAS而产生的。比如,行存取时间(tRAC)--它就是在你激活RAS和数据最终出现在数据总线之间的时间。同样的列存取时间 (tCAC)就是激活 /CAS引脚和数据最终出现在数据总线上之间的时间。下面的示意图可以帮助你更好的理解这两种类型的延迟: 上面的图仅仅是一个示意图,下面的时序图可以帮助你了解不同的延迟时间发生的顺序: 深入了解内存(三)--DRAM读取过程(图一) 现在让我们花一点时间结合前面介绍的读取过程来研究一下上面的这张示意图: 1) 首先看上图第一行,在预充电期间行地址通过地址总线传输到地址引脚,这个期间RAS未被激活,在第三行Address BUS中我们看到数据在这个期间正在行地址总线上,这个期间CAS也处于预充电状态;
2) 依然看上图第一行, /RAS引脚被激活(RAS Active,灰色的部分),列地址就会被放入行地址选通电路(第三行Address Bus中所示),这个期间CAS依然处于预充电状态;在/RAS被激活的同时,tRAC(行存取时间)开始--如上图最后一行Data Bus所示。
3) 在/RAS被激活以后,行地址解码器( Row Address Decoder)选择正确的行然后送到传感放大器( sense amps)
4) 在这个期间/WE引脚一直处于不激活的状态,所以 DRAM知道它们不是进行写操作--这个状态将一直持续到开始执行写操作才结束
5) 列地址通过地址总线传输到地址引脚
6) /CAS引脚被激活(如上图第三行),列地址就可以被送到列地址选通器( Column Address Latch) ,这个时候tCAC(列地址访问时间)开始计时
7) 在/CAS处于激活状态期间的末尾,/RAS停止激活--也就大约在这个时间附近找到的数据被传送到数据总线进行数据传送(如图data Bus),在数据总线进行数据传输的过程中,地址总线是处于空闲状态的,它并不接受新的数据--在数据开始创送的同时tRAC和tCAC都结束了。
8)就在数据在数据总线上传输期间,/CAS引脚也被停止激活--就是得到一个高电平,从而开始进入到预充电期。RAS和CAS会同时处于预充电期,直到下次/RAS被激活进入到下一个读取操作的周期。相信经过这样的说明大家应该了解DRAM的读取过程了。 在这个基础上我们就可以开始认识SIMM或者DIMM的潜伏期( latency)问题了。首先我们来继续澄清一下几个概念。 DRAM潜伏期类型分为两种:访问时间( access time)和周期时间( cycle time)。其中访问时间( access time)同前面我们谈论的第二种类型的延迟有关,也就是同读取周期中的延迟时间;而周期时间(cycle time)同我们前面谈论的第一种类型的延迟有关,也就是受到两个读取周期之间的延迟时间影响。当然潜伏期的时间很短,都是用纳秒来衡量的。对于异步 DRAM芯片,访问时间就是从行地址到达行地址引脚的时间起截至到数据被传输到数据引脚的时间段。这样,访问时间为60纳秒的 DIMM意味着当我们下达读取数据的命令后,地址数据被送到地址引脚之后要等待60纳米才能达到数据输出引脚。周期时间,从字面上理解就是从两个连续读取操作之间的时间间隔。如何尽可能的减小DRAM的周期时间和访问时间是我们这篇文章后半部分将要详细的讨论的问题。我们平时说到DRAM内存是多少多少纳秒,这里指的一般是访问时间(我们也会对于为什么采取这样的标称方法进行解释)。我们都知道访问时间越短,意味着内存工作频率会越高。当然内存工作频率越高,意味着可以适应外频更高的处理器。如果处理器的时钟周期较短,而DRAM的潜伏期较长,处理器在很多时间里都是等到DRAM传送数据。因此当DRAM一定时,比如时潜伏期为70纳秒,那么一颗 1GHz PIII等待数据的时间将会比一颗 400MHz PII处理器长。当然出现这样的现象是每个用户都不愿意看到的,当的使用的内存速度越慢或者说你的处理器相对越快,你的处理器就会由更多的性能都被这样的等待浪费了。

Tags:深入 了解 内存

编辑录入:coldstar [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
更多精彩
    赞助商链接

    热点阅读
      焦点图片
        最新推荐
          精彩阅读