天天看點

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)為核心空間。

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

        新的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

繼續閱讀