VLIW技术与嵌入式系统

     这两篇关于VLIW的文章一篇清晰的介绍了VLIW的来龙去脉,一篇谈到了其在嵌入式领域的发展趋势,故收藏于此。
(前半部分转载自计世网 西安交通大学 刘刚 编译)     
     VLIW(Very Large Instruction Word)是在P7中采用的一项技术。VLIW描述了一种指令集思想。在这种指令集中,编译器把许多简单、独立的指令组合到一条指令字中。当这些指令字从Cache或内存中取出放到处理器中时,它们被容易地分解成几条简单的指令。这些简单的指令被分派到一些独立的执行单元去执行。也许VLIW的最好描述是:"基于软件或编译器的超标量技术"。
      在过去的十年里,RISC从计算机设计的实验室中走向了微处理器的市场。在这条路上,它给所有在RISC技术上投资的公司(如HP、IBM、Mips、Motoro-la、Sun以及在某种程度上可以说是所有的公司)带来了巨大的性能利益,并且使RISC发展成为当今微处理器设计的一个重要方向。现在,Intel和HP又在微处理器设计上掀起了新的浪潮。 来自硅谷的消息说,HP和Intel已经宣布了一项新的合作计划,这项计划的任务是设计一种新的微处理器芯片。在这种芯片上,既可以运行Intel X86的软件,也可以运行HP Precision体系结构的代码。这两家公司把这项计划所采用的技术称为"后RISC"。HP公司已经宣布了它对VLIW的兴趣和它已经有许多工程师在从事这方面的研究。从这一事实不难看出,"后RISC"实际上等价于VLIW。
     VLIW是RISC的一种逻辑延伸。像其他的超标量RISC微处理器一样,一个采用VLIW的机器可以同时执行几条简单的指令。当并行执行几条指令时,会产生指令之间的依赖性问题。VLIW机与一般RISC机的区别就在于,把处理这种指令间依赖性问题的灵活性放在哪儿。对于VLIW机来说,这种灵活性来自编译器。它负责把许多简单指令组合成一条长指令字指令。VLIW的编译器还负责决定哪些指令是与其他指令相关的。例如,编译器可以把R1+R2→R3和R4+R5→R6这两条指令组合到同一个指令字中,因为这两条指令没有用到相同的寄存器。但是它不能把R1+R2→R3和R3+R4→R5组合在一起,因为第二条指令必须等待第一条指令把结果放入R3后才能执行。
一、并行问题
    VLIW是用一种新的方法来解决一个旧的问题。采用流水线结构的超标量RISC和CISC芯片不得不处理许多与此相同的内部指令依赖问题。像VLIW编译器一样,流水线结构处理器的编译器试图对指令进行重新安排,把内部依赖的指令分散开,以使它们不会在流水线上一条接一条的出现。如果不这样,CPU在执行第二条指令之前就必须等待,直到第一条指令结束。这种延迟会严重影响流水线的利用率。这两种方法的不同在于是选择编译器还是芯片来承担指令的实时调度。通常的技术认为应由芯片来承担,而VLIW则认为应该把这项工作留给编译器来做。 这一争论在80年代中期就已经很普遍,那时计算机的设计者不得不通过决定下一步的举措来提高一般RISC机的速度。当时,用硬件解决指令依赖问题的多流水线机很容易制造。VLIW机需要构造许多逻辑单元来把额外的指令组合到一个加长指令字中。
      另一方面,多流水线的RISC机也可以通过把计算阶段分解为许多更小阶段的方法来构造。取指令、指令译码、计算执行和返回结果是流水线常用的四个阶段。理论上,只要指令间的相互依赖不会延迟指令的执行,这些简单的四阶段流水线机就可以执行比非流水线机多4倍的指令。流水线方法最终取得成功是因为它在当今的晶体管预算中是可行的。现在,可以看到许多RISC处理器的流水线有5到6个阶段,这就是RISC流水线机成功的一个有力证据。 当预算增加时,设计者就开始考虑把多个执行单元集成到一个芯片中(这就是超标量技术),但是把解决指令间依赖问题的工作留给了硬件。它们这样做,是因为硬件的一个最大优点是用于某一代处理器的任何代码仍然可以用于下一代处理器。而下一代处理器可能有更好的流水线结构或者是不同数目功能单元的组合。尽管这样的代码可以通过重新编译而获得更多的好处,但精确的FIFO(First In First Out,先到先执行)顺序可以很容易地保持跨代的兼容性。当人们在最新的机器上运行为原来的Macintosh机和PC机设计的软件时,这一问题就显得更为突出。
