当前位置: 首页 > news >正文

深入理解计算机系统 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.lryc.cn/news/373738.html

相关文章:

  • [leetcode 141环形链表]双指针解决环形链表
  • 【深度学习】Precision、Accuracy的区别,精确率与准确率:深度学习多分类问题中的性能评估详解
  • DELL服务器插入新磁盘、创建虚拟磁盘、挂载磁盘步骤
  • springboot与flowable(10):网关服务(排他网关)
  • Web前端网页源代码:深入剖析与实用技巧
  • 聊天页面样式
  • PHP入门教程3:数组和字符串操作
  • mariadb
  • C/C++:指针用法详解
  • JDK8-17新特性
  • 文件加载的管理:探索三种方法
  • 【机器学习】基于Transformer架构的移动设备图像分类模型MobileViT
  • grub引导LinuxMint
  • Hadoop 2.0:主流开源云架构(四)
  • PythonSQL应用随笔4——PySpark创建SQL临时表
  • C# OpenCvSharp 矩阵计算-determinant、trace、eigen、calcCovarMatrix、solve
  • 知识普及:什么是边缘计算(Edge Computing)?
  • 大型企业IT基础架构和应用运维体系
  • 【源码】16国语言交易所源码/币币交易+期权交易+秒合约交易+永续合约+交割合约+新币申购+投资理财/手机端uniapp纯源码+PC纯源码+后端PHP
  • word空白页删除不了怎么办?
  • Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】
  • JavaEE——声明式事务管理案例:实现用户登录
  • 解决用Three.js实现嘴型和语音同步时只能播放部分部位的问题 Three.js同时渲染播放多个组件变形动画的方法
  • 阅读笔记:明朝那些事儿太监弄乱的王朝
  • 算法第六天:力扣第977题有序数组的平方
  • 设计模式学习(二)工厂模式——工厂方法模式
  • TCP与UDP案例
  • Adaboost集成学习 | Matlab实现基于CNN-LSTM-Adaboost集成学习时间序列预测(股票价格预测)
  • 你焦虑了吗
  • 一键分析Bulk转录组数据