FIFO缓存异常


13

这是从随访挑战这一个,如果你困惑,请首先检查一出。


首先,假设为高速缓存未命中的次数,假设我们的高速缓存具有容量k并在充满时使用先进先出(FIFO)弹出方案,那么资源访问序列s就会丢失。m(s,k)sk

然后给定的比率,返回资源的访问的一个非空序列小号使得存在ķ > Ĵ小号ķ [R 小号Ĵ r>1sk>jm(s,k)rm(s,j)

用简单的英语,构建一个序列资源的访问,从而有二级缓存的大小,其中较大的高速缓存有(至少)[R以上用于解决在高速缓存未命中小号srs

为一个例子,有效输出是序列3 2 1 0 3 2 4 3 2 1 0 4 ,因为它会导致9个为高速缓冲存储器大小的高速缓存未3,但是10次未命中,高速缓存大小为4r=1.1(3,2,1,0,3,2,4,3,2,1,0,4)93104

只要满足要求,返回什么顺序都没有关系。


以字节为单位的最短代码获胜。



可能只是筋疲力尽,但是这个挑战对我来说并不完全清楚。您能否提供一个可行的示例以及更多测试用例?
粗野的

@Shaggy Go查看其他挑战,以及其他评论的背景知识。问题的关键在于,FIFO高速缓存可能会变得更糟,因为它对于某些系列的请求会变得更大。
orlp

Answers:


7

Wolfram语言(数学)124个 113 101字节

Flatten@{s=⌈2#⌉;q=Range[r=2s+1];g=Mod[q s-s,r];{Sort@g[[#+1;;]],g[[;;#]]}&~Array~r,Table[q,s^3]}&

在线尝试!

注意:TIO输出不是实际的列表,因为它会很长。TIO上的包装器功能可告诉您两个缓存容量的页面错误数。

有关实际列表:在线尝试!

相关:arXiv:1003.1336

怎么样?

假设有两个缓存容量,34

另外,假设3-cache已{4, 2, 5}分页,4-cache已{5, 4, 3, 2}分页。然后,让我们尝试分页{1, 2, 3, 4, 5, 1, 2, 3, 4, 5}

page  3-cache   4-cache
      {4,2,5}  {5,4,3,2}
  1   {1,4,2}  {1,5,4,3}
  2   {1,4,2}  {2,1,5,4}
  3   {3,1,4}  {3,2,1,5}
  4   {3,1,4}  {4,3,2,1}
  5   {5,3,1}  {5,4,3,2}
  1   {5,3,1}  {1,5,4,3}
  2   {2,5,3}  {2,1,5,4}
  3   {2,5,3}  {3,2,1,5}
  4   {4,2,5}  {4,3,2,1}
  5   {4,2,5}  {5,4,3,2}

3-cache有5个页面错误,而4-cache有10.我们也回到了我们原来的状态。

在这里,如果我们重复分页{1, 2, 3, 4, 5},我们将渐近地达到的比率2

我们可以将此现象扩展到更高的缓存容量,以便我们可以分页{1, 2, 3, ... , 2n + 1}并以任何比率结束。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.