找回密码
 立即注册

微信扫码登录

使用验证码登录

搜索
查看: 44|回复: 0

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

[复制链接]

4902

主题

3

回帖

1万

积分

管理员

积分
14804
发表于 2024-4-15 09:00:10 | 显示全部楼层 |阅读模式
是什么啊?它是由主存储体主存储字块标记和catch的字块地址以及。字块内地址来进行组成的啊,也就是组存储字字块标记,加上开始字块地址等于我们的。MV,然后这块地址是bv嗯。这是我们的主存储字。地址,每块缓存I可以和若干若干个组成块对应啊,每个组成块这。只能和一个缓存块对应,我们刚刚也讲到了字块零,它对应的它对应的有。若干个组成组体的组成组块啊,

这块一也是对应了组成体组体当中的。若干个。主存储块,但是我们的这主存储器当中的字块零啊,只能和一个,它只和一个。缓存块进行相对应啊,而且我们每个缓存块和若干个组成块直接对应啊。也就是我们呃,对它进行了一个呃,对I=1个对组存组块进行一个取模的过程呃,取模的过程哈I=g。对c取模也,这是我们的一个直接映射,直接映射它是呃,

如果说。冲突了,它进行一个直接的替换啊,如果说我们在呃开始当中,它已经有存储呃。已经有数据了啊,那冲突了,我们直接把它进行替换掉啊,这种过程的话是实现比较简单,但是不够灵活。同时,空间利用率比较低啊,为了解决这些问题呢,我们又出现了一个呃。全相连映射啊。

出现了全相连映射,那我们看一下刚刚提到的是对。g进行取模的一个过程啊,管形块零,它对应的矩形块是0c啊二的m次方减c。反正块一对应的是一啊c+1啊一直到二的m次方减去个c+1啊。缓存块c- 1对应的是主存块的相应的内容,这是我们的一个呃计算过程啊,是我们的计算过程,也就是我们。嗯,在这个这一块当中组成组块是零嗯,这块零到字块二的c- 1次方对应的是组成组块。块当中的字块零到字块二的最简一次方啊,然后再下一组啊,

它又对应的是什么样的数据啊?这个过程呢?是一个取模的过程啊?是一个取模的过程。好,我们看一个具体的例子,共如果说在缓存块当中,它共有32块,共有32块。啊,对应的一个组成地址是什么样子的啊?标记位是有四位,括号也是有c位就是五位。块内地址是b是七位嗯,我们对应的是零块对应的是这个嗯,

然后一第一块对应的是从这里。对应的是这个,这个33块和65块,这是我们的一个对应的过程。我们看完直接相连嗯,直接映射,我们再看一下全相连映射全相连映射哦,我们看一下catch的存储体和主存储器是什么样子的?字块零,字块零,它对应的啊呃存呃catch存储体当中啊,是可以和我们的这每一个catch的。块对应了我们的字,块零进行了一个全相连,它是按照内容嗯组成的。

组存中的任意一块可以映射到缓存中的任意一块,我们组存当中的任意一块,这块零可以映射到咱们。开始存储体当中的任意字块儿,字字块儿零可以映射到字块儿零缓存当中的字块儿零字块儿一和字块儿二的c次方减一啊。它是一个按内按内容寻子的相连存储器啊,进行一个地址映射,它是按照内容进行。相连的按内容进行寻子的一个相连,它的空间利用率比较高啊,因为每一块都有一个地址,都有一个映射。所以它的一个嗯,空间利用率比较高,命中率也比较高,

但是需要比较全部标记位来判断是否命中啊,它需要比较全部的标记位来判断是否能够命中。从这样的话,它的电路就比较复杂,实现的成本也比较高啊,它的主存储呃地址是这样的,是主存储字块标记,加上字块内的地址。然后这块内的地址主存储的地址是由这些m是由这个来组成的。为了解决权益相连的一些问题,我们又出现了一个主相连。嗯,这是我们的一个例子啊,就是这是它的一个连接方式啊,组成块标记为九块的地址为七啊块的地址为七。

主相连映射啊,出现了一个主相连映射,主相连映射是什么意思呢?它是将catch分成大小相同的组。组与组之间进行直接映射啊,组内进行一个全相连映射,它是将我们的直接映射和我们全相连映射进行了一个结合。将开始分成大小相同的组组之间,进行了一个直接映射组内进行了一个全相连映射。我们来看一下这个嗯例子哈。这是组啊catch,共有q组,共有q组,每组内两块啊,每组内两块I=1。

这是我们的主存储器,这块零到这块m的呃m- 1。在我们的呃组之间,在我们组之间这一组第零组啊,第零组我们进行一个。直接的映射进行了一个直接的映映射,这块零嗯,这块这块零这块对应一个这块二的点二,也就是它进行一个取模运算。而在组内的话,我们进行的是一个全相连的映射啊,某一组存块g按按摩q映射到缓存的第二组中的任意一块啊,因为组内之间是一个。全相连映射,它是对应的,

