JP5819532B2 - 高速な最小値および最大値検索命令 - Google Patents

高速な最小値および最大値検索命令 Download PDF

Info

Publication number
JP5819532B2
JP5819532B2 JP2014532083A JP2014532083A JP5819532B2 JP 5819532 B2 JP5819532 B2 JP 5819532B2 JP 2014532083 A JP2014532083 A JP 2014532083A JP 2014532083 A JP2014532083 A JP 2014532083A JP 5819532 B2 JP5819532 B2 JP 5819532B2
Authority
JP
Japan
Prior art keywords
extreme value
input
data set
value
output
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
JP2014532083A
Other languages
English (en)
Other versions
JP2014531674A (ja
Inventor
エーリヒ・ジェイ・プロンドケ
ルシアン・コドレスク
マオ・ゼン
スワミナサン・バラスブラマニアン
デヴィッド・ジェイ・ホイル
Original Assignee
クアルコム,インコーポレイテッド
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 クアルコム,インコーポレイテッド filed Critical クアルコム,インコーポレイテッド
Publication of JP2014531674A publication Critical patent/JP2014531674A/ja
Application granted granted Critical
Publication of JP5819532B2 publication Critical patent/JP5819532B2/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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30021Compare instructions, e.g. Greater-Than, Equal-To, MINMAX
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/18Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/02Comparing digital values
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Operations Research (AREA)
  • Probability & Statistics with Applications (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Computer Hardware Design (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Description

開示される実施形態は、最小値および最大値検索動作を対象とする。より具体的には、例示的実施形態は、最小値/最大値、およびアレイ内の最小値/最大値の対応する位置識別子またはアドレスを検索するための命令を対象とする。
データ処理アプリケーションは、しばしば所与のデータセット内の最小値または最大値(本明細書では、「極値(extremum)」または「極値(extreme value)」と呼ばれる)を決定するための機能を含む。たとえば、画像処理、ビデオ圧縮、ノイズリダクション、または動き推定などのマルチメディアアプリケーションは、画素データの2次元アレイにおける極値の決定を必要とする場合がある。デジタル信号プロセッサは、周波数スペクトル内のサンプリングされた周波数セット内の極値を検索することができる。当技術分野では、多次元アレイにおける極値の計算を利用する他のアプリケーションが知られている。さらに、アプリケーションはまた、多次元アレイ内の極値の位置に関する情報を利用することができる。
特殊な命令は、典型的には、ベクトルまたは2次元アレイとして記憶されたデータセット内の極値を検索するためにデータ処理システムで使用される。検索に供されるデータセットは、データプロセッサに関連付けられるメモリシステムに常駐することができる。2次元アレイとして記憶されたデータセットの場合、最初のアプローチは、2次元アレイから一度に1つの行のデータ要素を読み取って、各行内の極値の検索を実行するために命令を利用することができる。極値は、行内をウォークスルーして、各データ要素と現在の極値を示す実行値(running value)とを比較して、必要に応じて実行値を更新することによって見つけることができ、行内のすべてのそのような比較の終わりの実行値が、その行の極値である。あるいは、極値は、行内のデータ要素の極値のペア単位のツリー型減少(この技法は、以下で図1のベクトル106の極値の計算を参照してさらに説明する)によって決定することができる。一旦任意の適切な技法によって各行の極値が計算されると、2次元アレイの極値を確立するために、行ごとに計算された極値からグローバルな極値を決定することができる。次いで、命令は2次元アレイ内の極値のアドレスを見つけるために、そのように決定された極値の出現を、2次元アレイを通じて検索してもよい。
極値を検索する上記の第1の手法には欠点がある。第1に、データ処理システムは、各行内の極値の中間計算を記憶するための追加の一時記憶空間を提供しなければならない。第2に、上記の方法は、行内の極値を計算するステップと、グローバルな極値を計算するステップと、次いで2次元アレイ内のグローバルな極値の位置を検索するステップとを備え、全体の動作に用いられる命令の数、一時記憶空間、および全体の動作のレイテンシの点で、システムリソースのかなりの浪費を招く。第3に、第1の手法の主な欠点は、一旦グローバルな極値が決定されると、グローバルな極値の出現を、2次元アレイを通じて検索しなければならない必要性である。この検索は、2次元アレイの各行を読み取って、2次元アレイのどの行が決定されたグローバルな極値を含むかを決定するために、行のデータ要素とグローバルな極値とを比較することが必要な場合がある。さらに、2次元アレイ内のいずれかの行に介在する読取り/書込み動作を、全体の動作が完了するまで一時保留しなければならない。
いくつかの処理システムは、第1の手法の欠点を克服するために、第2の手法を採用することができる。図1は、第2の手法の概略図である。第2の手法の説明は、極値が最大値である場合について以下で提供される。本手法は、極値が最小値である場合についても同様である。
図1を参照すると、102および104の2行の2次元アレイ100が示されている。102および104の各行は、それぞれ4つのデータ要素、102a〜102dおよび104a〜104dを備えるベクトルである。アレイ100の最大値を決定する第1の段階(段階1)では、図示されるようにレーン単位の最大値が同じ列のデータ要素のペアごとに計算される。そのようなベクトル演算を実行するために、単一命令複数データ(SIMD)タイプ命令などのベクトル命令を使用することができる。ベクトル106の各要素、すなわち106a〜106dには、現在、アレイ100の各列の最大値が含まれている。たとえば106aは、データ要素102aおよび104aの最大値であり、以下同様である。
段階2は、グローバルな最大値の計算の開始を示している。段階2は、まず中間最大値108a/bおよび108c/dを計算することによって始まり、108a/bは106aおよび106bの最大値であり、108c/dは106cおよび106dの最大値である。次に、108a/bおよび108c/dの最大値が計算されて、アレイ100のグローバルな最大値110であると決定される。グローバルな最大値110などの、このタイプの単一の値へのベクトルのペア単位の減少は、当技術分野ではツリー型減少として知られている。また、当業者は、よりの行数の多いアレイについて、102および104に類似する行のペアにアレイを分割して、行のペアごとに中間レーン単位の最大ベクトルを計算して、グローバルな最大値が計算されるまで中間レーン単位の最大ベクトルで処理を繰り返すことによって、レーン単位の最大値を備えるベクトル106を決定することができることが理解できるであろう。したがって、アレイを分割して、SIMDタイプ命令を使用して計算を並行して実行することによって、第1の手法よりも高速かつ効率的な方法でグローバルな極値を計算することができるようになる。
しかしながら、第2の手法の段階3は、第1の手法の主な欠点を共有する。段階3は、アレイ100内のグローバルな最大値110の出現を検索するステップを備える。第1の手法のように、このステップは計算集約的であり、システムリソース上無駄が多い。
したがって、当技術分野では、第1の手法および第2の手法の欠点を克服して、アレイ内の極値の出現の位置を決定することとともに、多次元アレイにおける高速かつ効率的な極値の検索を提供する技法が必要である。
本発明の例示的実施形態は、最小値/最大値、および最小値/最大値の対応する位置識別子/アドレスを高速で検索するためのシステムおよび方法を対象とする。
たとえば、例示的実施形態は、基準位置識別子と基準極値とを結合するステップを備える、極値を決定する方法を対象とする。本方法は、入力データセットの入力極値を決定するステップと、入力極値の対応する位置識別子を決定するステップとを備える。入力極値と基準極値とを比較するステップが、比較に基づいて、出力極値と出力位置識別子とを決定するステップにつながる。
別の例示的実施形態は、基準極値と、基準極値の基準位置識別子と、入力データセットとを備えるシステムを対象とする。本システムは、入力極値を入力データセットの極値として決定するように構成されたロジックを備える。また、本システムは、入力位置識別子を入力極値の位置識別子として決定するように構成されたロジックと、出力極値を決定するために、入力極値と基準極値とを比較するように構成されたロジックとを備える。例示的実施形態では、本システムは、比較に基づいて、出力位置識別子として、入力位置識別子および基準位置識別子のうちの1つを選択するように構成されたロジックをさらに備える。
さらに別の例示的実施形態は、基準位置識別子と基準極値とを結合するための手段と、入力データセットの入力極値を決定するための手段とを備える、極値を決定するための装置を対象とする。本システムは、入力極値の対応する位置識別子を決定するための手段と、比較に基づいて、出力極値と出力位置識別子とを決定するために、入力極値と基準極値とを比較するための手段とを備える。
別の例示的実施形態は、プロセッサによって実行されると、プロセッサに、データセットの極値を決定するための動作を実行させる命令を備え、命令が、基準位置識別子と基準極値とを結合して、入力データセットの入力極値を決定して、入力極値の対応する位置識別子を決定して、比較に基づいて、出力極値と出力位置識別子とを決定するために、入力極値と基準極値とを比較するように動作可能である、非一時的コンピュータ可読記憶媒体を対象とする。
添付の図面は、本発明の実施形態の説明を助けるために提示され、実施形態の限定ではなく、実施形態の例示のためだけに提供される。
従来の極値検索システムおよび方法の概略図である。 例示的実施形態による、最大値検索命令の実装形態の概略図である。 図2に示される最大値検索機能の代替実装形態の概略図である。 例示的実施形態における極値検索動作に関連付けられるステップのシーケンスを示す流れ図である。
本発明の態様を、本発明の特定の実施形態を対象とする以下の説明および関連する図面に開示する。本発明の範囲から逸脱することなしに、代替実施形態を考案することができる。さらに、よく知られている要素は、様々な実施形態の関連する詳細を曖昧にしないために、詳細に説明しないか、省略する。
「例示的(exemplary)」という用語は、本明細書では、「例(example)、事例(instance)、または実例(illustration)として役立つ」を意味するために使用される。「例示的」として本明細書に記載されるどの実施形態も、必ずしも他の実施形態よりも好ましいまたは有利であると見なされるべきではない。同様に、「実施形態(embodiments)」または「本発明の実施形態(embodiments of the invention)」という用語は、本発明のすべての実施形態が、論じられた特徴、利点、または動作のモードを含むことを必要としない。
本明細書で使用される専門用語は、特定の実施形態について説明するためのものにすぎず、本発明の実施形態を限定することを意図するものではない。本明細書で使用されるように、単数形「a」「an」および「the」は、文脈に明らかに別途示されない限り、複数形も含むことを意図する。「備える(comprises)」、「備えている(comprising)」、「含む(includes)」、および/または「含んでいる(including)」という用語は、本明細書で使用される場合、記述される特徴、整数、ステップ、動作、要素、および/または構成要素の存在を特定するが、1つまたは複数の他の特徴、整数、ステップ、動作、要素、構成要素、および/またはそれらのグループの存在または追加を排除しないことがさらに理解されよう。
さらに、多くの実施形態が、たとえば、コンピューティングデバイスの要素によって実行されるべき動作のシーケンスに関して説明される。本明細書に記載の様々な動作は、特定の回路(たとえば、特定用途向け集積回路(ASIC))によって、1つまたは複数のプロセッサによって実行されているプログラム命令によって、または両方の組合せによって実行することができることが理解されよう。さらに、本明細書に記載のこれらの動作のシーケンスは、実行されると、関連付けられるプロセッサに本明細書に記載の機能を実行させる、対応するコンピュータ命令のセットを記憶した任意の形式のコンピュータ可読記憶媒体内に全体的に具現化されると考えることができる。したがって、本発明の様々な態様を、いくつかの異なる形式で具現化することができ、そのすべては、特許請求される主題の範囲内であることが企図される。さらに、本明細書に記載の実施形態ごとに、任意のそのような実施形態の対応する形式が、たとえば、記載された動作を実行する「ように構成されたロジック(logic configured to)」として本明細書に記載され得る。
例示的実施形態は、データセット内の極値を高速で検索するための技法を含む。さらに、実施形態は、データセット内の極値を高速で検索するための、ならびに極値の位置識別子またはアドレスを効率的に追跡するための、命令およびアーキテクチャ支援を含む。開示される実施形態は、データセット内のグローバルな極値を検索する過程において、基準極値およびその対応する位置識別子を維持する。基準極値およびその対応する位置識別子は、検索の過程において適切に更新されるので、グローバルな極値およびグローバルな極値の位置識別子は、グローバルな極値の出現を、データセットを通じて検索する追加のステップを必要とせずに、検索の終わりにほぼ同時に利用可能になる。
次に、図2を参照して例示的実施形態について説明する。図2は、例示的実施形態による高速最大値検索命令を実装しているシステム200の概略図である。システム200は、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、あるいは他のプログラマブルロジックまたは処理エンティティなどの処理システムの一部でよい。システム200は、最大値検索命令のための専用ハードウェアを使用して実装することもでき、他の命令をサポートするために使用されるハードウェアの一部として実装することもできる。さらに、システム200に高速最大値検索命令を備えるために、完全にまたは部分的にカスタマイズされた命令セットを定義することができる。また、本明細書に記載の技法を、一般性を失うことなく高速最小値検索命令に容易に拡張することができることが理解されよう。
続けて図2を参照すると、図示されるように、レジスタ202は基準アドレス202xおよび基準最大値202yのフィールドを備える。フィールド202xおよび202yは、以前の高速最大値検索命令から、ゼロまたはあらかじめ定められた一定値に、あるいはグローバルな最大値の出現のアドレスに、および対応するグローバルな最大値に初期化することもできる。レジスタ202の実装形態は、単一のレジスタの実装形態に限定されず、フィールド202xおよび202yを備えるレジスタのペアとして実装されてもよく、開示された技法と一致する他の任意の適切な実装形態として実装されてもよいことが理解されよう。さらに、本明細書で使用される「レジスタ」という用語は、レジスタファイルの一部であるレジスタに限定されず、フリップフロップなどの任意の記憶媒体を指すことができる。
次に、レジスタ202が適切に初期化された、定常状態のシステム200の動作について説明する。2次元データアレイまたはメモリシステム(図示せず)から入力ベクトルが取得されて、レジスタ204に記憶される。レジスタ204は、4つのデータ要素204a〜204dを備えるベクトルとして示されている。一例をあげると、レジスタ204は64ビットワイド(2つの32ビットレジスタによって形成される可能性がある)でよく、各データ要素204a〜204dは16ビットワイドでよい。
次に、データ要素204a〜204dの最大値が、入力最大値208として計算される。一実施形態では、レジスタ204の16ビットの入力最大値208は、図2に示されるようにツリー型減少において計算される。まず、中間最大値206a/bおよび206c/dが計算されて、206a/bがデータ要素204aおよび204bの最大値であり、206c/dがデータ要素204cおよび204dの最大値である。206a/bおよび206c/dなどの中間最大値の計算は、知られている技法を使用して実行することができる。たとえば、データ要素204aおよび204bを最初に比較して、どちらのデータ要素が最大値かを決定し、次いで2つのデータ要素204aおよび204bの最大値が中間最大値206a/bとして選択される。この比較および選択処理は以下のように実装することができ、204aおよび204bはそれぞれ16ビットの符号の付いた数と仮定される。データ要素204aと204bとの間の値の差分(204a引く204b)は、減算を実行するように構成された加算器を使用して計算される。たとえば、データ要素204aと204bの両方の符号ビット(最上位ビット)がゼロである場合、それはデータ要素204aと204bの両方が正の数であることがわかる。差分の符号ビットが1である場合、差分が負である、すなわち言い換えれば、データ要素204aは正の数であり、その値はデータ要素204bの正の数未満であると判断される。したがって、データ要素204bを選択して、データ要素204bを中間最大値206a/bとして記憶するために、差分の符号ビットによって制御されるマルチプレクサを使用することができる。
図2に戻ると、一旦中間最大値206a/bおよび206c/dが計算されると、入力最大値208が206a/bおよび206c/dの最大値として決定される。中間値206a/bおよび206c/dは、単一の32ビットレジスタの2つの16ビットフィールドとして効率的に記憶することができることが理解されよう。同様に、入力最大値208も、32ビットレジスタの16ビットフィールドに記憶することができる。
入力最大値208を決定する上述のステップと並行して、レジスタ204内の入力最大値208の出現の位置も追跡される。たとえば、インデックスビット220を使用することによって、レジスタ204内の各データ要素204a-204dの位置をインデックス付けすることができる。たとえば、レジスタ204内のデータ要素204a〜204dの位置のバイトインデックスは、以下の通りでよい: 「000」: 204a、「010」: 204b、「100」: 204、および「110」: 204d。ツリー型減少の各ステップで、入力最大値208を取得するために、インデックスビット220が追跡される。したがって、たとえばデータ要素204bに記憶された値がレジスタ204のデータ要素の最大値であると決定されると、204bのコンテンツが入力最大値208として記憶されて、「010」がインデックスビット220に記憶される。インデックスビットはレジスタ204内の個々のデータ要素204a〜204dの位置を特定するが、データ要素のアドレスは、レジスタ204のアドレスにインデックスビット220を加算することによって計算することができる。図2で、レジスタ214がレジスタ204のアドレスを含む。したがって、一実装形態では、レジスタ214の最上位ビットを選択して、入力最大値アドレス212の最下位部分にインデックスビット220を追加することによって、入力最大値208の入力最大値アドレス212を図2に示されるように形成することができる。
次に、計算された入力最大値208が、レジスタ202に記憶された基準最大値202yと比較される。入力最大値208が基準最大値202yよりも大きい場合、入力最大値208がレジスタ218の出力最大値218yフィールドに書き込まれる。それに対応して、マルチプレクサ(mux)210が、レジスタ218の出力最大値アドレス218xフィールドに書き込まれるべき、入力最大値208の入力最大値アドレス212を選択する。入力最大値208が基準最大値202y以下の場合、レジスタ218のフィールド218xおよび218yは、それぞれ基準アドレス202xおよび基準最大値202yで置換される。
レジスタ202と同様に、レジスタ218は単一のレジスタとレジスタのペアのどちらでもよい。基準最大値202yと出力最大値218yのフィールドを上記の例の16ビット内に効率的に含めることができ、各データ要素204a〜204bは16ビットワイドであることが理解されよう。対応するアドレスフィールドのサイズは、システム200で使用されるアドレス方式に依存する。さらに、例示的実施形態では、出力最大値アドレス218xと出力最大値218yとを備えるレジスタ218は、高速な最小値/最大値検索のための次の反復や次の命令のために、それぞれ基準アドレス202xと基準最大値202yとを備えるレジスタ202として設定することができる。当業者は、上記の実施形態で説明したデータ構造の効率的なパイプラインメカニズムおよび実装形態を理解できるであろう。
システム200の前述の議論に最大値計算の3つの段階が含まれる。第1に、中間最大値206a/bおよび206c/dが4つのデータ要素204a〜204dから計算される。第2に、入力最大値208が中間最大値206a/bおよび206c/dから計算される。第3に、出力最大値218yが入力最大値208および基準最大値202yから計算される。
次に図3を参照すると、上述の第2段階および第3段階を単一の段階318に崩壊させる、システム300が示されている。想起するために、2つの数の最大値の計算は、2つの数の比較、および比較に基づく最大値の選択を含む。したがって、中間値206a/bと206c/dとが相互に比較され、それらはそれぞれ並行して基準最大値202yと比較される。これらの3つの比較の結果に基づいて、中間値206a/b、中間値206c/d、および基準最大値202yの3つの値の最大値が、単一の段階で3:1マルチプレクサによって選択され、それによって出力最大値218yに到達する前に計算の段階の数を減少させることができる。
図3に示されるように、比較器302、304、および306(たとえば、加算器を使用して実装された)が、{中間値206a/b、中間値206c/d}、{中間値206a/b、基準最大値202y}、および{中間値206c/d、基準最大値202y}の比較をそれぞれ実行する。これらの比較の結果(たとえば、差分の符号ビット)は、選択ロジック308に供給される。選択ロジック308は、マルチプレクサ316を適切に制御して、出力最大値218yを選択する。たとえば、比較器302の結果によって中間値206a/bが最大値であると判明した場合、比較器304の結果が出力最大値218yを決定する。
一旦比較器302の結果が利用可能になると、インデックスビット320を、適切な中間最大値206a/bまたは206c/dの入力アドレス312を反映するように構成することができる。マルチプレクサ310は、入力アドレス312と基準アドレス202xのうちの1つから出力アドレス218xを選ぶために、選択ロジック308によって制御される。したがって、段階318と並行して、出力最大値218yとともに利用可能になるために、出力アドレス218xも計算される。もちろん、レジスタ218の値は、システム200内とシステム300内とで同じであることが理解されよう。システム300は、さらなる比較器を追加することによって、システム200のレイテンシを減少させる。
さらに、上記で開示したように、開示された技法は、最大値の代わりに最小値を検索するための命令に容易に拡張できることが理解されよう。システム200およびシステム300を参照して上記で説明した開示された最小値/最大値検索命令の全体の動作は、単一の命令サイクルにも実装することができる。たとえば、マルチスレッド処理システムは、スレッドごとにいくつかのシステムクロックサイクルの順序で長いレイテンシを有利に提供することができる。6つのスレッドをサポートする例示的なインターリーブされたマルチスレッド処理システムにおいて、1つのスレッド上の命令サイクルは、6つのシステムクロックサイクルに広がってもよい。したがって、開示された最小値/最大値動作は、6つのシステムクロックサイクルに広がる実行とともに、1つのスレッドの単一の命令サイクルで実行することができる。
さらに、開示された技法はどの特定のデータ形式にも限定されないことが理解されよう。たとえば、データ要素204a〜204dは、符号付き形式でもよく符号なし形式でもよい。同様に、最小値/最大値は、データ値の絶対値(すなわち、大きさ)のみに関心がある場合に計算されてよく、オペランドの符号は無関係であってもよい。また、開示された実施形態は、インデックスビット220とアドレスビット214とを使用することによって、アレイ内のグローバルな最小値/最大値の出現の位置識別子またはアドレスを出力する特定の形式のために調整することができることが容易に理解されるであろう。
また、実施形態は、本明細書に開示した処理、機能、および/またはアルゴリズムを実行するための様々な方法を含むことが理解されよう。たとえば、図4に示されるように、実施形態は、基準位置識別子と基準極値とを結合して(ブロック402)、入力データセットの入力極値を決定して(ブロック404)、入力極値の対応する位置識別子を決定して(ブロック406)、入力極値と基準極値とを比較して(ブロック408)、比較に基づいて入力極値および基準極値のうちの1つとして出力極値を決定して(ブロック410)、出力極値の対応する出力位置識別子を決定する(ブロック412)方法を含むことができる。
当業者は、情報および信号は、様々な異なる技術および技法のいずれかを使用して表すことができることが理解できるであろう。たとえば、上記の説明を通じて参照され得るデータ、命令、コマンド、情報、信号、ビット、記号、およびチップは、電圧、電流、電磁波、磁場または磁性粒子、光場または光学粒子、あるいはそれらの任意の組合せによって表すことができる。
さらに、当業者は、本明細書に開示した実施形態とともに説明した様々な例示的論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、または両方の組合せとして実装することができることが理解できるであろう。このハードウェアとソフトウェアの互換性を明確に例示するために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップが、それらの機能の観点から一般的に上述されている。そのような機能がハードウェアとソフトウェアのどちらとして実装されるかは、システム全体に課せられている特定のアプリケーションおよび設計の制約に依存する。当業者は、説明された機能性を、特定のアプリケーションごとに様々な方法で実装することができるが、そのような実装決定は本発明の範囲からの逸脱をまねくものと解釈されるべきではない。
本明細書に開示した実施形態とともに説明された方法、シーケンス、および/またはアルゴリズムは、ハードウェアに直接に、プロセッサによって実行されるソフトウェアモジュールに、あるいはその2つの組合せに実施することができる。ソフトウェアモジュールは、RAMメモリ、フラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、あるいは当技術分野において知られている他の任意の形態の記憶媒体の中に常駐することができる。例示的な記憶媒体は、プロセッサが、記憶媒体から情報を読み取り、そして記憶媒体に情報を書き込むことができるように、プロセッサに結合される。代替案においては、記憶媒体は、プロセッサと一体化していてもよい。
したがって、本発明のある実施形態は、高速な最小値/最大値検索命令を組み入れるコンピュータ可読媒体を含むことができる。さらに、様々な実施形態は示された例に限定されず、本明細書に記載の機能性を実行するための任意の手段は本発明の実施形態に含まれることが理解されよう。
前述の開示は例示的実施形態を示しているが、添付の特許請求の範囲によって定義されるような本発明の範囲から逸脱することなしに、様々な変更および修正が本明細書に行われてよいことに留意されたい。本明細書に記載の本発明の実施形態による、方法クレームの機能、ステップ、および/または動作は、何らかの特定の順序で実行される必要はない。さらに、様々な実施形態の要素は、単数形で説明され、あるいは特許請求され得るが、単数形への限定が明示的に述べられていない限り、複数形も企図される。
200 システム
202 レジスタ
202x 基準アドレスのフィールド
202y 基準最大値のフィールド
204 レジスタ
204a データ要素
204b データ要素
204c データ要素
204d データ要素
206a/b 中間最大値
206c/d 中間最大値
208 入力最大値
210 マルチプレクサ
212 入力最大値アドレス
214 レジスタ
218 レジスタ
218x 出力最大値アドレス
218y 出力最大値
220 インデックスビット
300 システム
302 比較器
304 比較器
306 比較器
308 選択ロジック
310 マルチプレクサ
312 入力アドレス
316 マルチプレクサ
320 インデックスビット

Claims (25)

  1. 基準位置識別子と基準極値とを記憶媒体に記憶するステップと、
    メモリシステムから入力データセットを受信するステップであって、前記基準極値が前記入力データセットとは無関係であるステップと、
    前記入力データセットの入力極値を決定するステップと
    前記入力極値の対応する位置識別子を決定するステップと、
    前記入力極値と前記基準極値とを比較して、前記比較に基づいて、出力極値と出力位置識別子とを決定するステップとを備え、
    前記入力極値と前記基準極値とを比較するステップが、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するステップを備える、処理システムにおいて極値を決定する方法。
  2. 前記基準極値および前記基準位置識別子を、それぞれ前記出力極値および前記出力位置識別子と置換するステップをさらに備える、請求項1に記載の方法。
  3. 前記入力極値が前記基準極値未満の場合、前記出力極値が前記入力極値であると決定される、請求項1に記載の方法。
  4. 前記入力極値が前記基準極値よりも大きい場合、前記出力極値が前記入力極値であると決定される、請求項1に記載の方法。
  5. 前記極値が最小値または最大値のうちの1つである、請求項1に記載の方法。
  6. 前記入力データセットが、符号付き形式または符号なし形式のうちの1つの中に表されるデータを備える、請求項1に記載の方法。
  7. 前記入力極値を決定するステップが、前記入力データセット内のデータの大きさに基づく、請求項1に記載の方法。
  8. 前記基準位置識別子とレジスタのペア内の前記基準極値とを結合するステップをさらに備える、請求項1に記載の方法。
  9. 前記出力位置識別子とレジスタのペア内の前記出力極値とを結合するステップをさらに備える、請求項1に記載の方法。
  10. 前記入力データセットの前記入力極値を決定するステップが、前記入力データセットのペア単位のツリー型減少を備える、請求項1に記載の方法。
  11. 前記入力極値の前記位置識別子がアドレス部分およびインデックス部分を備え、前記アドレス部分が前記入力データセットのアドレスから形成され、前記インデックス部分が前記入力データセット内の前記入力極値の位置から形成される、請求項1に記載の方法。
  12. 基準極値と、
    前記基準極値の基準位置識別子と
    入力データセットであって、前記基準極値が前記入力データセットとは無関係である入力データセットと、
    入力極値を前記入力データセットの極値として決定するように構成されたロジックと、
    入力位置識別子を前記入力極値の位置識別子として決定するように構成されたロジックと、
    出力極値を決定するために、前記入力極値と前記基準極値とを比較するように構成されたロジックであって、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するように構成されたロジックを備える、ロジックとを備える、システム。
  13. 前記比較に基づいて、出力位置識別子として、前記入力位置識別子および前記基準位置識別子のうちの1つを選択するように構成されたロジックをさらに備える、請求項12に記載のシステム。
  14. 前記基準極値および基準位置識別子が、それぞれ以前の出力極値および以前の出力位置識別子から決定される、請求項12に記載のシステム。
  15. 前記入力極値が前記基準極値未満の場合、前記出力極値が前記入力極値であると決定される、請求項12に記載のシステム。
  16. 前記入力極値が前記基準極値よりも大きい場合、前記出力極値が前記入力極値であると決定される、請求項12に記載のシステム。
  17. 前記極値が最小値または最大値のうちの1つである、請求項12に記載のシステム。
  18. 前記入力データセットが、符号付き形式または符号なし形式のうちの1つの中に表されるデータを備える、請求項12に記載のシステム。
  19. 前記入力データセットがメモリアレイから得られる、請求項12に記載のシステム。
  20. 入力位置識別子を前記入力極値の前記位置識別子として決定するように構成された前記ロジックが、ペア単位の比較、および前記入力データセットの要素のツリー型減少のためのロジックを備える、請求項12に記載のシステム。
  21. 前記入力極値の前記位置識別子がアドレス部分およびインデックス部分を備え、前記アドレス部分が前記入力データセットのアドレスから形成され、前記インデックス部分が前記入力データセット内の前記入力極値の位置から形成される、請求項12に記載のシステム。
  22. 基準位置識別子と基準極値とを記憶するための手段と、
    入力データセットの入力極値を決定するための手段であって、前記基準極値が前記入力データセットとは無関係である手段と、
    前記入力極値の対応する位置識別子を決定するための手段と、
    前記入力極値と前記基準極値とを比較して、前記比較に基づいて、出力極値と出力位置識別子とを決定する手段であって、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するための手段を備える、手段とを備える、極値を決定するための装置。
  23. 前記基準極値および前記基準位置識別子を、それぞれ前記出力極値および前記出力位置識別子と置換するための手段をさらに備える、請求項22に記載の装置。
  24. プロセッサによって実行されると、前記プロセッサに、データセットの極値を決定するための動作を実行させる命令を備え、前記命令が、
    基準位置識別子と基準極値とを記憶して、
    入力データセットであって、前記基準極値が前記入力データセットとは無関係である入力データセットの入力極値を決定して、
    前記入力極値の対応する位置識別子を決定して、
    前記入力極値と前記基準極値とを比較して、前記比較に基づいて、出力極値と出力位置識別子とを決定するように動作可能であり、
    前記入力極値と前記基準極値とを比較するように動作可能な前記命令が、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するように動作可能な命令を備える、コンピュータ可読記憶媒体。
  25. 前記命令が、前記基準極値および前記基準位置識別子を、それぞれ前記出力極値および前記出力位置識別子と置換するようにさらに動作可能である、請求項24に記載のコンピュータ可読記憶媒体。
JP2014532083A 2011-09-23 2012-09-24 高速な最小値および最大値検索命令 Active JP5819532B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/241,673 2011-09-23
US13/241,673 US9785434B2 (en) 2011-09-23 2011-09-23 Fast minimum and maximum searching instruction
PCT/US2012/056960 WO2013044260A2 (en) 2011-09-23 2012-09-24 Fast minimum and maximum searching instruction

Publications (2)

Publication Number Publication Date
JP2014531674A JP2014531674A (ja) 2014-11-27
JP5819532B2 true JP5819532B2 (ja) 2015-11-24

Family

ID=47172864

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014532083A Active JP5819532B2 (ja) 2011-09-23 2012-09-24 高速な最小値および最大値検索命令

Country Status (6)

Country Link
US (1) US9785434B2 (ja)
EP (1) EP2758897B1 (ja)
JP (1) JP5819532B2 (ja)
KR (2) KR20140082720A (ja)
CN (1) CN103814372B (ja)
WO (1) WO2013044260A2 (ja)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9600279B2 (en) * 2012-07-26 2017-03-21 Verisilicon Holdings Co., Ltd. Circuit and method for searching a data array and single-instruction, multiple-data processing unit incorporating the same
US20140136582A1 (en) * 2012-11-12 2014-05-15 Futurewei Technologies, Inc. Method and apparatus for digital automatic gain control
CN118468126A (zh) 2016-07-17 2024-08-09 Gsi 科技公司 在恒定的处理时间内查找k个极值
US10379854B2 (en) * 2016-12-22 2019-08-13 Intel Corporation Processor instructions for determining two minimum and two maximum values
US10514914B2 (en) * 2017-08-29 2019-12-24 Gsi Technology Inc. Method for min-max computation in associative memory
CN111258632B (zh) * 2018-11-30 2022-07-26 上海寒武纪信息科技有限公司 数据选择装置、数据处理方法、芯片及电子设备
CN112486454B (zh) * 2019-09-12 2023-07-11 北京华航无线电测量研究所 一种基于fpga的序列多峰值搜索排序装置
WO2022070131A1 (en) 2020-10-01 2022-04-07 Gsi Technology Inc. Functional protein classification for pandemic research
US11550584B1 (en) * 2021-09-30 2023-01-10 Nvidia Corporation Implementing specialized instructions for accelerating Smith-Waterman sequence alignments
US11822541B2 (en) 2021-09-30 2023-11-21 Nvidia Corporation Techniques for storing sub-alignment data when accelerating Smith-Waterman sequence alignments

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4597053A (en) 1983-07-01 1986-06-24 Codex Corporation Two-pass multiplier/accumulator circuit
JPS61122747A (ja) 1984-11-14 1986-06-10 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション デ−タ処理装置
US5457645A (en) 1989-11-24 1995-10-10 Matsushita Electric Industrial Co., Ltd. Pattern recognition system including a circuit for detecting maximum or minimum data elements which determines the standard pattern closest to the input pattern
US5187675A (en) 1991-09-18 1993-02-16 Ericsson-Ge Mobile Communications Holding Inc. Maximum search circuit
US5726923A (en) 1993-09-27 1998-03-10 Ntt Mobile Communications Network Inc. Minimum/maximum data detector
US6085208A (en) 1997-10-23 2000-07-04 Advanced Micro Devices, Inc. Leading one prediction unit for normalizing close path subtraction results within a floating point arithmetic unit
US5991785A (en) 1997-11-13 1999-11-23 Lucent Technologies Inc. Determining an extremum value and its index in an array using a dual-accumulation processor
TW434505B (en) * 1997-11-24 2001-05-16 Lucent Technologies Inc Single-cycle accelerator for extremun state search
US6948056B1 (en) 2000-09-28 2005-09-20 Intel Corporation Maintaining even and odd array pointers to extreme values by searching and comparing multiple elements concurrently where a pointer is adjusted after processing to account for a number of pipeline stages
KR100457534B1 (ko) 2002-09-13 2004-11-17 삼성전자주식회사 휘도 및 색 온도 조정 장치 및 방법
US7725513B2 (en) 2003-01-15 2010-05-25 Ikanos Communications, Inc. Minimum processor instruction for implementing weighted fair queuing and other priority queuing
JP2005099598A (ja) * 2003-09-26 2005-04-14 Sanyo Electric Co Ltd 表示装置
US7434034B2 (en) 2004-09-13 2008-10-07 Ati Technologies Inc. SIMD processor executing min/max instructions
TWI342503B (en) * 2007-01-29 2011-05-21 Syscom Comp Engineering Co Method for examining the continuity of data
JP4896839B2 (ja) 2007-08-31 2012-03-14 ルネサスエレクトロニクス株式会社 マイクロプロセッサおよびデータ処理方法

Also Published As

Publication number Publication date
EP2758897B1 (en) 2020-02-12
WO2013044260A3 (en) 2013-08-01
WO2013044260A2 (en) 2013-03-28
KR20160105941A (ko) 2016-09-07
KR20140082720A (ko) 2014-07-02
US20130080490A1 (en) 2013-03-28
EP2758897A2 (en) 2014-07-30
CN103814372B (zh) 2020-05-26
CN103814372A (zh) 2014-05-21
KR101968189B1 (ko) 2019-04-11
US9785434B2 (en) 2017-10-10
JP2014531674A (ja) 2014-11-27

Similar Documents

Publication Publication Date Title
JP5819532B2 (ja) 高速な最小値および最大値検索命令
EP3496008B1 (en) Method and apparatus for processing convolution operation in neural network
US11915119B2 (en) Convolutional neural network (CNN) processing method and apparatus performing high speed and precision convolution operations
CN111213125B (zh) 使用simd指令进行高效的直接卷积
EP3172659B1 (en) Parallelization of scalar operations by vector processors using data-indexed accumulators in vector register files, and related circuits, methods, and computer-readable media
JP2016517570A (ja) マルチモードベクトル処理を提供するためのプログラム可能データ経路構成を有するベクトル処理エンジン、ならびに関連ベクトルプロセッサ、システム、および方法
US9959661B2 (en) Method and device for processing graphics data in graphics processing unit
KR102121866B1 (ko) 와이드 데이터 엘리먼트들에 대한 레지스터 쌍을 사용하는 짝수-엘리먼트 및 홀수-엘리먼트 연산들을 가지는 혼합-폭 simd 연산들
CN109656946B (zh) 一种多表关联查询方法、装置及设备
CN107924306B (zh) 使用simd指令的表查找
EP2025175B1 (en) Instruction for producing two independent sums of absolute differences
US9841979B2 (en) Method and apparatus for shuffling data using hierarchical shuffle units
TWI587137B (zh) 經改良之單一指令多重資料(simd)的k最近鄰居法之實施技術
US20130262819A1 (en) Single cycle compare and select operations
KR20200110165A (ko) 뉴럴 네트워크의 레이어들의 처리에서 제로 값(zero value)의 연산을 처리하는 방법 및 장치
US20170091147A1 (en) Fast fourier transform (fft) custom address generator
US20120124343A1 (en) Apparatus and method for modifying instruction operand
US20230129750A1 (en) Performing a floating-point multiply-add operation in a computer implemented environment
US8589661B2 (en) Odd and even start bit vectors
Zhang et al. Bucket-FEM: A Bucket-based Architecture of Real-time ORB Feature Extraction and Matching for Embedded SLAM Applications
US8001358B2 (en) Microprocessor and method of processing data including peak value candidate selecting part and peak value calculating part
US11669489B2 (en) Sparse systolic array design
WO2023071611A1 (zh) 一种不友好访存检测方法及相关设备
KR101614215B1 (ko) 저전력 곱셈기 및 그 동작 방법
Wang A Theoretical Study of Extreme Parallelism in Sequence Alignments

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150302

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150601

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150930

R150 Certificate of patent or registration of utility model

Ref document number: 5819532

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250