高速缓冲存储器

|| 什么是 cache ?

cache 是一种小容量高速缓冲存储器,由 SRAM(static random access of memory)组成。直接制作在 CPU 芯片内,速度几乎与 CPU 一样快。程序运行时,CPU 使用的一部分数据/指令会预先拷贝在 cache中,cache 中的内容是主存储器中部分内容的映像。当CPU 需要从内存读写数据或指令时,先检查 cache,若有,就直接从 cache 中读取,而不访问主存。

实现 cache 机制需要解决的问题:

  • 分块?
  • 主存块与 cache 之间如何映射?
  • cache 的替换机制?
  • 写数据如何保持一致?

|| Cache 映射

把主存空间划分成大小相等的 主存块(block)
cache中存放一个主存块的对应单位称为 槽(slot)或行(line)

cache 映射就是把访问的局部主存区域取到 cache 中,cache 行比主存块少,多个主存块映射到一个 cache 行中。

下面介绍三种映射方法:

  • 直接映射(direct):每个主存块映射到cache的固定行




  • 全相联映射:每个主存块可装到cache任意一行中


  • 组相联映射




|| 替换算法

下面介绍几种淘汰策略:

1、先进先出 FIFO

最早装入的最早被替换


2、最近最少用 LRU


3、最不经常用 LFU

替换 cache 中引用次数最少的块。LFU 也用与每个行相关的计数器来实现。

4、随机替换算法

随机选择一行淘汰,与使用情况无关。

例题:


|| 写策略

1、全写法 (write through)

对于读操作来说我们都已经知道 CPU 读操作的流程,但是对于写操作来说,由于Cache中的内容只是主存内容的副本,当对 cache 中内容更新的时候,主存并没有更新,为了保持主存与Cache内容的一直,我们就有了对于写操作的策略:

写操作时,若写命中,则同时写 cache 和主存;若写不命中,则有以下两种处理方式:

(1)写分配法 (write allocate)。先在主存块中更新相应存储单元,然后分配一个 cache 行,将更新后的主存块装入到分配的 cache 行中。这种方式可以充分利用空间局部性,但每次写不命中都要从主存读一个块到 cache 中,增加了读主存块的开销。

(2)非写分配法(not write allocate)。仅更新主存单元而不装入到 cache 中,可以减少读入主存块的时间,但没有很好地利用空间局部性。

当然,为了减少写主存的开销,通常在 cache 和主存之间加一个写缓冲(write buffer)。在 CPU写 cache 的同时,也将信息写入写缓冲,然后由存储控制器将写缓冲中的内容写入主存。写缓冲是一个 FIFO 队列,如果写动作太频繁可能导致写缓冲区溢出。

2、回写法 (write back)

若写命中,则信息只被写入 cache 而不被写入主存;若写不命中,则在 cache 中分配一行,将主存块调入该 cache 行中并更新相应单元的内容。

在 CPU 执行写操作时,回写法不会主动更新主存单元,只有当 cache 行中的主存块被替换时,才将该块内容一次性写回主存。这种方式减少了写主存的次数,但是存在不一致的隐患,如果一直不被替换出去,那它的内容与主存块中的内容就不一致。而且这种方法还需要给每一块配置一位“脏位”,如果脏位为1则表明发生过写操作,那么替换出去就要更新主存块。

|| 多级 cache

|| 综合题目


如有错误,还望指正 ~ O(∩_∩)O~~

