計算機一次取數過程分析

計算機一次取數過程分析

1 取址過程

CPU由運算器和控制器組成,其中控制器中的程序計數器(PC)保存的是下一條指令的虛擬地址,經過內存管理單元(MMU),將虛擬地址轉換為物理地址,之后交給主存地址寄存器(MAR),從主存中取出這條指令,通過主存數據寄存器(MDR)交給指令寄存器(IR),IR再將其轉化成控制信號。

在這里插入圖片描述

2 間址過程

一條指令由 <操作碼,尋址方式,地址碼> 幾部分組成,尋址方式共有以下十種

  • 隱含尋址
  • 立即尋址
  • 直接尋址
  • 間接尋址
  • 寄存器尋址
  • 寄存器間接尋址
  • 相對尋址
  • 基址尋址
  • 變址尋址
  • 堆棧尋址

根據有效地址(EA)或立即數所處的位置,可以分為以下三類

在寄存器:隱含尋址、寄存器尋址

在立即數:立即尋址

在主存:直接尋址、間接尋址、寄存器間接尋址、相對尋址、基址尋址、變址尋址、堆棧尋址

而無論哪種方式得到的有效地址(EA)同樣也是虛擬地址


接下來要解決以下兩個問題

問題一:虛擬地址如何轉為物理地址?

問題二:如何訪問該物理地址?


3 虛擬地址轉為物理地址

3.1 單級頁表系統

在分頁管理的操作系統中,將主存分為一個個頁框,操作系統會建立頁表這種數據結構,負責虛擬頁號和主存頁框號的映射。

在這里插入圖片描述

虛擬地址由 <頁號,頁內偏移量> 兩部分組成,根據頁號去查詢頁表,然后將頁表中的頁框號和頁內偏移量組成物理地址。

例如頁表部分內容如下,虛擬地址為00123366H,按字節編址,虛擬地址格式為<頁號12位,頁內偏移量20位>

在這里插入圖片描述

在這里插入圖片描述

根據虛擬地址中的001H,找到1號頁表項,其頁框號為521H,拼接上頁內偏移量后即可得到物理地址52123366H。

但是如果想要查詢頁表,也要知道頁表的起始地址,頁表的地址保存在進程控制塊(PCB)中,當CPU調度該進程時,會將PCB中的頁表起始地址放入頁表基址寄存器中,頁表起始地址為物理地址

同時,為了解決頁表項過多導致一個頁框中放不下的問題,引入了多級頁表。為了減少訪存次數引入了快表(TLB)。

3.2 二級頁表系統

在使用多級頁表的32位操作系統中(以二級頁表為例),虛擬地址被分成了 <頁目錄號,頁號,頁內偏移量> 三部分,例如在下圖虛擬地址格式下虛擬地址為10801008H,頁目錄項和頁表項長度均為4字節,按字節編址。

在這里插入圖片描述

在這里插入圖片描述

10801008H,其頁目錄號是66,頁號是1,因此根據頁目錄號為66找到頁目錄項,其中的頁框號是00301H,找到對應的頁表所在頁框,然后拼接上頁號找到頁號頁表項對應的物理地址00301004H(這里因為一個頁目錄項是4B),頁表中的頁框號是98521H,拼接上頁內偏移量,最終的物理地址為98521008H。

3.3 二級頁表系統+快表

快表的實現基于相聯存儲器,是一種靜態隨機存取存儲器(SRAM),使用的存儲元是雙穩態觸發器,存取速度快。

在使用TLB的系統中,虛擬地址向物理地址的轉換一般先查詢快表(或者快表慢表一起查詢),如果快表命中,可以直接獲得頁框號,再和頁內偏移量組合,得到物理地址。

快表的映射方式有兩種,為全相聯映射和組相聯映射,至于為什么不使用直接映射,在討論完全相聯映射和組相聯映射后再討論。

全相聯映射

使用全相聯映射的TLB中

TLB的格式為 <標記位,有效位,頁框號>

此處的標記位即虛擬頁號,若虛擬地址格式為 <頁目錄號(10位),頁號(10位),頁內偏移量(12位)>

TLB的標記位是虛擬地址中的頁目錄號+頁號組成的虛擬頁號

在這里插入圖片描述

因為TLB是使用硬件電路實現的,全部TLB標記可以并行對比。

例如虛擬地址為10801008H,TLB使用全相聯映射,虛擬地址格式為<頁目錄號(10位),頁號(10位),頁內偏移量(12位)>,TLB部分內容如下圖所示

在這里插入圖片描述

查詢TLB表,10801H與虛擬頁號一致,且有效位為1,因此可以直接得到頁框號00001H,與頁內偏移量008H拼接得到物理地址為00001008H,若未命中則回到上文中的查詢二級頁表的過程,且更新快表。

組相聯映射

使用組相聯映射的TLB格式如為 <標記位,有效位,頁框號>,虛擬地址格式為 <標記位,組號,頁內偏移量>,標記位+組號就是虛擬頁號,同頁目錄號+頁表號

