日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

icache的方面以及使用

發(fā)布時(shí)間:2025/3/17 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 icache的方面以及使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這次學(xué)習(xí)一下高速緩存icache的功能的開(kāi)關(guān)。

?首先鞏固一下這個(gè)mrc指令

MRC 指令的格式為:

MRC{<cond>}(條件)協(xié)處理器編碼,協(xié)處理器操作碼1,目的寄存器,源寄存器1,源寄存器2,協(xié)處理器操作碼2。

如 mrc ?p15 , 0 , r0 , c1 , c0 , 0 ;

? <cond>為指令執(zhí)行的條件碼,忽略則視為無(wú)條件執(zhí)行,該指令的作用是將 cp15 的寄存器c1,c0中的數(shù)據(jù)傳送到 ARM 處理器寄存器r0中,如果協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義的指令異常中斷。源寄存器1,2:存放第1個(gè)和第2個(gè)操作數(shù)的協(xié)處理器寄存器。協(xié)處理器操作碼2:可選的協(xié)處理器特定操作碼,用來(lái)區(qū)分同一個(gè)編號(hào)的不同物理寄存器,當(dāng)不需要提供附加信息時(shí),指定為0。

? cp15是用于系統(tǒng)存儲(chǔ)管理的協(xié)處理器,對(duì)于CP15寄存器來(lái)說(shuō)協(xié)處理器操作碼1永遠(yuǎn)為0,否則結(jié)果不可預(yù)知。 ?

? cp15中的C1寄存器存放了高速緩存的控制功能,所以我們要通過(guò)寫(xiě)這個(gè)協(xié)處理器寄存器里面的位,來(lái)啟用icache高速緩存。

??

? C1寄存器的各個(gè)位說(shuō)明以及應(yīng)用:

? 0 1 2 3 4 5 6 7 8 9 10 11 ?12 ?13 ?14 ?15 ? 16~31

? M A C W P D L B S R F ?Z ?I ? V ? RR ?L4 ?SBZP/UNP ??

? 各個(gè)位的作用和含義:

? M:禁止/使能MMU或者M(jìn)PU(0:禁止MMU或者M(jìn)PU,1:使能MMU或者M(jìn)PU)(如果系統(tǒng)中沒(méi)有MMU或者M(jìn)PU,讀取時(shí)該位返回0,寫(xiě)入時(shí)忽略)

? A:對(duì)于可以選擇是否支持內(nèi)存訪(fǎng)問(wèn)時(shí)地址對(duì)齊檢查的系統(tǒng),本位禁止/使能地址對(duì)齊檢查功能(0:禁止地址對(duì)齊檢查功能,1:使能地址對(duì)齊檢查功能)(對(duì)寄存器進(jìn)行寫(xiě)操作時(shí),忽略該位)

?C: 當(dāng)數(shù)據(jù)Cache和指令Cache分開(kāi)時(shí),本控制位禁止/使能數(shù)據(jù)Cache。當(dāng)數(shù)據(jù)Cache和指令Cache統(tǒng)一時(shí),該控制位禁止/使能整個(gè)Cache.(0:禁止Cache, 1:使能Cache)

?W:禁止/使能寫(xiě)緩存(0:禁止寫(xiě)緩存,1:使能寫(xiě)緩存)

?P:對(duì)于向前兼容26位ARM處理器,本控制位控制PRGC32控制信號(hào)(0:異常中斷處理程序進(jìn)入32位地址模式,1:異常中斷處理程序進(jìn)入26位地址模式)

?D:對(duì)于向前兼容26位ARM處理器,本控制位控制DATA32控制信號(hào)(0:禁止26位地址異常檢查,1:使能26位地址異常檢測(cè))

 L:對(duì)于ARMv3及以前版本,本控制位可以控制處理器的中止模式(0:選擇早期中止模式,1:選擇后期中止模式)

 B: 對(duì)于存儲(chǔ)系統(tǒng)同時(shí)支持大/小端(big-endian/little-endian)的ARM處理器,該控制位配置系統(tǒng)使用哪種內(nèi)存模式

 S:支持MMU的存儲(chǔ)系統(tǒng)中,本控制位用作系統(tǒng)保護(hù)

 R:支持MMU的存儲(chǔ)系統(tǒng)中,本控制位用作ROM保護(hù)

 F:本控制位由生產(chǎn)廠(chǎng)商定義

?Z:對(duì)于支持跳轉(zhuǎn)預(yù)測(cè)的ARM系統(tǒng),本控制位禁止/使能跳轉(zhuǎn)預(yù)測(cè)功能(0:禁止跳轉(zhuǎn)預(yù)測(cè)功能,1:使能跳轉(zhuǎn)預(yù)測(cè)功能)

?I:當(dāng)數(shù)據(jù)Cache和指令Cache是分開(kāi)的,本控制位禁止/使能指令Cache(0:禁止指令Cache ,1:使能指令Cache)

我們要寫(xiě)它的第I位,也就是第bit12位

??

? bic指令的用法:bic是位清除的指令,把操作數(shù)中為1的位對(duì)應(yīng)位置的數(shù)(寄存器中)變?yōu)?,然后再放到那個(gè)寄存器里去。

? 比如 bic r0 ,r0 ,0xF0000000 ? ?意思就是把r0高四位的值清零,然后再放回r0寄存器中。

? orr指令則相反,把操作數(shù)中為1的位對(duì)應(yīng)位置的數(shù)(寄存器中)變?yōu)?,然后再放到那個(gè)寄存器里去。


? //下面就是開(kāi)/關(guān)icache的匯編程序

? ?mrc p15,0,r0,c1,c0,0;

? //bic r0, r0, #(1<<12)// bit12 置0 ?表示關(guān)上icache

? ?orr r0, r0, #(1<<12)// bit12 置1 ?表示開(kāi)啟icache

? ?mcr p15,0,r0,c1,c0,0;


轉(zhuǎn)載于:https://blog.51cto.com/11962449/1837572

新人創(chuàng)作打卡挑戰(zhàn)賽發(fā)博客就能抽獎(jiǎng)!定制產(chǎn)品紅包拿不停!

總結(jié)

以上是生活随笔為你收集整理的icache的方面以及使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。