while(n--)
{
asm ("PLD [%0, #32]"::"r" (src));
*dst++ = *src++;
}
對于這個回圈(n=1280*1280 ), 編譯時加了-fprefetch-loop-arrays 選項,并未起到網上所說的提速的作用,請問如何才能正確使用預取,預取是否真的提前把記憶體搬運到cache中,迷惑Ing...
uj5u.com熱心網友回復:
試試:*dst++ = *src++;
asm ("PLDW [%0, #32]"::"r" (dst));
asm ("PLD [%0, #32]"::"r" (src));
#32還是#64取決于cache line大小,一般64位元組或者32位元組,需要查一下具體處理器手冊
uj5u.com熱心網友回復:
pldw不支持,但是pld預取src至少可以減少src的cache冷miss吧。。
難道是執行asm陳述句的開銷大于用預取的節省的時間?
uj5u.com熱心網友回復:
預取放在后面轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/52671.html
標籤:匯編語言
