存储系统Cache(知识点+例题)


前言

本章内容较长但干货满满,如果耐心看完,定会有所收获。


一、存储系统的结构层次与分类

存储器三个主要特性的关系
在这里插入图片描述
在这里插入图片描述

存储系统:计算机中由存放程序和数据的各种存储设备(Cache、内存、硬盘等)、控制部件(SATA控
制器、内存控制器)以及管理信息调度的硬件设备(MMU,地址转换)和算法(块或段页替换算法)
所组成的系统。

概念结构:
在这里插入图片描述

1.Cache存储系统(Cache-主存存储层次)

在这里插入图片描述
注意:Cache存储的内容是主存部分内容的副本
Cache-主存存储层次对系统程序员和应用程序员都是透明的,在这里的透明指的是看不见,不公开的意思。

2.虚拟存储系统(主存-辅存存储层次)

在这里插入图片描述
虚拟存储系统(主存-辅存存储层次)对系统程序员是不透明的,即系统程序员可以对此层次进行修改。

3.存储器分类

  1. 作用(层次)
    主存储器(主存、内存):使用DRAM和ROM
    高速缓冲存储器(Cache):使用SRAM
    辅助存储器(辅存、外存)
  2. 存储介质
    磁芯存储器
    磁表面存储器:磁盘、磁带
    半导体存储器
    光存储器
  3. 存取方式
    (1)随机存取:RAM(DRAM、SRAM),ROM
    任何一个存储所需时间都相同,与存储单元所在的物理位置无关
    (2)串行访问:顺序存取(磁带)、直接存取(磁盘)
    读写某个存储单元所需时间与存储单元的物理位置有关
    (3)按内容访问:相联存储器(CAM)
    可以按照内容检索到存储位置进行读写,"快表"就是一种相联存储器
  4. 信息可保存性
    断电后存储信息是否消失:易失性(RAM)、非易失性(磁盘,光盘)
    读出是否破坏信息:破坏性读出(DRAM)、非破坏性读出(SRAM,磁盘,光盘)

4.练习

在这里插入图片描述
解析:Cache中存储的是主存部分内容的副本,实际上该存储系统的容量就是主存的容量为12MB,故选B。

二、高速缓冲存储器(Cache)

在这里插入图片描述

1.局部性原理

➢ 时间局部性
在最近的未来要用到的信息,很可能是现在正在使用的信息。
➢ 空间局部性
在最近的未来要用到的信息(指令和数据),很可能与现在正在使用的信息在存储空间上是邻近的
在这里插入图片描述

2.Cache的基本结构及工作原理

在这里插入图片描述
cache块/行包括有效位(占1位)、主存标记位和数据位,当采用回写策略时还要考虑标志位(占1位)

地址映像:为把信息存放与Cache,应用某种函数把主存地址映像到Cache,称为地址映像。(直接映像、全相联映像、组相联映像)
命中率:CPU欲访问的信息已在Cache中的比率。Cache的容量和块的大小影响命中率。
替换策略:从主存读出新的字块调入Cache时,如遇到Cache中相应位置已被占用,则需要替换掉旧的字块,此时采用的替换规则为替换策略。(随机算法、先进先出算法、近期最少使用算法)

例题:
在这里插入图片描述
读操作:
在这里插入图片描述
写操作:

原则:保持Cache与主存内容一致性问题
➢命中的两种写方式:
• 标志交换方式flag-swap(写回法/回写法write-back):只把数据写入Cache,当Cache数据被替换出去时,才写回内存。需要标志位。写操作时间就是访问 Cache 的时间。
• 通过式写write-throgh(写通法):数据既写入Cache又写入内存。写操作时间就是访问主存的时间。
➢ 未命中的两种写方式:只对主存写;加载该块到Cache,再更新Cache
◆ 需要增加一位标记有效位(刚加电后所有标记位都为0)
具有Cache的存储器,平均存取时间与命中率h有关(平均存取时间 ta= h*tc + (1-h) * (tc + tm))

以下公式适用于写回法(Cache先被访问,如果不命中,内存后被访问):
在这里插入图片描述
性能对比分析:
在这里插入图片描述