它的组内的任意一块的啊,任意一块的啊,某一组成块啊,某一组成块在组之间的话,它进行的是一个权限,是一个直接映射,所以它进行一个取模。模啊,在组内的话,它进行的是一个全相连,是对应的第二组的任意一块。那一块这是我们的一个例子啊,我们例子当I=c时全相邻映射,当I=0时为直接映射啊,为直接映射。

我们来总结一下直接映射的话,直接映射的话,某一子型块只能固定映射到某一缓存块,它是固定的哈。全相连映射某一组成块,能映射到任意缓存块,能映射到任意的一个缓存块。主相连是某一组成块,只能映射到某一缓存组中的任意一块。它是分成两种方式的,哈组之间是进行了一个直接相连啊,所以它是嗯,映射到某一缓存组,只能映射到某一缓存组。啊,

在组内它是进行一个全相连啊,组内它就可以映射到任意缓存块啊,任意缓存块。全将来映射不灵活啊。成本比较高。这是我们的嗯,一个嗯,总结啊,那我们知道了这几种映射方式,我们来看一个例子啊,来看一个例子。设组成容,组成容量为512 KB,catch容量为4 KB,每个字块儿为16个字,

每个字为32位。我们来求cash的地址有多少位?可容纳多少块啊?第二位是求组存地址有多少位?可容纳多少块?第三个是在直接映射的方式下组成的第几块映射到test第五块。第四问是画出直接映射方式组成地址字段的各个各段的位数。好,我们来看一下,我们这里面的每一问的怎么来进行求解嗯?第一个cache cache,它的容量为4 KB,那么它的地址有多少呢?4 KB对应的是二的。啊,

是12位是12位地址二的12次方。1 KB=2的十次方对吧,然后四是二的二次方,也就是二的十次方加。二的十次方乘以二的二次方就是二的12次方位,也就是有二的12位地址。那么,它可容纳多少块儿呢?可容纳多少块儿呢?是4 KB除以个16×4=64块儿。因为每块字每个字块有16个字,每个字有32位,32位,它是等于。每个字块有16个,

16个字,每个字有32位,因此是16×4。啊,用四×4 KB除,以16×4=64块。这是我们的第一小题,我们再看我们的第二小题主存地址有多少位,可容纳多少块?我们的组存容量是512 KB 512 KB。那我们呢?对应的是二的19次方啊,也就是有19位地址嗯,19位地址。它的可容纳多少块数跟我们求解,

我们catch的呃内容是一样的,用512 KB除,以个括弧率16×4啊是800。8192块。好,我们来看一下我们的第三位和第四位啊,第三位和第四位,第三位是在直接映射方式下组成的第几块儿,映射到我们的开始的第五块儿。啊运算,我们开始第五块,它是一个直接映射,是一个取模的过程,对吧啊I=g呃对c进行取模的运算,也就是五=g。

呃对64进行取模,它对应的是五六十四加五二乘以六十四二的64次方加上五,然后再是。二的13次方减去64+5啊,因为这个数是小于8192的啊。那第四问第四问,我们来画出它的一个组成地址的啊,字块内的地址是?什么呢?我们先看字块内的地址啊,组成块的地址是由字块内的地址和开始字块地址以及组成字块标记来组成的。我们先看一下字块那个地址,它等于四+2嗯,这是怎么来的呢?因为每个字的块为16个字啊,

每个字为32位啊,为32位。32位对应的是四个字节,四个字节的话,那就是二的二次方啊,二的二次方。所以六个字节是二的四次方,也就是四+2对应的是六位啊六位。缓存的话是有64块,64块对应的是六位啊,六位组存字块。标记是因为它总的标总的位数是19,也就是说用19减去我们cash地址块和。字内地址块的位数就等于我们组存块的标记的位数就是19-12=7。好,

我们要知道这个是怎么来计算的哈,我们第四小题同学们课下的时候也需要去理解一下,理解和练习一下哈。这是我们这一节当中的内容,那我们接着往下看第三个知识点是catch的主存块的替换算法。开始组成块的替换算法啊,它都用哪些替换算法呢?它应用的场景是什么呢啊?它的场景是采用全相连映射和主相连映射时。当catch中的空间已被占满时,我们去采用一些替换算法。啊,这里要注意的是,它是采用全相连映射和主相连映射的时候,我们才会用到这些算法,

有些同学就问了,为什么直接相连不用呢?因为直接相连,它比较简单粗暴。就是直接进行替换啊,直接如果说已经被占满了,那我就直接替换掉它进行更新啊,就不需要采用任何的替换算法。但我们全相连和主相连的设施需要用到一些算法,这些算法包括我们的随机算法和先进先出算法,以及近期最少使用算法。还有最不经常使用算法,这四种算法那么分别看一下随机算法,它指的是什么?随机算法就是随机确定替换cash的块啊,

这样的话实现比较简单,我们随机去替换掉cash的块啊。实现比较简单,但是没有利用局部性的原理,命中率比较低啊,命中率可能会比较低。第二种算法是先进先出算法啊,比如说我们最早调将组成的内容调到开始块当中啊,我们就把它最早的进行替换掉。啊,这种呢,办办法办法是比较容易实现,但是呢,他没有利用局部性原理,命中率也可能比较低啊,

