计组Review1
1GB的内存,它是以字节编址的,假设内存地址为32位,128KB的高速缓存。现在有一个数据位于0x123456(字节编址),会映射到那些不同情形的内存单元上,还有TAG和总缓存大小。

1. 直接映射,每块16字节。
已知:
- 块大小为 $16$ 字节,也就是 $128({2^7})Bit$ 。
首先要计算块行数(数量):
- 块行数=$\frac{{128 \times 1024 \times 8B{\rm{it}}}}{{16 \times 8B{\rm{it}}}} = \frac{{{2^{20}}}}{{{2^7}}} = {2^{13}}$。
主存地址 = 区号 + 区内块号 + 块内偏移量:
- 主存有 ${2^{32}}$ 块。
- 区内块号就是cache行数。
- 块内偏移量就是cache块大小=$4$(注意这里是字节编址)。
于是我们可以得到标记的位数:
- $Tag=32-13-4=15$。
于是我们可以得到地址如下所示:

然后计算块地址:
- $0{\rm{x}}123456 \div 0{\rm{x}}10 = 0{\rm{x}}12345$
接着计算Cache行号:
- $0{\rm{x}}12345\bmod {2^{13}} = 0{\rm{x}}345$
- 所以$TAG=0{\rm{x}}9$。

所以直接映射的Cache总位数为:
- ${2^{13}} \times ({2^2} \times {2^5} + (32 - 13 - 2 - 2) + 1)=1179648Bit=147456Byte=144KB$
2. 直接映射,每块64字节。
已知:
- 块大小为 $64$ 字节,也就是 $512({2^9})Bit$ 。
首先要计算块行数(数量):
- 块行数=$\frac{{128 \times 1024 \times 8Bit}}{{{2^9}}} = {2^{11}}$。
主存地址 = 区号 + 区内块号 + 块内偏移量:
- 主存有 ${2^{32}}$ 块。
- 区内块号就是cache行数。
- 块内偏移量就是cache块大小=$6$(注意这里是字节编址)。
于是我们可以得到标记的位数:
- $Tag=32-11-6=15$。
然后计算块地址:
- $0{\rm{x}}123456 \div 0{\rm{x}}40 = 0{\rm{x}}48D1$
接着计算Cache行号:
- $0{\rm{x}}48D1\bmod {2^{11}} = 0{\rm{x}}D1$
- 所以$TAG=0{\rm{x}}9$。
所以直接映射的Cache总位数为:
- ${2^{11}} \times ({2^4} \times {2^5} + (32 - 11 - 4 - 2) + 1)=1081344Bit=1056Byte=132KB$
3.二路组相联,每块16字节
已知:
- 块大小为 $16$ 字节,也就是 $128({2^7})Bit$ 。
首先要计算块组数(数量):
- 块行数=$\frac{{128 \times 1024 \times 8B{\rm{it}}}}{{16 \times 8B{\rm{it}}}} = \frac{{{2^{20}}}}{{{2^7}}} = {2^{13}}$。
- 块组数=$\frac{{{2^{13}}}}{2} = {2^{12}}$。
主存地址 = 组号 + 组内块号 + 块内偏移量:
- 块内偏移量也就是cache块大小=$4$。
- 组内块号就是cache组数
于是我们可以得到标记的位数:
- $Tag=32-12-4=16$。

