IPA 小註解

這裡的 IPA 是指 intermediate physical address. 一般印象中只有 virtual address (VA = 虛擬地址) 和 physical address (PA = 實際地址), 為何又多了不虛不實的中實戶 – 中間實際位址呢? 主要是因為 hypervisor mode 的關係.

首先, CPU 可以透過 MMU (Memory Management Unit) 來完成virtual address 到的 physical address 的映射. 由於需要以位址查位址, 當然就需要有個表格 – translation table. 在 ARM 的 CPU 架構中, 使用 TTBR  (Translation Table Base Register) 來幫忙查詢.

如果 page size 不大, 而 physical address 很大, 那麼就需要使用多層的 page table 分次查詢.  例如 page size = 4 KB, physical address = 1 GB, 那麼 table 就需要 1G/4K = 256 K 個 entry. 分成 3 層表格, 每一層的 entry 數目就會大幅減小. 在這每一層當中所查出來的 “physical address”, 因為不是最後的真實值, 就稱之為 level N descriptor PA. 

如果打開 hypervisor mode. CPU 所運行的可能是 guest OS 的 virtual address. 萬一 guest OS 和 hypervisor 的 MMU 映射方式不同, 兩者所看到的同一個 virtual address 就不會是同樣的 physical address 了.

此時需要第二度的轉換 (所謂 stage 2 [ref 1]).  每一次的 level N descriptor PA , 就相當於 level N+1 descriptor 的 IPA, 根據它, 透過  VTTBR (virtual TTBR) 轉出 level N+1 descriptor 的 PA.

因此, IPA 的功能是表彰 hypervisor mode 中的特殊 level N descriptor PA.

[REF]

  1. ARM Virtualization Extensions – Memory and Interrupts (Part 2) – See more at: http://www.futurechips.org/understanding-chips/arm-virtualization-part-2-memory-interrupts.html#sthash.wtHYHshp.dpuf
  1. https://en.m.wikipedia.org/wiki/India_pale_ale
    India pale ale (IPA) is a hoppy beer style within the broader category of pale ale. 😆

  2. 多谢!
    和 @ZM 一样,我google了半天也没找到IPA的详细解释说明。
    你的这个介绍最直观和全面,
    感谢!

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>