熟女俱乐部五十路二区av,又爽又黄禁片视频1000免费,国产卡一卡二卡三无线乱码新区,中文无码一区二区不卡αv,中文在线中文a

新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ARM存儲(chǔ)器之:存儲(chǔ)管理單元MMU

ARM存儲(chǔ)器之:存儲(chǔ)管理單元MMU

作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò) 收藏

本文引用地址:http://www.bjwjmy.cn/article/257009.htm

下面的例子顯示了一個(gè)使TLB無(wú)效的過(guò)程。

【例】一個(gè)使TLB無(wú)效的過(guò)程。

MOVr1,0;

MCRp15,0,r1,c8,c7,0

(2)鎖定TLB

由于對(duì)TLB表的查詢經(jīng)常會(huì)使系統(tǒng)訪問(wèn)內(nèi)存(要查詢的段、頁(yè)不在TLB中),這就使得系統(tǒng)的平均訪問(wèn)時(shí)間大大增加。對(duì)于實(shí)時(shí)系統(tǒng),就需要將一些關(guān)鍵的頁(yè)表項(xiàng)鎖定在訪問(wèn)速度相對(duì)較快的TLB中。

920T、922T、926EJ-S、ARM1022E和ARM1026EJ-S內(nèi)核版本支持TLB轉(zhuǎn)換數(shù)據(jù)的鎖定。如果TLB中的某一行是鎖定的,則當(dāng)TLB清除命令發(fā)出時(shí),它仍然保留在TLB中。

與TLB鎖定相關(guān)的操作可以通過(guò)對(duì)CP15寄存器r10編程來(lái)實(shí)現(xiàn)。

各種ARM核的可用鎖定命令如表15.31所示。

表15.31 訪問(wèn)TLB鎖定寄存器的命令

命令

MCR指令

Rd的值

支持的內(nèi)核

讀數(shù)據(jù)TLB鎖定寄存器

MRCp15,0,Rd,c10,c0,0

TLB鎖定

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

寫(xiě)數(shù)據(jù)TLB鎖定寄存器

MCRp15,0,Rd,c10,c7,1

TLB鎖定

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

讀指令TLB鎖定寄存器

MRCp15,0,Rd,c8,c5,0

TLB鎖定

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

寫(xiě)指令TLB鎖定寄存器

MCRp15,0,Rd,c8,c5,1

TLB鎖定

ARM920T、ARM922T、ARM926EJ-S、ARM1022E、ARM1026EJ-S、StrongARM、Xscale

其中Rd的格式如圖15.35所示。

圖15.35Rd格式詳解

其中,

·W=log2N,N為T(mén)LB中入口(entry)的個(gè)數(shù)。對(duì)ARM920T、ARM922T、ARM926EJ-S、ARM1022E版本的內(nèi)核來(lái)講,W=6;而對(duì)于ARM1026EJ-S內(nèi)核版本,W=3。

·victm位域:確定下次被換出的TLB入口(entry)。

·base位域:從第0個(gè)入口(entry)到base−1入口的TLB值,被鎖定。

鎖定TLB中N條地址入口的操作序列如下。

①確保在整個(gè)鎖定過(guò)程中不會(huì)發(fā)生異常中斷,可以通過(guò)禁止中斷等方法實(shí)現(xiàn)。

②如果鎖定的是指令TLB或指令/數(shù)據(jù)統(tǒng)一的TLB,將base=N、victim=N、P=0寫(xiě)入寄存器c10。

③使整個(gè)將要鎖定的TLB無(wú)效。

④如果要鎖定指令TLB,確保與鎖定過(guò)程有關(guān)的指令地址變換地址入口已經(jīng)加載到指令TLB中。

注意

在此過(guò)程中,TLB的一個(gè)地址變換入口可以涵蓋所有與鎖定TLB相關(guān)的指令。這通常是由使整個(gè)TLB無(wú)效后的第一條指令實(shí)現(xiàn)的。

如果要鎖定的是數(shù)據(jù)TLB,確保與鎖定過(guò)程有關(guān)的數(shù)據(jù)地址變換地址入口已經(jīng)加載到數(shù)據(jù)TLB中。

注意

在此過(guò)程中避免使用內(nèi)嵌語(yǔ)法(inlineliteral)。所有鎖定TLB用到的數(shù)據(jù)可以被TLB中一個(gè)地址變換條目所覆蓋。

如果系統(tǒng)使用統(tǒng)一的數(shù)據(jù)TLB和指令TLB,上述兩條都要保證。

⑤對(duì)于I=0到N,重復(fù)執(zhí)行下列操作:

·將base=I、victim=I、P=1寫(xiě)入寄存器c10中;

·將每一條想要鎖定到TLB的變換地址入口讀取到TLB中。對(duì)于數(shù)據(jù)TLB和數(shù)據(jù)/指令統(tǒng)一的TLB可以使用LDR指令讀取一個(gè)涉及該變換地址入口的數(shù)據(jù),將該地址變換入口讀取到TLB中。對(duì)于指令TLB,通過(guò)操作寄存器c7,將相應(yīng)的變換地址讀取到指令TLB中。

