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