流水线CPU技术讲解
- 格式:ppt
- 大小:2.08 MB
- 文档页数:85
计算机流⽔线(Pipeline)技术流⽔线是现代RISC核⼼的⼀个重要设计,它极⼤地提⾼了性能。
对于⼀条具体的指令执⾏过程,通常可以分为五个部分:取指令,指令译码,取操作数,运算(ALU),写结果。
其中前三步⼀般由指令控制器完成,后两步则由运算器完成。
按照传统的⽅式,所有指令顺序执⾏,那么先是指令控制器⼯作,完成第⼀条指令的前三步,然后运算器⼯作,完成后两步,在指令控制器⼯作,完成第⼆条指令的前三步,在是运算器,完成第⼆条指令的后两部……很明显,当指令控制器⼯作是运算器基本上在休息,⽽当运算器在⼯作时指令控制器却在休息,造成了相当⼤的资源浪费。
解决⽅法很容易想到,当指令控制器完成了第⼀条指令的前三步后,直接开始第⼆条指令的操作,运算单元也是。
这样就形成了流⽔线系统,这是⼀条2级流⽔线。
如果是⼀个超标量系统,假设有三个指令控制单元和两个运算单元,那么就可以在完成了第⼀条指令的取址⼯作后直接开始第⼆条指令的取址,这时第⼀条指令在进⾏译码,然后第三条指令取址,第⼆条指令译码,第⼀条指令取操作数……这样就是⼀个5级流⽔线。
很显然,5级流⽔线的平均理论速度是不⽤流⽔线的4倍。
流⽔线系统最⼤限度地利⽤了CPU资源,使每个部件在每个时钟周期都⼯作,⼤⼤提⾼了效率。
但是,流⽔线有两个⾮常⼤的问题:相关和转移。
在⼀个流⽔线系统中,如果第⼆条指令需要⽤到第⼀条指令的结果,这种情况叫做相关。
以上⾯哪个5级流⽔线为例,当第⼆条指令需要取操作数时,第⼀条指令的运算还没有完成,如果这时第⼆条指令就去取操作数,就会得到错误的结果。
所以,这时整条流⽔线不得不停顿下来,等待第⼀条指令的完成。
这是很讨厌的问题,特别是对于⽐较长的流⽔线,⽐如20级,这种停顿通常要损失⼗⼏个时钟周期。
⽬前解决这个问题的⽅法是乱序执⾏。
乱序执⾏的原理是在两条相关指令中插⼊不相关的指令,使整条流⽔线顺畅。
⽐如上⾯的例⼦中,开始执⾏第⼀条指令后直接开始执⾏第三条指令(假设第三条指令不相关),然后才开始执⾏第⼆条指令,这样当第⼆条指令需要取操作数时第⼀条指令刚好完成,⽽且第三条指令也快要完成了,整条流⽔线不会停顿。
Intel系列CPU流水线技术的发展与展望流水线技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。
在计算机中,把一个重复的过程分解为若干子过程,每个子过程由专门的功能部件来实现。
将多个处理过程在时间上错开,依次通过各功能段,这样,每个子过程就可以与其他子过程并行进行。
其中,流水线中的每个子过程及其功能部件称为流水线的级或段,段与段相互连接形成流水线。
流水线的段数称为流水线的深度。
把流水线技术应用于指令的解释执行过程,就形成了指令流水线。
其中可以把指令的执行过程分为取指令、译码、执行、存结果4个子过程。
把流水线技术应用于运算的执行过程,就形成了运算操作流水线,也称为部件级流水线。
Inter Pentium 系列中采用的流水线技术流水线技术早在Intel的X86芯片中均得到了实现。
而Pentium系列CPU产品更是一个高级的超标量处理器。
奔腾处理器可以在一个时钟周期内完成两条指令,一个流水线完成一条指令。
具有MMX技术的奔腾处理器为整型流水线增加了一个额外的处理阶段。
在486芯片中,一条指令一般被划分为五个标准的部分,奔腾亦是如此,而在P6中,由于采用了近似于RISC的技术,一条指令被划分成了创纪录的十四个阶段,这极大地提高了流水线的速度。
P6系列处理器使用动态执行结构,该结构通过硬件寄存器重命名和分支预测的方法,将乱序执行和推测执行合成在一起。
奔腾Ⅲ处理器使用了P6中的动态执行技术,增加了超标量双流水线结构、分支预测技术、通过乱序来优化指令流水线、将指令划分为更细的阶段。
而奔腾Ⅳ新增的技术有使用高级动态执行、执行跟踪缓存、快速执行引擎、超长管道处理技术、超线程技术。
它基本的指令流水线长度达到了20级,更长的流水线可以使处理器运行在更高的主频下,从而提高处理器的性能,但有可能带来一些指令执行上的延迟。
提高流水线性能的方法及相关技术从不同的角度和观点,可以把流水线分成多种不同的种类。
按照流水线所完成的功能来分,可以分为单功能流水线和多功能流水线。
中央处理器CPU——指令流⽔线指令流⽔线概念:⼀条指令的执⾏过程划分为不同阶段,占⽤不同硬件资源,多条指令重叠操作实现并⾏处理1.顺序执⾏:⼜称串⾏执⾏⽅式;传统的冯诺依曼机器优点:控制简单,硬件代价⼩缺点:速度慢,各功能部件利⽤率低2.⼀次重叠执⾏⽅式:优点:时间缩短三分之⼀,各功能部件利⽤效率提⾼缺点:控制复杂,硬件开销增⼤3.⼆次重叠执⾏⽅式:优点:时间缩短三分之⼆,理想状态指令执⾏过程图:⽤于分析指令执⾏过程和影响流⽔线因素时空图:⽤于分析流⽔线的性能吞吐率TP:单位时间内流⽔线完成的任务数量或输出结果的数量加速⽐S:同⼀任务下,不使⽤流⽔线⽤时与使⽤流⽔线⽤时之⽐效率E:流⽔线的设备利⽤率锁存器(缓冲寄存器):作⽤是保存本流⽔段的执⾏结果,提供给下⼀流⽔段使⽤。
影响因素:结构相关(资源冲突):多条指令同⼀时间争⽤同⼀资源解决:1.后⼀相关指令暂停⼀周期;2.资源重复配置(数据存储器+指令存储器)数据相关(数据冲突):在⼀个程序中,上⼀条指令执⾏完才能执⾏下⼀条指令(这两条指令即为数据相关)解决:将数据相关的指令和后续指令暂停时钟周期到问题消失再执⾏;1.硬件阻塞stall和软件插⼊NOP;2.数据旁路技术;3.编译优化:通过编译器调整指令顺序控制相关(控制冲突):转移指令和改变PC值的指令造成断流解决:1.尽早判别转移是否发⽣,尽早⽣成转移⽬标地址2.预取转移成功和不成功两个控制流⽅向上的⽬标指令3.加快和提前形成条件码4.提⾼转移⽅向的猜准率流⽔线的分类1.根据流⽔线使⽤级别:部件功能级、处理机级和处理机间级流⽔线部件功能级流⽔:将复杂的算术逻辑运算组成流⽔线⼯作⽅式处理机级流⽔:把⼀条指令解释过程分成多个⼦过程,如取指、译码、执⾏、访存及写回5个⼦过程。
处理机间流⽔:是⼀种宏流⽔,其中每⼀个处理机完成某⼀专门任务,各个处理机所得到的结果需存放在与下⼀个处理机所共享的存储器中2,按流⽔线可以完成的功能分为:单功能流⽔线和多功能流⽔线单功能流⽔线:指只能实现⼀种固定的专门功能的流⽔线;多功能流⽔线:指通过各段间的不同连接⽅式可以同时或不同时地实现多种能的流⽔线。
Intel系列CPU的流水线结构与性能分析流水线技术早在Intel的X86芯片中均得到了实现。
流水线的使用使CPU 的性能得到了很大的提升,而Pentium系列CPU产品更是一个高级的超标量处理器。
当然CPU流水线性能是有限制,影响CPU流水线性能的因素有:1、多个任务在同一时间周期内争用同一个流水段例如,假如在指令流水线中,如果数据和指令是放在同一个储存器中,并且访问接口也只有一个,那么,两条指令就会争用储存器;在一些算数流水线中,有些运算会同时访问一个运算部件。
2、数据依赖比如,A运算必须得到B运算的结果,但是,B运算还没有开始,A运算动作就必须等待,直到A运算完成,两次运算不能同时执行。
3、条件转移的影响如果第一条指令是一个条件转移指令,那么系统就会不清楚下面应该执行那一条指令。
这时就必须等第一条指令的判断结果出来才能执行第二条指令。
条件转移所造成的流水线停顿甚至比相关还要严重的多。
越是长的流水线,相关和转移两大问题也越严重,所以,流水线并不是越长越好,超标量也不是越多越好,找到一个速度与效率的平衡点才是最重要的。
为了解决这些影响流水线性能的因素和提高CPU性能,Intel公司采取了一系列技术手段。
在Pentium III的时候主要采用的技术1.采用超标量双流水线结构超标量流水线设计是Pentium微处理器技术的核心。
所谓超标量就是处理器内部含有多个执行单元来完成多条指令的同时执行。
Pentium有两条分别称为U和V的指令流水线,各自有独立的算术逻辑单元ALU及高速缓存结构。
这种双流水线并行作业的方式,使得Pentium在每个时钟周期内可同时执行两条指令。
此外,还有一个执行单元,保证同时完成一条浮点运算指令。
在Pentium III时采用3条独立的12级超标量流水线。
2.分支预测技术为了减少由于转移导致流水线的效率损失,Pentium采用分支预测技术来动态预测指令的目标地址,从而节省了CPU的执行时间。
处理器系列之CPU流水线科普1989年推出的i486处理器引入了五级流水线。
这时,在CPU中不再仅运行一条指令,每一级流水线在同一时刻都运行着不同的指令。
这个设计使得i486比同频率的386处理器性能提升了不止一倍。
五级流水线中的取指阶段将指令从指令缓存中取出(i486中的指令缓存为8KB);第二级为译码阶段,将取出的指令翻译为具体的功能操作;第三级为转址阶段,用来将内存地址和偏移进行转换;第四级为执行阶段,指令在该阶段真正执行运算;第五级为退出阶段,运算的结果被写回寄存器或者内存。
由于处理器同时运行了多条指令,大大提升了程序运行的性能。
处理器一般由如下功能单元组成:取指单元译码单元执行单元Load/store单元(load用于从内存中取数据,而STORE用于存数据到内存)例外/中断单元电源管理单元流水线通常由取指、译码、执行及Load/Store等单元组成。
各单元按图所示的几个步骤循环重复自身工作。
流水线的含义:与工厂生产线类似,将一件工作分成若干个固定的工序进行。
cpu流水线技术是一种将指令分解为多步,并让不同指令的各步操作重叠,从而实现几条指令并行处理,以加速程序运行过程的技术。
指令的每步有各自独立的电路来处理,每完成一步,就进到下一步,而前一步则处理后续指令。
(原理和生产流水线一样)CPU指令流水线根据之前描述的基础,指令进入流水线,通过流水线处理,从流水线出来的过程,对于我们程序员来说,是比较直观的。
I486拥有五级流水线。
分别是:取指(Fetch),译码(D1, main decode),转址(D2, translate),执行(EX, execute),写回(WB)。
某个指令可以在流水线的任何一级。
但是这样的流水线有一个明显的缺陷。
对于下面的指令代码,它们的功能是将两个变量的内容进行交换。
1 XOR a, b2 XOR b, a3 XOR a, b从8086直到386处理器都没有流水线。
高效的计算方式。
流水线结构是一种在CPU中实现的技术,它允许在一个时钟周期内完成多条指令的执行。
流水线结构通过将一条指令分为若干个独立的阶段来实现,每个阶段都负责执行一部分指令。
这样,在一个时钟周期内就可以同时执行多条指令。
这样,CPU 就可以在一个时钟周期内完成多条指令的执行。
流水线结构带来了很多优点,主要有以下几点:
提高了CPU的运行速度,由于在一个时钟周期内可以同时执行多条指令,所以CPU的运行速度得到了提高。
提高了CPU的并行度,可以同时执行多条指令,并行度提高了。
降低了CPU的功耗。
缺点:但是流水线结构也带来了一些问题,比如流水线控制和数据相关性等,这些问题需要程序员在编程时进行特别处理。
当流水线执行过程中出现数据相关性时,就会导致流水线活动的阻塞,这种现象称为流水线冒险(Pipeline Hazard)。
数据相关性通常发生在两条指令之间,而在这两条指令之间的那些指令就会因为数据相关性而被阻塞。
解决这个问题的方法有两种:
数据相关性检测和预流控制(Data Hazard Detection and Control)。
这种方法可以在指令执行之前检测出数据相关性,
并采取适当的措施防止阻塞。
流水线重排(Pipeline Rescheduling)。
这种方法可以在程序运行过程中,重新调整指令的执行顺序,以避免数据相关性。
流水线控制是一种很复杂的问题,需要综合考虑很多因素,比如指令的类型、指令的执行顺序、流水线的结构等等。
在这些因素的综合影响下,程序员需要在编程时特别注意这些问题,以避免流水线的阻塞。
什么是流水线技术pipeline/uid-9185047-id-445171.html2010流水线(Pipeline)技术是目前广泛应用于微处理芯片(CPU)中的一项关键技术,但对许多非专业性的读者来说,这个名词过于抽象,加上P6(高能奔腾)应用的超流水线(Super Pipeline)技术,更令人一头雾水,不知所云。
本文以简单、形象、非专业的语言来介绍这一技术,加深大家对其的理解。
流水线技术指的是对CPU内部的各条指令的执行方式的一种形容,要了解它,就必须先了解指令及其执行过程。
一、计算机指令及其执行过程计算机指令,就是告诉CPU要做什么事的一组特定的二进制集合。
如果我们将CPU比喻成一个加工厂,那么,一条指令就好比一张订单,它引发了CPU__加工厂的一系列动作,最后分别得到了运算结果和产品。
那么,它们到底是怎样工作的呢?首先,要有一个接收订单的部门——CPU的取指令机构;其次,还要有完成订单的车间——CPU的执行指令机构。
在工厂中,一张订单上的产品被分成了许多道工序,而指令亦在CPU中转换成了许多条对应的微操作,依次完成它们,就执行完了整条指令。
二、执行指令的方式及流水线技术在低档的CPU中,指令的执行是串行的,简单地说,就是执行完了一条指令后,再执行下一条指令,好比我们上面提到的那个加工厂在创业之初,只有一间小车间及孤军奋战的老板,那么,当他接到一张订单之后,他必然忙于完成第1张订单,而没有能力去接第2张订单。
这样接订单→完成订单→接订单→……取指令→执行指令→取指令→……是一个串行的过程。
后来,老板发现接受订单不费太多时间,而且他还有了一个帮工,他们可以相互独立地工作,这样,老板就在完成上张订单产品的同时,接受下一张订单的订货。
这表现在CPU上就是取指令机构与执行指令机构的分开,这样从CPU整体来看,CPU在执行上条指令的同时,又在并行地取下条指令。
这在CPU技术上是一个质的飞跃,它使得CPU从串行工作变为并行工作,从而具有了流水线的雏型。