计算机组成原理---Cache的基本工作原理习题

对应知识点:

Cache的基本原理

1.某存储系统中,主存容量是Cache容量的4096倍,Cache 被分为 64 个块,当主存地址和Cache地址采用直接映射方式时,地址映射表的大小应为()(假设不考虑一致维护和替换算法位。)

A.6*4097bit        B.64*12bit        C.6*4096bit        D.64*13bit

分析

地址映射表即标记阵列,由于Cache被分为64个块,因此Cache有64行,采用直接映射,一行相当于Cache的一组。因此标记阵列每一行存储一个标记项。

由于采用直接映射方式,所以主存比Cache多出的位数就是标记的位数。2^12=4096,是Cache容量的4096倍,即地址长度比Cache长12位,所以标记位位数为12位,再加上1位有效位得到每行用于地址映射的位数为12+1=13,所以 Cache映射表的大小为64*13bit。

答案:D

2.有一主存-Cache层次的存储器,其主存容量为1MB,Cache 容量为 16KB,每块有8个字,每字32位,采用直接地址映射方式,Cache起始字块为第0块,若主存地址为35301H,且CPU访问 Cache命中,则在Cache的第()(十进制表示)字块中。

A.152        B.153        C.154        D.151

分析

由于采用直接地址映射方式,所以主存地址比Cache地址多出的位数即标记位,所以标记位位数:1MB/16KB=64,2^6=64。标记位数为6。块内地址为低5位(2^5=32),所以

0011 0101 0011 0000 0001中高6位和低5位分别为标记位和块内地址,其余的01 0011 000就是Cache字块地址,转换为十进制:152

但如果不是采用直接地址映射方式,那么就不能直接计算出标记位了。每块有8个字,每字32位,则每个Cache块大小为32B,本题有2^14/2^5=2^9个Cache块。所以块内地址往前数9位就是字块地址0011 0101 0011 0000 0001。

答案:A

3.设有8页的逻辑空间,每页有1024B,它们被映射到32块的物理存储区中,则按字节编址逻辑地址的有效位是(),物理地址至少是()位。

A.10,12        B.10,15        C.13,15        D.13,12

分析

页号地址有3位(2^3=8),每页为1024B,页内地址为10位,因此逻辑地址为13位。对于物理地址,块内地址和页内地址一样有10位,内存至少有32=2^5个物理块,所以表示块号的地址至少有5位,因此物理地址至少有15位。

答案:C

4.对于n-路组相联映射Cache,在保持n及主存和 Cache 总容量不变的前提下,将主存块大小和Cache 块大小都增加一倍,则下列描述中正确的是()。

A.字块内地址的位数增加1位,主存tag字段的位数增加1位

B.字块内地址的位数增加1位,主存tag字段的位数不变

C.字块内地址的位数减少1位,主存tag字段的位数增加1位

D.字块内地址的位数增加1倍,主存、字段的位数减少一半

分析

由于Cache总容量不变,Cache块大小增加一倍,则Cache组数减少一半。组相联映射的主存地址:标记+Cache组号+块内地址组成,由于Cache组数减少一半,则Cache组号减少1位。

由于主存块大小增加了一倍,所以则块内地址会增加1位。例如,主存块大小原来为32B(2^5),增加一倍变为64B(2^6),所以块内地址增加1位。

主存地址位数不变,块内地址+1,Cache组号-1,则标记位数不变。

答案:B

5.假设主存地块位数为 32 位,按字节编址,主存和 Cache 之间采用全相联映射方式,主存块大小为1个字,每字 32位,采用回写(wite back)方式和随机替换策略,则能存放32K字数据的Cache 的总容量是至少应有()位。

A. 1536K        B. 1568K        C2016K        D.2048K

分析

每个Cache行对应一个标记项,标记项包括有效位,脏位,替换控制位,标记位

如果题目说采用写回法,那么一定要加1位修改位(脏位)。如果题目说随机替换策略,则说明不需要替换控制位。如果题目说不考虑脏位和替换控制位,那么就只需要考虑有效位和标记位即可。

