(57)【要約】非同期パイプライン（１０５）は、第１ステージ（１１２）と、１つ以上の第２ステージ（１１１，１１３）と、を含む。コントローラ（１６２）は、第１ステージの動作速度の変更を示す制御信号を第１ステージに提供する。変更は、第１ステージの完了ステータスと、１つ以上の第２ステージの１つ以上の完了ステータスと、の比較に基づいて決定される。場合によっては、コントローラは、第１ステージに印加される動作電圧及び第１ステージ内のバッファ（２２６）のドライブ強度に対する変更を示す制御信号を提供する。【選択図】図１
2019521454.tif 000002
【特許請求の範囲】
【請求項１】
第１ステージ（１１２）と、少なくとも１つの第２ステージ（１１１）と、を備える非同期パイプライン（１０５）と、
前記第１ステージの動作速度の変更を示す制御信号を前記第１ステージに提供するコントローラ（１６２）であって、前記変更は、前記第１ステージの完了ステータスと、前記少なくとも１つの第２ステージの少なくとも１つの完了ステータスと、の比較に基づいて決定される、コントローラ（１６２）と、を備える、
装置（１００）。
【請求項２】
前記少なくとも１つの第２ステージは、前記第１ステージに対する入力データを生成する左側ステージ（１１１）と、前記第１ステージによって生成された出力データを受信する右側ステージ（１１３）と、のうち少なくとも１つを備える、
請求項１の装置。
【請求項３】
前記コントローラは、前記第１ステージに印加される動作電圧の変更を示す制御信号を前記第１ステージに提供するように構成されており、前記動作電圧の変更は、前記第１ステージと前記少なくとも１つの第２ステージとの完了ステータスの比較に基づいて決定される、
請求項１の装置。
【請求項４】
前記第１ステージの部分間で信号をドライブするための少なくとも１つのバッファ（２２６）であって、前記コントローラは、前記少なくとも１つのバッファの少なくとも１つのドライブ強度の少なくとも１つの変更を示す制御信号を提供するように構成されており、前記少なくとも１つのドライブ強度の少なくとも１つの変更は、前記第１ステージと前記少なくとも１つの第２ステージとの完了ステータスの比較に基づいて決定される、少なくとも１つのバッファ（２２６）をさらに備える、
請求項１の装置。
【請求項５】
前記第１ステージ及び前記少なくとも１つの第２ステージの完了ステータスを決定する複数のモジュール（１５０，１５１）をさらに備える、
請求項１の装置。
【請求項６】
前記複数のモジュールは、前記第１ステージ及び前記少なくとも１つの第２ステージによるタスクの実行の開始に応じて、前記第１ステージ及び前記少なくとも１つの第２ステージによって生成された出力信号を監視することによって、前記第１ステージ及び前記少なくとも１つの第２ステージの完了ステータスを決定する、
請求項５の装置。
【請求項７】
前記第１ステージのクリティカルパスに対応する第１レプリカクリティカルパス（３２０）と、
前記少なくとも１つの第２ステージに関連する少なくとも１つの第２レプリカクリティカルパスであって、前記複数のモジュールは、前記第１ステージ及び前記少なくとも１つの第２ステージによるタスクの実行の開始と同時に前記第１レプリカクリティカルパス及び前記少なくとも１つの第２レプリカクリティカルパスに提供された入力信号に応じて、前記第１レプリカクリティカルパス及び前記少なくとも１つの第２レプリカクリティカルパスによって生成された出力信号に基づいて、前記第１ステージ及び前記少なくとも１つの第２ステージの完了ステータスを決定する、少なくとも１つの第２レプリカクリティカルパスと、をさらに備える、
請求項５の装置。
【請求項８】
異なる命令のタイプ、命令オペコード又は入力データの特性に関する推定完了時間を示す少なくとも１つのルックアップテーブル（２３５）であって、前記第１ステージ及び前記少なくとも１つの第２ステージの完了ステータスは、前記第１ステージ及び前記少なくとも１つの第２ステージによって実行されたタスクに関連する命令のタイプ、命令オペコード又は入力データの特性のうち少なくとも１つによって示される完了時間に基づいて決定される、少なくとも１つのルックアップテーブル（２３５）をさらに備える、
請求項１の装置。
【請求項９】
前記変更は、前記第１ステージ及び前記少なくとも１つの第２ステージ内の所定の位置で決定された部分的な完了ステータスに基づいて決定される、
請求項１の装置。
【請求項１０】
非同期パイプライン（１０５）の第１ステージ（１１２）の完了ステータスと、前記非同期パイプラインの少なくとも１つの第２ステージ（１１１）の少なくとも１つの完了ステータスと、を比較することと、
前記第１ステージの動作速度の変更を示す制御信号を前記第１ステージに提供すること（８２０）であって、前記変更は前記比較に基づいて決定される、ことと、を含む、
方法。
【請求項１１】
前記少なくとも１つの第２ステージは、前記第１ステージに対する入力データを生成する左側ステージ（１１１）と、前記第１ステージによって生成された出力データを受信する右側ステージ（１１３）と、のうち少なくとも１つを備える、
請求項１０の方法。
【請求項１２】
前記比較に基づいて、前記第１ステージに印加される動作電圧の変更を決定することをさらに含み、
前記制御信号を提供することは、前記第１ステージに印加される動作電圧の変更を示す制御信号を前記第１ステージに提供することを含む、
請求項１０の方法。
【請求項１３】
前記第１ステージの部分間で信号をドライブするための少なくとも１つのバッファによって使用される少なくとも１つのドライブ強度の少なくとも１つの変更を決定することであって、前記少なくとも１つのドライブ強度の少なくとも１つの変更は、前記比較に基づいて決定される、ことをさらに含み、
前記制御信号を提供することは、前記少なくとも１つのバッファの少なくとも１つのドライブ強度の少なくとも１つの変更を示す制御信号を提供することを含む、
請求項１０の方法。
【請求項１４】
前記第１ステージ及び前記少なくとも１つの第２ステージに関連する複数のモジュールを使用して、前記第１のスージ及び前記少なくとも１つの第２ステージの完了ステータスを決定することをさらに含む、
請求項１０の方法。
【請求項１５】
前記完了ステータスを決定することは、前記第１ステージ及び前記少なくとも１つの第２ステージによるタスクの実行の開始に応じて、前記第１ステージ及び前記少なくとも１つの第２ステージによって生成された出力信号を監視することを含む、
請求項１４の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（政府のライセンス権）
本発明は、エネルギー省（ＤＯＥ）により発注された主契約番号ＤＥ−ＡＣ５２−０７ＮＡ２７３４４、外注番号Ｂ６０９２０１の下で政府の支援を受けてなされた。政府は本発明において一定の権利を有する。
【背景技術】
【０００２】
処理システムは、通常、命令を処理する一連のステージを含むパイプラインアーキテクチャを実装する。各ステージは、入力データを演算して出力データを生成するタスクを実行する。データは、フリップフロップ又はラッチとして実装することができるレジスタによってステージ間で通信される。ステージは、入力レジスタからの入力データにアクセスし、出力データを出力レジスタに提供する。パイプラインのステージの入力レジスタは、パイプラインの前段のステージによって対応する出力レジスタに提供された出力データを、入力データとして受信することができ、当該ステージの出力レジスタは、後段のステージの入力データとすることができる。パイプライン内のステージは、場合によっては複数の入力データのセットを同時に演算する。例えば、単一命令複数データ（ＳＩＭＤ）演算を実施するパイプラインアーキテクチャは、「ウェーブ」又は「計算ウェーブ」と呼ばれる同一の命令複数入力データのセットを同時に実行することができる。ウェーブは、異なる入力データのセットに対応する複数のワークアイテムで構成されている。ワークアイテムの実行時間は、通常、入力データによって異なるため、各ウェーブのワークアイテムは、異なる時間に完了することがある。
【０００３】
添付図面を参照することによって、本開示は当業者により良く理解され、その多数の特徴及び利点が明らかになるであろう。異なる図面での同じ参照記号の使用は、類似又は同一のアイテムを示す。
【図面の簡単な説明】
【０００４】
【図１】いくつかの実施形態による、非同期パイプラインを含む処理システムのブロック図である。
【図２】いくつかの実施形態による、非同期パイプラインの一部のブロック図である。
【図３】いくつかの実施形態による、レプリカクリティカルパスを含む非同期パイプラインの一部のブロック図である。
【図４】いくつかの実施形態による、非同期パイプラインの一部のブロック図である。
【図５】いくつかの実施形態による、レプリカクリティカルパスにおいて中間完了ステータス検出を実施する非同期パイプラインの一部のブロック図である。
【図６】いくつかの実施形態による、中間完了ステータス検出を実施する非同期パイプラインの一部のブロック図である。
【図７】いくつかの実施形態による、並列処理を実施する非同期パイプラインの一部のブロック図である。
【図８】いくつかの実施形態による、非同期パイプライン内のステージの動作速度を変更する方法のフロー図である。
【発明を実施するための形態】
【０００５】
実行パイプラインのステージが同期的である場合であって、ステージ間のレジスタが同じクロック信号を使用してクロックされるか非同期である場合には、パイプラインの各ステージはセルフタイム式であり、これにより、異なるステージが、他のステージから独立して、入力データを読み出し、命令を実行し、出力データを書き込むことができる。何れの場合も、ステージは、当該ステージによって実行される演算のタイプ、当該ステージによって演算されるデータ、及び、当該ステージによって演算される一連のデータ値に応じた様々なレイテンシでタスクを完了する。他のステージよりも早くタスクを完了したステージは、他のステージの完了を待つ間アイドル状態に留まるため、パイプラインの全体的なスループットが低下し、アイドル状態のステージで消費される静的電力を浪費する。同期パイプラインのタイミングは、通常、同期パイプラインの動作周波数を最大限に高めようとするために、論理合成中の同期パイプラインの全ステージに亘るクリティカルパスのレイテンシ、及び、同期パイプラインのハードウェアの物理レイアウトに基づいて調整される。しかしながら、同期パイプラインは、通常、同期パイプラインの設計中に使用されるクリティカルパスのレイテンシとは異なるレイテンシを有する様々な異なる演算を実行する。その結果、同期パイプラインのパフォーマンスは、常に最適であるとは限らず、期待される程エネルギー効率が良いとは限らない。
【０００６】
非同期パイプラインのパフォーマンス及びエネルギー効率は、非同期パイプライン内の第１ステージの完了ステータスと、少なくとも１つの他の（第２）ステージの完了ステータスと、の比較に基づいて、非同期パイプラインの（第１）ステージの動作速度を変更することによって向上することができる。いくつかの実施形態では、非同期パイプラインの第１ステージの動作速度を変更することは、第１ステージ（若しくは、その一部）に印加される動作電圧を変更すること、又は、第１ステージ内の１つ以上のドライブバッファに印加されるバッファドライブ強度を変更することを含む。例えば、第１ステージの完了ステータスが「完了」に設定された場合には、第１ステージが入力データに対する演算を完了して、その出力データを生成したことを示す。同時に、第１ステージに入力データを提供する隣接ステージと、第１ステージからの出力データを受信する別の隣接ステージと、の完了ステータスが両方とも「処理中」に設定された場合には、両ステージが入力データに対する演算を完了していないことを示す。この場合、第１ステージに対するバッファドライブ強度又は電圧供給は、隣接ステージが処理を完了する間の第１ステージのエネルギーを節約するために減らすことができる。別の例では、第１ステージの完了ステータスが「処理中」である一方で、第１ステージに入力データを提供する隣接ステージと、第１ステージからの出力データを受信する別の隣接ステージと、の完了ステータスが両方とも「完了」である場合には、第１ステージによる処理を加速させてそのレイテンシを短縮し、第２ステージにおけるアイドル時間を短縮するために、第１ステージに対するバッファドライブ強度又は電圧供給を増大することができる。
【０００７】
第１ステージ及び第２ステージによる計算ウェーブの実行開始に応じて第１ステージ及び第２ステージによって生成される出力信号を監視することにより、第１ステージ及び第２ステージの完了ステータスを決定することができる。いくつかの変形例では、第１ステージ及び第２ステージの完了ステータスは、第１ステージ及び第２ステージにおける計算ウェーブの実行開始と同時に入力信号を第１ステージ及び第２ステージのレプリカクリティカルパスに適用し、次いで、レプリカクリティカルパスの出力において出力信号を検出したことに応じて第１ステージ及び第２ステージが完了したことを判別することによって、決定される。レプリカクリティカルパスは、ステージの回路シミュレーションに基づいて定義される。いくつかの実施形態では、ステージの完了ステータスは、ステージ又はステージの一部についての推定完了時間を示す。例えば、命令のタイプ（命令のオペコードによって示される）及び入力データの特性に基づいて完了時間の推定値を提供するルックアップテーブルを使用して、第１ステージ及び第２ステージの完了ステータスを決定することができる。他の実施形態では、ステージの完了ステータスは、ステージの論理クラウド内の監視信号、又は、アクティビティの出力信号に基づいて決定される。例えば、ステージからの全ての出力信号が暫く変わらない場合、当該ステージがタスクを完了した可能性がある。別の例では、ステージの論理クラウド内の所定の位置における１つ以上の信号が変わらない場合、ステージが特定の割合の演算（例えば、５０％の演算等）を完了した可能性がある。
【０００８】
図１は、いくつかの実施形態による、非同期パイプライン１０５を含む処理システム１００のブロック図である。本明細書で使用される「非同期パイプライン」という用語は、非同期パイプラインのステージが、処理システム１００内の非同期パイプラインの外部のエンティティによって使用されるグローバルクロック又はタイミング基準と同期しないクロック又はタイミング基準に従って動作することを示す。さらに、非同期パイプライン内の個々のステージは、必ずしも互いに同期しているとは限らず、場合によっては各々の内部クロックに従って動作することができる。非同期パイプライン内のステージは、「セルフタイム式」ステージと呼ばれることもある。よって、本明細書で説明するように、非同期パイプライン内のステージの動作速度は、非同期パイプライン内の他のステージの動作速度とは無関係に変動することができる。
【０００９】
非同期パイプライン１０５は、本明細書ではまとめて「ステージ１１０〜１１４」と呼ばれる複数のステージ１１０，１１１，１１２，１１３，１１４を含む。データは、フリップフロップ、ラッチ又は他の記憶装置を用いて実装することができるパイプラインレジスタ１２０，１２１，１２２，１２３，１２４，１２５（本明細書ではまとめて「レジスタ１２０〜１２５」と呼ばれる）を使用して、非同期パイプライン１０５内の様々な箇所に記憶される。図示した実施形態では、ステージ１１０は、フリップフロップとして実施することができるレジスタ１２０に記憶された入力データに対して論理演算を実行する。ステージ１１０は、ラッチとして実施することができるレジスタ１２１に記憶される出力データを生成する。ステージ１１１は、レジスタ１２１に記憶された入力データに対して乗算演算を実行し、ラッチとして実施することができるレジスタ１２２に記憶される出力データを生成する。ステージ１１２は、レジスタ１２２に記憶された入力データに対して加算演算を実行し、ラッチとして実施することができるレジスタ１２３に記憶される出力データを生成する。ステージ１１３は、レジスタ１２３に記憶された入力データに対して正規化演算を実行し、ラッチとして実施することができるレジスタ１２４に記憶される出力データを生成する。ステージ１１４は、レジスタ１２４に記憶された入力データに対して丸め演算を実行し、フリップフロップとして実施することができるレジスタ１２５に記憶される出力データを生成する。非同期パイプライン１０５には、５つのステージ及び対応する数のパイプラインレジスタが示されているが、非同期パイプライン１０５のいくつかの実施形態は、同じ又は異なる演算を実行するより多い又はより少ないステージとともに、より多い又はより少ないパイプラインレジスタを含む。
【００１０】
入力コントローラ１３０は、クロック信号１３１及び有効信号１３２を、レジスタ１２０及びモジュール１３５に提供する。クロック信号１３１は、データをレジスタ１２０に提供する同期ドメインで使用される外部クロック信号と同期している。よって、モジュール１３５は、例えば、同期ドメインからの信号をパイプライン１０５の非同期ドメインに変換することによって、同期ドメインと非同期パイプライン１０５との間の境界として機能する。モジュール１３５は、非同期パイプライン１０５が追加データを処理する準備ができているか否かを示すフィードバック１３３を提供する。例えば、フィードバック１３３は、論理１１０が追加データを処理する準備ができていることを示すことができ、次いで、入力コントローラ１３０によってレジスタ１２０にクロックされる。モジュール１４０は、非同期パイプライン１０５から出力される信号を制御するために使用される。モジュール１４０のいくつかの実施形態は、非同期パイプライン１０５の非同期ドメインと、処理システム１００内の同期ドメインと、の間の境界として機能する。例えば、モジュール１４０は、有効データがレジスタ１２５にクロックされる準備ができていることを示す有効信号１４１を提供することができる。また、モジュール１４０及びレジスタ１２５は、同期ドメインで使用される外部クロック信号に同期しているクロック信号１４５を受信することができる。
【００１１】
モジュール１５０，１５１，１５２（本明細書ではまとめて「モジュール１５０〜１５２」と呼ばれる）は、モジュール１３５，１４０と共に動作して、ステージ１１０〜１１４の動作を調整する。例えば、モジュール１５０は、ステージ１１１の完了ステータスを示す完了ステータス信号１５５をステージ１１１から受信し、レジスタ１２１に記憶された入力データに対するタスクの実行がステージ１１１によって開始されたことを示す開始信号１５６をモジュール１３５から受信する。モジュール１５０は、次のステージ１１２が次のデータセットに対するタスクの実行を開始する準備ができていることを示すフィードバック１５７と、ステージ１１１によって提供されるデータのレジスタ１２２へのラッチを制御するラッチ制御信号１５８と、レジスタ１２２からのデータへのステージ１１２によるアクセスと、を提供する。また、モジュール１５０は、レジスタ１２２に記憶されたデータを演算するタスクの実行を開始し、実行が開始されたことを後続のモジュール１５１に示す開始信号１５９を提供する。説明を明確にするために、モジュール１３５，１４０，１５１，１５２は、対応する信号（対応する参照番号によって示されていない）を提供し受信する。
【００１２】
ステージコントローラ１６１，１６２，１６３，１６４（本明細書ではまとめて「ステージコントローラ１６１〜１６４」と呼ばれる）は、非同期パイプライン１０５内のステージ１１１〜１１４の動作を制御するために使用される。ステージコントローラ１６２のいくつかの実施形態は、ステージ１１１の完了ステータス情報を示すためにモジュール１５０によって提供されることを示す信号１６５と、ステージ１１３の完了ステータス情報を示すためにモジュール１５１によって提供される信号１６６と、に基づいて、ステージ１１２を制御するように構成されている。ステージコントローラ１６２は、ステージ１１２の動作速度を設定又は変更するために使用される制御信号１６７を提供する。ステージコントローラ１６２は、ステージ１１１の完了ステータス、ステージ１１２の完了ステータス、ステージ１１３の完了ステータス、又は、これらの組み合わせに基づいて、ステージ１１２の動作速度（又は、その変更）を決定する。本明細書で説明するように、ステージコントローラ１６１，１６３，１６４は、１つ以上の他のステージの完了ステータスに基づいて、対応するステージ１１１，１１３，１１４の動作速度を制御することができる。説明を明確にするために、ステージ１１１，１１３，１１４によって提供又は受信される全ての対応する信号伝達を示す参照番号は、提供されていない。
【００１３】
いくつかの実施形態では、ステージ１１１〜１１４の動作速度は、ステージ１１１〜１１４に実装される１つ以上のバッファのドライブ強度、ステージ１１１〜１１４の動作電圧、又は、これらの組み合わせによって決定される。例えば、ステージコントローラ１６２は、表１に従って、ステージ１１１〜１１３の完了ステータスに基づいて、ステージ１１２の動作速度に対する変更を決定することができる。
【表１】
2019521454.tif 000003
【００１４】
表１の完了ステータスは、対応するステージが現在のタスクを実行中（処理中）であること、又は、対応ステージが現在のタスクの実行を完了しており（完了）、これにより新たなタスクの実行を受け付ける準備ができていることを示す。動作速度は、エネルギーを節約するため又はステージ１１２による処理を加速するために変更することができる。例えば、ステージ１１１の完了ステータスが処理中であり、ステージ１１２の完了ステータスが完了であり、ステージ１１３の完了ステータスが処理中である場合、ステージコントローラ１６２は、ステージ１１２によるエネルギー消費を低減するために、ステージ１１２に提供されるバッファドライブ強度及び電圧供給を減少させる。別の例では、ステージ１１１の完了ステータスが完了であり、ステージ１１２の完了ステータスが処理中であり、ステージ１１３の完了ステータスが完了である場合、ステージコントローラ１６２は、ステージ１１２による処理を加速させるために、ステージ１１２に提供されるバッファドライブ強度及び電圧供給を増大させる。本明細書で説明するように、表１のいくつかの実施形態は、ルックアップテーブルに記憶することができる。
【００１５】
ステージ１１１〜１１４への電圧供給を変更することは、ステージ１１１〜１１４内の全てのロジックの動作速度に影響を与える。しかしながら、本明細書で説明するように、いくつかの実施形態では、ステージ１１１〜１１４の一部又は領域に供給される電圧は、別々の一部又は領域の動作速度を制御するために、ステージ１１１〜１１４の他の一部又は領域とは別に変更される。ステージ１１１〜１１４内のバッファのドライブ強度を変更することは、バッファの上流にあるステージ１１１〜１１４の一部又は領域に影響を与える。例えば、各ステージ１１１〜１１４の始め、中間、終わりにおけるバッファのドライブ強度を変更することは、ステージ１１１〜１１４の対応する部分におけるパスの動作速度を変更するために使用することができる。ルーティング遅延を制御するために、構成可能な駆動バッファを、ステージ１１１〜１１４のロジック内の長い配線上に配置することもできる。バッファのドライブ強度を増大させることは、通常、ステージ１１１〜１１４内のパスに沿った信号の伝播時間を短縮させ、これにより、パスに沿った計算時間を短縮させることができる。いくつかの実施形態では、相互接続ロジックを供給するために、別個の電圧源を使用して信号伝播速度が制御される。別個の電圧源は、ステージ１１１〜１１４内のロジックの他の部分に供給するのに使用される他の電圧源とは無関係に制御される。いくつかの変形例では、きめ細かい電圧制御（例えば、１ナノ秒程度の短い電圧状態間遷移時間で１０ミリボルト（ｍＶ）ステップ）で電圧を変更することができる。ステージ１１１〜１１４のロジックの一部の電力ゲーティング又は電圧制御のために、フットトランジスタを使用することができる。
【００１６】
処理システム１００のいくつかの実施形態は、入力コントローラ１３０又はステージコントローラ１６１〜１６４に接続されたパイプラインコントローラ１７０を含む。パイプラインコントローラ１７０は、パイプラインステージ１１０〜１１４の完了時間を決定する。ステージコントローラ１６１〜１６４は、非同期パイプライン１０５の全体の完了時間に基づいて、対応するステージ１１０〜１１４の完了時間を調整しようと試みることができる。本明細書で説明するように、調整には、ステージ１１０〜１１４のロジックコーンにおける供給電圧の変更及びバッファのドライブ強度の変更が含まれる。例えば、パイプラインコントローラ１７０は、コンピュータユニットによって実施される非同期の単一命令複数データ（ＳＩＭＤ）パイプラインのレーンにおける命令の非同期実行を制御することができる。コンピュータユニット内の他の回路又はパイプラインは、同期的に動作し、専用バッファを介して非同期ＳＩＭＤパイプラインと通信することができる。パイプラインコントローラ１７０は、非同期ＳＩＭＤパイプラインの複数のレーンに亘る単一命令の実行の進行を監視して、タスク完了の速度を（複雑さを最小限に抑えるためにおそらく最後のパイプラインステージ１１４において）再調整することによって、レーンの相違（すなわち、ウェーブ内の全てのＳＩＭＤレーンに亘る命令の完了時間の差異）を排除するのをサポートすることができ、これにより、全てのレーンが同じ命令に対するタスクをほぼ同時に完了する。パイプラインコントローラ１７０を使用してレーンの相違を制御することによって、（ａ）ＳＩＭＤパイプライン内を進むコンシューマ命令にデータをバイパスするロジック、及び、（Ｂ）同期ドメイン内のＶＲＦに結果を書き戻すロジックを単純化することができる。いくつかの変形例では、個々のステージコントローラ１６１〜１６４は、より短い全体時間で命令の実行を完了することによって、タイミングを改善し、エネルギー消費を減らすことを試みる。
【００１７】
図２は、いくつかの実施形態による、非同期パイプラインの一部２００のブロック図である。一部２００は、入力レジスタ２１０からの入力データにアクセスし、出力データを出力レジスタ２１５に提供するステージ２０５を含む。一部２００は、図１に示す非同期パイプライン１０５のいくつかの実施形態において使用される。いくつかの変形例では、入力レジスタ２１０及び出力レジスタ２１５は、図１に示すレジスタ１２１〜１２４のうち１つ以上のレジスタを実装するために使用され、ステージ２０５は、図１に示すステージ１１０〜１１４のうち対応するステージを実装するために使用される。ステージ２０５は、ステージ２０５に割り当てられたタスクの一部を実行するためのロジックを実装するロジック領域２２０，２２１，２２２（本明細書ではまとめて「ロジック領域２２０〜２２２」と呼ばれる）を含む。ロジック領域２２０〜２２２は、一部２００内のロジックの上流領域に駆動電流を提供するバッファ２２５，２２６，２２７（本明細書ではまとめて「バッファ２２５〜２２７」と呼ばれる）を含む相互接続ネットワークによって接続されている。バッファ２２５〜２２７は、バッファ２２５〜２２７によって受信された制御信号に基づいて決定された可変ドライブ強度で動作することができる構成可能なバッファである。
【００１８】
また、一部２００は、非同期パイプライン内の他のステージ（図示省略）の完了ステータスに基づいてステージ２０５（又は、その一部）の動作速度を設定又は変更することができるステージコントローラ２３０を含む。いくつかの変形例では、ステージコントローラ２３０は、図１に示すステージコントローラ１６１〜１６４の何れかに対応する。ステージコントローラ２３０のいくつかの実施形態は、ステージ２０５の動作電圧を変更して、ステージ２０５の動作速度を変更する。ステージ２０５全体に印加される動作電圧を変更して、ロジック領域２２０〜２２２の動作速度を変更することができ、又は、ロジック領域２２０〜２２２に印加される動作電圧を個別に変更して、ロジック領域２２０〜２２２のうち１つ以上のロジック領域の１つ以上の動作速度を変更することができる。ステージコントローラ２３０のいくつかの実施形態は、バッファ２２５〜２２７のうち１つ以上のバッファのドライブ強度を変更して、対応するバッファ２２５〜２２７の下流にあるロジックの動作速度を変更する。例えば、ステージコントローラ２３０は、バッファ２２５のドライブ強度を変更して、ロジック領域２２２及びロジック領域２２１等の下流ロジックの動作速度を変更することができる。
【００１９】
一部２００のいくつかの実施形態は、ステージコントローラ２３０に組み込まれるか、ステージコントローラ２３０がアクセス可能なメモリに記憶されるルックアップテーブル（ＬＵＴ）２３５を含む。ルックアップテーブル２３５は、ステージ２０５によって実行可能な異なるタイプの命令の完了時間の推定値を含むエントリを含む。例えば、ルックアップテーブル２３５内の各エントリは、命令オペコード、命令タイプ、入力データ値等によってインデックスされる完了時間の推定値を含む。いくつかの変形例では、完了時間の推定値は、ステージ２０５の対象となる回路シミュレーション又はランダムな回路シミュレーションを使用して決定される。次に、ステージコントローラ２３０は、ステージ２０５によって実行されている命令のオペコード若しくはタイプ、又は、命令によって演算されているデータの値（例えば、入力レジスタ２１０に記憶されたデータの値）に基づいて、ステージ２０５の完了ステータスを推定することができる。例えば、ステージコントローラ２３０は、ステージ２０５が命令を含むタスクを実行開始する開始時間を示す信号を、モジュール（例えば、図１に示すモジュール１３５，１４０，１５０〜１５２の何れか等）から受信することができる。ステージコントローラ２３０は、現在の時間と、ルックアップテーブル２３５内のエントリに基づいて決定された推定完了時間を開始時間に加えた時間と、を比較することによって、ステージ２０５の完了ステータスを推定する。ステージコントローラ２３０のいくつかの実施形態は、ルックアップテーブル２３５に記憶された情報に基づいて、他のステージ（入力データを入力レジスタ２１０に提供するステージ、又は、出力レジスタ２１５からの出力データにアクセスするステージ等）の完了時間を推定する。
【００２０】
図３は、いくつかの実施形態による、レプリカクリティカルパスを含む非同期パイプラインの一部３００のブロック図である。一部３００は、入力レジスタ３１０からの入力データにアクセスし、出力データを出力レジスタ３１５に提供するステージ３０５を含む。一部３００は、図１に示す非同期パイプライン１０５のいくつかの実施形態において使用される。いくつかの変形形態では、入力レジスタ３１０及び出力レジスタ３１５は、図１に示すレジスタ１２１〜１２４のうち１つ以上のレジスタを実装するために使用され、ステージ３０５は、図１に示すステージ１１０〜１１４のうち対応するステージを実装するために使用される。
【００２１】
ステージ３０５は、ステージ３０５内の１つ以上のクリティカルパスのタイミングを複製するように構成されたロジックを含むレプリカクリティカルパス３２０に関連しており、これにより、ステージ３０５内のクリティカルパスが入力データの処理を完了するのに必要な時間に対応する時間間隔の後に、レプリカクリティカルパス３２０が入力データの処理を完了する。例えば、レプリカクリティカルパス３２０は、ステージ３０５のクリティカルパスに沿って実装されたゲートの数と一致する数のゲートを含むことができる。また、レプリカクリティカルパス３２０は、ステージ３０５のクリティカルパスに沿うゲートのファンイン及びファンアウト値と一致するように構成することができる。レプリカクリティカルパス３２０のいくつかの実施形態は、ステージ３０５内のクリティカルパスのロジックと必ずしも同一ではないロジックを含む。代わりに、レプリカクリティカルパス３２０のロジックは、レプリカクリティカルパス３２０に沿った信号のフローの監視を容易にするために、入力信号がレプリカクリティカルパス３２０のゲートを通ると入力信号の値が変わるように構成されている。レプリカクリティカルパス３２０と実際のクリティカルパスとの間のレイテンシは、回路シミュレーションを用いて決定することができる。
【００２２】
また、一部３００は、ステージ３０５の完了ステータスを推定するのに使用される信号を提供及び受信するモジュール３２５，３３０を含む。モジュール３２５，３３０は、図１に示すモジュール１２０，１２５，１５０〜１５２のいくつかの実施形態を実装するために使用される。モジュール３２５のいくつかの実施形態は、入力データの処理をレプリカクリティカルパス３２０に開始させるための開始信号３３５を提供する。開始信号３３５は、ステージ３０５が入力レジスタ３１０に記憶された入力データの処理を開始するのに使用される開始信号と同時に提供される。モジュール３３０は、開始信号３３５に応じてレプリカクリティカルパス３２０によって生成される出力信号３４０を監視して、レプリカクリティカルパス３２０の完了ステータスを決定する。いくつかの変形例では、モジュール３３０は、出力信号３４０の特定のパターンを検出することによって、又は、レプリカクリティカルパス３２０に関連する出力レジスタに記憶されたデータが定常状態に達したと判別することによって、レプリカクリティカルパス３２０が入力データに対する演算を完了したと判別する。レプリカクリティカルパス３２０に関してモジュール３３０が決定した完了時間にレイテンシを加算又は減算して、ステージ３０５の推定完了時間と実際の完了時間との差を補償することができる。
【００２３】
図４は、いくつかの実施形態による、非同期パイプラインの一部４００のブロック図である。一部４００は、入力レジスタ４１０からの入力データにアクセスし、出力データを出力レジスタ４１５に提供するステージ４０５を含む。一部４００は、図１に示す非同期パイプライン１０５のいくつかの実施形態において使用される。いくつかの変形例では、入力レジスタ４１０及び出力レジスタ４１５は、図１に示すレジスタ１２１〜１２４のうち１つ以上のレジスタを実装するために使用され、ステージ４０５は、図１に示すステージ１１０〜１１４のうち対応するステージを実装するために使用される。
【００２４】
ステータスモジュール４２０は、ステージ４０５によって提供された出力信号を監視するように構成されている。ステータスモジュール４２０は、出力信号の特性を使用してステージ４０５の完了ステータスを決定する。例えば、ステータスモジュール４２０は、ステージ４０５によって生成された出力信号の変化を監視することができる。ステータスモジュール４２０は、出力信号の値が変化している場合に、ステージ４０５が現在のタスクを処理していると判別する。いくつかの変形例では、ステータスモジュール４２０は、出力信号の値が定常状態である又は閾値未満のレートで変化している場合に、ステージ４０５が現在のタスクの処理を完了したと判別する。
【００２５】
また、一部４００は、ステージ４０５の完了ステータスを推定するのに使用される信号を提供及び受信するモジュール４２５，４３０を含む。モジュール４２５，４３０は、図１に示すモジュール１２０，１２５，１５０〜１５２のいくつかの実施形態を実装するために使用される。モジュール４２５のいくつかの実施形態は、ステージ４０５が入力レジスタ４１０に記憶された入力データを使用してタスクの処理を開始したことを示す開始信号４３５を、ステータスモジュール４２０に提供する。開始信号４３５は、ステージ４０５が入力レジスタ４１０に記憶された入力データの処理を開始するのに使用される開始信号と同時に提供される。上述したように、モジュール４３０は、開始信号４３５に応じてステージ４０５によって生成された出力信号の監視を開始して、ステージ４０５の完了ステータスを決定する。ステータスモジュール４２０は、ステージ４０５の完了ステータスを示す信号をモジュール４３０に提供する。例えば、ステータスモジュール４２０は、ステージ４０５の完了ステータスが「処理中」である間に論理ロー信号を論理モジュール４３０にアサートし、次に、ステージ４０５の完了ステータスが「完了」に移行したことに応じて、論理ハイ信号をモジュール４３０にアサートすることができる。
【００２６】
図５は、いくつかの実施形態による、レプリカクリティカルパスにおいて中間完了ステータス検出を実施する非同期パイプラインの一部５００のブロック図である。一部５００は、入力レジスタ５１０からの入力データにアクセスし、出力データを出力レジスタ５１５に提供するステージ５０５を含む。一部５００は、図１に示す非同期パイプライン１０５のいくつかの実施形態において使用される。いくつかの変形例では、入力レジスタ５１０及び出力レジスタ５１５は、図１に示すレジスタ１２１〜１２４のうち１つ以上のレジスタを実装するために使用され、ステージ５０５は、図１に示すステージ１１０〜１１４のうち対応するステージを実装するために使用される。
【００２７】
ステージ５０５は、ステージ５０５内の１つ以上のクリティカルパスのタイミングを複製するように構成されたロジックを含むレプリカクリティカルパス５２０に関連しており、これにより、レプリカクリティカルパス５２０は、ステージ５０５内のクリティカルパスが入力データの処理を完了するのに必要な時間に対応する時間間隔の後に入力データの処理を完了する。レプリカクリティカルパス５２０は、図３に示すレプリカクリティカルパス３２０といくつかの特徴を共有する。しかしながら、レプリカクリティカルパス５２０は、レプリカクリティカルパス５２０の始めと終わりの間の位置での中間完了ステータスを決定するのに使用されるロジック５２５（レジスタ、フリップフロップ、ラッチ又は他の回路等）を含むことから、レプリカクリティカルパス３２０とは異なる。例えば、ロジック５２５は、レプリカクリティカルパス５２０における処理の実行中の時点でレプリカクリティカルパス５２０によって生成された結果を記憶するレジスタを含むことができる。
【００２８】
また、一部５００は、ステージ５０５の完了ステータスを推定するのに使用される信号を提供及び受信するモジュール５３０，５３５を含む。モジュール５３０，５３５は、図１に示すモジュール１２０，１２５，１５０〜１５２のいくつかの実施形態を実装するために使用することができる。モジュール５３０のいくつかの実施形態は、入力データの処理をレプリカクリティカルパス５２０に開始させるための開始信号５４０を提供する。開始信号５４０もロジック５２５に提供される。開始信号５４０は、ステージ５０５が入力レジスタ５１０に記憶された入力データの処理を開始するのに使用される開始信号と同時に提供される。ロジック５２５は、例えば、レプリカクリティカルパス５２０によってロジック５２５で生成された信号の特性を監視することによって、開始信号５４０に応じて、レプリカクリティカルパス５２０の中間完了ステータスを決定することができる。例えば、ロジック５２５は、ロジック５２５が受信した信号の特定パターンを検出することによって、又は、ロジック５２５に関連するレジスタに記憶されたデータが定常状態に達したと判別することによって、レプリカクリティカルパス５２０が入力データに対する演算を完了したと判別することができる。ロジック５２５は、レプリカクリティカルパス５２０の中間完了ステータスを示す信号をモジュール５３５に提供することができる。本明細書で説明するように、ステージ５０５の推定中間完了時間と実際の中間完了時間との差を補償するために、レプリカクリティカルパス５２０に関してロジック５２５が決定した中間完了時間に対してレイテンシを加算又は減算することができる。
【００２９】
中間完了ステータスは、ステージ５０５の一部の動作速度を変更するためにステージコントローラ（ステージコントローラ１６１〜１６４等）によって使用される。例えば、ステージコントローラは、ロジック５２５によって生成された完了ステータスを使用して、ロジック５２５に先行するステージ５０５の一部（例えばロジック５２５の上流にある回路）、又は、ロジック５２５の後続のステージ５０５の一部（例えばロジック５２５の下流にある回路）の動作速度を変更することができる。図５には単一のロジック５２５が示されているが、レプリカクリティカルパス５２０のいくつかの実施形態は、レプリカクリティカルパス５２０内の異なる場所に配置することができる追加の完了ステータスロジックを含む。さらに、いくつかの実施形態では、レプリカクリティカルパス５２０の１つ以上の中間完了ステータスを検出するロジックは、図３に示すモジュール３３０に実装されるロジック等のように、レプリカクリティカルパス５２０の全体の完了ステータスを検出するロジックと組み合わされる。
【００３０】
図６は、いくつかの実施形態による、中間完了ステータス検出を実施する非同期パイプラインの一部６００のブロック図である。一部６００は、入力レジスタ６１０からの入力データにアクセスし、出力データを出力レジスタ６１５に提供するステージ６０５を含む。一部６００は、図１に示す非同期パイプライン１０５のいくつかの実施形態において使用される。いくつかの変形例では、入力レジスタ６１０及び出力レジスタ６１５は、図１に示すレジスタ１２１〜１２４のうち１つ以上のレジスタを実装するために使用され、ステージ６０５は、図１に示すステージ１１０〜１１４のうち対応するステージを実装するために使用される。
【００３１】
ステージ６０５は、ステージ６０５に割り当てられたタスクの一部を実行する回路の領域６２０と、ステージ６０５に割り当てられたタスクの別の部分を実行する回路の領域６２５と、を含む。レジスタ６３０のセットが領域６２０，６２５の間に実装されている。レジスタ６３０は、領域６２０によって実行された処理の結果を記憶し、ステージ６０５における追加の処理のために結果を領域６２５に提供するように構成されている。レジスタ６３０は、領域６２０によってレジスタ６３０に提供される出力信号を監視するように構成されたステータスモニタ６３５に接続されている。ステータスモジュール６３５は、レジスタ６３０に記憶された値の特性を使用して、領域６２０の完了ステータスを決定する。例えば、ステータスモジュール６３５は、領域６２０によって生成された出力信号の変化を監視し、レジスタ６３０に記憶された出力信号の値が変化している場合に、領域６２０が現在のタスクを処理中であると判別することができる。また、ステータスモジュール６３５のいくつかの変形例は、レジスタ６３０に記憶された値が定常状態である又は閾値未満の速度で変化している場合に、領域６２０が現在のタスクの処理を完了したと判別することができる。
【００３２】
また、一部６００は、ステージ６０５の中間完了ステータスを推定するのに使用される信号を提供及び受信するモジュール６４０，６４５を含む。モジュール６４０，６４５は、図１に示すモジュール１２０，１２５，１５０〜１５２のいくつかの実施形態を実装するために使用される。モジュール６４０のいくつかの実施形態は、ステージ６０５が入力レジスタ６１０に記憶された入力データを使用してタスクの処理を開始したことを示す開始信号６５０を、ステータスモジュール６３５に提供する。開始信号６５０は、ステージ６０５が入力レジスタ６１０に記憶された入力データの処理を開始するのに使用される開始信号と同時に提供される。上述したように、ステータスモジュール６３５は、開始信号６５０に応じてレジスタ６３０に提供された出力信号の監視を開始し、領域６２０の完了ステータスを決定する。次に、ステータスモジュール６３５は、領域６２０の完了ステータスを示す信号６５５をモジュール６４５に提供する。例えば、ステータスモジュール６３５は、領域６２０の完了ステータスが「処理中」である間に論理ロー信号をモジュール６４５にアサートし、次に、領域６２０の完了ステータスが「完了」に移行したことに応じて論理ハイ信号をモジュール６４５にアサートすることができる。
【００３３】
中間完了ステータスは、ステージ６０５の領域６２０，６２５の動作速度を変更するためにステージコントローラ（図１に示すステージコントローラ１６１〜１６４等）によって使用される。例えば、ステージコントローラは、ステータスモジュール６３５によって生成された完了ステータスを使用して、領域６２０，領域６２５又はこれらの組み合わせの動作速度を変更することができる。図６にはレジスタ６３０の単一のセット及び単一のステータスモジュール６３５が示されているが、一部６００のいくつかの実施形態は、ステージ６０５内の異なる場所に配置された追加の完了ステータスロジックを含む。さらに、いくつかの実施形態では、領域６２０，６２５の１つ以上の中間完了ステータスを検出するロジックは、図４に示すモジュール４２０内で実装されるロジック等のように、ステージ６０５の全体の完了ステータスを検出するロジックと組み合わされる。
【００３４】
図７は、いくつかの実施形態による、並列処理を実施する非同期パイプラインの一部７００のブロック図である。一部７００は、比較的高いレート又は速度でタスクを完了する高速ステージ７０５と、比較的低いレート又は速度でタスクを完了する低速ステージ７１０と、を含む。一部７００は、図１に示す非同期パイプライン１０５のいくつかの実施形態において実装される。いくつかの変形例では、図１に示すステージ１１０〜１１４の各々は、並列に動作している複数のステージを表す。例えば、ステージ１１１は、異なる入力データに対する乗算演算を並列に実行するように構成された少なくとも一対のステージを表す。１つのステージは、比較的高いレート又は速度でタスクを完了することができ、１つの他のステージは、比較的低いレート又は速度でタスクを完了することができる。
【００３５】
非同期パイプラインは、フォーク７１５で並列ステージ７０５，７１０の実行を開始し、並列ステージ７０５，７１０の演算結果がジョイン７２０で組み合わされる。並列分岐は、並列ステージ７０５，７１０によるタスクの実行が両方とも完了するまでジョイン７２０を完了することができない。したがって、１つ以上のステージコントローラ（図１に示すステージコントローラ１６１〜１６４等）は、ステージ７０５，７１０の動作を、これらの完了ステータスに基づいて調整する。例えば、ステージコントローラは、比較的速いステージ７０５の動作速度を下げること、比較的遅いステージ７１０の動作速度を上げること、又は、これらの変更の組み合わせを実行することができ、これにより、両ステージ７０５，７１０は、並列ステージ７０５，７１０の目標完了時間とほぼ等しい時間に完了する。
【００３６】
図８は、いくつかの実施形態による、非同期パイプライン内のステージの動作速度を変更する方法８００のフロー図である。方法８００は、図１に示す処理システム１００のいくつかの実施形態において実施される。ステージは、左側の隣接ステージによって生成された入力データを受信し、右側の隣接ステージに入力データとして提供される出力データを生成する。ステージのいくつかの実施形態は、図１に示すステージ１１２に対応する。この場合、左側の隣接ステージは図１に示すステージ１１１に対応し、右側の隣接ステージはステージ１１３に対応する。
【００３７】
ブロック８０５において、ステージコントローラ（図１に示すテージコントローラ１６２等）は、ステージの完了ステータスを示す情報にアクセスする。完了ステータスは、ステージが実行中のタスクを未だ完了していないことを示す情報を含むことができ、この場合、ステージの完了ステータスは「処理中」である。また、完了ステータスは、ステージがタスクを完了したことを示す情報を含むことができ、この場合、ステージの完了ステータスは「完了」である。さらに、完了ステータスは、本明細書で説明するように、ステージの一部又は領域に関連する中間完了ステータスを示す情報を含むことができる。
【００３８】
ブロック８１０において、ステージコントローラは、左側の隣接ステージの完了ステータスを示す情報にアクセスする。完了ステータスは、左側の隣接ステージが実行中のタスクを未だ完了していないことを示す情報を含むことができ、この場合、左側の隣接ステージの完了ステータスは「処理中」である。また、完了ステータスは、左側の隣接ステージがタスクを完了したことを示す情報を含むことができ、この場合、左側の隣接ステージの完了ステータスは「完了」である。さらに、完了ステータスは、本明細書で説明するように、左側の隣接ステージの一部又は領域に関連する中間完了ステータスを示す情報を含むことができる。ステージのいくつかの実施形態は、非同期パイプラインの左側の隣接ステージに関連付けられていない。例えば、図１に示すステージ１１０は、左側の隣接ステージに関連付けられておらず、この場合、ブロック８１０をバイパスすることができる。
【００３９】
ブロック８１５において、ステージコントローラは、右側の隣接ステージの完了ステータスを示す情報にアクセスする。完了ステータスは、右側の隣接ステージが実行中のタスクを未だ完了していないことを示す情報を含むことができ、この場合、右側の隣接ステージの完了ステータスは「処理中」である。また、完了ステータスは、右側の隣接ステージがタスクを完了したことを示す情報を含むことができ、この場合、右側の隣接ステージの完了ステータスは「完了」である。さらに、完了ステータスは、本明細書で説明するように、右側の隣接ステージの一部又は領域に関連する中間完了ステータスを示す情報を含むことができる。ステージのいくつかの実施形態は、非同期パイプラインの右側の隣接ステージに関連付けられていない。例えば、図１に示すステージ１１４は、右側の隣接ステージに関連付けられておらず、この場合、ブロック８１５をバイパスすることができる。
【００４０】
ブロック８２０において、ステージコントローラは、ステージの完了ステータスと、左側の隣接ステージの完了ステータス（利用可能な場合）と、右側の隣接ステージの完了ステータス（利用可能な場合）と、に基づいて、ステージの動作速度を変更する。本明細書で説明するように、ステージ又はステージの一部に印加されるバッファドライブ強度又は電圧を変更することによって、動作速度を変更することができる。
【００４１】
いくつかの実施形態では、図１〜図８を参照して上述した非同期パイプライン等の上述した装置及び技術は、１つ以上の集積回路（ＩＣ）デバイス（集積回路パッケージ又はマイクロチップとも呼ばれる）を備えるシステムで実施される。これらのＩＣデバイスの設計及び製造には、通常、電子設計自動化（ＥＤＡ）及びコンピュータ支援設計（ＣＡＤ）ソフトウェアツールが使用される。これらの設計ツールは、通常、１つ以上のソフトウェアプログラムとして表される。１つ以上のソフトウェアプログラムは、回路を製造するための製造システムを設計又は適合するための処理の少なくとも一部を実行するように１つ以上のＩＣデバイスの回路を表すコードで動作するようにコンピュータシステムを操作する、コンピュータシステムによって実行可能なコードを含む。このコードは、命令、データ、又は、命令及びデータの組み合わせを含むことができる。設計ツール又は製造ツールを表すソフトウェア命令は、通常、コンピューティングシステムがアクセス可能なコンピュータ可読記憶媒体に記憶される。同様に、ＩＣデバイスの設計又は製造の１つ以上のフェーズを表すコードは、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体に記憶されてもよく、同じコンピュータ可読記憶媒体又は異なるコンピュータ可読記憶媒体からアクセスされてもよい。
【００４２】
コンピュータ可読記憶媒体は、命令及び／又はデータをコンピュータシステムに提供するために、使用中にコンピュータシステムによってアクセス可能な任意の記憶媒体、又は、記憶媒体の組み合わせを含むことができる。かかる記憶媒体には、限定されないが、光媒体（例えば、コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、ブルーレイ（登録商標）ディスク）、磁気媒体（例えば、フロッピー（登録商標）ディスク、磁気テープ、磁気ハードドライブ）、揮発性メモリ（例えば、ランダムアクセスメモリ（ＲＡＭ）、キャッシュ）、不揮発性メモリ（例えば、読み出し専用メモリ（ＲＯＭ）、フラッシュメモリ）、又は、微小電気機械システム（ＭＥＭＳ）ベースの記憶媒体が含まれ得る。コンピュータ可読記憶媒体は、コンピュータシステム（例えば、システムＲＡＭ又はＲＯＭ）に内蔵されてもよいし、コンピュータシステム（例えば、磁気ハードドライブ）に固定的に取り付けられてもよいし、コンピュータシステム（例えば、光学ディスク又はユニバーサルシリアルバス（ＵＳＢ）ベースのフラッシュメモリ）に着脱可能に取り付けられてもよいし、有線又は無線のネットワークを介してコンピュータシステム（例えば、ネットワークアクセス可能なストレージ（ＮＡＳ））に接続されてもよい。
【００４３】
いくつかの実施形態では、上記の技術のいくつかの態様は、ソフトウェアを実行する処理システムの１つ以上のプロセッサによって実装されてもよい。ソフトウェアは、非一時的なコンピュータ可読記憶媒体に記憶され、又は、非一時的なコンピュータ可読記憶媒体上で有形に具現化された実行可能命令の１つ以上のセットを含む。ソフトウェアは、１つ以上のプロセッサによって実行されると、上記の技術の１つ以上の態様を実行するように１つ以上のプロセッサを操作する命令及び特定のデータを含むことができる。非一時的なコンピュータ可読記憶媒体は、例えば、磁気若しくは光ディスク記憶デバイス、例えばフラッシュメモリ等のソリッドステート記憶デバイス、キャッシュ、ランダムアクセスメモリ（ＲＡＭ）、又は、他の不揮発性メモリデバイス等を含むことができる。非一時的なコンピュータ可読記憶媒体に記憶された実行可能命令は、ソースコード、アセンブリ言語コード、オブジェクトコード、又は、１つ以上のプロセッサによって解釈若しくは実行可能な他の命令フォーマットであってもよい。
【００４４】
上述したものに加えて、概要説明において説明した全てのアクティビティ又は要素が必要とされているわけではなく、特定のアクティビティ又はデバイスの一部が必要とされない場合があり、１つ以上のさらなるアクティビティが実行される場合があり、１つ以上のさらなる要素が含まれる場合があることに留意されたい。さらに、アクティビティが列挙された順序は、必ずしもそれらが実行される順序ではない。また、概念は、特定の実施形態を参照して説明された。しかしながら、当業者であれば、特許請求の範囲に記載されているような本発明の範囲から逸脱することなく、様々な変更及び変形を行うことができるのを理解するであろう。したがって、明細書及び図面は、限定的な意味ではなく例示的な意味で考慮されるべきであり、これらの変更形態の全ては、本発明の範囲内に含まれることが意図される。
【００４５】
利益、他の利点及び問題に対する解決手段を、特定の実施形態に関して上述した。しかし、利益、利点、問題に対する解決手段、及び、何かしらの利益、利点若しくは解決手段が発生又は顕在化する可能性のある特徴は、何れか若しくは全ての請求項に重要な、必須の、又は、不可欠な特徴と解釈されない。さらに、開示された発明は、本明細書の教示の利益を有する当業者には明らかな方法であって、異なっているが同様の方法で修正され実施され得ることから、上述した特定の実施形態は例示にすぎない。添付の特許請求の範囲に記載されている以外に本明細書に示されている構成又は設計の詳細については限定がない。したがって、上述した特定の実施形態は、変更又は修正されてもよく、かかる変更形態の全ては、開示された発明の範囲内にあると考えられることが明らかである。したがって、ここで要求される保護は、添付の特許請求の範囲に記載されている。
【図１】
2019521454.tif 000004
【図２】
2019521454.tif 000005
【図３】
2019521454.tif 000006
【図４】
2019521454.tif 000007
【図５】
2019521454.tif 000008
【図６】
2019521454.tif 000009
【図７】
2019521454.tif 000010
【図８】
2019521454.tif 000011
【国際調査報告】
2019521454.tif 000012
2019521454.tif 000013