ch8_2_CPU的指令周期,流水线技术

news2024/9/23 9:21:08

1.  指令周期

指令周期是指_
CPU从主存取出一条指令, 分析指令,加上执行这条指令的时间。

1.1指令周期

指令周期: 是指cpu,从内存中取出指令,并且执行一条指令所需要的全部时间。

比如 从内存单元中,取出操作数,使用操作码add, 与acc寄存器中的值相加,结果保存在acc寄存器中。

在这里插入图片描述

取指周期:要访问一次内存, 将指令从内存中取出,送入到cpu。
执行周期: 也访问一次内存,将操作数从内存中取出,送入到cpu中, 执行加法操作。

1.2 每条指令的指令周期不同

取指周期,要访问一次内存, 将指令从内存中取出,送入到cpu。

执行周期: 也访问一次内存,将操作数从内存中取出,执行对应的运算,将结果保存在寄存器中。

在这里插入图片描述

1.3 具有间接寻址的指令周期

在这里插入图片描述
取指周期,要访问一次内存, 将指令从内存中取出,送入到cpu。

间址周期:访问一次内存,将操作数的地址从内存中取出。

执行周期: 也访问一次内存,将操作数从内存中取出,执行对应的运算,将结果保存在寄存器中。

1.4 带有中断周期的指令周期

在这里插入图片描述

中断周期:保护断点, 形成中断服务程序的入口地址, 关中断。

1.5 指令周期流程

根据CPU访存的性质不同,可将CPU的工作周期分为取指周期、间址周期、执行周期和中断周期。

在这里插入图片描述

1.6 CPU 工作周期的标志

控制器在指令周期的阶段,
要发出不同的控制命令,
控制器也需要知道当前处于指令周期的何种阶段。

CPU 访存有四种性质

具体操作周期阶段
取指令取指周期
取地址间址周期
存取操作数或结果执行周期
存程序断点中断周期

在这里插入图片描述

使用D触发器,对指令周期中不同的阶段进行标识

2. 指令周期的数据流

2.1取指周期数据流

MAR: 要访问存储器的地址,保存在MAR中。

MDR: 从存储器中取出的数据(或者指令),放在MDR当中。

IR:取值周期中,取回的是指令,保存在IR当中,IR寄存器专门用于保存指令。

CU:所有部件的运行通过CU控制;
具体来讲,
CU向存储器发出读信号。
cu 控制,准备下一条指令的地址, 将pc+1 的值保存在pc总;

在这里插入图片描述

2.2 间址周期数据流

一旦取指周期结束,CU便检查IR中的内容,以确定其是否有间址操作。

要取出的操作数,所在存储器当中的地址保存在MDR 当中;

将MDR中存储的地址输入到MAR当中。
在这里插入图片描述

2.3 执行周期数据流

不同指令的执行周期数据流不同

2.4 中断周期数据流

1. 保存断点;CU控制,将程序断点保存在内存单元中的哪个地址当中,将cu中的地址存放在MAR当中, MAR将数据存放在地址总线当中, 这里要保存的断点,是中断之后,需要返回程序的位置,代表了中断恢复之后,需要执行下一条指令的地址,该地址保存在pc当中,pc将该值保存在MDR当中。
2.形成中断服务程序的入口地址, 该地址同样也是由cu给出,并且写入到pc当中。
3.硬件,关中断;
在这里插入图片描述

3. 指令流水

3.1如何提高机器速度

    1. 提高访存速度
      高速芯片, Cache, 多体并行

多体并行:cpu在一个主存周期当中,对多个存储器进行交叉访问, 多个存储体对cpu提供数据。

    1. 提高 I/O 和主机之间的传送速度
      中断, DMA, 通道, I/O 处理机, 多总线
    1. 提高运算器速度
      高速芯片 改进算法 快速进位链

为了提高运算速度,可以采用高速芯片和快速进位链,以及改进算法等措施

• 提高整机处理能力
高速器件 改进系统结构 ,开发系统的并行性

3.2 系统的并行性

  • 并行包含同时性和并发性两个方面:

同时:是指两个或多个事件在同一时刻发生,
并发: 是指两个或多个事件在同一时间段发生。

  • 并行性的等级

过程级(程序、进程), 粗粒度, 软件实现
指令级(指令之间), 指令内部, 细粒度, 硬件实现

3.3指令流水原理

  • 指令的串行执行

在这里插入图片描述

取指令 取指令部件 完成 总有一个部件 空闲

执行指令 执行指令部件 完成

  • 指令的二级流水
    在这里插入图片描述

若 取指 和 执行 阶段时间上 完全重叠
指令周期 减半 速度提高 1 倍

3.4 影响指令流水效率加倍的因素

  • 执行时间 > 取指时间:
    在这里插入图片描述

