流水线算法定义

基里洛夫

我读到FPGA适合并行或可以流水线化的算法根据定义,可以流水线化的算法是什么?

威廉·范·昂塞姆(Willem Van Onsem)

这意味着您可以将任务T分为多个步骤T 1T 2,...,T n,并且每个步骤或多或少都是独立的。现在,首先将数据注入到执行任务T 1的处理器P 1,经过一定时间步长后,P 1的结果将传输到执行任务T 2的P 2关键是,那时处理器P 1再次可用,因此将需要处理的下一个数据块加载到处理器P 1中您可以将其与流水线进行比较,在流水线中,每个工人(处理器)都在一个大型过程中发挥自己的作用。可以流水线化的进程是高效的,因为处理n个数据规模的时间为n,但仍然需要与仅处理一个数据块相同的硬件数量(显然,这样做会产生一些开销。整理一下)。

请注意,对于处理器,我并不是指物理处理器(例如80x86),而是指可以完成特定工作的设备。是否需要指令集,存储器,时钟周期等无关紧要。

并非所有算法都可以流水线化,因为有时数据之间存在依赖关系,这使得很难/不可能以大块方式处理数据:您需要一次使用所有数据,否则就无法处理(或至少效率不高)。

如@Paebbels所说(请参阅下面的评论),此类处理器或处理元件(PE)或处理单元(PU)可以在FPGA中实现。可以将PE网络映射到FPGA区域,特别是在需要进行很多位操作或需要2种数据类型的幂运算的情况下。如果需要浮点运算或快速DRAM访问,则FPGA的性能通常会很差。然后,GPU或标准CPU可能会更快。注意:FPGA安装在PCIe卡上,因此即使x100更快的算法也可能比CPU算法更慢,因为延迟或PCIe传输速率会吃掉所有好处。

尽管如此,关键是要在不大幅增加硬件成本的情况下实现加速。

比喻

在我的数字电子课程中,他们用自动洗衣店作了类比假设您要洗衣服。现在显然您不能立即将所有这些衣服放入洗衣机和烘干机中:您需要将其分成十个部分。

现在说您有一台既可以充当洗衣机又可以充当烘干机的机器。并且需要两个时间步骤来进行洗涤和干燥。然后,这将需要20个时间步来洗衣服,而您使用的是一台机器。

一个解决方案是租用十台洗衣机和十台烘干机。把所有的衣服在洗衣机,然后当它完成把所有的干燥机的衣服,你在做2个步骤。缺点是您需要租用十台洗衣机和干衣机。

使用流水线的解决方案是您租用一台洗衣机和一台烘干机。现在,您将第一批衣服放在洗衣机中了。完成后,您将洗好的衣服放入烘干机,但与此同时,您又将另一批衣服放入洗衣机。因此,洗衣机和烘干机(处理器)可以并行工作,但是要用不同的衣服(数据)吸盘工作。在每个时间步骤中,您都将衣物从烘干机中取出,将衣物从洗衣机中放入烘干机中,然后将新一批衣物放入洗衣机中。结果,您将有11个时间步长,但只需要租用一台洗衣机和一台烘干机。在成本和时间方面,流水线可以提高效率。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章