深入理解计算机系统 CSAPP 家庭作业6.34

第一步先求(S,E,B,m)

题目说共C=32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节

C=B*E*S .B=16 ,直接映射的E就是1,所以S=2

m为啥等于7? 通过写出两个数组所有的地址可以得出m=7.

得出高速缓存的参数:(S,E,B,m)=(2,1,16,7),注意图6-26每个参数的定义即可算出:

C32
M128
s1
b4
t2

此时脑海已经有了缓存的结构了

从图6-26的定义和我们算出来的参数就得出:

题目说数组src从0开始 因为sizeof(int)==0100 所以每个元素的地址+100就是下个元素的地址啦

加到dst[0][0]你发现刚好就等于二进制1000000 也就是十进制的64.这两个数组是紧挨着的

sizeof(int)==0100虚拟地址(二进制)COCICT
src[0][0]00000000000000
src[0][1]00001000100000
src[0][2]00010001000000
src[0][3]00011001100000
src[1][0]00100000000100
src[1][1]00101000100100
src[1][2]00110001000100
src[1][3]00111001100100
src[2][0]01000000000001
src[2][1]01001000100001
src[2][2]01010001000001
src[2][3]01011001100001
src[3][0]01100000000101
src[3][1]01101000100101
src[3][2]01110001000101
src[3][3]01111001100101
dst[0][0]10000000000010
dst[0][1]10001000100010
dst[0][2]10010001000010
dst[0][3]10011001100010
dst[1][0]10100000000110
dst[1][1]10101000100110
dst[1][2]10110001000110
dst[1][3]10111001100110
dst[2][0]11000000000011
dst[2][1]11001000100011
dst[2][2]11010001000011
dst[2][3]11011001100011
dst[3][0]11100000000111
dst[3][1]11101000100111
dst[3][2]11110001000111
dst[3][3]11111001100111

每次读16字节那就是读数组的一行,读到的数放在组0还是组1取决于上表中被读元素地址的CI位

i=0,j=0 =>i=0,j=3
读src[0][0]写dst[0][0]
组0:src[0][0]src[0][1]src[0][2]src[0][3]组0:dst[0][0]dst[0][1]dst[0][2]dst[0][3]
组1:组1:
读src[0][1]写dst[1][0]
组0:src[0][0]src[0][1]src[0][2]src[0][3]组0:src[0][0]src[0][1]src[0][2]src[0][3]
组1:组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]
src[0][2]命中写dst[2][0]
组0:src[0][0]src[0][1]src[0][2]src[0][3]组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]
组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]
读src[0][3]写dst[3][0]
组0:src[0][0]src[0][1]src[0][2]src[0][3]组0:src[0][0]src[0][1]src[0][2]src[0][3]
组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]组1:dst[3][0]dst[3][1]dst[3][2]dst[3][3]
i=1,j=0 => i=1,j=3
读src[1][0]写dst[0][1]
组0:组0:dst[0][0]dst[0][1]dst[0][2]dst[0][3]
组1:src[1][0]src[1][1]src[1][2]src[1][3]组1:src[1][0]src[1][1]src[1][2]src[1][3]
src[1][1]命中写dst[1][1]
组0:dst[0][0]dst[0][1]dst[0][2]dst[0][3]组0:dst[0][0]dst[0][1]dst[0][2]dst[0][3]
组1:src[1][0]src[1][1]src[1][2]src[1][3]组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]
读src[1][2]写dst[2][1]
组0:dst[0][0]dst[0][1]dst[0][2]dst[0][3]组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]
组1:src[1][0]src[1][1]src[1][2]src[1][3]组1:src[1][0]src[1][1]src[1][2]src[1][3]
src[1][3]命中写dst[3][1]
组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]
组1:src[1][0]src[1][1]src[1][2]src[1][3]组1:dst[3][0]dst[3][1]dst[3][2]dst[3][3]
i=2,j=0 => i=2,j=3
读src[2][0]写dst[0][2]
组0:src[2][0]src[2][1]src[2][2]src[2][3]组0:dst[0][0]dst[0][1]dst[0][2]dst[0][3]
组1:dst[3][0]dst[3][1]dst[3][2]dst[3][3]组1:dst[3][0]dst[3][1]dst[3][2]dst[3][3]
读src[2][1]写dst[1][2]
组0:src[2][0]src[2][1]src[2][2]src[2][3]组0:src[2][0]src[2][1]src[2][2]src[2][3]
组1:dst[3][0]dst[3][1]dst[3][2]dst[3][3]组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]
src[2][2]命中读dst[2][2]
组0:src[2][0]src[2][1]src[2][2]src[2][3]组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]
组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]
读src[2][3]读dst[3][2]
组0:src[2][0]src[2][1]src[2][2]src[2][3]组0:src[2][0]src[2][1]src[2][2]src[2][3]
组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]组1:dst[3][0]dst[3][1]dst[3][2]dst[3][3]
i=3,j=0 => i=3,j=3
读src[3][0]读dst[0][3]
组0:src[2][0]src[2][1]src[2][2]src[2][3]组0:src[0][0]src[0][1]src[0][2]src[0][3]
组1:src[3][0]src[3][1]src[3][2]src[3][3]组1:src[3][0]src[3][1]src[3][2]src[3][3]
src[3][1]命中读dst[1][3]
组0:src[0][0]src[0][1]src[0][2]src[0][3]组0:src[0][0]src[0][1]src[0][2]src[0][3]
组1:src[3][0]src[3][1]src[3][2]src[3][3]组1:dst[1][0]dst[1][1]dst[1][2]dst[1][3]
读src[3][2]读dst[2][3]
组0:src[0][0]src[0][1]src[0][2]src[0][3]组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]
组1:src[3][0]src[3][1]src[3][2]src[3][3]组1:src[3][0]src[3][1]src[3][2]src[3][3]
src[3][3]命中读dst[3][3]
组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]组0:dst[2][0]dst[2][1]dst[2][2]dst[2][3]
组1:src[3][0]src[3][1]src[3][2]src[3][3]组1:dst[3][0]dst[3][1]dst[3][2]dst[3][3]

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

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

