cache 基本原理
Cache 主要由 Cache Tag,Cache 存储体,Cache 控制模块组成。Cache Tag 主要用来记录 Cache 存储体中数据的位置和判断 Cache 内数据是否命中;
Cache 存储体主要用来存储片外数据,方便处理器直接调用;而 Cache 控制模块则控制整个Cache 的具体工作,它决定了 Cache 的工作效率。
cache基本结构图
Cache 的组织结构
Cache 的状态信息位包括有效位,脏位,锁定位,只读位,LRU 位等等Cache 状态信息位记录该 Cache Line 的状态,比如有效位是用来判断该 Cache Line
是否有效的;而脏位是用来判断 Cache 数据是否与主存相同的;锁定位是用来强制保证 Cache 中该行不被修改的。本文描述的 Cache 使用了有效位和脏位。
当处理器返回修改过后的数据给 Cache 时,脏位就会置 1,表示已改变。当发生 Cache Line 被替换的事件时,Cache 控制器就会对脏位进行检测,若脏位
已经置 1 则该Cache Line 中的数据会被写入主存,保证 Cache 和主存数据的一致性
全相联映射中,主存中每个 Line 能映射到 Cache 中任意的一个 Line,其结是资源冲突少,命中率最高。缺点是电路比较复杂。因为在判断数据是否在 Cache
中时需要将当前地址和 SPRAM 中的所有地址一一进行比较,需要的比较器很多。另外会产生大量访问 Cache 的延迟,因此只能在较小的 Cache 中使用。
直接映射中,主存按照 Cache 空间大小分成若干容量相等的存储页,存储页中每个 Line 对应到 Cache 中固定的 Cache Line。主存地址对应 Cache Line 进行循
环分配。这种映射方式最容易实现,只需要将当前地址和 Cache 中的某一个地址进行比较,来判断是否命中。但是缺点比较明显,灵活性太差,空间利用率低,
Cache 中的资源冲突也很频繁,使得 Cache 命中下降。在高性能 DSP 中基本不采用该映射方式。
组相联映射是全相联映射方式和直接映射方式的结合。比如 4 路组相联就是将 Cache 分成 4 个相同的部分,每个部分都称为 Cache Way。主存分成若干容量相
等的存储页。而主存中每个 Line 都可以被存放在任意 Way 中的对应 Line。该实现方式复杂度比全相联方式低,Way 数目就是比较器所需数目。其映射方式也更加
灵活,从而资源冲突较少,命中率也较高。
不同相联度的 Cache 中的缺失率
cache数据流向
cache 基本原理的更多相关文章
- Cache基本原理之:结构
转载自:https://www.jianshu.com/p/2b51b981fcaf Cache entries 数据在主存和缓存之间以固定大小的”块(block)”为单位传递,也就是每次从main ...
- Linux Cache 机制
在阅读文章前,您应该具备基本的存储器层次结构知识,至少要了解局部性原理.要详细了解cache基本原理,可以参考本书<深入理解计算机系统>中存储器体系结构一章: 带着疑问来看文章,cache ...
- linux从head.s到start_kernelstart_kernel之---内核解压到重定位分析
一: arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息.符号 ...
- oracle buffer cache的基本原理
Buffer cache 的原理 一. 1·)当一个服务器进程需要读数据到buffer cache中时,首先必须判断该数据在buffer 中是否存在,如果存在且可用,则获取该数据,根据lru算法在lr ...
- 注释驱动的 Spring cache 缓存介绍
概述 Spring 3.1 引入了激动人心的基于注释(annotation)的缓存(cache)技术,它本质上不是一个具体的缓存实现方案(例如 EHCache 或者 OSCache),而是一个对缓存使 ...
- [转]注释驱动的 Spring cache 缓存介绍
原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 概述 Spring 3.1 引入了激动人心的基于注释(an ...
- Spring Cache 介绍
Spring Cache 缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存. 本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 c ...
- cache 浅析
http://blog.chinaunix.net/uid-26817832-id-3244916.html 1. Cache Cache一词来源于法语,其原意是"藏匿处,隐秘的地方&q ...
- Using dbms_shared_pool.purge to remove a single task from the library cache
我们都知道可是使用 alter system flush shared_pool 来清除shared pool 信息,当时不能指定清除某个对象.因为在系统繁忙的时侯 使用 alter system f ...
随机推荐
- [C++]指针与引用(定义辨析)
1.定义: 1.1 &-----取地址运算符 功能:返变量的内存地址 Eg:int *p,m; 定义p为指向int类型变量的指针,同时定义变量m ...
- java程序运存扩容
线上程序随着业务增多,运行的越来越慢,初步判定是因为内存分配的太小导致频繁的进行GC和OOM,于是着手增加内存上限. 增加内存上限都知道是修改java启动的opt,因为服务容器是tomcat 首先是在 ...
- Ngnix + Tomcat负载均衡架构
一.nginx Nginx (发音同 engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行. 其特点是占有内 ...
- python 数据类型详解
python数据类型详解 参考网址:http://www.cnblogs.com/linjiqin/p/3608541.html 目录1.字符串2.布尔类型3.整数4.浮点数5.数字6.列表7.元组8 ...
- 关于GTID模式下备份时 --set-gtid-purged=OFF 参数的实验【转】
刚刚听了吴老师是复制章节课程,对于GTID模式下备份数据--set-gtid-purged=OFF 参数有些不理解,于是乎做了实验,加深理解,得出些结论,如有错漏请批评指正! 部分备份: [root@ ...
- imp高版本的dmp文件报错问题
imp高版本的dmp文件报错问题 导出方:oracle 11R2 www.2cto.com 导入方:oracle 10R2 通过imp导入时提示如下: 解决方法: 通过编 ...
- Python poll IO多路复用
一.poll介绍 poll本质上和select没有区别,只是没有了最大连接数(linux上默认1024个)的限制,原因是它基于链表存储的. 本人的另一篇博客讲了 python select : ht ...
- TOMCAT服务器配置域名
最近做了个网站,用的是web'服务器是tomcat,框架式SpringMVC,功能做好后,就准备上线使用了, 手上已经有域名以及一台服务器,已经绑定好ip了,剩下的也就是配置Tomcat了,比较简单, ...
- 利用pyecharts做地图数据展示
首先, pip install pyecharts 为了地图上的数据能显示完全,加载好需要的城市地理坐标数据. pip install echarts-countries-pypkg pip inst ...
- jquery幻灯片插件之owl.carousel.js
官网地址:http://owlcarousel2.github.io/OwlCarousel2/ 这个插件兼容各种浏览器,以及移动端 使用方法: 1.下载文件,解压以后,把dist里面的文件放到项目中 ...