处理器中的移动平均处理及处理器的制造方法

xiaoxiao2020-7-22  7

处理器中的移动平均处理及处理器的制造方法
【专利摘要】本公开涉及处理器中的移动平均处理及处理器。一种并行地执行m个算术运算的处理器,其执行将输入数据序列的第i个元素至第(i+m-1)个元素作为输入元素的部分和指令以获得第一向量数据;执行将输入数据序列的第(i+x)个元素至第(i+x+m-1)个元素作为输入元素的部分和指令以获得第二向量数据;以及对于第0元素至第(m-1)个元素中的每个元素并行地执行从输入数据序列的第i个元素至第(i+x-1)个元素的和中减去第一向量数据的第p个元素以及加上第二向量数据的第p个元素的运算,以并行地计算彼此不同的m个部段的元素的和;以及执行移动平均处理以根据部段的元素的和来计算移动平均。
【专利说明】处理器中的移动平均处理及处理器

【技术领域】
[0001]在此公开的实施方式涉及一种处理器中的移动平均处理及处理器。

【背景技术】
[0002]近年来,在无线通信技术中对各种系统进行了标准化,并且存在能够与各种无线电通信系统对应的在被称为软件定义无线电的处理器中执行信号处理的系统。传统的无线电通信处理借助于硬件逻辑通过对大量数据进行并行处理来实现高通信性能。此外,因为传统的无线电通信处理安装在移动设备中,所以运算频率的增大在考虑到实现低功率消耗的情况下时不可能的。因此,另外当使用处理器执行软件定义无线电处理时,通过对大量数据进行并行处理来保持性能,并且经常使用SMD(单指令多数据)类型的处理器。
[0003]在无线电通信处理的信号处理中存在获得移动平均的处理。假设在作为移动平均的目标的部段中的元素的数量为n,对于输入数据序列的索引i,移动平均处理将顺序地获得输入数据序列中的第i个元素(数据)至第(i+n-1)个元素(数据)的平均值,同时增加i的值。移动平均处理可以通过下述步骤来高效地执行处理:获得第i个元素至第(i+n-1)个元素的总和,然后加上第(i+n)个元素并且减去第个i元素以获得第(i+1)个元素至第(i+n)个元素的总和,并且除以在部段中的元素的数量n,从而获得平均值(例如,参见专利文献I)。
[0004]然而,由于数据的依赖关系,对于第i个元素至第(i+n-Ι)个元素的算术结果执行加法、减法等然后获得第(i+1)个元素至第(i+n)个元素的下一个移动平均的移动平均值处理难以并行化,并且难以通过SMD型处理器进行高效处理。
[0005][专利文献I]日本公开特许公报N0.10-143495
[0006][专利文献2]日本公开特许公报N0.2012-75023
[0007][专利文献3]日本公开特许公报N0.1-61114
[0008][专利文献4]日本公开特许公报N0.10-285502
[0009][专利文献5]日本公开特许公报N0.2011-233085


【发明内容】

[0010]本实施方式的目的是并行化与移动平均处理相关的算术运算,以提高移动平均处理的处理效率。
[0011]移动平均处理的一方面是使得处理器执行下文的处理,其中该处理器并行地执行m个算术运算,m是2或更大的整数,并且该处理器基于第O个输入元素至第(m-Ι)个输入元素来执行计算第O个输入元素至第P个输入元素的和并且返回每个和作为第P个结果元素的部分和指令,P是O至m-Ι的整数。执行将输入数据序列的第i个元素至第(i+m-Ι)个元素作为第O个输入元素至第(m-Ι)个输入元素的部分和指令,以获得第一向量数据,i是O和自然数之中的任意数;执行将输入数据序列的第(i+x)个元素至第(i+x+m-Ι)个元素作为第O个输入元素至第(m-Ι)个输入元素的部分和指令以获得第二向量数据,X是自然数;对于第O个元素至第(m-ι)个元素中的每个元素并行地执行从输入数据序列的第i个元素至第(i+x-Ι)个元素的和中减去第一向量数据的第P个元素以及加上第二向量数据的第P个元素的运算,以并行地计算彼此不同的m个部段的元素的和;以及根据所计算的部段的元素的和来计算输入数据序列的移动平均。

【专利附图】

