初识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 ...
随机推荐
- 从MySQL 5.5迁移到Mariadb 10.1.14
从MySQL 5.5迁移到Mariadb 10.1.14 迁移计划如下: 1.备份MySQL 5.5的数据库,对指定库进行备份. 2.还原到Mariadb,然后建立复制. 3.然后就可以愿意啥时候切换 ...
- [MySQL Reference Manual] 18 复制
18 复制 18 复制 18.1 复制配置 18.1.1 基于Binary Log的数据库复制配置 18.1.2 配置基于Binary log的复制 18.1.2.1 设置复制master的配置 18 ...
- mysql查询本周、月、季度、年
#查询本周记录 select * from product_process where WEEKOFYEAR(update_time)=WEEKOFYEAR(now()); #查询本月数据 selec ...
- error at ::0 can't find referenced pointcut messageInsertAspect
解决方法: http://stackoverflow.com/questions/10482563/aop-java-lang-illegalargumentexception-error-at-0- ...
- 使用InstallAnywhere工具打包Java_Web程序
一.准备工作 1. 下载InstallAnywhere,并安装: 2. 下载解压版jdk1.7(示例为jdk1.7.0_75): 3. 下载解压版tomcat7.0以上版本(示例 ...
- shell脚本俄罗斯方块游戏
亲自测试了一个大牛写的shell脚本,感兴趣可以看看,效果如下:
- SPI协议及IO模拟
SPI协议 SPI协议网上资料比较多,但是也比较乱,当初在网上搜集的错误资料导致现在比较混乱. SPI协议资料比较正规的是: 1.SPI的规约协议英文文档,例如<摩托罗拉spi协议规范> ...
- 【原】移动web点5像素的秘密
最近和一个朋友聊天,朋友吐露了工作上的一些不开心,说自己总是喜欢跟别人比较,活得比较累,这种感觉大部分人经历过,往往觉得是自己心态不好,其实不然,这是人性,此时应该快速摆脱这种状态,想到DOTA大9神 ...
- LAMP和LNMP
编译安装和yum安装 centos 7 可以使用10年 ubuntu可以使用5年 VirtualBox也是一个虚拟机 下载centos 安装centos exit 退出登陆 ping www.ba ...
- [LeetCode] Minimum Path Sum 最小路径和
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which ...