第五章 流水线处理技术5 5.1 流水处理概述5 5.2 流水线工作方式5 5.3 流水线性能分析5. 5.4 超标量超流水计算机5 5.5 向量处理机器5 5.1 流水线处理概述一、CPU主要工作方式: Ø 顺序 Ø 重叠 Ø 流水 和铺地板的原理相似…5 5.1 流水线处理概述取指令分析执行每阶段时间为t,共n条指令顺序串行(sequence):设指令工作方式分成取指令、分析、执行指令若各阶段执行时间相等,则共需3 n t优点:控制简单;缺点:速度慢,机器各部件的利用率很低 重叠(Overlap):在两条相近指令的解释过程中,某些不同解释 阶段在时间上存在重叠部分包括一次重叠、先行控制技术和多操作部件并行 ü 将相邻两条指令的重叠时间再往前提前一个阶段; T=3×t+(n-1)×t=(n+2)×t ü 一次重叠:把取指令操作隐含在分析、执行指令过程中 ,则在任何时候只允许上条指令“执行”与下条指令“分析 ”相重叠 T=(n+1)×t 实际执行时间:若各段时间不等时,有ü 先行控制:分析部件和执行部件能分别连续不断地分析和执 行指令,预取和缓冲相结合的技术 ,通过对指令流和数据流的 先行控制,使指令分析器和执行部件能尽量连续并行工作。
执行时间:分析k 执行k分析k+1 执行k+1分析k+2 执行k+2ü 多操作部件并行:采用有多个功能部件的处理机,把ALU的 多种功能分散到几个具有专门功能的部件中,这些功能部件可 以并行工作,使指令流出速度大大提高 取指令分析执行分析k 执行k分析k+1 执行k+1分析k+2 执行k+2先行控制: 现代计算机指令系统是复杂的,“分析”和“执行”所需要的时间往往相差很大 ,从而造成功能部件的浪费,因此,需要采用先行控制技术分析k 执行k分析k+1 执行k+1分析k+2 执行k+2分析k 分析k+1执行k 执行k+1分析k +2 分析k+3执行k +2 执行k+3分析指令和执行指令时间不等时的一次重叠方式采用先行缓冲栈时指令执行过程的一种表示方法功能部件浪费先行控制: 一般采用先行缓冲栈的方式实现:一般设置四种缓冲栈:Ø 先行指令缓冲栈 当主存比较忙时,指令分析器能够从先行指令缓冲栈中得到所需指令。
Ø 先行操作栈 对于条件转移等使用Ø 先行读书栈 主存储器和运算器之间的缓冲存储器,用来平缓运算器和主存储器之间的工作 Ø 后行写数栈 当前没有完全写道主存的数据可以暂存到写数栈先行控制的处理机结构:主 存 储 器存 储 控 制 器先行指令缓冲栈先行读数栈后行写书栈指令分析器运算器通 用 寄 存 器先行控制中的缓冲深度设计:通过一种极端情况计算举例:假设先行指令缓冲栈已经完全充满,缓冲深度是D1 此时指令缓冲栈输出端,指令流出速度最快,而输入端,流 入最慢假设指令序列的最大长度是L1,平均分析一条指令的时间是t1 而此时更坏的是取指令很慢,平均取一条指令的时间是t2 假设先行控制栈充满到被取空的过程中指令分析条数是L1则此时有: L1t1 = (L1-D1)t2可以计算深度:1、流水的概念特点流水:把一个重复时序过程分成若干个子过程,每个子过程都可有效的在其专用功能段上和其它子过程同时执行的一种技术 5.2、流水工作方式取指访存执行译码写回IFIDEXMEMWBS1S2S3S4S5输入输出指令的流水处理流水线的基本结构中主要包括三大部分:锁存器、时钟、功 能站。
流水线中每个站都是由一些执行算术和逻辑功能的组合逻辑 线路组成的,它们可以互相独立地对流过的信息进行某种操作 ,相邻两站由高速锁存器(latch)隔开,信息在各站间的流动 靠同时送到各站的时钟信号来控制S1S2Sk输入输出流水线的基本结构.….…时钟.12345n-1 n.12345n-1 n.12345n-1 n.12345n-1 n1234△t0△ t0 △ t0△ t0 T0=m △ t0 n △ t0T(m-1) △ t0(n-1) △ t0填入 正常 排空 流水时空图空间时间2、流水线特点:1)流水一定重叠,比重叠更苛刻2)一条流水线通常有多个流水段组成3)每段有专用功能部件,各部件顺序连接,不断流4)流水线有建立时间、满载时间、排空时间,5)各段时间尽量短、一致;不一致时最慢子过程为瓶颈 6)给出指标如最大吞吐率,为满负载最佳指标建立时间:在流水线开始时有一段流水线填入时间,使得流 水线填满正常流动时间:流水线正常工作,各功能段源源不断满载工 作排空时间:在流水线第一条指令结束时,其他指令还需要一 段释放时间。
3、流水的分级、分类分级:(处理的级别分类) v 部件级:将复杂的算逻运算组成流水工作方式; v 指令级:把一条指令解释过程分成多个子过程 ; v 处理机级:每个处理机完成某一专门任务,各个处理机所 得到的结果需存放在与下一个处理机所共享的存储器中 其他分类: Ø 功能:单功能流水线(如CRAY-1)、多功能流水线 ( 如TI-ASC) Ø 工作方式:静态流水线、动态流水线 Ø 连接方式:线性、非线性 Ø 处理数据:标量流水、向量流水3、流水的分级、分类静态流水线:(功能负担软件多,便宜) 同一时间内各功能段只能按一种方式联接工作,只有当进入 的是一串相同运算指令时,流水线中各功能段才能高效满负 荷工作动态流水线:(功能负担硬件多,高效) 同一时间内各功能段可按不同运算或功能的联接方式工作, 对吞吐率和设备利用率都有好处,但控制复杂,成本明显增 加 3、流水的分级、分类线性流水线:非线性流水线:1234出入非线性流水线1234出入非线性流水线(1)ASC算术运算流水线(多功能)输入减阶对阶移位相加规格化相乘累加输出123456784、流水线举例输入减阶对阶移位相加规格化输出123458加 输入尾数相乘累加输出1678乘浮点加定点乘.1234n-1 n.1234n-1 n.1234n-1n.1234n-1 n12345867.1234.n-1 n.1234n-1 n时间空间 (段号)浮加一 二 三 四二 三一二一一定乘. .静态多功能流水线时-空图静态流水线:只有当进入的是一串相同运算的指令时,流水的 效能才得以发挥,才能使各个功能段并行地对多条指令的数据 进行流水处理。
.12345n-1 n.12345n-1 n.12345n-1 n.12345n-1 n12345867.12345n-1 n.12345n-1 n时间浮加定乘一二三 四 五 六一二三 四 五 六七一二三 四 五一二三 四动态多功能流水线时-空图区别:如果从软硬功能分配的观点上来看,静态流水线其实 是把功能负担较多地加到软件上,以简化硬件,动态流水线 则是把功能负担较多地加在硬件上,以提高流水的效能1)VAX8600的流水结构oa. I部件:预取指令,操作码译码,预取操作数,并存放运算结 果ob. E部件:执行指令oc. F部件;浮点加速器od. M部件:控制CPU和输入输出设备对主存的访问,有16k字节 的cache和把虚存地址转换成实存地址的地址转换表(快表)oe. 操作台:提供同操作员,引导设备和远程诊断的界面 指令流水线:一条指令的取指令、译码、取操作数和执 行等几个过程能同它前后的指令在时间上重叠,用这种 指令重叠的方法构成的流水线就是指令流水线,又叫指 令先行控制 2.VAX8600和长城386计算机的指令流水线操作台E部件F部件I部件M部件主存标准SBI 适配器选件SBI 适配器SBISBIC总线诊断总线写总线操作数总线虚拟地址存储器数 据总线适配器总线数组总线I/O子系统I/O子系统VAX8600的CPU结构图取指 令指令 译码形成操作 数地址取操 作数执行 指令存储 结果N-1N-2N-1N-2N-1N-1N-1N-1N+1N+1N+1N+1N+1N+1N+2N+2N+2周期操作VAX8600指令流水线的工作顺序实框:表示CPU在执行一 条典型的指令时的动作顺 序。
虚线:表示6个动作是各自 分开进行的,可以同其它 指令的动作并行进行 (2)长城386指令流水线 q 内部有六个部件 总线接口部件:同外部的接口 取指令、读写数据 I部件: 指令预取部件:取指令放在 16个字节指令预取队列 指令译码部件:形成指令微码,指令队列中可放3条指令 E部件: 执行部件:控制、数据部件、保护测试部件分段部件分页部件存储管理部件取指令1 取指令2 取指令3 取指令4 存结果1 取指令5 取指令6 指令译码器1 指令译码2 指令译码3 指令译码4 指令译码5执行1 执行2 执行3 执行4地址变换和MMU 地址变换和MMU80386的指令流水处理相关处理定义 :相近指令出现某种关联使不能同时执行Ø 资源相关 Ø 数据相关 Ø 控制相关另一种分类: Ø 局部相关 Ø 全局相关1. 资源相关资源相关是指当有多条指令进入流水线后在同一机器周期内 争用同一功能部件所发生的冲突 例1 :两条指令同时要用一个加法器ALULOAD/STOREIF取指取指ID译码译码 、读读寄存器堆译码译码 、读读寄存器堆EX执执行计计算访访存有效地址MEM-访访存(读读或写)WB结结果写回寄存器堆将读读出的数据写入寄 存器堆指 令流水段不同类型指令中各流水段进行的操作两条指令同时访存造成资源相关MEMEXIDIF指令 i+4WBMEMEXIDIF指令 i+3WBMEMEXIDIF指令 i+2WBMEMEXIDIF指令 i+1WBMEMEXIDIFLoad指 令87654321时钟 指令冲突取指 译码 执行 访存 写回例2 :EXIDIF指令 i+4MEM EXIDIF停顿指令 i+3WBMEMEXIDIF指令 i+2WBMEMEXIDIF指令 i+1WBMEMEXIDIFLoad 指令87654321 时 钟 指令9WBMEM使i+3指令停顿一拍进入流水线,以解决访存相关或重复设置一个存储器解决方法:例:有i 和j两条指令,i指令在前,j指令在后,则三种不同类 型的数据相关的含义为:ü RAW读写(先写后读) - 指令 j 试图在指令 i 写入寄存器前就 读出该寄存器内容,这样,指令j就会错误地读出该寄存器旧 的内容。
(改用相关) i: R1+R2->R3 j: R3*R4->R5 ü WAR写读(先读后写) - 指令 j 试图在指令 i读出寄存器之前就 写入该寄存器,这样,指令i就错误地读得该寄存器新的内容 用改相关)i: R3*R4->R5 j: R1+R2->R3 ü WAW写写(先写后写) - 指令j试图在指令i写寄存器之前就写 入该寄存器,这样,两次写的先后次序被颠倒,就会错误地 使由指令i写入的值成为该寄存器内容改改相关) i: R1*R2->R3 j: R4+R5->R32. 数据相关顺序 流动不按顺 序流动不按顺 序流动例1:如果流水线要执行以下的两条指令X1=X2+X3X4=X1-X5这是一个典型的先写后读(RAW)相关 例2:结果寄存器的冲突X6=X1+X2X6=X4*X5 这是个先写后写的写-写相关,两条指令都要用X6存放。