執行緒特定性:TS
此事件統計以下失效的載入指令數:由於未遵循儲存至載入轉發的限制,而遇到記憶體順序緩衝區 (MOB) 重發的指令。有多種原因可能會導致 MOB 重發。此事件程式設計為統計以下載入導致的 MOB 重發:儲存至載入轉發過程被阻塞的載入。
英特爾(R) 奔騰(R) 4 處理器採用儲存至載入轉發技術,使得特定的記憶體載入操作(從上一個儲存操作剛修改過其數據的地址進行載入)不必等到數據寫入快取即可完成。儲存至載入轉發情況的成功與否會受到大小與對齊方面的限制。
未遵循儲存至載入轉發限制時,記憶體載入操作將發生暫停。
例如:
處理 32 位壓縮的 RGBA 顏色值時經常要執行的一項任務可能就會遇到此編碼缺陷。某些操作可能會產生新的紅色值,將這個 8 位值儲存到記憶體位置,然後讀回整個 32 位值。儲存較小的數據值,然後載入回包含所儲存數據的較大運算元時,會阻塞儲存至載入轉發。這是因為要載入的部分數據可能位於記憶體系統的任何地方(快取、DRAM)。
在本例中,要避免阻塞,請完成 32 位整數中所有四個顏色值的處理,然後將全部 32 位寫入記憶體。要啟用儲存至載入轉發,相關的載入操作所要載入的數據大小必須與前一個儲存的相同或更小一些,並且載入與儲存的起始地址必須相同。
在奔騰 4 處理器以及 P6 系列處理器上,通過改進應用程式的記憶體訪問模式,以遵循儲存至載入轉發限制,可以大幅提高效能。使用“英特爾編譯器”(5.0 或以上版本)或 Microsoft* Visual C++* 編譯器(7.0 或以上版本)可以消除許多儲存至載入轉發衝突的情況。
如需有關詳細資訊,請參閱最新處理器優化參考手冊。