超长指令字是微处理器设计领域中的一种越来越流行的技术。

超长指令字处理器采用多个独立的功能部件,但它并不是将多条指令流出到各个功能单元,而是将多条指令的操作打包,形成一条非常长的指令,超长指令字由此得名。选择同时可流出的多条指令的任务由编译器完成,而在超标量机器中此功能是由硬件完成的,所以超长指令字机器可以节省大量硬件。[1]

中文名

超长指令字

外文名

Very Long Instruction Word简    称

VLIW

提出时间

1983年

超长指令字发展

编辑

语音

1980年代,迅速发展的RISC处理器广泛采用超标量和超流水线等指令级并行处理技术。由于相关性问题的存在,尽管这两种技术都采用了硬件逻辑电路来解决和处理相关性问题,但指令序列并不能够充分流水化,使处理器不能充分实现指令级并行处理,影响了计算机性能的提高。

1983年,美国Yale大学教授J Fisher提出了超长指令字(Very Long Instruction Word,VLIW)体系结构。VLIW处理器指令字较长,一般为128位,甚至上千位。VLIW处理器指令字被划分成多个独立控制字段,且具有固定格式。指令字中的每个控制字段可直接独立控制相应的功能部件。也就是说,一个控制字段就相当于其他处理器中的一条指令。[2]

超长指令字原理

编辑

语音

VLlW处理器的一个超长指令字包含多个操作字段,每个字段可与相应的功能部件对应。这些操作字段包括可并行执行的多个运算器控制指令字段、若干个存储器控制指令字段和其他操作控制字段。各运算部件和共享的大容量寄存器堆直接相连,以便提供运算所需要的操作数或存放运算结果,对数据的读/写操作也可以通过存储器指令字段对指定存储模块中的存储单元进行。运行时不需要用软件或硬件来检测其并行性,而直接由超长指令字来控制机器中多个相互独立的功能部件并行操作。虽然这种字段控制方式的思路来自于微程序控制器的水平微指令方式,但微指令只对一个运算部件进行控制,而VLIW是对多个功能部件并行控制。

实际上,VLIW的实现是由编译器将多条可以发送的标准指令捆绑在一条超长指令字中。基于多个可以同时执行的功能部件的支持,处理器在一个时钟周期内可以发射超长指令字中的多条指令,实现多条指令的并行执行。由于VLlW指令中的字段数是固定的,因此要提高VLIW处理器同时发射指令的条数,就需要重新设计VLlW指令格式,增加有关功能部件,并重新设计编译系统。这与同样具有多发射指令的超标量处理器不同。超标量处理器具有多条指令执行流水线,指令的并行性由处理模块硬件来检验,无须编译保证。增加处理模块的个数有可能提高超标量处理器同时发射指令的条数。[3]

超长指令字结构格式

编辑

语音

每个VLIW的指令可能包括两个整数操作、两个浮点操作、两个访存操作和一个分支操作。每条指令对应于每个功能单元有几个域,每个功能单元可能占用16到24位,从而指令长度达到112到168位。为了充分利用功能单元,要求代码序列必须有较大的并行度来有效填充操作槽。通过循环展开和使用全局的调度技术来对基本块进行调度可获得较高的并行度。除了通过循环展开消除分支转移的开销,全局调度策略可将指令跨转移点移动。

超长指令字也有助于开发程序中的指令级并行性。一个超长指令字包含了多条基本指令(primitive instructions),它们被发送到不同的VLIW入口中并行执行。但是这个能力不是在执行时由硬件负责,而是由编译器赋予的。编译器在生成的目标代码中把彼此独立的基本指令分到一个组里,以并行执行。由于超长指令字处理器不需要动态调度,也不需要进行重定向操作,所以它的控制逻辑相当简单。[4]

超长指令字特点

编辑

语音

VLIW方式具有下述主要特征:

(1)依靠编译组装超长指令。VLIW方式是在编译时发现和利用程序的并行运算可能性。编译从原程序中抽出可能的并行运算组装成一条超长指令,可以得到接近VLIW处理器中并行运算器数目的并行度。但要是程序并行度低,会造成VLlW指令中的运算器控制字段部分空闲,降低了指令字段的利用率。因此,VLIW方式的并行度依赖于编译的并行化能力及程序本身的并行化程度。

(2)硬件结构简单。由于指令的并行调度由编译完成,运行时不需要检验,因此VLIW方式简化了控制电路,使得它的结构简单,芯片制造成本低,能耗小。

(3)需要较大的指令带宽和较大的存储空间,这是超长指令字整体传输的要求。

(4)虽然经过编译处理,但由于程序在动态执行时不可避免的转移等操作,超长指令字指令仍可能在并行执行时出现相关,导致代码空间和执行速度上的双重损失。

(5)适合于细粒度的并行处理。VLlW方式可用指令字段直接控制运算部件在指令级进行细粒度并行处理,它有多条总线与运算器相连,指令字段可直接控制其数据链路,因此通信开销小,适合于面向低级运算的细粒度并行处理。

(6)指令系统的非兼容性。VLlW方式的指令格式与硬件密切相关,一旦定型后很难改变,使其指令系统不仅与传统的通用处理器结构完全不兼容,就是和同类型而并行性不同的VLlW处理器也不兼容。因此,尽管VLIW思想提供了简化处理器设计的途径,但难以成为处理器的主流,只能辅助超标量、超流水线等处理方式的应用。[3]

参考资料

1.

马礼主编.高等学校计算机专业教材 计算机组成原理与系统结构:人民邮电出版社,2004年07月

2.

刘瑞挺,张宁林等编著.计算机新导论:清华大学出版社,2013.09

3.

徐洁主编.计算机系统结构:中国铁道出版社,2012.01

4.

张民选,王永文编著.高性能微处理器:技术与结构:国防科技大学出版社,2004.3

超长指令字计算机,超长指令字相关推荐

  1. (计算机组成原理)第五章中央处理器-第五节2:指令流水线影响因素和分类及多发技术

    文章目录 一:影响指令流水线的因素 (1)结构相关(资源冲突) (2)数据相关(数据冲突) (3)控制相关(控制冲突) 二:流水线的分类 (1)根据流水线使用的级别不同分类 (2)根据流水线可以完成的 ...

  2. 软件设计师:计算机硬件基础

    软考:软件设计师(中级) 根据考试大纲,计算机硬件基础的考点主要有以下几个方面: 计算机组成:包括计算机的基本组成.Flynn分类.RISC和CISC计算机的特点.多处理机.总线和接口等. 数据运算: ...

  3. 计算机硬件技术基础(太原理工大学):第四章

    复习点 一.中央处理器 1.运算器 2.控制器 3.寄存器组 二.8086CPU 1.8086CPU总述 2.8086CPU的寄存器 a.通用寄存器 b.段寄存器 c.控制寄存器 3.8086CPU的 ...

  4. 超标量、超级流水线、超长指令字、向量机 SIMD

    1.超标量(Super Scalar)     将一条指令分成若干个周期处理以达到多条指令重叠处理,从而提高cpu部件利用 率的技术叫做标量流水技术.     超级标量是指cpu内一般能有多条流水线, ...

  5. 超标量、超级流水线、超长指令字、向量机

    记得本科学计算机系统结构时,在了解了流水线这一用于提高cpu处理速度的方法后, 书中还介绍了一些其他的结构,这些结构一般用于较高性能的计算机中 (呵呵,嵌入式系统中我还没看到,连multi issue ...

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

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

  7. 计算机系统结构 网易云课堂,计算机系统结构 (三) CPU及其结构分析

    本部分是计算机系统结构课程的核心课程,介绍计算机核心结构CPU的体系结构及提高系统性能的核心技术和方法.掌握在计算机CPU设计环节中影响性能的因素,以及提高CPU性能的理论和方法,通过定量分析技术对设 ...

  8. 【趋势】未来十年计算机体系结构的历史和趋势

    来源:机器之心 先分享我对这篇文章的总结,或者我得到的启发: 1.DSA (Domain-Specific Architectures,特定领域的体系结构) 将成为未来十年甚至更长时间,计算机体系结构 ...

  9. 计算机系统存数及取数方式,计算机系统结构总结2

    第二章 指令系统 指令系统是软件和硬件分界面的一个主要标志 数据类型: (1)数据表示:面向硬件.指令系统 (2)数据结构:面向软件.应用领域 数据表示指的是能由机器硬件直接识别和引用的数据类型 确定 ...

  10. 高等学校计算机规划教程,高等学校计算机应用规划教材:计算机组成原理简明教程...

    高等学校计算机应用规划教材:计算机组成原理简明教程 语音 编辑 锁定 讨论 上传视频 <高等学校计算机应用规划教材计算机组成原理简明教程>是2009年清华大学出版社出版的图书,作者是石磊. ...

最新文章

  1. 如何检查Go中是否存在文件?
  2. java设计模式之【策略模式】
  3. 4行代码AC——L1-024 后天(5分)
  4. 研究发现:一心多用会使认知水平下降
  5. stl swap函数_vector :: swap()函数以及C ++ STL中的示例
  6. __va_rounded_size
  7. Sublime Text3 Emmet用法
  8. Eclipse for python环境搭建及创建python项目
  9. quartz配置详解
  10. matlab系统数学模型建立,第五章 matlabsimulink下数学模型的建立
  11. 现在很火爆的外卖返利小程序源码免费分享一套源码
  12. 提问的力量四:提问的艺术-体验学习中提问的技巧
  13. 谈谈架构 -- architect
  14. 深度强化学习(机器之心)
  15. 为程序员更新了Joel测试
  16. java 转换pdf页面尺寸_Java PDF页面设置——页面大小、页边距、纸张方向、页面旋转...
  17. 还原一个真实的银行待遇
  18. EffectiveC++详解:条款05-了解C++默默编写并调用哪些函数
  19. Android官方实现的层次状态机Hierarchical State Machine源代码
  20. python找出字符串中的最长回文串子序列

热门文章

  1. Linux学习(一) —— 各个文件夹的作用
  2. circos 可视化手册-plots 篇
  3. Python货币转换
  4. 麦吉尔大学的计算机专业硕士,麦吉尔大学研究生专业设置情况
  5. python+request 哔哩哔哩视频下载
  6. 成都市金牛区2018年小学入学划片范围
  7. LINQ分页和排序,skip和Take 用法
  8. [Unity小游戏]打砖块(打方块)教程(超详细)
  9. photoshop抠图
  10. 象棋( Xiangqi, ACM/ICPC Fuzhou 2011, UVa1589)