主存是半导体存储器,根据信息存储的机理不同
SRAM:静态读写存储器(存取速度快)
DRAM:动态读写存储器(存储容量大)
SRAM
SRAM的存储元
如何存储:https://www.bilibili.com/video/BV1G7411F7fj?p=13
注:图有误,64应修改为64
行线所选中的所有存储元构成一个内存单元。此图按4位编址 两根竖线:读写控制线。
存储容量=64
×
\times
× 4b
64个存储单元,每个单元4位。地址码多长? 64=
2
6
2^6
26,地址码6位长。地址线6根,数据4位长,4根数据线
存储器的读写周期
DRAM
电容中电荷的有无表示0,1信息。由于电容存在漏电现象,需要刷新,
读出为破坏性读出,需要重写
RAM采用电容上的电荷来存储信息,而电容上的电荷不可能不丢失,一般情况下,DRAM电容上的电荷只能维持1至2ms,过了这个时间,电荷就丢了,信息也就没了,所以我们要每隔一定时间对其进行刷新,这个时间通常分为刷新周期。
刷新:
刷新周期:两次刷新之间的间隔时间
刷新方法:各芯片同时,片内按行
刷新三种方式:
假设2ms时间内必须完成对所有行的刷新,否则数据会丢失
(1)集中刷新
在一个刷新周期内,利用一段固定的时间,依次对存储器的所有行逐一再生,在此期间停止对存储器的读写操作,这段时间成为“死时间”,又叫访存的“死区”。显然这种方法可以让读写操作不受刷新工作的影响,但是在死区不能访问存储器,CPU只能干等着。
前1ms读写操作,后1ms刷新
好处;控制简单,缺点:没办法读写
注:读写和刷新所作的工作相同,花的时间一样
(2)分散刷新:把对每一行的刷新分散到各个工作周期中去。比较生动地解释就是,原来我的工作只有存取,现在我的工作多了一个,就是在存取完之后顺便再“打扫”一行。这样,一个存储器的系统工作周期分为两部分,前半部分有用正常读、写或保持,后半部分用于刷新某一行。这种方法不存在死区,但是增加了系统的存取周期,如果原来存取周期只有0.5us,现在变成了1us,增加的0.5us要刷新一行。
一次读写一次刷新,导致存取周期变长
(3)异步刷新:前两种方法的结合,它可以缩短死时间,又充分利用最大刷新间隔为2ms的特点。做法是将刷新周期除以行数,得到每两次刷新之间的时间间隔t,逻辑电路每过t就产生一次刷新请求。这样就避免了使CPU等待过长时间,还减少了刷新次数,提高了工作效率。
时间算出来的
多一个环节:刷新请求
参考文章:https://blog.csdn.net/qq_39378221/article/details/80769404