他的。主要的核心点就是替换最早掉入的开始块啊,第三种算法是近期最少使用算法。它利用了局部性原理啊,利用了局部性原理好近期比较使用比较少,那我们后面可能使用的还是比较少啊,所以我们。那个去替换掉长久未访问的catch块啊,替换到长久未访问的catch块,那后那现在不使用,以后可能也很少使用,所以我们就替换掉。以长久为适用的开始画。它的平均命中率要高于先进先出算法啊,它的实现方法呢?

我们用计数器来实现啊,如果命中我们块进行清零将开嗯将。命中块进行清零嗯,其他如果没命中,我们计数器进行一个加一,在我们替换的过程当中,我们找到计数器。当中的最大块儿啊,最大块儿就进行替换啊,因为如果它没有命中,我们就进行一个加一的操作,计数器就是计数器的数量,就计数器就比较大啊,然后我们就替换到计数器中最大的块儿。最大块。

第四种方法是最不经常使用算法啊,它是将一段时间内被访问次数最少的块进行替换啊,计数器命中一次,我们进行加一。啊,计数器如果命中了,我们就应该加一我们替换的是什么?替换的是呃,计数器最小的块,计数器最小块啊,如果说没命中,我们就不加一,所以说我们不使用它,我们的计数器的值就比较小。小所以我们替换计数器最小一块,

这是我们组存档中组成块的一些替换算法啊,替换算法的使用的场景是在全相连和主相连的,这是。catch当中的空间被占满,使我们使用这些替换算法常用的替换算法有四种随机算法,请你先出算法。近期最少使用算法,最不经常使用算法,这是我们第三个知识点好,我们看完第三个知识点,我们接着往下看第四个知识点。catch的写策略。catch的写策略,那catch的写策略,它是什么意思呢啊?

我们catch块,我们知道它是组成的一个副本啊,组成的一个副本,我们catch进行更新时。需要保证k是与我们的组存是相一致的啊k是更新要保证组和组存相一致啊,一个一致性。我们对cache进行读操作的时候是怎么样的呢啊?我们需要对它进行读操作,同时也会需要对它进行一个写的操作,而在读的过程当中,我们CPU发出访问地址。如果是命中,我们直接访问catch,取出信息,送出我们CPU,

然后结束我们的这个过程啊。读操作结束,我们的读操作,如果它没有命中,我们就要进行两步操作,第一步是去访问我们的组存信息。把我们的主存取出信息送到我们的CPU当中,第二步判断cash是否已满。如果满了的话,我们执行替换算法,腾出空位啊,将新如果没满的话,我嗯,如果满了的话,我们执行替换算法,

腾出空位。并且将新的组成块调入我们的catch当中,调入我们的catch当中,如果他没有满的话,那我们直接将新的组成块调入我们的catch当中。啊,这是我们的毒操作,那我们的血操作的话。开始的写操作它啊,因为开始和组存要保持一个一致性啊,保持一个一致性,那我们有两种方法啊,一个是写直达法啊,一个是写回法。写直达法是写操作时数据,

既写入catch又写入我们的组存啊,同时写入catch和组存。写回法是写操作时,只把数据写入cache,而不写入主存。当cache数据被替换出去时,才写回主存。需要在被改写的catch块上设一个标志位啊,你们设一个脏标志啊。乙指示catch是否被写呃?是否被改写过?这是我们的写回法。嗯,总结以上就是cash块与子存块的副本啊,是子存块的一个副本,

还有cash进行。嗯,更新需要保持catch与组成的数据一致啊catch写命中时的写策略和写不命中时的写策略。啊,都有哪些方法写命中时的写策略是写全法啊,也就是写直通法,也就是刚刚我们提到的写直通法。写同时写catch和组成,实现简单保存次数。增加啊,但是它的缓存次数增加效率比较低,写缓冲来用写缓冲来解决速度不匹配的问题。写回法是只写catch块当。块失效时写组成啊,需要标志章位可能不一致啊,

写不命中时的写策略有两种。一是写分配法加裁组成块到开始更新。开始块与写回法合用啊,与我们的写回法进行合用啊。非写分配法啊,只写入组存,不进行较块与写全法进行合用,这是我们的catch的写策略。以上是我们讲到的,我们高速缓冲存储器的主要内容,它包括四个方面,第一部分讲到的是开始的。工作的基本原理啊,第二部分讲到的是它与组成之间的映射方式有哪几种映射方式呀?同学们,

可以想一想,回顾一下啊,第三部分讲到的是我们与组成块的替换算法,嗯,替换算法的应用场景是什么?啊,有哪几种应嗯哪几种替换算法啊?还有就是我们的cash的写策略,这是我们。本章当中,第六小节讲的主要内容。


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

本版积分规则

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

GMT+8, 2024-5-1 02:13 , Processed in 0.070489 second(s), 21 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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