计算机组成原理——高速缓冲存储器相关推荐

  1. 计算机组成原理高速缓冲存储器,计算机组成原理 存储器层次结构 高速缓冲存储器...

    作者:因情语写 链接:https://proprogrammar.com/article/265 声明:请尊重原作者的劳动,如需转载请注明出处 一.概述 1.问题的提出 避免CPU"空等&q ...

  2. 计算机组成原理—高速缓冲存储器

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

  3. 计算机组成原理-高速缓冲存储器

    目录

  4. 计算机组成原理---高速缓冲存储器

    对于理解高速存储器首先要知道局部性原理,局部性原理分为时间局部性和空间局部性.分别是在未来要使用的信息可能是现在正在使用的信息,另一个是最近的未来要用的信息很可能是正在使用的信息在存储空间上是邻近的. ...

  5. 计算机组成原理 高速缓冲存储器与辅助存储器

    1.1 概述 一.产生原因 为避免CPU空等的现象 CPU与主存(DRAM)的速度差异剪刀差越来越大 依据程序局部性原理 二.Cache的工作原理 1.主存和缓存的编址 C<<M 若把主存 ...

  6. 漫谈计算机组成原理(五)高速缓冲存储器

    本文讲什么? 老样子,在正式开始介绍"高速缓冲存储器"之前,我们先来了解一下其相关的信息. 我相信,上面这张图你一定已经非常熟悉了,没错,这就是在本章绪论说的"存储器的层 ...

  7. 计算机组成原理之高速缓冲存储器(Cache)

    概述 问题的提出 由上一篇计算机组成原理之主存储器中的存储器分层结构图可知,CPU(寄存器)和主存(DRAM)之间存在速度的差异,由于主存的速度很慢,在CPU访存时,就会出现CPU的"空等& ...

  8. 计算机组成原理学习笔记第4章 4.11——高速缓冲存储器例题选讲

    有诗云:苔花如米小,也学牡丹开.--袁枚 本篇笔记整理:Code_流苏(CSDN) Last(在此处点击使用,直达文末) Frist (在文末点击使用,返回文章首部) 目录 1️⃣例1 ①题目描述 ② ...

  9. 4 计算机组成原理第三章 存储系统 高速缓冲存储器 虚拟存储器

    文章目录 1 局部性原理性能分析 2 Cache工作原理(简易版) 3 地址映射 4 替换算法 4.1 替换算法(十进制)举例 4.2 Cache工作原理(加强版) 4.2.1写策略-命中 4.2.2 ...

最新文章

  1. mysql 表空间收缩_mysql表碎片清理和表空间收缩
  2. 为什么parsefloat加出来还是字符串_为什么水质检测达标家里的自来水管流出来的水却还是脏的?...
  3. 基于MIPS架构的BackTrace实现
  4. 【PC工具】更新win10关闭更新工具及注意事项
  5. 【学习笔记】吴恩达机器学习 WEEK1
  6. H5+JS+相对单位rem实现第三方支付页(输入金额+模拟数字键盘+自适应布局+大写金额)
  7. net 操作 EXCEL
  8. Asp.net-MyFirstMVCProject详细解释
  9. 【Docker】使用介绍
  10. 毕设项目 - 基于SSM的旅游资源网站(含源码+论文)
  11. 素数筛法详解-列出1-n中的素数
  12. python list 迭代_python迭代、列表生成式
  13. (2015年度)黑龙江测绘地理信息局青年学术和技术带头人考评与增选公示
  14. Could not find goal ‘assembly‘ in plugin org.apache.maven.plugins:maven-assembly-plugin: among avai
  15. 开氏温度与摄氏度换算_为什么体温表要甩?探秘温度计、湿度计的玄机!
  16. 【9-前端项目的搭建部署、Node安装、VSCode安装】
  17. 不支持IE8及以下版本
  18. C语言中fprintf函数的使用介绍
  19. matlab 类写法,matlab中函数表达式的写法
  20. OpenSSL自建CA和签发二级CA及颁发SSL证书

热门文章

  1. MYSQL 查询重复数据
  2. Linux对N卡的兼容性
  3. 用XSSFWorkbook导出合并单元格样式的excel表格
  4. android 中间凹背景_Android开发仿百度地图的凹陷BottomNavigationView
  5. wordpress主题后台管理菜单制作教程
  6. php 爬课程表信息,Ruby爬取教务系统生成课程表
  7. python1~10阶乘_python阶乘怎么写
  8. overflow问题
  9. python如何设计爬虫界面软件_Python+PyQt5设计B站视频数据爬虫小程序
  10. AutoCAD .Net 用代码创建菜单