文章目录

  • 1 局部性原理性能分析
  • 2 Cache工作原理(简易版)
  • 3 地址映射
  • 4 替换算法
    • 4.1 替换算法(十进制)举例
    • 4.2 Cache工作原理(加强版)
      • 4.2.1写策略-命中
      • 4.2.2 写策略-未命中
    • 4.3 替换算法(二进制)例题
    • 4.4 Cache工作原理(高配版)
    • 4.5 Cache例题小结
  • 5 虚拟存储器
    • 5.1 页式虚拟存储器
    • 5.2 段式虚拟存储器
    • 5.3 段页式虚拟存储器
    • 5.4 快表TLB
    • 5.5 页式虚拟存储器-例题

1 局部性原理性能分析

  • 空间局部性:在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
  • 时间局部性:在最近的未来要用到的信息,很可能是现在正在使用的信息

高速缓冲技术就是利用程序访问的局部性原理,把程序中正在使用的部分存放在一个高速的,容量较小的Cache中,使CPU访存操作大多数针对Cache进行,从而大大提高程序的执行速度

2 Cache工作原理(简易版)

Cache工作原理类似操作系统分页存储快表机制

CPU与Cache之间的数据交换以字为单位,而Cache与主存之间的数据交换则以Cache块为单位

  1. 命中率H:CPU欲访问的信息已在Cache中的比率
    设一个程序执行期间,Cache的总命中次数为Nc,访问主存的总次Nm
    则H=Nc/Nc+Nm
  2. 缺失率M=1-H
  3. 设tc为命中时的Cache访问时间,tm为未命中时的访问时间
    Cache—主存系统的平均访问时间Ta为Ta=Htc+(1-H)tm

假设Cache的速度是主存的5倍,且Cache的命中率为95%,则采用Cache后,存储器性能提高多少(设Cache和主存同时被访问,若Cache命中则中断访问主存)?

若采用先访问Cache再访问主存的方式:

不命中时,访问cache耗时为t,发现不命中后再访问主存耗时为5t,总耗时为6t
故系统的平均访问时间为 T2 = 0.95×t+0.05×6t = 1.25t
故性能为原来的 5t / 1.25t = 4倍,即提高了3倍。

Cache三大核心问题:

  1. 主存中的块放到Cache中哪个位置?
    (1)空位随意放:全相联映射
    (2)对号入座:直接映射
    (3)按号分组,组内随意放:组相联映射
  1. 对于(1),Cache满了如何处理?对于(2)(3),对应位置被占用如何处理?
    随机(RAND)算法、先进先出(FIFO)算法、近期最少使用(LRU)算法、最不经常使用(LFU)算法。
  1. 修改Cache中的内容后,如何保持主存中相应内容的一致性?

