下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

流水线的执行

作者:课课家教育     来源: http://www.kokojia.com点击数:2133发布时间: 2017-06-13 10:00:57

标签: 流水线技术计算机硬件系统网络工程师

  在早期的计算机系统中,无论是指令的执行还是数据的处理,其都是严格地按照串行的方式来进行的,那就是指令或数据流入后,无论需要执行或处理的时间是长还是短,这时的除了正在执行或处理部件以外,其余的都处于闲置状态。这样的处理方式非常简单,但效率也是惊人的低下,因为这些闲置的部件完全可以在等待的时间里完成几个之前的同类工作。
  流水线技术是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。

流水线的执行_流水线技术_计算机硬件系统_网络工程师_课课家
  流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。从广义上来说,流水线是一种组织的工作方式,而且,和一般工厂的流水生产线是同一个概念层次的;就是从狭义看,流水线技术是可以用于许多地方的,除了中央处理器,还有图形加速引擎和其他必须从事繁重而又反复的运算的地方。
  那么,我们先拿工厂的流水生产线来做一个比喻:
  例如,现在在我们面前的是一种高级功率放大器的流水生产线,看看机器是如何运转的:首先,功率放大器的设计师首先把外观、电路等各种"软件"设计好,然后让采购科的人去大批量采购所需要的零件,准备好一切,然后就到生产线了。这时生产线会分成两部分:一条是五金机械组装,包括放大器的外壳和各种接插件、旋纽、固定螺丝等;另一条是电路部分的组装,包括电路板制作、零件测试、插板、焊接等,每一个步骤都可以独立运行,每一个步骤之间设有储物箱,以便放置上一个步骤的零件。待到正式生产,各种元件就会源源不绝的一级一级往下流,由于各个步骤之间的储物箱作用,上或下个步骤的短时间停顿并不会影响本步骤的正常运行。
  那么,我们也可以把计算机执行任务的过程比作这样一个--类似于工厂的流水生产线。所以,我们可以这样定义计算机流水线工作方式:计算机中的流水线由许多可以完成特定功能的部件组成,这些部件的数量的多少称为流水线的级数。流水线中的功能部件按照串行或并行的方式连接,计算机的执行任时,会把任务细分为若干个小任务,交由这些部件执行。每个部件之间设有缓存寄存器,用于保存上个部件已经执行的任务。在相同的时钟的控制下,任务一级一级地往下流,最后完成整个任务的执行。
  ARM7处理器核使用了典型三级流水线的冯·诺伊曼结构,ARM9系列则采用了基于五级流水线的哈佛结构。通过增加流水线级数简化了流水线各级的逻辑,进一步提高了处理器的性能。ARM7的三级流水线在执行单元完成了大量的工作,包括与操作数相关的寄存器和存储器读写操作、ALU操作以及相关器件之间的数据传输。执行单元的工作往往占用多个时钟周期,从而成为系统性能的瓶颈。ARM9采用了更为高效的五级流水线设计,增加了2个功能部件分别访问存储器并写回结果,且将读寄存器的操作转移到译码部件上,使流水线各部件在功能上更平衡;同时其哈佛架构避免了数据访问和取指的总线冲突。
  ARM7流水线技术
  ARM7系列处理器中每条指令分取指、译码、执行三个阶段,分别在不同的功能部件上依次独立完成。取指部件完成从存储器装载一条指令,通过译码部件产生下一周期数据路径需要的控制信号,完成寄存器的解码,再送到执行单元完成寄存器的读取、ALU运算及运算结果的写回,需要访问存储器的指令完成存储器的访问。流水线上虽然一条指令仍需3个时钟周期来完成,但通过多个部件并行,使得处理器的吞吐率约为每个周期一条指令,提高了流式指令的处理速度,从而可达到O.9 MIPS/MHz的指令执行速度。
  在三级流水线下,通过R15访问PC(程序计数器)时会出现取指位置和执行位置不同的现象。这须结合流水线的执行情况考虑,取指部件根据PC取指,取指完成后PC+4送到PC,并把取到的指令传递给译码部件,然后取指部件根据新的PC取指。因为每条指令4字节,故PC值等于当前程序执行位置+8。
  ARM9流水线技术
  ARM9系列处理器的流水线分为取指、译码、执行、访存、回写。取指部件完成从指令存储器取指;译码部件读取寄存器操作数,与三级流水线中不占有数据路径区别很大;执行部件产生ALU运算结果或产生存储器地址(对于存储器访问指令来讲);访存部件访问数据存储器;回写部件完成执行结果写回寄存器。把三级流水线中的执行单元进一步细化,减少了在每个时钟周期内必须完成的工作量,进而允许使用较高的时钟频率,且具有分开的指令和数据存储器,减少了冲突的发生,每条指令的平均周期数明显减少。
  流水线技术提高了处理器的并行性,与串行CPU相比大大提高了处理器性能。通过调节指令序列的方法又能够有效地避免流水线冲突的发生,从而提高了流水线的执行效率。
  1.流水线深度(级数)增加所带来的影响。

