计算机组成原理学习笔记(三)存储系统(学习王道)

开篇的常规的废话:好了,作者又要开始学习计算机组成原理了,自从经历过美赛的摧残,本蒟蒻对生活的一切充满了热爱,不会认为这个计算机组成原理学习多么困难,反而觉得学自己想学的是很幸福的一件事,能自己决定不用和别人商量是很舒服的!

由于本蒟蒻很傻的买了王道的书却没在它兑换码过期前把最新视频的观看资格兑换回来,所以咸鱼学长那有趣的课程是看不到了,不过这也不重要,毕竟靠人人跑,靠山山倒,相信咱自己的理解能力。

目录

一、主存的简单模型和基本寻址概念

1.主存储器

2.寻址

二、半导体存储器和ROM

1.DRAM的刷新问题

 2.SRAM的协同控制信号

3.只读存储器ROM

三、存储器琐碎概念的小结

(一)存储器的分类的相关知识点

(二)存储器的性能指标相关知识点

 (三)存储器层次化结构一图了解

四、主存与CPU的连接

1.位扩展

 2.字扩展

3.例题 

五、双口RAM与多模块存储器

 1.双端口RAM

2.多模块存储器


一、主存的简单模型和基本寻址概念

1.主存储器

图中红色一条线就是代表一个存储单元(也就是用蓝色框出来的部分),红色一通就接通红色一条线的开关。所有的存储单元构成一个存储体。

 片选线(相当于控制电路的控制开关)有两种工作的模式,分别是高电平有效和低电平有效,它们互相相反,我就选高电平有效解释一下:电位是高电平的时候,开关打开,否则关闭。

 一般地址线的根数是和MAR位数有对应关系;数据线的根数则是和MDR的位数有对应关系。

2.寻址

这个和操作系统里面的寻址有一些相通之处,可以稍微联想记忆一下。

二、半导体存储器和ROM

 值得注意的是:

1.SRAM的行地址与列地址是不一定相等的两段,所以必须组合在一起发送;DRAM则是相等的两段。

2.所谓的集成度就是指存储1个二进制位所需要的电子元件的个数。

3.集成度越高,计算简单,包含的信息量越少;集成度越低,系统分析计算的模型越复杂,包含的内容也越多,分析更彻底。

1.DRAM的刷新问题

 2.SRAM的协同控制信号

这是要讲控制信号的协同实现,但是由于DRAM的控制信号还是要分行与列,所以为了方便理解,我们学习SRAM的控制信号的协同工作原理。

关于读的部分,有一点要记得清楚的就是:读数据那是需要时间的

第一条竖红线的地方地址开始传过来,这时候数据不能马上使用,这是因为这些数据是不同的线传过来的,会有不同程度上的延迟,人类感觉不到,但是机器很敏感的,所以需要一个供它们组织好的时间。

第二条竖红线是打开芯片的开关,开始有读这个动作。

第三条竖红线的时候,数据读完了。但是还要再等一小段时间再去关闭开关。

第四条竖红线表示关闭芯片开关。

第五条竖红线表示这个读的总过程结束了,在它之前可能还是会有多个2~4 线的组合(也就是读数据的小阶段)。

写的阶段和读的是大同小异,不赘叙!

3.只读存储器ROM

RAM这种存储器吧,有一个不好的就是断电会丢失数据,没有办法把数据长期保存,所以被称之为易失存储器。所以我们这里要认识一种断电之后依然可以存储固定数据的存储器,它叫做ROM (Read-Only Memory只读存储器)。

注意了解一下可编程和可擦写的区别:哪怕是最初的只读存储器也是可以编程的,只不过它是在出厂前就由厂家一次性编写好了,之后是不能改的。擦写就是可以擦除然后改写嘛。

三、存储器琐碎概念的小结

(一)存储器的分类的相关知识点

1.主存(也称之为内存)在主机里面,辅存(也称之为外存)在外设(也就是在I/O设备里面);当然了现在计算机为了性能的提升,主机里面还有高速缓冲存储器(就是Cache)。

2.Cache离CPU最近,然后内存次之,外存是不能够与CPU直接交互的。(这是按照层次来分的)。

3.存储器的功能是存储二进制信息的。为了实现这样的功能,它会由不同的材料制成:(1)磁表面存储器;(2)磁芯存储器;(3)半导体存储器(体积比前两种要小);(4)光存储器(少年,你还相信光吗?好吧,其实这里说的是光盘,没错,就是我们小时侯看奥特曼买的那种光盘!)。

4.不同的材料的存储器也会体现出不同的特性:(1)存储方式:随机存取(存取时间与存储位置没有多大关系,常见的有RAM和ROM)、顺序存储(存取时间与存储位置有关系,磁带便是最典型的例子)、直接存取(定位到一个小区域,然后在小区域内顺序存储,代表是磁盘);(2)按照信息的可保存性:易失性(RAM)、非易失性。

