深入理解計算機系統基礎虛擬記憶體---端到端的地址翻譯
端到端的地址翻譯
參考:深入理解計算機系統基礎第三版
提示:以下是本篇文章正文內容,下面案例可供參考
一、基礎概念
1.地址翻譯:地址翻譯是一個N元素的虛擬地址空間(VAS)中的元素和一個M元素的實體地址空間(PAS)中元素之間的對映。
地址翻譯符號小結:
**虛擬儲存器,被組織成為一個由存放在磁碟上的N個連續的位元組大小的單元組成的陣列,每個位元組都有一個唯一的虛擬地址,作為到陣列的索引。將主存看成一個儲存在磁碟上的地址空間的快取記憶體,在主存中只儲存活動區域,並根據需要在磁碟和主存之間來回傳送資料,為每個程式提供了一致的地址空間,保護了每個程式的地址空間不被其他程式破壞。計算機系統的主存被組織成一個由M個連續的位元組大小的單元組成的陣列。每個位元組都有一個惟一的實體地址,從0開始。根據虛擬定址,CPU生成一個虛擬地址,通過MMU翻譯成實體地址,來訪問主存。
**頁:虛擬儲存器(VM)被分割為虛擬頁(VP),物理儲存器被分割為物理頁(PP),大小為P位元組,P=2p。
虛擬頁面的集合分為三個不相交的子集:
未分配的:VM系統還未分配的頁。未分配的塊沒有資料和它們相關聯,不佔用磁碟空間。
快取的:當前快取在物理儲存器中的已分配頁。
未快取的:沒有快取在物理儲存器中的已分配頁。
**頁表:頁表記錄了虛擬頁和物理頁的對映關係。虛擬地址空間中的每個頁在頁表中的一個固定偏移量處都有一個頁表條目(PTE)。每個PTE由一個有效位和一個n位地址欄位組成。有效位表明了該虛擬地址當前是否被快取在主存中,地址欄位表示主存中物理頁的起始位置。
**頁命中:CPU讀虛擬儲存器的一個字時,地址翻譯硬體將虛擬地址作為一個索引,定位到一個PTE,判斷有效位,根據PTE中的物理儲存器地址構造出這個字的實體地址。
**缺頁:缺頁,快取不命中。觸發一個缺頁異常。
二、解題過程
1.例題假設
例題:
這個示例是執行在有一個TLB和L1 d-cache的小系統上。做出如下假設:
*記憶體是按位元組定址的。
*記憶體訪問是針對1位元組的字的(不是4位元組的字)。
*虛擬地址是14位長的(n=14)。
*實體地址是12位長的(m=12)。
*頁面大小是64位元組(p=64)。
*TLB是四路組相聯,總共有16個條目。
*L1 d-cache 是物理定址、直接對映的,行大小為4位元組,面總共有16個組。
圖9-19展示了虛擬地址和實體地址的格式。因為每個頁面是2^6=64個位元組,所以虛擬地址和實體地址的低六位分別作為VPO和PPO。虛擬地址的高8位作為VPN。實體地址的高6位作為PPN。
此圖展示了小記憶體系統的一個快照,包括TLB(圖a)、頁表的一部分(圖b)和L1快取記憶體(圖c)。在TLB和快取記憶體的圖上邊,我們還展示了訪問這些硬體裝置時硬體是如何劃分虛擬地址和實體地址的位的。
*TLB 。TLB是利用VPN的位進行虛擬定址的。因為TLB有四個組,所以VPN的低2位就作為組索引(TLBI)。VPN中剩下的高6位最為標記(TLBT),用來區別可能對映到同一個TLB組的不同的VPN。
*頁表。這些頁表是一個單級設計,一共有2^8=256個頁表條目(PTE)。然而,我們只對這些條目中的開頭16個感興趣,為了方便,我們用索引它的VPN來標識每個PTE;但是要記住這些VPN並不是頁表的一部分,也不儲存在記憶體中。另外,注意每個無效PTE的PPN都用一個破折號來表示,以加強一個概念:無論剛好這裡儲存的是什麼位值,都是沒有任何意義的。
*快取記憶體。直接對映的快取是通過實體地址中的欄位來定址的。因為每個塊都是4位元組,所以實體地址的低兩位作為塊偏移(CO)。因為有16組,所以接下來的4位就用來表示組索引(CI)。剩下的6位作為標記(CT)。
2.課後習題
示例:
解:
A. 虛擬地址:0x03d7 十六進位制寫成二進位制為 0000 0011 1101 0111 ,虛擬地址是14位長,即 00001111010111。
B.虛擬地址低6位作為VPO,即010111 。高8位為VPN,即00001111,寫成十六進位制為0x0F。
因為TLB有四個組,所以VPN的低2位就作為組索引(TLBI),即11,寫成十六進位制為0x03。VPN中剩下的高6位最為標記(TLBT),即000011,寫成十六進位制為0x03。
去表a中查詢資料。TLBI為03,是第三組,標記位為03,查詢資料得 PPN為0D。TLB命中,沒有缺頁。
C.已知PPN為0D,PPO等於VPO,實體地址高6位為PPN,低6位為PPO,由此可得,實體地址格式為001101010111。
D.因為每個塊都是4位元組,所以實體地址的低兩位作為塊偏移(CO),即11,寫成十六進位制為0x3。因為有16組,所以接下來的4位就用來表示組索引(CI),即0101,寫成十六進位制為0x5。剩下的6位作為標記(CT),即001101,寫成十六進位制為0x0D。查c快取記憶體表得:返回的快取位元組為0x1D
總結
以上就上端到端的地址翻譯的基礎知識和課後習題。做此類題型,要牢記各種基礎概念,清楚地址翻譯過程,能夠根據各種標誌從頁表、快取記憶體表中查到有效資訊。
相關文章
- 計算機作業系統——虛擬記憶體與實體記憶體計算機作業系統記憶體
- 讀懂作業系統之虛擬記憶體地址翻譯原理分析篇(二)作業系統記憶體
- Linux雲端計算技術學習:虛擬機器堆記憶體結構Linux虛擬機記憶體
- 【Java基礎】實體記憶體&虛擬記憶體Java記憶體
- 深入理解虛擬機器之Java記憶體區域虛擬機Java記憶體
- 深入理解Java虛擬機器(自動記憶體管理機制)Java虛擬機記憶體
- 深入理解JVM虛擬機器-JVM記憶體區域與記憶體溢位JVM虛擬機記憶體溢位
- 深入理解Java虛擬機器 --- 記憶體分配與回收策略Java虛擬機記憶體
- 深入理解Java虛擬機器筆記-自動記憶體管理機制Java虛擬機筆記記憶體
- Linux雲端計算虛擬化-Kubernetes 容器叢集管理系統基礎概念講述Linux
- 深入理解Java虛擬機器之JVM記憶體佈局篇Java虛擬機JVM記憶體
- 深入理解Java虛擬機器-Java記憶體區域與記憶體溢位異常Java虛擬機記憶體溢位
- 虛擬記憶體系統——瞭解記憶體的工作原理記憶體
- 深入理解計算機系統計算機
- 深入理解Java記憶體模型(一)——基礎Java記憶體模型
- 深入理解 Java 虛擬機器:Java 記憶體區域透徹分析Java虛擬機記憶體
- 深入理解Java虛擬機器-Java記憶體區域透徹分析Java虛擬機記憶體
- 深入理解JVM虛擬機器-物件引用,GC與記憶體分配回收JVM虛擬機物件GC記憶體
- 深入理解Java虛擬機器筆記之六記憶體分配與回收策略Java虛擬機筆記記憶體
- 深入理解Java虛擬機器之物件的記憶體佈局、訪問定位Java虛擬機物件記憶體
- 翻譯 | 理解Java中的記憶體洩漏Java記憶體
- 深入理解Java虛擬機器-垃圾收集器與記憶體分配策略Java虛擬機記憶體
- 深入理解Java虛擬機器 - 垃圾收集器與記憶體分配策略Java虛擬機記憶體
- 深入理解計算機系統:程式計算機
- 詳細理解Linux虛擬記憶體Linux記憶體
- 深入理解計算機系統-學習筆記 (1)計算機筆記
- 深入理解計算機系統學習- 計算機系統漫遊計算機
- 深入理解JVM虛擬機器1:JVM記憶體的結構與消失的永久代JVM虛擬機記憶體
- 深入理解JVM虛擬機器11:Java記憶體異常原理與實踐JVM虛擬機Java記憶體
- [翻譯]理解 HTTP 基礎HTTP
- 雲端計算基礎
- win10怎麼加虛擬記憶體_win10系統增加虛擬記憶體教程Win10記憶體
- 深入理解併發程式設計藝術之計算機記憶體模型程式設計計算機記憶體模型
- win10怎麼清除虛擬記憶體 win10系統虛擬記憶體清理的辦法Win10記憶體
- 《深入理解Java虛擬機器》(二)--垃圾收集器與記憶體分配策略(2)Java虛擬機記憶體
- win11系統設定虛擬記憶體記憶體
- windows10系統如何增加虛擬記憶體Windows記憶體
- 《深入理解 Java 虛擬機器》筆記整理Java虛擬機筆記