3.6 Cache存储器

3.6.1 Cache基本原理

使用Cache的原因
CPU速度越来越快,主存储器与CPU的速度差距越来越大,影响CPU的工作效率。
Cache的作用
在CPU和主存之间加一块高速的SRAM(Cache);
主存中将要被访问的数据提前送到Cache中;
CPU访存时,先访问Cache,若没有再进行数据调度。
使用Cache的依据 程序访问的局部性原理

结构模块化
CPU访问Cache或主存时,以字为单位;
Cache和主存交换信息时,以块为单位,一次读入一块或多块内容;
Cache的每行都设置有标记,CPU访问程序或数据时,先访问标记 。
相邻层之间的数据传送单位
CPU  高速缓存:字 (假设1个字包含4个字节)
高速缓存  主存储器:块 (每块32个字节(8个字))
主存  磁盘:页面 (每页4K字节,包含128块)

存储体
基本单位为字,若干个字构成一个数据块;
地址映射变换机构
用于将主存地址变换为Cache地址,以利用CPU发送的主存地址访问Cache;
替换机构
若要更新Cache中数据时使用的机制;
相联存储器
Cache的块表,快速指示所要访问的信息是否在Cache中;
读写控制


命中率是指CPU要访问的信息在Cache中的比率;

失效率=1- 命中率
影响命中率的主要因素
Cache 容量:过小时,局部信息装不完,命中率低。 过大时,对提高效率不明显,且成本高。
Cache中块的大小:一般用一个主存周期所能调出的单元数(字或字节)作为一个块大小。

主存系统的平均访问时间


CPU执行一段程序时,Cache完成存取的次数为1900次,主存完成存取的次数为100次,已知Cache存取周期为50ns,主存存取周期为250ns,求Cache/主存系统的效率和平均访问时间。

命中率
h=Nc/(Nc+Nm)=1900/(1900+100)=0.95
主存与Cache的速度倍率
r=tm/tc=250ns/50ns=5
访问效率
e= 1 /(r+(1-r)h ) = =83.3%

平均访问时间
ta=tc/e=50ns/0.833=60ns

3.6.2 主存与Cache的地址映射

信息从主存→Cache中,如何定位?
Cache的容量小于主存,需要采用某种算法确定主存和Cache中块的对应关系;
地址映射
主存中数据块调入Cache中时,主存数据块与Cache行之间的映射关系;
地址变换
CPU访存时,将主存地址按映射函数关系变换成Cache地址的过程;
地址映射的方式
全相联映射、直接映射、组相联映射;

例:某机主存容量为1MB,划分为2048块,每块512B;cache容量为8KB,划分为16块;每块512B。
主存地址共20位,块内地址9位,主存块号11位。

由于cache的块数远小于主存的块数,因此一个cache不能唯一地、永久地只对应一个存储块,在cache中,每一块外加有一个标记,指明它是主存的哪一块的副本(拷贝)。

全相联映射(Associative Mapping)

映射关系
主存中的任意字块可调进Cache的任一行中;
地址映射
主存中数据块调入Cache时,可以调入Cache的任一空行;
调入的同时,将主存标记和Cache的行号同时写入块表;
地址变换
CPU访存时,发出主存地址;
将主存标记作为关键字,送入块表中检索每一个单元;
命中时,读出对应单元中的Cache行号;
使用Cache行号和主存地址中的块内地址访问Cache;

全相联映射的主存地址格式


全相联映射Cache的特点
优点
灵活性好(最理想)
Cache中只要有空行,就可以调入所需要的主存数据块;
缺点
成本高
块表单元字长为m+c位,需要较大容量的Cache块表;
速度太慢
访问Cache时,需将所有标记比较一遍,才能最后判出所需主存中的字块是否在Cache中;
一般较少使用。

【例1】设主存容量1MB,Cache容量16KB,块的大小为512B,采用全相联映射方式。

写出Cache的地址格式。
写出主存的地址格式。
块表的容量多大?
画出地址映射及变换示意图。
主存地址为CDE8FH的单元,在Cache中的什么位置?

写出Cache的地址格式
Cache地址格式
Cache的容量16KB
块(行)的大小为512B
行地址为14-9=5位
写出主存的地址格式
主存的地址格式为
主存容量1MB
块表的容量多大?
块表的大小应为2c×(m + c) 位,即25×16位;
画出地址映射及变换示意图。
主存地址为CDE8FH的单元,在Cache中的什么位置?
主存地址为CDE8FH的单元可映射到Cache中的任何一个字块位置;
CDE8FH= 1100 1101 1110 1000 1111 B
其块/行内地址为:010001111。

直接映射(Direct Mapping)

映射关系
主存中的每一块数据只能调入Cache的特定行中;
直接映射函数为: i = j mod 2c
地址映射
主存中数据块调入Cache时,只能调入Cache的特定行;
同时,将主存标记写入块表中与Cache行地址相同的单元;
地址变换
CPU访存时,发出主存地址;
从主存地址中截取出Cache行号,访问块表的对应单元;
若该单元中数据与主存标记相同,则命中,否则未命中;
命中时,使用Cache行号和块内地址(即主存地址中除主存标记位之外的其余位)访问Cache;


