1 / 58

第 11 章 虛擬記憶體技術和虛擬定址

第 11 章 虛擬記憶體技術和虛擬定址. 虛擬記憶體. 虛擬記憶體隱藏實體記憶體的底層細節,提供另外一種更方便規劃的記憶環境。 虛擬記憶體建造虛擬的空間圖像 虛擬記憶體涵蓋各種不同的技術和方法。. 虛擬範例:位元組定址. 還記得:在字組定址的實體記憶體上,把字組定址轉譯成位元組定址,正是虛擬位址的映射觀念。 智慧型控制器會負責把字組定址轉譯成位元組定址。. 虛擬術語. MMU (記憶體管理單元) 記憶體的智慧型控制器 MMU 接受處理器所送出的虛擬位址,再轉換成實體位址(轉換細節通常隱藏在 MMU 背後)。. 虛擬術語( Cont. ). 虛擬位址

corbin
Télécharger la présentation

第 11 章 虛擬記憶體技術和虛擬定址

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第 11 章虛擬記憶體技術和虛擬定址

  2. 虛擬記憶體 • 虛擬記憶體隱藏實體記憶體的底層細節,提供另外一種更方便規劃的記憶環境。 • 虛擬記憶體建造虛擬的空間圖像 • 虛擬記憶體涵蓋各種不同的技術和方法。

  3. 虛擬範例:位元組定址 • 還記得:在字組定址的實體記憶體上,把字組定址轉譯成位元組定址,正是虛擬位址的映射觀念。 • 智慧型控制器會負責把字組定址轉譯成位元組定址。

  4. 虛擬術語 • MMU(記憶體管理單元) • 記憶體的智慧型控制器 • MMU接受處理器所送出的虛擬位址,再轉換成實體位址(轉換細節通常隱藏在MMU背後)。

  5. 虛擬術語(Cont.) • 虛擬位址 • 虛擬位址非實體(或稱真實)位址 • 目前大部分的處理器使用的位址是虛擬位址,而非實體位址。 • 虛擬空間 • 虛擬空間意指所有虛擬位址的集合 • 可以大於或小於實體空間

  6. 多重實體記憶介面 • 許多電腦可以把多個實體記憶體整合到單一虛擬空間。 • MMU可以延伸出更複雜的記憶體組織 • 比如:整合SRAM和DRAM兩種不同的實體記憶體: (SRAM一個字組四個位元組) (DRAM一個字組八個位元組) • 可以使用相同的指令,來存取位元組。

  7. 涵蓋雙實體記憶介面的虛擬系統

  8. 虛擬定址 • 如何提供虛擬空間? • 比如: • 記憶體1的位址 0到 999 • 記憶體2的位址1000到1999 • 只要根據位址編號,MMU就可以知道目標是哪一個實體記憶體,和所使用的存取策略。

  9. 雙實體記憶介面的虛擬位址

  10. 位址映射 • 位址映射由MMU負責,又稱為位址轉譯。 • 如同之前範例: • 記憶體1的虛擬位址與實體位址相同,因此直接轉送這些虛擬位址給記憶體1; • 記憶體2的虛擬位址從1000開始,因此MMU必須在轉送給記憶體2之前,就先把虛擬位址轉譯到真實位址。

  11. 執行位址轉譯的執行步驟

  12. 避開計算 • 數學計算成本昂貴 • 盡量避開數學計算 • 解決的方法應該是:謹慎地使用2的冪次位元,以最簡單的虛擬位址分割方式,完成必要的位址轉譯。

  13. 2的冪次範例 • 1000個位元組不是2的冪次方 • 實體記憶體應該改成210=1024位元組 • 最好改成 • 位址 0到1023給記憶體1 • 位址1024到2047給記憶體2

  14. 二進位位址範例 • 以十進位的眼光來看,這些數值似乎不怎麼相似!改以二進位元排列,發現低階位元排列幾乎相同,唯一不同的只有最高階位元。

  15. 重點 選擇2的冪次虛擬位址可以避開麻煩的算術計算,只要使用最簡單的位元分割,就可以讓MMU選擇到正確的實體記憶體,並執行必要的位址轉譯。

  16. 非連續位址 • 連續位址 • 虛擬位址從零開始到最大位址,連續不斷。 • 每一個虛擬位址總是對應一個等效的實體位置。 • 非連續位址 • 實體記憶體都會有其映射的虛擬空間 • 使用者有權選擇記憶體的數量,或省略某些實體記憶體,這表示部分的虛擬位址將無法使用。 • 組合實體位址可能會出現非連續位址 • 造成虛擬空間出現漏洞

  17. 非連續位址圖 • 一旦處理器存取到漏洞,將出現錯誤

  18. 程式設計師受到的影響 虛擬空間可能是連續位址,每個位址會映射到一個實體記憶體的位置;另外,虛擬空間也可能非連續,造成虛擬空間出現一個或多個空洞,一旦處理器嘗試讀寫這些空洞,將因為找不到等效的實體記憶體,而出現錯誤。

  19. 虛擬記憶體的動機 • 硬體整合同質性 • 程式規劃便利性 • 支援多重程式 • 程式和資料保護

  20. 多重虛擬空間和多重程式執行 • 目標:多重程式執行 • 早期因為記憶體資源的衝突問題,多重程式執行是不可行的。 • 因此,必須有能力防止程式之間彼此的衝突與干擾。 • 技巧:提供各個程式擁有自己的虛擬位址空間,各自獨力互不干擾。

  21. 一個實體四個虛擬空間範例

  22. 多階層虛擬化 • MMU可以把多重虛擬位址轉譯到單一實體記憶體。 • MMU硬體還可以執行其它不同的虛擬化映射,比如: • 映射到多個實體記憶體 • 把位元組位址轉譯到字組位址。

  23. 動態虛擬空間的建立技術 • 基底-界線暫存器 • 區段 • 分頁請求

  24. 基底-界限暫存器 • 使用兩個暫存器:基底暫存器和界限暫存器,來界定出虛擬空間的位置。 • 在致能MMU之前,必須先載入數值到這兩個暫存器: • 基底暫存器儲存實體記憶體的位址,剛好指向虛擬空間的開頭。 • 界限暫存器則儲存整個虛擬空間的大小。

  25. 使用基底-界限暫存器的虛擬機制

  26. 界限的保護 • 為什麼要多一個界限暫存器呢? • 答案就是:保護! • 界限暫存器用來保證:程式不會超過其管轄範圍。 • 為了實現這種保護功能,MMU必須檢查每一個記憶體參考,一旦存取的記憶體位址跳出M,就會發生錯誤。

  27. 保護觀念 支援多重程式執行的虛擬記憶體必須能夠提供保護,防止程式讀取或改變其它程式所座落的記憶體內容。

  28. 區段 • 基底-界限的虛擬技術稱為粗粒映射。 • 另一種稱為細粒映射。 • 典型來看,電腦結構師發現: • 應用程式內部包含某些程序和呼叫流程,如果整個載入到記憶體時,會佔據許多空間。 • 大部分的應用程式在某個時間點,可能只有一個程序正在執行,顯然載入整個程式,有些浪費!

  29. 區段問題 • 細粒映射只有需要這些區塊時,才載入記憶體,不必載入全部程式到記憶體。 • 程式片段可以先放在外部儲存裝置 • 有需求時再載入到記憶體 • 這種策略就是所謂的區段化,而這些程式片段就是區段。 • 區段問題:作業系統移動資料進出時,會受到不同區段大小的影響,容易造成記憶體的碎裂化。

  30. 區段結論 區段是一種虛擬記憶體策略,通常意指:程式被分割成不同大小的區塊,只有需要這些區塊時,才會將區塊放到記憶體內,然而目前比較少用區段觀念,因為區段容易導致記憶體的碎裂。

  31. 分頁請求 • 相對區段而言,另一種比較成功的分頁請求技術。 • 分頁請求把所有的程式分割成固定大小的區塊,稱為分頁。 • 分頁大小 • 早期,選擇512 B或1 KB分頁大小。 • 近年,Pentium使用4KB分頁。

  32. 分頁請求具備的兩個技術 • 分頁硬體,用來映射位址和偵測分頁錯誤。 • 分頁軟體,用來交換外部儲存裝置和實體記憶體之間的分頁。

  33. 分頁硬體 • 分頁硬體讓軟體(通常是作業系統)可以請求相關的分頁事宜,包含:指定分頁位址、使用虛擬位址執行應用程式、…等。 • 硬體會轉譯記憶體位址,但是 • 如果硬體存取不到分頁所指定的位址,就會發生分頁錯誤。 • 分頁錯誤可能遺失分頁 • 硬體的責任會通知作業系統有個錯誤發生了,讓軟體決定並解決問題。

  34. 分頁軟體 • 分頁軟體必須決定 • 那些分頁放在記憶體,哪些放在外部儲存裝置。 • 一旦需要分頁時,軟體會負責請求動作。 • 硬體報告分頁錯誤後,分頁軟體必須接手。 • 分頁軟體必須讀取必要的分頁到記憶體。 • 分頁硬體和分頁軟體必須一起工作 • 分頁錯誤發生後,硬體必須儲存當時的狀態。 • 軟體必須瞭解如何規劃MMU的細節動作。

  35. 分頁置換 • 一開始 • 虛擬記憶體會把分頁搬到記憶體內部 • 如果記憶體滿載,應用程式繼續要求新的分頁,則系統必須回收現有的分頁,讓出空間給新的分頁,稱為分頁置換。 • 分頁置換與效能有相當的關聯 • 分頁在外部儲存裝置和記憶體之間的轉移動作,非常耗時。

  36. 分頁術語 • 分頁:一個固定大小的程式區塊 • 框架:剛好容納分頁的實體記憶位置 • 常駐狀態:分頁已經置放在記憶體框架內部,稱該分頁進入常駐狀態。 • 常駐集合:所有常駐於記憶體的分頁

  37. 分頁資料結構 • 整個分頁請求的資料結構,就是所謂的分頁表。 • 最簡單的分頁表就是:儲存分頁號碼的一維陣列索引。 • 索引依序標示為0、1、…等。 • 每個分頁表項目不是null指標,就是分頁的實體位址。

  38. 分頁表

  39. 分頁位址轉譯 • 為了瞭解分頁硬體,可把整個位址空間分割成固定大小的分頁。

  40. 分頁位址轉譯(Cont.) • 假設分頁大小為固定的K位元組 • 把虛擬位址V轉譯到實體位址P,需要以下步驟: • 先決定虛擬位址V的分頁號碼 • 把分頁號碼當作分頁表索引,找到該分頁的第一個位元組位址。 • 決定V離第一個位元組位址的距離,然後移動到該記憶體框架同樣距離的位址。

  41. 分頁位址轉譯的數學觀點 • 假設分頁號碼為N,如下: • 偏移位址O,如下: O = V modulo K • 虛擬位址V可以使用分頁表N和偏移位址O,轉譯成對應的實體位址P,如下: P = 分頁表[N] + O

  42. 使用2的冪次 • 算術運算成本昂貴 • 分頁系統使用2的冪次方 • 即每一個分頁可以容納2q個位元組, • 分頁表改由位元萃取,取出記憶體位址 • MMU執行運算,把虛擬位址V轉譯成實體位址P: P=分頁表[高階位元(V)] or 低階位元(V)

  43. MMU的硬體轉譯工作圖

  44. 出現、使用、修改位元 • 分頁表最常使用的控制位元,協調分頁軟硬體的相關運作。

  45. 分頁表儲存 • 哪麼分頁表要放在哪裡? • 某些系統會把分頁表儲存在MMU晶片。 • 有些處理器把分頁表放在記憶體!

  46. 儲存在實體記憶體的分頁表

  47. 分頁效率 • 記憶體是電腦系統中,重複使用最頻繁的資源。 • 想把分頁表放在記憶體 • 必須有足夠的效率 • 避免成為瓶頸

  48. TLB • TLB(轉換後備緩衝器)是一種特殊高速硬體,可以用來進行分頁表的查閱動作,最佳化分頁請求的效能。 • TLB是一種CAM(內容定址記憶體),每當MMU轉譯位址時,總會在TLB上置放一份拷貝,讓系統進行高速查閱。 • 如果在TLB內找不到相關的資訊,則會繼續進行標一般準的位址轉譯動作。

  49. TLB的效能 • 為什麼TLB可以改善效能呢? • 處理器傾向連續擷取記憶體指令 • 這種連續擷取意味: • 直接運用下一個指令的機率很高 • 不必再次索引分頁表,節省轉譯時間。 • 運用TLB的效能改善相當明顯。

  50. TLB的重要性 TLB特殊高速硬體設備常用來最佳化分頁系統的效能表現,沒有 TLB的虛擬記憶體速度顯然太慢!

More Related