Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 算法LRU,实现该算法需要多少位?_Algorithm_Cpu Cache_Lru - Fatal编程技术网

Algorithm 算法LRU,实现该算法需要多少位?

Algorithm 算法LRU,实现该算法需要多少位?,algorithm,cpu-cache,lru,Algorithm,Cpu Cache,Lru,我有一个关于LRU算法的小问题。 如果您有一个包含四个块的缓存,那么实现此算法需要多少位?假设您指的是一个四路集关联缓存: “完美”的LRU本质上是按照使用顺序为每一行分配一个精确的索引。你也可以把它看作是一个“时代”。因此,4个元素中的每一个都需要一个2位的索引(因为我们需要计算4个不同的年龄),以LRU顺序说明其位置-这意味着每组缓存有2位*4种方式。 在n种方式的一般情况下,每行需要log2(n)位,或每套需要n*log2(n)位 顺便说一句,有更便宜的方法可以达到几乎LRU的行为,请参见

我有一个关于LRU算法的小问题。
如果您有一个包含四个块的缓存,那么实现此算法需要多少位?

假设您指的是一个四路集关联缓存:
“完美”的LRU本质上是按照使用顺序为每一行分配一个精确的索引。你也可以把它看作是一个“时代”。因此,4个元素中的每一个都需要一个2位的索引(因为我们需要计算4个不同的年龄),以LRU顺序说明其位置-这意味着每组缓存有2位*4种方式。
在n种方式的一般情况下,每行需要log2(n)位,或每套需要n*log2(n)位


顺便说一句,有更便宜的方法可以达到几乎LRU的行为,请参见,例如,在您的情况下,整个集合只需要3位(或者一般情况下:
#ways-1

每个集合的最小位数是上限(log2(N!),其中N是通道数

通过注意到MRU块(A)可以是四个块中的任意一个,几乎MRU块可以是其余三个块(B)中的任意一个,可以很容易地看出这一点∈ {0,1,2,3}和B≠ A) ,几乎LRU块只能是剩余两个块(C)中的一个∈ {0,1,2,3}和C≠ A和C≠ B) ,对于LRU块,只有一个块可用。因此,总的可能状态数是这些独立状态数的乘积,即4!(或者对于一般情况N!)

B位可以编码2B个状态,因此B必须大于或等于log2(状态的数量)。对于四路关联性的24种状态,需要5位

(增加位数可能会简化用于管理此信息的状态机,因此所需的最小位数可能与实际实现中使用的实际位数不匹配。)

如前所述,树伪LRU(维护单位/双向LRU选择的树)只需要N-1位。这种pLRU的实现相对简单,因此即使在4路关联(其中只保存了两个存储位-3位对5位)的情况下,这种形式的pLRU也很有吸引力


(在8路关联性下,真正的LRU需要16位状态,而树pLRU只需要7位。显然,在更高的关联性下,真正的LRU变得更昂贵,但在简化最坏情况下的执行时间分析方面可能仍然值得,并且它已被选为一些完全关联TLB的替换策略。)

有一个很好的幻灯片平台,介绍各种页面替换方案。它还很好地解释了使用mxm矩阵的LRU实现。

在N路集合关联缓存结构中,特定内存块可以放置在缓存线中N个集合中的任意一个集合中。因此,对于一个特定的缓存线,如果有N个集合可以放置一个块,那么将有N个!可能排序的排列

更准确地说,有N个计数器(缓存线中N个集合中的每个集合对应一个)。每当发生命中/未命中时,这些计数器中的值都会更改,并根据以下约定进行设置:计数器值“0”将表示使用最少的块,计数器值“N-1”表示最近使用的块


由于缓存线中的每个计数器的大小取决于行中的集合数(N),因此计数器值的范围为0到N-1。因此,每个计数器将是LogN位。一行中有N个集合,因此每个缓存线将相应地具有NLogN位

块的大小是多少?您可能应该提供一个简短的摘要,而不是链接。你的答案可能会在几年后被其他试图解决这个问题的人(通过谷歌)找到,但这个链接可能早就被破坏了。