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

假定int类型数据用32位补码表示,程序编译时 i , j , s u m i, j, sum i,j,sum均分配在寄存器中,数组a按行优先方式存放,其首地址为320(十进制数)。请回答下列问题,要求说明理由或给出计算过程。

(1)若不考虑用于 C a c h e Cache Cache一致性维护和替换算法的控制位,则数据 C a c h e Cache Cache的总容量为多少?

(2)数组元素 a [ 0 ] [ 31 ] a[0][31] a[0][31]和 a [ 1 ] [ 1 ] a[1][1] a[1][1]各自所在的主存块对应的 C a c h e Cache Cache行号分别是多少( C a c h e Cache Cache行号从 0 0 0开始)?

(3)程序 A 和 B A和B A和B的数据访问命中率各是多少?哪个程序的执行时间更短?


分析:

  • 主存地址空间大小为 256 M B 256 MB 256MB

    • 主存总容量为 2 28 B 2^{28}B 228B
  • 按字节编址
    • 单位为字节
  • 指令 C a c h e Cache Cache和数据 C a c h e 分 Cache分 Cache分离
    • 这句话意味着在计算 C a c h e Cache Cache容量时,不单单是计算 C a c h e Cache Cache数据容量那么简单了,还需加上指令所占的容量。
  • 8 8 8个 C a c h e Cache Cache行,每个 C a c h e Cache Cache行大小为 64 B 64 B 64B
    • 计算出 C a c h e Cache Cache的总容量为 8 ∗ 64 = 2 9 B 8*64=2^9B 8∗64=29B,同时也告诉了我们主存一个块有 64 B ( 2 6 ) 64B(2^6) 64B(26)大小,一共有 2 28 / 2 6 = 2 22 2^{28}/2^{6} = 2^{22} 228/26=222 个块。
  • 数据 C a c h e Cache Cache采用直接映射方式
    • 直接映射意味着 C a c h e Cache Cache的指令包含着标记位+有效位

整理得:

  1. 对于主存

    1. 主存总容量为 2 28 B 2^{28}B 228B
    2. 一共有 2 22 2^{22} 222 个块,一个块有 2 6 2^6 26大小
  2. 对于 C a c h e Cache Cache
    1. C a c h e Cache Cache的总容量为 2 9 B 2^9B 29B
    2. 一共有 2 3 2^3 23 个块,一个块有 2 6 2^6 26大小
  3. C a c h e 总容量 = C a c h e 数据容量 + C a c h e 指令容量 Cache总容量 = Cache数据容量+Cache指令容量 Cache总容量=Cache数据容量+Cache指令容量

对于第一题:数据 C a c h e Cache Cache的总容量为 C a c h e 数据容量 + C a c h e 指令容量 Cache数据容量+Cache指令容量 Cache数据容量+Cache指令容量

$Cache数据容量: $ 64 ∗ 8 64 * 8 64∗8

$Cache指令容量(标记位+有效位): $ 有效位始终为 1 位 有效位始终为1位 有效位始终为1位,下面来求标记位:

首先明确标记位来自于哪里,标记位是为了找到主存中某一块内容在 C a c h e Cache Cache中的映射位置,所以它来源于主存块地址

主存地址

  • 主存块号(直观看出主存有多少块)

    • 标记(就是通过它来与 C a c h e Cache Cache建立联系)
    • 行号(直观看出 C a c h e Cache Cache有多少行(块))
  • 块内地址

因此可以明确的是:对于本题,主存地址: 28 = 22 ( 19 + 3 ) + 6 28 = 22 (19 + 3) + 6 28=22(19+3)+6,因此得出结论 C a c h e 指令容量的标记位为 19 Cache指令容量的标记位为19 Cache指令容量的标记位为19,最终得出本题答案 512 + 19 + 1 = 532 512 + 19 + 1 = 532 512+19+1=532

简介写法:


对于第二题:一个 i n t int int型数据 4 4 4个字节,而主存( C a c h e Cache Cache)一个块 64 64 64个字节,故而得出一个块可以存放 16 16 16个 i n t int int型数据

对于 a [ 0 ] [ 31 ] a[0][31] a[0][31], 32 m o d 16 = = 0 32 mod 16 == 0 32mod16==0不难知道该元素的主存地址为 320 + 31 ∗ 4 = 444 = 320 + 31 * 4 = 444= 320+31∗4=444= 0000....0001 0000....0001 0000....0001 1011 1011 1011 1100 1100 1100

  • 六位块内地址为 111100 111100 111100
  • 22位主存块号 0000....0110 0000....0110 0000....0110

观察22位储存块号的后四位得到该元素处于 C a c h e Cache Cache的第六块

简介写法:

  • 算出改元素的主存地址
  • 直接将其与 C a c h e Cache Cache块大小取余得到结果

444 444 444 d i v div div 64 64 64 = 6 6 6


对于第三题:

  • 当程序A存入一个元素时,由于 C a c h e Cache Cache 会一下子将给元素的附近的(包括该元素)共16个元素一起存入,再次访问该元素的下一个元素时,由于元素按行再按列存入,元素的存储顺序与使用顺序高度吻合,除了访问的第一个元素不会命中,剩下15个均会命中,因此命中率位 16 / 15 16/15 16/15 = 93.75 93.75% 93.75。
  • 第二个程序按列执行循环,在执行内层循环时,将连续访问不同行的同一列数据,不同行的同一列数据使用的是同一 C a c h e Cache Cache单元,每次都不会命中,命中率为0。
  • 显然A快于B

