高性能处理器.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Control Hazard Solution (3): 软件循环展开减少分支指令 例:向量的每个元素加常数 For (j=1; j=1000; j++) x[j]=x[j]+s; 编译: 整数寄存器R1:循环计数器,初值为向量中最高端地址元素的地址 浮点寄存器F2:保存常数s 1 Loop:LD F0,0(R1) ;F0=vector element 2 ADD F4,F0,F2 ;add scalar in F2 3 SD 0(R1),F4 ;store result 4 SUBI R1,R1,8 ;decrement pointer 8B (DW) 5 BNEZ R1,Loop ;branch R1!=zero Scalar vs. Superscalar vs. VLIW single-threaded : (a) scalar (b)superscalar (c) VLIW Single issue vs. multiple issue processor von Neumann processor(Scalar processor) a single program counter really:IPC ≤1 ILP processor(Superscalar, VILW) a single program counter really:IPC ≤2 (when 4~8 issue) IMT vs. BMT multi-threaded : (a) cycle-by-cycle interleaving superscalar( Fine-Grained Multithreading ) (b) block interleaving superscalar( Course-Grained Multithreading ) (c) cycle-by-cycle interleaving VLIW( Fine-Grained Multithreading ) Global Branch Prediction Scheme: 设计思想 例:考虑下面的代码段: if (aa == 2) // branch b1 aa =0; if (bb == 2) // branch b2 bb =0; if (aa != bb) { // branch b3 …… } 这段代码由编译器转换为以下汇编程序(假定aa和bb分别分配为R1和R2): SUBI R3,R1,#2 BNEZ R3,L1 ;branch b1 (aa != 2) , taken ADD R1, R0, R0 ;aa == 0, not taken L1: SUBI R3,R2,#2 BNEZ R3,L2 ;branch b2 (bb != 2) , taken ADD R2, R0, R0 ;bb == 0, not taken L2:SUB R3,R1,R2 ;R3=aa-bb BEQZ R3,L3 ;branch b3 (aa = = bb) , taken 每次循环都有数据相关/控制相关引起的停顿 每次循环需要 9 clocks Rewrite code to minimize stalls? 静态调度的例子 每次循环需要 6 clocks Unroll loop (循环展开) 4 times code to make faster? 循环展开+寄存器重命名(Register Renaming)的例子 寄存器重命名的目的是避免引入新的WAW和WAR数据相关 循环展开+寄存器重命名(Register Renaming)的例子 Rewrite loop to minimize stalls? 静态调度减少停顿,减少分支的例子 What assumptions made when moved code? OK to move store past SUBI even though changes register OK to move loads before stores: get right data? When is it safe for compiler to do such changes? Global Branch Prediction Scheme: 设计思想 Global Branch Prediction Scheme: 设计思想 * (a) Time (process cycles) (a) T i m e ( p r o c e s s o r

文档评论(0)

iris + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档