JP2011096254A - 乗累算演算を実行するための装置および方法 - Google Patents

乗累算演算を実行するための装置および方法 Download PDF

Info

Publication number
JP2011096254A
JP2011096254A JP2010242079A JP2010242079A JP2011096254A JP 2011096254 A JP2011096254 A JP 2011096254A JP 2010242079 A JP2010242079 A JP 2010242079A JP 2010242079 A JP2010242079 A JP 2010242079A JP 2011096254 A JP2011096254 A JP 2011096254A
Authority
JP
Japan
Prior art keywords
data element
multiply
input
data processing
accumulate
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.)
Granted
Application number
JP2010242079A
Other languages
English (en)
Other versions
JP5647859B2 (ja
Inventor
Dominic Hugo Symes
ドミニク・ヒューゴ・サイムス
Mladen Wilder
ムラデン・ワイルダー
Guy Larri
ガイ・ラリー
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.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines 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 ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2011096254A publication Critical patent/JP2011096254A/ja
Application granted granted Critical
Publication of JP5647859B2 publication Critical patent/JP5647859B2/ja
Expired - Fee Related 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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic 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
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • 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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (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)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

【課題】乗累算演算を実行するデータ処理装置及び方法を提供する。
【解決手段】該データ処理装置は、制御信号に応答して、入力データ要素において、データ処理演算を実行するデータ処理回路を含む。命令デコーダ回路は、入力オペランドとして、第1入力データ要素、第2入力データ要素及び述語値を指定する述語化された乗累算命令に応答して、データ処理回路を制御するように制御信号を生成し、第1入力データ要素および前記第2入力データ要素を乗算し、乗算データ要素を生成し、該述語値が第1の値を有する場合、該乗算データ要素を初期累算データ要素に加算して結果累算データ要素を生成し、該述語値が第2の値を有する場合、該初期累算データ要素から該乗算データ要素を減算して、該結果累算データ要素を生成することで、乗累算演算を実行する。本発明は、パフォーマンス、エネルギー消費及びコード密度を改善する。
【選択図】図2

Description

本発明は、乗累算(MAC)演算を実行するための装置および方法に関する。
乗累算(MAC)演算は、データ処理システムにおいて、頻繁に使用される。MAC演算は、A+B*CまたはA−B*Cの形式を採り得る。乗算演算B*Cは、一般に、BおよびCの異なる値に対して複数回行われ、その後、各乗算結果は、実行中の累算値Aに加算される(または減算される)。
多くの場合、連続MAC演算のパフォーマンスを最適化するように、専用のMAC回路が、データ処理システム内に提供される。かかるMAC回路は、スカラ処理回路内に提供され得、ここで、乗累算命令シーケンスは、乗累算演算の必要とされる反復を起動するために、順々に起動される。しかしながら、このような演算のパフォーマンスを加速させるための1つの既知のアプローチは、SIMD(単一命令複数データ)アプローチを採用することである。SIMDアプローチに従って、複数のデータ要素は、レジスタ内に並列して配置され、次いで、必要とされる演算が、多レーンの並行処理内でこれらのデータ要素において並行して実行される。単一の乗累算結果を生成するために必要とされる演算を考慮すれば、複数の別個の乗算演算が必要とされ、SIMDデータ処理回路を使用することによって、複数のこれらの必要とされる乗算が、乗累算演算のスループットを増加させるように、並行して実行され得ることを上記の考察から理解されよう。スカラ回路と同様に、SIMDデータ処理回路内では、専用のMAC回路が、乗累算演算のパフォーマンスを最適化するために提供され得る。
MAC演算を頻繁に使用するデジタル信号処理演算の一種が、フィルタ演算である。専用のMACユニットを使用する際、複合フィルタ演算を比較的迅速に実行することが可能である。かかるフィルタ演算を使用する1つの特定例では、受信した電波信号をパイロット信号と比較する際、パイロット信号が、受信機によって既知の基準信号として使用される。パイロット信号は、一般に、既知のパイロット波形を画定するように、既知の正の振幅と既知の負の振幅を繰り返す。このようなフィルタ演算を実行する際、乗加算または乗減算演算が必要とされるかどうかを決定する任意の特定の時点において、パイロット信号の形態で、フィルタリング演算を通して、乗加算および乗減算演算を実行することが必要である。
スカラMAC回路内でこのような演算を実行しようとする際、実行時に、必要とされる演算を起動する、乗加算命令および乗減算命令シーケンスを構成することが可能である。しかしながら、必要とされる乗加算および乗減算演算の正確なシーケンスについての決定は、実行時間よりもむしろコンパイル時間で行われることが必要であり、したがって、シーケンスは、特定のパイロット信号に対してのみ構成され得る。したがって、このようなアプローチは、柔軟性を欠き、コード密度の観点から望ましくない。
更に一般には、SIMD MAC回路内でこのようなフィルタ演算を実行することが所望され得る。かかる状況において、複数の乗加算演算が多レーンの処理内で並行して実行されるように、乗加算命令を発出することができ、同様に、複数の乗減算演算が多レーンの処理内で並行して実行されるように、乗減算命令を発出することができる。先述のフィルタ演算を実行するために、一般に、例えば、乗加算命令等のある形態の命令を使用し、次いで、データ要素のベクトルとして、既定の時間間隔で、パイロット信号の振幅をコード化する、即ち、正および負の振幅値の両方を直接識別することが必要であり得る。これは、パイロット情報をコード化するためにメモリ内の多くのスペースを必要とし、情報のこれらの大きなベクトルは、パイロット信号が変更されるたびに、再計算する必要がある。更に、パイロット信号は同一のままだが、受信特性の変動によりパイロット信号の振幅が変更された場合、メモリ内のベクトルを、再プログラム化する必要がある。
代替的に、乗加算命令および乗減算命令の両方の試行および使用を決定した場合、これは、一般に、いくつかのデータ再配列問題、およびコード密度問題も引き起こす。
したがって、フィルタ演算を実行するために専用のMAC回路を使用することが望ましいが、既知のMAC技法を使用して、効率的にある種のフィルタ演算を実行することは困難である。
乗算データ要素の1つ(例えば、先に言及される要素C)は、一定の大きさであるが、符号変換のみ(実際には、先述のパイロット信号の場合)である際に採用され得る代替的なアプローチは、加算器ユニット内で加算および減算シーケンス、次いで、一定の振幅値による結果の単一乗算を実行することである。かかる加算器ユニット内で、述語化された加算/減算命令を提供することは公知であり、これは、命令において提供される述語値に依存して、2数の加算、あるいは2数の減算のいずれかを実行し得る。このような命令は、加算および減算演算シーケンスを実行するために柔軟性を提供する一方、加算器回路は、一般に、加算および減算演算シーケンスに対する結果の連続累算用のハードウェアに最適化されず、ひいては、専用のMAC回路が提供するパフォーマンスを提供しない可能性がある。更に、加算器ユニット内で実行中の累算値は、一般に、入力オペランドと同一の大きさのレジスタ内に保持され、それに応じて、実行中の累算値が、オーバーフロー、またはアンダーフローしないことを確実にするために、多くの配慮が必要とされ、一般に、これは、累算プロセスを通して、様々な評価およびシフト型の演算の使用を必要とし、更にパフォーマンスに影響を及ぼす。対照的に、MACユニットにおいて、累算値は、一般に、入力オペランドより大きいレジスタ内に保持され、それによって、オーバーフローまたはアンダーフローのリスクを伴わずに、より高精度の累算値を維持することが可能である。更に、加算器回路を使用し、次いで、必要とされる加算を使用する際、起動される別個の乗算命令に対して、フィルタ演算を完了するために必要とされる乗算を実行することが必要であろう。
したがって、別個の加算器回路内でのかかるフィルタ演算、次いで、別個の乗算器回路内での乗算により、実行しようとすることは、概して、不可能であると考えられている。
したがって、乗累算演算を乗累算回路内で効率的に実行することが可能な技法を提供することが望ましく、乗加算および乗減算演算の可変シーケンスが必要とされる状況において、例としては、先述のフィルタ演算における場合である。
第1の態様から見ると、本発明は、制御信号に応答して、少なくとも1つの入力データ要素において、データ処理演算を実行するデータ処理回路と、前記データ処理回路に連結され、かつプログラム命令に応答して前記制御信号を生成する命令デコーダ回路と、を含む、データ処理装置を提供し、前記命令デコーダ回路は、入力オペランドとして、第1の入力データ要素、第2の入力データ要素、および述語値を指定する述語化された乗累算命令に応答して、前記データ処理回路を制御するように制御信号を生成し、前記第1の入力データ要素および前記第2の入力データ要素を乗算し、乗算データ要素を生成するステップと、該述語値が、第1の値を有する場合、該乗算データ要素を初期累算データ要素に加算することによって、結果累算データ要素を生成するステップと、該述語値が、第2の値を有する場合、該初期累算データ要素から該乗算データ要素を減算することによって、該結果累算データ要素を生成するステップと、により、乗累算演算を実行する。
本発明に従って、命令デコーダ回路によってデコードされる場合、該データ処理回路に、該命令によって指定される述語値の値に依存して、乗加算あるいは乗減算演算のいずれかを実行させる、述語化された乗累算命令を提供する。これらの述語化された乗累算命令のうちの1つまたはそれ以上を用いることによって、効率的な方法において、専用のMAC回路内で、複合フィルタ演算を実行することが可能である。特に、乗加算または乗減算演算が必要であるかどうかについての決定は、コンパイル時間よりもむしろ実行時間を要し、有意なコード密度の改善をもたらし得る。更に、述語値の使用は、特に、データ要素のうちの1つが、複数の乗累算演算にわたり正号または負号形式で再使用される、乗算される入力データ要素の詳細を保持するのに必要とされるメモリの量を軽減することができる。各乗累算演算に対するそのデータ要素の値を別個に記憶することを必要とする代わりに、マグニチュードは、単一のスカラレジスタにおいて記憶され得、各乗累算演算に対して別個の述語値を提供し、加算または減算を必要とするかどうかを識別し、メモリ資源の更に効率的な使用をもたらすことができる。
本発明のアプローチは、乗加算演算と乗減算演算の組み合わせを必要とする乗累算演算シーケンスを実行する際、専用のMACユニットを用いるパフォーマンス利益を達成することが可能である。本発明のアプローチを採用する際、既知の先行技術技法と比較して、エネルギー消費の有意な減少を達成することができる。
一実施形態において、該データ処理回路は、前記入力オペランドを記憶するための少なくとも1つのレジスタバンクを更に含み、ここで、前記述語化された乗累算命令は、前記述語値を含む少なくとも1つのレジスタバンクのレジスタを識別する。専用の述語レジスタバンクを提供することができる、または代替的に、汎用レジスタバンクのレジスタ内に、述語値を記憶することができる。
本発明の一実施形態の述語化された乗累算命令が、スカラ処理回路内で起動され得る一方、一実施形態において、データ処理回路は、N行の並行処理を提供するSIMDデータ処理回路であり、Nは、1を超える整数であり、SIMDデータ処理回路は、制御信号に応答して、前記N行の並行処理の各々において、データ処理演算を並行して実行する。かかる実施形態において、前記述語化された乗累算命令は、入力オペランドとして、第1のベクトルを形成する複数の前記第1の入力データ要素を指定し、前記命令デコーダ回路は、乗累算演算への入力に対して選択される前記第1のベクトルからの第1の入力データ要素が、該乗累算演算が実行される並行処理のレーンに依存するように、述語化された乗累算命令に応答して、前記データ処理回路を制御するように制御信号を生成し、前記N行の並行処理の各々において、前記乗累算演算を並行して実行する。このようなアプローチは、乗累算演算の乗算反復を並行して実行することによって、スカラプロセッサ内でMAC演算のパフォーマンスと比較すると、有意なパフォーマンス利益を提供することができる。
一実施形態において、述語化された乗累算命令は、全てのレーンにわたり適合される単一の述語値を指定し得るか、または乗算述語値を指定し得、例えば、各レーンに対して別個の述語値を指定し、それによって、述語化された乗累算命令の使用において、多くの柔軟性を提供することが可能である。
一実施形態において、前記述語化された乗累算命令は、入力オペランドとして、第2のベクトルを形成する複数の前記第2の入力データ要素を更に指定し、乗累算演算への入力に対して選択される前記第2のベクトルからの前記第2の入力データ要素は、該乗累算演算が実行される並行処理のレーンに依存する。
しかしながら、代替的な実施形態において、前記述語化された乗累算命令は、入力オペランドとして、スカラの第2の入力データ要素を更に指定し、それは、その後、第2のベクトルを形成するためにデータ処理回路内で複製され、それによって、該同一の第2の入力データ要素が、前記乗累算演算が実行される並行処理の各レーンにおいて、使用される。このようなアプローチは、例えば、パイロット信号に対して先述のフィルタ演算を実行する際に使用され得、第2の入力データ要素は、述語値を有するパイロット信号の振幅(一般に、定数であり得る)を指定し、その後、振幅値の記号、ひいては、フィルタプロセスにおいて、任意の特定の点において、乗加算または乗減算演算を必要とするかどうかを識別する。
一実施形態において、前記述語化された乗累算命令は、入力オペランドとして、第3のベクトルを形成する複数の前記述語値を指定し、乗累算演算への入力に対して選択される前記第3のベクトルからの述語値は、該乗累算演算が実行される並行処理のレーンに依存する。第3のベクトルにおいて、述語値数は、実装に依存して異なり得る。例えば、あるレーンは、グループ化され、同一の述語値で制御され得る。しかしながら、一実施形態において、該第3のベクトルは、前記N行の並行処理の各々内で、該乗累算演算が、独立して、乗加算または乗減算演算を実行するように設定することが可能であるように、Nの述語値を指定する。したがって、これは、述語化された乗累算命令がどのように使用されるかにおいて、有意な柔軟性を提供し、乗累算演算の複合シーケンスを容易に実装することが可能である。
初期累算データ要素は、様々な方法において指定され得る。例えば、一実施形態において、述語化された乗累算命令は、入力オペランドとして、初期累算データ要素を指定し得る。代替的に、初期累算データ要素は、既定値がゼロである、即ち、初期累算データ要素がない、特定の一例において、いくつかの既定値を取り得る。
述語化された乗累算命令が、SIMDデータ処理回路内で起動される、一実施形態において、述語化された乗累算命令は、入力オペランドとして、第4のベクトルを形成する複数の前記初期累算データ要素を指定し、乗累算演算への入力に対して選択される前記第4のベクトルからの初期累算データ要素が、該乗累算演算が実行される並行処理のレーンに依存する。
一特定の実施形態において、第1、第2、および第4のベクトルの各々は、N行のデータ要素を有する。更に、一実施形態において、第3のベクトルは、N行の述語値を有する。
一実施形態において、各第1の入力データ要素は、Xビットを含み、各第2の入力データ要素は、Yビットを含み、各初期累算データ要素は、少なくともX+Yビットの大きさである。多くの場合、データ処理回路は、各累算データ要素が、X+Yビットの大きさよりも大きくなるように、第1および第2の入力データ要素を提供するレジスタよりも大きいレジスタ内で累算データ要素を保持し得る。一特定例において、XおよびYはそれぞれ、16ビットであり、累算データ要素は、40ビットレジスタ内に保持される。このようなアプローチによって、オーバーフローのリスクを伴わずに、ひいては、追加の演算の組み込みを必要とせずに、高精度の累算結果が維持され、オーバーフロー条件を識別する際、オーバーフロー状況をモニタリングし、付随するシフト操作を実行することができる。
第1のデータ要素および第2のデータ要素は、同一の大きさである必要がない一方、一実施形態において、Xは、Yと等しく、それに応じて、第1および第2のデータ要素は、同一の大きさである。
一実施形態において、述語値を含む少なくとも1つのレジスタバンクはまた、前記第1および第2の入力データ要素を記憶するための入力レジスタを含む入力データ要素レジスタバンク、ならびに各初期累算データ要素および結果累算データ要素を記憶するための累算レジスタを有する累算レジスタバンクも含む。先述のとおり、多くの場合、累算レジスタは、入力レジスタよりも大きいであろう。
一実施形態において、第1の入力データ要素、第2の入力データ要素、および累算データ要素は全て、実数である。しかしながら、代替的な実施形態において、第1の入力データ要素および第2の入力データ要素のうちの少なくとも1つは、実数部および虚数部を含む複素数であり、データ処理回路によって実行される乗累算演算は、結果累算データ要素として、実数部および虚数部を有する複素数を生成する複素乗累算演算である。
一実施形態において、第1の入力データ要素および第2の入力データ要素のうちの1つだけが、複素数である。例えば、第1の入力データ要素は、複素数であり得る一方、第2の入力データ要素は、実数として係数を提供し得る。1つのかかる実施形態において、係数データ要素は、複素乗累算演算を実行する前に、複素形式に変換され得る。
別の実施形態において、第1の入力データ要素および第2の入力データ要素は共に、実数部および虚数部を含む複素数である。
一実施形態において、複素乗累算演算は、対応する複素結果累算データ要素の実数部および虚数部を生成するために、乗加算および減算演算シーケンスのパフォーマンスを含む。
一実施形態において、対応する第1および第2のデータ要素の実数部および虚数部の両方に関しては、実行される乗累算演算を制御するように、単一の述語値を提供することができる。しかしながら、代替的な実施形態において、述語値は、複素乗累算演算の異なる部分を制御するために使用される少なくとも2つの述語値を含む。
1つの例示的な実施形態において、述語値は、複素結果累算データ要素の実数部を生成するために実行される乗累算演算に対する第1の述語値、および複素結果累算データ要素の虚数部を生成するために実行される乗累算演算に対する第2の述語値を含む。これにより、複素数に関連して、述語化された乗累算命令の使用において、更に柔軟性を提供する。
別の例示的な実施形態において、複素結果累算データ要素の実数部を生成するために実行される乗累算演算および複素結果累算データ要素の虚数部を生成するために実行される乗累算演算は共に、第1および第2の乗算演算を含み、述語値は、第1の乗算演算に対する第1の述語値、および第2の乗算演算に対する第2の述語値を含む。また、これにより、複素数に関連して、述語化された乗累算命令の使用において、更に柔軟性を提供する。
代替的な実施形態において、第1の入力データ要素および第2の入力データ要素のうちの少なくとも1つは、浮動小数点数であり、データ処理回路によって実行された乗累算演算は、結果累算データ要素として、浮動小数点数を生成する、浮動小数点の乗累算演算である。かかる実施形態において、データ処理回路は、一般に、必要とされる乗累算演算を実行するために、浮動小数点の乗算および加算回路を含み得る。
一実施形態において、第1の入力データ要素および第2の入力データ要素のうちの1つだけは、浮動小数点数であり、他の入力データ要素は、固定小数点数である。しかしながら、一実施形態において、第1の入力データ要素および第2の入力データ要素は共に、浮動小数点数である。
第2の態様から見ると、本発明は、制御信号に応答して、少なくとも1つの入力データ要素において、データ処理演算を実行するデータ処理回路と、前記データ処理回路に連結され、かつプログラム命令に応答して、前記制御信号を生成する命令デコーダ回路と、を使用してデータを処理する方法を提供し、該方法には、制御信号を生成するために、入力オペランドとして、第1の入力データ要素、第2の入力データ要素、および述語値を指定する述語化された乗累算命令をデコードするステップと、前記制御信号を使用して前記データ処理回路を制御し、前記第1の入力データ要素および前記第2の入力データ要素を乗算し、乗算データ要素を生成するステップ、該述語値が、第1の値を有する場合、該乗算データ要素を初期累算データ要素に加算することによって、結果累算データ要素を生成するステップ、および該述語値が、第2の値を有する場合、該初期累算データ要素から該乗算データ要素を減算することによって、該結果累算データ要素を生成するステップにより、乗累算演算を実行するステップと、を含む。
第3の態様から見ると、本発明は、データプロセッサ上での実行時、該データプロセッサを制御し、本発明の第2の態様に従う方法のステップを実行する、少なくとも1つの述語化された乗累算命令を含む、コンピュータプログラム製品を提供する。
第4の態様から見ると、本発明は、データ処理装置の仮想機械実装を提供し、前記仮想機械実装は、入力オペランドとして、第1の入力データ要素、第2の入力データ要素、および述語値を指定する述語化された乗累算命令に応答して、前記第1の入力データ要素および前記第2の入力データ要素を乗算し、乗算データ要素を生成するステップと、該述語値が、第1の値を有する場合、該乗算データ要素を初期累算データ要素に加算することによって、結果累算データ要素を生成するステップと、該述語値が、第2の値を有する場合、該初期累算データ要素から該乗算データ要素を減算することによって、該結果累算データ要素を生成するステップと、により、乗累算演算を実行する。
本発明は、以下の添付図面において説明されるように、例示として、その実施形態を参照して、更に記載され得る。
本発明の実施形態の技法が採用され得る、データ処理装置を図式的に説明するブロック図である。 一実施形態に従って、どのように図1のSIMD回路を使用して、述語化された乗累算命令に応答して、乗加算および乗減算演算を実行するかを図式的に説明する図である。 一実施形態に従って、SIMD回路内で並行処理する各レーンに対する図2の加算器制御回路の演算を図式的に説明する。 乗加算または乗減算演算のパフォーマンスを制御するために、加算器制御回路からの出力が、どのように並行処理の各レーン内で使用されるかを説明する。 一実施形態に従って、述語化された乗累算命令に応答して、実行される乗累算処理を説明する図である。 本発明の実施形態の述語化された乗累算命令を利用するプログラムコードを実行するための仮想機械実装を図式的に説明する図である。
本発明の実施形態に従って、述語化された乗累算(述語化されたMAC)命令を提供する。スカラ処理回路で起動されることを目的とする命令のスカラバージョンに関しては、該命令は、入力オペランドとして、命令を起動する際、乗加算または乗減算演算を実行するかどうかを制御するために使用される第1の入力データ要素、第2の入力データ要素、および述語値を取得する。任意に、述語化されたMAC命令もまた、入力オペランドとして、初期乗累算データ要素(本明細書において、初期累算データ要素とも称される)を取得し得る。
しかしながら、本発明の一実施形態を説明するために、述語化された乗累算命令が、複数の乗累算演算を並行して実行するために、SIMD回路内で起動することを意図すると仮定され得る。かかる実施形態において、述語化されたMAC命令は、入力オペランドとして、第1の入力データ要素の第1のベクトル(va)、第2の入力データ要素の第2のベクトル(vb)、および述語値のベクトル(vp)を取得する。任意に、述語化されたMAC命令はまた、入力オペランドとして、初期累算データ要素のベクトル(vacc)も取得し得る。一実施形態において、第2のベクトルは、述語化されたMAC命令によって識別されたSIMDレジスタ内に直接記憶され、代替的な実施形態において、述語化されたMAC命令は、第2の入力データ要素として単一のスカラ値を指定し得、第2のベクトルは、SIMD回路内に存在する多レーンの並行処理にわたる単一のスカラ値を複製することによって、構成され得る。
一実施形態において、全てのベクトルは、本明細書において、Nと称される、同数の要素を有するが、各ベクトルにおいて、データ要素は、異なる幅を有し得る。例えば、一実施形態において、ベクトル累算器において、各データ要素は、少なくとも32ビット幅である一方、入力ベクトルvaおよびvbにおいて、データ要素は、16ビット幅である。述語ベクトルにおいて、要素は、加算または減算演算が、対応するレーンの並行処理において必要されるかどうかを指定するためには、1ビット幅のみ必要とする。
述語化されたMAC命令が起動される際、実行された乗累算演算は、ベクトル累算器出力(ここで、0<=i<N)を生成する。
vacc[i]=vacc[i]+va[i]*vb[i] if vp[i]=true
vacc[i]=vacc[i]−va[i]*vb[i] if vp[i]=false
図1は、本発明の一実施形態に従って、データ処理装置を図示し、この特定例において、データ処理装置は、デジタルシグナルプロセッサ(DSP)100の形態を採る。DSP100によって実行された演算は、様々な形態を取得することができ、一実施形態において、DSPは、無線ベースバンド処理機能を実行するために使用され得る。無線ベースバンドは、このような集積回路の処理機能において高い需要がある。必要とされるデータスループットは、大きく、効率性が高い要素の全てを使用するために、DSP内で提供される異なる要素の平衡を保つことは重要である。図1に示されるように、DSPは、SIMD乗累算回路110および様々な他のSIMD処理回路120を含むSIMD部分105を含む。SIMD MAC回路110および他のSIMD処理回路120は共に、SIMD処理回路によって必要とされるデータ要素のベクトルを記憶するSIMDレジスタバンク140にアクセスできる。SIMD MAC回路110はまた、MAC演算時、生成される累算データ要素を保持するために使用される1つまたはそれ以上のSIMD累算レジスタ130にアクセスでき、更に、本発明の実施形態に従って、述語化されたMAC命令に応答して乗累算演算を実行する際、使用される述語値を記憶する1つまたはそれ以上のSIMD述語レジスタ135にアクセスできる。レジスタ130、135、および140が、物理的に別個にレジスタバンクに提供され得る一方、代替的な実施形態において、それらは、単一のレジスタバンク137によって提供され得る。
一例において、SIMD MAC回路110および他のSIMD処理回路120は、処理の32並行レーン(各16ビット幅)を有し、それは、算術値が、SIMDレジスタバンク140から提供されると、乗算、加算、およびシャッフル演算を実行するために使用され得る。16ビットのデータワードが、並行処理のレーンの各々に対して必要とされる入力値を提供するために、SIMDレジスタバンク140内で、1つまたはそれ以上の入力値レジスタ内でそれぞれの要素から取得される。
多くの場合、SIMD回路は、パイプラインであり得、一実施形態において、SIMD MAC回路110は、計算の結果について、計算がパイプラインに出された後、3サイクルが可能であるように、3つのステージパイプラインを形成する。
一実施形態において、それぞれの処理レーンは、コントローラ160によってプログラムメモリ165から読み出された256ビットの超長命令語(VLIW)命令である。このVLIW命令はまた、一般に、DSP100のスカラ部分145内でスカラ処理回路を制御するために使用されたスカラ命令も含み得、スカラ処理回路は、1つまたはそれ以上のスカラレジスタバンクにアクセスできる。コントローラ160は、VLIW命令内で命令をデコードし、かつ、SIMD部分105内の回路およびスカラ部分145内の回路に必要とされる制御信号を送信するために使用される1つまたはそれ以上の命令デコーダを含み得る。コントローラはまた、SIMDレジスタバンク140あるいはスカラレジスタバンクのいずれかに記憶するために、または記憶されたデータをこれらのレジスタバンクからデータメモリ175にバックアウトするために、ロード/記憶ユニット170に必要とされる限り、データをデータメモリ175から読み出すための制御信号を送信し得る。
本発明の実施形態の説明の目的で、スカラ部分145内でスカラ処理回路の操作は、関連しない。しかしながら、概説すると、スカラ処理回路は、一般に、上述のSIMD処理回路を用いて並行して操作し、主として、制御操作を実行するのに役立つ。スカラ処理回路の1つはまた、データメモリ175において、データ値にアクセスするために使用されるメモリアクセスアドレスを生成するのに関与するアドレス生成ユニットを制御し得る。一実施形態において、スカラ処理回路は、1つから3つのパイプラインステージを有し、データメモリ175は、3サイクルまたは6サイクルのレイテンシを有する。
本発明の実施形態の述語化されたMAC命令を考慮すると、このような命令は、プログラムメモリ165からコントローラ160によって読み出されたVLIW命令内で出現し得、述語化されたMAC命令をデコードすると、制御信号は、SIMD部分105に、特に、SIMD MAC回路110に発出され、SIMD MAC回路に、N行の並行処理の各々において、乗累算演算を並行して実行させ得る。述語化されたMAC命令は、述語値のベクトルを含む述語レジスタ135内でレジスタを指定し得、各値は、レーンのうちの1つと関連し、レーンが、乗加算または乗減算演算を実施する場合に、乗累算演算が実行されるかどうかを指示する。
代替的な実施形態において、述語値は、他の方法において指定され得る。例えば、いくつかの状況において、各レーンに対する別個の述語値を指定するために必要としない場合があり、あるレーンは、同一の述語値を使用するために配置され得る。更に、いくつかの実施形態において、述語値は、述語レジスタに直接指定されるよりも他の情報を参照することにより指定され得る。一例として、ある命令の条件付きの実行に対応する命令セットを起動する際、通常、命令を起動するかどうかを決定するために、これらの条件の存在を評価することが可能である装置内に条件付きのコードのセットを保管する(かかるコードの一例は、ARMプロセッサにより保管されるN、Z、C、およびV条件コードビットである)。いくつかの実施形態において、述語値は、これらの条件付きコードビットの1つを参照して、決定され得る。
図2は、述語化されたMAC命令に応答して、乗累算演算を実行する際の、SIMD MAC回路110の演算を図式的に説明する。述語化されたMAC命令を実行する前に、入力データ要素の必要とされるベクトルは、ベクトルレジスタバンク140内に記憶され得、任意の初期累算データ要素は、累算器レジスタバンク130において、ベクトルとして記憶され得る。同様に、述語値のベクトルは、述語レジスタバンク135内に記憶され得る。これらのデータ要素および述語値を、レジスタバンク内に記憶することが可能な多くの方法があることを理解されたい。例えば、ロード命令は、データメモリ175からレジスタに、これらのデータ要素および述語値をロードするために起動され得る、または代替的に、関連値は、SIMD MAC回路110または他のSIMD処理回路120によって実行される前述の演算の出力として、レジスタ内に直接記憶され得る。
述語化されたMAC命令がデコードされると、コントローラ160は、述語レジスタバンク135内で識別されたレジスタのコンテンツに依存して、並行処理の各レーンに対して、加算器制御ブロックに制御信号を発出させるように、加算器制御ブロック210に制御信号を発出し得る。
図2に図式的に示されるように、SIMD MAC回路110は、図2の符号215、220によって示された並行処理の複数のレーンの各々に対して、乗算器回路217および加算/減算回路219から構成されると考えられる。入力データ要素は、各レーンにベクトルレジスタバンク140から読み込まれ、ここで、これらは、加算/減算回路219に転送された乗算データ要素を生成するために、乗算器217によって乗算される。加算/減算回路は、任意に、累算器レジスタバンク130からの初期累算値を受信し、次いで、加算器制御ブロック210から受信した制御信号に基づいて、累算データ要素に乗算データ要素を加算するか、あるいは、累算データ要素から乗算データ要素を減算する。結果として得られた累算データ要素は、次いで、累算器レジスタバンク130中に記憶するために戻される。転送パス(図示せず)はまた、累算レジスタバンクから値を読み込むことを必要とせずに、その後のMAC演算で使用するために加算/減算回路への入力として、出力累算データ要素に直接戻せるように提供され得る。
加算器制御ブロック210は、様々な方法において構成され得る。図3は、1つの好適な実施形態を説明し、ここで、加算器制御ブロックは、効率的に、並行処理の各レーンに対して、2つの入力マルチプレクサを含む(図3のマルチプレクサ250によって集合的に示される)。該マルチプレクサの第1の入力は、コントローラ160からの加算/減算制御信号出力を受信し、述語化されたMAC命令がない場合は、マルチプレクサ制御信号はまた、マルチプレクサへの第1の入力が、各レーン内の加算器回路を制御するために使用されるように、コントローラ160によっても発出され得る。したがって、乗加算命令が起動される場合、コントローラ160は、実行すべき加算を生じるように、各レーンにおいて、加算/減算回路219までマルチプレクサ250を経由し得る加算/減算制御信号を発出し得る。同様に、乗減算命令が起動される場合、コントローラ160によって発出される加算/減算制御信号は、実行すべき減算を生じるように、各レーンにおいて、加算/減算回路219までマルチプレクサを経由し得る。
しかしながら、述語化されたMAC命令がデコードされる場合には、代わりに、マルチプレクサ制御信号が、加算/減算回路219までルーティングするために、その第2の入力をマルチプレクサ250に選択させるように設定され得る。図3に示されるように、この第2の入力は、述語レジスタバンク135によって提供され、特に、述語化されたMAC命令によって識別されるように、述語レジスタバンク内のレジスタのうちの1つによって提供され得る。N行の並行処理があると仮定すれば、この第2の入力は、したがって、少なくともNビットの大きさであり得、並行処理の各レーンに対して少なくとも1つの述語値を提供する。したがって、並行処理の各レーンに対して、その述語レジスタによって提供される述語値のベクトルにおいて、関連述語値は、加算または減算が実行されるかどうかを制御するために、そのレーンに対して、加算/減算回路219までマルチプレクサ250を経由し得る。
加算/減算回路219が、加算器制御ブロック210によって発出される制御信号に応答するように配置され得る多くの方法がある。図4は、一実施形態を図式的に説明し、ここで、各レーン内の乗算器270からの出力は、ネゲート回路272によってネゲートされ、次いで、元の乗算結果とネゲートされた乗算結果の両方を、入力として、マルチプレクサ275に提供し、これらの演算を加算器制御ブロック210からの出力によって制御する。次いで、マルチプレクサからの出力は、加算器280に入力され、マルチプレクサからの出力と任意の入力累算値との加算を実行する。したがって、並行処理の特定のレーンに対して、述語値が、乗加算演算が実行されることを示す場合、マルチプレクサ275にネゲートされない入力は、加算が選択され得る。反対に、対応するレーンに対して、述語値が、乗加算演算が実行されることを示す場合、マルチプレクサ275にネゲートされた入力は、加算器280への転送が選択される。
図5は、本発明の実施形態において、N行内のSIMD MAC回路110によって実行される乗累算演算を図式的に説明する。図5に示されるように、乗算器回路内のN行は、N行の第1の入力データ要素400およびN行の第2の入力データ要素410を受信し、それに基づいて、N行の乗算データ要素420の生成をもたらす、必要とされる乗算を実行する。入力データ要素の各々が、16ビット幅であると仮定すると、乗算データ要素の各々は、少なくとも32ビット幅であり得る。
その後、N行の乗算データ要素は、各レーンに対して提供される述語値に依存して、N行の初期累算データ要素に加算される、またはN行の初期累算データ要素から減算される。N行の初期累算データ要素は、述語化されたMAC命令によって識別された累算器レジスタのコンテンツによって指定され得る、または一実施形態において、規定され得る(例えば、ゼロ)。
N行内で実行される様々な加算および減算は、N行の乗累算(結果)データ要素440の生成をもたらし、累算器レジスタバンク130内の関連SIMD累算器レジスタに戻って記憶される。図5に示されるように、これらの個別の結果累算データ要素は、対応するレーンに適用できる述語値に依存して、乗加算演算、あるいは乗減算演算のいずれかの結果を示し得る。
上記の例において、述語値の「1」は、乗加算演算を示し、述語値の「0」は、乗減算演算を示すが、これらの値の意味は、必要に応じて、逆転され得る。
以下のCコードは、初期累算値のベクトルを指定する述語化された乗累算命令、および初期累算値のベクトルが指定されない述語化された乗累算命令の両方に対して、標準ベクトル抽出およびスカラ乗算によるベクトルに関して、上述の乗累算演算の機能論的モデルを提供する。
1) 初期累算値のベクトルがある述語化されたMAC命令
vint32L_t vcmlamlsl_s16(vint32L_t vacc, vint16_t va, vint16_t vb, vbool16_t vp)

