本文介绍并比较了CPU架构超标量superscalar和超长指令自VLIW(Very long instruction word)。

乱序执行(In-order & out-of-order execution)

在各单元不按规定顺序执行完指令后还必须由相应电路再将运算结果重新按原来程序指定的指令顺序排列后才能返回程序。这种将各条指令不按顺序拆散后执行的运行方式就叫乱序执行(也有叫错序执行)技术。这样将根据个电路单元的状态和各指令能否提前执行的具体情况分析后,将能提前执行的指令立即发送给相应电路单元执行,在这期间不按规定顺序执行指令,然后由重新排列单元将各执行单元结果按指令顺序重新排列。采用乱序执行技术的目的是为了使CPU内部电路满负荷运转并相应提高了CPU的运行程序的速度。分枝技术:(branch)指令进行运算时需要等待结果,一般无条件分枝只需要按指令顺序执行,而条件分枝必须根据处理后的结果,再决定是否按原先顺序进行。

采用乱序执行技术的目的是为了使CPU内部电路满负荷运转并相应提高了CPU的运行程序的速度。

在按序执行中,一旦遇到指令依赖的情况,流水线就会停滞,如果采用乱序执行,就可以跳到下一个非依赖指令并发布它。这样,执行单元就可以总是处于工作状态,把时间浪费减到最少。乱序执行可以允许在发布指令3前发布指令4~8,而且这些指令的执行结果可以在指令3引出后立即引出(按序引出对X86 CPU来说是必需的),实际解码率又会增加25%。不过PⅡ和K6从乱序执行中得到的好处有限,因为如果CPU遇到指令依赖情况,它必须找到更多的非依赖指令进行发布。WinChip的性能表现看到一个带有大容量一级Cache的按序执行CPU能够同乱序执行CPU竞争,在时钟周期方面,Cache未命中的代价是非常高昂的。带有大容量一级Cache的按序执行CPU性能,比只有较小容量Cache乱序执行CPU的性能要强。在Cortex A9中,ARM引入了高端处理器常用的乱序执行(Out-of-Order)和猜测执行(Speculative Execution)机制.

超长指令字(VLIW:Very long instruction word)指的是一种被设计为可以利用指令级并行(ILP)优势的CPU体系结构,。一个按照顺序执行指令的非超标量处理器不能充分的利用处理器的资源,有可能导致低性能。

性能可以通过同时执行一系列指令中的不同子步骤来提高(这就是流水线),或者像超标量架构一样,甚至完全的并行执行多个处理器指令。进一步的提高可以通过指令的执行顺序与在程序代码中出现的顺序不同来提高,这就是乱序执行。

这3种技术都要付出代价:增加了硬件的复杂性。在并行执行任何操作之前,处理器必须确认这些指令间没有相互依赖。例如第一个指令的结果作为第二个指令的输入。很明显,这样的2条指令那个无法同时执行,并且第2条指令不能在先于第一条指令执行。乱序执行处理器增加了硬件资源用于调度指令和决定相互依赖。处理器包含多个功能单元,如不同的算术运算单元ALU,乘累加MAC单元、移位处理单元和浮点运算单元等。

另一方面,VLIW通过另外一种方法来实现并行。VLIW的并行指令执行是基于一个确定的调度。这个调度是程序在编译的时候就已经确定好的。由于决定乱序执行的工作是由编译器来完成的,处理器不再需要上面三种技术所需的调度硬件。结果VLIW处理器相比其他多数的超标量处理器提供了更加强大的处理能力但是更少的硬件复杂性(编译器的复杂性提高了)。

正如一些其他比较新颖的架构,这种并行执行的概念只有当编译器能生成有效的代码的时候才变得有用。事实上,一些有着特殊目的的指令可以用来帮助一些复杂的操作,例如快速傅立叶变换或者在地貌计算中出现的计算。如果编译器无法准确的找出相关的代码并且生成可以利用CPU能力的目标代码,这些特殊目的的指令将变得毫无用处。例如,程序员可能需要将他的算法用一种可以降低编译器工作难度的方式进行描述。

超标量(superscalar)CPU架构是指在一顆处理器内核中实行了指令级并行的一类并行运算。这种技术能够在相同的CPU主频下实现更高的CPU吞吐率(throughput)。处理器的内核中一般有多个执行单元(或称功能单元),如算术逻辑单元、位移单元、乘法器等等。未实现超标量体系结构时,CPU在每个时钟周期仅执行单条指令,因此仅有一个执行单元在工作,其它执行单元空闲。超标量体系结构的CPU在一个时钟周期可以同时分派(dispatching)多条指令在不同的执行单元中被执行,这就实现了指令级的并行。超标量体系结构可以视作MIMD(多指令多数据)。超标量体系结构的CPU一般也都实现了指令流水化。但是一般认为这二者是增强CPU性能的不同的技术。第一种采用了超标量技术的X86处理器是Pentium。

图1超标量(superscalar)架构指令执行流水化

比较总结

超标量用硬件来决定哪些指令可以并行执行,而VLIW采用软件来决定哪些指令并行,通过把指令调度的复杂度交给编译器来降低硬件复杂度。

