Anomali cache FIFO

13

Ini adalah tantangan lanjutan dari yang satu ini , jika Anda bingung harap periksa yang pertama.


Pertama, mari menjadi jumlah cache misses urutan s dari akses sumber daya akan memiliki asumsi cache yang kami memiliki kapasitas k dan menggunakan (FIFO) skema ejeksi pertama-in-first-out ketika penuh.m(s,k)sk

Kemudian diberi rasio , kembalikan urutan sumber daya yang tidak kosong mengakses s sedemikian sehingga ada k > j dengan m ( s , k ) r m ( s , j ) .r>1sk>jm(s,k)rm(s,j)

Dalam bahasa Inggris biasa, buat urutan dari sumber daya mengakses sehingga ada dua ukuran cache di mana cache yang lebih besar memiliki (setidaknya) r kali lebih banyak cache yang hilang ketika digunakan untuk menyelesaikan s .srs

Contoh untuk , output yang valid adalah urutan ( 3 , 2 , 1 , 0 , 3 , 2 , 4 , 3 , 2 , 1 , 0 , 4 ) , karena hal itu menyebabkan 9 cache miss untuk ukuran cache dari 3 , tetapi 10 gagal untuk ukuran cache 4 .r=1.1(3,2,1,0,3,2,4,3,2,1,0,4)93104

Tidak masalah urutan apa yang Anda kembalikan, asalkan memenuhi persyaratan.


Kode terpendek dalam byte menang.

orlp
sumber
Bacaan latar belakang: Anomali
Bélády
Mungkin saja kelelahan, tetapi tantangan ini tidak sepenuhnya jelas bagi saya; dapatkah Anda memberikan contoh yang berhasil dan beberapa kasus uji lagi?
Shaggy
@Shaggy Go, periksa tantangan lainnya, dan bacaan latar belakang dari komentar lainnya. Intinya adalah bahwa cache FIFO bisa menjadi lebih buruk karena menjadi lebih besar untuk beberapa rangkaian permintaan.
orlp

Jawaban:

7

Bahasa Wolfram (Mathematica) , 124 113 101 byte

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

Cobalah online!

CATATAN: Output TIO bukan daftar yang sebenarnya karena itu akan sangat panjang. Fungsi wrapper pada TIO memberi tahu Anda jumlah kesalahan halaman untuk dua kapasitas cache.

Untuk daftar sebenarnya: Cobalah online!

Terkait: arXiv: 1003.1336

Bagaimana?

Mari kita asumsikan situasi di mana kita memiliki dua kapasitas cache, 3dan 4.

Juga, katakanlah 3-cache telah {4, 2, 5}paged, dan 4-cache telah {5, 4, 3, 2}paged. Lalu, mari kita coba paging {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}

The 3-cache memiliki 5 kesalahan halaman, sedangkan 4-cache memiliki 10. Kami juga kembali ke keadaan semula kami.

Di sini, jika kita mengulangi paging {1, 2, 3, 4, 5}, kita akan secara asimptot mencapai rasio 2.

Kami dapat memperluas fenomena ini ke kapasitas cache yang lebih tinggi sehingga kami dapat halaman {1, 2, 3, ... , 2n + 1}dan berakhir dengan rasio apa pun.

JungHwan Min
sumber