收藏 分销(赏)

章虚拟记忆体技术和虚拟定址.ppt

上传人:人****来 文档编号:14515873 上传时间:2026-10-04 格式:PPT 页数:59 大小:943.54KB 下载积分:10 金币
下载 相关
章虚拟记忆体技术和虚拟定址.ppt_第1页
第1页 / 共59页
章虚拟记忆体技术和虚拟定址.ppt_第2页
第2页 / 共59页


点击查看更多>>
资源描述
,*,按一下以編輯母片標題樣式,按一下以編輯母片,第二層,第三層,第四層,第五層,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第 11 章虛擬記憶體技術和虛擬定址,虛擬記憶體,虛擬記憶體隱藏實體記憶體的底層細節,提供另外一種更方便規劃的記憶環境。,虛擬記憶體建造虛擬的空間圖像,虛擬記憶體涵蓋各種不同的技術和方法。,虛擬範例:位元組定址,還記得:在字組定址的實體記憶體上,把字組定址轉譯成位元組定址,正是虛擬位址的映射觀念。,智慧型控制器會負責把字組定址轉譯成位元組定址。,虛擬術語,MMU記憶體管理單元),記憶體的智慧型控制器,MMU接受處理器所送出的虛擬位址,再轉換成實體位址轉換細節通常隱藏在MMU背後)。,虛擬術語Cont.),虛擬位址,虛擬位址非實體或稱真實位址,目前大部分的處理器使用的位址是虛擬位址,而非實體位址。,虛擬空間,虛擬空間意指所有虛擬位址的集合,可以大於或小於實體空間,多重實體記憶介面,許多電腦可以把多個實體記憶體整合到單一虛擬空間。,MMU可以延伸出更複雜的記憶體組織,比如:整合SRAM和DRAM兩種不同的實體記憶體:,(SRAM一個字組四個位元組),(DRAM一個字組八個位元組),可以使用相同的指令,來存取位元組。,涵蓋雙實體記憶介面的虛擬系統,虛擬定址,如何提供虛擬空間?,比如:,記憶體1的位址 0到 999,記憶體2的位址1000到,只要根據位址編號,MMU就可以知道目標是哪一個實體記憶體,和所使用的存取策略。,每一個虛擬位址總是對應一個等效的實體位置。,這種策略就是所謂的區段化,而這些程式片段就是區段。,分頁位址轉譯的數學觀點,為什麼TLB可以改善效能呢?,實體記憶體都會有其映射的虛擬空間,常駐集合:所有常駐於記憶體的分頁,可以大於或小於實體空間,分頁在外部儲存裝置和記憶體之間的轉移動作,非常耗時。,大部分的應用程式在某個時間點,可能只有一個程序正在執行,顯然載入整個程式,有些浪費!,分頁系統使用2的冪次方,分頁位址轉譯Cont.,選擇2的冪次虛擬位址可以避開麻煩的算術計算,只要使用最簡單的位元分割,就可以讓MMU選擇到正確的實體記憶體,並執行必要的位址轉譯。,分頁在外部儲存裝置和記憶體之間的轉移動作,非常耗時。,不必再次索引分頁表,節省轉譯時間。,改以二進位元排列,發現低階位元排列幾乎相同,唯一不同的只有最高階位元。,為什麼TLB可以改善效能呢?,分頁:一個固定大小的程式區塊,位址映射由MMU負責,又稱為位址轉譯。,雙實體記憶介面的虛擬位址,位址映射,位址映射由MMU負責,又稱為位址轉譯。,如同之前範例:,記憶體1的虛擬位址與實體位址相同,因此直接轉送這些虛擬位址給記憶體1;,記憶體2的虛擬位址從1000開始,因此MMU必須在轉送給記憶體2之前,就先把虛擬位址轉譯到真實位址。,執行位址轉譯的執行步驟,避開計算,數學計算成本昂貴,盡量避開數學計算,解決的方法應該是:謹慎地使用2的冪次位元,以最簡單的虛擬位址分割方式,完成必要的位址轉譯。,2的冪次範例,1000個位元組不是2的冪次方,實體記憶體應該改成210=1024位元組,最好改成,位址 0到1023給記憶體1,位址1024到2047給記憶體2,二進位位址範例,以十進位的眼光來看,這些數值似乎不怎麼相似!改以二進位元排列,發現低階位元排列幾乎相同,唯一不同的只有最高階位元。,重點,選擇2的冪次虛擬位址可以避開麻煩的算術計算,只要使用最簡單的位元分割,就可以讓MMU選擇到正確的實體記憶體,並執行必要的位址轉譯。,非連續位址,連續位址,虛擬位址從零開始到最大位址,連續不斷。,每一個虛擬位址總是對應一個等效的實體位置。,非連續位址,實體記憶體都會有其映射的虛擬空間,使用者有權選擇記憶體的數量,或省略某些實體記憶體,這表示部分的虛擬位址將無法使用。,組合實體位址可能會出現非連續位址,造成虛擬空間出現漏洞,非連續位址圖,一旦處理器存取到漏洞,將出現錯誤,程式設計師受到的影響,虛擬空間可能是連續位址,每個位址會映射到一個實體記憶體的位置;另外,虛擬空間也可能非連續,造成虛擬空間出現一個或多個空洞,一旦處理器嘗試讀寫這些空洞,將因為找不到等效的實體記憶體,而出現錯誤。,虛擬記憶體的動機,硬體整合同質性,程式規劃便利性,支援多重程式,程式和資料保護,多重虛擬空間和多重程式執行,目標:多重程式執行,早期因為記憶體資源的衝突問題,多重程式執行是不可行的。,因此,必須有能力防止程式之間彼此的衝突與干擾。,技巧:提供各個程式擁有自己的虛擬位址空間,各自獨力互不干擾。,一個實體四個虛擬空間範例,多階層虛擬化,MMU可以把多重虛擬位址轉譯到單一實體記憶體。,MMU硬體還可以執行其它不同的虛擬化映射,比如:,映射到多個實體記憶體,把位元組位址轉譯到字組位址。,動態虛擬空間的建立技術,基底-界線暫存器,區段,分頁請求,基底-界限暫存器,使用兩個暫存器:基底暫存器和界限暫存器,來界定出虛擬空間的位置。,在致能MMU之前,必須先載入數值到這兩個暫存器:,基底暫存器儲存實體記憶體的位址,剛好指向虛擬空間的開頭。,界限暫存器則儲存整個虛擬空間的大小。,使用基底-界限暫存器的虛擬機制,界限的保護,為什麼要多一個界限暫存器呢?,答案就是:保護!,界限暫存器用來保證:程式不會超過其管轄範圍。,為了實現這種保護功能,MMU必須檢查每一個記憶體參考,一旦存取的記憶體位址跳出M,就會發生錯誤。,保護觀念,支援多重程式執行的虛擬記憶體必須能夠提供保護,防止程式讀取或改變其它程式所座落的記憶體內容。,區段,基底-界限的虛擬技術稱為粗粒映射。,另一種稱為細粒映射。,典型來看,電腦結構師發現:,應用程式內部包含某些程序和呼叫流程,如果整個載入到記憶體時,會佔據許多空間。,大部分的應用程式在某個時間點,可能只有一個程序正在執行,顯然載入整個程式,有些浪費!,區段問題,細粒映射只有需要這些區塊時,才載入記憶體,不必載入全部程式到記憶體。,程式片段可以先放在外部儲存裝置,有需求時再載入到記憶體,這種策略就是所謂的區段化,而這些程式片段就是區段。,區段問題:作業系統移動資料進出時,會受到不同區段大小的影響,容易造成記憶體的碎裂化。,區段結論,區段是一種虛擬記憶體策略,通常意指:程式被分割成不同大小的區塊,只有需要這些區塊時,才會將區塊放到記憶體內,然而目前比較少用區段觀念,因為區段容易導致記憶體的碎裂。,分頁請求,相對區段而言,另一種比較成功的分頁請求技術。,分頁請求把所有的程式分割成固定大小的區塊,稱為分頁。,分頁大小,早期,選擇512 B或1 KB分頁大小。,近年,Pentium使用4KB分頁。,分頁請求具備的兩個技術,分頁硬體,用來映射位址和偵測分頁錯誤。,分頁軟體,用來交換外部儲存裝置和實體記憶體之間的分頁。,分頁硬體,分頁硬體讓軟體通常是作業系統可以請求相關的分頁事宜,包含:指定分頁位址、使用虛擬位址執行應用程式、等。,硬體會轉譯記憶體位址,但是,如果硬體存取不到分頁所指定的位址,就會發生分頁錯誤。,分頁錯誤可能遺失分頁,硬體的責任會通知作業系統有個錯誤發生了,讓軟體決定並解決問題。,分頁軟體,分頁軟體必須決定,那些分頁放在記憶體,哪些放在外部儲存裝置。,一旦需要分頁時,軟體會負責請求動作。,硬體報告分頁錯誤後,分頁軟體必須接手。,分頁軟體必須讀取必要的分頁到記憶體。,分頁硬體和分頁軟體必須一起工作,分頁錯誤發生後,硬體必須儲存當時的狀態。,軟體必須瞭解如何規劃MMU的細節動作。,界限暫存器用來保證:程式不會超過其管轄範圍。,細粒映射只有需要這些區塊時,才載入記憶體,不必載入全部程式到記憶體。,可以使用相同的指令,來存取位元組。,分頁硬體讓軟體通常是作業系統可以請求相關的分頁事宜,包含:指定分頁位址、使用虛擬位址執行應用程式、等。,非真實的位址空間給處理器,為了瞭解分頁硬體,可把整個位址空間分割成固定大小的分頁。,程式設計師可以控制程式的迴圈,重複地處理陣列,字元陣列AN,M以列排序地儲存在記憶體上,下列迴圈指令:,分頁硬體,用來映射位址和偵測分頁錯誤。,讓執行在處理器的應用程式位址總是由零開始。,一個實體四個虛擬空間範例,1000個位元組不是2的冪次方,假設分頁大小為固定的K位元組,最簡單的分頁表就是:儲存分頁號碼的一維陣列索引。,在致能MMU之前,必須先載入數值到這兩個暫存器:,TLB特殊高速硬體設備常用來最佳化分頁系統的效能表現,沒有 TLB的虛擬記憶體速度顯然太慢!,選擇2的冪次虛擬位址可以避開麻煩的算術計算,只要使用最簡單的位元分割,就可以讓MMU選擇到正確的實體記憶體,並執行必要的位址轉譯。,分頁置換,一開始,虛擬記憶體會把分頁搬到記憶體內部,如果記憶體滿載,應用程式繼續要求新的分頁,則系統必須回收現有的分頁,讓出空間給新的分頁,稱為分頁置換。,分頁置換與效能有相當的關聯,分頁在外部儲存裝置和記憶體之間的轉移動作,非常耗時。,分頁術語,分頁:一個固定大小的程式區塊,框架:剛好容納分頁的實體記憶位置,常駐狀態:分頁已經置放在記憶體框架內部,稱該分頁進入常駐狀態。,常駐集合:所有常駐於記憶體的分頁,分頁資料結構,整個分頁請求的資料結構,就是所謂的分頁表。,最簡單的分頁表就是:儲存分頁號碼的一維陣列索引。,索引依序標示為0、1、等。,每個分頁表項目不是null指標,就是分頁的實體位址。,分頁表,分頁位址轉譯,為了瞭解分頁硬體,可把整個位址空間分割成固定大小的分頁。,分頁位址轉譯Cont.),假設分頁大小為固定的K位元組,把虛擬位址V轉譯到實體位址P,需要以下步驟:,先決定虛擬位址V的分頁號碼,把分頁號碼當作分頁表索引,找到該分頁的第一個位元組位址。,決定V離第一個位元組位址的距離,然後移動到該記憶體框架同樣距離的位址。,分頁位址轉譯的數學觀點,假設分頁號碼為N,如下:,偏移位址O,如下:,O=V modulo K,虛擬位址V可以使用分頁表N和偏移位址O,轉譯成對應的實體位址P,如下:,P=分頁表N+O,使用2的冪次,算術運算成本昂貴,分頁系統使用2的冪次方,即每一個分頁可以容納2q個位元組,,分頁表改由位元萃取,取出記憶體位址,MMU執行運算,把虛擬位址V轉譯成實體位址P:,P=分頁表高階位元(V)or 低階位元(V),MMU的硬體轉譯工作圖,出現、运用、修改位元,分頁表最常使用的控制位元,協調分頁軟硬體的相關運作。,分頁表儲存,哪麼分頁表要放在哪裡?,某些系統會把分頁表儲存在MMU晶片。,有些處理器把分頁表放在記憶體!,儲存在實體記憶體的分頁表,分頁效率,記憶體是電腦系統中,重複使用最頻繁的資源。,想把分頁表放在記憶體,必須有足夠的效率,避免成為瓶頸,TLB,TLB轉換後備緩衝器是一種特殊高速硬體,可以用來進行分頁表的查閱動作,最佳化分頁請求的效能。,TLB是一種CAM內容定址記憶體),每當MMU轉譯位址時,總會在TLB上置放一份拷貝,讓系統進行高速查閱。,如果在TLB內找不到相關的資訊,則會繼續進行標一般準的位址轉譯動作。,TLB的效能,為什麼TLB可以改善效能呢?,處理器傾向連續擷取記憶體指令,這種連續擷取意味:,直接運用下一個指令的機率很高,不必再次索引分頁表,節省轉譯時間。,運用TLB的效能改善相當明顯。,TLB的重要性,TLB特殊高速硬體設備常用來最佳化分頁系統的效能表現,沒有 TLB的虛擬記憶體速度顯然太慢!,對程式設計師的影響,經驗顯示:分頁請求對大部分的電腦程式而言,運作良好!,因此,程式設計師傾向,把整個程序碼放到單一分頁,資料物件盡量集中在連續的記憶體位置,愈多次的存取動作愈能提昇執行的效能,某些編譯器也將資料項目填入分頁,來最佳化效能。,陣列存取,陣列存取可能會影響虛擬記憶體的效能問題,陣列在記憶體的排列方式通常有兩種:,列排序,行排序,列排序,二維的位元組陣列Ai,j的位置如下:,位置(A)+iQ+j,其中,Q是每一列的位元組數目。,最佳化的列排序,程式設計師可以控制程式的迴圈,重複地處理陣列,字元陣列AN,M以列排序地儲存在記憶體上,下列迴圈指令:,for i=1 to N,for j=1 to M,Ai,j=0;,未最佳化的列排序,如果改以行來儲存記憶體,則迴圈處理可能需要較少的執行時間:,for j=1 to M,for i=1 to N,Ai,j=0;,結論,虛擬記憶體系統提供,非真實的位址空間給處理器,隱藏底層實體記憶體的相關細節,提供程式設計師方便的開發環境、支援多重程式、和保護。,讓執行在處理器的應用程式位址總是由零開始。,結論Cont.),目前存在各種不同的虛擬記憶體結構,虛擬技術包含,基底邊界,區段,和分頁請求,分頁請求是目前最受到歡迎的虛擬技術,分頁請求使用分頁表作映射動作,TLB高速搜尋機制讓分頁表查閱更有效率,結論Cont.),虛擬記憶體系統也使用2的冪次方,以避開繁雜的算術或邏輯運算,直接轉譯位址。,谢谢观看,
展开阅读全文

开通  VIP、SVIP  下载更划算
下载10份以上建议开通 VIP 会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        关注我们

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服