2016-05-02 38 views
2

Virtual memory是在進程間隔離內存併爲每個進程分配自己的地址空間的一種便捷方式。它通過將虛擬地址轉換爲物理地址來工作。虛擬內存相對於直接映射內存的性能影響是什麼?

我已經很熟悉了記憶是如何虛功原理和實現。我不知道的是虛擬內存相對於直接映射內存的性能影響,這不需要翻譯開銷。

請不要說沒有開銷。這顯然是錯誤的,因爲遍歷頁表需要幾次內存訪問。 TLB缺失可能不足以使性能影響可以忽略不計,但是,如果是這種情況,應該有證據。

我也意識到虛擬內存對現代操作系統提供的許多功能的重要性,所以這個問題不是關於虛擬內存是好還是壞(這對大多數用例來說顯然是好事),我純粹要求虛擬內存的性能影響。

我要找的答案是非常類似:虛擬內存在徵收直接映射的x%的開銷,並且這裏是表示紙張。我試圖尋找具有此類結果的論文,但無法找到任何結果。

+0

與您的問題的問題是,任何這種開銷是非線性的,將取決於使用情況。另外,這取決於VM實施的類型。你說的是邏輯內存翻譯還是全虛擬內存開銷? VM開始於20世紀70年代,並在20世紀80年代接管了多用戶系統。所以開銷很低,沒有人會說這件事。 – user3344003

+0

磨機CPU只使用一個單一的全局地址空間,這個地址空間足夠大到64位:http://millcomputing.com/topic/memory/仍然在進程之間進行內存保護,但不需要虛擬地址映射。 – Thilo

+0

@ user3344003我主要是指虛擬到物理地址轉換,因爲在我看來,這是大部分成本都會進來的地方。 –

回答

1

這個問題很難確切回答,因爲虛擬內存是現代系統的一個組成部分,旨在支持虛擬內存和大多數軟件的編寫和使用系統的虛擬內存優化。

但是,在21世紀初期,微軟研究院開發了一個名爲Signularity的研究操作系統,其中,不依賴虛擬內存進行進程隔離。作爲這個項目的一部分,他們發表了一篇論文,分析了硬件支持過程隔離的開銷。該論文標題爲Deconstructing Process Isolation(非付費鏈接here)。在這篇論文中,研究人員寫道:

大多數操作系統使用CPU的內存管理硬件來提供進程隔離,使用兩種機制。首先,進程是 只允許訪問某些物理內存頁面。第二, 特權級別防止不可信代碼操縱系統 資源實現的過程,例如,存儲器管理 單元(MMU)或中斷控制器。這些機制的不重要的性能成本在很大程度上是隱藏的,因爲沒有廣泛使用的替代方法來比較它們。映射從虛擬到物理 地址可以招致由於異常 處理,內聯TLB查找,TLB重新加載,和內核 數據結構的維護開銷高達10-30%,如頁表[29]。另外,虛擬內存 和特權級別增加了進程間通信的成本。

在紙後來他們寫:

虛擬存儲器系統(只有軟件的系統 如SPUR [46]除外)依靠地址轉換的硬件緩存來 避免在每個處理器緩存未命中時訪問頁表。管理 TLB條目有一個成本,Jacob和Mudge估計在模擬MIPS類處理器[0121]的 上5-10%。虛擬內存系統 將其數據以及在某些系統中的代碼也帶入處理器的緩存中,這些緩存消除了用戶代碼和數據。雅各布和Mudge估計 ,與小緩存,這些誘導失誤可以增加10-20%的開銷。此外,他們發現虛擬內存引起的中斷可以將開銷增加到10-30%。其他研究 發現相似或甚至更高的開銷,但實際成本是 非常依賴於系統細節和基準[3,6,10,26,36,40,01,035,164,106,1745,41]。另外,TLB訪問處於許多處理器設計的關鍵路徑[2,3],因此可能會影響處理器時鐘速度。

總的來說,我將這些結果與一粒鹽,因爲研究正在推動一個替代系統。但顯然存在與實現虛擬內存相關的一些開銷,並且本文給出了一種嘗試來量化這些開銷(在評估可能的替代方案的情況下)。我建議閱讀紙張以獲取更多細節。

+1

謝謝,像這樣的東西正是我一直在尋找的東西。我對奇點很熟悉,但從未見過這種紙。謝謝!此外,如果您還沒有看到它,Midori的其中一位開發人員(Singularity的繼任者)有一系列博文,他談論了設計的Midori。這真的很有趣。以下是鏈接:http://joeduffyblog.com/2015/11/03/blogging-about-midori/ –