CN104182207A - 处理器中的移动平均处理及处理器 - Google Patents

处理器中的移动平均处理及处理器 Download PDF

Info

Publication number
CN104182207A
CN104182207A CN201410177617.0A CN201410177617A CN104182207A CN 104182207 A CN104182207 A CN 104182207A CN 201410177617 A CN201410177617 A CN 201410177617A CN 104182207 A CN104182207 A CN 104182207A
Authority
CN
China
Prior art keywords
individual
moving average
carry out
input
processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201410177617.0A
Other languages
English (en)
Inventor
伊藤真纪子
久保田学
野元一宏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Publication of CN104182207A publication Critical patent/CN104182207A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30036Instructions to perform operations on packed data, e.g. vector, tile or matrix operations

Abstract

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

Description

处理器中的移动平均处理及处理器
技术领域
在此公开的实施方式涉及一种处理器中的移动平均处理及处理器。
背景技术
近年来,在无线通信技术中对各种系统进行了标准化,并且存在能够与各种无线电通信系统对应的在被称为软件定义无线电的处理器中执行信号处理的系统。传统的无线电通信处理借助于硬件逻辑通过对大量数据进行并行处理来实现高通信性能。此外,因为传统的无线电通信处理安装在移动设备中,所以运算频率的增大在考虑到实现低功率消耗的情况下时不可能的。因此,另外当使用处理器执行软件定义无线电处理时,通过对大量数据进行并行处理来保持性能,并且经常使用SIMD(单指令多数据)类型的处理器。
在无线电通信处理的信号处理中存在获得移动平均的处理。假设在作为移动平均的目标的部段中的元素的数量为n,对于输入数据序列的索引i,移动平均处理将顺序地获得输入数据序列中的第i个元素(数据)至第(i+n-1)个元素(数据)的平均值,同时增加i的值。移动平均处理可以通过下述步骤来高效地执行处理:获得第i个元素至第(i+n-1)个元素的总和,然后加上第(i+n)个元素并且减去第个i元素以获得第(i+1)个元素至第(i+n)个元素的总和,并且除以在部段中的元素的数量n,从而获得平均值(例如,参见专利文献1)。
然而,由于数据的依赖关系,对于第i个元素至第(i+n-1)个元素的算术结果执行加法、减法等然后获得第(i+1)个元素至第(i+n)个元素的下一个移动平均的移动平均值处理难以并行化,并且难以通过SIMD型处理器进行高效处理。
[专利文献1]日本公开特许公报No.10-143495
[专利文献2]日本公开特许公报No.2012-75023
[专利文献3]日本公开特许公报No.1-61114
[专利文献4]日本公开特许公报No.10-285502
[专利文献5]日本公开特许公报No.2011-233085
发明内容
本实施方式的目的是并行化与移动平均处理相关的算术运算,以提高移动平均处理的处理效率。
移动平均处理的一方面是使得处理器执行下文的处理,其中该处理器并行地执行m个算术运算,m是2或更大的整数,并且该处理器基于第0个输入元素至第(m-1)个输入元素来执行计算第0个输入元素至第p个输入元素的和并且返回每个和作为第p个结果元素的部分和指令,p是0至m-1的整数。执行将输入数据序列的第i个元素至第(i+m-1)个元素作为第0个输入元素至第(m-1)个输入元素的部分和指令,以获得第一向量数据,i是0和自然数之中的任意数;执行将输入数据序列的第(i+x)个元素至第(i+x+m-1)个元素作为第0个输入元素至第(m-1)个输入元素的部分和指令以获得第二向量数据,x是自然数;对于第0个元素至第(m-1)个元素中的每个元素并行地执行从输入数据序列的第i个元素至第(i+x-1)个元素的和中减去第一向量数据的第p个元素以及加上第二向量数据的第p个元素的运算,以并行地计算彼此不同的m个部段的元素的和;以及根据所计算的部段的元素的和来计算输入数据序列的移动平均。
附图说明
图1是示出了实施方式中的处理器的结构示例的视图;
图2A和图2B是用于描述本实施方式中的移动平均处理的并行化的视图;
图3A、图3B、图3C是用于描述本实施方式中的部分和指令的运算的视图;
图4是示出了当执行本实施方式中的部分和指令时处理器的示意图;
图5A至图5F是示出了本实施方式中的移动平均处理(中间部分处理)的示例的视图;
图6是示出了本实施方式中的移动平均处理(中间部分处理)的流程图;
图7是示出了本实施方式中的移动平均处理的示例的视图;
图8A和图8B是用于描述本实施方式中的掩码值设定指令的视图;
图9是示出了与本实施方式中的移动平均处理中的加载处理相关的程序的示例的视图;
图10是示出了与本实施方式中的移动平均处理中的加载处理相关的程序的示例的视图;
图11是示出了与本实施方式中的移动平均处理中的存储处理相关的程序的示例的视图;
图12是用于描述本实施方式中的系数表的视图;
图13是示出了与本实施方式中的移动平均处理中的平均处理相关的程序的示例的视图;
图14是示出了与本实施方式中的移动平均处理相关的程序的示例的视图;
图15是示出了移动平均处理的示例的视图;
图16是示出了与图15中所示的移动平均处理相关的程序的视图;以及
图17是示出了当执行本实施方式中的部分和指令时处理器的另一示例的示意图。
具体实施方式
下文中,将参照附图阐明实施方式。
图15是示出了移动平均处理的示例的视图。图15中所示的移动平均处理获得存储在输入缓冲区in_buf中的一个输入数据序列的移动平均,并且将所获得的移动平均存储在输出缓冲区out_buf中。作为移动平均的目标的部段在输入数据序列中的前部分、中间部分和后部分是不同的。部段的元素数量在前部分中的初始部段中为c,接着顺序地每次增加1直到x为止,部段的元素数量在中间部分中为x,并且每次减小1直到部段的元素数量在后部分中的最终部段中为b为止。
在输入数据序列中的前部分中,输入缓冲区in_buf[0]到in_buf[c-1]的c个元素(输入数据)的平均值存储在输出缓冲区out_buf[0]中,并且输入缓冲区in_buf[0]到输入缓冲区in_buf[c]的(c+1)个元素的平均值存储在输出缓冲区out_buf[1]中。在输入数据序列中的元素数量增加的前部分中,仅加入新元素而不减去最旧元素,并且当每次将除数增加1时获得移动平均。以这种方式顺序地获得移动平均,并且输入缓冲区in_buf[0]到输入缓冲区in_buf[x-2]的(x-1)个元素的平均值被存储在输出缓冲区out_buf[x-c-1]中。
在输入数据序列中的中间部分中,输入缓冲区in_buf[0]到输入缓冲区in_buf[x-1]的x个元素的平均值存储在输出缓冲区out_buf[x-c]中,并且输入缓冲区in_buf[1]到输入缓冲区in_buf[x]的x个元素的平均值存储在输出缓冲区out_buf[x-c+1]中。在输入数据序列中的中间部分中,加入新元素并且减去最旧元素,并且通过除以x获得移动平均。以这种方式顺序地获得移动平均,并且输入缓冲区in_buf[n-x]到输入缓冲区in_buf[n-1]的x个元素的平均值被存储在输出缓冲区out_buf[n-c]中。
在输入数据序列中的后部分中,输入缓冲区in_buf[n-x+1]到输入缓冲区in_buf[n-1]的(x-1)个元素的平均值存储在输出缓冲区out_buf[n-c+1]中。在输入数据序列中的元素数量减小的后部分中,仅仅减去最旧元素并且不加入新元素,并且当逐一减小除数时获得移动平均。以这种方式顺序地获得移动平均,输入缓冲区in_buf[n-b-1]到输入缓冲区in_buf[n-1]的(b+1)个元素的平均值被存储在输出缓冲区out_buf[n+x-c-b-1]中,并且输入缓冲区in_buf[n-b]到输入缓冲区in_buf[n-1]的b个元素的平均值被存储在输出缓冲区out_buf[n+x-c-b]中。
图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[i-x]中作为最旧元素的元素然后将结果除以值x而获得的平均值avr被存储在输出缓冲区out_buf[j]中。在后部分处理1604中,通过从总和值sum中减去输入缓冲区in_buf[i-x]中作为最旧元素的元素然后将结果除以计数值cnt而获得的平均值avr被存储在输出缓冲区out_buf[j]中。
在图16中所示的移动平均处理中,由于将一个新元素加入到先前算术结果中或从先前算术结果中减去一个最旧元素,所以难以进行并行化算术运算,并且难以通过SIMD型处理器进行高效地处理。在稍后描述的实施方式中,通过分别计算输入数据序列的部分相加处理,可以并行地执行与移动平均处理相关的处理,从而提高处理效率。
图1是示出了实施方式中的处理器的结构示例的视图。例如,本实施方式中的处理器10是能够并行地执行算术运算的SIMD型处理器。在图1中,作为一个示例示出了并行处理m个数据块的SIMD型处理器。处理器10包括程序计数器(PC)12、指令解码器(解码器)14、SIMD寄存器组16、SIMD流水线寄存器18A、SIMD流水线寄存器18B、SIMD流水线寄存器22以及算术运算单元21。算术运算单元21包括多个算术单元(ALU)20-0、20-1、……、20-(m-1)。
处理器10根据程序计数器12的值在指令解码器14中对从指令存储器(IRAM)30读取的指令进行解码。然后,处理器10根据指令解码器14中的解码结果从寄存器组16的SIMD寄存器读取待用于算术运算的数据,并且将数据存储在SIMD流水线寄存器18A、SIMD流水线寄存器18B中。待用于算术运算的数据等被从数据存储器(DRAM)40适当地读取并且存储在寄存器组16的SIMD寄存器中。
处理器10使用存储在SIMD流水线寄存器18A、SIMD流水线寄存器18B中的数据在算术运算单元21的算术单元20-0、20-1、……、20-(m-1)中执行与指令解码器14中的解码结果对应的算术运算,并且将算术结果存储在SIMD流水线寄存器22中。存储在SIMD流水线寄存器22中的算术结果被写入到SIMD寄存器组16中。
下面关注获取输入数据序列中的中间部分的移动平均处理中的x个元素的平均值的处理,获得x个元素的和的计算包括加入新元素和减去最旧元素,如图2A和图2B所示。在本实施方式中,如图2B所示,为了执行m个并行运算以获得x个元素的和,分别计算每个运算中待减去的最旧元素的总和201以及待加入的新元素的总和202,并且通过使用其以获得x个元素的和来执行并行化。
图2A和图2B是执行四个并行运算以获得x个元素的和的示例,其中获取第t个元素、第t个元素和第(t+1)个元素的总和、第t个元素至第(t+2)个元素的总和以及第t个元素至第(t+3)个元素的总和作为待减去的旧元素的总和201。此外,获取第u个元素、第u个元素和第(u+1)个元素的总和、第u个元素至第(u+2)个元素的总和以及第u个元素至第(u+3)个元素的总和作为待加入的新元素的总和202。
然后,对第t个元素至第(u-1)个元素的总和并行地执行减去旧元素的总和201以及加上新元素的总和202的处理,从而使计算并行化以获得x个元素的和。在本实施方式中,为了获得待减去的旧元素的总和以及待加入的新元素的总和,在能够并行处理m个数据块的处理器中设置了返回第0个元素至第(m-1)个元素的部分和的部分和指令。
部分和指令是根据存储在SIMD寄存器vs中的m个元素(数据)计算部分和的指令并且将结果存储在SIMD寄存器vr中。也就是说,当执行部分和指令时,SIMD寄存器vs的第0个输入元素作为向量数据的第0个结果元素存储在SIMD寄存器vr中,以及将SIMD寄存器vs中的第0个输入元素和第一个输入元素相加的结果作为向量数据的第一结果元素存储在SIMD寄存器vr中。此外,将SIMD寄存器vs中的第0个输入元素至第m个输入元素相加的结果作为向量数据的第m个结果元素存储在SIMD寄存器vr中。也就是说,通过部分和指令,将SIMD寄存器vs中的第0个输入元素至第k(k是整数)个输入元素相加的结果作为向量数据的第k个结果元素存储在SIMD寄存器vr中。
图3A是示出了当m=4时执行部分和指令的算术运算的运算电路的结构示例的视图。将SIMD寄存器vs的第0个元素vs[0]输入至SIMD寄存器vr的第0个元素vr[0]。将SIMD寄存器vs的第0个元素vs[0]和第一个元素vs[1]输入至加法器301,并且将加法器301的输出输入至SIMD寄存器vr的第一个元素vr[1]。将加法器301的输出和SIMD寄存器vs的第二个元素vs[2]输入至加法器302,并且将加法器302的输出输入至SIMD寄存器vr的第二个元素vr[2]。将加法器302的输出和SIMD寄存器vs的第三个元素vs[3]输入至加法器303,并且将加法器303的输出输入至SIMD寄存器vr的第三个元素vr[3]。因此,当m=4时,图3A中所示的运算电路执行图3B中所示的与部分和指令对应的算术运算。
应注意,执行部分和指令的算术运算的运算电路的结构不限于图3A中所示的电路,并且可以是任何电路结构,只要能够执行图3B中所示的算术运算的即可。例如,该电路可以是如图3C中所示的电路。图3C是示出了当m=4时执行部分和指令的算术运算的运算电路的另一结构示例的视图。将SIMD寄存器vs的第0个元素vs[0]输入至SIMD寄存器vr的第0个元素vr[0]。将SIMD寄存器vs的第0个元素vs[0]和第一个元素vs[1]输入至加法器311。将加法器311的输出输入至SIMD寄存器vr的第一个元素vr[1]。将加法器311的输出和SIMD寄存器vs的第二个元素vs[2]输入至加法器312。将加法器312的输出输入至SIMD寄存器vr的第二个元素vr[2]。将SIMD寄存器vs的第二个元素vs[2]和第三个元素vs[3]输入至加法器313。将加法器311的输出和加法器313的输出输入至加法器314。将加法器314的输出输入至SIMD寄存器vr的第三个元素vr[3]。在图3C所示的电路结构中,可以减少与部分和指令的算术运算相关的相加阶段的数量。
图4是示出了当执行本实施方式中的部分和指令时处理器的示意图。图4也作为示例示出了当m=4时执行部分和指令的处理器。在图4中,采用相同的附图标记表示具有与图1中所示的结构元素的功能相同的结构元素,并且省略了重复描述。包括在算术运算单元21中的多个算术单元实现多个加法器(ADD)24-1、24-2、24-3。
将SIMD流水线寄存器18的第0个元素输入作为SIMD流水线寄存器22的第0个元素。将SIMD流水线寄存器18的第一个元素和第0个元素输入至加法器24-1,并且将加法器24-1的输出输入作为SIMD流水线寄存器22的第一个元素。将SIMD流水线寄存器18的第二个元素和加法器24-1的输出输入至加法器24-2,并且将加法器24-2的输出输入作为SIMD流水线寄存器22的第二个元素。将SIMD流水线寄存器18的第三个元素和加法器24-2的输出输入至加法器24-3,并且将加法器24-3的输出输入作为SIMD流水线寄存器22的第三个元素。应注意,在图4中,在算术运算单元21中执行三级加法处理,但是其可以通过一个周期来执行。
图17是示出了当执行本实施方式中的部分和指令时处理器的另一示例的示意图。图17也作为示例示出了当m=4时执行部分和指令的处理器,并且与图3C中所示的执行部分和指令的算术运算的示例对应。在图17中,采用相同的附图标记表示具有与图1和图4中所示的结构元素的功能相同的结构元素,并且省略了重复描述。包括在算术运算单元21B中的多个算术单元实现多个加法器(ADD)24B-1、24B-2、24B-3、24B-4。
将SIMD流水线寄存器18的第0个元素输入作为SIMD流水线寄存器22的第0个元素。将SIMD流水线寄存器18的第一个元素和第0个元素输入至加法器24B-1,并且将加法器24B-1的输出输入作为SIMD流水线寄存器22的第一个元素。将SIMD流水线寄存器18的第二个元素和加法器24B-1的输出输入至加法器24B-2,并且将加法器24B-2的输出输入作为SIMD流水线寄存器22的第二个元素。将SIMD流水线寄存器18的第三个元素和第二个元素输入至加法器24B-3。将加法器24B-1的输出和加法器24B-3的输出输入至加法器24B-4,并且将加法器24B-4的输出输入作为SIMD流水线寄存器22的第三个元素。还应注意,在图17中,可以通过一个周期来执行在算术运算单元21中的加法处理。
图5A至图5F是示出了本实施方式中的移动平均处理(中间部分处理)的示例的视图,并且作为示例示出了m=4(4个并行运算)的情况。处理器10通过部分和指令来获得第t个元素至第(t+3)个元素的部分和以及第u个元素至第(u+3)个元素的部分和。然后,如图5B所示,处理器10将通过部分和指令获得的第u个元素至第(u+3)个元素的部分和加入到第t个元素至第(u-1)个元素的总和中,该总和为在图5A中所示的先前元素中的最后元素的算术结果。此外,如图5C所示,处理器10从图5B中所示的相加结果中减去通过部分和指令获得的第t个元素到第(t+3)个元素的部分和。因此,可以并行地执行获得第(t+1)个元素至第u个元素的总和的运算、获得第(t+2)个元素至第(u+1)个元素的总和的运算、获得第(t+3)个元素至第(u+2)个元素的总和的运算以及获得第(t+4)个元素至第(u+3)个元素的总和的运算。
类似地,处理器10通过部分和指令获得第(t+4)个元素至第(t+7)个元素的部分和以及第(u+4)个元素至第(u+7)个元素的部分和。然后,如图5E所示,处理器10将通过部分和指令获得的第(u+4)个元素至第(u+7)个元素的部分和加入到第(t+4)个元素至第(u+3)个元素的总和中,该总和为在图5D中所示的先前元素中的最后元素的算术结果(图5C)。此外,如图5F所示,处理器10从图5E中所示的相加结果中减去通过部分和指令所获得的第(t+4)个元素至第(t+7)个元素的部分和。因此,可以并行地执行获得第(t+5)个元素至第(u+4)个元素的总和的运算、获得第(t+6)个元素至第(u+5)个元素的总和的运算、获得第(t+7)个元素至第(u+6)个元素的总和的运算以及获得第(t+8)个元素至第(u+7)个元素的总和的运算。
例如,当执行获得如图5A至图5F所示的元素的总和的4个并行运算时,中间部分处理的处理效率变为四倍多。应注意,尽管图5A至图5F示出了将新元素的部分和加入到先前元素的算术结果中,然后再从中减去旧元素的部分和的示例,但是其还可以是从先前元素的算术结果中减去旧元素的部分和,然后再加上新元素的部分和。
图6是示出了本实施方式中的移动平均处理(中间部分处理)的流程图。当前部分处理结束并且处理器进行到中间部分处理时,在步骤S601中,处理器10将在前部分处理中的最后元素的算术结果输入至SIMD寄存器vr0的vr0[0]至vr0[m-1]的每个元素。接下来,在步骤S602中,处理器10确定在中间部分处理中的待处理元素中是否存在任何未处理的元素。因此,当不存在未处理的部分时,与中间部分处理相关的计算结束,并且处理器进行到后部分处理。另一方面,当存在任何未处理的部分时,处理器行进到步骤S603。
在步骤S603中,处理器10执行部分和指令以获得待加入的第u个元素至第(u+m-1)个的部分和,并且将其输入至SIMD寄存器vr1的元素vr1[0]至元素vr1[m-1]的各元素中。此外,在步骤S604中,处理器10执行部分和指令以获得待减去的第t个旧元素至第(t+m-1)个旧元素的部分和,并且将其输入至SIMD寄存器vr2的元素vr2[0]至元素vr2[m-1]的各元素中。应注意,步骤S603和步骤S604的处理的顺序是任意的。
接下来,在步骤S605中,对于每个对应的元素,处理器10执行处理以将SIMD寄存器vr1加入到SIMD寄存器vr0中以及从SIMD寄存器vr0中减去SIMD寄存器vr2,并且将算术结果输入至SIMD寄存器vr3的元素vr3[0]至元素vr3[m-1]的各元素中。随后,在步骤S606中,处理器10对SIMD寄存器vr3的元素vr3[0]至元素vr3[m-1]的各元素执行与包含在部段中的元素的数量对应的平均处理以计算平均值,并且将结果写在某存储区域中。然后,在步骤S607中,处理器10将SIMD寄存器vr3的最后元素vr3[m-1]输入至SIMD寄存器的vr0的元素vr0[0]至元素vr0[m-1]的各元素中,并且返回到步骤S602。
如上所述,在能够并行处理m个数据块的处理器中,通过设置返回输入数据序列的第0个元素至第(m-1)个元素的一部分的部分和的部分和指令,可以并行地执行获得在移动平均处理中的部段中的元素的和的运算。这使得可以并行地执行与移动平均处理相关的处理以提高处理效率,并且使得可以在例如SIMD型处理器中高效地处理移动平均处理。
文中,在如图15所示的移动平均处理中,部段中元素的数量在输入数据序列中的前部分、中间部分和后部分中是变化的。因此,出现如图16所示的条件分支,并且每个循环处理变小,使得与循环控制相关的开销变大,从而降低处理效率。因此,在本实施方式中,为了能够在每个部段中具有x个元素数量的情况下执行算术运算,如图7所示虚拟地扩展输入缓冲区in_buf和输出缓冲区out_buf,从而进一步提高与移动平均处理相关的处理效率。
图7是示出了本实施方式的移动平均处理的示例的视图。输入缓冲区in_buf的阵列虚拟地扩展到负侧的索引(-x),输入缓冲区in_buf的阵列虚拟地扩展到正侧的索引(n+x-b-1)。此外,输出缓冲区out_buf的阵列虚拟地扩展到负侧的索引(-c+1)。
以此方式,通过虚拟地扩展输入缓冲区in_buf的阵列,可以在输入数据序列的前部分、中间部分、后部分的移动平均处理中将部段中的元素的数量统一为x。此外,通过虚拟地扩展输出缓冲区out_buf的阵列,还可以通过类似于正常处理的处理来执行预处理以获得每个部段中的平均值。因此,移动平均处理中的条件分支被消除,并且使得可以通过一个循环处理来执行移动平均处理。因此,可以提高与移动平均处理相关的处理效率。
文中,对于被扩展的输入缓冲区in_buf的阵列中的负索引,即,输入缓冲区in_buf的第(-x)个元素至第(-1)个元素,通过屏蔽加载指令将读取抑制到0(零)。类似地,对于被扩展的输入缓冲区in_buf中的n个或更多个索引,即,输入缓冲区in_buf的第n个元素至第(n+x-b-1)个元素,通过屏蔽加载指令将读取抑制到0。此外,对于被扩展的输出缓冲区out_buf的阵列中的负索引,即,输出缓冲区out_buf的第(-c+1)个元素至第(-1)个元素,通过屏蔽存储指令来抑制写入。
当来自掩码寄存器mr的高阶侧的第x位(bit)的值为0时,屏蔽加载指令将0存储在SIMD寄存器的第x个元素中,或者当该值为1时,屏蔽加载指令将加载数据存储在SIMD寄存器的第x个元素中。当来自掩码寄存器mr的高阶侧的第x位的值为1时,屏蔽存储指令仅对SIMD寄存器的第x个元素执行存储处理(当该值为0时,屏蔽存储指令不执行任何处理)。应注意,在本实施方式中,在m位的掩码寄存器mr中,最高有效位是第0位以及最低有效位是第(m-1)位。
将描述在掩码寄存器mr中对值进行设定的掩码值设定指令和掩码值设定指令_R。图8A是用于描述掩码值设定指令的视图。当值为k(0<k<m)时,掩码值设定指令将来自掩码寄存器mr的第0位至第(k-1)位的值设定为1,并且将第k位至第(m-1)位设定为0。也就是说,当值为k时,掩码值设定指令将来自掩码寄存器mr的高阶侧的k位的值设定为1,并且将剩余的(m-k)位的值设定为0。当值为0或更小时,掩码值设定指令将掩码寄存器mr的所有位的值设定为0,并且当值为m或更大时,掩码值设定指令将掩码寄存器mr的所有位的值设定为1。
图8B是用于描述掩码值设定指令_R的视图。当值为k(0<k<m)时,掩码值设定指令_R将来自掩码寄存器mr的第0位至第(m-k-1)位的值设定为0,并且将第(m-k)位至第(m-1)位设定为1。也就是说,当值为k时,掩码值设定指令_R将来自掩码寄存器mr的低阶侧的k位的值设定为1,并且将剩余的(m-k)位的值设定为0。当值为0或更小时,掩码值设定指令_R将掩码寄存器mr的所有位的值设定为0,并且当值为m或更大时,掩码值设定指令_R将掩码寄存器mr的所有位的值设定为1。
例如,通过图9中所示的程序,将与包括在图7所示的区域701中的输入缓冲区in_buf的第(-x)个元素至第(-1)个元素对应的元素设定为0。在图9中,编码901的处理通过掩码值设定指令_R将与值(idx0+m)对应的掩码值设定到掩码寄存器m0。编码902的处理根据掩码寄存器m0的值对与输入缓冲区in_buf的第(idx0)个元素至第(idx0+m-1)个元素对应的元素进行加载,并且将其存储在SIMD寄存器vt中。编码903的处理将m加入到值idx0中以使其成为新的idx0值。通过执行图9中所示的这种程序,将与输入缓冲区in_buf的第(-x)个元素至第(-1)个元素对应的元素设定为0,以及对与输入缓冲区in_buf的第0个元素和之后的元素对应的元素进行加载并且存储在SIMD寄存器vt中。
通过图10所示的程序,将与包括在图7所示的区域702中的输入缓冲区in_buf的第n个元素至第(n+x-b-1)个元素对应的元素设定为0。在图10中,编码1001的处理通过掩码值设定指令将与值(idx1)对应的掩码值设定到掩码寄存器m1。编码1002的处理根据掩码寄存器m1的值对与输入缓冲区in_buf的第i个元素至第(i+m-1)个元素对应的元素进行加载,并且将其存储在SIMD寄存器vu中。编码1003的处理从值idx1中减去m以使其成为新的idx1。通过执行图10中所示的程序,将与输入缓冲区in_buf的第n个元素和之后的元素对应的元素设定为0,以及对与输入缓冲区in_buf的第0个元素至第(n-1)个元素对应的元素进行加载并且存储在SIMD寄存器vu中。
通过图11所示的程序,抑制对与包括在图7所示的区域703中的输出缓冲区out_buf的第(-c+1)个元素至第(-1)个元素对应的元素的存储处理。在图11中,编码1101的处理通过掩码值设定指令_R将与值(idx2+m)对应的掩码值设定到掩码寄存器m2。编码1102的处理根据掩码寄存器m2的值执行将移动平均结果存储在与输出缓冲区out_buf的第(idx2)个元素至第(idx2+m-1)个元素对应的元素中的存储处理。编码1103的处理将m加入到idx2中以使其成为新的idx2值。通过执行图11中所示的程序,抑制了所执行的与对应于输出缓冲区out_buf的第(-c+1)个元素至第(-1)个元素的元素相关的存储处理,并且对与输出缓冲区out_buf的第0个元素和之后的元素对应的元素执行算术结果的存储处理。
在移动平均处理中,执行用于计算平均值的平均处理,但是当通过除法执行该平均处理时,处理所需的周期数变大。此外,有效元素的数量在输入数据序列的前部分、中间部分以及后部分中是不同的。因此,在本实施方式中,设置了存储除数的倒数以获得平均值的系数表。然后,通过将与从系数表中获得的值i对应的除数的倒数乘以部段中的元素的总和来计算平均值以提高处理效率。
图12是示出了与存储在本实施方式的系数表中的值i对应的除数和其倒数的视图。当值i是0至(x-1)时,其对应于输入数据序列中的前部分(包括预处理),以及有效元素的数量即除数为(i+1),并且该除数的倒数为1/(i+1)。当值i是x至(n-1)时,其对应于输入数据序列中的中间部分,以及有效元素的数量即除数为x,并且除数的倒数为1/x。当值i大于n时,其对应于输入数据序列中的后部分,以及有效元素的数量即除数为(x+n-i-1),并且除数的倒数为1/(x+n-i-1)。
因此,可以通过创建将图12中所示的对应于值i的倒数存储为第i个元素的系数表div_tbl以及通过图13所示的程序获得来自系数表div_tbl的对应于值i的倒数并且将在部段中的元素的总和乘以倒数来计算平均值。在图13中,编码1301的处理对系数表div_tbl的第i个元素至第(i+m-1)个元素进行加载并且将其存储在SIMD寄存器vd中。对于每个相应的元素,编码1302的处理在SIMD寄存器vave中存储通过将存储在SIMD寄存器vsum中的部段的元素的总和乘以存储在SIMD寄存器Vd中的值所获得的平均值。
图14示出了与应用了上述处理的本实施方式中的移动平均处理有关的示例。在图14中,采用相同的附图标记表示与图9至图11以及图13中所示的部件相同的部件,并且省略了重复描述。应注意,在图14中,当获得部段的元素的总和时,对待减去的部分和进行存储的SIMD寄存器为vt2,以及存储来自输入缓冲区in_buf的加载数据以获得这个部分和的SIMD寄存器为vt1。当获得部段的元素的总和时,对待加上的部分和进行存储的SIMD寄存器为vu2,以及对来自输入缓冲区in_buf的加载数据进行存储以获得这个部分和的SIMD寄存器为vu1。
在图14中,编码1401的处理基于存储在SIMD寄存器vt1中的值通过部分和指令来计算部分和并且将其存储在SIMD寄存器中vt2中。此外,编码1402的处理基于存储在SIMD寄存器vu1中的值通过部分和指令来计算部分和并且将其存储在SIMD寄存器vu2中。对于每个相应的元素,编码1403的处理在SIMD寄存器vsum的值中加上SIMD寄存器vu2的值,并从中减去SIMD寄存器vt2的值,以计算部段的元素的总和并将结果存储(覆写)在SIMD寄存器vsum中。编码1404的处理将SIMD寄存器vsum的最后元素vsum[m-1]存储(覆写)在SIMD寄存器vsum的每个元素中。
所公开的移动平均处理可以通过分别计算输入数据序列的部分加法处理以并行地执行与移动平均处理相关的处理来提高处理效率。

