JP7404332B2 - バイトニックソートアクセラレータ - Google Patents

バイトニックソートアクセラレータ Download PDF

Info

Publication number
JP7404332B2
JP7404332B2 JP2021500789A JP2021500789A JP7404332B2 JP 7404332 B2 JP7404332 B2 JP 7404332B2 JP 2021500789 A JP2021500789 A JP 2021500789A JP 2021500789 A JP2021500789 A JP 2021500789A JP 7404332 B2 JP7404332 B2 JP 7404332B2
Authority
JP
Japan
Prior art keywords
input
compare
output terminal
coupled
circuit
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
JP2021500789A
Other languages
English (en)
Other versions
JP2021531570A (ja
JPWO2020014424A5 (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 JP2021531570A publication Critical patent/JP2021531570A/ja
Publication of JPWO2020014424A5 publication Critical patent/JPWO2020014424A5/ja
Priority to JP2023210257A priority Critical patent/JP2024028966A/ja
Application granted granted Critical
Publication of JP7404332B2 publication Critical patent/JP7404332B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/06Methods or arrangements for data conversion without changing the order or content of the data handled for changing the speed of data flow, i.e. speed regularising or timing, e.g. delay lines, FIFO buffers; over- or underrun control therefor
    • G06F5/065Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/22Indexing scheme relating to groups G06F7/22 - G06F7/36
    • G06F2207/228Sorting or merging network

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Logic Circuits (AREA)
  • Memory System (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Advance Control (AREA)

Description

本開示の少なくとも一つの例によれば、バイトニックソートのためのハードウェアアクセラレータが、複数の比較交換回路と、比較交換回路の各々に関連する先入れ先出し(FIFO)バッファとを含む。各FIFOバッファの出力がFIFOデータ値である。比較交換回路は、第1の動作モードにおいて、前の比較交換回路又はメモリからの前のデータ値をその関連するFIFOバッファに記憶し、その関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又はメモリに渡すように構成され、第2の動作モードにおいて、前のデータ値をFIFOデータ値と比較し、大きい方のデータ値をその関連するFIFOバッファに記憶し、小さい方のデータ値を後続の比較交換回路又はメモリに渡すように構成され、第3の動作モードにおいて、前のデータ値をFIFOデータ値と比較し、小さい方のデータ値をその関連するFIFOバッファに記憶し、大きい方のデータ値を後続の比較交換回路又はメモリに渡すように構成される。
本開示の別の例によれば、バイトニックソートのためのハードウェアアクセラレータが、出力とメモリに結合するように構成される第1の入力とを各々が含む、4つのマルチプレクサ(mux)を含む。ハードウェアアクセラレータは、4つの入力及び4つの出力を有する4入力比較交換回路も含み、各マルチプレクサの出力は、4入力比較交換回路の入力のうちの1つに結合される。ハードウェアアクセラレータは更に、第1のバイトニックソートアクセラレータ、第2のバイトニックソートアクセラレータ、第3のバイトニックソートアクセラレータ、及び第4のバイトニックソートアクセラレータを含む、4つのバイトニックソートアクセラレータを含む。4つのバイトニックソートアクセラレータの各々が入力及び出力を有し、また、4入力比較交換回路の各出力が、バイトニックソートアクセラレータ入力のうちの1つに結合される。各バイトニックソートアクセラレータの出力は、マルチプレクサのうちの1つの第2の入力に結合される。
本開示の別の例によれば、バイトニックソートのための方法が、複数の比較交換回路の各々について、制御信号を受信すること、並びに、制御信号に応答して、第1の動作モード、第2の動作モード、及び第3の動作モードのうちの1つで動作することを含む。第1の動作モードにおいて、この方法は更に、比較交換回路によって、前の比較交換回路又はメモリからの前のデータ値を関連するFIFOバッファに記憶することであって、関連するFIFOバッファの出力がFIFOデータ値である、記憶すること、及び、関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又はメモリに渡すことを含む。第2の動作モードにおいて、この方法は更に、比較交換回路によって、前のデータ値をFIFOデータ値と比較すること、大きい方のデータ値を関連するFIFOバッファに記憶すること、及び、小さい方のデータ値を後続の比較交換回路又はメモリに渡すことを含む。第3の動作モードにおいて、この方法は更に、比較交換回路によって、前のデータ値をFIFOデータ値と比較すること、小さい方のデータ値を関連するFIFOバッファに記憶すること、及び、大きい方のデータ値を後続の比較交換回路又はメモリに渡すことを含む。
様々な例の詳細な説明のために、次に、添付の図面を参照する。
様々な例に従った、バイトニックソートネットワークの信号フローグラフを示す。
様々な例に従った、バイトニックソートアクセラレータのブロック図を示す。
様々な例に従った、比較交換回路の回路概略図を示す。
様々な例に従った、フロースルー動作を含むバイトニックソートネットワークの信号フローグラフを示す。
様々な例に従った、バイトニックソートアクセラレータについてのデータフロー及びタイミング図を示す。
様々な例に従った、データ並列処理が改良されたバイトニックソートアクセラレータのブロック図を示す。
様々な例に従った、データ並列処理が改良されたバイトニックソートネットワークの信号フローグラフを示す。 様々な例に従った、データ並列処理が改良されたバイトニックソートネットワークの信号フローグラフを示す。
様々な例に従った、バイトニックソートのための方法のフローチャートを示す。
ソート動作は、信号処理、レーダー追跡、画像処理、及びその他などのために、様々なアルゴリズムによって頻繁に用いられる。ソート動作は、しばしば計算を多用し、またそのため他のタスクを行なうためのCPU又はGPUの機能を低下させる、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)によって実行されるソフトウェアを用いて実装される。ハードウェアアクセラレータは、CPU又はGPUなどの汎用ホストプロセッサ上で実行されるソフトウェアよりも効率的に、ソートなどの或る種の数学演算を行なうために用いられる。しかしながら、ソート速さ及び回路面積に対する改良が望ましい。
開示される例によれば、バイトニックソートのためのハードウェアアクセラレータ(バイトニックソートアクセラレータ)及びバイトニックソートのための方法が、ソート速さが向上し、回路面積が減少した、データ値のアレイをソートするためのハードウェアソリューションを提供する。本開示のバイトニックソートアクセラレータは、例えば、ホストプロセッサによって実行されるソフトウェアよりも効率的に、バイトニックソートを行なう。特に、本開示のバイトニックソートアクセラレータは、Radix-2シングルディレイフィードバック(R2SDF)アーキテクチャと同様の構造を利用して、パイプライン様式でデータ値のアレイのバイトニックソートを行う。バイトニックソートアクセラレータは、任意の比較ベースのソートアルゴリズムを用いて達成可能なソート速さについての理論的上限に等しい、合計(N×logN)クロックサイクルにおいてアクセラレータ内にシリアルに送られるN個のバイナリ数をソートする。いくつかの例において、バイトニックソートアクセラレータのスループットは、ハードウェアアクセラレータの並列処理を増加させることによって、更に4倍向上する。
バイトニックシーケンスは、2つの条件のいずれかを満たす要素のシーケンス(a、a、・・・、aN-1)である。第1の条件は、(a、・・・、a)が単調に増加し、(ai+1、・・・、aN-1)が単調に減少するような、指数i、0≦i≦N-1が存在することである。第2の条件は、第1の条件が満たされるような指数の循環シフトが存在することである。例えば、{1、4、6、8、3、2}(これらは、単調に増加した後、単調に減少する)、{6、9、4、2、3、5}(循環シフトが、単調に増加した後、単調に減少する({2}で始まる)か又は単調に減少した後、単調に増加する({9}で始まる))、及び、{9、8、3、2、4、6}(これらは、単調に減少した後、単調に増加する)は、バイトニックシーケンスである。
本開示の例において、ハードウェアアクセラレータが、バイトニックシーケンスの要素への比較交換(CE)演算の再帰的適用を介して、サイズNのバイトニックシーケンスをソートする。ハードウェアアクセラレータは、R2SDFアーキテクチャの一部を再使用しながら、任意の比較ベースのソートアルゴリズムについての理論的上限に等しい合計(N×logN)クロックサイクルで、サイズNの入力データをソートできるようにする。CE演算が、2つの要素を比較した後、任意選択として、どちらの要素がより大きい値を有するかに応じて2つの要素の位置を交換又はスワップする。例えば、CE演算は、最大の要素を第2の位置に置こうとする場合、CE演算は第1の値と第2の値とを比較し、第1の値が第2の値より大きい場合、2つの要素を交換する。しかしながら、第2の値が第1の値より大きい場合、交換は成されない。
図1は、ランダム入力を有するサイズN=8のデータシーケンスをソートするための、バイトニックソートネットワーク100の例示の信号フローグラフを示す。一般に入力データは、データ値のN要素ベクトルである。信号フローグラフ100において、矢印は、比較される2つの要素(各矢印の「先頭」及び「末尾」に位置する要素)、及び、要素が交換又はスワップされる方向を示す。図1の例において、比較される2つの要素のうちの小さい方は、比較の後、矢印の末尾に位置する。バイトニックソートネットワーク100は、まず、ソートされていないデータシーケンス(Seq.A)を、第1のlogN-1ステージ、この場合はステージS1及びS2、において生じるバイトニックシーケンス(Seq.C)へと再配置する。その後、バイトニックソートネットワーク100は、最終ステージS3において、バイトニックシーケンス(Seq.C)をソートされたシーケンス(Seq.D)へと再配置する。
入力データ又はソートされていないデータシーケンス(Seq.A)は、長さ2のバイトニックシーケンスの組み合わせとして扱われる。ステージS1において、反対方向に向き合う近接する矢印によって示されるように、並列のCE演算が、近接するバイトニックシーケンス(対)について反対方向に適用される。ステージS1の結果は、入力データ(Seq.A)が長さ4のバイトニックシーケンス(Seq.B)の組み合わせに変換されることである。ステージS2において、同様の並列CE演算が、図に示されるような近接するバイトニックシーケンスについて反対方向に適用され、入力データサイズが8より大きい場合、後続のステージは、長さNのバイトニックシーケンスが生成されるまで同様に続行する。この例では、ステージS2の結果は、長さN=8のバイトニックシーケンス(Seq.C)が生成されることである。この例ではステージS3である最終ステージにおいて、バイトニックシーケンス(Seq.C)は、図示されるようなソートされたシーケンス(Seq.D)に変換される。
図2は、本開示の例に従ったバイトニックソートアクセラレータ200を示す。バイトニックソートアクセラレータ200は、2入力マルチプレクサ(mux)202への入力として、メモリ208から入力データ(Di、これは、データ値のN要素ベクトル)を受信する。上記で説明したように、入力データ要素は、バイトニックソートアクセラレータ200のマルチプレクサ202によってシリアルに受信される。バイトニックソートアクセラレータ200は、一つ又は複数のパイプライン比較交換(CE)回路204も含む。図2の例において、CE回路204は、第1のCE回路204a及び最後のCE回路204cを含む。CE回路204bについて、CE回路204aは前のCE回路204aと称し、CE回路204cは後続のCE回路204cと称する。一般に、第1のCE回路204aと最後のCE回路204cとの間の各CE回路204は、1つの前のCE回路204及び1つの後続のCE回路204を有する。
サイズN(一般的に、2のべき乗であると想定される)の入力データをソートするように構成されるバイトニックソートアクセラレータ200の場合、バイトニックソートアクセラレータ200は少なくともLogNのCE回路204を含む。Nが2のべき乗でない例において、入力データサイズを次の2のべき乗まで増加させるために、ゼロパディングが用いられる。図2の例において、また図1との整合性のために、例えば入力データはサイズN=8であるものと想定される。したがって、図2の例において、バイトニックソートアクセラレータ200は3つのCE回路204a、204b、204cを含む。マルチプレクサ202は2つの入力を含み、1つは前述のようにメモリ208に結合され、もう1つは最後のCE回路204cによって生成される出力データ(Do)に結合される。出力データ(Do)は、いくつかの例においてメモリ208と同じであり、他の例ではメモリ208から分離される、メモリ210にも提供される。
各CE回路204a、204b、204cは、それぞれ、先入れ先出し(FIFO)バッファ206a、206b、206cに関連する。FIFOバッファ206a、206b、206cは遅延要素として働き、またいくつかの例では、メモリ又はシフトレジスタにおいて実装される。M CE回路204a、204b、204cを有し、M CE回路がM’を用いてインデックス付けされ、M’の範囲が0からlogN-1である、バイトニックソートアクセラレータ200の場合、FIFOバッファ206a、206b、206cのサイズは2log N-1-M’であるか、又はこの場合、それぞれサイズ4、2、1である。特定のCE回路204に関連するFIFOバッファ206のサイズは、その特定のCE回路204によって実施される比較の「距離」を特定する。図1に戻って参照すると、例えばステージS1において、すべての比較は距離1を有する近接する値の比較であり、同様に、ステージS2において、比較は、距離2及び距離1を有する値の比較であり、最終的に、ステージS3において、比較は距離4を有し、次に2を有し、次に1を有する値の比較である。回路204a、204b、204cの各々は、それぞれ制御信号C、C、Cも受信し、これについては下記で更に詳細に説明する。
図3は、CE回路204をより詳細に示す。CE回路204は、関連するFIFOバッファ206の出力に結合される第1の入力302を含む。参照しやすくするために、各FIFOバッファ206の出力データはFIFOデータ値と呼ぶことができる。CE回路204は、関連するFIFOバッファ206の入力に結合される第1の出力306も含む。CE回路204は更に、第2の入力304及び第2の出力308を含む。第2の入力304は、(例えば、図2に示されるような)前のCE回路204又はメモリ(例えば、図2に示されるmux202を介したメモリ208)の第2の出力に結合する。第2の出力308は、(例えば、図2に示されるような)後続のCE回路204又はメモリ(例えば、図2に示されるメモリ210)の第2の入力に結合する。
CE回路204は比較器310も含み、比較器310は、第1の入力302及び第2の入力304として入力を受信し、第1の入力302と第2の入力304との比較に基づいて出力を生成する。図3の例において、比較器310の出力は、第1の入力302が第2の入力304よりも大きいときにアサートされ(例えば「1」であり)、第1の入力302が第2の入力304よりも小さいときにアサート解除される(例えば「0」である)。
CE回路204は、それぞれC[0]及びC[1]として示される、その最下位ビット及び最上位ビットを有する2ビット制御信号を受信する。比較器310の出力及び最下位ビットC[0]は、XORゲート312への入力として提供される。XORゲート312の出力及び最上位ビットC[1]は、ANDゲート314への入力として提供される。ANDゲート314の出力は、第1の出力mux316及び第2の出力mux318のための制御であり、第1の出力mux316及び第2の出力mux318の出力は、それぞれ、第1の出力306及び第2の出力308を含む。ANDゲート314の出力がアサートされることに応答して、第1の出力mux316は、第1の入力302を第1の出力306として通過させ、第2の出力mux318は、第2の入力304を第2の出力308として通過させる。ANDゲート314の出力がアサート解除されることに応答して、第1の出力mux316は、第2の入力304を第1の出力306として通過させ、第2の出力mux318は、第1の入力302を第2の出力308として通過させる。
CE回路204の前述の論理の結果として、比較交換演算は、制御信号Cによって下記のように特定される。
0(又は1):第1の動作モードにおいて、比較交換演算はCE回路204を迂回することであり、これは、図4に関連して下記でより詳細に説明するフロースルー動作に対応し、前のCE回路からのデータ(第2の入力304)が、FIFOバッファ206に記憶され(第1の出力306であり)、またFIFOバッファ206からの最も古いデータ(第1の入力302)は、次のCE回路に渡される(第2の出力308である)。
2:第2の動作モードにおいて、比較交換演算は、第1のCE回路204aの場合、前のCE回路又はメモリ208からのデータ(第2の入力304)を、FIFOバッファ206からの最も古いデータであるFIFOデータ値(第1の入力302)と比較することであり、大きい方のデータ値がFIFOバッファ206に記憶され(第1の出力306であり)、小さい方のデータ値は、次のCE回路、又は、最後のCE回路204cの場合、メモリ210に渡される(第2の出力308である)。
3:第3の動作モードにおいて、比較交換演算は、第1のCE回路204aの場合、前のCE回路又はメモリ208からのデータ(第2の入力304)を、FIFOバッファ206からの最も古いデータであるFIFOデータ値(第1の入力302)と比較することであり、小さい方のデータ値がFIFOバッファ206に記憶され(第1の出力306であり)、大きい方のデータ値は、次のCE回路、又は、最後のCE回路204cの場合、メモリ210に渡される(第2の出力308である)。
下記で更に説明するように、制御信号「2」対制御信号「3」の間の方向の差は、図1の矢印の方向性を実装することができる。
図4は、フロースルー動作(例えば、前述の制御信号0に対応する)を含む、バイトニックソート400のための別の例示の信号フローグラフを示す。特に、図1の例示的信号フローグラフ100は、ドット(矢印ではない)接続の端部においてデータ要素として示される、フロースルー動作402を含んで示される。フロースルー動作は、例えば、バイトニックソートエンジン200のパイプラインステージにわたって、データの定常フローを維持するように実装される。例えば、ステージS1において、距離4及び2を有する要素間の比較は、フロースルー動作として示される。同様に、ステージS2において、距離4を有する要素間の比較は、フロースルー動作として示される。ステージS3において、(図1に関して上記で説明したように、最終のバイトニックソート動作を実施するために)距離4の比較が必要であるため、N=8である特定の例についてフロースルー動作は存在しない。
図5は、図1及び図4のシーケンスAに対応する入力パターンを有する、N=8の場合のバイトニックソートアクセラレータ200の入力データ(Di)及び出力データ(Do)についての、例示のデータフロー及びタイミング図500を示す。概して、バイトニックソートアクセラレータ200の動作は、最後の入力データ値(この例では「1」)がバイトニックソートアクセラレータ200にフィードされた時点から、完了するためにN×logNクロックサイクル(この場合、24クロックサイクル)を要する。
図2に戻って参照すると、出力データDoからmux202への入力までのフィードバック接続は、図1及び図4に関して上記で説明したステージS1、S2、S3を実装するために、バイトニックソートアクセラレータ200を反復的に利用できるようにする。ステージS1に対応する第1の反復において、ステージS1は距離1を有する近接する値に対してのみ比較交換演算を実施するため、(距離4に対応する)CE回路204a及び(距離2に対応する)CE回路204bは、フロースルーモードで動作される。
(距離1に対応する)CE回路204cについての比較交換演算は、第1の値(この例では「8」)を関連するFIFOバッファ206cにフロースルーするために、7番目のクロックサイクルにおいて0で始まる。この時点において、最も古いものから最も新しいものへと順序付けされ、FIFOバッファ206aは値5、4、3、2を含み、FIFOバッファ206bは値7、6を含み、FIFOバッファ206cは値8を含む。
8番目のクロックサイクルにおいて、CE回路204cについての比較交換演算は2であり、これによって、CE回路204cに、前のCE回路204bからのデータ(値7、FIFOバッファ206b内の最も古いデータとして、及び、フロースルー動作の対象となる)をFIFOバッファ206cからの最も古いデータ(値8)と比較させる。大きい方のデータ値8は、FIFOバッファ206cに戻って記憶され、小さい方のデータ値7は出力データDoとして渡され、これはタイミング図500においてDoの第1の要素(シーケンスB)として反映される。また、この時点で、mux202への制御信号が変更されて、出力データDoがCE回路204aへの入力データとして働き、第2の反復を開始して、続くステージ、この場合はステージS2を実装するようになる。
9番目のクロックサイクルにおいて、CE回路204cについての比較交換演算は再度0(フロースルー)であり、これによって、CE回路204cに、関連するFIFOバッファ206cからのデータ値8を出力データDoとして渡させ、これはタイミング図500においてDoの第2の要素(シーケンスB)として反映される。10番目のクロックサイクルにおいて、CE回路204cについての比較交換演算は3であり、これによって、CE回路204cに、前のCE回路204bからのデータ(値5、FIFOバッファ206b内の最も古いデータとして、及び、フロースルー動作の対象となる)をFIFOバッファ206cからの最も古いデータ(値6)と比較させる。小さい方のデータ値5がFIFOバッファ206cに記憶され、大きい方のデータ値6は出力データDoとして渡され、これはタイミング図500においてDoの第3の要素(シーケンスB)として反映される。上記のプロセスは繰り返され、データ値4及び3(比較交換演算2を用いる)とデータ値2及び1(比較交換演算3を用いる)とを比較して、距離1を有する近接する値でのステージS1の比較交換演算を完了する。
ステージS2は、必要とされる比較交換演算の方向性を明らかにするように制御信号Cが改変される点を除いて、ステージS1に関して上記で説明した内容と同様に実装される。タイミング図500の残りの部分は、ステージS1の結果(シーケンスB)、ステージS2の結果(シーケンスC)、及びステージS3の結果(シーケンスD)に対応する、制御信号C及び出力データDoを反映する
また、制御信号Cは、例えば、モジュロNのバイナリカウンタ(0からN-1までをカウントする)、及び、各CE回路204a、204b、204cに関連するモジュロlogNのバイナリカウンタ(0からlogN-1までをカウントする)からのカウンタビットを用いて生成されるパターンに従う。モジュロlogNのバイナリカウンタは反復ごとに増分し、モジュロNのバイナリカウンタはクロックサイクルごとに増分する。CE回路204a、204b、204cの各々は、モジュロlogNのバイナリカウンタが特定の値に達するとき、アクティブである(例えば、制御信号C=2又はC=3)。例えばN=8の場合、C2は、モジュロlogNのカウンタが2に等しいときにアクティブであり、C1は、モジュロlogNのカウンタが1より大きいか又は1に等しいときにアクティブであり、C0は、モジュロlogNのカウンタが0より大きいか又は0に等しいときにアクティブである。Cの値は、モジュロNのカウンタからの個々のビットを用いる組み合わせ論理に基づいて、各CE回路204a、204b、204cについて決定される。他の例において、制御信号Cは、メモリ内の制御信号バッファからアクセスされる。
図2に示され上記で説明したバイトニックソートアクセラレータ200は、バイトニックソートアクセラレータ200がシリアル入力データ(Di)を受信し、固定された待ち時間の後、出力データ(Do)をシリアルに生成するという点で、本来シリアルである。しかしながら、いくつかの例において、バイトニックソートアクセラレータが実装されるべきコンピュータシステムは、より広い帯域幅を有しそのためより高いスループットを処理し得る、プロセッサ、バス構造、及びメモリアクセス(例えば、直接メモリアクセスDMA))を含む。そうしたコンピュータシステムにおいて、ハードウェアアクセラレータが、バイトニックソートアクセラレータ200のシリアル入力及びシリアル出力などのデータを相対的にゆっくりと消費及び生成することによって、システム全体の性能が低減される。
図6は、データ値のN要素ベクトルに関するソートを行うために必要なクロックサイクルの数を減少させる、高水準のデータ並列処理を伴うバイトニックソートアクセラレータ600を示す。バイトニックソートアクセラレータ600は、メモリ208からの4つの並列ストリーム(x1~x4と示される)から入力データを受信し、各ストリームは2入力マルチプレクサ(mux)602への1入力である。図2に関して上述したように、入力データ要素は、バイトニックソートアクセラレータ600のmux602によってシリアルに受信されるが、4x並列処理を用いる。バイトニックソートアクセラレータ600は、図2及び図3に示され上記で説明したものと同一の4つのCE回路204a~204dを含む、4入力CE回路604も含む。
第1のCE回路204aは、第1のmux602aの出力に結合される第1の入力と、第2のmux602bの出力に結合される第2の入力とを含む。第2のCE回路204bは、第3のmux602cの出力に結合される第1の入力と、第4のmux602dの出力に結合される第2の入力とを含む。第3のCE回路204cは、第1のCE回路204aの第1の出力に結合される第1の入力と、第2のCE回路204bの第1の出力に結合される第2の入力とを含む。第4のCE回路204dは、第1のCE回路204aの第2の出力に結合される第1の入力と、第2のCE回路204bの第2の出力に結合される第2の入力とを含む。前述のように、CE回路204a~204dは、第1及び第2の出力がそれぞれ第2及び第1の入力に対応するフロースルーモードにおいて、これらの入力のうち大きい方のデータ値が第1の出力であり、これらの入力のうちの小さい方のデータ値が第2の出力である比較モードにおいて、並びに、これらの入力の小さい方のデータ値が第1の出力であり、これらの入力の大きい方のデータ値が第2の出力である比較モードにおいて、動作するように構成される。
第3及び第4のCE回路204c、204dの第1及び第2の出力は、各々、上記図2において説明した、それぞれ、バイトニックソートアクセラレータ200a~200dの入力に結合される。第1のバイトニックソートアクセラレータ200aの出力(y1)は、mux602dの入力に結合される。第2のバイトニックソートアクセラレータ200bの出力(y2)は、mux602bの入力に結合される。第3のバイトニックソートアクセラレータ200cの出力(y3)は、mux602cの入力に結合される。第4のバイトニックソートアクセラレータ200dの出力(y4)は、mux602aの入力に結合される。
図7A及び図7Bは、わかりやすくするために、フロースルー動作を含まないバイトニックソート700についての例示の信号フローグラフを示す。図2のバイトニックソートアクセラレータ200に関した上記の例は、8ポイントバイトニックソートアクセラレータについてのものであったが、本開示は、説明するように追加のCE回路及び関連するFIFOバッファを追加することによって、他の数のポイントに拡張することが可能である。したがって、図2の例を続けるために、バイトニックソートアクセラレータ600の機能性は、前述のように、4つの8ポイントバイトニックソートアクセラレータ200を用いる32ポイントバイトニックソートアクセラレータとして説明される。信号フローグラフ700において、行701、703、705、707は、それぞれ、8ポイントバイトニックソートアクセラレータ200a、200b、200c、200dの機能性に対応する。
第1のステージ702において、4入力CE回路604のCE回路204a~204dはフロースルーモードで動作して、x1入力データは8ポイントバイトニックソートアクセラレータ200dに提供され、x2入力データは8ポイントバイトニックソートアクセラレータ200bに提供され、x3入力データは8ポイントバイトニックソートアクセラレータ200cに提供され、x4入力データは8ポイントバイトニックソートアクセラレータ200aに提供されるようになっている。第1のステージ702において、8ポイントバイトニックソートアクセラレータ200a~200dは、距離4及び2を有する要素間での比較のためにフロースルー動作を実装し、距離1を有する要素は前述のように比較される。この場合、8ポイントバイトニックソートアクセラレータ200a~200dの最後のCE回路のみがフロースルーモードで動作されない。
第2及び第3のステージ704、706において、メモリ208から8要素(この例において)が読み取られた後であるが、4入力CE回路604のCE回路204a~204dは再度フロースルーモードで動作し、mux602a~602dは、8ポイントバイトニックソートアクセラレータ200a~200dの出力を4入力CE回路604への入力として提供するように構成される。第2のステージ704において、8ポイントバイトニックソートアクセラレータ200a~200dは、距離4を有する要素間での比較のためにフロースルー動作を実装し、距離2及び1を有する要素は前述のように比較される。この場合、8ポイントバイトニックソートアクセラレータ200a~200dの最後の2つのCE回路は、フロースルーモードで動作しない。第3のステージ706において、8ポイントバイトニックソートアクセラレータ200a~200dはフロースルー動作を実装せず、距離4、2、及び1を有する要素は前述のように比較される。
第4のステージ708において、CE回路204c及び204dは、距離8を有する要素間での比較を実施するために、(708aに対応する)比較モードで動作される。8ポイントバイトニックソートアクセラレータ200a~200dは、フロースルー動作を実装せず、距離4、2、及び1を有する要素は前述のように(708bに対応して)比較される。CE回路204a~204dは、フロースルーモードで動作される。
最終的に、第5のステージ710において、CE回路204a~204dはすべて、距離16及び8を有する要素間での比較を実施するために、(710aに対応する)比較モードで動作される。8ポイントバイトニックソートアクセラレータ200a~200dはフロースルー動作を実装せず、距離4、2、及び1を有する要素は前述のように(710bに対応して)比較される。CE回路204a~204d、又は8ポイントバイトニックソートアクセラレータ200a~200dにおけるCE回路は、いずれもフロースルー動作を実装しない。この例において、4番目及び5番目のサイクルは例示的である。一般に、4入力CE回路604は、最後の2回の反復又はステージまでフロースルー動作を実装する。
バイトニックソートアクセラレータ600は、図2で説明されるバイトニックソートアクセラレータ200に比べてスループット及びレイテンシを向上させる。例えば、長さNのデータアレイの場合、反復回数はlogNのままである。しかしながら、各反復に必要なクロックサイクルは、4入力CE回路604及びN/4ポイントバイトニックソートアクセラレータ(例えば、図6の例における8ポイントバイトニックソートアクセラレータ200a~200d)によって導入される並列処理に起因して、4分の1に減少する。したがって、バイトニックソートアクセラレータ600のレイテンシは、サンプル当たり((logN)/4)の実効スループットを伴う((N×logN)/4)クロックサイクルである。
図8は、本開示の例に従った方法800のフローチャートを示す。方法800は、ブロック802において、制御信号、例えば図3に関して上記で説明したCnを受信することから開始される。ブロック804において、方法800は、制御信号によって示される比較交換回路について動作モードを決定することを含み、動作モードは、一例では、制御信号が値0又は1の場合は第1の動作モードであり、制御信号が値2の場合は第2の動作モードであり、また制御信号が値3の場合は第3の動作モードである。
制御信号が、比較交換回路を第1の動作モードで動作させる場合、方法800はブロック806に進み、前の比較交換回路又はメモリからの前のデータ値を関連するFIFOバッファに記憶する。関連するFIFOバッファの出力は、FIFOデータ値と称する。次いで、方法800はブロック808へと続き、関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又はメモリに渡す。
制御信号が、比較交換回路を第2の動作モードで動作させる場合、方法800はブロック810に進み、前のデータ値をFIFOデータ値と比較する。次いで、方法800はブロック812へと続き、大きい方のデータ値を関連するFIFOバッファに記憶し、ブロック814において、小さい方のデータ値を後続の比較交換回路又はメモリに渡す。
制御信号が、比較交換回路を第3の動作モードで動作させる場合、方法800はブロック816に進み、前のデータ値をFIFOデータ値と比較する。次いで、方法800はブロック818で継続し、小さい方のデータ値を関連するFIFOバッファに格納し、ブロック820において、大きい方のデータ値を後続の比較交換回路又はメモリに渡す。
上記で説明したように、例えば図5に関して、第1の反復又は一連の反復の間、複数の比較交換回路によって入力データのN要素ベクトルがバイトニックシーケンスに配置されるように、制御信号が提供される。更に、最終反復において、バイトニックシーケンスは、複数の比較交換回路によって、完全にソートされたアレイに配置される。制御信号は、メモリ内の制御信号バッファによって提供され得るか、又は、前述のようにカウンタビットを用いて提供され得る。
前述の考察において、及び特許請求の範囲において、様々な要素、セクション、及びステージを含むバイトニックソートアクセラレータについて言及している。これらの要素、セクション、及びステージは、場合によっては、例えば集積回路(IC)上に実装されるハードウェア回路要素に対応することを理解されたい。実際に、少なくとも一つの例において、バイトニックソートアクセラレータ全体がIC上に実装される。
前述の考察において、及び特許請求の範囲において、「含む」及び「備える」という用語はオープンエンド様式で用いられ、またそのため、「・・・を含むがそれに限定されない」ことを意味するものと解釈されるべきである。また、「結合する」という用語は、間接接続又は直接接続のいずれかを意味することが意図される。したがって、第1のデバイスが第2のデバイスに結合する場合、その接続は直接接続を介するか、又は、他のデバイス及び接続を介する間接接続を介するものであり得る。同様に、第1の構成要素又は場所と第2の構成要素又は場所との間で結合されるデバイスは、直接接続を介するか、又は、他のデバイス及び接続を介する間接接続を介するものであり得る。或るタスク又は機能を行う「ように構成される」要素又は機構は、その機能を行うために製造業者による製造時に構成され(例えば、プログラミングされ又は構造的設計され)得、並びに/或いは、その機能及び/又は他の追加の又は代替の機能を行うために、製造後、ユーザによって構成可能(又は再構成可能)であり得る。こういった構成は、デバイスのファームウェア及び/又はソフトウェアプログラミングを介し得、デバイスのハードウェア構成要素及び相互接続の構造及び/又はレイアウトを介し得、或いはそれらの組み合わせであり得る。加えて、上記考察におけるフレーズ「接地」又は同様のフレーズの使用は、シャーシ接地、アース接地、フローティング接地、仮想接地、デジタル接地、共通接地、及び/又は、本開示の教示に適用可能であるか又は適切な任意の他の形式の接地接続を含むことが意図される。特に示されない限り、値に先行する「約」、「およそ」、又は「実質的に」は、示される値の+/-10パーセントを意味する。
上記考察は、本開示の原理及び様々な実施形態の例示であることが意図される。当業者であれば、上記開示を完全に理解すれば、多く変形及び改変が明らかとなろう。下記の特許請求の範囲は、そうした変形及び改変すべてを包含するものと解釈されることが意図される。

Claims (20)

  1. ハードウェアアクセラレータであって、
    第1の入力端子と第2の入力端子と制御端子と第1の出力端子と第2の出力端子とを含む第1の比較交換回路であって、
    前記第1の入力端子において第1のデータ値を受信し、
    前記第2の入力端子において第2のデータ値を受信し、
    前記制御端子において制御信号を受信し、
    前記制御信号が第1の値を有すると判定することに応答して、前記第2の出力端子において前記第1のデータ値を出力し、前記第1の出力端子において前記第2のデータ値を出力し、
    前記制御信号が第2の値を有すると判定することに応答して、前記第1の出力端子において前記第1のデータ値と前記第2のデータ値との大きいものを出力し、前記第2の出力端子において前記第1のデータ値と前記第2のデータ値との小さいものを出力し、
    前記制御信号が第3の値を有すると判定することに応答して、前記第1の出力端子において前記第1のデータ値と前記第2のデータ値との小さいものを出力し、前記第2の出力端子において前記第1のデータ値と前記第2のデータ値との大きいものを出力する、
    ように構成される、前記第1の比較換回路と、
    前記第1の比較交換回路の第1の出力端子に結合される入力端子と前記第1の比較換回路の第1の入力端子に結合される出力端子とを含む先入れ先出し(FIFO)バッファと、
    を含む、ハードウェアアクセラレータ。
  2. 請求項1に記載のハードウェアアクセラレータであって、
    前記第1の比較交換回路の第2の入力端子に結合される第2の比較換回路と、
    前記第1の比較交換回路の第2の出力端子に結合される第3の比較換回路と、
    を更に含む、ハードウェアアクセラレータ。
  3. 請求項1に記載のハードウェアアクセラレータであって、
    第1の入力端子と第2の入力端子と制御端子と第1の出力端子と第2の出力端子とを含 む第2の比較交換回路
    メモリと
    前記第2の比較交換回路の第2の出力端子に結合される第1の入力端子と、前記メモリに結合される2の入力端子と、前記第1の比較交換回路の第の入力端子に結合される出力端子とを含むマルチプレクサ(mux)と、
    更に含む、ハードウェアアクセラレータ。
  4. 請求項に記載のハードウェアアクセラレータであって、
    前記第2の比較交換回路の第2の出力端子が前記メモリに結合される、ハードウェアアクセラレータ。
  5. 請求項に記載のハードウェアアクセラレータであって、
    第1の反復において、前記muxが、データ値のN要素ベクトルを前記メモリからシリアルに受信、前記第1の比較交換回路の第2の入力端子に提供するように構成される、ハードウェアアクセラレータ。
  6. 請求項に記載のハードウェアアクセラレータであって、
    後続の反復において、前記muxが、前記第2の比較交換回路の第2の出力端子を前記第1の比較交換回路の第2の入力端子に結合するように更に構成される、ハードウェアアクセラレータ。
  7. 請求項に記載のハードウェアアクセラレータであって、
    制御信号を含む制御信号バッファを更に含み、
    前記制御信号が、前記第1及び第2の比較交換回路に提供されると、前記第1及び第2 比較交換回路に、第1の反復又は一連の反復の間に前記N要素ベクトルをバイトニックシーケンスに配置させ、最終反復の間に前記N要素ベクトルを完全にソートされたアレイに配置させる、ハードウェアアクセラレータ。
  8. 請求項1に記載のハードウェアアクセラレータであって、
    前記第2の入力端子に結合されるメモリと、
    前記第2の出力端子に結合される第2の比較交換回路と、
    を更に含む、ハードウェアアクサラレータ。
  9. 請求項1に記載のハードウェアアクセラレータであって、
    前記第2の入力端子に結合される第2の比較交換回路と、
    前記第2の出力端子に結合されるメモリと、
    を更に含む、ハードウェアアクセラレータ。
  10. ハードウェアアクセラレータであって、
    4つのマルチプレクサ(mux)であって、各々が、出力端子と、メモリに結合されるように適合される第1の入力端子と、第2の入力端子とを含む、前記4つのマルチプレクサ(mux)と、
    4つの入力端子と4つの出力端子とを含む比較交換回路と、
    第1のソーティングアクセラレータと第2のソーティングアクセラレータと第3のソーティングアクセラレータと第4のソーティングアクセラレータとを含む4つのソーティングアクセラレータであって、前記4つのソーティングアクセラレータの各々が入力端子と出力端子とを含む、前記4つのソーティングアクセラレータと、
    を含み、
    各muxの出力端子が前記比較交換回路の入力端子の1つに結合され、
    前記比較交換回路の各出力端子が前記4つのソーティングアクセラレータの入力端子の1つに結合され、
    各ソーティングアクセラレータの出力端子が前記4つのmuxの1つの第2の入力端子に結合される、ハードウェアアクセラレータ。
  11. 請求項10に記載のハードウェアアクセラレータであって、
    前記比較交換回路が、
    各々が第1及び第2の入力端子と第1及び第2の出力端子とを含む第1及び第2の2入力比較交換回路であって、前記第1の2入力比較交換回路の第1の入力端子が前記4つの muxの第1のmuxの出力端子に結合され、前記第1の2入力比較交換回路の第2の入力端子が前記4つのmuxの第2のmuxの出力端子に結合され、前記第2の2入力比較交換回路の第1の入力端子が前記4つのmuxの第3のmuxの出力端子に結合され、前記第2の2入力比較交換回路の第2の入力端子が前記4つのmuxの第4のmuxの出力端子に結合される、前記第1及び第2の2入力比較交換回路と、
    各々が第1及び第2の入力端子と第1及び第2の出力端子とを含む第3及び第4の2入力比較交換回路であって、前記第3の2入力比較交換回路の第1の入力端子が前記第1の2入力比較交換回路の第1の出力端子に結合され、前記第3の2入力比較交換回路の第2の入力端子が前記第2の2入力比較交換回路の第1の出力端子に結合され、前記第4の2入力比較交換回路の第1の入力端子が前記第1の2入力比較交換回路の第2の出力端子に結合され、前記第4の2入力比較交換回路の第2の入力端子が前記第2の2入力比較交換回路の第2の出力端子に結合され、前記第3の2入力比較交換回路の第1の出力端子が前記第1のソーティングアクセラレータの入力端子に結合され、前記第3の2入力比較交換回路の第2の出力端子が前記第2のソーティングアクセラレータの入力端子に結合され、前記第4の2入力比較交換回路の第1の出力端子が前記第3のソーティングアクセラレータの入力端子に結合され、前記第4の2入力比較交換回路の第2の出力端子が前記第4のソーティングアクセラレータの入力端子に結合される、前記第3及び第4の2入力比較交 換回路と、
    を更に含む、ハードウェアアクセラレータ。
  12. 請求項10に記載のハードウェアアクセラレータであって、
    前記第1のソーティングアクセラレータの出力端子が前記4つのmuxの第4のmuxの第2の入力端子に結合され、
    前記第2のソーティングアクセラレータの出力端子が前記4つのmuxの第2のmuxの第2の入力端子に結合され、
    前記第3のソーティングアクセラレータの出力端子が前記4つのmuxの第3のmuxの第2の入力端子に結合され、
    前記第4のソーティングアクセラレータの出力端子が前記4つのmuxの第1のmuxの第2の入力端子に結合される、ハードウェアアクセラレータ。
  13. 請求項10に記載のハードウェアアクセラレータであって、
    各ソーティングアクセラレータが、
    複数の2入力比較交換回路と、
    前記複数の2入力比較交換回路の各々に関連する先入れ先出し(FIFO)バッファ あって、各FIFOバッファの出力がFIFOデータ値である、前記FIFOバッファと
    前記複数の2入力比較交換回路が、
    第1の動作モードにおいて、前の2入力比較交換回路又は前記比較交換回路からの前のデータ値を関連するFIFOバッファに記憶し、関連するFIFOバッファからのFIFOデータ値を後続の2入力比較交換回路、前記4つのmuxの1つ、又は前記メモリに渡
    第2の動作モードにおいて、前記前のデータ値を前記FIFOデータ値と比較し、前記データ値の大きいものを関連するFIFOバッファに記憶し、前記データ値の小さいものを前記後続の2入力比較交換回路、前記4つのmuxの1つ、又は前記メモリに渡
    第3の動作モードにおいて、前記前のデータ値を前記FIFOデータ値と比較し、前記 データ値の小さいのをその関連するFIFOバッファに記憶し、前記データ値の大きいのを前記後続の2入力比較交換回路、前記4つのmuxの1つ、又は前記メモリに渡す
    ように構成される、ハードウェアアクセラレータ。
  14. 請求項13に記載のハードウェアアクセラレータであって、
    前記複数の2入力比較交換回路の各々が、
    関連するFIFOバッファの出力端子に結合される第1の入力端子と、
    関連するFIFOバッファの入力端子に結合される第1の出力端子と、
    前記前の2入力比較交換回路の第2の出力端子又は前記比較交換回路の出力端子に結合される第2の入力端子と、
    後続の2入力比較交換回路の第2の入力端子、前記4つのmuxの1つ、又は前記メモリに結合される第2の出力端子と、
    を含む、ハードウェアアクセラレータ。
  15. 請求項13に記載のハードウェアアクセラレータであって、
    前記複数の2入力比較交換回路の各々が制御信号を受信するように更に構成され、
    前記受信された制御信号が、前記2入力比較交換回路を前記第1、第2及び第3の動作モードの1つで動作させる、ハードウェアアクセラレータ。
  16. 請求項13に記載のハードウェアアクセラレータであって、
    第1の反復において、前記4つのmuxの各々が、データ値のN/4要素ベクトルを前記メモリからシリアルに受信、前記比較交換回路の入力端子に提供するように構成される、ハードウェアアクセラレータ。
  17. 請求項16に記載のハードウェアアクセラレータであって、
    後続の反復において、前記4つのmuxの各々が、前記4つのソーティングアクセラレータの出力端子の1つを前記比較交換回路の入力端子の1つに結合するように更に構成される、ハードウェアアクセラレータ。
  18. 請求項16に記載のハードウェアアクセラレータであって、
    制御信号を含む制御信号バッファを更に含み、
    前記制御信号が、前記比較交換回路と前記4つのソーティングアクセラレータの前記 数の2入力比較交換回路に提供されると、前記ハードウェアアクセラレータに、第1の反復又は一連の反復の間に前記N/4要素ベクトルをバイトニックシーケンスに配置させ、最終反復の間に前記N/4要素ベクトルを完全にソートされたアレイに配置させる、ハードウェアアクセラレータ。
  19. 方法であって、
    比較交換回路によって制御信号を制御端子で受信すること
    前記比較交換回路によって第1のデータ値を第1の入力端子で受信すること
    前記比較交換回路によって第2のデータ値を第2の入力端子で受信すること
    前記制御信号が第1の値を有すると判定することに応答して、前記比較交換回路によって前記第1のデータ値を第1の出力端子に出力し、前記比較交換回路によって前記第2の データ値を第2の出力端子に出力すること
    前記制御信号が第2の値を有すると判定することに応答して、前記比較交換回路によっ て前記第1のデータ値と前記第2のデータ値との大きいものを前記第1の出力端子に出力 し、前記比較交換回路によって前記第1のデータ値と前記第2のデータ値の小さいものを前記第2の出力端子に出力すること
    前記制御信号が第3の値を有すると判定することに応答して、前記比較交換回路によっ て前記第1のデータ値と前記第2のデータ値小さもの前記第1の出力端子に出力 し、前記後続の比較交換回路によって前記第1のデータ値と前記第2のデータ値との大き いものを前記第2の出力端子に出力こと
    を含む、方法。
  20. 請求項19に記載の方法であって、
    前記比較交換回路を含む複数の比較交換回路に制御信号を提供すること
    前記複数の比較交換回路、第1の反復又は一連の反復の間にN要素ベクトルをバイトニックシーケンスに配置させ、最終反復の間にN要素ベクトルを完全にソートされたアレイに配置させる、ように命令することと、
    を更に含む、方法。
JP2021500789A 2018-07-12 2019-07-11 バイトニックソートアクセラレータ Active JP7404332B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2023210257A JP2024028966A (ja) 2018-07-12 2023-12-13 バイトニックソートアクセラレータ

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
IN201841026064 2018-07-12
IN201841026064 2018-07-12
US16/237,447 2018-12-31
US16/237,447 US10901692B2 (en) 2018-07-12 2018-12-31 Bitonic sorting accelerator
PCT/US2019/041315 WO2020014424A1 (en) 2018-07-12 2019-07-11 Bitonic sorting accelerator

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2023210257A Division JP2024028966A (ja) 2018-07-12 2023-12-13 バイトニックソートアクセラレータ

Publications (3)

Publication Number Publication Date
JP2021531570A JP2021531570A (ja) 2021-11-18
JPWO2020014424A5 JPWO2020014424A5 (ja) 2022-11-10
JP7404332B2 true JP7404332B2 (ja) 2023-12-25

Family

ID=69139378

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2021500789A Active JP7404332B2 (ja) 2018-07-12 2019-07-11 バイトニックソートアクセラレータ
JP2023210257A Pending JP2024028966A (ja) 2018-07-12 2023-12-13 バイトニックソートアクセラレータ

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2023210257A Pending JP2024028966A (ja) 2018-07-12 2023-12-13 バイトニックソートアクセラレータ

Country Status (6)

Country Link
US (3) US10901692B2 (ja)
EP (1) EP3821335A4 (ja)
JP (2) JP7404332B2 (ja)
KR (1) KR102687186B1 (ja)
CN (1) CN112654962A (ja)
WO (1) WO2020014424A1 (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220222510A1 (en) * 2021-01-13 2022-07-14 Apple Inc. Multi-operational modes of neural engine circuit
JP2022117853A (ja) * 2021-02-01 2022-08-12 パナソニックIpマネジメント株式会社 診断回路、電子デバイス及び診断方法
US11593106B1 (en) * 2021-09-24 2023-02-28 Apple Inc. Circuits and methods for vector sorting in a microprocessor
CN114356512A (zh) * 2021-10-25 2022-04-15 腾讯科技(深圳)有限公司 一种数据处理方法、设备以及计算机可读存储介质

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017090122A1 (ja) 2015-11-25 2017-06-01 株式会社日立製作所 多数決回路

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4567572A (en) 1983-02-22 1986-01-28 The United States Of America As Represented By The Director Of The National Security Agency Fast parallel sorting processor
US5179717A (en) * 1988-11-16 1993-01-12 Manco, Ltd. Sorting circuit using first and last buffer memories addressed by reference axis data and chain buffer memory addressed by datum number of the first and last buffer memories
US5206947A (en) * 1989-06-30 1993-04-27 Digital Equipment Corporation Stable sorting for a sort accelerator
US6041398A (en) * 1992-06-26 2000-03-21 International Business Machines Corporation Massively parallel multiple-folded clustered processor mesh array
JPH0774988B2 (ja) * 1993-01-19 1995-08-09 日本電気株式会社 ート処理装置
JP3518034B2 (ja) * 1995-03-30 2004-04-12 三菱電機株式会社 ソート方法並びにソート処理装置並びにデータ処理装置
US6088353A (en) 1997-07-08 2000-07-11 Lucent Technologies, Inc. Sorting networks having reduced-area layouts
KR101662769B1 (ko) * 2010-03-09 2016-10-05 삼성전자주식회사 고속 정렬 장치 및 방법
US9558903B2 (en) 2012-05-02 2017-01-31 National Instruments Corporation MEMS-based switching system
US20160283549A1 (en) 2015-03-27 2016-09-29 Intel Corporation Value sorter
EP3757754B1 (en) * 2016-11-14 2023-01-04 Google LLC Sorting for data-parallel computing devices
US10809978B2 (en) * 2017-06-02 2020-10-20 Texas Instruments Incorporated Merge sort accelerator

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017090122A1 (ja) 2015-11-25 2017-06-01 株式会社日立製作所 多数決回路

Also Published As

Publication number Publication date
US20230418555A1 (en) 2023-12-28
KR102687186B1 (ko) 2024-07-24
EP3821335A1 (en) 2021-05-19
JP2024028966A (ja) 2024-03-05
JP2021531570A (ja) 2021-11-18
EP3821335A4 (en) 2021-09-01
US20210149632A1 (en) 2021-05-20
US10901692B2 (en) 2021-01-26
US20200019374A1 (en) 2020-01-16
CN112654962A (zh) 2021-04-13
WO2020014424A1 (en) 2020-01-16
KR20210025113A (ko) 2021-03-08
US11714603B2 (en) 2023-08-01

Similar Documents

Publication Publication Date Title
JP7404332B2 (ja) バイトニックソートアクセラレータ
US9424308B2 (en) Hierarchical in-memory sort engine
AU2001245761B2 (en) Enhanced memory algorithmic processor architecture for multiprocessor computer systems
AU2001245761A1 (en) Enhanced memory algorithmic processor architecture for multiprocessor computer systems
Saitoh et al. A high-performance and cost-effective hardware merge sorter without feedback datapath
US7752592B2 (en) Scheduler design to optimize system performance using configurable acceleration engines
JP3955741B2 (ja) ソート機能を有するsimd型マイクロプロセッサ
WO2008027567A2 (en) Integral parallel machine
US20060004980A1 (en) Address creator and arithmetic circuit
Ortiz et al. A configurable high-throughput linear sorter system
Kohútka et al. Rocket queue: New data sorting architecture for real-time systems
JPS63155336A (ja) デ−タ処理装置
EP3030963B1 (en) Flexible configuration hardware streaming unit
US10700709B1 (en) Linear block code decoding
Reeves et al. Reconfigurable hardware accelerator for embedded DSP
US7043710B2 (en) Method for early evaluation in micropipeline processors
US7007059B1 (en) Fast pipelined adder/subtractor using increment/decrement function with reduced register utilization
Kohutka et al. Heap queue: a novel efficient hardware architecture of MIN/MAX queues for real-time systems
Nyasulu et al. Minimizing the effect of the host bus on the performance of a computational RAM logic-in-memory parallel-processing system
Chance 18.1 THREE SIGNAL PROCESSORS" TYPICAL DIGITAL SIGNAL
US20090063609A1 (en) Static 4:2 Compressor with Fast Sum and Carryout
Fujisawa et al. Cyclic reconfiguration for pipelined applications on coarse-grain reconfigurable circuits
Lin et al. An efficient VLSI architecture parallel prefix counting with domino logic
Tuan et al. A method for saving and restoring context data of hardware tasks on the dynamically reconfigurable processor
Yazhuo et al. Pipeline template and scheduling algorithm for mapping multiple loop nests on FPGA with limited resources

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210323

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20210112

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20210218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210602

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20220518

A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20220711

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220711

A625 Written request for application examination (by other person)

Free format text: JAPANESE INTERMEDIATE CODE: A625

Effective date: 20220711

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20230920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20231101

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231213

R150 Certificate of patent or registration of utility model

Ref document number: 7404332

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150