簡體   English   中英

是否可以檢查變量是否位於 L1/L2/L3 緩存

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM