Аномалії кешування FIFO


13

Це подальший виклик із цього , якщо ви збентежені, спочатку перевірте це.


По-перше, нехай - кількість кешу, пропускає послідовність s доступу до ресурсів, припускаючи, що наш кеш має ємність k і використовує схему викидання «перший-у-перший-вихід» (FIFO), коли вона заповнена.m(s,k)sk

Тоді, задавши співвідношення , поверніть не порожню послідовність ресурсів, що отримує доступ s таким чином, що існує k > j з m ( s , k ) r m ( s , j ) .r>1sk>jm(s,k)rm(s,j)

Простий англійською мовою побудуйте послідовність доступу до ресурсів таким чином, щоб було два розміри кешу, де більший кеш має (принаймні) r разів більше кешу, якщо він використовується для вирішення s .srs

Прикладом для , правильним висновком є ​​послідовність ( 3 , 2 , 1 , 0 , 3 , 2 , 4 , 3 , 2 , 1 , 0 , 4 ) , оскільки це спричиняє 9 пропусків кеша для розміру кешу 3 , але 10 промахів для кешу розміром 4 .r=1.1(3,2,1,0,3,2,4,3,2,1,0,4)93104

Не має значення, в якій послідовності ви повернетесь, якщо вона відповідає вимогам.


Виграє найкоротший код у байтах.


Фонове читання: Аномалія
Беладі

Це може бути лише виснаження, але це завдання мені не зовсім зрозуміло; ви могли б надати відпрацьований приклад та ще пару тестових випадків?
Кудлатий

@Shaggy Перейдіть на інший виклик та ознайомтесь із попереднім коментарем. Суть у тому, що кеш FIFO може погіршитися, оскільки він стає більшим для деяких серій запитів.
orlp

Відповіді:


7

Мова Вольфрама (Mathematica) , 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

Як?

Припустимо ситуацію, коли у нас є дві ємності кеша, 3і 4.

Крім того , скажімо, 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}та закінчувати будь-яке відношення.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.