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