计算机组成原理题目透析(1)相关推荐

  1. 计算机组成原理题目透析(2)

    例题: 设阶码3位,尾数6位,按浮点运算方法,完成下列取值的[x+y].[x-y]运算: x=2−011×0.100101x = 2^{-011}×0.100101x=2−011×0.100101 y ...

  2. 【渝粤题库】国家开放大学2021春1254计算机组成原理题目

    试卷代号:1254 2021年春季学期期末统一考试 计算机组成原理 试题 2021年7月 一.选择题(每小题3分,共36分) 1.下列数中最大的数是( ). A. (101001)2 B. (52) ...

  3. 【专栏必读】(计算机组成原理题目题型总结)计理期末考试408统考算机组成原必考题型总结

    注意:横线上方是期末考试最爱考的几类题型,横线下方是408统考会涉及的考点 文章目录 第一章:计算机组成原理概述 第二章:运算器原理 第三章:存储器原理 第四章:指令系统 第五章:中央处理器 第六章: ...

  4. 计算机组成模块信息交互探讨,计算机组成原理教学探析

    1明确课程目的.方法 在讲授计算机组成原理这门课程开始之前,要向学生明白本课程的目的,并教会学生学习这门课程的方法与技巧.同时要让学生了解计算机系统的层次化结构概念.掌握计算机硬件系统各个组成部分的工 ...

  5. (计算机组成原理题目题型总结)第一章:计算机系统概述

    文章目录 一:基本概念的考察 (1)选择 (2)大题 二:计算机性能指标 (1)选择 (2)大题 一:基本概念的考察 (1)选择 题型:选择.填空居多 知识点:计算机的发展.分类:计算机硬件组成:计算 ...

  6. (计算机组成原理题目题型总结)第七、八章:I/O设备与I/O控制方式

    文章目录 一:外围设备 二:I/O控制方式 白中英课本习题 (1)第7章:外存与I/O设备 (2)第8章:I/O控制方式 一:外围设备 此部分内容较为简单,不作整理 二:I/O控制方式 程序查询方式. ...

  7. (计算机组成原理题目题型总结)第六章:总线

    文章目录 一:总线概述与相关计算 (1)选择题 (2)大题 二:总线仲裁 (1)选择题 (2)大题 三:总线操作和定时 (1)选择题 (2)大题 白中英课本题目 一:总线概述与相关计算 (1)选择题 ...

  8. (计算机组成原理题目题型总结)第四章:指令系统

    文章目录 一:指令概述.指令格式.扩展操作码 (1)选择题 (2)大题 二:指令寻址方式 (1)选择题 (2)大题 三:CISC和RISC 白中英课后习题 一:指令概述.指令格式.扩展操作码 (1)选 ...

  9. 计算机基础之透析我家的组装机

    2015年寒假回来的时候到邯郸买了台组装电脑,当时几乎是什么都不懂,什么CPU啦,什么驱动啦等等都只是听说过而已,具体的还真是不了解.对电脑的硬件只是一无所知啊,就让那个组装的人按价格配置,要硬盘和主 ...

最新文章

  1. Redis集群管理方式
  2. ORA-00907: 缺失右括号问题整理解决
  3. python中的format什么意思中文-python里format什么意思
  4. cmd oracle 连接实例_基于winserver的Oracle数据库跨版本下的rman备份恢复
  5. 会员制的cd出租销售java_模式|酒店改造养老会员制盈利模式及交易结构深度探讨...
  6. a类论文 计算机视觉,【科研新进展】(21)我校教师首次在计算机视觉领域A类会议上发表论文...
  7. 沣东新城镐京遗址规划_沣东新城房价为啥这么高?
  8. 计算矩阵的逆和行列式的值(高斯消元+LU分解)
  9. lock和synchronized的同步区别与选择
  10. python之模块calendar(汇集了日历相关的操作)
  11. oracle分区索引及循环插入
  12. 为什么有些人退休后,一下子衰老了很多?
  13. Android Activity概述
  14. 难于传播的正能量,来点干货
  15. php 7中文手册pdf版,手册的格式 - PHP 7 中文文档
  16. android studio编程时出现的错误:Error:Execution failed for task ':app:processDebugResources'.
  17. 3397. 【GDOI2014模拟】雨天的尾巴
  18. This beta version of Typora is expired, please download and install a newer version
  19. 两张图看清英伟达RTX 20系列显卡的新变化
  20. 离散数学常用符号TeX输入

热门文章

  1. QT(飞机大战)课设
  2. android studio微博对话框,小白的Android studio新浪微博一键分享记录
  3. 2014年系统架构师考试题详解
  4. arduino 温度调节器_感应电压、电流和温度 - 嘿!用Arduino造一个太阳能充电控制器吧...
  5. [Python基础 ] Day_06_作业参考答案
  6. 瑞萨单片机CAN口复用唤醒
  7. c语言问答题斐讯通信,C总结-part_1 - LinearLaw的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. snprintf 函数用法详解
  9. HP-UX crontab
  10. 【Doxygen】Doxygen使用教程(个人总结)