26-計組-指令執行過程

一、指令周期

1. 定義與組成

  • 定義:CPU取出并執行一條指令所需的全部時間,稱為指令周期
  • 子周期劃分
    1. 取指周期(必選):從存儲器取指令到指令寄存器(IR)。
    2. 間址周期(可選):處理間接尋址,獲取操作數的真實地址。
    3. 執行周期(必選):執行指令規定的操作。
    4. 中斷周期(可選):處理中斷請求。
  • 特性
    • 不同指令的周期長度不同。
    • 取指和執行周期必然存在,間址和中斷周期視情況觸發。
    • 每個子周期由多個時鐘周期構成(時鐘周期是CPU最小時間單位)。

2. 機器周期

  • 定義:人為設計的時間單位,通常等于一次訪存時間(當指令字長=存儲字長時,機器周期=取指周期)。
  • 與存儲字長關系:反映存取一個存儲單元的時間。
  • 實際應用
    • 指令字長為存儲字長的倍數時,取指周期需多個機器周期(例:指令占2個存儲單元 → 取指需2個機器周期)。
    • 間址、執行、中斷周期的機器周期數因指令而異。

  • 判斷流程
    • 間址周期:僅在間接尋址時觸發(Y/N)。
    • 中斷周期:僅在檢測到中斷請求時觸發(Y/N)。

二、指令執行過程

1. 取指令

  • 核心機制:程序計數器(PC)指向下條指令地址,通過訪存將指令送入指令寄存器(IR)。
  • 細節
    • 可能經過內存數據寄存器(MDR)中轉或直接進入IR。
    • 例:PC=103,從主存地址103取指令。
  • PC自增:取指后,PC自動增加,增量由指令字長和編址方式決定。

2. 譯碼

  • 操作:對IR中的操作碼進行譯碼,生成對應控制信號。
  • 示例(ADD指令,隱含尋址):
    • 一個操作數地址由指令給出(如104)。
    • 另一個操作數隱含在累加器(ACC)中。

3. 源操作數地址計算并取操作數

  • 尋址處理
    • 根據尋址方式計算有效地址。
    • 存儲器數據可能需多次訪存。
  • 示例(隱含尋址):
    • 從指令解析地址104,讀取104處數據到寄存器。
    • 另一操作數直接從ACC獲取。

4. 執行數據操作

  • 過程
    • 操作數送入ALU執行運算(如加法)。
    • 結果暫存于ALU輸出端寄存器。
  • 注意:復雜指令的執行周期較長。

5. 目的操作數地址計算并存結果

  • 存儲方式
    • 寄存器數據:直接寫入目標寄存器。
    • 存儲器數據:需計算目的地址并訪存。
  • 特殊情形:目的地址可能需額外計算(如基址尋址)。


三、指令周期的數據流

1. 取指周期數據流

  • 流程
    1. PC → MAR:將PC中的指令地址送入內存地址寄存器(MAR)。
    2. 發出讀命令:控制單元通過控制總線向存儲器發出讀信號,MAR地址通過地址總線傳至存儲器。
    3. 讀取指令:存儲器將指令讀出,經數據總線傳至MDR。
    4. 指令存入IR:MDR中的指令代碼送入IR。
    5. PC自增:PC值增加,增量由指令字長決定。

  • 關鍵序列:PC → MAR → 主存 → MDR → IR,PC++。

2. 間址周期數據流

  • 作用:解決間接尋址時無法直接獲取操作數地址的問題。
  • 流程
    1. 根據IR中地址碼確定操作數有效地址。
    2. 有效地址送入MAR。
    3. 發出讀命令,MAR指示的內存單元數據讀入MDR。
  • 特點:讀取操作數本身,而非指令。

3. 執行周期數據流

  • 特點:因指令類型不同,操作差異大,無統一數據流模板。
  • 操作類型:包括算術邏輯運算、數據傳送、控制轉移等。

4. 中斷周期數據流(正常執行一個指令,中斷程序)

  • 流程
    1. 堆棧指針(SP)調整:SP減一(棧從高地址向低地址生長)。
    2. 棧地址傳送:SP值送入MAR。
    3. 斷點寫入準備:發出寫命令。
    4. 數據入棧:PC值(斷點地址)寫入棧。
    5. 中斷服務程序跳轉:將中斷向量地址送入PC。
  • 調整堆棧指針:堆棧指針(SP)值減1,為保存斷點地址騰出棧空間。因為堆棧從高地址向低地址生長,SP減小指向新的棧頂。
  • 傳送棧地址:將調整后的SP值送入內存地址寄存器(MAR),MAR存儲將要寫入斷點地址的棧頂地址。
  • 發出寫命令:控制單元通過控制總線向主存發出寫命令,同時將MAR中的棧頂地址通過地址總線傳送到主存,準備寫入數據。
  • 保存斷點地址:將程序計數器(PC)中的當前程序地址(斷點)通過數據總線寫入主存的棧頂地址(MAR指定的位置),完成PC值壓棧。
  • 加載中斷向量地址:將中斷服務程序的入口地址(中斷向量地址,通常由中斷控制器提供)送入PC,更新PC值,準備跳轉到中斷服務程序。
  • SP本質:邏輯寄存器,通過存儲地址值實現指向。

