JP6933263B2 - データ処理装置、ループ制御装置、データ処理方法、ループ制御方法およびプログラム - Google Patents

データ処理装置、ループ制御装置、データ処理方法、ループ制御方法およびプログラム Download PDF

Info

Publication number
JP6933263B2
JP6933263B2 JP2019552388A JP2019552388A JP6933263B2 JP 6933263 B2 JP6933263 B2 JP 6933263B2 JP 2019552388 A JP2019552388 A JP 2019552388A JP 2019552388 A JP2019552388 A JP 2019552388A JP 6933263 B2 JP6933263 B2 JP 6933263B2
Authority
JP
Japan
Prior art keywords
loop
nth
value
counter
loop counter
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.)
Active
Application number
JP2019552388A
Other languages
English (en)
Other versions
JPWO2019093451A1 (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Publication of JPWO2019093451A1 publication Critical patent/JPWO2019093451A1/ja
Application granted granted Critical
Publication of JP6933263B2 publication Critical patent/JP6933263B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30065Loop control instructions; iterative instructions, e.g. LOOP, REPEAT
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter
    • 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/30029Logical and Boolean instructions, e.g. XOR, NOT
    • 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/30032Movement instructions, e.g. MOVE, SHIFT, ROTATE, SHUFFLE
    • 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/3005Arrangements for executing specific machine instructions to perform operations for flow control
    • G06F9/30058Conditional branch 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/30072Arrangements for executing specific machine instructions to perform conditional operations, e.g. using predicates or guards
    • 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/30098Register arrangements
    • G06F9/30101Special purpose registers
    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/321Program or instruction counter, e.g. incrementing
    • 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/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/323Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for indirect branch instructions

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Executing Machine-Instructions (AREA)
  • Advance Control (AREA)

Description

本発明は、データ処理装置およびループ制御装置などに関し、特に、大きな行列に対する行列積等の演算を繰り返し実行するためのデータ処理装置およびループ制御装置などに関する。
ビッグデータの解析処理や信号処理等のアプリケーションにおいては、大規模な行列に対する行列積などの演算が頻出する。
このようなアプリケーションにおいては、多重ループが多く使われる。例えば、行列積のプログラムは図11に示すように3重のループで記述される。ここで、matA、matBは、入力の行列を表し、matCは出力の行列を表し、iA、iB、iCは、それぞれ、matA、matB、matCの1行の幅を表す。
このようなアプリケーションでは、アプリケーション全体の実行時間に対する多重ループの実行時間が支配的であることが多い。典型的には、全体の5%の命令列が、95%の実行時間を占めるとも言われる。このとき、もしループあたり1サイクルでも短縮できれば、大きな性能向上につながる。例えば、9サイクルの命令列からなるループが全体の実行時間の95%を占めるとする。この場合、この命令列を9サイクルから8サイクルへと1サイクル短縮するだけで、全体の実行時間を約10%削減することができる。
図12は、行列積プログラムのアセンブリプログラム例を示す図である。ここで、各行は、ラベル、命令名、オペランド群から成る。
MVI命令は、第1オペランドのレジスタに第2オペランドの即値を代入する即値代入命令である。MAC命令は、第1オペランドのレジスタに格納されているアドレスのデータと、第2オペランドのレジスタに格納されているアドレスのデータとを乗算し、その乗算結果である積を第3オペランドのレジスタに格納されているアドレスのデータに累積する積和命令である。ADD命令は、第1オペランドのレジスタ値と第2オペランドの即値とを加算して、第3オペランドのレジスタに格納する加算命令である。CMP命令は、第1オペランドのレジスタ値と第2オペランドのレジスタ値とを比較して、比較結果をフラグレジスタ等に格納する比較命令である。BRLT命令は、フラグレジスタ等に格納された比較結果を参照し、先に実行された比較命令の第1オペランドの方が第2オペランドより小さい場合(Less Then)にBRLT命令の第1オペランドで指定されるラベルにジャンプする分岐命令である。
ここで、ループ変数の加算命令、ループの終了判定用の比較命令、分岐命令など、ループの制御に数多くの命令が使われていることが分かる。例えば、ループの制御に使われる命令としては、12行目、16行目、20行目の加算命令、13行目、17行目、21行目の比較命令、および、14行目、18行目、22行目の分岐命令、がそれぞれ相当する。以下、これらの命令を「ループ制御命令」と呼称することにする。
また、ループの各階層の先頭では、積和演算の対象データのアドレス変数を格納するレジスタ(R7〜R9)を初期化するための命令が存在することがわかる。例えば、初期化するための命令としては、4行目、6行目、8行目の即値代入命令がこれに相当する。また、ループの各階層の終端付近では、レジスタR7〜R9を更新する加算命令が存在することがわかる。例えば、そのような更新する加算命令としては、11行目、15行目、19行目の加算命令がこれに相当する。以下、これらの命令を「アドレス更新命令」と呼称することにする。
このように、アプリケーションの実行時間を削減するためには、ループ制御命令およびアドレス更新命令を削減し、多重ループを構成する命令数をできる限り小さくする必要がある。
なお、ループ変数とアドレス変数を格納するレジスタを兼用することで命令数を削減できることは、当業者には明白である。例えば、図12の例においては、レジスタR1〜R3とレジスタR7〜R9とを兼用することで、4行目、6行目、8行目、の3つの即値代入命令は削減することができよう。しかしながら、それでもなお、ループ制御命令およびアドレス更新命令を完全になくすことはできなかった。
本発明に関連するシステムが、種々知られている。
特許文献1は、ループ制御命令を削減する手法として、ループ変数を専用のカウンタとして実現し、カウンタの自動制御を行う手法を開示している。また、特許文献1は、ループの先頭命令を表すアドレスをスタックに格納することで多重ループにも対応する手法も開示している。
特許文献2は、多重ループにおいてもリピート命令と命令バッファを用いて低電力化を行う手法を開示している。
特許文献3は、ループレジスタ更新、終了判定を軽減する行う手法を開示している。特許文献3では、繰り返し処理を指示する繰り返しフラグを設け、命令レジスタに繰り返しループの最後の命令を示すフィールドを設け、フィールドの活性化によってループ制御レジスタの更新し、繰返しフラグの活性化により終値と比較して、プログラムカウンタPCを制御している。また、特許文献3では、繰返しフラグに専用のスタックを設けることで、多重ループにも対応している。さらに、特許文献3では、繰り返し処理のループ制御は、汎用レジスタを用いて、ループに入る前の初期設定、ループ内でのループ制御レジスタの更新およびループ終了判断が行われている。
特許文献4は、演算とプログラムの繰り返し実行の判定を並行して行う手法を開示している。特許文献4では、分岐先をスタック用いて命令を指し示すことで、短い命令語長となり、かつ、多重の繰り返し処理も可能である。
特許文献5は、ループの先頭アドレスを格納するレジスタと、ループサイズを格納するレジスタと、を用いてループを実行する手法を開示している。特許文献5では、スタックに退避することで多重ループにも対応できる。
特許文献6は、オフチップメモリアクセスを削減して高速化するハードウェアループ命令を用いる手法を開示している。特許文献6では、命令のブロックを繰り返し実行することができる。
特許文献7は、計数分岐バイパスレジスタによりループ命令(BCT)の機能を代行する手法を開示している。
特許文献8は、ループ内に条件分岐命令を含む場合に、処理ステップ数を減少すべく、マイクロプログラムにループ脱出条件成立の判定及びループカウントレジスタの更新を指定するためのフィールドを設ける手法を開示している。
特許文献9は、離散フーリエ変換(DFT:Discrete Fourier Transform)計算で使用されるマルチ基数バタフライを計算する計算方法を開示している。特許文献9では、複数階層のループの終了判定を並列に行う方法を開示している。特許文献9では、その図9において、アドレス生成器で使用される累算器の一例を示している。ループは繰り返し回数を記憶するカウンタを使用して実施される。最大繰り返し回数がそれぞれのカウンタに設定されると、最も内側のループのカウンタがカウントを開始する。このカウンタは、最後の繰り返しに達すると、外側のループのカウンタをインクリメントすると共に自身をリセットする。すべてのカウンタが最後の繰り返しに達したときに終了する。
特許文献10は、水平型マイクロコードを採用することにより、並列データ用の命令フェッチとデコードの回路の複雑性を排除し、消費電力を抑えつつ効率よく並列処理を行うデータ処理装置を開示している。水平型マイクロコードは、命令フィールドと、サイクルフラグフィールドと、ループカウンタ選択フィールドとを備える。ループカウンタ選択フィールドにより、ループ回数が制御される。特許文献10に開示されたデータ処理装置では、異なるループカウンタを指定してループ回数を制御するだけでネスト構造に対応できる。また、特許文献10に開示されたデータ処理装置では、3重のネスト構造まで、1重のループ処理と同様の汎用的な制御で実行することができる。
特公昭61−008451号公報 特開平7−160585号公報 特公平2−014730号公報 特公昭63−059174号公報 特開昭63−053644号公報 特開2000−276351号公報 特公昭62−032506号公報 特開昭58−127245号公報 特開2010−016830号公報 特開2004−021890号公報
しかしながら、上記特許文献1〜10には、それぞれ、次に述べるような課題がある。
特許文献1は、多重ループからの脱出を1サイクルで実現することはできなかった。
特許文献2は、リピート制御用の各レジスタの状態をスタックに退避する必要があり、多重ループからの脱出を1サイクルで実現することはできなかった。
特許文献3は、スタックを用いているため、複数の階層のループの終了判定を同時に行うことができず、多重ループからの脱出に複数サイクルを要していた。
特許文献4は、多重ループには対応しているものの、1サイクルでは終了判定ができなかった。
特許文献5は、1サイクルでは終了判定ができなかった。
特許文献6は、多重ループに関しては記述がなく、また、分岐命令の削減もできなかった。
特許文献7は、多重ループには対応していなかった。また、特許文献7は、ハードウェアループに関する手法であり、通常の分岐命令の枠内では実現できず、制御回路に大規模な追加が必要であった。
特許文献8は、多重ループには対応していなかった。
特許文献9は、高速フーリエ変換(FFT:Fast Fourier Transform)演算回路専用の計算方法を開示しているに過ぎず、命令セットプロセッサに対して他の命令と親和性の高い形で複数階層の同時終了判定を行える分岐命令の構成方法を開示してはいない。
特許文献10は、単に、水平型マイクロコードの中に、ループ回数を制御するためのループカウンタ選択フィールドを含ませることを開示しているに過ぎない。特許文献10でも、複数階層の同時終了判定を行ってはいない。
このように、特許文献1〜10に開示された手法では、多重ループにおいて、複数階層のループ終了判定を同時に行うことができないという課題があった。
本発明の目的は、上述した課題を解決できるデータ処理装置およびループ制御装置などを提供することにある。
本発明の一形態におけるデータ処理装置は、ループ制御レジスタ組を含むループカウンタ群と;該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御部と;命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御部とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御部と;前記演算器制御信号に基づいて演算を実行する演算器と;前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと;を備え、前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含み、前記ループ制御部は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、前記ループ制御部は、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行い、前記制御部は、前記第1乃至第Nのループカウンタの第1乃至第Nのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力することを特徴とする。
本発明の一形態におけるループ制御装置は、ループ制御レジスタ組を含むループカウンタ群と;該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御部と;を備え、前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含み、前記ループ制御部は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、前記ループ制御部は、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行う、ことを特徴とする。
本発明の一形態におけるデータ処理方法は、ループ制御レジスタ組を含むループカウンタ群と;該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と;命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段と;を制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、前記演算器制御信号に基づいて演算を実行する演算器と;前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと;を備え、前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むデータ処理装置において、前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、前記ループ制御手段において、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行い、前記制御手段が、前記第1乃至第Nのループカウンタの第1乃至第Nのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する。
本発明の一形態におけるループ制御方法は、ループ制御レジスタ組を含むループカウンタ群と;該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と;を備え、前記ループカウンタ群において、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むループ制御装置において、前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、前記ループ制御手段が、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行う。
本発明の一形態におけるプログラムは、ループ制御レジスタ組を含むループカウンタ群と;該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と;命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と;前記演算器制御信号に基づいて演算を実行する演算器と;前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと;を備え、前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むデータ処理装置において、前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第nのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持する処理とを実行させ、前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行わせる処理を実行させ、前記制御手段に、前記第1乃至第Nのループカウンタの第1乃至第Nのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する処理を実行させる
本発明の別の一形態におけるプログラムは、ループ制御レジスタ組を含むループカウンタ群と;該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と;を備え、前記ループカウンタ群において、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むループ制御装置において、前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第nのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持する処理と実行させ、前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行う処理を実行させる

本発明によれば、多重ループにおけるループ制御命令を削減することができ、多重ループにおけるアドレス更新命令を削減することができる。
本発明の第1の実施形態に係るデータ処理装置の構成を示すブロック図である。 図1に示したデータ処理装置に使用されるループ制御部とループカウンタ群との構成を示すブロック図である。 図1に示したデータ処理装置に使用される制御部の構成を示すブロック図である。 図1に示したデータ処理装置において用いられる命令語の構成を示す図である。 図1に示したデータ処理装置において用いられる命令語の動作を示す図である。 図1に示したデータ処理装置を用いて行列積を実行する場合のアセンブリプログラム例を示す図である。 第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cの遷移の例を示す図である。 行列積の計算例を示す図である。 2行4列行列Aと4行2列行列Bを掛け合わせて2行2列行列Cを求める場合を例に示す図である。 本発明の第2の実施形態に係るデータ処理装置において用いられる命令語の構成を示す図である。 本発明の第2の実施形態に係るデータ処理装置において用いられるMAC命令の動作を示す図である。 第2の実施形態における行列積を実行する場合のアセンブリプログラム例を示す図である。 3重のループで記述される行列積のプログラムの一例を示す図である。 行列積プログラムのアセンブリプログラム例を示す図である。
次に、発明を実施するための形態について図面を参照して詳細に説明する。
[第1の実施形態]
[構成の説明]
図1を参照すると、本発明における第1の実施形態に係るデータ処理装置100は、制御部110と、プログラムカウンタ120と、演算器130と、ループカウンタ群140と、ループ制御部150と、を含む。
制御部110とプログラムカウンタ120とは、命令メモリ210に接続されている。
演算器130は、データメモリ220に接続されている。
ループカウンタ群140は、第1乃至第3のループカウンタ141−1、141−2、141−3と、第1乃至第3のループカウント最大値レジスタ142−1、142−2、142−3と、第1乃至第3のループステップレジスタ143−1、143−2、143−3とを備える。第1乃至第3のループカウンタ141−1〜141−3は、それぞれ、ループ変数を表す第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cを保持する。第1乃至第3のループカウント最大値レジスタ142−1〜142−3は、それぞれ、ループ回数を表す第1乃至第3のループカウント最大値LMAX_A〜LMAX_Cを保持する。第1乃至第3のループステップレジスタ143−1〜143−3は、それぞれ、ループ変数増分を表す第1乃至第3のループ変数増分値LSTEP_A〜LSTEP_Cを保持する。尚、各ループステップレジスタ143−1〜143−3は、ループ変数増分レジスタとも呼ばれる。
なお、ここではループカウンタ群140は、ループカウンタ、ループカウント最大値レジスタ及びループステップレジスタをそれぞれ3つずつ持つことで、3重のループにまで対応できる場合を例に示すが、本実施形態はもちろんこれに限る必要はない。一般的には、ループカウンタ群140は、それらループカウンタ、ループカウント最大値レジスタ、およびループステップレジスタをN(Nは2以上の整数)個ずつ持ってよい。例えば、ループカウンタ群140は、それらループカウンタ、ループカウント最大値レジスタ、およびループステップレジスタを5つずつ持つことで5重のループにまで対応してもよい。なお、ループカウンタ群140は、それらループカウンタ、ループカウント最大値レジスタ、およびループステップレジスタを1つずつしか持たないことで、多重ループに対応しない代わりに回路面積を節約するようにしてもよい。
図2は、ループ制御部150の構成と、ループカウンタ群140の構成とを示すブロック図である。
ループ制御部150は、第1乃至第3の加算器151−1、151−2、151−3と、第1乃至第3の比較器152−1、152−2、152−3と、第1乃至第3のマルチプレクサ153−1、153−2、153−3と、第1及び第2の論理和ゲート154−1、154−2とを含む。
第1の加算器151−1は、第1のループカウンタ値LCNT_Aと第1のループ変数増分値LSTEP_Aとを加算して(の和を求めて)、第1の加算値を出力する。第1の比較器152−1は、第1のループカウンタ値LCNT_Aと第1のループカウント最大値LMAX_Aとの大小比較を行い、第1の比較結果を出力する。第1のマルチプレクサ153−1は、第1の比較結果に基づき第1のループカウンタ141−1の第1の更新値を、第1の加算値またはゼロまたは現在の第1のループカウンタ値LCNT_Aのいずれかから選択する。
同様に、第2の加算器151−2は、第2のループカウンタ値LCNT_Bと第2のループ変数増分値LSTEP_Bとを加算して(の和を求めて)、第2の加算値を出力する。第2の比較器152−2は、第2のループカウンタ値LCNT_Bと第2のループカウント最大値LMAX_Bとの大小比較を行い、第2の比較結果を出力する。第2のマルチプレクサ153−2は、第1および第2の比較結果に基づき第2のループカウンタ141−2の第2の更新値を、第2の加算値またはゼロまたは現在の第2のループカウンタ値LCNT_Bのいずれかから選択する。
同様に、第3の加算器151−3は、第3のループカウンタ値LCNT_Cと第3のループ変数増分値LSTEP_Cとを加算して(和を求めて)、第3の加算値を出力する。第3の比較器152−3は、第3のループカウンタ値LCNT_Cと第3のループカウント最大値LMAX_Cとの大小比較を行い、第3の比較結果を出力する。第3のマルチプレクサ153−3は、第1乃至第3の比較結果に基づき第3のループカウンタ141−3の第3の更新値を、第3の加算値またはゼロまたは現在の第3のループカウンタ値LCNT_Cのいずれかから選択する。
第1の論理和ゲート154−1は、第1の比較結果と第2の比較結果との論理和を求めて、第1の論理和結果を出力する。第1の論理和結果は、第3の比較器152−3へ供給される。第2の論理和ゲート154−2は、第1の比較結果と第2の比較結果と第3の比較結果との論理和を求めて、第2の論理和結果を出力する。第2の論理和結果は、ループ終了信号SLEとして制御部110へ供給される。したがって、第1の論理和ゲート154−1と第2の論理和ゲート154−2との組み合わせは、第1乃至第3の比較結果の論理和を求めて、少なくともループ終了信号SLEを出力する論理和ゲート群として働く。
LCNT_A<LMAX_Aの場合、第1の比較器152−1は論理“1”レベルの第1の比較結果を出力する。それ以外の場合、第1の比較器152−1は論理“0”レベルの第1の比較結果を出力する。第1の比較結果が論理“1”レベルの場合、第1のマルチプレクサ153−1は、第1の更新値として第1の加算値を選択する。第1の比較結果が論理“0”レベルの場合、第1のマルチプレクサ153−1は、第1の更新値としてゼロを出力する。
LCNT_B<LMAX_Bの場合、第2の比較器152−2は論理“1”レベルの第2の比較結果を出力する。それ以外の場合、第2の比較器152−2は論理“0”レベルの第2の比較結果を出力する。第1の比較結果が論理“1”レベルの場合、第2のマルチプレクサ153−2は、第2の更新値として現在の第2のループカウンタ値LCNT_Bを選択する。第2の比較結果が論理“1”レベルの場合、第2のマルチプレクサ153−2は、第2の更新値として第2の加算値を選択する。それ以外の場合、すなわち、第1及び第2の比較結果が両方とも論理“0”レベルの場合、第2のマルチプレクサ153−2は、第2の更新値としてゼロを出力する。
LCNT_C<LMAX_Cの場合、第3の比較器152−3は論理“1”レベルの第3の比較結果を出力する。それ以外の場合、第3の比較器152−3は論理“0”レベルの第3の比較結果を出力する。したがって、第1の比較結果と第2の比較結果の少なくとも1つが論理“1”レベルの場合、第1の論理和ゲート154−1は、論理“1”レベルの第1の論理和結果を出力する。第1の比較結果と第2の比較結果の両方が論理“0”レベルの場合、第2の論理和ゲート154−1は、論理“0”レベルの第1の論理和結果を出力する。第1の論理和結果が論理“1”レベルの場合、第3のマルチプレクサ153−3は、第3の更新値として現在の第3のループカウンタ値LCNT_Cを選択する。第3の比較結果が論理“1”レベルの場合、第3のマルチプレクサ153−3は、第3の更新値として第3の加算値を選択する。それ以外の場合、すなわち、第1の論理和結果と第3の比較結果が両方とも論理“0”レベルの場合、第3のマルチプレクサ153−3は、第3の更新値としてゼロを出力する。換言すれば、第1乃至第3の比較結果の全てが論理“0”レベルの場合、第3のマルチプレクサ153−3は、第3の更新値としてゼロを出力する。
第1乃至第3の比較結果の少なくとも1つが論理“1”レベルの場合、第2の論理和ゲート154−2は、論理“1”レベルの第2の論理和結果を出力する。第1乃至第3の比較結果のすべてが論理“0”レベルの場合、第2の論理和ゲート154−2は、論理“0”レベルの第2の論理和結果を出力する。したがって、第2の論理和ゲート154−2は、論理“0”レベルの第2の論理和結果を、ループの終了を示すループ終了信号SLEとして制御部110へ送出する。
ループ制御部150及びループカウンタ群140は、制御部110より有効信号Sが来たときのみ動作するものとする。すなわち、ループ制御部150は、有効信号Sを受けたときのみ、ループカウンタ群140の第1乃至第3のループカウンタ141−1〜141−3の第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cを、それぞれ、上記第1乃至第3の更新値に更新するものとする。
ループ制御部150は、ループの第1階層に相当する第1のループカウンタ141−1が保持する第1のループカウンタ値LCNT_Aの第1の更新値として、LCNT_A<LMAX_Aの場合には第1の加算器151−1から出力される第1の加算値を選択し、それ以外の場合にはゼロを選択するように、第1のマルチプレクサ153−1を制御する。
ループ制御部150は、ループの第2階層に相当する第2のループカウンタ141−2が保持する第2のループカウンタ値LCNT_Bの第2の更新値として、LCNT_A<LMAX_Aのときは現在の第2のループカウンタ値LCNT_Bを選択し、LCNT_B<LMAX_Bの場合には第2の加算器151−2から出力される第2の加算値を選択し、それ以外の場合にはゼロを選択するように、第2のマルチプレクサ153−2を制御する。
ループ制御部150は、ループの第3階層に相当する第3のループカウンタ141−3が保持する第3のループカウンタ値LCNT_Cの第3の更新値として、LCNT_A<LMAX_AまたはLCNT_B<LMAX_Bのときは現在の第3のループカウンタ値LCNT_Cを選択し、LCNT_C<LMAX_Cの場合には第3の加算器151−3から出力される第3の加算値を選択し、それ以外の場合にはゼロを選択するように、第3のマルチプレクサ153−3を制御する。
ループ制御部150とループカウンタ群140との組み合わせは、ループ制御装置と呼ばれる。
図3は、制御部110の構成を示すブロック図である。制御部110は、命令レジスタ112と、命令デコーダ114と、演算器制御信号生成部116とを含む。
この技術分野において周知のように、プログラム内蔵方式(いわゆるフォンノイマン型)のデータ処理装置100の動作は、以下の三つのサイクル、すなわち、命令フェッチサイクル、命令デコードサイクル、および命令実行サイクルから成る。
命令フェッチサイクルでは、次に実行すべき命令語を命令メモリ210から読み込み、命令レジスタ112に格納する。
命令デコードサイクルでは、命令デコーダ114が、命令レジスタ112内の命令語をデコード(解読)し、デコード結果を出力する。デコード結果は、命令語の種類、必要となるオペランドの種類、演算結果の格納場所などの情報を含む。
命令実行サイクルでは、演算器制御信号生成部116が、デコード結果とループ終了信号とに従って、必要となるデータにアクセスし、演算器130へ演算器制御信号Cを供給し、その結果を適当な場所に格納する。また、演算器制御信号生成部116は、プログラムカウンタ120へプログラムカウンタ制御信号CPCを供給する。
このように、制御部110は、命令メモリ210から取り出した命令語とループ終了信号SLEとに基づいて、ループカウンタ群140とループ制御部150とを制御すると共に、演算器制御信号Cとプログラムカウンタ制御信号CPCとを生成する。
演算器130は、演算器制御信号Cに基づいて、データメモリ220に格納されているデータに対して演算を実行する。演算器130は、例えば、ALU(Arithmetic and Logic Unit)であってよい。
また、プログラムカウンタ120は、プログラムカウンタ制御信号CPCに応答してカウント動作を行い、次に実行すべき命令語が格納されている命令メモリ210の番地を保持する。
図4A及び4Bは、データ処理装置100において用いられる命令語の構成とその動作とを示す図である。
図4Aに、データ処理装置100の命令語の構成を示す。ここでは命令語は、4ビットのオペコードopcと、各々が8ビットの第1乃至第3オペランドrs、rt、rdと、32ビットの即値フィールドimmとから成るとして例示するが、本実施形態はこれに限るものではない。第1及び第2オペランドrs、rtは、それぞれ、第1及び第2入力オペランドとも呼ばれ、第3オペランドrdは、結果オペランドとも呼ばれる。
図4Bに、命令語の動作を示す。ここでは、8個の命令語を示すが、本実施形態はこれ以外の命令語を含んでいてもよい。
NOP命令は、何もしない命令である。
ADD命令は、図1には図示されていないレジスタファイルRF中の、第1入力オペランドrs及び第2入力オペランドrtが示すレジスタ同士の加算を行い、結果オペランドrdが示すレジスタファイルRF中のレジスタに結果を書き込む加算命令である。
MVI命令は、即値フィールドimmの値を、結果オペランドrdが示すレジスタファイルRF中のレジスタに書き込む即値代入命令である。
SETLP命令は、即値フィールドimmの値を、結果オペランドrdが示すループカウンタ群140中のレジスタまたはカウンタに書込む命令である。例えば、下記のような対応が考えられる。
rd==0:LCNT_A
rd==1:LCNT_B
rd==2:LCNT_C
rd==4:LMAX_A
rd==5:LMAX_B
rd==6:LMAX_C
rd==8:LSTEP_A
rd==9:LSTEP_B
rd==10:LSTEP_C
MAC命令は、積和命令である。このMAC命令は、後述する第1乃至第3のデータについて、第1のデータと第2のデータとの積を第3のデータに加算してメモリに書き戻す動作を行う。第1のデータは、第1オペランドrsが示すベースアドレスに、第1のループカウンタ値LCNT_Aと第3のループカウンタ値LCNT_CとにLMAX_A+LSTEP_Aの和を乗じた値をオフセットとして加えた第1のメモリアドレスが示すデータである。第2のデータは、第2オペランドrtが示すベースアドレスに、第2のループカウンタ値LCNT_Bと第1のループカウンタ値LCNT_AとにLMAX_B+LSTEP_Bの和を乗じた値をオフセットとして加えた第2のメモリアドレスが示すデータである。第3のデータは、第3オペランドrdが示すベースアドレスに、第2のループカウンタ値LCNT_Bと第3のループカウンタ値LCNT_CとにLMAX_B+LSTEP_Bの和を乗じた値をオフセットとして加えた第3のメモリアドレスが示すデータである。
CMP命令は、第1入力オペランドrs及び第2入力オペランドrtが示すレジスタファイルRF中のレジスタ同士の減算を行い、結果として得られる算術フラグ(ゼロフラグ、符号フラグ等だがこれに限らない)を、図1には図示されていないフラグレジスタFGに格納する命令である。
BRLT命令は、フラグレジスタFG中の符号フラグの値を検査し、その符号フラグの値が1であれば、すなわち直前のCMP命令の減算結果が負数(RF[rs]<RF[rt])であれば、プログラムカウンタ120のプログラムカウンタ値PCに、即値フィールドimmの値を加算する分岐命令である。例えば、即値フィールドimmの値が−3であれば、BRLT命令を受けた制御部110は、プログラムカウンタ120を、当該命令のプログラムカウンタ値に3減じたもので更新する。これはすなわち3命令前に分岐することになる。
BRNEST命令は、第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cが、第1乃至第3のループカウント最大値LMAX_A〜LMAX_Cよりそれぞれ小さい場合かつそのときのみ、プログラムカウンタ値PCに即値フィールドimmの値を加算する多重ループ対応分岐命令である。すなわち、BRNEST命令は、第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cが、第1乃至第3のループカウント最大値LMAX_A〜LMAX_Cにそれぞれ等しいときのみ分岐を行わない分岐命令である。これは、3重の多重ループを脱出する条件を示す。多重ループを脱出する条件が揃わない場合は、BRNEST命令を受けた制御部110は、即値フィールドimmの値で示されるループの先頭へのジャンプを実行する。またその場合、BRNEST命令を受けた制御部110は、第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cを更新する。換言すれば、制御部110は、上記有効信号Sをループ制御部150へ送出する。
[動作の説明]
図5は、データ処理装置100を用いて行列積を実行する場合のアセンブリプログラム例を示す図である。ここでは、1階層目(最内ループ)が4回、2階層目のループが2回、3階層目(最外ループ)が2回繰り返す場合を例に示す。
図5において、1行目〜3行目では、SETLP命令を用いて第1乃至第3のループカウント最大値レジスタ142−1〜142−3に、第1乃至第3のループカウント最大値LMAX_A〜LMAX_Cとしてループカウント最大値3,1,1をそれぞれ設定している。4行目〜6行目では、SETLP命令を用いて第1乃至第3のループカウンタ141−1〜141−3に、第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cとしてゼロに設定している。7行目〜9行目では、SETLP命令を用いて第1乃至第3のループステップレジスタ143−1〜143−3に、第1乃至第3のループ変数増分値LSTEP_A〜LSTEP_Cとして1を設定している。
図6は、第1乃至第3のループカウンタ141−1〜141−3に保持される、第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cの遷移の例を示す図である。図6の表の1列目にある#Iterationは、繰返し番号を表す。
繰返し番号1〜4では、最内ループに対応する第1のループカウンタ値LCNT_Aが0,1,2,3のように、第1のループ変数増分値LSTEP_A=1ずつ増加する。また、これらの場合、BRNEST命令の第1オペランドrsで指定されるラベルのアドレスへ分岐を行う。
ここで、LCNT_A=LMAX_Aとなるため、繰返し番号5では第1のループカウンタ値LCNT_Aがゼロとなる。また、LCNT_B<LMAX_Bであるため、第2のループカウンタ値LCNT_Bは第2のループ変数増分値LSTEP_B=1だけ増加し、LCNT_B=1となる。また、この場合も、BRNEST命令の第1オペランドrsで指定されるラベルのアドレスへ分岐を行う。
繰返し番号6〜8は、第1のループカウンタ値LCNT_Aが第1のループ変数増分値LSTEP_Aずつ増加する。また、これらの場合も、BRNEST命令の第1オペランドrsで指定されるラベルのアドレスへ分岐を行う。
ここで、再びLCNT_A=LMAX_Aとなるため、繰返し番号9では第1のループカウンタ値LCNT_Aがゼロとなる。また、LCNT_B=LMAX_Bであるため、繰返し番号9では第2のループカウンタ値LCNT_Bもゼロとなる。そして、LCNT_C<LMAX_Cであるため、第3のループカウンタ値LCNT_Cは第3のループ変数増分値LSTEP_C=1だけ増加し、LCNT_C=1となる。また、この場合も、BRNEST命令の第1オペランドrsで指定されるラベルのアドレスへ分岐を行う。
繰返し番号10〜16も同様に遷移する。また、これらの場合も、BRNEST命令の第1オペランドrsで指定されるラベルのアドレスへ分岐を行う。
繰返し番号16の時点で、LCNT_A=LMAX_AかつLCNT_B=LMAX_BかつLCNT_C=LMAX_Cとなる。そこで、第1のループカウンタ値LCNT_Aも第2のループカウンタ値LCNT_Bも第3のループカウンタ値LCNT_Cもゼロとなる。また、この場合は分岐を行わず、多重ループの実行を終了する。
以上のように、データ処理装置100を用いることで、多重ループにおいてループ制御命令を大幅に削減し、すなわち、実行時間を削減することができる。
次に、ループカウンタ群140を用いたアドレス更新命令削減の仕組みについて説明する。
図7は、行列積の計算例を示す図である。ここでは、図8に示すような、2行4列行列Aと4行2列行列Bを掛け合わせて2行2列行列Cを求める場合を例に示す。また、行列A、行列Bおよび行列Cは、それぞれ、メモリの次の領域に格納されているものとする。すなわち、行列Aはメモリのアドレス0x00番地から始まる2x4=8ワード分の領域に格納されている。行列Bはメモリのアドレス0x20番地から始まる4x2=8ワード分の領域に格納されている。行列Cはメモリのアドレス0x40番地から始まる2x2=4ワード分の領域に格納されている。また、行列Cはゼロで初期化されているものとする。
図7の繰返し番号1では、第1乃至第3のループカウンタ値LCNT_A〜LCNT_Cはすべてゼロである。このため、m[0x40+0+0*2]+=m[0x0+0+0*4]*m[0x20+0+0*2]の演算、すなわち、0x00番地のデータと0x20番地のデータの積を0x40番地に足す。これは、行列Aの要素(0,0)と行列Bの要素(0,0)の積を行列Cの要素(0,0)に足すことに相当する(なお、要素(X,Y)はX行Y列の要素を表すこととする。)。
繰返し番号2では、第1のループカウンタ値LCNT_Aが1となる。このため、m[0x40+0+0*2]+=m[0x0+1+0*4]*m[0x20+0+1*2]の演算、すなわち、0x01番地のデータと0x22番地のデータの積を0x40番地に足す。これは、行列Aの要素(0,0)と行列Bの要素(1,0)の積を行列Cの要素(0,0)に足すことに相当する。
繰返し番号3と4も同様に実行することで、繰返し番号4終了時点で、行列Cの要素(0,0)にはA(0,0)*B(0,0)+A(0,1)*B(1,0)+A(0,2)*B(2,0)+A(0,3)*B(3,0)が格納される。
繰返し番号5では、m[0x40+1+0*2]+=m[0x0+0+0*4]*m[0x20+1+0*2]の演算、すなわち、0x00番地のデータと0x21番地のデータの積を0x41番地に足す。これは、行列Aの要素(0,0)と行列Bの要素(0,1)の積を行列Cの要素(0,1)に足すことに相当する。
繰返し番号6では、m[0x40+1+0*2]+=m[0x0+1+0*4]*m[0x20+1+1*2]の演算、すなわち、0x01番地のデータと0x23番地のデータの積を0x41番地に足す。これは、行列Aの要素(0,1)と行列Bの要素(1,1)の積を行列Cの要素(0,1)に足すことに相当する。
同様に繰返し番号5〜9を実行することで、繰返し番号9終了時点で、行列Cの要素(0,1)にはA(0,0)*B(0,1)+A(0,1)*B(1,1)+A(0,2)*B(2,1)+A(0,3)*B(3,1)が格納される。
同様に、繰返し番号10〜12を実行することで、繰返し番号12終了時点で、行列Cの要素(1,0)にはA(1,0)*B(0,0)+A(1,1)*B(1,0)+A(1,2)*B(2,0)+A(1,3)*B(3,0)が格納される。
また、繰返し番号13〜16を実行することで、繰返し番号16終了時点で、行列Cの要素(1,1)にはA(1,0)*B(0,1)+A(1,1)*B(1,1)+A(1,2)*B(2,1)+A(1,3)*B(3,1)が格納される。
[効果の説明]
以上より、データ処理装置100により、アドレス更新命令を完全に取り除いたうえで、行列積の演算を実行できる。
[第2の実施形態]
本発明における第2の実施形態は、上記第1の実施形態と比べ、MAC命令にBRNEST命令が統合されている点が異なる他は同様である。
図9A及び9Bは、第2の実施形態における命令語の構成およびMAC命令の動作を示す図である。これによると、図9Aに示されるように、第2の実施形態における命令語には、1ビットのフィールドafが追加されている。そして、図9Bに示されるように、MAC命令では、第1の実施形態の動作に追加して、フィールドafの値が1の場合に、BRNEST命令の動作を行うように構成される。
図10は、第2の実施形態における行列積を実行する場合のアセンブリプログラム例を示す図である。
ここで、MAC命令は、3つのオペランドrs、rr、rdに追加して、即値フィールドimmを表すオペランドと、フィールドafを表すオペランドとが追加されている。すなわち、図10の10行目の命令では、フィールドafの値が1であり、即値フィールドimmの値として、ラベルLXへのプログラムカウンタ増分値(0)が格納されることとなる。
これにより、アドレス更新命令に加え、ループ制御命令をも完全に取り除いたうえで、行列積の演算を実行することができ、大幅な実行時間削減を実現できる。
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
この出願は、2017年11月13日に出願された日本出願特願2017−218089を基礎とする優先権を主張し、その開示の全てをここに取り込む。
本発明によれば、機械学習や信号処理などの行列積演算を多用するアプリケーションの高速化といった用途に適用できる。
100 データ処理装置
110 制御部
112 命令レジスタ
114 命令デコーダ
116 演算器制御信号生成部
120 プログラムカウンタ
130 演算器
140 ループカウンタ群
141−1、141−2、141−3 ループカウンタ
142−1、142−2、142−3 ループカウント最大値レジスタ
143−1、143−2、143−3 ループステップレジスタ(ループ変数増分レジスタ)
150 ループ制御部
151−1〜151−3 加算器
152−1〜152−3 比較器
153−1〜153−3 マルチプレクサ
154−1、154−2 論理和ゲート
210 命令メモリ
220 データメモリ
LCNT_A〜LCNT_C ループカウンタ値
LMAX_A〜LMAX_C ループカウント最大値
LSTEP_A〜LSTEP_C ループ変数増分値

Claims (7)

  1. ループ制御レジスタ組を含むループカウンタ群と、
    該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
    命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
    前記演算器制御信号に基づいて演算を実行する演算器と、
    前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
    前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含み、
    前記ループ制御手段は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、
    前記ループ制御手段は、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行い、
    前記制御手段は、前記第1乃至第Nのループカウンタの第1乃至第Nのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力し、
    前記ループ制御手段は、
    前記第nのループカウンタ値と前記第nのループ変数増分値とを加算して、前記第nの加算値を出力する第nの加算器と、
    前記第nのループカウンタ値と前記第nのループカウント最大値とを比較して、第nの比較結果を出力する第nの比較器と、
    前記第1乃至第nの比較結果に基づいて、前記第nのループカウンタ値、前記第nの加算値、およびゼロのいずれかを選択して、選択した値を前記第nの更新値として前記nのループカウンタに供給する第nのマルチプレクサと、
    前記第1乃至第Nの比較結果の論理和を求めて、少なくとも前記ループ終了信号を出力する論理和ゲート群と、
    を備える、
    データ処理装置。
  2. 前記制御手段は、前記多重ループを脱出する条件が揃わない場合に有効信号を出力し、
    前記ループ制御手段は、前記有効信号に応答して、前記ループカウンタ群中の前記第1乃至第Nのループカウンタを、それぞれ、第1乃至第Nの更新値で更新する、
    請求項1に記載のデータ処理装置。
  3. ループ制御レジスタ組を含むループカウンタ群と、
    該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
    前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含み、
    前記ループ制御手段は、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、
    前記ループ制御手段は、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行い、
    前記ループ制御手段は、
    前記第nのループカウンタ値と前記第nのループ変数増分値とを加算して、前記第nの加算値を出力する第nの加算器と、
    前記第nのループカウンタ値と前記第nのループカウント最大値とを比較して、第nの比較結果を出力する第nの比較器と、
    前記第1乃至第nの比較結果に基づいて、前記第nのループカウンタ値、前記第nの加算値、およびゼロのいずれかを選択して、選択した値を前記第nの更新値として前記nのループカウンタに供給する第nのマルチプレクサと、
    前記第1乃至第Nの比較結果の論理和を求めて、前記ループ終了信号を出力する論理和ゲート群と、
    を備える、
    ループ制御装置。
  4. ループ制御レジスタ組を含むループカウンタ群と、
    該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
    命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
    前記演算器制御信号に基づいて演算を実行する演算器と、
    前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
    前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むデータ処理装置において、
    前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、
    前記ループ制御手段において、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行い、
    前記制御手段が、前記第1乃至第Nのループカウンタの第1乃至第Nのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力し、
    前記ループ制御手段が、
    前記第nのループカウンタ値と前記第nのループ変数増分値とを加算して、前記第nの加算値を出力し、
    前記第nのループカウンタ値と前記第nのループカウント最大値とを比較して、第nの比較結果を出力し、
    前記第1乃至第nの比較結果に基づいて、前記第nのループカウンタ値、前記第nの加算値、およびゼロのいずれかを選択して、選択した値を前記第nの更新値として前記nのループカウンタに供給し、
    前記第1乃至第Nの比較結果の論理和を求めて、前記ループ終了信号を出力する
    データ処理方法。
  5. ループ制御レジスタ組を含むループカウンタ群と、
    該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
    前記ループカウンタ群において、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むループ制御装置において、
    前記ループ制御手段が、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定を行い、ループ終了の場合は前記第nのループカウンタのゼロリセットを行い、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持させ、
    前記ループ制御手段が、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行い、
    前記ループ制御手段が、
    前記第nのループカウンタ値と前記第nのループ変数増分値とを加算して、前記第nの加算値を出力し、
    前記第nのループカウンタ値と前記第nのループカウント最大値とを比較して、第nの比較結果を出力し、
    前記第1乃至第nの比較結果に基づいて、前記第nのループカウンタ値、前記第nの加算値、およびゼロのいずれかを選択して、選択した値を前記第nの更新値として前記nのループカウンタに供給し、
    前記第1乃至第Nの比較結果の論理和を求めて、前記ループ終了信号を出力する
    ループ制御方法。
  6. ループ制御レジスタ組を含むループカウンタ群と、
    該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、
    命令メモリから取り出した命令語と前記ループ終了信号とに基づいて、前記ループカウンタ群と前記ループ制御手段とを制御すると共に、演算器制御信号とプログラムカウンタ制御信号とを生成する制御手段と、
    前記演算器制御信号に基づいて演算を実行する演算器と、
    前記プログラムカウンタ制御信号に応答してカウント動作を行い、次に実行すべき命令語が格納されている前記命令メモリの番地を保持するプログラムカウンタと、を備え、
    前記ループカウンタ群は、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むデータ処理装置において、
    前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第nのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持する処理とを実行させ、
    前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行わせる処理を実行させ、
    前記制御手段に、前記第1乃至第Nのループカウンタの第1乃至第Nのカウンタ値を、前記命令語の対応するフィールドに対して作用させることで、前記多重ループに対応する前記演算器制御信号を生成して、前記演算器に出力する処理を実行させ、
    前記ループ制御手段に、
    前記第nのループカウンタ値と前記第nのループ変数増分値とを加算して、前記第nの加算値を出力する処理と、
    前記第nのループカウンタ値と前記第nのループカウント最大値とを比較して、第nの比較結果を出力する処理と、
    前記第1乃至第nの比較結果に基づいて、前記第nのループカウンタ値、前記第nの加算値、およびゼロのいずれかを選択して、選択した値を前記第nの更新値として前記nのループカウンタに供給する処理と、
    前記第1乃至第Nの比較結果の論理和を求めて、前記ループ終了信号を出力する処理とを実行させる
    プログラム。
  7. ループ制御レジスタ組を含むループカウンタ群と、
    該ループカウンタ群の値に基づいて、前記ループカウンタ群を制御すると共に、ループ終了信号を生成するループ制御手段と、を備え、
    前記ループカウンタ群において、多重ループの第1乃至第N(Nは2以上の整数)の階層のために、前記ループ制御レジスタ組として、第1乃至第Nのループカウンタと、第1乃至第Nのループカウント最大値レジスタと、第1乃至第Nのループ変数増分レジスタとを含むループ制御装置において、
    前記ループ制御手段に、前記多重ループのループ制御を行うよう、前記ループ制御レジスタ組中の第n(1≦n≦N)のループカウンタの第nのループカウンタ値と第nのループカウント最大値レジスタの第nのループカウント最大値とを比較することでループ終了の判定する処理と、ループ終了の場合は前記第nのループカウンタのゼロリセットする処理と、ループ終了ではない場合は、前記第nのループカウンタ値に第nのループ変数増分レジスタの第nのループ変数増分値を加算して得られる第nの加算値を、新たな第nのループカウンタ値である第nの更新値として前記第nのループカウンタに保持する処理と実行させ、
    前記ループ制御手段に、ループ終了判定およびループカウンタ更新を、前記第1乃至第Nの階層にそれぞれ対応する前記第1乃至第Nのループカウンタに対して同時に行う処理を実行させ、
    前記ループ制御手段に、
    前記第nのループカウンタ値と前記第nのループ変数増分値とを加算して、前記第nの加算値を出力する処理と、
    前記第nのループカウンタ値と前記第nのループカウント最大値とを比較して、第nの比較結果を出力する処理と、
    前記第1乃至第nの比較結果に基づいて、前記第nのループカウンタ値、前記第nの加算値、およびゼロのいずれかを選択して、選択した値を前記第nの更新値として前記nのループカウンタに供給する処理と、
    前記第1乃至第Nの比較結果の論理和を求めて、前記ループ終了信号を出力する処理とを実行させる
    プログラム。
JP2019552388A 2017-11-13 2018-11-09 データ処理装置、ループ制御装置、データ処理方法、ループ制御方法およびプログラム Active JP6933263B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2017218089 2017-11-13
JP2017218089 2017-11-13
PCT/JP2018/041574 WO2019093451A1 (ja) 2017-11-13 2018-11-09 データ処理装置、ループ制御装置、データ処理方法、ループ制御方法および記録媒体

Publications (2)

Publication Number Publication Date
JPWO2019093451A1 JPWO2019093451A1 (ja) 2020-11-19
JP6933263B2 true JP6933263B2 (ja) 2021-09-08

Family

ID=66439213

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019552388A Active JP6933263B2 (ja) 2017-11-13 2018-11-09 データ処理装置、ループ制御装置、データ処理方法、ループ制御方法およびプログラム

Country Status (3)

Country Link
US (1) US11048511B2 (ja)
JP (1) JP6933263B2 (ja)
WO (1) WO2019093451A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11961420B2 (en) * 2019-01-07 2024-04-16 Cryptography Research, Inc. Efficient squaring with loop equalization in arithmetic logic units
EP3896565B1 (en) * 2020-04-16 2024-03-06 NXP USA, Inc. Memory address generator
JP7494287B2 (ja) * 2020-04-23 2024-06-03 長江存儲科技有限責任公司 メモリデバイスおよびそのプログラミング方法
US11907718B2 (en) * 2020-12-31 2024-02-20 Micron Technology, Inc. Loop execution in a reconfigurable compute fabric using flow controllers for respective synchronous flows

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS58127245A (ja) 1982-01-26 1983-07-29 Hitachi Ltd マイクロプログラム制御デ−タ処理装置
JPS618451A (ja) 1984-06-22 1986-01-16 Toyota Motor Corp 内燃機関の減速制御装置
JPS6232506A (ja) 1985-08-06 1987-02-12 Mitsubishi Electric Corp 数値制御装置
JPS6353644A (ja) 1986-08-23 1988-03-07 Nec Corp 命令制御装置
JPS6359174A (ja) 1986-08-29 1988-03-15 Toshiba Corp カラ−受像管
JPH0661449B2 (ja) 1988-06-30 1994-08-17 株式会社芦田製作所 オートクレーブのガス循環方法及びその装置
JPH07160585A (ja) 1993-12-13 1995-06-23 Hitachi Ltd 低電力データ処理装置
US5802375A (en) * 1994-11-23 1998-09-01 Cray Research, Inc. Outer loop vectorization
EP0992894A1 (en) 1998-10-06 2000-04-12 Texas Instruments Inc. Apparatus and method for loop execution
US6842895B2 (en) * 2000-12-21 2005-01-11 Freescale Semiconductor, Inc. Single instruction for multiple loops
JP2002304293A (ja) 2001-04-05 2002-10-18 Toshiba Corp プロセッサ装置、並びにアドレス更新方法及び繰り返しカウンタ更新方法
JP2004021890A (ja) 2002-06-20 2004-01-22 Pacific Design Kk データ処理装置
JP4673007B2 (ja) 2004-06-10 2011-04-20 キヤノン株式会社 ループ制御装置及びその制御方法
EP2144172A1 (en) 2008-07-07 2010-01-13 Mitsubishi Electric R&D Centre Europe B.V. Computation module to compute a multi radix butterfly to be used in DTF computation
JP2010277124A (ja) 2009-05-26 2010-12-09 Seiko Epson Corp 演算装置及び電子機器
US20140188961A1 (en) * 2012-12-27 2014-07-03 Mikhail Plotnikov Vectorization Of Collapsed Multi-Nested Loops
US10241793B2 (en) * 2013-03-15 2019-03-26 Analog Devices Global Paralleizing loops in the presence of possible memory aliases
GB2548602B (en) * 2016-03-23 2019-10-23 Advanced Risc Mach Ltd Program loop control

Also Published As

Publication number Publication date
JPWO2019093451A1 (ja) 2020-11-19
US11048511B2 (en) 2021-06-29
US20200293317A1 (en) 2020-09-17
WO2019093451A1 (ja) 2019-05-16

Similar Documents

Publication Publication Date Title
JP6933263B2 (ja) データ処理装置、ループ制御装置、データ処理方法、ループ制御方法およびプログラム
US10140251B2 (en) Processor and method for executing matrix multiplication operation on processor
US9355061B2 (en) Data processing apparatus and method for performing scan operations
US8595280B2 (en) Apparatus and method for performing multiply-accumulate operations
KR102413832B1 (ko) 벡터 곱셈 덧셈 명령
JP6373425B2 (ja) 複数のビットを左にシフトし、複数の1を複数の下位ビットにプルインするための命令
TWI502490B (zh) 用以處理加法指令之方法、及用以執行加法指令之裝置與系統
JP2005332361A (ja) プログラム命令圧縮装置および方法
US10489155B2 (en) Mixed-width SIMD operations using even/odd register pairs for wide data elements
TWI791694B (zh) 向量帶進位加法指令
JP6712052B2 (ja) 演算処理装置及び演算処理装置の制御方法
US20230289191A1 (en) Vertical and horizontal broadcast of shared operands
KR102365306B1 (ko) 데이터 처리장치 및 벡터 스캔 연산의 수행방법
JP2020527797A (ja) データ処理装置におけるベクトル・インタリーブ
JP4444305B2 (ja) 半導体装置
US11354126B2 (en) Data processing
US9348558B2 (en) Processor with efficient arithmetic units
US20140281368A1 (en) Cycle sliced vectors and slot execution on a shared datapath
JP6060853B2 (ja) プロセッサおよびプロセッサの処理方法
JP4703735B2 (ja) コンパイラ、コード生成方法、コード生成プログラム
Benson et al. OpenSPLySER: The Integrated OpenSPARC and DySER Design
JPWO2021160300A5 (ja)

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200422

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200422

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210615

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210701

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: 20210720

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210802

R150 Certificate of patent or registration of utility model

Ref document number: 6933263

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150