流水线处理器
- 格式:ppt
- 大小:226.50 KB
- 文档页数:21
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,按流⽔线可以完成的功能分为:单功能流⽔线和多功能流⽔线单功能流⽔线:指只能实现⼀种固定的专门功能的流⽔线;多功能流⽔线:指通过各段间的不同连接⽅式可以同时或不同时地实现多种能的流⽔线。
0 引言流水线技术一方面提升了处理器执行速率,另一方面单指令的执行和过程并没有缩减。
处理器在执行流水线作业时,还需要执行控制指令,从而增加系统的开销,所以单个指令平均执行时间会略有上升。
但就总体执行而言,CPU 执行指令的时间更短,吞吐量更大,这意味着程序整体运行得更快。
经典处理器采用五级流水线通路:IF(取指令) ID (指令译码,读寄存器堆) EX (指令执行或地址计算) MEM (数据内存访问)和WB (写回)。
指令执行时间方面:以五级流水线为例(如图1),假设每个时钟周期为t,总共需要执行n 条指令,那么所需时间为执行5*t (n-1)。
如果采用串行执行方式(如图2),执行时间为5*t*n。
这样当指令数较多时,理想状态下流水线方式的效率是串行的5倍。
CPU 流水线模式下,需要规避一些影响指令执行的问题:1)同一个时钟周期内,同一处理单元只能执行一个任务,如执行运算和内存访问不能由同一处理单元在同一时钟周期执行。
2)读取指令和操作数据需要使用各自独立的缓存,即哈弗结构,以避免二者同时访问存储单元。
3)译码与写回操作访问同一寄存器。
而流水线方式执行时,由于上述制约,以及时钟驱动偏差、软硬件延时等原因,有可能出现指令在该时钟周期无法顺利执行,延迟到下个时钟周期执行的情况,这就是流水线风险。
1 流水线冒险类型常见的冒险主要有结构冒险、数据冒险和控制冒险三种。
(1)结构冒险(structural hazard)是指由于资源争夺导致几条指令不能在同一时钟周期内执行,则称为处理器中含有结构性冒险。
如果流水线结构中有一个寄存器,访问内存和读取指令时都要访问同一个内存,流水线就会发生结构冒险。
(2)数据冒险:一个操作需要等待另一个操作完成后才能进行,这样流水线被迫停止,这种情况称为数据冒险。
Keywords: processor;branch prediction; processor pipeline design图2 串行执行方式图1 流水线执行方式2.2 数据冒险解决数据冒险的一个主流方法是转发(也叫旁路):即前一条指令得到的结果不回写至寄存器,而直接转发至下一条指令。
MIPS指令五级流水CPU设计剖析MIPS指令五级流水CPU设计是一种高性能的处理器设计架构,它将指令的执行过程拆分为五个阶段,并且在每个阶段中可以同时处理多条指令,实现了指令级并行处理。
在这种设计中,分别是取指(Instruction Fetch)、译码(Instruction Decode)、执行(Execute)、访存(Memory Access)和写回(Write Back)这五个阶段。
在MIPS指令五级流水CPU设计中,首先是取指(Instruction Fetch)阶段,这是整个处理器开始处理一条指令的阶段。
在这个阶段,处理器从指令存储器中读取即将执行的指令,并将其送入流水线中。
这个阶段还会包括对指令地址的计算和异常处理的操作。
当一条指令流入流水线后,处理器就会进行下一个阶段的操作。
接下来是译码(Instruction Decode)阶段,这个阶段主要是将取到的指令进行解码,确定指令的操作类型和需要操作的寄存器等信息。
在这个阶段,会根据指令的不同分支到不同的功能单元中处理。
同时还会识别指令之间的数据相关性,以便在后续阶段进行相应的控制。
第三个阶段是执行(Execute)阶段,在这个阶段,CPU执行指令的操作,进行算数运算或逻辑运算,或者进行跳转等控制操作。
在这个阶段,CPU还将从寄存器文件中读取数据,并进行相应的运算。
这个阶段涉及到的计算量比较大,所以需要比较多的时钟周期来完成。
接下来是访存(Memory Access)阶段,这个阶段主要是处理访问数据内存的操作,比如从数据内存中读取数据,或将结果写入数据内存等。
在这个阶段,处理器还会涉及到访存相关的操作,比如缓存机制的处理等。
这个阶段的操作通常是比较高速的存储器操作。
最后是写回(Write Back)阶段,这个阶段是处理器的最后一个阶段,处理器将执行结果写回到寄存器文件中,或进行其他相关的操作。
这个阶段可以认为是指令执行的结束阶段,对前面四个阶段产生的结果进行最终的处理。
处理器系列之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处理器都没有流水线。
超标量处理机和超流⽔线处理机——计算机系统结构在表5.2中,基准标量处理机是⼀台普通的单流⽔线处理机。
为了便于进⾏⽐较,把基准标量处理机的机器流⽔线周期和指令发射等待时间都假设为1个时钟周期,同时发射的指令条数为⼀条,它的指令级并⾏度ILP(Instruction Level Parallelism)假设为1。
另外三种指令级并⾏处理机,即并⾏度为m的超标量处理机,并⾏度为n的超流⽔线处理机,以及并⾏度为(m,n)的超标量超流⽔线处理机,它们的性能都相对于基准标量处理机进⾏⽐较。
单流⽔线处理机只有⼀条指令流⽔线,只有⼀个多功能的操作部件,每个时钟周期"取指令"和"分析"完成⼀条指令。
在许多流⽔线处理机中,指令流⽔线的流⽔段数k=4;它把⼀条指令的执⾏过程主要分解为"取指令"、"分析"、"执⾏"和"写结果"4个阶段。
指令所要执⾏的功能主要在多功能操作部件中,在"执⾏"这⼀流⽔段完成。
多数流⽔线处理机的多功能操作部件采⽤流⽔线结构。
有的简单指令,只要⼀个时钟周期就能够在"执⾏"流⽔段中完成,⽽⽐较复杂的指令往往需要多个时钟周期。
另外,还有条件转移等的影响;因此,⼀般流⽔线标量处理机每个时钟周期平均执⾏指令的条数⼩于1,即它的指令级并⾏度ILP<1。
超标量、超流⽔线和超标量超流⽔线三种处理机在⼀个时钟周期内可以执⾏完成多条指令,即它们的指令级并⾏度ILP都⼤于1。
超标量处理机基本结构超标量处理机的典型结构是有多个操作部件,⼀个或⼏个⽐较⼤的通⽤寄存器堆,⼀个或两个⾼速Cache。
先进的超标量处理机⼀般都包含有三个处理单元,⼀个是定点处理单元,通常称为中央处理单元(CPU),它由⼀个或多个整数处理部件组成;第⼆个是浮点处理单元(FPU),它由浮点加减法部件和浮点乘除法部件等组成;第三个是图形加速部件,也称为图形处理单元(GPU),这是现代处理机中不可缺少的⼀个部分。
分析流水线处理器的中断和异常响应机制——以ARM7系列3级流水线为例SC11011042-吴德云为增加处理器指令流的速度,ARM7系列使用3级流水线,允许多个操作同时处理,比逐条指令执行要快。
[1]图1ARM7流水线技术示意图PC 指向正被取指的指令,而非正在执行的指令。
ARM 流水线的一条指令只有在完全通过”执行”阶段才被处理。
这句话很重要,也就是说,当处理器开始取第四条指令时,第一条指令才完成执行。
我们如果不考虑流水线的设计,只看它的原理,其实是很简单的,他的复杂之处在于发生流水线冒险时,如何保证其工作得仍然很好。
流水线冒险一般分为控制冒险和数据冒险,而数据冒险一般可分为阻塞(即下一条指令依赖于前一条指令的结果)、分支和跳转、异常(异常和中断)。
由于ARM 是硬件flush 流水设计的,当发生冒险时,会暂停取指,然后清流水,(MIPS 解决冒险通常依赖于编译器,比如插入一条NOP 指令及重新排列指令序列)。
1.1ARM7的中断响应机制1.1.1中断延时从外部请求信号发出到取出对应的中断服务程序(ISR)的第一条指令,这期间的间隔时间。
1.1.2中断过程ARM 体系中通常在存储地址的低端固化了一个32字节的硬件中断向量表,用来指定各异常中断及其处理程序的对应关系。
当一个异常出现以后,ARM 微处理器会执行以下几步操作:1)保存处理器当前状态、中断屏蔽位以及各条件标志位;2)设置当前程序状态寄存器CPSR 中相应的位;3)将寄存器lr_mode 设置成返回地址;4)将程序计数器(PC)值设置成该异常中断的中断向量地址,从而跳转到相应的异常中断处从存储器中读取指令解码指令寄存器读(从寄存器Bank )移位及ALU 操作寄存器写(到寄存器Bank )PC PC PC -4PC-2PC -8PC -4ARM Thumb理程序处执行。
在接收到中断请求以后,ARM处理器内核会自动执行以上四步,程序计数器PC总是跳转到相应的固定地址。
实验报告课程名称:数字系统设计实验Ⅱ学院:信电系数字系统设计实验Ⅱ流水线MIPS微处理器设计ContentsPart 1实验目的 (3)Part 2实验任务 (3)Part 3实验原理 (4)Part 4实验步骤 (12)1.IF级设计 (12)2.ID级设计 (14)3.Decode单元设计 (16)4.ALU单元设计 (22)5.EX级设计 (27)6.顶层模块设计 (29)Part 5仿真和波形分析 (37)1.IF级仿真分析 (37)2.Decode单元仿真分析 (38)3.ALU仿真分析 (40)4.顶层仿真分析 (41)Part 6心得 (42)实验报告一、实验目的(1)了解提高CPU性能的方法。
(2)理解数据冒险、控制冒险的概念以及流水线冲突的解决方法。
(3)掌握流水线MIPS微处理器的工作原理。
(4)掌握流水线MIPS微处理器的测试方法。
二、实验任务设计一个32位流水线MIPS微处理器。
设计要求:(1)至少执行下列MIPS32指令。
①算数运算指令:ADD ADDU SUB SUBU ADDI ADDU②逻辑运算指令:AND OR NOR XOR ANDI ORI XORI SLT SLTI SLTU SLTIU③移位指令:SLL SLLV SRL SRLV SRA④条件分支指令:BEQ BNE BGEZ BGTZ BLEZ BLTZ⑤无条件跳转指令:J JR⑥数据传输指令:LW SW⑦空指令:NOP(2)在用5级流水线技术,对数据冒险实现转发或阻塞功能。
(3)在XUP Vietex-II Pro开发系统中实现MIPS微处理器,要求CPU的运行速度大于25MHz.三、实验原理1.流水线MIPS CPU总体设计与构建流水线是数字系统中一种提高系统稳定性和工作速度的方法,广泛应用在高档CPU的构建中。
根据MIPS处理器指令的特点,将整体的处理过程分为取指令(IF)、指令译码、执行、存储器访问和寄存器写回五级,对应多周期CPU的五个处理阶段。