流水线技术是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。   流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。从广义上来说,流水线是一种组织的工作方式,而且,和一般工厂的流水生产线是同一个概念层次的;就是从狭义看,流水线技术是可以用于许多地方的,除了中央处理器,还有图形加速引擎和其他必须从事繁重而又反复的运算的地方。
  ARM7 采用 3 级流水线, ARM9 采用 5 线流水线, ARM10 采用 6 级流水线, 但是随着流水线深度的增加,指令的吞吐量提高了,每一段的工作量被消减了,使得处理器可以工作在更高的频率,同时也改善了性能,但系统延时 (latency) 也增加了,这是因为在内核执行一条指令前,需要更多的周期来填充流水线。并且,时钟频率的增加,指令执行周期也相应缩减了,这就要求减小指令执行周期的时间,也就对硬件设计带来了更大的要求。所以,流水线深度并不是越深越好。
  2.流水线执行特点
  ARM 流水线的一条指令只有在完全通过 ” 执行 ” 阶段才被处理 。这句话很重要,也就是说,当处理器开始取第四条指令时,第一条指令才完成执行。我们如果不考虑流水线的设计,只看它的原理,其实是很简单的,他的复杂之处在于发生流水线冒险时,如何保证其工作得仍然很好。
  流水线冒险一般分为控制冒险和数据冒险,而数据冒险一般可分为阻塞 ( 即下一条指令依赖于前一条指令的结果 ) 、分支和跳转、异常(异常和中断)。由于 ARM 是硬件 flush 流水设计的,当发生冒险时,会暂停取指,然后清流水, (MIPS 解决冒险通常依赖于编译器,比如插入一条 NOP 指令及重新排列指令序列 ) 。
  流水线功能繁杂,种类也非常多;如果按照处理级别来分类,流水线可以有操作部件级、指令级和处理机级;如果按照流水线可以完成的动作的数量来分类,又可以分为单功能和多功能流水线;如果按照流水线内部的功能部件的连接方式来分类,则有线性流水线和非线性流水线;按照可处理对象来分类,还可以有标量流水线和向量流水线……

流水线技术是一种将每条指令分解为多步,并让各步操作重叠,从而实现几条指令并行处理的技术。流水线技术通过多个功能部件并行工作来缩短程序执行时间,提高处理器核的效率和吞吐率,从而成为微处理器设计中最为重要的技术之一。   流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线的工作方式就象工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即指令预取、译码、执行、写回结果,浮点流水又分为八级流水。从广义上来说,流水线是一种组织的工作方式,而且,和一般工厂的流水生产线是同一个概念层次的;就是从狭义看,流水线技术是可以用于许多地方的,除了中央处理器,还有图形加速引擎和其他必须从事繁重而又反复的运算的地方。
  衡量一种流水线处理方式的性能高低的书面数据主要由吞吐率、效率和加速比这三个参数来决定。
  吞吐率:指的是计算机中的流水线在特定的时间内可以处理的任务或输出数据的结果的数量。流水线的吞吐率可以进一步分为最大吞吐率和实际吞吐率。它们主要和流水段的处理时间、缓存寄存器的延迟时间有关,流水段的处理时间越长,缓存寄存器的延迟时间越大,那么,这条流水线的吞吐量就越小。因为,在线性流水线中,最大吞吐率Tp max=流水线时钟周期△T/1=max(T1,...Ti,..Tm)+T1/1,而其中,m是流水线的段数,i是特定过程段执行时间。如果,一条流水线的段数越多,过程执行时间越长,那么,这条流水线的理论吞吐率就越小。
  更多内容,尽在课课家,我们期待您的咨询!

赞(22)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程