VNEW_s32L(res);
uint_t i;

for (i=0; i<n; i++) {
int_32L tmp;
if (VGET_p16(vp,i) == true) {
tmp = mlal_s16(VGET_s32L(vacc,i),VGET_s16(va,i), VGET_s16(vb,i));
} else {
tmp = mlsl_s16(VGET_s32L(vacc,i),VGET_s16(va,i), VGET_s16(vb,i));

VSET_s32L(res,i,tmp);

return res;
上記のCコードの1行目は、入力として、入力データ要素ベクトルvaおよびvb、初期累算ベクトルvacc、ならびに述語値ベクトルvpを取る、述語化された乗累算命令(本明細書において、乗加算/乗減算(mlamls)命令と称される)を識別する。次いで、命令に応答して実行される演算は、Cコードの残りに設定される。第1に、結果ベクトル「res」を示し、整数変数iを示す。2つの16ビット入力データ要素を乗算することによって生成される乗算結果に適合するために、ベクトルvaおよびvb内の個別データ要素が、16ビット幅である一方、ベクトルvaccおよびベクトルres内の個別データ要素は、32ビット幅である。
次いで、ループを入力し、これは、0とN−1の間の全てのiの値に対して反復される。上記のCコードに示されるように、ループの各反復において、述語値が真であるならば、vaおよびvbの入力は、乗算され、次いで、vacc入力(mlal_s16)に加算される。さもなければ、vaおよびvbの入力は、乗算され、次いで、vacc入力(mlsl_s32)から減算される。結果は、32ビットの整数「tmp」として記憶される。
VGET/VSET_*機能は、例えば、VSET_s32L(res,i,tmp)が、ベクトル「res」において、i番目の要素に、「tmp」の値を書き込むような、1つのベクトル要素を読み込む、または書き込むために使用される。
2) 初期累算がない述語化されたMAC命令
vint32L_t vcmulnegl_s16(vint16_t va, vint16_t vb, vbool16_t vp)

VNEW_s32L(res);
uint_t i;

for (i=0; i<n; i++) {
int_32L tmp;
if (VGET_p16(vp,i) == true) {
tmp = mull_s16(VGET_s16(va,i), VGET_s16(vb,i));
} else {
tmp = neg_s32(mull_s16(VGET_s16(va,i), VGET_s16(vb,i)));

VSET_s32L(res,i,tmp);

return res;
本例において、述語化されたMAC命令は、乗算/ネゲート命令として称される。上記のCコードに示されるように、述語値が真であるならば、入力は共に、乗算される(mull_s16)。さもなければ、入力は共に、乗算され、次いで、結果は、ネゲートされる(neg_s32)。
先述の例と同様に、VGET/VSET_*機能は、例えば、VSET_s32L(res,i,tmp)が、ベクトル「res」において、i番目の要素に、「tmp」の値を書き込むような、1つのベクトル要素を読み込む、または書き込むために使用される。
上述の実施形態において、第1の入力データ要素、第2の入力データ要素、および累算データ要素は全て、実数であると仮定される。しかしながら、実施形態は、実数と共に使用するとは限定されない。例えば、代替的な実施形態において、第1の入力データ要素および第2の入力データ要素のうちの1つまたは両方は、実数部および虚数部を含む複素数であり得、乗累算演算が、各レーン内のSIMD MAC回路110によって実行される場合、結果累算データ要素として、複素数のベクトルを生成し、各々は、実数部および虚数部を有する、複素乗累算演算であり得る。
複素乗累算演算が実行される例を考慮すると、各々の乗算は、対応する複素乗算結果データ要素の実数部および虚数部を生成するために、乗加算および乗減算演算シーケンスのパフォーマンスを含み得る。特に、va[i]*vb[i]の一般例を考慮すると、以下の計算が、実行され得る。
Multiply real part result=vbR[i]*vaR[i]−vbI[i]*vaI[i]
Multiply imaginary part result=vbR[i]*vaI[i]+vbI[i]*vaR[i]
(ここで、「R」は、実数部を示し、「I」は、虚数部を示す)。
実数および虚数の乗算結果は、次いで、前述の実数および虚数累算結果と共に累算され得る。
上記の例において、入力データ要素は共に、複素数である一方、代替的な実施形態において、これらのうちの1つのみが、入力ベクトルにおいて、複素数として、提供され得る。例えば、第1の入力データ要素が複素数として提供され得る一方、第2の入力データ要素は、実数として提供され得る。
一実施形態において、このような状況は、上述の複素数実施形態の特別な場合として処理され、ここで、vbにおいて、データ要素が実数である一方、vaおよびvaccベクトルにおいて、データ要素は、複素数である。この演算を実行するために、実数vb要素は、以下の通りに内部で複素数に変換され得る。
internal_vbR[k]=vb[k]
internal_vbI[k]=0
次いで、複素乗累算演算が、上に述べられるように、実行され得る。
したがって、複素乗累算演算に対して、2つの別個の乗累算演算が、以下の通りに実行されることが見られる。
vaccR[i]=vaccR[i]+(vbR[i]*vaR[i]−vbI[i]*vaI[i])
vaccI[i]=vaccI[i]+(vbR[i]*vaI[i]+vbI[i]*vaR[i])
一実施形態において、対応する第1および第2のデータ要素の実数部および虚数部の両方に関しては、実行される乗累算演算を制御するように、単一の述語値を提供することができる。その場合には、以下のオプションが、上述の2つの乗累算演算に対して可能である。
vaccR[i]=vaccR[i]+(vbR[i]*vaR[i]−vbI[i]*vaI[i]) if vp[i]=true
vaccR[i]=vaccR[i]−(vbR[i]*vaR[i]−vbI[i]*vaI[i]) if vp[i]=false
vaccI[i]=vaccI[i]+(vbR[i]*vaI[i]+vbI[i]*vaR[i]) if vp[i]=true
vaccI[i]=vaccI[i]−(vbR[i]*vaI[i]+vbI[i]*vaR[i]) if vp[i]=false
しかしながら、代替的な実施形態において、述語値は、複素結果累算データ要素の実数部を生成するために実行される乗累算演算に対する第1の述語値、および複素結果累算データ要素の虚数部を生成するために実行される乗累算演算に対する第2の述語値を含み得る。これにより、複素数に関連して、述語化された乗累算命令の使用において、更に柔軟性を提供し得る。このような実施形態において、以下のオプションが、上述の2つの乗累算演算に対して可能である。
vaccR[i]=vaccR[i]+(vbR[i]*vaR[i]−vbI[i]*vaI[i]) if vpR[i]=true
vaccR[i]=vaccR[i]−(vbR[i]*vaR[i]−vbI[i]*vaI[i]) if vpR[i]=false
vaccI[i]=vaccI[i]+(vbR[i]*vaI[i]+vbI[i]*vaR[i]) if vpI[i]=true
vaccI[i]=vaccI[i]−(vbR[i]*vaI[i]+vbI[i]*vaR[i]) if vpI[i]=false
なお更なる実施形態において、1複素数あたりの2つの述語値は、再使用され得るが、これらの述語値と共に、乗累算演算の各々において、2つの乗算演算を独立して制御するために使用される。このような実施形態において、以下のオプションが、上述の2つの乗累算演算に対して可能である。
vaccR[i]=vaccR[i]+(vbR[i]*vaR[i])−(vbI[i]*vaI[i]) if vpR[i]==true and vpI[i]==true
vaccR[i]=vaccR[i]+(vbR[i]*vaR[i])+(vbI[i]*vaI[i])if vpR[i]==true and vpI[i]==false
vaccR[i]=vaccR[i]−(vbR[i]*vaR[i])−(vbI[i]*vaI[i])if vpR[i]==false and vpI[i]==true
vaccR[i]=vaccR[i]−(vbR[i]*vaR[i])+(vbI[i]*vaI[i])if vpR[i]==false and vpI[i]==false
vaccI[i]=vaccI[i]+(vbR[i]*vaI[i])+(vbI[i]*vaR[i])if vpR[i]==true and vpI[i]==true
vaccI[i]=vaccI[i]+(vbR[i]*vaI[i])−(vbI[i]*vaR[i])if vpR[i]==true and vpI[i]==false
vaccI[i]=vaccI[i]−(vbR[i]*vaI[i])+(vbI[i]*vaR[i])if vpR[i]==false and vpI[i]==true
vaccI[i]=vaccI[i]−(vbR[i]*vaI[i])−(vbI[i]*vaR[i])if vpR[i]==false and vpI[i]==false
上記の実施形態の延長として、実数部に対する乗累算演算の設定および虚数部に対する乗累算演算の設定において完全に独立させるために、1複素数あたり4つの述語値を指定することは可能であろう。
更なる代替的な実施形態において、第1の入力データ要素および第2の入力データ要素のうちの少なくとも1つは、浮動小数点数であり得、乗累算演算が、データ処理回路によって実行される場合には、結果累算データ要素として、浮動小数点数を生成する浮動小数点の乗累算演算である。かかる実施形態において、SIMD MAC回路110は、一般に、必要とされる乗累算演算を実行するために、浮動小数点の乗算および加算回路を含み得る。
一実施形態において、第1の入力データ要素および第2の入力データ要素のうちの1つだけは、浮動小数点数であり得、他の入力データ要素は、固定小数点数であり得る。しかしながら、別の実施形態において、第1の入力データ要素および第2の入力データ要素は共に、浮動小数点数である。
本発明の実施形態の上述記載から、本発明の実施形態の述語化されたMAC命令は、データ処理装置内の乗累算演算シーケンスを実行するための特に効率的な機構を提供し、述語値の制御下で、実現され得る専用のMAC回路を利用するパフォーマンス利益を可能にする一方、同一の命令を使用して、乗加算または乗減算演算を実行するための柔軟性も提供することが見られる。該アプローチは、SIMD MAC回路と関連して採用される際、特に、有益であり、ここで、乗算乗累算演算は、乗加算あるいは乗減算演算のいずれかを実行するように対応する述語値に基づいて、独立して構成されるこれらのレーンを有する、N行の並行処理内で並行して実行され得る。このようなアプローチは、電波信号を処理する際、必要とされるような、フィルタ演算を実行するために、高パフォーマンスおよびエネルギー効率の良い機構を提供することができる。
上述の技法は、上述の述語化されたMAC命令を含むネイティブな命令シーケンスを起動するハードウェアによって実行され得る一方、代替的な実施形態において、かかる命令は、仮想機械環境において起動され得、ここで、該命令は、仮想機械に対してネイティブであるが、仮想機械は、異なるネイティブな命令セットを有するハードウェアにおいて起動しているソフトウェアによって実装される。仮想機械環境は、完全命令セットの起動をエミュレートする完全な仮想機械環境を提供するか、または部分的であり得、例えば、現行技法の命令を含む、いくつかの命令のみが、ハードウェアによって捕捉され、かつ、部分的な仮想機械によってエミュレートされる。
より具体的には、上記の述語化されたMAC命令は、完全な、または部分的な仮想機械へのネイティブな命令として、上記のSIMD処理回路を提供するように、組み合わせてその基本となるハードウェアプラットホーム操作と一緒に仮想機械で起動され得る。
図6は、使用され得る、このような仮想機械実装を説明する。先述の実施形態は、関与する命令に対応する特定の処理ハードウェアを操作するための装置および方法に関して本発明を実装する一方、ハードウェアデバイスのいわゆる仮想機械実装を提供することも可能である。これらの仮想機械実装は、仮想機械プログラム510をサポートするホスト動作システム520を実行するホストプロセッサ530上で実行する。一般に、大きく、強力なプロセッサは、妥当な速度で起動する仮想機械実装を提供するのに必要とされるが、このようなアプローチは、互換性または再使用の理由により別のプロセッサにネイティブなコードを実行することが望ましい場合等のある状況において正当化され得る。仮想機械プログラム510は、アプリケーションプログラム500にアプリケーションプログラムインターフェースを提供し、これは、仮想機械プログラム510によってモデル化されたデバイスである実際のハードウェアによって提供され得る、アプリケーションプログラムインターフェースと同一である。したがって、上述の述語化されたMAC命令を含む、プログラム命令は、仮想機械ハードウェアとのそれらの相互作用をモデル化するための仮想機械プログラム510を使用して、アプリケーションプログラム500内から起動され得る。
特定の実施形態が、本明細書に記載されているが、本発明は、それに限定されず、多くの修正およびそれへの追加は、本発明の範囲内でなされ得ることを理解されよう。例えば、以下の従属請求項の特性は、本発明の範囲から逸脱することなく、独立請求項の特性と様々に組み合わされ得る。
130 累算器レジスタバンク
135 述語レジスタバンク
140 ベクトルレジスタバンク
160 コントローラ
210 加算器制御ブロック
215 レーン
217 乗算器回路
219 加算/減算回路
220 レーン

Claims (27)

  1. データ処理装置であって、
    制御信号に応答して、少なくとも1つの入力データ要素において、データ処理演算を実行する、データ処理回路と、
    前記データ処理回路に連結し、前記制御信号を生成するようにプログラム命令に応答する、命令デコーダ回路と、を含み、
    前記命令デコーダ回路は、入力オペランドとして、第1の入力データ要素と、第2の入力データ要素と、述語値を指定する、述語化された乗累算命令に応答し、前記データ処理回路を制御するように制御信号を生成し、
    前記第1の入力データ要素および前記第2の入力データ要素を乗算し、乗算データ要素を生成するステップと、
    前記述語値が、第1の値を有する場合、初期累算データ要素に前記乗算データ要素を加算することによって、結果累算データ要素を生成するステップと、
    前記述語値が、第2の値を有する場合、前記初期累算データ要素から前記乗算データ要素を減算することによって、前記結果累算データ要素を生成するステップと、により、乗累算演算を実行する、データ処理装置。
  2. 前記入力オペランドを記憶するための少なくとも1つのレジスタバンクを更に含み、前記述語化された乗累算命令は、前記述語値を含む少なくとも1つのレジスタバンクのレジスタを識別する、請求項1に記載のデータ処理装置。
  3. 前記データ処理回路は、N行の並行処理を提供する、SIMDデータ処理回路であり、Nは、1を超える整数であり、前記SIMDデータ処理回路は、前記制御信号に応答し、N行の並行処理の各々において、データ処理演算を並行して実行し、
    前記述語化された乗累算命令は、入力オペランドとして、第1のベクトルを形成する複数の前記第1の入力データ要素を指定し、
    前記命令デコーダ回路は、前記乗累算演算への入力に対して選択される前記第1のベクトルからの前記第1の入力データ要素が、該乗累算演算が実行される並行処理のレーンに依存するように、前記述語化された乗累算命令に応答して、前記データ処理回路を制御するように制御信号を生成し、前記N行の並行処理の各々において、前記乗累算演算を並行して実行する、請求項1に記載のデータ処理装置。
  4. 前記述語化された乗累算命令は、入力オペランドとして、第2のベクトルを形成する複数の前記第2の入力データ要素を指定し、
    乗累算演算への入力に対して選択される前記第2のベクトルからの前記第2の入力データ要素は、該乗累算演算が実行される並行処理のレーンに依存する、請求項3に記載のデータ処理装置。
  5. 前記述語化された乗累算命令は、入力オペランドとして、スカラの第2の入力データ要素を指定し、これは、次いで、第2のベクトルを形成する前記データ処理回路内で複製され、
    それによって、前記同一の第2の入力データ要素は、前記乗累算演算が実行される並行処理の各レーンにおいて使用される、請求項3に記載のデータ処理装置。
  6. 前記述語化された乗累算命令は、入力オペランドとして、第3のベクトルを形成する複数の前記述語値を指定し、
    前記乗累算演算への入力に対して選択される前記第3のベクトルからの前記述語値は、該乗累算演算が実行される並行処理のレーンに依存する、請求項3に記載のデータ処理装置。
  7. 前記第3のベクトルは、前記N行の並行処理の各々内で、前記乗累算演算が独立して、乗加算または乗減算演算を実行するよう構成されるように、Nの述語値を指定する、請求項6に記載のデータ処理装置。
  8. 前記述語化された乗累算命令は、入力オペランドとして、前記初期累算データ要素を更に指定する、請求項1に記載のデータ処理装置。
  9. 前記初期累算データ要素は、既定値である、請求項1に記載のデータ処理装置。
  10. 前記既定値は、ゼロである、請求項9に記載のデータ処理装置。
  11. 前記述語化された乗累算命令は、入力オペランドとして、第4のベクトルを形成する複数の前記初期累算データ要素を指定し、
    前記乗累算演算への入力に対して選択される前記第4のベクトルからの前記初期累算データ要素は、該乗累算演算が実行される並行処理のレーンに依存する、請求項3に記載のデータ処理装置。
  12. 前記データ処理回路は、N行の並行処理を提供する、SIMDデータ処理回路であり、Nは、1を超える整数であり、前記SIMDデータ処理回路は、前記制御信号に応答し、前記N行の並行処理の各々において、データ処理演算を並行して実行し、
    前記述語化された乗累算命令は、入力オペランドとして、第1のベクトルを形成する複数の前記第1の入力データ要素を指定し、
    前記命令デコーダ回路は、前記乗累算演算への入力に対して選択される前記第1のベクトルからの前記第1の入力データ要素が、該乗累算演算が実行される並行処理のレーンに依存するように、前記述語化された乗累算命令に応答して、前記データ処理回路を制御するように制御信号を生成し、前記N行の並行処理の各々において、前記乗累算演算を並行して実行し、
    前記述語化された乗累算命令は、入力オペランドとして、第2のベクトルを形成する複数の前記第2の入力データ要素を指定し、
    前記乗累算演算への入力に対して選択される前記第2のベクトルからの前記第2の入力データ要素は、該乗累算演算が実行される並行処理のレーンに依存し、
    ここで、前記第1、第2、および第4のベクトルの各々は、N行のデータ要素を有する、請求項11に記載のデータ処理装置。
  13. 各第1の入力データ要素は、Xビットを含み、各第2の入力データ要素は、Yビットを含み、各初期累算データ要素は、少なくともX+Yビットの大きさである、請求項1に記載のデータ処理装置。
  14. X=Yである、請求項13に記載のデータ処理装置。
  15. 前記少なくとも1つのレジスタバンクは、前記第1および第2の入力データ要素を記憶するための入力レジスタを含む入力データ要素のレジスタバンクと、各初期累算データ要素および結果累算データ要素を記憶するための累算レジスタを有する累算レジスタバンクと、を含む、請求項2に記載のデータ処理装置。
  16. 前記第1の入力データ要素および前記第2の入力データ要素のうちの少なくとも1つは、実数部および虚数部を含む複素数であり、
    データ処理回路によって実行される前記乗累算演算は、前記結果累算データ要素として、実数部および虚数部を有する複素数を生成する複素乗累算演算である、請求項1に記載のデータ処理装置。
  17. 前記第1の入力データ要素および前記第2の入力データ要素は共に、実数部および虚数部を含む複素数である、請求項16に記載のデータ処理装置。
  18. 前記複素乗累算演算は、前記対応する複素結果累算データ要素の実数部および虚数部を生成するために、乗算、加算、および減算演算シーケンスの実行を含む、請求項16に記載のデータ処理装置。
  19. 前記述語値は、複素乗累算演算の異なる部分を制御するために使用される、少なくとも2つの述語値を含む、請求項16に記載のデータ処理装置。
  20. 前記述語値は、前記複素結果累算データ要素の前記実数部を生成するために実行される乗累算演算に対する第1の述語値、および前記複素結果累算データ要素の前記虚数部を生成するために実行される乗累算演算に対する第2の述語値を含む、請求項19に記載のデータ処理装置。
  21. 前記複素結果累算データ要素の前記実数部を生成するために実行される前記乗累算演算、および前記複素結果累算データ要素の前記虚数部を生成するために実行される前記乗累算演算は共に、第1および第2の乗算演算を含み、前記述語値は、前記第1の乗算演算に対する第1の述語値、および前記第2の乗算演算に対する第2の述語値を含む、請求項19に記載のデータ処理装置。
  22. 前記第1の入力データ要素および前記第2の入力データ要素のうちの少なくとも1つは、浮動小数点数であり、
    前記データ処理回路によって実行される前記乗累算演算は、前記結果累算データ要素として、浮動小数点数を生成する、浮動小数点乗累算演算である、請求項1に記載のデータ処理装置。
  23. 前記第1の入力データ要素および前記第2の入力データ要素は共に、浮動小数点数である、請求項22に記載のデータ処理装置。
  24. 制御信号に応答して、少なくとも1つの入力データ要素において、データ処理演算を実行するデータ処理回路と、前記データ処理回路に連結され、かつプログラム命令に応答して前記制御信号を生成する命令デコーダ回路と、を使用してデータを処理する方法であって、
    制御信号を生成するために、入力オペランドとして、第1の入力データ要素、第2の入力データ要素、および述語値を指定する述語化された乗累算命令をデコードするステップと、
    前記制御信号を使用して前記データ処理回路を制御し、
    前記第1の入力データ要素および前記第2の入力データ要素を乗算し、乗算データ要素を生成するステップ、
    前記述語値が、第1の値を有する場合、前記乗算データ要素を初期累算データ要素に加算することによって、結果累算データ要素を生成するステップ、および
    前記述語値が、第2の値を有する場合、前記初期累算データ要素から前記乗算データ要素を減算することによって、前記結果累算データ要素を生成するステップにより、乗累算演算を実行するステップと、を含む、方法。
  25. データプロセッサ上での実行時、前記データプロセッサを制御し、請求項24に記載の方法のステップを実行する、少なくとも1つの述語化された乗累算命令を含む、コンピュータプログラム製品。
  26. データ処理装置の仮想機械実装であって、入力オペランドとして、第1の入力データ要素、第2の入力データ要素、および述語値を指定する述語化された乗累算命令に応答して、
    前記第1の入力データ要素および前記第2の入力データ要素を乗算し、乗算データ要素を生成するステップと、
    前記述語値が、第1の値を有する場合、前記乗算データ要素を初期累算データ要素に加算することによって、結果累算データ要素を生成するステップと、
    前記述語値が、第2の値を有する場合、前記初期累算データ要素から前記乗算データ要素を減算することによって、前記結果累算データ要素を生成するステップと、により、乗累算演算を実行する、仮想機械実装。
  27. データ処理装置であって、
    制御信号に応答して、少なくとも1つの入力データ要素において、データ処理演算を実行するためのデータ処理手段と、
    前記データ処理手段に連結され、プログラム命令に応答して、前記制御信号を生成するための命令デコーダ手段と、を含み、
    前記命令デコーダ手段は、入力オペランドとして、第1の入力データ要素、第2の入力データ要素、および述語値を指定する述語化された乗累算命令に応答して、
    前記第1の入力データ要素および前記第2の入力データ要素を乗算し、乗算データ要素を生成するステップ、
    前記述語値が、第1の値を有する場合、前記乗算データ要素を初期累算データ要素に加算することによって、結果累算データ要素を生成するステップ、および
    前記述語値が、第2の値を有する場合、前記初期累算データ要素から前記乗算データ要素を減算することによって、前記結果累算データ要素を生成するステップにより、乗累算演算を実行するために前記データ処理手段を制御する、制御信号を生成する、データ処理装置。
JP2010242079A 2009-10-30 2010-10-28 乗累算演算を実行するための装置および方法 Expired - Fee Related JP5647859B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
GB0919120.6A GB2474901B (en) 2009-10-30 2009-10-30 Apparatus and method for performing multiply-accumulate operations
GB0919120.6 2009-10-30

Publications (2)

Publication Number Publication Date
JP2011096254A true JP2011096254A (ja) 2011-05-12
JP5647859B2 JP5647859B2 (ja) 2015-01-07

Family

ID=41434978

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010242079A Expired - Fee Related JP5647859B2 (ja) 2009-10-30 2010-10-28 乗累算演算を実行するための装置および方法

Country Status (4)

Country Link
US (1) US8595280B2 (ja)
JP (1) JP5647859B2 (ja)
CN (1) CN102053817B (ja)
GB (1) GB2474901B (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015518610A (ja) * 2012-04-20 2015-07-02 華為技術有限公司Huawei Technologies Co.,Ltd. デジタルシグナルプロセッサにおける信号処理のためのシステムおよび方法
KR20180034471A (ko) * 2015-07-31 2018-04-04 에이알엠 리미티드 벡터 피연산자 비트 크기 제어
JP2019526866A (ja) * 2016-09-13 2019-09-19 エイアールエム リミテッド ベクトル積和命令
KR20190129240A (ko) * 2018-05-10 2019-11-20 서울대학교산학협력단 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법
JP2020508513A (ja) * 2017-02-23 2020-03-19 エイアールエム リミテッド データ処理装置における拡大算術計算

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8831133B2 (en) * 2011-10-27 2014-09-09 Lsi Corporation Recursive digital pre-distortion (DPD)
CN104011664B (zh) * 2011-12-23 2016-12-28 英特尔公司 使用三个标量项的超级乘加(超级madd)指令
CN104011665B (zh) * 2011-12-23 2017-05-31 英特尔公司 超级乘加(超级madd)指令
US8909687B2 (en) * 2012-01-19 2014-12-09 Mediatek Singapore Pte. Ltd. Efficient FIR filters
US9355068B2 (en) * 2012-06-29 2016-05-31 Intel Corporation Vector multiplication with operand base system conversion and re-conversion
CN103268223B (zh) * 2013-04-26 2016-06-29 深圳中微电科技有限公司 在编译过程中改善乘加类指令执行性能的方法
CN104866461B (zh) * 2014-02-21 2018-03-02 北京国睿中数科技股份有限公司 用于浮点复数乘i加减的装置和方法
US9916130B2 (en) * 2014-11-03 2018-03-13 Arm Limited Apparatus and method for vector processing
US10275247B2 (en) * 2015-03-28 2019-04-30 Intel Corporation Apparatuses and methods to accelerate vector multiplication of vector elements having matching indices
GB2540943B (en) 2015-07-31 2018-04-11 Advanced Risc Mach Ltd Vector arithmetic instruction
US9733899B2 (en) * 2015-11-12 2017-08-15 Arm Limited Lane position information for processing of vector
CN106980600B (zh) * 2016-01-18 2019-09-06 普天信息技术有限公司 一种lte接收系统中fpga处理复数矩阵乘法的方法及系统
US11507761B2 (en) 2016-02-25 2022-11-22 Hewlett Packard Enterprise Development Lp Performing complex multiply-accumulate operations
GB2548908B (en) * 2016-04-01 2019-01-30 Advanced Risc Mach Ltd Complex multiply instruction
US10824934B2 (en) * 2017-01-12 2020-11-03 Texas Instruments Incorporated Methods and apparatus for matrix processing in a convolutional neural network
KR102425668B1 (ko) * 2017-02-23 2022-07-28 에이알엠 리미티드 데이터 처리장치에서의 곱셈-누적
JP7148526B2 (ja) * 2017-02-23 2022-10-05 アーム・リミテッド データ処理装置におけるベクトルによる要素演算
US10162633B2 (en) * 2017-04-24 2018-12-25 Arm Limited Shift instruction
US10409592B2 (en) * 2017-04-24 2019-09-10 Arm Limited Multiply-and-accumulate-products instructions
DE102017207876A1 (de) * 2017-05-10 2018-11-15 Robert Bosch Gmbh Parallelisierte Verarbeitung
US10503507B2 (en) 2017-08-31 2019-12-10 Nvidia Corporation Inline data inspection for workload simplification
KR102356708B1 (ko) * 2017-09-28 2022-01-27 삼성전자주식회사 컨볼루션 연산을 수행하는 연산 장치 및 연산 방법
US10795677B2 (en) * 2017-09-29 2020-10-06 Intel Corporation Systems, apparatuses, and methods for multiplication, negation, and accumulation of vector packed signed values
US10795676B2 (en) * 2017-09-29 2020-10-06 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US11243765B2 (en) 2017-09-29 2022-02-08 Intel Corporation Apparatus and method for scaling pre-scaled results of complex multiply-accumulate operations on packed real and imaginary data elements
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US10664277B2 (en) 2017-09-29 2020-05-26 Intel Corporation Systems, apparatuses and methods for dual complex by complex conjugate multiply of signed words
US10534838B2 (en) 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US11074073B2 (en) * 2017-09-29 2021-07-27 Intel Corporation Apparatus and method for multiply, add/subtract, and accumulate of packed data elements
US10552154B2 (en) 2017-09-29 2020-02-04 Intel Corporation Apparatus and method for multiplication and accumulation of complex and real packed data elements
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
GB2568085B (en) * 2017-11-03 2020-01-01 Imagination Tech Ltd Hardware unit for performing matrix multiplication with clock gating
EP3499362B1 (en) * 2017-12-13 2022-11-30 ARM Limited Vector add-with-carry instruction
US10678507B2 (en) * 2017-12-22 2020-06-09 Alibaba Group Holding Limited Programmable multiply-add array hardware
US10977001B2 (en) * 2018-02-05 2021-04-13 Mediatek Inc. Asymmetric quantization of multiple-and-accumulate operations in deep learning processing
US10528346B2 (en) 2018-03-29 2020-01-07 Intel Corporation Instructions for fused multiply-add operations with variable precision input operands
GB2576180B (en) * 2018-08-08 2022-08-10 Temporal Computing Ltd Temporal computing
JP7296574B2 (ja) * 2019-03-04 2023-06-23 パナソニックIpマネジメント株式会社 プロセッサ及びプロセッサの制御方法
US20210173662A1 (en) * 2019-12-05 2021-06-10 International Business Machines Corporation Processor unit for multiply and accumulate operations

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0298777A (ja) * 1988-10-05 1990-04-11 Nec Corp 並列積和演算回路及びベクトル行列積演算方法
JPH04271431A (ja) * 1991-02-27 1992-09-28 Fujitsu Ltd 演算制御方式
JPH07200543A (ja) * 1993-12-20 1995-08-04 Motorola Inc 算術エンジン
JPH1040235A (ja) * 1996-07-22 1998-02-13 Sharp Corp 行列乗算器
JPH1069372A (ja) * 1996-08-29 1998-03-10 Fujitsu Ltd 演算実行方法及び演算装置
JP2000322408A (ja) * 1998-10-06 2000-11-24 Texas Instr Inc <Ti> 線形ベクトル計算
JP2001092636A (ja) * 1999-07-28 2001-04-06 Arm Ltd 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法
JP2002503370A (ja) * 1997-06-10 2002-01-29 エイアールエム リミテッド コプロセッサ・データ・アクセス制御
JP2004118470A (ja) * 2002-09-25 2004-04-15 Matsushita Electric Ind Co Ltd プロセッサ
JP2006338215A (ja) * 2005-06-01 2006-12-14 Nec Computertechno Ltd ベクトル積和演算回路
JP2007004542A (ja) * 2005-06-24 2007-01-11 Renesas Technology Corp 半導体信号処理装置
JP2008507039A (ja) * 2004-07-13 2008-03-06 スリープラスワン テクノロジー, インコーポレイテッド プログラム可能なプロセッサのアーキテクチャ
JP2009048532A (ja) * 2007-08-22 2009-03-05 Nec Electronics Corp マイクロプロセッサ

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2291515B (en) * 1994-07-14 1998-11-18 Advanced Risc Mach Ltd Data processing using multiply-accumulate instructions
US5598362A (en) * 1994-12-22 1997-01-28 Motorola Inc. Apparatus and method for performing both 24 bit and 16 bit arithmetic
US5796645A (en) * 1996-08-27 1998-08-18 Tritech Microelectronics International Ltd. Multiply accumulate computation unit
US7437401B2 (en) * 2004-02-20 2008-10-14 Altera Corporation Multiplier-accumulator block mode splitting
US7660841B2 (en) * 2004-02-20 2010-02-09 Altera Corporation Flexible accumulator in digital signal processing circuitry
CN1658152B (zh) * 2004-02-20 2012-06-13 阿尔特拉公司 乘法器-累加器块模式划分
EP1710691A1 (en) * 2005-04-07 2006-10-11 STMicroelectronics (Research & Development) Limited MAC/MUL unit

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0298777A (ja) * 1988-10-05 1990-04-11 Nec Corp 並列積和演算回路及びベクトル行列積演算方法
JPH04271431A (ja) * 1991-02-27 1992-09-28 Fujitsu Ltd 演算制御方式
JPH07200543A (ja) * 1993-12-20 1995-08-04 Motorola Inc 算術エンジン
JPH1040235A (ja) * 1996-07-22 1998-02-13 Sharp Corp 行列乗算器
JPH1069372A (ja) * 1996-08-29 1998-03-10 Fujitsu Ltd 演算実行方法及び演算装置
JP2002503370A (ja) * 1997-06-10 2002-01-29 エイアールエム リミテッド コプロセッサ・データ・アクセス制御
JP2000322408A (ja) * 1998-10-06 2000-11-24 Texas Instr Inc <Ti> 線形ベクトル計算
JP2001092636A (ja) * 1999-07-28 2001-04-06 Arm Ltd 第1、第2、第3オペランドに浮動小数点演算を適用するためのデータ処理装置および方法
JP2004118470A (ja) * 2002-09-25 2004-04-15 Matsushita Electric Ind Co Ltd プロセッサ
JP2008507039A (ja) * 2004-07-13 2008-03-06 スリープラスワン テクノロジー, インコーポレイテッド プログラム可能なプロセッサのアーキテクチャ
JP2006338215A (ja) * 2005-06-01 2006-12-14 Nec Computertechno Ltd ベクトル積和演算回路
JP2007004542A (ja) * 2005-06-24 2007-01-11 Renesas Technology Corp 半導体信号処理装置
JP2009048532A (ja) * 2007-08-22 2009-03-05 Nec Electronics Corp マイクロプロセッサ

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015518610A (ja) * 2012-04-20 2015-07-02 華為技術有限公司Huawei Technologies Co.,Ltd. デジタルシグナルプロセッサにおける信号処理のためのシステムおよび方法
US9274750B2 (en) 2012-04-20 2016-03-01 Futurewei Technologies, Inc. System and method for signal processing in digital signal processors
KR20180034471A (ko) * 2015-07-31 2018-04-04 에이알엠 리미티드 벡터 피연산자 비트 크기 제어
KR102581576B1 (ko) 2015-07-31 2023-09-22 에이알엠 리미티드 벡터 피연산자 비트 크기 제어
JP2019526866A (ja) * 2016-09-13 2019-09-19 エイアールエム リミテッド ベクトル積和命令
US11188330B2 (en) 2016-09-13 2021-11-30 Arm Limited Vector multiply-add instruction
JP7203016B2 (ja) 2016-09-13 2023-01-12 アーム・リミテッド ベクトル積和命令
JP2020508513A (ja) * 2017-02-23 2020-03-19 エイアールエム リミテッド データ処理装置における拡大算術計算
US11567763B2 (en) 2017-02-23 2023-01-31 Arm Limited Widening arithmetic in a data processing apparatus
KR20190129240A (ko) * 2018-05-10 2019-11-20 서울대학교산학협력단 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법
KR102126857B1 (ko) 2018-05-10 2020-06-25 서울대학교산학협력단 행 단위 연산 뉴럴 프로세서 및 이를 이용한 데이터 처리 방법

Also Published As

Publication number Publication date
US20110106871A1 (en) 2011-05-05
CN102053817B (zh) 2015-09-09
US8595280B2 (en) 2013-11-26
GB0919120D0 (en) 2009-12-16
JP5647859B2 (ja) 2015-01-07
GB2474901B (en) 2015-01-07
GB2474901A (en) 2011-05-04
CN102053817A (zh) 2011-05-11

Similar Documents

Publication Publication Date Title
JP5647859B2 (ja) 乗累算演算を実行するための装置および方法
US10445451B2 (en) Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10445098B2 (en) Processors and methods for privileged configuration in a spatial array
JP5619751B2 (ja) Simd積和演算動作を行うための装置及び方法
CN109661647B (zh) 数据处理装置和方法
EP3343388A1 (en) Processors, methods, and systems with a configurable spatial accelerator
JP2007519052A (ja) 命令制御式データ処理装置
CN108319559B (zh) 用于控制矢量内存存取的数据处理装置及方法
WO2015114305A1 (en) A data processing apparatus and method for executing a vector scan instruction
TWI502490B (zh) 用以處理加法指令之方法、及用以執行加法指令之裝置與系統
JP2012252374A (ja) 情報処理装置
US11106465B2 (en) Vector add-with-carry instruction
CN101615113A (zh) 一条指令完成一次蝶形运算的微处理器实现方法
JP2874351B2 (ja) 並列パイプライン命令処理装置
TWI770079B (zh) 向量產生指令
KR102025694B1 (ko) 재구성 가능한 프로세서의 검증 방법
JPH07110769A (ja) Vliw型計算機
JP2020201659A (ja) 演算装置、演算方法、および演算プログラム
Le-Huu et al. A micro-architecture design for the 32-bit VLIW DSP processor core
JP2004303058A (ja) ベクトルプロセッサおよびそのデータ処理方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20121102

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140117

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140203

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140430

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140507

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140731

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140811

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140926

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141110

R150 Certificate of patent or registration of utility model

Ref document number: 5647859

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees