RAM基础知识
我们已经提到过,DRAM同SRAM最大的不同就是不能比较长久的保持数据,这项特性使得这种存储介质对于我们几乎没有任何的作用。但是DRAM设计师利用刷新的技术使得DRAM称为了现在对于我们最有用处的存储介质。这里我仅仅简要的提及一下DRAM的刷新技术,因为在后面介绍FP、EDO等类型的内存的时候,你会发现它们具体的实现过程都是不同的。
DRAM内仅仅能保持其内存储的电荷非常短暂的时间,所以它需要在其内的电荷消失之前就进行刷新直到下次写入数据或者计算机断电才停止。每次读写操作都能刷新DRAM内的电荷,所以DRAM就被设计为有规律的读取DRAM内的内容。这样做有下面几个好处。第一,仅仅使用/RAS激活每一行就可以达到全部刷新的目的;第二,DRAM控制器来控制刷新,这样可以防止刷新操作干扰有规律的读写操作。在文章的开始,我曾经说过一般行的数目比列的数据少。现在我可以告诉为什么会这样了,因为行越少用户刷新的时间就会越少。
RAM模块基础:
在前面的一节文章中我们对于DRAM和SRAM的基本工作原理做了一些简单的介绍,在我们所列举的例子中都是介绍了最基本的存储单元的工作模式,所以应该不难理解,看到很多朋友对于这个方面的东西很感兴趣,今天我就继续介绍关于RAM(Random Access Memory)的部分知识。理解这个部分知识,是更好的了解以后我们介绍各种RAM的实际工作情况的基础。
在SRAM或者DRAM的每一个基本存储单位(也就是上一节中介绍用来存储1bit信息的存储单位)都只能存储0或者1这样的数据,而且在上一节中IDT6167和Intel 2188芯片都仅仅只有Din(数据输入)和Dout(数据输出接口),而CPU存取数据的时候是按照字节(也就是8bit)来存储的,那么RAM究竟如何满足CPU的这样的要求呢?
首先为了能存储1字节(8 bit)的信息,就需要8个1bit RAM基本存储单元堆叠在一起,这也意味着这8颗芯片被赋予了同样的地址。下面的示意图可以帮助你比较形象的了解这一点(下图所示的图例中仅仅画了4个存储单元,大家当成8个来看就可以了)。

通常这8颗1bit芯片是通过地址总线和数据总线在PCB(印刷电路板)上连接而成的,对于CPU来说它就是一颗8bit的RAM芯片,而不再是独立的8个1 bit芯片。在上图所示的地址总线位宽是22bit,这样这个地址总线所能控制的存储模块的容量应该是222=4194304bit,也就是4MB的容量;数据总线的位宽是8bit,就是通过刚才提到的8个1bit的基本存储单元的Dout并联在一起实现的--这样也能够满足CPU的要求了。(对于这种存储颗粒我们称之为4194304 x 8模块或者4Mx8,注意这里的“M”不是“MByte”而是“Mbit”)。为了举例说明,我们用一条TI(德仪公司)出品的TM4100GAD8 SIMM内存为例来说明,因为这种内存的构造相对比较简单,便于大家理解。TM4100GAD8基于4M x 8模块制造,容量4MB,采用30线SIMM封装。如果前面我说的东西你看明白了,就应该知道这条内存采用了4Mx1 DRAM颗粒。下面的数据是我在TI官方网站上找到的(目前很少有公司的网站还提供自己以前产品的数据):构造:4194304 × 8。工作电压:5-V。30线SIMM(Single In-Line Memory Module:SIMM)。采用8片4Mbit DRAM内存颗粒,塑料SOJs封装。长刷新期16 ms(1024周期)。

在上面的示意图中,A0–A10是地址输入引脚。/CAS:行地址脉冲选通器引脚。DQ1–DQ8:数据输入/数据输出引脚。NC:空信号引脚。/RAS:列地址脉冲选通器引脚。VSS:接地引脚。/W:写入启用引脚。VCC 5V供电引脚。

上面的电路示意图应该能够让我们更加清楚的理解这个问题,TM4100GAD8由8片4096x1bit芯片组成,VCC和VSS为所有的芯片提供5v的电压。每个芯片都具有/RAS、/CAS、/W引脚同内存相应的引脚连通。每个芯片都具有不同的数据输出/输出接口。这样我们应该就能够知道RAM是如何满足CPU存取数据的需要的了。
关于Bank的问题
前面我们讲述的都是8bit的内存,现在这种东西我们基本上都接触不到了,更常用的是32bit、64bit或者128bit。由于前面我们已经讲到了4Mx1bit模块实现bit输入输出的方法,所以我们很容易想到我们把足够多的芯片放在一个模块中就可以了。不过在实际应用中,仅仅这样做还是不行的,这里就需要引入bank的概念,bank是由多个模块组成的。请看下面的示意图:

上面的示意图显示的是由4组8bit模块组成的一个bank,如果构成模块的是4194304 x 1芯片,那么每个模块的架构应该是4194304x8(4MB),这样4个模块就能组成一个位宽为32bit的bank,容量为16MB。当存储数据的时候,第一模块存储字节1,第二个模块存储字节2,第三个模块存储字节3,第四个模块存储字节4,第五个模块存储字节5……如此循环知道达到内存所能达到的最高容量。
文章读到这里,我们应该能知道,当我们的系统使用这种类型的内存时,可以通过两种方式来增加这种类型内存的容量。第一种就是通过增加每一个独立模块的容量来增加bank的容量,另外一个方法就是增加bank的数目。这样如果让这种类型的内存的容量提升到32MB,可以把每个模块的容量从4MB提升到8MB或者增加bank的数目。
前面我们用来举例的这种30线的SIMM一般是用在486级别的电脑上的,而现在的Pentium级别的电脑所使用的内存同这个是不同的。而截止到现在,我的这篇文章还没有涉及到我们目前所使用的内存,不过不要着急,相信充分的理解我现在所谈论的东西将有助于你理解以后的内容。不过这里可以先告诉大家的是Pentium级别的内存和486系统的内存之间的主要差异在于它们的RAM芯片。
|