2013-10-26 258 views
2

這可能是一個非常普遍和簡單的問題,但我需要一些關於我剛剛從高速緩存基準測試代碼中獲得的曲線的解釋。這裏的目標是找到緩存行大小。我用這裏的代碼: (h ** ps://github.com/jiewmeng/cs3210-assign1/blob/master/cache-l1-line.cpp)高速緩存行大小

這是我已經獲得的曲線從運行我的機器上的代碼(MacBook Pro與核心i7 - 高速緩存行大小是64字節 - L1數據高速緩存是32KB)。

The Time vs different stride size curve

  • 我覺得峯值發生在128個字節,而不是64個字節。如果這是真的,我想知道爲什麼?
  • 爲什麼時間縮短爲512字節?

更新:

我也跑一個代碼來確定L1和L2高速緩存的大小。這裏只是爲了記錄數據。如您所見,32KB(L1緩存大小)和256KB(L2緩存大小)中有兩個峯值。

問:

我想知道是否有什麼辦法可以找到L3共享緩存的大小。

Cache size figure

感謝

回答

1

我猜的128B峯很可能是由於空間的預取。您可以在英特爾的Optimization guide看到,根據第2.1.5.4

此預取努力完成每一個高速緩存行取到二級緩存,它完成了一個128字節對齊塊一對線

它不會是一個乾淨的跳躍,因爲這個預取並不總是觸發,甚至當它發生時,它只會預取到L2中,但它比從內存中獲取要好得多。爲了確保這種情況,可以禁用預取(通過BIOS或其他方式,儘管有些系統可能不支持),然後再次檢查。

至於L3的大小 - 你沒有指定你的確切模型,但我猜你有超過4M L3 - 只要保持曲線進行,看看它是否跳轉。

編輯

只注意到另外一件事 - 你的K *我的表達可能溢出INT在最大範圍內,這意味着你的訪問模式可能不會像你期望的循環。

1

我BusSpeed基準旨在以不同的步伐,以確定緩存大小和性能,展現突發讀巴士:

http://www.roylongbottom.org.uk/busspd2k%20results.htm

以下是在酷睿i7結果,8 MB三級:

Memory Reg2 Reg2 Reg2 Reg2 Reg1 Reg2 Reg1 Reg2 Reg1 Reg8 
    KBytes Inc64 Inc32 Inc16 Inc8 Inc4 Inc4 Inc4 Inc4 Inc8 Inc8 
    Used MB/S MB/S MB/S MB/S MB/S MB/S MB/S MB/S MB/S MB/S 

     4 10025 10800 11262 11498 11612 11634 5850 11635 23093 23090 
     8 10807 11267 11505 11627 11694 11694 5871 11694 23299 23297 
    16 11251 11488 11620 11614 11712 11719 5873 11718 23391 23398 
    32 9893 9853 10890 11170 11558 11492 5872 11466 21032 21025 
    64 3219 4620 7289 9479 10805 10805 5875 10797 14426 14426 
    128 3213 4805 7305 9467 10811 10810 5875 10805 14442 14408 
    256 3144 4592 7231 9445 10759 10733 5870 10743 14336 14337 
    512 2005 3497 5980 9056 10466 10467 5871 10441 13906 13905 
    1024 2003 3482 5974 9017 10468 10466 5874 10467 13896 13818 
    2048 2004 3497 5958 9088 10447 10448 5870 10447 13857 13857 
    4096 1963 3398 5778 8870 10328 10328 5851 10328 13591 13630 
    8192 1729 3045 5322 8270 9977 9963 5728 9965 12923 12892 
    16384 692 1402 2495 4593 7811 7782 5406 7848 8335 8337 
    32768 695 1406 2492 4584 7820 7826 5401 7792 8317 8322 
    65536 695 1414 2488 4584 7823 7826 5403 7800 8321 8321 
131072 696 1402 2491 4575 7827 7824 5411 7846 8322 8323 
262144 696 1413 2498 4594 7791 7826 5409 7829 8333 8334 
524288 693 1416 2498 4595 7841 7842 5411 7847 8319 8285 
1048576 704 1415 2478 4591 7845 7840 5410 7853 8290 8283 

        End of test Fri Jul 30 16:44:29 2010 

    CPUID and RDTSC Assembly Code 
    CPU GenuineIntel, Features Code BFEBFBFF, Model Code 000106A5 
    Intel(R) Core(TM) i7 CPU   930 @ 2.80GHz Measured 2807 MHz 
相關問題