5-2中央处理器-指令周期的数据流

news2024/9/27 12:11:22

文章目录

  • 一.指令周期
  • 二.数据流向
    • 1.取指周期
    • 2.间址周期
    • 3.执行周期
    • 4.中断周期
  • 三.指令执行方案
    • 1.单指令周期
    • 2.多指令周期
    • 3.流水线方案

一.指令周期

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

此处:取指周期=取指令+指令译码

在这里插入图片描述
指令周期常用若干机器周期/CPU周期表示,一个机器周期包含若干时钟周期/节拍/T周期/CPU时钟周期,时钟周期是CPU操作的最基本单位

回顾:CPU执行时间=时钟周期数×时钟周期=CPI×指令条数×时钟周期

在这里插入图片描述
可以看出,每个指令周期内机器周期数可以不等,每个机器周期内的节拍数也可以不等。下面进行举例

1.空指令NOP
取指令,不进行操作。即指令周期=取指周期(包含取指周期和分析指令)。包含1个机器周期

2.加法指令ADD
指令周期=取指周期+执行周期
包含2个机器周期,两个机器周期包含的节拍数可能不同
(若为乘法指令,则执行周期更长)

3.具有间接寻址的指令
指令周期=取指周期+间址周期+执行周期
包含3个机器周期,三个机器周期包含的节拍数可能不同

(图:一次间接寻址)
在这里插入图片描述
4.带有中断周期的指令
指令周期=取指周期+间址周期+执行周期+中断周期
每一条指令末尾都要检查中断
包含4个机器周期,四个机器周期包含的节拍数可能不同

总结

在这里插入图片描述
在这里插入图片描述

可以通过触发器判断当前处于那个周期

在这里插入图片描述

二.数据流向

1.取指周期

把PC中的内容从主存取出指令代码并存放到IR中,可能因为取指令进行访存。

在这里插入图片描述
数据流向:
①PC指向的内容通过地址总线传送到MAR,即(PC)→MAR
②CU通过控制总线给主存发出控制信号(如:读信号)
③主存储器根据MAR记录的地址信息去存储体中找出该地址对应的二进制数据,通过数据总线将数据放到MDR中,即M(MAR)→MDR
④MDR中的指令通过数据总线放到IR,即(MDR)→IR
⑤每取出一条指令,CU发出控制信号,形成下一条指令地址,让PC指向,即(PC)+"1"→PC


PC→MAR→地址总线→主存
CU发出控制信号→控制总线→主存
主存→数据总线→MDR→IR
CU发出读命令→PC内容加1

2.间址周期

间址周期的任务是取操作数的有效地址,可能因为取有效地址而访存。

数据流向:
①将指令中的地址码Ad送到MAR并送至地址总线,即Ad(IR)→MAR→地址总线
注:此处的IR可改为MDR,二者当前存放相同的内容
②CU通过控制总线发出控制信号(如读命令)给主存,即CU发出控制信号→控制总线→主存
③主存储器根据MAR记录的地址信息去存储体中找出该地址对应的二进制数据,通过数据总线将数据放到MDR中,即M(MAR)→MDR
④将有效地址送至指令的地址码字段,即(MDR)→Ad(IR)

在这里插入图片描述

3.执行周期

执行周期的任务是根据IR中的指令字的操作码和操作数通过ALU操作产生执行结果。可能因为取操作数而访存

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

4.中断周期

暂停当前任务去完成其他任务,可能因为保存程序断电而访存

为了能够恢复当前任务,需要保存断点。一般使用堆栈来保存断点,这里用SP指向栈顶存储单元的地址,堆栈的地址空间从高到低排列,假设SP指向栈顶元素,进栈时SP-1,再存入数据。

数据流向:
PC自动加“1”,指向下一条待执行指令,此时发送中断。为保存断点,需将PC的值压入主存,然后转向指向中断处理程序
①CU控制SP-1,在当前SP指向的地址插入PC,需将SP所指向的地址送MAR并送至地址总线,即(SP)-1→SP、(SP)→MAR
②CU通过控制总线发出控制信号(写命令)给主存,即CU发出写命令→控制总线→主存
③将PC写入主存,即(PC)→MDR→数据总线→主存
④CU将PC改为中断处理程序的第一条指令地址,即CU→PC

三.指令执行方案

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

可以选用3种方案来安排指令的执行步骤:

1.单指令周期

