(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024028966
(43)【公開日】2024-03-05
(54)【発明の名称】バイトニックソートアクセラレータ
(51)【国際特許分類】
G06F 7/24 20060101AFI20240227BHJP
【FI】
G06F7/24 E
G06F7/24 D
【審査請求】有
【請求項の数】19
【出願形態】OL
(21)【出願番号】P 2023210257
(22)【出願日】2023-12-13
(62)【分割の表示】P 2021500789の分割
【原出願日】2019-07-11
(31)【優先権主張番号】16/237,447
(32)【優先日】2018-12-31
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】201841026064
(32)【優先日】2018-07-12
(33)【優先権主張国・地域又は機関】IN
(71)【出願人】
【識別番号】507107291
【氏名又は名称】テキサス インスツルメンツ インコーポレイテッド
(74)【代理人】
【識別番号】230129078
【弁護士】
【氏名又は名称】佐藤 仁
(72)【発明者】
【氏名】インドゥ プラサパン
(72)【発明者】
【氏名】プネート サバーワル
(72)【発明者】
【氏名】パンカイ グプタ
(57)【要約】 (修正有)
【課題】バイトニックソートのためのハードウェアアクセラレータを提供する。
【解決手段】バイトニックソート(200)のためのアクセラレータは複数の比較交換回路(204a、204b、204c)及び各比較交換回路に関連する先入れ先出し(FIFO)バッファ(206a、206b、206c)を含み、各FIFOバッファの出力はFIFO値であり、第1のモードにおいて前の比較交換回路又はメモリ(208)からの前の値を関連するFIFOバッファに記憶し、関連するFIFO値を後続の比較交換回路又はメモリ(210)に渡し、第2のモードにおいて、前の値をFIFO値と比較し、大きい方の値を関連するFIFOバッファに記憶し、小さい方の値を後続の比較交換回路又はメモリに渡し、第3のモードにおいて、前の値をFIFO値と比較し、小さい方の値を関連するFIFOバッファに記憶し、大きい方の値を後続の比較交換回路又はメモリに渡す。
【選択図】
図2
【特許請求の範囲】
【請求項1】
バイトニックソートのためのハードウェアアクセラレータであって、前記ハードウェアアクセラレータが、
複数の比較交換回路と、
前記比較交換回路の各々に関連する先入れ先出し(FIFO)バッファと、
を含み、
各FIFOバッファの出力がFIFOデータ値であり、
前記比較交換回路が、
第1の動作モードにおいて、前の比較交換回路又はメモリからの前のデータ値を関連するFIFOバッファに記憶し、関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又はメモリに渡すように構成され、
第2の動作モードにおいて、前記前のデータ値を前記FIFOデータ値と比較し、前記データ値のうち大きい方を関連するFIFOバッファに記憶し、前記データ値のうち小さい方を前記後続の比較交換回路又は前記メモリに渡すように構成され、また、
第3の動作モードにおいて、前記前のデータ値を前記FIFOデータ値と比較し、前記データ値のうち小さい方を関連するFIFOバッファに記憶し、前記データ値のうち大きい方を前記後続の比較交換回路又は前記メモリに渡すように構成される、ハードウェアアクセラレータ。
【請求項2】
請求項1に記載のハードウェアアクセラレータであって、
前記比較交換回路の各々が、
関連するFIFOバッファの出力に結合される第1の入力と、
関連するFIFOバッファの入力に結合される第1の出力と、
前記前の比較交換回路の第2の出力又は前記メモリに結合される第2の入力と、
後続の比較交換回路の前記第2の入力又は前記メモリに結合される第2の出力と、
を含む、ハードウェアアクセラレータ。
【請求項3】
請求項1に記載のハードウェアアクセラレータであって、
前記比較交換回路の各々が制御信号を受信するように構成され、また、
前記受信された制御信号が、前記比較交換回路を前記第1、第2、及び第3の動作モードのうちの1つで動作させる、ハードウェアアクセラレータ。
【請求項4】
請求項1に記載のハードウェアアクセラレータであって、
前記複数の比較交換回路が、第1の比較交換回路及び最後の比較交換回路を含み、
前記ハードウェアアクセラレータが更に、それぞれ、前記最後の比較交換回路の第2の出力及び前記メモリに結合される2つの入力と、前記第1の比較交換回路の前記第2の入力に結合される1つの出力とを含む、マルチプレクサ(mux)を含む、ハードウェアアクセラレータ。
【請求項5】
請求項4に記載のハードウェアアクセラレータであって、
前記最後の比較交換回路の前記第2の出力が前記メモリに結合される、ハードウェアアクセラレータ。
【請求項6】
請求項4に記載のハードウェアアクセラレータであって、
第1の反復において、前記muxが、データ値のN要素ベクトルを、前記メモリからシリアルに受信するように、及び、前記第1の比較交換回路の前記第2の入力に提供するように構成される、ハードウェアアクセラレータ。
【請求項7】
請求項6に記載のハードウェアアクセラレータであって、
後続の反復において、前記m
uxが、前記最後の比較交換回路の前記第2の出力を前記第1の比較交換回路の前記第2の入力に結合するように構成される、ハードウェアアクセラレータ。
【請求項8】
請求項7に記載のハードウェアアクセラレータであって、
制御信号を含む制御信号バッファを更に含み、前記制御信号が、前記複数の比較交換回路に提供されると、前記比較交換回路に前記N要素ベクトルを、第1の反復又は一連の反復の間、バイトニックシーケンスに配置させ、最終反復の間、完全にソートされたアレイに配置させる、ハードウェアアクセラレータ。
【請求項9】
バイトニックソートのためのハードウェアアクセラレータであって、
前記ハードウェアアクセラレータが、
各々が、出力、及びメモリに結合するように構成される第1の入力を含む、4つのマルチプレクサ(mux)、
4つの入力及び4つの出力を含む4入力比較交換回路であって、各muxの前記出力が、前記4入力比較交換回路の前記入力のうちの1つに結合される、前記4入力比較交換回路、及び
第1のバイトニックソートアクセラレータと、第2のバイトニックソートアクセラレータと、第3のバイトニックソートアクセラレータと、第4のバイトニックソートアクセラレータとを含む4つのバイトニックソートアクセラレータであって、前記4つのバイトニックソートアクセラレータの各々が入力及び出力を有し、前記4入力比較交換回路の各出力が、前記バイトニックソートアクセラレータ入力のうちの1つに結合される、前記4つのバイトニックソートアクセラレータ、
を含み、
各バイトニックソートアクセラレータの前記出力が、前記muxのうちの1つのmuxの第2の入力に結合される、ハードウェアアクセラレータ。
【請求項10】
請求項9に記載のハードウェアアクセラレータであって、
前記4入力比較交換回路が、更に、
各々が第1及び第2の入力と第1及び第2の出力とを含む、第1及び第2の2入力比較交換回路(CE2)であって、
前記第1の2入力比較交換回路の前記第1の入力が、前記第1のmuxの前記出力に結合され、
前記第1の2入力比較交換回路の前記第2の入力が、前記第2のmuxの前記出力に結合され、
前記第2の2入力比較交換回路の前記第1の入力が、前記第3のmuxの前記出力に結合され、また、
前記第2の2入力比較交換回路の前記第2の入力が、前記第4のmuxの前記出力に結合される、前記第1及び第2の2入力比較交換回路(CE2)と、
各々が第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及び第4の2入力比較交換回路と、
を含み、
前記第3の2入力比較交換回路の前記第1の出力が、前記第1のバイトニックソートアクセラレータの前記入力に結合され、
前記第3の2入力比較交換回路の前記第2の出力が、前記第2のバイトニックソートアクセラレータの前記入力に結合され、
前記第4の2入力比較交換回路の前記第1の出力が、前記第3のバイトニックソートアクセラレータの前記入力に結合され、また、
前記第4の2入力比較交換回路の前記第2の出力が、前記第4のバイトニックソートアクセラレータの前記入力に結合される、ハードウェアアクセラレータ。
【請求項11】
請求項9に記載のハードウェアアクセラレータであって、
前記第1のバイトニックソートアクセラレータの前記出力が、前記第4のmuxの前記第2の入力に結合され、
前記第2のバイトニックソートアクセラレータの前記出力が、前記第2のmuxの前記第2の入力に結合され、
前記第3のバイトニックソートアクセラレータの前記出力が、前記第3のmuxの前記第2の入力に結合され、また、
前記第4のバイトニックソートアクセラレータの前記出力が、前記第1のmuxの前記第2の入力に結合される、ハードウェアアクセラレータ。
【請求項12】
請求項9に記載のハードウェアアクセラレータであって、
各バイトニックソートアクセラレータが更に、
複数の2入力比較交換回路と、
前記2入力比較交換回路の各々に関連する先入れ先出し(FIFO)バッファと、
を含み、
各FIFOバッファの出力がFIFOデータ値であり、
前記2入力比較交換回路が、
第1の動作モードにおいて、前の2入力比較交換回路又は前記4入力比較交換回路からの前のデータ値を関連するFIFOバッファに記憶し、関連するFIFOバッファからのFIFOデータ値を後続の2入力比較交換回路、前記muxのうちの1つ、又は前記メモリに渡すように構成され、
第2の動作モードにおいて、前記前のデータ値を前記FIFOデータ値と比較し、前記データ値のうち大きい方を関連するFIFOバッファに記憶し、前記データ値のうち小さい方を前記後続の2入力比較交換回路、前記muxのうちの1つ、又は前記メモリに渡すように構成され、また、
第3の動作モードにおいて、前記前のデータ値を前記FIFOデータ値と比較し、小さい方の前記データ値をその関連するFIFOバッファに記憶し、大きい方の前記データ値を前記後続の2入力比較交換回路、前記muxのうちの1つ、又は前記メモリに渡すように構成される、ハードウェアアクセラレータ。
【請求項13】
請求項12に記載のハードウェアアクセラレータであって、
前記2入力比較交換回路の各々が、
関連するFIFOバッファの出力に結合される第1の入力と、
関連するFIFOバッファの入力に結合される第1の出力と、
前記前の2入力比較交換回路の第2の出力、又は前記4入力比較交換回路の出力に結合される第2の入力と、
後続の2入力比較交換回路、前記muxのうちの1つ、又は前記メモリの前記第2の入力に結合される第2の出力と、
を含む、ハードウェアアクセラレータ。
【請求項14】
請求項12に記載のハードウェアアクセラレータであって、
前記2入力比較交換回路の各々が制御信号を受信するように構成され、また、
前記受信された制御信号が、前記2入力比較交換回路を前記第1、第2、及び第3の動作モードのうちの1つで動作させる、ハードウェアアクセラレータ。
【請求項15】
請求項12に記載のハードウェアアクセラレータであって、
第1の反復において、前記muxの各々が、データ値のN/4要素ベクトルを、前記メモリからシリアルに受信するように、及び、前記4入力比較交換回路の前記入力に提供するように構成される、ハードウェアアクセラレータ。
【請求項16】
請求項15に記載のハードウェアアクセラレータであって、
後続の反復において、前記muxの各々が、前記バイトニックソートアクセラレータの前記出力のうちの1つを、前記4入力比較交換回路の前記入力のうちの1つに結合するように構成される、ハードウェアアクセラレータ。
【請求項17】
請求項15に記載のハードウェアアクセラレータであって、
制御信号を含む制御信号バッファを更に含み、前記制御信号が、前記バイトニックソートアクセラレータの前記4入力比較交換回路及び前記2入力比較交換回路に提供されると、前記ハードウェアアクセラレータに、前記N/4要素ベクトルを、第1の反復又は一連の反復の間、バイトニックシーケンスに配置させ、最終反復の間、完全にソートされたアレイに配置させる、ハードウェアアクセラレータ。
【請求項18】
バイトニックソートのための方法であって、
前記方法が、複数の比較交換回路の各々について、
制御信号を受信すること、及び、
前記制御信号に応答して、第1の動作モード、第2の動作モード、及び第3の動作モードのうちの1つで動作することを含み、
前記第1の動作モードにおいて、前記方法が更に、
前記比較交換回路によって、前の比較交換回路又はメモリからの前のデータ値を関連するFIFOバッファに記憶することであって、前記関連するFIFOバッファの出力がFIFOデータ値である、前記記憶すること、及び、
前記関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又は前記メモリに渡すこと、
を含み、
前記第2の動作モードにおいて、前記方法が更に、
前記比較交換回路によって、前記前のデータ値を前記FIFOデータ値と比較すること、
前記データ値のうち大きい方を前記関連するFIFOバッファに記憶すること、及び、
前記データ値のうち小さい方を前記後続の比較交換回路又は前記メモリに渡すこと、
を含み、また、
前記第3の動作モードにおいて、前記方法が更に、
前記比較交換回路によって、前記前のデータ値を前記FIFOデータ値と比較すること、
前記データ値のうち小さい方を前記関連するFIFOバッファに記憶すること、及び、
前記データ値のうち大きい方を前記後続の比較交換回路又は前記メモリに渡すこと、
を含む、方法。
【請求項19】
請求項18に記載の方法であって、
前記複数の比較交換回路に制御信号を提供することを更に含み、前記制御信号が、前記比較交換回路にN要素ベクトルを、第1の反復又は一連の反復の間、バイトニックシーケンスに配置させ、最終反復の間、完全にソートされたアレイに配置させる、方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の少なくとも一つの例によれば、バイトニックソートのためのハードウェアアクセラレータが、複数の比較交換回路と、比較交換回路の各々に関連する先入れ先出し(FIFO)バッファとを含む。各FIFOバッファの出力がFIFOデータ値である。比較交換回路は、第1の動作モードにおいて、前の比較交換回路又はメモリからの前のデータ値をその関連するFIFOバッファに記憶し、その関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又はメモリに渡すように構成され、第2の動作モードにおいて、前のデータ値をFIFOデータ値と比較し、大きい方のデータ値をその関連するFIFOバッファに記憶し、小さい方のデータ値を後続の比較交換回路又はメモリに渡すように構成され、第3の動作モードにおいて、前のデータ値をFIFOデータ値と比較し、小さい方のデータ値をその関連するFIFOバッファに記憶し、大きい方のデータ値を後続の比較交換回路又はメモリに渡すように構成される。
【発明の概要】
【0002】
本開示の別の例によれば、バイトニックソートのためのハードウェアアクセラレータが、出力とメモリに結合するように構成される第1の入力とを各々が含む、4つのマルチプレクサ(mux)を含む。ハードウェアアクセラレータは、4つの入力及び4つの出力を有する4入力比較交換回路も含み、各マルチプレクサの出力は、4入力比較交換回路の入力のうちの1つに結合される。ハードウェアアクセラレータは更に、第1のバイトニックソートアクセラレータ、第2のバイトニックソートアクセラレータ、第3のバイトニックソートアクセラレータ、及び第4のバイトニックソートアクセラレータを含む、4つのバイトニックソートアクセラレータを含む。4つのバイトニックソートアクセラレータの各々が入力及び出力を有し、また、4入力比較交換回路の各出力が、バイトニックソートアクセラレータ入力のうちの1つに結合される。各バイトニックソートアクセラレータの出力は、マルチプレクサのうちの1つの第2の入力に結合される。
【0003】
本開示の別の例によれば、バイトニックソートのための方法が、複数の比較交換回路の各々について、制御信号を受信すること、並びに、制御信号に応答して、第1の動作モード、第2の動作モード、及び第3の動作モードのうちの1つで動作することを含む。第1の動作モードにおいて、この方法は更に、比較交換回路によって、前の比較交換回路又はメモリからの前のデータ値を関連するFIFOバッファに記憶することであって、関連するFIFOバッファの出力がFIFOデータ値である、記憶すること、及び、関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又はメモリに渡すことを含む。第2の動作モードにおいて、この方法は更に、比較交換回路によって、前のデータ値をFIFOデータ値と比較すること、大きい方のデータ値を関連するFIFOバッファに記憶すること、及び、小さい方のデータ値を後続の比較交換回路又はメモリに渡すことを含む。第3の動作モードにおいて、この方法は更に、比較交換回路によって、前のデータ値をFIFOデータ値と比較すること、小さい方のデータ値を関連するFIFOバッファに記憶すること、及び、大きい方のデータ値を後続の比較交換回路又はメモリに渡すことを含む。
【0004】
様々な例の詳細な説明のために、次に、添付の図面を参照する。
【図面の簡単な説明】
【0005】
【
図1】様々な例に従った、バイトニックソートネットワークの信号フローグラフを示す。
【0006】
【
図2】様々な例に従った、バイトニックソートアクセラレータのブロック図を示す。
【0007】
【
図3】様々な例に従った、比較交換回路の回路概略図を示す。
【0008】
【
図4】様々な例に従った、フロースルー動作を含むバイトニックソートネットワークの信号フローグラフを示す。
【0009】
【
図5】様々な例に従った、バイトニックソートアクセラレータについてのデータフロー及びタイミング図を示す。
【0010】
【
図6】様々な例に従った、データ並列処理が改良されたバイトニックソートアクセラレータのブロック図を示す。
【0011】
【
図7A】様々な例に従った、データ並列処理が改良されたバイトニックソートネットワークの信号フローグラフを示す。
【
図7B】様々な例に従った、データ並列処理が改良されたバイトニックソートネットワークの信号フローグラフを示す。
【0012】
【
図8】様々な例に従った、バイトニックソートのための方法のフローチャートを示す。
【発明を実施するための形態】
【0013】
ソート動作は、信号処理、レーダー追跡、画像処理、及びその他などのために、様々なアルゴリズムによって頻繁に用いられる。ソート動作は、しばしば計算を多用し、またそのため他のタスクを行なうためのCPU又はGPUの機能を低下させる、中央処理ユニット(CPU)又はグラフィックス処理ユニット(GPU)によって実行されるソフトウェアを用いて実装される。ハードウェアアクセラレータは、CPU又はGPUなどの汎用ホストプロセッサ上で実行されるソフトウェアよりも効率的に、ソートなどの或る種の数学演算を行なうために用いられる。しかしながら、ソート速さ及び回路面積に対する改良が望ましい。
【0014】
開示される例によれば、バイトニックソートのためのハードウェアアクセラレータ(バイトニックソートアクセラレータ)及びバイトニックソートのための方法が、ソート速さが向上し、回路面積が減少した、データ値のアレイをソートするためのハードウェアソリューションを提供する。本開示のバイトニックソートアクセラレータは、例えば、ホストプロセッサによって実行されるソフトウェアよりも効率的に、バイトニックソートを行なう。特に、本開示のバイトニックソートアクセラレータは、Radix-2シングルディレイフィードバック(R2SDF)アーキテクチャと同様の構造を利用して、パイプライン様式でデータ値のアレイのバイトニックソートを行う。バイトニックソートアクセラレータは、任意の比較ベースのソートアルゴリズムを用いて達成可能なソート速さについての理論的上限に等しい、合計(N×log2N)クロックサイクルにおいてアクセラレータ内にシリアルに送られるN個のバイナリ数をソートする。いくつかの例において、バイトニックソートアクセラレータのスループットは、ハードウェアアクセラレータの並列処理を増加させることによって、更に4倍向上する。
【0015】
バイトニックシーケンスは、2つの条件のいずれかを満たす要素のシーケンス(a0、a1、・・・、aN-1)である。第1の条件は、(a0、・・・、ai)が単調に増加し、(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}(これらは、単調に減少した後、単調に増加する)は、バイトニックシーケンスである。
【0016】
本開示の例において、ハードウェアアクセラレータが、バイトニックシーケンスの要素への比較交換(CE)演算の再帰的適用を介して、サイズNのバイトニックシーケンスをソートする。ハードウェアアクセラレータは、R2SDFアーキテクチャの一部を再使用しながら、任意の比較ベースのソートアルゴリズムについての理論的上限に等しい合計(N×log2N)クロックサイクルで、サイズNの入力データをソートできるようにする。CE演算が、2つの要素を比較した後、任意選択として、どちらの要素がより大きい値を有するかに応じて2つの要素の位置を交換又はスワップする。例えば、CE演算は、最大の要素を第2の位置に置こうとする場合、CE演算は第1の値と第2の値とを比較し、第1の値が第2の値より大きい場合、2つの要素を交換する。しかしながら、第2の値が第1の値より大きい場合、交換は成されない。
【0017】
図1は、ランダム入力を有するサイズN=8のデータシーケンスをソートするための、バイトニックソートネットワーク100の例示の信号フローグラフを示す。一般に入力データは、データ値のN要素ベクトルである。信号フローグラフ100において、矢印は、比較される2つの要素(各矢印の「先頭」及び「末尾」に位置する要素)、及び、要素が交換又はスワップされる方向を示す。
図1の例において、比較される2つの要素のうちの小さい方は、比較の後、矢印の末尾に位置する。バイトニックソートネットワーク100は、まず、ソートされていないデータシーケンス(Seq.A)を、第1のlog
2N-1ステージ、この場合はステージS1及びS2、において生じるバイトニックシーケンス(Seq.C)へと再配置する。その後、バイトニックソートネットワーク100は、最終ステージS3において、バイトニックシーケンス(Seq.C)をソートされたシーケンス(Seq.D)へと再配置する。
【0018】
入力データ又はソートされていないデータシーケンス(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)に変換される。
【0019】
図2は、本開示の例に従ったバイトニックソートアクセラレータ200を示す。バイトニックソートアクセラレータ200は、2入力マルチプレクサ(mux)202への入力として、メモリ208から入力データ(D
i、これは、データ値の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を有する。
【0020】
サイズN(一般的に、2のべき乗であると想定される)の入力データをソートするように構成されるバイトニックソートアクセラレータ200の場合、バイトニックソートアクセラレータ200は少なくともLog
2NのCE回路204を含む。Nが2のべき乗でない例において、入力データサイズを次の2のべき乗まで増加させるために、ゼロパディングが用いられる。
図2の例において、また
図1との整合性のために、例えば入力データはサイズN=8であるものと想定される。したがって、
図2の例において、バイトニックソートアクセラレータ200は3つのCE回路204a、204b、204cを含む。マルチプレクサ202は2つの入力を含み、1つは前述のようにメモリ208に結合され、もう1つは最後のCE回路204cによって生成される出力データ(D
o)に結合される。出力データ(D
o)は、いくつかの例においてメモリ208と同じであり、他の例ではメモリ208から分離される、メモリ210にも提供される。
【0021】
各CE回路204a、204b、204cは、それぞれ、先入れ先出し(FIFO)バッファ206a、206b、206cに関連する。FIFOバッファ206a、206b、206cは遅延要素として働き、またいくつかの例では、メモリ又はシフトレジスタにおいて実装される。M CE回路204a、204b、204cを有し、M CE回路がM’を用いてインデックス付けされ、M’の範囲が0からlog
2N-1である、バイトニックソートアクセラレータ200の場合、FIFOバッファ206a、206b、206cのサイズは2log
2N-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
2、C
1、C
0も受信し、これについては下記で更に詳細に説明する。
【0022】
図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の入力に結合する。
【0023】
CE回路204は比較器310も含み、比較器310は、第1の入力302及び第2の入力304として入力を受信し、第1の入力302と第2の入力304との比較に基づいて出力を生成する。
図3の例において、比較器310の出力は、第1の入力302が第2の入力304よりも大きいときにアサートされ(例えば「1」であり)、第1の入力302が第2の入力304よりも小さいときにアサート解除される(例えば「0」である)。
【0024】
CE回路204は、それぞれCn[0]及びCn[1]として示される、その最下位ビット及び最上位ビットを有する2ビット制御信号を受信する。比較器310の出力及び最下位ビットCn[0]は、XORゲート312への入力として提供される。XORゲート312の出力及び最上位ビットCn[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として通過させる。
【0025】
CE回路204の前述の論理の結果として、比較交換演算は、制御信号C
nによって下記のように特定される。
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の矢印の方向性を実装することができる。
【0026】
図4は、フロースルー動作(例えば、前述の制御信号0に対応する)を含む、バイトニックソート400のための別の例示の信号フローグラフを示す。特に、
図1の例示的信号フローグラフ100は、ドット(矢印ではない)接続の端部においてデータ要素として示される、フロースルー動作402を含んで示される。フロースルー動作は、例えば、バイトニックソートエンジン200のパイプラインステージにわたって、データの定常フローを維持するように実装される。例えば、ステージS1において、距離4及び2を有する要素間の比較は、フロースルー動作として示される。同様に、ステージS2において、距離4を有する要素間の比較は、フロースルー動作として示される。ステージS3において、(
図1に関して上記で説明したように、最終のバイトニックソート動作を実施するために)距離4の比較が必要であるため、N=8である特定の例についてフロースルー動作は存在しない。
【0027】
図5は、
図1及び
図4のシーケンスAに対応する入力パターンを有する、N=8の場合のバイトニックソートアクセラレータ200の入力データ(D
i)及び出力データ(D
o)についての、例示のデータフロー及びタイミング
図500を示す。概して、バイトニックソートアクセラレータ200の動作は、最後の入力データ値(この例では「1」)がバイトニックソートアクセラレータ200にフィードされた時点から、完了するためにN×log
2Nクロックサイクル(この場合、24クロックサイクル)を要する。
【0028】
図2に戻って参照すると、出力データD
oからmux202への入力までのフィードバック接続は、
図1及び
図4に関して上記で説明したステージS1、S2、S3を実装するために、バイトニックソートアクセラレータ200を反復的に利用できるようにする。ステージS1に対応する第1の反復において、ステージS1は距離1を有する近接する値に対してのみ比較交換演算を実施するため、(距離4に対応する)CE回路204a及び(距離2に対応する)CE回路204bは、フロースルーモードで動作される。
【0029】
(距離1に対応する)CE回路204cについての比較交換演算は、第1の値(この例では「8」)を関連するFIFOバッファ206cにフロースルーするために、7番目のクロックサイクルにおいて0で始まる。この時点において、最も古いものから最も新しいものへと順序付けされ、FIFOバッファ206aは値5、4、3、2を含み、FIFOバッファ206bは値7、6を含み、FIFOバッファ206cは値8を含む。
【0030】
8番目のクロックサイクルにおいて、CE回路204cについての比較交換演算は2であり、これによって、CE回路204cに、前のCE回路204bからのデータ(値7、FIFOバッファ206b内の最も古いデータとして、及び、フロースルー動作の対象となる)をFIFOバッファ206cからの最も古いデータ(値8)と比較させる。大きい方のデータ値8は、FIFOバッファ206cに戻って記憶され、小さい方のデータ値7は出力データD
oとして渡され、これはタイミング
図500においてD
oの第1の要素(シーケンスB)として反映される。また、この時点で、mux202への制御信号が変更されて、出力データD
oがCE回路204aへの入力データとして働き、第2の反復を開始して、続くステージ、この場合はステージS2を実装するようになる。
【0031】
9番目のクロックサイクルにおいて、CE回路204cについての比較交換演算は再度0(フロースルー)であり、これによって、CE回路204cに、関連するFIFOバッファ206cからのデータ値8を出力データD
oとして渡させ、これはタイミング
図500においてD
oの第2の要素(シーケンスB)として反映される。10番目のクロックサイクルにおいて、CE回路204cについての比較交換演算は3であり、これによって、CE回路204cに、前のCE回路204bからのデータ(値5、FIFOバッファ206b内の最も古いデータとして、及び、フロースルー動作の対象となる)をFIFOバッファ206cからの最も古いデータ(値6)と比較させる。小さい方のデータ値5がFIFOバッファ206cに記憶され、大きい方のデータ値6は出力データD
oとして渡され、これはタイミング
図500においてD
oの第3の要素(シーケンスB)として反映される。上記のプロセスは繰り返され、データ値4及び3(比較交換演算2を用いる)とデータ値2及び1(比較交換演算3を用いる)とを比較して、距離1を有する近接する値でのステージS1の比較交換演算を完了する。
【0032】
ステージS2は、必要とされる比較交換演算の方向性を明らかにするように制御信号C
nが改変される点を除いて、ステージS1に関して上記で説明した内容と同様に実装される。タイミング
図500の残りの部分は、ステージS1の結果(シーケンスB)、ステージS2の結果(シーケンスC)、及びステージS3の結果(シーケンスD)に対応する、制御信号C
n及び出力データD
oを反映する
【0033】
また、制御信号Cnは、例えば、モジュロNのバイナリカウンタ(0からN-1までをカウントする)、及び、各CE回路204a、204b、204cに関連するモジュロlog2Nのバイナリカウンタ(0からlog2N-1までをカウントする)からのカウンタビットを用いて生成されるパターンに従う。モジュロlog2Nのバイナリカウンタは反復ごとに増分し、モジュロNのバイナリカウンタはクロックサイクルごとに増分する。CE回路204a、204b、204cの各々は、モジュロlog2Nのバイナリカウンタが特定の値に達するとき、アクティブである(例えば、制御信号Cn=2又はCn=3)。例えばN=8の場合、C2は、モジュロlog2Nのカウンタが2に等しいときにアクティブであり、C1は、モジュロlog2Nのカウンタが1より大きいか又は1に等しいときにアクティブであり、C0は、モジュロlog2Nのカウンタが0より大きいか又は0に等しいときにアクティブである。Cnの値は、モジュロNのカウンタからの個々のビットを用いる組み合わせ論理に基づいて、各CE回路204a、204b、204cについて決定される。他の例において、制御信号Cnは、メモリ内の制御信号バッファからアクセスされる。
【0034】
図2に示され上記で説明したバイトニックソートアクセラレータ200は、バイトニックソートアクセラレータ200がシリアル入力データ(D
i)を受信し、固定された待ち時間の後、出力データ(D
o)をシリアルに生成するという点で、本来シリアルである。しかしながら、いくつかの例において、バイトニックソートアクセラレータが実装されるべきコンピュータシステムは、より広い帯域幅を有しそのためより高いスループットを処理し得る、プロセッサ、バス構造、及びメモリアクセス(例えば、直接メモリアクセスDMA))を含む。そうしたコンピュータシステムにおいて、ハードウェアアクセラレータが、バイトニックソートアクセラレータ200のシリアル入力及びシリアル出力などのデータを相対的にゆっくりと消費及び生成することによって、システム全体の性能が低減される。
【0035】
図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も含む。
【0036】
第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の出力である比較モードにおいて、動作するように構成される。
【0037】
第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の入力に結合される。
【0038】
図7A及び
図7Bは、わかりやすくするために、フロースルー動作を含まないバイトニックソート700についての例示の信号フローグラフを示す。
図2のバイトニックソートアクセラレータ200に関した上記の例は、8ポイントバイトニックソートアクセラレータについてのものであったが、本開示は、説明するように追加のCE回路及び関連するFIFOバッファを追加することによって、他の数のポイントに拡張することが可能である。したがって、
図2の例を続けるために、バイトニックソートアクセラレータ600の機能性は、前述のように、4つの8ポイントバイトニックソートアクセラレータ200を用いる32ポイントバイトニックソートアクセラレータとして説明される。信号フローグラフ700において、行701、703、705、707は、それぞれ、8ポイントバイトニックソートアクセラレータ200a、200b、200c、200dの機能性に対応する。
【0039】
第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回路のみがフロースルーモードで動作されない。
【0040】
第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を有する要素は前述のように比較される。
【0041】
第4のステージ708において、CE回路204c及び204dは、距離8を有する要素間での比較を実施するために、(708aに対応する)比較モードで動作される。8ポイントバイトニックソートアクセラレータ200a~200dは、フロースルー動作を実装せず、距離4、2、及び1を有する要素は前述のように(708bに対応して)比較される。CE回路204a~204dは、フロースルーモードで動作される。
【0042】
最終的に、第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回の反復又はステージまでフロースルー動作を実装する。
【0043】
バイトニックソートアクセラレータ600は、
図2で説明されるバイトニックソートアクセラレータ200に比べてスループット及びレイテンシを向上させる。例えば、長さNのデータアレイの場合、反復回数はlog
2Nのままである。しかしながら、各反復に必要なクロックサイクルは、4入力CE回路604及びN/4ポイントバイトニックソートアクセラレータ(例えば、
図6の例における8ポイントバイトニックソートアクセラレータ200a~200d)によって導入される並列処理に起因して、4分の1に減少する。したがって、バイトニックソートアクセラレータ600のレイテンシは、サンプル当たり((log
2N)/4)の実効スループットを伴う((N×log
2N)/4)クロックサイクルである。
【0044】
図8は、本開示の例に従った方法800のフローチャートを示す。方法800は、ブロック802において、制御信号、例えば
図3に関して上記で説明したC
nを受信することから開始される。ブロック804において、方法800は、制御信号によって示される比較交換回路について動作モードを決定することを含み、動作モードは、一例では、制御信号が値0又は1の場合は第1の動作モードであり、制御信号が値2の場合は第2の動作モードであり、また制御信号が値3の場合は第3の動作モードである。
【0045】
制御信号が、比較交換回路を第1の動作モードで動作させる場合、方法800はブロック806に進み、前の比較交換回路又はメモリからの前のデータ値を関連するFIFOバッファに記憶する。関連するFIFOバッファの出力は、FIFOデータ値と称する。次いで、方法800はブロック808へと続き、関連するFIFOバッファからのFIFOデータ値を後続の比較交換回路又はメモリに渡す。
【0046】
制御信号が、比較交換回路を第2の動作モードで動作させる場合、方法800はブロック810に進み、前のデータ値をFIFOデータ値と比較する。次いで、方法800はブロック812へと続き、大きい方のデータ値を関連するFIFOバッファに記憶し、ブロック814において、小さい方のデータ値を後続の比較交換回路又はメモリに渡す。
【0047】
制御信号が、比較交換回路を第3の動作モードで動作させる場合、方法800はブロック816に進み、前のデータ値をFIFOデータ値と比較する。次いで、方法800はブロック818で継続し、小さい方のデータ値を関連するFIFOバッファに格納し、ブロック820において、大きい方のデータ値を後続の比較交換回路又はメモリに渡す。
【0048】
上記で説明したように、例えば
図5に関して、第1の反復又は一連の反復の間、複数の比較交換回路によって入力データのN要素ベクトルがバイトニックシーケンスに配置されるように、制御信号が提供される。更に、最終反復において、バイトニックシーケンスは、複数の比較交換回路によって、完全にソートされたアレイに配置される。制御信号は、メモリ内の制御信号バッファによって提供され得るか、又は、前述のようにカウンタビットを用いて提供され得る。
【0049】
前述の考察において、及び特許請求の範囲において、様々な要素、セクション、及びステージを含むバイトニックソートアクセラレータについて言及している。これらの要素、セクション、及びステージは、場合によっては、例えば集積回路(IC)上に実装されるハードウェア回路要素に対応することを理解されたい。実際に、少なくとも一つの例において、バイトニックソートアクセラレータ全体がIC上に実装される。
【0050】
前述の考察において、及び特許請求の範囲において、「含む」及び「備える」という用語はオープンエンド様式で用いられ、またそのため、「・・・を含むがそれに限定されない」ことを意味するものと解釈されるべきである。また、「結合する」という用語は、間接接続又は直接接続のいずれかを意味することが意図される。したがって、第1のデバイスが第2のデバイスに結合する場合、その接続は直接接続を介するか、又は、他のデバイス及び接続を介する間接接続を介するものであり得る。同様に、第1の構成要素又は場所と第2の構成要素又は場所との間で結合されるデバイスは、直接接続を介するか、又は、他のデバイス及び接続を介する間接接続を介するものであり得る。或るタスク又は機能を行う「ように構成される」要素又は機構は、その機能を行うために製造業者による製造時に構成され(例えば、プログラミングされ又は構造的設計され)得、並びに/或いは、その機能及び/又は他の追加の又は代替の機能を行うために、製造後、ユーザによって構成可能(又は再構成可能)であり得る。こういった構成は、デバイスのファームウェア及び/又はソフトウェアプログラミングを介し得、デバイスのハードウェア構成要素及び相互接続の構造及び/又はレイアウトを介し得、或いはそれらの組み合わせであり得る。加えて、上記考察におけるフレーズ「接地」又は同様のフレーズの使用は、シャーシ接地、アース接地、フローティング接地、仮想接地、デジタル接地、共通接地、及び/又は、本開示の教示に適用可能であるか又は適切な任意の他の形式の接地接続を含むことが意図される。特に示されない限り、値に先行する「約」、「およそ」、又は「実質的に」は、示される値の+/-10パーセントを意味する。
【0051】
上記考察は、本開示の原理及び様々な実施形態の例示であることが意図される。当業者であれば、上記開示を完全に理解すれば、多く変形及び改変が明らかとなろう。下記の特許請求の範囲は、そうした変形及び改変すべてを包含するものと解釈されることが意図される。
【手続補正書】
【提出日】2024-01-11
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
回路デバイスであって、
第1の入力と第2の入力と第1の制御入力と第2の制御入力と第1の出力と第2の出力とを有する第1の比較交換回路であって、
前記第1の比較交換回路の第1の入力に結合される第1の入力と、前記第1の比較交換回路の第2の 入力に結合される第2の入力と、出力とを有する比較器と、
前記比較器の出力に結合される第1の入力と、前記第1の制御入力に結合される第2の入力と、出力とを有するXOR回路と、
前記XOR回路の出力に結合される第1の入力と、前記第2の制御入力に結合される第2の入力と、出力とを有するAND回路と、
前記第1の比較交換回路の第2の入力に結合される第1の入力と、前記第1の比較交換回路の第1の入力に結合される第2の入力と、前記AND回路の出力に結合される制御入力と、前記第1の比較交換回路の第1の出力に結合される出力とを有する第1のマルチプレクサと、
前記第1の比較交換回路の第1の入力に結合される第1の入力と、前記第1の比較交換回路の第2の入力に結合される第2の入力と、前記AND回路の出力に結合される制御入力と、前記第1の比較交換回路の第2の出力に結合される出力とを有する第2のマルチプレクサと、
を含む、前記第1の比較交換回路を含む、回路デバイス。
【請求項2】
請求項1に記載の回路デバイスであって、
前記第1の比較交換回路の第1の出力に結合される入力と、前記第1の比較交換回路の第1の入力に結合される出力とを有する第1のバッファを更に含む、回路デバイス。
【請求項3】
請求項2に記載の回路デバイスであって、
前記第1のバッファが、先入先出バッファである、回路デバイス。
【請求項4】
請求項2に記載の回路デバイスであって、
第1の入力と、前記第1の比較交換回路の第2の出力に結合される第2の入力と、第1の出力と、第2の出力とを有する第2の比較交換回路と、
前記第2の比較交換回路の第1の出力に結合される入力と、前記第2の比較交換回路の第1の入力に結合される出力とを有する第2のバッファと、
を更に含む、回路デバイス。
【請求項5】
請求項4に記載の回路デバイスであって、
前記第1のバッファと前記第2のバッファとが異なるサイズである、回路デバイス。
【請求項6】
請求項2に記載の回路デバイスであって、
出力を有するメモリと、
第1の入力と、前記メモリの出力に結合される第2の入力と、前記第1の比較交換回路の第2の入力に結合される出力とを有する第3のマルチプレクサと、
を更に含む、回路デバイス。
【請求項7】
請求項6に記載の回路デバイスであって、
第1の入力と、第2の入力と、第1の出力と、前記第3のマルチプレクサの第1の入力に結合される第2の出力とを有する第2の比較交換回路と、
前記第2の比較交換回路の第1の出力に結合される入力と、前記第2の比較交換回路の第1の入力に結合される出力とを有する第2のバッファと、
を更に含む、回路デバイス。
【請求項8】
請求項7に記載の回路デバイスであって、
前記第1の比較交換回路の第2の出力と前記第2の比較交換回路の第2の入力との間に結合される中間比較交換回路を更に含む、回路デバイス。
【請求項9】
請求項8に記載の回路デバイスであって、
前記第1の比較交換回路と前記中間比較交換回路と前記第2の比較交換回路とに分類動作を実行するようにさせる制御信号を提供するように構成される制御バッファを更に含む、回路デバイス。
【請求項10】
請求項8に記載の回路デバイスであって、
制御バッファであって、
第1の反復において、前記第1の比較交換回路と前記中間比較交換回路とをフロースルーモードで動作するように制御し、前記第2の比較交換回路を比較モードで動作するように制御することと、
第2の反復において、前記第1の比較交換回路をフロースルーモードで動作するように制御し、前記中間比較交換回路と前記第2の比較交換回路とを比較モードで動作するように制御することと、
第3の反復において、前記第1の比較交換回路と前記中間比較交換回路と前記第2の比較交換回路とを比較モードで動作するように制御することと、
によって分類を実行するための制御信号を提供するように構成される、前記制御バッファを更に含む、回路デバイス。
【請求項11】
請求項10に記載の回路デバイスであって、
前記第1の反復が前記第2の反復の前に実行され、前記第2の反復が前記第3の反復の前に実行される、回路デバイス。
【請求項12】
回路デバイスであって、
複数のバッファと、
複数の比較交換回路であって、前記複数の比較交換回路の各々が、前記複数のバッファのそれぞれのバッファに結合される第1の入力と、第2の入力と、前記複数のバッファのそれぞれのバッファに結合される第1の出力と、第2の出力とを有する、前記複数の比較交換回路と、
を含み、
前記複数の比較交換回路が、
第1の比較交換回路と、
第2の比較交換回路であって、前記第1の比較交換回路の第2の出力が前記第2の比較交換回路の第2の入力に結合される、前記第2の比較交換回路と、
前記複数の比較交換回路に結合される第1の入力と、シーケンスを受信するように構成される第2の入力と、前記第1の比較交換回路の第2の入力に結合される出力とを有するマルチプレクサと、
を含む、回路デバイス。
【請求項13】
請求項12に記載の回路デバイスであって、
前記複数の比較交換回路が第3の比較交換回路を更に含み、前記第3の比較交換回路の第2の出力が前記マルチプレクサの第1の入力に結合される、回路デバイス。
【請求項14】
請求項13に記載の回路デバイスであって、
前記第3の比較交換回路の第2の入力が、前記第2の比較交換回路の第2の出力に結合される、回路デバイス。
【請求項15】
請求項12に記載の回路デバイスであって、
前記複数の比較交換回路の各々が、
それぞれの比較交換回路の第1の入力に結合される第1の入力と、前記それぞれの比較交換回路の第2の入力に結合される第2の入力と、出力とを有する比較器と、
前記比較器の出力に結合される第1の入力と、前記それぞれの比較交換回路の第1の制御入力に結合される第2の入力と、出力とを有するXOR回路と、
前記XOR回路の出力に結合される第1の入力と、前記それぞれの比較交換回路の第2の制御入力に結合される第2の入力と、出力とを有するAND回路と、
前記それぞれの比較交換回路の第2の入力に結合される第1の入力と、前記それぞれの比較交換回路の第1の入力に結合される第2の入力と、前記AND回路の出力に結合される制御入力と、前記それぞれの比較交換回路の第1の出力に結合される出力とを有する第1のマルチプレクサと、
前記それぞれの比較交換回路の第1の入力に結合される第1の入力と、前記それぞれの比較交換回路の第2の入力に結合される第2の入力と、前記AND回路の出力に結合される制御入力と、前記それぞれの比較交換回路の第2の出力に結合される出力とを有する第2のマルチプレクサと、
を更に含む、回路デバイス。
【請求項16】
請求項12に記載の回路デバイスであって、
前記複数のバッファの各々が、先入先出tバッファである、回路デバイス。
【請求項17】
請求項12に記載の回路デバイスであって、
前記複数のバッファの各々が、異なるサイズである、回路デバイス。
【請求項18】
請求項12に記載の回路デバイスであって、
前記複数の比較交換回路に分類動作を実行するようにさせるための制御信号を提供するように構成される制御バッファを更に含む、回路デバイス。
【請求項19】
請求項12に記載の回路デバイスであって、
制御バッファであって、
第1の反復において、前記第1の比較交換回路をフロースルーモードで動作するように制御し、前記第2の比較交換回路を比較モードで動作するように制御することと、
第2の反復において、前記第1の比較交換回路と前記第2の比較交換回路とを比較モードで動作するように制御することと、
によって分類を実行するための制御信号を提供するように構成される、前記制御バッファを更に含む、回路デバイス。