2.3 Why Index-Aware

本文探讨了在N-Ways Set-Associative缓存中,CPU如何选择Cache集合,重点在于Bit Selection和Hash算法。由于多数程序的Spatial Locality特性,单纯随机选择可能导致Cache效率下降。文章介绍了Bin Index和Offset Index Aware内存分配算法,以减少Cache冲突和提高利用率。这些算法在不同操作系统和微架构中的应用和效果进行了比较,强调了在寻找最优映射策略的同时,需要考虑应用场景的广泛适应性。
摘要由CSDN通过智能技术生成

N-WaysSet-Associative方式的Cache中,CPU如何选用函数f映射Cache中的Set是一个值得讨论的话题。其中最常用的算法是Bit Selection。如23所示,CPU使用Bits 12~6选择一个合适的Set。此时f(r(i)) = Bits 12~6

这是一种最快,最简洁的实现方式,使用这种方法带来的最大质疑莫过于Set的选择不够随机。历史上曾经有人试图使用某些pseudo-random算法作为函数f,但是需要明确的是在Set Selection中,严格意义上的Random算法并不可取。

一是因为在SiliconDesign中,很难在较短时间内产生一个随机数,即便使用最常用的LFSR(Linear Feedback ShiftRegister)机制也至少需要一拍的延时,而且也并不是真正随机的。二是因为多数程序具有Spatial Locality特性,依然在有规律地使用Cache,采用严格意义的Random很容易破坏这种规律性。

在许多实现中,SetSelection时选用的pseudo-random算法等效于Hash算法,这些Hash算法多基于XOR-Mapping机制,需要几个XOR门级电路即可实现。诸多研究表明[23][28][29],这种算法在处理Cache Conflict Miss时优于Bit Selection

在已知的实现中,追求HitTimeL1 Cache很少使用这类Hash机制,但是这些方法依然出现在一些处理器的MLCLLC设计中,特别是在容量较大的LLC层面。在MLC层面上,多数微架构使用的Set Selection的实现依然是简单而且有效的Bit Selection方式。

BitSelection方式所带来的最大问题是在选择Set时,经常发生碰撞。这种碰撞降低了Cache的整体利用率,这使得系统软件层面在使用物理内存时需要关注这个碰撞,也因此产生了与物理内存分配相关的一系列Index-Aware算法。

操作系统多使用分页机制管理物理内存。使用这种机制时,物理内存被分为若干个4KB[1]大小的页面。当应用程序需要使用内存时,操作系统将从空闲内存池中选用一个未用物理页面(Available Page Frame)。选取未用物理页面的过程因操作系统而异。

有些操作系统在选用这个物理页面时,并没有采用特别的算法,对此无所作为。在很多时候,这种无为而治反而会带来某种随机性,无心插柳柳成荫。对于Cache使用而言,这种无所作为很难带来哪怕是相对的随机。

精心编制的程序与随机性本是水火难容,而且这些程序一直在努力追求着时间局部性和空间局部性,最大化地利用着Cache。这使一系列Index-Aware类的Memory分配算法得以引入。在介绍这些Memory分配算法之前,我们首先介绍采用分页机制后,一个进程如何访问Cache,其示意如28所示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值