cache-主存的三种映射方式
目录
- 1. 基本概念
- 2. cache-主存的三种映射方式
- 2.1 全相联映射
- 2.2 直接映射方式
- 2.3 组相联映射方式
- 3. 三种映射方式例题
1. 基本概念
1. 存储系统的体系结构
图片摘自这篇博客:图片来源
2. cache在存储系统中的位置
cache(缓存)位于CPU内部,其读取速度快于主存,但容量小于主存。cache中存放的是程序需要用到的数据,CPU处理时直接从cache中读取数据速度要快于从主存中读取。
在CPU和主存之间引入cache是为了:
①避免CPU与外部设备争抢主存
外设向主存请求数据级别高于CPU,可能导致CPU等待较长时间。
②提高取指令和取数据的速度
主存速度提高跟不上CPU的发展速度,差距总在5倍以上。
3. 程序访问的局部性原理
之所以可以把CPU当前需要的数据和程序放在cache中,是因为程序访问具有局部性的原理:
时间局部性 一个存储单元被访问,此单元很快就会再次被访问
空间局部性 一个存储单元被访问,该单元临近的单元也可能很快被访问。
4. 命中率
如果访问的数据在cache中,称为访问cache命中。
设某Cache的命中率为h,其中访问Cache的时间为tc,访问M的时间为tm。设Nc访问cache命中的总次数,Nm表示访问cache不命中而访问M的次数,则有:
h=Nc/(Nc+Nm)×100%
①若CPU在访问cache不命中时再访问主存
平均访存时间ta=h·tc+(1-h)·(tc+tm)=tc+(1-h)·tm
②若CPU同时访问cache和主存,访问命中时中止对主存的访问。
平均访存时间ta=h·tc+(1-h)·tm
5. 字、字块、标记、组
字 :1个字由n个字节组成(n≥1),字是CPU访问存储器时可存取的最小单位
字块 :1个字块包含n个字(n≥1),字块是主存与cache交换的最小单位
也就是说,cache和主存在交换时是以字块为单位的,一次交换一个字块(包含好多个字,利用到了局部性原理)。而CPU在访问cache时,一次只存取一个字。
标记 :cache中存放的主存块地址称为标记。
组 :多个字块组成的一个逻辑整体称为组。
2. cache-主存的三种映射方式
2.1 全相联映射
思路
允许主存中的每个字块映像到cache的任何一个字块位置上。
示意图
主存地址和cache地址
设置主存地址和cache地址的一个目的是,可以通过主存地址来找到cache地址,这样才能实现主存和cache字块的交换。
主存地址:
包括块标记和字块内地址两部分,其中块标记相当于字块在主存中的地址,字块内地址为字块中某个字的地址。
示意图:
cache地址:
包括字块号和字块内地址,其中,字块号为字块在cache中的地址,字块内地址为字块中某个字的地址。
注意:主存地址和cache地址中的字块内地址相同。
示意图:
相联存储器:
既然全相联映射方式的思路是:主存中的字块映射在cache中的任一字块,计算机怎么知道映射到哪一字块了?到时候怎么操作呢?这就需要一个目录表来查找主存中的某一字块与cache中某一字块的对应关系:
该目录表由三部分组成:主存字块标记(主存地址的第一部分),cache字块地址(cache地址的第一部分),有效位(1位)。目录表的行数为cache的字块数,这很好理解,因为目录表的目的就是查找主存字块和cache字块的对应关系。
特点
(1)映像方式灵活,主存中的一个字块可以对应cache的任意一块;
(2)主存地址映射到cache无规则可言,必须使用相联存储器通过按内容查找获取cache块号。
(3) 全部由硬件实现,速度快,但硬件实现难度大;
(4)由于使用相联存储器存储目录表,成本高。当cache容量越大时,所需相联存储器的容量也越大,成本也越高。仅适用于小容量cache采用。
2.2 直接映射方式
思路
主存中的一块只能拷贝到cache中的一个特定行位置。设主存的块号为i,cache中的块号为j,cache的总块数为N,则映射关系为:
j = i mod N
示意图
主存地址与cache地址
主存地址:
包括块标记、字块地址、字块内地址三部分。其中,块标记为字块在主存中的地址,字块地址为字块在cache中的地址(计算方法就是上面说的),字块内地址为字在字块中的地址。
因此这种映射方法不需要目录表了。(因为主存地址中存有要映射到cache相应字块的字块地址了)
示意图:
cache地址:
包括字块地址、字块内地址两部分:其中,字块地址为字块在cache中的地址,字块内地址为字在字块中的地址。
注意:cache地址中的字块地址和字块内地址和主存地址中的相同。
示意图:
特点
(1)映像函数简单,实现硬件简单,无需相联存储器,实现成本较全相联映像方式低;
(2)地址变换速度快,如果命中且字块有效,那么主存地址去掉区号后的低位部分就是cache地址。
(3)块冲突率高,当两个或两个以上的主存块映射到相同的cache发生冲突时,即使其他cache块空闲也不能被使用。当两块交替映射到同一cache时,造成频繁置换——抖动。
2.3 组相联映射方式
思路
组相联映像方式为前两种方式的折衷。其方法是将cache按某种规格分组,主存中若干字块映射到同一个组中,组间为直接映像方式,组内为全相联映像。
主存字块在cache组号求法为:主存字块号 mod cache组数
示意图
主存地址和cache地址
主存地址:
主存地址包括主存字块标记、组号和字块内地址三部分。其中主存字块标记为字块在主存中的地址,组号为cache分的组的组号,字块内地址为字在字块中的地址。
示意图:
cache地址:
cache地址包括组号、字块号和字块内地址三部分组成。其中,组号为cache分组的组号,字块号为每组内字块的地址,字块内地址为字在字块中的地址。
注意:主存地址和cache地址中的组号和字块内地址相同。
示意图:
特点
(1)因为是两种映像方式的折衷,因此地址结构较为复杂,比较的情况较多,需要引入相联存储器;
(2) 兼顾了映像的灵活性和操作的复杂程度。
(3)目前应用较多。每组具有v个字块的组相联映像方式常称为v路组相联。v一般取值较小,典型值有2、4、8、16。
3. 三种映射方式例题
【例题】
设主存容量为256K字,cache容量为2K字,块长为4,按字编制。
①设计cache地址格式,cache可装入多少块数据。
②在直接映射方式下,设计主存地址格式。
③在四路组相联映射方式下,设计主存地址格式
④在全相联映射方式下,设计主存地址格式
【解答】
因为是按字节编址,所以主存地址有18位,cache地址有11位,因为块长为4,说明每个字块有4个字,故字块内地址为2位。
① 字块内地址为2位,故字块地址有11-2=9位,cache地址如下:
② 直接映射方式下,主存地址包括主存字块标号、字块地址和字块内地址3部分,其中字块地址和字块内地址与cache地址相同,故主存字块标号有18-11=7位。主存地址如下:
③ 四路组相联,说明cache分为4个组,此时cache地址包括:组号、字块地址、字块内地址三部分。
因为分为4组,故组号为2位,因为一个字块长4位,故字块内地址为2位,故字块地址为11-2-2=7位,cache地址如下:
此时主存地址由三部分组成:主存字块标记、组号、字块内地址。
组号和字块内地址和cache地址相同(共7+2=9位),故主存字块标记有18-9=9位,主存地址如下:
④ 全相联方式下,主存地址由主存字块标记和字块内标记组成,字块内标记和cache地址相同,为2位,故主存字块标记为18-2=16位,主存地址如下:
cache-主存的三种映射方式相关推荐
- ASP.NET缓存中Cache过期的三种策略
ASP.NET缓存中Cache过期的三种策略 原文:ASP.NET缓存中Cache过期的三种策略 我们在页面上添加三个按钮并双击按钮创建事件处理方法,三个按钮使用不同的过期策略添加ASP.NET缓存. ...
- Servlet功能实现和执行过程、servlet的生命周期、Servlet线程安全问题、Servlet的三种映射方式、ServletConfig、ServletContext
1. 什么是Servlet? Servlet是SUN公司提供的一套规范,名称就叫Servlet规范,它也是JavaEE规范之一. 第一:Servlet是一个运行在web服务端的java小程序 第二:它 ...
- cache三种映射方式
主存与cache的地址映射方式有全相联方式.直接方式和组相联方式三种. 直接映射(directmapping) 将一个主存块存储到唯一的一个Cache行. 全相联映射(fullyassociative ...
- Cache与主存的三种地址映射详细解读
前言 我们知道,Cache又叫做高速缓冲存储器, 它保存的是主存中的一部分数据.当CPU要访问数据时,它会同时发送地址给Cache和主存,如果在Cache中找到了想要的数据,则由Cache直接返回数据 ...
- Cache与主存的三种映射
直接映射 主存储器中一块只能映射到Cache的一个特定的块中. 具体步骤: 主存与高速缓存分成相同大小的数据块,主存容量是缓存容量的整数倍 将主存空间按照缓存的容量分成区,主存中每一区的块数与缓存中总 ...
- 计算机原理中的三种映射方式
直接映像(一Cache对多主存) 直接映射就是一个Cache页面对应多个主存页面. 直接映射函数为: i = j % 2c,其中i是Cache页号:j是主存页号. 例如:主存的页面0 % 2c = 0 ...
- 计组——彻底搞懂cache主存映射以及cache容量的计算
cache主存映射以及cache容量 一.三种映射方式 1. 全相联映射 2. 直接映射 3. 组相联映射 二.cache容量计算 1. 先计算cache行标记项位数 2. 再计算cache块位数 3 ...
- 一对一映射的三种方式以及对lazyload的特别关注
一对一映射几乎涉及了所有可以使用的映射方式:共享主键.外键和关联表.每一种方式都有相对特定的使用场合.而与此同时,one-to-one关系的 lazy loading总是一个让人非常疑惑的问题,下文在 ...
- 整理笔记——cache主存映射方式
(结合看过的几篇文章整理笔记) 什么是Cache地址映射 Cache的容量很小,它保存的内容只是主存内容的一个子集,且Cache与主存的数据交换是以块为单位的.主存每个块的大小和Cache每个块的大小 ...
最新文章
- 面试常问 Java基础 冒泡排序
- 用户故事与敏捷开发方法笔记05
- with ...as ...
- 编程语言python怎么读-网红编程语言Python将纳入高考你怎么看?
- SAP财务管理大全-采购收货-标准成本法 移动平均价
- 为何Set检索效率低下
- 2022年详细诠释保税区一日游 一般贸易企业与加贸企业如何完成保税区一日游
- ESP8266-Arduino编程实例-TEMT6000环境光传感器驱动
- 小学六年级人教版计算机书,小学数学六年级人教版
- x7 z8750 linux,GPD Pocket 7.0英寸 口袋笔记本电脑(Atom x7-Z8750、8GB、128GB、触屏)
- HEXO+Github博客 更换新域名详解
- GORM CRUD 10 分钟快速上手
- 每日 30 秒 ⏱ 漫游器法则
- Spring Boot 实战(3)静态资源配置
- 自考第一阶段读书有感
- C语言指针的一些易错点
- 机器学习(一)——什么是机器学习
- oracle别名as用法
- 手机录音amr怎么转mp3?三种方法直接转换!
- Windows系统中睡眠和关闭屏幕的异同点
热门文章
- MPU6050基本原理介绍及程序配置
- PlayerControllerRotation
- diplay实际应用
- 利用随机函数产生并且显示 15 个小写的英文字符,显示排在最前面和最后面的字
- 关于er模型中的identifying relationship or non-identifying relationship
- windows server 2016搭建WDS和WSUS服务
- Vue 点浏览器后退 模态框有灰色遮罩,监听返回键 this 无效
- 多功能工具箱微信小程序源码下载-操作简单实用流量主小程序
- 计算机网络什么叫流量控制,计算机网络(十一)-数据链路层-流量控制
- python3爬虫——多线程爬取斗图网表情包