主存块大小32位(4B),所以块内地址位数2位(2^2),主存块位数为32位,由于采用全相联映射,所以主存地址组成为“标记+块内地址”,标记位数32-2=30位。

所以每个Cache行的总位数为32bit(数据位)+30bit(标记)+1bit(修改位)+1bit(有效位)=64bit。所以cache总容量为32K*64bit=2048Kbit。

答案:D

6.假定8个存储器模块采用交叉方式组织、存储器芯片和总线支持突发传送,CPU通过存储器总线读取数据的过程为:发送首地址和读命令需1个时钟周期,存储器准备第一个数据需8个时钟周期,随后每个时钟周期总线上传送1个数据,可连续传送8个数据(即突发长度为8)。若主存和Cache之间交换的主存块大小为64B,存取宽度和总线宽度都为8B,则 Cache 的一次缺失损失至少为()个时钟周期。

A.17        B.20        C.33        D.80

分析:

一次缺失损失需要从主存读出一个主存块(64B),由于总线宽度为8B,传送的一个数据大小为8B,又因为突发长度为8(可连续传送8个数据),所以每个突发传送总线事务可读取8B*8=64B。刚好和需要从主存读出的数据大小相同。

Cache的一次缺失损失至少为:发送首地址和读命令的1个时钟周期 + 存储器准备第一个数据的8个时钟周期 + 随后连续传送的8个数据块的8个时钟周期 = 1 + 8 + 8 = 17个时钟周期。

答案:A

7.有如下 C 语言程序段:

for (k = 0; k < 1000; k++)a[k] = a[k] + 32;

若数组 a 以及变量 k 均为 int 型,int 型数据占 4B,数据 Cache 采用直接映射方式,数据区大小是 1KB,块大小是 16B,该程序段执行前 Cache 为空,则该程序段执行过程中,访问数组 a 的 Cache 的缺失率是:

A. 1.25%

B. 2.5%

C. 12.5%

D. 25%

分析:

数据区大小是 1KB,块大小是 16B,Cache 有 1KB/16B = 64 行,每个块可以装 16B/4B = 4 个数组元素。

对于数组中任意一个元素 a[k],只有在 a[k] = a[k] + 32 这行代码中会对 a[k] 进行访问。其中包含读 a[k] 一次,做完加法后写 a[k] 一次。

每次调入块后加载连续的四个数组元素,a[4i]、a[4i + 1]、a[4i + 2]、a[4i + 3],其中 i 为整数,i = 0, 1, …, 249。

答案:C

以上内容来自:

浅谈408真题之举一反三 - 知乎 (zhihu.com)

他的补充也特别好,可以打开看看。

8.若计算机主存地址为32位,按字节编址,Cache数据区大小为32KB,主存块大小为 32B,采用直接映射方式和回写(Write Back)策略,则Cache行的位数至少是()

A.275        B.274        C.258        D.257

分析:

Cache数据区大小为32KB,主存块大小为32B,于是Cache中共有1K个Cache行,由于采用直接映射方式,所以映射为1K个分组,组号长度为10(1K=2^10)。主存块大小为32B,则块内地址长度为5bit(2^5=32B),主存地址为32位,则标记位数为:32-10-5=17位。

所以Cache行的总位数应为:32B=32*8bit=256bit(数据位,和主存块大小相同)+17bit(标记位)+1bit(写回法,脏位)+1bit(有效位,一定不要忘记)=275bit

答案:A

9.若计算机主存地址为 32 位,按字节编址,某Cache的数据区容量为32KB,内存块大小为64B,采用8路组相联映射方式,该Cache中比较器的个数和位数分别为()

分析:

主存块大小为64B,那么块内地址有6位(2^6=64),Cache数据区容量为32KB,内存块大小为64B(等于Cache块大小),所以Cache的总块数为32KB/64B=2^9。由于采用8路组相联映射的方式,所以每8个Cache块为一组,则Cache组数:2^9/8=2^6组,所以组号地址有6位。所以标记位有32-6-6=20位。

“比较器”用于并行比较分组中所有Cache行的标记与主存地址标记,因此比较器的个数即每个分组的Cache行数8。比较器的位数就是标记的位数8位。
答案: A

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30675.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 算法:删除链表的倒数第 N 个结点 c++

