1. 程式人生 > >Linux核心追蹤[4.14] X86的5級頁表管理

Linux核心追蹤[4.14] X86的5級頁表管理

        X86的4級頁表已經能夠管理48bit(256TB)的VA,以及64TB的PA。不過由於某些供應商釋出了超過64T的超大實體記憶體,因此需要實現了一個5級頁表特性來進行支援。        下面是原來4級頁表的48bitVA地址空間,原先的X64晶片規定,高8位永遠與第48bit(從0開始算即47bit)相同。因此從硬體上只使用4級頁表。

    0000000000000000 – 00007fffffffffff(128TB)為使用者空間,
    ffff800000000000 – ffffffffffffffff(128TB)為核心空間。


[Four-level page tables]

        新的Intel晶片的MMU硬體規定可以進行5級頁表管理。擴充套件9位達到57bit VA和52bit PA,支援喪心病狂的128PB VA和4PB PA,甚至大頁都達到256G。         核心在PGD和PUD之間,增加了一個叫P4D的層次。不過新的5級頁表可以通過核心cmdline來控制核心啟用4級還是5級頁表,這個比原先4級頁表的支援又智慧了不少(OS發行版不用出兩個版本了)。        即使在cmdline配置了5級頁表的情況下。預設情況下,Userspace App
的VA仍然是47bit(即128TB),希望將高於47bit的地址空間用於Userspace App可以使用prctl的介面使能高bit VA功能(https://lwn.net/Articles/717300/)。

遺留問題: 1. 現有的4級頁表已經可以達到256TB的VA,為什麼不能管理超過64TB(比如128TB)的PA呢? 2. 5級頁表情況下的核心地址空間範圍是多少?
參考: https://lwn.net/Articles/717293/
http://blog.csdn.net/hmsiwtv/article/details/39956981

http://blog.csdn.net/junmuzi/article/details/18056115
其它4.14版本特性:http://blog.csdn.net/lovelycheng/article/details/78545789