Cache标记由11位减少为7位,利用主存 地址按字段直接判断,就可知命中与否。
优点:硬件实现简单,成本低。
缺点:主存多个块对应唯一的cache块,即使cache别的地址空着也不能占用。cache空间无法充分利用,降低了命中率。

特点
一个主存块只能调入Cache的一个特定行中 。
优点
该映射函数实现简单,查找速度快;
主存地址的中间c位即为Cache的行地址;
在块表对应单元中,使用高t位地址(主存标记)进行比较,决定是否命中;
缺点
灵活性差;
主存的2t个字块只能对应唯一的Cache字块,即使Cache中别的字块空着也不能占用。

组相联映射(Set-associative Mapping)

组相联映射是直接映射和全相联映射的一种折中方案。
映射关系
将Cache中的行等分为若干组,主存中的每一块只能映射到Cache的特定组中,但是可调入到该组的任一行中;
组间为直接映射,组内为全相联映射。
设Cache共u组,每组r行,则映射函数如下
组号 q= j mod u
当Cache的一组包含r行时,通常称为r路组相联映射。

当Cache为2路组相联映射,共4组时,映射函数为q=j mod 4;

特点:
灵活性:比直接映射灵活(主存可映射到组内任一块);
快速性:比全相联比较次数少,只需组内全部比较;
由于比较次数少,电路也较易于实现。

地址映射
主存中数据块调入Cache时,只能调入Cache的特定组;
在该组内,可选择任一行调入数据;
调入的同时,将主存标记和Cache的组内行号写入块表;
地址变换
CPU访存时,发出主存地址;
从主存地址中截取出Cache组号,找到块表的对应组;
在组内,使用主存标记进行检索;
命中时,使用Cache组号、Cache组内行号和块内地址访问Cache;


cache 读
CPU发出有效的主存地址;
查找相联存储器,判断所要访问的信息是否在Cache中;
若命中,经地址变换机构,变换为相应的Cache地址;
CPU直接读取Cache获取数据;
若未命中,则CPU访问主存,并判断Cache是否已满;
若Cache未满,将该数据所在块从主存中调入Cache;
若Cache已满,使用某种替换机制,使用当前数据块替换掉Cache中的某些块。
cache 写
CPU发出有效的主存地址;
查找相联存储器,判断所要访问的信息是否在Cache中;
若命中,经地址变换机构,变换为相应的Cache地址;
使用某种写策略将数据写入Cache或主存。
若未命中,则使CPU直接写主存数据;
同时根据写策略,决定是否将该块内容调入Cache

Cache的替换策略 ——最不经常使用(LFU)算法

替换原则
将一段时间内被访问次数最少的那行数据替换出去;
使用方法
每行设置一个计数器,从0开始计数;
每访问一次, 被访行的计数器增1;
当需要替换时,将计数值最小的行换出,同时将这些行的计数器都清零。
特点
这种算法将计数周期限定在对这些特定行两次替换之间的间隔时间内,不能严格反映近期访问情况。

Cache的替换策略 ——近期最少使用(LRU)算法

替换原则
将近期内长久未被访问过的行替换出去。
使用方法
每行也设置一个计数器;
每访问一次,被访行的计数器清零,其它各行计数值加1;
当需要替换时,将计数值最大的行换出。
特点
这种算法保护了刚调入到Cache中的新数据行,使Cache的使用率较高。

Cache的替换策略 ——随机替换算法

替换原则
从特定的行位置中随机地选取一行换出。
特点
在硬件上容易实现,且速度也比前两种策略快。
但降低了命中率和Cache工作效率。

Cache的写策略 ——写回式

写入策略
只修改Cache的内容,而不立即写入主存;
只有当此行被换出时才写回主存。
优点
减少了访问主存的次数;
缺点
存在Cache与主存不一致性的隐患。
实现该方法时,Cache行必须配置一个修改位,以反映此行是否被CPU修改过。

Cache的写策略 ——全写式

这种策略又称写透式
写入策略
Cache与主存同时发生写修改,因而较好地维护了Cache与主存的内容的一致性。
Cache中无需设置修改位以及相应的判断逻辑。  
缺点是降低了Cache的功效。
每次同时写入主存和Cache,使写入速度变低。

Cache的写策略 ——写一次法

写入策略
基于写回法,并结合全写法的写策略;
写命中与写未命中的处理方法与写回法基本相同,只是第一次写命中时要同时写入主存。
该写入策略适用于包含多个Cache的系统中;
第一次Cache写命中时,将数据写入主存和一个Cache中;
使系统中的其它Cache可以及时更新或废止该块内容,从而维护系统中该块数据的一致性。

