避免數據快取未命中的預取建議

XSC_PLD_Advice

解釋

如果要載入的數據不在數據快取中,載入指令產生的延遲會長相當多。數據快取未命中事件過多將導致效能急劇下降。使用 PLD 指令可以預先獲取所需的數據,有效地消除數據快取未命中現象。

建議

連續發出 4 次以上的載入容易產生數據快取未命中。

指定寫回快取時,連續發出 8 次以上的儲存容易產生數據快取未命中。

如果兩條載入指令的記憶體地址跨越快取線(32 個位元組),並且這兩條載入指令相鄰,則很可能產生數據快取未命中。

備註

示例 1

LDR  R0, [R1, #0x0]  

LDR  R2, [R1, R3]  

LDR  R4, [R1, #-0xef1]

LDR  R6, [R1], R5

LDR  R7, [R1, #-0xfff]              ;; XSC_SUCC_LoadStore, XSC_PLD_S1

示例 2

STR  R0, [R1, #0x0]  

STR  R0, [R1, #0xef1]  

STR  R0, [R1, #-0xef1]

STR  R0, [R1, #0xfff]

STR  R0, [R1, #0xfff]

STR  R0, [R1, R2]

STR  R0, [R1, -R2]

STR  R0, [R1], -R2, ROR #30

STR  R0, [R3, R4, LSL #30]          ;; XSC_SUCC_LoadStore, XSC_PLD_S2

示例 3

LDR  R0, [R1, #0x0]  

LDR  R2, [R1, #0xef1]               ;; XSC_PLD_S3

示例 4

LDC  p6,C4,[R0,#0x1*4]

ADD  r2, r3, r4

LDC  p6,C6,[R0,#0xe1*4]             ;; XSC_PLD_S3

示例 5

LDC  p6,C4,[R0,#0x1*4]

ADD  r0, r3, r4

LDC  p6,C6,[R0,#0xe1*4]    

//not showing XSC_PLD_S3 for base register R0 changed

示例 6

LDR  R0, [R1, #0x0]  

LDR  R2, [R1, #0xef1]  

LDR  R3, [R1, #-0xef1]

LDR  R4, [R1, #0x0]

PLD  [R1, #0xfff]                  ;; XSC_SUCC_LoadStore

//not showing XSC_PLD_Advice for PLD instruction