所有指令选用相同的执行时间。指令之间串行执行,即下一条指令只能在前一条指令执行结束后才能启动。为保证每条指令都在固定的时钟周期内完成,在设计执行时间时需选择最长指令的执行时间,这样会导致本来可以在更短时间内完成的指令,要使用较长的周期来完成,降低了整个系统的运行速度。

2.多指令周期

对不同类型的指令选用不同的执行步骤。指令之间串行执行,但不再要求所有指令占用相同的执行时间,即按需分配。但需要更复杂的硬件设计,成本较高。

3.流水线方案

指令之间可以并行执行的方案。该方案通过在每个时钟周期启动一条指令,尽量让多条指令同时运行,但各自处在不同的执行步骤中。其追求的目标是力争在每个时钟脉冲周期完成一条指令的执行过程。

  • 解释时钟周期,指令周期,机器周期以及它们之间的关系
    ①CPU每取出并执行一条指令所需的全部时间称为指令周期,指令周期常由若干机器周期组成;②机器周期是在同步控制的机器中,执行指令周期中一步相对完整的操作所需的时间,如取指令、取有效地址、执行指令。通常机器周期长度=主存周期。一个机器周期包含若干时钟周期;③时钟周期是指计算机主时钟的周期时间,它是CPU操作的最基本单位,对应完成一个微操作所需的时间,通常时钟周期=计算机主频的倒数。
  • 计算机的一条指令有几个机器周期?
    一条指令包含的机器周期最多有4个。如空指令包含1个,加法指令包含2个,具有间址寻址的指令包含3个,再带有中短周期的指令包含4个。
  • 什么是指令周期?指令周期是否有一个固定值?为什么?
    指令周期是指取出并执行完一条指令所需的时间。由于计算机中各种指令执行所需的时间差异很大,因此为了提高CPU运行效率,即使在同步控制的机器中,不同指令的指令周期长度都是不一致的,也就是说指令周期对于不同的指令来说不是一个固定值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/175453.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SSM整合(Spring + SpringMVC + MyBatis)

SSM Spring SpringMVC MyBatis 准备数据库 SET FOREIGN_KEY_CHECKS0; DROP TABLE IF EXISTS user; CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(20) NOT NULL COMMENT 用户名,password varchar(255) NOT NULL COMMENT 密码,real_name varchar(…

Linux常用命令——startx命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) startx 用来启动X Window 补充说明 startx命令用来启动X Window,实际上启动X Window的程序为xinit。 语法 startx(参数)参数 客户端及选项:X客户端及选项;服务器及选项&a…

[LeetCode周赛复盘] 第 329 场周赛20230122

[LeetCode周赛复盘] 第 329 场周赛20230122 一、本周周赛总结二、 [Easy] 6296. 交替数字和1. 题目描述2. 思路分析3. 代码实现三、[Medium] 6297. 根据第 K 场考试的分数排序1. 题目描述2. 思路分析3. 代码实现四、[Medium] 6298. 执行逐位运算使字符串相等1. 题目描述2. 思路…

深入理解 OpenMP 线程同步机制

深入理解 OpenMP 线程同步机制 前言 在本篇文章当中主要给大家介绍 OpenMP 当中线程的同步和互斥机制,在 OpenMP 当中主要有三种不同的线程之间的互斥方式: 使用 critical 子句,使用这个子句主要是用于创建临界区和 OpenMP 提供的运行时库…

连续系统的数字PID控制仿真-1

被控对象为一电机模型传递函数:式中,J 0.0067;B0.10。采用M函数的形式,利用ODE45的方法求解连续对象方程,输入指令信号为yd(k)0.50sin(2*3.14*t),采用PID控制方法设计控制器,其中kp20.0 ,kd0.50。PID正弦跟…

12个开源的后台管理系统

1. D2admin 开源地址:https://github.com/d2-projects/d2-admin 文档地址:https://d2.pub/zh/doc/d2-admin/ 效果预览:https://d2.pub/d2-admin/preview/#/index 开源协议:MIT 2. vue-element-admin 开源地址:htt…

Kettle(3):快速入门

1 需求 有一个txt文件,内容如下: id,name,age,gender,province,city,region,phone,birthday,hobby,register_date 392456197008193000,张三,20,0,北京市,昌平区,回龙观,18589407692,1970-8-19,美食;篮球;足球,2018-8-6 9:44 267456198006210000,李四,2…

Vue3 – Composition API

1、认识CompositionAPI 1.1、Options API的弊端 在Vue2中,我们编写组件的方式是Options API: Options API的一大特点就是在对应的属性中编写对应的功能模块;比如data定义数据、methods中定义方法、computed中定义计算属性、watch中监听属性…

