精华内容
下载资源
问答
  • 计算机组成原理----Cache主存地址映射(计算题)

    万次阅读 多人点赞 2019-10-22 13:36:34
    一、直接映射 计算方法 二、全相联映射 计算方法 三、组相联映射 计算方法 例题1(课本P120页例4.8): 例题2(课本P120页例4.9) 按照字节编址和按字编址的区别: 补充1: 补充2: 一、直接映...

    注:参考课本《计算机组成原理》(第二版)唐朔飞编著

    注:下文部分图片摘自哈尔滨工业大学《计算机组成原理(上)》慕课

    注:学的不好,博文可能有雾(欢迎指正~

    目录

    一、直接映射

    计算方法

    二、全相联映射

    计算方法

    三、组相联映射

    计算方法

    例题1(课本P120页例4.8):

    例题2(课本P120页例4.9)

    按照字节编址和按字编址的区别:

    补充1:

    补充2:


    一、直接映射

    计算方法:

    • 主存地址长度:主存中存储单元个数为2^{10},则主存地址长度就是10
    • Cache地址长度:Cache中存储单元个数为2^{10},则Cache地址长度就是10
    • t:主存地址长度 - Cache地址长度
    • c:Cache可以被分为2^{c}
    • m:主存可以被分为2^{m}
    • b:块长为2^{b}(按访存地址计算)
    • m = t + c 
    • m=主存地址长度 - b
    • 主存地址长度 = t + c + b 

    二、全相联映射

    计算方法:

    全相联中的t,c,b,m和直接映射中的都一样,所以计算方法同上。

    三、组相联映射

    计算方法:

    • 2^{c} 表示Cache的总块数
    • 2^{q} 表示Cache分组个数(分组个数=分块个数/组内块数)
    • 2^{r} 表示组内包含的块数(r=1,每组包含2块,叫做二路组相联)
    • s = t + r
    • q = c - r

    例题1(课本P120页例4.8):

    假设主存容量为512KB,Cache容量为4KB,每个字块为16个字,每个字为32位。问: 
    (1).Cache地址为多少位?可容纳多少块? 
    (2).主存地址为多少位?可容纳多少块? 
    (3).在直接映射方式下,主存的第几块映射到Cache中的第五块(设起始字块号为1) 
    (4).画出直接映射方式下主存地址字段中各段的位数。

    (1)题上没有说是按字访问还是按字节访问,并且题上给出的容量是4KB,那么我们默认是按字节访问,那么根据存储容量的公式:存储容量=存储单元个数*存储字长(课本P17),那么Cache容量为4KB,即有2^{12}个数据单元,每个数据单元为8位。所以,Cache地址长度为12。每个字块有16*32位,则4KB的Cache可容纳的块数为:4KB/(16*32位)=(2^{12}*8) / (16*32)=64块。

    (2)同理,主存地址为19位(512K=2^{19}),可容纳(2^{19}*8)/(16*32)=8192块. 

    (3)Cache共有64块,则按照主存块号按照64取模为5的主存块都会映射到Cache中的第5块,则满足要求的主存块号为5,64+5,2∗64+5.....2^13-64+5。

    (4)第四个就是求t、c、b。t=主存地址长度 - Cache地址长度=19-12=7。Cache共有64块,c=6。

    默认其是按字节访问,那么块长就是6位,每个字为32/8=4字节,每个字块就有16x4=64字节(就是2^{6}),所以b=6。

    当然,计算方法不止一种,也可以通过关系式推导得出。

    例题2(课本P120页例4.9)

    假设主存容量为512K*16位,Cache容量为4096*16位,块长为4个16位的字,访存地址为字。 
    (1).在直接映射下,设计主存的地址格式。 
    (2).在全相联映射下,设计主存的地址格式。 
    (3).在二路组相联映射方式下,设计主存的地址格式。 
    (4).若主存容量为512K*32位,块长不变,在四路组相联映射下,设计主存的地址格式。

    (1)直接映射下,求t、c、b。注意,访存地址为字,每个字是16位,所以块长是4,所以b=2。

    主存地址长度是19(512K=2^{19}),Cache地址长度为12(4096=2^{12}),则t=19-12=7。

    Cache能分1024块,就是2^{10}块(4096/4=1024块),所以c=10。

    (2)根据第一问,则b=2,m=19 - 2 = 17

    (3)因为是二路组相联,所以r=1。s = t + r = 8。q = c - r = 9。b = 2。

    (4)注意,块长没变,主存容量改为512K*32位,访存地址是字地址,所以主存容量可以改写为1024K*16位,主存地址长度为20。Cache没变,所以Cache长度仍然是12位,所以t=20-12=8。c也没变还是10,(Cache能分1024块),四路组相联,所以r=2。s = t + r = 10。q = c - r = 8。块长没变,所以b也没变,还是2。

    (也可以用另一种方法:Cache能分1024块,每组是2^{r}=4块,那么就能分1024/4=256个组,256=2^{8},所以q=8)

     

    按照字节编址和按字编址的区别:

    补充1:

    课本P73页讲主存中存储单元地址的分配的时候,介绍了计算机系统可以按字寻址,也可以按字节寻址

    • 按字节寻址,指的是存储空间的最小寻址单位是字节
    • 按字寻址,是指存储空间的最小寻址单位是字

    在上面两道例题中:

    “假设主存容量为512KB,Cache容量为4KB,每个字块为16个字,每个字为32位(课本P120页例4.8),那么这里没说访存地址,我们按照其给的容量的格式,默认其是按字节访问,那么块长就是6位,每个字为32/8=4字节,每个字块就有16x4=64字节(就是2^{6}),所以b=6。

    “假设主存容量为512K*16位,Cache容量为4096*16位,块长为4个16位的字,访存地址为字(课本P120页例4.9),那就是按字寻址,块长为4个字,那么块长就是4(2^{2}),那么b就等于2

    总结:一般来说,题目上没有明确指定按字编址,那么就默认是按字节编址(一字节8位),如果题目给出的容量是xxxK*xx位,并且说了访存地址为字,那就是按字访问的。

    补充2:

    • 例4.8中,主存容量为512KB,我们计算主存地址为19位,512K=2^{19}
    • 例4.8中,Cache容量为4KB,我们计算Cache地址为12位,4K=2^{12}
    • 例4.9中,主存容量为512K*16位,我们计算主存地址为19位,512K=2^{19}

    看上面这三个计算,因为512KB也可以换成512K*8位,那么有的同学就会觉得,是不是我们计算地址长度的时候,就是把存储容量换成xxxK*xx位,然后不管后边的位,只看前边的是2的多少次方就行。是这样吗?

    其实不是的,我们看例4.9第四问,主存容量变为512K*32位,如果按照刚才错误的方法,那么主存地址还是19位,512K=2^{19}。而这里,主存地址是20位,以为按字访存,一个字是16位,所以我们容量可以改写为1024K*16位,1024K=2^{20}。所以,计算存储地址长度,我们要看是按字访存还是按字节访存。

    练习题

    课后题4.8

    设主存容量为256K字,Cache容量为2K字,块长为4。

    (1)设计Cache地址格式,Cache中可装入多少块数据?
    (2)在直接映射方式下,设计主存地址格式。
    (3)在四路组相联映射方式下,设计主存地址格式。
    (4)在全相联映射方式下,设计主存地址格式。
    (5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式
     

    答案解析:戳一戳---看解析

     

     

     

     

     

     

     

    展开全文
  • Cache——主存地址映射主存地址映射Cache地址称为地址映射。映射方式很多,有直接映射,全相联映射、组相联映射。 映射就是指将主存地址中的某一块儿加载到Cache地址中,并指定某一块。 直接映射 主存当中任意...

    Cache——主存地址映射

    由主存地址映射到Cache地址称为地址映射。映射方式很多,有直接映射,全相联映射、组相联映射。 映射就是指将主存地址中的某一块儿加载到Cache地址中,并指定某一块。

    直接映射

    主存当中任意一个块只能映射到Cache中某一个指定的块。如图:
    在这里插入图片描述
    图中每个主存块只与一个缓存块相对应,映射关系为**i = j mod C 或 i = j mod 2^c ** i为缓存块号,j为主存块号,C为缓存块数。映射结果表明每个缓存块对应若干个主存块。

    具体实现过程

    1. 根据Cache存储体大小,将主存分成若干个与Cache存储体大小相同的区。如图中Cache有2c-1个块,则主存被分为若干个含有2c-1个块的区。每个区中的块的编号与Cache中的编号相同,并且一一对应。因此,Cache中的一个块对应了主存中的若干个块的位置,主存中的块要存储到Cache中时只能根据这样的对应关系存储到Cache中唯一的一块中。
    2. 对于CPU给出的地址,可以分为三部分,分别是:区号、块号、块内偏移地址。区号就是上图中的t位主存子块标记 块号就是c位Cache字块地址,块内偏移地址就是b位字块内地址。
    3. Cache存储体中的t位标记存储了主存储体中对应的区号。对CPU给出的地址,可以根据块号在Cache中直接找到对应的块,然后再通过比较器比较地址给出的区号是否与Cache存储体中标记的区号一致,一致则说明CPU给出的地址已经保存到了Cache中,可直接获取地址中的指令或数据,若不一致,说明地址还未保存到Cache中,则需访问主存。

    计算机组成原理(第2版)唐朔飞 中的解释:
    在这里插入图片描述

    缺点

    不够灵活,每个主存块只能固定的对应某个缓存块,即使缓存内还空着许多位置也不能占用,使缓存的存储空间得不到充分的利用。此外,如果程序恰好要重复访问对应同一缓存位置的不同主存块,就要不停的进行替换,而且降低命中率。

    对映射关系式i = j mod C的解释

    映射关系为**i = j mod C 或 i = j mod 2^c ** i为缓存块号,j为主存块号,C为缓存块数。中文描述就是 缓存中块地址=主存块地址 mod Cache中的块数
    一个块数为8的Cache,取模运算之后得到的就是主存块地址中的第三位。例如存储器地址11101被映射到Cache中的101位置,如下图:
    在这里插入图片描述
    从图中可以看出一个CPU给出的地址的地位是用来检索到Cache中的位置,那如何判断该位置的数据是否为CPU所请求的字呢? 因此有了标记,即直接映射图中的高t为主存块标记。以上图中的映射关系为例,存储器地址11101的低三位用来映射到Cache,那么高两位就用来作为标记。
    在这里插入图片描述

    对有效位的解释

    当一个处理器启动时,Cache中没有数据,则标记域中的值没有意义。甚至在执行一些指令后,Cache中的一些块依然为空,则这些块中的标记应该被忽略。因此增加了有效位,用来识别Cache存储块中的数据是否有效,因为有时Cache中的数据是无效的。 如果该位没有置1,则不能使用该块中的内容。
    在这里插入图片描述

    地址划分

    对于CPU给出的每个可能地址,在Cache中如何进行查找,地址的地位用来找到Cache中与该地址匹配的唯一项。如下图:将一个地址划分为
    **标记域:**用来与Cache中标记域的值进行比较。

    Cache索引: 用来选择块。
    在这里插入图片描述
    对这个cache,地址的低位用来选择由数据字和标记组成的一个cache项。这个cache中有1 024个字,即4KiB。假设使用32位的地址。cache 中的标记与地址高位相比较,判断cache中的项是否符合请求的地址。由于cache有210 (1024) 个字,块大小为1个字,因此,索引cache需要10位,剩下的32- 10-2= 20位用来和标记相比较。如果标记和地址的高20位相等,并且有效位开启,那么请求在cache中命中,相应的字被提供给处理器。否则,发生缺失。
    在这里插入图片描述

    全相联映射

    全相联映射允许主存中每一个字块映射到Cache中任何一块位置。如下图。
    在这里插入图片描述
    如图,主存储器中的块可能映射到Cache中的任意一个位置。所以当CPU放访问主存时,需将给出地址中的主存字块标记与Cache存储器中的全部标记进行比较,如果有相等的标记,则命中,否则未命中,需进行替换。

    优点

    方式灵活,命中率更高,缩小了块冲突率。 逻辑电路多,成本高。

    缺点

    与直接映射相比,主存字块标记的位数变成了t+c位,进行比较的比较器位数增加。需和Cache中全部标记进行比较才能判断所访问地址内容是否已经在Cache中。

    组相联映射

    组相联映射是直接映射和全相联映射的一种折中方式。
    在这里插入图片描述
    首先将Cache分成若干个块,再对块进行分组,假设分成r个组,组内块的数量不固定。 然后对主存进行分区,区数与Cache中的组数相同,即r组。主存中每个区的块可以存储到Cache对应组中的任意一块。所以,主存中某个块所在的区号直接决定了它能够映射到Cache中的哪个组。

    优点

    一个块能映射的位置有多个,与直接映射的一一对应关系相比,更不容易冲突。 在判断主存中某一个块是否已在Cache中,只需根据地址所在的区号找到Cache中对应的组,再根据组内块的标记比较区号是否对应。不需要和每一个Cache进行比较。与全相联映射相比,比较次数更少。

    Cache缺失处理

    Cache缺失:由于数据不在Cache中而导致被请求的数据不能满足。
    缺失就是未命中,Cache中没有CPU要访问的地址。
    Cache缺失处理主要有两部分组成:处理器控制单元,以及一个进行初始化主存访问和重新填充Cache的独立控制器。

    Cache缺失处理步骤:

    1. 把程序计数器(PC)的原始值(当前PC-4)送到存储器中。
    2. 通知主存执行- -次读操作,并等待主存访问完成。
    3. 写cache项,将从主存取回的数据写人cache中存放数据的部分,并将地址的高位(从ALU中得到)写人标记域,设置有效位。
    4. 重启指令执行第-一步,重新取指,这次该指令在cache中。数据访问时对cache 的控制基本相同:发生缺失时,处理器发生阻塞,直到从存储器中取回数据后才响应。.
    展开全文
  • 计算机组成原理--Cache主存地址映射 ---课后题4.8

    千次阅读 多人点赞 2020-01-07 21:08:04
    (2)在直接映射方式下,设计主存地址格式。 (3)在四路组相联映射方式下,设计主存地址格式。 (4)在全相联映射方式下,设计主存地址格式。 (5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方...

     

    关于本节计算问题的详解:Cache主存地址映射(计算题)

     

     

     

    《计算机组成原理》(第二版)唐朔飞编著   

    课后题 4.8

    设主存容量为256K字,Cache容量为2K字,块长为4。

    • (1)设计Cache地址格式,Cache中可装入多少块数据?
    • (2)在直接映射方式下,设计主存地址格式。
    • (3)在四路组相联映射方式下,设计主存地址格式。
    • (4)在全相联映射方式下,设计主存地址格式。
    • (5)若存储字长为32位,存储器按字节寻址,写出上述三种映射方式下主存的地址格式。

    解:

    (1)根据题意,我们可以知道是按字编址,cache容量2K字,块长为4,故cache可以被分为2K/4块=2^9块

    cache地址格式就是c和b

    (2)求t、c、b

    首先cache容量2K字,故cache地址长度为11位,又因为cache可以被分为2^9块,c=9

     主存容量256K字,故主存地址长度为18位(2^18),则总长18位。18 -11 = 7,故 t =7

    又因为主存可以被分为256K/4=2^16块,故m=16。 (也可以直接用 m = t + c 得出m的值)

    再用总长18 - m = b,可得b=2。地址格式如下:

    (3)四路组相联  故r=2

    s = t + r = 9          q = c - r = 7

    (4)全相联映射

    m和b都知道了,直接写

    (5)存储字长为32位,存储器按字节寻址

    那么主存地址容量为256K*32位,按字节寻址 ,故主存地址长度为20((256K*32)/8=2^20)

    同理,cache容量为2K*32位,故cache地址长度为13((2K*32)/8=2^13)

    20 - 13 = 7  故 t = 7

    块长之前是4个字,也就是4*32位=128=16个字节  也就是块长为16,故b=4(16=2^4)

    cache可以被分为(2^13/16=2^9)块,故 c = 9 

    然后m=16(可以用 t + c 得到,也可以用 主存地址长度 - b 得到)

    t、c、b、m都算出来了,剩下的就直接写

     

     

    展开全文
  • 1假设 主存容量为2M16位,Cache容 量为4K16位,块长为4个16位的字,访存地址为字地址。 (1)在直接映射关系下,设计主存地址格式。 (2)在全相联映射关系下,设计主存地址格式。 (3) 在二路组相联映射关系下,设计...

    由主存地址映射到Cache地址称为地址映射。
    地址映射方式很多,有直接映射(固定的映射关系)、全相联映射(灵活性大的映射关系)、组相联映射(上述两种映射的折中)。
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

    1假设 主存容量为2M16位,Cache容 量为4K16位,块长为4个16位的字,访存地址为字地址。
    (1)在直接映射关系下,设计主存的地址格式。
    (2)在全相联映射关系下,设计主存的地址格式。
    (3) 在二路组相联映射关系下,设计主存的地址格式。
    (4)在四路组相联映射关系下,设计主存的地址格式。
    在这里插入图片描述

    展开全文
  • 当缓存接收到CPU发送来的主存地址后,只需根据中间c位字段(假设为00…01)找到缓存块1,然后根据字块1的”标记”是否与主存地址的高t位相符合,若符合且有效位为1(这里的有效位用来识别Cache存储块中的额数据是否有效...
  • Cache-主存地址映射

    2021-05-31 00:11:39
    Cache-主存地址映射 这几天十分懒惰,都没有复习计组,现在勉强把第四章看完了,最后一个内容Cache-主存地址映射一开始看不懂,现在终于差不多懂了,再把做题的步骤写下来供下次参考 题目一 假设主存容量为512K,...
  • 当缓存接到CPU送来的主存地址后,只需根据中间c位字段找到对应的Cache块,然后根据Cache块中的“标记”是否与主存地址的高t位相符来判断,若符合且有效位为1,表明Cache块已和主存的某块建立了对应关系,可根据b位...
  • Cache主存地址映射关系

    千次阅读 2016-12-03 19:34:37
    Cache地址映像方式中,发生块冲突次数最小的是( ) 。 A.全相联映像  B.组相联映像  C.直接映像  D.无法确定的 全相联映像块冲突最小,其次为组相联映像,直接映像块冲突最大。 ...
  • Cache —— Cache主存映射方式

    千次阅读 多人点赞 2019-07-26 22:16:16
    地址映射地址映射是一种规则,它指明了把主存地址空间映射到Cache地址空间所用的规则,即把存放在主存中的程序按照某种规则装入Cache。由于Cache的块数比主存块数少得多,因此需要加入 主存字块标记 和 字块内地址...
  • 根据主存块号的后三位确定所属块号,将对应cache行的标记和主存地址的高t位标记进行比较,若相等且有效位为1,则访问cache命中 全相联映射 主存中的每一块可以装入cache中的任何一个位置 标记 块内地址 组...
  • 什么是Cache地址映射 主存的容量比Cache要大的多,所以我们得采用多个主存块映射到同一个Cache行中的方法,将要访问的局部主存区域取到Cache中。映射方法有:直接映射,全相联映射,组相链映射、 ...
  • Cache主存映射方式:把主存地址空间映射Cache地址空间。 1、 直接映射 主存数据块只能装入Cache中的唯一位置。若这个位置已有内容,则产生块冲突,原来的块将被无条件被替换出去。直接映射实现简单,但不够...
  • Cache Cache是高速缓冲存储器...CPU访问cache时,根据主存地址来访问,但是不知道cache的地址,因此要根据主存的地址映射cache的地址,才能访问cache。 直接映射 cache有多行,主存多多块,主存的每一块可以装入...
  • Cache主存地址映射

    千次阅读 2019-03-05 21:07:07
    在程序的执行过程中,Cache主存地址映射是由硬件自动完成的。
  • 计算机组成原理——Cache主存地址映射

    千次阅读 多人点赞 2020-06-04 22:40:39
    Cache–主存的地址映射主存地址映象到cache地址称为地址映象 1.直接映射(固定的影响关系) 主存中的任意块映射到缓存中的唯一块,每个主存块只与一个缓存块相对应。 i为缓存块号,j为主存块号,C为缓存块数,...
  • 主存Cache直接映射、全相联映射和组相联映射

    万次阅读 多人点赞 2016-11-29 14:30:46
    为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射。---- 在信息按这种映射关系装入Cache后,CPU执行程序时,会将程序中的主存地址变换成Cache地址,这个变换过程叫做地址变换。...
  • 假设主存256MB,按字节编址,Cache有8行,行长为64B. 若只考虑有效位,标记...根据Cache的位数,按照直接映射地址结构(如下图) 首先分配6位块内地址和3位行号,剩余19位作为标记Tag 3.分配如下 存储结构如下
  • cache主存地址映射

    千次阅读 多人点赞 2016-05-04 08:59:39
    前一篇写了虚存与主存地址转换,所以现在就写写cache主存地址映像。我会用自己的理解和举例的方法说的明了。  首先,地址映像是把主存地址空间用某种方法映像到cache,即就是把主存的程序按照一定的方法装...
  • Cache-主存地址映射 • 1、直接映射 • 2、全相联映射 • 3、组相联映射
  • 文章目录高速缓冲存储器——CacheCache-主存地址映射的三种方式Cache和主存的字块表示1.直接映射2.全相联映射3.组相联映射 高速缓冲存储器——Cache 存储系统有两个层次解构: 1.缓存和主存 2.主存和辅存 第一层:...
  • 主存cache地址映射

    2019-09-09 17:08:09
    Cache不命中时,需将存储在主存中的字单元连同其后若干个字一同调入Cache中,之所以这样做,是为了使其后的访存能在Cache中命中。因此,主存Cache之间一次交换的数据单位应该是一个数据块。数据块的大小是固定的...
  • Cache主存地址映射及相关计算问题

    万次阅读 多人点赞 2016-12-29 11:12:30
    对于Cache,即高速缓存,是用来解决主存与CPU速度不匹配问 题,Cache的出现使得CPU可以不直接访问主存而直接与高速Cache交换信息。由于程序访问的局部性原理可以很容易设想只要将 CPU近期要用到的程序和数据提前从...
  • Cache主存映射及计算(转)

    千次阅读 2012-02-28 12:01:31
    首先要搞懂关于Cache地址映射的一些计算就必须从根上解决问题,明白Cache的工作原理会让我们更容易的解决此问题。原理图如下:     当CPU访问Cache时,送来主存地址放入地址寄存器。通过主存—>Cache地址变换...
  • cache主存映射及计算

    千次阅读 2014-05-18 14:22:08
     地址映象规则:主存的任意一块可以映象到Cache中的任意一块  (1) 主存与缓存分成相同大小的数据块。  (2) 主存的某一数据块可以装入缓存的任意一块空间中。  全相联方式的对应关系如图2.3.2所...
  • 主存cache地址映射方式有全相联方式、直接方式和组相联方式三种。 直接映射(directmapping):将一个主存块存储到唯一的一个Cache行。 全相联映射(fullyassociative mapping):可以将一个主存块存储到任意一个...
  • 直接映射地址结构: 标记 chache行号 块内地址 直接映射模式: 组相联映射 组相连映射地址结构: 标记 chache组号 块内地址 全相联映射 全相联映射地址结构: 标记 块内地址 ...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 304
精华内容 121
关键字:

cache主存地址映射