您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > 深入了解内存(SRAM、DRAM、SDRAM)
深入了解内存(SRAM、DRAM、SDRAM)目录第一章RAM的基本原理1.1寻址原理概述1.2从“线”到“矩阵”1.3DRAM基本存储单元结构第二章SRAM的基本原理2.1SRAM芯片的引脚定义2.2SRAM芯片的读写操作概述第三章DRAM的基本原理3.1多路寻址技术3.2DRAM的读取过程和各种延时3.3DRAM的刷新3.4快页模式DRAM3.5扩展数据输出DRAM第四章SDRAM的基本原理4.1SDRAM芯片的引脚定义4.2SDRAM芯片的初始化和模式寄存器的设置4.3SDRAM的指令例表4.4SDRAM的读取过程分析4.5SDRAM的CAS延迟4.6SDRAM的写入过程分析第一章RAM的基本原理●1.1寻址原理概述RAM主要的作用就是存储代码和数据供CPU在需要的时候调用。但是这些数据并不是像用袋子盛米那么简单,更像是图书馆中用有格子的书架存放书籍一样,不但要放进去还要能够在需要的时候准确的调用出来,虽然都是书但是每本书是不同的。对于RAM等存储器来说也是一样的,虽然存储的都是代表0和1的代码,但是不同的组合就是不同的数据。让我们重新回到书和书架上来,如果有一个书架上有10行和10列格子(每行和每列都有0-9的编号),有100本书要存放在里面,那么我们使用一个行的编号加一个列的编号就能确定某一本书的位置。如果已知这本书的编号87,那么我们首先锁定第8行,然后找到第7列就能准确的找到这本书了。在RAM存储器中也是利用了相似的原理。现在让我们回到RAM存储器上,对于RAM存储器而言数据总线是用来传入数据或者传出数据的。因为存储器中的存储空间是如果前面提到的存放图书的书架一样通过一定的规则定义的,所以我们可以通过这个规则来把数据存放到存储器上相应的位置,而进行这种定位的工作就要依靠地址总线来实现了。对于CPU来说,RAM就象是一条长长的有很多空格的细线,每个空格都有一个唯一的地址与之相对应。如果CPU想要从RAM中调用数据,它首先需要给地址总线发送地址数据定位要存取的数据,然后等待若干个时钟周期之后,数据总线就会把数据传输给CPU。下面的示意图可以帮助你很好的理解这个过程。上图中的小圆点代表RAM中的存储空间,每一个都有一个唯一的地址线同它相连。当地址解码器接收到地址总线送来的地址数据之后,它会根据这个数据定位CPU想要调用的数据所在的位置,然后数据总线就会把其中的数据传送到CPU。上面所列举的例子中CPU在一行数据中每次只是存取一个字节的数据,但是在现实世界中是不同的,通常CPU每次需要调用32bit或者是64bit的数据(这是根据不同计算机系统的数据总线的位宽所决定的)。如果数据总线是64bit的话,CPU就会在一个时间中存取8个字节的数据,因为每次还是存取1个字节的数据,64bit总线将不会显示出来任何的优势,工作的效率将会降低很多。●1.2从“线”到“矩阵”如果RAM对于CPU来说仅仅是一条“线”的话,还不能体现实际的运行情况。因为如果实际情况真的是这样的话,在实际制造芯片的时候,会有很多实际的困难,特别是在需要设计大容量的RAM的时候。所以,一种更好的能够降低成本的方法是让存储信息的“空格”排列为很多行--每个“空格”对应一个bit存储的位置。这样,如果要存储1024bits的数据,那么你只要使用32x32的矩阵就能够达到这个目的了。很明显,一个32x32的矩阵比一个1024bit的行设备更紧凑,实现起来也更加容易。请看下图1:图1图2知道了RAM的基本结构是什么样子的,下面我们就谈谈RAM存储字节的过程是怎样的:上面的示意图1显示的也仅仅是最简单状态下的情况,也就是当内存条上仅仅只有一个RAM芯片的情况。对于X86处理器,它通过地址总线发出一个具有22位二进制数字的地址编码--其中11位是行地址,另外11位是列地址,这是通过RAM地址接口进行分离的。行地址解码器(rowdecoder)将会首先确定行地址,然后列地址解码器(columndecoder)将会确定列地址,这样就能确定唯一的存储数据的位置,然后该数据就会通过RAM数据接口将数据传到数据总线。另外,需要注意的是,RAM内部存储信息的矩阵并不是一个正方形的,也就是行和列的数目不是相同的--行的数目比列的数目少。(后面我们在讨论DRAM的过程中会讲到为什么会这样)上面的示意图2粗略的概括了一个基本的SRAM芯片是如何工作的。SRAM是“staticRAM(静态随机存储器)”的简称,之所以这样命名是因为当数据被存入其中后不会消失(同DRAM动态随机存储器是不同,DRAM必须在一定的时间内不停的刷新才能保持其中存储的数据)。一个SRAM单元通常由4-6只晶体管组成,当这个SRAM单元被赋予0或者1的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。SRAM的速度相对比较快,而且比较省电,但是存储1bit的信息需要4-6只晶体管制造成本太高了(DRAM只要1只晶体管就可以实现)。●1.3DRAM基本存储单元结构不管你相信不相信,目前主流内存中的RDRAM(Rambus)、DDRSDRAM、SDRAM甚至是EDORAM的基本结构都是相同的,它们都是属于DRAM(DynamicRAM:动态随机访问存储器)。所有的DRAM基本存储单元都是由一个晶体管和一个电容组成。这样的基本存储单元的架构是目前最经济的方式,电容的状态决定着内存基本存储单元的逻辑状态是“0”还是“1”--充满电荷的电容器代表逻辑“1”,“空”的电容器代表逻辑“0”,不过正是因为使用了电容器所以产生了一些局限性。电容存储的电荷一般是会慢慢泄漏的,这也就是为什么内存需要不时的刷新的缘故。电容需要电流进行充电,而电流充电的过程也是需要一定时间的,一般是0.2-0.18微秒(由于内存工作环境所限制,不可能无限制的提高电流的强度),在这个充电的过程中内存是不能被访问的。从技术上讲,实现内存的定时刷新并不是什么难事,DRAM厂商指出这种刷新操作必须每64ms进行一次,这也就意味着DRAM基本存储单元大约有1%的时间用在了刷新上。对于DRAM来说最大的问题是,读取内存会造成内存基本存储单元中的电荷丢失,所以每当DRAM被访问之后都要进行刷新,以维持访问之前的状态,否则就会造成数据丢失。当然拿出专门的时间进行刷新,也就增加了访问时间,提高了延迟。SRAM(StaticRAM)则不存在刷新的问题。一个SRAM基本存储单元由4个晶体管和两个电阻器构成,它并不利用电容器来存储数据,而是通过切换晶体管的状态来实现的,如同CPU中的晶体管通过切换不同的状态也能够分别代表0和1这两个状态。正是因为这种结构,所以SRAM的读取过程并不会造成SRAM内存储的的信息的丢失,当然也就不存在什么刷新的问题了。SRAM可以比DRAM高的频率来运行,主要是因为获取前8个字节的时间延迟大大缩短了。SRAM需要2-3个时钟周期来得到想要的数据(这里我们暂时忽略CPU、芯片组和内存DIMM控制电路之间的延迟),不过同样的过程DRAM需要大约3-9个时钟周期。当然因为构造不同,SRAM和DRAM存储1bit数据的成本是不同的,前者大约是后者的4倍--因为它的所需要的晶体管数目是后者的4倍以上。SRAM因为存取延迟时间非常的短,所以它的工作频率能够达到很高,因此可以带来更高的带宽。第二章SRAM的基本原理●2.1SRAM芯片的引脚定义早期的SRAM芯片采用了20线双列直插(DIP:DualInlinePackage)封装技术,它们之所以具有这么多的针脚,是因为它们必须:•每个地址信号都需要一根信号线•一根数据输入线和一根数据输出线•部分控制线(WriteEnable,ChipSelect)•地线和电源线下面的是一个16Kx1-bitSRAM芯片的针脚功能示意图:•A0-A13是地址输入信号引脚•/CS是芯片选择引脚,在一个实际的系统中,一定具有很多片SRAM芯片,所以需要选择究竟从那一片SRAM芯片中写入或者读取数据•/WE是写入启用引脚,当SRAM得到一个地址之后,它需要知道进行什么操作,究竟是写入还是读取,/WE就是告诉SRAM要写入数据•Vcc是供电引脚•Din是数据输入引脚•Dout是数据输出引脚•GND是接地引脚•OutputEnable(/OE):有的SRAM芯片中也有这个引脚,但是上面的图中并没有。这个引脚同/WE引脚的功能是相对的,它是让SRAM知道要进行读取操作而不是写入操作。●2.2SRAM芯片的读写操作概述从Dout引脚读取1bit数据需要以下的步骤:▲SRAM读取操作1)通过地址总线把要读取的bit的地址传送到相应的读取地址引脚(这个时候/WE引脚应该没有激活,所以SRAM知道它不应该执行写入操作)2)激活/CS选择该SRAM芯片3)激活/OE引脚让SRAM知道是读取操作第三步之后,要读取的数据就会从DOut引脚传输到数据总线。怎么过程非常的简单吧?同样,写入1bit数据的过程也是非常的简单的。▲SRAM写入操作1)通过地址总线确定要写入信息的位置(确定/OE引脚没有被激活)2)通过数据总线将要写入的数据传输到Dout引脚3)激活/CS引脚选择SRAM芯片4)激活/WE引脚通知SRAM知道要尽心写入操作经过上面的四个步骤之后,需要写入的数据就已经放在了需要写入的地方。第三章DRAM的基本原理前面我们知道了在一个简单的SRAM芯片中进行读写操作的步骤了,然后我们来了解一下普通的DRAM芯片的工作情况。DRAM相对于SRAM来说更加复杂,因为在DRAM存储数据的过程中需要对于存储的信息不停的刷新,这也是它们之间最大的不同。●3.1多路寻址技术最早、最简单也是最重要的一款DRAM芯片是Intel在1979年发布的2188,这款芯片是16Kx1DRAM18线DIP封装。“16Kx1”的部分意思告诉我们这款芯片可以存储16384个bit数据,在同一个时期可以同时进行1bit的读取或者写入操作。上面的示意图可以看出,DRAM和SRAM之间有着明显的不同。首先你会看到地址引脚从14根变为7根,那么这颗16KDRAM是如何完成同16KSRAM一样的工作的呢?答案很简单,DRAM通过DRAM接口把地址一分为二,然后利用两个连续的时钟周期传输地址数据。这样就达到了使用一半的针脚实现同SRAM同样的功能的目的,这种技术被称为多路技术(multiplexing)。那么为什么要减少地址引脚呢?这样做有什么好处呢?前面我们曾经介绍过,存储1bit的数据SRAM需要4-6个晶体管但是DRAM仅仅需要1个晶体管,那么这样同样容量的SRAM的体积比DRAM大至少4倍。这样就意味着你没有足够空间安放同样数量的引脚(因为针脚并没有因此减少4倍)。当然为了安装同样数量的针脚,也可以把芯片的体积加大,但是这样就提高芯片的生产成本和功耗,所以减少针脚数目也是必要的,对于现在的大容量DRAM芯片,多路寻址技术已经是必不可少的了。当然多路寻址技术也使得读写的过程更加复杂了,这样在设计的时候不仅仅DRAM芯片更加复杂了,DRAM接口也要更加复杂,在我们介绍DRAM读写过程之前,请大家看一张DRAM芯片内部结构示意图:在上面的示意图中,你可以看到在DRAM结构中相对于SRAM多了两个部分:由/RAS(RowAddressStrobe:行地址脉冲选通器)引脚控制的行地址门闩线路(RowAddressLatch)和由/CAS(ColumnAddressStrobe:列地址脉冲选通器)引脚控制的列地址门闩线路(ColumnAddressLatch)。●3.2DRAM的读取过程和各种延时1)通过地址总线将行地址传输到地址引脚2)/RAS引脚被激活,这样行地址被放入到行地址选通电路中3)行地址解码器(RowAddressDecoder)选择正确的行然后送到传感放大器(senseamps)4)/WE引脚被确定不被激活,所以DRAM知道它不会进行写入操作5)列地址通过地址总线传输到地址引脚6)/CAS引脚被激活,这样列地址被放入到列地址选通电路中7)/
本文标题:深入了解内存(SRAM、DRAM、SDRAM)
链接地址:https://www.777doc.com/doc-4819399 .html