在我生命的大部分时间里,我编写了CPU;虽然对于大多数算法来说,CPU或FPGA上的大哦运行时间保持不变,但常数却大不相同(例如,大量的CPU功率浪费了数据周围的混乱;而对于FPGA,它通常是计算限制的)。
我想了解更多相关信息 - 任何人都知道有关以下问题的好书/参考文件/教程:
FPGA在CPU上的主导作用(纯速度方面) FPGA的主导任务是什么(按工作量计算)
注意:标记为社区维基
答案 0 :(得分:34)
[没有链接,只是我的思考]
FPGA本质上是硬件的解释器! 该架构就像专用ASIC一样,但为了获得快速发展,你需要支付频率约为10的因素和[不知道,至少10?]的功率因数。
因此,在专用硬件大规模优于CPU的任何任务中,除以FPGA 10 / [?]因素,您可能仍然会有胜利者。这些任务的典型特质:
编辑:其中一些条件 - 尤其是固定数据流和许多单独的任务要处理 - 也可以在CPU上启用bit slicing,这在某种程度上会影响该领域。
答案 1 :(得分:9)
最新一代的Xilinx部件只是弹出的吹制4.7TMACS和600MHz的通用逻辑。 (这些基本上是Virtex 6s在较小的工艺上制造。)
如果你能在定点操作中实现你的算法,主要是乘法,加法和减法,并利用宽并行性和流水线并行性,你可以在功率和处理方面吃掉大多数PC,就像这样的野兽
你可以对它们进行浮动,但会有性能损失。 DSP模块包含一个25x18位的MACC,总和为48位。如果你可以摆脱奇怪的格式并绕过通常发生的一些浮点归一化,你仍然可以从这些中获得卡车的性能。 (即使用18位输入作为strait固定点或使用17位mantissia浮动,而不是正常的24位。)双打浮动将占用大量资源,因此如果您需要,您可能会在PC上做得更好。
如果您的算法可以表示为加法和减法运算,那么这些算法中的通用逻辑可用于实现大量加法器。像Bresenham的line / circle / yadda / yadda / yadda算法这样的东西非常适合FPGA设计。
如果你需要分裂...... EH ......这很痛苦,而且可能会相对缓慢,除非你可以实现你的分数倍增。
如果你需要很多高精度的三角函数,那就不用了......再一次可以做到,但它不会很漂亮或者很快。 (就像它可以在6502上完成一样。)如果你只能在有限的范围内使用查找表,那么你的金色!
说到6502,6502演示编码器可以让其中一个东西唱歌。任何熟悉程序员过去常常在旧式学校机器上使用的旧数学技巧的人仍然适用。现代程序员告诉你的“让图书馆为你做的”所有技巧都是你需要知道的在这些上实现数学的东西。如果你能找到一本关于在基于68000的Atari或Amiga上做3d的书,那么他们将讨论如何以整数形式实现东西。
实际上,任何可以使用查找表实现的算法都非常适合FPGA。您不仅可以在整个部件中分配阻塞,而且逻辑单元本身可以配置为各种大小的LUTS和迷你公羊。
您可以免费查看固定位操作等内容!它只是通过路由处理。固定转移或位反转不需要任何费用。像可变量一样的动态位操作将花费最少量的逻辑,并且可以在奶牛回家之前完成!
最大的部分有3960个乘数!并且142,200个切片,每个切片可以是8位加法器。 (每片切片4个6Bit或每个切片8个5bit Luts,具体取决于配置。)
答案 2 :(得分:6)
选择一个粗糙的SW算法。我们公司以SW algo的硬件加速为生。
我们已经完成了正则表达式引擎的硬件实现,这些引擎将以高达10Gb /秒的速度并行执行1000个规则集。目标市场是路由器,其中反病毒和ips / ID可以在数据流传输时实时运行,而不会降低路由器的速度。
我们在HW中完成了高清视频编码。过去每秒需要几个小时的胶片处理时间才能将其转换为高清。现在我们几乎可以实时完成......转换1秒的胶片需要将近2秒的处理时间。 Netflix几乎专门用于我们的视频点播产品。
我们甚至在HW中做过简单的事情,如RSA,3DES和AES加密和解密。我们在HW中完成了简单的zip / unzip。目标市场是安全摄像机。政府拥有大量的摄像机,可以产生大量的实时数据。他们在通过网络发送之前将它实时拉下来,然后在另一端实时解压缩。
Heck,我工作的另一家公司曾经使用FPGA做雷达接收器。他们会直接在几个不同的天线上对数字化的敌方雷达数据进行采样,并从到达的时间三角洲,找出敌方发射机的方向和距离。哎呀,我们甚至可以检查FPGA中信号脉冲的非预期调制,以找出特定发射器的指纹,因此我们可以知道这个信号来自一个特定的俄罗斯SAM站点,该站点曾经驻扎在不同的边界,所以我们可以跟踪武器的移动和销售。
尝试用软件做!! : - )
答案 3 :(得分:1)
纯粹的速度: - 可以对等的 - DSP,例如视频过滤器 - 移动数据,例如DMA