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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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…