存储器3高速缓冲存储器(Cache)
来源:互联网 发布:unity3d书籍推荐 知乎 编辑:程序博客网 时间:2024/04/27 20:13
高速缓冲存储器(Cache)
高速缓存是位于CPU和主存之间的高层存储子系统。采用高速缓存的主要目的是提高存储器的平均访问速度,从而使存储器的速度也CPU的速度相匹配。
1、Cache的基本工作原理和结构
Cache通常由两部分组成,块表和快速存储器。Cache的工作原理是:处理机按主存地址访问存储器,存储器地址的高段通过主存-Cache地址映象机构借助查表判定该地址的存储单元是否在Cache中,如果在,则Cache命中,按Cache地址访问Cache。否则,Cache不命中,则需要访问主存,并从主存中调入相应数据块到Cache中,若Cache中已写满,则要按某种算法将Cache中的某一块替换出去,并修改有关的地址映象关系。从这个工作原理我们可以看出,它已经涉及到了两个问题。首先是定位、然后是替换的问题。
Cache的存在对程序员是透明的。其地址变换和数据块的替换算法均由硬件实现。通常Cache被集成到CPU内以提高访问速度。
2.Cache中是如何进行地址映象和变换的。
因为处理机访问都是按主存地址访问的,而Cache的空间远小于主存,如何知道这一次的访问内容是不是在Cache中,在Cache中的哪一个位置呢? 这就需要地址映象,即把主存中的地址映射成Cache中的地址。让Cache中一个存储块(空间)与主存中若干块相对应,如此,访问一个主存地址时,就可以对应地知道在cache中哪一个地址了。地址映象的方法有三种:直接映象、全相联映象和组相联映象。
直接映象就是将主存地址映象到Cache中的一个指定地址。任何时候,主存中存储单元的数据只能调入到Cache中的一个位置,这是固定的,若这个位置已有数据,则产生冲突,原来的块将无条件地被替换出去。
全相联映象就是任何主存地址可映象到任何Cache地址的方式。在这种方式下,主存中存储单元的数据可调入到Cache中的任意位置。只有在Cache中的块全部装满后才会出现块冲突。
组相联映象指的是将存储空间的页面分成若干组,各组之间的直接映象,而组内各块之间则是全相联映象。
直接映象 全相联映象 组相联映象 过程 (1)主存地址分成区号、块号、块内地址
(2)在主存地址中截取与Cache地址对就部分作为Cache地址
(3)以块号为地址访问目录表读出区号与主存地址中区号比较
(4)若相等,命中
(5)若不相等,块失效,停止Cache访问。访主存,并调块 (1)主存地址分成主存块号和块内地址
(2)用主存块号同目录表相联比较
(3)若相同,则取出Cache块号,Cache块号与块内地址拼接成Cache地址,访问Cache
(4)若无相同的,则产生缺块、调块 (1)主存地址分区号、组号、块号、块内地址
(2)用组号选出一组
(3)对该组用区号+块号全相联比较
(4)或找不到,则块失效
(5)若找到一样,则将读出的Cache块号与组号和块内地址拼接形成Cache地址。 目录表 长:Cache大小
宽:主存地址位-Cache地址位 长:Cache 大小
宽:(主存块号+Cache块号)位
主存块号位参与比较 长:2ncbCache大小
宽:(区号+2块号)位
(区号+块号)位参与与比较 优点 (1)硬件省,目录表小,成本低
(2)访问Cache与访问区号表同时进行 (1)块冲突最低
(2)Cache空间利用率最高 集中全相联和直接映象的优点弥补他们的缺点 缺点 (1)块冲突概率很大
(2)Cache空间利用率很低 (1)映象表太长
(2)查表速度慢 块冲突仍大于全相联
利用率低于全相联
目录表大于直接方式
3.替换策略
在直接映象方式下,不存在块替换的算法,因为每一块的位置映象是固定的,需要哪一块数据就可直接确定地将该块数据调入上层确定位置。而其他两种映象就存在替换策略的问题,就是要选择替换到哪一个Cache块。即替换算法。下面将常用的几种替换算法作一比较:
思想 优点 缺点 随机算法RAND 用软的或硬的随机数产生器产生上层中要被替换的页号 简单、易于实现 没有利用上层存储器使用的"历史信息",没有反映等程序局部性,命中率低。 先进先出FIFO 选择最早装入上层的页作为被替换的页 实现方便,利用了主存历史的信息 不能正确反映程序局部性原理,命中率不高,可能出现一种异常现象。 近期最少使用法LRU 选择近期最少访问的页作为被替换的页 比较正确反映程序局部性,利用访存的历史信息,命中率较高 实现较复杂 优化替换算法OPT 将未来近期不用的页换出去 命中率最高,可作为衡量其他替换算法的标准 不现实,只是一种理想算法
- 存储器3高速缓冲存储器(Cache)
- ARM存储器之:高速缓冲存储器Cache
- 高速缓冲存储器(Cache)概念
- Cache 高速缓冲存储器
- Cache---高速缓冲存储器
- cache高速缓冲存储器
- 高速缓冲存储器(Cache)
- 高速缓冲存储器-cache
- 高速缓冲存储器cache介绍
- cache高速缓冲存储器映射主存储器
- 计算机组成-高速缓冲存储器Cache
- 计算机组成-高速缓冲存储器Cache
- cache高速缓冲存储器映射主存储器
- 高速缓冲存储器Cache的工作原理
- 高速缓冲存储器Cache的工作原理
- 高速缓冲存储器 - Buffer和Cache的区别
- 高速缓冲存储器
- 高速缓冲存储器
- 一组c++题
- 学习Python线程类,在同事指导下写的Linux同步监控程序,代码框架
- [英雄会专访系列]专访Sybase北京研发中心总监尹立群:管理就是尊重你的员工
- VC中有关数据类型转换
- Java面试题集(笔试 )
- 存储器3高速缓冲存储器(Cache)
- Hibernate 的关键字lock
- 微软的面试题及答案-超变态但是很经典
- Step By Step制作软盘上的Linux(V0.04)zz
- 又生气了!
- 员工的基本素质
- 什么是管理
- 学习网站收藏
- 需求分析文档