块替换策略是高速缓存设计的一个重要方面。当不命中时,必须将相应的主存块取入高速缓存,相应地,要把其中已有的某一块替换出去。若高速缓存内有无效块,则替换是不成问题的。对于直接映射高速缓存,只有1个块可供替换。对于相联映射型的高速缓存,主要有随机和最近最少使用两种替换策略。最近最少使用策略利用了时间局部性,可能实现较高的命中率,但当需要追踪的块较多时,实现起来比较复杂。

中文名

块替换策略

外文名

block replacement strategy

学    科

计算机组成原理目    的

获得最高命中率

策    略

随机和最近最少使用

有关术语

高速缓存

块替换策略简介

编辑

语音

在高速缓冲存储器(Cache)中,块是指Cache存储空间分为多个大小相同的存储空间,是基本的 Cache 存储单位。一个 Cache 块能够存储若干字节的数据。与主存空间中页相对应。Cache工作原理要求它尽量保存最新数据,当从主存向Cache传送一个新块,而Cache中可用位置已被占满时,就会产生Cache替换的问题。块替换策略是指将Cache中最少使用的块替换出去,使得访问的页不在Cache中在的次数为最少,即主要目标获得最高的命中率。块替换策略与块映射策略密切相关。

块替换策略替换算法

编辑

语音

最不经常使用算法

LFU(Least Frequently Used,最不经常使用)算法将一段时间内被访问次数最少的那个块替换出去。每块设置一个计数器,从0开始计数,每访问一次,被访块的计数器就增1。当需要替换时,将计数值最小的块换出,同时将所有块的计数器都清零。这种算法将计数周期限定在对这些特定块两次替换之间的间隔时间内,不能严格反映近期访问情况,新调入的块很容易被替换出去。

最近最少使用算法

最近最少使用(Least Recently Used, LRU )替换策略能够依据Cache块的使用情况,选择离最近时间点最近而最少被使用的Cache 块进行替换这种策略较好地体现程序局部性而使得系统 Cache 丢失率较小。这种方法实现方法众多有计数器法、寄存器栈法及硬件逻辑比较对法,其中计数器法实现 LRU 替换策略最为简单,因此这种替换策略得到了广泛的使用,现代多核处理器依然沿用了这种替换策略[1]

。这种算法保护了刚调入Cache的新数据块,具有较高的命中率。LRU算法不能肯定调出去的块近期不会再被使用,所以这种替换算法不能算作最合理、最优秀的算法。但是研究表明,采用这种算法可使Cache的命中率达到90%左右。

随机替换算法

最简单的替换算法是随机替换。随机替换算法完全不管Cache的情况,简单地根据一个随机数选择一块替换出去。随机替换算法在硬件上容易实现,且速度也比前两种算法快。缺点则是降低了命中率和Cache工作效率。Cache命中率除了和替换算法有关外,还与Cache的容量及块的大小有关。

先进先出算法

先进先出策略(FIFO):最先替换进入 Cache 的块将最先被替换出。这就导致被多次命中的块很可能是最先调入 Cache 的块,而这个块将被优先替换,不符合局部性规律。

块替换策略块映射策略

编辑

语音

Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块为单位的。为了把信息放到Cache中,必须应用某种函数把主存地址定位到Cache中,这称为地址映射,或块映射。

当需要将来自内存的新数据块装入高速缓存时,由块映射策略决定它的存放位置。根据块在高速缓存内的位置,块映射策略可分成如3类:

直接映射,每个块在高速缓存中只能有1个位置。该位置通常由求模运算得到,即:高速缓存内块号=块地址(mod 高速缓存中块数)。

全相联映射,块可以放在高速缓存中的任意位置。

组相联映射,高速缓存分为若干个组,块先映射至组,在组中的位置任意。块向组的映射通常也采用取模运算。块地址中对应于组号的若干位称为索引。若组中有n 块,则称高速缓存是n路组相联的。

高速缓存对每个块都设立1 个标志域,其中包括块地址和该地址是否有效的信息。为了实现快速访问,在相联映射型高速缓存中,总是同时查找所有的标志。

块替换策略高速缓冲存储器

编辑

语音

高速缓冲存储器(Cache)位于中央处理器与主存储器之间,对程序员透明的一种高速小容量存储器。高速缓冲存储器简称高速缓存。它是存储器层次结构的最顶层,其下层是容量相对较大和访问时间较长的主存储器。在配备有高速缓存的计算机中,每次访问存储器都先访问高速缓存,若欲访问的数据在高速缓存中,则访问到此为止;否则,再访问主存储器,并把有关数据取入高速缓存。这样,如果大部分针对高速缓存的访问都能成功,则在保持主存储器容量不变的前提下,访存速度可接近高速缓存的存取速度。高速缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。高速缓存的工作机制体现了局部性原则。所谓局部性,是指程访问代码和数据的不均匀性,它包括:时间局部性:如果某位置已被访问,则该位置很可能在短时间内还要再被访问;空间局部性:如果某位置已被访问,则其邻近位置很可能还要被访问。因此, 只要程序有较好的访存局部性,高速缓存就能发挥作用。

块替换策略命中率

编辑

语音

高速缓存的组织及对高速缓存的访问都是以行或块为单位的,通常1行包括1个或多个字。行也是高速缓存与主存储器交换数据的最小单位。访存时,若能在高速缓存中找到所需数据,称为高速缓存命中,否则就是不命中。命中次数与访存总次数的比率称为命中率,而不命中次数与访存总次数的比率称为不命中率。显然,不命中率 = 1 - 命中率。命中时的访问时间 (包括确定是否命中的时间)称为命中时间,不命中时,将主存块替换入高速缓存并提供给中央处理器所需的时间称为不命中损耗。不命中时的访存时间是命中时间加上不命中损耗。命中率是高速缓存性能的一个重要指标,它不仅依赖于硬件实现 ,而且与应用程序有关。但是,命中率是与硬件速度无关的参数,从而不能单独用于高速缓存的性能评估。较好的标准 是平均访存时间:

