少なくとも一実施例では、物体の位置特定は、図1Aの図100に示すように車両の内部キャビンなどの空間内で実行される。少なくとも一実施例では、車両は、ハンドル、計器パネル、フロントガラス、及びミラーなどの様々な構成要素を含むことができ、それらを、この車両にいる間にドライバ104又は他の乗員は見ることができる。少なくとも一実施例では、ドライバ104の位置についての判定は、少なくとも1つのカメラを使用して捕捉された画像又はビデオのデータを使用して行うことができる。少なくとも一実施例では、カメラは、バックミラーに取り付けられたカメラ102、又は計器パネルに配置されたカメラ106など、車両の様々なロケーションに設置されてもよい。少なくとも一実施例では、これらのカメラは、ドライバ又はこの車両の他の乗車者の表示を含む画像データを捕捉することができ、この画像が分析されて、ドライバについての情報を判定することができる。少なくとも一実施例では、この情報は、ドライバ又は他の乗車者の位置、姿勢、頭部位置、及び視線方向を含むことができる。
少なくとも一実施例では、視線方向情報を使用して、車両の乗車者が所与の時点で何を見ているかを判定することができる。少なくとも一実施例では、これは、ドライバが運転中にフロントガラスから外を見ているか、又はフロントガラスから目を逸らして、バックミラー、計器パネル、若しくは車両内の他の場所を見ているかどうかを判定することを含む。少なくとも一実施例では、こうした情報は、車両前方を歩く歩行者など車両の周りで起こっている動きに、ドライバが注意を払っていないか、又はそうではなくそれを見ることができないかどうかを判定するのに有用であり得る。少なくとも一実施例では、ドライバがフロントガラスから遠方を見ておらず、車両を停止させるのに十分な時間がある状態でこの歩行者を見ない可能性があることを車両監視システムが判定することができる場合には、車両監視システムは、歩行者との衝突を回避するために自動的に又は自律的にこの車両を停止させる決定をすることができる。
しかし、少なくとも一実施例では、乗車者が見ているロケーションには、車両における物体の相対的なロケーションに関する知識が必要である。少なくとも一実施例では、監視システムは、乗車者が特定の物体を見ているのかどうか、又はこの視線方向がその物体に交差するのかどうかを判定できるように、フロントガラス又はミラーなどの物体のロケーションに関する情報を有する必要がある。車両が固定されたカメラ及び物体のセットを有する少なくとも一実施例では、訓練のためのグラウンド・トゥルースを提供することができるこれらの既知の位置に基づき、モデルを生成及び訓練することができる。しかし、少なくとも一実施例では、こうした情報を捕捉するのに使用されるカメラ又はセンサは、車両内の又は車両に近接した様々な場所に位置付けられることが可能である。少なくとも一実施例では、これらのカメラは、この車両内で移動されてもよく、又は選択可能であってもよい。少なくとも一実施例では、デバイスを移動できることは、車両内又は他のこうした区域内で、物体又はロケーションに固定された関係がないので、問題になることがある。
少なくとも一実施例では、これらのカメラ若しくはセンサのうちの1つ又は複数のカメラ若しくはセンサからの捕捉された画像又はビデオのデータに少なくとも部分的に基づき、視線方向又はロケーションなどの情報を推論するように、ニューラル・ネットワーク又は機械学習を訓練することができる。少なくとも一実施例では、カメラは、車両内のあらゆるロケーションに設置することができるので、車両内の様々なロケーションについての訓練データを使用して、ニューラル・ネットワークを訓練する必要がある。少なくとも一実施例では、カメラのすべての考えられるロケーション及び配向について、訓練データを取得するのは現実的ではない。少なくとも一実施例では、カメラを車両内の任意のロケーションに設置することは、グラウンド・トゥルース・データの欠落をもたらすことがあり、これは訓練に問題を生じさせる恐れがある。少なくとも一実施例では、車両内の点又はロケーションは、固定され既知であるかもしれないが、この車両内のカメラの位置及び配向は既知でないことがあり、それにより、カメラに対するこれらの点又は物体の相対位置が不確実になり、グラウンド・トゥルースが利用可能にならない。少なくとも一実施例では、図1B及び図1Cに示すように、異なるカメラから捕捉された画像データは、異なるロケーションにある物体の表示を含むことになる。少なくとも一実施例では、図1Bに示す画像120は、バックミラー上の第1のカメラ102の視点から見たドライバの表示を含み、図1Cに示す画像140は、計器パネル上の第2のカメラ106の視点から見たこのドライバの表示を含む。少なくとも一実施例では、ドライバは、両方の画像において計器パネルを見ている。しかし、少なくとも一実施例では、この車両に対する所与のカメラのグラウンド・トゥルース・データ、並びに既知の位置及び配向がなければ、このドライバが何を見ているかを確実に判定することができない。
少なくとも一実施例では、車両内の様々な物体の座標系を考慮することができる。少なくとも一実施例では、図1Dの図160に示すように、第1のカメラに関連する座標系162が存在してもよく、この座標系の原点及び配向は、カメラ・センサの位置及び配向に基づく。少なくとも一実施例では、この車両の座標系164が同様に存在し、ここでこの車両内の点は車両座標系164に対して固定される。少なくとも一実施例では、異なる位置にカメラを設置すると、これらの座標系164、164の間で相対距離及び配向が異なることになる。少なくとも一実施例では、ドライバ又は乗車者の座標系166など、追加の座標系も存在してよく、この座標系166は、その人の位置、向き、又は姿勢などの要因に基づき、経時的に変化することがある。少なくとも一実施例では、この車両内の別のカメラ又はセンサに対応する別の座標系168を考慮することができる。少なくとも一実施例では、それぞれが1つ又は複数の対応する座標系を有することができる追加のカメラ、センサ、又は物体が存在してもよい。
少なくとも一実施例では、これらの座標系の少なくともいくつかを相関させる又はブリッジするように試みることができる。少なくとも一実施例では、図2の図200に示す車両配向に対応して、カメラがバックミラーに近接して位置付けられてもよく、そのカメラは、少なくとも動作中、又は乗車者が検出されたときに、この車両の内部の画像データを連続的に捕捉する主キャビン・カメラとすることができる。少なくとも一実施例では、このカメラを使用して捕捉した画像データは、このカメラに対する物体の表示を含むことになるので、カメラ座標系202は、このカメラに対して決定された座標系であると考えることができる。少なくとも一実施例では、このカメラに対するこれらの物体のロケーションを表すことは、カメラ座標系におけるそれらの位置を判定することによって簡単にすることができる。しかし、少なくとも一実施例では、カメラ位置が任意であったり、車両内の又は車両に近接した考えられる多数の位置のうちの1つであったりする場合があるので、このカメラ座標系のロケーションは、訓練用のグラウンド・トゥルース・データを有していないことがある。
少なくとも一実施例では、車両座標系204は、この車両のキャビンのためのものと考えることができる。少なくとも一実施例では、この座標系204は、この車両内に原点が定義される場所など、特定のロケーションを中心とすることができる。少なくとも一実施例では、この原点は、モデル化に使用するために車両内の決められた点に設置することができるキャリブレーション取付け部208又は他のそのような物体に対応してもよい。少なくとも一実施例では、キャリブレーション取付け部208は、カメラに対するキャリブレーション取付け部208の相対位置206及び配向を判定するのに使用することができる情報を含むことができる。少なくとも一実施例では、キャリブレーション取付け部208は、非対称なチェッカーボード・パターン、又はこのパターンの配向を判定するのに使用することができる他の非対称なパターンを含むことができる。少なくとも一実施例では、平坦なパターンは、3次元におけるこのキャリブレーション取付け部の相対的な配向についての情報をさらに提供することができる。少なくとも一実施例では、カメラによって捕捉された画像データは、このキャリブレーション取付け部208の表示を含むことができる。少なくとも一実施例では、画像データを分析して、カメラ座標系におけるこのカメラに対するこのキャリブレーション取付け部204の相対位置及び配向を判定することができる。少なくとも一実施例では、この車両内の点に対するグラウンド・トゥルース・データは、この車両座標系において既知である。少なくとも一実施例では、車両座標系204内の点を、カメラ座標系202の対応する点にマッピングすることができるので、カメラ座標系202に対する車両座標系204の相対位置及び配向を判定することにより、この構成のためのモデル又はニューラル・ネットワークを訓練するのに使用することができるグラウンド・トゥルース・データが提供される。
少なくとも一実施例では、物体のセット又は車両の対象領域を判定することができる。少なくとも一実施例では、これらの物体は、車両の前方の物体を見るためのフロントガラス領域、車両の横若しくは後方の物体を見るためのバックミラー若しくはサイドミラー、車両の動作についての情報を得るための計器パネル、又は他のタイプのコンテンツ若しくは情報を得るためのディスプレイ画面など、車両のドライバ若しくは乗車者が見るかもしれない物を含むことができる。少なくとも一実施例では、上記その他の潜在的な対象物体については、これらの物体に対応する車両内の位置を判定することが望ましい場合がある。
少なくとも一実施例では、車両内の物体又は領域を指定するために、マーカを使用することができる。少なくとも一実施例では、Apriltagなどの基準マーカを使用することができる。少なくとも一実施例では、Apriltagは、画像内で点のロケーション及び配向を判定するのに使用することができる視覚的基準要素306を提供し、この要素は、カメラ座標系又は仮想カメラ空間における相対位置に対応する。少なくとも一実施例では、QRコード(登録商標)又は他の基準要素を利用することができる。少なくとも一実施例では、4つの基準要素306のセットを使用して領域をマークすることができ、ここでこの領域は、四角形、台形、又は他の四辺の幾何学的形状とすることができる。少なくとも一実施例では、部分的にはその区域の形状に応じて、その区域を表すために2つ以上の基準要素が使用されてもよい。少なくとも一実施例では、基準要素306の少なくともサブセットの表示を含む画像データを、カメラ302によって捕捉することができる。少なくとも一実施例では、これらの基準要素306の位置及び配向は、この画像データから、ただし仮想カメラ空間内で判定することができる。少なくとも一実施例では、これは、フロントガラス領域310、サイドミラー領域308、又はハンドル領域312などの物体の相対位置及び配向を含むことができる。少なくとも一実施例では、乗車者の視線方向が、これらの領域のうちの1つと交差すると判定されたとき、この乗車者がその領域を見ていると判定を下すことができ、この情報に基づき、何らかの措置をとるべきかどうかに関して判定を下すことができる。少なくとも一実施例では、こうした措置は、乗車者が見ているロケーションに表示する情報を選択すること、ドライバがある一定の領域から目を逸らしていることに起因して運転措置をとること、又は車両の動作若しくは構成を調節することなどを含むことができる。
少なくとも一実施例では、図3の構成に対して利用可能なグラウンド・トゥルース・データが存在せず、この構成に対応する特定のタイプの車両向けのニューラル・ネットワークなどの少なくとも1つのニューラル・ネットワークの正確な訓練を実現できないことがある。しかし、少なくとも一実施例では、車両座標系又は車両空間におけるこれらの基準マーカ306の、その座標系の原点に対するロケーションのグラウンド・トゥルース・データは利用可能であることがあり、この原点は、キャリブレーション取付け部304に対応してもよい。少なくとも一実施例では、仮想カメラ空間内の点を車両座標空間内の点にマッピングすることができ、それにより、カメラ302によって捕捉された画像データに表示されたこれらの基準マーカ306についてグラウンド・トゥルース・データを提供することができる。少なくとも一実施例では、次いで、対応する仮想カメラ空間にこの車両空間をマッピングすることができる限り、いかなる任意のカメラ位置についてもグラウンド・トゥルース・データを提供することができる。少なくとも一実施例では、キャリブレーション取付け部304は、色付きチェッカーボード・パターンなどの非対称なパターンを有し、これを使用して、捕捉画像データに出現するこのパターンに基づき、キャリブレーション取付け部の位置、距離、及び配向を判定することができる。
少なくとも一実施例では、データ収集システムと実際の車の環境とのブリッジとして、仮想カメラ空間が作成され、使用される。少なくとも一実施例では、このブリッジングは、車両監視システムが、任意の訓練済みディープ・ニューラル・ネットワーク(DNN:Deep Neural Network)モデルを車両の任意のモデルに導入できるようにすることができる。少なくとも一実施例では、それぞれの物理的な世界点を仮想カメラ空間内の点に変換することができる座標伝播機構が利用される。少なくとも一実施例では、伝播機構は、カメラ座標系などの判定された座標系と、車両若しくは乗車者の座標系など、1つ又は複数の隣接する座標系の判定された座標系との関係を見いだすことができる。少なくとも一実施例では、任意の点の座標を仮想カメラ空間内で判定できるように、これらの座標系を互いにつなぐ、又は他のやり方で相関させることができる。
少なくとも一実施例では、仮想カメラ空間及び座標伝播機構は、複数の車両モデルの訓練に適用することができ、乗車者が見るように要求されるすべてのロケーション、又は固定部について、グラウンド・トゥルースが生成される。少なくとも一実施例では、これは、発光ダイオード(LED:Light Emitting Diode)など、車両内の物体の基準マーカに近接した光を見ることを含むことができる。少なくとも一実施例では、伝播経路は、LED空間から始まり、物理的なLEDボード空間に進み、次に基準マーカ空間、現実世界空間、キャリブレーション取付け部空間が続き、最後に仮想カメラ空間に至る。少なくとも一実施例では、車両、基準マーカ、及び他の固定ロケーションに対応するデータ点を判定することができ、それにより車両空間から仮想カメラ空間に至る単一の伝播経路を判定することができる。少なくとも一実施例では、この伝播経路は、この点から仮想カメラ空間の原点に向かうベクトルに対応し、これにより、カメラ座標系におけるこの点の座標を判定することができるようになり、これはグラウンド・トゥルース・データとして機能することができる。少なくとも一実施例では、このグラウンド・トゥルース・データを使用して、ディープ・ニューラル・ネットワーク・モデルのユーザ指定訓練を可能にすることができる。少なくとも一実施例では、このグラウンド・トゥルース・データを使用して、投影ベースのDNN視線モデル化を可能にすることができる。少なくとも一実施例では、ミラー・ベースのオクルージョン不変のカメラ位置特定手法が利用され、この手法は、幾何学的なパターン・ボードの一部分が、ハンドルなどによって遮蔽されているときでも、正しいカメラの位置特定を実現する。少なくとも一実施例では、DMSの環境的な制約などの制約を使用して姿勢サーチを絞り込むことによって、最適化されたキャリブレーション及び位置特定のための最適な姿勢セットを判定することができる手順が利用される。
少なくとも一実施例では、任意の定義可能な3次元(3D:three-dimensional)環境において物体の位置を判定するように、物体検出モデルを訓練することができる。少なくとも一実施例では、この環境に対するカメラ又はセンサについてグラウンド・トゥルース・データを判定して、モデルの構築及び/又は訓練を可能にすることができる。少なくとも一実施例では、判定可能な配向を有する物体がこの3D環境に置かれて、カメラ座標系を有する仮想カメラ空間へのブリッジとして機能する。少なくとも一実施例では、次いで、環境座標系における既知の点を、このカメラ座標系におけるグラウンド・トゥルース点に変換することができる。少なくとも一実施例では、このグラウンド・トゥルース・データを使用して、視覚ベースの深層学習システムが、特定の出力を推論できるように訓練される。少なくとも一実施例では、この出力は、車両の乗車者の視線方向又はロケーションである。
少なくとも一実施例では、視線推定ネットワークは、車両内のドライバ又は乗員の前方のカメラを使用する。少なくとも一実施例では、その人がどこを見ているかを判定しようとして、このカメラによって画像データが捕捉される。少なくとも一実施例では、訓練中、車両内の若しくは車両に近接した点など、様々な対象点を様々な方向で見ている人の表示を含むかなりの量のデータが必要とされる。少なくとも一実施例では、そうしたネットワークが訓練されると、そのネットワークをそのタイプの車両に導入することができ、それにより、その車両又はその車両と通信するシステムは、人がどこを見ているかを推論できるようになる。少なくとも一実施例では、この視線情報が入手可能であることを利用したアプリケーションを構築することができる。少なくとも一実施例では、視線判定情報を使用して、ドライバが注意を払っていて道路を見ているか、又は注意を払っておらず他の場所を見ているかどうかを判定することができる。少なくとも一実施例では、視線情報を使用して、車両の制御を修正する、表示情報を変更する、又は車両の運転パターンを修正するなど、車両の動作を修正することができる。
少なくとも一実施例では、カメラ又はセンサに対応し得るものなど、任意の座標系における3次元点を記述するために使用することができるグラウンド・トゥルース・データが得られる。少なくとも一実施例では、このグラウンド・トゥルース・データは、車両の内部キャビンなどの3次元空間の少なくとも部分的なビューを有するカメラによって捕捉された画像に表示された物体と相関させることができる。少なくとも一実施例では、位置判定は、視線又は視覚に関係のない用途に使用することができる。少なくとも一実施例では、物体判定システムは、車両などの環境内の物体のロケーションを判定することができる。
少なくとも一実施例では、事前訓練された視線モデルを、任意のタイプの車両に導入することができる。少なくとも一実施例では、3次元空間にマッピングすることができる、車両のLEDベースの検出システムを利用することができる。少なくとも一実施例では、検出システムを使用して、ドライバが見ている位置を判定し、これを複数のロケーションについて繰り返せるようにすることができる。少なくとも一実施例では、Apriltagなどの基準マーカをそれぞれが含むLEDボードのセットを使用することができる。少なくとも一実施例では、次いで、各LEDボードの位置を、車両空間において判定することができる。少なくとも一実施例では、各基準マーカは、カメラ又はセンサに対する3次元位置、配向、及び識別情報を画像に基づき判定できるようにする。少なくとも一実施例では、対象物体の各角に1つの基準マーカなど、各対象物体に近接して1つ又は複数の基準マーカが配置される。これらの基準マーカの表示を含む画像データを捕捉することができ、対応する3次元位置が車両空間において再構築される。少なくとも一実施例では、車両空間のこれらの座標を、カメラ座標系又は仮想カメラ空間にマッピングすることができる。少なくとも一実施例では、車両座標系のLEDボード座標をカメラ座標系に伝播するために、トランスポート機構を使用することができる。少なくとも一実施例では、異なる座標系同士間、又は仮想空間同士間の違いは、原点及び6自由度を含む。少なくとも一実施例では、車両などの環境には単一の座標系が有用であり得るが、一方で車両に複数の乗車者がいるときなど、配向又は位置が変化し得る物体を有する環境には、複数の座標系が有用な場合がある。少なくとも一実施例では、複数の座標系を有する環境では、これらの座標系を互いに連結して、それらの関連座標系のいずれにおいてもグラウンド・トゥルース・データを提供することができる。
少なくとも一実施例では、検出プロセスは、制御された環境において実行することができる初期訓練ステージ又はデータ収集ステージを含む。少なくとも一実施例では、検出プロセスは第2の推論ステージをさらに含み、そのステージでは車両又は他のそのような環境などにおいて、訓練済みモデルが利用される。少なくとも一実施例では、モデルが利用される環境は、カメラ位置など、1つ又は複数の可変の態様を有することができる。少なくとも一実施例では、カメラは共通の座標系において一定のロケーションに固定されるわけではないので、カメラの可変的な性質によってデータ収集の不確実さが生じ、それにより、こうしたカメラを使用して捕捉した画像データに基づき、ドライバの視線位置などの情報をモデルにより推論するのは困難であり得る。少なくとも一実施例では、カメラが環境内に固定されている場合でも、第2の類似した環境にある第2のカメラは異なるロケーションに固定されることがある。少なくとも一実施例では、位置の差異があると、これらの位置のうちのせいぜい1つについて訓練されたモデルを導入して、異なる位置に設置されたカメラで使用することは、困難であり得る。
少なくとも一実施例では、仮想カメラ空間が抽出される。少なくとも一実施例では、この空間は、任意の物理空間に依存しないことから、仮想と呼ばれる。少なくとも一実施例では、この仮想カメラ空間を使用して、データ収集ステージと車内推論とをブリッジするのを補助することができる。少なくとも一実施例では、カメラ位置は固定されているが、所与の車両又は環境では知られていない。少なくとも一実施例では、乗車者の位置も、乗車者により変わり経時的にも変化することがある。少なくとも一実施例では、フロントガラスの左上の角、左ミラーの左上の角、又は右ミラーの角など、ドライバが見るように要求される位置は固定され得る。少なくとも一実施例では、閉じた環境において考えられるロケーションのサブセットに設置されたカメラ又はセンサを使用して、データが収集される。少なくとも一実施例では、汎化された視線ネットワークならば、乗車者が車両内で見ることができるすべての考えられる位置を判定し、現在の視線位置を高精度で識別することができよう。
少なくとも一実施例では、少なくとも1つのカメラ又はセンサを使用して捕捉された画像データを使用して、訓練データ及びグラウンド・トゥルース・データが得られる。少なくとも一実施例では、コンピュータ視覚アルゴリズムを使用してこの画像データを処理して、たとえば基準マーカのセットの相対位置が判定される。少なくとも一実施例では、ブリッジング機構を使用して、この位置情報を、車両空間などの環境空間の既知のグラウンド・トゥルース・データと相関させることができる。少なくとも一実施例では、したがって、グラウンド・トゥルース収集プロセスは、少なくとも1つの位置特定及び再構築のアルゴリズムを含む。少なくとも一実施例では、上記その他の構成要素を、キャリブレーション・スイート(Calibration Suite)の一部として提供することができる。少なくとも一実施例では、キャリブレーション・スイートは、カメラのあらゆる特異性を補うために、カメラの撮像特徴を判定することができるカメラ・キャリブレーション構成要素を含む。少なくとも一実施例では、キャリブレーション・スイートは、任意の車両又は囲まれた区域内の全体監視カメラを位置特性することができる位置特定構成要素を含む。少なくとも一実施例では、キャリブレーション・スイートは、車両の形状を再構築することができるビデオ再構築構成要素も含む。少なくとも一実施例では、キャリブレーション・スイートは、環境内の各関連点についてグラウンド・トゥルース・データを取得するために使用することができる座標伝播プロセスにより、この情報を連結することができ、それを使用して、この特定の形状を有する車両においてニューラル・ネットワーク・モデルが訓練及び導入されることが可能になる。
少なくとも一実施例では、訓練済みモデルを使用して、人が見ている場所に対応する視線ベクトルを生成することができる。少なくとも一実施例では、訓練済みモデルを確認することもできる。少なくとも一実施例では、人の両目の間を原点とするベクトルが存在し、その点からの視線方向の線を追跡し、判定することができる。少なくとも一実施例では、この線は、特定の車両領域に関する車両形状の特定の点に交差することになる。少なくとも一実施例では、この判定された領域を、グラウンド・トゥルース・データと比較して、正しい推論が生成されたかどうかを判定することができる。少なくとも一実施例では、こうしたプロセスを使用して、訓練済みモデルを検証することができる。少なくとも一実施例では、次いで、この訓練済みモデルが、推論のために導入されてもよく、人が見ている場所を推論することができる。少なくとも一実施例では、この推論は、このモデルがどのように訓練されたかに部分的に基づき、車両キャビン内の任意の位置を対象としてもよく、又は特定の位置を対象としてもよい。少なくとも一実施例では、特定の位置又は領域を対象とする訓練は、これらの特定の位置又は領域についてのより正確な推論をもたらすことができる。
少なくとも一実施例では、データ捕捉は、単一のカメラ及び周囲光を用いて実行される。少なくとも一実施例では、データ捕捉は、少なくとも1つのカメラ又はセンサ、及び2つの赤外(IR:infrared)LEDなど少なくとも2つの照明源を使用して実行される。少なくとも一実施例では、2つの光源を使用することによって、グレア又は障害物を補うように視線検出することが可能になる。少なくとも一実施例では、データ捕捉は、フロントガラス、計器クラスタ、左ミラー、右ミラー、及びバックミラーなどの特定の対象物体に付与された基準を用いて実行される。少なくとも一実施例では、超音波又はレーザ走査のデータ捕捉を含んでもよい別のデータ捕捉プロセスを使用することができる。少なくとも一実施例では、特定のタイプ及びモデルの車両について補足されたデータを使用してモデルを訓練することができ、次いでそのモデルを、そのタイプ及びモデルの任意の車両で使用することができる。少なくとも一実施例では、車両又は環境の個々の変形形態について、異なるモデルを訓練することができる。
少なくとも一実施例では、視線データを他のデータとともに使用して、車両の動作態様の修正又は制御の仕方を判定することができる。少なくとも一実施例では、ドライバは、「その窓を下げる」又は「私の窓を下げる」などの言葉を発することができる。少なくとも一実施例では、マイクロフォンが発声を捕捉することができ、音声テキスト化分析が実行されて命令が判定されてもよい。少なくとも一実施例では、視線情報を使用して、このドライバが指す窓を判定するのを補助することができる。少なくとも一実施例では、次いで車両は、推論された視線データに部分的に基づき、判定された窓を自動的に下げることができる。少なくとも一実施例では、個人の特徴又は特異性を補うために、個々のユーザ又は人に合わせてモデルを個別化することができる。
少なくとも一実施例では、図4Aのプロセス400に示すように、1つ又は複数のニューラル・ネットワークを訓練するためのグラウンド・トゥルース・データを生成することができる。少なくとも一実施例では、車両の1つ又は複数の対象領域が判定される402。少なくとも一実施例では、これらの領域は、車両内若しくは車両に近接した窓、ミラー、ディスプレイ・パネルなど、乗車者が見る可能性のある、又はユーザが見ていると判定することに価値のあり得る領域を含むことができる。少なくとも一実施例では、これらの領域の角など、これらの領域の代表点に基準マーカを配置することができる404。少なくとも一実施例では、これらの基準マーカは、基準マーカの位置、距離、配向、及び識別情報などの情報を判定できるようにする非対称な視覚的態様を含むことができる。少なくとも一実施例では、これらの基準マーカは、本明細書で検討するように、Apriltag又はQRコードを含むことができ、1つ又は複数の関連LEDを有してもよい。少なくとも一実施例では、経時的に固定されたままである原点に対する絶対位置を判定することなどによって、これらの代表点の位置データを車両空間において判定することができる406。少なくとも一実施例では、カメラを使用して画像データを捕捉することができ408、この画像データは、車両内部の基準マーカ及びキャリブレーション取付け部の表示を含む。少なくとも一実施例では、キャリブレーション取付け部を使用して、仮想車両空間を定義する車両座標系の原点及び配向が指定される。少なくとも一実施例では、キャリブレーション取付け部は、捕捉された画像データに表示されたときにキャリブレーション・ボードの少なくとも位置、配向、及び縮尺をカメラが判定できるようにするチェッカーボード、及び少なくとも1つの非対称の態様を含むことができる。少なくとも一実施例では、捕捉画像データを分析して、代表点の位置を仮想カメラ空間において又はカメラ座標系によって判定することができる410。少なくとも一実施例では、画像データの基準マーカの表示を分析することによって、点の位置が判定される。少なくとも一実施例では、車両内の、及び捕捉画像データに表示されたキャリブレーション取付け部を、ブリッジング機構として利用して412、車両座標系とカメラ座標系を相関させることができ、それによりこのカメラ空間の点は、この車両座標系の対応する点について知られている絶対位置データに相関される。少なくとも一実施例では、これらの相関された点のこれらの既知の相対位置を、1つ又は複数のニューラル・ネットワークを訓練するためのグラウンド・トゥルース・データとして利用することができる412。
少なくとも一実施例では、図4Bに示すプロセス450は、こうした訓練済みモデルを使用して、車両などの環境における位置を判定することができる。少なくとも一実施例では、推論に使用されることになる画像又はビデオのフレームが取得される452。少なくとも一実施例では、訓練済みモデル又はニューラル・ネットワークへの入力として画像を提供することができる454。少なくとも一実施例では、この訓練済みモデルは、少なくとも画像データを含むデータを処理し、乗車者が見ている領域又は物体に対応し得るものなど、車両内の物体の位置を推論することができる456。
少なくとも一実施例では、図5に示すプロセス500を使用して、視線データを判定することができる。少なくとも一実施例では、1つ又は複数のセンサを使用して、車両の1人又は複数の乗車者が検出される502。少なくとも一実施例では、これらのセンサは、カメラ、超音波センサ、レーダ走査、及びLIDARなどの撮像センサ、距離センサ、又は位置センサを含むことができる。少なくとも一実施例では、この車両の1人又は複数の乗車者の視線を、これらの1つ又は複数のセンサのロケーションとは無関係に判定することができる504。
図6は、本発明の一実施例による高レベルのシステム・アーキテクチャを示す。このシステム600は、好ましくは、自律的又は半自律的な運転のためのコントローラ及びシステムを含め、複数のコントローラ602(1)~602(N)を含む。コントローラ602のうちの1つ又は複数は、リスク・アセスメントを実施し、通知、警告を提供するインテリジェント・アシスタント・ソフトウェア・スタック(IX)を実行するために使用される先進SoC又はプラットフォームを含み、リスク・アセスメント、及び本明細書に記載の先進ドライバ支援機能を実行して、車両を完全に又は部分的に自律的に制御してもよい。自律的又は半自律的な運転機能を行うように自律車両(AV)ソフトウェア・スタックを実行して自律的な運転機能を実現するために、コントローラのうちの2つ以上が使用される。
本発明を実行するための先進プラットフォーム及びSoCは、好ましくは、複数のタイプのプロセッサを有して、「ジョブに適したツール」、並びに機能的安全性のための処理多様性を提供する。たとえば、GPUは、より高精度のタスクによく適している。一方、ハードウェア・アクセラレータは、より特殊な機能セットを実行するように最適化することができる。複数のプロセッサの混合体を提供することにより、先進プラットフォーム及びSoCは、先進のAI支援車両に関する複雑な機能を迅速に、高い信頼性で、効率的に実行できる完全なツール・セットを含む。
図7は、一実施例によるシステム・アーキテクチャを示す。このシステムは、自律的又は半自律的な運転のためのコントローラ及びシステムを含む。コントローラ(100)は、車両の周りに導入された1つ又は複数のカメラ(72、73、74、75)からの入力を受信する。コントローラ(100)は、物体を検出し、この物体の存在及び軌道に関する情報を、リスク・アセスメント・モジュール(6000)に提供する。システムは、車両の内側に位置付けられた複数のカメラ(77)を含む。カメラ(77)は、図8に示すように配置されてもよく、又はドライバ及び他の乗車者の被写域を提供する任意の他のやり方で配置されてもよい。カメラ(77)は、ドライバ、他の乗車者、及び/又は車両の状態を監視するために複数のディープ・ニューラル・ネットワーク(500)に入力を提供する。或いは、マルチ・センサのカメラ・モジュール(500)、(600(1)~(N))及び/又は(700)を使用して、車両の内側又は外側の環境のいずれかが見られてもよい。
ニューラル・ネットワークは、好ましくは、多数の異なる特徴及び事象を検出するように訓練され、それらの特徴及び事象には:顔の存在(5001)、運転席又は1つ若しくは複数の乗員席にいる人の識別情報(5002)、ドライバの頭部姿勢(5003)、ドライバの視線方向(5004)、ドライバの目が開いているかどうか(5005)、ドライバの目が閉じているか若しくは他のやり方で遮られているかどうか(5006)、ドライバが話しているかどうか、及び話している場合には、ドライバは何を言っているか(聴覚入力又は読唇術による)(5007)、乗員が争っているかどうか又は他のやり方で車両を制御するドライバの能力を損なっているかどうか(5008)、並びにドライバが窮地に陥っているかどうか(5009)が含まれる。追加の実施例では、頭部並びに身体の姿勢及び動きに基づき、携帯電話を確認する、飲み物を飲む、たばこを吸う、及びドライバの意図を(限定することなく)含むドライバの動作を識別するように、ネットワークが訓練される。一実施例では、AVスタック及びIXスタックは両方とも、同じプラットフォーム又はSoC(9000)上で実行されてもよい。
キャビンの例示的なカメラ・レイアウトを図8に示す。図9は、一実施例によるキャビンの正面を示す。キャビンは、好ましくは、ドライバに向けられた少なくとも2つのカメラを含む。一実施例では、ドライバ主カメラ(77(3))は、波長940nm、視野60度のIR光を検出し、60fpsで撮影する。ドライバ主カメラ(77(3))は、好ましくは、顔IDを判定し、ドライバの視線、頭部姿勢を判定し、眠気を検出するために使用される。少なくとも一実施例では、ドライバ主カメラをマルチ・センサ・カメラ・モジュールと交換して、IRカメラとRGBカメラの両方の機能が提供されてもよい。
一実施例では、ドライバ副カメラ(77(4))は、波長940nmの赤外線(IR)であり、視野60度を有し、60フレーム毎秒で撮影する。ドライバ副カメラ(77(4))は、好ましくは、ドライバの視線、頭部姿勢を判定し、眠気を検出するために、ドライバ主カメラ(77(3))とともに使用される。或いは、ドライバ副カメラをマルチ・センサ・カメラ・モジュールと交換して、IRカメラとRGBカメラの両方の機能が提供されてもよい。
キャビンは、好ましくは、通常頭上に取り付けられる少なくとも1つのキャビン主カメラ(77(1))を含む。一実施例では、キャビン主カメラ(77(1))は、波長940nmのIRカメラであり、飛行時間(ToF)深度、視野90度を有し、30fpsで撮影する。キャビン主カメラ(77(1))は、好ましくは、ジェスチャ及びキャビン占有率を判定するために使用される。キャビンは、好ましくは、乗員用クローブ・ボックス又は乗員側ダッシュボードの近くに通常取り付けられる少なくとも1つの乗員カメラ77(5)を含む。一実施例では、乗員カメラ(77(5))は、波長940ナノメートル、視野60度のIRであり、30fpsで撮影する。或いは、ドライバ主カメラをマルチ・センサ・カメラ・モジュール(500)(600(1)~(N))及び/又は(700)と交換して、IRカメラとRGBカメラの両方の機能が提供されてもよい。
キャビンの正面は、好ましくは複数のLED照明(78(1)~(2))を含む。照明は、好ましくは970nmでIR光を放ち、カメラと同期され、目に安全である。また車両の正面は、好ましくは、(ドライバの目が閉じているときと比較して)ドライバが下を見ているときを判定するための低角度のカメラも含む。
またキャビンは、好ましくは、キャビン全体のビューを提供する「キャビン副」カメラ(図示せず)を有する。キャビン副カメラは、好ましくは、ルーフの中央に取り付けられ、広角レンズを有して完全なキャビンのビューを提供する。これにより、システムが占有数を判定し、乗車者の年齢を推定し、物体検出機能を実行できるようになる。他の実施例では、システムは、前方及び後方の乗員専用のカメラ(図示せず)を含む。こうした専用のカメラにより、システムが車両の前方又は後方の乗車者とのビデオ会議を実行できるようになる。
少なくとも一実施例では、自律車両は、単一のハウジングに複数のセンサを提供し、交換可能なセンサも提供できる1つ又は複数のマルチ・センサ・カメラ・モジュール(MSCM)を含んでもよい。様々な実施例によるMSCMは、様々な構成:(1)IR+IR(IRステレオ視)、(2)IR+RGB(ステレオ視とペアリング・フレーム)、(3)RGB+RGB(RGBステレオ・ビジョン)で使用することができる。RGBセンサは、必要とされる色及び低輝度性能に応じて、RCCB(又は何らかの他の色センサ)に置き換えることができる。MSCMは、車両外側の環境をカバーするカメラ、車両内側をカバーするカメラ、又は両方をカバーするカメラに使用されてもよい。
図9は、MSCMの実施例を示す。この実施例では、MSCM(900)は、自律又は反自律の車両を制御するのに適した1つ又は複数のAIスーパーコンピュータに結合される。2017年11月10日出願の米国特許仮出願第62/584,549号に記載されているように、この実施例では、AIスーパーコンピュータ(800)、(900)は、1つ又は複数の先進SoCを含む。
マルチ・センサ・カメラ・モジュール904は、シリアライザ(906)、IR画像センサ(912)、RGB画像センサ(918)、レンズ及びIRフィルタ(914)、並びにマイクロコントローラ(916)を備える。OnSemiのAR0144(1.0メガピクセル(1280H×800V)、60fps、グローバル・シャッタ、CMOS)を含め、多くのカメラ・センサが使用されてもよい。AR0144は、高輝度と低輝度の両方の条件においてアーチファクトを低減し、ゴースト発生及びノイズ効果を最小に抑えるように、シャッタ効率及び信号対ノイズ比が高くなるように設計される。AR0144は、カラー・センサ(1006)及びモノ・センサ(1007)の両方に使用されてもよい。
多くの異なるカメラ・レンズ(914、924)が使用されてもよい。一実施例では、カメラ・レンズは、940nmバンド・パスを有するLCE-C001(55HFoV)である。LEDレンズは、好ましくはLedilのLisa2 FP13026である。一実施例では、各レンズは特定のLEDと位置合わせされるように設計された成形ポリカーボネート(PC)ハウジングに取り付けられ、各認定ブランド又は様式のLEDの理想的な焦点にレンズが正確に位置付けられるようになる。他のLEDレンズが使用されてもよい。
図9に示す実施例では、MSCMは、1つ又は複数のLED(922)を制御する。これらのLEDは、車載認定を受けており、高密度の不可視赤外光の形でカメラ用の赤外照明を提供する。一実施例では、LEDは、OsramOptoのSFH4725S IR LED(940nm)である。LED(922)は、LEDを明滅させるスイッチ(920)によって制御される。LEDレンズは、好ましくはLedilのLisa2 FP13026である。他のLED及びレンズが使用されてもよい。
シリアライザは、好ましくは、MAX9295A GMSL2 SERであるが、他のシリアライザが使用されてもよい。好適なマイクロコントローラ(MCU)は、AtmelのSAMD21を含む。SAM D21は、32ビットのARM Cortexプロセッサを使用し、32~64ピンにわたる一連の低電力マイクロコントローラであり、最大で256KBのフラッシュ及び32KBのSRAMを有する。SAM D21デバイスは、最大周波数48MHzで動作し、2.46CoreMark/MHzに到達する。他のMCUも使用することができる。LEDドライバ(922)は、好ましくは、OnSemiのNCV7691-D又は同等の物であるが、他のLEDドライバが使用されてもよい。
図10は、ドライバUXの入力/出力及び構成の一実施例を示す。ドライバUXは、AV状態パネル(900)、主ディスプレイ画面(903)、副ディスプレイ画面(904)、周囲ディスプレイ画面(901)、及び通信パネル(902)を含む1つ又は複数のディスプレイ画面を含む。AV状態パネル(900)は、好ましくは、安全を確保するドライバが車両を操作するのに重要な情報だけを示す小さい(3.5”、4”、又は5”)ディスプレイである。
周囲ディスプレイ画面(901)及び副ディスプレイ画面(904)は、好ましくは、クロス・トラフィック・カメラ(505)、死角カメラ(506)、並びに後方カメラ(507)及び(508)からの情報を表示する。一実施例では、周囲ディスプレイ画面(901)及び副ディスプレイ画面(904)は、図23に示すように、安全を確保するドライバの周りを囲むように配置される。代替的な実施例では、ディスプレイ画面は、図23に示す実施例とは異なるやり方で組み合わされてもよく、又は配置されてもよい。たとえば、AV状態パネル(900)及び主ディスプレイ画面(903)は、単一の正面に面するパネルに統合されてもよい。或いは、主ディスプレイ画面(903)の一部分は、先進AI支援車両の分割画面ビュー、又は頭上からのビューを、その周りに物体のある状態で示すために、使用されてもよい。或いは、ドライバUXの入力/出力は、スピード、行き先、ETAなどの車両パラメータ、及び乗員の数、又は単にAVシステムの状態(アクティブ化又は使用不可)のヘッド・アップ・ディスプレイ(「HUD:Heads-Up Display」)(906)を含んでもよい。
ドライバ・インターフェース及びディスプレイは、自律運転スタックからの情報を提供してドライバを支援してもよい。たとえば、ドライバ・インターフェース及びディスプレイは、車線、車、信号、歩行者を、主画面(903)かフロントガラスのHUD(906)かのいずれかにおいて強調してもよい。ドライバ・インターフェース及びディスプレイは、自律運転スタックが提案する推奨経路を提供するとともに、車両が信号又は交通標識に近づくにつれて、加速をやめるよう、又はブレーキをかけ始めるように提案してもよい。ドライバ・インターフェース及びディスプレイは、対象点を強調してもよく、運転時に車の周りのビューを拡大してもよく(広角)、又は駐車を支援してもよい(たとえば、車両が周囲カメラを有する場合には、上からのビューを提供してもよい)。
ドライバ・インターフェース及びディスプレイは、好ましくは:(1)交差点、工事現場ゾーン、及び料金ブースを含む、前方にある待機条件、(2)先進AI支援車両よりはるかに遅く移動している歩行者など、走行経路上の物体、(3)前方にある立ち往生した車両、(4)前方にあるスクール・ゾーン、(5)道ばたで遊んでいる子供、(6)道ばたの動物(たとえば、鹿又は犬)、(7)緊急車両(たとえば、パトカー、消防車、救急車、又はサイレンのある他の車両)、(8)走行経路の前方に割り込みしそうな車両、(9)クロス・トラフィック、特に交通信号又は標識を無視しそうな場合、(10)近づいてくるサイクリスト、(11)道路上の予想外の物体(たとえば、タイヤ及び瓦礫)、並びに(12)前方にある状態の悪い道路(たとえば、凍結路及び穴)を含むアラートを提供する。
実施例は、限定することなく、クーペ、セダン、バス、タクシー、及びシャトルを含む任意のタイプの車両に適したものであってもよい。一実施例では、先進AI支援車両は、地図情報、経路情報、テキスト音声化インターフェース、音声認識、及び(マイクロソフトOutlookなどのカレンダー・アプリケーションとの統合を含む)外部アプリ統合を含め、乗員と通信するための乗員インターフェースを含む。
図11は、一実施例による視線推定の方法のフローチャートを示す。ステップ1において、目の画像が受信される。ステップ2において、頭部の向きが受信される。一実施例では、頭部の向きのデータは事前コンピュートされ、方位角及び仰角を含んでもよい。別の実施例では、頭部の向きのデータは、対象者の顔の画像であり、頭部の向きはその画像に基づき判定される。ステップ3において、画像及び頭部の向きのデータに基づき、CNNにより視線位置がコンピュートされる。
図12は、一実施例による視線検出を判定するのに好適なニューラル・ネットワークのパイプラインを示す。FDネット(5001)は、顔の存在を検出するように訓練される。HPネット(5003)は、人の頭部の姿勢を判定する。FPEネット(50011)は、基準点を検出する。この実施例では、視線ネット(5004)は、ニューラル・ネットワークは、頭部位置データ(x,y,z)と、頭部に関連付けられた基準点との両方を含む入力を使用して訓練される。これらの入力を使用して、視線ネットはドライバの視線を検出する。
一実施例では、リスク・アセスメント・モジュールは、クロス・トラフィックがドライバの視野から外れているかどうかを判定し、適切な警告を提供する。図13は、リスク・アセスメント・モジュールが、視線検出のためのDNN(5004)からの情報、及びコントローラからの情報を使用してドライバにアラートを発する1つの状況を示す。
視線検出DNNは、ドライバの視線を、図13に示す領域に入るものとして分類する。一例では、これらの領域は、左クロス・トラフィック(10(1))、中央トラフィック(10(2))、右トラフィック(10(3))、バックミラー(10(4))、左サイドミラー(10(5))、右サイドミラー(10(5))、計器パネル(10(7))、及びセンタ・コンソール(10(8))を含む。
視線検出DNNが、ドライバの視線の領域を分類する間に、コントローラ(100(2))は、先進SoC上で実行しているDNNを使用して、ドライバの視野の外側のクロス・トラフィックを検出する。
ニューラル・ネットワークの訓練及び導入
少なくとも一実施例では、未訓練ニューラル・ネットワークが、訓練データ・セットを使用して訓練される。少なくとも一実施例では、訓練フレームワークは、PyTorchフレームワークであり、一方他の実施では、訓練フレームワークは、Tensorflow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークを訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワークを生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、又は一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
少なくとも一実施例では、未訓練ニューラル・ネットワークは教師あり学習を使用して訓練され、ここで訓練データ・セットは、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セットは、既知の出力を有する入力を含み、ニューラル・ネットワークの出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワークは教師ありのやり方で訓練され、訓練データ・セットからの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワークを通って逆伝播される。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークを制御する重みを調節する。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークが、新規データなどの既知の入力データに基づき、結果などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワークなどのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークを繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワークの出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワークは、未訓練ニューラル・ネットワークが所望の精度に到達するまで未訓練ニューラル・ネットワークを訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワークを、任意の数の機械学習動作を実装するように導入することができる。
少なくとも一実施例では、未訓練ニューラル・ネットワークは、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワークは、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セットは、いかなる関連出力データ又は「グラウンド・トゥルース・データ」もない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク1106は、訓練データ・セット内でグループ化を学習することができ、個々の入力が、未訓練データ・セットにどのように関係しているかを判定することができる。少なくとも一実施例では、教師なし訓練を使用して、自己組織化マップを生成することができ、自己組織化マップは、新規データの次元を低減するのに有用な動作を実行することができるタイプの訓練済みニューラル・ネットワークである。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セットの通常のパターンから逸脱した、新規データ・セット内のデータ点を識別できるようにする。
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データ・セットに混在している技法である。少なくとも一実施例では、訓練フレームワークを使用して、伝達学習(transferred learning)技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワークは、初期訓練中にネットワーク内に教え込まれた知識を忘れることなく、新規データに適合できるようになる。
述べたように、多岐にわたるますます多くの業界及び用途で、機械学習が利用されている。一例として、プロセッサ上で発展するディープ・ニューラル・ネットワーク(DNN)は、自己運転車から迅速な医薬品開発、安全システムの自動画像分析からビデオ・チャット・アプリケーションのリアル・タイムでのスマート言語翻訳に至るまで、多様なユース・ケースに使用されてきている。深層学習は、人の脳のニューラル学習プロセスを模範とする技法であり、継続的に学習し、継続的に賢くなり、時間が経つにつれてより正確な結果をより早く出す。子供は、最初に様々な形を正確に識別し分類するように大人から教えられ、最終的には、いかなる指導もなく形状を識別できるようになる。同様に、同じようなタスクを達成するように設計された深層学習又はニューラル学習システムは、基本的な物体、遮られた物体などを識別しながら、同時にこれらの物体にコンテキストを割り当てることにおいて、より賢く、より効率的になるために、それに向けて訓練される必要がある。
最も簡単なレベルでは、人の脳のニューロンは、受け取る様々な入力を見て、これらの入力のそれぞれに重要度レベルが割り当てられ、出力が他のニューロンに渡されて作用を受ける。人工ニューロン又はパーセプトロンは、ニューラル・ネットワークの最も基本的なモデルである。一例では、パーセプトロンは、パーセプトロンが認識し分類するように訓練されている物体の様々な特徴を表す1つ又は複数の入力を受け取ることができ、物体の形を定義する上でのその特徴の重要度に基づき、これらの特徴のそれぞれに一定の重みが割り当てられる。
ディープ・ニューラル・ネットワーク(DNN)モデルは、つながった多くのパーセプトロン(たとえばノード)の複数の層を含み、それらを、膨大な量の入力データによって、複雑な問題を素早く高精度で解くように訓練することができる。一例では、DNNモデルの第1の層は、自動車の入力画像を様々な区分に分解し、線又は角度などの基本パターンを探す。第2の層は線を構築して、ホイール、フロントガラス、及びミラーなど、より高いレベルのパターンを探す。次の層は、車両のタイプを識別し、最後のいくつかの層は、入力データに対するラベルを生成して、特定の自動車ブランドのモデルを特定する。DNNが訓練されると、このDNNを導入及び使用して、推論として知られているプロセスにおいて物体又はパターンを識別及び分類することができる。推論(DNNが所与の入力から有用な情報を抽出するプロセス)の例は、ATM機械に預け入れられた小切手の手書きの数字を識別すること、写真の中の友達の画像を識別すること、映画のおすすめを配信すること、異なるタイプの自動車、歩行者、及びドライバ不在の車において道路障害物を識別及び分類すること、又は人の音声をほぼリアル・タイムで翻訳することを含む。
訓練中、入力に対応するラベルを示す予測が生成されるまで、データは、DNNを通って順伝播フェーズで流れる。ニューラル・ネットワークが入力に正しくラベル付けしない場合には、正しいラベルと予測ラベルとの誤差が分析され、逆伝播フェーズ中に各特徴について重みが調節され、最終的には、DNNが入力及び訓練データ・セット内の他の入力に正しくラベル付けする。複雑なニューラル・ネットワークを訓練するには、サポートされている浮動小数点の乗算及び加算を含め、大量の並列コンピューティング性能が必要である。推論は、訓練ほどコンピュートを多く必要とせず、レイテンシに敏感なプロセスであり、ここで訓練済みニューラル・ネットワークが以前に見たことのない新規の入力に適用されて、画像を分類し、音声を翻訳し、新情報を推論する。
ニューラル・ネットワークは行列演算に大きく依存し、複雑な多層ネットワークは、効率とスピードの両方のために膨大な量の浮動小数点性能及び帯域幅を必要とする。行列演算に最適化された、数十から数百のTFLOPS性能を提供する数千個の処理コアがあれば、コンピューティング・プラットフォームは、ディープ・ニューラル・ネットワークに基づく人工知能及び機械学習アプリケーションに必要な性能を提供することができる。
図14は、機械学習を訓練及び利用するために使用することができる例示的なシステム1400の構成要素を示す。検討するように、様々な構成要素は、コンピューティング・デバイスとリソースの様々な組合せによって提供されてもよく、又は単一のエンティティ又は複数のエンティティの制御下にあってもよい単一のコンピューティング・システムによって提供されてもよい。さらに、態様は、異なるエンティティによってトリガされ、開始され、又は要求されてもよい。少なくとも一実施例では、ニューラル・ネットワークの訓練は、プロバイダ環境1406に関連付けられたプロバイダによって命令されてもよく、一方少なくとも一実施例では、訓練は、プロバイダ環境にアクセスできる顧客又は他のユーザにより、クライアント・デバイス1402又は他のそうしたリソースを通して要求されてもよい。訓練データ(又は訓練済みニューラル・ネットワークによって分析されることになるデータ)は、プロバイダ、ユーザ、又は第三者のコンテンツ・プロバイダ1424によって提供されてもよい。少なくとも一実施例では、クライアント・デバイス1402は、デバイスのナビゲーションを支援する要求を送出し、且つ/又は命令を受信することができる、たとえばユーザの代わりにナビゲートされることになる車両又は物体とすることができる。
この例では、要求は、少なくとも1つのネットワーク1404を横切って送出されて、プロバイダ環境1406により受信されることが可能である。クライアント・デバイスは、こうした要求をユーザが生成し送信できるようにする任意の適切な電子デバイス及び/又はコンピューティング・デバイスとすることができ、デスクトップ・コンピュータ、ノートブック・コンピュータ、コンピュータ・サーバ、スマート・フォン、タブレット・コンピュータ、ゲーミング・コンソール(ポータブル、又はその他)、コンピュータ・プロセッサ、コンピューティング論理、及びセット・トップ・ボックスを含んでもよい。ネットワーク1404は、要求又は他のそのようなデータを送信するための任意の適切なネットワークを含むことができ、インターネット、イントラネット、イーサネット(登録商標)、セルラー・ネットワーク、ローカル・エリア・ネットワーク(LAN)、ピア間の直接ワイヤレス接続のネットワークなどを含んでもよい。
要求は、この例ではインターフェース層1408によって受信することができ、このインターフェース層1408は、訓練及び推論マネージャ1410にデータを転送することができる。このマネージャは、データ又はコンテンツに対応する要求及びサービスを管理するためのハードウェア及びソフトウェアを含むシステム又はサービスとすることができる。このマネージャは、ニューラル・ネットワークを訓練するための要求を受信することができ、要求に対するデータを、訓練マネージャ1412に提供することができる。訓練マネージャ1412は、要求によって指定されていない場合には、使用するのに適切なモデル又はネットワークを選択することができ、関連する訓練データを使用してモデルを訓練することができる。少なくとも一実施例では、訓練データは、訓練データ・リポジトリ1414に記憶された、クライアント・デバイス1402から受信された、又は第3者プロバイダ1424から取得されたデータのバッチとすることができる。訓練マネージャ1412は、本明細書で検討するLARCベースの手法を使用することなどにより、訓練データに関与することができる。ネットワークは、再帰ニューラル・ネットワーク(RNN:Recurrent Neural Network)又は畳み込みニューラル・ネットワーク(CNN:Convolutional Neural Network)などの任意の適切なネットワークとすることができる。ネットワークが訓練され、無事に評価が済むと、訓練済みネットワークをモデル・リポジトリ1416に記憶することができ、モデル・リポジトリ1416は、たとえばユーザ、アプリケーション、又はサービスなどのための異なるモデル又はネットワークを記憶してもよい。述べたように、少なくとも一実施例では、単一のアプリケーション又はエンティティに対して複数のモデルが存在してもよく、多数の異なる要因に基づき利用されてもよい。
その後の時点で、訓練済みニューラル・ネットワークによって少なくとも部分的に判定され又は影響を受けるコンテンツ(たとえば経路判定)若しくはデータの要求が、クライアント・デバイス1402(又は他のそのようなデバイス)から受信されてもよい。この要求は、たとえば1つ若しくは複数の推論、又は他の出力値、分類、若しくは予測を得るためにニューラル・ネットワークを使用して処理されることになる入力データを含むことができる。入力データは、インターフェース層1408により受信され、推論モジュール1418に導かれることが可能であるが、異なるシステム又はサービスも使用することができる。推論モジュール1418は、本明細書で検討する訓練済みディープ・ニューラル・ネットワーク(DNN)などの適切な訓練済みネットワークを、まだ推論モジュール1418にローカルに記憶されていない場合にはモデル・リポジトリ1416から取得することができる。推論モジュール1418は、訓練済みネットワークに入力としてデータを提供することができ、次いで訓練済みネットワークが、出力として1つ又は複数の推論を生成することができる。これは、たとえば入力データのインスタンスの分類を含んでもよい。次いで、ユーザに表示又は他のやり方で通知できるように、推論をクライアント・デバイス1402に送信することができる。また、ユーザのためのコンテキスト・データが、ユーザ・コンテキスト・データ・リポジトリ1422に記憶されてもよく、ユーザ・コンテキスト・データ・リポジトリ1422は、推論を生成する際、又はインスタンスを取得した後にユーザに返すデータを判定する際に、ネットワークへの入力として有用なことがあるユーザについてのデータを含んでもよい。入力データ又は推論データのうちの少なくともいくつかを含み得る関連データも、将来の要求を処理できるようにローカルのデータベース1420に記憶されてもよい。少なくとも一実施例では、ユーザは、プロバイダ環境のリソース又は機能にアクセスするために、アカウント又は他の情報を使用することができる。将来の要求に対してより正確な推論を提供するために、許可されていて利用可能な場合、ユーザ・データも収集及び使用されて、モデルがさらに訓練されてもよい。要求は、ユーザ・インターフェースを介して、クライアント・デバイス1402上で実行している機械学習アプリケーション1426により受信されてもよく、同じインターフェースを介して結果が表示されてもよい。クライアント・デバイスは、要求を生成し、結果若しくは応答を処理するためのプロセッサ1428及びメモリ1430などのリソース、並びに機械学習アプリケーション1426用のデータを記憶するための少なくとも1つのデータ記憶要素1432を含むことができる。
少なくとも一実施例では、プロセッサ1428(又は訓練マネージャ1412若しくは推論モジュール1418のプロセッサ)は、中央処理装置(CPU)である。しかし述べたように、こうした環境のリソースは、少なくともある一定のタイプの要求に対するデータを処理するために、GPUを利用することができる。数千個のコアを用いて、GPUは、かなりの並列ワークロードに対処するように設計され、したがって、ニューラル・ネットワークを訓練し予測を生成するための深層学習において多用されるようになってきた。オフライン構造にGPUを使用することにより、より大きくより複雑なモデルの訓練をより早く行うことができるようになったが、オフラインで予測を生成することは、要求時の入力特徴を使用できないこと、又はリアル・タイムの要求に応えるために、特徴のすべての順列について予測を生成し、ルックアップテーブルに記憶しなくてはならないことのいずれかを意味する。深層学習フレームワークがCPUモードをサポートしており、妥当なレイテンシでCPU上でフィード・フォワードを実行するのに十分なほどモデルが小さく単純である場合には、CPUインスタンスのサービスはモデルのホストとして働くことができる。この場合、訓練をオフラインでGPU上で行うことができ、推論をリアル・タイムでCPU上で行うことができる。CPUの手法が実行不可能である場合には、サービスをGPUインスタンス上で実行することができる。しかしGPUは、CPUとは異なる性能及びコスト特徴を有するので、ラン・タイム・アルゴリズムをGPUにオフロードするサービスを実行するには、CPUベースのサービスとは異なるやり方でサービスを設計する必要があり得る。
図15は、少なくとも一実施例において、データを分類する、又は推論を生成するために使用することができる例示的なシステム1500を示す。入力データに対して、様々なタイプの予測、ラベル、又は他の出力も生成することができ、これは本明細書に含まれる教示及び示唆に照らして明らかになるはずである。さらに、教師あり訓練と教師なし訓練の両方を、本明細書で検討する少なくとも一実施例において使用することができる。この例では、訓練データ1502(たとえば、分類済み又はラベル付きのデータ)のセットが、入力として提供されて訓練データとして機能する。訓練データは、ニューラル・ネットワークがそれについて訓練されることになる少なくとも1つのタイプの物体のインスタンス、並びにそのタイプの物体を識別する情報を含むことができる。たとえば、訓練データは、あるタイプの物体の表示をそれぞれが含む画像のセットを含んでもよく、ここで各画像は、それぞれの画像に表示された物体のタイプを識別するラベル、メタデータ、分類、若しくは他の情報も含み、又はそれらに関連付けられている。テキスト・データ、オーディオ・データ、ビデオ・データなどを含んでもよい様々な他のタイプのデータも、訓練データとして使用されてもよい。この例の訓練データ1502は、訓練マネージャ1504への訓練入力として提供される。訓練マネージャ1504は、訓練アプリケーションを実行する1つ又は複数のコンピューティング・デバイスなど、ニューラル・ネットワーク(又は他のモデル若しくはアルゴリズムなど)を訓練するためのハードウェア及びソフトウェアを含むシステム又はサービスとすることができる。この例では、訓練マネージャ1504は、訓練に使用するモデルのタイプを示す命令又は要求を受信する。モデルは、こうした目的に有用な、任意の適切な統計モデル、ネットワーク、又はアルゴリズムとすることができ、人工ニューラル・ネットワーク(Artificial Neural Network)、深層学習アルゴリズム、学習分類器、ベイジアン・ネットワークなどを含んでもよい。訓練マネージャ1504は、初期モデル又は他の未訓練モデルを適切なリポジトリ1506から選択し、訓練データ1502を利用してモデルを訓練することができ、同様のタイプのデータを分類する又は他のそうした推論を生成するのに使用することができる訓練済みモデル1508(たとえば訓練済みディープ・ニューラル・ネットワーク)を生成する。訓練データが使用されない少なくとも一実施例では、訓練マネージャ1504ごとに、入力データに対する訓練のための適切な初期モデルをなお選択することができる。
選択されたモデルのタイプに部分的に依存してもよい多くの異なるやり方で、モデルを訓練することができる。たとえば一実施例では、機械学習アルゴリズムを、訓練データのセットとともに提供することができ、ここでモデルは、訓練プロセスによって作製されるモデル・アーチファクトである。訓練データの各インスタンスは、正解(たとえば分類)を含んでおり、これを、ターゲット又はターゲット属性と呼ぶことができる。学習アルゴリズムは、ターゲットすなわち予測される答えに入力データ属性をマッピングする訓練データのパターンを見いだし、これらのパターンを捕捉する機械学習モデルが出力される。次いで機械学習モデルを使用して、ターゲットが指定されていない新規データについて予測を取得することができる。
一例では、訓練マネージャ1504は、バイナリ分類、マルチクラス分類、及び回帰モデルを含む機械学習モデルのセットから選択することができる。使用されるモデルのタイプは、少なくとも部分的には、予測されるターゲットのタイプに依存してもよい。バイナリ分類問題の機械学習モデルは、2つの考えられるクラスのうちの1つなど、バイナリの結果を予測する。ロジスティック回帰などの学習アルゴリズムを使用して、バイナリ分類モデルを訓練することができる。マルチクラス分類問題の機械学習モデルは、3つ以上の結果のうちの1つを予測するなど、多数のクラスについて予測を生成できるようにする。マルチクラスモデルを訓練するには、多項ロジスティック回帰が有用であり得る。回帰問題の機械学習モデルは、数値を予測する。回帰モデルを訓練するには、線形回帰が有用であり得る。
一実施例による機械学習モデルを訓練するために、訓練マネージャは、入力訓練データのソース、並びに予測されるターゲットを含むデータ属性の名前、必要なデータ変換命令、及び学習アルゴリズムを制御するための訓練パラメータなどの他の情報を判定しなくてはならない。訓練プロセス中、訓練マネージャ1504は、訓練データ・ソースにおいて指定されたターゲットのタイプに基づき、適切な学習アルゴリズムを自動的に選択してもよい。機械学習アルゴリズムは、訓練プロセス、及びその結果生じる機械学習モデルのある一定の特性を制御するために使用されるパラメータを受け入れることができる。これらは本明細書において、訓練パラメータと呼ばれる。訓練パラメータが指定されていない場合、訓練マネージャは、広範囲の機械学習タスクにうまく作用することが知られているデフォルト値を利用することができる。値を指定することができる訓練パラメータの例は、最大モデル・サイズ、訓練データにわたるパスの最大数、シャッフルのタイプ、正則化のタイプ、学習率、及び正則化の量を含む。デフォルト設定は、性能を微調整するように値を調節する選択肢を伴って指定されてもよい。
最大モデル・サイズは、モデルの訓練中に作製されるパターンのバイト単位の合計サイズである。100MBのモデルなど、指定サイズのモデルがデフォルトで作製されてもよい。訓練マネージャが、モデル・サイズを満たすのに十分なパターンを判定できない場合には、より小さいモデルが作製されてもよい。訓練マネージャが、指定サイズに収まるパターンより多くのパターンを見いだす場合には、学習済みモデルの品質に最も影響しないパターンを削ることによって、最大切り捨てが実施されてもよい。モデル・サイズを選択することにより、モデルの予測品質と、使用コストとのトレード・オフを制御することができる。モデルが小さいほど、訓練マネージャは、最大サイズ限度内に収まるように多くのパターンを除去して、予測品質に影響を及ぼす恐れがある。モデルが大きいほど、リアル・タイムの予測に対するクエリを実行するコストが多くなり得る。モデルは入力データではなくパターンを記憶するので、必ずしも入力データ・セットが大きいほどモデルが大きくなるとは限らない。パターンが少なく、単純な場合には、結果的に生じるモデルは小さくなる。多数の未加工の属性(入力列)又は派生特徴(データ変換の出力)を有する入力データは、訓練プロセス中により多くのパターンが見いだされ、記憶される可能性が高い。
少なくとも一実施例では、訓練マネージャ1504は、訓練データにわたって複数のパス又は反復を作り、パターンを発見しようとすることができる。10のパスなどデフォルトのパス数が存在してもよいが、少なくとも一実施例では、100パスまでなど、最大のパス数が設定されてもよい。少なくとも一実施例では、最大セットが存在しなくてもよく、又は訓練プロセスの終わりをトリガする収束条件又は他の要因セットが存在してもよい。少なくとも一実施例では、訓練マネージャ1504は、訓練中に(モデル収束などに対する)パターンの品質を監視することができ、発見すべきデータ点又はパターンがもはや存在しなくなったときに自動的に訓練を停止することができる。ほんのわずかな観測結果しかないデータ・セットは、十分に高いモデル品質を得るためにデータにわたってより多くのパスを必要とすることがある。より大きいデータ・セットは、多くの似たようなデータ点を含むことがあり、これにより多数のパスの必要性を低減させることができる。データにわたってより多くのデータ・パスを選択することの潜在的な影響は、モデル訓練により長い時間がかかり、リソース及びシステムの利用という観点からより多くのコストがかかり得ることである。
少なくとも一実施例では、訓練前又は訓練のパス同士間で、訓練データがシャッフルされる。シャッフルは、真にランダムな順序を生成するためのランダムな又は疑似ランダムなシャッフルであるが、特定のタイプのデータのまとまりがないように何らかの制約が課されてもよく、又はこうしたまとまりが存在する場合などには、シャッフル済みデータが再シャッフルさてもよい。シャッフルは、訓練にデータが利用される順番又は配置を変更し、それにより訓練アルゴリズムが、似たようなタイプのデータのまとまりに遭遇しないように、又は単一のタイプのデータに遭遇して多すぎる観測が連続して生じないようにする。たとえば、モデルが物体を予測するように訓練されてもよい。データは、アップロードの前に物体のタイプごとにソートされてもよい。次いでアルゴリズムは、データを物体のタイプごとにアルファベット順で処理し、ある一定の物体タイプのデータだけに最初に遭遇することがある。モデルは、物体のそのタイプのパターンを学習し始める。次いでモデルは、第2の物体のタイプのデータだけに遭遇し、その物体タイプに適合するようにモデルを調節しようとし、このことが、その第1の物体タイプに適合したパターンを劣化させることがある。物体のタイプがこのように突然切り替わることにより、物体タイプの正確な予測の仕方を学習しないモデルが生成されることがある。少なくとも一実施例では、訓練データ・セットが訓練サブセットと評価サブセットに分割される前に、シャッフルを実行することができ、それにより両方のステージにおいてデータ・タイプの相対的に均一な分配が利用される。少なくとも一実施例では、訓練マネージャ1504は、たとえば疑似ランダムなシャッフル技法を使用して、データを自動的にシャッフルすることができる。
少なくとも一実施例において機械学習モデルを作製するとき、訓練マネージャ1504により、ユーザは設定を指定したり、カスタム・オプションを適用したりできるようになる。たとえば、ユーザは、機械学習モデルの予測品質を評価するために確保すべき入力データの一部分を示す1つ又は複数の評価設定を指定してもよい。ユーザは、モデル訓練のためにどの属性及び属性変換が利用可能であるかを示すポリシーを指定してもよい。またユーザは、訓練プロセス、及びその結果生じるモデルのある一定の特性を制御する様々な訓練パラメータを指定してもよい。
本明細書で検討する少なくとも1つの終了条件を使用することなどにより、訓練マネージャが、モデルの訓練が完了したことを判定すると、検証データ1512を分類(又は他のやり方でそのための推論を生成)する際に分類器1514が使用するための訓練済みモデル1508を提供することができる。示してあるように、これには、モデルの訓練モードとモデルの推論モードとの間で論理的移行が必要になる。しかし少なくとも一実施例では、訓練済みモデル1508は、最初に評価器1510に渡されることになり、この評価器1510は、訓練済みモデルの品質(又は他のそのような態様)を評価するために少なくとも1つのコンピューティング・リソース(たとえば、少なくとも1つのサーバのCPU若しくはGPU)上で実行されるアプリケーション、プロセス、又はサービスを含んでもよい。モデルは、このモデルが新規又は将来のデータでターゲットを予測する際に少なくとも最低限許容可能な、又は閾値レベルの性能を提供するかどうかを判定するために評価される。提供しない場合には、訓練マネージャ1504は、このモデルの訓練を続けることができる。将来データのインスタンスは、未知のターゲット値を有することが多いので、ターゲットの答えが知られているデータについて機械学習の精度メトリックを検査し、このアセスメントを、将来データに対する予測精度のプロキシとして使用することが望ましいことがある。
少なくとも一実施例では、訓練のために提供された訓練データ1502のサブセットを使用してモデルが評価される。このサブセットは、上述したように、シャッフル及び分割の手法を使用して決定することができる。この評価データ・サブセットはターゲットでラベル付けされ、したがって評価のためのグラウンド・トゥルースのソースとして作用することができる。機械学習モデルの予測精度を、訓練に使用されたのと同じデータで評価することは有用ではない。なぜなら、訓練データを汎化するのではなく訓練データを覚えているモデルについて、肯定的な評価が生成されるかもしれないからである。訓練が完了すると、訓練済みモデル1508を使用して評価データ・サブセットが処理され、評価器1510は、グラウンド・トゥルース・データと、このモデルの対応する出力(又は予測/観測)とを比較することによって、このモデルの精度を判定することができる。少なくとも一実施例の評価器1510は、予測値と真値がどれだけうまく一致するかを示すサマリ又は性能メトリックを提供することができる。訓練済みモデルが、少なくとも最低限の性能条件又は他のそのような精度閾値を満足しない場合には、訓練マネージャ1504はさらなる訓練を実行するよう、又はいくつかのインスタンスでは、新しい若しくは異なるモデルを訓練するよう命令を受けることができる。訓練済みモデル1508が関連条件を満足する場合には、分類器1514によって使用されるように訓練済みモデルを提供することができる。
機械学習モデルを作製及び訓練するとき、少なくとも一実施例では、正確な予測を行うことができるモデルをもたらすことになるモデル設定又は訓練パラメータを指定することが望ましい場合がある。例示的なパラメータは、実行されるパス数(順方向及び/又は逆方向)、正則化又は精緻化、モデル・サイズ、及びシャッフル・タイプを含む。しかし、述べたように、評価データについて最良の予測性能を生成するモデル・パラメータ設定を選択することは、モデルの過剰適合をもたらすことがある。過剰適合は、モデルが、訓練及び評価のデータ・ソースにおいて生じるパターンを記憶しているが、データのパターンを汎化できていないときに生じる。過剰適合は、評価で使用されるすべてのデータを訓練データが含むときに生じることが多い。過剰適合したモデルは、評価中にはうまく機能するが、新規の又はその他の検証データに対しては正確な予測ができないことがある。過剰適合したモデルを最良モデルとして選択しないようにするために、訓練マネージャは、モデルの性能を検証するために付加的なデータを確保しておくことができる。たとえば、訓練データ・セットは、60パーセントが訓練に、40パーセントが評価又は検証に分けられてもよく、これらが2つ以上のステージに分けられてもよい。評価データに対してうまく作用するモデル・パラメータを選択し、検証データの半分など、この検証データのサブセットへの収束が得られたあと、第2の検証が、この検証データの残りを用いて実行されて、このモデルの性能が保証されてもよい。このモデルが検証データの予想に適合する場合、このモデルは過剰適合データではない。或いは、テスト・セット又はホールド・アウト・セットが、テスト・パラメータに使用されてもよい。第2の検証又はテスト・ステップを使用することによって、過剰適合を防止するための適切なモデル・パラメータを選択しやすくなる。しかし、訓練プロセスから検証用にデータをホールド・アウトすればするほど、訓練に利用可能なデータが少なくなる。訓練に利用可能なデータが十分に得られないことがあるので、データ・セットが小さい場合にはこれが問題になり得る。こうした状況における1つの手法は、本明細書の他の部分で検討するように、交差検証を実行することである。
所与のモデルの予測精度を調査及び評価するために使用することができる多くのメトリック又は見識が存在する。一例の評価結果は、モデルの全体的な成功について報告するための予測精度メトリック、並びに予測精度メトリックを超えたモデルの精度を探求しやすくするための視覚化を含む。また結果は、バイナリ分類などのためのスコア閾値を設定する影響を調査する機能も提供することができ、評価の有効性を検査するために、条件に対してアラートを生成することができる。メトリック及び視覚化の選択は、少なくとも部分的には、評価されているモデルのタイプに応じて異なってもよい。
訓練及び評価が無事に済むと、訓練済み機械学習モデルを使用して、機械学習アプリケーションを構築又はサポートすることができる。一実施例では、機械学習アプリケーションを構築することは、一連のステップを含む反復的なプロセスである。コアとなる機械学習の問題は、何が観測されるか、またモデルがどんな答えを予測するかという観点から組み立てることができる。次いで、データを収集し、クリーニングし、データを機械学習モデルの訓練アルゴリズムによって消化するのに適したものにする準備をすることができる。このデータを視覚化及び分析して、データの品質を検証しデータを理解するためにサニティ・チェックを実行することができる。未加工データ(たとえば入力変数)及び答えデータ(たとえばターゲット)は、高度な予測モデルを訓練するために使用できるようなやり方で表されていないことがあり得る。したがって、未加工の変数から、より予測に適した入力表示又は特徴を構築することが望ましいことがある。結果的に生じる特徴を、学習アルゴリズムに供給してモデルを構築し、モデル構築からホールド・アウトされたデータに対してモデルの品質を評価することができる。次いでモデルを使用して、新規のデータ・インスタンスについてターゲットの答えの予測を生成することができる。
図15の例示的なシステム1500では、評価後の訓練済みモデル1510が分類器1514に提供され、又は利用可能にされ、分類器1514は、訓練済みモデルを使用して検証データを処理することができる。これには、たとえばユーザ又は第3者から受信した、画像に何が表示されているかについての情報を探すクエリ画像など、分類されていないデータが含まれてもよい。検証データは、訓練済みモデルを使用して分類器によって処理されることが可能であり、生成された(分類又は予測などの)結果1516は、それぞれのリソースに送り返されるか、他のやり方で処理又は記憶されることが可能である。少なくとも一実施例では、また、こうした使用法が許可されている場合には、これらの今や分類済みのデータを訓練データ・リポジトリに記憶することができ、これらを使用して、訓練マネージャによる訓練済みモデル1508のさらなる訓練を行うことができる。少なくとも一実施例では、新規のデータが利用可能になるときにモデルは継続的に訓練されるが、少なくとも一実施例では、これらのモデルは、1日又は1週間に1度など、データ・セットのサイズ又はモデルの複雑さなどの要因に応じて、周期的に再訓練される。
分類器1514は、訓練済みモデルを使用して検証データ1512を処理するのに適したハードウェア及びソフトウェアを含むことができる。いくつかのインスタンスでは、分類器は1つ又は複数のコンピュータ・サーバを含み、それぞれのサーバが、データを処理することのできる1つ又は複数のグラフィックス・プロセッシング・ユニット(GPU)を有する。GPUの構成及び設計により、GPUは、CPUや他のそのような構成要素よりも、機械学習データを処理する際に使用するのに望ましいものになることができる。少なくとも一実施例では、訓練済みモデルをGPUメモリにロードすることができ、受信されたデータ・インスタンスがGPUに提供されて処理される。GPUは、CPUよりもはるかに多数のコアを有することができ、またGPUコアは、はるかに単純であることも可能である。したがって、所与のGPUは、異なるハードウェア・スレッドを介して、数千のデータ・インスタンスを同時に処理可能であってもよい。また、GPUは、浮動小数点のスループットを最大にするように構成されることが可能であり、このことは、大きいデータ・セットについて重要なさらなる処理の利点を提供することができる。
GPU、アクセラレータ、又は他のそうしたハードウェアを使用して、モデルの訓練若しくはそうしたモデルを使用したデータの分類などのタスクを加速するときでも、こうしたタスクはなお、かなりの時間、リソース配分、及びコストを必要とすることがある。たとえば、機械学習モデルが800本のパスを使用して訓練され、データ・セットが訓練に使用される1,000,000個のデータ・インスタンスを含む場合には、百万個のインスタンスのすべてが、各パスにつき処理される必要がある。アーキテクチャの異なる部分は、異なるタイプのデバイスによってサポートされることも可能である。たとえば、訓練は、論理的に集中化されたロケーションにおいてサーバのセットを使用して、サービスとして提供できるように実行されてもよく、一方、未加工データの分類は、そうした他の選択肢のなかでもとりわけ、そうしたサービスによって、又はクライアント・デバイス上で実行されてもよい。これらのデバイスは、同じエンティティによって、又は複数のエンティティによって、所有、操作、若しくは制御されてもよい。
図16は、少なくとも一実施例において訓練することができ、又は他のやり方で利用することができる例示的なニューラル・ネットワーク1600を示す。この例では、統計モデルは、入力層1602、出力層1606、及び中間ノードの複数の層1604を含むノードの複数の層を含む人工ニューラル・ネットワーク(ANN)であり、通常、従来のニューラル・ネットワークにおいて内部の層及びノードを見たりアクセスしたりできないので、中間ノードの複数の層1604は「隠れ」層と呼ばれることが多い。説明のために少しの中間層しか示していないが、利用することができる中間層の数に制限はなく、層の何らかの制限は多くの場合、モデルを使用して処理されるのに必要なリソース又は時間の係数であることが理解されるべきである。本明細書の他の部分で検討するように、さらなるタイプのモデル、ネットワーク、アルゴリズム、又はプロセスが同じく使用されてもよく、他のそのような選択肢のなかでもとりわけ、他の数のノード及び層、又は他の選択のノード及び層を含んでもよい。検証データは、ネットワークの層によって処理されて、推論のセット又は推論スコアを生成することができ、次いでそれらが、損失関数1608に供給される。
この例示的なネットワーク1600では、所与の層のすべてのノードは、隣接した層のすべてのノードに相互接続されている。示してあるように、次いで中間層のノードはそれぞれ、2つの隣接した層のノードに接続される。また、ノードは、いくつかのモデルではニューロン、又は接続ユニットとも呼ばれ、ノード間の接続はエッジと呼ばれる。各ノードは、受信した入力に対して、指定関数を使用することなどにより関数を実行することができる。ノード及びエッジは、訓練中に異なる重みを得ることができ、ノードの個々の層は、受信した入力に対して特定のタイプの変換を実行することができ、ここでこれらの変換が、訓練中に学習され調節されることも可能である。学習は、訓練データ・セットに含まれる情報のタイプに少なくとも部分的に応じて、教師あり又は教師なしの学習とすることができる。様々なタイプのニューラル・ネットワークを利用することができ、これには、多数の畳み込み層、及びプーリング層のセットを含み、画像認識などの用途に有益であることが証明されている畳み込みニューラル・ネットワーク(CNN)が含まれてもよい。またCNNは、判定されるべきパラメータの数が比較的少ないので、他のネットワークよりも訓練しやすいものであり得る。
少なくとも一実施例では、こうした複雑な機械学習モデルを、様々な訓練パラメータを使用して訓練することができる。パラメータの選択、モデルの適合、及びモデルの評価は、モデル・チューニング・プロセスの一部分であり、ハイパーパラメータ最適化と呼ばれることが多い。こうしたチューニングは、少なくとも一実施例では、基礎をなすモデル又はデータを内省することを含むことがある。訓練又は生産の設定では、本明細書の他の部分で述べたように、ハイパーパラメータの過剰適合を回避するために、ロバストなワークフローが重要であり得る。任意の1つのデータ・セットへの過剰適合を回避するのに有用であり得る技法は、訓練データ・セットの交差検証、及び訓練データ・セットにガウス・ノイズを加えることである。ハイパーパラメータ最適化については、訓練と検証のセットを固定しておくことが望ましいことがある。少なくとも一実施例では、ハイパーパラメータは特定のカテゴリにおいてチューニングすることができ、このカテゴリは、他のそのような選択肢のなかでもとりわけ、データ処理(単語をベクトルに変える)、CNNアーキテクチャ定義(たとえば、フィルタ・サイズ、フィルタ数)、確率的勾配降下法(SGD:Stochastic Gradient Descent)パラメータ(たとえば、学習率)、及び正則化又は精緻化(たとえば、ドロップアウト確率)を含んでもよい。
例示的な前処理ステップにおいて、データ・セットのインスタンスを、ある一定のサイズの低次元空間に埋め込むことができる。この空間のサイズが、チューニングすべきパラメータである。CNNのアーキテクチャは、多くのチューニング可能なパラメータを含む。フィルタ・サイズのパラメータは、分析されることになるインスタンスのサイズに対応する情報の解釈を表すことができる。コンピュータ言語学では、これはnグラム・サイズとして知られている。例示的なCNNは、3つの異なるフィルタ・サイズを使用し、それらは潜在的に異なるnグラム・サイズを表す。フィルタ・サイズ当たりのフィルタ数は、フィルタの深度に対応することができる。各フィルタは、テキスト・データのセンテンス構造など、インスタンスの構造とは異なる何かを学習しようとする。畳み込み層では、アクティブ化関数は正規化線形ユニットとすることができ、プーリング・タイプは最大プーリングに設定される。次いで、結果を連結して1次元ベクトルにすることができ、最後の層は、完全に2次元出力に接続される。これはバイナリ分類に対応し、このバイナリ分類に、最適化関数を適用することができる。1つのそのような関数は、勾配降下の二乗平均平方根(RMS)伝播法の実装であり、ここで例示的なハイパーパラメータは、学習率、バッチ・サイズ、最大勾配法線(Maximum Gradient Normal)、及びエポックを含むことができる。ニューラル・ネットワークでは、正則化を考慮することが極めて重要であり得る。少なくとも一実施例では、入力データは相対的に疎である。こうした状況における主なハイパーパラメータは、最後から2番目の層におけるドロップアウトとすることができ、これは、各訓練サイクルにおいて「発火」しないノードの割合を表す。例示的な訓練プロセスは、前の構成の性能についてのフィードバックに基づき、異なるハイパーパラメータ構成を示唆することができる。このモデルを、提案された構成で訓練し、指定された検証セットで評価することができ、性能が報告される。このプロセスは、たとえば探求(異なる構成についてより多くを学ぶこと)と、活用(前の知識を利用してより良好な結果を達成すること)とのトレード・オフを行うために繰り返すことができる。
訓練CNNを並列化することができ、GPU対応のコンピューティング・リソースを利用することができるので、異なる状況に対して複数の最適化ストラテジを試みることができる。複雑な状況は、モデル・アーキテクチャ、並びに事前処理及び確率的勾配降下法のパラメータのチューニングを可能にする。これにより、モデル構成空間が拡張される。基本的な状況では、事前処理及び確率的勾配降下法のパラメータだけがチューニングされる。基本的な状況よりも複雑な状況のほうが、構成パラメータの数が多くなり得る。結合空間におけるチューニングは、線形の、又は指数関数的なステップ数の、モデルに対する最適化ループによる反復を使用して、実行することができる。こうしたチューニング・プロセスのコストは、ランダム・サーチ及びグリッド・サーチなどのチューニング・プロセスよりはるかに少なくすることができ、いかなる重大な性能損失もない。
少なくとも一実施例では、逆伝播を利用して、ニューラル・ネットワークの重みを判定するための勾配を計算することができる。逆伝播は、微分の一形態であり、上述したように様々なノード又はニューロンに適用される重みを調節するために、勾配降下最適化アルゴリズムによって使用されることが可能である。重みは、関連する損失関数の勾配を使用して判定することができる。逆伝播は、統計モデルによって生成された出力に対して、損失関数の導関数を利用することができる。述べたように、様々なノードは、それぞれのノードの出力を定義する関連したアクティブ化関数を有することができる。放射基底関数(RBF)及びシグモイド関数が含まれてもよい様々なアクティブ化関数を適切に使用することができ、それらは、データを変換するための様々なサポート・ベクター・マシン(SVM)によって利用されることが可能である。ノードの中間層のアクティブ化関数は、本明細書において内積カーネルと呼ばれる。これらの関数は、たとえば恒等関数、ステップ関数、シグモイド関数、ランプ関数などを含むことができる。また、アクティブ化関数は、他のそうした選択肢のなかでもとりわけ、線形又は非線形であってもよい。
推論及び訓練の論理
図17Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理1715を示す。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。
少なくとも一実施例では、推論及び/又は訓練論理1715は、1つ若しくは複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、並びに/又は入力/出力データ、並びに/又は他のパラメータを記憶するためのコード及び/又はデータ・ストレージ1701を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理1715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1701を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1701には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU:arithmetic logic unit))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、そのコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ1701は、1つ若しくは複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ1701の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1701の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1701は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」)、スタティック・ランダム・アドレス可能メモリ(「SRAM」)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1701が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1715は、1つ若しくは複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、並びに/又は入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ1705を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1705は、1つ若しくは複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理1715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1705を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1705には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、そのコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ1705の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1705の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1705は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1705が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1701と、コード及び/又はデータ・ストレージ1705は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1701と、コード及び/又はデータ・ストレージ1705は、同じストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1701と、コード及び/又はデータ・ストレージ1705は、部分的に同じストレージ構造で、部分的に別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1701と、コード及び/又はデータ・ストレージ1705との任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1715は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は数学的演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)1710を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ1702に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ1701、並びに/又はコード及び/若しくはデータ・ストレージ1705に記憶される入力/出力及び/又は重みパラメータの関数である。少なくとも一実施例では、アクティブ化ストレージ1720に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU1710によって実行される線形代数計算又は行列ベースの計算に従って生成され、ここでコード及び/又はデータ・ストレージ1705並びにコード及び/又はデータ・ストレージ1701に記憶された重み値は、バイアス値、勾配情報、モーメンタム値(Momentum Value)などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ1705、又はコード及び/若しくはデータ・ストレージ1701、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
少なくとも一実施例では、ALU1710は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU1710は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU1710は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1701、コード及び/又はデータ・ストレージ1705、並びにアクティブ化ストレージ1720は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ1720の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
少なくとも一実施例では、アクティブ化ストレージ1720は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ1720は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ1720が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。少なくとも一実施例では、図17Aに示す推論及び/又は訓練論理1715は、グーグルからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はIntel CorpからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用されてもよい。少なくとも一実施例では、図17Aに示す推論及び/又は訓練論理1715は、中央処理装置(「CPU」)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)など他のハードウェアと併せて使用されてもよい。
図17Bは、少なくとも1つ又は複数の実施例による、推論及び/又は訓練論理1715を示す。少なくとも一実施例では、推論及び/又は訓練論理1715は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図17Bに示す推論及び/又は訓練論理1715は、グーグルからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU:Inference Processing Unit)、又はインテルコーポレーションからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図17Bに示す推論及び/又は訓練論理1715は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理1715は、限定することなく、コード及び/又はデータ・ストレージ1701、並びにコード及び/又はデータ・ストレージ1705を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、モーメンタム値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図17Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ1701並びにコード及び/又はデータ・ストレージ1705のそれぞれは、計算ハードウェア1702及び計算ハードウェア1706などの専用計算リソースにそれぞれ関連付けられる。少なくとも一実施例では、計算ハードウェア1702及び計算ハードウェア1706のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ1701並びにコード及び/又はデータ・ストレージ1705に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ1720に記憶される。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1701及び1705のそれぞれ、並びに対応する計算ハードウェア1702及び1706は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ1701と計算ハードウェア1702との1つの「ストレージ/計算の対1701/1702」から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、コード及び/又はデータ・ストレージ1705と計算ハードウェア1706との「ストレージ/計算の対1705/1706」への入力として提供される。少なくとも一実施例では、ストレージ/計算の対1701/1702、及び1705/1706は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対1701/1702、及び1705/1706の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理1715に含まれてもよい。
データ・センタ
図18は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1800を示す。少なくとも一実施例では、データ・センタ1800は、データ・センタ・インフラストラクチャ層1810、フレームワーク層1820、ソフトウェア層1830、及びアプリケーション層1840を含む。
少なくとも一実施例では、図18に示すように、データ・センタ・インフラストラクチャ層1810は、リソース・オーケストレータ(Resource Orchestrator)1812、グループ化済みコンピューティング・リソース1814、及びノード・コンピューティング・リソース(「ノードC.R.」)1816(1)~1816(N)を含んでもよく、ここで「N」は、任意の正の整数を表す。少なくとも一実施例では、ノードC.R.1816(1)~1816(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえば、半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」)デバイス、ネットワーク・スイッチ、仮想機械(「VM」)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1816(1)~1816(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
少なくとも一実施例では、グループ化済みコンピューティング・リソース1814は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース1814内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
少なくとも一実施例では、リソース・オーケストレータ1812は、1つ又は複数のノードC.R.1816(1)~1816(N)及び/若しくはグループ化済みコンピューティング・リソース1814を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1812は、データ・センタ1800用のソフトウェア設計インフラストラクチャ(「SDI」)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
図18に示す少なくとも一実施例では、フレームワーク層1820は、ジョブ・スケジューラ1822、構成マネージャ1824、リソース・マネージャ1826、及び分配ファイル・システム1828を含む。少なくとも一実施例では、フレームワーク層1820は、ソフトウェア層1830のソフトウェア1832、及び/又はアプリケーション層1840の1つ若しくは複数のアプリケーション1842を含んでもよい。少なくとも一実施例では、ソフトウェア1832又はアプリケーション1842はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1820は、大規模なデータ処理(たとえばビック・データ)のために分配ファイル・システム1828を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1822は、データ・センタ1800の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1824は、ソフトウェア層1830、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム1828を含むフレームワーク層1820などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1826は、分配ファイル・システム1828及びジョブ・スケジューラ1822をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1810にあるグループ化済みコンピューティング・リソース1814を含んでもよい。少なくとも一実施例では、リソース・マネージャ1826は、リソース・オーケストレータ1812と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
少なくとも一実施例では、ソフトウェア層1830に含まれるソフトウェア1832は、ノードC.R.1816(1)~1816(N)、グループ化済みコンピューティング・リソース1814、及び/又はフレームワーク層1820の分配ファイル・システム1828のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
少なくとも一実施例では、アプリケーション層1840に含まれるアプリケーション1842は、ノードC.R.1816(1)~1816(N)、グループ化済みコンピューティング・リソース1814、及び/又はフレームワーク層1820の分配ファイル・システム1828のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、Tensorflow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
少なくとも一実施例では、構成マネージャ1824、リソース・マネージャ1826、及びリソース・オーケストレータ1812のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1800のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
少なくとも一実施例では、データ・センタ1800は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ1800に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ1800に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
推論及び/又は訓練論理1715を使用して、1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作が実行される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図18のシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
自律車両
図19Aは、少なくとも一実施例による自律車両1900の例を示す。少なくとも一実施例では、自律車両1900(或いは、本明細書において「車両1900」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1a00は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1a00は、航空機、ロボット車両、又は他の種類の車両であってもよい。
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「NHTSA」)、及び自動車技術者協会(「SAE」)の「自動車用運転自動化システムのレベル分類及び定義(Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles)」(たとえば、2018年6月15日発行の規格No.J3016-201806、2016年9月30日発行の規格No.J3016-201609、及びこの規格の旧版及び新版)により定義される自動化レベルという観点から説明されてもよい。1つ又は複数の実施例では、車両1900は、自律運転レベルのレベル1~レベル5のうちの1つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両1900は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であってもよい。
少なくとも一実施例では、車両1900は、限定することなく、シャシ、車両本体、ホイール(2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両1900は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別のタイプの推進システムなどの推進システム1950を含んでもよい。少なくとも一実施例では、推進システム1950は、車両1900のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両1900の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム1950は、スロットル/アクセル1952からの信号を受信したことに応答して、制御されてもよい。
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム1954は、推進システム1950が動作しているときに(たとえば、車両が動いているときに)車両1900を(たとえば所望の経路又はルートに沿って)操縦するために使用される。少なくとも一実施例では、操縦システム1954は、操縦アクチュエータ1956から信号を受信してもよい。ハンドルは、完全自動化(レベル5)の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ1948及び/又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1946が使用されてもよい。
少なくとも一実施例では、1つ又は複数のシステム・オン・チップ(「SoC」)(図19Aには示さず)及び/若しくはグラフィックス・プロセッシング・ユニット(「GPU」)を限定することなく含んでもよいコントローラ(1936)は、車両1900の1つ又は複数の構成要素及び/若しくはシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも一実施例では、コントローラ1936は、ブレーキ・アクチュエータ1948を介して車両ブレーキを動作させるための信号、操縦アクチュエータ1956を介して操縦システム1954を動作させるための信号、及び/又はスロットル/アクセル1952を介して推進システム1950を動作させるための信号を送信してもよい。コントローラ1936は、自律運転を可能にし、且つ/又は運転車両1900において人間のドライバを支援するために、センサ信号を処理し、動作コマンド(たとえばコマンドを表す信号)を出力する1つ又は複数の搭載(たとえば一体型の)コンピューティング・デバイス(たとえば、スーパーコンピュータ)を含んでもよい。少なくとも一実施例では、コントローラ1936は、自律運転機能のための第1のコントローラ1936、機能的安全機能のための第2のコントローラ1936、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ1936、インフォテイメント機能のための第4のコントローラ1936、緊急事態における冗長性のための第5のコントローラ1936、及び/又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラ1936が、上記機能性のうちの2つ以上に対処してもよく、2つ以上のコントローラ1936が、単一の機能性に対処してもよく、且つ/又はこれらの何らかの組合せであってもよい。
少なくとも一実施例では、コントローラ1936は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して、車両1900の1つ又は複数の構成要素及び/若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム(「GNSS」)センサ1958(たとえば、全地球測位システム・センサ)、RADARセンサ1960、超音波センサ1962、LIDARセンサ1964、慣性計測装置(「IMU」)センサ1966(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1996、ステレオ・カメラ1968、広角カメラ1970(たとえば、魚眼カメラ)、赤外線カメラ1972、周囲カメラ1974(たとえば、360度カメラ)、長距離カメラ(図19Aには示さず)、中距離カメラ(図19Aには示さず)、(たとえば、車両1900のスピードを計測するための)スピード・センサ1944、振動センサ1942、操縦センサ1940、(たとえば、ブレーキ・センサ・システム1946の一部分としての)ブレーキ・センサ、及び/又は他のタイプのセンサから、受信されてもよい。
少なくとも一実施例では、コントローラ1936のうちの1つ又は複数は、車両1900の計器クラスタ1932からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」)ディスプレイ1934、可聴アナンシエータ、拡声器を介して、且つ/又は車両1900の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、ハイ・デフィニション・マップ(図19Aには示さず)、ロケーション・データ(たとえば、地図上などの車両1900のロケーション)、方向、他車両のロケーション(たとえば、占有グリッド)、コントローラ1936が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、HMIディスプレイ1934は、1つ若しくは複数の物体(たとえば、道路標識、警告標識、信号の変化など)の存在についての情報、及び/又は車両が行った、行っている、又はこれから行う運転操作についての情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示してもよい。
少なくとも一実施例では、車両1900はさらにネットワーク・インターフェース1924を含み、このネットワーク・インターフェースは、1つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ1926及び/又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース1924は、ロング・ターム・エボリューション(「LTE」)、広帯域符号分割多元接続(「WCDMA(登録商標)」)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」)、グローバル・システム・フォー・モバイル・コミュニケーションズ(「GSM(登録商標)」)、IMT-CDMAマルチ・キャリア(「CDMA2000」)などを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ1926は、Bluetooth(登録商標)、Bluetooth Low Energy (「LE」)、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力広域ネットワークを使用して、環境内の物体同士間(たとえば車両、モバイル・デバイスなど)での通信を可能にしてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図19Aのシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図19Bは、少なくとも一実施例による図19Aの自律車両1900についてカメラのロケーション及び視野の例を示す。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び/又は代替のカメラが含まれてもよく、且つ/又はカメラが車両1900の異なるロケーションに位置付けられてもよい。
少なくとも一実施例では、カメラのカメラ・タイプは、車両1900の構成要素及び/又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。少なくとも一実施例では、カメラのうちの1つ又は複数は、自動車安全性要求レベル(「ASIL:Automotive Safety Integrity Level」)B及び/又は別のASILにおいて動作してもよい。少なくとも一実施例では、カメラ・タイプは、実施例に応じて、毎秒60フレーム(fps)、120fps、240fpsなど、任意の画像捕捉率に対応可能であってもよい。少なくとも一実施例では、カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はこれらの組合せを使用することが可能であってもよい。少なくとも一実施例では、カラー・フィルタ・アレイは、赤色、クリア、クリア、クリア(「RCCC」)のカラー・フィルタ・アレイ、赤色、クリア、クリア、青色(「RCCB」)のカラー・フィルタ・アレイ、赤色、青色、緑色、クリア(「RBGC」)のカラー・フィルタ・アレイ、Foveon X3のカラー・フィルタ・アレイ、ベイヤー・センサ(RGGB)のカラー・フィルタ・アレイ、モノクロ・センサのカラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含んでもよい。少なくとも一実施例では、光感度を上げるために、RCCC、RCCB、及び/又はRBGCのカラー・フィルタ・アレイを有するカメラなど、クリア・ピクセル・カメラが使用されてもよい。
少なくとも一実施例では、カメラのうちの1つ又は複数を使用して、先進ドライバ支援システム(「Adas:Advanced Driver Assistance Systems」)機能が(たとえば、冗長設計又はフェイル・セーフ設計の一部として)実行されてもよい。たとえば、少なくとも一実施例では、多機能モノ・カメラが設置されて、車線逸脱警告、交通標識支援、及びインテリジェント・ヘッドライト制御を含む機能が提供されてもよい。少なくとも一実施例では、カメラのうちの1つ又は複数(たとえばすべてのカメラ)は、画像データ(たとえばビデオ)の記録と提供を同時に行ってもよい。
少なくとも一実施例では、カメラのうちの1つ又は複数は、カメラの画像データ捕捉性能を妨げる恐れのある迷光及び車内部からの反射(たとえば、ダッシュボードからフロントガラスに反射される反射)をなくすために、カスタム設計の(3次元(「3D」)印刷された)アセンブリなどの取付けアセンブリに取り付けられてもよい。ドアミラー取付けアセンブリを参照すると、少なくとも一実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形の合うように、カスタムで3D印刷されてもよい。少なくとも一実施例では、カメラは、ドアミラーと一体であってもよい。サイド・ビュー・カメラについて、少なくとも一実施例では、カメラはこの場合もキャビンの各角にある4本のピラーに一体化されてもよい。
少なくとも一実施例では、車両1900前方の環境の一部分を含む視野を有するカメラ(たとえば正面カメラ)は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ1936及び/又は制御SoCのうちの1つ又は複数とともに使用されて、占有グリッドの生成及び/又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、LIDARと同じADAS機能のうちの多くが実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告(「LDW:Lane Departure Warnings」)、自律クルーズ・コントロール(「ACC:Autonomous Cruise Control」)、及び/又は交通標識認識などの他の機能を限定することなく含むADASの機能及びシステムのために使用されてもよい。
少なくとも一実施例では、たとえばCMOS(「相補型金属酸化膜半導体」)カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体(たとえば歩行者、クロス・トラフィック、又は自転車)を感知するために、広角カメラ1970が使用されてもよい。図19Bには1つの広角カメラ1970しか示していないが、他の実施例では、車両1900には(ゼロを含む)任意の数の広角カメラ1970が存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ1998(たとえば、長距離ビューのステレオ・カメラの対)が使用されてもよい。少なくとも一実施例では、長距離カメラ1998はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
少なくとも一実施例では、任意の数のステレオ・カメラ1968は、正面構成にも含まれてよい。少なくとも一実施例では、ステレオ・カメラ1968のうちの1つ又は複数は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」)又はイーサネット(登録商標)・インターフェースを単一チップ上に有するプログラム可能論理(「FPGA」)及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両1900の環境の3Dマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ1968のうちの1つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両1900からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる2つのカメラ・レンズ(左右に1つずつ)及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ1968が使用されてもよい。
少なくとも一実施例では、車両1900の側方の環境の一部分を含む視野を有するカメラ(たとえば、サイド・ビュー・カメラ)が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ1974(たとえば図19Bに示すように4つの周囲カメラ1974)を、車両1900に配置することができる。少なくとも一実施例では、周囲カメラ1974は、限定することなく、任意の数及び組合せの広角カメラ1970、魚眼カメラ、及び/又は360度カメラなどを含んでもよい。たとえば、少なくとも一実施例では、4つの魚眼カメラが、車両1900の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両1900は、3つの周囲カメラ1974(たとえば、左、右、及び後方)を使用してもよく、第4の周囲カメラとして、1つ又は複数の他のカメラ(たとえば正面カメラ)を活用してもよい。
少なくとも一実施例では、車両1900後方の環境の一部分を含む視野を有するカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ(たとえば、長距離カメラ1998、及び/又は中距離カメラ1976、ステレオ・カメラ1968)、赤外線カメラ1972など)を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図19Bのシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図19Cは、少なくとも一実施例による図19Aの自律車両1900の例示的システム・アーキテクチャを示すブロック図である。少なくとも一実施例では、図19Cの車両1900の構成要素、特徴、及びシステムのそれぞれは、バス1902を介して接続されるものとして示される。少なくとも一実施例では、バス1902は、限定することなく、CANデータ・インターフェース(或いは、本明細書において(CANバス)と呼ばれる)を含んでもよい。少なくとも一実施例では、CANバスは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両1900の様々な特徴及び機能の制御を補助するために使用される車両1900内部のネットワークであってもよい。少なくとも一実施例では、バス1902は、それぞれが独自の一意の識別子(たとえばCAN ID)をもつ数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス1902は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」)、ボタン位置、及び/又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス1902は、ASILのBに準拠したCANバスであってもよい。
少なくとも一実施例では、CANに加えて、又はその代わりに、FlexRay及び/又はEthernet(登録商標)が使用されてもよい。少なくとも一実施例では、任意の数のバス1902が存在してもよく、これには、限定することなく、ゼロ以上のCANバス、ゼロ以上のFlexRayバス、ゼロ以上のEthernet(登録商標)バス、及び/又は他のプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、2つ以上のバス1902を使用して異なる機能が実行されてもよく、且つ/又はそれらを使用して冗長性が与えられてもよい。たとえば、第1のバス1902が衝突回避機能のために使用され、第2のバス1902が作動制御のために使用されてもよい。少なくとも一実施例では、各バス1902は、車両1900の任意の構成要素と通信してもよく、2つ以上のバス1902が同じ構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ(「SoC」)1904のそれぞれ、コントローラ1936のそれぞれ、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1900のセンサからの入力)にアクセス可能であってもよく、CANバスなどの共通のバスに接続されてもよい。
少なくとも一実施例では、車両1900は、図19Aに関して本明細書に記載するものなど、1つ又は複数のコントローラ1936を含んでもよい。コントローラ1936は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ1936は、車両1900の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両1900、車両1900の人工知能、及び/又は車両1900のインフォテイメント(infotainment)などの制御に使用されてもよい。
少なくとも一実施例では、車両1900は、任意の数のSoC1904を含んでもよい。それぞれのSoC1904は、限定することなく、中央処理装置(「CPU」)1906、グラフィックス・プロセッシング・ユニット(「GPU」)1908、プロセッサ1910、キャッシュ1912、アクセラレータ1914、データ・ストア1916、及び/又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両1900を様々なプラットフォーム及びシステムにおいて制御するために、SoC1904が使用されてもよい。たとえば、少なくとも一実施例では、SoC1904は、1つ又は複数のサーバ(図19Cには示さず)からネットワーク・インターフェース1924を介して地図のリフレッシュ及び/又は更新を得ることができるハイ・デフィニション(「HD」)マップ1922を有するシステム(たとえば車両1900のシステム)に組み込まれてもよい。
少なくとも一実施例では、CPU1906は、CPUクラスタ、又はCPUコンプレックス(或いは本明細書において「CCPLEX」と呼ばれる)を含んでもよい。少なくとも一実施例では、CPU1906は、複数のコア及び/又はレベル2(「L2」)キャッシュを含んでもよい。たとえば、少なくとも一実施例では、CPU1906は、コヒーレントなマルチプロセッサ構成において8つのコアを含んでもよい。少なくとも一実施例では、CPU1906は、4つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のL2キャッシュ(たとえば、2MBのL2キャッシュ)を有する。少なくとも一実施例では、CPU1906(たとえば、CCPLEX)は、CPU1906のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
少なくとも一実施例では、CPU1906のうちの1つ又は複数は、電力管理機能を実装してもよく、この機能は限定することなく、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる;割込み待ち(「WFI:Wait For Interrupt」)/イベント待ち(「WFE:Wait For Event」)命令の実行に起因してコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる;各コアを独立して電力ゲート制御することができる;すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる;且つ/又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、CPU1906はさらに、電力状態を管理するための拡張アルゴリズムを実装してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXが入るべき最良の電力状態を、ハードウェア/マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
少なくとも一実施例では、GPU1908は、統合されたGPU(或いは、本明細書において「iGPU」と呼ばれる)を含んでもよい。少なくとも一実施例では、GPU1908は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、GPU1908は、少なくとも一実施例では拡張テンソル命令セットを使用してもよい。少なくとも一実施例では、GPU1908は、1つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば少なくとも96KBのストレージ容量を有するL1キャッシュ)を含んでもよく、ストリーミング・マイクロプロセッサのうちの2つ以上は、L2キャッシュ(たとえば、512KBのストレージ容量を有するL2キャッシュ)を共有してもよい。少なくとも一実施例では、GPU1908は、少なくとも8つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、GPU1908は、コンピュート・アプリケーション・プログラミング・インターフェース(API)を使用してもよい。少なくとも一実施例では、GPU1908は、1つ又は複数の並列なコンピューティング・プラットフォーム、及び/又はプログラミング・モジュール(たとえば、NVIDIAのCUDA)を使用してもよい。
少なくとも一実施例では、GPU1908のうちの1つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、一実施例では、GPU1908は、フィン電界効果トランジスタ(「FinFET」)上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく64個のPF32コアと、32個のPF64コアを、4つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習の行列演算用の2つの混合精度のNVIDIA TENSORコア、レベルゼロ(「L0」)命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現する。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、L1データ・キャッシュと共有メモリ・ユニットの組合せを含んでもよい。
少なくとも一実施例では、GPU1908のうちの1つ又は複数は、高帯域幅メモリ(「HBW:High Bandwidth Memory」)及び/又は16GBのHBM2メモリ・サブシステムを含み、いくつかの例では、約900GB/秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、HBMメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプの5つの同期ランダム・アクセス・メモリ(「GDDR5」)などの同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」)が使用されてもよい。
少なくとも一実施例では、GPU1908は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス(「ATS」)サポートを使用して、GPU1908が、CPU1906のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、GPU1908メモリ管理ユニット(「MMU」)がミスに遭遇したときには、アドレス・トランスレーション要求が、CPU1906に送信されてもよい。少なくとも一実施例では、それに応答して、CPU1906は、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをGPU1908に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、CPU1906とGPU1908の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし、それにより、GPU1908のプログラミング、及びGPU1908へのアプリケーションの移植を簡単にする。
少なくとも一実施例では、GPU1908は、他のプロセッサのメモリへのGPU1908のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
少なくとも一実施例では、SoC1904のうちの1つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ1912を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ1912は、CPU1906もGPU1908も利用可能な(たとえば、CPU1906とGPU1908の両方に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも一実施例では、キャッシュ1912は、キャッシュ・コヒーレンス・プロトコルなど(たとえば、MEI、MESI、MSIなど)を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、L3キャッシュは、実施例に応じて4MB以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
少なくとも一実施例では、SoC1904のうちの1つ又は複数は、1つ又は複数のアクセラレータ1914(たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ)を含んでもよい。少なくとも一実施例では、SoC1904は、最適化されたハードウェア・アクセラレータ及び/又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、GPU1908を補完し、GPU1908のタスクのうちのいくつかをオフロードしてもよい(たとえば、他のタスクを実行できるようにGPU1908のサイクルをより多く解放してもよい)。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」)、再帰ニューラル・ネットワーク(「RNN」)など)のために、アクセラレータ1914を使用することができる。少なくとも一実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」)、及び(たとえば、物体検出に使用される)高速RCNN、又は他のタイプのCNNを含んでもよい。
少なくとも一実施例では、アクセラレータ1914(たとえば、ハードウェア加速クラスタ)は、深層学習アクセラレータ(「DLA」)を含んでもよい。DLAは、限定することなく、1つ又は複数のTensor処理ユニット(「TPU」)を含んでもよく、このユニットは、深層学習アプリケーション及び推論のために、さらに毎秒10兆の演算を提供するように構成されてもよい。少なくとも一実施例では、TPUは、画像処理機能(たとえば、CNN、RCNNなど)を実行するように構成され、そのために最適化されたアクセラレータであってもよい。DLAはさらに、ニューラル・ネットワーク・タイプと浮動小数点演算の特定のセット、並びに推論のために最適化されてもよい。少なくとも一実施例では、DLAの設計により、典型的な汎用GPUよりもミリメートル当たりの性能を向上させることができ、典型的には、CPUの性能を大いに上回る。少なくとも一実施例では、TPUは、たとえば特徴と重みの両方のためのINT8、INT16、及びFP16のデータ型をサポートする単一インスタンスの畳み込み関数、並びに後処理関数を含む、いくつか関数を実行してもよい。少なくとも一実施例では、DLAは、たとえば、限定することなく、カメラ・センサからのデータを使用した物体識別及び検出のためのCNN、カメラ・センサからのデータを使用した距離推定のためのCNN、マイクロフォン1996からのデータを使用した緊急車両検出、及び識別、及び検出のためのCNN、カメラ・センサからのデータを使用した顔認識及び車両所有者識別ためのCNN、並びに/又はセキュリティ及び/若しくは安全に関するイベントのためのCNNを含め、様々な機能のうちのいずれかのための処理済み若しくは未処理のデータに対して、迅速且つ効率的にニューラル・ネットワーク、特にCNNを実行してもよい。
少なくとも一実施例では、DLAは、GPU1908の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにDLA又はGPU1908のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、CNN及び浮動小数点演算の処理をDLAに集中させ、他の機能をGPU1908及び/又は他のアクセラレータ1914に任せてもよい。
少なくとも一実施例では、アクセラレータ1914(たとえば、ハードウェア加速クラスタ)は、プログラマブル・ビジョン・アクセラレータ(「PVA」)を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1938、自律運転、拡張現実(「AR」)アプリケーション、及び/又は仮想現実(「VR」)アプリケーションのために、コンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成されてもよい。PVAにより、性能と融通性との均衡が保たれてもよい。たとえば、少なくとも一実施例では、各PVAは、たとえば限定することなく、任意の数の縮小命令セット・コンピュータ(「RISC」)コア、ダイレクト・メモリ・アクセス(「DMA」)、及び/又は任意の数のベクトル・プロセッサを含んでもよい。
少なくとも一実施例では、RISCコアは、画像センサ(たとえば、本明細書に記載のカメラのうちの任意のカメラの画像センサ)、及び/又は画像信号プロセッサなどと相互作用してもよい。少なくとも一実施例では、RISCコアのそれぞれは、任意の量のメモリを含んでもよい。少なくとも一実施例では、RISCコアは、実施例に応じて複数のプロトコルのうちの任意のものを使用してもよい。少なくとも一実施例では、RISCコアは、リアル・タイム・オペレーティング・システム(「RTOS」)を実行してもよい。少なくとも一実施例では、RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(「ASIC」)、及び/又はメモリ・デバイスを使用して実装されてもよい。たとえば、少なくとも一実施例では、RISCコアは、命令キャッシュ及び/又は密結合RAMを含むことができる。
少なくとも一実施例では、DMAは、PVAの構成要素がCPU1906とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、DMAは、多次元アドレッシング、及び/又はサーキュラ・アドレッシングを含むがこれらに限定されない、PVAに最適化を提供するために使用される任意の数の特徴をサポートしてもよい。少なくとも一実施例では、DMAは、6つ以上のアドレッシング次元までをサポートしてもよく、これには、限定することなく、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングが含まれてもよい。
少なくとも一実施例では、ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのためのプログラミングを効率的でフレキシブルに実行するように設計されてもよいプログラム可能なプロセッサとすることができ、信号処理機能を提供する。少なくとも一実施例では、PVAは、PVAコアと、2つのベクトル処理サブシステム・パーティションを含んでもよい。少なくとも一実施例では、PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば2つのDMAエンジン)、及び/又は他の周辺装置を含んでもよい。少なくとも一実施例では、ベクトル処理サブシステムは、PVAの一次処理エンジンとして動作してもよく、ベクトル処理ユニット(「VPU」)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、「VMEM」)を含んでもよい。少なくとも一実施例では、VPUは、たとえば単一命令複数データ(「SIMD」)、超長命令語(「VLIW」)のデジタル信号プロセッサなどのデジタル信号プロセッサを含んでもよい。少なくとも一実施例では、SIMDとVLIWの組合せによって、スループット及びスピードが改善されてもよい。
少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、命令キャッシュを含んでもよく、専用のメモリに結合されてもよい。その結果、少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、他のベクトル・プロセッサとは無関係に実行されるように構成されてもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成されてもよい。たとえば、少なくとも一実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを画像の異なる領域上で実行してもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを同じ画像上で同時に実行してもよく、又はさらには、異なるアルゴリズムを連続した画像上で、若しくは画像の部分上で実行してもよい。少なくとも一実施例では、とりわけ、任意の数のPVAがハードウェア加速クラスタに含まれてもよく、任意の数のベクトル・プロセッサが各PVAに含まれてもよい。少なくとも一実施例では、PVAは、システムの全体的な安全性を強化するために、追加の誤り訂正符号(「ECC」)メモリを含んでもよい。
少なくとも一実施例では、アクセラレータ1914(たとえば、ハードウェア加速クラスタ)は、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ(「SRAM」)を含み、アクセラレータ1914のための高帯域幅、低レイテンシのSRAMを提供してもよい。少なくとも一実施例では、オン・チップ・メモリは、たとえば限定することなく、8つのフィールド設定可能なメモリ・ブロックから成る少なくとも4MBのSRAMを含んでもよく、これは、PVAからもDLAからもアクセス可能であってもよい。少なくとも一実施例では、メモリ・ブロックの各対は、アドバンスト・ペリフェラル・バス(「APB」)インターフェース、構成回路、コントローラ、及びマルチプレクサを含んでもよい。少なくとも一実施例では、任意のタイプのメモリが使用されてもよい。少なくとも一実施例では、PVA及びDLAは、メモリへの高速アクセスをPVA及びDLAに提供するバックボーンを介して、メモリにアクセスしてもよい。少なくとも一実施例では、バックボーンは、PVA及びDLAを(たとえばAPBを使用して)メモリに相互接続するオン・チップのコンピュータ・ビジョン・ネットワークを含んでもよい。
少なくとも一実施例では、オン・チップのコンピュータ・ビジョン・ネットワークは、何らかの制御信号/アドレス/データを送信する前に、PVAとDLAの両方が準備信号及び有効信号を提供することを判定するインターフェースを含んでもよい。少なくとも一実施例では、インターフェースは、制御信号/アドレス/データを送信するための別々の位相及び別々のチャネル、並びに継続的なデータ転送のためのバースト型通信を提供してもよい。少なくとも一実施例では、インターフェースは、国際標準化機構(「ISO」)26262又は国際電気標準会議(「IEC」)61508の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
少なくとも一実施例では、SoC1904のうちの1つ又は複数は、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを使用して、物体の(たとえば世界モデル内での)位置及び範囲が迅速且つ効率的に判定されて、RADAR信号解釈のため、音伝播合成及び/若しくは分析のため、SONARシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び/若しくは他の機能を目的としたLIDARデータとの比較のため、並びに/又は他の使用法のためのリアル・タイムの可視化シミュレーションが生成されてもよい。
少なくとも一実施例では、アクセラレータ1914(たとえば、ハードウェア・アクセラレータ・クラスタ)は、自律運転のための多様な使用法を有する。少なくとも一実施例では、PVAは、ADAS及び自律車両の主要な処理ステージに使用することができるプログラマブル・ビジョン・アクセラレータであってもよい。少なくとも一実施例では、PVAの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、PVAは、低レイテンシ及び低電力の予測可能なラン・タイムを必要とする半稠密(semi-dense)又は稠密な規則的計算に対して、データ・セットが小さくても良好に機能する。少なくとも一実施例では、車両1900などの自律車両では、従来のコンピュータ・ビジョン・アルゴリズムを実行するようにPVAが設計されるが、これは、それらが、物体検出及び整数数値の演算に有効だからである。
たとえば、技術の少なくとも一実施例によれば、PVAを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル3~5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造化、歩行者認識、車線検出など)をオン・ザ・フライで使用する。少なくとも一実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
少なくとも一実施例では、PVAを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、PVAは、未加工のRADARデータを(たとえば4Dの高速フーリエ変換を使用して)処理して、処理済みRADARデータを提供することができる。少なくとも一実施例では、PVAは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、DLAが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性によって、どの検出を誤検出ではなく正検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。たとえば、少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを正検出とみなしてもよい。自動緊急ブレーキ(「AEB」)が使用される実施例では、誤検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、AEBのトリガとみなされてもよい。少なくとも一実施例では、DLAは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、(たとえば別のサブシステムから)取得した地面推定、車両1900の配向と相関しているIMUセンサ1966からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1964若しくはRADARセンサ1960)から取得した物体の3Dロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
少なくとも一実施例では、SoC1904のうちの1つ又は複数は、データ・ストア1916(たとえばメモリ)を含んでもよい。少なくとも一実施例では、データ・ストア1916は、SoC1904のオン・チップ・メモリであってもよく、このメモリは、GPU1908及び/又はDLA上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア1916の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア1916は、L2又はL3のキャッシュを備えてもよい。
少なくとも一実施例では、SoC1904のうちの1つ又は複数は、任意の数のプロセッサ1910(たとえば、組み込みプロセッサ)を含んでもよい。少なくとも一実施例では、プロセッサ1910は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、SoC1904のブート・シーケンスの一部であってもよく、ラン・タイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、SoC1904の熱及び温度センサの管理、並びに/又はSoC1904の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装されてもよく、SoC1904は、リング発振器を使用して、CPU1906、GPU1908、及び/又はアクセラレータ1914の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、SoC1904を低電力状態にし、且つ/又は車両1900を運転手-安全停止モードにしても(たとえば、車両1900を安全停止させる)よい。
少なくとも一実施例では、プロセッサ1910はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよい。少なくとも一実施例では、オーディオ処理エンジンは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用RAMのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
少なくとも一実施例では、プロセッサ1910はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含んでもよい。
少なくとも一実施例では、プロセッサ1910はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、2つ以上のプロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラなど)、及び/又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで2つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ1910はさらにリアル・タイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアル・タイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ1910はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
少なくとも一実施例では、プロセッサ1910は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実装する(たとえばマイクロプロセッサに実装された)処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ1970、周囲カメラ1974、及び/又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、SoC1904の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースを合成するために使用されてもよく、GPU1908は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、GPU1908の電源が入れられ、アクティブで3Dレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してGPU1908をオフロードしてもよい。
少なくとも一実施例では、SoC1904のうちの1つ又は複数はさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」)のカメラ直列インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、SoC1904のうちの1つ又は複数はさらに、入力/出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないI/O信号を受信するために使用されてもよい。
少なくとも一実施例では、SoC1904のうちの1つ又は複数はさらに、周辺装置、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。SoC1904は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続されてもよいLIDARセンサ1964、RADARセンサ1960など)からのデータ、バス1902からのデータ(たとえば、車両1900のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ1958からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、SoC1904のうちの1つ又は複数はさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のDMAエンジンを含んでもよく、ルーチンのデータ管理タスクからCPU1906を解放するために使用されてもよい。
少なくとも一実施例では、SoC1904は、自動化レベル3~5に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びADAS技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックが、深層学習ツールとともに提供される。少なくとも一実施例では、SoC1904は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率が高い。たとえば、少なくとも一実施例では、アクセラレータ1914は、CPU1906、GPU1908、及びデータ・ストア1916と組み合わされると、レベル3~5の自律車両のための高速で効率的なプラットフォームを実現することができる。
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行されてもよく、このアルゴリズムは、Cプログラミング言語などの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、CPUは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのCPUは、車両内のADASアプリケーション及び現実的なレベル3~5の自律車両において使用される複雑な物体検出アルゴリズムを、リアル・タイムで実行することができない。
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ/又は順番に実行できるようにし、結果を組み合わせて、レベル3~5の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、DLA又は個別GPU(たとえば、GPU1920)上で実行しているCNNは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を、スーパーコンピュータが読み、理解できるようにする。少なくとも一実施例では、DLAはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
少なくとも一実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意:点滅時は凍結状態」と示される警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、標識自体は、第1の導入済みニューラル・ネットワーク(たとえば、訓練されてきたニューラル・ネットワーク)によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第2の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第3の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在(又は存在しないこと)が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又はGPU1908上などで同時に実行されてもよい。
少なくとも一実施例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して、車両1900の承認済みのドライバ及び/又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者が車両から離れるときには、セキュリティ・モードで車両を使用不可にしてもよい。こうして、SoC1904は、窃盗及び/又は自動車乗っ取りに対するセキュリティを実現する。
少なくとも一実施例では、緊急車両の検出及び識別のためのCNNは、マイクロフォン1996からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、SoC1904は、環境及び市街地の音を分類するとともに、視覚データを分類するためにCNNを使用する。少なくとも一実施例では、DLA上で実行されるCNNは、緊急車両が近づいてくる相対的なスピードを(たとえばドップラー効果を使用することによって)識別するように訓練される。少なくとも一実施例では、CNNはまた、GNSSセンサ1958によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、CNNは欧州のサイレンを検出しようとし、米国の場合には、北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ/又は緊急車両が通過するまで、超音波センサ1962を併用して車両をアイドリングにしてもよい。
少なくとも一実施例では、車両1900はCPU1918(たとえば、個別CPU又はdCPU)を含んでもよく、このCPUは高速相互接続(たとえば、PCIe)を介してSoC1904に結合されてもよい。少なくとも一実施例では、CPU1918は、たとえばX86プロセッサを含んでもよい。CPU1918は、たとえば、ADASセンサとSoC1904の間で潜在的に不整合な結果を調停すること、並びに/又はコントローラ1936及び/若しくはチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1930の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。
少なくとも一実施例では、車両1900はGPU1920(たとえば、個別GPU又はdGPU)を含んでもよく、このGPUは高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC1904に結合されてもよい。少なくとも一実施例では、GPU1920は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両1900のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び/又は更新するために使用されてもよい。
少なくとも一実施例では、車両1900はさらに、ネットワーク・インターフェース1924を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ1926(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコル向けの1つ又は複数のワイヤレス・アンテナ1926)を含んでもよい。少なくとも一実施例では、クラウド(たとえば、サーバ及び/又は他のネットワーク・デバイス)、他の車両、及び/又はコンピューティング・デバイス(たとえば、乗員のクライアント・デバイス)とのインターネットを介したワイヤレス接続を可能にするために、ネットワーク・インターフェース1924が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両190と他の車両との間に直接リンクが確立されてもよく、且つ/又は(たとえば、ネットワークにわたって、且つインターネットを介して)間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。車車間通信リンクは、車両1900の近傍の車両(たとえば、車両1900の前方、側方、及び/又は後方の車両)についての情報を車両1900に提供してもよい。少なくとも一実施例では、前述した機能は、車両1900の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
少なくとも一実施例では、ネットワーク・インターフェース1924は、変調及び復調の機能を提供し、コントローラ1936がワイヤレス・ネットワークを介して通信できるようにするSoCを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース1924は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ/又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、LTE、WCDMA、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
少なくとも一実施例では、車両1900はさらにデータ・ストア1928を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ(たとえばSoC1904上にない)ストレージを含んでもよい。少なくとも一実施例では、データ・ストア1928は、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)、ビデオ・ランダム・アクセス・メモリ(「VRAM」)、フラッシュ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶することができる他の構成要素及び/若しくはデバイスを含む1つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
少なくとも一実施例では、車両1900はさらに、マッピング、知覚、占有グリッド生成、及び/又は経路計画の機能を支援するためのGNSSセンサ1958(たとえば、GPS及び/又は補助GPSセンサ)を含んでもよい。少なくとも一実施例では、イーサネット(登録商標)からシリアル(たとえばRS-232)へのブリッジを有するUSBコネクタを使用するGPSをたとえば限定することなく含む任意の数のGNSSセンサ1958が使用されてもよい。
少なくとも一実施例では、車両1900はさらに、RADARセンサ1960を含んでもよい。RADARセンサ1960は、暗闇及び/又は厳しい気象条件の中でも、長距離の車両検出を行うために車両1900によって使用されてもよい。少なくとも一実施例では、RADARの機能的安全性レベルは、ASIL Bであってもよい。RADARセンサ1960は、制御のために(たとえば、RADARセンサ1960によって生成されたデータを送信するために)、また物体追跡データにアクセスするために、CAN及び/又はバス1902を使用してもよく、いくつかの例では、未加工データにアクセスするためにイーサネット(登録商標)にアクセスできる。少なくとも一実施例では、多様なタイプのRADARセンサが使用されてもよい。たとえば限定することなく、RADARセンサ1960は、前方、後方、及び側方のRADAR使用に好適であってもよい。少なくとも一実施例では、RADARセンサ1960のうちの1つ又は複数は、パルス・ドップラRADARセンサである。
少なくとも一実施例では、RADARセンサ1960は、狭視野の長距離、広視野の短距離、側面を網羅する短距離など、異なる構成を含んでもよい。少なくとも一実施例では、長距離RADARは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離RADARシステムは、2つ以上の独立した走査によって実現される250mの範囲内などの広視野を提供してもよい。少なくとも一実施例では、RADARセンサ1960は、静的物体と移動している物体とを区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにADASシステム1938によって使用されてもよい。長距離RADARシステムに含まれるセンサ1960は、複数の(たとえば6つ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースを有するモノスタティックのマルチモードRADARを、限定することなく含んでもよい。少なくとも一実施例では、6つのアンテナがある場合、中央の4つのアンテナは、隣接した車線からの干渉が最小の状態で、より高速で車両1900の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の2つのアンテナは、視野を拡張してもよく、車両1900の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
少なくとも一実施例では、中距離RADARシステムは、一例として最大160m(前方)、又は80m(後方)の範囲、及び最大42度(前方)、又は150度(後方)の視野を含んでもよい。少なくとも一実施例では、短距離RADARシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1960を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、RADARセンサ・システムは、後方及び車両隣の死角を常に監視する2本のビームを生成してもよい。少なくとも一実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援を行うために、ADASシステム1938において使用されてもよい。
少なくとも一実施例では、車両1900はさらに、超音波センサ1962を含んでもよい。超音波センサ1962は、車両1900の前方、後方、及び/又は側方に配置されてもよく、駐車支援のため、且つ/又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ1962が使用されてもよく、異なる検出範囲(たとえば、2.5m、4m)には異なる超音波センサ1962が使用されてもよい。少なくとも一実施例では、超音波センサ1962は、機能的安全性レベルASIL Bで動作してもよい。
少なくとも一実施例では、車両1900は、LIDARセンサ1964を含んでもよい。LIDARセンサ1964は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用されてもよい。少なくとも一実施例では、LIDARセンサ1964は、機能的安全性レベルASIL Bであってもよい。少なくとも一実施例では、車両1900は、複数のLIDARセンサ1964(たとえば、2つ、4つ、6つなど)を含んでもよく、これらのセンサは、(たとえばデータをギガビット・イーサネット(登録商標)・スイッチに提供するために)イーサネット(登録商標)を使用してもよい。
少なくとも一実施例では、LIDARセンサ1964は、360度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のLIDARセンサ1964は、たとえば宣伝された範囲がおおよそ100mであり、精度が2cm~3cmであり、100Mbpsのイーサネット(登録商標)接続をサポートしてもよい。少なくとも一実施例では、1つ又は複数の非突出型LIDARセンサ1964が使用されてもよい。こうした実施例では、LIDARセンサ1964は、車両1900の前方、後方、側方、及び/又は角に組み込むことができる小さいデバイスとして実装されてもよい。少なくとも一実施例では、こうした実施例のLIDARセンサ1964は、最大120度の水平視野、及び35度の垂直視野を、低反射性の物体に対しても200mの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたLIDARセンサ1964は、45度~135度の水平視野をもたらすように構成されてもよい。
少なくとも一実施例では、3DフラッシュLIDARなどのLIDAR技術も使用されてよい。3DフラッシュLIDARは、レーザのフラッシュを送信源として使用して、車両1900の周囲を最大でおおよそ200mまで照射する。少なくとも一実施例では、フラッシュLIDARユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両1900から物体までの範囲に対応する。少なくとも一実施例では、フラッシュLIDARによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになる。少なくとも一実施例では、4つのフラッシュLIDARが、車両1900の各側面に1つ導入されてもよい。少なくとも一実施例では、3DフラッシュLIDARシステムは、ファン以外に可動部品のない半導体3D凝視アレイ(staring array)のLIDARカメラ(たとえば、非走査型LIDARデバイス)を、限定することなく含む。少なくとも一実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(目に安全な)レーザ・パルスを使用してもよく、3D範囲の点群及び位置同期された(co-registered)強度データの形で反射レーザ光を捕捉してもよい。
少なくとも一実施例では、車両はさらにIMUセンサ1966を含んでもよい。少なくとも一実施例では、IMUセンサ1966は、少なくとも一実施例では、車両1900の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、IMUセンサ1966は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のタイプのセンサを含んでもよい。6軸の用途など少なくとも一実施例では、IMUセンサ1966は限定することなく、加速度計及びジャイロスコープを含んでもよい。9軸の用途など少なくとも一実施例では、IMUセンサ1966は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
少なくとも一実施例では、IMUセンサ1966は、微小電気機械システム(「MEMS」)慣性センサ、高感度GPS受信機、及び先進のKalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能GPS補強型慣性航法システム(「GPS/INS」)として実装されてもよい。少なくとも一実施例では、IMUセンサ1966により、車両1900は、速度変化を直接観察しそれをGPSからIMUセンサ1966に相関させることによって、磁気センサからの入力を必要とせずに方位を推定できるようになる。少なくとも一実施例では、IMUセンサ1966及びGNSSセンサ1958は、単一の統合ユニットに組み合わされてもよい。
少なくとも一実施例では、車両1900は、車両1900の中及び/又はその周りに設置されたマイクロフォン1996を含んでもよい。少なくとも一実施例では、マイクロフォン1996は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
少なくとも一実施例では、車両1900はさらに、ステレオ・カメラ1968、広角カメラ1970、赤外線カメラ1972、周囲カメラ1974、長距離カメラ1998、中距離カメラ1976、及び/又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両1900の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、使用されるカメラのタイプは、車両1900に応じて異なる。少なくとも一実施例では、車両1900の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、カメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両1900は6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク(「GMSL」)及び/又はギガビット・イーサネット(登録商標)をサポートしてもよい。少なくとも一実施例では、各カメラは、図19A及び図19Bに関して本明細書でさらに詳細に上で説明されている。
少なくとも一実施例では、車両1900はさらに、振動センサ1942を含んでもよい。少なくとも一実施例では、振動センサ1942は、車軸など、車両1900の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、2つ以上の振動センサ1942が使用される場合には、路面の摩擦又はすべり量を判定するために振動の差が使用されてもよい(たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合)。
少なくとも一実施例では、車両1900は、ADASシステム1938を含んでもよい。ADASシステム1938は、限定することなく、いくつかの例においてSoCを含んでもよい。少なくとも一実施例では、ADASシステム1938は、限定することなく、任意の数及び任意の組合せの、自律/アダプティブ/自動のクルーズ・コントロール(「ACC」)システム、協調型アダプティブ・クルーズ・コントロール(「CACC」)システム、正面衝突警告(「FCW」)システム、自動緊急ブレーキ(「AEB」)システム、車線逸脱警告(「LDW」)システム、車線維持支援(「LKA」)システム、死角警告(「BSW」)システム、後方クロス・トラフィック警告(「RCTW」)システム、衝突警告(「CW」)システム、車線センタリング(「LC」)システム、並びに/又は他のシステム、特徴、及び/若しくは機能を含んでもよい。
少なくとも一実施例では、ACCシステムは、RADARセンサ1960、LIDARセンサ1964、及び/又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含んでもよい。少なくとも一実施例では、縦方向ACCシステムは、車両1900の直前の車両までの距離を監視及び制御し、車両1900のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ACCシステムは、距離の維持を実行し、必要なときに車線変更するよう車両1900に通知する。少なくとも一実施例では、横方向ACCは、LC及びCWなどの他のADAS用途に関係する。
少なくとも一実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して(たとえばインターネットを介して)、他の車両からネットワーク・インターフェース1924及び/又はワイヤレス・アンテナ1926により受信されてもよい。少なくとも一実施例では、車車間(「V2V」)通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間(「I2V」)通信リンクによって間接リンクが提供されてもよい。一般に、V2V通信の概念は、すぐ前の先行車両(たとえば、車両1900のすぐ前で同じ車線にいる車両)についての情報を提供し、I2V通信の概念は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、CACCシステムは、I2VとV2Vの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両1900の前の車両についての情報があれば、CACCシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
少なくとも一実施例では、FCWシステムは、危険物に対してドライバに忠告するように設計され、それによりドライバは修正措置を取ることができる。少なくとも一実施例では、FCWシステムは正面カメラ及び/又はRADARセンサ1960を使用し、これらは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、FCWシステムは、音、視覚的警告、振動、及び/又はクイック・ブレーキ・パルスなどの形で警告を提供してもよい。
少なくとも一実施例では、AEBシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された正面カメラ及び/又はRADARセンサ1960を使用してもよい。少なくとも一実施例では、AEBシステムが危険物を検出したとき、AEBシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、AEBシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突直前ブレーキなどの技法を含んでもよい。
少なくとも一実施例では、LDWシステムは、車両1900が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることによって意図的な車線逸脱を示す場合には、LDWシステムは作動しない。少なくとも一実施例では、LDWシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合することができる専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、LKAシステムは、LDWシステムの変形形態である。LKAシステムは、車両1900が車線からはみ出し始めた場合に、車両を修正するように操縦入力又はブレーキ制御を提供する。
少なくとも一実施例では、BSWシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、BSWシステムは、視覚的、聴覚的、及び/又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、BSWシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された背面カメラ及び/又はRADARセンサ1960を使用してもよく、これらの専用のプロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
少なくとも一実施例では、RCTWシステムは、車両1900の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び/又は触覚的な通知を提供してもよい。少なくとも一実施例では、RCTWシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、AEBシステムを含む。少なくとも一実施例では、RCTWシステムは、1つ又は複数の背面RADARセンサ1960を使用してもよく、これはディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。
少なくとも一実施例では、従来のADASシステムは、誤検出結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のADASシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ(たとえば第1のコントローラ1936)からの結果に従うか、又は二次コンピュータ(たとえば、第2のコントローラ1936)からの結果に従うかどうかを、車両1900自体が判断する。たとえば、少なくとも一実施例では、ADASシステム1938は、バックアップ・コンピュータの合理性モジュールに知覚情報を抵抗するための、バックアップ及び/又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ADASシステム1938からの出力は、監視MCUに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力が矛盾する場合には、監視MCUが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視MCUに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視MCUは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果(たとえば、矛盾)を示す場合には、監視MCUは、コンピュータ同士を調停して、適切な結果を判定してもよい。
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータと二次コンピュータからの出力に少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視MCUが実行するように構成されてもよい。少なくとも一実施例では、監視MCUのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがRADARベースのFCWシステムである場合、監視MCUのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのLDWシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視MCUのニューラル・ネットワークはLDWを無効にするように学習してもよい。少なくとも一実施例では、監視MCUは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なDLA又はGPUのうちの少なくとも1つを含んでもよい。少なくとも一実施例では、監視MCUは、SoC1904の構成要素を備えても、且つ/又はその構成要素として含まれてもよい。
少なくとも一実施例では、ADASシステム1938は、コンピュータ・ビジョンの従来のルールを使用してADAS機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、従来のコンピュータ・ビジョン・ルール(if-thenルール)を使用してもよく、ニューラル・ネットワークが監視MCUに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実装及び意図的な非同一性により、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)の機能によって生じる誤りに対し、システム全体の誤り耐性が高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に同じ結果を提供する場合には、監視MCUは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
少なくとも一実施例では、ADASシステム1938の出力は、一次コンピュータの知覚ブロック、及び/又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ADASシステム1938が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって誤検出のリスクを低減する独自のニューラル・ネットワークを有してもよい。
少なくとも一実施例では、車両1900はさらに、インフォテイメントSoC1930(たとえば、車両内インフォテイメント・システム(IVI))を含んでもよい。インフォテイメント・システム1930はSoCとして図示及び説明されるが、少なくとも一実施例では、SoCではなくてもよく、限定することなく2つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1930は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など)を車両1900に提供してもよい。たとえば、インフォテイメントSoC1930は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、USB及びBluetooth接続、カーピュータ、車内エンタテイメント、Wi-Fi、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ(「HUD」)、HMIディスプレイ1934、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/若しくはシステムを制御及び/若しくは相互作用するための)制御パネル、並びに/又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントSoC1930を使用して、ADASシステム1938からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(たとえば、視覚的及び/又は聴覚的な)情報が、車両のユーザに提供されてもよい。
少なくとも一実施例では、インフォテイメントSoC1930は、任意の量及びタイプのGPU機能を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1930は、バス1902(たとえば、CANバス、イーサネット(登録商標)など)を介して、車両1900の他のデバイス、システム、及び/又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントSoC1930は監視MCUに結合されてもよく、それにより、一次コントローラ1936(たとえば、車両1900の一次及び/又はバックアップのコンピュータ)が故障したときに、インフォテイメント・システムのGPUが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントSoC1930は、本明細書に記載するように、車両1900を運転手-安全停止モードにしてもよい。
少なくとも一実施例では、車両1900はさらに、計器クラスタ1932(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)を含んでもよい。少なくとも一実施例では、計器クラスタ1932は、限定することなく、コントローラ、及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含んでもよい。少なくとも一実施例では、計器クラスタ1932は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、バーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計器セットを含んでもよい。いくつかの例では、インフォテイメントSoC1930と計器クラスタ1932との間で、情報が表示及び/又は共有されてもよい。少なくとも一実施例では、計器クラスタ1932は、インフォテイメントSoC1930の一部として含まれてもよく、又はその逆であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図19Aのシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図19Dは、少なくとも一実施例による、クラウド・ベースのサーバと図19Aの自律車両1900との間で通信するためのシステム1976の図である。少なくとも一実施例では、システム1976は、限定することなく、サーバ1978、ネットワーク1990、並びに車両1900を含む任意の数及びタイプの車両を含んでもよい。少なくとも一実施例では、サーバ1978は、限定することなく、複数のGPU1984(A)~1984(H)(本明細書ではまとめてGPU1984と呼ぶ)、PCIeスイッチ1982(A)~1982(D)(本明細書ではまとめてPCIeスイッチ1982と呼ぶ)、及び/又はCPU1980(A)~1980(B)(本明細書ではまとめてCPU1980と呼ぶ)を含んでもよい。GPU1984、CPU1980、及びPCIeスイッチ1982は、たとえば限定することなく、NVIDIAにより開発されたNVLinkインターフェース1988、及び/又はPCIe接続1986などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、GPU1984同士は、NVLink及び/又はNVSスイッチSoCを介して接続され、GPU1984とPCIeスイッチ1982は、PCIe相互接続を介して接続される。少なくとも一実施例では、8個のGPU1984、2個のCPU1980、及び4個のPCIeスイッチ1982が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ1978のそれぞれは、限定することなく、任意の数のGPU1984、CPU1980、及び/又はPCIeスイッチ1982を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ1978は、それぞれが8個、16個、32個、及び/又はそれ以上のGPU1984を含むことができる。
少なくとも一実施例では、サーバ1978は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1990を介して車両から受信してもよい。少なくとも一実施例では、サーバ1978は、ニューラル・ネットワーク1992、更新済みニューラル・ネットワーク1992、及び/又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報1994を、ネットワーク1990を介して車両に送信してもよい。少なくとも一実施例では、地図情報1994の更新は、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1922に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク1992、更新済みニューラル・ネットワーク1992、及び/又は地図情報1994は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び/又は経験から得られたものであってもよく、且つ/又は、データ・センタにおいて(たとえば、サーバ1978及び/又は他のサーバを使用して)実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
少なくとも一実施例では、サーバ1978を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル(たとえば、ニューラル・ネットワーク)が訓練されてもよい。少なくとも一実施例では、訓練データは車両によって生成されてもよく、且つ/又はシミュレーションで(たとえば、ゲーム・エンジンを使用して)生成されてもよい。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には)任意の量の訓練データがタグ付けされ、且つ/又は他の前処理を受ける。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には)任意の量の訓練データはタグ付け及び/又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく(たとえば、ネットワーク1990を介して車両に送信されてもよく、且つ/又は機械学習モデルは、車両を遠隔監視するためにサーバ1978によって使用されてもよい。
少なくとも一実施例では、サーバ1978は車両からデータを受信し、リアル・タイムの知的推論ができるように、最新のリアル・タイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ1978は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1984によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ1978は、CPUにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
少なくとも一実施例では、サーバ1978の深層学習インフラストラクチャは、高速のリアル・タイムの推論が可能であってもよく、その機能を使用して、車両1900のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び/又はその一連の画像において(たとえば、コンピュータ・ビジョン及び/又は他の機械学習の物体分類技法により)車両1900が位置特定した物体など、周期的な更新を車両1900から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両1900によって識別された物体と比較してもよく、結果が一致せず、車両1900のAIが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ1978は、車両1900のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両1900に送信してもよい。
少なくとも一実施例では、サーバ1978は、GPU1984、及び1つ又は複数のプログラム可能な推論アクセラレータ(たとえば、NVIDIAのTensorRT3)を含んでもよい。少なくとも一実施例では、GPUにより動くサーバと、推論の加速とを組み合わせることによって、リアル・タイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、CPU、FPGA、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、1つ又は複数の実施例を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。
コンピュータ・システム
図20は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せ2000を有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム2000は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ2000などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム2000は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、XeonTM、Itanium(登録商標)、XScaleTM及び/又はStrongARMTM、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム2000は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
少なくとも一実施例では、コンピュータ・システム2000は、限定することなくプロセッサ2002を含んでもよく、このプロセッサ2002は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット2008を含んでもよい。少なくとも一実施例では、コンピュータ・システム2000は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、コンピュータ・システム2000はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ2002は、限定することなく、複合命令セット・コンピュータ(「CISC」)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ2002は、プロセッサ・バス2010に結合されてもよく、このプロセッサ・バスは、プロセッサ2002とコンピュータ・システム2000内の他の構成要素との間でデジタル信号を送信してもよい。
少なくとも一実施例では、プロセッサ2002は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)2004を含んでもよい。少なくとも一実施例では、プロセッサ2002は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ2002の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル2006は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット2008も、プロセッサ2002にある。少なくとも一実施例では、プロセッサ2002は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」)も含んでよい。少なくとも一実施例では、実行ユニット2008は、パック命令セット2009に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット2009を、命令を実行する関連回路とともに汎用プロセッサ2002の命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ2002のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
少なくとも一実施例では、実行ユニット2008はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム2000は、限定することなくメモリ2020を含んでもよい。少なくとも一実施例では、メモリ2020は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。少なくとも一実施例では、メモリ2020は、プロセッサ2002によって実行されてもよいデータ信号によって表される命令2019、及び/又はデータ2021を記憶してもよい。
少なくとも一実施例では、システム論理チップが、プロセッサ・バス2010及びメモリ2020に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」)2016を含んでもよく、プロセッサ2002は、プロセッサ・バス2010を介してMCHと通信してもよい。少なくとも一実施例では、MCH2016は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路2018をメモリ2020に提供してもよい。少なくとも一実施例では、MCH2016は、プロセッサ2002と、メモリ2020と、コンピュータ・システム2000の他の構成要素との間でデータ信号を導き、プロセッサ・バス2010と、メモリ2020と、システムI/O2022との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH2016は、高帯域幅メモリ経路2018を介してメモリ2020に結合されてもよく、グラフィックス/ビデオカード2012は、アクセラレーテッド・グラフィックス・ポート(「AGP」)相互接続2014を介してMCH2016に結合されてもよい。
少なくとも一実施例では、コンピュータ・システム2000は、MCH2016をI/Oコントローラ・ハブ(「ICH」)2030に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O2022を使用してもよい。少なくとも一実施例では、ICH2030は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ2020、チップセット、及びプロセッサ2002に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ2029、ファームウェア・ハブ(「フラッシュBIOS」)2028、ワイヤレス・トランシーバ2026、データ・ストレージ2024、ユーザ入力及びキーボードのインターフェース2025を含むレガシーI/Oコントローラ2023、ユニバーサル・シリアル・バス(「USB」)などのシリアル拡張ポート2027、及びネットワーク・コントローラ2034が、限定することなく含まれてもよい。データ・ストレージ2024は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
少なくとも一実施例では、図20は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図20は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、デバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム2000の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図20のシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図21は、少なくとも一実施例による、プロセッサ2110を利用するための電子デバイス2100を示すブロック図である。少なくとも一実施例では、電子デバイス2100は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
少なくとも一実施例では、システム2100は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ2110を、限定することなく含んでもよい。少なくとも一実施例では、1℃バス、システム・マネージメント・バス(「SMBus」)、ロー・ピン・カウント(LPC)バス、シリアル・ペリフェラル・インターフェース(「SPI」)、ハイ・デフィニション・オーディオ(「HDA」)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3)、又はユニバーサル非同期レシーバ/トランスミッタ(「UART」)バスなどのバス若しくはインターフェースを使用して結合されるプロセッサ2110。少なくとも一実施例では、図21は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図21は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図21に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図21の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
少なくとも一実施例では、図21は、ディスプレイ2124、タッチ画面2125、タッチ・パッド2130、近距離無線通信ユニット(「NFC」)2145、センサ・ハブ2140、熱センサ2146、エクスプレス・チップセット(「EC」)2135、トラステッド・プラットフォーム・モジュール(「TPM」)2138、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」)2122、DSP2160、ソリッド・ステート・ディスク(「SSD」)若しくはハード・ディスク・ドライブ(「HDD」)などのドライブ2120、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」)2150、Bluetoothユニット2152、ワイヤレス広域ネットワーク・ユニット(「WWAN」)2156、全地球測位システム(GPS)2155、USB3.0カメラなどのカメラ(「USB3.0カメラ」)2154、及び/又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」)メモリ・ユニット(「LPDDR3」)2115を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ2110に通信可能に結合されてもよい。少なくとも一実施例では、加速度計2141、周囲光センサ(「ALS」)2142、コンパス2143、及びジャイロスコープ2144が、センサ・ハブ2140に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ2139、ファン2137、キーボード2146、及びタッチ・パッド2130が、EC2135に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ2163、ヘッドフォン2164、及びマイクロフォン(「mic」)2165が、オーディオ・ユニット(オーディオ・コーデック及びクラスdアンプ)2162に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP2160に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット2164は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)2157は、WWANユニット2156に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット2150及びBluetoothユニット2152などの構成要素、並びにWWAN2156は、次世代フォーム・ファクタ(「NGFF」)に実装されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図21のシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図22は、少なくとも一実施例による、コンピュータ・システム2200を示す。少なくとも一実施例では、コンピュータ・システム2200は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
少なくとも一実施例では、コンピュータ・システム2200は、限定することなく、少なくとも1つの中央処理装置(「CPU」)2202を含み、この処理装置は、PCI(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」)、AGP(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス2210に接続される。少なくとも一実施例では、コンピュータ・システム2200は、メイン・メモリ2204、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」)の形をとってもよいメイン・メモリ2204に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)2222は、他のシステムからデータを受信し、コンピュータ・システム2200から他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
少なくとも一実施例では、コンピュータ・システム2200は、少なくとも一実施例では限定することなく、入力デバイス2208、パラレル処理システム2212、及びディスプレイ・デバイス2206を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」)、液晶ディスプレイ(「LCD」)、発光ダイオード(「LED」)、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス2208から受け取る。少なくとも一実施例では、上記モジュールのそれぞれを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図22のシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図23は、少なくとも一実施例によるコンピュータ・システム2300を示す。少なくとも一実施例では、コンピュータ・システム2300は、限定することなく、コンピュータ2310及びUSBスティック2320を含んでもよい。少なくとも一実施例では、コンピュータ・システム2310は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリを含んでもよい。少なくとも一実施例では、コンピュータ2310は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
少なくとも一実施例では、USBスティック2320は、限定することなく、処理ユニット2330、USBインターフェース2340、及びUSBインターフェース論理2350を含む。少なくとも一実施例では、処理ユニット2330は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット2330は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理コア2330は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理コア2330は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」)である。少なくとも一実施例では、処理コア2330は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
少なくとも一実施例では、USBインターフェース2340は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース2340は、データ及び電源用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース2340は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理2350は、処理ユニット2330がUSBコネクタ2340を介してデバイス(たとえばコンピュータ2310)と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図23のシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図24Aは、複数のGPU2410~2413が、高速リンク2440~2443(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ2405~2406に通信可能に結合されている例示的なアーキテクチャを示す。一実施例では、高速リンク2440~2443は、4GB/s、30GB/s、80GB/s、又はそれ以上の通信スループットをサポートする。PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。
さらに、一実施例では、GPU2410~2413のうちの2つ以上は、高速リンク2440~2443に関して使用されたものと同じ又は異なるプロトコル/リンクを使用して実装されてもよい高速リンク2429~2430を介して相互接続される。同様に、マルチ・コア・プロセッサ2405~2406のうちの2つ以上は、20GB/s、30GB/s、120GB/s、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる高速リンク2428を介して接続されてもよい。或いは、図24Aに示す様々なシステム構成要素間のすべての通信は、同じプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
一実施例では、各マルチ・コア・プロセッサ2405~2406は、それぞれメモリ相互接続2426~2427を介してプロセッサ・メモリ2401~2402に通信可能に結合され、各GPU2410~2413は、それぞれGPUメモリ・相互接続2450~2453を介してGPUメモリ2420~2423に通信可能に結合される。メモリ相互接続2426~2427及び2450~2453は、同じ又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ2401~2402及びGPUメモリ2420~2423は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。一実施例では、(たとえば、2レベル・メモリ(2LM)階層を使用して)、プロセッサ・メモリ2401~2402のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
以下に説明するように、様々なプロセッサ2405~2406及びGPU2410~2413は、それぞれ特定のメモリ2401~2402、2420~2423に物理的に結合されてもよいが、同じ仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが、実装されてもよい。たとえば、プロセッサ・メモリ2401~2402はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ2420~2423はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよい(この例では結果的に、合計256GBのアドレス可能メモリが得られる)。
図24Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ2407とグラフィックス加速モジュール2446との相互接続のさらなる詳細事項を示す。グラフィックス加速モジュール2446は、高速リンク2440を介してプロセッサ2407に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。或いは、グラフィックス加速モジュール2446は、プロセッサ2407と同じパッケージ又はチップに集積されてもよい。
少なくとも一実施例では、図示しているプロセッサ2407は、複数のコア2460A~2460Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ2461A~2461Dと、1つ又は複数のキャッシュ2462A~2462Dとを有する。少なくとも一実施例では、コア2460A~2460Dは、命令を実行しデータを処理するための様々な他の構成要素を含んでもよいが、これらは図示していない。キャッシュ2462A~2462Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ2456が、キャッシュ2462A~2462Dに含まれ、コア2460A~2460Dによって共有されてもよい。たとえば、プロセッサ2407の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。プロセッサ2407及びグラフィックス加速モジュール2446は、システム・メモリ2414に接続されており、このシステム・メモリは、図24Aのプロセッサ・メモリ2401~2402を含んでもよい。
様々なキャッシュ2462A~2462D、2456、及びシステム・メモリ2414に記憶されたデータ及び命令についてのコヒーレンスは、コヒーレンス・バス2464を介したコア間通信によって維持される。たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス2464を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。一実装形態では、キャッシュ・アクセスを監視するために、コヒーレンス・バス2464を介してキャッシュ・スヌーピング・プロトコルが実装される。
一実施例では、プロキシ回路2425が、グラフィックス加速モジュール2446をコヒーレンス・バス2464に通信可能に結合して、グラフィックス加速モジュール2446がコア2460A~2460Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加することを可能にする。特に、インターフェース2435は、高速リンク2440(たとえば、PCIeバス、NVLinkなど)を通してプロキシ回路2425への接続を提供し、インターフェース2437は、グラフィックス加速モジュール2446をリンク2440に接続する。
一実装形態では、アクセラレータ統合回路2436は、グラフィックス加速モジュール2446の複数のグラフィックス処理エンジン2431、2432、Nの代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理サービスを提供する。グラフィックス処理エンジン2431、2432、Nはそれぞれ、別個のグラフィックス処理ユニット(GPU)を備えてもよい。或いは、グラフィックス処理エンジン2431、2432、Nは、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール2446は、複数のグラフィックス処理エンジン2431~2432、Nを有するGPUであってもよく、又はグラフィックス処理エンジン2431~2432、Nは、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
一実施例では、アクセラレータ統合回路2436は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)、及びシステム・メモリ2414にアクセスするためのメモリ・アクセス・プロトコルを含む。MMU2439は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含んでよい。一実装形態では、キャッシュ2438は、グラフィックス処理エンジン2431~2432、Nから効率的にアクセスできるように、コマンド及びデータを記憶する。一実施例では、キャッシュ2438及びグラフィックス・メモリ2433~2434、Mに記憶されたデータは、コア・キャッシュ2462A~2462D、2456、及びシステム・メモリ2414とのコヒーレントが保たれる。上に述べたように、これは、キャッシュ2438及びメモリ2433~2434、Mの代わりにプロキシ回路2425を介して(たとえば、プロセッサ・キャッシュ2462A~2462D、2456におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ2438に送り、キャッシュ2438からのアップデートを受け取って)実現されてもよい。
レジスタ2445のセットが、グラフィックス処理エンジン2431~2432、Nによって実行されるスレッドのためのコンテキクト・データを記憶し、コンテキスト管理回路2448が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路2448は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドは保存され、第2のスレッドは記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路2448は、現在のレジスタ値をメモリの(たとえば、コンテキスト・ポインタによって識別された)指定領域に記憶してもよい。次いで、コンテキストに戻るときに、それがレジスタ値を復元してもよい。一実施例では、割込み管理回路2447が、システム・デバイスから受け取った割込みを受け取り、処理する。
一実装形態では、グラフィックス処理エンジン2431からの仮想/実効アドレスは、MMU2439によってシステム・メモリ2414の実/物理アドレスにトランスレートされる。アクセラレータ統合回路2436の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール2446、及び/又は他のアクセラレータ・デバイスをサポートする。グラフィックス・アクセラレータ・モジュール2446は、プロセッサ2407上で実行している単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。一実施例では、グラフィックス処理エンジン2431~2432、Nのリソースが複数のアプリケーション又は仮想機械(VM)により共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに配分される。
少なくとも一実施例では、アクセラレータ統合回路2436は、グラフィックス加速モジュール2446のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、アクセラレータ統合回路2436は、グラフィックス処理エンジン2431~2432、Nの仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
グラフィックス処理エンジン2431~2432、Nのハードウェア・リソースは、ホスト・プロセッサ2407が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレスすることができる。一実施例では、アクセラレータ統合回路2436の1つの機能は、グラフィックス処理エンジン2431~2432、Nを、システムにとって独立したユニットに見えるように物理的に分離することである。
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ2433~2434、Mはそれぞれ、グラフィックス処理エンジン2431~2432、Nのそれぞれに結合される。グラフィックス・メモリ2433~2434、Mは、グラフィックス処理エンジン2431~2432、Nのそれぞれによって処理される命令及びデータを記憶する。グラフィックス・メモリ2433~2434、Mは、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
一実施例では、リンク2440を介したデータ・トラフィックを低減するために、グラフィックス・メモリ2433~2434、Mに記憶されるデータが、グラフィックス処理エンジン2431~2432、Nによって最も頻繁に使用されることになるデータであるようにし、好ましくはコア2460A~2460Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用される。同様に、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン2431~2432、Nは必要としない)データを、コアのキャッシュ2462A~2462D、2456、及びシステム・メモリ2414の中に保つよう試みる。
図24Cは、アクセラレータ統合回路2436がプロセッサ2407内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン2431~2432、Nは、インターフェース2437及びインターフェース2435により、高速リンク2440を介して直接アクセラレータ統合回路2346と通信する(この場合も任意の形のバス又はインターフェース・プロトコルを利用することができる)。アクセラレータ統合回路2436は、図24Bに関して説明したのと同じ動作を実行してもよいが、コヒーレンス・バス2464及びキャッシュ2462A~2462D、2456に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。少なくとも一実施例は、(グラフィックス加速モジュールの仮想化のない)専用のプロセス・プログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路2436によって制御されるプログラミング・モデルと、グラフィックス加速モジュール2446によって制御されるプログラミング・モデルとを含んでもよい。
少なくとも一実施例では、グラフィックス処理エンジン2431~2432、Nは、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン2431~2432、Nに集中させて、VM/パーティション内で仮想化を実現することができる。
少なくとも一実施例では、グラフィックス処理エンジン2431~2432、Nは、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルは、グラフィックス処理エンジン2431~2432、Nを仮想化するためにシステム・ハイパーバイザを使用して、各オペレーティング・システムからのアクセスを可能にしてもよい。ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン2431~2432、Nは、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン2431~2432、Nを仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
少なくとも一実施例では、グラフィックス加速モジュール2446又は個々のグラフィックス処理エンジン2431~2432、Nは、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ2414に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン2431~2432、Nに登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実装固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
図24Dは、例示的なアクセラレータ統合スライス2490を示す。本明細書で使用するとき、「スライス」は、アクセラレータ統合回路2436の処理リソースの指定部分を備える。システム・メモリ2414内のアプリケーション実効アドレス空間2482は、プロセス要素2483を記憶する。一実施例では、プロセス要素2483は、プロセッサ2407上で実行されているアプリケーション2480からのGPU呼出し2481に応答して、記憶される。プロセス要素2483は、対応するアプリケーション2480のプロセス状態を収容する。プロセス要素2483に収容されたワーク記述子(WD)2484は、アプリケーションによって要求された単一のジョブとすることができ、又はジョブのキューに対するポインタを格納してもよい。少なくとも一実施例では、WD2484は、アプリケーションのアドレス空間2482におけるジョブ要求キューに対するポインタである。
グラフィックス加速モジュール2446及び/又は個々のグラフィックス処理エンジン2431~2432、Nは、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD2484をグラフィックス加速モジュール2446に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実装固有である。このモデルでは、単一のプロセスが、グラフィックス加速モジュール2446又は個々のグラフィックス処理エンジン2431を所有する。グラフィックス加速モジュール2446が単一のプロセスによって所有されることから、グラフィックス加速モジュール2446が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路2436を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路2436を初期化する。
動作時、アクセラレータ統合スライス2490内のWDフェッチ・ユニット2491は、グラフィックス加速モジュール2446の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD2484をフェッチする。図示してあるように、WD2484からのデータは、レジスタ2445に記憶され、MMU2439、割込み管理回路2447、及び/又はコンテキスト管理回路2448によって使用されてもよい。たとえば、MMU2439の一実施例は、OS仮想アドレス空間2485内のセグメント/ページ・テーブル2486にアクセスするためのセグメント/ページ・ウォーク回路(walk circuitry)を含む。割込み管理回路2447は、グラフィックス加速モジュール2446から受け取った割込みイベント2492を処理してもよい。グラフィックス動作を実行するとき、グラフィックス処理エンジン2431~2432、Nによって生成された実効アドレス2439は、MMU2439によって実アドレスにトランスレートされる。
一実施例では、レジスタ2445の同じセットが、各グラフィックス処理エンジン2431~2432、N、及び/又はグラフィックス加速モジュール2446について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス2490に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
一実施例では、各WD2484は、特定のグラフィックス加速モジュール2446及び/又はグラフィックス処理エンジン2431~2432、Nに固有のものである。WD2484は、グラフィックス処理エンジン2431~2432、Nがワークをするために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップしたメモリ・ロケーションを指すポインタとすることができる。
図24Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト2499が記憶されているハイパーバイザ実アドレス空間2498を含む。ハイパーバイザ実アドレス空間2498は、オペレーティング・システム2495のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ2496を介してアクセス可能である。
少なくとも一実施例では、共有プログラミング・モデルは、システム内のパーティションのすべて又はサブセットからのプロセスのすべて又はサブセットが、グラフィックス加速モジュール2446を使用することを可能にする。グラフィックス加速モジュール2446が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ存在する:時間スライス共有及びグラフィックス指定共有(graphics-directed shared)である。
このモデルでは、システム・ハイパーバイザ2496がグラフィックス加速モジュール2446を所有しており、その機能をすべてのオペレーティング・システム2495にとって利用可能にする。システム・ハイパーバイザ2496による仮想化をグラフィックス加速モジュール2446がサポートするために、グラフィックス加速モジュール2446は、以下のことに準拠してもよい:1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はない)、又はグラフィックス加速モジュール2446が、コンテキストの保存及び復元の機構を提供しなくてはならない。2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール2446によって保証され、又はグラフィックス加速モジュール2446が、ジョブの処理をプリエンプションする機能を提供する。3)グラフィックス加速モジュール2446は、指定の共有プログラミング・モデルで動作しているとき、プロセス間の公平性を保証しなくてはならない。
少なくとも一実施例では、アプリケーション2480は、グラフィックス加速モジュール2446タイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタを伴って、オペレーティング・システム2495にシステム・コールさせる必要がある。少なくとも一実施例では、グラフィックス加速モジュール2446タイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュール2446タイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール2446のために特にフォーマット化されており、グラフィックス加速モジュール2446コマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール2446によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。一実施例では、AMR値は、現在のプロセスに使用するAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。アクセラレータ統合回路2436及びグラフィックス加速モジュール2446の実装形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。ハイパーバイザ2496は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素2483に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール2446がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間2482内のエリアの実効アドレスを収容するレジスタ2445のうちの1つである。ジョブ間で、又はジョブがプリエンプションされるときに、保存する必要のある状態が存在しない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
システム・コールを受け取ると、オペレーティング・システム2495は、アプリケーション2480が登録済みであり、グラフィックス加速モジュール2446を使用する権限が与えられていることを確認してもよい。次いで、オペレーティング・システム2495は、表3に示す情報を伴ってハイパーバイザ2496にコールする。
ハイパーバイザ・コールを受け取ると、ハイパーバイザ2496は、オペレーティング・システム2495が登録済みであり、グラフィックス加速モジュール2446を使用する権限が与えられていることを確認する。次いでハイパーバイザ2496は、プロセス要素2483を、対応するグラフィックス加速モジュール2446タイプのプロセス要素リンク・リストに入れる。プロセス要素は、表4に示す情報を含んでもよい。
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス2490のレジスタ2445を初期化する。
図24Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ2401~2402及びGPUメモリ2420~2423にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス可能である統合メモリが使用されて。この実施例では、GPU2410~2413で実行される動作は、プロセッサ・メモリ2401~2402にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラミングが簡単になる。一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ2401に配分され、第2の部分は第2のプロセッサ・メモリ2402に配分され、第3の部分はGPUメモリ2420に配分されるなどのように続く。少なくとも一実施例では、仮想/実効メモリ空間(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ2401~2402及びGPUメモリ2420~2423のそれぞれに渡って分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
一実施例では、MMU2439A~2439Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路2494A~2494Eは、1つ又は複数のホスト・プロセッサ(たとえば、2405)とGPU2410~2413のキャッシュ間でキャッシュ・コヒーレンスを確保し、バイアス技法を実装して、ある一定のタイプのデータが記憶されるべき物理メモリを示す。バイアス/コヒーレンス管理回路2494A~2494Eの複数のインスタンスが図24Fに示されるが、バイアス/コヒーレンス回路は、1つ若しくは複数の実施のホスト・プロセッサ2405のMMU内に実装されてもよく、且つ/又はアクセラレータ統合回路2436内に実装されてもよい。
一実施例は、GPU付きメモリ2420~2423をシステム・メモリの一部として実装できるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPU付きメモリ2420~2423が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ2405ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、簡単なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPU付きメモリ2420~2423にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU2410~2413が見る有効な書込み帯域を大幅に低減することある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決定される。たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(すなわち、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU2410~2413にある状態又はない状態で、1つ又は複数のGPU付きメモリ2410~2413の奪われたメモリ範囲(stolen memory range)において実装されてもよい。或いは、バイアス・テーブル全体が、GPU内に維持されてもよい。
少なくとも一実施例では、GPU付きメモリ2420~2423への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。第1に、GPUバイアス内での自らのページを見いだすGPU2410~2413からのローカル要求が、対応するGPUメモリ2420~2423に直接転送される。ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ2405に転送される。一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ2405からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU2410~2413に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア補助付きソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUに指示する。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ2405のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ2405によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。これらのページにアクセスするために、プロセッサ2405は、GPU2410からのアクセスを要求してもよく、GPU2410は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。したがって、プロセッサ2405とGPU2410との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ2405によっては要求されないものにすること、又はその逆にすることが有益である。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図25は、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図25は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路2500を示すブロック図である。少なくとも一実施例では、集積回路2500は、1つ又は複数のアプリケーション・プロセッサ2505(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ2510を含み、さらに、画像プロセッサ2515及び/又はビデオ・プロセッサ2520を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路2500は、USBコントローラ2525、UARTコントローラ2530、SPI/SDIOコントローラ2535、及びI2S/I2Cコントローラ2540を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路2500は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI(登録商標))コントローラ2550及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース2555のうちの1つ又は複数に結合されるディスプレイ・デバイス2545を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム2560によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ2565を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン2570を含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路2500において使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図26A~図26Bは、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図26A~図26Bは、本明細書に記載の実施例によるSoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図26Aは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ2610を示す。図26Bは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ2640を示す。少なくとも一実施例では、図26Aのグラフィックス・プロセッサ2610は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図26Bのグラフィックス・プロセッサ2640は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ2610、2640のそれぞれは、図25のグラフィックス・プロセッサ2510の変形形態とすることができる。
少なくとも一実施例では、グラフィックス・プロセッサ2610は、頂点プロセッサ2605と、1つ又は複数のフラグメント・プロセッサ2615A~2615N(たとえば、2615A、2615B、2615C、2615D~2615N-1、及び2615N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ2610は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ2605は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ2615A~2615Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ2605は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ2615A~2615Nは、頂点プロセッサ2605によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ2615A~2615Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
少なくとも一実施例では、グラフィックス・プロセッサ2610はさらに、1つ又は複数のメモリ管理ユニット(MMU)2620A~2620B、キャッシュ2625A~2625B、及び回路相互接続2630A~2630Bを含む。少なくとも一実施例では、1つ又は複数のMMU2620A~2620Bは、頂点プロセッサ2605及び/又はフラグメント・プロセッサ2615A~2615Nを含め、グラフィックス・プロセッサ2610のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ2625A~2625Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU2620A~2620Bは、図25の1つ若しくは複数のアプリケーション・プロセッサ2505、画像プロセッサ2515、及び/又はビデオ・プロセッサ2520に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ2505~2520は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続2630A~2630Bは、グラフィックス・プロセッサ2610が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
少なくとも一実施例では、グラフィックス・プロセッサ2640は、図26Aのグラフィックス・プロセッサ2610の1つ又は複数のMMU2620A~2620B、キャッシュ2625A~2625B、及び回路相互接続2630A~2630Bを含む。少なくとも一実施例では、グラフィックス・プロセッサ2640は、1つ又は複数のシェーダ・コア2655A~2655N(たとえば、2655A、2655B、2655C、2655D、2655E、2655F~2655N-1、及び2655N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ2640は、1つ又は複数のシェーダ・コア2655A~2655Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ2645と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット2658とを含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路26A及び/又は26Bにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図27A~図27Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図27Aは、少なくとも一実施例では図25のグラフィックス・プロセッサ2510に含めることができるグラフィックス・コア2700を示し、少なくとも一実施例では図26Bのように、統合されたシェーダ・コア2655A~2655Nであってもよい。図27Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット2730を示す。
少なくとも一実施例では、グラフィックス・コア2700は、共有命令キャッシュ2702、テクスチャ・ユニット2718、及びキャッシュ/共有メモリ2720を含み、これらは、グラフィックス・コア2700内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア2700は、コアごとに複数のスライス2701A~2701N、又はパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア2700の複数のインスタンスを含むことができる。スライス2701A~2701Nは、論理命令キャッシュ2704A~2704N、スレッド・スケジューラ2706A~2706N、スレッド・ディスパッチャ2708A~2708N、及びレジスタのセット2710A~2710Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス2701A~2701Nは、追加機能ユニット(AFU2712A~2712N)、浮動小数点ユニット(FPU2714A~2714N)、整数算術論理演算ユニット(ALU2716~2716N)、アドレス計算ユニット(ACL2713A~2713N)、倍精度浮動小数点ユニット(DPFPU2715A~2715N)、及び行列処理ユニット(MPU2717A~2717N)のセットを含むことができる。
少なくとも一実施例では、FPU2714A~2714Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU2715A~2715Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU2716A~2716Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2717A~2717Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2717A~2717Nは、汎用行列-行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU2712A~2712Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点又は整数の単位にサポートされていない追加の論理演算を実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア2700において使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図27Bは、汎用処理ユニット(GPGPU2730)を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列のコンピュート動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU2730は、GPGPU2730の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU2730は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース2732を含む。少なくとも一実施例では、ホスト・インターフェース2732は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インタージェース2732は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU2730は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ2734を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ2736A~2736Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ2736A~2736Hは、キャッシュ・メモリ2738を共有する。少なくとも一実施例では、キャッシュ・メモリ2738は、コンピュート・クラスタ2736A~2736H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
少なくとも一実施例では、GPGPU2730は、メモリ・コントローラ2742A~2742Bのセットを介して、コンピュート・クラスタ2736A~2736Hに結合されたメモリ2744A~2744Bを含む。少なくとも一実施例では、メモリ2744A~2744Bは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
少なくとも一実施例では、コンピュート・クラスタ2736A~2736Hはそれぞれ、図27Aのグラフィックス・コア2700などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ2736A~2736Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
少なくとも一実施例では、GPGPU2730の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ2736A~2736Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU2730の複数のインスタンスは、ホスト・インターフェース2732を介して通信する。少なくとも一実施例では、GPGPU2730は、I/Oハブ2739を含み、このハブは、GPGPU2730の他のインスタンスへの直接接続を可能にするGPUリンク2740に、GPGPU2730を結合する。少なくとも一実施例では、GPUリンク2740は、GPGPU2730の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク2740は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU2730の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース2732を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク2740は、ホスト・インターフェース2732に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
少なくとも一実施例では、GPGPU2730は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU2730は、推論プラットフォーム内で使用することができる。GPGPU2730が推論のために使用される少なくとも一実施例では、GPGPUは、GPGPUがニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ2736A~2736Hを含んでもよい。少なくとも一実施例では、メモリ2744A~2744Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU2730の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU2730おいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図28は、少なくとも一実施例によるコンピューティング・システム2800を示すブロック図である。少なくとも一実施例では、コンピューティング・システム2800は、メモリ・ハブ2805を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ2802とシステム・メモリ2804とを有する処理サブシステム2801を含む。少なくとも一実施例では、メモリ・ハブ2805は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ2802内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ2805は、通信リンク2806を介してI/Oサブシステム2811に結合される。少なくとも一実施例では、I/Oサブシステム2811は、コンピューティング・システム2800が1つ又は複数の入力デバイス2808からの入力を受け取れるようにすることができるI/Oハブ2807を含む。少なくとも一実施例では、I/Oハブ2807は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ2802に含まれて、1つ又は複数のディスプレイ・デバイス2810Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ2807に結合された1つ又は複数のディスプレイ・デバイス2810Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
少なくとも一実施例では、処理サブシステム2801は、バス又は他の通信リンク2813を介してメモリ・ハブ2805に結合された1つ又は複数の並列プロセッサ2812を含む。少なくとも一実施例では、通信リンク2813は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つであってもよく、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ2812は、メニー・インテグレーテッド・コア(MIC)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2812は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ2807を介して結合された1つ又は複数のディスプレイ・デバイス2810Aに、ピクセルを出力することができる。で少なくとも一実施例では、1つ又は複数の並列プロセッサ2812はまた、1つ又は複数のディスプレイ・デバイス2810Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
少なくとも一実施例では、システム・ストレージ・ユニット2814は、I/Oハブ2807に接続されて、コンピューティング・システム2800のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ2816を使用して、I/Oハブ2807と、プラットフォームに一体化されてもよいネットワーク・アダプタ2818及び/又はワイヤレス・ネットワーク・アダプタ2819などの他の構成要素、並びに1つ又は複数のアドイン・デバイス2820を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ2818は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ2819は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
少なくとも一実施例では、コンピューティング・システム2800は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ2807に接続されてもよい。少なくとも一実施例では、図28の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース、又は他の相互接続プロトコルを使用して、実装されてもよい。
少なくとも一実施例では、1つ又は複数の並列プロセッサ2812は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2812は、汎用処理に最適化された回路を組み込んでいる。少なくとも一実施例では、コンピューティング・システム2800の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、1つ又は複数の並列プロセッサ2812、メモリ・ハブ2805、プロセッサ2802、及びI/Oハブ2807を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム2800の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム2800の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図2800のシステムにおいて使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
プロセッサ
図29Aは、少なくとも一実施例による並列プロセッサ2900を示す。少なくとも一実施例では、並列プロセッサ2900の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2900は、例示的な実施例による図28に示す1つ又は複数の並列プロセッサ2812の変形形態である。
少なくとも一実施例では、並列プロセッサ2900は並列処理ユニット2902を含む。少なくとも一実施例では、並列処理ユニット2902は、並列処理ユニット2902の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2904を含む。少なくとも一実施例では、I/Oユニット2904は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2904は、メモリ・ハブ2805などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ2805とI/Oユニット2904との間の接続は、通信リンク2813を形成する。少なくとも一実施例では、I/Oユニット2904は、ホスト・インターフェース2906及びメモリ・クロスバー2916に接続され、ここでホスト・インターフェース2906は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2916は、メモリ動作の実行を対象とするコマンドを受け取る。
少なくとも一実施例では、ホスト・インターフェース2906が、I/Oユニット2904を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2906は、これらのコマンドを実行するためのワーク動作をフロント・エンド2908に向けることができる。少なくとも一実施例では、フロント・エンド2908はスケジューラ2910に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2912に分配するように構成される。少なくとも一実施例では、スケジューラ2910は、処理クラスタ・アレイ2912にタスクが分配される前に、処理クラスタ・アレイ2912が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2910は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ2910は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2912で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ2912でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2910を含むマイクロコントローラ内のスケジューラ2910論理によって、ワークロードを自動的に処理アレイ2912全体に分配することができる。
少なくとも一実施例では、処理クラスタ・アレイ2912は、最大「N個」の処理クラスタ(たとえば、クラスタ2914A、クラスタ2914B~クラスタ2914N)を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2912の各クラスタ2914A~2914Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2910は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2912のクラスタ2914A~2914Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2910によって動的に対処されてもよく、又は処理クラスタ・アレイ2912によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2912の異なるクラスタ2914A~2914Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
少なくとも一実施例では、処理クラスタ・アレイ2912は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2912は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2912は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
少なくとも一実施例では、処理クラスタ・アレイ2912は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2912は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2912は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2902は、処理できるようにデータをシステム・メモリからI/Oユニット2904を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2922)に記憶し、次いでシステム・メモリに書き戻すことができる。
少なくとも一実施例では、並列処理ユニット2902を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2912の複数のクラスタ2914A~2914Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2910を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2912の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2914A~2914Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ2914A~2914Nの間で中間データを送信できるようにしてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2912は、実行される処理タスクをスケジューラ2910を介して受け取ることができ、スケジューラ2910は、処理タスクを定義するコマンドをフロント・エンド2908から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2910は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2908からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2908は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2912が有効な状態に構成されていることを保証するように構成されることが可能である。
少なくとも一実施例では、並列処理ユニット2902の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2922と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2922には、メモリ・クロスバー2916を介してアクセスすることができ、メモリ・クロスバー2916は、処理クラスタ・アレイ2912並びにI/Oユニット2904からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2916は、メモリ・インターフェース2918を介して並列プロセッサ・メモリ2922にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2918は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2920A、パーティション・ユニット2920B~パーティション・ユニット2920N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2922の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2920A~2920Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2920Aは、対応する第1のメモリ・ユニット2924Aを有し、第2のパーティション・ユニット2920Bは、対応するメモリ・ユニット2924Bを有し、N番目のパーティション・ユニット2920Nは、対応するN番目のメモリ・ユニット2924Nを有する。少なくとも一実施例では、パーティション・ユニット2920A~2920Nの数は、メモリ・デバイスの数に等しくなくてもよい。
少なくとも一実施例では、メモリ・ユニット2924A~2924Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2924A~2924Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2922の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2924A~2924Nにわたって記憶されて、パーティション・ユニット2920A~2920Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2922のローカル・インスタンスは除外されてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2912のクラスタ2914A~2914Nのうちのいずれか1つは、並列プロセッサ・メモリ2922内のメモリ・ユニット2924A~2924Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2916は、各クラスタ2914A~2914Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2920A~2920N、又は別のクラスタ2914A~2914Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2914A~2914Nは、メモリ・クロスバー2916を通ってメモリ・インターフェース2918と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2916は、I/Oユニット2904と通信するためのメモリ・インターフェース2918への接続部、並びに並列プロセッサ・メモリ2922のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2914A~2914N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2902のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2916は、仮想チャネルを使用して、クラスタ2914A~2914Nと、パーティション・ユニット2920A~2920Nとの間でトラフィック・ストリームを分離することができる。
少なくとも一実施例では、並列処理ユニット2902の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2902の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2902のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2902又は並列プロセッサ2900のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
図29Bは、少なくとも一実施例によるパーティション・ユニット2920のブロック図である。少なくとも一実施例では、パーティション・ユニット2920は、図29Aのパーティション・ユニット2920A~2920Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2920は、L2キャッシュ2921、フレーム・バッファ・インターフェース2925、及びラスタ演算ユニット(「ROP」)2926を含む。L2キャッシュ2921は、メモリ・クロスバー2916及びROP2926から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ2921によってフレーム・バッファ・インターフェース2925に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース2925を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース2925は、図29の(たとえば並列プロセッサ・メモリ2922内の)メモリ・ユニット2924A~2924Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
少なくとも一実施例では、ROP2926は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2926は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2926は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。ROP2926によって実行される圧縮論理は、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
少なくとも一実施例では、ROP2926は、パーティション・ユニット2920内ではなく、各処理クラスタ内(たとえば、図29Aのクラスタ2914A~2914N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2916を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図28の1つ又は複数のディスプレイ・デバイス2810のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ2802によってさらに処理できるようにルーティングされてもよく、又は図29Aの並列プロセッサ2900内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
図29Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2914のブロック図である。少なくとも一実施例では、処理クラスタは、図29Aの処理クラスタ2914A~2914Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2914のより多くのうちの1つは、多数のスレッドを並列で実行するように構成されてもよく、ここで「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT)の技法が使用される。
少なくとも一実施例では、処理クラスタ2914の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2932を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2932は、図29Aのスケジューラ2910から命令を受け取り、グラフィックス・マルチプロセッサ2934及び/又はテクスチャ・ユニット2936を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2914内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934の1つ又は複数のインスタンスは、処理クラスタ2914内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2940が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2932は、データ・クロスバー2940をビスして分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
少なくとも一実施例では、処理クラスタ2914内の各グラフィックス・マルチプロセッサ2934は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
少なくとも一実施例では、処理クラスタ2914に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2934内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2934内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、1つ又は複数の処理エンジンは、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2934内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2934内の処理エンジンより多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2934上で同時に実行することができる。
少なくとも一実施例では、グラフィックス・マルチプロセッサ2934は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934は、内部キャッシュをやめて、処理クラスタ2914内のキャッシュ・メモリ(たとえば、L1キャッシュ2948)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2934は、パーティション・ユニット(たとえば、図29Aのパーティション・ユニット2920A~2920N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2914間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2902の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2914は、グラフィックス・マルチプロセッサ2934の複数のインスタンスを含み、共通の命令及びデータを共有することができ、これらはL1キャッシュ2948に記憶されてもよい。
少なくとも一実施例では、各処理クラスタ2914は、仮想アドレスを物理アドレスにマッピングするように構成されたメモリ管理ユニット(「MMU」)2945を含んでもよい。少なくとも一実施例では、MMU2945の1つ又は複数のインスタンスは、図29Aのメモリ・インターフェース2918内にあってもよい。少なくとも一実施例では、MMU2945は、仮想アドレスを、タイル及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2945は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2934若しくはL1キャッシュ、又は処理クラスタ2914内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2934がテクスチャ・ユニット2936に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2914が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2934内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2934は、処理済みタスクをデータ・クロスバー2940に出力して、さらなる処理ができるように別の処理クラスタ2914に処理済みタスクを提供し、又はメモリ・クロスバー2916を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2942(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2934からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図29Aのパーティション・ユニット2920A~2920N)内に位置付けられてもよい。少なくとも一実施例では、プレROP2942ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ2914において使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図29Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2934を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934は、処理クラスタ2914のパイプライン・マネージャ2932と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934は、命令キャッシュ2952、命令ユニット2954、アドレス・マッピング・ユニット2956、レジスタ・ファイル2958、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2962、及び1つ又は複数のロード/ストア・ユニット2966を含むがこれらに限定されない実行パイプラインを有する。GPGPUコア2962、及びロード/ストア・ユニット2966は、メモリ及びキャッシュ相互接続2968を介して、キャッシュ・メモリ2972及び共有メモリ2970に結合される。
少なくとも一実施例では、命令キャッシュ2952は、実行すべき命令のストリームをパイプライン・マネージャ2932から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2952にキャッシュされ、命令ユニット2954により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット2954は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、各スレッド・グループは、GPGPUコア2962内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2956を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2966がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
少なくとも一実施例では、レジスタ・ファイル2958は、グラフィックス・マルチプロセッサ2934の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2958は、グラフィックス・マルチプロセッサ2934の機能ユニット(たとえばGPGPUコア2962、ロード/ストア・ユニット2966)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2958は、レジスタ・ファイル2958の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル2958は、グラフィックス・マルチプロセッサ2934によって実行されている異なるワープ間で分割される。
少なくとも一実施例では、GPGPUコア2962はそれぞれ、グラフィックス・マルチプロセッサ2934の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。GPGPUコア2962同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2962の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、浮動小数点演算のためにIEEE754-2008規格を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2934はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコアの1つ又は複数は、固定の又は特別な機能論理も含むことができる。
少なくとも一実施例では、GPGPUコア2962は、複数のデータ・セットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2962は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
少なくとも一実施例では、メモリ及びキャッシュ相互接続2968は、グラフィックス・マルチプロセッサ2934の各機能ユニットをレジスタ・ファイル2958及び共有メモリ2970に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2968は、ロード/ストア・ユニット2966が、共有メモリ2970とレジスタ・ファイル2958の間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2958は、GPGPUコア2962と同じ周波数で動作することができ、したがって、GPGPUコア2962とレジスタ・ファイル2958の間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ2970を使用して、グラフィックス・マルチプロセッサ2934内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2972を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2936の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2970は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2962で実行されているスレッドは、キャッシュ・メモリ2972内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアと同じパッケージ又はチップに一体化されてもよく、内部(すなわち、パッケージ又はチップの内部の)プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ2934において使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図30は、少なくとも一実施例による、マルチGPUコンピューティング・システム11900を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム11900は、ホスト・インターフェース・スイッチ11904を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)11906A~Dに結合されたプロセッサ11902を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ11904は、プロセッサ11902をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ11902は、GPGPU11906A~Dと通信することができる。GPGPU11906A~Dは、高速ポイントツーポイントGPUツーGPUリンク11916のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク11916は、専用GPUリンクを介して、GPGPU11906A~Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク11916は、プロセッサ11902が接続されているホスト・インターフェース・バス11904を介した通信を必要とせずに、GPGPU11906A~Dのそれぞれの間で直接接続を可能にする。少なくとも一実施例では、P2PのGPUリンク11916に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス11904は、システム・メモリがアクセスできるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム11900の他のインスタンスと通信するために、利用可能なままである。少なくとも一実施例では、GPGPU11906A~Dは、ホスト・インターフェース・スイッチ11904を介してプロセッサ11902に接続され、少なくとも一実施例では、プロセッサ11902は、P2PのGPUリンク11916のための直接サポートを含み、GPGPU11906A~Dに直接接続することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム11900において使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図31は、少なくとも一実施例によるグラフィックス・プロセッサ3100のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ3100は、リング相互接続3102、パイプライン・フロント・エンド3104、メディア・エンジン3137、及びグラフィックス・コア3180A~3180Nを含む。少なくとも一実施例では、リング相互接続3102は、グラフィックス・プロセッサ3100を、他のグラフィックス・プロセッサ又は1つ若しくは複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ3100は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
少なくとも一実施例では、グラフィックス・プロセッサ3100は、リング相互接続3102を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド3104のコマンド・ストリーマ3103によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ3100は、グラフィックス・コア3180A~3180Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ3103はコマンドをジオメトリ・パイプライン3136に供給する。少なくとも一実施例では、少なくともいくつかのメディア処理コマンドについては、コマンド・ストリーマ3103はコマンドを、メディア・エンジン3137に結合されるビデオ・フロント・エンド3134に供給する。少なくとも一実施例では、メディア・エンジン3137は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)3130と、マルチ・フォーマットエンコード/デコード(MFX)3133エンジンを含んで、ハードウェア加速されたメディア・データのエンコード及びデコードを提供する。少なくとも一実施例では、ジオメトリ・パイプライン3136及びメディア・エンジン3137はそれぞれ、少なくとも1つのグラフィックス・コア3180Aによって提供されるスレッド実行リソースのための実行スレッドを生成する。
少なくとも一実施例では、グラフィックス・プロセッサ3100は、複数のサブ・コア3150A~3150N、3160A~3160N(コア・サブ・スライスと呼ばれることもある)をそれぞれが有するモジュール式コア3180A~3180N(コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含む。少なくとも一実施例では、グラフィックス・プロセッサ3100は、任意の数のグラフィックス・コア3180A~3180Nを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ3100は、少なくとも第1のサブ・コア3150A及び第2のサブ・コア3160Aを有するグラフィックス・コア3180Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ3100は、単一のサブ・コア(たとえば、3150A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ3100は、第1のサブ・コア3150A~3150Nのセット、及び第2のサブ・コア3160A~3160Nのセットをそれぞれが含む複数のグラフィックス・コア3180A~3180Nを含む。少なくとも一実施例では、第1のサブ・コア3150A~3150Nの各サブ・コアは、少なくとも、実行ユニット3152A~3152Nの第1のセット、及びメディア/テクスチャ・サンプラ3154A~3154Nを含む。少なくとも一実施例では、第2のサブ・コア3160A~3160Nの各サブ・コアは、少なくとも、実行ユニット3162A~3162Nの第2のセット、及びサンプラ3164A~3164Nを含む。少なくとも一実施例では、各サブ・コア3150A~3150N、3160A~3160Nは、共有リソース3170A~3170Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ3100において使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図32は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ3200のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ3200は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ3200は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMXTMレジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ3200は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
少なくとも一実施例では、プロセッサ3200は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド(「フロント・エンド」)3201を含む。少なくとも一実施例では、フロント・エンド3201は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ3226が、メモリから命令をフェッチし、命令デコーダ3228に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ3228は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ3228は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ3230は、デコードされたuopsを、実行できるようにuopキュー3234においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ3230が複雑な命令に遭遇すると、マイクロコードROM3232が、動作の完了に必要なuopsを提供する。
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが必要な場合、命令デコーダ3228は、マイクロコードROM3232にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ3228において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM3232に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ3230は、少なくとも一実施例によるマイクロコードROM3232からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM3232が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド3201は、トレース・キャッシュ3230からマイクロ・オプスのフェッチを再開してもよい。
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)3203は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。少なくとも一実施例では、アウト・オブ・オーダー実行エンジン3203は、限定することなく、アロケータ/レジスタ・リネーマ3240、メモリuopキュー3242、整数/浮動小数点uopキュー3244、メモリ・スケジューラ3246、高速スケジューラ3202、低速/汎用浮動小数点スケジューラ(「低速/汎用FPスケジューラ」)3204、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)3206を含む。少なくとも一実施例では、高速スケジューラ3202、低速/汎用浮動小数点スケジューラ3204、及び単純浮動小数点スケジューラ3206は、本明細書において集合的に「uopスケジューラ3202、3204、3206」とも呼ばれる。少なくとも一実施例では、アロケータ/レジスタ・リネーマ3240は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ3240は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ3240はまた、メモリ・スケジューラ3246及びuopスケジューラ3202、3204、3206の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー3242と非メモリ動作のための整数/浮動小数点uopキュー3244のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ3202、3204、3206は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、少なくとも一実施例の高速スケジューラ3202は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ3204及び単純浮動小数点スケジューラ3206は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ3202、3204、3206は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
少なくとも一実施例では、実行ブロック3211は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク3208、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)3210、アドレス生成ユニット(「AGU」)3212及び3214、高速算術論理演算ユニット(ALU)(「高速ALU」)3216及び3218、低速算術論理演算ユニット(「低速ALU」)3220、浮動小数点ALU(「FP」)3222、並びに浮動小数点移動ユニット(「FP移動」)3224を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク3208及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク3210は、本明細書において「レジスタ・ファイル3208、3210」とも呼ばれる。少なくとも一実施例では、AGU3212及び3214、高速ALU3216及び3218、低速ALU3220、浮動小数点ALU3222、及び浮動小数点移動ユニット3224は、本明細書において「実行ユニット3212、3214、3216、3218、3220、3222、及び3224」とも呼ばれる。少なくとも一実施例では、実行ブロックb11は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
少なくとも一実施例では、レジスタ・ファイル3208、3210は、uopスケジューラ3202、3204、3206と、実行ユニット3212、3214、3216、3218、3220、3222、及び3224との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク3208は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク3210は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ファイル3208、3210のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ファイル3208、3210は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク3208は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク3210は、限定することなく、128ビット幅のエントリを含んでもよい。
少なくとも一実施例では、実行ユニット3212、3214、3216、3218、3220、3222、3224は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ファイル3208、3210は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ3200は、限定することなく、任意の数及び組合せの実行ユニット3212、3214、3216、3218、3220、3222、3224を含んでよい。少なくとも一実施例では、浮動小数点ALU3222及び浮動小数点移動ユニット3224は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU3222は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU3216、3218に渡されてもよい。少なくとも一実施例では、高速ALU3216、3218は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU3220は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALUに進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS3212、3214によって実行されてもよい。少なくとも一実施例では、高速ALU3216、高速ALU3218、及び低速ALU3220は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU3216、高速ALU3218、及び低速ALU3220は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU3222及び浮動小数点移動ユニット3224は、様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU3222及び浮動小数点移動ユニット3224は、SIMD及びマルチメディア命令と併せて128ビット幅のパック・データ・オペランドで動作してもよい。
少なくとも一実施例では、uopスケジューラ3202、3204、3206は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ3200において投機的にスケジューリング及び実行されてもよいので、プロセッサ3200は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
少なくとも一実施例では、用語「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715の一部又はすべてが、実行ブロック3211、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、実行ブロック3211に示すALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行ブロック3211のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図33は、少なくとも一実施例による深層学習アプリケーション・プロセッサ3300を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3300は、深層学習アプリケーション・プロセッサ3300によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ3300に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3300は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ3300は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3300は、限定することなく、処理クラスタ3310(1)~3310(12)、チップ間リンク(「ICL」)3320(1)~3320(12)、チップ間コントローラ(「ICC」)3330(1)~3330(2)、メモリ・コントローラ(「Mem Ctrlrs」)3342(1)~3342(4)、高帯域幅メモリ物理層(「HBM PHY」)3344(1)~3344(4)、管理-コントローラ中央処理装置(「管理-コントローラCPU」)3350、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、I2C、GPIO」)、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)3370、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCIエクスプレスx16」)3380を含む。
少なくとも一実施例では、処理クラスタ3310は、本明細書に記載の技法を含む1つ又は複数の訓練技法計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ3310は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3300は、任意の数及びタイプの処理クラスタ3300を含んでもよい。少なくとも一実施例では、チップ間リンク3320は、双方向性である。少なくとも一実施例では、チップ間リンク3320及びチップ間コントローラ3330は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ3300が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3300は、(ゼロを含む)任意の数及びタイプのICL3320及びICC3330を含んでもよい。
少なくとも一実施例では、HBM2 3340は、合計32ギガバイト(GB)のメモリを提供する。HBM2 3340(i)は、メモリ・コントローラ3342(i)とHBM PHY3344(i)の両方に関連付けられる。少なくとも一実施例では、任意の数のHBM2 3340が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ3342及びHBM PHY3344に関連付けられてもよい。少なくとも一実施例では、SPI、I2C、GPIO3360、PCIeコントローラ及びDMA3370、並びに/又はPCIe3380は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3300は、深層学習アプリケーション・プロセッサ3300に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3300は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ3300によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ3300は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図34は、少なくとも一実施例による、ニューロモーフィック・プロセッサ3400のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ3400は、ニューロモーフィック・プロセッサ3400の外部のソースから1つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ3400内の1つ又は複数のニューロン3402に送信されてもよい。少なくとも一実施例では、ニューロン3402及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ3400は、限定することなく、ニューロン3402の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン3402が使用されてもよい。少なくとも一実施例では、ニューロン3402の各インスタンスは、ニューロン入力3404及びニューロン出力3406を含んでもよい。少なくとも一実施例では、ニューロン3402は出力を生成してもよく、この出力は、ニューロンの他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力3404及びニューロン出力3406は、シナプス3408を介して相互接続されてもよい。
少なくとも一実施例では、ニューロン3402とシナプス3408は、ニューロモーフィック・プロセッサ3400が受信した情報をニューロモーフィック・プロセッサ3400が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン3402は、ニューロン入力3404を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン3402は、ニューロン入力3404において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン3402は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実装されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン3402は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力3404で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力3404において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン3402は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン3402は、ニューロン3404に伝達関数を適用した結果が閾値を超えるとき、ニューロン3406において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン3402は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン3402は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
少なくとも一実施例では、ニューロン3402は、シナプス3408を通して相互接続されてもよい。少なくとも一実施例では、シナプス3408は、第1のニューロン3402の出力から第2のニューロン3402の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン3402は、シナプス3408の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力3406の1つ又は複数のインスタンスは、シナプス3408のインスタンスを介して、同じニューロン3402のニューロン入力3404のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス3408のインスタンスを介して送信されることになる出力を生成するニューロン3402のインスタンスは、シナプス3408のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス3408のインスタンスを介して送信されることになる入力を受信するニューロン3402のインスタンスは、シナプス3408のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン3402のインスタンスは、シナプス3408の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス3408の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン3402の単一のインスタンスは、したがって、シナプス3408の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
少なくとも一実施例では、ニューロン3402は、1つ又は複数の層に組織化されてもよい。ニューロン3402の各インスタンスは、1つ又は複数のシナプス3408を通って1つ又は複数のニューロン入力3404にファン・アウトすることができる1つのニューロン出力3406を有してもよい。少なくとも一実施例では、第1の層3410のニューロン3402のニューロン出力3406は、第2の層3412のニューロン3402のニューロン入力3404に接続されてもよい。少なくとも一実施例では、層3410は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第1の層3410のインスタンスにおけるニューロン3402の各インスタンスは、第2の層3412におけるニューロン3402の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層3410は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層3412のインスタンスにおけるニューロン3402の各インスタンスは、第3の層3414におけるニューロン3402の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層3412は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層3412のニューロン3402は、(同じ)第2の層3412におけるニューロン3402を含め、複数の他の層のニューロン3402にファン・アウトしてもよい。少なくとも一実施例では、第2の層3412は、「回帰層」と呼ばれてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ3400は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
少なくとも一実施例では、ニューロモーフィック・プロセッサ3400は、シナプス3408をニューロン3402に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ3400は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン3402に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス3408は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン3402に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実装されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図35は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム3500は、1つ又は複数のプロセッサ3502、及び1つ又は複数のグラフィックス・プロセッサ3508を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ3502若しくはプロセッサ・コア3507を有するサーバ・システムであってもよい。少なくとも一実施例では、システム3500は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
少なくとも一実施例では、システム3500は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム3500は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム3500はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム3500は、1つ若しくは複数のプロセッサ3502と、1つ若しくは複数のグラフィックス・プロセッサ3508によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
少なくとも一実施例では、1つ又は複数のプロセッサ3502はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア3507を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア3507のそれぞれは、特定の命令セット3509を処理するように構成される。少なくとも一実施例では、命令セット3509は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア3507はそれぞれ、異なる命令セット3509を処理してもよく、この命令セットは、他の命令ユニットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア3507はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
少なくとも一実施例では、プロセッサ3502はキャッシュ・メモリ3504を含む。少なくとも一実施例では、プロセッサ3502は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ3502の様々な構成要素間で共有されてもよい。少なくとも一実施例では、プロセッサ3502はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア3507間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル3506がプロセッサ3502に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル3506は、汎用レジスタ又は他のレジスタを含んでもよい。
少なくとも一実施例では、1つ又は複数のプロセッサ3502は、1つ又は複数のインターフェース・バス3510に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ3502とシステム3500内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス3510は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース3510は、DMIバスに限定されず、1つ若しくは複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ3502は、統合メモリ・コントローラ3516、及びプラットフォーム・コントローラ・ハブ3530を含む。少なくとも一実施例では、メモリ・コントローラ3516は、メモリ・デバイスとシステム3500の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)3530は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
少なくとも一実施例では、メモリ・デバイス3520は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス3520は、システム3500のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ3502がアプリケーション若しくはプロセスを実行するときに使用するためのデータ3522及び命令3521を記憶することができる。少なくとも一実施例では、メモリ・コントローラ3516はまた、任意選択の外部グラフィックス・プロセッサ3512と結合しており、このグラフィックス・プロセッサは、プロセッサ3502内の1つ又は複数のグラフィックス・プロセッサ3508と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス3511は、プロセッサ3502に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス3511は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス3511は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭装着型ディスプレイ(HMD)を含むことができる。
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3530は、周辺装置が高速I/Oバスを介してメモリ・デバイス3520及びプロセッサ3502に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ3546、ネットワーク・コントローラ3534、ファームウェア・インターフェース3528、ワイヤレス・トランシーバ3526、タッチ・センサ3525、データ・ストレージ・デバイス3524(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス3524は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ3525は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ3526は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース3528は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ3534は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス3510と結合する。少なくとも一実施例では、オーディオ・コントローラ3546は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム3500は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ3540を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3530は、キーボードとマウス3543の組合せ、カメラ3544、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ3542の接続入力デバイスにも接続することができる。
少なくとも一実施例では、メモリ・コントローラ3516及びプラットフォーム・コントローラ・ハブ3530のインスタンスは、外部グラフィックス・プロセッサ3512などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3530及び/又はメモリ・コントローラ3516は、1つ又は複数のプロセッサ3502の外部にあってもよい。たとえば、少なくとも一実施例では、システム3500は、外部のメモリ・コントローラ3516及びプラットフォーム・コントローラ・ハブ3530を含むことができ、これらは、プロセッサ3502と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715の一部又はすべてが、グラフィックス・プロセッサ3500に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ3512に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図17A又は図17Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3500のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図36は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア3602A~3602N、統合メモリ・コントローラ3614、及び統合グラフィックス・プロセッサ3608を有するプロセッサ3600のブロック図である。少なくとも一実施例では、プロセッサ3600は、破線の四角によって表される追加コア3602Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア3602A~3602Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット3604A~3604Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット3606にアクセスすることができる。
少なくとも一実施例では、内部キャッシュ・ユニット3604A~3604N、及び共有キャッシュ・ユニット3606は、プロセッサ3600内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット3604A~3604Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット3606及び3604A~3604N間でコヒーレンスを維持する。
少なくとも一実施例では、プロセッサ3600はまた、1つ又は複数のバス・コントローラ・ユニット3616とシステム・エージェント・コア3610のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット3616は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア3610は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア3610は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ3614を含む。
少なくとも一実施例では、プロセッサ・コア3602A~3602Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア3610は、マルチスレッドの処理中にコア3602A~3602Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア3610はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア3602A~3602N及びグラフィックス・プロセッサ3608の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
少なくとも一実施例では、プロセッサ3600はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ3608を含む。少なくとも一実施例では、グラフィックス・プロセッサ3608は、共有キャッシュ・ユニット3606と、1つ又は複数の統合メモリ・コントローラ3614を含むシステム・エージェント・コア3610とに結合する。少なくとも一実施例では、システム・エージェント・コア3610はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ3611を含む。少なくとも一実施例では、ディスプレイ・コントローラ3611はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ3608に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ3608内に一体化されていてもよい。
少なくとも一実施例では、プロセッサ3600の内部構成要素を結合するために、リング・ベースの相互接続ユニット3612が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ3608は、I/Oリンク3613を介してリング相互接続3612と結合する。
少なくとも一実施例では、I/Oリンク3613は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール3618との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア3602A~3602Nのそれぞれ及びグラフィックス・プロセッサ3608は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール3618を使用する。
少なくとも一実施例では、プロセッサ・コア3602A~3602Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア3602A~3602Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア3602A~3602Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア3602A~3602Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア3602A~3602Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費の相対的に高い1つ又は複数のコアは、電力消費の低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ3600は、1つ若しくは複数のチップ上に、又はSoC集積回路として実装することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715の一部又はすべてが、プロセッサ3600に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ3512、グラフィックス・コア3602A~3602N、又は図36の他の構成要素に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図17A又は図17Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3600のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図37は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア3700のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア3700は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア3700は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア3700は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア3700は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア3701A~3701Fに結合された固定機能ブロック3730を含むことができる。
少なくとも一実施例では、固定機能ブロック3730は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ3700内のすべてのサブ・コアが共有できるジオメトリ/固定機能パイプライン3736を含む。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3736は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
少なくとも一実施例では、固定機能ブロック3730はまた、グラフィックスSoCインターフェース3737、グラフィックス・マイクロコントローラ3738、及びメディア・パイプライン3739を含む。少なくとも一実施例では、固定のグラフィックスSoCインターフェース3737は、グラフィックス・コア3700と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ3738は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ3700の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン3739は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン3739は、サブ・コア3701~3701F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
少なくとも一実施例では、SoCインターフェース3737は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア3700が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース3737はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア3700とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実装する。少なくとも一実施例では、SoCインターフェース3737はまた、グラフィックス・コア3700の電力管理制御を実装することができ、グラフィックス・コア3700のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース3737は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン3739にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン3736、ジオメトリ及び固定機能パイプライン3714)にディスパッチされることが可能である。
少なくとも一実施例では、グラフィックス・マイクロコントローラ3738は、グラフィックス・コア3700のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ3738は、サブ・コア3701A~3701F内の実行ユニット(EU)アレイ3702A~3702F、3704A~3704F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア3700を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ・ドアベルのうちの1つにワークロードを送出することができ、このドアベルが、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ3738はまた、グラフィックス・コア3700の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア3700内のレジスタを保存及び復元する機能をグラフィックス・コア3700に提供することができる。
少なくとも一実施例では、グラフィックス・コア3700は、図示してあるサブ・コア3701A~3701Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア3700はまた、共有機能論理3710、共有及び/又はキャッシュ・メモリ3712、ジオメトリ/固定機能パイプライン3714、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理3716を含むことができる。少なくとも一実施例では、共有機能論理3710は、グラフィックス・コア3700内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。少なくとも一実施例では、固定の、共有の、及び/又はキャッシュのメモリ3712は、グラフィックス・コア3700内のN個のサブ・コア3710A~3710Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3714は、固定機能ブロック3730内のジオメトリ/固定機能パイプライン3736の代わりに含まれてもよく、同じ又は同様の論理ユニットを含むことができる。
少なくとも一実施例では、グラフィックス・コア3700は、グラフィックス・コア3700が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理3716を含む。少なくとも一実施例では、追加の固定機能論理3716は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ/固定機能パイプライン3716、3736内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理3716内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理3716内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
少なくとも一実施例では、追加の固定機能論理3716はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
少なくとも一実施例では、各グラフィックス・サブ・コア3701A~3701F内に、実行リソースのセットが含まれ、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア3701A~3701Fは、複数のEUアレイ3702A~3702F、3704A~3704F、スレッド・ディスパッチ及びスレッド間通信(TD/IC)論理3703A~3703F、3D(たとえば、テクスチャ)サンプラ3705A~3705F、メディア・サンプラ3706A~3706F、シェーダ・プロセッサ3707A~3707F、及び共有ローカル・メモリ(SLM)3708A~3708Fを含む。EUアレイ3702A~3702F、3704A~3704Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理3703A~3703Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ3705A~3705Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ3706A~3706Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア3701A~3701Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア3701A~3701F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ3708A~3708Fを利用することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715の一部又はすべてが、グラフィックス・プロセッサ3710に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、グラフィックス・プロセッサ3512、グラフィックス・マイクロコントローラ3738、ジオメトリ及び固定機能パイプライン3714及び3736、又は図36の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図17A又は図17Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3700のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図38A~図38Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3800を示す。図38Aは、スレッド実行論理3800が使用される少なくとも一実施例を示す。図38Bは、少なくとも一実施例による、実行ユニットの例示的な内部詳細事項を示す図である。
図38Aに示すように、少なくとも一実施例では、スレッド実行論理3800は、シェーダ・プロセッサ3802、スレッド・ディスパッチャ3804、命令キャッシュ3806、複数の実行ユニット3808A~3808Nを含むスケーラブル実行ユニット・アレイ、サンプラ3810、データ・キャッシュ3812、及びデータ・ポート3814を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット3808A、3808B、3808C、3808D~3808N-1、及び3808Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理3800は、命令キャッシュ3806、データ・ポート3814、サンプラ3810、及び実行ユニット3808A~3808Nのうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、3808A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット3808A~3808Nのアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
少なくとも一実施例では、実行ユニット3808A~3808Nは、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ3802は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ3804を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3804は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット3808A~3808Nの1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3804はまた、実行しているシェーダ・プログラムからのラン・タイム・スレッド・スポーニング要求(spawning request)を処理することができる。
少なくとも一実施例では、実行ユニット3808A~3808Nは、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット3808A~3808Nのそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット3808A~3808N内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
少なくとも一実施例では、実行ユニット3808A~3808Nの各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット3808A~3808Nは、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
少なくとも一実施例では、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通したスレッド制御論理(3807A~3807N)を有する融合実行ユニット(fused execution unit)3809A~3809Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。融合EUグループのEUの数は、様々な実施例に応じて異なってもよい。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット3809A~3809Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット3809Aは、第1のEU3808A、第2のEU3808B、及び第1のEU3808Aと第2のEU3808Bに共通のスレッド制御論理3807Aを含む。少なくとも一実施例では、スレッド制御論理3807Aは、融合グラフィックス実行ユニット3809Aで実行されているスレッドを制御して、融合実行ユニット3809A~3809N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、3806)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理3800に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、3812)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ3810は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ3810は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理3800に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ3802内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ3802内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ3802は、スレッド・ディスパッチャ3804を介してスレッドを実行ユニット(たとえば、3808A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ3802は、サンプラ3810のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように1つ又は複数のピクセルが切り捨てられる。
少なくとも一実施例では、データ・ポート3814は、スレッド実行論理3800のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート3814は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ3812)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
図38Bに示してあるように、少なくとも一実施例では、グラフィック実行ユニット3808は、命令フェッチ・ユニット3837、汎用レジスタ・ファイル・アレイ(GRF)3824、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)3826、スレッド調停装置(arbiter)3822、送信ユニット3830、ブランチ・ユニット3832、SIMD浮動小数点ユニット(FPU)3834のセット、及び少なくとも一実施例では、専用整数SIMD ALU3835のセットを含むことができる。少なくとも一実施例では、GRF3824及びARF3826は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット3808においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF3826において維持され、スレッド実行中に使用されるデータが、GRF3824に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF3826のスレッド専用レジスタに保持することが可能である。
少なくとも一実施例では、グラフィックス実行ユニット3808は、同時マルチスレッディング(SMT)と微細化インターリーブ・マルチスレッディング(IMT)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
少なくとも一実施例では、グラフィックス実行ユニット3808は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド3808のスレッド調停装置3822は、送信ユニット3830、ブランチ・ユニット3842、又はSIMD FPU3834のうちの1つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF3824内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF3824内の4Kバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4Kバイトにアクセスできる少なくとも一実施例では、GRF3824は、合計28Kバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット3830によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、専用のブランチ・ユニット3832にディスパッチされる。
少なくとも一実施例では、グラフィックス実行ユニット3808は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)3834を含む。少なくとも一実施例では、FPU3834は、整数計算もサポートする。少なくとも一実施例ではFPU3834は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、FPUのうちの少なくとも1つは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU3835のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
少なくとも一実施例では、グラフィックス実行ユニット3808の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブ・スライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット3808は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット3808で実行される各スレッドは、異なるチャネルで実行される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、推論及び/又は訓練論理1715の一部又はすべてが、実行論理3800に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図17A又は図17Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理3800のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図39は、少なくとも一実施例による並列処理ユニット(「PPU」)3900を示す。少なくとも一実施例では、PPU3900は、PPU3900によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3900に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3900はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3900によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3900は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3900を利用して、線形代数演算及び機械学習演算などの計算が実行される。図39は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
少なくとも一実施例では、1つ又は複数のPPU3900は、高性能コンピューティング(「HPC」)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3900は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
少なくとも一実施例では、PPU3900は、限定することなく、入力/出力(「I/O」)ユニット3906、フロント・エンド・ユニット3910、スケジューラ・ユニット3912、ワーク分配ユニット3914、ハブ3916、クロスバー(「Xbar」)3920、1つ又は複数の汎用処理クラスタ(「GPC」)3918、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3922を含む。少なくとも一実施例では、PPU3900は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3908を介してホスト・プロセッサ又は他のPPU3900に接続される。少なくとも一実施例では、PPU3900は、相互接続3902を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU3900は、1つ又は複数のメモリ・デバイス(「メモリ」)3904を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス3904は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
少なくとも一実施例では、高速GPU相互接続3908は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU3900を含み、PPU3900とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続3908により、ハブ3916を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図39に明示されていないこともある他の構成要素などのPPU3900の別のユニットに/から送信される。
少なくとも一実施例では、I/Oユニット3906は、システム・バス3902を介してホスト・プロセッサ(図39には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット3906は、システム・バス3902を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット3906は、システム・バス3902を介してPPU3900のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット3906は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実装して、PCIeバスを介して通信できるようにする。少なくとも一実施例では、I/Oユニット3906は、外部デバイスと通信するためのインターフェースを実装する。
少なくとも一実施例では、I/Oユニット3906は、システム・バス3902を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU3900に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット3906は、デコードされたコマンドを、コマンドによって指定されるPPU3900の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット3910に送信され、且つ/又はハブ3916、若しくは(図39には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのPPU3900の他のユニットに送信される。少なくとも一実施例では、I/Oユニット3906はPPU3900の様々な論理ユニット間で、通信をルーティングするように構成される。
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU3900に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU3900の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ポスト・インターフェース・ユニットは、I/Oユニット3906によってシステム・バス3902を介して送信されるメモリ要求を介して、システム・バス3902に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをPPU3900に送信し、それによりフロント・エンド・ユニット3910は、1つ又は複数のコマンド・ストリームを指すポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3900の様々なユニットに転送する。
少なくとも一実施例では、フロント・エンド・ユニット3910は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3918を構成するスケジューラ・ユニット3912に結合される。少なくとも一実施例では、スケジューラ・ユニット3912は、スケジューラ・ユニット3912によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC3918にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット3912は、GPC3918のうちの1つ又は複数において、複数のタスクの実行を管理する。
少なくとも一実施例では、スケジューラ・ユニット3912は、GPC3918で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット3914に結合される。少なくとも一実施例では、ワーク分配ユニット3914は、スケジューラ・ユニット3912から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット3914は、GPC3918のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC3918によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC3918によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備え、それにより、GPC3918のうちの1つがタスクの実行を完了すると、GPC3918のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクのうちの1つが選択され、GPC3918で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC3918上でアイドルである場合には、アクティブ・タスクがGPC3918から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC3918で実行されるようにスケジューリングされる。
少なくとも一実施例では、ワーク分配ユニット3914は、Xバー3920を介して1つ又は複数のGPC3918と通信する。少なくとも一実施例では、Xバー3920は、PPU3900のユニットのうちの多くを、PPU3900の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット3914を特定のGPC3918に結合するように構成されることが可能である。少なくとも一実施例では、PPU3900の1つ又は複数の他のユニットも、ハブ3916を介してXバー3920に接続されてもよい。
少なくとも一実施例では、タスクはスケジューラ・ユニット3912によって管理され、ワーク分配ユニット3914によってGPC3918のうちの1つにディスパッチされる。GPC3918は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC3918内の他のタスクによって消費されてもよく、Xバー3920を介して異なるGPC3918にルーティングされてもよく、又はメモリ3904に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット3922を介してメモリ3904に書き込むことができ、パーティション・ユニット3922は、メモリ3904への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速GPU相互接続3908を介して別のPPU3904又はCPUに送信することができる。少なくとも一実施例では、PPU3900は、PPU3900に結合された別々の個別メモリ・デバイス3904の数に等しいU個のパーティション・ユニット3922を、限定することなく含む。少なくとも一実施例では、パーティション・ユニット3922は、図41と併せて以下でさらに詳細に説明される。
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3900で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3900によって同時に実行され、PPU3900は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3900によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3900によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図41と併せて少なくとも一実施例によりさらに詳細に説明される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU3900に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、PPU3900は、別のプロセッサ若しくはシステムによって、又はPPU3900によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU3900は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図40は、少なくとも一実施例による汎用処理クラスタ(「GPC」)400を示す。少なくとも一実施例では、GPC4000は、図39のGPC3918である。少なくとも一実施例では、各GPC4000は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC4000は、限定することなく、パイプライン・マネージャ4002、プレ・ラスタ演算ユニット(「PROP」)4004、ラスタ・エンジン4008、ワーク分配クロスバー(「WDX」)4016、メモリ管理ユニット(「MMU」)4018、1つ又は複数のデータ処理クラスタ(「DPC」)4006、及びパーツの任意の好適な組合せを含む。
少なくとも一実施例では、GPC4000の動作は、パイプライン・マネージャ4002によって制御される。少なくとも一実施例では、パイプライン・マネージャ4002は、GPC4000に配分されたタスクを処理するために1つ又は複数のDPC4006の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ4002は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC4006のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC4006は、プログラム可能なストリーミング・マルチプロセッサ(「SM」)4014で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ4002は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC4000内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、PROP4004の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン4008にルーティングされてもよく、他のパケットは、プリミティブ・エンジン4012又はSM4014によって処理されるようにDPC4006にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ4002は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC4006のうちの少なくとも1つを構成する。
少なくとも一実施例では、PROPユニット4004は、少なくとも一実施例では、ラスタ・エンジン4008及びDPC4006によって生成されたデータを、図39と併せて上でより詳細に説明したパーティション・ユニット3922のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、PROPユニット4004は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン4008は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン4008は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン4008の出力は、DPC4006内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
少なくとも一実施例では、GPC4000に含まれる各DPC4006は、限定することなく、Mパイプ・コントローラ(「MPC」)4010、プリミティブ・エンジン4012、1つ又は複数のSM4014、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC4010は、DPC4006の動作を制御して、パイプライン・マネージャ4002から受信したパケットを、DPC4006内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン4012にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM4014に送信されてもよい。
少なくとも一実施例では、SM4014は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM4014はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(SIMD)アーキテクチャを実装し、ここでスレッドのグループ(ワープ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが同じ命令を実行する。少なくとも一実施例では、SM4014は、単一命令複数スレッド(SIMT)アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、同じ命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM4014の少なくとも一実施例は、以下でさらに詳細に説明される。
少なくとも一実施例では、MMU4018は、GPC4000とメモリ・パーティション・ユニット(たとえば、図39のパーティション・ユニット3922)との間でインターフェースを提供し、MMU4018は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU4018は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC4000に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC4000は、別のプロセッサ若しくはシステムによって、又はGPC4000によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC4000は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
図41は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット4100を示す。少なくとも一実施例では、パーティション・ユニット4100は、限定することなく、ラスタ演算(「ROP」)ユニット4102、レベル2(「L2」)キャッシュ4104、メモリ・インターフェース4106、及びそれらの任意の好適な組合せを含む。少なくとも一実施例では、メモリ・インターフェース4106はメモリに結合される。少なくとも一実施例では、メモリ・インターフェース4106は、高速データ転送のために、32、64、128、1024ビットのデータ・バス又は同様の実装形態を実装してもよい。少なくとも一実施例では、PPUは、パーティション・ユニット4100の対当たりにメモリ・インターフェース4106を1つの、U個のメモリ・インターフェース4106を組み込んでおり、ここでパーティション・ユニット4100の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・a41ess・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
少なくとも一実施例では、メモリ・インターフェース4106は、高帯域幅メモリの第2世代(「HBM2」)メモリ・インターフェースを実装し、YはUの半分に等しい。少なくとも一実施例では、HBM2メモリ・スタックは、PPUと同じ物理パッケージに位置付けられて、従来のGDDR5 SDRAMシステムに比べて実質的な電力と面積の節約を実現する。少なくとも一実施例では、各HBM2スタックは、限定することなく4個のメモリ・ダイを含み、Yは4に等しく、各HBM2スタックは、1つのダイ当たりに2つの128ビット・チャネルの合計8チャネル、及び1024ビットのデータ・バス幅を含む。少なくとも一実施例では、メモリは、1ビット・エラー訂正2ビット・エラー検出(「SECDED」)エラー訂正コード(「ECC」)をサポートしてデータを保護する。少なくとも一実施例では、ECCは、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供する。
少なくとも一実施例では、PPUは、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット4100は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続3908は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット4100がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(すなわち、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
少なくとも一実施例によれば、図39のメモリ3904又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット4100によってフェッチされ、L2キャッシュ4104に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々GPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット4100は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。少なくとも一実施例では、SM4014のそれぞれは、レベル1(「L1」)キャッシュを実装してもよく、ここでL1キャッシュは、特定のSM4014専用のプライベート・メモリであり、L2キャッシュ4104からのデータは、SM4014の機能ユニットで処理するために、L1キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ4104は、メモリ・インターフェース4106及びXバー3920に結合される。
少なくとも一実施例では、ROPユニット4102は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット4102は、少なくとも一実施例では、ラスタ・エンジン4008と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン4008の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット4102は、深度バッファを更新し、深度テストの結果をラスタ・エンジン4008に送信する。パーティション・ユニット4100の数はGPCの数とは異なってもよく、したがって、各ROPユニット4102は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット4102は、異なるGPCから受信したパケットを追跡し、ROPユニット4102によって生成された結果を、Xバー3920を通してどれにルーティングするかを判定する。
図42は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)4200を示す。少なくとも一実施例では、SM4200は、図40のSM4014である。少なくとも一実施例では、SM4200は、限定することなく、命令キャッシュ4202、1つ又は複数のスケジューラ・ユニット4202、レジスタ・ファイル4208、1つ又は複数の処理コア(「コア」)4210、1つ又は複数の特殊機能ユニット(「SFU」)4212、1つ又は複数のロード/ストア・ユニット(「LSU」)4214、相互接続ネットワーク4216、共有メモリ/レベル1(「L1」)キャッシュ4218、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはSM4200のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット4204は、ワーク分配ユニットからタスクを受信し、SM4200に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット4204は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット4204は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア4210、SFU4212、及びLSU4214)にディスパッチする。
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。少なくとも一実施例では、プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
少なくとも一実施例では、ディスパッチ・ユニット4206は、機能ユニットの1つ又は複数に命令を送信するように構成され、スケジューラ・ユニット4204は、同じワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット4206を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット4204は、単一のディスパッチ・ユニット4206又は追加のディスパッチ・ユニット4206を含む。
少なくとも一実施例では、各SM4200は、少なくとも一実施例では、SM4200の機能ユニットにレジスタのセットを提供するレジスタ・ファイル4208を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル4208は、各機能ユニットがレジスタ・ファイル4208の専用部分に配分されるように、それぞれの機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル4208は、SM4200によって実行されている異なるワープ間で分割され、レジスタ・ファイル4208は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM4200は、限定することなく、複数のL処理コア4210を含む。少なくとも一実施例では、各SM4200は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア4210を含む。少なくとも一実施例では、各処理コア4210は、少なくとも一実施例では、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実装する。少なくとも一実施例では、処理コア4210は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア4210に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、4×4の行列で動作し、行列の積和演算(matrix multiply and accumulate operation)D=A×B+Cを実行し、ここでA、B、C、及びDは4×4の行列である。
少なくとも一実施例では、行列乗算の入力A及びBは、16ビットの浮動小数点行列であり、和の行列C及びDは、16ビットの浮動小数点又は32ビットの浮動小数点行列である。少なくとも一実施例では、テンソル・コアは、32ビットの浮動小数点の和を有する16ビットの浮動小数点入力データで動作する。少なくとも一実施例では、16ビットの浮動小数点乗算は、64個の演算を使用し、結果的に完全精度の積をもたらし、次いでその積が、4×4×4の行列乗算の他の中間積との32ビット浮動小数点加算を使用して加算される。テンソル・コアを使用して、少なくとも一実施例では、これらの小さい要素から構築される、はるかに大きい2次元又はさらに高次元の行列演算が実行される。少なくとも一実施例では、CUDA9C++APIなどのAPIは、CUDA-C++プログラムからテンソル・コアを効率的に使用するために、特殊な行列ロード演算、行列積和演算、及び行列ストア演算を公開している。少なくとも一実施例では、CUDAレベルにおいて、ワープ・レベル・インターフェースは、ワープの32スレッドすべてにわたる16×16のサイズの行列を仮定している。
少なくとも一実施例では、各SM4200は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU4212を、限定することなく含む。少なくとも一実施例では、SFU4212は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU4212は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM4200により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ4218に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各SM4200は、限定することなく、2つのテクスチャ・ユニットを含む。
各SM4200は、少なくとも一実施例では、共有メモリ/L1キャッシュ4218とレジスタ・ファイル4208の間でロード及びストア動作を実装するN個のLSU4214を、限定することなく含む。各SM4200は、少なくとも一実施例では、機能ユニットのそれぞれをレジスタ・ファイル4208に接続し、LSU4214をレジスタ・ファイル4208に接続する相互接続ネットワーク4216と、共有メモリ/L1キャッシュ4218を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク4216はクロスバーであり、このクロスバーは、いずれかの機能ユニットをレジスタ・ファイル4208のいずれかのレジスタに接続し、LSU4214をレジスタ・ファイル4208と共有メモリ/L1キャッシュ4218のメモリ・ロケーションとに接続するように構成されてもよい。
少なくとも一実施例では、共有メモリ/L1キャッシュ4218は、少なくとも一実施例では、SM4200とプリミティブ・エンジンの間、及びSM4200のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ4218は、限定することなく、128KBのストレージ容量を備え、SM4200からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ4218は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ4218、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ4218内に統合することによって、共有メモリ/L1キャッシュ4218が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して同じプログラムを実行し、SM4200を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ4218を使用してスレッド間で通信し、LSU4214を使用して、共有メモリ/L1キャッシュ4218及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM4200は、DCP上で新規のワークを起動するためにスケジューラ・ユニット4202が使用できるコマンドを書き込む。
少なくとも一実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、PPUは、単一の半導体基板に具体化される。少なくとも一実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」)などの1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)に含まれる。
少なくとも一実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、PPUは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット(「iGPU」)であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1715が使用される。推論及び/又は訓練論理1715に関する詳細事項は、図17A及び/又は図17Bと併せて以下に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM4200に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM4200は、別のプロセッサ若しくはシステムによって、又はSM4200によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM4200は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
こうした構成要素は、少なくとも一実施例において、車両に対する物体の位置を判定する際に有用であり得る。
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
少なくとも一実施例では、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ2204及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム2200が実行できるようにする。少なくとも一実施例では、メモリ2204、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU2202、並列処理システム2212、CPU2022と並列処理システム2212の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び集積回路の任意の好適な組合せの文脈において実装される。
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム2200は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
少なくとも一実施例では、並列処理システム2212は、限定することなく、複数の並列処理ユニット(「PPU」)2214、及び関連メモリ2216を含む。少なくとも一実施例では、PPU2214は、相互接続2218及びスイッチ2220又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム2212は、計算タスクをPPU2214にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU2214の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU2214に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU2214の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU2214にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示物を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語を限定するものと解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」という用語は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
「A、B、及びCのうちの少なくとも1つ」又は「A、B、及びCのうちの少なくとも1つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、AかBかCである、又はAとBとCのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。たとえば、3つの部材を有するセットの説明的な例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B、及びCのうちの少なくとも1つ」という結合句は、次のセットのうちのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。複数とは、少なくとも2つの項目であるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。非一時的なコンピュータ読取り可能ストレージ媒体のセットは、少なくとも一実施例では、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。「システム」及び「方法」という用語は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力することは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
上の議論は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
さらに、主題は、構造的特徴及び/又は方法論的行為に特有の言葉で説明されてきたが、添付の特許請求の範囲で請求される主題は、必ずしも説明された特有の特徴又は行為に限定されないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形として開示されている。