2015-12-14 60 views
1

根據體系結構概述文檔,Aarch64支持4k和64k頁面。一些CPU也支持16k頁。查看地址翻譯方案的細節我得出這樣的結論:這種CPU 不支持同時存在不同大小的頁面(不同於x86_64允許)。我對嗎?Aarch64上同時存在不同大小的頁面

回答

5

你在這裏混淆了兩個不同但相關的東西 - 頁面大小和粒度。

在AArch64,你有3個可能翻譯顆粒可供選擇,每一個產生一組不同的頁面大小:

  • 4KB顆粒:4KB,2MB和1GB頁面。
  • 16KB顆粒:16KB和32MB頁面。
  • 64KB顆粒:64KB和512MB頁面。

翻譯顆粒定義一般的翻譯政權的各種屬性,所以它適用於整組表,你在,你不能在表格中混合和匹配顆粒的感覺是正確的,雖然它的完全可以同時使用不同粒度的不同的表(例如,在不同的例外水平)。

相比之下,X86總是有4KB的粒度,但頁面大小所提供的範圍取決於模式:

  • 32位:4KB和4MB頁。
  • PAE:4KB和2MB頁面。
  • 64位:4KB,2MB和(如果支持)1GB頁面。

在這兩種情況下,大於基本顆粒的頁面大小都代表中間表級別的塊條目。換句話說,使用共同的4KB顆粒,3電平*,例如:

  • 在第一級表指向的存儲器或者一個自然對準1GB區域,或一個二階的每個有效條目描述1GB地址空間的級別表。
  • 第二級表中的每個有效條目都指向一個自然對齊的2MB內存區域,或者是描述該2MB地址空間的第三級表。
  • 第三級表中的每個有效條目都指向一個自然對齊的4KB內存區域。

*根據實際的地址空間的大小,有可能高於這個第零級表,但既不架構允許在該水平塊條目(它們是不切實際的巨大反正)。對於AArch64,較大的顆粒只支持級別2和3的塊/頁面條目,而64KB顆粒根本不具有級別0。

相關問題