(57)【特許請求の範囲】
【請求項１】
基準位置識別子と基準極値とを記憶媒体に記憶するステップと、
メモリシステムから入力データセットを受信するステップであって、前記基準極値が前記入力データセットとは無関係であるステップと、
前記入力データセットの入力極値を決定するステップと
前記入力極値の対応する位置識別子を決定するステップと、
前記入力極値と前記基準極値とを比較して、前記比較に基づいて、出力極値と出力位置識別子とを決定するステップとを備え、
前記入力極値と前記基準極値とを比較するステップが、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するステップを備える、処理システムにおいて極値を決定する方法。
【請求項２】
前記基準極値および前記基準位置識別子を、それぞれ前記出力極値および前記出力位置識別子と置換するステップをさらに備える、請求項1に記載の方法。
【請求項３】
前記入力極値が前記基準極値未満の場合、前記出力極値が前記入力極値であると決定される、請求項1に記載の方法。
【請求項４】
前記入力極値が前記基準極値よりも大きい場合、前記出力極値が前記入力極値であると決定される、請求項1に記載の方法。
【請求項５】
前記極値が最小値または最大値のうちの1つである、請求項1に記載の方法。
【請求項６】
前記入力データセットが、符号付き形式または符号なし形式のうちの1つの中に表されるデータを備える、請求項1に記載の方法。
【請求項７】
前記入力極値を決定するステップが、前記入力データセット内のデータの大きさに基づく、請求項1に記載の方法。
【請求項８】
前記基準位置識別子とレジスタのペア内の前記基準極値とを結合するステップをさらに備える、請求項1に記載の方法。
【請求項９】
前記出力位置識別子とレジスタのペア内の前記出力極値とを結合するステップをさらに備える、請求項1に記載の方法。
【請求項１０】
前記入力データセットの前記入力極値を決定するステップが、前記入力データセットのペア単位のツリー型減少を備える、請求項1に記載の方法。
【請求項１１】
前記入力極値の前記位置識別子がアドレス部分およびインデックス部分を備え、前記アドレス部分が前記入力データセットのアドレスから形成され、前記インデックス部分が前記入力データセット内の前記入力極値の位置から形成される、請求項1に記載の方法。
【請求項１２】
基準極値と、
前記基準極値の基準位置識別子と
入力データセットであって、前記基準極値が前記入力データセットとは無関係である入力データセットと、
入力極値を前記入力データセットの極値として決定するように構成されたロジックと、
入力位置識別子を前記入力極値の位置識別子として決定するように構成されたロジックと、
出力極値を決定するために、前記入力極値と前記基準極値とを比較するように構成されたロジックであって、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するように構成されたロジックを備える、ロジックとを備える、システム。
【請求項１３】
前記比較に基づいて、出力位置識別子として、前記入力位置識別子および前記基準位置識別子のうちの1つを選択するように構成されたロジックをさらに備える、請求項12に記載のシステム。
【請求項１４】
前記基準極値および基準位置識別子が、それぞれ以前の出力極値および以前の出力位置識別子から決定される、請求項12に記載のシステム。
【請求項１５】
前記入力極値が前記基準極値未満の場合、前記出力極値が前記入力極値であると決定される、請求項12に記載のシステム。
【請求項１６】
前記入力極値が前記基準極値よりも大きい場合、前記出力極値が前記入力極値であると決定される、請求項12に記載のシステム。
【請求項１７】
前記極値が最小値または最大値のうちの1つである、請求項12に記載のシステム。
【請求項１８】
前記入力データセットが、符号付き形式または符号なし形式のうちの1つの中に表されるデータを備える、請求項12に記載のシステム。
【請求項１９】
前記入力データセットがメモリアレイから得られる、請求項12に記載のシステム。
【請求項２０】
入力位置識別子を前記入力極値の前記位置識別子として決定するように構成された前記ロジックが、ペア単位の比較、および前記入力データセットの要素のツリー型減少のためのロジックを備える、請求項12に記載のシステム。
【請求項２１】
前記入力極値の前記位置識別子がアドレス部分およびインデックス部分を備え、前記アドレス部分が前記入力データセットのアドレスから形成され、前記インデックス部分が前記入力データセット内の前記入力極値の位置から形成される、請求項12に記載のシステム。
【請求項２２】
基準位置識別子と基準極値とを記憶するための手段と、
入力データセットの入力極値を決定するための手段であって、前記基準極値が前記入力データセットとは無関係である手段と、
前記入力極値の対応する位置識別子を決定するための手段と、
前記入力極値と前記基準極値とを比較して、前記比較に基づいて、出力極値と出力位置識別子とを決定する手段であって、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するための手段を備える、手段とを備える、極値を決定するための装置。
【請求項２３】
前記基準極値および前記基準位置識別子を、それぞれ前記出力極値および前記出力位置識別子と置換するための手段をさらに備える、請求項22に記載の装置。
【請求項２４】
プロセッサによって実行されると、前記プロセッサに、データセットの極値を決定するための動作を実行させる命令を備え、前記命令が、
基準位置識別子と基準極値とを記憶して、
入力データセットであって、前記基準極値が前記入力データセットとは無関係である入力データセットの入力極値を決定して、
前記入力極値の対応する位置識別子を決定して、
前記入力極値と前記基準極値とを比較して、前記比較に基づいて、出力極値と出力位置識別子とを決定するように動作可能であり、
前記入力極値と前記基準極値とを比較するように動作可能な前記命令が、前記入力データセットから前記入力極値を決定する間に形成された中間値と前記基準極値とを比較するように動作可能な命令を備える、コンピュータ可読記憶媒体。
【請求項２５】
前記命令が、前記基準極値および前記基準位置識別子を、それぞれ前記出力極値および前記出力位置識別子と置換するようにさらに動作可能である、請求項24に記載のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される実施形態は、最小値および最大値検索動作を対象とする。より具体的には、例示的実施形態は、最小値/最大値、およびアレイ内の最小値/最大値の対応する位置識別子またはアドレスを検索するための命令を対象とする。
【背景技術】
【０００２】
データ処理アプリケーションは、しばしば所与のデータセット内の最小値または最大値(本明細書では、「極値(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  インデックスビット
【図１】
0005819532.tif 000002
【図２】
0005819532.tif 000003
【図３】
0005819532.tif 000004
【図４】
0005819532.tif 000005