中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
MIPS的內(nèi)存映射

 MIPS的內(nèi)存映射


  在32位MIPS體系結(jié)構(gòu)下,最多可尋址4GB地址空間。這4GB空間的分配是怎樣的呢?讓我們看下面這張圖:

      +----------------------------------------------+
      |                       | 0xFFFFFFFF
      |                       |
      |                       |
      | Kernel Space Mapped Cached         |
      |                       |
      |                       |
0xC0000000 |                       |
      +----------------------------------------------+
      |                       | 0xBFFFFFFF
      | Kernel Space Unmapped UnCached     |
      |                       |
0xA0000000 +----------------------------------------------+
      |                       | 0x9FFFFFFF
      | Kernel Space Unmapped cached    |
      |                       |
0x80000000 +----------------------------------------------+
      |                       | 0x7FFFFFFF
      |                       |
      |                       |
      |                       |
      |    User Space              |
      |                       |
      |                       |
      |                       |
      |                       |
      |                       |
0x00000000 +----------------------------------------------+

Figure 2-1 MIPS Logical Addressing Space

  上圖是MIPS處理器的邏輯尋址空間分布圖。我們看到,2GB以下的地址空間,也就是從0x00000000到0x7FFFFFFF的這一段空間,為User Space,可以在User Mode下訪問(wèn),當(dāng)然,在Kernel Mode下也是可以訪問(wèn)的。程序在訪問(wèn)User Space的內(nèi)存時(shí),會(huì)通過(guò)MMU的TLB,映射到實(shí)際的物理地址上。也就是說(shuō),這一段邏輯地址空間和物理地址空間的對(duì)應(yīng)關(guān)系,是由MMU中的TLB表項(xiàng)決定的。
  從0x80000000到0xFFFFFFFF的一段為Kernel Space,僅限于Kernel Mode訪問(wèn)。如果在User Mode下試圖訪問(wèn)這一段內(nèi)存,將會(huì)引發(fā)系統(tǒng)的一個(gè)Exception。MIPS的  Kernel Space又可以劃分為三部分。首先是通過(guò)MMU映射到物理地址的1GB空間,地址范圍從0xC0000000到0xFFFFFFFF。這1GB空間可以用來(lái)訪問(wèn)實(shí)際的DRAM內(nèi)存,可以為操作系統(tǒng)的內(nèi)核所用。
  MIPS的Kernel Space中,還有兩段特殊的地址空間,分別是從0x80000000到0x9FFFFFFF的Kernel Space Unmapped cached和0xA0000000到0xBFFFFFFF的Kernel Space Unmapped UnCached。之所以說(shuō)它們特殊,是因?yàn)檫@兩段邏輯地址到物理地址的映射關(guān)系是硬件直接確定的,不通過(guò)MMU,而且兩段實(shí)際上是重疊的,均對(duì)應(yīng)0x00000000到0x20000000的物理地址。那么,為什么一段同樣的物理地址有兩個(gè)邏輯地址對(duì)應(yīng)呢?它們的區(qū)別又在哪里呢?
  原來(lái),這是MIPS的設(shè)計(jì)特色之一。軟件在訪問(wèn)Kernel Space Unmapped Uncached這段地址空間的時(shí)候,不經(jīng)過(guò)MIPS的Cache。這樣,雖然速度會(huì)比較慢,但是,對(duì)于硬件I/O寄存器來(lái)說(shuō),就不存在所謂的Cache一致性問(wèn)題。Cache一致性問(wèn)題,是指硬件將某個(gè)地址的內(nèi)容跳過(guò)軟件而改變了,Cache中的內(nèi)容尚未同步。這樣,如果軟件讀取該地址,有可能從Cache中獲取到錯(cuò)誤的內(nèi)容。將硬件I/O寄存器設(shè)定在這段地址空間,就可以避免Cache一致性帶來(lái)的問(wèn)題。MIPS的程序上電啟動(dòng)地址0xBFC00000,也落在這段地址空間內(nèi)?!想姇r(shí),MMU和Cache均未初始化,因此,只有這段地址空間可以正常讀取并處理。
  另一段特殊的地址Kernel Space Unapped Cached,與前者類似,直接映射到0x00000000到0x20000000,與Kernel Space Unmapped Uncached重疊。因?yàn)橥ㄟ^(guò)Cache,這段地址空間的訪問(wèn)速度比前者為快。一般地,這段內(nèi)存空間用于內(nèi)核代碼段,或者內(nèi)核中的堆棧。
  顯然地,當(dāng)工程師們換算Kernel Space中的這兩段的物理地址和邏輯地址時(shí),只需要改變地址的高3bit就可以了。
  那么,什么時(shí)候需要使用物理地址,什么時(shí)候需要使用邏輯地址呢?我們知道,邏輯地址是程序中訪問(wèn)的內(nèi)存地址,譬如,下面的這條指令:
  lw a0, 128(t2)
  這條指令的內(nèi)容是從t2寄存器內(nèi)的地址 + 偏移128字節(jié)處,讀取一個(gè)word (4Byte)到寄存器a0內(nèi)。如果t2的值為0x88200100,則最終訪問(wèn)的物理地址為0x88200180。
  而物理地址,從工程上可以理解為,將邏輯分析儀連接到內(nèi)存總線(Memory Bus)上,邏輯分析儀指示的地址,就是物理地址。假如,在上一個(gè)例子中,我們把邏輯分析儀接到處理器的前端內(nèi)存總線,我們就可以看到,執(zhí)行該指令時(shí),系統(tǒng)訪問(wèn)的物理地址為0x08200180。物理地址和邏輯地址的換算,不僅限于電子工程師在設(shè)計(jì)硬件線路時(shí)需要。在內(nèi)核工程師編寫(xiě)支持DMA的外部設(shè)備驅(qū)動(dòng)時(shí),需要將向操作系統(tǒng)申請(qǐng)到的數(shù)據(jù)緩沖區(qū)地址(當(dāng)然,這是一個(gè)邏輯地址)轉(zhuǎn)換為物理地址,并“告訴”相關(guān)外設(shè)。這樣,外設(shè)就可以在收到數(shù)據(jù)后,使用DMA模式儲(chǔ)存在系統(tǒng)的主存中,并向系統(tǒng)發(fā)起一個(gè)IRQ。操作系統(tǒng)在IRQ的handler中,從外設(shè)的相應(yīng)IO寄存器讀取到這段內(nèi)存的地址(當(dāng)然,是物理地址)并轉(zhuǎn)換為邏輯地址并處理之。這個(gè)過(guò)程中,如果沒(méi)有正確使用和分辨物理地址和邏輯地址,驅(qū)動(dòng)程序便會(huì)導(dǎo)致內(nèi)核的一個(gè)panic錯(cuò)誤。
  物理地址到邏輯地址的映射關(guān)系是由什么決定的呢?除了上面提到的兩段Unmapped的地址空間,其余都是由TLB確定的,由MMU來(lái)執(zhí)行。這是后話。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Linux 內(nèi)存布局
邏輯地址 虛擬地址 物理地址 總線地址的區(qū)別
linux內(nèi)核 address_space 結(jié)構(gòu)
計(jì)算機(jī)底層知識(shí)拾遺(六)理解頁(yè)緩存page cache和地址空間address
linux 內(nèi)存分頁(yè)機(jī)制
邏輯地址、線性地址、物理地址和虛擬地址 - Linux - ***林電子科技有限公司
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服