深入理解计算机系统 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每个参数的定义即可算出:
C | 32 |
M | 128 |
s | 1 |
b | 4 |
t | 2 |
此时脑海已经有了缓存的结构了
从图6-26的定义和我们算出来的参数就得出:
题目说数组src从0开始 因为sizeof(int)==0100 所以每个元素的地址+100就是下个元素的地址啦
加到dst[0][0]你发现刚好就等于二进制1000000 也就是十进制的64.这两个数组是紧挨着的
sizeof(int)==0100 | 虚拟地址(二进制) | CO | CI | CT |
src[0][0] | 0000000 | 0000 | 0 | 00 |
src[0][1] | 0000100 | 0100 | 0 | 00 |
src[0][2] | 0001000 | 1000 | 0 | 00 |
src[0][3] | 0001100 | 1100 | 0 | 00 |
src[1][0] | 0010000 | 0000 | 1 | 00 |
src[1][1] | 0010100 | 0100 | 1 | 00 |
src[1][2] | 0011000 | 1000 | 1 | 00 |
src[1][3] | 0011100 | 1100 | 1 | 00 |
src[2][0] | 0100000 | 0000 | 0 | 01 |
src[2][1] | 0100100 | 0100 | 0 | 01 |
src[2][2] | 0101000 | 1000 | 0 | 01 |
src[2][3] | 0101100 | 1100 | 0 | 01 |
src[3][0] | 0110000 | 0000 | 1 | 01 |
src[3][1] | 0110100 | 0100 | 1 | 01 |
src[3][2] | 0111000 | 1000 | 1 | 01 |
src[3][3] | 0111100 | 1100 | 1 | 01 |
dst[0][0] | 1000000 | 0000 | 0 | 10 |
dst[0][1] | 1000100 | 0100 | 0 | 10 |
dst[0][2] | 1001000 | 1000 | 0 | 10 |
dst[0][3] | 1001100 | 1100 | 0 | 10 |
dst[1][0] | 1010000 | 0000 | 1 | 10 |
dst[1][1] | 1010100 | 0100 | 1 | 10 |
dst[1][2] | 1011000 | 1000 | 1 | 10 |
dst[1][3] | 1011100 | 1100 | 1 | 10 |
dst[2][0] | 1100000 | 0000 | 0 | 11 |
dst[2][1] | 1100100 | 0100 | 0 | 11 |
dst[2][2] | 1101000 | 1000 | 0 | 11 |
dst[2][3] | 1101100 | 1100 | 0 | 11 |
dst[3][0] | 1110000 | 0000 | 1 | 11 |
dst[3][1] | 1110100 | 0100 | 1 | 11 |
dst[3][2] | 1111000 | 1000 | 1 | 11 |
dst[3][3] | 1111100 | 1100 | 1 | 11 |
每次读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] |
相关文章:
深入理解计算机系统 CSAPP 家庭作业6.34
第一步先求(S,E,B,m) 题目说共C32个字节,块大小B为16个字节,那就是分为两组:0,1.然后每组存4个int 每个4字节 CB*E*S .B16 ,直接映射的E就是1,所以S2 m为啥等于7? 通过写出两个数组所有的地址可以得出m7. 得出高速缓存的参数:(S,E,B,m)(2,1,16,7),注意图6-26每个参数的定义…...
[leetcode 141环形链表]双指针解决环形链表
Problem: 141. 环形链表 文章目录 思路Code 思路 首先想到如果链表为空直接返回false 其次想到用双指针,一个一回走一步,另一个一回走两步 如果是环形,总有一个时刻,两指针会指向同一个节点,而且该结点不能为空(空是快指针遍历完单链表了) Code /*** Definition for singly-li…...
【深度学习】Precision、Accuracy的区别,精确率与准确率:深度学习多分类问题中的性能评估详解
在深度学习的多分类问题中,Precision(精确率)和Accuracy(准确率)是两种常用的性能评估指标,它们各自有不同的定义和用途。 Precision(精确率)的中文发音是:pǔ rēi xī…...
DELL服务器插入新磁盘、创建虚拟磁盘、挂载磁盘步骤
文章目录 一、磁盘清理(可选,针对新硬盘是Foreign状态)1、进入VD Mgmt2、清理新硬盘配置 二、创建虚拟磁盘1、进入Device Settings2、创建虚拟磁盘 三、挂载磁盘到系统1、分区磁盘(注意实际磁盘的名称)2、格式化分区3、…...
springboot与flowable(10):网关服务(排他网关)
一、绘制流程图 排他网关用于对流程中的决策建模。当执行到这个网关时,会按照所有出口顺序流定义的顺序对它们进行计算。选择第一个条件为true的顺序流继续流程。例如员工请假时,小于等于3天由组长审批,大于3天由总监审批。流程案例ÿ…...
Web前端网页源代码:深入剖析与实用技巧
Web前端网页源代码:深入剖析与实用技巧 在Web开发的浩瀚领域中,前端网页源代码扮演着至关重要的角色。它不仅是网页的骨架,更是实现各种交互和视觉效果的基石。本文将从四个方面、五个方面、六个方面和七个方面,对Web前端网页源代…...
聊天页面样式
聊天页面样式 代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><link rel"styleshee…...
PHP入门教程3:数组和字符串操作
PHP入门教程3:数组和字符串操作 在前两篇文章中,我们学习了PHP的基础语法、控制结构和函数的使用。本文将重点介绍数组和字符串的高级操作,这些是PHP编程中非常常见且重要的内容。本文将包含以下几个部分: 数组的类型和操作多维…...
mariadb
MariaDB安装配置、使用、授权、增删改查以及数据库备份与恢复 MariaDB安装配置、使用、授权、增删改查以及数据库备份与恢复_mariadb安装及配置教程-CSDN博客mariadb 恢复: ERROR! MySQL server PID file could not be found! 170104 23:04:21 InnoDB: The InnoD…...
C/C++:指针用法详解
C/C:指针 指针概念 指针变量也是一个变量 指针存放的内容是一个地址,该地址指向一块内存空间 指针是一种数据类型 指针变量定义 内存最小单位:BYTE字节(比特) 对于内存,每个BYTE都有一个唯一不同的编号…...
JDK8-17新特性
一、JDK8新特性:Lambda表达式 1.Lambda表达式及其使用举例 Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码(将代码像数据一样进行传递)。使用它可以写出更简洁、更灵活的代码。作为一种更紧凑的代码风格,使Java的语言表达能力…...
文件加载的管理:探索三种方法
目录 1. 空闲表法和空闲链表法 空闲表法 优点 缺点 示例 空闲链表法 优点 缺点 示例 优缺点对比 适用场景 综合示例 2. 位图法 概述 优点 缺点 适用场景 示例 位图法的操作 3. 成组链接法 概述 优点 缺点 适用场景 示例 实现细节 结语 在计算机系统中…...
【机器学习】基于Transformer架构的移动设备图像分类模型MobileViT
1.引言 1.1. MobileViT是什么? MobileViT是一种基于Transformer的轻量级视觉模型,专为移动端设备上的图像分类任务而设计。 背景与目的: MobileViT由Google在2021年提出,旨在解决移动设备上的实时图像分类需求。与传统的卷积神…...
grub引导LinuxMint
注意事项:文件系统必须是FAT32 安装 sudo apt install gparted -y 分区管理软件 使用gparted分区和查看设备路径 sudo apt-get install grub-efi-amd64 #/dev/sdd1 是需要制作分区引导的设备路径 sudo mount /dev/sdd1 /mnt/123 #bios sudo grub-install --targe…...
Hadoop 2.0:主流开源云架构(四)
目录 五、Hadoop 2.0访问接口(一)访问接口综述(二)浏览器接口(三)命令行接口 六、Hadoop 2.0编程接口(一)HDFS编程(二)Yarn编程 五、Hadoop 2.0访问接口 &am…...
PythonSQL应用随笔4——PySpark创建SQL临时表
零、前言 Python中直接跑SQL,可以很好的解决数据导过来导过去的问题,本文方法主要针对大运算量时,如何更好地让Python和SQL打好配合。 工具:Zeppelin 语法:PySpark(Apache Spark的Python API)…...
C# OpenCvSharp 矩阵计算-determinant、trace、eigen、calcCovarMatrix、solve
🚀 在C#中使用OpenCvSharp库进行矩阵操作和图像处理 在C#中使用OpenCvSharp库,可以实现各种矩阵操作和图像处理功能。以下是对所列函数的详细解释和示例,包括运算过程和结果。📊✨ 1. determinant - 计算行列式 🧮 定义: double determinant(InputArray mtx); 参数…...
知识普及:什么是边缘计算(Edge Computing)?
边缘计算是一种分布式计算架构,它将数据处理、存储和服务功能移近数据产生的边缘位置,即接近数据源和用户的位置,而不是依赖中心化的数据中心或云计算平台。边缘计算的核心思想是在靠近终端设备的位置进行数据处理,以降低延迟、减…...
大型企业IT基础架构和应用运维体系
大型企业IT基础架构和应用运维体系 在数字化转型的浪潮中,大型企业面临着日益复杂的IT环境。高效的IT基础架构和应用运维体系,是确保企业业务连续性和竞争力的关键。本文将探讨大型企业如何构建强健的IT基础架构,并建立高效的应用运维体系&a…...
【源码】16国语言交易所源码/币币交易+期权交易+秒合约交易+永续合约+交割合约+新币申购+投资理财/手机端uniapp纯源码+PC纯源码+后端PHP
测试环境:Linux系统CentOS7.6、宝塔面板、Nginx、PHP7.3、MySQL5.6,根目录public,伪静态laravel5,开启ssl证书 语言:16种,看图 这套带前端uniapp纯源码,手机端和pc端都有纯源码,后…...
word空白页删除不了怎么办?
上方菜单栏点击“视图”,下方点击“大纲视图”。找到文档分页符的位置。将光标放在要删除的分节符前,按下键盘上的“Delet”键删除分页符。...
Java web应用性能分析之【prometheus+Grafana监控springboot服务和服务器监控】
Java web应用性能分析之【java进程问题分析概叙】-CSDN博客 Java web应用性能分析之【java进程问题分析工具】-CSDN博客 Java web应用性能分析之【jvisualvm远程连接云服务器】-CSDN博客 Java web应用性能分析之【java进程问题分析定位】-CSDN博客 Java web应用性能分析之【…...
JavaEE——声明式事务管理案例:实现用户登录
一、案例要求 本案例要求在控制台输入用户名密码,如果用户账号密码正确则显示用户所属班级,如果登录失败则显示登录失败。实现用户登录项目运行成功后控制台效果如下所示。 欢迎来到学生管理系统 请输入用户名: zhangsan 请输入zhangsan的密…...
解决用Three.js实现嘴型和语音同步时只能播放部分部位的问题 Three.js同时渲染播放多个组件变形动画的方法
前言 参考这篇文章ThreeJSChatGPT 实现前端3D数字人AI互动,前面搭后端、训练模型组内小伙伴都没有什么问题,到前端的时候,脸部就出问题了。看我是怎么解决的。 好文章啊,可惜百度前几个都找不到,o(╥﹏╥)o 问题情况 …...
阅读笔记:明朝那些事儿太监弄乱的王朝
阅读豆评高分作品《明朝那些事儿太监弄乱的王朝》第三部,截止到今天告一段落了,前两部皇帝,太子相对比较少,了解故事的主线,分支不算多,记忆起来还能应付过来,第三部皇帝,太子更换的…...
算法第六天:力扣第977题有序数组的平方
一、977.有序数组的平方的链接与题目描述 977. 有序数组的平方的链接如下所示:https://leetcode.cn/problems/squares-of-a-sorted-array/description/https://leetcode.cn/problems/squares-of-a-sorted-array/description/ 给你一个按 非递减顺序 排序的整数数组…...
设计模式学习(二)工厂模式——工厂方法模式
设计模式学习(二)工厂模式——工厂方法模式 前言工厂方法模式简介示例优点缺点使用场景 前言 前一篇文章介绍了简单工厂模式,提到了简单工厂模式的缺点(违反开闭原则,扩展困难),本文要介绍的工…...
TCP与UDP案例
udp不会做拆分整合什么的 多大就是多大...
Adaboost集成学习 | Matlab实现基于CNN-LSTM-Adaboost集成学习时间序列预测(股票价格预测)
目录 效果一览基本介绍模型设计程序设计参考资料 效果一览 基本介绍 Adaboost集成学习 | Matlab实现基于CNN-LSTM-Adaboost集成学习时间序列预测(股票价格预测) 模型设计 融合Adaboost的CNN-LSTM模型的时间序列预测,下面是一个基本的框架。 …...
你焦虑了吗
前段时间,无意间在图书馆看到一本书《认知觉醒》,书中提到了焦虑的相关话题,从焦虑的根源,焦虑的形式,如何破解焦虑给了我点启示,分享给一下。 引语: 焦虑肯定是你的老朋友了,它总像…...
新绛做网站/qq空间秒赞秒评网站推广
屏幕使用时间是可以限定在规定时间内,不允许做其他的事情,是为了更好的避免在不注意的时候孩子碰触电脑,导致其他问题出现,也是限制孩子随意玩电脑的一个比较实用的方式,那么问题来了,长时间不用࿰…...
公司做网站设计要注意/南京谷歌推广
上个月把VPS迁到budgetVM,终于不用再受digitalOcean的气了,入手很方便,重点是支持支付宝付款——paypal的界面真是不习惯,开通速度挺快的,1G的内存够我折腾一段时间了~,额外送了俩IP,过段时间再…...
哪里有做兼职的网站/广告公司招聘
介绍 FAB,在Material Design中,一般用来处理界面中最常用,最基础的用户动作。它一般出现在屏幕内容的前面,通常是一个圆形,中间有一个图标。 FAB有三种类型:regular, mini, and extended。不要强行使用FAB…...
做网站同行/企业网站优化外包
编写完自己的程序,如何生成其对应的开发者文档以方便我们日后查看呢?使用 javadoc 开发工具即可生成一个开发者文档。本文将介绍使用 javadoc 如何生成开发者文档以及注意的问题。 1.文档注释 注释分为: 单行注释:// 注释内容多…...
网站建设及经营应解决好的问题/山东企业网站建设
1.Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC) 2.Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离 3.Docker 属于 Linux 容器的一种封装,提供简单易用的容器使用接…...
网站加栏目/商务软文写作范文200字
说到学Java,许多初学者都会有的问题,到底是自学还是报培训班呢? 很多纠结的同学心里都会想,自学省钱,要是我坚持不下来呢?去培训班要是学出来找不到工作呢? 下面我来说说我的看法 自学还是报班…...