為什么需要將斷點地址設置為新的棧頂(SP減1)?

  • 數據覆蓋風險:原SP地址可能已有數據,直接寫入會破壞棧結構。
  • 違反棧操作規則:壓棧要求SP先減1再寫入,這是堆棧設計的標準邏輯。
  • 影響后續操作:直接寫入原SP地址會導致棧頂指針混亂,后續壓棧或出棧操作可能出錯。
  • 中斷返回錯誤:如果PC值未正確保存到新的棧頂,返回時可能跳轉到錯誤的地址,導致程序崩潰。

問題解答:中斷服務程序執行完后,SP會+1并繼續執行未執行的程序嗎?

答案:是的,執行完中斷服務程序后,CPU會通過出棧操作將堆棧指針(SP)加1,從棧中恢復中斷前的PC值,并繼續執行未完成的主程序。以下是具體流程和原因。

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

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

相關文章

【JMeter】數據驅動測試

文章目錄創建數據文件加載數據文件根據數據文件請求接口、傳遞參數拓展含義:根據數據的數量、內容,自動的決定用例的數據和內容。數據驅動測試用例。步驟: 創建數據文件加載數據文件根據數據文件請求接口、傳遞參數 創建數據文件 Jmeter支…

Springboot實現一個接口加密

首先來看效果這個主要是為了防止篡改請求的。 我們這里采用的是一個AOP的攔截,在有需要這樣的接口上添加了加密處理。 下面是一些功能防篡改HMAC-SHA256 參數簽名密鑰僅客戶端 & 服務器持有防重放秒級時間戳 有效窗口校驗默認允許 5 分鐘防竊聽AES/CBC/PKCS5Pa…

斯坦福 CS336 動手大語言模型 Assignment1 BPE Tokenizer TransformerLM

所有代碼更新至 https://github.com/WangYuHang-cmd/CS336/tree/main/assignment1-basics 作業文件結構: CS336/assignment1-basics/ ├── tests/ # 測試文件目錄 │ ├── adapters.py # 適配器測試 │ ├── conftest.py # pyt…

Spring Cloud Gateway 實戰指南

關鍵詞:微服務、API網關、Spring Cloud Gateway、路由轉發、限流熔斷 ? 文章摘要 隨著互聯網應用規模的不斷擴大,傳統的單體架構逐漸向微服務架構轉型。在微服務架構中,API 網關作為系統的入口點,承擔了諸如請求路由、負載均衡、…

PyTorch自動微分:從基礎到實戰

目錄 1. 自動微分是什么? 1.1 計算圖 1.2 requires_grad 屬性 2. 標量和向量的梯度計算 2.1 標量梯度 2.2 向量梯度 3. 梯度上下文控制 3.1 禁用梯度計算 3.2 累計梯度 4. 梯度下降實戰 4.1 求函數最小值 4.2 線性回歸參數求解 5. 總結 在深度學習中&a…

Spring AI 項目實戰(十六):Spring Boot + AI + 通義萬相圖像生成工具全棧項目實戰(附完整源碼)

系列文章 序號文章名稱1Spring AI 項目實戰(一):Spring AI 核心模塊入門2Spring AI 項目實戰(二):Spring Boot + AI + DeepSeek 深度實戰(附完整源碼)3Spring AI 項目實戰(三):Spring Boot + AI + DeepSeek 打造智能客服系統(附完整源碼)4

從零到一:企業如何組建安全團隊

在這個"黑客滿天飛,漏洞遍地跑"的時代,沒有安全團隊的企業就像裸奔的勇士——雖然很有勇氣,但結局往往很悲慘。 📋 目錄 為什么要組建安全團隊安全團隊的核心職能團隊架構設計人員配置策略技術體系建設制度流程建立實施…

業務訪問控制-ACL與包過濾

