(57)【要約】  バイトニックソート（２００）のためのアクセラレータが、複数の比較交換回路（２０４ａ、２０４ｂ、２０４ｃ）及び各比較交換回路に関連する先入れ先出し（ＦＩＦＯ）バッファ（２０６ａ、２０６ｂ、２０６ｃ）を含む。各ＦＩＦＯバッファの出力はＦＩＦＯ値である。比較交換回路は、第１のモードにおいて、前の比較交換回路又はメモリ（２０８）からの前の値を関連するＦＩＦＯバッファに記憶し、関連するＦＩＦＯバッファからのＦＩＦＯ値を後続の比較交換回路又はメモリ（２１０）に渡すように構成され、第２のモードにおいて、前の値をＦＩＦＯ値と比較し、大きい方の値を関連するＦＩＦＯバッファに記憶し、小さい方の値を後続の比較交換回路又はメモリに渡すように構成され、また第３のモードにおいて、前の値をＦＩＦＯ値と比較し、小さい方の値を関連するＦＩＦＯバッファに記憶し、大きい方の値を後続の比較交換回路又はメモリに渡すよう構成される。
2021531570.tif 000002
【特許請求の範囲】
【請求項１】
バイトニックソートのためのハードウェアアクセラレータであって、前記ハードウェアアクセラレータが、
複数の比較交換回路と、
前記比較交換回路の各々に関連する先入れ先出し（ＦＩＦＯ）バッファと、
を含み、
各ＦＩＦＯバッファの出力がＦＩＦＯデータ値であり、
前記比較交換回路が、
第１の動作モードにおいて、前の比較交換回路又はメモリからの前のデータ値を関連するＦＩＦＯバッファに記憶し、関連するＦＩＦＯバッファからのＦＩＦＯデータ値を後続の比較交換回路又はメモリに渡すように構成され、
第２の動作モードにおいて、前記前のデータ値を前記ＦＩＦＯデータ値と比較し、前記データ値のうち大きい方を関連するＦＩＦＯバッファに記憶し、前記データ値のうち小さい方を前記後続の比較交換回路又は前記メモリに渡すように構成され、また、
第３の動作モードにおいて、前記前のデータ値を前記ＦＩＦＯデータ値と比較し、前記データ値のうち小さい方を関連するＦＩＦＯバッファに記憶し、前記データ値のうち大きい方を前記後続の比較交換回路又は前記メモリに渡すように構成される、
ハードウェアアクセラレータ。
【請求項２】
請求項１に記載のハードウェアアクセラレータであって、前記比較交換回路の各々が、
関連するＦＩＦＯバッファの出力に結合される第１の入力と、
関連するＦＩＦＯバッファの入力に結合される第１の出力と、
前記前の比較交換回路の第２の出力又は前記メモリに結合される第２の入力と、
後続の比較交換回路の前記第２の入力又は前記メモリに結合される第２の出力と、
を含む、
ハードウェアアクセラレータ。
【請求項３】
請求項１に記載のハードウェアアクセラレータであって、
前記比較交換回路の各々が制御信号を受信するように構成され、また、
前記受信された制御信号が、前記比較交換回路を前記第１、第２、及び第３の動作モードのうちの１つで動作させる、
ハードウェアアクセラレータ。
【請求項４】
請求項１に記載のハードウェアアクセラレータであって、
前記複数の比較交換回路が、第１の比較交換回路及び最後の比較交換回路を含み、
前記ハードウェアアクセラレータが更に、それぞれ、前記最後の比較交換回路の第２の出力及び前記メモリに結合される２つの入力と、前記第１の比較交換回路の前記第２の入力に結合される１つの出力とを含む、マルチプレクサ（ｍｕｘ）を含む、
ハードウェアアクセラレータ。
【請求項５】
請求項４に記載のハードウェアアクセラレータであって、前記最後の比較交換回路の前記第２の出力が前記メモリに結合される、ハードウェアアクセラレータ。
【請求項６】
請求項４に記載のハードウェアアクセラレータであって、第１の反復において、前記ｍｕｘが、データ値のＮ要素ベクトルを、前記メモリからシリアルに受信するように、及び、前記第１の比較交換回路の前記第２の入力に提供するように構成される、ハードウェアアクセラレータ。
【請求項７】
請求項６に記載のハードウェアアクセラレータであって、後続の反復において、前記ｍｕｘが、前記最後の比較交換回路の前記第２の出力を前記第１の比較交換回路の前記第２の入力に結合するように構成される、ハードウェアアクセラレータ。
【請求項８】
請求項７に記載のハードウェアアクセラレータであって、制御信号を含む制御信号バッファを更に含み、前記制御信号が、前記複数の比較交換回路に提供されると、前記比較交換回路に前記Ｎ要素ベクトルを、第１の反復又は一連の反復の間、バイトニックシーケンスに配置させ、最終反復の間、完全にソートされたアレイに配置させる、ハードウェアアクセラレータ。
【請求項９】
バイトニックソートのためのハードウェアアクセラレータであって、前記ハードウェアアクセラレータが、
各々が、出力、及びメモリに結合するように構成される第１の入力を含む、４つのマルチプレクサ（ｍｕｘ）、
４つの入力及び４つの出力を含む４入力比較交換回路であって、各ｍｕｘの前記出力が、前記４入力比較交換回路の前記入力のうちの１つに結合される、前記４入力比較交換回路、及び
第１のバイトニックソートアクセラレータと、第２のバイトニックソートアクセラレータと、第３のバイトニックソートアクセラレータと、第４のバイトニックソートアクセラレータとを含む４つのバイトニックソートアクセラレータであって、前記４つのバイトニックソートアクセラレータの各々が入力及び出力を有し、前記４入力比較交換回路の各出力が、前記バイトニックソートアクセラレータ入力のうちの１つに結合される、前記４つのバイトニックソートアクセラレータ、
を含み、
各バイトニックソートアクセラレータの前記出力が、前記ｍｕｘのうちの１つのｍｕｘの第２の入力に結合される、
ハードウェアアクセラレータ。
【請求項１０】
請求項９に記載のハードウェアアクセラレータであって、前記４入力比較交換回路が、更に、
各々が第１及び第２の入力と第１及び第２の出力とを含む、第１及び第２の２入力比較交換回路（ＣＥ２）であって、
前記第１の２入力比較交換回路の前記第１の入力が、前記第１のｍｕｘの前記出力に結合され、
前記第１の２入力比較交換回路の前記第２の入力が、前記第２のｍｕｘの前記出力に結合され、
前記第２の２入力比較交換回路の前記第１の入力が、前記第３のｍｕｘの前記出力に結合され、また、
前記第２の２入力比較交換回路の前記第２の入力が、前記第４のｍｕｘの前記出力に結合される、前記第１及び第２の２入力比較交換回路（ＣＥ２）と、
各々が第１及び第２の入力と第１及び第２の出力とを含む、第３及び第４の２入力比較交換回路であって、
前記第３の２入力比較交換回路の前記第１の入力が、前記第１の２入力比較交換回路の前記第１の出力に結合され、
前記第３の２入力比較交換回路の前記第２の入力が、前記第２の２入力比較交換回路の前記第１の出力に結合され、
前記第４の２入力比較交換回路の前記第１の入力が、前記第１の２入力比較交換回路の前記第２の出力に結合され、また、
前記第４の２入力比較交換回路の前記第２の入力が、前記第２の２入力比較交換回路の前記第２の出力に結合される、前記第３及び第４の２入力比較交換回路と、
を含み、
前記第３の２入力比較交換回路の前記第１の出力が、前記第１のバイトニックソートアクセラレータの前記入力に結合され、
前記第３の２入力比較交換回路の前記第２の出力が、前記第２のバイトニックソートアクセラレータの前記入力に結合され、
前記第４の２入力比較交換回路の前記第１の出力が、前記第３のバイトニックソートアクセラレータの前記入力に結合され、また、
前記第４の２入力比較交換回路の前記第２の出力が、前記第４のバイトニックソートアクセラレータの前記入力に結合される、
ハードウェアアクセラレータ。
【請求項１１】
請求項９に記載のハードウェアアクセラレータであって、
前記第１のバイトニックソートアクセラレータの前記出力が、前記第４のｍｕｘの前記第２の入力に結合され、
前記第２のバイトニックソートアクセラレータの前記出力が、前記第２のｍｕｘの前記第２の入力に結合され、
前記第３のバイトニックソートアクセラレータの前記出力が、前記第３のｍｕｘの前記第２の入力に結合され、また、
前記第４のバイトニックソートアクセラレータの前記出力が、前記第１のｍｕｘの前記第２の入力に結合される、
ハードウェアアクセラレータ。
【請求項１２】
請求項９に記載のハードウェアアクセラレータであって、各バイトニックソートアクセラレータが更に、
複数の２入力比較交換回路と、
前記２入力比較交換回路の各々に関連する先入れ先出し（ＦＩＦＯ）バッファと、
を含み、
各ＦＩＦＯバッファの出力がＦＩＦＯデータ値であり、
前記２入力比較交換回路が、
第１の動作モードにおいて、前の２入力比較交換回路又は前記４入力比較交換回路からの前のデータ値を関連するＦＩＦＯバッファに記憶し、関連するＦＩＦＯバッファからのＦＩＦＯデータ値を後続の２入力比較交換回路、前記ｍｕｘのうちの１つ、又は前記メモリに渡すように構成され、
第２の動作モードにおいて、前記前のデータ値を前記ＦＩＦＯデータ値と比較し、前記データ値のうち大きい方を関連するＦＩＦＯバッファに記憶し、前記データ値のうち小さい方を前記後続の２入力比較交換回路、前記ｍｕｘのうちの１つ、又は前記メモリに渡すように構成され、また、
第３の動作モードにおいて、前記前のデータ値を前記ＦＩＦＯデータ値と比較し、小さい方の前記データ値をその関連するＦＩＦＯバッファに記憶し、大きい方の前記データ値を前記後続の２入力比較交換回路、前記ｍｕｘのうちの１つ、又は前記メモリに渡すように構成される、
ハードウェアアクセラレータ。
【請求項１３】
請求項１２に記載のハードウェアアクセラレータであって、前記２入力比較交換回路の各々が、
関連するＦＩＦＯバッファの出力に結合される第１の入力と、
関連するＦＩＦＯバッファの入力に結合される第１の出力と、
前記前の２入力比較交換回路の第２の出力、又は前記４入力比較交換回路の出力に結合される第２の入力と、
後続の２入力比較交換回路、前記ｍｕｘのうちの１つ、又は前記メモリの前記第２の入力に結合される第２の出力と、
を含む、
ハードウェアアクセラレータ。
【請求項１４】
請求項１２に記載のハードウェアアクセラレータであって、
前記２入力比較交換回路の各々が制御信号を受信するように構成され、また、
前記受信された制御信号が、前記２入力比較交換回路を前記第１、第２、及び第３の動作モードのうちの１つで動作させる、
ハードウェアアクセラレータ。
【請求項１５】
請求項１２に記載のハードウェアアクセラレータであって、第１の反復において、前記ｍｕｘの各々が、データ値のＮ／４要素ベクトルを、前記メモリからシリアルに受信するように、及び、前記４入力比較交換回路の前記入力に提供するように構成される、ハードウェアアクセラレータ。
【請求項１６】
請求項１５に記載のハードウェアアクセラレータであって、後続の反復において、前記ｍｕｘの各々が、前記バイトニックソートアクセラレータの前記出力のうちの１つを、前記４入力比較交換回路の前記入力のうちの１つに結合するように構成される、ハードウェアアクセラレータ。
【請求項１７】
請求項１５に記載のハードウェアアクセラレータであって、制御信号を含む制御信号バッファを更に含み、前記制御信号が、前記バイトニックソートアクセラレータの前記４入力比較交換回路及び前記２入力比較交換回路に提供されると、前記ハードウェアアクセラレータに、前記Ｎ／４要素ベクトルを、第１の反復又は一連の反復の間、バイトニックシーケンスに配置させ、最終反復の間、完全にソートされたアレイに配置させる、ハードウェアアクセラレータ。
【請求項１８】
バイトニックソートのための方法であって、前記方法が、複数の比較交換回路の各々について、
制御信号を受信すること、及び、
前記制御信号に応答して、第１の動作モード、第２の動作モード、及び第３の動作モードのうちの１つで動作することを含み、
前記第１の動作モードにおいて、前記方法が更に、
前記比較交換回路によって、前の比較交換回路又はメモリからの前のデータ値を関連するＦＩＦＯバッファに記憶することであって、前記関連するＦＩＦＯバッファの出力がＦＩＦＯデータ値である、前記記憶すること、及び、
前記関連するＦＩＦＯバッファからのＦＩＦＯデータ値を後続の比較交換回路又は前記メモリに渡すこと、
を含み、
前記第２の動作モードにおいて、前記方法が更に、
前記比較交換回路によって、前記前のデータ値を前記ＦＩＦＯデータ値と比較すること、
前記データ値のうち大きい方を前記関連するＦＩＦＯバッファに記憶すること、及び、
前記データ値のうち小さい方を前記後続の比較交換回路又は前記メモリに渡すこと、
を含み、また、
前記第３の動作モードにおいて、前記方法が更に、
前記比較交換回路によって、前記前のデータ値を前記ＦＩＦＯデータ値と比較すること、
前記データ値のうち小さい方を前記関連するＦＩＦＯバッファに記憶すること、及び、
前記データ値のうち大きい方を前記後続の比較交換回路又は前記メモリに渡すこと、
を含む、
方法。
【請求項１９】
請求項１８に記載の方法であって、前記複数の比較交換回路に制御信号を提供することを更に含み、前記制御信号が、前記比較交換回路にＮ要素ベクトルを、第１の反復又は一連の反復の間、バイトニックシーケンスに配置させ、最終反復の間、完全にソートされたアレイに配置させる、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の少なくとも一つの例によれば、バイトニックソートのためのハードウェアアクセラレータが、複数の比較交換回路と、比較交換回路の各々に関連する先入れ先出し（ＦＩＦＯ）バッファとを含む。各ＦＩＦＯバッファの出力がＦＩＦＯデータ値である。比較交換回路は、第１の動作モードにおいて、前の比較交換回路又はメモリからの前のデータ値をその関連するＦＩＦＯバッファに記憶し、その関連するＦＩＦＯバッファからのＦＩＦＯデータ値を後続の比較交換回路又はメモリに渡すように構成され、第２の動作モードにおいて、前のデータ値をＦＩＦＯデータ値と比較し、大きい方のデータ値をその関連するＦＩＦＯバッファに記憶し、小さい方のデータ値を後続の比較交換回路又はメモリに渡すように構成され、第３の動作モードにおいて、前のデータ値をＦＩＦＯデータ値と比較し、小さい方のデータ値をその関連するＦＩＦＯバッファに記憶し、大きい方のデータ値を後続の比較交換回路又はメモリに渡すように構成される。
【発明の概要】
【０００２】
本開示の別の例によれば、バイトニックソートのためのハードウェアアクセラレータが、出力とメモリに結合するように構成される第１の入力とを各々が含む、４つのマルチプレクサ（ｍｕｘ）を含む。ハードウェアアクセラレータは、４つの入力及び４つの出力を有する４入力比較交換回路も含み、各マルチプレクサの出力は、４入力比較交換回路の入力のうちの１つに結合される。ハードウェアアクセラレータは更に、第１のバイトニックソートアクセラレータ、第２のバイトニックソートアクセラレータ、第３のバイトニックソートアクセラレータ、及び第４のバイトニックソートアクセラレータを含む、４つのバイトニックソートアクセラレータを含む。４つのバイトニックソートアクセラレータの各々が入力及び出力を有し、また、４入力比較交換回路の各出力が、バイトニックソートアクセラレータ入力のうちの１つに結合される。各バイトニックソートアクセラレータの出力は、マルチプレクサのうちの１つの第２の入力に結合される。
【０００３】
本開示の別の例によれば、バイトニックソートのための方法が、複数の比較交換回路の各々について、制御信号を受信すること、並びに、制御信号に応答して、第１の動作モード、第２の動作モード、及び第３の動作モードのうちの１つで動作することを含む。第１の動作モードにおいて、この方法は更に、比較交換回路によって、前の比較交換回路又はメモリからの前のデータ値を関連するＦＩＦＯバッファに記憶することであって、関連するＦＩＦＯバッファの出力がＦＩＦＯデータ値である、記憶すること、及び、関連するＦＩＦＯバッファからのＦＩＦＯデータ値を後続の比較交換回路又はメモリに渡すことを含む。第２の動作モードにおいて、この方法は更に、比較交換回路によって、前のデータ値をＦＩＦＯデータ値と比較すること、大きい方のデータ値を関連するＦＩＦＯバッファに記憶すること、及び、小さい方のデータ値を後続の比較交換回路又はメモリに渡すことを含む。第３の動作モードにおいて、この方法は更に、比較交換回路によって、前のデータ値をＦＩＦＯデータ値と比較すること、小さい方のデータ値を関連するＦＩＦＯバッファに記憶すること、及び、大きい方のデータ値を後続の比較交換回路又はメモリに渡すことを含む。
【０００４】
様々な例の詳細な説明のために、次に、添付の図面を参照する。
【図面の簡単な説明】
【０００５】
【図１】様々な例に従った、バイトニックソートネットワークの信号フローグラフを示す。
【０００６】
【図２】様々な例に従った、バイトニックソートアクセラレータのブロック図を示す。
【０００７】
【図３】様々な例に従った、比較交換回路の回路概略図を示す。
【０００８】
【図４】様々な例に従った、フロースルー動作を含むバイトニックソートネットワークの信号フローグラフを示す。
【０００９】
【図５】様々な例に従った、バイトニックソートアクセラレータについてのデータフロー及びタイミング図を示す。
【００１０】
【図６】様々な例に従った、データ並列処理が改良されたバイトニックソートアクセラレータのブロック図を示す。
【００１１】
【図７Ａ】様々な例に従った、データ並列処理が改良されたバイトニックソートネットワークの信号フローグラフを示す。
【図７Ｂ】様々な例に従った、データ並列処理が改良されたバイトニックソートネットワークの信号フローグラフを示す。
【００１２】
【図８】様々な例に従った、バイトニックソートのための方法のフローチャートを示す。
【発明を実施するための形態】
【００１３】
ソート動作は、信号処理、レーダー追跡、画像処理、及びその他などのために、様々なアルゴリズムによって頻繁に用いられる。ソート動作は、しばしば計算を多用し、またそのため他のタスクを行なうためのＣＰＵ又はＧＰＵの機能を低下させる、中央処理ユニット（ＣＰＵ）又はグラフィックス処理ユニット（ＧＰＵ）によって実行されるソフトウェアを用いて実装される。ハードウェアアクセラレータは、ＣＰＵ又はＧＰＵなどの汎用ホストプロセッサ上で実行されるソフトウェアよりも効率的に、ソートなどの或る種の数学演算を行なうために用いられる。しかしながら、ソート速さ及び回路面積に対する改良が望ましい。
【００１４】
開示される例によれば、バイトニックソートのためのハードウェアアクセラレータ（バイトニックソートアクセラレータ）及びバイトニックソートのための方法が、ソート速さが向上し、回路面積が減少した、データ値のアレイをソートするためのハードウェアソリューションを提供する。本開示のバイトニックソートアクセラレータは、例えば、ホストプロセッサによって実行されるソフトウェアよりも効率的に、バイトニックソートを行なう。特に、本開示のバイトニックソートアクセラレータは、Ｒａｄｉｘ−２シングルディレイフィードバック（Ｒ２ＳＤＦ）アーキテクチャと同様の構造を利用して、パイプライン様式でデータ値のアレイのバイトニックソートを行う。バイトニックソートアクセラレータは、任意の比較ベースのソートアルゴリズムを用いて達成可能なソート速さについての理論的上限に等しい、合計（Ｎ×ｌｏｇ２Ｎ）クロックサイクルにおいてアクセラレータ内にシリアルに送られるＮ個のバイナリ数をソートする。いくつかの例において、バイトニックソートアクセラレータのスループットは、ハードウェアアクセラレータの並列処理を増加させることによって、更に４倍向上する。
【００１５】
バイトニックシーケンスは、２つの条件のいずれかを満たす要素のシーケンス（ａ０、ａ１、・・・、ａＮ−１）である。第１の条件は、（ａ０、・・・、ａｉ）が単調に増加し、（ａｉ＋１、・・・、ａＮ−１）が単調に減少するような、指数ｉ、０≦ｉ≦Ｎ−１が存在することである。第２の条件は、第１の条件が満たされるような指数の循環シフトが存在することである。例えば、｛１、４、６、８、３、２｝（これらは、単調に増加した後、単調に減少する）、｛６、９、４、２、３、５｝（循環シフトが、単調に増加した後、単調に減少する（｛２｝で始まる）か又は単調に減少した後、単調に増加する（｛９｝で始まる））、及び、｛９、８、３、２、４、６｝（これらは、単調に減少した後、単調に増加する）は、バイトニックシーケンスである。
【００１６】
本開示の例において、ハードウェアアクセラレータが、バイトニックシーケンスの要素への比較交換（ＣＥ）演算の再帰的適用を介して、サイズＮのバイトニックシーケンスをソートする。ハードウェアアクセラレータは、Ｒ２ＳＤＦアーキテクチャの一部を再使用しながら、任意の比較ベースのソートアルゴリズムについての理論的上限に等しい合計（Ｎ×ｌｏｇ２Ｎ）クロックサイクルで、サイズＮの入力データをソートできるようにする。ＣＥ演算が、２つの要素を比較した後、任意選択として、どちらの要素がより大きい値を有するかに応じて２つの要素の位置を交換又はスワップする。例えば、ＣＥ演算は、最大の要素を第２の位置に置こうとする場合、ＣＥ演算は第１の値と第２の値とを比較し、第１の値が第２の値より大きい場合、２つの要素を交換する。しかしながら、第２の値が第１の値より大きい場合、交換は成されない。
【００１７】
図１は、ランダム入力を有するサイズＮ＝８のデータシーケンスをソートするための、バイトニックソートネットワーク１００の例示の信号フローグラフを示す。一般に入力データは、データ値のＮ要素ベクトルである。信号フローグラフ１００において、矢印は、比較される２つの要素（各矢印の「先頭」及び「末尾」に位置する要素）、及び、要素が交換又はスワップされる方向を示す。図１の例において、比較される２つの要素のうちの小さい方は、比較の後、矢印の末尾に位置する。バイトニックソートネットワーク１００は、まず、ソートされていないデータシーケンス（Ｓｅｑ．Ａ）を、第１のｌｏｇ２Ｎ−１ステージ、この場合はステージＳ１及びＳ２、において生じるバイトニックシーケンス（Ｓｅｑ．Ｃ）へと再配置する。その後、バイトニックソートネットワーク１００は、最終ステージＳ３において、バイトニックシーケンス（Ｓｅｑ．Ｃ）をソートされたシーケンス（Ｓｅｑ．Ｄ）へと再配置する。
【００１８】
入力データ又はソートされていないデータシーケンス（Ｓｅｑ．Ａ）は、長さ２のバイトニックシーケンスの組み合わせとして扱われる。ステージＳ１において、反対方向に向き合う近接する矢印によって示されるように、並列のＣＥ演算が、近接するバイトニックシーケンス（対）について反対方向に適用される。ステージＳ１の結果は、入力データ（Ｓｅｑ．Ａ）が長さ４のバイトニックシーケンス（Ｓｅｑ．Ｂ）の組み合わせに変換されることである。ステージＳ２において、同様の並列ＣＥ演算が、図に示されるような近接するバイトニックシーケンスについて反対方向に適用され、入力データサイズが８より大きい場合、後続のステージは、長さＮのバイトニックシーケンスが生成されるまで同様に続行する。この例では、ステージＳ２の結果は、長さＮ＝８のバイトニックシーケンス（Ｓｅｑ．Ｃ）が生成されることである。この例ではステージＳ３である最終ステージにおいて、バイトニックシーケンス（Ｓｅｑ．Ｃ）は、図示されるようなソートされたシーケンス（Ｓｅｑ．Ｄ）に変換される。
【００１９】
図２は、本開示の例に従ったバイトニックソートアクセラレータ２００を示す。バイトニックソートアクセラレータ２００は、２入力マルチプレクサ（ｍｕｘ）２０２への入力として、メモリ２０８から入力データ（Ｄｉ、これは、データ値のＮ要素ベクトル）を受信する。上記で説明したように、入力データ要素は、バイトニックソートアクセラレータ２００のマルチプレクサ２０２によってシリアルに受信される。バイトニックソートアクセラレータ２００は、一つ又は複数のパイプライン比較交換（ＣＥ）回路２０４も含む。図２の例において、ＣＥ回路２０４は、第１のＣＥ回路２０４ａ及び最後のＣＥ回路２０４ｃを含む。ＣＥ回路２０４ｂについて、ＣＥ回路２０４ａは前のＣＥ回路２０４ａと称し、ＣＥ回路２０４ｃは後続のＣＥ回路２０４ｃと称する。一般に、第１のＣＥ回路２０４ａと最後のＣＥ回路２０４ｃとの間の各ＣＥ回路２０４は、１つの前のＣＥ回路２０４及び１つの後続のＣＥ回路２０４を有する。
【００２０】
サイズＮ（一般的に、２のべき乗であると想定される）の入力データをソートするように構成されるバイトニックソートアクセラレータ２００の場合、バイトニックソートアクセラレータ２００は少なくともＬｏｇ２ＮのＣＥ回路２０４を含む。Ｎが２のべき乗でない例において、入力データサイズを次の２のべき乗まで増加させるために、ゼロパディングが用いられる。図２の例において、また図１との整合性のために、例えば入力データはサイズＮ＝８であるものと想定される。したがって、図２の例において、バイトニックソートアクセラレータ２００は３つのＣＥ回路２０４ａ、２０４ｂ、２０４ｃを含む。マルチプレクサ２０２は２つの入力を含み、１つは前述のようにメモリ２０８に結合され、もう１つは最後のＣＥ回路２０４ｃによって生成される出力データ（Ｄｏ）に結合される。出力データ（Ｄｏ）は、いくつかの例においてメモリ２０８と同じであり、他の例ではメモリ２０８から分離される、メモリ２１０にも提供される。
【００２１】
各ＣＥ回路２０４ａ、２０４ｂ、２０４ｃは、それぞれ、先入れ先出し（ＦＩＦＯ）バッファ２０６ａ、２０６ｂ、２０６ｃに関連する。ＦＩＦＯバッファ２０６ａ、２０６ｂ、２０６ｃは遅延要素として働き、またいくつかの例では、メモリ又はシフトレジスタにおいて実装される。Ｍ  ＣＥ回路２０４ａ、２０４ｂ、２０４ｃを有し、Ｍ  ＣＥ回路がＭ’を用いてインデックス付けされ、Ｍ’の範囲が０からｌｏｇ２Ｎ−１である、バイトニックソートアクセラレータ２００の場合、ＦＩＦＯバッファ２０６ａ、２０６ｂ、２０６ｃのサイズは２ｌｏｇ２Ｎ−１−Ｍ’であるか、又はこの場合、それぞれサイズ４、２、１である。特定のＣＥ回路２０４に関連するＦＩＦＯバッファ２０６のサイズは、その特定のＣＥ回路２０４によって実施される比較の「距離」を特定する。図１に戻って参照すると、例えばステージＳ１において、すべての比較は距離１を有する近接する値の比較であり、同様に、ステージＳ２において、比較は、距離２及び距離１を有する値の比較であり、最終的に、ステージＳ３において、比較は距離４を有し、次に２を有し、次に１を有する値の比較である。回路２０４ａ、２０４ｂ、２０４ｃの各々は、それぞれ制御信号Ｃ２、Ｃ１、Ｃ０も受信し、これについては下記で更に詳細に説明する。
【００２２】
図３は、ＣＥ回路２０４をより詳細に示す。ＣＥ回路２０４は、関連するＦＩＦＯバッファ２０６の出力に結合される第１の入力３０２を含む。参照しやすくするために、各ＦＩＦＯバッファ２０６の出力データはＦＩＦＯデータ値と呼ぶことができる。ＣＥ回路２０４は、関連するＦＩＦＯバッファ２０６の入力に結合される第１の出力３０６も含む。ＣＥ回路２０４は更に、第２の入力３０４及び第２の出力３０８を含む。第２の入力３０４は、（例えば、図２に示されるような）前のＣＥ回路２０４又はメモリ（例えば、図２に示されるｍｕｘ２０２を介したメモリ２０８）の第２の出力に結合する。第２の出力３０８は、（例えば、図２に示されるような）後続のＣＥ回路２０４又はメモリ（例えば、図２に示されるメモリ２１０）の第２の入力に結合する。
【００２３】
ＣＥ回路２０４は比較器３１０も含み、比較器３１０は、第１の入力３０２及び第２の入力３０４として入力を受信し、第１の入力３０２と第２の入力３０４との比較に基づいて出力を生成する。図３の例において、比較器３１０の出力は、第１の入力３０２が第２の入力３０４よりも大きいときにアサートされ（例えば「１」であり）、第１の入力３０２が第２の入力３０４よりも小さいときにアサート解除される（例えば「０」である）。
【００２４】
ＣＥ回路２０４は、それぞれＣｎ［０］及びＣｎ［１］として示される、その最下位ビット及び最上位ビットを有する２ビット制御信号を受信する。比較器３１０の出力及び最下位ビットＣｎ［０］は、ＸＯＲゲート３１２への入力として提供される。ＸＯＲゲート３１２の出力及び最上位ビットＣｎ［１］は、ＡＮＤゲート３１４への入力として提供される。ＡＮＤゲート３１４の出力は、第１の出力ｍｕｘ３１６及び第２の出力ｍｕｘ３１８のための制御であり、第１の出力ｍｕｘ３１６及び第２の出力ｍｕｘ３１８の出力は、それぞれ、第１の出力３０６及び第２の出力３０８を含む。ＡＮＤゲート３１４の出力がアサートされることに応答して、第１の出力ｍｕｘ３１６は、第１の入力３０２を第１の出力３０６として通過させ、第２の出力ｍｕｘ３１８は、第２の入力３０４を第２の出力３０８として通過させる。ＡＮＤゲート３１４の出力がアサート解除されることに応答して、第１の出力ｍｕｘ３１６は、第２の入力３０４を第１の出力３０６として通過させ、第２の出力ｍｕｘ３１８は、第１の入力３０２を第２の出力３０８として通過させる。
【００２５】
ＣＥ回路２０４の前述の論理の結果として、比較交換演算は、制御信号Ｃｎによって下記のように特定される。
０（又は１）：第１の動作モードにおいて、比較交換演算はＣＥ回路２０４を迂回することであり、これは、図４に関連して下記でより詳細に説明するフロースルー動作に対応し、前のＣＥ回路からのデータ（第２の入力３０４）が、ＦＩＦＯバッファ２０６に記憶され（第１の出力３０６であり）、またＦＩＦＯバッファ２０６からの最も古いデータ（第１の入力３０２）は、次のＣＥ回路に渡される（第２の出力３０８である）。
２：第２の動作モードにおいて、比較交換演算は、第１のＣＥ回路２０４ａの場合、前のＣＥ回路又はメモリ２０８からのデータ（第２の入力３０４）を、ＦＩＦＯバッファ２０６からの最も古いデータであるＦＩＦＯデータ値（第１の入力３０２）と比較することであり、大きい方のデータ値がＦＩＦＯバッファ２０６に記憶され（第１の出力３０６であり）、小さい方のデータ値は、次のＣＥ回路、又は、最後のＣＥ回路２０４ｃの場合、メモリ２１０に渡される（第２の出力３０８である）。
３：第３の動作モードにおいて、比較交換演算は、第１のＣＥ回路２０４ａの場合、前のＣＥ回路又はメモリ２０８からのデータ（第２の入力３０４）を、ＦＩＦＯバッファ２０６からの最も古いデータであるＦＩＦＯデータ値（第１の入力３０２）と比較することであり、小さい方のデータ値がＦＩＦＯバッファ２０６に記憶され（第１の出力３０６であり）、大きい方のデータ値は、次のＣＥ回路、又は、最後のＣＥ回路２０４ｃの場合、メモリ２１０に渡される（第２の出力３０８である）。
下記で更に説明するように、制御信号「２」対制御信号「３」の間の方向の差は、図１の矢印の方向性を実装することができる。
【００２６】
図４は、フロースルー動作（例えば、前述の制御信号０に対応する）を含む、バイトニックソート４００のための別の例示の信号フローグラフを示す。特に、図１の例示的信号フローグラフ１００は、ドット（矢印ではない）接続の端部においてデータ要素として示される、フロースルー動作４０２を含んで示される。フロースルー動作は、例えば、バイトニックソートエンジン２００のパイプラインステージにわたって、データの定常フローを維持するように実装される。例えば、ステージＳ１において、距離４及び２を有する要素間の比較は、フロースルー動作として示される。同様に、ステージＳ２において、距離４を有する要素間の比較は、フロースルー動作として示される。ステージＳ３において、（図１に関して上記で説明したように、最終のバイトニックソート動作を実施するために）距離４の比較が必要であるため、Ｎ＝８である特定の例についてフロースルー動作は存在しない。
【００２７】
図５は、図１及び図４のシーケンスＡに対応する入力パターンを有する、Ｎ＝８の場合のバイトニックソートアクセラレータ２００の入力データ（Ｄｉ）及び出力データ（Ｄｏ）についての、例示のデータフロー及びタイミング図５００を示す。概して、バイトニックソートアクセラレータ２００の動作は、最後の入力データ値（この例では「１」）がバイトニックソートアクセラレータ２００にフィードされた時点から、完了するためにＮ×ｌｏｇ２Ｎクロックサイクル（この場合、２４クロックサイクル）を要する。
【００２８】
図２に戻って参照すると、出力データＤｏからｍｕｘ２０２への入力までのフィードバック接続は、図１及び図４に関して上記で説明したステージＳ１、Ｓ２、Ｓ３を実装するために、バイトニックソートアクセラレータ２００を反復的に利用できるようにする。ステージＳ１に対応する第１の反復において、ステージＳ１は距離１を有する近接する値に対してのみ比較交換演算を実施するため、（距離４に対応する）ＣＥ回路２０４ａ及び（距離２に対応する）ＣＥ回路２０４ｂは、フロースルーモードで動作される。
【００２９】
（距離１に対応する）ＣＥ回路２０４ｃについての比較交換演算は、第１の値（この例では「８」）を関連するＦＩＦＯバッファ２０６ｃにフロースルーするために、７番目のクロックサイクルにおいて０で始まる。この時点において、最も古いものから最も新しいものへと順序付けされ、ＦＩＦＯバッファ２０６ａは値５、４、３、２を含み、ＦＩＦＯバッファ２０６ｂは値７、６を含み、ＦＩＦＯバッファ２０６ｃは値８を含む。
【００３０】
８番目のクロックサイクルにおいて、ＣＥ回路２０４ｃについての比較交換演算は２であり、これによって、ＣＥ回路２０４ｃに、前のＣＥ回路２０４ｂからのデータ（値７、ＦＩＦＯバッファ２０６ｂ内の最も古いデータとして、及び、フロースルー動作の対象となる）をＦＩＦＯバッファ２０６ｃからの最も古いデータ（値８）と比較させる。大きい方のデータ値８は、ＦＩＦＯバッファ２０６ｃに戻って記憶され、小さい方のデータ値７は出力データＤｏとして渡され、これはタイミング図５００においてＤｏの第１の要素（シーケンスＢ）として反映される。また、この時点で、ｍｕｘ２０２への制御信号が変更されて、出力データＤｏがＣＥ回路２０４ａへの入力データとして働き、第２の反復を開始して、続くステージ、この場合はステージＳ２を実装するようになる。
【００３１】
９番目のクロックサイクルにおいて、ＣＥ回路２０４ｃについての比較交換演算は再度０（フロースルー）であり、これによって、ＣＥ回路２０４ｃに、関連するＦＩＦＯバッファ２０６ｃからのデータ値８を出力データＤｏとして渡させ、これはタイミング図５００においてＤｏの第２の要素（シーケンスＢ）として反映される。１０番目のクロックサイクルにおいて、ＣＥ回路２０４ｃについての比較交換演算は３であり、これによって、ＣＥ回路２０４ｃに、前のＣＥ回路２０４ｂからのデータ（値５、ＦＩＦＯバッファ２０６ｂ内の最も古いデータとして、及び、フロースルー動作の対象となる）をＦＩＦＯバッファ２０６ｃからの最も古いデータ（値６）と比較させる。小さい方のデータ値５がＦＩＦＯバッファ２０６ｃに記憶され、大きい方のデータ値６は出力データＤｏとして渡され、これはタイミング図５００においてＤｏの第３の要素（シーケンスＢ）として反映される。上記のプロセスは繰り返され、データ値４及び３（比較交換演算２を用いる）とデータ値２及び１（比較交換演算３を用いる）とを比較して、距離１を有する近接する値でのステージＳ１の比較交換演算を完了する。
【００３２】
ステージＳ２は、必要とされる比較交換演算の方向性を明らかにするように制御信号Ｃｎが改変される点を除いて、ステージＳ１に関して上記で説明した内容と同様に実装される。タイミング図５００の残りの部分は、ステージＳ１の結果（シーケンスＢ）、ステージＳ２の結果（シーケンスＣ）、及びステージＳ３の結果（シーケンスＤ）に対応する、制御信号Ｃｎ及び出力データＤｏを反映する
【００３３】
また、制御信号Ｃｎは、例えば、モジュロＮのバイナリカウンタ（０からＮ−１までをカウントする）、及び、各ＣＥ回路２０４ａ、２０４ｂ、２０４ｃに関連するモジュロｌｏｇ２Ｎのバイナリカウンタ（０からｌｏｇ２Ｎ−１までをカウントする）からのカウンタビットを用いて生成されるパターンに従う。モジュロｌｏｇ２Ｎのバイナリカウンタは反復ごとに増分し、モジュロＮのバイナリカウンタはクロックサイクルごとに増分する。ＣＥ回路２０４ａ、２０４ｂ、２０４ｃの各々は、モジュロｌｏｇ２Ｎのバイナリカウンタが特定の値に達するとき、アクティブである（例えば、制御信号Ｃｎ＝２又はＣｎ＝３）。例えばＮ＝８の場合、Ｃ２は、モジュロｌｏｇ２Ｎのカウンタが２に等しいときにアクティブであり、Ｃ１は、モジュロｌｏｇ２Ｎのカウンタが１より大きいか又は１に等しいときにアクティブであり、Ｃ０は、モジュロｌｏｇ２Ｎのカウンタが０より大きいか又は０に等しいときにアクティブである。Ｃｎの値は、モジュロＮのカウンタからの個々のビットを用いる組み合わせ論理に基づいて、各ＣＥ回路２０４ａ、２０４ｂ、２０４ｃについて決定される。他の例において、制御信号Ｃｎは、メモリ内の制御信号バッファからアクセスされる。
【００３４】
図２に示され上記で説明したバイトニックソートアクセラレータ２００は、バイトニックソートアクセラレータ２００がシリアル入力データ（Ｄｉ）を受信し、固定された待ち時間の後、出力データ（Ｄｏ）をシリアルに生成するという点で、本来シリアルである。しかしながら、いくつかの例において、バイトニックソートアクセラレータが実装されるべきコンピュータシステムは、より広い帯域幅を有しそのためより高いスループットを処理し得る、プロセッサ、バス構造、及びメモリアクセス（例えば、直接メモリアクセスＤＭＡ））を含む。そうしたコンピュータシステムにおいて、ハードウェアアクセラレータが、バイトニックソートアクセラレータ２００のシリアル入力及びシリアル出力などのデータを相対的にゆっくりと消費及び生成することによって、システム全体の性能が低減される。
【００３５】
図６は、データ値のＮ要素ベクトルに関するソートを行うために必要なクロックサイクルの数を減少させる、高水準のデータ並列処理を伴うバイトニックソートアクセラレータ６００を示す。バイトニックソートアクセラレータ６００は、メモリ２０８からの４つの並列ストリーム（ｘ１〜ｘ４と示される）から入力データを受信し、各ストリームは２入力マルチプレクサ（ｍｕｘ）６０２への１入力である。図２に関して上述したように、入力データ要素は、バイトニックソートアクセラレータ６００のｍｕｘ６０２によってシリアルに受信されるが、４ｘ並列処理を用いる。バイトニックソートアクセラレータ６００は、図２及び図３に示され上記で説明したものと同一の４つのＣＥ回路２０４ａ〜２０４ｄを含む、４入力ＣＥ回路６０４も含む。
【００３６】
第１のＣＥ回路２０４ａは、第１のｍｕｘ６０２ａの出力に結合される第１の入力と、第２のｍｕｘ６０２ｂの出力に結合される第２の入力とを含む。第２のＣＥ回路２０４ｂは、第３のｍｕｘ６０２ｃの出力に結合される第１の入力と、第４のｍｕｘ６０２ｄの出力に結合される第２の入力とを含む。第３のＣＥ回路２０４ｃは、第１のＣＥ回路２０４ａの第１の出力に結合される第１の入力と、第２のＣＥ回路２０４ｂの第１の出力に結合される第２の入力とを含む。第４のＣＥ回路２０４ｄは、第１のＣＥ回路２０４ａの第２の出力に結合される第１の入力と、第２のＣＥ回路２０４ｂの第２の出力に結合される第２の入力とを含む。前述のように、ＣＥ回路２０４ａ〜２０４ｄは、第１及び第２の出力がそれぞれ第２及び第１の入力に対応するフロースルーモードにおいて、これらの入力のうち大きい方のデータ値が第１の出力であり、これらの入力のうちの小さい方のデータ値が第２の出力である比較モードにおいて、並びに、これらの入力の小さい方のデータ値が第１の出力であり、これらの入力の大きい方のデータ値が第２の出力である比較モードにおいて、動作するように構成される。
【００３７】
第３及び第４のＣＥ回路２０４ｃ、２０４ｄの第１及び第２の出力は、各々、上記図２において説明した、それぞれ、バイトニックソートアクセラレータ２００ａ〜２００ｄの入力に結合される。第１のバイトニックソートアクセラレータ２００ａの出力（ｙ１）は、ｍｕｘ６０２ｄの入力に結合される。第２のバイトニックソートアクセラレータ２００ｂの出力（ｙ２）は、ｍｕｘ６０２ｂの入力に結合される。第３のバイトニックソートアクセラレータ２００ｃの出力（ｙ３）は、ｍｕｘ６０２ｃの入力に結合される。第４のバイトニックソートアクセラレータ２００ｄの出力（ｙ４）は、ｍｕｘ６０２ａの入力に結合される。
【００３８】
図７Ａ及び図７Ｂは、わかりやすくするために、フロースルー動作を含まないバイトニックソート７００についての例示の信号フローグラフを示す。図２のバイトニックソートアクセラレータ２００に関した上記の例は、８ポイントバイトニックソートアクセラレータについてのものであったが、本開示は、説明するように追加のＣＥ回路及び関連するＦＩＦＯバッファを追加することによって、他の数のポイントに拡張することが可能である。したがって、図２の例を続けるために、バイトニックソートアクセラレータ６００の機能性は、前述のように、４つの８ポイントバイトニックソートアクセラレータ２００を用いる３２ポイントバイトニックソートアクセラレータとして説明される。信号フローグラフ７００において、行７０１、７０３、７０５、７０７は、それぞれ、８ポイントバイトニックソートアクセラレータ２００ａ、２００ｂ、２００ｃ、２００ｄの機能性に対応する。
【００３９】
第１のステージ７０２において、４入力ＣＥ回路６０４のＣＥ回路２０４ａ〜２０４ｄはフロースルーモードで動作して、ｘ１入力データは８ポイントバイトニックソートアクセラレータ２００ｄに提供され、ｘ２入力データは８ポイントバイトニックソートアクセラレータ２００ｂに提供され、ｘ３入力データは８ポイントバイトニックソートアクセラレータ２００ｃに提供され、ｘ４入力データは８ポイントバイトニックソートアクセラレータ２００ａに提供されるようになっている。第１のステージ７０２において、８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄは、距離４及び２を有する要素間での比較のためにフロースルー動作を実装し、距離１を有する要素は前述のように比較される。この場合、８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄの最後のＣＥ回路のみがフロースルーモードで動作されない。
【００４０】
第２及び第３のステージ７０４、７０６において、メモリ２０８から８要素（この例において）が読み取られた後であるが、４入力ＣＥ回路６０４のＣＥ回路２０４ａ〜２０４ｄは再度フロースルーモードで動作し、ｍｕｘ６０２ａ〜６０２ｄは、８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄの出力を４入力ＣＥ回路６０４への入力として提供するように構成される。第２のステージ７０４において、８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄは、距離４を有する要素間での比較のためにフロースルー動作を実装し、距離２及び１を有する要素は前述のように比較される。この場合、８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄの最後の２つのＣＥ回路は、フロースルーモードで動作しない。第３のステージ７０６において、８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄはフロースルー動作を実装せず、距離４、２、及び１を有する要素は前述のように比較される。
【００４１】
第４のステージ７０８において、ＣＥ回路２０４ｃ及び２０４ｄは、距離８を有する要素間での比較を実施するために、（７０８ａに対応する）比較モードで動作される。８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄは、フロースルー動作を実装せず、距離４、２、及び１を有する要素は前述のように（７０８ｂに対応して）比較される。ＣＥ回路２０４ａ〜２０４ｄは、フロースルーモードで動作される。
【００４２】
最終的に、第５のステージ７１０において、ＣＥ回路２０４ａ〜２０４ｄはすべて、距離１６及び８を有する要素間での比較を実施するために、（７１０ａに対応する）比較モードで動作される。８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄはフロースルー動作を実装せず、距離４、２、及び１を有する要素は前述のように（７１０ｂに対応して）比較される。ＣＥ回路２０４ａ〜２０４ｄ、又は８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄにおけるＣＥ回路は、いずれもフロースルー動作を実装しない。この例において、４番目及び５番目のサイクルは例示的である。一般に、４入力ＣＥ回路６０４は、最後の２回の反復又はステージまでフロースルー動作を実装する。
【００４３】
バイトニックソートアクセラレータ６００は、図２で説明されるバイトニックソートアクセラレータ２００に比べてスループット及びレイテンシを向上させる。例えば、長さＮのデータアレイの場合、反復回数はｌｏｇ２Ｎのままである。しかしながら、各反復に必要なクロックサイクルは、４入力ＣＥ回路６０４及びＮ／４ポイントバイトニックソートアクセラレータ（例えば、図６の例における８ポイントバイトニックソートアクセラレータ２００ａ〜２００ｄ）によって導入される並列処理に起因して、４分の１に減少する。したがって、バイトニックソートアクセラレータ６００のレイテンシは、サンプル当たり（（ｌｏｇ２Ｎ）／４）の実効スループットを伴う（（Ｎ×ｌｏｇ２Ｎ）／４）クロックサイクルである。
【００４４】
図８は、本開示の例に従った方法８００のフローチャートを示す。方法８００は、ブロック８０２において、制御信号、例えば図３に関して上記で説明したＣｎを受信することから開始される。ブロック８０４において、方法８００は、制御信号によって示される比較交換回路について動作モードを決定することを含み、動作モードは、一例では、制御信号が値０又は１の場合は第１の動作モードであり、制御信号が値２の場合は第２の動作モードであり、また制御信号が値３の場合は第３の動作モードである。
【００４５】
制御信号が、比較交換回路を第１の動作モードで動作させる場合、方法８００はブロック８０６に進み、前の比較交換回路又はメモリからの前のデータ値を関連するＦＩＦＯバッファに記憶する。関連するＦＩＦＯバッファの出力は、ＦＩＦＯデータ値と称する。次いで、方法８００はブロック８０８へと続き、関連するＦＩＦＯバッファからのＦＩＦＯデータ値を後続の比較交換回路又はメモリに渡す。
【００４６】
制御信号が、比較交換回路を第２の動作モードで動作させる場合、方法８００はブロック８１０に進み、前のデータ値をＦＩＦＯデータ値と比較する。次いで、方法８００はブロック８１２へと続き、大きい方のデータ値を関連するＦＩＦＯバッファに記憶し、ブロック８１４において、小さい方のデータ値を後続の比較交換回路又はメモリに渡す。
【００４７】
制御信号が、比較交換回路を第３の動作モードで動作させる場合、方法８００はブロック８１６に進み、前のデータ値をＦＩＦＯデータ値と比較する。次いで、方法８００はブロック８１８で継続し、小さい方のデータ値を関連するＦＩＦＯバッファに格納し、ブロック８２０において、大きい方のデータ値を後続の比較交換回路又はメモリに渡す。
【００４８】
上記で説明したように、例えば図５に関して、第１の反復又は一連の反復の間、複数の比較交換回路によって入力データのＮ要素ベクトルがバイトニックシーケンスに配置されるように、制御信号が提供される。更に、最終反復において、バイトニックシーケンスは、複数の比較交換回路によって、完全にソートされたアレイに配置される。制御信号は、メモリ内の制御信号バッファによって提供され得るか、又は、前述のようにカウンタビットを用いて提供され得る。
【００４９】
前述の考察において、及び特許請求の範囲において、様々な要素、セクション、及びステージを含むバイトニックソートアクセラレータについて言及している。これらの要素、セクション、及びステージは、場合によっては、例えば集積回路（ＩＣ）上に実装されるハードウェア回路要素に対応することを理解されたい。実際に、少なくとも一つの例において、バイトニックソートアクセラレータ全体がＩＣ上に実装される。
【００５０】
前述の考察において、及び特許請求の範囲において、「含む」及び「備える」という用語はオープンエンド様式で用いられ、またそのため、「・・・を含むがそれに限定されない」ことを意味するものと解釈されるべきである。また、「結合する」という用語は、間接接続又は直接接続のいずれかを意味することが意図される。したがって、第１のデバイスが第２のデバイスに結合する場合、その接続は直接接続を介するか、又は、他のデバイス及び接続を介する間接接続を介するものであり得る。同様に、第１の構成要素又は場所と第２の構成要素又は場所との間で結合されるデバイスは、直接接続を介するか、又は、他のデバイス及び接続を介する間接接続を介するものであり得る。或るタスク又は機能を行う「ように構成される」要素又は機構は、その機能を行うために製造業者による製造時に構成され（例えば、プログラミングされ又は構造的設計され）得、並びに／或いは、その機能及び／又は他の追加の又は代替の機能を行うために、製造後、ユーザによって構成可能（又は再構成可能）であり得る。こういった構成は、デバイスのファームウェア及び／又はソフトウェアプログラミングを介し得、デバイスのハードウェア構成要素及び相互接続の構造及び／又はレイアウトを介し得、或いはそれらの組み合わせであり得る。加えて、上記考察におけるフレーズ「接地」又は同様のフレーズの使用は、シャーシ接地、アース接地、フローティング接地、仮想接地、デジタル接地、共通接地、及び／又は、本開示の教示に適用可能であるか又は適切な任意の他の形式の接地接続を含むことが意図される。特に示されない限り、値に先行する「約」、「およそ」、又は「実質的に」は、示される値の＋／−１０パーセントを意味する。
【００５１】
上記考察は、本開示の原理及び様々な実施形態の例示であることが意図される。当業者であれば、上記開示を完全に理解すれば、多く変形及び改変が明らかとなろう。下記の特許請求の範囲は、そうした変形及び改変すべてを包含するものと解釈されることが意図される。
【図１】
2021531570.tif 000003
【図２】
2021531570.tif 000004
【図３】
2021531570.tif 000005
【図４】
2021531570.tif 000006
【図５】
2021531570.tif 000007
【図６】
2021531570.tif 000008
【図７Ａ】
2021531570.tif 000009
【図７Ｂ】
2021531570.tif 000010
【図８】
2021531570.tif 000011
【国際調査報告】
2021531570.tif 000012