初识cache
1、cache是什么
cache这个名字用来称呼两种物理世界中存在的概念,硬体cache和cache机制。下面来分别介绍。
硬体cache:硬体cache是一种用肉眼可以看得见用皮肤可以摸得着的物品,它是由SRAM(static random-access memory)构成(在计算机硬件系统中main memory由DRAM(dynamic random-access memory)构成。硬体cache在CPU中,直接与寄存器进行数据的传输。
cache机制:有两块存储区域,区域A,区域B,区域B大于区域A,区域A存放区域B中最常用的数据。相比于区域B,由于区域A更小,所以在区域A中寻找一个数据的时间更短。在程式运行过程中,区域A始终维护着区域B中最常用的数据。这样一种机制就称为cache机制。有了cache机制,我们可以更加快速的访问程式需要的数据。当然,这里值得说明的一点是,cache机制之所以有效,是因为程式的一个特性,locality。程式的这个特性可以简单的认为每一个程式一般只访问一些数据,并且经常访问他们(如果想要了解更多关于locality,可以参考本文最后给出的参考材料)。cache机制示意图如下。
在实际使用当中,我们需要根据上下文判断出这里的cache是指硬体cache还是cache机制。 硬体cache从本质上讲是一块具有极高硬件访问速度的存储区域,并在这块存储区域上使用cache机制。所以本文所介绍的相关知识的核心是cache机制。硬件cache只不过加了更好的硬件材料而已。
2、硬件cache以及cache机制在计算机系统中的分布
计算机系统中的memory hierarchy如下图所示,
对于硬体cache。L1cache,L2cache,L3cache是硬体cache,存在于CPU当中。
对于cache机制。L1与L2之间存在cache机制,即L1是L2的cache(如果CPU想访问L2上的数据,那么CPU访问更上层的L1。如果有想要的数据,L1直接返回给CPU;如果没有,再从L2中搜索出想要的数据,并保存到L1当中,最后将此数据返回给CPU)。同理,L2是L3的cache,L3是L4的cache,等等。
3、cache的读与写(这里指cache机制)
在cache机制中,读操作的运行机制是这样的。假设CPU想访问Level k+1 上的数据B,其地址为A。
第1步,根据地址A判断数据B在不在Level k 上,如果在,返回给CPU数据B,我们称cache hit 发生;如果不在,我们进行第2步,并称cache miss 发生;
第2步,在Level k+1 上根据地址搜索出数据B,将数据B所在的block根据替换规则替换Level k上的相对应的block,并返回CPU所需的数据B。注意:这里是将数据B所在的block拷贝到更上层,不仅仅是数据B。一个block不仅包含数据B,还包含邻近的几个数据项。层与层之间的数据的传输都是以block进行传输以提高传输效率。另外层与层之间的block的大小也不一样,一般来说,越靠近底层,block越大,block在32—64 bytes之间。
更加详细的细节描述,比较繁琐,这里不再赘述,只需要阅读完下面的第一个参考资料的一章,并记住拷贝的是block而不仅仅是单个的数据项,即可以理解。
cache的写基于cache的读,读理解了,写自然就理解了。
4、cache的分类
根据cache中存储的是指令还是数据可以分为 I-cache 和 D-cache。
根据每个set的个数,cache line的个数可以分为 directed-mapped caches(多个set,每个set中cache line 只有一个)、set associative caches(多个set,每个set中有多于1个的cache line)、fully associative caches(只有一个set),示意图分别如下图的左、中、右。
5、参考资料
<<computer systems a programmer's perspective>> second edition p559-p615
初识cache的更多相关文章
- 初识virtual memory
一.先谈几个重要的东西 virtual memory是一个抽象概念,书上的原文是"an abstraction of main memory known as virtual memory& ...
- DBA面对新mysql环境
来源:http://blog.csdn.net/wyzxg/article/details/8491152 author:skatetime:2013/01/10 DBA面对新MySQL环境感悟 1. ...
- 初识 MySQL 5.6 新功能、参数
摘要: 继上一篇的文章 初识 MySQL 5.5 新功能.参数 之后,现在MySQL5.6 针对 MySQL5.5 各个方面又提升了很多,特别在性能和一些新参数上面,现在看看大致提升了哪些方面(后续不 ...
- 初识 ServiceWorker
初识ServiceWorker 初识ServiceWorker 在8月份的时候.W3C更新了一个叫Service Workers的API. 了解过HTML5中的Web Worker的人可能会对这个AP ...
- 3 MySQL数据库--初识sql语句
1.初识sql语句 服务端软件 mysqld SQL语句:后面的分号mysql -uroot -p123 操作文件夹(库) 增 create database db1 charset utf8; 查 ...
- Django框架 之 Cookie和Session初识
Django框架 之 Cookie和Session初识 浏览目录 Cookie介绍 Django中的Cookie Session 一.Cookie介绍 1.Cookie产生的意义 众所周知,HTTP协 ...
- 第一章 初识shiro
shiro学习教程来自开涛大神的博客:http://jinnianshilongnian.iteye.com/blog/2018936 第一章 初识shiro 简单了解shiro主要记住三张图即可. ...
- 初识Nginx及编译安装Nginx
初识Nginx及编译安装Nginx 环境说明: 系统版本 CentOS 6.9 x86_64 软件版本 nginx-1.12.2 1.什么是Nginx? 如果你听说或使用过Apache软件 ...
- PHP下的异步尝试一:初识生成器
PHP下的异步尝试系列 PHP下的异步尝试一:初识生成器 PHP下的异步尝试二:初识协程 PHP下的异步尝试三:协程的PHP版thunkify自动执行器 PHP下的异步尝试四:PHP版的Promise ...
随机推荐
- MS SQLServer 2008数据库处于SUSPECT情况下的处理
做任何恢复操作之前,请先备份.mdf, .ndf和.ldf文件. use master go --将处于suspect状态下的数据库设置为紧急状态 alter database <Databas ...
- Java多线程中的死锁问题
Java程序基本都要涉及到多线程,而在多线程环境中不可避免的要遇到线程死锁的问题.Java不像数据库那么能够检测到死锁,然后进行处理,Java中的死锁问题,只能通过程序员自己写代码时避免引入死锁的可能 ...
- oracel数据导出导入
一.导出模式(三种模式)及命令格式 1. 全库模式 exp 用户名/密码@网络服务名 full=y file=路径\文件名.dmp log=路径\文件名.log 2. 用户模式(一般情况下采用此模式) ...
- python-基本数据类型
/int整数/ 如: 18.73.84 每一个整数都具备如下功能: class int(object): """ int(x=0) -> int or long i ...
- MVC中在RAZOR 模板里突然了现了 CANNOT RESOLVE SYMBOL ‘VIEWBAG’ 的错误提示
然后在Razor中出现了@ViewBag的不可用,@Url不可用,@Html 这些变量都不能用了. 异常提示: 编译器错误消息: CS0426: 类型“XX.Model.System”中不存在类型名称 ...
- JS-- 浮点数运算处理
一. 问题描述 最近在做一个项目,页面上会存在一些JS浮点数的运算,发现JS浮点数运算存在一些bug.譬如: 0.1+0.2 == 0.30000000000000004 0.1 + 0.7 ...
- Spring 设值注入 构造注入 p命名空间注入
注入Bean属性---构造注入配置方案 在Spring配置文件中通过<constructor-arg>元素为构造方法传参 注意: 1.一个<constructor-arg>元素 ...
- 前端之web上传文件的方式
前端之web上传文件的方式 本节内容 web上传文件方式介绍 form上传文件 原生js实现ajax上传文件 jquery实现ajax上传文件 form+iframe构造请求上传文件 1. web上传 ...
- nodejs核心模块之http
http模块包含以下5个核心类和方法及属性: 核心类 1,http.Agent 2,http.ClientRequest 3,http.Server 4,http.ServerResponse 5,h ...
- codevs 3288 积木大赛
题目描述 Description 春春幼儿园举办了一年一度的"积木大赛".今年比赛的内容是搭建一座宽度为 n 的大厦,大厦可以看成由 n 块宽度为1的积木组成,第i块积木的最终高度 ...