為什么啟動的時候,需要關閉緩存和mmu呢?我們先了解一下他們的作用。
緩存是主存(內存)和CPU通用寄存器之間設置的一個高速的、容量相對較小的存儲器,把正在執行的指令地址附近的一部分指令或數據從主存調入這個存儲器,供CPU在一段時間內使用,以提高程序的運行速度。
mmu可以實現虛擬內存和內存保護等功能,完成對內存的操作和管理。
CACHE是高速緩沖存儲器。CPU工作速度是很快的,而外部內存是工作很慢的,所以當CPU對內存訪問的時候,是要等待內存訪問結束的。所以中間CPU就在等待,這就浪費了時間。所以在CPU和內存之間加一個CACHE,當CPU寫數據到內存中的時候,就先寫入到CACHE中,然后CACHE再寫入到內存中。CPU寫CACHE是很快的,所以就提高了寫數據的效率。讀數據的話,CPU先在CACHE中去找數據,沒有找到的話,CACHE將數據從內存中取出來,再給CPU,同時把這個數據存起來。當CPU在CACHE中找到數據的話,就直接使用這個數據,就不用再去內存中取數據了。
Caches是CPU內部的一個2級緩存,它的作用是將常用的數據和指令放在CPU內部。Caches是通過CP15管理的,剛上電的時候,CPU還不能管理Caches。上電的時候指令Cache可關閉,也可不關閉,但數據Cache一定要關閉,否則可能導致剛開始的代碼里面,去取數據的時候,從Cache里面取,而這時候RAM中數據還沒有Cache過來,導致數據預取異常 。
(摘自:https://blog.csdn.net/coolperl/article/details/82622601)