特許第6208769号(P6208769)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

特許6208769スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス
<>
  • 特許6208769-スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス 図000002
  • 特許6208769-スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス 図000003
  • 特許6208769-スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス 図000004
  • 特許6208769-スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス 図000005
  • 特許6208769-スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス 図000006
  • 特許6208769-スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6208769
(24)【登録日】2017年9月15日
(45)【発行日】2017年10月4日
(54)【発明の名称】スケーラブル計算ファブリックを提供する方法、スケーラブル計算ファブリックを有するコンピューティングデバイス、及びプリントデバイス
(51)【国際特許分類】
   G06F 9/38 20060101AFI20170925BHJP
   G06T 1/20 20060101ALI20170925BHJP
   H04N 19/436 20140101ALI20170925BHJP
   G06F 15/78 20060101ALI20170925BHJP
   H03K 19/173 20060101ALI20170925BHJP
【FI】
   G06F9/38 310J
   G06T1/20 C
   H04N19/436
   G06F15/78 560
   H03K19/173 130
【請求項の数】28
【全頁数】20
(21)【出願番号】特願2015-549477(P2015-549477)
(86)(22)【出願日】2013年12月11日
(65)【公表番号】特表2016-511853(P2016-511853A)
(43)【公表日】2016年4月21日
(86)【国際出願番号】US2013074364
(87)【国際公開番号】WO2014099539
(87)【国際公開日】20140626
【審査請求日】2015年6月18日
(31)【優先権主張番号】13/721,400
(32)【優先日】2012年12月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】クリグ、スコット
(72)【発明者】
【氏名】モリソン、テレサ
【審査官】 清木 泰
(56)【参考文献】
【文献】 特表2005−531848(JP,A)
【文献】 特表2010−541088(JP,A)
【文献】 特開平08−286908(JP,A)
【文献】 特開2004−005449(JP,A)
【文献】 米国特許出願公開第2012/0221833(US,A1)
【文献】 特表2014−515843(JP,A)
【文献】 特表2011−507085(JP,A)
【文献】 米国特許第06128720(US,A)
【文献】 特開2005−322224(JP,A)
【文献】 特表2007−506267(JP,A)
【文献】 特表2002−535747(JP,A)
【文献】 特開2006−244519(JP,A)
【文献】 米国特許出願公開第2007/0300040(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/38
G06T 1/20
H04N19/436
G06F15/78
H03K19/173−19/177
G06F17/16
(57)【特許請求の範囲】
【請求項1】
スケーラブル計算ファブリックによる処理のための、命令セットに基づくワークフローを決定するステップと、
前記命令セットの複数の命令のサイズ及びタイプに基づいて、前記ワークフローの処理のために動的にパイプラインを構成するステップであって、前記パイプラインの構成は、前記スケーラブル計算ファブリック内の複数の固定ファンクションハードウェアユニットを複数のパイプラインに動的にロックし、共有させ、割り当てることを含み、前記共有させることはプログラム可能なポリシーに基づくものである、構成するステップと、
前記パイプラインを用いて前記ワークフローを実行するステップと
を備える、スケーラブル計算ファブリックを提供する方法。
【請求項2】
前記パイプラインは、
複数の計算リソースを前記パイプラインに割り当て、
前記パイプラインのための複数のメモリリソース及びバス帯域幅を予約し、
前記ワークフローのために、前記パイプラインを使用することをスケジューリングすることによって構成される、請求項1に記載の方法。
【請求項3】
前記パイプラインは、前記パイプラインを通して、複数の複数命令複数データ(MIMD)流を受け取り、かつ、前記複数のMIMD流を順序付けるために、複数のソフトウェアアプリケーション又は他の接続された複数のシステムによって同時に使用されうる、請求項1又は2に記載の方法。
【請求項4】
複数のパイプラインが、同時に発生する複数の複数命令複数データ(MIMD)流を受け取り、前記複数のパイプラインは、共有のコンピューティング、メモリ、論理及び相互接続リソースにわたって処理可能である、請求項1又は2に記載の方法。
【請求項5】
前記パイプラインは、1又は複数の処理コアを有する、請求項1から4のいずれか一項に記載の方法。
【請求項6】
処理コアの少なくとも1つは、ワークフローのサイズに応じてパワーオフにされる、請求項5に記載の方法。
【請求項7】
前記パイプラインの全て又は一部は、低電力状態又はより低いパフォーマンスのためのより低いクロックレートにパワーダウンされ、又は、より高いパフォーマンスのためのより高いクロックレートに設定される、請求項1から6のいずれか一項に記載の方法。
【請求項8】
より高い又はより低い電力及びパフォーマンスレートを達成するべく、電圧が、前記パイプラインにおいて調整される、請求項1から7のいずれか一項に記載の方法。
【請求項9】
少なくとも1つの処理コアは、ワークフローをサポートするためのパイプライン内への複数のリソースの動的構成に応じて、パワーオフにされる、請求項5に記載の方法。
【請求項10】
前記パイプラインは、SIMD計算アレイを有する、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記SIMD計算アレイは、単一命令複数データ(SIMD)ユニット又は動的に構成可能かつ共有可能な計算リソースにマージされる実行ユニット(EU)の少なくとも1又は複数を有する、請求項10に記載の方法。
【請求項12】
前記パイプラインは、動的に構成可能なファンクションを実行する、請求項1から11のいずれか一項に記載の方法。
【請求項13】
前記ワークフローを実行するステップは、画像処理、画像エンハンスメント、画像解析、コンピュータビジョン、拡張現実感、深度検出、ジェスチャー認識、顔認識、コンピュータゲーミング、コンピュータグラフィック、メディア処理、カメラ若しくはセンサ処理、カメラ処理、表示処理、画像変換、又はそれらの組み合わせを実現することである、請求項1から12のいずれか一項に記載の方法。
【請求項14】
前記提供されたスケーラブル計算ファブリックは、プリント環境に統合される、請求項1から13のいずれか一項に記載の方法。
【請求項15】
シーケンサと、
処理コア、ロジックブロック、入出力デバイス、入出力チャネル、バス、ディスプレイデバイス、及びメモリリソースを有する複数の論理処理要素と
を備え、
前記シーケンサは、画像パイプライン内のデータ及び複数のコマンドを制御しかつ順序付け、
前記シーケンサに基づいて、前記画像パイプラインを生成するように動的に構成可能なスケーラブル計算ファブリックは、前記処理コア、前記ロジックブロック、前記入出力デバイス、前記入出力チャネル、前記バス、前記ディスプレイデバイス及び前記メモリリソースのそれぞれを有しうるものであり、
前記画像パイプラインの構成は、命令セットにおける複数の命令のサイズ及びタイプに基づくものであり、
前記構成は、前記スケーラブル計算ファブリック内の複数の固定ファンクションハードウェアユニットを複数のパイプラインに動的にロックし、共有させ、割り当てることを含み、前記共有させることはプログラム可能なポリシーに基づくものであり、
前記シーケンサは、キュー、共有メモリコマンド及びデータ領域のうちの1又は複数からの複数の複数命令複数データ(MIMD)流、又は、ネットワーク若しくは相互接続を超える通信プロトコルストリームを受け付ける、
スケーラブル計算ファブリックを有するコンピューティングデバイス。
【請求項16】
前記スケーラブル計算ファブリックは、システムオンチップ(SOC)を用いて実装される、請求項15に記載のコンピューティングデバイス。
【請求項17】
前記画像パイプラインは、動的に再構成可能である、請求項15又は16に記載のコンピューティングデバイス。
【請求項18】
前記画像パイプラインは予め構成される、請求項15から17のいずれか一項に記載のコンピューティングデバイス。
【請求項19】
前記複数の論理処理要素は、シーケンサによる使用のために予約される、又は、複数の処理グループ若しくは複数のパイプラインに割り当てられる、請求項15から18のいずれか一項に記載のコンピューティングデバイス。
【請求項20】
前記複数の論理計算要素の少なくとも1又は複数は、ワークフロー若しくは計算アクティビティのサイズ、又は前記ワークフローの非アクティビティに応じて、パワーオフにされる、請求項15から19のいずれか一項に記載のコンピューティングデバイス。
【請求項21】
前記スケーラブル計算ファブリックは、SIMD計算アレイを備え、
前記SIMD計算アレイは、
複数のALUを含む算術論理演算ユニット(ALU)アレイと、
複数のレジスタを含むレジスタアレイと
を有する、請求項15から20のいずれか一項に記載のコンピューティングデバイス。
【請求項22】
前記シーケンサは、複数の論理計算要素を予約しかつ制御し、それらを計算パイプラインに組み立て、前記画像パイプラインのための競合管理、優先順位付け、実行仲裁を行う、請求項15から21のいずれか一項に記載のコンピューティングデバイス。
【請求項23】
前記スケーラブル計算ファブリックは、固定ファンクションハードウェアユニットを有する、請求項15から22のいずれか一項に記載のコンピューティングデバイス。
【請求項24】
前記コンピューティングデバイスは、画像キャプチャデバイス又は画像表示デバイスである、請求項15から23のいずれか一項に記載のコンピューティングデバイス。
【請求項25】
前記コンピューティングデバイスは、プリント環境に統合される、請求項15から24のいずれか一項に記載のコンピューティングデバイス。
【請求項26】
スケーラブル計算ファブリックにて処理されるためのものであるワークフローを決定し、命令セットの複数の命令のサイズ及びタイプに基づいて、前記ワークフローを処理するためのパイプラインを動的に構成し、前記パイプラインを用いて前記ワークフローを実行する、プリントオブジェクトモジュール
を備え、
前記パイプラインの構成は、前記スケーラブル計算ファブリック内の複数の固定ファンクションハードウェアユニットを複数のパイプラインに動的にロックし、共有させ、割り当てることを含み、前記共有させることはプログラム可能なポリシーに基づくものである、ワークロードを印刷するためのプリントデバイス。
【請求項27】
前記ワークフローは、画像ワークロードである、請求項26に記載のプリントデバイス。
【請求項28】
前記ワークフローを処理することは、画像処理、画像エンハンスメント、画像解析、画像入力、画像変換、又はそれらの任意の組み合わせの少なくとも1又は複数を含む、請求項26又は27に記載のプリントデバイス。
【発明の詳細な説明】
【技術分野】
【0001】
この開示は概して複数のコンピュータアーキテクチャに関する。より詳細には、本開示は、スケーラブル計算ファブリックに関する。
【背景技術】
【0002】
現在の複数のコンピューティングシステムは、通常は、一般的な複数のユースケースのために設計されている。例えば、現在の複数のコンピューティングシステムは、様々な命令セットのために開発された少なくとも1つの中央処理装置(CPU)を含む。また、いくつかのコンピューティングシステムは、グラフィックス処理ユニット(GPU)を含んでよい。GPUは、一般的には、多量のデータブロックの並列処理によって恩恵を受ける複数のグラフィックスワークロードを処理することに特化されている。複数のCPU及び複数のGPUの両方とも、算術論理演算ユニット(ALU)と称される場合がある、算術及び論理演算を実行する専用の回路を含む。複数のCPU及び複数のGPUの両方の複数の処理コアは、サイズが固定され、それぞれのプロセッサの複数の他のコアと同一である。さらに、現在の複数のCPU及び複数のGPUの複数の処理コアは、使用されないときでさえ、パワーがオンにされる。
【図面の簡単な説明】
【0003】
以下の詳細な説明は、開示された主題の多数のオブジェクト及び特徴の具体的な例を含む添付の複数の図面を参照することによって、よりよく理解され得る。
図1】複数の実施形態に従って使用され得るコンピューティングデバイスのブロック図である。
図2】本願発明の複数の実施形態に係る、代表的なCPU、GPU及び共通ファブリックにマージされる固定ファンクションハードウェアの複数のコンポーネントを示すスケーラブル計算ファブリックの図である。
図3】複数の実施形態に係る、SIMD処理ユニットを示す図である。
図4】複数の実施形態に係る、MIMDシーケンサパイプラインコントローラを示す図である。
図5】複数の実施形態に係る、スケーラブル計算ファブリックを提供する方法音処理フロー図である。
図6】本願発明の複数の実施形態に係る、スケーラブル計算ファブリックの図である。
【発明を実施するための形態】
【0004】
上述したように、システム内の複数の計算要素又は複数の計算リソースは、固定された態様で接続され、特別な複数の処理パイプライン及び複数のワークフロー要求をサポートするために再構成されることができない、CPU、GPU、複数の入出力(I/O)コントローラ、複数のI/Oバス、複数のメモリデバイス、及び他の複数の専用論理ブロックのような、様々なコンポーネントを含む。さらに、様々な計算要素は、アクティブが維持され、使用されていないときでさえ、パワーオンされた状態であり得る。複数の本技術の複数の実施形態は、必要に応じて複数の計算要素が使用可能であり、複数の計算要素間の複数の入出力接続及び複数のバスを超えて複数の特殊目的パイプラインを割り当てるために動的に構成可能であるスケーラブル計算ファブリックを提供する。このようにして、複数のワークフローが、パフォーマンス及び電力が、適切によりよい電力及びパフォーマンスのターゲットに調整されることを可能とする動的な方法でサポートされる。その上、複数の実施形態は、複数の計算要素又は複数の計算リソースが、特定のワークロード及び同時に発生する多数のワークロードをサービスするべく動的に再構成され得るスケーラブル計算ファブリックを提供する。さらに、複数の計算要素は、使用されていないときに、パワーオフにされてよい。スケーラブル計算ファブリックは、実行時に、それぞれが、キュー、共有メモリコマンド及びデータ領域のうちの1又は複数を含む、又は、ネットワーク又は相互接続を超えた通信プロトコルストリームを介する、一実施形態における複数の方法を用いてスケーラブル計算ファブリック内に供給される複数命令複数データ(MIMD)流を許可する方法で制御されかつ順序付けられる、多数のパイプライン内に動的に構成される。
【0005】
本明細書で使用される「アクティブ」は、電力を消費しかつ「オン」である状態を示し、一方、「非アクティブ」は、電力を発生せずかつ「オフ」である状態を示す又は低電力状態に設定することを示す。低電力状態は、アクティブ状態と比較して低くてよい。スケーラブル計算アレイを用いて実装され得る複数の計算アプリケーションは、これらに限定されるものではないが、画像処理、画像プリント、画像表示、信号処理、コンピュータグラフィック、メディア及びオーディオ処理、データマイニング、ビデオ分析及び数値処理を含む。
【0006】
以下の説明及び複数の請求項において、「結合」及び「接続」という用語と、その派生物とが、使用されてよい。理解されるべきことは、これらの複数の用語は、互いの類義語として意図されるものではない。むしろ、複数の特定の実施形態では、「接続」は、2つ又はそれより多くの要素が、互いに直接物理的に又は電気的に接触することを示すために用いられてもよい。「結合」は、2つ又はそれより多くの要素が、直接物理的に又は電気的に接触することを意味してもよい。しかしながら、「結合」は、2つ又はそれより多くの要素が、互いに直接接触しないものの、互いに連動又は連携することをさらに意味してもよい。いくつかの実施形態が、ハードウェア、ファームウェア、及びソフトウェアのうちの1つ又はその組み合わせにおいて実装されてよい。いくつかの実施形態はまた、本明細書中に記載された複数のオペレーションを実行するべくコンピューティングプラットホームによって読み出されかつ実行されうる、機械可読媒体に格納された複数の命令として実装されてよい。機械可読媒体は、例えばコンピュータのような機械によって読み出し可能な形で、情報を格納又は送信するための任意のメカニズムを含んでよい。例えば、機械可読媒体は、とりわけ、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスを含んでよい。
【0007】
一実施形態は、実装又は例である。明細書における「一実施形態」、「1つの実施形態」、「いくつかの実施形態」、「様々な実施形態」又は「複数の他の実施形態」に対する参照は、複数の実施形態に関連して記載された特定の機能、構造又は特徴が、本発明の、少なくともいくつかの実施形態に含まれることを意味するが、全ての実施形態に含まれることは必ずしも意味しない。「一実施形態」、「1つの実施形態」、又は「幾つかの実施形態」の種々の出現は、必ずしも同一の実施形態を参照しているわけではない。一実施形態からの複数の要素又は態様は、別の実施形態の複数の要素又は態様と組み合わされ得る。
【0008】
本明細書中での説明及び示される全てのコンポーネント、特徴、構造、特性等は、特定の実施形態又は特定の複数の実施形態に含まれなくてもよい。コンポーネント、特徴、構造又は特性が含まれ「てもよい」、含まれる「場合がある」、含まれ「得る」、含まれ「得た」と本明細書で述べた場合には、例えば、特定のコンポーネント、特徴、構造又は特性は含まれることを要求されない。明細書又は特許請求の範囲で、「ある」要素と参照した場合には、要素が1つだけ存在することを意味しない。明細書又は特許請求の範囲で、「ある追加の」要素と参照した場合には、追加の要素が1つより多い場合を排除していない。
【0009】
いくつかの実施形態が複数の特定の実装を参照して記載されているけれども、いくつかの実施形態によれば他の複数の実装があり得ることが留意される。その上、本明細書中で記載された及び/又は複数の図面に示された複数の回路要素又は複数の他の特徴の配置及び/又は順序は、記載されかつ示された特定の方法で配置される必要はない。その他の多くの構成が、いくつかの実施形態に従って考えられる。
【0010】
図に示される各システムにおいて、場合によって、複数の要素は、表される複数の要素が、異なる及び/又は類似してよいことを示すべく、それぞれ同一の参照番号を有するか又は異なる参照番号を有してよい。しかしながら、要素は、異なる実装を有し、且つ、図示した又はここに記載したシステムの幾つか又は全てと協働できるほど十分に柔軟であってもよい。図に示した様々な要素は、同一のものであってもよく、異なるものであってもよい。どちらを第1の要素として称し、どちらを第2の要素として称するかは任意的なものである。図1は、複数の実施形態に従って用いられ得るコンピューティングデバイス100のブロック図である。コンピューティングデバイス100は、例えば、とりわけ、ラップトップコンピュータ、デスクトップコンピュータ、タブレットコンピュータ、モバイルデバイス、又はサーバであってよい。コンピューティングデバイス100は、格納された複数の命令を実行するように構成されたスケーラブル計算ファブリック102と、スケーラブル計算ファブリック102によって実行可能な複数の命令を格納するメモリデバイス104とを含んでよい。いくつかの実施形態において、アプリケーションプログラミングインタフェース(API)が、実行時にスケーラブル計算ファブリックを構成するために使用されてよい。その上、いくつかの実施形態において、スケーラブル計算ファブリックは、ブート時間に列挙されてよい。このようにして、コンピューティングデバイスは、スケーラブル計算ファブリックの複数のハードウェア能力を認識できる。
【0011】
メモリデバイス104は、スケーラブル計算ファブリック102のコンポーネントであってよい。スケーラブル計算ファブリック102は、バス106によってメモリデバイス104に結合されてよく、中央処理装置(CPU)によって従来から実行される任意のオペレーションを実行するように構成されてよい。さらに、スケーラブル計算ファブリック102は、グラフィックス処理ユニット(GPU)によって従来から実行される任意の数のグラフィックスオペレーションを実行するように構成されてよい。例えば、スケーラブル計算ファブリック102は、複数のグラフィックス画像、複数のグラフィックスフレーム、複数のビデオ、又は同様のものを、コンピューティングデバイス100のユーザに対して表示されるように、レンダリングする又は操るように構成されてよい。
【0012】
スケーラブル計算ファブリック102は、これらに限定されるものではないが、様々なパイプライン内に動的に構成され、かつ、再構成され得るいくつかの処理リソースを含んでよい。パイプラインは、特定の処理タスクを実行するべくグループ化されたリソース又は計算要素のセットである。パイプラインは、動的に構成可能なファンクションを実行してよい。スケーラブル計算ファブリック102の複数のパイプラインは、複数の命令のサイズ及びタイプに基づいて、実行時に複数の命令のセットを実行するように構成されてよい。複数の実施形態において、アプリケーションプログラミングインタフェース(API)は、特定の命令のセットのための処理パイプラインを構成するために、実行時に呼び出されてよい。例えば、APIは、64ビット幅命令の実行時に、64ビット幅命令を処理する5つのSIMD処理ユニットの作成を特定してよい。APIはまた、スケーラブル計算ファブリック102に対する帯域幅を特定してよい。複数の実施形態において、スケーラブル計算ファブリック102は、スケーラブル計算ファブリック102内の複数の処理パイプラインと共に動的に構成されかつ再構成され得る高速の相互接続を実装する。その上、高速の相互接続は、コンピューティングデバイス100の複数の計算リソース又は計算要素を接続するバスであってよい。スケーラブル計算ファブリック102の複数のパイプラインはまた、基本入出力システム(BIOS)を用いて事前に構成されてよい。例えば、コンピューティングデバイス100に電源が投入されたとき、起動プロシージャの間動作するBIOSは、スケーラブル計算ファブリック102の様々なコンポーネントを含む、スケーラブル計算ファブリック102を識別できる。BIOSは、その後、スケーラブル計算ファブリック102の複数のパイプラインを事前構成できる。複数の実施形態において、複数のパイプラインは、事前構成の後に必要に応じて再構成され得る。
【0013】
スケーラブル計算ファブリックは、実行時に多数のパイプライン内に動的に構成され、各パイプラインは、複数のスケーラブルコンピュータファブリックパイプラインに供給される複数命令複数データ(MIMD)流を斟酌する共有の態様で、制御され、かつ、順序付けられる。一実施形態では、複数のMIMDコマンドデータ流が、キュー、共有メモリコマンド及びデータ領域、相互接続バス、ネットワーク若しくは相互接続を超える通信プロトコルストリームの1又は複数を含むがこれらに限定はされない1又は複数の方法、又は類似した方法を用いて、スケーラブル計算ファブリック内に供給されてよい。その上、複数のパイプラインの動的構成は、複数のパイプラインを構成する複数のコマンドを受け付ける1又は複数のMIMDシーケンサ又はコントローラと、複数のMIMDシーケンサが、計算、相互接続、メモリ及び複数の固定ファンクションロジックブロックのためにパイプライン化された複数のリソース内に供給する多数のソフトウェアアプリケーション又は多数の接続されたシステムからの、特定のタスクを実行するべく複数のパイプライン内に動的に構成されるデータとを含む。従って、複数のパイプラインは、1又は複数のソフトウェアアプリケーション又は接続されたシステムによって使用され得る複数の共有リソースである。
【0014】
スケーラブル計算ファブリック102内には、1又は複数のALUアレイ及び1又は複数のレジスタアレイが存在してよい。複数のALUアレイは、レジスタアレイ内に格納されたデータの算術及び論理演算を実行するために使用されてよい。レジスタアレイは、複数のALUに対する入力として使用されるデータを格納するために使用され得る特殊目的メモリであり、また、複数のALUのオペレーションからの結果として生じるデータを格納してよい。データは、メモリデバイス104と複数のレジスタとの間で伝達されてよい。メモリデバイス104は、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、フラッシュメモリ、又は任意の他の適切なメモリシステムを含むことができる。例えば、メモリデバイス104は、ダイナミックランダムアクセスメモリ(DRAM)を含んでよい。
【0015】
コンピューティングデバイス100は、イメージキャプチャメカニズム108を含む。複数の実施形態において、イメージキャプチャメカニズム108は、カメラ、立体カメラ、赤外線センサ、又は同様のものである。その上、イメージキャプチャメカニズム108は、USBケーブルを用いてコンピューティングデバイス100と結合されるユニバーサルシリアルバス(USB)カメラであってよい。イメージキャプチャメカニズム108は、画像情報をキャプチャするために使用される。複数の実施形態において、イメージキャプチャメカニズムは、Mobile Industry Processor Interface(MIPI)カメラシリアルインタフェース(CSI)アライアンスによる仕様書に従って発展されたインタフェースを用いて、スケーラブル計算ファブリック102とインタフェースするカメラデバイスであってよい。例えば、カメラシリアルインタフェースは、MIPI CSI−1インタフェース、MIPI CSI−2インタフェース、又はMIPI CSI−3インタフェースであってよい。そして、カメラシリアルインタフェースは、現在開発されている又は将来開発される任意のカメラシリアルインタフェースであってよい。複数の実施形態において、カメラシリアルインタフェースは、データ及びクロック信号の一方向の差動シリアルインタフェースであるデータ伝送インタフェースを含んでよい。その上、スケーラブル計算ファブリックを有するカメラインタフェースはまた、現在開発されている又は将来開発される任意のカメラパラレルインタフェース(CPI)であってよい。複数の実施形態において、スケーラブル計算ファブリック102は、複数の画像オペレーションのためのSIMD処理ユニットとして構成される。スケーラブル計算ファブリック102は、ワークロードからの複数の入力SIMD命令として取得し、複数の命令に基づいて複数のオペレーションを並列に実行できる。例えば、イメージキャプチャメカニズム108は、処理対象の複数の画像をキャプチャするために使用されてよい。画像処理ワークロードは、SIMD命令セットを含んでよく、スケーラブル計算ファブリック102は、その命令セットを処理するために使用されてよい。
【0016】
スケーラブル計算ファブリック102は、バス106を通じて、コンピューティングデバイス100を1又は複数の入出力(I/O)デバイス114に接続するように構成されたI/Oデバイスインタフェース112に接続されてよい。I/Oデバイス114は、例えば、キーボード及びポインティングデバイスを含んでよい。ポインティングデバイスは、とりわけ、タッチパッド又はタッチスクリーンを含んでよい。複数のI/Oデバイス114は、コンピューティングデバイス100のビルトインコンポーネントであるか、又は、コンピューティングデバイス100の外部から接続される複数のデバイスであってもよい。
【0017】
スケーラブル計算ファブリック102はまた、バス106を通じて、コンピューティングデバイス100をディスプレイデバイス118に接続するように構成された複数のディスプレイインターフェース116にリンクされてよい。複数のディスプレイデバイス118は、コンピューティングデバイス100のビルトインコンポーネントであるディスプレイ画面を含んでよい。ディスプレイデバイス118はまた、とりわけ、コンピュータモニタ、テレビ、又はプロジェクタを含んでよく、コンピューティングデバイス100に外部から接続される。
【0018】
コンピューティングデバイス100はまた、ストレージデバイス120を含む。ストレージデバイス120は、ハードドライブ、光学式ドライブ、サムドライブ、ドライブアレイ、又はそれらの任意の組み合わせのような、物理メモリである。ストレージデバイス120はまた、リモート記憶ドライブを含んでよい。ストレージデバイス120は、コンピューティングデバイス100上で動作するように構成された任意の数のアプリケーション122を含む。アプリケーション122は、スケーラブル計算ファブリックを実装するために使用されてよい。その上、アプリケーション122の複数の命令セットは、これに限定されないが、超長命令語(VLIW)及び複数の単一命令複数データ(SIMD)命令を含んでよい。複数の命令セットは、スケーラブル計算ファブリック102を用いて処理されてよい。コンピューティングデバイス100はまた、ネットワークインタフェースコントローラ(NIC)124を含んでよい。NIC124は、コンピューティングデバイス100を、バス106を介してネットワーク126に接続するように構成されてよい。ネットワーク126は、とりわけ、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、又はインターネットであってよい。
【0019】
複数の実施形態において、スケーラブル計算ファブリックは、処理された画像ワークロードからプリントエンジン128に対して、結果としての画像を送信できる。プリントエンジン128は、結果としての画像ワークロードをプリントデバイス130に対して送信できる。プリントデバイス130は、複数のプリンタ、複数のファックスマシン、及びプリントオブジェクトモジュール132を用いて結果としての画像を印刷できる他のプリントデバイスを含むことができる。複数の実施形態において、プリントエンジン128は、ネットワーク126を通じて、データをプリントデバイス130に対して送信してよい。その上、複数の実施形態において、プリントデバイス130は、プリントデバイス130を用いて複数のワークロードを処理するために使用され得る別のスケーラブル計算ファブリック134を含んでよい。
【0020】
図1のブロック図は、コンピューティングシステム100が図1に示す全てのコンポーネントを含むものであることを示すことを意図していないことを理解されたい。むしろ、コンピューティングシステム100は、より少ない、又は、図1に示されていない追加のコンポーネント(例えば、複数のセンサ、複数の電力管理集積回路、追加のネットワークインターフェース等)を含むことができる。
【0021】
図2は、本願発明の複数の実施形態に係る、典型的なCPU、GPU、及び共通のファブリックにマージされる固定ファンクションハードウェアを示すスケーラブル計算ファブリック200の図である。スケーラブル計算ファブリック200は、例えば、スケーラブル計算ファブリック102(図1)であってよい。スケーラブル計算ファブリック200はまた、プリントデバイス130(図1)のような、プリントデバイスのコンポーネントであるスケーラブル計算ファブリック134であってよい。
【0022】
スケーラブル計算ファブリック200は、既存のマシンコードが、特定のマシンコードに対応する複数のコア上で動作することを可能にする。このように、CPUを用いて実行され得るマシンコードは、スケーラブル計算ファブリック200を用いて実行されてよい。その上、GPUを用いて実行され得るマシンコードは、スケーラブル計算ファブリック200を用いて実行されてよい。
【0023】
したがって、スケーラブル計算ファブリック200は、特定のマシンコード202を実行可能な複数の単一命令単一データ(SISD)処理コア204を制御するために使用されるマシンコード202を含む。複数の実施形態において、複数の処理コアは、複数のインテル(登録商標)アーキテクチャ(IA)CPUコア又はハイパースレッドであってよい。複数の処理コア204は、マシンコード202によって特定された、ネイティブなデータタイプ、命令、レジスタ、アドレス指定モード、メモリアーキテクチャ、及び割り込み処理を実行してよい。また、スケーラブル計算ファブリック200内に含まれるものは、単一命令複数データ(SIMD)及び単一命令単一スレッドマシンコード206である。SIMD/SISTマシンコード206は、1又は複数のSIMD処理ユニット208に命令するために使用されてよい。複数の実施形態において、複数のSIMD処理ユニット208は、インテル(登録商標)高度ベクトル拡張(AVX)及びスタンドアローンリソースにマージされた複数の実行ユニット(EU)を含む。複数のSIMD処理ユニットはまた、SIMD計算アレイと称される場合がある。SIMD処理ユニット208はさらに、図3に関して説明されてよい。
【0024】
スケーラブル計算ファブリック200の各構成されたパイプラインは、プログラム可能な公正ポリシー及び様々な割り当てスキームを通じた実行プライオリティ並びに必要なバス帯域幅が保証される。固定ファンクションハードウェア210は、スケーラブル計算ファブリック200内に表されてよい。例えば、固定ファンクションハードウェアは、グラフィックス、ディスプレイ、媒体、セキュリティ又は知覚の演算器であってよい。複数の実施形態において、固定ファンクションハードウェアは、スケーラブル計算ファブリックの複数のリソース又は計算要素を用いて実装されてよい。このように、固定ファンクションハードウェアは、より少ない消費電量又はより効率的な計算を有する他のハードウェアによって置換されてよい。スケーラブル計算ファブリック200内の複数の固定ファンクションハードウェアユニットは、動的にロックされ、共有され、複数のパイプラインに割り当てられてよい。例えば、メディアワークロードを符号化することは、典型的には、とりわけ、動き予測を実行することを含む。2次元(2D)ビデオが符号化される場合、動き予測のサーチは、各フレームのための複数の動きベクトルを決定するために、ビデオの各フレーム上で実行されてよい。動き予測は、フレームのシーケンスにおける複数のオブジェクトの動きが、フレーム間のオブジェクトの予測された動きを表す複数のベクトルを取得するために分析される技術である。動き予測を通じて、符号化されたメディアファイルは、他のフレームの部分を含まない移動されたフレームの複数の部分を含み、それによって、メディアファイル内のスペースを節約し、かつ、メディアファイルの復号化の間の処理時間を節約する。フレームは、複数のマクロブロックに分割されてよく、複数の動きベクトルは、フレーム間のマクロブロックの位置における変化を表す。複数の動きベクトルは、メディア固定ファンクションユニットを含むスケーラブル計算ファブリック200を使用して構成されたパイプラインによって決定されてよい。
【0025】
複数のリングバス212は、複数の固定ファンクションハードウェアユニット間を接続するために含まれてよい。リングバッファ212は、組み立てられたパイプラインを通じてデータを伝達するために使用されてよい。
【0026】
その上、Peripheral Component Interconnect Express(PCIe)バス214及び入出力コントローラハブ(ICH)バス216は、スケーラブル計算ファブリック200の中への複数の入力を提供してよい。
【0027】
しかしながら、複数の本技術は、本明細書において説明される複数の相互接続の方法に限定されず、複数の実施形態において、広い範囲の他の相互接続の方法が使用され得る。
【0028】
複数命令複数データ(MIMD)パイプラインシーケンサ218は、入力された複数の命令に基づいて必要に応じて複数のパイプライン内に複数の処理コア204、複数のSIMD処理ユニット208及び固定ファンクションハードウェア210を組み立てるために使用されてよい。複数の命令は、命令キュー220Aから取得されてよい。その上、複数のMIMDシーケンサは、メモリ内の命令コントロールブロック220Bから、又は、ネットワーク若しくは相互接続220C上のプロトコルストリームから、複数のデータ及び制御コマンドを受け取ってよい。スケーラブル計算ファブリック200内の複数のメモリリソースは、複数の動的に構成されたパイプラインを用いてロックされてよい。例えば、レベル2(L2)キャッシュ222及びレベル3(L3)キャッシュ224もまた、データを格納するべくスケーラブル計算ファブリック200内に含まれてよい。
【0029】
図3は、複数の実施形態に係る、複数のSIMD処理ユニット208を示す図である。複数のSIMD処理ユニット208は、高度ベクトル拡張(AVX)単一命令複数データ(SIMD)ユニット又は動的に構成可能かつ共有可能な計算リソース内にマージされた実行ユニット(EU)の少なくとも1又は複数を含み得るSIMD計算アレイ内であってよい。各SIMD処理ユニット208は、複数のSIMD処理リソースのスライスである。換言すれば、各スライスは、独立したSIMD処理ユニット208である。スライスは、複数のレーンのセット又はグルーピングを参照する。各レーンは、少なくとも1つの算術論理演算ユニット(ALU)及び少なくとも1つのレジスタを含む。SIMD処理ユニット208は、ALUアレイ302及びレジスタアレイ304を含む。ALUアレイ302は、レジスタアレイ304内に格納されたデータの複数の算術及び論理演算を実行するために使用されてよい。レジスタアレイ304は、ALUアレイ302への入力として使用されるデータを格納するために使用されることができ、また、ALUアレイ302の演算からの結果としてのデータを格納する特殊目的メモリである。レジスタアレイ304は、機械の共有されたコンテキスト(CTX)データ306を含む共有メモリのコンポーネントであってよい。共有されたCTXデータ306は、複数のプログラムカウンタ、複数のレジスタ設定、複数のクロック周波数、複数の電圧レベル及び他の全ての機械状態データのような、機械コンテキスト関連データを格納してよい。
【0030】
複数のSIMD処理ユニット208のそれぞれは、処理されるワークロードのサイズ及びタイプに応じて、異なる幅になるように構成されてよい。このようにして、複数のSIMD処理ユニットのそれぞれの幅は、コンピュータ上で動作するソフトウェアの各部分に基づいている。各SIMD処理ユニット208の幅は、各スライス内のレーンの数である。図3において、複数のSIMD処理ユニット208は、4つのALUレーンを含むSIMD 4−ALUスライス308と、2つのレーンを含むSIMD 2−ALUスライス310と、4つのレーンを含むSIMD 4−ALUスライス312と、2つのレーンを含むSIMD 2−ALUスライス314と、4つのレーンを含むSIMD 4−ALUスライス316とを含む。図3に示すように、SIMD ALUスライス308及びSIMDスライス314は、各SIMDスライス上のパワーオンのステータス320Aによってそれぞれ示されるように、両方とも電源が入っている。同様に、SIMD ALUスライス310、SIMD ALUスライス312及びSIMD ALUスライス316は、各SIMDスライス上のパワーオフのステータス320Bによってそれぞれ示されるように、全て電源が入っていない。
【0031】
複数の実施形態において、SIMD ALUスライス310、SIMD ALUスライス312及びSIMD ALUスライス316は、SIMD ALUスライス310、SIMD ALUスライス312及びSIMD ALUスライス内の複数のALUユニットが非アクティブになっていることの決定に応じて、全てパワーオフにされる。
【0032】
非アクティビティは、複数のALUを監視するコントローラによって決定されてよい。複数のALUが、予め定められたクロックサイクル数よりも多くアイドルであった場合に、それらは、電源が切られうる。
【0033】
その上、プログラムカウンタが、複数のALUを電源オフにしてよいかを決定するために使用されうる。
【0034】
図4は、複数の実施形態に係る、複数のMIMDシーケンサパイプラインコントローラ218を示す図である。入力キュー220(図2)のような複数の入力キューからの情報が、MIMDシーケンサパイプラインコントローラ218に対して入力される。MIMDシーケンサパイプラインコントローラ218は、命令キュー220A(図2)からの情報を取得し、その情報を、スケーラブル計算ファブリック内に形成された様々なパイプラインに対して送る。複数の実施形態において、複数のMIMDシーケンサは、メモリ内の複数の命令コントロールブロック220Bから、又は、ネットワーク若しくは相互接続220C上のプロトコルストリームから、データ及び複数の制御コマンドを受け付けてよい。
【0035】
例えば、MIMDシーケンサパイプラインコントローラ218Aは、命令キューがフーリエ変換を計算することを含む複数の命令を有するときはいつでも、高速フーリエ変換(FFT)モジュール402を予約してよい。複数のデジタル信号処理(DSP)アプリケーションが、しばしば、FFT処理コアの使用を含む。FFTモジュール402は、ハードウェア又はソフトウェアを使用して実装されてよい。FFTモジュール402によって使用されるデータは、メモリ104内のバッファ404Aから検索されてよい。一旦処理されたら、そのデータは、メモリ内のバッファ404Bに対してライトバックされてよい。
【0036】
そして、パイプラインは、MIMDシーケンサパイプラインコントローラ218Aによってコントロールされてよい。
【0037】
MIMDシーケンサパイプラインコントローラ218Aと並列に、MIMDシーケンサパイプラインコントローラ218Bが、画像処理のための別のパイプラインを構成するために使用されてよい。複数の入力キュー220A(図2)のような命令キューは、MIMDシーケンサパイプラインコントローラ218Bに、画像処理のための様々なモジュールを含むパイプラインを構成するべく命令してよい。その複数の命令に応じて、MIMDシーケンサパイプラインコントローラ218Bは、畳み込み固定ファンクションハードウェアユニット406A、モホロジー固定ファンクションハードウェアユニット406B、メディアパイプライン406C、SIMD処理ユニット406D、及びディスプレイモジュール406Eを予約してよい。SIMD処理ユニット406Dは、上述のように、SIMD処理ユニット208であってよい。複数の実施形態において、複数のMIMDシーケンサは、メモリ内の複数の命令コントロールブロック220Bから又はネットワーク若しくは相互接続220C上のプロトコルストリームから、データ及び複数の制御コマンドを受け付けてよい。
【0038】
畳み込み固定ファンクションハードウェアユニット406Aは、イメージキャプチャメカニズム108(図1)のようなイメージキャプチャメカニズムから画像データを受信してよい。イメージキャプチャメカニズムからの画像データの線形フィルタリングは、畳み込み固定ファンクションハードウェアユニット406A及びモホロジー固定ファンクションハードウェアユニット406Bを使用して、発生してよい。畳み込み固定ファンクションハードウェアユニット406Aからのデータは、メモリ104内のバッファ408Aに書き込まれてよい。モホロジー固定ファンクションハードウェアユニット406Bは、バッファ408Aからデータを取得してよい。メディアパイプライン406Cは、画像データを符号化するために使用されてよい。画像データは、メモリ104内のバッファ408Bから取得されてよい。メディアパイプライン406Cは、画像データを符号化する様々なハードウェア及びソフトウェアモジュールを実行する追加のパイプラインである。例えば、画像データを符号化するためのメディアパイプラインは、画像データ内の複数のフレームのマクロブロックタイプ及び複数の動きベクトルを決定するべく動き予測を実行することを含むことができる。その上、画像データを符号化することは、様々なビットレートを各フレームに適用することを含む。画像データが符号化されると、ターゲットのデータフォーマットに変換される。そのデータは、その後、メモリ104のバッファ408に書き込まれてよい。SIMD処理ユニット406Dは、メモリ104内のバッファ408Cからデータを取得してよい。特定のディスプレイのためにデータを最適化するような、追加の画像処理が、SIMD処理ユニット406Dによって実行されてよい。データはその後、メモリ104内のバッファ408Dに書き込まれてよい。ディスプレイモジュール406Eは、メモリ104内のバッファ408Dからデータを取得してよく、そのデータをディスプレイ上においてレンダリングしてよい。
【0039】
画像データが、メモリ104内のバッファ408とパイプラインモジュール406との間を通過するときに、リングバッファ212は、そのデータをパイプラインモジュール406からバッファ408に通過させるために使用されてよい。その上、リングバッファ212は、バッファ408にアクセスすることなく、複数のパイプラインモジュール406の間でデータを伝達してよい。例えば、画像データは、典型的に、行ごとに処理される。畳み込み固定ファンクションハードウェアユニット406Aは、画像データの行を処理してよく、それをリングバッファ212内に配置してよい。リングバッファは、さらなる処理のために、そのデータを、モホロジー固定ファンクションハードウェアユニット406Bに対して直接送信してよい。モホロジー固定ファンクションハードウェアユニット406Bが、畳み込み固定ファンクションハードウェアユニット406Aによって送信された画像データを処理できないイベントにおいて、リングバッファ212は、モホロジー固定ファンクションハードウェアユニット406Bが画像データを処理できるまで、バッファ408A内にデータを配置できる。
【0040】
図5は、複数の実施形態に係る、スケーラブル計算ファブリックを提供する方法の処理フロー図である。ブロック502において、スケーラブル計算ファブリックによって処理されるワークフローが決定される。ワークフローは、ソフトウェアプログラムの命令セットに基づいてよい。複数の実施形態において、ワークフローが命令キューから取得されてよい。ブロック504において、パイプラインは、ワークフローを処理するために動的に構成されてよい。パイプラインは、処理コア、SIMD計算アレイ、又はそれらの任意の組み合わせを含んでよい。SIMD計算アレイは、1又は複数のSIMD処理ユニットを含んでよい。複数の実施形態において、パイプラインは、複数の計算リソースをパイプラインに割り当て、パイプラインのためのバス帯域幅と複数のメモリリソースとを予約し、パイプラインのワークフローの使用をスケジューリングすることによって構成されてよい。その構成は、コントローラによって実行されてよい。複数の実施形態において、コントローラは、MIMDシーケンサパイプラインコントローラである。その上、パイプラインは、1又は複数の処理コア及び1又は複数のSIMD処理ユニットを含んでよい。少なくとも1つの処理コア又はSIMD処理ユニットは、ワークフローのサイズに応じてパワーオフされてよい。その上、少なくとも1つの処理コア又はSIMD処理ユニットは、ワークフローをサポートするためのパイプライン内への複数のリソースの動的構成に応じて、パワーオフされてよい。
【0041】
ブロック506において、ワークフローは、パイプラインを使用することによって実行されてよい。複数の実施形態において、方法は、コンピューティングデバイスのパイプライン又はプリントデバイスのパイプラインを用いて実行されてよい。ワークフローを実行することは、画像処理、画像エンハンスメント、画像解析、コンピュータビジョン、拡張現実感、深度検出、ジェスチャー認識、顔認識、コンピュータゲーミング、コンピュータグラフィック、メディア処理、カメラ若しくはセンサ処理、カメラ処理、表示処理、画像変換、又はそれらの組み合わせを含んでよい。
【0042】
図5の処理フロー図は、方法500の複数のステップが、ある特定の順番で実行されるべきであること、又は、方法500のすべてのステップがすべてのケースにおいて含まれるべきであることを示すことを意図していない。さらに、特定のアプリケーションに応じて、任意の数の追加のステップが方法500内に含まれてもよい。例えば、プリントデバイス130は、スケーラブル計算ファブリックを使用して前に処理された画像をプリントしてよい。
【0043】
図6は、本願発明の複数の実施形態に係る、スケーラブル計算ファブリック600の図である。スケーラブル計算ファブリック600は、例えば、スケーラブル計算ファブリック102(図1)である。スケーラブル計算ファブリック600はまた、プリントデバイス130(図1)のようなプリントデバイスのコンポーネントであるスケーラブル計算ファブリック134であってよい。
【0044】
Peripheral Component Interconnect Express(PCIe)バス214及び入出力コントローラハブ(ICH)216は、スケーラブル計算ファブリック600の入出力を提供してよい。スケーラブル計算ファブリック600はまた、リングバッファ212A、リングバッファ212B及びリングバッファ212Cを含む。リングバッファ212Aは、PCIeバス214及びICH216が、データをMIMDシーケンサパイプラインコントローラ218、SISD処理コア204、SIMD処理ユニット208、及び固定ファンクションハードウェア210に対して送信することを可能にする。その上、リングバッファ212Bは、複数の固定ファンクションハードウェアユニット210が、データをL3キャッシュ222に対して渡すことを可能にする。L3キャッシュ222のみが示されているけれども、任意の数のキャッシュがスケーラブル計算ファブリック内に存在してもよい。上述したように、リングバッファ212Bは、データが、一の固定ファンクションハードウェアユニットから別の固定ファンクションハードウェアユニットへと直接渡されることを可能とする。リングバッファ212Cは、データが、MIMDシーケンサパイプラインコントローラ218、複数のSISD処理コア204、複数のSIMD処理ユニット208及び固定ファンクションハードウェア210の間で直接渡されることを可能とする。3つのリングバッファが示されているけれども、スケーラブル計算ファブリックは、任意の数のリングバッファを含んでよい。さらに、複数のリングバッファは、命令キュー220Aからの複数の命令のような、複数の命令に基づいて動的に構成され、再構成されてよい。複数のリングバッファはまた、メモリコントロールブロック220B又は通信プロトコル220Cからのデータに基づいて再構成されてよい。
【0045】
複数の実施形態において、MIMDシーケンサパイプラインコントローラは、プライオリティレベルを含んでよい。このように、第1MIMDシーケンサパイプラインコントローラが第2MIMDシーケンサパイプラインコントローラよりも高いプライオリティを有する場合であって、第2MIMDシーケンサパイプラインコントローラが、第1MIMDシーケンサパイプラインコントローラ使用することを望むリソース又は計算要素を使用する場合、第1MIMDシーケンサパイプラインコントローラは、第2MIMDシーケンサパイプラインコントローラを遮断することができる。加えて、複数のリソースが、複数のパイプラインの間で共有されてよく、MIMDシーケンサは、複数のリソースを管理するためのプライオリティ、求められる帯域幅、パフォーマンス又は他のポリシーのような、プログラム可能なポリシーに基づいて、複数のパイプラインの間でリソース共有を仲裁する。複数の実施形態において、MIMDシーケンサパイプラインコントローラは、複数のスケーラブル計算ファブリックリソースの使用を仲裁する。MIMDシーケンサパイプラインコントローラはまた、データ及び複数の命令が、構成されたパイプラインに適合することを保証する。そして、多数のMIMDシーケンサパイプラインコントローラはスケーラブル計算ファブリックの複数のリソースの、仲裁、優先順位づけ、競合、及び管理を実行できる。
【0046】
複数の実施形態において、スケーラブル計算ファブリックは、プリントデバイス130のようなプリントデバイスにおいて使用されてよい。例えば、プリントデバイスは、複数の文書をスキャンできるスキャニングモジュールを含んでよい。プリントデバイスは、スキャンされた複数の文書を、PDFファイルフォーマットのような、様々なファイルフォーマットにコンバートしてよい。プリントデバイスはまた、スキャンされた文書を拡張するために又はスキャンされた文書内の複数の画像を変換するために使用されてよい。そして、スケーラブル計算ファブリックを使用して、パイプラインは、プリンタに対して割り当てられた、スキャニング、ファイルフォーマット変換、エンハンスメント及び画像交換を含むがこれらに限定はされない様々なタスクを実行するように構成されることができる。その上、複数の実施形態において、スケーラブル計算ファブリックは、プリントのための複数のリソースを含むプリント環境に統合されてよい。スケーラブル計算ファブリックを含むコンピューティングデバイスはまた、プリント環境に統合されてよい。
【0047】
本技術は、与えられた処理、データフローのために合理化され、最適化されることができるパイプラインを生成する。現在は、SOCアーキテクチャは、適切な方法において様々なワークロードを提供する一般的な目的において設計される。多くのリソース又は計算要素は、個別の動的な構成可能の使用のために利用可能ではない。例えば、現状の多くのGPU固定ファンクションハードウェア計算リソースは、個別の使用及び特定のパイプライン内の構成のために利用可能ではない。本技術を通して、各コンポーネント、リソース又は計算要素は、個別に利用可能であり、かつ、アクセス可能である。さらに、各コンポーネント、リソース又は計算要素は、処理される特定のワークロードに応じて動的に構成され又は再構成され得る。
【0048】
[例1]
本明細書において提供されるスケーラブル計算ファブリックを提供する方法。ロジックが、スケーラブル計算ファブリックによる処理のためのワークフローを決定するべく提供される。ワークフローは、命令セットに基づく。ロジックは、ワークフローを処理するためのパイプラインを動的に構成するべく提供され、かつ、ロジックは、パイプラインを使用してワークフローを実行するべく提供される。パイプラインは、複数の計算リソースをパイプラインに割り当て、パイプラインのためのバス帯域幅及び複数のメモリリソースを予約し、かつ、パイプラインのワークフロー使用をスケジューリングすることによって構成されてよい。パイプラインは、複数のソフトウェアアプリケーション又は複数の他の接続されたシステムによって、複数命令複数データ(MIMD)流を受け取り、かつ、MIMD流をパイプラインを通じて順序付けるべく、同時に使用されてよい。また、多数のパイプラインは、複数命令複数データ(MIMD)流を同時に受け取るべく構成されてよく、多数のパイプラインは、共有された計算、メモリ、論理、相互接続リソースを超えて処理可能であってよい。さらに、パイプラインは、1又は複数の処理コアを含んでよい。少なくとも1つの処理コアは、ワークフローのサイズに応じてパワーオフされてよい。その上、少なくとも1つの処理コアは、ワークフローをサポートするためのパイプライン内の複数のリソースの動的構成に応じて、パワーオフされてよい。
【0049】
全ての又は一部のパイプラインは、低電力状態、より低いパフォーマンスのための低クロックレートにパワーダウンされてよく、より高いパフォーマンスのための高クロックレートにセットされてもよい。パイプラインにおいて、より高い又はより低い電力及びパフォーマンスのレートを達成するべく、電圧が調整されてよい。パイプラインはまた、SIMD計算アレイを含んでよい。SIMD計算アレイは、高度ベクトル拡張(AVX)(登録商標)、単一命令複数データ(SIMD)ユニット、又は、動的に構成可能かつ共有可能な計算リソースにマージされる実行ユニット(EU)の少なくとも1又は複数を含んでよい。パイプラインは、動的に構成可能なファンクションを実行してよい。
【0050】
その上、ワークフローを実行することは、画像処理、複数の画像エンハンスメント、画像解析、コンピュータビジョン、拡張現実感、深度検出、ジェスチャー認識、顔認識、コンピュータゲーミング、複数のコンピュータグラフィック、メディア処理、カメラ若しくはセンサ処理、カメラ処理、表示処理、画像変換、又はそれらの組み合わせを含んでよい。さらに、提供されたスケーラブル計算ファブリックは、プリント環境に統合されることができる。
【0051】
[例2]
本明細書において、スケーラブル計算ファブリックを有するコンピューティングデバイスが提供される。コンピューティングデバイスは、シーケンサ及び複数の論理処理要素を含む。複数の論理処理要素は、処理コア、ロジックブロック、I/Oデバイス、I/Oチャネル、バス、ディスプレイデバイス及びメモリリソースを含む。シーケンサは、画像パイプライン内のデータと複数のコマンドとを制御しかつ順序付け、シーケンサ、処理コア、ロジックブロック、I/Oデバイス、I/Oチャネル、バス、ディスプレイデバイス及びメモリリソースは、画像パイプラインを生成するべく動的に構成可能なスケーラブル計算ファブリックを有する。シーケンサはまた、キュー、共有メモリコマンド及びデータ領域のうちの1又は複数から、又は、ネットワーク若しくは相互接続を超える通信プロトコルストリームから、複数命令複数データ(MIMD)流を受け付ける。
【0052】
スケーラブル計算ファブリックは、システムオンチップ(SOC)を用いて実装されてよい。
【0053】
その上、画像パイプラインは、動的に再構成可能であってよい。画像パイプラインはまた、予め構成されてよい。複数の論理処理要素が、シーケンサによる使用のために予約される、又は、複数の処理グループ若しくはパイプライン内に割り当てられてよい。さらに、少なくとも1又は複数の論理計算要素は、ワークフロー若しくは計算アクティビティのサイズ又はワークフローの非アクティビティに応じてパワーオフされてよい。スケーラブル計算ファブリックは、複数のALUを含む算術論理演算ユニット(ALU)アレイを含むSIMD計算アレイと、複数のレジスタを含むレジスタアレイとを有してよい。シーケンサは、複数の論理計算要素を予約しかつ制御し、それらを画像パイプラインのための競合管理、計算パイプライン、実行仲裁及び優先順位付けに組み立てるように構成されてよい。スケーラブル計算ファブリックはまた、固定ファンクションハードウェアユニットを含んでよい。その上、コンピューティングデバイスは、画像キャプチャデバイス又は画像表示デバイスであってよい。コンピューティングデバイスはまた、プリント環境内に統合されてよい。
【0054】
[例3]
ワークロードを印刷するためのプリントデバイスが、ここに記載される。プリントデバイスは、プリントオブジェクトモジュールを含む。プリントオブジェクトモジュールは、スケーラブル計算ファブリックによる処理のためのワークフローを決定し、ワークフローを処理するためのパイプラインを動的に構成するために構成されてよい。ワークフローは、パイプラインを用いて実行される。ワークフローは、画像ワークロードであってよい。さらに、ワークフローを処理することは、画像処理、画像エンハンスメント、画像解析、画像入力及び画像変換の少なくとも1又は複数を含んでよい。
【0055】
前述の説明において、開示した主題の様々な態様を説明した。説明のために、特定の数、システム、及び構成が、主題の完全な理解を提供すべく説明された。しかし、本開示を利用できる当業者にとって、主題が特定の詳細なしで実施され得ることが明らかである。他の例では、周知の特徴、コンポーネント、又はモジュールは、開示された主題をわかりにくくしないように、省略され、単純化され、組み合わせられ、又は分離された。
【0056】
開示した主題の様々な実施形態は、ハードウェア、ファームウェア、ソフトウェア、又はその組み合わせにおいて実施することができ、命令等のプログラムコード、機能、プロシージャ、データ構造体、ロジック、アプリケーションプログラム、設計表現、又は設計のシミュレーション、エミュレーション、及び製作用のフォーマットに関して又はそれとともに説明することができる。これらは、機械がアクセスすると、その結果機械が実行するタスクとなり、抽象的なデータのタイプ又は低レベルのハードウェアのコンテキストを定義する、又は成果を生じる。
【0057】
複数のシミュレーションのために、プログラムコードは、ハードウェア記述言語、又は、原則的に実行のために期待されるハードウェアの設計の方法のモデルを提供する別の機能記述言語を用いてハードウェアを表してよい。プログラムコードは、アセンブリ言語若しくは機械語、又はコンパイル及び/又はインタプリタされ得るデータであってよい。さらに、どのような形にしても動作を起こすこと又は結果をもたらすことをソフトウェアと言うことは、技術的によくあることである。そのような表現は、プロセッサに動作を実行させ又は結果を生成させる処理システムによるプログラムコードの実行を述べることの簡潔な表現の方法にすぎない。
【0058】
プログラムコードは、例えば、複数のストレージデバイス、及び/又は、ソリッドステートメモリ、複数のハードドライブ、複数のフロッピー(登録商標)ディスク、光学ストレージ、複数のテープ、フラッシュメモリ、複数のメモリスティック、複数のデジタルビデオディスク、複数のデジタル多用途ディスク(DVD)などを含む関連機械読み取り可能又は機械アクセス可能媒体のような、揮発性及び/又は不揮発性メモリと、機械アクセス可能な生物学的状態を保存するストレージのようなよりエキゾチックな媒体に格納されてよい。機械可読媒体は、アンテナ、光ファイバ、通信インタフェースなどのような機械によって可読な形で、情報を格納、送信、又は受信するための任意の有形のメカニズムを含んでよい。プログラムコードは、パケット、シリアルデータ、パラレルデータなどの形で送信されてよく、圧縮又は暗号化されたフォーマットで使用されてよい。
【0059】
プログラムコードは、それぞれが、プロセッサと、プロセッサによって読み取り可能な揮発性及び/又は不揮発性メモリと、入力デバイス及び/又は1若しくは複数の出力デバイスの少なくとも1つを含む、複数のモバイル又は固定コンピュータ、複数の携帯情報端末、複数のセットトップボックス、複数の携帯電話及びポケットベル(登録商標)及び他の複数の電子デバイスのような、複数のプログラム可能機械上で動作する複数のプログラム内に実装されてよい。プログラムコードは、開示された実施形態を実行し、出力情報を生成するために、入力デバイスを用いて入力されたデータに適用されてよい。出力情報は、1又は複数の出力デバイスに適用されてよい。当業者は、開示された主題の実施形態が、複数のマルチプロセッサ又はマルチコアプロセッサシステム、複数のミニコンピュータ、複数のメインフレームコンピュータ、及び仮想的に任意のデバイスに組み込まれ得る普及した又は小型のコンピュータ又はプロセッサを含む様々なコンピュータシステム構成で実施され得ることを理解してよい。開示された主題の実施形態は、また、分散型コンピューティング環境で実施され得、タスクは、通信ネットワークを通じてリンクされたリモートプロセッシングデバイスによって実行され得る。
【0060】
複数のオペレーションが、順次的なプロセスとして説明されてよく、いくつかのオペレーションは、ローカルに及び/又はシングル若しくはマルチプロセッサマシンによるアクセスのためにリモートに格納されたプログラムコードを用いて、実際には、並列に、同時に、及び/又は分散環境において実行されてよい。さらに、いくつかの実施形態において、オペレーションの順序は、開示された主題の意図から逸脱しない範囲で、再配置されてよい。プログラムコードは、組み込まれたコントローラによって又はそれと併用して使用されてよい。
【0061】
開示された主題が複数の例示的な実施形態を参照して説明されている一方で、本説明は、限定的な意味において解釈されることを意図していない。例示の複数の実施形態の様々な修正、及び当開示された主題に付随することが業者にとって明らかな主題の他の実施形態は、開示された主題の範囲内にあると考えられる。
図1
図2
図3
図4
図5
図6