Multiperspective(多视角) Reuse Prediction

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/shuiliusheng/article/details/83023041

Multiperspective(多视角) Reuse Prediction

  1. 通过使用多个能够展示程序和存储器行为的特征(七个参数化特征)来从多个视角对LLC中的缓存块的未来重用进行预测。利用预测的结果,设计三种cache的管理策略:block placement,replacement,bypass

  2. 真阳性率:样本实际为正样本,此时预测为正样本的概率

    假阳性率:样本实际为负样本,此时预测为正样本的概率
    在这里插入图片描述

  3. LLC的bypass优化:不会被重用的cache block,将直接绕过core cache,bypass到core

  4. Multiperspective Reuse Predictor:一个散列感知器预测器,由多种特征集合索引,并且使用感知器学习的修改版本进行训练,允许通过变量的关联性(variable associativities)来参数化特征。

  5. SDBP(Sampling Dead Block Prediction)

    • 利用一个采样器保存LLC中部分cache set的tags。当LLC一个在采样器中存在的cache set被访问,采样器中的相应的cache set也会认为被访问了。
    • 当一个属于一个cache set的block被访问时,并且这个cache set在采样器中存在,这条存储指令的PC将被hash到一个tables中,这个tables中的counters递减。当类似的block被替换出去时,最后一次访问该block的PC将会被hash到tables中,此时counter递增。
    • 当LLC中其他不属于采样器的block被访问时,预测器会根据存储指令的PC hash到tables中,然后根据计数器值和设定的阈值,来判断当前要访问的block是否认为是dead
    • 采样器中的管理方法是LRU,只是此时相连度相对于LLC会变小
  6. Perceptron Learning for Reuse Prediction

    • 感知器的输入特征:PC,一些最近访问的PC,两个引用块的标记的不同内容
    • 每一个特征都会被hash,然后用于索引对应的权值表
    • 当采样的block被重用或者替换了,相对应的权值根据更新规则就会分别减少或者增加
    • 每个block都需要有一个额外的标记位,用于指示是否位dead
  7. 不同的特征通过hash或者简单的组合形成table的索引可能会产生干扰问题,同时也会增加training time,因此论文的解决方式是,不同的特征都有不同的table

  8. 预测器如何结合多个特征

    • 每个特征索引一个不同的表,表项是一个6位的整数,代表权值
    • 权值会被求和,然后作为预测值使用,帮助cache的管理:bypass,placement,replacement
    • 使用一个类似于SDBP中的采样器,使用LRU管理。每个会访问采样器的存储请求都会训练预测器
    • 训练时,不同的表更新情况不同,一个block可能在一个table中认为时dead,而在另一个table中认为是live的
    • 权值的大小与权值对应的特征到该访问的block的reuse情况的相关性成比例,权值越大,意味着reuse的可能性越大
  9. 预测器选取的特征(七个特征及其参数)

  • 每个特征是1位到8位的向量
  • 每个特征的第一个参数:采样器中LRU stack中的位置(A), 超过这个位置认为block是dead
  • 每个特征的最后一个参数:Boolean(X),如果为真,将当前存储器指令的PC和特征位进行异或,以利用两者的相关性
  • 特征1:PC(A, B, E, W, X)。代表着第W个最近的存储器访问指令的PC的B到E位
  • 特征2:address(A, B, E, X)。代表着访问的存储器地址的B到E位
  • 特征3:bias(A,X)。初始为0。如果X为false,则此特征为一个简单的全局计数器。当block超过A的位置递增,在A之下时递减。如果X为true,此特征为一个传统的基于PC的预测器,例如SDBP/SHiP,跟踪给定的PC产生的dead/live block的趋势
  • 特征4:burst(A,X)。一位。当且仅当此次访问的是一个最近使用的block时,此位设置为1
  • 特征5:insert(A,X)。一位。当且仅当此时访问是一个插入操作,即block由于cache miss,正在放入cache中。这种行为和重引用并不相同
  • 特征6:lastmiss(A,X)。一位。当且仅当对于cache set的最后访问未命中时为真。用于区分hot cache set和cold cache set
  • 特征7:offset(A, B, E, X)。该特征表示在64B的block大小中(1-6bits),该存储器访问的块偏移的B到E位,用于指示对象的哪些字段正在被访问
  1. 预测器采用的采样器:类似于SDBP,LLC中的一小部分set会被设计为采样sets。
  • 每个被采样的set,相应的部分标记和其他元数据集都会保存在采样器中。
  • 采样器以LRU替换策略管理。每次当一个被采样的set被访问时,相应的在采样器中的set也会被访问,同时用于训练预测器
  • 采样器中的每个set有18路(论文认为当路数超过18时,开销大于回报)。每个set中的表项的组成部分:
    • block的部分tag,用于标识block。此时不一定要正确的对应上(不需要全部的tag)
    • 一个9位的有符号整数,代表这个block最近计算的可信值
    • 索引向量,用于访问预测表计算当前的可信值
    • 四位,用于存储block在当前LRU stack中的最新位置
  1. 预测器的组织形式:

    • 预测器被组织为一组独立索引的表,每个特征对应一个表。每个表中只有一些很少的权重值
    • 不同的特征通过计算,索引位数也会不相同,因此每个表的大小可能不一样
    • 每个权重是一个6位的有符号整数,-32到31(基于精度和面积开销的考虑)
  2. 预测过程:当LLC有存储访问时,预测器开始工作。每个特征会生成一个index,在每个不同的table中找到对应的权值,权值会被求和,然后得到一个可信值

    • 如果发生cache miss,此时可信值被用于bypass或者placement block。根据可信值的不同,placement的位置也不同,位置代表着block的reuse的可能性
    • 如果发生cache hit,如果可信值超过了某个阈值,该块不会上升到下一级cache,而是保持之前占据的相同的最新位置
  3. 预测器的训练过程

    • training on block placement or reuse:当一个block被放入了采样器,或者采样器中的block被重用,此时每个表都会被训练。假设重新的block在LRU stack中新的位置是p,如果p小于特征Fi的A参数,则Fi对应的表中的权值会增加
    • training on block demotion:因为重新的block的位置改变,意味着其他在其之后的block的位置会降低。因此每个块都要更新对应的权值
    • complexity of training:由于一个块的位置发生变化而需要更新权值的块只有一个,因为采样器的管理策略为LRU
  4. 寻找良好特征和参数的方法:大量随机选择特征,使用快速模拟器评估,然后选择最佳的特征集进行进一步的细化。使用爬山算法,改变其中一个特征为随机生成的特征,根据结果判断是否保留这个新生成的特征,直到算法开始收敛。

猜你喜欢

转载自blog.csdn.net/shuiliusheng/article/details/83023041