JP2022024952A - 物体引渡しの機械学習制御 - Google Patents

物体引渡しの機械学習制御 Download PDF

Info

Publication number
JP2022024952A
JP2022024952A JP2020178736A JP2020178736A JP2022024952A JP 2022024952 A JP2022024952 A JP 2022024952A JP 2020178736 A JP2020178736 A JP 2020178736A JP 2020178736 A JP2020178736 A JP 2020178736A JP 2022024952 A JP2022024952 A JP 2022024952A
Authority
JP
Japan
Prior art keywords
posture
processor
memory
robot
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2020178736A
Other languages
English (en)
Inventor
ヤン ウェイ
Jan Way
ジェイソン パクストン クリストファー
Jason Paxton Christopher
- ウェイ チャオ ユー
Yu-Wei Chao
フォックス ディーター
Fox Dieter
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of JP2022024952A publication Critical patent/JP2022024952A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1612Programme controls characterised by the hand, wrist, grip control
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1628Programme controls characterised by the control loop
    • B25J9/163Programme controls characterised by the control loop learning, adaptive, model based, rule based expert control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/041Abduction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/30Scenes; Scene-specific elements in albums, collections or shared content, e.g. social network photos or video
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/107Static hand or arm
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/107Static hand or arm
    • G06V40/11Hand-related biometrics; Hand pose recognition
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39271Ann artificial neural network, ffw-nn, feedforward neural network
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39487Parallel jaws, two fingered hand
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39543Recognize object and plan hand shapes in grasping movements
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/39Robotics, robotics to robotics hand
    • G05B2219/39546Map human grasps to manipulator grasps
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40202Human robot coexistence
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40559Collision between hand and workpiece, operator
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40609Camera to monitor end effector as well as object to be handled
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B2219/00Program-control systems
    • G05B2219/30Nc systems
    • G05B2219/40Robotics, robotics mapping to robotics vision
    • G05B2219/40613Camera, laser scanner on end effector, hand eye manipulator, local
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Software Systems (AREA)
  • Multimedia (AREA)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Robotics (AREA)
  • Mechanical Engineering (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Orthopedic Medicine & Surgery (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Human Computer Interaction (AREA)
  • Molecular Biology (AREA)
  • Databases & Information Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Manipulator (AREA)
  • Control Of Driving Devices And Active Controlling Of Vehicle (AREA)

Abstract

【課題】ロボットが人間のオペレータから物体を受け取れるようにする信頼性の高い引渡しの技法を提供する。【解決手段】ロボット制御システムは、物体102を保持している人間の手104の画像を取得し、人間の手104及び物体102の姿勢を推定し、人間の手104に干渉しないロボットの把持姿勢を決定することにより、人間の把持から物体102を取るようにロボットに指示する。少なくとも一実例では、深度カメラを使用して、物体102を保持している人間の手104の点群が取得される。人間の指をつまむ又はそれに接触することなく、人間の手104から物体102を取ることができる、ロボット・グリッパ106のための把持姿勢を生成するように訓練されたディープ・ネットワークに、点群が提供される。【選択図】図1

Description

タスクのロボティック・オートメーションは、重要な開発分野である。しかし、一部のタスクは、人間のオペレータとの協働が必要である。パーソナル・ケアのタスク、物体引渡し、又はロボットのタスクと手動のタスクとの間のインターフェース動作などのタスクは、ロボットと人間との間の相互作用が必要であることが多い。協働タスク空間内の1つの問題は、人間のオペレータとロボットとの間で物体を交換することである。タスク実行の一部として、交換は、ロボットから人間へ且つ/又は人間からロボットへ行われてもよい。人間の手から物体を取るとき、物体を確実に把持できるが人間の手に干渉する把持をロボットが選択する場合に、交換が困難になることがある。失敗すると、物体が落下することがあり、場合によっては人間のオペレータが負傷することがある。したがって、ロボットが人間のオペレータから物体を受け取れるようにする信頼性の高い引渡しの技法を開発することが、協働タスクの空間において重要な問題である。
図面を参照しながら様々な技法を説明する。
一実施例による、手のひらを下にして物体をつまむ把持を人間が実行する、人間とロボットとの相互作用姿勢の実例を示す図である。 一実施例による、物体を降ろす把持を人間が実行する人間とロボットとの相互作用姿勢の実例を示す図である。 一実施例による、手のひらを上にして物体をつまむ把持を人間が実行する人間とロボットとの相互作用姿勢の実例を示す図である。 一実施例による、水平方向に物体をつまむ把持を人間が実行する人間とロボットとの相互作用姿勢の実例を示す図である。 一実施例による、ロボットと人間の手の間で引渡しを実行するためのフレームワークの実例を示す図である。 一実施例による、ロボットからの物体の移動をプロンプトするために使用できる人間の手の姿勢の実例を示す図である。 一実施例による、物体を把持するために使用されてもよい手の姿勢の実例を示す図である。 一実施例による、ロボット・グリッパの実例を示す図である。 一実施例による、4本の指を有するロボット・グリッパの実例を示す図である。 一実施例による、ロボットと人間の相互作用の実例を示す図である。 一実施例による、人間とロボットとの相互作用システムの性能を表すデータを示す図である。 一実施例による、ロボットに物体を提示するために使用されてもよい手の姿勢の実例を示す図である。 一実施例による、コンピュータ・システムによって実行された結果、ロボットと人間の手との間で物体の移動を実行するプロセスの実例を示す図である。 少なくとも一実施例による、推論及び/又は訓練論理を示す図である。 少なくとも一実施例による、推論及び/又は訓練論理を示す図である。 少なくとも一実施例による、ニューラル・ネットワークの訓練及び展開を示す図である。 少なくとも一実施例による、例示的データ・センタ・システムを示す図である。 少なくとも一実施例による、自律車両の実例を示す図である。 少なくとも一実施例による、図16Aの自律車両のカメラのロケーション及び視野の実例を示す図である。 少なくとも一実施例による、図16Aの自律車両の例示的システム・アーキテクチャを示すブロック図である。 少なくとも一実施例による、クラウド・ベースのサーバと図16Aの自律車両との通信のためのシステムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示すブロック図である。 少なくとも一実施例による、コンピュータ・システムを示すブロック図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、共有プログラミング・モデルを示す図である。 少なくとも一実施例による、共有プログラミング・モデルを示す図である。 少なくとも一実施例による、例示的な集積回路及び関連するグラフィックス・プロセッサを示す図である。 少なくとも一実施例による、例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。 少なくとも一実施例による、例示的な集積回路及び関連グラフィックス・プロセッサを示す図である。 少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。 少なくとも一実施例による、追加の例示的グラフィックス・プロセッサ論理を示す図である。 少なくとも一実施例による、コンピュータ・システムを示す図である。 少なくとも一実施例による、並列プロセッサを示す図である。 少なくとも一実施例による、パーティション・ユニットを示す図である。 少なくとも一実施例による、処理クラスタを示す図である。 少なくとも一実施例による、グラフィックス・マルチプロセッサを示す図である。 少なくとも一実施例による、マルチ・グラフィックス・プロセッシング・ユニット(GPU)システムを示す図である。 少なくとも一実施例による、グラフィックス・プロセッサを示す図である。 少なくとも一実施例による、プロセッサ用のプロセッサ・マイクロ・アーキテクチャを示すブロック図である。 少なくとも一実施例による、深層学習アプリケーション・プロセッサを示す図である。 少なくとも一実施例による、例示的ニューロモーフィック・プロセッサを示すブロック図である。 1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。 1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。 1つ又は複数の実施例による、グラフィックス・プロセッサの少なくとも一部分を示す図である。 少なくとも一実施例による、グラフィックス・プロセッサのグラフィックス処理エンジン3510のブロック図である。 少なくとも一実施例による、グラフィックス・プロセッサ・コアの少なくとも一部分のブロック図である。 少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3700を示す図である。 少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3700を示す図である。 少なくとも一実施例による、並列処理ユニット(「PPU」)を示す図である。 少なくとも一実施例による、汎用処理クラスタ(「GPC」)を示す図である。 少なくとも一実施例による、並列処理ユニット(「PPU」)のメモリ・パーティション・ユニットを示す図である。 少なくとも一実施例による、ストリーミング・マルチプロセッサを示す図である。
本明細書は、人間の手に提示された物体をロボットが受け取れるようにする視覚ベースのシステムについて説明する。一実例では、人間が物体を把持し、それを深度カメラで監視される視覚フィールド内に提示する。深度カメラは、物体を把持している手の3D画像を撮りそれをシステムに提供する。システムは画像から点群を生成し、人間の手に関連付けられた点群の部分と、物体に関連付けられた点群の部分とを分離する。この情報を使用して、システムは、人間の手の姿勢及び物体の姿勢を判定することができる。システムは、物体を把持するためにロボットによって実行されることが可能な把持のセットを生成し、次いでその把持のセットから、人間の手に干渉しない把持を選択する。一実装形態では、人間の把持が様々なタイプの手の姿勢に分類されて、物体を取得するためにロボットの適切な把持をシステムが選択するのを支援する。別の実装形態では、グラウンド・トゥルースの手及び物体の姿勢でアノテーション付けされた人間による物体引渡しのデータセットを前提として、ディープ・ネットワークが訓練され、このネットワークは、深度カメラによって観察された色付き点群を入力として取って、物体から人間の手をセグメント化し、ロボットが人間の指をつままずに、人間の手から物体を受け取ることができるように、ロボットの適切な把持及び制御を提案する。本明細書に記載の技法は、様々な実施例において、1台のロボットから別のロボットに、又は動物からロボットに物体が渡される場合に、又はいくつかの実例では、人間の手以外の付属肢から物体が取られるとき(たとえば、帽子を取るときなど)に、システムに適用されてもよい。
人間とロボットとの間で物体を移動させることは、人間と協働するロボットにとって重要な機能である。ロボットから人間への引渡しも、人間からロボットへの引渡しも難しいことがある。本明細書に記載のいくつかの技法は、人間からロボットへの引渡しの手法を説明し、この手法では、人間による物体の把持を分類し、それに応じて迅速に軌道を計画して、人間の意図に応じて人間の手から物体を取ることにより、ロボットが途中で人間に応じる。少なくとも一実施例は、様々な手の形状及び姿勢で物体を保持する典型的なやり方をカバーする人間の把持のデータセットを収集し、このデータセットについてディープ・モデルを学習して、これらのカテゴリのうちの1つに手の把持を分類する。少なくとも一実施例は、検出された把持及び手の位置に応じて、人間の手から物体を取り、また引渡しが妨げられたときには必要に応じて再計画する計画及び実行の手法を提供する。体系的評価により、本明細書は、様々な実施例が2つのベースラインよりも改善された引渡しを実現することを示す。
人間に物体を与え、人間から物体を取ることは、製造から家庭での身体的支援に至る用途にわたる協働ロボットにとって、基本的な機能である。いくつかの技法は、ロボットから人間への物体の移動に焦点を当て、反対の移動については、人間がロボットのグリッパに物体を置けばよいだけであると仮定する。この手法は、手術中など、人間が手元のタスクに注意を払う必要がある状況、又は障害により人間の運動性若しくは腕の動きが制限される状況では、場合により実行不可能である。したがって、少なくとも一実施例は、人間がロボットに物体を提示し、途中でロボットと接して物体を取るというやり方に適合し得る、より反応的な引渡しを実現する。
少なくとも一実施例では、人間からロボットへの引渡しを反応的にする際の1つの課題は、物体及び人間を確実且つ継続的に知覚することである。少なくとも一実施例は、コンピュータ・ビジョンの方法を利用して、人間の手の姿勢並びに6Dの物体姿勢を推定する。手の姿勢と物体の姿勢を別々に推定する技法を含む様々な技法が使用されてもよい。少なくともいくつかの実施例は、手が物体と相互作用している間に、手及び物体の姿勢を推定する。
少なくとも一実施例では、本明細書に記載の技法は、人間からロボットへの引渡しの知覚の問題を、手の把持の分類問題として策定することにより、それに対処する。一実例では、この技法は、人間が小さい物体を保持できるやり方をいくつかのカテゴリに離散化し、物体を保持している所与の人間の手をこれらの把持カテゴリのうちの1つに分類するディープ・モデルを学習するためのデータセットが収集される。引渡しタスクは、頑健論理動的システム(Robust Logical-Dynamical System)としてモデル化され、このシステムは、人間の把持の分類を前提として、グリッパと人間の手の接触を回避する動作計画を生成する。少なくとも一実施例は、2つのベースライン方法と比較され、その方法の一方は、人間の手の姿勢を推論しない方法であり、他方は、独立した手と物体の姿勢推定に依存する方法である。少なくとも一実施例は、この2つのベースラインより、我々の手法の方が成功率及び時間効率が高いことを実証する。ユーザ調査(N=9)が示され、先入的知識のないユーザがロボットに注意を払っているときと、二次的タスクに集中しているときの両方で、これらユーザに伴う有効性を実証する。
少なくとも一実施例は、視覚ベースの信頼性の高いアルゴリズムを提供し、このアルゴリズムは、人間からロボットへの引渡し又はロボットからロボットへの引渡しのタスクについて、たとえば、ロボットが人間又は別のロボットからどのように物体を取ることができるかについて、衝突を回避するための把持を生成することができる。少なくとも一実施例は、物体が人間の手によってどのように保持されているかに基づき、ロボットが物体を把持するやり方を調節する。その結果、少なくとも一実施例は、人間の手と接触しないことについて、より信頼性が高い。
人間とロボットとの間の引渡しは、協働的な製造から家庭での支援に至る多数の応用分野にわたって、人間とロボットとの協働において重要なトピックである。少なくとも一実施例は、ロボットが手に物体を持った状態から開始しそれを人間に渡す、ロボットから人間への引渡しに焦点を当てる。1つの課題は、最適化すべきロボットの行動のパラメータを選択して、滑らかな引渡しを行うことである。これには、ユーザの快適さ、主観的フィードバックに基づく嗜好、引渡し後の物体のアフォーダンス及び目的とする使用法、人間の動作制約、人間の社会的役割、並びに引渡し前に把持されているときの物体の構成を考慮して、物体姿勢、及び物体に対するロボットの把持を選択することが含まれる。少なくとも一実施例は、引渡し姿勢に到達するための軌道のパラメータを重要視して、アプローチ角度、引渡し姿勢とは対照的な軌道の開始姿勢、動作の円滑さ、物体の開放時間、推定される人間の手首姿勢、引渡し段階の相対的なタイミング、及び人間の人間工学的な嗜好を探る。いくつかの実施例は、引渡しパラメータのオフライン計算に焦点を当てる一方で、少なくとも一実施例は、反応的な引渡しを可能にするために人間の知覚を必要とする。
本明細書に記載の技法は、反応的な引渡しを可能にし、人間の手の姿勢推定技法を利用するために、人間の知覚に焦点を当てる。人間の手の姿勢推定は、2次元RGB単眼画像、又は3D深度カメラ情報の両方を用いて実現することができる。一般に、3D深度カメラは、2次元RGB画像のみに依存する技法よりも、手の姿勢をより正確に推定できるようにする追加的な情報を提供する。
本明細書に記載の技法は、ロボットの反応的なタスク計画を自動で生成するための手法である頑健論理動的システムに基づきタスクを実行するためのシステムを実装する。少なくとも一実施例では、この概念は、現在の論理状態を継続的に識別し、論理状態の不確実性及び変化に対処するように反応的に再計画するものであり、部分的に観察可能な環境を取り扱うのに有用な手法である。いくつかの実例では、人間とロボットとの協働に有用な、複雑なタスクを表現するための方法であるBehavior Treeと同様のやり方で、タスク・モデルを考えることができる。
少なくとも一実施例は、人間の把持姿勢を分類することによって、この問題を部分的に解決する。少なくとも一実施例では、人間の把持姿勢は7つのカテゴリに離散化され、これらのカテゴリは、人間の手が物体を把持できるすべてのやり方をカバーしていないことがある。
少なくとも一実施例では、グラウンド・トゥルースの手及び物体の姿勢でアノテーション付けされた、人間による物体引渡しのデータセットが生成される。このデータセットを使用してディープ・ネットワークが訓練され、このネットワークは、RGB深度カメラによって取得された色付き点群を入力として取って、物体から人間の手をセグメント化し、ロボットが人間の指をつまむ又はそれに接触することなく、人間の手から物体を受け取ることができるように、ロボットの把持及び制御を提案する。
本明細書に記載の技法の1つの利点は、手と物体の操作データセットから学習することにより、人間の手(又は、別のロボットのグリッパ)をつままずに、人間の手/別のロボットから物体を受け取ることができるロボットの把持を、モデルが生成できるかもしれないことである。いくつかの実例は、多くのウェアラブル・センサより安価で軽量なRGB-Dカメラに基づく低コストの解決策を提供する。様々な実施例は、より複雑なロボット・システムを構築するときに重要である確実な引渡しを可能にする。たとえば、本明細書に記載の技法は、人間と緊密に作業できる高齢者介護ロボット又は調理ロボットに適用可能であってもよい。
本明細書に記載の技法は、様々な実施例において、(1)分類の問題として提示された引渡しについて、多様な手の形状及び姿勢をカバーするデータセットによる、手と物体の相互作用の推理、(2)ロボットが滑らかで自然に人間に反応できるように、人間から物体を取るためのロボットの把持を適応的に計画するシステム、並びに、(3)ベースライン方法よりも改善されていることを実証する実験結果、及び先入的知識のないユーザについて我々の手法を検証するユーザ調査を提供する。
人間の手は、物体を異なるやり方で。人間の手は、物体をその手のひらにおいて提示することができ、又はつまむ把持を使用し物体を異なる向きで提示することができる。本明細書に記載の技法は、人間がどの把持を使用しているかを判定することができ、それに適宜順応して、人間とロボットとの間の反応的な引渡しを可能にする。
図1は、一実施例による、手のひらを下にして物体をつまむ把持を人間が実行する、人間とロボットとの相互作用姿勢の実例を示す図である。ロボット100は、人間の手104から物体102を取るように位置決めされる。少なくとも一実施例では、深度カメラは、物体102を把持している人間の手104の画像を撮り、この画像から点群を生成し、この点群を訓練済みニューラル・ネットワークに提供する。ニューラル・ネットワークは、ロボット100に連結されたロボット・グリッパ106について適切な把持を生成し、それによりロボット・グリッパ106は、人間の手104に干渉することなく物体102を把持することができる。
図2は、一実施例による、物体を降ろす把持を人間が実行する人間とロボットとの相互作用姿勢の実例を示す図である。ロボット200は、人間の手204から物体202を取るように位置決めされる。少なくとも一実施例では、深度カメラは、物体202を把持している人間の手204の画像を撮り、この画像から点群を生成し、この点群を訓練済みニューラル・ネットワークに提供する。ニューラル・ネットワークは、ロボット200に連結されたロボット・グリッパ206について適切な把持を生成し、それによりロボット・グリッパ206は、人間の手204に干渉することなく物体202を把持することができる。
図3は、一実施例による、手のひらを上にして物体をつまむ把持を人間が実行する人間とロボットとの相互作用姿勢の実例を示す図である。ロボット300は、人間の手304から物体302を取るように位置決めされる。少なくとも一実施例では、深度カメラは、物体302を把持している人間の手304の画像を撮り、この画像から点群を生成し、この点群を訓練済みニューラル・ネットワークに提供する。ニューラル・ネットワークは、ロボット300に連結されたロボット・グリッパ306について適切な把持を生成し、それによりロボット・グリッパ306は、人間の手304に干渉することなく物体302を把持することができる。
図4は、一実施例による、水平方向に物体をつまむ把持を人間が実行する人間とロボットとの相互作用姿勢の実例を示す図である。ロボット400は、人間の手404から物体402を取るように位置決めされる。少なくとも一実施例では、深度カメラは、物体402を把持している人間の手404の画像を撮り、この画像から点群を生成し、この点群を訓練済みニューラル・ネットワークに提供する。ニューラル・ネットワークは、ロボット400に連結されたロボット・グリッパ406について適切な把持を生成し、それによりロボット・グリッパ406は、人間の手404に干渉することなく物体402を把持することができる。
少なくとも一実施例では、ロボットが人間の手から物体を取るときに、人間の手によって物体が把持されているやり方に応じてロボットの動作が調節される。概して、これにより、ロボットが非直感的なやり方で挙動すること、又は人間の指を邪魔する、若しくはさらに人間の指と危険な接触をするやり方で挙動することが防止される。少なくとも一実施例では、アジュール身体追跡(Azure Body Tracking)のソフトウェア開発キット(「SDK」)によって検出された人間の手を中心とする点群を取り、次いで物体が人間の手によってどのように把持されるかに基づき、手の把持のクラスを推定することにより、引渡しフレームワークがこの問題に対処する。次いで、少なくとも一実施例は、ロボットの把持を順応的に計画する。
図5は、一実施例による、ロボットと人間の手の間で引渡しを実行するためのフレームワークの実例を示す。一実例では、フレームワークは、物体を保持する手を示すRGBD画像502を取得する。RGBD画像を使用して、手及び物体の点群504が生成される。少なくとも一実施例では、フレームワークは、手の検出を中心とする点群を取り、次いで人間のユーザにより物体が把持される傾向がある様々なやり方をカバーする7つの把持タイプのうちの1つとして点群を分類するために、モデル506を使用する。次いで、タスク・モデルは、ロボットの把持を順応的に計画する508。
図6は、一実施例による、ロボットからの物体の移動をプロンプトするために使用できる人間の手の姿勢の実例を示す。たとえば、第1の手の姿勢602は、人間が物体を受け取る準備ができたことを知らせる姿勢として設計されてもよく、第2の手の姿勢604は、人間がロボットから物体を受け取る準備ができていないことを示す姿勢として設計されてもよい。
少なくとも一実施例は、引渡しのタスクのために物体が人間の手によって把持されるやり方を示す人間の把持の離散的なセットを定義する。少なくとも一実施例は、人間とロボットとの間の引渡しのタスクについてよくある人間の把持を、図7に示すものなどの7つのカテゴリに離散化する。たとえば、手がブロックを把持している場合には、手の姿勢は、開いた手のひらの上、下部をつまむ、上部をつまむ、側部をつまむ、又は持ち上げるとして分類されることが可能である。別の例では、手が何も保持していない場合には、手は、ロボットが物体を渡すのを待っているか、特に何もしていない(その他)のいずれかとすることができる。
図7は、一実施例による、物体を把持するために使用されてもよい手の姿勢の実例を示す図である。第1の手の姿勢704は、開いた手のひらに物体が保持されている様子を示す。第2の手の姿勢704は、下部のつまみ位置で物体が保持されている様子を示す。第3の手の姿勢706は、持ち上げる姿勢で物体が保持されている様子を示す。第4の手の姿勢708は、上部のつまみ位置で物体が保持されている様子を示す。第5の手の姿勢710は、側部からつままれたときに物体が保持されている様子を示す。物体をロボットに提示するときに、上記その他の手の姿勢が、人間によって使用されてもよい。いくつかの実装形態では、図7に示す手の姿勢のカテゴリなど、手の姿勢の分類が使用されてもよい。他の実装形態では、手の姿勢は、図7に示していない様々なタイプの手の姿勢を含んでもよい自由形式とすることができる。こうした実例では、システムは、手の点群又は骨格姿勢を使用して、ロボットが人間の手から物体を取るのに適した姿勢を構築してもよい。
図8Aは、一実施例による、ロボット・グリッパの実例を示す。一実例では、ロボット・グリッパ802は、閉じたり離したりできるあご804のセットを含む。いくつかの実例は、力の程度をシステムによって取得できるように、あご804の表面に触覚センサを含んでもよい。いくつかの実例では、グリッパ802は、システムの制御下であご804のセットを関節駆動及び位置決めすることができる手首関節を含む。
図8Bは、一実施例において使用することができる4本の指を有するロボット・グリッパ806の実例を示す。ロボット・グリッパ806は、人間の手をほぼ真似た第1の指808、第2の指810、第3の指812、及び対向する指814を含む。ロボット・グリッパ806は、本明細書に記載し図示する様々な実施例により使用することができる。たとえば、人間の手に保持された物体を、人間の手に干渉しないやり方で取るために、ロボット・グリッパ806が使用されてもよい。さらに、より多く又はより少ない指を有する他のタイプのロボット・グリッパも、使用することができる。一実例では、ロボット・グリッパは2本、3本、4本、5本、又はそれ以上の指を有してもよく、各指は、物体の把持を支援するための摩擦表面を有してもよい。一実例では、ロボット・グリッパの指は、物体との接触を示すことによりシステムを支援する触覚センサを有してもよい。一実例では、グリッパは、鉄を含む物体を人間の手から取るのを支援するために磁気要素を含んでもよい。別の実例では、グリッパは、物体を捕捉するための真空ピックアップ要素を含んでもよい。
一実例では、人間の把持を分類するためのモデルを学習するために、実施例は、アジュール・キネクト(Azure Kinect)RGBDカメラを使用することにより、様々な手の形状及び手の姿勢を有する8人の対象者をカバーするデータセットを生成する。たとえば、一実装形態では、手の把持の例示的な画像が、対象者に示され、その対象者によって実行された同様の姿勢が、20秒~60秒にわたって記録される。一連の画像は、人間の把持の対応するカテゴリとしてラベル付けされる。記録中、対象者は自らの体及び手を異なる位置に動かして、カメラの視点を多様化することができる。対象者ごとに左右両方の手が記録される。一実例では、データセットは151,551個の画像から構成される。
深度画像についてConvNetsを用いて深層特徴を学習する代わりに、少なくとも一実施例は、点群についてPointNet++を採用して、人間の把持を分類する。少なくとも一実施例では、バックボーンのネットワークは、点特徴を学習するための4つのセット抽象化層と、バッチ正規化、ReLu、及びドロップアウトを有する3層のパーセプトロンから構成されて、グローバル特徴の学習及び人間の把持の分類が行われる。手の周りでクロッピングされた点群を前提として、ネットワークは、定義された把持カテゴリのうちの1つにそれを分類し、これがロボット把持のさらなる計画のために使用されてもよい。
少なくとも一実施例は、人間からロボットへの引渡し中に人間の労力を最小に抑えるために、それぞれの人間の把持タイプを、規範的なロボット把持方向と関連付ける。図3に示すように、座標が、カメラ・フレーム内の規範的なロボット把持フレームを示す。動機は、ロボットが人間の手をつかむ可能性を低くしながら、その動作及び軌道を、可能な限り自然で円滑に保つことである。
タスク・モデルの少なくとも一実施例は、頑健論理動的システムに基づく。これは、特定の特性を有し反応的に実行される演算子oのリストとして、タスクを表す。各演算子は、タプルo={L,L,L,π}であり、ここでLは、oに入る際の論理前提条件のセットであり、Lは、oの実行が進行中に適用しなくてはならない実行条件のセットであり、Lは、真になることになる論理効果のセットである。演算子は、ポリシーπにも関連付けられ、ポリシーπは、効果Lを実現するのに必要な制御を生成する。少なくとも一実施例では、ポリシー及び述語はデータから学習されるが、他の実施例では、手動で指定される。計画を前提として、少なくとも一実施例は、変更に迅速に応答できるように10hzで条件を確認して、優先順位が最も高い、前提条件が満たされる演算子を選択する。
図9は、一実施例によるロボットと人間の相互作用の実例を示す。図9は、最終的なタスク計画の様々なステップの概要を提供する。少なくとも一実施例では、システムは、人間のユーザに近づき、そのユーザから物体を取る正しいやり方を反応的に選択して、様々な実現可能な把持に順応しなくてはならない。一実例では、システムは、人間がどのようにブロックを提示したいのかについて安定した推定が得られるまで、「ホーム」位置に留まり待機する。
様々な実施例では、人間からロボットへの引渡しは、人間が適切な姿勢で物体を提示するのをロボットが待機し902、次いで物体を把持できるようにロボット・グリッパを位置決めする計画を作成し904、物体906を把持し906、次いでいくつかの実例では物体を落とす908という4つのステージで実現される。
反応的な局所的計画を使用するだけではなく、いつくかの実装形態は、多数の実現可能な把持に基づき計画し、知的な決定を下して、人間のユーザにとって自然な把持を見いだす。以下の表は、タスク計画の一実施例を、優先順位の高いものから示す。以下の表には、タスク実行のための演算子及び対応する前提条件L、並びに反応的な実行が示してある。演算子は、優先順位の高いものから列挙され、すべての前提条件が真ならば、本明細書に記載の技法は、前に実行された演算子が何であったかに関わらず、関連する演算子を実行する。
Figure 2022024952000002
人間を待機。少なくとも一実施例は、ロボットが手でどのように相互作用すべきかを決定するいくつかの述語を算出する。すなわちstable、hand_over_table、及びhand_has_obj、及びtoo_close_to_handである。述語hand_over_tableは、これらの観察が、上に示したテーブル上の特定のボリューム内にあるか否かに対応し、stable()は、手が動いておらず、且つ手が少なくとも5回のタイムスタンプ(0.5秒)にわたって観察されているならば、真である。これは、少なくとも部分的に速度:
stable()=||xt-1-x||<λ
に基づき定義され、ここで閾値λについて位置がx、時間がtである。これらの条件が真でない場合には、ロボットはホーム位置で待機する。
人間を回避。少なくとも一実施例では、いずれかの手についてtoo_close_to_hand()が真であり、ロボットが、特定の把持に対応するアプローチ領域にない場合には、ロボットは手を回避しようとし、ホーム位置に戻ることになる。少なくとも一実施例は、エンド・エフェクタと手の間のユークリッド距離が20cm未満の場合には、too_close_to_hand()が真になるように定義する。
実現可能なゴールを見いだす。ロボットの動作が安全であるようにするため、純粋に反応的なポリシーではなく、本明細書に記載の技法は、実行するための全体的な軌道を計画する。stable()、hand_over_table()、及びhand_has_obj()の場合には、ロボットは、上述した規範的な把持姿勢を使用して、手から物体を取ろうとする。
少なくとも一実施例では、有効な軌道ξを見いだすために、ロボットはまず、有効な把持姿勢を見いだし、それによりシステムは、has_goal及びis_goal_validを加える。これらのいずれもが偽の場合には、システムは妥当なゴール姿勢をサーチする。
少なくとも一実施例では、プランナが、ゴール姿勢の候補及び関連するスタンドオフ位置のリストを生成する。一実例では、図3のy軸周りのθ_y∈{-π/4,-π/8,0,π/8,π/4}、及びz軸周りのθ_z∈{O,π}の回転において10個の選択肢が存在する。少なくとも一実施例では、実行可能なゴール選択肢とみなされるためには、把持位置とスタンドオフ位置の両方が、衝突の可能性がなく、有効なIK解を有さなくてはならない。様々な実例では、状態が有効かどうかを判定するときに、ロボットは物体についてその視界を決してオクルードしてはいけないという制約も加えられる。
計画を見いだす。少なくとも一実施例では、プランナがゴール選択肢のリストを有する場合、プランナは次いで、現在の関節構成からのゴール選択肢の距離に応じて、ゴール選択肢をソートし、RRT-Connect[58]を使用して、スタンドオフ位置までの動作計画を見いだそうとする。システムが把持姿勢と動作計画の両方を見いだすことができる場合には、ロボットは、サブポリシーを実行してこの動作計画に従う。
しかし、人間はその手を動かすことがあり、又はその手にある物体の持ち方を変えることがある。関連する動作計画をゴールが有し、物体が最初に観察された場所の何らかの閾値内でその物体が動いていない場合には、ゴールは(述語is_goal_validのとおり)有効とみなされる。物体が過剰に動く場合、ロボットは停止し、タスク・モデルは新しい把持を見いだすことに戻る。
物体を把持。少なくとも一実施例では、動作計画が完成すると、ロボットはスタンドオフ姿勢になり、関連するゴール姿勢、すなわち人間の手の中にある物体の予想される位置を有するはずである。これら2つの姿勢により、アプローチ領域、すなわち、物体に近づくためにロボットがその中で動くことができる円錐ボリュームが定義される。グリッパが閉じると、ロボットがそのゴール姿勢にある場合には、述語has_objが真に設定される。把持演算子は、物体をオクルードすることがあり、したがってこれは、単に遮断する開ループ行動として実行される。
グリッパを開放。少なくとも一実施例では、has_objが真で、ロボットが自分は物体を保持していると考えていることが示される場合、物体が移動していたり、姿勢推定が誤りであったりしたときには、この知覚は誤りであることがある。いくつかの実例では、グリッパが完全に閉じられたことを述べる述語gripper_fully_closedが加えられる。両方の条件が真の場合、has_objは偽に設定され、ロボットは異なる状態に戻る。
落としに動く、及び物体を落とす。少なくとも一実施例では、落とし位置は、単一の関節空間位置であり、ロボットは、安全な、衝突の可能性のない動作計画を見いだすことになる。ロボットが落とし位置にある場合、システムは、グリッパを開放し物体をテーブルに置くようロボットに指示することになる。
上述した分類モデル及びタスク・モデルを含め、システム全体の一実例の体系的な試験を、図7に示す様々な手の位置及び把持について実行した。実施例は、同一のテーブルの異なる場所に装着された2つの異なるFranka Pandaロボットを使用する。人間のユーザは、4個の色付きブロックを1回に1個、ロボットに渡した。体系的な評価中、どの把持姿勢を使用して人間から物体を取るかを決定するための3つの手法が、それぞれ試験された。
単純なベースライン:人間の手の中のブロックを見るまで待機し、固定された把持配向を使用して手から物体を取る。人間の手は、マイクロソフトのアジュール身体トラッカによって検出される。
手の姿勢推定:状態推定に基づくシステムのバージョンであり、このバージョンでは、アジュール身体トラッカからの人間の手の姿勢を使用して、把持方向が推論される。
提案されたシステムの実施例:人間の把持を、上述した深度情報に基づき分類する提案されたシステム。
変形形態が、上述したのと同じタスク・モデルを実行した。これら3つのテスト・ケースを提供する順番がランダム化された。ユーザは、自らの右手を使用して、ロボットにブロックを提示した。
システム性能は、試験中に算出された計量基準のセットを用いて評価された。これらは、ユーザがタスクを実行している間に自動で算出され、ログ記録された。
計画成功率:follow_plan演算子がうまく実行できた回数であり、ロボットをそのスタンドオフ姿勢にし、人間とシステムの両方の確実性を測定する。
把持成功率:ロボットが試みた把持の総数に対して、どのくらいの頻度でロボットが人間の手からうまく物体を取ることができたかである。
行動実行時間:計画された単一の軌道を実行し、ブロックを把持し、それをテーブルに置くのにかかった時間量を追跡する。ブロックを人間から把持するためにロボットがより長い経路を取らなくてはならない場合、これは高くなる。
合計実行時間:人間が動いたことによる、又は把持のやり方を変えたことによる再計画を含め、計画されたすべての経路を実行するのにかかった時間量である。
試験持続時間:人間の手が最初に検出されてから、試験が完了するまでの時間である。
図10は、体系的評価中の様々な計量基準についての結果を示す。本明細書に記載の技法は、他の2つのベースライン方法に比べて、一貫して成功率を改善し、合計実行時間及び試験持続時間短縮しており、これにより、この方法の有効性及び信頼性が証明される。第1のチャート1002では、人間の手の把持分類の精度が示される。第2のチャート1004では、我々の手の状態分類とPoseCNNとの、物体ミス検出率の比較が示される。多くの事例において、手が物体をオクルードしており、正確な姿勢推定を得ることが非常に難しいことを意味している。
1つの例外は、Action Execution Timeであり、ここでは単純なベースライン方法の方が高速な場合があるが、これは単純なベースライン方法は、他の方法ほど順応的に計画せず、例外的な把持を試みようとはしないからである。これは、成功したアプローチから物体を落とすまでの時間が、平均して、場合により著しく短くなりうることを意味する。
人間の把持分類の評価:一実施例は、訓練手順中には見られなかった対象者によって収集された検証セットについて、手の把持分類モデルを評価する。分類精度は、第1のチャート1002に報告されており、これは、初見の対象者について我々のモデルの良好な汎化能力を実証している。
さらに検出率、すなわち手の中に物体があるかどうかを評価するための実験が実行されて、オクルージョンに対して引渡しシステムがどれくらい頑健かについて見識が提供される。我々の手の把持分類モデルの検出率(物体がある/ない)が、代替的な物体検出方法の検出率と比較される。結果を第2のチャート1004に報告する。本明細書に記載の人間の把持モデルの一実施例は、特に高いオクルージョンが生じる場合に、代替方法に比べてより高い検出率を実現し、より頑健である(たとえば、側部をつまむについては87.5%対6.8%、持ち上げるについては、94.4%対11.9%)。
システムが滑らかな人間とロボットとの協働を可能にしたことを検証するために、ユーザ調査が実施された。20歳~36歳の9人のユーザが採用された。そのうち2人が女性で、7人が男性であった。平均年齢は、30.44±4.74歳であった。調査は3回で構成された。
自由形式:ユーザは4個のブロックを与えられ、テーブルの前に立ち、ブロックを1度に1個ロボットに渡すように指示された。ユーザは、ユーザの手が動かない場合のみロボットはブロックを取るが、ユーザは任意の好きなやり方でブロックを保持してもよいと指示された。
注意を払っている状態:図3に示す5種類の人間の把持のセット、すなわち上部をつまむ、下部をつまむ、側部をつまむ、持ち上げる、及び開いた手のひらの上、が実演された。参加者は、再び4個のブロックを渡すように言われた。参加者は、所定の手の把持を試すように勧められたが、任意の他の把持を使用することができた。
注意が逸らされた状態:注意を逸らすものが存在するなかで、ユーザ性能が試験された。
我々の定量的な計量基準に基づく引渡し性能の結果を、以下の表に示す。計画成功率は、どれくらいの頻度でシステムがそのアプローチを再計画する必要があったかを示し、それに対して把持成功率は、システムが物体をうまく取った回数として示す。
Figure 2022024952000003
上述した計量基準に加えて、ユーザ調査中に以下の統計もカウントした:(a)ロボット把持が人間の指に接触した回数、(b)使用する把持をユーザが変更した回数、(c)ユーザが手の位置を変えた回数。各試験の後に、参加者は、ブロックをロボットに渡す間に自らが経験した何らかの問題を述べるように依頼された。3回の試験がすべて実行された後に、参加者は、リッカート尺度のアンケートに記入し、自らの答えを説明するように依頼された。
様々な反応があったが、ユーザは、滑らかにロボットとともに作業し、ロボットが適切な行動をすると考えていたと話したものの、フィードバックを求められたとき、いくつか共通の問題に言及した。またユーザは、自らの行動をロボットが認識していたとも考えていた。
ユーザ・データについての定量的計量基準を上の表に示す。ユーザの注意が逸らされたときには、アプローチ及び把持はそれほど成功しなかったが、時間は同様である。ユーザは、音楽ビデオ内で平均12:88±3:48の顔を数え、このときの正しい数は13であった。これは、ユーザの多くが、引渡しシステムにある一定レベルの自信を感じており、ビデオに充分な量の注意を払っていたことを示唆している。
一実施例では、本明細書に記載の人間の把持のカテゴリ化は、典型的なユーザ把持の77%をカバーする。少なくとも一実施例は、初見の人間の把持のほとんどに対処することができ、初見の人間の把持は不確実性が高くなる傾向にあり、場合によってはロボットを後退させ、再計画させることがある。これらの初見の把持のいくつかを図11に示す。図11は、我々の訓練データセットには現れない外れ値の把持の実例、及び我々のシステムがより高い不確実性を示して引渡し性能がわずかに悪くなった把持のタイプの実例を示す。
注意が逸らされた状態の最終的な試験中に、ユーザは、最初の2回と比較してより頻繁に、再位置決めする、又は把持の仕方を変える必要があった。何人かのユーザは、指が挟まれたと訴え、又はロボットが物体を把持し損なったのを目の当たりにした。あるユーザは具体的に「手のひらを上に向ける手の姿勢を選んで使用して」失敗のリスクを最小に抑え、別のユーザは「10秒程度ごとにロボットを見なくてはいけなかった」。
以下の表は、ユーザ調査の定量的な結果を提供する。ユーザは、注意が逸らされた状態で、異なる状況に集中しなくてはならないときでも、迅速にタスクを完了することができた。
Figure 2022024952000004
少なくとも一実例では、システム判別しやすい、どのブロックをロボットが動かそうとうとしているか、及びどのようにそこに到達しようとしているかを示す。
全体的に、試験中、ロボットがブロックを控えめにつかもうとしているとき、ユーザはすぐに気付く。またユーザは、ロボットの把持及びアプローチ中にわずかな誤りに気付くこともあるが、通常ユーザ自身がそれに合せて調節する。実験の第2回目の後、ユーザに物体の持ち方が示されると、システムはより信頼性の高い、一緒に作業しやすいものになった。
本明細書は、異なるタイプの把持を分類することによって、人間とロボットとの間の引渡しを可能にするシステムの実施例を説明する。他の実施例は、ニューラル・ネットワークを訓練して、物体を保持する人間の手の点群から把持を生成することにより、計画システムをより柔軟にし、全般的な把持タイプをサポートする。これらの技法の変形形態は、医療手術、製造、及びパーソナル・ケア作業など、人間とロボットとの多くの他のタイプの協働に適用することができる。
図12は、一実施例による、コンピュータ・システムによって実行された結果、ロボットと人間の手の間で物体の移動を実行するプロセスの実例を示す。少なくとも一実施例は、図13~図41に示し、関連した説明に述べるものなどのコンピュータ・システム、プロセッサ、GPU、又は機械学習ネットワークを使用して、実装されてもよい。少なくとも一実施例は、コンピュータ・システムの1つ又は複数のプロセッサによって実行された結果、以下に説明する動作をコンピュータ・システムに実行させる命令を記憶するコンピュータ可読メモリから、実行可能な命令を読み取るプロセッサを使用して実装される。
少なくとも一実施例では、ブロック1202において、物体を保持する手の画像が、深度カメラを使用して取得される。様々な実例では、深度カメラは、双眼RGBカメラ、医療用撮像装置、たとえば3次元x線、超音波、CATスキャン、又は磁気共鳴撮像画像(「MRI」)とすることができる。自動運転車両を含むものなどのいくつかの実例では、画像は、レーダ撮像装置又はレーザ撮像装置(「LIDAR」)で生成された画像であってもよい。少なくとも一実施例では、ブロック1204において、システムは、画像から点群を生成する。点群は、物体及び手を表す点の3次元セットを提供する。一実例では、点群は、RGB深度カメラからの色付き点群である。
少なくとも一実例では、ブロック1206において、システムは点群を処理し、物体を保持している手を表す点群の第1の部分を識別する。ブロック1208において、システムは、物体を表す点群の第2の部分を識別する。点群の適切な部分を使用して、ブロック1210では、少なくとも一実例において、点群の第2の部分から物体の姿勢を判定し、点群の第1の部分から手の姿勢を判定する1212。一実例では、手の姿勢は、手の指について関節及びセグメントの長さを含む手の骨格構造を識別することを含む。
少なくとも一実施例では、ブロック1214において、システムは、グリッパが物体を把持できるようにするロボット・グリッパの把持姿勢のセットを生成する。これは、ブロック1210において判定された物体及び/又は物体の姿勢を表す点群の部分を使用して実現されてもよい。少なくとも一実施例では、物体の姿勢情報は、空間における物体のサイズ、形状、及び配向を含む。物体の配向は、垂直方向及び水平方向の回転及び傾斜を含むことができる。人間の手に干渉することになるが、それでも手が存在しない場合には好ましい多くの姿勢を、把持姿勢のセットは含んでもよい。
したがって、ブロック1216において、システムは、把持姿勢のセットから、手に干渉しない特定の把持を識別する。手に干渉することは、手に接触すること、又はロボット・グリッパによって手若しくは手の一部をつまむことを意味する。少なくとも一実施例では、システムは、手の指からの距離を最大限にしながら、物体にとって充分な安全基準を満たす把持を選択する。手に接触しない適切な把持を識別したあと、ブロック1218において、システムは、識別された把持を実行して人間の手から物体を取るよう、ロボットに指示する。
推論及び訓練の論理
図13Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理1315を示す。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて以下に提供される。
少なくとも一実施例では、推論及び/又は訓練論理1315は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ1301を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理1315は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1301を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1301には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、そのコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ1301は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ1301の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1301の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1301は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ1301が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1315は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ1305を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1305は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理1315は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ1305を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ1305には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU))を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、そのコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ1305の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1305の任意の部分は、1つ又は複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1305は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1305が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ1301と、コード及び/又はデータ・ストレージ1305は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1301と、コード及び/又はデータ・ストレージ1305は、同じストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1301と、コード及び/又はデータ・ストレージ1305は、部分的に同じストレージ構造で、部分的に別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ1301と、コード及び/又はデータ・ストレージ1305との任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理1315は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は算術演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)1310を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ1320に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ1301、並びに/又はコード及び/若しくはデータ・ストレージ1305に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ1320に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU1310によって実行される線形代数計算及び又は行列ベースの計算に従って生成され、ここでコード及び/又はデータ・ストレージ1305及び/又はデータ1301に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ1305、又はコード及び/若しくはデータ・ストレージ1301、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
少なくとも一実施例では、ALU1310は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU1310は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路の外部にあってもよい(たとえばコプロセッサ)。少なくとも一実施例では、ALU1310は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、データ・ストレージ1301、コード及び/又はデータ・ストレージ1305、並びにアクティブ化ストレージ1320は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ1320の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
少なくとも一実施例では、アクティブ化ストレージ1320は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ1320は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ1320が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージから構成されるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。少なくとも一実施例では、図13Aに示す推論及び/又は訓練論理1315は、グーグルからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU:inference processing unit)、又はIntel CorpからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC:application-specific integrated circuit」)と併せて使用されてもよい。少なくとも一実施例では、図13Aに示す推論及び/又は訓練論理1315は、中央処理装置(「CPU」:central processing unit)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」:graphics processing unit)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」:field programmable gate array)など他のハードウェアと併せて使用されてもよい。
図13Bは、少なくとも1つの様々な実施例による、推論及び/又は訓練論理1315を示す。少なくとも一実施例では、推論及び/又は訓練論理1315は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図13Bに示す推論及び/又は訓練論理1315は、グーグルからのTensorflow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はインテルコーポレーションからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図13Bに示す推論及び/又は訓練論理1315は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理1315は、限定することなく、コード及び/又はデータ・ストレージ1301、並びにコード及び/又はデータ・ストレージ1305を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図13Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ1301並びにコード及び/又はデータ・ストレージ1305のそれぞれは、それぞれ計算ハードウェア1302及び計算ハードウェア1306などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア1302及び計算ハードウェア1306のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ1301並びにコード及び/又はデータ・ストレージ1305に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ1320に記憶される。
少なくとも一実施例では、コード並びに/又はデータ・ストレージ1301及び1305のそれぞれ、並びに対応する計算ハードウェア1302及び1306は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ1301並びに計算ハードウェア1302との1つの「ストレージ/計算の対1301/1302」から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ1305並びに計算ハードウェア1306との「ストレージ/計算の対1305/1306」への入力として提供される。少なくとも一実施例では、ストレージ/計算の対1301/1302、及び1305/1306は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対1301/1302、及び1305/1306の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理1315に含まれてもよい。
ニューラル・ネットワークの訓練及び導入
図14は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク91406が、訓練データ・セット1402を使用して訓練される。少なくとも一実施例では、訓練フレームワーク1404は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク1404は、Tensorflow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク1404は、未訓練ニューラル・ネットワーク1406を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク1408を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1406は教師あり学習を使用して訓練され、ここで訓練データ・セット1402は、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セット1402は、既知の出力を有する入力を含み、ニューラル・ネットワーク1406の出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク1406は教師ありのやり方で訓練され、訓練データ・セット1402からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワーク1406を通って逆伝播される。少なくとも一実施例では、訓練フレームワーク1404は、未訓練ニューラル・ネットワーク1406を制御する重みを調節する。少なくとも一実施例では、訓練フレームワーク1404は、未訓練ニューラル・ネットワーク1406が、新規データ1412などの既知の入力データに基づき、結果1414などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク1408などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワーク1404は、未訓練ニューラル・ネットワーク1406を繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワーク1406の出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワーク1404は、未訓練ニューラル・ネットワーク1406が所望の精度に到達するまで未訓練ニューラル・ネットワーク1406を訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワーク1408を、任意の数の機械学習動作を実装するように導入することができる。
少なくとも一実施例では、未訓練ニューラル・ネットワーク1406は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク1406は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セット1402は、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク1406は、訓練データ・セット1402内でグループ化を学習することができ、個々の入力が、未訓練データ・セット1402にどのように関係しているかを判定することができる。少なくとも一実施例では、教師なし訓練を使用して、自己組織化マップを生成することができ、自己組織化マップは、新規データ1412の次元を低減するのに有用な動作を実行することができるタイプの訓練済みニューラル・ネットワーク1408である。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セット1412の通常のパターンから逸脱した、新規データ・セット1412内のデータ点を識別できるようにする。
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データ・セット1402に混在している技法である。少なくとも一実施例では、訓練フレームワーク1404を使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク1408は、初期訓練中にネットワーク内に教え込まれた知識を忘れることなく、新規データ1412に適合できるようになる。
データ・センタ
図15は、少なくとも一実施例が使用されてもよい例示的なデータ・センタ1500を示す。少なくとも一実施例では、データ・センタ1500は、データ・センタ・インフラストラクチャ層1510、フレームワーク層1520、ソフトウェア層1530、及びアプリケーション層1540を含む。
少なくとも一実施例では、図15に示すように、データ・センタ・インフラストラクチャ層1510は、リソース・オーケストレータ1512、グループ化済みコンピューティング・リソース1514、及びノード・コンピューティング・リソース(「ノードC.R.」:node computing resource)1516(1)~1516(N)を含んでもよく、ここで「N」は、任意の正の整数を表す。少なくとも一実施例では、ノードC.R.1516(1)~1516(N)は、任意の数の中央処理装置(「CPU」)又は(アクセラレータ、フィールド・プログラマブル・ゲート・アレイ(FPGA)、グラフィックス・プロセッサなどを含む)他のプロセッサ、メモリ・デバイス(たとえば、ダイナミック読取り専用メモリ)、ストレージ・デバイス(たとえば、半導体ドライブ又はディスク・ドライブ)、ネットワーク入力/出力(「NW I/O」:network input/output)デバイス、ネットワーク・スイッチ、仮想機械(「VM」:virtual machine)、電源モジュール、及び冷却モジュールを含んでもよいが、これらに限定されない。少なくとも一実施例では、ノードC.R.1516(1)~1516(N)のうち1つ又は複数のノードC.R.は、上述したコンピューティング・リソースのうちの1つ又は複数を有するサーバであってもよい。
少なくとも一実施例では、グループ化済みコンピューティング・リソース1514は、1つ若しくは複数のラック(図示せず)内に収容されたノードC.R.の別々のグループ、又は様々なグラフィカル・ロケーション(同じく図示せず)においてデータ・センタに収容された多数のラックを含んでもよい。グループ化済みコンピューティング・リソース1514内のノードC.R.の別々のグループは、1つ若しくは複数のワークロードをサポートするように構成又は配分されてもよいグループ化済みのコンピュート・リソース、ネットワーク・リソース、メモリ・リソース、又はストレージ・リソースを含んでもよい。少なくとも一実施例では、CPU又はプロセッサを含むいくつかのノードC.R.は、1つ又は複数のラック内でグループ化されて、1つ又は複数のワークロードをサポートするためのコンピュート・リソースが提供されてもよい。少なくとも一実施例では、1つ又は複数のラックはまた、任意の数の電源モジュール、冷却モジュール、及びネットワーク・スイッチを任意の組合せで含んでもよい。
少なくとも一実施例では、リソース・オーケストレータ1512は、1つ又は複数のノードC.R.1516(1)~1516(N)及び/若しくはグループ化済みコンピューティング・リソース1514を構成してもよく、又は他のやり方で制御してもよい。少なくとも一実施例では、リソース・オーケストレータ1512は、データ・センタ1500用のソフトウェア設計インフラストラクチャ(「SDI」:software design infrastructure)管理エンティティを含んでもよい。少なくとも一実施例では、リソース・オーケストレータは、ハードウェア、ソフトウェア、又はこれらの何らかの組合せを含んでもよい。
図15に示す少なくとも一実施例では、フレームワーク層1520は、ジョブ・スケジューラ1532、構成マネージャ1534、リソース・マネージャ1536、及び分配ファイル・システム1538を含む。少なくとも一実施例では、フレームワーク層1520は、ソフトウェア層1530のソフトウェア1532、及び/又はアプリケーション層1540の1つ若しくは複数のアプリケーション1542をサポートするためのフレームワークを含んでもよい。少なくとも一実施例では、ソフトウェア1532又はアプリケーション1542はそれぞれ、アマゾン・ウェブ・サービス、グーグル・クラウド、及びマイクロソフト・アジュールによって提供されるものなど、ウェブ・ベースのサービス・ソフトウェア又はアプリケーションを含んでもよい。少なくとも一実施例では、フレームワーク層1520は、大規模なデータ処理(たとえば「ビック・データ」)のために分配ファイル・システム1538を使用することができるApache Spark(登録商標)(以下「Spark」)など、無料でオープン・ソースのソフトウェア・ウェブ・アプリケーション・フレームワークの一種であってもよいが、これに限定されない。少なくとも一実施例では、ジョブ・スケジューラ1532は、データ・センタ1500の様々な層によってサポートされるワークロードのスケジューリングを容易にするために、Sparkドライバを含んでもよい。少なくとも一実施例では、構成マネージャ1534は、ソフトウェア層1530、並びに大規模なデータ処理をサポートするためのSpark及び分配ファイル・システム1538を含むフレームワーク層1520などの異なる層を構成することが可能であってもよい。少なくとも一実施例では、リソース・マネージャ1536は、分配ファイル・システム1538及びジョブ・スケジューラ1532をサポートするようにマッピング若しくは配分されたクラスタ化済み又はグループ化済みのコンピューティング・リソースを管理することが可能であってもよい。少なくとも一実施例では、クラスタ化済み又はグループ化済みのコンピューティング・リソースは、データ・センタ・インフラストラクチャ層1510にあるグループ化済みコンピューティング・リソース1514を含んでもよい。少なくとも一実施例では、リソース・マネージャ1536は、リソース・オーケストレータ1512と連携して、これらのマッピング又は配分されたコンピューティング・リソースを管理してもよい。
少なくとも一実施例では、ソフトウェア層1530に含まれるソフトウェア1532は、ノードC.R.1516(1)~1516(N)、グループ化済みコンピューティング・リソース1514、及び/又はフレームワーク層1520の分配ファイル・システム1538のうちの少なくとも一部分によって使用されるソフトウェアを含んでもよい。1つ又は複数のタイプのソフトウェアは、インターネット・ウェブ・ページ検索ソフトウェア、電子メール・ウイルス・スキャン・ソフトウェア、データベース・ソフトウェア、及びストリーミング・ビデオ・コンテンツ・ソフトウェアを含んでもよいが、これらに限定されない。
少なくとも一実施例では、アプリケーション層1540に含まれるアプリケーション1542は、ノードC.R.1516(1)~1516(N)、グループ化済みコンピューティング・リソース1514、及び/又はフレームワーク層1520の分配ファイル・システム1538のうちの少なくとも一部分によって使用される1つ若しくは複数のタイプのアプリケーションを含んでもよい。1つ若しくは複数のタイプのアプリケーションは、任意の数のゲノム学アプリケーション、認識コンピュート、並びに訓練若しくは推論のソフトウェア、機械学習フレームワーク・ソフトウェア(たとえば、PyTorch、Tensorflow、Caffeなど)を含む機械学習アプリケーション、又は1つ若しくは複数の実施例と併せて使用される他の機械学習アプリケーションを含んでもよいが、これらに限定されない。
少なくとも一実施例では、構成マネージャ1534、リソース・マネージャ1536、及びリソース・オーケストレータ1512のうちのいずれかは、任意の技術的に実行可能なやり方で取得された任意の量及びタイプのデータに基づき、任意の数及びタイプの自己修正措置を実装してもよい。少なくとも一実施例では、自己修正措置は、データ・センタ1500のデータ・センタ演算子が、不良の恐れのある構成を決定しないようにし、十分に利用されていない且つ/又は性能の低いデータ・センタの部分をなくせるようにしてもよい。
少なくとも一実施例では、データ・センタ1500は、1つ若しくは複数の機械学習モデルを訓練し、又は本明細書に記載の1つ若しくは複数の実施例による1つ若しくは複数の機械学習モデルを使用して情報を予測若しくは推論するためのツール、サービス、ソフトウェア、又は他のリソースを含んでもよい。たとえば、少なくとも一実施例では、機械学習モデルは、データ・センタ1500に関して上述したソフトウェア及びコンピューティング・リソースを使用して、ニューラル・ネットワーク・アーキテクチャに従って重みパラメータを計算することによって、訓練されてもよい。少なくとも一実施例では、1つ又は複数のニューラル・ネットワークに対応する訓練済み機械学習モデルは、本明細書に記載の1つ又は複数の技法によって計算された重みパラメータを使用することにより、データ・センタ1500に関して上述したリソースを使用して、情報を推論又は予測するために使用されてもよい。
少なくとも一実施例では、データ・センタは、上述したリソースを使用して訓練及び/又は推論を実行するために、CPU、特定用途向け集積回路(ASIC)、GPU、FPGA、又は他のハードウェアを使用してもよい。さらに、上述した1つ又は複数のソフトウェア及び/又はハードウェアのリソースは、画像認識、音声認識、又は他の人工知能サービスなどの情報の訓練又は推論の実行を、ユーザが行えるようにするためのサービスとして構成されてもよい。
推論及び/又は訓練論理1315を使用して、1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作が実行される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図15のシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
自律車両
図16Aは、少なくとも一実施例による自律車両1600の例を示す。少なくとも一実施例では、自律車両1600(或いは、本明細書において「車両1600」と呼ばれる)は、限定することなく、車、トラック、バス、及び/又は1人若しくは複数の乗員を収容する別のタイプの車両などの乗用車とすることができる。少なくとも一実施例では、車両1600は、貨物運搬用のセミ・トラクタのトレーラ・トラックであってもよい。少なくとも一実施例では、車両1600は、航空機、ロボット車両、又は他の種類の車両であってもよい。
自律車両は、米国運輸省の一部門である全米高速道路交通安全局(「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つ又は複数の実施例では、車両1600は、自律運転レベルのレベル1~レベル5のうちの1つ又は複数による機能性に対応可能であってもよい。たとえば、少なくとも一実施例では、車両1600は、実施例に応じて、条件付き自動化(レベル3)、高度自動化(レベル4)、及び/又は完全自動化(レベル5)に対応可能であってもよい。
人間とロボットとの相互作用システムの様々な実施例は、車両に統合されて、荷物配送及び倉庫自動化などのタスクを支援してもよい。たとえば、人間から小包を受け取って送達するため、又は顧客に代わって物理的な現金支払いを受け取るために、実施例が使用されてもよい。
少なくとも一実施例では、車両1600は、限定することなく、シャシ、車両本体、ホイール(たとえば、2本、4本、6本、8本、18本など)、タイヤ、車軸、及び車両の他の構成要素などの構成要素を含んでもよい。少なくとも一実施例では、車両1600は、限定することなく、内燃機関、ハイブリッド電力プラント、完全電気エンジン、及び/又は別のタイプの推進システムなどの推進システム1650を含んでもよい。少なくとも一実施例では、推進システム1650は、車両1600のドライブ・トレインに連結されてもよく、ドライブ・トレインは、限定することなく、車両1600の推進を可能にするためのトランスミッションを含んでもよい。少なくとも一実施例では、推進システム1650は、スロットル/アクセル1652からの信号を受信したことに応答して、制御されてもよい。
少なくとも一実施例では、限定することなくハンドルを含んでもよい操縦システム1654は、推進システム1650が動作しているときに(たとえば、車両が動いているときに)車両1600を(たとえば所望の経路又はルートに沿って)操縦するために使用される。少なくとも一実施例では、操縦システム1654は、操縦アクチュエータ1656から信号を受信してもよい。ハンドルは、完全自動化(レベル5)の機能性に関しては任意選択であってもよい。少なくとも一実施例では、ブレーキ・アクチュエータ1648及び/又はブレーキ・センサからの信号を受信したことに応答して車両ブレーキを動作させるために、ブレーキ・センサ・システム1646が使用されてもよい。
少なくとも一実施例では、1つ又は複数のシステム・オン・チップ(「SoC」:system on chip)(図16Aには示さず)及び/若しくはグラフィックス・プロセッシング・ユニット(「GPU」)を限定することなく含んでもよいコントローラ1636は、車両1600の1つ又は複数の構成要素及び/若しくはシステムに(たとえば、コマンドを表す)信号を提供する。たとえば、少なくとも一実施例では、コントローラ1636は、ブレーキ・アクチュエータ1648を介して車両ブレーキを動作させるための信号、操縦アクチュエータ1656を介して操縦システム1654を動作させるための信号、スロットル/アクセル1652を介して推進システム1650を動作させるための信号を送信してもよい。コントローラ1636は、自律運転を可能にし、且つ/又は運転車両1600において人間のドライバを支援するために、センサ信号を処理し、動作コマンド(たとえばコマンドを表す信号)を出力する1つ又は複数の搭載(たとえば一体型の)コンピューティング・デバイス(たとえば、スーパーコンピュータ)を含んでもよい。少なくとも一実施例では、コントローラ1636は、自律運転機能のための第1のコントローラ1636、機能的安全機能のための第2のコントローラ1636、人工知能機能(たとえば、コンピュータ・ビジョン)のための第3のコントローラ1636、インフォテイメント機能のための第4のコントローラ1636、緊急事態における冗長性のための第5のコントローラ1636、及び/又は他のコントローラを含んでもよい。少なくとも一実施例では、単一のコントローラ1636が、上記機能性のうちの2つ以上に対処してもよく、2つ以上のコントローラ1636が、単一の機能性に対処してもよく、且つ/又はこれらの何らかの組合せであってもよい。
少なくとも一実施例では、コントローラ1636は、1つ又は複数のセンサから受信したセンサ・データ(たとえば、センサ入力)に応答して、車両1600の1つ又は複数の構成要素及び/若しくはシステムを制御するための信号を提供する。少なくとも一実施例では、センサ・データは、たとえば限定することなく、全地球的航法衛星システム(「GNSS」:global navigation satellite system)センサ1658(たとえば、全地球測位システム・センサ)、RADARセンサ1660、超音波センサ1662、LIDARセンサ1664、慣性計測装置(「IMU」:inertial measurement unit)センサ1666(たとえば、加速度計、ジャイロスコープ、磁気コンパス、磁力計など)、マイクロフォン1696、ステレオ・カメラ1668、広角カメラ1670(たとえば、魚眼カメラ)、赤外線カメラ1672、周囲カメラ1674(たとえば、360度カメラ)、長距離カメラ(図16Aには示さず)、中距離カメラ(図16Aには示さず)、(たとえば、車両1600のスピードを計測するための)スピード・センサ1644、振動センサ1642、操縦センサ1640、(たとえば、ブレーキ・センサ・システム1646の一部分としての)ブレーキ・センサ、及び/又は他のタイプのセンサから、受信されてもよい。
少なくとも一実施例では、コントローラ1636のうちの1つ又は複数は、車両1600の計器クラスタ1632からの(たとえば入力データによって表される)入力を受信し、ヒューマン・マシン・インターフェース(「HMI」:human-machine interface)ディスプレイ1634、可聴アナンシエータ、拡声器を介して、且つ/又は車両1600の他の構成要素を介して、(たとえば、出力データ、ディスプレイ・データなどによって表される)出力を提供してもよい。少なくとも一実施例では、出力は、車両速度、スピード、時間、地図データ(たとえば、ハイ・デフィニション・マップ(図16Aには示さず)、ロケーション・データ(たとえば、地図上などの車両1600のロケーション)、方向、他車両のロケーション(たとえば、占有グリッド)、コントローラ1636が感知した物体及び物体の状態についての情報などの情報を含んでもよい。たとえば、少なくとも一実施例では、HMIディスプレイ1634は、1つ若しくは複数の物体(たとえば、道路標識、警告標識、信号の変化など)の存在についての情報、及び/又は車両が行った、行っている、又はこれから行う運転操作についての情報(たとえば、現在車線変更中、3.22km(2マイル)先の出口34Bを出る、など)を表示してもよい。
少なくとも一実施例では、車両1600はさらにネットワーク・インターフェース1624を含み、このネットワーク・インターフェースは、1つ又は複数のネットワークを介して通信するためのワイヤレス・アンテナ1626及び/又はモデムを使用してもよい。たとえば、少なくとも一実施例では、ネットワーク・インターフェース1624は、ロング・ターム・エボリューション(「LTE」:Long-Term Evolution)、広帯域符号分割多元接続(「WCDMA」:Wideband Code Division Multiple Access)、ユニバーサル・モバイル・テレコミュニケーション・システム(「UMTS」:Universal Mobile Telecommunications System)、グローバル・システム・フォー・モバイル・コミュニケーションズ(「GSM」:Global System for Mobile communication)、IMT-CDMAマルチ・キャリア(「CDMA2000」)などを介して通信可能であってもよい。また、少なくとも一実施例では、ワイヤレス・アンテナ1626は、Bluetooth、Bluetooth Low Energy (「LE」:Low Energy)、Z-Wave、ZigBeeなどのローカル・エリア・ネットワーク、及び/又はLoRaWAN、SigFoxなどの低電力広域ネットワーク(「LPWAN」:low power wide-area network)を使用して、環境内の物体同士間(たとえば車両、モバイル・デバイスなど)での通信を可能にしてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図16Aのシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図16Bは、少なくとも一実施例による図16Aの自律車両1600についてカメラのロケーション及び視野の例を示す。少なくとも一実施例では、カメラ及びそれぞれの視野は、一例の実施例であり、限定するものではない。たとえば、少なくとも一実施例では、追加及び/又は代替のカメラが含まれてもよく、且つ/又はカメラが車両1600の異なるロケーションに位置付けられてもよい。
少なくとも一実施例では、カメラのカメラ・タイプは、車両1600の構成要素及び/又はシステムとともに使用できるように適合されていてもよいデジタル・カメラを含んでもよいが、これに限定されない。カメラは、自動車安全性要求レベル(「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本のピラーに一体化されてもよい。
少なくとも一実施例では、車両1600前方の環境の一部分を含む視野を有するカメラ(たとえば正面カメラ)は周囲のビューに対して使用されて、正面の経路及び障害物を識別しやすくするとともに、コントローラ1636及び/又は制御SoCのうちの1つ又は複数とともに使用されて、占有グリッドの生成及び/又は好ましい車両経路の判定に不可欠な情報の提供を補助してもよい。少なくとも一実施例では、正面カメラを使用して、緊急ブレーキ、歩行者検出、及び衝突回避を限定することなく含む、LIDARと同じADAS機能のうちの多くが実行されてもよい。少なくとも一実施例では、正面カメラはまた、車線逸脱警告(「LDW」:Lane Departure Warnings)、自律クルーズ・コントロール(「ACC」:Autonomous Cruise Control)、及び/又は交通標識認識などの他の機能を限定することなく含むADASの機能及びシステムのために使用されてもよい。
少なくとも一実施例では、たとえばCMOS:complementary metal oxide semiconductor(「相補型金属酸化膜半導体」)カラー撮像装置を含む単眼カメラのプラットフォームを含む様々なカメラが、正面構成で使用されてもよい。少なくとも一実施例では、周囲からビューに入ってくる物体(たとえば歩行者、クロス・トラフィック、又は自転車)を感知するために、広角カメラ1670が使用されてもよい。図16Bには1つの広角カメラ1670しか示していないが、他の実施例では、車両1600には(ゼロを含む)任意の数の広角カメラ1670が存在してもよい。少なくとも一実施例では、特にニューラル・ネットワークがそれに対してまだ訓練されていない物体について、深度ベースの物体検出のために、任意の数の長距離カメラ1698(たとえば、長距離ビューのステレオ・カメラの対)が使用されてもよい。少なくとも一実施例では、長距離カメラ1698はまた、物体検出及び分類、並びに基本的な物体追跡に使用されてもよい。
少なくとも一実施例では、任意の数のステレオ・カメラ1668は、正面構成にも含まれてよい。少なくとも一実施例では、1つ又は複数のステレオ・カメラ1668は、拡張可能な処理ユニットを備えた一体型制御ユニットを含んでもよく、この制御ユニットは、一体型のコントローラ・エリア・ネットワーク(「CAN」:Controller Area Network)又はイーサネット(登録商標)・インターフェースを単一チップ上に有するプログラム可能論理(「FPGA」)及びマルチ・コア・マイクロプロセッサを提供してもよい。少なくとも一実施例では、こうしたユニットは、画像内のすべての点に対する距離推定を含め、車両1600の環境の3Dマップを生成するのに使用されてもよい。少なくとも一実施例では、ステレオ・カメラ1668のうちの1つ又は複数は、限定することなくコンパクト・ステレオ・ビジョン・センサを含んでもよく、このセンサは、車両1600からターゲット物体までの距離を測定し、生成された情報(たとえば、メタデータ)を使用して自律緊急ブレーキ及び車線逸脱警告の機能をアクティブ化することができる2つのカメラ・レンズ(左右に1つずつ)及び画像処理チップを、限定することなく含んでもよい。少なくとも一実施例では、本明細書に記載のものに加えて、又はその代わりに、他のタイプのステレオ・カメラ1668が使用されてもよい。
少なくとも一実施例では、車両1600の側方の環境の一部分を含む視野を有するカメラ(たとえば、サイド・ビュー・カメラ)が、周囲のビューのために使用されて、占有グリッドの作製及び更新、並びに側面衝突警告の生成のために使用される情報を提供してもよい。たとえば、少なくとも一実施例では、周囲カメラ1674(たとえば図16Bに示すように4つの周囲カメラ1674)を、車両1600に配置することができる。周囲カメラ1674は、限定することなく、任意の数及び組合せの広角カメラ1670、魚眼カメラ、及び/又は360度カメラなどを含んでもよい。たとえば、少なくとも一実施例では、4つの魚眼カメラが、車両1600の前方、後方、及び側方に配置されてもよい。少なくとも一実施例では、車両1600は、3つの周囲カメラ1674(たとえば、左、右、及び後方)を使用してもよく、第4の周囲カメラとして、1つ又は複数の他のカメラ(たとえば正面カメラ)を活用してもよい。
少なくとも一実施例では、車両1600後方の環境の一部分を含む視野を有するカメラ(たとえば、リア・ビュー・カメラ)が、駐車支援、周囲のビュー、後方衝突警告のために使用されて、占有グリッドの作製及び更新がなされてもよい。少なくとも一実施例では、本明細書に記載の正面カメラとしても好適なカメラ(たとえば、長距離カメラ1698、及び/又は中距離カメラ1676、ステレオ・カメラ1668)、赤外線カメラ1672など)を含むが、これらに限定されない多種多様なカメラが使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図16Bのシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図16Cは、少なくとも一実施例による図16Aの自律車両1600の例示的システム・アーキテクチャを示すブロック図である。少なくとも一実施例では、図16Cの車両1600の構成要素、特徴、及びシステムのそれぞれは、バス1602を介して接続されるものとして示される。少なくとも一実施例では、バス1602は、限定することなく、CANデータ・インターフェース(或いは、本明細書において(CANバス)と呼ばれる)を含んでもよい。少なくとも一実施例では、CANは、ブレーキの作動、加速、ブレーキ制御、操縦、フロントガラス・ワイパなど、車両1600の様々な特徴及び機能の制御を補助するために使用される車両1600内部のネットワークであってもよい。少なくとも一実施例では、バス1602は、それぞれが独自の一意の識別子(たとえばCAN ID)をもつ数十又はさらには数百のノードを有するように構成されてもよい。少なくとも一実施例では、バス1602は、ハンドル角度、対地スピード、エンジンの毎分回転数(「RPM」:revolutions per minute)、ボタン位置、及び/又は他の車両状態インジケータを見いだすように読み取られてもよい。少なくとも一実施例では、バス1602は、ASILのBに準拠したCANバスであってもよい。
少なくとも一実施例では、CANに加えて、又はその代わりに、FlexRay及び/又はEthernet(登録商標)が使用されてもよい。少なくとも一実施例では、任意の数のバス1602が存在してもよく、これには、限定することなく、ゼロ以上のCANバス、ゼロ以上のFlexRayバス、ゼロ以上のEthernet(登録商標)バス、及び/又は他のプロトコルを使用するゼロ以上の他のタイプのバスが含まれてもよい。少なくとも一実施例では、2つ以上のバス1602を使用して異なる機能が実行されてもよく、且つ/又はそれらを使用して冗長性が与えられてもよい。たとえば、第1のバス1602が衝突回避機能のために使用され、第2のバス1602が作動制御のために使用されてもよい。少なくとも一実施例では、各バス1602は、車両1600の構成要素のいずれかと通信してもよく、2つ以上のバス1602が同じ構成要素と通信してもよい。少なくとも一実施例では、任意の数のシステム・オン・チップ(「SoC」)1604のそれぞれ、コントローラ1636のそれぞれ、及び/又は車両内の各コンピュータは、同じ入力データ(たとえば、車両1600のセンサからの入力)にアクセス可能であってもよく、CANバスなどの共通のバスに接続されてもよい。
少なくとも一実施例では、車両1600は、図16Aに関して本明細書に記載するものなど、1つ又は複数のコントローラ1636を含んでもよい。コントローラ1636は、様々な機能に使用されてもよい。少なくとも一実施例では、コントローラ1636は、車両1600の様々な他の構成要素及びシステムのうちの任意のものに結合されてもよく、車両1600、車両1600の人工知能、及び/又は車両1600のインフォテイメントなどの制御に使用されてもよい。
少なくとも一実施例では、車両1600は、任意の数のSoC1604を含んでもよい。SoC1604のそれぞれは、限定することなく、中央処理装置(「CPU」)1606、グラフィックス・プロセッシング・ユニット(「GPU」)1608、プロセッサ1610、キャッシュ1612、アクセラレータ1614、データ・ストア1616、及び/又は図示していない他の構成要素及び特徴を含んでもよい。少なくとも一実施例では、車両1600を様々なプラットフォーム及びシステムにおいて制御するために、SoC1604が使用されてもよい。たとえば、少なくとも一実施例では、SoC1604は、1つ又は複数のサーバ(図16Cには示さず)からネットワーク・インターフェース1624を介して地図のリフレッシュ及び/又は更新を得ることができるハイ・デフィニション(「HD」:High Definition)マップ1622を有するシステム(たとえば車両1600のシステム)に組み込まれてもよい。
少なくとも一実施例では、CPU1606は、CPUクラスタ、又はCPUコンプレックス(或いは本明細書において「CCPLEX」と呼ばれる)を含んでもよい。少なくとも一実施例では、CPU1606は、複数のコア及び/又はレベル2(「L2」)キャッシュを含んでもよい。たとえば、少なくとも一実施例では、CPU1606は、コヒーレントなマルチプロセッサ構成において8つのコアを含んでもよい。少なくとも一実施例では、CPU1606は、4つのデュアル・コア・クラスタを含んでもよく、ここで各クラスタは、専用のL2キャッシュ(たとえば、2MBのL2キャッシュ)を有する。少なくとも一実施例では、CPU1606(たとえば、CCPLEX)は、CPU1606のクラスタの任意の組合せを、任意の所与の時間にアクティブ化できるようにする同時のクラスタ動作をサポートするように構成されてもよい。
少なくとも一実施例では、CPU1606のうちの1つ又は複数は、電力管理機能を実装してもよく、この機能は限定することなく、以下の特徴のうちの1つ又は複数を含む:個々のハードウェア・ブロックが、アイドル時に自動的にクロック・ゲート制御されて動的電力を節約することができる;割込み待ち(「WFI」:Wait for Interrupt)/イベント待ち(「WFE」:Wait for Event)命令の実行に起因してコアが能動的に命令を実行していないとき、各コア・クロックをゲート制御することができる;各コアを独立して電力ゲート制御することができる;すべてのコアがクロック・ゲート制御又は電力ゲート制御されるとき、各コア・クラスタを独立してクロック・ゲート制御することができる;且つ/又はすべてのコアが電力ゲート制御されるとき、各コア・クラスタを独立して電力ゲート制御することができる。少なくとも一実施例では、CPU1606はさらに、電力状態を管理するための拡張アルゴリズムを実装してもよく、ここで、許容された電力状態及び予想されるウェイクアップ時間が指定され、コア、クラスタ、及びCCPLEXが入るべき最良の電力状態を、ハードウェア/マイクロコードが判定する。少なくとも一実施例では、処理コアは、作業がマイクロコードにオフロードされた状態で、電力状態に入る簡単なシーケンスをソフトウェアにおいてサポートしてもよい。
少なくとも一実施例では、GPU1608は、統合されたGPU(或いは、本明細書において「iGPU」と呼ばれる)を含んでもよい。少なくとも一実施例では、GPU1608は、プログラム可能であってもよく、並列なワークロードに対して効率的であってもよい。少なくとも一実施例では、GPU1608は、少なくとも一実施例では、拡張テンソル命令セットを使用してもよい。一実施例では、GPU1608は、1つ又は複数のストリーミング・マイクロプロセッサを含んでもよく、ここで各ストリーミング・マイクロプロセッサは、レベル1(「L1」)キャッシュ(たとえば少なくとも96KBのストレージ容量を有するL1キャッシュ)を含んでもよく、ストリーミング・マイクロプロセッサのうちの2つ以上は、L2キャッシュ(たとえば、512KBのストレージ容量を有するL2キャッシュ)を共有してもよい。少なくとも一実施例では、GPU1608は、少なくとも8つのストリーミング・マイクロプロセッサを含んでもよい。少なくとも一実施例では、GPU1608は、コンピュート・アプリケーション・プログラミング・インターフェース(API:application programming interface)を使用してもよい。少なくとも一実施例では、GPU1608は、1つ又は複数の並列なコンピューティング・プラットフォーム、及び/又はプログラミング・モジュール(たとえば、NVIDIAのCUDA)を使用してもよい。
少なくとも一実施例では、GPU1608のうちの1つ又は複数は、自動車用及び組み込まれたユース・ケースにおいて最良の性能になるように電力最適化されてもよい。たとえば、一実施例では、GPU1608は、フィン電界効果トランジスタ(「FinFET」:Fin field-effect transistor)上で作製することができる。少なくとも一実施例では、各ストリーミング・マイクロプロセッサは、複数のブロックに区分けされた多数の混合精度の処理コアを組み込んでもよい。たとえば、限定することなく64個のPF32コアと、32個のPF64コアを、4つの処理ブロックに区分けすることができる。少なくとも一実施例では、各処理ブロックに、16個のFP32コア、8個のFP64コア、16個のINT32コア、深層学習の行列演算用の2つの混合精度のNVIDIA TENSORコア、レベルゼロ(「L0」)命令キャッシュ、ワープ・スケジューラ、ディスパッチ・ユニット、及び/又は64KBのレジスタ・ファイルを配分することができる。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、整数と浮動小数点の独立した並列のデータ経路を含み、コンピュータ処理とアドレッシング計算を混用することによってワークロードの効率的な実行を実現する。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、独立したスレッド・スケジューリング機能を含み、並列スレッド間でよりきめ細かい同期及び連携を可能にしてもよい。少なくとも一実施例では、ストリーミング・マイクロプロセッサは、性能を向上させると同時にプログラミングを簡単にするために、L1データ・キャッシュと共有メモリ・ユニットの組合せを含んでもよい。
少なくとも一実施例では、GPU1608のうちの1つ又は複数は、高帯域幅メモリ(「HBW」:high bandwidth memory)及び/又は16GBのHBM2メモリ・サブシステムを含み、いくつかの例では、約900GB/秒のピーク・メモリ帯域幅を提供してもよい。少なくとも一実施例では、HBMメモリに加えて、又はその代わりに、グラフィックス・ダブル・データ・レート・タイプの5つの同期ランダム・アクセス・メモリ(「GDDR5」:graphics double data rate type five)などの同期グラフィックス・ランダム・アクセス・メモリ(「SGRAM」:synchronous graphics random-access memory)が使用されてもよい。
少なくとも一実施例では、GPU1608は、統合メモリ技術を含んでもよい。少なくとも一実施例では、アドレス・トランスレーション・サービス(「ATS」:address translation services)サポートを使用して、GPU1608が、CPU1606のページ・テーブルに直接アクセスできるようにしてもよい。少なくとも一実施例では、GPU1608メモリ管理ユニット(「MMU」:memory management unit)がミスに遭遇したときには、アドレス・トランスレーション要求が、CPU1606に送信されてもよい。少なくとも一実施例では、それに応答して、CPU1606は、自らのページ・テーブルで、仮想から物理へのアドレスのマッピングを探し、トランスレーションをGPU1608に送り返してもよい。少なくとも一実施例では、統合メモリ技術は、CPU1606とGPU1608の両方のメモリに対して単一の統合された仮想アドレス空間を与えることを可能にし、それにより、GPU1608のプログラミング、及びGPU1608へのアプリケーションの移植を簡単にする。
少なくとも一実施例では、GPU1608は、他のプロセッサのメモリへのGPU1608のアクセス頻度を記録することができる任意の数のアクセス・カウンタを含んでもよい。少なくとも一実施例では、アクセス・カウンタは、最も頻繁にページにアクセスしているプロセッサの物理メモリに、メモリ・ページが確実に移動されるのを補助し、それにより、プロセッサ間で共有されるメモリ範囲の効率を向上させてもよい。
少なくとも一実施例では、SoC1604のうちの1つ又は複数は、本明細書に記載のものを含む任意の数のキャッシュ1612を含んでもよい。たとえば、少なくとも一実施例では、キャッシュ1612は、CPU1606もGPU1608も利用可能な(たとえば、CPU1606とGPU1608の両方に接続された)レベル3(「L3」)キャッシュを含むことができる。少なくとも一実施例では、キャッシュ1612は、キャッシュ・コヒーレンス・プロトコルなど(たとえば、MEI、MESI、MSIなど)を使用することにより、線の状態を記録することができるライト・バック・キャッシュを含んでもよい。少なくとも一実施例では、L3キャッシュは、実施例に応じて4MB以上を含んでもよいが、より小さいキャッシュ・サイズが使用されてもよい。
少なくとも一実施例では、SoC1604のうちの1つ又は複数は、1つ又は複数のアクセラレータ1614(たとえば、ハードウェア・アクセラレータ、ソフトウェアアクセラレータ、又はこれらの組合せ)を含んでもよい。少なくとも一実施例では、SoC1604は、最適化されたハードウェア・アクセラレータ及び/又は大型のオン・チップ・メモリを含むことができるハードウェア加速クラスタを含んでもよい。少なくとも一実施例では、大型のオン・チップ・メモリ(たとえば、4MBのSRAM)は、ハードウェア加速クラスタが、ニューラル・ネットワーク及び他の計算を加速できるようにしてもよい。少なくとも一実施例では、ハードウェア加速クラスタを使用して、GPU1608を補完し、GPU1608のタスクのうちのいくつかをオフロードしてもよい(たとえば、他のタスクを実行できるようにGPU1608のサイクルをより多く解放してもよい)。少なくとも一実施例では、加速を受け入れるのに十分なほど安定している目的とするワークロード(たとえば、知覚、畳み込みニューラル・ネットワーク(「CNN」:convolutional neural network)、再帰ニューラル・ネットワーク(「RNN」:recurrent neural network)など)のために、アクセラレータ1614を使用することができる。少なくとも一実施例では、CNNは、領域ベースの、すなわち領域畳み込みニューラル・ネットワーク(「RCNN」:regional convolutional neural network)、及び(たとえば、物体検出に使用される)高速RCNN、又は他のタイプのCNNを含んでもよい。
少なくとも一実施例では、アクセラレータ1614(たとえば、ハードウェア加速クラスタ)は、深層学習アクセラレータ(「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、マイクロフォン1696からのデータを使用した緊急車両検出、及び識別、及び検出のためのCNN、カメラ・センサからのデータを使用した顔認識及び車両所有者識別ためのCNN、並びに/又はセキュリティ及び/若しくは安全に関するイベントのためのCNNを含め、様々な機能のうちのいずれかのための処理済み若しくは未処理のデータに対して、迅速且つ効率的にニューラル・ネットワーク、特にCNNを実行してもよい。
少なくとも一実施例では、DLAは、GPU1608の任意の機能を実行してもよく、たとえば推論アクセラレータを使用することにより、設計者は、任意の機能のためにDLA又はGPU1608のいずれかをターゲットにしてもよい。たとえば、少なくとも一実施例では、設計者は、CNN及び浮動小数点演算の処理をDLAに集中させ、他の機能をGPU1608及び/又は他のアクセラレータ1614に任せてもよい。
少なくとも一実施例では、アクセラレータ1614(たとえば、ハードウェア加速クラスタ)は、プログラマブル・ビジョン・アクセラレータ(「PVA」:programmable vision accelerator)を含んでもよく、このプログラマブル・ビジョン・アクセラレータは、本明細書において代替的にコンピュータ・ビジョン・アクセラレータと呼ばれてもよい。少なくとも一実施例では、PVAは、先進ドライバ支援システム(「ADAS」)1638、自律運転、拡張現実(「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の構成要素がCPU1606とは無関係にシステム・メモリにアクセスできるようにしてもよい。少なくとも一実施例では、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)メモリを含んでもよい。
少なくとも一実施例では、アクセラレータ1614(たとえば、ハードウェア加速クラスタ)は、オン・チップのコンピュータ・ビジョン・ネットワーク、及びスタティック・ランダム・アクセス・メモリ(「SRAM」)を含み、アクセラレータ1614のための高帯域幅、低レイテンシの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の規格に準拠してもよいが、他の規格及びプロトコルが使用されてもよい。
少なくとも一実施例では、SoC1604のうちの1つ又は複数は、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを含んでもよい。少なくとも一実施例では、リアル・タイム・レイ・トレーシングのハードウェア・アクセラレータを使用して、物体の(たとえば世界モデル内での)位置及び範囲が迅速且つ効率的に判定されて、RADAR信号解釈のため、音伝播合成及び/若しくは分析のため、SONARシステムのシミュレーションのため、一般波形の伝播シミュレーションのため、ローカリゼーション及び/若しくは他の機能を目的としたLIDARデータとの比較のため、並びに/又は他の使用法のためのリアル・タイムの可視化シミュレーションが生成されてもよい。
少なくとも一実施例では、アクセラレータ1614(たとえば、ハードウェア・アクセラレータ・クラスタ)は、自律運転のための多様な使用法を有する。少なくとも一実施例では、PVAは、ADAS及び自律車両の主要な処理ステージに使用することができるプログラマブル・ビジョン・アクセラレータであってもよい。少なくとも一実施例では、PVAの性能は、低電力及び低レイテンシの予測可能な処理を必要とするアルゴリズム・ドメインに良好に適合する。言い換えれば、PVAは、低レイテンシ及び低電力の予測可能なラン・タイムを必要とする半稠密(semi-dense)又は稠密な規則的計算に対して、データ・セットが小さくても良好に機能する。少なくとも一実施例では、車両1600などの自律車両では、従来のコンピュータ・ビジョン・アルゴリズムを実行するようにPVAが設計されるが、これは、それらが、物体検出及び整数数値の演算に有効だからである。
たとえば、技術の少なくとも一実施例によれば、PVAを使用して、コンピュータ・ステレオ・ビジョンが実行されてもよい。少なくとも一実施例では、いくつかの例においてセミ・グローバル・マッチングに基づくアルゴリズムが使用されてもよいが、これは限定するものではない。少なくとも一実施例では、レベル3~5の自律運転のためのアプリケーションは、動き推定/ステレオ・マッチング(たとえば、動きからの構造化、歩行者認識、車線検出など)をオン・ザ・フライで使用する。少なくとも一実施例では、PVAは、2つの単眼カメラからの入力に対して、コンピュータ・ステレオ・ビジョン機能を実行してもよい。
少なくとも一実施例では、PVAを使用して、高密度オプティカル・フローが実行されてもよい。たとえば、少なくとも一実施例では、PVAは、未加工のRADARデータを(たとえば4Dの高速フーリエ変換を使用して)処理して、処理済みRADARデータを提供することができる。少なくとも一実施例では、PVAは、飛行時間の深度処理に使用され、たとえば未加工の飛行時間データを処理することにより、処理済みの飛行時間データが提供される。
少なくとも一実施例では、たとえば限定することなく、物体検出ごとに信頼性の尺度を出力するニューラル・ネットワークを含む、制御及び運転の安全性を強化するための任意のタイプのネットワークを実行するために、DLAが使用されてもよい。少なくとも一実施例では、信頼性は、他の検出と比較した各検出の確率として、若しくはその相対的な「重み」を提供するものとして表されても、又は解釈されてもよい。少なくとも一実施例では、信頼性によって、どの検出を誤検出ではなく正検出とみなすべきかに関して、システムがさらなる判定を下せるようになる。たとえば、少なくとも一実施例では、システムは、信頼性に対して閾値を設定し、閾値を超える検出だけを正検出とみなしてもよい。自動緊急ブレーキ(「AEB」:automatic emergency braking)が使用される実施例では、誤検出によって車両は自動的に緊急ブレーキをかけることになり、これは明らかに望ましくない。少なくとも一実施例では、非常に信頼性の高い検出が、AEBのトリガとみなされてもよい。少なくとも一実施例では、DLAは、信頼値を回帰するようにニューラル・ネットワークを実行してもよい。少なくとも一実施例では、ニューラル・ネットワークは、とりわけ境界ボックスの次元、(たとえば別のサブシステムから)取得した地面推定、車両1600の配向と相関しているIMUセンサ1666からの出力、距離、ニューラル・ネットワーク及び/又は他のセンサ(たとえば、LIDARセンサ1664若しくはRADARセンサ1660)から取得した物体の3Dロケーション推定などのパラメータの少なくともいくつかのサブセットを、その入力として取ってもよい。
少なくとも一実施例では、SoC1604のうちの1つ又は複数は、データ・ストア1616(たとえばメモリ)を含んでもよい。少なくとも一実施例では、データ・ストア1616は、SoC1604のオン・チップ・メモリであってもよく、このメモリは、GPU1608及び/又はDLA上で実行されるニューラル・ネットワークを記憶してもよい。少なくとも一実施例では、データ・ストア1616の容量は、冗長性及び安全性のためにニューラル・ネットワークの複数のインスタンスを記憶するのに十分なほど大きくてもよい。少なくとも一実施例では、データ・ストア1612は、L2又はL3のキャッシュを備えてもよい。
少なくとも一実施例では、SoC1604のうちの1つ又は複数は、任意の数のプロセッサ1610(たとえば、組み込みプロセッサ)を含んでもよい。プロセッサ1610は、ブート電力並びに管理機能及び関連するセキュリティ執行に対処するための専用プロセッサ及びサブシステムであってもよいブート及び電力管理プロセッサを含んでもよい。少なくとも一実施例では、ブート及び電力管理プロセッサは、SoC1604のブート・シーケンスの一部であってもよく、ラン・タイム電力管理サービスを提供してもよい。少なくとも一実施例では、ブート電力及び管理プロセッサは、クロックと電圧のプログラミング、システムの低電力状態への移行の支援、SoC1604の熱及び温度センサの管理、並びに/又はSoC1604の電力状態の管理を提供してもよい。少なくとも一実施例では、各温度センサは、その出力周波数が温度に比例するリング発振器として実装されてもよく、SoC1604は、リング発振器を使用して、CPU1606、GPU1608、及び/又はアクセラレータ1614の温度を検出してもよい。少なくとも一実施例では、温度が閾値を超えると判定された場合には、ブート及び電力管理プロセッサは、温度不良ルーチンに入り、SoC1604を低電力状態にし、且つ/又は車両1600を運転手-安全停止モードにしても(たとえば、車両1600を安全停止させる)よい。
少なくとも一実施例では、プロセッサ1610はさらに、オーディオ処理エンジンとしての役割を果たすことができる組み込みプロセッサのセットを含んでもよい。少なくとも一実施例では、オーディオ処理エンジンは、多重インターフェースを介した多チャネルのオーディオ、及び幅広くフレキシブルな様々なオーディオI/Oインターフェースのための、完全なハードウェア・サポートを可能にするオーディオ・サブシステムであってもよい。少なくとも一実施例では、オーディオ処理エンジンは、専用RAMのあるデジタル信号プロセッサを有する専用プロセッサ・コアである。
少なくとも一実施例では、プロセッサ1610はさらに、低電力センサ管理及び立ち上げのユース・ケースをサポートするのに必要なハードウェア特徴を提供することができる常時オン・プロセッサ・エンジンを含んでもよい。少なくとも一実施例では、常時オン・プロセッサ・エンジンは、限定することなく、プロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラ)、様々なI/Oコントローラ周辺装置、及びルーティング論理を含んでもよい。
少なくとも一実施例では、プロセッサ1610はさらに安全クラスタ・エンジンを含んでもよく、このエンジンは限定することなく、自動車用途の安全管理に対処するための専用のプロセッサ・サブシステムを含む。少なくとも一実施例では、安全クラスタ・エンジンは、限定することなく、2つ以上のプロセッサ・コア、密結合RAM、サポート周辺装置(たとえば、タイマ、及び割込みコントローラなど)、及び/又はルーティング論理を含んでもよい。安全モードでは、少なくとも一実施例においてロックステップ・モードで2つ以上のコアが動作し、これらの動作間で何らかの差を検出するための比較論理を有する単一コアとして機能してもよい。少なくとも一実施例では、プロセッサ1610はさらにリアル・タイム・カメラ・エンジンを含んでもよく、このエンジンは限定することなく、リアル・タイムのカメラ管理に対処するための専用のプロセッサ・サブシステムを含んでもよい。少なくとも一実施例では、プロセッサ1610はさらに、高ダイナミック・レンジの信号プロセッサを含んでもよく、この信号プロセッサは、カメラ処理パイプラインの一部であるハードウェア・エンジンである画像信号プロセッサを限定することなく含んでもよい。
少なくとも一実施例では、プロセッサ1610は、ビデオ画像合成器を含んでもよく、この合成器は、再生装置のウインドウに最終画像を生成するのにビデオ再生アプリケーションが必要とするビデオ後処理機能を実装する(たとえばマイクロプロセッサに実装された)処理ブロックであってもよい。少なくとも一実施例では、ビデオ画像合成器は、広角カメラ1670、周囲カメラ1674、及び/又はキャビン内監視カメラ・センサに対して、レンズゆがみ補正を実行してもよい。少なくとも一実施例では、キャビン内監視カメラ・センサは、好ましくは、キャビン内のイベントを識別し、それに適宜応答するように構成された、SoC1604の別のインスタンスで実行されているニューラル・ネットワークによって監視される。少なくとも一実施例では、キャビン内システムは、セルラー・サービスをアクティブ化し、電話をかけたり、電子メールを書いたり、車両の行き先を変更したり、車両のインフォテイメント・システム及び設定をアクティブ化又は変更したり、音声作動式のウェブ・サーフィンを提供したりするために、限定することなく読唇を実行してもよい。少なくとも一実施例では、ある一定の機能は、車両が自律モードで動作しているときにドライバにとって利用可能になり、それ以外のときには使用不可になる。
少なくとも一実施例では、ビデオ画像合成器は、空間と時間の両方のノイズ低減のための拡張された時間的ノイズ低減を含んでもよい。たとえば、少なくとも一実施例では、ビデオで動きが生じる場合には、ノイズ低減が空間情報に適切に重み付けして、隣接するフレームによって提供される情報の重みを軽くする。少なくとも一実施例では、画像又は画像の一部分が動きを含まない場合には、ビデオ画像合成器により実行される時間的ノイズ低減は、前の画像からの情報を使用して、現在の画像のノイズを低減してもよい。
少なくとも一実施例では、ビデオ画像合成器はまた、入力されたステレオ・レンズ・フレームに対してステレオ平行化を実行するように構成されてもよい。少なくとも一実施例では、ビデオ画像合成器はさらに、オペレーティング・システムのデスクトップが使用中のときに、ユーザ・インターフェースを合成するために使用されてもよく、GPU1608は、新規の表面を継続的にレンダリングする必要がなくなる。少なくとも一実施例では、GPU1608の電源が入れられ、アクティブで3Dレンダリングを行っているとき、性能及び応答性を向上させるために、ビデオ画像合成器を使用してGPU1608をオフロードしてもよい。
少なくとも一実施例では、SoC1604のうちの1つ又は複数はさらに、ビデオ及びカメラからの入力を受信するためのモバイル・インダストリ・プロセッサ・インターフェース(「MIPI」:mobile industry processor interface)のカメラ直列インターフェース、高速インターフェース、並びに/又はカメラ及び関連ピクセルの入力機能に使用されてもよいビデオ入力ブロックを含んでもよい。少なくとも一実施例では、SoC1604のうちの1つ又は複数はさらに、入力/出力コントローラを含んでもよく、このコントローラはソフトウェアによって制御されてもよく、特定の役割に縛られていないI/O信号を受信するために使用されてもよい。
少なくとも一実施例では、SoC1604のうちの1つ又は複数はさらに、周辺装置、オーディオ・エンコーダ/デコーダ(「コーデック」)、電力管理、及び/又は他の装置との通信を可能にするための幅広い周辺装置インターフェースを含んでもよい。SoC1604は、(たとえば、ギガビット・マルチメディア・シリアル・リンク及びイーサネット(登録商標)を介して接続された)カメラからのデータ、センサ(たとえば、イーサネット(登録商標)を介して接続されてもよいLIDARセンサ1664、RADARセンサ1660など)からのデータ、バス1602からのデータ(たとえば、車両1600のスピード、ハンドル位置など)、(たとえば、イーサネット(登録商標)又はCANバスを介して接続された)GNSSセンサ1658からのデータなどを処理するために使用されてもよい。少なくとも一実施例では、SoC1604のうちの1つ又は複数はさらに、専用の高性能大容量ストレージ・コントローラを含んでもよく、このコントローラは独自のDMAエンジンを含んでもよく、ルーチンのデータ管理タスクからCPU1606を解放するために使用されてもよい。
少なくとも一実施例では、SoC1604は、自動化レベル3~5に及ぶフレキシブルなアーキテクチャを有するエンドツーエンドのプラットフォームであってもよく、それにより、多様性及び冗長性を得るためにコンピュータ・ビジョン及びADAS技法を活用し効率的に利用する包括的な機能的安全性アーキテクチャが提供され、フレキシブルで、信頼性の高い運転ソフトウェア・スタックが、深層学習ツールとともに提供される。少なくとも一実施例では、SoC1604は、従来のシステムより高速で、信頼性が高く、さらにはエネルギー効率及び空間効率が高い。たとえば、少なくとも一実施例では、アクセラレータ1614は、CPU1606、GPU1608、及びデータ・ストア1616と組み合わされると、レベル3~5の自律車両のための高速で効率的なプラットフォームを実現することができる。
少なくとも一実施例では、コンピュータ・ビジョン・アルゴリズムはCPU上で実行されてもよく、このアルゴリズムは、Cプログラミング言語などの高レベル・プログラミング言語を使用して構成されて、多様な視覚データにわたって多様な処理アルゴリズムを実行してもよい。しかし、少なくとも一実施例では、CPUは、多くのコンピュータ・ビジョン・アプリケーションの性能要件、たとえば実行時間及び電力消費に関する要件などを満足できないことが多い。少なくとも一実施例では、多くのCPUは、車両内のADASアプリケーション及び現実的なレベル3~5の自律車両において使用される複雑な物体検出アルゴリズムを、リアル・タイムで実行することができない。
本明細書に記載の実施例は、複数のニューラル・ネットワークを同時に且つ/又は順番に実行できるようにし、結果を組み合わせて、レベル3~5の自律運転機能を可能にすることができる。たとえば、少なくとも一実施例では、DLA又は個別GPU(たとえば、GPU1620)上で実行しているCNNは、テキスト及び単語認識を含んでもよく、ニューラル・ネットワークがそれについて特に訓練されてこなかった標識を含む交通標識を、スーパーコンピュータが読み、理解できるようにする。少なくとも一実施例では、DLAはさらに、標識を識別し、解釈し、標識の意味的理解を提供することができ、その意味的理解を、CPUコンプレックス上で実行されている経路計画モジュールに渡すことができるニューラル・ネットワークを含んでもよい。
少なくとも一実施例では、レベル3、4、又は5の運転に関して、複数のニューラル・ネットワークが同時に実行されてもよい。たとえば、少なくとも一実施例では、電光と併せて「注意:点滅時は凍結状態」と示される警告標識は、いくつかのニューラル・ネットワークによって別々に解釈されても、集合的に解釈されてもよい。少なくとも一実施例では、標識自体は、第1の導入済みニューラル・ネットワーク(たとえば、訓練されてきたニューラル・ネットワーク)によって交通標識として識別されてもよく、「点滅時は凍結状態」という文字は、第2の導入済みニューラル・ネットワークによって解釈されてもよく、点滅光が検出された場合には、このニューラル・ネットワークが、凍結状態が存在することを車両の(好ましくはCPUコンプレックス上で実行している)経路計画ソフトウェアに通知する。少なくとも一実施例では、点滅光は、第3の導入済みニューラル・ネットワークを複数のフレームにわたって動作させることによって識別されてもよく、点滅光の存在(又は存在しないこと)が、車両の経路計画ソフトウェアに通知される。少なくとも一実施例では、3つすべてのニューラル・ネットワークが、DLA内及び/又はGPU1608上などで同時に実行されてもよい。
少なくとも一実施例では、顔認識及び車両所有者識別のためのCNNは、カメラ・センサからのデータを使用して、車両1600の承認済みのドライバ及び/又は所有者の存在を識別してもよい。少なくとも一実施例では、常時オンのセンサ処理エンジンを使用して、所有者がドライバ用ドアに近づいてきたときに車両を解錠し、ライトを点灯させ、所有者が車両から離れるときには、セキュリティ・モードで車両を使用不可にしてもよい。こうして、SoC1604は、窃盗及び/又は自動車乗っ取りに対するセキュリティを実現する。
少なくとも一実施例では、緊急車両の検出及び識別のためのCNNは、マイクロフォン1696からのデータを使用して、緊急車両のサイレンを検出及び識別してもよい。少なくとも一実施例では、SoC1604は、環境及び市街地の音を分類するとともに、視覚データを分類するためにCNNを使用する。少なくとも一実施例では、DLA上で実行されるCNNは、緊急車両が近づいてくる相対的なスピードを(たとえばドップラー効果を使用することによって)識別するように訓練される。少なくとも一実施例では、CNNはまた、GNSSセンサ1658によって識別される、車両が稼働している地域に特有の緊急車両を識別するように訓練されてもよい。少なくとも一実施例では、欧州で稼働している場合には、CNNは欧州のサイレンを検出しようとし、米国の場合には、北米のサイレンだけを識別しようとする。少なくとも一実施例では、緊急車両が検出されると、緊急車両安全ルーチンを実行するための制御プログラムを使用して、車両の速度を落とし、道路脇に寄せ、車両を停止させ、且つ/又は緊急車両が通過するまで、超音波センサ1662を併用して車両をアイドリングにしてもよい。
少なくとも一実施例では、車両1600はCPU1618(たとえば、個別CPU又はdCPU)を含んでもよく、このCPUは高速相互接続(たとえば、PCIe)を介してSoC1604に結合されてもよい。少なくとも一実施例では、CPU1618は、たとえばX86プロセッサを含んでもよい。CPU1618は、たとえば、ADASセンサとSoC1604の間で潜在的に不整合な結果を調停すること、並びに/又はコントローラ1636及び/若しくはチップ上のインフォテイメント・システム(「インフォテイメントSoC」)1630の状態及び健全性を監視することを含め、様々な機能のうちの任意の機能を実行するために使用されてもよい。
少なくとも一実施例では、車両1600はGPU1620(たとえば、個別GPU又はdGPU)を含んでもよく、このGPUは高速相互接続(たとえば、NVIDIAのNVLINK)を介してSoC1604に結合されてもよい。少なくとも一実施例では、GPU1620は、冗長な及び/又は異なるニューラル・ネットワークを実行することなどによって、追加の人工知能機能を提供してもよく、車両1600のセンサからの入力(たとえば、センサ・データ)に少なくとも部分的に基づき、ニューラル・ネットワークを訓練及び/又は更新するために使用されてもよい。
少なくとも一実施例では、車両1600はさらに、ネットワーク・インターフェース1624を含んでもよく、このインターフェースは限定することなく、ワイヤレス・アンテナ1626(たとえば、セルラー・アンテナ、Bluetoothアンテナなど、異なる通信プロトコル向けの1つ又は複数のワイヤレス・アンテナ1626)を含んでもよい。少なくとも一実施例では、クラウド(たとえば、サーバ及び/又は他のネットワーク・デバイス)、他の車両、及び/又はコンピューティング・デバイス(たとえば、乗員のクライアント・デバイス)とのインターネットを介したワイヤレス接続を可能にするために、ネットワーク・インターフェース1624が使用されてもよい。少なくとも一実施例では、他の車両と通信するために、車両160と他の車両との間に直接リンクが確立されてもよく、且つ/又は(たとえば、ネットワークにわたって、且つインターネットを介して)間接リンクが確立されてもよい。少なくとも一実施例では、直接リンクは、車車間通信リンクを使用して提供されてもよい。車車間通信リンクは、車両1600の近傍の車両(たとえば、車両1600の前方、側方、及び/又は後方の車両)についての情報を車両1600に提供してもよい。少なくとも一実施例では、前述した機能は、車両1600の協調型アダプティブ・クルーズ・コントロール機能の一部であってもよい。
少なくとも一実施例では、ネットワーク・インターフェース1624は、変調及び復調の機能を提供し、コントローラ1636がワイヤレス・ネットワークを介して通信できるようにするSoCを含んでもよい。少なくとも一実施例では、ネットワーク・インターフェース1624は、ベースバンドから無線周波数へのアップ・コンバージョン、及び無線周波数からベースバンドへのダウン・コンバージョンのための無線周波数フロント・エンドを含んでもよい。少なくとも一実施例では、周波数変換は、任意の技術的に実行可能なやり方で実行されてもよい。たとえば、周波数変換は、よく知られたプロセスにより、且つ/又はスーパー・ヘテロダイン・プロセスを使用して実行することができる。少なくとも一実施例では、無線周波数フロント・エンド機能は、別個のチップによって提供されてもよい。少なくとも一実施例では、ネットワーク・インターフェースは、LTE、WCDMA、UMTS、GSM、CDMA2000、Bluetooth、Bluetooth LE、Wi-Fi、Z-Wave、ZigBee、LoRaWAN、及び/又は他のワイヤレス・プロトコルを介して通信するためのワイヤレス機能を含んでもよい。
少なくとも一実施例では、車両1600はさらにデータ・ストア1628を含んでもよく、このデータ・ストアは限定することなく、オフ・チップ(たとえばSoC1604上にない)ストレージを含んでもよい。少なくとも一実施例では、データ・ストア1628は、RAM、SRAM、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)、ビデオ・ランダム・アクセス・メモリ(「VRAM」:video random-access memory)、フラッシュ、ハード・ディスク、並びに/又は少なくとも1ビットのデータを記憶することができる他の構成要素及び/若しくはデバイスを含む1つ若しくは複数のストレージ要素を、限定することなく含んでもよい。
少なくとも一実施例では、車両1600はさらに、マッピング、知覚、占有グリッド生成、及び/又は経路計画の機能を支援するためのGNSSセンサ1658(たとえば、GPS及び/又は補助GPSセンサ)を含んでもよい。少なくとも一実施例では、イーサネット(登録商標)からシリアル(たとえばRS-232)へのブリッジを有するUSBコネクタを使用するGPSをたとえば限定することなく含む任意の数のGNSSセンサ1658が使用されてもよい。
少なくとも一実施例では、車両1600はさらに、RADARセンサ1660を含んでもよい。RADARセンサ1660は、暗闇及び/又は厳しい気象条件の中でも、長距離の車両検出を行うために車両1600によって使用されてもよい。少なくとも一実施例では、RADARの機能的安全性レベルは、ASIL Bであってもよい。RADARセンサ1660は、制御のために(たとえば、RADARセンサ1660によって生成されたデータを送信するために)、また物体追跡データにアクセスするために、CAN及び/又はバス1602を使用してもよく、いくつかの例では、未加工データにアクセスするためにイーサネット(登録商標)にアクセスできる。少なくとも一実施例では、多様なタイプのRADARセンサが使用されてもよい。たとえば限定することなく、RADARセンサ1660は、前方、後方、及び側方のRADAR使用に好適であってもよい。少なくとも一実施例では、RADARセンサ1660のうちの1つ又は複数は、パルス・ドップラRADARセンサである。
少なくとも一実施例では、RADARセンサ1660は、狭視野の長距離、広視野の短距離、側面を網羅する短距離など、異なる構成を含んでもよい。少なくとも一実施例では、長距離RADARは、アダプティブ・クルーズ・コントロール機能のために使用されてもよい。少なくとも一実施例では、長距離RADARシステムは、2つ以上の独立した走査によって実現される250mの範囲内などの広視野を提供してもよい。少なくとも一実施例では、RADARセンサ1660は、静的物体と移動している物体とを区別しやすくしてもよく、緊急ブレーキ支援及び前方衝突警告を行うためにADASシステム1638によって使用されてもよい。長距離RADARシステムに含まれるセンサ1660は、複数の(たとえば6つ以上の)固定RADARアンテナ、並びに高速CAN及びFlexRayインターフェースを有するモノスタティックのマルチモードRADARを、限定することなく含んでもよい。少なくとも一実施例では、6つのアンテナがある場合、中央の4つのアンテナは、隣接した車線からの干渉が最小の状態で、より高速で車両1600の周囲を記録するように設計された集中したビーム・パターンを生成してもよい。少なくとも一実施例では、他の2つのアンテナは、視野を拡張してもよく、車両1600の車線に入る又はそこから出る車両を迅速に検出するのを可能にする。
少なくとも一実施例では、中距離RADARシステムは、一例として最大160m(前方)、又は80m(後方)の範囲、及び最大42度(前方)、又は150度(後方)の視野を含んでもよい。少なくとも一実施例では、短距離RADARシステムは、限定することなく、後方バンパの両端部に設置されるように設計された任意の数のRADARセンサ1660を含んでもよい。後方バンパの両端部に設置されたとき、少なくとも一実施例では、RADARセンサ・システムは、後方及び車両隣の死角を常に監視する2本のビームを生成してもよい。少なくとも一実施例では、短距離RADARシステムは、死角検出及び/又は車線変更支援を行うために、ADASシステム1638において使用されてもよい。
少なくとも一実施例では、車両1600はさらに、超音波センサ1662を含んでもよい。超音波センサ1662は、車両1600の前方、後方、及び/又は側方に配置されてもよく、駐車支援のため、且つ/又は占有グリッドを生成し更新するために使用されてもよい。少なくとも一実施例では、多様な超音波センサ1662が使用されてもよく、異なる検出範囲(たとえば、2.5m、4m)には異なる超音波センサ1662が使用されてもよい。少なくとも一実施例では、超音波センサ1662は、機能的安全性レベルASIL Bで動作してもよい。
少なくとも一実施例では、車両1600は、LIDARセンサ1664を含んでもよい。LIDARセンサ1664は、物体及び歩行者の検出、緊急ブレーキ、衝突回避、及び/又は他の機能のために使用されてもよい。少なくとも一実施例では、LIDARセンサ1664は、機能的安全性レベルASIL Bであってもよい。少なくとも一実施例では、車両1600は、複数のLIDARセンサ1664(たとえば、2つ、4つ、6つなど)を含んでもよく、これらのセンサは、(たとえばデータをギガビット・イーサネット(登録商標)・スイッチに提供するために)イーサネット(登録商標)を使用してもよい。
少なくとも一実施例では、LIDARセンサ1664は、360度の視野について、物体及びそれらの距離のリストを提供可能であってもよい。少なくとも一実施例では、市販のLIDARセンサ1664は、たとえば宣伝された範囲がおおよそ100mであり、精度が2cm~3cmであり、100Mbpsのイーサネット(登録商標)接続をサポートしてもよい。少なくとも一実施例では、1つ又は複数の非突出型LIDARセンサ1664が使用されてもよい。こうした実施例では、LIDARセンサ1664は、車両1600の前方、後方、側方、及び/又は角に組み込むことができる小さいデバイスとして実装されてもよい。少なくとも一実施例では、こうした実施例のLIDARセンサ1664は、最大120度の水平視野、及び35度の垂直視野を、低反射性の物体に対しても200mの範囲で提供してもよい。少なくとも一実施例では、前方に取り付けられたLIDARセンサ1664は、45度~135度の水平視野をもたらすように構成されてもよい。
少なくとも一実施例では、3DフラッシュLIDARなどのLIDAR技術も使用されてよい。3DフラッシュLIDARは、レーザのフラッシュを送信源として使用して、車両1600の周囲を最大でおおよそ200mまで照射する。少なくとも一実施例では、フラッシュLIDARユニットは、限定することなくレセプタを含み、このレセプタは、レーザ・パルスの通過時間及び各ピクセルにおける反射光を記録し、それらは、車両1600から物体までの範囲に対応する。少なくとも一実施例では、フラッシュLIDARによって、非常に正確でゆがみのない周囲画像が、レーザのフラッシュごとに生成できるようになる。少なくとも一実施例では、4つのフラッシュLIDARが、車両1600の各側面に1つ導入されてもよい。少なくとも一実施例では、3DフラッシュLIDARシステムは、ファン以外に可動部品のない半導体3D凝視アレイ(staring array)のLIDARカメラ(たとえば、非走査型LIDARデバイス)を、限定することなく含む。少なくとも一実施例では、フラッシュLIDARデバイスは、フレーム当たり5ナノ秒のクラスI(目に安全な)レーザ・パルスを使用してもよく、3D範囲の点群及び位置同期された(co-registered)強度データの形で反射レーザ光を捕捉してもよい。
少なくとも一実施例では、車両はさらにIMUセンサ1666を含んでもよい。少なくとも一実施例では、IMUセンサ1666は、少なくとも一実施例では、車両1600の後方車軸の中央に位置付けられてもよい。少なくとも一実施例では、IMUセンサ1666は、たとえば限定することなく、加速度計、磁力計、ジャイロスコープ、磁気コンパス、及び/又は他のタイプのセンサを含んでもよい。6軸の用途など少なくとも一実施例では、IMUセンサ1666は限定することなく、加速度計及びジャイロスコープを含んでもよい。9軸の用途など少なくとも一実施例では、IMUセンサ1666は限定することなく、加速度計、ジャイロスコープ、及び磁力計を含んでもよい。
少なくとも一実施例では、IMUセンサ1666は、微小電気機械システム(「MEMS」:micro-electro-mechanical systems)慣性センサ、高感度GPS受信機、及び先進のKalmanフィルタリング・アルゴリズムを組み合わせて、位置、速度、及び姿勢の推定値を提供する小型の高性能GPS補強型慣性航法システム(「GPS/INS」:GPS-Aided Inertial Navigation System)として実装されてもよい。少なくとも一実施例では、IMUセンサ1666により、車両1600は、速度変化を直接観察しそれをGPSからIMUセンサ1666に相関させることによって、磁気センサからの入力を必要とせずに方位を推定できるようになる。少なくとも一実施例では、IMUセンサ1666及びGNSSセンサ1658は、単一の統合ユニットに組み合わされてもよい。
少なくとも一実施例では、車両1600は、車両1600の中及び/又はその周りに設置されたマイクロフォン1696を含んでもよい。少なくとも一実施例では、マイクロフォン1696は、とりわけ緊急車両の検出及び識別のために使用されてもよい。
少なくとも一実施例では、車両1600はさらに、ステレオ・カメラ1668、広角カメラ1670、赤外線カメラ1672、周囲カメラ1674、長距離カメラ1698、中距離カメラ1676、及び/又は他のカメラ・タイプを含む任意の数のカメラ・タイプを含んでもよい。少なくとも一実施例では、カメラは、車両1600の全周囲の周りで画像データを捕捉するために使用されてもよい。少なくとも一実施例では、使用されるカメラのタイプは、車両1600に応じて異なる。少なくとも一実施例では、車両1600の周りで必要な被写域を提供するために、カメラ・タイプの任意の組合せが使用されてもよい。少なくとも一実施例では、カメラの数は、実施例に応じて異なってもよい。たとえば、少なくとも一実施例では、車両1600は6台のカメラ、7台のカメラ、10台のカメラ、12台のカメラ、又は別の数のカメラを含むことができる。カメラは、一例として限定することなく、ギガビット・マルチメディア・シリアル・リンク(「GMSL」:Gigabit Multimedia Serial Link)及び/又はギガビット・イーサネット(登録商標)をサポートしてもよい。少なくとも一実施例では、各カメラは、図16A及び図16Bに関して本明細書でさらに詳細に上で説明されている。
少なくとも一実施例では、車両1600はさらに、振動センサ1642を含んでもよい。振動センサ1642は、車軸など、車両1600の構成要素の振動を測定してもよい。たとえば、少なくとも一実施例では、振動の変化は、路面の変化を示すことがある。少なくとも一実施例では、2つ以上の振動センサ1642が使用される場合には、路面の摩擦又はすべり量を判定するために振動の差が使用されてもよい(たとえば、動力により駆動される車軸と自由回転する車軸との間に振動差がある場合)。
少なくとも一実施例では、車両1600は、ADASシステム1638を含んでもよい。ADASシステム1638は、限定することなく、いくつかの例においてSoCを含んでもよい。少なくとも一実施例では、ADASシステム1638は、限定することなく、任意の数及び任意の組合せの、自律/アダプティブ/自動のクルーズ・コントロール(「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」:ane centering)システム、並びに/又は他のシステム、特徴、及び/若しくは機能を含んでもよい。
少なくとも一実施例では、ACCシステムは、RADARセンサ1660、LIDARセンサ1664、及び/又は任意の数のカメラを使用してもよい。少なくとも一実施例では、ACCシステムは、縦方向ACCシステム及び/又は横方向ACCシステムを含んでもよい。少なくとも一実施例では、縦方向ACCシステムは、車両1600の直前の車両までの距離を監視及び制御し、車両1600のスピードを自動的に調節して、前の車両からの安全な距離を維持する。少なくとも一実施例では、横方向ACCシステムは、距離の維持を実行し、必要なときに車線変更するよう車両1600に通知する。少なくとも一実施例では、横方向ACCは、LC及びCWなどの他のADAS用途に関係する。
少なくとも一実施例では、CACCシステムは、他の車両からの情報を使用し、この情報は、ワイヤレス・リンクにより、又は間接的にネットワーク接続を介して(たとえばインターネットを介して)、他の車両からネットワーク・インターフェース1624及び/又はワイヤレス・アンテナ1626により受信されてもよい。少なくとも一実施例では、車車間(「V2V」:vehicle-to-vehicle)通信リンクによって直接リンクが提供されてもよく、一方インフラストラクチャ車間(「I2V」:infrastructure-to-vehicle)通信リンクによって間接リンクが提供されてもよい。一般に、V2V通信の概念は、すぐ前の先行車両(たとえば、車両1600のすぐ前で同じ車線にいる車両)についての情報を提供し、I2V通信の概念は、さらにその前の交通についての情報を提供する。少なくとも一実施例では、CACCシステムは、I2VとV2Vの情報源のいずれか又は両方を含んでもよい。少なくとも一実施例では、車両1600の前の車両についての情報があれば、CACCシステムは信頼性をさらに高めることができ、交通の流れをより円滑にし、路上での渋滞を低減できる可能性を有する。
少なくとも一実施例では、FCWシステムは、危険物に対してドライバに忠告するように設計され、それによりドライバは修正措置を取ることができる。少なくとも一実施例では、FCWシステムは正面カメラ及び/又はRADARセンサ1660を使用し、これらは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、FCWシステムは、音、視覚的警告、振動、及び/又はクイック・ブレーキ・パルスなどの形で警告を提供してもよい。
少なくとも一実施例では、AEBシステムは、別の車両又は他の物体との差し迫った正面衝突を検出し、指定された時間内又は距離パラメータ内にドライバが修正措置を取らない場合には、自動でブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された正面カメラ及び/又はRADARセンサ1660を使用してもよい。少なくとも一実施例では、AEBシステムが危険物を検出したとき、AEBシステムは通常、修正措置を取って衝突を避けるよう最初にドライバに忠告し、ドライバが修正措置を取らない場合には、AEBシステムは、予測される衝突を防ぐ又は少なくともその衝撃を軽減するために自動的にブレーキをかけてもよい。少なくとも一実施例では、AEBシステムは、ダイナミック・ブレーキ・サポート及び/又は衝突直前ブレーキなどの技法を含んでもよい。
少なくとも一実施例では、LDWシステムは、車両1600が車線の目印に交差したときにドライバに忠告するために、ハンドル又は座席の振動など、視覚的、聴覚的、及び/又は触覚的な警告を提供する。少なくとも一実施例では、ドライバが方向指示器を作動させることによって意図的な車線逸脱を示す場合には、LDWシステムは作動しない。少なくとも一実施例では、LDWシステムは、正面カメラを使用してもよく、これは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合することができる専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。少なくとも一実施例では、LKAシステムは、LDWシステムの変形形態である。LKAシステムは、車両1600が車線からはみ出し始めた場合に、車両1600を修正するように操縦入力又はブレーキ制御を提供する。
少なくとも一実施例では、BSWシステムは、自動車の死角にある車両を検出し、ドライバに警告する。少なくとも一実施例では、BSWシステムは、視覚的、聴覚的、及び/又は触覚的なアラートを提供して、合流又は車線変更が安全ではないことを示してもよい。少なくとも一実施例では、BSWシステムは、ドライバが方向指示器を使用したときに追加の警告を提供してもよい。少なくとも一実施例では、BSWシステムは、専用のプロセッサ、DSP、FPGA、及び/又はASICに結合された背面カメラ及び/又はRADARセンサ1660を使用してもよく、これらの専用のプロセッサ、DSP、FPGA、及び/又はASICは、ディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合されている。
少なくとも一実施例では、RCTWシステムは、車両1600の後退時に、後方カメラの範囲外に物体が検出されたときに、視覚的、聴覚的、及び/又は触覚的な通知を提供してもよい。少なくとも一実施例では、RCTWシステムは、衝突を回避するために確実に車両ブレーキがかけられるように、AEBシステムを含む。少なくとも一実施例では、RCTWシステムは、1つ又は複数の背面RADARセンサ1660を使用してもよく、これはディスプレイ、スピーカ、及び/又は振動構成要素などのドライバへのフィードバックに電気的に結合された専用のプロセッサ、DSP、FPGA、及び/又はASICに結合されている。
少なくとも一実施例では、従来のADASシステムは、誤検出結果を出しがちなことがあり、これはドライバにとっては迷惑で気が散るものであり得るが、通常は大したことにはならない。なぜなら、従来のADASシステムは、ドライバに忠告し、安全を要する状態が本当に存在し、それに適宜対応するかどうかを、ドライバが判断できるようにするからである。少なくとも一実施例では、結果が矛盾する場合、一次コンピュータ(たとえば第1のコントローラ1636)からの結果に従うか、又は二次コンピュータ(たとえば、第2のコントローラ1636)からの結果に従うかどうかを、車両1600自体が判断する。たとえば、少なくとも一実施例では、ADASシステム1638は、バックアップ・コンピュータの合理性モジュールに知覚情報を抵抗するための、バックアップ及び/又は二次コンピュータであってもよい。少なくとも一実施例では、バックアップ・コンピュータの合理性モニタが、ハードウェア構成要素上の冗長性の多様なソフトウェアを実行して、知覚の誤り及び動的な運転タスクを検出してもよい。少なくとも一実施例では、ADASシステム1638からの出力は、監視MCUに提供されてもよい。少なくとも一実施例では、一次コンピュータからの出力と二次コンピュータからの出力が矛盾する場合には、監視MCUが、安全な動作を確保するために矛盾をどのように調和させるかを判定する。
少なくとも一実施例では、一次コンピュータは、一次コンピュータの選択した結果の信頼性を示す信頼性スコアを、監視MCUに提供するように構成されてもよい。少なくとも一実施例では、信頼性スコアが閾値を超える場合には、二次コンピュータが矛盾する又は一貫性のない結果を提供しているかどうかに関わらず、監視MCUは一次コンピュータの指示に従ってもよい。少なくとも一実施例では、信頼性スコアが閾値を満足せず、一次コンピュータと二次コンピュータが異なる結果(たとえば、矛盾)を示す場合には、監視MCUは、コンピュータ同士を調停して、適切な結果を判定してもよい。
少なくとも一実施例では、二次コンピュータが誤アラームを提供する条件を、一次コンピュータと二次コンピュータからの出力に少なくとも部分的に基づき判定するように訓練及び構成されたニューラル・ネットワークを、監視MCUが実行するように構成されてもよい。少なくとも一実施例では、監視MCUのニューラル・ネットワークは、二次コンピュータの出力が信用されてもよいときと、信用できないときとを学習してもよい。たとえば、少なくとも一実施例では、二次コンピュータがRADARベースのFCWシステムである場合、監視MCUのニューラル・ネットワークは、アラームをトリガする排水溝の格子又はマンホール・カバーなど、実際には危険物ではない金属物体をFCWシステムが識別するときを学習してもよい。少なくとも一実施例では、二次コンピュータがカメラ・ベースのLDWシステムである場合、自転車や歩行者が存在し、車線逸脱が実際には最も安全な操作であるときに、監視MCUのニューラル・ネットワークはLDWを無効にするように学習してもよい。少なくとも一実施例では、監視MCUは、ニューラル・ネットワークを関連するメモリとともに実行するのに好適なDLA又はGPUのうちの少なくとも1つを含んでもよい。少なくとも一実施例では、監視MCUは、SoC1604の構成要素を備えても、且つ/又はその構成要素として含まれてもよい。
少なくとも一実施例では、ADASシステム1638は、コンピュータ・ビジョンの従来のルールを使用してADAS機能を実行する二次コンピュータを含んでもよい。少なくとも一実施例では、二次コンピュータは、従来のコンピュータ・ビジョン・ルール(if-thenルール)を使用してもよく、ニューラル・ネットワークが監視MCUに存在することによって、信頼性、安全性、及び性能が向上してもよい。たとえば、少なくとも一実施例では、多様な実装及び意図的な非同一性により、特にソフトウェア(又はソフトウェアとハードウェアのインターフェース)の機能によって生じる誤りに対し、システム全体の誤り耐性が高まる。たとえば、少なくとも一実施例では、一次コンピュータ上で実行中のソフトウェアにバグ又はエラーがあり、二次コンピュータ上で実行中の非同一のソフトウェア・コードが、全体的に同じ結果を提供する場合には、監視MCUは、全体的な結果が正しく、一次コンピュータ上のソフトウェア又はハードウェアのバグが重大なエラーを引き起こしていないという、より高い信頼性を有してもよい。
少なくとも一実施例では、ADASシステム1638の出力は、一次コンピュータの知覚ブロック、及び/又は一次コンピュータの動的運転タスクブロックに供給されてもよい。たとえば、少なくとも一実施例では、ADASシステム1638が、直前の物体に起因して正面衝突警告を示している場合には、知覚ブロックは、物体を識別するときにこの情報を使用してもよい。少なくとも一実施例では、二次コンピュータは、本明細書に記載するように、訓練済みの、したがって誤検出のリスクを低減する独自のニューラル・ネットワークを有してもよい。
少なくとも一実施例では、車両1600はさらに、インフォテイメントSoC1630(たとえば、車両内インフォテイメント・システム(IVI):in-vehicle infotainment system)を含んでもよい。インフォテイメント・システム1630はSoCとして図示及び説明されるが、少なくとも一実施例では、SoCではなくてもよく、限定することなく2つ以上の個別の構成要素を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1630は、限定することなく、ハードウェアとソフトウェアの組合せを含んでもよく、この組合せを使用して、オーディオ(たとえば、音楽、パーソナル・デジタル・アシスタント、ナビゲーション命令、ニュース、ラジオなど)、ビデオ(たとえば、TV、映画、ストリーミングなど)、電話(たとえば、ハンズフリー通話)、ネットワーク接続(たとえば、LTE、Wi-Fiなど)、及び/又は情報サービス(たとえば、ナビゲーション・システム、後方駐車支援、無線データ・システム、車両関連情報、たとえば燃料レベル、合計走行距離、ブレーキ燃料レベル、オイル・レベル、ドアの開閉、空気フィルタ情報など)を車両1600に提供してもよい。たとえば、インフォテイメントSoC1630は、ラジオ、ディスク再生装置、ナビゲーション・システム、ビデオ再生装置、USB及びBluetooth接続、カーピュータ、車内エンタテイメント、Wi-Fi、ハンドル・オーディオ制御、ハンズフリー音声制御、ヘッド・アップ・ディスプレイ(「HUD」:heads-up display)、HMIディスプレイ1634、テレマテックス・デバイス、(たとえば、様々な構成要素、特徴、及び/若しくはシステムを制御及び/若しくは相互作用するための)制御パネル、並びに/又は他の構成要素を含むことができる。少なくとも一実施例では、さらにインフォテイメントSoC1630を使用して、ADASシステム1638からの情報、車両操作計画、軌道などの自律運転情報、周囲環境情報(たとえば、交差点情報、車両情報、道路情報など)、及び/又は他の情報などの(たとえば、視覚的及び/又は聴覚的な)情報が、車両のユーザに提供されてもよい。
少なくとも一実施例では、インフォテイメントSoC1630は、任意の量及びタイプのGPU機能を含んでもよい。少なくとも一実施例では、インフォテイメントSoC1630は、バス1602(たとえば、CANバス、イーサネット(登録商標)など)を介して、車両1600の他のデバイス、システム、及び/又は構成要素と通信してもよい。少なくとも一実施例では、インフォテイメントSoC1630は監視MCUに結合されてもよく、それにより、一次コントローラ1636(たとえば、車両1600の一次及び/又はバックアップのコンピュータ)が故障したときに、インフォテイメント・システムのGPUが、一部の自己運転機能を実行してもよい。少なくとも一実施例では、インフォテイメントSoC1630は、本明細書に記載するように、車両1600を運転手-安全停止モードにしてもよい。
少なくとも一実施例では、車両1600はさらに、計器クラスタ1632(たとえば、デジタル・ダッシュボード、電子計器クラスタ、デジタル計器パネルなど)を含んでもよい。計器クラスタ1632は、限定することなく、コントローラ、及び/又はスーパーコンピュータ(たとえば、個別のコントローラ又はスーパーコンピュータ)を含んでもよい。少なくとも一実施例では、計器クラスタ1632は、限定することなく、スピード・メータ、燃料レベル、油圧、タコメータ、オドメータ、方向指示器、シフトレバー位置インジケータ、シート・ベルト警告灯、バーキング・ブレーキ警告灯、エンジン故障灯、補助拘束システム(たとえば、エアバッグ)情報、ライト制御、安全システム制御、ナビゲーション情報など、任意の数及び組合せの計器セットを含んでもよい。いくつかの例では、インフォテイメントSoC1630と計器クラスタ1632との間で、情報が表示及び/又は共有されてもよい。少なくとも一実施例では、計器クラスタ1632は、インフォテイメントSoC1630の一部として含まれてもよく、又はその逆であってもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図16Cのシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図16Dは、少なくとも一実施例による、クラウド・ベースのサーバと図16Aの自律車両1600との間で通信するためのシステム1676の図である。少なくとも一実施例では、システム1676は、限定することなく、サーバ1678、ネットワーク1690、並びに車両1600を含む任意の数及びタイプの車両を含んでもよい。サーバ1678は、限定することなく、複数のGPU1684(A)~1684(H)(本明細書ではまとめてGPU1684と呼ぶ)、PCIeスイッチ1682(A)~1682(H)(本明細書ではまとめてPCIeスイッチ1682と呼ぶ)、及び/又はCPU1680(A)~1680(B)(本明細書ではまとめてCPU1680と呼ぶ)を含んでもよい。GPU1684、CPU1680、及びPCIeスイッチ1682は、たとえば限定することなく、NVIDIAにより開発されたNVLinkインターフェース1688、及び/又はPCIe接続1686などの高速相互接続によって、相互接続されてもよい。少なくとも一実施例では、GPU1684同士は、NVLink及び/又はNVSスイッチSoCを介して接続され、GPU1684とPCIeスイッチ1682は、PCIe相互接続を介して接続される。少なくとも一実施例では、8個のGPU1684、2個のCPU1680、及び4個のPCIeスイッチ1682が図示してあるが、これは限定するものではない。少なくとも一実施例では、サーバ1678のそれぞれは、限定することなく、任意の数のGPU1684、CPU1680、及び/又はPCIeスイッチ1682を任意の組合せで含んでもよい。たとえば、少なくとも一実施例では、サーバ1678は、それぞれが8個、16個、32個、及び/又はそれ以上のGPU1684を含むことができる。
少なくとも一実施例では、サーバ1678は、最近始まった道路工事などの予想外の又は変更された道路状態を示す画像を表す画像データを、ネットワーク1690を介して車両から受信してもよい。少なくとも一実施例では、サーバ1678は、ニューラル・ネットワーク1692、更新済みニューラル・ネットワーク1692、及び/又は、限定することなく交通状態及び道路状態に関する情報を含む地図情報1694を、ネットワーク1690を介して車両に送信してもよい。少なくとも一実施例では、地図情報1694の更新は、建築現場、穴、迂回路、洪水、及び/又は他の障害物に関する情報など、HDマップ1622に対する更新を、限定することなく含んでもよい。少なくとも一実施例では、ニューラル・ネットワーク1692、更新済みニューラル・ネットワーク1692、及び/又は地図情報1694は、環境内の任意の数の車両から受信したデータに表された新しい訓練及び/又は経験から得られたものであってもよく、且つ/又は、データ・センタにおいて(たとえば、サーバ1678及び/又は他のサーバを使用して)実行された訓練に少なくとも部分的に基づき、得られたものであってもよい。
少なくとも一実施例では、サーバ1678を使用して、訓練データに少なくとも部分的に基づき、機械学習モデル(たとえば、ニューラル・ネットワーク)が訓練されてもよい。訓練データは車両によって生成されてもよく、且つ/又はシミュレーションで(たとえば、ゲーム・エンジンを使用して)生成されてもよい。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習により恩恵を受ける場合には)任意の量の訓練データがタグ付けされ、且つ/又は他の前処理を受ける。少なくとも一実施例では、(たとえば、関連するニューラル・ネットワークが教師あり学習を必要としない場合には)任意の量の訓練データはタグ付け及び/又は前処理されない。少なくとも一実施例では、機械学習モデルが訓練されると、機械学習モデルは車両によって使用されてもよく(たとえば、ネットワーク1690を介して車両に送信されてもよく、且つ/又は機械学習モデルは、車両を遠隔監視するためにサーバ1678によって使用されてもよい。
少なくとも一実施例では、サーバ1678は車両からデータを受信し、リアル・タイムの知的推論ができるように、最新のリアル・タイムのニューラル・ネットワークにデータを適用してもよい。少なくとも一実施例では、サーバ1678は、NVIDIAによって開発されたDGX及びDGXステーション・マシンなど、GPU1684によって動く深層学習スーパーコンピュータ及び/又は専用AIコンピュータを含んでもよい。しかし、少なくとも一実施例では、サーバ1678は、CPUにより動くデータ・センタを使用する深層学習インフラストラクチャを含んでもよい。
少なくとも一実施例では、サーバ1678の深層学習インフラストラクチャは、高速のリアル・タイムの推論が可能であってもよく、その機能を使用して、車両1600のプロセッサ、ソフトウェア、及び/又は関連ハードウェアの健全性を評価及び確認してもよい。たとえば、少なくとも一実施例では、深層学習インフラストラクチャは、一連の画像、及び/又はその一連の画像において(たとえば、コンピュータ・ビジョン及び/又は他の機械学習の物体分類技法により)車両1600が位置特定した物体など、周期的な更新を車両1600から受信してもよい。少なくとも一実施例では、深層学習インフラストラクチャは、独自のニューラル・ネットワークを実行して物体を識別し、それを車両1600によって識別された物体と比較してもよく、結果が一致せず、車両1600のAIが故障していると深層学習インフラストラクチャが結論づけた場合には、サーバ1678は、車両1600のフェイル・セーフ・コンピュータに制御を掌握し、乗員に通知し、安全な停車操作を完了するよう命じる信号を車両1600に送信してもよい。
少なくとも一実施例では、サーバ1678は、GPU1684、及び1つ又は複数のプログラム可能な推論アクセラレータ(たとえば、NVIDIAのTensorRT3)を含んでもよい。少なくとも一実施例では、GPUにより動くサーバと、推論の加速とを組み合わせることによって、リアル・タイムの応答を可能にすることができる。性能がそれほど重要ではない場合など、少なくとも一実施例では、CPU、FPGA、及び他のプロセッサにより動くサーバが、推論に使用されてもよい。少なくとも一実施例では、1つ又は複数の実施例を実行するために、ハードウェア構造体1315が使用される。ハードウェア構造体1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。
コンピュータ・システム
図17は、例示的なコンピュータ・システムを示すブロック図であり、このコンピュータ・システムは、少なくとも一実施例による、命令を実行するための実行ユニットを含んでもよいプロセッサとともに形成された、相互接続されたデバイス及び構成要素、システム・オン・チップ(SoC)、又はこれらの何らかの組合せ1700を有するシステムであってもよい。少なくとも一実施例では、コンピュータ・システム1700は、本明細書に記載の実施例などにおいて本開示に従ってデータを処理するためのアルゴリズムを実行する論理を含む実行ユニットを使用するための、プロセッサ1702などの構成要素を、限定することなく含んでもよい。少なくとも一実施例では、コンピュータ・システム1700は、カリフォルニア州サンタクララのインテルコーポレーションから入手可能なPENTIUM(登録商標)プロセッサ・ファミリー、XeonTM、Itanium(登録商標)、XScaleTM及び/又はStrongARMTM、Intel(登録商標)Core(商標)、又はIntel(登録商標)Nervana(商標)マイクロプロセッサなどのプロセッサを含んでもよいが、(他のマイクロプロセッサ、エンジニアリング・ワークステーション、セット・トップ・ボックスなどを有するPCを含め)他のシステムが使用されてもよい。少なくとも一実施例では、コンピュータ・システム1700は、ワシントン州、レドモンドのマイクロソフトコーポレーションから入手可能なWINDOWS(登録商標)のオペレーティング・システムのあるバージョンを実行してもよいが、他のオペレーティング・システム(たとえば、UNIX(登録商標)及びLinux)、組み込みソフトウェア、及び/又はグラフィカル・ユーザ・インターフェースが使用されてもよい。
実施例は、携帯型デバイス及び組み込みアプリケーションなど、他のデバイスで使用されてもよい。携帯型デバイスのいくつかの例は、セルラー・フォン、インターネット・プロトコル・デバイス、デジタル・カメラ、パーソナル・デジタル・アシスタント(「PDA」:personal digital assistants)、及び携帯型PCを含む。少なくとも一実施例では、組み込みアプリケーションは、マイクロコントローラ、デジタル信号プロセッサ(「DSP」:digital signal processor)、システム・オン・チップ、ネットワーク・コンピュータ(「NetPC」:network computers)、セット・トップ・ボックス、ネットワーク・ハブ、広域ネットワーク(「WAN」:wide area network)スイッチ、又は少なくとも一実施例による1つ又は複数の命令を実行することができる任意の他のシステムを含んでもよい。
少なくとも一実施例では、コンピュータ・システム1700は、限定することなくプロセッサ1702を含んでもよく、このプロセッサ1702は限定することなく、本明細書に記載の技法による機械学習モデルの訓練及び/又は推論を実行するための1つ又は複数の実行ユニット1708を含んでもよい。少なくとも一実施例では、システム17は、シングル・プロセッサのデスクトップ又はサーバ・システムであるが、別の実施例では、システム17はマルチプロセッサ・システムであってもよい。少なくとも一実施例では、プロセッサ1702は、限定することなく、複合命令セット・コンピュータ(「CISC」:complex instruction set computer)マイクロプロセッサ、縮小命令セット・コンピューティング(「RISC」)マイクロプロセッサ、超長命令語(「VLIW」)マイクロプロセッサ、命令セットの組合せを実装するプロセッサ、又は任意の他のプロセッサ・デバイス、たとえばデジタル信号プロセッサなどを含んでもよい。少なくとも一実施例では、プロセッサ1702は、プロセッサ・バス1710に結合されてもよく、このプロセッサ・バスは、プロセッサ1702とコンピュータ・システム1700内の他の構成要素との間でデジタル信号を送信してもよい。
少なくとも一実施例では、プロセッサ1702は、限定することなく、レベル1(「L1」)の内部キャッシュ・メモリ(「キャッシュ」)1704を含んでもよい。少なくとも一実施例では、プロセッサ1702は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ1702の外部にあってもよい。他の実施例は、特定の実装形態及び必要性に応じて、内部キャッシュと外部キャッシュの両方の組合せも含んでよい。少なくとも一実施例では、レジスタ・ファイル1706は、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタを限定することなく含む様々レジスタに、異なるタイプのデータを記憶してもよい。
少なくとも一実施例では、整数及び浮動小数点の演算を実行するための論理を限定することなく含む実行ユニット1708も、プロセッサ1702にある。プロセッサ1702は、ある一定のマクロ命令のためのマイクロコードを記憶するマイクロコード(「uコード」)読取り専用メモリ(「ROM」:read only memory)も含んでよい。少なくとも一実施例では、実行ユニット1708は、パック命令セット1709に対処する論理を含んでもよい。少なくとも一実施例では、パック命令セット1709を、命令を実行する関連回路とともに汎用プロセッサ1702の命令セットに含めることにより、多くのマルチメディア・アプリケーションによって使用される演算を、汎用プロセッサ1702のパック・データを使用して実行することができる。1つ又は複数の実施例では、プロセッサのデータ・バスの全幅を使用してパック・データの演算を実行することによって、多くのマルチメディア・アプリケーションを加速し、より効率的に実行することができ、これにより、1度に1つのデータ要素に対して1つ又は複数の演算を実行するためにプロセッサのデータ・バス間でより小さい単位のデータを転送する必要をなくすことができる。
少なくとも一実施例では、実行ユニット1708はまた、マイクロコントローラ、組み込みプロセッサ、グラフィックス・デバイス、DSP、及び他のタイプの論理回路において使用されてもよい。少なくとも一実施例では、コンピュータ・システム1700は、限定することなくメモリ1720を含んでもよい。少なくとも一実施例では、メモリ1720は、ダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイス、スタティック・ランダム・アクセス・メモリ(「SRAM」)デバイス、フラッシュ・メモリ・デバイス、又は他のメモリ・デバイスとして実装されてもよい。メモリ1720は、プロセッサ1702によって実行されてもよいデータ信号によって表される命令1719、及び/又はデータ1721を記憶してもよい。
少なくとも一実施例では、システム論理チップが、プロセッサ・バス1710及びメモリ1720に結合されてもよい。少なくとも一実施例では、システム論理チップは、限定することなく、メモリ・コントローラ・ハブ(「MCH」:memory controller hub)1716を含んでもよく、プロセッサ1702は、プロセッサ・バス1710を介してMCH1716と通信してもよい。少なくとも一実施例では、MCH1716は、命令及びデータを記憶するため、及びグラフィックス・コマンド、データ、及びテクスチャを記憶するために、高帯域幅メモリ経路1718をメモリ1720に提供してもよい。少なくとも一実施例では、MCH1716は、プロセッサ1702と、メモリ1720と、コンピュータ・システム1700の他の構成要素との間でデータ信号を導き、プロセッサ・バス1710と、メモリ1720と、システムI/O1722との間でデータ信号をブリッジしてもよい。少なくとも一実施例では、システム論理チップは、グラフィックス・コントローラに結合するためのグラフィックス・ポートを提供してもよい。少なくとも一実施例では、MCH1716は、高帯域幅メモリ経路1718を介してメモリ1720に結合されてもよく、グラフィックス/ビデオカード1712は、アクセラレーテッド・グラフィックス・ポート(「AGP」:Accelerated Graphics Port)相互接続1714を介してMCH1716に結合されてもよい。
少なくとも一実施例では、コンピュータ・システム1700は、MCH1716をI/Oコントローラ・ハブ(「ICH」:I/O controller hub)1730に結合するためのプロプライエタリ・ハブ・インターフェース・バスであるシステムI/O1722を使用してもよい。少なくとも一実施例では、ICH1730は、ローカルのI/Oバスを介していくつかのI/Oデバイスに直接接続を提供してもよい。少なくとも一実施例では、ローカルI/Oバスは、周辺装置をメモリ1720、チップセット、及びプロセッサ1702に接続するための高速I/Oバスを、限定することなく含んでもよい。例としては、オーディオ・コントローラ1729、ファームウェア・ハブ(「フラッシュBIOS」)1728、ワイヤレス・トランシーバ1726、データ・ストレージ1724、ユーザ入力及びキーボードのインターフェースを含むレガシーI/Oコントローラ1723、ユニバーサル・シリアル・バス(「USB」:Universal Serial Bus)などのシリアル拡張ポート1727、及びネットワーク・コントローラ1734が、限定することなく含まれてもよい。データ・ストレージ1724は、ハード・ディスク・ドライブ、フロッピー(登録商標)・ディスク・ドライブ、CD-ROMデバイス、フラッシュ・メモリ・デバイス、又は他の大容量ストレージ・デバイスを備えてもよい。
少なくとも一実施例では、図17は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図17は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図17で示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、コンピュータ・システム1700の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL:compute express link)相互接続を使用して相互接続されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図17のシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図18は、少なくとも一実施例による、プロセッサ1810を利用するための電子デバイス1800を示すブロック図である。少なくとも一実施例では、電子デバイス1800は、たとえば限定することなく、ノートブック、タワー・サーバ、ラック・サーバ、ブレード・サーバ、ラップトップ、デスクトップ、タブレット、モバイル・デバイス、電話、組み込みコンピュータ、又は任意の他の好適な電子デバイスであってもよい。
少なくとも一実施例では、システム1800は、任意の好適な数又は種類の構成要素、周辺装置、モジュール、若しくはデバイスに通信可能に結合されたプロセッサ1810を、限定することなく含んでもよい。少なくとも一実施例では、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)バスなどのバス若しくはインターフェースを使用して結合されるプロセッサ1810。少なくとも一実施例では、図18は、相互接続されたハードウェア・デバイス又は「チップ」を含むシステムを示すが、一方他の実施例では、図18は例示的なシステム・オン・チップ(「SoC」)を示してもよい。少なくとも一実施例では、図18に示すデバイスは、プロプライエタリ相互接続、標準相互接続(たとえば、PCIe)、又はこれらの何らかの組合せで相互接続されてもよい。少なくとも一実施例では、図18の1つ又は複数の構成要素は、コンピュート・エクスプレス・リンク(CXL)相互接続を使用して相互接続されてもよい。
少なくとも一実施例では、図18は、ディスプレイ1824、タッチ画面1825、タッチ・パッド1830、近距離無線通信ユニット(「NFC」:Near Field Communications unit)1845、センサ・ハブ1840、熱センサ1846、エクスプレス・チップセット(「EC」:Express Chipset)1835、トラステッド・プラットフォーム・モジュール(「TPM」:Trusted Platform Module)1838、BIOS/ファームウェア/フラッシュ・メモリ(「BIOS、FWフラッシュ」:BIOS/firmware/flash memory)1822、DSP1860、ソリッド・ステート・ディスク(「SSD」:Solid State Disk)若しくはハード・ディスク・ドライブ(「HDD」:Hard Disk Drive)などのドライブ(「SSD又はHDD」)1820、ワイヤレス・ローカル・エリア・ネットワーク・ユニット(「WLAN」:wireless local area network unit)1850、Bluetoothユニット1852、ワイヤレス広域ネットワーク・ユニット(「WWAN」:Wireless Wide Area Network unit)1856、全地球測位システム(GPS:Global Positioning System)1855、USB3.0カメラなどのカメラ(「USB3.0カメラ」)1854、又は、たとえばLPDDR3規格に実装された低電力ダブル・データ・レート(「LPDDR」:Low Power Double Data Rate)メモリ・ユニット(「LPDDR3」)1815を含んでもよい。これらの構成要素は、それぞれ任意の好適なやり方で実装されてもよい。
少なくとも一実施例では、上述した構成要素を介して、他の構成要素がプロセッサ1810に通信可能に結合されてもよい。少なくとも一実施例では、加速度計1841、周囲光センサ(「ALS」:Ambient Light Sensor)1842、コンパス1843、及びジャイロスコープ1844が、センサ・ハブ1840に通信可能に結合されてもよい。少なくとも一実施例では、熱センサ1839、ファン1837、キーボード1846、及びタッチ・パッド1830が、EC1835に通信可能に結合されてもよい。少なくとも一実施例では、スピーカ1863、ヘッドフォン1864、及びマイクロフォン(「mic」)1865が、オーディオ・ユニット(オーディオ・コーデック及びクラスdアンプ)1864に通信可能に結合されてもよく、このオーディオ・ユニットが、DSP1860に通信可能に結合されてもよい。少なくとも一実施例では、オーディオ・ユニット1864は、たとえば限定することなく、オーディオ・コーダ/デコーダ(「コーデック」)及びクラスDアンプリファイアを含んでもよい。少なくとも一実施例では、SIMカード(「SIM」)1857は、WWANユニット1856に通信可能に結合されてもよい。少なくとも一実施例では、WLANユニット1850及びBluetoothユニット1852などの構成要素、並びにWWAN1856は、次世代フォーム・ファクタ(「NGFF」:Next Generation Form Factor)に実装されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図18のシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図19は、少なくとも一実施例による、コンピュータ・システム1900を示す。少なくとも一実施例では、コンピュータ・システム1900は、本開示全体を通して説明する様々なプロセス及び方法を実装するように構成される。
少なくとも一実施例では、コンピュータ・システム1900は、限定することなく、少なくとも1つの中央処理装置(「CPU」)1902を含み、この処理装置は、PCI:Peripheral Component Interconnect(「ペリフェラル・コンポーネント・インターコネクト」)、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCI-Express」:peripheral component interconnect express)、AGP:Accelerated Graphics Port(「アクセラレーテッド・グラフィックス・ポート」)、ハイパートランスポート、又は任意の他のバス若しくはポイントツーポイントの通信プロトコルなど、任意の好適なプロトコルを使用して実装された通信バス1910に接続される。少なくとも一実施例では、コンピュータ・システム1900は、メイン・メモリ1904、及び(たとえば、ハードウェア、ソフトウェア、又はこれらの組合せとして実装される)制御論理を限定することなく含み、データは、ランダム・アクセス・メモリ(「RAM」:random access memory)の形をとってもよいメイン・メモリ1904に記憶される。少なくとも一実施例では、ネットワーク・インターフェース・サブシステム(「ネットワーク・インターフェース」)1922は、他のシステムからデータを受信し、コンピュータ・システム1900から他のシステムにデータを送信するための他のコンピューティング・デバイス及びネットワークとのインターフェースを提供する。
少なくとも一実施例では、コンピュータ・システム1900は、少なくとも一実施例では、限定することなく、入力デバイス1908、パラレル処理システム1912、及びディスプレイ・デバイス1906を含み、このディスプレイ・デバイスは、従来の陰極線管(「CRT」:cathode ray tube)、液晶ディスプレイ(「LCD」:liquid crystal display)、発光ダイオード(「LED」:light emitting diode)、プラズマ・ディスプレイ、又は他の好適なディスプレイ技術を使用して実装することができる。少なくとも一実施例では、ユーザ入力は、キーボード、マウス、タッチ・パッド、マイクロフォンなどの入力デバイス1908から受け取る。少なくとも一実施例では、上記モジュールのそれぞれを単一の半導体プラットフォームに置いて、処理システムを形成することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図19のシステムにおいて使用されてもよい。
上述したコンピュータ・システムは、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図20は、少なくとも一実施例によるコンピュータ・システム2000を示す。少なくとも一実施例では、コンピュータ・システム2000は、限定することなく、コンピュータ2010及びUSBスティック2020を含んでもよい。少なくとも一実施例では、コンピュータ・システム2010は、限定することなく、任意の数及びタイプのプロセッサ(図示せず)、並びにメモリを含んでもよい。少なくとも一実施例では、コンピュータ2010は、限定することなく、サーバ、クラウド・インスタンス、ラップトップ、及びデスクトップ・コンピュータを含む。
少なくとも一実施例では、USBスティック2020は、限定することなく、処理ユニット2030、USBインターフェース2040、及びUSBインターフェース論理2050を含む。少なくとも一実施例では、処理ユニット2030は、命令を実行することができる任意の命令実行システム、装置、又はデバイスであってもよい。少なくとも一実施例では、処理ユニット2030は、限定することなく、任意の数及びタイプの処理コア(図示せず)を含んでもよい。少なくとも一実施例では、処理コア2030は、機械学習に関連する任意の量及びタイプの演算を実行するように最適化された特定用途向け集積回路(「ASIC」)を備える。たとえば、少なくとも一実施例では、処理コア2030は、機械学習の推論演算を実行するように最適化されたテンソル処理ユニット(「TPC」:tensor processing unit)である。少なくとも一実施例では、処理コア2030は、機械視覚及び機械学習の推論演算を実行するように最適化された視覚処理ユニット(「VPU」)である。
少なくとも一実施例では、USBインターフェース2040は、任意のタイプのUSBコネクタ又はUSBソケットであってもよい。たとえば、少なくとも一実施例では、USBインターフェース2040は、データ及び電源用のUSB3.0 Type-Cのソケットである。少なくとも一実施例では、USBインターフェース2040は、USB3.0 Type-Aのコネクタである。少なくとも一実施例では、USBインターフェース論理2050は、処理ユニット2030がUSBコネクタ2040を介してデバイス(たとえばコンピュータ2010)と又はインターフェースをとることを可能にする任意の量及びタイプの論理を含んでもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図20のシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図21Aは、複数のGPU2110~2113が、高速リンク2140~2143(たとえば、バス、ポイントツーポイント相互接続など)を介して複数のマルチ・コア・プロセッサ2105~2106に通信可能に結合されている例示的なアーキテクチャを示す。一実施例では、高速リンク2140~2143は、4GB/秒、30GB/秒、80GB/秒、又はそれ以上の通信スループットをサポートする。PCIe4.0又は5.0、及びNVLink2.0を含むがこれらに限定されない様々な相互接続プロトコルが使用されてもよい。
さらに、一実施例では、GPU2110~2113のうちの2つ以上は高速リンク2129~2130を介して相互接続され、これらは、高速リンク2140~2143に使用されたものと同じ又は異なるプロトコル/リンクを使用して実装されてもよい。同様に、マルチ・コア・プロセッサ2105~2106のうちの2つ以上は、高速リンク2128を介して接続されてもよく、この高速リンク2128は、20GB/秒、30GB/秒、120GB/秒、又はそれ以上で動作する対称型マルチプロセッサ(SMP)バスとすることができる。或いは、図21Aに示す様々なシステム構成要素間のすべての通信は、同じプロトコル/リンクを使用して(たとえば、共通の相互接続ファブリックを介して)実現されてもよい。
一実施例では、各マルチ・コア・プロセッサ2105~2106は、それぞれメモリ相互接続2126~2127を介してプロセッサ・メモリ2101~2102に通信可能に結合され、各GPU2110~2113は、それぞれGPUメモリ・相互接続2150~2153を介してGPUメモリ2120~2123に通信可能に結合される。メモリ相互接続2126~2127及び2150~2153は、同じ又は異なるメモリ・アクセス技術を利用してもよい。例として、限定ではなく、プロセッサ・メモリ2101~2102及びGPUメモリ2120~2123は、(積層DRAMを含む)ダイナミック・ランダム・アクセス・メモリ(DRAM)、グラフィックスDDR SDRAM(GDDR)(たとえば、GDDR5、GDDR6)、又は高帯域幅メモリ(HBM)などの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。一実施例では、(たとえば、2レベルのメモリ(2LM)階層を使用して)、プロセッサ・メモリ2101~2102のいくつかの部分は揮発性メモリであってもよく、別の部分は不揮発性メモリであってもよい。
本明細書に記載するように、様々なプロセッサ2105~2106及びGPU2110~2113は、それぞれ特定のメモリ2101~2102、2120~2123に物理的に結合されてもよいが、同じ仮想システムのアドレス空間(「実効アドレス」空間とも呼ぶ)が様々な物理メモリ間に分配されている統合されたメモリ・アーキテクチャが実装されてもよい。たとえば、プロセッサ・メモリ2101~2102はそれぞれ、64GBのシステム・メモリ・アドレス空間を備えてもよく、GPUメモリ2120~2123はそれぞれ、32GBのシステム・メモリ・アドレス空間を備えてもよい(この例では結果的に、合計256GBのアドレス指定可能メモリが得られる)。
図21Bは、1つの例示的な実施例によるマルチ・コア・プロセッサ2107とグラフィックス加速モジュール2146との相互接続のさらなる詳細事項を示す。グラフィックス加速モジュール2146は、高速リンク2140を介してプロセッサ2107に結合されるライン・カードに集積された1つ又は複数のGPUチップを含んでもよい。或いは、グラフィックス加速モジュール2146は、プロセッサ2107と同じパッケージ又はチップに集積されてもよい。
少なくとも一実施例では、図示しているプロセッサ2107は、複数のコア2160A~2160Dを含み、それぞれのコアが、トランスレーション・ルックアサイド・バッファ2161A~2161Dと、1つ又は複数のキャッシュ2162A~2162Dとを有する。少なくとも一実施例では、コア2160A~2160Dは、命令を実行しデータを処理するための、図示していない様々な他の構成要素を含んでもよい。キャッシュ2162A~2162Dは、レベル1(L1)及びレベル2(L2)のキャッシュを備えてもよい。さらに、1つ又は複数の共有キャッシュ2156が、キャッシュ2162A~2162Dに含まれ、コア2160A~2160Dのセットによって共有されてもよい。たとえば、プロセッサ2107の一実施例は、24個のコアを含み、各コアが、独自のL1キャッシュ、12個の共有L2キャッシュ、及び12個の共有L3キャッシュを有する。この実施例では、1つ又は複数のL2及びL3のキャッシュが、2つの隣接するコアによって共有される。プロセッサ2107及びグラフィックス加速モジュール2146は、システム・メモリ2114に接続されており、このシステム・メモリは、図21Aのプロセッサ・メモリ2101~2102を含んでもよい。
様々なキャッシュ2162A~2162D、2156、及びシステム・メモリ2114に記憶されたデータ及び命令については、コヒーレンス・バス2164を介したコア間通信によって、コヒーレンスが維持される。たとえば、各キャッシュは、特定のキャッシュ・ラインに対する読取り又は書込みを検出したことに応答して、コヒーレンス・バス2164を介して通信するために、それに関連するキャッシュ・コヒーレンス論理/回路を有してもよい。一実装形態では、キャッシュ・アクセスを監視するために、コヒーレンス・バス2164を介してキャッシュ・スヌーピング・プロトコルが実装される。
一実施例では、プロキシ回路2125が、グラフィックス加速モジュール2146をコヒーレンス・バス2164に通信可能に結合して、グラフィックス加速モジュール2146がコア2160A~2160Dのピアとしてキャッシュ・コヒーレンス・プロトコルに参加できるようにする。特に、インターフェース2135は、高速リンク2140(たとえば、PCIeバス、NVLinkなど)を介してプロキシ回路2125への接続を提供し、インターフェース2137は、グラフィックス加速モジュール2146をリンク2140に接続する。
一実装形態では、アクセラレータ統合回路2136は、グラフィックス加速モジュール2146の複数のグラフィックス処理エンジン2131、2132、Nの代わりに、キャッシュ管理、メモリ・アクセス、コンテンツ管理、及び割込み管理のサービスを提供する。グラフィックス処理エンジン2131、2132、Nはそれぞれ、別個のグラフィックス・プロセッシング・ユニット(GPU)を備えてもよい。或いは、グラフィックス処理エンジン2131、2132、Nは、GPUの中に、グラフィックス実行ユニット、メディア処理エンジン(たとえば、ビデオ・エンコーダ/デコーダ)、サンプラ、及びブリット・エンジンなど、異なるタイプのグラフィックス処理エンジンを備えてもよい。少なくとも一実施例では、グラフィックス加速モジュール2146は、複数のグラフィックス処理エンジン2131~2132、Nを有するGPUであってもよく、又はグラフィックス処理エンジン2131~2132、Nは、共通のパッケージ、ライン・カード、若しくはチップに集積された個々のGPUであってもよい。
一実施例では、アクセラレータ統合回路2136は、仮想から物理のメモリ・トランスレーション(実効から実(effective-to-real)のメモリ・トランスレーションとも呼ばれる)など、様々なメモリ管理機能を実行するためのメモリ管理ユニット(MMU)2139、及びシステム・メモリ2114にアクセスするためのメモリ・アクセス・プロトコルを含む。MMU2139は、仮想/実効から物理/実へのアドレス・トランスレーションをキャッシュするためのトランスレーション・ルックアサイド・バッファ(TLB)(図示せず)も含むことができる。一実装形態では、キャッシュ2138は、グラフィックス処理エンジン2131~2132、Nから効率的にアクセスできるように、コマンド及びデータを記憶する。一実施例では、キャッシュ2138及びグラフィックス・メモリ2133~2134、Mに記憶されたデータは、コア・キャッシュ2162A~2162D、2156、及びシステム・メモリ2114とコヒーレントに保たれる。上に述べたように、これは、キャッシュ2138及びメモリ2133~2134、Mの代わりにプロキシ回路2125を介して(たとえば、プロセッサ・キャッシュ2162A~2162D、2156におけるキャッシュ・ラインの修正/アクセスに関するアップデートをキャッシュ2138に送り、キャッシュ2138からのアップデートを受け取って)実現されてもよい。
レジスタ2145のセットが、グラフィックス処理エンジン2131~2132、Nによって実行されるスレッドのためのコンテキスト・データを記憶し、コンテキスト管理回路2148が、スレッド・コンテキストを管理する。たとえば、コンテキスト管理回路2148は、コンテキスト・スイッチ中に様々なスレッドのコンテキストを保存及び復元するために、保存及び復元の動作を実行してもよい(たとえば、ここで、第2のスレッドをグラフィックス処理エンジンによって実行できるように、第1のスレッドが保存され、第2のスレッドが記憶される)。たとえば、コンテキスト・スイッチ時に、コンテキスト管理回路2148は、現在のレジスタ値を(たとえば、コンテキスト・ポインタによって識別された)メモリの指定領域に記憶してもよい。次いで、コンテキストに戻るときに、コンテキスト管理回路2148がレジスタ値を復元してもよい。一実施例では、割込み管理回路2147は、システム・デバイスから受け取った割込みを受け取り、処理する。
一実装形態では、グラフィックス処理エンジン2131からの仮想/実効アドレスは、MMU2139によってシステム・メモリ2114の実/物理アドレスにトランスレートされる。アクセラレータ統合回路2136の一実施例は、複数(たとえば、4個、8個、16個)のグラフィックス・アクセラレータ・モジュール2146、及び/又は他のアクセラレータ・デバイスをサポートする。グラフィックス・アクセラレータ・モジュール2146は、プロセッサ2107上で実行される単一のアプリケーション専用のものであってもよく、又は複数のアプリケーション間で共有されてもよい。一実施例では、グラフィックス処理エンジン2131~2132、Nのリソースが複数のアプリケーション又は仮想機械(VM)と共有される仮想化グラフィックス実行環境が存在する。少なくとも一実施例では、リソースは、「スライス」に細分化されてもよく、このスライスが、処理要件、並びにVM及び/又はアプリケーションに関連付けられた優先度に基づき、異なるVM及び/又はアプリケーションに割り振られる。
少なくとも一実施例では、アクセラレータ統合回路2136は、グラフィックス加速モジュール2146のためのシステムへのブリッジとして機能し、アドレス・トランスレーション及びシステム・メモリのキャッシュ・サービスを提供する。さらに、アクセラレータ統合回路2136は、グラフィックス処理エンジン2131~2132の仮想化、割込み、及びメモリ管理をホスト・プロセッサが管理するための仮想化設備を提供してもよい。
グラフィックス処理エンジン2131~2132、Nのハードウェア・リソースは、ホスト・プロセッサ2107が見る実アドレス空間に明示的にマッピングされるので、いかなるホスト・プロセッサも、実効アドレス値を使用して、これらのリソースに直接アドレス指定することができる。一実施例では、アクセラレータ統合回路2136の1つの機能は、グラフィックス処理エンジン2131~2132、Nを、システムにとって独立したユニットに見えるように物理的に分離することである。
少なくとも一実施例では、1つ又は複数のグラフィックス・メモリ2133~2134、Mはそれぞれ、グラフィックス処理エンジン2131~2132、Nのそれぞれに結合される。グラフィックス・メモリ2133~2134、Mは、それぞれのグラフィックス処理エンジン2131~2132、Nによって処理される命令及びデータを記憶する。グラフィックス・メモリ2133~2134、Mは、(積層DRAMを含む)DRAM、GDDRメモリ、(たとえば、GDDR5、GDDR6)、又はHBMなどの揮発性メモリであってもよく、且つ/又は3D XPoint又はNano-Ramなどの不揮発性メモリであってもよい。
一実施例では、リンク2140を介したデータ・トラフィックを低減するために、グラフィックス・メモリ2133~2134、Mに記憶されるデータが、グラフィックス処理エンジン2131~2132、Nによって最も頻繁に使用されることになるデータであるようにし、好ましくはコア2160A~2160Dによっては使用されない(少なくとも頻繁には使用されない)データであるようにするためのバイアス技法が使用される。同様に、バイアス機構は、コアが必要とする(したがって、好ましくはグラフィックス処理エンジン2131~2132、Nは必要としない)データを、コアのキャッシュ2162A~2162D、2156、及びシステム・メモリ2114の中に保つよう試みる。
図21Cは、アクセラレータ統合回路2136がプロセッサ2107内に一体化されている別の例示的な実施例を示す。少なくともこの実施例では、グラフィックス処理エンジン2131~2132、Nは、インターフェース2137及びインターフェース2135により、高速リンク2140を介して直接アクセラレータ統合回路2136と通信する(この場合も任意の形のバス又はインターフェース・プロトコルを利用することができる)。アクセラレータ統合回路2136は、図21Bに関して説明したのと同じ動作を実行してもよいが、コヒーレンス・バス2164及びキャッシュ2162A~2162D、2156に近接していることを考えると、潜在的には、より高いスループットで動作してもよい。少なくとも一実施例は、(グラフィックス加速モジュールの仮想化のない)専用のプロセス・プログラミング・モデルと、(仮想化のある)共有プログラミング・モデルとを含む異なるプログラミング・モデルをサポートし、これらは、アクセラレータ統合回路2136によって制御されるプログラミング・モデルと、グラフィックス加速モジュール2146によって制御されるプログラミング・モデルとを含んでもよい。
少なくとも一実施例では、グラフィックス処理エンジン2131~2132、Nは、単一のオペレーティング・システムの下で単一のアプリケーション又はプロセスに専用のものである。少なくとも一実施例では、単一のアプリケーションは、他のアプリケーション要求をグラフィックス処理エンジン2131~2132、Nに集中させて、VM/パーティション内で仮想化を実現することができる。
少なくとも一実施例では、グラフィックス処理エンジン2131~2132、Nは、複数のVM/アプリケーション・パーティションによって共有されてもよい。少なくとも一実施例では、共有モデルはシステム・ハイパーバイザを使用して、グラフィックス処理エンジン2131~2132、Nを仮想化して、各オペレーティング・システムによるアクセスを可能にしてもよい。ハイパーバイザのない単一パーティションのシステムでは、グラフィックス処理エンジン2131~2132、Nは、オペレーティング・システムによって所有される。少なくとも一実施例では、オペレーティング・システムは、グラフィックス処理エンジン2131~2132、Nを仮想化して、各プロセス又はアプリケーションへのアクセスを提供することができる。
少なくとも一実施例では、グラフィックス加速モジュール2146又は個々のグラフィックス処理エンジン2131~2132、Nは、プロセス・ハンドルを使用して、プロセス要素を選択する。少なくとも一実施例では、プロセス要素は、システム・メモリ2114に記憶されており、本明細書に記載の実効アドレスから実アドレスへのトランスレーション技法を使用してアドレス指定可能である。少なくとも一実施例では、プロセス・ハンドルは、ホスト・プロセスのコンテキストをグラフィックス処理エンジン2131~2132、Nに登録する(すなわち、プロセス要素リンク・リストにプロセス要素を追加するためのシステム・ソフトウェアをコールする)ときに、ホスト・プロセスに提供される実装固有の値であってもよい。少なくとも一実施例では、プロセス・ハンドルの下位16ビットは、プロセス要素リンク・リスト内のプロセス要素のオフセットであってもよい。
図21Dは、例示的なアクセラレータ統合スライス2190を示す。本明細書で使用するとき、「スライス」は、アクセラレータ統合回路2136の処理リソースの指定部分を備える。システム・メモリ2114内のアプリケーション実効アドレス空間2182は、プロセス要素2183を記憶する。一実施例では、プロセス要素2183は、プロセッサ2107上で実行されているアプリケーション2180からのGPU呼出し2181に応答して、記憶される。プロセス要素2183は、対応するアプリケーション2180のプロセス状態を収容する。プロセス要素2183に収容されたワーク記述子(WD)2184は、アプリケーションによって要求される単一のジョブとすることができ、又はジョブのキューに対するポインタを収容してもよい。少なくとも一実施例では、WD2184は、アプリケーションのアドレス空間2182におけるジョブ要求キューに対するポインタである。
グラフィックス加速モジュール2146及び/又は個々のグラフィックス処理エンジン2131~2132、Nは、システム内のプロセスのすべて又はサブセットによって共有されることが可能である。少なくとも一実施例では、プロセス状態を設定し、WD2184をグラフィックス加速モジュール2146に送信して、仮想化環境においてジョブを開始するためのインフラストラクチャが、含められてもよい。
少なくとも一実施例では、専用のプロセス・プログラミング・モデルは、実装固有である。このモデルでは、単一のプロセスが、グラフィックス加速モジュール2146又は個々のグラフィックス処理エンジン2131を所有する。グラフィックス加速モジュール2146が単一のプロセスによって所有されることから、グラフィックス加速モジュール2146が割り当てられたときに、ハイパーバイザは、所有パーティションについてアクセラレータ統合回路2136を初期化し、オペレーティング・システムは、所有プロセスについてアクセラレータ統合回路2136を初期化する。
動作時、アクセラレータ統合スライス2190内のWDフェッチ・ユニット2191は、グラフィックス加速モジュール2146の1つ又は複数のグラフィックス処理エンジンによって行われることになるワークの表示を含む次のWD2184をフェッチする。図示してあるように、WD2184からのデータは、レジスタ2145に記憶され、MMU2139、割込み管理回路2147、及び/又はコンテキスト管理回路2148によって使用されてもよい。たとえば、MMU2139の一実施例は、OS仮想アドレス空間2185内のセグメント/ページ・テーブル2186にアクセスするためのセグメント/ページ・ウォーク回路を含む。割込み管理回路2147は、グラフィックス加速モジュール2146から受け取った割込みイベント2192を処理してもよい。グラフィックス動作を実行するとき、グラフィックス処理エンジン2131~2132、Nによって生成された実効アドレス2193は、MMU2139によって実アドレスにトランスレートされる。
一実施例では、レジスタ2145の同じセットが、各グラフィックス処理エンジン2131~2132、N、及び/又はグラフィックス加速モジュール2146について複製され、ハイパーバイザ又はオペレーティング・システムによって初期化されてもよい。これらの複製されたレジスタのそれぞれは、アクセラレータ統合スライス2190に含まれてもよい。ハイパーバイザによって初期化されてもよい例示的なレジスタを、表1に示す。
Figure 2022024952000005
オペレーティング・システムによって初期化されてもよい例示的なレジスタを、表2に示す。
Figure 2022024952000006
一実施例では、各WD2184は、特定のグラフィックス加速モジュール2146及び/又はグラフィックス処理エンジン2131~2132、Nに固有のものである。WD2184は、グラフィックス処理エンジン2131~2132、Nがワークを行うために必要とするすべての情報を収容し、又は完了すべきワークのコマンド・キューをアプリケーションがセットアップした場所であるメモリ・ロケーションを指すポインタとすることができる。
図21Eは、共有モデルの例示的な一実施例のさらなる詳細事項を示す。この実施例は、プロセス要素リスト2199が記憶されているハイパーバイザ実アドレス空間2198を含む。ハイパーバイザ実アドレス空間2198は、オペレーティング・システム2195のグラフィックス加速モジュール・エンジンを仮想化するハイパーバイザ2196を介してアクセス可能である。
少なくとも一実施例では、共有プログラミング・モデルは、システム内のすべて又はサブセットのパーティションからのすべて又はサブセットのプロセスが、グラフィックス加速モジュール2146を使用できるようにする。グラフィックス加速モジュール2146が複数のプロセス及びパーティションによって共有されるプログラミング・モデルが、2つ存在する:時間スライス共有及びグラフィックス指定共有(graphics-directed shared)である。
このモデルでは、システム・ハイパーバイザ2196がグラフィックス加速モジュール2146を所有しており、その機能をすべてのオペレーティング・システム2195にとって利用可能にする。システム・ハイパーバイザ2196による仮想化をグラフィックス加速モジュール2146がサポートするために、グラフィックス加速モジュール2146は、以下のことに準拠してもよい:1)アプリケーションのジョブ要求は自律でなくてはならず(すなわち、ジョブ間で状態を維持する必要はなく)、又はグラフィックス加速モジュール2146が、コンテキストの保存及び復元の機構を提供しなくてはならない。2)アプリケーションのジョブ要求は、あらゆるトランスレーション誤りも含めて指定された時間量で完了するようグラフィックス加速モジュール2146によって保証され、又はグラフィックス加速モジュール2146が、ジョブの処理をプリエンプションする機能を提供する。3)グラフィックス加速モジュール2146は、指定の共有プログラミング・モデルで動作しているとき、プロセス間で公平性が保証されなくてはならない。
少なくとも一実施例では、アプリケーション2180は、グラフィックス加速モジュール2146のタイプ、ワーク記述子(WD)、権限マスク・レジスタ(AMR)値、及びコンテキスト保存/復元エリア・ポインタ(CSRP)を伴って、オペレーティング・システム2195のシステム・コールを行う必要がある。少なくとも一実施例では、グラフィックス加速モジュール2146のタイプは、システム・コールで目的とする加速機能を記述している。少なくとも一実施例では、グラフィックス加速モジュール2146のタイプは、システム固有値であってもよい。少なくとも一実施例では、WDは、グラフィックス加速モジュール2146のために特にフォーマット化されており、グラフィックス加速モジュール2146のコマンド、ユーザ定義の構造を指す実効アドレス・ポインタ、コマンドのキューを指す実効アドレス・ポインタ、又はグラフィックス加速モジュール2146によって行われるワークを記述するための任意の他のデータ構造の形とすることができる。一実施例では、AMR値は、現在のプロセスに使用するためのAMR状態である。少なくとも一実施例では、オペレーティング・システムに渡される値は、AMRをセッティングするアプリケーションと同様である。アクセラレータ統合回路2136及びグラフィックス加速モジュール2146の実装形態が、ユーザ権限マスク・オーバーライド・レジスタ(UAMOR)をサポートしていない場合、オペレーティング・システムは、AMR値に現在のUAMOR値を適用してから、ハイパーバイザ・コールにAMRを渡してもよい。ハイパーバイザ2196は、任意選択で、現在の権限マスク・オーバーライド・レジスタ(AMOR)値を適用してから、AMRをプロセス要素2183に入れてもよい。少なくとも一実施例では、CSRPは、グラフィックス加速モジュール2146がコンテキスト状態を保存及び復元するためのアプリケーションのアドレス空間2182内のエリアの実効アドレスを収容するレジスタ2145のうちの1つである。ジョブ間で、又はジョブがプリエンプションされるときに、いかなる状態も保存する必要のない場合は、このポインタは任意選択である。少なくとも一実施例では、コンテキスト保存/復元エリアは、ピン留めされたシステム・メモリであってもよい。
システム・コールを受け取ると、オペレーティング・システム2195は、アプリケーション2180が登録済みであり、グラフィックス加速モジュール2146を使用する権限が与えられていることを検証してもよい。次いで、オペレーティング・システム2195は、表3に示す情報を伴ってハイパーバイザ2196にコールする。
Figure 2022024952000007
ハイパーバイザ・コールを受け取ると、ハイパーバイザ2196は、オペレーティング・システム2195が登録済みであり、グラフィックス加速モジュール2146を使用する権限が与えられていることを検証する。次いでハイパーバイザ2196は、プロセス要素2183を、対応するグラフィックス加速モジュール2146のタイプのプロセス要素リンク・リストに入れる。プロセス要素は、表4に示す情報を含んでもよい。
Figure 2022024952000008
少なくとも一実施例では、ハイパーバイザは、複数のアクセラレータ統合スライス2190のレジスタ2145を初期化する。
図21Fに示すように、少なくとも一実施例では、物理プロセッサ・メモリ2101~2102及びGPUメモリ2120~2123にアクセスするために使用される共通の仮想メモリ・アドレス空間を介してアドレス指定可能である統合メモリが使用される。この実装形態では、GPU2110~2113で実行される動作は、プロセッサ・メモリ2101~2102にアクセスするのと同じ仮想/実効メモリ・アドレス空間を利用し、且つその逆も同様であり、それによりプログラマビリティが簡単になる。一実施例では、仮想/実効アドレス空間の第1の部分はプロセッサ・メモリ2101に割り振られ、第2の部分は第2のプロセッサ・メモリ2102に割り振られ、第3の部分はGPUメモリ2120に割り振られるというように続く。少なくとも一実施例では、仮想/実効メモリ空間全体(実効アドレス空間と呼ばれることもある)は、これによりプロセッサ・メモリ2101~2102及びGPUメモリ2120~2123のそれぞれにわたって分配されて、仮想アドレスが物理メモリにマッピングされた状態で、いずれかのプロセッサ又はGPUが、いずれかの物理メモリにアクセスできるようになる。
一実施例では、MMU2139A~2139Eのうちの1つ又は複数の中のバイアス/コヒーレンス管理回路2194A~2194Eは、1つ又は複数のホスト・プロセッサ(たとえば、2105)のキャッシュとGPU2110~2113のキャッシュとの間でキャッシュ・コヒーレンスを確保し、バイアス技法を実装して、ある特定のタイプのデータが記憶されるべき物理メモリを示す。バイアス/コヒーレンス管理回路2194A~2194Eの複数のインスタンスが図21Fに示されるが、バイアス/コヒーレンス回路は、1つ又は複数のホスト・プロセッサ2105のMMU内に実装されてもよく、且つ/又はアクセラレータ統合回路2136内に実装されてもよい。
一実施例は、GPU付きメモリ2120~2123をシステム・メモリの一部としてマッピングできるようにし、共有仮想メモリ(SVM)技法を使用してアクセス可能にすることができるが、完全なシステム・キャッシュ・コヒーレンスに関連する性能の低下が生じることはない。少なくとも一実施例では、GPU付きメモリ2120~2123が、面倒なキャッシュ・コヒーレンス・オーバーヘッドなく、システム・メモリとしてアクセス可能であることにより、GPUオフロードのための有益な動作環境が提供される。この構成によって、従来のI/O DMAデータ・コピーのオーバーヘッドがなくても、ホスト・プロセッサ2105ソフトウェアがオペランドを設定し、計算結果にアクセスすることが可能になる。こうした従来のコピーは、ドライバ・コール、割込み、及びメモリ・マップドI/O(MMIO)アクセスを必要とし、これらはすべて、単純なメモリ・アクセスより非効率的である。少なくとも一実施例では、キャッシュ・コヒーレンス・オーバーヘッドなしでGPU付きメモリ2120~2123にアクセスできることが、オフロードされた計算の実行時間に不可欠であり得る。たとえば、かなりのストリーミング書込みメモリ・トラフィックがある場合には、キャッシュ・コヒーレンス・オーバーヘッドは、GPU2110~2113が見る有効な書込み帯域幅を大幅に低減することある。少なくとも一実施例では、オペランド設定の効率、結果へのアクセスの効率、及びGPU計算の効率は、GPUオフロードの有効性を判定する際に役立つことがある。
少なくとも一実施例では、GPUバイアス及びホスト・プロセッサ・バイアスの選択は、バイアス・トラッカー・データ構造によって決められる。たとえばバイアス・テーブルが使用されてもよく、このテーブルは、GPU付きメモリ・ページ当たり1ビット又は2ビットを含むページ粒度構造であってもよい(すなわち、メモリ・ページの粒度で制御されてもよい)。少なくとも一実施例では、バイアス・テーブルは、(たとえば、バイアス・テーブルの頻繁に使用された/最近使用されたエントリをキャッシュするための)バイアス・キャッシュがGPU2110~2113にある状態又はない状態で、1つ又は複数のGPU付きメモリ2120~2123の奪われたメモリ範囲(stolen memory range)において実装されてもよい。或いは、バイアス・テーブル全体が、GPU内に維持されてもよい。
少なくとも一実施例では、GPU付きメモリ2120~2123への各アクセスに関連付けられたバイアス・テーブルのエントリが、GPUメモリへの実際のアクセスより先にアクセスされて、以下の動作を生じさせる。第1に、GPUバイアス内での自らのページを見いだすGPU2110~2113からのローカル要求が、対応するGPUメモリ2120~2123に直接転送される。ホスト・バイアスにおいて自らのページを見いだすGPUからのローカル要求は、(たとえば、上述した高速リンクを介して)プロセッサ2105に転送される。一実施例では、要求されたページをホスト・プロセッサ・バイアスにおいて見いだすプロセッサ2105からの要求は、通常のメモリ読取りと同様に要求を完了させる。或いは、GPUバイアス化ページに向けられた要求は、GPU2110~2113に転送されてもよい。少なくとも一実施例では、次いでGPUは、現在ページを使用していない場合、ホスト・プロセッサ・バイアスにページを移行してもよい。少なくとも一実施例では、ページのバイアス状態は、ソフトウェア・ベースの機構、ハードウェア支援型ソフトウェア・ベースの機構のいずれかによって、又は限られた事例のセットについては、単にハードウェア・ベースの機構によって、変更することができる。
バイアス状態を変更するための1つの機構は、APIコール(たとえば、OpenCL)を利用し、このAPIコールが、GPUのデバイス・ドライバをコールし、このデバイス・ドライバが、GPUにメッセージを送って(又はコマンド記述子をキューに加えて)、バイアス状態を変更し、一部の移行については、ホストにおいてキャッシュ・フラッシング動作を実行するよう、GPUを導く。少なくとも一実施例では、キャッシュ・フラッシング動作は、ホスト・プロセッサ2105のバイアスからGPUバイアスへの移行のために使用されるが、反対向きの移行には使用されない。
一実施例では、キャッシュ・コヒーレンスは、ホスト・プロセッサ2105によってキャッシュできないGPUバイアス化ページを一時的にレンダリングすることによって、維持される。これらのページにアクセスするために、プロセッサ2105は、GPU2110からのアクセスを要求してもよく、GPU2110は、すぐにアクセスを許可してもよく、又は許可しなくてもよい。したがって、プロセッサ2105とGPU2110との間の通信を低減するために、GPUバイアス化ページが、GPUによって要求されるが、ホスト・プロセッサ2105によっては要求されないようにすること、又はその逆にすることが有益である。
1つ又は複数の実施例を実行するために、ハードウェア構造体1315が使用される。ハードウェア構造体(x)1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。
図22は、本明細書に記載の様々な実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、若しくは汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図22は、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができる例示的なシステム・オン・チップ集積回路2200を示すブロック図である。少なくとも一実施例では、集積回路2200は、1つ又は複数のアプリケーション・プロセッサ2205(たとえば、CPU)、少なくとも1つのグラフィックス・プロセッサ2210を含み、さらに、画像プロセッサ2215及び/又はビデオ・プロセッサ2220を含んでもよく、これらのいずれもが、モジュール式IPコアであってもよい。少なくとも一実施例では、集積回路2200は、USBコントローラ2225、UARTコントローラ2230、SPI/SDIOコントローラ2235、及びI.sup.2S/I.sup.2Cコントローラ2240を含む周辺装置又はバス論理を含む。少なくとも一実施例では、集積回路2200は、ハイ・デフィニション・マルチメディア・インターフェース(HDMI:high-definition multimedia interface(登録商標))コントローラ2250及びモバイル・インダストリ・プロセッサ・インターフェース(MIPI)ディスプレイ・インターフェース2255のうちの1つ又は複数に結合されるディスプレイ・デバイス2245を含むことができる。少なくとも一実施例では、フラッシュ・メモリ及びフラッシュ・メモリ・コントローラを含むフラッシュ・メモリ・サブシステム2260によって、ストレージが提供されてもよい。少なくとも一実施例では、SDRAM又はSRAMメモリ・デバイスにアクセスするために、メモリ・コントローラ2265を介してメモリ・インターフェースが提供されてもよい。少なくとも一実施例では、いくつかの集積回路はさらに、組み込みセキュリティ・エンジン2270を含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路2200において使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図23A~図23Bは、本明細書に記載の様々実施例による、1つ又は複数のIPコアを使用して作製することができる例示的な集積回路及び関連グラフィックス・プロセッサを示す。図示してあるものに加えて、少なくとも一実施例では、追加のグラフィックス・プロセッサ/コア、周辺装置インターフェース・コントローラ、又は汎用プロセッサ・コアを含む他の論理及び回路が含まれてもよい。
図23A~図23Bは、本明細書に記載の実施例によるSoC内で使用するための例示的なグラフィックス・プロセッサを示すブロック図である。図23Aは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路の例示的なグラフィックス・プロセッサ2310を示す。図23Bは、少なくとも一実施例による1つ又は複数のIPコアを使用して作製することができるシステム・オン・チップ集積回路のさらなる例示的なグラフィックス・プロセッサ2340を示す。少なくとも一実施例では、図23Aのグラフィックス・プロセッサ2310は、低電力グラフィックス・プロセッサ・コアである。少なくとも一実施例では、図23Bのグラフィックス・プロセッサ2340は、高性能グラフィックス・プロセッサ・コアである。少なくとも一実施例では、グラフィックス・プロセッサ2310、2340のそれぞれは、図22のグラフィックス・プロセッサ2210の変形形態とすることができる。
少なくとも一実施例では、グラフィックス・プロセッサ2310は、頂点プロセッサ2305と、1つ又は複数のフラグメント・プロセッサ2315A~2315N(たとえば、2315A、2315B、2315C、2315D~2315N-1、及び2315N)とを含む。少なくとも一実施例では、グラフィックス・プロセッサ2310は、別個の論理を介して異なるシェーダ・プログラムを実行することができ、それにより、頂点プロセッサ2305は、頂点シェーダ・プログラムのための動作を実行するように最適化され、一方、1つ又は複数のフラグメント・プロセッサ2315A~2315Nは、フラグメント又はピクセルのシェーダ・プログラムのためのフラグメント(たとえば、ピクセル)シェーディング動作を実行する。少なくとも一実施例では、頂点プロセッサ2305は、3Dグラフィックス・パイプラインの頂点処理ステージを実行し、プリミティブ及び頂点データを生成する。少なくとも一実施例では、フラグメント・プロセッサ2315A~2315Nは、頂点プロセッサ2305によって生成されたプリミティブ及び頂点データを使用して、ディスプレイ・デバイスに表示されるフレーム・バッファを生成する。少なくとも一実施例では、フラグメント・プロセッサ2315A~2315Nは、OpenGLのAPIにおいて提供されるフラグメント・シェーダ・プログラムを実行するように最適化され、OpenGLのAPIは、Direct 3D APIにおいて提供されるピクセル・シェーダ・プログラムと同様の動作を実行するために使用されてもよい。
少なくとも一実施例では、グラフィックス・プロセッサ2310はさらに、1つ又は複数のメモリ管理ユニット(MMU)2320A~2320B、キャッシュ2325A~2325B、及び回路相互接続2330A~2330Bを含む。少なくとも一実施例では、1つ又は複数のMMU2320A~2320Bは、頂点プロセッサ2305及び/又はフラグメント・プロセッサ2315A~2315Nを含め、グラフィックス・プロセッサ2310のための仮想から物理のアドレス・マッピングを提供し、それらは、1つ又は複数のキャッシュ2325A~2325Bに記憶された頂点又は画像/テクスチャのデータに加えて、メモリに記憶された頂点又は画像/テキストのデータを参照してもよい。少なくとも一実施例では、1つ又は複数のMMU2320A~2320Bは、図22の1つ若しくは複数のアプリケーション・プロセッサ2205、画像プロセッサ2215、及び/又はビデオ・プロセッサ2220に関連付けられた1つ若しくは複数のMMUを含む、システム内の他のMMUと同期されてもよく、それにより各プロセッサ2205~2220は、共有の又は統合された仮想メモリ・システムに参加することができる。少なくとも一実施例では、1つ又は複数の回路相互接続2330A~2330Bは、グラフィックス・プロセッサ2310が、SoCの内部バスを介して、又は直接接続を介して、SoC内の他のIPコアとインターフェースをとることができるようにする。
少なくとも一実施例では、グラフィックス・プロセッサ2340は、図23Aのグラフィックス・プロセッサ2310の1つ又は複数のMMU2320A~2320B、キャッシュ2325A~2325B、及び回路相互接続2330A~2330Bを含む。少なくとも一実施例では、グラフィックス・プロセッサ2340は、1つ又は複数のシェーダ・コア2355A~2355N(たとえば、2355A、2355B、2355C、2355D、2355E、2355F~2355N-1、及び2355N)を含み、このシェーダ・コアは、単一のコア、又はタイプ、又はコアが、頂点シェーダ、フラグメント・シェーダ、及び/又はコンピュート・シェーダを実装するためのシェーダ・プログラム・コードを含むすべてのタイプのプログラム可能なシェーダ・コードを実行することができる統合されたシェーダ・コア・アーキテクチャを提供する。少なくとも一実施例では、シェーダ・コアの数は変えることができる。少なくとも一実施例では、グラフィックス・プロセッサ2340は、1つ又は複数のシェーダ・コア2355A~2355Nに実行スレッドをディスパッチするためのスレッド・ディスパッチャとして作用するコア間タスク・マネージャ2345と、たとえばシーン内のローカル空間コヒーレンスを利用するため、又は内部キャッシュの使用を最適化するために、シーンのレンダリング動作が画像空間において細分化される、タイル・ベースのレンダリングのためのタイリング動作を加速するためのタイリング・ユニット2358とを含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために集積回路23A及び/又は23Bにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図24A~図24Bは、本明細書に記載の実施例による、さらなる例示的なグラフィックス・プロセッサ論理を示す。図24Aは、グラフィックス・コア2400を示し、このグラフィックス・コア2400は、少なくとも一実施例では図22のグラフィックス・プロセッサ2210に含められてもよく、少なくとも一実施例では図23Bのように、統合されたシェーダ・コア2355A~2355Nであってもよい。図24Bは、少なくとも一実施例におけるマルチ・チップ・モジュールに導入するのに適した高並列の汎用グラフィックス・プロセッシング・ユニット2430を示す。
少なくとも一実施例では、グラフィックス・コア2400は、共有命令キャッシュ2402、テクスチャ・ユニット2418、及びキャッシュ/共有メモリ2420を含み、これらは、グラフィックス・コア2400内の実行リソースに共通である。少なくとも一実施例では、グラフィックス・コア2400は、複数のスライス2401A~2401N、又はコアごとのパーティションを含むことができ、グラフィックス・プロセッサは、グラフィックス・コア2400の複数のインスタンスを含むことができる。スライス2401A~2401Nは、ローカル命令キャッシュ2404A~2404N、スレッド・スケジューラ2406A~2406N、スレッド・ディスパッチャ2408A~2408N、及びレジスタのセット2410A~2410Nを含むサポート論理を含むことができる。少なくとも一実施例では、スライス2401A~2401Nは、追加機能ユニット(AFU2412A~2412N)、浮動小数点ユニット(FPU2414A~2414N)、整数算術論理演算ユニット(ALU2416~2416N)、アドレス計算ユニット(ACU2413A~2413N)、倍精度浮動小数点ユニット(DPFPU2415A~2415N)、及び行列処理ユニット(MPU2417A~2417N)のセットを含むことができる。
少なくとも一実施例では、FPU2414A~2414Nは、単精度(32ビット)及び半精度(16ビット)の浮動小数点演算を実行することができ、DPFPU2415A~2415Nは、倍精度(64ビット)の浮動小数点演算を実行する。少なくとも一実施例では、ALU2416A~2416Nは、8ビット、16ビット、及び32ビットの精度で可変精度の整数演算を実行することができ、混合精度の演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2417A~2417Nも、半精度浮動小数点及び8ビット整数演算を含む混合精度の行列演算ができるように構成されることが可能である。少なくとも一実施例では、MPU2417A~2417Nは、汎用行列-行列乗算(GEMM)の加速をサポートできるようにすることを含め、機械学習アプリケーション・フレームワークを加速するための様々な行列演算を実行することができる。少なくとも一実施例では、AFU2412A~2412Nは、三角関数演算(たとえば、サイン、コサインなど)を含む、浮動小数点ユニット又は整数ユニットにサポートされていない追加の論理演算を実行することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・コア2400において使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図24Bは、汎用処理ユニット(GPGPU)2430を示し、この処理ユニットは、少なくとも一実施例において、グラフィックス・プロセッシング・ユニットのアレイによる高並列の計算動作を実行可能にするように構成されることが可能である。少なくとも一実施例では、GPGPU2430は、GPGPU2430の他のインスタンスに直接リンクされて、ディープ・ニューラル・ネットワークの訓練スピードを向上させるために複数のGPUクラスタを生成することができる。少なくとも一実施例では、GPGPU2430は、ホスト・プロセッサとの接続を可能にするためのホスト・インターフェース2432を含む。少なくとも一実施例では、ホスト・インターフェース2432は、PCIエクスプレス・インターフェースである。少なくとも一実施例では、ホスト・インターフェース2432は、ベンダー固有の通信インターフェース又は通信ファブリックとすることができる。少なくとも一実施例では、GPGPU2430は、ホスト・プロセッサからコマンドを受け取り、グローバル・スケジューラ2434を使用して、これらのコマンドに関連付けられた実行スレッドを、コンピュート・クラスタ2436A~2436Hのセットに分配する。少なくとも一実施例では、コンピュート・クラスタ2436A~2436Hは、キャッシュ・メモリ2438を共有する。少なくとも一実施例では、キャッシュ・メモリ2438は、コンピュート・クラスタ2436A~2436H内のキャッシュ・メモリ用の高レベル・キャッシュとして作用することができる。
少なくとも一実施例では、GPGPU2430は、メモリ・コントローラ2442A~2442Bのセットを介して、コンピュート・クラスタ2436A~2436Hに結合されたメモリ2444A~2444Bを含む。少なくとも一実施例では、メモリ2444A~2444Bは、グラフィックス・ダブル・データ・レート(GDDR:graphics double data rate)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。
少なくとも一実施例では、コンピュート・クラスタ2436A~2436Hはそれぞれ、図24Aのグラフィックス・コア2400などのグラフィックス・コアのセットを含み、このグラフィックス・コアのセットは、機械学習計算に適したものを含め、様々な精度で計算動作を実行することができる複数のタイプの整数及び浮動小数点の論理ユニットを含むことができる。たとえば、少なくとも一実施例では、コンピュート・クラスタ2436A~2436Hのそれぞれにおける浮動小数点ユニットの少なくともサブセットは、16ビット又は32ビットの浮動小数点演算を実行するように構成されることが可能であり、一方、浮動小数点ユニットの別のサブセットは、64ビットの浮動小数点演算を実行するように構成されることが可能である。
少なくとも一実施例では、GPGPU2430の複数のインスタンスは、コンピュート・クラスタとして動作するように構成されることが可能である。少なくとも一実施例では、コンピュート・クラスタ2436A~2436Hにより同期及びデータ交換のために使用される通信は、実施例にわたって異なる。少なくとも一実施例では、GPGPU2430の複数のインスタンスは、ホスト・インターフェース2432を介して通信する。少なくとも一実施例では、GPGPU2430は、I/Oハブ2439を含み、このハブは、GPGPU2430の他のインスタンスへの直接接続を可能にするGPUリンク2440に、GPGPU2430を結合する。少なくとも一実施例では、GPUリンク2440は、GPGPU2430の複数のインスタンス間での通信及び同期を可能にするGPUからGPUへの専用のブリッジに結合される。少なくとも一実施例では、GPUリンク2440は、他のGPGPU又は並列プロセッサにデータを送受信するための高速相互接続に結合される。少なくとも一実施例では、GPGPU2430の複数のインスタンスは、別々のデータ処理システムに位置付けられ、ホスト・インターフェース2432を介してアクセス可能なネットワーク・デバイスを介して通信する。少なくとも一実施例では、GPUリンク2440は、ホスト・インターフェース2432に加えて、又はその代わりに、ホスト・プロセッサへの接続を可能にするように構成することができる。
少なくとも一実施例では、GPGPU2430は、ニューラル・ネットワークを訓練するように構成されることが可能である。少なくとも一実施例では、GPGPU2430は、推論プラットフォーム内で使用することができる。GPGPU2430が推論のために使用される少なくとも一実施例では、GPGPUは、GPGPUがニューラル・ネットワークの訓練に使用されるときよりも少数のコンピュート・クラスタ2436A~2436Hを含んでもよい。少なくとも一実施例では、メモリ2444A~2444Bに関連するメモリ技術は、推論の構成と訓練の構成とで異なってもよく、高帯域幅のメモリ技術が、訓練構成に当てられる。少なくとも一実施例では、GPGPU2430の推論構成は、推論固有の命令をサポートすることができる。たとえば、少なくとも一実施例では、推論構成は、1つ又は複数の8ビットの整数のドット積命令をサポートすることができ、これは、導入済みニューラル・ネットワークの推論動作中に使用されてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにGPGPU2430において使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図25は、少なくとも一実施例によるコンピューティング・システム2500を示すブロック図である。少なくとも一実施例では、コンピューティング・システム2500は、メモリ・ハブ2505を含んでもよい相互接続経路を介して通信する1つ又は複数のプロセッサ2502とシステム・メモリ2504とを有する処理サブシステム2501を含む。少なくとも一実施例では、メモリ・ハブ2505は、チップセット構成要素内の別個の構成要素であってもよく、又は1つ若しくは複数のプロセッサ2502内に一体化されていてもよい。少なくとも一実施例では、メモリ・ハブ2505は、通信リンク2506を介してI/Oサブシステム2511に結合される。少なくとも一実施例では、I/Oサブシステム2511は、コンピューティング・システム2500が1つ又は複数の入力デバイス2508からの入力を受け取れるようにすることができるI/Oハブ2507を含む。少なくとも一実施例では、I/Oハブ2507は、ディスプレイ・コントローラを有効にすることができ、このディスプレイ・コントローラは、1つ又は複数のプロセッサ2502に含まれて、1つ又は複数のディスプレイ・デバイス2510Aに出力を提供してもよい。少なくとも一実施例では、I/Oハブ2507に結合された1つ又は複数のディスプレイ・デバイス2510Aは、ローカルの、内部の、又は組み込まれたディスプレイ・デバイスを含むことができる。
少なくとも一実施例では、処理サブシステム2501は、バス又は他の通信リンク2513を介してメモリ・ハブ2505に結合された1つ又は複数の並列プロセッサ2512を含む。少なくとも一実施例では、通信リンク2513は、PCIエクスプレスなどであるがこれに限定されない任意の数の規格に基づく通信リンク技術若しくはプロトコルのうちの1つであってもよく、又はベンダー固有の通信インターフェース若しくは通信ファブリックであってもよい。少なくとも一実施例では、1つ又は複数の並列プロセッサ2512は、メニー・インテグレーテッド・コア(MIC:many integrated core)プロセッサなど、多数の処理コア及び/又は処理クラスタを含むことのできる、計算に集中した並列又はベクトルの処理システムを形成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2512は、グラフィックス処理サブシステムを形成し、このサブシステムは、I/Oハブ2507を介して結合された1つ又は複数のディスプレイ・デバイス2510Aのうちの1つに、ピクセルを出力することができる。少なくとも一実施例では、1つ又は複数の並列プロセッサ2512はまた、1つ又は複数のディスプレイ・デバイス2510Bへの直接接続を可能にするディスプレイ・コントローラ及びディスプレイ・インターフェース(図示せず)を含むことができる。
少なくとも一実施例では、システム・ストレージ・ユニット2514は、I/Oハブ2507に接続されて、コンピューティング・システム2500のためのストレージ機構を提供することができる。少なくとも一実施例では、I/Oスイッチ2516を使用して、I/Oハブ2507と、プラットフォームに一体化されてもよいネットワーク・アダプタ2518及び/又はワイヤレス・ネットワーク・アダプタ2519などの他の構成要素、並びに1つ又は複数のアドイン・デバイス2520を介して加えることができる様々な他のデバイスとの通信を可能にするためのインターフェース機構を提供することができる。少なくとも一実施例では、ネットワーク・アダプタ2518は、イーサネット(登録商標)・アダプタ、又は別の有線ネットワーク・アダプタとすることができる。少なくとも一実施例では、ワイヤレス・ネットワーク・アダプタ2519は、Wi-Fi、Bluetooth、近距離無線通信(NFC)、又は1つ若しくは複数のワイヤレス無線を含む他のネットワーク・デバイスのうちの1つ又は複数を含むことができる。
少なくとも一実施例では、コンピューティング・システム2500は、USB又は他のポート接続、光学ストレージ・ドライブ、ビデオ捕捉デバイスなどを含む明示されていない他の構成要素を含むことができ、これらもI/Oハブ2507に接続されてもよい。少なくとも一実施例では、図25の様々な構成要素を相互接続する通信経路が、PCI(ペリフェラル・コンポーネント・インターコネクト)ベースのプロトコル(たとえば、PCI-エクスプレス)などの任意の好適なプロトコル、又はNV-Link高速相互接続などの他のバス若しくはポイントツーポイント通信インターフェース、又は他の相互接続プロトコルを使用して、実装されてもよい。
少なくとも一実施例では、1つ又は複数の並列プロセッサ2512は、たとえばビデオ出力回路を含むグラフィックス及びビデオの処理に最適化された回路を組み込んでおり、グラフィックス・プロセッシング・ユニット(GPU)を構成する。少なくとも一実施例では、1つ又は複数の並列プロセッサ2512は、汎用処理に最適化された回路を組み込んでいる。少なくとも実施例では、コンピューティング・システム2500の構成要素は、単一の集積回路上の1つ又は複数の他のシステム要素と一体化されてもよい。たとえば、少なくとも一実施例では、1つ又は複数の並列プロセッサ2512、メモリ・ハブ2505、プロセッサ2502、及びI/Oハブ2507を、システム・オン・チップ(SoC)集積回路に一体化することができる。少なくとも一実施例では、コンピューティング・システム2500の構成要素は、単一のパッケージに一体化されて、システム・イン・パッケージ(SIP:system in package)構成を形成することができる。少なくとも一実施例では、コンピューティング・システム2500の構成要素の少なくとも一部分を、マルチ・チップ・モジュール(MCM:multi-chip module)に一体化することができ、このモジュールを、他のマルチ・チップ・モジュールと相互接続して、モジュール式コンピューティング・システムにすることができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のために図2500のシステムにおいて使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
プロセッサ
図26Aは、少なくとも一実施例による並列プロセッサ2600を示す。少なくとも一実施例では、並列プロセッサ2600の様々な構成要素は、プログラム可能なプロセッサ、特定用途向け集積回路(ASIC)、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)などの1つ又は複数の集積回路デバイスを使用して実装されてもよい。少なくとも一実施例では、図示してある並列プロセッサ2600は、例示的な実施例による図25に示す1つ又は複数の並列プロセッサ2512の変形形態である。
少なくとも一実施例では、並列プロセッサ2600は並列処理ユニット2602を含む。少なくとも一実施例では、並列処理ユニット2602は、並列処理ユニット2602の他のインスタンスを含む他のデバイスとの通信を可能にするI/Oユニット2604を含む。少なくとも一実施例では、I/Oユニット2604は、他のデバイスに直接接続されてもよい。少なくとも一実施例では、I/Oユニット2604は、メモリ・ハブ2505などのハブ又はスイッチ・インターフェースの使用を介して、他のデバイスと接続される。少なくとも一実施例では、メモリ・ハブ2505とI/Oユニット2604との間の接続は、通信リンク2513を形成する。少なくとも一実施例では、I/Oユニット2604は、ホスト・インターフェース2606及びメモリ・クロスバー2616に接続され、ここでホスト・インターフェース2606は、処理動作の実行を対象とするコマンドを受け取り、メモリ・クロスバー2616は、メモリ動作の実行を対象とするコマンドを受け取る。
少なくとも一実施例では、ホスト・インターフェース2606が、I/Oユニット2604を介してコマンド・バッファを受け取るとき、ホスト・インターフェース2606は、これらのコマンドを実行するためのワーク動作をフロント・エンド2608に向けることができる。少なくとも一実施例では、フロント・エンド2608はスケジューラ2610に結合され、このスケジューラは、コマンド又は他のワーク・アイテムを処理クラスタ・アレイ2612に分配するように構成される。少なくとも一実施例では、スケジューラ2610は、処理クラスタ・アレイ2612の処理クラスタ・アレイ2612にタスクが分配される前に、処理クラスタ・アレイ2612が適切に構成され、有効な状態にあることを確実にする。少なくとも一実施例では、スケジューラ2610は、マイクロコントローラで実行しているファームウェア論理を介して実装される。少なくとも一実施例では、マイクロコントローラ実装スケジューラ2610は、複雑なスケジューリング及びワーク分配動作を、粗い粒度と細かい粒度で実行するように構成可能であり、処理アレイ2612で実行しているスレッドの迅速なプリエンプション及びコンテキストのスイッチングを可能にする。少なくとも一実施例では、ホスト・ソフトウェアは、処理アレイ2612でのスケジューリングのワークロードを、複数のグラフィックス処理のドアベルのうちの1つを介して証明することができる。少なくとも一実施例では、次いで、スケジューラ2610を含むマイクロコントローラ内のスケジューラ2610論理によって、ワークロードを自動的に処理アレイ2612全体に分配することができる。
少なくとも一実施例では、処理クラスタ・アレイ2612は、最大「N個」の処理クラスタ(たとえば、クラスタ2614A、クラスタ2614B~クラスタ2614N)を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2612の各クラスタ2614A~2614Nは、大量の同時スレッドを実行することができる。少なくとも一実施例では、スケジューラ2610は、様々なスケジューリング及び/又はワーク分配のアルゴリズムを使用して、処理クラスタ・アレイ2612のクラスタ2614A~2614Nにワークを配分することができ、これらのアルゴリズムは、プログラム又は計算のタイプごとに生じるワークロードに応じて、異なってもよい。少なくとも一実施例では、スケジューリングは、スケジューラ2610によって動的に対処されてもよく、又は処理クラスタ・アレイ2612によって実行されるように構成されたプログラム論理のコンパイル中に、コンパイラ論理によって部分的に支援されてもよい。少なくとも一実施例では、処理クラスタ・アレイ2612の異なるクラスタ2614A~2614Nは、異なるタイプのプログラムを処理するように、又は異なるタイプの計算を実行するように配分されることが可能である。
少なくとも一実施例では、処理クラスタ・アレイ2612は、様々なタイプの並列処理動作を実行するように構成されることが可能である。少なくとも一実施例では、処理クラスタ・アレイ2612は、汎用の並列コンピュート動作を実行するように構成される。たとえば、少なくとも一実施例では、処理クラスタ・アレイ2612は、ビデオ及び/又はオーディオ・データのフィルタリング、物理動作を含むモデリング動作の実行、及びデータ変換の実行を含む処理タスクを実行するための論理を含むことができる。
少なくとも一実施例では、処理クラスタ・アレイ2612は、並列グラフィックス処理動作を実行するように構成される。少なくとも一実施例では、処理クラスタ・アレイ2612は、テクスチャ動作を実行するためのテクスチャ・サンプリング論理、並びにモザイク論理、及び他の頂点処理論理を含むがこれらに限定されないこうしたグラフィックス処理動作の実行をサポートするための追加の論理を含むことができる。少なくとも一実施例では、処理クラスタ・アレイ2612は、頂点シェーダ、モザイク・シェーダ、ジオメトリ・シェーダ、及びピクセル・シェーダなどであるが、これらに限定されないグラフィックス処理関連のシェーダ・プログラムを実行するように構成されることが可能である。少なくとも一実施例では、並列処理ユニット2602は、処理できるようにデータをシステム・メモリからI/Oユニット2604を介して転送することができる。少なくとも一実施例では、処理中、転送されたデータを、処理中にオン・チップ・メモリ(たとえば、並列プロセッサ・メモリ2622)に記憶し、次いでシステム・メモリに書き戻すことができる。
少なくとも一実施例では、並列処理ユニット2602を使用してグラフィックス処理が実行される場合には、処理クラスタ・アレイ2612の複数のクラスタ2614A~2614Nにグラフィックス処理動作をよりうまく分配できるようにするため、処理ワークロードをおおよそ等しい大きさのタスクに分割するようにスケジューラ2610を構成することができる。少なくとも一実施例では、処理クラスタ・アレイ2612の一部分は、異なるタイプの処理を実行するように構成されることが可能である。たとえば、少なくとも一実施例では、レンダリング画像を生成して表示するために、第1の部分は、頂点シェーディング及びトポロジ生成を実行するように構成されてもよく、第2の部分は、モザイク及びジオメトリのシェーディングを実行するように構成されてもよく、第3の部分は、ピクセル・シェーディング又は他の画面空間動作を実行するように構成されてもよい。少なくとも一実施例では、クラスタ2614A~2614Nのうちの1つ又は複数によって生成される中間データをバッファに記憶して、さらなる処理ができるようにクラスタ2614A~2614Nの間で中間データを送信できるようにしてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2612は、実行される処理タスクをスケジューラ2610を介して受け取ることができ、スケジューラ2610は、処理タスクを定義するコマンドをフロント・エンド2608から受け取る。少なくとも一実施例では、処理タスクは、処理されるデータのインデックス、たとえば、表面(パッチ)データ、プリミティブ・データ、頂点データ、及び/又はピクセル・データ、並びに状態パラメータ、及びデータをどのように処理すべきかを定義するコマンド(たとえば、どのプログラムを実行すべきか)を含むことができる。少なくとも一実施例では、スケジューラ2610は、タスクに対応するインデックスをフェッチするように構成されてもよく、又はフロント・エンド2608からインデックスを受け取ってもよい。少なくとも一実施例では、フロント・エンド2608は、入ってくるコマンド・バッファ(たとえば、バッチ・バッファ、プッシュ・バッファなど)によって指定されるワークロードが開始される前に、処理クラスタ・アレイ2612が有効な状態に構成されていることを保証するように構成されることが可能である。
少なくとも一実施例では、並列処理ユニット2602の1つ又は複数のインスタンスのそれぞれは、並列プロセッサ・メモリ2622と結合することができる。少なくとも一実施例では、並列プロセッサ・メモリ2622には、メモリ・クロスバー2616を介してアクセスすることができ、メモリ・クロスバー2616は、処理クラスタ・アレイ2612並びにI/Oユニット2604からメモリ要求を受け取ることができる。少なくとも一実施例では、メモリ・クロスバー2616は、メモリ・インターフェース2618を介して並列プロセッサ・メモリ2622にアクセスすることができる。少なくとも一実施例では、メモリ・インターフェース2618は、複数のパーティション・ユニット(たとえば、パーティション・ユニット2620A、パーティション・ユニット2620B~パーティション・ユニット2620N)を含むことができ、これらのユニットはそれぞれ、並列プロセッサ・メモリ2622の一部分(たとえば、メモリ・ユニット)に結合することができる。少なくとも一実施例では、パーティション・ユニット2620A~2620Nの数は、メモリ・ユニットの数と等しくなるように構成され、それにより、第1のパーティション・ユニット2620Aは、対応する第1のメモリ・ユニット2624Aを有し、第2のパーティション・ユニット2620Bは、対応するメモリ・ユニット2624Bを有し、N番目のパーティション・ユニット2620Nは、対応するN番目のメモリ・ユニット2624Nを有する。少なくとも一実施例では、パーティション・ユニット2620A~2620Nの数は、メモリ・デバイスの数に等しくなくてもよい。
少なくとも一実施例では、メモリ・ユニット2624A~2624Nは、グラフィックス・ダブル・データ・レート(GDDR)メモリを含む同期グラフィックス・ランダム・アクセス・メモリ(SGRAM)など、ダイナミック・ランダム・アクセス・メモリ(DRAM)又はグラフィックス・ランダム・アクセス・メモリを含む、様々なタイプのメモリ・デバイスを含むことができる。少なくとも一実施例では、またメモリ・ユニット2624A~2624Nはまた、高帯域幅メモリ(HBM)を含むがこれに限定されない3D積層メモリを含んでもよい。少なくとも一実施例では、並列プロセッサ・メモリ2622の利用可能な帯域幅を効率的に使用するために、フレーム・バッファ又はテクスチャ・マップなどのレンダー・ターゲットが、メモリ・ユニット2624A~2624Nにわたって記憶されて、パーティション・ユニット2620A~2620Nが、各レンダー・ターゲットの部分を並列に書き込みできるようにしてもよい。少なくとも一実施例では、システム・メモリとローカル・キャッシュ・メモリを併用する統合メモリ設計に有利なように、並列プロセッサ・メモリ2622のローカル・インスタンスは除外されてもよい。
少なくとも一実施例では、処理クラスタ・アレイ2612のクラスタ2614A~2614Nのうちのいずれか1つは、並列プロセッサ・メモリ2622内のメモリ・ユニット2624A~2624Nのいずれかに書き込まれることになるデータを処理することができる。少なくとも一実施例では、メモリ・クロスバー2616は、各クラスタ2614A~2614Nの出力を、出力に対してさらなる処理動作を実行することができる任意のパーティション・ユニット2620A~2620N、又は別のクラスタ2614A~2614Nに転送するように構成されることが可能である。少なくとも一実施例では、各クラスタ2614A~2614Nは、メモリ・クロスバー2616を通ってメモリ・インターフェース2618と通信して、様々な外部メモリ・デバイスからの読取り、又はそれへの書込みを行うことができる。少なくとも一実施例では、メモリ・クロスバー2616は、I/Oユニット2604と通信するためのメモリ・インターフェース2618への接続部、並びに並列プロセッサ・メモリ2622のローカル・インスタンスへの接続部を有して、異なる処理クラスタ2614A~2614N内の処理ユニットが、システム・メモリ、又は並列処理ユニット2602のローカルにない他のメモリと通信できるようにする。少なくとも一実施例では、メモリ・クロスバー2616は、仮想チャネルを使用して、クラスタ2614A~2614Nと、パーティション・ユニット2620A~2620Nとの間でトラフィック・ストリームを分離することができる。
少なくとも一実施例では、並列処理ユニット2602の複数のインスタンスは、単一のアドイン・カードに提供されてもよく、又は複数のアドイン・カードが相互接続されてもよい。少なくとも一実施例では、異なるインスタンスが異なる数の処理コア、異なる量のローカル並列プロセッサ・メモリ、及び/又は他の異なる構成を有する場合でも、並列処理ユニット2602の異なるインスタンスは相互動作するように構成されることが可能である。たとえば、少なくとも一実施例では、並列処理ユニット2602のいくつかインスタンスは、他のインスタンスに比べて高い精度の浮動小数点ユニットを含むことができる。少なくとも一実施例では、並列処理ユニット2602又は並列プロセッサ2600のうちの1つ又は複数のインスタンスを組み込んだシステムは、デスクトップ、ラップトップ、若しくは携帯型のパーソナル・コンピュータ、サーバ、ワークステーション、ゲーム・コンソール、及び/又は組み込みシステムを含むが、これらに限定されない様々な構成及びフォーム・ファクタで実装することができる。
図26Bは、少なくとも一実施例によるパーティション・ユニット2620のブロック図である。少なくとも一実施例では、パーティション・ユニット2620は、図26Aのパーティション・ユニット2620A~2620Nのうちの1つのパーティション・ユニットのインスタンスである。少なくとも一実施例では、パーティション・ユニット2620は、L2キャッシュ2621、フレーム・バッファ・インターフェース2625、及びROP:raster operations unit2626(ラスタ演算ユニット)を含む。L2キャッシュ2621は、メモリ・クロスバー2616及びROP2626から受け取ったロード及びストアの動作を実行するように構成された読取り/書込みキャッシュである。少なくとも一実施例では、読取りミス及び至急の書戻し要求が、処理されるようにL2キャッシュ2621によってフレーム・バッファ・インターフェース2625に出力される。少なくとも一実施例では、更新も、処理されるようにフレーム・バッファ・インターフェース2625を介してフレームに送られる。少なくとも一実施例では、フレーム・バッファ・インターフェース2625は、図26の(たとえば並列プロセッサ・メモリ2622内の)メモリ・ユニット2624A~2624Nなど、並列プロセッサ・メモリのメモリ・ユニットのうちの1つとインターフェースをとる。
少なくとも一実施例では、ROP2626は、ステンシル、zテスト、ブレンディングなどのラスタ演算を実行する処理ユニットである。少なくとも一実施例では、次いでROP2626は、グラフィックス・メモリに記憶された処理済みグラフィックス・データを出力する。少なくとも一実施例では、ROP2626は、メモリに書き込まれる深度又は色データを圧縮し、メモリから読み取られた深度又は色データを解凍するための圧縮論理を含む。少なくとも一実施例では、圧縮論理は、複数の圧縮アルゴリズムのうちの1つ又は複数を利用するロスレス圧縮論理とすることができる。ROP2626によって実行される圧縮のタイプは、圧縮されるデータの統計的特徴に基づき変更することができる。たとえば、少なくとも一実施例では、深度及び色データに対してはタイルごとにデルタ色圧縮が実行される。
少なくとも一実施例では、ROP2626は、パーティション・ユニット2620内ではなく、各処理クラスタ内(たとえば、図26のクラスタ2614A~2614N)に含まれる。少なくとも一実施例では、ピクセル・フラグメント・データではなく、ピクセル・データの読取り及び書込み要求が、メモリ・クロスバー2616を介して送信される。少なくとも一実施例では、処理済みグラフィックス・データは、図25の1つ又は複数のディスプレイ・デバイス2510のうちの1つなどのディスプレイ・デバイスに表示されてもよく、プロセッサ2502によってさらに処理できるようにルーティングされてもよく、又は図26Aの並列プロセッサ2600内の処理エンティティのうちの1つによってさらに処理できるようにルーティングされてもよい。
図26Cは、少なくとも一実施例による並列処理ユニット内の処理クラスタ2614のブロック図である。少なくとも一実施例では、処理クラスタは、図26の処理クラスタ2614A~2614Nのうちの1つの処理クラスタのインスタンスである。少なくとも一実施例では、処理クラスタ2614は、多数のスレッドを並列で実行するように構成されてもよく、ここで用語「スレッド」とは、入力データの特定のセットに対して実行している特定のプログラムのインスタンスを指す。少なくとも一実施例では、複数の独立した命令ユニットを提供することなく、多数のスレッドの並列実行をサポートするために、単一命令複数データ(SIMD)の命令発行技法が使用される。少なくとも一実施例では、それぞれの処理クラスタ内の処理エンジンのセットに命令を発行するように構成された共通の命令ユニットを使用して、全体的に同期された多数のスレッドの並列実行をサポートするために、単一命令複数スレッド(SIMT:single-instruction, multiple-thread)の技法が使用される。
少なくとも一実施例では、処理クラスタ2614の動作は、SIMT並列プロセッサに処理タスクを分配するパイプライン・マネージャ2632を介して制御することができる。少なくとも一実施例では、パイプライン・マネージャ2632は、図26のスケジューラ2610から命令を受け取り、グラフィックス・マルチプロセッサ2634及び/又はテクスチャ・ユニット2636を介してこれらの命令の実行を管理する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634は、SIMT並列プロセッサの例示的なインスタンスである。しかし、少なくとも一実施例では、アーキテクチャの異なる様々なタイプのSIMT並列プロセッサが、処理クラスタ2614内に含まれてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634の1つ又は複数のインスタンスは、処理クラスタ2614内に含めることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634はデータを処理することができ、処理済みデータを、他のシェーダ・ユニットを含む複数の可能な宛先のうちの1つに分配するためにデータ・クロスバー2640が使用されてもよい。少なくとも一実施例では、パイプライン・マネージャ2632は、データ・クロスバー2640を通して分配されることになる処理済みデータの宛先を指定することによって、処理済みデータの分配を容易にすることができる。
少なくとも一実施例では、処理クラスタ2614内の各グラフィックス・マルチプロセッサ2634は、関数実行論理(たとえば、算術論理演算ユニット、ロード・ストア・ユニットなど)の同一のセットを含むことができる。少なくとも一実施例では、関数実行論理は、前の命令が完了する前に新規の命令を発行することができるパイプライン式に構成されることが可能である。少なくとも一実施例では、関数実行論理は、整数及び浮動小数点の算術、比較演算、ブール演算、ビット・シフト、及び様々な代数関数の計算を含む様々な演算をサポートする。少なくとも一実施例では、同じ関数ユニットのハードウェアを活用して、異なる演算を実行することができ、関数ユニットの任意の組合せが存在してもよい。
少なくとも一実施例では、処理クラスタ2614に送信される命令がスレッドを構成する。少なくとも一実施例では、並列処理エンジンのセットにわたって実行されているスレッドのセットが、スレッド・グループである。少なくとも一実施例では、スレッド・グループは、異なる入力データに対してプログラムを実行する。少なくとも一実施例では、スレッド・グループ内の各スレッドを、グラフィックス・マルチプロセッサ2634内の異なる処理エンジンに割り当てることができる。少なくとも一実施例では、スレッド・グループは、グラフィックス・マルチプロセッサ2634内の処理エンジンの数よりも少ないスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループが処理エンジンの数よりも少ないスレッドを含む場合、処理エンジンのうちの1つ又は複数は、そのスレッド・グループが処理されているサイクル中にはアイドルであってもよい。少なくとも一実施例では、スレッド・グループはまた、グラフィックス・マルチプロセッサ2634内の処理エンジンの数よりも多いスレッドを含んでもよい。少なくとも一実施例では、スレッド・グループがグラフィックス・マルチプロセッサ2634内の処理エンジンの数より多くのスレッドを含む場合には、連続したクロック・サイクルにわたって処理を実行することができる。少なくとも一実施例では、複数のスレッド・グループを、グラフィックス・マルチプロセッサ2634上で同時に実行することができる。
少なくとも一実施例では、グラフィックス・マルチプロセッサ2634は、ロード及びストアの動作を実行するための内部キャッシュ・メモリを含む。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634は、内部キャッシュをやめて、処理クラスタ2614内のキャッシュ・メモリ(たとえば、L1キャッシュ2648)を使用することができる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2634は、パーティション・ユニット(たとえば、図26のパーティション・ユニット2620A~2620N)内のL2キャッシュにもアクセスすることができ、これらのキャッシュが、すべての処理クラスタ2614間で共有され、スレッド間でデータを転送するために使用されてもよい。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634は、オフ・チップのグローバル・メモリにもアクセスすることができ、このメモリは、ローカル並列プロセッサ・メモリ及び/又はシステム・メモリのうちの1つ又は複数を含むことができる。少なくとも一実施例では、並列処理ユニット2602の外部にある任意のメモリが、グローバル・メモリとして使用されてもよい。少なくとも一実施例では、処理クラスタ2614は、共通の命令及びデータを共有することができるグラフィックス・マルチプロセッサ2634の複数のインスタンスを含み、これらはL1キャッシュ2648に記憶されてもよい。
少なくとも一実施例では、各処理クラスタ2614は、仮想アドレスを物理アドレスにマッピングするように構成されたMMU2645(メモリ管理ユニット)を含んでもよい。少なくとも一実施例では、MMU2645の1つ又は複数のインスタンスは、図26のメモリ・インターフェース2618内にあってもよい。少なくとも一実施例では、MMU2645は、仮想アドレスを、タイル(タイリングについては詳述する)及び任意選択でキャッシュ・ライン・インデックスの物理アドレスにマッピングするために使用されるページ・テーブル・エントリ(PTE)のセットを含む。少なくとも一実施例では、MMU2645は、アドレスのトランスレーション・ルックアサイド・バッファ(TLB:translation lookaside buffer)又はキャッシュを含んでもよく、これらは、グラフィックス・マルチプロセッサ2634若しくはL1キャッシュ、又は処理クラスタ2614内にあってもよい。少なくとも一実施例では、表面データ・アクセスをローカルに分散するように物理アドレスを処理して、パーティション・ユニット間で要求の効率的なインターリーブが可能になる。少なくとも一実施例では、キャッシュ・ライン・インデックスを使用して、キャッシュ・ラインの要求がヒットかミスかが判定されてもよい。
少なくとも一実施例では、各グラフィックス・マルチプロセッサ2634がテクスチャ・ユニット2636に結合されて、テクスチャ・マッピング動作、たとえば、テクスチャ・サンプル位置の判定、テクスチャ・データの読取り、及びテクスチャ・データのフィルタリングが実行されるように、処理クラスタ2614が構成されてもよい。少なくとも一実施例では、テクスチャ・データは、内部テクスチャL1キャッシュ(図示せず)から、又はグラフィックス・マルチプロセッサ2634内のL1キャッシュから読み取られ、必要に応じて、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリからフェッチされる。少なくとも一実施例では、各グラフィックス・マルチプロセッサ2634は、処理済みタスクをデータ・クロスバー2640に出力して、さらなる処理ができるように別の処理クラスタ2614に処理済みタスクを提供し、又はメモリ・クロスバー2616を介して、L2キャッシュ、ローカル並列プロセッサ・メモリ、又はシステム・メモリに処理済みタスクを記憶する。少なくとも一実施例では、プレROP2642(プレ・ラスタ演算ユニット)は、グラフィックス・マルチプロセッサ2634からデータを受け取り、ROPユニットにデータを仕向けるように構成されており、ROPユニットは、本明細書に記載のするように、パーティション・ユニット(たとえば、図26のパーティション・ユニット2620A~2620N)内に位置付けられてもよい。少なくとも一実施例では、プレROP2642ユニットは、色ブレンディングの最適化を実行し、ピクセル色データを組織化し、アドレス・トランスレーションを実行することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス処理クラスタ2614において使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図26Dは、少なくとも一実施例によるグラフィックス・マルチプロセッサ2634を示す。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634は、処理クラスタ2614のパイプライン・マネージャ2632と結合する。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634は、命令キャッシュ2652、命令ユニット2654、アドレス・マッピング・ユニット2656、レジスタ・ファイル2658、1つ又は複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)コア2662、及び1つ又は複数のロード/ストア・ユニット2666を含むがこれらに限定されない実行パイプラインを有する。GPGPUコア2662、及びロード/ストア・ユニット2666は、メモリ及びキャッシュ相互接続2668を介して、キャッシュ・メモリ2672及び共有メモリ2670に結合される。
少なくとも一実施例では、命令キャッシュ2652は、実行すべき命令のストリームをパイプライン・マネージャ2632から受け取る。少なくとも一実施例では、命令は、命令キャッシュ2652にキャッシュされ、命令ユニット2654により実行されるようにディスパッチされる。少なくとも一実施例では、命令ユニット2654は、命令をスレッド・グループ(たとえば、ワープ)としてディスパッチすることができ、アスレッド・グループの各スレッドは、GPGPUコア2662内の異なる実行ユニットに割り当てられる。少なくとも一実施例では、命令は、統一アドレス空間内のアドレスを指定することによって、ローカル、共有、又はグローバルのアドレス空間のいずれかにアクセスすることができる。少なくとも一実施例では、アドレス・マッピング・ユニット2656を使用して、統一アドレス空間のアドレスを、ロード/ストア・ユニット2666がアクセスできる個別メモリ・アドレスにトランスレーションすることができる。
少なくとも一実施例では、レジスタ・ファイル2658は、グラフィックス・マルチプロセッサ2634の機能ユニットにレジスタのセットを提供する。少なくとも一実施例では、レジスタ・ファイル2658は、グラフィックス・マルチプロセッサ2634の機能ユニット(たとえばGPGPUコア2662、ロード/ストア・ユニット2666)のデータ経路に接続された、オペランドのための一時的なストレージを提供する。少なくとも一実施例では、レジスタ・ファイル2658は、レジスタ・ファイル2658の専用部分に各機能ユニットが配分されるように、それぞれの機能ユニット間で分割される。一実施例では、レジスタ・ファイル2658は、グラフィックス・マルチプロセッサ2634によって実行されている異なるワープ間で分割される。
少なくとも一実施例では、GPGPUコア2662はそれぞれ、グラフィックス・マルチプロセッサ2634の命令を実行するために使用される浮動小数点ユニット(FPU)及び/又は整数算術論理演算ユニット(ALU)を含むことができる。GPGPUコア2662同士は、同様のアーキテクチャであってもよく、又は異なるアーキテクチャであってもよい。少なくとも一実施例では、GPGPUコア2662の第1の部分は、単精度FPU及び整数ALUを含み、GPGPUコアの第2の部分は、倍精度FPUを含む。少なくとも一実施例では、FPUは、浮動小数点演算のためにIEEE754-2008規格を実装することができ、又は、可変精度の浮動小数点演算を有効にすることができる。少なくとも一実施例では、グラフィックス・マルチプロセッサ2634はさらに、矩形コピー又はピクセル・ブレンディングの動作などの特定の機能を実行するための、1つ若しくは複数の固定機能ユニット又は特別機能ユニットをさらに含むことができる。少なくとも一実施例では、GPGPUコアの1つ又は複数は、固定の又は特別な機能論理も含むことができる。
少なくとも一実施例では、GPGPUコア2662は、複数のデータ・セットに対して単一の命令を実行することができるSIMD論理を含む。少なくとも一実施例では、GPGPUコア2662は、SIMD4、SIMD8、及びSIMD16の命令を物理的に実行することができ、SIMD1、SIMD2、及びSIMD32の命令を論理的に実行することができる。少なくとも一実施例では、GPGPUコアのためのSIMD命令は、シェーダ・コンパイラによるコンパイル時に生成されてもよく、又は単一プログラム複数データ(SPMD:single program multiple data)又はSIMTのアーキテクチャ向けに書かれコンパイルされたプログラムを実行しているときに、自動的に生成されてもよい。少なくとも一実施例では、SIMT実行モデルのために構成されたプログラムの複数のスレッドは、単一のSIMD命令を介して実行することができる。たとえば、少なくとも一実施例では、同じ又は同様の動作を実行する8個のSIMTスレッドを、単一のSIMD8の論理ユニットを介して並列に実行することができる。
少なくとも一実施例では、メモリ及びキャッシュ相互接続2668は、グラフィックス・マルチプロセッサ2634の各機能ユニットをレジスタ・ファイル2658及び共有メモリ2670に接続する相互接続ネットワークである。少なくとも一実施例では、メモリ及びキャッシュ相互接続2668は、ロード/ストア・ユニット2666が、共有メモリ2670とレジスタ・ファイル2658の間でロード及びストアの動作を実装できるようにするクロスバー相互接続である。少なくとも一実施例では、レジスタ・ファイル2658は、GPGPUコア2662と同じ周波数で動作することができ、したがって、GPGPUコア2662とレジスタ・ファイル2658の間のデータ転送は非常に低レイテンシである。少なくとも一実施例では、共有メモリ2670を使用して、グラフィックス・マルチプロセッサ2634内の機能ユニットで実行されるスレッド間の通信を可能にすることができる。少なくとも一実施例では、キャッシュ・メモリ2672を、たとえばデータ・キャッシュとして使用して、機能ユニットとテクスチャ・ユニット2636の間で通信されるテクスチャ・データをキャッシュすることができる。少なくとも一実施例では、共有メモリ2670は、プログラム管理キャッシュとしても使用することができる。少なくとも一実施例では、GPGPUコア2662で実行されているスレッドは、キャッシュ・メモリ2672内に記憶される自動キャッシュ・データに加えて、共有メモリ内にプログラム的にデータを記憶することができる。
少なくとも一実施例では、本明細書に記載の並列プロセッサ又はGPGPUは、ホスト/プロセッサ・コアに通信可能に結合されて、グラフィックス動作、機械学習動作、パターン分析動作、及び様々な汎用GPU(GPGPU)機能を加速する。少なくとも一実施例では、GPUは、バス又は他の相互接続(たとえば、PCIe又はNVLinkなどの高速相互接続)を介してホスト・プロセッサ/コアに通信可能に結合されてもよい。少なくとも一実施例では、GPUは、コアと同じパッケージ又はチップに一体化されてもよく、内部(すなわち、パッケージ又はチップの内部の)プロセッサ・バス/相互接続を介してコアに通信可能に結合されてもよい。少なくとも一実施例では、GPUの接続方法に関わらず、プロセッサ・コアは、ワーク記述子に含まれたコマンド/命令のシーケンスの形でワークをGPUに配分してもよい。少なくとも一実施例では、次いでGPUは、これらのコマンド/命令を効率的に処理するために専用の回路/論理を使用する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・マルチプロセッサ2634において使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図27は、少なくとも一実施例による、マルチGPUコンピューティング・システム2700を示す。少なくとも一実施例では、マルチGPUコンピューティング・システム2700は、ホスト・インターフェース・スイッチ2704を介して複数の汎用グラフィックス・プロセッシング・ユニット(GPGPU)2706A~Dに結合されたプロセッサ2702を含むことができる。少なくとも一実施例では、ホスト・インターフェース・スイッチ2704は、プロセッサ2702をPCIエクスプレス・バスに結合するPCIエクスプレス・スイッチ・デバイスであり、このPCIエクスプレス・バスを介して、プロセッサ2702は、GPGPU2706A~Dと通信することができる。GPGPU2706A~Dは、高速ポイントツーポイントGPUツーGPUリンク2716のセットを介して相互接続することができる。少なくとも一実施例では、GPUツーGPUリンク2716は、専用GPUリンクを介して、GPGPU2706A~Dのそれぞれに接続される。少なくとも一実施例では、P2PのGPUリンク2716は、プロセッサ2702が接続されているホスト・インターフェース・バス2704を介した通信を必要とせずに、GPGPU2706A~Dのそれぞれの間で直接通信を可能にする。少なくとも一実施例では、P2PのGPUリンク2716に仕向けられたGPUツーGPUトラフィックがあると、ホスト・インターフェース・バス2704は、システム・メモリへのアクセスができるように、又はたとえば1つ又は複数のネットワーク・デバイスを介して、マルチGPUコンピューティング・システム2700の他のインスタンスと通信するために、利用可能な状態に保たれる。少なくとも一実施例では、GPGPU2706A~Dは、ホスト・インターフェース・スイッチ2704を介してプロセッサ2702に接続され、少なくとも一実施例では、プロセッサ2702は、P2PのGPUリンク2716のための直接サポートを含み、GPGPU2706A~Dに直接接続することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにマルチGPUコンピューティング・システム2700において使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図28は、少なくとも一実施例によるグラフィックス・プロセッサ2800のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ2800は、リング相互接続2802、パイプライン・フロント・エンド2804、メディア・エンジン2837、及びグラフィックス・コア2880A~2880Nを含む。少なくとも一実施例では、リング相互接続2802は、グラフィックス・プロセッサ2800を、他のグラフィックス・プロセッサ又は1つ又は複数の汎用プロセッサ・コアを含む他の処理ユニットに結合する。少なくとも一実施例では、グラフィックス・プロセッサ2800は、マルチ・コア処理システム内に一体化された多数のプロセッサのうちの1つである。
少なくとも一実施例では、グラフィックス・プロセッサ2800は、リング相互接続2802を介してコマンドのバッチを受け取る。少なくとも一実施例では、入ってくるコマンドは、パイプライン・フロント・エンド2804のコマンド・ストリーマ2803によって解釈される。少なくとも一実施例では、グラフィックス・プロセッサ2800は、グラフィックス・コア2880A~2880Nを介して3Dジオメトリ処理及びメディア処理を実行するためのスケーラブルな実行論理を含む。少なくとも一実施例では、3Dジオメトリ処理コマンドについては、コマンド・ストリーマ2803はコマンドをジオメトリ・パイプライン2836に供給する。少なくとも一実施例では、少なくとも一部のメディア処理コマンドについては、コマンド・ストリーマ2803はコマンドをビデオ・フロント・エンド2834に供給し、ビデオ・フロント・エンド2834はメディア・エンジン2837に結合される。少なくとも一実施例では、メディア・エンジン2837は、ビデオ及び画像の後処理のためのVideo Quality Engine(VQE)2830と、ハードウェア加速されたメディア・データのエンコード及びデコードを提供するマルチ・フォーマット・エンコード/デコード(MFX)2833エンジンとを含む。少なくとも一実施例では、ジオメトリ・パイプライン2836及びメディア・エンジン2837はそれぞれ、少なくとも1つのグラフィックス・コア2880Aによって提供されるスレッド実行リソースのための実行スレッドを生成する。
少なくとも一実施例では、グラフィックス・プロセッサ2800は、モジュール式コア2880A~2880N(コア・スライスと呼ばれることもある)を特徴とするスケーラブルなスレッド実行リソースを含み、それぞれのモジュール式コアは、複数のサブ・コア2850A~550N、2860A~2860N(コア・サブ・スライスと呼ばれることもある)を有する。少なくとも一実施例では、グラフィックス・プロセッサ2800は、任意の数のグラフィックス・コア2880A~2880Nを有することができる。少なくとも一実施例では、グラフィックス・プロセッサ2800は、少なくとも第1のサブ・コア2850A及び第2のサブ・コア2860Aを有するグラフィックス・コア2880Aを含む。少なくとも一実施例では、グラフィックス・プロセッサ2800は、単一のサブ・コア(たとえば、2850A)を有する低電力プロセッサである。少なくとも一実施例では、グラフィックス・プロセッサ2800は、複数のグラフィックス・コア2880A~2880Nを含み、このそれぞれが、第1のサブ・コア2850A~2850Nのセット、及び第2のサブ・コア2860A~2860Nのセットを含む。少なくとも一実施例では、第1のサブ・コア2850A~2850Nの各サブ・コアは、少なくとも、実行ユニット2852A~2852Nとメディア/テクスチャ・サンプラ2854A~2854Nの第1のセットを含む。少なくとも一実施例では、第2のサブ・コア2860A~2860Nの各サブ・コアは、少なくとも、実行ユニット2862A~2862Nとサンプラ2864A~2864Nの第2のセットを含む。少なくとも一実施例では、各サブ・コア2850A~2850N、2860A~2860Nは、共有リソース2870A~2870Nのセットを共有する。少なくとも一実施例では、共有リソースは、共有キャッシュ・メモリ及びピクセル動作論理を含む。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315は、本明細書に記載のニューラル・ネットワークの訓練動作、ニューラル・ネットワークの機能及び/若しくはアーキテクチャ、又はニューラル・ネットワークのユース・ケースを使用して計算された重みパラメータに少なくとも部分的に基づき、推論又は予測の動作のためにグラフィックス・プロセッサ2800において使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図29は、少なくとも一実施例による、命令を実行するための論理回路を含んでもよいプロセッサ2900のマイクロ・アーキテクチャを示すブロック図である。少なくとも一実施例では、プロセッサ2900は、x86命令、AMR命令、特定用途向け集積回路(ASIC)用の特別命令などを含む命令を実行してもよい。少なくとも一実施例では、プロセッサ2910は、カリフォルニア州サンタクララのインテルコーポレーションによる、MMX技術で有効化されたマイクロプロセッサ内の64ビット幅MMXTMレジスタなど、パック・データを記憶するためのレジスタを含んでもよい。少なくとも一実施例では、整数形式と浮動小数点形式の両方で利用可能なMMXレジスタは、単一命令複数データ(「SIMD」)及びストリーミングSIMD拡張(「SSE」:streaming SIMD extensions)命令を伴うパック・データ要素で動作してもよい。少なくとも一実施例では、SSE2、SSE3、SSE4、AVX、又はそれ以上(総称して「SSEx」と呼ばれる)の技術に関する128ビット幅のXMMレジスタは、こうしたパック・データのオペランドを保持してもよい。少なくとも一実施例では、プロセッサ2910は、機械学習若しくは深層学習のアルゴリズム、訓練、又は推論を加速するために命令を実行してもよい。
少なくとも一実施例では、プロセッサ2900は、実行すべき命令をフェッチし、プロセッサ・パイプラインで後に使用すべき命令を準備するイン・オーダー・フロント・エンド(「フロント・エンド」)2901を含む。少なくとも一実施例では、フロント・エンド2901は、いくつかのユニットを含んでもよい。少なくとも一実施例では、命令プリフェッチャ2926が、メモリから命令をフェッチし、命令デコーダ2928に命令を供給し、命令デコーダが、命令をデコード又は解釈する。たとえば、少なくとも一実施例では、命令デコーダ2928は、受け取った命令を、機械が実行することのできる「マイクロ命令」又は「マイクロ・オペレーション」と呼ばれる(「マイクロ・オプス」又は「uops」とも呼ばれる)1つ又は複数のオペレーションにデコードする。少なくとも一実施例では、命令デコーダ2928は、命令を、オプコード及び対応するデータ、並びに制御フィールドに構文解析して、これらがマイクロ・アーキテクチャによって使用されて、少なくとも一実施例による動作が実行されてもよい。少なくとも一実施例では、トレース・キャッシュ2930は、デコードされたuopsを、実行できるようにuopキュー2934においてプログラム順のシーケンス又はトレースにアセンブルしてもよい。少なくとも一実施例では、トレース・キャッシュ2930が複雑な命令に遭遇すると、マイクロコードROM2932が、動作の完了に必要なuopsを提供する。
少なくとも一実施例では、単一のマイクロ・オプスに変換できる命令もあれば、全動作を完了するためにいくつかのマイクロ・オプスを必要とする命令もある。少なくとも一実施例では、命令を完了するために5つ以上のマイクロ・オプスが要な場合、命令デコーダ2928は、マイクロコードROM2932にアクセスして、命令を実行してもよい。少なくとも一実施例では、命令は、命令デコーダ2928において処理できるように、少数のマイクロ・オプスにデコードされてもよい。少なくとも一実施例では、動作を完了するのに多数のマイクロ・オプスが必要な場合には、命令は、マイクロコードROM2932に記憶されてもよい。少なくとも一実施例では、トレース・キャッシュ2930は、少なくとも一実施例によるマイクロコードROM2932からの1つ又は複数の命令を完了するために、エントリ・ポイント・プログラマブル論理アレイ(「PLA」:programmable logic array)を参照して、マイクロコード・シーケンスを読み取るための正しいマイクロ命令ポインタを判定する。少なくとも一実施例では、マイクロコードROM2932が命令のためのマイクロ・オプスのシーケンシングを終了した後、機械のフロント・エンド2901は、トレース・キャッシュ2930からマイクロ・オプスのフェッチを再開してもよい。
少なくとも一実施例では、アウト・オブ・オーダー実行エンジン(「アウト・オブ・オーダー・エンジン」)2903は、実行できるように命令を準備してもよい。少なくとも一実施例では、アウト・オブ・オーダー実行論理は、命令のフローをなめらかにし、その順序を変更するために多数バッファを有し、命令がパイプラインを下り、実行されるようにスケジューリングされるときの性能を最適化する。アウト・オブ・オーダー実行エンジン2903は、限定することなく、アロケータ/レジスタ・リネーマ2940、メモリuopキュー2942、整数/浮動小数点uopキュー2944、メモリ・スケジューラ2946、高速スケジューラ2902、低速/汎用浮動小数点スケジューラ(「低速/汎用FP:floating pointスケジューラ」)2904、及び単純浮動小数点スケジューラ(「単純FPスケジューラ」)2906を含む。少なくとも一実施例では、高速スケジューラ2902、低速/汎用浮動小数点スケジューラ2904、及び単純浮動小数点スケジューラ2906は、本明細書において集合的に「uopスケジューラ2902、2904、2906」とも呼ばれる。アロケータ/レジスタ・リネーマ2940は、実行するために各uopが必要とする機械バッファ及びリソースを配分する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2940は、レジスタ・ファイルへのエントリ時に論理レジスタの名前を変更する。少なくとも一実施例では、アロケータ/レジスタ・リネーマ2940はまた、メモリ・スケジューラ2946及びuopスケジューラ2902、2904、2906の前の、2つのuopキュー、すなわちメモリ動作のためのメモリuopキュー2942と非メモリ動作のための整数/浮動小数点uopキュー2944のうちの1つに、各uopのエントリを配分する。少なくとも一実施例では、uopスケジューラ2902、2904、2906は、uopsがいつ実行準備されるかを、それらの従属入力レジスタ・オペランドのソースが準備されていること、及びそれらの動作を完了するためにuopが必要とする実行リソースが利用可能であることに基づき、判定する。少なくとも一実施例では、少なくとも一実施例の高速スケジューラ2902は、メイン・クロック・サイクルの半分ごとにスケジューリングしてもよく、低速/汎用浮動小数点スケジューラ2904及び単純浮動小数点スケジューラ2906は、メイン・プロセッサのクロック・サイクル当たりに1回スケジューリングしてもよい。少なくとも一実施例では、uopスケジューラ2902、2904、2906は、実行できるようにuopsをスケジューリングするためにディスパッチ・ポートを調停する。
少なくとも一実施例では、実行ブロックb11は、限定することなく、整数レジスタ・ファイル/バイパス・ネットワーク2908、浮動小数点レジスタ・ファイル/バイパス・ネットワーク(「FPレジスタ・ファイル/バイパス・ネットワーク」)2910、アドレス生成ユニット(「AGU」:address generation units)2912及び2914、高速算術論理演算ユニット(ALU)(「高速ALU」)2916及び2918、低速算術論理演算ユニット(「低速ALU」)2920、浮動小数点ALU(「FP」)2922、並びに浮動小数点移動ユニット(「FP移動」)2924を含む。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2908及び浮動小数点レジスタ・ファイル/バイパス・ネットワーク2910は、本明細書において「レジスタ・ファイル2908、2910」とも呼ばれる。少なくとも一実施例では、AGU2912及び2914、高速ALU2916及び2918、低速ALU2920、浮動小数点ALU2922、及び浮動小数点移動ユニット2924は、本明細書において「実行ユニット2912、2914、2916、2918、2920、2922、及び2924」とも呼ばれる。少なくとも一実施例では、実行ブロックb11は、限定することなく、(ゼロを含む)任意の数及びタイプのレジスタ・ファイル、バイパス・ネットワーク、アドレス生成ユニット、及び実行ユニットを、任意の組合せで含んでもよい。
少なくとも一実施例では、レジスタ・ファイル2908、2910は、uopスケジューラ2902、2904、2906と、実行ユニット2912、2914、2916、2918、2920、2922、及び2924との間に配置されてもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2908は、整数演算を実行する。少なくとも一実施例では、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2910は、浮動小数点演算を実行する。少なくとも一実施例では、レジスタ・ファイル2908、2910のそれぞれは、限定することなく、バイパス・ネットワークを含んでもよく、このバイパス・ネットワークは、レジスタ・ファイルにまだ書き込まれていない完了したばかりの結果を、新しい従属uopsにバイパス又は転送してもよい。少なくとも一実施例では、レジスタ・ファイル2908、2910は、互いにデータを通信してもよい。少なくとも一実施例では、整数レジスタ・ファイル/バイパス・ネットワーク2908は、限定することなく、2つの別々のレジスタ・ファイル、すなわち低次32ビットのデータ用の1つのレジスタ・ファイル、及び高次32ビットのデータ用の第2のレジスタ・ファイルを含んでもよい。少なくとも一実施例では、浮動小数点命令は、通常、64~128ビット幅のオペランドを有することから、浮動小数点レジスタ・ファイル/バイパス・ネットワーク2910は、限定することなく、128ビット幅のエントリを含んでもよい。
少なくとも一実施例では、実行ユニット2912、2914、2916、2918、2920、2922、2924は、命令を実行してもよい。少なくとも一実施例では、レジスタ・ファイル2908、2910は、マイクロ命令が実行する必要のある整数及び浮動小数点のデータのオペランド値を記憶する。少なくとも一実施例では、プロセッサ2900は、限定することなく、任意の数及び組合せの実行ユニット2912、2914、2916、2918、2920、2922、2924を含んでよい。少なくとも一実施例では、浮動小数点ALU2922及び浮動小数点移動ユニット2924は、浮動小数点、MMX、SIMD、AVX、及びSEE、又は特別な機械学習命令を含む他の演算を実行してもよい。少なくとも一実施例では、浮動小数点ALU2922は、限定することなく、64ビットずつの浮動小数点デバイダを含み、除算、平方根、及び残りのマイクロ・オプスを実行してもよい。少なくとも一実施例では、浮動小数点値を含む命令は、浮動小数点ハードウェアによって対処されてもよい。少なくとも一実施例では、ALU演算は、高速ALU2916、2918に渡されてもよい。少なくとも一実施例では、高速ALU2916、2918は、クロック・サイクルの半分の実効レイテンシで高速演算を実行してもよい。少なくとも一実施例では、低速ALU2920は、乗数、シフト、フラグ論理、及びブランチ処理などの長レイテンシ・タイプの演算のための整数実行ハードウェアを、限定することなく含んでもよいことから、ほとんどの複雑な整数演算は低速ALU2920に進む。少なくとも一実施例では、メモリのロード/ストア動作は、AGUS2912、2914によって実行されてもよい。少なくとも一実施例では、高速ALU2916、高速ALU2918、及び低速ALU2920は、64ビットのデータ・オペランドで整数演算を実行してもよい。少なくとも一実施例では、高速ALU2916、高速ALU2918、及び低速ALU2920は、16、32、128、256などを含む様々なデータ・ビット・サイズをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2922及び浮動小数点移動ユニット2924は、様々なビット幅を有する幅広いオペランドをサポートするように実装されてもよい。少なくとも一実施例では、浮動小数点ALU2922及び浮動小数点移動ユニット2924は、SIMD及びマルチメディア命令と併せて128ビット幅のパック・データ・オペランドで動作してもよい。
少なくとも一実施例では、uopスケジューラ2902、2904、2906は、親ロードが実行を終了する前に、従属演算をディスパッチする。少なくとも一実施例では、uopsは、プロセッサ2900において投機的にスケジューリング及び実行されてもよいので、プロセッサ2900は、メモリ・ミスに対処するための論理も含んでよい。少なくとも一実施例では、データ・キャッシュにおいてデータ・ロードがミスした場合、一時的に不正確なデータを有するスケジューラを通り過ぎたパイプラインに、進行中の従属演算が存在してもよい。少なくとも一実施例では、リプレイ機構が、不正確なデータを使用する命令を追跡及び再実行する。少なくとも一実施例では、従属演算は、リプレイされる必要があってもよく、独立した演算は、完了が許容されてもよい。少なくとも一実施例では、プロセッサの少なくとも一実施例のスケジューラ及びリプレイ機構はまた、テキスト・ストリング比較演算のための命令シーケンスを捕捉するように設計されてもよい。
少なくとも一実施例では、用語「レジスタ」は、オペランドを識別するための命令の一部として使用することができるオンボード・プロセッサのストレージ・ロケーションを指してもよい。少なくとも一実施例では、レジスタは、(プログラマの視点から見て)プロセッサの外部から使用可能であり得るものであってもよい。少なくとも一実施例では、レジスタは、特定のタイプの回路に限定されなくてもよい。むしろ、少なくとも一実施例では、レジスタは、データを記憶し、データを提供し、本明細書に記載の機能を実行してもよい。少なくとも一実施例では、本明細書に記載のレジスタは、専用物理レジスタ、レジスタ・リネーミングを使用して動的に配分される物理レジスタ、専用物理レジスタと動的に配分される物理レジスタとの組合せなど、任意の数の異なる技法を使用して、プロセッサ内の回路によって実装されてもよい。少なくとも一実施例では、整数レジスタは、32ビットの整数データを記憶する。少なくとも一実施例のレジスタ・ファイルは、パック・データのための8つのマルチメディアSIMDレジスタも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315の一部又はすべてが、EXEブロック2911、及び図示してある若しくは図示していない他のメモリ又はレジスタに組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、EXEブロック2911に示すALUのうちの1つ又は複数を使用してもよい。さらに、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのEXEブロック2911のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図30は、少なくとも一実施例による深層学習アプリケーション・プロセッサ3000を示す。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3000は、深層学習アプリケーション・プロセッサ3000によって実行される場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、深層学習アプリケーション・プロセッサ3000に実行させる命令を使用する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3000は、特定用途向け集積回路(ASIC)である。少なくとも一実施例では、アプリケーション・プロセッサ3000は、1つ若しくは複数の命令又は両方を実行した結果としていずれもハードウェアに「ハード・ワイヤード」された行列乗算演算を実行する。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3000は、限定することなく、処理クラスタ3010(1)~3010(12)、チップ間リンク(「ICL」)3020(1)~3020(12)、チップ間コントローラ(「ICC」)3030(1)~3030(2)、高帯域幅メモリ第2世代(「HBM2」)3040(1)~3040(4)、メモリ・コントローラ(「Mem Ctrlrs」)3042(1)~3042(4)、高帯域幅メモリ物理層(「HBM PHY」)3044(1)~3044(4)、管理-コントローラ中央処理装置(「管理-コントローラCPU」)3050、シリアル・ペリフェラル・インターフェース、集積回路間、及び汎用入力/出力ブロック(「SPI、I2C、GPIO」)3060、周辺構成要素相互接続エクスプレス・コントローラ及びダイレクト・メモリ・アクセス・ブロック(「PCIeコントローラ及びDMA」)3070、並びに16レーン周辺構成要素相互接続エクスプレス・ポート(「PCI Expressx16」)3080を含む。
少なくとも一実施例では、処理クラスタ3010は、本明細書に記載の技法を含む1つ又は複数の訓練技法を使用して計算された重みパラメータに基づき、推論又は予測の演算を含む深層学習演算を実行してもよい。少なくとも一実施例では、各処理クラスタ3010は、限定することなく、任意の数及びタイプのプロセッサを含んでもよい。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3000は、任意の数及びタイプの処理クラスタ3000を含んでもよい。少なくとも一実施例では、チップ間リンク3020は、双方向性である。少なくとも一実施例では、チップ間リンク3020及びチップ間コントローラ3030は、1つ又は複数のニューラル・ネットワークに具体化された1つ又は複数の機械学習アルゴリズムを実行した結果得られるアクティブ化情報を含む情報を、複数の深層学習アプリケーション・プロセッサ3000が交換できるようにする。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3000は、(ゼロを含む)任意の数及びタイプのICL3020及びICC3030を含んでもよい。
少なくとも一実施例では、HBM2 3040は、合計32ギガバイト(GB:Gigabyte)のメモリを提供する。HBM2 3040(i)は、メモリ・コントローラ3042(i)とHBM PHY3044(i)の両方に関連付けられる。少なくとも一実施例では、任意の数のHBM2 3040が、任意のタイプ及び合計量の高帯域幅メモリを提供してもよく、(ゼロを含む)任意の数及びタイプのメモリ・コントローラ3042及びHBM PHY3044に関連付けられてもよい。少なくとも一実施例では、SPI、I2C、GPIO3060、PCIeコントローラ及びDMA3070、並びに/又はPCIe3080は、任意の技術的に実行可能なやり方で任意の数及びタイプの通信規格を有効にする任意の数及びタイプのブロックに置き換えられてもよい。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3000は、深層学習アプリケーション・プロセッサ3000に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3000は、別のプロセッサ若しくはシステムによって、又は深層学習アプリケーション・プロセッサ3000によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、プロセッサ3000は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図31は、少なくとも一実施例による、ニューロモーフィック・プロセッサ3100のブロック図である。少なくとも一実施例では、ニューロモーフィック・プロセッサ3100は、ニューロモーフィック・プロセッサ3100の外部のソースから1つ又は複数の入力を受信する。少なくとも一実施例では、これらの入力は、ニューロモーフィック・プロセッサ3100内の1つ又は複数のニューロン3102に送信されてもよい。少なくとも一実施例では、ニューロン3102及びその構成要素は、1つ又は複数の算術論理演算ユニット(ALU)を含む回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ3100は、限定することなく、ニューロン3102の数千又は数百万のインスタンスを含んでもよいが、任意の好適な数のニューロン3102が使用されてもよい。少なくとも一実施例では、ニューロン3102の各インスタンスは、ニューロン入力3104及びニューロン出力3106を含んでもよい。少なくとも一実施例では、ニューロン3102は出力を生成してもよく、この出力は、ニューロン3102の他のインスタンスの入力に送信されてもよい。たとえば、少なくとも一実施例では、ニューロン入力3104及びニューロン出力3106は、シナプス3108を介して相互接続されてもよい。
少なくとも一実施例では、ニューロン3102とシナプス3108は、ニューロモーフィック・プロセッサ3100が受信した情報をニューロモーフィック・プロセッサ3100が動作して処理又は分析するように、相互接続されてもよい。少なくとも一実施例では、ニューロン3102は、ニューロン入力3104を介して受信した入力が、閾値を超えているとき、出力パルス(又は「発火」若しくは「スパイク」)を送信してもよい。少なくとも一実施例では、ニューロン3102は、ニューロン入力3104において受信した信号を合計又は積分してもよい。たとえば、少なくとも一実施例では、ニューロン3102は、漏れ積分発火ニューロン(leaky integrate-and-fire neuron)として実装されてもよく、ここで、合計(「膜電位」と呼ばれる)が閾値を超える場合には、ニューロン3102は、シグモイド関数又は閾値関数などの伝達関数を使用して、出力(又は「発火」)を生成してもよい。少なくとも一実施例では、漏れ積分発火ニューロンは、ニューロン入力3104で受信した信号を合計して膜電位にしてもよく、また、崩壊因子(又は漏れ)を適用して膜電位を低減してもよい。少なくとも一実施例では、複数の入力信号が、閾値を超えるほど十分に素早く(すなわち、膜電位の崩壊が少なすぎて発火できなくなる前に)ニューロン入力3104において受信された場合には、漏れ積分発火ニューロンが発火してもよい。少なくとも一実施例では、ニューロン3102は、入力を受信し、入力を積分して膜電位にし、膜電位を崩壊させる回路又は論理を使用して、実装されてもよい。少なくとも一実施例では、入力は平均化されてもよく、又は任意の他の好適な伝達関数が使用されてもよい。さらに、少なくとも一実施例では、ニューロン3102は、ニューロン3104に伝達関数を適用した結果が閾値を超えるとき、ニューロン3106において出力スパイクを生成するコンパレータ回路又は論理を、限定することなく含んでもよい。少なくとも一実施例では、ニューロン3102は発火すると、前に受信した入力情報を、たとえば膜電位を0又は他の好適なデフォルト値に再設定することによって、無視してもよい。少なくとも一実施例では、膜電位が0にリセットされると、ニューロン3102は、好適な期間(又は不応期)の後に通常の動作を再開してもよい。
少なくとも一実施例では、ニューロン3102は、シナプス3108を通して相互接続されてもよい。少なくとも一実施例では、シナプス3108は、第1のニューロン3102の出力から第2のニューロン3102の入力に信号を送信するように動作してもよい。少なくとも一実施例では、ニューロン3102は、シナプス3108の2つ以上のインスタンスを介して情報を送信してもよい。少なくとも一実施例では、ニューロン出力3106の1つ又は複数のインスタンスは、シナプス3108のインスタンスを介して、同じニューロン3102のニューロン入力3104のインスタンスに接続されてもよい。少なくとも一実施例では、シナプス3108のインスタンスを介して送信されることになる出力を生成するニューロン3102のインスタンスは、シナプス3108のそのインスタンスに対して「シナプス前ニューロン」と呼ばれてもよい。少なくとも一実施例では、シナプス3108のインスタンスを介して送信されることになる入力を受信するニューロン3102のインスタンスは、シナプス3108のそのインスタンスに対して「シナプス後ニューロン」と呼ばれてもよい。少なくとも一実施例では、ニューロン3102のインスタンスは、シナプス3108の1つ又は複数のインスタンスから入力を受信してもよく、また、シナプス3108の1つ又は複数のインスタンスを介して出力を送信してもよいので、ニューロン3102の単一のインスタンスは、したがって、シナプス3108の様々なインスタンスに対して「シナプス前ニューロン」と「シナプス後ニューロン」の両方であってもよい。
少なくとも一実施例では、ニューロン3102は、1つ又は複数の層に組織化されてもよい。ニューロン3102の各インスタンスは、1つ又は複数のシナプス3108を通って1つ又は複数のニューロン入力3104にファン・アウトすることができる1つのニューロン出力3106を有してもよい。少なくとも一実施例では、第1の層3110のニューロン3102のニューロン出力3106は、第2の層3112のニューロン3102のニューロン入力3104に接続されてもよい。少なくとも一実施例では、層3110は、「フィード・フォワード」層と呼ばれてもよい。少なくとも一実施例では、第1の層3110のインスタンスにおけるニューロン3102の各インスタンスは、第2の層3112におけるニューロン3102の各インスタンスにファン・アウトしてもよい。少なくとも一実施例では、第1の層3110は、「完全に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層3112のインスタンスにおけるニューロン3102の各インスタンスは、第3の層3114におけるニューロン3102の全インスタンスより少ないインスタンスにファン・アウトしてもよい。少なくとも一実施例では、第2の層3112は、「疎に接続されたフィード・フォワード層」と呼ばれてもよい。少なくとも一実施例では、第2の層3112のニューロン3102は、(同じ)第2の層3112におけるニューロン3102を含め、複数の他の層のニューロン3102にファン・アウトしてもよい。少なくとも一実施例では、第2の層3112は、「回帰層」と呼ばれてもよい。ニューロモーフィック・プロセッサ3100は、疎に接続されたフィード・フォワード層と完全に接続されたフィード・フォワード層の両方を限定することなく含む、回帰層とフィード・フォワード層の任意の好適な組合せを限定することなく含んでもよい。
少なくとも一実施例では、ニューロモーフィック・プロセッサ3100は、シナプス3108をニューロン3102に接続するための再構成可能相互接続アーキテクチャ、又は専用ハード・ワイヤード相互接続を、限定することなく含んでもよい。少なくとも一実施例では、ニューロモーフィック・プロセッサ3100は、ニューラル・ネットワーク・トポロジ、及びニューロンのファン・イン/ファン・アウトに基づき、必要に応じてシナプスを異なるニューロン3102に配分できるようにする回路又は論理を、限定することなく含んでもよい。たとえば、少なくとも一実施例では、シナプス3108は、ネットワーク・オン・チップなどの相互接続ファブリックを使用して、又は専用の接続を用いて、ニューロン3102に接続されてもよい。少なくとも一実施例では、シナプス相互接続及びその構成要素は、回路又は論理を使用して実装されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図32は、少なくとも一実施例による処理システムのブロック図である。少なくとも一実施例では、システム3200は、1つ又は複数のプロセッサ3202、及び1つ又は複数のグラフィックス・プロセッサ3208を含み、単一プロセッサのデスクトップ・システム、マルチプロセッサのワークステーション・システム、又は多数のプロセッサ3202若しくはプロセッサ・コア3207を有するサーバ・システムであってもよい。少なくとも一実施例では、システム3200は、モバイル・デバイス、携帯型デバイス、又は組み込みデバイスで使用するためのシステム・オン・チップ(SoC)集積回路内に組み込まれた処理プラットフォームである。
少なくとも一実施例では、システム3200は、サーバ・ベースのゲーミング・プラットフォーム、ゲーム及びメディアのコンソールを含むゲーム・コンソール、モバイル・ゲーミング・コンソール、携帯型ゲーム・コンソール、若しくはオンライン・ゲーム・コンソールを含んでもよく、又はそれらに組み込まれてもよい。少なくとも一実施例では、システム3200は、モバイル・フォン、スマート・フォン、タブレット・コンピューティング・デバイス、又はモバイル・インターネット・デバイスである。少なくとも一実施例では、処理システム3200はまた、スマート・ウォッチ・ウェアラブル・デバイス、スマート・アイウェア・デバイス、拡張現実デバイス、若しくは仮想現実デバイスなどのウェアラブル・デバイスを含んでもよく、それらに結合されてもよく、又はそれらの中に一体化されてもよい。少なくとも一実施例では、処理システム3200は、1つ又は複数のプロセッサ3202と、1つ又は複数のグラフィックス・プロセッサ3208によって生成されるグラフィカル・インターフェースとを有するテレビ又はセット・トップ・ボックス・デバイスである。
少なくとも一実施例では、1つ又は複数のプロセッサ3202はそれぞれ、実行されたときにシステム及びユーザ・ソフトウェアのための動作を実行する命令を処理するための1つ又は複数のプロセッサ・コア3207を含む。少なくとも一実施例では、1つ又は複数のプロセッサ・コア3207のそれぞれは、特定の命令セット3209を処理するように構成される。少なくとも一実施例では、命令セット3209は、複合命令セット・コンピューティング(CISC)、縮小命令セット・コンピューティング(RISC)、又は超長命令語(VLIW)を介したコンピューティングを容易にしてもよい。少なくとも一実施例では、プロセッサ・コア3207はそれぞれ、異なる命令セット3209を処理してもよく、この命令セットは、他の命令セットのエミュレーションを容易にする命令を含んでもよい。少なくとも一実施例では、プロセッサ・コア3207はまた、デジタル信号プロセッサ(DSP)などの他の処理デバイスを含んでもよい。
少なくとも一実施例では、プロセッサ3202はキャッシュ・メモリ3204を含む。少なくとも一実施例では、プロセッサ3202は、単一の内部キャッシュ又は複数レベルの内部キャッシュを有してもよい。少なくとも一実施例では、キャッシュ・メモリは、プロセッサ3202の様々な構成要素間で共有される。少なくとも一実施例では、プロセッサ3202はまた、外部キャッシュ(たとえば、レベル3(L3)キャッシュ又はラスト・レベル・キャッシュ(LLC))(図示せず)を使用し、このキャッシュは、知られているキャッシュ・コヒーレンス技法を使用して、プロセッサ・コア3207間で共有されてもよい。少なくとも一実施例では、さらにレジスタ・ファイル3206がプロセッサ3202に含まれ、このレジスタ・ファイルは、異なるタイプのデータを記憶するための異なるタイプのレジスタ(たとえば、整数レジスタ、浮動小数点レジスタ、状態レジスタ、及び命令ポインタ・レジスタ)を含んでもよい。少なくとも一実施例では、レジスタ・ファイル3206は、汎用レジスタ又は他のレジスタを含んでもよい。
少なくとも一実施例では、1つ又は複数のプロセッサ3202は、1つ又は複数のインターフェース・バス3210に結合されて、アドレス、データ、又は制御信号などの通信信号を、プロセッサ3202とシステム3200内の他の構成要素との間で送信する。少なくとも一実施例では、インターフェース・バス3210は、一実施例では、ダイレクト・メディア・インターフェース(DMI)バスのバージョンなどのプロセッサ・バスとすることができる。少なくとも一実施例では、インターフェース3210は、DMIバスに限定されず、1つ又は複数のペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)、メモリ・バス、又は他のタイプのインターフェース・バスを含んでもよい。少なくとも一実施例では、プロセッサ3202は、統合メモリ・コントローラ3216、及びプラットフォーム・コントローラ・ハブ3230を含む。少なくとも一実施例では、メモリ・コントローラ3216は、メモリ・デバイスとシステム3200の他の構成要素との間の通信を容易にし、一方でプラットフォーム・コントローラ・ハブ(PCH)3230は、ローカルI/Oバスを介してI/Oデバイスへの接続を提供する。
少なくとも一実施例では、メモリ・デバイス3220は、ダイナミック・ランダム・アクセス・メモリ(DRAM)デバイス、スタティック・ランダム・アクセス・メモリ(SRAM)デバイス、フラッシュ・メモリ・デバイス、相変化メモリ・デバイス、又はプロセス・メモリとしての役割を果たすのに好適な性能を有する何らかの他のメモリ・デバイスとすることができる。少なくとも一実施例では、メモリ・デバイス3220は、システム3200のためのシステム・メモリとして動作して、1つ又は複数のプロセッサ3202がアプリケーション若しくはプロセスを実行するときに使用するためのデータ3222及び命令3221を記憶することができる。少なくとも一実施例では、メモリ・コントローラ3216はまた、任意選択の外部グラフィックス・プロセッサ3212と結合しており、このグラフィックス・プロセッサは、プロセッサ3202内の1つ又は複数のグラフィックス・プロセッサ3208と通信して、グラフィックス及びメディアの動作を実行してもよい。少なくとも一実施例では、ディスプレイ・デバイス3211は、プロセッサ3202に接続することができる。少なくとも一実施例では、ディスプレイ・デバイス3211は、モバイル電子デバイス又はラップトップ・デバイスのような内部ディスプレイ・デバイス、又はディスプレイ・インターフェース(たとえば、ディスプレイ・ポートなど)を介して取り付けられる外部ディスプレイ・デバイスのうちの1つ又は複数を含むことができる。少なくとも一実施例では、ディスプレイ・デバイス3211は、仮想現実(VR)アプリケーション又は拡張現実(AR)アプリケーションで使用するための立体ディスプレイ・デバイスなどの頭部装着型ディスプレイ(HMD)を含むことができる。
少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3230は、周辺装置が高速I/Oバスを介してメモリ・デバイス3220及びプロセッサ3202に接続できるようにする。少なくとも一実施例では、I/O周辺装置は、オーディオ・コントローラ3246、ネットワーク・コントローラ3234、ファームウェア・インターフェース3228、ワイヤレス・トランシーバ3226、タッチ・センサ3225、データ・ストレージ・デバイス3224(たとえば、ハード・ディスク・ドライブ、フラッシュ・メモリなど)を含むが、これらに限定されない。少なくとも一実施例では、データ・ストレージ・デバイス3224は、ストレージ・インターフェース(たとえば、SATA)を介して、又はペリフェラル・コンポーネント・インターコネクト・バス(たとえば、PCI、PCIエクスプレス)などのペリフェラル・バスを介して、接続することができる。少なくとも一実施例では、タッチ・センサ3225は、タッチ画面センサ、圧力センサ、又は指紋センサを含むことができる。少なくとも一実施例では、ワイヤレス・トランシーバ3226は、WiFiトランシーバ、Bluetoothトランシーバ、又は3G、4G、若しくはLong Term Evolution(LTE)トランシーバなどのモバイル・ネットワーク・トランシーバとすることができる。少なくとも一実施例では、ファームウェア・インターフェース3228は、システム・ファームウェアとの通信を可能にし、たとえば、ユニファイド・エクステンシブル・ファームウェア・インターフェース(UEFI)とすることができる。少なくとも一実施例では、ネットワーク・コントローラ3234は、有線ネットワークへのネットワーク接続を可能にすることができる。少なくとも一実施例では、高性能ネットワーク・コントローラ(図示せず)は、インターフェース・バス3210と結合する。少なくとも一実施例では、オーディオ・コントローラ3246は、多チャネル・ハイ・デフィニション・オーディオ・コントローラである。少なくとも一実施例では、システム3200は、レガシー(たとえば、パーソナル・システム2(PS/2))デバイスをシステムに結合するための任意選択のレガシーI/Oコントローラ3240を含む。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3230は、キーボードとマウス3243の組合せ、カメラ3244、又は他のUSB入力デバイスなど、1つ又は複数のユニバーサル・シリアル・バス(USB)コントローラ3242の接続入力デバイスにも接続することができる。
少なくとも一実施例では、メモリ・コントローラ3216及びプラットフォーム・コントローラ・ハブ3230のインスタンスは、外部グラフィックス・プロセッサ3212などの個別の外部グラフィックス・プロセッサに一体化されてもよい。少なくとも一実施例では、プラットフォーム・コントローラ・ハブ3230及び/又はメモリ・コントローラ3216は、1つ又は複数のプロセッサ3202の外部にあってもよい。たとえば、少なくとも一実施例では、システム3200は、外部のメモリ・コントローラ3216及びプラットフォーム・コントローラ・ハブ3230を含むことができ、これらは、プロセッサ3202と通信するシステム・チップセット内のメモリ・コントローラ・ハブ及び周辺装置コントローラ・ハブとして構成されてもよい。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315の一部又はすべてが、グラフィックス・プロセッサ3200に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、パイプライン3212に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図13A又は図13Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3200のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図33は、少なくとも一実施例による、1つ又は複数のプロセッサ・コア3302A~3302N、統合メモリ・コントローラ3314、及び統合グラフィックス・プロセッサ3308を有するプロセッサ3300のブロック図である。少なくとも一実施例では、プロセッサ3300は、破線の四角によって表される追加コア3302Nを含むそれ以下の数の追加コアを含むことができる。少なくとも一実施例では、プロセッサ・コア3302A~3302Nのそれぞれは、1つ又は複数の内部キャッシュ・ユニット3304A~3304Nを含む。少なくとも一実施例では、各プロセッサ・コアはまた、1つ又は複数の共有キャッシュ・ユニット3306にアクセスできる。
少なくとも一実施例では、内部キャッシュ・ユニット3304A~3304N、及び共有キャッシュ・ユニット3306は、プロセッサ3300内のキャッシュ・メモリ階層を表す。少なくとも一実施例では、キャッシュ・メモリ・ユニット3304A~3304Nは、各プロセッサ・コア内の命令及びデータのキャッシュの少なくとも1つのレベル、並びにレベル2(L2)、レベル3(L3)、レベル4(L4)などの共有中間レベル・キャッシュの1つ又は複数のレベル、又はキャッシュの他のレベルを含んでもよく、ここで外部メモリの前の最高レベルのキャッシュは、LLCとして分類される。少なくとも一実施例では、キャッシュ・コヒーレンス論理は、様々なキャッシュ・ユニット3306及び3304A~3304N間でコヒーレンスを維持する。
少なくとも一実施例では、プロセッサ3300はまた、1つ又は複数のバス・コントローラ・ユニット3316とシステム・エージェント・コア3310のセットを含んでもよい。少なくとも一実施例では、1つ又は複数のバス・コントローラ・ユニット3316は、1つ又は複数のPCI若しくはPCIエクスプレス・バスなどのペリフェラル・バスのセットを管理する。少なくとも一実施例では、システム・エージェント・コア3310は、様々なプロセッサ構成要素のための管理機能を提供する。少なくとも一実施例では、システム・エージェント・コア3310は、様々な外部メモリ・デバイス(図示せず)へのアクセスを管理するための1つ又は複数の統合メモリ・コントローラ3314を含む。
少なくとも一実施例では、プロセッサ・コア3302A~3302Nの1つ又は複数は、同時マルチスレッディングのサポートを含む。少なくとも一実施例では、システム・エージェント・コア3310は、マルチスレッドの処理中にコア3302A~3302Nを調整し動作させるための構成要素を含む。少なくとも一実施例では、システム・エージェント・コア3310はさらに、電力制御ユニット(PCU)を含んでもよく、このユニットは、プロセッサ・コア3302A~3302N及びグラフィックス・プロセッサ3308の1つ又は複数の電力状態を調整するための論理及び構成要素を含む。
少なくとも一実施例では、プロセッサ3300はさらに、グラフィックス処理動作を実行するためのグラフィックス・プロセッサ3308を含む。少なくとも一実施例では、グラフィックス・プロセッサ3308は、共有キャッシュ・ユニット3306と、1つ又は複数の統合メモリ・コントローラ3314を含むシステム・エージェント・コア3310とに結合する。少なくとも一実施例では、システム・エージェント・コア3310はまた、1つ又は複数の結合されたディスプレイに対してグラフィックス・プロセッサの出力を行わせるためのディスプレイ・コントローラ3311を含む。少なくとも一実施例では、ディスプレイ・コントローラ3311はまた、少なくとも1つの相互接続を介してグラフィックス・プロセッサ3308に結合された別個のモジュールであってもよく、又はグラフィックス・プロセッサ3308内に一体化されていてもよい。
少なくとも一実施例では、プロセッサ3300の内部構成要素を結合するために、リング・ベースの相互接続ユニット3312が使用される。少なくとも一実施例では、ポイントツーポイント相互接続、スイッチ相互接続、又は他の技法などの代替的な相互接続ユニットが使用されてもよい。少なくとも一実施例では、グラフィックス・プロセッサ3308は、I/Oリンク3313を介してリング相互接続3312と結合する。
少なくとも一実施例では、I/Oリンク3313は、様々なプロセッサ構成要素と、eDRAMモジュールなどの高性能組み込みメモリ・モジュール3318との間の通信を容易にするオン・パッケージI/O相互接続を含む多様なI/O相互接続のうちの少なくとも1つを表す。少なくとも一実施例では、プロセッサ・コア3302A~3302Nのそれぞれ及びグラフィックス・プロセッサ3308は、共有ラスト・レベル・キャッシュとして組み込みメモリ・モジュール3318を使用する。
少なくとも一実施例では、プロセッサ・コア3302A~3302Nは、共通の命令セット・アーキテクチャを実行する同種のコアである。少なくとも一実施例では、プロセッサ・コア3302A~3302Nは、命令セット・アーキテクチャ(ISA)の観点から見れば異種であり、ここでプロセッサ・コア3302A~3302Nのうちの1つ又は複数は、共通の命令セットを実行するが、プロセッサ・コア3302A~3302Nのうちの1つ又は複数の他のコアは、共通の命令セットのサブセット、又は異なる命令セットを実行する。少なくとも一実施例では、プロセッサ・コア3302A~3302Nは、マイクロ・アーキテクチャの観点から見れば異種であり、ここで電力消費量が相対的に高い1つ又は複数のコアは、電力消費量がより低い1つ又は複数のコアと結合する。少なくとも一実施例では、プロセッサ3300は、1つ又は複数のチップ上に、又はSoC集積回路として実装することができる。
1つ又は複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315の一部又はすべてが、グラフィックス・プロセッサ3310に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3212、グラフィックス・コア3315A、共有機能論理3316、グラフィックス・コア3315B、共有機能論理3320、又は図33の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図13A又は図13Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3310のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示している又は図示せず)に記憶されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図34は、グラフィックス・プロセッサ3400のブロック図であり、これは、個別グラフィックス・プロセッシング・ユニットであってもよく、又は複数の処理コアと一体化されたグラフィックス・プロセッサであってもよい。少なくとも一実施例では、グラフィックス・プロセッサ3400は、メモリにマッピングされたI/Oインターフェースを介して、メモリに入れられたコマンドを用いて、グラフィックス・プロセッサ3400のレジスタと通信する。少なくとも一実施例では、グラフィックス・プロセッサ3400は、メモリにアクセスするためのメモリ・インターフェース3414を含む。少なくとも一実施例では、メモリ・インターフェース3414は、ローカル・メモリ、1つ若しくは複数の内部キャッシュ、1つ若しくは複数の共有外部キャッシュ、及び/又はシステム・メモリへのインターフェースである。
少なくとも一実施例では、グラフィックス・プロセッサ3400はまた、ディスプレイ出力データをディスプレイ・デバイス3420に向けて駆動するためのディスプレイ・コントローラ3402も含む。少なくとも一実施例では、ディスプレイ・コントローラ3402は、ディスプレイ・デバイス3420用の1つ又は複数の重なり平面、及び多層のビデオ若しくはユーザ・インターフェース要素の合成のためのハードウェアを含む。少なくとも一実施例では、ディスプレイ・デバイス3420は、内部又は外部のディスプレイ・デバイスとすることができる。少なくとも一実施例では、ディスプレイ・デバイス3420は、仮想現実(VR)ディスプレイ・デバイス又は拡張現実(AR)ディスプレイ・デバイスなどの頭部装着型ディスプレイ・デバイスである。少なくとも一実施例では、グラフィックス・プロセッサ3400は、MPEG-2などの動画エキスパート・グループ(MPEG)フォーマット、H.264/MPEG-4AVCなどのアドバンスト・ビデオ・コーディング(AVC)フォーマット、並びに映画テレビ技術者協会(SMPTE)421M/VC-1、及びJPEGなどのジョイント・フォトグラフィック・エキスパート・グループ(JPEG)フォーマット、及びモーションJPEG(MJPEG)フォーマットを含むがこれらに限定されない1つ又は複数のメディア符号化フォーマットに、それらのフォーマットから、又はそれらのフォーマット間で、メディアをエンコード、デコード、又はコード変換するためのビデオ・コーデック・エンジン3406を含む。
少なくとも一実施例では、グラフィックス・プロセッサ3400は、たとえばビット境界ブロック転送を含む2次元(2D)ラスターライザ動作を実行するためのブロック画像転送(BLIT)エンジン3404を含む。しかし、少なくとも一実施例では、2Dグラフィックス動作は、グラフィックス処理エンジン(GPE)3410の1つ又は複数の構成要素を使用して実行される。少なくとも一実施例では、GPE3410は、3次元(3D)グラフィックス動作及びメディア動作を含むグラフィックス動作を実行するためのコンピュート・エンジンである。
少なくとも一実施例では、GPE3410は、3Dのプリミティブ形状(たとえば、矩形、三角形など)に作用する処理関数を使用して、3次元画像及びシーンをレンダリングするなど、3D動作を実行するための3Dパイプライン3412を含む。3Dパイプライン3412は、プログラム可能で固定された関数要素を含み、これは、3D/メディア・サブシステム3415に対して様々なタスクを実行し、且つ/又は実行スレッドをスポーンする。3Dパイプライン3412を使用してメディア動作を実行できるが、少なくとも一実施例では、GPE3410は、ビデオの後処理及び画像強調などのメディア動作を実行するために使用されるメディア・パイプライン3416も含む。
少なくとも一実施例では、メディア・パイプライン3416は、ビデオ・コーデック・エンジン3406の代わりに、又はそれを代表して、ビデオ・デコード加速、ビデオ・インターレース解除、及びエンコード加速などの1つ又は複数の特別なメディア動作を実行するための固定機能又はプログラム可能論理ユニットを含む。少なくとも一実施例では、メディア・パイプライン3416は、3D/メディア・サブシステム3415で実行するためのスレッドをスポーンするためのスレッド・スポーニング・ユニットをさらに含む。少なくとも一実施例では、スポーンされたスレッドは、3D/メディア・サブシステム3415に含まれた1つ又は複数のグラフィックス実行ユニット上で、メディア動作のための計算を実行する。
少なくとも一実施例では、3D/メディア・サブシステム3415は、3Dパイプライン3412及びメディア・パイプライン3416によってスポーンされたスレッドを実行するための論理を含む。少なくとも一実施例では、3Dパイプライン3412及びメディア・パイプライン3416は、スレッド実行要求を3D/メディア・サブシステム3415に送信し、この3D/メディア・サブシステム3415は、様々な要求を調停し、利用可能なスレッド実行リソースにディスパッチするためのスレッド・ディスパッチ論理を含む。少なくとも一実施例では、実行リソースは、3D及びメディア・スレッドを処理するためのグラフィックス実行ユニットのアレイを含む。少なくとも一実施例では、3D/メディア・サブシステム3415は、スレッド命令及びデータのための1つ又は複数の内部キャッシュを含む。少なくとも一実施例では、サブシステム3415はまた、スレッド間でデータを共有し、出力データを記憶するための、レジスタ及びアドレス可能メモリを含む共有メモリも含む。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315の一部又はすべてが、グラフィックス・プロセッサ3400に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3412に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図13A又は図13Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3400のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図35は、少なくとも一実施例によるグラフィックス・プロセッサのグラフィックス処理エンジン3510のブロック図である。少なくとも一実施例では、グラフィックス処理エンジン(GPE)3510は、図34に示すGPE3410の1つのバージョンである。少なくとも一実施例では、メディア・パイプライン3416は任意選択であり、GPE3510内に明示的に含まれなくてもよい。少なくとも一実施例では、別個のメディア及び/又は画像のプロセッサが、GPE3510に結合される。
少なくとも一実施例では、GPE3510は、コマンド・ストリーマ3503に結合され、又はそれを含み、このコマンド・ストリーマは、3Dパイプライン3412及び/又はメディア・パイプライン3416にコマンド・ストリームを提供する。少なくとも一実施例では、コマンド・ストリーマ3503はメモリに結合され、このメモリは、システム・メモリであってもよく、又は内部キャッシュ・メモリ及び共有キャッシュ・メモリのうちの1つ若しくは複数であってもよい。少なくとも一実施例では、コマンド・ストリーマ3503は、メモリからコマンドを受信し、3Dパイプライン3412及び/又はメディア・パイプライン3416にコマンドを送信する。少なくとも一実施例では、コマンドは、リング・バッファからフェッチされる命令、プリミティブ、又はマイクロ・オペレーションであり、このリング・バッファは、3Dパイプライン3412及びメディア・パイプライン3416のためのコマンドを記憶する。少なくとも一実施例では、リング・バッファはさらに、複数のコマンドのバッチを記憶するバッチ・コマンド・バッファを含むことができる。少なくとも一実施例では、3Dパイプライン3412用のコマンドはまた、3Dパイプライン3412用の頂点及び形状のデータ、並びに/又はメディア・パイプライン3416用の画像データ及びメモリ・オブジェクトなどであるがこれらに限定されないメモリに記憶されたデータへの参照も含むことができる。少なくとも一実施例では、3Dパイプライン3412及びメディア・パイプライン3416は、演算を実行することにより、又は1つ若しくは複数の実行スレッドをグラフィックス・コア・アレイ3514にディスパッチすることにより、コマンド及びデータを処理する。少なくとも一実施例では、グラフィックス・コア・アレイ3514は、グラフィックス・コア(たとえば、グラフィックス・コア3515A、グラフィックス・コア3515B)の1つ又は複数のブロックを含み、各ブロックは、1つ又は複数のグラフィックス・コアを含む。少なくとも一実施例では、各グラフィックス・コアは、グラフィックス及びコンピュートの動作を実行するための汎用及びグラフィックス専用の実行論理、並びに、図13A及び図13Bの推論及び/又は訓練論理1315を含め、固定機能のテクスチャ処理及び/又は機械学習、及び人工知能の加速論理を含むグラフィックス実行リソースのセットを含む。
少なくとも一実施例では、3Dパイプライン3412は、命令を処理し、実行スレッドをグラフィックス・コア・アレイ3514にディスパッチすることにより、頂点シェーダ、ジオメトリ・シェーダ、ピクセル・シェーダ、フラグメント・シェーダ、コンピュート・シェーダ、又は他のシェーダ・プログラムなどの1つ又は複数のシェーダ・プログラムを処理するための固定機能及びプログラム可能論理を含む。少なくとも一実施例では、グラフィックス・コア・アレイ3514は、シェーダ・プログラムを処理する際に使用するための実行リソースの統合ブロックを提供する。少なくとも一実施例では、グラフィック・コア・アレイ3514のグラフィックス・コア3515A~3515B内の多目的の実行論理(たとえば、実行ユニット)は、様々な3DのAPIシェーダ言語のサポートを含み、複数のシェーダに関連付けられた複数の同時実行スレッドを実行することができる。
少なくとも一実施例では、グラフィックス・コア・アレイ3514はまた、ビデオ及び/又は画像の処理など、メディア機能を実行するための実行論理も含む。少なくとも一実施例では、実行ユニットはさらに、グラフィックス処理動作に加えて並列の汎用計算動作を実行するようにプログラム可能な汎用論理を含む。
少なくとも一実施例では、グラフィックス・コア・アレイ3514上で実行しているスレッドにより生成される出力データは、統合リターン・バッファ(URB)3518のメモリにデータを出力することができる。URB3518は、複数のスレッド用のデータを記憶することができる。少なくとも一実施例では、グラフィックス・コア・アレイ3514上で実行している異なるスレッド間でデータを送信するために、URB3518を使用してもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3514上のスレッドと、共有機能論理3520内の固定機能論理との間の同期のために、URB3518がさらに使用されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3514はスケーラブルであり、それにより、グラフィックス・コア・アレイ3514は、可変数のグラフィックス・コアを含み、それぞれのグラフィックス・コアが、GPE3510の目的とする電力及び性能のレベルに基づき可変数の実行ユニットを有する。少なくとも一実施例では、実行リソースは動的にスケーラブルであり、それにより実行リソースは、必要に応じて有効化又は無効化されてもよい。
少なくとも一実施例では、グラフィックス・コア・アレイ3514は、グラフィックス・コア・アレイ3514のグラフィックス・コア間で共有される複数のリソースを含む共有機能論理3520に結合される。少なくとも一実施例では、共有機能論理3520によって実行される共有機能は、専用の補足機能をグラフィックス・コア・アレイ3514に提供するハードウェア論理ユニットに具体化される。少なくとも一実施例では、共有機能論理3520は、サンプラ3521、数理3522、及びスレッド間通信(ITC)3523の論理を含むが、これらに限定されない。少なくとも一実施例では、1つ又は複数のキャッシュ3525が、共有機能論理3520にイン含まれ、又はそれに結合される。
少なくとも一実施例では、専用機能の需要が不十分でグラフィックス・コア・アレイ3514内に含められない場合に、共有機能が使用される。少なくとも一実施例では、専用機能を1つにインスタンス化したものが、共有機能論理3520において使用され、グラフィックス・コア・アレイ3514内の他の実行リソース間で共有される。少なくとも一実施例では、共有機能論理3520内の、グラフィックス・コア・アレイ3514によってのみ使用される特定の共有機能は、グラフィックス・コア・アレイ3514内の共有機能論理3516内に含まれてもよい。少なくとも一実施例では、グラフィックス・コア・アレイ3514内の共有機能論理3516は、共有機能論理3520内の一部又はすべての論理を含むことができる。少なくとも一実施例では、共有機能論理3520内のすべての論理要素は、グラフィックス・コア・アレイ3514の共有機能論理3516内で複製されてもよい。少なくとも一実施例では、共有機能論理3520は、グラフィックス・コア・アレイ3514内の共有機能論理3516に有利なように除外される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315の一部又はすべてが、グラフィックス・プロセッサ3510に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3412、グラフィックス・コア3515A、共有機能論理3516、グラフィックス・コア3515B、共有機能論理3520、又は図35の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図13A又は図13Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3510のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図36は、本明細書に記載の少なくとも一実施例によるグラフィックス・プロセッサ・コア3600のハードウェア論理のブロック図である。少なくとも一実施例では、グラフィックス・プロセッサ・コア3600は、グラフィックス・コア・アレイ内に含まれる。少なくとも一実施例では、コア・スライスと呼ばれることもあるグラフィックス・プロセッサ・コア3600は、モジュール式グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアとすることができる。少なくとも一実施例では、グラフィックス・プロセッサ・コア3600は、1つのグラフィックス・コア・スライスの例示であり、本明細書に記載のグラフィックス・プロセッサは、目的の電力及び性能のエンベロープに基づき、複数のグラフィックス・コア・スライスを含んでもよい。少なくとも一実施例では、各グラフィックス・コア3600は、汎用及び固定の機能論理のモジュール式ブロックを含むサブ・スライスとも呼ばれる複数のサブ・コア3601A~3601Fに結合された固定機能ブロック3630を含むことができる。
少なくとも一実施例では、固定機能ブロック3630は、たとえば低性能及び/又は低電力のグラフィックス・プロセッサ実装形態において、グラフィックス・プロセッサ3600内のすべてのサブ・コアが共有できるジオメトリ/固定機能パイプライン3636を含む。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3636は、3D固定機能パイプライン、ビデオ・フロント・エンド・ユニット、スレッド・スポーナ(spawner)及びスレッド・ディスパッチャ、並びに統合リターン・バッファを管理する統合リターン・バッファ・マネージャを含む。
少なくとも一実施例では、固定機能ブロック3630はまた、グラフィックスSoCインターフェース3637、グラフィックス・マイクロコントローラ3638、及びメディア・パイプライン3639を含む。グラフィックスSoCインターフェース3637は、グラフィックス・コア3600と、システム・オン・チップ集積回路内の他のプロセッサ・コアとのインターフェースを提供する。少なくとも一実施例では、グラフィックス・マイクロコントローラ3638は、スレッド・ディスパッチ、スケジューリング、及びプリエンプションを含め、グラフィックス・プロセッサ3600の様々な機能を管理するように構成可能なプログラム可能サブ・プロセッサである。少なくとも一実施例では、メディア・パイプライン3639は、画像及びビデオのデータを含むマルチメディア・データのデコーディング、エンコーディング、前処理、及び/又は後処理を容易にする論理を含む。少なくとも一実施例では、メディア・パイプライン3639は、サブ・コア3601~3601F内のコンピュート論理又はサンプリング論理への要求を介して、メディア動作を実装する。
少なくとも一実施例では、SoCインターフェース3637は、汎用アプリケーション・プロセッサ・コア(たとえば、CPU)、及び/又はSoC内の他の構成要素と、グラフィックス・コア3600が通信できるようにし、SoC内の他の構成要素には、共有ラスト・レベル・キャッシュ・メモリ、システムRAM、及び/又は組み込みオン・チップ若しくはオン・パッケージのDRAMなどのメモリ階層要素が含まれる。少なくとも一実施例では、SoCインターフェース3637はまた、カメラ・イメージング・パイプラインなど、SoC内の固定機能デバイスとの通信を可能にし、グラフィックス・コア3600とSoC内のCPUとの間で共有することができるグローバル・メモリ・アトミックの使用を可能にし、且つ/又はそれを実装する。少なくとも一実施例では、SoCインターフェース3637はまた、グラフィックス・コア3600の電力管理制御を実装することができ、グラフィックス・コア3600のクロック・ドメインと、SoC内の他のクロック・ドメインとの間でインターフェースをとれるようにする。少なくとも一実施例では、SoCインターフェース3637は、グラフィックス・プロセッサ内の1つ又は複数のグラフィックス・コアのそれぞれにコマンド及び命令を提供するように構成されたコマンド・ストリーマ及びグローバル・スレッド・ディスパッチャから、コマンド・バッファを受信できるようにする。少なくとも一実施例では、コマンド及び命令は、メディア動作が実行されるときにはメディア・パイプライン3639にディスパッチされることが可能であり、又はグラフィックス処理動作が実行されるときには、ジオメトリ及び固定機能パイプライン(たとえば、ジオメトリ及び固定機能パイプライン3636、ジオメトリ及び固定機能パイプライン3614)にディスパッチされることが可能である。
少なくとも一実施例では、グラフィックス・マイクロコントローラ3638は、グラフィックス・コア3600のための様々なスケジューリング及び管理タスクを実行するように構成されることが可能である。少なくとも一実施例では、グラフィックス・マイクロコントローラ3638は、サブ・コア3601A~3601F内の実行ユニット(EU:execution unit)アレイ3602A~3602F、3604A~3604F内の様々なグラフィックス並列エンジンで、グラフィックスを実行し、且つ/又はワークロードのスケジューリングをコンピュートすることができる。少なくとも一実施例では、グラフィックス・コア3600を含むSoCのCPUコア上で実行されているホスト・ソフトウェアは、複数のグラフィックス・プロセッサ・ドアベルのうちの1つにワークロードを送出することができ、このドアベルが、適切なグラフィックス・エンジンに対するスケジューリング動作を呼び出す。少なくとも一実施例では、スケジューリング動作は、どのワークロードを次に実行すべきかを判定すること、コマンド・ストリーマにワークロードを送出すること、エンジン上で実行されている既存のワークロードをプリエンプションすること、ワークロードの進行を管理すること、及びワークロードが完了したときにホスト・ソフトウェアに通知することを含む。少なくとも一実施例では、グラフィックス・マイクロコントローラ3638はまた、グラフィックス・コア3600の低電力又はアイドル状態を促進して、オペレーティング・システム及び/又はシステム上のグラフィックス・ドライバ・ソフトウェアとは無関係に、低電力状態の移行全体にわたってグラフィックス・コア3600内のレジスタを保存及び復元する機能をグラフィックス・コア3600に提供することができる。
少なくとも一実施例では、グラフィックス・コア3600は、図示してあるサブ・コア3601A~3601Fより多くの、又はそれより少ない、N個までのモジュール式サブ・コアを有してもよい。N個のサブ・コアのセットごとに、少なくとも一実施例では、グラフィックス・コア3600はまた、共有機能論理3610、共有及び/又はキャッシュ・メモリ3612、ジオメトリ/固定機能パイプライン3614、並びに様々なグラフィックスを加速し、処理動作をコンピュートするための追加の固定機能論理3616を含むことができる。少なくとも一実施例では、共有機能論理3610は、グラフィックス・コア3600内の各N個のサブ・コアが共有できる論理ユニット(たとえば、サンプラ、数理、及び/又はスレッド間通信の論理)を含むことができる。共有の、及び/又はキャッシュのメモリ3612は、グラフィックス・コア3600内のN個のサブ・コア3601A~3601Fのためのラスト・レベル・キャッシュとすることができ、また、複数のサブ・コアがアクセスできる共有メモリとしての役割も果たすことができる。少なくとも一実施例では、ジオメトリ/固定機能パイプライン3614は、固定機能ブロック3630内のジオメトリ/固定機能パイプライン3636の代わりに含まれてもよく、同じ又は同様の論理ユニットを含むことができる。
少なくとも一実施例では、グラフィックス・コア3600は、グラフィックス・コア3600が使用するための様々な固定機能加速論理を含むことができる追加の固定機能論理3616を含む。少なくとも一実施例では、追加の固定機能論理3616は、位置限定シェーディング(position only shading)に使用するための追加のジオメトリ・パイプラインを含む。位置限定シェーディングでは、少なくとも2つのジオメトリ・パイプラインが存在しているが、ジオメトリ/固定機能パイプライン3616、3636内の完全ジオメトリ・パイプラインと選別パイプライン(cull pipeline)においてであり、この選別パイプラインは、追加の固定機能論理3616内に含まれてもよい追加のジオメトリ・パイプラインである。少なくとも一実施例では、選別パイプラインは、完全ジオメトリ・パイプラインの縮小版である。少なくとも一実施例では、完全パイプライン及び選別パイプラインは、アプリケーションの異なるインスタンスを実行することができ、各インスタンスは別個のコンテキストを有する。少なくとも一実施例では、位置限定シェーディングは、切り捨てられた三角形の長い選別ランを隠すことができ、いくつかのインスタンスにおいてシェーディングを早く完了させることができる。たとえば、少なくとも一実施例では、選別パイプラインは、ピクセルをフレーム・バッファにラスタ化及びレンダリングすることなく、頂点の位置属性をフェッチしシェーディングするので、追加の固定機能論理3616内の選別パイプライン論理は、メイン・アプリケーションと並列で位置シェーダを実行することができ、完全パイプラインよりも全体的に早く臨界結果(critical result)を生成する。少なくとも一実施例では、選別パイプラインは、生成された臨界結果を使用して、すべての三角形について、これらの三角形が選別されているかどうかに関わらず、可視性情報をコンピュートすることができる。少なくとも一実施例では、(このインスタンスではリプレイ・パイプラインと呼ばれてもよい)完全パイプラインは、可視性情報を消費して、選別された三角形を飛ばして可視三角形だけをシェーディングすることができ、この可視性三角形が、最終的にラスタ化フェーズに渡される。
少なくとも一実施例では、追加の固定機能論理3616はまた、機械学習の訓練又は推論の最適化を含む実装形態のために、固定機能の行列乗算論理など、機械学習の加速論理を含むことができる。
少なくとも一実施例では、各グラフィックス・サブ・コア3601A~3601F内において、実行リソースのセットを含み、このセットは、グラフィックス・パイプライン、メディア・パイプライン、又はシェーダ・プログラムからの要求に応答して、グラフィックス動作、メディア動作、及びコンピュート動作を実行するために使用されてもよい。少なくとも一実施例では、グラフィックス・サブ・コア3601A~3601Fは、複数のEUアレイ3602A~3602F、3604A~3604F、スレッド・ディスパッチ及びスレッド間通信(TD/IC:thread dispatch and inter-thread communication)論理3603A~3603F、3D(たとえば、テクスチャ)サンプラ3605A~3605F、メディア・サンプラ3606A~3606F、シェーダ・プロセッサ3607A~3607F、及び共有ローカル・メモリ(SLM:shared local memory)3608A~3608Fを含む。EUアレイ3602A~3602F、3604A~3604Fはそれぞれ、複数の実行ユニットを含み、これらは、グラフィックス、メディア、又はコンピュート・シェーダ・プログラムを含むグラフィックス動作、メディア動作、又はコンピュート動作のサービスにおいて浮動小数点及び整数/固定小数点の論理演算を実行することができる汎用グラフィックス・プロセッシング・ユニットである。少なくとも一実施例では、TD/IC論理3603A~3603Fは、サブ・コア内の実行ユニットのためのローカル・スレッド・ディスパッチ及びスレッド制御動作を実行し、サブ・コアの実行ユニット上で実行されているスレッド間の通信を容易にする。少なくとも一実施例では、3Dサンプラ3605A~3605Fは、テクスチャ又は他の3Dグラフィックス関連のデータをメモリに読み取ることができる。少なくとも一実施例では、3Dサンプラは、所与のテクスチャに関連付けられた構成済みサンプル状態及びテクスチャ・フォーマットに基づき、テクスチャ・データを異なるやり方で読み取ることができる。少なくとも一実施例では、メディア・サンプラ3606A~3606Fは、メディア・データに関連付けられたタイプ及びフォーマットに基づき、同様の読取り動作を実行することができる。少なくとも一実施例では、各グラフィックス・サブ・コア3601A~3601Fは、代替的に3Dとメディアの統合サンプラを含むことができる。少なくとも一実施例では、各サブ・コア3601A~3601F内の実行ユニット上で実行しているスレッドは、スレッド・グループ内で実行しているスレッドが、オン・チップ・メモリの共通プールを使用して実行できるようにするために、各サブ・コア内の共有ローカル・メモリ3608A~3608Fを利用することができる。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315の一部又はすべてが、グラフィックス・プロセッサ3610に組み込まれてもよい。たとえば、少なくとも一実施例では、本明細書に記載の訓練及び/又は推論の技法は、3Dパイプライン3610、グラフィックス・マイクロコントローラ3638、ジオメトリ及び固定機能パイプライン3614及び3636、又は図33の他の論理に具体化されたALUのうちの1つ又は複数を使用してもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図13A又は図13Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するためのグラフィックス・プロセッサ3600のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図37A~図37Bは、少なくとも一実施例による、グラフィックス・プロセッサ・コアの処理要素のアレイを含むスレッド実行論理3700を示す。図37Aは、スレッド実行論理3700が使用される少なくとも一実施例を示す。図37Bは、少なくとも一実施例による、実行ユニットの例示的な内部詳細事項を示す図である。
図37Aに示すように、少なくとも一実施例では、スレッド実行論理3700は、シェーダ・プロセッサ3702、スレッド・ディスパッチャ3704、命令キャッシュ3706、複数の実行ユニット3708A~3708Nを含むスケーラブル実行ユニット・アレイ、サンプラ3710、データ・キャッシュ3712、及びデータ・ポート3714を含む。少なくとも一実施例では、スケーラブル実行ユニット・アレイは、1つ又は複数の実行ユニット(たとえば、実行ユニット3708A、3708B、3708C、3708D~3708N-1、及び3708Nのうちのいずれか)を、たとえばワークロードの計算要件に基づき有効又は無効にすることによって、動的に拡大縮小することができる。少なくとも一実施例では、スケーラブル実行ユニットは、実行ユニットのそれぞれにリンクされる相互接続ファブリックを介して相互接続される。少なくとも一実施例では、スレッド実行論理3700は、命令キャッシュ3706、データ・ポート3714、サンプラ3710、及び実行ユニット3708A~3708Nのうちの1つ又は複数を介した、システム・メモリ又はキャッシュ・メモリなどのメモリへの1つ又は複数の接続を含む。少なくとも一実施例では、各実行ユニット(たとえば、3708A)は、スレッドごとに複数のデータ要素を並列で処理しながら、複数の同時のハードウェア・スレッドを実行することができるスタンドアロンのプログラム可能な汎用計算ユニットである。少なくとも一実施例では、実行ユニット3708A~3708Nのアレイは、任意の数の個々の実行ユニットを含むように拡大縮小可能である。
少なくとも一実施例では、実行ユニット3708A~3708Nは、シェーダ・プログラムを実行するために主に使用される。少なくとも一実施例では、シェーダ・プロセッサ3702は、様々なシェーダ・プログラムを処理し、シェーダ・プログラムに関連付けられた実行スレッドを、スレッド・ディスパッチャ3704を介してディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3704は、グラフィックス及びメディア・パイプラインからのスレッド開始要求を調停し、要求されたスレッドを、実行ユニット3708A~3708Nの1つ又は複数の実行ユニット上でインスタンス化するための論理を含む。たとえば、少なくとも一実施例では、ジオメトリ・パイプラインは、頂点シェーダ、モザイク・シェーダ、又はジオメトリ・シェーダを、処理できるようにスレッド実行論理にディスパッチすることができる。少なくとも一実施例では、スレッド・ディスパッチャ3704はまた、実行しているシェーダ・プログラムからのラン・タイム・スレッド・スポーニング要求(spawning request)を処理することができる。
少なくとも一実施例では、実行ユニット3708A~3708Nは、多くの標準的な3Dグラフィックス・シェーダ命令のネイティブ・サポートを含む命令セットをサポートし、それにより、グラフィックス・ライブラリ(たとえば、Direct3D及びOpenGL)からのシェーダ・プログラムが、最小のトランスレーションで実行される。少なくとも一実施例では、実行ユニットは、頂点及びジオメトリの処理(たとえば、頂点プログラム、ジオメトリ・プログラム、頂点シェーダ)、ピクセル処理(たとえば、ピクセル・シェーダ、フラグメント・シェーダ)、及び汎用処理(たとえば、コンピュート及びメディアのシェーダ)をサポートする。少なくとも一実施例では、1つ又は複数の算術論理演算ユニット(ALU)を含む各実行ユニット3708A~3708Nのそれぞれは、単一命令複数データ(SIMD)の実行を複数発行することができ、マルチスレッド化された動作によって、メモリ・アクセスのレイテンシが高いにもかかわらず、効率的な実行環境が可能になる。少なくとも一実施例では、各実行ユニット内の各ハードウェア・スレッドは、専用の高帯域幅レジスタ・ファイル及び関連する独立したスレッド状態を有する。少なくとも一実施例では、実行は、整数演算、単精度及び倍精度の浮動小数点演算、SIMDブランチ性能、論理演算、超越演算、及び他の種々の演算を行うことができるパイプラインに対して、クロック当たり複数発行される。少なくとも一実施例では、メモリ、又は共有機能のうちの1つからのデータを待機している間に、実行ユニット3708A~3708N内の従属論理は、要求したデータが戻されるまで、待機スレッドをスリープ状態にする。少なくとも一実施例では、待機スレッドがスリープ状態の間に、ハードウェア・リソースは他のスレッドの処理に専念してもよい。たとえば、少なくとも一実施例では、頂点シェーダ動作に関連する遅延中に、実行ユニットは、ピクセル・シェーダ、フラグメント・シェーダ、又は異なる頂点シェーダを含む別のタイプのシェーダ・プログラムを実行することができる。
少なくとも一実施例では、実行ユニット3708A~3708Nの各実行ユニットは、データ要素のアレイに対して動作する。少なくとも一実施例では、データ要素の数は「実行サイズ」であり、又は命令に対するチャネルの数である。少なくとも一実施例では、実行チャネルは、データ要素のアクセス、マスキング、及び命令内のフロー制御に関する実行の論理ユニットである。少なくとも一実施例では、チャネルの数は、特定のグラフィックス・プロセッサのための物理的な算術論理演算ユニット(ALU)又は浮動小数点ユニット(FPU)の数とは無関係であってもよい。少なくとも一実施例では、実行ユニット3708A~3708Nは、整数及び浮動小数点のデータ・タイプをサポートしてもよい。
少なくとも一実施例では、実行ユニット命令セットは、SIMD命令を含む。少なくとも一実施例では、様々なデータ要素が、パック・データ・タイプとしてレジスタに記憶されてもよく、実行ユニットは、要素のデータ・サイズに基づき様々な要素を処理する。たとえば、少なくとも一実施例では、256ビット幅ベクトルで動作しているとき、ベクトルの256ビットがレジスタに記憶され、実行ユニットは、4個の別々の64ビット・パック・データ要素(クワッド・ワード(QW:Quad-Word)サイズのデータ要素)、8個の別々の32ビット・パック・データ要素(ダブル・ワード(DW:Double Word)サイズのデータ要素)、16個の別々の16ビット・パック・データ要素(ワード(W:Word)サイズのデータ要素)、又は32個の別々の8ビット・データ要素(バイト(B:byte)サイズのデータ要素)としてベクトル上で動作する。しかし少なくとも一実施例では、異なるベクトル幅及びレジスタサイズが考えられる。
少なくとも一実施例では、1つ又は複数の実行ユニットを組み合わせて、融合EUに共通したスレッド制御論理(3707A~3707N)を有する融合実行ユニット(fused execution unit)3709A~3709Nにすることができる。少なくとも一実施例では、複数のEUを融合して、EUグループにすることができる。少なくとも一実施例では、融合EUグループの各EUは、別々のSIMDハードウェア・スレッドを実行するように構成されることが可能である。融合EUグループのEUの数は、様々な実施例に応じて異なってもよい。少なくとも一実施例では、SIMD8、SIMD16、及びSIMD32を含むがこれに限定されない様々なSIMD幅を、EUごとに実行することができる。少なくとも一実施例では、各融合グラフィックス実行ユニット3709A~3709Nは、少なくとも2つの実行ユニットを含む。たとえば、少なくとも一実施例では、融合実行ユニット3709Aは、第1のEU3708A、第2のEU3708B、及び第1のEU3708Aと第2のEU3708Bに共通のスレッド制御論理3707Aを含む。少なくとも一実施例では、スレッド制御論理3707Aは、融合グラフィックス実行ユニット3709Aで実行されているスレッドを制御して、融合実行ユニット3709A~3709N内の各EUを、共通の命令ポインタ・レジスタを使用して実行できるようにする。
少なくとも一実施例では、1つ又は複数の内部命令キャッシュ(たとえば、3706)は、実行ユニットに対するスレッド命令をキャッシュするためにスレッド実行論理3700に含まれる。少なくとも一実施例では、1つ又は複数のデータ・キャッシュ(たとえば、3712)は、スレッド実行中にスレッド・データをキャッシュするために含まれる。少なくとも一実施例では、サンプラ3710は、3D動作のためのテクスチャ・サンプリング、及びメディア動作のためのメディア・サンプリングを実行するために含まれる。少なくとも一実施例では、サンプラ3710は、特別なテクスチャ又はメディア・サンプリング機能を含み、サンプリングされたデータを実行ユニットに提供する前に、サンプリング処理中にテクスチャ又はメディアのデータを処理する。
実行中、少なくとも一実施例では、グラフィックス及びメディア・パイプラインは、スレッド開始要求を、スレッド・スポーニング及びディスパッチ論理を介してスレッド実行論理3700に送る。少なくとも一実施例では、幾何学的物体のグループが処理され、ピクセル・データにラスタ化されたら、シェーダ・プロセッサ3702内のピクセル・プロセッサ論理(たとえば、ピクセル・シェーダ論理、フラグメント・シェーダ論理など)が呼び出されて、出力情報をさらにコンピュートし、結果を出力面(たとえば、色バッファ、深度バッファ、ステンシル・バッファなど)に書き込ませる。少なくとも一実施例では、ピクセル・シェーダ又はフラグメント・シェーダは、ラスタ化された物体間で補間されることになる様々な頂点属性の値を計算する。少なくとも一実施例では、次いで、シェーダ・プロセッサ3702内のピクセル・プロセッサ論理が、アプリケーション・プログラミング・インターフェース(API)付きのピクセル・シェーダ・プログラム又はフラグメント・シェーダ・プログラムを実行する。少なくとも一実施例では、シェーダ・プログラムを実行するために、シェーダ・プロセッサ3702は、スレッド・ディスパッチャ3704を介してスレッドを実行ユニット(たとえば、3708A)にディスパッチする。少なくとも一実施例では、シェーダ・プロセッサ3702は、サンプラ3710のテクスチャ・サンプリング論理を使用して、メモリに記憶されたテクスチャ・マップのテクスチャ・データにアクセスする。少なくとも一実施例では、テクスチャ・データ及び入力ジオメトリ・データに対する算術演算によって、各ジオメトリ・フラグメントのピクセル色データがコンピュートされ、又はさらに処理されないように1つ又は複数のピクセルが切り捨てられる。
少なくとも一実施例では、データ・ポート3714は、スレッド実行論理3700のためのメモリ・アクセス機構を提供して、処理済みデータを、グラフィックス・プロセッサ出力パイプラインでさらに処理できるようにメモリに出力する。少なくとも一実施例では、データ・ポート3714は、1つ又は複数のキャッシュ・メモリ(たとえば、データ・キャッシュ3712)を含み、又はそれに結合されて、データ・ポートを介したメモリ・アクセスのためのデータをキャッシュする。
図37Bに示してあるように、少なくとも一実施例では、グラフィック実行ユニット3708は、命令フェッチ・ユニット3737、汎用レジスタ・ファイル・アレイ(GRF:general register file array)3724、アーキテクチャ・レジスタ・ファイル・アレイ(ARF)3726、スレッド調停装置(arbiter)3722、送信ユニット3730、ブランチ・ユニット3732、SIMD浮動小数点ユニット(FPU)3734のセット、及び少なくとも一実施例では、専用整数SIMD ALU3735のセットを含むことができる。少なくとも一実施例では、GRF3724及びARF3726は、各同時ハードウェア・スレッドに関連付けられた汎用レジスタ・ファイルとアーキテクチャ・レジスタ・ファイルのセットを含み、このハードウェア・スレッドは、グラフィックス実行ユニット3708においてアクティブであってもよい。少なくとも一実施例では、スレッドごとのアーキテクチャ状態が、ARF3726において維持され、スレッド実行中に使用されるデータが、GRF3724に記憶される。少なくとも一実施例では、各スレッドに対する命令ポインタを含む各スレッドの実行状態は、ARF3726のスレッド専用レジスタに保持することが可能である。
少なくとも一実施例では、グラフィックス実行ユニット3708は、同時マルチスレッディング(SMT:Simultaneous Multi-Threading)と微細化インターリーブ・マルチスレッディング(IMT:Interleaved Multi-Threading)の組合せであるアーキテクチャを有する。少なくとも一実施例では、アーキテクチャは、実行ユニット当たりの同時スレッドのターゲット数及びレジスタ数に基づき設計時に微調整することができるモジュール式構成を有し、ここで実行ユニットのリソースは、複数の同時スレッドを実行するために使用される論理にわたって分割される。
少なくとも一実施例では、グラフィックス実行ユニット3708は複数の命令を共同発行することができ、この命令は、それぞれ異なる命令であってもよい。少なくとも一実施例では、グラフィックス実行ユニット・スレッド3708のスレッド調停装置3722は、送信ユニット3730、ブランチ・ユニット3742、又はSIMD FPU3734のうちの1つに命令をディスパッチして実行できるようにすることができる。少なくとも一実施例では、各実行スレッドは、GRF3724内の128個の汎用レジスタにアクセスすることができ、ここで各レジスタは、32ビットのデータ要素のSIMD8要素のベクトルとしてアクセス可能な32バイトを記憶することができる。少なくとも一実施例では、各実行ユニット・スレッドは、GRF3724内の4Kバイトにアクセスすることができるが、実施例はこのように限定されず、他の実施例ではより多くの、又はより少ないリソースが提供されてもよい。少なくとも一実施例では、最大7個のスレッドを同時に実行できるが、実行ユニット当たりのスレッド数も、実施例に応じて変えることができる。7個のスレッドが4Kバイトにアクセスできる少なくとも一実施例では、GRF3724は、合計28Kバイトを記憶することができる。少なくとも一実施例では、フレキシブルなアドレッシング・モードにより、複数のレジスタがともにアドレスされてより幅広いレジスタを構築したり、ストライド設定された矩形ブロック・データ構造を表したりできるようにすることができる。
少なくとも一実施例では、メモリ動作、サンプラ動作、及び他のレイテンシの長いシステム通信は、メッセージ引渡し送信ユニット3730によって実行される「送信」命令を介してディスパッチされる。少なくとも一実施例では、ブランチ命令は、SIMDの発散及び最終的な収束を容易にするために、専用のブランチ・ユニット3732にディスパッチされる。
少なくとも一実施例では、グラフィックス実行ユニット3708は、浮動小数点演算を実行するための1つ又は複数のSIMD浮動小数点ユニット(FPU)3734を含む。少なくとも一実施例では、FPU3734は、整数計算もサポートする。少なくとも一実施例ではFPU3734は、最大M個の32ビット浮動小数点(若しくは整数)演算をSIMDで実行し、又は最大で2M個の16ビット整数演算、若しくは16ビット浮動小数点演算をSIMDで実行することができる。少なくとも一実施例では、FPUのうちの少なくとも1つは、拡張数理機能を提供して、高スループットの超越数理関数、及び倍精度の64ビット浮動小数点をサポートする。少なくとも一実施例では、8ビットの整数SIMD ALU3735のセットも存在し、機械学習計算に関連する動作を実行するように特に最適化されてもよい。
少なくとも一実施例では、グラフィックス実行ユニット3708の複数のインスタンスのアレイが、グラフィックス・サブ・コア・グループ(たとえば、サブ・スライス)においてインスタンス化されてもよい。少なくとも一実施例では、実行ユニット3708は、複数の実行チャネルにわたって命令を実行することができる。少なくとも一実施例では、グラフィックス実行ユニット3708で実行される各スレッドは、異なるチャネルで実行される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、推論及び/又は訓練論理1315の一部又はすべてが、実行論理3700に組み込まれてもよい。さらに、少なくとも一実施例では、本明細書に記載の推論及び/又は訓練の動作は、図13A又は図13Bに示す論理以外の論理を使用して行われてもよい。少なくとも一実施例では、重みパラメータは、本明細書に記載の1つ又は複数の機械学習アルゴリズム、ニューラル・ネットワーク・アーキテクチャ、ユース・ケース、又は訓練技法を実行するための実行論理3700のALUを構成するオン・チップ若しくはオフ・チップのメモリ及び/又はレジスタ(図示する又は図示せず)に記憶されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図38は、少なくとも一実施例による並列処理ユニット(「PPU」)3800を示す。少なくとも一実施例では、PPU3800は、PPU3800によって実行された場合に、本開示全体を通して記載するプロセス及び技法の一部又はすべてを、PPU3800に実行させる機械可読コードで構成される。少なくとも一実施例では、PPU3800はマルチスレッド・プロセッサであり、このプロセッサは、1つ又は複数の集積回路デバイスに実装され、コンピュータ可読命令(機械可読命令若しくは単に命令とも呼ばれる)を、複数のスレッドで並列に処理するように設計されたレイテンシ隠蔽技法としてマルチスレッディングを利用する。少なくとも一実施例では、スレッドとは、実行スレッドを指し、PPU3800によって実行されるように構成された命令のセットをインスタンス化したものである。少なくとも一実施例では、PPU3800は、液晶ディスプレイ(「LCD」)デバイスなどのディスプレイ・デバイスに表示できるように2次元(「2D」)画像データを生成するために、3次元(「3D」)グラフィックス・データを処理するためのグラフィックス・レンダリング・パイプラインを実装するように構成されたグラフィックス・プロセッシング・ユニット(「GPU」)である。少なくとも一実施例では、PPU3800を利用して、線形代数演算及び機械学習演算などの計算が実行される。図38は、単に例示を目的とした例示的な並列プロセッサを示しており、本開示の範囲内で企図されるプロセッサ・アーキテクチャの非限定的な例として解釈されるべきであり、同プロセッサに追加するため、且つ/又はそれを置き換えるために、任意の好適なプロセッサが利用されてもよいことが解釈されるべきである。
少なくとも一実施例では、1つ又は複数のPPU3800は、高性能コンピューティング(「HPC」:High Performance Computing)、データ・センタ、及び機械学習のアプリケーションを加速するように構成される。少なくとも一実施例では、PPU3800は、以下の非限定的な例を含む深層学習システム及びアプリケーションを加速するように構成される:自律車両プラットフォーム、深層学習、高精度音声、画像、テキスト認識システム、インテリジェント・ビデオ分析、分子シミュレーション、創薬、病気診断、天気予報、ビッグ・データ分析、天文学、分子動態シミュレーション、金融モデリング、ロボット工学、工場自動化、リアル・タイム言語翻訳、オンライン検索最適化、及び個別化ユーザ推奨など。
少なくとも一実施例では、PPU3800は、限定することなく、入力/出力(「I/O」)ユニット3806、フロント・エンド・ユニット3810、スケジューラ・ユニット3812、ワーク分配ユニット3814、ハブ3816、クロスバー(「Xbar」:crossbar)3820、1つ又は複数の汎用処理クラスタ(「GPC」:general processing cluster)3818、及び1つ又は複数のパーティション・ユニット(「メモリ・パーティション・ユニット」)3822を含む。少なくとも一実施例では、PPU3800は、1つ又は複数の高速GPU相互接続(「GPU相互接続」)3808を介してホスト・プロセッサ又は他のPPU3800に接続される。少なくとも一実施例では、PPU3800は、相互接続3802を介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、PPU3800は、1つ又は複数のメモリ・デバイス(「メモリ」)3804を備えるローカル・メモリに接続される。少なくとも一実施例では、メモリ・デバイス3804は、限定することなく、1つ又は複数のダイナミック・ランダム・アクセス・メモリ(「DRAM」)デバイスを含む。少なくとも一実施例では、1つ又は複数のDRAMデバイスは、複数のDRAMダイが各デバイス内で積層された高帯域幅メモリ(「HBM」)サブシステムとして構成されても、且つ/又は構成可能であってもよい。
少なくとも一実施例では、高速GPU相互接続3808は、有線ベースのマルチ・レーン通信リンクを指してもよく、このリンクは、拡張縮小するためにシステムによって使用され、1つ又は複数の中央処理装置(「CPU」)と組み合わされた1つ又は複数のPPU3800を含み、PPU3800とCPUとの間のキャッシュ・コヒーレンス、及びCPUマスタリングをサポートする。少なくとも一実施例では、データ及び/又はコマンドは、高速GPU相互接続3808により、ハブ3816を介して、1つ又は複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニット、及び図38に明示されていないこともある他の構成要素などのPPU3800の別のユニットに/から送信される。
少なくとも一実施例では、I/Oユニット3806は、システム・バス3802を介してホスト・プロセッサ(図38には示さず)から通信(たとえば、コマンド、データ)を送受信するように構成される。少なくとも一実施例では、I/Oユニット3806は、システム・バス3802を介して直接、又は1つ若しくは複数の、メモリ・ブリッジなどの中間デバイスを介して、ホスト・プロセッサと通信する。少なくとも一実施例では、I/Oユニット3806は、システム・バス3802を介してPPU3800のうちの1つ又は複数などの1つ又は複数の他のプロセッサと通信してもよい。少なくとも一実施例では、I/Oユニット3806は、ペリフェラル・コンポーネント・インターコネクト・エクスプレス(「PCIe」)インターフェースを実装して、PCIeバスを介して通信できるようにする。少なくとも一実施例では、I/Oユニット3806は、外部デバイスと通信するためのインターフェースを実装する。
少なくとも一実施例では、I/Oユニット3806は、システム・バス3802を介して受信したパケットをデコードする。少なくとも一実施例では、少なくともいくつかのパケットは、PPU3800に様々な動作を実行させるように構成されたコマンドを表す。少なくとも一実施例では、I/Oユニット3806は、デコードされたコマンドを、コマンドによって指定されるPPU3800の様々な他のユニットに送信する。少なくとも一実施例では、コマンドは、フロント・エンド・ユニット3810に送信され、且つ/又はハブ3816、若しくは(図38には明示していない)1つ若しくは複数のコピー・エンジン、ビデオ・エンコーダ、ビデオ・デコーダ、電力管理ユニットなどのPPU3800の他のユニットに送信される。少なくとも一実施例では、I/Oユニット3806はPPU3800の様々な論理ユニット間で、通信をルーティングするように構成される。
少なくとも一実施例では、ホスト・プロセッサによって実行されるプログラムは、ワークロードをPPU3800に提供して処理できるようにするバッファにおいて、コマンド・ストリームをエンコードする。少なくとも一実施例では、ワークロードは、命令と、これらの命令によって処理されることになるデータとを含む。少なくとも一実施例では、バッファは、ホスト・プロセッサとPPU3800の両方がアクセス(たとえば、書込み/読取り)可能なメモリ内の領域であり、ホスト・インターフェース・ユニットは、I/Oユニット3806によってシステム・バス3802を介して送信されるメモリ要求を介して、システム・バス3802に接続されたシステム・メモリ内のバッファにアクセスするように構成されてもよい。少なくとも一実施例では、ホスト・プロセッサは、バッファにコマンド・ストリームを書き込み、次いでコマンド・ストリームの開始点を指すポインタをPPU3800に送信し、それによりフロント・エンド・ユニット3810は、1つ又は複数のコマンド・ストリームを指すポインタを受信し、1つ又は複数のコマンド・ストリームを管理して、コマンド・ストリームからコマンドを読み取り、コマンドをPPU3800の様々なユニットに転送する。
少なくとも一実施例では、フロント・エンド・ユニット3810は、1つ又は複数のコマンド・ストリームによって定義されるタスクを処理するように様々なGPC3818を構成するスケジューラ・ユニット3812に結合される。少なくとも一実施例では、スケジューラ・ユニット3812は、スケジューラ・ユニット3812によって管理される様々タスクに関連する状態情報を追跡するように構成され、ここで状態情報は、どのGPC3818にタスクが割り当てられるか、タスクがアクティブか非アクティブか、タスクに関連付けられた優先レベルなどを示してもよい。少なくとも一実施例では、スケジューラ・ユニット3812は、GPC3818のうちの1つ又は複数において、複数のタスクの実行を管理する。
少なくとも一実施例では、スケジューラ・ユニット3812は、GPC3818で実行するためのタスクをディスパッチするように構成されたワーク分配ユニット3814に結合される。少なくとも一実施例では、ワーク分配ユニット3814は、スケジューラ・ユニット3812から受信したスケジュール済みタスクの数を追跡し、ワーク分配ユニット3814は、GPC3818のそれぞれについて、ペンディング・タスク・プール、及びアクティブ・タスク・プールを管理する。少なくとも一実施例では、ペンディング・タスク・プールは、特定のGPC3818によって処理されるように割り当てられたタスクを含むいくつかのスロット(たとえば、32スロット)を備え、アクティブ・タスク・プールは、GPC3818によりアクティブに処理されているタスクのためのいくつかのスロット(たとえば、4スロット)を備え、それにより、GPC3818のうちの1つがタスクの実行を完了すると、GPC3818のアクティブ・タスク・プールからそのタスクが排除され、ペンディング・タスク・プールからの他のタスクのうちの1つが選択され、GPC3818で実行されるようにスケジューリングされる。少なくとも一実施例では、データ依存性が解決されるのを待機している間など、アクティブ・タスクがGPC3818上でアイドルである場合には、アクティブ・タスクがGPC3818から排除され、ペンディング・タスク・プールに戻され、その間に、ペンディング・タスク・プールの別のタスクが選択され、GPC3818で実行されるようにスケジューリングされる。
少なくとも一実施例では、ワーク分配ユニット3814は、Xバー3820を介して1つ又は複数のGPC3818と通信する。少なくとも一実施例では、Xバー3820は、PPU3800のユニットのうちの多くを、PPU3800の別のユニットに結合する相互接続ネットワークであり、ワーク分配ユニット3814を特定のGPC3818に結合するように構成されることが可能である。少なくとも一実施例では、PPU3800の1つ又は複数の他のユニットも、ハブ3816を介してXバー3820に接続されてもよい。
少なくとも一実施例では、タスクはスケジューラ・ユニット3812によって管理され、ワーク分配ユニット3814によってGPC3818のうちの1つにディスパッチされる。GPC3818は、タスクを処理し、結果を生成するように構成される。少なくとも一実施例では、結果は、GPC3818内の他のタスクによって消費されてもよく、Xバー3820を介して異なるGPC3818にルーティングされてもよく、又はメモリ3804に記憶されてもよい。少なくとも一実施例では、結果を、パーティション・ユニット3822を介してメモリ3804に書き込むことができ、パーティション・ユニット3822は、メモリ3804への/からのデータの読取り及び書込みを行うためのメモリ・インターフェースを実装する。少なくとも一実施例では、結果を、高速GPU相互接続3808を介して別のPPU3804又はCPUに送信することができる。少なくとも一実施例では、PPU3800は、PPU3800に結合された別々の個別メモリ・デバイス3804の数に等しいU個のパーティション・ユニット3822を、限定することなく含む。少なくとも一実施例では、パーティション・ユニット3822は、図40と併せて本明細書でさらに詳細に説明される。
少なくとも一実施例では、ホスト・プロセッサはドライバ・カーネルを実行し、このカーネルは、ホスト・プロセッサで実行されている1つ又は複数のアプリケーションがPPU3800で実行するための動作をスケジューリングできるようにするアプリケーション・プログラミング・インターフェース(API)を実装している。少なくとも一実施例では、複数のコンピュート・アプリケーションが、PPU3800によって同時に実行され、PPU3800は、複数のコンピュート・アプリケーションに対して、隔離、サービス品質(「QoS」:quality of service)、及び独立したアドレス空間を提供する。少なくとも一実施例では、アプリケーションは、PPU3800によって実行するための1つ又は複数のタスクをドライバ・カーネルに生成させる(たとえば、APIコールの形の)命令を生成し、ドライバ・カーネルは、PPU3800によって処理されている1つ又は複数のストリームにタスクを出力する。少なくとも一実施例では、各タスクは、ワープと呼ばれてもよい関連スレッドの1つ又は複数のグループを備える。少なくとも一実施例では、ワープは、並列に実行することができる複数の関連スレッド(たとえば、32個のスレッド)を備える。少なくとも一実施例では、連動スレッドとは、タスクを実行するための命令を含み、共有メモリを介してデータを交換する複数のスレッドを指してもよい。少なくとも一実施例では、スレッド及び連動スレッドは、図40と併せて少なくとも一実施例によりさらに詳細に説明される。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、PPU3800に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、深層学習アプリケーション・プロセッサ3800は、別のプロセッサ若しくはシステムによって、又はPPU3800によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、PPU3800は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図39は、少なくとも一実施例による汎用処理クラスタ(「GPC」)3900を示す。少なくとも一実施例では、GPC3900は、図38のGPC3818である。少なくとも一実施例では、各GPC3900は、限定することなく、タスクを処理するためのいくつかのハードウェア・ユニットを含み、各GPC3900は、限定することなく、パイプライン・マネージャ3902、プレ・ラスタ演算ユニット(「PROP」:pre-raster operations unit)3904、ラスタ・エンジン3908、ワーク分配クロスバー(「WDX」:work distribution crossbar)3916、メモリ管理ユニット(「MMU」)3918、1つ又は複数のデータ処理クラスタ(「DPC」:Data Processing Clusters)3906、及びパーツの任意の好適な組合せを含む。
少なくとも一実施例では、GPC3900の動作は、パイプライン・マネージャ3902によって制御される。少なくとも一実施例では、パイプライン・マネージャ3902は、GPC3900に配分されたタスクを処理するために1つ又は複数のDPC3906の構成を管理する。少なくとも一実施例では、パイプライン・マネージャ3902は、グラフィックス・レンダリング・パイプラインの少なくとも一部分を実装するように、1つ又は複数のDPC3906のうちの少なくとも1つを構成する。少なくとも一実施例では、DPC3906は、プログラム可能なストリーミング・マルチプロセッサ(「SM」:streaming multi-processor)3914で頂点シェーダ・プログラムを実行するように構成される。少なくとも一実施例では、パイプライン・マネージャ3902は、少なくとも一実施例では、ワーク分配ユニットから受信したパケットを、GPC3900内の適切な論理ユニットにルーティングするように構成され、いくつかのパケットは、PROP3904の固定機能ハードウェア・ユニット及び/又はラスタ・エンジン3908にルーティングされてもよく、他のパケットは、プリミティブ・エンジン3912又はSM3914によって処理されるようにDPC3906にルーティングされてもよい。少なくとも一実施例では、パイプライン・マネージャ3902は、ニューラル・ネットワーク・モデル及び/又はコンピューティング・パイプラインを実装するように、DPC3906のうちの少なくとも1つを構成する。
少なくとも一実施例では、PROPユニット3904は、少なくとも一実施例では、ラスタ・エンジン3908及びDPC3906によって生成されたデータを、図38と併せて上でより詳細に説明したパーティション・ユニット3822のラスタ動作(ROP)ユニットにルーティングするように構成される。少なくとも一実施例では、PROPユニット3904は、色ブレンディングの最適化を実行し、ピクセル・データを組織化し、アドレス・トランスレーションを実行し、その他の動作を行うように構成される。少なくとも一実施例では、ラスタ・エンジン3908は、少なくとも一実施例では様々なラスタ動作を実行するように構成されたいくつかの固定機能ハードウェア・ユニットを、限定することなく含み、ラスタ・エンジン3908は、限定することなく、セットアップ・エンジン、粗いラスタ・エンジン、選別エンジン、クリッピング・エンジン、細かいラスタ・エンジン、タイル合体エンジン、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、セットアップ・エンジンは、変換された頂点を受信し、頂点によって定義された幾何プリミティブに関連付けられた平面方程式を生成し、平面方程式が、粗いラスタ・エンジンに送信されて、プリミティブに対するカバレッジ情報(たとえば、タイルのx、yカバレッジ・マスク)が生成され、粗いラスタ・エンジンの出力が、選別エンジンに送信され、ここでzテストに落ちたプリミティブに関連付けられたフラグメントが選別され、クリッピング・エンジンに送信され、ここで視錐台の外側にあるフラグメントがクリップされる。少なくとも一実施例では、クリッピング及び選別を通過したフラグメントは、細かいラスタ・エンジンに渡されて、セットアップ・エンジンによって生成された平面方程式に基づき、ピクセル・フラグメントに対する属性が生成される。少なくとも一実施例では、ラスタ・エンジン3908の出力は、DPC3906内に実装されたフラグメント・シェーダによってなど任意の好適なエンティティによって処理されることになるフラグメントを含む。
少なくとも一実施例では、GPC3900に含まれる各DPC3906は、限定することなく、Mパイプ・コントローラ(「MPC」:M-Pipe Controller)3910、プリミティブ・エンジン3912、1つ又は複数のSM3914、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、MPC3910は、DPC3906の動作を制御して、パイプライン・マネージャ3902から受信したパケットを、DPC3906内の適切なユニットにルーティングする。少なくとも一実施例では、頂点に関連付けられたパケットは、頂点に関連付けられた頂点属性をメモリからフェッチするように構成されたプリミティブ・エンジン3912にルーティングされ、対照的に、シェーダ・プログラムに関連付けられたパケットは、SM3914に送信されてもよい。
少なくとも一実施例では、SM3914は、いくつかのスレッドにより表されたタスクを処理するように構成されたプログラム可能なストリーミング・プロセッサを、限定することなく含む。少なくとも一実施例では、SM3914はマルチスレッド化されており、スレッドの特定のグループからの複数のスレッド(たとえば、32個のスレッド)を同時に実行するように構成され、単一命令複数データ(SIMD)アーキテクチャを実装し、ここでスレッドのグループ(ワープ)内の各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成される。少なくとも一実施例では、スレッド・グループ内のすべてのスレッドが同じ命令を実行する。少なくとも一実施例では、SM3914は、単一命令複数スレッド(SIMT)アーキテクチャを実装し、ここで、スレッド・グループの各スレッドは、同じ命令セットに基づき、異なるデータ・セットを処理するように構成されるが、スレッド・グループ内の個々のスレッドは、実行中に発散することが許容される。少なくとも一実施例では、プログラム・カウンタ、コール・スタック、及び実行状態がワープごとに維持されて、ワープ内のスレッドが発散するときに、ワープ間の同時処理、及びワープ内での直列実行が可能になる。別の実施例では、プログラム・カウンタ、コール・スタック、及び実行状態が個々のスレッドごとに維持されて、すべてのスレッド間、ワープ内、及びワープ間で等しい同時処理が可能になる。少なくとも一実施例では、実行状態が個々のスレッドごとに維持され、同じ命令を実行しているスレッドが、より効率的になるように収束され並列に実行されてもよい。SM3914の少なくとも一実施例は、本明細書でさらに詳細に説明される。
少なくとも一実施例では、MMU3918は、GPC3900とメモリ・パーティション・ユニット(たとえば、図38のパーティション・ユニット3822)との間でインターフェースを提供し、MMU3918は、仮想アドレスから物理アドレスへのトランスレーション、メモリ保護、及びメモリ要求の調停を提供する。少なくとも一実施例では、MMU3918は、仮想アドレスからメモリの物理アドレスへのトランスレーションを実行するための1つ又は複数のトランスレーション・ルックアサイド・バッファ(「TLB」)を提供する。
1つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、GPC3900に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、GPC3900は、別のプロセッサ若しくはシステムによって、又はGPC3900によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、GPC3900は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
図40は、少なくとも一実施例による並列処理ユニット(「PPU」)のメモリ・パーティション・ユニット4000を示す。少なくとも一実施例では、パーティション・ユニット4000は、限定することなく、ラスタ演算(「ROP」)ユニット4002、レベル2(「L2」)キャッシュ4004、メモリ・インターフェース4006、及びそれらの任意の好適な組合せを含む。メモリ・インターフェース4006はメモリに結合される。メモリ・インターフェース4006は、高速データ転送のために、32、64、128、1024ビットのデータ・バスなどを実装してもよい。少なくとも一実施例では、PPUは、パーティション・ユニット4000の対当たりにメモリ・インターフェース4006を1つの、U個のメモリ・インターフェース4006を組み込んでおり、ここでパーティション・ユニット4000の各対は、対応するメモリ・デバイスに接続される。たとえば、少なくとも一実施例では、PPUは、高帯域幅メモリ・スタック、又はグラフィックス・ダブル・データ・レート、バージョン5、同期ダイナミック・ランダム・アクセス・メモリ(「GDDR5 SDRAM」)など、最大Y個のメモリ・デバイスに接続されてもよい。
少なくとも一実施例では、メモリ・インターフェース4006は、高帯域幅メモリの第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は、マルチ・レベルのメモリ階層を実装する。少なくとも一実施例では、メモリ・パーティション・ユニット4000は、統合されたメモリをサポートして、中央処理装置(「CPU」)及びPPUメモリに単一の統合された仮想アドレス空間を提供し、仮想メモリ・システム間でのデータの共有を可能にする。少なくとも一実施例では、他のプロセッサに位置付けられたメモリにPPUがアクセスする頻度を追跡して、より頻繁にページにアクセスしているPPUの物理メモリに、メモリ・ページが確実に移動されるようにする。少なくとも一実施例では、高速GPU相互接続3808は、アドレス・トランスレーション・サービスをサポートして、PPUが直接CPUのページ・テーブルにアクセスできるようにし、PPUによるCPUメモリへのフル・アクセスを実現する。
少なくとも一実施例では、コピー・エンジンは、複数のPPU間、又はPPUとCPUの間で、データを転送する。少なくとも一実施例では、コピー・エンジンは、ページ・テーブルにマッピングされていないアドレスについてページ誤りを生成することができ、次いでメモリ・パーティション・ユニット4000がページ誤りに対応して、アドレスをページ・テーブルにマッピングし、その後で、コピー・エンジンが転送を実行する。少なくとも一実施例では、メモリは、複数のプロセッサ間でコピー・エンジンの複数の動作についてピン留めされて(たとえば、ページ移動不可能にされて)、実質的に利用可能なメモリを低減させる。少なくとも一実施例では、ハードウェアのページ誤りがある場合、メモリ・ページが常駐であるかどうかに関わらず、アドレスをコピー・エンジンに渡すことができ、コピー・プロセスは透過的である。
少なくとも一実施例によれば、図38のメモリ3804又は他のシステム・メモリからのデータは、メモリ・パーティション・ユニット4000によってフェッチされ、L2キャッシュ4004に記憶され、このL2キャッシュは、オン・チップに位置付けられ、様々GPC間で共有される。少なくとも一実施例では、各メモリ・パーティション・ユニット4000は、対応するメモリ・デバイスに関連付けられたL2キャッシュの少なくとも一部分を、限定することなく含む。少なくとも一実施例では、より低いレベルのキャッシュが、GPC内の様々なユニットに実装される。少なくとも一実施例では、SM3914のそれぞれは、レベル1(「L1」)キャッシュを実装してもよく、ここでL1キャッシュは、特定のSM3914専用のプライベート・メモリであり、L2キャッシュ4004からのデータは、SM3914の機能ユニットで処理するために、L1キャッシュのそれぞれにフェッチされ記憶される。少なくとも一実施例では、L2キャッシュ4004は、メモリ・インターフェース4006及びXバー3820に結合される。
少なくとも一実施例では、ROPユニット4002は、色圧縮、ピクセル・ブレンディングなど、ピクセル色に関係するグラフィックス・ラスタ演算を実行する。ROPユニット4002は、少なくとも一実施例では、ラスタ・エンジン3908と併せて深度テストを実装して、ピクセル・フラグメントに関連付けられたサンプル・ロケーションの深度を、ラスタ・エンジン3908の選別エンジンから受信する。少なくとも一実施例では、深度は、フラグメントに関連付けられたサンプル・ロケーションの深度バッファにおける対応する深度と比べてテストされる。少なくとも一実施例では、フラグメントが、サンプル・ロケーションの深度テストを通過すると、ROPユニット4002は、深度バッファを更新し、深度テストの結果をラスタ・エンジン3908に送信する。パーティション・ユニット4000の数はGPCの数とは異なってもよく、したがって、各ROPユニット4002は、少なくとも一実施例では、GPCのそれぞれに結合されてもよいことが理解されよう。少なくとも一実施例では、ROPユニット4002は、異なるGPCから受信したパケットを追跡し、ROPユニット4002によって生成された結果を、Xバー3820を通してどれにルーティングするかを判定する。
図41は、少なくとも一実施例による、ストリーミング・マルチプロセッサ(「SM」)4100を示す。少なくとも一実施例では、SM4100は、図39のSMである。少なくとも一実施例では、SM4100は、限定することなく、命令キャッシュ4102、1つ又は複数のスケジューラ・ユニット4104、レジスタ・ファイル4108、1つ又は複数の処理コア(「コア」)4110、1つ又は複数の特殊機能ユニット(「SFU」:special function unit)4112、1つ又は複数のロード/ストア・ユニット(「LSU」load/store unit)4114、相互接続ネットワーク4116、共有メモリ/レベル1(「L1」)キャッシュ4118、及びこれらの任意の好適な組合せを含む。少なくとも一実施例では、ワーク分配ユニットは、並列処理ユニット(「PPU」)の汎用処理クラスタ(「GPC」)で実行するためにタスクをディスパッチし、各タスクは、GPC内の特定のデータ処理クラスタ(「DPC」)に配分され、タスクがシェーダ・プログラムに関連する場合には、タスクはSM4100のうちの1つに配分される。少なくとも一実施例では、スケジューラ・ユニット4104は、ワーク分配ユニットからタスクを受信し、SM4100に割り当てられた1つ又は複数のスレッド・ブロックについて命令スケジューリングを管理する。少なくとも一実施例では、スケジューラ・ユニット4104は、並列スレッドのワープとして実行できるようにスレッド・ブロックをスケジューリングし、ここで各スレッド・ブロックは、少なくとも1つのワープに配分される。少なくとも一実施例では、各ワープは、スレッドを実行する。少なくとも一実施例では、スケジューラ・ユニット4104は、複数の異なるスレッド・ブロックを管理して、異なるスレッド・ブロックにワープを配分し、次いで複数の異なる連動グループからの命令を、各クロック・サイクル中に様々な機能ユニット(たとえば、処理コア4110、SFU4112、及びLSU4114)にディスパッチする。
少なくとも一実施例では、連動グループとは、通信するスレッドのグループを組織化するためのプログラミング・モデルを指し、このモデルは、スレッドが通信する粒度をデベロッパが表せるようにして、より豊富でより効率的な並列分解の表現を可能にする。少なくとも一実施例では、連動した起動APIは、並列アルゴリズムを実行できるようにスレッド・ブロック間の同期をサポートする。少なくとも一実施例では、従来のプログラミング・モデルのアプリケーションは、連動スレッドを同期するための単一の簡単な構造、すなわちスレッド・ブロックのすべてのスレッドにわたるバリア(たとえば、syncthreads()関数)を提供する。しかし、少なくとも一実施例では、プログラマは、スレッド・ブロックの粒度よりも小さいスレッド・グループを定義し、定義されたグループ内で同期して、集合的なグループ全般にわたる機能インターフェースの形で、より高い性能、設計の融通性、及びソフトウェア再利用を可能にしてもよい。少なくとも一実施例では、連動グループによって、プログラマは、サブ・ブロック(すなわち、単一スレッドと同じ大きさ)の粒度及びマルチ・ブロックの粒度において、スレッドのグループを明示的に定義し、連動グループ内のスレッドに対する同期などの集合的な動作を実行できるようになる。プログラミング・モデルは、ソフトウェア境界を横切るクリーンな合成をサポートし、それにより、ライブラリ及びユーティリティ関数を、収束について仮定する必要なくそれらのローカルなコンテキスト内で安全に同期することができる。少なくとも一実施例では、連動グループのプリミティブは、プロデューサ-コンシューマ並列性、日和見並列性(opportunistic parallelism)、及びスレッド・ブロックのグリッド全体にわたるグローバルな同期を限定することなく含む新しいパターンの連動並列性を可能にする。
少なくとも一実施例では、ディスパッチ・ユニット4106は、機能ユニットの1つ又は複数に命令を送信するように構成され、スケジューラ・ユニット4104は、同じワープからの2つの異なる命令を、各クロック・サイクル中にディスパッチできるようにする2つのディスパッチ・ユニット4106を限定することなく含む。少なくとも一実施例では、各スケジューラ・ユニット4104は、単一のディスパッチ・ユニット4106又は追加のディスパッチ・ユニット4106を含む。
少なくとも一実施例では、各SM4100は、少なくとも一実施例では、SM4100の機能ユニットにレジスタのセットを提供するレジスタ・ファイル4108を限定することなく含む。少なくとも一実施例では、レジスタ・ファイル4108は、各機能ユニットがレジスタ・ファイル4108の専用部分に配分されるように、それぞれの機能ユニット間で分割される。少なくとも一実施例では、レジスタ・ファイル4108は、SM4100によって実行されている異なるワープ間で分割され、レジスタ・ファイル4108は、機能ユニットのデータ経路に接続されたオペランド用の一時的なストレージを提供する。少なくとも一実施例では、各SM4100は、限定することなく、複数のL処理コア4110を含む。少なくとも一実施例では、各SM4100は、限定することなく、多数の(たとえば、128個以上の)個別の処理コア4110を含む。少なくとも一実施例では、各処理コア4110は、少なくとも一実施例では、浮動小数点算術論理演算ユニット及び整数算術論理演算ユニットを限定することなく含む完全にパイプライン化された、単精度の、倍精度の、及び/又は混合精度の処理ユニットを限定することなく含む。少なくとも一実施例では、浮動小数点算術論理演算ユニットは、浮動小数点演算のためのIEEE754-2008規格を実装する。少なくとも一実施例では、処理コア4110は、限定することなく、64個の単精度(32ビット)浮動小数点コア、64個の整数コア、32個の倍精度(64ビット)浮動小数点コア、及び8個のテンソル・コアを含む。
テンソル・コアは、少なくとも一実施例による行列演算を実行するように構成される。少なくとも一実施例では、1つ又は複数のテンソル・コアは、処理コア4110に含まれる。少なくとも一実施例では、テンソル・コアは、ニューラル・ネットワークの訓練及び推論のための畳み込み演算など、深層学習の行列演算を実行するように構成される。少なくとも一実施例では、各テンソル・コアは、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のサイズの行列を仮定している。
少なくとも一実施例では、各SM4100は、特殊関数(たとえば、属性評価、逆数平方根など)を実行するM個のSFU4112を、限定することなく含む。少なくとも一実施例では、SFU4112は、限定することなく、階層ツリー・データ構造をトラバースするように構成されたツリー・トラバーサル・ユニットを含む。少なくとも一実施例では、SFU4112は、テクスチャ・マップのフィルタリング動作を実行するように構成されたテクスチャ・ユニットを、限定することなく含む。少なくとも一実施例では、テクスチャ・ユニットは、メモリ及びサンプル・テクスチャ・マップからテクスチャ・マップ(たとえば、テクセルの2Dアレイ)をロードして、SM4100により実行されるシェーダ・プログラムで使用するためのサンプリングされたテクスチャ値を生成するように構成される。少なくとも一実施例では、テクスチャ・マップは、共有メモリ/レベル1キャッシュ4118に記憶される。少なくとも一実施例では、テクスチャ・ユニットは、少なくとも一実施例によれば、ミップ・マップ(たとえば、詳細さのレベルが異なるテクスチャ・マップ)を使用したフィルタリング動作などのテクスチャ動作を実装する。少なくとも一実施例では、各SM4100は、限定することなく、2つのテクスチャ・ユニットを含む。
各SM4100は、少なくとも一実施例では、共有メモリ/L1キャッシュ4118とレジスタ・ファイル4108の間でロード及びストア動作を実装するN個のLSU4114を、限定することなく含む。各SM4100は、少なくとも一実施例では、機能ユニットのそれぞれをレジスタ・ファイル4108に接続し、LSU4114をレジスタ・ファイル4108に接続する相互接続ネットワーク4116と、共有メモリ/L1キャッシュ4118を、限定することなく含む。少なくとも一実施例では、相互接続ネットワーク4116はクロスバーであり、このクロスバーは、いずれかの機能ユニットをレジスタ・ファイル4108のいずれかのレジスタに接続し、LSU4114をレジスタ・ファイル4108と共有メモリ/L1キャッシュ4118のメモリ・ロケーションとに接続するように構成されてもよい。
少なくとも一実施例では、共有メモリ/L1キャッシュ4118は、少なくとも一実施例では、SM4100とプリミティブ・エンジンの間、及びSM4100のスレッド間でデータ・ストレージ及び通信を可能にするオン・チップ・メモリのアレイである。少なくとも一実施例では、共有メモリ/L1キャッシュ4118は、限定することなく、128KBのストレージ容量を備え、SM4100からパーティション・ユニットに向かう経路にある。少なくとも一実施例では、共有メモリ/L1キャッシュ4118は、少なくとも一実施例では、読取り及び書込みをキャッシュするために使用される。少なくとも一実施例では、共有メモリ/L1キャッシュ4118、L2キャッシュ、及びメモリのうちの1つ又は複数は、補助ストレージである。
少なくとも一実施例では、データ・キャッシュと共有メモリ機能とを単一のメモリ・ブロックに組み合わせることによって、両方のタイプのメモリ・アクセスについて性能が向上する。少なくとも一実施例では、容量は、共有メモリを使用しないプログラムによってキャッシュとして使用され、又は使用可能であり、それにより、共有メモリが容量の半分を使用するように構成されている場合、テクスチャ及びロード/ストア動作が、残りの容量を使用することができる。少なくとも一実施例によれば、共有メモリ/L1キャッシュ4118内に統合することによって、共有メモリ/L1キャッシュ4118が、データをストリームするための高スループットの管として機能しながら、同時に高帯域幅及び低レイテンシのアクセスを、頻繁に再使用されるデータに提供できるようになる。少なくとも一実施例では、汎用並列計算向けに構成されるときには、グラフィックス処理と比べてより簡単な構成を使用することができる。少なくとも一実施例では、固定機能のグラフィックス・プロセッシング・ユニットがバイパスされて、はるかに簡単なプログラミング・モデルが作製される。汎用並列計算の構成では、ワーク分配ユニットは、少なくとも一実施例においてスレッド・ブロックを直接DPCに割当て及び分配する。少なくとも一実施例では、ブロック内のスレッドは、各スレッドが確実に一意の結果を生成するように、計算において一意のスレッドIDを使用して同じプログラムを実行し、SM4100を使用して、プログラムを実行し計算を行い、共有メモリ/L1キャッシュ4118を使用してスレッド間で通信し、LSU4114を使用して、共有メモリ/L1キャッシュ4118及びメモリ・パーティション・ユニットを介してグローバル・メモリを読み取り、書き込む。少なくとも一実施例では、汎用並列計算向けに構成されるときには、SM4100は、DCP上で新規のワークを起動するためにスケジューラ・ユニット4104が使用できるコマンドを書き込む。
少なくとも一実施例では、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つ若しくは複数の実施例に関連する推論及び/又は訓練の動作を実行するために、推論及び/又は訓練論理1315が使用される。推論及び/又は訓練論理1315に関する詳細事項は、図13A及び/又は図13Bと併せて本明細書に提供される。少なくとも一実施例では、深層学習アプリケーション・プロセッサは、SM4100に提供される情報を予測又は推論するようにニューラル・ネットワークなどの機械学習モデルを訓練するために使用される。少なくとも一実施例では、SM4100は、別のプロセッサ若しくはシステムによって、又はSM4100によって訓練されてきた訓練済み機械学習モデル(たとえば、ニューラル・ネットワーク)に基づき、情報を推論又は予測するために使用される。少なくとも一実施例では、SM4100は、本明細書に記載の1つ又は複数のニューラル・ネットワークのユース・ケースを実行するために使用されてもよい。
上述した技法は、たとえば、人間とロボットとの間で物体の交換を実行するためのシステムを実装するために使用されてもよい。いくつかの実例は、上述したように人間の手によって保持される物体の把持を生成するように訓練されたニューラル・ネットワークを作製するために、推論及び/又は訓練論理を使用する。
少なくとも一実施例では、単一の半導体プラットフォームとは、単独で単体の半導体ベースの集積回路又はチップを指してもよい。少なくとも一実施例では、マルチ・チップ・モジュールは、オン・チップ動作をシミュレートする接続性が向上した状態で使用されてもよく、従来の中央処理装置(「CPU」)及びバスの実装形態の利用を大幅に改善する。少なくとも一実施例では、ユーザの希望に応じて、半導体プラットフォームとは別々に、又は半導体プラットフォームとの様々な組合せで、様々なモジュールがさらに設置されてもよい。
少なくとも一実施例では、機械読取り可能で実行可能なコード若しくはコンピュータ制御論理アルゴリズムの形のコンピュータ・プログラムが、メイン・メモリ1904及び/又は二次ストレージに記憶される。コンピュータ・プログラムは、1つ又は複数のプロセッサによって実行された場合に、少なくとも一実施例による様々な機能をシステム1900が実行できるようにする。メモリ1904、ストレージ、及び/又は任意の他のストレージが、コンピュータ読取り可能媒体の考えられる例である。少なくとも一実施例では、二次ストレージとは、フロッピー(登録商標)・ディスク・ドライブ、磁気テープ・ドライブ、コンパクト・ディスク・ドライブ、デジタル多用途ディスク(「DVD」:digital versatile disk)ドライブ、記録デバイス、ユニバーサル・シリアル・バス(「USB」)フラッシュ・メモリなどを表すハード・ディスク・ドライブ及び/若しくはリムーバブル・ストレージ・ドライブなどの任意の好適なストレージ・デバイス又はシステムを指してもよい。少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、CPU1902、並列処理システム1912、CPU1902と並列処理システム1912の両方の機能の少なくとも一部分を実現可能な集積回路、チップセット(たとえば、関連機能を実行するためのユニットとして機能し、販売されるように設計された集積回路のグループなど)、及び集積回路の任意の好適な組合せの文脈において実装される。
少なくとも一実施例では、様々な先の図面のアーキテクチャ及び/又は機能は、汎用コンピュータ・システム、回路板システム、エンタテイメント目的専用のゲーム・コンソール・システム、及び特定用途システムなどの文脈において実装される。少なくとも一実施例では、コンピュータ・システム1900は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、サーバ、スーパーコンピュータ、スマート・フォン(たとえば、ワイヤレスの携帯型デバイス)、パーソナル・デジタル・アシスタント(「PDA」)、デジタル・カメラ、車両、頭装着型ディスプレイ、携帯型電子デバイス、モバイル・フォン・デバイス、テレビ、ワークステーション、ゲーム・コンソール、組み込みシステム、及び/又は任意の他のタイプの論理の形をとってもよい。
少なくとも一実施例では、並列処理システム1912は、限定することなく、複数の並列処理ユニット(「PPU」)1914、及び関連メモリ1916を含む。少なくとも一実施例では、PPU1914は、相互接続1918及びスイッチ1920又はマルチプレクサを介してホスト・プロセッサ又は他の周辺デバイスに接続される。少なくとも一実施例では、並列処理システム1912は、計算タスクをPPU1914にわたって分配し、これは、たとえば複数のグラフィックス・プロセッシング・ユニット(「GPU」)のスレッド・ブロックにわたる計算タスクの分配の一部として、並列化可能とすることができる。少なくとも一実施例では、メモリは、PPU1914の一部又は全部にわたって共有され、(たとえば、読取り及び/又は書込みアクセスのために)アクセス可能であるが、こうした共有メモリは、PPU1914に常駐しているローカル・メモリ及びレジスタの使用に対して、性能に不利益をもたらすことがある。少なくとも一実施例では、PPU1914の動作は、_syncthreads()などのコマンドを使用することによって同期され、ここで(たとえば、複数のPPU1914にわたって動作している)ブロック内のすべてのスレッドが、進行前にコードのある一定の実行ポイントに到達する。
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の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つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。いくつかの実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。別の実装形態では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
上の議論は、記載した技法の例示的な実装形態について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、議論を目的として、役割の具体的な分配が定義されているが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
さらに、主題は、構造的特徴及び/又は方法論的行為に特有の言葉で説明されてきたが、添付の特許請求の範囲で請求される主題は、必ずしも説明された特有の特徴又は行為に限定されないことが理解されるべきである。むしろ、特有の特徴及び行為は、特許請求の範囲を実装する例示的な形として開示されている。

Claims (26)

  1. 物体を保持している手を表す点群を取得し、
    前記点群の第1の部分から、前記物体の姿勢を判定し、
    前記点群の第2の部分から、前記手の姿勢を判定し、
    ロボットが前記物体を把持することを可能にする把持姿勢のセットを生成し、
    前記手の前記姿勢に少なくとも部分的に基づき、前記把持姿勢のセットから、前記手に干渉しない標的把持姿勢を選択し、
    前記ロボットに、前記標的把持姿勢を実行させる
    ための1つ又は複数のプロセッサを備える1つ又は複数のコンピュータを備えるプロセッサ。
  2. 前記手の前記姿勢が、複数のセグメント及び関節角度を識別する、請求項1に記載のプロセッサ。
  3. 前記1つ又は複数のプロセッサが、
    3次元画像を深度カメラから取得し、
    前記3次元画像から前記点群を生成する、請求項1に記載のプロセッサ。
  4. 前記把持姿勢のセットが、前記ロボットのロボット・グリッパのための姿勢であり、
    前記ロボット・グリッパが、前記把持を実行する2つの対向する指を有する、請求項1に記載のプロセッサ。
  5. 前記物体の前記姿勢が、前記物体の配向を示す3つの角度、及び前記物体の位置を識別する情報を含む、請求項1に記載のプロセッサ。
  6. 前記ロボットが、前記手から前記物体を取る、請求項1に記載のプロセッサ。
  7. コンピュータ可読媒体に結合された1つ又は複数のプロセッサを備えるシステムであって、
    前記コンピュータ可読媒体が、前記1つ又は複数のプロセッサによって実行される結果として、前記システムに、
    物体を保持する付属肢の3次元画像から、前記付属肢の姿勢及び前記物体の姿勢を判定すること、
    ロボット・グリッパが前記物体を把持することを可能にする把持姿勢のセットを判定すること、
    前記把持姿勢のセットから、前記付属肢に干渉しない把持姿勢を選択すること、及び
    前記把持姿勢を実行すること
    を行わせる実行可能な命令を記憶している、システム。
  8. 前記3次元画像が、深度カメラ、レーダ画像、LIDAR画像、又は3次元医療用撮像装置から生成される、請求項7に記載のシステム。
  9. 前記実行可能命令が、前記1つ又は複数のプロセッサによって実行される結果として、前記システムにさらに、
    前記3次元画像から点群を生成すること、
    前記付属肢を表す前記点群の第1の部分を識別すること、及び
    前記物体を表す前記点群の第2の部分を識別すること
    を行わせる、請求項7に記載のシステム。
  10. 前記実行可能命令が、前記1つ又は複数のプロセッサによって実行される結果として、前記システムにさらに、
    前記3次元画像から手の姿勢のタイプを判定すること、及び
    前記手の姿勢のタイプに少なくとも部分的に基づいて、把持姿勢を判定すること
    を行わせる、請求項7に記載のシステム。
  11. 前記実行可能命令が、前記1つ又は複数のプロセッサによって実行される結果として、前記システムにさらに、
    前記3次元画像から点群を生成すること、及び
    前記把持姿勢を出力する訓練済みモデルに、前記点群を提供すること
    を行わせる、請求項7に記載のシステム。
  12. 前記訓練モデルが、点群情報及び対応する把持姿勢を含むグラウンド・トゥルース・データを提供することによって訓練される、請求項11に記載のシステム。
  13. 前記ロボット・グリッパが、前記把持姿勢の実行中に前記付属肢に接触することが予測される場合に、前記把持姿勢が、前記付属肢に干渉すると判定される、請求項7に記載のシステム。
  14. 1つ又は複数のプロセッサによって実行された場合に、前記1つ又は複数のプロセッサに、少なくとも、
    物体を保持する付属肢の3次元画像を取得すること、
    前記3次元画像から3Dモデルを生成すること、
    前記3Dモデルを、前記付属肢に接触することなく前記付属肢を把持することができるロボット・グリッパの把持姿勢を生成する訓練済みネットワークに提供すること、及び
    前記ロボット・グリッパに前記把持姿勢を実行させること
    を行わせる命令のセットを記憶している機械可読媒体。
  15. 前記訓練済みネットワークが、物体を保持している付属肢の色付き3Dモデルと、前記ロボット・グリッパが前記付属肢に接触することなく前記付属肢から前記物体を受け取ることができるように、前記ロボット・グリッパのために提案された把持とを含む訓練データを、ネットワークに提供することによって、少なくとも部分的に訓練される、請求項14に記載の機械可読媒体。
  16. 訓練データが、少なくとも、
    人間による物体引渡しのデータセットを生成すること、及び
    グラウンド・トゥルースの手の姿勢及びグラウンド・トゥルースの物体の姿勢を用いて前記データセットにアノテーション付けすること
    によって生成される、請求項15に記載の機械可読記憶媒体。
  17. 前記命令が、前記1つ又は複数のプロセッサによって実行される結果として、前記1つ又は複数のプロセッサに、
    前記3Dモデルから、前記付属肢の姿勢を判定すること、及び
    前記3Dモデルから、前記物体の姿勢を判定すること
    を行わせる命令をさらに含む、請求項14に記載の機械可読媒体。
  18. 前記把持姿勢が、少なくとも部分的に、前記物体の前記姿勢及び前記付属肢の前記姿勢に基づいており、
    前記把持姿勢が、前記付属肢に接触せずに前記物体をうまく把持することになる把持として判定される、請求項17に記載の機械可読記憶媒体。
  19. 前記ネットワークが、異なる物体のタイプを保持する前記付属肢の画像を使用して訓練される、請求項14に記載の機械可読記憶媒体。
  20. 前記命令が、前記1つ又は複数のプロセッサによって実行される結果として、前記1つ又は複数のプロセッサに、前記付属肢の前記姿勢が前記ロボットに前記物体を渡そうとしている姿勢タイプであると判定される結果として、前記把持姿勢を判定させる命令をさらに含む、請求項14に記載の機械可読媒体。
  21. 物体を保持している付属肢の3Dモデルと、ロボット・グリッパが前記付属肢に干渉することなく前記付属肢から前記物体を受け取ることができるように、前記ロボット・グリッパのために提案された把持とを含む訓練データを、ネットワークに提供することによって、少なくとも部分的に1つ又は複数のニューラル・ネットワークを訓練するための1つ又は複数の算術論理演算ユニット(ALU)を備える、プロセッサ。
  22. 訓練データが、少なくとも、
    人間による物体引渡しのデータセットを生成すること、及び
    グラウンド・トゥルースの手の姿勢及びグラウンド・トゥルースの物体の姿勢を用いて前記データセットにアノテーション付けすること
    によって生成される、請求項21に記載のプロセッサ。
  23. 前記ネットワークが、
    前記3Dモデルから、前記付属肢の姿勢を判定し、
    前記3Dモデルから、前記物体の姿勢を判定する、請求項21に記載のプロセッサ。
  24. 前記3Dモデルが、前記物体を保持している前記付属肢の3次元画像から生成される、請求項21に記載のプロセッサ。
  25. 前記3Dモデルが点群である、請求項21に記載のプロセッサ。
  26. 前記付属肢が、人間の手、ロボットのグリッパ若しくは手、動物の一部分、又は人間の脚若しくは腕である、請求項21に記載のプロセッサ。
JP2020178736A 2020-07-28 2020-10-26 物体引渡しの機械学習制御 Pending JP2022024952A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/941,339 2020-07-28
US16/941,339 US11597078B2 (en) 2020-07-28 2020-07-28 Machine learning control of object handovers

Publications (1)

Publication Number Publication Date
JP2022024952A true JP2022024952A (ja) 2022-02-09

Family

ID=79300708

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020178736A Pending JP2022024952A (ja) 2020-07-28 2020-10-26 物体引渡しの機械学習制御

Country Status (4)

Country Link
US (2) US11597078B2 (ja)
JP (1) JP2022024952A (ja)
CN (1) CN114004329A (ja)
DE (1) DE102021118885B4 (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11855971B2 (en) * 2018-01-11 2023-12-26 Visa International Service Association Offline authorization of interactions and controlled tasks
US11958529B2 (en) * 2020-08-20 2024-04-16 Nvidia Corporation Controlling position of robot by determining goal proposals by using neural networks
JP2022136604A (ja) * 2021-03-08 2022-09-21 キヤノン株式会社 ロボットシステム、端末、ヘッドマウントディスプレイ、ヘルメット、腕時計端末、ティーチングペンダント、ロボットシステムの制御方法、端末の制御方法、ロボットシステムを用いた物品の製造方法、制御プログラムおよび記録媒体
US20220288783A1 (en) * 2021-03-10 2022-09-15 Nvidia Corporation Machine learning of grasp poses in a cluttered environment
US11875528B2 (en) * 2021-05-25 2024-01-16 Fanuc Corporation Object bin picking with rotation compensation
CN114770504B (zh) * 2022-04-26 2024-01-30 深圳优地科技有限公司 机器人控制方法、装置、机器人及存储介质
DE102022124832A1 (de) 2022-09-27 2024-03-28 Deutsches Zentrum für Luft- und Raumfahrt e.V. Verfahren zum Roboterlernen von Fertigkeiten aus Benutzerdemonstration und Roboter, Datenstruktur und Computerprogramm zum autonomen Ausführen von Aufgaben
CN115635482B (zh) * 2022-10-18 2024-01-30 深圳市人工智能与机器人研究院 基于视觉的机器人到人物体传递方法、装置、介质及终端
CN116652940B (zh) * 2023-05-19 2024-06-04 兰州大学 仿人手精密操控方法和装置、电子设备及存储介质

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006006624A1 (ja) * 2004-07-13 2006-01-19 Matsushita Electric Industrial Co., Ltd. 物品保持システム、ロボット及びロボット制御方法
JP4456561B2 (ja) * 2005-12-12 2010-04-28 本田技研工業株式会社 自律移動ロボット
DE602007003849D1 (de) * 2007-10-11 2010-01-28 Mvtec Software Gmbh System und Verfahren zur 3D-Objekterkennung
US8933912B2 (en) 2012-04-02 2015-01-13 Microsoft Corporation Touch sensitive user interface with three dimensional input sensor
US9233469B2 (en) 2014-02-13 2016-01-12 GM Global Technology Operations LLC Robotic system with 3D box location functionality
WO2015153739A1 (en) * 2014-04-01 2015-10-08 University Of South Florida Systems and methods for planning a robot grasp based upon a demonstrated grasp
US20160091095A1 (en) 2014-09-29 2016-03-31 Caterpillar Global Mining Llc Diaphragm Air Seal
DE102014223167A1 (de) 2014-11-13 2016-05-19 Kuka Roboter Gmbh Bestimmen von objektbezogenen Greifräumen mittels eines Roboters
JP2016201609A (ja) 2015-04-08 2016-12-01 日本電気通信システム株式会社 加入者端末装置、通信サービス提供システム、通信制御方法、及び、通信制御プログラム
US9687983B1 (en) * 2016-05-11 2017-06-27 X Development Llc Generating a grasp pose for grasping of an object by a grasping end effector of a robot
KR102576842B1 (ko) * 2017-01-04 2023-09-12 삼성전자주식회사 핸드-아이 캘리브레이션을 수행하는 로봇 및 전자 장치
JP2018169660A (ja) * 2017-03-29 2018-11-01 セイコーエプソン株式会社 オブジェクト姿勢検出装置、制御装置、ロボットおよびロボットシステム
CN112088070A (zh) * 2017-07-25 2020-12-15 M·奥利尼克 用于操作机器人系统并执行机器人交互的系统及方法
JP2019025572A (ja) * 2017-07-28 2019-02-21 セイコーエプソン株式会社 ロボットの制御装置、ロボット、ロボットシステム、並びに、ロボットの異常を確認する方法
JP6822929B2 (ja) * 2017-09-19 2021-01-27 株式会社東芝 情報処理装置、画像認識方法および画像認識プログラム
US10766149B2 (en) 2018-03-23 2020-09-08 Amazon Technologies, Inc. Optimization-based spring lattice deformation model for soft materials
JP7057214B2 (ja) * 2018-05-18 2022-04-19 トヨタ自動車株式会社 把持装置、タグが付された容器、対象物把持プログラムおよび対象物把持方法
US10471591B1 (en) * 2018-06-01 2019-11-12 X Development Llc Object hand-over between robot and actor
CN112601641B (zh) * 2018-08-23 2024-03-08 实时机器人有限公司 用于机器人运动规划的碰撞检测
DE102019122790B4 (de) 2018-08-24 2021-03-25 Nvidia Corp. Robotersteuerungssystem
US11833681B2 (en) * 2018-08-24 2023-12-05 Nvidia Corporation Robotic control system
US11724401B2 (en) * 2019-11-13 2023-08-15 Nvidia Corporation Grasp determination for an object in clutter
US11331799B1 (en) * 2019-12-31 2022-05-17 X Development Llc Determining final grasp pose of robot end effector after traversing to pre-grasp pose

Also Published As

Publication number Publication date
US20230202031A1 (en) 2023-06-29
CN114004329A (zh) 2022-02-01
DE102021118885A1 (de) 2022-02-03
US20220032454A1 (en) 2022-02-03
US11597078B2 (en) 2023-03-07
DE102021118885B4 (de) 2022-11-10

Similar Documents

Publication Publication Date Title
US11833681B2 (en) Robotic control system
US20240042601A1 (en) Robotic control system
JP7491808B2 (ja) 手持ち物体の姿勢追跡
US20210086364A1 (en) Vision-based teleoperation of dexterous robotic system
US20210125052A1 (en) Reinforcement learning of tactile grasp policies
JP2020192676A (ja) 変分把持生成
US20210398338A1 (en) Image generation using one or more neural networks
US20210383533A1 (en) Machine-learning-based object detection system
JP2021033997A (ja) 1つ又は複数のニューラル・ネットワークを使用した視線検出
US11597078B2 (en) Machine learning control of object handovers
US20210125036A1 (en) Determining object orientation from an image with machine learning
JP2023502575A (ja) 画像内の物体の向きを予測するためのニューラル・ネットワークを使用する訓練及び推論
JP2021099788A (ja) クラッタ内の物体向けの把持姿勢決定
JP2023500608A (ja) ニューラル・ネットワークにおいて分布外入力データを識別するためのプロセッサ及びシステム
US20220398456A1 (en) Identification of multi-scale features using a neural network
US20210233273A1 (en) Determining a 3-d hand pose from a 2-d image using machine learning
US20210192287A1 (en) Master transform architecture for deep learning
JP2023500065A (ja) ニューラル・ネットワークの逆伝播用の分配された重み更新
US20210133990A1 (en) Image aligning neural network
EP3816853A1 (en) Gaze determination using one or more neural networks
US20220222477A1 (en) Performing non-maximum suppression in parallel
US20210183088A1 (en) Depth estimation using a neural network
JP2022185572A (ja) ニューラル・ネットワークを用いた分類のための技法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230227

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240216

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20240516