3.Cache地址监听

I/O设备可以直接访问存储器,一般数据只写入存储器,不写入Cache。为保证Cache和主存相应单元内容的一致性,需要不断监听,通常采用将Cache相应单元标记有效位清0方法。

4.替换算法

在这里插入图片描述

三、地址映像

1.直接映像

在这里插入图片描述
每个缓存块 i 可以和若干个主存块对应,每个主存块 j 只能和一个缓存块对应。

2.全相联映像

在这里插入图片描述
主存中的任一块可以映射到缓存中的任一块(类似于全排列)。

3.组相联映像

在这里插入图片描述
(i=j mod Q)某一主存块 j 按模 Q 映射到缓存的第 i 组中的任意一块,某一 主存块只能映射到某一缓存组中的任一块。
在这里插入图片描述

4.Cache映像总结

◆ 直接映像
➢ 某一主存块只能固定映射到某一缓冲块
◆ 全相联映像
➢ 某一主存块能映射到任一缓冲块
◆ 组相联
➢ 某一主存块只能映射到某一缓冲组中的任一块

靠近CPU的Cache要求高速,采用直接相联或路数较少的组相联;中间层次采用组相联;距离CPU最远的Cache采用全相联,对利用率强调越高。

四、虚拟存储器

◆ 主存-辅存层次
◆ 在虚拟地址空间编程
    ➢ 虚拟地址(虚地址):(对应主存逻辑空间)由编译程序生成的,是程序的逻辑地址
    ➢ 物理地址(实地址):(对应主存物理空间)由CPU地址引脚送出,用于访问主存的地址
    ➢ CPU理解虚拟地址,并将其转换成物理地址

主存-辅存层次与Cache-主存层次的比较

区别(重点)
➢ Cache-主存的控制完全由硬件实现;虚拟存储器的控制是软硬件结合的。 (该层次虚拟存储器的控制软件即操作系统)
➢ 主存/Cache存储器的访问“时间比”较小,典型的是10:1;每次传送的基本信息单元也比较小。而辅存-主存的访问时间比要大得多。
相同点
➢ 基本原理相似
➢ 类似的地址映像、地址变换、替换策略(最早应用于虚拟存储系统中)

在这里插入图片描述

主存-辅存层次信息传送单位和存储管理

◆ 信息传送单位可采用段、页或段页
◆ 存储管理
➢ 段式管理
➢ 页式管理
➢ 段页式管理

1.段式管理

➢ 把主存按段分配的存储管理方式。
➢ 段以软件为基础, 利用程序的模块化性质, 按照程序的逻辑结构划分成的多个相对独立部分。
➢ 过程(函数)、子程序、数据表、阵列等。
➢ 特点:大小不一!可以被其他程序段调用。
在这里插入图片描述

段式管理优缺点分析

➢ 优点:段的分界与程序的自然分界相对应;段的逻辑独立性使它易于编译、管理、修改和保护,也便于多道程序共享。
➢ 缺点:容易在段间留下许多空余的零碎存储空间不好利用,造成浪费。

2.页式管理(类比Cache地址映像)

➢ 把主存按页分配的存储管理方式。
➢ 主存的物理空间也被划分为等长的固定区域,称为页面。
➢ 新页调入主存也很容易掌握,只要有空白页面就可。
在这里插入图片描述
页式管理优缺点分析

➢ 优点:可能造成浪费的是程序最后一页的零头,它比段式管理系统的空间浪费要小得多。
➢ 缺点:由于页不是逻辑上独立的实体,所以处理、保护和共享都不及段式来得方便。

3.段页式管理

➢ 程序按模块分段,段内再分页。
➢ 出入主存仍以页为信息传送单位。
➢ 用段表和页表(每段一个页表)进行两级管理。

4.存储管理部件MMU

➢ MMU:由硬件实现的存储管理部件。
➢ 作用:实现逻辑地址到物理地址的转换,并在页面失效时进入操作系统环境。
➢ 整个虚拟存储器的管理是由MMU部件与操作系统共同完成的。

五、巩固练习

