(57)【要約】      （修正有）【課題】スケーラブル計算ファブリックを提供する方法及び装置が提供する。【解決手段】スケーラブル計算ファブリックによって処理するためのワークフローを決定することを含む。ワークフローは、命令セットに基づく。パイプラインは、ワークフローを処理するために動的に構成され、ワークフローは、パイプラインを用いて実行される。【選択図】図５
2017194974.tif 000002
【特許請求の範囲】
【請求項１】
スケーラブル計算ファブリックによる処理のための、命令セットに基づくワークフローを決定するロジックと、
前記ワークフローの処理のために動的にパイプラインを構成するロジックと、
前記パイプラインを用いて前記ワークフローを実行するロジックと
を備える、スケーラブル計算ファブリックを提供する方法。
【請求項２】
前記パイプラインは、
複数の計算リソースを前記パイプラインに割り当て、
前記パイプラインのための複数のメモリリソース及びバス帯域幅を予約し、
前記パイプラインの前記ワークフローの使用をスケジューリングすることによって構成される、請求項１に記載の方法。
【請求項３】
前記パイプラインは、前記パイプラインを通して、複数の複数命令複数データ（ＭＩＭＤ）流を受け取り、かつ、前記複数のＭＩＭＤ流を順序付けるために、複数のソフトウェアアプリケーション又は他の接続された複数のシステムによって同時に使用されうる、請求項１又は２に記載の方法。
【請求項４】
多数のパイプラインが、同時に発生する複数の複数命令複数データ（ＭＩＭＤ）流を受け取り、前記多数のパイプラインは、共有のコンピューティング、メモリ、論理及び相互接続リソースにわたって処理可能である、請求項１又は２に記載の方法。
【請求項５】
前記パイプラインは、１又は複数の処理コアを有する、請求項１から４のいずれか一項に記載の方法。
【請求項６】
複数の処理コアの少なくとも１つは、ワークフローのサイズに応じてパワーオフにされる、請求項５に記載の方法。
【請求項７】
前記パイプラインの全て又は一部は、低電力状態又はより低いパフォーマンスのためのより低いクロックレートにパワーダウンされ、又は、より高いパフォーマンスのためのより高いクロックレートに設定される、請求項１から６のいずれか一項に記載の方法。
【請求項８】
より高い又はより低い電力及びパフォーマンスレートを達成するべく、電圧が、前記パイプラインにおいて調整される、請求項１から７のいずれか一項に記載の方法。
【請求項９】
少なくとも１つの処理コアは、ワークフローをサポートするためのパイプライン内への複数のリソースの動的構成に応じて、パワーオフにされる、請求項５に記載の方法。
【請求項１０】
前記パイプラインは、ＳＩＭＤ計算アレイを有する、請求項１から９のいずれか一項に記載の方法。
【請求項１１】
前記ＳＩＭＤ計算アレイは、高度ベクトル拡張（ＡＶＸ）（登録商標）単一命令複数データ（ＳＩＭＤ）ユニット又は動的に構成可能かつ共有可能な計算リソースにマージされる実行ユニット（ＥＵ）の少なくとも１又は複数を有する、請求項１０に記載の方法。
【請求項１２】
前記パイプラインは、動的に構成可能なファンクションを実行する、請求項１から１１のいずれか一項に記載の方法。
【請求項１３】
前記ワークフローを実行することは、画像処理、画像エンハンスメント、画像解析、コンピュータビジョン、拡張現実感、深度検出、ジェスチャー認識、顔認識、コンピュータゲーミング、コンピュータグラフィック、メディア処理、カメラ若しくはセンサ処理、カメラ処理、表示処理、画像変換、又はそれらの組み合わせを有する、請求項１から１２のいずれか一項に記載の方法。
【請求項１４】
前記提供されたスケーラブル計算ファブリックは、プリント環境に統合される、請求項１から１３のいずれか一項に記載の方法。
【請求項１５】
シーケンサと、
処理コア、ロジックブロック、入出力デバイス、入出力チャネル、バス、ディスプレイデバイス、及びメモリリソースを有する複数の論理処理要素と
を備え、
前記シーケンサは、画像パイプライン内のデータ及び複数のコマンドを制御しかつ順序付け、
前記シーケンサ、前記処理コア、前記ロジックブロック、前記入出力デバイス、前記入出力チャネル、前記バス、前記ディスプレイデバイス及び前記メモリリソースは、前記画像パイプラインを生成するように動的に構成可能なスケーラブル計算ファブリックを有し、
前記シーケンサは、キュー、共有メモリコマンド及びデータ領域のうちの１又は複数からの複数の複数命令複数データ（ＭＩＭＤ）流、又は、ネットワーク若しくは相互接続を超える通信プロトコルストリームを受け付ける、
スケーラブル計算ファブリックを有するコンピューティングデバイス。
【請求項１６】
前記スケーラブル計算ファブリックは、システムオンチップ（ＳＯＣ）を用いて実装される、請求項１５に記載のコンピューティングデバイス。
【請求項１７】
前記画像パイプラインは、動的に再構成可能である、請求項１５又は１６に記載のコンピューティングデバイス。
【請求項１８】
前記画像パイプラインは予め構成される、請求項１５から１７のいずれか一項に記載のコンピューティングデバイス。
【請求項１９】
前記複数の論理処理要素は、シーケンサによる使用のために予約される、又は、複数の処理グループ若しくは複数のパイプラインに割り当てられる、請求項１５から１８のいずれか一項に記載のコンピューティングデバイス。
【請求項２０】
前記複数の論理計算要素の少なくとも１又は複数は、ワークフロー若しくは計算アクティビティのサイズ、又は前記ワークフローの非アクティビティに応じて、パワーオフにされる、請求項１５から１９のいずれか一項に記載のコンピューティングデバイス。
【請求項２１】
前記スケーラブル計算ファブリックは、ＳＩＭＤ計算アレイを備え、
前記ＳＩＭＤ計算アレイは、
複数のＡＬＵを含む算術論理演算ユニット（ＡＬＵ）アレイと、
複数のレジスタを含むレジスタアレイと
を有する、請求項１５から２０のいずれか一項に記載のコンピューティングデバイス。
【請求項２２】
前記シーケンサは、複数の論理計算要素を予約しかつ制御し、それらを画像パイプラインのための競合管理、優先順位付け、実行仲裁、計算パイプラインに組み立てる、請求項１５から２１のいずれか一項に記載のコンピューティングデバイス。
【請求項２３】
前記スケーラブル計算ファブリックは、固定ファンクションハードウェアユニットを有する、請求項１５から２２のいずれか一項に記載のコンピューティングデバイス。
【請求項２４】
前記コンピューティングデバイスは、画像キャプチャデバイス又は画像表示デバイスである、請求項１５から２３のいずれか一項に記載のコンピューティングデバイス。
【請求項２５】
前記コンピューティングデバイスは、プリント環境に統合される、請求項１５から２４のいずれか一項に記載のコンピューティングデバイス。
【請求項２６】
スケーラブル計算ファブリックを処理するためのワークフローを決定し、前記ワークフローを処理するためのパイプラインを動的に構成し、前記パイプラインを用いて前記ワークフローを実行する、プリントオブジェクトモジュール
を備える、ワークロードを印刷するためのプリントデバイス。
【請求項２７】
前記ワークフローは、画像ワークロードである、請求項２６に記載のプリントデバイス。
【請求項２８】
前記ワークフローを処理することは、画像処理、画像エンハンスメント、画像解析、画像入力、画像変換、又はそれらの任意の組み合わせの少なくとも１又は複数を含む、請求項２６又は２７に記載のプリントデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
この開示は概して複数のコンピュータアーキテクチャに関する。より詳細には、本開示は、スケーラブル計算ファブリックに関する。
【背景技術】
【０００２】
現在の複数のコンピューティングシステムは、通常は、一般的な複数のユースケースのために設計されている。例えば、現在の複数のコンピューティングシステムは、様々な命令セットのために開発された少なくとも１つの中央処理装置（ＣＰＵ）を含む。また、いくつかのコンピューティングシステムは、グラフィックス処理ユニット（ＧＰＵ）を含んでよい。ＧＰＵは、一般的には、多量のデータブロックの並列処理によって恩恵を受ける複数のグラフィックスワークロードを処理することに特化されている。複数のＣＰＵ及び複数のＧＰＵの両方とも、算術論理演算ユニット（ＡＬＵ）と称される場合がある、算術及び論理演算を実行する専用の回路を含む。複数のＣＰＵ及び複数のＧＰＵの両方の複数の処理コアは、サイズが固定され、それぞれのプロセッサの複数の他のコアと同一である。さらに、現在の複数のＣＰＵ及び複数のＧＰＵの複数の処理コアは、使用されないときでさえ、パワーがオンにされる。
【図面の簡単な説明】
【０００３】
以下の詳細な説明は、開示された主題の多数のオブジェクト及び特徴の具体的な例を含む添付の複数の図面を参照することによって、よりよく理解され得る。
【図１】複数の実施形態に従って使用され得るコンピューティングデバイスのブロック図である。
【図２】本願発明の複数の実施形態に係る、代表的なＣＰＵ、ＧＰＵ及び共通ファブリックにマージされる固定ファンクションハードウェアの複数のコンポーネントを示すスケーラブル計算ファブリックの図である。
【図３】複数の実施形態に係る、ＳＩＭＤ処理ユニットを示す図である。
【図４】複数の実施形態に係る、ＭＩＭＤシーケンサパイプラインコントローラを示す図である。
【図５】複数の実施形態に係る、スケーラブル計算ファブリックを提供する方法音処理フロー図である。
【図６】本願発明の複数の実施形態に係る、スケーラブル計算ファブリックの図である。
【発明を実施するための形態】
【０００４】
上述したように、システム内の複数の計算要素又は複数の計算リソースは、固定された態様で接続され、特別な複数の処理パイプライン及び複数のワークフロー要求をサポートするために再構成されることができない、ＣＰＵ、ＧＰＵ、複数の入出力（Ｉ／Ｏ）コントローラ、複数のＩ／Ｏバス、複数のメモリデバイス、及び他の複数の専用論理ブロックのような、様々なコンポーネントを含む。さらに、様々な計算要素は、アクティブが維持され、使用されていないときでさえ、パワーオンされた状態であり得る。複数の本技術の複数の実施形態は、必要に応じて複数の計算要素が使用可能であり、複数の計算要素間の複数の入出力接続及び複数のバスを超えて複数の特殊目的パイプラインを割り当てるために動的に構成可能であるスケーラブル計算ファブリックを提供する。このようにして、複数のワークフローが、パフォーマンス及び電力が、適切によりよい電力及びパフォーマンスのターゲットに調整されることを可能とする動的な方法でサポートされる。その上、複数の実施形態は、複数の計算要素又は複数の計算リソースが、特定のワークロード及び同時に発生する多数のワークロードをサービスするべく動的に再構成され得るスケーラブル計算ファブリックを提供する。さらに、複数の計算要素は、使用されていないときに、パワーオフにされてよい。スケーラブル計算ファブリックは、実行時に、それぞれが、キュー、共有メモリコマンド及びデータ領域のうちの１又は複数を含む、又は、ネットワーク又は相互接続を超えた通信プロトコルストリームを介する、一実施形態における複数の方法を用いてスケーラブル計算ファブリック内に供給される複数命令複数データ（ＭＩＭＤ）流を許可する方法で制御されかつ順序付けられる、多数のパイプライン内に動的に構成される。
【０００５】
本明細書で使用される「アクティブ」は、電力を消費しかつ「オン」である状態を示し、一方、「非アクティブ」は、電力を発生せずかつ「オフ」である状態を示す又は低電力状態に設定することを示す。低電力状態は、アクティブ状態と比較して低くてよい。スケーラブル計算アレイを用いて実装され得る複数の計算アプリケーションは、これらに限定されるものではないが、画像処理、画像プリント、画像表示、信号処理、コンピュータグラフィック、メディア及びオーディオ処理、データマイニング、ビデオ分析及び数値処理を含む。
【０００６】
以下の説明及び複数の請求項において、「結合」及び「接続」という用語と、その派生物とが、使用されてよい。理解されるべきことは、これらの複数の用語は、互いの類義語として意図されるものではない。むしろ、複数の特定の実施形態では、「接続」は、２つ又はそれより多くの要素が、互いに直接物理的に又は電気的に接触することを示すために用いられてもよい。「結合」は、２つ又はそれより多くの要素が、直接物理的に又は電気的に接触することを意味してもよい。しかしながら、「結合」は、２つ又はそれより多くの要素が、互いに直接接触しないものの、互いに連動又は連携することをさらに意味してもよい。いくつかの実施形態が、ハードウェア、ファームウェア、及びソフトウェアのうちの１つ又はその組み合わせにおいて実装されてよい。いくつかの実施形態はまた、本明細書中に記載された複数のオペレーションを実行するべくコンピューティングプラットホームによって読み出されかつ実行されうる、機械可読媒体に格納された複数の命令として実装されてよい。機械可読媒体は、例えばコンピュータのような機械によって読み出し可能な形で、情報を格納又は送信するための任意のメカニズムを含んでよい。例えば、機械可読媒体は、とりわけ、リードオンリーメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスを含んでよい。
【０００７】
一実施形態は、実装又は例である。明細書における「一実施形態」、「１つの実施形態」、「いくつかの実施形態」、「様々な実施形態」又は「複数の他の実施形態」に対する参照は、複数の実施形態に関連して記載された特定の機能、構造又は特徴が、本発明の、少なくともいくつかの実施形態に含まれることを意味するが、全ての実施形態に含まれることは必ずしも意味しない。「一実施形態」、「１つの実施形態」、又は「幾つかの実施形態」の種々の出現は、必ずしも同一の実施形態を参照しているわけではない。一実施形態からの複数の要素又は態様は、別の実施形態の複数の要素又は態様と組み合わされ得る。
【０００８】
本明細書中での説明及び示される全てのコンポーネント、特徴、構造、特性等は、特定の実施形態又は特定の複数の実施形態に含まれなくてもよい。コンポーネント、特徴、構造又は特性が含まれ「てもよい」、含まれる「場合がある」、含まれ「得る」、含まれ「得た」と本明細書で述べた場合には、例えば、特定のコンポーネント、特徴、構造又は特性は含まれることを要求されない。明細書又は特許請求の範囲で、「ある」要素と参照した場合には、要素が１つだけ存在することを意味しない。明細書又は特許請求の範囲で、「ある追加の」要素と参照した場合には、追加の要素が１つより多い場合を排除していない。
【０００９】
いくつかの実施形態が複数の特定の実装を参照して記載されているけれども、いくつかの実施形態によれば他の複数の実装があり得ることが留意される。その上、本明細書中で記載された及び／又は複数の図面に示された複数の回路要素又は複数の他の特徴の配置及び／又は順序は、記載されかつ示された特定の方法で配置される必要はない。その他の多くの構成が、いくつかの実施形態に従って考えられる。
【００１０】
図に示される各システムにおいて、場合によって、複数の要素は、表される複数の要素が、異なる及び／又は類似してよいことを示すべく、それぞれ同一の参照番号を有するか又は異なる参照番号を有してよい。しかしながら、要素は、異なる実装を有し、且つ、図示した又はここに記載したシステムの幾つか又は全てと協働できるほど十分に柔軟であってもよい。図に示した様々な要素は、同一のものであってもよく、異なるものであってもよい。どちらを第１の要素として称し、どちらを第２の要素として称するかは任意的なものである。図１は、複数の実施形態に従って用いられ得るコンピューティングデバイス１００のブロック図である。コンピューティングデバイス１００は、例えば、とりわけ、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、又はサーバであってよい。コンピューティングデバイス１００は、格納された複数の命令を実行するように構成されたスケーラブル計算ファブリック１０２と、スケーラブル計算ファブリック１０２によって実行可能な複数の命令を格納するメモリデバイス１０４とを含んでよい。いくつかの実施形態において、アプリケーションプログラミングインタフェース（ＡＰＩ）が、実行時にスケーラブル計算ファブリックを構成するために使用されてよい。その上、いくつかの実施形態において、スケーラブル計算ファブリックは、ブート時間に列挙されてよい。このようにして、コンピューティングデバイスは、スケーラブル計算ファブリックの複数のハードウェア能力を認識できる。
【００１１】
メモリデバイス１０４は、スケーラブル計算ファブリック１０２のコンポーネントであってよい。スケーラブル計算ファブリック１０２は、バス１０６によってメモリデバイス１０４に結合されてよく、中央処理装置（ＣＰＵ）によって従来から実行される任意のオペレーションを実行するように構成されてよい。さらに、スケーラブル計算ファブリック１０２は、グラフィックス処理ユニット（ＧＰＵ）によって従来から実行される任意の数のグラフィックスオペレーションを実行するように構成されてよい。例えば、スケーラブル計算ファブリック１０２は、複数のグラフィックス画像、複数のグラフィックスフレーム、複数のビデオ、又は同様のものを、コンピューティングデバイス１００のユーザに対して表示されるように、レンダリングする又は操るように構成されてよい。
【００１２】
スケーラブル計算ファブリック１０２は、これらに限定されるものではないが、様々なパイプライン内に動的に構成され、かつ、再構成され得るいくつかの処理リソースを含んでよい。パイプラインは、特定の処理タスクを実行するべくグループ化されたリソース又は計算要素のセットである。パイプラインは、動的に構成可能なファンクションを実行してよい。スケーラブル計算ファブリック１０２の複数のパイプラインは、複数の命令のサイズ及びタイプに基づいて、実行時に複数の命令のセットを実行するように構成されてよい。複数の実施形態において、アプリケーションプログラミングインタフェース（ＡＰＩ）は、特定の命令のセットのための処理パイプラインを構成するために、実行時に呼び出されてよい。例えば、ＡＰＩは、６４ビット幅命令の実行時に、６４ビット幅命令を処理する５つのＳＩＭＤ処理ユニットの作成を特定してよい。ＡＰＩはまた、スケーラブル計算ファブリック１０２に対する帯域幅を特定してよい。複数の実施形態において、スケーラブル計算ファブリック１０２は、スケーラブル計算ファブリック１０２内の複数の処理パイプラインと共に動的に構成されかつ再構成され得る高速の相互接続を実装する。その上、高速の相互接続は、コンピューティングデバイス１００の複数の計算リソース又は計算要素を接続するバスであってよい。スケーラブル計算ファブリック１０２の複数のパイプラインはまた、基本入出力システム（ＢＩＯＳ）を用いて事前に構成されてよい。例えば、コンピューティングデバイス１００に電源が投入されたとき、起動プロシージャの間動作するＢＩＯＳは、スケーラブル計算ファブリック１０２の様々なコンポーネントを含む、スケーラブル計算ファブリック１０２を識別できる。ＢＩＯＳは、その後、スケーラブル計算ファブリック１０２の複数のパイプラインを事前構成できる。複数の実施形態において、複数のパイプラインは、事前構成の後に必要に応じて再構成され得る。
【００１３】
スケーラブル計算ファブリックは、実行時に多数のパイプライン内に動的に構成され、各パイプラインは、複数のスケーラブルコンピュータファブリックパイプラインに供給される複数命令複数データ（ＭＩＭＤ）流を斟酌する共有の態様で、制御され、かつ、順序付けられる。一実施形態では、複数のＭＩＭＤコマンドデータ流が、キュー、共有メモリコマンド及びデータ領域、相互接続バス、ネットワーク若しくは相互接続を超える通信プロトコルストリームの１又は複数を含むがこれらに限定はされない１又は複数の方法、又は類似した方法を用いて、スケーラブル計算ファブリック内に供給されてよい。その上、複数のパイプラインの動的構成は、複数のパイプラインを構成する複数のコマンドを受け付ける１又は複数のＭＩＭＤシーケンサ又はコントローラと、複数のＭＩＭＤシーケンサが、計算、相互接続、メモリ及び複数の固定ファンクションロジックブロックのためにパイプライン化された複数のリソース内に供給する多数のソフトウェアアプリケーション又は多数の接続されたシステムからの、特定のタスクを実行するべく複数のパイプライン内に動的に構成されるデータとを含む。従って、複数のパイプラインは、１又は複数のソフトウェアアプリケーション又は接続されたシステムによって使用され得る複数の共有リソースである。
【００１４】
スケーラブル計算ファブリック１０２内には、１又は複数のＡＬＵアレイ及び１又は複数のレジスタアレイが存在してよい。複数のＡＬＵアレイは、レジスタアレイ内に格納されたデータの算術及び論理演算を実行するために使用されてよい。レジスタアレイは、複数のＡＬＵに対する入力として使用されるデータを格納するために使用され得る特殊目的メモリであり、また、複数のＡＬＵのオペレーションからの結果として生じるデータを格納してよい。データは、メモリデバイス１０４と複数のレジスタとの間で伝達されてよい。メモリデバイス１０４は、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、フラッシュメモリ、又は任意の他の適切なメモリシステムを含むことができる。例えば、メモリデバイス１０４は、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）を含んでよい。
【００１５】
コンピューティングデバイス１００は、イメージキャプチャメカニズム１０８を含む。複数の実施形態において、イメージキャプチャメカニズム１０８は、カメラ、立体カメラ、赤外線センサ、又は同様のものである。その上、イメージキャプチャメカニズム１０８は、ＵＳＢケーブルを用いてコンピューティングデバイス１００と結合されるユニバーサルシリアルバス（ＵＳＢ）カメラであってよい。イメージキャプチャメカニズム１０８は、画像情報をキャプチャするために使用される。複数の実施形態において、イメージキャプチャメカニズムは、Ｍｏｂｉｌｅ Ｉｎｄｕｓｔｒｙ Ｐｒｏｃｅｓｓｏｒ Ｉｎｔｅｒｆａｃｅ（ＭＩＰＩ）カメラシリアルインタフェース（ＣＳＩ）アライアンスによる仕様書に従って発展されたインタフェースを用いて、スケーラブル計算ファブリック１０２とインタフェースするカメラデバイスであってよい。例えば、カメラシリアルインタフェースは、ＭＩＰＩ  ＣＳＩ−１インタフェース、ＭＩＰＩ  ＣＳＩ−２インタフェース、又はＭＩＰＩ  ＣＳＩ−３インタフェースであってよい。そして、カメラシリアルインタフェースは、現在開発されている又は将来開発される任意のカメラシリアルインタフェースであってよい。複数の実施形態において、カメラシリアルインタフェースは、データ及びクロック信号の一方向の差動シリアルインタフェースであるデータ伝送インタフェースを含んでよい。その上、スケーラブル計算ファブリックを有するカメラインタフェースはまた、現在開発されている又は将来開発される任意のカメラパラレルインタフェース（ＣＰＩ）であってよい。複数の実施形態において、スケーラブル計算ファブリック１０２は、複数の画像オペレーションのためのＳＩＭＤ処理ユニットとして構成される。スケーラブル計算ファブリック１０２は、ワークロードからの複数の入力ＳＩＭＤ命令として取得し、複数の命令に基づいて複数のオペレーションを並列に実行できる。例えば、イメージキャプチャメカニズム１０８は、処理対象の複数の画像をキャプチャするために使用されてよい。画像処理ワークロードは、ＳＩＭＤ命令セットを含んでよく、スケーラブル計算ファブリック１０２は、その命令セットを処理するために使用されてよい。
【００１６】
スケーラブル計算ファブリック１０２は、バス１０６を通じて、コンピューティングデバイス１００を１又は複数の入出力（Ｉ／Ｏ）デバイス１１４に接続するように構成されたＩ／Ｏデバイスインタフェース１１２に接続されてよい。Ｉ／Ｏデバイス１１４は、例えば、キーボード及びポインティングデバイスを含んでよい。ポインティングデバイスは、とりわけ、タッチパッド又はタッチスクリーンを含んでよい。複数のＩ／Ｏデバイス１１４は、コンピューティングデバイス１００のビルトインコンポーネントであるか、又は、コンピューティングデバイス１００の外部から接続される複数のデバイスであってもよい。
【００１７】
スケーラブル計算ファブリック１０２はまた、バス１０６を通じて、コンピューティングデバイス１００をディスプレイデバイス１１８に接続するように構成された複数のディスプレイインターフェース１１６にリンクされてよい。複数のディスプレイデバイス１１８は、コンピューティングデバイス１００のビルトインコンポーネントであるディスプレイ画面を含んでよい。ディスプレイデバイス１１８はまた、とりわけ、コンピュータモニタ、テレビ、又はプロジェクタを含んでよく、コンピューティングデバイス１００に外部から接続される。
【００１８】
コンピューティングデバイス１００はまた、ストレージデバイス１２０を含む。ストレージデバイス１２０は、ハードドライブ、光学式ドライブ、サムドライブ、ドライブアレイ、又はそれらの任意の組み合わせのような、物理メモリである。ストレージデバイス１２０はまた、リモート記憶ドライブを含んでよい。ストレージデバイス１２０は、コンピューティングデバイス１００上で動作するように構成された任意の数のアプリケーション１２２を含む。アプリケーション１２２は、スケーラブル計算ファブリックを実装するために使用されてよい。その上、アプリケーション１２２の複数の命令セットは、これに限定されないが、超長命令語（ＶＬＩＷ）及び複数の単一命令複数データ（ＳＩＭＤ）命令を含んでよい。複数の命令セットは、スケーラブル計算ファブリック１０２を用いて処理されてよい。コンピューティングデバイス１００はまた、ネットワークインタフェースコントローラ（ＮＩＣ）１２４を含んでよい。ＮＩＣ１２４は、コンピューティングデバイス１００を、バス１０６を介してネットワーク１２６に接続するように構成されてよい。ネットワーク１２６は、とりわけ、ワイドエリアネットワーク（ＷＡＮ）、ローカルエリアネットワーク（ＬＡＮ）、又はインターネットであってよい。
【００１９】
複数の実施形態において、スケーラブル計算ファブリックは、処理された画像ワークロードからプリントエンジン１２８に対して、結果としての画像を送信できる。プリントエンジン１２８は、結果としての画像ワークロードをプリントデバイス１３０に対して送信できる。プリントデバイス１３０は、複数のプリンタ、複数のファックスマシン、及びプリントオブジェクトモジュール１３２を用いて結果としての画像を印刷できる他のプリントデバイスを含むことができる。複数の実施形態において、プリントエンジン１２８は、ネットワーク１２６を通じて、データをプリントデバイス１３０に対して送信してよい。その上、複数の実施形態において、プリントデバイス１３０は、プリントデバイス１３０を用いて複数のワークロードを処理するために使用され得る別のスケーラブル計算ファブリック１３４を含んでよい。
【００２０】
図１のブロック図は、コンピューティングシステム１００が図１に示す全てのコンポーネントを含むものであることを示すことを意図していないことを理解されたい。むしろ、コンピューティングシステム１００は、より少ない、又は、図１に示されていない追加のコンポーネント（例えば、複数のセンサ、複数の電力管理集積回路、追加のネットワークインターフェース等）を含むことができる。
【００２１】
図２は、本願発明の複数の実施形態に係る、典型的なＣＰＵ、ＧＰＵ、及び共通のファブリックにマージされる固定ファンクションハードウェアを示すスケーラブル計算ファブリック２００の図である。スケーラブル計算ファブリック２００は、例えば、スケーラブル計算ファブリック１０２（図１）であってよい。スケーラブル計算ファブリック２００はまた、プリントデバイス１３０（図１）のような、プリントデバイスのコンポーネントであるスケーラブル計算ファブリック１３４であってよい。
【００２２】
スケーラブル計算ファブリック２００は、既存のマシンコードが、特定のマシンコードに対応する複数のコア上で動作することを可能にする。このように、ＣＰＵを用いて実行され得るマシンコードは、スケーラブル計算ファブリック２００を用いて実行されてよい。その上、ＧＰＵを用いて実行され得るマシンコードは、スケーラブル計算ファブリック２００を用いて実行されてよい。
【００２３】
したがって、スケーラブル計算ファブリック２００は、特定のマシンコード２０２を実行可能な複数の単一命令単一データ（ＳＩＳＤ）処理コア２０４を制御するために使用されるマシンコード２０２を含む。複数の実施形態において、複数の処理コアは、複数のインテル（登録商標）アーキテクチャ（ＩＡ）ＣＰＵコア又はハイパースレッドであってよい。複数の処理コア２０４は、マシンコード２０２によって特定された、ネイティブなデータタイプ、命令、レジスタ、アドレス指定モード、メモリアーキテクチャ、及び割り込み処理を実行してよい。また、スケーラブル計算ファブリック２００内に含まれるものは、単一命令複数データ（ＳＩＭＤ）及び単一命令単一スレッドマシンコード２０６である。ＳＩＭＤ／ＳＩＳＴマシンコード２０６は、１又は複数のＳＩＭＤ処理ユニット２０８に命令するために使用されてよい。複数の実施形態において、複数のＳＩＭＤ処理ユニット２０８は、インテル（登録商標）高度ベクトル拡張（ＡＶＸ）及びスタンドアローンリソースにマージされた複数の実行ユニット（ＥＵ）を含む。複数のＳＩＭＤ処理ユニットはまた、ＳＩＭＤ計算アレイと称される場合がある。ＳＩＭＤ処理ユニット２０８はさらに、図３に関して説明されてよい。
【００２４】
スケーラブル計算ファブリック２００の各構成されたパイプラインは、プログラム可能な公正ポリシー及び様々な割り当てスキームを通じた実行プライオリティ並びに必要なバス帯域幅が保証される。固定ファンクションハードウェア２１０は、スケーラブル計算ファブリック２００内に表されてよい。例えば、固定ファンクションハードウェアは、グラフィックス、ディスプレイ、媒体、セキュリティ又は知覚の演算器であってよい。複数の実施形態において、固定ファンクションハードウェアは、スケーラブル計算ファブリックの複数のリソース又は計算要素を用いて実装されてよい。このように、固定ファンクションハードウェアは、より少ない消費電量又はより効率的な計算を有する他のハードウェアによって置換されてよい。スケーラブル計算ファブリック２００内の複数の固定ファンクションハードウェアユニットは、動的にロックされ、共有され、複数のパイプラインに割り当てられてよい。例えば、メディアワークロードを符号化することは、典型的には、とりわけ、動き予測を実行することを含む。２次元（２Ｄ）ビデオが符号化される場合、動き予測のサーチは、各フレームのための複数の動きベクトルを決定するために、ビデオの各フレーム上で実行されてよい。動き予測は、フレームのシーケンスにおける複数のオブジェクトの動きが、フレーム間のオブジェクトの予測された動きを表す複数のベクトルを取得するために分析される技術である。動き予測を通じて、符号化されたメディアファイルは、他のフレームの部分を含まない移動されたフレームの複数の部分を含み、それによって、メディアファイル内のスペースを節約し、かつ、メディアファイルの復号化の間の処理時間を節約する。フレームは、複数のマクロブロックに分割されてよく、複数の動きベクトルは、フレーム間のマクロブロックの位置における変化を表す。複数の動きベクトルは、メディア固定ファンクションユニットを含むスケーラブル計算ファブリック２００を使用して構成されたパイプラインによって決定されてよい。
【００２５】
複数のリングバス２１２は、複数の固定ファンクションハードウェアユニット間を接続するために含まれてよい。リングバッファ２１２は、組み立てられたパイプラインを通じてデータを伝達するために使用されてよい。
【００２６】
その上、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バス２１４及び入出力コントローラハブ（ＩＣＨ）バス２１６は、スケーラブル計算ファブリック２００の中への複数の入力を提供してよい。
【００２７】
しかしながら、複数の本技術は、本明細書において説明される複数の相互接続の方法に限定されず、複数の実施形態において、広い範囲の他の相互接続の方法が使用され得る。
【００２８】
複数命令複数データ（ＭＩＭＤ）パイプラインシーケンサ２１８は、入力された複数の命令に基づいて必要に応じて複数のパイプライン内に複数の処理コア２０４、複数のＳＩＭＤ処理ユニット２０８及び固定ファンクションハードウェア２１０を組み立てるために使用されてよい。複数の命令は、命令キュー２２０Ａから取得されてよい。その上、複数のＭＩＭＤシーケンサは、メモリ内の命令コントロールブロック２２０Ｂから、又は、ネットワーク若しくは相互接続２２０Ｃ上のプロトコルストリームから、複数のデータ及び制御コマンドを受け取ってよい。スケーラブル計算ファブリック２００内の複数のメモリリソースは、複数の動的に構成されたパイプラインを用いてロックされてよい。例えば、レベル２（Ｌ２）キャッシュ２２２及びレベル３（Ｌ３）キャッシュ２２４もまた、データを格納するべくスケーラブル計算ファブリック２００内に含まれてよい。
【００２９】
図３は、複数の実施形態に係る、複数のＳＩＭＤ処理ユニット２０８を示す図である。複数のＳＩＭＤ処理ユニット２０８は、高度ベクトル拡張（ＡＶＸ）単一命令複数データ（ＳＩＭＤ）ユニット又は動的に構成可能かつ共有可能な計算リソース内にマージされた実行ユニット（ＥＵ）の少なくとも１又は複数を含み得るＳＩＭＤ計算アレイ内であってよい。各ＳＩＭＤ処理ユニット２０８は、複数のＳＩＭＤ処理リソースのスライスである。換言すれば、各スライスは、独立したＳＩＭＤ処理ユニット２０８である。スライスは、複数のレーンのセット又はグルーピングを参照する。各レーンは、少なくとも１つの算術論理演算ユニット（ＡＬＵ）及び少なくとも１つのレジスタを含む。ＳＩＭＤ処理ユニット２０８は、ＡＬＵアレイ３０２及びレジスタアレイ３０４を含む。ＡＬＵアレイ３０２は、レジスタアレイ３０４内に格納されたデータの複数の算術及び論理演算を実行するために使用されてよい。レジスタアレイ３０４は、ＡＬＵアレイ３０２への入力として使用されるデータを格納するために使用されることができ、また、ＡＬＵアレイ３０２の演算からの結果としてのデータを格納する特殊目的メモリである。レジスタアレイ３０４は、機械の共有されたコンテキスト（ＣＴＸ）データ３０６を含む共有メモリのコンポーネントであってよい。共有されたＣＴＸデータ３０６は、複数のプログラムカウンタ、複数のレジスタ設定、複数のクロック周波数、複数の電圧レベル及び他の全ての機械状態データのような、機械コンテキスト関連データを格納してよい。
【００３０】
複数のＳＩＭＤ処理ユニット２０８のそれぞれは、処理されるワークロードのサイズ及びタイプに応じて、異なる幅になるように構成されてよい。このようにして、複数のＳＩＭＤ処理ユニットのそれぞれの幅は、コンピュータ上で動作するソフトウェアの各部分に基づいている。各ＳＩＭＤ処理ユニット２０８の幅は、各スライス内のレーンの数である。図３において、複数のＳＩＭＤ処理ユニット２０８は、４つのＡＬＵレーンを含むＳＩＭＤ  ４−ＡＬＵスライス３０８と、２つのレーンを含むＳＩＭＤ  ２−ＡＬＵスライス３１０と、４つのレーンを含むＳＩＭＤ  ４−ＡＬＵスライス３１２と、２つのレーンを含むＳＩＭＤ  ２−ＡＬＵスライス３１４と、４つのレーンを含むＳＩＭＤ  ４−ＡＬＵスライス３１６とを含む。図３に示すように、ＳＩＭＤ  ＡＬＵスライス３０８及びＳＩＭＤスライス３１４は、各ＳＩＭＤスライス上のパワーオンのステータス３２０Ａによってそれぞれ示されるように、両方とも電源が入っている。同様に、ＳＩＭＤ  ＡＬＵスライス３１０、ＳＩＭＤ  ＡＬＵスライス３１２及びＳＩＭＤ  ＡＬＵスライス３１６は、各ＳＩＭＤスライス上のパワーオフのステータス３２０Ｂによってそれぞれ示されるように、全て電源が入っていない。
【００３１】
複数の実施形態において、ＳＩＭＤ  ＡＬＵスライス３１０、ＳＩＭＤ  ＡＬＵスライス３１２及びＳＩＭＤ  ＡＬＵスライス３１６は、ＳＩＭＤ  ＡＬＵスライス３１０、ＳＩＭＤ  ＡＬＵスライス３１２及びＳＩＭＤ  ＡＬＵスライス内の複数のＡＬＵユニットが非アクティブになっていることの決定に応じて、全てパワーオフにされる。
【００３２】
非アクティビティは、複数のＡＬＵを監視するコントローラによって決定されてよい。複数のＡＬＵが、予め定められたクロックサイクル数よりも多くアイドルであった場合に、それらは、電源が切られうる。
【００３３】
その上、プログラムカウンタが、複数のＡＬＵを電源オフにしてよいかを決定するために使用されうる。
【００３４】
図４は、複数の実施形態に係る、複数のＭＩＭＤシーケンサパイプラインコントローラ２１８を示す図である。入力キュー２２０（図２）のような複数の入力キューからの情報が、ＭＩＭＤシーケンサパイプラインコントローラ２１８に対して入力される。ＭＩＭＤシーケンサパイプラインコントローラ２１８は、命令キュー２２０Ａ（図２）からの情報を取得し、その情報を、スケーラブル計算ファブリック内に形成された様々なパイプラインに対して送る。複数の実施形態において、複数のＭＩＭＤシーケンサは、メモリ内の複数の命令コントロールブロック２２０Ｂから、又は、ネットワーク若しくは相互接続２２０Ｃ上のプロトコルストリームから、データ及び複数の制御コマンドを受け付けてよい。
【００３５】
例えば、ＭＩＭＤシーケンサパイプラインコントローラ２１８Ａは、命令キューがフーリエ変換を計算することを含む複数の命令を有するときはいつでも、高速フーリエ変換（ＦＦＴ）モジュール４０２を予約してよい。複数のデジタル信号処理（ＤＳＰ）アプリケーションが、しばしば、ＦＦＴ処理コアの使用を含む。ＦＦＴモジュール４０２は、ハードウェア又はソフトウェアを使用して実装されてよい。ＦＦＴモジュール４０２によって使用されるデータは、メモリ１０４内のバッファ４０４Ａから検索されてよい。一旦処理されたら、そのデータは、メモリ内のバッファ４０４Ｂに対してライトバックされてよい。
【００３６】
そして、パイプラインは、ＭＩＭＤシーケンサパイプラインコントローラ２１８Ａによってコントロールされてよい。
【００３７】
ＭＩＭＤシーケンサパイプラインコントローラ２１８Ａと並列に、ＭＩＭＤシーケンサパイプラインコントローラ２１８Ｂが、画像処理のための別のパイプラインを構成するために使用されてよい。複数の入力キュー２２０Ａ（図２）のような命令キューは、ＭＩＭＤシーケンサパイプラインコントローラ２１８Ｂに、画像処理のための様々なモジュールを含むパイプラインを構成するべく命令してよい。その複数の命令に応じて、ＭＩＭＤシーケンサパイプラインコントローラ２１８Ｂは、畳み込み固定ファンクションハードウェアユニット４０６Ａ、モホロジー固定ファンクションハードウェアユニット４０６Ｂ、メディアパイプライン４０６Ｃ、ＳＩＭＤ処理ユニット４０６Ｄ、及びディスプレイモジュール４０６Ｅを予約してよい。ＳＩＭＤ処理ユニット４０６Ｄは、上述のように、ＳＩＭＤ処理ユニット２０８であってよい。複数の実施形態において、複数のＭＩＭＤシーケンサは、メモリ内の複数の命令コントロールブロック２２０Ｂから又はネットワーク若しくは相互接続２２０Ｃ上のプロトコルストリームから、データ及び複数の制御コマンドを受け付けてよい。
【００３８】
畳み込み固定ファンクションハードウェアユニット４０６Ａは、イメージキャプチャメカニズム１０８（図１）のようなイメージキャプチャメカニズムから画像データを受信してよい。イメージキャプチャメカニズムからの画像データの線形フィルタリングは、畳み込み固定ファンクションハードウェアユニット４０６Ａ及びモホロジー固定ファンクションハードウェアユニット４０６Ｂを使用して、発生してよい。畳み込み固定ファンクションハードウェアユニット４０６Ａからのデータは、メモリ１０４内のバッファ４０８Ａに書き込まれてよい。モホロジー固定ファンクションハードウェアユニット４０６Ｂは、バッファ４０８Ａからデータを取得してよい。メディアパイプライン４０６Ｃは、画像データを符号化するために使用されてよい。画像データは、メモリ１０４内のバッファ４０８Ｂから取得されてよい。メディアパイプライン４０６Ｃは、画像データを符号化する様々なハードウェア及びソフトウェアモジュールを実行する追加のパイプラインである。例えば、画像データを符号化するためのメディアパイプラインは、画像データ内の複数のフレームのマクロブロックタイプ及び複数の動きベクトルを決定するべく動き予測を実行することを含むことができる。その上、画像データを符号化することは、様々なビットレートを各フレームに適用することを含む。画像データが符号化されると、ターゲットのデータフォーマットに変換される。そのデータは、その後、メモリ１０４のバッファ４０８に書き込まれてよい。ＳＩＭＤ処理ユニット４０６Ｄは、メモリ１０４内のバッファ４０８Ｃからデータを取得してよい。特定のディスプレイのためにデータを最適化するような、追加の画像処理が、ＳＩＭＤ処理ユニット４０６Ｄによって実行されてよい。データはその後、メモリ１０４内のバッファ４０８Ｄに書き込まれてよい。ディスプレイモジュール４０６Ｅは、メモリ１０４内のバッファ４０８Ｄからデータを取得してよく、そのデータをディスプレイ上においてレンダリングしてよい。
【００３９】
画像データが、メモリ１０４内のバッファ４０８とパイプラインモジュール４０６との間を通過するときに、リングバッファ２１２は、そのデータをパイプラインモジュール４０６からバッファ４０８に通過させるために使用されてよい。その上、リングバッファ２１２は、バッファ４０８にアクセスすることなく、複数のパイプラインモジュール４０６の間でデータを伝達してよい。例えば、画像データは、典型的に、行ごとに処理される。畳み込み固定ファンクションハードウェアユニット４０６Ａは、画像データの行を処理してよく、それをリングバッファ２１２内に配置してよい。リングバッファは、さらなる処理のために、そのデータを、モホロジー固定ファンクションハードウェアユニット４０６Ｂに対して直接送信してよい。モホロジー固定ファンクションハードウェアユニット４０６Ｂが、畳み込み固定ファンクションハードウェアユニット４０６Ａによって送信された画像データを処理できないイベントにおいて、リングバッファ２１２は、モホロジー固定ファンクションハードウェアユニット４０６Ｂが画像データを処理できるまで、バッファ４０８Ａ内にデータを配置できる。
【００４０】
図５は、複数の実施形態に係る、スケーラブル計算ファブリックを提供する方法の処理フロー図である。ブロック５０２において、スケーラブル計算ファブリックによって処理されるワークフローが決定される。ワークフローは、ソフトウェアプログラムの命令セットに基づいてよい。複数の実施形態において、ワークフローが命令キューから取得されてよい。ブロック５０４において、パイプラインは、ワークフローを処理するために動的に構成されてよい。パイプラインは、処理コア、ＳＩＭＤ計算アレイ、又はそれらの任意の組み合わせを含んでよい。ＳＩＭＤ計算アレイは、１又は複数のＳＩＭＤ処理ユニットを含んでよい。複数の実施形態において、パイプラインは、複数の計算リソースをパイプラインに割り当て、パイプラインのためのバス帯域幅と複数のメモリリソースとを予約し、パイプラインのワークフローの使用をスケジューリングすることによって構成されてよい。その構成は、コントローラによって実行されてよい。複数の実施形態において、コントローラは、ＭＩＭＤシーケンサパイプラインコントローラである。その上、パイプラインは、１又は複数の処理コア及び１又は複数のＳＩＭＤ処理ユニットを含んでよい。少なくとも１つの処理コア又はＳＩＭＤ処理ユニットは、ワークフローのサイズに応じてパワーオフされてよい。その上、少なくとも１つの処理コア又はＳＩＭＤ処理ユニットは、ワークフローをサポートするためのパイプライン内への複数のリソースの動的構成に応じて、パワーオフされてよい。
【００４１】
ブロック５０６において、ワークフローは、パイプラインを使用することによって実行されてよい。複数の実施形態において、方法は、コンピューティングデバイスのパイプライン又はプリントデバイスのパイプラインを用いて実行されてよい。ワークフローを実行することは、画像処理、画像エンハンスメント、画像解析、コンピュータビジョン、拡張現実感、深度検出、ジェスチャー認識、顔認識、コンピュータゲーミング、コンピュータグラフィック、メディア処理、カメラ若しくはセンサ処理、カメラ処理、表示処理、画像変換、又はそれらの組み合わせを含んでよい。
【００４２】
図５の処理フロー図は、方法５００の複数のステップが、ある特定の順番で実行されるべきであること、又は、方法５００のすべてのステップがすべてのケースにおいて含まれるべきであることを示すことを意図していない。さらに、特定のアプリケーションに応じて、任意の数の追加のステップが方法５００内に含まれてもよい。例えば、プリントデバイス１３０は、スケーラブル計算ファブリックを使用して前に処理された画像をプリントしてよい。
【００４３】
図６は、本願発明の複数の実施形態に係る、スケーラブル計算ファブリック６００の図である。スケーラブル計算ファブリック６００は、例えば、スケーラブル計算ファブリック１０２（図１）である。スケーラブル計算ファブリック６００はまた、プリントデバイス１３０（図１）のようなプリントデバイスのコンポーネントであるスケーラブル計算ファブリック１３４であってよい。
【００４４】
Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バス２１４及び入出力コントローラハブ（ＩＣＨ）２１６は、スケーラブル計算ファブリック６００の入出力を提供してよい。スケーラブル計算ファブリック６００はまた、リングバッファ２１２Ａ、リングバッファ２１２Ｂ及びリングバッファ２１２Ｃを含む。リングバッファ２１２Ａは、ＰＣＩｅバス２１４及びＩＣＨ２１６が、データをＭＩＭＤシーケンサパイプラインコントローラ２１８、ＳＩＳＤ処理コア２０４、ＳＩＭＤ処理ユニット２０８、及び固定ファンクションハードウェア２１０に対して送信することを可能にする。その上、リングバッファ２１２Ｂは、複数の固定ファンクションハードウェアユニット２１０が、データをＬ３キャッシュ２２２に対して渡すことを可能にする。Ｌ３キャッシュ２２２のみが示されているけれども、任意の数のキャッシュがスケーラブル計算ファブリック内に存在してもよい。上述したように、リングバッファ２１２Ｂは、データが、一の固定ファンクションハードウェアユニットから別の固定ファンクションハードウェアユニットへと直接渡されることを可能とする。リングバッファ２１２Ｃは、データが、ＭＩＭＤシーケンサパイプラインコントローラ２１８、複数のＳＩＳＤ処理コア２０４、複数のＳＩＭＤ処理ユニット２０８及び固定ファンクションハードウェア２１０の間で直接渡されることを可能とする。３つのリングバッファが示されているけれども、スケーラブル計算ファブリックは、任意の数のリングバッファを含んでよい。さらに、複数のリングバッファは、命令キュー２２０Ａからの複数の命令のような、複数の命令に基づいて動的に構成され、再構成されてよい。複数のリングバッファはまた、メモリコントロールブロック２２０Ｂ又は通信プロトコル２２０Ｃからのデータに基づいて再構成されてよい。
【００４５】
複数の実施形態において、ＭＩＭＤシーケンサパイプラインコントローラは、プライオリティレベルを含んでよい。このように、第１ＭＩＭＤシーケンサパイプラインコントローラが第２ＭＩＭＤシーケンサパイプラインコントローラよりも高いプライオリティを有する場合であって、第２ＭＩＭＤシーケンサパイプラインコントローラが、第１ＭＩＭＤシーケンサパイプラインコントローラ使用することを望むリソース又は計算要素を使用する場合、第１ＭＩＭＤシーケンサパイプラインコントローラは、第２ＭＩＭＤシーケンサパイプラインコントローラを遮断することができる。加えて、複数のリソースが、複数のパイプラインの間で共有されてよく、ＭＩＭＤシーケンサは、複数のリソースを管理するためのプライオリティ、求められる帯域幅、パフォーマンス又は他のポリシーのような、プログラム可能なポリシーに基づいて、複数のパイプラインの間でリソース共有を仲裁する。複数の実施形態において、ＭＩＭＤシーケンサパイプラインコントローラは、複数のスケーラブル計算ファブリックリソースの使用を仲裁する。ＭＩＭＤシーケンサパイプラインコントローラはまた、データ及び複数の命令が、構成されたパイプラインに適合することを保証する。そして、多数のＭＩＭＤシーケンサパイプラインコントローラはスケーラブル計算ファブリックの複数のリソースの、仲裁、優先順位づけ、競合、及び管理を実行できる。
【００４６】
複数の実施形態において、スケーラブル計算ファブリックは、プリントデバイス１３０のようなプリントデバイスにおいて使用されてよい。例えば、プリントデバイスは、複数の文書をスキャンできるスキャニングモジュールを含んでよい。プリントデバイスは、スキャンされた複数の文書を、ＰＤＦファイルフォーマットのような、様々なファイルフォーマットにコンバートしてよい。プリントデバイスはまた、スキャンされた文書を拡張するために又はスキャンされた文書内の複数の画像を変換するために使用されてよい。そして、スケーラブル計算ファブリックを使用して、パイプラインは、プリンタに対して割り当てられた、スキャニング、ファイルフォーマット変換、エンハンスメント及び画像交換を含むがこれらに限定はされない様々なタスクを実行するように構成されることができる。その上、複数の実施形態において、スケーラブル計算ファブリックは、プリントのための複数のリソースを含むプリント環境に統合されてよい。スケーラブル計算ファブリックを含むコンピューティングデバイスはまた、プリント環境に統合されてよい。
【００４７】
本技術は、与えられた処理、データフローのために合理化され、最適化されることができるパイプラインを生成する。現在は、ＳＯＣアーキテクチャは、適切な方法において様々なワークロードを提供する一般的な目的において設計される。多くのリソース又は計算要素は、個別の動的な構成可能の使用のために利用可能ではない。例えば、現状の多くのＧＰＵ固定ファンクションハードウェア計算リソースは、個別の使用及び特定のパイプライン内の構成のために利用可能ではない。本技術を通して、各コンポーネント、リソース又は計算要素は、個別に利用可能であり、かつ、アクセス可能である。さらに、各コンポーネント、リソース又は計算要素は、処理される特定のワークロードに応じて動的に構成され又は再構成され得る。
【００４８】
［例１］
本明細書において提供されるスケーラブル計算ファブリックを提供する方法。ロジックが、スケーラブル計算ファブリックによる処理のためのワークフローを決定するべく提供される。ワークフローは、命令セットに基づく。ロジックは、ワークフローを処理するためのパイプラインを動的に構成するべく提供され、かつ、ロジックは、パイプラインを使用してワークフローを実行するべく提供される。パイプラインは、複数の計算リソースをパイプラインに割り当て、パイプラインのためのバス帯域幅及び複数のメモリリソースを予約し、かつ、パイプラインのワークフロー使用をスケジューリングすることによって構成されてよい。パイプラインは、複数のソフトウェアアプリケーション又は複数の他の接続されたシステムによって、複数命令複数データ（ＭＩＭＤ）流を受け取り、かつ、ＭＩＭＤ流をパイプラインを通じて順序付けるべく、同時に使用されてよい。また、多数のパイプラインは、複数命令複数データ（ＭＩＭＤ）流を同時に受け取るべく構成されてよく、多数のパイプラインは、共有された計算、メモリ、論理、相互接続リソースを超えて処理可能であってよい。さらに、パイプラインは、１又は複数の処理コアを含んでよい。少なくとも１つの処理コアは、ワークフローのサイズに応じてパワーオフされてよい。その上、少なくとも１つの処理コアは、ワークフローをサポートするためのパイプライン内の複数のリソースの動的構成に応じて、パワーオフされてよい。
【００４９】
全ての又は一部のパイプラインは、低電力状態、より低いパフォーマンスのための低クロックレートにパワーダウンされてよく、より高いパフォーマンスのための高クロックレートにセットされてもよい。パイプラインにおいて、より高い又はより低い電力及びパフォーマンスのレートを達成するべく、電圧が調整されてよい。パイプラインはまた、ＳＩＭＤ計算アレイを含んでよい。ＳＩＭＤ計算アレイは、高度ベクトル拡張（ＡＶＸ）（登録商標）、単一命令複数データ（ＳＩＭＤ）ユニット、又は、動的に構成可能かつ共有可能な計算リソースにマージされる実行ユニット（ＥＵ）の少なくとも１又は複数を含んでよい。パイプラインは、動的に構成可能なファンクションを実行してよい。
【００５０】
その上、ワークフローを実行することは、画像処理、複数の画像エンハンスメント、画像解析、コンピュータビジョン、拡張現実感、深度検出、ジェスチャー認識、顔認識、コンピュータゲーミング、複数のコンピュータグラフィック、メディア処理、カメラ若しくはセンサ処理、カメラ処理、表示処理、画像変換、又はそれらの組み合わせを含んでよい。さらに、提供されたスケーラブル計算ファブリックは、プリント環境に統合されることができる。
【００５１】
［例２］
本明細書において、スケーラブル計算ファブリックを有するコンピューティングデバイスが提供される。コンピューティングデバイスは、シーケンサ及び複数の論理処理要素を含む。複数の論理処理要素は、処理コア、ロジックブロック、Ｉ／Ｏデバイス、Ｉ／Ｏチャネル、バス、ディスプレイデバイス及びメモリリソースを含む。シーケンサは、画像パイプライン内のデータと複数のコマンドとを制御しかつ順序付け、シーケンサ、処理コア、ロジックブロック、Ｉ／Ｏデバイス、Ｉ／Ｏチャネル、バス、ディスプレイデバイス及びメモリリソースは、画像パイプラインを生成するべく動的に構成可能なスケーラブル計算ファブリックを有する。シーケンサはまた、キュー、共有メモリコマンド及びデータ領域のうちの１又は複数から、又は、ネットワーク若しくは相互接続を超える通信プロトコルストリームから、複数命令複数データ（ＭＩＭＤ）流を受け付ける。
【００５２】
スケーラブル計算ファブリックは、システムオンチップ（ＳＯＣ）を用いて実装されてよい。
【００５３】
その上、画像パイプラインは、動的に再構成可能であってよい。画像パイプラインはまた、予め構成されてよい。複数の論理処理要素が、シーケンサによる使用のために予約される、又は、複数の処理グループ若しくはパイプライン内に割り当てられてよい。さらに、少なくとも１又は複数の論理計算要素は、ワークフロー若しくは計算アクティビティのサイズ又はワークフローの非アクティビティに応じてパワーオフされてよい。スケーラブル計算ファブリックは、複数のＡＬＵを含む算術論理演算ユニット（ＡＬＵ）アレイを含むＳＩＭＤ計算アレイと、複数のレジスタを含むレジスタアレイとを有してよい。シーケンサは、複数の論理計算要素を予約しかつ制御し、それらを画像パイプラインのための競合管理、計算パイプライン、実行仲裁及び優先順位付けに組み立てるように構成されてよい。スケーラブル計算ファブリックはまた、固定ファンクションハードウェアユニットを含んでよい。その上、コンピューティングデバイスは、画像キャプチャデバイス又は画像表示デバイスであってよい。コンピューティングデバイスはまた、プリント環境内に統合されてよい。
【００５４】
［例３］
ワークロードを印刷するためのプリントデバイスが、ここに記載される。プリントデバイスは、プリントオブジェクトモジュールを含む。プリントオブジェクトモジュールは、スケーラブル計算ファブリックによる処理のためのワークフローを決定し、ワークフローを処理するためのパイプラインを動的に構成するために構成されてよい。ワークフローは、パイプラインを用いて実行される。ワークフローは、画像ワークロードであってよい。さらに、ワークフローを処理することは、画像処理、画像エンハンスメント、画像解析、画像入力及び画像変換の少なくとも１又は複数を含んでよい。
【００５５】
前述の説明において、開示した主題の様々な態様を説明した。説明のために、特定の数、システム、及び構成が、主題の完全な理解を提供すべく説明された。しかし、本開示を利用できる当業者にとって、主題が特定の詳細なしで実施され得ることが明らかである。他の例では、周知の特徴、コンポーネント、又はモジュールは、開示された主題をわかりにくくしないように、省略され、単純化され、組み合わせられ、又は分離された。
【００５６】
開示した主題の様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はその組み合わせにおいて実施することができ、命令等のプログラムコード、機能、プロシージャ、データ構造体、ロジック、アプリケーションプログラム、設計表現、又は設計のシミュレーション、エミュレーション、及び製作用のフォーマットに関して又はそれとともに説明することができる。これらは、機械がアクセスすると、その結果機械が実行するタスクとなり、抽象的なデータのタイプ又は低レベルのハードウェアのコンテキストを定義する、又は成果を生じる。
【００５７】
複数のシミュレーションのために、プログラムコードは、ハードウェア記述言語、又は、原則的に実行のために期待されるハードウェアの設計の方法のモデルを提供する別の機能記述言語を用いてハードウェアを表してよい。プログラムコードは、アセンブリ言語若しくは機械語、又はコンパイル及び／又はインタプリタされ得るデータであってよい。さらに、どのような形にしても動作を起こすこと又は結果をもたらすことをソフトウェアと言うことは、技術的によくあることである。そのような表現は、プロセッサに動作を実行させ又は結果を生成させる処理システムによるプログラムコードの実行を述べることの簡潔な表現の方法にすぎない。
【００５８】
プログラムコードは、例えば、複数のストレージデバイス、及び／又は、ソリッドステートメモリ、複数のハードドライブ、複数のフロッピー（登録商標）ディスク、光学ストレージ、複数のテープ、フラッシュメモリ、複数のメモリスティック、複数のデジタルビデオディスク、複数のデジタル多用途ディスク（ＤＶＤ）などを含む関連機械読み取り可能又は機械アクセス可能媒体のような、揮発性及び／又は不揮発性メモリと、機械アクセス可能な生物学的状態を保存するストレージのようなよりエキゾチックな媒体に格納されてよい。機械可読媒体は、アンテナ、光ファイバ、通信インタフェースなどのような機械によって可読な形で、情報を格納、送信、又は受信するための任意の有形のメカニズムを含んでよい。プログラムコードは、パケット、シリアルデータ、パラレルデータなどの形で送信されてよく、圧縮又は暗号化されたフォーマットで使用されてよい。
【００５９】
プログラムコードは、それぞれが、プロセッサと、プロセッサによって読み取り可能な揮発性及び／又は不揮発性メモリと、入力デバイス及び／又は１若しくは複数の出力デバイスの少なくとも１つを含む、複数のモバイル又は固定コンピュータ、複数の携帯情報端末、複数のセットトップボックス、複数の携帯電話及びポケットベル（登録商標）及び他の複数の電子デバイスのような、複数のプログラム可能機械上で動作する複数のプログラム内に実装されてよい。プログラムコードは、開示された実施形態を実行し、出力情報を生成するために、入力デバイスを用いて入力されたデータに適用されてよい。出力情報は、１又は複数の出力デバイスに適用されてよい。当業者は、開示された主題の実施形態が、複数のマルチプロセッサ又はマルチコアプロセッサシステム、複数のミニコンピュータ、複数のメインフレームコンピュータ、及び仮想的に任意のデバイスに組み込まれ得る普及した又は小型のコンピュータ又はプロセッサを含む様々なコンピュータシステム構成で実施され得ることを理解してよい。開示された主題の実施形態は、また、分散型コンピューティング環境で実施され得、タスクは、通信ネットワークを通じてリンクされたリモートプロセッシングデバイスによって実行され得る。
【００６０】
複数のオペレーションが、順次的なプロセスとして説明されてよく、いくつかのオペレーションは、ローカルに及び／又はシングル若しくはマルチプロセッサマシンによるアクセスのためにリモートに格納されたプログラムコードを用いて、実際には、並列に、同時に、及び／又は分散環境において実行されてよい。さらに、いくつかの実施形態において、オペレーションの順序は、開示された主題の意図から逸脱しない範囲で、再配置されてよい。プログラムコードは、組み込まれたコントローラによって又はそれと併用して使用されてよい。
【００６１】
開示された主題が複数の例示的な実施形態を参照して説明されている一方で、本説明は、限定的な意味において解釈されることを意図していない。例示の複数の実施形態の様々な修正、及び当開示された主題に付随することが業者にとって明らかな主題の他の実施形態は、開示された主題の範囲内にあると考えられる。
【図１】
2017194974.tif 000003
【図２】
2017194974.tif 000004
【図３】
2017194974.tif 000005
【図４】
2017194974.tif 000006
【図５】
2017194974.tif 000007
【図６】
2017194974.tif 000008
【手続補正書】
【提出日】平成29年5月19日(2017.5.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
１又は複数の処理タスクを実行するための２又は２より多くの処理コアによる第１グループと、
１又は複数の処理タスクを実行するための２又は２より多くの処理コアによる第２グループと、
１又は複数の処理タスクを実行するための２又は２より多くの処理コアによる第３グループと、
を備え、
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数は、実行されるタスクのタイプに基づいてパワーダウンする、コンピューティングデバイス。
【請求項２】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの夫々１つによって実行されるタスクの特定のタイプに基づいて、前記処理コアのうちの１又は複数が、２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの前記夫々１つに割り当てられる、請求項１に記載のコンピューティングデバイス。
【請求項３】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数は、２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの別のものによって実行されるタスクのタイプに基づいてパワーダウンする、請求項１又は請求項２に記載のコンピューティングデバイス。
【請求項４】
前記コンピューティングデバイスはモバイルデバイスを有する、請求項１から請求項３のいずれか１項に記載のコンピューティングデバイス。
【請求項５】
前記コンピューティングデバイスはモバイルプロセッサを有する、請求項１から請求項４のいずれか１項に記載のコンピューティングデバイス。
【請求項６】
前記処理コアのうちの１又は複数が、ワークフローのサイズに応じてパワーオフにされる、請求項１から請求項５のいずれか１項に記載のコンピューティングデバイス。
【請求項７】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数の全て、もしくは一部分が、低電力状態、より低いパフォーマンスのためのより低いクロックレートにパワーダウンされる、又は、より高いパフォーマンスのためのより高いクロックレートに設定される、請求項１から請求項６のいずれか１項に記載のコンピューティングデバイス。
【請求項８】
少なくとも１つの処理コアが、ワークフローをサポートするための２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１つ内へのリソースの動的構成に応じて、パワーオフにされる、請求項１から請求項７のいずれか１項に記載のコンピューティングデバイス。
【請求項９】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数が、ＳＩＭＤ計算アレイを有する、請求項１から請求項８のいずれか１項に記載のコンピューティングデバイス。
【請求項１０】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数が、動的に構成可能なファンクションを実行する、請求項１から請求項９のいずれか１項に記載のコンピューティングデバイス。
【請求項１１】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数が、処理パイプラインを有する、請求項１から請求項１０のいずれか１項に記載のコンピューティングデバイス。
【請求項１２】
複数の処理コアを、１又は複数の処理タスクを実行するための２又は２より多くの処理コアによる第１グループ、１又は複数の処理タスクを実行するための２又は２より多くの処理コアによる第２グループ、および、１又は複数の処理タスクを実行するための２又は２より多くの処理コアによる第３グループに構成する段階と、
実行されるタスクのタイプに基づいて、２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数をパワーダウンする段階と、
を含む方法。
【請求項１３】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの夫々１つによって実行されるタスクの特定のタイプに基づいて、前記複数の処理コアのうちの１又は複数を、２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの前記夫々１つに割り当てる段階を含む、請求項１２に記載の方法。
【請求項１４】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの別のものによって実行されるタスクのタイプに基づいて、２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数をパワーダウンする段階を含む、請求項１２又は請求項１３に記載の方法。
【請求項１５】
前記複数の処理コアは、モバイルコンピューティングデバイスに含まれる、請求項１２から請求項１４のいずれか１項に記載の方法。
【請求項１６】
前記複数の処理コアは、モバイルプロセッサに含まれる、請求項１２から請求項１４のいずれか１項に記載の方法。
【請求項１７】
ワークフローのサイズに応じて、前記複数の処理コアのうちの１又は複数をパワーオフにする段階を含む、請求項１２から請求項１６のいずれか１項に記載の方法。
【請求項１８】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数の全て、もしくは一部分を、低電力状態、より低いパフォーマンスのためのより低いクロックレートにパワーダウンする段階、又は、より高いパフォーマンスのためのより高いクロックレートに設定する段階を含む、請求項１２から請求項１７のいずれか１項に記載の方法。
【請求項１９】
ワークフローをサポートするための２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１つ内へのリソースの動的構成に応じて、少なくとも１つの処理コアをパワーオフにする段階を含む、請求項１２から請求項１８のいずれか１項に記載の方法。
【請求項２０】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数が、ＳＩＭＤ計算アレイを有する、請求項１２から請求項１９のいずれか１項に記載の方法。
【請求項２１】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数が動的に構成可能なファンクションを実行する段階を含む、請求項１２から請求項２０のいずれか１項に記載の方法。
【請求項２２】
２又は２より多くの処理コアによる前記第１グループ、２又は２より多くの処理コアによる前記第２グループ、又は、２又は２より多くの処理コアによる前記第３グループのうちの１又は複数が、処理パイプラインを有する、請求項１２から請求項２１のいずれか１項に記載の方法。
【外国語明細書】
2017194974000001.pdf