不同ARM的實(shí)現(xiàn)在存儲(chǔ)器指令取指時(shí)會(huì)相當(dāng)大的區(qū)別,因此強(qiáng)烈建議存儲(chǔ)器映射的I/O位置只用于數(shù)據(jù)的裝載和保存,不用與指令取指,任何依賴(lài)于從存儲(chǔ)器映射I/O位置取指的系統(tǒng)設(shè)計(jì)都可能難以移植到將來(lái)的ARM實(shí)現(xiàn)。
2. 對(duì)存儲(chǔ)器映射I/O數(shù)據(jù)訪問(wèn):
一個(gè)指令序列在執(zhí)行時(shí),會(huì)在不同的點(diǎn)訪問(wèn)數(shù)據(jù)存儲(chǔ)器,產(chǎn)生裝載和保存訪問(wèn)的時(shí)序,如果這些裝載和保存訪問(wèn)是正常的存儲(chǔ)器位置,那么在它們?cè)L問(wèn)相同的存儲(chǔ)器位置時(shí),只是執(zhí)行交互操作,結(jié)果,對(duì)不同存儲(chǔ)器位置保存和裝載可以按照不同于指令的順序執(zhí)行,但不會(huì)改變最終的結(jié)果,這種改變存儲(chǔ)器訪問(wèn)順序的自由被存儲(chǔ)器系統(tǒng)用來(lái)提高性能。
此外,對(duì)同一存儲(chǔ)器位置的訪問(wèn)擁有其他可用提升性能的特性,其中包括:
1) 從相同的位置連續(xù)加載產(chǎn)生相同的結(jié)果。
2) 從一個(gè)位置執(zhí)行加載操作,將返回最后保存到該位置的值。
3) 對(duì)某個(gè)數(shù)據(jù)規(guī)格的多次訪問(wèn)有時(shí)可合并成單個(gè)的更大規(guī)模的訪問(wèn),例如,分別存儲(chǔ)一個(gè)字所包含兩個(gè)半字可合并成單個(gè)字的存儲(chǔ)。
但如果存儲(chǔ)器字、半字或字節(jié)訪問(wèn)的對(duì)象是存儲(chǔ)器映射的I/O位置。一次訪問(wèn)會(huì)產(chǎn)生副作用,使后續(xù)訪問(wèn)改變成一個(gè)不同的地址。如果是這樣,那么不同時(shí)間順序的訪問(wèn)將會(huì)使代碼序列產(chǎn)生不同的最終結(jié)果,因此訪問(wèn)存儲(chǔ)器映射I/O位置時(shí)不能進(jìn)行優(yōu)化,它們的時(shí)間順序絕對(duì)不能改變。http://www.lirenedu.org/index.php?ack=xinwen&id=1081