条件转移指令:
是影响指令流水效率加倍的一个因素,当遇到条件转移指令时,下一条指令是不可知的,因为必须等到执行阶段结束后,才能获知条件是否成立,从而决定下条指令的地址,造成时间损失。

3.5 指令的六级流水

指令作用
FI取指令
DI指令译码
CO形成操作数地址
FO取操作数
EI执行操作
WO结果写回

结果写回, 是指将运行结果写回到给定寄存器当中, 或者写回到给定的内存单元当中。
在这里插入图片描述

4. 影响指令流水线性能的因素

4.1结构相关

不同指令争用同一功能部件产生资源冲突.
在这里插入图片描述

解决办法:
• 停顿
• 指令存储器和数据存储器分开
• 指令预取技术 (适用于访存周期短的情况)

4.2数据相关

不同指令因重叠操作,可能改变操作数的 读/写 访问顺序

在这里插入图片描述
解决办法

  • 采用
  • 旁路技术

4.3控制相关

由转移指令引起

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

5. 流水线性能

5.1 吞吐率

吞吐率: 单位时间内 流水线所完成指令 或 输出结果 的 数量;

设 m 段的流水线各段时间为Δt
• 最大吞吐率:

T p m a x = 1 Δ t T_{pmax} = \frac{1}{Δt} Tpmax=Δt1

• 实际吞吐率
连续处理 n 条指令的吞吐率为
T p = n m ⋅ Δ t + ( n − 1 ) ⋅ Δ t T_{p}= \frac{n} {m ·Δt + (n-1) ·Δ t} Tp=mΔt+(n1)Δtn

5.2 加速比

m 段的 流水线的速度 与等功能的 非流水线的速度 之比
设流水线各段时间为 Δ t;

完成 n 条指令在 m 段流水线上共需:
T = m ⋅ Δ t + ( n − 1 ) ⋅ Δ t T= {m ·Δt + (n-1) ·Δ t} T=mΔt+(n1)Δt

完成 n 条指令在等效的非流水线上共需:
T p = n m ⋅ Δ t T_{p}= {nm ·Δt } Tp=nmΔt

S p = n m ⋅ Δ t m ⋅ Δ t + ( n − 1 ) ⋅ Δ t S_{p}= \frac{nm ·Δt } {m ·Δt + (n-1) ·Δ t} Sp=mΔt+(n1)ΔtnmΔt

= n m m + n − 1 = \frac{nm}{ m+ n-1} =m+n1nm

5.3效率

流水线中各功能段的 利用率

由于流水线有 建立时间 和 排空时间
因此各功能段的 设备不可能 一直 处于 工作 状态

在这里插入图片描述

流水线中各功能段的 利用率

在这里插入图片描述

6. 流水线的多发技术

6.1 超标量技术

在这里插入图片描述

6.2 超流水线技术

在这里插入图片描述

6.3超长指令字技术

在这里插入图片描述

7. 流水线结构

7.1 指令流水线

在这里插入图片描述

7.2 运算流水线

在这里插入图片描述

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

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

相关文章

【使用Neo4j进行图数据可视化】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

“面试造火箭,入职拧螺丝”2023最新最全的Java开发八股文合集来了

前言 金三银四招聘旺季马上就到了,不知道大家是否准备好了,面对金三银四的招聘旺季,如果没有精心准备那笔者认为那是对自己不负责任;就我们 Java 程序员来说,多数的公司总体上面试都是以自我介绍项目介绍项目细节/难点…

Java016——Java输入输出语句

一、输出语句 Java常用的输出语句有三种: 1)System.out.println(); 换行输出,输出后会自动换行。 //示例 System.out.println("Hello"); System.out.println("World");//输出 Hello World2)System.out.pri…

LIN-物理层(收发器)