⑥將base=N、victim=N、P=0寫(xiě)入寄存器c10中。

要解除TLB中被鎖定的變換地址入口,可以使用下面的操作序列。

①通過(guò)操作寄存器c8,使TLB中各被鎖定的變換地址入口無(wú)效。

②將base=0、victim=0、P=0寫(xiě)入寄存器c10中。

15.5.8存儲(chǔ)訪問(wèn)失效

ARM中有兩種存儲(chǔ)訪問(wèn)失效(Fault)可以導(dǎo)致處理器停止執(zhí)行。

·失效(Fault):由檢測(cè)到失效(Fault)并通知處理器。

·外部存儲(chǔ)器訪問(wèn)中止(ExternalAbort):由外部存儲(chǔ)器向存儲(chǔ)器報(bào)告無(wú)效的存儲(chǔ)器訪問(wèn)請(qǐng)求。

上述兩種情況統(tǒng)稱為存儲(chǔ)訪問(wèn)中止(Abort)。如果存儲(chǔ)訪問(wèn)中止發(fā)生在數(shù)據(jù)訪問(wèn)周期,CPU將產(chǎn)生數(shù)據(jù)訪問(wèn)中止異常中斷(DataAbort);如果存儲(chǔ)訪問(wèn)發(fā)生在指令預(yù)取周期,當(dāng)該指令執(zhí)行時(shí),CPU產(chǎn)生指令預(yù)取異常中斷(PrefetchAbort)。

注意

預(yù)取指令時(shí)發(fā)生錯(cuò)誤,只有當(dāng)該指令執(zhí)行時(shí),CPU才會(huì)產(chǎn)生指令預(yù)取異常中斷。

(1)MMU失效

MMU可以產(chǎn)生4種類型的訪問(wèn)失效,分別是:

·地址對(duì)齊失效(AlignmentFault);

·地址變換失效(TranslationFault);

·域控制失效(DomainFault);

·訪問(wèn)權(quán)限控制失效(PermissionFault)。

存儲(chǔ)系統(tǒng)可以中止3種類型的存儲(chǔ)訪問(wèn):

·Cache行預(yù)?。╨inefetch);

·無(wú)Cache和寫(xiě)緩存的存儲(chǔ)器訪問(wèn)(uncachedorunbufferedaccesses);

·傳輸表訪問(wèn)(translationtableaccesses)。

MMU失效優(yōu)先于外部存儲(chǔ)器訪問(wèn)中止請(qǐng)求。當(dāng)存儲(chǔ)訪問(wèn)失效發(fā)生時(shí),系統(tǒng)控制協(xié)處理器中有兩個(gè)寄存器分別負(fù)責(zé)保存發(fā)生中止的失效狀態(tài)和地址。

注意

如果一條指令在預(yù)取階段發(fā)生錯(cuò)誤,它仍將進(jìn)入指令流水線,直到該條指令被執(zhí)行時(shí),預(yù)取異常才發(fā)生。但當(dāng)預(yù)取錯(cuò)誤指令在進(jìn)入執(zhí)行階段前,指令發(fā)生跳轉(zhuǎn),那么該預(yù)取異常不會(huì)發(fā)生,協(xié)處理器錯(cuò)誤寄存器的狀態(tài)也不會(huì)被更新。

(2)MMU中與存儲(chǔ)訪問(wèn)失效相關(guān)的寄存器

MMU中與存儲(chǔ)訪問(wèn)失效相關(guān)的寄存器有兩個(gè):

·失效狀態(tài)寄存器(FSR,F(xiàn)aultStatusRegister);

·失效地址寄存器(FAR,F(xiàn)aultAddressRegister)。

失效狀態(tài)寄存器是協(xié)處理器寄存器c5。失效地址寄存器為協(xié)處理器寄存器c6。

當(dāng)存儲(chǔ)訪問(wèn)失效發(fā)生時(shí),失效狀態(tài)寄存器中的字段被更新以反映所發(fā)生的存儲(chǔ)訪問(wèn)失效的相關(guān)的信息,包括存儲(chǔ)訪問(wèn)所屬的域以及存儲(chǔ)訪問(wèn)的類型。同時(shí)存儲(chǔ)訪問(wèn)失效的虛擬地址被保存到地址寄存器c6中。

在數(shù)據(jù)訪問(wèn)周期發(fā)生存儲(chǔ)訪問(wèn)失效更新了失效狀態(tài)寄存器后,如果系統(tǒng)尚未進(jìn)入存儲(chǔ)異常模式,這時(shí)發(fā)生了指令預(yù)取引起的存儲(chǔ)失效,則該指令預(yù)取引起的訪問(wèn)失效將不會(huì)更新失效狀態(tài)寄存器的值。這樣就保證了數(shù)據(jù)訪問(wèn)周期發(fā)生的存儲(chǔ)訪問(wèn)失效狀態(tài)信息不會(huì)被指令預(yù)取周期發(fā)生的存儲(chǔ)訪問(wèn)失效破壞。

存儲(chǔ)器相關(guān)文章:存儲(chǔ)器原理




關(guān)鍵詞: ARM 存儲(chǔ)管理單元 MMU

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