JP6079433B2 - 移動平均処理プログラム、及びプロセッサ - Google Patents

移動平均処理プログラム、及びプロセッサ Download PDF

Info

Publication number
JP6079433B2
JP6079433B2 JP2013109210A JP2013109210A JP6079433B2 JP 6079433 B2 JP6079433 B2 JP 6079433B2 JP 2013109210 A JP2013109210 A JP 2013109210A JP 2013109210 A JP2013109210 A JP 2013109210A JP 6079433 B2 JP6079433 B2 JP 6079433B2
Authority
JP
Japan
Prior art keywords
elements
sum
moving average
input data
data series
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.)
Expired - Fee Related
Application number
JP2013109210A
Other languages
English (en)
Other versions
JP2014229133A (ja
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
Priority to JP2013109210A priority Critical patent/JP6079433B2/ja
Priority to US14/246,757 priority patent/US9436465B2/en
Priority to CN201410177617.0A priority patent/CN104182207A/zh
Publication of JP2014229133A publication Critical patent/JP2014229133A/ja
Application granted granted Critical
Publication of JP6079433B2 publication Critical patent/JP6079433B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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 OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • G06F9/30038Instructions to perform operations on packed data, e.g. vector, tile or matrix operations using a mask

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • Advance Control (AREA)
  • Complex Calculations (AREA)

Description

本発明は、移動平均処理プログラム、及びプロセッサに関する。
近年、無線通信技術では様々な方式が標準化されており、様々な無線通信方式に対応可能なようにソフトウェア無線というプロセッサで信号処理を行うものがある。従来の無線通信処理は、ハードウェア・ロジックで大量のデータを並列処理することで、高い通信性能を実現していた。また、モバイル機器に搭載されるため、低消費電力化の点から動作周波数を高くすることができない。そのため、プロセッサを用いてソフトウェア無線処理を行う場合も、大量のデータを並列に処理することで性能を維持する必要があり、SIMD(Single Instruction Multiple Data)型のプロセッサが使用されることが多い。
無線通信処理における信号処理のなかで、移動平均を求める処理がある。移動平均処理は、移動平均の対象とする区間の要素数をnとすると、入力データ系列のインデックスiに対して、iの値をインクリメントしながら、入力データ系列のi〜(i+n−1)番目の要素(データ)の平均値を順次求める処理である。移動平均処理は、i〜(i+n−1)番目の要素の総和を求めた後、(i+n)番目の要素を加算するとともにi番目の要素を減算して(i+1)〜(i+n)番目の要素の総和を求め、区間の要素数nで除算し平均値を求めることで効率的に処理を実行することができる(例えば、特許文献1参照)。
特開平10−143495号公報 特開2012−75023号公報 特開平1−61114号公報 特開平10−285502号公報 特開2011−233085号公報
しかし、i〜(i+n−1)番目についての演算結果に対し加減算等を行い、次の(i+1)〜(i+n)番目についての移動平均を求めていく移動平均処理は、データの依存関係から並列化が困難であり、SIMD型のプロセッサで効率的に処理することが難しい。本発明は、移動平均処理に係る演算処理を並列化して移動平均処理の処理効率を向上させることを目的とする。
移動平均処理プログラムの一態様は、m個(mは2以上の整数)の演算処理を並列に実行し、かつ0番目から(m−1)番目の入力要素を基に、0番目からp番目(pは0〜m−1の整数)の入力要素の和を算出してp番目の結果要素としてそれぞれ返す部分総和命令を実行するプロセッサに、以下の処理を実行させる。入力データ系列のi番目から(i+m−1)番目(iは0及び自然数のうちの任意の数)の要素を0番目から(m−1)番目の入力要素とする部分総和命令を実行して第1のベクトルデータを取得する第1の演算処理と、入力データ系列の(i+x)番目から(i+x+m−1)番目(xは自然数)の要素を0番目から(m−1)番目の入力要素とする前記部分総和命令を実行して第2のベクトルデータを取得する第2の演算処理と、入力データ系列のi番目から(i+x−1)番目の要素の和に、第1のベクトルデータのp番目の要素を減算し、第2のベクトルデータのp番目の要素を加算する処理を、0番目から(m−1)番目の各要素について並列に行うことにより、互いに異なるm個の区間について要素の和を並列に算出する第3の演算処理と、算出した各区間の要素の和から入力データ系列の移動平均を算出する移動平均処理とを実行させる。
開示の移動平均処理プログラムは、入力データ系列の部分的な加算処理を別に計算することで、移動平均処理に係る処理を並列して実行し処理効率を向上させることができる。
本発明の実施形態におけるプロセッサの構成例を示す図である。 本実施形態における移動平均処理の並列化を説明するための図である。 本実施形態における部分総和命令の演算を説明するための図である。 本実施形態における部分総和命令実行時のプロセッサを示す模式図である。 本実施形態における移動平均処理(中部分処理)の例を示す図である。 本実施形態における移動平均処理(中部分処理)を示すフローチャートである。 本実施形態における移動平均処理の例を示す図である。 本実施形態におけるマスク値設定命令を説明するための図である。 本実施形態における移動平均処理でのロード処理に係るプログラムの例を示す図である。 本実施形態における移動平均処理でのロード処理に係るプログラムの例を示す図である。 本実施形態における移動平均処理でのストア処理に係るプログラムの例を示す図である。 本実施形態における係数テーブルを説明するための図である。 本実施形態における移動平均処理での平均化処理に係るプログラムの例を示す図である。 本実施形態における移動平均処理に係るプログラムの例を示す図である。 移動平均処理の例を示す図である。 図15に示す移動平均処理に係るプログラムを示す図である。 本実施形態における部分総和命令実行時のプロセッサの他の例を示す模式図である。
以下、本発明の実施形態を図面に基づいて説明する。
図15は、移動平均処理の例を示す図である。図15に示す移動平均処理は、入力バッファin_bufに格納されている1つの入力データ系列に対して移動平均を求め、求めた移動平均を出力バッファout_bufに格納する。移動平均の対象とする区間は、入力データ系列における前部分、中部分、後部分で異なる。区間の要素数は、前部分では初期区間をaとして、その後、順次xまで1ずつ増加し、中部分ではxであり、後部分では最終区間をbまで1ずつ減少する。
入力データ系列における前部分では、入力バッファin_buf[0]〜in_buf[a-1]のa個の要素(入力データ)の平均値が出力バッファout_buf[0]に格納され、入力バッファin_buf[0]〜in_buf[a]の(a+1)個の要素の平均値が出力バッファout_buf[1]に格納される。要素数が増加する、入力データ系列における前部分では、新規の要素を加算するのみで最古の要素を減算せず、除数を1ずつ増加させて移動平均を求める。このようにして移動平均を順次求めていき、入力バッファin_buf[0]〜in_buf[x-2]の(x−1)個の要素の平均値が出力バッファout_buf[x-a-1]に格納される。
また、入力データ系列における中部分では、入力バッファin_buf[0]〜in_buf[x-1]のx個の要素の平均値が出力バッファout_buf[x-a]に格納され、入力バッファin_buf[1]〜in_buf[x]のx個の要素の平均値が出力バッファout_buf[x-a+1]に格納される。入力データ系列における中部分では、新規の要素を加算し、最古の要素を減算して、xで除算して移動平均を求める。このようにして移動平均を順次求めていき、入力バッファin_buf[n-x]〜in_buf[n-1]のx個の要素の平均値が出力バッファout_buf[n-a]に格納される。
また、入力データ系列における後部分では、入力バッファin_buf[n-x+1]〜in_buf[n-1]の(x−1)個の要素の平均値が出力バッファout_buf[n-a+1]に格納される。要素数が減少する、入力データ系列における後部分では、最古の要素を減算するのみで新規の要素を加算せず、除数を1ずつ減少させて移動平均を求める。このようにして移動平均を順次求めていき、入力バッファin_buf[n-b-1]〜in_buf[n-1]の(b+1)個の要素の平均値が出力バッファout_buf[n+x-a-b-1]に格納され、入力バッファin_buf[n-b]〜in_buf[n-1]のb個の要素の平均値が出力バッファout_buf[n+x-a-b]に格納される。
前述の図15に示した移動平均処理に係るプログラム例を図16に示す。事前処理1601では、入力バッファin_buf[0]から入力バッファin_buf[a-2]までの各要素を加算して総和値sumが算出される。前部分処理1602では、新規の要素である入力バッファin_buf[i]の要素を総和値sumに加算した後にカウント値cntで除算して求めた平均値avrが、出力バッファout_buf[j]に格納される。中部分処理1603では、総和値sumに新規の要素である入力バッファin_buf[i]の要素を加算し、最古の要素である入力バッファin_buf[i-x]の要素を減算した後に値xで除算して求めた平均値avrが、出力バッファout_buf[j]に格納される。後部分処理1604では、最古の要素である入力バッファin_buf[i-x]の要素を総和値sumから減算した後にカウント値cntで除算して求めた平均値avrが、出力バッファout_buf[j]に格納される。
図16に示したような移動平均処理では、前の演算結果に対して、新規の要素を1つ加算したり最古の要素を1つ減算したりするために、演算処理を並列化することが困難であり、SIMD型のプロセッサで効率良く処理することが難しい。以下に説明する実施形態では、入力データ系列の部分的な加算処理を別個に計算することで、移動平均処理に係る処理を並列して実行可能にし、処理効率の向上を図る。
図1は、本発明の実施形態におけるプロセッサの構成例を示す図である。本実施形態におけるプロセッサ10は、例えば並列に演算処理を実行可能なSIMD型のプロセッサであり、m個のデータを並列処理するSIMD型のプロセッサを一例として示している。プロセッサ10は、プログラムカウンタ(PC)12、命令デコーダ(DECODER)14、SIMDレジスタファイル16、SIMDパイプライン・レジスタ18A、18B、22、及び演算処理部21を有する。演算処理部21は、複数の演算器(ALU)20−0、20−1、…、20−(m−1)を有する。
プロセッサ10は、命令メモリ(IRAM)30からプログラムカウンタ12のカウント値に応じて読み出された命令を命令デコーダ14でデコードする。そして、プロセッサ10は、命令デコーダ14でのデコード結果に応じて、演算処理に用いるデータをレジスタファイル16のSIMDレジスタから読み出してSIMDパイプライン・レジスタ18A、18Bに格納する。演算処理に必要なデータ等は、データメモリ(DRAM)40から適宜読み出されてレジスタファイル16のSIMDレジスタに格納されている。
また、プロセッサ10は、SIMDパイプライン・レジスタ18A、18Bに格納したデータを用い、命令デコーダ14でのデコード結果に応じた演算処理を演算処理部21の演算器20−0、20−1、…、20−(m−1)で実行し、演算結果をSIMDパイプライン・レジスタ22に格納する。SIMDパイプライン・レジスタ22に格納された演算結果は、SIMDレジスタファイル16に書き込まれる。
ここで、入力データ系列における中部分の移動平均処理でのx個の要素の平均値を求める処理に注目すると、x個の要素の和を求める演算は、図2(A)及び(B)に示すように新規の要素を加算し、最古の要素を減算する演算を行う。本実施形態では、図2(B)に示すように、x個の要素の和を求める演算をm並列で行うために、各演算において減算する古い要素の総和201及び加算する新しい要素の総和202を別に計算し、それを用いてx個の要素の和を求めることで並列化する。
図2に示す例は、x個の要素の和を求める演算を4並列で行う例であり、減算する古い要素の総和201として、t番目の要素、t番目と(t+1)番目の要素の総和、t番目から(t+2)番目の要素の総和、及びt番目から(t+3)番目の要素の総和を求める。また、加算する新しい要素の総和202として、u番目の要素、u番目と(u+1)番目の要素の総和、u番目から(u+2)番目の要素の総和、及びu番目から(u+3)番目の要素の総和を求める。
そして、t番目から(u−1)番目の要素の総和に対して、古い要素の総和201を減算する処理及び新しい要素の総和202を加算する処理をそれぞれ並列に行うことでx個の要素の和を求める演算を並列化する。この減算する古い要素の総和や加算する新しい要素の総和を求めるために、本実施形態では、m個のデータを並列処理可能なプロセッサにおいて、0〜(m−1)番目の要素の部分総和を返す部分総和命令を設ける。
部分総和命令は、SIMDレジスタvsに格納されているm個の要素(データ)から部分総和を算出し、SIMDレジスタvrに格納する命令である。すなわち、部分総和命令を実行すると、SIMDレジスタvsの0番目の入力要素がベクトルデータの0番目の結果要素としてSIMDレジスタvrに格納され、SIMDレジスタvsの0番目と1番目の入力要素の加算結果がベクトルデータの1番目の結果要素としてSIMDレジスタvrに格納される。また、SIMDレジスタvsの0番目からm番目の入力要素の加算結果がベクトルデータのm番目の結果要素としてSIMDレジスタvrに格納される。すなわち、部分総和命令では、SIMDレジスタvsの0番目からk番目(kは整数)の入力要素の加算結果がベクトルデータのk番目の結果要素としてSIMDレジスタvrに格納される。
図3(A)は、m=4としたときの部分総和命令の演算処理を行う演算回路の構成例を示す図である。SIMDレジスタvsの0番目の要素vs[0]がSIMDレジスタvrの0番目の要素vr[0]に入力される。加算器301は、SIMDレジスタvsの0番目の要素vs[0]と1番目の要素vs[1]が入力され、その出力がSIMDレジスタvrの1番目の要素vr[1]に入力される。加算器302は、加算器301の出力とSIMDレジスタvsの2番目の要素vs[2]が入力され、その出力がSIMDレジスタvrの2番目の要素vr[2]に入力される。また、加算器303は、加算器302の出力とSIMDレジスタvsの3番目の要素vs[3]が入力され、その出力がSIMDレジスタvrの3番目の要素vr[3]に入力される。このようにして図3(A)に示す演算回路は、m=4としたときの部分総和命令に応じた図3(B)に示す演算処理を実行する。
なお、部分総和命令の演算処理を行う演算回路の構成は、図3(A)に示した回路に限定されるものではなく、図3(B)に示す演算処理を実行可能な回路構成であれば良い。例えば、図3(C)に示すような回路でも良い。図3(C)は、m=4としたときの部分総和命令の演算処理を行う演算回路の他の構成例を示す図である。SIMDレジスタvsの0番目の要素vs[0]がSIMDレジスタvrの0番目の要素vr[0]に入力される。加算器311は、SIMDレジスタvsの0番目の要素vs[0]と1番目の要素vs[1]が入力される。加算器311の出力がSIMDレジスタvrの1番目の要素vr[1]に入力される。加算器312は、加算器311の出力とSIMDレジスタvsの2番目の要素vs[2]が入力される。加算器312の出力がSIMDレジスタvrの2番目の要素vr[2]に入力される。また、加算器313は、SIMDレジスタvsの2番目の要素vs[2]と3番目の要素vs[3]が入力される。加算器314は、加算器311の出力と加算器313の出力が入力される。加算器314の出力がSIMDレジスタvrの3番目の要素vr[3]に入力される。図3(C)に示した回路構成では、部分総和命令の演算処理に係る加算の段数が低減できる。
図4は、本実施形態における部分総和命令実行時のプロセッサを示す模式図である。図4においても、m=4としたときの部分総和命令実行時のプロセッサを一例として示している。図4において、図1に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。演算処理部21が有する複数の演算器により複数の加算器(ADD)24−1、24−2、24−3が実現される。
SIMDパイプライン・レジスタ18の0番目の要素が、SIMDパイプライン・レジスタ22の0番目の要素として入力される。SIMDパイプライン・レジスタ18の1番目の要素と0番目の要素が加算器24−1に入力され、加算器24−1の出力がSIMDパイプライン・レジスタ22の1番目の要素として入力される。SIMDパイプライン・レジスタ18の2番目の要素と加算器24−1の出力が加算器24−2に入力され、加算器24−2の出力がSIMDパイプライン・レジスタ22の2番目の要素として入力される。SIMDパイプライン・レジスタ18の3番目の要素と加算器24−2の出力が加算器24−3に入力され、加算器24−3の出力がSIMDパイプライン・レジスタ22の3番目の要素として入力される。なお、図4においては、演算処理部21において3段の加算処理が行われるが1サイクルで実行可能である。
図17は、本実施形態における部分総和命令実行時のプロセッサの他の例を示す模式図である。図17においても、m=4としたときの部分総和命令実行時のプロセッサを一例として示しており、図4(C)に示したように部分総和命令の演算処理を行う例に対応するものである。図17において、図1、図4に示した構成要素と同一の機能を有する構成要素には同一の符号を付し、重複する説明は省略する。演算処理部21Bが有する複数の演算器により複数の加算器(ADD)24B−1、24B−2、24B−3、24B−4が実現される。
SIMDパイプライン・レジスタ18の0番目の要素が、SIMDパイプライン・レジスタ22の0番目の要素として入力される。SIMDパイプライン・レジスタ18の1番目の要素と0番目の要素が加算器24B−1に入力され、加算器24B−1の出力がSIMDパイプライン・レジスタ22の1番目の要素として入力される。SIMDパイプライン・レジスタ18の2番目の要素と加算器24B−1の出力が加算器24B−2に入力され、加算器24B−2の出力がSIMDパイプライン・レジスタ22の2番目の要素として入力される。また、SIMDパイプライン・レジスタ18の3番目の要素と2番目の要素が加算器24B−3に入力される。加算器24B−1の出力と加算器24B−3の出力が加算器24B−4に入力され、加算器24B−4の出力がSIMDパイプライン・レジスタ22の3番目の要素として入力される。なお、図17においても、演算処理部21における加算処理は1サイクルで実行可能である。
図5は、本実施形態における移動平均処理(中部分処理)の例を示す図であり、m=4(4並列)の場合を例として示している。プロセッサ10は、部分総和命令によりt〜(t+3)番目の要素の部分総和及びu〜(u+3)番目の要素の部分総和をそれぞれ求める。そして、プロセッサ10は、図5(A)に示す1つ前での最後の要素の演算結果であるt番目から(u−1)番目の要素の総和に対して、部分総和命令により求めたu〜(u+3)番目の要素の部分総和を加算する((図5(B))。さらに、プロセッサ10は、図5(B)に示す加算結果に対して、部分総和命令により求めたt〜(t+3)番目の要素の部分総和を減算する((図5(C))。これにより、(t+1)番目からu番目の要素の総和を求める演算、(t+2)番目から(u+1)番目の要素の総和を求める演算、(t+3)番目から(u+2)番目の要素の総和を求める演算、及び(t+4)番目から(u+3)番目の要素の総和を求める演算を並列して実行することができる。
同様にして、プロセッサ10は、部分総和命令により(t+4)〜(t+7)番目の要素の部分総和及び(u+4)〜(u+7)番目の要素の部分総和をそれぞれ求める。そして、プロセッサ10は、図5(D)に示す1つ前(図5(C))での最後の要素の演算結果である(t+4)番目から(u+3)番目の要素の総和に対して、部分総和命令により求めた(u+4)〜(u+7)番目の要素の部分総和を加算する((図5(E))。さらに、プロセッサ10は、図5(E)に示す加算結果に対して、部分総和命令により求めた(t+4)〜(t+7)番目の要素の部分総和を減算する((図5(F))。これにより、(t+5)番目から(u+4)番目の要素の総和を求める演算、(t+6)番目から(u+5)番目の要素の総和を求める演算、(t+7)番目から(u+6)番目の要素の総和を求める演算、及び(t+8)番目から(u+7)番目の要素の総和を求める演算を並列して実行することができる。
例えば、図5に示したように要素の総和を求める演算を4並列で実行すると、中部分処理での処理効率は4倍になる。なお、図5においては、1つ前での演算結果に対して新しい要素の部分総和を加算した後に古い要素の部分総和を減算する例を示したが、1つ前での演算結果に対して古い要素の部分総和を減算した後に新しい要素の部分総和を加算するようにしても良い。
図6は、本実施形態における移動平均処理(中部分処理)を示すフローチャートである。プロセッサ10は、前部分処理が終了して中部分処理に進むと、ステップS601にて、前部分処理における最後の要素の演算結果を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レジスタvr0にSIMDレジスタvr1を加算し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の配列をインデックスが(−a+1)まで負側に仮想的に拡張する。
このように入力バッファin_bufの配列を仮想的に拡張することで、入力データ系列における前部分、中部分、後部分での移動平均処理における区間の要素数をxに揃えることができる。また、出力バッファout_bufの配列を仮想的に拡張することで、事前処理についても各区間で平均値を求める通常の処理と同様の処理で実行することができる。したがって、移動平均処理において条件分岐がなくなり、また1つのループ処理で移動平均処理が実行可能になるので、移動平均処理に係る処理効率を向上させることができる。
ここで、拡張された入力バッファin_bufの配列における負のインデックス、すなわち入力バッファin_bufの(−x)番目から(−1)番目の各要素については、マスク付きのロード命令により読み出しを抑制して0とする。同様に、拡張された入力バッファin_bufにおけるn以上のインデックス、すなわち入力バッファin_bufのn番目から(n+x−b−1)番目の各要素については、マスク付きのロード命令により読み出しを抑制して0とする。また、拡張された出力バッファout_bufの配列における負のインデックス、すなわち出力バッファout_bufの(−a+1)番目から(−1)番目の各要素については、マスク付きのストア命令により書き込みを抑制する。
マスク付きのロード命令は、マスクレジスタmrの上位側からxビット目の値が0の場合には0を、値が1の場合にはロードデータをSIMDレジスタのx番目の要素に格納する。また、マスク付きのストア命令は、マスクレジスタmrの上位側からxビット目の値が1の場合のみ、SIMDレジスタのx番目の要素のストア処理を行う(値が0の場合には何もしない)。なお、本実施形態では、mビットのマスクレジスタmrにおいて、最上位のビットを0ビット目とし、最下位のビットを(m−1)ビット目とする。
マスクレジスタmrに値を設定するマスク値設定命令、及びマスク値設定命令_Rについて説明する。図8(A)は、マスク値設定命令を説明するための図である。マスク値設定命令は、値が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に設定する。
図8(B)は、マスク値設定命令_Rを説明するための図である。マスク値設定命令_Rは、値がk(0<k<m)の場合に、マスクレジスタmrの0ビット目から(m−k−1)ビット目までの値を0に設定し、(m−k)ビット目から(m−1)ビット目までの値を1に設定する。すなわち、マスク値設定命令_Rは、値がkの場合には、マスクレジスタmrの下位側からkビットの値を1に設定し、残りの(m−k)ビットの値を0に設定する。また、マスク値設定命令_Rは、値が0以下の場合には、マスクレジスタmrのすべてのビットの値を0に設定し、値がm以上の場合には、マスクレジスタ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の処理は、値idx0にmを加算し新たな値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に含まれる出力バッファの(−a+1)番目から(−1)番目に対応する要素のストア処理が抑制される。図11において、コード1101の処理は、マスク値設定命令_Rにより値(idx2+m)に応じたマスク値をマスクレジスタm2に設定する。また、コード1102の処理は、マスクレジスタm2の値に応じて、出力バッファout_bufの(idx2)番目から(idx2+m−1)番目に対応する要素に移動平均結果をストアするストア処理を行う。また、コード1103の処理は、値idx2にmを加算し新たな値idx2とする。この図11に示したプログラムを実行することで、出力バッファout_bufの(−a+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レジスタvsumに格納されている区間の要素の総和とSIMDレジスタvdに格納されている値とを乗算して得られる平均値を、SIMDレジスタvaveに格納する。
以上説明した各処理を適用した本実施形態における移動平均処理に係るプログラムの例を図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の各要素に格納する(上書きする)。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の諸態様を付記として以下に示す。
(付記1)
m個(mは2以上の整数)の演算処理を並列に実行し、かつ0番目から(m−1)番目の入力要素を基に、0番目からp番目(pは0〜m−1の整数)の前記入力要素の和を算出してp番目の結果要素としてそれぞれ返す部分総和命令を実行するプロセッサに、
入力データ系列のi番目から(i+m−1)番目(iは0及び自然数のうちの任意の数)の要素を0番目から(m−1)番目の前記入力要素とする前記部分総和命令を実行して第1のベクトルデータを取得する第1の演算処理と、
前記入力データ系列の(i+x)番目から(i+x+m−1)番目(xは自然数)の要素を0番目から(m−1)番目の前記入力要素とする前記部分総和命令を実行して第2のベクトルデータを取得する第2の演算処理と、
前記入力データ系列のi番目から(i+x−1)番目の要素の和に、前記第1のベクトルデータのp番目の要素を減算し、前記第2のベクトルデータのp番目の要素を加算する処理を、0番目から(m−1)番目の各要素について並列に行うことにより、互いに異なるm個の区間について要素の和を並列に算出する第3の演算処理と、
算出した各区間の要素の和から前記入力データ系列の移動平均を算出する移動平均処理とを実行させることを特徴とする移動平均処理プログラム。
(付記2)
値iをmずつ増加させて前記第1の演算処理、前記第2の演算処理、前記第3の演算処理、及び前記移動平均処理を1組として繰り返し実行し、
前の組の前記第3の演算処理における(i+m)番目から(i+x+m−1)番目の要素についての和を、次の組の前記第3の演算処理における前記入力データ系列のi番目から(i+x−1)番目の要素の和として演算を行うことを特徴とする付記1記載の移動平均処理プログラム。
(付記3)
前記入力データ系列は0番目から(n−1)番目(nは2以上の整数)の要素を有し、
前記入力データ系列を各区間についての要素数をx個とするように拡張し前記移動平均を算出することを特徴とする付記2記載の移動平均処理プログラム。
(付記4)
前記入力データ系列の0番目から(n−1)番目の要素に応じたマスクビットを生成し、
前記マスクビットに応じた要素のデータのロード処理及びストア処理を行うことを特徴とする付記3記載の移動平均処理プログラム。
(付記5)
前記入力データ系列を(−x)番目まで拡張し、前記入力データ系列の(−x)番目から(−1)番目の要素については前記マスクビットにより要素のロード処理を抑制することを特徴とする付記4記載の移動平均処理プログラム。
(付記6)
前記移動平均を求める最終の区間の要素数がb(bはx以下の任意の整数)である場合に、入力データ系列を(n+x−b−1)番目まで拡張し、入力データ系列のn番目から(n+x−b−1)番目までの要素のロード処理を抑制することを特徴とする付記4記載の移動平均処理プログラム。
(付記7)
算出された移動平均を格納する出力バッファを有し、
前記入力データ系列の拡張に応じて、前記出力バッファを拡張したことを特徴とする付記3記載の移動平均処理プログラム。
(付記8)
前記移動平均を求める初期の区間の要素数がa(aはx以下の任意の整数)である場合に、前記出力バッファの系列を(−a+1)番目まで拡張し、
前記出力バッファの系列の(−a+1)番目から(−1)番目の要素のストア処理を抑制することを特徴とする付記4記載の移動平均処理プログラム。
(付記9)
前記移動平均を算出する各区間の有効な要素数の逆数を格納した係数テーブルを有し、
前記平均化処理では、前記第3の演算処理の結果に、前記係数テーブルを参照して得られる逆数を乗算し移動平均を算出することを特徴とする付記1記載の移動平均処理プログラム。
(付記10)
前記プロセッサは、SIMD型のプロセッサであることを特徴とする付記4記載の移動平均処理プログラム。
(付記11)
入力データ系列の移動平均を複数の区間について並列に算出する演算処理部を有し、
前記演算処理部は、
第1のSIMDレジスタの各要素に対して、前記入力データ系列のi番目から(i+p)番目(iは0及び自然数のうちの任意の数、pは0〜m−1の整数、mは2以上の整数)の要素の和を算出して前記第1のSIMDレジスタにp番目の要素として格納する第1の演算処理と、
第2のSIMDレジスタの各要素に対して、前記入力データ系列の(i+x)番目から(i+x+p)番目(xは自然数)の要素の和を算出して前記第2のSIMDレジスタにp番目の要素として格納する第2の演算処理と、
前記入力データ系列のi番目から(i+x−1)番目の要素の和に、前記第2のSIMDレジスタのp番目の要素を加算し、前記第1のSIMDレジスタのp番目の要素を減算して第3のSIMDレジスタにp番目の要素として格納する処理を0番目から(m−1)番目の各要素について並列に行うことにより、互いに異なるm個の区間について要素の和を並列に算出する第3の演算処理と、
前記第3のSIMDレジスタに格納された要素の和から平均値を算出する平均化処理とを実行することを特徴とするプロセッサ。
(付記12)
前記入力データ系列は0番目から(n−1)番目(nは2以上の整数)の要素を有し、
前記入力データ系列を各区間についての要素数をx個とするように拡張し前記平均値を算出することを特徴とする付記11記載のプロセッサ。
(付記13)
前記入力データ系列の0番目から(n−1)番目の要素に応じたマスクビットを生成し、
前記マスクビットに応じた要素のデータのロード処理及びストア処理を行うことを特徴とする付記12記載のプロセッサ。
(付記14)
前記移動平均を算出する各区間の有効な要素数の逆数を格納した係数テーブルを有し、
前記平均化処理では、前記第3の演算処理の結果に、前記係数テーブルを参照して得られる逆数を乗算し移動平均を算出することを特徴とする付記11記載のプロセッサ。
(付記15)
前記プロセッサは、SIMD型のプロセッサであることを特徴とする付記11記載のプロセッサ。
10 プロセッサ
12 プログラムカウンタ
14 命令デコーダ
16 レジスタファイル
18、22 SIMDレジスタ
20 演算器
21 演算処理部
24 加算器
30 命令メモリ
40 データメモリ

Claims (7)

  1. m個(mは2以上の整数)の演算処理を並列に実行し、かつ0番目から(m−1)番目の入力要素を基に、0番目からp番目(pは0〜m−1の整数)の前記入力要素の和を算出してp番目の結果要素としてそれぞれ返す部分総和命令を実行するプロセッサに、
    入力データ系列のi番目から(i+m−1)番目(iは0及び自然数のうちの任意の数)の要素を0番目から(m−1)番目の前記入力要素とする前記部分総和命令を実行して第1のベクトルデータを取得する第1の演算処理と、
    前記入力データ系列の(i+x)番目から(i+x+m−1)番目(xは自然数)の要素を0番目から(m−1)番目の前記入力要素とする前記部分総和命令を実行して第2のベクトルデータを取得する第2の演算処理と、
    前記入力データ系列のi番目から(i+x−1)番目の要素の和に、前記第1のベクトルデータのp番目の要素を減算し、前記第2のベクトルデータのp番目の要素を加算する処理を、0番目から(m−1)番目の各要素について並列に行うことにより、互いに異なるm個の区間について要素の和を並列に算出する第3の演算処理と、
    算出した各区間の要素の和から前記入力データ系列の移動平均を算出する移動平均処理とを実行させることを特徴とする移動平均処理プログラム。
  2. 値iをmずつ増加させて前記第1の演算処理、前記第2の演算処理、前記第3の演算処理、及び前記移動平均処理を1組として繰り返し実行し、
    前の組の前記第3の演算処理における(i+m)番目から(i+x+m−1)番目の要素についての和を、次の組の前記第3の演算処理における前記入力データ系列のi番目から(i+x−1)番目の要素の和として演算を行うことを特徴とする請求項1記載の移動平均処理プログラム。
  3. 前記入力データ系列は0番目から(n−1)番目(nは2以上の整数)の要素を有し、
    前記入力データ系列を各区間についての要素数をx個とするように拡張し前記移動平均を算出することを特徴とする請求項2記載の移動平均処理プログラム。
  4. 前記入力データ系列の0番目から(n−1)番目の要素に応じたマスクビットを生成し、
    前記マスクビットに応じた要素のデータのロード処理及びストア処理を行うことを特徴とする請求項3記載の移動平均処理プログラム。
  5. 算出された移動平均を格納する出力バッファを有し、
    前記入力データ系列の拡張に応じて、前記出力バッファを拡張したことを特徴とする請求項3又は4記載の移動平均処理プログラム。
  6. 前記移動平均を算出する各区間の有効な要素数の逆数を格納した係数テーブルを有し、
    前記平均化処理では、前記第3の演算処理の結果に、前記係数テーブルを参照して得られる逆数を乗算し移動平均を算出することを特徴とする請求項1〜5の何れか1項に記載の移動平均処理プログラム。
  7. 入力データ系列の移動平均を複数の区間について並列に算出する演算処理部を有し、
    前記演算処理部は、
    第1のSIMDレジスタの各要素に対して、前記入力データ系列のi番目から(i+p)番目(iは0及び自然数のうちの任意の数、pは0〜m−1の整数、mは2以上の整数)の要素の和を算出して前記第1のSIMDレジスタにp番目の要素として格納する第1の演算処理と、
    第2のSIMDレジスタの各要素に対して、前記入力データ系列の(i+x)番目から(i+x+p)番目(xは自然数)の要素の和を算出して前記第2のSIMDレジスタにp番目の要素として格納する第2の演算処理と、
    前記入力データ系列のi番目から(i+x−1)番目の要素の和に、前記第2のSIMDレジスタのp番目の要素を加算し、前記第1のSIMDレジスタのp番目の要素を減算して第3のSIMDレジスタにp番目の要素として格納する処理を0番目から(m−1)番目の各要素について並列に行うことにより、互いに異なるm個の区間について要素の和を並列に算出する第3の演算処理と、
    前記第3のSIMDレジスタに格納された要素の和から平均値を算出する平均化処理とを実行することを特徴とするプロセッサ。
JP2013109210A 2013-05-23 2013-05-23 移動平均処理プログラム、及びプロセッサ Expired - Fee Related JP6079433B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013109210A JP6079433B2 (ja) 2013-05-23 2013-05-23 移動平均処理プログラム、及びプロセッサ
US14/246,757 US9436465B2 (en) 2013-05-23 2014-04-07 Moving average processing in processor and processor
CN201410177617.0A CN104182207A (zh) 2013-05-23 2014-04-29 处理器中的移动平均处理及处理器

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
JP2014229133A JP2014229133A (ja) 2014-12-08
JP6079433B2 true JP6079433B2 (ja) 2017-02-15

Family

ID=51936204

Family Applications (1)

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

Country Status (3)

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

Families Citing this family (8)

* 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
JP6708016B2 (ja) * 2016-06-27 2020-06-10 富士通株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US10177908B2 (en) 2016-08-30 2019-01-08 Workday, Inc. Secure storage decryption system
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
CN107121581B (zh) * 2017-04-25 2019-07-12 电子科技大学 一种数据采集系统的数据处理方法
JP7243498B2 (ja) * 2019-07-11 2023-03-22 富士通株式会社 演算処理装置、制御プログラム、及び制御方法

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 受信装置
US9678751B2 (en) * 2011-12-23 2017-06-13 Intel Corporation Systems, apparatuses, and methods for performing a horizontal partial sum in response to a single instruction

Also Published As

Publication number Publication date
JP2014229133A (ja) 2014-12-08
US9436465B2 (en) 2016-09-06
US20140351566A1 (en) 2014-11-27
CN104182207A (zh) 2014-12-03

Similar Documents

Publication Publication Date Title
JP6079433B2 (ja) 移動平均処理プログラム、及びプロセッサ
CN111213125B (zh) 使用simd指令进行高效的直接卷积
US10140251B2 (en) Processor and method for executing matrix multiplication operation on processor
US9355061B2 (en) Data processing apparatus and method for performing scan operations
US7797363B2 (en) Processor having parallel vector multiply and reduce operations with sequential semantics
US9361242B2 (en) Return stack buffer having multiple address slots per stack entry
US8200948B2 (en) Apparatus and method for performing re-arrangement operations on data
US10567163B2 (en) Processor with secure hash algorithm and digital signal processing method with secure hash algorithm
US8407456B2 (en) Method and instruction set including register shifts and rotates for data processing
US8433883B2 (en) Inclusive “OR” bit matrix compare resolution of vector update conflict masks
CN110321161B (zh) 使用simd指令的向量函数快速查表法、系统及介质
CN110235099A (zh) 用于处理输入操作数值的装置和方法
US9477442B2 (en) Processor and control method of processor
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
US20100115232A1 (en) Large integer support in vector operations
US8938485B1 (en) Integer division using floating-point reciprocal
JP5862397B2 (ja) 演算処理装置
CN102231624B (zh) 面向向量处理器的浮点复数块fir的向量化实现方法
GB2523805A (en) Data processing apparatus and method for performing vector scan operation
WO2020031281A1 (ja) 情報処理装置、情報処理方法、及びコンピュータ読み取り可能な記録媒体
JP5659772B2 (ja) 演算処理装置
JP2016218528A (ja) データ処理装置、およびデータ処理方法
JP2024087606A (ja) プロセッサ、命令実行プログラムおよび情報処理装置
JP6060853B2 (ja) プロセッサおよびプロセッサの処理方法
US9916108B2 (en) Efficient loading and storing of data between memory and registers using a data structure for load and store addressing

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20160226

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20161214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20161220

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170102

R150 Certificate of patent or registration of utility model

Ref document number: 6079433

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees