cpu-cache

    12熱度

    3回答

    CUDA 2.0設備上是否有任何方法來禁用L1緩存僅適用於一個特定變量? 我知道在編譯時可以禁用L1高速緩存,爲所有內存操作添加標記-Xptxas -dlcm=cg至nvcc。 但是,我想只在特定全局變量的內存讀取時禁用高速緩存,以便所有剩餘的內存讀取通過L1高速緩存。 基於我在網上完成的搜索,可能的解決方案是通過PTX彙編代碼。

    10熱度

    1回答

    編輯:ST不允許爲新手發佈兩個以上的鏈接。抱歉缺少參考。 我試圖減少C應用程序檢測全局狀態變化的性能相關的鎖定開銷。儘管最近我在這個主題上閱讀了很多內容(例如H. Sutter等等),但我對自己的實施沒有信心。我想使用CAS類似的操作和DCL的組合來檢查全局變量,從而避免虛假共享,以便從多個線程之間共享的數據更新線程本地數據時檢查全局變量的高速緩存行對齊。我的信心不足的主要原因是 我無法解釋在Ty

    3熱度

    1回答

    我試圖根據的/ proc/cpuinfo中決定處理器關聯性規則爲我的申請,我的RedHat Linux上showes processor : 0 to 47 , means server has 48 processor unit physical id : 0 to 3 , means server has 4 cpu sockets cpu cores : 6 , means each

    1熱度

    1回答

    有沒有什麼方法可以保證你只訪問映射到n路組關聯緩存中同一組的塊,如果你不知道關聯性還是緩存本身的大小?我知道,無論是關聯程度還是緩存大小,都可以做到這一點,但在這種特殊情況下,我所得到的只是緩存大小的低估值。我想了一會兒,我開始相信這是不可能的,但我並不確定。 爲了這個問題,請假設無法通過任何方式獲得關聯性級別或緩存大小。 原因是我試圖定量確定關聯的級別,但是我用來定量確定緩存大小的算法只給出了兩

    1熱度

    1回答

    我想弄清楚如何計算數組缺失率。我有答案,但我不明白答案是如何得出的。 我有以下代碼: int C[N1][N2]; int A[N1][N3]; int B[N3][N2]; initialize_arrays(A, B, C, N1, N2, N3); for(i=0; i<N1; ++i) for(j=0; j<N2; ++j) for(k=0; k<N3,

    3熱度

    2回答

    一些體系結構有一個「預取寫入」指令,用於向CPU表明在實際執行操作之前將要寫入內存位置。我明白,在多核機器上,核心可以使用它作爲暗示,它應該嘗試現在獲得給定高速緩存行的所有權,以便稍後可以更快地寫入該位置。但是,AFAICT應該只在兩個核心有可能競爭緩存線的情況下才起作用。對於僅由單個內核讀取和寫入的高速緩存行,預取寫入是否有用?

    1熱度

    2回答

    在Java中,所有線程都使用相同的堆。如果一個線程正在將操作緩存到堆中,何時它會沖刷堆? 我讀過這麼多的帖子,但無法找到答案。 謝謝。

    2熱度

    2回答

    我在我的PC上使用Ubuntu 12.04和Intel i5 450。 我使用了兩種方法來獲得1級指令緩存的緩存行大小。 但結果不同。 [email protected]:~/ws$ getconf LEVEL1_ICACHE_LINESIZE 32 [email protected]:~/ws$ cat /sys/devices/system/cpu/cpu0/cache/index1

    5熱度

    1回答

    我對使用ARM cortex A8中的PLD指令有一些疑問。由於我在循環內部使用指令,因此存在訪存限制內存的可能性。我的疑問是,這是否會導致分段錯誤。我在ARM manual which states that 讀取由於PLD指令被緩存的所有水平的任何其它負載指令處理中,PLD指令遵循標準的數據依賴關係的規則和程序的驅逐。在PLD執行的任何階段,PLD指令在地址轉換錯誤,緩存命中或中止時被忽略。

    2熱度

    2回答

    你能幫我找出是否需要更長的時間才能完成緩存寫入,當有更多的內核/緩存持有該行的副本時。 我也想測量/量化它實際需要多長時間。 我找不到對谷歌有用的東西,我有麻煩了測量它自己加解釋什麼,我衡量的,因爲很多事情可以在一個現代的處理器發生。 (重新排序,預取緩衝和上帝知道什麼) 詳情: 我測量它的基本流程大致如下: write soemthing to the cacheline on processo