【附图说明】
[0012]图1是示出了实施方式中的处理器的结构示例的视图;
[0013]图2A和图2B是用于描述本实施方式中的移动平均处理的并行化的视图;
[0014]图3A、图3B、图3C是用于描述本实施方式中的部分和指令的运算的视图;
[0015]图4是示出了当执行本实施方式中的部分和指令时处理器的示意图;
[0016]图5A至图5F是示出了本实施方式中的移动平均处理(中间部分处理)的示例的视图;
[0017]图6是示出了本实施方式中的移动平均处理(中间部分处理)的流程图;
[0018]图7是示出了本实施方式中的移动平均处理的示例的视图;
[0019]图8A和图8B是用于描述本实施方式中的掩码值设定指令的视图;
[0020]图9是示出了与本实施方式中的移动平均处理中的加载处理相关的程序的示例的视图;
[0021]图10是示出了与本实施方式中的移动平均处理中的加载处理相关的程序的示例的视图;
[0022]图11是示出了与本实施方式中的移动平均处理中的存储处理相关的程序的示例的视图;
[0023]图12是用于描述本实施方式中的系数表的视图;
[0024]图13是示出了与本实施方式中的移动平均处理中的平均处理相关的程序的示例的视图;
[0025]图14是示出了与本实施方式中的移动平均处理相关的程序的示例的视图;
[0026]图15是示出了移动平均处理的示例的视图;
[0027]图16是示出了与图15中所示的移动平均处理相关的程序的视图;以及
[0028]图17是示出了当执行本实施方式中的部分和指令时处理器的另一示例的示意图。

