可配置处理器允许嵌入式开发人员来定制适合目标算法的处理器,使得处理器和算法能够更好地匹配。设计人员可以增加专用的、可变宽度的寄存器,专用的执行部件和宽数据总线以达到专用算法的最优处理器配置。这些特性让开发人员设计的处理器特性更加适合算法,而不是试图将十磅的算法硬塞到一个五磅的固定指令集体系结构的处理器或者DSP中。因此,应用程序开发人员利用可配置、可扩展处理器能够比固定指令集体系结构的微处理器和DSP更加快速地开发出系统来满足所有的系统性能,
通过手工调节汇编语言,可配置、可扩展处理器优化性能通过代码检查可以非常明显地显示出来。目标优化通常在最内层的软件循环,每秒可以执行几千或者几百万次。由于减少了这些循环的目标代码执行的指令次数,因此对系统性能产生的影响是巨大而正面的。下面三个例子表示出算法性能的改善,通过采用可配置处理器和可扩展处理器来达到人员预期的性能。下面所有的例子均基于Tensilica的Xtensa微处理器。
加速FFT运算
按频率抽取快速傅立叶变换FFT算法的核心是一种称为“蝶形”的运算。蝶形操作是FFT算法的最里层循环的运算。每个蝶形运算需要六次加法和四次乘法来计算基2蝶形结果的实部和虚部。采用TIE语言,设计团队可以用四个加法器和两个乘法器来扩展整个Xtensa处理器的流水线,以便使得一半FFT蝶形运算可以在一个流水线时钟周期内完成。
Xtensa处理器的可配置数据总线接口可以定义成128位宽,这样所有蝶形结的实部和虚部整数输入项就可以在一个时钟周期内加载到专用的FFT输入寄存器中。所有计算完成的输出部分也可以在一个时钟周期内存储到存储器中。由于每一个FFT蝶形运算的加载和存储操作都需要一个时钟周期,因此FFT计算最有效的办法是将每个FFT一半蝶形运算扩展为两个时钟周期,这样后续蝶形运算的加载操作和前面蝶形运算的存储操作就可以并发进行。这种方法节省了硬件开销,同时也匹配了数据运算资源和数据传输资源。
从实际情况来讲,我们很难在SOC中设计一个时钟频率为几百兆赫、且是单周期的、可综合的乘法器,尽管也许可以设计一个单时钟周期的硬宏模块IP乘法器,但是SOC设计人员宁愿会尽一切可能去使用可综合的IP单元部件,这是因为这些单元部件可以允许设计人员最大的自由度去选择半导体工艺和厂商。因此,对整个芯片设计来讲,最好是将乘法器扩展成两个时钟周期,这样可以保证乘法器不会引起SOC设计中关键通路的时序问题。附加的乘法器运算时间不会影响到例子中的吞度量,并且如果需要的话,通过增加的蝶形运算执行部件可以允许乘法器有更长的执行时间。
采用这种设计方法来计算FFT蝶形运算,需要在处理器中增加一个单指令流多数据流SIMD蝶形运算单元,该单元的硬件开销不会超过三万五千逻辑门,其中包括两个24x24的乘法器。下表为采用不同方法的性能改善情况,包括直接采用C代码实现方法、同传统DSP那样只增加一个乘法器部件来扩展C代码的实现方法。
用户1290746 2007-5-15 15:31
用户1292859 2007-5-14 18:54