文章目录 一、显性和隐性二、LIN的供电电压说明三、LIN通道数3.1 单通道3.2 双通道3.3 四通道 一、显性和隐性 LIN总线协议规定其物理层收发器的显性(Dominant , 逻辑 “ 0”,电气特性为GND(0V))和隐性电平(Recessive , 逻辑 “ …

cgi接口原理(boa服务器)

CGI:通用网关接口(Common Gateway Interface)是一个Web服务器主机提供信息服务的标准接口。通过CGI接口,Web服务器就能够获取客户端提交的信息,转交给服务器端的CGI程序进行处理,最后返回结果给客户端。 b…

字符串概述

字符串 一、API二、字符串2.1字符串的构造方法2.2 字符串构造时的内存2.2.1 直接赋值时的内存模型2.2.2 由new创建时的内存模型 2.3 字符串的比较三、StringBuilder 一、API 目前已学过的两个API:Random和Scanner。 对记不清的API可以去JDK-API帮助文档进行查找。 …

基于matlab对现代相控阵系统中常用的子阵列进行建模分析

一、前言 本示例说明如何使用相控阵系统工具箱对现代相控阵系统中常用的子阵列进行建模并进行分析。 相控阵天线与传统碟形天线相比具有许多优势。相控阵天线的元件更容易制造;整个系统受组件故障的影响较小;最重要的是,可以向不同方向进行电子扫描。 但是&#xff…

分布式系统学习第一天 fastDFS框架学习

目录 1. 项目架构图 1.1 一些概念 1.2 项目架构图 2. 分布式文件系统 2.1 传统文件系统 3. FastDFS 3.1 fastDFS介绍 3.2 fastDFS安装 3.3 fastDFS配置文件 3.4 fastDFS的启动 3.5 对file_id的解释 4. 上传下载代码实现 5. 源码安装 - 回顾 1. 项目架构图 1.1 一…

JDK8-2-流(2)- 流操作

JDK8-2-流(2)- 流操作 上篇 JDK8-2-流(1)-简介 中简单介绍了什么是流以及使用流的好处,本篇主要介绍流的操作类型以及如何操作。 如何返回一个流 ① collection.stream 即调用集合 java.util.Collection 下的 stre…

大学生如何申请一台免费服务器?

大学生如何申请一台免费服务器?阿里云学生服务器免费申请:高效计划,可以免费领取一台阿里云服务器,如果你是一名高校学生,想搭建一个linux学习环境、git代码托管服务器,或者创建个人博客网站记录自己的学习…

【小米技术分享】MySQL:一条数据的存储之旅

大家好,我是你们的小米,一个热爱技术分享的活泼小伙伴!今天,我来给大家揭开一个神秘的面纱,带你们深入了解一下MySQL数据库是如何保存一条数据的。 客户端 首先,让我们从客户端(Client&#x…

【雕爷学编程】Arduino动手做(114)---US-015高分辨超声波模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

【免费】【sci】考虑不同充电需求的电动汽车有序充电调度方法(含matlab代码)

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 该程序复现sci文献《A coordinated charging scheduling method for electric vehicles considering different charging demands》,主要实现电动汽车协调充电调度方法,该方法主要有以…

如何使用PyTorch 在 OpenAI Gym 上的 CartPole-v0 任务上训练深度 Q 学习(DQN)智能体

强化学习(DQN)教程 本教程说明如何使用 PyTorch 在 OpenAI Gym 上的 CartPole-v0 任务上训练深度 Q 学习(DQN)智能体。 任务 智能体必须在两个动作之间做出决定-向左或向右移动推车-以便使与之相连的杆子保持直立。 您可以在 G…

存储笔记7 NAS

NAS  Describe NAS, its benefits and components  Discuss different NAS implementations  Describe NAS file-sharing protocols  Discuss NAS management options File Sharing Environment 文件系统:存储组织数据文件的结构化方式文件共享 网络存储…

python3GUI--图片浏览器By:PyQt5(附源码)

文章目录 一.前言二.展示1.主界面2.添加图片3.多级目录4.查看文件信息5.调整UI布局 三.源代码1.image_god_main_v.py2.image_god_GUI.py 四.总结 一.前言 本次使用PyQt5开发一款图片浏览器,本篇主要练习QD…

AIGC新时代,注意政策走向,产业方向,拥抱可信AI。需要了解基本理论,基础模型,前沿进展,产品应用,以及小小的项目复现

AIGC(AI-Generated Content,AI生成内容)是指基于生成对抗网络(GAN)、大型预训练模型等人工智能技术的方法,通过对已有数据进行学习和模式识别,以适当的泛化能力生成相关内容的技术。类似的概念还…

免费、不用部署SD:AI二维码制作教程

大家好,我是可夫小子,《小白玩转ChatGPT》专栏作者,关注AIGC、读书和自媒体。 最近,风格化的AI二维码,应该没少见吧。生成的原理大家大概也知道,主要通过stable diffusion和一些插件来完成,但对…

【Linux】HTTPS协议

目录 🍺前言🍻HTTPS协议原理🎀1、概念🎁2、加密和解密🎂3、常见加密方式🍁3.1、对称加密🍂3.2、非对称加密 🎃4、数据摘要和数据指纹🍤5、HTTPS工作原理🌸5.1…

学生速看!免费领取一台阿里云服务器全流程

阿里云学生服务器优惠活动:高效计划,可以免费领取一台阿里云服务器,如果你是一名高校学生,想搭建一个linux学习环境、git代码托管服务器,或者创建个人博客网站记录自己的学习成长历程,拥有一台云服务器是很…