<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      虛擬地址到物理地址與FEAT_VIPT

      介紹
      本文是我讀ARM手冊時根據自己的理解做的一些記錄
      虛擬地址(VA)到物理地址(PA)的轉換是由 MMU(內存管理單元) 和 頁表機制完成的。具體過程如何我舉例分享一下我的理解

      ARM64 虛擬地址結構(假設 4KB 頁大小)
      介紹轉換過程之前先來介紹虛擬地址構成
      虛擬地址一般使用四級頁表結構,通常是 48 位,分段如下:

      VA[47:39] VA[38:30] VA[29:21] VA[20:12] VA[11:0]
      PGD(Page Global Directory)一級頁表 PUD(Page Upper Directory)二級頁表 PMD(Page Middle Directory):三級頁表 PTE(Page Table Entry):四級頁表/物理頁 Offset 頁內偏移/頁內具體地址

      比如地址 0x01234567
      VA[47:39] = 0x0 → PGD 索引
      VA[38:30] = 0x0 → PUD 索引
      VA[29:21] = 0x91 → PMD 索引
      VA[20:12] = 0x1A → PTE 索引
      VA[11:0] = 0x567 → 頁內偏移

      MMU(Memory Management Unit)介紹

      • MMU是處理器中的一個硬件模塊,主要負責:
      • 虛擬地址 → 物理地址轉換
      • 訪問權限檢查(如只讀、用戶/內核態)
      • 緩存控制(決定哪些地址可緩存)
      • 觸發異常(如頁錯誤、權限錯誤)
        本文其實就是在講它的一部分工作過程。

      TLB(Translation Lookaside Buffer)介紹
      介紹轉換過程之前先來介紹TLB,TLB是一個硬件緩存,緩存最近的 VA→PA 映射,用來加速地址轉換,物理上在 MMU 內部或旁邊。
      TLB 存儲的內容包括

      • 鍵(Key):虛擬頁號(VPN)即虛擬地址高位
      • 值(Value):物理頁幀地址(PPN)+ 權限等信息

      轉換過程

      1. 比如CPU 觸發指令訪問請求,使用虛擬地址 0x01234567,以linux為例

      2. MMU 會自動查詢TLB,它問TLB有沒有現成的轉換好的物理地址?具體是指用地址的高位(如 47–12位)作為鍵去查找是否有對應的物理頁幀地址
        如果TLB 命中則返回物理地址結果,否則觸發下面將要提及的頁表遍歷。

      3. MMU 啟動頁表遍歷:

        • 從 TTBR(Translation Table Base Register)獲取頁表基地址
        • 使用 VA 的各段索引依次訪問 PGD → PUD → PMD → PTE
      4. PTE 中記錄了物理頁的起始地址

      5. 將頁內偏移加到物理頁地址上,即物理頁幀地址 + 頁內偏移,得到最終物理地址

      6. 權限檢查:MMU 檢查該頁是否允許讀/寫, 如果如果允許訪問,繼續執行并更新TLB,否則觸發異常。

      VIPT拓展
      如果是要獲取這個地址對應的指令內容,則需要提及ARM 架構中的 FEAT_VIPT(Virtually Indexed, Physically Tagged)指令緩存策略,
      從ARM8.0開始是強制性要求,指的是用虛擬地址索引+物理地址標記來加速訪問。
      ARM 兼容處理器為了兼顧性能與靈活性,在指令緩存中采用 VIPT 策略,我們以一個指令訪問為例,
      假設虛擬地址為 VA = 0x12345678,頁大小為 4KB,緩存大小為 32KB,采用 VIPT 策略。
      步驟 1:使用虛擬地址索引緩存集合(Cache Set)

      • 頁大小為 4KB → 頁內偏移為 12 位(VA[11:0])
      • 假設緩存有 64 個集合(sets),需要 6 位索引 → 通常從 VA[11:6] 提取
      • CPU 立即用 VA 的這部分位定位到某個緩存集合,這一步不需要地址轉換,速度快!

      步驟 2:并行啟動 TLB 查詢

      • 同時,MMU 使用虛擬地址啟動頁表查詢或 TLB 查詢
      • 如果 TLB 命中,直接返回物理地址(PA)
      • 如果 TLB 未命中,走頁表遍歷流程
      • 這一步可能慢,但可以與索引并行進行.

      步驟 3:查詢緩存集合

      • 緩存集合中一般有多個緩存行,每個緩存行都有一個 tag代表物理地址的高位,
      • 我們用 TLB 返回的物理地址與緩存行的 tag 做比較,只有 tag 匹配才命中緩存。
      • tag 必須用物理地址?因為虛擬地址可能存在別名(aliasing)問題 - 兩個不同的虛擬地址可能映射到同一個物理地址。
      • 一個 64B 的緩存行大概是長這樣
      Tag Valid Dirty LRU bits Data[0..63]
      物理地址的高 20 位 該行無/有效 數據被修改后是否已寫回主存 決定哪個緩存行最久未使用 實際存儲的數據塊

      步驟 4:命中則讀取,未命中則訪問主存

      • 如果 tag 匹配 → 命中 → 直接讀取緩存數據
      • 如果 tag 不匹配 → 未命中 → 訪問主存并更新緩存

      VIPT總結與說明

      1. 性能優化:使用虛擬地址索引可以在地址轉換完成前就開始緩存查找,提升速度。
      • 索引使用虛擬地址:用于定位緩存行(Cache Line)
      • 標記Tag使用物理地址:用于驗證緩存行是否匹配
      • CPU 可以立刻用虛擬地址的部分位(通常是頁內偏移)來定位緩存集合(Cache Set),不需要等待(本文第一部分提到)的MMU完成地址轉換(VA → PA)
      • 這就允許緩存查找和 TLB 查詢并行進行,節省時間
      1. 硬件簡化:VIPT 可以減少 TLB(Translation Lookaside Buffer)訪問延遲。
      • 如果緩存查找必須等 TLB 返回結果(如 PIPT 策略),就會引入延遲。而 VIPT 策略允許:
      • 先用虛擬地址索引緩存
      • 同時啟動 TLB 查詢以獲取物理地址用于標簽匹配
      • 如果緩存命中,TLB 查詢結果可以用于驗證
      • 如果緩存未命中,TLB 結果用于訪問主存
      • 這種并行機制顯著減少了等待 TLB 的時間,從而提升了指令訪問速度。
      1. 兼容性考慮:ARM 架構支持多種內存管理單元(MMU)配置,VIPT 更適合嵌入式系統或高性能場景。
      posted @ 2025-10-22 14:57  yangbiao  閱讀(142)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 任我爽精品视频在线播放| 阜平县| 国产无遮挡性视频免费看| 午夜福利国产区在线观看| 亚洲第一国产综合| 亚洲欧美综合中文| 看免费的无码区特aa毛片 | 亚洲成aⅴ人在线观看| 亚洲中文字幕人妻系列| 国产福利精品一区二区 | 和艳妇在厨房好爽在线观看| 久爱无码精品免费视频在线观看| 国产一区二区三区AV在线无码观看| 国产精品一区二区久久毛片| 91中文字幕在线一区| 国产超碰无码最新上传| 日韩福利片午夜免费观着| 2021av在线天堂网| 粉嫩小泬无遮挡久久久久久| 国产精品推荐视频一区二区| www亚洲精品| 无码人妻久久一区二区三区app| 亚洲无线码中文字幕在线| 亚洲av无码牛牛影视在线二区| 最新精品国偷自产在线美女足| 无码人妻斩一区二区三区| 久久久久人妻精品一区二区三区| 国内熟妇人妻色在线三级| 成人无码午夜在线观看| 国产精品无码aⅴ嫩草| 在线aⅴ亚洲中文字幕| 成年女人片免费视频播放A| 国产无遮挡又黄又爽在线视频| 高清破外女出血AV毛片| 少妇人妻真实偷人精品| 久久久久久性高| 国产性三级高清在线观看| 免费人成视频网站在线18| 曲沃县| 国产精品免费久久久免费| 亚洲国产色一区二区三区|