找回密码
 立即注册

微信扫码登录

使用验证码登录

搜索
查看: 42|回复: 0

16.第16节课第三章存储器层次结构

[复制链接]

4902

主题

3

回帖

1万

积分

管理员

积分
14804
发表于 2024-4-15 08:59:51 | 显示全部楼层 |阅读模式
同学们大家好,我们接下来看一下我们本章当中的第六节内容,高速缓冲存储器。高速缓冲存储器,也就是我们的cache。本章当中所讲到的有这以下四块内容。第一小节的知识点是catch的基本工作原理,第二节的知识点我们会讲到catch和组成之间的一个映射方式。第三块内容讲到的是catch中组成块的一个替换算法。第四节当中,我们会讲到catch的一个写策略。这也是我们本章当中的内容的主要知识点,也是我们比较重要的一个地方,是我们考试当中的一个重要考点。那么,

我们接着往下看。高速缓冲存储器为什么会出现呢?我们为什么会有一个高速缓冲存储器呢?它是为了解决CPU和储存的速度的一个差异的问题,避免CPU出现一个空能的现象。我们知道CPU的数处理数据的速度是比较快的,但是储存的速度就比较低。那这样的话CPU和主存之间存在一个速度上的一个差异,因此我们出现了我们的缓存。缓存它的特点是容量小,但是速度高,组存的特点是我们的容量比较大,但是读写的速度比较低。在主存与CPU之间,我们加了一个缓存,

从而有效的去解决了CPU和主存之间一个速度的差异问题。我们要了解到的知识点,还有就是程序访问的一个局部性原理。在我们访问程序的时候,有一个局部性的原理,局部性原理分为两种。一个是时间局部性,另一个是空间局部性,什么是时间局部性原理呢?就比如说我们用到一个循环的程序啊,现在我们用到这个信息,我们待会可能循环到。下一次的时候还会用到这个信息,也就是说我们现在使用的信息在最近的未来。还会用到。

这就是我们的时间,局部性,再就是我们所说的空间,局部性啊,也就是说嗯,在近最近的未来,要使用的信息和现在使用的信息。在空间上是临近的,比如说我们顺序存放顺序执行啊,这是我们空间局部性。我们的高速缓存,它是什么意思呢?它是程序正在使用的部分。啊,存放到一个高速度的存储容量较小的一个catch当中啊,

存放在我们一个。速度比较高的嗯,存储器当中啊,容量比较小的一个开始当中,这就是我们所说的高速缓冲存储器好,那我们知道了什么是高?高速缓冲存储器,高速缓冲存储器解决的问题是什么?那我们接着往下看,第一块内容,第一个知识点。就是我们的catch的一个工作原理啊catch的工作原理。再看开锁的工作原理。的时候我们先看一个储存的缓存编制,储存和缓存的编制。

我们看到这张图啊,看到这张图主存储器还有。由组存储块号和块内地址两部分来组成啊,如果说它有m个。主存组块,那么它有它的块内地址是b个字啊b个字好,我们的缓存啊缓存对应的是它的一个。缓有也有两部分组成是缓存块号和块内地址,我们要注意的是我们缓存的块内地址和我们组存的块内地址的。位数是相同的,都是b位啊,有b的,有大b的字嗯,然后我们的呃缓存的存储容量要远远小于我们主存的存储容量。如果它缓存的块号有c块,

那我们组成的块号有m块,那m要远远大于c的啊m是要远远大于c的。每块啊,每个块它会有若干个字节组成大小是块长嗯。开始中块数远远小于组成的块数,也就是我们的c远远小于我们的m啊c块小于我们的m块。同时,我们组存和缓存都是按照块进行存储的啊。块的大小是相同的,也就块内地址的位数是相同的嗯,我们是怎样进行装入开始的数据呢?它是按策略去预测未来,访问存储,访访存数据来装入我们cache是按策略去预预测未来,访存数据来装入我们cache数据。

这是组存和缓存的编制,我们要知道的是,组存的编制是怎么样的?组存是由哪两块来组成的?有我们的组成块号和块的地址。缓存也有我们的缓存块号和块内地址啊,这里要注意的是储存和缓存的啊,和缓存都是按块进行存储的,同时它们块的大小是相同的。啊,这是组存和缓存的编制。那么,我们catch的呃基本结构是什么样子呢?catch它是位于存储器层次结构的顶层,由SRAM来构成的。

由SM来构成的,如果说我们CPU发出一个读的请求啊,发出读的请求仿存地址在catch当中,如果命中的话,我们。就说明catch当中有相应的数据,我们就读catch啊,如果仿存地址在catch当中,没有命中的话。我们就会去读组存啊,进行两步啊,读组存,并且把此字所在的。块调入我们的catch当中,如果说catch已经满了,

