熏完艾灸的注意事项:RAM SRAM DRAM 知识

来源:百度文库 编辑:偶看新闻 时间:2024/05/03 03:52:49

存储原理
 
  RAM(Random Access Memory )随机存取存储器,主要的作用就是存储代码和数据供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 总线将不会显示出来任何的优势,工作的效率将会降低很多。
 
从“线”到“矩阵”
 
  如果RAM 对于CPU 来说仅仅是一条“线”的话,还不能体现实际的运行情况。因为如果实际情况真的是这样的话,在实际制造芯片的时候,会有很多实际的困难,特别是在需要设计大容量的RAM 的时候。
 
  所以,一种更好的能够降低成本的方法是让存储信息的“空格”排列为很多行,每个“空格”对应一个bit 存储的位置。这样,如果要存储1024bits 的数据,那么你只要使用32x32 的矩阵就能够达到这个目的了。很明显,一个32x32 的矩阵比一个1024bit 的行设备更紧凑,实现起来也更加容易。
 
  请看下图。
 
    
 
  知道了RAM 的基本结构是什么样子的,我们就下面谈谈当存储字节的过程是怎样的。
 
  上面的示意图 显示的也仅仅是最简单状态下的情况,也就是当内存条上仅仅只有一个RAM 芯片的情况。
 
  对于X86 处理器,它通过地址总线发出一个具有22 位二进制数字的地址编码,其中11 位是行地址,另外11 位是列地址,这是通过RAM 地址接口进行分离的。
 
  行地址解码器(row decoder)将会首先确定行地址,然后列地址解码器(column decoder)将会确定列地址,这样就能确定唯一的存储数据的位置,然后该数据就会通过RAM 数据接口将数据传到数据总线。
 
  另外,需要注意的是,RAM 内部存储信息的矩阵并不是一个正方形的,也就是行和列的数目不是相同的,行的数目比列的数目少。
 
    
 
  上面的示意图 粗略的概括了一个基本的SRAM 芯片是如何工作的。
 
  SRAM 是“static RAM(静态随机存储器)”的简称,之所以这样命名是因为当数据被存入其中后不会消失。
  DRAM 动态随机存储器不同,DRAM 必须在一定的时间内不停的刷新才能保持其中存储的数据。
 
  一个SRAM 单元通常由4-6 只晶体管组成,当这个SRAM 单元被赋予0 或者1 的状态之后,它会保持这个状态直到下次被赋予新的状态或者断电之后才会更改或者消失。
 
  SRAM 的速度相对比较快,而且比较省电,但是存储1bit 的信息需要4-6 只晶体管制造成本太高了。
  DRAM 只要1 只晶体管就可以实现。
 
SRAM 芯片 
 
  早期的SRAM 芯片采用了20 线双列直插(DIP:Dual Inline Package)封装技术,它们之所以具有这么多的针脚,是因为它们必须:
 
  1) 每个地址信号都需要一根信号线;
  2) 一根数据输入线和一根数据输出线;
  3) 部分控制线(Write Enable, Chip Select);
  4) 地线和电源线。
 
    
 
  上图显示的是SRAM 芯片,但是并不是下面示意图中的SRAM 芯片。
 
  下面的是一个16K x 1-bit SRAM 芯片的针脚功能示意图。
 
    
 
  1) A0-A13 是地址输入信号引脚;
 
  2) /CS 是芯片选择引脚,在一个实际的系统中,一定具有很多片SRAM 芯片,所以需要选择究竟从那一片SRAM 芯片中写入或者读取数据;
 
  3) /WE 是写入启用引脚,当SRAM 得到一个地址之后,它需要知道进行什么操作,究竟是写入还是读取,/WE 就是告诉SRAM 要写入数据;
 
  4) Vcc 是供电引脚;
 
  5) Din 是数据输入引脚;
 
  6) Dout 是数据输出引脚;
 
  7) GND 是接地引脚;
 
  8) Output Enable(OE),有的SRAM 芯片中也有这个引脚,但是上面的图中并没有,这个引脚同/WE 引脚的功能是相对的,它是让SRAM 知道要进行读取操作而不是写入操作。
 
 
  从Dout 引脚读取1bit 数据需要以下的步骤:
 
  1) 通过地址总线把要读取的bit 的地址传送到相应的读取地址引脚,这个时候/WE 引脚应该没有激活,所以SRAM 知道它不应该执行写入操作;
 
  2) 激活/CS,选择该SRAM 芯片;
 
  3) 激活/OE 引脚,让SRAM 知道是读取操作;
 
  第三步之后,要读取的数据就会从DOut 引脚传输到数据总线。
 
 
  写入1bit 数据的过程如下:
 
  1) 通过地址总线确定要写入信息的位置,确定/OE 引脚没有被激活;
 
  2) 通过数据总线将要写入的数据传输到Din 引脚;
 
  3) 激活/CS 引脚,选择SRAM 芯片;
 
  4) 激活/WE 引脚,通知SRAM 知道要进行写入操作。
 
  经过上面的四个步骤之后,需要写入的数据就已经放在了需要写入的地方。
 
