2018-1-4

首先我们得知道,为什么会出现Cache?
是为了解决CPU与主存速度不匹配的问题。

其次,Cache主要是由高速的静态RAM组成的,价格较贵,容量较小。

还有,我们是如何使用Cache的?
根据局部性原理可以知道,CPU在执行某段程序的时候,他的访存是具有相对的局部性的,也就是说,大部分都是顺序执行或者说是循环执行。那么我们只要将CPU近期会使用到的程序和数据放在Cache中即可,那么CPU就可以实现在某一时间段内只访问速度较快的Cache,从而加快了速度。
当CPU想要读取主存中某个字的时候,他会先去Cache中寻找,如果它所需要的字已经在Cache里了,便可直接访问Cache(Cache与CPU之间通常每次只传送一个字),但是如果他想要的字并不在Cache中,那么他会将主存中那个字对应的一整个字块一次调入Cache中(Cache与主存之间通常每次传送一个字块)。如何该字块已经调入Cache块中,那么我们称主存块与缓存块建立了 对应关系。

再说一下基本结构示意图:
我们假设主存共有2^n个可编址的字,那么我们可以得到,主存地址一共有n位。
假设我们将主存的低b位作为块内地址,那么表明我们每一块有2^b个字。
那么剩下的n-b=m位就作为了主存块号,主存一共有2^m个块。
对于Cache而言,他每一块的大小和主存是保持一致的,所以他的块内地址的位数也是b位,每块的大小也是2^b个字。
假设他的缓存块号为c位,那么他一共有2^c个块。他的大小是远小于主存的块数的。

还有,根据我们的分析可知,一个缓存块不可能永久的只放那一个主存块(那么有的主存块岂不是无处可放),言外之意就是说,每一个缓存块位置上的主存块是不唯一的,所以我们的缓存块需要一个标记来标记是哪一个主存块放在了这里,这样我们每次需要根据标记来判断该缓存块中的内容。

接着我们再说一下几个比较重要的指标吧!
1.命中率:
h=Cache总命中次数/(Cache总命中次数+访问主存的总次数)
其中他们两个的和就表示我们对数据访问的总次数。
2.Cache-主存系统平均访问时间:
1-h为未命中率
t=h*(命中时访问Cache的时间)+(1-h)*(未命中时访问主存的时间)
3.Cache-主存系统访问效率
e=命中时访问Cache的时间/平均访问时间*100%

最后,我想说的是Cache-主存地址映射。
CPU给出一个他想要访问的主存地址,我们将他映射到对应的缓存块,进而判断是否命中了。
由主存地址映射到缓存地址叫做地址映射。
通常有三种方式:直接映射,全相联映射,组相联映射。
1.直接映射:
首先,我们将主存地址分成了三个部分:
t+c+b,其中b我们在上面已经有提到 ,就是用这b位地址作为块内地址,t+c=m在上面是主存块号,在这里:
i=jmod(2^c),其中2^c表示缓存块号,j表示主存块号,i表示对应的缓存块号,那么我们可以得到,主存里面的0,2^c,2^(c+1)……对应缓存里的第0块,主存里面的1,2^c+1,2^(c+1)+1……对应缓存里的第1块,我们根据中间的c位确定缓存块,剩下的t位就作为主存字块标记了,我们根据缓存里对应的标记与这里的t位进行比较,看是否在里面即可。
缺点是不够灵活,每个主存块必须对应某个缓存块。
2.全相联映射:
这就厉害了,主存中的每一字块可以映射到Cache中的任意位置,这样利用率比较高,但是我们的主存字块标记从t位增加到了t+c位,而且逻辑电路也比较复杂,成本比较高。
3.组相联映射:
我们增加了组这个概念。
这是一种折中,概括的说,就是从组间来说是直接映射,从组内来说是全相联映射。
假设我们一组内有两块,那么我们只需要r=1位就可以标记是组内的哪一块了(2^1=2),b还是原来的b,但是,对于Cache而言,他原来共需要2^c个地址,现在我们只需要有2^(c-1)个地址即可(因为我们两个块排成了一组也就是一排),我们使用c-r位作为组地址,根据这个找到对应的组,然后我们再根据t+r位的主存字块标记来判断该块是否是缓存中的字块,一组中某一字块的位置是随便放的。

