生活中的大部分物品,基本都满足“好的不一定是最贵的,但是最贵的一定是好的”。在计算机存储体系中,基本满足了上面这句话,就是存储速度越快,价格就会越贵。因为价格的限制,我们在存储器中,就得有个恰当的搭配,以达到价格与性能的平衡。在前面那些大神的不断努力之后,弄出了很多种材料,不同的存储器,最后,得到了下面这张图。
在以前还在的学校的时候,我长期被以下这些名词弄得晕头转向,ROM/RAM/DRAM/SRAM/SDRAM/DDR SDRAM等等,下面,我尽力以上图为参考,从上到下,说明各个层次存储器的特点和区别,并对它们的工作原理做一些简要的说明。
寄存器(Register)
上面的金字塔告诉我们,寄存器是存储器中最快的存在了。寄存器是CPU的内部组成单元,是CPU运算时取指令和数据最快的地方。它可以用来暂存指令、数据和地址。在CPU的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。CPU的算术逻辑部件中,包含的寄存器有累加器(ACC)。下图中蓝色小框里面,全是寄存器。
高速缓存(Cache)与主存
高速缓存和主存都是RAM(Random-Access Memory,随机访问存储器),它分为静态的(SRAM)和动态的(DRAM),分别对应高速缓存和主存。
SRAM只要储存器保持通电,里面储存的数据就可以保持不变。我们也把它叫做双稳定态,即使有干扰,当干扰消除的时候,电路就会恢复稳定值。它的每个单元都是由六个晶体管电路来实现。如下图。
DRAM每个单元是由一个电容和一个访问晶体管组成的,每一位存储就是对一个电容充电。利用电容内部存储电荷的多少来代表这一位是0还是1。但是由于电容有漏电的现象,当有干扰存在时,可能会导致电压被扰乱,从而使数据丢失。所以它需要周期性的充电。由于多种原因导致的漏电,DRAM单元会在10~100毫秒时间内失去电荷。例如由于电容暴露在阳光下会导致电压的改变,利用这一特性,数码相机和摄像机的传感器本质就是DRAM的单元阵列。下表是SRAM和DRAM的对比。
DRAM存储方式
DRAM芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成。一个d*w的DRAM总共就是存储dw位的信息了。(在这里我觉得《深入理解计算机原理》的作者翻译有问题,本书很多地方的翻译都让人读的不够顺畅,这里的有三个‘单元’,其实可以完全还另外一种说法,简单的说就是一个块被分成d个组,每个组都是w个DRAM单元。)超单元被组织成r行c列的长方形阵列,这里d=rc。每个超单元都有形如(i,j)的地址,这里i表示行,j表示列。如下图。
如上图,每个RDAM芯片被连接到某个称为存储寄存器的电路,它的2个addr引脚,携带2位的行和列超单元引脚。当要访问一个超单元时,行地址i称为RAS(Row Access Strobe,行访问选通脉冲)请求。列地址j称为CAS(Column Access