新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 采用硬件加速发挥MicroBlaze处理能力

采用硬件加速发挥MicroBlaze处理能力

作者:Karsten Trott博士 赛灵思(德国慕尼黑) 现场应用工程师时间:2010-03-09来源:电子产品世界收藏

  不过客户仍不满意,客户要求更高的速度。在这种情况下,把算法从浮点运算变为固点运算并不适合。因此,我们开发了一款新型专用器(新型FSL IP)来加快对循环的处理。

本文引用地址:http://www.eepw.com.cn/article/106702.htm

  新的FSL IP使用CORE Generator模块浮点_v4_0来为4x ADD、2x MUL、1x GREATER、1x LESS和1x SQRT等操作创建9个示例。所有这些示例都可以实体化,并对相同的输入数据进行完全并行处理(图2)。

  FSL IP中实例的创建带有部分时延,但吞吐率仅为1。这要求为加速器内部的控制器硬件准备更多的芯片,不过这样可以在每个时钟周期内向协提供新数据。

  在取回结果前,只有在处理循环末端才需要增加周期。

  我们采用直连方式把连接到FSP IP时不需要FIFO。传输的所有数据都将缓存在IP内,并随即加以处理。

  从FSL IP返回到的连接是使用FSL总线创建的。由于我们必须发回一些结果,因而这更加容易实现,而且可以更加简单地在IP内完成。部分CoreGen模块有一些已被添加到执行时间中的时延,并被getfsl()调用完全覆盖。只需要等到所有结果都存入FSL总线FIFO。不过,只要数据率是1,即可完全实现所要求的吞吐率。

  FSL总线的额外延迟仅会占用为数不多的一些周期。使用FSL器的C代码如下:for (i=0;i<512;i++) {
putfsl(farr[i],fsl0_id);
}
// get the min,max values:
getfsl(min_f,fsl0_id);
getfsl(max_f,fsl0_id);
// get the sum and products:
getfsl(f_sum,fsl0_id);
getfsl(f_sum_prod,fsl0_id);
getfsl(f_sum_tprod,fsl0_id);
getfsl(f_sqrt,fsl0_id);

  算法的最终实施仅需大约4,630个周期,而且依然是全浮点实施。

  硬件需要本来应该用于实施器的更多芯片才能并行计算出所有结果。不过与扩展实施方案相比,我们最终提升了大约7.6倍。否则,如果使用标准来替换这个50MHz的,可能需要大约380MHz的CPU才能胜任(假设硬件自带有浮点平方根函数)。

  更为显著的是与使用PFU的最初方案,而非平方根函数的对比效果:总体提升了大约239倍。这种效果可能需要12GHz左右的浮点处理器才能实现。



评论


相关推荐

技术专区

关闭