【快速简单登录认证】SpringBoot使用Sa-Token-Quick-Login插件快速登录认证

一、解决的问题 Sa-Token-Quick-Login 可以为一个系统快速的、零代码 注入一个登录页面 试想一下,假如我们开发了一个非常简单的小系统,比如说:服务器性能监控页面, 我们将它部署在服务器上,通过访问这个页面&#xf…

学习字符串函数和内存函数必看

字符串函数 1.strlen函数 strlen库函数 #include<stdio.h> #include<string.h> int main() {char arr[] "abc";char arr1[] { a,b,c };int len strlen(arr);int len1 strlen(arr1);//没有\0就无法停止printf("%d\n",len);printf("%…

VUE中的provide和inject用法

一、Vue中 常见的组件通信方式可分为三类 父子通信 父向子传递数据是通过 props&#xff0c;子向父是通过 events&#xff08;$emit&#xff09;&#xff1b; 通过父链 / 子链也可以通信&#xff08;$parent / $children&#xff09;&#xff1b; ref 也可以访问组件实例&…

XLSReadWriteII 写了一个DBGrdiEh创建EXCEL表的函数

XLSReadWriteII 写了一个DBGrdiEh创建EXCEL表的函数 自己通过XLSReadWriteII&#xff0c;写了一个由DBGridEh数据集&#xff0c;通过参数调用&#xff0c;创建EXCEL表格的函数&#xff0c;通过调用的参数设置&#xff0c;可以较为方便地&#xff0c;创建指定数据集的常用EXCEL表…

自动化和Selenium

作者&#xff1a;~小明学编程 文章专栏&#xff1a;测试开发 格言&#xff1a;热爱编程的&#xff0c;终将被编程所厚爱。 目录 什么是自动化&#xff0c;我们为什么需要自动化的测试&#xff1f; 为什么选择selenium来作为我们的web自动化测试的工具&#xff1f; 定位元素…

【C进阶】找单身狗

⭐博客主页&#xff1a;️CS semi主页 ⭐欢迎关注&#xff1a;点赞收藏留言 ⭐系列专栏&#xff1a;C语言进阶 ⭐代码仓库&#xff1a;C Advanced 家人们更新不易&#xff0c;你们的点赞和关注对我而言十分重要&#xff0c;友友们麻烦多多点赞&#xff0b;关注&#xff0c;你们…

Spring事务(事务的实现、隔离级别、传播机制)

目录 一、事务的定义和意义 二、事务的实现 1、MySQL事务的回顾 2、Spring声明式事务&#xff08;利⽤注解⾃动开启和提交事务&#xff09; 前置知识及概念 实例分析&#xff1a;事务的回滚 &#x1f514;特殊情况&#xff08;无自动回滚&#xff09; &#x1f514;事务…

VueJs中如何使用provide与inject

前言在vue2.0里面provide与inject是以选项式(配置)API的方式在组件中进行使用的,解决的是跨组件(祖孙)间通信的一种方式也就是父子组件间的通信,父组件上通过自定义属性,而子组件间通过props这种方式接收,如果想要一层一层的传递,这种方式就会比较麻烦,不灵活provide与inject就…

Linux下的进程信号

目录 信号背景&#xff1a; 信号产生前 Core Dump 信号产生中 信号产生后 其他概念 不可重入函数 volatile关键字 SIGCHLD 17号信号 信号背景&#xff1a; 在生活中处处都存在的信号&#xff0c;比如信号灯&#xff0c;要想处理信号&#xff0c;我们就必须具备两种…

day26-XML/枚举/注解

1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年&#xff0c;又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者&#xff1a; Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…

AWS - IAM

AWS IAM 自用笔记。 Terms IAM - Identity and Access Management, a global service it gives: Centralized control of AWS accountShared access to AWS accountGranular permissionsIdentity Federation, i.e., Facebook, LinkedIn etc. it allows: Multi-Factor Authe…

20230121解决AIO-3568J开发板无法刷机以及串口异常的问题

20230121解决AIO-3568J开发板无法刷机以及串口异常的问题 2023/1/21 22:31 一片比较旧的AIO-3568J开发板&#xff0c;症状&#xff1a; 1、无法刷机&启动。【Loader模式 & MASKROM模式】 2、串口输出乱码&#xff01; &#xff08;一&#xff09;刷机问题的解决&#x…