这我们就要需要替换catch的。某块信息啊,我们要注意的是,某些计算机它可能会同时去访问主存和catch。同时,访问组成和catch CPU和catch。字是以字为单位,而catch和组存啊是以块为单位的。来,我们接着往下看catch的基本结构啊,看一下这张图呃,如果说我们c这张图当中有地址,总线和组存。CPU还有我们的cache,还有就是cache存储体啊,

下面还有一个数据总线,如果CPU要读取一个数据。啊,读取一个数据。我们嗯。好,接着往下看catch的基本结构啊,我们看这张图有地址,总线CPU储存和数据总线。在这中间呢,我们有组存,还有我们的catch啊,组成的块号啊,有块块号和块内壁纸来组成。catch的地址是块号和块内地址组成,

如果CPU要进行一个读数据,那我们叫。访访问catch啊如果说。命中的话,我们直接从存直接从catch的存储体当中去读取数据。啊,如果说没有命中那么话,那么我们就进行下一步的操作。是否判断是否可以装进啊?也就是说我们的catch当中是否有呃,是否是空的,是否有空的可以装入数据?如果是的话,那我们就访问主存装入cache,如果没有的话,

我们就执行替换机构执行cache的替换机构啊。执行替catch的替换机构访问主存替换catch的内容,这是我们catch的一个基本结构框图,还有它的一个读数据的一个操作。都是由CPU进行超执行和完成的,那么接着我们看一下,我们再看到那个。catch块的时候刚刚不知道同学们有没有注意到catch,前面有一个标记,那么标记是什么呢?它是由CPU,那它是由catch的块,因为catch。那么,标记是什么呢?

呃,由于catch的块儿远远小于组成的块数,因此一个catch。不能唯一的永久的,只对应一个组成号,在开始中每块。外加有一个标记来指明它是组成的哪一块副本,所以该标记的内容包含组成块的一个编号。catch它就是一个组成的一个副本啊,但是因为catch的组成块数远远小于了咱们的组成的块数,所以说catch它并不是说唯一的永久的只对应。一个组成啊,因此我们在开始中就会给它加一个标记啊,来指明它是标的组成的哪一块的内容啊,哪一块内容?

比如说我们组存的地址是这个有组成块号和块内地址啊,组成块号有n块块内地址有k个字。那组成的地址是由LV来组成的,哈lvl=s+w啊s+w。那么,我们对应的catch的呃缓存的呃地址是什么样子呢?它是sv嗯,这个是表示的是一个。缓存的块号啊,缓存块号里面有标记和块号标记是代表着t位和r是。八位是快号那块内地址的话,就是我们呃主存的地址,它们的位数是相同的,都是w位。那的地址是块号,

加上块内地址,前面他还要加上一个什么呀?标记位标记位那标记的长度就等于s位。和我们的组成块号的长度是一样的,而块内地址的长度嗯,和我们的块内地址长度是一样的,是有wv和kw v,也就是k个字。这是我们的标记啊,标记的有效位指的是什么?标记有效位指的是什么啊?每个标记设置有一个有效位啊,机器加电启动时rest信号加。将所有标记的有效位置零啊,即无效,

当它是零的时候,标记为是零的时候是无效的。啊,程序执行过程当中,逐步将指令块和数据块从组存中调入开始中的某一块。并将这一块标记的有效位置一,也就是说我们catch当中有有效位和组成当中,将组成当中的某一块调入到咱们catch中了,那我们将。catch的标记位置一啊,当再次用到这一块中的指令或数据时,就可以直接从catch当中。取指令或者是取相关的数据。质一的时候表示,某组形块已经掉入开始相对应的块中啊,

质零的时候表示还没有任何。组成块掉入开始相对应的块中。如果是质一,那我们当再次使用的时候就可以直接从case当中去读,写数去读数据或者取。指令啊,如果是零的话,表示它没有那么可以把它进行存放啊,把开始把组存当中的数据调入到咱们的开始当中。这是我们的标记的含义啊的内容。那么,我们看完以上两个知识点之后,我们来看一下什么是命中,什么是未命中是吧?我们刚刚也有提到过,

如果说cpu访问。嗯,信息的时候开始当中能够命中能够有这个信息,那我们直接从开始当中去读取信息,如果没有命中,那我们就需要从主权当中。读信息,并且呢,将组成中的信息调入到catch中啊,那我们的命中哈呃,我们命中。就是指的。态词当中有相应的信息那么缓存,共有c块啊,组存共有m块的话,

我们刚刚也提到。储存的容量是远远大于缓存的容量的,那么m就远远大于cm大,远远大于c。命中指的是储存块调入缓存啊。未命中是组存块,没有掉入缓存,没有掉入缓存啊,命中的时候我们组存块与缓存块建立了对应的联系啊,建立了对应的联系,那标记。就标记成什么标记为一,它有它的一个对应的联系啊,标记出咱们是哪一块组成的内容?那如果是未命中,

