執行緒特定性:AT-E SAAT_CR_ESCR1
此事件統計導致拆分載入的失效指令數。讀取數據值時,如果部分數據在一個快取線中,而另一部分數據在另一個快取線中,則此時會發生拆分載入。由於拆分載入會強制處理器分別讀取兩個快取線,然後將兩部分數據重新貼上起來,因此會降低效能。從兩個快取線讀取數據要比從一個快取線(即使數據未通過其它方式正確對齊)讀取慢幾倍。
通常情況下,編譯器會對齊數據,以免跨快取線邊界放置值。不過,如果將 C 或 C++ 指針的型別轉換(例如使用 SIMD 內部函式時)成更大數據大小的型別,或是以其它方式處理指針的地址,則跨越邊界的可能性會增大。對於日後要進行型別轉換,以便當作更大的值進行訪問的小數據值,可以使用 __declspec(align(n)) 屬性對齊它們的陣列或結構,從而降低發生拆分的可能性,也就是,數據聲明為某種型別時,然後您決定將它當作其它型別進行訪問,從而覆蓋預設的數據型別,此時編譯器會相信您,但它可能無法正常工作。如需有關使用此屬性的詳細資訊,請參閱編譯器文件。
在奔騰(R) 4 處理器上,每個一級數據快取線都包含 64 位元組的數據,因此每個快取線起始處的數據地址都是 64 的倍數。