处理器(续)_缓存(cache)

4.处理器(续)_缓存(cache)

4.1硬件的处理速度

由于经济因素,处理器和内存所使用的半导体工艺不同,工艺的差异导致了处理器和内存的速度差异,处理器总是要等待内存,处理器速度远远大于内存。所以在两者之间增加缓存是及其必要的。
通常:V处理 > V处理器内部寄存器 > V缓存 > V内存 > Vflash

4.2程序访问的局部性

程序运行时有一个特点,在短时间内,处理器访问的储存空间是一个很小的范围。
A.时间局部性:某个存储单元在短时间内很可能被再次访问
B.空间局部性:某个存储单元的邻近单元在短时间内也可能被访问
4.3 cache
Cache是一种小容量高速存储器,其存取速度与处理器的运算速度几乎同量级,现代计算机通常将其内置于处理器芯片内。
在处理器和内存之间设置cache,把内存中别频繁访问的指令和数据复制到cache中。大多数情况下,处理器能直接从cache中取得指令和数据。

4.4 内存和缓存之间的映射

内存与缓存之间的映射最简单的方法是直接映射法。特点是任意一个内存地址都能映射到cache中的一个固定位置。

直接映射法

?将cache和内存分成固定大小的块(如512Byte/块)
?内存中每一块在cache中有固定的映射位置
?映射公式为:pos_cache = 内存块号 % cache总块数,如下图示:

地址划分:

![](http://i2.51cto.com/images/blog/201803/09/1037cd3857ebfbac7c4c45dc02e2a74c.png?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

映射原理:

根据访问地址中的c位找到cache中的对应块,比较地址中的t位和对应块号的flag是否相同。
?相同,则根据块内地址做为偏移量直接读取数据
?不同,说明要访问的内存数据不在缓存中,则从内存中复制块内容到缓存。

直接映射法示例:

直接映射法的特点:

优点:映射过程简单,所需耗时短
缺点:当短时间访问的地址有同余冲突(两片内存对应同一片缓存),会造成缓存失效。

4.5 Cache原理软件应用:

背景:日志系统对系统效率影响很大,同时不易分析,无法高效打印二进制数据,需要自定义日志的解析格式,并且可以对日志进行分类,控制其输出。
最初方案:开发一个日志解析软件,配合脚本实现日志解析,每一种日志都有自己对应的解析程序。当有日志来时,通过日志类型查找对应的解析程序。
问题:短时间内有大量日志需要打印时,性能无法满足要求。性能的瓶颈在于每次频繁查找耗时太多。
解决方案:根据cache原理,设置二级缓存,尽可能避开查找。

原文地址:http://blog.51cto.com/11134889/2084702

时间: 2024-10-20 04:49:17

处理器(续)_缓存(cache)的相关文章

[.net 面向对象程序设计进阶] (14) 缓存(Cache) (一) 认识缓存技术

[.net 面向对象程序设计进阶] (14) 缓存(Cache)(一) 认识缓存技术 本节导读: 缓存(Cache)是一种用空间换时间的技术,在.NET程序设计中合理利用,可以极大的提高程序的运行效率. 本节将介绍如何利用缓存写出高效率的代码. 1. 什么是缓存(Cache)? 缓存(Cache)是一种用空间换取时间的技术 存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取. 比如CPU二级缓存.内存.windows文件读取缓存. 2. .NE

HttpResponseCache的使用缓存cache

为什么要用cache? 我们可以通过传递类似上次更新时间这样的参数来制定查询某些数据.同样,在下载图片的时候,server那边最好能够减少图片的大小,而不是让我们下载完整大小的图片. 之前我们在软件开发中,cache都是自己来写,不管是图片缓存还是其他从网络获取的数据,有了HttpResponseCache,它帮助我们可以很好的解决cache这个问题(我现在感觉他只适合cache一些小的数据,如果大量的图片cache还是自己缓存到SD卡上面去比较好). HttpResponseCache的好处:

ASP.NET缓存 Cache

缓存介绍 如果每次进入页面的时候都查询数据库生成页面内容的话,如果访问量非常大,则网站性能会非常差,而如果只有第一次访问的时候才查询数据库生成页面内容,以后都直接输出内容,则能提高系统性能,这样无论多少人访问都只访问一次数据库,数据库压力不变缓存是一种用空间换取时间的技术,存在于计算机中很多地方,用来将一些慢速设备中的常用数据保存在快速设备中,取数据的时候直接从快速设备中取,比如CPU二级缓存,WINDOWS文件读取缓存缓存存在失效的问题:为了保证从缓存中读取数据和慢速数据中数据一致,则需要在慢

POCO库——Foundation组件之缓存Cache

缓存Cache:内部提供多种缓存Cache机制,并对不同机制的管理缓存策略不同实现: ValidArgs.h :ValidArgs有效键参数类,模板参数实现,_key:键,_isValid:是否有效,此外提供key获取键.isValid是否键有效,invalidate使得键值无效:默认情况下键为有效: KeyValueArgs.h :KeyValueArgs键值参数对类,模板参数实现,_key:键,_value:键值:此外提供key获取键,value获取键值: EventArgs.h :事件参数

asp.net,缓存Cache

缓存Cache: 1>直接使用Cache["content"],缓存与Session不同,所有用户都可以共享.永不过期,由服务器自己维护,当内存不够时,会将老的缓存释放掉. 2>设置绝对过期日期.Cache.Insert("nowTime", DateTime.Now, null, DateTime.Now.AddSeconds(7), TimeSpan.Zero); 3>设置滑动过期日期: Cache.Insert("nowTime&q

缓存(Cache)

什么是缓存? web应用程序可被多个用户访问.当用户少,负载低时,可提供快速的访问.当负载成倍增加时,响应就慢下来了.服务器响应慢是高负载网站最常见的问题.为了解决这个问题,我们常采用升级硬件配置,负载均衡,增加带宽等措施.但下载并不是响应慢的唯一原因.我们需要提供一种加快数据访问的机制,进而提升网站的性能.缓存提供了这种解决方案.缓存是种技术.我们可以把频繁使用的数据缓存或把网页临时缓存在本地硬盘为了以后再次访问.在大量用户访问一个站点或一个用户多次访问站点时,缓存技术能加快响应.缓存可以出现

网页的缓存Cache与控制

什么是缓存 Cache? 缓存位于客户端与服务器之间, 或者服务器与服务器之间.它决定是否保存所获资源的副本,以及如何使用副本,何时更新副本,这里所说的资源包括页面的HTML, 图片,文件等等. 使用缓存主要有2大理由: 减少响应延迟,让页面显示更快:因为缓存比源服务器离客户端更近, 如果直接从缓存而不是源服务器响应客户的请求,耗时更少,让网站看上去响应更快: 减少网络带宽消耗:当副本被重用时,减少了从源服务器获取资源的次数,从而减少带宽消耗. 缓存如何工作? 所有的缓存都遵循以下基本规则 保留

Java 中常用缓存Cache机制的实现

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 缓存主要可分为二大类: 一.通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式: 二.内存缓存,也就是实现一个类中静态Map,对这个Map进行

Java -- 常用缓存Cache机制的实现 -- 艺多不压身

常用缓存Cache机制的实现 缓存,就是将程序或系统经常要调用的对象存在内存中,以便其使用时可以快速调用,不必再去创建新的重复的实例. 这样做可以减少系统开销,提高系统效率. 缓存主要可分为二大类: 一.通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式 二.内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查. 啦啦啦