在前几期,我们介绍了CPU是如何执行各类逻辑指令,并识别代表各指令的机器操作码的。
在CPU中,各类运算指令的执行结果最终会被送到内存中。内存的正规学名应当为随机存取存储器(Random Access Memory),缩写为RAM。之所以使用“随机存取存储器”称呼这个部件,是因为RAM具备这样的特性:无论从任何地址读取和写入,都可以直接完成。换句话说,只需要对RAM输入地址和读出指令,就可以读取地址指向的数据。
我们在《软硬件融合技术内幕 基础篇(3) —— CPU外面有什么? (中)》里面提到过RAM对外的输入和输出信号特点:
如图,CPU向A0-A14引脚发出地址信号后,如发出的是写信号,则RAM芯片从I/O0-I/O7上接受数据并执行写入,如发出的是读信号,则RAM芯片读出存储单元的内容,并从I/O0-I/O7上送回CPU。也就是说,RAM的最小分配单位为1bit的存储单元。
在前期《软硬件融合技术内幕 终极篇 (5) —— 中华文明的瑰宝》里面, 我们提到,可以利用D触发器实现寄存器。那么,是不是将足够多的寄存器组合起来,并通过上一节提到的译码器,就可以实现RAM芯片了呢?
我们来看一看D触发器的电路结构:
如图,D触发器由1个非门,2个与门和2个或非门构成。
非门的电路实现如下图:
一个非门需要2个晶体管实现;
如图,一个与门需要6个晶体管实现;
一个或非门需要4个晶体管实现;
我们通过简单的算术运算就可以发现,一个D触发器 (D Type Flip-flop),需要:
2*1 (1个非门)+ 6*2(2个与门) + 4*2 (2个或非门) = 22个晶体管。
显然,这会需要较大的芯片面积,也会提高设计和制造成本。
实际上,经典的SRAM设计不会使用触发器来构造,而是使用下图中的6-transistor Cell设计:
如图,VDD为电源电压,M1/M2和M3/M4是两对互补的三极管对,构成两个反相器。M1/M2的输出和M3/M4的输入互联,而M3/M4的输出又和M1/M2互联,这样,两个反相器的状态可实现互锁。只有WL(Word Line)为低电平的时候,才允许BL(Bit Line)的输入改变两个反相器的状态。如WL为高电平,BL作为输出线,输出SRAM存储单元的内容。
也就是说,BL最终是连接到CPU的数据引脚的,而WL则需要将地址线信号进行译码后分到各个单元。
我们发现,SRAM的特点是工作速度快,只要地址线和读写信号就绪,立即可以完成读写操作,其延迟为门电路的延迟,可做到纳秒级别。但是,SRAM每个bit需要6个晶体管实现,成本较高。
因此,工程师们发明了另一种RAM,叫做DRAM。
DRAM的每个Cell只有一个晶体管和一个电容器。如图,在Wordline为高电平时,在bitline上可以读取电容器的状态(充电或放电),而Wordline为低电平时,bitline的状态可以决定电容器的状态。
显然,与SRAM相比,DRAM大大减少了晶体管数量和电路面积,也就是降低了成本。但是,DRAM也有一些问题:
如何解决这些问题呢?
请看下期。