国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

MCR和MRC指令在存儲(chǔ)系統(tǒng)中的使用

2012-04-29 05:12:52王茹
電腦知識(shí)與技術(shù) 2012年5期
關(guān)鍵詞:存儲(chǔ)系統(tǒng)

王茹

摘要:ARM協(xié)處理器CP15中的MCR指令和MRC指令是非常重要的指令,擔(dān)負(fù)著協(xié)處理器和主處理器之間的數(shù)據(jù)傳遞。對(duì)于虛擬存儲(chǔ)來來講作用尤為重要,它可以通過設(shè)置MMU、Cache、TLB表等操作來實(shí)現(xiàn)虛擬存儲(chǔ)。MCR指令和MRC指令用法復(fù)雜,目前介紹這兩個(gè)指令應(yīng)用的資料不多,大多點(diǎn)到即止。該文主要通過具體實(shí)例介紹MCR指令和MRC指令在ARM存儲(chǔ)系統(tǒng)中的使用情況。

關(guān)鍵詞:存儲(chǔ)系統(tǒng);MCR;MRC;MMU;Cache

中圖分類號(hào):TP313文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2012)05-1190-04

MCR and MRC Instructions Used in the Storage System

WANG Ru

( Liaoning Equipment Manufacturing Technical College, Shenyang 110161, China)

Abstract: MRC and MCR instructions are very important command in the ARM coprocessor CP15, their responsible is data transfer be? tween co-processor and host processor. They are particularly important to virtual storage, it can set the MMU, Cache, TLB table and other operations to achieve the virtual storage. MCR and MRC instructions are complex instructions, Now, the application describe of these two commands is no more information. This paper mainly through concrete examples to introduced how to use MCR instructions and MRC instructions in the ARM memory system .

Key words: storage system; MCR; MRC; MMU; Cache

在基于ARM的嵌入式應(yīng)用系統(tǒng)中,存儲(chǔ)系統(tǒng)的操作通常是由協(xié)處理器CP15完成的。CP15包含16個(gè)32位的寄存器,其編號(hào)為0~15。而訪問CP15寄存器的指令主要是MCR和MRC這兩個(gè)指令。本文主要介紹MRC和MCR指令在存儲(chǔ)系統(tǒng)中是如何使用的。

1 MRC和MCR指令格式

1.1 MRC指令格式

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

MRC指令用于將協(xié)處理器寄存器中的數(shù)據(jù)傳送到ARM處理器寄存器中,如果協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義的指令異常。

其中,協(xié)處理器操作碼1為協(xié)處理器將要執(zhí)行的操作。對(duì)于CP15協(xié)處理器來說,協(xié)處理器操作碼1永遠(yuǎn)為0b000,當(dāng)協(xié)處理器操作碼1不為0b000時(shí),該指令操作結(jié)果不可預(yù)知;

目的寄存器為ARM處理器的寄存器;源寄存器1和2為協(xié)處理器的寄存器;

協(xié)處理器操作碼2為協(xié)處理器將要執(zhí)行的操作。通常源寄存器2和協(xié)處理器操作碼2兩者組合決定對(duì)協(xié)處理器寄存器進(jìn)行所需要的操作,如果沒有指定,則將源寄存器2設(shè)置為C0,協(xié)處理器操作碼2設(shè)置為0,否則可能導(dǎo)致不可預(yù)知的結(jié)果。

1.2 MCR指令格式

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

MCR指令用于將ARM處理器寄存器中的數(shù)據(jù)傳送到協(xié)處理器寄存器中,如果協(xié)處理器不能成功地執(zhí)行該操作,將產(chǎn)生未定義的指令異常。

其中,源寄存器為ARM處理器的寄存器;目的寄存器1和2均為協(xié)處理器的寄存器;協(xié)處理器操作碼1和2的含義及用法同MRC指令。

2 MRC和MCR在存儲(chǔ)器管理單元(MMU)中的使用

2.1禁止/使能MMU

CP15協(xié)處理器的寄存器C1的位[0]用于控制禁止/使能MMU。當(dāng)CP15協(xié)處理器的寄存器C1的位[0]設(shè)置為0時(shí),禁止MMU;當(dāng)CP15協(xié)處理器的寄存器C1的位[0]設(shè)置為1時(shí),使能MMU。

使能MMU的指令:MRC P15, 0 , R0 ,C1 ,0 , 0

ORR R0,R0,#1

MCR P15, 0 ,R0 , C1 ,0 , 0

禁止MMU的指令:MRC P15, 0 , R0 ,C1 ,0 , 0

BIC R0,R0,#1

MCR P15, 0 ,R0 , C1 ,0 , 0

2.2設(shè)置頁表的基地址

頁表存放在內(nèi)存中,通常在ARM中系統(tǒng)協(xié)處理器CP15的C2寄存器用來保存頁表的基地址。其中位[31:14]為內(nèi)存頁表的基地址,位[13:0]為0。

加載頁表的首地址到CP15協(xié)處理器的寄存器C2的指令,例如:

