Cache-主存地址映射

这几天十分懒惰,都没有复习计组,现在勉强把第四章看完了,最后一个内容Cache-主存地址映射一开始看不懂,现在终于差不多懂了,再把做题的步骤写下来供下次参考

题目一

假设主存容量为512K,Cache容量为4KB,每个子块为16个字,每个字32位。

(1)Cache地址有多少位?可容纳多少块?

题目没有说是按字访存,所以默认就是按照字节来访存。所以Cache的地址有多少位呢,我们就先看看它有多少个字节。

Cache的容量是4KB,所以一共有4K个字节。所以Cache地址的位数就是log24Klog_2{4K}log2​4K=12。

可以容纳多少块呢?我们看看每块里面包含了什么。

每个字块有16个字,每个字是32位。这里一定要区分字和字节的概念。一个字的基本单位是字节,就像英语中一个音标的基本单位是音节。在这道题中的字是32位,也就是4个字节,又因为子块中有16个字。所以一个字块中有64个字节。

Cache的容量是4K个字节,每个字块有64分个字节,所以一除就得到了可容纳字块的块数:212/26=26=642^{12}/2^{6}=2^{6}=64212/26=26=64块

(2)主存地址有多少位?可容纳多少块?

和(1)类似。答案为19位和8192块。

(3)画出直接映射方式下主存地址字段中各段的位数。

这里有一个预备知识,直接映射方式下主存地址被划分为三段。

分别是主存字块标记,cache字块地址,字块内地址。我们需要求出这三种地址的度

字块内地址怎么求呢?得看你是用字节来访存还是用字来访存。如果是用字节来访存得话,这个字块内地址的长度就得用字节个个数来确定。比如这道题是用字节来访存的,一个字块内一共有64个字节,所以得字块内地址地址得长度就应该是6(log264=6log_{2}{64}=6log2​64=6) 如果是用字来访存得话,就是用字得长度来确定地址得长度。

那这个cache字块地址得长度怎么求呢?其实就是求有多少个字块。因为这种长度其实就是对应了数量。2地址长度=数量2^{地址长度}=数量2地址长度=数量。

那cache有多少个字块呢?之前已经求过了,是64块,所以长度是666。

此外我们还可以这样来求cache字块地址字长,我们知道直接映射方式,主存得一部分和cache是一一对应的,所以cache的地址在主存地址中完全体现的,又在第一题里,cache的地址位数是12位,我们之前还求除了cache字段内地址的长度是6,所以12−6=612-6=612−6=6就得到了cache字块地址的长度。

最后一个主存字块标记的长度就是主存地址总位数减去cache字块地址长度再减去字块内地址长度19−6−6=719-6-6=719−6−6=7。

题目二

假设主存容量为512K*16位,Cache容量位4096*16位,块长位4个16位的字,访存地址为字地址。

(1)在直接映射方式下,设计主存的地址格式

我们观察到这道题和题目一不同,它的访存地址的字地址。

我们来看看具体的差别,当然,对于直接映射的方式,主存的地址还是由三种地址组成,分别是主存字块标记、cache字块地址、字块内地址。

字块内地址我们再上一题是把一个字块内有多少字节求出来然后求得长度,但是现在是按字访存,所以我们得求出来一个字块中有多少个字。

题目中很明显得写出来了,块长为4个16位的字,很明显那一个字块中一共就有4个字,所以长度为2。

然后cache字块地址的长度我们就来看看字块的个数。现在我们知道一个字块中有4个字,所以我们只要求出cache中总共有多少个字。然后利用总字数/每个子块中字的个数就可以求出子块数。

我们发现这道题中的容量都是用乘法来表示的,而不是用B来表示,其实这就是用字地址访存的预兆,这样表示也可方便计算。

比如我们通过cache容量位4096∗164096*164096∗16位就可以得到总字数。因为每个字是16位,所以很显然,总共的字数就是4096个。再除以每个子块中的字数,得到4096/4=10244096/4=10244096/4=1024块,所以cache子块地址的长度是10位。

最后的主存子块标记的长度,我们得求出主存地址得总位数,然后减去cache字块地址长度10和字块内地址长度2。

因为主存容量位512K,所以它得主存地址长度是19位,故主存字块标记得长度是19-10-2=7

(2)再全相联映射方式下,设计主存得地址格式。

全相联映射,主存地址分为两部分,分别是主存字块标记和字块内地址。

由(1)得知,字块内地址得长度是2,又主存地址总长度是19,所以很容易求出主存字块标记为17。

所以全相联映射得地址格式求起来是最简单得。

(3)在二路相联映射方式下,设计主存得地址格式。

组相联映射方式得主存地址也是三部分,分别是主存字块标记、组地址以及字块内地址长度。

我们发现三种映射方式,主存地址中都有主存字块标记字块内地址长度

字块内地址长度和之前保持一致,还是2。

求组地址长度,就得求出一共有多少组。因为是2路相连,就是把把所有得字块进行划分组,使得一组中有两个字块。我们知道字块得数量是1024块,又因为一组中有两块,那么很容易知道一共有512组。那么组地址得长度就是8。

减一下得到主存字块标记长度为19-9-2=8

(3)若主存容量为512K*32位,块长不变,在四路组相联映射方式下, 设计主存的地址格式。

块长不变,所以块内地址长度还是2。

然后改变主存容量可以改写为1024K∗16位1024K*16位1024K∗16位。但是主存容量的改变影响的只是主存地址的总长度,和组地址长度没有关系。