指令级并行——超标量Superscalar与超长指令字VLIW架构相关推荐

  1. 计算机体系结构 第5章 指令级并行及其开发—硬件方法(3)

    文章目录 第5章 指令级并行及其开发-硬件方法 5.5 多指令流出技术 5.5.1 基础内容 5.5.1 基于静态调度的多流出技术 5.5.2 基于动态调度的多流出技术 5.5.3 超长指令字技术 5 ...

  2. 算力理解MIPS/DMIPS/MFLOPS/TOPS

    参考:各种芯片简述以及算力解释 不要太较真自动驾驶算力(TOPS) 文章目录 一.CPU计算性能指标 1. MIPS 2. DMIPS(干石MIPS) 3. FLOPS/MFLOPS/GFLOPS/T ...

  3. ISA指令集基础应用

    ISA指令集基础应用 ISA(Instruction Set Architecture,指令集体系结构)的缩写,指令集因系统性和复杂性,称为(Instruction Set Architecture, ...

  4. 基于DM642的X264开源代码实现的研究

    基于DM642的X264开源代码实现的研究 文章发表于:2008-09-08 11:24 作者:谭超 王库 傅颖 来源:微计算机信息 摘要:本文概述了H.264视频压缩编码标准的主要特性,简要介绍了当 ...

  5. RISC-V与DSA计算机架构

    RISC-V与DSA计算机架构 相信所有和计算机体系结构打过交道的朋友们都看过David Patterson与John Hennessy的煌煌巨作,<计算机体系架构:量化研究方法>.两位在 ...

  6. 计算机架构宗师Patterson与Hennessy 演讲实录,ISA指令集架构回顾——未来指令集架构方向,RISC-V与DSA

    相信所有和计算机体系结构打过交道的朋友们都看过David Patterson与John Hennessy的煌煌巨作,<计算机体系架构:量化研究方法>.两位在计算机架构领域鼎鼎大名的教授,一 ...

  7. 计算机体系结构:Chapter 5 :ILP(指令级并行)

    复习:流水线上的实际CPI(平均每条指令使用的周期数),等于理想流水线的CPI加上各类停顿引起的周期数的总和. C P I 流 水 线 = C P I 结 构 相 关 + C P I 控 制 相 关 ...

  8. 图灵奖得主长文报告:是什么开启了计算机架构的新黄金十年?

    文 | 杨晓凡 任然 包永刚 来自雷锋网(leiphone-sz)的报道 雷锋网按:近几年来,不论是普通消费者还是科研人员们都可以感受到两种浪潮,一种是CPU速度的提升越来越不显著了,我们说CPU制造 ...

  9. 计算机组成与架构综述学习报告

    计算机组成与架构综述学习报告 计算机系统的指令集ISA的演进过程是怎样的? 第一阶段关键词:集成电路.CISC.432.8086.IBM PC 集成电路在摩尔定律的预言下快速发展,使得CPU的控制单元 ...

  10. NVIDIA CUDA初级教程(P2-P3)CPU体系架构概述、并行程序设计概述

    文章目录 1.CPU体系架构概述 2.并行程序设计概述 1.CPU体系架构概述 现代CPU架构 CPU的定义 (1)执行指令.处理数据的器件:完成基本的逻辑和算术指令 (2)内存接口.外部设备接口 ( ...

最新文章

  1. 在家想远程公司电脑?Python +微信一键连接
  2. java condition详解_Java使用Condition控制线程通信的方法实例详解
  3. linux c之通过popen和pclose函数创建管道执行shell 运行命令使用总结
  4. python openpyxl模块追加数据_python openpyxl模块实现excel的读取,新表创建及原数据表追加新数据...
  5. 项响琴C语言书籍在线浏览,电子琴 c语言程序
  6. eclipse 导入项目_JAVA编程实战:坦克大战系列2-坦克如何在eclipse中编写
  7. 央行宣布降准0.5个百分点 释放长期资金约8000多亿元
  8. java 连接eureka_在同一应用程序中的配置服务器和eureka服务器:尝试连接到localhost:8761...
  9. 超五类和六类网线的区别—Vecloud
  10. 苹果将在WWDC首日举行“现场特别活动” 邀请函抽签决定
  11. 牛客习题总结38(7月13日)
  12. 关于 Anaconda 创建环境后没有名字的问题
  13. 华为平板电池损耗用什么软件测试,平板怎么看电池损耗
  14. 深入Flutter(四) Infinite scrolling -- 无限滚动
  15. 海思HI3516A千兆网卡换百兆网卡配置方法
  16. 概率机器人(Probability Robotics)笔记 Chapter 9: 占据栅格建图(Occupancy Grid Mapping)
  17. Element-UI checkbox 如何改造成只可单项选择
  18. 折叠::Vim进阶索引[2]
  19. HighlightingSystem(边缘发光插件)的简单使用(一)
  20. Newman(一)之Windows下Newman的安装与使用

热门文章

  1. excel表格坐标导入cad怎样操作?
  2. Sakai的安装使用
  3. oracle 12c rman备份与恢复,12C RMAN备份恢复
  4. Eclipse语言设置
  5. flash cs4 如何新增自定义控件
  6. 什么是智能门锁,智能门锁主要有哪些优点?
  7. C语言队列解决舞伴匹配问题
  8. 斐讯k2p 月光银 硬件版本A2-软件版本22.7.8.5 刷官改系统
  9. 天线罩结构的基础知识
  10. STAR:转录组数据比对工具简介