杭杭州紫金港培训学校(紫金港专升本)
在职研究生计算机学科专业基础考前辅导第二章 计算机组成原理第 15 节 / 共 32 节约 30 分钟报名学员看全文

高速缓冲存储器

掌握 Cache 的工作原理、命中率与平均访问时间的两种算法,直接映射、全相联、组相联三种映射方式的地址划分和 Cache 总容量计算,FIFO、LRU 等替换算法,全写法与回写法、写分配与非写分配,会分析 C 程序访问数组时的命中率。

本节考点:Cache的基本原理Cache的映射方式Cache替换算法Cache写策略

本节导读

大纲对 Cache 列了四项:基本原理、Cache 和主存之间的映射方式、替换算法、写策略。这一部分的题目计算量大:地址怎样划分成标记、组号(行号)、块内地址,Cache 一共要多少位,某个地址映射到哪一行,一段访问序列命中几次,一段程序的命中率是多少。

学完你应该能按固定步骤完成地址划分和容量计算,能逐步模拟直接映射和组相联下的命中情况,并能从 C 程序的数组访问方式判断命中率高低。

Cache 的基本原理

Cache 位于 CPU 和主存之间,用 SRAM 做成,存放主存中最近用到的部分内容,依靠程序访问的局部性提高速度。Cache 和主存都划分成大小相同的块(Cache 的块也叫行),两者之间以块为单位交换数据。CPU 要访问的数据在 Cache 中叫命中,否则叫缺失,缺失时要把主存中对应的整块调入 Cache。

命中率 H=NcNc+NmH = \dfrac{N_c}{N_c + N_m}H=Nc​+Nm​Nc​​(NcN_cNc​、NmN_mNm​ 分别是命中和缺失的次数)。设 Cache 访问时间为 tct_ctc​、主存访问时间为 tmt_mtm​,平均访问时间有两种算法,做题前看清题目的约定:

约定平均访问时间
先访问 Cache,缺失后再访问主存T=tc+(1−H)tmT = t_c + (1-H)t_mT=tc​+(1−H)tm​
同时启动 Cache 和主存,命中就停止主存访问T=Htc+(1−H)tmT = Ht_c + (1-H)t_mT=Htc​+(1−H)tm​

例如 tc=4t_c = 4tc​=4 ns、tm=100t_m = 100tm​=100 ns、H = 0.95 时,第一种为 4 + 0.05 × 100 = 9 ns,第二种为 3.8 + 5 = 8.8 ns。Cache—主存系统的效率 e=tcTe = \dfrac{t_c}{T}e=Ttc​​。

映射方式与地址划分

映射方式主存块放在哪里地址划分特点
直接映射只能放在第(块号 mod 行数)行标记、行号、块内地址比较一次,简单;冲突缺失多
全相联可以放在任意一行标记、块内地址冲突最少;要同时比较所有行的标记,硬件贵
组相联(k 路)放在第(块号 mod 组数)组的任意一行标记、组号、块内地址折中,组数 = 行数 ÷ k

划分的步骤:块内地址位数 = log⁡2\log_2log2​(块大小);行号(组号)位数 = log⁡2\log_2log2​(行数或组数);其余高位都是标记。每个 Cache 行除了数据,还要存:有效位 1 位;标记;采用回写法时的脏位(修改位)1 位;组相联或全相联采用 LRU 时的替换控制位(k 路组相联用计数器实现 LRU 时每行 log⁡2k\log_2 klog2​k 位)。Cache 的总容量 = 行数 ×(数据位 + 标记 + 各控制位)。

替换算法

Cache 满了(或组满了)又要调入新块时,选一行换出。直接映射每块只有一个位置,不需要选择;全相联和组相联才用替换算法:

算法换出哪一行说明
随机(RAND)随机选一行实现简单,没有利用局部性
先进先出(FIFO)最早调入的行不一定是最久没用的;行数增加时命中率可能反而下降
近期最少使用(LRU)最久没有被访问的行利用了时间局部性,命中率较高,要记录访问的先后
最不经常使用(LFU)一段时间内访问次数最少的行要为每行设计数器

本节后面还有约 1281 字:报名学员看全文

每门课前 10 节免费看全文;从第 11 节起,完整教程要报名后由顾问在后台为你的账号开通才能看。

题库账号可以直接登录,但第 11 节起的完整教程要报名后由后台开通才能看。

学完练一练

按本节考点从本课的课后练习里抽题(每次 10 道以内),做完看解析、错题自动进错题本。第 11 节起的课后练习报名学员才能练。

本节内容由 AI 辅助编写,配图由 AI 生成,仅供备考参考;考试要求以《全国各类成人高等学校招生考试大纲(2024 年版)》及浙江省教育考试院当年公布为准。

我要提问免费报名咨询