求组地址的长度我们还是得求字块被划分出了多少组,cache中得总块数是不变得,但是从2路相联映射变成了4路相联映射,所以每一组组中从2个字块变成了4个字块,所以最后得组就是除以2,变成了256组,长度为8。这里我们还可以总结出一个结论就是,除以2其实长度就减,之前得组数是512,9位,现在256,8位,下次看到类似题目,直接长度减1即可,不用求出具体得组数。

主存字块标记就是主存地址长度减去组地址长度再减去字块内地址长度。我们要注意主存容量翻倍了,所以总长度+1,变成了20。

所以主存字块标记长度20-8-2=10

总结

  1. 这类题目一定要看清楚是按字访存还是按字节访存(不说就是按字节访存)

  2. 记清楚三种映射方式地址得构成

Cache-主存地址映射相关推荐

  1. Cache – 主存的地址映射及相关计算问题

    Cache – 主存的地址映射及相关计算问题 在开始本篇博文之前,首先来介绍下问题背景,以便于初学者能更好的理解(当然其实我也是个小白),如果大家已经了解问题背景,直接跳过下面两段,不用听我多BB. ...

  2. 计组——彻底搞懂cache主存映射以及cache容量的计算

    cache主存映射以及cache容量 一.三种映射方式 1. 全相联映射 2. 直接映射 3. 组相联映射 二.cache容量计算 1. 先计算cache行标记项位数 2. 再计算cache块位数 3 ...

  3. 整理笔记——cache主存映射方式

    (结合看过的几篇文章整理笔记) 什么是Cache地址映射 Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块为单位的.主存每个块的大小和Cache每个块的大小 ...

  4. Hello 内存 cache 主存 外存

    对存储器的要求是容量大.速度快.成本低,但在一个存储器中要求同时兼顾这三方面是困难的,为了解决这方面的矛盾,目前在计算机系统中,通常采用多级存储器体系结构,即使用高速缓冲存储器(cache).主存和外 ...

  5. 计算机组成原理—Cache主存块中的替换算法

    建议将思维导图保存下来观看,或点击这里在线观看

  6. 计算机的cache主存层次采用,设某计算机的cache采用4路组相联cache.已知cache容量为16KB.主存容量为2MB,每个字块有8个字, - 上学吧找答案...

    从供选择的答案中,选出正确答案填入. 一般CPU在一条指令执行结束前判断是否有中断请求,若无,则执行下条指令;若有,则按如下步骤进行中断处理.步骤a,关中断,然后将断点(PC内容)和程序状态字等现场保 ...

  7. Cache;高速缓冲存储器

    高速缓冲存储器 概述 ​ 在多体并行存储系统中,由于IO设备向主存请求的级别高于CPU访存,这就出现了CPU等待IO设备访存的现象,导致CPU空等一段时间,甚至等待几个周期,从而降低了CPU的工作效率 ...

  8. 计算机本科 很多很多科目的总结

    CN: ip地址如何转换成物理地址? 是通过ARP地址解析协议来完成的.每个主机都有一个ARP高速缓存,里面有一张ARP表,表里存放的是在本局域网上的各个主机和路由器的IP地址到MAC地址的映射. 工 ...

  9. 值得拥有的一份详细的计算机系统硬件结构清单:系统总线、存储器、I/O设备

    一.系统总线 总线概念 起源:将计算机系统的五大部件共同连到一组公共信息传输线上,就是总线.早期使用的是每个设备都有自己的连接线,分散连接,不方便随时增添和减撤设备. 总线新问题:由于总线是各部件共享 ...

  10. 【计算机组成原理】计算机系统硬件结构存储器

    学习目标:重点学习主存储器的分类.工作原理.组成方式以及与其他部件(如CPU)的联系.以及高速缓冲存储器.磁表面存储器等的基本组成和工作原理.建立起如何用不同的存储器组成具有层次结构的存储系统的概念. ...

最新文章

  1. 了解 WPF 中的路由事件和命令
  2. (笔试题)程序运行时间
  3. html5中底部对齐怎么写,如何将页脚(div)与页面底部对齐?
  4. MPU6050代码解析
  5. 水滴石穿C语言之可变参数问题
  6. canopy算法流程_Canopy聚类算法
  7. SAP License:SAP软件功能有哪些?
  8. spring+hibernate+mysql mvc 配置
  9. python调试利器pysnooper
  10. 基于BlueZ 的BLE蓝牙开发
  11. MT7621完美支持32M SPI Flash(W25Q256) 修复 soft reset fail
  12. 2021.3.8-第一次MD作业
  13. mkv视频格式转换mp4格式
  14. Linux关闭/禁用触摸屏,deepin关闭/禁用触摸屏方法
  15. 日文输入常见问题解决
  16. 电脑自带远程桌面和远程控制软件哪个好?
  17. UVA1595(对称轴)
  18. Gitlab-Runner原理与实现
  19. IMPALA跟HIVE实践中的小绝招
  20. SpringBoot三种方式实现定时任务

热门文章

  1. Coinbase入局带火以太坊L2生态,Arbitrum生态大盘点
  2. 8 海康视觉平台VisionMaster 上手系列:典型案例之测量案例
  3. 课堂练习2.1:外部中断
  4. 金赢客政策!详解模式2.0现代金控
  5. C++中虚析构函数的作用及原理
  6. WAIC 2021 | 好未来副总裁吴中勤:多模态机器学习与自动生成技术
  7. 对当今手机圈的一点看法
  8. 虫虫博客2009-如何把搜索引擎排名维护好
  9. 【转载】简评黑客利器——中国菜刀
  10. android mdns开发实例,Android开发_mDNS移植Android系统方案介绍