MOV R3,#0X12340000

MCR p15, 0, R3, C2, C0, 0

2.3 MMU中存儲(chǔ)訪問權(quán)限控制

在MMU中,寄存器C1的R、S控制位和頁表中地址轉(zhuǎn)換條目中的訪問權(quán)限控制位AP聯(lián)合作用控制存儲(chǔ)訪問的權(quán)限。具體規(guī)則如表1所示。[1]

表1 MMU中存儲(chǔ)訪問權(quán)限控制

C1寄存器的R和S位的設(shè)置的指令,例如:

MRC p15, 0, R0, c1, c0, 0; read control register

AND R0,R0,#0XFFFFFCFF;set R=0,S=0

MCR P15, 0 ,R0 , C1 ,0 , 0; write control register

2.4 MMU中域的控制

MMU中的域指的是一些段、大頁或者小頁的集合。ARM支持最多16個(gè)域,每個(gè)域的訪問控制特性由CP15中的寄存器C3中的兩位來控制。

CP15中的寄存器C3的格式如圖1所示。

圖1 C3寄存器格式

該寄存器有效位為32,被分成16個(gè)區(qū)域,每個(gè)區(qū)域由兩個(gè)位組成,含義如下:

00:當(dāng)前級(jí)別下,該內(nèi)存區(qū)域不允許被訪問,任何的訪問都會(huì)引起一個(gè)domain fault

01:當(dāng)前級(jí)別下,該內(nèi)存區(qū)域的訪問必須配合該內(nèi)存區(qū)域段描述符中AP位進(jìn)行權(quán)檢查

10:保留狀態(tài)

11:當(dāng)前級(jí)別下,對(duì)該內(nèi)存區(qū)域的訪問都不進(jìn)行權(quán)限檢查

設(shè)置域的訪問權(quán)限可使用以下語句,例如:

MRC p15, 0, R0, C3, C0, 0; Read domain 15:0 access permissions

ORR R0,R0,#0X00000030 ; Set D2=0b11

MCR p15, 0, Rd, C3, C0, 0; Read domain 15:0 access permissions

2.5快表(TLB)的使用

2.5.1使快表內(nèi)容無效的操作

CP15協(xié)處理器的寄存器C8是用來控制清除TLB內(nèi)容的相關(guān)操作。它是一個(gè)只寫寄存器。使用MRC讀取該寄存器,會(huì)可能產(chǎn)生不可預(yù)知的效果。可使用MCR指令來寫該寄存器,具體格式如下:

MCR {條件} P15,0,源寄存器,C8,目的寄存器2,{協(xié)處理器操作碼2}

其中,源寄存器中位將寫入C8中的數(shù)據(jù);目的寄存器2,協(xié)處理器操作碼2的不同組合決定指令執(zhí)行不同的操作,具體含義如表2所示。[2]

表2使無效快表內(nèi)容的指令格式

2.5.2鎖定快表內(nèi)容

MMU可以將某些地址變換條目鎖定在TLB中,從而使得進(jìn)行與該地址變換條目相關(guān)的地址變換速度保持很快。在MMU中寄存器C10用于控制TBL內(nèi)容的鎖定。

TLB鎖定指令的具體格式:

MCR P15 , 0 ,源寄存器, C10 , C0 ,協(xié)處理器操作碼2。

MRC P15 , 0 ,目的寄存器,C10 , C0,協(xié)處理器操作碼2。

當(dāng)系統(tǒng)中包含獨(dú)立的數(shù)據(jù)TLB和指令TLB時(shí),對(duì)應(yīng)于數(shù)據(jù)TLB和指令TLB分別有一個(gè)獨(dú)立的TLB內(nèi)容鎖定寄存器。上面指令中的協(xié)處理器操作碼2用于選擇其中的某個(gè)寄存器。

協(xié)處理器操作碼2=1,選擇指令TLB的內(nèi)容鎖定寄存器。

協(xié)處理器操作碼2=0,選擇數(shù)據(jù)TLB的內(nèi)容鎖定寄存器。

當(dāng)系統(tǒng)中使用統(tǒng)一的數(shù)據(jù)cache和指令cache時(shí),協(xié)處理器操作碼2的值應(yīng)為0。

例如:MCR p15 , 0 , r0 , c10 , c0 , 0;鎖定數(shù)據(jù)TLB。

MCR p15 , 0 , r0 , c10 , c0 , 1;鎖定指令TLB。

3 MRC和MCR在高速緩沖存儲(chǔ)器(Cache)中的使用

3.1控制cache和寫緩沖區(qū)

CP15中的寄存器C7用于控制cache和寫緩沖區(qū)。它是一個(gè)只寫的寄存器,使用MCR指令來寫該寄存器,具體格式如下:

MCR P15, 0,源寄存器, C7,目的寄存器2,操作碼2

其中,源寄存器為將寫入C7中的數(shù)據(jù);目的寄存器2,操作碼2的不同組合決定執(zhí)行不同的操作,如表3所示。[2]

