Dị thường bộ nhớ cache


13

Đây là thử thách tiếp theo từ thử thách này , nếu bạn bối rối, vui lòng kiểm tra thử trước.


Đầu tiên, gọi là số lượng bộ nhớ cache bỏ lỡ một chuỗi truy cập tài nguyên sẽ cho rằng bộ đệm của chúng tôi có dung lượngm(s,k)sk và sử dụng sơ đồ tống xuất trước xuất trước (FIFO) khi đầy.

Sau đó được đưa ra một tỷ lệ , trả về một chuỗi không rỗng các nguồn truy cập s như rằng có tồn tại k > j với m ( s , k ) r m ( s , j ) .r>1Sk>jm(S,k)rm(S,j)

Trong tiếng Anh đơn giản, xây dựng một chuỗi nguồn truy cập để có hai kích thước bộ nhớ cache nơi bộ nhớ cache lớn hơn có (ít nhất) r lần nữa bỏ lỡ bộ nhớ cache khi sử dụng để quyết tâm s .SrS

Một ví dụ cho , một đầu ra hợp lệ là chuỗi ( 3 , 2 , 1 , 0 , 3 , 2 , 4 , 3 , 2 , 1 , 0 , 4 ) , vì nó gây ra 9 lỗi bộ nhớ cache cho kích thước bộ đệm của 3 , nhưng 10 nhớ cho kích thước bộ đệm là 4 .r= =1.1(3,2,1,0,3,2,4,3,2,1,0,4)93104

Không quan trọng bạn trả về trình tự nào, miễn là đáp ứng yêu cầu.


Mã ngắn nhất trong byte thắng.



Có thể chỉ là kiệt sức, nhưng thử thách này không hoàn toàn rõ ràng với tôi; bạn có thể cung cấp một ví dụ làm việc và một vài trường hợp thử nghiệm?
Xù xì

@Shaggy Đi kiểm tra thử thách khác và đọc nền từ nhận xét khác. Điểm mấu chốt là bộ đệm của bộ đệm có thể trở nên tồi tệ hơn khi nó trở nên lớn hơn đối với một số yêu cầu.
orlp

Câu trả lời:


7

Ngôn ngữ Wolfram (Mathicala) , 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]}&

Hãy thử trực tuyến!

LƯU Ý: Đầu ra TIO không phải là danh sách thực tế vì nó sẽ rất dài. Chức năng trình bao bọc trên TIO cho bạn biết số lỗi trang cho hai dung lượng bộ đệm.

Đối với danh sách thực tế: Hãy thử trực tuyến!

Liên quan: arXiv: 1003.1336

Làm sao?

Hãy giả sử một tình huống trong đó chúng ta có hai dung lượng bộ đệm 34.

Ngoài ra, giả sử 3-cache đã {4, 2, 5}phân trang và 4-cache đã {5, 4, 3, 2}phân trang. Sau đó, hãy thử phân trang {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}

Các 3-cache có 5 lỗi trang, trong khi 4-cache đã 10. Chúng tôi cũng quay trở lại tình trạng ban đầu của chúng tôi.

Ở đây, nếu chúng ta lặp lại phân trang {1, 2, 3, 4, 5}, chúng ta sẽ đạt được tỷ lệ bất thường 2.

Chúng tôi có thể mở rộng hiện tượng này lên dung lượng bộ đệm cao hơn để chúng tôi có thể trang {1, 2, 3, ... , 2n + 1}và kết thúc với bất kỳ tỷ lệ nào.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.