相关文章

适合加密货币交易者的免费指标

本文介绍了7种用于分析加密货币市场的免费技术指标,帮助交易者和投资者提升交易技巧和盈利能力。原文: Best 7 Free Trading Indicators for Every Cryptocurrency Trader Austin Distel Unsplash 大家好!无论是加密货币市场的交易者还是投资者&#xff…

(Java微服务项目实战)dtpay聚合支付系统对账管理模块系统设计

1 聚合支付系统对账流程 dtpay聚合支付系统对账模块主要涵盖商户侧对账和渠道侧对账、平台侧对账,本文主要分析渠道侧对账。dtpay聚合支付系统通过支付渠道微信、支付宝等产生的支付退款交易数据需要和平台侧产生的数据进行交易数据比对。接下来我们具体分析对账流…

手把手教学部署前端项目到nginx

1.下载nginx 说明:下载11.20.2版本的nginx。 2.配置nginx 说明:找到conf目录下的nginx.conf文件。 2.1代理静态资源 说明:服务器块监听的端口为8089,意味着Nginx将在8089端口上接收和处理HTTP请求。root后面的值相当于html文…

实时交通 | 城市交通态势采集及可视化操作(定时运行)

一、前言 交通态势数据是关于交通状况的一种量化描述,它提供了关于道路网络运行状态的详细信息。交通态势数据指的是根据车流入量和车流出量的定义,衡量整个全局交通区域交通态势的数据。这些数据通常从车辆GPS轨迹数据中提取,包括车辆行驶速…

时代巨兽!深度神经网络如何改变我们的世界?

深度神经网络 1、 简介1.1 定义深度神经网络1.2 深度学习的发展历程1.3 深度神经网络的应用领域 2、深度神经网络的基本原理2.1 神经元层2.1.1 神经元2.1.2 神经元层 2.2 前向传播2.3 反向传播2.4 激活函数2.4.1、作用2.4.2、常见激活函数2.4.3、选择激活函数的考虑 2.5 损失函…

new Set( )的基本使用以及如何去重对象数组

目录 Set 对象方法 Set 对象作用 实现数组的去重 实现字符串的去重 实现并集 交集 差集 实现去重对象数组 相关参考资料 在 ES6 中,引入了一个新的数据结构类型:Set。而 Set 与 Array 的结构是很类似的,且 Set 和 Array 可以相互进…

MySQL学习——创建MySQL Workbench中的Connections

在MySQL Workbench中,Connections(连接)是用户与MySQL数据库进行交互的桥梁。 本文将添加一个新连接,该连接可以是初始连接,也可以是附加连接。在开始之前,必须安装、启动MySQL服务器的实例,并…

算法体系-19 第十九节 暴力递归到动态规划

一 动画规划的概念 优化出现重复解的递归 一旦写出递归来,改动态规划就很快 尝试策略和状态转移方程是一码事 学会尝试是攻克动态规划最本质的能力 如果你发现你有重复调用的过程,动态规划在算过一次之后把答案记下来,下回在越到重复调用过程…