(二)存储器的性能指标相关知识点

1.存储容量:存储字数*字长(像1M*8位=8Mb)

2.单位成本:每一个二进制位的价格=总成本/总容量

3.存储速度:数据的传输率=数据的宽度/存储周期(即存储周期内可以存储的数据的位数)

 (三)存储器层次化结构一图了解

四、主存与CPU的连接

还记得芯片各个接口是干什么的吗?这里再提一句:CS是片选线(控制开关),A那是地址(Address),D那是数据(Data),WE是读写控制线。

1.位扩展

如果一个芯片的位不足以满足CPU的需求,那么就有必要将多个芯片合一起工作!这叫位扩展。比如我这个电脑是8位的操作系统(假例子,配合下面这个图帮助理解的,知道你的电脑是64位),但是这里每个小的存储芯片都是1位的,那么就不满足我的要求 !

 2.字扩展

如果想要扩展可存取的数据量(获得更多的可访问的存储单元的个数),那么就要进行字扩展。

上图中,如果只是简单的将两片芯片A、D接口全都并联起来,那么就会导致两个芯片同时传来数据,而CPU是无法区分的(就是说,CPU要有足够多的可选项,但是却不想要同时多选。举个例子就是,古代皇帝想要后宫佳丽三千,但是不会同时临幸多位,好吧,虽然荒淫的皇帝确实会,但是我们就当他身体不行,不会这样做)。所以需要将两片芯片的CS线分别接在A_{13}A_{14}上,并且只允许二者有01或10的组合,这样就能保证二者不会同时工作,也就不会混淆不清数据了。这个说是线选法的思想。

 为了方便实现上述的功能,有一个部件叫做译码器,功能就是说当A_{13}上传输的是1时,它就会把0传输到A_{14}所在的线路上。这就是译码片选法的思想。

 记得看图理解一下什么是线选法和译码片选法(下图是译码片选法)。

注意,上图中ABC那个应该是101,图片有误。然后意思是就是这里的ABC是101翻译成10进制就是5,对应右侧Y下标为5的高电平用1表示。

之前我们有说过,A_{13},A_{14}这两个是连在一起表示,通过译码器,其实可以表示4块芯片的接通情况。那么我们可以考虑如果我们不管A_{14},而是跳着看A_{13}A_{15},他们的组合其实可以起到相同的作用,下图中蓝色一列的左右邻居就是控制信号。这就告诉我们一个信息,译码器是可以自己做一些定义的规则的,做题目的时候一定看清要求,容易挖坑。

3.例题 

(也就是王道书课后题6) 

对于第一问我们要补充知道的一点是:ROM用于系统程序区、RAM用于用户程序区。

因为数据线是8根,所以存储器位数应该是8位;地址的分配是范围从6000H~67FFH(16^{3}\times 6 = 24576,16^{3}\times 6+16^{2}\times 7+16^{1}\times 15+16^{0}\times 15=26623),从十进制的角度可以理解为:24576~26623,相减的2047也就是7FF,不过注意就像从1到3不是只有3-1=2个位置,还要+1,也就是1,2,3这三个位置。同理,2047+1=2048=800H=2K。

那么答案就很显然了,系统程序区我们需要选择2K*8位的ROM,地址线是11根(2K=2^{11})。

同样的道理,用户程序区需要选择1K*8位的RAM,而题目中没有符合要求的RAM,我们则将1K*4位的那个进行位扩展即可(拿两个这样的芯片,反正题目也没说只有一块芯片),而地址线则是10根(1K=2^{10})

并且细致地看下面的标准答案,会发现一些细节,比如说这个地方每4位为一个小组,共有4个小组,第一组都是0110,对应十进制的6。

五、双口RAM与多模块存储器

计算机领域的摩尔定律相信大家都比较清楚吧,那么问题来了,既然CPU每18个月规模都要翻一番,但是主存性能却不能以这样指数级的速度增长,而是线性增长,如何平衡两者之间的差距就是一个重要的问题。这一部分的标题内容就是解决方案,注重于提高存储器工作速度。

在分析标题中这两种特殊的结构之前,我们先回顾一下存储周期的概念:由存取时间和恢复时间组成,存取时间内只能做一次存或者取(也就是读或者取),恢复时间也是必要的。

注意,周期本身就是一个时间概念,与它相对的概念叫做频率。频率是时间的倒数。

 1.双端口RAM

图上内容可以很明白的解读出这样的东西:一个RAM服务于2个CPU,端口的接线有数据线、地址线、控制线。这个了解即可,不是重点。

既然服务于2块CPU,那么情况不外乎以下4种:

(1) 两个端口不同时对同一个地址单元进行存取,这不会有任何问题;

(2)两个端口同时对同一个地址单元进行读取操作,这个也不会有任何问题;

(3)两个端口同时对同一个地址单元进行写入操作,这个就会发生错误了;