二、付出的代价
     用硬件进行指令调度和跨代间灵活性的代价是它的复杂性。译码逻辑必须具有很高的智能,以使它可以把由于在新的处理器上运行旧的代码或在超标量处理器上运行标量代码所产生的问题分离出来。实现这一层次的智能化对晶体管数目的要求是巨大的(在Power PC 620、AMD K5和Mips T5上应用的复杂指令跟踪机制就是一个典型的例子)。执行这项工作所花费的时间也给流水线增加了明显的负担。较为简单的译码阶段可以允许时钟频率的提高,因为这些阶段在超标量和超流水线处理器上通常具有最大的潜能。 VLIW许诺,通过降低硬件的复杂性,可以创造出简单的处理器,这种处理器可以获得比现在的处理器高得多的性能。另一方面,简单的硬件就可以比在现在的复杂RISC处理器大幅度地提高时钟频率。另外,可以容易地增加更多的功能单元以写出更好的并行代码。 如果VLIW机可以很好地运转,那么它们需要灵活的编译器来识别可以并行执行的指令。这些指令的识别在编译时决定,并且在被组合到一个超长指令字中时固定下来。与流水线的超标量处理器在译码阶段识别指令的依赖不同,编译器必须在编译时做出识别。
三、迫切需要的编译器技术
     现在的编译器技术是否已为VLIW做好准备了呢?毫无疑问,这方面的研究正在进行。例如,在80年代中期,IBM发起了一项开发供测试用的VLIW机的计划。处于研究阶段的编译器能够找出10条可并行执行的指令(在非科学计算的代码中)。编译器把循环代码展开,并且在遇到阻碍之前尽可能地沿着这条路走,以达到这一层次的并行性。 但更多的烦恼来自适应性问题。尽管简化的译码电路带来了速度上的巨大收益,但简化的译码器不具有适应动态运行状况的能力,就像在执行一条分支指令时遇到的问题一样。更为重要的是,因为VLIW译码器必须知道目标芯片的微处理器结构,它所产生的任何代码只能在该目标芯片上运行。在一个纯VLIW世界中,从一个处理器家族的一代转移到另一代,就意味着不得不对代码进行重新编译。 我们可以设计这样一个指令集:每个指令字所包括的指令数随芯片实现功能的不同而不同,而且在代码移植时不需要重新编译。这是可能的。我们所不知道的是,在设计这种处理器时的复杂性有多大。保持VLIW芯片跨代间的二进制兼容性,是否意味着拿我们知道的用硬件进行指令调度的技术来换取我们所不知道的技术呢? 有一件事情是显然的,计算机的发展史告诉我们,用户在二进制兼容性问题上做了很大的努力。Power Macs、基于Apple RISC芯片的Macintosh系统在销售上成功的部分原因,就是由于这些计算机可以运行现存的CISC程序。实际上,用户在实现二进制兼容性的同时,作为交换也付出了性能上的一些损失。任何计划实施VLIW的公司都将不得不着重考虑二进制兼容性的问题。
四、为什么采用VLIW
     我们有理由对以下事实提出疑问:为什么HP和Intel把他们未来CPU发展的赌注下在VLIW上呢?答案也许是因为VLIW处理器可以运行Intel X86的CISC指令,而且就像在AMD和Cyrix X86上一样快(甚至更快)。一种强制性的观点认为,CISC指令是由几条基本的RISC指令捆绑而成的,这就是VLIW的雏形。VLIW提供了一条把CISC指令分解成基本RISC指令的方法,而这些基本的RISC指令可在VLIW机的不同逻辑单元上直接执行。 怎样从CISC和RISC到VLIW,现在我们还不十分清楚。如果芯片在分解CISC指令时花费了大量资源,那么引入一个复杂的译码器将会是十分有效的。但这会使采用VLIW的各种理由变得无足轻重或没有必要。HP/Intel也许考虑了为X86的代码做一次性交叉编译。这种编译可以事先完成大多数代码的转换工作,但是这会给已经安装的软件带来许多令人头疼的问题。同样重要的是,在崭新的VLIW芯片世界里,没有任何征兆表明他们将怎样使他们的处理器与下一代处理器保持二进制兼容。最终,除了HP和Intel外,没有任何其他公司知道他们打算怎样在一个芯片中为三种指令集(X86、PA-RISC和VLIW)提供支持。 HP/Intel的第一代VLIW产品将于1997年或者1998年投入使用。在那之前,仍然存在着VLIW是否能够成为商业化处理器技术主流的问题。解答这个问题的重任落在了HP和Intel肩上。

      许多芯片设计师正在寻求一种可以替代超标量结构体系的设计方法。虽然采用管线和缓冲技术能使超标量处理器的性能得到一定程度的提升,但这种设计方法明显已经过时。而不断得到发展的超长指令字(VLIW)结构近来得到了设计师们前所未有的欢迎,本文介绍其发展趋势和面临的挑战。

       VLIW的特点是它能从应用程序中提取高度并行的指令数据,并把这些机器指令均匀地分配给芯片中的众多执行单元。实际上采用VLIW技术的芯片设计要比相应的超标量设计简单得多,采用VLIW后,花少量的力气能做更多的事。



      典型的VLIW芯片中具有上文提及的数量众多的执行单元,这些执行单元被布放在整齐的网格上,在每个时钟周期内能执行多条指令。不过下文我们将会看到,VLIW还需要智能化的编译软件配合以安排这些指令的执行。