原题链接&#x1f517;&#xff1a;删除链表的倒数第 N 个结点 难度&#xff1a;中等⭐️⭐️ 题目 给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], n 2 输出&#xff1a…

【无线传感网】LEACH路由算法

1、LEACH路由算法简介 LEACH协议,全称是“低功耗自适应集簇分层型协议” (Low Energy Adaptive Clustering Hierarchy),是一种无线传感器网络路由协议。基于LEACH协议的算法,称为LEACH算法。 2、LEACH路由算法的基本思想 LEACH路由协议与以往的路由协议的不同之处在于其改变…

ElasticSearch地理空间数据写入

目录 ElasticSearch地理空间数据写入思路介绍实现(geo_point)数据处理创建点的mappings使用Java将数据写入ES配置maven依赖项目配置ES数据写入查询数据实现(geo_shape)数据处理创建geo_shape的mappings使用Java将数据写入ES数据写入查询数据ElasticSearch地理空间数据写入 申明…

欧拉函数的求解

欧拉函数的定义 欧拉函数的性质 性质1是性质2的特殊情况 性质1的理解&#xff1a;一个数a是质数&#xff0c;前面的数b与a的gcd一定是1 性质2的理解&#xff1a;1,2,…p,p1,p2…2p,…3p…p^k 其中以np结尾的序列重复了p^&#xff08;k-1&#xff09;次&#xff0c;每一次的循环…

HarmonyOS Next 系列之从手机选择图片或拍照上传功能实现(五)

系列文章目录 HarmonyOS Next 系列之省市区弹窗选择器实现&#xff08;一&#xff09; HarmonyOS Next 系列之验证码输入组件实现&#xff08;二&#xff09; HarmonyOS Next 系列之底部标签栏TabBar实现&#xff08;三&#xff09; HarmonyOS Next 系列之HTTP请求封装和Token…

【设计模式深度剖析】【11】【行为型】【解释器模式】| 以算术表达式求值为例加深理解

&#x1f448;️上一篇:状态模式 设计模式-专栏&#x1f448;️ 文章目录 解释器模式定义英文原话直译 解释器模式中的角色1. 抽象表达式&#xff08;AbstractExpression&#xff09;2. 终端表达式&#xff08;TerminalExpression&#xff09;3. 非终端表达式&#xff08;Non…

6.S081的Lab学习——Lab7: Multithreading

文章目录 前言一、Uthread: switching between threads (moderate)提示&#xff1a;解析 二、Using threads (moderate)解析&#xff1a; 三、Barrier (moderate)解析&#xff1a; 总结 前言 一个本硕双非的小菜鸡&#xff0c;备战24年秋招。打算尝试6.S081&#xff0c;将它的…

[Linux] 文件系统

UNIX操作系统将文件组织成一个有层次的树形结构&#xff1a; 标准目录&#xff1a; 根目录&#xff1a; /tmp目录 主目录&#xff1a; 这就是主目录 一般与系统有关的信息都存放在etc目录下 注意&#xff1a; /etc/passwd存放的是用户账户信息&#xff0c;不是密码信息&#xf…

VMware RedHat虚拟机磁盘扩容(添加磁盘和扩展磁盘)

前言 自己的电脑上配一个虚拟机还是很有必要的&#xff0c;用起来比双系统方便一点&#xff0c;之前搞了100g的ubuntu没用到&#xff0c;后面重装redhat觉得随便搞个20g就够用了&#xff0c;后面用到之后就遇到磁盘不够用的情况&#xff0c;只能说情况允许的话&#xff0c;磁盘…

FPGA生成图像Modelsim仿真生成BMP图片保存显示

FPGA生成图像模板&#xff0c;产生RBG格式棋盘格。利用Modelsim仿真&#xff0c;将FPGA生成的图片转化成BMP图片保存并显示。 一&#xff1a;仿真代码 timescale 1ns/1ps module design_1_wrapper_top (); reg clk_100MHz; reg clk_300MHz; wire [31:0]clk_rate; …

为微信小程序项目添加eslint