然后计算块地址:
- $0{\rm{x}}123456 \div 0{\rm{x}}10 = 0{\rm{x}}12345$
接着计算Cache组号:
- $0{\rm{x}}12345\bmod {2^{12}} = 0{\rm{x}}345$
- 所以$TAG=0{\rm{x}}12$。
所以2路组相联的Cache总位数为:
- ${2^{13}} \times ({2^2} \times {2^5} + (32 - 12 - 2 - 2) + 1)=1187840Bit=148480Byte=145KB$
4. 四路组相联,每块32字节
已知:
- 块大小为 $32$ 字节,也就是 $256({2^8})Bit$ 。
首先要计算块组数(数量):
- 块行数=$\frac{{128 \times 1024 \times 8B{\rm{it}}}}{{32 \times 8B{\rm{it}}}} = \frac{{{2^{20}}}}{{{2^8}}} = {2^{12}}$。
- 块组数=$\frac{{{2^{12}}}}{{{2^2}}} = {2^{10}}$。
主存地址 = 组号 + 组内块号 + 块内偏移量:
- 块内偏移量也就是cache块大小=$5$。
- 组内块号就是cache组数
于是我们可以得到标记的位数:
- $Tag=32-10-5=17$。
然后计算块地址:
- $0{\rm{x}}123456 \div 0{\rm{x}}20 = 0{\rm{x}}91A2$
接着计算Cache组号:
- $0{\rm{x}}91A2\bmod {2^{10}} = 0{\rm{x}}1A2$
- 所以$TAG=0{\rm{x}}24$。
所以4路组相联的Cache总位数为:
- ${2^{12}} \times ({2^3} \times {2^5} + (32 - 10 - 3 - 2) + 1)=1122304Bit=140288Byte=137KB$
计组Review1的更多相关文章
- 计组CPU设计实验关键材料和关键设计
我记得这是2016春季学期搞得,参考和学习了很多别人的东西,这里小小的总结一下,逻辑性还不是太强,还需要好好整理 首先是指令集 CPU架构 外部接线架构 指令格式 机器状态自动机 这部分忘了,汗 这部 ...
- 【计组】《计算机组成与体系结构性能设计》William Stallings 第2部分 计算机系统 第3章 计算机功能和互连的顶层视图
关键词 address bus 地址总线 asynchronous timing 异步时序 bus 总线 bus arbitration 总线仲裁 bus width 总线宽度 centralized ...
- 【重学计算机】计组D3章:运算方法与运算器
1. 定点数运算及溢出 定点数加减法:减法化加法,用补码直接相加,忽略进位 溢出:运算结果超出了某种数据类型的表示范围 溢出检测方法:统一思想概括为正正得负或负负得正则溢出,正负或负正不可能溢出 方法 ...
- 【重学计算机】计组D2章:数据表示
1.基本概念 真值:+0101,-0100:机器数: [x]原=0101 2.几种机器数 原码:x = -0101,[x]原 = 1101 反码:x = -0101,[x]反 = 1010 补码:x ...
- 【重学计算机】计组D1章:计算机系统概论
1.冯诺依曼计算机组成 主机(cpu+内存),外设(输入设备+输出设备+外存),总线(地址总线+数据总线+控制总线) 2.计算机层次结构 应用程序-高级语言-汇编语言-操作系统-指令集架构层-微代码层 ...
- 计组_IEEE754_练习题
IEEE754 阶码:移码:尾数:原码 一个规格化的32位浮点数x的真值可表示为: x=(-1)^s×(1. M) × 2^(E-127) e=E-127 其中尾数域 ...
- [软工顶级理解组] Beta阶段项目展示
目录 团队成员 软件介绍 项目简介 预期典型用户 功能描述 预期目标用户数 用户反馈 团队管理 分工协作 项目管理 取舍平衡 代码管理 程序测试 代码规范 文档撰写 继续开发指导性 用户沟通 需求分析 ...
- [软工顶级理解组] Alpha阶段项目展示
目录 团队成员 软件介绍 项目简介 预期典型用户 功能描述 预期目标用户数 用户反馈 团队管理 分工协作 项目管理 取舍平衡 代码管理 程序测试 代码规范 文档撰写 继续开发指导性 用户沟通 需求分析 ...
- 计算机系统6-> 计组与体系结构3 | MIPS指令集(中)| MIPS汇编指令与机器表示
上一篇计算机系统5-> 计组与体系结构2 | MIPS指令集(上)| 指令系统从顶层讲解了一个指令集 / 指令系统应当具备哪些特征和工作原理.这一篇就聚焦MIPS指令集(MIPS32),看看其汇 ...
- Codeforces Round #389 (Div. 2,) B C
考完复变之后沉迷联盟不能自拔...明天就开始抢救计组 ... B 一个人装错了键帽 选择几个pair 把pair里面的键帽交换 并且每个键帽最多可以换一次 给出按键序列和输出序列 判断是否可以 如果可 ...
随机推荐
- 论文解读(GLA)《Label-invariant Augmentation for Semi-Supervised Graph Classification》
论文信息 论文标题:Label-invariant Augmentation for Semi-Supervised Graph Classification论文作者:Han Yue, Chunhui ...
- photoshop 2021 for mac安装教程,亲测可用!!!
小编分享下photoshop cc 2021 for mac 安装教程,适配M1芯片,让大家完美使用ps2021,畅享所有新功能Adobe Photoshop2021(简称PS) 新版本主要增加了Ne ...
- 快速创建软件安装包-ClickOnce
大家好,我是沙漠尽头的狼. .NET是免费,跨平台,开源,用于构建所有应用的开发人员平台. 今天介绍使用ClickOnce制作软件安装包,首先我们先了解什么是ClickOne. 1. 什么是Click ...
- uniapp/微信小程序 项目day03
一.商品列表 1.1 获取数据 首先能够进入商品列表的途径 传的数据有 了解了这个之后就可以开始了,先创建分支 创建编译模式,并分配初试数据 这个时候就可以获取数据了 需要的数据 所以在发起请求之前需 ...
- 记一次多个Java Agent同时使用的类增强冲突问题及分析
摘要:Java Agent技术常被用于加载class文件之前进行拦截并修改字节码,以实现对Java应用的无侵入式增强. 本文分享自华为云社区<记一次多个JavaAgent同时使用的类增强冲突问题 ...
- MindSpore Graph Learning
技术背景 MindSpore Graph Learning是一个基于MindSpore的高效易用的图学习框架.得益于MindSpore的图算融合能力,MindSpore Graph Learning能 ...
- .NET实现堆排序
堆排序及相关知识 堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序.首先简单了解下堆结构. 堆 堆是具 ...
- Go语言输出函数fmt.Print、fmt.Printf、fmt.Println的用法区别
fmt 包的介绍 fmt = format,是一种格式化输出函数汇总包,用于格式化输出 fmt.Print === 原样输出 Print formats using the default forma ...
- linux启动终端出现To run a command as administrator (user root) use sudo command See man sudo_root
解决方法 touch ~/.sudo_as_admin_successful
- 集群部署看过来,低代码@AWS智能集群的架构与搭建方案
为了帮助充分利用AWS的托管服务快速构建起一套集群环境,彻底去掉"单一故障点",实现最高的可用性,我们准备了<低代码智能集群@AWS的架构与搭建方案>看完本文,带你掌握 ...