美文网首页
多发射和VLIW

多发射和VLIW

作者: 牛牛_735d | 来源:发表于2019-12-30 14:21 被阅读0次

程序的CPU执行时间=指令数 * CPI * Clock Cycle Time(时钟周期)

CPI: 倒数是IPC,即: 一个时钟周期内能够执行的指令数、代表了CPU的吞吐率

那么: CPU的吞吐率能达到多少呢 ?

最佳情况下、也只能达到1, 即使达到了指令层面的乱序执行、CPU一个周期、仍然只能取一条指令、说明指令优化做的多好、一个时钟周期也只能完成一条指令、而现在的CPU一般能达到2、为什么呢 ?

多发射与超标量: 同一时间执行的两条命令

在指令乱序执行的过程中、取值IF 和 指令译码ID 部分并不是并行的、那么 可不可以呢 ?
1. 将取指令和指令译码、也通过增加硬件的方式、一次从内存里取出多条指令、然后并行的分发给多个并行的指令译码器、进行译码、然后交给不同的FU(功能单元)去处理、这样一个时钟周期可完成的指令就大于1 、即: IPC大于1

这种CPU设计叫 多发射(Mulitple issue) 和 超标量(Superscalar)

在超标量的CPU里边、有很多条并行的流水线、而不是只有一条流水线、
`超标量`这个词是说, 本来我们在一个时钟周期里、只能执行一个标量Scalar运算、在多发射的情况下、可以超过这个限制、同时进行多次运算

Intel的失败之作: 安腾的超长指令设计

无论是乱序执行、还是超标量技术、在实际的硬件层面、都需要解决依赖冲突(冒险)问题、所以、实施会比较复杂
CPU需要在指令执行之前、判断指令是否有依赖关系、若有, 则不能分发到不同的执行阶段、
所以: 超标量CPU发射、又被称为动态多发射处理器
对于 依赖关系的检测、会使得CPU电路变的更加复杂

于是: 科学家有一个大胆的想法: 将分析和解决依赖关系的事情、放到软件里
`超长指令设计`: VLIW(Very Long Insturction Word)、想通过编译器来优化CPI
编译器在汇编完成之后、也可以知道前后数据的依赖、可以让编译器把没有依赖关系的代码位置进行交换、然后把多条连续的指令打成一个指令包、安腾的CPU就是把3条指令打成一个指令包, 如下图所示:
CPU在运行的时候、就不再是取一条指令、而是取一个指令包、然后译码解析整个指令包、解析出3条指令并行运行
2.流水线停顿、也是编译器来做了、除了停下整个处理器流水线、CPU不能在某个周期停顿一下、等待前边依赖的操作完成、编译器需要在适当的位置插入NOP操作、直接在编译出来的机器码里、把流水线停顿设计完成

image.png
为什么失败呢
1. 最重要的原因是'向前兼容'
   安腾处理器的指令集和X86不同、无法兼容、需要重新编译才可以
2. VLIW架构决定了、若安腾需要提升并行度、就需要增加一个指令包的指令数量、eg. 3个 -> 6个、
   而一旦这么做了、同样是VLIW架构、同样指令集的安腾CPU也需要重新编译、甚至需要重写编译器、才能在原来的CPU上继续运行程序
   
   所以、它既不向前兼容、又很难向后兼容、就比较容易失败

相关文章

  • 多发射和VLIW

    程序的CPU执行时间=指令数 * CPI * Clock Cycle Time(时钟周期) CPI: 倒数是IPC...

  • 软件设计师考点内容分析(三)

    1.VLIW VLIW(Very Long Instruction Word),超长指令字。一种非常长的指令组合,...

  • VLIW vs 超标量

    相同点 一个时钟周期可以同时执行多条指令 不同点 VLIW 依靠编译器和程序员自身来决定哪些指令可以并行执行 硬件...

  • 你的习惯养成处于什么状态?

    习惯养成的过程和火箭发射非常相似:火箭发射的时候,需要非常多的能量,用来摆脱地球引力,这个时候要用全力推进,你会发...

  • 《Unity入门案例-Tanks坦克大战》6-发射子弹

    6 发射子弹 本节完成发射子弹的功能,最终代码如下: 首先,发射子弹得确定发射的位置和方向,还有发射的初始速度.具...

  • 火箭军演练新型导弹“花式”发射 释放什么讯息?

    近日,火箭军某导弹旅在戈壁荒滩和山地丛林进行实弹发射训练,重点演练多区多向指挥控制、随机发射等高难度课目,而他们所...

  • 增雨火箭弹

    今天,我参观了增雨火箭架。它是由地面发射架、转盘和重力固定架组成的。 地面发射架是由发射筒和发射按...

  • iOS动画(3):粒子动画

    粒子动画是由CAEmitterLayer(发射器)和CAEmitterCell(粒子)结合实现的,需要发射器发射粒...

  • 发射 !发射!

    每一个人心中都有一个梦,那个梦,来自浩瀚的天空。每一只鹰身上都有一双铁翅,那双翅,来自苍穹。――题记 天空灰蒙蒙的...

  • 监听和发射事件

    监听事件 事件处理是在节点(cc.Node)中完成的。对于组件,可以通过访问节点 this.node 来注册和监听...

网友评论

      本文标题:多发射和VLIW

      本文链接:https://www.haomeiwen.com/subject/guqmoctx.html