[英]Is it possible to check if a variable is located at L1/L2/L3 cache
眾所周知,在現代計算機體系結構中,存在L1/L2/L3緩存,可以提高程序的執行性能。
我的問題是我們是否可以知道一個變量在執行時是否被加載到 L1/L2/L3 緩存中?
我們知道我們可以像這樣在 C++ 中打印變量的地址: int i; cout << &i;
int i; cout << &i;
. 那么如果i
被加載到 L1 緩存中, &i
顯示哪種地址? L1緩存的地址還是RAM的地址?
在典型的 PC 中, &i
始終是 RAM 位置的地址。 這是因為緩存對程序員來說本質上是透明的。 它只是將包含在內存區域中的相同信息的副本存儲在 CPU 可以更快訪問的位置。 它不能直接作為內存位置尋址。
至於在代碼執行時變量是否“位於”緩存中,它肯定是。 當您嘗試訪問內存位置中的數據時,如果它不在緩存中,它將在您的請求被服務之前首先被帶入緩存。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.