我有一个疑问:我理解它利用了硬件并行性,并且它在硬件级别控制I / O,以便提供更快的响应时间,但这是FPGA的软件优势?哪些软件组件可以加速?提前谢谢。
答案 0 :(得分:2)
原型和并行性。由于FPGA价格便宜,因此在制造工业原型和并行系统时,它们都是很好的选择。 FPGA由连接线的逻辑元件阵列组成。元素包含小的查找表和触发器。 FPGA可扩展到数千个查找表。查找表和可编程电线足够灵活,可实现任何逻辑功能。准备好功能后,您可能需要使用ASIC。 Xilinx和Altera是主要品牌。我个人使用Altera DE2和DE2-115。
答案 1 :(得分:1)
您对FPGA的并行性和I / O控制是正确的。 FPGA只是巨大的可重新配置的逻辑电路,允许开发人员创建具有非常特定和专用功能的电路。与典型的微控制器相比,它们通常具有非常大量的I / O.因为它基本上是硅片中的一堆门,所以您在硬件描述语言(HDL)中编码的所有内容都将并行发生。这与您可以编写定制电路的事实相结合,即使处理器可能具有更高的时钟速度,也能够在典型处理器上加速FPGA的操作。为了更好地说明这一点,假设您有一个需要运行的算法,并且想要将FPGA与处理器进行比较。 FPGA的时钟频率为100Mhz,处理器的频率为3Ghz。这意味着处理器的运行速度比FPGA快30倍。我们假设您编写了一个能够在10个时钟周期内在FPGA上计算算法的电路。处理器上的等效算法可能需要执行数千条指令。这使FPGA在性能方面远远领先于处理器。并且,由于FPGA的并行特性,如果您正确编码并且通过FPGA的流程是连续的,每个时钟周期,FPGA都可以完成新结果的计算。这是因为FPGA中的每个阶段都会同时执行。因此可能需要10个时钟周期,但在每个时钟周期,可以同时计算10个不同结果的不同部分(这称为pipelinine:http://en.wikipedia.org/wiki/Pipeline_%28computing%29)。处理器不具备此功能,并且无法在不花费额外时间的情况下并行计算不同的阶段。处理器也受其指令集的性能水平限制,而在FPGA上,这可以通过良好的和专用电路设计来克服。处理器是一种非常通用的设计,可以运行任何指令组合,因此计算事物需要更长的时间,因为它具有通用性。 FPGA也没有将内容移入和移出缓存或RAM的问题。它们通常使用RAM,但是并行性质不会抑制或阻碍处理流程。值得注意的是,可以在FPGA上创建和实现处理器,因为您可以实现组成处理器的电路。
通常情况下,您会发现带有处理器或微控制器的FPGA,可加速数学密集型或数字信号处理(DSP)任务,或需要大量数据流的任务。例如,通过RF进行通信的无线调制解调器必须完成相当多的DSP才能从空中接收信号并对其进行解码。像手机中的接收器芯片。将有大量数据不断流入和流出设备。这对于FPGA来说是完美的,因为它可以并行处理如此大量的数据。然后,FPGA可以将解码后的数据传递给微控制器,以允许它执行诸如在漂亮的触摸屏显示器上显示文本消息的文本。请注意,手机中的芯片不是FPGA,而是ASIC(专用集成电路)。这是一堆电路,为了获得最大性能和最低成本而被剥离到最低限度。但是,很容易在FPGA上对ASIC进行原型设计,它们非常相似。 FPGA可能会浪费,因为它可能拥有大量不需要的资源。一般来说,如果您要生产TON,那么您只能从FPGA转移到ASIC,并且您知道它们可以完美地工作,并且只需要完成它们目前所做的工作。手机收发器芯片非常适合这种情况。他们卖掉了数以百万计的人,而且他们一生都只需做那件事。
在桌面处理器之类的东西上,通常会看到术语“硬件加速”和“#34;”。这通常意味着FPGA或ASIC在板上以加速某些操作。很多时候这意味着包含ASIC(可能在处理器的芯片上)来执行任何操作,例如浮点数学,加密,散列,信号处理,字符串处理等。这使处理器能够更有效地处理数据通过卸载已知对处理器来说困难且耗时的某些操作。芯片,ASIC或FPGA上的电路可以在处理器执行其他操作时并行执行计算,然后得到答案。因此,加速可能非常大,因为处理器不会因计算而陷入困境,并且在另一个电路执行操作时可以自由处理其他事情。
答案 2 :(得分:1)
有些人认为FPGA是处理器的替代品。这通常是根本错误的。 FPGA是可定制的逻辑。您可以在FPGA中实现处理器,然后在该处理器上运行常规软件。 FPGA的关键优势在于可以灵活地实现任何类型的逻辑。
想想处理器系统。它可能有一个串口,USB,以太网。如果您需要处理器系统不支持的其他更专业的接口,该怎么办?您需要更改硬件。可能会创建一个新的ASIC。
使用FPGA,您可以实现新的接口,而无需新的硬件或ASIC。
FPGA几乎从未用于替换处理器。 FPGA用于特定任务,例如实现通信接口,加速特定操作,切换高带宽通信流量等。您仍然在CPU上运行软件。