指令流水线——基本概念与性能指标

简介: 指令流水线——基本概念与性能指标

指令流水的定义


一条指令的执行过程可以分成多个阶段(或过程)。


根据计算机的不同,具体的分法也不同。


  • 取指:根据PC内容访问主存储器,取出一条指令送到IR中。


  • 分析:对指令操作码进行译码,按照给定的寻址方式和地址字段中的内容形成操作数的有效地址EA,并从有效地址EA中取出操作数。(特点:每个阶段用到的硬件不一样。)


  • 执行:根据操作码字段,完成指令规定的功能,即把运算结果写到通用寄存器或主存中。


设取指、分析、执行3个阶段的时间都相等,用t表示 ,按以下几种执行方式分析n条指令的执行时间


1. 顺序执行方式:总耗时T = n×3t = 3nt



传统冯·诺依曼机采用顺序执行方式,又称串行执行方式。


优缺点


优点:控制简单,硬件代价小。


缺点:执行指令的速度较慢,在任何时刻,处理机中只有一条指令在执行,各功能部件的利用率很低。


2. 一次重叠执行方式:总耗时T = 3t + (n-1)×2t = (1+2n)t



优缺点

优点:程序的执行时间缩短了1/3,各功能部件的利用率明显提高。


缺点:需要付出硬件上较大开销的代价,控制过程也比顺序执行复杂了


3. 二次重叠执行方式:总耗时T = 3t + (n-1)×t = (2+n)t



与顺序执行方式相比,指令的执行时间缩短近2/3。这是一种理想的指令执行方式,在正常情况下,处理机中同时有3条指令在执行。


注意:


也可以把每条指令的执行过程分成4个或5个阶段,分成5个阶段是比较常见的做法。


流水线的表示方法


通过指令执行过程图与时空图的方式进行表示


1. 指令执行过程图



主要用于分析指令执行过程以及影响流水线的因素


2. 时空图


空间:不同的阶段所对应的不同的硬件资源



主要用于分析流水线的性能


流水线的性能指标


流水线的性能指标有以下三个标准:


  1. 吞吐率


  1. 加速比


  1. 效率


我们分别来看:


1. 吞吐率


吞吐率是指在单位时间内流水线所完成的任务数量,或是输出结果的数量。


设任务数为n;处理完成n个任务所用的时间为Tk


则计算流水线吞吐率(TP)的最基本的公式为 TP = n/Tk。


理想情况下,流水线的时空图如下:



一条指令的执行分为k个阶段,每个阶段耗时△t ,一般取△t =一个时钟周期


2. 加速比


加速比:完成同样一批任务,不使用流水线所用的时间与使用流水线所用的时间之比。


设T0表示不使用流水线时的执行时间,即顺序执行所用的时间;Tk表示使用流水线时的执行时间


则计算流水线加速比(S)的基本公式为 S = T0/Tk


理想情况下,流水线的时空图如下:



一条指令的执行分为k个阶段,每个阶段耗时△t ,一般取△t =一个时钟周期


3. 效率:


效率:流水线的设备利用率称为流水线的效率。


在时空图上,流水线的效率定义为完成n个任务占用的时空区有效面积与 n个任务所用的时间与k个流水段所围成的时空区总面积之比。


理想情况下,流水线的时空图如下:



一条指令的执行分为k个阶段,每个阶段耗时Dt ,一般取Dt =一个时钟周期

相关文章
|
前端开发 算法 测试技术
【软考学习5】流水线基本概念、周期执行时间、吞吐率、加速比和效率的计算
【软考学习5】流水线基本概念、周期执行时间、吞吐率、加速比和效率的计算
859 0
用工厂流水线的方式来理解 RxJava 的概念
本文讲的是用工厂流水线的方式来理解 RxJava 的概念,已经有很多 RxJava 的文章通过例子阐述了什么是 RxJava 以及怎么去用,但它们大多数只有代码。虽然也会通过类比来解释,例如最出名的就是“流”。通常情况下代码能完美地让人理解
1171 0
|
24天前
|
弹性计算 运维 Serverless
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
44 1
项目管理和持续集成系统搭建问题之云效流水线支持阿里云产品的企业用户如何解决
|
1月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之如何下载流水线构建过程中生成的jar
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之如何限制在本地的构建主机创建的流水线的并发数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
敏捷开发 Java 测试技术
阿里云云效产品使用合集之怎么设置流水线中的全局参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
运维 Java Devops
阿里云云效操作报错合集之在流水线增加单元测试报错,是什么导致的
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1月前
|
缓存 运维 前端开发
阿里云云效操作报错合集之如何解决在使用流水线构建net8应用时遇到无法构建的报错
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1月前
|
敏捷开发 缓存 5G
阿里云云效产品使用合集之流水线中的webhook是否可以设置为变量
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
敏捷开发 测试技术 持续交付
阿里云云效产品使用合集之流水线同时并发数最高是多少
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。