计算机组成原理---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.mfbz.cn/a/725721.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Redis】如何保证缓存和数据库的一致性

目录 背景问题思路 三个经典的缓存模式Cache-Aside读缓存写缓存为什么是删除旧缓存而不是更新旧缓存&#xff1f;为什么不先删除旧的缓存&#xff0c;然后再更新数据库&#xff1f; 延迟双删如何确保原子性 Read-Through/Write-ThroughRead-ThroughWrite-Through Write Behind …

Ubuntu22.04 下安装Curl库

1. apt 安装&#xff1a; sudo apt-get install curl 2. 官网压缩包&#xff1a; 下载地址&#xff1a;curl downloads wget https://curl.haxx.se/download/curl-7.78.0.tar.gz tar -xzvf curl-7.78.0.tar.gz cd curl-7.78.0 ./configure --with-openssl make sudo make i…

ubuntu系统上快速直接获取ip地址

文章目录 前言总结 前言 ubuntu系统上查看ip地址 $ hostname -I示例输出&#xff1a; 192.168.1.10总结 作者&#xff1a;加辣椒了吗&#xff1f; 简介&#xff1a;憨批大学生一枚&#xff0c;喜欢在博客上记录自己的学习心得&#xff0c;也希望能够帮助到你们&#xff01;

基于若依的ruoyi-nbcio流程管理系统增加所有任务功能(一)

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://218.75.87.38:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a; h…

CMake个人理解和使用

100编程书屋_孔夫子旧书网 前言 CMake是一个构建工具,通过它可以很容易创建跨平台的项目。通常使用它构建项目要分两步,通过源代码生成工程文件,通过工程文件构建目标产物(可能是动态库,静态库,也可能是可执行程序)。使用CMake的一个主要优势是在多平台或者多人协作的…

Python学习打卡:day10

day10 笔记来源于&#xff1a;黑马程序员python教程&#xff0c;8天python从入门到精通&#xff0c;学python看这套就够了 目录 day1073、文件的读取操作文件的操作步骤open()打开函数mode常用的三种基础访问模式读操作相关方法read()方法readlines()方法readline()方法for循…

Golang | Leetcode Golang题解之第168题Excel表列名称

题目&#xff1a; 题解&#xff1a; func convertToTitle(columnNumber int) string {ans : []byte{}for columnNumber > 0 {columnNumber--ans append(ans, Abyte(columnNumber%26))columnNumber / 26}for i, n : 0, len(ans); i < n/2; i {ans[i], ans[n-1-i] ans[n…

VSCode 安装NeoVim扩展(详细)

目录 1、安装NeoVim扩展 2、windows安装Neovim软件 3、优化操作相关的配置&#xff1a; 5、Neovim最好的兼容性配置 6、技巧和特点 6.1 故障排除 6.2、Neovim 插件组合键设置 6.3、跳转列表 1、安装NeoVim扩展 在扩展商店搜索NeoVim&#xff0c;安装扩展 2、windows安装…

吉时利Keithley2602B数字源表

吉时利Keithley2602B数字源表 2601B、2602B、2604B 系统 Sourcemeter SMU 仪器 2601B、2602B 和 2604B 系统 Sourcemeter SMU 仪器为 40W DC / 200W 脉冲 SMU&#xff0c;支持 10A 脉冲&#xff0c;3A 至 100fA 和 40V 至 100nV DC。它们将精密电源、实际电流源、6 位数字万用…

[Linux] 文件系统

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

项目中选择Entity Framework Core还是Dapper?

我是将 Dapper 还是 Entity framework core 用于下一个 .NET 项目&#xff1f;当你必须做出这个决定时&#xff0c;总是令人困惑&#xff0c;为了项目的成功&#xff0c;你需要做出正确的决定。让我来帮你... 介绍 使用 .NET 开发的应用程序可以根据其使用的对象关系映射器 &…

课程设计---哈夫曼树的编码与解码(Java详解)

目录 一.设计任务&&要求&#xff1a; 二.方案设计报告&#xff1a; 2.1 哈夫曼树编码&译码的设计原理&#xff1a; 2.3设计目的&#xff1a; 2.3设计的主要过程&#xff1a; 2.4程序方法清单&#xff1a; 三.整体实现源码&#xff1a; 四.运行结果展示&…

SkyWalking 极简入门

1. 概述 1.1 概念 SkyWalking 是什么&#xff1f; FROM Apache SkyWalking 分布式系统的应用程序性能监视工具&#xff0c;专为微服务、云原生架构和基于容器&#xff08;Docker、K8s、Mesos&#xff09;架构而设计。 提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体…

milvus元数据解析工具milvusmetagui介绍使用

简介 milvusmetagui是一款用来对milvus的元数据进行解析的工具&#xff0c;milvus的元数据存储在etcd上&#xff0c;而且经过了序列化&#xff0c;通过etcd-manager这样的工具来查看是一堆二进制乱码&#xff0c;因此开发了这个工具对value进行反序列化解析。 在这里为了方便交…

建材租赁管理系统软件教程,操作简单佳易王租赁管理系统操作教程

建材租赁管理系统软件教程&#xff0c;操作简单佳易王租赁管理系统操作教程 一、软件操作教程 以下软件操作教程以&#xff0c;佳易王租赁管理系统为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 租赁登记&#xff1a; a、租赁登记可以记录日…

sklearn之各类朴素贝叶斯原理

sklearn之贝叶斯原理 前言1 高斯朴素贝叶斯1.1 对连续变量的处理1.2 高斯朴素贝叶斯算法原理 2 多项式朴素贝叶斯2.1 二项分布和多项分布2.2 详细原理2.3 如何判断是否符合多项式贝叶斯 3 伯努利朴素贝叶斯4 类别贝叶斯4 补充朴素贝叶斯4.1 核心原理4.2 算法流程 前言 如果想看…

Python | Leetcode Python题解之第160题相交链表

题目&#xff1a; 题解&#xff1a; class Solution:def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:A, B headA, headBwhile A ! B:A A.next if A else headBB B.next if B else headAreturn A

吴恩达机器学习 第三课 week1 无监督学习算法(上)

目录 01 学习目标 02 无监督学习 03 K-means聚类算法 3.1 K-means聚类算法原理 3.2 k-means算法实现 3.3 利用k-means算法压缩图片 04 总结 01 学习目标 &#xff08;1&#xff09;了解无监督学习算法 &#xff08;2&#xff09;掌握K-means聚类算法实现步骤 &#xff…

it职业生涯规划系统的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;职业介绍管理&#xff0c;答题管理&#xff0c;试题管理&#xff0c;基础数据管理 前台账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;在线答题&#xff0…