基于springboot实现农产品直卖平台系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现农产品直卖平台系统的设计演示 摘要 计算机网络发展到现在已经好几十年了,在理论上面已经有了很丰富的基础,并且在现实生活中也到处都在使用,可以说,经过几十年的发展,互联网技术已经把地域信息的隔…

【安卓设备】通过adb批量安装apk

1、adb链接设备 H:\tv\apk>adb connect 127.0.0.1:21503 2、批量安装apk 如果地址不一致需要将 H:\tv\apk\ 改成自己的路径地址,同时注意该命令只能安装文件名为英文的不支持中文名称,如果有需要先更改文件名称。 H:\tv\apk>for %f in (H:\tv\a…

IT入门知识博客文章大纲第一部分《IT基础知识》(1/10)

目录 IT入门知识博客文章大纲第一部分《IT基础知识》(1/10) 1.引言 2.第一部分:IT基础知识 2.1 计算机硬件 CPU:计算机的心脏 内存:数据的临时居所 存储设备:数据的长期仓库 输入输出设备&#xff1…

Node.js和npm的安装及配置

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。Node.js 使用了一个事件驱动、非阻塞 I/O 的模型。 npm(node package manager)是一个 Node.js 包管理和分发工具,也是整个 Node.js 社区最流行、支持第三方模块最多的包管理器。使…

【YashanDB知识库】PHP使用ODBC使用数据库绑定参数功能异常

【问题分类】驱动使用 【关键字】ODBC、驱动使用、PHP 【问题描述】 PHP使用PDO_ODBC连接yashan数据库,使用绑定参数获取数据时,客户现场出现报错 本地复现未出现异常报错,但是无法正确获取数据。 【问题原因分析】开启ODBC报错日志后&am…

使用 Python 进行测试(1)测试基础

原文 总结 我们将从unittest开始,尽管它并不那么好用,但它是Python标准库中的测试工具。 使用unittest编写测试看起来像这样: import unittest# 需要测试的代码 def add(a, b):return a b# The tests class TestAddFunction(unittest.Test…

网络安全攻防基础入门笔记--操作系统名词解释文件下载反弹shell防火墙绕过

渗透测试常用专业术语 POC,EXP,Payload,Shellcode POC 全程Proof of Concept,中文"概念验证",常指一段漏洞证明的代码 EXP 全程Exploit ,中文"利用",指利用系统漏洞进行攻击的动作 Payload 中文"有效载荷",指成功Exploit之后,真正在目标系…

车道偏离预警系统技术规范(简化版)

车道偏离预警系统技术规范(简化版) 1 系统概述2 预警区域3 功能条件4 显示需求5 指标需求 1 系统概述 车道偏离预警系统工作在中高速驾驶的情况下,当驾驶员因注意力不集中导致车辆偏离本车道时,系统通过光学和声学信号对驾驶员进行…

MySQL 使用 MyFlash 快速恢复误删除、误修改数据

一、MyFlash MyFlash 是由美团点评公司技术工程部开发并维护的一个开源工具,主要用于MySQL数据库的DML操作的回滚。这个工具通过解析binlog日志,帮助用户高效、方便地进行数据恢复。MyFlash的优势在于它提供了更多的过滤选项,使得回滚操作变…

UC Berkeley简介以及和Stanford的区别与联系

UC Berkeley Source: Google Map 中文版 UC Berkeley,全称University of California, Berkeley,是一所位于美国加利福尼亚州伯克利市的世界知名公立研究型大学。以下是关于UC Berkeley的详细介绍: 学术声誉和排名 学术声誉: U…

欧洲杯德语词汇与表达,柯桥零基础德语培训

欧洲杯 - die Europameisterschaft 足球 - der Fuball 比赛 - das Spiel / die Partie 球员 - der Spieler 教练 - der Trainer 裁判 - der Schiedsrichter 球迷 - die Fans 进球 - das Tor 守门员 - der Torwart / der Torhter 前锋 - der Strmer 中场 - der Mittelf…

2024最值得入手骨传导耳机指南,精选五款分享!

作为前几年在蓝牙耳机市场杀出的一匹黑马,黑科技加持的骨传导耳机受到广大运动爱好者的喜爱。利用骨传导技术,通过头骨、颌骨把声音传到听觉神经引起听觉,同时又不阻碍外接声音的通过,保证了佩戴的舒适性也带来安全使用的最佳体验…