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)≥r⋅m(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.


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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.