可配置处理器技术入门课程系列(四):提高计算性能

2017-02-09 电子工程世界
分享到:

提高计算性能
 
随着传统微处理器总线瓶颈的解决,处理器工程师们将注意力集中到提高Xtensa 处理器的性能上,以便使得计算性能的提高可以和通过设置TIE端口和队列来提高输入/输出带宽相匹配。
 
自从1999年开始引入第一个可配置Xtensa处理器以来,片上系统SoC设计师已经具备能力来自己定义新指令,定义的新指令基于多操作(例如加法运算跟随一个移位或者一个位选择操作)技术,多操作指令可以作为一条新的指令。将多个操作合并在一起成为一条新的机器指令,该技术称为操作数融合。操作数融合技术可以有效提高微处理器的计算性能。另外,片上系统SoC设计者可以在Xtensa处理器版本中添加SIMD(单指令、多数据)指令。 单指令流多数据流SIMD指令可以同时对多个数据元素执行相同的操作,该技术也可以显著提高微处理器的计算性能。
 
然而,操作数融合和单指令流多数据流SIMD指令仍然只是微处理器的特征,每次只能发射一条指令。为更有效提高系统性能,设计人员决定在Xtensa处理器核中增加每个时钟周期发射多条指令的能力。
 
从历史的观点来看,处理器设计人员可以通过两种方法来实现微处理器具备每个时钟周期可以发射多条指令的能力。其一为超标量设计技术,该技术通过复制处理器整个执行部件来保证指令译码和发射部件在每个时钟周期可以发射多条指令。采用这种方法,处理器硬件必须在应用程序代码中找到软件固有的指令级并行性。 该技术的缺点是超标量处理器用于完全复制处理器执行部件的硬件开销大,而且程序代码中缺少指令级并行性。尽管4路超标量处理器设计时可以在每个时钟周期发射4个操作, 但是实际上从通用程序代码中抽取的平均指令级并行性通常低于两个操作。
 
第二种方法是采用称为超长指令字VLIW的技术来保证处理器每个时钟周期发射多个操作。该方法采用一个非常长的指令字来对多个操作进行编码,有时每个指令字可以达到几百位,多个操作可以同时发射到VLIW处理器的多个执行部件。VLIW处理器的编译器负责找出应用程序代码中的指令级并行性,VLIW处理器编译器通常具有比较高的能力来识别程序中的并行性,因为编译器扫描指令的窗口范围比超标量处理器要大,而超标量处理器是采用指令译码和发射部件来对指令代码的并行性进行调度。VLIW技术从处理器硬件开销的角度来说是非常有效的,然而VLIW处理器会造成指令代码的剧烈膨胀(故需要更大的存储器),因为每条VLIW指令字都非常长,而且VLIW编译器经常不能找到足够的目标程序代码中的指令级并行性来保证处理器中的每个执行部件都保持忙碌状态。因此,VLIW处理器由于带有与代码相关的特性以及会耗尽片上的指令存储器,故对深度嵌入式应用的处理器而言也不是一个理想的选择。
 
因此,我们的处理器设计人员开发了一种变种VLIW结构,称为可变长度指令扩展FLIX技术,用于Xtensa处理器。和VLIW指令一样,FLIX指令可以将多个独立的指令操作进行编码,变成一个FLIX指令字,该指令字宽度为32位或者64位,如图3所示。和所有设计人员定义的TIE指令一样,FLIX指令均是可选择的,并且它们可以和Xtensa处理器现有的16和24位指令自由地混合在一起。因此,采用FLIX指令就避免了代码膨胀问题,同时应用程序代码执行速度更快,而不是使得程序代码变得很长。
 
  第四讲
 
由于提高了输入/输出带宽和计算性能,因此基于Xtensa 处理器的片上系统SoC设计通常可以以比基于固定指令集体系结构ISA的处理器更低的时钟频率进行运行,这些低频的时钟频率可以保证系统有更低的SoC系统功耗。然而,Xtensa处理器还可以通过扩展的内部时钟门控技术来保证系统有更低的系统功耗,时钟门控技术是由TIE指令进行自定义扩展的。

×
官方微信