存储器层次结构
这里先说一下存储器系统:
寄存器 -----> 高速缓存 -----> 主存储
存储器对程序的性能有着巨大的影响,程序的运行就是对数据的不停的计算和搬移,其中最为耗时的就是程序对数据的搬移。因此,存储器对数据的存取速度是至关重要的。
CPU在访问寄存器中的数据只需要一个周期就可以访问到,在高速缓存中需要4-75个周期,如果在主存器上则需要上百个周期,如果在磁盘上则需要几千万个周期。
如果你理解了系统是如何将数据在存储器结构层次中上上下下移动的,你就可以编写自己的应用程序,使它们的数据存储在较高层次结构的地方,在那里CPU能更快的访问。
先展示出这我们要说的结构图:
随机访问存储器
静态RAM
静态RAM(SRAM),将一个位存储在一个双稳态的存储器单元里面,每个单元由6个晶体管组成。
SRAM得存储单元具有双稳态特性。只要有电,它就会永远的保存它的值,即使有干扰来扰乱电压,当干扰消除之后,电路就会恢复到稳定值。
动态RAM
动态RAM(DRAM),将每个位存储为对一个电容充电,电容小到30毫微法拉的电容。DRAM造的非常密集,每个单元由一个电容和一个访问晶体管组成。
DRAM存储单元对干扰非常敏感,当电容的电压被扰乱之后,它就永远不会恢复了,暴露在光线下也会导致电压改变。由于很多原因会导致电容漏电,所以使得DRAM单元在10-100毫秒时间失去电荷,由于计算机运行周期是以纳秒来衡量的,所以内存系统周期性的将DRAM中的数据读出来在写进去重新刷新内存每一位就可以了。
这种需要动态刷新的存储RAM就被称为动态RAM(DRAM)。
传统的DRAM
DRAM芯片中的单元被分成d个超单元,每个超单元都由w个DRAM单元组成。一个d*w的DRAM共存储了dw位信息。
这一部分比较难懂,主要是它描述的不清,我这里说一说我的理解:
一个DRAM总量被分为d个超单元,这d个超单元是以阵列的形式排列的,d的大小由行r和列c来决定,一般情况r=c=2的addr次方。假设地址线有a根,能传过来的最大地址值就是2的a次方,就可以表示2的a次方个行,2的a次方个列的一个矩阵,所以d就等于2的a次方的平方。每个超单元由w个DRAM基本单元组成,DRAM基本单元应该就是一个位。也就是一个超单元由w位组成,w的大小就应该看数据线的位数了。w=data位数。
以上是我的理解,欢迎一起探讨这一点。
DRAM被连接到内存控制器上之后,通过数据线每次传输w位数据。