都知道计算机用二进制来存储数据,但是计算机是怎么存储0和1的呢?这样一个基础问题,我身为一个计算机专业的大三学生也是在今天才搞懂原理。下面,我来总结一下。
主存储器中分为存储体,MAR(地址寄存器),MDR(数据寄存器)。
其中存储体就是用来存储0和1的。存储体由多个存储单元构成,存储单元又由多个存储元构成。
存储元
下图显示就是存储元:
一个存储元就可以存储一个0或1,由一个电容和MOS管组成。
MOS管就是一个半导体元件,相当于一个可以用电控制的开关,当加电压到阈值,就可以连通导电,否则就不导电。
电容就是两块金属板和中间的绝缘材料组成。
可以看到,一端金属板接地,一端金属板接MOS管。接地那边就是低电压。当有电压高于MOS管的阈值,连接MOS管那边的金属板就会有电压,而接地的那边没有,从而电容两金属板之间形成了电压差,就会导致电容中电荷移动,就会给电容充电,而电信号过去后,由于电压低于阈值,MOS管绝缘,电容中的电就会被保存,从而记录下了1。
就通过电容中是否保存了电荷两种状态来区分0,1。
存储单元
再将多个存储元连接(一般是8个或者16个)形成存储单元,就可以一次读取多个0||1
图中红色线将一排8个存储元的MOS管连通,所以给一次电信号,就会通过红色的线将一排的MOS管连通,每个存储元就会将电容中存储电荷流出到对应的绿色线中。只用判断绿色的线是否有电流就能分辨出0,1信息。
存储体
多个存储单元就构成了存储体。
能够一次读出的存储单元信息,就是一个存储字,字长就是存储单元所含的存储元的个数,一个存储元就是一个bit,所以上图中的存储字长就是8bit。
一个字节=8bit,一个存储字长不一定是8bit,得看由几个存储元构成。
说完了存储体,你还记得文章开头说的主存储器组成部分么?是的还有MAR和MDR
MAR和MDR
MAR地址寄存器,通过地址总线和cpu相连,当cpu传来一个地址,想要读取其地址上的数据时,就会将地址信息传给MAR,MAR再通过译码器,将地址信息译码为存储体总对应地址的自选线序号,也就是某一个存储单元的连通线(之前图中的红线)。给其高电压,输出得到一个存储字,将此存储字的数据存入MDR数据寄存器中,再通过数据总线将读取的存储字传回cpu。