用于利用多个计算机处理器进行卷积计算的系统.pdf

上传人:n****g 文档编号:1001609 上传时间:2018-03-24 格式:PDF 页数:40 大小:1.60MB
返回 下载 相关 举报
摘要
申请专利号:

CN200880011407.7

申请日:

2008.04.04

公开号:

CN101652770A

公开日:

2010.02.17

当前法律状态:

撤回

有效性:

无权

法律详情:

发明专利申请公布后的视为撤回IPC(主分类):G06F 17/10公开日:20100217|||公开

IPC分类号:

G06F17/10

主分类号:

G06F17/10

申请人:

VNS组合有限责任公司

发明人:

迈克尔·B·蒙特维利什斯凯

地址:

美国加利福尼亚州

优先权:

2007.4.6 US 60/910,626; 2007.9.12 US 11/854,215

专利代理机构:

北京德琦知识产权代理有限公司

代理人:

罗正云;王 琦

PDF下载: PDF下载
内容摘要

用于利用包括第一和最末处理器的处理器阵列来计算数据函数与滤波器函数的卷积的系统。以该滤波器函数的导数为基础的系数值和表示该数据函数的数据值相乘以产生当前中间值。除了在第一处理器中,将在先中间值加到当前中间值。除了在最末处理器中,数据和当前中间值发送到下一处理器。然后将最末处理器的在先中间值,如果有的话,加到其当前中间值以产生结果值,其中该结果值共同地表示该数据函数与该滤波器函数的卷积。

权利要求书

1: 一种用于计算数据函数与滤波器函数的卷积的系统,包括: 处理器阵列,包括第一处理器和最末处理器,其中所述处理器包括: 对系数值和数据值进行乘法以产生当前中间值的逻辑,所述系数值 基于所述滤波器函数的导数,所述数据值表示所述数据函数; 在除了所述第一处理器的处理器中,接收在先中间值并且将所述在 先中间值加到所述当前中间值的逻辑,所述在先中间值表示在另一处理 器中先前进行的计算;和 在除了所述最末处理器的处理器中,向另一处理器发送所述数据值 和所述当前中间值的逻辑;和 保持来自所述最末处理器的在先中间值,如果有的话,作为在先部分值 并且将所述在先部分值加到来自所述最末处理器的所述当前中间值以产生 结果值的逻辑;并且 其中,所述处理器阵列接收一连串所述数据值,并且产生一连串所述结 果值,所述结果值共同地表示所述数据函数与所述滤波器函数的卷积。
2: 根据权利要求1所述的系统,其中所述处理器并行地进行处理。
3: 根据权利要求1所述的系统,其中所述处理器异步地进行处理。
4: 根据权利要求1所述的系统,其中所述处理器异步地互相通信。
5: 根据权利要求1所述的系统,其中多个所述处理器占用单个半导体 电路小片。
6: 根据权利要求5所述的系统,其中整个所述处理器阵列占用所述半 导体电路小片。
7: 根据权利要求1所述的系统,其中所述处理器进一步均包括滤波器 存储元件来保持所述系数值。
8: 根据权利要求1所述的系统,进一步包括从所述系统外部接收所述 数据值到所述第一处理器的逻辑。
9: 根据权利要求1所述的系统,进一步包括将来自所述最末处理器的 所述结果值发送到所述系统外部的逻辑。
10: 根据前权利要求1所述的系统,其中所述保持在先中间值的逻辑位 于所述最末处理器中。
11: 一种用于对数据函数与滤波器函数的卷积中的结果值进行计算的方 法,该方法包括: (a)获得以所述滤波器函数的导数为基础的系数值的序列; (b)对于表示所述数据函数的数据值: (i)对于所述各系数值,在包括第一处理器和最末处理器的计算 机化的处理器的流水线中: (A)将所述系数值与所述数据值相乘以产生当前中间值; (B)除了在所述第一处理器中,将一在先中间值加到所述当 前中间值,所述在先中间值表示在另一处理器中先前进行的计算; 和 (C)除了在所述最末处理器中,将所述数据值和所述当前中 间值发送到后续的处理器;和 (ii)将在先部分值,如果有的话,加到来自所述最末处理器的所 述当前中间值以产生结果值,其中所述在先部分值是来自所述最末处 理器的在先中间值;和 (iii)将所述结果值输出到采用该方法的数字信号处理器。
12: 一种用于对数据函数与滤波器函数的卷积进行计算的方法,该方法 包括: (a)获得以该滤波器函数的导数为基础的系数值的序列; (b)获得表示该数据函数的数据值的序列; (c)对于所述各数据值: (i)对于所述各系数值,在包括第一处理器和最末处理器的计算机 化的处理器的流水线中: (A)将所述系数值与所述数据值相乘以产生当前中间值; (B)除了在所述第一处理器中,将一在先中间值加到所述当 前中间值,所述在先中间值表示在另一处理器中先前进行的计算; 并且 (C)除了在所述最末处理器中,将所述数据值和所述当前中 间值发送到后续的处理器;和 (ii)将在先部分值,如果有的话,加到来自所述最末处理器的所 述当前中间值以产生结果值,其中所述在先部分值是来自所述最末处 理器的先前中间值; (d)累加所述(c)的所述结果值作为卷积;并且 (e)将该卷积输出到采用该方法的数字信号处理器。
13: 根据权利要求12所述的方法,其中所述(c)(i)(A)在多个所 述处理器中针对多个所述数据值并发地进行。
14: 根据权利要求12所述的方法,其中所述(c)(i)(A)在多个所 述处理器中针对所述系数值序列并发地进行。
15: 一种用于计算卷积的改进系统,其中: 至少一个处理器将表示滤波器函数的系数值与表示数据函数的数据值 相乘; 所述改进包括: 所述系数值以该滤波器函数的导数为基础。
16: 根据权利要求15所述的系统,所述改进进一步包括多个所述处理 器,所述处理器并行地将多个所述系数值与多个所述数据值相乘。
17: 一种用于在计算机化的处理器中计算卷积的改进方法,其中: 系数值表示滤波器函数; 数据值表示数据函数;并且 将所述系数值与所述数据值相乘以产生共同地表示所述卷积的结果值; 所述改进包括: 采用以该滤波器函数的导数为基础的所述系数值。
18: 根据权利要求17所述的方法,所述改进进一步包括在多个所述处 理器中针对多个所述数据值并发地进行所述相乘。

说明书


