FIFO anomalías de caché

13

Este es el desafío de seguimiento de este , si estás confundido, échale un vistazo primero.


En primer lugar, permiten es el número de caché se pierde una secuencia s de accesos de recursos tendría asumir nuestra caché tiene la capacidad k y utiliza un primero en entrar, primero en salir esquema de eyección (FIFO) cuando está lleno.metro(s,k)sk

Entonces dado una relación , devolver una secuencia no vacía de recursos accesos s tal que existe k > j con m ( s , k ) r m ( s , j ) .r>1sk>jmetro(s,k)rmetro(s,j)

En la llanura Inglés, la construcción de una secuencia de recursos accede de modo que hay dos tamaños de caché en la memoria caché más grande tiene (al menos) r veces más errores de caché cuando se utiliza para la determinación s .srs

Un ejemplo para , una salida válida es la secuencia ( 3 , 2 , 1 , 0 , 3 , 2 , 4 , 3 , 2 , 1 , 0 , 4 ) , ya que causa 9 errores de caché para un tamaño de caché de 3 , pero 10 fallas para un tamaño de caché de 4 .r=1.1(3,2,1,0 0,3,2,4 4,3,2,1,0 0,4 4)9 93104 4

No importa qué secuencia devuelva, siempre que cumpla con los requisitos.


El código más corto en bytes gana.

orlp
fuente
Lectura de fondo: anomalía de
Bélády
Podría ser el agotamiento, pero este desafío no es del todo claro para mí; ¿podría proporcionar un ejemplo trabajado y un par de casos de prueba más?
Shaggy
@Shaggy Go echa un vistazo al otro desafío y la lectura de fondo del otro comentario. El quid es que un caché FIFO puede empeorar a medida que se hace más grande para algunas series de solicitudes.
orlp

Respuestas:

7

Wolfram Language (Mathematica) , 124 113 101 bytes

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

Pruébalo en línea!

NOTA: La salida de TIO no es la lista real porque sería muy larga. La función de contenedor en TIO le indica el número de fallas de página para dos capacidades de caché.

Para la lista actual: ¡ Pruébelo en línea!

Relacionado: arXiv: 1003.1336

¿Cómo?

Supongamos una situación en la que tenemos dos capacidades de caché, 3y 4.

Además, digamos que 3-cache se ha {4, 2, 5}paginado y 4-cache se ha {5, 4, 3, 2}paginado. Entonces, intentemos la paginación {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}

El 3caché tenía 5 fallas de página, mientras que el 4caché tenía 10. También volvimos a nuestro estado original.

Aquí, si repetimos la paginación {1, 2, 3, 4, 5}, alcanzaríamos asintóticamente la proporción de 2.

Podemos extender este fenómeno a mayores capacidades de caché para que podamos paginar {1, 2, 3, ... , 2n + 1}y terminar con cualquier relación.

JungHwan Min
fuente