关于VLIW技术可以追朔到80年代早期,当时许多微型计算机公司,其中最有名的要数Cydrome和Multiflow公司,联合起来企图设计出基于VLIW的大型系统。但该技术当时没有得到过充分认证,也没有广泛的市场基础,因此这次尝试以失败告终。


      虽然如此,上述公司的一些主要设计师一直没有停止过VLIW技术的研究工作,他们默默无闻地做着技术改进工作。同时他们还招聘了许多硬件和软件工程师专职从事VLIW的开发工作,由此也可看出软件与硬件在VLIW设计中具有同等的重要性。(VLIW开发一直是在惠普实验室的Josh Fisher和Robert Rau领导下进行的)。


      今天,VLIW芯片技术的研究成果已经展现在我们面前,无论是服务器领域,还是桌面领域或嵌入式领域都呈现了VLIW技术的勃勃生机。而对于嵌入式设计师来说,重要的是必须能区分大型VLIW和小型VLIW,因为目前的VLIW技术实现作为获得更佳性能的一种手段似乎仍遵循着发明者最初的想法-简单化。


      实际上,英特尔公司的EPIC IA-64结构最能体现大型VLIW的特点,它要比该公司生产的同类32位系列微处理器复杂得多。虽然这里不对它作详细讨论,但这是千真万确的。


      由于VLIW在嵌入式应用中有上佳的表现,市场上已经出现了好几种采用VLIW技术的最新处理器。首先进入市场的是具有VLIW概念的媒体处理器,比如飞利浦公司的TriMedia和Chromatic公司的Mpact媒体引擎。


        紧随其后,德州仪器公司(TI)也发布了基于VLIW技术的称为VelociTI的C6X系列数字信号处理器(图1),该处理器主要用于蜂窝电话及相关设备。为了使潜在用户确信芯片的C编译器能将并行指令数据发送给DSP,TI公司花费了大量的时间与精力。在C6X系列处理器发布一年后,TI的努力终于取得了巨大成效。在DSP领域,还有其它竞争厂家如Ananlog Devices和StarCore(后者是摩托罗拉公司与朗讯公司的一家合资公司)也先后加入了VLIW阵营。


而在做传统嵌入式系统设计的厂家中,也许要数Transmeta公司推出的Crusoe系列处理器最值得关注了。


VLIW技术的发展趋势


      展望未来,VLIW将会在嵌入式芯片设计中扮演重要角色。当然,也会面临来自系统级芯片、DSP和多内核芯片的挑战。值得注意的是,这并不是非它即你的唯一选择,因为一个采用VLIW技术的设计同样也能通过系统级芯片技术来完成。


      那么VLIW芯片究竟是如何实现的呢?结构(或理论)上的描述相对来说比较简单,但真正实现起来还有许多困难(就是说,在家中尝试做这样的工作是不现实的)。


      VLIW芯片的基本原理与超标量芯片截然相反,建立VLIW处理器时不需要花费太多的时间和硅片来决定做什么和什么时候做,所需的硬件只要能完成简单的计算就能在每个时钟周期执行大量的操作。


