计算机的内存结构和原理
计算机的内存有动态的SDRAM 和SRAM
其中SRAM是指静态内存,内部通过两个自锁的结构保持的结构保持输入的数据,SDRAM是通过电容存储电荷的方式进行存储熟数据,由于电荷的放电特性,需要固定的时间进行充电。SRAM结构要复杂一点,实现的方式需要更多的晶体管,所以功耗大,但是速度快,。SDRAM实现的方式要简单一点,但是需要刷新充电,,同时行列的地址复用,需要更多的时间读取数据,同时读取数据的时候需要预充电,所以速度要慢一点。但是整体的价格要低。
SRAM结构
SRAM的结构如图所示:
有X行地址线,Y地址线,X行地址线控制T5和T6的导通与否,
Y行地址线控制T7和T8的选通与否
(1)写入过程
当写入的时候,XY地址线都选通,此时,T5,T6, T7, T8 都选通了,A点就和IO相连,B点和IO非相连。
当输入1的时候,A为高B为低
输入0的时候,A为低B位高
(2)保持过程
当输入1的时候,A为高B为低 此时T2打开 ,T1关闭,所以 B点被接到低电位 A点维持为高电位
输入0的时候,A为低B位高 ,此时 T2关闭 , T1打开,所以 A点被拉低,B点维持高电位
这个保证了输入的结果不变,但是需要电流比较大,因为用一路的上下连个晶体管都是导通的
(3)数据读取过程
数据读取过程就和写入过程相似,当XY地址选通后,直接输出结果
(4)存储结构
译码方式有单译码和双译码方式,单译码方式就是地址不分XY直接输入一个译码器,同时XY选通线是连接到一个线上,双译码器就是分成两个分别译码。其实没有什么太大的差别。
SDRAM结构
SDRAM的结构如图所示:
也有X地址译码线和Y地址译码线,但是没有了T3和T4的两个贡流的晶体管。
(1)写操作
写入的时候也是X地址和Y地址选通,这个时候T5,T6,T7,T8都打开了,IO口的写入高低电平会影响Cd,C1,C2三个电容上的高低电平,好像是可以先Y选通,给CD充电,然后X地址选通对C1,C2进行充电。所以可以XY地址复用
(2)保持操作
保持数据的时候,XY选通地址都没有选通,所以T5,T6都断开了,A,B两点的数据由于电容的原因被保持了,
比如写入的是 1 ,A点是高电平 ,B点是低电平。C2是高电平,C1是低电平。那么T1被管断,T2被打开,T1管断保证了C2电荷不会被泄露,T2打开确保了C1的电荷被释放,但是由于栅极之间的电容还是会缓慢的放电,所以需要定时刷新一下
(3)刷新操作
由于电荷的放电的原因啊,需要对SDRAM进行刷新操作,那么怎么刷新勒?
1 首先进行预充电,T9,T10打开,对电容CD进行充电,
2 预充结束后撤出预充信号,然后打开X选通信号。T5和T6被打开了
3 这个时候就可以分别对C1和C2进行充电了,但是假设原本的信号是1 那么 C1是0 T1被管断,C2被打开,T2被打开,那么右边的CD给C1充电的时候,会直接泄露到地,所以不会改变原本的存储的数据大小
(4)读操作
读数据的时候也比较麻烦
1 首先进行预充电,T9,T10打开,对电容CD进行充电
2 预充结束后撤出预充信号,然后打开X选通信号。T5和T6被打开了
3 这个时候就可以分别对C1和C2进行充电了,但是假设原本的信号是1 那么 C1是0 T1被管断,C2被打开,T2被打开,那么右边的CD给C1充电的时候,会直接泄露到地,所以不会改变原本的存储的数据大小
4 Y地址选通,这个时候,IO口就会输出结果了
(5)刷新周期
由于电荷的放电有一定的时间,所以必须在一定周期内完全的对整个内存进行刷新,
刷新的方式有三种:
1 集中刷新,在单位时间内集中一起刷新,这段时间不可访问,存在死时间
2 分散刷新,指对每行存储单元的刷新分散到每个存取周期内完成。其中,把机器的存取周期tc分成两段,前半段tM用来读/写或维持信息,后半段tR用来刷新。数据读取频率变慢了
3 异步刷新:在最/128大刷新时间范围内一次对每行刷新次,例如某个SDRAM需要再2ms内刷新,一共有128行需要刷新,那么就每隔T=2ms/128 刷新一次。
SDRAM和SRAM结构的引脚
SDRAM和SRAM的引脚是不一样的,SDRAM的XY引脚是复用的,有XY复用选通信号引脚,但是SRAM没有,就一个地址,不分XY,没有复用。SRAM速度快,价格贵,功耗高,SDRAM价格便宜,速度慢,存储空间大,操作麻烦。
存储扩展
将多个存储器串联或者是并联,分别拓展字节数和数据位数,没有什么好说的
但是有两种交叉存储方式
(1)高位交叉存储
如图所示,是高位的交叉存储方式,将数据线的高几位数输入到译码器中作为单个存储器的选通地址,这样的结构单个存储器中的数据地址是顺序的,可以拓展存储器的空间大小,但是读取数据速度没有提升。
(2)低位交叉存储
低位数的交叉存储方式是最低的地址放入译码器中作为单个存储器的选通地址,这样的结构单个的存储器中的地址是间隔式的,多个之间是串联的,扩容也方便,但是可以提高数据读取的速度,可以采用流水线的读取方式进行读取,提高数据的读取速度
如图所示,有四个单个的存储单元,采用低位数的交叉存储方式,那么可以依次读取M0,M1,M2.M3的地址,让他们分别开始准备数据。然后等第一个的存储器准备好数据后依次的读取M0,M1,M2,M3准备好的数据,进行流水线操作。可以提高读取速度。