例1:
在这里插入图片描述
解析:首先要明确不同方式下主存地址格式的形式有何异同,Cache字块地址为为Cache组数( 2 c 2^{c} 2c)所占位数(c位)字块内地址要看块长字数( 2 b 2^{b} 2b )所占位数(b位)主存字块标记 t =主存总位数-c-b。
直接映像方式:
在这里插入图片描述
全相联映像方式:
在这里插入图片描述
组相联映像方式:r位为几路组相联的路数( 2 r 2^{r} 2r)所占位数。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例2:某计算机的Cache共有16块,采用二路组相联映射方式。每个主存块大小为32B,按字节编址,主存129号单元所在主存块应装入到的Cache组号是( )。(2009年联考真题)
A. 0 B.2 C.4 D.6

解析:由题意知Cache共有16块,采用二路组相联映射方式,表示共16/2=8组,每组2块。因为每个主存块大小为32B,按字节编址,即每个单元都是一个字节,主存129号单元即为129/32=4.03>4,即在第5块。按照下表可以清晰了解到第五块对应第一路的4,即在第4组,选C。

Cache组号第一路第二路
008
119
2210
3311
4412
5513
6614
7715

例3:若计算机主存地址为32位,按字节编址,Cache数据区大小为32KB,主存块大小为32B,采用直接映射方式和回写(write back)策略,则Cache行的位数至少是()?(2021年联考原题)
A. 275 B. 274 C. 258 D. 257

解析:首先本题需要明确cache块/行包括有效位(占1位)、主存标记位和数据位,当采用回写策略时还要考虑标志位(占1位)。分析题目可知:(1)主存有32位地址(2)Cache块数据区有32KB(3)主存块大小为32B(Cache块和主存块的大小一致)(4)直接映像的方式主存地址的分布可知
直接映像方式:
在这里插入图片描述
由(2)(3)可知Cache块有32KB/32B=1K块,共占10位;32个字节( 2 5 2^{5} 25),按字节编址,块内地址占5位;故主存标记t=32-10-5=17位。块内数据占32B,即32x8=256位;有效位占1位;采用回写策略要考虑标志位占1位;故17+256+1+1=275位,选A。
例4:
在这里插入图片描述
例5:
在这里插入图片描述
解析:(1)Cache由64个储存块组成,即Cache块内地址占6位;Cache块与主存块的大小一致,每块由32个字组成,即块内字地址占5位;故Cache地址占6+5=11位。主存由8192= 2 13 2^{13} 213个储存块组成,主存地址占13+5=18位。每组包含4个储存块,即4路组相联。综上所述,主存地址18位,Cache地址11位,4路组相联。
(2)由(1)得主存地址共18位,主存标记(区号):18-11=7位;组号:Cache共64/4=16组,占4位;块号:每组包含4个储存块,占2位;块内地址:每块由32个字组成,即块内字地址占5位。综上所述,区号7位,组号4位,块号2位,块内地址5位。

例6:某32位计算机按字节编址,Cache容量为16KB,Cache行的大小为16B,若主存与Cache地址映像采用直接映像方式,则主存地址为1234E8F8H的单元装入Cache的地址是什么?
解析:由题可知主存地址为32位,Cache容量为16KB,Cache行的大小为16B(代表块内字存储空间大小),故16KB/16B=1K,16B= 2 4 2^{4} 24B,即Cache块内地址占10位,块内字地址占4位;综上得Cache的地址共占14位(二进制,占用主存低位),将16进制地址后四位先转化为二进制地址1110 1000 1111 1000,再取后14位地址为10 1000 1111 1000。

总结

本章内容细节满满,做题时更是有很多要注意的细节,比如主存地址在不同地址映像下的形式,cache块/行包括有效位(占1位)、主存标记位和数据位,当采用回写策略时还要考虑标志位(占1位),主存块与Cache块的大小一致,主存-辅存层次与Cache-主存层次的区别等等。本章为重点章节,有时刷题1000不如理解一遍,希望大家在理解的基础上做题巩固,本篇对你有帮助的话记得点赞支持一下哦。

  • 25
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

君知燕云归

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值