计算机组成原理——三种基本映射方式的比较

梳理

基本思想:分块

主存分块,一共有2^s块,编号从0开始

Cache分行,一共2^r行,编号从0开始

Cache每行的大小与主存每块的大小相同,大小为2^w个字

字是CPU每次访问存储器时可存取的最小单位

但Cache块数肯定是要小于主存块数的

 这里要注意,主存的标记位为s位,而主存分块一共分了2^s块,每块的大小为2^w个字,而主存的块内地址有w位。

全相联映射的工作原理

主存和cache均被分为固定大小的数据块,主存分块,Cache分行,主存的块和Cache的行大小相同

主存地址可以被细分为主存块地址和块内偏移地址

映射算法:主存的数据块可映射到Cache任意行,即主存中的某一数据块可以放置在cache中的任意块,如主存0可以放在cache中的任何一块,同样其他主存块也一样,但这给查找带来了麻烦,cache块中的数据到底是主存块中的哪一块的数据

这里引出一个例子

设每块4个字,主存大小为1024个字,则第61个字的主存地址为

将61转换为二进制,00001111   01,前者是块号,后者是块内地址

将主存分块之后,就将原来的一维地址变成了二维地址

 

查找表中还包括有效位valid,以及dirty位,描述数据的一致性。 Valid位为零表示空行,为1表示有数据副本,dirty为1表示cache中的数据和主存中的原始数据不一致,在淘汰时要进行数据一致性的维护。

在比较的同时还需要关注valid位,valid位与1进行比较,valid位为零的行是空行,不存在数据。

多路比较的结果有两种可能,1,所有比较器比较结果都是不相等,表示缺失,2,有一个比较器比较相符,表示数据命中,所以这里命中信号应该是所有比较结果的逻辑或操作。如果命中,可以直接由cache地址块地址去访问对应的cache行。  这就是全相联映射的基本框架。

 主存有2^s次方块,每块有2^w次方个字,所以主存容量2^(s+w)

Cache容量求法

只考虑有效位,意思是不考虑脏数据位,所以每块有一位有效位,还有标记位s位,用于储存主存的块地址最后加上块的大小就可以了

以这个ppt为例,实践一下刚才的求法

主存容量256个字=2^8个字,分成64块=2^6,,说明s=6,标记位有6位

直接调用公式,,完美求解

每块有4个字.4=2^2,说明w=2,块内地址是2位  

哦,对了,,还有一件事,要注意,,那个访问序列,,,

 这个是十六进制,1F直接转二进制,00011111,000111,是标记位,11是块内地址位,每块4个字,用两个二进制数就可以完美表示

然后就按照那个顺序,为空(不命中)填入,不为空(命中)替换就好

全相联映射特点

1.Cache利用率高

2.块冲突率低

3.淘汰算法复杂

应用于小容量Cache

直接映射

和全相联映射一样,还是主存分块,Cache分行,主存的块与Cache的行大小相同

不同点来了

主存分块后还将以Cache行数为标准进行分区

那么问题来了,怎么分区嘞?由于块的大小一样,主存分的块的数目必然大于Cache分的块的数目,Cache有m块,那么主存就以m块为界限进行分区,注意这里的区号同样从0开始

看上面,,,,Cache行数m=2^r,懂了吧

再引入一个例子

主存大小为1024个字,每块4个字,Chche分为4行,第61个字的主存地址为

将61化为二进制数的0000110001,000011为区号,11为区内块号,01位块内地址,,将主存地址从一维变成了三维

映射算法

Cache共m行,主存第j块号映射到Cache的行号为i=jmodm,,即主存的数据块映射到Cache的特定行,而不是任一行(块号,行号都从0开始)

每个区都有m块,那么主存每个区的每一块都会映射到Cache特定的一行上,并且循环进行

 

 直接映射查找的时候就方便多啦,我们只需要直接查找行地址就好啦,如果为空(没命中),直接填入,如果不为空(命中),就直接替换

就是先根据行号找到对应的行,然后比较标志位,如果为空就填入,如果已有标志位就替换

这里又要计算Cache容量

主存容量256个字,分为64块,64=2^6,不同于全相联映射,这里主存在分块的基础上又会进行分区操作,Cache有8块=2^3,

s=6,r=3,所以区地址有3位(区地址是直接映射的标记地址),行地址有3位,块内地址还是2位(忘记了就看看上面)

所以计算Cache容量(1位有效位+3位标记位+副本容量)*行数

还有就是别忘了给出的访问序列是十六进制,,一位化四位之后再分块

直接映射的特点

1.Cache利用率低

2.块冲突率高

3.淘汰算法简单

适用于大容量Cache

 还有这个题要注意一点,

主存分为2048块=2^11,,表明高11位是主存的块号,全相联映射中主存块号是标志位,而在直接映射中,将区号作为了标志位,但是主存块号是不变的

组相联映射

 主存分块,Cache分行,主存的块和Cache的行大小相同

Cache分组,原则非常简单,只要保证每组中行数相同即可,假设Cache分了n组

之后还要将主存进行分组,主存分块后还将以Cache组数为标准进行分组,Cache分了n组,那么主存就以n块为一组进行分组

同样滴,这里的组号也是从0开始

你再看这个d,是不是又很熟悉呢?Cache分成u组,u=2^d,这样就很容易分开