Claims (8)

1.一种处理器,包括:
处理单元,所述处理单元并行地执行m个算术运算,m是2或更大的整数,以及所述处理单元基于第0个输入元素至第(m-1)个输入元素来执行计算所述第0个输入元素至第p个输入元素的和并且返回所述每个和作为第p个结果元素的部分和指令,p是0至m-1的整数,其中,所述处理单元执行移动平均处理,所述移动平均处理包括:
执行将输入数据序列的第i个元素至第(i+m-1)个元素作为所述第0个输入元素至所述第(m-1)个输入元素的所述部分和指令以获得第一向量数据,i是0和自然数之中的任意数;
执行将所述输入数据序列的第(i+x)个元素至第(i+x+m-1)个元素作为所述第0个输入元素至所述第(m-1)个输入元素的所述部分和指令以获得第二向量数据,x是自然数;
对于所述第0个元素至所述第(m-1)个元素中的每个元素并行地执行从所述输入数据序列的第i个元素至第(i+x-1)个元素的和中减去所述第一向量数据的第p个元素以及加上所述第二向量数据的第p个元素的运算,以并行地计算彼此不同的m个部段的元素的和;以及
根据所计算的所述部段的元素的和来计算所述输入数据序列的移动平均。
2.根据权利要求1所述的处理器,其中,
所述处理单元将执行所述部分和指令以获得所述第一向量数据、执行所述部分和指令以获得所述第二向量数据、执行计算m个部段的元素的和的运算以及计算所述输入数据序列的移动平均作为一个组反复地执行,同时每次使所述值i增加m;以及
在执行计算先前组的m个部段的元素的和的运算中的第(i+m)个元素至第(i+x+m-1)个元素的和被作为在执行计算下一组的m个部段的元素的和的运算中的所述输入数据序列的第i个元素至第(i+x-1)个元素的和,以执行所述算术运算。
3.根据权利要求2所述的处理器,其中,
所述输入数据序列包括第0个元素至第(n-1)个元素,n是2或更大的整数,以及
所述处理单元对所述输入数据序列进行扩展以使得在每个部段中的元素的数量为x,以计算所述移动平均。
4.根据权利要求3所述的处理器,其中,
所述处理单元包括存储所计算的移动平均的输出缓冲区,以及所述处理单元根据对所述输入数据序列的扩展来扩展所述输出缓冲区。
5.根据权利要求3所述的处理器,其中,
所述处理单元生成与所述输入数据序列的第0个元素至第(n-1)个元素对应的掩码位,并且所述处理单元执行与所述掩码位对应的元素的数据的加载处理和存储处理。
6.根据权利要求5所述的处理器,其中,
所述处理单元包括存储所计算的移动平均的输出缓冲区,以及所述处理单元根据对所述输入数据序列的扩展来扩展所述输出缓冲区。
7.根据权利要求1至6中任一项所述的处理器,其中,
所述处理单元包括存储每个部段的有效元素的数量的倒数的系数表,其中针对所述每个部段计算所述移动平均,以及在计算所述输入数据序列的移动平均的过程中所述处理单元通过将执行计算m个部段的元素的和的运算的结果乘以通过参考所述系数表而获得的倒数来计算移动平均。
8.一种处理器,包括:
算术运算单元,所述算术运算单元针对多个部段并行地计算输入数据序列的移动平均,其中,
所述算术运算单元:
对于第一单指令多数据寄存器的每个元素执行第一算术运算以计算所述输入数据序列的第i个元素至第(i+p)个元素的和并且将所述和存储作为所述第一单指令多数据寄存器中的第p个元素,i是在0和自然数之中的任意数,p是0至m-1的整数,以及m是2或更大的整数;
对于第二单指令多数据寄存器的每个元素执行第二算术运算以计算所述输入数据序列的第(i+x)个元素至第(i+x+p)个元素的和并且将所述和存储作为所述第二单指令多数据寄存器中的第p个元素,x是自然数;以及
对于第0个元素至第(m-1)个元素中的每个元素并行地执行第三算术运算,以执行从所述输入数据序列的第i个元素至第(i+x-1)个元素的和中减去所述第一单指令多数据寄存器的第p个元素以及加上所述第二单指令多数据寄存器的第p个元素的运算,以及将结果存储作为第三单指令多数据寄存器的第p个元素,以并行地计算彼此不同的m个部段的元素的和;以及
执行平均处理以根据存储在所述第三单指令多数据寄存器中的元素的和来计算平均值。
CN201410177617.0A 2013-05-23 2014-04-29 处理器中的移动平均处理及处理器 Pending CN104182207A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013-109210 2013-05-23
JP2013109210A JP6079433B2 (ja) 2013-05-23 2013-05-23 移動平均処理プログラム、及びプロセッサ

