将内存放大到100万倍后的样子,它的内部有上百亿个存储单元,存储单元分为晶体管和电容器两部分,这是一个电容器,电容器连接电源后可以为电容器充电,充满电的电容器可以当做电池使用,为其他电器供电,只不过持续的时间非常短,这是一个MOS晶体管,它由栅极源级以及漏极组成,通过向栅极施加一个小电压,电流就能从源极流向漏极,在某些情况下也可以从漏极流向源极,我们可以将电容器与MOS晶体管相连接,就组合成了一个存储单元,当栅极施加电压时,晶体管就能为电容器充电,充满电后往栅极施加电压,电流就会从漏极流向源极,从而导致电容器放电,然后我们就可以这样定义电容器,没有电就定义为零,电容器有电就定义为一,内存中的存储单元并不是线性排列的,而是矩阵排列,我们可以使用单根导线将每列晶体管的源极连接起来称为位线,再使用单根导线将每排晶体管的三级连接起来,称为字线,我们可以分别激活一根位线和一根字线,然后通过两根线的相交来定位任何一个存储单元,为了激活字线,我们需要用到一个称为二进制解码器的组件,解码器可以根据不同的输入激活不同的输出线,比如输入00会激活第一根输出线,输入0一会激活第二根输出线,以此类推,激活位线也一样,在底部再添加一个解码器,这样只需要改变二进制值,通过字线和位线相交就能找到具体的存储单元了,但是实际问题更加复杂,因为激活字线时还没来得及选择位线,这一排的存储单元就输出了,并且输出时会导致电容器放电,使得原本存储一的单元变成了零,为了解决这个问题,我们先这样将电容器的电压充电到一伏代表二进制一,电压放电为零伏代表零,同时将位线也约充电到0.5V,对于这两个充满电的电容器电压大于位线的0.5V,所以电容器会轻微放电电荷来到位线,导致位线的电压增加,而对于没有充电的电容器,电容器的电压小于位线电压,0.5V位线电压会流向电容器,导致位线的电压减小,然后这些电压值的变化会被位线连接的感应放大器检测到,如果位线的电压大于0.5V就读取为一,如果位线的电压小于0.5V就读取为零感应放大器内部有一个锁存器,可以将读取的数据存储在里面,即使是电容器放电了,依旧可以从锁存器读取到数据,但是我们需要读取的是某个单元的特定值,所以还需要添加一个新组件现在我们在下面加一个多路复用器,多路复用器可以根据地址值来确定将哪个数据输出,它内部由解码器和门电路组合而成,我们先不要关心它内部的实现,继续回到电路,单向复用器输入一一时会激活第一根输出线,所以最终得到结果为一,从而获取到特定单元的值,但是有个问题需要考虑,在读取数据时,电容器会充电或者放电,我们需要将他们的电压恢复到原有的状态,解决方法很简单,重新读取感应放大器内部的值,然后发回位线,从而将电容器电压恢复到跟之前一样,这些说的都是读取数据,那写入数据又是如何操作的呢?前面说到的多路复用器是用于读取的,为了写入,我们还需要一个刚好相反的多路复用器,它可以接收单个数据,然后根据地址值来确定将写入数据发送到哪个输出,然后将读取和写入复用器合在一起,就组成了一个新的复用器,它可以在读和写之间切换,现在我们看一下如何写入数据,首先需要将所有位线充电至0.5V,然后根据地址值激活所在单元的字线跟前面一样,这会导致电容器充电或者放电,然后感应放大器会检测这些值并存入锁存器,这跟读取是一样的,写入与读取不同的在于复用器会根据地址值选择一个感应放大器,然后根据写入值一将选中的感应放大器的值修改为一,然后通过位线将所有值发回存储单元,存储单元接着就会根据返回值对选中的字线上所有的电容器进行充电和放电,之所以写入新值时,还重写同一行中的其他值,主要是为了防止数据丢失,写入0也是一样,为线充电至0.5伏,之后电压会发生变化,根据电压值,感应放大器会向锁存器存入相应数据,然后根据地址值,选中感应放大器,然后将值改为0,之后发回位线,电容器就会进行放电,从而写入0,但是存储单元还有一个问题,那就是栅极即使没有打开,依旧会有少量的电荷,从漏极流向源极,从而导致电容器放电,虽然这个过程很慢,但是时间一长就会发生数据丢失。解决方案就是对存储单元进行周期性的自动刷新,刷新会根据原有的数据,对电容器进行充电和放电,刷新周期内,刷新的存储单元会阻止外部的访问,从而会产生一定的延迟。
(这些都是一些基本的原理,实际上的内存要复杂的多,文中只是简单的介绍了一下发展历史与原理)
喜欢重生1986助力国家崛起请大家收藏:(www.shuhaige.net)重生1986助力国家崛起书海阁小说网更新速度全网最快。