Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 流水线算法定义_Algorithm_Parallel Processing_Fpga_Pipeline - Fatal编程技术网

Algorithm 流水线算法定义

Algorithm 流水线算法定义,algorithm,parallel-processing,fpga,pipeline,Algorithm,Parallel Processing,Fpga,Pipeline,我读到FPGA适合于并行或可流水线的算法。根据定义,什么是可以管道化的算法?这意味着您可以将任务T拆分为多个步骤T1、T2、…、Tn,并且每个步骤或多或少是独立的。现在,首先将数据注入在其上执行任务T1的处理器P1中,在时间步长之后,P1的结果被传输到P2,其中执行任务T2。关键是,此时处理器P1再次可用,因此您将需要处理的下一个数据块加载到处理器P1中。您可以将其与装配线进行比较,在装配线中,每个工人(处理器)都在一个大流程中完成自己的工作。一个可以流水线处理的进程是有效的,因为处理n个数据块

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

这意味着您可以将任务T拆分为多个步骤T1、T2、…、Tn,并且每个步骤或多或少是独立的。现在,首先将数据注入在其上执行任务T1的处理器P1中,在时间步长之后,P1的结果被传输到P2,其中执行任务T2。关键是,此时处理器P1再次可用,因此您将需要处理的下一个数据块加载到处理器P1中。您可以将其与装配线进行比较,在装配线中,每个工人(处理器)都在一个大流程中完成自己的工作。一个可以流水线处理的进程是有效的,因为处理n个数据块所需的时间与处理n个数据块的时间成正比,但仍然需要相同数量的硬件,就好像您只处理一个数据块一样(显然,为了组织这一点,会有一些开销)

请注意,对于处理器,我不是指物理处理器(如80x86),我只是指可以完成特定任务的设备。它是否需要指令集、内存、时钟周期等与此无关

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

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

然而,关键是在不大幅增加硬件成本的情况下实现加速

类比

在我的数字电子学课程课文中,他们将其与洗衣店进行了类比。说你想洗衣服。很明显,你不能一次把所有这些衣服都放进洗衣机和烘干机:你需要把它们分成十部分

现在假设你有一台既能当洗衣机又能当烘干机的机器。清洗和干燥需要两个时间步骤。那么,洗衣服需要20个时间步,而你只需要一台洗衣机

一个解决办法是租十台洗衣机和十台烘干机。把所有的衣服都放进洗衣机里,洗完后,把所有的衣服都放进干衣机里,然后分两步完成。缺点是你需要租十台洗衣机和烘干机


使用管道的解决方案是租用一台洗衣机和一台烘干机。现在你把第一批衣服放进洗衣机。洗完后,你把洗过的衣服放进烘干机,但与此同时,你把下一批衣服放进洗衣机。因此,洗衣机和烘干机(处理器)并行工作,但位于不同的衣物夹头(数据)。在每一个时间步骤中,您都会从烘干机中取出衣服,将洗衣机中的衣服放入烘干机,然后将新的一批衣服放入洗衣机。因此,你将有11个时间步,但只需要租用一台洗衣机和一台烘干机。在成本和时间方面,流水线是高效的。

。。。这种处理器或处理元件(PE)/单元(PU)可以在FPGA中实现。可以将PEs网络映射到FPGA区域,特别是当需要多比特操作或2种数据类型的非幂运算时。如果需要浮点运算或快速DRAM访问,FPGA的性能通常很差。那么GPU或标准CPU可能会更快。注意:FPGA安装在PCIe卡上,因此与CPU算法相比,即使是速度更快的x100算法也可能较慢,因为延迟或PCIe传输速率将消耗所有好处。@Paebels:没错,我可以发布一个(修改过的)吗你在这个回答中的评论版本?是的,你可以:)我只是想完成你的回答,然后回到这个问题。