计算机体系结构在线读,计算机体系结构new.ppt

计算机体系结构new.ppt

第4章 指令级并行 Review: 基本流水线 流水线提高的是指令带宽(吞吐率),而不是单条指令的执行速度 相关限制了流水线性能的发挥 结构相关:需要更多的硬件资源 数据相关:需要定向,编译器调度 控制相关:尽早检测条件,计算目标地址,延迟转移,预测 增加流水线的级数会增加相关产生的可能性 异常,浮点运算使得流水线控制更加复杂 编译器可降低数据相关和控制相关的开销 Load 延迟槽 Branch 延迟槽 Branch预测 指令级并行的概念 计算机系统的并行性,从执行程序的角度,分为: 指令内部并行:指令内部的微操作 指令级并行:并行执行两条或多条指令 任务级或过程级并行:并行执行两个或多个过程或任务 作业或程序级并行:在多个作业或程序间并行 从处理数据的角度,并行性等级分为: 字串位串 字串位并 字并位串 全并行 提高并行的三种途径 时间重叠 资源重复 资源共享 4.1 先进流水线技术和指令级并行(Instruction Level Parallelism) ILP: 无关的指令重叠执行 流水线的平均CPI Pipeline CPI = Ideal Pipeline CPI + Struct Stalls + RAW Stalls + WAR Stalls + WAW Stalls + Control Stalls 本章研究 减少停顿(stalls)数的方法和技术 基本途径 软件方法(编译器优化) Gcc: 17%控制类指令 5 instructions + 1 branch 在基本块上,得到更多的并行性 挖掘循环级并行 硬件方法 动态调度方法 以DLX的浮点数操作为例 采用的基本技术 本章遵循的指令延时 基本块内的指令级并行 基本块的定义 直线型代码,无分支 单入口 整个程序是由分支语句连接基本块构成 循环级并行 for (i=1; i<=1000; i++) x(i) = x(i) + s; ? 计算x(i)时没有相关 ? 可以并行产生1000个数据 ?这里没有相关是指没有数据相关 ?问题是在生成代码时会有Branch指令-控制相关 ?预测比较容易,但我们必须有预测方案 向量处理机模型 ? load vectors x and y (up to some machine dependent max) ? then do result-vec = xvec + yvec in a single instruction 简单循环及其对应的汇编程序 for (i=1; i<=1000; i++) x(i) = x(i) + s; FP 循环中的相关 Loop:LDF0,0(R1);F0=vector element ADDDF4,F0,F2;add scalar from F2 SD0(R1),F4;store result SUBIR1,R1,8;decrement pointer 8B (DW) BNEZR1,Loop;branch R1!=zero NOP;delayed branch slot FP 循环中的相关 FP 循环中的Stalls 10 clocks: 是否可以通过调整代码顺序使stalls减到最小 FP 循环中的最少Stalls数 6 clocks: 通过循环展开4次是否可以提高性能? 循环展开4次(straightforward way) Rewrite loop to minimize stalls? Stalls数最小的循环展开 代码移动后 SD移动到SUBI后,注意偏移量的修改 Loads移动到SD前,注意偏移量的修改 循环展开示例小结 移动SD到SUBI和BNEZ后,需要调整 SD中的偏移 循环展开对循环间无关的程序是有效的降低stalls的手段(对循环级并行). 不同次的循环,使用不同的寄存器. 删除不必要的测试和分支后,需调整循环步长等控制循环的代码. 注意循环展开中的Load和Store,不同次循环的Load 和Store 是相互独立的。需要分析对存储器的引用,保证他们没有引用同一地址. 指令调度,必须保证程序运行的结果不变 从编译器角度看代码移动(1/5) 编译器分析程序的相关性依赖于给定的流水线 编译器进行指令调度来消除相关 (True) 数据相关(Data dependencies), 对于指令i和j,如果 Instruction j使用指令I产生的结果 , 或 Instruction j 与instruction k相关, 并且instruction k 与instruction I有数据相关. 如果相关, 不能并行执行 对于寄存器比较容易确定(fixed names

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值