<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          本文引用地址:http://www.ex-cimer.com/article/257009.htm

          15.5.4的使能與禁止

          的使能/禁止可以通過CP15寄存器的c1的bit[0]來控制。

          ·bit[0]=0,禁止。

          ·bit[0]=1,MMU使能。

          下面的例子顯示了典型的MMU使能過程。

          【例15.4】典型的MMU使能過程。

          MRCp15,0,r0,c1,0,0

          ORRr0,#01

          MCRp15,0,r0,c1,0,0

          當(dāng)MMU被禁止時,存儲訪問執(zhí)行下列過程。

          ①當(dāng)禁止MMU時,存儲系統(tǒng)是否支持Cache和寫緩存,根據(jù)不同芯片設(shè)計不同而有所不同(公司將設(shè)計權(quán)交給芯片廠商)。

          ·如果芯片規(guī)定當(dāng)禁止MMU時禁止Cache和寫緩存,則存儲訪問不考慮C、B控制位。

          ·如果芯片規(guī)定禁止MMU時使能Cache和寫緩存,則數(shù)據(jù)訪問被視為無Cache(uncachable)和寫緩存(unbufferable)的,即C=0、B=0。讀取指令時,如果系統(tǒng)是統(tǒng)一的TLB,則C=0;如果使用分開的TLB,則C=1。

          ②存儲訪問不受權(quán)限控制,MMU也不會產(chǎn)生存儲訪問中止信號。

          ③所有物理地址和虛擬地址相等,即使用平板存儲模式。

          使能/禁止MMU時需要注意以下幾個問題。

          ·在使能MMU之前,正確的傳輸表要在內(nèi)存中事先建立,CP15的相關(guān)寄存器必須完成初始化操作。

          ·如果使用的不是平板存儲模式(物理地址和對應(yīng)虛擬地址相等),在禁止/使能MMU時,虛擬地址和物理地址的對應(yīng)關(guān)系發(fā)生變化,這時應(yīng)該清除(Flush)Cache中的當(dāng)前地址變換入口(Entry)。

          ·如果完成禁止/使能MMU的代碼的物理地址和虛擬地址不同,則禁止/使能MMU將帶來很大麻煩,因此建議完成使能/禁止MMU的代碼的物理地址和虛擬地址相同。

          15.5.5虛擬地址到物理地址的轉(zhuǎn)換

          (1)地址重定位

          為了使任務(wù)有各自的虛擬存儲器映射,MMU硬件采用地址重定位,在地址訪問主存之前,轉(zhuǎn)換有處理器輸出的虛擬地址。當(dāng)處理器產(chǎn)生一個虛擬地址時,MMU取出這個虛擬地址的高位,遍歷傳輸表,從而形成一個物理地址。

          虛擬存儲空間到物理存儲空間的映射是以內(nèi)存塊為單位進(jìn)行的。也就是說,虛擬存儲空間中一塊連續(xù)的存儲空間被映射到物理存儲空間中同樣大小的一塊連續(xù)存儲空間。

          虛擬存儲空間到物理存儲空間地址重映射過程如圖15.24所示。

          圖15.24虛擬存儲空間到物理存儲空間地址重映射過程

          支持的存儲塊的大小有以下幾種。

          ·段(Sections):大小為1M的存儲塊。

          ·大頁(Largepages):大小為64KB。

          ·小頁(Smallpages):大小為4KB。

          ·極小頁(TinyPages):大小為1KB。

          段和大頁只需通過一次映射就可以將虛擬地址轉(zhuǎn)換成物理地址,也可以根據(jù)需要增加一級映射,采用兩級映射的方式再將大頁分成16KB的子頁,小頁分成1KB的子頁。極小頁不能再分,只能以1KB大小的整頁為單位。

          在內(nèi)存中存在兩級頁表以實現(xiàn)上述地址映射過程。

          ·一級頁表:一級頁表包括兩種類型的頁表項,即保持指向二級頁表起始地址的頁表項和保存用于轉(zhuǎn)換段(Section)地址的頁表項。一級頁表也稱為段頁表(sectionpagetable)。

          ·二級頁表:二級頁表包含以大頁和小頁為單位的地址變換頁表項。

          一級頁表將4G地址空間劃分為多個1MB的段(Section),因此一級頁表包含4096個頁表項。一級頁表是一個混合表,可以作為二級頁表的目錄表,也可以作為用于轉(zhuǎn)換1MB段(也可視為1MB的虛擬頁)的普通頁表。當(dāng)一級頁表作為頁目錄時,其頁表項包含的是代表1MB虛擬空間的二級頁表指針。二級頁表分為粗頁表(Coarse)和細(xì)頁表(Fine)。當(dāng)一級頁表用于轉(zhuǎn)換一個1MB的段時,其頁表項包含的是物理存儲器中對應(yīng)1MB頁幀(pageframe)的首地址。

          注意

          目錄頁表項和1MB的段頁表項可以共存于一級頁表中。

          一個粗二級頁表(Coarse)包含256個頁表項,占有1KB的主存空間,每個頁表項將一個4KB的虛擬存儲塊轉(zhuǎn)換成一個4KB的物理存儲塊。粗二級頁表支持4KB和64KB的頁,頁表項包含的是4KB或64KB的頁幀地址。如果轉(zhuǎn)換的是一個64KB的頁,則對于每個64KB的頁,同一個頁表項必須在頁表中重復(fù)16次。

          一個細(xì)二級頁表(Fine)有1024個頁表項,占有4KB的主存空間,每個頁表項轉(zhuǎn)換一個1KB的存儲塊。細(xì)頁表支持1KB、4KB、64KB虛存頁,每個頁表項包含1KB、4KB或64KB的物理頁幀首地址。如果轉(zhuǎn)換的是4KB的頁,則同一個頁表項必須在頁表中連續(xù)重復(fù)4次;如果轉(zhuǎn)換的是64KB的頁,則同一個頁表項需要在頁表中連續(xù)重復(fù)64次。

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




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

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();