关联集缓存低估命中率

时间:2015-12-02 22:14:09

标签: c++ arrays caching

我试图实现一个使用最近最少使用的替换技术的集合关联缓存。到目前为止,我的代码低估了缓存命中量,我不知道为什么。下面发布的是我的函数setAssoc,它接受一个表示缓存关联性的int值,以及一系列数据访问对的向量。

该函数使用两个2D数组,一个用于存储缓存块,另一个用于存储" age"缓存中每个块的。

对于这个特定的实现,可以不担心标记位或任何这种性质的东西;简单地使用地址除以块大小就足以确定块号,然后使用块数模数来确定设置数就足够了。

对于为什么我可能无法准确预测正确的缓存命中数量的任何见解表示赞赏!

document.getElementsByClassName("Post")[0].innerHTML

1 个答案:

答案 0 :(得分:0)

不确定这是否是此代码中的唯一问题,但您似乎在年龄和路数之间感到困惑。通过分配if(!hit){ for(int j = 0; j < associativity; j++){ //loop to find the least recently used block if(age[setNum][j] > maxAge){ maxAgeWay = j; maxAge = age[setNum][j]; }//end if }//end for int j cache[setNum][maxAgeWay] = blockNum; age[setNum][maxAgeWay] = 0; } ,您可以在年龄变量中添加任意路径号(这将干扰查找LRU方式)。然后,您将其用作方式索引。

我建议将其拆分为2个变量:

def function(aList):
    myList = ['hello', 'good', 'what', 'tree']
    return [str(a) + b for a, b in zip(aList, myList)]

(当然正确的初始化和绑定检查)