中央处理器——指令执行过程

简介: 中央处理器——指令执行过程

指令周期


指令周期:CPU从主存中每取出并执行一条指令所需的全部时间。


指令周期常常用若干机器周期来表示,机器周期又叫CPU周期


一个机器周期又包含若干时钟周期(也称为节拍、T周期或CPU时钟周期,它是CPU操作的最基本单位)。


每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。如下图可分为定长的机器周期与不定长的机器周期。


CLK:时钟脉冲



几种常见的指令周期


每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。



指令周期流程



四个工作周期都有CPU访存操作,只是访存的目的不同。


  1. 取指周期是为了取指令


  1. 间址周期是为了取有效地址


  1. 执行周期是为了取操作数


  1. 中断周期是为了保存程序断点。


这四个周期在计算机内部是用触发器控制的


触发器,可以存放1个二进制位。


CLK(时钟脉冲)通过判断四个触发器的状态来判断该指令执行的是哪个周期。具体状态判断如下图



指令周期的数据流


取指周期


取指周期步骤:


  1. 当前指令地址送至存储器地址寄存器,记做:(PC) → MAR


  1. 将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR) → MDR


  1. CU发出控制信号,经控制总线传到主存,这里是读信号,记做:1 → R


  1. 将MDR中的内容(此时是指令)送入IR,记做:(MDR) → IR


  1. CU发出控制信号,形成下一条指令地址,记做:(PC)+1 → PC


具体数据流向图如下图所示:



间址周期


间址周期步骤:


  1. 将指令的地址码送入MAR,记做:Ad(IR) → MAR或Ad(MDR) → MAR


  1. CU发出控制信号,启动主存做读操作,记做:1 → R


  1. 将MAR所指主存中的内容经数据总线送入MDR,记做:M(MAR) → MDR


  1. 将有效地址送至指令的地址码字段,记做:(MDR)→ Ad(IR)


具体数据流向图如下图所示:



执行周期


执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。


不同指令的执行周期操作不同,因此没有统一的数据流向。


中断周期


中断:暂停当前任务去完成其他任务。


为了能够恢复当前任务,需要保存断点。


一般使用堆栈来保存断点,这里用SP表示栈顶地址,假设SP指向栈顶元素,进栈操作是先修改指针,后存入数据。


中断周期步骤:


  1. CU控制将SP减1,修改后的地址送入MAR记做: (SP)-1 → SP,(SP) → MAR

本质上是将断点存入某个存储单元,假设其地址为a,故可记做:a → MAR


  1. CU发出控制信号,启动主存做写操作,记做:1 → W


  1. 将断点(PC内容) 送入MDR,记做:(PC) → MDR


  1. CU控制将中断服务程序的入口地址(由向量地址形成部件产生)送入PC,记做:向量地址→ PC


具体数据流向图如下图所示:



指令执行方案


一个指令周期通常要包括几个时间段(执行步骤),每个步骤完成指令的一部分功能,几个依次执行的步骤完成这条指令的全部功能。


方案1.单指令周期


对所有指令都选用相同的执行时间来完成 。


指令之间串行执行;


指令周期取决于执行时间最长的指令的执行时间。


缺点:


对于那些本来可以在更短时间内完成的指令,要

使用这个较长的周期来完成,会降低整个系统的

运行速度。


方案2.多指令周期


对不同类型的指令选用不同的执行步骤来完成 。


指令之间串行执行;


可选用不同个数的时钟周期来完成不同指令的执行过程 。


缺点:


需要更复杂的硬件设计。


方案3.流水线方案


在每一个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中 。


指令之间并行执行


例如这个样子



本章小结


相关文章
|
6月前
|
Kubernetes 监控 容器
k9s常用的指令
K9s 是一个用于 Kubernetes 群集管理的命令行工具,它提供了一系列常用的指令,用于查看、管理和监控 Kubernetes 资源。以下是一些常用的 K9s 指令: 1. **查看资源列表:** - `:po`:查看 Pod 列表。 - `:svc`:查看 Service 列表。 - `:deploy`:查看 Deployment 列表。 - `:ns`:查看 Namespace 列表。 2. **在资源列表中的操作:** - 使用上下箭头键浏览资源列表。 - `Enter` 键进入资源的详细信息视图。 - `d`:删除选定的资源。
361 4
|
6月前
|
存储 Java 索引
探索CPU的黑盒子:解密指令执行的秘密
本文深入探讨了CPU执行指令的相关知识,包括CPU内部的寄存器组成、程序计数器的作用、函数调用机制以及CPU指令执行的五个阶段。通过学习这些内容,读者可以进一步了解计算机的工作原理。
探索CPU的黑盒子:解密指令执行的秘密
v-if 指令
1.v-if指令的作用是:根据表达式的真假切换元素的显示状态 2.本质是通过操纵dom元素来切换显示状态 3.表达式的值为true,元素存在于dom树中,为false,从dom树中移除 4.频繁的切换使用v-show,反之使用v-if,前者的切换消耗小
|
索引
03ZSTI4-00-501 处理器设计通常包括前任的指令
03ZSTI4-00-501 处理器设计通常包括前任的指令
88 0
03ZSTI4-00-501 处理器设计通常包括前任的指令
|
存储 缓存 JavaScript
CPU如何执行程序
1. CPU = 运算单元 + 数据单元 + 控制单元 2. CPU 只能识别「二进制」的指令 3. 总线像连接 CPU 和内存这两个设备的高速公路 4. 执行高级语言的两种方式:1. 解释执行 2. 编译执行 5. 汇编语言和机器语言是一一对应的 6. 内存中的每个存储空间都有其对应的独一无二的地址 7. CPU时钟周期:取出指令、分析指令、执行指令这三个过程
189 0
|
存储 缓存
CPU-逻辑移位操作与空指令说明
CPU-逻辑移位操作与空指令说明
1476 0
CPU-逻辑移位操作与空指令说明
|
Go Docker 容器
Dockfile指令
笔记:Dockfile指令
201 0
|
前端开发 安全 JavaScript
内置指令
内置指令
135 0
|
网络协议 NoSQL C语言
CPU-移动操作指令说明
CPU-移动操作指令说明
238 0