(4)两个端口同时对同一个地址单元一个进行写入操作、另一个进行读取操作,就有可能发生读取错误(很显然这会是分不清楚一个读出写入之前的还是之后的);这个问题的解决方法是设置一个“忙”信号:这很像操作系统里面的P、V操作,会由判断逻辑决定先暂停一个一个端口的服务(时间很短),另一个正常运行。

2.多模块存储器

多体并行存储器的运行依赖于它的地址设置方式,下图中前一个是高位交叉编址,高位表示是哪一个体、低位表示是体内的哪一块。 

 因为存储体一个存取周期=存取时间+恢复时间,第二种方法可以理解为好像没有恢复时间(因为不用去管它了,直接看下一个存储体),运行更快。

我们看一下一般题目会怎么出?

概念类型的考题会说总线宽度为mW,那么就是并行输送mW。比如4个模块每个的存储字长是32位的话,那么就可以说这个体系一次可以提供128位。 

似乎从原理来说,m<\frac{T}{r} 的时候就会使得这样的模式没有优势,但是设计者又不蠢,一定会设计成大于的情况,这一点是不需要担心的。题目也不会那么呆,出成那样,重点肯定是考察带宽、周期什么的一些计算。

六、高速缓冲存储器

1.局部性原理

之前提及过,第五小节做的事情就是加强主存的速度!从理论的角度来说,低位交叉编址是很不错的方法!但是,除此以外,硬件还是要做提升的,那么硬件方面的情况就是可以提升速度,但是价格也随着增加。可是,价格就是死穴,就没有办法了吗?

答案是可以的,至少是可以协调的:反正CPU也不是一次全部取所有数据,而且从统计学的角度来说,有些内容是经常被调用,有些则很少。那么,那些经常用的部分我们就调放在比较贵且速度快的区域——高速缓冲器!因为是一部分数据,所以又称之为局部性原理。

举一道例题:

注意,题目说的是提升了多少,而不是问是原来的多少倍! 

具体的局部性原理是操作系统的内容,建议看看我有关操作系统的笔记(我写的纸质笔记,也不打算上传到CSDN了,有需要的可以评论区联系我,我应该会私发的)。 

2.Cache-地址映射

这一个小标题下面是解决这样的一个问题:数据是从主存放到Cache里面的,但是在Cache里面该怎么放?

答:策略有三:

(1)空位随意放(全相联映射)

 首先我先解释一下这个例子的基础设定,Cache每一个小块(行)有3+6位的二进制,前3位是块号,后6位是块内号。主存为了保持和Cache保持一致,选后9位做一样的编排,但是前19位则是不一样的。并且非常值得注意的是,Cache的容量并非64B×8=512B,王道的视频里面不严谨,因为总容量计算应该是“标记阵列+cache的存储容量”。换而言之,这里的512B只是一部分!见下图:

 

因为第一种方法是打算采取随机放置的原则,所以我们不得不考虑区分问题,所以如同上图所展示的,我们必须为Cache设定有效位。现在看上图会发现还有一个漏洞就是如果再存入数据,那么,Cache里面的数据怎么彼此区别?请看下图:

(2)对号入座(直接映射)

所谓的直接映射就是一种取余法。因为我们很清楚,Cache的大小是远小于主存的!就如同上面那个图片中,Cache有8行,主存有2^{22}行。现在看下面这个公式:

j = i mod 2^{c}

j是Cache的行号(对应上图的例子就是0~7),i表示主存的块号,2^{c}则是 Cache中总块数。在该公式的影响下,主存的包括块号为0在内的2^{c}倍数的块号只能存在Cache行号为0的第0行;同理, 主存的包括块号为1在内的2^{c}倍数+1的块号只能存在Cache行号为0的第0行;.......

好吧这个方面的内容实在是太难以讲清楚了,我上传我王道书里面的图片吧:

 (3)按号分组(组内随意,组间相联)

这个的意思是Cache分组,主存也分组,但是主存某一组内的块数与Cache的组数是一样的,主存里面某一块放在哪个分组是固定的,但是在该组内的哪一块就随意了。

我是看这篇文章理解的,也建议大家看一下:

主存到Cache直接映射、全相联映射和组相联映射

Cache中主存块的替换算法

这个不做具体解释,因为实际上就是操作系统的内容:随机算法(RAND)、先进先出算法(FIFO)、最近最少使用算法(LRU)、最不经常使用算法(LFU)。

Cache的写策略

因为Cache中的内容只是主存块的副本,所以对Cache中的内容进行更新时,就需要选用写操作策略使得Cache内容与主存内容保持一致!

对于Cache写命中有两种策略:全写法、写回法

对于Cache写不命中也有两种策略:写分配法、非写分配法

具体内容见下面这个链接:

Cache的写策略

虚拟存储器

不讲,还是操作系统的东西,如果我后期有打算更操作系统的笔记的话,会说的。总之这个还是挺复杂的东西。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值