背景 在使用vscode开发微信小程序的过程中&#xff0c;修改js的时候发现没有报错提示&#xff0c;让我很不习惯&#xff0c;所以想为微信小程序项目添加eslint配置 编码实战 为微信小程序配置ESLint可以遵循以下步骤&#xff1a; 安装ESLint及其相关插件 首先&#xff0c;…

基于IDEA的Maven(坐标信息介绍和编写)

这篇博客来学习和分析一下&#xff1a; " pom.xml " 所生成的最基本的信息。 之前的博客中讲到&#xff0c;学 Maven 就是学 " pom.xml " 的配置。后面也会围绕这个文件进行学习。 目录 一、分析 pom.xml 文件 &#xff08;1&#xff09;分析的 "p…

2024 年最新 Python 基于火山引擎豆包大模型搭建 QQ 机器人详细教程(更新中)

豆包大模型概述 火山引擎官网&#xff1a;https://www.volcengine.com/ 字节跳动推出的自研大模型。通过字节跳动内部50业务场景实践验证&#xff0c;每日千亿级tokens大使用量持续打磨&#xff0c;提供多模态能力&#xff0c;以优质模型效果为企业打造丰富的业务体验。 模型…

数据库 | SQL语言和关系代数汇总篇(*^▽^*)

双重/两个 not exists 嵌套查询 简单分析_两个not exists-CSDN博客 最明白的 not exists 双层嵌套讲解 SQL 查询语句_not exist 嵌套-CSDN博客 1. 答案&#xff1a; 2. 答案&#xff1a; 3. 4. 5. 6. 7. 8. 这个SQL查询是从两个表&#xff08;假设是SPJ和P&#xff09;中检…

智能合约新项目 链上智能合约前端H5源码 智能合约区块链 以太坊前端调用智能合约

智能合约新项目 链上智能合约前端H5源码 智能合约区块链 以太坊前端调用智能合约 源码下载&#xff1a;https://download.csdn.net/download/m0_66047725/89402192 更多资源下载&#xff1a;关注我。

.NET+Python量化【1】——环境部署和个人资金账户信息查询

前言&#xff1a;量化资料很少&#xff0c;.NET更少。那我就来开个先河吧~ 以下是使用QMT进行量化开发的环境部署和基础信息获取有关操作。 1、首先自己申请券商的QMT权限&#xff0c;此步骤省略。 2、登陆QMT&#xff0c;选择极简模式&#xff0c;或者独立交易模式之类的。会进…

阿里员工:“大厂病”导致有些人不太正常

阿里巴巴对“大公司病”开刀 阿里巴巴宣布对“大公司病”开刀&#xff0c;终于有高层意识到这个问题的严重性&#xff0c;并决心解决。所谓“大公司病”&#xff0c;不仅体现在规模臃肿、部门繁多、层次复杂&#xff0c;还包括中层管理人员的不作为。这些人处在上传下达的位置&…

旅游管理平台系统

摘要 如今许多地区的风景已经随着网络技术的不断发展和进步而映入人们的眼帘&#xff0c;旅游已经成为一种大众化的休闲方式。而青海海西州风光旖旎&#xff0c;民族文化独特&#xff0c;更是吸引了众多游客纷至沓来。海西州地域广阔、人烟稀少、是一个经济发展缓慢的地方&…

nginx+tomcat负载均衡、动静分离群集【☆☆☆☆☆】

Nginx是一款非常优秀的HTTP服务器软件&#xff0c;性能比tomcat更优秀&#xff0c;它支持高达50 000个并发连接数&#xff0c;拥有强大的静态资源处理能力&#xff0c;运行稳定&#xff0c;内存、CPU等系统资源消耗非常低。目前很多大型网站都应用Nginx服务器作为后端网站程序的…

Python Textract库:文本提取

更多Python学习内容&#xff1a;ipengtao.com Textract是一个强大的Python库&#xff0c;用于从各种文件格式中提取文本。无论是PDF、Word文档、Excel电子表格、HTML页面还是图像&#xff0c;Textract都能有效地提取其中的文本内容。Textract通过集成多种开源工具和库&#xff…