命中
全写法(write-through
写回法(write-back

不命中
写分配法(write-allocate
非写分配法(not-write-allocate

3 地址映射


Cache高三位确定行号,低6位确定行内地址,对应这行中的哪个单元
主存:

低的6位表示每一行中的具体哪个位置,对应这行的哪个单元
中的3位对应Cache的行号
高的19位就是主存比Cache多出来的地址位数

  1. 全相联映射

主存中内容可以往Cache中随意放,但需要设置一个有效位,如果是0表示空闲,如果是1表示已经占满;
根据有效位可以判断是否放了东西,根据有效位后的标号对应主存的地址(主存的地址高位作为一个标记,存放在Cache相应的单元)

Cache需要保存地址高位,绿+蓝都要存

  1. 直接映射

由于主存中多块可以放在Cache中同一位置,为了区分具体来自主存中哪一位置,把主存中的块存过去后,立刻把主存地址高位存到对应的Cache行,作为标记项

Cache需要保存地址高位,一一对应的无需保存,存绿

  1. 组相联映射:按号分组,组内任意放(综合了上面两者优势)


高的两位做组号,0 1对应0组(高两位00) ,2 3对应1组(高两位01)…

  1. 三种方式地址映射

有效位告诉机器此块数据要使用,不能被其他数据覆盖(Cache中只要放了数据就置有效位1)
标记位告诉机器,Cache中数据来自主存具体哪一位置

4 替换算法

  1. 随机算法(RAND):随机地确定替换的Cache块。它的实现比较简单,但没有依据程序访问的局部性原理,故可能命中率较低。
  2. 先进先出算法(FIFO):选择最早调入的行进行替换。它比较容易实现,但也没有依据程序访问的局部性原理,可能会把一些需要经常使用的程序块(如循环程序)也作为最早进入Cache的块替换掉。
  3. 近期最少使用算法(LRU):依据程序访问的局部性原理选择近期内长久未访问过的存储行作为替换的行,平均命中率要比FIFO要高,是堆栈类算法。
    LRU算法对每行设置一个计数器,Cache每命中一次,命中行计数器清o,而其他各行计数器均加1,需要替换时比较各特定行的计数值,将计数值最大的行换出。
  4. 最不经常使用算法(LFU):将一段时间内被访问次数最少的存储行换出。每行也设置一个计数器,新行建立后从0开始计数,每访问一次,被访问的行计数器加1,需要替换时比较各特定行的计数值,将计数值最小的行换出。
4.1 替换算法(十进制)举例


说明:
直接映射:

(1)主存块号/总块数 余数→Cache块号
(2)商→对应的标记位

  • 访问4,6号,由于Cache为空,未命中,标记置为0,再访问12,对应Cache中4号单元,虽然有效位1,但是标记位0与12除8商1不一样,则发生替换,12替换4,并把标记位改1,未命中
  • 访问4未命中,4号单元标记位改0,访问8…
    每次访问一个单元,用商更新一下被访问的标记位


FIFO

每新进来一个元素,先往下放,如果之前有元素,就把之前有的元素往上抬,则下面的元素始终是新放入的,往上抬时,自然而然替换了
访问第四个4时,因为里面有4和12,命中,访问接下来的8把最上面12替换出去…


LRU:

把即将要替换的放上面,把最近使用过的放下面
访问12时,12根4相比,是刚刚使用的,把12放下面,接下来访问4,12是最近不太用的,往上抬,且4命中;访问8时,8往下放,替换12…


4.2 Cache工作原理(加强版)

4.2.1写策略-命中
  1. 全写法(写直通法,write-through):当CPU对Cache写命中时,必须把数据同时写入Cache和主存,一般使用写缓冲(write buffer)
  2. 写回法write-back):当CPU对Cache写命中时,只修改Cache的内容,而不立即写入主存,只有当此块被换出时才写回主存
4.2.2 写策略-未命中
  1. 写分配法write-allocate):把主存中的块调入Cache,在Cache中修改。
    搭配写回法使用。
  2. 非写分配法not-write-allocate):只写入主存,不调入Cache。
    搭配全写法使用。

4.3 替换算法(二进制)例题

设主存地址空间大小为1KB,按字节编址,Cache由8个块构成,每个Cache块大小为16B,CPU依次访问以下地址:0001001110、1001110010、0001001111、0011000010、0101001000、1011110010、1111010000、0011001001(十进制为78、626、79、194、328、754、976、201),求:

(1)假设地址映射方式为全相联映射,在采用FIF0、LRU、LFU替换算法时,分别求Cache命中次数。

首先分析地址结构:

访问0001001110时,有效位由0改为1,标记位就是地址前六位000100
访问1001110010时,有效位由0改为1,标记位就是地址前六位100111
访问0001001111时,标记位地址前六位000100,已在Cache中,命中,或者用十进制角度,64~79为一块,访问78,再访问79,命中(调入的一块同标记位的地址,而不是一个地址)

全相联模式下,可能不会发生替换,Cache是一点一点用完

(2)假设地址映射方式为直接映射,求Cache命中次数。

首先分析地址结构:

访问0001001110时,由100可知放在Cache中4号块,把标记置为000,有效位1
访问1001110010时,由111可知放在Cache中7号块,把标记置为100,有效位1
访问0001001111时,由100可知放在Cache中4号块,此时有效位1,Cache标记位000与当前地址标记位000同,命中
访问0011000010时,由100可知放在Cache中4号块,此时有效位1,Cache标记位001与当前地址标记位000不同,未命中,替换,把001替换000

直接映射:对号入座→有冲突直接替换,不涉及替换策略

首先分析地址结构:

  • 访问0001001110时,由组号00可知放在Cache中0号块,把标记置为0001,有效位1,在组内采用全相联映射,放0号组的1号块和2号块都可以,假设放在1号块
  • 访问1001110010时,由11可知放在Cache中3号组,把标记置为1001,有效位1,
  • 访问0001001111时,由00可知放在Cache中0号组,此时有效位1,Cache标记位0001与当前地址标记位0001同,命中
  • 访问0011000010时,由00可知放在Cache中0号组,此时有效位1,Cache标记位0011与当前地址标记位0001不同,未命中,把它放在0组中的2号块(1号块已放了)
  • 访问0101001000时,由00可知放在Cache中0号组,第0组已满,但当前标记与Cache两个标记都不同,需要替换,

若采用FIFO(替换最早调入的):最早调入的块标记是0001,故替换之。
若采用LRU(替换最近未使用的):刚用过0011,故替换0001
LFU(比较次数,替换使用次数最少的)

(4)假设其它配置同(3),采用写回法和直写法时,Cache的总容量分别为多少?


标记项:有效位1位固定,标记位由地址映射方式决定,维护位由替换算法决定,替换位由替换策略决定

4.4 Cache工作原理(高配版)

4.5 Cache例题小结

5 虚拟存储器

  • 虚拟存储器是一个逻辑模型(关注功能,不关注实现)
  • 功能:用户给出一个地址,叫做虚地址或逻辑地址,虚拟存储器要给出该地址对应的数据。
  • 实现:由辅助硬件将虚地址映射到主存当中的某个单元,主存单元地址称为实地址物理地址
5.1 页式虚拟存储器

虚拟空间与主存空间都被划分成同样大小的页,主存的页称为实页,虚存的页称为虚页。

虚地址到物理地址映射过程:

5.2 段式虚拟存储器
  • 段式虚拟存储器中的段是按程序的逻辑结构划分的,各个段的长度因程序而异。
  • 虚拟地址分为两部分:段号和段内地址。
  • 段表:每一行记录了与某个段对应的段号、装入位、段起点和段长等信息。
    由于段的长度可变,所以段表中要给出各段的起始地址与段的长度。

地址映射过程:

5.3 段页式虚拟存储器
  • 把程序按逻辑结构分段,每段再划分为固定大小的页,主存空间也划分为大小相等的页,程序对主存的调入、调出仍以页为基本传送单位。
  • 每个程序对应一个段表,每段对应一个页表。
  • 虚拟地址:段号+段内页号+页内地址
5.4 快表TLB
  • 页表、段表存放在主存中,收到虚拟地址后要先访问主存,查询页表、段表,进行虚实地址转换。
  • 放在主存中的页表称为慢表(Page)。
  • 提高变换速度→用高速缓冲存储器存放常用的页表项→快表(TLB

5.5 页式虚拟存储器-例题

地址变换第一步,在于分析地址结构
标记对应虚页号,页框对应实页号
有效位0,快表未命中,接下来查询页表,若命中,页表完成虚实转换,若未命中,主存中调出来

实页号与虚页号相互替换,页内地址保持不变

4 计算机组成原理第三章 存储系统 高速缓冲存储器 虚拟存储器相关推荐

  1. (计算机组成原理)第三章存储系统-第六节4:Cache的写策略(写回法和全写法,写分配法和非写分配法)

    文章目录 一:写命中 (1)写回法(write-back) (2)全写法(write-through) 二:写不命中 (1)写分配法(write-allocate) (2)非写分配法(not-writ ...

  2. 计算机组成原理三种译码方式,计算机组成原理第三章存储系统

    第三章存储系统 3.1存储器的构成 二.六管静态MOS存储单元线路 存储机理:利用双稳态触发器保存信息 T1通.T2止,存0 T1止.T2通.存1 分析:1保持信息:不打扰,不送地址选通信号:2读出: ...

  3. 计算机组成原理 第三章 存储系统

    第三章属于考察重点,涉及到存储器的扩展分类与cache的连接等知识点,不仅复杂而且很容易出错,属于重点内容. 3.1 存储器概述 存储器种类非常多,可以根据不同的角度进行分类. 按照在计算机中的作用分 ...

  4. 计算机组成原理 第三章存储系统 知识点

    第三章. 存储器层次机构 基础概念 存储元件:用一个具有两种稳定状态,并且在一定条件下状态可相互转换的物理器件来表示二进制数码0和1,这种器件称为存储元件. 存储单元:由若干个存储元组成一个存储单元. ...

  5. 【408笔记】计算机组成原理 第三章 存储系统

    文章目录 3.1 存储器概述 3.1.1 存储器分类 按照在计算机中的作用(层次)分类 按照存储介质分类 按照存取方式分类 按照信息的可保存性分类 3.1.2 存储器性能指标 3.1.3 多级层次的存 ...

  6. 计算机组成原理——第三章存储系统(上)

    提示:吾与春风皆过客,君携秋水揽星河 文章目录 前言 3.1 存储系统基本概念 3.2.1 主存储器的基本组成 3.2.2 SRAM DRAM\ 3.2.3 只读存储器ROM 3.3.1 主存储器与C ...

  7. 计算机组成原理-第三章-存储系统

    文章目录 2022大纲 一.基本概念 二.存储器的分类 1.按存储介质分类 2.按照存取方式分类 3.按在计算机中的作用分类 总结 三.存储器的层次结构(存储模型) 四.主存储器 主存的基本组成 存储 ...

  8. (计算机组成原理)第三章存储系统-第七节2:页式/段式虚拟存储器

    文章目录 一:页式虚拟存储器 二:段式虚拟存储器 三:段页式虚拟存储器 四:虚拟存储器与Cache比较 (1)相同 (2)不同 一:页式虚拟存储器 我们知道,运行一个程序时,需要将该程序调入主存,然后 ...

  9. (计算机组成原理)第三章存储系统-第三节1:主存储器和CPU的连接

    专栏目录首页:[专栏必读]王道考研408计算机组成原理万字笔记.题目题型总结.注意事项.目录导航和思维导图 文章目录 本节思维导图 一:单块存储芯片与CPU的连接 二:多块存储芯片与CPU的连接 (1 ...

最新文章

  1. 极品:蓝丽网 - Vml图像画板.2003 web上的PhotoShop
  2. Linux内存、Swap、Cache、Buffer详细解析
  3. Javascript模板引擎handlebars使用实例及技巧
  4. matlab光盘映像文件可以删除吗_DVD-Cloner 2020 for mac(DVD光盘刻录工具) 7.00.715
  5. Katalon Recorder录制脚本
  6. 无序链表Python实现
  7. 我家两个孩子周六都开家长会,我和老公两个人都要上班,怎么办?
  8. 谷歌大脑组合模型霸榜 SuperGLUE
  9. 一次完整的react hooks实践
  10. sed,awk,grep教程
  11. sql server安全管理-新建登录名-sql和混合身份验证模式#windows域和用户名的查找#不是有效的 Windows NT 名称。请给出完整名称: <域\用户名>。
  12. python列表创建操作_python列表操作
  13. 凸优化理论基础1--仿射集
  14. 支部谈心谈话工作怎么开展?_工作场所“激情”的谈话引发了读书俱乐部期间的热烈聊天
  15. 教你使用IL2CppDumper从Unity il2cpp的二进制文件中获取类型、方法、字段等(反编译)
  16. 必须学会的几道家常菜
  17. 【交通标志识别】BP神经网络交通标志识别【含GUI Matlab源码 718期】
  18. 中国石油大学《工程概预算与招投标》第一阶段在线作业
  19. DirectX11--实现一个3D魔方(3)
  20. 国际版抖音Tik Tok怎么引流变现,卖家所不知道的那些事

热门文章

  1. 秀操作 | 函数宏的三种封装方式
  2. 一文带你了解V4L2
  3. qtscrcpy自定义按键_按键映射说明.md
  4. centos7 开机后进去了命令行_Linux系统管理:开机启动流程(二)
  5. OpenCV_02 图像的基本操作:图像IO+绘制图形+像素点+属性+图像通道+色彩空间的改变
  6. Express接口案例 使用jsonwebtoken
  7. 01.神经网络和深度学习 W4.深层神经网络
  8. LeetCode 1503. 所有蚂蚁掉下来前的最后一刻(脑筋急转弯)
  9. LeetCode 212. 单词搜索 II(Trie树+DFS)
  10. 前端DEMO:网络上流行的抖音罗盘