计算机组成原理(笔记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进制的运算,要理解清楚





相关推荐
西瓜本瓜@5 分钟前
在Android开发中实现静默拍视频
android·java·开发语言·学习·音视频
kaka_hikun26 分钟前
【CPN TOOLS建模学习】设置库所的属性
学习·cpn·cpn tools·库所
Mephisto.java34 分钟前
【大数据学习 | kafka】kafka的整体框架与数据结构
大数据·学习
琼火hu1 小时前
R语言笔记(五):Apply函数
开发语言·笔记·r语言·apply
茶馆大橘1 小时前
Docker部署学习
linux·运维·学习·docker·容器
qq22951165021 小时前
python基于django线上视频学习系统设计与实现_j0189d4x
python·学习·django
achaoyang2 小时前
【Python学习计算机知识储备】
开发语言·python·学习
网安kk2 小时前
2024年三个月自学手册 网络安全(黑客技术)
网络·学习·安全·web安全·网络安全
光明中黑暗2 小时前
Python 学习笔记
笔记·python·学习
聪明的墨菲特i2 小时前
VUE组件学习 | 六、v-if, v-else-if, v-else组件
前端·vue.js·学习·前端框架·vue