棒棒哒加油哦 (*^▽^*)

在这个小学中我们要学习cache和主存的三种映射方式,那上小杰的没为我们留下了这样的几个问题,由于开始他保存的是储存里边的某一些数据块的副本,那么我们必须考虑到的一个问题,就是如何区分cache和主存他们之间的这种数据块的映射关系,那这个小节要介绍的,cash和储存的映射方式探讨的就是这个主题,那我们总共会学习三种映射方式,第1种叫做全相连映射,如果采用这种映射策略,那么就意味着对于任何一个储存块,它可以存放到cash里的任何一个cash块当中,那采用这种方式就意味着cash里的某一行或者说某一个cash块,它里边的数据有可能来自于储存的任何一个位置,而这是第1种全向丽的映射方式,第2种就要直接映射方式,那直接映射方式就是说储存里的某一个主存块,它只能存放在cache当中某一个规定的位置,那确认的方式是这样的啊我们可以用唇膏。储存里的某一个储存块,它只能存放在cash当中某一个规定的位置,那确认的方式是这样的吧,我们可以用储存块号对这个开始的总块数进行一个取余的操作,那余数是多少?我们就把相应的主存块放到哪个位置,好比如对于这个例子来说cash块的总数应该是有8块,那么对于1号储存块来说,它的存放位置就是1对8取决于等于一好再来看,对于9号组成块,呃9对8取于也等于1,所以如果要把这个主存块的内容调入开始,那么同样的它只能放到啊这个cash快好唯一的这个位置好,所以如果采用直接映射方式,那么就意味着每一个主存块他只有可能会存放到假石里的某一个特定的位置,好接下来看第3种叫组相连映射,那看这个图不能理解就是我们会把cash的各个快进行一个分组,每一组的这个总块数是相同的,比如在这个例子当中我们把8个开始快四个分组分组当中会有两个四个分组分组当中会有两个开那么快。当中会有两个开始快,那么对于任何一个主城快,我们可以用主存块好对分组的总数进行一个区域来确定,某一个组成话它应该放在哪一个分组那这个例子当中总共分了4个分组,那么对于我们1号主存块来说,它可以存放的位置应该是一队4局等于1,也就是说他应该放到第1个分组里面,那第1个分组里面有两个控类,哪个地方有空我们就可以放到那,好大家看9号储存款9对4取余,那么余数应该是等于1,所以就这个数字很快,它也应该放到第1个分组,那同样的第1个分组内哪有空就可以把它放到哪,好,所以这就是这个小节当中要学习的三种映射方式,那回到刚开始提出的问题,我们应该如何区分cash当中存放的是哪个主存款呢?一个比较容易想到的办法是我们可以给每一个开始快或者说每一个开始长建立一个所谓的标记可以记录下来这个号是多少以存款耗尽对于。快或者说每一个开始行建立一个所谓的标记就是可以记录下来这个cash块它所对应的主存块号是多少,以主存块号作为标记好,所以对于呃最左边这个例子来说,如果我们给前三个看是快给他们记录的标记是985,那么意思就是说0号开始快,它存放的数据其实是9号内存块的一个副本,然后1号开始快,它所存放的数据应该是8号,呃内存快的一个副本,那2号开始块也是类似存放的是5号储存块的一个副本好,所以我们可以用组成块的块号来作为标记来记录下来,每一个case块它所对应的数据应该是什么,然后现在看起来好像问题已经解决了,但是是不是只有标记就够了呢?那大家要知道,这所谓的标记在计算机内部,在计算机硬件的层面,其实记录的就是一些二进制的010伊对吧,用二进制来记录组成的块号,那像刚才这个例子当中,我们并没有记录后续这些开始快它的标记可以然而对于计算机硬件来说只有可能是。唉,然而对于计算机硬件来说,所有的二进制位只有可能是0或者1这样的两种状态,不可能出现所谓空的状态啊,所以站在计算机硬件的角度来看,其实刚开始所有的这些啊cash块的一个标记信息肯定都会被初始化为全零这样的一个状态,那后边这些标记都是全零,是不是意味着34567这几个块保存的都是储存块号为0的,这个块的一个副本,显然不对是吧?好所以我们光有标记是不够的,我们还需要增加一个有效位,那有效V可以为0或者为1如果为1的话表示这个标记是有效的,如果为0的话表示这个标记无效,那么像这个例子当中,只有最后这一行积这一行它的有效位是一同时标记为0,那么就说明7号看是块它所存放的数据是0号储存块的一个副本是这个意思好,所以对于每一个开始快来说,除了给它配一个标记之外,还需要给它配一个有效位那这些东西不是直线的看下这三种方式。我们给您这样的一个场景,假设有个计算机各种硬件硬件轮来实现的好,那接下来我们来展开看一下这三种音色方式的一些啊,具体的细节先来看,全乡连映设也就是说可以随意映射这种策略,我们给定这样的一个场景,假设有个计算机,它的主持人历史空间应该是256照字节,并且是按字节编审,然后它的cash总共有8个txt行,那上个省级我们说过看长就是看快,每个K长的大小64个字节,应该是和储存块的大小是保持一致的噢,那我们先给出开始的图,总共有8个开始,行叭个开始快,然后每块的大小是64个字节,总共是512个字节好再来看储存,这么大的储存也是被分为了一个一个的块对吧?那首先256兆个字节就应该是对应2的28次方这么多个字节,所以啊这个储存它的总共的地址位数应该是有28位那二十八十四方得到的结果十二的二十二次方。再除以64也就是2的6次方,得到的结果是2的22次方,那这就意味着整个主存会被划分为2的22次方这么多个主存块,我们可以用前边的22位作为主存块好,然后末尾的6位作为块内地址,那主存块号就应该是从0一直到2的22次方再减1,这是储存块号的一个范围,那每一个主存块的大小是64个字节,也就是每一个主存款会对应64个地址,那我们可以把这些地址的范围给它进行一个标注,第1个主存块他的22位的块号都是0,然后看的地址应该是6个全龄一直到6个全1号回去的都是一样的,然后呢再次强调每一个开始快的这个大小和主存块的大小是相同的,另外这两个部件之间传送数据的单位是以块为单位如何实现我们一定需要有一个有效way整个空荡的有效为零。开始整个开始都是空的,所以所有的有效位都把它记为0,那接下来我们假设要把主存的第0话把它放到开始当中,那么由于采用的是全相联映射,那这就意味着这个主存块可以放到菜市里的任何一个位置,任意一个位置让我们挑选,三这个位置啊放进去那为了区分三,这个K10块它存放的是哪个主存块,因此我们需要在前边记录一个标记,其实就是这个主成块的块号,那之前我们说过储存块的块号总共需要占22位,所以这我们记录了22个零好再来看下一个假设,我们要把这个组成块放到开始当中,那同样的我们可以随意挑一个位置把它放进去,那假设我们挑中的是一这个位置,那把它放进去之后,那么的我们需要修改有效位为一同时把标记这22位的标记把它设置为当前这个快的一个块号,好那后续的之后再展开,总是采用全向的映射,那么任意一个主存块可以放到课室里的任意一个位置,那接下来我们再来考虑这样一个问题,采用这种因素方式如何。来考虑这样的一个问题,采用这种因素方式,那CPU如何访问一个储存的地址呢?假设现在CPU要访问的储存地址是这样的一个地址啊,它的这个储存块号刚好就是我们紫色的这一块的组成块号,好那引入了开始之后是这么做的,首先会去储存地址的前22位也就是取出这个储存块号,用这个主存块号来和cash当中的每一行的标记进行一个对比,如果说某一个cash行的标记和我们这个储存地址的块号是相同的,那么我们在检查这个有效位,当这个有效位为1,同时22位的标记匹配之后,那就说明踏实运动,也就是说我们此时要访问的这个地址,所对应的数据其实在cash当中是存在副本的,那么之前我们说过每一个看10块每一个储存块都是64个字节的大小根据地址来看找到相应的那个自己或者相应的字就可以的情况根据地址来看找到相应的那个自己或者相应的字就可以的情况就是。有效位为1,同时22位的标记,匹配之后那就说明看是命中,也就是说我们此时要访问的这个地址所对应的数据其实在cash当中是存在副本的,那么之前我们说过每一个K10块,每一个储存块都是64个字节的大小,所以接下来我们只需要根据啊后半部分这6位的块内地址来看当中找到相应的那个自己或者相应的字就可以啊,这是命中的情况,那如果说没有命中,就是所有的标记和我们给出的这个主存的储存罐好都不能匹配或者疾病标记匹配啊,但是有消费为零的情况下,那CP就不能访问开始他必须进行一次访问组成的操作,那对于主存的访问如何实现,我们之前已经讲过具体的硬件细节了,这就不再赘述好的,那这就是基于全乡联营社的一个访存单好,接下来我们再看第2种映射方式直接映射,就是说每一个储存块它只能放到固定的位置,具体可以放到什么位置,我们可以用组词块号对cash的总块数进行一个取域,就可以得到。好,接下来我们再看第2种映射方式直接映射,就是说每一个主存块他只能放到固定的位置,具体可以放到什么位置,我们可以用主存块好队开始的,总快速进行一个区域就可以得到,那比如说此时要把0号主存块放到态势当中,那么您对菜式的总块数8取1=0,所以这就意味着0号主存块,他只能放到驾驶的第0行莅临快这个位置好那我们把它放过去,同时还有效率1%,然后标记和刚才一样,我们同样需要记录下这个主题画的一个块号好,接下来假设我们要把8号组织很快给它调入cash,那么由于8对8取于同样等于0,那这就意味着8号储存块它也只能被放到0号开始块这个位置好,所以这个时候我们只能把之前存放在这个数据给覆盖掉,同时要把标记改为8号组成块的一个块号,大家可以看一下翻译成二进制,刚好98那有个就是虽然还存在那有个就是虽然还存在很多。爱好。好,所以如果采用直接映射方式,那有个显而易见的缺点,就是虽然这里边还存在很多很多个空闲的case化,但是这些块我们都用不了,我们只能把储存块放到固定的位置,因此相比于全下列等于说直接映射的这个灵活性要差一些,空间利用率也不充分,好,那接下来要思考这样的一个问题,我们这儿采用了22比特的标记,也就是把整个组成块号都给保存下来了,作为标记那这个方式可不可以进行优化呢?要回答这个问题,我们得回到这是主存块,它的存放位置的一个确定方式,主存块好对cash的总快速进行一个区域,那这个例子当中我们会发现cash的总快速刚好是吧,可以把它写成2的N次方这种形式吧,应该是等于2的三次方,那从二进制的角度来看主存块好对二的三次方进行取余,那这个运算的结果其实相当于我们保留了整个主存块好的末尾三位这也就意味着对于计算机硬件来说。其实相当于我们保留了整个主存块好的末尾三位,这也就是意味着对于计算机硬件来说,硬件不需要去做这种区域的一个操作,计算机硬件只需要把这个主存块好的末尾,三位末尾三位也就是这橙色的这个部分把它给截取下来,这三个二进制位就直接指明了一个主存块,它应该存放在看是种在什么位置,比如刚才的0号块,它的块号的末尾三位刚好是三个0,那三个零对应十进制的零,而8号款它的末尾三位也刚好是三个0,同样也是对应十进制的0,所以这也就意味着这两个储存块肯定是存放在cash的0号这个位置啊,所以这就说明如果说某一个储存块它能够存放在0号开始这个位置,那么这个组成块的块号末尾的三位一定都是零对吧没必要保存所以我们的快速。也反映了他在cache当中的位置,因此我们这存处的标记就没必要存储最末尾的安慰的信息,对于这个例子来说,我们的标记为实际只需要存储19位就可以末尾的三位是可以把它砍掉的,好,那我们把cash的这些cash块号把它翻译成啊二进制的形式,这样的话大家就可以更方便的和右边给出的这些储存的地址进行一个对比,总之主存块号的末尾三位,如果是010,那么这个组成块一定是存放在cash括号同样为010这个位置好,所以经过分析之后,我们可以知道我们在这个例子当中只需要记录内存块号的前边19位来作为标记末尾的三位可以直接把它设计,因此如果采用直接相连映射,那么我们原本的主存块号,我们可以再把它细分为两个逻辑部分前边的19位可以作为看长的一个标记,然后后边的三位反映了每一个主存块号应该存储在哪个开始行这种营销方式如何进行一个方寸。用音色方式如何进行一个访存,假设此时CPU要访问的储存地址是这样的一个地址,这个地址被包含在8号主井块当中,好,那由于强调的是直接映射,所以第1步CPU是不是应该确定这个储存块它会放在cash的哪个位置,那具体的做法就是取出块号的后三位后三位的信息来确定这个储存块,它在开始中的存放位置好,现在我们已经知道它应该是存放在零值位置,所以接下来CPU会对比储存块号的前边19位,用这19位和0号开始块的标记进行一个对比,如果标记相同并且有效位也为1的话,那么就说明看生命中,那接下来再根据这个块内地址在这个看是块当中找到想要的数据就可以,那这是命中的情况,而如果没有民众或者有消费为0的话,那CPU同样还是需要进行保存最后一种就是每一个准。到特定分组当中的任意一个位置,具体应该放到哪个分组那CPU同样还是需要进行缓存好的,那这就是直接映射接下再来看最后一种组相连映射,就是每一个组成块可以被放到特定分组当中的任意一个位置,具体应该放到哪个分组是这么来确定的和一个小熊块号分组数进行一个取域操作,那在这个例子当中假设我们采用了二路的组相联映射,那所谓的二路指的是每两个开始块每一组那总共有8个开始块,所以我们会分为4组就是这个样子啊,所以1号储存块它应该是被放到第1组那第1组里的,任何1个空闲的位置,我们都可以把它放进去,比如说把它放到3这个位置好在看对于下面这个主存块来说,大家可以算一下啊,这个数对4进行曲鱼那么刚好也是等于1,所以我们可以把它放到第1组的任何一个位置,那由于2号是空闲的,所以可以把它放到2号这个位置那个之前类似由于我们的分组四方。这个位置那和之前类似,由于我们的分组数刚好可以写成2的N次方这种形势,那这个例子当中总共是有二的二次方这么多个分组,所以主存块好对分组数据相当于我们只保留了主存块好的末尾两位而末尾的两位祖宗快好,刚好又反映了它所属的分组的组号是多少啊,所以大家并不需要去算这个数对次区域到底是多少,我们只需要直接看他的主存块号末尾的两位是01,那我们就可以确定他对4局于运算的结果一定是01,也就是对应十进制的一,所以应该把它放到第1个分组那和之前类似,既然有可能出现在同一组的这些组成块,他们的块号的末尾两位一定都是相同的就没有必要记录这两位了只需要二十位如何在这个二十二号进一步的细分为逻辑部分前边的就没有必要记录这两位了只需要二十位如何在这个二十二号进一步的细分为逻辑部分前边的二十。好的前20位进行记录就可以,所以如果采用阻箱里面映射,那么在这个例子当中,我们可以把主存块好这22位的这种括号进一步的细分为两个逻辑部分,第1个前边的20位可以作为这个cash行的标记,然后后面的这两位我们可以用来判断这个储存块应该放到哪个分组,也就是反映了总号的信息,好那同样的我们还是来看一下啊,如何进行访存这个地方,我们把每一个cash块它所存储的分组的组号给它标记上去了,可以用两个比特来表示好那来看一下,如果此时CPU要访问的主持人地址是这样的一个地址,那么此时CPU应该先判断这个地址,它所存储的这个储存块如果存放在cash当中,应该是放在第几个分组里面,那具体的判断方法就是只是要取出这个储存块号的后面的两位橙色的这两位然后面两位是零一如果他再那么肯定是放在这个分组当中一个一个。后面两位是01,因此就可以知道如果他在开始中有副本,那么肯定是存放在呃编号为01的这个分组当中啊,所以接下来CPU就可以在这个分组当中一个一个的去对比,这个标记和我们给出的地址的标记是否能够匹配,如果能匹配并且有消费为一,那么就说明开始命中,那接下来再结合这个宽带地址再从这个开始块里边读取出相应的存储单元就可以,好,那这是命中的情况,而如果没有命中的话,那么CPU同样需要对主持人进行访问好的,那这就是最后一种组相连映射方式,那这些小姐姐当中,我们学习了cache和主存的映射方式分为全相联映射直接映射和组相联映射,不同的映射方式对于主存块可以存放在开始的哪个位置,它的限制是不一样的,那由于这种限制不一样,因此当我们要记录cash块和主存块的这个对应关系的时候记录的标记为也会出现一些区别分析一下各种方式的一个邮件对于他的自由度很高我们可以把任何记录的标记为也会出现一些区别分析一下各种方式的一个邮件对于他的自由度很高我们可以把任何一个。江铃音声来说由于它的自由度很高,我们可以把任何一个内存块放到开始里的任何一个位置,因此开始的成长空间会利用的积分,那这就意味着只要看是没满,那么我们就可以继续的往开水里边存入更多的储存快,那这就会导致开始的命中率更高,另一个方面使用全香连音的时候,我们在查找标记的时候,有可能需要把所有的开场它的标记都进行一个对比,所以查不到标记的速度,在三种方法当中是最慢的好再来看,直接映射直接映射和全相联映射刚好是两个极端,它的优点就是对任何一个地址,我们可以直接根据快好来确定,他唯一有可能在开始当中出现的位置,因此我们只需要进行一次的标记,对你就可以确定看是否命中,所以这种方法它的标记的对比速度是最快的另一个方面由于每个主存块只能放到cache的某一个固定位置,所以开始的存储空间利用得会很不充分,同时也会导致cache的命中率降低,而最后这种不香了,因涉其实是上面这两种方法的一个综合综合效果会更好具备。空间利用得会很不充分啊,同时也会导致cache的命中率降低,而最后这种组相连映射其实是上面这两种方法的一个综合综合效果会更好的,组相连映射方式具备了全相联映射的自由度,同时又具备了直接映射的一个标记的对比速度,那大家需要注意在做题的时候有可能会出现恩路组相联映射这样的一个描述,所谓的恩露就是指没Anda开始走了一组好那之后同学们还需要能够根据每一种地址映射方式的地址结构来思考,如果给定一个主存地址,那么CPU是如何拆分地址的,如何查找开始如何怼笔标记,这些也是大家需要掌握的东西。

