(57)【要約】【課題】改善された把持決定の方法を提供すること。【解決手段】システムは、潜在的な把持姿勢のセットを生成し、次いで、潜在的な各把持姿勢の性能を評価することにより、ロボットが物体をうまく把持できるようにする実現可能な把持姿勢のセットを決定する。評価後に、システムが、把持姿勢が成功しないことを決定すると、このシステムは、成功しない把持姿勢に対して精緻化動作を実行して、成功しない把持姿勢を成功する把持姿勢に変換しようとする。成功する把持姿勢のセットが、ロボティック制御システムに提供され、このロボティック制御システムは、分布を使用して、物体を操作するために使用すべき把持姿勢を選択する。【選択図】図５
2020192676.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータによって実行される方法であって、
物体の把持姿勢のセットを生成するステップと、
前記把持姿勢のセットのそれぞれの把持姿勢を評価して、成功する把持姿勢のセットと成功しない把持姿勢のセットを識別するステップと、
前記成功しない把持姿勢のセットの１つ又は複数の把持姿勢を修正して、成功する把持姿勢の追加のセットを生成するステップと、
前記成功する把持姿勢のセット、及び前記成功する把持姿勢の追加のセットを、ロボティック制御システムに提供するステップと
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、変分把持生成に関する。
【背景技術】
【０００２】
ロボティック・オートメーションは、様々な実施例において、タスクを実行するときの生産性、安全性、及び経済性の向上を可能にする重要な分野である。物体を操作するロボットについては、把持姿勢を生成することが、タスクの重要な構成要素であることが多い。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一実例では、ロボットは物体を観察し、その物体をロボットが持ち上げられるように、どこにグリッパを位置付けるか（姿勢とも呼ばれる３Ｄ位置及び３Ｄ配向）を決定する。個々の把持の安定性は、物体及びグリッパの形状、物体の質量分布、及び表面摩擦に依存することがある。物体の周りの形状により、あるシーンにおいてロボットのマニピュレータを他の物体に衝突させずに到達可能な把持点が限定されることによって、さらなる制約が課されることがある。いくつかの実例では、この問題は、物体の周りの確実な把持点を選択するための、形状に着想を得た発見的手法によって対処され、おそらくそれに続いて、サンプリングされた把持の安定性及び到達可能性のより詳細な形状分析がおこなわれる。これらの手法の多くは、物体の完全な３Ｄモデルが入手可能かどうかに依存しており、このことは、たとえばロボットがノイズの多い深度カメラでしかシーンを観察しない現実的なシナリオでは、厳しい制限となり得る。したがって、改善された把持決定の方法が必要である。
【課題を解決するための手段】
【０００４】
本発明の一態様になると、コンピュータによって実行される方法であって、
物体の把持姿勢のセットを生成するステップと、
前記把持姿勢のセットのそれぞれの把持姿勢を評価して、成功する把持姿勢のセットと成功しない把持姿勢のセットを識別するステップと、
前記成功しない把持姿勢のセットの１つ又は複数の把持姿勢を修正して、成功する把持姿勢の追加のセットを生成するステップと、
前記成功する把持姿勢のセット、及び前記成功する把持姿勢の追加のセットを、ロボティック制御システムに提供するステップと
を含む方法を提供する。
【図面の簡単な説明】
【０００５】
【図１】一実施例による、様々な物体を把持するロボティック・システムの実例を示す図である。
【図２】一実施例による、マグについて予測された把持の実例を示す図である。
【図３】一実施例による、把持座標フレームの実例を示す図である。
【図４】一実施例による、把持姿勢を識別する方法の実例を示す図である。
【図５】一実施例による、把持姿勢を識別するようにシステムを訓練するためのプロセスの実例を示す図である。
【図６】一実施例による、精緻化された把持姿勢の実例を示す図である。
【図７】一実施例による、物理シミュレータを用いて生成した訓練データの実例を示す図である。
【図８】一実施例による、把持の成功率及びカバレッジに対する潜在空間の次元の影響を示す図である。
【図９】一実施例による、生成された把持の精度及びカバレッジを改善することに対する精緻化ステップ数の影響を示す図である。
【図１０】一実施例による、カバレッジ率に対するサンプリングされた把持数の影響を示す図である。
【図１１】一実施例による、システムを試験するのに使用されるロボティック・グリッパ及び取り揃えた物体の実例を示す図である。
【図１２】一実施例による、Ｇｒａｓｐ−Ｎｅｔを使用して生成された把持及びＧＰＤを使用して生成された把持の実例を示す図である。
【図１３】一実施例による、把持実験結果の２つの表を示す図である。
【図１４Ａ】少なくとも一実施例による、推論及び／又は訓練論理を示す図である。
【図１４Ｂ】少なくとも一実施例による、推論及び／又は訓練論理を示す図である。
【図１５】少なくとも一実施例による、ニューラル・ネットワークの訓練及び展開を示す図である。
【図１６】少なくとも一実施例による、例示的データ・センタ・システムを示す図である。
【図１７Ａ】少なくとも一実施例による、自律車両の実例を示す図である。
【図１７Ｂ】少なくとも一実施例による、図１７Ａの自律車両のカメラのロケーション及び視野の実例を示す図である。
【図１７Ｃ】少なくとも一実施例による、図１７Ａの自律車両の例示的システム・アーキテクチャを示すブロック図である。
【図１７Ｄ】少なくとも一実施例による、クラウド・ベースのサーバと図１７Ａの自律車両との通信のためのシステムを示す図である。
【図１８】少なくとも一実施例による、コンピュータ・システムを示すブロック図である。
【図１９】少なくとも一実施例による、コンピュータ・システムを示すブロック図である。
【図２０】少なくとも一実施例による、コンピュータ・システムを示す図である。
【図２１】少なくとも一実施例による、コンピュータ・システムを示す図である。
【図２２】少なくとも一実施例による、１つ又は複数のＩＰコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。
【図２３Ａ】少なくとも一実施例による、１つ又は複数のＩＰコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。
【図２３Ｂ】少なくとも一実施例による、１つ又は複数のＩＰコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。
【図２４Ａ】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
【図２４Ｂ】少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。
【図２５】少なくとも一実施例による、コンピュータ・システムを示す図である。
【図２６Ａ】少なくとも一実施例による、並列プロセッサを示す図である。
【図２６Ｂ】少なくとも一実施例による、パーティション・ユニットを示す図である。
【図２６Ｃ】少なくとも一実施例による、処理クラスタを示す図である。
【図２６Ｄ】少なくとも一実施例による、グラフィックス・マルチプロセッサを示す図である。
【図２７】少なくとも一実施例による、プロセッサ用のプロセッサ・マイクロ・アーキテクチャを示すブロック図である。
【図２８】少なくとも一実施例による、深層学習アプリケーション・プロセッサを示す図である。
【図２９】少なくとも一実施例による、例示的ニューロモーフィック・プロセッサを示すブロック図である。
【図３０】少なくとも一実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
【図３１】少なくとも一実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。
【図３２】少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分のブロック図である。
【図３３Ａ】少なくとも一実施例による、スレッド実行論理を示す図である。
【図３３Ｂ】少なくとも一実施例による、スレッド実行論理を示す図である。
【図３４】少なくとも一実施例による、並列処理ユニット（「ＰＰＵ」）を示す図である。
【図３５】少なくとも一実施例による、汎用処理クラスタ（「ＧＰＣ」）を示す図である。
【図３６】少なくとも一実施例による、並列処理ユニット（「ＰＰＵ」）のメモリ・パーティション・ユニットを示す図である。
【図３７】少なくとも一実施例による、ストリーミング・マルチプロセッサを示す図である。
【発明を実施するための形態】
【０００６】
本明細書は、把持生成の問題を、変分オートエンコーダを使用して把持のセットをサンプリングすることとして構築し、サンプリングされた把持を、把持評価器モデルを使用してアセスメント及び精緻化する技法について説明する。把持サンプラと把持精緻化の両方のネットワークは、深度カメラによって観察される３Ｄ点群を入力として取り込む。この手法の評価は、シミュレーション及び実世界のロボット実験において提供される。一実施例では、本明細書に記載の技法は、多様な外観、大きさ、及び重量を有する一般に使用される様々な物体に対して、８８％の成功率を達成する。このモデルは、シミュレーションにおいてのみ訓練され、いかなる余分なステップもなく、実世界において機能する。
【０００７】
１．序論
把持選択は、ロボット操作において重要な問題である。ここで、ロボットは物体を観察し、この物体を持ち上げるためにそのグリッパをどこに動かすか（３Ｄ位置及び３Ｄ配向）を決定する必要がある（図１を参照）。把持の安定性は、物体及びグリッパの形状、物体の質量分布、並びに表面摩擦に依存することから、把持選択は複雑になることがある。物体の周りの形状は、あるシーンにおいてロボットのマニピュレータを他の物体に衝突させずに到達可能な把持点がどれかについて、さらなる制約を課すことがある（図２を参照）。いくつかの実例では、この問題は、物体の周りの確実な把持点を選択するための、形状に着想を得た発見的手法によって対処され、任意選択でそれに続いて、サンプリングされた把持の安全性及び到達可能性のより詳細な形状分析がおこなわれる。これらの手法の多くは、物体の完全な３Ｄモデルが入手可能かどうかに依存しており、このことは、たとえばロボットがノイズの多い深度カメラでしかシーンを観察しない一部の現実的なシナリオでは、制限となり得る。この制限を克服するために、いくつかの実施例は、完全な物体モデルを生成するようにカメラを移動させ、又は形状補完を実行し、それに続いて、形状に基づく把持分析がおこなわれる。しかし、いくつかの実施例では、カメラを移動することは、制約のある空間では不可能な場合があり、形状補完は、把持生成及び評価をおこなうには十分に正確ではない場合がある。
【０００８】
一実施例では、深層学習技法を使用して、生の点群データから把持の品質が評価される。この手法は、良好な把持アセスメントを提供するが、評価のために把持をサンプリングするのになお手動で設計された発見的手法を使用し、又は交差エントロピー法（ＣＥＭ）など、ブラックボックスの最適化技法に依存している。さらに、この手法は、サンプリングされた把持を改善するための効率的な手段を提供しない。本明細書では、未知の物体について安定した把持の多様なセットを効率的に生成するために、学習ベースのフレームワークを導入する。この手法は、把持をサンプリングし、評価し、改善する２つのネットワーク・アーキテクチャを導入する。様々な実施例は、以下の特徴のうちの１つ又は複数を含む。
【０００９】
観察された物体の部分的な点群を、物体の把持の多様なセットにマッピングするように訓練されることが可能な変分オートエンコーダ（ＶＡＥ）。重要なことに、私たちのＶＡＥは、すべての実現可能な機能する把持の高度なカバレッジを提供する一方で、失敗する把持は少数しか生成しない。
【００１０】
ＶＡＥサンプルの精度を改善するために、私たちは把持分別器ネットワークを導入し、これは、観察される物体及びロボット・グリッパの点群を、６Ｄグリッパ姿勢の品質アセスメントにマッピングする。重要なことに、把持サンプルを改善するため、たとえば、把持サンプルを動かして衝突しないようにするため、又はグリッパが物体と良好に位置合わせされるようにするために、このネットワークの勾配が使用できることを示す。
【００１１】
私たちの手法が以前の手法より優れており、ロボットが成功率８８％で１７個の物体を持ち上げられるようにすることを実証する。さらに、私たちの手法が、高い成功率を維持しながら、把持サンプルの多様なセットを生成することを示す。
【００１２】
本明細書は、以下のように構成される。最初に、深層学習を使用する把持の関連手法を対比し、次いで把持決定手法の異なる構成要素：把持サンプリング、評価、及び精緻化について説明する。さらに、様々なアブレーション研究の異なるハイパーパラメータの影響を示すために、本明細書に記載の技法が、現実のロボティック・プラットフォーム上で評価される。
【００１３】
２．代替実施例
６ＤＯＦ把持の学習。ロボット把持問題を解決するいくつかの実施例は、データ駆動型である。他の実施例は、手作りの特徴ベクトルに基づく。さらなる実施例は、生の視覚的測定値に対して作用するように畳み込みアーキテクチャを利用する。多くの把持合成手法は、把持を、画像内の配向された矩形として表すことにより可能になる。この３ＤＯＦ表現は、グリッパ姿勢を画像平面に平行になるように制限する。しかし、こうした表現の欠点は、以下のことを含むことがある。こうした表示は把持の多様性を限定するので、アーム又はタスクによりさらに制限が課せられる場合、物体を持ち上げることが不可能になることがある。静的画像センサの場合、これは過度に制限された作業空間につながることもある。
【００１４】
本明細書に記載の技法は、完全な６ＤＯＦの把持前姿勢を予測する問題に取り組む。これは、物体の一部分が隠れており、それが把持の成功に影響を及ぼすので、困難なことがある。様々な実施例は、ターゲット物体の形状を再構築するという補助タスクを含めることにより、この問題を回避する。次いで、６ＤＯＦの把持結果を予測するという主タスクは、測定の一部ではない局所的な形状を使用することができる。様々な実施例は、把持スコア関数を学習し、これを把持精緻化にも使用する。
【００１５】
いくつかの実例は、この問題を、単一の最良な把持姿勢への回帰として構築するが、こうした実施例は本質的に、実現可能な把持の多様な分布を予測する能力が欠如していることがある。たとえば、一実施例は、６ＤＯＦの把持前姿勢を選択するために、事前定義された２４通りの配向を分類する。こうした粗い分解ＳＯ（３）は、予測される把持の多様性が必然的に限定されることにつながる。対照的に、把持点検出方法（「ＧＰＤ」）は、候補把持のより高密度なサンプリングを使用する。観察される点群の１つの点が、ランダムにサンプリングされ、主湾曲の推定される面法線及び局所的方向に位置合わせされたダルブーフレームが構築される。この発見的手法は、候補把持の非常に多様なセットを作製するが、マグ、皿、又はボールの縁など、薄い構造体に沿った把持を生成することができず、その理由は、ノイズの多い測定値からこれらの面法線を推定することが困難だからである。本明細書に記載の技法は、こうしたバイアスの影響を被ることはない。その結果、本明細書に記載の技法は、ＧＰＤが見いだせない把持を見いだすことができる。
【００１６】
様々な実施例は、把持の問題を、強化学習問題又はその近似として構築する。学習済みの把持ポリシーは、最終的な把持姿勢だけを記述するよりさらに表現に富んでいる。それでもなお、多くの実例の動作空間は通常ｓｅ（２）であり、多様性がトップダウンの把持に限定される。
【００１７】
３Ｄデータから学習するためのディープ・ニューラル・ネットワーク。様々な実施例は、３Ｄ点群データに深層学習を適用する。いくつかの実例では、３Ｄデータは、３Ｄボクセルとして、又は２．５深度画像から抽出された特徴として表現され、畳み込みニューラル・ネットワークを使用して処理される。ＰｏｉｎｔＮｅｔ及びＰｏｉｎｔＮｅｔ＋＋は、３Ｄデータを表現することができ、表現を効率的に抽出する。他の実例は、３Ｄデータを表現するネットワーク・アーキテクチャの様々な変形形態を使用して、３Ｄ物体の姿勢推定、意味的セグメンテーション、及び部分セグメンテーションの重要な改善を示す。成功する把持を推定するために、把持の６ＤＯＦ姿勢は正確であることが必要である。単一のＲＧＢ画像上で動作することは、入力と出力が同じドメインにないので、求められる精度を提供しない。したがって、３Ｄ点群データを使用して把持を生成する。ＳＥ（３）において把持を生成及び評価するための表現を学習するために、ＰｏｉｎｔＮｅｔ＋＋を使用する。
【００１８】
変分オートエンコーダ。変分オートエンコーダ（「ＶＡＥ」）は、深層生成モデルの主要なカテゴリのうちの１つである。ＶＡＥは、訓練データの尤度を最大化するように、教師なしで訓練されることが可能である。ＶＡＥは、将来予測、新視点の生成、及び物体セグメンテーションなどの様々なタスクに適用されてきている。この研究では、ＳＥ（３）の把持の多様なセットをサンプリングするために、ＶＡＥを使用する。
【００１９】
生成器モジュールは、潜在空間及び観察される点群Ｘからの異なるサンプルに基づくＶＡＥである。生成器モジュールは、異なる把持提案を生成し、評価ネットワーク（分別器）が、それらの提案が成功するという可能性がどのくらいかに基づき、それらを受け入れ、又は拒絶する。生成器と分別器の両方が、物体の３Ｄ点群Ｘを入力の一部として取り入れる。
【００２０】
３．６ＤＯＦ把持姿勢の生成
把持姿勢の生成を、ロボット・グリッパの姿勢のセットを作り出すプロセスとして構築し、それにより、これらの姿勢のいずれにおいてもグリッパを閉じることにより、物体の安定した把持が実現されるようにする。さらにこのプロセスは、物体を把持することができるあらゆる実現可能なやり方を最終的に網羅する姿勢の多様なセットを生成すべきである。ロボット・グリッパの姿勢はＳＥ（３）で与えられて、グリッパの３Ｄ並進及び３Ｄ配向が特定される。ここでは、単一の物体について把持姿勢を生成することに焦点を当て、マニピュレータの到達範囲、及びシーンにある他の物体に起因するさらなる制限は、この研究の範囲を超えたものであり、マニピュレータ軌道最適化技法によって対処することができる。あらゆる実現可能な把持の空間のなかで、成功する把持のサブ空間が狭いことから、把持姿勢の生成は困難である。把持の姿勢のわずかな摂動が、成功する把持を失敗に変えることがある。安定した把持の多様なセットを生成するために、私たちの手法は、変分オートエンコーダ・ネットワークを使用して把持姿勢をサンプリングし、それに続いて、反復的な評価及び精緻化のプロセスがおこなわれる。私たちの手法への入力は、ロボットが持ち上げるべき物体の点群である。
【００２１】
具体的には、事後分布Ｐ（Ｇ＊｜Ｘ）を学習することを目的とし、ここでＧ＊は、すべての成功する把持の空間を表し、Ｘは、カメラによって観察される物体の部分的な点群である。各把持ｇ∈Ｇ＊は、（Ｒ，Ｔ）∈ＳＥ（３）によって表され、ここでＲ∈ＳＯ（３）及び
【数１】
2020192676.tif 000003
は、把持ｇの回転及び並進である。把持は、物体参照フレームにおいて定義され、このフレームの原点は
【数２】
2020192676.tif 000004
であり、観察される点群の質量の中心である。その軸は、カメラ・フレームの軸に平行である（図３を参照）。成功する把持Ｇ＊の分布は、複雑で非連続的なことがある。たとえば、マグについてＧ＊の分布は、縁、持ち手、及び底に沿って複数のモードを有する。各モード内で、成功する把持の空間は連続的であるが、異なるモードの把持は、互いに分離していることがある。物体カテゴリごとの別々のモードの総数は、物体の形状及び大きさに基づいて変化する。
【００２２】
Ｇ＊のモードの数は事前にわからないので、成功する把持ｇ∈Ｇ＊の尤度を最大化する生成器モジュールを学習することを提案する。生成器は、訓練中、成功する把持しか観察しないので、生成器が、失敗する把持ｇ∈Ｇ−を生成することもあり得る。これらのネガティブの把持を検出及び精緻化するために、Ｐ（Ｓ｜ｇ，Ｘ）、すなわち把持ｇ及び観察される点群Ｘの成功確率を予測するように、評価モジュールが訓練される。評価モジュールは、サンプリングされた把持に適用されると、把持の成功を予測し、その成功勾配を、ネットワークを通して逆に伝播して、改善された把持姿勢を生成する。このプロセスを繰り返すことができる。閾値を下回ったままの把持をすべて破棄することにより、高品質の把持の最終的なセットが提供される。
【００２３】
３．１．変分把持サンプラ
図５に示す把持サンプラは、Ｐ（Ｇ｜Ｘ）、すなわち事前定義された成功する把持ｇ∈Ｇ＊のセットの尤度を最大化する生成モデルである。点群Ｘ及び潜在変数ｚを前提とすると、サンプラは、把持を予測する確定関数である。Ｐ（ｚ）、すなわち潜在空間の確率密度関数がわかっており、事前に選択されることが仮定される。私たちの手法では、Ｐ（ｚ）＝Ｎ（０，１）を使用する。点群Ｘを前提とすると、Ｐ（ｚ）から異なるｚをサンプリングすることによって、異なる把持が生成される。生成された把持の尤度は、以下のように書くことができる。
Ｐ（Ｇ｜Ｘ）＝∫Ｐ（Ｇ｜Ｘ，ｚ；Θ）Ｐ（ｚ）ｄｚ        （１）
それぞれのポジティブの把持ｇ∈Ｇ＊の最適化の式（１）は、潜在空間の値すべてを積分することを必要とし、これは手に負えない。式（１）を扱いやすくするため、エンコーダＱ（ｚ｜Ｘ、ｇ）が、点群Ｘと把持ｇの各ペアを、潜在空間ｚ内の小さいサブ空間にマッピングする。サンプリングされたｚ〜Ｑを前提とすると、デコーダは、把持
【数３】
2020192676.tif 000005
を再構築する。訓練中、エンコーダ及びデコーダは、グラウンド・トゥルースの把持ｇ∈Ｇ＊と再構築された把持
【数４】
2020192676.tif 000006
との間で、再構築損失
【数５】
2020192676.tif 000007
を最小に抑えるように最適化される。さらに、単位分散で正規分布された潜在空間を確保するように、分布Ｑ（，｜，）と正規分布Ｎ（０，１）との間のＫＬ発散ＤＫＬが最小に抑えられる。損失関数は、以下のように定義される。
【数６】
2020192676.tif 000008
式（２）は、確率的勾配降下法を使用して最適化される。ランダムな視点から観察される物体について、ミニ・バッチごとに、点群Ｘがサンプリングされる。サンプリングされた点群Ｘについて、層化サンプリングを使用して、グラウンド・トゥルースの把持Ｇ＊のセットから把持ｇがサンプリングされる。配向及び並進の損失を組み合わせるために、再構築損失を以下のように定義する。
【数７】
2020192676.tif 000009
ここで、Ｔ（．；，ｐ）は、ロボット・グリッパ上の事前定義された点ｐのセットの変換である。訓練中、デコーダは、Ｎ（０，１）からサンプリングされた潜在値ｚをデコードすることを学習し、把持を生成する一方で、エンコーダは、正規分布を維持しながら把持姿勢を再構築するのに十分な情報をｚが含むように、ｚを出力することを学習する。推論中、エンコーダＱは取り除かれ、潜在値はＮ（０，１）からサンプリングされる。
【００２４】
このエンコード及びデコーダのアーキテクチャでは、各点が３Ｄ座標及び特徴ベクトルを有する。各層の特徴は、各点の特徴、及び互いに対する点の３Ｄ関係に基づき、コンピュートされる。各入力点ｘ∈Ｘの特徴は、連結されてｇ＝［Ｒ，Ｔ］になる。デコーダでは、各点の特徴が、潜在変数ｚと連結される。エンコーダは、点群Ｘと潜在変数把持ｇの相対情報を、デコーダによって再構築が可能なやり方で圧縮することを学習する。
【００２５】
３．２．把持姿勢の評価
把持サンプラは、ポジティブの把持だけを使用して、連続した事後分布Ｐ（Ｇ｜Ｘ，ｚ）を訓練する。その結果、把持サンプラは、分布のモード間にある失敗した把持を含む場合がある。これらの過渡的な把持及び他の偽ポジティブを識別し、取り除く必要がある。これをおこなうために、成功確率Ｐ（Ｓ｜ｇ，Ｘ）を各把持に割り当てる把持評価ネットワークが必要である。このネットワークは、観察された点群Ｘに対する把持を推理する必要があるが、同時に、物体の観察されていない部分を外挿できなくてはならない。いくつかの実施例は、物体の観察された局所的な部分だけに基づき、把持を分類することを学習する。実際、物体の観察された点群は、欠落した深度値又はノイズの多い深度値などの不備がある。この問題を軽減するために、以前の方法は、高品質の深度センサの使用や、複数のビューの使用に頼るが、これにより、制御された環境の外側にシステムを導入することが制限される。この研究では、物体の不完全な観察された点群Ｘだけを使用して、各把持を分類する。
【００２６】
把持姿勢の成功は、物体に対する把持の相対姿勢に依存する。評価器ネットワークへの入力は、点群Ｘ及び把持ｇである。把持サンプラと同様に、把持評価器にＰｏｉｎｔＮｅｔアーキテクチャを使用する。把持を分類するために複数の方法が存在する。第１に、簡単な手法は、把持ｇの６Ｄ姿勢を、第１の層の各点ｘ∈Ｘの特徴に関連付けることである。私たちの実験では、こうした表現は、把持分類の精度低下につながることが示された。その代わりに、物体の点群により密接に結びつけられるようなやり方で、把持ｇを表現することを提案する。６Ｄ把持姿勢ｇに従ってレンダリングされた点群Ｘｇによって、ロボット・グリッパを近似する。点が物体に属するのかグリッパに属するのかを示す追加のバイナリ特徴を使用することにより、物体の点群Ｘとグリッパの点群Ｘｇを組み合わせて単一の点群にする。ＰｏｉｎｔＮｅｔアーキテクチャでは、各点の特徴は、点自体、及びその近傍、さらに点の相対的な空間関係の関数である。統合点群Ｘ∪Ｘｇを使用することにより、把持姿勢ｇと物体点群Ｘとの間のすべての相対情報を使用して把持を分類することが自然になる。把持評価器は、
Ｌ評価器＝−（ｙｌｏｇ（ｓ）＋（１−ｙ）ｌｏｇ（１−ｓ））      （４）
を最適化することにより、交差エントロピー損失を使用して最適化され、
ここでｙは、把持が成功するかどうかを示す把持のグラウンド・トゥルース・バイナリ・ラベルであり、ｓは、評価器による成功の予測確率である。
【００２７】
ロバストな評価器を訓練するために、モデルは、ポジティブの把持とネガティブの把持の両方を用いて訓練される必要がある。実現可能なすべての６Ｄ把持姿勢の空間は、組合せ的に大きいので、すべてのネガティブの把持をサンプリングすることは不可能である。その代わりに、ネガティブの把持をサンプリングするためのハード・ネガティブの・マイニングをおこなう。ハード・ネガティブの把持Ｇ−のセットは、ポジティブの把持と同様の姿勢を有するが、物体に衝突するか、物体から遠すぎて物体を把持できない把持として定義される。より正式には、Ｇ−は、
Ｇ−＝｛ｇ−｜∃ｇ∈Ｇ＊：Ｌ（ｇ，ｇ−）＜∈｝      （５）
として定義され、
ここでＬ（．，．）は、式（３）において定義される。訓練中、ｇーは、事前に生成されたネガティブの把持のセットからサンプリングされ、ポジティブの把持をランダムに摂動させることによって、グリッパのメッシュを物体のメッシュに衝突させるか、グリッパのメッシュを物体から遠くに動かす。
【００２８】
３．３．反復的な把持姿勢の精緻化
評価ネットワークは、実現できそうにない把持は拒絶するが、拒絶された把持の大部分は、成功する把持に近いものであり得る。成功しない把持を成功する把持に変える変換Δｇ∈ＳＥ（３））を探すことによって、この見識を利用することができる。より正式には、成功の確率を増大させる精緻化変換Δｇ、すなわちＰ（ｓ＝１｜ｇ＋Δｇ）＞Ｐ（ｓ＝１｜ｇ）を探す。評価ネットワークは、点群Ｘ及び把持ｇに基づき、成功ｓの微分可能関数を表現する。成功確率を最大に向上させることにつながる精緻化変換は、把持変換に対する成功の導関数：∂Ｓ／∂ｇを取ることにより、コンピュートすることができる。偏導関数∂Ｓ／∂ｇは、成功の確率を増大させるように、グリッパ点群Ｘｇのそれぞれの点について変換を提供する。導関数は、グリッパのそれぞれの点に関して独立してコンピュートされるので、Ｘｇについて非剛体変換につながることがある。剛体の制約を適用するために、変換されたグリッパ点群Ｘｇは、オイラー角Ｒｇ＝（αｇ、βｇ、γｇ）及び変換Ｔｇにおいて定義された把持の配向の関数として定義される。連鎖法則を使用して、Δｇは、以下のようにコンピュートされる。
【数８】
2020192676.tif 000010
【００２９】
偏導関数∂Ｓ／∂ｇは、局所的な近傍において有効な近似にすぎないので、各ステップで更新の大きさを限定するためにハイパーパラメータηを使用する。実際、把持の最大並進更新が１ｃｍを超えないようなやり方で、ηを選択する。図６は、様々な反復において推定される把持の精緻化を示す。
【００３０】
４．実験
把持のための訓練データ。成功する把持の参照セットを生成するために、任意の物体形状について把持の現実的なシミュレーションを提供する物理シミュレーションＦｌｅＸを使用する。候補の把持が、物体形状に基づきサンプリングされる。物体のメッシュ表面のランダムな点をサンプリングし、グリッパのｚ軸（図３を参照）を面法線に位置合わせする。グリッパと物体表面との間の距離が、ゼロとグリッパの指の長さとの間で一様にサンプリングされる。ｚ軸周りの配向も、一様分布から導かれる。衝突せず、指同士の間の閉鎖量が物体に交差する把持だけをシミュレーションする。ＳｈａｐｅＮｅｔにおける６つのカテゴリから、合計で２０６個の物体を使用する：箱、及び円筒（ランダムに生成）、並びにボール、ボトル、及びマグ。合計で１０，８１６，７２０通りの候補把持がサンプリングされ、そのうち７，０７４，０３８通り（６５．４％）、すなわち非空の閉鎖量試験にパスする把持をシミュレーションする。シミュレーションは、浮遊性の平行あごグリッパ、及び重力のない浮遊性の物体から成る。表面摩擦及び物体密度は一定に保たれる。グリッパは、その指を閉めた後、事前定義された振とう動作を実行する。物体が両指の間に保たれていれば、把持は成功とラベル付けされる。全体で、２，１０４，８９４通り（１９．４％）の成功する把持を生成する。結果的に生じるポジティブの把持のラベルは、図７の実例に示すように密に分布される。
【００３１】
訓練。把持生成器と評価器の両方のネットワークは、ＰｏｉｎｔＮｅｔ＋＋を使用し、同様のアーキテクチャを有する。両方のモジュールは、３セットの抽象化層と、それに続く完全結合層から成る。生成器ネットワーク用の訓練データの各バッチは、ランダムなビューからの物体のレンダリングと、サンプリングされた把持が十分な多様性を有することを保証するために層化サンプリングを使用してサンプリングされた６４通りの把持とから成る。ＫＬ発散損失の重み（式（２）のα）は、０．０１に設定される。評価器ネットワーク用の訓練データの各バッチは、ポジティブの把持３０％と、ネガティブの把持３０％と、ハード・ネガティブの把持４０％とから成る。ハード・ネガティブの把持は、各軸に±０．６ラジアン、及び並進に±３ｃｍを適用することによって摂動されたポジティブの把持から選択される。両方のモデルは、０．０００１の学習率を使用して、Ａｄａｍオプティマイザで訓練される。すべての把持がシミュレーションで生成され、いずれのモデルを訓練するためにも実データは全く使用しなかった（セクション４を参照）。
【００３２】
ネットワーク・アーキテクチャの詳細。把持生成器と評価器の両方は、ＰｏｉｎｔＮｅｔ＋＋アーキテクチャに基づく。両方のモデルは、３セットの抽象化層から成る。各セットの抽象化層は、１２８個の点、３２個の点、及びすべての点をサンプリングする。各セットの抽象化層は、サンプリングされた点の２ｃｍ以内の点、４ｃｍ以内の点、∞以内の点、及び半径以内の点をサンプリングする。各セットの抽象化層は、３つの完全結合層を使用して、特徴をコンピュートする。各セットの抽象化層のチャネル数は、それぞれ［６４，６４，１２８］、［１２８，１２８，２５６］、及び［２５６，２５６，５１２］である。セットの抽象化層の後に、１０２４ユニットを有する２つの完全結合層が続く。把持生成器ネットワークは、単位四元数として表現される回転Ｒと、並進Ｔとを出力する。四元数は、線形の完全結合層にＬ２ノルムを適用することによって生成される。並進Ｔには正常化をおこなわない。評価器ネットワークは、ソフトマックス層を使用して、各把持のスコアを予測する。
【００３３】
評価メトリック。把持方法を定量的に評価するために、２つのメトリック、すなわち成功率及びカバレッジ率を使用する。成功率は、すべての予測された把持のうち、成功する把持の割合である。このメトリックは、実行される把持だけを考慮し、他の把持に関するいかなる情報も含まない。１つの把持だけを予測することは、３Ｄ把持には適切ではなく、その理由は、予測された把持が、ロボットと環境内の他の物体との衝突につながることがあり、又は、予測された把持に到達できる実現可能で有効なロボット関節構成がない場合があるからである。実行可能で成功する把持を達成するために、異なる並進及び方向からの把持の多様なセットを生成して、運動学的な実現可能性及び衝突回避を確認することが必要である。その結果、把持の多様性を捕捉し、ポジティブの把持Ｇ＊の空間が、生成された把持によってどのくらい良好にカバーされるかを測定するカバレッジ率を導入する。把持ｇからせいぜい２ｃｍ離れた把持
【数９】
2020192676.tif 000011
が存在する場合、ポジティブの把持ｇ∈Ｇ＊は、予測される把持
【数１０】
2020192676.tif 000012
のセットによってカバーされる。物体フレームにおいて同様の並進を有するポジティブの把持は、同様の配向を有する。その結果、把持の並進の距離を、把持がカバーされるかどうかを評価するための基準として使用することを選択した。把持はＳＥ（３）において定義されるので、Ｇ＊は非可算無限である。その結果、Ｇ＊は、把持をサンプリングしながらデータを生成することによって近似される。成功率とカバレッジ率は、バイナリ分類の文脈における精度と再現率に類似している。精度−再現曲線と同様に、成功率とカバレッジ率の曲線を使用して、私たちの方法を分析し評価する。アブレーション研究及び分析のために、成功−カバレッジ率のＡＵＣを使用する。
【００３４】
４．１．分析及びアブレーション研究
訓練データの生成（セクション４）と同じ物理シミュレーションを使用して、異なるパラメータ及びモジュールの影響を定量的に評価する。アブレーション研究については、訓練中にホールド・アウトされた１０個の異なる物体について、８６通りの物体点群観察を生成する。点群ごとに、２００個の潜在値がサンプリングされ１０回の反復にわたって精緻化され、結果的に１視点あたり２２００通りの把持、合計１８２，６００通りの把持が得られる。
【００３５】
潜在空間の次元。生成された把持の品質に影響を及ぼす潜在空間の次元を決定するとき、固有の張力が存在する。潜在空間は、ＶＡＥが把持を再構築できるようにするのに十分な容量を有する必要がある。同時に、高次元の潜在空間は過剰適合につながり、さらに著しく多くの訓練データをカバーすることが必要になる。またそれは、特に推論中にサンプリングされた潜在値が、訓練中に生成器ネットワークによって見られていない場合、推論中にサンプリングされた把持の品質を劣化させる。この影響を分析するために、潜在空間の次元数を増やして生成器ネットワークを評価する。図８は、結果的に得られる成功−カバレッジ曲線を示す。図からわかるように、１次元は、潜在空間が十分な容量を有していないので、最も少ないＡＵＣを有する。３次元及び４次元の潜在空間は、訓練データについてわずかに良好なＬｖａｅにつながるが、訓練中にＶＡＥが潜在空間を密にカバーすることができないので、推論中の性能が劣る。これらの結果を前提として、以降のすべての評価に２次元の潜在空間を選択する。
【００３６】
把持品質に対する精緻化の影響。把持の精緻化により、評価器ネットワークに基づく成功確率が増大するが、これは、精緻化された把持が試験期間中に成功することを必ずしも意味しない。各精緻化ステップにより導かれた実際の改善を分析するために、シミュレーションにおいて把持を評価する。図９は、各精緻化の反復においてコンピュートされた、把持の成功−カバレッジ曲線を示す。図示してあるように、生成された把持の成功率が増大しているだけでなく、カバレッジ率も同じく増大している。これは、把持が改善されると、これらの把持が、Ｇ＊のサンプリングされたポジティブの把持に近づくからである。曲線のＡＵＣは、精緻化の１０回目の反復後に定常に達する。
【００３７】
カバレッジに対するサンプリングされた把持の影響。前のセクションでは、２００個のランダムな潜在値を使用してアブレーション研究を実行したが、その理由は、それがＧＰＵメモリに適合する最大のバッチ・サイズであり、私たちのロボット実験に使用したのと同じ設定だったからである。サンプリングされた潜在値の数は限られていたので、図９のカバレッジ率は、１０回の精緻化ステップの後でも０．５未満であった。サンプリングされた把持の数がカバレッジにどのように影響するかを調査するために、前のアブレーション研究に使用したのと同じ点群に対して、１０個の異なるバッチで２０００通りの把持をサンプリングする。図１０は、サンプルが増えると、カバレッジ率が増大する様子を示す。
【００３８】
４．２．ロボット実験
生成された把持の最終的な試験は、実世界でそれらを実行し、不完全な知覚、ロボット関節の限界、制御誤差、及びモデル化するのが困難な摩擦などの物理現象に対処することである。以下のことを明らかにしたい。（１）私たちの方法は、シミュレーションにおいてのみ訓練されたが、実世界に合わせて拡張される；（２）生成された把持分布は、ロボットの運動学及び衝突の制約に反するものを破棄した後でも、成功する把持を見いだすのに十分なほど多様である；（３）私たちの方法の多様な把持サンプリングは、代替的な６ＤＯＦの把持プランナ（「ＧＰＤ」）と比較して、より高い成功率につながる。
【００３９】
すべての実験は、Ｉｎｔｅｌ  ＲｅａｌＳｅｎｓｅ  Ｄ４１５カメラがその平行あごのグリッパに装着された７ＤＯＦのＦｒａｎｋａ  Ｐａｎｄａマニピュレータを使用しておこなわれる。視覚的及び物理的に困難な、一般に使用される物体のセットを選択する。物体の重さは４２ｇ（胡椒入れ）から６１８ｇ（マスタードの瓶）までの間である。ハードウェア設定及び物体の試験セットを、図１１に示す。
【００４０】
プロトコル。各物体は、３つの異なる安定した姿勢で、ロボットの前にテーブル上に置かれる。ロボットのエンドエフェクタは、手に装着された深度カメラがテーブル上で遮られることのないビューを有するように、動かされる。ロボットが物体を落とすことなく１０ｃｍ持ち上げることができれば、把持は成功とみなされる。
【００４１】
測定された点群をフィルタリングし、テーブル平面を取り除き、残りの点をクラスタ化する。この抽出された物体点群は、私たちの手法への、及びＧＰＤへの入力としての役割を果たす。両方の方法は、スコアリングされた把持のリストを返す。各把持姿勢に対して衝突のない経路を確認するために、モーション・プランナを使用し、最高スコアを有する把持姿勢を実行する。返されたセットのなかでいずれの把持も実行できない場合には、この試験は失敗とみなす。１つの方法につき合計で５１回の試験を走らせる。
【００４２】
結果。表１は、私たちの方法が、すべての物体にわたり成功率でＧＰＤより優れていることを示している。この理由の１つは、私たちの方法が多様な把持を生成し、それにより運動学的に実行可能な把持を見いだしやすくなることである。対照的に、ＧＰＤは、多くの異なる把持を生成せず、これはときに、運動学的に実行可能な把持を見いだせないという状況につながる。ＧＰＤにとってマグは特に難しく、その理由は、ＧＰＤが、縁からの把持を全く生成しないからである（図１２を参照）。問題の別の発生源は、物体の表面のうちの１つに対して、指グリッパが接線方向になる把持である。この場合、把持を実行する際のわずかな誤差により、把持が、物体を掴むことからそれを押すことに変わることがある。実験の詳細な結果を、表２及び図１３に示す。
【００４３】
５．結論
この研究では、未知の物体に対して把持の多様なセットを生成するために、６ＤＯＦのＧｒａｓｐＮｅｔを導入した。私たちの方法は、物体について様々な把持をサンプリングする訓練されたＶＡＥから成る。ＶＡＥは、成功する把持姿勢の複雑な分布を捕捉することができるが、高度にロバストな把持生成に必要な精度をそれほど提供しない。この限界を克服するために、把持品質を評価し、反復プロセスにおいて把持を精緻化できる把持評価器ネットワークをさらに導入する。私たちの知る限り、学習済みの把持サンプラも、勾配ベースの精緻化プロセスも、これまでに導入されたことがない。
【００４４】
私たちのモデルの訓練は、物理シミュレータによって生成された合成把持データを使用しておこなわれる。したがって、私たちのモデルは、実世界のいかなるデータを収集する必要もなく、物体のより大きいセットに合わせて拡大することができる。実際のロボット・プラットフォーム及び内蔵ＲＧＢ−Ｄカメラに私たちの方法を導入することにより、未知の３Ｄモデルを有する物体について、この方法を実世界に移行できることを実証した。未知の３Ｄモデルを有する１７個の物体についてロボット実験を実施し、３Ｄ把持において最先端の結果を達成した。また、現実的な物理シミュレータでのアブレーション研究を介して、成功率及びカバレッジという観点から、生成された把持の徹底的な分析を実施した。
【表１】
2020192676.tif 000013
【表２】
2020192676.tif 000014
【００４５】
表２  ロボット実験の詳細な結果。レ：試験は成功した  Ｘ：生成された把持は物体を把持するのに成功しなかった  ＊：生成された把持のうち運動学的に実行可能なものがない。
【００４６】
この手法は、コンピュータ・ビジョン及びロボット工学において多数の興味深い方向性を切り開く。私たちの方法では、すべての潜在値が一様にサンプリングされ、次いで、衝突チェック及び運動学的に実行可能な解に基づき、把持が取り除かれる。考えられる機能拡張は、対称の物体だけを考慮するのではなく、周囲の物体も考慮するようにサンプラ又は評価器を訓練して、衝突する把持又は実行不可能な把持の生成を直接回避することである。興味深い他の方向性は、サンプリングされた把持を精緻化するためだけでなく、物体に近づいているマニピュレータにリアルタイムのフィードバック案内を提供するために、評価器を使用することである。私たちの実験は、私たちの勾配ベースの手法が、マニピュレータを成功する把持にどんどん近づけることに成功できたという証拠を提供する。
【００４７】
図１４Ａは、１つ又は複数の実施例に関して推論及び／又は訓練の動作を実行するために使用される推論及び／又は訓練論理１４１５を示す。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。
【００４８】
少なくとも一実施例では、推論及び／又は訓練論理１４１５は、１つ若しくは複数の実施例の態様において推論するために訓練及び／若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、順伝播及び／若しくは出力の重み、並びに／又は入力／出力データを記憶するためのデータ・ストレージ１４０１を、限定することなく含んでもよい。少なくとも一実施例では、データ・ストレージ１４０１は、１つ若しくは複数の実施例の態様を使用した訓練及び／又は推論中に、入力／出力データ及び／又は重みパラメータを順伝播する間に１つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び／又は入力／出力データを記憶する。少なくとも一実施例では、データ・ストレージ１４０１の任意の部分は、プロセッサのＬ１、Ｌ２、又はＬ３のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【００４９】
少なくとも一実施例では、データ・ストレージ１４０１の任意の部分は、１つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、データ・ストレージ１４０１は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ（「ＤＲＡＭ」：ｄｙｎａｍｉｃ  ｒａｎｄｏｍｌｙ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）、スタティック・ランダム・アドレス可能メモリ（「ＳＲＡＭ」：ｓｔａｔｉｃ  ｒａｎｄｏｍｌｙ  ａｄｄｒｅｓｓａｂｌｅ  ｍｅｍｏｒｙ）、不揮発性メモリ（たとえば、フラッシュ・メモリ）、又は他のストレージであってもよい。少なくとも一実施例では、データ・ストレージ１４０１が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はＤＲＡＭ、ＳＲＡＭ、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び／又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び／又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【００５０】
少なくとも一実施例では、推論及び／又は訓練論理１４１５は、１つ若しくは複数の実施例の態様において推論するために訓練及び／若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び／若しくは出力の重み、並びに／又は入力／出力データを記憶するためのデータ・ストレージ１４０５を、限定することなく含んでもよい。少なくとも一実施例では、データ・ストレージ１４０５は、１つ若しくは複数の実施例の態様を使用した訓練及び／又は推論中に、入力／出力データ及び／又は重みパラメータを逆伝播する間に１つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び／又は入力／出力データを記憶する。少なくとも一実施例では、データ・ストレージ１４０５の任意の部分は、プロセッサのＬ１、Ｌ２、又はＬ３のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、データ・ストレージ１４０５の任意の部分は、１つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、データ・ストレージ１４０５は、キャッシュ・メモリ、ＤＲＡＭ、ＳＲＡＭ、不揮発性メモリ（たとえば、フラッシュ・メモリ）、又は他のストレージであってもよい。少なくとも一実施例では、データ・ストレージ１４０５が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はＤＲＡＭ、ＳＲＡＭ、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び／又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び／又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
【００５１】
少なくとも一実施例では、データ・ストレージ１４０１と、データ・ストレージ１４０５は、別々のストレージ構造であってもよい。少なくとも一実施例では、データ・ストレージ１４０１と、データ・ストレージ１４０５は、同じストレージ構造であってもよい。少なくとも一実施例では、データ・ストレージ１４０１と、データ・ストレージ１４０５は、部分的に同じストレージ構造で、部分的に別々のストレージ構造であってもよい。少なくとも一実施例では、データ・ストレージ１４０１と、コード及び／又はデータ・ストレージ１４０５との任意の部分は、プロセッサのＬ１、Ｌ２、又はＬ３のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
【００５２】
少なくとも一実施例では、推論及び／又は訓練論理１４１５は、訓練及び／又は推論コードに少なくとも部分的に基づく、又はそれにより示される論理演算及び／又は数学的演算を実行するための、１つ又は複数の算術論理演算ユニット（「ＡＬＵ」：ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ）１４１０を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ１７２０に記憶されるアクティブ化（たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値）をもたらしてもよく、これらは、データ・ストレージ１４０１及び／又は、データ・ストレージ１４０５に記憶される入力／出力及び／又は重みパラメータの関数である。少なくとも一実施例では、アクティブ化ストレージ１４２０に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ＡＬＵ１４１０によって実行される線形代数計算又は行列ベースの計算に従って生成され、ここでデータ・ストレージ１４０５及び／又はデータ１４０１に記憶された重み値は、バイアス値、勾配情報、運動量値（ｍｏｍｅｎｔｕｍ  ｖａｌｕｅ）などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、データ・ストレージ１４０５、又はデータ・ストレージ１４０１、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。少なくとも一実施例では、ＡＬＵ１４１０は、１つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ＡＬＵ１４１０は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい（たとえばコプロセッサ）。少なくとも一実施例では、ＡＬＵ１４１０は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ（たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど）の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なＡＬＵバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、データ・ストレージ１４０１、データ・ストレージ１４０５、及びアクティブ化ストレージ１４２０は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ１４２０の任意の部分は、プロセッサのＬ１、Ｌ２、又はＬ３のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び／又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び／又は他の論理回路を使用してフェッチ及び／又は処理されてもよい。
【００５３】
少なくとも一実施例では、アクティブ化ストレージ１４２０は、キャッシュ・メモリ、ＤＲＡＭ、ＳＲＡＭ、不揮発性メモリ（たとえば、フラッシュ・メモリ）、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ１４２０は、完全に又は部分的に、１つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ１４２０が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はＤＲＡＭ、ＳＲＡＭ、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び／又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び／又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。少なくとも一実施例では、図１４Ａに示す推論及び／又は訓練論理１４１５は、グーグルからのＴｅｎｓｏｒｆｌｏｗ（登録商標）処理ユニット、Ｇｒａｐｈｃｏｒｅ（商標）からの推論処理ユニット（ＩＰＵ：ｉｎｆｅｒｅｎｃｅ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、又はＩｎｔｅｌ  ＣｏｒｐからのＮｅｒｖａｎａ（登録商標）（たとえば「Ｌａｋｅ  Ｃｒｅｓｔ」）プロセッサなどの特定用途向け集積回路（「ＡＳＩＣ：ａｐｐｌｉｃａｔｉｏｎ−ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ」）と併せて使用されてもよい。少なくとも一実施例では、図１４Ａに示す推論及び／又は訓練論理１４１５は、中央処理装置（「ＣＰＵ」：ｃｅｎｔｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）ハードウェア、グラフィックス・プロセッシング・ユニット（「ＧＰＵ」：ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ（「ＦＰＧＡ」：ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙ）など他のハードウェアと併せて使用されてもよい。
【００５４】
図１４Ｂは、少なくとも１つの様々な実施例による、推論及び／又は訓練論理１４１５を示す。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの１つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図１４Ｂに示す推論及び／又は訓練論理１４１５は、グーグルからのＴｅｎｓｏｒｆｌｏｗ（登録商標）処理ユニット、Ｇｒａｐｈｃｏｒｅ（商標）からの推論処理ユニット（ＩＰＵ）、又はインテルコーポレーションからのＮｅｒｖａｎａ（登録商標）（たとえば「Ｌａｋｅ  Ｃｒｅｓｔ」）プロセッサなどの特定用途向け集積回路（ＡＳＩＣ）と併せて使用されてもよい。少なくとも一実施例では、図１４Ｂに示す推論及び／又は訓練論理１４１５は、中央処理装置（ＣＰＵ）ハードウェア、グラフィックス・プロセッシング・ユニット（「ＧＰＵ」）ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、限定することなく、データ・ストレージ１４０１、及びデータ・ストレージ１４０５を含み、これらを使用して、重み値、並びに／又はバイアス値、勾配情報、運動量値、及び／若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図１４Ｂに示す少なくとも一実施例では、データ・ストレージ１４０１及びデータ・ストレージ１４０５のそれぞれは、計算ハードウェア１４０２及び計算ハードウェア１４０６などの専用計算リソースにそれぞれ関連付けられる。少なくとも一実施例では、計算ハードウェア１４０２及び計算ハードウェア１４０６のそれぞれは、線形代数関数などの数学的関数を、それぞれデータ・ストレージ１４０１及びデータ・ストレージ１４０５に記憶された情報に対してのみ実行する１つ又は複数のＡＬＵを備え、その結果は、アクティブ化ストレージ１４２０に記憶される。
【００５５】
少なくとも一実施例では、データ・ストレージ１４０１及び１４０５のそれぞれ、並びに対応する計算ハードウェア１４０２及び１４０６は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、データ・ストレージ１４０１と計算ハードウェア１４０２との１つの「ストレージ／計算の対１４０１／１４０２」から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のデータ・ストレージ１４０５と計算ハードウェア１４０６との「ストレージ／計算の対１４０５／１４０６」への入力として提供される。少なくとも一実施例では、ストレージ／計算の対１４０１／１４０２、及び１４０５／１４０６は、２つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ／計算の対１４０１／１４０２、及び１４０５／１４０６の後に、又はそれと並列に、追加のストレージ／計算の対（図示せず）が、推論及び／又は訓練論理１４１５に含まれてもよい。
【００５６】
図１５は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク９１５０６が、訓練データ・セット１５０２を使用して訓練される。少なくとも一実施例では、訓練フレームワーク１５０４は、ＰｙＴｏｒｃｈフレームワークであり、一方他の実施例では、訓練フレームワーク１５０４は、Ｔｅｎｓｏｒｆｌｏｗ、Ｂｏｏｓｔ、Ｃａｆｆｅ、マイクロソフトＣｏｇｎｉｔｉｖｅ  Ｔｏｏｌｋｉｔ／ＣＮＴＫ、ＭＸＮｅｔ、Ｃｈａｉｎｅｒ、Ｋｅｒａｓ、Ｄｅｅｐｌｅａｒｎｉｎｇ４ｊ、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク１５０４は、未訓練ニューラル・ネットワーク１５０６を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク１５０８を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
【００５７】
少なくとも一実施例では、未訓練ニューラル・ネットワーク１５０６は教師あり学習を使用して訓練され、ここで訓練データ・セット１５０２は、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セット１５０２は、既知の出力を有する入力を含み、ニューラル・ネットワークの出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク１５０６は教師ありのやり方で訓練され、訓練データ・セット１５０２からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワーク１５０６を通って逆伝播される。少なくとも一実施例では、訓練フレームワーク１５０４は、未訓練ニューラル・ネットワーク１５０６を制御する重みを調節する。少なくとも一実施例では、訓練フレームワーク１５０４は、未訓練ニューラル・ネットワーク１５０６が、新規データ１５１２などの既知の入力データに基づき、結果１５１４などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク１５０８などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワーク１５０４は、未訓練ニューラル・ネットワーク１５０６を繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワーク１５０６の出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワーク１５０４は、未訓練ニューラル・ネットワーク１５０６が所望の精度に到達するまで未訓練ニューラル・ネットワーク１５０６を訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワーク１５０８を、任意の数の機械学習動作を実装するように導入することができる。
【００５８】
少なくとも一実施例では、未訓練ニューラル・ネットワーク１５０６は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク１５０６は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セット１５０２は、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク１５０６は、訓練データ・セット１５０２内でグループ化を学習することができ、個々の入力が、未訓練データ・セット１５０２にどのように関係しているかを判定することができる。少なくとも一実施例では、教師なし訓練を使用して、自己組織化マップを生成することができ、自己組織化マップは、新規データ１５１２の次元を低減するのに有用な動作を実行することができるタイプの訓練済みニューラル・ネットワーク１５０８である。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セット１５１２の通常のパターンから逸脱した、新規データ・セット１５１２内のデータ点を識別できるようにする。
【００５９】
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データ・セット１５０２に混在している技法である。少なくとも一実施例では、訓練フレームワーク１５０４を使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク１５０８は、初期訓練中にネットワーク内に教え込まれた知識を忘れることなく、新規データ１５１２に適合できるようになる。
【００６０】
データ・センタ
図１６は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ１６００を示す。少なくとも一実施例では、データ・センタ１６００は、データ・センタ・インフラストラクチャ層１６１０、フレームワーク層１６２０、ソフトウェア層１６３０、及びアプリケーション層１６４０を含む。
【００６１】
少なくとも一実施例では、図１６に示すように、データ・センタ・インフラストラクチャ層１６１０は、リソース・オーケストレータ１６１２、グループ化済みコンピューティング・リソース１６１４、及びノード・コンピューティング・リソース（「ノードＣ．Ｒ．」：ｎｏｄｅ  ｃｏｍｐｕｔｉｎｇ  ｒｅｓｏｕｒｃｅ）１６１６（１）〜１６１６（Ｎ）を含んでもよく、ここで「Ｎ」は、任意の正の整数を表す。少なくとも一実施例では、ノードＣ．Ｒ．１６１６（１）〜１６１６（Ｎ）は、任意の数の中央処理装置（「ＣＰＵ」）又は（アクセラレータ、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、グラフィックス・プロセッサなどを含む）他のプロセッサ、メモリ・デバイス（たとえば、ダイナミック読取り専用メモリ）、ストレージ・デバイス（たとえば、半導体ドライブ又はディスク・ドライブ）、ネットワーク入力／出力（「ＮＷ  Ｉ／Ｏ」：ｎｅｔｗｏｒｋ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）デバイス、ネットワーク・スイッチ、仮想機械（「ＶＭ」：ｖｉｒｔｕａｌ  ｍａｃｈｉｎｅ）、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードＣ．Ｒ．１６１６（１）〜１６１６（Ｎ）のうち１つ又は複数のノードＣ．Ｒ．は、上述したコンピューティング・リソースのうちの１つ又は複数を有するサーバであってもよい。
【００６２】
少なくとも一実施例では、グループ化済みコンピューティング・リソース１６１４は、１つ若しくは複数のラック（図示せず）内に収容されたノードＣ．Ｒ．の別々のグループ、又は様々なグラフィカル・ロケーション（同じく図示せず）においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース１６１４内のノードＣ．Ｒ．の別々のグループは、１つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、ＣＰＵ又はプロセッサを含むいくつかのノードＣ．Ｒ．は、１つ又は複数のラック内でグループ化されて、１つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、１つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
【００６３】
少なくとも一実施例では、リソース・オーケストレータ１６２２は、１つ又は複数のノードＣ．Ｒ．１６１６（１）〜１６１６（Ｎ）及び／若しくはグループ化済みコンピューティング・リソース１６１４を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ１６２２は、データ・センタ１６００用のソフトウェア設計インフラストラクチャ（「ＳＤＩ」：ｓｏｆｔｗａｒｅ  ｄｅｓｉｇｎ  ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
【００６４】
図１６に示す少なくとも一実施例では、フレームワーク層１６２０は、ジョブ・スケジューラ１６３２、構成マネージャ１６３４、リソース・マネージャ１６３６、及び分配ファイル・システム１６３８を含む。少なくとも一実施例では、フレームワーク層１６２０は、ソフトウェア層１６３０のソフトウェア１６３２、及び／又はアプリケーション層１６４０の１つ若しくは複数のアプリケーション１６４２をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア１６３２又はアプリケーション１６４２はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層１６２０は、大規模なデータ処理（たとえば「ビック・データ」）のために分配ファイル・システム１６３８を使用することができるＡｐａｃｈｅ  Ｓｐａｒｋ（登録商標）（以下「Ｓｐａｒｋ」）など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ１６３２は、データ・センタ１６００の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Ｓｐａｒｋドライバを含んでもよい。少なくとも一実施例では、構成マネージャ１６３４は、ソフトウェア層１６３０、並びに大規模なデータ処理をサポートするためのＳｐａｒｋ及び分配ファイル・システム１６３８を含むフレームワーク層１６２０などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ１６３６は、分配ファイル・システム１６３８及びジョブ・スケジューラ１６３２をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層１６１０にあるグループ化済みコンピューティング・リソース１６１４を含んでもよい。少なくとも一実施例では、リソース・マネージャ１６３６は、リソース・オーケストレータ１６１２と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
【００６５】
少なくとも一実施例では、ソフトウェア層１６３０に含まれるソフトウェア１６３２は、ノードＣ．Ｒ．１６１６（１）〜１６１６（Ｎ）、グループ化済みコンピューティング・リソース１６１４、及び／又はフレームワーク層１６２０の分配ファイル・システム１６３８のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。１つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
【００６６】
少なくとも一実施例では、アプリケーション層１６４０に含まれるアプリケーション１６４２は、ノードＣ．Ｒ．１６１６（１）〜１６１６（Ｎ）、グループ化済みコンピューティング・リソース１６１４、及び／又はフレームワーク層１６２０の分配ファイル・システム１６３８のうちの少なくとも一部分によって使用される１つ若しくは複数のタイプのアプリケーションを含んでもよい。１つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア（たとえば、ＰｙＴｏｒｃｈ、Ｔｅｎｓｏｒｆｌｏｗ、Ｃａｆｆｅなど）を含む機械学習アプリケーション、又は１つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
【００６７】
少なくとも一実施例では、構成マネージャ１６３４、リソース・マネージャ１６３６、及びリソース・オーケストレータ１６１２のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ１６００のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ／又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
【００６８】
少なくとも一実施例では、データ・センタ１６００は、１つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の１つ若しくは複数の実施例による１つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ１６００に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、１つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の１つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ１６００に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
【００６９】
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び／又は推論を実行するために、ＣＰＵ、特定用途向け集積回路（ＡＳＩＣ）、ＧＰＵ、ＦＰＧＡ、又は他のハードウェアを使用してもよい。さらに、上述した１つ又は複数のソフトウェア及び／又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
【００７０】
推論及び／又は訓練論理１４１５を使用して、１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作が実行される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図１６のシステムにおいて使用されてもよい。
【００７１】
一実施例では、本明細書に記載の技法が、自律車両、又は車両のドライバ支援システムに適用される。たとえば、本明細書に記載の技法を使用して、自動フォークリフト又は倉庫ピッキング・ロボットを制御してもよい。一実施例では、このシステムは、パレット又は他の物体を持ち上げるのに必要なフォークリフトの位置決めを表現する把持姿勢を決定するために使用される。別の実施例では、本明細書に記載の技法は、自動倉庫において箱から物体を取るために使用される。別の実施例では、このシステムは、非自律でも、自律でも、又は半自律でもよい廃品収集車両（廃棄物収集車両又はごみ収集車とも呼ぶ）の把持姿勢を決定するために使用される。たとえば一実施例では、このシステムを使用して、箱（たとえば、ゴミ箱、リサイクル容器、又は庭瓦礫入れ）を持ち上げ、中身をそれぞれの、又は別の廃棄物収集車両に入れて空にするために使用される把持アームの把持姿勢を決定することができる。様々な目的の（たとえば、現場で建築材料を移動する）ロボティック・アームを使用する他の車両又は装置も、本開示の実施例を実践することができる文脈である。
【００７２】
図１７Ａは、少なくとも一実施例による自律車両１７００の例を示す。少なくとも一実施例では、自律車両１７００（或いは、本明細書において「車両１７００」と呼ばれる）は、限定することなく、車、トラック、バス、及び／又は１人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両１７００は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両１７００は、航空機、ロボット車両、又は他の種類の車両であってもよい。
【００７３】
自律車両は、米国運輸省の一部門である全米高速道路交通安全局（「ＮＨＴＳＡ」：Ｎａｔｉｏｎａｌ  Ｈｉｇｈｗａｙ  Ｔｒａｆｆｉｃ  Ｓａｆｅｔｙ  Ａｄｍｉｎｉｓｔｒａｔｉｏｎ）、及び自動車技術者協会（「ＳＡＥ」：Ｓｏｃｉｅｔｙ  ｏｆ  Ａｕｔｏｍｏｔｉｖｅ  Ｅｎｇｉｎｅｅｒｓ）の「自動車用運転自動化システムのレベル分類及び定義（Ｔａｘｏｎｏｍｙ  ａｎｄ  Ｄｅｆｉｎｉｔｉｏｎｓ  ｆｏｒ  Ｔｅｒｍｓ  Ｒｅｌａｔｅｄ  ｔｏ  Ｄｒｉｖｉｎｇ  Ａｕｔｏｍａｔｉｏｎ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｏｎ−Ｒｏａｄ  Ｍｏｔｏｒ  Ｖｅｈｉｃｌｅｓ）」（たとえば、２０１８年６月１５日発行の規格Ｎｏ．Ｊ３０１６−２０１８０６、２０１６年９月３０日発行の規格Ｎｏ．Ｊ３０１６−２０１６０９、及びこの規格の旧版及び新版）により定義される自動化レベルという観点から説明されてもよい。１つ又は複数の実施例では、車両１７００は、自律運転レベルのレベル１〜レベル５のうちの１つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両１７００は、実施例に応じて、条件付き自動化（レベル３）、高度自動化（レベル４）、及び／又は完全自動化（レベル５）に対応可能であってもよい。
【００７４】
少なくとも一実施例では、車両１７００は、限定することなく、シャシ、車両本体、ホイール（２本、４本、６本、８本、１８本など）、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両１７００は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び／又は別のタイプの推進システムなどの推進システム１７５０を含んでもよい。少なくとも一実施例では、推進システム１７５０は、車両１７００のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両１７００の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム１７５０は、スロットル／アクセル１７５２からの信号を受信したことに応答して、制御されてもよい。
【００７５】
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム１７５４は、推進システム１７５０が動作しているときに（たとえば、車両が動いているときに）車両１７００を（たとえば所望の経路又はルートに沿って）操縦するために使用される。少なくとも一実施例では、操縦システム１７５４は、操縦アクチュエータ１７５６から信号を受信してもよい。ハンドルは、完全自動化（レベル５）の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ１７４８及び／又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム１７４６が使用されてもよい。
【００７６】
少なくとも一実施例では、１つ又は複数のシステム・オン・チップ（「ＳｏＣ」：ｓｙｓｔｅｍ  ｏｎ  ｃｈｉｐ）（図１７Ａには示さず）及び／若しくはグラフィックス・プロセッシング・ユニット（「ＧＰＵ」）を限定することなく含んでもよいコントローラ１７３６は、車両１７００の１つ又は複数の構成要素及び／若しくはシステムに（たとえば、コマンドを表す）信号を提供する。たとえば、少なくとも一実施例では、コントローラ１７３６は、ブレーキ・アクチュエータ１７４８を介して車両ブレーキを動作させるための信号、操縦アクチュエータ１７５６を介して操縦システム１７５４を動作させるための信号、スロットル／アクセル１７５２を介して推進システム１７５０を動作させるための信号を送信してもよい。コントローラ１７３６は、自律運転を可能にし、且つ／又は運転車両１７００において人間のドライバを支援するために、センサ信号を処理し、動作コマンド（たとえばコマンドを表す信号）を出力する１つ又は複数の搭載（たとえば一体型の）コンピューティング・デバイス（たとえば、スーパーコンピュータ）を含んでもよい。少なくとも一実施例では、コントローラ１７３６は、自律運転機能のための第１のコントローラ１７３６、機能的安全機能のための第２のコントローラ１７３６、人工知能機能（たとえば、コンピュータ・ビジョン）のための第３のコントローラ１７３６、インフォテイメント機能のための第４のコントローラ１７３６、緊急事態における冗長性のための第５のコントローラ１７３６、及び／又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラ１９７６が、上記機能性のうちの２つ以上に対処してもよく、２つ以上のコントローラ１９７６が、単一の機能性に対処してもよく、且つ／又はこれらの何らかの組合せであってもよい。
【００７７】
少なくとも一実施例では、コントローラ１７３６は、１つ又は複数のセンサから受信したセンサ・データ（たとえば、センサ入力）に応答して、車両１７００の１つ又は複数の構成要素及び／若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム（「ＧＮＳＳ」：ｇｌｏｂａｌ  ｎａｖｉｇａｔｉｏｎ  ｓａｔｅｌｌｉｔｅ  ｓｙｓｔｅｍ）センサ１７５８（たとえば、全地球測位システム・センサ）、ＲＡＤＡＲセンサ１７６０、超音波センサ１７６２、ＬＩＤＡＲセンサ１７６４、慣性計測装置（「ＩＭＵ」：ｉｎｅｒｔｉａｌ  ｍｅａｓｕｒｅｍｅｎｔ  ｕｎｉｔ）センサ１７６６（たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など）、マイクロフォン１７９６、ステレオ・カメラ１７６８、広角カメラ１７７０（たとえば、魚眼カメラ）、赤外線カメラ１７７２、周囲カメラ１７７４（たとえば、３６０度カメラ）、長距離カメラ（図１７Ａには示さず）、中距離カメラ（図１７Ａには示さず）、（たとえば、車両１７００のスピードを計測するための）スピード・センサ１７４４、振動センサ１７４２、操縦センサ１７４０、（たとえば、ブレーキ・センサ・システム１７４６の一部分としての）ブレーキ・センサ、及び／又は他のタイプのセンサから、受信されてもよい。
【００７８】
少なくとも一実施例では、１つ又は複数のコントローラ１７３６は、車両１７００の計器クラスタ１７３２からの（たとえば入力データによって表される）入力を受信し、ヒューマン・マシン・インターフェース（「ＨＭＩ」：ｈｕｍａｎ−ｍａｃｈｉｎｅ  ｉｎｔｅｒｆａｃｅ）ディスプレイ１７３４、可聴アナンシエータ、拡声器を介して、且つ／又は車両１７００の他の構成要素を介して、（たとえば、出力データ、ディスプレイ・データなどによって表される）出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ（たとえば、ハイ・デフィニション・マップ（図１７Ａには示さず）、ロケーション・データ（たとえば、地図上などの車両１７００のロケーション）、方向、他車両のロケーション（たとえば、占有グリッド）、コントローラ１７３６が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、ＨＭＩディスプレイ１７３４は、１つ若しくは複数の物体（たとえば、道路標識、警告標識、信号の変化など）の存在についての情報、及び／又は車両が行った、行っている、又はこれから行う運転操作についての情報（たとえば、現在車線変更中、３．２２ｋｍ（２マイル）先の出口３４Ｂを出る、など）を表示してもよい。
【００７９】
少なくとも一実施例では、車両１７００はさらにネットワーク・インターフェース１７２４を含み、このネットワーク・インターフェースは、１つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ１７２６及び／又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース１７２４は、ロング・ターム・エボリューション（「ＬＴＥ」：Ｌｏｎｇ−Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）、広帯域符号分割多元接続（「ＷＣＤＭＡ（登録商標）」：Ｗｉｄｅｂａｎｄ  Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）、ユニバーサル・モバイル・テレコミュニケーション・システム（「ＵＭＴＳ」：Ｕｎｉｖｅｒｓａｌ  Ｍｏｂｉｌｅ  Ｔｅｌｅｃｏｍｍｕｎｉｃａｔｉｏｎｓ  Ｓｙｓｔｅｍ）、グローバル・システム・フォー・モバイル・コミュニケーションズ（「ＧＳＭ」：Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）、ＩＭＴ−ＣＤＭＡマルチ・キャリア（「ＣＤＭＡ２０００」）などを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ１７２６は、Ｂｌｕｅｔｏｏｔｈ、Ｂｌｕｅｔｏｏｔｈ  Ｌｏｗ  Ｅｎｅｒｇｙ  （「ＬＥ」：Ｌｏｗ  Ｅｎｅｒｇｙ）、Ｚ−Ｗａｖｅ、ＺｉｇＢｅｅなどのローカル・エリア・ネットワーク、及び／又はＬｏＲａＷＡＮ、ＳｉｇＦｏｘなどの低電力広域ネットワーク（「ＬＰＷＡＮ」：ｌｏｗ  ｐｏｗｅｒ  ｗｉｄｅ−ａｒｅａ  ｎｅｔｗｏｒｋ）を使用して、環境内の物体同士間（たとえば車両、モバイル・デバイスなど）での通信を可能にしてもよい。
【００８０】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図１７Ａのシステムにおいて使用されてもよい。
【００８１】
一実施例では、図１７Ｂに示すカメラは、フォークリフト、又は自動倉庫ピッキング・ロボットに位置付けられてもよい。
【００８２】
図１７Ｂは、少なくとも一実施例による図１７Ａの自律車両１７００についてカメラのロケーション及び視野の例を示す。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び／又は代替のカメラが含まれてもよく、且つ／又はカメラが車両１７００の異なるロケーションに位置付けられてもよい。
【００８３】
少なくとも一実施例では、カメラのカメラ・タイプは、車両１７００の構成要素及び／又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。カメラは、自動車安全性要求レベル（「ＡＳＩＬ」：ａｕｔｏｍｏｔｉｖｅ  ｓａｆｅｔｙ  ｉｎｔｅｇｒｉｔｙ  ｌｅｖｅｌ）Ｂ及び／又は別のＡＳＩＬにおいて動作してもよい。少なくとも一実施例では、カメラ・タイプは、実施例に応じて、毎秒６０フレーム（ｆｐｓ：ｆｒａｍｅｓ  ｐｅｒ  ｓｅｃｏｎｄ）、１２２０ｆｐｓ、２４０ｆｐｓなど、任意の画像捕捉率に対応可能であってもよい。少なくとも一実施例では、カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はこれらの組合せを使用することが可能であってもよい。少なくとも一実施例では、カラー・フィルタ・アレイは、赤色、クリア、クリア、クリア（「ＲＣＣＣ」：rｅｄ  ｃｌｅａｒ  ｃｌｅａｒ  ｃｌｅａｒ）のカラー・フィルタ・アレイ、赤色、クリア、クリア、青色（「ＲＣＣＢ：ｒｅｄ  ｃｌｅａｒ  ｃｌｅａｒ  ｂｌｕｅ」）のカラー・フィルタ・アレイ、赤色、青色、緑色、クリア（「ＲＢＧＣ」：ｒｅｄ  ｂｌｕｅ  ｇｒｅｅｎ  ｃｌｅａｒ）のカラー・フィルタ・アレイ、Ｆｏｖｅｏｎ  Ｘ３のカラー・フィルタ・アレイ、ベイヤー・センサ（ＲＧＧＢ）のカラー・フィルタ・アレイ、モノクロ・センサのカラー・フィルタ・アレイ、及び／又は別のタイプのカラー・フィルタ・アレイを含んでもよい。少なくとも一実施例では、光感度を上げるために、ＲＣＣＣ、ＲＣＣＢ、及び／又はＲＢＧＣのカラー・フィルタ・アレイを有するカメラなど、クリア・ピクセル・カメラが使用されてもよい。
【００８４】
少なくとも一実施例では、１つ又は複数のカメラを使用して、先進ドライバ支援システム（「ＡＤＡＳ」：ａｄｖａｎｃｅｄ  ｄｒｉｖｅｒ  ａｓｓｉｓｔａｎｃｅ  ｓｙｓｔｅｍｓ）機能が（たとえば、冗長設計又はフェイル・セーフ設計の一部として）実行されてもよい。たとえば、少なくとも一実施例では、多機能モノ・カメラが設置されて、車線逸脱警告、交通標識支援、及びインテリジェント・ヘッドライト制御を含む機能が提供されてもよい。少なくとも一実施例では、１つ又は複数のカメラ（たとえばすべてのカメラ）は、画像データ（たとえばビデオ）の記録と提供を同時に行ってもよい。
【００８５】
少なくとも一実施例では、１つ又は複数のカメラは、カメラの画像データ捕捉性能を妨げる恐れのある迷光及び車内部からの反射（たとえば、ダッシュボードからフロントガラスに反射される反射）をなくすために、カスタム設計の（３次元（「３Ｄ」：ｔｈｒｅｅ−ｄｉｍｅｎｓｉｏｎａｌ）印刷された）アセンブリなどの取付けアセンブリに取り付けられてもよい。ドアミラー取付けアセンブリを参照すると、少なくとも一実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形の合うように、カスタムで３Ｄ印刷されてもよい。少なくとも一実施例では、カメラは、ドアミラーと一体であってもよい。サイド・ビュー・カメラについて、少なくとも一実施例では、カメラはこの場合もキャビンの各角にある４本のピラーに一体化されてもよい。
【００８６】
少なくとも一実施例では、車両１７００前方の環境の一部分を含む視野を有するカメラ（たとえば正面カメラ）は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ１７３６及び／又は制御ＳｏＣのうちの１つ又は複数とともに使用されて、占有グリッドの生成及び／又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、ＬＩＤＡＲと同じＡＤＡＳ機能のうちの多くが実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告（「ＬＤＷ」：Ｌａｎｅ  Ｄｅｐａｒｔｕｒｅ  Ｗａｒｎｉｎｇｓ）、自律クルーズ・コントロール（「ＡＣＣ」：Ａｕｔｏｎｏｍｏｕｓ  Ｃｒｕｉｓｅ  Ｃｏｎｔｒｏｌ）、及び／又は交通標識認識などの他の機能を限定することなく含むＡＤＡＳの機能及びシステムのために使用されてもよい。
【００８７】
少なくとも一実施例では、たとえばＣＭＯＳ：ｃｏｍｐｌｅｍｅｎｔａｒｙ  ｍｅｔａｌ  ｏｘｉｄｅ  ｓｅｍｉｃｏｎｄｕｃｔｏｒ（「相補型金属酸化膜半導体」）カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体（たとえば歩行者、クロス・トラフィック、又は自転車）を感知するために、広角カメラ１７７０が使用されてもよい。図１７Ｂには１つの広角カメラ１７７０しか示していないが、他の実施例では、車両１７００には（ゼロを含む）任意の数の広角カメラ１７７０が存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ１７９８（たとえば、長距離ビューのステレオ・カメラの対）が使用されてもよい。少なくとも一実施例では、長距離カメラ１７９８はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
【００８８】
少なくとも一実施例では、任意の数のステレオ・カメラ１７６８は、正面構成にも含まれてよい。少なくとも一実施例では、１つ又は複数のステレオ・カメラ１７６８は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク（「ＣＡＮ」：Ｃｏｎｔｒｏｌｌｅｒ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）又はイーサネット（登録商標）・インターフェースを単一チップ上に有するプログラム可能論理（「ＦＰＧＡ」）及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両１７００の環境の３Ｄマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ１７６８のうちの１つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両１７００からターゲット物体までの距離を測定し、生成された情報（たとえば、メタデータ）を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる２つのカメラ・レンズ（左右に１つずつ）及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ１７６８が使用されてもよい。
【００８９】
少なくとも一実施例では、車両１７００の側方の環境の一部分を含む視野を有するカメラ（たとえば、サイド・ビュー・カメラ）が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ１７７４（たとえば図１７Ｂに示すように４つの周囲カメラ１７７４）を、車両１７００に配置することができる。周囲カメラ１７７４は、限定することなく、任意の数及び組合せの広角カメラ１７７０、魚眼カメラ、及び／又は３６０度カメラなどを含んでもよい。たとえば、少なくとも一実施例では、４つの魚眼カメラが、車両１７００の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両１７００は、３つの周囲カメラ１７７４（たとえば、左、右、及び後方）を使用してもよく、第４の周囲カメラとして、１つ又は複数の他のカメラ（たとえば正面カメラ）を活用してもよい。
【００９０】
少なくとも一実施例では、車両１７００後方の環境の一部分を含む視野を有するカメラ（たとえば、リア・ビュー・カメラ）が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ（たとえば、長距離カメラ１７９８、及び／又は中距離カメラ１７７６、ステレオ・カメラ１７６８）、赤外線カメラ１７７２など）を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
【００９１】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図１７Ｂのシステムにおいて使用されてもよい。
【００９２】
図１７Ｃは、少なくとも一実施例による図１７Ａの自律車両１７００の例示的システム・アーキテクチャを示すブロック図である。少なくとも一実施例では、図１７Ｃの車両１７００の構成要素、特徴、及びシステムのそれぞれは、バス１７０２を介して接続されるものとして示される。少なくとも一実施例では、バス１７０２は、限定することなく、ＣＡＮデータ・インターフェース（或いは、本明細書において（ＣＡＮバス）と呼ばれる）を含んでもよい。少なくとも一実施例では、ＣＡＮは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両１７００の様々な特徴及び機能の制御を補助するために使用される車両１７００内部のネットワークであってもよい。少なくとも一実施例では、バス１７０２は、それぞれが独自の一意の識別子（たとえばＣＡＮ  ＩＤ）をもつ数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス１７０２は、ハンドル角度、対地スピード、エンジンの毎分回転数（「ＲＰＭ」：ｒｅｖｏｌｕｔｉｏｎｓ  ｐｅｒ  ｍｉｎｕｔｅ）、ボタン位置、及び／又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス１７０２は、ＡＳＩＬのＢに準拠したＣＡＮバスであってもよい。
【００９３】
少なくとも一実施例では、ＣＡＮに加えて、又はその代わりに、ＦｌｅｘＲａｙ及び／又はＥｔｈｅｒｎｅｔ（登録商標）が使用されてもよい。少なくとも一実施例では、任意の数のバス１７０２が存在してもよく、これには、限定することなく、ゼロ以上のＣＡＮバス、ゼロ以上のＦｌｅｘＲａｙバス、ゼロ以上のＥｔｈｅｒｎｅｔ（登録商標）バス、及び／又は他のプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、２つ以上のバス１７０２を使用して異なる機能が実行されてもよく、且つ／又はそれらを使用して冗長性が与えられてもよい。たとえば、第１のバス１７０２が衝突回避機能のために使用され、第２のバス１７０２が作動制御のために使用されてもよい。少なくとも一実施例では、各バス１７０２は、車両１７００の任意の構成要素と通信してもよく、２つ以上のバス１７０２が同じ構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ（「ＳｏＣ」）１７０４のそれぞれ、コントローラ１７３６のそれぞれ、及び／又は車両内の各コンピュータは、同じ入力データ（たとえば、車両１７００のセンサからの入力）にアクセス可能であってもよく、ＣＡＮバスなどの共通のバスに接続されてもよい。
【００９４】
少なくとも一実施例では、車両１７００は、図１７Ａに関して本明細書に記載するものなど、１つ又は複数のコントローラ１７３６を含んでもよい。コントローラ１７３６は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ１７３６は、車両１７００の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両１７００、車両１７００の人工知能、及び／又は車両１７００のインフォテイメントなどの制御に使用されてもよい。
【００９５】
少なくとも一実施例では、車両１７００は、任意の数のＳｏＣ１７０４を含んでもよい。それぞれのＳｏＣ１７０４は、限定することなく、中央処理装置（「ＣＰＵ」）１７０６、グラフィックス・プロセッシング・ユニット（「ＧＰＵ」）１７０８、プロセッサ１７１０、キャッシュ１７１２、アクセラレータ１７１４、データ・ストア１７１６、及び／又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両１７００を様々なプラットフォーム及びシステムにおいて制御するために、ＳｏＣ１７０４が使用されてもよい。たとえば、少なくとも一実施例では、ＳｏＣ１７０４は、１つ又は複数のサーバ（図１７Ｃには示さず）からネットワーク・インターフェース１７２４を介して地図のリフレッシュ及び／又は更新を得ることができるハイ・デフィニション（「ＨＤ」：Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ）マップ１７２２を有するシステム（たとえば車両１７００のシステム）に組み込まれてもよい。
【００９６】
少なくとも一実施例では、ＣＰＵ１７０６は、ＣＰＵクラスタ、又はＣＰＵコンプレックス（或いは本明細書において「ＣＣＰＬＥＸ」と呼ばれる）を含んでもよい。少なくとも一実施例では、ＣＰＵ１７０６は、複数のコア及び／又はレベル２（「Ｌ２」）キャッシュを含んでもよい。たとえば、少なくとも一実施例では、ＣＰＵ１７０６は、コヒーレントなマルチプロセッサ構成において８つのコアを含んでもよい。少なくとも一実施例では、ＣＰＵ１７０６は、４つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のＬ２キャッシュ（たとえば、２ＭＢのＬ２キャッシュ）を有する。少なくとも一実施例では、ＣＰＵ１７０６（たとえば、ＣＣＰＬＥＸ）は、ＣＰＵ１７０６のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
【００９７】
少なくとも一実施例では、ＣＰＵ１７０６のうちの１つ又は複数は、電力管理機能を実装してもよく、この機能は限定することなく、以下の特徴のうちの１つ又は複数を含む：個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる；割込み待ち（「ＷＦＩ」：Ｗａｉｔ  ｆｏｒ  Ｉｎｔｅｒｒｕｐｔ）／イベント待ち（「ＷＦＥ」：Ｗａｉｔ  ｆｏｒ  Ｅｖｅｎｔ）命令の実行に起因してコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる；各コアを独立して電力ゲート制御することができる；すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる；且つ／又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、ＣＰＵ１７０６はさらに、電力状態を管理するための拡張アルゴリズムを実装してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びＣＣＰＬＥＸが入るべき最良の電力状態を、ハードウェア／マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
【００９８】
少なくとも一実施例では、ＧＰＵ１７０８は、統合されたＧＰＵ（或いは、本明細書において「ｉＧＰＵ」と呼ばれる）を含んでもよい。少なくとも一実施例では、ＧＰＵ１７０８は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、ＧＰＵ１７０８は拡張テンソル命令セットを使用してもよい。一実施例では、ＧＰＵ１７０８は、１つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル１（「Ｌ１」）キャッシュ（たとえば少なくとも９６ＫＢのストレージ容量を有するＬ１キャッシュ）を含んでもよく、２つ以上のストリーミング・マイクロプロセッサは、Ｌ２キャッシュ（たとえば、５１２ＫＢのストレージ容量を有するＬ２キャッシュ）を共有してもよい。少なくとも一実施例では、ＧＰＵ１７０８は、少なくとも８つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、ＧＰＵ１７０８は、コンピュート・アプリケーション・プログラミング・インターフェース（ＡＰＩ：ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｇｒａｍｍｉｎｇ  ｉｎｔｅｒｆａｃｅ）を使用してもよい。少なくとも一実施例では、ＧＰＵ１７０８は、１つ又は複数の並列なコンピューティング・プラットフォーム、及び／又はプログラミング・モジュール（たとえば、ＮＶＩＤＩＡのＣＵＤＡ）を使用してもよい。
【００９９】
少なくとも一実施例では、ＧＰＵ１７０８のうちの１つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、一実施例では、ＧＰＵ１７０８は、フィン電界効果トランジスタ（「ＦｉｎＦＥＴ」：Ｆｉｎ  ｆｉｅｌｄ−ｅｆｆｅｃｔ  ｔｒａｎｓｉｓｔｏｒ）上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく６４個のＰＦ３２コアと、３２個のＰＦ６４コアを、４つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、１６個のＦＰ３２コア、８個のＦＰ６４コア、１６個のＩＮＴ３２コア、深層学習の行列演算用の２つの混合精度のＮＶＩＤＩＡ  ＴＥＮＳＯＲコア、レベルゼロ（「Ｌ０」）命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び／又は６４ＫＢのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現する。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、Ｌ１データ・キャッシュと共有メモリ・ユニットの組合せを含んでもよい。
【０１００】
少なくとも一実施例では、ＧＰＵ１７０８のうちの１つ又は複数は、高帯域幅メモリ（「ＨＢＷ」：ｈｉｇｈ  ｂａｎｄｗｉｄｔｈ  ｍｅｍｏｒｙ）及び／又は１６ＧＢのＨＢＭ２メモリ・サブシステムを含み、いくつかの例では、約９００ＧＢ／秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、ＨＢＭメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプの５つの同期ランダム・アクセス・メモリ（「ＧＤＤＲ５」：ｇｒａｐｈｉｃｓ  ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ  ｔｙｐｅ  ｆｉｖｅ）などの同期グラフィックス・ランダム・アクセス・メモリ（「ＳＧＲＡＭ」：ｓｙｎｃｈｒｏｎｏｕｓ  ｇｒａｐｈｉｃｓ  ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ）が使用されてもよい。
【０１０１】
少なくとも一実施例では、ＧＰＵ１７０８は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス（「ＡＴＳ」：ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ  ｓｅｒｖｉｃｅｓ）サポートを使用して、ＧＰＵ１７０８が、ＣＰＵ１７０６のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、ＧＰＵ１７０８メモリ管理ユニット（「ＭＭＵ」：ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ）がミスに遭遇したときには、アドレス・トランスレーション要求が、ＣＰＵ１７０６に送信されてもよい。少なくとも一実施例では、それに応答して、ＣＰＵ１７０６は、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをＧＰＵ１７０８に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、ＣＰＵ１７０６とＧＰＵ１７０８の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし、それにより、ＧＰＵ１７０８のプログラミング、及びＧＰＵ１７０８へのアプリケーションの移植を簡単にする。
【０１０２】
少なくとも一実施例では、ＧＰＵ１７０８は、他のプロセッサのメモリへのＧＰＵ１７０８のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
【０１０３】
少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ１７１２を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ１７１２は、ＣＰＵ１７０６もＧＰＵ１７０８も利用可能な（たとえば、ＣＰＵ１７０６とＧＰＵ１７０８の両方に接続された）レベル３（「Ｌ３」）キャッシュを含むことができる。少なくとも一実施例では、キャッシュ１７１２は、キャッシュ・コヒーレンス・プロトコルなど（たとえば、ＭＥＩ、ＭＥＳＩ、ＭＳＩなど）を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、Ｌ３キャッシュは、実施例に応じて４ＭＢ以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
【０１０４】
少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数は、１つ又は複数のアクセラレータ１７１４（たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ）を含んでもよい。少なくとも一実施例では、ＳｏＣ１７０４は、最適化されたハードウェア・アクセラレータ及び／又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ（たとえば、４ＭＢのＳＲＡＭ）は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、ＧＰＵ１７０８を補完し、ＧＰＵ１７０８のいくつかのタスクをオフロードしてもよい（たとえば、他のタスクを実行できるようにＧＰＵ１７０８のサイクルをより多く解放してもよい）。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード（たとえば、知覚、畳み込みニューラル・ネットワーク（「ＣＮＮ」：ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）、再帰ニューラル・ネットワーク（「ＲＮＮ」：ｒｅｃｕｒｒｅｎｔ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）など）のために、アクセラレータ１７１４を使用することができる。少なくとも一実施例では、ＣＮＮは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク（「ＲＣＮＮ」：ｒｅｇｉｏｎａｌ  ｃｏｎｖｏｌｕｔｉｏｎａｌ  ｎｅｕｒａｌ  ｎｅｔｗｏｒｋ）、及び（たとえば、物体検出に使用される）高速ＲＣＮＮ、又は他のタイプのＣＮＮを含んでもよい。
【０１０５】
少なくとも一実施例では、アクセラレータ１７１４（たとえば、ハードウェア加速クラスタ）は、深層学習アクセラレータ（「ＤＬＡ」：ｄｅｅｐ  ｌｅａｒｎｉｎｇ  ａｃｃｅｌｅｒａｔｏｒ）を含んでもよい。ＤＬＡは、限定することなく、１つ又は複数のＴｅｎｓｏｒ処理ユニット（「ＴＰＵ」：Ｔｅｎｓｏｒ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔｓ）を含んでもよく、このユニットは、深層学習アプリケーション及び推論のために、さらに毎秒１０兆の演算を提供するように構成されてもよい。少なくとも一実施例では、ＴＰＵは、画像処理機能（たとえば、ＣＮＮ、ＲＣＮＮなど）を実行するように構成され、そのために最適化されたアクセラレータであってもよい。ＤＬＡはさらに、ニューラル・ネットワーク・タイプと浮動小数点演算の特定のセット、並びに推論のために最適化されてもよい。少なくとも一実施例では、ＤＬＡの設計により、典型的な汎用ＧＰＵよりもミリメートル当たりの性能を向上させることができ、典型的には、ＣＰＵの性能を大いに上回る。少なくとも一実施例では、ＴＰＵは、たとえば特徴と重みの両方のためのＩＮＴ８、ＩＮＴ１６、及びＦＰ１６のデータ型をサポートする単一インスタンスの畳み込み関数、並びに後処理関数を含む、いくつか関数を実行してもよい。少なくとも一実施例では、ＤＬＡは、たとえば、限定することなく、カメラ・センサからのデータを使用した物体識別及び検出のためのＣＮＮ、カメラ・センサからのデータを使用した距離推定のためのＣＮＮ、マイクロフォン１７９６からのデータを使用した緊急車両検出、及び識別、及び検出のためのＣＮＮ、カメラ・センサからのデータを使用した顔認識及び車両所有者識別ためのＣＮＮ、並びに／又はセキュリティ及び／若しくは安全に関するイベントのためのＣＮＮを含め、様々な機能のうちのいずれかのための処理済み若しくは未処理のデータに対して、迅速且つ効率的にニューラル・ネットワーク、特にＣＮＮを実行してもよい。
【０１０６】
少なくとも一実施例では、ＤＬＡは、ＧＰＵ１７０８の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにＤＬＡ又はＧＰＵ１７０８のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、ＣＮＮ及び浮動小数点演算の処理をＤＬＡに集中させ、他の機能をＧＰＵ１７０８及び／又は他のアクセラレータ１７１４に任せてもよい。
【０１０７】
少なくとも一実施例では、アクセラレータ１７１４（たとえば、ハードウェア加速クラスタ）は、プログラマブル・ビジョン・アクセラレータ（「ＰＶＡ」：ｐｒｏｇｒａｍｍａｂｌｅ  ｖｉｓｉｏｎ  ａｃｃｅｌｅｒａｔｏｒ）を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、ＰＶＡは、先進ドライバ支援システム（「ＡＤＡＳ」）１７３８、自律運転、拡張現実（「ＡＲ」：ａｕｇｍｅｎｔｅｄ  ｒｅａｌｉｔｙ）アプリケーション、及び／又は仮想現実（「ＶＲ」：ｖｉｒｔｕａｌ  ｒｅａｌｉｔｙ）アプリケーションのために、コンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成されてもよい。ＰＶＡにより、性能と融通性との均衡が保たれてもよい。たとえば、少なくとも一実施例では、各ＰＶＡは、たとえば限定することなく、任意の数の縮小命令セット・コンピュータ（「ＲＩＳＣ」：ｒｅｄｕｃｅｄ  ｉｎｓｔｒｕｃｔｉｏｎ  ｓｅｔ  ｃｏｍｐｕｔｅｒ）コア、ダイレクト・メモリ・アクセス（「ＤＭＡ」：ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ）、及び／又は任意の数のベクトル・プロセッサを含んでもよい。
【０１０８】
少なくとも一実施例では、ＲＩＳＣコアは、画像センサ（たとえば、本明細書に記載のカメラのうちの任意のカメラの画像センサ）、及び／又は画像信号プロセッサなどと相互作用してもよい。少なくとも一実施例では、ＲＩＳＣコアのそれぞれは、任意の量のメモリを含んでもよい。少なくとも一実施例では、ＲＩＳＣコアは、実施例に応じて複数のプロトコルのうちの任意のものを使用してもよい。少なくとも一実施例では、ＲＩＳＣコアは、リアル・タイム・オペレーティング・システム（「ＲＴＯＳ」：rｅａｌ−ｔｉｍｅ  ｏｐｅｒａｔｉｎｇ  ｓｙｓｔｅｍ）を実行してもよい。少なくとも一実施例では、ＲＩＳＣコアは、１つ又は複数の集積回路デバイス、特定用途向け集積回路（「ＡＳＩＣ」）、及び／又はメモリ・デバイスを使用して実装されてもよい。たとえば、少なくとも一実施例では、ＲＩＳＣコアは、命令キャッシュ及び／又は密結合ＲＡＭを含むことができる。
【０１０９】
少なくとも一実施例では、ＤＭＡは、ＰＶＡの構成要素がＣＰＵ１７０６とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、ＤＭＡは、多次元アドレッシング、及び／又はサーキュラ・アドレッシングを含むがこれらに限定されない、ＰＶＡに最適化を提供するために使用される任意の数の特徴をサポートしてもよい。少なくとも一実施例では、ＤＭＡは、６つ以上のアドレッシング次元までをサポートしてもよく、これには、限定することなく、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び／又は深度ステッピングが含まれてもよい。
【０１１０】
少なくとも一実施例では、ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのためのプログラミングを効率的でフレキシブルに実行するように設計されてもよいプログラム可能なプロセッサとすることができ、信号処理機能を提供する。少なくとも一実施例では、ＰＶＡは、ＰＶＡコアと、２つのベクトル処理サブシステム・パーティションを含んでもよい。少なくとも一実施例では、ＰＶＡコアは、プロセッサ・サブシステム、ＤＭＡエンジン（たとえば２つのＤＭＡエンジン）、及び／又は他の周辺装置を含んでもよい。少なくとも一実施例では、ベクトル処理サブシステムは、ＰＶＡの一次処理エンジンとして動作してもよく、ベクトル処理ユニット（「ＶＰＵ」：ｖｅｃｔｏｒ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）、命令キャッシュ、及び／又はベクトル・メモリ（たとえば、「ＶＭＥＭ」）を含んでもよい。少なくとも一実施例では、ＶＰＵは、たとえば単一命令複数データ（「ＳＩＭＤ」：ｓｉｎｇｌｅ  ｉｎｓｔｒｕｃｔｉｏｎ，  ｍｕｌｔｉｐｌｅ  ｄａｔａ）、超長命令語（「ＶＬＩＷ」：ｖｅｒｙ  ｌｏｎｇ  ｉｎｓｔｒｕｃｔｉｏｎ  ｗｏｒｄ）のデジタル信号プロセッサなどのデジタル信号プロセッサを含んでもよい。少なくとも一実施例では、ＳＩＭＤとＶＬＩＷの組合せによって、スループット及びスピードが改善されてもよい。
【０１１１】
少なくとも一実施例では、それぞれのベクトル・プロセッサは、命令キャッシュを含んでもよく、専用のメモリに結合されてもよい。その結果、少なくとも一実施例では、それぞれのベクトル・プロセッサは、他のベクトル・プロセッサとは無関係に実行されるように構成されてもよい。少なくとも一実施例では、特定のＰＶＡに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成されてもよい。たとえば、少なくとも一実施例では、単一のＰＶＡに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを画像の異なる領域上で実行してもよい。少なくとも一実施例では、特定のＰＶＡに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを同じ画像上で同時に実行してもよく、又はさらには、異なるアルゴリズムを連続した画像上で、若しくは画像の部分上で実行してもよい。少なくとも一実施例では、とりわけ、任意の数のＰＶＡがハードウェア加速クラスタに含まれてもよく、任意の数のベクトル・プロセッサが各ＰＶＡに含まれてもよい。少なくとも一実施例では、ＰＶＡは、システムの全体的な安全性を強化するために、追加のエラー訂正コード（「ＥＣＣ」：Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｏｎ  Ｃｏｄｅ）メモリを含んでもよい。
【０１１２】
少なくとも一実施例では、アクセラレータ１７１４（たとえば、ハードウェア加速クラスタ）は、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ（「ＳＲＡＭ」）を含み、アクセラレータ１７１４のための高帯域幅、低レイテンシのＳＲＡＭを提供してもよい。少なくとも一実施例では、オン・チップ・メモリは、たとえば限定することなく、８つのフィールド設定可能なメモリ・ブロックから成る少なくとも４ＭＢのＳＲＡＭを含んでもよく、これは、ＰＶＡからもＤＬＡからもアクセス可能であってもよい。少なくとも一実施例では、メモリ・ブロックの各対は、アドバンスト・ペリフェラル・バス（「ＡＰＢ」：ａｄｖａｎｃｅｄ  ｐｅｒｉｐｈｅｒａｌ  ｂｕｓ）インターフェース、構成回路、コントローラ、及びマルチプレクサを含んでもよい。少なくとも一実施例では、任意のタイプのメモリが使用されてもよい。少なくとも一実施例では、ＰＶＡ及びＤＬＡは、メモリへの高速アクセスをＰＶＡ及びＤＬＡに提供するバックボーンを介して、メモリにアクセスしてもよい。少なくとも一実施例では、バックボーンは、ＰＶＡ及びＤＬＡを（たとえばＡＰＢを使用して）メモリに相互接続するオン・チップのコンピュータ・ビジョン・ネットワークを含んでもよい。
【０１１３】
少なくとも一実施例では、オン・チップのコンピュータ・ビジョン・ネットワークは、何らかの制御信号／アドレス／データを送信する前に、ＰＶＡとＤＬＡの両方が準備信号及び有効信号を提供することを判定するインターフェースを含んでもよい。少なくとも一実施例では、インターフェースは、制御信号／アドレス／データを送信するための別々の位相及び別々のチャネル、並びに継続的なデータ転送のためのバースト型通信を提供してもよい。少なくとも一実施例では、インターフェースは、国際標準化機構（「ＩＳＯ」：Ｏｒｇａｎｉｚａｔｉｏｎ  ｆｏｒ  Ｓｔａｎｄａｒｄｉｚａｔｉｏｎ）２６２６２又は国際電気標準会議（「ＩＥＣ」：Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ｅｌｅｃｔｒｏｔｅｃｈｎｉｃａｌ  Ｃｏｍｍｉｓｓｉｏｎ）６１５０８の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
【０１１４】
少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数は、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを使用して、物体の（たとえば世界モデル内での）位置及び範囲が迅速且つ効率的に判定されて、ＲＡＤＡＲ信号解釈のため、音伝播合成及び／若しくは分析のため、ＳＯＮＡＲシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び／若しくは他の機能を目的としたＬＩＤＡＲデータとの比較のため、並びに／又は他の使用法のためのリアル・タイムの可視化シミュレーションが生成されてもよい。
【０１１５】
少なくとも一実施例では、アクセラレータ１７１４（たとえば、ハードウェア・アクセラレータ・クラスタ）は、自律運転のための多様な使用法を有する。少なくとも一実施例では、ＰＶＡは、ＡＤＡＳ及び自律車両の主要な処理ステージに使用することができるプログラマブル・ビジョン・アクセラレータであってもよい。少なくとも一実施例では、ＰＶＡの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、ＰＶＡは、低レイテンシ及び低電力の予測可能なラン・タイムを必要とする半稠密（ｓｅｍｉ−ｄｅｎｓｅ）又は稠密な規則的計算に対して、データ・セットが小さくても良好に機能する。少なくとも一実施例では、車両１７００などの自律車両では、従来のコンピュータ・ビジョン・アルゴリズムを実行するようにＰＶＡが設計されるが、これは、それらが、物体検出及び整数数値の演算に有効だからである。
【０１１６】
たとえば、技術の少なくとも一実施例によれば、ＰＶＡを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル３〜５の自律運転のためのアプリケーションは、動き推定／ステレオ・マッチング（たとえば、動きからの構造化、歩行者認識、車線検出など）をオン・ザ・フライで使用する。少なくとも一実施例では、ＰＶＡは、２つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
【０１１７】
少なくとも一実施例では、ＰＶＡを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、ＰＶＡは、未加工のＲＡＤＡＲデータを（たとえば４Ｄの高速フーリエ変換を使用して）処理して、処理済みＲＡＤＡＲデータを提供することができる。少なくとも一実施例では、ＰＶＡは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
【０１１８】
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、ＤＬＡが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性によって、どの検出を誤検出ではなく正検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。たとえば、少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを正検出とみなしてもよい。自動緊急ブレーキ（「ＡＥＢ」：ａｕｔｏｍａｔｉｃ  ｅｍｅｒｇｅｎｃｙ  ｂｒａｋｉｎｇ）が使用される実施例では、誤検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、ＡＥＢのトリガとみなされてもよい。少なくとも一実施例では、ＤＬＡは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、（たとえば別のサブシステムから）取得した地面推定、車両１７００の配向と相関しているＩＭＵセンサ１７６６からの出力、距離、ニューラル・ネットワーク及び／又は他のセンサ（たとえば、ＬＩＤＡＲセンサ１７６４若しくはＲＡＤＡＲセンサ１７６０）から取得した物体の３Ｄロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
【０１１９】
少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数は、データ・ストア１７１６（たとえばメモリ）を含んでもよい。少なくとも一実施例では、データ・ストア１７１６は、ＳｏＣ１７０４のオン・チップ・メモリであってもよく、このメモリは、ＧＰＵ１７０８及び／又はＤＬＡ上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア１７１６の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア１７１６は、Ｌ２又はＬ３のキャッシュを備えてもよい。
【０１２０】
少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数は、任意の数のプロセッサ１７１０（たとえば、組み込みプロセッサ）を含んでもよい。プロセッサ１７１０は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、ＳｏＣ１７０４のブート・シーケンスの一部であってもよく、ラン・タイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、ＳｏＣ１７０４の熱及び温度センサの管理、並びに／又はＳｏＣ１７０４の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装されてもよく、ＳｏＣ１７０４は、リング発振器を使用して、ＣＰＵ１７０６、ＧＰＵ１７０８、及び／又はアクセラレータ１７１４の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、ＳｏＣ１７０４を低電力状態にし、且つ／又は車両１７００を運転手−安全停止モードにしても（たとえば、車両１７００を安全停止させる）よい。
【０１２１】
少なくとも一実施例では、プロセッサ１７１０はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよい。少なくとも一実施例では、オーディオ処理エンジンは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオＩ／Ｏインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用ＲＡＭのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
【０１２２】
少なくとも一実施例では、プロセッサ１７１０はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合ＲＡＭ、サポート周辺装置（たとえば、タイマ、及び割込みコントローラ）、様々なＩ／Ｏコントローラ周辺装置、及びルーティング論理を含んでもよい。
【０１２３】
少なくとも一実施例では、プロセッサ１７１０はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、２つ以上のプロセッサ・コア、密結合ＲＡＭ、サポート周辺装置（たとえば、タイマ、及び割込みコントローラなど）、及び／又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで２つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ１７１０はさらにリアル・タイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアル・タイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ１７１０はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
【０１２４】
少なくとも一実施例では、プロセッサ１７１０は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実装する（たとえばマイクロプロセッサに実装された）処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ１７７０、周囲カメラ１７７４、及び／又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、ＳｏＣ１７０４の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
【０１２５】
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
【０１２６】
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースを合成するために使用されてもよく、ＧＰＵ１７０８は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、ＧＰＵ１７０８の電源が入れられ、アクティブで３Ｄレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してＧＰＵ１７０８をオフロードしてもよい。
【０１２７】
少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数はさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース（「ＭＩＰＩ」：ｍｏｂｉｌｅ  ｉｎｄｕｓｔｒｙ  ｐｒｏｃｅｓｓｏｒ  ｉｎｔｅｒｆａｃｅ）のカメラ直列インターフェース、高速インターフェース、並びに／又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数はさらに、入力／出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないＩ／Ｏ信号を受信するために使用されてもよい。
【０１２８】
少なくとも一実施例では、１つ又は複数のＳｏＣ１７０４はさらに、周辺装置、オーディオ・エンコーダ／デコーダ（「コーデック」）、電力管理、及び／又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。ＳｏＣ１７０４は、（たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット（登録商標）を介して接続された）カメラからのデータ、センサ（たとえば、イーサネット（登録商標）を介して接続されてもよいＬＩＤＡＲセンサ１７６４、ＲＡＤＡＲセンサ１７６０など）からのデータ、バス１７０２からのデータ（たとえば、車両１７００のスピード、ハンドル位置など）、（たとえば、イーサネット（登録商標）又はＣＡＮバスを介して接続された）ＧＮＳＳセンサ１７５８からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、ＳｏＣ１７０４のうちの１つ又は複数はさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のＤＭＡエンジンを含んでもよく、ルーチンのデータ管理タスクからＣＰＵ１７０６を解放するために使用されてもよい。
【０１２９】
少なくとも一実施例では、ＳｏＣ１７０４は、自動化レベル３〜５に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びＡＤＡＳ技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックが、深層学習ツールとともに提供される。少なくとも一実施例では、ＳｏＣ１７０４は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率が高い。たとえば、少なくとも一実施例では、アクセラレータ１７１４は、ＣＰＵ１７０６、ＧＰＵ１７０８、及びデータ・ストア１７１６と組み合わされると、レベル３〜５の自律車両のための高速で効率的なプラットフォームを実現することができる。
【０１３０】
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはＣＰＵ上で実行されてもよく、このアルゴリズムは、Ｃプログラミング言語などの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、ＣＰＵは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのＣＰＵは、車両内のＡＤＡＳアプリケーション及び現実的なレベル３〜５の自律車両において使用される複雑な物体検出アルゴリズムを、リアル・タイムで実行することができない。
【０１３１】
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ／又は順番に実行できるようにし、結果を組み合わせて、レベル３〜５の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、ＤＬＡ又は個別ＧＰＵ（たとえば、ＧＰＵ１７２０）上で実行しているＣＮＮは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を、スーパーコンピュータが読み、理解できるようにする。少なくとも一実施例では、ＤＬＡはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、ＣＰＵコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
【０１３２】
少なくとも一実施例では、レベル３、４、又は５の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意：点滅時は凍結状態」と示される警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、標識自体は、第１の導入済みニューラル・ネットワーク（たとえば、訓練されてきたニューラル・ネットワーク）によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第２の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の（好ましくはＣＰＵコンプレックス上で実行している）経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第３の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在（又は存在しないこと）が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、３つすべてのニューラル・ネットワークが、ＤＬＡ内及び／又はＧＰＵ１７０８上などで同時に実行されてもよい。
【０１３３】
少なくとも一実施例では、顔認識及び車両所有者識別のためのＣＮＮは、カメラ・センサからのデータを使用して、車両１７００の承認済みのドライバ及び／又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者が車両から離れるときには、セキュリティ・モードで車両を使用不可にしてもよい。こうして、ＳｏＣ１７０４は、窃盗及び／又は自動車乗っ取りに対するセキュリティを実現する。
【０１３４】
少なくとも一実施例では、緊急車両の検出及び識別のためのＣＮＮは、マイクロフォン１７９６からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、ＳｏＣ１７０４は、環境及び市街地の音を分類するとともに、視覚データを分類するためにＣＮＮを使用する。少なくとも一実施例では、ＤＬＡ上で実行されるＣＮＮは、緊急車両が近づいてくる相対的なスピードを（たとえばドップラー効果を使用することによって）識別するように訓練される。少なくとも一実施例では、ＣＮＮはまた、ＧＮＳＳセンサ１７５８によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、ＣＮＮは欧州のサイレンを検出しようとし、米国の場合には、北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ／又は緊急車両が通過するまで、超音波センサ１７６２を併用して車両をアイドリングにしてもよい。
【０１３５】
少なくとも一実施例では、車両１７００はＣＰＵ１７１８（たとえば、個別ＣＰＵ又はｄＣＰＵ）を含んでもよく、このＣＰＵは高速相互接続（たとえば、ＰＣＩｅ）を介してＳｏＣ１７０４に結合されてもよい。少なくとも一実施例では、ＣＰＵ１７１８は、たとえばＸ８６プロセッサを含んでもよい。ＣＰＵ１７１８は、たとえば、ＡＤＡＳセンサとＳｏＣ１７０４の間で潜在的に不整合な結果を調停すること、並びに／又はコントローラ１７３６及び／若しくはチップ上のインフォテイメント・システム（「インフォテイメントＳｏＣ」）１７３０の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。
【０１３６】
少なくとも一実施例では、車両１７００はＧＰＵ１７２０（たとえば、個別ＧＰＵ又はｄＧＰＵ）を含んでもよく、このＧＰＵは高速相互接続（たとえば、ＮＶＩＤＩＡのＮＶＬＩＮＫ）を介してＳｏＣ１７０４に結合されてもよい。少なくとも一実施例では、ＧＰＵ１７２０は、冗長な及び／又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両１７００のセンサからの入力（たとえば、センサ・データ）に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び／又は更新するために使用されてもよい。
【０１３７】
少なくとも一実施例では、車両１７００はさらに、ネットワーク・インターフェース１７２４を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ１７２６（たとえば、セルラー・アンテナ、Ｂｌｕｅｔｏｏｔｈアンテナなど、異なる通信プロトコル向けの１つ又は複数のワイヤレス・アンテナ１７２６）を含んでもよい。少なくとも一実施例では、クラウド（たとえば、サーバ及び／又は他のネットワーク・デバイス）、他の車両、及び／又はコンピューティング・デバイス（たとえば、乗員のクライアント・デバイス）とのインターネットを介したワイヤレス接続を可能にするために、ネットワーク・インターフェース１７２４が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両１７０と他の車両との間に直接リンクが確立されてもよく、且つ／又は（たとえば、ネットワークにわたって、且つインターネットを介して）間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。車車間通信リンクは、車両１７００の近傍の車両（たとえば、車両１７００の前方、側方、及び／又は後方の車両）についての情報を車両１７００に提供してもよい。少なくとも一実施例では、前述した機能は、車両１７００の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
【０１３８】
少なくとも一実施例では、ネットワーク・インターフェース１７２４は、変調及び復調の機能を提供し、コントローラ１７３６がワイヤレス・ネットワークを介して通信できるようにするＳｏＣを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース１７２４は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ／又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、ＬＴＥ、ＷＣＤＭＡ（登録商標）、ＵＭＴＳ、ＧＳＭ、ＣＤＭＡ２０００、Ｂｌｕｅｔｏｏｔｈ、Ｂｌｕｅｔｏｏｔｈ  ＬＥ、Ｗｉ−Ｆｉ、Ｚ−Ｗａｖｅ、ＺｉｇＢｅｅ、ＬｏＲａＷＡＮ、及び／又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
【０１３９】
少なくとも一実施例では、車両１７００はさらにデータ・ストア１７２８を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ（たとえばＳｏＣ１７０４上にない）ストレージを含んでもよい。少なくとも一実施例では、データ・ストア１７２８は、ＲＡＭ、ＳＲＡＭ、ダイナミック・ランダム・アクセス・メモリ（「ＤＲＡＭ」）、ビデオ・ランダム・アクセス・メモリ（「ＶＲＡＭ」：ｖｉｄｅｏ  ｒａｎｄｏｍ−ａｃｃｅｓｓ  ｍｅｍｏｒｙ）、フラッシュ、ハード・ディスク、並びに／又は少なくとも１ビットのデータを記憶することができる他の構成要素及び／若しくはデバイスを含む１つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
【０１４０】
少なくとも一実施例では、車両１７００はさらに、マッピング、知覚、占有グリッド生成、及び／又は経路計画の機能を支援するためのＧＮＳＳセンサ１７５８（たとえば、ＧＰＳ及び／又は補助ＧＰＳセンサ）を含んでもよい。少なくとも一実施例では、イーサネット（登録商標）からシリアル（たとえばＲＳ−２３２）へのブリッジを有するＵＳＢコネクタを使用するＧＰＳをたとえば限定することなく含む任意の数のＧＮＳＳセンサ１７５８が使用されてもよい。
【０１４１】
少なくとも一実施例では、車両１７００はさらに、ＲＡＤＡＲセンサ１７６０を含んでもよい。ＲＡＤＡＲセンサ１７６０は、暗闇及び／又は厳しい気象条件の中でも、長距離の車両検出を行うために車両１７００によって使用されてもよい。少なくとも一実施例では、ＲＡＤＡＲの機能的安全性レベルは、ＡＳＩＬ  Ｂであってもよい。ＲＡＤＡＲセンサ１７６０は、制御のために（たとえば、ＲＡＤＡＲセンサ１７６０によって生成されたデータを送信するために）、また物体追跡データにアクセスするために、ＣＡＮ及び／又はバス１７０２を使用してもよく、いくつかの例では、未加工データにアクセスするためにイーサネット（登録商標）にアクセスできる。少なくとも一実施例では、多様なタイプのＲＡＤＡＲセンサが使用されてもよい。たとえば限定することなく、ＲＡＤＡＲセンサ１７６０は、前方、後方、及び側方のＲＡＤＡＲ使用に好適であってもよい。少なくとも一実施例では、ＲＡＤＡＲセンサ１７６０のうちの１つ又は複数は、パルス・ドップラＲＡＤＡＲセンサである。
【０１４２】
少なくとも一実施例では、ＲＡＤＡＲセンサ１７６０は、狭視野の長距離、広視野の短距離、側面を網羅する短距離など、異なる構成を含んでもよい。少なくとも一実施例では、長距離ＲＡＤＡＲは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離ＲＡＤＡＲシステムは、２つ以上の独立した走査によって実現される２５０ｍの範囲内などの広視野を提供してもよい。少なくとも一実施例では、ＲＡＤＡＲセンサ１７６０は、静的物体と移動している物体とを区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにＡＤＡＳシステム１７３８によって使用されてもよい。長距離ＲＡＤＡＲシステムに含まれるセンサ１７６０は、複数の（たとえば６つ以上の）固定ＲＡＤＡＲアンテナ、並びに高速ＣＡＮ及びＦｌｅｘＲａｙインターフェースを有するモノスタティックのマルチモードＲＡＤＡＲを、限定することなく含んでもよい。少なくとも一実施例では、６つのアンテナがある場合、中央の４つのアンテナは、隣接した車線からの干渉が最小の状態で、より高速で車両１７００の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の２つのアンテナは、視野を拡張してもよく、車両１７００の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
【０１４３】
少なくとも一実施例では、中距離ＲＡＤＡＲシステムは、一例として最大１６０ｍ（前方）、又は８０ｍ（後方）の範囲、及び最大４２度（前方）、又は１５０度（後方）の視野を含んでもよい。少なくとも一実施例では、短距離ＲＡＤＡＲシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のＲＡＤＡＲセンサ１７６０を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、ＲＡＤＡＲセンサ・システムは、後方及び車両隣の死角を常に監視する２本のビームを生成してもよい。少なくとも一実施例では、短距離ＲＡＤＡＲシステムは、死角検出及び／又は車線変更支援を行うために、ＡＤＡＳシステム１７３８において使用されてもよい。
【０１４４】
少なくとも一実施例では、車両１７００はさらに、超音波センサ１７６２を含んでもよい。超音波センサ１７６２は、車両１７００の前方、後方、及び／又は側方に配置されてもよく、駐車支援のため、且つ／又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ１７６２が使用されてもよく、異なる検出範囲（たとえば、２．５ｍ、４ｍ）には異なる超音波センサ１７６２が使用されてもよい。少なくとも一実施例では、超音波センサ１７６２は、機能的安全性レベルＡＳＩＬ  Ｂで動作してもよい。
【０１４５】
少なくとも一実施例では、車両１７００は、ＬＩＤＡＲセンサ１７６４を含んでもよい。ＬＩＤＡＲセンサ１７６４は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び／又は他の機能のために使用されてもよい。少なくとも一実施例では、ＬＩＤＡＲセンサ１７６４は、機能的安全性レベルＡＳＩＬ  Ｂであってもよい。少なくとも一実施例では、車両１７００は、複数のＬＩＤＡＲセンサ１７６４（たとえば、２つ、４つ、６つなど）を含んでもよく、これらのセンサは、（たとえばデータをギガビット・イーサネット（登録商標）・スイッチに提供するために）イーサネット（登録商標）を使用してもよい。
【０１４６】
少なくとも一実施例では、ＬＩＤＡＲセンサ１７６４は、３６０度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のＬＩＤＡＲセンサ１７６４は、たとえば宣伝された範囲がおおよそ１００ｍであり、精度が２ｃｍ〜３ｃｍであり、１００Ｍｂｐｓのイーサネット（登録商標）接続をサポートしてもよい。少なくとも一実施例では、１つ又は複数の非突出型ＬＩＤＡＲセンサ１７６４が使用されてもよい。こうした実施例では、ＬＩＤＡＲセンサ１７６４は、車両１７００の前方、後方、側方、及び／又は角に組み込むことができる小さいデバイスとして実装されてもよい。少なくとも一実施例では、こうした実施例のＬＩＤＡＲセンサ１７６４は、最大１２０度の水平視野、及び３５度の垂直視野を、低反射性の物体に対しても２００ｍの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたＬＩＤＡＲセンサ１７６４は、４５度〜１３５度の水平視野をもたらすように構成されてもよい。
【０１４７】
少なくとも一実施例では、３ＤフラッシュＬＩＤＡＲなどのＬＩＤＡＲ技術も使用されてよい。３ＤフラッシュＬＩＤＡＲは、レーザのフラッシュを送信源として使用して、車両１７００の周囲を最大でおおよそ２００ｍまで照射する。少なくとも一実施例では、フラッシュＬＩＤＡＲユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両１７００から物体までの範囲に対応する。少なくとも一実施例では、フラッシュＬＩＤＡＲによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになる。少なくとも一実施例では、４つのフラッシュＬＩＤＡＲが、車両１７００の各側面に１つ導入されてもよい。少なくとも一実施例では、３ＤフラッシュＬＩＤＡＲシステムは、ファン以外に可動部品のない半導体３Ｄ凝視アレイ（ｓｔａｒｉｎｇ  ａｒｒａｙ）のＬＩＤＡＲカメラ（たとえば、非走査型ＬＩＤＡＲデバイス）を、限定することなく含む。少なくとも一実施例では、フラッシュＬＩＤＡＲデバイスは、フレーム当たり５ナノ秒のクラスＩ（目に安全な）レーザ・パルスを使用してもよく、３Ｄ範囲の点群及び位置同期された（ｃｏ−ｒｅｇｉｓｔｅｒｅｄ）強度データの形で反射レーザ光を捕捉してもよい。
【０１４８】
少なくとも一実施例では、車両はさらにＩＭＵセンサ１７６６を含んでもよい。少なくとも一実施例では、ＩＭＵセンサ１７６６は、少なくとも一実施例では、車両１７００の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、ＩＭＵセンサ１７６６は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び／又は他のタイプのセンサを含んでもよい。６軸の用途など少なくとも一実施例では、ＩＭＵセンサ１７６６は限定することなく、加速度計及びジャイロスコープを含んでもよい。９軸の用途など少なくとも一実施例では、ＩＭＵセンサ１７６６は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
【０１４９】
少なくとも一実施例では、ＩＭＵセンサ１７６６は、微小電気機械システム（「ＭＥＭＳ」：ｍｉｃｒｏ−ｅｌｅｃｔｒｏ−ｍｅｃｈａｎｉｃａｌ  ｓｙｓｔｅｍｓ）慣性センサ、高感度ＧＰＳ受信機、及び先進のＫａｌｍａｎフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能ＧＰＳ補強型慣性航法システム（「ＧＰＳ／ＩＮＳ」：ＧＰＳ−Ａｉｄｅｄ  Ｉｎｅｒｔｉａｌ  Ｎａｖｉｇａｔｉｏｎ  Ｓｙｓｔｅｍ）として実装されてもよい。少なくとも一実施例では、ＩＭＵセンサ１７６６により、車両１７００は、速度変化を直接観察しそれをＧＰＳからＩＭＵセンサ１７６６に相関させることによって、磁気センサからの入力を必要とせずに方位を推定できるようになる。少なくとも一実施例では、ＩＭＵセンサ１７６６及びＧＮＳＳセンサ１７５８は、単一の統合ユニットに組み合わされてもよい。
【０１５０】
少なくとも一実施例では、車両１７００は、車両１７００の中及び／又はその周りに設置されたマイクロフォン１７９６を含んでもよい。少なくとも一実施例では、マイクロフォン１７９６は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
【０１５１】
少なくとも一実施例では、車両１７００はさらに、ステレオ・カメラ１７６８、広角カメラ１７７０、赤外線カメラ１７７２、周囲カメラ１７７４、長距離カメラ１７９８、中距離カメラ１７７６、及び／又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両１７００の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、使用されるカメラのタイプは、車両１７００の特徴に応じて異なる。少なくとも一実施例では、車両１７００の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、カメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両１７００は６台のカメラ、７台のカメラ、１０台のカメラ、１２台のカメラ、又は別の数のカメラを含むことができる。カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク（「ＧＭＳＬ」：Ｇｉｇａｂｉｔ  Ｍｕｌｔｉｍｅｄｉａ  Ｓｅｒｉａｌ  Ｌｉｎｋ）及び／又はギガビット・イーサネット（登録商標）をサポートしてもよい。少なくとも一実施例では、各カメラは、図１７Ａ及び図１７Ｂに関して本明細書でさらに詳細に上で説明されている。
【０１５２】
少なくとも一実施例では、車両１７００はさらに、振動センサ１７４２を含んでもよい。振動センサ１７４２は、車軸など、車両１７００の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、２つ以上の振動センサ１７４２が使用される場合には、路面の摩擦又はすべり量を判定するために振動の差が使用されてもよい（たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合）。
【０１５３】
少なくとも一実施例では、車両１７００は、ＡＤＡＳシステム１７３８を含んでもよい。ＡＤＡＳシステム１７３８は、限定することなく、いくつかの例においてＳｏＣを含んでもよい。少なくとも一実施例では、ＡＤＡＳシステム１７３８は、限定することなく、任意の数及び任意の組合せの、自律／アダプティブ／自動のクルーズ・コントロール（「ＡＣＣ」：ａｕｔｏｎｏｍｏｕｓ／ａｄａｐｔｉｖｅ／ａｕｔｏｍａｔｉｃ  ｃｒｕｉｓｅ  ｃｏｎｔｒｏｌ）システム、協調型アダプティブ・クルーズ・コントロール（「ＣＡＣＣ」：ｃｏｏｐｅｒａｔｉｖｅ  ａｄａｐｔｉｖｅ  ｃｒｕｉｓｅ  ｃｏｎｔｒｏｌ）システム、正面衝突警告（「ＦＣＷ」：ｆｏｒｗａｒｄ  ｃｒａｓｈ  ｗａｒｎｉｎｇ）システム、自動緊急ブレーキ（「ＡＥＢ」：ａｕｔｏｍａｔｉｃ  ｅｍｅｒｇｅｎｃｙ  ｂｒａｋｉｎｇ）システム、車線逸脱警告（「ＬＤＷ」：ｌａｎｅ  ｄｅｐａｒｔｕｒｅ  ｗａｒｎｉｎｇ）システム、車線維持支援（「ＬＫＡ」：ｌａｎｅ  ｋｅｅｐ  ａｓｓｉｓｔ）システム、死角警告（「ＢＳＷ」：ｂｌｉｎｄ  ｓｐｏｔ  ｗａｒｎｉｎｇ）システム、後方クロス・トラフィック警告（「ＲＣＴＷ」：ｅａｒ  ｃｒｏｓｓ−ｔｒａｆｆｉｃ  ｗａｒｎｉｎｇ）システム、衝突警告（「ＣＷ」：ｃｏｌｌｉｓｉｏｎ  ｗａｒｎｉｎｇ）システム、車線センタリング（「ＬＣ」：ａｎｅ  ｃｅｎｔｅｒｉｎｇ）システム、並びに／又は他のシステム、特徴、及び／若しくは機能を含んでもよい。
【０１５４】
少なくとも一実施例では、ＡＣＣシステムは、ＲＡＤＡＲセンサ１７６０、ＬＩＤＡＲセンサ１７６４、及び／又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ＡＣＣシステムは、縦方向ＡＣＣシステム及び／又は横方向ＡＣＣシステムを含んでもよい。少なくとも一実施例では、縦方向ＡＣＣシステムは、車両１７００の直前の車両までの距離を監視及び制御し、車両１７００のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ＡＣＣシステムは、距離の維持を実行し、必要なときに車線変更するよう車両１７００に通知する。少なくとも一実施例では、横方向ＡＣＣは、ＬＣ及びＣＷなどの他のＡＤＡＳ用途に関係する。
【０１５５】
少なくとも一実施例では、ＣＡＣＣシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して（たとえばインターネットを介して）、他の車両からネットワーク・インターフェース１７２４及び／又はワイヤレス・アンテナ１７２６により受信されてもよい。少なくとも一実施例では、車車間（「Ｖ２Ｖ」：ｖｅｈｉｃｌｅ−ｔｏ−ｖｅｈｉｃｌｅ）通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間（「Ｉ２Ｖ」：ｉｎｆｒａｓｔｒｕｃｔｕｒｅ−ｔｏ−ｖｅｈｉｃｌｅ）通信リンクによって間接リンクが提供されてもよい。一般に、Ｖ２Ｖ通信の概念は、すぐ前の先行車両（たとえば、車両１７００のすぐ前で同じ車線にいる車両）についての情報を提供し、Ｉ２Ｖ通信の概念は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、ＣＡＣＣシステムは、Ｉ２ＶとＶ２Ｖの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両１７００の前の車両についての情報があれば、ＣＡＣＣシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
【０１５６】
少なくとも一実施例では、ＦＣＷシステムは、危険物に対してドライバに忠告するように設計され、それによりドライバは修正措置を取ることができる。少なくとも一実施例では、ＦＣＷシステムは正面カメラ及び／又はＲＡＤＡＲセンサ１７６０を使用し、これらは、ディスプレイ、スピーカ、及び／又は振動構成要素などのドライバへのフィードバックに電気的に結合されている専用のプロセッサ、ＤＳＰ、ＦＰＧＡ、及び／又はＡＳＩＣに結合されている。少なくとも一実施例では、ＦＣＷシステムは、音、視覚的警告、振動、及び／又はクイック・ブレーキ・パルスなどの形で警告を提供してもよい。
【０１５７】
少なくとも一実施例では、ＡＥＢシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、ＡＥＢシステムは、専用のプロセッサ、ＤＳＰ、ＦＰＧＡ、及び／又はＡＳＩＣに結合された正面カメラ及び／又はＲＡＤＡＲセンサ１７６０を使用してもよい。少なくとも一実施例では、ＡＥＢシステムが危険物を検出したとき、ＡＥＢシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、ＡＥＢシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、ＡＥＢシステムは、ダイナミック・ブレーキ・サポート及び／又は衝突直前ブレーキなどの技法を含んでもよい。
【０１５８】
少なくとも一実施例では、ＬＤＷシステムは、車両１７００が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び／又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることによって意図的な車線逸脱を示す場合には、ＬＤＷシステムは作動しない。少なくとも一実施例では、ＬＤＷシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び／又は振動構成要素などのドライバへのフィードバックに電気的に結合することができる専用のプロセッサ、ＤＳＰ、ＦＰＧＡ、及び／又はＡＳＩＣに結合されている。少なくとも一実施例では、ＬＫＡシステムは、ＬＤＷシステムの変形形態である。ＬＫＡシステムは、車両１７００が車線からはみ出し始めた場合に、車両１７００を修正するように操縦入力又はブレーキ制御を提供する。
【０１５９】
少なくとも一実施例では、ＢＳＷシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、ＢＳＷシステムは、視覚的、聴覚的、及び／又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、ＢＳＷシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、ＢＳＷシステムは、専用のプロセッサ、ＤＳＰ、ＦＰＧＡ、及び／又はＡＳＩＣに結合された背面カメラ及び／又はＲＡＤＡＲセンサ１７６０を使用してもよく、これらの専用のプロセッサ、ＤＳＰ、ＦＰＧＡ、及び／又はＡＳＩＣは、ディスプレイ、スピーカ、及び／又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
【０１６０】
少なくとも一実施例では、ＲＣＴＷシステムは、車両１７００の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び／又は触覚的な通知を提供してもよい。少なくとも一実施例では、ＲＣＴＷシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、ＡＥＢシステムを含む。少なくとも一実施例では、ＲＣＴＷシステムは、１つ又は複数の背面ＲＡＤＡＲセンサ１７６０を使用してもよく、これはディスプレイ、スピーカ、及び／又は振動構成要素などのドライバへのフィードバックに電気的に結合された専用のプロセッサ、ＤＳＰ、ＦＰＧＡ、及び／又はＡＳＩＣに結合されている。
【０１６１】
少なくとも一実施例では、従来のＡＤＡＳシステムは、誤検出結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のＡＤＡＳシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ（たとえば第１のコントローラ１７３６）からの結果に従うか、又は二次コンピュータ（たとえば、第２のコントローラ１７３６）からの結果に従うかどうかを、車両１７００自体が判断する。たとえば、少なくとも一実施例では、ＡＤＡＳシステム１７３８は、バックアップ・コンピュータの合理性モジュールに知覚情報を抵抗するための、バックアップ及び／又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ＡＤＡＳシステム１７３８からの出力は、監視ＭＣＵに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力が矛盾する場合には、監視ＭＣＵが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
【０１６２】
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視ＭＣＵに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視ＭＣＵは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果（たとえば、矛盾）を示す場合には、監視ＭＣＵは、コンピュータ同士を調停して、適切な結果を判定してもよい。
【０１６３】
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータと二次コンピュータからの出力に少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視ＭＣＵが実行するように構成されてもよい。少なくとも一実施例では、監視ＭＣＵのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがＲＡＤＡＲベースのＦＣＷシステムである場合、監視ＭＣＵのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をＦＣＷシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのＬＤＷシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視ＭＣＵのニューラル・ネットワークはＬＤＷを無効にするように学習してもよい。少なくとも一実施例では、監視ＭＣＵは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なＤＬＡ又はＧＰＵのうちの少なくとも１つを含んでもよい。少なくとも一実施例では、監視ＭＣＵは、ＳｏＣ１７０４の構成要素を備えても、且つ／又はその構成要素として含まれてもよい。
【０１６４】
少なくとも一実施例では、ＡＤＡＳシステム１７３８は、コンピュータ・ビジョンの従来のルールを使用してＡＤＡＳ機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、従来のコンピュータ・ビジョン・ルール（ｉｆ−ｔｈｅｎルール）を使用してもよく、ニューラル・ネットワークが監視ＭＣＵに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実装及び意図的な非同一性により、特にソフトウェア（又はソフトウェアとハードウェアのインターフェース）の機能によって生じる誤りに対し、システム全体の誤り耐性が高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に同じ結果を提供する場合には、監視ＭＣＵは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
【０１６５】
少なくとも一実施例では、ＡＤＡＳシステム１７３８の出力は、一次コンピュータの知覚ブロック、及び／又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ＡＤＡＳシステム１７３８が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって誤検出のリスクを低減する独自のニューラル・ネットワークを有してもよい。
【０１６６】
少なくとも一実施例では、車両１７００はさらに、インフォテイメントＳｏＣ１７３０（たとえば、車両内インフォテイメント・システム（ＩＶＩ）：ｉｎ−ｖｅｈｉｃｌｅ  ｉｎｆｏｔａｉｎｍｅｎｔ  ｓｙｓｔｅｍ）を含んでもよい。インフォテイメント・システム１７３０はＳｏＣとして図示及び説明されるが、少なくとも一実施例では、ＳｏＣではなくてもよく、限定することなく２つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントＳｏＣ１７３０は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ（たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど）、ビデオ（たとえば、ＴＶ、映画、ストリーミングなど）、電話（たとえば、ハンズフリー通話）、ネットワーク接続（たとえば、ＬＴＥ、Ｗｉ−Ｆｉなど）、及び／又は情報サービス（たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など）を車両１７００に提供してもよい。たとえば、インフォテイメントＳｏＣ１７３０は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、ＵＳＢ及びＢｌｕｅｔｏｏｔｈ接続、カーピュータ、車内エンタテイメント、Ｗｉ−Ｆｉ、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ（「ＨＵＤ」：ｈｅａｄｓ−ｕｐ  ｄｉｓｐｌａｙ）、ＨＭＩディスプレイ１７３４、テレマテックス・デバイス、（たとえば、様々な構成要素、特徴、及び／若しくはシステムを制御及び／若しくは相互作用するための）制御パネル、並びに／又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントＳｏＣ１７３０を使用して、ＡＤＡＳシステム１７３８からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報（たとえば、交差点情報、車両情報、道路情報など）、及び／又は他の情報などの（たとえば、視覚的及び／又は聴覚的な）情報が、車両のユーザに提供されてもよい。
【０１６７】
少なくとも一実施例では、インフォテイメントＳｏＣ１７３０は、任意の量及びタイプのＧＰＵ機能を含んでもよい。少なくとも一実施例では、インフォテイメントＳｏＣ１７３０は、バス１７０２（たとえば、ＣＡＮバス、イーサネット（登録商標）など）を介して、車両１７００の他のデバイス、システム、及び／又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントＳｏＣ１７３０は監視ＭＣＵに結合されてもよく、それにより、一次コントローラ１７３６（たとえば、車両１７００の一次及び／又はバックアップのコンピュータ）が故障したときに、インフォテイメント・システムのＧＰＵが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントＳｏＣ１７３０は、本明細書に記載するように、車両１７００を運転手−安全停止モードにしてもよい。
【０１６８】
少なくとも一実施例では、車両１７００はさらに、計器クラスタ１７３２（たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど）を含んでもよい。計器クラスタ１７３２は、限定することなく、コントローラ、及び／又はスーパーコンピュータ（たとえば、個別のコントローラ又はスーパーコンピュータ）を含んでもよい。少なくとも一実施例では、計器クラスタ１７３２は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、バーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム（たとえば、エアバッグ）情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計器セットを含んでもよい。いくつかの例では、インフォテイメントＳｏＣ１７３０と計器クラスタ１７３２との間で、情報が表示及び／又は共有されてもよい。少なくとも一実施例では、計器クラスタ１７３２は、インフォテイメントＳｏＣ１７３０の一部として含まれてもよく、又はその逆であってもよい。
【０１６９】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図１７Ｃのシステムにおいて使用されてもよい。
【０１７０】
図１７Ｄは、少なくとも一実施例による、クラウド・ベースのサーバと図１７Ａの自律車両１７００との間で通信するためのシステム１７７６の図である。少なくとも一実施例では、システム１７７６は、限定することなく、サーバ１７７８、ネットワーク１７９０、並びに車両１７００を含む任意の数及びタイプの車両を含んでもよい。サーバ１７７８は、限定することなく、複数のＧＰＵ１７８４（Ａ）〜１７８４（Ｈ）（本明細書ではまとめてＧＰＵ１７８４と呼ぶ）、ＰＣＩｅスイッチ１７８２（Ａ）〜１７８２（Ｄ）（本明細書ではまとめてＰＣＩｅスイッチ１７８２と呼ぶ）、及び／又はＣＰＵ１７８０（Ａ）〜１７８０（Ｂ）（本明細書ではまとめてＣＰＵ１７８０と呼ぶ）を含んでもよい。ＧＰＵ１７８４、ＣＰＵ１７８０、及びＰＣＩｅスイッチ１７８２は、たとえば限定することなく、ＮＶＩＤＩＡにより開発されたＮＶＬｉｎｋインターフェース１７８８、及び／又はＰＣＩｅ接続１７８６などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、ＧＰＵ１７８４同士は、ＮＶＬｉｎｋ及び／又はＮＶＳスイッチＳｏＣを介して接続され、ＧＰＵ１７８４とＰＣＩｅスイッチ１７８２は、ＰＣＩｅ相互接続を介して接続される。少なくとも一実施例では、８個のＧＰＵ１７８４、２個のＣＰＵ１７８０、及び４個のＰＣＩｅスイッチ１７８２が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ１７７８のそれぞれは、限定することなく、任意の数のＧＰＵ１７８４、ＣＰＵ１７８０、及び／又はＰＣＩｅスイッチ１７８２を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ１７７８は、それぞれが８個、１６個、３２個、及び／又はそれ以上のＧＰＵ１７８４を含むことができる。
【０１７１】
少なくとも一実施例では、サーバ１７７８は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク１７９０を介して車両から受信してもよい。少なくとも一実施例では、サーバ１７７８は、ニューラル・ネットワーク１７９２、更新済みニューラル・ネットワーク１７９２、及び／又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報１７９４を、ネットワーク１７９０を介して車両に送信してもよい。少なくとも一実施例では、地図情報１７９４の更新は、建築現場、穴、迂回路、洪水、及び／又は他の障害物に関する情報など、ＨＤマップ１７２２に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク１７９２、更新済みニューラル・ネットワーク１７９２、及び／又は地図情報１７９４は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び／又は経験から得られたものであってもよく、且つ／又は、データ・センタにおいて（たとえば、サーバ１７７８及び／又は他のサーバを使用して）実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
【０１７２】
少なくとも一実施例では、サーバ１７７８を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル（たとえば、ニューラル・ネットワーク）が訓練されてもよい。訓練データは車両によって生成されてもよく、且つ／又はシミュレーションで（たとえば、ゲーム・エンジンを使用して）生成されてもよい。少なくとも一実施例では、（たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には）任意の量の訓練データがタグ付けされ、且つ／又は他の前処理を受ける。少なくとも一実施例では、（たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には）任意の量の訓練データはタグ付け及び／又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく（たとえば、ネットワーク１７９０を介して車両に送信されてもよく、且つ／又は機械学習モデルは、車両を遠隔監視するためにサーバ１７７８によって使用されてもよい。
【０１７３】
少なくとも一実施例では、サーバ１７７８は車両からデータを受信し、リアル・タイムの知的推論ができるように、最新のリアル・タイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ１７７８は、ＮＶＩＤＩＡによって開発されたＤＧＸ及びＤＧＸステーション・マシンなど、ＧＰＵ１７８４によって動く深層学習スーパーコンピュータ及び／又は専用ＡＩコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ１７７８は、ＣＰＵにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
【０１７４】
少なくとも一実施例では、サーバ１７７８の深層学習インフラストラクチャは、高速のリアル・タイムの推論が可能であってもよく、その機能を使用して、車両１７００のプロセッサ、ソフトウェア、及び／又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び／又はその一連の画像において（たとえば、コンピュータ・ビジョン及び／又は他の機械学習の物体分類技法により）車両１７００が位置特定した物体など、周期的な更新を車両１７００から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両１７００によって識別された物体と比較してもよく、結果が一致せず、車両１７００のＡＩが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ１７７８は、車両１７００のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両１７００に送信してもよい。
【０１７５】
少なくとも一実施例では、サーバ１７７８は、ＧＰＵ１７８４、及び１つ又は複数のプログラム可能な推論アクセラレータ（たとえば、ＮＶＩＤＩＡのＴｅｎｓｏｒＲＴ３）を含んでもよい。少なくとも一実施例では、ＧＰＵにより動くサーバと、推論の加速とを組み合わせることによって、リアル・タイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、ＣＰＵ、ＦＰＧＡ、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、１つ又は複数の実施例を実行するために、ハードウェア構造体１４１５が使用される。ハードウェア構造体１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。
【０１７６】
コンピュータ・システム
図１８は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ（ＳｏＣ）、又はこれらの何らかの組合せ１８００を有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム１８００は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ１８００などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム１８００は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なＰＥＮＴＩＵＭ（登録商標）プロセッサ・ファミリー、ＸｅｏｎＴＭ、Ｉｔａｎｉｕｍ（登録商標）、ＸＳｃａｌｅＴＭ及び／又はＳｔｒｏｎｇＡＲＭＴＭ、Ｉｎｔｅｌ（登録商標）Ｃｏｒｅ（商標）、又はＩｎｔｅｌ（登録商標）Ｎｅｒｖａｎａ（商標）マイクロプロセッサなどのプロセッサを含んでもよいが、（他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するＰＣを含め）他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム１８００は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なＷＩＮＤＯＷＳ（登録商標）のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム（たとえば、ＵＮＩＸ（登録商標）及びＬｉｎｕｘ）、組み込みソフトウェア、及び／又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
【０１７７】
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント（「ＰＤＡ」：ｐｅｒｓｏｎａｌ  ｄｉｇｉｔａｌ  ａｓｓｉｓｔａｎｔｓ）、及び携帯型ＰＣを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ（「ＤＳＰ」：ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、システム・オン・チップ、ネットワーク・コンピュータ（「ＮｅｔＰＣ」：ｎｅｔｗｏｒｋ  ｃｏｍｐｕｔｅｒｓ）、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク（「ＷＡＮ」：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）スイッチ、又は少なくとも一実施例による１つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
【０１７８】
少なくとも一実施例では、コンピュータ・システム１８００は、限定することなくプロセッサ１８０２を含んでもよく、このプロセッサ１８０２は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び／又は推論を実行するための１つ又は複数の実行ユニット１８０８を含んでもよい。少なくとも一実施例では、システム１８は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、システム１８はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ１８０２は、限定することなく、複合命令セット・コンピュータ（「ＣＩＳＣ」：complex instruction set computer）マイクロプロセッサ、縮小命令セット・コンピューティング（「ＲＩＳＣ」）マイクロプロセッサ、超長命令語（「ＶＬＩＷ」）マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ１８０２は、プロセッサ・バス１８１０に結合されてもよく、このプロセッサ・バスは、プロセッサ１８０２とコンピュータ・システム１８００内の他の構成要素との間でデジタル信号を送信してもよい。
【０１７９】
少なくとも一実施例では、プロセッサ１８０２は、限定することなく、レベル１（「Ｌ１」）の内部キャッシュ・メモリ（「キャッシュ」）１８０４を含んでもよい。少なくとも一実施例では、プロセッサ１８０２は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ１８０２の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル１８０６は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
【０１８０】
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット１８０８も、プロセッサ１８０２にある。プロセッサ１８０２は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード（「ｕコード」）読取り専用メモリ（「ＲＯＭ」：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）も含んでよい。少なくとも一実施例では、実行ユニット１８０８は、パック命令セット１８０９に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット１８０９を、命令を実行する関連回路とともに汎用プロセッサ１８０２の命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ１８０２のパック・データを使用して実行することができる。１つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、１度に１つのデータ要素に対して１つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
【０１８１】
少なくとも一実施例では、実行ユニット１８０８はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、ＤＳＰ、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム１８００は、限定することなくメモリ１８２０を含んでもよい。少なくとも一実施例では、メモリ１８２０は、ダイナミック・ランダム・アクセス・メモリ（「ＤＲＡＭ」）デバイス、スタティック・ランダム・アクセス・メモリ（「ＳＲＡＭ」）デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。メモリ１８２０は、プロセッサ１８０２によって実行されてもよいデータ信号によって表される命令１８１９、及び／又はデータ１８２１を記憶してもよい。
【０１８２】
少なくとも一実施例では、システム論理チップが、プロセッサ・バス１８１０及びメモリ１８２０に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ（「ＭＣＨ」：ｍｅｍｏｒｙ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ）１８１６を含んでもよく、プロセッサ１８０２は、プロセッサ・バス１８１０を介してＭＣＨと通信してもよい。少なくとも一実施例では、ＭＣＨ１８１６は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路１８１８をメモリ１８２０に提供してもよい。少なくとも一実施例では、ＭＣＨ１８１６は、プロセッサ１８０２と、メモリ１８２０と、コンピュータ・システム１８００の他の構成要素との間でデータ信号を導き、プロセッサ・バス１８１０と、メモリ１８２０と、システムＩ／Ｏ１８２２との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、ＭＣＨ１８１６は、高帯域幅メモリ経路１８１８を介してメモリ１８２０に結合されてもよく、グラフィックス／ビデオカード１８１２は、アクセラレーテッド・グラフィックス・ポート（「ＡＧＰ」：Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）相互接続１８１４を介してＭＣＨ１８１６に結合されてもよい。
【０１８３】
少なくとも一実施例では、コンピュータ・システム１８００は、ＭＣＨ１８１６をＩ／Ｏコントローラ・ハブ（「ＩＣＨ」：Ｉ／Ｏ  ｃｏｎｔｒｏｌｌｅｒ  ｈｕｂ）１８３０に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムＩ／Ｏ１８２２を使用してもよい。少なくとも一実施例では、ＩＣＨ１８３０は、ローカルのＩ／Ｏバスを介していくつかのＩ／Ｏデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルＩ／Ｏバスは、周辺装置をメモリ１８２０、チップセット、及びプロセッサ１８０２に接続するための高速Ｉ／Ｏバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ１８２９、ファームウェア・ハブ（「フラッシュＢＩＯＳ」）１８２８、ワイヤレス・トランシーバ１８２６、データ・ストレージ１８２４、ユーザ入力及びキーボードのインターフェースを含むレガシーＩ／Ｏコントローラ１８２３、ユニバーサル・シリアル・バス（「ＵＳＢ」：Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などのシリアル拡張ポート１８２７、及びネットワーク・コントローラ１８３４が、限定することなく含まれてもよい。データ・ストレージ１８２４は、ハード・ディスク・ドライブ、フロッピー（登録商標）・ディスク・ドライブ、ＣＤ−ＲＯＭデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
【０１８４】
少なくとも一実施例では、図１８は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図１８は例示的なシステム・オン・チップ（「ＳｏＣ」）を示してもよい。少なくとも一実施例では、図ｃｃで示すデバイスは、プロプライエタリ相互接続、標準相互接続（たとえば、ＰＣＩｅ）、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム１８００の１つ又は複数の構成要素は、コンピュート・エクスプレス・リンク（ＣＸＬ：ｃｏｍｐｕｔｅ  ｅｘｐｒｅｓｓ  ｌｉｎｋ）相互接続を使用して相互接続されてもよい。
【０１８５】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図１８のシステムにおいて使用されてもよい。
【０１８６】
一実施例では、電子デバイス１９００は、自動ピッキング・システム又は自動フォークリフトの動作を制御するロボット制御システムであってもよい。一実施例では、電子デバイス１９００は、ロボットのグリッパ、爪、又は手を作動させる１つ又は複数のサーボ・モータ・コントローラを含んでもよい。
【０１８７】
図１９は、少なくとも一実施例による、プロセッサ１９１０を利用するための電子デバイス１９００を示すブロック図である。少なくとも一実施例では、電子デバイス１９００は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
【０１８８】
少なくとも一実施例では、システム１９００は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ１９１０を、限定することなく含んでもよい。少なくとも一実施例では、Ｉ２Ｃバス、システム・マネージメント・バス（「ＳＭＢｕｓ」：Ｓｙｓｔｅｍ  Ｍａｎａｇｅｍｅｎｔ  Ｂｕｓ）、ロー・ピン・カウント（ＬＰＣ：Ｌｏｗ  Ｐｉｎ  Ｃｏｕｎｔ）バス、シリアル・ペリフェラル・インターフェース（「ＳＰＩ」：Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）、ハイ・デフィニション・オーディオ（「ＨＤＡ」：Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ａｕｄｉｏ）バス、シリアル・アドバンス・テクノロジー・アタッチメント（「ＳＡＴＡ」：Ｓｅｒｉａｌ  Ａｄｖａｎｃｅ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）バス、ユニバーサル・シリアル・バス（「ＵＳＢ」）（バージョン１、２、３）、又はユニバーサル非同期レシーバ／トランスミッタ（「ＵＡＲＴ」：Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）バスなどのバス若しくはインターフェースを使用して結合されるプロセッサ１９１０。少なくとも一実施例では、図１９は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図１９は例示的なシステム・オン・チップ（「ＳｏＣ」）を示してもよい。少なくとも一実施例では、図１９に示すデバイスは、プロプライエタリ相互接続、標準相互接続（たとえば、ＰＣＩｅ）、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図１９の１つ又は複数の構成要素は、コンピュート・エクスプレス・リンク（ＣＸＬ）相互接続を使用して相互接続されてもよい。
【０１８９】
少なくとも一実施例では、図１９は、ディスプレイ１９２４、タッチ画面１９２５、タッチ・パッド１９３０、近距離無線通信ユニット（「ＮＦＣ」：Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ  ｕｎｉｔ）１９４５、センサ・ハブ１９４０、熱センサ１９４６、エクスプレス・チップセット（「ＥＣ」：Ｅｘｐｒｅｓｓ  Ｃｈｉｐｓｅｔ）１９３５、トラステッド・プラットフォーム・モジュール（「ＴＰＭ」：Ｔｒｕｓｔｅｄ  Ｐｌａｔｆｏｒｍ  Ｍｏｄｕｌｅ）１９３８、ＢＩＯＳ／ファームウェア／フラッシュ・メモリ（「ＢＩＯＳ、ＦＷフラッシュ」：ＢＩＯＳ／ｆｉｒｍｗａｒｅ／ｆｌａｓｈ  ｍｅｍｏｒｙ）１９２２、ＤＳＰ１９６０、ソリッド・ステート・ディスク（「ＳＳＤ」：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）若しくはハード・ディスク・ドライブ（「ＨＤＤ」：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などのドライブ１９２０、ワイヤレス・ローカル・エリア・ネットワーク・ユニット（「ＷＬＡＮ」：ｗｉｒｅｌｅｓｓ  ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ  ｕｎｉｔ）１９５０、Ｂｌｕｅｔｏｏｔｈユニット１９５２、ワイヤレス広域ネットワーク・ユニット（「ＷＷＡＮ」：Ｗｉｒｅｌｅｓｓ  Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ  ｕｎｉｔ）１９５６、全地球測位システム（ＧＰＳ：Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）１９５５、ＵＳＢ３．０カメラなどのカメラ（「ＵＳＢ３．０カメラ」）１９５４、又は、たとえばＬＰＤＤＲ３規格に実装された低電力ダブル・データ・レート（「ＬＰＤＤＲ」：Ｌｏｗ  Ｐｏｗｅｒ  Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリ・ユニット（「ＬＰＤＤＲ３」）１９１５を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
【０１９０】
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ１９１０に通信可能に結合されてもよい。少なくとも一実施例では、加速度計１９４１、周囲光センサ（「ＡＬＳ」：Ａｍｂｉｅｎｔ  Ｌｉｇｈｔ  Ｓｅｎｓｏｒ）１９４２、コンパス１９４３、及びジャイロスコープ１９４４が、センサ・ハブ１９４０に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ１９３９、ファン１９３７、キーボード１９４６、及びタッチ・パッド１９３０が、ＥＣ１９３５に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ１９６３、ヘッドフォン１９６４、及びマイクロフォン（「ｍｉｃ」）１９６５が、オーディオ・ユニット（オーディオ・コーデック及びクラスｄアンプ）１９６２に通信可能に結合されてもよく、このオーディオ・ユニットが、ＤＳＰ１９６０に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット１９６４は、たとえば限定することなく、オーディオ・コーダ／デコーダ（「コーデック」）及びクラスＤアンプリファイアを含んでもよい。少なくとも一実施例では、ＳＩＭカード（「ＳＩＭ」）１９５７は、ＷＷＡＮユニット１９５６に通信可能に結合されてもよい。少なくとも一実施例では、ＷＬＡＮユニット１９５０及びＢｌｕｅｔｏｏｔｈユニット１９５２などの構成要素、並びにＷＷＡＮ１９５６は、次世代フォーム・ファクタ（「ＮＧＦＦ」：Ｎｅｘｔ  Ｇｅｎｅｒａｔｉｏｎ  Ｆｏｒｍ  Ｆａｃｔｏｒ）に実装されてもよい。
【０１９１】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図１９のシステムにおいて使用されてもよい。
【０１９２】
図２０は、少なくとも一実施例による、コンピュータ・システム２０００を示す。少なくとも一実施例では、コンピュータ・システム２０００は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
【０１９３】
少なくとも一実施例では、コンピュータ・システム２０００は、限定することなく、少なくとも１つの中央処理装置（「ＣＰＵ」）２００２を含み、この処理装置は、ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（「ペリフェラル・コンポーネント・インターコネクト」）、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（「ＰＣＩ−Ｅｘｐｒｅｓｓ」：ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）、ＡＧＰ：Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ（「アクセラレーテッド・グラフィックス・ポート」）、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス２０１０に接続される。少なくとも一実施例では、コンピュータ・システム２０００は、メイン・メモリ２００４、及び（たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される）制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ（「ＲＡＭ」：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）の形をとってもよいメイン・メモリ２００４に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム（「ネットワーク・インターフェース」）２０２２は、他のシステムからデータを受信し、コンピュータ・システム２０００から他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
【０１９４】
少なくとも一実施例では、コンピュータ・システム２０００は、限定することなく、入力デバイス２００８、パラレル処理システム２０１２、及びディスプレイ・デバイス２００６を含み、このディスプレイ・デバイスは、従来の陰極線管（「ＣＲＴ」：ｃａｔｈｏｄｅ  ｒａｙ  ｔｕｂｅ）、液晶ディスプレイ（「ＬＣＤ」：ｌｉｑｕｉｄ  ｃｒｙｓｔａｌ  ｄｉｓｐｌａｙ）、発光ダイオード（「ＬＥＤ」：ｌｉｇｈｔ  ｅｍｉｔｔｉｎｇ  ｄｉｏｄｅ）、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス２００８から受け取る。少なくとも一実施例では、上記モジュールのそれぞれを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
【０１９５】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図２０のシステムにおいて使用されてもよい。
【０１９６】
図２１は、少なくとも一実施例によるコンピュータ・システム２１００を示す。少なくとも一実施例では、コンピュータ・システム２１００は、限定することなく、コンピュータ２１１０及びＵＳＢスティック２１２０を含んでもよい。少なくとも一実施例では、コンピュータ・システム２１１０は、限定することなく、任意の数及びタイプのプロセッサ（図示せず）、並びにメモリを含んでもよい。少なくとも一実施例では、コンピュータ２１１０は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
【０１９７】
少なくとも一実施例では、ＵＳＢスティック２１２０は、限定することなく、処理ユニット２１３０、ＵＳＢインターフェース２１４０、及びＵＳＢインターフェース論理２１５０を含む。少なくとも一実施例では、処理ユニット２１３０は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット２１３０は、限定することなく、任意の数及びタイプの処理コア（図示せず）を含んでもよい。少なくとも一実施例では、処理コア２１３０は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路（「ＡＳＩＣ」）を備える。たとえば、少なくとも一実施例では、処理コア２１３０は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット（「ＴＰＣ」：ｔｅｎｓｏｒ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）である。少なくとも一実施例では、処理コア２１３０は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット（「ＶＰＵ」）である。
【０１９８】
少なくとも一実施例では、ＵＳＢインターフェース２１４０は、任意のタイプのＵＳＢコネクタ又はＵＳＢソケットであってもよい。たとえば、少なくとも一実施例では、ＵＳＢインターフェース２１４０は、データ及び電源用のＵＳＢ３．０  Ｔｙｐｅ−Ｃのソケットである。少なくとも一実施例では、ＵＳＢインターフェース２１４０は、ＵＳＢ３．０  Ｔｙｐｅ−Ａのコネクタである。少なくとも一実施例では、ＵＳＢインターフェース論理２１５０は、処理ユニット２１３０がＵＳＢコネクタ２１４０を介してデバイス（たとえばコンピュータ２１１０）と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
【０１９９】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図２１のシステムにおいて使用されてもよい。
【０２００】
図２２は、本明細書に記載の様々な実施例による、１つ又は複数のＩＰコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ／コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
【０２０１】
図２２は、少なくとも一実施例による１つ又は複数のＩＰコアを使用して作製することができる例示的なシステム・オン・チップ集積回路２２００を示すブロック図である。少なくとも一実施例では、集積回路２２００は、１つ又は複数のアプリケーション・プロセッサ２２０５（たとえば、ＣＰＵ）、少なくとも１つのグラフィックス・プロセッサ２２１０を含み、さらに、画像プロセッサ２２１５及び／又はビデオ・プロセッサ２２２０を含んでもよく、これらのいずれもが、モジュール式ＩＰコアであってもよい。少なくとも一実施例では、集積回路２２００は、ＵＳＢコントローラ２２２５、ＵＡＲＴコントローラ２２３０、ＳＰＩ／ＳＤＩＯコントローラ２２３５、及びＩ．ｓｕｐ．２Ｓ／Ｉ．ｓｕｐ．２Ｃコントローラ２２４０を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路２２００は、ハイ・デフィニション・マルチメディア・インターフェース（ＨＤＭＩ：ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ  ｍｕｌｔｉｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ（登録商標））コントローラ２２５０及びモバイル・インダストリ・プロセッサ・インターフェース（ＭＩＰＩ）ディスプレイ・インターフェース２２５５のうちの１つ又は複数に結合されるディスプレイ・デバイス２２４５を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム２２６０によって、ストレージが提供されてもよい。少なくとも一実施例では、ＳＤＲＡＭ又はＳＲＡＭメモリ・デバイスにアクセスするために、メモリ・コントローラ２２６５を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン２２７０を含む。
【０２０２】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路２２００において使用されてもよい。
【０２０３】
図２３Ａ〜図２３Ｂは、本明細書に記載の様々実施例による、１つ又は複数のＩＰコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ／コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
【０２０４】
図２３Ａ〜図２３Ｂは、本明細書に記載の実施例によるＳｏＣ内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図２３Ａは、少なくとも一実施例による１つ又は複数のＩＰコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ２３１０を示す。図２３Ｂは、少なくとも一実施例による１つ又は複数のＩＰコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ２３４０を示す。少なくとも一実施例では、図２３Ａのグラフィックス・プロセッサ２３１０は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図２３Ｂのグラフィックス・プロセッサ２３４０は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ２３１０、２３４０のそれぞれは、図２２のグラフィックス・プロセッサ２２１０の変形形態とすることができる。
【０２０５】
少なくとも一実施例では、グラフィックス・プロセッサ２３１０は、頂点プロセッサ２３０５と、１つ又は複数のフラグメント・プロセッサ２３１５Ａ〜２３１５Ｎ（たとえば、２３１５Ａ、２３１５Ｂ、２３１５Ｃ、２３１５Ｄ〜２３１５Ｎ−１、及び２３１５Ｎ）とを含む。少なくとも一実施例では、グラフィックス・プロセッサ２３１０は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ２３０５は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、１つ又は複数のフラグメント・プロセッサ２３１５Ａ〜２３１５Ｎは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント（たとえば、ピクセル）シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ２３０５は、３Ｄグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ２３１５Ａ〜２３１５Ｎは、頂点プロセッサ２３０５によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ２３１５Ａ〜２３１５Ｎは、ＯｐｅｎＧＬのＡＰＩにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、ＯｐｅｎＧＬのＡＰＩは、Ｄｉｒｅｃｔ  ３Ｄ  ＡＰＩにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
【０２０６】
少なくとも一実施例では、グラフィックス・プロセッサ２３１０はさらに、１つ又は複数のメモリ管理ユニット（ＭＭＵ）２３２０Ａ〜２３２０Ｂ、キャッシュ２３２５Ａ〜２３２５Ｂ、及び回路相互接続２３３０Ａ〜２３３０Ｂを含む。少なくとも一実施例では、１つ又は複数のＭＭＵ２３２０Ａ〜２３２０Ｂは、頂点プロセッサ２３０５及び／又はフラグメント・プロセッサ２３１５Ａ〜２３１５Ｎを含め、グラフィックス・プロセッサ２３１０のための仮想から物理のアドレス・マッピングを提供し、それらは、１つ又は複数のキャッシュ２３２５Ａ〜２３２５Ｂに記憶された頂点又は画像／テクスチャのデータに加えて、メモリに記憶された頂点又は画像／テキストのデータを参照してもよい。少なくとも一実施例では、１つ又は複数のＭＭＵ２３２０Ａ〜２３２０Ｂは、図２５の１つ若しくは複数のアプリケーション・プロセッサ２２０５、画像プロセッサ２２１５、及び／又はビデオ・プロセッサ２２２０に関連付けられた１つ若しくは複数のＭＭＵを含む、システム内の他のＭＭＵと同期されてもよく、それにより各プロセッサ２２０５〜２２２０は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、１つ又は複数の回路相互接続２３３０Ａ〜２３３０Ｂは、グラフィックス・プロセッサ２３１０が、ＳｏＣの内部バスを介して、又は直接接続を介して、ＳｏＣ内の他のＩＰコアとインターフェースをとることができるようにする。
【０２０７】
少なくとも一実施例では、グラフィックス・プロセッサ２３４０は、図２３Ａのグラフィックス・プロセッサ２３１０の１つ又は複数のＭＭＵ２３２０Ａ〜２３２０Ｂ、キャッシュ２３２５Ａ〜２３２５Ｂ、及び回路相互接続２３３０Ａ〜２３３０Ｂを含む。少なくとも一実施例では、グラフィックス・プロセッサ２３４０は、１つ又は複数のシェーダ・コア２３５５Ａ〜２３５５Ｎ（たとえば、２３５５Ａ、２３５５Ｂ、２３５５Ｃ、２３５５Ｄ、２３５５Ｅ、２３５５Ｆ〜２３５５Ｎ−１、及び２３５５Ｎ）を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び／又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ２３４０は、１つ又は複数のシェーダ・コア２３５５Ａ〜２３５５Ｎに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ２３４５と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット２３５８とを含む。
【０２０８】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路２３Ａ及び／又は２３Ｂにおいて使用されてもよい。
【０２０９】
図２４Ａ〜図２４Ｂは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図２４Ａは、少なくとも一実施例では図２２のグラフィックス・プロセッサ２２１０に含めることができるグラフィックス・コア２４００を示し、少なくとも一実施例では図２３Ｂのように、統合されたシェーダ・コア２３５５Ａ〜２３５５Ｎであってもよい。図２４Ｂは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット２４３０を示す。
【０２１０】
一実施例では、グラフィックス・コア２４００は、共有命令キャッシュ２４０２、テクスチャ・ユニット２４１８、及びキャッシュ／共有メモリ２４２０を含み、これらは、グラフィックス・コア２４００内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア２４００は、コアごとに複数のスライス２４０１Ａ〜２４０１Ｎ、又はパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア２４００の複数のインスタンスを含むことができる。スライス２４０１Ａ〜２４０１Ｎは、論理命令キャッシュ２４０４Ａ〜２４０４Ｎ、スレッド・スケジューラ２４０６Ａ〜２４０６Ｎ、スレッド・ディスパッチャ２４０８Ａ〜２４０８Ｎ、及びレジスタのセット２４１０Ａ〜２４１０Ｎを含むサポート論理を含むことができる。一実施例では、スライス２４０１Ａ〜２４０１Ｎは、追加機能ユニット（ＡＦＵ：ａｄｄｉｔｉｏｎａｌ  ｆｕｎｃｔｉｏｎ  ｕｎｉｔ２４１２Ａ〜２４１２Ｎ）、浮動小数点ユニット（ＦＰＵ：ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ  ｕｎｉｔ２４１４Ａ〜２４１４Ｎ）、整数算術論理演算ユニット（ＡＬＵ２４１６〜２４１６Ｎ）、アドレス計算ユニット（ＡＣＬ２４１３Ａ〜２４１３Ｎ）、倍精度浮動小数点ユニット（ＤＰＦＰＵ：ｄｏｕｂｌｅ−ｐｒｅｃｉｓｉｏｎ  ｆｌｏａｔｉｎｇ−ｐｏｉｎｔ  ｕｎｉｔ２４１５Ａ〜２４１５Ｎ）、及び行列処理ユニット（ＭＰＵ２４１７Ａ〜２４１７Ｎ）のセットを含むことができる。
【０２１１】
一実施例では、ＦＰＵ２４１４Ａ〜２４１４Ｎは、単精度（３２ビット）及び半精度（１６ビット）の浮動小数点演算を実行することができ、ＤＰＦＰＵ２４１５Ａ〜２４１５Ｎは、倍精度（６４ビット）の浮動小数点演算を実行する。一実施例では、ＡＬＵ２４１６Ａ〜２４１６Ｎは、８ビット、１６ビット、及び３２ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。一実施例では、ＭＰＵ２４１７Ａ〜２４１７Ｎも、半精度浮動小数点及び８ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。一実施例では、ＭＰＵ２４１７Ａ〜２４１７Ｎは、汎用行列−行列乗算（ＧＥＭＭ：ｇｅｎｅｒａｌ  ｍａｔｒｉｘ  ｔｏ  ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｉｃａｔｉｏｎ）の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。一実施例では、ＡＦＵ２４１２Ａ〜２４１２Ｎは、三角関数演算（たとえば、サイン、コサインなど）を含む、浮動小数点又は整数の単位にサポートされていない追加の論理演算を実行することができる。
【０２１２】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア２４００において使用されてもよい。
【０２１３】
図２４Ｂは、汎用処理ユニット（ＧＰＧＰＵ：ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ２４３０）を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列のコンピュート動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、ＧＰＧＰＵ２４３０は、ＧＰＧＰＵ２４３０の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のＧＰＵクラスタを生成することができる。少なくとも一実施例では、ＧＰＧＰＵ２４３０は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース２４３２を含む。少なくとも一実施例では、ホスト・インターフェース２４３２は、ＰＣＩ  Ｅｘｐｒｅｓｓインターフェースである。少なくとも一実施例では、ホスト・インターフェース２４３２は、２４３２は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、ＧＰＧＰＵ２４３０は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ２４３４を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ２４３６Ａ〜２４３６Ｈのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ２４３６Ａ〜２４３６Ｈは、キャッシュ・メモリ２４３８を共有する。少なくとも一実施例では、キャッシュ・メモリ２４３８は、コンピュート・クラスタ２４３６Ａ〜２４３６Ｈ内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
【０２１４】
少なくとも一実施例では、ＧＰＧＰＵ２４３０は、メモリ・コントローラ２４４２Ａ〜２４４２Ｂのセットを介して、コンピュート・クラスタ２４３６Ａ〜２４３６Ｈに結合されたメモリ２４４４Ａ〜２４４４Ｂを含む。少なくとも一実施例では、メモリ２４４４Ａ〜２４４４Ｂは、グラフィックス・ダブル・データ・レート（ＧＤＤＲ: ｇｒａｐｈｉｃｓ  ｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ）メモリを含む同期グラフィックス・ランダム・アクセス・メモリ（ＳＧＲＡＭ）など、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
【０２１５】
少なくとも一実施例では、コンピュート・クラスタ２４３６Ａ〜２４３６Ｈはそれぞれ、図２４Ａのグラフィックス・コア２４００などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ２４３６Ａ〜２４３６Ｈのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、１６ビット又は３２ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、６４ビットの浮動小数点演算を実行するように構成されることが可能である。
【０２１６】
少なくとも一実施例では、ＧＰＧＰＵ２４３０の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ２４３６Ａ〜２４３６Ｈにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、ＧＰＧＰＵ２４３０の複数のインスタンスは、ホスト・インターフェース２４３２を介して通信する。少なくとも一実施例では、ＧＰＧＰＵ２４３０は、Ｉ／Ｏハブ２４３９を含み、このハブは、ＧＰＧＰＵ２４３０の他のインスタンスへの直接接続を可能にするＧＰＵリンク２４４０に、ＧＰＧＰＵ２４３０を結合する。少なくとも一実施例では、ＧＰＵリンク２４４０は、ＧＰＧＰＵ２４３０の複数のインスタンス間での通信及び同期を可能にするＧＰＵからＧＰＵへの専用のブリッジに結合される。少なくとも一実施例では、ＧＰＵリンク２４４０は、他のＧＰＧＰＵ又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、ＧＰＧＰＵ２４３０の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース２４３２を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、ＧＰＵリンク２４４０は、ホスト・インターフェース２４３２に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
【０２１７】
少なくとも一実施例では、ＧＰＧＰＵ２４３０は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、ＧＰＧＰＵ２４３０は、推論プラットフォーム内で使用することができる。ＧＰＧＰＵ２４３０が推論のために使用される少なくとも一実施例では、ＧＰＧＰＵは、ＧＰＧＰＵがニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ２４３６Ａ〜２４３６Ｈを含んでもよい。少なくとも一実施例では、メモリ２４４４Ａ〜２４４４Ｂに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、ＧＰＧＰＵ２４３０の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、１つ又は複数の８ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
【０２１８】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにＧＰＧＰＵ２４３０おいて使用されてもよい。
【０２１９】
図２５は、少なくとも一実施例によるコンピューティング・システム２５００を示すブロック図である。少なくとも一実施例では、コンピューティング・システム２５００は、メモリ・ハブ２５０５を含んでもよい相互接続経路を介して通信する１つ又は複数のプロセッサ２５０２とシステム・メモリ２５０４とを有する処理サブシステム２５０１を含む。少なくとも一実施例では、メモリ・ハブ２５０５は、チップセット構成要素内の別個の構成要素であってもよく、又は１つ若しくは複数のプロセッサ２５０２内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ２５０５は、通信リンク２５０６を介してＩ／Ｏサブシステム２５１１に結合される。少なくとも一実施例では、Ｉ／Ｏサブシステム２５１１は、コンピューティング・システム２５００が１つ又は複数の入力デバイス２５０８からの入力を受け取れるようにすることができるＩ／Ｏハブ２５０７を含む。少なくとも一実施例では、Ｉ／Ｏハブ２５０７は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、１つ又は複数のプロセッサ２５０２に含まれて、１つ又は複数のディスプレイ・デバイス２５１０Ａに出力を提供してもよい。少なくとも一実施例では、Ｉ／Ｏハブ２５０７に結合された１つ又は複数のディスプレイ・デバイス２５１０Ａは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
【０２２０】
少なくとも一実施例では、処理サブシステム２５０１は、バス又は他の通信リンク２５１３を介してメモリ・ハブ２５０５に結合された１つ又は複数の並列プロセッサ２５１２を含む。少なくとも一実施例では、通信リンク２５１３は、ＰＣＩエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの１つであってもよく、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、１つ又は複数の並列プロセッサ２５１２は、メニー・インテグレーテッド・コア（ＭＩＣ：ｍａｎｙ  ｉｎｔｅｇｒａｔｅｄ  ｃｏｒｅ）プロセッサなど、多数の処理コア及び／又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、１つ又は複数の並列プロセッサ２５１２は、グラフィックス処理サブシステムを形成し、このサブシステムは、Ｉ／Ｏハブ２５０７を介して結合された１つ又は複数のディスプレイ・デバイス２５１０Ａに、ピクセルを出力することができる。で少なくとも一実施例では、１つ又は複数の並列プロセッサ２５１２はまた、１つ又は複数のディスプレイ・デバイス２５１０Ｂへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース（図示せず）を含むことができる。
【０２２１】
少なくとも一実施例では、システム・ストレージ・ユニット２５１４は、Ｉ／Ｏハブ２５０７に接続されて、コンピューティング・システム２５００のためのストレージ機構を提供することができる。少なくとも一実施例では、Ｉ／Ｏスイッチ２５１６を使用して、Ｉ／Ｏハブ２５０７と、プラットフォームに一体化されてもよいネットワーク・アダプタ２５１８及び／又はワイヤレス・ネットワーク・アダプタ２５１９などの他の構成要素、並びに１つ又は複数のアドイン・デバイス２５２０を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ２５１８は、イーサネット（登録商標）・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ２５１９は、Ｗｉ−Ｆｉ、Ｂｌｕｅｔｏｏｔｈ、近距離無線通信（ＮＦＣ）、又は１つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの１つ又は複数を含むことができる。
【０２２２】
少なくとも一実施例では、コンピューティング・システム２５００は、ＵＳＢ又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもＩ／Ｏハブ２５０７に接続されてもよい。少なくとも一実施例では、図２５の様々な構成要素を相互接続する通信経路が、ＰＣＩ（ペリフェラル・コンポーネント・インターコネクト）ベースのプロトコル（たとえば、ＰＣＩ−エクスプレス）などの任意の好適なプロトコル、又はＮＶ−Ｌｉｎｋ高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース、又は他の相互接続プロトコルを使用して、実装されてもよい。
【０２２３】
少なくとも一実施例では、１つ又は複数の並列プロセッサ２５１２は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット（ＧＰＵ）を構成する。少なくとも一実施例では、１つ又は複数の並列プロセッサ２５１２は、汎用処理に最適化された回路を組み込んでいる。少なくとも一実施例では、コンピューティング・システム２５００の構成要素は、単一の集積回路上の１つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、１つ又は複数の並列プロセッサ２５１２、メモリ・ハブ２５０５、プロセッサ２５０２、及びＩ／Ｏハブ２５０７を、システム・オン・チップ（ＳｏＣ）集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム２５００の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ（ＳＩＰ：ｓｙｓｔｅｍ  ｉｎ  ｐａｃｋａｇｅ）構成を形成することができる。少なくとも一実施例では、コンピューティング・システム２５００の構成要素の少なくとも一部分を、マルチ・チップ・モジュール（ＭＣＭ：ｍｕｌｔｉ−ｃｈｉｐ  ｍｏｄｕｌｅ）に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
【０２２４】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図２５００のシステムにおいて使用されてもよい。
【０２２５】
図２６Ａは、少なくとも一実施例による並列プロセッサ２６００を示す。少なくとも一実施例では、並列プロセッサ２６００の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、又はフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）などの１つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ２６００は、例示的な実施例による図２５に示す１つ又は複数の並列プロセッサ２５１２の変形形態である。
【０２２６】
少なくとも一実施例では、並列プロセッサ２６００は並列処理ユニット２６０２を含む。少なくとも一実施例では、並列処理ユニット２６０２は、並列処理ユニット２６０２の他のインスタンスを含む他のデバイスとの通信を可能にするＩ／Ｏユニット２６０４を含む。少なくとも一実施例では、Ｉ／Ｏユニット２６０４は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、Ｉ／Ｏユニット２６０４は、メモリ・ハブ２５０５などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ２５０５とＩ／Ｏユニット２６０４との間の接続は、通信リンク２５１３を形成する。少なくとも一実施例では、Ｉ／Ｏユニット２６０４は、ホスト・インターフェース２６０６及びメモリ・クロスバー２６１６に接続され、ここでホスト・インターフェース２６０６は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー２６１６は、メモリ動作の実行を対象とするコマンドを受け取る。
【０２２７】
少なくとも一実施例では、ホスト・インターフェース２６０６が、Ｉ／Ｏユニット２６０４を介してコマンド・バッファを受け取るとき、ホスト・インターフェース２６０６は、これらのコマンドを実行するためのワーク動作をフロント・エンド２６０８に向けることができる。少なくとも一実施例では、フロント・エンド２６０８はスケジューラ２６１０に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ２６１２に分配するように構成される。少なくとも一実施例では、スケジューラ２６１０は、処理クラスタ・アレイ２６１２の処理クラスタ・アレイ２６１２にタスクが分配される前に、処理クラスタ・アレイ２６１２が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ２６１０は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ２６１０は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ２６１２で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ２６１２でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうちの１つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ２６１０を含むマイクロコントローラ内のスケジューラ２６１０論理によって、ワークロードを自動的に処理アレイ２６１２全体に分配することができる。
【０２２８】
少なくとも一実施例では、処理クラスタ・アレイ２６１２は、最大「Ｎ個」の処理クラスタ（たとえば、クラスタ２６１４Ａ、クラスタ２６１４Ｂ〜クラスタ２６１４Ｎ）を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ２６１２の各クラスタ２６１４Ａ〜２６１４Ｎは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ２６１０は、様々なスケジューリング及び／又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ２６１２のクラスタ２６１４Ａ〜２６１４Ｎにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ２６１０によって動的に対処されてもよく、又は処理クラスタ・アレイ２６１２によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ２６１２の異なるクラスタ２６１４Ａ〜２６１４Ｎは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
【０２２９】
少なくとも一実施例では、処理クラスタ・アレイ２６１２は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ２６１２は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ２６１２は、ビデオ及び／又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
【０２３０】
少なくとも一実施例では、処理クラスタ・アレイ２６１２は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ２６１２は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ２６１２は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット２６０２は、処理できるようにデータをシステム・メモリからＩ／Ｏユニット２６０４を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ（たとえば、並列プロセッサ・メモリ２６２２）に記憶し、次いでシステム・メモリに書き戻すことができる。
【０２３１】
少なくとも一実施例では、並列処理ユニット２６０２を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ２６１２の複数のクラスタ２６１４Ａ〜２６１４Ｎにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ２６１０を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ２６１２の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第１の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第２の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第３の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ２６１４Ａ〜２６１４Ｎのうちの１つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ２６１４Ａ〜２６１４Ｎの間で中間データを送信できるようにしてもよい。
【０２３２】
少なくとも一実施例では、処理クラスタ・アレイ２６１２は、実行される処理タスクをスケジューラ２６１０を介して受け取ることができ、スケジューラ２６１０は、処理タスクを定義するコマンドをフロント・エンド２６０８から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面（パッチ）データ、プリミティブ・データ、頂点データ、及び／又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド（たとえば、どのプログラムを実行すべきか）を含むことができる。少なくとも一実施例では、スケジューラ２６１０は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド２６０８からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド２６０８は、入ってくるコマンド・バッファ（たとえば、バッチ・バッファ、プッシュ・バッファなど）によって指定されるワークロードが開始される前に、処理クラスタ・アレイ２６１２が有効な状態に構成されていることを保証するように構成されることが可能である。
【０２３３】
少なくとも一実施例では、並列処理ユニット２６０２の１つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ２６２２と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ２６２２には、メモリ・クロスバー２６１６を介してアクセスすることができ、メモリ・クロスバー２６１６は、処理クラスタ・アレイ２６１２並びにＩ／Ｏユニット２６０４からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー２６１６は、メモリ・インターフェース２６１８を介して並列プロセッサ・メモリ２６２２にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース２６１８は、複数のパーティション・ユニット（たとえば、パーティション・ユニット２６２０Ａ、パーティション・ユニット２６２０Ｂ〜パーティション・ユニット２６２０Ｎ）を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ２６２２の一部分（たとえば、メモリ・ユニット）に結合することができる。少なくとも一実施例では、パーティション・ユニット２６２０Ａ〜２６２０Ｎの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第１のパーティション・ユニット２６２０Ａは、対応する第１のメモリ・ユニット２６２４Ａを有し、第２のパーティション・ユニット２６２０Ｂは、対応するメモリ・ユニット２６２４Ｂを有し、Ｎ番目のパーティション・ユニット２６２０Ｎは、対応するＮ番目のメモリ・ユニット２６２４Ｎを有する。少なくとも一実施例では、パーティション・ユニット２６２０Ａ〜２６２０Ｎの数は、メモリ・デバイスの数に等しくなくてもよい。
【０２３４】
少なくとも一実施例では、メモリ・ユニット２６２４Ａ〜２６２４Ｎは、グラフィックス・ダブル・データ・レート（ＧＤＤＲ）メモリを含む同期グラフィックス・ランダム・アクセス・メモリ（ＳＧＲＡＭ）など、ダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット２６２４Ａ〜２６２４Ｎはまた、高帯域幅メモリ（ＨＢＭ）を含むがこれに限定されない３Ｄ積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ２６２２の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット２６２４Ａ〜２６２４Ｎにわたって記憶されて、パーティション・ユニット２６２０Ａ〜２６２０Ｎが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ２６２２のローカル・インスタンスは除外されてもよい。
【０２３５】
少なくとも一実施例では、処理クラスタ・アレイ２６１２のクラスタ２６１４Ａ〜２６１４Ｎのうちのいずれか１つは、並列プロセッサ・メモリ２６２２内のメモリ・ユニット２６２４Ａ〜２６２４Ｎのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー２６１６は、各クラスタ２６１４Ａ〜２６１４Ｎの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット２６２０Ａ〜２６２０Ｎ、又は別のクラスタ２６１４Ａ〜２６１４Ｎに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ２６１４Ａ〜２６１４Ｎは、メモリ・クロスバー２６１６を通ってメモリ・インターフェース２６１８と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー２６１６は、Ｉ／Ｏユニット２６０４と通信するためのメモリ・インターフェース２６１８への接続部、並びに並列プロセッサ・メモリ２６２２のローカル・インスタンスへの接続部を有して、異なる処理クラスタ２６１４Ａ〜２６１４Ｎ内の処理ユニットが、システム・メモリ、又は並列処理ユニット２６０２のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー２６１６は、仮想チャネルを使用して、クラスタ２６１４Ａ〜２６１４Ｎと、パーティション・ユニット２６２０Ａ〜２６２０Ｎとの間でトラフィック・ストリームを分離することができる。
【０２３６】
少なくとも一実施例では、並列処理ユニット２６０２の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び／又は他の異なる構成を有する場合でも、並列処理ユニット２６０２の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット２６０２のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット２６０２又は並列プロセッサ２６００のうちの１つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び／又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
【０２３７】
図２６Ｂは、少なくとも一実施例によるパーティション・ユニット２６２０のブロック図である。少なくとも一実施例では、パーティション・ユニット２６２０は、図２６Ａのパーティション・ユニット２６２０Ａ〜２６２０Ｎのうちの１つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット２６２０は、Ｌ２キャッシュ２６２１、フレーム・バッファ・インターフェース２６２５、及びＲＯＰ：ｒａｓｔｅｒ  ｏｐｅｒａｔｉｏｎｓ  ｕｎｉｔ２６２６（ラスタ演算ユニット）を含む。Ｌ２キャッシュ２６２１は、メモリ・クロスバー２６１６及びＲＯＰ２６２６から受け取ったロード及びストアの動作を実行するように構成された読取り／書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにＬ２キャッシュ２６２１によってフレーム・バッファ・インターフェース２６２５に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース２６２５を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース２６２５は、図２６の（たとえば並列プロセッサ・メモリ２６２２内の）メモリ・ユニット２６２４Ａ〜２６２４Ｎなど、並列プロセッサ・メモリのメモリ・ユニットのうちの１つとインターフェースをとる。
【０２３８】
少なくとも一実施例では、ＲＯＰ２６２６は、ステンシル、ｚテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでＲＯＰ２６２６は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ＲＯＰ２６２６は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの１つ又は複数を利用するロスレス圧縮論理とすることができる。ＲＯＰ２９２６によって実行される圧縮のタイプは、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
【０２３９】
少なくとも一実施例では、ＲＯＰ２６２６は、パーティション・ユニット２６２０内ではなく、各処理クラスタ内（たとえば、図２６Ａのクラスタ２６１４Ａ〜２６１４Ｎ）に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー２６１６を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図２５の１つ又は複数のディスプレイ・デバイス２５１０のうちの１つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ２５０２によってさらに処理できるようにルーティングされてもよく、又は図２６Ａの並列プロセッサ２６００内の処理エンティティのうちの１つによってさらに処理できるようにルーティングされてもよい。
【０２４０】
図２６Ｃは、少なくとも一実施例による並列処理ユニット内の処理クラスタ２６１４のブロック図である。少なくとも一実施例では、処理クラスタは、図２６Ａの処理クラスタ２６１４Ａ〜２６１４Ｎのうちの１つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ２６１４は、多数のスレッドを並列で実行するように構成されてもよく、ここで用語「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ（ＳＩＭＤ）の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド（ＳＩＭＴ：ｓｉｎｇｌｅ−ｉｎｓｔｒｕｃｔｉｏｎ，  ｍｕｌｔｉｐｌｅ−ｔｈｒｅａｄ）の技法が使用される。
【０２４１】
少なくとも一実施例では、処理クラスタ２６１４の動作は、ＳＩＭＴ並列プロセッサに処理タスクを分配するパイプライン・マネージャ２６３２を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ２６３２は、図２６のスケジューラ２６１０から命令を受け取り、グラフィックス・マルチプロセッサ２６３４及び／又はテクスチャ・ユニット２６３６を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４は、ＳＩＭＴ並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのＳＩＭＴ並列プロセッサが、処理クラスタ２６１４内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４の１つ又は複数のインスタンスは、処理クラスタ２６１４内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの１つに分配するためにデータ・クロスバー２６４０が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ２６３２は、データ・クロスバー２６４０を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
【０２４２】
少なくとも一実施例では、処理クラスタ２６１４内の各グラフィックス・マルチプロセッサ２６３４は、関数実行論理（たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど）の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
【０２４３】
少なくとも一実施例では、処理クラスタ２６１４に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ２６３４内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ２６３４内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンのうちの１つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ２６３４内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ２６３４内の処理エンジンの数より多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ２６３４上で同時に実行することができる。
【０２４４】
少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４は、内部キャッシュをやめて、処理クラスタ２６１４内のキャッシュ・メモリ（たとえば、Ｌ１キャッシュ２６４８）を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ２６３４は、パーティション・ユニット（たとえば、図２６Ａのパーティション・ユニット２６２０Ａ〜２６２０Ｎ）内のＬ２キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ２６１４間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び／又はシステム・メモリのうちの１つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット２６０２の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ２６１４は、共通の命令及びデータを共有することができるグラフィックス・マルチプロセッサ２６３４の複数のインスタンスを含み、これらはＬ１キャッシュ２６４８に記憶されてもよい。
【０２４５】
少なくとも一実施例では、各処理クラスタ２６１４は、仮想アドレスを物理アドレスにマッピングするように構成されたＭＭＵ２６４５（メモリ管理ユニット）を含んでもよい。少なくとも一実施例では、ＭＭＵ２６４５の１つ又は複数のインスタンスは、図２６のメモリ・インターフェース２６１８内にあってもよい。少なくとも一実施例では、ＭＭＵ２６４５は、仮想アドレスを、タイル（タイリングについては詳述する）及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ（ＰＴＥ）のセットを含む。少なくとも一実施例では、ＭＭＵ２６４５は、アドレスのトランスレーション・ルックアサイド・バッファ（ＴＬＢ：ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ）又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ２６３４若しくはＬ１キャッシュ、又は処理クラスタ２６１４内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
【０２４６】
少なくとも一実施例では、各グラフィックス・マルチプロセッサ２６３４がテクスチャ・ユニット２６３６に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ２６１４が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャＬ１キャッシュ（図示せず）から、又はグラフィックス・マルチプロセッサ２６３４内のＬ１キャッシュから読み取られ、必要に応じて、Ｌ２キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ２６３４は、処理済みタスクをデータ・クロスバー２６４０に出力して、さらなる処理ができるように別の処理クラスタ２６１４に処理済みタスクを提供し、又はメモリ・クロスバー２６１６を介して、Ｌ２キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレＲＯＰ２６４２（プレ・ラスタ演算ユニット）は、グラフィックス・マルチプロセッサ２６３４からデータを受け取り、ＲＯＰユニットにデータを仕向けるように構成されており、ＲＯＰユニットは、本明細書に記載のするように、パーティション・ユニット（たとえば、図２６のパーティション・ユニット２６２０Ａ〜２６２０Ｎ）内に位置付けられてもよい。少なくとも一実施例では、プレＲＯＰ２６４２ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
【０２４７】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ２６１４において使用されてもよい。
【０２４８】
図２６Ｄは、少なくとも一実施例によるグラフィックス・マルチプロセッサ２６３４を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４は、処理クラスタ２６１４のパイプライン・マネージャ２６３２と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４は、命令キャッシュ２６５２、命令ユニット２６５４、アドレス・マッピング・ユニット２６５６、レジスタ・ファイル２６５８、１つ又は複数の汎用グラフィックス・プロセッシング・ユニット（ＧＰＧＰＵ）コア２６６２、及び１つ又は複数のロード／ストア・ユニット２６６６を含むがこれらに限定されない実行パイプラインを有する。ＧＰＧＰＵコア２６６２、及びロード／ストア・ユニット２６６６は、メモリ及びキャッシュ相互接続２６６８を介して、キャッシュ・メモリ２６７２及び共有メモリ２６７０に結合される。
【０２４９】
少なくとも一実施例では、命令キャッシュ２６５２は、実行すべき命令のストリームをパイプライン・マネージャ２６３２から受け取る。少なくとも一実施例では、命令は、命令キャッシュ２６５２にキャッシュされ、命令ユニット２６５４により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット２６５４は、命令をスレッド・グループ（たとえば、ワープ）としてディスパッチすることができ、アスレッド・グループの各スレッドは、ＧＰＧＰＵコア２６６２内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット２６５６を使用して、統一アドレス空間のアドレスを、ロード／ストア・ユニット２６６６がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
【０２５０】
少なくとも一実施例では、レジスタ・ファイル２６５８は、グラフィックス・マルチプロセッサ２６３４の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル２６５８は、グラフィックス・マルチプロセッサ２６３４の機能ユニット（たとえばＧＰＧＰＵコア２６６２、ロード／ストア・ユニット２６６６）のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル２６５８は、レジスタ・ファイル２６５８の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。一実施例では、レジスタ・ファイル２６５８は、グラフィックス・マルチプロセッサ２６３４によって実行されている異なるワープ間で分割される。
【０２５１】
少なくとも一実施例では、ＧＰＧＰＵコア２６６２はそれぞれ、グラフィックス・マルチプロセッサ２６３４の命令を実行するために使用される浮動小数点ユニット（ＦＰＵ）及び／又は整数算術論理演算ユニット（ＡＬＵ）を含むことができる。ＧＰＧＰＵコア２６６２同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、ＧＰＧＰＵコア２６６２の第１の部分は、単精度ＦＰＵ及び整数ＡＬＵを含み、ＧＰＧＰＵコアの第２の部分は、倍精度ＦＰＵを含む。少なくとも一実施例では、ＦＰＵは、浮動小数点演算のためにＩＥＥＥ７５４−２００８規格を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ２６３４はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、１つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、ＧＰＧＰＵコアの１つ又は複数は、固定の又は特別な機能論理も含むことができる。
【０２５２】
少なくとも一実施例では、ＧＰＧＰＵコア２６６２は、複数のデータ・セットに対して単一の命令を実行することができるＳＩＭＤ論理を含む。一実施例では、ＧＰＧＰＵコア２６６２は、ＳＩＭＤ４、ＳＩＭＤ８、及びＳＩＭＤ１６の命令を物理的に実行することができ、ＳＩＭＤ１、ＳＩＭＤ２、及びＳＩＭＤ３２の命令を論理的に実行することができる。少なくとも一実施例では、ＧＰＧＰＵコアのためのＳＩＭＤ命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ（ＳＰＭＤ：ｓｉｎｇｌｅ  ｐｒｏｇｒａｍ  ｍｕｌｔｉｐｌｅ  ｄａｔａ）又はＳＩＭＴのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、ＳＩＭＴ実行モデルのために構成されたプログラムの複数のスレッドは、単一のＳＩＭＤ命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する８個のＳＩＭＴスレッドを、単一のＳＩＭＤ８の論理ユニットを介して並列に実行することができる。
【０２５３】
少なくとも一実施例では、メモリ及びキャッシュ相互接続２６６８は、グラフィックス・マルチプロセッサ２６３４の各機能ユニットをレジスタ・ファイル２６５８及び共有メモリ２６７０に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続２６６８は、ロード／ストア・ユニット２６６６が、共有メモリ２６７０とレジスタ・ファイル２６５８の間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル２６５８は、ＧＰＧＰＵコア２６６２と同じ周波数で動作することができ、したがって、ＧＰＧＰＵコア２６６２とレジスタ・ファイル２６５８の間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ２６７０を使用して、グラフィックス・マルチプロセッサ２６３４内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ２６７２を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット２６３６の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ２６７０は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、ＧＰＧＰＵコア２６６２で実行されているスレッドは、キャッシュ・メモリ２６７２内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
【０２５４】
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はＧＰＧＰＵは、ホスト／プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用ＧＰＵ（ＧＰＧＰＵ）機能を加速する。少なくとも一実施例では、ＧＰＵは、バス又は他の相互接続（たとえば、ＰＣＩｅ又はＮＶＬｉｎｋなどの高速相互接続）を介してホスト・プロセッサ／コアに通信可能に結合されてもよい。少なくとも一実施例では、ＧＰＵは、コアと同じパッケージ又はチップに一体化されてもよく、内部（すなわち、パッケージ又はチップの内部の）プロセッサ・バス／相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、ＧＰＵの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド／命令のシーケンスの形でワークをＧＰＵに配分してもよい。少なくとも一実施例では、次いでＧＰＵは、これらのコマンド／命令を効率的に処理するために専用の回路／論理を使用する。
【０２５５】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び／若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ２６３４において使用されてもよい。
【０２５６】
図２７は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ２７００のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ２７００は、ｘ８６命令、ＡＭＲ命令、特定用途向け集積回路（ＡＳＩＣ）用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ２７００は、カリフォルニア州サンタクララのインテルコーポレーションによる、ＭＭＸ技術で有効化されたマイクロプロセッサ内の６４ビット幅ＭＭＸＴＭレジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なＭＭＸレジスタは、単一命令複数データ（「ＳＩＭＤ」）及びストリーミングＳＩＭＤ拡張（「ＳＳＥ」：ｓｔｒｅａｍｉｎｇ  ＳＩＭＤ  ｅｘｔｅｎｓｉｏｎｓ）命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、ＳＳＥ２、ＳＳＥ３、ＳＳＥ４、ＡＶＸ、又はそれ以上（総称して「ＳＳＥｘ」と呼ばれる）の技術に関する１２８ビット幅のＸＭＭレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ２７００は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
【０２５７】
少なくとも一実施例では、プロセッサ２７００は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド（「フロント・エンド」）２７０１を含む。少なくとも一実施例では、フロント・エンド２７０１は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ２７２６が、メモリから命令をフェッチし、命令デコーダ２７２８に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ２７２８は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる（「マイクロ・オプス」又は「ｕｏｐｓ」とも呼ばれる）１つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ２７２８は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ２７３０は、デコードされたｕｏｐｓを、実行できるようにｕｏｐキュー２７３４においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ２７３０が複雑な命令に遭遇すると、マイクロコードＲＯＭ２７３２が、動作の完了に必要なｕｏｐｓを提供する。
【０２５８】
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために５つ以上のマイクロ・オプスが要な場合、命令デコーダ２７２８は、マイクロコードＲＯＭ２７３２にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ２７２８において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードＲＯＭ２７３２に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ２７３０は、少なくとも一実施例によるマイクロコードＲＯＭ２７３２からの１つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ（「ＰＬＡ」：ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ａｒｒａｙ）を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードＲＯＭ２７３２が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド２７０１は、トレース・キャッシュ２７３０からマイクロ・オプスのフェッチを再開してもよい。
【０２５９】
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン（「アウト・オブ・オーダー・エンジン」）２７０３は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。アウト・オブ・オーダー実行エンジン２７０３は、限定することなく、アロケータ／レジスタ・リネーマ２７４０、メモリｕｏｐキュー２７４２、整数／浮動小数点ｕｏｐキュー２７４４、メモリ・スケジューラ２７４６、高速スケジューラ２７０２、低速／汎用浮動小数点スケジューラ（「低速／汎用ＦＰ：ｆｌｏａｔｉｎｇ  ｐｏｉｎｔスケジューラ」）２７０４、及び単純浮動小数点スケジューラ（「単純ＦＰスケジューラ」）２７０６を含む。少なくとも一実施例では、高速スケジューラ２７０２、低速／汎用浮動小数点スケジューラ２７０４、及び単純浮動小数点スケジューラ２７０６は、本明細書において集合的に「ｕｏｐスケジューラ２７０２、２７０４、２７０６」とも呼ばれる。アロケータ／レジスタ・リネーマ２７４０は、実行するために各ｕｏｐが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ／レジスタ・リネーマ２７４０は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ／レジスタ・リネーマ２７４０はまた、メモリ・スケジューラ２７４６及びｕｏｐスケジューラ２７０２、２７０４、２７０６の前の、２つのｕｏｐキュー、すなわちメモリ動作のためのメモリｕｏｐキュー２７４２と非メモリ動作のための整数／浮動小数点ｕｏｐキュー２７４４のうちの１つに、各ｕｏｐのエントリを配分する。少なくとも一実施例では、ｕｏｐスケジューラ２７０２、２７０４、２７０６は、ｕｏｐｓがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにｕｏｐが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、少なくとも一実施例の高速スケジューラ２７０２は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速／汎用浮動小数点スケジューラ２７０４及び単純浮動小数点スケジューラ２７０６は、メイン・プロセッサのクロック・サイクル当たりに１回スケジューリングしてもよい。少なくとも一実施例では、ｕｏｐスケジューラ２７０２、２７０４、２７０６は、実行できるようにｕｏｐｓをスケジューリングするためにディスパッチ・ポートを調停する。
【０２６０】
少なくとも一実施例では、実行ブロックｂ１１は、限定することなく、整数レジスタ・ファイル／バイパス・ネットワーク２７０８、浮動小数点レジスタ・ファイル／バイパス・ネットワーク（「ＦＰレジスタ・ファイル／バイパス・ネットワーク」）２７１０、アドレス生成ユニット（「ＡＧＵ」：ａｄｄｒｅｓｓ  ｇｅｎｅｒａｔｉｏｎ  ｕｎｉｔｓ）２７１２及び２７１４、高速算術論理演算ユニット（ＡＬＵ）（「高速ＡＬＵ」）２７１６及び２７１８、低速算術論理演算ユニット（「低速ＡＬＵ」）２７２０、浮動小数点ＡＬＵ（「ＦＰ」）２７２２、並びに浮動小数点移動ユニット（「ＦＰ移動」）２７２４を含む。少なくとも一実施例では、整数レジスタ・ファイル／バイパス・ネットワーク２７０８及び浮動小数点レジスタ・ファイル／バイパス・ネットワーク２７１０は、本明細書において「レジスタ・ファイル２７０８、２７１０」とも呼ばれる。少なくとも一実施例では、ＡＧＵ２７１２及び２７１４、高速ＡＬＵ２７１６及び２７１８、低速ＡＬＵ２７２０、浮動小数点ＡＬＵ２７２２、及び浮動小数点移動ユニット２７２４は、本明細書において「実行ユニット２７１２、２７１４、２７１６、２７１８、２７２０、２７２２、及び２７２４」とも呼ばれる。少なくとも一実施例では、実行ブロックｂ１１は、限定することなく、（ゼロを含む）任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
【０２６１】
少なくとも一実施例では、レジスタ・ファイル２７０８、２７１０は、ｕｏｐスケジューラ２７０２、２７０４、２７０６と、実行ユニット２７１２、２７１４、２７１６、２７１８、２７２０、２７２２、及び２７２４との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル／バイパス・ネットワーク２７０８は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル／バイパス・ネットワーク２７１０は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ファイル２７０８、２７１０のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属ｕｏｐｓにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ファイル２７０８、２７１０は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル／バイパス・ネットワーク２７０８は、限定することなく、２つの別々のレジスタ・ファイル、すなわち低次３２ビットのデータ用の１つのレジスタ・ファイル、及び高次３２ビットのデータ用の第２のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、６４〜１２８ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル／バイパス・ネットワーク２７１０は、限定することなく、１２８ビット幅のエントリを含んでもよい。
【０２６２】
少なくとも一実施例では、実行ユニット２７１２、２７１４、２７１６、２７１８、２７２０、２７２２、２７２４は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ファイル２７０８、２７１０は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ２７００は、限定することなく、任意の数及び組合せの実行ユニット２７１２、２７１４、２７１６、２７１８、２７２０、２７２２、２７２４を含んでよい。少なくとも一実施例では、浮動小数点ＡＬＵ２７２２及び浮動小数点移動ユニット２７２４は、浮動小数点、ＭＭＸ、ＳＩＭＤ、ＡＶＸ、及びＳＥＥ、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ＡＬＵ２７２２は、限定することなく、６４ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ＡＬＵ演算は、高速ＡＬＵ２７１６、２７１８に渡されてもよい。少なくとも一実施例では、高速ＡＬＵ２７１６、２７１８は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ＡＬＵ２７２０は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ＡＬＵに進む。少なくとも一実施例では、メモリのロード／ストア動作は、ＡＧＵＳ２７１２、２７１４によって実行されてもよい。少なくとも一実施例では、高速ＡＬＵ２７１６、高速ＡＬＵ２７１８、及び低速ＡＬＵ２７２０は、６４ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ＡＬＵ２７１６、高速ＡＬＵ２７１８、及び低速ＡＬＵ２７２０は、１６、３２、１２８、２５６などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ＡＬＵ２７２２及び浮動小数点移動ユニット２７２４は、様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ＡＬＵ２７２２及び浮動小数点移動ユニット２７２４は、ＳＩＭＤ及びマルチメディア命令と併せて１２８ビット幅のパック・データ・オペランドで動作してもよい。
【０２６３】
少なくとも一実施例では、ｕｏｐスケジューラ２７０２、２７０４、２７０６は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、ｕｏｐｓは、プロセッサ２７００において投機的にスケジューリング及び実行されてもよいので、プロセッサ２７００は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
【０２６４】
少なくとも一実施例では、用語「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、（プログラマの視点から見て）プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、３２ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための８つのマルチメディアＳＩＭＤレジスタも含む。
【０２６５】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５の一部又はすべてが、ＥＸＥブロック２７１１、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び／又は推論の技法は、ＥＸＥブロック２７１１に示すＡＬＵのうちの１つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の１つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのＥＸＥブロック２７１１のＡＬＵを構成するオン・チップ若しくはオフ・チップのメモリ及び／又はレジスタ（図示する又は図示せず）に記憶されてもよい。
【０２６６】
図２８は、少なくとも一実施例による深層学習アプリケーション・プロセッサ２８００を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ２８００は、深層学習アプリケーション・プロセッサ２８００によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ２８００に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ２８００は、特定用途向け集積回路（ＡＳＩＣ）である。少なくとも一実施例では、アプリケーション・プロセッサ２８００は、１つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ２８００は、限定することなく、処理クラスタ２８１０（１）〜２８１０（１２）、チップ間リンク（「ＩＣＬ」）２８２０（１）〜２８２０（１２）、チップ間コントローラ（「ＩＣＣ」）２８３０（１）〜２８３０（２）、高帯域幅メモリ第２世代（「ＨＢＭ２」）２８４０（１）〜２８４０（４）、メモリ・コントローラ（「Ｍｅｍ  Ｃｔｒｌｒｓ」）２８４２（１）〜２８４２（４）、高帯域幅メモリ物理層（「ＨＢＭ  ＰＨＹ」）２８４４（１）〜２８４４（４）、管理−コントローラ中央処理装置（「管理−コントローラＣＰＵ」）２８５０、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力／出力ブロック（「ＳＰＩ、Ｉ２Ｃ、ＧＰＩＯ」）２８６０、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック（「ＰＣＩｅコントローラ及びＤＭＡ」）２８７０、並びに１６レーン周辺構成要素相互接続エクスプレス・ポート（「ＰＣＩ  Ｅｘｐｒｅｓｓｘ１６」）２８８０を含む。
【０２６７】
少なくとも一実施例では、処理クラスタ２８１０は、本明細書に記載の技法を含む１つ又は複数の訓練技法を使用して計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ２８１０は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ２８００は、任意の数及びタイプの処理クラスタ２８００を含んでもよい。少なくとも一実施例では、チップ間リンク２８２０は、双方向性である。少なくとも一実施例では、チップ間リンク２８２０及びチップ間コントローラ２８３０は、１つ又は複数のニューラル・ネットワークに具体化された１つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ２８００が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ２８００は、（ゼロを含む）任意の数及びタイプのＩＣＬ２８２０及びＩＣＣ２８３０を含んでもよい。
【０２６８】
少なくとも一実施例では、ＨＢＭ２  ２８４０は、合計３２ギガバイト（ＧＢ：Ｇｉｇａｂｙｔｅ）のメモリを提供する。ＨＢＭ２  ２８４０（ｉ）は、メモリ・コントローラ２８４２（ｉ）とＨＢＭ  ＰＨＹ２８４４（ｉ）の両方に関連付けられる。少なくとも一実施例では、任意の数のＨＢＭ２  ２８４０が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、（ゼロを含む）任意の数及びタイプのメモリ・コントローラ２８４２及びＨＢＭ  ＰＨＹ２８４４に関連付けられてもよい。少なくとも一実施例では、ＳＰＩ、Ｉ２Ｃ、ＧＰＩＯ２８６０、ＰＣＩｅコントローラ及びＤＭＡ２８７０、並びに／又はＰＣＩｅ２８８０は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
【０２６９】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ２８００は、深層学習アプリケーション・プロセッサ２８００に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ２８００は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ２８００によって訓練されてきた訓練済み機械学習モデル（たとえば、ニューラル・ネットワーク）に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ２８００は、本明細書に記載の１つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【０２７０】
図２９は、少なくとも一実施例による、ニューロモーフィック・プロセッサ２９００のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ２９００は、ニューロモーフィック・プロセッサ２９００の外部のソースから１つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ２９００内の１つ又は複数のニューロン２９０２に送信されてもよい。少なくとも一実施例では、ニューロン２９０２及びその構成要素は、１つ又は複数の算術論理演算ユニット（ＡＬＵ）を含む回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ２９００は、限定することなく、ニューロン２９０２の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン２９０２が使用されてもよい。少なくとも一実施例では、ニューロン２９０２の各インスタンスは、ニューロン入力２９０４及びニューロン出力２９０６を含んでもよい。少なくとも一実施例では、ニューロン２９０２は出力を生成してもよく、この出力は、ニューロンの他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力２９０４及びニューロン出力２９０６は、シナプス２９０８を介して相互接続されてもよい。
【０２７１】
少なくとも一実施例では、ニューロン２９０２とシナプス２９０８は、ニューロモーフィック・プロセッサ２９００が受信した情報をニューロモーフィック・プロセッサ２９００が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン２９０２は、ニューロン入力２９０４を介して受信した入力が、閾値を超えているとき、出力パルス（又は「発火」若しくは「スパイク」）を送信してもよい。少なくとも一実施例では、ニューロン２９０２は、ニューロン入力２９０４において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン２９０２は、漏れ積分発火ニューロン（ｌｅａｋｙ  ｉｎｔｅｇｒａｔｅ−ａｎｄ−ｆｉｒｅ  ｎｅｕｒｏｎ）として実装されてもよく、ここで、合計（「膜電位」と呼ばれる）が閾値を超える場合には、ニューロン２９０２は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力（又は「発火」）を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力２９０４で受信した信号を合計して膜電位にしてもよく、また、崩壊因子（又は漏れ）を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く（すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に）ニューロン入力２９０４において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン２９０２は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン２９０２は、ニューロン２９０４に伝達関数を適用した結果が閾値を超えるとき、ニューロン２９０６において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン２９０２は発火すると、前に受信した入力情報を、たとえば膜電位を０又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が０にリセットされると、ニューロン２９０２は、好適な期間（又は不応期）の後に通常の動作を再開してもよい。
【０２７２】
少なくとも一実施例では、ニューロン２９０２は、シナプス２９０８を通して相互接続されてもよい。少なくとも一実施例では、シナプス２９０８は、第１のニューロン２９０２の出力から第２のニューロン２９０２の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン２９０２は、シナプス２９０８の２つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力２９０６の１つ又は複数のインスタンスは、シナプス２９０８のインスタンスを介して、同じニューロン２９０２のニューロン入力２９０４のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス２９０８のインスタンスを介して送信されることになる出力を生成するニューロン２９０２のインスタンスは、シナプス２９０８のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス２９０８のインスタンスを介して送信されることになる入力を受信するニューロン２９０２のインスタンスは、シナプス２９０８のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン２９０２のインスタンスは、シナプス２９０８の１つ又は複数のインスタンスから入力を受信してもよく、また、シナプス２９０８の１つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン２９０２の単一のインスタンスは、したがって、シナプス２９０８の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
【０２７３】
少なくとも一実施例では、ニューロン２９０２は、１つ又は複数の層に組織化されてもよい。ニューロン２９０２の各インスタンスは、１つ又は複数のシナプス２９０８を通って１つ又は複数のニューロン入力２９０４にファン・アウトすることができる１つのニューロン出力２９０６を有してもよい。少なくとも一実施例では、第１の層２９１０のニューロン２９０２のニューロン出力２９０６は、第２の層２９１２のニューロン２９０２のニューロン入力２９０４に接続されてもよい。少なくとも一実施例では、層２９１０は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第１の層２９１０のインスタンスにおけるニューロン２９０２の各インスタンスは、第２の層２９１２におけるニューロン２９０２の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第１の層２９１０は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第２の層２９１２のインスタンスにおけるニューロン２９０２の各インスタンスは、第３の層２９１４におけるニューロン２９０２の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第２の層２９１２は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第２の層２９１２のニューロン２９０２は、（同じ）第２の層２９１２におけるニューロン２９０２を含め、複数の他の層のニューロン２９０２にファン・アウトしてもよい。少なくとも一実施例では、第２の層２９１２は、「回帰層」と呼ばれてもよい。ニューロモーフィック・プロセッサ２９００は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
【０２７４】
少なくとも一実施例では、ニューロモーフィック・プロセッサ２９００は、シナプス２９０８をニューロン２９０２に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ２９００は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン／ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン２９０２に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス２９０８は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン２９０２に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実装されてもよい。
【０２７５】
図３０は、グラフィックス・プロセッサ３０００のブロック図であり、これは、個別グラフィックス・プロセッシング・ユニットであってもよく、又は複数の処理コアと一体化されたグラフィックス・プロセッサであってもよい。少なくとも一実施例では、グラフィックス・プロセッサ３０００は、メモリにマッピングされたＩ／Ｏインターフェースを介して、グラフィックス・プロセッサ３０００のレジスタと、メモリに入れられたコマンドを用いて通信する。少なくとも一実施例では、グラフィックス・プロセッサ３０００は、メモリにアクセスするためのメモリ・インターフェース３０１４を含む。少なくとも一実施例では、メモリ・インターフェース３０１４は、ローカル・メモリ、１つ若しくは複数の内部キャッシュ、１つ若しくは複数の共有外部キャッシュ、及び／又はシステム・メモリへのインターフェースである。
【０２７６】
少なくとも一実施例では、グラフィックス・プロセッサ３０００はまた、ディスプレイ出力データをディスプレイ・デバイス３０２０に向けて駆動するためのディスプレイ・コントローラ３００２も含む。少なくとも一実施例では、ディスプレイ・コントローラ３００２は、ディスプレイ・デバイス３０２０用の１つ又は複数の重なり平面、及び多層のビデオ若しくはユーザ・インターフェース要素の合成のためのハードウェアを含む。少なくとも一実施例では、ディスプレイ・デバイス３０２０は、内部又は外部のディスプレイ・デバイスとすることができる。少なくとも一実施例では、ディスプレイ・デバイス３０２０は、仮想現実（ＶＲ）ディスプレイ・デバイス又は拡張現実（ＡＲ）ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも一実施例では、グラフィックス・プロセッサ３０００は、ＭＰＥＧ−２などの動画エキスパート・グループ（ＭＰＥＧ）フォーマット、Ｈ．２６４／ＭＰＥＧ−４ＡＶＣなどのアドバンスト・ビデオ・コーディング（ＡＶＣ）フォーマット、並びに映画テレビ技術者協会（ＳＭＰＴＥ）４２１Ｍ／ＶＣ−１、及びＪＰＥＧなどのジョイント・フォトグラフィック・エキスパート・グループ（ＪＰＥＧ）フォーマット、及びモーションＪＰＥＧ（ＭＪＰＥＧ）フォーマットを含むがこれらに限定されない１つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアをエンコード、デコード、又はコード変換するためのビデオ・コーデック・エンジン３００６を含む。
【０２７７】
少なくとも一実施例では、グラフィックス・プロセッサ３０００は、たとえばビット境界ブロック転送を含む２次元（２Ｄ）ラスターライザ動作を実行するためのブロック画像転送（ＢＬＩＴ）エンジン３００４を含む。しかし、少なくとも一実施例では、２Ｄグラフィックス動作は、グラフィックス処理エンジン（ＧＰＥ）３０１０の１つ又は複数の構成要素を使用して実行される。少なくとも一実施例では、ＧＰＥ３０１０は、３次元（３Ｄ）グラフィックス動作及びメディア動作を含むグラフィックス動作を実行するためのコンピュート・エンジンである。
【０２７８】
少なくとも一実施例では、ＧＰＥ３０１０は、３Ｄのプリミティブ形状（たとえば、矩形、三角形など）に作用する処理関数を使用して、３次元画像及びシーンをレンダリングするなど、３Ｄ動作を実行するための３Ｄパイプライン３０１２を含む。３Ｄパイプライン３０１２は、プログラム可能で固定された関数要素を含み、これは、３Ｄ／メディア・サブシステム３０１５に対して様々なタスクを実行し、且つ／又は実行スレッドをスポーンする。３Ｄパイプライン３０１２を使用してメディア動作を実行できるが、少なくとも一実施例では、ＧＰＥ３０１０は、ビデオの後処理及び画像強調などのメディア動作を実行するために使用されるメディア・パイプライン３０１６も含む。
【０２７９】
少なくとも一実施例では、メディア・パイプライン３０１６は、ビデオ・コーデック・エンジン３００６の代わりに、又はそれを代表して、ビデオ・デコード加速、ビデオ・インターレース解除、及びエンコード加速などの１つ又は複数の特別なメディア動作を実行するための固定機能又はプログラム可能論理ユニットを含む。少なくとも一実施例では、メディア・パイプライン３０１６は、３Ｄ／メディア・サブシステム３０１５で実行するためのスレッドをスポーンするためのスレッド・スポーニング・ユニットをさらに含む。少なくとも一実施例では、スポーンされたスレッドは、３Ｄ／メディア・サブシステム３０１５に含まれた１つ又は複数のグラフィックス実行ユニット上で、メディア動作のための計算を実行する。
【０２８０】
少なくとも一実施例では、３Ｄ／メディア・サブシステム３０１５は、３Ｄパイプライン３０１２及びメディア・パイプライン３０１６によってスポーンされたスレッドを実行するための論理を含む。少なくとも一実施例では、３Ｄパイプライン３０１２及びメディア・パイプライン３０１６は、スレッド実行要求を３Ｄ／メディア・サブシステム３０１５に送信し、この３Ｄ／メディア・サブシステム３０１５は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも一実施例では、実行リソースは、３Ｄ及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも一実施例では、３Ｄ／メディア・サブシステム３０１５は、スレッド命令及びデータのための１つ又は複数の内部キャッシュを含む。少なくとも一実施例では、サブシステム３０１５はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
【０２８１】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５の一部又はすべてが、グラフィックス・プロセッサ３０００に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び／又は推論の技法は、３Ｄパイプライン３０１２に具体化されたＡＬＵのうちの１つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び／又は訓練の動作は、図１４Ａ又は図１４Ｂに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の１つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ３０００のＡＬＵを構成するオン・チップ若しくはオフ・チップのメモリ及び／又はレジスタ（図示する又は図示せず）に記憶されてもよい。
【０２８２】
図３１は、少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジン３１１０のブロック図である。少なくとも一実施例では、グラフィックス処理エンジン（ＧＰＥ）３１１０は、図３０に示すＧＰＥ３０１０の１つのバージョンである。少なくとも一実施例では、メディア・パイプライン３０１６は任意選択であり、ＧＰＥ３１１０内に明示的に含まれなくてもよい。少なくとも一実施例では、別個のメディア及び／又は画像のプロセッサが、ＧＰＥ３１１０に結合される。
【０２８３】
少なくとも一実施例では、ＧＰＥ３１１０は、コマンド・ストリーマ３１０３に結合され、又はそれを含み、このコマンド・ストリーマは、３Ｄパイプライン３０１２及び／又はメディア・パイプライン３０１６にコマンド・ストリームを提供する。少なくとも一実施例では、コマンド・ストリーマ３１０３はメモリに結合され、このメモリは、システム・メモリであってもよく、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの１つ若しくは複数であってもよい。少なくとも一実施例では、コマンド・ストリーマ３１０３は、メモリからコマンドを受信し、３Ｄパイプライン３０１２及び／又はメディア・パイプライン３０１６にコマンドを送信する。少なくとも一実施例では、コマンドは、リング・バッファからフェッチされる命令、プリミティブ、又はマイクロ・オペレーションであり、このリング・バッファは、３Ｄパイプライン３０１２及びメディア・パイプライン３０１６のためのコマンドを記憶する。少なくとも一実施例では、リング・バッファはさらに、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも一実施例では、３Ｄパイプライン３０１２用のコマンドはまた、３Ｄパイプライン３０１２用の頂点及び形状のデータ、並びに／又はメディア・パイプライン３０１６用の画像データ及びメモリ・オブジェクトなどであるがこれらに限定されないメモリに記憶されたデータへの参照も含むことができる。少なくとも一実施例では、３Ｄパイプライン３０１２及びメディア・パイプライン３０１６は、演算を実行することにより、又は１つ若しくは複数の実行スレッドをグラフィックス・コア・アレイ３１１４にディスパッチすることにより、コマンド及びデータを処理する。少なくとも一実施例では、グラフィックス・コア・アレイ３１１４は、グラフィックス・コア（たとえば、グラフィックス・コア３１１５Ａ、グラフィックス・コア３１１５Ｂ）の１つ又は複数のブロックを含み、各ブロックは、１つ又は複数のグラフィックス・コアを含む。少なくとも一実施例では、各グラフィックス・コアは、グラフィックス及びコンピュートの動作を実行するための汎用及びグラフィックス専用の実行論理、並びに、図１４Ａ及び図１４Ｂの推論及び／又は訓練論理１４１５を含め、固定機能のテクスチャ処理及び／又は機械学習、及び人工知能の加速論理を含むグラフィックス実行リソースのセットを含む。
【０２８４】
少なくとも一実施例では、３Ｄパイプライン３０１２は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ３１１４にディスパッチすることにより、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの１つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラム可能論理を含む。少なくとも一実施例では、グラフィックス・コア・アレイ３１１４は、シェーダ・プログラムを処理する際に使用するための実行リソースの統合ブロックを提供する。少なくとも一実施例では、グラフィック・コア・アレイ３１１４のグラフィックス・コア３１１５Ａ〜３１１５Ｂ内の多目的の実行論理（たとえば、実行ユニット）は、様々な３ＤのＡＰＩシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することができる。
【０２８５】
少なくとも一実施例では、グラフィックス・コア・アレイ３１１４はまた、ビデオ及び／又は画像の処理など、メディア機能を実行するための実行論理も含む。少なくとも一実施例では、実行ユニットはさらに、グラフィックス処理動作に加えて並列の汎用計算動作を実行するようにプログラム可能な汎用論理を含む。
【０２８６】
少なくとも一実施例では、グラフィックス・コア・アレイ３１１４上で実行しているスレッドにより生成される出力データは、統合リターン・バッファ（ＵＲＢ）３１１８のメモリにデータを出力することができる。ＵＲＢ３１１８は、複数のスレッド用のデータを記憶することができる。少なくとも一実施例では、グラフィックス・コア・アレイ３１１４上で実行している異なるスレッド間でデータを送信するために、ＵＲＢ３１１８を使用してもよい。少なくとも一実施例では、グラフィックス・コア・アレイ３１１４上のスレッドと、共有機能論理３１２０内の固定機能論理との間の同期のために、ＵＲＢ３１１８がさらに使用されてもよい。
【０２８７】
少なくとも一実施例では、グラフィックス・コア・アレイ３１１４はスケーラブルであり、それにより、グラフィックス・コア・アレイ３１１４は、可変数のグラフィックス・コアを含み、それぞれのグラフィックス・コアが、ＧＰＥ３１１０の目的とする電力及び性能のレベルに基づき可変数の実行ユニットを有する。少なくとも一実施例では、実行リソースは動的にスケーラブルであり、それにより実行リソースは、必要に応じて有効化又は無効化されてもよい。
【０２８８】
少なくとも一実施例では、グラフィックス・コア・アレイ３１１４は、グラフィックス・コア・アレイ３１１４のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理３１２０に結合される。少なくとも一実施例では、共有機能論理３１２０によって実行される共有機能は、専用の補足機能をグラフィックス・コア・アレイ３１１４に提供するハードウェア論理ユニットに具体化される。少なくとも一実施例では、共有機能論理３１２０は、サンプラ３１２１、数理３１２２、及びスレッド間通信（ＩＴＣ）３１２３の論理を含むが、これらに限定されない。少なくとも一実施例では、１つ又は複数のキャッシュ３１２５が、共有機能論理３１２０にイン含まれ、又はそれに結合される。
【０２８９】
少なくとも一実施例では、専用機能の需要が不十分でグラフィックス・コア・アレイ３１１４内に含められない場合に、共有機能が使用される。少なくとも一実施例では、専用機能を１つにインスタンス化したものが、共有機能論理３１２０において使用され、グラフィックス・コア・アレイ３１１４内の他の実行リソース間で共有される。少なくとも一実施例では、共有機能論理３１２０内の、グラフィックス・コア・アレイ３１１４によってのみ使用される特定の共有機能は、グラフィックス・コア・アレイ３１１４内の共有機能論理３１１６内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア・アレイ３１１４内の共有機能論理３１１６は、共有機能論理３１２０内の一部又はすべての論理を含むことができる。少なくとも一実施例では、共有機能論理３１２０内のすべての論理要素は、グラフィックス・コア・アレイ３１１４の共有機能論理３１１６内で複製されてもよい。少なくとも一実施例では、共有機能論理３１２０は、グラフィックス・コア・アレイ３１１４内の共有機能論理３１１６に有利なように除外される。
【０２９０】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５の一部又はすべてが、グラフィックス・プロセッサ３１１０に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び／又は推論の技法は、３Ｄパイプライン３０１２、グラフィックス・コア３１１５Ａ、共有機能論理３１１６、グラフィックス・コア３１１５Ｂ、共有機能論理３１２０、又は図３１の他の論理に具体化されたＡＬＵのうちの１つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び／又は訓練の動作は、図１４Ａ又は図１４Ｂに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の１つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ３１１０のＡＬＵを構成するオン・チップ若しくはオフ・チップのメモリ及び／又はレジスタ（図示する又は図示せず）に記憶されてもよい。
【０２９１】
図３２は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア３２００のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア３２００は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア３２００は、モジュール式グラフィックス・プロセッサ内の１つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア３２００は、１つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア３２００は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア３２０１Ａ〜３２０１Ｆに結合された固定機能ブロック３２３０を含むことができる。
【０２９２】
少なくとも一実施例では、固定機能ブロック３２３０は、たとえば低性能及び／又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ３２００内のすべてのサブ・コアが共有できるジオメトリ／固定機能パイプライン３２３６を含む。少なくとも一実施例では、ジオメトリ／固定機能パイプライン３２３６は、３Ｄ固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ（ｓｐａｗｎｅｒ）及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
【０２９３】
少なくとも一実施例では、固定機能ブロック３２３０はまた、グラフィックスＳｏＣインターフェース３２３７、グラフィックス・マイクロコントローラ３２３８、及びメディア・パイプライン３２３９を含む。グラフィックスＳｏＣインターフェース３２３７は、グラフィックス・コア３２００と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ３２３８は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ３２００の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン３２３９は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び／又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン３２３９は、サブ・コア３２０１〜３２０１Ｆ内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
【０２９４】
少なくとも一実施例では、ＳｏＣインターフェース３２３７は、汎用アプリケーション・プロセッサ・コア（たとえば、ＣＰＵ）、及び／又はＳｏＣ内の他の構成要素と、グラフィックス・コア３２００が通信できるようにし、ＳｏＣ内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムＲＡＭ、及び／又は組み込みオン・チップ若しくはオン・パッケージのＤＲＡＭなどのメモリ階層要素が含まれる。少なくとも一実施例では、ＳｏＣインターフェース３２３７はまた、カメラ・イメージング・パイプラインなど、ＳｏＣ内の固定機能デバイスとの通信を可能にし、グラフィックス・コア３２００とＳｏＣ内のＣＰＵとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ／又はそれを実装する。少なくとも一実施例では、ＳｏＣインターフェース３２３７はまた、グラフィックス・コア３２００の電力管理制御を実装することができ、グラフィックス・コア３２００のクロック・ドメインと、ＳｏＣ内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、ＳｏＣインターフェース３２３７は、グラフィックス・プロセッサ内の１つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン３２３９にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン（たとえば、ジオメトリ及び固定機能パイプライン３２３６、ジオメトリ及び固定機能パイプライン３２１４）にディスパッチされることが可能である。
【０２９５】
少なくとも一実施例では、グラフィックス・マイクロコントローラ３２３８は、グラフィックス・コア３２００のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ３２３８は、サブ・コア３２０１Ａ〜３２０１Ｆ内の実行ユニット（ＥＵ：ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ）アレイ３２０２Ａ〜３２０２Ｆ、３２０４Ａ〜３２０４Ｆ内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ／又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア３２００を含むＳｏＣのＣＰＵコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ・ドアベルのうちの１つにワークロードを送出することができ、このドアベルが、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ３２３８はまた、グラフィックス・コア３２００の低電力又はアイドル状態を促進して、オペレーティング・システム及び／又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア３２００内のレジスタを保存及び復元する機能をグラフィックス・コア３２００に提供することができる。
【０２９６】
少なくとも一実施例では、グラフィックス・コア３２００は、図示してあるサブ・コア３２０１Ａ〜３２０１Ｆより多くの、又はそれより少ない、Ｎ個までのモジュール式サブ・コアを有してもよい。Ｎ個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア３２００はまた、共有機能論理３２１０、共有及び／又はキャッシュ・メモリ３２１２、ジオメトリ／固定機能パイプライン３２１４、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理３２１６を含むことができる。少なくとも一実施例では、共有機能論理３２１０は、グラフィックス・コア３２００内の各Ｎ個のサブ・コアが共有できる論理ユニット（たとえば、サンプラ、数理、及び／又はスレッド間通信の論理）を含むことができる。共有の、及び／又はキャッシュのメモリ３２１２は、グラフィックス・コア３２００内のＮ個のサブ・コア３２１０Ａ〜３２１０Ｆのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ／固定機能パイプライン３２１４は、固定機能ブロック３２３０内のジオメトリ／固定機能パイプライン３２３６の代わりに含まれてもよく、同じ又は同様の論理ユニットを含むことができる。
【０２９７】
少なくとも一実施例では、グラフィックス・コア３２００は、グラフィックス・コア３２００が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理３２１６を含む。少なくとも一実施例では、追加の固定機能論理３２１６は、位置限定シェーディング（ｐｏｓｉｔｉｏｎ  ｏｎｌｙ  ｓｈａｄｉｎｇ）に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも２つのジオメトリ・パイプラインが存在しているが、ジオメトリ／固定機能パイプライン３２１６、３２３６内の完全ジオメトリ・パイプラインと選別パイプライン（ｃｕｌｌ  ｐｉｐｅｌｉｎｅ）においてであり、この選別パイプラインは、追加の固定機能論理３２１６内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理３２１６内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果（ｃｒｉｔｉｃａｌ  ｒｅｓｕｌｔ）を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、（このインスタンスではリプレイ・パイプラインと呼ばれてもよい）完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
【０２９８】
少なくとも一実施例では、追加の固定機能論理３２１６はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
【０２９９】
少なくとも一実施例では、各グラフィックス・サブ・コア３２０１Ａ〜３２０１Ｆは、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア３２０１Ａ〜３２０１Ｆは、複数のＥＵアレイ３２０２Ａ〜３２０２Ｆ、３２０４Ａ〜３２０４Ｆ、スレッド・ディスパッチ及びスレッド間通信（ＴＤ／ＩＣ：ｔｈｒｅａｄ  ｄｉｓｐａｔｃｈ  ａｎｄ  ｉｎｔｅｒ−ｔｈｒｅａｄ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）論理３２０３Ａ〜３２０３Ｆ、３Ｄ（たとえば、テクスチャ）サンプラ３２０５Ａ〜３２０５Ｆ、メディア・サンプラ３２０６Ａ〜３２０６Ｆ、シェーダ・プロセッサ３２０７Ａ〜３２０７Ｆ、及び共有ローカル・メモリ（ＳＬＭ：ｓｈａｒｅｄ  ｌｏｃａｌ  ｍｅｍｏｒｙ）３２０８Ａ〜３２０８Ｆを含む。ＥＵアレイ３２０２Ａ〜３２０２Ｆ、３２０４Ａ〜３２０４Ｆはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数／固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、ＴＤ／ＩＣ論理３２０３Ａ〜３２０３Ｆは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、３Ｄサンプラ３２０５Ａ〜３２０５Ｆは、テクスチャ又は他の３Ｄグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、３Ｄサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ３２０６Ａ〜３２０６Ｆは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア３２０１Ａ〜３２０１Ｆは、代替的に３Ｄとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア３２０１Ａ〜３２０１Ｆ内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ３２０８Ａ〜３２０８Ｆを利用することができる。
【０３００】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５の一部又はすべてが、グラフィックス・プロセッサ３２１０に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び／又は推論の技法は、３Ｄパイプライン３２１０、グラフィックス・マイクロコントローラ３２３８、ジオメトリ及び固定機能パイプライン３２１４及び３２３６、又は図３１の他の論理に具体化されたＡＬＵのうちの１つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び／又は訓練の動作は、図１４Ａ又は図１４Ｂに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の１つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ３２００のＡＬＵを構成するオン・チップ若しくはオフ・チップのメモリ及び／又はレジスタ（図示する又は図示せず）に記憶されてもよい。
【０３０１】
図３３Ａ〜図３３Ｂは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理３３００を示す。図３３Ａは、スレッド実行論理３３００が使用される少なくとも一実施例を示す。図３３Ｂは、少なくとも一実施例による、実行ユニットの例示的な内部詳細事項を示す図である。
【０３０２】
図３３Ａに示すように、少なくとも一実施例では、スレッド実行論理３３００は、シェーダ・プロセッサ３３０２、スレッド・ディスパッチャ３３０４、命令キャッシュ３３０６、複数の実行ユニット３３０８Ａ〜３３０８Ｎを含むスケーラブル実行ユニット・アレイ、サンプラ３３１０、データ・キャッシュ３３１２、及びデータ・ポート３３１４を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、１つ又は複数の実行ユニット（たとえば、実行ユニット３３０８Ａ、３３０８Ｂ、３３０８Ｃ、３３０８Ｄ〜３３０８Ｎ−１、及び３３０８Ｎのうちのいずれか）を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理３３００は、命令キャッシュ３３０６、データ・ポート３３１４、サンプラ３３１０、及び実行ユニット３３０８Ａ〜３３０８Ｎのうちの１つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの１つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット（たとえば、３３０８Ａ）は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット３３０８Ａ〜３３０８Ｎのアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
【０３０３】
少なくとも一実施例では、実行ユニット３３０８Ａ〜３３０８Ｎは、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ３３０２は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ３３０４を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ３３０４は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット３３０８Ａ〜３３０８Ｎの１つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ３３０４はまた、実行しているシェーダ・プログラムからのラン・タイム・スレッド・スポーニング要求（ｓｐａｗｎｉｎｇ  ｒｅｑｕｅｓｔ）を処理することができる。
【０３０４】
少なくとも一実施例では、実行ユニット３３０８Ａ〜３３０８Ｎは、多くの標準的な３Ｄグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ（たとえば、Ｄｉｒｅｃｔ３Ｄ及びＯｐｅｎＧＬ）からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理（たとえば、頂点プログラム、ジオメトリ・プログラム、頂点シェーダ）、ピクセル処理（たとえば、ピクセル・シェーダ、フラグメント・シェーダ）、及び汎用処理（たとえば、コンピュート及びメディアのシェーダ）をサポートする。少なくとも一実施例では、１つ又は複数の算術論理演算ユニット（ＡＬＵ）を含む各実行ユニット３３０８Ａ〜３３０８Ｎのそれぞれは、単一命令複数データ（ＳＩＭＤ）の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、ＳＩＭＤブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの１つからのデータを待機している間に、実行ユニット３３０８Ａ〜３３０８Ｎ内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
【０３０５】
少なくとも一実施例では、実行ユニット３３０８Ａ〜３３０８Ｎの各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット（ＡＬＵ）又は浮動小数点ユニット（ＦＰＵ）の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット３３０８Ａ〜３３０８Ｎは、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
【０３０６】
少なくとも一実施例では、実行ユニット命令セットは、ＳＩＭＤ命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、２５６ビット幅ベクトルで動作しているとき、ベクトルの２５６ビットがレジスタに記憶され、実行ユニットは、４個の別々の６４ビット・パック・データ要素（クワッド・ワード（ＱＷ：Ｑｕａｄ−Ｗｏｒｄ）サイズのデータ要素）、８個の別々の３２ビット・パック・データ要素（ダブル・ワード（ＤＷ：Ｄｏｕｂｌｅ  Ｗｏｒｄ）サイズのデータ要素）、１６個の別々の１６ビット・パック・データ要素（ワード（Ｗ：Ｗｏｒｄ）サイズのデータ要素）、又は３２個の別々の８ビット・データ要素（バイト（Ｂ：ｂｙｔｅ）サイズのデータ要素）としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
【０３０７】
少なくとも一実施例では、１つ又は複数の実行ユニットを組み合わせて、融合ＥＵに共通したスレッド制御論理（３３０７Ａ〜３３０７Ｎ）を有する融合実行ユニット（ｆｕｓｅｄ  ｅｘｅｃｕｔｉｏｎ  ｕｎｉｔ）３３０９Ａ〜３３０９Ｎにすることができる。少なくとも一実施例では、複数のＥＵを融合して、ＥＵグループにすることができる。少なくとも一実施例では、融合ＥＵグループの各ＥＵは、別々のＳＩＭＤハードウェア・スレッドを実行するように構成されることが可能である。融合ＥＵグループのＥＵの数は、様々な実施例に応じて異なってもよい。少なくとも一実施例では、ＳＩＭＤ８、ＳＩＭＤ１６、及びＳＩＭＤ３２を含むがこれに限定されない様々なＳＩＭＤ幅を、ＥＵごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット３３０９Ａ〜３３０９Ｎは、少なくとも２つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット３３０９Ａは、第１のＥＵ３３０８Ａ、第２のＥＵ３３０８Ｂ、及び第１のＥＵ３３０８Ａと第２のＥＵ３３０８Ｂに共通のスレッド制御論理３３０７Ａを含む。少なくとも一実施例では、スレッド制御論理３３０７Ａは、融合グラフィックス実行ユニット３３０９Ａで実行されているスレッドを制御して、融合実行ユニット３３０９Ａ〜３３０９Ｎ内の各ＥＵを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
【０３０８】
少なくとも一実施例では、１つ又は複数の内部命令キャッシュ（たとえば、３３０６）は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理３３００に含まれる。少なくとも一実施例では、１つ又は複数のデータ・キャッシュ（たとえば、３３１２）は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ３３１０は、３Ｄ動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ３３１０は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
【０３０９】
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理３３００に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ３３０２内のピクセル・プロセッサ論理（たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など）が呼び出されて、出力情報をさらにコンピュートし、結果を出力面（たとえば、色バッファ、深度バッファ、ステンシル・バッファなど）に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ３３０２内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース（ＡＰＩ）付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ３３０２は、スレッド・ディスパッチャ３３０４を介してスレッドを実行ユニット（たとえば、３３０８Ａ）にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ３３０２は、サンプラ３３１０のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように１つ又は複数のピクセルが切り捨てられる。
【０３１０】
少なくとも一実施例では、データ・ポート３３１４は、スレッド実行論理３３００のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート３３１４は、１つ又は複数のキャッシュ・メモリ（たとえば、データ・キャッシュ３３１２）を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
【０３１１】
図３３Ｂに示してあるように、少なくとも一実施例では、グラフィック実行ユニット３３０８は、命令フェッチ・ユニット３３３７、汎用レジスタ・ファイル・アレイ（ＧＲＦ：ｇｅｎｅｒａｌ  ｒｅｇｉｓｔｅｒ  ｆｉｌｅ  ａｒｒａｙ）３３２４、アーキテクチャ・レジスタ・ファイル・アレイ（ＡＲＦ）３３２６、スレッド調停装置（ａｒｂｉｔｅｒ）３３２２、送信ユニット３３３０、ブランチ・ユニット３３３２、ＳＩＭＤ浮動小数点ユニット（ＦＰＵ）３３３４のセット、及び少なくとも一実施例では、専用整数ＳＩＭＤ  ＡＬＵ３３３５のセットを含むことができる。少なくとも一実施例では、ＧＲＦ３３２４及びＡＲＦ３３２６は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット３３０８においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ＡＲＦ３３２６において維持され、スレッド実行中に使用されるデータが、ＧＲＦ３３２４に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ＡＲＦ３３２６のスレッド専用レジスタに保持することが可能である。
【０３１２】
少なくとも一実施例では、グラフィックス実行ユニット３３０８は、同時マルチスレッディング（ＳＭＴ：Ｓｉｍｕｌｔａｎｅｏｕｓ  Ｍｕｌｔｉ−Ｔｈｒｅａｄｉｎｇ）と微細化インターリーブ・マルチスレッディング（ＩＭＴ：Ｉｎｔｅｒｌｅａｖｅｄ  Ｍｕｌｔｉ−Ｔｈｒｅａｄｉｎｇ）の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
【０３１３】
少なくとも一実施例では、グラフィックス実行ユニット３３０８は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド３３０８のスレッド調停装置３３２２は、送信ユニット３３３０、ブランチ・ユニット３３４２、又はＳＩＭＤ  ＦＰＵ３３３４のうちの１つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、ＧＲＦ３３２４内の１２８個の汎用レジスタにアクセスすることができ、ここで各レジスタは、３２ビットのデータ要素のＳＩＭＤ８要素のベクトルとしてアクセス可能な３２バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、ＧＲＦ３３２４内の４Ｋバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大７個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。７個のスレッドが４Ｋバイトにアクセスできる少なくとも一実施例では、ＧＲＦ３３２４は、合計２８Ｋバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
【０３１４】
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット３３３０によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、ＳＩＭＤの発散及び最終的な収束を容易にするために、専用のブランチ・ユニット３３３２にディスパッチされる。
【０３１５】
少なくとも一実施例では、グラフィックス実行ユニット３３０８は、浮動小数点演算を実行するための１つ又は複数のＳＩＭＤ浮動小数点ユニット（ＦＰＵ）３３３４を含む。少なくとも一実施例では、ＦＰＵ３３３４は、整数計算もサポートする。少なくとも一実施例ではＦＰＵ３３３４は、最大Ｍ個の３２ビット浮動小数点（若しくは整数）演算をＳＩＭＤで実行し、又は最大で２Ｍ個の１６ビット整数演算、若しくは１６ビット浮動小数点演算をＳＩＭＤで実行することができる。少なくとも一実施例では、ＦＰＵのうちの少なくとも１つは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の６４ビット浮動小数点をサポートする。少なくとも一実施例では、８ビットの整数ＳＩＭＤ  ＡＬＵ３３３５のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
【０３１６】
少なくとも一実施例では、グラフィックス実行ユニット３３０８の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ（たとえば、サブ・スライス）においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット３３０８は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット３３０８で実行される各スレッドは、異なるチャネルで実行される。
【０３１７】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、推論及び／又は訓練論理１４１５の一部又はすべてが、実行論理３３００に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び／又は訓練の動作は、図１４Ａ又は図１４Ｂに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の１つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理３３００のＡＬＵを構成するオン・チップ若しくはオフ・チップのメモリ及び／又はレジスタ（図示する又は図示せず）に記憶されてもよい。
【０３１８】
図３４は、少なくとも一実施例による並列処理ユニット（「ＰＰＵ」）３４００を示す。少なくとも一実施例では、ＰＰＵ３４００は、ＰＰＵ３４００によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、ＰＰＵ３４００に実行させる機械可読コードで構成される。少なくとも一実施例では、ＰＰＵ３４００はマルチスレッド・プロセッサであり、このプロセッサは、１つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令（機械可読命令若しくは単に命令とも呼ばれる）を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、ＰＰＵ３４００によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、ＰＰＵ３４００は、液晶ディスプレイ（「ＬＣＤ」）デバイスなどのディスプレイ・デバイスに表示できるように２次元（「２Ｄ」）画像データを生成するために、３次元（「３Ｄ」）グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット（「ＧＰＵ」）である。少なくとも一実施例では、ＰＰＵ３４００を利用して、線形代数演算及び機械学習演算などの計算が実行される。図３４は、単に例示を目的とした並列プロセッサの例を示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ／又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
【０３１９】
少なくとも一実施例では、１つ又は複数のＰＰＵ３４００は、任意の高性能コンピューティング（「ＨＰＣ」：Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｃｏｍｐｕｔｉｎｇ）、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、ＰＰＵ３４００は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される：自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
【０３２０】
少なくとも一実施例では、ＰＰＵ３４００は、限定することなく、入力／出力（「Ｉ／Ｏ」）ユニット３４０６、フロント・エンド・ユニット３４１０、スケジューラ・ユニット３４１２、ワーク分配ユニット３４１４、ハブ３４１６、クロスバー（「Ｘｂａｒ」：ｃｒｏｓｓｂａｒ）３４２０、１つ又は複数の汎用処理クラスタ（「ＧＰＣ」：ｇｅｎｅｒａｌ  ｐｒｏｃｅｓｓｉｎｇ  ｃｌｕｓｔｅｒ）３４１８、及び１つ又は複数のパーティション・ユニット（「メモリ・パーティション・ユニット」）３４２２を含む。少なくとも一実施例では、ＰＰＵ３４００は、１つ又は複数の高速ＧＰＵ相互接続（「ＧＰＵ相互接続」）３４０８を介してホスト・プロセッサ又は他のＰＰＵ３４００に接続される。少なくとも一実施例では、ＰＰＵ３４００は、相互接続３４０２を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、ＰＰＵ３４００は、１つ又は複数のメモリ・デバイス（「メモリ」）３４０４を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス３４０４は、限定することなく、１つ又は複数のダイナミック・ランダム・アクセス・メモリ（「ＤＲＡＭ」）デバイスを含む。少なくとも一実施例では、１つ又は複数のＤＲＡＭデバイスは、複数のＤＲＡＭダイが各デバイス内で積層された高帯域幅メモリ（「ＨＢＭ」）サブシステムとして構成されても、且つ／又は構成可能であってもよい。
【０３２１】
少なくとも一実施例では、高速ＧＰＵ相互接続３４０８は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、１つ又は複数の中央処理装置（「ＣＰＵ」）と組み合わされた１つ又は複数のＰＰＵ３４００を含み、ＰＰＵ３４００とＣＰＵとの間のキャッシュ・コヒーレンス、及びＣＰＵマスタリングをサポートする。少なくとも一実施例では、データ及び／又はコマンドは、高速ＧＰＵ相互接続３４０８により、ハブ３４１６を介して、１つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図３４に明示されていないこともある他の構成要素などのＰＰＵ３４００の別のユニットに／から送信される。
【０３２２】
少なくとも一実施例では、Ｉ／Ｏユニット３４０６は、システム・バス３４０２を介してホスト・プロセッサ（図３４には示さず）から通信（たとえば、コマンド、データ）を送受信するように構成される。少なくとも一実施例では、Ｉ／Ｏユニット３４０６は、システム・バス３４０２を介して直接、又は１つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、Ｉ／Ｏユニット３４０６は、システム・バス３４０２を介してＰＰＵ３４００のうちの１つ又は複数などの１つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、Ｉ／Ｏユニット３４０６は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス（「ＰＣＩｅ」）インターフェースを実装して、ＰＣＩｅバスを介して通信できるようにする。少なくとも一実施例では、Ｉ／Ｏユニット３４０６は、外部デバイスと通信するためのインターフェースを実装する。
【０３２３】
少なくとも一実施例では、Ｉ／Ｏユニット３４０６は、システム・バス３４０２を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、ＰＰＵ３４００に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、Ｉ／Ｏユニット３４０６は、デコードされたコマンドを、コマンドによって指定されるＰＰＵ３４００の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット３４１０に送信され、且つ／又はハブ３４１６、若しくは（図３４には明示していない）１つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのＰＰＵ３４００の他のユニットに送信される。少なくとも一実施例では、Ｉ／Ｏユニット３４０６はＰＰＵ３４００の様々な論理ユニット間で、通信をルーティングするように構成される。
【０３２４】
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをＰＰＵ３４００に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとＰＰＵ３４００の両方がアクセス（たとえば、書込み／読取り）可能なメモリ内の領域であり、ポスト・インターフェース・ユニットは、Ｉ／Ｏユニット３４０６によってシステム・バス３４０２を介して送信されるメモリ要求を介して、システム・バス３４０２に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをＰＰＵ３４００に送信し、それによりフロント・エンド・ユニット３４１０は、１つ又は複数のコマンド・ストリームを指すポインタを受信し、１つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをＰＰＵ３４００の様々なユニットに転送する。
【０３２５】
少なくとも一実施例では、フロント・エンド・ユニット３４１０は、１つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なＧＰＣ３４１８を構成するスケジューラ・ユニット３４１２に結合される。少なくとも一実施例では、スケジューラ・ユニット３４１２は、スケジューラ・ユニット３４１２によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのＧＰＣ３４１８にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット３４１２は、ＧＰＣ３４１８のうちの１つ又は複数において、複数のタスクの実行を管理する。
【０３２６】
少なくとも一実施例では、スケジューラ・ユニット３４１２は、ＧＰＣ３４１８で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット３４１４に結合される。少なくとも一実施例では、ワーク分配ユニット３４１４は、スケジューラ・ユニット３４１２から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット３４１４は、ＧＰＣ３４１８のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のＧＰＣ３４１８によって処理されるように割り当てられたタスクを含むいくつかのスロット（たとえば、３２スロット）を備え、アクティブ・タスク・プールは、ＧＰＣ３４１８によりアクティブに処理されているタスクのためのいくつかのスロット（たとえば、４スロット）を備え、それにより、ＧＰＣ３４１８のうちの１つがタスクの実行を完了すると、ＧＰＣ３４１８のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクのうちの１つが選択され、ＧＰＣ３４１８で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがＧＰＣ３４１８上でアイドルである場合には、アクティブ・タスクがＧＰＣ３４１８から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、ＧＰＣ３４１８で実行されるようにスケジューリングされる。
【０３２７】
少なくとも一実施例では、ワーク分配ユニット３４１４は、Ｘバー３４２０を介して１つ又は複数のＧＰＣ３４１８と通信する。少なくとも一実施例では、Ｘバー３４２０は、ＰＰＵ３４００のユニットのうちの多くを、ＰＰＵ３４００の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット３４１４を特定のＧＰＣ３４１８に結合するように構成されることが可能である。少なくとも一実施例では、ＰＰＵ３４００の１つ又は複数の他のユニットも、ハブ３４１６を介してＸバー３４２０に接続されてもよい。
【０３２８】
少なくとも一実施例では、タスクはスケジューラ・ユニット３４１２によって管理され、ワーク分配ユニット３４１４によってＧＰＣ３４１８のうちの１つにディスパッチされる。ＧＰＣ３４１８は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、ＧＰＣ３４１８内の他のタスクによって消費されてもよく、Ｘバー３４２０を介して異なるＧＰＣ３４１８にルーティングされてもよく、又はメモリ３４０４に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット３４２２を介してメモリ３４０４に書き込むことができ、パーティション・ユニット３４２２は、メモリ３４０４への／からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速ＧＰＵ相互接続３４０８を介して別のＰＰＵ３４０４又はＣＰＵに送信することができる。少なくとも一実施例では、ＰＰＵ３４００は、ＰＰＵ３４００に結合された別々の個別メモリ・デバイス３４０４の数に等しいＵ個のパーティション・ユニット３４２２を、限定することなく含む。少なくとも一実施例では、パーティション・ユニット３４２２は、図３６と併せて以下でさらに詳細に説明される。
【０３２９】
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている１つ又は複数のアプリケーションがＰＰＵ３４００で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース（ＡＰＩ）を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、ＰＰＵ３４００によって同時に実行され、ＰＰＵ３４００は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質（「ＱｏＳ」：ｑｕａｌｉｔｙ  ｏｆ  ｓｅｒｖｉｃｅ）、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、ＰＰＵ３４００によって実行するための１つ又は複数のタスクをドライバ・カーネルに生成させる（たとえば、ＡＰＩコールの形の）命令を生成し、ドライバ・カーネルは、ＰＰＵ３４００によって処理されている１つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの１つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド（たとえば、３２個のスレッド）を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図３６と併せて少なくとも一実施例によりさらに詳細に説明される。
【０３３０】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、ＰＰＵ３４００に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ３４００は、別のプロセッサ若しくはシステムによって、又はＰＰＵ３４００によって訓練されてきた訓練済み機械学習モデル（たとえば、ニューラル・ネットワーク）に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、ＰＰＵ３４００は、本明細書に記載の１つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【０３３１】
図３５は、少なくとも一実施例による汎用処理クラスタ（「ＧＰＣ」）３５００を示す。少なくとも一実施例では、ＧＰＣ３５００は、図３４のＧＰＣ３４１８である。少なくとも一実施例では、各ＧＰＣ３５００は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各ＧＰＣ３５００は、限定することなく、パイプライン・マネージャ３５０２、プレ・ラスタ演算ユニット（「ＰＲＯＰ」：ｐｒｅ−ｒａｓｔｅｒ  ｏｐｅｒａｔｉｏｎｓ  ｕｎｉｔ）３５０４、ラスタ・エンジン３５０８、ワーク分配クロスバー（「ＷＤＸ」：ｗｏｒｋ  ｄｉｓｔｒｉｂｕｔｉｏｎ  ｃｒｏｓｓｂａｒ）３５１６、メモリ管理ユニット（「ＭＭＵ」）３５１８、１つ又は複数のデータ処理クラスタ（「ＤＰＣ」：Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  Ｃｌｕｓｔｅｒｓ）３５０６、及びパーツの任意の好適な組合せを含む。
【０３３２】
少なくとも一実施例では、ＧＰＣ３５００の動作は、パイプライン・マネージャ３５０２によって制御される。少なくとも一実施例では、パイプライン・マネージャ３５０２は、ＧＰＣ３５００に配分されたタスクを処理するために１つ又は複数のＤＰＣ３５０６の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ３５０２は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、１つ又は複数のＤＰＣ３５０６のうちの少なくとも１つを構成する。少なくとも一実施例では、ＤＰＣ３５０６は、プログラム可能なストリーミング・マルチプロセッサ（「ＳＭ」：ｓｔｒｅａｍｉｎｇ  ｍｕｌｔｉ−ｐｒｏｃｅｓｓｏｒ）３５１４で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ３５０２は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、ＧＰＣ３５００内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、ＰＲＯＰ３５０４の固定機能ハードウェア・ユニット及び／又はラスタ・エンジン３５０８にルーティングされてもよく、他のパケットは、プリミティブ・エンジン３５１２又はＳＭ３５１４によって処理されるようにＤＰＣ３５０６にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ３５０２は、ニューラル・ネットワーク・モデル及び／又はコンピューティング・パイプラインを実装するように、ＤＰＣ３５０６のうちの少なくとも１つを構成する。
【０３３３】
少なくとも一実施例では、ＰＲＯＰユニット３５０４は、ラスタ・エンジン３５０８及びＤＰＣ３５０６によって生成されたデータを、図３９と併せて上でより詳細に説明したパーティション・ユニット３９２２のラスタ動作（ＲＯＰ）ユニットにルーティングするように構成される。少なくとも一実施例では、ＰＲＯＰユニット３５０４は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン３５０８は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン３５０８は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報（たとえば、タイルのｘ、ｙカバレッジ・マスク）が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでｚテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン３５０８の出力は、ＤＰＣ３５０６内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
【０３３４】
少なくとも一実施例では、ＧＰＣ３５００に含まれる各ＤＰＣ３５０６は、限定することなく、Ｍパイプ・コントローラ（「ＭＰＣ」：Ｍ−Ｐｉｐｅ  Ｃｏｎｔｒｏｌｌｅｒ）３５１０、プリミティブ・エンジン３５１２、１つ又は複数のＳＭ３５１４、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、ＭＰＣ３５１０は、ＤＰＣ３５０６の動作を制御して、パイプライン・マネージャ３５０２から受信したパケットを、ＤＰＣ３５０６内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン３５１２にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、ＳＭ３５１４に送信されてもよい。
【０３３５】
少なくとも一実施例では、ＳＭ３５１４は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、ＳＭ３５１４はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド（たとえば、３２個のスレッド）を同時に実行するように構成され、単一命令複数データ（ＳＩＭＤ）アーキテクチャを実装し、ここでスレッドのグループ（ワープ）内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが同じ命令を実行する。少なくとも一実施例では、ＳＭ３５１４は、単一命令複数スレッド（ＳＩＭＴ）アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、同じ命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。ＳＭ３５１４の少なくとも一実施例は、以下でさらに詳細に説明される。
【０３３６】
少なくとも一実施例では、ＭＭＵ３５１８は、ＧＰＣ３５００とメモリ・パーティション・ユニット（たとえば、図３４のパーティション・ユニット３４２２）との間でインターフェースを提供し、ＭＭＵ３５１８は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、ＭＭＵ３５１８は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための１つ又は複数のトランスレーション・ルックアサイド・バッファ（「ＴＬＢ」）を提供する。
【０３３７】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、ＧＰＣ３５００に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、ＧＰＣ３５００は、別のプロセッサ若しくはシステムによって、又はＧＰＣ３５００によって訓練されてきた訓練済み機械学習モデル（たとえば、ニューラル・ネットワーク）に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、ＧＰＣ３５００は、本明細書に記載の１つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【０３３８】
図３６は、少なくとも一実施例による並列処理ユニット（「ＰＰＵ」）のメモリ・パーティション・ユニット３６００を示す。少なくとも一実施例では、パーティション・ユニット３６００は、限定することなく、ラスタ演算（「ＲＯＰ」）ユニット３６０２、レベル２（「Ｌ２」）キャッシュ３６０４、メモリ・インターフェース３６０６、及びそれらの任意の好適な組合せを含む。一実施例では、メモリ・インターフェース３６０６はメモリに結合される。一実施例では、メモリ・インターフェース３６０６は、高速データ転送のために、３２、６４、１２８、１０２４ビットのデータ・バスなどを実装してもよい。少なくとも一実施例では、ＰＰＵは、パーティション・ユニット３６００の対当たりにメモリ・インターフェース３６０６を１つの、Ｕ個のメモリ・インターフェース３６０６を組み込んでおり、ここでパーティション・ユニット３６００の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、ＰＰＵは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン５、同期ダイナミック・ランダム・アクセス・メモリ（「ＧＤＤＲ５  ＳＤＲＡＭ」）など、最大Ｙ個のメモリ・デバイスに接続されてもよい。
【０３３９】
少なくとも一実施例では、メモリ・インターフェース３６０６は、高帯域幅メモリの第２世代（「ＨＢＭ２」：ｈｉｇｈ  ｂａｎｄｗｉｄｔｈ  ｍｅｍｏｒｙ  ｓｅｃｏｎｄ  ｇｅｎｅｒａｔｉｏｎ）メモリ・インターフェースを実装し、ＹはＵの半分に等しい。少なくとも一実施例では、ＨＢＭ２メモリ・スタックは、ＰＰＵと同じ物理パッケージに位置付けられて、従来のＧＤＤＲ５  ＳＤＲＡＭシステムに比べて実質的な電力と面積の節約を実現する。少なくとも一実施例では、各ＨＢＭ２スタックは、限定することなく４個のメモリ・ダイを含み、Ｙは４に等しく、各ＨＢＭ２スタックは、１つのダイ当たりに２つの１２８ビット・チャネルの合計８チャネル、及び１０２４ビットのデータ・バス幅を含む。少なくとも一実施例では、メモリは、１ビット・エラー訂正２ビット・エラー検出（「ＳＥＣＤＥＤ」：Ｓｉｎｇｌｅ−Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｄｏｕｂｌｅ−Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｎｇ）エラー訂正コード（「ＥＣＣ」）をサポートしてデータを保護する。ＥＣＣは、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供する。
【０３４０】
少なくとも一実施例では、ＰＰＵは、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット３６００は、統合されたメモリをサポートして、中央処理装置（「ＣＰＵ」）及びＰＰＵメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにＰＰＵがアクセスする頻度を追跡して、より頻繁にページにアクセスしているＰＰＵの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速ＧＰＵ相互接続３４０８は、アドレス・トランスレーション・サービスをサポートして、ＰＰＵが直接ＣＰＵのページ・テーブルにアクセスできるようにし、ＰＰＵによるＣＰＵメモリへのフル・アクセスを実現する。
【０３４１】
少なくとも一実施例では、コピー・エンジンは、複数のＰＰＵ間、又はＰＰＵとＣＰＵの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット３６００がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて（たとえば、ページ移動不可能にされて）、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
【０３４２】
少なくとも一実施例によれば、図３４のメモリ３４０４又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット３６００によってフェッチされ、Ｌ２キャッシュ３６０４に記憶され、このＬ２キャッシュは、オン・チップに位置付けられ、様々ＧＰＣ間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット３６００は、対応するメモリ・デバイスに関連付けられたＬ２キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、ＧＰＣ内の様々なユニットに実装される。少なくとも一実施例では、ＳＭ３５１４のそれぞれは、レベル１（「Ｌ１」）キャッシュを実装してもよく、ここでＬ１キャッシュは、特定のＳＭ３５１４専用のプライベート・メモリであり、Ｌ２キャッシュ３６０４からのデータは、ＳＭ３５１４の機能ユニットで処理するために、Ｌ１キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、Ｌ２キャッシュ３６０４は、メモリ・インターフェース３６０６及びＸバー３４２０に結合される。
【０３４３】
少なくとも一実施例では、ＲＯＰユニット３６０２は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ＲＯＰユニット３６０２は、少なくとも一実施例では、ラスタ・エンジン３５０８と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン３５０８の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ＲＯＰユニット３６０２は、深度バッファを更新し、深度テストの結果をラスタ・エンジン３５０８に送信する。パーティション・ユニット３６００の数はＧＰＣの数とは異なってもよく、したがって、各ＲＯＰユニット３６０２は、少なくとも一実施例では、ＧＰＣのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ＲＯＰユニット３６０２は、異なるＧＰＣから受信したパケットを追跡し、ＲＯＰユニット３６０２によって生成された結果を、Ｘバー３４２０を通してどれにルーティングするかを判定する。
【０３４４】
図３７は、少なくとも一実施例による、ストリーミング・マルチプロセッサ（「ＳＭ」）３７００を示す。少なくとも一実施例では、ＳＭ３７００は、図３５のＳＭである。少なくとも一実施例では、ＳＭ３７００は、限定することなく、命令キャッシュ３７０２、１つ又は複数のスケジューラ・ユニット３７０２、レジスタ・ファイル３７０８、１つ又は複数の処理コア（「コア」）３７１０、１つ又は複数の特殊機能ユニット（「ＳＦＵ」：ｓｐｅｃｉａｌ  ｆｕｎｃｔｉｏｎ  ｕｎｉｔ）３７１２、１つ又は複数のロード／ストア・ユニット（「ＬＳＵ」ｌｏａｄ／ｓｔｏｒｅ  ｕｎｉｔ）３７１４、相互接続ネットワーク３７１６、共有メモリ／レベル１（「Ｌ１」）キャッシュ３７１８、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット（「ＰＰＵ」）の汎用処理クラスタ（「ＧＰＣ」）で実行するためにタスクをディスパッチし、各タスクは、ＧＰＣ内の特定のデータ処理クラスタ（「ＤＰＣ」）に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはＳＭ３７００のうちの１つに配分される。少なくとも一実施例では、スケジューラ・ユニット３７０４は、ワーク分配ユニットからタスクを受信し、ＳＭ３７００に割り当てられた１つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット３７０４は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも１つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット３７０４は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット（たとえば、処理コア３７１０、ＳＦＵ３７１２、及びＬＳＵ３７１４）にディスパッチする。
【０３４５】
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動ＡＰＩは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア（たとえば、ｓｙｎｃｔｈｒｅａｄｓ（）関数）を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック（すなわち、単一スレッドと同じ大きさ）の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ−コンシューマ並列性、日和見並列性（ｏｐｐｏｒｔｕｎｉｓｔｉｃ  ｐａｒａｌｌｅｌｉｓｍ）、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
【０３４６】
少なくとも一実施例では、ディスパッチ・ユニット３７０６は、機能ユニットの１つ又は複数に命令を送信するように構成され、スケジューラ・ユニット３７０４は、同じワープからの２つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする２つのディスパッチ・ユニット３７０６を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット３７０４は、単一のディスパッチ・ユニット３７０６又は追加のディスパッチ・ユニット３７０６を含む。
【０３４７】
少なくとも一実施例では、各ＳＭ３７００は、ＳＭ３７００の機能ユニットにレジスタのセットを提供するレジスタ・ファイル３７０８を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル３７０８は、各機能ユニットがレジスタ・ファイル３７０８の専用部分に配分されるように、それぞれの機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル３７０８は、ＳＭ３７００によって実行されている異なるワープ間で分割され、レジスタ・ファイル３７０８は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各ＳＭ３７００は、限定することなく、複数のＬ処理コア３７１０を含む。少なくとも一実施例では、各ＳＭ３７００は、限定することなく、多数の（たとえば、１２８個以上の）個別の処理コア３７１０を含む。少なくとも一実施例では、各処理コア３７１０は、少なくとも一実施例では、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び／又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのＩＥＥＥ７５４−２００８規格を実装する。少なくとも一実施例では、処理コア３７１０は、限定することなく、６４個の単精度（３２ビット）浮動小数点コア、６４個の整数コア、３２個の倍精度（６４ビット）浮動小数点コア、及び８個のテンソル・コアを含む。
【０３４８】
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、１つ又は複数のテンソル・コアは、処理コア３７１０に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、４×４の行列で動作し、行列の積和演算（ｍａｔｒｉｘ  ｍｕｌｔｉｐｌｙ  ａｎｄ  ａｃｃｕｍｕｌａｔｅ  ｏｐｅｒａｔｉｏｎ）Ｄ＝Ａ×Ｂ＋Ｃを実行し、ここでＡ、Ｂ、Ｃ、及びＤは４×４の行列である。
【０３４９】
少なくとも一実施例では、行列乗算の入力Ａ及びＢは、１６ビットの浮動小数点行列であり、和の行列Ｃ及びＤは、１６ビットの浮動小数点又は３２ビットの浮動小数点行列である。少なくとも一実施例では、テンソル・コアは、３２ビットの浮動小数点の和を有する１６ビットの浮動小数点入力データで動作する。少なくとも一実施例では、１６ビットの浮動小数点乗算は、６４個の演算を使用し、結果的に完全精度の積をもたらし、次いでその積が、４×４×４の行列乗算の他の中間積との３２ビット浮動小数点加算を使用して加算される。テンソル・コアを使用して、少なくとも一実施例では、これらの小さい要素から構築される、はるかに大きい２次元又はさらに高次元の行列演算が実行される。少なくとも一実施例では、ＣＵＤＡ９Ｃ＋＋ＡＰＩなどのＡＰＩは、ＣＵＤＡ−Ｃ＋＋プログラムからテンソル・コアを効率的に使用するために、特殊な行列ロード演算、行列積和演算、及び行列ストア演算を公開している。少なくとも一実施例では、ＣＵＤＡレベルにおいて、ワープ・レベル・インターフェースは、ワープの３２スレッドすべてにわたる１６×１６のサイズの行列を仮定している。
【０３５０】
少なくとも一実施例では、各ＳＭ３７００は、特殊関数（たとえば、属性評価、逆数平方根など）を実行するＭ個のＳＦＵ３７１２を、限定することなく含む。少なくとも一実施例では、ＳＦＵ３７１２は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、ＳＦＵ３７１２は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ（たとえば、テクセルの２Ｄアレイ）をロードして、ＳＭ３７００により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ／レベル１キャッシュ３７１８に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ（たとえば、詳細さのレベルが異なるテクスチャ・マップ）を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各ＳＭ３７００は、限定することなく、２つのテクスチャ・ユニットを含む。
【０３５１】
各ＳＭ３７００は、少なくとも一実施例では、共有メモリ／Ｌ１キャッシュ３７１８とレジスタ・ファイル３７０８の間でロード及びストア動作を実装するＮ個のＬＳＵ３７１４を、限定することなく含む。各ＳＭ３７００は、少なくとも一実施例では、機能ユニットのそれぞれをレジスタ・ファイル３７０８に接続し、ＬＳＵ３７１４をレジスタ・ファイル３７０８に接続する相互接続ネットワーク３７１６と、共有メモリ／Ｌ１キャッシュ３７１８を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク３７１６はクロスバーであり、このクロスバーは、いずれかの機能ユニットをレジスタ・ファイル３７０８のいずれかのレジスタに接続し、ＬＳＵ３７１４をレジスタ・ファイル３７０８と共有メモリ／Ｌ１キャッシュ３７１８のメモリ・ロケーションとに接続するように構成されてもよい。
【０３５２】
少なくとも一実施例では、共有メモリ／Ｌ１キャッシュ３７１８は、少なくとも一実施例では、ＳＭ３７００とプリミティブ・エンジンの間、及びＳＭ３７００のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ／Ｌ１キャッシュ３７１８は、限定することなく、１２８ＫＢのストレージ容量を備え、ＳＭ３７００からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ／Ｌ１キャッシュ３７１８は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ／Ｌ１キャッシュ３７１８、Ｌ２キャッシュ、及びメモリのうちの１つ又は複数は、補助ストレージである。
【０３５３】
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード／ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ／Ｌ１キャッシュ３７１８内に統合することによって、共有メモリ／Ｌ１キャッシュ３７１８が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接ＤＰＣに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドＩＤを使用して同じプログラムを実行し、ＳＭ３７００を使用して、プログラムを実行し計算を行い、共有メモリ／Ｌ１キャッシュ３７１８を使用してスレッド間で通信し、ＬＳＵ３７１４を使用して、共有メモリ／Ｌ１キャッシュ３７１８及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、ＳＭ３７００は、ＤＣＰ上で新規のワークを起動するためにスケジューラ・ユニット３７０２が使用できるコマンドを書き込む。
【０３５４】
少なくとも一実施例では、ＰＰＵは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン（たとえば、ワイヤレスの携帯型デバイス）、パーソナル・デジタル・アシスタント（「ＰＤＡ」）、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、ＰＰＵは、単一の半導体基板に具体化される。少なくとも一実施例では、ＰＰＵは、追加のＰＰＵ、メモリ、縮小命令セット・コンピュータ（「ＲＩＳＣ」）ＣＰＵ、メモリ管理ユニット（「ＭＭＵ」）、デジタル−アナログ変換器（「ＤＡＣ」：ｄｉｇｉｔａｌ−ｔｏ−ａｎａｌｏｇ  ｃｏｎｖｅｒｔｅｒ）などの１つ又は複数の他のデバイスとともにシステム・オン・チップ（「ＳｏＣ」）に含まれる。
【０３５５】
少なくとも一実施例では、ＰＰＵは、１つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のＰＣＩｅスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、ＰＰＵは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット（「ｉＧＰＵ」：ｉｎｔｅｇｒａｔｅｄ  ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ）であってもよい。
【０３５６】
１つ若しくは複数の実施例に関連する推論及び／又は訓練の動作を実行するために、推論及び／又は訓練論理１４１５が使用される。推論及び／又は訓練論理１４１５に関する詳細事項は、図１４Ａ及び／又は図１４Ｂと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、ＳＭ３７００に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、ＳＭ３７００は、別のプロセッサ若しくはシステムによって、又はＳＭ３７００によって訓練されてきた訓練済み機械学習モデル（たとえば、ニューラル・ネットワーク）に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、ＳＭ３７００は、本明細書に記載の１つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
【０３５７】
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置（「ＣＰＵ」）及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
【０３５８】
少なくとも一実施例では、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ２００４及び／又は二次ストレージに記憶される。コンピュータ・プログラムは、１つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム２０００が実行できるようにする。メモリ２００４、ストレージ、及び／又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー（登録商標）・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク（「ＤＶＤ」：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）ドライブ、記録デバイス、ユニバーサル・シリアル・バス（「ＵＳＢ」）フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び／若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び／又は機能は、ＣＰＵ２００２、並列処理システム２０１２、ＣＰＵ２００２と並列処理システム２０１２の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット（たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど）、及び集積回路の任意の好適な組合せの文脈において実装される。
【０３５９】
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び／又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム２０００は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン（たとえば、ワイヤレスの携帯型デバイス）、パーソナル・デジタル・アシスタント（「ＰＤＡ」）、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び／又は任意の他のタイプの論理の形をとってもよい。
【０３６０】
少なくとも一実施例では、並列処理システム２０１２は、限定することなく、複数の並列処理ユニット（「ＰＰＵ」）２０１４、及び関連メモリ２０１６を含む。少なくとも一実施例では、ＰＰＵ２０１４は、相互接続２０１８及びスイッチ２０２０又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム２０１２は、計算タスクをＰＰＵ２０１４にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット（「ＧＰＵ」）のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、ＰＰＵ２０１４の一部又は全部にわたって共有され、（たとえば、読取り及び／又は書込みアクセスのために）アクセス可能であるが、こうした共有メモリは、ＰＰＵ２０１４に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、ＰＰＵ２０１４の動作は、＿ｓｙｎｃｔｈｒｅａｄｓ（）などのコマンドを使用することによって同期され、ここで（たとえば、複数のＰＰＵ２０１４にわたって動作している）ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
【０３６１】
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の１つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
【０３６２】
開示される実施例を説明する文脈において（特に、以下の特許請求の範囲の文脈において）「ａ」及び「ａｎ」及び「ｔｈｅ」という用語、並びに同様の指示物を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきである。「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、「収容する（ｃｏｎｔａｉｎｉｎｇ）」という用語は、別段の記載のない限り、オープンエンドの用語（「含むが、これに限定されない」を意味する）と解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。「セット」（たとえば、「アイテムのセット」）又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、１つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
【０３６３】
「Ａ、Ｂ、及びＣのうちの少なくとも１つ」又は「Ａ、Ｂ、及びＣのうちの少なくとも１つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、ＡかＢかＣである、又はＡとＢとＣのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。たとえば、３つの部材を有するセットの説明的な例では、「Ａ、Ｂ、及びＣのうちの少なくとも１つ」並びに「Ａ、Ｂ、及びＣのうちの少なくとも１つ」という結合句は、次のセットのうちのいずれかを指す：｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝。したがって、こうした結合語は、ある一定の実施例が、少なくとも１つのＡ、少なくとも１つのＢ、及び少なくとも１つのＣのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す（たとえば、「複数の項目（ａ  ｐｌｕｒａｌｉｔｙ  ｏｆ  ｉｔｅｍｓ）」は複数の項目（ｍｕｌｔｉｐｌｅ  ｉｔｅｍｓ）を示す）。複数である項目の数は、少なくとも２つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「〜に基づく」という言い回しは、「少なくとも部分的に〜に基づく」を意味し、「〜だけに基づく」を意味しない。
【０３６４】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス（又はその変形及び／又は組合せ）などのプロセスは、実行可能命令で構成された１つ又は複数のコンピュータ・システムの制御下で実行され、１つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード（たとえば、実行可能な命令、１つ若しくは複数のコンピュータ・プログラム、又は１つ若しくは複数のアプリケーション）として実装される。少なくとも一実施例では、コードは、たとえば１つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号（たとえば、伝播する一時的な電気若しくは電磁送信）を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路（たとえば、バッファ、キャッシュ、及びキュー）を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード（たとえば、実行可能コード又はソース・コード）は、１つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの１つ又は複数のプロセッサによって実行されたときに（すなわち、実行された結果として）、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている（又は、実行可能命令を記憶するための他のメモリを有する）。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの１つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置（「ＣＰＵ」）は一部の命令を実行し、グラフィックス・プロセッシング・ユニット（「ＧＰＵ」）は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【０３６５】
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する１つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び／又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
【０３６６】
本明細書に提供されるあらゆる例、又は例示的な言葉（たとえば、「など」）の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
【０３６７】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【０３６８】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の例では、「接続される」又は「結合される」は、２つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、２つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【０３６９】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び／又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び／又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び／又はプロセスを指す。
【０３７０】
同様に、「プロセッサ」という用語は、レジスタ及び／又はメモリからの電子データを処理し、その電子データを、レジスタ及び／又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、ＣＰＵ又はＧＰＵであってもよい。「コンピューティング・プラットフォーム」は、１つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び／又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、１つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【０３７１】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【０３７２】
上の議論は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【０３７３】
さらに、主題は、構造的特徴及び／又は方法論的行為に特有の言葉で説明されてきたが、添付の特許請求の範囲で請求される主題は、必ずしも説明された特有の特徴又は行為に限定されないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形として開示されている。
【０３７４】
本明細書及び図面は、適宜、限定的ではなく説明的な意味で考えられるべきである。しかし、特許請求の範囲に述べる本発明のより広い趣旨及び範囲から逸脱することなく、本発明に様々な修正及び変更が加えられてもよいことは明らかである。
【０３７５】
他の変形形態は、本開示の趣旨の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の１つ又は複数の開示された形に本発明を限定する意図はなく、その反対に、添付の特許請求の範囲に定義される本発明の趣旨及び範囲に入るすべての修正、代替的な構成、及び等価物を網羅することを意図している。
【０３７６】
開示される実施例を説明する文脈において（特に、以下の特許請求の範囲の文脈において）「ａ」及び「ａｎ」及び「ｔｈｅ」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明確に否定されない限り、単数と複数の両方を網羅すると解釈されるべきである。「備える（ｃｏｍｐｒｉｓｉｎｇ）」、「有する（ｈａｖｉｎｇ）」、「含む（ｉｎｃｌｕｄｉｎｇ）」、及び「収容する（ｃｏｎｔａｉｎｉｎｇ）」という用語は、別段の記載のない限り、オープンエンドの用語（すなわち、「含むが、これに限定されない」を意味する）と解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、その範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎず、それぞれの別々の値は、本明細書に個々に詳述されているかのように本明細書に組み込まれる。「セット」（たとえば、「アイテムのセット」）又は「サブセット」という用語の使用は、別段の記載がない限り、又は文脈によって否定されていない限り、１つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、別段の記載がない限り、又は文脈によって否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
【０３７７】
「Ａ、Ｂ、及びＣのうちの少なくとも１つ」又は「Ａ、Ｂ、及びＣのうちの少なくとも１つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、ＡかＢかＣであってもよい、又はＡとＢとＣのセットのいずれかの空でないサブセットであってもよいことを提示するために一般に使用される文脈で理解される。たとえば、３つの部材を有するセットの説明的な実例では、「Ａ、Ｂ、及びＣのうちの少なくとも１つ」並びに「Ａ、Ｂ、及びＣのうちの少なくとも１つ」という結合句は、次のセットのうちのいずれかを指す：｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝。したがって、こうした結合語は、ある一定の実施例が、少なくとも１つのＡ、少なくとも１つのＢ、及び少なくとも１つのＣのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない限り、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す（たとえば、「複数の項目（ａ  ｐｌｕｒａｌｉｔｙ  ｏｆ  ｉｔｅｍｓ）」は複数の項目（ｍｕｌｔｉｐｌｅ  ｉｔｅｍｓ）を示す）。複数の項目の数は、少なくとも２つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない限り、又は文脈からそうでないことが明らかでない限り、「〜に基づく」という言い回しは、「少なくとも部分的に〜に基づく」を意味し、「〜だけに基づく」を意味しない。
【０３７８】
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない限り、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。一実施例では、本明細書に記載のプロセス（又はその変形及び／又は組合せ）などのプロセスは、実行可能命令とともに構成された１つ又は複数のコンピュータ・システムの制御下で実行され、１つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード（たとえば、実行可能な命令、１つ若しくは複数のコンピュータ・プログラム、又は１つ若しくは複数のアプリケーション）として実装される。一実施例では、コードは、たとえば１つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号（たとえば、伝播する一時的な電気若しくは電磁送信）を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路（たとえば、バッファ、キャッシュ、及びキュー）を含む非一時的なコンピュータ読取り可能ストレージ媒体である。一実施例では、コード（たとえば、実行可能コード又はソース・コード）は、１つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの１つ又は複数のプロセッサによって実行されたときに（すなわち、実行された結果として）、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている（又は、実行可能命令を記憶するための他のメモリを有する）。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの１つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインＣＰＵは一部の命令を実行し、グラフィックス・プロセッサ・ユニットは他の命令を実行する。一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
【０３７９】
したがって、一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する１つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び／又はソフトウェアとともに構成される。さらに、本開示の一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより分散型のコンピュータ・システムが本明細書に記載の動作を実行するようになり、単一のデバイスがすべての動作を実行しないようになる。
【０３８０】
本明細書に提供されるあらゆる実例、又は例示的な言葉（たとえば、「など」）の使用は、本発明の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本発明の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本発明の実践に不可欠なものとして示すと解釈されるべきではない。
【０３８１】
発明者らが知っている、本発明を実施するのに最良のモードを含む本開示の実施例が、本明細書において説明される。これらの実施例の変形形態は、先の説明を読めば、当業者には明らかになることがある。発明者らは、当業者がこうした変形形態を適宜採用することを予想しており、発明者らは、本開示の実施例が、本明細書に具体的に説明されたのとは別のやり方で実践されることを意図している。したがって、本開示の範囲は、本明細書に添付の特許請求の範囲に述べる主題のすべての修正形態及び等価物を、適用法により許可されるものとして含む。さらに、上述した要素の実現可能なすべての変形形態における任意の組合せは、本明細書に別段の記載のない限り、又は文脈により明確に否定されていない限り、本開示の範囲によって包含される。
【０３８２】
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
【０３８３】
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の実例では、「接続される」又は「結合される」は、２つ以上の要素が直接又は間接的に物理的又は電気的に互いに接触していることを示すために使用されてもよい。また「結合される」は、２つ以上の要素が互いに直接接触していないが、なお互いに連動又は相互作用することを意味してもよい。
【０３８４】
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、「判定する」などの用語は、コンピューティング・システムのレジスタ及び／又はメモリ内の、電子的などの物理的な量として表されるデータを、コンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータにするよう操作及び／又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの動作及び／又はプロセスを指す。
【０３８５】
同様に、「プロセッサ」という用語は、レジスタ及び／又はメモリからの電子データを処理し、その電子データを、レジスタ及び／又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な実例として、「プロセッサ」は、中央処理装置（ＣＰＵ）又はグラフィックス・プロセッシング・ユニット（ＧＰＵ）であってもよい。「コンピューティング・プラットフォーム」は、１つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び／又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、システムが１つ又は複数の方法を具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
【０３８６】
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、若しくはコンピュータ実装機械に入力することに言及することがある。アナログ・データ及びデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々な方法で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することがある。様々な実例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
【０３８７】
上の議論は、説明した技法の例示的な実装形態について述べているが、説明した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
【０３８８】
さらに、主題は、構造的特徴及び／又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で定義される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。
【図１】
2020192676.tif 000015
【図２】
2020192676.tif 000016
【図３】
2020192676.tif 000017
【図４】
2020192676.tif 000018
【図５】
2020192676.tif 000019
【図６】
2020192676.tif 000020
【図７】
2020192676.tif 000021
【図８】
2020192676.tif 000022
【図９】
2020192676.tif 000023
【図１０】
2020192676.tif 000024
【図１１】
2020192676.tif 000025
【図１２】
2020192676.tif 000026
【図１３】
2020192676.tif 000027
【図１４Ａ】
2020192676.tif 000028
【図１４Ｂ】
2020192676.tif 000029
【図１５】
2020192676.tif 000030
【図１６】
2020192676.tif 000031
【図１７Ａ】
2020192676.tif 000032
【図１７Ｂ】
2020192676.tif 000033
【図１７Ｃ】
2020192676.tif 000034
【図１７Ｄ】
2020192676.tif 000035
【図１８】
2020192676.tif 000036
【図１９】
2020192676.tif 000037
【図２０】
2020192676.tif 000038
【図２１】
2020192676.tif 000039
【図２２】
2020192676.tif 000040
【図２３Ａ】
2020192676.tif 000041
【図２３Ｂ】
2020192676.tif 000042
【図２４Ａ】
2020192676.tif 000043
【図２４Ｂ】
2020192676.tif 000044
【図２５】
2020192676.tif 000045
【図２６Ａ】
2020192676.tif 000046
【図２６Ｂ】
2020192676.tif 000047
【図２６Ｃ】
2020192676.tif 000048
【図２６Ｄ】
2020192676.tif 000049
【図２７】
2020192676.tif 000050
【図２８】
2020192676.tif 000051
【図２９】
2020192676.tif 000052
【図３０】
2020192676.tif 000053
【図３１】
2020192676.tif 000054
【図３２】
2020192676.tif 000055
【図３３Ａ】
2020192676.tif 000056
【図３３Ｂ】
2020192676.tif 000057
【図３４】
2020192676.tif 000058
【図３５】
2020192676.tif 000059
【図３６】
2020192676.tif 000060
【図３７】
2020192676.tif 000061
【外国語明細書】
2020192676000001.pdf