(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024001330
(43)【公開日】2024-01-09
(54)【発明の名称】1つ又は複数のニューラル・ネットワークを使用するビデオ・アップサンプリング
(51)【国際特許分類】
G06T 1/40 20060101AFI20231226BHJP
【FI】
G06T1/40
【審査請求】有
【請求項の数】20
【出願形態】OL
(21)【出願番号】P 2023188131
(22)【出願日】2023-11-02
(62)【分割の表示】P 2022515469の分割
【原出願日】2020-08-26
(31)【優先権主張番号】16/565,088
(32)【優先日】2019-09-09
(33)【優先権主張国・地域又は機関】US
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.BLUETOOTH
(71)【出願人】
【識別番号】501450960
【氏名又は名称】エヌビディア コーポレーション
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】リュー、シーグイ
(72)【発明者】
【氏名】レ、マチュー
(72)【発明者】
【氏名】タオ、アンドリュー
(57)【要約】
【課題】ビデオを改良するための装置、システム、及び技術が開示されている。
【解決手段】少なくとも一実施例では、1つ又は複数のニューラル・ネットワークは、より低い解像度ビデオからアップサンプリングされたフレームを使用してより高い解像度ビデオを生成するために使用される。
【選択図】
図2A
【特許請求の範囲】
【請求項1】
1つ又は複数のニューラル・ネットワークを使用して、より高い解像度ビデオの前に推論したフレームと一体化されたより低い解像度ビデオのアップサンプリングされたフレームを使用する前記より高い解像度ビデオを生成するように構成された1つ又は複数の算術論理演算ユニット(ALU)を備えたプロセッサ。
【発明の詳細な説明】
【技術分野】
【0001】
本出願は、PCT出願であり、2019年9月9日出願の米国特許出願第16/565,088号、発明の名称「VIDEO UPSAMPLING USING ONE OR MORE NEURAL NETWORKS」の優先権を主張し、その全開示内容を、あらゆる目的のために参照により本明細書に組み込む。
【0002】
少なくとも一実施例は、人工知能を実行し容易にするために使用される処理リソースに関する。たとえば、少なくとも一実施例は、本明細書に記載の様々な新規の技法によりニューラル・ネットワークを訓練するために使用されるプロセッサ又はコンピューティング・システムに関する。
【背景技術】
【0003】
ビデオ・コンテンツは、様々なデバイス上で、様々なリソースから、増え続ける様々な方法で消費されているので、ビデオ・コンテンツの品質がそのコンテンツを表示するために使用されるタイプのデバイスに適切なものより小さい状況がある。コンテンツ品質を改善するための解決法はしばしば、アーティファクトを経験し、又は所望のものより品質が低く、ライブ・ビデオを得るのが難しい可能性がある。
【発明の概要】
【課題を解決するための手段】
【0004】
本開示による様々な実施例を、図面を参照して記載する。
【図面の簡単な説明】
【0005】
【
図1A】少なくとも一実施例による、処理又は生成することができる画像データを示す図である。
【
図1B】少なくとも一実施例による、処理又は生成することができる画像データを示す図である。
【
図2A】少なくとも一実施例による、ビデオ・コンテンツをアップサンプリングするための解決法を示す図である。
【
図2B】少なくとも一実施例による、ビデオ・コンテンツをアップサンプリングするための解決法を示す図である。
【
図3】少なくとも一実施例による、ビデオ・コンテンツの一時アンチエイリアス・アップスケーリング用システムのコンポーネントを示す図である。
【
図4】少なくとも一実施例による、ビデオ・コンテンツをアップサンプリングするためのプロセスを示す図である。
【
図5】少なくとも一実施例による、アップサンプリングされたビデオ・フレームを推論するプロセスの一部を示す図である。
【
図6】少なくとも一実施例による、1つ又は複数のニューラル・ネットワークを使用した訓練及び推論のためのシステムを示す図である。
【
図7】少なくとも一実施例による、1つ又は複数のニューラル・ネットワークを訓練するためのシステムを示す図である。
【
図8】少なくとも一実施例による、ニューラル・ネットワークの構造を示す図である。
【
図9A】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
【
図9B】少なくとも一実施例による、推論及び/又は訓練論理を示す図である。
【
図10】少なくとも一実施例による、例示的データ・センタ・システムを示す図である。
【
図11】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図12】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図13】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図14】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図15A】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図15B】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図15C】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図15D】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図15E】少なくとも一実施例による、共有プログラミング・モデルを示す図である。
【
図15F】少なくとも一実施例による、共有プログラミング・モデルを示す図である。
【
図16】少なくとも一実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。
【
図17A】少なくとも一実施例による、例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。
【
図17B】少なくとも一実施例による、例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。
【
図18A】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
【
図18B】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
【
図19】少なくとも一実施例による、コンピュータ・システムを示す図である。
【
図20A】少なくとも一実施例による、並列プロセッサを示す図である。
【
図20B】少なくとも一実施例による、パーティション・ユニットを示す図である。
【
図20C】少なくとも一実施例による、処理クラスタを示す図である。
【
図20D】少なくとも一実施例による、グラフィックス・マルチプロセッサを示す図である。
【
図21】少なくとも一実施例による、マルチ・グラフィックス・プロセッシング・ユニット(GPU)システムを示す図である。
【
図22】少なくとも一実施例による、グラフィックス・プロセッサを示す図である。
【
図23】少なくとも一実施例による、プロセッサのマイクロ・アーキテクチャを示す図である。
【
図24】少なくとも一実施例による、深層学習アプリケーション・プロセッサを示す図である。
【
図25】少なくとも一実施例による、例示的ニューロモーフィック・プロセッサを示す図である。
【
図26】少なくとも一実施例による、グラフィックス・プロセッサの少なくとも一部を示す図である。
【
図27】少なくとも一実施例による、グラフィックス・プロセッサの少なくとも一部を示す図である。
【
図28】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部を示す図である。
【
図29A】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部を示す図である。
【
図29B】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部を示す図である。
【
図30】少なくとも一実施例による、並列処理ユニット(PPU)を示す図である。
【
図31】少なくとも一実施例による、汎用処理クラスタ(「GPC」)を示す図である。
【
図32】少なくとも一実施例による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニットを示す図である。
【
図33】少なくとも一実施例による、ストリーミング・マルチプロセッサを示す図である。
【発明を実施するための形態】
【0006】
少なくとも一実施例では、ビデオ・フレームのシーケンス100は、
図1Aに示すように、ビデオ・ストリーム上で受信することができる。少なくとも一実施例では、このシーケンスからのビデオ・フレームは、少なくとも1つのプレーヤ用の現在のゲーム・セッション内でゲームプレイを代表するビデオ・フレームを示すゲーム・エンジン102によって生成される。少なくとも一実施例では、ビデオ・フレームは、ビデオ・ホスティング・サイトなどの別のソースから受信することができ、そのビデオ・ホスティング・サイトによってそのビデオ・コンテンツのホスティング後のあらゆるときに受信することができる。少なくとも一実施例では、連続したビデオ・フレームは、ゲームプレイの状態の変化による前のビデオ・フレームからの変更を含むことができる。少なくとも一実施例では、ゲーム・エンジン102によって生成されるシーケンス100は、デフォルト又は特定の解像度又は表示サイズを有することができる。少なくとも一実施例では、シーケンス100のビデオ・フレームの解像度は、好ましくは可能な限りより、又はゲーム・エンジン102によって示されるゲームプレイ・ビデオを表示するために使用されるモニタ、タッチ・スクリーン、又はテレビなどのシーケンス100を見るためのディスプレイ104の現在の解像度設定より小さい可能性がある。
【0007】
少なくとも一実施例では、アップサンプリング・システム152(又は、サービス、モジュール、若しくはデバイス)を使用して、
図1Bの
図150に示すように、シーケンス100の個別のフレームをアップスケーリングすることができる。少なくとも一実施例では、ゲーム・エンジン102からのフレームは、ディスプレイ104上により高い解像度で表示することができるより高い解像度シーケンスを生成するため、個別のフレームの解像度を増加させるために、アップサンプリング・システム152に供給することができる。少なくとも一実施例では、行われるアップサンプリングの量は、1080pから4kの解像度までのシーケンス100の初期解像度及びディスプレイ104のターゲット解像度に左右される可能性がある。少なくとも一実施例では、追加の処理は、アンチエイリアス及び一時平滑化を含むことができるように、アップサンプリング・プロセスの一部として行うことができる。少なくとも一実施例では、ガウス・フィルタを利用するものなどの、あらゆる適当なアップサンプリング・アルゴリズムを利用することができる。少なくとも一実施例では、アップサンプリング・プロセスは、フレームごとベースで適用することができるジッタを考慮する。
【0008】
少なくとも一実施例では、ディープ・ラーニングを使用して、シーケンスのアップサンプリングしたビデオ・フレームを推論することができる。少なくとも一実施例では、機械学習を利用しないスーパー・サンプリング・アルゴリズムは、ビデオ・シーケンスの現在の入力フレームをアップサンプリングに使用することができる。少なくとも一実施例では、組み合わせた方法で、初期アンチエイリアス及びアップサンプリングを提供する一時アンチエイリアス・アップサンプリング(TAAU)アルゴリズムを使用することができる。少なくとも一実施例では、対応するシーケンスのビデオ・フレームからの情報を使用して、より高い品質のアップサンプリングされた画像を推論することができる。少なくとも一実施例では、データからの学習を必要としないレンダリング・パイプラインの前の知識に基づく1つ又は複数のヒューリスティックを使用することができる。少なくとも一実施例では、これは、アップサンプリングされた解像度でサンプルをジッタ・アウェア・アップサンプリング及び蓄積することを含むことができる。少なくとも一実施例では、
図2Aの
図200に示すように、アップサンプリング・アルゴリズムのみで生成されるより高い品質のアップサンプリングされた出力画像204を推論するために、少なくとも1つのニューラル・ネットワークを含むアップサンプラ・システム210への入力として、現在の入力ビデオ・フレーム202及び前の推論されたフレーム206とともに、この前のプロセス・データ208を提供することができる。
【0009】
少なくとも一実施例では、アップサンプリング・システム210は、一時超サンプリング用の深層学習を提供し、画像又はビデオ・フレームのストリーム(又は、他のシーケンス又はファイル)上にアンチエイリアス及び超解像度を提供することができる。少なくとも一実施例では、ベーシック・アップサンプリング・アプローチを
図2Bの
図250で示すように使用することができる。少なくとも一実施例では、低解像度ピクセル252は、多数のより高い解像度(又はより小さい)ピクセル254にセグメント化することができる。少なくとも一実施例では、アップサンプリングは
図2Bに示すように4xアップサンプリングであることができ、入力画像の各ピクセルは4つのより高い解像度ピクセルにセグメント化される。少なくとも一実施例では、低解像度ピクセル252でのサンプル256の位置を使用して、1つ又は複数の対応する高解像度ピクセルに対するアップサンプリング・カーネルを算出することができる。少なくとも一実施例では、このカーネルは、ぼやけ、エンボス加工、鮮明化、又はエッジ検出の少なくとも1つを提供する。
【0010】
少なくとも一実施例では、システム300は、
図3に示すように、画像フレームのシーケンスのアップサンプリングを行うことができる。少なくとも一実施例では、シーケンス又はストリームのビデオ・フレームに対応する入力画像302が受信される。少なくとも一実施例では、入力画像302は、より低解像度の濃い画像である。少なくとも一実施例では、アップサンプリング・モジュール304(又は、システム、コンポーネント、デバイス、又はサービス)は、上で論じ、
図2Bを参照して図示するようなアップサンプリング・アルゴリズムを適用することができ、サブピクセル・オフセット・アウェア・アップサンプリングを提供することができる。少なくとも一実施例では、このアップサンプリングされた画像は、訓練されたニューラル・ネットワーク320に供給することができる。少なくとも一実施例では、訓練されたネットワーク320は、より高品質のアップサンプリングされた画像又はビデオ・フレームを推論しようと試みるために、追加入力を受け入れることができる。少なくとも一実施例では、訓練されたネットワーク320はまた、入力ビデオ・フレームとして前の推論されたフレームからのデータを受け入れる。少なくとも一実施例では、シーケンス内の前のフレームに対して推論された濃く、大きな履歴画像328を利用して、訓練したネットワーク320に履歴入力データを提供することができる。少なくとも一実施例では、モーション・ワープ・モジュール330又はプロセスを適用して、バイキュービック・ワープ履歴画像308を生成することができる。少なくとも一実施例では、モーション・ワーピングを使用して、データに小さなオフセットを適用し、1つ又は複数の制約を満たすことができる。少なくとも一実施例では、オフセットは、画像の一部に対する決定された又は予測されたモーションに少なくとも部分的によるものである。少なくとも一実施例では、履歴画像308は、色空間トランスレーション・モジュール310を使用して処理して、たとえば、ルマ値及び2つのクロマ値を含むYCoCg色空間などの、特定の色空間内にバイキュービック・ワーピング画像312を生成することができる。少なくとも一実施例では、バイキュービック・ワーピング画像312をルマ決定モジュール318に供給して、訓練されたネットワーク320への入力としてルマ特定画像データを提供することができる。少なくとも一実施例では、ルマ決定モジュール318はまた、一時アンチエイリアス・モジュール314によって生成されたアンチエイリアス画像316を受け入れて、処理された画像上のアップサンプリングの結果を円滑化するためにアンチエイリアスされたルマ値を提供することができる。少なくとも一実施例では、ニューラル・ネットワーク320への入力として提供される履歴画像は、優れた鮮明な高解像度画像への一時収束を助けることができる、適用された決定ジッタ・オフセットに部分的に基づいて、現在のフレーム306とある程度、既に一体化させることができる。
【0011】
少なくとも一実施例では、訓練したニューラル・ネットワーク320は、推論された出力画像326を作り出すために、入力画像302及び履歴画像328を共に一体化するように使用することができる、一体化ファクタ及び多数のカーネルを生成する。少なくとも一実施例では、出力画像326は、アップスケーリングされた画像306と同じ解像度を有する。少なくとも一実施例では、カラーライザ・モジュール324を使用して、たとえYCoCg色空間内の画像データ上で操作される訓練されたネットワーク320であっても、出力画像326をRGB色空間内にさせることなど、別の色空間変換を行うことができる。少なくとも一実施例では、訓練されたモデル320によって推論されたカーネルは、対応するシーケンスの次の入力ビデオ・フレームに対する履歴画像328としても働く、出力画像326の認知品質を改善するのを助けることができる。少なくとも一実施例では、訓練されたネットワーク320から出力されたカーネル・ファクタを適用して、ゴースティング又は処理アーティファクトの鮮明度及び減少を含むことができるような、様々な品質の推論されたアップサンプリング画像326を改善することができる。少なくとも一実施例では、このカーネル・データの少なくともいくつかは、シーケンスの1つ又は複数のその後に処理されたフレーム上の品質を改善しようと試みるために、その後の画像又はビデオ・フレームに対する訓練されたネットワーク320に追加の入力322として提供することができる。
【0012】
少なくとも一実施例では、ニューラル・ネットワーク320は、注釈付き画像又はビデオ・フレームを含むデータ・セットを使用して訓練される。少なくとも一実施例では、アップサンプリングされる画像、及び対応するアンチエイリアス及びアップサンプリングされたより高解像度の画像を含む、画像の対が訓練に使用される。少なくとも一実施例では、ニューラル・ネットワーク320は、これらの対の画像間の適当なマッピングを学習するために訓練することができる。少なくとも一実施例では、ニューラル・ネットワーク320はまた、適用される適当な一体化ファクタ及び1つ又は複数のカーネル・ファクタを決定するために訓練することができる。少なくとも一実施例では、対応する損失値を最小限に抑えるようにネットワーク・パラメータを最適化することなどによって、訓練中にニューラル・ネットワーク320を最適化するために、マルチファクタ損失関数を利用することができる。少なくとも一実施例では、画像の品質の人間感知をモデリングすることは数学的に捕捉するのが複雑である可能性があるので、マルチファクタ損失関数が利用される。少なくとも一実施例では、ニューラル・ネットワーク320などのネットワークを訓練するために使用される損失関数は、スタイル・コンポーネント及び一時コンポーネントの両方と、エラーを最小限に抑えるためのL2損失などの他の損失を利用することができる。少なくとも一実施例では、空間的コンポーネントは、ゴースティング又はアーティファクトなどのその他の発生を最小限に抑えるのを助け、一時コンポーネントは出力シーケンスのフレーム間の円滑なモーションを助ける。少なくとも一実施例では、これらのフレーム対のシーケンスは、一時的円滑化を改善するために、訓練に使用される。
【0013】
少なくとも一実施例では、ニューラル・ネットワーク320は、各ピクセルに対する様々なファクタを予測する。少なくとも一実施例では、ネットワーク320は、対応する画像入力に適用される一体化ファクタ及びカーネルの9つの要素を含む、10のファクタを予測又は推論する。少なくとも一実施例では、予測を生成する場合、これらの9つのファクタを現在のアップサンプリングされたフレーム・データに適用することができる。少なくとも一実施例では、決定した一体化ファクタを使用して、このような処理及びアップサンプリングしたフレームを前に推論したフレームからのデータと一体化することができる。少なくとも一実施例では、1つのルマ・チャネルだけをこの処理及び一定化に使用し、全色画像を使用するが、はるかに少ないデータ管理及び処理しか必要としない同様の結果を提供することができる。
【0014】
少なくとも一実施例では、損失はピクセルごとの重み付けファクタで重み付けすることができる。少なくとも一実施例では、ピクセルごとの重み付けは、1つ又は複数のオブジェクトがシーケンスのビデオ・フレーム内に突然見えるようになる又は提示されるように、ディスオクルージョンがある可能性があるエリア、又は前にあったがもう閉塞されていない領域により注意を向けることができる。少なくとも一実施例では、上手なディスオクルージョン管理はゴースティング・アーティファクトの存在を減少させるのを助けることができる。少なくとも一実施例では、この重みファクタは、前のワーピングされた基準フレームと現在の基準フレームを比較することによって算出される。少なくとも一実施例では、この前にワーピングされた基準フレームのピクセルが対応する現在の基準フレームの色分布の境界ボックス内にある場合、この位置にはディスオクルージョンがない可能性が高いという想定を行うことができる。少なくとも一実施例では、前にワーピングされた基準フレームと現在の基準フレームの間の色にかなりの差があることが決定された場合、高い重み付けをこの空間的損失に加えることができる。少なくとも一実施例では、空間的損失のこのように高い重み付けは、空間的損失に現在と前の基準フレームの間の色の大きな差があるエリアによってより影響を与えさせることができる。
【0015】
少なくとも一実施例では、最後にワーピングされたフレーム予測だけが、前の予測のセットの代わりに、現在のフレームを入力として備えている。少なくとも一実施例では、この最後の予測は、過去のフレームからの情報に基づいており、アーティファクトを最小限に抑え、推論された画像に優れた鮮明度を提供するために、より最近の情報を含む。少なくとも一実施例では、訓練中の予測の際のエラーは、損失関数の使用により暗黙的に管理される。というのは、悪いフレーム又はアーティファクトを有するフレームは、評価の際に高い損失値を有し、予測を破棄させることになるからである。少なくとも一実施例では、シーン変更又はカメラ・パンによる急激な変更はまた、最後の予測を破棄させ、アップサンプリングに使用させないことになる可能性がある。というのは、現在のフレームに対して、無関係である、又は少なくとも実質的に異なる可能性が高い色値又は位置の大きな変更があるからである。
【0016】
図6を参照して記載したような、少なくとも一実施例では、コンテンツ・プロバイダによって、又はクラウド・リソース・プロバイダによって、クライアント・デバイス上などの様々な位置でスーパーサンプリングを行うことができる。少なくとも一実施例では、少なくとも1つのグラフィックス・プロセッサを備えたクライアント・デバイスは、より低い解像度のデータを受信又は取得し、その後、アップサンプリングされたデータを表示又は提示する前にこのデータをアップサンプリングする。少なくとも一実施例では、より低い解像度のデータは、ストリーム上で受信され、ゲーム又はレンダリング・エンジンによって生成され、カメラ又はセンサによって作り出され、又はファイル内に含まれるビデオ・データを含むことができる。少なくとも一実施例では、アップサンプリングは、ほぼリアルタイムで起こる、又はその後の閲覧若しくは提示のためにオフラインで起こることが可能である。少なくとも一実施例では、ゲーミングなどのアプリケーションは、ゲーミング経験を楽しみ、かなりのラグによる不利益がないようにするために、プレーヤが、知覚可能なラグなくほぼリアルタイムでアップスケールされたコンテンツを見ることを可能にするために、クイック・アップサンプリングを必要とする可能性がある。
【0017】
少なくとも一実施例では、1つ又は複数の他の入力322は、現在のフレームと前の予測されたフレームの間で決定された異なる情報を含むことができる。少なくとも一実施例では、これらの入力は、ピクセル、又はピクセル値に大きな差があるピクセルの領域を識別するのを助けることができる。少なくとも一実施例では、この情報は、画像の異なる領域で特定のピクセル値をどれくらい重み付けするかを判断するために、訓練又は推論時間に有利に使用することができる。少なくとも一実施例では、隠された履歴データはまた、ネットワーク320から生成し、その後のフレームに対する入力として使用することができ、これにより、ネットワーク320が、その後のフレームに有用である、又はその後のフレームを分析又は推論するための開始点として働くことができる情報を課すことが可能になる。
【0018】
少なくとも一実施例では、ビデオ・フレームのアップサンプリングは、
図4に示したプロセス400を使用して行うことができる。少なくとも一実施例では、より低い解像度ビデオのストリームが受信される(402)、或いは得られる。少なくとも一実施例では、このストリームの個別のフレームは、より高い解像度バージョンのディスプレイ用のこのようなストリームを提供するために、受信されると分析することができる。少なくとも一実施例では、このストリームの現在のビデオ・フレームは、アップサンプリング・アルゴリズムを使用してアップサンプリングすることができる(404)。少なくとも一実施例では、前のワーピングされたビデオ・フレーム予測が得られ(406)、アップサンプリングにより得られるのと同じ解像度である。少なくとも一実施例では、これらのフレームは、ターゲット色空間、及び処理されるこれらのフレームの表現のために使用されるそのターゲット空間のシングル・チャネルに適当に変換される(408)。少なくとも一実施例では、これらのフレームは、一体化ファクタ及び1つ又は複数のカーネル・ファクタを決定するために、訓練されたニューラル・ネットワークへの入力として、適用可能な場合には少なくともいくつかの追加の情報を備えている(410)。少なくとも一実施例では、これらの推論されたファクタ及び入力フレームを使用して、高い画像品質及びターゲット・アップサンプリング解像度を備えた対応する現在の入力ビデオ・フレームの出力バージョンを生成する(412)。少なくとも一実施例では、この出力ビデオ・フレームは、ビデオ・ストリームの一部として表示するために提供することができ(414)、それによって、第1のより低い解像度で受信されたビデオ・ストリームは、アップサンプリングから優れた画像品質及び少ないアーティファクトを備えた第2のより高い解像度で表示させることができる。
【0019】
少なくとも一実施例では、ビデオ・フレームのアップサンプリングは、
図4に示すプロセス400を使用して行うことができる。少なくとも一実施例では、ビデオ・データの現在のフレームが受信される(502)。少なくとも一実施例では、ビデオ・データのこの現在のビデオ・フレームは、アップスケーリング・プロセスを使用して、ターゲットのより高い解像度にアップサンプリングされる(504)。少なくとも一実施例では、このようなアップサンプリングされた現在のフレームは、訓練されたニューラル・ネットワークへの入力として、このターゲットのより高い解像度で前に推論されたフレームを備えている(506)。少なくとも一実施例では、この現在のビデオ・フレームの出力バージョンは、このアップサンプリングされた現在のフレーム及び前の推論されたフレームからのピクセル値の一体化に少なくとも部分的に基づいて推論される(508)。少なくとも一実施例では、この出力バージョンは、より低い解像度で受信したその後のビデオ・フレームの表示と、処理のために提供することができる(510)。
【0020】
ニューラル・ネットワーク訓練及び開発
増加する様々な産業及び応用例は、機械学習を利用している。少なくとも一実施例では、プロセッサ上で開発された深層ニューラル・ネットワーク(DNN)が、自動運転車からより速い薬物開発、セキュリティ・システム用の自動画像分析からビデオ・チャット・アプリケーション内のスマート・リアルタイム言語トランスレーションなどの別の使用ケースで使用されてきた。少なくとも一実施例では、深層学習は、人間の脳のニューラル学習プロセスをモデリングする技術であり、連続して学習し、連続してよりスマートになり、時間の経過とともにより迅速により適当な結果を運ぶ。子供は最初、大人によって様々な形状を正確に識別及び分類するように教示され、次第に、あらゆるコーチングなしで形状を識別することが可能になる。同様に、少なくとも一実施例では、同様のタスクを達成するように設計された深層学習又はニューラル学習システムは、オブジェクトに内容を割り当てながら、基本的オブジェクト、閉塞されたオブジェクトなどを識別するのがよりスマート及び効率的にするように訓練される必要がある。
【0021】
少なくとも一実施例では、人間の脳内のニューロンは受信された様々な入力を見て、重要なレベルがこれらの入力それぞれに割り当てられ、出力は作用する他のニューロン上に通過される。人工ニューロン又は知覚は、ニューラル・ネットワークの最も基本的モデルである。少なくとも一実施例では、知覚は、知覚が認識及び分類するように訓練されているオブジェクトの様々な特性を示す1つ又は複数の入力を受信することができ、これらの特性それぞれは、オブジェクトの形状を画定する際にその特性の重要性に基づいて特定の重みが割り当てられる。
【0022】
深層ニューラル・ネットワーク(DNN)は、高い精度で複雑な問題を迅速に解決するために、多量の入力データで訓練することができる多くの接続された知覚(たとえば、ノード)の多数の層を含む。一実例では、DNNモデルの第1の層は、自動車の入力画像を様々なセクションに分解し、線及び角度などの基本的パターンを見る。第2の層は、ホイール、フロントガラス、及びミラーなどのより高レベル・パターンを見るために線を組み立てる。次の層は車両のタイプを識別し、最後の数層は、入力画像用のラベルを生成して、特定の自動車ブランドのモデルを識別する。DNNが訓練されると、このDNNは、推論として知られているプロセス内でオブジェクト又はパターンを識別及び分類するために開発及び使用することができる。推論の実例(これによりDNNが所与の入力から有用な情報を抽出するプロセス)としては、ATMマシン内に預けられた小切手の手書きの数字を識別すること、写真内の友人の画像を識別すること、映画のおすすめを運搬すること、無人自動車内で異なるタイプの自動車、歩行者、及び道路障害物を識別及び分類すること、又はほぼリアルタイムで人間の会話をトランスレーションすることが挙げられる。
【0023】
訓練中、データは、入力に対応するラベルを示す予測が生成されるまで、フォワード伝搬フェーズでDNNを通して流れる。ニューラル・ネットワークが入力を正確にラベリングしない場合、正しいラベルと予測されたラベルの間のエラーが分析され、重みは、DNNが訓練データ・セット中で入力及び他の入力を正確にラベリングするまで、バックワード伝搬フェーズ中に各特性に対して調節される。複雑なニューラル・ネットワークを訓練するには、サポートされる浮動小数点乗法及び加算を含む、膨大な量の並列演算パフォーマンスを必要とする。推論は、訓練ほど数値計算的ではなく、訓練されたニューラル・ネットワークが、画像を分類し、会話をトランスレーションし、新しい情報を推論する前には見られなかった新しい入力に加えられるレイテンシ・センシティブ・プロセスである。
【0024】
ニューラル・ネットワークは、行列演算操作に大きくよるものであり、複雑なマルチ層ネットワークは、効率及び速度の両方に対して膨大な量の浮動小数点パフォーマンス及び帯域幅を必要とする。行列演算操作に最適化され、数十から数百のTFLOPSのパフォーマンスを運ぶ数千の処理コアでは、算出プラットフォームは、深層ニューラル・ネットワーク・ベースの人工知能及び機械学習アプリケーションに必要なパフォーマンスを運ぶことができる。
【0025】
図6は、少なくとも一実施例では、機械学習を訓練及び利用するために使用することができるシステム600のコンポーネントを示している。論じるように、様々なコンポーネントは、単一のエンティティ又は多数のエンティティの制御下にある可能性がある、コンピューティング・デバイス及びリソースの様々な組合せ、又は単一のコンピューティング・システムによって提供することができる。さらに、態様は異なるエンティティによってトリガ、初期化、又はリクエストすることができる。少なくとも一実施例では、ニューラル・ネットワークの訓練はプロバイダ環境606に関連付けられたプロバイダによって命令することができ、少なくとも一実施例では、訓練は、クライアント・デバイス602又は他のこのようなリソースを通してプロバイダ環境へのアクセスを有する顧客又は他のユーザによってリクエストすることができる。少なくとも一実施例では、訓練データ(又は、訓練されたニューラル・ネットワークによって分析されるデータ)は、プロバイダ、ユーザ、又は第三者コンテンツ・プロバイダ624によって提供することができる。少なくとも一実施例では、クライアント・デバイス602は、たとえば、デバイスのナビゲーションを助けるリクエストを発する、及び/又は命令を受信することができる、ユーザの代わりにナビゲーションされる車両又はオブジェクトである可能性がある。
【0026】
少なくとも一実施例では、リクエストは、プロバイダ環境606に受信される少なくとも1つのネットワーク604にわたって発することが可能である。少なくとも一実施例では、クライアント・デバイスは、デスクトップ・コンピュータ、ノートブック・コンピュータ、コンピュータ・サーバ、スマートフォン、タブレット・コンピュータ、ゲーミング・コンソール(ポータブル又はその他)、コンピュータ・プロセッサ、コンピューティング論理、及びセット・トップ・ボックスを含むような、このようなリクエストをユーザが生成及び送信することを可能にするあらゆる適当な電子及び/又はコンピューティング・デバイスであってもよい。(1つ又は複数の)ネットワーク604は、インターネット、イントラネット、イーサネット(登録商標)、携帯ネットワーク、ローカル・エリア・ネットワーク(LAN)、ピア間の直接無線接続のネットワークなどを含むような、リクエスト又は他のこのようなデータを伝達するためのあらゆる適当なネットワークを含むことができる。
【0027】
少なくとも一実施例では、本実例では、訓練及び推論マネージャ610にデータを転送することができる、インターフェース層608にリクエストを受信することができる。このマネージャは、データ又はコンテンツに対応するリクエスト及びサービスを管理するためのハードウェア及びソフトウェアを含むシステム又はサービスであってもよい。少なくとも一実施例では、このマネージャはニューラル・ネットワークを訓練するためのリクエストを受信することができ、訓練マネージャ612にリクエスト用のデータを提供することができる。少なくとも一実施例では、訓練マネージャ612は、リクエストによって特定されていない場合、使用される適当なモデル又はネットワークを選択することができ、関連する訓練データを使用してモデルを訓練することができる。少なくとも一実施例では、訓練データは、クライアント・デバイス602から受信された、又は第三者プロバイダ624から得られた、訓練データ・リポジトリ614に記憶されたデータのバッチであってもよい。少なくとも一実施例では、訓練マネージャ612は、本明細書で論じるように、LARCベース・アプローチを使用することなどによって、データを訓練することに責任がある可能性がある。ネットワークは、再帰ニューラル・ネットワーク(RNN)又は畳み込みニューラル・ネットワーク(CNN)などのあらゆる適当なネットワークであってもよい。ネットワークが訓練され上手く評価されると、訓練されたネットワークは、たとえば、ユーザ、アプリケーション、又はサービスなどに対して異なるモデル又はネットワークを記憶することができる、モデル・レポジトリ616に記憶することができる。少なくとも一実施例では、多数の異なるファクタに基づいて利用することができるような、単一アプリケーション又はエンティティに対する多数のモデルがあってもよい。
【0028】
少なくとも一実施例では、その後の時点では、訓練されたニューラル・ネットワークによって少なくとも部分的に決定又は加えられたコンテンツ(たとえば、パス決定)又はデータに対するクライアント・デバイス602(又は別のこのようなデバイス)から受信することができる。このリクエストは、たとえば、1つ又は複数の推論又は他の出力値、分類、又は予測を得るためにニューラル・ネットワークを使用して処理される入力データを含むことができる。少なくとも一実施例では、入力データはインターフェース層608に受信し、推論モジュール618に案内することができるが、異なるシステム又はサービスも使用することができる。少なくとも一実施例では、推論モジュール618は、推論モジュール618にローカルに既に記憶されていない場合、モデル・リポジトリ616から、本明細書で論じるように訓練された深層ニューラル・ネットワーク(DNN)などの適当な訓練されたネットワークを得ることができる。推論モジュール618は、訓練されたネットワークへ入力としてデータを提供し、その後、出力として1つ又は複数の推論を生成することができる。これは、たとえば、入力データのインスタンスの分類を含むことができる。少なくとも一実施例では、推論はその後、ユーザへのディスプレイ又は他の通信のためにクライアント・デバイス602に伝達することができる。少なくとも一実施例では、ユーザ用のコンテキスト・データはまた、推論を生成する、又はインスタンスを得た後にユーザに戻るデータを決定する際に、ネットワークへの入力として有用である可能性があるユーザに関するデータを含むことができる、ユーザ・コンテキスト・データ・リポジトリ622に記憶させることができる。少なくとも一実施例では、入力又は推論データの少なくともいくつかを含むことができる関連データはまた、さらなるリクエストを処理するためにローカル・データベース620に記憶することができる。少なくとも一実施例では、ユーザは、プロバイダ環境のリソース又は機能にアクセスするためにアカウント又は他の情報を使用することができる。少なくとも一実施例では、許可され利用可能である場合、さらなるリクエストに対するより正確な推論を提供するために、ユーザ・データを収集し、モデルをさらに訓練するために使用することができる。少なくとも一実施例では、リクエストは、クライアント・デバイス602上で実行する機械学習アプリケーション626へのユーザ・インターフェースを通して受信し、結果は同じインターフェースを通して表示することができる。クライアント・デバイスは、リクエストを生成し、結果又は反応を処理するためのプロセッサ628及びメモリ630などのリソースと、機械学習アプリケーション626用データを記憶するための少なくとも1つのデータ記憶要素632を含むことができる。
【0029】
少なくとも一実施例では、プロセッサ628(又は、訓練マネージャ612又は推論モジュール618のプロセッサ)は、中央処理ユニット(CPU)である。しかし、記載したように、このような環境においてリソースは、GPUを利用して、少なくとも特定のタイプのリクエストに対するデータを処理することができる。数千のコアで、GPUは実質的に並列作業負荷を処理するように設計され、したがって、ニューラル・ネットワークを訓練し、予測を生成するための深層学習において人気となった。オフライン・ビルドに対するGPUの使用はより大きく複雑なモデルのより迅速な訓練を可能にしたが、オフラインで予測を生成することは、リクエスト時間入力特性を使用することができず、予測は特性のすべての順列のために生成し、リアルタイム・リクエストを行うためにルックアップ・テーブルに記憶しなければならないことを暗示している。深層学習フレームワークがCPUモードをサポートし、モデルは合理的なレイテンシでCPU上のフィード・フォワードを行うのに十分小さく単純である場合、CPUインスタンス上のサービスはモデルをホスティングすることができる。この場合、訓練はGPU上でオフラインで行い、推論はCPU上でリアルタイムで行うことができる。CPUアプローチが実現可能でない場合、サービスはGPUインスタンス上で実行することができる。GPUはCPUとは異なるパフォーマンス及びコスト特徴を有するが、GPUにランタイム・アルゴリズムをオフロードするサービスを実行することは、CPUベース・サービスとは異なるように設計する必要がある可能性がある。
【0030】
少なくとも一実施例では、ビデオ・データは、プロバイダ環境606内での向上のため、クライアント・デバイス602から提供することができる。少なくとも一実施例では、ビデオ・データは、クライアント・デバイス602上の向上のために処理することができる。少なくとも一実施例では、ビデオ・データは、第三者コンテンツ・プロバイダ624からストリーミングし、第三者プロバイダ624、プロバイダ環境606、又はクライアント・デバイス602によって向上することができる。
【0031】
図7は、少なくとも一実施例では、データを分類する、又は推論を生成するために使用することができるシステム700を示している。少なくとも一実施例では、監視された及び監視されていない訓練は両方とも、本明細書で論じる少なくとも一実施例で使用することができる。少なくとも一実施例では、訓練データ702(たとえば、分類又はラベリングされたデータ)のセットは、訓練データとして働くように入力として提供される。少なくとも一実施例では、訓練データは、ニューラル・ネットワークが訓練される少なくとも1つのタイプのオブジェクトのインスタンスと、そのタイプのオブジェクトを識別する情報を含むことができる。少なくとも一実施例では、訓練データは、各画像がラベル、メタデータ、分類、又はそれぞれの画像内で提示されるオブジェクトのタイプを識別する他の情報を含む、又はこれに関連付けられた、オブジェクトのタイプの表示をそれぞれ含む画像のセットを含むことができる。様々な他のタイプのデータは、テキスト・データ、音声データ、ビデオ・データなどを含むことができるように、訓練データとしても使用することができる。少なくとも一実施例では、訓練データ702は、訓練マネージャ704に訓練入力として提供される。少なくとも一実施例では、訓練マネージャ704は、ニューラル・ネットワーク(又は、他のモデル又はアルゴリズムなど)を訓練するために、訓練アプリケーションを実行する1つ又は複数のコンピューティング・デバイスなどのハードウェア及びソフトウェアを含むシステム又はサービスである可能性がある。少なくとも一実施例では、訓練マネージャ704は、訓練のために使用されるモデルのタイプを示す命令又はリクエストを受信する。少なくとも一実施例では、モデルは、人工ニューラル・ネットワーク、深層学習アルゴリズム、学習分類子、ベイジアン・ネットワークなどを含むことができるように、このような目的に有用なあらゆる適当な統計モデル、ネットワーク、又はアルゴリズムである可能性がある。少なくとも一実施例では、訓練マネージャ704は、適当なリポジトリ706から初期モデル又は他の訓練されていないモデルを選択し、訓練データ702を利用してモデルを訓練し、同様のタイプのデータを分類する、又は他のこのような推論を生成するために使用することができる訓練されたモデル708(たとえば、訓練された深層ニューラル・ネットワーク)を生成することができる。訓練データが使用されない少なくとも一実施例では、適当な初期モデルはさらに、訓練マネージャ704ごとに入力データ上での訓練のために選択することができる。
【0032】
少なくとも一実施例では、モデルは、選択したモデルのタイプに部分的によるように、多数の異なる方法で訓練することができる。少なくとも一実施例では、機械学習アルゴリズムは訓練データのセットを備えることができ、モデルは訓練プロセスによって作り出されたモデル・アーティファクトである。少なくとも一実施例では、訓練データの各インスタンスは、ターゲット又はターゲット属性と呼ぶことができる、正しい答え(たとえば、分類)を含む。少なくとも一実施例では、学習アルゴリズムは、ターゲットに入力データ属性をマッピングするデータを訓練する際のパターンを発見し、回答を予測し、これらのパターンを捕捉する機械学習モデルが出力される。少なくとも一実施例では、機械学習モデルはその後、ターゲットが特定されない新しいデータ上で予測を得るために使用することができる。
【0033】
少なくとも一実施例では、訓練マネージャ704は、バイナリ分類、マルチクラス分類、及び回帰モデルを含む機械学習モデルのセットから選択することができる。少なくとも一実施例では、使用されるモデルのタイプは、予測されるターゲットのタイプに少なくとも部分的による可能性がある。少なくとも一実施例では、バイナリ分類問題に対する機械学習モデルは、2つの可能なクラスの一方などのバイナリ結果を予測する。少なくとも一実施例では、ロジスティック回帰などの学習アルゴリズムを使用して、バイナリ分類モデルを訓練することができる。少なくとも一実施例では、マルチクラス分類問題に対する機械学習モデルは、3つ以上の結果の1つを予測するためなどの、多数のクラスに対して予測を生成することを可能にする。多項式ロジスティック回帰は、マルチクラス・モデルを訓練するのに有用である可能性がある。回帰問題に対する機械学習モデルは、数値を予測する。線形回帰は、回帰モデルを訓練するのに有用である可能性がある。
【0034】
少なくとも一実施例では、一実施例による機械学習モデルを訓練するために、訓練マネージャは、入力訓練データ・ソースと、予測されるターゲットを含むデータ属性の名前、所要のデータ変換命令、及び学習アルゴリズムを制御するための訓練パラメータなどの他の情報を決定しなければならない。少なくとも一実施例では、訓練プロセス中、訓練マネージャ704は、訓練データ・ソース内で特定されるターゲットのタイプに基づいて、適当な学習アルゴリズムを自動的に選択することができる。少なくとも一実施例では、機械学習アルゴリズムは、訓練プロセス及び得られる機械学習モデルの特定の性状を制御するために使用されるパラメータを受け入れることができる。これらは、本明細書では、訓練パラメータと呼ばれる。少なくとも一実施例では、訓練パラメータが特定されない場合、訓練マネージャは、機械学習タスクの大きな範囲で十分働くように知られているデフォルト値を利用することができる。値を特定することができる訓練パラメータの実例は、最大モデル・サイズ、訓練データ上のパスの最大数、シャッフル・タイプ、正則化タイプ、学習レート、及び正則化量を含む。デフォルト・セッティングは、微調整パフォーマンスに値を調節するオプションで特定することができる。
【0035】
少なくとも一実施例では、最大モデル・サイズは、モデルの訓練中に作り出されるパターンのバイトの単位での合計サイズである。少なくとも一実施例では、モデルは、100MBのモデルなどの、デフォルトによって特定されたサイズで作り出すことができる。訓練マネージャがモデル・サイズを満たすのに十分なパターンを決定することができない場合、より小さいモデルを作り出すことができる。訓練マネージャが特定のサイズに適合するより多くのパターンを見つけた場合、最大カットオフは、学習されたモデルの品質に少なくとも影響を与えるパターンをトリミングすることによって行うことができる。モデル・サイズを選択することにより、モデルの予測品質と使用の費用の間のトレードオフの制御を行う。少なくとも一実施例では、より小さいモデルは、予測の品質に影響を与える最大サイズ限界内に適合するように多くのパターンを訓練マネージャに取り除かせることができる。少なくとも一実施例では、より大きいモデルは、リアルタイム予測へのクエリーを行うためにより費用がかかる可能性がある。少なくとも一実施例では、モデルが入力データではなくパターンを記憶するので、より大きな入力データ・セットは必ずしもより大きなモデルにつながらない。少なくとも一実施例では、パターンはより少なく単純である場合、得られたモデルは小さい。多数の生属性(入力カラム)又は誘導特性(データ変換の出力)を有する入力データは、訓練プロセス中に発見及び記憶されたより多くのパターンを有する可能性が高い。
【0036】
少なくとも一実施例では、訓練マネージャ704は、パターンを発見することを試みるために、訓練データ上で多数のパス又は反復を行うことができる。少なくとも一実施例では、10回のパスなどのデフォルト数のパスがあり、少なくとも一実施例では、最大100回のパスなどの最大数までのパスを設定することができる。少なくとも一実施例では、最大セットがない、又は収束基準、又は訓練プロセスの終了をトリガする他のファクタ・セットがある可能性がある。少なくとも一実施例では、訓練マネージャ704は、訓練中に(モデル収束のためなどの)パターンの品質を監視することができ、発見するためのデータ点又はパターンがそれ以上ない場合に訓練を自動的に停止することができる。少なくとも一実施例では、いくつかだけの観察結果を有するデータ・セットは、十分高いモデル品質を得るために、データ上でより多くのパスを必要とする可能性がある。より大きなデータ・セットは、多数のパスに対する需要を減らすことができる、多くの同様のデータ・ポイントを含むことができる。データ上でより多くのデータ・パスを選択する可能性のある影響は、モデル訓練がリソース及びシステム利用に関してより長くなり、より費用もかかることである。
【0037】
少なくとも一実施例では、訓練データは、訓練前に、又は訓練のパス間にシャッフルされる。少なくとも一実施例では、シャッフルは、本当にランダムな順序を生成するようにランダム又は疑ランダム・シャッフルであるが、特定のタイプのデータのグルーピングがないことを保証する代わりにいくつかの制約がある可能性がある、又はシャッフルされたデータをこのようなグルーピングが存在する場合などに再シャッフルすることがある。少なくとも一実施例では、シャッフルは、訓練アルゴリズムが同様のタイプのデータのグルーピング、又は連続してあまりに多くの観察結果に対する単一のタイプのデータに直面しないように、データが訓練のために利用される順序又は配置を変更する。少なくとも一実施例では、モデルはオブジェクトを予測するように訓練される可能性がある。少なくとも一実施例では、データはアップロードの前にオブジェクト・タイプによって分類されることがある。少なくとも一実施例では、アルゴリズムはその後、オブジェクト・タイプによってアルファベット順にデータを処理して、最初に特定のオブジェクト・タイプに対するデータのみに直面することができる。少なくとも一実施例では、モデルはオブジェクトのそのタイプに対するパターンを学習し始める。少なくとも一実施例では、モデルはその後、第2のオブジェクト・タイプに対するデータのみに直面し、そのオブジェクト・タイプに適合するようにモデルを調節しようとし、第1のオブジェクト・タイプに適合するパターンを劣化させる可能性がある。オブジェクト・タイプ間からのこのような急激な切替は、どのようにしてオブジェクト・タイプを正確に予測するかを学習しないモデルを作り出すことができる。少なくとも一実施例では、データ・タイプの比較的均一な分布が両方のステージで利用されるように、訓練データ・セットが訓練及び評価サブセットに分割される前に、少なくとも一実施例ではシャッフルを行うことができる。少なくとも一実施例では、訓練マネージャ704は、たとえば、疑ランダム・シャッフル技術を使用して、データをシャッフルすることができる。
【0038】
少なくとも一実施例では、機械学習モデルを少なくとも一実施例で作り出す場合に、訓練マネージャ704は、ユーザがセッティングを特定する、又はカスタム・オプションを適用することを可能にすることができる。少なくとも一実施例では、ユーザは、機械学習モデルの予測品質を評価するために予約される入力データの一部分を示す、1つ又は複数の評価セッティングを特定することができる。少なくとも一実施例では、ユーザは、どの属性及び属性変換がモデル訓練のために利用可能であるかを示すポリシーを特定することができる。少なくとも一実施例では、ユーザはまた、訓練プロセス及び得られたモデルの特定の性状を制御する様々な訓練パラメータを特定することができる。
【0039】
少なくとも一実施例では、訓練マネージャが、本明細書で論じる少なくとも1つの終了基準を使用することなどによって、モデルの訓練が完了したと決定すると、訓練されたモデル708は、有効性データ712を分類(或いは、これに対する推論を生成する)際に、分類子714による使用のために提供することができる。少なくとも一実施例では、これは、モデルに対する訓練モードとモデルに対する推論モードの間の論理移行を必要とする。しかし、少なくとも一実施例では、訓練されたモデル708は、訓練されたモデルの品質(又は別のこのような態様)を評価するために少なくとも1つのコンピューティング・リソース(たとえば、少なくとも1つのサーバのCPU又はGPU)上で実行するアプリケーション、プロセス、又はサービスを含むことができるエバリュエータ710まで最初に通過される。少なくとも一実施例では、モデルは、このモデルが新しい及びさらなるデータ上でターゲットを予測する際のパフォーマンスの少なくとも最小許容又は閾値レベルを提供するかどうかを決定するように評価される。そうではない場合、訓練マネージャ704は、このモデルを訓練し続ける可能性がある。少なくとも一実施例では、将来のデータ・インスタンスはしばしばターゲット値を知っていないので、ターゲット回答が知られているデータ上での機械学習の正確な測定基準をチェックし、将来のデータ上の予測精度のためのプロキシとしてこの判断を使用することが望ましい可能性がある。
【0040】
少なくとも一実施例では、訓練のために提供された訓練データ702のサブセットを使用してモデルが評価される。このサブセットは、上に論じたように、シャッフル及び分割アプローチを使用して決定することができる。少なくとも一実施例では、この評価データ・サブセットは、ターゲットでラベリングされ、したがって、評価のためのグランド・トゥルースのソースとして働くことができる。それから正則化する代わりに、訓練データを覚えているモデルに対してポジティブ評価が生成される可能性があるので、訓練に使用されたのと同じデータで機械学習モデルの予測精度を評価することは有用ではない。少なくとも一実施例では、訓練が完了すると、評価データ・サブセットは、訓練されたモデル708を使用して処理され、エバリュエータ710は、このモデルの対応する出力(又は、予測/観察結果)に対してグラント・トゥルース・データを比較することによって、このモデルの精度を決定することができる。少なくとも一実施例では、エバリュエータ710は少なくとも一実施例では、どれくらい予測及び真の値が一致するかを示す要約又はパフォーマンス測定基準を提供することができる。少なくとも一実施例では、訓練されたモデルが、少なくとも最小パフォーマンス基準、又は他のこのような精度閾値を満たさない場合、訓練マネージャ704は、さらなる訓練を行うように命令される、又はいくつかの例では、新しい又は異なるモデルを訓練しようと試みる可能性がある。少なくとも一実施例では、訓練されたモデル708が関連する基準を満たす場合、訓練されたモデルは分類子714による使用のために提供することができる。
【0041】
少なくとも一実施例では、機械学習モデルを生成及び訓練する場合、少なくとも一実施例では、正確な予測を行うことが可能なモデルにつながるモデル・セッティング又は訓練パラメータを特定することが望ましい可能性がある。少なくとも一実施例では、パラメータは、(フォワード及び/又はバックワードで)行われるパスの数、正則化又は改良、モデル・サイズ、及びシャッフル・タイプを含む。少なくとも一実施例では、評価データ上に最良の予測パフォーマンスを作り出すモデル・パラメータ・セッティングを選択することは、モデルのオーバーフィッティングにつながることがある。少なくとも一実施例では、モデルが、訓練及び評価データ・ソース内に生じるが、データ内のパターンを一般化できなかったパターンを記憶した場合にオーバーフィッティングが起こる。オーバーフィッティングはしばしば、訓練データが評価で使用されるすべてのデータを含む場合に起こる。少なくとも一実施例では、オーバーフィッティングされたモデルは、評価中に上手くいくが、新しい或いは有効性データ上で正確な予測を行うことができないことがある。少なくとも一実施例では、最良のモデルとしてオーバーフィッティングされたモデルを選択することを避けるために、訓練マネージャは、モデルのパフォーマンスを有効化するために追加のデータを予約することができる。たとえば、訓練データ・セットは、訓練に対して60%、及び2つ以上の段階に分割することができる評価又は有効化に対して40%に分割することができる。少なくとも一実施例では、この有効性データの半分などの有効性データのサブセット上の収束につながる評価データのために上手くいくモデル・パラメータを選択した後に、第2の有効化は、このモデルのパフォーマンスを保証するためにこの有効性データの残りで実行することができる。このモデルが有効性データ上の期待を満たす場合、このモデルはオーバーフィッティング・データではない。少なくとも一実施例では、テスト・セット又はヘルドアウト・セットは、パラメータをテストするために使用することができる。少なくとも一実施例では、第2の有効性又はテスト・ステップを使用することは、オーバーフィッティングを防ぐために適当なモデル・パラメータを選択するのを助ける。しかし、有効化のために訓練プロセスからより多くのデータを提供することにより、訓練に利用可能なデータがより少なくなる。訓練に利用可能な十分なデータがない可能性があるので、これは、より小さいデータ・セットで問題である。少なくとも一実施例では、このような状況でのアプローチは、本明細書のどこかで論じるように、相互有効化を行うことである。
【0042】
少なくとも一実施例では、所与のモデルの予測精度を検討及び評価するために使用することができる多くの測定基準又は洞察がある。少なくとも一実施例では、評価結果は、モデルの全体の成功に関して報告するための予測精度測定基準と、予測精度測定基準を超えてモデルの精度を利用するのを助けるための可視化を含む。結果はまた、バイナリ分類などのために、スコア閾値を設定する影響を検討する能力を提供することができ、評価の有効性をチェックするための測定基準に関するアラートを生成することができる。測定基準及び可視化の選択は、評価されているモデルのタイプに少なくとも部分的による可能性がある。
【0043】
少なくとも一実施例では、満足なように訓練及び評価されると、訓練された機械学習モデルを使用して、機械学習アプリケーションを構築又はサポートすることができる。一実施例では、機械学習アプリケーションを構築することは、ステップのシーケンスを必要とする反復プロセスである。少なくとも一実施例では、(1つ又は複数の)コア機械学習問題は、何が観察されるか及びどの回答をモデルが予測するかに関して組み立てることができる。少なくとも一実施例では、データはその後、機械学習モデル訓練アルゴリズムによる消費に適したデータを作るために収集、削除、及び準備することができる。このデータは、データの品質を有効化し、データを理解するためにサニティ・チェックを実行するために可視化及び分析することができる。生データ(たとえば、入力変数)及び回答データ(たとえば、ターゲット)は、高度予測モデルを訓練するために使用することができる方法で示されていないことがある。したがって、生変数からより多くの予測入力表示又は特性を構築することが望ましいことがある。得られた特性は、モデルを構築し、モデル構築から提供されたデータ上でモデルの品質を評価するために学習アルゴリズムに供給することができる。その後、モデルを使用して、新しいデータ・インスタンスに対するターゲット回答の予測を生成することができる。
【0044】
少なくとも一実施例では、
図7のシステム700では、訓練されたモデル710は評価後、有効性データを処理するために訓練されたモデルを使用することが可能である分類子714に提供される、又は利用可能にされる。少なくとも一実施例では、これは、たとえば、これらの画像内で例示されたものに関する情報を探しているクエリー画像などの、分類されていないユーザ又は第三者から受信されたデータを含むことができる。少なくとも一実施例では、有効化データは、訓練されたモデルを使用して分類子によって処理することができ、生成される結果716(分類又は予測など)は、それぞれのソースに再び送信する、或いは処理又は記憶することができる。少なくとも一実施例では、このような使用が許可される場合、これらの今分類されたデータ・インスタンスは、訓練マネージャによって訓練されたモデル708のさらなる訓練のために使用することができる訓練データ・リポジトリに記憶することができる。少なくとも一実施例では、モデルは新しいデータが利用可能であるので連続して訓練されるが、少なくとも一実施例では、これらのモデルは、データ・セットのサイズ又はモデルの複雑性などのファクタによって、1日又は1週間に1回などの定期的に再訓練される。
【0045】
少なくとも一実施例では、分類子714は、訓練されたモデルを使用して、有効化データ712を処理するための適当なハードウェア及びソフトウェアを含むことができる。少なくとも一実施例では、分類子は、データを処理することが可能な1つ又は複数のグラフィックス処理ユニット(GPU)をそれぞれ有する1つ又は複数のコンピュータ・サーバを含む。少なくとも一実施例では、GPUの構成及び設計は、CPU又は他のこのようなコンポーネントより、機械学習データを処理する際に使用することを望ましくすることができる。少なくとも一実施例では、訓練されたモデルは少なくとも一実施例では、GPUメモリ、及び処理のためにGPUに提供された受信したデータ・インスタンス内にロードすることができる。GPUはCPUよりはるかに多い数のコアを有し、GPUコアはまた、はるかにより複雑でない可能性がある。少なくとも一実施例では、所与のGPUは、異なるハードウェア・スレッドを介して同時に数千のデータ・インスタンスを処理することが可能であることがある。少なくとも一実施例では、GPUはまた、大きいデータ・セットに対してかなりの追加の処理利点を提供することができる、浮動小数点スループットを最大限にするように構成することができる。
【0046】
少なくとも一実施例では、GPU、アクセラレータ、及びモデルの訓練又はこのようなモデルを使用したデータの分類などのタスクを加速させるための他のこのようなハードウェアを使用する場合でさえ、このようなタスクはまだ、かなりの時間、リソース割り当て、及び費用を必要とする。少なくとも一実施例では、機械学習モデルが700回のパスを使用して訓練され、データ・セットが訓練のために使用される1,000,000のデータ・インスタンスを含む場合、百万のインスタンスはすべて各パスに対して処理される必要がある。アーキテクチャの異なる部分はまた、異なるタイプのデバイスによってサポートすることができる。少なくとも一実施例では、訓練は、サービスとして提供することができるように、論理集中位置でサーバのセットを使用して行うことができ、生データの分類は、このようなサービスによって、又はクライアント・デバイス上で行うことができる。これらのデバイスはまた、同じエンティティ又は多数のエンティティによって所有、操作、又は制御することができる。
【0047】
少なくとも一実施例では、
図8に示した例示的ニューラル・ネットワーク800は、訓練する、或いは少なくとも一実施例では利用することができる。少なくとも一実施例では、統計モデルは、入力層802、出力層806、及び内部層及びノードは典型的にはニューラル・ネットワーク内では見えない又はアクセス可能ではないので「隠された」層としばしば呼ばれる中間ノードの多数の層804を含むノードの多数の層を含む人工ニューラル・ネットワーク(ANN)である。少なくとも一実施例では、いくつかの中間層だけが説明する目的で示されているが、利用することができる中間層の数への限定はなく、層へのあらゆる限定もモデルを使用して処理するのに必要なリソース及び時間のファクタであることを理解されたい。少なくとも一実施例では、ノード及び層の他の数又は選択を含むように、追加のタイプのモデル、ネットワーク、アルゴリズム、又は使用されるプロセスがある可能性がある。少なくとも一実施例では、有効化データは、その後、損失関数808に供給することができる、推論のセット、又は推論スコアを生成するためにネットワークの層によって処理することができる。
【0048】
少なくとも一実施例では、所与の層のすべてのノードは、隣接する層のすべてのノードに相互接続される。少なくとも一実施例では、中間層のノードはその後、それぞれ、2つの隣接する層のノードに接続される。少なくとも一実施例では、ノードはまた、いくつかのモデル内でニューロン又は接続ユニットとも呼ばれ、ノード間の接続はエッジと呼ばれる。各ノードは、特定の関数を使用することなどによって、受信した入力に対する関数を実行することができる。少なくとも一実施例では、ノード及びエッジは訓練中に異なる重みを得ることができ、ノードの個別の層は受信した入力上で特定のタイプの変換を行うことができ、これらの変換はまた、訓練中に学習又は調節することができる。少なくとも一実施例では、訓練データ・セット内に含まれる情報のタイプに少なくとも部分的によるように、学習は監視された又は監視されていない学習である可能性がある。少なくとも一実施例では、いくつかの畳み込み層及びプーリング層のセットを含む畳み込みニューラル・ネットワーク(CNN)を含むように、様々なタイプのニューラル・ネットワークを利用することができ、画像認識などのアプリケーションで有益であることが証明された。CNNはまた、決定される比較的少ない数のパラメータにより、他のネットワークより容易に訓練することができる。
【0049】
少なくとも一実施例では、このような複雑な機械学習モデルは、様々な同調パラメータを使用して訓練することができる。パラメータを選択し、モデルを適合し、モデルを評価することは、しばしばハイパーパラメータ最適化と呼ばれるモデル同調プロセスの一部である。このような同調は、少なくとも一実施例では、下層のモデル又はデータをイントロスペクトすることが必要である可能性がある。訓練又は生成セッティングでは、安定したワークフローは、本明細書のどこかで論じたように、ハイパーパラメータのオーバーフィッティングを避けるために重要である可能性がある。交差有効化及び訓練データ・セットにガウス・ノイズを追加することは、いずれか1つのデータ・セットへのオーバーフィッティングを避けるために有用である可能性がある技術である。ハイパーパラメータ最適化では、訓練及び有効化セットを固定することが望ましいことがある。少なくとも一実施例では、ハイパーパラメータは、データ・プレ処理(ワードをベクトルにトランスレーションすることなど)、CNNアーキテクチャ定義(たとえば、フィルタ・サイズ、フィルタの数)、確率的勾配下降法(SGD)パラメータ(たとえば、学習レート)、及び正則化又は改良(たとえば、ドロップアウト確率)を含むように、特定のカテゴリで同調させることができる。
【0050】
少なくとも一実施例では、データ・セットのインスタンスは、プレ処理中に特定のサイズのより低い寸法空間内に埋め込むことができる。少なくとも一実施例では、この空間のサイズは、同調されるパラメータである。少なくとも一実施例では、CNNのアーキテクチャは多くの同調可能パラメータを含む。フィルタ・サイズに対するパラメータは、分析されるインスタンスのサイズに対応する情報の解釈を示すことができる。数理言語学では、これはnグラム・サイズとして知られている。例示的CNNは、潜在的に異なるnグラム・サイズを示す、3つの異なるフィルタ・サイズを使用する。フィルタ・サイズごとのフィルタの数は、フィルタの深さに対応する可能性がある。各フィルタは、テキスト・データ用のセンテンス構造などの、インスタンスの構造から異なる何かを学習しようと試みる。畳み込み層では、アクティブ化関数は、修正した線形ユニット及びマックス・プーリングとしてのプーリング・タイプ・セットである可能性がある。結果はその後、単一の寸法ベクトル内に連結させることができ、最後の層は2次元出力上で完全に接続される。これは、最適化関数を適用することができるバイナリ分類に対応する。1つのこのような関数は、勾配降下の二乗平均平方根(RMS)伝搬方法の実施であり、例示的ハイパーパラメータは学習レート、バッチ・サイズ、最大勾配法線、及びエポックを含むことができる。ニューラル・ネットワークでは、正則化は極めて重要な検討事項である可能性がある。少なくとも一実施例では、入力データは比較的乏しいことがある。主なハイパーパラメータはこのような状況では、各訓練サイクルで「発火」しないノードの割合を示す、最後から2番目の層でのドロップアウトである可能性がある。例示的訓練プロセスは、前の構成のパフォーマンスに対するフィードバックに基づいて、異なるハイパーパラメータ構成を提案することができる。このモデルは、指定された有効化セット及びパフォーマンス報告上で評価される、提案された構成で訓練することができる。このプロセスは、たとえば、調査(異なる構成に関してより学習すること)及び利用(より良い結果を達成するために前の知識を活用すること)をトレードオフするために繰り返すことができる。
【0051】
訓練CNNを並列化し、GPUイネーブル・コンピューティング・リソースを利用することができるので、多数の最適化ストラテジーは異なるシナリオに対して試みることができる。複雑なシナリオは、同調モデル・アーキテクチャ、並びにプレ処理及び確率的勾配降下パラメータを可能にする。これは、モデル構成空間を拡張する。基本的シナリオでは、プレ処理及び確率的勾配降下パラメータだけが同調される。基本的シナリオより、複雑なシナリオでより多数の構成パラメータがある可能性がある。ジョイント空間内の同調は、線形又は指数関数的数のステップ、モデルの最適化ループによる繰り返しを使用して行うことができる。このような同調プロセスの費用は、かなりのパフォーマンス損失なしで、ランダム・サーチ及びグリッド・サーチなどの同調プロセスよりかなり少ない可能性がある。
【0052】
少なくとも一実施例では、逆伝搬を利用して、ニューラル・ネットワークに対する重みを決定するために使用される勾配を算出することができる。逆伝搬は微分法の一形態であり、上に論じたように、様々なノード又はニューロンに加えられた重みを調節するために勾配降下最適化アルゴリズムによって使用することができる。重みは、関連する損失関数の勾配を使用して決定することができる。逆伝搬は、統計モデルによって生成される出力に対する損失関数の導関数を利用することができる。記載したように、様々なノードは、それぞれのノードの出力を規定する関連付けられたアクティブ化関数を有することができる。様々なアクティブ化関数は、データの変換のために様々なサポート・ベクトル・マシン(SVM)によって利用することができる、放射基底関数(RBF)及びシグモイドを含むように、適当に使用することができる。ノードの中間層のアクティブ化関数は、本明細書では内側製品カーネルとも呼ばれる。これらの関数は、たとえば、識別関数、ステップ関数、シグモイド関数、ランプ関数などを含むことができる。アクティブ化関数はまた、線形又は非線形であってもよい。
【0053】
少なくとも一実施例では、訓練されていないニューラル・ネットワークは、訓練データ・セットを使用して訓練される。少なくとも一実施例では、訓練フレームワークは、PyTorchフレームワーク、Tensorflow、Boost、Caffe、Microsoft Cognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークを訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワークを生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
【0054】
少なくとも一実施例では、未訓練ニューラル・ネットワークは教師あり学習を使用して訓練され、ここで訓練データ・セットは、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セットは、既知の出力を有する入力を含み、ニューラル・ネットワークの出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワークは教師ありのやり方で訓練され、訓練データ・セットからの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワークを通って逆伝播される。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークを制御する重みを調節する。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークが、新規データなどの既知の入力データに基づき、結果などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワークなどのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークを繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワークの出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークが所望の精度に到達するまで未訓練ニューラル・ネットワークを訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワークを、任意の数の機械学習動作を実装するように導入することができる。
【0055】
少なくとも一実施例では、未訓練ニューラル・ネットワークは、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワークは、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セットは、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワークは、訓練データ・セット内でグループ化を学習することができ、個々の入力が、未訓練データ・セットにどのように関係しているかを判定することができる。少なくとも一実施例では、教師なし訓練を使用して、自己組織化マップを生成することができ、自己組織化マップは、新規データの次元を低減するのに有用な動作を実行することができるタイプの訓練済みニューラル・ネットワークである。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セットの通常のパターンから逸脱した、新規データ・セット内のデータ点を識別できるようにする。
【0056】
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データ・セットに混在している技法である。少なくとも一実施例では、訓練フレームワークを使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワークは、初期訓練中にネットワーク内に教え込まれた知識を忘れることなく、新規データに適合できるようになる。
【0057】
推論及び訓練の論理
図9Aは、1つ又は複数の実施例に関連付けられた推論及び/又は訓練の動作を行うために使用される推論及び/又は訓練論理915を示している。推論及び/又は訓練論理915に関する詳細は、
図9A及び/又は9Bと合わせて以下に提供される。
【0058】
少なくとも一実施例では、推論及び/又は訓練論理915は、これに限らないが、フォワード及び/又は出力重み、並びに/或いは入力/出力データ、並びに/或いは1つ又は複数の実施例の態様での推論のために訓練及び/又は使用されるニューロン又はニューラル・ネットワークの層を構成するための他のパラメータを記憶するためのコード及び/又はデータ・ストレージ901を含むことができる。少なくとも一実施例では、訓練論理915は、タイミング並びに/或いは、重み及び/又は他のパラメータ情報が整数及び/又は浮動小数点ユニット(集合的に、整数算術論理演算ユニット(ALU))を含む論理を構成するためにロードされる順序を制御するためにグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ901を含む、又はこれに結合することができる。少なくとも一実施例では、グラフ・コードなどのコードは、このコードが対応するニューラル・ネットワークのアーキテクチャに基づいて、プロセッサALU内に重み又は他のパラメータ情報をロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ901は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に入力/出力データ及び/又は重みパラメータのフォワード伝搬中に1つ又は複数の実施例と合わせて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ並びに/或いは入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ901のあらゆる部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、オン・チップ又はオフ・チップ・データ・ストレージで含めることができる。
【0059】
少なくとも一実施例では、コード及び/又はデータ・ストレージ901のあらゆる部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路に対して内部又は外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(DRAM)、スタティック・ランダム・アドレス可能メモリ(SRAM)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901がプロセッサに対して内部又は外部であるか、たとえば、DRAM、SRAM、フラッシュ又はいくつかの他のストレージ・タイプからなるかどうかの選択は、利用可能なストレージ・オン・チップ対オフ・チップ、行われている訓練及び/又は推論のレイテンシ要件、ニューラル・ネットワークの推論機能及び/又は訓練に使用されるデータのバッチ・サイズ、或いはこれらのファクタのいくつかの組合せによることがある。
【0060】
少なくとも一実施例では、推論及び/又は訓練論理915は、これに限らないが、1つ又は複数の実施例の態様での推論のために訓練及び/又は使用されるニューラル・ネットワークのニューロン又は層に対応するバックワード及び/又は出力重み、並びに/或いは入力/出力データを記憶するためのコード及び/又はデータ・ストレージ905を含むことができる。少なくとも一実施例では、コード及び/又はデータ・ストレージ905は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に入力/出力データ及び/又は重みパラメータのバックワード伝搬中に1つ又は複数の実施例と合わせて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ並びに/或いは入力/出力データを記憶する。少なくとも一実施例では、訓練論理915は、タイミング並びに/或いは、重み及び/又は他のパラメータ情報が整数及び/又は浮動小数点ユニット(集合的に、整数算術論理演算ユニット(ALU))を含む論理を構成するためにロードされる順序を制御するためにグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ905を含む、又はこれに結合することができる。少なくとも一実施例では、グラフ・コードなどのコードは、このコードが対応するニューラル・ネットワークのアーキテクチャに基づいて、プロセッサALU内に重み又は他のパラメータ情報をロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ905のあらゆる部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、オン・チップ又はオフ・チップ・データ・ストレージで含めることができる。少なくとも一実施例では、コード及び/又はデータ・ストレージ905のあらゆる部分は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路に対して内部又は外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ905は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ905がプロセッサに対して内部又は外部であるか、たとえば、DRAM、SRAM、フラッシュ又は他のストレージ・タイプからなるかどうかの選択は、利用可能なストレージ・オン・チップ対オフ・チップ、行われている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練に使用されるバッチ・サイズ、或いはこれらのファクタのいくつかの組合せによることがある。
【0061】
少なくとも一実施例では、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905は、別のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905は、同じストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905は、部分的に同じストレージ構造及び部分的に別のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905のあらゆる部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、オン・チップ又はオフ・チップ・データ・ストレージで含めることができる。
【0062】
少なくとも一実施例では、推論及び/又は訓練論理915は、これに限らないが、その結果が、コード及び/又はデータ・ストレージ901及び/又はコード及び/又はデータ・ストレージ905内に記憶された入力/出力データ並びに/或いは重みパラメータ・データの関数であるアクティブ化ストレージ920内に記憶されたアクティブ化(たとえば、ニューラル・ネットワーク内で層又はニューロンからの出力値)を生成することができる、訓練及び/又は推論コード(たとえば、グラフ・コード)に少なくとも部分的に基づいて、或いはこれによって示される論理及び/又は数学的動作を行うために、整数及び/又は浮動小数点ユニットを含む、1つ又は複数の算術論理演算ユニット(ALU)910を含むことができる。少なくとも一実施例では、アクティブ化ストレージ920に記憶されたアクティブ化は、命令又は他のコードを行うことに応じて、(1つ又は複数の)ALU910によって行われる線形代数及び/又は行列ベース算術により生成され、コード及び/又はデータ・ストレージ905並びに/或いはコード及び/又はデータ・ストレージ901に記憶された重み値は、バイアス値、勾配情報、モーメント値、或いは他のパラメータ又はハイパーパラメータなどの他の値とともにオペランドとして使用され、これらのいずれか又はすべては、コード及び/又はデータ・ストレージ905又はコード及び/又はデータ・ストレージ901、或いは別のストレージにオン・チップ又はオフ・チップで記憶することができる。
【0063】
少なくとも一実施例では、(1つ又は複数の)ALU910は、1つ又は複数のプロセッサ或いは他のハードウェア論理デバイス又は回路内に含まれ、別の実施例では、(1つ又は複数の)ALU910は、プロセッサ、或いはこれらを使用する他のハードウェア論理デバイス又は回路(たとえば、コプロセッサ)に対して外部にあってもよい。少なくとも一実施例では、ALU910は、プロセッサの実行ユニット内に、或いは同じプロセッサ内にある、或いは異なるタイプの異なるプロセッサ(たとえば、中央処理ユニット、グラフィックス処理ユニット、固定関数ユニットなど)の間で分配されたプロセッサの実行ユニットによってアクセス可能なALUのバンク内に含めることができる。少なくとも一実施例では、コード及び/又はデータ・ストレージ901、コード及び/又はデータ・ストレージ905、及びアクティブ化ストレージ920は、同じプロセッサ又は他のハードウェア論理デバイス又は回路であってもよく、別の実施例では、これらは異なるプロセッサ或いは他のハードウェア論理デバイス又は回路、或いは同じ及び異なるプロセッサ或いは他のハードウェア論理デバイス又は回路のいくつかの組合せ内にあってもよい。少なくとも一実施例では、アクティブ化ストレージ920のあらゆる部分は、プロセッサのL1、L2、又はL3キャッシュ或いはシステム・メモリを含む、オン・チップ又はオフ・チップ・データ・ストレージで含めることができる。さらに、推論及び/又は訓練コードは、プロセッサ或いは他のハードウェア論理又は回路にアクセス可能な他のコードで記憶し、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイヤ、及び/又は他の論理回路を使用して、フェッチ及び/又は処理することができる。
【0064】
少なくとも一実施例では、アクティブ化ストレージ920は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ920は完全に又は部分的に、1つ又は複数のプロセッサ又は他の論理回路内にある又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ920がプロセッサに対して内部又は外部であるか、たとえば、DRAM、SRAM、フラッシュ又はいくつかの他のストレージ・タイプからなるかどうかの選択は、利用可能なストレージ・オン・チップ対オフ・チップ、行われている訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練に使用されるデータのバッチ・サイズ、或いはこれらのファクタのいくつかの組合せによることがある。少なくとも一実施例では、
図9Aに示す推論及び/又は訓練論理915は、GoogleによるTensorflow(登録商標)処理ユニット、Graphcore(商標)による推論処理ユニット(IPU)、又はインテル社によるNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と合わせて使用することができる。少なくとも一実施例では、
図9Aに示す推論及び/又は訓練論理915は、中央処理ユニット(「CPU」)ハードウェア、グラフィックス処理ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)などの他のハードウェアと合わせて使用することができる。
【0065】
図9Bは、少なくとも1つ又は複数の実施例による、推論及び/又は訓練論理915を示している。少なくとも一実施例では、推論及び/又は訓練論理915は、これに限らないが、計算リソースが専用である、或いは重み値又はニューラル・ネットワーク内のニューロンの1つ又は複数の層に対応する他の情報と合わせて排他的に使用される、ハードウェア論理を含むことができる。少なくとも一実施例では、
図9Bに示す推論及び/又は訓練論理915は、GoogleによるTensorflow(登録商標)処理ユニット、Graphcore(商標)による推論処理ユニット(IPU)、又はインテル社によるNervana(登録商標)(たとえば、「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と合わせて使用することができる。少なくとも一実施例では、
図9Bに示す推論及び/又は訓練論理915は、中央処理ユニット(CPU)ハードウェア、グラフィックス処理ユニット(GPU)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの他のハードウェアと合わせて使用することができる。少なくとも一実施例では、推論及び/又は訓練論理915は、これに限らないが、コード(たとえば、グラフ・コード)、重み値、並びに/或いは、バイアス値、勾配情報、モーメント値、並びに/或いは他のパラメータ又はハイパーパラメータ情報を含む他の情報を記憶するために使用することができる、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905を含む。
図9Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905はそれぞれ、計算ハードウェア902及び計算ハードウェア906などの専用計算リソースに関連付けられている。少なくとも一実施例では、計算ハードウェア902及び計算ハードウェア906はそれぞれ、その結果がアクティブ化ストレージ920内に記憶される、コード及び/又はデータ・ストレージ901並びにコード及び/又はデータ・ストレージ905内に記憶された情報上のみで、線形代数関数などの算術関数を行う1つ又は複数のALUを備えている。
【0066】
少なくとも一実施例では、各コード及び/又はデータ・ストレージ901、905並びに対応する計算ハードウェア902、906はそれぞれ、ニューラル・ネットワークの異なる層に対応し、それにより、ニューラル・ネットワークのミラー概念組織化のために、コード及び/又はデータ・ストレージ901及び計算ハードウェア902の1つの「ストレージ/計算対901/902」から得られたアクティブ化は、コード及び/又はデータ・ストレージ905及び計算ハードウェア906の1つの「ストレージ/計算対905/906」に入力として提供される。少なくとも一実施例では、ストレージ/計算対901/902及び905/906のそれぞれは、2つ以上のニューラル・ネットワーク層に対応することができる。少なくとも一実施例では、ストレージ計算対901/902及び905/906の後の又は並列した追加のストレージ/計算対(図示せず)は、推論及び/又は訓練論理915に含めることができる。
【0067】
データ・センタ
図10は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1000を示す。少なくとも一実施例では、データ・センタ1000は、データ・センタ・インフラストラクチャ層1010、フレームワーク層1020、ソフトウェア層1030、及びアプリケーション層1040を含む。
【0068】
少なくとも一実施例では、
図10に示すように、データ・センタ・インフラストラクチャ層1010は、リソース・オーケストレータ1012、グループ化済みコンピューティング・リソース1014、及びノード・コンピューティング・リソース(「ノードC.R.」:node computing resource)1016(1)~1016(N)を含んでもよく、ここで「N」は、任意の正の整数を表す。少なくとも一実施例では、ノードC.R.1016(1)~1016(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえば、半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1016(1)~1016(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
【0069】
少なくとも一実施例では、グループ化済みコンピューティング・リソース1014は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース1014内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
【0070】
少なくとも一実施例では、リソース・オーケストレータ1012は、1つ又は複数のノードC.R.1016(1)~1016(N)及び/若しくはグループ化済みコンピューティング・リソース1014を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1012は、データ・センタ1000用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
【0071】
図10に示す少なくとも一実施例では、フレームワーク層1020は、ジョブ・スケジューラ1022、構成マネージャ1024、リソース・マネージャ1026、及び分配ファイル・システム1028を含む。少なくとも一実施例では、フレームワーク層1020は、ソフトウェア層1030のソフトウェア1032、及び/又はアプリケーション層1040の1つ若しくは複数のアプリケーション1042をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア1032又はアプリケーション1042はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1020は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム1028を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1022は、データ・センタ1000の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1024は、ソフトウェア層1030、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム1028を含むフレームワーク層1020などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1026は、分配ファイル・システム1028及びジョブ・スケジューラ1022をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1010にあるグループ化済みコンピューティング・リソース1014を含んでもよい。少なくとも一実施例では、リソース・マネージャ1026は、リソース・オーケストレータ1012と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
【0072】
少なくとも一実施例では、ソフトウェア層1030に含まれるソフトウェア1032は、ノードC.R.1016(1)~1016(N)、グループ化済みコンピューティング・リソース1014、及び/又はフレームワーク層1020の分配ファイル・システム1028のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
【0073】
少なくとも一実施例では、アプリケーション層1040に含まれるアプリケーション1042は、ノードC.R.1016(1)~1016(N)、グループ化済みコンピューティング・リソース1014、及び/又はフレームワーク層1020の分配ファイル・システム1028のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、Tensorflow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
【0074】
少なくとも一実施例では、構成マネージャ1024、リソース・マネージャ1026、及びリソース・オーケストレータ1012のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1000のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
【0075】
少なくとも一実施例では、データ・センタ1000は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ1000に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ1000に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
【0076】
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
【0077】
推論及び/又は訓練論理915を使用して、1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作が実行される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために
図10のシステムにおいて使用されてもよい。
【0078】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0079】
コンピュータ・システム
図11Aは、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せ1100を有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1100は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1102などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1100は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、XeonTM、Itanium(登録商標)、XScaleTM及び/又はStrongARMTM、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1100は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
【0080】
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
【0081】
少なくとも一実施例では、コンピュータ・システム1100は、限定することなくプロセッサ1102を含んでもよく、このプロセッサ1102は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット1108を含んでもよい。少なくとも一実施例では、コンピュータ・システム1100は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム1100はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ1102は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ1102は、プロセッサ・バス1110に結合されてもよく、このプロセッサ・バスは、プロセッサ1102とコンピュータ・システム1100内の他の構成要素との間でデジタル信号を送信してもよい。
【0082】
少なくとも一実施例では、プロセッサ1102は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1104を含んでもよい。少なくとも一実施例では、プロセッサ1102は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1102の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル1106は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
【0083】
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット1108も、プロセッサ1102にある。少なくとも一実施例では、プロセッサ1102は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット1108は、パック命令セット1109に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット1109を、命令を実行する関連回路とともに汎用プロセッサ1102の命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ1102のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
【0084】
少なくとも一実施例では、実行ユニット1108はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム1100は、限定することなくメモリ1120を含んでもよい。少なくとも一実施例では、メモリ1120は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。少なくとも一実施例では、メモリ1120は、プロセッサ1102によって実行されてもよいデータ信号によって表される命令1119、及び/又はデータ1121を記憶してもよい。
【0085】
少なくとも一実施例では、システム論理チップが、プロセッサ・バス1110及びメモリ1120に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1116を含んでもよく、プロセッサ1102は、プロセッサ・バス1110を介してMCH1116と通信してもよい。少なくとも一実施例では、MCH1116は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路1118をメモリ1120に提供してもよい。少なくとも一実施例では、MCH1116は、プロセッサ1102と、メモリ1120と、コンピュータ・システム1100の他の構成要素との間でデータ信号を導き、プロセッサ・バス1110と、メモリ1120と、システムI/O1122との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH1116は、高帯域幅メモリ経路1118を介してメモリ1120に結合されてもよく、グラフィックス/ビデオカード1112は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1114を介してMCH1116に結合されてもよい。
【0086】
少なくとも一実施例では、コンピュータ・システム1100は、MCH1116をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1130に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O1122を使用してもよい。少なくとも一実施例では、ICH1130は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ1120、チップセット、及びプロセッサ1102に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ1129、ファームウェア・ハブ(「フラッシュBIOS」)1128、ワイヤレス・トランシーバ1126、データ・ストレージ1124、ユーザ入力及びキーボードのインターフェース1125を含むレガシーI/Oコントローラ1123、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート1127、及びネットワーク・コントローラ1134が、限定することなく含まれてもよい。データ・ストレージ1124は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
【0087】
少なくとも一実施例では、
図11Aは、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、
図11Aは例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、デバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム1100の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
【0088】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために
図11Aのシステムにおいて使用されてもよい。
【0089】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0090】
図12は、少なくとも一実施例による、プロセッサ1210を利用するための電子デバイス1200を示すブロック図である。少なくとも一実施例では、電子デバイス1200は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
【0091】
少なくとも一実施例では、システム1200は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ1210を、限定することなく含んでもよい。少なくとも一実施例では、I°Cバス、システム・マネージメント・バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(LPC:Low Pin Count)バス、シリアル・ペリフェラル・インターフェース(「SPI」:Serial Peripheral Interface)、ハイ・デフィニション・オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3)、又はユニバーサル非同期レシーバ/トランスミッタ(「UART」:Universal Asynchronous Receiver/Transmitter)バスなどのバス若しくはインターフェースを使用して結合されるプロセッサ1210。少なくとも一実施例では、
図12は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、
図12は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、
図12に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、
図12の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
【0092】
少なくとも一実施例では、
図12は、ディスプレイ1224、タッチ画面1225、タッチ・パッド1230、近距離無線通信ユニット(「NFC」:Near Field Communications unit)1245、センサ・ハブ1240、熱センサ1246、エクスプレス・チップセット(「EC」:Express Chipset)1235、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1238、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1222、DSP1260、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ1220、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)1250、Bluetoothユニット1252、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)1256、全地球測位システム(GPS:Global Positioning System)1255、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1254、及び/又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1215を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
【0093】
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ1210に通信可能に結合されてもよい。少なくとも一実施例では、加速度計1241、周囲光センサ(「ALS」:Ambient Light Sensor)1242、コンパス1243、及びジャイロスコープ1244が、センサ・ハブ1240に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ1239、ファン1237、キーボード1246、及びタッチ・パッド1230が、EC1235に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ1263、ヘッドフォン1264、及びマイクロフォン(「mic」)1265が、オーディオ・ユニット(オーディオ・コーデック及びクラスdアンプ)1262に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP1260に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット1264は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)1257は、WWANユニット1256に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット1250及びBluetoothユニット1252などの構成要素、並びにWWAN1256は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
【0094】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために
図12のシステムにおいて使用されてもよい。
【0095】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0096】
図13は、少なくとも一実施例による、コンピュータ・システム1300を示す。少なくとも一実施例では、コンピュータ・システム1300は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
【0097】
少なくとも一実施例では、コンピュータ・システム1300は、限定することなく、少なくとも1つの中央処理装置(「CPU」)1302を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス1310に接続される。少なくとも一実施例では、コンピュータ・システム1300は、メイン・メモリ1304、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとってもよいメイン・メモリ1304に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1322は、他のシステムからデータを受信し、コンピュータ・システム1300から他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
【0098】
少なくとも一実施例では、コンピュータ・システム1300は、少なくとも一実施例では、限定することなく、入力デバイス1308、パラレル処理システム1312、及びディスプレイ・デバイス1306を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス1308から受け取る。少なくとも一実施例では、上記モジュールのそれぞれを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
【0099】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために
図13のシステムにおいて使用されてもよい。
【0100】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0101】
図14は、少なくとも一実施例によるコンピュータ・システム1400を示す。少なくとも一実施例では、コンピュータ・システム1400は、限定することなく、コンピュータ1410及びUSBスティック1420を含んでもよい。少なくとも一実施例では、コンピュータ・システム1410は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリを含んでもよい。少なくとも一実施例では、コンピュータ1410は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
【0102】
少なくとも一実施例では、USBスティック1420は、限定することなく、処理ユニット1430、USBインターフェース1440、及びUSBインターフェース論理1450を含む。少なくとも一実施例では、処理ユニット1430は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット1430は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理コア1430は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理コア1430は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理コア1430は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
【0103】
少なくとも一実施例では、USBインターフェース1440は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース1440は、データ及び電源用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース1440は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理1450は、処理ユニット1430がUSBコネクタ1440を介してデバイス(たとえばコンピュータ1410)と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
【0104】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために
図14のシステムにおいて使用されてもよい。
【0105】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0106】
図15Aは、複数のGPU1510~1513が、高速リンク1540~1543(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ1505~1506に通信可能に結合されている例示的なアーキテクチャを示す。一実施例では、高速リンク1540~1543は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。
【0107】
さらに、一実施例では、GPU1510~1513のうちの2つ以上は高速リンク1529~1530を介して相互接続され、これらは、高速リンク1540~1543に使用されたものと同じ又は異なるプロトコル/リンクを使用して実装されてもよい。同様に、マルチ・コア・プロセッサ1505~1506のうちの2つ以上は、高速リンク1528を介して接続されてもよく、この高速リンク1528は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、
図15Aに示す様々なシステム構成要素間のすべての通信は、同じプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
【0108】
一実施例では、各マルチ・コア・プロセッサ1505~1506は、それぞれメモリ相互接続1526~1527を介してプロセッサ・メモリ1501~1502に通信可能に結合され、各GPU1510~1513は、それぞれGPUメモリ・相互接続1550~1553を介してGPUメモリ1520~1523に通信可能に結合される。メモリ相互接続1526~1527及び1550~1553は、同じ又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ1501~1502及びGPUメモリ1520~1523は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ1501~1502のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
【0109】
以下に記載するように、様々なプロセッサ1505~1506及びGPU1510~1513は、それぞれ特定のメモリ1501~1502、1520~1523に物理的に結合されてもよいが、同じ仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実装されてもよい。たとえば、プロセッサ・メモリ1501~1502はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ1520~1523はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよい(この例では結果的に、合計256GBのアドレス指定可能メモリが得られる)。
【0110】
図15Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ1507とグラフィックス加速モジュール1546との相互接続のさらなる詳細事項を示す。グラフィックス加速モジュール1546は、高速リンク1540を介してプロセッサ1507に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。或いは、グラフィックス加速モジュール1546は、プロセッサ1507と同じパッケージ又はチップに集積されてもよい。
【0111】
少なくとも一実施例では、図示しているプロセッサ1507は、複数のコア1560A~1560Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ1561A~1561Dと、1つ又は複数のキャッシュ1562A~1562Dとを有する。少なくとも一実施例では、コア1560A~1560Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。キャッシュ1562A~1562Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ1556が、キャッシュ1562A~1562Dに含まれ、コア1560A~1560Dのセットによって共有されてもよい。たとえば、プロセッサ1507の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。プロセッサ1507及びグラフィックス加速モジュール1546は、システム・メモリ1514に接続されており、このシステム・メモリは、
図15Aのプロセッサ・メモリ1501~1502を含んでもよい。
【0112】
様々なキャッシュ1562A~1562D、1556、及びシステム・メモリ1514に記憶されたデータ及び命令については、コヒーレンス・バス1564を介したコア間通信によって、コヒーレンスが維持される。たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス1564を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。一実装形態では、キャッシュ・アクセスを監視するために、コヒーレンス・バス1564を介してキャッシュ・スヌーピング・プロトコルが実装される。
【0113】
一実施例では、プロキシ回路1525が、グラフィックス加速モジュール1546をコヒーレンス・バス1564に通信可能に結合して、グラフィックス加速モジュール1546がコア1560A~1560Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、インターフェース1535は、高速リンク1540(たとえば、PCIeバス、NVLinkなど)を介してプロキシ回路1525への接続を提供し、インターフェース1537は、グラフィックス加速モジュール1546をリンク1540に接続する。
【0114】
一実装形態では、アクセラレータ統合回路1536は、グラフィックス加速モジュール1546の複数のグラフィックス処理エンジン1531、1532、Nの代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。グラフィックス処理エンジン1531、1532、Nはそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。或いは、グラフィックス処理エンジン1531、1532、Nは、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール1546は、複数のグラフィックス処理エンジン1531~1532、Nを有するGPUであってもよく、又はグラフィックス処理エンジン1531~1532、Nは、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
【0115】
一実施例では、アクセラレータ統合回路1536は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)1539、及びシステム・メモリ1514にアクセスするためのメモリ・アクセス・プロトコルを含む。MMU1539は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。一実装形態では、キャッシュ1538は、グラフィックス処理エンジン1531~1532、Nから効率的にアクセスできるように、コマンド及びデータを記憶する。一実施例では、キャッシュ1538及びグラフィックス・メモリ1533~1534、Mに記憶されたデータは、コア・キャッシュ1562A~1562D、1556、及びシステム・メモリ1514とコヒーレントに保たれる。上に述べたように、これは、キャッシュ1538及びメモリ1533~1534、Mの代わりにプロキシ回路1525を介して(たとえば、プロセッサ・キャッシュ1562A~1562D、1556におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ1538に送り、キャッシュ1538からのアップデートを受け取って)実現されてもよい。
【0116】
レジスタ1545のセットが、グラフィックス処理エンジン1531~1532、Nによって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路1548が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路1548は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路1548は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路1548がレジスタ値を復元してもよい。一実施例では、割込み管理回路1547は、システム・デバイスから受け取った割込みを受け取り、処理する。
【0117】
一実装形態では、グラフィックス処理エンジン1531からの仮想/実効アドレスは、MMU1539によってシステム・メモリ1514の実/物理アドレスにトランスレートされる。アクセラレータ統合回路1536の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール1546、及び/又は他のアクセラレータ・デバイスをサポートする。グラフィックス・アクセラレータ・モジュール1546は、プロセッサ1507上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。一実施例では、グラフィックス処理エンジン1531~1532、Nのリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
【0118】
少なくとも一実施例では、アクセラレータ統合回路1536は、グラフィックス加速モジュール1546のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、アクセラレータ統合回路1536は、グラフィックス処理エンジン1531~1532、Nの仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
【0119】
グラフィックス処理エンジン1531~1532、Nのハードウェア・リソースは、ホスト・プロセッサ1507が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。一実施例では、アクセラレータ統合回路1536の1つの機能は、グラフィックス処理エンジン1531~1532、Nを、システムにとって独立したユニットに見えるように物理的に分離することである。
【0120】
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ1533~1534、Mはそれぞれ、グラフィックス処理エンジン1531~1532、Nのそれぞれに結合される。グラフィックス・メモリ1533~1534、Mは、それぞれのグラフィックス処理エンジン1531~1532、Nによって処理される命令及びデータを記憶する。グラフィックス・メモリ1533~1534、Mは、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
【0121】
一実施例では、リンク1540を介したデータ・トラフィックを低減するために、グラフィックス・メモリ1533~1534、Mに記憶されるデータが、グラフィックス処理エンジン1531~1532、Nによって最も頻繁に使用されることになるデータであるようにし、好ましくはコア1560A~1560Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用される。同様に、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン1531~1532、Nは必要としない)データを、コアのキャッシュ1562A~1562D、1556、及びシステム・メモリ1514の中に保つよう試みる。
【0122】
図15Cは、アクセラレータ統合回路1536がプロセッサ1507内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン1531~1532、Nは、インターフェース1537及びインターフェース1535により、高速リンク1540を介して直接アクセラレータ統合回路1536と通信する(この場合も任意の形のバス又はインターフェース・プロトコルを利用することができる)。アクセラレータ統合回路1536は、
図15Bに関して説明したのと同じ動作を実行してもよいが、コヒーレンス・バス1564及びキャッシュ1562A~1562D、1556に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。少なくとも一実施例は、(グラフィックス加速モジュールの仮想化のない)専用のプロセス・プログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路1536によって制御されるプログラミング・モデルと、グラフィックス加速モジュール1546によって制御されるプログラミング・モデルとを含んでもよい。
【0123】
少なくとも一実施例では、グラフィックス処理エンジン1531~1532、Nは、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン1531~1532、Nに集中させて、VM/パーティション内で仮想化を実現することができる。
【0124】
少なくとも一実施例では、グラフィックス処理エンジン1531~1532、Nは、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン1531~1532、Nを仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン1531~1532、Nは、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン1531~1532、Nを仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
【0125】
少なくとも一実施例では、グラフィックス加速モジュール1546又は個々のグラフィックス処理エンジン1531~1532、Nは、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ1514に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン1531~1532、Nに登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実装固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
【0126】
図15Dは、例示的なアクセラレータ統合スライス1590を示す。本明細書で使用するとき、「スライス」は、アクセラレータ統合回路1536の処理リソースの指定部分を備える。システム・メモリ1514内のアプリケーション実効アドレス空間1582は、プロセス要素1583を記憶する。一実施例では、プロセス要素1583は、プロセッサ1507上で実行されているアプリケーション1580からのGPU呼出し1581に応答して、記憶される。プロセス要素1583は、対応するアプリケーション1580のプロセス状態を収容する。プロセス要素1583に収容されたワーク記述子(WD)1584は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD1584は、アプリケーションのアドレス空間1582におけるジョブ要求キューに対するポインタである。
【0127】
グラフィックス加速モジュール1546及び/又は個々のグラフィックス処理エンジン1531~1532、Nは、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD1584をグラフィックス加速モジュール1546に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
【0128】
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実装固有である。このモデルでは、単一のプロセスが、グラフィックス加速モジュール1546又は個々のグラフィックス処理エンジン1531を所有する。グラフィックス加速モジュール1546が単一のプロセスによって所有されることから、グラフィックス加速モジュール1546が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路1536を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路1536を初期化する。
【0129】
動作時、アクセラレータ統合スライス1590内のWDフェッチ・ユニット1591は、グラフィックス加速モジュール1546の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD1584をフェッチする。図示してあるように、WD1584からのデータは、レジスタ1545に記憶され、MMU1539、割込み管理回路1547、及び/又はコンテキスト管理回路1548によって使用されてもよい。たとえば、MMU1539の一実施例は、OS仮想アドレス空間1585内のセグメント/ページ・テーブル1586にアクセスするためのセグメント/ページ・ウォーク回路を含む。割込み管理回路1547は、グラフィックス加速モジュール1546から受け取った割込みイベント1592を処理してもよい。グラフィックス動作を実行するとき、グラフィックス処理エンジン1531~1532、Nによって生成された実効アドレス1593は、MMU1539によって実アドレスにトランスレートされる。
【0130】
一実施例では、レジスタ1545の同じセットが、各グラフィックス処理エンジン1531~1532、N、及び/又はグラフィックス加速モジュール1546について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス1590に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
【表1】
【0131】
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
【表2】
【0132】
一実施例では、各WD1584は、特定のグラフィックス加速モジュール1546及び/又はグラフィックス処理エンジン1531~1532、Nに固有のものである。WD1584は、グラフィックス処理エンジン1531~1532、Nがワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
【0133】
図15Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト1599が記憶されているハイパーバイザ実アドレス空間1598を含む。ハイパーバイザ実アドレス空間1598は、オペレーティング・システム1595のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ1596を介してアクセス可能である。
【0134】
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール1546を使用できるようにする。グラフィックス加速モジュール1546が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ存在する:時間スライス共有及びグラフィックス指定共有(graphics-directed shared)である。
【0135】
このモデルでは、システム・ハイパーバイザ1596がグラフィックス加速モジュール1546を所有しており、その機能をすべてのオペレーティング・システム1595にとって利用可能にする。システム・ハイパーバイザ1596による仮想化をグラフィックス加速モジュール1546がサポートするために、グラフィックス加速モジュール1546は、以下のことに準拠してもよい:1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール1546が、コンテキストの保存及び復元の機構を提供しなくてはならない。2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール1546によって保証され、又はグラフィックス加速モジュール1546が、ジョブの処理をプリエンプションする機能を提供する。3)グラフィックス加速モジュール1546は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならない。
【0136】
少なくとも一実施例では、アプリケーション1580は、グラフィックス加速モジュール1546のタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム1595のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュール1546のタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュール1546のタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール1546のために特にフォーマット化されており、グラフィックス加速モジュール1546のコマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール1546によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。アクセラレータ統合回路1536及びグラフィックス加速モジュール1546の実装形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。ハイパーバイザ1596は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素1583に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール1546がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間1582内のエリアの実効アドレスを収容するレジスタ1545のうちの1つである。ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
【0137】
システム・コールを受け取ると、オペレーティング・システム1595は、アプリケーション1580が登録済みであり、グラフィックス加速モジュール1546を使用する権限が与えられていることを検証してもよい。次いで、オペレーティング・システム1595は、表3に示す情報を伴ってハイパーバイザ1596にコールする。
【表3】
【0138】
ハイパーバイザ・コールを受け取ると、ハイパーバイザ1596は、オペレーティング・システム1595が登録済みであり、グラフィックス加速モジュール1546を使用する権限が与えられていることを検証する。次いでハイパーバイザ1596は、プロセス要素1583を、対応するグラフィックス加速モジュール1546のタイプのプロセス要素リンク・リストに入れる。プロセス要素は、表4に示す情報を含んでもよい。
【表4】
【0139】
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス1590のレジスタ1545を初期化する。
【0140】
図15Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ1501~1502及びGPUメモリ1520~1523にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実装形態では、GPU1510~1513で実行される動作は、プロセッサ・メモリ1501~1502にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ1501に割り振られ、第2の部分は第2のプロセッサ・メモリ1502に割り振られ、第3の部分はGPUメモリ1520に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ1501~1502及びGPUメモリ1520~1523のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
【0141】
一実施例では、MMU1539A~1539Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路1594A~1594Eは、1つ又は複数のホスト・プロセッサ(たとえば、1505)のキャッシュとGPU1510~1513のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実装して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。バイアス/コヒーレンス管理回路1594A~1594Eの複数のインスタンスが
図15Fに示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ1505のMMU内に実装されてもよく、且つ/又はアクセラレータ統合回路1536内に実装されてもよい。
【0142】
一実施例は、GPU付きメモリ1520~1523をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPU付きメモリ1520~1523が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ1505ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPU付きメモリ1520~1523にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU1510~1513が見る有効な書込み帯域幅を大幅に低減することある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
【0143】
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(すなわち、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU1510~1513にある状態又はない状態で、1つ又は複数のGPU付きメモリ1520~1523の奪われたメモリ範囲(stolen memory range)において実装されてもよい。或いは、バイアス・テーブル全体が、GPU内に維持されてもよい。
【0144】
少なくとも一実施例では、GPU付きメモリ1520~1523への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。第1に、GPUバイアス内での自らのページを見いだすGPU1510~1513からのローカル要求が、対応するGPUメモリ1520~1523に直接転送される。ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ1505に転送される。一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ1505からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU1510~1513に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
【0145】
バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ1505のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
【0146】
一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ1505によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。これらのページにアクセスするために、プロセッサ1505は、GPU1510からのアクセスを要求してもよく、GPU1510は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。したがって、プロセッサ1505とGPU1510との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ1505によっては要求されないようにすること、又はその逆にすることが有益である。
【0147】
推論及び/又は訓練論理915は、1つ又は複数の実施例を行うために使用される。推論及び/又は訓練論理915に関する詳細は、
図9A及び/又は9Bと合わせて以下に提供される。
【0148】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0149】
図16は、本明細書に記載した様々な実施例による、1つ又は複数のIPコアを使用して製造することができる例示的一体型回路及び関連するグラフィックス・プロセッサを示している。図示したものに加えて、他の論理及び回路を、追加のグラフィックス・プロセッサ/コア、周辺インターフェース・コントローラ、又は汎用プロセッサ・コアを含む、少なくとも一実施例に含めることができる。
【0150】
図16は、少なくとも一実施例による、1つ又は複数のIPコアを使用して製造することができるチップ一体型回路1600上の例示的システムを示すブロック図である。少なくとも一実施例では、一体型回路1600は、1つ又は複数のアプリケーション・プロセッサ1605(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ1610を含み、加えて、いずれかがモジュールIPコアである、画像プロセッサ1615及び/又はビデオ・プロセッサ1620を備えることができる。少なくとも一実施例では、一体型回路1600は、USBコントローラ1625、UARTコントローラ1630、SPI/SDIOコントローラ1635、及びI
2S/I
2Cコントローラ1640を含む周辺又はバス論理を含む。少なくとも一実施例では、一体型回路1600は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI(登録商標))コントローラ1650及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース1655の1つ又は複数に結合されたディスプレイ・デバイス1645を含むことができる。少なくとも一実施例では、ストレージは、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム1660によって提供することができる。少なくとも一実施例では、メモリ・インターフェースは、SDRAM又はSRAMメモリ・デバイスへのアクセスのためにメモリ・コントローラ1665を介して提供することができる。少なくとも一実施例では、いくつかの一体型回路は加えて、埋め込み式セキュリティ・エンジン1670を含む。
【0151】
推論及び/又は訓練論理915は、1つ又は複数の実施例に関連付けられた推論及び/又は訓練動作を行うために使用される。推論及び/又は訓練論理915に関する詳細は、
図9A及び/又は9Bと合わせて以下に提供する。少なくとも一実施例では、推論及び/又は訓練論理915は、ニューラル・ネットワーク訓練動作、ニューラル・ネットワーク関数、及び/又はアーキテクチャ、或いは本明細書に記載したニューラル・ネットワーク使用ケースを使用して算出された重みパラメータに少なくとも部分的に基づいて、動作を推論又は予測するための一体型回路1600内で使用することができる。
【0152】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0153】
図17A~17Bは、本明細書に記載した様々な実施例による、1つ又は複数のIPコアを使用して製造することができる例示的一体型回路及び関連するグラフィックス・プロセッサを示している。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
【0154】
図17A~
図17Bは、本明細書に記載の実施例によるSoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。
図17Aは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ1710を示す。
図17Bは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ1740を示す。少なくとも一実施例では、
図17Aのグラフィックス・プロセッサ1710は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、
図17Bのグラフィックス・プロセッサ1740は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ1710、1740のそれぞれは、
図16のグラフィックス・プロセッサ1610の変形形態とすることができる。
【0155】
少なくとも一実施例では、グラフィックス・プロセッサ1710は、頂点プロセッサ1705と、1つ又は複数のフラグメント・プロセッサ1715A~1715N(たとえば、1715A、1715B、1715C、1715D~1715N-1、及び1715N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ1710は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ1705は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ1715A~1715Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ1705は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ1715A~1715Nは、頂点プロセッサ1705によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ1715A~1715Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
【0156】
少なくとも一実施例では、グラフィックス・プロセッサ1710はさらに、1つ又は複数のメモリ管理ユニット(MMU)1720A~1720B、キャッシュ1725A~1725B、及び回路相互接続1730A~1730Bを含む。少なくとも一実施例では、1つ又は複数のMMU1720A~1720Bは、頂点プロセッサ1705及び/又はフラグメント・プロセッサ1715A~1715Nを含め、グラフィックス・プロセッサ1710のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ1725A~1725Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU1720A~1720Bは、
図16の1つ若しくは複数のアプリケーション・プロセッサ1605、画像プロセッサ1615、及び/又はビデオ・プロセッサ1620に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ1605~1620は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続1730A~1730Bは、グラフィックス・プロセッサ1710が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
【0157】
少なくとも一実施例では、グラフィックス・プロセッサ1740は、
図17Aのグラフィックス・プロセッサ1710の1つ又は複数のMMU1720A~1720B、キャッシュ1725A~1725B、及び回路相互接続1730A~1730Bを含む。少なくとも一実施例では、グラフィックス・プロセッサ1740は、1つ又は複数のシェーダ・コア1755A~1755N(たとえば、1755A、1755B、1755C、1755D、1755E、1755F~1755N-1、及び1755N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ1740は、1つ又は複数のシェーダ・コア1755A~1755Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ1745と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット1758とを含む。
【0158】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路17A及び/又は17Bにおいて使用されてもよい。
【0159】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0160】
図18A~
図18Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。
図18Aは、グラフィックス・コア1800を示し、このグラフィックス・コア1800は、少なくとも一実施例では
図16のグラフィックス・プロセッサ1610に含められてもよく、少なくとも一実施例では
図17Bのように、統合されたシェーダ・コア1755A~1755Nであってもよい。
図18Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット1830を示す。
【0161】
少なくとも一実施例では、グラフィックス・コア1800は、共有命令キャッシュ1802、テクスチャ・ユニット1818、及びキャッシュ/共有メモリ1820を含み、これらは、グラフィックス・コア1800内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア1800は、複数のスライス1801A~1801N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア1800の複数のインスタンスを含むことができる。スライス1801A~1801Nは、ローカル命令キャッシュ1804A~1804N、スレッド・スケジューラ1806A~1806N、スレッド・ディスパッチャ1808A~1808N、及びレジスタのセット1810A~1810Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス1801A~1801Nは、追加機能ユニット(AFU1812A~1812N)、浮動小数点ユニット(FPU1814A~1814N)、整数算術論理演算ユニット(ALU1816~1816N)、アドレス計算ユニット(ACU1813A~1813N)、倍精度浮動小数点ユニット(DPFPU1815A~1815N)、及び行列処理ユニット(MPU1817A~1817N)のセットを含むことができる。
【0162】
少なくとも一実施例では、FPU1814A~1814Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU1815A~1815Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU1816A~1816Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU1817A~1817Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU1817A~1817Nは、汎用行列-行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU1812A~1812Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
【0163】
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア1800において使用されてもよい。
【0164】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0165】
図18Bは、汎用処理ユニット(GPGPU)1830を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU1830は、GPGPU1830の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU1830は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース1832を含む。少なくとも一実施例では、ホスト・インターフェース1832は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース1832は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU1830は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ1834を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ1836A~1836Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hは、キャッシュ・メモリ1838を共有する。少なくとも一実施例では、キャッシュ・メモリ1838は、コンピュート・クラスタ1836A~1836H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
【0166】
少なくとも一実施例では、GPGPU1830は、メモリ・コントローラ1842A~1842Bのセットを介して、コンピュート・クラスタ1836A~1836Hに結合されたメモリ1844A~1844Bを含む。少なくとも一実施例では、メモリ1844A~1844Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
【0167】
少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hはそれぞれ、
図18Aのグラフィックス・コア1800などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
【0168】
少なくとも一実施例では、GPGPU1830の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ1836A~1836Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU1830の複数のインスタンスは、ホスト・インターフェース1832を介して通信する。少なくとも一実施例では、GPGPU1830は、I/Oハブ1839を含み、このハブは、GPGPU1830の他のインスタンスへの直接接続を可能にするGPUリンク1840に、GPGPU1830を結合する。少なくとも一実施例では、GPUリンク1840は、GPGPU1830の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク1840は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU1830の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース1832を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク1840は、ホスト・インターフェース1832に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
【0169】
少なくとも一実施例では、GPGPU1830は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU1830は、推論プラットフォーム内で使用することができる。GPGPU1830が推論のために使用される少なくとも一実施例では、GPGPUは、GPGPUがニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ1836A~1836Hを含んでもよい。少なくとも一実施例では、メモリ1844A~1844Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU1830の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
【0170】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU1830において使用されてもよい。
【0171】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0172】
図19は、少なくとも一実施例によるコンピューティング・システム1900を示すブロック図である。少なくとも一実施例では、コンピューティング・システム1900は、メモリ・ハブ1905を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ1902とシステム・メモリ1904とを有する処理サブシステム1901を含む。少なくとも一実施例では、メモリ・ハブ1905は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ1902内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ1905は、通信リンク1906を介してI/Oサブシステム1911に結合される。少なくとも一実施例では、I/Oサブシステム1911は、コンピューティング・システム1900が1つ又は複数の入力デバイス1908からの入力を受け取れるようにすることができるI/Oハブ1907を含む。少なくとも一実施例では、I/Oハブ1907は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ1902に含まれて、1つ又は複数のディスプレイ・デバイス1910Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ1907に結合された1つ又は複数のディスプレイ・デバイス1910Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
【0173】
少なくとも一実施例では、処理サブシステム1901は、バス又は他の通信リンク1913を介してメモリ・ハブ1905に結合された1つ又は複数の並列プロセッサ1912を含む。少なくとも一実施例では、通信リンク1913は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つであってもよく、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ1912は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ1912は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ1907を介して結合された1つ又は複数のディスプレイ・デバイス1910Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、1つ又は複数の並列プロセッサ1912はまた、1つ又は複数のディスプレイ・デバイス1910Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
【0174】
少なくとも一実施例では、システム・ストレージ・ユニット1914は、I/Oハブ1907に接続されて、コンピューティング・システム1900のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ1916を使用して、I/Oハブ1907と、プラットフォームに一体化されてもよいネットワーク・アダプタ1918及び/又はワイヤレス・ネットワーク・アダプタ1919などの他の構成要素、並びに1つ又は複数のアドイン・デバイス1920を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ1918は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ1919は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
【0175】
少なくとも一実施例では、コンピューティング・システム1900は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ1907に接続されてもよい。少なくとも一実施例では、
図19の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース、又は他の相互接続プロトコルを使用して、実装されてもよい。
【0176】
少なくとも一実施例では、1つ又は複数の並列プロセッサ1912は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ1912は、汎用処理に最適化された回路を組み込んでいる。少なくとも一実施例では、コンピューティング・システム1900の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、1つ又は複数の並列プロセッサ1912、メモリ・ハブ1905、プロセッサ1902、及びI/Oハブ1907を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム1900の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム1900の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
【0177】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために
図1900のシステムにおいて使用されてもよい。
【0178】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0179】
プロセッサ
図20Aは、少なくとも一実施例による並列プロセッサ2000を示す。少なくとも一実施例では、並列プロセッサ2000の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2000は、例示的な実施例による
図19に示す1つ又は複数の並列プロセッサ1912の変形形態である。
【0180】
少なくとも一実施例では、並列プロセッサ2000は並列処理ユニット2002を含む。少なくとも一実施例では、並列処理ユニット2002は、並列処理ユニット2002の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2004を含む。少なくとも一実施例では、I/Oユニット2004は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2004は、メモリ・ハブ1905などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ1905とI/Oユニット2004との間の接続は、通信リンク1913を形成する。少なくとも一実施例では、I/Oユニット2004は、ホスト・インターフェース2006及びメモリ・クロスバー2016に接続され、ここでホスト・インターフェース2006は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2016は、メモリ動作の実行を対象とするコマンドを受け取る。
【0181】
少なくとも一実施例では、ホスト・インターフェース2006が、I/Oユニット2004を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2006は、これらのコマンドを実行するためのワーク動作をフロント・エンド2008に向けることができる。少なくとも一実施例では、フロント・エンド2008はスケジューラ2010に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2012に分配するように構成される。少なくとも一実施例では、スケジューラ2010は、処理クラスタ・アレイ2012にタスクが分配される前に、処理クラスタ・アレイ2012が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2010は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ2010は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2012で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ2012でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2010を含むマイクロコントローラ内のスケジューラ2010論理によって、ワークロードを自動的に処理アレイ2012全体に分配することができる。
【0182】
少なくとも一実施例では、処理クラスタ・アレイ2012は、最大「N個」の処理クラスタ(たとえば、クラスタ2014A、クラスタ2014B~クラスタ2014N)を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2012の各クラスタ2014A~2014Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2010は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2012のクラスタ2014A~2014Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2010によって動的に対処されてもよく、又は処理クラスタ・アレイ2012によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2012の異なるクラスタ2014A~2014Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
【0183】
少なくとも一実施例では、処理クラスタ・アレイ2012は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2012は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2012は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
【0184】
少なくとも一実施例では、処理クラスタ・アレイ2012は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2012は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2012は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2002は、処理できるようにデータをシステム・メモリからI/Oユニット2004を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2022)に記憶し、次いでシステム・メモリに書き戻すことができる。
【0185】
少なくとも一実施例では、並列処理ユニット2002を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2012の複数のクラスタ2014A~2014Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2010を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2012の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2014A~2014Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ2014A~2014Nの間で中間データを送信できるようにしてもよい。
【0186】
少なくとも一実施例では、処理クラスタ・アレイ2012は、実行される処理タスクをスケジューラ2010を介して受け取ることができ、スケジューラ2010は、処理タスクを定義するコマンドをフロント・エンド2008から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2010は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2008からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2008は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2012が有効な状態に構成されていることを保証するように構成されることが可能である。
【0187】
少なくとも一実施例では、並列処理ユニット2002の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2022と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2022には、メモリ・クロスバー2016を介してアクセスすることができ、メモリ・クロスバー2016は、処理クラスタ・アレイ2012並びにI/Oユニット2004からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2016は、メモリ・インターフェース2018を介して並列プロセッサ・メモリ2022にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2018は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2020A、パーティション・ユニット2020B~パーティション・ユニット2020N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2022の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2020A~2020Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2020Aは、対応する第1のメモリ・ユニット2024Aを有し、第2のパーティション・ユニット2020Bは、対応するメモリ・ユニット2024Bを有し、N番目のパーティション・ユニット2020Nは、対応するN番目のメモリ・ユニット2024Nを有する。少なくとも一実施例では、パーティション・ユニット2020A~2020Nの数は、メモリ・デバイスの数に等しくなくてもよい。
【0188】
少なくとも一実施例では、メモリ・ユニット2024A~2024Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2024A~2024Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2022の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2024A~2024Nにわたって記憶されて、パーティション・ユニット2020A~2020Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2022のローカル・インスタンスは除外されてもよい。
【0189】
少なくとも一実施例では、処理クラスタ・アレイ2012のクラスタ2014A~2014Nのうちのいずれか1つは、並列プロセッサ・メモリ2022内のメモリ・ユニット2024A~2024Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2016は、各クラスタ2014A~2014Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2020A~2020N、又は別のクラスタ2014A~2014Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2014A~2014Nは、メモリ・クロスバー2016を通ってメモリ・インターフェース2018と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2016は、I/Oユニット2004と通信するためのメモリ・インターフェース2018への接続部、並びに並列プロセッサ・メモリ2022のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2014A~2014N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2002のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2016は、仮想チャネルを使用して、クラスタ2014A~2014Nと、パーティション・ユニット2020A~2020Nとの間でトラフィック・ストリームを分離することができる。
【0190】
少なくとも一実施例では、並列処理ユニット2002の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2002の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2002のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2002又は並列プロセッサ2000のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
【0191】
図20Bは、少なくとも一実施例によるパーティション・ユニット2020のブロック図である。少なくとも一実施例では、パーティション・ユニット2020は、
図20Aのパーティション・ユニット2020A~2020Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2020は、L2キャッシュ2021、フレーム・バッファ・インターフェース2025、及びラスタ演算ユニット(「ROP」:raster operations unit)2026を含む。L2キャッシュ2021は、メモリ・クロスバー2016及びROP2026から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ2021によってフレーム・バッファ・インターフェース2025に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース2025を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース2025は、
図20の(たとえば並列プロセッサ・メモリ2022内の)メモリ・ユニット2024A~2024Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
【0192】
少なくとも一実施例では、ROP2026は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2026は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2026は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。ROP2026によって実行される圧縮論理は、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
【0193】
少なくとも一実施例では、ROP2026は、パーティション・ユニット2020内ではなく、各処理クラスタ内(たとえば、
図20のクラスタ2014A~2014N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2016を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、
図19の1つ又は複数のディスプレイ・デバイス1910のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ1902によってさらに処理できるようにルーティングされてもよく、又は
図20Aの並列プロセッサ2000内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
【0194】
図20Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2014のブロック図である。少なくとも一実施例では、処理クラスタは、
図20Aの処理クラスタ2014A~2014Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2014のうちの1つ又は複数は、多数のスレッドを並列で実行するように構成されてもよく、ここで「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction, multiple-thread)の技法が使用される。
【0195】
少なくとも一実施例では、処理クラスタ2014の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2032を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2032は、
図20Aのスケジューラ2010から命令を受け取り、グラフィックス・マルチプロセッサ2034及び/又はテクスチャ・ユニット2036を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2014内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034の1つ又は複数のインスタンスは、処理クラスタ2014内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2040が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2032は、データ・クロスバー2040を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
【0196】
少なくとも一実施例では、処理クラスタ2014内の各グラフィックス・マルチプロセッサ2034は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
【0197】
少なくとも一実施例では、処理クラスタ2014に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2034内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2034内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、1つ又は複数の処理エンジンは、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2034内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2034内の処理エンジンより多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2034上で同時に実行することができる。
【0198】
少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、内部キャッシュをやめて、処理クラスタ2014内のキャッシュ・メモリ(たとえば、L1キャッシュ2048)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2034は、パーティション・ユニット(たとえば、
図20Aのパーティション・ユニット2020A~2020N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2014間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2002の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2014は、共通の命令及びデータを共有することができるグラフィックス・マルチプロセッサ2034の複数のインスタンスを含み、これらはL1キャッシュ2048に記憶されてもよい。
【0199】
少なくとも一実施例では、各処理クラスタ2014は、仮想アドレスを物理アドレスにマッピングするように構成されたメモリ管理ユニット(「MMU」)2045を含んでもよい。少なくとも一実施例では、MMU2045の1つ又は複数のインスタンスは、
図20Aのメモリ・インターフェース2018内にあってもよい。少なくとも一実施例では、MMU2045は、仮想アドレスを、タイル及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2045は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2034若しくはL1キャッシュ、又は処理クラスタ2014内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
【0200】
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2034がテクスチャ・ユニット2036に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2014が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2034内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2034は、処理済みタスクをデータ・クロスバー2040に出力して、さらなる処理ができるように別の処理クラスタ2014に処理済みタスクを提供し、又はメモリ・クロスバー2016を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2042(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2034からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、
図20Aのパーティション・ユニット2020A~2020N)内に位置付けられてもよい。少なくとも一実施例では、プレROP2042ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
【0201】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ2014において使用されてもよい。
【0202】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0203】
図20Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2034を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、処理クラスタ2014のパイプライン・マネージャ2032と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034は、命令キャッシュ2052、命令ユニット2054、アドレス・マッピング・ユニット2056、レジスタ・ファイル2058、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2062、及び1つ又は複数のロード/ストア・ユニット2066を含むがこれらに限定されない実行パイプラインを有する。GPGPUコア2062、及びロード/ストア・ユニット2066は、メモリ及びキャッシュ相互接続2068を介して、キャッシュ・メモリ2072及び共有メモリ2070に結合される。
【0204】
少なくとも一実施例では、命令キャッシュ2052は、実行すべき命令のストリームをパイプライン・マネージャ2032から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2052にキャッシュされ、命令ユニット2054により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット2054は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、各スレッド・グループは、GPGPUコア2062内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2056を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2066がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
【0205】
少なくとも一実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034の機能ユニット(たとえばGPGPUコア2062、ロード/ストア・ユニット2066)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2058は、レジスタ・ファイル2058の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。一実施例では、レジスタ・ファイル2058は、グラフィックス・マルチプロセッサ2034によって実行されている異なるワープ間で分割される。
【0206】
少なくとも一実施例では、GPGPUコア2062はそれぞれ、グラフィックス・マルチプロセッサ2034の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。GPGPUコア2062同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2062の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、浮動小数点演算のためにIEEE754-2008規格を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2034はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコアの1つ又は複数は、固定の又は特別な機能論理も含むことができる。
【0207】
少なくとも一実施例では、GPGPUコア2062は、複数のデータ・セットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2062は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
【0208】
少なくとも一実施例では、メモリ及びキャッシュ相互接続2068は、グラフィックス・マルチプロセッサ2034の各機能ユニットをレジスタ・ファイル2058及び共有メモリ2070に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2068は、ロード/ストア・ユニット2066が、共有メモリ2070とレジスタ・ファイル2058の間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2058は、GPGPUコア2062と同じ周波数で動作することができ、したがって、GPGPUコア2062とレジスタ・ファイル2058の間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ2070を使用して、グラフィックス・マルチプロセッサ2034内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2072を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2036の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2070は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2062で実行されているスレッドは、キャッシュ・メモリ2072内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
【0209】
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアと同じパッケージ又はチップに一体化されてもよく、内部(すなわち、パッケージ又はチップの内部の)プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
【0210】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ2034において使用されてもよい。
【0211】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0212】
図21は、少なくとも一実施例による、マルチGPUコンピューティング・システム11100を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム11100は、ホスト・インターフェース・スイッチ11104を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)11106A~Dに結合されたプロセッサ11102を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ11104は、プロセッサ11102をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ11102は、GPGPU11106A~Dと通信することができる。GPGPU11106A~Dは、高速ポイントツーポイントGPUツーGPUリンク11116のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク11116は、専用GPUリンクを介して、GPGPU11106A~Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク11116は、プロセッサ11102が接続されているホスト・インターフェース・バス11104を介した通信を必要とせずに、GPGPU11106A~Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク11116に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス11104は、システム・メモリへのアクセスができるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム11100の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU11106A~Dは、ホスト・インターフェース・スイッチ11104を介してプロセッサ11102に接続され、少なくとも一実施例では、プロセッサ11102は、P2PのGPUリンク11116のための直接サポートを含み、GPGPU11106A~Dに直接接続することができる。
【0213】
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム11100において使用されてもよい。
【0214】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0215】
図22は、少なくとも一実施例によるグラフィックス・プロセッサ2200のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ2200は、リング相互接続2202、パイプライン・フロント・エンド2204、メディア・エンジン2237、及びグラフィックス・コア2280A~2280Nを含む。少なくとも一実施例では、リング相互接続2202は、グラフィックス・プロセッサ2200を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ2200は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
【0216】
少なくとも一実施例では、グラフィックス・プロセッサ2200は、リング相互接続2202を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド2204のコマンド・ストリーマ2203によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ2200は、グラフィックス・コア2280A~2280Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ2203はコマンドをジオメトリ・パイプライン2236に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ2203はコマンドをビデオ・フロント・エンド2234に供給し、ビデオ・フロント・エンド2234はメディア・エンジン2237に結合される。少なくとも一実施例では、メディア・エンジン2237は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)2230と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)2233エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン2236及びメディア・エンジン2237はそれぞれ、少なくとも1つのグラフィックス・コア2280Aによって提供されるスレッド実行リソースのための実行スレッドを生成する。
【0217】
少なくとも一実施例では、グラフィックス・プロセッサ2200は、モジュール式コア2280A~2280N(コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのモジュール式コアは、複数のサブ・コア2250A~2250N、2260A~2260N(コア・サブ・スライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ2200は、任意の数のグラフィックス・コア2280A~2280Nを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ2200は、少なくとも第1のサブ・コア2250A及び第2のサブ・コア2260Aを有するグラフィックス・コア2280Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ2200は、単一のサブ・コア(たとえば、2250A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ2200は、複数のグラフィックス・コア2280A~2280Nを含み、このそれぞれが、第1のサブ・コア2250A~2250Nのセット、及び第2のサブ・コア2260A~2260Nのセットを含む。少なくとも一実施例では、第1のサブ・コア2250A~2250Nの各サブ・コアは、少なくとも、実行ユニット2252A~2252Nとメディア/テクスチャ・サンプラ2254A~2254Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア2260A~2260Nの各サブ・コアは、少なくとも、実行ユニット2262A~2262Nとサンプラ2264A~2264Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア2250A~2250N、2260A~2260Nは、共有リソース2270A~2270Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
【0218】
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ2200において使用されてもよい。
【0219】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0220】
図23は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ2300のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ2300は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ2300は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMXTMレジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ2300は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
【0221】
少なくとも一実施例では、プロセッサ2300は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド(「フロント・エンド」)2301を含む。少なくとも一実施例では、フロント・エンド2301は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ2326が、メモリから命令をフェッチし、命令デコーダ2328に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ2328は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ2328は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ2330は、デコードされたuopsを、実行できるようにuopキュー2334においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ2330が複雑な命令に遭遇すると、マイクロコードROM2332が、動作の完了に必要なuopsを提供する。
【0222】
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが要な場合、命令デコーダ2328は、マイクロコードROM2332にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ2328において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM2332に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ2330は、少なくとも一実施例によるマイクロコードROM2332からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM2332が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド2301は、トレース・キャッシュ2330からマイクロ・オプスのフェッチを再開してもよい。
【0223】
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)2303は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。少なくとも一実施例では、アウト・オブ・オーダー実行エンジン2303は、限定することなく、アロケータ/レジスタ・リネーマ2340、メモリuopキュー2342、整数/浮動小数点uopキュー2344、メモリ・スケジューラ2346、高速スケジューラ2302、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)2304、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)2306を含む。少なくとも一実施例では、高速スケジューラ2302、低速/汎用浮動小数点スケジューラ2304、及び単純浮動小数点スケジューラ2306は、本明細書において集合的に「uopスケジューラ2302、2304、2306」とも呼ばれる。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2340は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2340は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2340はまた、メモリ・スケジューラ2346及びuopスケジューラ2302、2304、2306の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2342と非メモリ動作のための整数/浮動小数点uopキュー2344のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ2302、2304、2306は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、少なくとも一実施例の高速スケジューラ2302は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ2304及び単純浮動小数点スケジューラ2306は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ2302、2304、2306は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
【0224】
少なくとも一実施例では、実行ブロック2311は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク2308、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2310、アドレス生成ユニット(「AGU」:address generation units)2312及び2314、高速算術論理演算ユニット(ALU)(「高速ALU」)2316及び2318、低速算術論理演算ユニット(「低速ALU」)2320、浮動小数点ALU(「FP」)2322、並びに浮動小数点移動ユニット(「FP移動」)2324を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、本明細書において「レジスタ・ファイル2308、2310」とも呼ばれる。少なくとも一実施例では、AGU2312及び2314、高速ALU2316及び2318、低速ALU2320、浮動小数点ALU2322、及び浮動小数点移動ユニット2324は、本明細書において「実行ユニット2312、2314、2316、2318、2320、2322、及び2324」とも呼ばれる。少なくとも一実施例では、実行ブロックb11は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
【0225】
少なくとも一実施例では、レジスタ・ファイル2308、2310は、uopスケジューラ2302、2304、2306と、実行ユニット2312、2314、2316、2318、2320、2322、及び2324との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ファイル2308、2310のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ファイル2308、2310は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2308は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2310は、限定することなく、128ビット幅のエントリを含んでもよい。
【0226】
少なくとも一実施例では、実行ユニット2312、2314、2316、2318、2320、2322、2324は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ファイル2308、2310は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ2300は、限定することなく、任意の数及び組合せの実行ユニット2312、2314、2316、2318、2320、2322、2324を含んでよい。少なくとも一実施例では、浮動小数点ALU2322及び浮動小数点移動ユニット2324は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU2322は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU2316、2318に渡されてもよい。少なくとも一実施例では、高速ALU2316、2318は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU2320は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU2320に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS2312、2314によって実行されてもよい。少なくとも一実施例では、高速ALU2316、高速ALU2318、及び低速ALU2320は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU2316、高速ALU2318、及び低速ALU2320は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2322及び浮動小数点移動ユニット2324は、様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2322及び浮動小数点移動ユニット2324は、SIMD及びマルチメディア命令と併せて128ビット幅のパック・データ・オペランドで動作してもよい。
【0227】
少なくとも一実施例では、uopスケジューラ2302、2304、2306は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ2300において投機的にスケジューリング及び実行されてもよいので、プロセッサ2300は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
【0228】
少なくとも一実施例では、用語「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
【0229】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、実行ブロック2311、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、実行ブロック2311に示すALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行ブロック2311のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0230】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0231】
図24は、少なくとも一実施例による深層学習アプリケーション・プロセッサ2400を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、深層学習アプリケーション・プロセッサ2400によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ2400に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ2400は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、限定することなく、処理クラスタ2410(1)~2410(12)、チップ間リンク(「ICL」)2420(1)~2420(12)、チップ間コントローラ(「ICC」)2430(1)~2430(2)、メモリ・コントローラ(「Mem Ctrlrs」)2442(1)~2442(4)、高帯域幅メモリ物理層(「HBM PHY」)2444(1)~2444(4)、管理-コントローラ中央処理装置(「管理-コントローラCPU」)2450、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、I2C、GPIO」)、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)2470、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Expressx16」)2480を含む。
【0232】
少なくとも一実施例では、処理クラスタ2410は、本明細書に記載の技法を含む1つ又は複数の訓練技法を使用して計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ2410は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、任意の数及びタイプの処理クラスタ2400を含んでもよい。少なくとも一実施例では、チップ間リンク2420は、双方向性である。少なくとも一実施例では、チップ間リンク2420及びチップ間コントローラ2430は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ2400が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、(ゼロを含む)任意の数及びタイプのICL2420及びICC2430を含んでもよい。
【0233】
少なくとも一実施例では、HBM2 2440は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。HBM2 2440(i)は、メモリ・コントローラ2442(i)とHBM PHY2444(i)の両方に関連付けられる。少なくとも一実施例では、任意の数のHBM2 2440が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ2442及びHBM PHY2444に関連付けられてもよい。少なくとも一実施例では、SPI、I2C、GPIO2460、PCIeコントローラ及びDMA2470、並びに/又はPCIe2480は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
【0234】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、深層学習アプリケーション・プロセッサ2400に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ2400は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ2400によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ2400は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0235】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0236】
図25は、少なくとも一実施例による、ニューロモーフィック・プロセッサ2500のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、ニューロモーフィック・プロセッサ2500の外部のソースから1つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ2500内の1つ又は複数のニューロン2502に送信されてもよい。少なくとも一実施例では、ニューロン2502及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、限定することなく、ニューロン2502の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン2502が使用されてもよい。少なくとも一実施例では、ニューロン2502の各インスタンスは、ニューロン入力2504及びニューロン出力2506を含んでもよい。少なくとも一実施例では、ニューロン2502は出力を生成してもよく、この出力は、ニューロン2502の他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力2504及びニューロン出力2506は、シナプス2508を介して相互接続されてもよい。
【0237】
少なくとも一実施例では、ニューロン2502とシナプス2508は、ニューロモーフィック・プロセッサ2500が受信した情報をニューロモーフィック・プロセッサ2500が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン2502は、ニューロン入力2504を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン2502は、ニューロン入力2504において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン2502は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実装されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン2502は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力2504で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力2504において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン2502は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン2502は、ニューロン2504に伝達関数を適用した結果が閾値を超えるとき、ニューロン2506において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン2502は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン2502は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
【0238】
少なくとも一実施例では、ニューロン2502は、シナプス2508を通して相互接続されてもよい。少なくとも一実施例では、シナプス2508は、第1のニューロン2502の出力から第2のニューロン2502の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン2502は、シナプス2508の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力2506の1つ又は複数のインスタンスは、シナプス2508のインスタンスを介して、同じニューロン2502のニューロン入力2504のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス2508のインスタンスを介して送信されることになる出力を生成するニューロン2502のインスタンスは、シナプス2508のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス2508のインスタンスを介して送信されることになる入力を受信するニューロン2502のインスタンスは、シナプス2508のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン2502のインスタンスは、シナプス2508の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス2508の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン2502の単一のインスタンスは、したがって、シナプス2508の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
【0239】
少なくとも一実施例では、ニューロン2502は、1つ又は複数の層に組織化されてもよい。ニューロン2502の各インスタンスは、1つ又は複数のシナプス2508を通って1つ又は複数のニューロン入力2504にファン・アウトすることができる1つのニューロン出力2506を有してもよい。少なくとも一実施例では、第1の層2510のニューロン2502のニューロン出力2506は、第2の層2512のニューロン2502のニューロン入力2504に接続されてもよい。少なくとも一実施例では、層2510は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第1の層2510のインスタンスにおけるニューロン2502の各インスタンスは、第2の層2512におけるニューロン2502の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層2510は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2512のインスタンスにおけるニューロン2502の各インスタンスは、第3の層2514におけるニューロン2502の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層2512は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層2512のニューロン2502は、(同じ)第2の層2512におけるニューロン2502を含め、複数の他の層のニューロン2502にファン・アウトしてもよい。少なくとも一実施例では、第2の層2512は、「回帰層」と呼ばれてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
【0240】
少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、シナプス2508をニューロン2502に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ2500は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン2502に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス2508は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン2502に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実装されてもよい。
【0241】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0242】
図26は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム2600は、1つ又は複数のプロセッサ2602、及び1つ又は複数のグラフィックス・プロセッサ2608を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ2602若しくはプロセッサ・コア2607を有するサーバ・システムであってもよい。少なくとも一実施例では、システム2600は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
【0243】
少なくとも一実施例では、システム2600は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム2600は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム2600はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム2600は、1つ又は複数のプロセッサ2602と、1つ又は複数のグラフィックス・プロセッサ2608によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
【0244】
少なくとも一実施例では、1つ又は複数のプロセッサ2602はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア2607を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア2607のそれぞれは、特定の命令セット2609を処理するように構成される。少なくとも一実施例では、命令セット2609は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア2607はそれぞれ、異なる命令セット2609を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア2607また、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
【0245】
少なくとも一実施例では、プロセッサ2602はキャッシュ・メモリ2604を含む。少なくとも一実施例では、プロセッサ2602は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ2602の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ2602はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア2607間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル2606がプロセッサ2602に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル2606は、汎用レジスタ又は他のレジスタを含んでもよい。
【0246】
少なくとも一実施例では、1つ又は複数のプロセッサ2602は、1つ又は複数のインターフェース・バス2610に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ2602とシステム2600内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス2610は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース2610は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ2602は、統合メモリ・コントローラ2616、及びプラットフォーム・コントローラ・ハブ2630を含む。少なくとも一実施例では、メモリ・コントローラ2616は、メモリ・デバイスとシステム2600の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)2630は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
【0247】
少なくとも一実施例では、メモリ・デバイス2620は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス2620は、システム2600のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ2602がアプリケーション若しくはプロセスを実行するときに使用するためのデータ2622及び命令2621を記憶することができる。少なくとも一実施例では、メモリ・コントローラ2616はまた、任意選択の外部グラフィックス・プロセッサ2612と結合しており、このグラフィックス・プロセッサは、プロセッサ2602内の1つ又は複数のグラフィックス・プロセッサ2608と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス2611は、プロセッサ2602に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス2611は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス2611は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
【0248】
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2630は、周辺装置が高速I/Oバスを介してメモリ・デバイス2620及びプロセッサ2602に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ2646、ネットワーク・コントローラ2634、ファームウェア・インターフェース2628、ワイヤレス・トランシーバ2626、タッチ・センサ2625、データ・ストレージ・デバイス2624(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス2624は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ2625は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ2626は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース2628は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ2634は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス2610と結合する。少なくとも一実施例では、オーディオ・コントローラ2646は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム2600は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ2640を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2630は、キーボードとマウス2643の組合せ、カメラ2644、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ2642の接続入力デバイスにも接続することができる。
【0249】
少なくとも一実施例では、メモリ・コントローラ2616及びプラットフォーム・コントローラ・ハブ2630のインスタンスは、外部グラフィックス・プロセッサ2612などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ2630及び/又はメモリ・コントローラ2616は、1つ又は複数のプロセッサ2602の外部にあってもよい。たとえば、少なくとも一実施例では、システム2600は、外部のメモリ・コントローラ2616及びプラットフォーム・コントローラ・ハブ2630を含むことができ、これらは、プロセッサ2602と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
【0250】
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、グラフィックス・プロセッサ2600に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ2612に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、
図9A又は
図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2600のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
【0251】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0252】
図27は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア2702A~2702N、統合メモリ・コントローラ2714、及び統合グラフィックス・プロセッサ2708を有するプロセッサ2700のブロック図である。少なくとも一実施例では、プロセッサ2700は、破線の四角によって表される追加コア2702Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア2702A~2702Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット2704A~2704Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット2706にアクセスできる。
【0253】
少なくとも一実施例では、内部キャッシュ・ユニット2704A~2704N、及び共有キャッシュ・ユニット2706は、プロセッサ2700内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット2704A~2704Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット2706及び2704A~2704N間でコヒーレンスを維持する。
【0254】
少なくとも一実施例では、プロセッサ2700はまた、1つ又は複数のバス・コントローラ・ユニット2716とシステム・エージェント・コア2710のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット2716は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア2710は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア2710は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ2714を含む。
【0255】
少なくとも一実施例では、プロセッサ・コア2702A~2702Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア2710は、マルチスレッドの処理中にコア2702A~2702Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア2710はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア2702A~2702N及びグラフィックス・プロセッサ2708の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
【0256】
少なくとも一実施例では、プロセッサ2700はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ2708を含む。少なくとも一実施例では、グラフィックス・プロセッサ2708は、共有キャッシュ・ユニット2706と、1つ又は複数の統合メモリ・コントローラ2714を含むシステム・エージェント・コア2710とに結合する。少なくとも一実施例では、システム・エージェント・コア2710はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ2711を含む。少なくとも一実施例では、ディスプレイ・コントローラ2711はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ2708に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ2708内に一体化されていてもよい。
【0257】
少なくとも一実施例では、プロセッサ2700の内部構成要素を結合するために、リング・ベースの相互接続ユニット2712が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ2708は、I/Oリンク2713を介してリング相互接続2712と結合する。
【0258】
少なくとも一実施例では、I/Oリンク2713は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール2718との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア2702A~2702Nのそれぞれ及びグラフィックス・プロセッサ2708は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール2718を使用する。
【0259】
少なくとも一実施例では、プロセッサ・コア2702A~2702Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア2702A~2702Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア2702A~2702Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア2702A~27-02Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア2702A~2702Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ2700は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
【0260】
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、プロセッサ2700に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ2612、グラフィックス・コア2702A~2702N、又は
図27の他の構成要素に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、
図9A又は
図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2700のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
【0261】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0262】
図28は、本明細書に記載した少なくとも一実施例による、グラフィクス・プロセッサ・コア2800のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア2800は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア2800は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア2800は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア2800は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア2801A~2801Fに結合された固定機能ブロック2830を含むことができる。
【0263】
少なくとも一実施例では、固定機能ブロック2830は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ2800内のすべてのサブ・コアが共有できるジオメトリ/固定機能パイプライン2836を含む。少なくとも一実施例では、ジオメトリ/固定機能パイプライン2836は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
【0264】
少なくとも一実施例では、固定機能ブロック2830はまた、グラフィックスSoCインターフェース2837、グラフィックス・マイクロコントローラ2838、及びメディア・パイプライン2839を含む。少なくとも一実施例では、固定のグラフィックスSoCインターフェース2837は、グラフィックス・コア2800と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ2838は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ2800の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン2839は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン2839は、サブ・コア2801~2801F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
【0265】
少なくとも一実施例では、SoCインターフェース2837は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア2800が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース2837はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア2800とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実装する。少なくとも一実施例では、SoCインターフェース2837はまた、グラフィックス・コア2800の電力管理制御を実装することができ、グラフィックス・コア2800のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース2837は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン2839にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン2836、ジオメトリ及び固定機能パイプライン2814)にディスパッチされることが可能である。
【0266】
少なくとも一実施例では、グラフィックス・マイクロコントローラ2838は、グラフィックス・コア2800のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ2838は、サブ・コア2801A~2801F内の実行ユニット(EU:execution unit)アレイ2802A~2802F、2804A~2804F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア2800を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ・ドアベルのうちの1つにワークロードを送出することができ、このドアベルが、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ2838はまた、グラフィックス・コア2800の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア2800内のレジスタを保存及び復元する機能をグラフィックス・コア2800に提供することができる。
【0267】
少なくとも一実施例では、グラフィックス・コア2800は、図示してあるサブ・コア2801A~2801Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア2800はまた、共有機能論理2810、共有及び/又はキャッシュ・メモリ2812、ジオメトリ/固定機能パイプライン2814、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理2816を含むことができる。少なくとも一実施例では、共有機能論理2810は、グラフィックス・コア2800内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。少なくとも一実施例では、固定の共有の、及び/又はキャッシュのメモリ2812は、グラフィックス・コア2800内のN個のサブ・コア2801A~2801Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン2814は、固定機能ブロック2830内のジオメトリ/固定機能パイプライン2836の代わりに含まれてもよく、同じ又は同様の論理ユニットを含むことができる。
【0268】
少なくとも一実施例では、グラフィックス・コア2800は、グラフィックス・コア2800が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理2816を含む。少なくとも一実施例では、追加の固定機能論理2816は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ/固定機能パイプライン2816、2836内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理2816内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理2816内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
【0269】
少なくとも一実施例では、追加の固定機能論理2816はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
【0270】
少なくとも一実施例では、各グラフィックス・サブ・コア2801A~2801F内において、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア2801A~2801Fは、複数のEUアレイ2802A~2802F、2804A~2804F、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter-thread communication)論理2803A~2803F、3D(たとえば、テクスチャ)サンプラ2805A~2805F、メディア・サンプラ2806A~2806F、シェーダ・プロセッサ2807A~2807F、及び共有ローカル・メモリ(SLM:shared local memory)2808A~2808Fを含む。EUアレイ2802A~2802F、2804A~2804Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理2803A~2803Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ2805A~2805Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ2806A~2806Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア2801A~2801Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア2801A~2801F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ2808A~2808Fを利用することができる。
【0271】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、グラフィックス・プロセッサ2810に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ2612、グラフィックス・マイクロコントローラ2838、ジオメトリ及び固定機能パイプライン2814及び2836、又は
図27の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、
図9A又は
図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ2800のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0272】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0273】
図29A~
図29Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理2900を示す。
図29Aは、スレッド実行論理2900が使用される少なくとも一実施例を示す。
図29Bは、少なくとも一実施例による、実行ユニットの例示的な内部詳細事項を示す図である。
【0274】
図29Aに示すように、少なくとも一実施例では、スレッド実行論理2900は、シェーダ・プロセッサ2902、スレッド・ディスパッチャ2904、命令キャッシュ2906、複数の実行ユニット2908A~2908Nを含むスケーラブル実行ユニット・アレイ、サンプラ2910、データ・キャッシュ2912、及びデータ・ポート2914を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット2908A、2908B、2908C、2908D~2908N-1、及び2908Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理2900は、命令キャッシュ2906、データ・ポート2914、サンプラ2910、及び実行ユニット2908A~2908Nのうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、2908A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット2908A~2908Nのアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
【0275】
少なくとも一実施例では、実行ユニット2908A~2908Nは、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ2902は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ2904を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ2904は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット2908A~2908Nの1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ2904はまた、実行しているシェーダ・プログラムからのラン・タイム・スレッド・スポーニング要求(spawning request)を処理することができる。
【0276】
少なくとも一実施例では、実行ユニット2908A~2908Nは、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット2908A~2908Nのそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット2908A~2908N内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
【0277】
少なくとも一実施例では、実行ユニット2908A~2908Nの各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット2908A~2908Nは、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
【0278】
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW:Quad-Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
【0279】
少なくとも一実施例では、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通したスレッド制御論理(2907A~2907N)を有する融合実行ユニット(fused execution unit)2909A~2909Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。融合EUグループのEUの数は、様々な実施例に応じて異なってもよい。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット2909A~2909Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット2909Aは、第1のEU2908A、第2のEU2908B、及び第1のEU2908Aと第2のEU2908Bに共通のスレッド制御論理2907Aを含む。少なくとも一実施例では、スレッド制御論理2907Aは、融合グラフィックス実行ユニット2909Aで実行されているスレッドを制御して、融合実行ユニット2909A~2909N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
【0280】
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、2906)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理2900に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、2912)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ2910は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ2910は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
【0281】
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理2900に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ2902内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ2902内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ2902は、スレッド・ディスパッチャ2904を介してスレッドを実行ユニット(たとえば、2908A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ2902は、サンプラ2910のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように1つ又は複数のピクセルが切り捨てられる。
【0282】
少なくとも一実施例では、データ・ポート2914は、スレッド実行論理2900のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート2914は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ2912)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
【0283】
図29Bに示してあるように、少なくとも一実施例では、グラフィック実行ユニット2908は、命令フェッチ・ユニット2937、汎用レジスタ・ファイル・アレイ(GRF:general register file array)2924、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)2926、スレッド調停装置(arbiter)2922、送信ユニット2930、ブランチ・ユニット2932、SIMD浮動小数点ユニット(FPU)2934のセット、及び少なくとも一実施例では、専用整数SIMD ALU2935のセットを含むことができる。少なくとも一実施例では、GRF2924及びARF2926は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット2908においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF2926において維持され、スレッド実行中に使用されるデータが、GRF2924に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF2926のスレッド専用レジスタに保持することが可能である。
【0284】
少なくとも一実施例では、グラフィックス実行ユニット2908は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
【0285】
少なくとも一実施例では、グラフィックス実行ユニット2908は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド2908のスレッド調停装置2922は、送信ユニット2930、ブランチ・ユニット2942、又はSIMD FPU2934のうちの1つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF2924内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF2924内の4Kバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4Kバイトにアクセスできる少なくとも一実施例では、GRF2924は、合計28Kバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
【0286】
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット2930によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、専用のブランチ・ユニット2932にディスパッチされる。
【0287】
少なくとも一実施例では、グラフィックス実行ユニット2908は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)2934を含む。少なくとも一実施例では、FPU2934は、整数計算もサポートする。少なくとも一実施例ではFPU2934は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、FPUのうちの少なくとも1つは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU2935のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
【0288】
少なくとも一実施例では、グラフィックス実行ユニット2908の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブ・スライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット2908は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット2908で実行される各スレッドは、異なるチャネルで実行される。
【0289】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理915の一部又はすべてが、実行論理2900に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、
図9A又は
図9Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理2900のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
【0290】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0291】
図30は、少なくとも一実施例による並列処理ユニット(「PPU」)3000を示す。少なくとも一実施例では、PPU3000は、PPU3000によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3000に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3000はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3000によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3000は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3000を利用して、線形代数演算及び機械学習演算などの計算が実行される。
図30は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
【0292】
少なくとも一実施例では、1つ又は複数のPPU3000は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3000は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
【0293】
少なくとも一実施例では、PPU3000は、限定することなく、入力/出力(「I/O」)ユニット3006、フロント・エンド・ユニット3010、スケジューラ・ユニット3012、ワーク分配ユニット3014、ハブ3016、クロスバー(「Xbar」:crossbar)3020、1つ又は複数の汎用処理クラスタ(「GPC」:general processing cluster)3018、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3022を含む。少なくとも一実施例では、PPU3000は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3008を介してホスト・プロセッサ又は他のPPU3000に接続される。少なくとも一実施例では、PPU3000は、相互接続3002を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU3000は、1つ又は複数のメモリ・デバイス(「メモリ」)3004を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス3004は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
【0294】
少なくとも一実施例では、高速GPU相互接続3008は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU3000を含み、PPU3000とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続3008により、ハブ3016を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び
図30に明示されていないこともある他の構成要素などのPPU3000の別のユニットに/から送信される。
【0295】
少なくとも一実施例では、I/Oユニット3006は、システム・バス3002を介してホスト・プロセッサ(
図30には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット3006は、システム・バス3002を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット3006は、システム・バス3002を介してPPU3000のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット3006は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実装して、PCIeバスを介して通信できるようにする。少なくとも一実施例では、I/Oユニット3006は、外部デバイスと通信するためのインターフェースを実装する。
【0296】
少なくとも一実施例では、I/Oユニット3006は、システム・バス3002を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU3000に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット3006は、デコードされたコマンドを、コマンドによって指定されるPPU3000の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット3010に送信され、且つ/又はハブ3016、若しくは(
図30には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのPPU3000の他のユニットに送信される。少なくとも一実施例では、I/Oユニット3006はPPU3000の様々な論理ユニット間で、通信をルーティングするように構成される。
【0297】
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU3000に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU3000の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット3006によってシステム・バス3002を介して送信されるメモリ要求を介して、システム・バス3002に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをPPU3000に送信し、それによりフロント・エンド・ユニット3010は、1つ又は複数のコマンド・ストリームを指すポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3000の様々なユニットに転送する。
【0298】
少なくとも一実施例では、フロント・エンド・ユニット3010は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3018を構成するスケジューラ・ユニット3012に結合される。少なくとも一実施例では、スケジューラ・ユニット3012は、スケジューラ・ユニット3012によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC3018にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット3012は、GPC3018のうちの1つ又は複数において、複数のタスクの実行を管理する。
【0299】
少なくとも一実施例では、スケジューラ・ユニット3012は、GPC3018で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット3014に結合される。少なくとも一実施例では、ワーク分配ユニット3014は、スケジューラ・ユニット3012から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット3014は、GPC3018のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC3018によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC3018によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備え、それにより、GPC3018のうちの1つがタスクの実行を完了すると、GPC3018のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクのうちの1つが選択され、GPC3018で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC3018上でアイドルである場合には、アクティブ・タスクがGPC3018から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC3018で実行されるようにスケジューリングされる。
【0300】
少なくとも一実施例では、ワーク分配ユニット3014は、Xバー3020を介して1つ又は複数のGPC3018と通信する。少なくとも一実施例では、Xバー3020は、PPU3000のユニットのうちの多くを、PPU3000の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット3014を特定のGPC3018に結合するように構成されることが可能である。少なくとも一実施例では、PPU3000の1つ又は複数の他のユニットも、ハブ3016を介してXバー3020に接続されてもよい。
【0301】
少なくとも一実施例では、タスクはスケジューラ・ユニット3012によって管理され、ワーク分配ユニット3014によってGPC3018のうちの1つにディスパッチされる。GPC3018は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC3018内の他のタスクによって消費されてもよく、Xバー3020を介して異なるGPC3018にルーティングされてもよく、又はメモリ3004に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット3022を介してメモリ3004に書き込むことができ、パーティション・ユニット3022は、メモリ3004への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速GPU相互接続3008を介して別のPPU3004又はCPUに送信することができる。少なくとも一実施例では、PPU3000は、PPU3000に結合された別々の個別メモリ・デバイス3004の数に等しいU個のパーティション・ユニット3022を、限定することなく含む。少なくとも一実施例では、パーティション・ユニット3022は、
図32と併せて以下でさらに詳細に説明される。
【0302】
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3000で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3000によって同時に実行され、PPU3000は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3000によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3000によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、
図32と併せて少なくとも一実施例によりさらに詳細に説明される。
【0303】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU3000に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、PPU3000は、別のプロセッサ若しくはシステムによって、又はPPU3000によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU3000は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0304】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0305】
図31は、少なくとも一実施例による汎用処理クラスタ(「GPC」)3100を示す。少なくとも一実施例では、GPC3100は、
図30のGPC3018である。少なくとも一実施例では、各GPC3100は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC3100は、限定することなく、パイプライン・マネージャ3102、プレ・ラスタ演算ユニット(「PROP」:pre-raster operations unit)3104、ラスタ・エンジン3108、ワーク分配クロスバー(「WDX」:work distribution crossbar)3116、メモリ管理ユニット(「MMU」)3118、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Clusters)3106、及びパーツの任意の好適な組合せを含む。
【0306】
少なくとも一実施例では、GPC3100の動作は、パイプライン・マネージャ3102によって制御される。少なくとも一実施例では、パイプライン・マネージャ3102は、GPC3100に配分されたタスクを処理するために1つ又は複数のDPC3106の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ3102は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC3106のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC3106は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)3114で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ3102は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC3100内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、PROP3104の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン3108にルーティングされてもよく、他のパケットは、プリミティブ・エンジン3112又はSM3114によって処理されるようにDPC3106にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ3102は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC3106のうちの少なくとも1つを構成する。
【0307】
少なくとも一実施例では、PROPユニット3104は、少なくとも一実施例では、ラスタ・エンジン3108及びDPC3106によって生成されたデータを、
図30と併せて上でより詳細に説明したパーティション・ユニット3022のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、PROPユニット3104は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン3108は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン3108は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン3108の出力は、DPC3106内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
【0308】
少なくとも一実施例では、GPC3100に含まれる各DPC3106は、限定することなく、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)3110、プリミティブ・エンジン3112、1つ又は複数のSM3114、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC3110は、DPC3106の動作を制御して、パイプライン・マネージャ3102から受信したパケットを、DPC3106内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン3112にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM3114に送信されてもよい。
【0309】
少なくとも一実施例では、SM3114は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM3114はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(SIMD)アーキテクチャを実装し、ここでスレッドのグループ(ワープ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが同じ命令を実行する。少なくとも一実施例では、SM3114は、単一命令複数スレッド(SIMT)アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、同じ命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM3114の少なくとも一実施例は、以下でさらに詳細に説明される。
【0310】
少なくとも一実施例では、MMU3118は、GPC3100とメモリ・パーティション・ユニット(たとえば、
図30のパーティション・ユニット3022)との間でインターフェースを提供し、MMU3118は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU3118は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
【0311】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC3100に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC3100は、別のプロセッサ若しくはシステムによって、又はGPC3100によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC3100は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0312】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0313】
図32は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット3200を示す。少なくとも一実施例では、パーティション・ユニット3200は、限定することなく、ラスタ演算(「ROP」)ユニット3202、レベル2(「L2」)キャッシュ3204、メモリ・インターフェース3206、及びそれらの任意の好適な組合せを含む。少なくとも一実施例では、メモリ・インタフェース3206はメモリに結合されている。少なくとも一実施例では、メモリ・インタフェース3206は、高速データ転送のために、32、64、128、1024ビット・データ・バス、又は同様の実施を行うことができる。少なくとも一実施例では、PPUは、パーティション・ユニット3200の対当たりにメモリ・インターフェース3206を1つの、U個のメモリ・インターフェース3206を組み込んでおり、ここでパーティション・ユニット3200の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
【0314】
少なくとも一実施例では、メモリ・インターフェース3206は、高帯域幅メモリの第2世代(「HBM2」:high bandwidth memory second generation)メモリ・インターフェースを実装し、YはUの半分に等しい。少なくとも一実施例では、HBM2メモリ・スタックは、PPUと同じ物理パッケージに位置付けられて、従来のGDDR5 SDRAMシステムに比べて実質的な電力と面積の節約を実現する。少なくとも一実施例では、各HBM2スタックは、限定することなく4個のメモリ・ダイを含み、Yは4に等しく、各HBM2スタックは、1つのダイ当たりに2つの128ビット・チャネルの合計8チャネル、及び1024ビットのデータ・バス幅を含む。少なくとも一実施例では、メモリは、1ビット・エラー訂正2ビット・エラー検出(「SECDED」:Single-Error Correcting Double-Error Detecting)エラー訂正コード(「ECC」)をサポートしてデータを保護する。少なくとも一実施例では、ECCは、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供する。
【0315】
少なくとも一実施例では、PPUは、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット3200は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続3008は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
【0316】
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット3200がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(たとえば、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
【0317】
少なくとも一実施例によれば、
図30のメモリ3004又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット3200によってフェッチされ、L2キャッシュ3204に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々GPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット3200は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。少なくとも一実施例では、SM3114のそれぞれは、レベル1(「L1」)キャッシュを実装してもよく、ここでL1キャッシュは、特定のSM3114専用のプライベート・メモリであり、L2キャッシュ3204からのデータは、SM3114の機能ユニットで処理するために、L1キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ3204は、メモリ・インターフェース3206及びXバー3020に結合される。
【0318】
少なくとも一実施例では、ROPユニット3202は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット3202は、少なくとも一実施例では、ラスタ・エンジン3108と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン3108の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット3202は、深度バッファを更新し、深度テストの結果をラスタ・エンジン3108に送信する。パーティション・ユニット3200の数はGPCの数とは異なってもよく、したがって、各ROPユニット3202は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット3202は、異なるGPCから受信したパケットを追跡し、ROPユニット3202によって生成された結果を、Xバー3020を通してどれにルーティングするかを判定する。
【0319】
図33は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)3300を示す。少なくとも一実施例では、SM3300は、
図31のSM3114である。少なくとも一実施例では、SM3300は、限定することなく、命令キャッシュ3302、1つ又は複数のスケジューラ・ユニット3304、レジスタ・ファイル3308、1つ又は複数の処理コア(「コア」)3310、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)3312、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)3314、相互接続ネットワーク3316、共有メモリ/レベル1(「L1」)キャッシュ3318、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはSM3300のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット3304は、ワーク分配ユニットからタスクを受信し、SM3300に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット3304は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット3304は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア3310、SFU3312、及びLSU3314)にディスパッチする。
【0320】
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。少なくとも一実施例では、プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
【0321】
少なくとも一実施例では、ディスパッチ・ユニット3306は、機能ユニットの1つ又は複数に命令を送信するように構成され、スケジューラ・ユニット3304は、同じワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット3306を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット3304は、単一のディスパッチ・ユニット3306又は追加のディスパッチ・ユニット3306を含む。
【0322】
少なくとも一実施例では、各SM3300は、少なくとも一実施例では、SM3300の機能ユニットにレジスタのセットを提供するレジスタ・ファイル3308を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル3308は、各機能ユニットがレジスタ・ファイル3308の専用部分に配分されるように、それぞれの機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル3308は、SM3300によって実行されている異なるワープ間で分割され、レジスタ・ファイル3308は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM3300は、限定することなく、複数のL処理コア3310を含む。少なくとも一実施例では、各SM3300は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア3310を含む。少なくとも一実施例では、各処理コア3310は、少なくとも一実施例では、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実装する。少なくとも一実施例では、処理コア3310は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
【0323】
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア3310に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、4×4の行列で動作し、行列の積和演算(matrix multiply and accumulate operation)D=A×B+Cを実行し、ここでA、B、C、及びDは4×4の行列である。
【0324】
少なくとも一実施例では、行列乗算の入力A及びBは、16ビットの浮動小数点行列であり、和の行列C及びDは、16ビットの浮動小数点又は32ビットの浮動小数点行列である。少なくとも一実施例では、テンソル・コアは、32ビットの浮動小数点の和を有する16ビットの浮動小数点入力データで動作する。少なくとも一実施例では、16ビットの浮動小数点乗算は、64個の演算を使用し、結果的に完全精度の積をもたらし、次いでその積が、4×4×4の行列乗算の他の中間積との32ビット浮動小数点加算を使用して加算される。テンソル・コアを使用して、少なくとも一実施例では、これらの小さい要素から構築される、はるかに大きい2次元又はさらに高次元の行列演算が実行される。少なくとも一実施例では、CUDA9C++APIなどのAPIは、CUDA-C++プログラムからテンソル・コアを効率的に使用するために、特殊な行列ロード演算、行列積和演算、及び行列ストア演算を公開している。少なくとも一実施例では、CUDAレベルにおいて、ワープ・レベル・インターフェースは、ワープの32スレッドすべてにわたる16×16のサイズの行列を仮定している。
【0325】
少なくとも一実施例では、各SM3300は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU3312を、限定することなく含む。少なくとも一実施例では、SFU3312は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU3312は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM3300により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ3318に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各SM3300は、限定することなく、2つのテクスチャ・ユニットを含む。
【0326】
各SM3300は、少なくとも一実施例では、共有メモリ/L1キャッシュ3318とレジスタ・ファイル3308の間でロード及びストア動作を実装するN個のLSU3314を、限定することなく含む。各SM3300は、少なくとも一実施例では、機能ユニットのそれぞれをレジスタ・ファイル3308に接続し、LSU3314をレジスタ・ファイル3308に接続する相互接続ネットワーク3316と、共有メモリ/L1キャッシュ3318を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク3316はクロスバーであり、このクロスバーは、いずれかの機能ユニットをレジスタ・ファイル3308のいずれかのレジスタに接続し、LSU3314をレジスタ・ファイル3308と共有メモリ/L1キャッシュ3318のメモリ・ロケーションとに接続するように構成されてもよい。
【0327】
少なくとも一実施例では、共有メモリ/L1キャッシュ3318は、少なくとも一実施例では、SM3300とプリミティブ・エンジンの間、及びSM3300のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ3318は、限定することなく、128KBのストレージ容量を備え、SM3300からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ3318は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ3318、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
【0328】
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ3318内に統合することによって、共有メモリ/L1キャッシュ3318が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して同じプログラムを実行し、SM3300を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ3318を使用してスレッド間で通信し、LSU3314を使用して、共有メモリ/L1キャッシュ3318及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM3300は、DCP上で新規のワークを起動するためにスケジューラ・ユニット3304が使用できるコマンドを書き込む。
【0329】
少なくとも一実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、PPUは、単一の半導体基板に具体化される。少なくとも一実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」:digital-to-analog converter)などの1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)に含まれる。
【0330】
少なくとも一実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、PPUは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット(「iGPU」:integrated graphics processing unit)であってもよい。
【0331】
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理915が使用される。推論及び/又は訓練論理915に関する詳細事項は、
図9A及び/又は
図9Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM3300に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM3300は、別のプロセッサ若しくはシステムによって、又はSM3300によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM3300は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【0332】
少なくとも一実施例では、このようなコンポーネントは、より低いフレーム・レート・ビデオのフレームからより高いフレーム・レート・ビデオを生成するなどのために、1つ又は複数のニューラル・ネットワークを使用して向上したビデオを生成するために利用することができる。
【0333】
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
【0334】
少なくとも一実施例では、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ1304及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム1300が実行できるようにする。少なくとも一実施例では、メモリ1304、ストレージ、及び/又はあらゆる他のストレージは、コンピュータ読取り可能媒体の可能な実例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU1302、並列処理システム1312、CPU1302と並列処理システム1312の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び集積回路の任意の好適な組合せの文脈において実装される。
【0335】
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム1300は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
【0336】
少なくとも一実施例では、並列処理システム1312は、限定することなく、複数の並列処理ユニット(「PPU」)1314、及び関連メモリ1316を含む。少なくとも一実施例では、PPU1314は、相互接続1318及びスイッチ1320又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム1312は、計算タスクをPPU1314にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU1314の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU1314に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU1314の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU1314にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
【0337】
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
【0338】
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
【0339】
「A、B、及びCのうちの少なくとも1つ」又は「A、B、及びCのうちの少なくとも1つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、AかBかCである、又はAとBとCのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。たとえば、3つの部材を有するセットの説明的な例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B、及びCのうちの少なくとも1つ」という結合句は、次のセットのうちのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。複数は、少なくとも2つの項目であるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
【0340】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【0341】
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
【0342】
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【0343】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【0344】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【0345】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
【0346】
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【0347】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力することは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【0348】
上の議論は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【0349】
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。
【手続補正書】
【提出日】2023-11-08
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
システム・オン・チップ(SoC)であって、
中央処理装置(CPU)と、
メモリと、
PCI(Peripheral Component Interconnect)通信バスと、
入力フレームからより高解像度の画像を推論する少なくとも1つのニューラル・ネットワークを含むアップ・サンプラであって、より高解像度の画像が前のフレームと混合される、アップ・サンプラと、
グラフィックス処理ユニット(GPU)と、
を備え、
前記グラフィックス処理ユニット(GPU)は、汎用処理クラスタ(GPC)を備え、
前記汎用処理クラスタ(GPC)は、ストリーミング・マルチプロセッサ(SM)を備え、
前記ストリーミング・マルチプロセッサ(SM)は、
命令キャッシュと、
ディスパッチ・ユニットと、
コアと、
ロード/ストアユニット(LSU)と、
共有メモリと、
L1キャッシュと、
を備えることを特徴とする、システム・オン・チップ(SoC)。
【請求項2】
前記前のフレームは、前の推論されたフレームであることを特徴とする、請求項1に記載のシステム・オン・チップ(SoC)。
【請求項3】
前記SMはレジスタ・ファイルをさらに含むことを特徴とする、請求項1に記載のシステム・オン・チップ(SoC)。
【請求項4】
前記SMは、1つ以上の特殊機能ユニット(SFU)をさらに含むことを特徴とする、請求項1に記載のシステム・オン・チップ(SoC)。
【請求項5】
前記SMはそれぞれ1つ以上の相互接続をさらに含むことを特徴とする、請求項1記載のシステム・オン・チップ(SoC)。
【請求項6】
前記GPCは、ラスタ・エンジンをさらに備えることを特徴とする、請求項1に記載のシステム・オン・チップ(SoC)。
【請求項7】
1つ以上のGPU相互接続とインターフェースするハブをさらに含むことを特徴とする、請求項1記載のシステム・オン・チップ(SoC)。
【請求項8】
前記GPUは、前記PCI通信バスとインターフェースする入出力(I/O)ユニットをさらに備える、請求項1に記載のシステム・オン・チップ(SoC)。
【請求項9】
前記GPUはさらにクロスバー(Xbar)を備えることを特徴とする、請求項1記載のシステム・オン・チップ(SoC)。
【請求項10】
前記GPUは、メモリ・パーティション・ユニットをさらに備えることを特徴とする、請求項1記載のシステム・オン・チップ(SoC)。
【請求項11】
システムオンチップ(SoC)を使用して、少なくとも1つのニューラル・ネットワークを含むアップ・サンプラを実行し、入力フレームから高解像度の画像を推論する方法であって、前記高解像度の画像は、前のフレームと混合され、
システムオンチップ(SoC)は、
中央処理装置(CPU)と、
メモリと、
PCI(Peripheral Component Interconnect)通信バスと、
グラフィックス処理ユニット(GPU)とを備え、
前記汎用処理クラスタ(GPC)は、ストリーミング・マルチプロセッサ(SM)を備え、
前記ストリーミング・マルチプロセッサ(SM)は、
命令キャッシュと、
ディスパッチ・ユニットと、
コアと、
ロード/ストアユニット(LSU)と、
共有メモリと、
L1キャッシュと、
備えることを特徴とする、方法。
【請求項12】
前記前のフレームは、前の推論されたフレームであることを特徴とする、請求項11に記載の方法。
【請求項13】
前記前のフレームは、高解像度であるとともに、前記少なくとも1つのニューラル・ネットワークによって推論されることを特徴とする、請求項11に記載の方法。
【請求項14】
前記高解像度の画像は、前記先の推論されたフレームのピクセル値と混合されることを特徴とする、請求項11記載の方法。
【請求項15】
前記GPUは、スケジューラ・ユニットをさらに備えることを特徴とする、請求項11に記載の方法。
【請求項16】
前記GPCは、ラスタ・エンジンをさらに備えることを特徴とする、請求項11に記載の方法。
【請求項17】
前記SoCは、1つ以上のGPUインターコネクトとインターフェースするハブをさらに備えることを特徴とする、請求項11記載の方法。
【請求項18】
前記SoCは、ネットワーク・インターフェースをさらに備えることを特徴とする、請求項11に記載の方法。
【請求項19】
前記SoCは、1つまたは複数のディスプレイ・デバイスをさらに備えることを特徴とする、請求項11に記載の方法。
【請求項20】
少なくとも部分的に、低い解像度の入力フレームに基づいて、少なくとも1つのニューラル・ネットワークによって、前記高い解像度の画像を推論することをさらに含むことを特徴とする、請求項11に記載の方法。