用于利用多个计算机处理器进行卷积计算的系统

    发明人:迈克尔·B·蒙特维利什斯凯

    【技术领域】

    本发明总的来说涉及用于算术处理和计算的电子计算机,更具体地说,涉及以数字方式评估卷积积分的电子计算机。

    背景技术

    许多已有的和正在出现的系统可以使用现代信号处理器来分析,所述现代信号处理器被基于描述底层系统的数学进行了适当地编程。例如,今天这样的分析越来越有助于分析诸如电子线路、光学设备、机械机构和许多其他系统的线性时不变系统。

    在数学和许多广泛使用数学的领域中,例如在今天的科学和工程学的大多数分支中,术语“变换(transform)”用来指代一类等式分析(equationanalysis)技术。变换的概念追溯到数学的函数分析分支,该分支主要进行对函数空间的研究,在该空间中,特定的函数将另一函数作为其自变量。这样就可以以单个或整个等式组等式来使用变换,其中变换过程是从在一个域内表示的一个以上原始等式到在分离的域内表示的另外一个以上等式的一对一映射。

    进行变换的动机通常很直接。有许多以其原始表达式很难求解的等式,但是以一个以上其他表达式可以更容易地求解。这样,可以进行变换,找到解,然后进行反变换来将该解映射回原始的域。积分变换的一般形式被定义为:

    (1)g(a)=∫abf(t)K(α,t)dt]]>

    其中K(α,t)通常称为变换的“积分核”。

    拉普拉斯变换是由等式(1)所定义的一类变换的子集,并且通常尤其有用。给定对系统输入或输出的简单的数学或函数描述,拉普拉斯变换可以提供可能会简化系统行为分析的作为替换的函数描述。拉普拉斯变换的一般形式被定义为:

    (2)L{f(t)}=∫0∞e-stf(t)dt]]>

    其中积分限和积分核是从等式(1)重新定义为a=0,b被∞替换,并且K(α,t)=e-st。只有在s足够大并且满足特定条件时,才能对f(t)进行拉普拉斯变换,但是这些条件通常足够灵活以便允许f(t)采取实践中所发现的几乎所有函数的函数形式。

    通常发生的是,特定的函数,例如F(s)不是单个已知函数的变换,但是可以被表示为两个函数的积,这两个函数中的各函数分别为已知函数f(t)或g(t)的变换结果。即

    (3)F(s)=fΛ(s)gΛ(s),]]>

    其中g(t)必须满足同f(t)相同的条件。根据F(s)、f(t)和g(t)之间的这种联系,以下关系成立:

    (4)F(s)=L{∫0tf(t-τ)g(τ)dτ}]]>

    这通常称为“卷积定理”。

    可以观察到,卷积定理的结果是只对一个变量进行积分变换。因这样就可以应用只对一个变量进行积分的数值逼近技术。

    积分表达式与黎曼和表达式之间,以下等号成立:

    (5)∫0tf(t-τ)g(τ)dτ=limk→0Σk=0tf(ct-k)g(ck)Δτ]]>

    其中各ct-k和ck均是在第k子区间任意地选择出的。在实践中,等式(5)的等号右手侧是通过使用非常小的Δτ,并意识到存在若干阶的误差项来逼近的,所述误差项取决于所选择的数值技术和Δτ的值。这样:

    (6)limk→0Σk=0tf(ct-k)g(ck)Δτ=Σk=0tf(ct-k)g(ck)Δτ+O(Δτm)]]>

    其中m是准度的阶数,其可以由总和(以及可以期望的精度的位数)来表示,O是传统数学场合中的大写O符号。

    如同以上顺便暗示的,变换在重要的应用中存在已有的或潜在的使用,其可以受益于卷积的使用。例如,一个这样的应用是将卷积与数字信号处理(DSP)中进行的数字滤波一起使用。

    任何可以被表达为数学函数的滤波都可以通过使用数字滤波器来实现,这是现代DSP实践的绝对基础之一。例如,对从信号采样的数据值进行数字滤波允许移除信号地有害部分或者提取信号的有用部分。有限脉冲响应(FIR)和无限脉冲响应(IIR)是今天的DSP应用中所用到的数字滤波器两种主要类型,更常用的是FIR滤波器。

    通常认为使用FIR滤波器更有优势,因为该滤波器不需要内部反馈,所述内部反馈可以例如导致IIR滤波器对脉冲的无限响应。“有限”这个词本身也暗示了FIR滤波器的另一优势。来自这种滤波器的脉冲最终归于零,并且在所使用的迭代和计算中的误差不会传播。也就是说,误差项在整个计算过程中保持恒定。这是区别于IIR滤波器的优势,例如,在IIR滤波器中,针对各附加迭代输出和,误差可能增长。

    不幸的是,对于很多应用来说,数字滤波器的主要局限性在于其速度受到用于进行数值计算的一个以上处理器的速度的约束。例如,如果需要高滤波速度,这可能使得实施数字滤波器所需的硬件非常昂贵或者简直无法获得。对于几乎所用应用,并且对于大多数基于电子技术的系统也通常成立,所采用的速度越高,就越难于处理并发效应(coincidental effect),例如难以抑制电磁噪声和散热。

    因此,改进我们用来进行数值卷积计算的系统将允许我们以更高的速度、更加经济地进行当前的和正在出现的与信号处理有关的任务,并且降低底层系统和外围系统中的有害效应。

    【发明内容】

    相应地,本发明的目的在于提供利用多个计算机处理器进行卷积计算的系统。

    简言之,本发明的一个优选实施例是一种用于对数据函数与滤波器函数的卷积进行计算的系统。提供处理器阵列,其包括第一处理器和最末处理器,所述各处理器均包括用于对系数值和数据值进行乘法以产生当前中间值的逻辑,所述系数值基于所述滤波器函数的导数,所述数据值表示所述数据函数。在除了第一处理器的处理器中,提供用于接收在先中间值并且将所述在先中间值加到所述当前中间值的逻辑,所述在先中间值表示在另一所述处理器中先前进行的计算。在除了最末处理器的处理器中,提供向另一所述处理器发送所述数据值和所述当前中间值的逻辑。进一步提供保持来自所述最末处理器的在先中间值,如果有的话,作为在先部分值并且将所述在先部分值加到来自所述最末处理器的所述当前中间值以产生结果值的逻辑。这样,所述处理器阵列接收一连串所述数据值,并且产生一连串所述结果值,所述结果值共同地表示所述数据函数与所述滤波器函数的卷积。

    简言之,本发明的另一优选实施例是一种用于计算数据函数与滤波器函数的卷积结果值的方法。获得以该滤波器函数的导数为基础的系数值的序列。对于表示所述数据函数的数据值:在包括第一和最末所述处理器的计算机化处理器的流水线中使用所述系数值,以便将所述系数值之一与所述数据值相乘以产生当前中间值。除了在所述第一处理器中,将一在先中间值加到所述当前中间值,所述在先中间值表示在另一所述处理器中先前进行的计算。除了在所述最末处理器中,将所述数据值和所述当前中间值发送到后续的所述处理器中。将在先部分值,如果有的话,加到来自所述最末处理器的所述当前中间值以产生结果值,其中在先部分值是来自所述最末处理器的先前中间值。并且将所述结果值输出到采用该方法的数字信号处理器。

    简言之,本发明的又一优选实施例是一种用于计算数据函数与滤波器函数的卷积的方法。获得以该滤波器函数的导数为基础的系数值的序列,并获得表示该数据函数的数据值的序列。针对各所述数据值,对各所述系数值,在包括第一和最末所述处理器的计算机化的处理器的流水线中,将所述系数值与所述数据值相乘以产生当前中间值。除了在所述第一处理器中,将一在先中间值加到所述当前中间值,所述在先中间值表示在另一所述处理器中先前进行的计算。除了在所述最末处理器中,将所述数据值和所述当前中间值发送到后续处理器中。将在先部分值,如果有的话,加到来自最末处理器的当前中间值以产生结果值,其中所述在先部分值是来自所述最末处理器的先前中间值。累加所述结果值作为卷积,并且将所述卷积输出到采用该方法的数字信号处理器。

    简言之,本发明的再一优选实施例是一种用于计算卷积的改进系统,其中至少一个处理器将表示滤波器函数的系数值与表示数据函数的数据值相乘,所述改进包括采用以所述滤波器函数的导数为基础的系数值。

    简言之,本发明的又一优选实施例是一种用于在计算机化的处理器中计算卷积的改进方法,其中系数值表示滤波器函数,数据值表示数据函数,系数值与数据值相乘产生共同表示卷积的结果值。所述改进包括采用以所述滤波器函数的导数为基础的系数值。

    考虑到对当前已知的实现本发明的最优模式的描述和此处描述的以及附图所图示的优选实施例的工业适用性,本发明的这些和其他目标和优点将对于本领域技术人员变得清晰。

    【附图说明】

    本发明的目的和优势将从以下结合附图的详细描述中变得显而易见,在附图中:

    图1是描绘在计算机处理器阵列中采用的创造性卷积系统的示意图;

    图2(背景技术)是图1中的处理器之一的主要内部特征的示意图,特别是此处许多例子中所使用的SEAforth-24A处理器的核心,该处理器由加利福尼亚州库珀蒂诺的IntellaSys公司生产;

    图3a-c是图1的局部视图,描绘使用图1的处理器进行的向内(inbound)、向外(outbound)和内部通信,其中图3a示出数据如何在输入设备和第一处理器间,以及第一处理器和第二处理器间传递,图3b示出数据如何在第二到最末处理器和最末处理器间,以及在最末处理器和输出设备间传递,图3c示出数据如何在处于该阵列中心的正在被使用的两个示例性处理器间传递;

    图4a-f是示意性地描绘在诸如图1的处理器阵列中的卷积计算阶段的方框图;

    图5a-f是示意性地描绘基于新算法的卷积计算阶段的方框图,再次在诸如图1的处理器阵列中给出。

    图6a-c是描绘使用图4a-f和5a-f给出的方法进行的卷积的曲线图,其中图6a示出表示使用传统卷积系数的第一迹线和表示使用导数卷积系数的第二迹线,图6b示出表示被进行卷积的输入数据的第一迹线和表示使用导数信号数据的第二迹线,图6c示出表示所讨论的方法的结果的单条迹线。

    图7是适合于在直接滤波器中使用的代码清单;并且

    图8a-b是适合于在导数滤波器中使用的代码清单,其中图8a示出进行在概念上类似于图7的功能的代码,图8b示出有基于导数的算法使用的附加代码。

    在多幅附图中,使用相同的附图标记来代表相同或相似的元件或步骤。

    【具体实施方式】

    本发明的优选实施例是用于以多个计算机处理器进行卷积计算的系统。如此处的不同附图所示,特别是在图1的视图中,本发明的优选实施例由一般的附图标记10示出。

    简而言之,本发明是用于对滤波器函数与数据函数的卷积的解进行数值逼近的改进卷积系统10。使用数值技术进行卷积计算本身趋向于包括大量的乘法和加法操作。本发明以两种特别的方式允许显著地减少进行这些计算所需的整体时间。首先,本发明允许并行地而不是串行地完成大部分必需的计算。其次,本发明允许采用新的算法种类,其使用可以以更少的数据位来表达的滤波值和数据值,从而可以在考虑到处理器中的固有局限性的情况下更快地进行。

    图1是描绘计算机处理器14的阵列12所采用的创造性卷积系统10的示意图。为了集中在卷积系统10本身,支持该阵列12的外部元件被省略或者大概地表示。然而,本领域技术人员将认知,这些元件存在于实际的操作实施例中,并且这些元件通常在本质上可以是传统的。例如,图1省略了所有与向阵列12供电有关的细节,并且包括外部输入设备16、输入总线18、输出总线20和外部输出设备22的大概形式。为了简化介绍,一般的计算初始化和终结事项也不在最初讨论,并且程序指令和卷积系数值被认为已经载入处理器14。这里的输入设备16被认为仅仅关于提供要进行卷积的输入数据值,这里的输出设备22被认为仅仅关于接收已经进行过卷积的输出数据值。

    图1还在形式上示出开始于输入设备16并结束于输出设备22的流径(flow path)24。然而,应该认知,无疑也可能存在除此之外的其他布置。例如,还可能存在其他开始位置和结束位置,还可能存在除了所描绘的流径24以外的不同路径(甚至在作为替换的实施例中更加可能),并且作为替换也可以采用单个组合式I/O设备(未示出),例如,一个具有与阵列12通信的输入和输出信道的设备。

    对于卷积系统10,发明人当前优选在单个半导体电路小片(die)中拥有处理器14的阵列12的硬件平台,例如加利福尼亚州库珀蒂诺的IntellaSys公司的SEAforth-24A或SEAforth-40A。这里在大多数示例中使用SEAforth-24A(这些例子中的处理器14可以恰当地被称为“核”或“节点”)。为了进一步便于讨论,处理器14集合的成员分别称为处理器14a-x,如图所示,各处理器14a-x均具有允许与所存在的其他处理器14相互通信的总线28。

    虽然图1所示的各处理器14具有将其互连到其所有相邻处理器14的总线28,但是从流径24的路线可以看出,并非所有的总线28都必然要使用。实际上,此处示出的卷积系统10的实施例也可以作为替换地在串行通信的处理器的一维阵列中实现(我们称之为处理器的“流水线”)。

    图2(背景技术)是图1中处理器14之一,即SEAforth-24A处理器核的主要内部特征的示意图。各处理器14a-x通常是独立运行的计算机,包括算术逻辑单元(ALU 30)、若干只读存储器(ROM 32)、若干随机访问存储器(RAM 34)、指令解码逻辑段36、指令区38、数据堆栈40和返回堆栈42。还包括18位的“A”寄存器(A-寄存器44),9位的“B”寄存器(B-寄存器46)、9位的程序计数器寄存器(P-寄存器48)和18位的I/O控制和状态寄存器(IOCS-寄存器50)。进一步包括四个通信端口(统称为端口52,分别是端口52a-d)。除了边缘节点和角落节点的情况之外,各端口52与相应的总线28相连(具有18条数据线、一条读线、一条写线一一未分别示出)。

    SEAforth-24A器件中的节点处理以特定的合适而有效的方式操作通信和处理,都是异步的,使得该设备非常适用于与创造性的卷积系统10的实施例结合使用。然而,应该记住,使用该特定的设备或者甚至接近其能力的硬件不是必需的。同样,可能需要提防关于数据如何在阵列12中的处理器14之间实际传送的误解。例如,在考虑设备间的通信时,可能采用“推”和“拉”的比喻,但是应该留心通信实际上是设备之间的协同行动。

    图3a-c是图1的局部视图,描绘出使用处理器14的向内、向外和内部通信。图3a示出数据如何在输入设备16和处理器14a间,以及处理器14a和处理器14b间传递,图3b示出数据如何在处理器14w和处理器14x间,以及在处理器14x和输出设备22间传递,图3c示出数据如何在处理器14i和处理器14j间传递。

    图3a-c中的每个处理器14均被表示为具有普通的关键信息保持元件。SEAforth-24A器件的特征在于RAM、ROM、寄存器和端口均可以用于可编程地进行计算。这在这里特别地意味着将要讨论的普通信息保持元件可以是RAM、ROM、寄存器和端口中的任意一种。在处理器14a的情况下,信号数据元件60是重要的信息保持元件。在处理器14b-w的情况下,信号数据元件60、积分核滤波元件62和计算后元件64均为相应的重要信息保持元件。在处理器14x的情况下,结果元件66是重要的信息保持元件。

    现在继续进行描述图3a,其示出数据如何进入阵列12。在卷积系统10的该示例性实施例中,处理器14a专用于从输入设备16接收数据并且将其提供给处理器14b。同样,处理器14a可以接收并存储来自输入设备16的数据字,并且然后使用其信号数据元件60来向处理器14b提供这些数据字的实例,仅仅受限于其RAM 34的容量及其是否被合适地编程。

    SEAforth-24A器件中的通信和处理都是异步的,因此,一旦处理器14a使得数据可以被处理器14b获得,对当前任务的处理在概念上可以“流”过阵列12的其余部分。

    图3b示出如何从阵列12提取数据。处理器14x在这里专用于从处理器14w接收数据并将其提供给输出设备22。同样,处理器14x接收并存储来自处理器14w的数据字,然后使用其结果元件66向输出设备22提供数据字,再次,所有都只受限于其RAM 34的容量及其是否被合适地编程。

    图3c示出在卷积计算期间,信号数据元件60和计算后元件64的内容在处理器14b-w之间如何流动,以及该和可以以何种方式存储在各处理器14中作为累加然后一起被传递。如当前所详细描述的,这里的各处理器14b-w可以进行对整个计算做出贡献的操作。在处理器14b的情况下,该操作使用新的输入数据值(在其信号数据元件60中)和之前存储的卷积系数值(在其积分核滤波元件62中)。在本特定实例中,处理器14b不需要计算后元件64,因为还没有来自早先计算阶段的“部分”。然而,为了使程序简单,处理器14b可以具有被装载以零的计算后元件64。另外,针对在各节点处理多个卷积系数的应用(当前所讨论的),处理器14b可以具有并且使用计算后元件64。

    接下来,在处理器14c-w的情况下,各处理器通过使用预先存储的卷积系数值、从相应的前一处理器14沿着流径24而来的输入数据值和同样来自前一处理器14的中间值来进行对整个卷积计算做出贡献的操作。卷积系数值保持在相应的积分核滤波元件62中,输入数据暂时保持在相应的信号数据元件60中,中间值暂时保持在相应的计算后元件64中。

    组合起来,图2和图3a-c可以用来更一般地查看如何如上所述地使用SEAforth-24A器件中的处理器14a-x的端口和寄存器。例如,处理器14a使用其端口52d来将输入数据值向右传递到处理器14b,处理器14b可以将该数据值放入其数据堆栈40中。为了实际地完成以上过程,处理器14b将读取到达其端口52c的输入数据值并且将该输入数据值放入其数据堆栈40。然后处理器14b进行对卷积做出贡献的操作,使用现在在其数据堆栈40中的输入数据值和已经在其数据堆栈40中的卷积系数值,然后处理器14b将由此而来的中间数据值放在其端口52d。

    然后可以在处理器14b-w中沿着流径24发生类似的操作。虽然SEAforth-24A器件中的节点异步地运行,但是此处处理器14b-w中的操作都可以在概念上看作并行地发生。相应地,基本上与之前针对处理器14b所描述的同时地,类似的操作可以在处理器14i和14j中发生,例如,只有这些将会使用相应的卷积系数值,处理中间数据值,并且使用其沿着流径24的端口52。同样基本上同时地,处理器14w使得输出数据值可以在其端口52c由处理器14x获得,以便进行上述的处理。然而,再一次,应该注意RAM、ROM、寄存器和端口均可以在SEAforth-24A器件中被可编程地使用,前述的例子仅仅是处理器14可以被编程以达到相同结果的许多方式中的一种。

    图4a-f是描绘诸如图1的处理器14的阵列12中的卷积计算阶段的方框图。一般地,此处所述阶段需要:

    (1)并行地对数据采样值和卷积系数值进行相乘;

    (2)计算来自阶段(1)的乘积之和;

    (3)将数据采样值通过阵列12(即通过流水线)移位,接收下一数据采样值到第一节点并且丢弃来自最末节点的数据采样值;和

    (4)按需要重复(例如,如现在更加详细地描述的)。

    由于SEAforth-24A器件的特征在于RAM、ROM、寄存器和端口都可以用来可编程地进行计算,并且由于可以以其他具有更少、更多或者其他能力和结构的器件来使用创造性的卷积系统10,因此图4a-f的数据存储元件在此被一般地称为“存储箱”。为了简化以下的讨论,这里的例子使用相等数目(具体各为22个)的卷积系数值、采样数据值,并且处理器14用在实际的卷积计算中。在许多“现实世界”应用中,这些量可能是不常见的,因此现在讨论对替换事例的考虑,无论如何,使用其他量对于完全理解以下内容的本领域技术人员来说是简单明了的。

    图4a示出正式计算准备开始的阶段。卷积系数值(c0...cn;总共n+1个值,其中在图1和3a-c中的SEAforth-24A器件中,n=21)已经被载入存储箱(统称为c-存储箱72,具体是c-存储箱72(0..n)),零被载入其他存储箱(统称为d-存储箱74,具体是d-存储箱74(0..n)),其他存储箱(统称为r-存储箱76,具体是r-存储箱76(0.2n-1))具有初始不重要的内容。在图4a-f和以下的讨论中,索引从零开始,“c”代表“系数”,“d”代表“数据”,“a”是“累加后的”中间值,“r”代表“结果”。

    图4b示出下一阶段,其中第一数据采样值(d0)已经被接收到d-存储箱74(0)。计算如图所示继续进行,在流水线的长度上始终几乎同时和并行,第一结果值(r0)被存储到r-存储箱76(0)。

    图4c示出下一阶段,其中先前的数据采样值(d0)已经被移动到d-存储箱74(1)。计算再次如图所示继续进行,在流水线的长度上始终几乎同时和并行,第二结果值(r1)现在被存储到r-存储箱76(1)。

    在图4c和图4d之间是概念上非常类似于上述阶段的n-2个阶段。

    图4d示出的阶段中,最后的数据采样值(dn)已经被接收到d-存储箱74(0)。再次,计算如图所示继续进行,结果值(rn)现在存储到r-存储箱76(n)。

    图4e示出下一阶段。现在已经部分地处理了所有n+1个数据采样值(d0...dn),最后的数据采样值(dn)已经移动到d-存储箱74(1),并且零值被放入d-存储箱74(0)。计算继续进行并且结果值(rn+1)被存储到r-存储箱76(n+1)。

    在图4e和图4f之间是概念上非常类似于上述阶段的另外n-2个阶段。

    图4f示出最终完成对最后的采样值(dn)的处理的阶段。在这里的计算之后,第(n+n-1)个结果值存储在r-存储箱76(2n-1)中,并且处理完成。r-存储箱76(0..2n-1)现在保持此处基于n+1个采样数据值(d0...dn)和n+1个卷积系数值(c0...cn)进行的卷积计算的完整结果。

    图5a-f是示意性地描绘基于新算法的卷积计算的方框图,再次在诸如图1所示的处理器14的阵列12中给出。简而言之,新算法采用滤波器函数的导数。为了予以强调,此处使用的卷积系数被不同地表示为c’0...c’m(其中在图1和3a-c中的SEAforth-24A器件中m=21;注意,目前讨论在此处使用不同的附图标记来进行索引时的使用原因)。

    图5a示出正式计算准备开始的阶段。导数卷积系数值(c’0...c’m)已经被载入存储箱(统称为c’-存储箱82,具体是c’-存储箱82(0..m)),零被载入其他存储箱(统称为d-存储箱84,具体是d-存储箱84(0..m)),单个的p-存储箱86和一组结果存储箱(统称为r-存储箱88,具体是r-存储箱88(0..2m-1))具有初始不重要的内容。一定程度上类似于先前的例子,索引从零开始,“c’”代表“系数”的导数,“d”再次代表“数据”,“a”再次是“累加后的”中间值,p代表或“部分”(如同对结果有“部分”的贡献),“r”代表“结果”。

    图5b示出下一阶段,其中第一数据采样值(d0)已经被接收到d-存储箱84(0)。计算如图所示继续进行,在流水线的长度上始终几乎同时和并行,第一部分值(p0)被提供给p-存储箱86。然而,不同于使用图4a-f中所示的传统卷积算法的变形,“先前”部分值在这里被加到当前的部分值,然后被存储到r-存储箱88(0)中。然而,由于在本早期阶段没有“先前”部分值,因此零被加入第一部分值(p0)以计算第一结果值(r0),该第一结果值被存储到r-存储箱88(0)中。

    图5c示出下一阶段,其中先前的数据采样值(d0)已经被移动到d-存储箱84(1),第二数据采样值(d1)被接收到d-存储箱84(0)。计算再次如图所示继续进行,在流水线的长度上始终几乎同时和并行,第二部分值(p1)现在被提供给p-存储箱86。先前部分值(p0)被加到当前部分值(p1),这被当作第二结果值(r1)存储到r-存储箱88(1)中。

    在图5c和图5d之间是概念上非常类似于上述的阶段的m-2个阶段。

    图5d示出的阶段中,最后的数据采样值(dm)已经被接收到d-存储箱84(0)。再次,计算如图所示继续进行,第m个结果值(rm)现在存储到r-存储箱88(m)中。

    图5e示出下一阶段。现在已经部分地处理了所有m+1个数据采样值(d0...dm),最后的数据采样值(dm)已经移动到d-存储箱84(1),并且零值被放入d-存储箱84(0)。计算继续进行并且结果值(rm+1)被存储到r-存储箱88(m+1)中。

    在图5e和图5f之间是概念上非常类似于上述阶段的另外m-2个阶段。

    图5f示出最终完成对最后的采样值(dm)的处理的阶段。在这里的计算之后,第(m+m-1)个结果值存储到r-存储箱88(2m-1)中,并且处理完成。r-存储箱88(0.2m-1)现在保持此处基于m+1个采样数据值(d0...dm)和m+1个导数卷积系数值(c’0...c’m)进行的卷积计算的完整结果。

    总的来说,从上面可以看出,创造性卷积系统10允许并行地而不是串行地完成必需计算的实质部分。例如,在上述的简化例子中,22个处理器14并行地进行计算。注意,可以利用SEAforth-24A器件中的所有24个处理器,但是这不会更快,因为处理器14a和处理器14x将用来进行覆盖计算和I/O的双重任务。

    如同在本节开始处所指出的,创造性卷积系统10也允许采用新的算法种类,现在讨论其这些方面。图6a-c是描绘使用上面给出的两种方法进行的卷积的曲线图。这样,这些图提供了对图4a-f和图5a-f所给出的方法的概念性概览。

    图6a示出表示使用传统卷积系数的第一迹线92,和表示使用导数卷积系数的第二迹线92’,所述导数卷积系数即新的算法种类可用的系数,也可以用在本发明中。图6b示出表示使用目前给出的两种方法对其进行卷积的输入数据的单条迹线94(目前讨论此处的另一条迹线94’)。图6c示出表示目前所讨论的两种方法的结果的单条迹线96。在图6a-c所示的特定例子中,迹线92由下式表示:

    (7)u(t)=10cos2(πt2),]]>。

    迹线92’由u’(t)表示。迹线94由下式表示:

    (8)v(t)=0.8cos(iπtq),]]>

    迹线94’由v’(t)表示。这里t被定义在从-1到1的区间上,步长为0.01,i的范围是以步长1从l取到q,q是经过滤波器函数的数据点数目(在本例中为2000)。作为整体,图6a-c示出如何使用当前讨论的任何一种方法可以达到完全相同的结果,该结果在此处如迹线96所示。

    也可能存在使用新的算法种类的其他方法。例如,再次参见图6a-c,可以使用导数数据函数,即迹线94’所表示的,和传统滤波器函数,即迹线92所表示的,并且迹线96中的结果再次相同。在文献中存在其他人也在考虑这种方法的某种暗示,虽然不是以此处公开的新颖方式来实施。从逻辑上说还可以进一步进行函数导数的使用。例如,使用数据和滤波器函数的导数在理论上也是可能的。进一步,使用数据和滤波器函数中至少一个的更高阶的导数在理论上也是可能的。作为实际问题,这些方法具有有限的真实世界用途,但是仍然被本发明的精神所包围。在图6a-c中,数据和滤波器函数的导数方法由迹线92’和迹线94’表示,仍然具有迹线96的结果。

    在这些方法中的任意一种方法中,在使用导数时某些重要的考虑来自获得函数导数所需要的努力。在卷积计算中,所使用的数据采样值的数目通常超出所使用的系数值的数目。相应地,获得滤波器函数的导数通常比获得数据函数的导数所需的努力小。当然,可能存在获得数据函数的导数需要很少或者不需要额外的努力的特定情形,但是这很可能是罕见的。进一步,由于在对通常是不同的数据采样值进行多次卷积计算时滤波器系数经常是相同的,因此获取滤波器系数值所投入的努力是可重用的或“被摊薄“的努力。实际上,在许多应用中,这种努力将消耗在设计中,滤波器值可以作为程序常数输入(例如,即使存储在像SEAforth-24A的器件的ROM 32中)。

    再次继续图6a-c,可以看出迹线92和迹线94具有大的幅度范围而迹线92’和迹线94’具有明显更小的幅度范围。作为实际问题,这意味着迹线92’和迹线94’可以使用更少的位来表达,其重要性可以在考虑可用工具的特性即数字处理器的固有局限性时就会领会到。虽然SEAforth-24A器件实际上比其他合适的候选者更加出众,但是我们仍然可以并且确实在这里继续使用它来示出关于创造性的卷积系统10如何帮助一般地克服现代数字处理器中的固有局限性的点。

    例如,迹线92中的卷积滤波器值必须使用18位的值来表达,而用于迹线92’中的创造性方法的值可以使用9位的或更少位的值来表达。类似地,可以认为迹线94中使用的数据采样值必须由18位的值来表达,而用于迹线94’中的创造性方法的值可以使用9位的或更少位的值来表达。本发明人已经观察到,在创造性卷积系统10中,使用所有9位的值可以提供大约4倍(4X)的速度提高。

    数字处理器可能固有地受限于其可以直接进行操作的值的大小。例如,英特尔公司在1971年推出的4004处理器处理4位的值,大多数当代个人计算机中的处理器直接处理32或64位值。此外,大取值的乘法通常是当今大部分处理器中可以得到的最慢的操作。本发明人已经观察到,乘法操作可能占用卷积算法的执行时间的60-90%。

    SEAforth-24A器件并不是数字处理器的这些一般原则的例外。它采用Forth语言,并且依赖于对无符号值来说以18位所表示的数值(或者对于有符号值来说是17位),或者对无符号值来说以9位所表示的值(或者对于有符号值来说是8位)。例如,如果某个值需要10位,其有效地必须被当作其需要18位。简要地参见图2,可以再次看出SEAforth-24A器件中的各处理器14具有一个18位A-寄存器44,一个9位B-寄存器46、在ROM32和RAM 34中具有18位宽的字,还具有18位宽的端口52。

    与在处理器14中用Forth语言对两个18位的值作乘法的等价物需要以下36个操作码的序列(其中“.”表示nop或无操作指令,“+*”表示加-星或逐位乘法指令):

    (9).+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*.+*

    相反,与在处理器14中用Forth语言对一个18位的值和一个9位的值作乘法的等价物需要以下18个操作码的序列

    (10).+*.+*.+*.+*.+*.+*.+*.+*.+*

    与在处理器14中用Forth语言对两个9位的值作乘法的等价物需要以下9个操作码的序列

    (11)+*+*+*+*+*+*+*+*+*

    显然,从计算负担和所达到的速度的观点来看,计算式(9)是最劣的任务,计算式(11)是最佳的任务。这些可以分别被称为以1x、2x和4x的速度运行。

    现在给出以上概念性基础的更加严密的“证据”。创造性的卷积系统10可以采用的新的算法种类使用积分核(一般地,例如见等式(1)和背景技术部分)的导数表达式而不是直接表达式。下式基本上是等式(5)的重申:

    (12)r(t)=∫0tf(t-τ)g(τ)dτ=limΔ→0Σk=0tf(ct-k)g(ck)Δτ,]]>

    其中f(t-τ)表示积分核。然而,假设作为替换积分核由f’(t-τ)表示。这产生下式:

    (13)r′(t)=∫0tf′(t-τ)g(τ)dτ=limΔ→0Σk=0tf′(ct-k)g(ck)Δτ]]>

    现在假定积分核是特定的低通滤波器或者可以由低通滤波器表示,那么以下的近似是合理的:

    (14)f′(ct-k)=f(ct-k)-f(ct-k-Δτk)

    并且有

    limΔτ→0Σk=0t[f(ct-k)-f(ct-k-Δτ)]g(ck)Δτ=]]>

    (15)limΔτ→0Σk=0tf(ct-k)g(ck)Δτ-limΔτ→0Σk=0tf(ct-k-Δτ)g(ck)Δτ]]>

    在该点,容易看出,等式(14)的等号右边的第一和就是r(t)。不那么明显的是等号右边的第二项就是来自一个时间步长Δτ之前的先前卷积值,这可以以以下方式表示:

    (16)limΔτ→0Σk=0tf(ct-k-Δτ)g(ck)Δτ=r(t-Δτ)]]>

    因此,在使用直接积分核的卷积关系和使用直接积分核的导数的卷积关系之间,以下关系成立:

    (17)r′(t)=r(t)-r(t-Δτ)→r(t)=r′(t)+r(t-Δτ)

    这里一个重要的发现在于意识到,使用核的导数的卷积与之前计算出的卷积,两者的和与使用直接表示的卷积完全一样。这说明新的和等于旧的和加上已经计算出的任何结果。

    将此应用于创造性卷积系统10中可以使用的新算法种类的场合,直接滤波器系数值(c0...cn)可以用来以以下的方式计算导数系数值(c’0...c’n+1):c’0=c0-0;c’1=c1-c0;c’2=c2-c1;...;c’n=cn-cn-1;c’n+1=0-cn。然而,如果c0的值非零,那么我们只要让c’0=c0-0=c0。类似地,如果c0为零,那么我们只要让c’0=0-0=0,没理由让导数滤波器值与零值相关联,因为这不会对被累加的中间值(a0)做出贡献。以上推理可以扩展到任何直接滤波器值或任何为零的直接滤波器值的导数,因为如果滤波器系数值不会对在该节点计算的被累加的中间值做出贡献,没有必要将其与特定的节点相关联。虽然如此,除了第一节点以外,各节点处的部分和仍然必须被考虑到。

    现在转向为什么图4a-f使用索引n而图4a-f使用索引m,这是为了强调使用基于直接的算法和基于导数的算法之间的关键区别。如同可以从上一段看出来的,在可以使用n个直接滤波器系数值(c0...cn)的情况下,需要n+1个导数系数值(c’0...c’n+1)。这样,例如,如果要将21个处理器应用于使用基于直接的算法的应用,则需要22个处理器来用于使用基于导数的算法的同一应用。或者说,如果要将22个处理器应用于使用基于直接的算法的应用,则需要23个处理器来用于使用基于导数的算法的同一应用。在图1和3a-c中的SEAforth-24A器件的情况下,这需要让一个处理器未使用或者将I/O功能组合到一个处理器中,因此基于导数的算法采用23个处理器。这在使用24个处理器的器件(例如SEAforth-24A器件)时可能带来小问题,但是在使用40个处理器的器件(中的SEAforth-40A器件)时带来的问题更小,并且在采用80-、96-、128-的器件时迅速变得微不足道。

    还要注意,通过使用相等数目的卷积系数值和采样数据值简化了此处的讨论。如果在使用基于直接的算法时有22个采样数据值要处理,则在使用基于导数的算法时需要23个采样数据值来处理。当然,将使用22个实际的数据值,第23个值用零“填补”。然而,更典型地,这不会是问题,因为在最真实世界的应用中将使用大量的、潜在地接近无穷量的采样数据值。

    总之,使用导数表示代替直接表示的好处在于表示导数幅度所需的值在幅度上通常远小于用于表示直接滤波器的幅度所用的值。在SEAforth-24A器件方面,再次用其作为例子,已经发现通常是9位的数据字就足够的情况,而不是全部18位数据字来表示幅度值。允许认为9位的表示就足够有两个要求。第一是系数值用9位无符号(或8位有符号)表示。第二个条件是连续直接滤波器系数值由9位无符号(或8位有符号)表示。在典型的低通滤波器的条件下,例如图6a-c中给出的例子中所使用的低通滤波器,导数值将只由8位表示,因为最高有效位在左边作为符号位。作为一般的规则,如果所讨论的值是无符号的,或者可以当作无符号,则如果连续直接系数值之间的差小于512个单位,则导数逼近是恰当的方法。否则,连续直接系数值之间的差必须小于256个单位。

    图7是示例性直接滤波器700的代码清单。此处使用的编程语言是Forth,目标硬件处理器14是SEAforth-24A器件。

    项目702是将“IO”与IOCS-寄存器50等同的编译器指令。该项目指定数据从哪里读取和向哪里写入。注意,SEAforth-24A器件中的IOCS-寄存器可以并发地指定从不同的端口52读取和写入。为了避免混淆,熟悉不那么复杂的器件的人在阅读以下内容时应该记住上述说明。

    项目704时将“H”与系数值等同的编译器指令。此处“123”仅仅是用于示例的值。这是该处理器14的c-存储箱72中的内容。

    项目706是Forth语言的注释。

    项目708是Forth语言中的位置标签。

    项目710是Forth指令序列,其对处理器14进行初始化,用于紧随的卷积计算。具体而言,IO被载入数据堆栈顶部;然而从该处弹出到B-寄存器46以便其指向IOCS-寄存器50;然后H被载入数据堆栈顶部;然后nop填补此处使用的18位的指令字以包含该指令序列。

    项目712指定循环的开始,在该循环中用条件编译对三种情况进行处理。这根据某处理器是流水线中的第一个(处理器14b)、中间(处理器14c-v中的任意一个)还是最后一个(处理器14w)来对处理器14进行编程。也参见图3a-c。

    这里的项目714指定针对大多数典型情况而言的指令编译的开始。所述大多数情况即目标处理器14是处理器14c-v中的一个。

    [注意,图7-8中的指令字右侧的注释使用两列的方案,该方案表示数据堆栈和返回堆栈是否相关,其中在右边的元素处于相应堆栈的最顶部。以下讨论中的括号示出这被“翻译”成之前-之后并且在左边的元素在最顶部的方案,这种方案是在许多Forth教科书中所遇到的。这样,提供两种方案来帮助促进对本例的理解。]

    项目716是另一Forth指令序列。具体而言,数据采样值从B-寄存器46所指向的地址读出,并且被压入数据堆栈(h--sh);然后累加值(a)也被读出然后压入数据堆栈(sh--ash);然后数据堆栈的顶部元素被弹出然后压入返回堆栈的顶部(D:ash--sh R:--a);然后数据堆栈的顶部元素被复制然后压入数据堆栈(D:sh--ssh R:a--a)。

    接下来是项目718,其中数据堆栈的顶部元素被弹出并且压入返回堆栈的顶部(D:ssh--sh R:a--sa);然后进行大乘法(“MULT”,在SEAforth-24A器件的BIOS中提供的定义)。数据堆栈顶部的两个元素在这里用作乘数和被乘数,该顶部元件被替换为结果(a’)而被乘数作为数据堆栈中的第二个元素被留下(D:sh--a’h R:sa--sa)。

    接下来是项目720,其中返回堆栈的顶部元素被弹出并且压入数据堆栈(D:a’h--sa’h  R:sa--a);数据堆栈的顶部元素被弹出然后写入B-寄存器46指向的地址(D:sa’h--a’h  R:a--a);返回堆栈的顶部元素被弹出然后压入数据堆栈(D:a’h--aa’h  R:a--);然后nop填补所使用的18位的指令字。

    接下来是项目722,其中数据堆栈的两个顶部元素被加在一起,顶部被新的累加后的和(a”)替换,第二个元素被第三个元素替代(D:aa’h--a”hR:--)。

    接下来是项目724,结束针对目标处理器14是处理器14c-v之一的情况的代码条件编译。

    现在,对于图7所示的另外两个条件编译选项的理解是简单明了的。对针对处理器14b的情况更加简单,因为不需要读取和加上“之前”的累加值。针对处理器14v的情况某种程度上也更加简单,因为当前数据采样值不需要被写入“后续的”处理器。

    最后,项目726是对于所有的处理器14b-w都要编译的指令序列,其中数据堆栈的顶部元素被弹出然后写入B-寄存器46所指向的地址(D:a”h--h  R:--);并且循环返回项目712。

    图8a-b是示例性导数滤波器800的代码清单,其中图8a示出执行概念上类似图7的功能的代码(除了9位计算对18位计算),图8b示出基于导数的算法所使用的附加代码。

    如图8a所示,这里的许多代码基本上与以上讨论的直接滤波器700中的代码相同。然而,一个例外是项目802,其中使用了9个加星(“+*”)操作来进行小乘法(而不是使用MULT定义进行的大乘法)。

    项目804是将返回堆栈中的部分值(p)初始化为零的Forth指令序列。具体而言,这里,文字(literal)被放在数据堆栈上(D:h--ph  R:--);然后从那里被压入返回堆栈的顶部(D:ph--h  R:--p);然后用两个nop来填充指令字。[注意,选择该特定方法以便于与直接滤波器700进行概念上的比较,熟练的程序员很容易理解有更多更加有效和恰当的方法来进行处理。]

    然后项目806处理采用部分值(p)的额外加法。当前部分值(p)从返回堆栈弹出,并且压入数据堆栈(D:a”h--pa”h  R:p--);第一个nop增加下一指令之前的时间;数据堆栈的两个顶部元素被加在一起,其中最顶部的元素被和替换,该和既是下一部分值(p’)又是累加后的和(a”),第二个元素被第三个元素替换(D:pa”h--p’h  R:--);第二个nop填补18位的指令字。

    然后项目808将累加后的总和(a”)保存在返回堆栈中作为下一个部分值(p’)。累加后的和(a”)被复制(D:a”h--p’a”h  R:--);下一个部分值(p’)从数据堆栈中弹出并且压入返回堆栈(D:a”h--a”h  R:--p’);两个填补填充18位指令字。

    现在转向图8b,其示出在采用基于导数的算法时用于“积分器”步骤的附加代码。注意,在本特定例子中,该代码将在附加处理器14中运行。

    项目810是Forth语言的注释,项目812是Forth语言的位置标签。通过向图8a中的代码添加恰当的编译指示,该代码将被条件编译,或者该代码可以被单独编译。

    项目814是Forth指令序列,其首先将IO的值取回到B-寄存器46,然后将值$3F(端口地址)取回到A-寄存器44。

    项目816是另一Forth指令序列。具体而言,其将数据堆栈清零。数据堆栈的顶部元素被复制然后压入数据堆栈,然后再进行一次(这与顶部元素是什么无关)。然后最顶部的两个元素从数据堆栈中弹出,然后进行异或,然后将结果(零)压入回数据堆栈。

    项目818指定循环的开始。

    项目820是另一Forth指令序列。具体而言,从B-寄存器46所指向的地址读取值,然后压入数据堆栈;然后数据堆栈顶部的两个元素相加,然后替换顶部元素(第二个元素被第三个元素替代);然后数据堆栈的顶部元素被复制然后压入数据堆栈;然后顶部元素从数据堆栈中弹出并写入A-寄存器44所指向的地址。净结果是和被输出而其备份被保留(累加)来用作循环的下一次执行。

    项目822是循环返回项目818的地址。

    可见,本创造性卷积系统10所使用的基于导数的算法需要非常少的附加代码。

    虽然以上描述了不同的实施例,应该理解,它们仅仅以示例的方式给出,本发明的广度和范围不应该受限于以上描述的示例性实施例,而应该仅仅根据下列权利要求及其等同替换来限定。

用于利用多个计算机处理器进行卷积计算的系统.pdf_第1页
第1页 / 共40页
用于利用多个计算机处理器进行卷积计算的系统.pdf_第2页
第2页 / 共40页
用于利用多个计算机处理器进行卷积计算的系统.pdf_第3页
第3页 / 共40页
点击查看更多>>
资源描述

《用于利用多个计算机处理器进行卷积计算的系统.pdf》由会员分享,可在线阅读,更多相关《用于利用多个计算机处理器进行卷积计算的系统.pdf(40页珍藏版)》请在专利查询网上搜索。

用于利用包括第一和最末处理器的处理器阵列来计算数据函数与滤波器函数的卷积的系统。以该滤波器函数的导数为基础的系数值和表示该数据函数的数据值相乘以产生当前中间值。除了在第一处理器中,将在先中间值加到当前中间值。除了在最末处理器中,数据和当前中间值发送到下一处理器。然后将最末处理器的在先中间值,如果有的话,加到其当前中间值以产生结果值,其中该结果值共同地表示该数据函数与该滤波器函数的卷积。 。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1