3.6.3 Cache和主存的映射方式相关推荐

  1. 【计算机组成原理】Cache和主存的映射方式

    Cache和主存的关系 Cache行中的信息是主存中某个块的副本,将内存以块为单位调入Cache供快速访问.内存的数据将被调入到Cache行的数据块中,Cache用于缓和主存和CPU之间的速度矛盾. ...

  2. (计算机组成原理)第三章存储系统-第六节2:Cache和主存的映射方式(全相联映射、直接映射和组相连映射)

    文章目录 一:全相联映射 二:直接映射 三:组相连映射 前面说过,Cache中实际保存的是主存中的数据副本,所以这里会涉及一个很重要的问题:Cache和主存是如何映射的?所谓映射是指把主存地址空间映射 ...

  3. 有关cache、主存地址结构的问题,终于不用再怕了

    Cache和主存的映射方式 下面所提到的字指的是存储字,与容量密切相关. 直接映射 主存: 区 块 字 Cache: 块 字 计算出主存.Cache的总位数. 主存:区+块+字 Cache:块+字 计 ...

  4. 计算机组成原理_Cache与主存的映射方式

    计算机组成原理总目录 Cache与主存的映射方式 1. 全相联映射 在以全相联映射的Cache中,主存中的每一块可以装入Cache中任意位置 故在Cache中,需要能表示主存地址的标记位,以及确保Ca ...

  5. 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的cache的总容量

    5单选(1分) 假定主存地址位数为32位,按字节编址,主存和cache之间采用直接映射方式,主存块大小为1个字,每字32位,写操作时采用直写(Write Throght)方式,则能存放32K字数据的c ...

  6. 计算机组成原理——Cache与主存的地址映射

    Cache–主存的地址映射 由主存地址映象到cache地址称为地址映射 cache的基本结构: Cache的工作过程: CPU发出一个地址,同时发给主存和cache的地址映射机构,CPU会从主存中取出 ...

  7. Cache与主存的地址映像

    Cache与主存的地址映像 Cache 和主存都被分成若干个大小相等的块,每块由若干个字节组成,主存和 Cache 的数据交换是以块为单位. 地址映像 把主存地址空间映像到 Cache 地址空间,即按 ...

  8. Cache与主存的三种地址映射详细解读

    前言 我们知道,Cache又叫做高速缓冲存储器, 它保存的是主存中的一部分数据.当CPU要访问数据时,它会同时发送地址给Cache和主存,如果在Cache中找到了想要的数据,则由Cache直接返回数据 ...

  9. 访问Cache和主存的效率计算问题

    第一,看命中率的定义:CPU欲访问的信息已经在Cache中的比率称之为命中率. 设程序在执行期间,Cache的命中次数是Nc,访问主存的次数是Nm,则命中率H=Nc/(Nc+Nm)H = Nc / ( ...

最新文章

  1. C语言优势大揭露,你还在等什么呢?
  2. integer是值传递还是引用传递_数据值Value传递-高位传递
  3. 20169214 2016-2017-2 《网络攻防实践》实验二学习总结
  4. Microsoft发布新工具,简化JavaScript Web应用的创建
  5. QT mainwindow四件套
  6. 国科大高级人工智能-总结
  7. UDP \TCP详详详详解,你想要的全都有(呕心沥血)
  8. C++自学20:指针/指针的指针/const
  9. python处理时间的标准数据_python数据分析数据标准化及离散化详解
  10. Mock生成随机数据常用的类型规则
  11. js中获取时间new date()的用法和获取时间戳
  12. 不只是槓杆原理~~细说油压煞车
  13. java万年历开题报告_单片机万年历开题报告
  14. 冰汽朋克侦查机器人_冰汽时代困难难度机器人流玩法心得 寒霜朋克困难难度怎么玩...
  15. 止增笑耳的星际迷航前传
  16. INDEX函数与MATCH函数嵌套使用技巧
  17. 计算机激光鼠标,差评终结者:激光鼠标就是比光电的好?
  18. 网络爬虫是干什么的呢?
  19. 1、STM32开发-环境搭建-Keil5安装
  20. UPDATE和DELETE

热门文章

  1. EC20 4G 海思 3520D 拨号失败(APN需要设置为三大运营商的指定值)
  2. 【每日新闻】企业微信与微信消息互通正式开放内测 | IBM宣布针对云原生应用推出Microclimate开发平台
  3. 大概率思维《The House Advantage》
  4. 常用校验注解@NotEmpty,@NotBlank,@NotNull,@Valid,@Validated用法区别,以及搭配 BindingResult使用,嵌套验证等《使用|CSDN创作打卡》
  5. 【强档推荐】网球王子高清桌面壁纸
  6. [转]Visual C++ 和 C++ 有什么区别?
  7. Android 百度地图定位工具类
  8. 数据预处理之白化(Whitening transformation)
  9. cad中lisp文件给恶作剧_[软件心得]我用的CAD,LISP加载文件
  10. 转载一篇知乎上的文章:抖音是如何毁掉我们的?(深度好文)