例如二路組相聯的TLB,其中共有32行,分成16組(用4位二進制表示),若虛擬地址為10801008H,虛擬地址格式為<標記位(16位),組號(4位),頁內偏移量(12位)>,則查找1號分組,標記位為1080H

在這里插入圖片描述

第一組標記位為1080H命中,其有效位為1,直接得到頁框號為00002H,拼接上頁內偏移量得到物理地址為00002008H,若未命中則回到上文中的查詢二級頁表的過程,且更新快表。

直接映射

TLB一項的大小很小,而且直接映射沖突率高,為了實現高命中率和低沖突率,因此TLB不使用直接映射。

而cache按照塊大小,將主存一塊數據(主存的一塊和內存管理的一頁沒有關系,通常一頁的大小比一塊的大小要更大)讀入cache行中,沖突率相比TLB會小一些,在部分場景下可以接受這種沖突的成本。

4.訪問物理地址

得到物理地址后,會先訪問cache,如果cache未命中訪問主存,并將該物理地址所在塊調入cache中(或者同時訪問cache和主存)。

cache和TLB都是基于SRAM的相聯存儲器,不同的是cache的映射方式有三種,分別是直接映射,全相聯映射,組相聯映射。

在這里插入圖片描述

直接映射

物理地址格式為 <Tag,行號,塊內地址>

cache行內格式為 <Tag,有效位,臟位等其他數據,塊數據>

全相聯映射

物理地址為 <Tag,塊內地址>

cache行內格式為 <Tag,有效位,臟位等其他數據,塊數據>

組相聯映射

物理地址格式為 <Tag,組號,塊內地址>

cache行內格式為 <Tag,有效位,臟位等其他數據,塊數據>

因為和TLB的過程沒有太大區別,此處不再詳細討論。

不過值得注意的是,當TLB和cache未命中要更新TLB和cache時候需要使用置換算法,置換算法此處也不再討論。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/81888.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/81888.shtml
英文地址,請注明出處:http://en.pswp.cn/web/81888.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從equals思考對“正念”的認知

正念 很多人聊正念&#xff0c;每個人有自己的解說&#xff0c;我聽到最符合邏輯的一個說法&#xff1a;正念就是對抗慣性。 如果嘗試過打坐或者冥想&#xff0c;就有一個說法叫正觀&#xff0c;什么意義呢&#xff1f;就是說感受自己的呼吸&#xff0c;自己的心跳&#xff0c…

信息安全管理與評估2025山東卷

需要其他賽題解析的可聯系博主

【leetcode】02.07. 鏈表相交

鏈表相交 題目代碼1. 計算兩個鏈表的長度2. 雙指針 題目 02.07. 鏈表相交 給你兩個單鏈表的頭節點 headA 和 headB &#xff0c;請你找出并返回兩個單鏈表相交的起始節點。如果兩個鏈表沒有交點&#xff0c;返回 null 。 圖示兩個鏈表在節點 c1 開始相交&#xff1a; 代碼 …

可視化與動畫:構建沉浸式Vue應用的進階實踐

在現代Web應用中&#xff0c;高性能可視化和流暢動畫已成為提升用戶體驗的核心要素。本節將深入探索Vue生態中的可視化與動畫技術&#xff0c;分享專業級解決方案與最佳實踐。 一、 Canvas高性能渲染體系 01、Konva.js流程圖引擎深度優化 <template><div class"…

?模型驅動的DeepInsight Copilot在螞蟻的技術實踐

本文整理自潘蘭天&#xff08;螞蟻數據智能團隊數據分析平臺技術專家)在DA數智大會2025上海站的演講實錄。 本文圍繞AI技術在數據分析領域的應用及DeepInsight Copilot產品展開。DeepInsight是一款螞蟻長期深耕數據分析領域的BI產品&#xff0c;本文首先介紹了DeepInsight Copi…

Express教程【003】:Express獲取查詢參數

文章目錄 3、獲取URL中攜帶的查詢參數3.1 參數形式&#xff1a;查詢字符串3.2 參數形式&#xff1a;動態參數3.3 參數形式&#xff1a;Json數據 3、獲取URL中攜帶的查詢參數 3.1 參數形式&#xff1a;查詢字符串 1??通過req.query對象&#xff0c;可以訪問到客戶端通過查詢…

在CentOS7上使用tree查看目錄樹

文章目錄 1. 利用yum安裝tree2. 利用rpm安裝tree2.1 下載tree的rpm包2.2 上傳到云主機2.3 安裝tree軟件 3. 使用tree查看目錄樹4. 實戰小結 1. 利用yum安裝tree 執行命令&#xff1a;yum -y install tree CentOS7停止更新&#xff0c;即使更新鏡像源&#xff0c;也無法正常安裝…

大規模JSON反序列化性能優化實戰:Jackson vs FastJSON深度對比與定制化改造

背景&#xff1a;500KB JSON處理的性能挑戰 在當今互聯網復雜業務場景中&#xff0c;處理500KB以上的JSON數據已成為常態。 常規反序列化方案在CPU占用&#xff08;超30%&#xff09;和內存峰值&#xff08;超原始數據3-5倍&#xff09;方面表現堪憂。 本文通過Jackson與Fas…

