gpt4 book ai didi

算法 FPGA 主导 CPU

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:16:15 27 4
gpt4 key购买 nike

在我生命的大部分时间里,我都在为 CPU 编程;尽管对于大多数算法来说,big-Oh 运行时间在 CPU/FPGA 上保持不变,但常数却大不相同(例如,大量 CPU 功率被浪费在数据洗牌上;而对于 FPGA,它通常受计算限制)。

我想了解更多这方面的信息——任何人都知道处理以下问题的好书/引用论文/教程:

FPGA 在哪些任务上优于 CPU(纯速度方面)FPGA 在哪些任务上支配 CPU(就每 jule 的工作而言)

注意:标记为社区维基

最佳答案

[没有链接,只是我的想法]

FPGA 本质上是硬件的解释器!该架构类似于专用 ASIC,但要获得快速开发,您需要付出大约 10 倍的频率和 [不知道,至少 10 倍?] 功率效率。

因此,对于专用 HW 可以显着优于 CPU 的任何任务,除以 FPGA 10/[?] 因素,您可能仍会胜出。此类任务的典型特征:

  • 细粒度并行性的大量机会。
    (一次进行 4 次操作不算;128 次算。)
  • 深度流水线的机会。
    这也是一种并行,但是很难应用到一个单个任务,因此如果您可以将许多单独的任务用于并行工作。
  • (大部分)固定数据流路径。
    一些多路复用器是可以的,但是大量的随机访问是不好的,因为你无法将它们并行化。但请参阅下文关于内存的内容。
  • 许多小内存的总带宽较高。
    FPGA 有数百个小的 (O(1KB)) 内部存储器(Xilinx 术语中的 BlockRAM),因此如果您可以对您进行分区内存占用分成许多独立的缓冲区,可以享受一个数据CPU 做梦也想不到的带宽。
  • 小的外部带宽(与内部工作相比)。理想的 FPGA 任务具有较小的输入和输出,但需要很多内部工作。这样您的 FPGA 就不会饿着等待输入/输出。 (CPU 已经饱受饥饿之苦,他们减轻了它具有非常复杂(和 )缓存,在 FPGA 中是无与伦比的。)将巨大的 I/O 带宽连接到FPGA(现在约有 1000 个引脚,一些带有高速 SERDES)-但这样做需要为此设计的定制板带宽;在大多数情况下,您的外部 I/O 将是瓶颈。
  • 足够简单用于硬件(又名良好的软件/硬件分区)。
    许多任务由 90% 的不规则胶合逻辑组成,只有 10%努力工作(DSP 意义上的“内核”)。如果你把所有这些到 FPGA 上,您将浪费宝贵的区域在不做任何事情的逻辑上大部分时间都在工作。理想情况下,你想要所有的垃圾在软件中处理并充分利用内核的硬件。(“软核”CPU 在 FPGA 中是一种流行的方式来打包大量的将不规则的逻辑慢到中等区域,如果你不能将它卸载到一个真正的 CPU。)
  • 怪异的位操作者优先。
    不能很好地映射到传统 CPU 指令集的东西,例如对打包位的未对齐访问、散列函数、编码和压缩......但是,不要高估这给出的因素你 - 你会遇到的大多数数据格式和算法已经旨在轻松处理 CPU 指令集,并且 CPU 保持为多媒体添加专门的指令。
    很多 float 特别是负号,因为两者CPU 和 GPU 在极其优化的专用硅片上处理它们。(所谓的“DSP”FPGA 也有很多专用的乘法/加法单元,但是 AFAIK 这些只做整数?)
  • 低延迟/实时要求者优先。
    在这样的需求下,硬件才能真正大放异彩。

编辑:这些条件中的几个 - 特别是。固定的数据流和许多单独的任务要处理——同时启用 bit slicing在 CPU 上,这在一定程度上平衡了这个领域。

关于算法 FPGA 主导 CPU,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2909035/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com