Publications (1)

Publication Number Publication Date
CN104182207A true CN104182207A (zh) 2014-12-03

Family

ID=51936204

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410177617.0A Pending CN104182207A (zh) 2013-05-23 2014-04-29 处理器中的移动平均处理及处理器

Country Status (3)

Country Link
US (1) US9436465B2 (zh)
JP (1) JP6079433B2 (zh)
CN (1) CN104182207A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107121581A (zh) * 2017-04-25 2017-09-01 电子科技大学 一种数据采集系统的数据处理方法
CN112215340A (zh) * 2019-07-11 2021-01-12 富士通株式会社 运算处理设备、控制方法以及计算机可读记录介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150052330A1 (en) * 2013-08-14 2015-02-19 Qualcomm Incorporated Vector arithmetic reduction
US10296489B2 (en) * 2014-12-27 2019-05-21 Intel Corporation Method and apparatus for performing a vector bit shuffle
US10460118B2 (en) 2016-08-30 2019-10-29 Workday, Inc. Secure storage audit verification system
US10187203B2 (en) 2016-08-30 2019-01-22 Workday, Inc. Secure storage encryption system
US10177908B2 (en) 2016-08-30 2019-01-08 Workday, Inc. Secure storage decryption system

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63187366A (ja) * 1987-01-30 1988-08-02 Oki Electric Ind Co Ltd 移動平均演算装置
JPH0793548B2 (ja) 1987-08-31 1995-10-09 三洋電機株式会社 標本化周波数変換回路
JPH10143495A (ja) * 1996-11-06 1998-05-29 Nec Corp 平均値演算方法及びその演算装置
JPH10285502A (ja) 1997-04-01 1998-10-23 Nikon Corp 情報処理システム、情報処理装置、情報処理方法、および、記憶媒体
US7627624B2 (en) * 2007-01-17 2009-12-01 Chester Carroll Digital signal averaging using parallel computation structures
JP2011233085A (ja) 2010-04-30 2011-11-17 Toyota Motor Corp プロセッサ、電子制御ユニット、負荷分散方法
JP2012075023A (ja) 2010-09-29 2012-04-12 On Semiconductor Trading Ltd 受信装置
WO2013095634A1 (en) * 2011-12-23 2013-06-27 Intel Corporation Systems, apparatuses, and methods for performing a horizontal partial sum in response to a single instruction

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107121581A (zh) * 2017-04-25 2017-09-01 电子科技大学 一种数据采集系统的数据处理方法
CN107121581B (zh) * 2017-04-25 2019-07-12 电子科技大学 一种数据采集系统的数据处理方法
CN112215340A (zh) * 2019-07-11 2021-01-12 富士通株式会社 运算处理设备、控制方法以及计算机可读记录介质

