《精编》计算机体系结构之流水线技术

3流水线技术 张伟计算机学院 大纲 1概念定义2流水线分类3MIPS五级流水线4性能分析5流水线相关6高级流水线技术 1概念定义 洗衣店的例子 A B C D均有一些衣物要清洗 甩干 折叠清洗要花30分钟甩干要用40分钟叠衣物也需要20分钟四人衣物一共要花4 30 40 20 360分钟 流水线的基本概念 四人衣物一共要花30 40 4 20 210分钟 流水线的基本概念 流水线技术 把一个重复的过程分解为若干个子过程 每个子程序可以与其他子过程同时进行描述流水线的工作 最常用的方法是时间 空间图 时空图 横坐标 表示时间 即各个任务在流水线中所经过的时间纵坐标 表示空间 即流水线的各个子过程 也称为级 段 流水线深度 Stage 流水线的时空图 流水线的特点 流水线实际上是把一个功能部件分解成多个独立的子功能部件 一个任务也就分成了几个子任务 每个子任务由一个子功能部件完成 并依靠多个子功能部件并行工作来缩短所有任务的执行时间流水线有助于提高整个程序 所有任务 的吞吐率 但并没有减少每个指令 任务 的执行时间流水线各个功能段所需时间应尽量相等 否则 时间长的功能段将成为流水线的 瓶颈 会造成流水线的 阻塞 Stall 流水线开始需要 通过时间 Fill 和最后需要 排空时间 Drain 流水线只有处理连续不断的任务才能发挥其效率 2流水线分类 流水线的分类 1 按流水线所完成的功能分类单功能流水线 只能完成一种固定功能的流水线多功能流水线 流水线的各段可以进行不同的连接 使流水线在不同的时间 或者在同一时间完成不同的功能例如 TIASC的多功能流水线 多功能流水线 流水线的分类 2 按流水线在同一时间内各段的连接方式分类静态流水线 在同一时间内 多功能流水线各段只能按同一种功能连接 只有当按这种方式工作的所有任务都流出流水线之后 才能重新连接以实现其他功能 在静态流水线中 只有当输入是一串相同的运算操作时 流水的效率才能得到发挥 动画演示动态流水线 在同一时间内 多功能流水线各段可以按不同方式连接 同时执行多种功能动画演示 动态流水线VS静态流水线优点 能提高流水线的效率缺点 会使流水线的控制变得复杂 静态和动态流水线时空图对比 流水线的分类 3 按照流水线的级别来分部件级流水线 运算操作流水线 把处理机的算术逻辑部件分段 使得各种数据类型的操作能够进行流水 处理机级流水线 指令流水线 把指令的解释执行过程按照流水方式进行处理 处理机间流水线 宏流水线 它是指由两个以上的处理机串行地对同一数据流进行处理 每个处理机完成一项任务 动画解析 流水线的分类 4 按流水线是否有反馈回路分类线性流水线 流水线的各段逐个串接 输入数据从流水线一端输入从另一端输出 每个段都只流过一次 非线性流水线 流水线的各段除有串接外 还有反馈回路 在一次流水过程中 有的段要被多次使用 举例 非线性流水线 流水线的分类 5 按照数据表示来分标量处理机 不具有向量指令和向量数据表示 仅对标量进行流水处理的处理机 例如 IBM360 91 Amdahl470V 6等向量处理机 具有向量指令和向量数据表示的处理机 例如 TIASC CRAY I等 流水线的分类 6 按照流动是否可以乱序来分顺序流动流水线 流水线输出端任务流出的顺序与输入端任务流入的顺序相同 异步流动流水线 乱序流水线 流水线输出端任务流出的顺序与输入端任务流入的顺序不同 3MIPS五级流水线 DLX DancingLinks DLX是一种简单的指令集 教学 简单芯片 在不流水的情况下 如何实现DLX 实现DLX指令的一种简单数据通路 MIPS的基本流水线 MIPS指令集结构用5个功能段实现 每个功能段用一个时钟周期取指令周期IF InstructionFetch 指令译码 读寄存器周期ID InstructionDecode 执行 地址计算周期EX cute 存储器访问 计算有效地址 寄存器 寄存器ALU操作寄存器 立即数ALU操作存储器访问周期MEM MemoryAccess 写回周期WB WriteBack MIPS的简单实现 一条MIPS指令最多需要以下5个时钟周期 取指令周期 IF 操作IR Mem PC NPC PC 4指令译码 读寄存器周期 ID 操作A Regs rs B Regs rt Imm IR16 16 IR16 31 指令的译码操作和读寄存器操作是并行进行的 原因 在MIPS指令格式中 操作码字段以及rs rt字段都是在固定的位置 这种技术称为固定字段译码技术 执行 有效地址计算周期 EX 不同指令所进行的操作不同 存储器访问指令操作ALUo A Imm寄存器 寄存器ALU指令操作ALUo AfuncB寄存器 立即值ALU指令操作ALUo AopImm分支指令操作ALUo NPC Imm 2 cond A 0 将有效地址计算周期和执行周期合并为一个时钟周期 这是因为MIPS指令集采用load store结构 没有任何指令需要同时进行数据有效地址的计算 转移目标地址的计算和对数据进行运算 存储器访问 分支完成周期 MEM 所有指令都要在该周期对PC进行更新 除了分支指令 其他指令都是做PC NPC在该周期内处理的MIPS指令仅仅有load store和分支三种指令 存储器访问指令操作LMD Mem ALUo 或者Mem ALUo B分支指令操作if cond PC ALUoelsePC NPC 写回周期 WB 不同的指令在写回周期完成的工作也不一样 寄存器 寄存器ALU指令操作Regs rd ALUo寄存器 立即数ALU指令操作Regs rt ALUoload指令操作Regs rt LMD 不采用单周期实现方案的主要原因对于大多数CPU来说 单周期实现效率很低 因为不同的指令所需完成的操作差别相当大 因而所需要的时钟周期时间也大不一样 单周期实现时 需要重复设置某些功能部件 而在多周期实现方案中 这些部件是可以共享的 每一个时钟周期完成的工作看作是流水线的一段 每个时钟周期启动一条新的指令 流水实现的数据通路设置了流水寄存器段与段之间设置流水寄存器流水寄存器的命名用其相邻的两个段的名称拼合而成 例如 ID段与EX段之间的流水寄存器用ID EX表示每个流水寄存器是由若干个寄存器构成的 3 5 2基本的MIPS流水线 流水实现的数据通路 寄存器的命名形式为 x y所包含的字段的命名形式为 x y s 其中 x 流水寄存器名称y 具体寄存器名称s 字段名称例如 ID EX IR 流水寄存器ID EX中的子寄存器IRIRID EX IR op 该寄存器的op字段 即操作码字段 流水寄存器的作用将各段的工作隔开 使得它们不会互相干扰 保存相应段的处理结果 例如 EX MEM ALUo 保存EX段ALU的运算结果MEM WB LMD 保存MEM段从数据存储器读出的数据向后传递后面将要用到的数据或者控制信息所有有用的数据和控制信息每个时钟周期会随着指令在流水线中的流动往后流动一段 增加了向后传递IR和从MEM WB IR回送到通用寄存器组的连接 将对PC的修改移到了IF段 以便PC能及时地加4 为取下一条指令做好准备 每一个流水段进行的操作IR rs IR6 10IR rt IR11 15IR rd IR16 20 流水段 流水线的每个流水段的操作 所有指令类型 ALU指令 load store指令 分支指令 IF ID EX IF ID IR Mem PC IF ID NPC PC if EX MEM IR op branch EX MEM cond EX MEM ALUo else PC 4 ID EX A Regs IF ID IR rs ID EX B Regs IF ID IR rt ID EX NPC IF ID NPC ID EX IR IF ID IR ID EX Imm IF ID IR16 16 IF ID IR16 31 EX MEM IR ID EX IR EX MEM ALUo ID EX AfuncID EX B或EX MEM ALUo ID EX AopID EX Imm EX MEM IR ID EX IR EX MEM ALUo ID EX A ID EX Imm EX MEM B ID EX B EX MEM IR ID EX IR EX MEM ALUo ID EX NPC ID EX Imm 2 EX MEM cond ID EX A 0 动画演示 动画演示 动画演示 动画演示 动画演示 流水段 任何指令类型 ALU指令 load store指令 分支指令 MEM WB MEM WB IR EX MEM IR MEM WB ALUo EX MEM ALUo MEM WB IR EX MEM IR MEM WB LMD Mem EX MEM ALUo 或Mem EX MEM ALUo EX MEM B Regs MEM WB IR rd MEM WB ALUo 或Regs MEM WB IR rt MEM WB ALUo Regs MEM WB IR rt MEM WB LMD 流水线的每个流水段的操作 动画演示 动画演示 动画演示 动画演示 4流水线性能分析 流水线性能分析 吞吐率 throughputrate 单位时间内流水线所完成的任务数或输出结果的数量加速比 speedupratio 完成一批任务 使用非流水线执行时间与使用流水线执行时间之比效率 efficiency 指流水线的设备利用率 从时空图看 就是n个任务占用的时空区和m个段总的时空区之比 1 吞吐率 单位时间内流水线所完成的任务数量 最大吞吐率 流水线在连续流动达到稳定状态后所得到的吞吐率各段相等 TPmax 1 t0各段不等 TPmax 1 max ti 最大吞吐率取决于流水线最慢的功能段所需的时间 实际吞吐率假设m段时间相等 t0的流水线完成n个任务t0 说明 例题分析 一个具有7段流水线的CPU 各段的执行时间分别为2ns 2 2ns 2 5ns 2 2ns 2 3ns 2 1ns 2 3ns 在该CPU上完成10个连续任务所需要的时间为 ns 该CPU的最高频率为 MHz 流水线优化思路 流水线各段时间不等带来性能损失举例消除瓶颈的方法 举例 细分瓶颈段重复设置瓶颈段 时 空图 2 加速比 完成一批任务 使用非流水线执行时间与使用流水线执行时间之比假设m段时间相等 t0的流水线完成n个任务 3 效率 由于流水线有通过时间和排空时间 所以流水线的各段并不是一直满负荷地工作 从时空图看 就是n个任务占用的时空区和m个段总的时空区之比假设m段时间相等 t0的流水线完成n个任务 举例 例题1 在静态流水线上计算 AiBi i 4 求 吞吐率 加速比 效率 解 1 确定适合于流水处理的计算过程 2 画时空图 3 计算性能吞吐率TP 7 20 t 加速比S 34 t 20 t 1 7效率E 4 4 3 6 8 20 0 21 进一步优化 可以看出 在求解此问题时 该流水线的效率不高 原因 动态流水线的时 空图举例 这样行不行 正确答案 瓶颈问题理想情况下 流水线在工作时 其中的任务是同步地每一个时钟周期往前流动一段 当流水线各段不均匀时 机器的时钟周期取决于瓶颈段的延迟时间 在设计流水线时 要尽可能使各段时间相等 流水线的额外开销流水寄存器延迟时钟偏移开销 3 3 5流水线设计中的若干问题 流水寄存器需要建立时间和传输延迟建立时间 在触发写操作的时钟信号到达之前 寄存器输入必须保持稳定的时间 传输延迟 时钟信号到达后到寄存器输出可用的时间 时钟偏移开销流水线中 时钟到达各流水寄存器的最大差值时间 时钟到达各流水寄存器的时间不是完全相同 有关流水线性能的若干问题 1 流水线并不能减少 而且一般是增加 单条指令的执行时间 但却能提高吞吐率 2 适当增加流水线的深度 段数 可以提高流水线的性能 3 流水线的深度受限于流水线的延迟和流水线的额外开销 4 相关问题 如