華為交換機S12708常用命令

以下是華為S12708交換機&#xff08;高端園區/數據中心核心交換機&#xff09;的常用運維命令&#xff0c;涵蓋基礎配置、狀態查看、故障排查等場景&#xff1a; 一、基礎配置命令 1. 系統管理 system-view # 進入系統視圖 sysname S12708-Core # 設置設備名稱 clock timez…

通過海康螢石API控制家里相機的云臺及抓圖

通過海康螢石API控制家里相機的云臺及抓圖 一、背景二、環境準備2.1 注冊開發者賬號2.2 安裝依賴庫2.3 創建`.`env`文件三、代碼片段解釋3.1 加載并使用環境變量3.2 發送HTTP請求的封裝函數3.3 獲取AccessToken3.4 分頁查詢設備列表3.5 抓拍圖片3.6 開始云臺控制3.7 控制云臺并…

XCUITest 是什么

XCUITest&#xff08;全稱 Xcode UI Test&#xff09;是蘋果官方提供的 iOS/macOS UI 自動化測試框架&#xff0c;集成在 Xcode 開發工具中&#xff0c;專門用于測試 Swift/Objective-C 開發的應用程序。 1. XCUITest 的核心特點 ? 官方支持&#xff1a;蘋果原生框架&#xf…

mapbox高階,PMTiles介紹,MBTiles、PMTiles對比,加載PMTiles文件

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言1.1 ??mapboxgl.Map 地圖對象1.2 ??mapboxgl.Map style屬性1.3 ??Fill面圖層樣式1.4 ??PMTiles介紹1.5…

5.0以上版本antv/g6使用心得

1. 畫布只重新渲染數據 graph.render graph.drawgraph,fitview()graph.fitCenter()setData塞入新的數據 const updateGraph (data) > {if (!graph) {console.warn("Graph is not initialized");return;}graph.clear();graph.setData(data);graph.render(); };…

4.5V~100V, 3.8A 峰值電流限, 非同步, 降壓轉換器,LA1823完美替換MP9487方案

一&#xff1a;綜述 LA1823 是一款易用的非同步&#xff0c;降壓轉換器。 該模塊集成了 500mΩ 低導通阻抗的高側 MOSFET。LA1823 使用 COT 控制技術。此種控制方式有利于快速動態響應,同時簡化了反饋環路的設計。LA1823 可以提供最大 2A 的持續負載電流。LA1823有150kHz/240kH…

如何定位并優化慢 SQL?

如何定位并優化慢 SQL? 一、慢 SQL 的定義與影響 1.1 什么是慢 SQL? 慢 SQL是指執行時間超過預期閾值的SQL語句,通常由以下特征: 執行時間超過慢查詢閾值(如MySQL默認10秒)消耗大量CPU/IO資源導致連接堆積或系統負載升高關鍵結論:慢SQL是數據庫性能瓶頸的主要誘因,可…

提升WSL中Ubuntu編譯速度的完整指南

在 WSL&#xff08;Windows Subsystem for Linux&#xff09;中使用 make 編譯項目時&#xff0c;如果發現編譯速度非常慢&#xff0c;通常是由以下幾個原因導致的。以下是一些常見的排查和優化方法&#xff1a; &#x1f50d; 一、常見原因及解決方案 ? 1. 文件系統性能問題…

77. 組合【 力扣(LeetCode) 】

文章目錄 零、原題鏈接一、題目描述二、測試用例三、解題思路四、參考代碼 零、原題鏈接 77. 組合 一、題目描述 給定兩個整數 n 和 k&#xff0c;返回范圍 [1, n] 中所有可能的 k 個數的組合。 你可以按 任何順序 返回答案。 二、測試用例 示例 1&#xff1a; 輸入&…

C++中指針與引用的區別詳解:從原理到實戰

C中指針與引用的區別詳解&#xff1a;從原理到實戰 1. 引言&#xff1a;指針與引用的重要性 在C編程中&#xff0c;指針和引用是兩個極其重要的概念&#xff0c;也是許多初學者容易混淆的地方。作為C的核心特性&#xff0c;它們直接操作內存地址&#xff0c;提供了對內存的直…

WebFuture:網站部分圖片突然無法顯示的原因

問題描述&#xff1a; 主站群遷移到linux系統后&#xff0c;原先部署在windows下的子站群節點部分圖片無法顯示。 原因分析&#xff1a; 檢查無法顯示的圖片的路徑&#xff0c;發現調用的是原先主站的圖片。主站重新部署到linux系統后&#xff0c;圖片路徑會區分大小寫所以統…

uniapp使用Canvas生成電子名片

uniapp使用Canvas生成電子名片 工作中有生成電子名片的一個需求&#xff0c;剛剛好弄了發一下分享分享 文章目錄 uniapp使用Canvas生成電子名片前言一、上代碼&#xff1f;總結 前言 先看效果 一、上代碼&#xff1f; 不對不對應該是上才藝&#xff0c;哈哈哈 <template…