计算机组成原理之存储系统

发布时间 2023-05-30 23:21:43作者: 逆天峰

时间紧,任务重,争取在6月前把计组学完吧.....老天保佑!
image
本章的结构导图。
image
主存储器的模型相对而言还是比较容易理解的,每个存储元存储一个0/1,一行构成一个存储单元,而存储单元和存储字和存储字长都是相对应的概念,分别表示的是这一行的01代码串(存储字),和01代码串的长度(存储字长)。
image
先学过CPU后学的存储系统,首先可以发现,数据只能一行有效,多行同时有效时会产生冲突,所以,每次传进来信号时,需要一个存储单元为1,其余为0,而我们选择哪个存储单元,就需要使得哪根存储单元的信号线为1,其余为0,这不正好和译码器结合起来了吗?
整个捋一遍,地址线过来的地址,放到MAR,MAR后接译码器,被选择的存储单元有效,其余无效,数据暂放到MDR上,MDR后接地址线,方便数据传送。当然这一切得再控制电路的管理下工作,而控制电路又收到来自CPU的控制信号的控制。将整个这一切封装起来,就形成了存储器芯片了。
image
理解了上面的内容,这次的就比较简单了,只需要知道,地址寄存器的位数和总容量相关,数据寄存器和每个单元的长度相关即可。
image
寻址就是寻找信息嘛,按X寻址,就是将所有存储单元按X分组,常见的是按字节寻址和按字寻址,这里的字是机器字,即计算机一次所能处理的位数。组内还有相应的偏移地址。不过总的来说,无论怎么分组,想要彻底的确定一个存储单元的位置,需要的位数是一定的,都是地址寄存器的位数。
image
其余都还好,片选信号有点陌生,片选信号主要用于存储器的扩容,若一些存储器同时开,同时关,则可实现存储单元位数的扩充,若几个存储器只有一个开,其他都是关,则课实现存储单元个数的扩充。若对不同的存储芯片分组,组内同时开关,组外只有一个是开的,则可实现存储单元位数和个数都扩充。
其中若存储矩阵采用半导体材料,则称为半导体存储器,目前一般的电脑都是采用半导体作为材料来存储信息的。
image
而半导体随机存储器(RAM)主要分成两类,分别是SRAM和DRAM,可以从两者的电路结构分析两者的性能和功能,SRAM采用触发器存储信息,根据数字逻辑的知识,触发器可以保持稳定的状态,所以是static静态的,而DRAM采用电容存储信息,需要不断刷新,所以是dynamic动态的。破坏性读出,显然是DRAM的,刷新也是DRAM的专属特性。送行列地址,记住DRAM是分两次送的,而SRAM是一次送的,所以DRAM的地址线通过复用可以减少一半,但也导致了SRAM比较快和DRAM比较慢,这从电路结构和地址线这都能说得通。同时由于SRAM由触发器,而触发器也是由基本逻辑器件堆积的,所以集成度低,发热量大,存储成本高,而DRAM采用电容,只需要电容即可,所以集成度高,发热量小,存储成本低。两者的用途,根据速度的快慢,SRAM常用于Cache,弥补CPU和主存的差别,DRAM常用作主存,大批量存储数据,同时随机存储器都必须实时通电才能保持信息,断电信息无,这也就是断电内存的东西就丢失了的原因。
image
这个了解就行,主要知道存储器采取矩阵存储的目的是为了减少线的数量,莫名想起了折半搜索...复杂度的数量级直接降一半...
image
DRAM的刷新,因为采用电容作为存储介质,所以需要定期刷新。
首先是刷新周期的概念,刷新周期是维护信息的刷新的最小周期,就是说你每个数据起码得在这个时间段内刷新一次,不然信息就无了。还有个概念就是存取周期,也就是读/写周期,就是访问一次内存所需要的时间。然后刷新这个操作所用的时间和存取周期时间相同。每次刷新都是刷一行,剩下的问题就是什么时候刷新?
这里由三种方式解决问题,
1)分散刷新,最省事,我每个读写操作后都进行刷新,我读一行,我刷新一行,我写一行,我刷新一行,这样规律性的设计很简单,但却会大大的浪费时间。
2)集中式刷新,不是说一个周期内每个单元刷新一次就行了嘛,那我就在一个刷新周期内,留下一点时间去刷新,剩下的全用来干自己的事情,优点是没浪费时间资源,缺点是存储器会陷入一段“死机”,因为这一段时间全用来刷新了,所以无法正常工作。
3)异步刷新,结合上面个两种的优点,将所有行的刷新均匀的放在每个时间段内。这个时间段的计算方式就是用刷新周期/行数。第三种方式又充分利用了时间,又使得“死机”对系统的影响降到了最小,为最优的方式。(就是不知道电路设计难不难...)
image
存储器的存取过程,了解即可,只需要知道存取周期除了存取时间还有一个恢复时间即可。

接下来是只读存储器,ROM(Read Only Memary)
image
ROM只需要了解其分类即可,包括掩膜式ROM(MROM),一次可编程只读存储器(PROM),可擦除可编程只读存储器(EPROM),闪速存储器(Flash Memary),U盘就是闪存,以及固态硬盘,人们根据期望不同,用ROM设计出不同的器件达到目的,比如固态硬盘速度就比RAM慢的多,但容量大,当作仓库用再好不过.
接下来是存储系统比较零碎的概念。
image
首先存储系统总的分为,Cache,内存/主存,外存/赋存,而外存属于外设,归IO接口关,Cache直接和CPU打交道,因为速度相近,内存和Cache打交道。
image
存储系统的多级存储系统的组成。
目的便是使整个计算机的速度和最快的CPU的速度一样,而整体的容量和最大的容量磁盘的容量一样,在不断权衡效率和成本的前提下,形成了这种多级存储系统。也像极了社会构成,人体的构成不也是一样吗?大脑用少量的细胞数量占据大多数的能量,四肢细胞数量大但能量消耗少,一切都是自然选择后的结果。
接下来使扩展的一些知识
image
如果位数不够用,则采用位扩展,即同一组地址线,同时控制多个存储器芯片,只不过输出的数据线,依次连接到CPU的数据线即可,读写信号也是相同的,即这几个存储器芯片当作一个芯片看待,每个芯片只保留不同位而已,所以输入的都是相同的,输出依次串起来即可。
image
另一个扩展便是子扩展,也就是存储单元不够了,需要增加存储单元的数量,连接方式,首先位数是够的,我们把每个芯片的输出都与CPU相连,因为我们扩展数量,只是确定哪个芯片在工作即可,同时每次也只有一个芯片在工作。原本输入的地址线还是全部芯片和CPU相连,之后片选信号连接译码器再和CPU的高位相连,即高位确定用哪个芯片,低位决定用哪个存储单元,这样就实现了子扩展。
image
当字和位同时扩展时,可以先进行位的扩展,位的扩展完后进行字的扩展,可以这样理解,子扩展就是分组,位扩展就是每组内进行相互协作。
image
局部性原理主要分为两类,空间局部性和时间局部性,顾名思义,空间局部性大概就是最近的未来要用到的信息,很可能与现在正在使用的信息在存储空间时相近的,时间局部性是指最近的未来要用到的信息,很可能就是现在正在使用的信息。
image
相关概念,命中率就是要访问的数据在Cache中的比率,缺失率就是不再Cache中的比率。