上一篇链接:
每天两小时学习计算机组成原理——一个学期的第七八九天,希望能坚持长久(第三章直接完结篇)✨
前言
时隔多日啊,之前一直在学习C#和Android 的开发,导致计组的学习进度停歇不前,那直到前段时间我们老师也讲到了第四章,我才意识到我的学习进度已经落后了,所以之后的一段时间会抽空好好学习计组,起码不落下。
提示:如果对前两部分已经有所了解的可以直接跳转到主存储器。
第四章主要内容分析
那这一章也是我们整个计组这本书中最重要的一个章节,建议大家一定要好好理解并掌握其中的重点知识。
我们首先来看一下我们这一章的主要内容:
那对应的要求如下:
我们都知道越是难得内容就越有可能出大题,所以重难点也基本是考试的必出项:
概述
存储器分类
那这部分就是了解,看到能做个选择题就足够了。
-
按存储介质分类
这里补充一点,MOS半导体存储器是具有高集成度的特点,而且成本低,功耗小所以被广泛使用。
这里补充二点,光盘存储器由于记录密度高,耐用性好,可靠性高等特点越来越被计算机系统采用。 -
按存取方式分类
这一部分就是根据存取时间与地址的关系进行分析,要说明一点,我们现在所看到的的随机存储器不能算是真正意义上的。那其实只要是无物理地址无关进行随机访问的存储器都算是随机存储器。那由于一些原因,所以我们将随机存储器分为下面的两个小类,一个可读可写的随机存储器和只能读的只读存储器。
-
按在计算机的作用分类
其中的Flash Memory,我们生活中的U盘就是用其制作的,它是半导体存储器,当然Flash Memory除了作为便携式存储器之外,还可以作为计算机的硬盘(固态SSD就是其中一种)。
那我们总结一下就是:
存储器的层次结构
那我们知道存储器是计算机中用于存储程序和数据的重要部件。我们买电脑永远都想要一个价钱便宜,运行速度快容量大的电脑。可惜,这不是我们能够拥有的,这本身也很难达到,那上面的图反映了三者的关系,我们发现在一个计算机系统中我们会使用很多种储存器,那这个层次结构就是为了解决我们用户的要求想出来的一个存储体系。
存储体系是什么意思:把两种或者两种以上的存储介质构成的储存器,用软件或硬件或软硬件相结合的形式把它连接成一个整体,使得从某一级的程序员的角度去看,这个整体具有速度快、容量大、价格低的特征。
当然我们这个存储体系的实现也有前提:(了解即可,感兴趣可自行搜索)
补充一点:现代计算机的存储器结构又新增了一个层次:(了解即可)
我们继续往下进行,实际上存储系统层次结构的主要体现在缓存-主存与主存-辅存这两个存储层次上。
那我们举得这个例子中CPU的数据传输速度是10ns,其实已经是很慢的了,我们这里不研究最新最快的,只讨论经典的案例。
那缓存与主存之间的数据调动是由硬件自动完成的,对程序员是透明(类似黑盒)的,也就是无需去了解的,而主存-缓存的这个层次是采用软硬件相结合的方法完成的。
解决问题:
缓存-主存层次要解决CPU与主存速度不匹配的问题,
主存-辅存层次解决存储系统的容量问题。
那随着不断地发展,主存-辅存层次形成了虚拟存储系统。这里我们就要探讨一下这个虚拟存储器中的地址是怎么定义的,到底是主存储器的地址还是辅存的地址呢。这里我们提出了一个新概念:虚地址。
其实这个虚地址也就是我们在编写程序时的逻辑地址。那真正的物理地址是程序被装入到内存或者是指令要被执行的时候由特定的“机构”,将虚地址转化成内存当中的地址。
而前者缓存-主存层次使用的地址就是主存中的物理地址。这也就变相的告诉我们缓存是按照内容去查找的,即使给出一个地址也是缓存块的编号。所以我们要将主存中的地址转换成缓存中的块号或块内偏移地址完成信息的读取。
这一部分其实书上也说了,大家可以去“计算机体系结构”和“操作系统”这两本书上学习。有兴趣的自学。
主存储器
概述
那讲到主存就离不开CPU,我们首先来看一个结构:(暂不分析辅存)
我们将主存储器单独拉出来分析:
我们在第一章其实就已经分析过了主存中的组成结构,那我们这次主要来了解其中的工作流程,右侧就是主存中三个部件的工作流程图。
那右图的简要分析流程:
地址寄存器MAR接收外部的地址,那这个地址就是去定位存储体中的存储单元,之后这个存储单元的内容就会自动输出到数据寄存器MDR中暂存之后CPU就会将存的数据取走。那整个过程由一个时序控制逻辑控制。
我们再将存储体单独拉出来分析,我们的存储体是怎么进行存储的呢?(涉及到数字电路了好像)
这里我们用其中的一个实现结构进行举例说明:(不用在意结构是否完全一致,工作模式是一致的)
我们假设实现读过程:我们在电容处进行存储,存一个“1”,那我们就可以通过开关器件接收一个读的信号,之后将电路连通,之后就可以将信息读取。
注意:1只是举例,有可能为别的信号