国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

端到端的地址翻譯(虛擬地址是怎樣取到相應高速緩存的數據的?)

2024-06-28 14:31:50
字體:
來源:轉載
供稿:網友

【0】寫在前面-為什么需要虛擬存儲器?

0.1)定義:虛擬存儲器其實就是借用了磁盤地址空間,還記得當初我們安裝CentOS,劃分的swap 文件系統嗎?

0.2)VM簡化了鏈接和加載、代碼和數據共享,以及應用程序的存儲器分配:(摘自CSAPP)

  • (1) 簡化鏈接: 每個進程都擁有獨立的虛擬地址空間, 且空間范圍一致;(它是可重定向目標文件使用相對物理地址的前提)
  • (2) 簡化加載: 加載器從不實際拷貝任何數據從磁盤到存儲器。每個頁初次被調用哦時, 要么是CPU取指時引用, 要么是一條正在執行的指令引用一個存儲器位置時引用,VM系統會按需自動調入數據頁;
  • (3) 簡化共享: 多個虛擬頁面可以映射到同一個共享物理頁面上;
  • (4) 簡化存儲器分配: 當需要額外的堆空間, os分配連續的虛擬存儲器頁面,這些VP可以映射都任意的物理頁面,這些物理頁面可以任意分散在存儲器中;

0.3)我還想多問一句,為什么有了高速緩存,還需要TLB-translation lookaside buffer,翻譯后備緩沖器呢?

Reason:

引入局部性原則: (摘自CSAPP)

局部性原則保證了在任意時刻, 程序將往往在一個較小的活動頁面集合上工作,這個集合叫做工作集(working set)或者常駐集(resident set)。換句話說, 局部性原則揭示了一個現象:在一段時間內,我們會反復調入或調入同一個或幾個虛擬頁頁面;而且,每次CPU產生一個VA時, MMU就必須查閱PTE, 	以便將VA翻譯為PA, 注意是每次,所以開銷很大;

解決方法: 為了消除這樣的開銷,在MMU中包括了一個關于PTE的小緩存,稱為翻譯后備緩沖器;

關鍵點: 所有的地址翻譯步驟都是在芯片上的MMU中執行的, 因此執行速度非常快;

你要知道計算機中共有7級存儲結構,訪問CPU中的存儲空間(MMU)的速度比訪問緩存的速度可是快了幾個數量級的。

【1】說了這么多,看個荔枝(以下TLB + 頁表 + 高速緩存 是我們手動模擬的)(圖片摘自CSAPP):

這里寫圖片描述
這里寫圖片描述

【2】題目:說有虛擬地址 0x03d7, 虛擬存儲器系統如何將其翻譯成物理地址和訪問緩存的。

【3】解答:將以上虛擬地址用二進制表示,如下:

這里寫圖片描述

我們看到:VPN=bit13~bit6 =0x0f;VPO=bit5~bit0 = 0x17;TLBT(行索引or標記)=bit13~bit8=0x03; (這里,為什么我管標記叫做行索引,說到本質,叫其行索引,并沒有什么不妥,因為本實例中,cache采用的是直接映射,即每個組就只有一行,所以行索引在此處無意;但若cache是采用組相聯映射或全相聯映射的話,每組就有多行,行索引就起到作用了);TLBI(組索引)=bit7~bit6=0x3;

相關聲明declaration寫在前面:

  • d1) 我們這里是考慮命中的情況,當然,如果不命中, MMU需要從主存中取出相應的PTE;
  • d2) PS: 命中與否,是看TLB中是否有請求的PTE;
  • d3)虛擬地址14位,而物理地址12位;

翻譯過程: (干貨)

  • (1) MMU(MMU存在于CPU中,是硬件)從虛擬地址中抽取VPN=0x0f;
  • (2) 再從VPN中抽取出TLBT(行索引)=0x03, TLBI(組索引)=0x3,用于索引翻譯后備存儲器TLB;
  • (3) 帶著TLBT和TLBI 查看TLB,發現第3組, 有標記位03(當然,這是手動設置的,便于模擬),且有效位=1,故命中;
  • (4) 命中后,將PPN=0D返回給MMU;
  • (5) MMU將PPN=0x0D=bit11~bit6 和 虛擬地址的VPO=0x17=bit5~bit0 連接起來,形成物理地址PA 》》 0x357
    這里寫圖片描述
  • (6) 如上圖所示:我們得到了CT-Cache Tag=0x0D, CI-Cache Index=0x5, CO-Cache Offset=0x3;即得到了緩存標記CT=0x0d,緩存組索引CI=0x5,緩存偏移CO=0x3;
  • (7) 依據CT、CI、CO,查詢高速緩存(c圖), 第5組的標記位-0x0D, 故命中;
  • (8) 在看緩存偏移是0x3,所以取出塊3字節0x1D;


    (Attention)

    對于CT + CI + CO, 我再說的明白一點: CT就是行索引, CI就是組索引, CO就是塊索引;
    Bingo!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 视频| 枞阳县| 南阳市| 黔南| 珠海市| 岳池县| 常山县| 金昌市| 大连市| 景东| 青田县| 革吉县| 崇礼县| 原平市| 新闻| 巴马| 汉源县| 修文县| 揭西县| 曲阜市| 黔江区| 庆安县| 岐山县| 景德镇市| 张家口市| 饶平县| 小金县| 和田县| 两当县| 昌都县| 壶关县| 伊宁市| 梧州市| 东海县| 永新县| 马公市| 衡山县| 安多县| 柞水县| 阿坝| 怀安县|