在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ARM存儲器之:存儲管理單元MMU

            ARM存儲器之:存儲管理單元MMU

            作者: 時間:2013-09-30 來源:網(wǎng)絡 收藏

            本文引用地址:http://www.biyoush.com/article/257009.htm

            下面的例子顯示了一個使TLB無效的過程。

            【例】一個使TLB無效的過程。

            MOVr1,0;

            MCRp15,0,r1,c8,c7,0

            (2)鎖定TLB

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

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

            與TLB鎖定相關的操作可以通過對CP15寄存器r10編程來實現(xiàn)。

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

            表15.31 訪問TLB鎖定寄存器的命令

            命令

            MCR指令

            Rd的值

            支持的內(nèi)核

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

            MRCp15,0,Rd,c10,c0,0

            TLB鎖定

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

            寫數(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

            寫指令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為TLB中入口(entry)的個數(shù)。對ARM920T、ARM922T、ARM926EJ-S、ARM1022E版本的內(nèi)核來講,W=6;而對于ARM1026EJ-S內(nèi)核版本,W=3。

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

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

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

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

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

            ③使整個將要鎖定的TLB無效。

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

            注意

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

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

            注意

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

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

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

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

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

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

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

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

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

            15.5.8存儲訪問失效

            ARM中有兩種存儲訪問失效(Fault)可以導致處理器停止執(zhí)行。

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

            ·外部存儲器訪問中止(ExternalAbort):由外部存儲器向存儲器報告無效的存儲器訪問請求。

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

            注意

            預取指令時發(fā)生錯誤,只有當該指令執(zhí)行時,CPU才會產(chǎn)生指令預取異常中斷。

            (1)MMU失效

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

            ·地址對齊失效(AlignmentFault);

            ·地址變換失效(TranslationFault);

            ·域控制失效(DomainFault);

            ·訪問權限控制失效(PermissionFault)。

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

            ·Cache行預?。╨inefetch);

            ·無Cache和寫緩存的存儲器訪問(uncachedorunbufferedaccesses);

            ·傳輸表訪問(translationtableaccesses)。

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

            注意

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

            (2)MMU中與存儲訪問失效相關的寄存器

            MMU中與存儲訪問失效相關的寄存器有兩個:

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

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

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

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

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

            存儲器相關文章:存儲器原理




            關鍵詞: ARM 存儲管理單元 MMU

            評論


            相關推薦

            技術專區(qū)

            關閉