计算机组成原理 学习总结3.6  Cache存储器相关推荐

  1. 计算机组成原理学习笔记—— 高速缓冲存储器Cache

    高速缓冲存储器 问题的提出 CPU空等问题 在多体并行存储系统中,由于I/0设备向主存请求的级别高于CPU访存,这就出现了CPU等待I/0设备访存的现象,致使CPU空等一段时间,甚至可能等待几个主存周 ...

  2. 计算机组成原理学习笔记一

    计算机组成原理学习笔记一 计算机发展历程 一.计算机硬件发展 (1)计算机的四代变化 (2)计算机元件更新换代 二.计算机软件发展 三.计算机的分类 计算机系统层次结构 一.计算机系统的组成 二.计算 ...

  3. 计算机组成原理学习笔记(上)

    计算机系统概论 计算机发展历程 原始计算工具 中国人的智慧之光 机械式计算机 西方人的智慧 机电式计算机 电子计算机 1,最古老的计算工具:算筹 2,冈特计算尺 3,达芬奇机械式计算机 4,1642年 ...

  4. 评价微型计算机总线的性能指标,计算机组成原理学习笔记(3):总线

    文章目录 课程笔记导览 附录:英语解释 第三章 总线 3.1 总线的基本概念 使用总线的原因: 总线的定义 总线上信息的传送 总线结构举例 单总线结构 面向CPU的双总线结构 以存储器为中心的双总线结 ...

  5. 怎么学计算机组成原理,计算机组成原理学习(一)

    前言 本次计算机组成原理学习主要分为两块 1.计算机组成原理学习(一) 主要对计算计结构和微处理器(CPU)功能原理进行学习 2.计算机组成原理学习(二) 主要对CPU,操作系统,汇编.编程语言之间的 ...

  6. 408计算机组成原理学习:计算机的基础

    408计算机组成原理学习:计算机的基础 计算机系统 = 硬件 + 软件 硬件:计算机的实体,如主机.外设等 软件:由具有各类特殊功能的程序组成 计算机性能的好坏取决于"软".&qu ...

  7. 计算机组成原理学习笔记第1章 1.3——实验一 计算机性能测试

    计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 本篇笔记整理:Code_流苏(CSDN) 目录 计算机组成原理学习笔记第1章 1.3--实验一 计算机性能测试 0️⃣思维导图(自制) ...

  8. 计算机组成原理学习1

    计算机组成原理学习 题目 1.CPU执行这个程序时,获得的平均CPI = ______ 2.CPU执行这个程序时,其获得的IPS指标= _______ MIPS 3.CPU执行这个程序时,消耗的总时间 ...

  9. 计算机原理学习指导第3版,计算机组成原理学习指导与习题解析(第3版)(21世纪大学本科计算机...

    摘要: 这本<计算机组成原理学习指导与习题解析(第3版)>由蒋本珊编著,是与"十二五"普通高等教育本科国家级规划教材<计算机组成原理(第3版)>完全配套的学 ...

最新文章

  1. CORS-跨域资源共享 解决跨域问题
  2. 赠票 | 第三届语言与智能高峰论坛
  3. 微软研究院开源编程语言Verona,借鉴Rust、Cyclone等特性
  4. ecshop商品详细描述调用商品相册代码
  5. HTML在计算机中指什么,计算机正在执行的指令存放在什么中
  6. 虚拟桌面最佳组合---Windows 7
  7. VTK:可视化之ColorAnActor
  8. ant安装(for linux)
  9. 买卖股票的最好时机二Python解法
  10. rw1601可以用C语言写程序吗,用8051+1601LCD设计的整型计算器讲解.doc
  11. php大量数据库抽象,PHP系列(十二)数据库抽象层pdo
  12. LeetCode刷题——343. 整数拆分
  13. HackerRank难题记录
  14. Postman安装教程及汉化
  15. 大学生应该懂得。。。葡萄酒知识
  16. vander范德蒙德行列式
  17. java实现wife链接硬件_【技术分享】在Android 910上面实现WIFI功能
  18. vue使用vue-video-player播放视频及遇到的问题
  19. SQL优化(面试题)
  20. Springboot+Netty实现基于天翼物联网平台CTWing(AIOT)终端TCP协议(透传模式)-设备终端(南向设备)

热门文章

  1. php压缩图片大小尺寸
  2. BIEE问题及解决方法、常用说明
  3. 托育服务存在明显短板,3岁以下婴幼儿照护难题怎么解
  4. 标记偏见_如何(巧妙地)扭曲视觉效果以支持您的偏见叙事
  5. [Shader] Shader Cookbook 使用表面着色器[2]
  6. 利用anacoda下载决策树画图库graphviz
  7. Cisco PBTS和Route MAP技术,以及H3C的Route Policy
  8. 基于C++MFC的网络安全扫描器的设计与实现
  9. List Dork Google
  10. 【初等数论四大定理之三】欧拉定理,费马小定理,威尔逊定理