computer architecture ILP instruction-level parallelism 体系结构中跟指令级并行相关的技术

指令级并行的几种技术:

      1.pipeline 指令流水线,将一个指令切分为多个步骤,某个时候,cpu可以执行多个指令的不同步骤,以增大cpu指令执行的吞吐量。指令流水线最早在risc cpu上提出。不过目前的intel的cisc cpu除了指令集的区别外,内部大部分物理结构跟risc基本一样了。

         为增加流水线作业的速度和吞吐量,指令的乱序执行变得很重要。但是, 由于前后指令之间可能存在依赖关系(data dependences name dependences),为了一致性,必须尽量消除这些依赖关系。tomasulo algorithm算法是在硬件实现的,cpu在指令流水线的执行过程,通过该算法动态的调度指令流水线作业,保证一致性的同时以达到最大的乱序执行的目的。

       流跟指令流水线相关的技术还有循环展开(loop unrolling),一般是编译器实现的(可见编译器的后端技术随着体系结构的演进不断发展啊)。编译器在处理循环语句的时候,将一个迭代次数为2n的循环语句转换为迭代次数为n的循环语句。这样循环迭代的次数减少了,代码体积增加,但是分支语句减少了有利于指令流水线的并发。

       除了循环展开外,编译器仍然可以识别每次迭代间的前后依赖关系,如果识别到anti-dependence,在生成机器指令时仍然可以做些有利于流水线技术的优化。

      分支预测技术也是为了增加流水线并发作业的关键技术。分支预测既跟编译器相关,也跟硬件相关。有些分支预测可以在编译时做出,有些则是动态预测。kernel源代码里面的like和unlike就是跟这项技术相关。


   2. superscalar 超标量。其实就是桶一个cpu core中增加冗余的register、ALU(算数逻辑单元)、FPU(浮点运算单元)等,这样一个cpu core可以在 同一个时刻执行多个指令流水线,增加单核的指令集并发。superscalar和宏观体系结构中常说的scale up(纵向扩展)类似。


3. multithreading 作者用的是这个词。intel称之为hyper threading(超线程HT),其实就是同一个物理的cpu core上同时运行两个thread。主要包括两层含义,一种coarse grained粗粒度,一个线程因为cache miss而stall时,这时候cpu能调度另外一个thread去执行,避免cpu空等。另外一种是fine grained细粒度,一个cpu core能一个或者多个流水线中同时执行多个thread的指令。当然,superscalar能够很好的支持multithreading。intel的HT技术跟os的关系:如果os是HT-unware的,那么在os看来,一个屋里的os core就是多个逻辑的cpu core,在linux 查看/proc/cpuinfo是可以发现,HT架构下,同一个core ,多个sibling。不太清楚新版本内核的CFS调度器是否支持HT-aware。原来的O(1)调度器有人做了HT-aware补丁。




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值