DRAM 芯片
 
  DRAM 相对于SRAM 来说更加复杂,因为在DRAM 存储数据的过程中需要对于存储的信息不停的刷新,这也是它们之间最大的不同。
 
  下面让我们看看DRAM 芯片的针脚的作用。
 
  最早、最简单也是最重要的一款DRAM 芯片是Intel 在1979 年发布的2188 ,这款芯片是16Kx1 DRAM 18 线DIP 封装。
 
  “16K x 1 ”的部分意思告诉我们这款芯片可以存储16384 个bit 数据,在同一个时期可以同时进行1bit 的读取或者写入操作。
 
    
 
  上面的示意图可以看出,DRAM 和SRAM 之间有着明显的不同。
 
  首先你会看到地址引脚从14 根变为7 根,那么这颗16K DRAM 是如何完成同16K SRAM 一样的工作的呢?答案很简单,DRAM 通过DRAM 接口把地址一分为二,然后利用两个连续的时钟周期传输地址数据,这样就达到了使用一半的针脚实现同SRAM 同样的功能的目的,这种技术被称为多路技术(multiplexing)。
 
  那么为什么好减少地址引脚呢?这样做有什么好处呢?
  前面我们曾经介绍过,存储1bit 的数据SRAM 需要4~6 个晶体管,但是DRAM 仅仅需要1 个晶体管,那么这样同样容量的SRAM 的体积比DRAM 大至少4 倍。这样就意味着你没有足够空间安放同样数量的引脚(因为针脚并没有因此减少4 倍)。
  当然为了安装同样数量的针脚,也可以把芯片的体积加大,但是这样就提高芯片的生产成本和功耗。
  所以减少针脚数目也是必要的,对于现在的大容量DRAM 芯片,多路寻址技术已经是必不可少的了。
 
  当然多路寻址技术也使得读写的过程更加复杂了,这样在设计的时候不仅仅DRAM 芯片更加复杂了,DRAM 接口也要更加复杂。
 
  DRAM 芯片内部结构示意图如下:
 
    
 
  在上面的示意图中,你可以看到在DRAM 结构中相对于SRAM 多了两个部分:
 
  1) 由/RAS (Row Address Strobe :行地址脉冲选通器)引脚控制的行地址门闩线路(Row Address Latch);
 
  2) 由/CAS(Column Address Strobe :列地址脉冲选通器)引脚控制的列地址门闩线路(Column Address Latch)。
 
 
  DRAM 读取过程如下:
 
  1) 通过地址总线将行地址传输到地址引脚;
 
  2) /RAS 引脚被激活,这样行地址被传送到行地址门闩线路中;
 
  3) 行地址解码器根据接收到的数据选择相应的行;
 
    
 
  4) /WE 引脚被确定不被激活,所以DRAM 知道它不会进行写入操作;
 
  5) 列地址通过地址总线传输到地址引脚;
 
  6) /CAS 引脚被激活,这样列地址被传送到行地址门闩线路中;
 
  7) /CAS 引脚同样还具有/OE 引脚的功能,所以这个时候Dout 引脚知道需要向外输出数据;
 
    
 
  8) /RAS 和/CAS 都不被激活,这样就可以进行下一个周期的数据操作了。
 
 
  DRAM 的写入的过程和读取过程是基本一样的,只要把第4 步改为/WE 引脚被激活就可以了。
 
DRAM 刷新
 
  我们已经提到过,DRAM 同SRAM 最大的不同就是不能比较长久的保持数据,这项特性使得这种存储介质对于我们几乎没有任何的作用。但是DRAM 设计师利用刷新的技术使得DRAM 成为了现在对于我们最有用处的存储介质。
 
  DRAM 内仅仅能保持其内存储的电荷非常短暂的时间,所以它需要在其内的电荷消失之前就进行刷新直到下次写入数据或者计算机断电才停止。
 
  每次读写操作都能刷新DRAM 内的电荷,所以DRAM 就被设计为有规律的读取DRAM 内的内容。这样做有下面几个好处。
 
  1) 仅仅使用/RAS 激活每一行就可以达到全部刷新的目的;
 
  2) 用DRAM 控制器来控制刷新,这样可以防止刷新操作干扰有规律的读写操作。
 
  在文章的开始,曾经说过一般行的数目比列的数据少,原因就是:行越少用户刷新的时间就会越少。