- 首页 > 睿知 > it技术 > >
/**
* 计算机体系结构(3)
*#如果缓存中找不到某个字,就必须从一个低层次结构上的存储区访问这个字
*然后放入缓存中继续执行;
*
*#缓存只读数据-缓存和存储器中的副本是一致的;
*#换存只写数据
*缓存好存储器中的副本保持一直的策略
*1、直接写入缓存
*更新缓存中的项目,直接写入主存储器,并对其更新
*【redis 一致性】 redis更新- 更新db db失败删除redis
*
*2、回写缓存
*仅仅更新缓存中的副本数据
*--
*这两种策略都是将数据写入缓冲区之后就可以使用这些数据
*不需要等到将全部数据写入主存储器之后的全部延迟时间
*
*#高缺失率的 4C 模式分类
*强制 Compulsory
*对一个数据块的第一次访问,可能这个数据块不存在缓存中
*必须将其调入缓存个中;强制缺失是无法避免的;
*
*容量 Capacity
*如果缓存不能包含程序运行期间的所有的块
*就会因为有些块被放弃,之后再次被调入,从而导致容量缺失
*
*冲突 Conflict
*如果块放置位置不是全相连的,如果多个块映射到一个块的组中
*对不同的块访问混杂在一起,一个块可能被放弃之后再次被调入
*从而发生冲突缺失
*
*一致性 Coherency
*缓存刷新是为了保证多核处理器中的缓存一致性
*
*#----------------------
*#缓存优化的基本方法
*1、增大块以降低缺失率
*利用空间局域性,增大了块的大小
*使用较大块可以较少缺失,但也增加了块的缺失代价
*较大块减少了块的标记数目,他们可以略微降低静态功率。
*选择块的大小——尺寸问题
*
*2、增大缓存以降低缺失率
*减少缓存缺失有效的办法是——增大缓存容量
*缺点——延长较大缓存存储器的命中时间,增加成本和功效
*较大缓存会同时增加静态和动态功率
*
*3、提高相联程度以降低缺失率
*提高相联程度可以较少冲突缺失
*较大的相联程度是以延长命中时间为代价的
*相联程度也会增大功耗
*
*4、采用多级缓存以减低缺失代价
*加快缓存命中率,跟上处理器的高频率时钟速度?
*加大缓存,缩小处理器访问和主存储器访问之间的差距?
*在原缓存和存储器之间加入另一个缓存可以降低平衡其中的难度 !
*第一级别缓存
*可以非常小,可以快速跟上处理器快速时钟频率
*
*第二级别缓存
*缓存可以非常大,足以收集容纳许多本来要对主存储器进行访问
*
*5、为读取缺失指定高于写入操作的优先级,以降低缺失率
*在读取缺失时候检查写缓冲区的内容
*如果没有冲突,如果存储器系统可用
*则在写入操作系统之前发送读取请求会降低缺失代价
*大多数处理器为读取指令的优先级高于写入操作
*
*6、在缓存索引期间避免进行地址转换-缩短命中时间
*缓存必须妥善应对从处理器虚拟地址到访问存储器的物理地址之间的转换
*why?
*常见的方法是使用一种页偏移地址索引缓存——虚拟地址和物理地址中的相同位置
*这种虚拟索引/物理标记方法增加了某些系统的复杂程度以及对L1缓存大小和结构的限制
*
*/
推荐阅读