平均访存时间 = 命中时间 不命中损耗 不命中率

平均访存时间的单位可以是绝对的(如25 ns),也可以是相对的(如2个时钟周期)。尽管把块变大有助于提高命中率,但同时也增加了不命中时的传送时间,所以块的大小应有利于缩小平均访存时间。

计算机组成原理中的替换策略,块替换策略相关推荐

  1. 计算机组成原理中各个缩写的含义

    计算机组成原理中各个缩写的含义 缩写 概述 CPU 中央处理器 ALU 逻辑运算器 AU 运算器 CU 控制器 ACC 运算器的累加器 MAR 存储器地址寄存器,反应存储单元个数 MDR 存储器数据寄 ...

  2. 计算机组成原理中英对照篇,信息科学系课程介绍(中英对照).doc

    文档介绍: 信息科学系课程介绍(中英对照)序号:1课程编码:14001010课程名称:计算机基础学分:1周学时:2开课系部:信息科学系预修课程:无修读对象:信息管理与信息系统专业本科生课程简介:主要介 ...

  3. 计算机组成原理中的直接映像,计算机组成原理cache存储器的直接映像与变换.doc...

    文档介绍: Cache存储器的直接映像与变换 1.直接映像的映像规则 在Cache存储器的直接映像中,Cache的块内地址就是主存地址格式中的块内地址,Cache的块号等于主存块号除以Cache的总块 ...

  4. 计算机组成原理中计算机主要包括哪几部分,计算机组成原理本科生期末试卷(五)部分答案详解...

    <计算机组成原理本科生期末试卷(五)部分答案详解>由会员分享,可在线阅读,更多相关<计算机组成原理本科生期末试卷(五)部分答案详解(3页珍藏版)>请在人人文库网上搜索. 1.计 ...

  5. 计算机组成原理中阶符是什么,计算机组成原理习手册.doc

    计算机组成原理习手册 计算机组成原理复习资料(自行整理版) 第一章: 涵盖分值大概5分左右. 老师上课讲到的冯·诺依曼型计算机的组成结构是本次考试的考点,有可能考选择题,也有可能考简答题. 以及微机的 ...

  6. 计算机组成原理中主机概念,计算机组成原理概念术语

    计算机组成原理概念术语 第一章 1. 主机:主机中包含了除输入输出设备以外的所有电路部件,是一个能够独立工作的系统. 2. CPU:中央处理器,是计算机的核心部件,同运算器和控制器构成. 3. 运算器 ...

  7. 计算机组成原理中译码器,计算机组成原理课程设计-指令系统及七段译码器设计.doc...

    东北大学秦皇岛分校 计算机组成原理课程设计 专业名称班级学号学生姓名指导教师设计时间 课程设计任务书 专业:: 学生姓名: 设计题目:指令系统及七段译码器设计 一.设计实验条件 硬件:PC机 ::VH ...

  8. 计算机组成原理中的MPY指令,8位算术逻辑运算

    8位算术逻辑运算Tag内容描述: 1.计算机组成原理实验,1/25,一.实验目的,三.实验原理,四.实验连线,五.实验步骤,实验一8位算术逻辑运算实验,二.实验设备,2/25,一.实验目的,掌握算术逻 ...

  9. 计算机组成原理中的非门表示,计算机组成原理4-数字逻辑2.ppt

    计算机组成原理4-数字逻辑2.ppt (78页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 23.9 积分 逻 辑 门 电 路 门电路是用以实现逻辑关系的 ...

最新文章

  1. php的cookie不存在会是什么值,PHP之你不得不知道的COOKIE含义及使用方式
  2. 程序员的自由,不只在那一寸领地!
  3. 静态文件 服务器,静态文件服务器
  4. 将截断字符串或二进制数据
  5. HBase的基础知识
  6. php年月转换为年月日,php 将秒数转换为年、月、日、小时等时间格式
  7. Ubuntu 下修改 Could not reliably determine the serve
  8. 抽象代数学习笔记三《群:对称性变换与对称性群》
  9. java实现word(docx)在线编辑(word转html,html转word)——代码实现
  10. ios 代理和委托的区别
  11. Arduino_Core_STM32---pinMode()实现分析
  12. JavaCV开发详解之1:调用本机摄像头并预览摄像头图像画面视频(建议使用javaCV最新版本)
  13. 在安卓上部署服务器 - 解决内网穿透
  14. html中的matrix属性,transform,matrix属性讲解
  15. 人和人之间的距离有多远
  16. mysql=mariadb
  17. SQL server查询出只选修两门课程的学生学号和姓名
  18. Flink process 和 apply 简单案例
  19. Android上又双叒冒出新的恶意软件:ROOT近800万台设备、狂发广告骗推广费
  20. [从头读历史] 第268节 诗经 鄘风

热门文章

  1. 戴森创始人自述造车兵败过程,马斯克:你知道吗?传统车企都不靠卖车赚钱...
  2. 国内WEB漏洞扫描功能测试对比
  3. 史上最全大厂校招礼盒汇总
  4. 低功耗设计-isolation cell
  5. jQuery---绑定事件
  6. Jquery的on方法绑定事件
  7. 高中生使用计算机情况调查,关于家用电脑对高中生学习影响的调查
  8. AI绘图—对中文拟合度很高,值得一试
  9. Linux内核配置——Kconfig文件
  10. oracle 无效的列类型 1111,MYBATIS 无效的列类型: 1111