Cache综合应用案例 某计算机的主存地址空间大小为256 MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64 B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示: 程序A: int a[256][256]; …… int.

Slides:



Advertisements
Similar presentations

Advertisements

2 和 5 的倍数的特征 运动热身 怎样找一个数的倍数? 从小到大写出 2 的倍数( 10 个): 写出 5 的倍数( 6 个) 2 , 4 , 6 , 8 , 10 , 12 , 14 , 16 , 18 , 20 5 , 10 , 15 , 20 , 25 , 30.
数据结构的引入. 通讯录管理 社团机构管理 校园导航管理 通讯录管理 社团机构管理 校园导航管理.
第四单元 100 以内数的认识
第四单元 100 以内数的认识
练一练: 在数轴上画出表示下列各数的点, 并指出这些点相互间的关系: -6 , 6 , -3 , 3 , -1.5, 1.5.
计算机组成原理试题解析.
報告書名:父母會傷人 班級:二技幼四甲 姓名:吳婉如 學號:1A2I0034 指導老師:高家斌
勝過這世界 我能勝過這世界 因有耶穌在我心 黑暗權勢已破碎 因耶穌基督寶血. 勝過這世界 我能勝過這世界 因有耶穌在我心 黑暗權勢已破碎 因耶穌基督寶血.
媽,我們真的不一樣 青少年期與中年期 老師: 趙品淳老師 組員: 胡珮玟4A1I0006 馬菀謙4A1I0040
校務會議 業 務 報 告 教官室 主任教官: 廖世文 中校 99/06/25.
95課綱 歷史科第二冊(中國史) 第三單元(章) 近世發展(宋、元明、清) 第三主題(節) 士紳社會與庶民文化
理 想 理想是大海的航标, 指引你前进的方向; 理想是闪闪的明灯, 照亮你前进的航程; 理想是生命的动力,帮助你战胜困难;
缓存(续).
班級:二幼三甲 姓名:郭小瑄 、 詹淑評 學號:1A2I0029 、1A2I0025
高中生职业生涯规划 河南省淮滨高级中学 朱凯
指導老師:陳韻如 姓名:吳宜珊 學號:4A0I0911 班級:幼保二乙
层次结构存储系统 主要教学目标 理解CPU执行指令过程中为何要访存 理解访存操作的大致过程及涉及到的部件 了解层次化存储器系统的由来及构成
材料作文审题立意训练.
计算机硕士专业基础—C语言 赵海英
提升课堂质量 助推教师成长 促进教学改革 “一师一优课,一课一名师”活动总结 河南省实验小学.
傳統童玩遊戲創新 組別:第八組 班級:幼保二甲 組員: 4A0I0005柯舒涵 4A0I0011謝孟真
行為改變技術 班級:幼保二甲 組員: 4A10H081 蘇靖婷 4A1I0014 陳佳瑩 4A1I0023 尤秀惠 4A1I0074 邱乃晏 指導老師: 楊淑娥 老師.
喜愛大自然的老師----段秋華.
班級:電資一 組長:程英傑 組員:黃智駿、廖夢溪、李金霖 黃粵丞、蘇長益 指導老師:陳美美 老師
计算机组成原理第四章 知识点一:存储系统层次结构和评价方法 主讲教师:吴非.
本章涉及的主要问题: 汇票中的出票、背书、 票据种类 承兑、保证行为 票据行为 汇票中的付款和追索 票据权利及其内容 有关本票的制度
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
存储系统.
辅导课程六.
元素替换法 ——行列式按行(列)展开(推论)
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
逆向工程-汇编语言
动态规划(Dynamic Programming)
CPU结构和功能.
2.1.2 空间中直线与直线 之间的位置关系.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
数列.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
$9 泛型基础.
顺序表的删除.
线 性 代 数 厦门大学线性代数教学组 2019年4月24日6时8分 / 45.
B2B -- 99/09/01 ~ 99/11/10異動項目 1.公告區 1-1 登入首頁連結到公告區,將原登入資訊加到公告區
第二章 Java基本语法 讲师:复凡.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
实验三 16位算术逻辑运算实验 不带进位控制的算术运算 置AR=1: 设置开关CN 1 不带进位 0 带进位运算;
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 结构体 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
等差与等比综合(3).
College of Computer Science & Technology
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
3.1私有内存的分配.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 结构体.
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
2、5、3的倍数的特征.
图片与视频数字化. 图片与视频数字化 图片分类 根据图片的构成元素来分 位图: 由像素组成,计算机按顺序存储每个像素点 的颜色信息的保存方式获得的图片。 位图放大后会模糊失真,存储空间相对较大。 矢量图: 由图元组成,通过数学公式计算获得的图片。 放大后不会失真,占用空间小。
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
第四节 向量的乘积 一、两向量的数量积 二、两向量的向量积.
数据表示 第 2 讲.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
「同根同心」- 交流計劃 廣州及珠三角經濟發展兩天考察團 2016
插入排序的正确性证明 以及各种改进方法.
§3.1.2 两条直线平行与垂直的判定 l1 // l2 l1 ⊥ l2 k1与k2 满足什么关系?
Presentation transcript:

Cache综合应用案例 某计算机的主存地址空间大小为256 MB,按字节编址。指令Cache和数据Cache分离,均有8个Cache行,每个Cache行大小为64 B,数据Cache采用直接映射方式。现有两个功能相同的程序A和B,其伪代码如下所示: 程序A: int a[256][256]; …… int sum_array1 ( ) { int i, j, sum = 0; for ( i = 0; i < 256; i++) for (j = 0; j < 256; j++) sum += a[i] [j]; return sum; } 程序B: int a[256][256]; …… int sum_array2 ( ) { int i, j, sum = 0; for ( j = 0; j < 256; j++) for ( i = 0; i < 256; i++) sum += a[i] [j]; return sum; }

假定int类型数据用32位补码表示,程序编译时i, j, sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。 (1)若不考虑用于Cache一致性维护和替换算法的控制位,则数据Cache的总容量为多少? (2)数组元素a[0][31]和a[1][1]各自所在的主存块对应的Cache行号分别是多少(Cache行号从0开始)? (3)程序A和B的数据访问命中率各是多少?哪个程序的执行时间更短?

[答案] (1)数据Cache的总容量为:4256位(532字节)。 (2)数组a在主存的存放位置及其与Cache之间的映射为: a[0][31]所在主存块映射到Cache第6行, a[1][1] 所在主存块映射到Cache第5行。 (3)编译时i, j, sum均分配在寄存器中,故数据访问命中率仅考虑数组a的情况。 ①程序A的数据访问命中率为93.75%; ②程序B的数据访问命中率为0。 程序A的执行比程序B快得多。

[解析] (1)主存容量256MB,按字节寻址的地址位数应为28位,数据Cache分为8行(用3位地址),每行64B(用6位地址),因此Cache中每个字块的Tag字段的位数应是28-9=19位,还要使用一个有效位,二者合计为20位;因此数据Cache的总容量应为:64B×8+(20/8×8)B = 532B。 (2)数组a在主存的存放位置及其与Cache之间的映射关系如下图所示。 数组a 按行优先方式存放,其起始地址:a[0][0]=320=140H,int类型数据用32位补码表示,每个数占4个字节单元,数组中,a[i][j]在内存的地址:a[i][j]= a[0][0] +(256i+j)×4 = 140H+(256i+j)×4 则a[0] [31]所在的主存对应的地址:a[0][31]=140H+31×4=1BCH a[1] [1]所在的主存对应的地址: A[1][1]=140H+(256+1)×4= 140H+210+22=140H+400H+4H=544H 主存地址空间大小为256MB=228,每个Cache行大小为64B,8行 数组A[0][31]所在的主存块对应的Cache行号是: ((320+31×4)/ 64) mod 8 = 6。或 1BCH= …000 110 111100 B 数组A[1][1]所在主存块对应的Cache行号: ((320+256×4+ 1×4) / 64) mod 8 = 5。或 544H= …010 101 000100 B 所以 a[0][31]所在主存块映射到Cache第6行,a[1][1]所在主存块映射到Cache第5行。

数组a在主存的存放位置及其与Cache之间的映射关系 主存地址 19位 3位 6位 主存区号 Cache 行号 行内 地址 Tag Cache地址 一个Cache行 有效位 V Tag Cache 行号 行内 地址 1位 19位 3位 6位

(3)编译时i, j, sum均分配在寄存器中,故数据访问命中率仅考虑数组a的情况。 ①这个程序的特点是数组中的每一个int 类型的数据只被使用一次。数组A按行优先存放,因为 64B×8=128×4B,数据Cache正好放下数组半行中的全部数据,即数据的存储顺序与使用次序有更高的吻合度,每个字块存16个int类型的数据,访问每个字块中头一个字不会命中,但接下来的15个字都会命中,访问全部字块都符合这一规律,命中率是15/16,即程序A的数据访问命中率为93.75%; ②而程序B是按照数组的列执行外层循环,在内层循环过程中,将连续访问不同行的同一列的数据,不同行的同一列数据使用的是同一个Cache单元,每次都不会命中,命中率是0,程序执行特别慢。 根据上述计算出的命中率,得出程序B每次取数都要访问主存,所以程序A的执行比程序B快得多。