業務訪問控制-ACL與包過濾 ACL的定義及應用場景ACL(Access Control List,訪問控制列表)是用來實現數據包識別功能的;ACL可以應用于諸多場景: 包過濾功能:對數據包進行放通或過濾操作。NAT(Netwo…

穿梭時空的智慧向導:Deepoc具身智能如何賦予導覽機器人“人情味”

穿梭時空的智慧向導:Deepoc具身智能如何賦予導覽機器人“人情味”清晨,當第一縷陽光透過高大的彩繪玻璃窗,灑在博物館光潔的地板上,一位特別的“館員”已悄然“蘇醒”。它沒有制服,卻有著清晰的指引;它無需…

PostgreSQL 查詢庫中所有表占用磁盤大小、表大小

SELECTn.nspname AS schema_name,c.relname AS table_name,-- 1?? 總大小(表 toast 索引)pg_size_pretty(pg_total_relation_size(c.oid)) AS total_size,-- 2?? 表不包含索引(含 TOAST)pg_size_pretty(pg_total_relation_s…

日記-生活隨想

最近鼠鼠也是來到上海打拼(實習)了,那么秉持著來都來了的原則,鼠鼠也是去bw逛了逛,雖說沒票只能在外場看看😭。可惜幾乎沒有多少我非常喜歡的ip,不由感慨現在的二次元圈已經變樣了。雖說我知道內…

串口A和S的含義以及RT的含義

A async 異步S sync 同步RT 收發U A RT 異步U SA RT 同步/異步

spring cloud負載均衡分析之FeignBlockingLoadBalancerClient、BlockingLoadBalancerClient

本文主要分析被 FeignClient 注解的接口類請求過程中負載均衡邏輯&#xff0c;流程分析使用的依賴版本信息如下&#xff1a;<spring-boot.version>3.2.1</spring-boot.version><spring-cloud.version>2023.0.0</spring-cloud.version><com.alibaba.…

ref 和 reactive

文章目錄ref 和 reactive一、差異二、能否替代的場景分析&#xff08;1&#xff09;基本類型數據&#xff08;2&#xff09;對象類型數據&#xff08;3&#xff09;數組類型數據&#xff08;4&#xff09; 需要整體替換的場景三、替代方案與兼容寫法1. 用 reactive 模擬 ref2. …

BatchNorm 與 LayerNorm:原理、實現與應用對比

BatchNorm 與 LayerNorm&#xff1a;原理、實現與應用對比 Batch Normalization (批歸一化) 和 Layer Normalization (層歸一化) 是深度學習中兩種核心的歸一化技術&#xff0c;它們解決了神經網絡訓練中的內部協變量偏移問題&#xff0c;大幅提升了模型訓練的穩定性和收斂速度…

OcsNG基于debian一鍵部署腳本

&#x1f914; 為什么有了GLPI還要部署OCS-NG&#xff1f; 核心問題&#xff1a;數據收集的風險 GLPI直接收集的問題&#xff1a; Agent直接向GLPI報告數據時&#xff0c;任何收集異常都會直接影響資產數據庫網絡問題、Agent故障可能導致重復資產、錯誤數據、資產丟失無法對收集…

001_Claude開發者指南介紹

Claude開發者指南介紹 目錄 Claude簡介Claude 4 模型開始使用核心功能支持資源 Claude簡介 Claude 是由 Anthropic 構建的高性能、可信賴和智能的 AI 平臺。Claude 具備出色的語言、推理、分析和編程能力&#xff0c;可以幫助您解決各種復雜任務。 想要與 Claude 聊天嗎&a…

004_Claude功能特性與API使用

Claude功能特性與API使用 目錄 API 基礎使用核心功能特性高級功能開發工具平臺支持 API 基礎使用 快速開始 通過 Anthropic Console 獲取 API 訪問權限&#xff1a; 在 console.anthropic.com/account/keys 生成 API 密鑰使用 Workbench 在瀏覽器中測試 API 認證方式 H…

ReAct論文解讀(1)—什么是ReAct?

什么是ReAct&#xff1f; 在大語言模型&#xff08;LLM&#xff09;領域中&#xff0c;ReAct 指的是一種結合了推理&#xff08;Reasoning&#xff09; 和行動&#xff08;Acting&#xff09; 的提示方法&#xff0c;全稱是 “ReAct: Synergizing Reasoning and Acting in Lan…

【云服務器安全相關】服務器防火墻常見系統日志信息說明

目錄? 一、防火墻日志是做什么的&#xff1f;&#x1f6e0;? 二、常見防火墻日志信息及說明&#x1f9ea; 三、典型日志示例解析1. 被阻斷的訪問&#xff08;DROP&#xff09;2. 被允許的訪問&#xff08;ACCEPT&#xff09;3. 被拒絕的端口訪問4. 可疑端口掃描行為&#x1f…