本明細書は、物体がロボット・ハンドによって操作されている間に、その物体の姿勢を推定するためのシステム及び方法について説明する。物体がロボットによって保持されているとき、画像ベースの姿勢推定システムは、様々な実例において、物体のオクルージョンにより生じる不正確な姿勢推定に影響されることがある。少なくとも一実施例では、ロボット・ハンドは触覚センサを備え、物体がロボット・ハンドによって操作されている間に、この触覚センサによって生成されたセンサ信号が使用されて物体姿勢の推定が改善される。いくつかの状況において、アクティブな操作中に、姿勢推定をさらに難しくする滑りなどの動的影響が生じることがある。少なくとも一実施例では、物体の物理モデルを使用して、ロボットと物体の相互作用のモデル化が改善される。
少なくとも一実施例では、導関数なしの、サンプル・ベースのオプティマイザを有するグラフィックス・プロセッシング・ユニット(「GPU」)加速化物理エンジンが、操作中の接触フィードバックを用いて手持ち物体の姿勢を追跡する。少なくとも一実施例では、ロボットと物体の相互作用の順モデルとして物理シミュレーションが使用され、本明細書に記載の技法がともにシミュレーションの状態及びパラメータを最適化し、それによりこのシミュレーションが実世界をより正確に推定するようになる。
少なくとも一実施例では、本明細書に記載の技法は、物体姿勢追跡のためのロボットと物体の相互作用の動力学を明示的にモデル化し、姿勢追跡中のシミュレーション・パラメータを最適化する。様々な実例では、これらの特徴により、慣性力及び外力並びに接触を断つこと及び再確立することに起因して、並進方向及びねじれ方向に滑るなど、複雑な動力学的挙動下にある物体姿勢をシステムが追跡できるようになる。さらに、GPU加速化物理エンジンを使用することにより、多くの場合、これらの技法をリアルタイム(30Hz)にGPUを使用して適用することができる。
様々な実施例が、ロボット向けのGPU加速化物理シミュレーションのための有望な用途を実証する。たとえば、いくつかの実施例では、物理エンジンのスピードにより、高価な、コンタクト・リッチなシミュレーション、及びサンプル・ベースの最適化方法が可能になるが、これらは、すべてが同じマシン上でリアルタイムの、同時発生的な多数のシミュレーションからのデータに依存しており、これはCPUベースのシミュレーションではより困難であることが多い。様々な実施例は、手持ち物体の姿勢を推定するため、且つ器用な操作を研究する多くの研究者が直面する制約を緩和するためのツールとして使用されてもよく、その制約とは、物体はカメラからほとんど見えるように配置されるのが普通であり、研究できる操作タスクの範囲が制限されることである。
遠隔操作は、高度な推理力、直観力、及び創造力を生命のないロボット・システムに吹き込むことができる。しかし、高い作動度(degree of actuation:「DoA」)の、複数の指があるロボットに対する遠隔操作の解決策は、複雑になることがある。少なくとも一実施例では、単に人間の素手を観察することにより、高DoAロボット・システムの完全な制御を可能にするシステムが開発される。このシステムは、単純なピックアンドプレース動作を超える様々な複雑な操作タスクを、オペレータが解決できるようにすることができる。様々な実施例では、システムは、図13~図40に記載/描写する1つ又は複数のシステムによって実施されてもよい。
物体がロボット・ハンドによって保持及び操作されている間にその物体の姿勢を追跡することは、かなりのオクルージョンが生じることから、視覚ベースの方法には困難なことがある。本明細書に記載の技法は、GPU加速化並列ロボット・シミュレーションと、導関数なしのサンプル・ベースのオプティマイザとを利用して、操作中の接触フィードバックにより手持ち物体の姿勢を追跡する。少なくとも一実施例では、ロボットと物体の相互作用の順モデルとして物理シミュレーションが使用され、シミュレーションが実世界の状態及びパラメータにより良好に一致するように、シミュレーションの状態及びパラメータをアルゴリズムがともに最適化する。少なくとも一実施例は、単一のGPU上でリアルタイム(30Hz)で実行され、シミュレーション実験では6mm、及び実世界では13mmの平均点群距離誤差を達成する。
少なくとも一実施例では、器用な操作ポリシーを実行することは、手に保持された物体の姿勢を頑健に推定することから恩恵を受ける。しかし、多くの実施形態では、手持ち物体の姿勢追跡は、かなりのオクルージョンが生じることから、なお困難をきたす。こうした実施形態では、手持ち物体の姿勢を必要とする作業は、物体がほとんど見える又は複数のカメラに依存する実験か、手と物体の変換が固定されている又は知られている実験に限定されることがある。いくつかの実例では、多くの場合、物体形状及び接触ロケーションの粒子フィルタ及び知識を使用することにより、接触又は触覚のフィードバックを介した物体の姿勢推定を研究することによって、視覚的オクルージョンの問題は緩和される。少なくとも一実施例では、これらの技法は、物体が静的で且つ把持されている場合の静的な把持状況に適用されてもよい。少なくとも一実施例では、これらの技法は、物体と手の複雑な接触動力学のモデル化を必要とする手持ち操作中の物体姿勢の追跡に拡張される。
ロボット操作中に手持ち物体の追跡を実現するために、少なくとも一実施例は、動力学的な順モデルとしてのGPU加速化された高忠実度の物理シミュレータと、サンプル・ベースの最適化フレームワークを組み合わせて、図7に示す接触フィードバックを用いて物体姿勢を追跡する。少なくとも一実施例では、シミュレーションの同時発生的なセットが、実際のロボットの初期状態及び実際の物体の初期姿勢を用いて初期化され、これらは、物体が最初はオクルージョンされていないと仮定する視覚ベースの姿勢登録アルゴリズムから得ることができる。少なくとも一実施例では、シミュレーションされた物体の初期姿勢は、わずかに摂動され、視覚ベースの姿勢登録アルゴリズムの不確実さを反映する。少なくとも一実施例では、GPU加速化物理シミュレータは、同時発生的な多数のシミュレーションを単一のGPU上でリアルタイムに実行する。少なくとも一実施例では、所与のポリシーが実際のロボットを制御して、手持ち物体に近づき、把持し、操作するとき、システムは同じロボット制御コマンドを、シミュレーションされるロボット上で実行する。少なくとも一実施例では、実際のロボット及びシミュレーションされるロボットの観察が収集され、これは、ロボット・ハンドの接触センサに対する接触の強さと方向などの条件を含む。少なくとも一実施例では、サンプル・ベースの最適化アルゴリズムは、各シミュレーションの観察が実世界の状態及びパラメータにどのくらい良好に一致するかを捕捉するコスト関数に応じて、シミュレーションの状態及びパラメータを定期的に更新する。さらにいくつかの実施例では、アルゴリズムは、質量及び摩擦などのシミュレーション・パラメータを更新して、実世界のシミュレーションの動力学モデルをさらに改善する。少なくとも一実施例では、いずれかの時点で、物体姿勢の推定は、ロボット-物体システムの姿勢になる。
少なくとも一実施例では、提案されたアルゴリズムを評価するために、シミュレーションと実世界における3つの異なる物体を用いて、合計で24個の手持ち操作の軌道が収集された。少なくとも一実施例では、エンド・エフェクタとしてWonik Robotics社の4本指のAllegro Handを有するKuka IIWA7アームが使用され、各指には、SynTouch社のBioTac接触センサが装備された。少なくとも一実施例では、物体操作の軌道は、手追跡の遠隔操作システムを介して収集された人間の実演である。少なくとも一実施例では、シミュレーションにおけるグラウンド・トゥルースの物体姿勢が利用可能なので、提案されたアルゴリズムの特性を研究するためのシミュレーション実験において、詳細なアブレーション研究が実行される。少なくとも一実施例では、実世界の実験について、視覚ベースのアルゴリズムを使用して、収集された軌道の最初と最後のフレームにおける物体姿勢が取得され、ここで物体はオクルージョンされていない。少なくとも一実施例では、最初のフレームにおける姿勢を使用して、シミュレーションが初期化され、最後のフレームにおける姿勢を使用して、提案された接触ベースのアルゴリズムの精度が評価される。
様々な実例は、通常、最初に画像内のロボット又は人間の手をセグメント化して外してから姿勢推定を実行することにより、手持ち物体の姿勢を視覚のみで識別する。しかし、視覚のみの手法は、オクルージョンが大きいと性能が低下することがある。いくつかの実施例は、物体姿勢の推定を支援するために触覚フィードバックを使用する。触覚知覚は、材料及び姿勢といった物体特性を識別できるとともに、物体操作中にフィードバックを提供することもできる。
少なくとも一実施例では、動力学モデル及び粒子フィルタ技法を用いた実験は、適用された力に、基礎動力学ではなくノイズを付加することにより、より正確な追跡結果が得られることを明らかにする。少なくとも一実施例は、触覚フィードバックを視覚ベースの物体追跡装置と組み合わせて、平坦な押しタスク中に物体軌道を追跡し、別の実施例は、段階的な平滑化及びマッピング(「iSAM」)を適用して、グローバルな視覚的姿勢推定と、ローカルな接触姿勢読取り値とを組み合わせる。
少なくとも一実施例では、ロボット・ハンドは物体を把持し、動かずにその物体姿勢を位置特定する。接点の周りの局所的な形状情報を抽出するために、点接触ロケーションを使用する実例もあれば、完全な触覚マップを使用する実例もある。
少なくとも一実施例は、姿勢推定のために接触ロケーション・フィードバックを使用し、いくつかの実施形態は、ベイジアン・フィルタリング又は粒子フィルタリングの変形形態を使用する。視覚的特徴、手関節位置、力-トルク読取り値、及びバイナリ接触モードに対して、いくつかの実施例がともにフィルタリングを実行する。物体がロボットによって保持されていないときも、力プローブを使用することにより、いくつかの技法を姿勢推定に適用することができる。
少なくとも一実施例では、姿勢推定のために触覚マップが使用され、いくつかの実例は、大型で低解像度の触覚アレイを使用して、グリッド内の接触を検知し、一方他の実例は、ロボットの指先に装着された高解像度の触覚センサを使用する。少なくとも一実施例では、システムは、物体表面の類似した局所的パッチを検索して、接触ロケーションに対して物体を位置特定し、他のシステムは、GelSightデータと、深度センサによって知覚された点群とを融合してから、姿勢推定を実行する。
いくつかの実施例は、物体操作中の手持ち物体の姿勢追跡を実施し、これは物体が静止している場合よりも一層困難である。少なくとも一実施例では、接触ロケーションと、密な関節リアルタイム追跡(Dense Articulated Real Time Tracking:「DART」)とを組み合わせるアルゴリズムが使用される。少なくとも一実施例では、アルゴリズムは、接触ロケーションを、色の視覚的特徴、関節位置、及び力-トルク読取り値と融合する。少なくとも一実施例では、アルゴリズムは、特に物体が深度画像において小さく見えるときに、物体姿勢の初期化を受けやすい。少なくとも一実施例では、本明細書に記載の技法は、操作中に頑健な視覚的特徴にアクセスすることを仮定していないが、その代わりに、物理シミュレータを利用してロボット-物体システムの運動学と動力学の両方をモデル化する。
様々な実例では、ロボット遠隔操作は、捜索及び救助、宇宙、医薬、並びに応用機械学習の用途を有してもよい。遠隔操作機能のモチベーションは、ヒューマン・マシン・インターフェース(「HMI」)を介して人間の認識力、創造力、及び反応力を活かすことにより、ロボット・システムが複雑なタスクを解決できるようにすることであってもよい。少なくとも一実施例では、このシステムは、複数の指がある作動性の高いロボット・システムを駆動して多様な把持及び操作のタスクを解決するために、グローブ不要の解決策を提供する。いくつかの実施例では、深度カメラ及び様々なグラフィックス・プロセッシング・ユニット(「GPU」)を、深層学習及び最適化とともに使用して、最小専有面積の器用な遠隔操作システムが生成されてもよい。いくつかの実例では、様々な物理的タスクが、視覚的フィードバックのみで実行されることが可能である。したがってこのシステムは、視覚のみから物理的行動を計画し、動き、その結果を予測する人間の能力を利用してもよく、視覚は様々なタスクを解決するのに十分な条件であり得る。
様々な実施例では、開発されたシステムは、人間の素手を複数のカメラで深度観察することを使用して、こうした器用なロボット操作を可能にする。いくつかの実例では、このシステムは、直接的な模倣により、作動性の高いロボット・ハンド・アーム・システムを器用に関節駆動するグローブ不要で、完全に視覚ベースの遠隔操作システムとすることができる。またこのシステムは、精巧な操作及び器用さを特に必要とする様々なタスク(たとえば、図1に示すように、財布から紙幣を抜き出すこと、及び4本の指で2つの立方体を同時に持ち上げること)を実演してもよい。
図1は、少なくとも一実施例による、様々なタスクにわたる遠隔操作の実例を示す。一実例では、ロボット・グリッパ104は、人間の手102に基づく把持姿勢を使用して、円筒を把持する。別の実例では、ロボット・グリッパ108は、人間の手106に基づく把持姿勢を使用して、立方体を把持する。別の実例では、ロボット・グリッパ112は、人間の手110に基づく把持姿勢を使用して、カップを把持する。別の実例では、ロボット・グリッパ116は、人間の手104に基づく把持姿勢を使用して、財布を把持する。
図2に示すように、遠隔操作の構成は、ロボット・システムと、隣接する人間操縦者の行動領域とを含んでもよい。図2は、少なくとも一実施例による、触覚センサを有するロボットの実例を示す。少なくとも一実施例では、ロボット202は、物体を把持するために使用されるロボット・グリッパ204を有する。少なくとも一実施例では、カメラ206、208、210、及び212のセットを使用して、ロボット202の作業空間が観察される。少なくとも一実施例では、グリッパ204は、制御コンピュータ・システムに感覚情報を提供する触覚センサ216、218、220、及び222のセットを含む。少なくとも一実施例では、触覚センサは摩擦材料で覆われて、物体を把持するロボットの性能を強化及び/又は改善してもよい。
いくつかの実施例では、図2に示すように、ロボット・システムは、Wonik Robotics社のAllegro Handを有するKUKA LBR iiwa7 R800シリーズのアームであってもよく、SynTouch社のBioTac触覚センサが4つ、指先に後付けされており、3M TB641の把持テープが、指骨及び手のひらの内側表面に付けられており、ここで、BioTacセンサと3Mテープの両方のゴム状表面が、手の摩擦力を向上させるとともに、BioTac自体が23個の信号を生成してもよく、後にこれらの信号を使用して、実演から感覚運動制御を学習することができる。人間の行動領域は、黒いクロスで覆われたテーブルであってもよく、キャリブレーション済みの時間同期された、Intel RealSense RGB-Dカメラなどの4台のカメラによって囲まれ、これらのカメラは80cm×55cm×38cmの作業空間をカバーするように空間的に配置されてもよい。いくつかの実例では、遠隔操作は人間の視覚及び空間推理に完全に基づいているので、カメラは、視線及び視覚的近さを改善するようにロボットに直接隣接していてもよい。図2は説明的な実例であることを意図しており、様々な実施例では、システムは、任意の適切な環境における任意のロボット構成要素(たとえば、様々なタイプのロボット・アーム、ハンド、触覚センサ、把持、他のセンサ、カメラ、及び/又はそれらの変形形態)を利用する任意のロボット・システムを含んでもよいことに留意すべきである。
自然な感覚の遠隔操作システムを作製するために、模倣タイプのパラダイムが採用されてもよい。人間の素手の動作、すなわち姿勢及び指の構成が、視知覚モジュールによって常に観察及び測定されてもよい。次いで人間の手の動作は、コピーされた動作が明らかになるようなやり方でロボット・システムに中継されてもよい。この手法により、人間の操縦者は自らの指を曲げ、揃え、把持の形をつくり、自らの手のひらの向きを変え、移動させ、ロボット・システムが同様のやり方でこれをまねることができるようになる。少なくとも一実施例では、システムは、密な関節リアルタイム追跡(「DART」)に大きく依存し、これは、人間の手姿勢及び関節角度を追跡するバックボーンを形成してもよい。完全なシステム・アーキテクチャ及び構成要素の接続は、一実施例において図3に示される。
図3は、少なくとも一実施例による、物体をリアルタイムで追跡するシステムの実例を示す。少なくとも一実施例では、このシステムは3つのスレッドを使用して動作し、これらはコンピュータ・システムの1つ又は複数のプロセッサ上で実行される独立したプロセスである。少なくとも一実施例では、手の1つ又は複数の画像は、RGB深度(「RGB-D」)カメラ302から取得される。画像は、PointNet:ステージ1(304)、PointNet:ステージ2(306)、及びJointNet(308)によって処理されて、画像内の手について手姿勢が生成される。少なくとも一実施例では、関節付きの手モデル310及び手姿勢が、DART312及び運動学的再標的化314を使用して処理されて、ロボット・グリッパの対応する手姿勢が生成される。少なくとも一実施例では、制御スレッドは、リーマン・モーション・ポリシー318をグリッパの手姿勢に適用し、その結果得られる情報を使用してロボット320が制御される。
少なくとも一実施例では、DARTは、人間の手の姿勢及び関節角度を継続的に追跡するために使用される。少なくとも一実施例では、DARTは、入力点群に対して登録される手の関節付きモデルを使用する。人間の手モデルが取得され、単一のメッシュ・モデルに変えられてもよい。コンピュータ支援設計(「CAD」)ソフトウェアを利用して、メッシュ・モデルの指が、それぞれの近位リンク、中位リンク、遠位リンクに分離され、それらの運動学的構成を示す関連した拡張可能マークアップ言語(「XML」)ファイルとともに、別々のメッシュとして再エクスポートされてもよい。人間の手モデルは、1本の指につき4個の関節、さらに1個の外転関節及び3個の屈曲関節の、合計20個の回転関節を有してもよい。
少なくとも一実施例では、DARTは、(たとえば前のフレームからの、又は初期推量からの)非線形最適化及び初期化に依存するモデル・ベースの追跡装置である。いくつかの実例では、この初期化が収束域内にない場合には、追跡装置は、正しい解に収束できないことがある。様々な実施例では、点群データを用いて人間の手モデルを追跡するとき、手モデルは、細かく途切れてスプリアスな局所的最小値になることが多く、数分ごとに追跡失敗につながることがある。したがって、遠隔操作に必要な長い期間にわたって確実に人間の手を追跡するために、手姿勢の信頼できる事前知識、クリーンな手のセグメント化、及びマルチビューのカメラ・スタジオを有して、手モデルが、細かく途切れて予期せぬ局所的最小値になるのを防ぐことが望ましい場合がある。様々な実施例では、手姿勢の事前知識を生成するための1つの方法は、カメラ画像を前提とする人間の手姿勢の大量のデータセットについて、ニューラル・ネットワークを訓練することである。
少なくとも一実施例では、データ収集は、手姿勢の事前知識のない状態でDARTを用いて開始され、手の事前知識を生成するように初期ネットワークの訓練が始められる。その後、DART及び最新の訓練済みニューラル・ネットワークが、さらに多くの量のデータを生成してもよい。少なくとも一実施例では、ネットワークは、最新のデータセットで絶え間なく更新されて、DARTのためのより良好な事前知識が生成され、これにより最終的には、DARTが失敗することなく動作できる対象範囲を拡大することができる。いくつかの実例では、手姿勢のニューラル・ネットワークは、PointNetベースのアーキテクチャであってもよく、これは、外的にキャリブレーションされた深度カメラから得た深度画像を、DARTによって提供されたアノテーションを用いて単一のグローバル参照フレームに逆投影することによって取得される融合された点群データに対して直接動作する。様々な実施例では、融合された点群は、テーブル上の点と、人間の体及び腕の点の両方を含むので、最初に手を位置特定することが必須である場合がある。平面を当てはめることによりテーブルから点が除去されてもよく、腕と人間の体を含む残りの点を、PointNetに供給して、これが、手を位置特定するとともに手姿勢を提供してもよい。PointNetは、手の特定のキーポイントの3D位置への、投票に基づく回帰スキームを介して、手姿勢を推定することに基づいてもよく、これは、2Dのキーポイント・ローカリゼーションによく使用される空間ソフトマックスに関連付けられることがある技法である。様々な一実施例では、PointNetは、手の上に特定される23個のキーポイント、すなわち5本の指それぞれの4個の関節キーポイント、及び手の甲の3個のキーポイントの3D座標を予測して手姿勢を推定するように訓練されてもよい。損失関数は、予測されたキーポイントと、グラウンド・トゥルースのキーポイントとの間のユークリッド距離であってもよい。さらに、補助的なセグメント化損失が含められて、手のセグメント化が取得されてもよい。効率的にするために、任意の入力点群は、固定の8192×3のサイズに一様にサブサンプリングされてから、PointNetに供給されてもよい。少なくとも一実施例では、妥当な手姿勢の推定及びセグメント化を実現できる一方で、指の20個の関節キーポイントについての高品質な予測は、まだ実現することができない。少なくとも一実施例では、入力において使用される一様なサブサンプリングは、指にあるポイントが密にサンプリングされないことを意味し、したがって、第1のステージの姿勢及びセグメント化を前提として、元の生の点群から、手の点をリサンプリングするという、第2のステージの精緻化が必要になることがある。少なくとも一実施例では、第2のステージは、同じ損失関数について訓練されてもよいが、その代わりに、23個のキーポイントを正確に予測するために、手についてサンプリングされた点のみを使用してもよい。少なくとも一実施例では、第1のステージから得た手姿勢における何らかの不正確さに対する頑健性を有効にするために、ランダム摂動が、第2のステージ用の手姿勢に追加されてもよい。図4は、少なくとも一実施例による、システム内での第2のステージの精緻化を示す。少なくとも一実施例では、PointNetの両方のステージは、DARTを走らせることにより、合計7~8時間にわたってそれぞれ30~45分のバッチ中に収集された100Kの点群に対して訓練されて、キーポイント、関節角度、及びセグメント化のアノテーションを提供してもよい。少なくとも一実施例では、指について関節角度の事前知識を提供するために、PointNetによって予測されたキーポイントのロケーションを、対応する関節角度にマッピングする第3のニューラル・ネットワークが訓練されてもよい。JointNetと呼ばれることもあるこのニューラル・ネットワークは、2層の完全に連結されたネットワークであってもよく、サイズ23×3の入力を取り、指について関節角度の20次元のベクトルを予測する。
少なくとも一実施例では、ニューラル・ネットワークは、複数の人間の手について収集されたデータについて訓練され、正確な姿勢がこのシステムに確実に当てはまるようにし、DARTにとって実用的な事前知識を有効にする。いくつかの実施例では、DARTの人間の手モデルに形状が近い手については、手の追跡装置は良好に機能することができる。
少なくとも一実施例では、人間の手とは運動学的に異質のロボット・ハンドの遠隔操作には、観察された人間の手の関節を、ロボット・ハンドの関節にマッピングできるモジュールが必要なことがあり、このロボット・ハンドの関節は、いくつかの実施例ではAllegro Handの関節と呼ぶことができる。図5は、少なくとも一実施例による、人間の手姿勢502、及び対応する姿勢をとるロボット・グリッパ504の実例を示す。運動学的再標的化の多数の異なる手法が存在してもよい。たとえば、少なくとも一実施例では、手のひらから指先までの位置と中央関節の位置とを合わせるため、また、基節骨と親指の末節骨の方向性を合わせるために、モジュールが使用されてもよい。少なくとも一実施例では、最適化されたマッピングを使用して人間の深度画像がラベル付けされ、それによりディープ・ネットワークが、深度画像を取り込み、関節角度を出力できるようになってもよい。少なくとも一実施例では、動作再標的化も利用される。たとえば、ディープ再帰ニューラル・ネットワークは、骨格間で動作を再標的化するように教師なしで訓練されてもよい。少なくとも一実施例では、接触の広がり、神経支配の程度、及び精巧な手持ち操作スキルを得るための高い制御性により測定すると、遠位領域は把持及び操作のタスクにおいて優先順位が一番高いものであり得るので、システムは指先のタスクの空間計量基準を利用する。少なくとも一実施例では、2つの手の間で関節の軸及びロケーションは異なることがあり、したがって、2つの手の間で関節角度を直接比較する計量基準は使用することができない。少なくとも一実施例では、指先の位置決めを捕捉し最適化するために、指先間の距離と方向の両方が考慮される。具体的には、少なくとも一実施例において、運動学的再標的化のためのコスト関数が、以下のように選択されてもよい。
ここでqh,qaは、それぞれ人間の手モデルとAllegro Handの角度とすることができ、ri∈R3は、原点座標系(図5を参照)において表される1つの座標系の原点から、別の座標系の原点を指すベクトルとすることができる。さらに、少なくとも一実施例では、di=||ri(qh)||、及び
である。重み切替え関数(switching weight function)s(di)は、以下のように定義されてもよい。
ここでS1は、主要な指(人差し指、中指、薬指)から発生し親指に向かうベクトルとすることができ、S2は、2本の主要な指がどちらも関連ベクトル∈S1を有するとき(たとえば、両方の主要な指が親指とともに突出しているとき)の両方の主要な指同士間のベクトルとすることができる。少なくとも一実施例では、距離関数(distancing function)f(di)∈Rは、以下のように定義される。
ここでβ=1.6は、倍率とすることができ、η1=1×10-4mは、主要な指と親指との間の距離とすることができ、η2=3×10-2mは、2本の主要な指が両方とも親指とともに突出しているときの2本の主要な指の間の最小分離距離とすることができる。少なくとも一実施例では、こうした突出により、精密把持において主要な指のぶつかりが生じることなく、主要な指と親指との接触を近くできる。少なくとも一実施例では、これは、視覚的な指追跡の誤りが存在する際に特に有用であり得る。いくつかの実例では、ベクトルriは、1つのタスク空間から別のタスク空間までの距離及び方向を捕捉するだけでなくてもよく、それらのベクトルをローカル座標に表すことは、座標系、したがって指先が互いにどのように配向されるかについての情報をさらに含んでもよい。したがって少なくとも一実施例では、人間の手モデルの座標系は、Allegroモデルに対して、配向及び配置が類似している等しい座標系を有してもよい。図5に示すベクトルは、所望の再標的化挙動を生成する最小のセットを形成してもよい。いくつかの実施例では、γ=2.5×10-3が、Allegroの角度を正則化してゼロに(手を完全に開いたのと等しい状態に)する際の重みであってもよい。少なくとも一実施例では、この条件により、解の冗長性を低減しやすくなり、回復するのが困難になり得る(たとえば、指が手のひらに入り込んでしまう)おかしな最小値に手が入らないようにする。少なくとも一実施例では、運動学的再標的化により生成される、人間の手602~617からAllegroロボット・ハンド618~633への様々なマッピングが、図6に示される。
少なくとも一実施例では、逐次最小二乗二次計画法(Sequential Least Squares Quadratic Programming)(「SLSQP」)アルゴリズムを使用して、上のコスト関数がリアルタイムで最小化される。少なくとも一実施例では、Allegro関節角度がゼロに設定された状態でルーチンが開始され、その後の解はすべて、前の解によって開始されてもよい。少なくとも一実施例では、人間の手モデルとAllegro Handとの両方の様々な座標系の間の、順方向の運動学的計算が見いだされる。少なくとも一実施例では、一次ローパスフィルタが、生の再標的化関節角度に適用されて、人間の手を追跡する際に存在する高周波ノイズが除去され、再標的化角度においてステップ応答の変化を生じさせる射影アルゴリズムのような、離散的事象が平滑化される。
少なくとも一実施例では、リーマン・モーション・ポリシー(「RMP」)は、リアルタイムの動作生成法であり、これは潜在的な関数勾配、及び対応するリーマン計量基準から、加速フィールドを計算する。RMPは、複数優先度のデカルト軌道の生成と、衝突回避挙動を、1つのコヒーレントなフレームワークにおいて組み合わせる。少なくとも一実施例では。人間の手の観察された姿勢を前提としてAllegroの手のひらのデカルト的な姿勢を制御するとともに、衝突平面を使用して、腕と手のひらがテーブルやオペレータと衝突するのを回避するために、それらが使用される。少なくとも一実施例では、これらの目的を前提として、RMPの生成した標的腕関節の軌道が、腕のトルク・レベルのインピーダンス・コントローラに200Hzで送信される。少なくとも一実施例では、運動学的に再標的化されたAllegro角度が、トルク・レベルの関節コントローラに30Hzで送信される。少なくとも一実施例では、初期の静的ロボット姿勢及び人間の手の初期の観察により、ロボットのベース座標系にスタジオ・カメラを登録することによって、遠隔操作インスタンスが初期化される。少なくとも一実施例では、人間の手モデルの軸と、ロボットのエンド・エフェクタの軸は、人間の手の動きとロボットの動きとの間で動きの方向が保たれるように、おおよそ位置合わせされる。
全体的に、システムは、様々な難度の多様なタスクを解決するために、信頼して使用することができる。いくつかの実例では、これらのタスクを解決するための能力により、精密把持及び握力把持、複数の指でつかむ操作及びつかまない操作、手持ちの指歩容(finger gaiting)、並びに複合的な手持ち操作(たとえば、2本の指で把持し、それと同時に残りの指で操作すること)を呈する器用さを、このシステムが有し得ることが明らかになる。
少なくとも一実施例では、このシステムにより、作動性の高い手・腕のシステムは、人間の手及び指の観察された動作を、ロボットのアーム及び指の動作にトランスレートすることによって様々な操作タスクに対するモータの解を見いだせるようになってもよい。少なくとも一実施例では、財布から紙幣を抜き出す、及びプラスチック容器内の厚紙の箱を開けるというような、いくつかのタスクは、非常に複雑であり得るので、ロボットの解を手で設計したり、学習方法を直接適用したりすることは、手に負えない可能性がある。これらのタスク及び他のタスクを、具体化されたロボットによって解決することにより、多くの実演について必要に応じてこれらの解を生成できるようになってもよい。さらに、これらの解をシステム自体において生成することにより、ロボットの指先の様々な触覚信号、ハンド及びアームにわたってコマンド及び測定される様々な関節位置及び速度信号、システム全体の様々なトルク・コマンド、並びにシステムに関連付けられた任意のカメラ・フィードを読み取り、これらにアクセスし、これらを保存することが可能になってもよい。少なくとも一実施例では、タスクの実演とともにこの豊富なデータ・ソースを使用して、複雑で複数ステージの長い水平タスクが解決されてもよい。
一実施例では、ロボット操作中に手持ち物体を追跡するためのシステムが開発される。様々な実施例では、システムは、図13~図41に記載/描写する1つ又は複数のシステムによって実施されてもよい。図7に描いてあるように、システムは、接触フィードバックを用いて物体姿勢を追跡するために、サンプル・ベースの最適化フレームワークとともに、GPU加速化された高忠実度の物理シミュレータを動力学的順モデルとして備えてもよい。少なくとも一実施例では、物体が最初はオクルージョンを受けていないと仮定する視覚ベースの姿勢登録アルゴリズムから得ることができる実際のロボットの初期状態、及び実際の物体の初期姿勢を用いて、シミュレーションの同時発生セットが初期化される。少なくとも一実施例では、シミュレーションされた物体の初期姿勢は、わずかに摂動され、視覚ベースの姿勢登録アルゴリズムの不確実さを反映する。少なくとも一実施例では、GPU加速化物理シミュレータは、同時発生的な多数のシミュレーションを単一のGPU上でリアルタイムに実行する。少なくとも一実施例では、手持ち物体に近づき、把持し、操作するように実際のロボットを制御する所与のポリシーが利用され、同じロボットの制御コマンドが、シミュレーションされるロボット上で実行される。少なくとも一実施例では、実際のロボット及びシミュレーションされるロボットの観察が収集され、これは、ロボット・ハンドの接触センサに対する接触の強さと方向などの条件を含む。少なくとも一実施例では、各シミュレーションの観察が実世界の状態及びパラメータにどのくらい良好に一致するかを捕捉するコスト関数に応じて、シミュレーションの状態及びパラメータを定期的に更新するサンプル・ベースの最適化アルゴリズムが利用される。さらにいくつかの実施例では、アルゴリズムは、質量及び摩擦などのシミュレーション・パラメータも更新して、実世界のシミュレーションの動力学モデルをさらに改善する。いずれかの時点で、物体の姿勢推定は、ロボット-物体システムの姿勢になる。
様々な実施例では、提案されたアルゴリズムを評価するために、シミュレーションと実世界において3つの異なる物体を用いて、合計で24個の手持ち操作の軌道が収集されてもよいが、任意の数の軌道が収集されてもよい。少なくとも一実施例は、エンド・エフェクタとしてWonik Robotics社の4本指のAllegro handを有するKuka IIWA7アームなどのロボット・アームを利用し、各指には、SynTouch社のBioTac接触センサが装備される。少なくとも一実施例では、物体操作の軌道は、手追跡の遠隔操作システムを介して収集された人間の実演である。少なくとも一実施例では、シミュレーションにおけるグラウンド・トゥルースの物体姿勢があるので、提案されたアルゴリズムの特性を評価するためのシミュレーション実験において、詳細なアブレーション研究が実行される。少なくとも一実施例では、視覚ベースのアルゴリズムを利用して、収集された軌道の最初と最後のフレームにおける物体姿勢が取得され、ここで物体はオクルージョンされていない。少なくとも一実施例では、最初のフレームにおける姿勢を使用して、シミュレーションが初期化され、最後のフレームにおける姿勢を使用して、提案された接触ベースのアルゴリズムの精度が評価される。
図7は、手持ち物体の姿勢追跡フレームワークの実施例を示す。少なくとも一実施例では、ロボット制御702がGPU加速化物理シミュレータに送られ、このシミュレータは、多数のロボット・シミュレーションを、それぞれ異なる物理パラメータ及び摂動付き物体姿勢を用いて並列に実行する708。少なくとも一実施例では、実世界とシミュレーションからの接触フィードバックなど、観察に基づくコストが、導関数のないサンプル・ベースのオプティマイザ704に渡されて、このオプティマイザが、すべてのシミュレーションの状態及びパラメータを、実世界のものにより良好に一致するように周期的に更新する。少なくとも一実施例では、いずれかの時点で、最もコストの低いシミュレーションの姿勢が、現在の物体姿勢の推定706として選択される。
一実施例では、システムは、物体操作中にロボット・マニピュレータによって手に保持された物体の姿勢を追跡する。いくつかの実施例では、tによって表すことができる時間の間、物体姿勢はpt∈SE(3)と定義されてもよく、物理動力学モデルは、st+1=f(st,ut,θ)と定義されてもよく、ここでstは、世界の状態(剛体の位置及び速度、並びに関節付き本体における関節角度の位置及び速度)であってもよく、
はロボット制御であってもよく(所望の関節位置が行動空間として利用されてもよく)、
は、シミュレーションの固定パラメータ(たとえば、質量及び摩擦)であってもよい。
様々な実施例では、p0,s0,及びθの完全な初期化を前提として現実に完全に一致するシミュレーション・モデルfについては、シミュレーションにおいてロボットに適用された一連の行動utを巻き戻すことだけが、姿勢推定に必要であってもよい。しかし、順モデルは不完全なことがあり、姿勢初期化はノイズが多くなることがあるので、姿勢推定は、観察フィードバックによって改善することができる。
いくつかの実施例では、Dは、ロボットが有する関節の数として定義されてもよく、Lは、その接触センサの数として定義されてもよい。観察ベクトル0tは、ロボットの関節位置構成
と、(指先に位置してもよい)ロボットの接触センサの位置及び回転
、
と、検知された接触の力ベクトル
と、接触表面における並進滑りの方向における単位ベクトル
と、接触表面における回転滑りのバイナリ方向
とを連結したものと定義されてもよく、ここで、lは、l番目の接触センサを指してもよい。少なくとも一実施例では、現在及び過去の観察01:t,ロボット制御u1:t,及び初期姿勢p0を前提として、一般的な手持ち姿勢の推定を決定するために、最も確率の高い現在の物体姿勢ptが決定される。
様々な実施例では、多数のロボット物体環境を同時発生的にシミュレーションして手持ち物体の姿勢を追跡するために、GPU加速化物理シミュレータが動力学的な順モデルとして利用されてもよく、シミュレーションの状態及びパラメータをともにチューニングして追跡性能を向上させるために、導関数のない、サンプル・ベースのオプティマイザが利用されてもよい。図9は、利用することができるアルゴリズムの実例の実施例を示す。
第1に、視覚ベースの物体姿勢推定器により、初期の物体姿勢が取得されてもよい。姿勢推定器は、把持の前など、ロボットが物体に接触しておらず、物体がオクルージョンされていないときの、確実な初期姿勢推定p0を提供すると仮定されてもよい。次いで、初期の物体姿勢の推定及びロボット構成を前提として、K個の同時発生的シミュレーションが初期化されてもよく、時間ステップごとに、実際のロボット行動utが、K個すべてのシミュレーションにコピーされてもよい。様々な実例では、物体姿勢は、手が接触を確立したときに変化することがあり、これが、シミュレータによってモデル化されてもよい。様々な実施例では、i番目のシミュレーションの物体姿勢及び観測は、
及び
と定義されてもよく、グラウンド・トゥルースの観察は、
と定義されてもよい。様々な実施例では、コスト関数Cを前提として、時間tにおける現在の最良の姿勢推定は、i*番目のシミュレーションの姿勢
であってもよく、ここでi*番目のシミュレーションは、何らかの過去の時間窓T:
にわたって最低の平均コストを伴うシミュレーションであってもよい。
コストを使用して、シミュレーション及びそれらのパラメータが定期的に更新されてもよく、これにより、実際のロボット-物体システムとの整合を改善できるようになってもよい。
いくつかの実施例では、低いコストほどより良好な姿勢推定に対応するように、手持ち物体の操作中の物体姿勢差と十分に相関するコスト関数が使用されてもよい。コスト関数は、以下の記号的な数式によって表すことができる:
コスト関数の第1項について、シミュレーションされるロボットと、実世界のロボットとでqtを比較することは、それらが同じutを共有している場合でも役立つ可能性があり、その理由は、ロボット・ハンドに接触している物体の現在の姿勢によって課される衝突制約に応じてqtが異なる場合があるからであり、この衝突制約により、関節は、コマンドされた標的角度に到達するのが物理的に不可能になることがある。
少なくとも一実施例では、接触センサの力の大きさが、ある一定の閾値より大きい場合、それは接触しているとみなされる。少なくとも一実施例では、i番目のシミュレーションのl番目の接触センサのバイナリ接触状態が、実際の接触センサの接触状態と一致するとき、α(i,l)は1であり、そうでなければ0である。少なくとも一実施例では、i番目のシミュレーションのl番目の接触センサが、実際の接触センサと一致するとき、並進方向の滑りをセンサが受けているかどうかに関わらずβ(i,l)は1であり、そうでなければ0であり、回転方向の滑りについても、γ(i,l)は同様である。
少なくとも一実施例では、任意の2つのベクトルについて、ΔM(●,●)は、それらの大きさの差異を与え、Δφ(●,●)は、それらの間の角度を与える。少なくとも一実施例では、任意の2つの回転Ra及びRbについて、Δ(Ra,Rb)は、軸角度表示
の角度を与える。少なくとも一実施例では、コスト項の重みwiは、各項の対応する平均的な大きさが、概ね1に正規化されるように決定される。
様々な実施例では、シミュレーションを介した物体姿勢の推定に関して、不確実性の2つの根源が存在する。それらは1)視覚ベースの姿勢推定器からの初期姿勢の推定p0にノイズが多く含まれるかもしれないこと、及び2)一部には不完全なモデル化が原因で生じ、一部には実世界の知られていない物理パラメータθが原因で生じる、シミュレーションされた動力学と実世界の動力学との間の不整合が存在するかもしれないことである。
少なくとも一実施例では、初期姿勢の不確実性という第1の問題は、異なるシミュレーションにわたる初期姿勢の推定を、視覚ベースの推定姿勢
を中心とした分布からサンプリングすることよって摂動させ、シミュレーションの数Kを増やすことにより、対処される。様々な実施例では、Kが任意の大きさになると、真の初期姿勢がシミュレーションのセット内に十分に表される確率が高くなり、良好に設計されたコスト関数は、正しい姿勢を有する正しいシミュレーションを選択することができる。少なくとも一実施例では、並進と回転は、初期の物体姿勢に対するサンプリングを実行するために、別々にサンプリングされる。少なくとも一実施例では、並進は、等方性の正規分布からサンプリングされ、その一方で回転は、so(3)においてゼロ平均の等方性の接線ベクトルを描き、次いでそれを平均回転に適用することによってサンプリングされてもよい。
少なくとも一実施例では、シミュレーションされた物理と実世界の物理との不整合(「シミュレーションと実」のギャップ)という第2の問題は、導関数のない、サンプル・ベースの最適化アルゴリズムを利用して、姿勢追跡中にθをチューニングすることによって対処される。様々な実施例では、T時間ステップごとに、この窓中のすべてのシミュレーションの平均コストと、シミュレーションの状態及びパラメータが、所与のオプティマイザに渡されてもよい。少なくとも一実施例では、オプティマイザは、シミュレーションの次のセットを、独自の更新パラメータを用いて決定する。少なくとも一実施例では、次のセットのシミュレーションは、シミュレーション・パラメータ及び物体姿勢にいくらかの摂動を追加して、現在のセットのシミュレーションからサンプリングされる。少なくとも一実施例では、こうした探索により、シミュレーションの多様性が維持されて、ノイズの多い観察に起因した最適ではないシミュレーションのパラメータ又は状態に、それらがはまり込むのが防止される。
θ(i*)を真のθ(gt)に収束させるのが望ましいかもしれないが、良好な姿勢推定を実現するためにこれは必須でなくてもよい。さらに、シミュレーションされた動力学と実世界の動力学との差異に起因して、Cをそれらの対応する実世界の値になるよう小さくするための最適なθは、計算された理論的予測からのわずかな変動を有することがある。
シミュレーションK個のパラメータは、導関数のない、サンプル・ベースの3つのオプティマイザによって最適化されてもよい。
実施例では、重み付きリサンプリング(「WRS」)オプティマイザが利用される。様々な実施例では、WRSは、既存のシミュレーション状態S(1:K)に対して確率質量関数(「PMF」)を形成してもよく、その分布からK回の復元サンプリングを行い、シミュレーションの次のセットを形成してもよい。PMFを形成するために、WRSは、シミュレーション・コスト
に対してソフトマックスを適用してもよい。
ここでλは、分布の鮮明度を決定する温度ハイパーパラメータであってもよい。少なくとも一実施例では、リサンプリング後に、シミュレーション・パラメータθ及び物体姿勢を摂動させることにより、シミュレーションに対する探索が実行される。
少なくとも一実施例では、シミュレーション・パラメータは、前のパラメータ
を中心とした等方性正規分布からサンプリングすることにより摂動され、ここでΣθは事前定義されていてもよい。下付文字τは、オプティマイザの更新ステップを指してもよい(τ回の更新ステップの後に、シミュレーションは合計τT回の時間ステップについて実行された)。
実施例では、相対エントロピー・ポリシー検索(「REPS」)オプティマイザが利用される。少なくとも一実施例は、REPSのサンプル・ベースの変形形態を利用し、これは、シミュレーションごとに重みを計算し、これらの重みのソフトマックスによって形成された分布からサンプリングを行う。WRSは、固定されたλパラメータを使用して分布を形成することができるが、REPSは、∈を条件として、全体的な分布の性能を最も良好に向上させる適応性のある温度パラメータηについて解くことができ、∈は、旧サンプルの分布と更新済みサンプルの分布との間のKL発散に課される制約であってもよい。
REPSを使用するため、少なくとも一実施例は、Ri=maxjCj+minjCj-Ciを設定することにより、報酬としてコストを再編成する。パラメータηは、二重関数を最適化することによりステップごとに計算されてもよく、次いでηを利用して、PMF
が形成されてもよい。
リサンプリング後、WRSと同じやり方でシミュレーションが摂動されてもよい。
様々な実施例では、母集団ベースの最適化(「PBO」)アルゴリズムが利用されてもよい。少なくとも一実施例では、PBOアルゴリズムは、すべてのシミュレーションを、それらの平均コストによってランク付けし、最も低いコストを有する上位のKbestシミュレーションを見いだす。少なくとも一実施例では、アルゴリズムは、復元サンプリングされたKbestのコピーとともに残りのK-Kbestシミュレーションを復元することにより活用し、WRSと同じやり方でKbestシミュレーションを摂動させることにより、探索する。少なくとも一実施例では、PBOは、シミュレーション・コストの相対的な順番だけに依存し、それらの大きさには依存しない形成済みコストを効果的に使用して、ノイズの多いコストに対してオプティマイザを潜在的により頑健にする。
少なくとも一実施例では、上述したオプティマイザは、探索と活用のバランスを取るために使用される分布形成ハイパーパラメータを利用する。少なくとも一実施例では、様々な実施例は、以下のものなどの追加ハイパーパラメータの組合せを使用してもよい。
T:更新ごとにアルゴリズムが待機できる時間ステップを表すことができる
K:同時発生的シミュレーションの数を表すことができる
θ0:シミュレーション・パラメータに対する初期の正規分布を表すことができる
Σp:初期姿勢の摂動に対する正規分布のための対角方向の共分散行列を表すことができる
Σθ及びΣν:探索に使用される摂動の正規分布の対角方向の共分散を表すことができる
大きいKは、小さいKより概ね良好なことがあるが、注意すべきは、結果的に生じるシミュレーションが遅くなる場合があり、応用では実用的でない場合があることである。Σpは十分に大きいので、実際の初期姿勢は、初期姿勢分布に十分に表される。しかし、より大きいΣp及びθ0の共分散を用いてKを増加させて、より幅広い分布を捕捉するのに十分なほど、サンプル密度が高くなるようにしてもよい。
少なくとも一実施例では、こうしたハイパーパラメータに伴う追加的な2つのトレードオフが存在する。少なくとも一実施例では、一方のトレードオフは、θの最適化の文脈における探索と活用のトレードオフであり、他方は、θの最適化と
の最適化との間のトレードオフである。少なくとも一実施例では、Σθ又はΣνを広くすることにより、シミュレーション・パラメータのセットが「動く」スピードが速くなり、オプティマイザは、活用するよりも探索する方が多くなり得る。少なくとも一実施例では、Tを増やすことにより、オプティマイザは各シミュレーションを評価するためのサンプルをより多く得ることができるので、θの最適化が改善される。しかし、シミュレーション・パラメータの更新が遅すぎると、最小コストのシミュレーションが実世界とは十分に異なっている場合、姿勢推定のドリフトにつながることがあり、一部の実例では、潜在的に発散挙動につながる。いくつかの実例では、力摂動又は何らかのシミュレーション・パラメータが回復不能な構成につながるときに、発散挙動が生じることがあり、ここで物体は手から落ち、又はわずかな力摂動では物体を正しい姿勢に戻すことができないような姿勢に物体がもたらされる。いくつかの実例では、数少ないサンプルが発散する場合に、これが許容可能な場合がある。それらのコストは高いかもしれず、したがっていくつかの実施例では、それらは破棄され、オプティマイザの更新中に発散しないサンプルによって置換されてもよい。
様々な実施例では、定数モデルの代わりに順モデルとして、物理シミュレータを利用が利用されてもよい。物体姿勢の追跡に加えて、提案されたアルゴリズムは、シミュレーション・パラメータθをチューニングすることによって順モデルのコンテキストを識別することもでき、これは、順モデル又は観察モデルによって影響を受けないことが可能である。何らかの分布から得る手持ち物体の姿勢は、接触により課された複雑なメッシュ透過の制約が原因で、容易にサンプリングできないことから、オプティマイザは個別のサンプルに基づいてもよい。
様々な実施例では、システムは、Kuka IIWA7のロボット・アームに装着されたAllegro Handを使用したシミュレーションと実世界の両方の実験を用いて評価されてもよいが、様々な実施例では、任意のハンド、ロボット・アーム、ロボット構成要素、及び/又はそれらの変形形態が利用されてもよい。手持ち物体の操作軌道が、手姿勢追跡の遠隔操作システムで最初に収集されてもよく、提案されたアルゴリズムを収集された軌道に対してオフラインで実行することにより、姿勢推定の誤差が評価されてもよい。図9は、システムにより利用することができるアルゴリズムの実例を示す。これらの軌道は、物体が手中になく、オクルージョンされていない状態で開始し、終了してもよい。シミュレーションの実験にはグラウンド・トゥルースの物体姿勢が存在することから、アルゴリズムの性能に及ぼす異なるハイパーパラメータの影響を調査するために、シミュレーションにおいてアブレーション研究が実行されてもよい。様々な実施例では、近年のRGB-Dの、粒子フィルタ・ベースの姿勢推定アルゴリズムであるPoseRBPFを利用して、初期及び最後の物体姿勢が取得されてもよい。初期及び最後の物体姿勢は、グラウンド・トゥルースとして処理されてもよく、最後の姿勢が、システムによって予測された姿勢と比較されてもよい。
様々な実施例では、4本指、16DoFのAllegro Handが、7DoFのKuka IIWA7ロボット・アームに装着されてもよい。実世界において接触フィードバックを取得するために、SynTouch BioTacセンサ、又はその変形形態が、それぞれの指先に取り付けられてもよい。様々なセンサ及びセンサの生の電極読取り値に関連して実行される1つ又は複数のプロセスを利用して、接触力、滑り方向、及び把持安定性が予測されてもよい。訓練済みモデルを利用して、力ベクトルCtが推定されてもよい。様々な実例では、コスト関数は、滑り量の項を含んでいなくてもよい。1つ又は複数のグラフィックス・プロセッシング・ユニット、1つ又は複数の中央処理装置、及び1つ又は複数のメモリ・ユニットを利用して、コンピュータ上でシミュレーションが実行されてもよい。
様々な実施例では、モデル、テクスチャ、及び点群を有する、イェール-コロンビア-バークレイ(「YCB」)物体データセット(スパム缶、発泡ブリック、及びおもちゃのバナナ)から3つの物体が利用されてもよい。ロボット・ハンドのサイズに対する制約、及びロボット・ハンド(たとえば、Allegro Hand)がその指先で頑健な精密把持を実行できるように物体を十分軽量に保つことに対する制約に基づき、物体が選択されてもよい。
いくつかの実例では、物体ごとに、シミュレーションと実世界の両方の実験において、2つのタイプの操作軌道の2回の実演が利用されてもよい:1)指把持及び手持ち物体の回転によるピックアンドプレース、並びに2)同様であるが、ただし把持中に指先が接触を断ち、再確立する(指歩容)。これにより、シミュレーションと実世界の両方の実験で分析するための合計24個の軌道を得ることができる。両方の軌道タイプにおいて、物体は、慣性力と、押されてテーブルと接触することの両方により、並進方向と回転方向の滑りを経験してもよい。各軌道は、約1分続いてもよい。様々な実施例では、姿勢推定アルゴリズムは、おおよそ30Hzで実行されてもよく、これにより1つの軌道につき合計約2k個のフレームが生成されてもよい。
少なくとも一実施例では、システムへの入力は、人間の実演者の手の点群である。少なくとも一実施例では、PointNet++ニューラル・ネットワークに基づくニューラル・ネットワークなどのニューラル・ネットワークは、カメラに対する手姿勢並びに手の関節角度の推定に、点群をマッピングする。少なくとも一実施例では、次いで、関節付きの手モデル及び元の点群とともにこれらの推定がDARTに与えられ、このDARTが、ニューラル・ネットワークの推定を精緻化することにより追跡を実行する。一実施例では、最後に、運動学的再標的化を実行するために、Allegro Handの関節角度を見いだす最適化問題が解決され、その結果、人間の手姿勢に近い指先の姿勢が得られる。
上述したオプティマイザ(WRS、REPS、PBO)に加えて、以下の2つのベースラインも評価されてよい:開ループ(「OLP」)及びアイデンティティ(「EYE」)。OLPは、1回のシミュレーションで物体姿勢を追跡してもよい。EYEは、ノイズの多い初期姿勢のセットで初期化されてもよく、最低コストのシミュレーションの姿勢を常に取り上げてもよいが、いかなるリサンプリング又は最適化の更新も実行しなくてもよい。様々な実施例では、平均距離偏差(「ADD」)が、評価メトリックとして利用されてもよい。ADDは、グラウンド・トゥルースの姿勢と予測された姿勢に位置付けられた物体点群における対応する点と点の間の平均距離を計算してもよい。
様々な実施例では、シミュレーションにおけるアーム及びハンドは、関節角度PDコントローラによって制御されてもよく、コントローラの利得は、関節角度のステップ応答が実際のロボットのステップ応答に類似するようにチューニングされてもよい。シミュレーションをスピードアップするために、ロボットと物体の衝突メッシュが簡素化されてもよい。これは、TetWildアルゴリズムなどのアルゴリズムを適用することなど、様々なツールによって行われてもよく、このTetWildアルゴリズムは、MeshLabのQuadric Edge Collapse Decimationツール1などの他のアルゴリズムよりもさらに等辺の三角形を有するメッシュを与えることができる。合計で、各シミュレーションは、操作中に最大200回の接触を生成することができ、30HzにおいてK=40のシミュレーションが実行されてもよい。
シミュレーション実験は、様々な量の初期姿勢のノイズで実行されてもよい。3つのレベルがテストされてもよい:「低」は、1mmの並進標準偏差、及び0.01ラジアンの回転標準偏差を有してもよい。「中」は、5mm及び0.1ラジアンであってもよく、「高」は10mm、1ラジアンであってもよい。
図8は、すべてのシミュレーション軌道にわたる手持ち物体の姿勢追跡について、オプティマイザを比較した実例を示す。ADD802は、初期姿勢の誤差が増大するにつれて増大し、オプティマイザ・ベースの方法の平均ADDがより低いことがある。EYEは、オプティマイザ方法に匹敵する平均ADDを達成することがあるが、オプティマイザ方法の方が、はるかに誤差分散及び最大誤差が少ないことがある。オプティマイザ804は、経時的により良好に機能するシミュレーションに向かうシミュレーションの分布に焦点を当てることができる。中レベルのノイズの場合、REPS及びPBOは、それぞれ平均5.8mm及び5.9mmで最良ADDを達成することができる。
実施例では、図10及び図11は、探索距離(シミュレーションがどのくらい摂動されているか)、並列シミュレーションの数、並びにコスト関数において接触及び滑り検出フィードバックが使用されたかどうかを調節するハイパーパラメータに対して実行されたシミュレーションのアブレーション研究の結果の実例を示す。
アルゴリズムは、シミュレーションで収集された軌道に似た実世界の軌道について評価されてもよい。PoseRBPFを利用して、物体姿勢を、軌道の最初と最後のフレームに登録してもよい。初期姿勢の推定を使用して、シミュレーションを初期化してもよく、一方で、最後の姿勢を使用して、接触ベースの姿勢追跡アルゴリズムの精度を評価してもよい。シミュレーション実験とは異なり、実世界の実験は、PoseRBPFからの物体姿勢に対する分布からサンプリングすることにより、物体姿勢を初期化してもよく、それにより初期姿勢のサンプルは、視覚ベースの姿勢推定アルゴリズムの不確実性に対応する。
図12は、実世界実験の結果の実例を示す。ADDは、シミュレーション実験のADDよりも高いことがある。これは、異なるパラメータを有するシミュレーションよりも実世界の動力学がシミュレーションとより大きく異なっている場合があることと、実世界の観察はシミュレーションよりノイズが多くなる場合があることとの両方に起因する可能性がある。様々な実施例では、実世界のデータについておもちゃのバナナを追跡できるオプティマイザはほとんど又は全くないことがある。物体の長いモーメント・アーム、及び低摩擦係数が、その滑り挙動を正確にモデル化しづらくすることがある。これは、アルゴリズムの失敗モードとすることができ、ここですべてのシミュレーションが発散する(たとえば、バナナが間違った方向に回転する、又は手から落ちる)場合、アルゴリズムはその後のオプティマイザ更新において回復できないことがある。発泡体で達成される最良のADDは、PBOによる14.1mmとすることができ、スパムはREPSによる12.2mmとすることができる。
少なくとも一実施例では、接触フィードバック及びGPU加速化ロボット・シミュレーションによって、操作中に手持ち物体の姿勢を追跡するためのサンプル・ベースの最適化アルゴリズムが開発される。少なくとも一実施例では、並列シミュレーションは、実世界についての多数の原理を同時発生的に維持し、複雑な接触動力学によって生じることがある物体姿勢の変化をモデル化する。少なくとも一実施例では、最適化アルゴリズムは、物体姿勢の追跡中にシミュレーション・パラメータをチューニングして、追跡性能をさらに向上させる。様々な実施例では、実世界の接触検知は、視覚をループにおいて利用することにより改善されることが可能である。
図13は、コンピュータ・システムによって実行された結果、触覚力センサを備えるロボット・ハンドによって操作されている物体の姿勢を判定するプロセスの実例を示す。少なくとも一実施例は、1つ又は複数のプロセッサを有するコンピュータ・システムは、実行された結果、図13に示し以下で説明する動作をコンピュータ・システムに実行させる、コンピュータ可読メモリに記憶された実行可能命令を実行する。
少なくとも一実施例では、ブロック1302において、コンピュータ・システムは、物体を操作するために使用されているロボット・ハンドの1つ又は複数の触覚センサから触覚情報を取得する。少なくとも一実施例では、触覚センサは、摩擦コーティングを備えるBioTacセンサである。少なくとも一実施例では、触覚センサのデータは、触覚センサの表面にわたって分布する力を表す力データの2次元アレイである。
少なくとも一実施例では、ブロック1304において、コンピュータ・システムは、ロボットによって実行される操作をシミュレーションするシミュレーションのセットを生成し、シミュレーションごとに、シミュレーション触覚センサ情報のセットを決定する1306。少なくとも一実施例では、各シミュレーションは、物体について異なる姿勢を使用する。少なくとも一実施例では、物体の推定される姿勢が、物体の1つ又は複数の画像から取得される。
少なくとも一実施例では、ブロック1308において、コンピュータ・システムは、実世界で測定された触覚センサ情報と、シミュレーションにおいて決定された触覚情報との差異に少なくとも部分的に基づき、シミュレーションごとのコスト値を決定する。コストは、一実施例において上述したように決定されてもよい。シミュレーションごとに決定されたコストに少なくとも部分的に基づき、実世界の観察に最もよく一致するシミュレーションが識別される1310。少なくとも一実施例では、識別されたシミュレーションにおける物体の姿勢が、実世界1312における物体の姿勢と決定される1312。
少なくとも一実施例では、手持ち物体が操作されるタスクを実行するときに、この姿勢を使用することができる。たとえば、ロボットがナットをねじ切りボルトに位置付けることができるように、手持ちナットの姿勢を判定することができる。別の実例では、ロボット・ハンドによって解放されたときに物体が直立し安定するように物体を水平面に設定するとき、手持ち物体の姿勢を使用することができる。
推論及び訓練の論理
図14Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理1415を示す。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて以下に提供される。
少なくとも一実施例では、推論及び/又は訓練論理1415は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ1401を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理1415は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1401を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1401には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ1401は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ1401の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1401の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1401は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1401が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1415は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ1405を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1405は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理1415は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1405を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1405には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、そのコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ1405の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1405の任意の部分は、1つ又は複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1405は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1405が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1401と、コード及び/又はデータ・ストレージ1405は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1401と、コード及び/又はデータ・ストレージ1405は、同じストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1401と、コード及び/又はデータ・ストレージ1405は、部分的に同じストレージ構造で、部分的に別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1401と、コード及び/又はデータ・ストレージ1405との任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1415は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は算術演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)1410を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ1420に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ1401、並びに/又はコード及び/若しくはデータ・ストレージ1405に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ1420に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU1410によって実行される線形代数計算及び又は行列ベースの計算に従って生成され、ここでコード及び/又はデータ・ストレージ1405及び/又はデータ1401に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ1405、又はコード及び/若しくはデータ・ストレージ1401、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
少なくとも一実施例では、ALU1410は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU1410は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU1410は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1401、コード及び/又はデータ・ストレージ1405、並びにアクティブ化ストレージ1420は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ1420の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
少なくとも一実施例では、アクティブ化ストレージ1420は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ1420は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ1420が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。少なくとも一実施例では、図14Aに示す推論及び/又は訓練論理1415は、グーグルのTensorflow(登録商標)処理ユニット、Graphcore(商標)の推論処理ユニット(IPU)、又はIntel CorpのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用されてもよい。少なくとも一実施例では、図14Aに示す推論及び/又は訓練論理1415は、中央処理装置(「CPU」)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)などの他のハードウェアと併せて使用されてもよい。
図14Bは、少なくとも一実施例様々による、推論及び/又は訓練論理1415を示す図である。少なくとも一実施例では、推論及び/又は訓練論理1415は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図14Bに示す推論及び/又は訓練論理1415は、グーグルからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はIntel CorpからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図14Bに示す推論及び/又は訓練論理1415は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理1415は、限定することなく、コード及び/又はデータ・ストレージ1401、並びにコード及び/又はデータ・ストレージ1405を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図14Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ1401並びにコード及び/又はデータ・ストレージ1405のそれぞれは、それぞれ計算ハードウェア1402及び計算ハードウェア1406などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア1402及び計算ハードウェア1406のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ1401並びにコード及び/又はデータ・ストレージ1405に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ1420に記憶される。
少なくとも一実施例では、コード並びに/又はデータ・ストレージ1401及び1405のそれぞれ、並びに対応する計算ハードウェア1402及び1406は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ1401並びに計算ハードウェア1402との1つの「ストレージ/計算の対1401/1402」から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ1405並びに計算ハードウェア1406との「ストレージ/計算の対1405/1406」への入力として提供される。少なくとも一実施例では、ストレージ/計算の対1401/1402、及び1405/1406は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対1401/1402、及び1405/1406の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理1415に含まれてもよい。
ニューラル・ネットワークの訓練及び導入
図15は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク1506が、訓練データセット1502を使用して訓練される。少なくとも一実施例では、訓練フレームワーク1504は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク1504は、Tensorflow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク1504は、未訓練ニューラル・ネットワーク1506を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク1508を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1506は教師あり学習を使用して訓練され、ここで訓練データセット1502は、入力に対する所望の出力と対になった入力を含み、又は訓練データセット1502は、既知の出力を有する入力を含み、ニューラル・ネットワーク1506の出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク1506は教師ありのやり方で訓練され、訓練データセット1502からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワーク1506を通って逆伝播される。少なくとも一実施例では、訓練フレームワーク1504は、未訓練ニューラル・ネットワーク1506を制御する重みを調節する。少なくとも一実施例では、訓練フレームワーク1504は、未訓練ニューラル・ネットワーク1506が、新規データ1512などの既知の入力データに基づき、結果1514などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク1508などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワーク1504は、未訓練ニューラル・ネットワーク1506を繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワーク1506の出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワーク1504は、未訓練ニューラル・ネットワーク1506が所望の精度に到達するまで未訓練ニューラル・ネットワーク1506を訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワーク1508を、任意の数の機械学習動作を実施するように導入することができる。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1506は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク1506は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データセット1502は、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク1506は、訓練データセット1502内でグループ化を学習することができ、個々の入力が、未訓練データセット1502にどのように関係しているかを判定することができる。少なくとも一実施例では、教師なし訓練を使用して、自己組織化マップを生成することができ、自己組織化マップは、新規データ1512の次元を低減するのに有用な動作を実行することができる訓練済みニューラル・ネットワーク1508のタイプである。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データセット1512の通常のパターンから逸脱した、新規データセット1512内のデータ点を識別できるようにする。
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データセット1502に混在している技法である。少なくとも一実施例では、訓練フレームワーク1504を使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク1508は、初期訓練中にネットワーク内に教え込まれた知識を忘れることなく、新規データ1512に適合できるようになる。
データ・センタ
図16は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1600を示す。少なくとも一実施例では、データ・センタ1600は、データ・センタ・インフラストラクチャ層1610、フレームワーク層1620、ソフトウェア層1630、及びアプリケーション層1640を含む。
図16に示すように、少なくとも一実施例では、データ・センタ・インフラストラクチャ層1610は、リソース・オーケストレータ1612と、グループ化済みコンピューティング・リソース1614と、ノード・コンピューティング・リソース(「ノードC.R.」)1616(1)~1616(N)とを含んでもよく、ここで「N」は任意の正の整数を表す。少なくとも一実施例では、ノードC.R.1616(1)~1616(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1616(1)~1616(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
少なくとも一実施例では、グループ化済みコンピューティング・リソース1614は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース1614内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
少なくとも一実施例では、リソース・オーケストレータ1612は、1つ又は複数のノードC.R.1616(1)~1616(N)及び/若しくはグループ化済みコンピューティング・リソース1614を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1612は、データ・センタ1600用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
図16に示す少なくとも一実施例では、フレームワーク層1620は、ジョブ・スケジューラ1632、構成マネージャ1634、リソース・マネージャ1636、及び分配ファイル・システム1638を含む。少なくとも一実施例では、フレームワーク層1620は、ソフトウェア層1630のソフトウェア1632、及び/又はアプリケーション層1640の1つ若しくは複数のアプリケーション1642をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア1632又はアプリケーション1642はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1620は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム1638を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1632は、データ・センタ1600の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1634は、ソフトウェア層1630、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム1638を含むフレームワーク層1620などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1636は、分配ファイル・システム1638及びジョブ・スケジューラ1632をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1610にあるグループ化済みコンピューティング・リソース1614を含んでもよい。少なくとも一実施例では、リソース・マネージャ1636は、リソース・オーケストレータ1612と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
少なくとも一実施例では、ソフトウェア層1630に含まれるソフトウェア1632は、ノードC.R.1616(1)~1616(N)、グループ化済みコンピューティング・リソース1614、及び/又はフレームワーク層1620の分配ファイル・システム1638のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
少なくとも一実施例では、アプリケーション層1640に含まれるアプリケーション1642は、ノードC.R.1616(1)~1616(N)、グループ化済みコンピューティング・リソース1614、及び/又はフレームワーク層1620の分配ファイル・システム1638のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、TensorFlow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
少なくとも一実施例では、構成マネージャ1634、リソース・マネージャ1636、及びリソース・オーケストレータ1612のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実施してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1600のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
少なくとも一実施例では、データ・センタ1600は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ1600に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ1600に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
推論及び/又は訓練論理1415を使用して、1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作が実行される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図16のシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。たとえば、生成ネットワーク又は評価ネットワークは、図14~図16に説明する通りに構築されてもよい。
自律車両
図17Aは、少なくとも一実施例による自律車両1700の例を示す。少なくとも一実施例では、自律車両1700(或いは、本明細書において「車両1700」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1700は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1700は、航空機、ロボット車両、又は他の種類の車両であってもよい。
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「NHTSA」:National Highway Traffic Safety Administration)、及び自動車技術者協会(「SAE」:Society of Automotive Engineers)の「自動車用運転自動化システムのレベル分類及び定義(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つ又は複数の実施例では、車両1700は、自律運転レベルのレベル1~レベル5のうちの1つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両1700は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であってもよい。
少なくとも一実施例では、車両1700は、限定することなく、シャシ、車両本体、ホイール(2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両1700は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別のタイプの推進システムなどの推進システム1750を含んでもよい。少なくとも一実施例では、推進システム1750は、車両1700のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両1700の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム1750は、スロットル/アクセル1752からの信号を受信したことに応答して、制御されてもよい。
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム1754は、推進システム1750が動作しているときに(たとえば、車両が動いているときに)車両1700を(たとえば所望の経路又はルートに沿って)操縦するために使用される。少なくとも一実施例では、操縦システム1754は、操縦アクチュエータ1756から信号を受信してもよい。ハンドルは、完全自動化(レベル5)の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ1748及び/又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1746が使用されてもよい。
少なくとも一実施例では、1つ又は複数のシステム・オン・チップ(「SoC」:system on chip)(図17Aには示さず)及び/若しくはグラフィックス・プロセッシング・ユニット(「GPU」)を限定することなく含んでもよいコントローラ1736は、車両1700の1つ又は複数の構成要素及び/若しくはシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも一実施例では、コントローラ1736は、ブレーキ・アクチュエータ1748を介して車両ブレーキを動作させるための信号、操縦アクチュエータ1756を介して操縦システム1754を動作させるための信号、スロットル/アクセル1752を介して推進システム1750を動作させるための信号を送信してもよい。コントローラ1736は、自律運転を可能にし、且つ/又は運転車両1700において人間のドライバを支援するために、センサ信号を処理し、動作コマンド(たとえばコマンドを表す信号)を出力する1つ又は複数の搭載(たとえば一体型の)コンピューティング・デバイス(たとえば、スーパーコンピュータ)を含んでもよい。少なくとも一実施例では、コントローラ1736は、自律運転機能のための第1のコントローラ1736、機能的安全機能のための第2のコントローラ1736、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ1736、インフォテイメント機能のための第4のコントローラ1736、緊急事態における冗長性のための第5のコントローラ1736、及び/又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラ1736が、上記機能性のうちの2つ以上に対処してもよく、2つ以上のコントローラ1736が、単一の機能性に対処してもよく、且つ/又はこれらの何らかの組合せであってもよい。
少なくとも一実施例では、コントローラ1736は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して、車両1700の1つ又は複数の構成要素及び/若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム(「GNSS」:global navigation satellite system)センサ1758(たとえば、全地球測位システム・センサ)、RADARセンサ1760、超音波センサ1762、LIDARセンサ1764、慣性計測装置(「IMU」:inertial measurement unit)センサ1766(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1796、ステレオ・カメラ1768、広角カメラ1770(たとえば、魚眼カメラ)、赤外線カメラ1772、周囲カメラ1774(たとえば、360度カメラ)、長距離カメラ(図17Aには示さず)、中距離カメラ(図17Aには示さず)、(たとえば、車両1700のスピードを計測するための)スピード・センサ1744、振動センサ1742、操縦センサ1740、(たとえば、ブレーキ・センサ・システム1746の一部分としての)ブレーキ・センサ、及び/又は他のタイプのセンサから、受信されてもよい。
少なくとも一実施例では、コントローラ1736のうちの1つ又は複数は、車両1700の計器クラスタ1732からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」:human-machine interface)ディスプレイ1734、可聴アナンシエータ、拡声器を介して、且つ/又は車両1700の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、ハイ・デフィニション・マップ(図17Aには示さず)、ロケーション・データ(たとえば、地図上などの車両1700のロケーション)、方向、他車両のロケーション(たとえば、占有グリッド)、コントローラ1736が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、HMIディスプレイ1734は、1つ若しくは複数の物体(たとえば、道路標識、警告標識、信号の変化など)の存在についての情報、及び/又は車両が行った、行っている、又はこれから行う運転操作についての情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示してもよい。
少なくとも一実施例では、車両1700はさらにネットワーク・インターフェース1724を含み、このネットワーク・インターフェースは、1つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ1726及び/又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース1724は、ロング・ターム・エボリューション(「LTE」:Long-Term Evolution)、広帯域符号分割多元接続(「WCDMA(登録商標)」:Wideband Code Division Multiple Access)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」:Universal Mobile Telecommunications System)、グローバル・システム・フォー・モバイル・コミュニケーションズ(「GSM」:Global System for Mobile communication)、IMT-CDMAマルチ・キャリア(「CDMA2000」)などを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ1726は、Bluetooth、Bluetooth Low Energy (「LE」:Low Energy)、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力広域ネットワーク(「LPWAN」:low power wide-area network)を使用して、環境内の物体同士間(たとえば車両、モバイル・デバイスなど)での通信を可能にしてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図17Aのシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボットは自律車両であってもよく、評価及び生成のネットワークは、自律車両のコンピュータ・システムを使用して実施されてもよい。
図17Bは、少なくとも一実施例による図17Aの自律車両1700についてカメラのロケーション及び視野の例を示す。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び/又は代替のカメラが含まれてもよく、且つ/又はカメラが車両1700の異なるロケーションに位置付けられてもよい。
少なくとも一実施例では、カメラのカメラ・タイプは、車両1700の構成要素及び/又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。カメラは、自動車安全性要求レベル(「ASIL」:automotive safety integrity level)B及び/又は別のASILにおいて動作してもよい。少なくとも一実施例では、カメラ・タイプは、実施例に応じて、毎秒60フレーム(fps:frames per second)、1220fps、240fpsなど、任意の画像捕捉率に対応可能であってもよい。少なくとも一実施例では、カメラは、ロール・シャッタ、グローバル・シャッタ、別のタイプのシャッタ、又はこれらの組合せを使用することが可能であってもよい。少なくとも一実施例では、カラー・フィルタ・アレイは、赤色、クリア、クリア、クリア(「RCCC」:red clear clear clear)のカラー・フィルタ・アレイ、赤色、クリア、クリア、青色(「RCCB:red clear clear blue」)のカラー・フィルタ・アレイ、赤色、青色、緑色、クリア(「RBGC」:red blue green clear)のカラー・フィルタ・アレイ、Foveon X3のカラー・フィルタ・アレイ、ベイヤー・センサ(RGGB)のカラー・フィルタ・アレイ、モノクロ・センサのカラー・フィルタ・アレイ、及び/又は別のタイプのカラー・フィルタ・アレイを含んでもよい。少なくとも一実施例では、光感度を上げるために、RCCC、RCCB、及び/又はRBGCのカラー・フィルタ・アレイを有するカメラなど、クリア・ピクセル・カメラが使用されてもよい。
少なくとも一実施例では、カメラのうちの1つ又は複数を使用して、先進ドライバ支援システム(「ADAS」:advanced driver assistance systems)機能が(たとえば、冗長設計又はフェイル・セーフ設計の一部として)実行されてもよい。たとえば、少なくとも一実施例では、多機能モノ・カメラが設置されて、車線逸脱警告、交通標識支援、及びインテリジェント・ヘッドライト制御を含む機能が提供されてもよい。少なくとも一実施例では、カメラのうちの1つ又は複数(たとえばすべてのカメラ)は、画像データ(たとえばビデオ)の記録と提供を同時に行ってもよい。
少なくとも一実施例では、カメラのうちの1つ又は複数は、カメラの画像データ捕捉性能を妨げる恐れのある迷光及び車内部からの反射(たとえば、ダッシュボードからフロントガラスに反射される反射)をなくすために、カスタム設計の(3次元(「3D」:three-dimensional)印刷された)アセンブリなどの取付けアセンブリに取り付けられてもよい。ドアミラー取付けアセンブリを参照すると、少なくとも一実施例では、ドアミラー・アセンブリは、カメラ取付けプレートがドアミラーの形の合うように、カスタムで3D印刷されてもよい。少なくとも一実施例では、カメラは、ドアミラーと一体であってもよい。サイド・ビュー・カメラについて、少なくとも一実施例では、カメラはこの場合もキャビンの各角にある4本のピラーに一体化されてもよい。
少なくとも一実施例では、車両1700前方の環境の一部分を含む視野を有するカメラ(たとえば正面カメラ)は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ1736及び/又は制御SoCのうちの1つ又は複数とともに使用されて、占有グリッドの生成及び/又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、LIDARと同じADAS機能のうちの多くが実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告(「LDW」:Lane Departure Warnings)、自律クルーズ・コントロール(「ACC」:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を限定することなく含むADASの機能及びシステムのために使用されてもよい。
少なくとも一実施例では、たとえばCMOS:complementary metal oxide semiconductor(「相補型金属酸化膜半導体」)カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体(たとえば歩行者、クロス・トラフィック、又は自転車)を感知するために、広角カメラ1770が使用されてもよい。図17Bには1つの広角カメラ1770しか示していないが、他の実施例では、車両1700には(ゼロを含む)任意の数の広角カメラが存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ1798(たとえば、長距離ビューのステレオ・カメラの対)が使用されてもよい。少なくとも一実施例では、長距離カメラ1798はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
少なくとも一実施例では、任意の数のステレオ・カメラ1768は、正面構成にも含まれてよい。少なくとも一実施例では、1つ又は複数のステレオ・カメラ1768は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」:Controller Area Network)又はイーサネット(登録商標)・インターフェースを単一チップ上に有するプログラム可能論理(「FPGA」)及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両1700の環境の3Dマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ1768のうちの1つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両1700からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる2つのカメラ・レンズ(左右に1つずつ)及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ1768が使用されてもよい。
少なくとも一実施例では、車両1700の側方の環境の一部分を含む視野を有するカメラ(たとえば、サイド・ビュー・カメラ)が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ1774(たとえば図17Bに示すように4つの周囲カメラ1774)を、車両1700に配置することができる。周囲カメラ1774は、限定することなく、任意の数及び組合せの広角カメラ1770、魚眼カメラ、及び/又は360度カメラなどを含んでもよい。たとえば、少なくとも一実施例では、4つの魚眼カメラが、車両1700の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両1700は、3つの周囲カメラ1774(たとえば、左、右、及び後方)を使用してもよく、第4の周囲カメラとして、1つ又は複数の他のカメラ(たとえば正面カメラ)を活用してもよい。
少なくとも一実施例では、車両1700後方の環境の一部分を含む視野を有するカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ(たとえば、長距離カメラ1798、及び/又は中距離カメラ1776、ステレオ・カメラ1768)、赤外線カメラ1772など)を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図17Bのシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボットは自律車両であってもよく、評価及び生成のネットワークは、自律車両のコンピュータ・システムを使用して実施されてもよい。少なくとも一実施例では、把持されることになる物体の点群を捕捉するために使用される深度カメラは、自律車両のカメラ、ソナー、レーダ、又はライダーである。
図17Cは、少なくとも一実施例による図17Aの自律車両1700の例示的システム・アーキテクチャを示すブロック図である。少なくとも一実施例では、図17Cの車両1700の構成要素、特徴、及びシステムのそれぞれは、バス1702を介して接続されるものとして示される。少なくとも一実施例では、バス1702は、限定することなく、CANデータ・インターフェース(或いは、本明細書において(CANバス)と呼ばれる)を含んでもよい。少なくとも一実施例では、CANは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両1700の様々な特徴及び機能の制御を補助するために使用される車両1700内部のネットワークであってもよい。少なくとも一実施例では、バス1702は、それぞれが独自の一意の識別子(たとえばCAN ID)をもつ数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス1702は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」:revolutions per minute)、ボタン位置、及び/又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス1702は、ASILのBに準拠したCANバスであってもよい。
少なくとも一実施例では、CANに加えて、又はその代わりに、FlexRay及び/又はEthernet(登録商標)が使用されてもよい。少なくとも一実施例では、バス1702を形成する任意の数のバスが存在してもよく、これには、限定することなく、ゼロ以上のCANバス、ゼロ以上のFlexRayバス、ゼロ以上のEthernet(登録商標)バス、及び/又は他のプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、2つ以上のバス1702を使用して異なる機能が実行されてもよく、且つ/又はそれらを使用して冗長性が与えられてもよい。たとえば、第1のバス1702が衝突回避機能のために使用され、第2のバス1702が作動制御のために使用されてもよい。少なくとも一実施例では、各バス1702は、車両1700の構成要素のいずれかと通信してもよく、2つ以上のバス1702が同じ構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ(「SoC」)1704のそれぞれ、コントローラ1736のそれぞれ、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1700のセンサからの入力)にアクセス可能であってもよく、CANバスなどの共通のバスに接続されてもよい。
少なくとも一実施例では、車両1700は、図17Aに関して本明細書に記載するものなど、1つ又は複数のコントローラ1736を含んでもよい。コントローラ1736は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ1736は、車両1700の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両1700、車両1700の人工知能、及び/又は車両1700のインフォテイメントなどに使用されてもよい。
少なくとも一実施例では、車両1700は、任意の数のSoC1704を含んでもよい。SoC1704のそれぞれは、限定することなく、中央処理装置(「CPU」)1706、グラフィックス・プロセッシング・ユニット(「GPU」)1708、プロセッサ1710、キャッシュ1712、アクセラレータ1714、データ・ストア1716、及び/又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両1700を様々なプラットフォーム及びシステムにおいて制御するために、SoC1704が使用されてもよい。たとえば、少なくとも一実施例では、SoC1704は、1つ又は複数のサーバ(図17Cには示さず)からネットワーク・インターフェース1724を介して地図のリフレッシュ及び/又は更新を得ることができるハイ・デフィニション(「HD」:High Definition)マップ1722を有するシステム(たとえば車両1700のシステム)に組み込まれてもよい。
少なくとも一実施例では、CPU1706は、CPUクラスタ、又はCPUコンプレックス(或いは本明細書において「CCPLEX」と呼ばれる)を含んでもよい。少なくとも一実施例では、CPU1706は、複数のコア及び/又はレベル2(「L2」)キャッシュを含んでもよい。たとえば、少なくとも一実施例では、CPU1706は、コヒーレントなマルチプロセッサ構成において8つのコアを含んでもよい。少なくとも一実施例では、CPU1706は、4つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のL2キャッシュ(たとえば、2MBのL2キャッシュ)を有する。少なくとも一実施例では、CPU1706(たとえば、CCPLEX)は、CPU1706のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
少なくとも一実施例では、CPU1706のうちの1つ又は複数は、電力管理機能を実施してもよく、この機能は限定することなく、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる;割込み待ち(「WFI」:Wait for Interrupt)/イベント待ち(「WFE」:Wait for Event)命令の実行に起因してコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる;各コアを独立して電力ゲート制御することができる;すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる;且つ/又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、CPU1706はさらに、電力状態を管理するための拡張アルゴリズムを実施してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXが入るべき最良の電力状態を、ハードウェア/マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
少なくとも一実施例では、GPU1708は、統合されたGPU(或いは、本明細書において「iGPU」と呼ばれる)を含んでもよい。少なくとも一実施例では、GPU1708は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、GPU1708は、少なくとも一実施例では、拡張テンソル命令セットを使用してもよい。一実施例では、GPU1708は、1つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば少なくとも96KBのストレージ容量を有するL1キャッシュ)を含んでもよく、ストリーミング・マイクロプロセッサのうちの2つ以上は、L2キャッシュ(たとえば、512KBのストレージ容量を有するL2キャッシュ)を共有してもよい。少なくとも一実施例では、GPU1708は、少なくとも8つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、GPU1708は、コンピュート・アプリケーション・プログラミング・インターフェース(API:application programming interface)を使用してもよい。少なくとも一実施例では、GPU1708は、1つ又は複数の並列なコンピューティング・プラットフォーム、及び/又はプログラミング・モジュール(たとえば、NVIDIAのCUDAモデル)を使用してもよい。
少なくとも一実施例では、GPU1708のうちの1つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、一実施例では、GPU1708は、フィン電界効果トランジスタ(「FinFET」:Fin field-effect transistor)上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく64個のPF32コアと、32個のPF64コアを、4つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習の行列演算用の2つの混合精度のNVIDIA TENSORコア、レベルゼロ(「L0」)命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現する。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、L1データ・キャッシュと共有メモリ・ユニットの組合せを含んでもよい。
少なくとも一実施例では、GPU1708のうちの1つ又は複数は、高帯域幅メモリ(「HBM」:high bandwidth memory)及び/又は16GBのHBM2メモリ・サブシステムを含み、いくつかの例では、約900GB/秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、HBMメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプの5つの同期ランダム・アクセス・メモリ(「GDDR5」:graphics double data rate type five)などの同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」:synchronous graphics random-access memory)が使用されてもよい。
少なくとも一実施例では、GPU1708は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス(「ATS」:address translation services)サポートを使用して、GPU1708が、CPU1706のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、GPU1708メモリ管理ユニット(「MMU」:memory management unit)がミスに遭遇したときには、アドレス・トランスレーション要求が、CPU1706に送信されてもよい。少なくとも一実施例では、それに応答して、CPU1706は、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをGPU1708に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、CPU1706とGPU1708の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし、それにより、GPU1708のプログラミング、及びGPU1708へのアプリケーションの移植を簡単にする。
少なくとも一実施例では、GPU1708は、他のプロセッサのメモリへのGPU1708のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
少なくとも一実施例では、SoC1704のうちの1つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ1712を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ1712は、CPU1706もGPU1708も利用可能な(たとえば、CPU1706とGPU1708の両方に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも一実施例では、キャッシュ1712は、キャッシュ・コヒーレンス・プロトコルなど(たとえば、MEI、MESI、MSIなど)を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、L3キャッシュは、実施例に応じて4MB以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
少なくとも一実施例では、SoC1704のうちの1つ又は複数は、1つ又は複数のアクセラレータ1714(たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ)を含んでもよい。少なくとも一実施例では、SoC1704は、最適化されたハードウェア・アクセラレータ及び/又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、GPU1708を補完し、GPU1708のタスクのうちのいくつかをオフロードしてもよい(たとえば、他のタスクを実行できるようにGPU1708のサイクルをより多く解放してもよい)。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」:convolutional neural network)、再帰ニューラル・ネットワーク(「RNN」:recurrent neural network)など)のために、アクセラレータ1714を使用することができる。少なくとも一実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」:regional convolutional neural network)、及び(たとえば、物体検出に使用される)高速RCNN、又は他のタイプのCNNを含んでもよい。
少なくとも一実施例では、アクセラレータ1714(たとえば、ハードウェア加速クラスタ)は、深層学習アクセラレータ(「DLA」:deep learning accelerator)を含んでもよい。DLAは、限定することなく、1つ又は複数のTensor処理ユニット(「TPU」:Tensor processing units)を含んでもよく、このユニットは、深層学習アプリケーション及び推論のために、さらに毎秒10兆の演算を提供するように構成されてもよい。少なくとも一実施例では、TPUは、画像処理機能(たとえば、CNN、RCNNなど)を実行するように構成され、そのために最適化されたアクセラレータであってもよい。DLAはさらに、ニューラル・ネットワーク・タイプと浮動小数点演算の特定のセット、並びに推論のために最適化されてもよい。少なくとも一実施例では、DLAの設計により、典型的な汎用GPUよりもミリメートル当たりの性能を向上させることができ、典型的には、CPUの性能を大いに上回る。少なくとも一実施例では、TPUは、たとえば特徴と重みの両方のためのINT8、INT16、及びFP16のデータ型をサポートする単一インスタンスの畳み込み関数、並びに後処理関数を含む、いくつか関数を実行してもよい。少なくとも一実施例では、DLAは、たとえば、限定することなく、カメラ・センサからのデータを使用した物体識別及び検出のためのCNN、カメラ・センサからのデータを使用した距離推定のためのCNN、マイクロフォン1796からのデータを使用した緊急車両検出、及び識別、及び検出のためのCNN、カメラ・センサからのデータを使用した顔認識及び車両所有者識別ためのCNN、並びに/又はセキュリティ及び/若しくは安全に関するイベントのためのCNNを含め、様々な機能のうちのいずれかのための処理済み若しくは未処理のデータに対して、迅速且つ効率的にニューラル・ネットワーク、特にCNNを実行してもよい。
少なくとも一実施例では、DLAは、GPU1708の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにDLA又はGPU1708のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、CNN及び浮動小数点演算の処理をDLAに集中させ、他の機能をGPU1708及び/又は他のアクセラレータ1714に任せてもよい。
少なくとも一実施例では、アクセラレータ1714(たとえば、ハードウェア加速クラスタ)は、プログラマブル・ビジョン・アクセラレータ(「PVA」:programmable vision accelerator)を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1738、自律運転、拡張現実(「AR」:augmented reality)アプリケーション、及び/又は仮想現実(「VR」:virtual reality)アプリケーションのために、コンピュータ・ビジョン・アルゴリズムを加速するように設計及び構成されてもよい。PVAにより、性能と融通性との均衡が保たれてもよい。たとえば、少なくとも一実施例では、各PVAは、たとえば限定することなく、任意の数の縮小命令セット・コンピュータ(「RISC」:reduced instruction set computer)コア、ダイレクト・メモリ・アクセス(「DMA」:direct memory access)、及び/又は任意の数のベクトル・プロセッサを含んでもよい。
少なくとも一実施例では、RISCコアは、画像センサ(たとえば、本明細書に記載のカメラのうちのいずれかの画像センサ)、及び/又は画像信号プロセッサなどと相互作用してもよい。少なくとも一実施例では、RISCコアのそれぞれは、任意の量のメモリを含んでもよい。少なくとも一実施例では、RISCコアは、実施例に応じて複数のプロトコルのうちの任意のものを使用してもよい。少なくとも一実施例では、RISCコアは、リアルタイム・オペレーティング・システム(「RTOS」:real-time operating system)を実行してもよい。少なくとも一実施例では、RISCコアは、1つ又は複数の集積回路デバイス、特定用途向け集積回路(「ASIC」)、及び/又はメモリ・デバイスを使用して実施されてもよい。たとえば、少なくとも一実施例では、RISCコアは、命令キャッシュ及び/又は密結合RAMを含むことができる。
少なくとも一実施例では、DMAは、PVAの構成要素がCPU1706とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、DMAは、多次元アドレッシング、及び/又はサーキュラ・アドレッシングを含むがこれらに限定されない、PVAに最適化を提供するために使用される任意の数の特徴をサポートしてもよい。少なくとも一実施例では、DMAは、6つ以上のアドレッシング次元までをサポートしてもよく、これには、限定することなく、ブロック幅、ブロック高さ、ブロック深度、水平ブロック・ステッピング、垂直ブロック・ステッピング、及び/又は深度ステッピングが含まれてもよい。
少なくとも一実施例では、ベクトル・プロセッサは、コンピュータ・ビジョン・アルゴリズムのためのプログラミングを効率的でフレキシブルに実行するように設計されてもよいプログラム可能なプロセッサとすることができ、信号処理機能を提供する。少なくとも一実施例では、PVAは、PVAコアと、2つのベクトル処理サブシステム・パーティションを含んでもよい。少なくとも一実施例では、PVAコアは、プロセッサ・サブシステム、DMAエンジン(たとえば2つのDMAエンジン)、及び/又は他の周辺装置を含んでもよい。少なくとも一実施例では、ベクトル処理サブシステムは、PVAの一次処理エンジンとして動作してもよく、ベクトル処理ユニット(「VPU」:vector processing unit)、命令キャッシュ、及び/又はベクトル・メモリ(たとえば、「VMEM」)を含んでもよい。少なくとも一実施例では、VPUは、たとえば単一命令複数データ(「SIMD」:single instruction, multiple data)、超長命令語(「VLIW」:very long instruction word)のデジタル信号プロセッサなどのデジタル信号プロセッサを含んでもよい。少なくとも一実施例では、SIMDとVLIWの組合せによって、スループット及びスピードが改善されてもよい。
少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、命令キャッシュを含んでもよく、専用のメモリに結合されてもよい。その結果、少なくとも一実施例では、ベクトル・プロセッサのそれぞれは、他のベクトル・プロセッサとは無関係に実行されるように構成されてもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、データ並列処理を用いるように構成されてもよい。たとえば、少なくとも一実施例では、単一のPVAに含まれる複数のベクトル・プロセッサは、同じコンピュータ・ビジョン・アルゴリズムを画像の異なる領域上で実行してもよい。少なくとも一実施例では、特定のPVAに含まれるベクトル・プロセッサは、異なるコンピュータ・ビジョン・アルゴリズムを同じ画像上で同時に実行してもよく、又はさらには、異なるアルゴリズムを連続した画像上で、若しくは画像の部分上で実行してもよい。少なくとも一実施例では、とりわけ、任意の数のPVAがハードウェア加速クラスタに含まれてもよく、任意の数のベクトル・プロセッサがPVAのそれぞれに含まれてもよい。少なくとも一実施例では、PVAは、システムの全体的な安全性を強化するために、追加のエラー訂正コード(「ECC」:Error Correction Code)メモリを含んでもよい。
少なくとも一実施例では、アクセラレータ1714は(たとえば、ハードウェア加速クラスタ)、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ(「SRAM」)を含み、アクセラレータ1714のための高帯域幅、低レイテンシのSRAMを提供してもよい。少なくとも一実施例では、オン・チップ・メモリは、たとえば限定することなく、8つのフィールド設定可能なメモリ・ブロックから成る少なくとも4MBのSRAMを含んでもよく、これは、PVAからもDLAからもアクセス可能であってもよい。少なくとも一実施例では、メモリ・ブロックの各対は、アドバンスト・ペリフェラル・バス(「APB」:advanced peripheral bus)インターフェース、構成回路、コントローラ、及びマルチプレクサを含んでもよい。少なくとも一実施例では、任意のタイプのメモリが使用されてもよい。少なくとも一実施例では、PVA及びDLAは、メモリへの高速アクセスをPVA及びDLAに提供するバックボーンを介して、メモリにアクセスしてもよい。少なくとも一実施例では、バックボーンは、PVA及びDLAを(たとえばAPBを使用して)メモリに相互接続するオン・チップのコンピュータ・ビジョン・ネットワークを含んでもよい。
少なくとも一実施例では、オン・チップのコンピュータ・ビジョン・ネットワークは、何らかの制御信号/アドレス/データを送信する前に、PVAとDLAの両方が準備信号及び有効信号を提供することを判定するインターフェースを含んでもよい。少なくとも一実施例では、インターフェースは、制御信号/アドレス/データを送信するための別々の位相及び別々のチャネル、並びに継続的なデータ転送のためのバースト型通信を提供してもよい。少なくとも一実施例では、インターフェースは、国際標準化機構(「ISO」:Organization for Standardization)26262又は国際電気標準会議(「IEC」:International Electrotechnical Commission)61508の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
少なくとも一実施例では、SoC1704のうちの1つ又は複数は、リアルタイム・レイ・トレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアルタイム・レイ・トレーシングのハードウェア・アクセラレータを使用して、物体の(たとえば世界モデル内での)位置及び範囲が迅速且つ効率的に判定されて、RADAR信号解釈のため、音伝播合成及び/若しくは分析のため、SONARシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び/若しくは他の機能を目的としたLIDARデータとの比較のため、並びに/又は他の使用法のためのリアルタイムの可視化シミュレーションが生成されてもよい。
少なくとも一実施例では、アクセラレータ1714(たとえば、ハードウェア・アクセラレータ・クラスタ)は、自律運転のための多様な用途を有する。少なくとも一実施例では、PVAは、ADAS及び自律車両の主要な処理ステージに使用することができるプログラマブル・ビジョン・アクセラレータであってもよい。少なくとも一実施例では、PVAの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、PVAは、低レイテンシ及び低電力の予測可能なラン・タイムを必要とする半稠密(semi-dense)又は稠密な規則的計算に対して、データ・セットが小さくても良好に機能する。少なくとも一実施例では、車両1700などの自律車両では、従来のコンピュータ・ビジョン・アルゴリズムを実行するようにPVAが設計されるが、これは、それらが、物体検出及び整数数値の演算に有効だからである。
たとえば、技術の少なくとも一実施例によれば、PVAを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル3~5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造化、歩行者認識、車線検出など)をオン・ザ・フライで使用する。少なくとも一実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
少なくとも一実施例では、PVAを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、PVAは、未加工のRADARデータを(たとえば4Dの高速フーリエ変換を使用して)処理して、処理済みRADARデータを提供することができる。少なくとも一実施例では、PVAは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、DLAが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性によって、どの検出を誤検出ではなく正検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。たとえば、少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを正検出とみなしてもよい。自動緊急ブレーキ(「AEB」:automatic emergency braking)が使用される実施例では、誤検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、AEBのトリガとみなされてもよい。少なくとも一実施例では、DLAは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、(たとえば別のサブシステムから)取得した地面推定、車両1700の配向と相関しているIMUセンサ1766からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1764若しくはRADARセンサ1760)から取得した物体の3Dロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
少なくとも一実施例では、SoC1704のうちの1つ又は複数は、データ・ストア1716(たとえばメモリ)を含んでもよい。少なくとも一実施例では、データ・ストア1716は、SoC1704のオン・チップ・メモリであってもよく、このメモリは、GPU1708及び/又はDLA上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア1716の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア1712は、L2又はL3のキャッシュを備えてもよい。
少なくとも一実施例では、SoC1704のうちの1つ又は複数は、任意の数のプロセッサ1710(たとえば、組み込みプロセッサ)を含んでもよい。プロセッサ1710は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、SoC1704のブート・シーケンスの一部であってもよく、ラン・タイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、SoC1704の熱及び温度センサの管理、並びに/又はSoC1704の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実施されてもよく、SoC1704は、リング発振器を使用して、CPU1706、GPU1708、及び/又はアクセラレータ1714の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、SoC1704を低電力状態にし、且つ/又は車両1700を運転手-安全停止モードにしても(たとえば、車両1700を安全停止させる)よい。
少なくとも一実施例では、プロセッサ1710はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよい。少なくとも一実施例では、オーディオ処理エンジンは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用RAMのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
少なくとも一実施例では、プロセッサ1710はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含んでもよい。
少なくとも一実施例では、プロセッサ1710はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、2つ以上のプロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラなど)、及び/又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで2つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ1710はさらにリアルタイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアルタイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ1710はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
少なくとも一実施例では、プロセッサ1710は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実施する(たとえばマイクロプロセッサに実施された)処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ1770、周囲カメラ1774、及び/又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、SoC1704の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースを合成するために使用されてもよく、GPU1708は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、GPU1708の電源が入れられ、アクティブで3Dレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してGPU1708をオフロードしてもよい。
少なくとも一実施例では、SoC1704のうちの1つ又は複数のSoCはさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」:mobile industry processor interface)のカメラ直列インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、SoC1704のうちの1つ又は複数はさらに、入力/出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないI/O信号を受信するために使用されてもよい。
少なくとも一実施例では、SoC1704のうちの1つ又は複数はさらに、周辺装置、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。SoC1704は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続されてもよいLIDARセンサ1764、RADARセンサ1760など)からのデータ、バス1702からのデータ(たとえば、車両1700のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ1758からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、SoC1704のうちの1つ又は複数はさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のDMAエンジンを含んでもよく、ルーチンのデータ管理タスクからCPU1706を解放するために使用されてもよい。
少なくとも一実施例では、SoC1704は、自動化レベル3~5に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びADAS技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックが、深層学習ツールとともに提供される。少なくとも一実施例では、SoC1704は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率が高い。たとえば、少なくとも一実施例では、アクセラレータ1714は、CPU1706、GPU1708、及びデータ・ストア1716と組み合わされると、レベル3~5の自律車両のための高速で効率的なプラットフォームを実現することができる。
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行されてもよく、このアルゴリズムは、Cプログラミング言語などの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、CPUは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのCPUは、車両内のADASアプリケーション及び現実的なレベル3~5の自律車両において使用される複雑な物体検出アルゴリズムを、リアルタイムで実行することができない。
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ/又は順番に実行できるようにし、結果を組み合わせて、レベル3~5の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、DLA又は個別GPU(たとえば、GPU1720)上で実行しているCNNは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を、スーパーコンピュータが読み、理解できるようにする。少なくとも一実施例では、DLAはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
少なくとも一実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意:点滅時は凍結状態」から成る警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、標識自体は、第1の導入済みニューラル・ネットワーク(たとえば、訓練されてきたニューラル・ネットワーク)によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第2の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第3の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在(又は存在しないこと)が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又はGPU1708上などで同時に実行されてもよい。
少なくとも一実施例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して、車両1700の承認済みのドライバ及び/又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者が車両から離れるときには、セキュリティ・モードで車両を使用不可にしてもよい。こうして、SoC1704は、窃盗及び/又は自動車乗っ取りに対するセキュリティを実現する。
少なくとも一実施例では、緊急車両の検出及び識別のためのCNNは、マイクロフォン1796からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、SoC1704は、環境及び市街地の音を分類するとともに、視覚データを分類するためにCNNを使用する。少なくとも一実施例では、DLA上で実行されるCNNは、緊急車両が近づいてくる相対的なスピードを(たとえばドップラー効果を使用することによって)識別するように訓練される。少なくとも一実施例では、CNNはまた、GNSSセンサ1758によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、CNNは欧州のサイレンを検出しようとし、米国の場合には、北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ/又は緊急車両が通過するまで、超音波センサ1762を併用して車両をアイドリングにしてもよい。
少なくとも一実施例では、車両1700はCPU1718(たとえば、個別CPU又はdCPU)を含んでもよく、このCPUは高速相互接続(たとえば、PCIe)を介してSoC1704に結合されてもよい。少なくとも一実施例では、CPU1718は、たとえばX86プロセッサを含んでもよい。CPU1718は、たとえば、ADASセンサとSoC1704の間で潜在的に不整合な結果を調停すること、並びに/又はコントローラ1736及び/若しくはチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1730の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。
少なくとも一実施例では、車両1700はGPU1720(たとえば、個別GPU又はdGPU)を含んでもよく、このGPUは高速相互接続(たとえば、NVIDIAのNVLINKチャネル)を介してSoC1704に結合されてもよい。少なくとも一実施例では、GPU1720は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両1700のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び/又は更新するために使用されてもよい。
少なくとも一実施例では、車両1700はさらに、ネットワーク・インターフェース1724を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ1726(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコル向けの1つ又は複数のワイヤレス・アンテナ1726)を含んでもよい。少なくとも一実施例では、クラウド(たとえば、サーバ及び/又は他のネットワーク・デバイス)、他の車両、及び/又はコンピューティング・デバイス(たとえば、乗員のクライアント・デバイス)とのインターネットを介したワイヤレス接続を可能にするために、ネットワーク・インターフェース1724が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両170と他の車両との間に直接リンクが確立されてもよく、且つ/又は(たとえば、ネットワークにわたって、且つインターネットを介して)間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。少なくとも一実施例では、車車間通信リンクは、車両1700の近傍の車両(たとえば、車両1700の前方、側方、及び/又は後方の車両)についての情報を車両1700に提供してもよい。少なくとも一実施例では、前述した機能は、車両1700の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
少なくとも一実施例では、ネットワーク・インターフェース1724は、変調及び復調の機能を提供し、コントローラ1736がワイヤレス・ネットワークを介して通信できるようにするSoCを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース1724は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ/又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、LTE、WCDMA(登録商標)、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
少なくとも一実施例では、車両1700はさらにデータ・ストア1728を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ(たとえばSoC1704上にない)ストレージを含んでもよい。少なくとも一実施例では、データ・ストア1728は、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)、ビデオ・ランダム・アクセス・メモリ(「VRAM」:video random-access memory)、フラッシュ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶することができる他の構成要素及び/若しくはデバイスを含む1つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
少なくとも一実施例では、車両1700はさらに、マッピング、知覚、占有グリッド生成、及び/又は経路計画の機能を支援するためのGNSSセンサ1758(たとえば、GPS及び/又は補助GPSセンサ)を含んでもよい。少なくとも一実施例では、イーサネット(登録商標)からシリアル(たとえばRS-232)へのブリッジを有するUSBコネクタを使用するGPSをたとえば限定することなく含む任意の数のGNSSセンサ1758が使用されてもよい。
少なくとも一実施例では、車両1700はさらに、RADARセンサ1760を含んでもよい。RADARセンサ1760は、暗闇及び/又は厳しい気象条件の中でも、長距離の車両検出を行うために車両1700によって使用されてもよい。少なくとも一実施例では、RADARの機能的安全性レベルは、ASIL Bであってもよい。RADARセンサ1760は、制御のために(たとえば、RADARセンサ1760によって生成されたデータを送信するために)、また物体追跡データにアクセスするために、CAN及び/又はバス1702を使用してもよく、いくつかの例では、未加工データにアクセスするためにイーサネット(登録商標)にアクセスできる。少なくとも一実施例では、多様なタイプのRADARセンサが使用されてもよい。たとえば限定することなく、RADARセンサ1760は、前方、後方、及び側方のRADAR使用に好適であってもよい。少なくとも一実施例では、RADARセンサ1760のうちの1つ又は複数は、パルス・ドップラーRADARセンサである。
少なくとも一実施例では、RADARセンサ1760は、狭視野の長距離、広視野の短距離、側面を網羅する短距離など、異なる構成を含んでもよい。少なくとも一実施例では、長距離RADARは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離RADARシステムは、2つ以上の独立した走査によって実現される250mの範囲内などの広視野を提供してもよい。少なくとも一実施例では、RADARセンサ1760は、静的物体と移動している物体とを区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにADASシステム1738によって使用されてもよい。長距離RADARシステムに含まれるセンサ1760は、複数の(たとえば6つ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースを有するモノスタティックのマルチモードRADARを、限定することなく含んでもよい。少なくとも一実施例では、6つのアンテナがある場合、中央の4つのアンテナは、隣接した車線からの干渉が最小の状態で、より高速で車両1700の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の2つのアンテナは、視野を拡張してもよく、車両1700の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
少なくとも一実施例では、中距離RADARシステムは、一例として最大160m(前方)、又は80m(後方)の範囲、及び最大42度(前方)、又は150度(後方)の視野を含んでもよい。少なくとも一実施例では、短距離RADARシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1760を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、RADARセンサ・システムは、後方及び車両隣の死角を常に監視する2本のビームを生成してもよい。少なくとも一実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援を行うために、ADASシステム1738において使用されてもよい。
少なくとも一実施例では、車両1700はさらに、超音波センサ1762を含んでもよい。超音波センサ1762は、車両1700の前方、後方、及び/又は側方に配置されてもよく、駐車支援のため、且つ/又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ1762が使用されてもよく、異なる検出範囲(たとえば、2.5m、4m)には異なる超音波センサ1762が使用されてもよい。少なくとも一実施例では、超音波センサ1762は、機能的安全性レベルASIL Bで動作してもよい。
少なくとも一実施例では、車両1700は、LIDARセンサ1764を含んでもよい。LIDARセンサ1764は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用されてもよい。少なくとも一実施例では、LIDARセンサ1764は、機能的安全性レベルASIL Bであってもよい。少なくとも一実施例では、車両1700は、複数のLIDARセンサ1764(たとえば、2つ、4つ、6つなど)を含んでもよく、これらのセンサは、(たとえばデータをギガビット・イーサネット(登録商標)・スイッチに提供するために)イーサネット(登録商標)を使用してもよい。
少なくとも一実施例では、LIDARセンサ1764は、360度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のLIDARセンサ1764は、たとえば宣伝された範囲がおおよそ100mであり、精度が2cm~3cmであり、100Mbpsのイーサネット(登録商標)接続をサポートしてもよい。少なくとも一実施例では、1つ又は複数の非突出型LIDARセンサ1764が使用されてもよい。こうした実施例では、LIDARセンサ1764は、車両1700の前方、後方、側方、及び/又は角に組み込むことができる小さいデバイスとして実施されてもよい。少なくとも一実施例では、こうした実施例のLIDARセンサ1764は、最大120度の水平視野、及び35度の垂直視野を、低反射性の物体に対しても200mの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたLIDARセンサ1764は、45度~135度の水平視野をもたらすように構成されてもよい。
少なくとも一実施例では、3DフラッシュLIDARなどのLIDAR技術も使用されてよい。3DフラッシュLIDARは、レーザのフラッシュを送信源として使用して、車両1700の周囲を最大でおおよそ200mまで照射する。少なくとも一実施例では、フラッシュLIDARユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両1700から物体までの範囲に対応する。少なくとも一実施例では、フラッシュLIDARによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになる。少なくとも一実施例では、4つのフラッシュLIDARが、車両1700の各側面に1つ導入されてもよい。少なくとも一実施例では、3DフラッシュLIDARシステムは、ファン以外に可動部品のない半導体3D凝視アレイ(staring array)のLIDARカメラ(たとえば、非走査型LIDARデバイス)を、限定することなく含む。少なくとも一実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(目に安全な)レーザ・パルスを使用してもよく、3D範囲の点群及び位置同期された(co-registered)強度データの形で反射レーザ光を捕捉してもよい。
少なくとも一実施例では、車両はさらにIMUセンサ1766を含んでもよい。少なくとも一実施例では、IMUセンサ1766は、少なくとも一実施例では、車両1700の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、IMUセンサ1766は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のタイプのセンサを含んでもよい。6軸の用途など少なくとも一実施例では、IMUセンサ1766は限定することなく、加速度計及びジャイロスコープを含んでもよい。9軸の用途など少なくとも一実施例では、IMUセンサ1766は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
少なくとも一実施例では、IMUセンサ1766は、微小電気機械システム(「MEMS」:micro-electro-mechanical systems)慣性センサ、高感度GPS受信機、及び先進のKalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能GPS補強型慣性航法システム(「GPS/INS」:GPS-Aided Inertial Navigation System)として実施されてもよい。少なくとも一実施例では、IMUセンサ1766により、車両1700は、速度変化を直接観察しそれをGPSからIMUセンサ1766に相関させることによって、磁気センサからの入力を必要とせずに車両1700の方位を推定できるようになる。少なくとも一実施例では、IMUセンサ1766及びGNSSセンサ1758は、単一の統合ユニットに組み合わされてもよい。
少なくとも一実施例では、車両1700は、車両1700の中及び/又はその周りに設置されたマイクロフォン1796を含んでもよい。少なくとも一実施例では、マイクロフォン1796は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
少なくとも一実施例では、車両1700はさらに、ステレオ・カメラ1768、広角カメラ1770、赤外線カメラ1772、周囲カメラ1774、長距離カメラ1798、中距離カメラ1776、及び/又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両1700の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、使用されるカメラのタイプは、車両1700に応じて異なる。少なくとも一実施例では、車両1700の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、カメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両1700は6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク(「GMSL」:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートしてもよい。少なくとも一実施例では、カメラのそれぞれは、図17A及び図17Bに関して本明細書でさらに詳細に上で説明されている。
少なくとも一実施例では、車両1700はさらに、振動センサ1742を含んでもよい。振動センサ1742は、車軸など、車両1700の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、2つ以上の振動センサ1742が使用される場合には、路面の摩擦又は滑り量を判定するために振動の差が使用されてもよい(たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合)。
少なくとも一実施例では、車両1700は、ADASシステム1738を含んでもよい。ADASシステム1738は、限定することなく、いくつかの例においてSoCを含んでもよい。少なくとも一実施例では、ADASシステム1738は、限定することなく、任意の数及び任意の組合せの、自律/アダプティブ/自動のクルーズ・コントロール(「ACC」:autonomous/adaptive/automatic cruise control)システム、協調型アダプティブ・クルーズ・コントロール(「CACC」:cooperative adaptive cruise control)システム、正面衝突警告(「FCW」:forward crash warning)システム、自動緊急ブレーキ(「AEB」:automatic emergency braking)システム、車線逸脱警告(「LDW」:lane departure warning)システム、車線維持支援(「LKA」:lane keep assist)システム、死角警告(「BSW」:blind spot warning)システム、後方クロス・トラフィック警告(「RCTW」:ear cross-traffic warning)システム、衝突警告(「CW」:collision warning)システム、車線センタリング(「LC」:lane centering)システム、並びに/又は他のシステム、特徴、及び/若しくは機能を含んでもよい。
少なくとも一実施例では、ACCシステムは、RADARセンサ1760、LIDARセンサ1764、及び/又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含んでもよい。少なくとも一実施例では、縦方向ACCシステムは、車両1700の直前の車両までの距離を監視及び制御し、車両1700のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ACCシステムは、距離の維持を実行し、必要なときに車線変更するよう車両1700に通知する。少なくとも一実施例では、横方向ACCは、LC及びCWなどの他のADAS用途に関係する。
少なくとも一実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して(たとえばインターネットを介して)、他の車両からネットワーク・インターフェース1724及び/又はワイヤレス・アンテナ1726により受信されてもよい。少なくとも一実施例では、車車間(「V2V」:vehicle-to-vehicle)通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間(「I2V」:infrastructure-to-vehicle)通信リンクによって間接リンクが提供されてもよい。一般に、V2V通信の概念は、すぐ前の先行車両(たとえば、車両1700のすぐ前で同じ車線にいる車両)についての情報を提供し、I2V通信の概念は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、CACCシステムは、I2VとV2Vの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両1700の前の車両についての情報があれば、CACCシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
少なくとも一実施例では、FCWシステムは、危険物に対してドライバに忠告するように設計され、それによりドライバは修正措置を取ることができる。少なくとも一実施例では、FCWシステムは正面カメラ及び/又はRADARセンサ1760を使用し、これらは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、FCWシステムは、音、視覚的警告、振動、及び/又はクイック・ブレーキ・パルスなどの形で警告を提供してもよい。
少なくとも一実施例では、AEBシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された正面カメラ及び/又はRADARセンサ1760を使用してもよい。少なくとも一実施例では、AEBシステムが危険物を検出したとき、AEBシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、AEBシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突直前ブレーキなどの技法を含んでもよい。
少なくとも一実施例では、LDWシステムは、車両1700が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることによって意図的な車線逸脱を示す場合には、LDWシステムは作動しない。少なくとも一実施例では、LDWシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合することができる専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、LKAシステムは、LDWシステムの変形形態である。LKAシステムは、車両1700が車両1700の車線からはみ出し始めた場合に、車両1700を修正するように操縦入力又はブレーキ制御を提供する。
少なくとも一実施例では、BSWシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、BSWシステムは、視覚的、聴覚的、及び/又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、BSWシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された背面カメラ及び/又はRADARセンサ1760を使用してもよく、これらの専用のプロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
少なくとも一実施例では、RCTWシステムは、車両1700の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び/又は触覚的な通知を提供してもよい。少なくとも一実施例では、RCTWシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、AEBシステムを含む。少なくとも一実施例では、RCTWシステムは、1つ又は複数の背面RADARセンサ1760を使用してもよく、これはディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。
少なくとも一実施例では、従来のADASシステムは、誤検出結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のADASシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ(たとえば、第1のコントローラ1736)からの結果に従うか、又は二次コンピュータ(たとえば、第2のコントローラ1736)からの結果に従うかどうかを、車両1700自体が判断する。たとえば、少なくとも一実施例では、ADASシステム1738は、バックアップ・コンピュータの合理性モジュールに知覚情報を抵抗するための、バックアップ及び/又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ADASシステム1738からの出力は、監視MCUに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力とが矛盾する場合には、監視MCUが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視MCUに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視MCUは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果(たとえば、矛盾)を示す場合には、監視MCUは、コンピュータ同士を調停して、適切な結果を判定してもよい。
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータからの出力と二次コンピュータからの出力とに少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視MCUが実行するように構成されてもよい。少なくとも一実施例では、監視MCUのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがRADARベースのFCWシステムである場合、監視MCUのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのLDWシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視MCUのニューラル・ネットワークはLDWを無効にするように学習してもよい。少なくとも一実施例では、監視MCUは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なDLA又はGPUのうちの少なくとも1つを含んでもよい。少なくとも一実施例では、監視MCUは、SoC1704の構成要素を備えても、且つ/又はその構成要素として含まれてもよい。
少なくとも一実施例では、ADASシステム1738は、コンピュータ・ビジョンの従来のルールを使用してADAS機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、従来のコンピュータ・ビジョン・ルール(if-thenルール)を使用してもよく、ニューラル・ネットワークが監視MCUに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実施及び意図的な非同一性により、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)の機能によって生じる誤りに対し、システム全体の誤り耐性が高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に同じ結果を提供する場合には、監視MCUは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
少なくとも一実施例では、ADASシステム1738の出力は、一次コンピュータの知覚ブロック、及び/又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ADASシステム1738が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって誤検出のリスクを低減する独自のニューラル・ネットワークを有してもよい。
少なくとも一実施例では、車両1700はさらに、インフォテイメントSoC1730(たとえば、車両内インフォテイメント・システム(IVI):in-vehicle infotainment system)を含んでもよい。インフォテイメント・システム1730はSoCとして図示及び説明されるが、少なくとも一実施例では、SoCではなくてもよく、限定することなく2つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1730は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など)を車両1700に提供してもよい。たとえば、インフォテイメントSoC1730は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、USB及びBluetooth接続、カーピュータ、車内エンタテイメント、Wi-Fi、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ(「HUD」:heads-up display)、HMIディスプレイ1734、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/若しくはシステムを制御及び/若しくは相互作用するための)制御パネル、並びに/又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントSoC1730を使用して、ADASシステム1738からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(たとえば、視覚的及び/又は聴覚的な)情報が、車両のユーザに提供されてもよい。
少なくとも一実施例では、インフォテイメントSoC1730は、任意の量及びタイプのGPU機能を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1730は、バス1702(たとえば、CANバス、イーサネット(登録商標)など)を介して、車両1700の他のデバイス、システム、及び/又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントSoC1730は監視MCUに結合されてもよく、それにより、一次コントローラ1736(たとえば、車両1700の一次及び/又はバックアップのコンピュータ)が故障したときに、インフォテイメント・システムのGPUが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントSoC1730は、本明細書に記載するように、車両1700を運転手-安全停止モードにしてもよい。
少なくとも一実施例では、車両1700はさらに、計器クラスタ1732(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)を含んでもよい。計器クラスタ1732は、限定することなく、コントローラ、及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含んでもよい。少なくとも一実施例では、計器クラスタ1732は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、バーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計器セットを含んでもよい。いくつかの例では、インフォテイメントSoC1730と計器クラスタ1732との間で、情報が表示及び/又は共有されてもよい。少なくとも一実施例では、計器クラスタ1732は、インフォテイメントSoC1730の一部として含まれてもよく、又はその逆であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図17Cのシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボットは自律車両であってもよく、評価及び生成のネットワークは、自律車両のコンピュータ・システムを使用して実施されてもよい。
図17Dは、少なくとも一実施例による、クラウド・ベースのサーバと図17Aの自律車両1700との間で通信するためのシステム1776の図である。少なくとも一実施例では、システム1776は、限定することなく、サーバ1778、ネットワーク1790、並びに車両1700を含む任意の数及びタイプの車両を含んでもよい。サーバ1778は、限定することなく、複数のGPU1784(A)~1784(H)(本明細書ではまとめてGPU1784と呼ぶ)、PCIeスイッチ1782(A)~1782(H)(本明細書ではまとめてPCIeスイッチ1782と呼ぶ)、及び/又はCPU1780(A)~1780(B)(本明細書ではまとめてCPU1780と呼ぶ)を含んでもよい。GPU1784、CPU1780、及びPCIeスイッチ1782は、たとえば限定することなく、NVIDIAにより開発されたNVLinkインターフェース1788、及び/又はPCIe接続1786などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、GPU1784同士は、NVLink及び/又はNVSスイッチSoCを介して接続され、GPU1784とPCIeスイッチ1782は、PCIe相互接続を介して接続される。少なくとも一実施例では、8個のGPU1784、2個のCPU1780、及び4個のPCIeスイッチ1782が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ1778のそれぞれは、限定することなく、任意の数のGPU1784、CPU1780、及び/又はPCIeスイッチ1782を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ1778は、それぞれが8個、16個、32個、及び/又はそれ以上のGPU1784を含むことができる。
少なくとも一実施例では、サーバ1778は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1790を介して車両から受信してもよい。少なくとも一実施例では、サーバ1778は、ニューラル・ネットワーク1792、更新済みニューラル・ネットワーク1792及び/又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報1794を、ネットワーク1790を介して車両に送信してもよい。少なくとも一実施例では、地図情報1794の更新は、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1722に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク1792、更新済みニューラル・ネットワーク1792及び/又は地図情報1794は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び/又は経験から得られたものであってもよく、且つ/又は、データ・センタにおいて(たとえば、サーバ1778及び/又は他のサーバを使用して)実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
少なくとも一実施例では、サーバ1778を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル(たとえば、ニューラル・ネットワーク)が訓練されてもよい。訓練データは車両によって生成されてもよく、且つ/又はシミュレーションで(たとえば、ゲーム・エンジンを使用して)生成されてもよい。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には)任意の量の訓練データがタグ付けされ、且つ/又は他の前処理を受ける。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には)任意の量の訓練データはタグ付け及び/又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく(たとえば、ネットワーク1790を介して車両に送信されてもよく、且つ/又は機械学習モデルは、車両を遠隔監視するためにサーバ1778によって使用されてもよい。
少なくとも一実施例では、サーバ1778は車両からデータを受信し、リアルタイムの知的推論ができるように、最新のリアルタイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ1778は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1784によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ1778は、CPUにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
少なくとも一実施例では、サーバ1778の深層学習インフラストラクチャは、高速のリアルタイムの推論が可能であってもよく、その機能を使用して、車両1700のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び/又はその一連の画像において(たとえば、コンピュータ・ビジョン及び/又は他の機械学習の物体分類技法により)車両1700が位置特定した物体など、周期的な更新を車両1700から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両1700によって識別された物体と比較してもよく、結果が一致せず、車両1700のAIが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ1778は、車両1700のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両1700に送信してもよい。
少なくとも一実施例では、サーバ1778は、GPU1784、及び1つ又は複数のプログラム可能な推論アクセラレータ(たとえば、NVIDIAのTensorRT3)を含んでもよい。少なくとも一実施例では、GPUにより動くサーバと、推論の加速とを組み合わせることによって、リアルタイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、CPU、FPGA、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、1つ又は複数の実施例を実行するために、ハードウェア構造体1415が使用される。ハードウェア構造体1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。
コンピュータ・システム
図18は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せ1800を有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1800は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1802などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1800は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、Xeon(商標)、Itanium(登録商標)、XScale(商標)及び/又はStrongARM(商標)、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1800は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux(登録商標))、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
少なくとも一実施例では、コンピュータ・システム1800は、限定することなくプロセッサ1802を含んでもよく、このプロセッサ1802は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット1808を含んでもよい。少なくとも一実施例では、システム18は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、システム18はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ1802は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実施するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ1802は、プロセッサ・バス1810に結合されてもよく、このプロセッサ・バスは、プロセッサ1802とコンピュータ・システム1800内の他の構成要素との間でデジタル信号を送信してもよい。
少なくとも一実施例では、プロセッサ1802は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1804を含んでもよい。少なくとも一実施例では、プロセッサ1802は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1802の外部にあってもよい。他の実施例は、特定の実施形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル1806は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット1808も、プロセッサ1802にある。プロセッサ1802は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット1808は、パック命令セット1809に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット1809を、命令を実行する関連回路とともに汎用プロセッサの命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ1802のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
少なくとも一実施例では、実行ユニット1808はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム1800は、限定することなくメモリ1820を含んでもよい。少なくとも一実施例では、メモリ1820は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実施されてもよい。メモリ1820は、プロセッサ1802によって実行されてもよいデータ信号によって表される命令1819、及び/又はデータ1821を記憶してもよい。
少なくとも一実施例では、システム論理チップが、プロセッサ・バス1810及びメモリ1820に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1816を含んでもよく、プロセッサ1802は、プロセッサ・バス1810を介してMCH1816と通信してもよい。少なくとも一実施例では、MCH1816は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路1818をメモリ1820に提供してもよい。少なくとも一実施例では、MCH1816は、プロセッサ1802と、メモリ1820と、コンピュータ・システム1800の他の構成要素との間でデータ信号を導き、プロセッサ・バス1810と、メモリ1820と、システムI/O1822との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH1816は、高帯域幅メモリ経路1818を介してメモリ1820に結合されてもよく、グラフィックス/ビデオカード1812は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1814を介してMCH1816に結合されてもよい。
少なくとも一実施例では、コンピュータ・システム1800は、MCH1816をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1830に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O1822を使用してもよい。少なくとも一実施例では、ICH1830は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ1820、チップセット、及びプロセッサ1802に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ1829、ファームウェア・ハブ(「フラッシュBIOS」)1828、ワイヤレス・トランシーバ1826、データ・ストレージ1824、ユーザ入力及びキーボードのインターフェースを含むレガシーI/Oコントローラ1823、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート1827、及びネットワーク・コントローラ1834が、限定することなく含まれてもよい。データ・ストレージ1824は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
少なくとも一実施例では、図18は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図18は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図18で示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム1800の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図18のシステムにおいて使用されてもよい。
図19は、少なくとも一実施例による、プロセッサ1910を利用するための電子デバイス1900を示すブロック図である。少なくとも一実施例では、電子デバイス1900は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
少なくとも一実施例では、システム1900は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ1910を、限定することなく含んでもよい。少なくとも一実施例では、プロセッサ1910は、I°Cバス、システム・マネージメント・バス(「SMBus」:System Management Bus)、ロー・ピン・カウント(LPC:Low Pin Count)バス、シリアル・ペリフェラル・インターフェース(「SPI」:Serial Peripheral Interface)、ハイ・デフィニション・オーディオ(「HDA」:High Definition Audio)バス、シリアル・アドバンス・テクノロジー・アタッチメント(「SATA」:Serial Advance Technology Attachment)バス、ユニバーサル・シリアル・バス(「USB」)(バージョン1、2、3)、又はユニバーサル非同期レシーバ/トランスミッタ(「UART」:Universal Asynchronous Receiver/Transmitter)バスなどのバス若しくはインターフェースを使用して結合される。少なくとも一実施例では、図19は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図19は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図19に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図19の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
少なくとも一実施例では、図19は、ディスプレイ1924、タッチ画面1925、タッチ・パッド1930、近距離無線通信ユニット(「NFC」:Near Field Communications unit)1945、センサ・ハブ1940、熱センサ1946、エクスプレス・チップセット(「EC」:Express Chipset)1935、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1938、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1922、DSP1960、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ(「SSD又はHDD」)1920、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)1950、Bluetoothユニット1952、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)1956、全地球測位システム(GPS:Global Positioning System)ユニット1955、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1954、又は、たとえばLPDDR3規格に実施された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1915を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実施されてもよい。
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ1910に通信可能に結合されてもよい。少なくとも一実施例では、加速度計1941、周囲光センサ(「ALS」:Ambient Light Sensor)1942、コンパス1943、及びジャイロスコープ1944が、センサ・ハブ1940に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ1939、ファン1937、キーボード1946、及びタッチ・パッド1930が、EC1935に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ1963、ヘッドフォン1964、及びマイクロフォン(「mic」)1965が、オーディオ・ユニット(オーディオ・コーデック及びクラスDアンプ)1964に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP1960に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット1964は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)1957は、WWANユニット1956に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット1950及びBluetoothユニット1952などの構成要素、並びにWWAN1956は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実施されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図19のシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図20は、少なくとも一実施例による、コンピュータ・システム2000を示す。少なくとも一実施例では、コンピュータ・システム2000は、本開示全体を通して説明する様々なプロセス及び方法を実施するように構成される。
少なくとも一実施例では、コンピュータ・システム2000は、限定することなく、少なくとも1つの中央処理装置(「CPU」)2002を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実施された通信バス2010に接続される。少なくとも一実施例では、コンピュータ・システム2000は、メイン・メモリ2004、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実施される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとってもよいメイン・メモリ2004に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)2022は、他のシステムからデータを受信し、コンピュータ・システム2000から他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
少なくとも一実施例では、コンピュータ・システム2000は、少なくとも一実施例では、限定することなく、入力デバイス2008、パラレル処理システム2012、及びディスプレイ・デバイス2006を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実施することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス2008から受け取る。少なくとも一実施例では、上記モジュールのそれぞれを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図20のシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにコンピュータ・システムを使用して実施されてもよい。
図21は、少なくとも一実施例によるコンピュータ・システム2100を示す。少なくとも一実施例では、コンピュータ・システム2100は、限定することなく、コンピュータ2110及びUSBスティック2120を含んでもよい。少なくとも一実施例では、コンピュータ・システム2110は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリを含んでもよい。少なくとも一実施例では、コンピュータ2110は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
少なくとも一実施例では、USBスティック2120は、限定することなく、処理ユニット2130、USBインターフェース2140、及びUSBインターフェース論理2150を含む。少なくとも一実施例では、処理ユニット2130は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット2130は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理コア2130は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理コア2130は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理コア2130は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
少なくとも一実施例では、USBインターフェース2140は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース2140は、データ及び電源用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース2140は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理2150は、処理ユニット2130がUSBコネクタ2140を介してデバイス(たとえばコンピュータ2110)と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図21のシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにコンピュータ・システムを使用して実施されてもよい。
図22Aは、複数のGPU2210~2213が、高速リンク2240~2243(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ2205~2206に通信可能に結合されている例示的なアーキテクチャを示す。一実施例では、高速リンク2240~2243は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。
さらに、一実施例では、GPU2210~2213のうちの2つ以上は高速リンク2229~2230を介して相互接続され、これらは、高速リンク2240~2243に使用されたものと同じ又は異なるプロトコル/リンクを使用して実施されてもよい。同様に、マルチ・コア・プロセッサ2205~2206のうちの2つ以上は、高速リンク2228を介して接続されてもよく、この高速リンク2228は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、図22Aに示す様々なシステム構成要素間のすべての通信は、同じプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
一実施例では、各マルチ・コア・プロセッサ2205~2206は、それぞれメモリ相互接続2226~2227を介してプロセッサ・メモリ2201~2202に通信可能に結合され、各GPU2210~2213)は、それぞれGPUメモリ・相互接続2250~2253を介してGPUメモリ2220~2223に通信可能に結合される。メモリ相互接続2226~2227及び2250~2253は、同じ又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ2201~2202及びGPUメモリ2220~2223は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ2201~2202のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
本明細書に記載するように、様々なプロセッサ2205~2206及びGPU2210~2213は、それぞれ特定のメモリ2201~2202、2220~2230に物理的に結合されてもよく、同じ仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実施されてもよい。たとえば、プロセッサ・メモリ2201~2202はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ2220~2223はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよい(この例では結果的に、合計256GBのアドレス指定可能メモリが得られる)。
図22Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ2207とグラフィックス加速モジュール2246との相互接続のさらなる詳細事項を示す。グラフィックス加速モジュール2246は、高速リンク2240を介してプロセッサ2207に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。或いは、グラフィックス加速モジュール2246は、プロセッサ2207と同じパッケージ又はチップに集積されてもよい。
少なくとも一実施例では、図示しているプロセッサ2207は、複数のコア2260A~2260Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ2261A~2261Dと、1つ又は複数のキャッシュ2262A~2262Dとを有する。少なくとも一実施例では、コア2260A~2260Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。キャッシュ2262A~2262Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ2256が、キャッシュ2262A~2262Dに含まれ、コア2260A~2260Dのセットによって共有されてもよい。たとえば、プロセッサ2207の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。プロセッサ2207及びグラフィックス加速モジュール2246は、システム・メモリ2214に接続されており、このシステム・メモリは、図22Aのプロセッサ・メモリ2201~2202を含んでもよい。
様々なキャッシュ2262A~2262D、2256、及びシステム・メモリ2214に記憶されたデータ及び命令については、コヒーレンス・バス2264を介したコア間通信によって、コヒーレンスが維持される。たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス2264を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。一実施例では、キャッシュ・アクセスを監視するために、コヒーレンス・バス2264を介してキャッシュ・スヌーピング・プロトコルが実施される。
一実施例では、プロキシ回路2225が、グラフィックス加速モジュール2246をコヒーレンス・バス2264に通信可能に結合して、グラフィックス加速モジュール2246がコア2260A~2260Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、インターフェース2235は、高速リンク2240(たとえば、PCIeバス、NVLinkなど)を介してプロキシ回路2225への接続を提供し、インターフェース2237は、グラフィックス加速モジュール2246をリンク2240に接続する。
一実施形態では、アクセラレータ統合回路2236は、グラフィックス加速モジュール2246の複数のグラフィックス処理エンジン2231、2232、Nの代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。グラフィックス処理エンジン2231、2232、Nはそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。或いは、グラフィックス処理エンジン2231、2232、Nは、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール2246は、複数のグラフィックス処理エンジン2231、2232、Nを有するGPUであってもよく、又はグラフィックス処理エンジン2231、2232、Nは、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
一実施例では、アクセラレータ統合回路2236は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)2239、及びシステム・メモリ2214にアクセスするためのメモリ・アクセス・プロトコルを含む。MMU2239は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。一実施形態では、キャッシュ2238は、グラフィックス処理エンジン2231~2232、Nから効率的にアクセスできるように、コマンド及びデータを記憶することができる。一実施例では、キャッシュ2238及びグラフィックス・メモリ2233~2234、Mに記憶されたデータは、コア・キャッシュ2262A~2262D、2256、及びシステム・メモリ2214とコヒーレントに保たれる。述べたように、これは、キャッシュ2238及びメモリ2233~2234、Mの代わりにプロキシ回路2225を介して(たとえば、プロセッサ・キャッシュ2262A~2262D、2256におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ2238に送り、キャッシュ2238からのアップデートを受け取って)実現されてもよい。
レジスタ2245のセットが、グラフィックス処理エンジン2231~2232、Nによって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路2248が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路2248は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路2248は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路2248がレジスタ値を復元してもよい。一実施例では、割込み管理回路2247は、システム・デバイスから受け取った割込みを受け取り、処理する。
一実施形態では、グラフィックス処理エンジン2231からの仮想/実効アドレスは、MMU2239によってシステム・メモリ2214の実/物理アドレスにトランスレートされる。アクセラレータ統合回路2236の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール2246、及び/又は他のアクセラレータ・デバイスをサポートする。グラフィックス・アクセラレータ・モジュール2246は、プロセッサ2207上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。一実施例では、グラフィックス処理エンジン2231~2232、Nのリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
少なくとも一実施例では、アクセラレータ統合回路2236は、グラフィックス加速モジュール2246のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、アクセラレータ統合回路2236は、グラフィックス処理エンジン2231~2232の仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
グラフィックス処理エンジン2231~2232、Nのハードウェア・リソースは、ホスト・プロセッサ2207が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。アクセラレータ統合回路2236の1つの機能は、グラフィックス処理エンジン2231~2232、Nを、システムにとって独立したユニットに見えるように物理的に分離することである。
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ2233~2234、Mはそれぞれ、グラフィックス処理エンジン2231~2232、Nのそれぞれに結合される。グラフィックス・メモリ2233~2234、Mは、それぞれのグラフィックス処理エンジン2231~2232、Nによって処理される命令及びデータを記憶する。グラフィックス・メモリ2233~2234、Mは、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
一実施例では、リンク2240を介したデータ・トラフィックを低減するために、グラフィックス・メモリ2233~2234、Mに記憶されるデータが、グラフィックス処理エンジン2231~2232、Nによって最も頻繁に使用されることになるデータであるようにし、好ましくはコア2260A~2260Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用される。同様に、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン2231~2232、Nは必要としない)データを、コアのキャッシュ2262A~2262D、2256、及びシステム・メモリ2214の中に保つよう試みる。
図22Cは、アクセラレータ統合回路2236がプロセッサ2207内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン2231~2232、Nは、インターフェース2237及びインターフェース2235により、高速リンク2240を介して直接アクセラレータ統合回路2236と通信する(この場合も任意の形のバス又はインターフェース・プロトコルを利用することができる)。アクセラレータ統合回路2236は、図22Bに関して説明したのと同じ動作を実行してもよいが、コヒーレンス・バス2264及びキャッシュ2262A~2262D、2256に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。一実施例は、アクセラレータ統合回路は、(グラフィックス加速モジュールの仮想化のない)専用プロセスのプログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路2236によって制御されるプログラミング・モデルと、グラフィックス加速モジュール2246によって制御されるプログラミング・モデルとを含んでもよい。
少なくとも一実施例では、グラフィックス処理エンジン2231~2232、Nは、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン2231~2232、Nに集中させて、VM/パーティション内で仮想化を実現することができる。
少なくとも一実施例では、グラフィックス処理エンジン2231~2232、Nは、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン2231~2232、Nを仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン2231~2232、Nは、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン2231~2232、Nを仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
少なくとも一実施例では、グラフィックス加速モジュール2246又は個々のグラフィックス処理エンジン2231~2232、Nは、プロセス・ハンドルを使用して、プロセス要素を選択する。一実施例では、プロセス要素は、システム・メモリ2214に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン2231~2232、Nに登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実施固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
図22Dは、例示的なアクセラレータ統合スライス2290を示す。本明細書で使用するとき、「スライス」は、アクセラレータ統合回路2236の処理リソースの指定部分を備える。システム・メモリ2214内のアプリケーション実効アドレス空間2282は、プロセス要素2283を記憶する。少なくとも一実施例では、プロセス要素2283は、プロセッサ2207上で実行されているアプリケーション2280からのGPU呼出し2281に応答して、記憶される。プロセス要素2283は、対応するアプリケーション2280のプロセス状態を収容する。プロセス要素2283に収容されたワーク記述子(WD)2284は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD2284は、アプリケーションのアドレス空間2282におけるジョブ要求キューに対するポインタである。
グラフィックス加速モジュール2246及び/又は個々のグラフィックス処理エンジン2231~2232、Nは、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD2284をグラフィックス加速モジュール2246に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実施固有である。このモデルでは、単一のプロセスが、グラフィックス加速モジュール2246又は個々のグラフィックス処理エンジン2231を所有する。グラフィックス加速モジュール2246が単一のプロセスによって所有されるので、グラフィックス加速モジュール2246が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路2236を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路2236を初期化する。
動作時、アクセラレータ統合スライス2290内のWDフェッチ・ユニット2291は、グラフィックス加速モジュール2246の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD2284をフェッチする。図示してあるように、WD2284からのデータは、レジスタ2245に記憶され、MMU2239、割込み管理回路2247、及び/又はコンテキスト管理回路2248によって使用されてもよい。たとえば、MMU2239の一実施例は、OS仮想アドレス空間2285内のセグメント/ページ・テーブル2286にアクセスするためのセグメント/ページ・ウォーク回路を含む。割込み管理回路2247は、グラフィックス加速モジュール2246から受け取った割込みイベント2292を処理してもよい。グラフィックス動作を実行するとき、グラフィックス処理エンジン2231~2232、Nによって生成された実効アドレス2293は、MMU2239によって実アドレスにトランスレートされる。
一実施例では、レジスタ2245の同じセットが、各グラフィックス処理エンジン2231~2232、N、及び/又はグラフィックス加速モジュール2246について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス2290に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
一実施例では、各WD2284は、特定のグラフィックス加速モジュール2246及び/又はグラフィックス処理エンジン2231~2232、Nに固有のものである。WD2284は、グラフィックス処理エンジン2231~2232、Nがワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
図22Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト2299が記憶されているハイパーバイザ実アドレス空間2298を含む。ハイパーバイザ実アドレス空間2298は、オペレーティング・システム2295のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ2296を介してアクセス可能である。
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール2246を使用できるようにする。グラフィックス加速モジュール2246が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ存在する:時間スライス共有及びグラフィックス指定共有(graphics-directed shared)である。
このモデルでは、システム・ハイパーバイザ2296がグラフィックス加速モジュール2246を所有しており、その機能をすべてのオペレーティング・システム2295にとって利用可能にする。システム・ハイパーバイザ2296による仮想化をグラフィックス加速モジュール2246がサポートするために、グラフィックス加速モジュール2246は、以下のことに準拠してもよい:1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール2246が、コンテキストの保存及び復元の機構を提供しなくてはならない。2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール2246によって保証され、又はグラフィックス加速モジュール2246が、ジョブの処理をプリエンプションする機能を提供する。3)グラフィックス加速モジュール2246は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならない。
少なくとも一実施例では、アプリケーション2280は、グラフィックス加速モジュール2246のタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム2295のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュール2246のタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュール2246のタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール2246のために特にフォーマット化されており、グラフィックス加速モジュール2246のコマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール2246によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。アクセラレータ統合回路2236及びグラフィックス加速モジュール2246の実施形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。ハイパーバイザ2296は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素2283に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール2246がコンテキスト状態を保存及び復元するためのアプリケーションの実効アドレス空間2282内のエリアの実効アドレスを収容するレジスタ2245のうちの1つである。ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
システム・コールを受け取ると、オペレーティング・システム2295は、アプリケーション2280が登録済みであり、グラフィックス加速モジュール2246を使用する権限が与えられていることを検証してもよい。次いで、オペレーティング・システム2295は、表3に示す情報を伴ってハイパーバイザ2296にコールする。
ハイパーバイザ・コールを受け取ると、ハイパーバイザ2296は、オペレーティング・システム2295が登録済みであり、グラフィックス加速モジュール2246を使用する権限が与えられていることを検証する。次いでハイパーバイザ2296は、プロセス要素2283を、対応するグラフィックス加速モジュール2246のタイプのプロセス要素リンク・リストに入れる。プロセス要素は、表4に示す情報を含んでもよい。
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス2290のレジスタ2245を初期化する。
図22Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ2201~2202及びGPUメモリ2220~2223にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実施形態では、GPU2210~2213で実行される動作は、プロセッサ・メモリ2201~2202にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ2201に割り振られ、第2の部分は第2のプロセッサ・メモリ2202に割り振られ、第3の部分はGPUメモリ2220に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ2201~2202及びGPUメモリ2220~2223のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
一実施例では、MMU2239A~2239Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路2294A~2294Eは、1つ又は複数のホスト・プロセッサ(たとえば、2205)のキャッシュとGPU2210~2213のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実施して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。バイアス/コヒーレンス管理回路2294A~2294Eの複数のインスタンスが図22Fに示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ2205のMMU内に実施されてもよく、且つ/又はアクセラレータ統合回路2236内に実施されてもよい。
一実施例は、GPU付きメモリ2220~2223をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPU付きメモリ2220~2223が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ2205ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPU付きメモリ2220~2223にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU2210~2213が見る有効な書込み帯域幅を大幅に低減することある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(すなわち、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU2210~2213にある状態又はない状態で、1つ又は複数のGPU付きメモリ2220~2223の奪われたメモリ範囲(stolen memory range)において実施されてもよい。或いは、バイアス・テーブル全体が、GPU内に維持されてもよい。
少なくとも一実施例では、GPU付きメモリ2220~2223への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。第1に、GPUバイアス内での自らのページを見いだすGPU2210~2213からのローカル要求が、対応するGPUメモリ2220~2223に直接転送される。ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ2205に転送される。一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ2205からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU2210~2213に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ2205のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ2205によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。これらのページにアクセスするために、プロセッサ2205は、GPU2210からのアクセスを要求してもよく、GPU2210は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。したがって、プロセッサ2205とGPU2210との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ2205によっては要求されないようにすること、又はその逆にすることが有益である。
1つ又は複数の実施例を実行するために、ハードウェア構造体1415が使用される。ハードウェア構造体1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供され得る。
図23は、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図23は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路2300を示すブロック図である。少なくとも一実施例では、集積回路2300は、1つ又は複数のアプリケーション・プロセッサ2305(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ2310を含み、さらに、画像プロセッサ2315及び/又はビデオ・プロセッサ2320を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路2300は、USBコントローラ2325、UARTコントローラ2330、SPI/SDIOコントローラ2335、及びI.sup.2S/I.sup.2Cコントローラ2340を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路2300は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI:high-definition multimedia interface(登録商標))コントローラ2350及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース2355のうちの1つ又は複数に結合されるディスプレイ・デバイス2345を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム2360によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ2365を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン2370を含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路2300において使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図24A~図24Bは、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図24A及び図24Bは、本明細書に記載の実施例による、SoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図24Aは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ2410を示す。図24Bは、少なくとも一実施例による、1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ2440を示す。少なくとも一実施例では、図24Aのグラフィックス・プロセッサ2410は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図24Bのグラフィックス・プロセッサ2440は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ2410、2440のそれぞれは、図23のグラフィックス・プロセッサ2310の変形形態とすることができる。
少なくとも一実施例では、グラフィックス・プロセッサ2410は、頂点プロセッサ2405と、1つ又は複数のフラグメント・プロセッサ2415A~2415N(たとえば、2415A、2415B、2415C、2415D~2415N-1、及び2415N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ2410は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ2405は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ2415A~2415Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ2405は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ2415A~2415Nは、頂点プロセッサ2405によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ2415A~2415Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
少なくとも一実施例では、グラフィックス・プロセッサ2410はさらに、1つ又は複数のメモリ管理ユニット(MMU)2420A~2420B、キャッシュ2425A~2425B、及び回路相互接続2430A~2430Bを含む。少なくとも一実施例では、1つ又は複数のMMU2420A~2420Bは、頂点プロセッサ2405及び/又はフラグメント・プロセッサ2415A~2415Nを含め、グラフィックス・プロセッサ2410のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ2425A~2425Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU2420A~2420Bは、図23の1つ若しくは複数のアプリケーション・プロセッサ2305、画像プロセッサ2315、及び/又はビデオ・プロセッサ2320に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ2305~2320は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続2430A~2430Bは、グラフィックス・プロセッサ2410が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
少なくとも一実施例では、グラフィックス・プロセッサ2440は、図24Aのグラフィックス・プロセッサ2410の1つ又は複数のMMU2420A~2420B、キャッシュ2425A~2425B、及び回路相互接続2430A~2430Bを含む。少なくとも一実施例では、グラフィックス・プロセッサ2440は、1つ又は複数のシェーダ・コア2455A~2455N(たとえば、2455A、2455B、2455C、2455D、2455E、2455F~2455N-1、及び2455N)を含み、これらは統合されたシェーダ・コア・アーキテクチャを提供し、このアーキテクチャでは、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実施するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを、単一のコア、又はタイプ、又はコアが実行できる。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ2440は、1つ又は複数のシェーダ・コア2455A~2455Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ2445と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット2458とを含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路24A及び/又は24Bにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図25A~図25Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図25Aは、グラフィックス・コア2500を示し、このグラフィックス・コア2500は、少なくとも一実施例では図23のグラフィックス・プロセッサ2310に含められてもよく、少なくとも一実施例では図24Bのように、統合されたシェーダ・コア2455A~2455Nであってもよい。図25Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット2530を示す。
少なくとも一実施例では、グラフィックス・コア2500は、共有命令キャッシュ2502、テクスチャ・ユニット2518、及びキャッシュ/共有メモリ2520を含み、これらは、グラフィックス・コア2500内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア2500は、複数のスライス2501A~2501N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア2500の複数のインスタンスを含むことができる。スライス2501A~2501Nは、ローカル命令キャッシュ2504A~2504N、スレッド・スケジューラ2506A~2506N、スレッド・ディスパッチャ2508A~2508N、及びレジスタのセット2510A~2510Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス2501A~2501Nは、追加機能ユニット(AFU2512A~2512N)、浮動小数点ユニット(FPU2514A~2514N)、整数算術論理演算ユニット(ALU2516~2516N)、アドレス計算ユニット(ACU2513A~2513N)、倍精度浮動小数点ユニット(DPFPU2515A~2515N)、及び行列処理ユニット(MPU2517A~2517N)のセットを含むことができる。
少なくとも一実施例では、FPU2514A~2514Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU2515A~2515Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU2516A~2516Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2517A~2517Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2517A~2517Nは、汎用行列-行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU2512A~2512Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア2500において使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図25Bは、汎用処理ユニット(GPGPU)2530を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU2530は、GPGPU2530の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU2530は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース2532を含む。少なくとも一実施例では、ホスト・インターフェース2532は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース2532は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU2530は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ2534を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ2536A~2536Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ2536A~2536Hは、キャッシュ・メモリ2538を共有する。少なくとも一実施例では、キャッシュ・メモリ2538は、コンピュート・クラスタ2536A~2536H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
少なくとも一実施例では、GPGPU2530は、メモリ・コントローラ2542A~2542Bのセットを介して、コンピュート・クラスタ2536A~2536Hに結合されたメモリ2544A~2544Bを含む。少なくとも一実施例では、メモリ2544A~2544Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
少なくとも一実施例では、コンピュート・クラスタ2536A~2536Hはそれぞれ、図25Aのグラフィックス・コア2500などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ2536A~2536Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
少なくとも一実施例では、GPGPU2530の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ2536A~2536Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU2530の複数のインスタンスは、ホスト・インターフェース2532を介して通信する。少なくとも一実施例では、GPGPU2530は、I/Oハブ2539を含み、このハブは、GPGPU2530の他のインスタンスへの直接接続を可能にするGPUリンク2540に、GPGPU2530を結合する。少なくとも一実施例では、GPUリンク2540は、GPGPU2530の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク2540は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU2530の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース2532を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク2540は、ホスト・インターフェース2532に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
少なくとも一実施例では、GPGPU2530は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU2530は、推論プラットフォーム内で使用することができる。GPGPU2530が推論のために使用される少なくとも一実施例では、GPGPUは、GPGPUがニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ2536A~2536Hを含んでもよい。少なくとも一実施例では、メモリ2544A~2544Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU2530の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU2530において使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図26は、少なくとも一実施例によるコンピューティング・システム2600を示すブロック図である。少なくとも一実施例では、コンピューティング・システム2600は、メモリ・ハブ2605を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ2602とシステム・メモリ2604とを有する処理サブシステム2601を含む。少なくとも一実施例では、メモリ・ハブ2605は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ2602内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ2605は、通信リンク2606を介してI/Oサブシステム2611に結合される。少なくとも一実施例では、I/Oサブシステム2611は、コンピューティング・システム2600が1つ又は複数の入力デバイス2608からの入力を受け取れるようにすることができるI/Oハブ2607を含む。少なくとも一実施例では、I/Oハブ2607は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ2602に含まれて、1つ又は複数のディスプレイ・デバイス2610Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ2607に結合された1つ又は複数のディスプレイ・デバイス2610Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
少なくとも一実施例では、処理サブシステム2601は、バス又は他の通信リンク2613を介してメモリ・ハブ2605に結合された1つ又は複数の並列プロセッサ2612を含む。少なくとも一実施例では、通信リンク2613は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つであってもよく、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ2612は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2612は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ2607を介して結合された1つ又は複数のディスプレイ・デバイス2610Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、1つ又は複数の並列プロセッサ2612はまた、1つ又は複数のディスプレイ・デバイス2610Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
少なくとも一実施例では、システム・ストレージ・ユニット2614は、I/Oハブ2607に接続されて、コンピューティング・システム2600のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ2616を使用して、I/Oハブ2607と、プラットフォームに一体化されてもよいネットワーク・アダプタ2618及び/又はワイヤレス・ネットワーク・アダプタ2619などの他の構成要素、並びに1つ又は複数のアドイン・デバイス2620を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ2618は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ2619は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
少なくとも一実施例では、コンピューティング・システム2600は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ2607に接続されてもよい。少なくとも一実施例では、図26の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース、又は他の相互接続プロトコルを使用して、実施されてもよい。
少なくとも一実施例では、1つ又は複数の並列プロセッサ2612は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2612は、汎用処理に最適化された回路を組み込んでいる。少なくとも実施例では、コンピューティング・システム2600の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、1つ又は複数の並列プロセッサ2612、メモリ・ハブ2605、プロセッサ2602、及びI/Oハブ2607を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム2600の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム2600の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図2600のシステムにおいて使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにコンピュータ・システムを使用して実施されてもよい。
プロセッサ
図27Aは、少なくとも一実施例による並列プロセッサ2700を示す。少なくとも一実施例では、並列プロセッサ2700の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実施されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2700は、例示的な実施例による図26に示す1つ又は複数の並列プロセッサ2612の変形形態である。
少なくとも一実施例では、並列プロセッサ2700は並列処理ユニット2702を含む。少なくとも一実施例では、並列処理ユニット2702は、並列処理ユニット2702の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2704を含む。少なくとも一実施例では、I/Oユニット2704は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2704は、メモリ・ハブ2605などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ2605とI/Oユニット2704との間の接続は、通信リンク2613を形成する。少なくとも一実施例では、I/Oユニット2704は、ホスト・インターフェース2706及びメモリ・クロスバー2716に接続され、ここでホスト・インターフェース2706は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2716は、メモリ動作の実行を対象とするコマンドを受け取る。
少なくとも一実施例では、ホスト・インターフェース2706が、I/Oユニット2704を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2706は、これらのコマンドを実行するためのワーク動作をフロント・エンド2708に向けることができる。少なくとも一実施例では、フロント・エンド2708はスケジューラ2710に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2712に分配するように構成される。少なくとも一実施例では、スケジューラ2710は、処理クラスタ・アレイ2712の処理クラスタ・アレイ2712にタスクが分配される前に、処理クラスタ・アレイ2712が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2710は、マイクロコントローラで実行しているファームウェア論理を介して実施される。少なくとも一実施例では、マイクロコントローラ実施スケジューラ2710は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2712で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ2712でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2710を含むマイクロコントローラ内のスケジューラ2710論理によって、ワークロードを自動的に処理クラスタ・アレイ2712全体に分配することができる。
少なくとも一実施例では、処理クラスタ・アレイ2712は、最大「N個」の処理クラスタ(たとえば、クラスタ2714A、クラスタ2714B~クラスタ2714N)を含む。少なくとも一実施例では、処理クラスタ・アレイ2712の各クラスタ2714A~2714Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2710は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2712のクラスタ2714A~2714Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2710によって動的に対処されてもよく、又は処理クラスタ・アレイ2712によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2712の異なるクラスタ2714A~2714Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
少なくとも一実施例では、処理クラスタ・アレイ2712は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2712は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2712は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
少なくとも一実施例では、処理クラスタ・アレイ2712は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2712は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2712は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2702は、処理できるようにデータをシステム・メモリからI/Oユニット2704を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2722)に記憶し、次いでシステム・メモリに書き戻すことができる。
少なくとも一実施例では、並列処理ユニット2702を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2712の複数のクラスタ2714A~2714Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2710を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2712の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2714A~2714Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ2714A~2714Nの間で中間データを送信できるようにしてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2712は、実行される処理タスクをスケジューラ2710を介して受け取ることができ、スケジューラ2710は、処理タスクを定義するコマンドをフロント・エンド2708から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2710は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2708からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2708は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2712が有効な状態に構成されていることを保証するように構成されることが可能である。
少なくとも一実施例では、並列処理ユニット2702の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2722と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2722には、メモリ・クロスバー2716を介してアクセスすることができ、メモリ・クロスバー2716は、処理クラスタ・アレイ2712並びにI/Oユニット2704からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2716は、メモリ・インターフェース2718を介して並列プロセッサ・メモリ2722にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2718は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2720A、パーティション・ユニット2720B~パーティション・ユニット2720N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2722の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2720A~2720Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2720Aは、対応する第1のメモリ・ユニット2724Aを有し、第2のパーティション・ユニット2720Bは、対応するメモリ・ユニット2724Bを有し、N番目のパーティション・ユニット2720Nは、対応するN番目のメモリ・ユニット2724Nを有する。少なくとも一実施例では、パーティション・ユニット2720A~2720Nの数は、メモリ・デバイスの数に等しくなくてもよい。
少なくとも一実施例では、メモリ・ユニット2724A~2724Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2724A~2724Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2722の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2724A~2724Nにわたって記憶されて、パーティション・ユニット2720A~2720Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2722のローカル・インスタンスは除外されてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2712のクラスタ2714A~2714Nのうちのいずれか1つは、並列プロセッサ・メモリ2722内のメモリ・ユニット2724A~2724Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2716は、各クラスタ2714A~2714Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2720A~2720N、又は別のクラスタ2714A~2714Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2714A~2714Nは、メモリ・クロスバー2716を通ってメモリ・インターフェース2718と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2716は、I/Oユニット2704と通信するためのメモリ・インターフェース2718への接続部、並びに並列プロセッサ・メモリ2722のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2714A~2714N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2702のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2716は、仮想チャネルを使用して、クラスタ2714A~2714Nと、パーティション・ユニット2720A~2720Nとの間でトラフィック・ストリームを分離することができる。
少なくとも一実施例では、並列処理ユニット2702の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2702の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2702のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2702又は並列プロセッサ2700のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実施することができる。
図27Bは、少なくとも一実施例によるパーティション・ユニット2720のブロック図である。少なくとも一実施例では、パーティション・ユニット2720は、図27Aのパーティション・ユニット2720A~2720Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2720は、L2キャッシュ2721、フレーム・バッファ・インターフェース2725、及びROP:raster operations unit2726(ラスタ演算ユニット)を含む。L2キャッシュ2721は、メモリ・クロスバー2716及びROP2726から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ2721によってフレーム・バッファ・インターフェース2725に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース2725を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース2725は、図27の(たとえば並列プロセッサ・メモリ2722内の)メモリ・ユニット2724A~2724Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
少なくとも一実施例では、ROP2726は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2726は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2726は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。ROP2726によって実行される圧縮のタイプは、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
少なくとも一実施例では、ROP2726は、パーティション・ユニット2720内ではなく、各処理クラスタ内(たとえば、図27Aのクラスタ2714A~2714N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2716を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図26の1つ又は複数のディスプレイ・デバイス2610のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ2602によってさらに処理できるようにルーティングされてもよく、又は図27Aの並列プロセッサ2700内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
図27Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2714のブロック図である。少なくとも一実施例では、処理クラスタは、図27Aの処理クラスタ2714A~2714Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2714は、多数のスレッドを並列で実行するように構成されてもよく、ここで用語「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction, multiple-thread)の技法が使用される。
少なくとも一実施例では、処理クラスタ2714の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2732を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2732は、図27Aのスケジューラ2710から命令を受け取り、グラフィックス・マルチプロセッサ2734及び/又はテクスチャ・ユニット2736を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2714内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734の1つ又は複数のインスタンスは、処理クラスタ2714内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2740が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2732は、データ・クロスバー2740を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
少なくとも一実施例では、処理クラスタ2714内の各グラフィックス・マルチプロセッサ2734は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
少なくとも一実施例では、処理クラスタ2714に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2734内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2734内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンのうちの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2734内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2734内の処理エンジンの数より多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2734上で同時に実行することができる。
少なくとも一実施例では、グラフィックス・マルチプロセッサ2734は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734は、内部キャッシュをやめて、処理クラスタ2714内のキャッシュ・メモリ(たとえば、L1キャッシュ2748)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2734は、パーティション・ユニット(たとえば、図27のパーティション・ユニット2720A~2720N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2714間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2702の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2714は、グラフィックス・マルチプロセッサ2734の複数のインスタンスを含み、共通の命令及びデータを共有することができ、これらはL1キャッシュ2748に記憶されてもよい。
少なくとも一実施例では、各処理クラスタ2714は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU2745(メモリ管理ユニット)を含んでもよい。少なくとも一実施例では、MMU2745の1つ又は複数のインスタンスは、図27のメモリ・インターフェース2718内にあってもよい。少なくとも一実施例では、MMU2745は、仮想アドレスを、タイル(タイリングについては詳述する)及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2745は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2734若しくはL1キャッシュ、又は処理クラスタ2714内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2734がテクスチャ・ユニット2736に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2714が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2734内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2734は、処理済みタスクをデータ・クロスバー2740に出力して、さらなる処理ができるように別の処理クラスタ2714に処理済みタスクを提供し、又はメモリ・クロスバー2716を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2742(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2734からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図27Aのパーティション・ユニット2720A~2720N)内に位置付けられてもよい。少なくとも一実施例では、プレROP2742ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ2714において使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図27Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2734を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734は、処理クラスタ2714のパイプライン・マネージャ2732と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734は、命令キャッシュ2752、命令ユニット2754、アドレス・マッピング・ユニット2756、レジスタ・ファイル2758、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2762、及び1つ又は複数のロード/ストア・ユニット2766を含むがこれらに限定されない実行パイプラインを有する。GPGPUコア2762、及びロード/ストア・ユニット2766は、メモリ及びキャッシュ相互接続2768を介して、キャッシュ・メモリ2772及び共有メモリ2770に結合される。
少なくとも一実施例では、命令キャッシュ2752は、実行すべき命令のストリームをパイプライン・マネージャ2732から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2752にキャッシュされ、命令ユニット2754により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット2754は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、アスレッド・グループの各スレッドは、GPGPUコア2762内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2756を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2766がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
少なくとも一実施例では、レジスタ・ファイル2758は、グラフィックス・マルチプロセッサ2734の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2758は、グラフィックス・マルチプロセッサ2734の機能ユニット(たとえばGPGPUコア2762、ロード/ストア・ユニット2766)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2758は、レジスタ・ファイル2758の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。一実施例では、レジスタ・ファイル2758は、グラフィックス・マルチプロセッサ2734によって実行されている異なるワープ間で分割される。
少なくとも一実施例では、GPGPUコア2762はそれぞれ、グラフィックス・マルチプロセッサ2734の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。GPGPUコア2762同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2762の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、IEEE754-2008規格浮動小数点演算を実施することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2734はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコアの1つ又は複数は、固定の又は特別な機能論理も含むことができる。
少なくとも一実施例では、GPGPUコア2762は、複数のデータセットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2762は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
少なくとも一実施例では、メモリ及びキャッシュ相互接続2768は、グラフィックス・マルチプロセッサ2734の各機能ユニットをレジスタ・ファイル2758及び共有メモリ2770に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2768は、ロード/ストア・ユニット2766が、共有メモリ2770とレジスタ・ファイル2758の間でロード及びストアの動作を実施できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2758は、GPGPUコア2762と同じ周波数で動作することができ、したがって、GPGPUコア2762とレジスタ・ファイル2758の間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ2770を使用して、グラフィックス・マルチプロセッサ2734内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2772を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2736の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2770は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2762で実行されているスレッドは、キャッシュ・メモリ2772内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアとして同じパッケージ又はチップに一体化されてもよく、内部(すなわち、パッケージ又はチップの内部の)プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをこうしたGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ2734において使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図28は、少なくとも一実施例による、マルチGPUコンピューティング・システム2800を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム2800は、ホスト・インターフェース・スイッチ2804を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)2806A~Dに結合されたプロセッサ2802を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ2804は、プロセッサ2802をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ2802は、GPGPU2806A~Dと通信することができる。GPGPU2806A~Dは、高速ポイントツーポイントGPUツーGPUリンク2816のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク2816は、専用GPUリンクを介して、GPGPU2806A~Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク2816は、プロセッサ2802が接続されているホスト・インターフェース・バス2804を介した通信を必要とせずに、GPGPU2806A~Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク2816に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス2804は、システム・メモリへのアクセスができるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム2800の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU2806A~Dは、ホスト・インターフェース・スイッチ2804を介してプロセッサ2802に接続され、少なくとも一実施例では、プロセッサ2802は、P2PのGPUリンク2816のための直接サポートを含み、GPGPU2806A~Dに直接接続することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム2800において使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにGPUを使用して実施されてもよい。
図29は、少なくとも一実施例によるグラフィックス・プロセッサ2900のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ2900は、リング相互接続2902、パイプライン・フロント・エンド2904、メディア・エンジン2937、及びグラフィックス・コア2980A~2980Nを含む。少なくとも一実施例では、リング相互接続2902は、グラフィックス・プロセッサ2900を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ2900は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
少なくとも一実施例では、グラフィックス・プロセッサ2900は、リング相互接続2902を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド2904のコマンド・ストリーマ2903によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ2900は、グラフィックス・コア2980A~2980Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ2903はコマンドをジオメトリ・パイプライン2936に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ2903はコマンドをビデオ・フロント・エンド2934に供給し、ビデオ・フロント・エンド2934はメディア・エンジン2937に結合される。少なくとも一実施例では、メディア・エンジン2937は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)2930と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)2933エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン2936及びメディア・エンジン2937はそれぞれ、少なくとも1つのグラフィックス・コア2980Aによって提供されるスレッド実行リソースのための実行スレッドを生成する。
少なくとも一実施例では、グラフィックス・プロセッサ2900は、モジュール式コア2980A~2980N(コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのモジュール式コア2980A~2980Nは、複数のサブ・コア2950A~550N、2960A~2960N(コア・サブ・スライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ2900は、任意の数のグラフィックス・コア2980A~2980Nを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ2900は、少なくとも第1のサブ・コア2950A及び第2のサブ・コア2960Aを有するグラフィックス・コア2980Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ2900は、単一のサブ・コア(たとえば、2950A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ2900は、複数のグラフィックス・コア2980A~2980Nを含み、このそれぞれが、第1のサブ・コア2950A~2950Nのセット、及び第2のサブ・コア2960A~2960Nのセットを含む。少なくとも一実施例では、第1のサブ・コア2950A~2950Nの各サブ・コアは、少なくとも、実行ユニット2952A~2952Nとメディア/テクスチャ・サンプラ2954A~2954Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア2960A~2960Nの各サブ・コアは、少なくとも、実行ユニット2962A~2962Nとサンプラ2964A~2964Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア2950A~2950N、2960A~2960Nは、共有リソース2970A~2970Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ2900において使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにGPUを使用して実施されてもよい。
図30は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ3000のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ3000は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ3010は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMX(商標)レジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ3010は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
少なくとも一実施例では、プロセッサ3000は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド(「フロント・エンド」)3001を含む。少なくとも一実施例では、フロント・エンド3001は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ3026が、メモリから命令をフェッチし、命令デコーダ3028に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ3028は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ3028は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ3030は、デコードされたuopsを、実行できるようにuopキュー3034においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ3030が複雑な命令に遭遇すると、マイクロコードROM3032が、動作の完了に必要なuopsを提供する。
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが要な場合、命令デコーダ3028は、マイクロコードROM3032にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ3028において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM3032に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ3030は、少なくとも一実施例によるマイクロコードROM3032からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM3032が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド3001は、トレース・キャッシュ3030からマイクロ・オプスのフェッチを再開してもよい。
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)3003は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。アウト・オブ・オーダー実行エンジン3003は、限定することなく、アロケータ/レジスタ・リネーマ3040、メモリuopキュー3042、整数/浮動小数点uopキュー3044、メモリ・スケジューラ3046、高速スケジューラ3002、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)3004、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)3006を含む。少なくとも一実施例では、高速スケジューラ3002、低速/汎用浮動小数点スケジューラ3004、及び単純浮動小数点スケジューラ3006は、本明細書において集合的に「uopスケジューラ3002、3004、3006」とも呼ばれる。アロケータ/レジスタ・リネーマ3040は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ3040は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ3040はまた、メモリ・スケジューラ3046及びuopスケジューラ3002、3004、3006の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー3042と非メモリ動作のための整数/浮動小数点uopキュー3044のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ3002、3004、3006は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、少なくとも一実施例の高速スケジューラ3002は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ3004及び単純浮動小数点スケジューラ3006は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ3002、3004、3006は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
少なくとも一実施例では、実行ブロックb11は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク3008、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)3010、アドレス生成ユニット(「AGU」:address generation units)3012及び3014、高速算術論理演算ユニット(ALU)(「高速ALU」)3016及び3018、低速算術論理演算ユニット(「低速ALU」)3020、浮動小数点ALU(「FP」)3022、並びに浮動小数点移動ユニット(「FP移動」)3024を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク3008及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク3010は、本明細書において「レジスタ・ファイル3008、3010」とも呼ばれる。少なくとも一実施例では、AGU3012及び3014、高速ALU3016及び3018、低速ALU3020、浮動小数点ALU3022、及び浮動小数点移動ユニット3024は、本明細書において「実行ユニット3012、3014、3016、3018、3020、3022、及び3024」とも呼ばれる。少なくとも一実施例では、実行ブロックb11は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
少なくとも一実施例では、レジスタ・ネットワーク3008、3010は、uopスケジューラ3002、3004、3006と、実行ユニット3012、3014、3016、3018、3020、3022、及び3024との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク3008は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク3010は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ファイル3008、3010のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ファイル3008、3010は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク3008は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク3010は、限定することなく、128ビット幅のエントリを含んでもよい。
少なくとも一実施例では、実行ユニット3012、3014、3016、3018、3020、3022、3024は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ファイル3008、3010は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ3000は、限定することなく、任意の数及び組合せの実行ユニット3012、3014、3016、3018、3020、3022、3024を含んでよい。少なくとも一実施例では、浮動小数点ALU3022及び浮動小数点移動ユニット3024は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU3022は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU3016、3018に渡されてもよい。少なくとも一実施例では、高速ALU3016、3018は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU3020は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU3020に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS3012、3014によって実行されてもよい。少なくとも一実施例では、高速ALU3016、高速ALU3018、及び低速ALU3020は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU3016、高速ALU3018、及び低速ALU3020は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実施されてもよい。少なくとも一実施例では、浮動小数点ALU3022及び浮動小数点移動ユニット3024は、様々なビット幅を有する幅広いオペランドをサポートするように実施されてもよい。少なくとも一実施例では、浮動小数点ALU3022及び浮動小数点移動ユニット3024は、SIMD及びマルチメディア命令と併せて128ビット幅のパック・データ・オペランドで動作してもよい。
少なくとも一実施例では、uopスケジューラ3002、3004、3006は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ3000において投機的にスケジューリング及び実行されてもよいので、プロセッサ3000は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
少なくとも一実施例では、用語「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実施されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415の一部又はすべてが、EXEブロック3011、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、EXEブロック3011に示すALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのEXEブロック3011のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにGPUを使用して実施されてもよい。
図31は、少なくとも一実施例による深層学習アプリケーション・プロセッサ3100を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3100は、深層学習アプリケーション・プロセッサ3100によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ3100に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3100は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ3100は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3100は、限定することなく、処理クラスタ3110(1)~3110(12)、チップ間リンク(「ICL」)3120(1)~3120(12)、チップ間コントローラ(「ICC」)3130(1)~3130(2)、高帯域幅メモリ第2世代(「HBM2」)3140(1)~3140(4)、メモリ・コントローラ(「Mem Ctrlrs」)3142(1)~3142(4)、高帯域幅メモリ物理層(「HBM PHY」)3144(1)~3144(4)、管理-コントローラ中央処理装置(「管理-コントローラCPU」)3150、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、I2C、GPIO」)3160、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)3170、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Expressx16」)3180を含む。
少なくとも一実施例では、処理クラスタ3110は、本明細書に記載の技法を含む1つ又は複数の訓練技法を使用して計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ3110は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3100は、任意の数及びタイプの処理クラスタ3100を含んでもよい。少なくとも一実施例では、チップ間リンク3120は、双方向性である。少なくとも一実施例では、チップ間リンク3120及びチップ間コントローラ3130は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ3100が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3100は、(ゼロを含む)任意の数及びタイプのICL3120及びICC3130を含んでもよい。
少なくとも一実施例では、HBM2 3140は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。HBM2 3140(i)は、メモリ・コントローラ3142(i)とHBM PHY3144(i)の両方に関連付けられる。少なくとも一実施例では、任意の数のHBM2 3140が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ3142及びHBM PHY3144に関連付けられてもよい。少なくとも一実施例では、SPI、I2C、GPIO3160、PCIeコントローラ及びDMA3170、並びに/又はPCIe3180は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、深層学習アプリケーション・プロセッサ3100に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3100は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ3100によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ3100は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにGPUを使用して実施されてもよい。
図32は、少なくとも一実施例による、ニューロモーフィック・プロセッサ3200のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ3200は、ニューロモーフィック・プロセッサ3200の外部のソースから1つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ3200内の1つ又は複数のニューロン3202に送信されてもよい。少なくとも一実施例では、ニューロン3202及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実施されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ3200は、限定することなく、ニューロン3202の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン3202が使用されてもよい。少なくとも一実施例では、ニューロン3202の各インスタンスは、ニューロン入力3204及びニューロン出力3206を含んでもよい。少なくとも一実施例では、ニューロン3202は出力を生成してもよく、この出力は、ニューロン3202の他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力3204及びニューロン出力3206は、シナプス3208を介して相互接続されてもよい。
少なくとも一実施例では、ニューロン3202とシナプス3208は、ニューロモーフィック・プロセッサ3200が受信した情報をニューロモーフィック・プロセッサ3200が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン3202は、ニューロン入力3204を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン3202は、ニューロン入力3204において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン3202は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実施されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン3202は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力3204で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力3204において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン3202は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実施されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン3202は、ニューロン3204に伝達関数を適用した結果が閾値を超えるとき、ニューロン3206において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン3202は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン3202は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
少なくとも一実施例では、ニューロン3202は、シナプス3208を通して相互接続されてもよい。少なくとも一実施例では、シナプス3208は、第1のニューロン3202の出力から第2のニューロン3202の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン3202は、シナプス3208の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力3206の1つ又は複数のインスタンスは、シナプス3208のインスタンスを介して、同じニューロン3202のニューロン入力3204のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス3208のインスタンスを介して送信されることになる出力を生成するニューロン3202のインスタンスは、シナプス3208のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス3208のインスタンスを介して送信されることになる入力を受信するニューロン3202のインスタンスは、シナプス3208のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン3202のインスタンスは、シナプス3208の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス3208の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン3202の単一のインスタンスは、したがって、シナプス3208の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
少なくとも一実施例では、ニューロン3202は、1つ又は複数の層に組織化されてもよい。ニューロン3202の各インスタンスは、1つ又は複数のシナプス3208を通って1つ又は複数のニューロン入力3204にファン・アウトすることができる1つのニューロン出力3206を有してもよい。少なくとも一実施例では、第1の層3210のニューロン3202のニューロン出力3206は、第2の層3212のニューロン3202のニューロン入力3204に接続されてもよい。少なくとも一実施例では、層3210は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第1の層3210のインスタンスにおけるニューロン3202の各インスタンスは、第2の層3212におけるニューロン3202の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層3210は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層3212のインスタンスにおけるニューロン3202の各インスタンスは、第3の層3214におけるニューロン3202の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層3212は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層3212のニューロン3202は、(同じ)第2の層3212におけるニューロン3202を含め、複数の他の層のニューロン3202にファン・アウトしてもよい。少なくとも一実施例では、第2の層3212は、「回帰層」と呼ばれてもよい。ニューロモーフィック・プロセッサ3200は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
少なくとも一実施例では、ニューロモーフィック・プロセッサ3200は、シナプス3208をニューロン3202に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ3200は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン3202に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス3208は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン3202に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実施されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにGPUを使用して実施されてもよい。
図33は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム3300は、1つ又は複数のプロセッサ3302、及び1つ又は複数のグラフィックス・プロセッサ3308を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ3302若しくはプロセッサ・コア3307を有するサーバ・システムであってもよい。少なくとも一実施例では、システム3300は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
少なくとも一実施例では、システム3300は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム3300は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム3300はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム3300は、1つ又は複数のプロセッサ3302と、1つ又は複数のグラフィックス・プロセッサ3308によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
少なくとも一実施例では、1つ又は複数のプロセッサ3302はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア3307を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア3307のそれぞれは、特定の命令セット3309を処理するように構成される。少なくとも一実施例では、命令セット3309は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア3307はそれぞれ、異なる命令セット3309を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア3307はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
少なくとも一実施例では、プロセッサ3302はキャッシュ・メモリ3304を含む。少なくとも一実施例では、プロセッサ3302は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ3302の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ3302はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア3307間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル3306がプロセッサ3302に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル3306は、汎用レジスタ又は他のレジスタを含んでもよい。
少なくとも一実施例では、1つ又は複数のプロセッサ3302は、1つ又は複数のインターフェース・バス3310に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ3302とシステム3300内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス3310は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース3310は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ3302は、統合メモリ・コントローラ3316、及びプラットフォーム・コントローラ・ハブ3330を含む。少なくとも一実施例では、メモリ・コントローラ3316は、メモリ・デバイスとシステム3300の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)3330は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
少なくとも一実施例では、メモリ・デバイス3320は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス3320は、システム3300のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ3302がアプリケーション若しくはプロセスを実行するときに使用するためのデータ3322及び命令3321を記憶することができる。少なくとも一実施例では、メモリ・コントローラ3316はまた、任意選択の外部グラフィックス・プロセッサ3312と結合しており、このグラフィックス・プロセッサは、プロセッサ3302内の1つ又は複数のグラフィックス・プロセッサ3308と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス3311は、プロセッサ3302に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス3311は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス3311は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3330は、周辺装置が高速I/Oバスを介してメモリ・デバイス3320及びプロセッサ3302に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ3346、ネットワーク・コントローラ3334、ファームウェア・インターフェース3328、ワイヤレス・トランシーバ3326、タッチ・センサ3325、データ・ストレージ・デバイス3324(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス3324は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ3325は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ3326は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース3328は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ3334は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス3310と結合する。少なくとも一実施例では、オーディオ・コントローラ3346は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム3300は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ3340を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3330は、キーボードとマウス3343の組合せ、カメラ3344、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ3342の接続入力デバイスにも接続することができる。
少なくとも一実施例では、メモリ・コントローラ3316及びプラットフォーム・コントローラ・ハブ3330のインスタンスは、外部グラフィックス・プロセッサ3312などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3330及び/又はメモリ・コントローラ3316は、1つ又は複数のプロセッサ3302の外部にあってもよい。たとえば、少なくとも一実施例では、システム3300は、外部のメモリ・コントローラ3316及びプラットフォーム・コントローラ・ハブ3330を含むことができ、これらは、プロセッサ3302と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415の一部又はすべてが、グラフィックス・プロセッサ3300に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3312に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図14A又は図14Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3300のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図34は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア3402A~3402N、統合メモリ・コントローラ3414、及び統合グラフィックス・プロセッサ3408を有するプロセッサ3400のブロック図である。少なくとも一実施例では、プロセッサ3400は、破線の四角によって表される追加コア3402Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア3402A~3402Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット3404A~3404Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット3406にアクセスできる。
少なくとも一実施例では、内部キャッシュ・ユニット3404A~3404N、及び共有キャッシュ・ユニット3406は、プロセッサ3400内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット3404A~3404Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット3406及び3404A~3404N間でコヒーレンスを維持する。
少なくとも一実施例では、プロセッサ3400はまた、1つ又は複数のバス・コントローラ・ユニット3416とシステム・エージェント・コア3410のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット3416は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア3410は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア3410は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ3414を含む。
少なくとも一実施例では、プロセッサ・コア3402A~3402Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア3410は、マルチスレッドの処理中にコア3402A~3402Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア3410はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア3402A~3402N及びグラフィックス・プロセッサ3408の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
少なくとも一実施例では、プロセッサ3400はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ3408を含む。少なくとも一実施例では、グラフィックス・プロセッサ3408は、共有キャッシュ・ユニット3406と、1つ又は複数の統合メモリ・コントローラ3414を含むシステム・エージェント・コア3410とに結合される。少なくとも一実施例では、システム・エージェント・コア3410はまた、1つ又は複数の結合されたディスプレイに向けてグラフィックス・プロセッサの出力を出させるためのディスプレイ・コントローラ3411を含む。少なくとも一実施例では、ディスプレイ・コントローラ3411はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ3408に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ3408内に一体化されていてもよい。
少なくとも一実施例では、プロセッサ3400の内部構成要素を結合するために、リング・ベースの相互接続ユニット3412が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ3408は、I/Oリンク3413を介してリング相互接続3412と結合される。
少なくとも一実施例では、I/Oリンク3413は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール3418との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア3402A~3402Nのそれぞれ及びグラフィックス・プロセッサ3408は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール3418を使用する。
少なくとも一実施例では、プロセッサ・コア3402A~3402Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア3402A~3402Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア3402A~3402Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア3402A~34-02Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア3402A~3402Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ3400は、1つ若しくは複数のチップ上に実施することができ、又はSoC集積回路として実施することができる。
1つ若しくは複数の実施形態に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415の一部又はすべてが、グラフィックス・プロセッサ3410に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3312、グラフィックス・コア3415A、共有機能論理3416、グラフィックス・コア3415B、共有機能論理3420、又は図34の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図14A又は図14Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3410のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図35は、グラフィックス・プロセッサ3500のブロック図であり、これは、個別グラフィックス・プロセッシング・ユニットであってもよく、又は複数の処理コアと統合されたグラフィックス・プロセッサであってもよい。少なくとも一実施例では、グラフィックス・プロセッサ3500は、メモリにマッピングされたI/Oインターフェースを介して、メモリに入れられたコマンドを用いて、グラフィックス・プロセッサ3500のレジスタと通信する。少なくとも一実施例では、グラフィックス・プロセッサ3500は、メモリにアクセスするためのメモリ・インターフェース3514を含む。少なくとも一実施例では、メモリ・インターフェース3514は、ローカル・メモリ、1つ若しくは複数の内部キャッシュ、1つ若しくは複数の共有外部キャッシュ、及び/又はシステム・メモリへのインターフェースである。
少なくとも一実施例では、グラフィックス・プロセッサ3500はまた、ディスプレイ出力データをディスプレイ・デバイス3520に向けて駆動するためのディスプレイ・コントローラ3502も含む。少なくとも一実施例では、ディスプレイ・コントローラ3502は、ディスプレイ・デバイス3520用の1つ又は複数の重なり平面、及び多層のビデオ若しくはユーザ・インターフェース要素の合成のためのハードウェアを含む。少なくとも一実施例では、ディスプレイ・デバイス3520は、内部又は外部のディスプレイ・デバイスとすることができる。少なくとも一実施例では、ディスプレイ・デバイス3520は、仮想現実(VR)ディスプレイ・デバイス又は拡張現実(AR)ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも一実施例では、グラフィックス・プロセッサ3500は、MPEG-2などの動画エキスパート・グループ(MPEG)フォーマット、H.264/MPEG-4AVCなどのアドバンスト・ビデオ・コーディング(AVC)フォーマット、並びに映画テレビ技術者協会(SMPTE)421M/VC-1、及びJPEGなどのジョイント・フォトグラフィック・エキスパート・グループ(JPEG)フォーマット、及びモーションJPEG(MJPEG)フォーマットを含むがこれらに限定されない1つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアをエンコード、デコード、又はコード変換するためのビデオ・コーデック・エンジン3506を含む。
少なくとも一実施例では、グラフィックス・プロセッサ3500は、たとえばビット境界ブロック転送を含む2次元(2D)ラスタライザ動作を実行するためのブロック画像転送(BLIT)エンジン3504を含む。しかし、少なくとも一実施例では、2Dグラフィックス動作は、グラフィックス処理エンジン(GPE)3510の1つ又は複数の構成要素を使用して実行される。少なくとも一実施例では、GPE3510は、3次元(3D)グラフィックス動作及びメディア動作を含むグラフィックス動作を実行するためのコンピュート・エンジンである。
少なくとも一実施例では、GPE3510は、3Dのプリミティブ形状(たとえば、矩形、三角形など)に作用する処理関数を使用して、3次元画像及びシーンをレンダリングするなど、3D動作を実行するための3Dパイプライン3512を含む。3Dパイプライン3512は、プログラム可能で固定された関数要素を含み、これは、3D/メディア・サブシステム3515に対して様々なタスクを実行し、且つ/又は実行スレッドをスポーンする。3Dパイプライン3512を使用してメディア動作を実行できるが、少なくとも一実施例では、GPE3510は、ビデオの後処理及び画像強調などのメディア動作を実行するために使用されるメディア・パイプライン3516も含む。
少なくとも一実施例では、メディア・パイプライン3516は、ビデオ・コーデック・エンジン3506の代わりに、又はそれを代表して、ビデオ・デコード加速、ビデオ・インターレース解除、及びエンコード加速などの1つ又は複数の特別なメディア動作を実行するための固定機能又はプログラム可能論理ユニットを含む。少なくとも一実施例では、メディア・パイプライン3516は、3D/メディア・サブシステム3515で実行するためのスレッドをスポーンするためのスレッド・スポーニング・ユニットをさらに含む。少なくとも一実施例では、スポーンされたスレッドは、3D/メディア・サブシステム3515に含まれた1つ又は複数のグラフィックス実行ユニット上で、メディア動作のための計算を実行する。
少なくとも一実施例では、3D/メディア・サブシステム3515は、3Dパイプライン3512及びメディア・パイプライン3516によってスポーンされたスレッドを実行するための論理を含む。少なくとも一実施例では、3Dパイプライン3512及びメディア・パイプライン3516は、スレッド実行要求を3D/メディア・サブシステム3515に送信し、この3D/メディア・サブシステム3515は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも一実施例では、実行リソースは、3D及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも一実施例では、3D/メディア・サブシステム3515は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。少なくとも一実施例では、サブシステム3515はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415の一部又はすべてが、グラフィックス・プロセッサ3500に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3512に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図14A又は図14Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3500のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図36は、少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジン3610のブロック図である。少なくとも一実施例では、グラフィックス処理エンジン(GPE)3610は、図35に示すGPE3510の1つのバージョンである。少なくとも一実施例では、メディア・パイプライン3516は任意選択であり、GPE3610内に明示的に含まれなくてもよい。少なくとも一実施例では、別個のメディア及び/又は画像のプロセッサが、GPE3610に結合される。
少なくとも一実施例では、GPE3610は、コマンド・ストリーマ3603に結合され、又はそれを含み、このコマンド・ストリーマは、3Dパイプライン3612及び/又はメディア・パイプライン3516にコマンド・ストリームを提供する。少なくとも一実施例では、コマンド・ストリーマ3603はメモリに結合され、このメモリは、システム・メモリであってもよく、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの1つ若しくは複数であってもよい。少なくとも一実施例では、コマンド・ストリーマ3603は、メモリからコマンドを受信し、3Dパイプライン3512及び/又はメディア・パイプライン3516にコマンドを送信する。少なくとも一実施例では、コマンドは、リング・バッファからフェッチされる命令、プリミティブ、又はマイクロ・オペレーションであり、このリング・バッファは、3Dパイプライン3512及びメディア・パイプライン3516のためのコマンドを記憶する。少なくとも一実施例では、リング・バッファはさらに、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも一実施例では、3Dパイプライン3512用のコマンドはまた、3Dパイプライン3512用の頂点及び形状のデータ、並びに/又はメディア・パイプライン3516用の画像データ及びメモリ・オブジェクトなどであるがこれらに限定されないメモリに記憶されたデータへの参照も含むことができる。少なくとも一実施例では、3Dパイプライン3512及びメディア・パイプライン3516は、演算を実行することにより、又は1つ若しくは複数の実行スレッドをグラフィックス・コア・アレイ3614にディスパッチすることにより、コマンド及びデータを処理する。少なくとも一実施例では、グラフィックス・コア・アレイ3614は、グラフィックス・コア(たとえば、グラフィックス・コア3615A、グラフィックス・コア3615B)の1つ又は複数のブロックを含み、各ブロックは、1つ又は複数のグラフィックス・コアを含む。少なくとも一実施例では、各グラフィックス・コアは、グラフィックス及びコンピュートの動作を実行するための汎用及びグラフィックス専用の実行論理、並びに、図14A及び図14Bの推論及び/又は訓練論理1415を含め、固定機能のテクスチャ処理及び/又は機械学習、及び人工知能の加速論理を含むグラフィックス実行リソースのセットを含む。
少なくとも一実施例では、3Dパイプライン3512は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ3614にディスパッチすることにより、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの1つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラム可能論理を含む。少なくとも一実施例では、グラフィックス・コア・アレイ3614は、シェーダ・プログラムを処理する際に使用するための実行リソースの統合ブロックを提供する。少なくとも一実施例では、グラフィック・コア・アレイ3614のグラフィックス・コア3615A~3615B内の多目的の実行論理(たとえば、実行ユニット)は、様々な3DのAPIシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することができる。
少なくとも一実施例では、グラフィックス・コア・アレイ3614はまた、ビデオ及び/又は画像の処理など、メディア機能を実行するための実行論理も含む。少なくとも一実施例では、実行ユニットはさらに、グラフィックス処理動作に加えて並列の汎用計算動作を実行するようにプログラム可能な汎用論理を含む。
少なくとも一実施例では、グラフィックス・コア・アレイ3614上で実行しているスレッドにより生成される出力データは、統合リターン・バッファ(URB)3618のメモリにデータを出力することができる。URB3618は、複数のスレッド用のデータを記憶することができる。少なくとも一実施例では、グラフィックス・コア・アレイ3614上で実行している異なるスレッド間でデータを送信するために、URB3618を使用してもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3614上のスレッドと、共有機能論理3620内の固定機能論理との間の同期のために、URB3618がさらに使用されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3614はスケーラブルであり、それにより、グラフィックス・コア・アレイ3614は、可変数のグラフィックス・コアを含み、それぞれのグラフィックス・コアが、GPE3610の目的とする電力及び性能のレベルに基づき可変数の実行ユニットを有する。少なくとも一実施例では、実行リソースは動的にスケーラブルであり、それにより実行リソースは、必要に応じて有効化又は無効化されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3614は、グラフィックス・コア・アレイ3614のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理3620に結合される。少なくとも一実施例では、共有機能論理3620によって実行される共有機能は、専用の補足機能をグラフィックス・コア・アレイ3614に提供するハードウェア論理ユニットに具体化される。少なくとも一実施例では、共有機能論理3620は、サンプラ3621、数理3622、及びスレッド間通信(ITC)3623の論理を含むが、これらに限定されない。少なくとも一実施例では、1つ又は複数のキャッシュ3625が、共有機能論理3620に含まれ、又はそれに結合される。
少なくとも一実施例では、専用機能の需要が不十分でグラフィックス・コア・アレイ3614内に含められない場合に、共有機能が使用される。少なくとも一実施例では、専用機能を1つにインスタンス化したものが、共有機能論理3620において使用され、グラフィックス・コア・アレイ3614内の他の実行リソース間で共有される。少なくとも一実施例では、共有機能論理3620内の、グラフィックス・コア・アレイ3614によってのみ使用される特定の共有機能は、グラフィックス・コア・アレイ3614内の共有機能論理3616内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3614内の共有機能論理3616は、共有機能論理3620内の一部又はすべての論理を含むことができる。少なくとも一実施例では、共有機能論理3620内のすべての論理要素は、グラフィックス・コア・アレイ3614の共有機能論理3616内で複製されてもよい。少なくとも一実施例では、共有機能論理3620は、グラフィックス・コア・アレイ3614内の共有機能論理3616に有利なように除外される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415の一部又はすべてが、グラフィックス・プロセッサ3610に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3512、グラフィックス・コア3615A、共有機能論理3616、グラフィックス・コア3615B、共有機能論理3620、又は図36の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図14A又は図14Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3610の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:execution unit)アレイ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個のサブ・コア3701A~3701Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン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:thread dispatch and inter-thread communication)論理3703A~3703F、3D(たとえば、テクスチャ)サンプラ3705A~3705F、メディア・サンプラ3706A~3706F、シェーダ・プロセッサ3707A~3707F、及び共有ローカル・メモリ(SLM:shared local memory)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つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415の一部又はすべてが、グラフィックス・プロセッサ3710に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3710、グラフィックス・マイクロコントローラ3738、ジオメトリ及び固定機能パイプライン3714及び3736、又は図34の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図14A又は図14Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の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:Quad-Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
少なくとも一実施例では、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通のスレッド制御論理(3807A~3807N)を有する融合実行ユニット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:general register file array)3824、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)3826、スレッド調停装置(arbiter)3822、送信ユニット3830、ブランチ・ユニット3832、SIMD浮動小数点ユニット(FPU)3834のセット、及び少なくとも一実施例では、専用整数SIMD ALU3835のセットを含むことができる。少なくとも一実施例では、GRF3824及びARF3826は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット3808においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF3826において維持され、スレッド実行中に使用されるデータが、GRF3824に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF3826のスレッド専用レジスタに保持することが可能である。
少なくとも一実施例では、グラフィックス実行ユニット3808は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
少なくとも一実施例では、グラフィックス実行ユニット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つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1415の一部又はすべてが、実行論理3800に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図14A又は図14Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理3800のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図39は、少なくとも一実施例による並列処理ユニット(「PPU」)3900を示す。少なくとも一実施例では、PPU3900は、PPU3900によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3900に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3900はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実施され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3900によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3900は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実施するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3900を利用して、線形代数演算及び機械学習演算などの計算が実行される。図39は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
少なくとも一実施例では、1つ又は複数のPPU3900は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3900は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアルタイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
少なくとも一実施例では、PPU3900は、限定することなく、入力/出力(「I/O」)ユニット3906、フロント・エンド・ユニット3910、スケジューラ・ユニット3912、ワーク分配ユニット3914、ハブ3916、クロスバー(「Xbar」:crossbar)3920、1つ又は複数の汎用処理クラスタ(「GPC」:general processing cluster)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に送信することができる。少なくとも一実施例では、図35と併せて本明細書でさらに詳細に説明されるように、PPU3900は、PPU3900に結合された別々の個別メモリ・デバイス3904の数に等しいU個のパーティション・ユニット3922を、限定することなく含む。少なくとも一実施例では、パーティション・ユニット3922は、図41と併せて本明細書でさらに詳細に説明される。
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3900で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実施している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3900によって同時に実行され、PPU3900は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3900によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3900によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図41と併せて少なくとも一実施例によりさらに詳細に説明される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU3900に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3900は、別のプロセッサ若しくはシステムによって、又はPPU3900によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU3900は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図40は、少なくとも一実施例による汎用処理クラスタ(「GPC」)4000を示す。少なくとも一実施例では、GPC4000は、図39のGPC3918である。少なくとも一実施例では、各GPC4000は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC4000は、限定することなく、パイプライン・マネージャ4002、プレ・ラスタ演算ユニット(「PROP」:pre-raster operations unit)4004、ラスタ・エンジン4008、ワーク分配クロスバー(「WDX」:work distribution crossbar)4016、メモリ管理ユニット(「MMU」)4018、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Clusters)4006、及びパーツの任意の好適な組合せを含む。
少なくとも一実施例では、GPC4000の動作は、パイプライン・マネージャ4002によって制御される。少なくとも一実施例では、パイプライン・マネージャ4002は、GPC4000に配分されたタスクを処理するために1つ又は複数のDPC4006の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ4002は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実施するように、1つ又は複数のDPC4006のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC4006は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)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」:M-Pipe Controller)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つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC4000に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC4000は、別のプロセッサ若しくはシステムによって、又はGPC4000によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC4000は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
図41は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット4100を示す。少なくとも一実施例では、パーティション・ユニット4100は、限定することなく、ラスタ演算(「ROP」)ユニット4102、レベル2(「L2」)キャッシュ4104、メモリ・インターフェース4106、及びそれらの任意の好適な組合せを含む。メモリ・インターフェース4106はメモリに結合される。メモリ・インターフェース4106は、高速データ転送のために、32、64、128、1024ビットのデータ・バスなどを実施してもよい。少なくとも一実施例では、PPUは、U個のメモリ・インターフェース4106をパーティション・ユニット4100の対当たりに1つのメモリ・インターフェース4106に組み込んでおり、ここでパーティション・ユニット4100の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
少なくとも一実施例では、メモリ・インターフェース4106は、高帯域幅メモリの第2世代(「HBM2」:high bandwidth memory second generation)メモリ・インターフェースを実施し、YはUの半分に等しい。少なくとも一実施例では、HBM2メモリ・スタックは、PPUと同じ物理パッケージに位置付けられて、従来のGDDR5 SDRAMシステムに比べて実質的な電力と面積の節約を実現する。少なくとも一実施例では、各HBM2スタックは、限定することなく4個のメモリ・ダイを含み、Yは4に等しく、各HBM2スタックは、1つのダイ当たりに2つの128ビット・チャネルの合計8チャネル、及び1024ビットのデータ・バス幅を含む。少なくとも一実施例では、メモリは、1ビット・エラー訂正2ビット・エラー検出(「SECDED」:Single-Error Correcting Double-Error Detecting)エラー訂正コード(「ECC」)をサポートしてデータを保護する。ECCは、データ破損を受けやすいコンピュート・アプリケーションに、より高い信頼性を提供する。
少なくとも一実施例では、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のSMである。少なくとも一実施例では、SM4200は、限定することなく、命令キャッシュ4202、1つ又は複数のスケジューラ・ユニット4204、レジスタ・ファイル4208、1つ又は複数の処理コア(「コア」)4210、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)4212、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)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は、DPC上で新規のワークを起動するためにスケジューラ・ユニット4204が使用できるコマンドを書き込む。
少なくとも一実施例では、PPUは、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイスなどに含まれ、又はこれらに結合される。少なくとも一実施例では、PPUは、単一の半導体基板に具体化される。少なくとも一実施例では、PPUは、追加のPPU、メモリ、縮小命令セット・コンピュータ(「RISC」)CPU、メモリ管理ユニット(「MMU」)、デジタル-アナログ変換器(「DAC」:digital-to-analog converter)などの1つ又は複数の他のデバイスとともにシステム・オン・チップ(「SoC」)に含まれる。
少なくとも一実施例では、PPUは、1つ又は複数のメモリ・デバイスを含むグラフィックス・カードに含まれてもよい。グラフィックス・カードは、デスクトップ・コンピュータのマザーボード上のPCIeスロットとインターフェースをとるように構成されてもよい。少なくとも一実施例では、PPUは、マザーボードのチップセットに含まれる統合グラフィックス・プロセッシング・ユニット(「iGPU」:integrated graphics processing unit)であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1415が使用される。推論及び/又は訓練論理1415に関する詳細事項は、図14A及び/又は図14Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM4200に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM4200は、別のプロセッサ若しくはシステムによって、又はSM4200によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM4200は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
少なくとも一実施例は、上述した技法を使用して構築されてもよい。少なくとも一実施例では、ロボット制御システムの評価及び生成のネットワークは、上述した通りにプロセッサを使用して実施されてもよい。
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実施形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
少なくとも一実施例では、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ2004及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム2000が実行できるようにする。メモリ2004、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU2002、並列処理システム2012、CPU2002と並列処理システム2012の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び集積回路の任意の好適な組合せの文脈において実施される。
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実施される。少なくとも一実施例では、コンピュータ・システム2000は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
少なくとも一実施例では、並列処理システム2012は、限定することなく、複数の並列処理ユニット(「PPU」)2014、及び関連メモリ2016を含む。少なくとも一実施例では、PPU2014は、相互接続2018及びスイッチ2020又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム2012は、計算タスクをPPU2014にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU2014の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU2014に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU2014の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU2014にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の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つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実施機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実施形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
上の議論は、記載した技法の例示的な実施形態について述べているが、記載した機能を実施するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実施する例示的な形として開示されている。