高速缓冲存储器(Cache)相关推荐

  1. 7.2 高速缓冲存储器-Cache

    高速缓冲存储器:Cache.Cache的功能是提高CPU数据的输入和输出的速率.CPU的速度与主存的速度之间有巨大的差异.主存的存取时间.存取速度要比CPU的速度要慢了很多倍.为了调和它们之间的巨大速 ...

  2. 计算机主板上一般带有高速缓冲存储器cache,它是与什么之间的缓存,计算机微机原理与应用(一)...

    选择题 1.对于二进制码10000000,若其表示的真值为-128,则它是( )表示的 A)原码 B)反码 C)补码 D)移码 2.在( )表示中,二进制数11111111表示的十进制数-1 A)原码 ...

  3. 个人计算机主机上的高速缓冲存储器,高速缓冲存储器(Cache)一般用SRAM来实现

    正确答案: B 高速缓冲存储器(Cache)一般用SRAM来实现 题目:下列叙述中,正确的是( ). 解析:解析:内存与外存相比:内存速度快,容量小,价格高.硬盘.光盘和软盘均是外存,它们的存取速度比 ...

  4. 高速缓冲存储器cache介绍

    cache介绍 一. Cache- 主存存储结构及其实现 为了解决存储器系统的容量.存取速度及单位成本之间的矛盾,可以采用 Cache- 主存存储结构,即在主存和 CPU 之间设置高速缓冲存储器 Ca ...

  5. 微型计算机配备高速缓冲存储器,微型计算机系统与接口5第5章高速缓冲存储器Cache课案.ppt...

    微型计算机系统与接口5第5章高速缓冲存储器Cache课案.ppt 第 5 章 高速缓冲存储器 Cache 5.1 Cache 存储器 Cache存储器是一种高速的,但其规模大小相对于主存储器而言又是比 ...

  6. cache相关命中率的运算_计算机高速缓冲存储器(Cache)命中率的分析

    第 21 卷 第 3 期 河南教育学院学报( 自然科学版) Vol. 21 No. 3 2012 年 9 月 Journal of Henan Institute of Education ( Nat ...

  7. 3-3存储系统-高速缓冲存储器Cache

    文章目录 一.概述 二.Cache与主存的映射方式 1.直接映射 2.全相联映射 3.组相联映射 三.Cache中主存块的替换算法 1.随机算法RAND 2.先进先出算法FIFO 3.最近最少使用算法 ...

  8. 高速缓冲存储器-cache

    高速缓冲存储器 编辑词条 高速缓冲存储器(Cache)其原始意义是指存取速度比一般随机存取记忆体(RAM)来得快的一种RAM,一般而言它不像系统主记忆体那样使用DRAM技术,而使用昂贵但较快速的SRA ...

  9. 高速缓冲存储器--Cache

    本篇参考 arm 官网公开材料,和微信公众号 老秦谈芯 学习笔记 宋宝华:深入理解cache对写好代码至关重要(上) 深入学习Cache系列 1: 带着几个疑问,从Cache的应用场景学起 深入学习C ...

  10. 计算机组成原理学习笔记—— 高速缓冲存储器Cache

    高速缓冲存储器 问题的提出 CPU空等问题 在多体并行存储系统中,由于I/0设备向主存请求的级别高于CPU访存,这就出现了CPU等待I/0设备访存的现象,致使CPU空等一段时间,甚至可能等待几个主存周 ...

最新文章

  1. 使用android SDk帮助文档(英文) 下载中文SDK帮助文档(中文)
  2. goland http proxy 代理设置
  3. 磁盘基准测试Bonnie++
  4. 上海事业评中级职称还要考计算机,上海职称评审-事业单位如何评职称
  5. web版本 开源压测工具_siege--Web性能压测工具
  6. Flowable 数据库表结构 ACT_RU_EVENT_SUBSCR
  7. Guns 查询列表_入门试炼03
  8. linux精灵进程之crond
  9. python删除过期文件_python 删除过期文件的方法+源码
  10. 全新UI四方聚合支付系统源码/新增USDT提现/最新更新安全升级修复XSS漏洞补单漏洞
  11. windirstat怎么用_使用WinDirStat分析和管理硬盘空间
  12. 如何去除word文档中向下的箭头
  13. 应用宝ASO优化,应用宝ASO怎么优化
  14. tomcat如何知道WebRoot是web根目录?
  15. CF1633D Make Them Equal(bfs + 01背包)
  16. 赵小楼《天道》《遥远的救世主》深度解析(11)芮小丹和肖亚文俩人身上值得我们学习的点。
  17. Python3 批量提取视频中的音频
  18. C++实现扫雷(最简单版)
  19. 我很坚强 直到最后看到自己的眼泪
  20. 2022中国(青岛)国际储能技术及应用展览会,山东风力发电展

热门文章

  1. python with open 循环建立指定名字文件_Python基础——文件
  2. python文件按行读取变为嵌套列表_迭代两个嵌套的2D列表,其中list2具有list1的行号...
  3. 送书 | 数据分析如烹小鲜
  4. 送书 | 推荐一个可能是最全的Venn图一站式绘制工具
  5. 生活不是拍电影,不会在关键时刻有个人来救你。
  6. php终止符,关于php中嵌入html代码时结束符“?”位置为什么这样放置?
  7. 1.5 编程基础之循环控制 45 金币 方法二(python3实现)
  8. 信息学奥赛一本通 提高篇 第六部分 数学基础 第1章 快速幂
  9. springmvc登录拦截器访问报错 SyntaxError: expected expression, got ''
  10. Linux笔记-iptables规则原理和组成