也就是说缺失的话,组成块与缓存块是没有建立联系的,没有建立联系的。用标记记录某缓存块建立了对应关系的组成块号,这就是我们刚刚所说到的标记的作用啊,它是用于。用标记来记录与某缓存块和建立了对应联系的主存块号的。这是我们的命中和命中率,那么我们知道了命中和命中率之后,我们来看一下开始的命中率啊呃,知道了命中。那我们知道这是我们的命中和未命中,我们知道了命中和未命中之后,我们来看一下catch的命中率。CPU与访问的信息在catch中的比率,

它指的是CPU要访问的信息在catch中所占的一个比率。我们的一个公式是h=nc除,以nc+nm,这里的nc指的是?总的命中次数次数am是指的访问子群的次数啊。用总的命中次数,除以总的命中次数,加上访问组存的次数,就等于我们CPU预访问的信息。在catch中的一个比率就是我们的命中率。未命中率和缺失率是什么啊?命中率与catch的容量啊块长catch与主存的映射都有关系。一般每块可取四到八个字,通常取一个存取周期内从主存调取的。信息的长度啊,

16位交叉体,16体交叉跨长取16个存储字。四体交叉画上去四个纯数字,这是我们的这个概念命中率。好,那我们来看一下嗯catch的储存系统效率是什么啊?catch储存系统平均访问时间是什么?设cache命中率为h访问cache的时间为tc访问组成的时间为TM。那我们的ta也就是说我们组存系统平均访问时间ta它等于我们catch的命中率h乘以。我们访问catch的时间tc+1-h,也就是未命中率乘以访问组存的时间啊。catch的未命中率乘以访问组成的时间就是我们的。再加上我们的h就是命中率乘以k问的时间的和等于主垂系统的平均访问时间。那我们知道了组存系统的平均访问时间,我们就很容易去算我们系统的一个效率。

啊,系统的效率与我们的命中率是有关的,它等于我们访问catch的时间PC。所以我们平均访问的时间。也就等于e=tc除以个h×tc+1-h×tm。啊,也就是系统的效率余物等于我们访问catch的时间除以。我们什么储存系统平均访问的时间啊,就是我们存存平均访嗯,储存系统平均访问时间又等于。我们开始的命中率乘以访问开始的时间,加上我们未命中率乘以主存的访问时间。这是我们组存系统的一个效率好,我们知道了我们这些概念之后,我们来看一个例子例子。

CPU执行一段程序时k次完成,存取的次数为1900次,组存完成,存取的次数为100次。已知k次存取周期为50纳米。主存存储周期为250纳秒,求cache的命中率cache储存系统效率和平均访问时间。好,我们根据我们的公式啊,我们可以算我们catch的命中率h=nc。除以个nc+am的和,也就是等于我们开成完成存取的次数1900次。除以1900+100得到我们的catch的命中率是零点九五。那我们的ta也就是我们的平均访问时间,我们利用公式等于s×tc+1-h×tm。

也就是零点九五×50,加上我们的零点零五×250。得到我们的ta,那我们计算出等于60纳米再算我们的组成系统的呃,效率e=tc÷ta。啊,就等于我们的50啊,除以60等于百分之八十三点三。就是用组存的存取周期去除,以我们的平均访问时间。这是我们的一个计算题啊,这是在计算题当中会有可能考到的,所以我们要理解知道什么是。呃,我们的。

命中率知道什么是系统的效率,它们的计算公式是什么?还有我们的平均访问时间的计算公式是什么?好,这是我们接着往下看。我们看我们的第二个知识点catch的组存的地址映射我们嗯,刚刚讲完了我们的一些概念,然后我们再看我们的地址组成的地址映射。啊,什么是组成的地址映射啊,就是把组成地址空间映射到我们的catch地址空间catch和组成的地址映射,就是把组成的地址空间。映射到catch的地址空间,我们有三种方法,第一个是直接映射,

第二个是我们的全相连映射。第三个是主相连映射,那我们首先看一下直接映射,直接映射,它是指的我们每一个缓存块和若干个。组成块直接进行一个映射啊,直接进行一个映射,比如说我们这张图当中啊t位的cash存储体就是有t位的cash存储体。还有我们的主存储体啊,主存储体。那我们可以看到,在直接映射的过程当中,我们字块零对应的是在组群体主体当中的字块零。还有字块二的c次方和字块二的c+1次方,也就是我们的开始存储体当中。

嗯,字块零字块一到字块二的c次方减一对应的是我们主存出题当中的字块零字块一到字块二的c次方减一。好,同样的,在下一组当中,我们的字块零对应的是字块二的c次方啊,字块一对应的是二的。这块二的c次方加一等等等,然后再下一组进行再一个直接的映射,这是我们的。和直接映射的一个关系。我值得我们注意,并且要知道的是,我们组存储体体的一个。地址是什么啊?

它是由主存储体主存储字块标记和catch的。字块地址以及。字块内。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5432考试网 ( 蜀ICP备2022024372号|川公网安备51152402000101号 )|网站地图

GMT+8, 2024-4-30 21:20 , Processed in 0.074424 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表