映射算法:
Cache共n组,主存第j块号映射到Cache的组号为

i=jmodn(Cache分了n组,主存以n块为一组进行分组)

主存的每组一循环,映射全部的Cache

i是一个余数,余几Cache组号就是几

主存的数据块映射到Cache特定组的任意行

再再再来一个例子

设每块4个字,主存大小为1024个字,Cache分为两组,求第61个字的主存地址

61化成二进制,为0000111101,0000111为主存组号,1为Cache组号,01为块内地址

主存地址从一维变成了三维

介个比较的时候首先找到对应的Cache组号,如果没命中(为空),直接填入;如果命中(标志位)相同,直接替换就好啦

如果这组没满,就直接填直到满了为止,填哪个都无所谓,如果满了,就随便替换一行就好

又又又又要计算Cache容量了,是不是发现每种映射方式的套路都一样

主机容量256个字,=2^8,划分为64块=2^6,Cache分为8块,

由图可知,将Cache分成了4组,4=2^2,d=2;

那么标记位有4位,组号有两位,块内地址有两位(2^w=4别忘了)

这个题就很容易,理解方式同上,主存块号是不变的,变的是标记位

组相联映射可以看做全相联映射和直接映射的特殊情况

假设Cache是m行n路组相联,即n行一组

那么当n=m的时候,组相联变成了全相联,,,因为只有一组

而当n=1时,Cache一行为一组,相当于没分组,就变成了直接相联

组相联同时具有全相联和直接映射相联的特征

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 《计算机组成原理》是计算机科学与技术专业中比较重要的一门课程,而唐朔飞老师所编写的《计算机组成原理第三版》则是该学科领域重要的参考书籍之一。该书主要介绍了计算机体系结构、指令系统、CPU设计、存储系统、输入输出系统等计算机系统的基本组成部分。 《计算机组成原理第三版》结构清晰,篇章逻辑严谨,内容易于理解。该书以教材的形式,将计算机系统的各个组成部分进行了详细说明,包括指令系统设计、CPU结构和操作、存储系统和I/O系统等方面。此外,该书还涵盖了计算机组成原理的背景知识,例如数字逻辑、组合电路、时序电路等内容,以便理解计算机原理和工作方式。 唐朔飞老师是中国计算机科学界的权威人物,他与众多知名学者共同致力于计算机科学的教育和研究,其严谨的学风和科学的研究方法备受学生和同行的尊重。因此,《计算机组成原理第三版》不仅在国内广受欢迎,也在国际上享有很高声誉。 总之,《计算机组成原理第三版》是一个非常好的计算机组成原理教材和参考书籍,其详实的内容和清晰的讲解方式能够让学生轻松地理解计算机系统的基本组成部分,对于提高学生对计算机科学的认知和理解能力具有积极作用。 ### 回答2: 《计算机组成原理第三版》是由唐朔飞编著的一本计算机科学教材,该教材系统地介绍了计算机组成原理与设计方法,针对不同层次的读者进行了深入浅出的讲解。 该书主要分为五个部分,分别是计算机系统概述、计算机的算术运算、指令系统的设计、存储器系统的设计以及输入输出系统的设计。其中每个部分都包括一些基础概念与原理、设计方法与实现技术、应用场景与问题解决策略等内容。 在计算机系统概述中,唐朔飞详细介绍了计算机硬件、软件和固件的基本结构组成,以及它们之间的相互作用和协同工作原理。在算术运算方面,他讲解了算术运算器的功能与实现,并介绍了各种运算方法和浮点数表示方法等。在指令系统的设计中,他详细讲解了指令的编码格式、操作类型、寻址方式、中断响应等方面的知识。 在存储器系统的设计方面,唐朔飞重点探讨了存储器系统的层次结构、存储器芯片的组成原理、存储器地址映射技术,以及高速缓存系统的设计。在输入输出系统的设计中,唐朔飞介绍了各种输入输出设备的外围控制器的硬件和软件结构,以及它们与主机之间的数据传输和控制协议。 总之,《计算机组成原理第三版》详细讲解了计算机系统的基本原理和设计方法,丰富了计算机科学领域的理论知识,帮助读者更好地理解和应用计算机技术。 ### 回答3: “计算机组成原理第三版唐朔飞pdf”指的是一本计算机组成原理的教材,作者为唐朔飞。这本教材介绍了计算机组成和运作原理,包括数字电路、机器语言、指令系统、中央处理器、存储器层次结构、输入输出等方面的知识。这本教材是计算机领域一本经典的教材,被广泛应用于各大高校的计算机科学专业中。 这本教材涵盖了计算机原理的基础知识,从数字电路入手,深入探讨了计算机系统的各个方面。通过学习这本教材,读者可以深入理解计算机系统的内部结构和原理,并且了解计算机如何进行信息处理。在这个信息时代,计算机科学已经成为了一项高新技术,本教材可以为学生提供一定的指导,让学生们掌握计算机的相关知识,为日后的研究和开发铺平道路。 总之,“计算机组成原理第三版唐朔飞pdf”是一本非常重要的计算机科学教材,对于学习计算机的人来说,是一本非常有价值的参考书。它涵盖了计算机原理的基础知识,适合广大计算机科学爱好者和专业人士使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值