表3 MCR指令中目的寄存器2,操作碼2的不同組合決定執(zhí)行不同的操作

例如:MCR p15, 0, r0, c7, c7, 0;disable ICache, DCache

3.2鎖定Cache

寄存器C9是Cache內(nèi)容鎖定寄存器。Cache內(nèi)容鎖定就是將一些關(guān)鍵代碼和數(shù)據(jù)預(yù)取到Cache后,設(shè)置一定的屬性,使發(fā)生Cache塊替換時(shí),這些關(guān)鍵代碼和數(shù)據(jù)所在的塊不會(huì)被替換。[3]

Cache鎖定指令的具體格式:

MCR P15 , 0 ,源寄存器, C9 , C0 ,協(xié)處理器操作碼2

MRC P15 , 0 ,目的寄存器, C9 , C0,協(xié)處理器操作碼2

當(dāng)系統(tǒng)中包含獨(dú)立的數(shù)據(jù)Cache和指令Cache時(shí),對(duì)應(yīng)于數(shù)據(jù)Cache和指令Cache分別有一個(gè)獨(dú)立的Cache內(nèi)容鎖定寄存器。上面指令中的協(xié)處理器操作碼2用于選擇其中的某個(gè)寄存器。

協(xié)處理器操作碼2=1,選擇指令cache的內(nèi)容鎖定寄存器。協(xié)處理器操作碼2=0,選擇數(shù)據(jù)cache的內(nèi)容鎖定寄存器。

當(dāng)系統(tǒng)中使用統(tǒng)一的數(shù)據(jù)cache和指令cache時(shí),協(xié)處理器操作碼2的值應(yīng)為0。

例如:MCR p15 , 0 , r0 , c9 , c0 , 0;鎖數(shù)據(jù)Cache

MCR p15 , 0 , r0 , c9 , c0 , 1;鎖指令Cache

4結(jié)論

ARM中協(xié)處理器CP15中的MCR指令和MRC指令是非常重要的指令,擔(dān)負(fù)著協(xié)處理器和主處理器之間的數(shù)據(jù)傳遞。對(duì)于虛擬存儲(chǔ)來講作用尤為重要,它可以設(shè)置MMU、Cache、TLB表實(shí)現(xiàn)虛擬存儲(chǔ)。本文只對(duì)存儲(chǔ)系統(tǒng)中主要的幾個(gè)功能涉及的MCR和MRC指令如何使用做以介紹,希望通過具體的應(yīng)用例子,讀者能對(duì)MRC和MCR指令有更深的認(rèn)識(shí)。

參考文獻(xiàn):

[1]杜春雷. ARM體系結(jié)構(gòu)與編程[M].北京清華大學(xué)出版社,2005.

[2]孫曄. ARM嵌入式系統(tǒng)及應(yīng)用[M].江蘇教育出版社,2011.

[3] ARM9協(xié)處理器CP15及MCR與MRC [EB/OL]. http://6xudonghai.blog.163.com/blog/static/336406292008724103317304/.

猜你喜歡
存儲(chǔ)系統(tǒng)
分層式大數(shù)據(jù)存儲(chǔ)系統(tǒng)緩存調(diào)度策略與性能優(yōu)化
分布式存儲(chǔ)系統(tǒng)在企業(yè)檔案管理中的應(yīng)用
哈爾濱軸承(2020年2期)2020-11-06 09:22:36
天河超算存儲(chǔ)系統(tǒng)在美創(chuàng)佳績
天河超算存儲(chǔ)系統(tǒng)在美創(chuàng)佳績
網(wǎng)絡(luò)計(jì)算機(jī)模型下海量大數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)
基于Hadoop 的海量醫(yī)藥電商數(shù)據(jù)存儲(chǔ)系統(tǒng)設(shè)計(jì)與開發(fā)
電子制作(2017年19期)2017-02-02 07:08:40
分布式存儲(chǔ)系統(tǒng)在液晶面板制造數(shù)據(jù)倉庫中的設(shè)計(jì)
電子制作(2016年15期)2017-01-15 13:39:15
存儲(chǔ)系統(tǒng)是HPC運(yùn)轉(zhuǎn)的基礎(chǔ)
華為震撼發(fā)布新一代OceanStor 18000 V3系列高端存儲(chǔ)系統(tǒng)
一種基于STM32的具有斷電保護(hù)機(jī)制的采集存儲(chǔ)系統(tǒng)設(shè)計(jì)
屯昌县| 汶上县| 平凉市| 常宁市| 靖远县| 凤山县| 平安县| 山东省| 泸水县| 靖西县| 元氏县| 金华市| 九江市| 湟源县| 文成县| 陆川县| 游戏| 嘉禾县| 麻栗坡县| 平遥县| 郎溪县| 绥江县| 米林县| 阳曲县| 池州市| 涞源县| 六枝特区| 南宁市| 曲阜市| 青冈县| 江城| 平凉市| 丹江口市| 萝北县| 大新县| 广宗县| 巫溪县| 友谊县| 子长县| 敦煌市| 永胜县|