+

来自「深入了解内存」· 代码 · 共 521 行 · 第 1/5 页

TXT
521
字号
                  <BR><B>DRAM读取过程</B><BR>其实我们在以前的文章中已经讨论过DRAM的读写过程了,不过对于内存比较了解的朋友都会发现在前面的介绍中仅仅是对于内存的大致读取过程进行了简述,很多重要的细节都没有详细的讨论。所以我们在文章的这一节的内容中对于这个过程进行详细的讨论。下面就是异步内存的读取过程的步骤,因为异步DRAM的运行并不需要同处理器同频,它的时序信号控制、寻址等操作基本上说是独立控制的,也就是由内存芯片本身所控制,所以在讨论起来比较简单,我们仅仅需要考虑DRAM本身的情况就可以了(这个系列的文章也是本着循序渐进的原则让大家更好的理解内存的工作原理的):[BLOCKQUOTE]<BR>1) 
                  行地址通过地址总线传输到地址引脚<BR>2) /RAS引脚被激活,列地址就会被放入行地址选通电路( Row Address 
                  Latch:在文章的前面部分我们把它翻译为列地址门闩电路)<BR>3) 行地址解码器( Row Address 
                  Decoder)选择正确的行然后送到传感放大器( sense amps)<BR>4) /WE引脚此时不被激活,所以 
                  DRAM知道它们不是进行写操作<BR>5) 列地址通过地址总线传输到地址引脚<BR>6) 
                  /CAS引脚被激活,列地址就可以被送到列地址选通器( Column Address Latch) <BR>7) 
                  /CAS引脚也被当作输出启动信号( Output Enable),因为一旦 
                  /CAS信号被放到传感放大器,就因为这时需要的数据已经找到,所以Dout针脚开始有效,数据可以从内存中传输到系统了<BR>8) 
                  /RAS和 
                  /CAS引脚停止激活,等待下一个读取命令[/BLOCKQUOTE]<BR>在内存的读取过程中,需要我们考虑的有两个主要类型的延迟。第一类的是连续的DRAM读操作之间的延迟。内存不可能在进行完一个读取操作之后就立刻进行第两个读取操作,因为DRAM的读取操作包括电容器的充电和放电另外还包括把信号传送出去的时间,所以在两个读取操作中间至少留出足够的时间让让内存进行这些方面的操作。<BR>在连续的两次读取操作之间,第一种类型的延迟包括 
                  /RAS和 /CAS预充电延迟时间。在 
                  /RAS被激活并且失活之后,你必须给它足够的时间为下次激活做好准备。下图可以帮助你更好了解这个过程。<IMG 
                  src="深入了解内存.files/112421384715.gif"> 
                  <BR>/CAS预充电的过程失一样的,你只要把上图种的“RAS”换成“CAS”就可以了。<BR>从前面我们介绍的DRAM读取过程的8个步骤中,我们可以了解到 
                  /RAS和 
                  /CAS预充电过程是依次进行的,所以我们在一定的时间里只能进行有限次数的读取操作。特别是在第8个步骤中,当一次读取操作周期结束之后,我们必须让 
                  /RAS和/CAS引脚都失活。实际上,在你让它们失活之后,必须等待预充电过程结束之后才能开始下一个操作(或者还是读取操作、或者是写入操作、或者是刷新操作)。<BR>当然在两次读取操作之间的预充电时间不是限制DRAM速度的唯一因素。第二种延迟类型是叫做内部读取延迟( 
                  inside-the-read)。这种延迟同同两次读取操作之间的延迟非常的相似,但是不是由停止 
                  /RAS和/CAS激活而产生的,而是由于要激活 
                  /RAS和/CAS而产生的。比如,行存取时间(tRAC)--它就是在你激活RAS和数据最终出现在数据总线之间的时间。同样的列存取时间 
                  (tCAC)就是激活 
                  /CAS引脚和数据最终出现在数据总线上之间的时间。下面的示意图可以帮助你更好的理解这两种类型的延迟:<IMG 
                  src="深入了解内存.files/112421384920.gif"> 
                  <BR><BR>上面的图仅仅是一个示意图,下面的时序图可以帮助你了解不同的延迟时间发生的顺序:<BR><IMG 
                  src="深入了解内存.files/11242138390.gif"><BR>现在让我们花一点时间结合前面介绍的读取过程来研究一下上面的这张示意图:<BR>1) 
                  首先看上图第一行,在预充电期间行地址通过地址总线传输到地址引脚,这个期间RAS未被激活,在第三行Address 
                  BUS中我们看到数据在这个期间正在行地址总线上,这个期间CAS也处于预充电状态;<BR>2) 依然看上图第一行, 
                  /RAS引脚被激活(RAS Active,灰色的部分),列地址就会被放入行地址选通电路(第三行Address 
                  Bus中所示),这个期间CAS依然处于预充电状态;在/RAS被激活的同时,tRAC(行存取时间)开始--如上图最后一行Data 
                  Bus所示。<BR>3) 在/RAS被激活以后,行地址解码器( Row Address 
                  Decoder)选择正确的行然后送到传感放大器( sense amps)<BR>4) 
                  在这个期间/WE引脚一直处于不激活的状态,所以 
                  DRAM知道它们不是进行写操作--这个状态将一直持续到开始执行写操作才结束<BR>5) 
                  列地址通过地址总线传输到地址引脚<BR>6) /CAS引脚被激活(如上图第三行),列地址就可以被送到列地址选通器( 
                  Column Address Latch) ,这个时候tCAC(列地址访问时间)开始计时<BR>7) 
                  在/CAS处于激活状态期间的末尾,/RAS停止激活--也就大约在这个时间附近找到的数据被传送到数据总线进行数据传送(如图data 
                  Bus),在数据总线进行数据传输的过程中,地址总线是处于空闲状态的,它并不接受新的数据--在数据开始创送的同时tRAC和tCAC都结束了。<BR>8)就在数据在数据总线上传输期间,/CAS引脚也被停止激活--就是得到一个高电平,从而开始进入到预充电期。RAS和CAS会同时处于预充电期,直到下次/RAS被激活进入到下一个读取操作的周期。<BR>相信经过这样的说明大家应该了解DRAM的读取过程了。 
                  在这个基础上我们就可以开始认识SIMM或者DIMM的潜伏期( 
                  latency)问题了。首先我们来继续澄清一下几个概念。<BR>DRAM潜伏期类型分为两种:访问时间( access 
                  time)和周期时间( cycle time)。其中访问时间( access 
                  time)同前面我们谈论的第二种类型的延迟有关,也就是同读取周期中的延迟时间;而周期时间(cycle 
                  time)同我们前面谈论的第一种类型的延迟有关,也就是受到两个读取周期之间的延迟时间影响。当然潜伏期的时间很短,都是用纳秒来衡量的。<BR>对于异步 
                  DRAM芯片,访问时间就是从行地址到达行地址引脚的时间起截至到数据被传输到数据引脚的时间段。这样,访问时间为60纳秒的 
                  DIMM意味着当我们下达读取数据的命令后,地址数据被送到地址引脚之后要等待60纳米才能达到数据输出引脚。周期时间,从字面上理解就是从两个连续读取操作之间的时间间隔。如何尽可能的减小DRAM的周期时间和访问时间是我们这篇文章后半部分将要详细的讨论的问题。<BR>我们平时说到DRAM内存是多少多少纳秒,这里指的一般是访问时间(我们也会对于为什么采取这样的标称方法进行解释)。我们都知道访问时间越短,意味着内存工作频率会越高。当然内存工作频率越高,意味着可以适应外频更高的处理器。如果处理器的时钟周期较短,而DRAM的潜伏期较长,处理器在很多时间里都是等到DRAM传送数据。因此当DRAM一定时,比如时潜伏期为70纳秒,那么一颗 
                  1GHz PIII等待数据的时间将会比一颗 400MHz 
                  PII处理器长。当然出现这样的现象是每个用户都不愿意看到的,当的使用的内存速度越慢或者说你的处理器相对越快,你的处理器就会由更多的性能都被这样的等待浪费了。(未完待续……)</TD></TR></TBODY></TABLE><BR><BR>
            <P align=right><A href="http://www.texin.com.cn/" 
            target=_blank>国产DC-DC,传感电路,无线音频</A><BR><A 
            href="http://www.shenlong755.cn/" 
            target=_blank>智能、自动化专用仪器设备委托设计开发</A><BR><A 
            href="http://www.21ic.com.cn/ads/adsclick.asp?id=77" 
            target=_blank>Nordic的无线产品,Zilog的单片机</A></P>
            <P align=center>
            <CENTER></CENTER>
            <P></P></TD></TR></TBODY></TABLE><BR></TD></TR></TBODY></TABLE><IMG height=5 
