计算机组成原理(笔记7高速缓冲存储器Cache,计算机组成原理的重难点全、直接、组相连)

为什么要设立高速缓冲存储器 (Cache)?

Cache是介于CPU和主存之间的小容量存储器,存取速度比主存快。它能高速地向CPU提供指令和数据,加快程序的执行速度。它是为了解决CPU和主存之间速度不匹配而采用的一项重要技术。

不过计算机本身是不知道自己是这样的执行,它只知道用

Cache工作原理

在计算机中,我们访问的速度快有个重要的原因,就是引入了cache

他提前,把主存的内容下载好,然后让我们快速访问,通常cache会比主存小很多
Cache与主存之间的数据交换是以块为单位

所为块,我们把主存和cache里面,我们分成一个一个的小房间,也就是块,这样你需要什么我们可以直接找到房间号,去拿出我们要的东西

Cache的基本概念

  • 命中 hit: CPU访问数据在cache中(上层存储器)
  • 缺失 miss: CPU访问数据不在cache中
  • 块 block: cache与主存交换最小单位
    块大小多少合适??? 实现预读
  • 行/槽 Line/Slot:标记、标志位、数据块容器
    有效位、查找标记、脏标志位、置换标志、数据块副本
  • Cold Cache、Warm Cache

Cache的性能参数

如果考到以下的例题那就是送分题
Cache的命中率

增加cache的目的,就是在性能上使主存的平均访问时间尽可能接近Cache的访问时间。因此,Cache的命中率应接近于1。由于程序访问的局部性,这是可能的。在一个程序执行期间,设Nc表示Cache完成存取的总次数,Nm表示主存完成存取的总次数,h定义为命中率(Hit Ratio),则有

平均访问时间(等效访问时间)ta

若tc表示命中时的Cache访问时间,tm表示未命中时的主存访问时间,1-h表示为缺失率(Miss Ratio),则Cache/主存系统的平均访问时间ta为:

访问效率

设立Cache/主存系统的目标,是以较小的硬件代价,使系统的平均访问时间ta越接近tc越好。设r=tm/tc表示主存慢于Cache的倍数,e表示访问效率,则有:

由上式可以看出,为提高访问效率,命中率h越接近1越好,r值以5---10为宜,不宜太大。

命中率h与程序的行为、Cache的容量、组织方式、块的大小有关。

Cache读、写流程与关键技术

  • CPU给出主存地址(块地址,块内地址)
  • 主存块地址为关键字进行查找
  • 如相符表示副本在cache中,命中,访问cache
  • 否则数据缺失,访问主存
    将数据所在块副本调入cache(块交换---局部性)
    载入副本过程可能引起替换
    更新查找表,记录当前数据块地址
    cache缺失时系统等待数据调入
  • CPU给出主存地址
  • 主存块地址为关键字进行查找
    相符则表示命中,数据副本在cache中
    缺失根据写分配策略决定是否将该主存地址对应数据块调入
  • 写入数据到cache
  • 根据写策略决定是否写入主存

CPU cache基本组织方式

  • CPU cache由较快的SRAM构成
  • cache与主存均分为固定大小的数据块,以块为单位交换数据
  • 相联存储器存放查找表
    表项:(有效位,调入cache的主存块地址,cache块地址)
    容量 = cache块数 * 表项大小
  • CPU给出的块地址与查找表中某单元相同且有效位为1表示命中
    全相联:硬件多路并发比较可以提升查找速度

下图是块与块内地址

重点

全相联



查找表和缓存副本一体(CPU片内缓存)
存放cache行
有效位,主存块地址,数据块副本,标志位(Dirty bit),置换标记
存储容量= cache行大小 × 行数

查找表和缓存副本分离(片内查找表,片外缓存)
存放查找信息
有效位,主存块地址, cache块地址,标志位(Dirty bit),置换标记
存储容量=查找表表项大小 × 行数

解释:根据上图,我们看到1F转换为二进制,就是000011111,至于为什么一共是9位,这是因为主存块的大小2的9次方




直接相连




cache容量 = 行大小 × 行数
  =(标志位+标记位+数据块+置换标记) × 行数
标记位=区地址
标志位(有效标志位,脏数据位)
无相联存储器,一个比较器



组相连


SRAM

存放数据副本

多个相联存储器共享一个多路比较器

相对于全相联 多路比较器复杂度低

查找表表项内容(valid位,标记,dirty位,置换标记位)

相联存储器总容量

cache行数*(1+标记宽度+1+置换标记位)

片外缓存如果查找表在CPU内部?

查找表中必须增加cache行地址? why




例题











对于初学的难题

这道题的难点

1.脑子对字和字节要转换过来

2.对于倍数,2进制的运算,要理解清楚





相关推荐
南宫生4 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
sanguine__5 小时前
Web APIs学习 (操作DOM BOM)
学习
冷眼看人间恩怨5 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
数据的世界017 小时前
.NET开发人员学习书籍推荐
学习·.net
四口鲸鱼爱吃盐7 小时前
CVPR2024 | 通过集成渐近正态分布学习实现强可迁移对抗攻击
学习
OopspoO9 小时前
qcow2镜像大小压缩
学习·性能优化
A懿轩A9 小时前
C/C++ 数据结构与算法【栈和队列】 栈+队列详细解析【日常学习,考研必备】带图+详细代码
c语言·数据结构·c++·学习·考研·算法·栈和队列
居居飒10 小时前
Android学习(四)-Kotlin编程语言-for循环
android·学习·kotlin
kkflash310 小时前
提升专业素养的实用指南
学习·职场和发展
Hejjon10 小时前
SpringBoot 整合 SQLite 数据库
笔记