【具体实施方式】
[0029]下文中,将参照附图阐明实施方式。
[0030]图15是示出了移动平均处理的示例的视图。图15中所示的移动平均处理获得存储在输入缓冲区in_buf中的一个输入数据序列的移动平均,并且将所获得的移动平均存储在输出缓冲区out_buf中。作为移动平均的目标的部段在输入数据序列中的前部分、中间部分和后部分是不同的。部段的元素数量在前部分中的初始部段中为c,接着顺序地每次增加I直到X为止,部段的元素数量在中间部分中为X,并且每次减小I直到部段的元素数量在后部分中的最终部段中为b为止。
[0031]在输入数据序列中的前部分中,输入缓冲区in_buf [O]到in_buf [c-Ι]的c个元素(输入数据)的平均值存储在输出缓冲区out_buf[0]中,并且输入缓冲区in_buf[0]到输入缓冲区in_buf[c]的(c+1)个元素的平均值存储在输出缓冲区out_buf[l]中。在输入数据序列中的元素数量增加的前部分中,仅加入新元素而不减去最旧元素,并且当每次将除数增加I时获得移动平均。以这种方式顺序地获得移动平均,并且输入缓冲区in_buf [O]到输入缓冲区in_buf [x-2]的(x_l)个元素的平均值被存储在输出缓冲区out_buf [x_c_l]中。
[0032]在输入数据序列中的中间部分中,输入缓冲区in_buf [O]到输入缓冲区in_buf [x-1]的X个元素的平均值存储在输出缓冲区out_buf [x-c]中,并且输入缓冲区in_buf [I]到输入缓冲区in_buf[x]的x个元素的平均值存储在输出缓冲区out_buf[x_c+l]中。在输入数据序列中的中间部分中,加入新元素并且减去最旧元素,并且通过除以X获得移动平均。以这种方式顺序地获得移动平均,并且输入缓冲区in_buf[n-x]到输入缓冲区in_buf[n-l]的x个元素的平均值被存储在输出缓冲区out_buf [n_c]中。
[0033]在输入数据序列中的后部分中,输入缓冲区in_buf[n_x+l]到输入缓冲区in_buf [n-1]的(x-1)个元素的平均值存储在输出缓冲区out_buf [η-c+l]中。在输入数据序列中的元素数量减小的后部分中,仅仅减去最旧元素并且不加入新元素,并且当逐一减小除数时获得移动平均。以这种方式顺序地获得移动平均,输入缓冲区in_buf[n-b-l]到输入缓冲区in_buf [η-1]的(b+1)个元素的平均值被存储在输出缓冲区out_buf [n+x_c-b_l]中,并且输入缓冲区in_buf[n-b]到输入缓冲区in_buf[n_l]的b个元素的平均值被存储在输出缓冲区out_buf [n+x-c-b]中。
[0034]图16示出了根据图15中所示的移动平均处理的程序示例。在预处理1601中,通过将输入缓冲区in_buf[0]到输入缓冲区in_buf[c-2]的元素加起来以计算总和值sum。在前部分处理1602中,通过将输入缓冲区in_buf[i]中作为新元素的元素加入到总和值sum中然后将结果除以计数值cnt而获得的平均值avr被存储在输出缓冲区out_buf [j]中。在中间部分处理1603中,通过将输入缓冲区in_buf[i]中作为新元素的元素加入到总和值sum中再从中减去输入缓冲区in_buf[1-x]中作为最旧元素的元素然后将结果除以值X而获得的平均值avr被存储在输出缓冲区out_buf [j]中。在后部分处理1604中,通过从总和值sum中减去输入缓冲区in_buf[1-x]中作为最旧元素的元素然后将结果除以计数值cnt而获得的平均值avr被存储在输出缓冲区out_buf [j]中。
[0035]在图16中所示的移动平均处理中,由于将一个新元素加入到先前算术结果中或从先前算术结果中减去一个最旧元素,所以难以进行并行化算术运算,并且难以通过SMD型处理器进行高效地处理。在稍后描述的实施方式中,通过分别计算输入数据序列的部分相加处理,可以并行地执行与移动平均处理相关的处理,从而提高处理效率。
[0036]图1是示出了实施方式中的处理器的结构示例的视图。例如,本实施方式中的处理器10是能够并行地执行算术运算的SMD型处理器。在图1中,作为一个示例示出了并行处理m个数据块的SMD型处理器。处理器10包括程序计数器(PC) 12、指令解码器(解码器)14、SIMD寄存器组16、SMD流水线寄存器18A、SIMD流水线寄存器18B、SIMD流水线寄存器22以及算术运算单元21。算术运算单元21包括多个算术单元(ALU) 20_0、20_1、……、20~ (m—I)。
[0037]处理器10根据程序计数器12的值在指令解码器14中对从指令存储器(IRAM) 30读取的指令进行解码。然后,处理器10根据指令解码器14中的解码结果从寄存器组16的SIMD寄存器读取待用于算术运算的数据,并且将数据存储在SMD流水线寄存器18A、SIMD流水线寄存器18B中。待用于算术运算的数据等被从数据存储器(DRAM)40适当地读取并且存储在寄存器组16的SMD寄存器中。
[0038]处理器10使用存储在SMD流水线寄存器18A、SIMD流水线寄存器18B中的数据在算术运算单元21的算术单元20-0、20-1、……、20-(m-l)中执行与指令解码器14中的解码结果对应的算术运算,并且将算术结果存储在SMD流水线寄存器22中。存储在SMD流水线寄存器22中的算术结果被写入到SIMD寄存器组16中。
[0039]下面关注获取输入数据序列中的中间部分的移动平均处理中的X个元素的平均值的处理,获得X个元素的和的计算包括加入新元素和减去最旧元素,如图2A和图2B所示。在本实施方式中,如图2B所示,为了执行m个并行运算以获得X个元素的和,分别计算每个运算中待减去的最旧元素的总和201以及待加入的新元素的总和202,并且通过使用其以获得X个元素的和来执行并行化。
[0040]图2A和图2B是执行四个并行运算以获得X个元素的和的示例,其中获取第t个元素、第t个元素和第(t+Ι)个元素的总和、第t个元素至第(t+2)个元素的总和以及第t个元素至第(t+3)个元素的总和作为待减去的旧元素的总和201。此外,获取第u个元素、第u个元素和第(u+1)个元素的总和、第u个元素至第(u+2)个元素的总和以及第u个元素至第(u+3)个元素的总和作为待加入的新元素的总和202。
[0041]然后,对第t个元素至第(u-Ι)个元素的总和并行地执行减去旧元素的总和201以及加上新元素的总和202的处理,从而使计算并行化以获得X个元素的和。在本实施方式中,为了获得待减去的旧元素的总和以及待加入的新元素的总和,在能够并行处理m个数据块的处理器中设置了返回第O个元素至第(m-Ι)个元素的部分和的部分和指令。
[0042]部分和指令是根据存储在SIMD寄存器vs中的m个元素(数据)计算部分和的指令并且将结果存储在SMD寄存器vr中。也就是说,当执行部分和指令时,SIMD寄存器vs的第O个输入元素作为向量数据的第O个结果元素存储在SIMD寄存器vr中,以及将SIMD寄存器vs中的第O个输入元素和第一个输入元素相加的结果作为向量数据的第一结果元素存储在SMD寄存器vr中。此外,将SMD寄存器vs中的第O个输入元素至第m个输入元素相加的结果作为向量数据的第m个结果元素存储在SIMD寄存器vr中。也就是说,通过部分和指令,将SIMD寄存器vs中的第O个输入元素至第k(k是整数)个输入元素相加的结果作为向量数据的第k个结果元素存储在SIMD寄存器vr中。
[0043]图3A是示出了当m = 4时执行部分和指令的算术运算的运算电路的结构示例的视图。将SMD寄存器vs的第O个元素vs [O]输入至SMD寄存器vr的第O个元素vr [O]。将SMD寄存器vs的第O个元素vs [O]和第一个元素vs [I]输入至加法器301,并且将加法器301的输出输入至SMD寄存器vr的第一个元素vr[l]。将加法器301的输出和SMD寄存器vs的第二个元素vs [2]输入至加法器302,并且将加法器302的输出输入至SMD寄存器vr的第二个元素vr [2]。将加法器302的输出和SMD寄存器vs的第三个元素vs [3]输入至加法器303,并且将加法器303的输出输入至SMD寄存器vr的第三个元素vr[3]。因此,当m = 4时,图3A中所示的运算电路执行图3B中所示的与部分和指令对应的算术运笪
ο
[0044]应注意,执行部分和指令的算术运算的运算电路的结构不限于图3A中所示的电路,并且可以是任何电路结构,只要能够执行图3B中所示的算术运算的即可。例如,该电路可以是如图3C中所示的电路。图3C是示出了当m = 4时执行部分和指令的算术运算的运算电路的另一结构示例的视图。将SMD寄存器vs的第O个元素vs [O]输入至SMD寄存器vr的第O个元素vr[0]。将SIMD寄存器vs的第O个元素vs [O]和第一个元素vs [I]输入至加法器311。将加法器311的输出输入至SIMD寄存器vr的第一个兀素vr[l]。将加法器311的输出和SIMD寄存器vs的第二个元素vs[2]输入至加法器312。将加法器312的输出输入至SMD寄存器vr的第二个元素vr[2]。将SMD寄存器vs的第二个元素vs [2]和第三个兀素VS [3]输入至加法器313。将加法器311的输出和加法器313的输出输入至加法器314。将加法器314的输出输入至SMD寄存器vr的第三个元素vr [3]。在图3C所示的电路结构中,可以减少与部分和指令的算术运算相关的相加阶段的数量。
[0045]图4是示出了当执行本实施方式中的部分和指令时处理器的示意图。图4也作为示例示出了当m = 4时执行部分和指令的处理器。在图4中,采用相同的附图标记表示具有与图1中所示的结构元素的功能相同的结构元素,并且省略了重复描述。包括在算术运算单元21中的多个算术单元实现多个加法器(ADD) 24-1、24-2、24-3。
[0046]将SMD流水线寄存器18的第O个元素输入作为SMD流水线寄存器22的第O个元素。将SMD流水线寄存器18的第一个元素和第O个元素输入至加法器24-1,并且将加法器24-1的输出输入作为SIMD流水线寄存器22的第一个元素。将SIMD流水线寄存器18的第二个兀素和加法器24-1的输出输入至加法器24-2,并且将加法器24-2的输出输入作为SMD流水线寄存器22的第二个元素。将SMD流水线寄存器18的第三个元素和加法器24-2的输出输入至加法器24-3,并且将加法器24-3的输出输入作为SMD流水线寄存器22的第三个元素。应注意,在图4中,在算术运算单元21中执行三级加法处理,但是其可以通过一个周期来执行。
[0047]图17是示出了当执行本实施方式中的部分和指令时处理器的另一示例的示意图。图17也作为示例示出了当m = 4时执行部分和指令的处理器,并且与图3C中所示的执行部分和指令的算术运算的示例对应。在图17中,采用相同的附图标记表示具有与图1和图4中所示的结构元素的功能相同的结构元素,并且省略了重复描述。包括在算术运算单元2IB中的多个算术单元实现多个加法器(ADD)24B-l、24B-2、24B-3、24B-4。
[0048]将SMD流水线寄存器18的第O个元素输入作为SMD流水线寄存器22的第O个元素。将SMD流水线寄存器18的第一个元素和第O个元素输入至加法器24B-1,并且将加法器24B-1的输出输入作为SIMD流水线寄存器22的第一个元素。将SIMD流水线寄存器18的第二个元素和加法器24B-1的输出输入至加法器24B-2,并且将加法器24B-2的输出输入作为SMD流水线寄存器22的第二个元素。将SMD流水线寄存器18的第三个元素和第二个兀素输入至加法器24B-3。将加法器24B-1的输出和加法器24B-3的输出输入至加法器24B-4,并且将加法器24B-4的输出输入作为SMD流水线寄存器22的第三个元素。还应注意,在图17中,可以通过一个周期来执行在算术运算单元21中的加法处理。
[0049]图5A至图5F是示出了本实施方式中的移动平均处理(中间部分处理)的示例的视图,并且作为示例示出了 m = 4(4个并行运算)的情况。处理器10通过部分和指令来获得第t个元素至第(t+3)个元素的部分和以及第u个元素至第(u+3)个元素的部分和。然后,如图5B所示,处理器10将通过部分和指令获得的第u个元素至第(u+3)个元素的部分和加入到第t个元素至第(u-Ι)个元素的总和中,该总和为在图5A中所示的先前元素中的最后元素的算术结果。此外,如图5C所示,处理器10从图5B中所示的相加结果中减去通过部分和指令获得的第t个元素到第(t+3)个元素的部分和。因此,可以并行地执行获得第(t+Ι)个元素至第u个元素的总和的运算、获得第(t+2)个元素至第(u+1)个元素的总和的运算、获得第(t+3)个元素至第(u+2)个元素的总和的运算以及获得第(t+4)个元素至第(u+3)个元素的总和的运算。
[0050]类似地,处理器10通过部分和指令获得第(t+4)个元素至第(t+7)个元素的部分和以及第(u+4)个元素至第(u+7)个元素的部分和。然后,如图5E所示,处理器10将通过部分和指令获得的第(u+4)个元素至第(u+7)个元素的部分和加入到第(t+4)个元素至第(u+3)个元素的总和中,该总和为在图中所示的先前元素中的最后元素的算术结果(图5C)。此外,如图5F所示,处理器10从图5E中所示的相加结果中减去通过部分和指令所获得的第(t+4)个元素至第(t+7)个元素的部分和。因此,可以并行地执行获得第(t+5)个元素至第(u+4)个元素的总和的运算、获得第(t+6)个元素至第(u+5)个元素的总和的运算、获得第(t+7)个元素至第(u+6)个元素的总和的运算以及获得第(t+8)个元素至第(u+7)个元素的总和的运算。
[0051]例如,当执行获得如图5A至图5F所示的元素的总和的4个并行运算时,中间部分处理的处理效率变为四倍多。应注意,尽管图5A至图5F示出了将新元素的部分和加入到先前元素的算术结果中,然后再从中减去旧元素的部分和的示例,但是其还可以是从先前元素的算术结果中减去旧元素的部分和,然后再加上新元素的部分和。
[0052]图6是示出了本实施方式中的移动平均处理(中间部分处理)的流程图。当前部分处理结束并且处理器进行到中间部分处理时,在步骤S601中,处理器10将在前部分处理中的最后元素的算术结果输入至SIMD寄存器vrO的vr0[0]至vrO[m_l]的每个元素。接下来,在步骤S602中,处理器10确定在中间部分处理中的待处理元素中是否存在任何未处理的元素。因此,当不存在未处理的部分时,与中间部分处理相关的计算结束,并且处理器进行到后部分处理。另一方面,当存在任何未处理的部分时,处理器行进到步骤S603。
[0053]在步骤S603中,处理器10执行部分和指令以获得待加入的第u个元素至第(u+m-1)个的部分和,并且将其输入至SIMD寄存器vrl的元素vrl [O]至元素vrl [m-Ι]的各元素中。此外,在步骤S604中,处理器10执行部分和指令以获得待减去的第t个旧元素至第(t+m-1)个旧元素的部分和,并且将其输入至SMD寄存器vr2的元素vr2[0]至元素vr2[m-l]的各元素中。应注意,步骤S603和步骤S604的处理的顺序是任意的。
[0054]接下来,在步骤S605中,对于每个对应的元素,处理器10执行处理以将SMD寄存器vrl加入到SMD寄存器vrO中以及从SMD寄存器vrO中减去SMD寄存器vr2,并且将算术结果输入至SIMD寄存器vr3的元素vr3 [O]至元素vr3[m-l]的各元素中。随后,在步骤S606中,处理器10对SMD寄存器vr3的元素vr3[0]至元素vr3[m-l]的各元素执行与包含在部段中的元素的数量对应的平均处理以计算平均值,并且将结果写在某存储区域中。然后,在步骤S607中,处理器10将SMD寄存器vr3的最后元素vr3 [m-Ι]输入至SMD寄存器的vrO的元素vr0[0]至元素vrO[m-l]的各元素中,并且返回到步骤S602。
[0055]如上所述,在能够并行处理m个数据块的处理器中,通过设置返回输入数据序列的第O个元素至第(m-ι)个元素的一部分的部分和的部分和指令,可以并行地执行获得在移动平均处理中的部段中的元素的和的运算。这使得可以并行地执行与移动平均处理相关的处理以提高处理效率,并且使得可以在例如SMD型处理器中高效地处理移动平均处理。
[0056]文中,在如图15所示的移动平均处理中,部段中元素的数量在输入数据序列中的前部分、中间部分和后部分中是变化的。因此,出现如图16所示的条件分支,并且每个循环处理变小,使得与循环控制相关的开销变大,从而降低处理效率。因此,在本实施方式中,为了能够在每个部段中具有X个元素数量的情况下执行算术运算,如图7所示虚拟地扩展输入缓冲区in_buf和输出缓冲区0ut_buf,从而进一步提高与移动平均处理相关的处理效率。
[0057]图7是示出了本实施方式的移动平均处理的示例的视图。输入缓冲区in_buf的阵列虚拟地扩展到负侧的索引(-X),输入缓冲区in_buf的阵列虚拟地扩展到正侧的索引(η+χ-b-l)。此外,输出缓冲区out_buf的阵列虚拟地扩展到负侧的索引(_c+l)。
[0058]以此方式,通过虚拟地扩展输入缓冲区in_buf的阵列,可以在输入数据序列的前部分、中间部分、后部分的移动平均处理中将部段中的元素的数量统一为X。此外,通过虚拟地扩展输出缓冲区out_buf的阵列,还可以通过类似于正常处理的处理来执行预处理以获得每个部段中的平均值。因此,移动平均处理中的条件分支被消除,并且使得可以通过一个循环处理来执行移动平均处理。因此,可以提高与移动平均处理相关的处理效率。
[0059]文中,对于被扩展的输入缓冲区in_buf的阵列中的负索引,即,输入缓冲区in_buf的第(-X)个元素至第(-1)个元素,通过屏蔽加载指令将读取抑制到0(零)。类似地,对于被扩展的输入缓冲区in_buf中的η个或更多个索引,即,输入缓冲区in_buf的第η个元素至第(η+χ-b-l)个元素,通过屏蔽加载指令将读取抑制到O。此外,对于被扩展的输出缓冲区out_buf的阵列中的负索引,S卩,输出缓冲区out_buf的第(-c+1)个元素至第(-1)个元素,通过屏蔽存储指令来抑制写入。
[0060]当来自掩码寄存器mr的高阶侧的第X位(bit)的值为O时,屏蔽加载指令将O存储在SIMD寄存器的第X个元素中,或者当该值为I时,屏蔽加载指令将加载数据存储在SIMD寄存器的第X个元素中。当来自掩码寄存器mr的高阶侧的第X位的值为I时,屏蔽存储指令仅对SMD寄存器的第X个元素执行存储处理(当该值为O时,屏蔽存储指令不执行任何处理)。应注意,在本实施方式中,在m位的掩码寄存器mr中,最高有效位是第O位以及最低有效位是第(m-Ι)位。
[0061]将描述在掩码寄存器mr中对值进行设定的掩码值设定指令和掩码值设定指令_R0图8A是用于描述掩码值设定指令的视图。当值为k(0〈k〈m)时,掩码值设定指令将来自掩码寄存器皿' 的第O位至第(k-Ι)位的值设定为I,并且将第k位至第(m-Ι)位设定为O。也就是说,当值为k时,掩码值设定指令将来自掩码寄存器mr的高阶侧的k位的值设定为1,并且将剩余的(m-k)位的值设定为O。当值为O或更小时,掩码值设定指令将掩码寄存器mr的所有位的值设定为0,并且当值为m或更大时,掩码值设定指令将掩码寄存器mr的所有位的值设定为I。
[0062]图8B是用于描述掩码值设定指令_1?的视图。当值为k(0〈k〈m)时,掩码值设定指令_1?将来自掩码寄存器皿■的第O位至第(m-k-ι)位的值设定为O,并且将第(m-k)位至第(m-Ι)位设定为I。也就是说,当值为k时,掩码值设定指令_R将来自掩码寄存器mr的低阶侧的k位的值设定为1,并且将剩余的(m-k)位的值设定为O。当值为O或更小时,掩码值设定指令_R将掩码寄存器mr的所有位的值设定为O,并且当值为m或更大时,掩码值设定指令_R将掩码寄存器mr的所有位的值设定为I。
[0063]例如,通过图9中所示的程序,将与包括在图7所示的区域701中的输入缓冲区in_buf的第(-X)个元素至第(-1)个元素对应的元素设定为O。在图9中,编码901的处理通过掩码值设定指令_R将与值(idxO+m)对应的掩码值设定到掩码寄存器mO。编码902的处理根据掩码寄存器mO的值对与输入缓冲区in_buf的第(idxO)个元素至第(idxO+m-Ι)个元素对应的元素进行加载,并且将其存储在SMD寄存器vt中。编码903的处理将m加入到值idxO中以使其成为新的idxO值。通过执行图9中所示的这种程序,将与输入缓冲区in_buf的第(-X)个元素至第(-1)个元素对应的元素设定为0,以及对与输入缓冲区in_buf的第O个元素和之后的元素对应的元素进行加载并且存储在SMD寄存器vt中。
[0064]通过图10所示的程序,将与包括在图7所示的区域702中的输入缓冲区in_buf的第η个元素至第(η+χ-b-l)个元素对应的元素设定为O。在图10中,编码1001的处理通过掩码值设定指令将与值(idxl)对应的掩码值设定到掩码寄存器ml。编码1002的处理根据掩码寄存器ml的值对与输入缓冲区in_buf的第i个元素至第(i+m-Ι)个元素对应的元素进行加载,并且将其存储在SMD寄存器vu中。编码1003的处理从值idxl中减去m以使其成为新的idxl。通过执行图10中所示的程序,将与输入缓冲区in_buf的第η个元素和之后的元素对应的元素设定为0,以及对与输入缓冲区in_buf的第O个元素至第(n-1)个元素对应的元素进行加载并且存储在SMD寄存器vu中。
[0065]通过图11所示的程序,抑制对与包括在图7所示的区域703中的输出缓冲区out_buf的第(-c+1)个元素至第(-1)个元素对应的元素的存储处理。在图11中,编码1101的处理通过掩码值设定指令_R将与值(idx2+m)对应的掩码值设定到掩码寄存器m2。编码1102的处理根据掩码寄存器m2的值执行将移动平均结果存储在与输出缓冲区out_buf的第(idx2)个元素至第(idx2+m-l)个元素对应的元素中的存储处理。编码1103的处理将m加入到idx2中以使其成为新的idx2值。通过执行图11中所示的程序,抑制了所执行的与对应于输出缓冲区oUt_bUf的第(-c+1)个元素至第(-1)个元素的元素相关的存储处理,并且对与输出缓冲区out_buf的第O个元素和之后的元素对应的元素执行算术结果的存储处理。
[0066]在移动平均处理中,执行用于计算平均值的平均处理,但是当通过除法执行该平均处理时,处理所需的周期数变大。此外,有效元素的数量在输入数据序列的前部分、中间部分以及后部分中是不同的。因此,在本实施方式中,设置了存储除数的倒数以获得平均值的系数表。然后,通过将与从系数表中获得的值i对应的除数的倒数乘以部段中的元素的总和来计算平均值以提高处理效率。
[0067]图12是示出了与存储在本实施方式的系数表中的值i对应的除数和其倒数的视图。当值i是O至(x-Ι)时,其对应于输入数据序列中的前部分(包括预处理),以及有效元素的数量即除数为(i+1),并且该除数的倒数为I/(i+1)。当值i是X至(η-1)时,其对应于输入数据序列中的中间部分,以及有效元素的数量即除数为X,并且除数的倒数为I/χο当值i大于η时,其对应于输入数据序列中的后部分,以及有效元素的数量即除数为(χ+η-1-l),并且除数的倒数为I/ (χ+η-1-l)。
[0068]因此,可以通过创建将图12中所示的对应于值i的倒数存储为第i个元素的系数表div_tbl以及通过图13所示的程序获得来自系数表div_tbl的对应于值i的倒数并且将在部段中的元素的总和乘以倒数来计算平均值。在图13中,编码1301的处理对系数表div_tbl的第i个元素至第(i+m-Ι)个元素进行加载并且将其存储在SMD寄存器vd中。对于每个相应的元素,编码1302的处理在SMD寄存器vave中存储通过将存储在SMD寄存器vsum中的部段的元素的总和乘以存储在SIMD寄存器Vd中的值所获得的平均值。
[0069]图14示出了与应用了上述处理的本实施方式中的移动平均处理有关的示例。在图14中,采用相同的附图标记表示与图9至图11以及图13中所示的部件相同的部件,并且省略了重复描述。应注意,在图14中,当获得部段的元素的总和时,对待减去的部分和进行存储的SMD寄存器为vt2,以及存储来自输入缓冲区in_buf的加载数据以获得这个部分和的SMD寄存器为vtl。当获得部段的元素的总和时,对待加上的部分和进行存储的SMD寄存器为vu2,以及对来自输入缓冲区in_buf的加载数据进行存储以获得这个部分和的SMD寄存器为vul。
[0070]在图14中,编码1401的处理基于存储在SMD寄存器vtl中的值通过部分和指令来计算部分和并且将其存储在SMD寄存器中vt2中。此外,编码1402的处理基于存储在SIMD寄存器vul中的值通过部分和指令来计算部分和并且将其存储在SMD寄存器vu2中。对于每个相应的元素,编码1403的处理在SMD寄存器vsum的值中加上SMD寄存器vu2的值,并从中减去SIMD寄存器vt2的值,以计算部段的元素的总和并将结果存储(覆写)在SMD寄存器vsum中。编码1404的处理将SMD寄存器vsum的最后元素vsum[m-l]存储(覆写)在SIMD寄存器vsum的每个元素中。
[0071]所公开的移动平均处理可以通过分别计算输入数据序列的部分加法处理以并行地执行与移动平均处理相关的处理来提高处理效率。
【权利要求】
1.一种处理器,包括: 处理单元,所述处理单元并行地执行m个算术运算,m是2或更大的整数,以及所述处理单元基于第O个输入元素至第(m-Ι)个输入元素来执行计算所述第O个输入元素至第P个输入元素的和并且返回所述每个和作为第P个结果元素的部分和指令,P是O至m-Ι的整数,其中,所述处理单元执行移动平均处理,所述移动平均处理包括: 执行将输入数据序列的第i个元素至第(i+m-1)个元素作为所述第O个输入元素至所述第(m-Ι)个输入元素的所述部分和指令以获得第一向量数据,i是O和自然数之中的任意数; 执行将所述输入数据序列的第(i+x)个元素至第(i+x+m-1)个元素作为所述第O个输入元素至所述第(m-Ι)个输入元素的所述部分和指令以获得第二向量数据,X是自然数; 对于所述第O个元素至所述第(m-Ι)个元素中的每个元素并行地执行从所述输入数据序列的第i个元素至第(i+x-Ι)个元素的和中减去所述第一向量数据的第P个元素以及加上所述第二向量数据的第P个元素的运算,以并行地计算彼此不同的m个部段的元素的和;以及 根据所计算的所述部段的元素的和来计算所述输入数据序列的移动平均。
2.根据权利要求1所述的处理器,其中, 所述处理单元将执行所述部分和指令以获得所述第一向量数据、执行所述部分和指令以获得所述第二向量数据、执行计算m个部段的元素的和的运算以及计算所述输入数据序列的移动平均作为一个组反复地执行,同时每次使所述值i增加m ;以及 在执行计算先前组的m个部段的元素的和的运算中的第(i+m)个元素至第(i+x+m-1)个元素的和被作为在执行计算下一组的m个部段的元素的和的运算中的所述输入数据序列的第i个元素至第(i+x-Ι)个元素的和,以执行所述算术运算。
3.根据权利要求2所述的处理器,其中, 所述输入数据序列包括第O个元素至第(η-1)个元素,η是2或更大的整数,以及 所述处理单元对所述输入数据序列进行扩展以使得在每个部段中的元素的数量为X,以计算所述移动平均。
4.根据权利要求3所述的处理器,其中, 所述处理单元包括存储所计算的移动平均的输出缓冲区,以及所述处理单元根据对所述输入数据序列的扩展来扩展所述输出缓冲区。
5.根据权利要求3所述的处理器,其中, 所述处理单元生成与所述输入数据序列的第O个元素至第(η-1)个元素对应的掩码位,并且所述处理单元执行与所述掩码位对应的元素的数据的加载处理和存储处理。
6.根据权利要求5所述的处理器,其中, 所述处理单元包括存储所计算的移动平均的输出缓冲区,以及所述处理单元根据对所述输入数据序列的扩展来扩展所述输出缓冲区。
7.根据权利要求1至6中任一项所述的处理器,其中, 所述处理单元包括存储每个部段的有效元素的数量的倒数的系数表,其中针对所述每个部段计算所述移动平均,以及在计算所述输入数据序列的移动平均的过程中所述处理单元通过将执行计算m个部段的元素的和的运算的结果乘以通过参考所述系数表而获得的倒数来计算移动平均。
8.一种处理器,包括: 算术运算单元,所述算术运算单元针对多个部段并行地计算输入数据序列的移动平均,其中, 所述算术运算单元: 对于第一单指令多数据寄存器的每个元素执行第一算术运算以计算所述输入数据序列的第i个元素至第(i+p)个元素的和并且将所述和存储作为所述第一单指令多数据寄存器中的第P个元素,i是在O和自然数之中的任意数,P是O至m-Ι的整数,以及m是2或更大的整数; 对于第二单指令多数据寄存器的每个元素执行第二算术运算以计算所述输入数据序列的第(i+x)个元素至第(i+x+P)个元素的和并且将所述和存储作为所述第二单指令多数据寄存器中的第P个元素,X是自然数;以及 对于第O个元素至第(m-Ι)个元素中的每个元素并行地执行第三算术运算,以执行从所述输入数据序列的第i个元素至第(i+x-Ι)个元素的和中减去所述第一单指令多数据寄存器的第P个元素以及加上所述第二单指令多数据寄存器的第P个元素的运算,以及将结果存储作为第三单指令多数据寄存器的第P个元素,以并行地计算彼此不同的m个部段的元素的和;以及 执行平均处理以根据存储在所述第三单指令多数据寄存器中的元素的和来计算平均值。
【文档编号】G06F9/38GK104182207SQ201410177617
【公开日】2014年12月3日 申请日期:2014年4月29日 优先权日:2013年5月23日
【发明者】伊藤真纪子, 久保田学, 野元一宏 申请人:富士通株式会社

最新回复(0)