src="深入了解内存.files/blank.gif" width=1><BR>
<TABLE border=0 cellPadding=3 cellSpacing=2 width="100%"></FONT>
  <TBODY>
  <TR>
    <TD bgColor=white><B><IMG align=absMiddle src="深入了解内存.files/mood25.gif"> 
      21IC </B>发表于 2003-12-7 13:33 <FONT color=#336699><STRONG>ARM 
      论坛</STRONG></FONT> <A 
      href="http://www.21icbbs.com/club/bbs/list.asp?boardid=35"><FONT 
      color=black>←返回版面</FONT></A> <A 
      href="http://www.21icbbs.com/club/bbs/queryInfo.asp?key=eKiUkAqUQbq%2FA18%5FqGej%2FheUG8tjwqP8sSq8gi8ya%3DEokLba8bIAMcaj&amp;txtname=21IC" 
      target=_blank><IMG alt=按此察看该网友的资料 border=0 
      src="深入了解内存.files/profile.gif"></A> <A 
      href="http://www.21icbbs.com/club/bbs/info/addToBookMark.asp?type=announce&amp;boardID=35&amp;id=&amp;topic=%C9%EE%C8%EB%C1%CB%BD%E2%C4%DA%B4%E6%A3%A8%CB%C4%A3%A9&amp;author=21IC"><IMG 
      alt=按此把文章加入收藏夹 border=0 src="深入了解内存.files/fav.gif"></A> <A 
      href="http://www.21icbbs.com/club/bbs/ownerEditAnnounce.asp?v=&amp;id=979952"><IMG 
      alt=按此编辑本帖 border=0 src="深入了解内存.files/edit.gif"></A></FONT></TD></TR>
  <TR>
    <TD bgColor=#eeeeee><FONT color=black><BR><U>深入了解内存(四)</U></FONT></TD></TR>
  <TR>
    <TD bgColor=#eeeeee><BR>
      <TABLE align=center cellPadding=3 cellSpacing=1 width="95%">
        <TBODY>
        <TR>
          <TD style="FONT-SIZE: 12px; LINE-HEIGHT: 18px">
            <TABLE cellSpacing=0 class=ubb>
              <TBODY>
              <TR>
                <TD class=ubb><B><FONT color=#ff0000>深入了解内存(四)</FONT></B> 
                  <BR>本文现已有<B><FONT 
                  color=#ff0000>6043</FONT></B>次点击<BR><B>清水反应</B> <FONT 
                  color=#ff0000>www.arstechnica.com 独家编译</FONT><BR></TD></TR>
              <TR>
                <TD 
                  class=ubb>&nbsp;&nbsp;<BR><B>快页模式内存</B><BR>在《深入了解内存(三)——DRAM读取过程》一文中我们介绍了DRAM的详细的读取过程,在本文的这一节中我们将要开始了解FPM 
                  DRAM( Fast Page Mode 
                  DRAM),也就是我们常说的快页内存。之所以称之为快页内存,因为它以4字节突发模式传送数据,这4个字节来自同一列或者说同一页。 
                  <BR>如何理解这种读取方式呢?FPM 
                  DRAM如果要突发4个字节的数据,它依然需要依次的读取每一个字节的数据,比如它要读取第一个字节的数据,这个时候的情况同前面介绍的DRAM读取方式是一样的(我们依然通过读取下面的FPM读取时序图来了解它的工作方式):
                  <OL>
                    <LI><BR>首先行地址被传送到行地址引脚,在/RAS引脚被激活之前,RAS处于预充电状态,CAS也处于预充电状态,当然/WE此时依然是高电平,FPM至少知道自己不会进行写操作。
                    <LI><BR>/RAS引脚被赋予低电平而被激活,行地址被送到行地址选通器,然后选择正确的行送到传感放大器,就在/RAS引脚被激活的同时,tRAC开始计时
                    <LI><BR>CAS一直处于预充电状态,直到列地址被传送到列地址引脚并且 
                    /CAS引脚得到一个低电平而被激活(tCRC时间开始计时),然后下面的事情我们也应该很清楚了,列地址被送到列地址选通器,然后需要读取的数据位置被锁定,这个时候Dout引脚被激活,第一组数据就被传送到数据总线上
                    <LI><BR>对于原来介绍的DRAM,这个时候一个读取周期就结束了,不过对于FPM则不同,在传送第一组数据期间,CAS失活(RAS依然保持着激活状态)并且进入预充电状态,等待第二组列地址被传送到列地址引脚,然后进行第二组数据的传输,如此周而复始直至4组数据全部找到并且传输完毕
                    <LI><BR>当第四组数据开始传送的时候,RAS和CAS相继失活进入到预充电状态,这样FPM的一个完整的读取周期方告结束。FPM之所以能够实现这样的传输模式,就是因为所需要读取的4个字节的行地址是相同的但是列地址不同,所以它们不必为了得到一个相同的列地址而去做重复的工作。
                    <LI><BR>这样的工作模式显然相对于普通的DRAM模式节省了很多的时间,特别是节省了3次RAS预充电的时间和3个tRAC时间,从而进一步提高的效率。</LI></OL><BR><IMG 
                  src="深入了解内存.files/12112044080.gif"><BR>我想你一定看到过诸如6-3-3-3这样的内存标注方法,其中的6表示从最初状态读取第一组数据需要6个时钟周期,而读取另外三个数据仅仅需要3个时钟周期就能达到目的了。<BR>需要特别指出的是,在上面的时序图中,我们并没有标注出 
                  FPM 
                  DRAM进行第二个、第三个、第四个数据输出的前进行新的列地址选通的时间,但是从上面的示意图中我们可以看到Col.2同Data1和D2之间都没有重叠,所以这三个数据的输出是进行完毕一个再进行的另一个,因此再上一次数据传输完毕到下一次列地址传输之间还有一点小小的延迟。请看下图:<IMG 
                  src="深入了解内存.files/112421384512.gif"> <BR><B>EDO DRAM( Extended 

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?