因此根据VLIW支持者的观点,VLIW芯片的布局结构会更加合理。比如说,片上的单元是可重复利用的(多重运算单元),单元相互间排列非常整齐,并且靠得很紧密。


      另外一个优点是,与超标量处理器相比VLIW处理器的硬件设计周期会缩短很多。然而VLIW技术的根本优点还在于这样的事实:它具有足够的智能来安排并行指令数据的执行。根据定义,术语VLIW是指一个宽-位-长的字,该字中必须预先封装入不同的命令或操作码,并且在下一个时钟周期由VLIW处理器并行执行所有的指令。也就是说,在做VLIW设计时设计师可以预先知道可以并行处理的任务,并直接指示硬件去并行执行。


这种指令的安排是由被称为跟踪调度(trace scheduling)的编译器完成的。这样的编译器综合了多种技术,通过大量可能分支预测出数量巨大的操作顺序,最终完成并行任务的执行调度。


      而超标量芯片的指令安排都是在运行期间进行的,因此VLIW具有无可比拟的优势。由于在一条VLIW指令的执行过程中,数据打包与调度都由编译器预先做好了,因此无需在运行期间做出最终的调度,而这样的调度需要在关键路径上耗费大量的硅片空间和时间。


      那些反对VLIW的人认为,能够有效调度这么多并行指令的任何编译器都将是十分复杂而且难以编写。单从这一点来看,确实很难说他们是对还是错,因为VLIW软件(称为编译器)的绝大部分要比它所控制的硬件落后好几年(DSP是例外)。只有VLIW编译软件达到了所要求的完善程度,VLIW才能生存下来并得到发展,否则它只是二十几年后的一场梦。


      不过,一些著名的计算机专家相信他们已经克服了最佳跟踪调度编译器设计中的大部分难题。另外,不断有编译器编写人员接受跟踪调度研究机构如Rice大学、Cornell大学和史丹弗大学的培训,并即将学有所成。事实上,这些人中有一些正在Fisher领导下的小组工作,另外一些在惠普实验室Palo Alto工作组的Rao领导下工作。IBM公司位于Yorktown Heights的研究中心也在悄悄地从事着VLIW的开发。任何想测试其代码的人都可以上网免费下载被称为Trimaran编译器的实验型编译器。


VLIW技术面临的挑战


      尽管VLIW具有很多优点,但它仍有一个致命的弱点使其尚不能走出实验室进入实用领域。这种弱点表现为在单一格式下不能提供与已有芯片兼容的目标代码。举例来说,一个带3个执行单元的VLIW处理器不能兼容于带5个执行单元的处理器,同样,这二种处理器都不能兼容带10个执行单元的第三种处理器。


      虽然解决这一兼容性问题的进程在过去几十年中进展非常缓慢,但目前已有所突破。事实上,Transmeda公司设计的Crusoe芯片之所以这么受青睐就是因为它采用了代码形态技术CMT(code morphing technology),从而使它能运行x86代码。


      目前,围绕着是否尽快将该技术投入实际使用以及如何使它成为主流技术的问题仍有不断的争论。支持者坚信VLIW会给那些一开始就具有大量内含并行指令的应用带来良好的收益,特别是当它用来处理像素和声音时将更加得心应手。实际上,多媒体应用是最有可能获益的重要领域。


      但是,VLIW还面临着若干技术性挑战,最重要的挑战莫过于如何解决预测出错的问题,这种问题常发生在处理器在程序分支前预先处理了某条指令,并希望该指令确实需要执行。然而,有时候会出现指令非法的错误,结果是程序停止运行,最坏情况下将导致程序出错。


      另外一个问题是超标量CPU拥有VLIW芯片所不能提供的一个重要性能,它也是超标量芯片的一个突出优点,即在运行过程中能随时改变指令执行条件。而VLIW处理器不能作这样的调整,除非它采用增加了某些超标量单元的混合结构才有这样的可能。


      再有像CPU死机的问题,可以通过预截取等手段达到最小化,不过有时候也失效。例如设计师正在截获一个包含有下一步所需内容地址的指针时,就可能被困住。所以说要准确预测出下一步所需内容的地址就困难重重。


      但对于图像处理来说情况又有所不同,此时VLIW芯片的表现是上乘的,这是因为图像数据通常都是按线性地址空间排列的,可以简化象块挎贝这类操作的处理。这也是DSP成为嵌入式VLIW芯片初露峰芒的重要原因。欲了解更多信息,请访问:www.trimaran.org;www.transmeta.com;www.ti.com。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值