-
2020-09-12 20:44:57
1. 题目
主存与Cache的地址映射方式中,____方式可以实现任意主存的任意一块装入Cache中任意位置,只有装满才需要替换。
A 全相联
B 直接映射
C 组相联
D 串并联2. 理论
地址映像方式有3种,直接映像、全相联映像、组相联映像。
2.1 直接映像
主存中的块与Cache的块固定对应,主存的块只能放在Cache存储器相同块号中。
优点:地址变换简单。
缺点:灵活性差。2.2 全相联
允许主存任一块可以调入Cache任一块。
优点:十分灵活
缺点:变换复杂速度慢。2.3 组相联映射
是前两种方法折中,将Cache的块划分组,通过直接映像确定组号,组内用全相联确定块号。
3. 解析
根据理论部分,D肯定错误,看到任意一块字样,选择A。
更多相关内容 -
主存与cache间的地址映射
2020-12-22 22:38:35①cache与主存之间的数据交换是以“块”为单位进行的。一个“块”中包含若干个“字”,字长由实际情况确定。 习惯上,cache中的“块”称“行”,主存中称“块”。cache的“行”与主存的“块”...参考:《计算机组成原理》(第五版) 白中英等著
准备工作:
①cache与主存之间的数据交换是以“块”为单位进行的。一个“块”中包含若干个“字”,字长由实际情况确定。
习惯上,cache中的“块”称“行”,主存中称“块”。cache的“行”与主存的“块”存储容量相同。
②相联存储表(CAM)是一种按内容寻址的存储器。下面所提到的标记(tag)存于该存储器中。
③cache中的标记tag与cache的“行”一一对应的。如果某一块主存数据块拷贝到cache中的某一行,该cache行就会形成相应的标记tag。
三种地址映射方式:①全相联映射方式、②直接映射方式、③组相联映射方式
①全相联映射方式:
理念:主存中的一块可以拷贝到cache中的任意一行。
通俗理解:对于主存中的数据块可以拷贝到cache中的哪一行不做硬性规定。
主存地址格式:主存块号+块内偏移地址
cache地址格式: cache行号+行内偏移地址
cache标记tag:主存块号
映射过程(地址变换过程):
CPU提供一内存地址给cache,cache中的“控制逻辑”将“主存地址格式”中的“主存块号”与cache中所有行的标记tag进行同时比较。
如果存在相同的,即表示“命中”,根据“块内偏移地址”找到相应的字。
如果不存在相同的,即表示“未命中”,那么将会到主存中寻找。
优点:该映射方式下,块冲突的概率低,cache利用率高。
缺点:硬件控制复杂,尤其是用于比较“主存块号”与tag时的比较器电路难于设计与实现。
适用情况:小容量的cache
②直接映射方式:
理念:一个主存块只能拷贝到cache的一个特定行位置去。
通俗理解:相当于将主存空间按cache的大小(行数)进行分区(说“分组”也可以),主存分区(组)后,每区(组)中的数据块数目与cache的行数一致。
将每一区(组)的数据块在区(组)内重新进行编号。使区(组)内各块只能映射到与它区(组)内编号相同的cache行去。
举例:假设现有主存-cache体系。cache共4行,主存共16块。cache的4行编号分别为L0~L3,主存的16块编号分别为B0~B15。如下图所示:
a、首先将主存按照cache的大小进行分区(组):16/4=4(组),即将主存分为4组,编号分别为G0~G3,这样每组中拥有与cache行数相同的数据块。
b、对每组内的数据块进行“组内重新编号”,即B0变为G0的b0,B1变为G0的b1,B2变为G0的b2,B3变为G0的b3;B4变为G1中的b0,B5变为G1中的b1,B6变为G1中的b2,B7变为G1中的b3。依次类推。
c、这样,组内编号为b0的主存块如果需要拷贝至cache,只能放置到L0;b1只能拷贝到L1;b2只能拷贝到L2;b3只能拷贝到L3。如上图所示,相同颜色的说明可以进行拷贝。
主存地址格式:主存组号+组内块号+块内偏移地址
cache地址格式:cache行号+行内偏移地址
cache标记tag:映射到该行的主存块的主存地址的“组号”
映射过程(地址变换过程):
CPU提供一内存地址给cache,相关的逻辑根据内存地址中的“组内块号”确定该主存块如果发生拷贝会被拷贝到哪一行;
然后,将内存地址中的“主存组号”与上步确定的cache行的标记tag进行比较,如果存在相同的即“命中”,如果不存在相同的即“未命中”。
优点:硬件简单,容易实现,成本低。
缺点:发生块冲突的概率较大,导致cache的命中率、效率下降。
适用情况:大容量的cache,更多的行数可以减小冲突发生的机会。
③组相联映射方式:
理念:是直接映射方式与全相联映射方式的折衷方案,适度地兼顾了二者的优点又避免二者的缺点。
将cache的空间分为若干组,主存块与cache组之间直接映射,而组内各块之间全相联映射。
关键:cache的分组数=主存每一组的块数
相关概念:
v路组相联cache:说明该cache采用组相联映射方式且cache的每组有v行。v一般取值较小,典型的有2、4、8、16。
举例:假设有主存-cache体系,cache共4行,主存共16块。cache的4行编号为:L0~L3,主存的16块编号为B0~B15。采用2路组相联映射。如下图所示:
a、cache共4行,采用2路组相联映射,即将cache分为2组G0~G1,每组2行。
b、cache的分组数=主存每一组的块数,即将主存分为8组g0~g7,每组2块。
c、主存组内进行重新编号b0、b1,如上图所示
d、凡是组内编号为b0的主存块,可以拷贝至cache的G0组,至于是2行中的哪一行,是随机的无硬性规定的。依次类推,组内编号b1的主存块可以拷贝至G1组
主存地址格式:主存组号+组内块号+块内偏移地址
cache地址格式:cache组号+组内行号+行内偏移地址
cache标记tag:组号
映射过程(地址变换过程):
CPU提供一内存地址给cache,相关逻辑根据地址中的“组内块号”部分确定主存块如果发生拷贝将会被放置到cache的哪一组中;
然后,将地址中的“主存组号”与上步所确定的那一组中所有行的tag同时进行比较,如果存在相同的即“命中”,如果不存在相同的即为“未命中”。
该映射方式实现较为容易,块冲突概率比直接映射方式低,命中率介于直接映射方式与全相联映射方式之间。被普遍采用。
-
cache-主存的三种映射方式
2021-05-04 10:00:23目录1. 基本概念2. cache-主存的三种映射方式2.1 全相联映射2.2 直接映射方式2.3 组相联映射方式3. 三种映射方式例题 1. 基本概念 ...在CPU和主存之间引入cache是为了: ①避免CPU与外部设备争抢主存 外设向1. 基本概念
1. 存储系统的体系结构
图片摘自这篇博客:图片来源2. cache在存储系统中的位置
cache(缓存)位于CPU内部,其读取速度快于主存,但容量小于主存。cache中存放的是程序需要用到的数据,CPU处理时直接从cache中读取数据速度要快于从主存中读取。在CPU和主存之间引入cache是为了:
①避免CPU与外部设备争抢主存
外设向主存请求数据级别高于CPU,可能导致CPU等待较长时间。
②提高取指令和取数据的速度
主存速度提高跟不上CPU的发展速度,差距总在5倍以上。3. 程序访问的局部性原理
之所以可以把CPU当前需要的数据和程序放在cache中,是因为程序访问具有局部性的原理:
时间局部性 一个存储单元被访问,此单元很快就会再次被访问
空间局部性 一个存储单元被访问,该单元临近的单元也可能很快被访问。
4. 命中率
如果访问的数据在cache中,称为访问cache命中。
设某Cache的命中率为h,其中访问Cache的时间为tc,访问M的时间为tm。设Nc访问cache命中的总次数,Nm表示访问cache不命中而访问M的次数,则有:
h=Nc/(Nc+Nm)×100%
①若CPU在访问cache不命中时再访问主存
平均访存时间ta=h·tc+(1-h)·(tc+tm)=tc+(1-h)·tm
②若CPU同时访问cache和主存,访问命中时中止对主存的访问。
平均访存时间ta=h·tc+(1-h)·tm5. 字、字块、标记、组
字 :1个字由n个字节组成(n≥1),字是CPU访问存储器时可存取的最小单位
字块 :1个字块包含n个字(n≥1),字块是主存与cache交换的最小单位
也就是说,cache和主存在交换时是以字块为单位的,一次交换一个字块(包含好多个字,利用到了局部性原理)。而CPU在访问cache时,一次只存取一个字。
标记 :cache中存放的主存块地址称为标记。
组 :多个字块组成的一个逻辑整体称为组。
2. cache-主存的三种映射方式
2.1 全相联映射
思路
允许主存中的每个字块映像到cache的任何一个字块位置上。
示意图
主存地址和cache地址设置主存地址和cache地址的一个目的是,可以通过主存地址来找到cache地址,这样才能实现主存和cache字块的交换。
主存地址:
包括块标记和字块内地址两部分,其中块标记相当于字块在主存中的地址,字块内地址为字块中某个字的地址。
示意图:
cache地址:包括字块号和字块内地址,其中,字块号为字块在cache中的地址,字块内地址为字块中某个字的地址。
注意:主存地址和cache地址中的字块内地址相同。
示意图:
相联存储器:既然全相联映射方式的思路是:主存中的字块映射在cache中的任一字块,计算机怎么知道映射到哪一字块了?到时候怎么操作呢?这就需要一个目录表来查找主存中的某一字块与cache中某一字块的对应关系:
该目录表由三部分组成:主存字块标记(主存地址的第一部分),cache字块地址(cache地址的第一部分),有效位(1位)。目录表的行数为cache的字块数,这很好理解,因为目录表的目的就是查找主存字块和cache字块的对应关系。特点
(1)映像方式灵活,主存中的一个字块可以对应cache的任意一块;
(2)主存地址映射到cache无规则可言,必须使用相联存储器通过按内容查找获取cache块号。
(3) 全部由硬件实现,速度快,但硬件实现难度大;
(4)由于使用相联存储器存储目录表,成本高。当cache容量越大时,所需相联存储器的容量也越大,成本也越高。仅适用于小容量cache采用。2.2 直接映射方式
思路
主存中的一块只能拷贝到cache中的一个特定行位置。设主存的块号为i,cache中的块号为j,cache的总块数为N,则映射关系为:
j = i mod N示意图
主存地址与cache地址主存地址:
包括块标记、字块地址、字块内地址三部分。其中,块标记为字块在主存中的地址,字块地址为字块在cache中的地址(计算方法就是上面说的),字块内地址为字在字块中的地址。
因此这种映射方法不需要目录表了。(因为主存地址中存有要映射到cache相应字块的字块地址了)
示意图:
cache地址:包括字块地址、字块内地址两部分:其中,字块地址为字块在cache中的地址,字块内地址为字在字块中的地址。
注意:cache地址中的字块地址和字块内地址和主存地址中的相同。
示意图:
特点(1)映像函数简单,实现硬件简单,无需相联存储器,实现成本较全相联映像方式低;
(2)地址变换速度快,如果命中且字块有效,那么主存地址去掉区号后的低位部分就是cache地址。
(3)块冲突率高,当两个或两个以上的主存块映射到相同的cache发生冲突时,即使其他cache块空闲也不能被使用。当两块交替映射到同一cache时,造成频繁置换——抖动。2.3 组相联映射方式
思路
组相联映像方式为前两种方式的折衷。其方法是将cache按某种规格分组,主存中若干字块映射到同一个组中,组间为直接映像方式,组内为全相联映像。
主存字块在cache组号求法为:主存字块号 mod cache组数
示意图
主存地址和cache地址主存地址:
主存地址包括主存字块标记、组号和字块内地址三部分。其中主存字块标记为字块在主存中的地址,组号为cache分的组的组号,字块内地址为字在字块中的地址。
示意图:
cache地址:cache地址包括组号、字块号和字块内地址三部分组成。其中,组号为cache分组的组号,字块号为每组内字块的地址,字块内地址为字在字块中的地址。
注意:主存地址和cache地址中的组号和字块内地址相同。
示意图:
特点(1)因为是两种映像方式的折衷,因此地址结构较为复杂,比较的情况较多,需要引入相联存储器;
(2) 兼顾了映像的灵活性和操作的复杂程度。
(3)目前应用较多。每组具有v个字块的组相联映像方式常称为v路组相联。v一般取值较小,典型值有2、4、8、16。3. 三种映射方式例题
【例题】
设主存容量为256K字,cache容量为2K字,块长为4,按字编制。
①设计cache地址格式,cache可装入多少块数据。
②在直接映射方式下,设计主存地址格式。
③在四路组相联映射方式下,设计主存地址格式
④在全相联映射方式下,设计主存地址格式
【解答】
因为是按字节编址,所以主存地址有18位,cache地址有11位,因为块长为4,说明每个字块有4个字,故字块内地址为2位。
① 字块内地址为2位,故字块地址有11-2=9位,cache地址如下:
② 直接映射方式下,主存地址包括主存字块标号、字块地址和字块内地址3部分,其中字块地址和字块内地址与cache地址相同,故主存字块标号有18-11=7位。主存地址如下:
③ 四路组相联,说明cache分为4个组,此时cache地址包括:组号、字块地址、字块内地址三部分。因为分为4组,故组号为2位,因为一个字块长4位,故字块内地址为2位,故字块地址为11-2-2=7位,cache地址如下:
此时主存地址由三部分组成:主存字块标记、组号、字块内地址。组号和字块内地址和cache地址相同(共7+2=9位),故主存字块标记有18-9=9位,主存地址如下:
④ 全相联方式下,主存地址由主存字块标记和字块内标记组成,字块内标记和cache地址相同,为2位,故主存字块标记为18-2=16位,主存地址如下: -
Cache与主存的地址映射
2022-02-26 12:05:07Cache和主存被划分为很多块, 块(Cache Block ) 作为映射的最小单元,块大小(Cache Block size) 反应块内所包含的字节数。 以256byte大小Cache为例,其Cache Block size=4 byte,被划分为32块。 Cache地址相当于被...Cache结构图
Cache和主存被划分为很多块, 块(Cache Block ) 作为映射的最小单元,块大小(Cache Block size) 反应块内所包含的字节数。
以256byte大小Cache为例,其Cache Block size=4 byte,被划分为32块。
Cache地址相当于被划分为了2部分:块号(index)+块内地址/偏移量(offset)
主存的结构与Cache相同,Main Memory Block size = Cache Block size
直接映射
直接映射就是每个主存块只与一个缓存块相对应,映射关系为 i = j m o d C i = j\;mod\;C i=jmodC(其中 i i i为缓存块号, j j j主存块号, C C C为缓存块数)。
以4个Block的Cache与32个Block的主存为例 (Cache Block size = Main Memory Block size),这里假设每块含4字节,Main Memory中每4个Block为一组 (每组的Block数量 = Cache的Block数量) ,每组的第1块映射到Cache中的Cache Block[0],第2块映射到Cache Block[1]…Cache index Main Memory index 0 0,4,8…28 1 1,5,9…29 2 2,6,10…30 3 3,7,11…31 假设现在需要主内存中的地址为15H的数据,CPU首先会在Cache中查找,这就需要将主存中15H地址映射到Cache中。
15 H = 0001 01 01 15H = 0001\;01\;01 15H=00010101,其中offset(01)表示在块内的偏移量,index(01)表示在Cache的块号。每一组相同index将映射到Cache中的同一块,因此需要一个tag来区分不同的组。图上还有一个valid bit,这个是用来标记Cache Block是否有效的,当根据Main Memory地址映射到Cache所在块之后会先检查valid bit是否有效,只有在有效的情况下,比较tag才有意义。如果无效,直接判定cache缺失。当系统刚启动时,cache中的数据都应该是无效的,因为还没有缓存任何数据。
直接相连映射的优缺点
优点:简单易实现,硬件成本会比较低
缺点:不够灵活,Cache中的每个Block对应Main Memory中每组index相同的Block,一个一对多的关系,如果需要访问Main Memory每组index=1的Block,则Cache中只有index=0的Block会被使用,并且数据还会被不断替换,其他空闲位置无法使用,命中率降低。全相联映射
全相联映射允许Main Memory中的每一个Block映射到Cache中的任何一个位置上面,只有当Cache中的Block全部被占用时,才考虑替换。
假设Cache被划分为4个Block,Main Memory被划分为32个Block,(Cache Block size = Main Memory Block size),假设此时需要地址为15H(00010101)的数据。CPU首先会查找Cache是否有存储,由于采用全相联映射,Main Memory中的Block可以映射到Cache中的任一一Block,因此需要逐一检验tag标签来判断。如下图所示在Cache中Block[1]的tag匹配成功。通过offset来确定该内容在Block中的位置。
全相联映射的优缺点:
优点:因为Main Memory中的Block可以映射到Cache中的任一一Block,不像直接映射一样,Main Memory中某一个Block映射到Cache中唯一的Block灵活,这种方式命中率更高,缩小了块冲突(只有当Cache全部Block都被占用才会冲突)。
缺点:直接相连映射定位到Cache中的Block之后,只需要检验一次tag标签即可,而全相联映射,需要逐一匹配Cache中每一个Block的tag标签,这种方式的硬件成本较高。组相联映射
组相联映射是直接相连映射和全相联映射的一种折中方法。
直接相连映射是Main Memory中的任一Block只能映射到Cache中唯一的Block,而组相联映射则是映射到Cache中唯一的组(Group)(一组包含若干Block),映射规则为i i = j m o d C i = j\;mod\;C i=jmodC(其中 i i i为Cache中的组号, j j j为Main Memory的块号,C为Cache的组数)。
对于同一组,采用全相联映射,Main Memory中的Block可以映射到对应组中的任一一Block,通过逐一检查tag标签来定位。假设Cache被划分为4个Group,每个Group有2个Block,Main Memory被划分为32个Block,现需要Main Memory中地址为15H的数据,CPU会先到Cache中寻找,15H = 0001 01 01,其中的index(01)确定为Group[1],然后逐一匹配Group[1]中所有Block对应的tag,最后确定15H在Cache所映射的位置。
可见直接相联映射和全相联映射都是特殊的组相联映射,直接相联映射是当Cache中每组只有一个Block情况下的组相联映射,而全相联映射则是Cache只划分一个组(即Cache所有Block作为一个组)情况下的组相联映射。牙牙yyds
-
主存与cache的地址映射
2018-04-28 10:43:391. cache是一种高速缓冲存储器,是为了解决cpu和主存之间速度不匹配而采用的一项重要技术。其原理基于程序运行中具有空间局部性和时间局部性特征。cache是介于cpu和主存之间的小容量存储器,由高速的SRAM组成。 ... -
Cache-主存的地址映射
2022-03-07 10:25:07按照Cache的大小,将主存储体划分为区,每个区的大小都和Cache大小一致。 每个区的第0位只能放到Cache中的第0个字块,每个区的第1位只能放到Cache中的第1个字块,以此类推。 放入之后,要在Cache前面的标记中,记下... -
Cache与主存的三种地址映射详细解读
2021-02-02 17:36:041、三种地址映射的简单介绍 Cache与主存之间有三种映射方式,分别是 全相联映射、直接映射和组相联映射。 在讲解映射之前先来了解一下,“ 字、块、行 ” 这 3 个概念。 字 是 存放在一个存储单元里的机器数,由... -
主存到Cache直接映射、全相联映射和组相联映射
2020-08-12 06:38:28---- Cache的容量很小,...为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射。---- 在信息按这种映射关系装入Cache后,CPU执行程序时,会将程序中的主存地址变换成Cache地址,这个... -
Cache和主存地址映射关系
2016-12-03 19:34:37Cache的地址映像方式中,发生块冲突次数最小的是( ) 。 A.全相联映像 B.组相联映像 C.直接映像 D.无法确定的 全相联映像块冲突最小,其次为组相联映像,直接映像块冲突最大。 ... -
主存和Cache的几种映射方式
2019-02-19 18:09:55在一切的开始之前,首先最重要的是需要去明白和掌握内存的块的定义:...1.块长(一般是取一个存取周期内从主存调出的信息长度,和交互存取有关系)与行长相等,2.行的位数=行号+行内地址 块的位数=块号+快内地址。3.... -
Cache 和主存 的三种映射方法
2018-12-15 09:14:49cache是一种高速缓冲寄存器,是为解决CPU和主存之间速度不匹配而采用的一项重要技术。 CPU对存储器的访问,通常是一次读写一个字单元。当CPU访Cache不命中时,需将存储在主存中的字单元连同其后若干个字一同调入... -
计算机组成原理——主存与cache的地址映射学习
2021-07-10 16:20:34主存与cache的地址映射 地址映射方式有全相联映射方式,直接映射方式,组相联映射方式三种。 全相联映射方式: 主存块数2s块 块大小2w个字 主存地址长度 s+w 位 将主存的一个块的地址与块的内容一起存于cache的行... -
主存cache的地址映射
2019-09-09 17:08:09CPU对存储器的访问,通常是一次读写一个字单元。当CPU访 Cache不命中时,需将存储在主存中的字单元连同其后...数据块的大小是固定的,由若干个字组成,且主存和Cache的数据... -
(计算机组成原理)Cache和主存之间的映射方式
2021-11-11 01:07:40由于贮存和Cache的块大小相同,块内地址都是相对于快的起始地址的偏移量(即低位地址相同),因此地址变换主要是主存块号与Cache块号之间的转换。 1.直接映射 上图中Cache为8行,主存为256行。Cache被分为8块,... -
计算机组成原理——Cache与主存的地址映射
2020-06-04 22:40:39Cache–主存的地址映射 由主存地址映象到cache地址称为地址映象 1.直接映射(固定的影响关系) 主存中的任意块映射到缓存中的唯一块,每个主存块只与一个缓存块相对应。 i为缓存块号,j为主存块号,C为缓存块数,... -
计算机组成原理——主存和cache的地址映像
2021-04-06 15:25:02将主存分成若干个区,每个区的大小和cache的大小是一样的,然后每个区都分成若干个块,每一次只能将一个区 整体移入cache中,在寻找的时候,先通过地址块号找到映象关系表中的分区号,然后将分区号与对应地址位对比... -
Cache与主存的三种映射
2021-04-24 00:21:57优点:最简单的地址映射方式,硬件简单,成本低,地址变换速度快,而且不涉及算法替换问题。 缺点:不够灵活,Cache的存储空间得不到充分利用,每个主存块只有一个固定位置可存放,容易产生冲突 -
Cache-主存地址映射
2020-03-31 23:14:02三种地址映射方式2.主存储器中存储单元地址的分配3.存储容量二.例题解答及分析 一.涉及知识点 1.三种地址映射方式 直接映射 全相联映射 组相联映射 2.主存储器中存储单元地址的分配 3.存储容量 我们所说的... -
计算机组成原理之Cache-主存地址映射
2020-08-29 15:58:22只需根据中间c位字段找到对应的Cache块,然后根据Cache块中的“标记”是否与主存地址的高t位相符来判断,若符合且有效位为1,表明Cache块已和主存的某块建立了对应关系,可根据b位地址从Cache中获取信息 -
3.8 Cache与主存的地址映射方式、替换算法及写策略
2020-09-19 23:26:483.8 Cache与主存的地址映射方式、替换算法及写策略 本节主要内容 1.主存中的快放到Cache中的哪个位置? 方式1:空位随意放:全相联映射 方式2:对号入座:直接映射 方式3:按号分组,组内随意放:组相联映射 2.... -
主存与cache的地址映射---习题
2020-12-04 14:33:34有一个处理器,主存容量1MB,字长1B,Cache容量16KB,块大小32B。 1.采用全相连映射方式,写出内存的地址格式。 2.采用直接映射方式,请写出内存的地址格式 3.采用组相连映射方式(每组有4行),请写出内存的地址...