Also Published As

Publication number Publication date
US20140351566A1 (en) 2014-11-27
US9436465B2 (en) 2016-09-06
JP6079433B2 (ja) 2017-02-15
JP2014229133A (ja) 2014-12-08

Similar Documents

Publication Publication Date Title
CN104182207A (zh) 处理器中的移动平均处理及处理器
CN111213125B (zh) 使用simd指令进行高效的直接卷积
JP5089776B2 (ja) 浮動小数点演算のための再構成アレイプロセッサ
US20180107630A1 (en) Processor and method for executing matrix multiplication operation on processor
US9104633B2 (en) Hardware for performing arithmetic operations
JP2016517570A (ja) マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン、ならびに関連ベクトルプロセッサ、システム、および方法
JP2016537723A (ja) フィルタベクトル処理動作のためのタップ付き遅延線を利用するベクトル処理エンジンと、関連するベクトル処理システムおよび方法
US11507531B2 (en) Apparatus and method to switch configurable logic units
EP4318275A1 (en) Matrix multiplier and method for controlling matrix multiplier
WO2013056980A1 (en) Vector processing system comprising a replicating subsystem and method
US9477442B2 (en) Processor and control method of processor
CN112074810B (zh) 并行处理设备
US10387118B2 (en) Arithmetic operation unit and method of controlling arithmetic operation unit
CN111178492B (zh) 计算装置及相关产品、执行人工神经网络模型的计算方法
US20130254516A1 (en) Arithmetic processing unit
US20130262819A1 (en) Single cycle compare and select operations
Rákossy et al. Exploiting scalable CGRA mapping of LU for energy efficiency using the Layers architecture
Waidyasooriya et al. FPGA-Oriented Parallel Programming
Wang et al. Combining Multiple Optimized FPGA-based Pulsar Search Modules Using OpenCL
Odendahl et al. A next generation digital signal processor for European space missions
Deepika et al. Microarchitecture based RISC-V Instruction Set Architecture for Low Power Application
US20240086192A1 (en) Special-purpose digital-compute hardware for efficient element-wise aggregation, scaling and offset
Rasnayake et al. Improving Memory Access Locality for Vectorized Bit-Serial Matrix Multiplication in Reconfigurable Computing
Sasnayake Mudiyanselage et al. Improving Memory Access Locality for Vectorized Bit-Serial Matrix Multiplication in Reconfigurable Computing
J. Molendijk et al. Low-and Mixed-Precision Inference Accelerators

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20141203