DE102020124285B4 - Vision-based teleoperation of a moving robotic system - Google Patents

Vision-based teleoperation of a moving robotic system Download PDF

Info

Publication number
DE102020124285B4
DE102020124285B4 DE102020124285.9A DE102020124285A DE102020124285B4 DE 102020124285 B4 DE102020124285 B4 DE 102020124285B4 DE 102020124285 A DE102020124285 A DE 102020124285A DE 102020124285 B4 DE102020124285 B4 DE 102020124285B4
Authority
DE
Germany
Prior art keywords
hand
pose
computer
memory
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.)
Active
Application number
DE102020124285.9A
Other languages
German (de)
Other versions
DE102020124285A1 (en
Inventor
Ankur Handa
Karl Van Wyk
Wei Yang
Yu-Wei Chao
Dieter Fox
Qian Wan
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
Priority claimed from US16/932,067 external-priority patent/US20210086364A1/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102020124285A1 publication Critical patent/DE102020124285A1/en
Application granted granted Critical
Publication of DE102020124285B4 publication Critical patent/DE102020124285B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J13/00Controls for manipulators
    • B25J13/02Hand grip control means
    • 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/1679Programme controls characterised by the tasks executed
    • B25J9/1689Teleoperation
    • 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
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/017Gesture based interaction, e.g. based on a set of recognized hand gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • G06V20/653Three-dimensional objects by matching three-dimensional models, e.g. conformal mapping of Riemann surfaces
    • 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
    • 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/20Movements or behaviour, e.g. gesture recognition
    • G06V40/28Recognition of hand or arm movements, e.g. recognition of deaf sign language
    • 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/40155Purpose is grasping objects
    • 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/40591At least three cameras, for tracking, general overview and underview

Abstract

Computerimplementiertes Verfahren, umfassend:Bestimmen (1406), aus einem Bild einer Hand (102, 106, 110, 114, 802-817), einer ersten Pose (702) der Hand;Übersetzen (1408) der ersten Pose (702) der Hand (102, 106, 110, 114, 802-817) in eine entsprechende zweite Pose einer Roboterhand (104, 108, 112, 116, 204, 704, 818-833),Bestimmen (1410) eines Satzes von Bewegungen, der die Roboterhand (104, 108, 112, 116, 204, 704, 818-833) von einer ersten Pose der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) in die zweite Pose umstellt;Veranlassen (1412) der Roboterhand (104, 108, 112, 116, 204, 704, 818-833), den Satz von Bewegungen auszuführen; undkinematisches Nachstellen (314) der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) durch Minimieren einer Kostenfunktion, welche zumindest auf Vektoren, die von primären Fingern (406, 408, 410) der Hand (102, 106, 110, 114, 802-817) ausgehen und auf den Daumen (412) der Hand (102, 106, 110, 114, 802-817) zeigen, und Vektoren, die zwischen den primären Fingern (406, 408, 410) der Hand (102, 106, 110, 114, 802-817) verlaufen, basiert.A computer-implemented method comprising: determining (1406), from an image of a hand (102, 106, 110, 114, 802-817), a first pose (702) of the hand; translating (1408) the first pose (702) of the hand (102, 106, 110, 114, 802-817) into a corresponding second pose of a robot hand (104, 108, 112, 116, 204, 704, 818-833), determining (1410) a set of motions that the robot hand (104, 108, 112, 116, 204, 704, 818-833) transitions from a first pose of the robotic hand (104, 108, 112, 116, 204, 704, 818-833) to the second pose; causing (1412) the robotic hand (104, 108, 112, 116, 204, 704, 818-833) to perform the set of movements; andkinematically adjusting (314) the robotic hand (104, 108, 112, 116, 204, 704, 818-833) by minimizing a cost function based at least on vectors derived from primary fingers (406, 408, 410) of the hand (102, 106, 110, 114, 802-817) pointing to the thumb (412) of the hand (102, 106, 110, 114, 802-817), and vectors pointing between the primary fingers (406, 408, 410) of the hand (102, 106, 110, 114, 802-817).

Description

TECHNISCHER BEREICHTECHNICAL PART

Mindestens ein Ausführungsbeispiel bezieht sich auf den Einsatz von Robotern zur Ausführung und Erleichterung von Aufgaben unter der Kontrolle eines menschlichen Bedieners. Zum Beispiel bezieht sich mindestens ein Ausführungsbeispiel auf die Steuerung eines Roboterarms durch Nachahmung einer Aktion einer menschlichen Hand gemäß verschiedenen neuartigen Techniken, die hier beschrieben werden.At least one embodiment relates to the use of robots to perform and facilitate tasks under the control of a human operator. For example, at least one embodiment relates to controlling a robotic arm by mimicking an action of a human hand according to various novel techniques described herein.

HINTERGRUNDBACKGROUND

Die Steuerung von Robotern zur Ausführung von Aufgaben kann ein schwieriges und herausforderndes Problem sein. Ein Verfahren zur Steuerung eines Roboters ist die direkte Steuerung durch den Menschen. Zum Beispiel sind einige Robotersysteme mit einem Joystick oder einer Programmierschnittstelle ausgestattet, die es dem Bediener ermöglichen, den Roboter zu bewegen. Solche Schnittstellen sind jedoch in der Regel nicht intuitiv und schwierig zu bedienen und erfordern ein erhebliches Training und viel Übung in der Anwendung. Dies gilt insbesondere, wenn der Bediener versucht, eine komplexe Aufgabe wie eine Interaktion mit anderen Objekten auszuführen.Controlling robots to perform tasks can be a difficult and challenging problem. One method of controlling a robot is direct human control. For example, some robotic systems are equipped with a joystick or programming interface that allows the operator to move the robot. However, such interfaces tend to be unintuitive and difficult to use, requiring significant training and practice to use. This is especially true when the operator is attempting to perform a complex task such as interacting with other objects.

In diesem Zusammenhang offenbart die US 2013/0211592 A1 ein Teleoperationssystem, das es einem Roboterarm ermöglicht, sich zu bewegen, indem er einer Bewegung einer Handbewegung eines Benutzers folgt, ohne eine zusätzliche mechanische Vorrichtung. Das Teleoperationssystem umfasst einen Folgeroboter mit einem Roboterarm und eine Hauptkonsole, die so ausgebildet ist, dass sie eine Geste eines Benutzers erfasst und den Folgeroboter von einem entfernten Ort aus steuert, so dass sich der Folgeroboter bewegt, indem er der Geste des Benutzers folgt.In this context, the U.S. 2013/0211592 A1 a teleoperation system that allows a robotic arm to move by following a movement of a user's hand movement without an additional mechanical device. The teleoperation system includes a follower robot having a robot arm, and a main console configured to detect a user's gesture and control the follower robot from a remote location so that the follower robot moves by following the user's gesture.

Die DE 11 2004 002 219 T5 betrifft ein Verfahren zum Antreiben eines Roboters. Der Roboter kann eine gleiche Bewegung wie die eines sich bewegenden Objekts oder einer Nachahmung davon ausführen, indem ein Bild des sich bewegenden Objekts oder seiner Nachahmung erzielt wird. Der Roboter kann daher leicht unter Verwenden von Bilddaten als Eingangsdaten angetrieben werden. Wenn das sich bewegende Objekt die Hand eines Menschen ist, kann eine Genauigkeit eines Spezifizierens der Bilddaten erhöht werden, wenn die Bilddaten Daten enthalten, die unter Berücksichtigung eines individuellen Unterschieds an der menschlichen Hand geschaffen werden. Die Elemente, die für individuelle Unterschiede ausschlaggebend sind, umfassen die Krümmung von Positionen von Fingergrundgelenken von vier Fingern mit Ausnahme des Daumens, den Schub des Fingergrundgelenks des Daumens, einen Öffnungswinkel zwischen zwei benachbarten Fingern, den Unterschied von Referenzwinkeln zweier sich öffnender Finger und die Wölbung des Daumens.the DE 11 2004 002 219 T5 relates to a method for driving a robot. The robot can perform a motion similar to that of a moving object or an imitation thereof by obtaining an image of the moving object or its imitation. The robot can therefore be easily driven using image data as input data. When the moving object is a human's hand, an accuracy of specifying the image data can be increased when the image data includes data created considering an individual difference in the human hand. The elements that determine individual differences include the curvature of positions of phalanges of four fingers except the thumb, the thrust of the phalanges of the thumb, an opening angle between two adjacent fingers, the difference of reference angles of two opening fingers, and the bulge of the thumb.

Die US 10,406,686 B2 offenbart ein System zur Erzeugung von Anweisungen für den Betrieb eines Roboters zur Durchführung von Arbeiten an einem Werkstück. Das System verfügt über ein 3D-Modell oder Modelle einer Roboterszene, die Roboterszenendaten bereitstellen. Das System verfügt auch über Daten einer oder beider Hände einer Geste, die mit der einen oder beiden Händen gemacht wurde, und über eine Berechnungsvorrichtung, die einen Programmcode enthält, der die Roboterszenendaten und die Gestendaten verarbeitet, um eine Anweisung zum Betrieb des Roboters zu erzeugen. Position und Ausrichtung der Hand und eines Fingers können verwendet werden, um eine entsprechende Position und Ausrichtung des Roboterwerkzeugs in der Roboterszene zu berechnen. Eine Möglichkeit zur Berechnung des Roboterziels besteht darin, die Fingerrichtung mit den Szenendaten zu schneiden. Dies kann durch ein Bild der Szene oder ein CAD der Szene geschehen.the U.S. 10,406,686 B2 discloses a system for generating instructions for operating a robot to perform operations on a workpiece. The system has a 3D model or models of a robot scene that provide robot scene data. The system also has data from one or both hands of a gesture made with one or both hands and a computing device containing program code that processes the robot scene data and the gesture data to generate an instruction for operating the robot . Position and orientation of the hand and a finger can be used to calculate a corresponding position and orientation of the robot tool in the robot scene. One way to calculate the robot target is to intersect the finger direction with the scene data. This can be done with an image of the scene or a CAD of the scene.

Die JP 2015-071206 A stellt eine Steuervorrichtung, einen Roboter, ein Verfahren zur Erzeugung von Lehrdaten und ein Programm, das in der Lage ist, Trainingskosten für einen Roboterbetrieb bei einem Haltevorgang und einen Betrieb an einem Werkstück durch ein gehaltenes Werkzeug zu reduzieren, bereit. Die Steuervorrichtung umfasst: eine Bilderkennungseinheit zum Durchführen einer Bilderkennungsverarbeitung und eine Verarbeitungseinheit zum Durchführen einer spezifischen Verarbeitung von Positionslagedaten, die die Positionslage eines Halteteils anzeigen, und einer Erzeugungsverarbeitung von Trainingsdaten des Roboters. Außerdem führt die Bilderkennungseinheit eine Bilderkennungsverarbeitung an einem aufgenommenen Bild des Haltezustands durch, in dem die Hand eines Trainers ein Werkzeug hält. Auf der Grundlage des Ergebnisses der Bilderkennungsverarbeitung des Haltezustands erzeugt die Verarbeitungseinheit die Trainingsdaten, die die Positionseinstellungsdaten des Halteteils im Haltezustand enthalten.the JP 2015-071206 A provides a control device, a robot, a teaching data generation method, and a program capable of reducing training costs for a robot operation in a holding operation and an operation on a workpiece by a held tool. The control device includes: an image recognition unit for performing image recognition processing, and a processing unit for performing specific processing of posture data indicating the posture of a holding part and generation processing of training data of the robot. In addition, the image recognition unit performs image recognition processing on a captured image of the holding state in which a trainer's hand holds a tool. Based on the result of the image recognition processing of the holding state, the processing unit generates the training data including the position adjustment data of the holding part in the holding state.

Die JP 2011-110620 A betrifft ein Verfahren zum Steuern einer Handlung eines Roboters. Eine monokulare Kamera und eine Stereokamera nehmen ein Trainingsbild einschließlich eines Handgelenks und einer Hand eines Trainers auf. Eine Steuervorrichtung bestimmt die Fingerkoordinaten, die die Gelenke der Finger und die Positionen der Fingerspitzen angeben, auf der Grundlage des Lehrbildes und berechnet einen Winkel jedes Gelenks einer Roboterhand auf der Grundlage der Fingerkoordinaten.the JP 2011-110620 A relates to a method for controlling an action of a robot. A monocular camera and a stereo camera capture a training image including a wrist and a hand of a trainer. A controller determines finger coordinates indicating the joints of the fingers and the positions of the fingertips based on the teaching image and calculates an angle of each joint of a robot hand based on the finger coordinates.

Die CN 104589356 A betrifft ein Verfahren zur teleoperativen Steuerung einer künstlichen Hand auf der Grundlage einer Handbewegungserfassung. Nachdem zunächst eine Außenkontur der Hand mit einem hybriden aktiven Konturmodell verfolgt wurde, wird ein Partikelfilter-Algorithmus angewandt, um die Handposition zu verfolgen. Ein aktives Konturmodell, das Tiefeninformationen und die YCbCr-Hautfarbenerkennungsraumtechnologie kombiniert, wird verwendet, um das Problem zu lösen, eine Lösung zu erhalten, wenn das Bild starkes Rauschen enthält oder das Ziel schwache Grenzen hat. Eine Partikelfilter-Positionserkennungsmethode auf der Grundlage von Template-Matching wird verwendet, die die dreidimensionale Pose einer menschlichen Hand mit hochdimensionalen Merkmalen erkennen und schätzen kann.the CN 104589356A relates to a method for teleoperative control of an artificial hand based on hand movement detection. After first tracking an outer contour of the hand with a hybrid active contour model, a particle filter algorithm is applied to track the hand position. An active contour model combining depth information and YCbCr skin color detection space technology is used to solve the problem of getting a solution when the image contains strong noise or the target has weak boundaries. A particle filter position detection method based on template matching is used, which can detect and estimate the three-dimensional pose of a human hand with high-dimensional features.

Die Verbesserung von Teleoperationsschnittstellen eine wichtige Aufgabe auf dem Gebiet der Robotersteuerung.The improvement of teleoperation interfaces is an important task in the field of robot control.

Diese Aufgabe wird gemäß der vorliegenden Erfindung durch ein computerimplementiertes Verfahren, ein System und ein computerlesbares Medium, wie sie in den unabhängigen Ansprüchen definiert sind, gelöst. Die abhängigen Ansprüche definieren Ausführungsformen der Erfindung.This object is solved according to the present invention by a computer-implemented method, a system and a computer-readable medium as defined in the independent claims. The dependent claims define embodiments of the invention.

Figurenlistecharacter list

  • 1 zeigt Beispiele für Teleoperationen für verschiedene Aufgaben, gemäß mindestens einem Ausführungsbeispiel; 1 Figure 12 shows examples of teleoperations for various tasks, according to at least one embodiment;
  • 2 zeigt ein Beispiel für einen Roboterarm und eine Roboterhand, gemäß mindestens einem Ausführungsbeispiel; 2 shows an example of a robot arm and a robot hand, according to at least one embodiment;
  • 3 zeigt ein Beispiel für ein System, das die Bewegung einer menschlichen Hand verfolgt und die Bewegungen in entsprechende Bewegungen eines Roboterarms übersetzt, gemäß mindestens einem Ausführungsbeispiel; 3 12 shows an example of a system that tracks the movement of a human hand and translates the movements into corresponding movements of a robotic arm, according to at least one embodiment;
  • 4 zeigt ein Beispiel eines Handschuhs, der zur Unterstützung beim Abschätzen einer Handpose verwendet werden kann, gemäß mindestens einem Ausführungsbeispiel; 4 12 shows an example of a glove that may be used to assist in estimating a hand pose, in accordance with at least one embodiment;
  • 5 zeigt ein Beispiel für eine Architektur eines Systems, das eine Handpose bestimmt, gemäß mindestens einem Ausführungsbeispiel; 5 12 shows an example of an architecture of a system that determines a hand pose, according to at least one embodiment;
  • 6 zeigt ein Beispiel für das Abschätzen einer Handpose aus einer Punktewolke, gemäß mindestens einem Ausführungsbeispiel; 6 12 shows an example of estimating a hand pose from a point cloud, according to at least one embodiment;
  • 7 zeigt ein Beispiel für eine Pose einer menschlichen Hand und einen Robotergreifer, der eine entsprechende Pose ausführt, gemäß mindestens einem Ausführungsbeispiel; 7 12 shows an example of a pose of a human hand and a robotic gripper performing a corresponding pose, according to at least one embodiment;
  • 8 zeigt ein Beispiel für Posen einer menschlichen Hand und entsprechende Posen eines Robotergreifers, gemäß mindestens einem Ausführungsbeispiel; 8th 12 shows an example of poses of a human hand and corresponding poses of a robot gripper, according to at least one embodiment;
  • 9 zeigt ein Beispiel für eine Aufgabe, bei der ein Roboter gesteuert wird, um Papier aus einer gefalteten Brieftasche zu entnehmen, gemäß mindestens einem Ausführungsbeispiel; 9 Figure 12 shows an example of a task in which a robot is controlled to remove paper from a folded wallet, according to at least one embodiment;
  • 10 zeigt ein Beispiel für eine Aufgabe, bei der ein Roboter gesteuert wird, um einen Gegenstand aus einer Schublade zu entnehmen, gemäß mindestens einem Ausführungsbeispiel; 10 Figure 12 shows an example of a task in which a robot is controlled to retrieve an item from a drawer, in accordance with at least one embodiment;
  • 11 zeigt ein Beispiel für eine Aufgabe, bei der ein Roboter gesteuert wird, um ein Gefäß zu öffnen, gemäß mindestens einem Ausführungsbeispiel; 11 Figure 12 shows an example of a task in which a robot is controlled to open a vessel, according to at least one embodiment;
  • 12 zeigt ein Beispiel für die Ausführungszeit von Teleoperationsaufgaben, gemäß einem Ausführungsbeispiel; 12 Figure 12 shows an example of the execution time of teleoperation tasks, according to one embodiment;
  • 13 zeigt ein Beispiel für die Erfolgsrate von Teleoperationsaufgaben, gemäß einem Ausführungsbeispiel; 13 Figure 12 shows an example of the success rate of teleoperation tasks, according to one embodiment;
  • 14 zeigt ein Beispiel für einen Prozess, der als Ergebnis der Ausführung durch ein Computersystem einen Roboterarm zur Ausführung einer Aufgabe lenkt, indem er die Bewegung einer menschlichen Hand emuliert; 14 Figure 12 shows an example of a process that, as a result of execution by a computer system, directs a robotic arm to perform a task by emulating the movement of a human hand;
  • 15A zeigt eine Inferenz und/oder Trainingslogik, gemäß mindestens einem Ausführungsbeispiel; 15A 12 shows an inference and/or training logic, according to at least one embodiment;
  • 15B zeigt eine Inferenz und/oder Trainingslogik, gemäß mindestens einem Ausführungsbeispiel; 15B 12 shows an inference and/or training logic, according to at least one embodiment;
  • 16 zeigt ein Training und den Einsatz eines neuronalen Netzes, gemäß mindestens einem Ausführungsbeispiel; 16 shows a training and the use of a neural network, according to at least one embodiment;
  • 17 zeigt ein Beispiel für ein Datenzentrums-System, gemäß mindestens einem Ausführungsbeispiel; 17 Figure 12 shows an example of a data center system, according to at least one embodiment;
  • 18A zeigt ein Beispiel für ein autonomes Fahrzeug, gemäß mindestens einem Ausführungsbeispiel; 18A shows an example of an autonomous vehicle, according to at least one embodiment;
  • 18B zeigt ein Beispiel von Kamerapositionen und Sichtfeldern für das autonome Fahrzeug der 18A, gemäß mindestens einem Ausführungsbeispiel; 18B shows an example of camera positions and fields of view for the autonomous vehicle 18A , according to at least one embodiment;
  • 18C zeigt ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug der 18A zeigt, gemäß mindestens einem Ausführungsbeispiel; 18C FIG. 12 is a block diagram showing an example system architecture for the autonomous vehicle of FIG 18A shows, according to at least one embodiment;
  • 18D ist ein Diagramm, das ein System zur Kommunikation zwischen cloud-basierten Servern und dem autonomen Fahrzeug der 18A zeigt, gemäß mindestens einem Ausführungsbeispiel; 18D is a diagram showing a system for communication between cloud-based servers and the autonomous vehicle of the 18A shows, according to at least one embodiment;
  • 19 ist ein Blockdiagramm, das ein Computersystem zeigt, gemäß mindestens einem Ausführungsbeispiel; 19 Figure 12 is a block diagram showing a computer system according to at least one embodiment;
  • 20 ist ein Blockdiagramm, das ein Computersystem zeigt, gemäß mindestens einem Ausführungsbeispiel; 20 Figure 12 is a block diagram showing a computer system according to at least one embodiment;
  • 21 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel; 21 Figure 12 shows a computer system, according to at least one embodiment;
  • 22 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel; 22 Figure 12 shows a computer system, according to at least one embodiment;
  • 23A zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel; 23A Figure 12 shows a computer system, according to at least one embodiment;
  • 23B zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel; 23B Figure 12 shows a computer system, according to at least one embodiment;
  • 23C zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel; 23C Figure 12 shows a computer system, according to at least one embodiment;
  • 23D zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel; 23D Figure 12 shows a computer system, according to at least one embodiment;
  • 23E und 23F zeigen ein gemeinsames Programmiermodell, gemäß mindestens einem Ausführungsbeispiel; 23E and 23F show a common programming model, according to at least one embodiment;
  • 24 zeigt beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren, gemäß mindestens einem Ausführungsbeispiel; 24 Figure 12 shows example integrated circuits and associated graphics processors, according to at least one embodiment;
  • 25A und 25B zeigen beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren, gemäß mindestens einem Ausführungsbeispiel; 25A and 25B 12 show example integrated circuits and associated graphics processors, according to at least one embodiment;
  • 26A und 26B zeigen weitere beispielhafte Grafikprozessorlogik, gemäß mindestens einem Ausführungsbeispiel; 26A and 26B Figure 12 shows further example graphics processor logic, in accordance with at least one embodiment;
  • 27 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel; 27 Figure 12 shows a computer system, according to at least one embodiment;
  • 28A zeigt einen Parallelprozessor, gemäß mindestens einem Ausführungsbeispiel; 28A Figure 12 shows a parallel processor, according to at least one embodiment;
  • 28B zeigt eine Partitionseinheit, gemäß mindestens einem Ausführungsbeispiel; 28B Figure 12 shows a partition unit, according to at least one embodiment;
  • 28C zeigt einen Verarbeitungscluster, gemäß mindestens einem Ausführungsbeispiel; 28C 12 shows a processing cluster, according to at least one embodiment;
  • 28D zeigt einen Grafik-Multiprozessor, gemäß mindestens einem Ausführungsbeispiel; 28D 12 shows a graphics multiprocessor, according to at least one embodiment;
  • 29 zeigt ein Multi-Grafikverarbeitungssystem (engl. Multi-Graphics Processing Unit, 29 shows a multi-graphics processing unit
  • GPU), gemäß mindestens einem Ausführungsbeispiel;GPU), according to at least one embodiment;
  • 30 zeigt einen Grafikprozessor, gemäß mindestens einem Ausführungsbeispiel; 30 12 shows a graphics processor, according to at least one embodiment;
  • 31 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor zeigt, gemäß mindestens einem Ausführungsbeispiel; 31 12 is a block diagram showing a processor microarchitecture for a processor, according to at least one embodiment;
  • 32 zeigt einen Prozessor für Deep Learning-Anwendungen, gemäß mindestens einem Ausführungsbeispiel; 32 12 shows a processor for deep learning applications, according to at least one embodiment;
  • 33 zeigt ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor zeigt, gemäß mindestens einem Ausführungsbeispiel; 33 12 is a block diagram showing an example neuromorphic processor, according to at least one embodiment;
  • 34 zeigt mindestens Teile eines Grafikprozessors, gemäß einem oder mehreren Ausführungsbeispielen; 34 12 shows at least parts of a graphics processor, according to one or more embodiments;
  • 35 zeigt zumindest Teile eines Grafikprozessors, gemäß einem oder mehreren Ausführungsbeispielen; 35 12 shows at least parts of a graphics processor, according to one or more embodiments;
  • 36 zeigt zumindest Teile eines Grafikprozessors, gemäß einem oder mehreren Ausführungsbeispielen; 36 12 shows at least parts of a graphics processor, according to one or more embodiments;
  • 37 zeigt ein Blockdiagramm der Grafikverarbeitungs-Engine 3710 eines Grafikprozessors, gemäß mindestens einem Ausführungsbeispiel. 37 3710 shows a block diagram of the graphics processing engine 3710 of a graphics processor, according to at least one embodiment.
  • 38 zeigt ein Blockdiagramm von zumindest Teilen eines Grafikprozessorkerns, gemäß mindestens einem Ausführungsbeispiel; 38 12 shows a block diagram of at least parts of a graphics processor core, according to at least one embodiment;
  • 39A und 39B zeigen eine Thread-Ausführungslogik 3900, umfassend ein Array von Verarbeitungselementen eines Grafikprozessorkerns, gemäß mindestens einem Ausführungsbeispiel; 39A and 39B 12 show thread execution logic 3900 comprising an array of processing elements of a graphics processor core, according to at least one embodiment;
  • 40 zeigt eine Parallelverarbeitungseinheit („PPU“), gemäß mindestens einem Ausführungsbeispiel; 40 Figure 12 shows a parallel processing unit (“PPU”), according to at least one embodiment;
  • 41 zeigt einen allgemeinen Verarbeitungscluster („GPC“), gemäß mindestens einem Ausführungsbeispiel; 41 12 shows a general processing cluster ("GPC"), according to at least one embodiment;
  • 42 zeigt eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“), gemäß mindestens einem Ausführungsbeispiel; und 42 Figure 12 shows a memory partition unit of a parallel processing unit ("PPU"), according to at least one embodiment; and
  • 43 zeigt einen Streaming-Multiprozessor, gemäß mindestens einem Ausführungsbeispiel. 43 12 shows a streaming multiprocessor, according to at least one embodiment.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Das vorliegende Dokument beschreibt ein System und Verfahren zur Steuerung eines Roboters mittels Teleoperation. In mindestens einem Ausführungsbeispiel schätzt das System die Pose einer menschlichen Hand ab und lenkt dann einen Roboter in eine entsprechende Pose. In einem Beispiel führt ein menschlicher Bediener mit seiner Hand eine Bewegung aus, die mit einer Tiefenkamera erfasst wird, und das System verwendet die Daten der Tiefenkamera, um eine Punktwolke zu erzeugen. Die Punktwolke wird verarbeitet, um eine Pose der Hand zu bestimmen. Die Handpose identifiziert die Position der Fingerspitzen der Hand und eine Approximation der Gelenkwinkel und -knochen der Hand. Das System übersetzt dann die Pose der Hand in eine entsprechende Pose einer Roboterhand. In einigen Beispielen korrigiert das System Unterschiede in der Größe der Roboterhand und Unterschiede in der Anzahl der Finger zwischen der menschlichen Hand und der Roboterhand. In einigen Beispielen kann die Pose einer menschlichen Hand in eine Roboterhand mit einer größeren oder kleineren Anzahl von Fingern übersetzt werden. In einigen Beispielen kann die Pose einer menschlichen Hand in die Pose eines Baggers, Industrieroboters oder Fahrzeugs übersetzt werden. Beispielsweise kann ein Mensch die Form einer Klaue oder Schaufel auf Erdbewegungsmaschinen nachahmen, und das System kann die Pose einer menschlichen Hand in eine entsprechende Pose der Klaue oder Schaufel übersetzen und so eine intuitive Steuerung der Maschine bereitstellen. Der menschliche Bediener kann den Roboter entweder direkt oder aus der Ferne über eine Videoanzeige betrachten und ist in der Lage, den Roboter zur Ausführung einer Aufgabe anzuweisen, indem er die gewünschte Bewegung in Echtzeit dupliziert.This document describes a system and method for controlling a robot using teleoperation. In at least one embodiment, the system estimates the pose of a human hand and then directs a robot into an appropriate pose. In one example, a human operator performs a hand motion that is captured with a depth camera, and the system uses the depth camera data to generate a point cloud. The point cloud is processed to determine a pose of the hand. The hand pose identifies the position of the fingertips of the hand and an approximation of the joint angles and bones of the hand. The system then translates the pose of the hand into a corresponding pose of a robot hand. In some examples, the system corrects for differences in the size of the robot hand and differences in the number of fingers between the human hand and the robot hand. In some examples, the pose of a human hand can be translated into a robotic hand with a greater or lesser number of fingers. In some examples, the pose of a human hand can be translated into the pose of an excavator, industrial robot, or vehicle. For example, a human can mimic the shape of a claw or shovel on earthmoving machines and the system can translate the pose of a human hand into a corresponding pose of the claw or shovel, thus providing intuitive control of the machine. The human operator can view the robot either directly or remotely via a video display and is able to command the robot to perform a task by duplicating the desired movement in real time.

In mindestens einem Ausführungsbeispiel bietet die Teleoperation die Möglichkeit, Robotersysteme mit ausgeklügeltem logischen Denken, Intuition und Kreativität zur Erfüllung von Aufgaben auszustatten. Mindestens ein hier beschriebenes Beispiel ist ein kostengünstiges, auf Bildverarbeitung basierendes Teleoperationssystem, das durch Beobachtung einer bloßen menschlichen Hand die vollständige Kontrolle über das gesamte 23 autonome (DoA-) Robotersystem ermöglicht. Einige Beispiele ermöglichen es Bedienern, eine Vielzahl komplexer Manipulationsaufgaben auszuführen, die über einfache Pick-and-Place-Vorgänge hinausgehen. In mindestens einem Ausführungsbeispiel können hochdimensionale, multimodale Zustandsdaten gesammelt werden, die in Zukunft genutzt werden können, um sensomotorische Strategien für anspruchsvolle Manipulationsaufgaben zu erlernen. Die Systemleistung von mindestens einem Ausführungsbeispiel wird durch Geschwindigkeits- und Zuverlässigkeitsmetriken für zwei menschliche Demonstratoren bei einer Vielzahl von Aufgaben gemessen. In verschiedenen Ausführungsbeispielen kann das System durch ein oder mehrere Systeme implementiert werden, wie in 15-42 beschrieben/abgebildet.In at least one embodiment, teleoperation provides the ability to provide robotic systems with sophisticated reasoning, intuition, and creativity to accomplish tasks. At least one example described here is a low-cost, vision-based teleoperation system that allows full control over the entire 23 autonomous (DoA) robotic system by observing a bare human hand. Some examples allow operators to perform a variety of complex manipulation tasks beyond simple pick and place operations. In at least one embodiment, high-dimensional, multimodal status data can be collected that can be used in the future to learn sensorimotor strategies for demanding manipulation tasks. The system performance of at least one embodiment is measured by speed and reliability metrics for two human demonstrators on a variety of tasks. In various embodiments, the system can be implemented by one or more systems, as in 15-42 described/illustrated.

Verschiedene Ausführungsbeispiele können in den Bereichen Suche und Rettung, Raumfahrt, Medizin, Prothetik und angewandtes maschinelles Lernen angewandt werden. In mindestens einem Ausführungsbeispiel ermöglicht die Teleoperation einem Robotersystem, komplexe Aufgaben auszuführen, indem es sich die Kognition, Kreativität und Reaktionsfähigkeit des Menschen über eine Mensch-Maschine-Schnittstelle („HMI“) zunutze macht. In mindestens einem Ausführungsbeispiel werden haptisches Feedback und eine verbesserte Skelett- und Fingerverfolgung des Menschen einbezogen. Mindestens ein Ausführungsbeispiel ist eine kostengünstige, marker- und handschuhlose Teleoperationslösung, die Innovationen in den Bereichen maschinelles Sehen, Optimierung, Bewegungserzeugung und GPU-Computing nutzt. Mindestens ein Ausführungsbeispiel verfügt über die Fähigkeit, feine, gelenkige Manipulationen zu erfassen und weiterzugeben, um ein hochgradig bewegliches Robotersystem zur Lösung einer Vielzahl von Greif- und Manipulationsaufgaben anzusteuern. In einem Beispiel erzeugten vier Intel RealSense-Tiefenkameras und zwei NVIDIA-GPUs in Kombination mit Deep Learning und nichtlinearer Optimierung ein gelenkiges Teleoperationssystem mit minimalem Platzbedarf. Trotz des Mangels an taktilem Feedback ist das System durch die menschliche Kognition sehr leistungsfähig und effektiv. In mindestens einem Ausführungsbeispiel bestätigt dieses Ergebnis Studien über den menschlichen Blick, die darauf hindeuten, dass Menschen lernen, das Sehvermögen zur Planung, Steuerung und Zustandsvorhersage von Handaktionen zu nutzen, bevor sie ihre Hand präzise steuern. Bei einigen Beispielen kann es sich bei den Tiefenkameras um RADAR- oder LIDAR-basierte Bildgebungssysteme oder um medizinische Bildgebungssysteme wie Magnetresonanz-Bildgebungsgeräte oder Röntgenbildgebungsgeräte handeln.Various example embodiments may be applied in the fields of search and rescue, space travel, medicine, prosthetics, and applied machine learning. In at least one embodiment, teleoperation enables a robotic system to perform complex tasks by itself that harnesses human cognition, creativity and responsiveness via a human-machine interface (“HMI”). In at least one embodiment, haptic feedback and enhanced human skeletal and finger tracking are incorporated. At least one embodiment is a low-cost, marker-less, glove-less teleoperation solution that leverages innovations in computer vision, optimization, motion generation, and GPU computing. At least one embodiment has the ability to sense and relay fine, articulated manipulations to drive a highly agile robotic system to perform a variety of gripping and manipulation tasks. In one example, four Intel RealSense depth cameras and two NVIDIA GPUs combined with deep learning and nonlinear optimization created an articulated teleoperation system with a minimal footprint. Despite the lack of tactile feedback, human cognition makes the system very powerful and effective. In at least one embodiment, this result supports studies of the human gaze that suggest that humans learn to use vision to plan, control, and predict state of hand actions before precisely controlling their hand. In some examples, the depth cameras may be RADAR or LIDAR based imaging systems, or medical imaging systems such as magnetic resonance imaging machines or X-ray imaging machines.

In verschiedenen Beispielen macht sich das Teleoperationssystem die Fähigkeit des Menschen zunutze, allein durch das Sehen seine physische Handlungen zu planen, auszuführen, und die Folgen seiner physischen Handlungen vorherzusagen - eine hinreichende Bedingung für die Lösung einer Vielzahl von Aufgaben. Verschiedene Ausführungsbeispiele haben einen oder mehrere der nachfolgend aufgeführten Vorteile: markerloses, handschuhloses und vollständig auf dem Sehvermögen basierendes Teleoperationssystem, das ein hochbewegliches Roboterhandarmsystem mit direkter Imitation gewandt positioniert, eine neuartige Kostenfunktion und ein Projektionsschema für die kinematische Neuausrichtung menschlicher Handgelenke auf Roboterhandgelenke, die die Geschicklichkeit der Hand und die Durchführbarkeit von Präzisionsgriffen bei Fehlern bei der Verfolgung der Gelenke der Hand bewahren, eine Demonstration eines Teleoperationssystems für eine Vielzahl von Aufgaben, die insbesondere Feinmanipulationen und Geschicklichkeit verlangen, wobei eine Systembeurteilung durch zwei trainierte menschliche Bediener (auch Piloten, oder Demonstratoren genannt) ergab, dass trotz des Fehlens eines taktilen Feedbacks hohe Erfolgsquoten bei den Aufgaben erzielt werden können.In various examples, the teleoperation system takes advantage of man's ability to plan and execute his physical actions and to predict the consequences of his physical actions by sight alone - a sufficient condition for the solution of a variety of tasks. Various embodiments have one or more of the following advantages: a marker-less, glove-less, and fully vision-based teleoperation system that dexterously positions a highly posable direct-mimic robotic hand-arm system, a novel cost function, and a projection scheme for the kinematic realignment of human wrists to robotic wrists that enhances the dexterity of the hand and preserving the feasibility of precision grips in the event of errors in tracking the joints of the hand, a demonstration of a teleoperation system for a variety of tasks requiring particular fine manipulation and dexterity, with system evaluation by two trained human operators (also called pilots, or demonstrators). ) showed that despite the lack of tactile feedback, high success rates can be achieved with the tasks.

Das entwickelte System ermöglicht in verschiedenen Ausführungsbeispielen eine solche geschickte Robotermanipulation durch Tiefenbeobachtungen der bloßen menschlichen Hand mit mehreren Kameras. In einigen Beispielen kann es sich bei dem System um ein vollständig auf Vision (Sicht) basierendes Teleoperationssystem ohne Handschuhe handeln, das ein hochbewegliches Roboterhandarmsystem durch direkte Imitation geschickt bewegt. Das System kann auch eine Reihe von Aufgaben übernehmen, die insbesondere Feinmanipulation und Geschicklichkeit erfordern (z.B. das Herausziehen von Papiergeld aus einer Brieftasche und das gleichzeitige Aufnehmen von zwei Würfeln mit vier Fingern, wie in 1 dargestellt).In various embodiments, the developed system enables such a skilful robot manipulation through depth observations of the bare human hand with several cameras. In some examples, the system may be a fully vision-based, gloveless teleoperation system that dexterously moves a highly maneuverable robotic hand-arm system through direct imitation. The system can also perform a number of tasks that require fine manipulation and dexterity in particular (e.g., pulling paper money out of a wallet and picking up two dice with four fingers at the same time, as in 1 shown).

1 zeigt ein Beispiel einer Teleoperation für verschiedene Aufgaben, gemäß mindestens einem Ausführungsbeispiel. In einem Beispiel greift ein Robotergreifer 104 einen Zylinder unter Verwendung einer Greifpose basierend auf einer Pose einer menschlichen Hand 102. In einem anderen Beispiel greift ein Robotergreifer 108 einen Würfel mit einer Greifpose basierend auf einer menschlichen Hand 106. In einem anderen Beispiel greift ein Robotergreifer 112 eine Tasse unter Verwenden einer Greifpose basierend auf einer menschlichen Hand 110. In einem anderen Beispiel greift ein Robotergreifer 116 eine Brieftasche unter Verwenden einer Greifpose basierend auf einer menschlichen Hand 114. 1 12 shows an example of a teleoperation for various tasks, according to at least one embodiment. In one example, a robot gripper 104 grips a cylinder using a gripping pose based on a pose of a human hand 102. In another example, a robot gripper 108 grips a cube with a gripping pose based on a human hand 106. In another example, a robot gripper 112 grips a cup using a gripping pose based on a human hand 110. In another example, a robot gripper 116 grips a wallet using a gripping pose based on a human hand 114.

Der Teleoperationsaufbau kann ein Robotersystem und eine angrenzende Arena für menschliche Bediener umfassen, wie in 2 dargestellt. 2 zeigt ein Beispiel für einen Roboter mit taktilen Sensoren gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel verfügt ein Roboter 202 über einen Robotergreifer 204, der zum Greifen von Objekten unter Verwendung von taktilen Sensoren eingesetzt wird. In mindestens einem Ausführungsbeispiel wird ein Satz von Kameras 206, 208, 210 und 212 verwendet, um den Arbeitsraum des Roboters 202 zu beobachten. In mindestens einem Ausführungsbeispiel umfasst der Greifer 204 einen Satz taktiler Sensoren 216, 218, 220 und 222, die sensorische Informationen an ein Steuercomputersystem liefern. In mindestens einem Ausführungsbeispiel können die taktilen Sensoren mit einem Reibungsmaterial bedeckt sein, um die Fähigkeit des Roboters, einen Gegenstand zu greifen, zu verbessern.The teleoperation setup may include a robotic system and an adjacent arena for human operators, as in 2 shown. 2 shows an example of a robot with tactile sensors according to at least one embodiment. In at least one embodiment, a robot 202 has a robot gripper 204 that is used to grip objects using tactile sensors. In at least one embodiment, a set of cameras 206, 208, 210, and 212 are used to view the robot's 202 workspace. In at least one embodiment, gripper 204 includes a set of tactile sensors 216, 218, 220, and 222 that provide sensory information to a control computer system. In at least one embodiment, the tactile sensors may be covered with a friction material to enhance the robot's ability to grasp an object.

In einigen Ausführungsbeispielen, wie in 2 dargestellt, kann das Robotersystem ein Arm der Serie KUKA LBR iiwa7 R800 mit einer Wonik Robotics Allegro-Hand sein, die mit vier SynTouch BioTac-Tastsensoren an den Fingerspitzen und einem 3M TB641-Griffband, das auf die Innenflächen der Fingerglieder und der Handfläche aufgebracht ist, nachgerüstet wurde, bei dem die gummiartigen Oberflächen sowohl der BioTac-Sensoren als auch des 3M-Bandes die Reibung der Hand verbessern können, während die BioTacs selbst 23 Signale erzeugen können, die später unter Verwendung von Demonstrationen zum Erlernen der sensomotorischen Steuerung verwendet werden können. Der menschliche Wirkungsbereich kann ein schwarz gekleideter Tisch sein, der von vier kalibrierten und zeitsynchronisierten Kameras, wie z.B. Intel RealSense RGB D-Kameras, umgeben ist, die räumlich so angeordnet sein können, dass sie einen Arbeitsbereich von 80 cm × 55 cm × 38 cm abdecken. In einigen Beispielen können sich die Kameras direkt neben dem Roboter befinden, um die Sichtlinie und die visuelle Nähe zu verbessern, da die Teleoperation vollständig auf menschlichem Sehen und räumlichem Denken basiert. Es sei darauf hingewiesen, dass 2 als ein Ausführungsbeispiel gedacht ist und das System in verschiedenen Ausführungsbeispielen jedes beliebige Robotersystem umfassen kann, das beliebige Roboterkomponenten (z.B. verschiedene Arten von Roboterarmen, Händen, taktilen Sensoren, Griffen, anderen Sensoren, Kameras und/oder Variationen davon) in einer beliebigen geeigneten Umgebung verwenden kann.In some embodiments, as in 2 shown, the robotic system can be a KUKA LBR iiwa7 R800 series arm with a Wonik Robotics Allegro hand equipped with four SynTouch BioTac tactile sensors on the fingertips and a 3M TB641 grip tape applied to the inner surfaces of the phalanges and palm, where the rubbery surfaces of both the BioTac sensors and the 3M tape can improve hand friction while the BioTacs themselves 23 can generate signals that can later be used to learn sensorimotor control using demonstrations. The human sphere of action can be a table dressed in black surrounded by four calibrated and time-synchronized cameras, such as Intel RealSense RGB D cameras, which can be spatially arranged to cover a working area of 80 cm × 55 cm × 38 cm cover. In some examples, the cameras can be right next to the robot to improve line of sight and visual proximity since teleoperation relies entirely on human vision and spatial reasoning. It should be noted that 2 is intended as an embodiment, and in various embodiments the system may include any robotic system using any robotic component (e.g., various types of robotic arms, hands, tactile sensors, handles, other sensors, cameras, and/or variations thereof) in any suitable environment can.

Um ein Teleoperationssystem mit natürlichem Gefühl zu erzeugen, kann ein Paradigma eines Imitationstyps verwendet werden. Die bloße Bewegung einer menschlichen Hand - Pose und Fingerkonfiguration - kann von einem visuellen Wahrnehmungsmodul ständig beobachtet und gemessen werden. Die Bewegung der menschlichen Hand kann dann so an das Robotersystem weitergeleitet werden, dass die kopierte Bewegung selbsterklärend ist. Dieser Ansatz kann es einem menschlichen Bediener ermöglichen, seine Finger zu krümmen und anzuordnen, Griffe zu bilden, seine Handflächen neu auszurichten und zu übersetzen, wobei das Robotersystem in ähnlicher Weise folgt. In mindestens einem Ausführungsbeispiel stützt sich das System stark auf das Dense Articulated Real Time Tracking („DART“), das das Rückgrat der Verfolgung der Pose und der Gelenkwinkel der menschlichen Hand bilden kann. Die Systemarchitektur und die Komponentenverbindungen sind in 3 in einem Ausführungsbeispiel dargestellt.To create a natural-feeling teleoperation system, an imitation-type paradigm can be used. The mere movement of a human hand - pose and finger configuration - can be constantly observed and measured by a visual perception module. The movement of the human hand can then be forwarded to the robot system in such a way that the copied movement is self-explanatory. This approach can allow a human operator to curve and arrange their fingers, form grips, reorient their palms, and translate, with the robotic system following in a similar fashion. In at least one embodiment, the system relies heavily on Dense Articulated Real Time Tracking ("DART"), which can form the backbone of tracking the pose and joint angles of the human hand. The system architecture and component connections are in 3 shown in one embodiment.

3 zeigt ein Beispiel für ein System, das eine menschliche Hand in Echtzeit verfolgt und einen Roboter so steuert, dass er eine entsprechende Bewegung ausführt, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel arbeitet das System unter Verwenden von drei Threads, die unabhängige Prozesse sind, die auf einem oder mehreren Prozessoren eines Computersystems laufen. In mindestens einem Ausführungsbeispiel stellt der Lern-Thread unter Verwendung einer fusionierten Eingabepunktwolke, die von vier Kameras aus dem Studio stammt, Handpose- und Gelenkwinkelvorgaben bereit. In mindestens einem Ausführungsbeispiel führt der Verfolgungs-Thread DART für die Handverfolgung mit den Vorgaben sowie für das kinematische Nachstellen (engl. kinematic retargeting) aus, das erforderlich ist, um die Konfiguration der menschlichen Hand der Allegro-Hand zuzuordnen. In mindestens einem Ausführungsbeispiel führt der Kontroll-Thread die Riemann'schen Bewegungsrichtlinien aus, um der KUKA- und Allegro-Hand angesichts der Handpose und der Gelenkwinkel die gemeinsamen Zielbefehle zur Verfügung zu stellen. 3 12 shows an example of a system that tracks a human hand in real time and controls a robot to perform a corresponding movement, according to at least one embodiment. In at least one embodiment, the system operates using three threads, which are independent processes running on one or more processors of a computer system. In at least one embodiment, the learning thread provides hand pose and joint angle presets using a fused input point cloud sourced from four cameras in the studio. In at least one embodiment, the tracking thread executes DART for default hand tracking and kinematic retargeting required to map the human hand configuration to the Allegro hand. In at least one embodiment, the thread of control executes the Riemannian motion policies to provide the KUKA and Allegro hands with the common targeting commands given the hand pose and joint angles.

In mindestens einem Ausführungsbeispiel werden ein oder mehrere Bilder einer Hand von Kameras mit RGB-Tiefe („RGB-D“) 302 erhalten. Die Bilder werden von einer Pointnet: Stufe 1 304, einer Pointnet:Stufe 2 306 und einem Jointnet 308 verarbeitet, um in den Bildern eine Handpose für die Hand zu erzeugen. In mindestens einem Ausführungsbeispiel werden ein bewegliches Handmodell 310 und die Handpose mit DART 312 und kinematischem Neuausrichten (Nachführen, Umstellen, Neubestimmen, Kinematic Retargeting) 314 verarbeitet, um eine entsprechende Handpose für einen Robotergreifer zu erzeugen. In mindestens einem Ausführungsbeispiel wendet ein Steuer-Thread die Riemann'schen Bewegungsrichtlinien 318 auf die Handpose des Greifers an, und die resultierenden Informationen werden zur Steuerung des Roboters 320 verwendet.In at least one embodiment, one or more images of a hand are obtained from RGB depth ("RGB-D") cameras 302 . The images are processed by a Pointnet:Stage 1 304, a Pointnet:Stage 2 306, and a Jointnet 308 to generate a hand pose for the hand in the images. In at least one embodiment, an articulated hand model 310 and the hand pose are processed with DART 312 and kinematic realignment (tracking, repositioning, retargeting, kinematic retargeting) 314 to generate a corresponding hand pose for a robotic gripper. In at least one embodiment, a control thread applies the Riemannian motion guidelines 318 to the gripper's hand pose and the resulting information is used to control the robot 320 .

3 zeigt ein Ausführungsbeispiel, das die folgenden Komponenten umfasst: 1) DART für die Handverfolgung, 2) Deep Neural Networks für das Abschätzen des Zustands der menschlichen Hand und die Robustheit von DART, 3) Verfeinerung des Zustands der menschlichen Hand mit DART und seine Umwandlung durch nichtlineare Optimierung in Allegro-Handzustände und 4) Bewegungserzeugung und -steuerung durch Riemann'sche Bewegungsrichtlinien (engl. Riemannian Motion Policies, RMPs) und Impedanzregler für das Drehmoment. Ein Ausführungsbeispiel wird in 3 gezeigt, in dem die obigen Komponenten verkettet sind. In mindestens einem Ausführungsbeispiel weist das System insgesamt eine Latenzzeit von etwa einer Sekunde auf. 3 Figure 12 shows an embodiment that includes the following components: 1) DART for hand tracking, 2) Deep Neural Networks for estimating human hand state and robustness of DART, 3) Refinement of human hand state with DART and its transformation by nonlinear optimization in Allegro hand states; and 4) motion generation and control through Riemannian Motion Policies (RMPs) and torque impedance controllers. An example is given in 3 shown in which the above components are concatenated. In at least one embodiment, the system has an overall latency of about one second.

In mindestens einem Ausführungsbeispiel wird DART zur kontinuierlichen Verfolgung (engl. Tracking) der Pose und des Gelenkwinkels einer menschlichen Hand verwendet. In mindestens einem Ausführungsbeispiel verwendet DART ein bewegtes Modell der Hand, das anhand einer Eingabepunktwolke registriert wird. Ein Modell der menschlichen Hand kann erhalten und in ein einziges Netzmodell umgewandelt werden. Unter Verwendung von CAD-Software (Computer Aided Design) können die Finger des Netzmodells in ihre jeweiligen proximalen, medialen und distalen Glieder aufgeteilt und zusammen mit einer assoziierten XML-Datei (Extensible Markup Language), die ihre kinematische Anordnung beschreibt, als separate Netze wieder exportiert werden. Insgesamt kann das Modell der menschlichen Hand 20 Drehgelenke besitzen: vier Gelenke pro Finger mit einem Abduktionsgelenk und drei Flexionsgelenken.In at least one embodiment, DART is used to continuously track the pose and joint angle of a human hand. In at least one embodiment game, DART uses a moving model of the hand that is registered using an input point cloud. A human hand model can be obtained and converted into a single mesh model. Using CAD (Computer Aided Design) software, the fingers of the mesh model can be partitioned into their respective proximal, medial and distal limbs and restored as separate meshes along with an associated Extensible Markup Language (XML) file describing their kinematic arrangement be exported. In total, the human hand model may have 20 pivot joints: four joints per finger with one abduction joint and three flexion joints.

In mindestens einem Ausführungsbeispiel ist DART ein modellbasierter Verfolger (engl. tracker), der eine nichtlineare Optimierung und Initialisierung (z.B. aus dem vorherigen Frame oder einer ersten Schätzung) vornimmt. In einigen Beispielen, wenn diese Initialisierung nicht innerhalb des Konvergenzbeckens liegt, kann es vorkommen, dass der Verfolger nicht zur richtigen Lösung konvergiert. In verschiedenen Ausführungsbeispielen kann bei der Verfolgung des Modells der menschlichen Hand mit Punktwolkendaten das Handmodell oft auf falsche lokale Minima einrasten, was alle paar Minuten zu Verfolgungsfehlern führt. Um die menschliche Hand über lange Zeiträume zuverlässig verfolgen zu können - was für die Teleoperation nützlich ist - kann es daher wünschenswert sein, zuverlässige Vorgaben für die Handpose einer menschlichen Hand, eine saubere Segmentierung der Hand und ein Studio mit mehreren Kameras zu haben, um zu verhindern, dass das Handmodell auf unerwartete lokale Minima einrastet. In verschiedenen Ausführungsbeispielen ist eine Methode zur Erzeugung von Handpose-Vorgaben das Trainieren eines neuronalen Netzwerks auf einem großen Datensatz von Posen einer menschlichen Hand, die durch Kamerabilder erzeugt werden.In at least one embodiment, DART is a model-based tracker that performs non-linear optimization and initialization (e.g., from the previous frame or a first guess). In some examples, if this initialization is not within the convergence basin, the tracker may not converge to the correct solution. In various embodiments, when tracking the human hand model with point cloud data, the hand model can often snap to incorrect local minima, resulting in tracking errors every few minutes. Therefore, in order to reliably track the human hand over long periods of time - which is useful for teleoperation - it may be desirable to have reliable presets for the hand pose of a human hand, clean segmentation of the hand, and a multi-camera studio to prevent the hand model from snapping to unexpected local minima. In various embodiments, one method for generating preset hand poses is to train a neural network on a large data set of human hand poses generated by camera images.

4 zeigt ein Beispiel eines Farbhandschuhs, der zur Erlangung von Handhaltung und Segmentierung verwendet wird. In mindestens einem Ausführungsbeispiel umfasst ein Handschuh 402 fünf Finger 404, 406, 408, 410 und 412, von denen jeder mit einem andersfarbigen Stoff gefärbt ist. In mindestens einem Ausführungsbeispiel sind eindeutige Farben gedruckt, so dass die Erzeugung von Annotationen mit OpenCV-Farbschwellenwerten trivial ist. In mindestens einem Ausführungsbeispiel bestimmen die Farben auf der Rückseite der Handfläche 414 eindeutig die Pose der Hand. 4 Figure 12 shows an example of a color glove used to acquire hand pose and segmentation. In at least one embodiment, a glove 402 includes five fingers 404, 406, 408, 410, and 412, each of which is colored with a different colored fabric. In at least one embodiment, unique colors are printed, so generating annotations with OpenCV color thresholds is trivial. In at least one embodiment, the colors on the back of the palm 414 uniquely determine the pose of the hand.

In mindestens einem Ausführungsbeispiel wird zunächst ein Stoffhandschuh (wie in 4 gezeigt) mit farbigen Klecksen als effektive Lösung verwendet, um eine Handpose unter Verwendung eines Deep Neural Network zu erhalten. In mindestens einem Ausführungsbeispiel verläuft die Datenerhebung in zwei Phasen. In mindestens einem Ausführungsbeispiel trägt der Benutzer in der ersten Phase den Handschuh, um Handpose-Vorgaben für DART zu erhalten, mit denen die menschliche Hand robust verfolgt werden kann. In mindestens einem Ausführungsbeispiel erzeugt dieser Prozess Handpose und Gelenkwinkel-Annotationen für rohe Tiefenkarten von den RGB-D-Kameras für die zweite Phase. In mindestens einem Ausführungsbeispiel verwendet die zweite Phase diese Annotationen und arbeitet mit rohen Punktwolken aus entsprechenden Tiefenkarten und befreit den Bediener von der Notwendigkeit, den Handschuh tragen zu müssen.In at least one embodiment, a cloth glove (as in 4 shown) with colored blobs as an effective solution to obtain a hand pose using a deep neural network. In at least one embodiment, data collection occurs in two phases. In at least one embodiment, in the first phase, the user wears the glove to obtain hand pose specifications for DART that can robustly track the human hand. In at least one embodiment, this process generates hand pose and joint angle annotations for raw depth maps from the second phase RGB-D cameras. In at least one embodiment, the second phase uses these annotations and works with raw point clouds from corresponding depth maps and frees the operator from the need to wear the glove.

In mindestens einem Ausführungsbeispiel wird der Farbhandschuh zur Handverfolgung verwendet. In mindestens einem Ausführungsbeispiel hat der Handschuh farbige Punkte (engl. blobs) an den Fingerspitzen und drei auf dem Handrücken. In mindestens einem Ausführungsbeispiel umfasst die Handverfolgung sowohl die Handpose als auch die Gelenkwinkel der Finger. In mindestens einem Ausführungsbeispiel bewegt der Benutzer seine Hand über einen Tisch in einem Mehrkamerastudio mit vier Intel RealSense D415 RGB-D-Kameras, die nach unten auf den Tisch zeigen. In mindestens einem Ausführungsbeispiel wird das Problem des Abschätzens der Handpose mit Handschuh über die Lokalisierung von Schlüsselpunkten formuliert. In mindestens einem Ausführungsbeispiel wird ResNet-50 mit Spatial-Softmax verwendet, um von einem RGB-Bild zu den 2D-Positionen der Mittelpunkte der farbigen Punkte auf dem Handschuh, GloveNet genannt, rückzurechnen. In mindestens einem Ausführungsbeispiel werden die farbigen Punkte an den Fingerspitzen ebenfalls zurückgerechnet, aber es hat sich herausgestellt, dass sie am Ende bei der vollständigen Handverfolgung nicht hilfreich sind, und die Vorhersagen der Punkte auf dem Handrücken werden zur Abschätzung der Handpose verwendet.In at least one embodiment, the color glove is used for hand tracking. In at least one embodiment, the glove has colored blobs on the fingertips and three on the back of the hand. In at least one embodiment, hand tracking includes both hand pose and finger joint angles. In at least one embodiment, the user moves their hand across a table in a multi-camera studio with four Intel RealSense D415 RGB-D cameras facing down on the table. In at least one embodiment, the problem of estimating gloved hand pose is formulated via the location of key points. In at least one embodiment, ResNet-50 with Spatial-Softmax is used to back-calculate from an RGB image to the 2D locations of the centers of the colored dots on the glove, called GloveNet. In at least one embodiment, the colored points on the fingertips are also recalculated, but they have not been found to ultimately help in full hand tracking, and the predictions of the points on the back of the hand are used to estimate hand pose.

In mindestens einem Ausführungsbeispiel kann die Handpose anhand von drei eindeutigen Schlüsselpunkten abgeschätzt werden, die durch drei verschiedenfarbige Punkte auf der Rückseite der Handfläche des Handschuhs angezeigt werden. Um in mindestens einem Ausführungsbeispiel Annotationen für die Mittelpunkte der Punkte zu erhalten, wird der HSV-Schwellenwert in OpenCV verwendet, um Segmentierungen zu erzeugen und die Schwerpunkte dieser segmentierten farbigen Punkte zu berechnen. In mindestens einem Ausführungsbeispiel trägt der Benutzer zur Unterstützung der Segmentierung für qualitativ hochwertige Annotationen einen schwarzen Handschuh mit farbigen Punkten und bewegt die Hand über einen ebenfalls mit schwarzem Tuch bedeckten Tisch. In mindestens einem Ausführungsbeispiel kann die Handpose über vorhergesagte 2D-Positionen der Punkte aus allen vier Kameras ermittelt werden: Die 2D-Schlüsselpunkte werden unter Verwendung der Tiefenwerte in ihre entsprechenden 3D-Positionen konvertiert, so dass jeder Punkt insgesamt vier 3D-Vorhersagen aus vier Kameras hat. In mindestens einem Ausführungsbeispiel werden diese 3D-Positionen gefiltert und zeitlich geglättet, um die Handpose zu erhalten. In mindestens einem Ausführungsbeispiel wird die Handsegmentierung auch durch Entfernen der 3D-Punkte erreicht, die außerhalb des Begrenzungsvolumens der Hand liegen. In mindestens einem Ausführungsbeispiel werden die Dimensionen dieses Volumens heuristisch aus der Handpose gewonnen, die aus den Vorhersagen des neuronalen Netzes gewonnen wurde. In mindestens einem Ausführungsbeispiel, und das ist entscheidend, optimiert DART jetzt nur noch anhand der segmentierten Handpunkte, wodurch verhindert wird, dass das Handmodell zu Punkten auf dem Arm verrutscht, wie dies häufig bei Verwendung einer vollständigen Punktwolke beobachtet wird. In mindestens einem Ausführungsbeispiel verwendet DART keine RGB-Bilder - der Handschuh stellt nur Posen-Prioritäten und unterstützte Handsegmentierung zur Verfügung - und daher ist das Ergebnis von DART mit Handposen-Prioritäten und Segmentierung in der ersten Phase eine Erzeugung von Annotationen für rohe Punktwolken, die mit den Kameras für eine zweite Phase erfasst wurden, die mittels der bloßen menschlichen Hand operieren kann.In at least one embodiment, hand pose may be estimated from three unique key points indicated by three different colored dots on the back of the glove palm. In at least one embodiment, to obtain annotations for the centers of the points, the HSV threshold in OpenCV is used to generate segmentations and calculate the centroids of these segmented colored points. In at least one embodiment, the user contributes to support the segmentation for high quality He wears a black glove with colored dots and moves his hand across a table that is also covered with black cloth. In at least one embodiment, the hand pose can be determined via predicted 2D positions of the points from all four cameras: the 2D key points are converted to their corresponding 3D positions using the depth values, so that each point has a total of four 3D predictions from four cameras Has. In at least one embodiment, these 3D positions are filtered and temporally smoothed to obtain the hand pose. In at least one embodiment, hand segmentation is also achieved by removing the 3D points that lie outside the bounding volume of the hand. In at least one embodiment, the dimensions of this volume are heuristically derived from the hand pose derived from the neural network predictions. In at least one embodiment, and critically, DART now optimizes only on the segmented hand points, preventing the hand model from slipping to points on the arm, as is often observed when using a full point cloud. In at least one embodiment, DART does not use RGB images - the glove only provides pose priorities and assisted hand segmentation - and therefore the result of DART with hand pose priorities and segmentation in the first phase is annotation generation for raw point clouds that were captured by the cameras for a second phase, which can operate using the bare human hand.

In mindestens einem Ausführungsbeispiel ist es in einer zweiten Phase wünschenswert, dass der Benutzer in Zukunft bei jeder Teleoperation keine Handschuhe mehr tragen muss. In mindestens einem Ausführungsbeispiel wird in der ersten Phase mit einem RGB-Bild gearbeitet, während in der zweiten Phase direkt mit einer fusionierten Punktwolke der bloßen menschlichen Hand gearbeitet wird, die durch Rückprojektion von vier Tiefenkarten von extrinsisch kalibrierten Kameras in ein globales Bezugssystem erhalten wird. In mindestens einem Ausführungsbeispiel stammen die Annotationen für diese Phase aus den in der ersten Phase generierten Daten. In mindestens einem Ausführungsbeispiel, da die Kamera auch synchronisierte Tiefenbilder liefert, können die Verfolgungsergebnisse der ersten Phase Annotationen für Punktwolken bereitstellen.In at least one embodiment, it is desirable in a second phase that the user no longer has to wear gloves for every teleoperation in the future. In at least one embodiment, the first phase works with an RGB image, while the second phase works directly with a fused point cloud of the bare human hand obtained by back-projecting four depth maps from extrinsically calibrated cameras into a global frame of reference. In at least one embodiment, the annotations for this phase come from the data generated in the first phase. In at least one embodiment, since the camera also provides synchronized depth images, the first stage tracking results may provide point cloud annotations.

In mindestens einem Ausführungsbeispiel enthält die fusionierte Punktwolke sowohl die Punkte auf dem Tisch als auch den menschlichen Körper und den Arm, so dass es zwingend notwendig wird, zuerst die Hand zu lokalisieren. In mindestens einem Ausführungsbeispiel werden Punkte auf dem Tisch durch Einpassen einer Ebene entfernt und die verbleibenden Punkte - die den Arm und den menschlichen Körper enthalten - mit einer Architektur versehen, die sowohl die Hand lokalisiert als auch die Pose einer menschlichen Hand zur Verfügung stellt. In mindestens einem Ausführungsbeispiel schätzt das Netzwerk die Handpose mittels einer abstimmungsbasierten Regression (engl. voting based regression) zu den 3D-Positionen spezifizierter Schlüsselpunkte auf der Hand. In mindestens einem Ausführungsbeispiel wird das Netzwerk trainiert, die 3D-Koordinaten von 23 Schlüsselpunkten auf der Hand vorherzusagen - 4 Gelenkschlüsselpunkte an je 5 Fingern und 3 auf der Rückseite der Handfläche zum Abschätzen der Handpose. In mindestens einem Ausführungsbeispiel ist die Verlustfunktion ein euklidischer Standardverlust zwischen den vorhergesagten und den Grundwahrheit- Schlüsselpunkten zusammen mit dem Abstimmungsverlust (engl. voting loss). In mindestens einem Ausführungsbeispiel wird auch ein Hilfssegmentierungsverlust hinzugefügt, um eine Handsegmentierung zu erhalten. In mindestens einem Ausführungsbeispiel wird aus Effizienzgründen jede beliebige Eingabe-Punktwolke der Größe N × 3 vor der Einspeisung in ein Netzwerk gleichmäßig auf eine feste Größe von 8192 × 3 unterabgetastet.In at least one embodiment, the merged point cloud contains both the points on the table and the human body and arm, making it imperative to locate the hand first. In at least one embodiment, points on the table are removed by plane fitting and the remaining points - containing the arm and human body - are provided with an architecture that both locates the hand and provides the pose of a human hand. In at least one embodiment, the network estimates the hand pose using voting based regression on the 3D locations of specified key points on the hand. In at least one embodiment, the network is trained to predict the 3D coordinates of 23 key points on the hand - 4 joint key points on 5 fingers each and 3 on the back of the palm to estimate hand pose. In at least one embodiment, the loss function is a standard Euclidean loss between the predicted and ground truth key points along with the voting loss. In at least one embodiment, an auxiliary segmentation loss is also added to obtain hand segmentation. In at least one embodiment, for efficiency, any input point cloud of size Nx3 is uniformly subsampled to a fixed size of 8192x3 before feeding it into a mesh.

In mindestens einem Ausführungsbeispiel wird eine vernünftige Abschätzung und Segmentierung der Handpose erreicht, doch ist es mit diesem Netzwerk nach wie vor schwierig, qualitativ hochwertige Vorhersagen für die 20 Gelenkschlüsselpunkte an den Fingern zu erhalten. In mindestens einem Ausführungsbeispiel bedeutet die einheitliche Unterabtastung, die bei der Eingabe verwendet wird, dass die Punkte auf den Fingern nicht dicht abgetastet werden. Daher ist eine Verfeinerung in einer zweiten Stufe erforderlich, bei der die Punkte auf der Hand aus der ursprünglichen rohen Punktwolke unter Berücksichtigung der Pose und Segmentierung der ersten Stufe neu abgetastet werden. Gemäß mindestens einem Ausführungsbeispiel ist die gesamte Netzwerkarchitektur in 5 dargestellt. In mindestens einem Ausführungsbeispiel wird die zweite Stufe nur auf die Verlustfunktionen der Schlüsselpunkte trainiert, eine Segmentierung ist nicht erforderlich. In mindestens einem Ausführungsbeispiel werden stattdessen die auf der Hand abgetasteten Punkte verwendet und die 23 Schlüsselpunkte genau vorhergesagt. In mindestens einem Ausführungsbeispiel wird der Handpose für die zweite Stufe eine zusätzliche Randomisierung hinzugefügt, um die Robustheit gegenüber eventuellen Ungenauigkeiten in der Handpose aus der ersten Stufe zu gewährleisten. Gemäß mindestens einem Ausführungsbeispiel zeigt 7, wie die Verfeinerung der zweiten Stufe das System verbessert. In mindestens einem Ausführungsbeispiel werden beide Stufen eines Netzwerks auf 100K-Punktwolken trainiert, die über eine Partie von 30-45 Minuten jeweils für insgesamt 7-8 Stunden gesammelt wurden, indem DART mit Vorgaben aus dem Handschuh ausgeführt wird. In mindestens einem Ausführungsbeispiel stellen sie zusammen Annotationen für Schlüsselpunkte, Gelenkwinkel und Segmentierung bereit. Das Training dauert insgesamt 15 Stunden auf einem einzelnen NVIDIA TitanXp-Grafikprozessor.In at least one embodiment, a reasonable estimation and segmentation of the hand pose is achieved, but with this network it is still difficult to obtain high quality predictions for the 20 pivot key points on the fingers. In at least one embodiment, the uniform undersampling used in input means that the points on the fingers are not densely sampled. Therefore, a second stage refinement is required, in which the points on hand are resampled from the original raw point cloud, taking into account the first stage pose and segmentation. According to at least one embodiment, the entire network architecture is in 5 shown. In at least one embodiment, the second stage is only trained on the loss functions of the key points, no segmentation is required. In at least one embodiment, the points sampled on the hand are used instead and the 23 key points are accurately predicted. In at least one embodiment, additional randomization is added to the hand pose for the second stage to provide robustness to any inaccuracies in the hand pose from the first stage. According to at least one embodiment 7 , how the second stage refinement improves the system. In at least one embodiment, both stages of a network are traced to 100K point clouds ers accumulated over a game of 30-45 minutes each for a total of 7-8 hours by running darts with prompts from the glove. In at least one embodiment, together they provide annotations for key points, joint angles, and segmentation. The training lasts 15 hours in total on a single NVIDIA TitanXp GPU.

In mindestens einem Ausführungsbeispiel sind Schlüsselpunkte eine natürliche Repräsentation für den euklidischen Raum, wie in PointNet++ Architekturen verwendet, während die meisten bewegten Modelle Gelenke als natürliche Parametrisierung verwenden. In mindestens einem Ausführungsbeispiel ist es wünschenswert, eine Ausgabe im Gelenkraum zu haben, die als gemeinsame Vorgabe für DART dienen kann. In mindestens einem Ausführungsbeispiel wird ein drittes neuronales Netz trainiert, das 23 Schlüsselpunktpositionen, die von der von PointNet++ inspirierten Architektur vorhergesagt werden, den entsprechenden Gelenkwinkeln zuordnet. In mindestens einem Ausführungsbeispiel ist dieses neuronale Netzwerk, JointNet genannt, ein zweischichtiges, vollständig verbundenes Netzwerk, das Eingaben der Größe 23 × 3 entgegennimmt und einen 20-dimensionalen Vektor von Gelenkwinkeln für Finger vorhersagt.In at least one embodiment, keypoints are a natural representation for Euclidean space as used in PointNet++ architectures, while most moving models use joints as a natural parameterization. In at least one embodiment, it is desirable to have an output in joint space that can serve as a common template for DART. In at least one embodiment, a third neural network is trained that maps 23 key point positions predicted by the PointNet++-inspired architecture to corresponding joint angles. In at least one embodiment, this neural network, called JointNet, is a two-layer fully connected network that takes inputs of size 23×3 and predicts a 20-dimensional vector of joint angles for fingers.

In mindestens einem Ausführungsbeispiel werden die neuronalen Netze anhand von Daten trainiert, die innerhalb der Grenzen des Arbeitsvolumens des Studios über mehrere menschliche Hände hinweg gesammelt wurden, wodurch für diese Anwendung genaue Posenanpassungen gewährleistet und vernünftige Vorgaben für DART ermöglicht werden. In mindestens einem Ausführungsbeispiel funktionierte die Handverfolgung qualitativ gut für Hände, die dem menschlichen DART-Handmodell geometrisch nahe kommen. In mindestens einem Ausführungsbeispiel betrug der durchschnittliche Schlüsselpunktfehler bei einem Validierungssatz von 7000 Bildern unterschiedlicher Handposen und Fingerkonfigurationen 9,7 mm und der Gelenkfehler 1,33 Grad pro Gelenk.In at least one embodiment, the neural networks are trained on data collected across multiple human hands within the confines of the studio's work volume, thereby ensuring accurate pose adjustments for this application and enabling reasonable targets for DART. In at least one embodiment, hand tracking performed qualitatively well for hands that are geometrically close to the human DART hand model. In at least one embodiment, for a validation set of 7000 images of different hand poses and finger configurations, the average key point error was 9.7 mm and the joint error was 1.33 degrees per joint.

In 5 arbeitet die von PointNet++ inspirierte Architektur in zwei Stufen. Die erste Stufe segmentiert die Hand (wie in rosa dargestellt) und stellt eine grobe Handpose zur Verfügung. Die zweite Stufe verfeinert die Handpose unter Berücksichtigung der Handsegmentierung und der Pose aus der ersten Stufe. Die Verlustfunktionen umfassen den Segmentierungsverlust, den euklidischen Verlust zwischen den vorhergesagten Schlüsselpunkten und den Schlüsselpunkten der Grundwahrheit sowie den Abstimmungsverlust wie in [11] verwendet. Da die zweite Stufe die Schlüsselpunkte verfeinert, wird der Segmentierungsverlust nicht benötigt. Die Satzabstraktion nimmt eine Eingabe der Größe N × (d + C) und gibt N' × (d + C4) aus, während die Merkmalsausbreitungsschicht eine Eingabe entsprechend N' × (d + C) entgegennimmt und einen Tensor der Größe N × (d + C3) ausgibt. Zusammen bilden diese das Rückgrat des Netzwerks. MLPs werden verwendet, um die Einbindungen des PointNet++-Backbone den entsprechenden gewünschten Ausgaben zuzuordnen. Weitere Details des Netzwerks sind im Anhang zu finden.In 5 the architecture inspired by PointNet++ works in two stages. The first stage segments the hand (as shown in pink) and provides a rough hand pose. The second stage refines the hand pose, taking into account the hand segmentation and the pose from the first stage. The loss functions include the segmentation loss, the Euclidean loss between the predicted keypoints and the ground truth keypoints, and the matching loss as used in [11]. Because the second stage refines the key points, the segmentation loss is not needed. The sentence abstraction takes an input of size N × (d + C) and outputs N' × (d + C 4 ), while the feature propagation layer takes an input equal to N' × (d + C) and a tensor of size N × ( d + C 3 ). Together they form the backbone of the network. MLPs are used to map the PointNet++ backbone integrations to the appropriate desired outputs. Further details of the network can be found in the appendix.

In 6 enthält die Eingabe Punktwolke Punkte sowohl vom Tisch als auch vom menschlichen Körper und Arm, gemäß einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel wurde eine Ebene eingepasst, um Punkte auf dem Tisch zu entfernen, und die restlichen Punkte werden in die erste Stufe eines Netzwerks eingegeben, das die Handpose wiederherstellt. In mindestens einem Ausführungsbeispiel verfeinert die zweite Stufe die Pose und stellt ein genaueres Ergebnis bereit. In mindestens einem Ausführungsbeispiel zeigen die Handaufnahmen rechts das Ergebnis von Stufe 1 und Stufe 2 in 5.In 6 the input point cloud includes points from both the table and the human body and arm, according to one embodiment. In at least one embodiment, a plane has been fitted to remove points on the table and the remaining points are fed into the first stage of a network that restores the hand pose. In at least one embodiment, the second stage refines the pose and provides a more accurate result. In at least one embodiment, the hand shots on the right show the result of Stage 1 and Stage 2 in 5 .

In mindestens einem Ausführungsbeispiel wird die Datenerhebung mit DART und ohne Handpose-Vorgaben initiiert, wodurch ein erstes Netzwerk trainiert wird, Handpose-Vorgaben zu produzieren. In der Folge können DART und das zuletzt trainierte neuronale Netzwerk zunehmende Datenmengen erzeugen. In mindestens einem Ausführungsbeispiel wird das Netzwerk ständig mit den neuesten Datensätzen aktualisiert, um immer bessere Vorgaben für DART zu erzeugen, die letztlich den Bereich erweitern können, in dem DART ohne Ausfälle funktionieren kann. In einigen Beispielen kann das neuronale Netzwerk für Handposen eine auf PointNet basierende Architektur sein, die direkt mit fusionierten Punktwolkendaten arbeitet, die durch Rückprojektion von Tiefenbildern von extrinsisch kalibrierten Tiefenkameras in einen einzigen globalen Referenzrahmen mit Annotationen, die von DART bereitgestellt werden, erhalten werden. Da die fusionierte Punktwolke in verschiedenen Ausführungsbeispielen sowohl die Punkte auf dem Tisch als auch den menschlichen Körper und Arm enthält, kann es in verschiedenen Fällen unerlässlich sein, zunächst die Hand zu lokalisieren. Punkte können vom Tisch entfernt werden, indem man eine Ebene anpasst (engl. fitted) und die restlichen Punkte, die den Arm und den menschlichen Körper enthalten, an PointNet weiterleitet, das sowohl die Hand lokalisieren als auch die Handpose bereitstellen kann. PointNet kann auf dem Abschätzen der Handpose mittels eines abstimmungsbasierten Regressionsschemas zu den 3D-Positionen spezifizierter Schlüsselpunkte auf der Hand basieren, eine Technik, die mit räumlichen Softmax verbunden sein kann, die häufig bei 2D-Schlüsselpunkt-Lokalisierung verwendet wird. In verschiedenen Ausführungsbeispielen kann PointNet trainiert werden, um 3D-Koordinaten von 23 an der Hand spezifizierten Schlüsselpunkten vorherzusagen - vier Gelenkschlüsselpunkte für jeden der fünf Finger und drei Schlüsselpunkte auf dem Handrücken zur Abschätzung der Handpose. Die Verlustfunktion kann den euklidischen Abstand zwischen den vorhergesagten und den Schlüsselpunkten der Grundwahrheit sein. Zusätzlich kann ein Hilfssegmentierungsverlust enthalten sein, um eine Handsegmentierung zu erhalten. Aus Effizienzgründen kann jede beliebige Eingabe-Punktwolke gleichmäßig bis zu einer festen Größe von 8192 × 3 unterabgetastet werden, bevor sie in PointNet eingespeist wird. In mindestens einem Ausführungsbeispiel kann eine vernünftige Abschätzung der Handpose und Segmentierung erreicht werden, und es kann sein, dass für die 20 gemeinsamen Schlüsselpunkte an den Fingern noch keine qualitativ hochwertigen Vorhersagen erzielt werden. In mindestens einem Ausführungsbeispiel kann die bei der Eingabe verwendete einheitliche Unterabtastung darauf hindeuten, dass die Punkte auf den Fingern nicht dicht abgetastet sind, weshalb eine Verfeinerung in einer zweiten Stufe erforderlich sein kann, bei der die Punkte auf der Hand aus der ursprünglichen unbearbeiteten Punktwolke unter Berücksichtigung der Pose und Segmentierung der ersten Stufe neu abgetastet werden. In mindestens einem Ausführungsbeispiel kann die zweite Stufe auf den gleichen Verlustfunktionen trainiert werden, kann aber stattdessen nur die an der Hand abgetasteten Punkte verwenden, um die 23 Schlüsselpunkte genau vorherzusagen. In mindestens einem Ausführungsbeispiel können der Handpose für die zweite Stufe zufällige Störungen hinzugefügt werden, um die Robustheit gegenüber eventuellen Ungenauigkeiten in der Handpose der ersten Stufe zu gewährleisten. 4 stellt die Verfeinerung der zweiten Stufe innerhalb des Systems dar, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel können beide Stufen von PointNet auf 100K Punktwolken trainiert werden, die über einen Stapel von 30-45 Minuten jeweils für insgesamt 7-8 Stunden gesammelt wurden, indem DART ausgeführt wird, um Annotationen für Schlüsselpunkte, Gelenkwinkel und Segmentierung bereitzustellen. In mindestens einem Ausführungsbeispiel kann ein drittes neuronales Netz trainiert werden, das die von PointNet vorhergesagten Schlüsselpunkte den entsprechenden Gelenkwinkeln zuordnet, um Vorgaben für die Gelenkwinkel der Finger bereitzustellen. Dieses neuronale Netzwerk, das als JointNet bezeichnet werden kann, kann ein zweischichtiges, vollständig verbundenes Netzwerk sein, das Eingaben der Größe 23 × 3 entgegennimmt und einen 20-dimensionalen Vektor von Gelenkwinkeln für Finger vorhersagt.In at least one embodiment, data collection is initiated with DART and without handpose constraints, thereby training a first network to produce handpose constraints. As a result, DART and the most recently trained neural network can generate increasing amounts of data. In at least one embodiment, the network is continually updated with the latest datasets to produce better and better specifications for DART, which may ultimately expand the range in which DART can function without failure. In some examples, the hand pose neural network may be a PointNet-based architecture that works directly with fused point cloud data obtained by back-projecting depth images from extrinsically calibrated depth cameras into a single global reference frame with annotations provided by DART. Since the merged point cloud contains both the points on the table and the human body and arm in various exemplary embodiments, it may be essential in various cases to first locate the hand. Points can be removed from the table by fitting a plane and passing the remaining points containing the arm and human body to PointNet, which can both locate the hand and provide the hand pose. PointNet can be based on estimating hand pose using a voting-based regression scheme on the 3D positions of specified key points on the hand, a technique that may involve spatial softmax commonly used in 2D key point localization. In various embodiments PointNet can be trained to predict 3D coordinates of 23 key points specified on the hand - four joint key points for each of the five fingers and three key points on the back of the hand to estimate hand pose. The loss function may be the Euclidean distance between the predicted points and the key points of ground truth. Additionally, an auxiliary segmentation loss may be included to obtain hand segmentation. For efficiency, any input point cloud can be uniformly subsampled down to a fixed size of 8192 × 3 before being fed into PointNet. In at least one embodiment, a reasonable estimate of hand pose and segmentation may be achieved, and high quality predictions may not yet be obtained for the 20 common keypoints on the fingers. In at least one embodiment, the uniform undersampling used in the input may indicate that the points on the fingers are not densely sampled, so refinement may be required in a second stage, where the points on the hand are subsampled from the original raw point cloud be resampled to account for the pose and segmentation of the first stage. In at least one embodiment, the second stage can be trained on the same loss functions, but can instead use only the hand sampled points to accurately predict the 23 key points. In at least one embodiment, random noise may be added to the second stage hand pose to provide robustness to any inaccuracies in the first stage hand pose. 4 Figure 12 illustrates the second level of refinement within the system, according to at least one embodiment. In at least one embodiment, both stages of PointNet can be trained on 100K point clouds collected over a batch of 30-45 minutes each for a total of 7-8 hours by running DART to provide annotation for key points, joint angles, and segmentation. In at least one embodiment, a third neural network may be trained that maps the key points predicted by PointNet to the corresponding joint angles to provide finger joint angle specifications. This neural network, which can be referred to as a JointNet, can be a two-layer fully connected network that takes inputs of size 23×3 and predicts a 20-dimensional vector of joint angles for fingers.

In mindestens einem Ausführungsbeispiel werden die neuronalen Netze anhand von Daten trainiert, die an mehreren menschlichen Händen gesammelt wurden, wodurch eine genaue Posenanpassung für dieses System gewährleistet und vernünftige Vorgaben für DART ermöglicht werden. In einigen Ausführungsbeispielen kann die Handverfolgung für Hände, die dem menschlichen DART-Handmodell geometrisch nahe kommen, besser funktionieren.In at least one embodiment, the neural networks are trained on data collected from multiple human hands, thereby ensuring accurate pose matching for this system and allowing reasonable targets for DART. In some embodiments, hand tracking may work better for hands that are geometrically close to the human DART hand model.

In mindestens einem Ausführungsbeispiel kann die Teleoperation einer Roboterhand, die sich kinematisch von der menschlichen Hand unterscheidet, ein Modul erfordern, das die beobachteten menschlichen Handgelenke den Roboterhandgelenken zuordnen kann, die in einigen Ausführungsbeispielen als Allegro-Handgelenke bezeichnet werden können. 7 zeigt ein Beispiel für eine Pose 702 einer menschlichen Hand und einen Robotergreifer 704, der eine entsprechende Pose ausführt, gemäß mindestens einem Ausführungsbeispiel. Es kann viele verschiedene Ansätze für kinematisches Nachstellen geben. Beispielsweise kann ein Modul gemäß mindestens einem Ausführungsbeispiel verwendet werden, um die Positionen von der Handfläche bis zu den Fingerspitzen und den medialen Gelenken sowie die Richtungsabhängigkeit der proximalen Fingerglieder und des distalen Daumenglieds aufeinander abzustimmen (engl. match). In mindestens einem Ausführungsbeispiel kann die optimierte Zuordnung unter Verwenden von menschlichen Tiefenbildern so zugeordnet werden, dass ein Tiefennetzwerk ein Tiefenbild aufnehmen und Gelenkwinkel ausgeben kann. In mindestens einem Ausführungsbeispiel wird auch eine Bewegungsnachführung (engl. motion retargeting) verwendet. Beispielsweise kann ein tiefes rekurrierendes neuronales Netzwerk unbeaufsichtigt trainiert werden, um Bewegungen zwischen Skeletten nachzuführen nachzuführen. In mindestens einem Ausführungsbeispiel verwendet das System die Aufgabenraummetrik der Fingerspitzen, da distale Bereiche bei Greif- und Manipulationsaufgaben von höchster Priorität sein können, gemessen an ihrer Kontaktprävalenz, dem Grad der Innervation und der erhöhten Kontrollierbarkeit für eine feine Handmanipulationsfähigkeit. In mindestens einem Ausführungsbeispiel können die Gelenkachsen und -orte zwischen zwei Händen unterschiedlich sein, weshalb keine Metriken verwendet werden können, die die Gelenkwinkel zwischen den beiden Händen direkt vergleichen. In mindestens einem Ausführungsbeispiel werden zur Erfassung und Optimierung der Positionierung der Fingerspitzen sowohl der Abstand als auch die Richtung zwischen den Fingerspitzen berücksichtigt. Konkret kann in mindestens einem Ausführungsbeispiel die Kostenfunktion für das kinematische Nachstellen wie folgt gewählt werden: C ( q h , q a ) = 1 2 i = 0 N s ( d i ) r i ( q a ) ƒ ( d i ) r i ( q h ) 2 + γ q a 2

Figure DE102020124285B4_0001
wobei qh, qa die Winkel des Modells der menschlichen Hand bzw. der Allegro-Hand sein können, ri ∈ R3 der Vektor, der vom Ursprung eines Koordinatensystems zu einem anderen zeigt, ausgedrückt im Ursprungskoordinatensystem sein kann (siehe 7). Darüber hinaus ist in mindestens einem Ausführungsbeispiel d i = r i ( q h ) und r i ( q h ) = r i ( q h ) r i ( q h ) .
Figure DE102020124285B4_0002
Die Umschaltgewichtsfunktion s(di) kann wie folgt definiert sein: s ( d i ) = { 1, d i > ε 200, d i ε r i ( q h ) S 1 400, d i ε r i ( q h ) S 2
Figure DE102020124285B4_0003
wobei S1 Vektoren sein können, die von einem Primärfinger (Zeige-, Mittel-, Ringfinger) ausgehen und auf den Daumen zeigen, und S2 m Vektoren zwischen zwei Primärfingern sein können, wenn beide Primärfinger assoziierte Vektoren ∈ S1 haben (z.B. beide Primärfinger werden mit dem Daumen projiziert). In mindestens einem Ausführungsbeispiel ist die Distanzfunktion ƒ(di) ∈ R definiert als: ƒ ( d i ) = { β d i , d i > ε η 1 , d i ε r i ( q h ) S 1 η 2 , d i ε r i ( q h ) S 2
Figure DE102020124285B4_0004
wobei β = 1.6 ein Skalierungsfaktor sein kann, η1 = 1 × 10-4 m ein Abstand zwischen einem primären Finger und dem Daumen sein kann, und η2 = 3 × 10-2 m kann ein Mindestabstand zwischen zwei primären Fingern sein kann, wenn beide primären Finger mit dem Daumen projiziert werden. Satz Beschreibung S1 Vektoren, die von einem primären Finger (Zeige-, Mittel-, Ringfinger) ausgehen und auf den Daumen zeigen. S2 Vektoren zwischen zwei primären Fingern, wenn beide primären Finger assoziierte Vektoren ∈ S1 haben, z.B. wenn beide primären Finger mit dem Daumen projiziert werden. In at least one embodiment, teleoperation of a robotic hand that is kinematically different than the human hand may require a module that can map the observed human wrists to the robotic wrists, which in some embodiments may be referred to as allegro wrists. 7 FIG. 7 shows an example of a pose 702 of a human hand and a robotic gripper 704 performing a corresponding pose, according to at least one embodiment. There can be many different approaches to kinematic tracking. For example, a module according to at least one embodiment may be used to match palm to fingertip and medial joint positions and directionality of the proximal phalanx and distal thumb phalanx. In at least one embodiment, the optimized mapping may be mapped using human depth images such that a depth network can take a depth image and output joint angles. In at least one embodiment, motion retargeting is also used. For example, a deep recurrent neural network can be trained unsupervised to track movements between skeletons. In at least one embodiment, the system uses the fingertip task space metric since distal areas may be of the highest priority in grasping and manipulation tasks as measured by their contact prevalence, level of innervation, and increased controllability for fine hand manipulation capability. In at least one embodiment, the joint axes and locations may differ between two hands, and therefore metrics that directly compare the joint angles between the two hands cannot be used. In at least one embodiment, both the distance and the direction between the fingertips are considered to detect and optimize the positioning of the fingertips. Specifically, in at least one exemplary embodiment, the cost function for the kinematic adjustment can be selected as follows: C ( q H , q a ) = 1 2 i = 0 N s ( i.e i ) right i ( q a ) ƒ ( i.e i ) right i ( q H ) 2 + g q a 2
Figure DE102020124285B4_0001
where q h , q a can be the angles of the model of the human hand and the Allegro hand, respectively, ri ∈ R 3 can be the vector pointing from the origin of one coordinate system to another, expressed in the origin coordinate system (see 7 ). In addition, in at least one embodiment i.e i = right i ( q H ) and right i ( q H ) = right i ( q H ) right i ( q H ) .
Figure DE102020124285B4_0002
The switching weight function s(d i ) can be defined as follows: s ( i.e i ) = { 1, i.e i > e 200, i.e i e right i ( q H ) S 1 400, i.e i e right i ( q H ) S 2
Figure DE102020124285B4_0003
where S 1 can be vectors emanating from a primary finger (index, middle, ring finger) and pointing to the thumb, and S 2 can be m vectors between two primary fingers if both primary fingers have associated vectors ∈ S 1 (e.g. both Primary fingers are projected with the thumb). In at least one embodiment, the distance function ƒ(d i ) ∈ R is defined as: ƒ ( i.e i ) = { β i.e i , i.e i > e n 1 , i.e i e right i ( q H ) S 1 n 2 , i.e i e right i ( q H ) S 2
Figure DE102020124285B4_0004
where β = 1.6 can be a scaling factor, η 1 = 1 × 10 -4 m can be a distance between a primary finger and the thumb, and η 2 = 3 × 10 -2 m can be a minimum distance between two primary fingers, when both primary fingers are projected with the thumb. Sentence description p 1 Vectors starting from a primary finger (index, middle, ring finger) pointing to the thumb. S 2 Vectors between two primary fingers when both primary fingers have associated vectors ∈ S1, e.g. when both primary fingers are projected with the thumb.

In mindestens einem Ausführungsbeispiel stellen diese Projektionen sicher, dass die Kontakte zwischen den primären Fingern und dem Daumen nahe beieinander liegen, ohne dass es in einem Präzisionsgriff zu Kollisionen der primären Finger kommt. In mindestens einem Ausführungsbeispiel kann dies bei Ungenauigkeiten der visuellen Fingerverfolgung besonders nützlich sein. In einigen Beispielen können die Vektoren ri nicht nur Abstand und Richtung von einem Aufgabenraum zum anderen erfassen, sondern ihr Ausdruck in lokalen Koordinaten kann weiter Informationen darüber enthalten, wie die Koordinatensysteme und damit die Fingerspitzen zueinander orientiert sind. In mindestens einem Ausführungsbeispiel können die Koordinatensysteme des Modells der menschlichen Hand daher äquivalente Koordinatensysteme auf dem Allegro-Modell mit Ähnlichkeit in Orientierung und Platzierung haben. Die in 7 gezeigten Vektoren können einen minimalen Satz bilden, der das gewünschte Verhalten beim Nachstellen (engl. retargeting) erzeugt. In einigen Ausführungsbeispielen kann y = 2,5 × 10-3 ein Gewicht bei der Regularisierung der Allegro-Winkel auf Null sein (äquivalent zur vollständig geöffneten Hand). In mindestens einem Ausführungsbeispiel trägt dieser Term dazu bei, die Redundanz in der Lösung zu reduzieren und sicherzustellen, dass die Hand nie in ungewöhnliche Minima gerät, von denen sie sich nur schwer wieder erholen kann (z.B. wenn sich die Finger in die Handfläche einbetten). In mindestens einem Ausführungsbeispiel werden in 8 verschiedene Zuordnungen von der menschlichen Hand 602-617 zu einer Allegro-Roboterhand 618-633 gezeigt, wie sie durch das kinematische Nachstellen erzeugt werden. 8 zeigt eine Sammlung von Posen einer menschlichen Hand 802-817 und entsprechende Posen für einen Robotergreifer 818-833.In at least one embodiment, these projections ensure that the contacts between the primary fingers and the thumb are close together without collisions of the primary fingers in a precision grip. In at least one embodiment, this can be particularly useful for inaccuracies in visual finger tracking. In some examples, the vectors r i can not only capture distance and direction from one task space to another, but their expression in local coordinates can further contain information about how the coordinate systems and thus the fingertips are oriented to each other. Thus, in at least one embodiment, the coordinate systems of the human hand model may have equivalent coordinate systems on the Allegro model with similarity in orientation and placement. In the 7 The vectors shown can form a minimal set that produces the desired retargeting behavior. In some embodiments, y=2.5×10 -3 may be a weight in regularizing the allegro angles to zero (equivalent to the fully open hand). In at least one embodiment, this term helps reduce redundancy in the solution and ensures that the hand never goes into unusual minima from which it is difficult to recover (eg, when fingers become embedded in the palm). In at least one embodiment, in 8th various mappings from the human hand 602-617 to an Allegro robotic hand 618-633 are shown as produced by the kinematic simulation. 8th shows a collection of poses of a human hand 802-817 and corresponding poses for a robot gripper 818-833.

In mindestens einem Ausführungsbeispiel wird die obige Funktionalität in Echtzeit unter Verwenden des Algorithmus der sequentiellen quadratischen Programmierung der kleinsten Quadrate (engl. Sequential Least Squares Quadratic Programming, „SLSQP“) minimiert. In mindestens einem Ausführungsbeispiel wird die Routine mit auf Null gesetzten Allegro-Gelenkwinkeln eingeleitet, und jede Lösung danach kann mit der vorhergehenden Lösung eingeleitet werden. In mindestens einem Ausführungsbeispiel werden die kinematischen Vorwärtsberechnungen zwischen den verschiedenen Koordinatensystemen sowohl des Modells der menschlichen Hand als auch der Allegro-Hand durchgeführt. In mindestens einem Ausführungsbeispiel wird ein Tiefpassfilter erster Ordnung auf die unbearbeiteten Übertragungsgelenkwinkel angewendet, um hochfrequentes Rauschen zu entfernen, das bei der Verfolgung der menschlichen Hand auftritt, und um diskrete Ereignisse zu glätten, wie z.B. den Projektionsalgorithmus, der Sprungantwortänderungen in nachgeführten Winkeln induziert.In at least one embodiment, the above functionality is minimized in real-time using the Sequential Least Squares Quadratic Programming ("SLSQP") algorithm. In at least one embodiment, the routine is initiated with the Allegro joint angles set to zero, and any solution thereafter may be initiated with the previous solution. In at least one embodiment, the forward kinematic calculations are performed between the different coordinate systems of both the human hand model and the Allegro hand model. In at least one embodiment, a first-order low-pass filter is applied to the raw transmission joint angles to remove high-frequency noise associated with human hand tracking and to remove discrete Smooth events, such as the projection algorithm that induces step response changes in tracked angles.

In mindestens einem Ausführungsbeispiel sind Riemann'sche Bewegungsrichtlinien („RMPs“) Echtzeit-Bewegungserzeugungsverfahren, die Beschleunigungsfelder aus potentiellen Funktionsgradienten und entsprechenden Riemann'schen Metriken berechnen. In mindestens einem Ausführungsbeispiel kombinieren RMPs die Erzeugung von kartesischen Trajektorien mit mehreren Prioritäten und Kollisionsvermeidungsverhalten in einem zusammenhängenden Bezugssystem. In mindestens einem Ausführungsbeispiel werden sie unter Verwendung der beobachteten Pose einer menschlichen Hand zur Kontrolle der kartesischen Pose der Allegro-Handfläche verwendet, während sie unter Verwendung von Kollisionsebenen Arm- bzw. Handflächenkollisionen mit dem Tisch oder Bediener vermeiden. In mindestens einem Ausführungsbeispiel erzeugten die RMPs unter Berücksichtigung dieser Zielsetzungen Arm-Gelenk-Zieltrajektorien, die mit 200 Hz an den Drehmoment-Impedanzregler des Arms gesendet wurden. In mindestens einem Ausführungsbeispiel wurden die kinematisch nachgeführten Allegro-Winkel mit 30 Hz an den Drehmoment-Impedanzregler des Arms gesendet. In mindestens einem Ausführungsbeispiel besteht ein letztes Detail der Kalibrierung darin, die Bewegungen der Pose einer menschlichen Hand mit dem Robotersystem zu registrieren. In mindestens einem Ausführungsbeispiel wird dies mittels einer Transformation vom Roboterkoordinatensystem in das Kamerakoordinatensystem durchgeführt. In mindestens einem Ausführungsbeispiel wird diese Transformation unter Verwenden der Anfangsansicht der menschlichen Hand und einer angenommenen Anfangspose der Roboterhand berechnet. In mindestens einem Ausführungsbeispiel ist zur Erleichterung des räumlichen Denkens des Bedieners die gewünschte anfängliche Handpose des Bedieners eine vollständig geöffnete Hand mit der Handfläche parallel zum Tisch und nach vorne weisenden Fingern. In mindestens einem Ausführungsbeispiel ahmt die angenommene Anfangsstellung des Roboters diese Pose nach. In mindestens einem Ausführungsbeispiel bewegt sich der Roboter auf diese Weise in die gleiche Richtung wie die Hand des Bedieners, was ein intuitives räumliches Denken ermöglicht.In at least one embodiment, Riemannian Motion Rules ("RMPs") are real-time motion generation methods that compute acceleration fields from potential functional gradients and corresponding Riemannian metrics. In at least one embodiment, RMPs combine multi-priority Cartesian trajectory generation and collision avoidance behavior in a coherent frame of reference. In at least one embodiment, they are used to control the Cartesian pose of the Allegro palm using the observed pose of a human hand while avoiding arm or palm collisions with the table or operator using collision planes. In at least one embodiment, with these objectives in mind, the RMPs generated arm-to-joint target trajectories that were sent at 200 Hz to the arm's torque impedance controller. In at least one embodiment, the kinematically tracked Allegro angles were sent to the arm's torque impedance controller at 30 Hz. In at least one embodiment, a final detail of the calibration is to register the movements of the pose of a human hand with the robotic system. In at least one embodiment, this is performed using a transformation from the robot coordinate system to the camera coordinate system. In at least one embodiment, this transformation is computed using the initial view of the human hand and an assumed initial pose of the robot hand. In at least one embodiment, to facilitate the operator's spatial awareness, the desired initial hand pose of the operator is a fully open hand with the palm parallel to the table and fingers pointing forward. In at least one embodiment, the assumed initial position of the robot mimics this pose. In this manner, in at least one embodiment, the robot moves in the same direction as the operator's hand, allowing for intuitive spatial thinking.

Insgesamt lässt sich das System zuverlässig verwenden, um eine Vielzahl von Aufgaben mit unterschiedlichen Schwierigkeitsgraden zu lösen. In einigen Beispielen zeigt die Fähigkeit, diese Aufgaben zu lösen, dass das System über die Geschicklichkeit verfügen kann, Präzisions- und Kraftgriffe, Mehrfingergreif- und Nicht-Greifmanipulationen, Fingerbewegungen der Hand und zusammengesetzte Manipulationen der Hand (z.B. Greifen mit zwei Fingern bei gleichzeitiger Manipulation mit den übrigen Fingern) zu zeigen.Overall, the system can be used reliably to solve a variety of tasks with different levels of difficulty. In some examples, the ability to perform these tasks demonstrates that the system may have the dexterity, precision and power grips, multi-finger grip and non-grip manipulations, finger motions of the hand, and compound hand manipulations (e.g., two-finger grips with simultaneous manipulation with the remaining fingers).

9 zeigt ein Beispiel für eine Aufgabe, bei der ein Roboter gesteuert wird, um Papier aus einer gefalteten Brieftasche zu entnehmen, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel muss der Bediener die Brieftasche zuerst öffnen und sie an einen bestimmten günstigen Ort bringen, um Papiergeld zu entnehmen. In mindestens einem Ausführungsbeispiel ist die Hand in der Lage, das Papier zu halten, indem sie die Finger gegeneinander drückt. 9 FIG. 12 shows an example of a task in which a robot is controlled to remove paper from a folded wallet, according to at least one embodiment. In at least one embodiment, the operator must first open the wallet and take it to a designated convenient location to retrieve paper money. In at least one embodiment, the hand is able to hold the paper by pressing the fingers together.

10 zeigt ein Beispiel für eine Aufgabe, bei der ein Roboter gesteuert wird, um ein Objekt aus einer Schublade zu entnehmen, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist dies eine etwas langwierigere Aufgabe und erfordert Geschicklichkeit beim Öffnen der Schublade und beim Festhalten des Teebeutels. 10 12 shows an example of a task in which a robot is controlled to retrieve an object from a drawer, according to at least one embodiment. In at least one embodiment, this is a somewhat tedious task and requires dexterity in opening the drawer and holding the tea bag.

11 zeigt ein Beispiel für eine Aufgabe, bei der ein Roboter gesteuert wird, um ein Gefäß zu öffnen, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel erfordert die Aufgabe das mehrfache Rotieren des Deckels, um ihn unter Beibehaltung der Kontakte zu öffnen. 11 12 shows an example of a task in which a robot is controlled to open a vessel, according to at least one embodiment. In at least one embodiment, the task requires rotating the lid multiple times to open it while maintaining the contacts.

Die nachstehende Tabelle beschreibt Beispiele für 15 verschiedene Aufgaben unterschiedlicher Komplexität, die von klassischen Pick-And-Place-Aufgaben bis hin zu mehrstufigen, langfristigen Aufgaben reichen. In mindestens einem Ausführungsbeispiel wird jede dieser Aufgaben mit fünf (5) aufeinanderfolgenden Versuchen durchgeführt, um eine bevorzugte Auswahl zu vermeiden, und die Erfolgsquote wird entsprechend angegeben. In mindestens einem Ausführungsbeispiel wird der Versuch als gescheitert betrachtet, wenn das Objekt aus dem Arbeitsraumvolumen herausfällt. Die letzte Spalte repräsentiert die Fertigkeiten, die für die Teleoperation erforderlich sind, indem die Hand ihren Zustand mit der Zeit ändert. Aufgabe Beschreibung Erforderliche Fähigkeiten Aufnehmen und Ablegen (engl. pick and place) Aufnehmen eines Objekts auf dem Tisch und Ablegen in eine rote Schale. Greifen, Loslassen • Schaumstoff-Klotz • Pringles-Dose • Spam-Box Stapeln von Blöcken Stapeln von drei Blöcken aufeinander. präzises Greifen, präzises • Groß (L) (6,3cm) Loslassen • Mittel (M) (3,8cm) • Klein (S) (2,3 cm) Schütten von Perlen Schütten von Perlen aus einem Becher in eine Schale. Greifen, Schütten Öffnen eines Gefäßes Öffnen eines Erdnussgefäßes und Legen des Deckels auf den Tisch. Finger bewegen, Greifen, Loslassen Bewegen eines Klotzes Aufnehmen eines Klotzes, Drehen des Klotzes um 180 Grad mit der Hand, und wieder Ablegen. Greifen, Manipulationen der Hand, Loslassen Behälter Öffnen eines Plastikbehälters, Herausziehen und Öffnen einer Kartonschachtel. Verdrehen, Ziehen, Schieben, Greifen, Manipulationen der Hand Einsetzen von Bechern Einsetzen von konzentrischen Bechern ineinander. Greifen, Loslassen Teeschublade Aufziehen einer Teeschublade, Herausnehmen eines einzelnen Teebeutels und Ablegen auf dem Tisch, Schließen der Teeschublade. präzises Greifen, Ziehen, Schieben, Loslassen Schieben einer Karte Schieben einer Karte entlang der Schachtel und Aufheben mit zwei Fingern. Schieben, präzises Greifen, Loslassen Brieftasche Öffnen der Brieftasche und herausziehen von Papiergeld. präzises Greifen, Ziehen, Schieben, Manipulationen der Hand Umdrehen einer Kiste Drehen der Kiste um 90 Grad und Stellen auf das vorgegebene Ziel. Drücken, Greifen, Loslassen The table below describes examples of 15 different tasks of varying complexity, ranging from classic pick-and-place tasks to multi-step, long-term tasks. In at least one embodiment, each of these tasks is performed with five (5) consecutive attempts to avoid preferential selection, and the success rate is reported accordingly. In at least one embodiment, the attempt is considered a failure if the object falls out of the workspace volume. The last column represents the skills required for teleoperation, in which the hand changes state over time. task description Required Skills Pick and place Picking up an object on the table and placing it in a red bowl. grab, let go • Foam block • Pringles can • Spam box Stacking Blocks Stacking three blocks on top of each other. precise gripping, precise • Large (L) (6.3cm) Let go • Medium (M) (3.8cm) • Small (S) (2.3 cm) Pouring Pearls Pouring beads from a beaker into a bowl. grab, pour opening a vessel Opening a peanut jar and placing the lid on the table. Move fingers, grab, let go moving a block Picking up a block, rotating the block 180 degrees by hand, and putting it down again. Grasping, hand manipulations, releasing container Opening a plastic container, pulling out and opening a cardboard box. Twisting, pulling, pushing, grasping, hand manipulations Insertion of cups Insertion of concentric cups into each other. grab, let go tea drawer Opening a tea drawer, taking out a single tea bag and placing it on the table, closing the tea drawer. precise gripping, pulling, pushing, releasing pushing a card Slide a card along the box and pick it up with two fingers. Pushing, precise gripping, letting go wallet Opening the wallet and pulling out paper money. precise gripping, pulling, pushing, hand manipulations turning over a box Rotate the crate 90 degrees and place it on the given target. Squeeze, grab, release

In einem Experiment durchliefen die Bediener eine Aufwärmtrainingsphase, in der sie versuchten, die Aufgabe mit drei bis fünf (3-5) nicht aufeinanderfolgenden Versuchen zu lösen. Später wurden von jedem Bediener für jede Aufgabe fünf aufeinanderfolgende Testversuche durchgeführt, um eine bevorzugte Auswahl der Ergebnisse zu vermeiden, und die Bediener wurden basierend auf ihrer Leistung eingestuft. Die Leistungskennzahlen für diese Aufgaben umfassen die mittlere Ausführungszeit (engl. completion time, „CT“) und die Erfolgsrate, die Geschwindigkeit und Zuverlässigkeit des Teleoperationssystems erfassen. Das System wurde mit zwei Bedienern getestet, und die Leistungskennzahlen sind in 12 und 13 aufgeführt.In one experiment, operators went through a warm-up phase in which they attempted to complete the task in three to five (3-5) non-consecutive trials. Later, five consecutive test attempts were performed by each operator for each task to avoid preferential selection of results, and operators were ranked based on their performance. The performance metrics for these tasks include mean completion time (“CT”) and success rate, which capture the speed and reliability of the teleoperation system. The system has been tested with two operators and the performance metrics are in 12 and 13 listed.

In mindestens einem Ausführungsbeispiel kann das System zuverlässig zur Lösung einer Vielzahl von Aufgaben mit unterschiedlichen Schwierigkeitsgraden verwendet werden. In mindestens einem Ausführungsbeispiel deuten Unterschiede in der mittleren CT über Aufgaben hinweg auf die Auswirkungen der Aufgabenkomplexität und Skala des zeitlichen Horizonts hin. In mindestens einem Ausführungsbeispiel deuten Diskrepanzen im mittleren CT zwischen den Bedienern pro Aufgabe darauf hin, dass eine Abhängigkeit vom Verhalten der Bediener besteht. In mindestens einem Ausführungsbeispiel umfassen die Effekte Müdigkeit, Training, Kreativität und Motivation. In mindestens einem Ausführungsbeispiel zeigt die Fähigkeit, diese Aufgaben zu lösen, dass das Teleoperationssystem über die Geschicklichkeit verfügt, Präzisions- und Kraftgriffe, mehrfingrige Greif- und Nicht-Greifmanipulation, In-Hand-Fingermanipulation mit den Fingern und zusammengesetzte In-Hand-Manipulation (z.B. Greifen mit zwei Fingern bei gleichzeitiger Manipulation mit den übrigen Fingern) zu zeigen. In mindestens einem Ausführungsbeispiel ist zu beachten, dass bestimmte Aufgaben, z.B. Behälter und Brieftasche, besonders lange dauern, um teleoperiert zu werden, was weitgehend darauf zurückzuführen ist, dass diese Aufgaben mehrstufig sind. Andererseits kann die Aufgabe, die das Aufnehmen kleiner Würfel erfordert, besonders anspruchsvoll sein, da das Verhalten beim Lösen der Griffe an diesen Objekten mit dem Projektionsschema, das beim kinematischen Nachstellen verwendet wird, unvorhersehbar sein kann. Nichtsdestotrotz ist eine so umfangreiche Demonstration von Geschicklichkeit, die allein durch die Beobachtung bloßen menschlichen Hand umgesetzt wird, ein empirischer Beweis dafür, dass der Ansatz und die Architektur hier gut funktioniert, gemäß verschiedenen Ausführungsbeispielen. In mindestens einem Ausführungsbeispiel ist ein wichtiger Aspekt, der hervorzuheben ist, dass, obwohl der vollständige Teleoperationsprozess für eine bestimmte Aufgabe nicht perfekt sein mag (z.B. kann der Bediener einen Gegenstand in der Hand verlieren, ihn aber wieder holen, um die Aufgabe zu erfüllen), die gesammelten Daten dennoch ebenso wertvoll sind, um dem Roboter zu helfen, zu lernen, sich von Fehlern zu erholen. In mindestens einem Ausführungsbeispiel können die Daten als Spieldaten betrachtet werden, die für das Erlernen einer langfristigen Planung nützlich sind. In mindestens einem Ausführungsbeispiel können diskrete Ereignisse wie intermittierende Finger-Objekt-Kontakte in den taktilen Signalen beobachtet werden. In mindestens einem Ausführungsbeispiel offenbaren Wellenbewegungen in diesen Zustands-Aktions-Signalen das reichhaltige, komplexe Verhalten, das durch diese ausgeführte Einstellung im System hervorgerufen wird. In mindestens einem Ausführungsbeispiel können auch Kraftschätzungen vorgenommen werden. In mindestens einem Ausführungsbeispiel können diese Daten nun bei Bedarf für eine bestimmte Aufgabe generiert werden, in der Hoffnung, dass funktionelle sensomotorische Muster gesammelt und dem System in einer autonomen Einstellung vermittelt werden können.In at least one embodiment, the system can be reliably used to solve a variety of tasks of varying difficulty. In at least one embodiment, differences in mean CT across tasks indicate the effects of task complexity and time horizon scale. In at least one embodiment, discrepancies in average CT between operators per task indicate that there is a dependency on operator behavior. In at least one embodiment, the effects include fatigue, exercise, creativity, and motivation. In at least one embodiment, the ability to perform these tasks demonstrates that the teleoperation system has the dexterity to perform precision and power grips, multi-finger grip and non-grip manipulation, in-hand finger manipulation with the fingers, and compound in-hand manipulation ( eg grasping with two fingers while manipulating with the other fingers). In at least one embodiment, it should be noted that certain tasks, eg, container and wallet, take a particularly long time to be teleoperated, due largely to the fact that these tasks are multi-stage. On the other hand, the task that the on taking small cubes can be particularly challenging, since the behavior of releasing the grips on these objects can be unpredictable with the projection scheme used in kinematic reenactment. Nonetheless, such an extensive demonstration of dexterity, implemented solely through mere human hand observation, is empirical evidence that the approach and architecture works well here, according to various embodiments. In at least one embodiment, an important aspect to emphasize is that although the full teleoperation process may not be perfect for a given task (e.g. the operator may lose an item in hand but retrieve it to complete the task) However, the data collected is just as valuable in helping the robot learn to recover from mistakes. In at least one embodiment, the data may be considered game data useful for learning long-term planning. In at least one embodiment, discrete events such as intermittent finger-to-object contacts can be observed in the tactile signals. In at least one embodiment, ripples in these state-action signals reveal the rich, complex behavior induced in the system by this adjustment being made. In at least one embodiment, force estimates can also be made. In at least one embodiment, this data can now be generated on-demand for a particular task, with the hope that functional sensorimotor patterns can be collected and imparted to the system in an autonomous setting.

In mindestens einem Ausführungsbeispiel kann das System es einem stark bewegten Hand-Arm-System ermöglichen, eine motorische Lösung für eine Vielzahl von Manipulationsaufgaben zu finden, indem beobachtete menschliche Hand- und Fingerbewegungen in Roboterarm- und Fingerbewegungen übersetzt werden. In mindestens einem Ausführungsbeispiel können mehrere Aufgaben, wie das Herausziehen von Papiergeld aus einer Brieftasche und das Öffnen einer Kartonschachtel in einem Plastikbehälter, so komplex sein, dass die Entwicklung einer Roboterlösung von Hand oder die direkte Anwendung von Lernmethoden wahrscheinlich unlösbar ist. Das Lösen dieser und anderer Aufgaben durch den ausgeführten Roboter kann es ermöglichen, dass diese Lösungen bei Bedarf für viele Demonstrationen generiert werden können. Darüber hinaus kann die Erstellung dieser Lösungen auf dem System selbst das Lesen, den Zugriff und die Speicherung der verschiedenen taktilen Signale in den Fingerspitzen des Roboters, verschiedener befohlener und gemessener Gelenkpositions- und Geschwindigkeitssignale durch die Hand und den Arm, verschiedener Drehmomentbefehle im gesamten System und beliebiger Kamerazuführungen, die mit dem System assoziiert sind, ermöglichen. In mindestens einem Ausführungsbeispiel kann diese reichhaltige Datenquelle zusammen mit Demonstrationen von Aufgaben zur Lösung komplexer, mehrstufiger Aufgaben mit langem Zeithorizont verwendet werden.In at least one embodiment, the system may enable a highly mobile hand-arm system to find a motorized solution to a variety of manipulation tasks by translating observed human hand and finger movements into robotic arm and finger movements. In at least one embodiment, multiple tasks, such as pulling paper money from a wallet and opening a cardboard box in a plastic container, can be so complex that developing a robotic solution by hand or directly applying learning methods is likely unsolvable. Solving these and other tasks by the executed robot can allow these solutions to be generated for many demonstrations as needed. In addition, creating these solutions on the system itself can read, access, and store the various tactile signals in the robot's fingertips, various commanded and measured joint position and velocity signals through the hand and arm, various torque commands throughout the system, and any camera feeds associated with the system. In at least one embodiment, this rich source of data may be used in conjunction with task demonstrations to solve complex, multi-step, long-term tasks.

Die hierin beschriebenen Techniken sind in mindestens einem Ausführungsbeispiel eine praktikable, kostengünstige Lösung für die Teleoperation eines Robotersystems mit hoher Autonomie (DoA). In mindestens einem Ausführungsbeispiel könnte das beobachtbare Arbeitsvolumen des Bedieners vergrößert werden, um Aufgaben zu ermöglichen, die mit besseren RGB-D-Kameras größere Entfernungen abdecken. In mindestens einem Ausführungsbeispiel ermöglichen die Projektionsschemata bei kinematischem Nachstellen die erfolgreiche Manipulation kleiner Objekte, können aber Fingerbewegungsaufgaben und das rechtzeitige Lösen von Griffen an kleinen Objekten stören. In mindestens einem Ausführungsbeispiel wird dieses Problem vollständig mit einer Handverfolgung gelöst, die Situationen, in denen die Fingerspitzen der menschlichen Hand Kontakt haben, präzise lösen kann. In mindestens einem Ausführungsbeispiel wird die Nachführung der menschlichen Hand durch eine verbesserte Robustheit in Größe und Form der Hand des Bedieners weiter verbessert. Das Fehlen einer taktilen Rückmeldung kann die Durchführung von Präzisionsaufgaben erschweren. In mindestens einem Ausführungsbeispiel wird durch den Einbau von autonomen Kontrollfunktionen ein Teil der Kontrolllast für den Bediener verringert. In mindestens einem Ausführungsbeispiel wird die Systemlatenz reduziert und die Reaktionsfähigkeit des RMP-Bewegungsgenerators auf schnellere Reaktionen abgestimmt. In mindestens einem Ausführungsbeispiel stellen hochpräzise Aufgaben, wie z.B. die Anpassung von Einsetzungen von Stift-in-Loch mit Schlupfpassung, eine Herausforderung dar. In mindestens einem Ausführungsbeispiel wird die Schwierigkeit der Aufgabenerledigung durch eine verbesserte Handverfolgungsleistung, eine automatisierte Präzisionsgriffkontrolle an den Montageobjekten und eine verbesserte Sicht auf die Kleinteile und Einsetzstellen deutlich verringert.The techniques described herein are, in at least one embodiment, a viable, low-cost solution for teleoperation of a high autonomy (DoA) robotic system. In at least one embodiment, the operator's observable work volume could be increased to enable tasks covering longer distances with better RGB-D cameras. In at least one embodiment, in kinematic reenactment, the projection schemes enable successful manipulation of small objects, but may interfere with finger movement tasks and timely release of grips on small objects. In at least one embodiment, this problem is fully addressed with hand tracking that can precisely resolve situations where human hand fingertips are in contact. In at least one embodiment, human hand tracking is further enhanced through improved robustness in the size and shape of the operator's hand. The lack of tactile feedback can make it difficult to perform precision tasks. In at least one embodiment, the incorporation of autonomous control functions reduces some of the control burden on the operator. In at least one embodiment, system latency is reduced and the responsiveness of the RMP motion generator is tuned for faster responses. In at least one embodiment, high-precision tasks, such as fitting slip-fit pin-in-hole insertions, present a challenge Significantly reduced visibility of the small parts and insertion points.

In mindestens einem Ausführungsbeispiel ist die Eingabe in das System eine Punktwolke der Hand des menschlichen Demonstrators. In mindestens einem Ausführungsbeispiel ordnet ein neuronales Netz, z.B. ein neuronales Netz basierend auf dem neuronalen Netz PointNet++, die Punktwolke einer Abschätzung der Handpose relativ zur Kamera sowie den Gelenkwinkeln der Hand zu. In mindestens einem Ausführungsbeispiel werden diese Abschätzungen zusammen mit einem bewegten Handmodell und der ursprünglichen Punktwolke dann an DART übergeben, das die Verfolgung durch Verfeinerung der Neuronalen Netzwerkschätzungen durchführt. Um schließlich ein kinematisches Nachstellen durchzuführen, wird ein Optimierungsproblem gelöst, das die Gelenkwinkel der Allegro-Hand, die zu Fingerspitzen-Posen führen, die denen der menschlichen Hand nahe kommen, findet, gemäß einem Ausführungsbeispiel.In at least one embodiment, the input to the system is a point cloud of the human demonstrator's hand. In at least one embodiment, a neural network, eg, a neural network based on the PointNet++ neural network, associates the point cloud with an estimate of the hand pose relative to the camera and the joint angles of the hand. In at least one embodiment, these estimates are combined with a moving hand model and the original Then pass the point cloud to DART, which performs the tracking by refining the neural network estimates. Finally, to perform kinematic re-enactment, an optimization problem is solved that finds the Allegro hand joint angles that result in fingertip poses that approximate those of the human hand, according to one embodiment.

In mindestens einem Ausführungsbeispiel erfolgt die Handverfolgung mit einem Handschuh durch Schlüsselpunkterkennung mit neuronalen Netzen. In mindestens einem Ausführungsbeispiel trägt der Benutzer einen schwarzen Handschuh mit farbigen Punkten und bewegt die Hand auf einem mit schwarzem Tuch bedeckten Tisch, d.h. die Szene ist so gestaltet, dass sie die Handverfolgung unterstützt. Da in mindestens einem Ausführungsbeispiel die Farben unterschiedlich sind und der Großteil des Hintergrunds schwarz ist, werden unter Verwendung von OpenCV HSV-Farbschwellenwerten Annotationen für diese farbigen Punkte erstellt. In mindestens einem Ausführungsbeispiel variieren die HSV-Schwellenwerte mit der Tageszeit, und daher werden Daten über Tage hinweg gesammelt, um einen großen Datensatz von 50k-Bildern zu erstellen. Mindestens ein Ausführungsbeispiel verwendet ein neuronales Netz, um diese Daten anzupassen, was den gesamten Prozess robust gegenüber Lichtveränderungen und schlechten Annotationen macht und die Belastung des Benutzers vermeidet, zur Testzeit die geeigneten Schwellenwerte zu finden. In mindestens einem Ausführungsbeispiel verwendet das Netzwerk, GloveNet genannt, vier (4) Schichten von ResNet-50 mit einer räumlichen Softmax am Ende, um zu den 2D-Positionen der Fingerspitzen zu regressieren. In mindestens einem Ausführungsbeispiel wird Anti-Aliasing ResNet-50 für genaue und konsistente Vorhersagen verwendet. Die verschiedenen Stufen der Pipeline werden im Folgenden erläutert.In at least one embodiment, gloved hand tracking is performed by key point detection with neural networks. In at least one embodiment, the user wears a black glove with colored dots and moves the hand on a table covered with black cloth, i.e. the scene is designed to support hand tracking. Because in at least one embodiment the colors are different and the majority of the background is black, annotations are created for these colored points using OpenCV HSV color thresholds. In at least one embodiment, HSV thresholds vary with the time of day, and therefore data is collected over days to create a large data set of 50k images. At least one embodiment uses a neural network to fit this data, making the whole process robust to light changes and bad annotation, and avoiding the burden on the user of finding the appropriate thresholds at test time. In at least one embodiment, the network, called GloveNet, uses four (4) layers of ResNet-50 with a spatial softmax at the end to regress to the 2D positions of the fingertips. In at least one embodiment, anti-aliasing ResNet-50 is used for accurate and consistent predictions. The different stages of the pipeline are explained below.

Mindestens ein Ausführungsbeispiel verwendet imgaug und wendet während des Trainings verschiedene Augmentierungen von Daten an. Mindestens ein Ausführungsbeispiel konzentriert sich auf die Hand, die sich auf dem Tisch bewegt. Für jedes trainierte Bild setzt mindestens ein Ausführungsbeispiel die Farbwerte aller Pixel mit einer Tiefe über einem Schwellenwert auf Null. Zum Zeitpunkt des Trainierens füllt mindestens ein Ausführungsbeispiel entweder diese Nullwerte mit einer der Farben des Handschuhs auf oder lässt das Bild basierend auf einem Zufallszahlengenerator unverändert. Mindestens ein Ausführungsbeispiel ersetzt diese Nullwerte ebenfalls durch Zufallsrauschen basierend auf einer gewissen Wahrscheinlichkeit. In mindestens einem Ausführungsbeispiel lernt das Netzwerk, die Farben im Hintergrund, die den Farben auf dem Handschuh ähnlich sehen, zu ignorieren.At least one embodiment uses imgaug and applies various augmentations to data during training. At least one embodiment focuses on the hand moving on the table. For each trained image, at least one embodiment sets the color values of all pixels having a depth above a threshold to zero. At the time of training, at least one embodiment either fills in these zero values with one of the glove's colors or leaves the image unchanged based on a random number generator. At least one embodiment also replaces these zero values with random noise based on some probability. In at least one embodiment, the network learns to ignore background colors that resemble the colors on the glove.

Mindestens ein Ausführungsbeispiel erlangt für jede vorhergesagte Fingerspitzenposition unter Verwenden von Testzeit-Augmentierung (engl. test time augmentation, „TTA“) Konfidenz. Mindestens ein Ausführungsbeispiel erzeugt neue Bilder, indem es das Originalbild durch zufällige Verschiebungen verschiebt und sie alle in einem Stapel durch das Netzwerk leitet. Mindestens ein Ausführungsbeispiel subtrahiert dann die angewendeten Zufallsverschiebungen von den vorhergesagten Positionen für jedes Bild, um sie in den Bezugsrahmen des Originalbildes zu bringen, und mittelt sie aus, um den Mittelwert und die Standardabweichung zu erhalten. Mindestens ein Ausführungsbeispiel verwendet die Standardabweichung als Konfidenzmaß. Mindestens ein Ausführungsbeispiel verwendet sie auch, um die verrauschten Grundwahrheitsdaten zu bereinigen.At least one embodiment obtains confidence for each predicted fingertip position using test time augmentation ("TTA"). At least one embodiment creates new images by shifting the original image by random shifts and passing them all through the network in a batch. At least one embodiment then subtracts the applied random shifts from the predicted positions for each image to bring them into the frame of reference of the original image and averages them to obtain the mean and standard deviation. At least one embodiment uses standard deviation as a confidence measure. At least one embodiment also uses them to clean up the noisy ground truth data.

Zur Testzeit erzeugt mindestens ein Ausführungsbeispiel vier zufällig verschobene Bilder pro Kamerabild und insgesamt 16 Bilder von allen vier Kameras. In mindestens einem Ausführungsbeispiel werden die vorhergesagten Fingerspitzenpositionen und deren Konfidenzmaße berechnet und diejenigen mit geringer Konfidenz verworfen. Von den zuverlässigen (engl. confident) berechnet mindestens ein Ausführungsbeispiel die euklidischen Abstände di zwischen ihnen und den vorherigen Fingerkuppenpositionen und wandelt sie mittels Softmax in Wahrscheinlichkeiten pi um: p i = exp ( α ( d i min i d i ) ) i = 0 N exp ( α ( d i min i d i ) )

Figure DE102020124285B4_0005
At test time, at least one embodiment generates four randomly shifted images per camera image and a total of 16 images from all four cameras. In at least one embodiment, the predicted fingertip positions and their confidence measures are calculated and those with low confidence are discarded. At least one embodiment of the confident ones calculates the Euclidean distances di between them and the previous fingertip positions and converts them into probabilities p i using Softmax : p i = ex ( a ( i.e i at least i i.e i ) ) i = 0 N ex ( a ( i.e i at least i i.e i ) )
Figure DE102020124285B4_0005

Mindestens ein Ausführungsbeispiel schiebt die vorhergesagten Stellen, die eine Wahrscheinlichkeit pi > 0.2 haben, in einen Rollpuffer und berechnet den geometrischen Median, um die endgültige vorhergesagte Stelle der Fingerspitze in 3D zu erhalten. Der Hyperparameter beträgt α = 500. Name der Schicht Ausgabegröße Parameter Eingabe 320×240 - conv1 160×120 7×7, 64, stride 2 3 × 3 max pool, stride 2 conv2 80×60 [ 1 × 1, 64 3 × 3, 64 1 × 1, 256 ] × 3

Figure DE102020124285B4_0006
conv3 40×30 [ 1 × 1, 128 3 × 3, 128 1 × 1, 512 ] × 4
Figure DE102020124285B4_0007
conv transpose 80×60 3 × 3, 8 spatial_softmax 8×2 β = 50 At least one embodiment shifts the predicted locations having a probability p i >0.2 into a rolling buffer and calculates the geometric median to get the final predicted fingertip location in 3D. The hyperparameter is α = 500. layer name output size parameter input 320×240 - conv1 160×120 7×7, 64, stride 2 3 × 3 max pool, stride 2 conv2 80×60 [ 1 × 1, 64 3 × 3, 64 1 × 1, 256 ] × 3
Figure DE102020124285B4_0006
conv3 40×30 [ 1 × 1, 128 3 × 3, 128 1 × 1, 512 ] × 4
Figure DE102020124285B4_0007
conv transpose 80×60 3×3, 8 spatial_softmax 8×2 β = 50

In mindestens einem Ausführungsbeispiel waren die Vorhersagen der Punkte am Handrücken stabil, aber die Vorhersagen der Punkte an den Fingerspitzen waren im Zeitverlauf recht inkonsistent. Da die Annotationen in mindestens einem Ausführungsbeispiel durch Berechnung des Massenmittelpunkts (engl. center of mass, „CoM“) des segmentierten Punktes unter Verwendung des HSV-Farbschwellenwerts in OpenCV generiert wurden, war der CoM der Fingerspitze aufgrund von Okklusionen über die Frames hinweg etwas inkonsistent. Daher stützt sich mindestens ein Ausführungsbeispiel nur auf die Abschätzung der Handpose, die von den Punkten auf der Rückseite der Handfläche bereitgestellt wird. Name der Schicht MLP Merkmale Radius Anz. Punkte SA1 [13, 64, 64, 128] 0.2 2048 SA2 [128, 128, 128,256] 0.4 1024 SA3 [256, 128, 128, 256] 0.8 512 SA4 [256, 128, 128, 256] 1.2 256 FP4 [256+256, 256, 256] 512 FP3 [256+256, 256, 256] 1024 FP2 [256+128, 256, 256] 2048 FP1 [256+3, 256, 256] 8192 In at least one embodiment, the predictions for the backhand points were stable, but the predictions for the fingertip points were quite inconsistent over time. Since the annotations were generated in at least one embodiment by calculating the center of mass (“CoM”) of the segmented point using the HSV color threshold in OpenCV, the CoM of the fingertip was somewhat inconsistent across frames due to occlusions . Therefore, at least one embodiment relies only on the hand pose estimate provided by the points on the back of the palm. layer name MLP features radius no. Points SAT 1 [13, 64, 64, 128] 0.2 2048 SAT 2 [128, 128, 128,256] 0.4 1024 SA 3 [256, 128, 128, 256] 0.8 512 SAT 4 [256, 128, 128, 256] 1.2 256 FP 4 [256+256, 256, 256] 512 FP 3 [256+256, 256, 256] 1024 FP 2 [256+128, 256, 256] 2048 FP 1 [256+3, 256, 256] 8192

In mindestens einem Ausführungsbeispiel besteht die Architektur aus vier (4) Satzabstraktionsschichten, SAi, und vier (4) Merkmalsausbreitungsschichten, FPj. In mindestens einem Ausführungsbeispiel nimmt die Mengenabstraktionsschicht eine Unterabtastung der Punkte vor, während die Merkmalsausbreitungsschicht Merkmale mit einer höheren Auflösung interpoliert.In at least one embodiment, the architecture consists of four (4) sentence abstraction layers, SA i , and four (4) feature propagation layers, FP j . In at least one embodiment, the set abstraction layer undersamples the points while the feature expansion layer interpolates features at a higher resolution.

In mindestens einem Ausführungsbeispiel nimmt eine gesetzte Abstraktionsebene N × (d + C) als Eingabe von N Punkten mit d-dim Koordinaten und C-dim Punkt-Merkmal. In mindestens einem Ausführungsbeispiel wird ein Tensor von N' × (d + C') ausgegeben, wobei N' unterabgetastete Punkte mit d-dim Koordinaten und neuen C'-dim Merkmalsvektoren einen lokalen Kontext zusammenfassen.In at least one embodiment, a set abstraction level takes N×(d+C) as input N points with d-dim coordinates and C-dim point feature. In at least one embodiment, a tensor of N'×(d+C') is output, where N' subsampled points with d-dim coordinates and new C'-dim feature vectors summarize a local context.

In mindestens einem Ausführungsbeispiel werden in einer Merkmalsausbreitungsebene Punktmerkmale von Ni x (d + C)-Punkten zu Ni-l-Punkten propagiert, wobei Ni-l und Ni (mit Ni ≤ Ni-l) die Punktsatzgröße von Eingabe und Ausgabe der gesetzten Abstraktionsebene i sind. In mindestens einem Ausführungsbeispiel wird dies durch Interpolation von Merkmalswerten von Ni-Punkten an den Koordinaten der Ni-l-Punkte erreicht. In mindestens einem Ausführungsbeispiel werden die interpolierten Merkmale an Ni-l-Punkten dann mit übersprungenen verknüpften Punktmerkmalen aus dem gesetzten Abstraktionsniveau verkettet.In at least one embodiment, in a feature propagation plane, point features are propagated from N i x (d + C) points to N il points, where N il and N i (with N i ≤ N i -l) are the point set size of input and output of the set abstraction level i are. In at least one embodiment, this is accomplished by interpolating feature values of N i points at the coordinates of the N il points. In at least one embodiment, the interpolated features at nil points are then concatenated with skipped linked point features from the set level of abstraction.

In mindestens einem Ausführungsbeispiel ist das Grundgerüst des Abschätzens der Handpose eine Architektur, die eine Einbindung,f, der Größe Nx C liefert. Unter Verwenden verschiedener MLPs wird diese Einbindung den entsprechenden gewünschten Ausgaben zugeordnet. z = mlp _ layer 1 ( ƒ ) δ x y z = voting ( z ) cords = input xyz + δ x y z JointMask x y z = sigmoid ( seg ( z ) ) HandSeg x y z = cls ( z ) HandSegProb x y z = sigmoid ( HandSeg x y z ) weights = HandSegProb x y z JointMask x y z Keypoints = weights coords w e i g h t s

Figure DE102020124285B4_0008
Name der Schicht Parameter mlp layer1 [256, 256, 256] voting [256, 23×3] seg [256, 23] cls [256, 2] In at least one embodiment, the framework for estimating the hand pose is an architecture that provides an enclosure, f, of size NxC. Using different MLPs, this inclusion is mapped to the appropriate desired outputs. e.g = mlp _ layers 1 ( ƒ ) δ x y e.g = voting ( e.g ) cords = input xyz + δ x y e.g Joint Mask x y e.g = sigmoid ( bless ( e.g ) ) hand seg x y e.g = cls ( e.g ) HandSegProb x y e.g = sigmoid ( hand seg x y e.g ) weights = HandSegProb x y e.g Joint Mask x y e.g key points = weights coords w e i G H t s
Figure DE102020124285B4_0008
layer name parameter mlp layer1 [256, 256, 256] voting [256, 23×3] bless [256, 23] cls [256, 2]

In mindestens einem Ausführungsbeispiel erhält die voting-Schicht die relativen Positionen, δxyz, der 23 Schlüsselpunkte in Bezug auf jeden Punkt. Die seg-Schicht erhält die Masken für jeden Schlüsselpunkt, d.h. die Nachbarschaft von Punkten, die zur Lage eines Schlüsselpunktes beitragen. In mindestens einem Ausführungsbeispiel segmentiert die HandSeg-Schicht die Hand vom Hintergrund. In mindestens einem Ausführungsbeispiel werden sowohl für voting als auch für die Keypoints euklidische Verluste verwendet, während für HandSeg eine sigmoide Kreuzentropie verwendet wird.In at least one embodiment, the voting layer maintains the relative positions, δ xyz , of the 23 key points with respect to each point. The seg layer preserves the masks for each keypoint, ie the neighborhood of points that contribute to a keypoint's location. In at least one embodiment, the HandSeg layer segments the hand from the background. In at least one embodiment, Euclidean losses are used for both voting and keypoints, while sigmoidal cross entropy is used for HandSeg.

In mindestens einem Ausführungsbeispiel werden die 23 × 3 Schlüsselpunktpositionen zu einem 69-dimensionalen Vektor ausgerollt, bevor sie in das JointNet eingespeist werden, das einen 20-dimensionalen Vektor von Gelenkwinkeln liefert. In mindestens einem Ausführungsbeispiel aller von Hand entworfenen Architekturen, die ausprobiert wurden, erwies sich diese spezielle Architektur als ein wirksamer Kompromiss zwischen Genauigkeit und Effizienz. Name der Schicht Parameter linear 1 69×128 linear2 128×256 linear3 256×20 In at least one embodiment, the 23×3 key point locations are unrolled into a 69 dimensional vector before being fed into the JointNet, which provides a 20 dimensional vector of joint angles. In at least one embodiment of all the hand-designed architectures tried, this particular architecture proved to be an effective compromise between accuracy and efficiency. layer name parameter linear 1 69×128 linear2 128×256 linear3 256×20

Die Ausführungszeiten für die fünf (5) aufeinanderfolgenden Versuche für jede der Aufgaben sind gemäß einem Ausführungsbeispiel dargestellt. In mindestens einem Ausführungsbeispiel wird der gescheiterte Versuch mit F bezeichnet. In mindestens einem Ausführungsbeispiel verwendete der Bediener bei den meisten Versuchen nur drei bis vier (3-4) Trainingsversuche zum Aufwärmen. In mindestens einem Ausführungsbeispiel ermöglichen es diese fünf (5) aufeinanderfolgenden Versuche, sowohl die Fähigkeit zu testen, eine bestimmte Aufgabe ohne Ermüdung auszuführen, als auch zu zeigen, dass die Verfolgung ohne Fehler funktioniert. In mindestens einem Ausführungsbeispiel kann die Leistung je nach Bediener und Tagesbefindlichkeit variieren, aber Experimente haben gezeigt, dass die Leistung im Allgemeinen recht ähnlich ist. Task Bediener Ausführungszeiten für 5 aufeinanderfolgende Versuche Mittelwert Std. Aufnehmen und Ablegen: Klotz Bediener 1 19 16 17 11 18 16 3.11 Aufnehmen und Ablegen: Klotz Bediener 2 22 22 19 16 14 19 3.57 Aufnehmen und Ablegen: Spam Bediener 1 28 14 15 16 23 19 6.05 Aufnehmen und Ablegen: Spam Bediener 2 23 23 28 29 20 25 3.78 Karte schieben Bediener 1 27 26 32 38 35 32 5.12 Karte schieben Bediener 2 18 12 18 15 17 16 2.54 Aufnehmen und Ablegen: Pringles Bediener 1 50 18 20 29 18 27 13.6 Aufnehmen und Ablegen: Pringles Bediener 2 25 53 29 36 63 41 16.22 Bewegen eines Klotzes Bediener 1 48 67 F F 58 58 9.50 Bewegen eines Klotzes Bediener 2 37 44 F F 28 36 8.02 Schütten Bediener 1 38 42 32 F 28 35 6.21 Schütten Bediener 2 73 56 62 50 57 60 8.61 Umdrehen einer Kiste Bediener 1 51 39 45 F 77 53 16.73 Umdrehen einer Kiste Bediener 2 174 26 90 30 67 77 60.18 Blöcke (L) Bediener 1 41 49 54 45 165 71 52.87 Blöcke (L) Bediener 2 53 93 79 43 61 66 20.12 Erdnussgefäß Bediener 1 89 66 79 77 75 77 8.25 Erdnussgefäß Bediener 2 68 105 84 87 57 80 18.45 Einsetzen von Bechern Bediener 1 64 94 70 F 71 75 13.2 Einsetzen von Bechern Bediener 2 125 F 124 124 112 121 6.18 Tee Bediener 1 48 115 170 58 154 109 55.00 Tee Bediener 2 54 48 99 105 213 104 66.22 Blöcke (M) Bediener 1 179 278 64 80 298 180 108.3 7 Blöcke (M) Bediener 2 99 48 82 75 152 91 38.63 Brieftasche Bediener 1 105 66 195 96 63 105 61.82 Brieftasche Bediener 2 321 92 328 100 218 212 114.3 6 Blöcke (S) Bediener 1 136 371 169 F 484 290 165.8 8 Blöcke (S) Bediener 2 113 89 69 117 67 91 23.57 Behälter Bediener 1 442 271 375 297 405 358 72.18 Behälter Bediener 2 189 212 258 238 243 228 27.39 Execution times for the five (5) consecutive attempts for each of the tasks are shown according to one embodiment. In at least one embodiment, the failed attempt is labeled F. In at least one embodiment, in most trials, the operator used only three to four (3-4) warm-up training trials. In at least one embodiment, these five (5) consecutive attempts allow both testing the ability to perform a particular task without fatigue and demonstrating that the tracking is functioning without error. In at least one embodiment, performance may vary depending on the operator and the condition of the day, but experiments have shown that performance is generally quite similar. tasks operator Execution times for 5 consecutive attempts Average hours Picking up and putting down: Block operator 1 19 16 17 11 18 16 3.11 Picking up and putting down: Klotz operator 2 22 22 19 16 14 19 3.57 Pickup and Drop: Spam operator 1 28 14 15 16 23 19 6.05 Pickup and Drop: Spam operator 2 23 23 28 29 20 25 3.78 slide card operator 1 27 26 32 38 35 32 5.12 slide card operator 2 18 12 18 15 17 16 2.54 Pick up and drop: Pringles operator 1 50 18 20 29 18 27 13.6 Pick up and drop: Pringles operator 2 25 53 29 36 63 41 16.22 moving a block operator 1 48 67 f f 58 58 9.50 moving a block operator 2 37 44 f f 28 36 8.02 pour operator 1 38 42 32 f 28 35 6.21 pour operator 2 73 56 62 50 57 60 8.61 turning over a box operator 1 51 39 45 f 77 53 16.73 turning over a box operator 2 174 26 90 30 67 77 60.18 Blocks (L) operator 1 41 49 54 45 165 71 52.87 Blocks (L) operator 2 53 93 79 43 61 66 20.12 peanut jar operator 1 89 66 79 77 75 77 8.25 peanut jar operator 2 68 105 84 87 57 80 18.45 Insertion of cups operator 1 64 94 70 f 71 75 13.2 Insertion of cups operator 2 125 f 124 124 112 121 6.18 tea operator 1 48 115 170 58 154 109 55.00 tea operator 2 54 48 99 105 213 104 66.22 Blocks (M) operator 1 179 278 64 80 298 180 108.3 7 Blocks (M) operator 2 99 48 82 75 152 91 38.63 wallet operator 1 105 66 195 96 63 105 61.82 wallet operator 2 321 92 328 100 218 212 114.3 6 Blocks (S) operator 1 136 371 169 f 484 290 165.8 8 Blocks (S) operator 2 113 89 69 117 67 91 23.57 container operator 1 442 271 375 297 405 358 72.18 container operator 2 189 212 258 238 243 228 27.39

In mindestens einem Ausführungsbeispiel führt das Nachstellen mit neuronalen Netzen zu unbefriedigenden Ergebnissen - es ist nicht die Genauigkeit bereitgestellt, die der Online-Optimierung mit sequentiellen kleinsten Quadraten entspricht. In mindestens einem Ausführungsbeispiel kann die Projektionsschwelle, die beim Nachstellen verwendet wird, ein gewisses Einstellen erfordern, wenn kleine Objekte erfasst werden, und daher wird es umständlich, ein neuronales Netz für eine neue willkürliche Aufgabe zu trainieren.In at least one embodiment, neural network tracking produces unsatisfactory results - it does not provide the level of accuracy equivalent to on-line sequential least squares optimization. In at least one embodiment, the projection threshold used in tracking may require some adjustment when detecting small objects, and therefore it becomes cumbersome to train a neural network for a new random task.

In mindestens einem Ausführungsbeispiel beruht ein Handverfolgungssystem auf einer Kombination von modellbasierter und modellfreier Verfolgung. In mindestens einem Ausführungsbeispiel tendieren modellbasierte Verfolgungssysteme dazu, genauer zu sein, da sie online auf die in das Modell eingegebenen Beobachtungen optimieren. Da die Optimierung jedoch in mindestens einem Ausführungsbeispiel tendenziell hochgradig nichtlinear ist, benötigen sie auch eine gute Initialisierung, um eine sinnvolle Lösung zu finden. In mindestens einem Ausführungsbeispiel verwendet mindestens ein Ausführungsbeispiel ein modellfreies System, das eine gute Initialisierung bereitstellen kann. In mindestens einem Ausführungsbeispiel ist ein modellfreies System ein neuronales Netzwerk, das mit den Daten trainiert wird, die von einem modellbasierten System erzeugt werden.In at least one embodiment, a hand tracking system relies on a combination of model-based and model-free tracking. In at least one embodiment, the model based tracking systems to be more accurate as they optimize online for the observations fed into the model. However, since the optimization tends to be highly non-linear in at least one embodiment, they also need good initialization to find a meaningful solution. In at least one embodiment, at least one embodiment uses a model-free system that can provide good initialization. In at least one embodiment, a model-free system is a neural network that is trained on the data generated by a model-based system.

In mindestens einem Ausführungsbeispiel wird eine modellbasierte Verfolgung in DART [27] verwendet, und in den Bereichen, in denen sie zuverlässig funktioniert, werden Daten gesammelt, und dies wird wiederholt, um ein breites Spektrum von Posen abzudecken. In mindestens einem Ausführungsbeispiel kann die Leistung von DART stochastisch sein: Es kann manchmal für dieselbe Bewegung zuverlässig funktionieren und zu anderen Zeiten aufgrund von falschen lokalen Minima in der Optimierung aufgrund der Eingabe-Punktwolke katastrophal versagen. Wenn jedoch in mindestens einem Ausführungsbeispiel Daten für die Szenarien gesammelt werden, in denen es einigermaßen gut funktioniert, kann ein neuronales Netz verwendet werden, um diese Daten anzupassen und sicherzustellen, dass es eine gute Initialisierung für DART bereitstellen kann und verhindert, dass es in Zukunft in die falschen lokalen Minima fällt. In mindestens einem Ausführungsbeispiel ist dies auf die Tatsache zurückzuführen, dass neuronale Netze etwas außerhalb des Trainingssatzes verallgemeinern können. In mindestens einem Ausführungsbeispiel wird dieses Verfahren der Datenerfassung und Anpassung neuronaler Netze wiederholt durchgeführt und verbessert die Leistung von DART so, dass die Verfolgung über einen langen Zeitraum ohne Ausfälle funktioniert. In mindestens einem Ausführungsbeispiel wird eine zweistufige, auf PointNet++ basierende Architektur mit Hilfe der von DART generierten Annotationen trainiert und ermöglicht es in mindestens einem Ausführungsbeispiel, die Verfolgung sowohl robust als auch genau zu machen, indem eine gute Initialisierung bereitgestellt wird.In at least one embodiment, model-based tracking is used in DART [27] and data is collected in the areas where it works reliably and this is repeated to cover a wide range of poses. In at least one embodiment, the performance of DART can be stochastic: it can sometimes work reliably for the same motion and other times fail catastrophically due to false local minima in the optimization due to the input point cloud. However, in at least one embodiment, if data is collected for the scenarios in which it performs reasonably well, a neural network can be used to adjust that data and ensure that it can provide good initialization for DART and prevent it from doing so in the future falls into the wrong local minima. In at least one embodiment, this is due to the fact that neural networks can generalize slightly outside of the training set. In at least one embodiment, this method of data acquisition and neural network adjustment is performed repeatedly and improves the performance of DART such that tracking works without dropouts over a long period of time. In at least one embodiment, a two-tier PointNet++ based architecture is trained using the annotations generated by DART and allows, in at least one embodiment, to make tracking both robust and accurate by providing good initialization.

14 zeigt ein Beispiel für einen Prozess, der als Ergebnis einem Ausführungsbeispiel durch ein Computersystem einen Roboterarm zur Ausführung einer Aufgabe lenkt, indem er die Bewegung einer menschlichen Hand emuliert. In mindestens einem Ausführungsbeispiel ist das Computersystem ein Computersystem wie in 21-23 dargestellt. In mindestens einem Ausführungsbeispiel umfasst das Computersystem einen Prozessor und einen Speicher, wobei der Speicher ausführbare Befehle speichert, die infolge ihrer Ausführung durch den Prozessor bewirken, dass das System die in 14 gezeigten und in der nachstehenden Beschreibung beschriebenen Operationen ausführt. In mindestens einem Ausführungsbeispiel ist der Prozessor eine Vielzahl von Prozessoren oder ein spezialisierter Prozessor wie ein Grafikprozessor (GPU), wie in 15-43 gezeigt und unten beschrieben. 14 Figure 12 shows an example of a process that, as a result of one embodiment, a computer system directs a robotic arm to perform a task by emulating the movement of a human hand. In at least one embodiment, the computer system is a computer system as in 21-23 shown. In at least one embodiment, the computer system includes a processor and a memory, the memory storing executable instructions that, when executed by the processor, cause the system to execute the 14 performs the operations shown and described in the description below. In at least one embodiment, the processor is a plurality of processors or a specialized processor such as a graphics processing unit (GPU), as in 15-43 shown and described below.

In mindestens einem Ausführungsbeispiel, in Schritt 1402, erhält das Computersystem von einer Tiefenkamera ein Bild einer menschlichen Hand. In verschiedenen Ausführungsbeispielen kann die Tiefenkamera eine RGB-Tiefenkamera, eine Binokularkamera, ein Radar- oder Laserbasierter Bildgeber oder ein medizinisches Bildgebungssystem wie z.B. ein MRI, Röntgen, eine Computertomographie oder ein Computer-Axial-Tomographie-Scanner sein. In mindestens einem Ausführungsbeispiel, in Schritt 1404, erzeugt das Computersystem aus dem Bild eine Punktwolke der menschlichen Hand. Die Punktwolke stellt dreidimensionale Daten zur Verfügung, die die Hand beschreiben, aus der eine Pose bestimmt werden kann. In mindestens einem Ausführungsbeispiel, in Schritt 1406, analysiert das Computersystem die Punktwolke, um eine Gelenkstruktur und Gelenkwinkel für die Hand zu bestimmen. Diese umfasst in verschiedenen Ausführungsbeispielen in Kombination mit der Lage der Hand im Raum die Pose der Hand.In at least one embodiment, in step 1402, the computer system obtains an image of a human hand from a depth camera. In various embodiments, the depth camera may be an RGB depth camera, a binocular camera, a radar or laser based imager, or a medical imaging system such as an MRI, X-ray, computed tomography, or computed axial tomography scanner. In at least one embodiment, in step 1404, the computer system creates a point cloud of the human hand from the image. The point cloud provides three-dimensional data describing the hand from which a pose can be determined. In at least one embodiment, in step 1406, the computer system analyzes the point cloud to determine a joint structure and joint angles for the hand. In various exemplary embodiments, this includes the pose of the hand in combination with the position of the hand in space.

In mindestens einem Ausführungsbeispiel, in Schritt 1408, übersetzt das Computersystem die Pose einer menschlichen Hand in eine entsprechende Pose eines Robotergreifers. In mindestens einem Ausführungsbeispiel kann der Robotergreifer eine bewegliche Roboterhand sein, die der einer menschlichen Hand ähnelt. Die gelenkige Roboterhand kann weniger oder mehr Finger haben als eine menschliche Hand, und jeder Finger der gelenkigen Roboterhand kann ein oder mehrere bewegliche Segmente haben. In mindestens einem Ausführungsbeispiel umfasst die Pose einer menschlichen Hand einen Satz von Gelenksegmenten und Gelenkwinkeln sowie eine Gesamtposition der menschlichen Hand, und die Pose des Robotergreifers wird durch Duplizieren der Gelenkwinkel der Pose einer menschlichen Hand unter Verwendung der Roboterhand bestimmt. In mindestens einem Ausführungsbeispiel hat die Roboterhand weniger Finger als die menschliche Hand, und Posen, die mit einer Teilmenge der menschlichen Finger assoziiert sind, werden zur Bestimmung der entsprechenden Pose des Robotergreifers verwendet. In mindestens einem Ausführungsbeispiel kann der Robotergreifer größer oder kleiner als die menschliche Hand sein, und bei der Bestimmung einer entsprechenden Pose des Robotergreifers wird ein Skalierungsfaktor auf die Pose der menschlichen Hand angewendet. In mindestens einem Ausführungsbeispiel umfasst die Pose einer menschlichen Hand eine Position der Hand, und eine entsprechende Position für die Roboterhand wird durch Übersetzen eines Koordinatensystems von einem Koordinatensystem für den menschlichen Bediener in das des Roboters bestimmt. In einigen Beispielen kann ein Skalierungsfaktor auf den Ortsaspekt der Pose angewandt werden. Beispielsweise kann eine Bewegung der menschlichen Hand von sechs Zoll einer Bewegung des Robotergreifers von sechs Fuß entsprechen.In at least one embodiment, in step 1408, the computer system translates the pose of a human hand into a corresponding pose of a robot gripper. In at least one embodiment, the robotic gripper may be a flexible robotic hand similar to that of a human hand. The articulated robot hand may have fewer or more fingers than a human hand, and each finger of the articulated robot hand may have one or more movable segments. In at least one embodiment, the pose of a human hand includes a set of joint segments and joint angles and an overall position of the human hand, and the pose of the robot gripper is determined by duplicating the joint angles of the pose of a human hand using the robot hand. In at least one embodiment, the robotic hand has fewer fingers than the human hand, and poses associated with a subset of the human fingers are used to determine the corresponding pose of the robotic gripper. In at least one embodiment, the robotic gripper may be larger or smaller than the human hand, and a scaling factor is applied to the pose of the human hand in determining a corresponding pose of the robotic gripper. In at least one embodiment, the pose comprises a human Hand a position of the hand, and a corresponding position for the robot hand is determined by translating a coordinate system from a coordinate system for the human operator to that of the robot. In some examples, a scaling factor can be applied to the location aspect of the pose. For example, six inches of human hand movement may correspond to six feet of robot gripper movement.

In mindestens einem Ausführungsbeispiel, in Schritt 1410, bestimmt das Computersystem einen Satz von Bewegungen zur Repositionierung des Robotergreifers von einer gegenwärtigen Position in die entsprechende, in Schritt 1408 bestimmte Pose. In mindestens einem Ausführungsbeispiel bestimmt das System einen Bewegungspfad für die Roboterhand, der die Roboterhand von ihrer gegenwärtigen Pose in die in Schritt 1408 festgelegte Pose bringt. In mindestens einem Ausführungsbeispiel werden diese Bewegungen gemäß den Riemann'schen Bewegungsrichtlinien bestimmt. In mindestens einem Ausführungsbeispiel, in Schritt 1412, veranlasst das Computersystem den Roboter, den in Schritt 1410 festgelegten Satz von Bewegungen auszuführen. In mindestens einem Ausführungsbeispiel nimmt der Robotergreifer infolgedessen die Pose ein, die der Pose einer menschlichen Hand entspricht. In verschiedenen Ausführungsbeispielen ist ein Bediener unter Verwendung dieser Techniken in der Lage, die Bewegung des Roboters intuitiv durch Bewegungen der Hand des Bedieners zu steuern. In mindestens einem Ausführungsbeispiel sind kein Handschuh oder getragene Apparate erforderlich.In at least one embodiment, in step 1410, the computer system determines a set of motions for repositioning the robot gripper from a current position to the corresponding pose determined in step 1408. In at least one embodiment, the system determines a path of motion for the robot hand that will bring the robot hand from its current pose to the pose specified in step 1408 . In at least one embodiment, these motions are determined according to Riemann's motion rules. In at least one embodiment, in step 1412, the computer system causes the robot to perform the set of movements specified in step 1410. As a result, in at least one embodiment, the robot gripper assumes the pose that corresponds to the pose of a human hand. In various embodiments, using these techniques, an operator is able to intuitively control the movement of the robot through movements of the operator's hand. In at least one embodiment, no glove or worn apparatus is required.

15A zeigt die Inferenz- und/oder Trainingslogik 1515, die verwendet wird, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind unten in Verbindung mit 15A und/oder 15B bereitgestellt. 15A 15 shows the inference and/or training logic 1515 used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with below 15A and or 15B provided.

In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 ohne Einschränkung einen Code- und/oder Datenspeicher 1501 zur Speicherung von Vorwärts- und/oder Ausgabegewicht und/oder Ein-/Ausgabedaten und/oder andere Parameter zur Konfiguration von Neuronen oder Schichten eines neuronalen Netzes umfassen, die zur Inferenz trainiert und/oder verwendet werden, gemäß Aspekten eines oder mehrerer Ausführungsbeispiele . In mindestens einem Ausführungsbeispiel kann die Trainingslogik 1515 den Code und/oder den Datenspeicher 1501 umfassen oder mit diesem gekoppelt sein, um Graphencode oder andere Software zur Steuerung von Zeitgebung und/oder Reihenfolge zu speichern, in der Gewichts- und/oder andere Parameterinformationen geladen werden, um die Logik zu konfigurieren, einschließlich ganzzahliger und/oder Gleitkommaeinheiten (zusammen arithmetisch-logischer Einheiten (ALUs)). In mindestens einem Ausführungsbeispiel lädt Code, wie z.B. Graphencode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs, basierend auf einer Architektur eines neuronalen Netzes, dem der Code entspricht. In mindestens einem Ausführungsbeispiel speichert der Code- und/oder Datenspeicher 1501 Gewichtsparameter und/oder Ein-/Ausgabedaten jeder Schicht eines neuronalen Netzes, die während der Vorwärtspropagierung von Ein-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsbeispiele trainiert oder verwendet werden. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1501 mit anderen On-Chip- oder Off-Chip-Datenspeichern, einschließlich des L1-, L2- oder L3-Cache- oder Systemspeichers eines Prozessors, zusammengefasst sein.In at least one embodiment, inference and/or training logic 1515 may include, without limitation, code and/or data storage 1501 for storing forward and/or output weight and/or input/output data and/or other neuron or layer configuration parameters of a neural network trained and/or used for inference, according to aspects of one or more embodiments. In at least one embodiment, training logic 1515 may include or be coupled to code and/or data storage 1501 to store graph code or other software for controlling the timing and/or order in which weight and/or other parameter information is loaded to configure logic, including integer and/or floating point units (collectively, arithmetic logic units (ALUs)). In at least one embodiment, code, such as graph code, loads weight or other parametric information into processor ALUs based on a neural network architecture to which the code conforms. In at least one embodiment, the code and/or data store 1501 stores weight parameters and/or input/output data of each neural network layer used during forward propagation of input/output data and/or weight parameters during training and/or inference using trained or used by aspects of one or more embodiments. In at least one embodiment, any portion of code and/or data memory 1501 may be aggregated with other on-chip or off-chip data memory, including a processor's L1, L2, or L3 cache or system memory.

In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1501 intern oder extern von einem oder mehreren Prozessoren oder anderen Hardware-LogikGeräten oder -Schaltungen ausgeführt sein. In mindestens einem Ausführungsbeispiel kann der Code- und/oder der Code- und/oder Datenspeicher 1501 ein Cache-Speicher, ein dynamischer, zufällig adressierbarer Speicher (engl. dynamic randomly addressable memory, „DRAM“), ein statischer, zufällig adressierbarer Speicher (engl. static randomly addressable memory, „SRAM“), ein nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann die Wahl, ob der Code- und/oder der Code- und/oder Datenspeicher 1501 beispielsweise prozessorintern oder prozessorextern ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von dem verfügbaren Speicher auf dem Chip gegenüber dem Speicher außerhalb des Chips, von Latenzanforderungen der ausgeführten Trainings- und/oder Inferenzfunktionen, von der Stapelgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzes verwendeten Daten oder von einer Kombination dieser Faktoren abhängen.In at least one embodiment, any portion of code and/or data storage 1501 may be implemented internally or externally to one or more processors or other hardware logic devices or circuits. In at least one embodiment, code and/or code and/or data memory 1501 may be cache memory, dynamic randomly addressable memory (“DRAM”), static randomly addressable memory ( static randomly addressable memory (“SRAM”), non-volatile memory (e.g. flash memory) or other memory. In at least one embodiment, the choice of whether the code and/or code and/or data memory 1501 is, for example, on-processor or off-processor, or consists of DRAM, SRAM, Flash, or some other type of memory, may depend on the memory available on-chip versus that off-chip memory, latency requirements of the training and/or inference functions performed, the stack size of the data used in inferring and/or training a neural network, or a combination of these factors.

In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 ohne Einschränkung einen Code und/oder einen Datenspeicher 1505 umfassen, um Rückwärts- und/oder Ausgabegewichte und/oder Ein-/Ausgabedaten zu speichern, die Neuronen oder Schichten eines neuronalen Netzes entsprechen, die in Aspekten einer oder mehrerer Ausführungsbeispiele für Inferenz trainiert und/oder verwendet werden. In mindestens einem Ausführungsbeispiel speichert der Code- und/oder Datenspeicher 1505 Gewichtsparameter und/oder Ein-/Ausgabedaten jeder Schicht eines neuronalen Netzes, die während einer Rückwärtspropagierung von Ein-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten eines oder mehrerer Ausführungsbeispiele trainiert oder verwendet werden. In mindestens einem Ausführungsbeispiel kann die Trainingslogik 1515 einen Code- und/oder Datenspeicher 1505 umfassen oder mit diesem gekoppelt sein, um Graphencode oder andere Software zur Steuerung des Zeitablaufs und/oder der Reihenfolge zu speichern, in der Gewichts- und/oder andere Parameterinformationen geladen werden sollen, um die Logik zu konfigurieren, einschließlich ganzzahliger und/oder Gleitkommaeinheiten (zusammen arithmetisch-logischer Einheiten (ALUs)). In mindestens einem Ausführungsbeispiel lädt Code, wie z.B. Graphencode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs, basierend auf einer Architektur eines neuronalen Netzes, dem der Code entspricht. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1505 mit anderen On-Chip- oder Off-Chip-Datenspeichern, einschließlich des L1-, L2- oder L3-Cache-Speichers oder des Systemspeichers eines Prozessors, zusammengefasst sein. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1505 intern oder extern in einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder -schaltungen enthalten sein. In mindestens einem Ausführungsbeispiel kann der Code- und/oder Datenspeicher 1505 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann die Wahl, ob der Code- und/oder Datenspeicher 1505 z.B. prozessorintern oder prozessorextern ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von dem verfügbaren Speicher on-chip oder off-chip, von den Latenzanforderungen der ausgeführten Trainings- und/oder Inferenzfunktionen, von der Stapelgröße der bei der Inferenz und/oder dem Training eines neuronalen Netzes verwendeten Daten oder von einer Kombination dieser Faktoren abhängen.In at least one embodiment, the inference and/or training logic 1515 may include, without limitation, code and/or data storage 1505 to store backward and/or output weights and/or input/output data corresponding to neurons or layers of a neural network trained in aspects of one or more embodiments for inference and/or ver be turned. In at least one embodiment, the code and/or data store 1505 stores weight parameters and/or input/output data of each neural network layer used during back propagation of input/output data and/or weight parameters during training and/or inference using trained or used by aspects of one or more embodiments. In at least one embodiment, training logic 1515 may include or be coupled to code and/or data storage 1505 to store graph code or other software for controlling the timing and/or order in which weight and/or other parameter information is loaded to configure logic, including integer and/or floating point units (collectively, arithmetic logic units (ALUs)). In at least one embodiment, code, such as graph code, loads weight or other parametric information into processor ALUs based on a neural network architecture to which the code conforms. In at least one embodiment, any portion of code and/or data memory 1505 may be aggregated with other on-chip or off-chip data memory, including a processor's L1, L2, or L3 cache memory or system memory. In at least one embodiment, any portion of code and/or data storage 1505 may be internal or external to one or more processors or other hardware logic devices or circuits. In at least one embodiment, code and/or data storage 1505 may be cache memory, DRAM, SRAM, non-volatile memory (eg, flash memory), or other memory. In at least one embodiment, the choice of whether the code and/or data storage 1505 is, for example, on-processor or off-processor, or consists of DRAM, SRAM, Flash, or other memory type, may depend on the available memory on-chip or off-chip, latency requirements of the training and/or inference functions performed, the batch size of the data used in the inference and/or training of a neural network, or a combination of these factors.

In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1501 und der Code- und/oder Datenspeicher 1505 separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1501 und der Code- und/oder Datenspeicher 1505 dieselbe Speicherstruktur sein. In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1501 und der Code- und/oder Datenspeicher 1505 teilweise die gleiche Speicherstruktur und teilweise separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1501 und des Code- und/oder Datenspeichers 1505 mit anderen On-Chip- oder Off-Chip-Datenspeicher zusammengefasst sein, einschließlich des L1-, L2- oder L3-Cache-Speichers oder des Systemspeichers eines Prozessors.In at least one embodiment, code and/or data storage 1501 and code and/or data storage 1505 may be separate storage structures. In at least one embodiment, code and/or data storage 1501 and code and/or data storage 1505 may be the same storage structure. In at least one embodiment, code and/or data storage 1501 and code and/or data storage 1505 may be partially the same memory structure and partially separate memory structures. In at least one embodiment, any portion of code and/or data memory 1501 and code and/or data memory 1505 may be aggregated with other on-chip or off-chip data memory, including L1, L2, or L3 cache -Memory or system memory of a processor.

In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 ohne Einschränkung eine oder mehrere arithmetisch-logische Einheit(en) („ALU(s)“) 1510, einschließlich Integer- und/oder Gleitkommaeinheiten, umfassen, um logische und/oder mathematische Operationen durchzuführen, die zumindest teilweise auf einem Trainings- und/oder Inferenzcode basieren oder durch diesen angegeben werden (z.B. Graphencode), dessen Ergebnis in einem Aktivierungsspeicher 1520 gespeicherte Aktivierungen (z.B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) erzeugen kann, die Funktionen von in Code- und/oder Datenspeicher 1501 und/oder Code- und/oder Datenspeicher 1505 gespeicherten Ein-/Ausgabe- und/oder Gewichtsparameterdaten sind. In mindestens einem Ausführungsbeispiel werden in einem Aktivierungsspeicher 1520 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von ALU(s) 1510 als Reaktion auf die Ausführung von Befehlen oder anderem Code ausgeführt wird, wobei in Code- und/oder Datenspeicher 1505 und/oder Daten 1501 gespeicherte Gewichtswerte als Operanden zusammen mit anderen Werten, wie z.B. Vorgabewerten (engl. bias values), Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, die beliebig oder vollständig in Code- und/oder Datenspeicher 1505 oder Code- und/oder Datenspeicher 1501 oder einem anderen Speicher on oder off-chip gespeichert werden können, verwendet werden.In at least one embodiment, the inference and/or training logic 1515 may include, without limitation, one or more arithmetic logic unit(s) ("ALU(s)") 1510, including integer and/or floating point units, to provide logical and/or perform mathematical operations based at least in part on or specified by training and/or inference code (e.g. graph code) the result of which can produce activations stored in an activation memory 1520 (e.g. output values from layers or neurons within a neural network) which are functions of input/output and/or weight parameter data stored in code and/or data memory 1501 and/or code and/or data memory 1505. In at least one embodiment, activations stored in an activation memory 1520 are generated according to linear algebraic and/or matrix-based mathematics performed by ALU(s) 1510 in response to execution of instructions or other code, stored in code and/or data memory 1505 and/or data 1501 stored weight values as operands together with other values, such as bias values, gradient information, pulse values or other parameters or hyperparameters, which can be stored arbitrarily or completely in code and/or data memory 1505 or code and/or or data memory 1501 or another memory can be stored on or off-chip.

In mindestens einem Ausführungsbeispiel sind die ALU(s) 1510 in einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder -schaltungen enthalten, während in einem anderen Ausführungsbeispiel die ALU(s) 1510 außerhalb eines Prozessors oder einer anderen Hardware-Logikvorrichtung oder -schaltung liegen können, die sie verwenden (z.B. ein Co-Prozessor). In mindestens einem Ausführungsbeispiel können die ALU(s) 1510 in den Ausführungseinheiten eines Prozessors oder anderweitig in einer Gruppe von ALUs enthalten sein, auf die die Ausführungseinheiten eines Prozessors entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlichen Typs (z.B. Zentraleinheiten, Grafikverarbeitungseinheiten, Einheiten mit fester Funktionalität usw.) zugreifen können. In mindestens einem Ausführungsbeispiel können sich der Datenspeicher 1501, der Code- und/oder Datenspeicher 1505 und der Aktivierungsspeicher 1520 auf demselben Prozessor oder einer anderen Hardware-Logikvorrichtung oder -schaltung befinden, während sie sich in einem anderen Ausführungsbeispiel in verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen oder in einer Kombination aus gleichen und verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen befinden können. In mindestens einem Ausführungsbeispiel kann jeder Teil des Aktivierungsspeichers 1520 mit einem anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cachespeichers oder des Systemspeichers eines Prozessors, zusammengefasst sein. Darüber hinaus kann der Inferenz- und/oder Trainingscode zusammen mit anderem Code gespeichert werden, auf den ein Prozessor oder eine andere Hardware-Logik oder -Schaltung zugreifen kann, und unter Verwendung des Abrufs, der Dekodierung, der Planung, der Ausführung, der Abschaltung und/oder anderer logischer Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.In at least one embodiment, the ALU(s) 1510 reside within one or more processors or other hardware logic device or circuitry, while in another embodiment, the ALU(s) 1510 reside external to a processor or other hardware logic device or circuitry who can use it (e.g. a co-processor). In at least one embodiment, the ALU(s) 1510 may be contained within the execution units of a processor or otherwise in a group of ALUs to which the execution units of a processor are either within the same processor or distributed among different processors of different types (e.g., central processing units, graphics processing units, units with fixed functionality, etc.). In at least one embodiment, the data memory 1501, the code and/or data memory 1505 and activation memory 1520 reside on the same processor or other hardware logic device or circuitry, while in another embodiment they reside in different processors or other hardware logic devices or circuitry, or in a combination of the same and different processors or other hardware logic devices or circuits may be located. In at least one embodiment, any portion of activation memory 1520 may be aggregated with other on-chip or off-chip data memory, including a processor's L1, L2, or L3 cache memory or system memory. Additionally, the inference and/or training code may be stored with other code accessible by a processor or other hardware logic or circuitry and using retrieval, decoding, scheduling, execution, shutdown and/or other logic circuits of a processor.

In mindestens einem Ausführungsbeispiel kann der Aktivierungsspeicher 1520 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann der Aktivierungsspeicher 1520 ganz oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen liegen. In mindestens einem Ausführungsbeispiel kann die Wahl, ob der Aktivierungsspeicher 1520 z.B. prozessorintern oder prozessorextern ist oder aus DRAM, SRAM, Flash oder einem anderen Speichertyp besteht, von dem verfügbaren Speicher auf dem Chip oder außerhalb des Chips, von den Latenzanforderungen der ausgeführten Trainings- und/oder Inferenzfunktionen, von der Stapelgröße der bei der Inferenz und/oder dem Training eines neuronalen Netzes verwendeten Daten oder von einer Kombination dieser Faktoren abhängen. In mindestens einem Ausführungsbeispiel kann die in 15A dargestellte Inferenz- und/oder Trainingslogik 1515 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung („ASIC“) verwendet werden, wie z.B. der Tensorflow® Processing Unit von Google, einer Inferenz-Verarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“) Prozessor von Intel Corp. In mindestens einem Ausführungsbeispiel kann die in 15A dargestellte Inferenz- und/oder Trainingslogik 1515 in Verbindung mit Hardware der Central Processing Unit („CPU“), Hardware der Graphics Processing Unit („GPU“) oder anderer Hardware, wie z.B. Field Programmable Gate Arrays („FPGAs“), verwendet werden.In at least one embodiment, enable memory 1520 may be cache memory, DRAM, SRAM, non-volatile memory (eg, flash memory), or other memory. In at least one embodiment, activation memory 1520 may reside in whole or in part internally or externally to one or more processors or other logic circuits. In at least one embodiment, the choice of whether the activation memory 1520 is, for example, on-processor or off-processor, or consists of DRAM, SRAM, Flash, or another type of memory, may depend on the available on-chip or off-chip memory, the latency requirements of the training and /or inference functions, the batch size of the data used in inference and/or training a neural network, or a combination of these factors. In at least one embodiment, the 15A The illustrated inference and/or training logic 1515 may be used in conjunction with an application specific integrated circuit ("ASIC"), such as Google's Tensorflow® Processing Unit, a Graphcore™ Inference Processing Unit (IPU), or a Nervana® (e.g., " Lake Crest") processor from Intel Corp. In at least one embodiment, the 15A The illustrated inference and/or training logic 1515 may be used in conjunction with central processing unit ("CPU") hardware, graphics processing unit ("GPU") hardware, or other hardware such as field programmable gate arrays ("FPGAs") .

15B zeigt die Inferenz- und/oder Trainingslogik 1515 gemäß mindestens einem Ausführungsbeispiel verschieden. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 ohne Einschränkung eine Hardware-Logik umfassen, in der Rechenressourcen dediziert oder anderweitig ausschließlich in Verbindung mit Gewichtswerten oder anderen Informationen verwendet werden, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzes entsprechen. In mindestens einem Ausführungsbeispiel kann die in 15B dargestellte Inferenz - und/oder Trainingslogik 1515 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC) verwendet werden, wie z.B. der Tensorflow® Processing Unit von Google, einer Inferenz-Verarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“) Prozessor von Intel Corp. In mindestens einem Ausführungsbeispiel kann die in 15B dargestellte Inferenz- und/oder Trainingslogik 1515 in Verbindung mit der Hardware der Zentraleinheit (CPU), der Hardware der Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie z.B. Field Programmable Gate Arrays (FPGAs), verwendet werden. In mindestens einem Ausführungsbeispiel umfasst die Inferenz - und/oder Trainingslogik 1515 ohne Einschränkung den Code- und/oder Datenspeicher 1501 und den Code- und/oder Datenspeicher 1505, die zur Speicherung von Code (z.B. Graphencode), Gewichtswerten und/oder anderen Informationen, einschließlich Vorgabewerten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameterinformationen, verwendet werden können. In mindestens einem Ausführungsbeispiel, das in 15B gezeigt wird, ist sowohl der Code- und/oder Datenspeicher 1501 als auch der Code- und/oder Datenspeicher 1505 mit einer dedizierten Rechenressource assoziiert, wie z.B. der Rechenhardware 1502 bzw. der Rechenhardware 1506. In mindestens einem Ausführungsbeispiel umfassen sowohl die Rechen-Hardware 1502 als auch die Rechen-Hardware 1506 eine oder mehrere ALUs, die mathematische Funktionen, wie z.B. lineare algebraische Funktionen, nur auf Informationen ausführen, die im Code und/oder Datenspeicher 1501 bzw. im Code und/oder Datenspeicher 1505 gespeichert sind und deren Ergebnis im Aktivierungsspeicher 1520 gespeichert wird. 15B 15 shows the inference and/or training logic 1515 according to at least one embodiment. In at least one embodiment, the inference and/or training logic 1515 may include, without limitation, hardware logic in which computational resources are dedicated or otherwise used solely in connection with weight values or other information corresponding to one or more layers of neurons within a neural network . In at least one embodiment, the 15B illustrated inference and/or training logic 1515 can be used in conjunction with an application-specific integrated circuit (ASIC), such as Google's Tensorflow® Processing Unit, an inference processing unit (IPU) from Graphcore™, or a Nervana® (e.g., "Lake Crest ") Processor by Intel Corp. In at least one embodiment, the 15B The illustrated inference and/or training logic 1515 may be used in conjunction with central processing unit (CPU) hardware, graphics processing unit (GPU) hardware, or other hardware such as field programmable gate arrays (FPGAs). In at least one embodiment, the inference and/or training logic 1515 includes, without limitation, code and/or data storage 1501 and code and/or data storage 1505 operable to store code (e.g., graph code), weight values, and/or other information, including default values, gradient information, momentum values and/or other parameter or hyperparameter information. In at least one embodiment described in 15B As shown, both code and/or data storage 1501 and code and/or data storage 1505 are associated with a dedicated computing resource, such as computing hardware 1502 and computing hardware 1506, respectively. In at least one embodiment, both computing hardware include 1502 and the computing hardware 1506 one or more ALUs that perform mathematical functions, such as linear algebraic functions, only on information stored in the code and/or data memory 1501 or in the code and/or data memory 1505 and the result thereof is stored in activation memory 1520.

In mindestens einem Ausführungsbeispiel entspricht jeder der Code- und/oder Datenspeicher 1501 und 1505 und der entsprechenden Rechen-Hardware 1502 bzw. 1506 verschiedenen Schichten eines neuronalen Netzes, so daß die aus einem „Speicher-/Berechnungspaar 1501/1502“ resultierende Aktivierung des Code- und/oder Datenspeichers 1501 und der Rechen-Hardware 1502 als Eingabe für das nächste „Speicher-/Berechnungspaar 1505/1506“ des Code- und/oder Datenspeichers 1505 und der Rechen-Hardware 1506 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzes widerzuspiegeln. In mindestens einem Ausführungsbeispiel kann jedes der Speicher-/Berechnungspaare 1501/1502 und 1505/1506 mehr als einer Schicht eines neuronalen Netzes entsprechen. In mindestens einem Ausführungsbeispiel können zusätzliche Speicher-/Berechnungspaare (nicht gezeigt) im Anschluss an oder parallel zu den Speicher-/Berechnungspaaren 1501/1502 und 1505/1506 in der Inferenz- und/oder Trainingslogik 1515 enthalten sein.In at least one embodiment, each of the code and/or data stores 1501 and 1505 and the corresponding computational hardware 1502 and 1506, respectively, corresponds to different layers of a neural network such that the activation of the code resulting from a "storage/computation pair 1501/1502". - and/or data memory 1501 and computational hardware 1502 is provided as input to the next "memory/computation pair 1505/1506" of code and/or data memory 1505 and computational hardware 1506 to conceptualize the organization of a neural network to reflect. In at least one embodiment, each of the storage/computation pairs 1501/1502 and 1505/1506 correspond to more than one layer of a neural network. In at least one embodiment, additional storage/computation pairs (not shown) may be included in inference and/or training logic 1515 subsequent to or in parallel with storage/computation pairs 1501/1502 and 1505/1506.

16 zeigt das Training und den Einsatz eines Deep Neural Network, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netz 91606 unter Verwenden eines Trainingsdatensatzes 1602 trainiert. In mindestens einem Ausführungsbeispiel ist die das Trainingsframework (Rahmenstruktur) 1604 ein PyTorch-Framework, während in anderen Ausführungsbeispielen das Trainingsframework 1604 ein Tensorflow, Boost, Caffe, Microsoft Cognitive Toolkit/CNTK, MXNet, Chainer, Keras, Deeplearning4j oder ein anderes Trainingsframework ist. In mindestens einem Ausführungsbeispiel trainiert das Trainingsframework 1604 ein untrainiertes neuronales Netz 1606 und ermöglicht dessen Training unter Verwendung der hier beschriebenen Verarbeitungsressourcen, um ein trainiertes neuronales Netz 1608 zu erzeugen. In mindestens einem Ausführungsbeispiel können die Gewichte nach dem Zufallsprinzip oder durch Vortraining unter Verwendung eines Deep- Believe-Netzes ausgewählt werden. In mindestens einem Ausführungsbeispiel kann das Training entweder beaufsichtigt, teilweise beaufsichtigt oder unbeaufsichtigt durchgeführt werden. 16 shows the training and use of a deep neural network, according to at least one embodiment. In at least one embodiment, the untrained neural network 91606 is trained using a training data set 1602 . In at least one embodiment, the training framework (framework) 1604 is a PyTorch framework, while in other embodiments the training framework 1604 is a Tensorflow, Boost, Caffe, Microsoft Cognitive Toolkit/CNTK, MXNet, Chainer, Keras, Deeplearning4j, or other training framework. In at least one embodiment, the training framework 1604 trains an untrained neural network 1606 and enables it to be trained using the processing resources described herein to generate a trained neural network 1608 . In at least one embodiment, the weights may be chosen randomly or by pre-training using a deep belief network. In at least one embodiment, the training may be either supervised, partially supervised, or unsupervised.

In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netz 1606 unter Verwenden von beaufsichtigtem Lernen trainiert, wobei der Trainingsdatensatz 1602 eine Eingabe gepaart mit einer gewünschten Ausgabe für eine Eingabe umfasst, oder wobei der Trainingsdatensatz 1602 eine Eingabe mit einer bekannten Ausgabe umfasst und eine Ausgabe des neuronalen Netzes 1606 manuell abgestuft wird. In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netz 1606 unter Aufsicht trainiert, verarbeitet Eingaben aus dem Trainingsdatensatz 1602 und vergleicht die resultierenden Ausgaben mit einem Satz erwarteter oder gewünschter Ausgaben. In mindestens einem Ausführungsbeispiel werden dann Fehler durch das untrainierte neuronale Netz 1606 zurückpropagiert. In mindestens einem Ausführungsbeispiel passt das Trainings-Framework 1604 Gewichte an, die das untrainierte neuronale Netz 1606 steuern. In mindestens einem Ausführungsbeispiel umfasst das Trainings-Framework 1604 Werkzeuge, mit denen überwacht werden kann, wie gut das untrainierte neuronale Netzwerk 1606 zu einem Modell wie dem trainierten neuronalen Netzwerk 1608 konvergiert, das geeignet ist, auf der Grundlage bekannter Eingabedaten wie z.B. neuer Daten 1612 korrekte Antworten wie im Ergebnis 1614 zu generieren. In mindestens einem Ausführungsbeispiel trainiert das Trainings-Framework 1604 das untrainierte neuronale Netz 1606 wiederholt, während die Gewichte angepasst werden, um eine Ausgabe des untrainierten neuronalen Netzes 1606 unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie z.B. stochastischer Gradientenabfall, zu verfeinern. In mindestens einem Ausführungsbeispiel trainiert das Trainings-Framework 1604 das untrainierte neuronale Netz 1606, bis das untrainierte neuronale Netz 1606 eine gewünschte Genauigkeit erreicht. In mindestens einem Ausführungsbeispiel kann das trainierte neuronale Netz 1608 dann zur Implementierung einer beliebigen Anzahl von maschinellen Lernoperationen eingesetzt werden. In at least one embodiment, the untrained neural network 1606 is trained using supervised learning, where the training data set 1602 includes an input paired with a desired output for an input, or where the training data set 1602 includes an input with a known output and an output of the neural network 1606 is manually graded. In at least one embodiment, the untrained neural network 1606 is trained under supervision, processes inputs from the training data set 1602, and compares the resulting outputs to a set of expected or desired outputs. Errors are then propagated back through the untrained neural network 1606 in at least one embodiment. In at least one embodiment, the training framework 1604 adjusts weights that control the untrained neural network 1606 . In at least one embodiment, the training framework 1604 includes tools to monitor how well the untrained neural network 1606 is converging to a model, such as the trained neural network 1608, that is appropriate given known input data such as new data 1612 to generate correct answers as in the result 1614. In at least one embodiment, the training framework 1604 repeatedly trains the untrained neural network 1606 while adjusting the weights to refine an output of the untrained neural network 1606 using a loss function and an adjustment algorithm such as stochastic gradient descent. In at least one embodiment, the training framework 1604 trains the untrained neural network 1606 until the untrained neural network 1606 achieves a desired accuracy. In at least one embodiment, the trained neural network 1608 can then be used to implement any number of machine learning operations.

In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netz 1606 unter Verwendung von unbeaufsichtigtem Lernen trainiert, wobei das untrainierte neuronale Netz 1606 versucht, sich selbst unter Verwendung unmarkierter Daten zu trainieren. In mindestens einem Ausführungsbeispiel enthält der Datensatz 1602 für unüberwachtes Lernen Eingabedaten ohne zugehörige Ausgabedaten oder Grundwahrheitsdaten (engl. ground truth). In mindestens einem Ausführungsbeispiel kann das untrainierte neuronale Netz 1606 Gruppierungen innerhalb des Trainingsdatensatzes 1602 lernen und bestimmen, wie individuelle Eingaben mit dem untrainierten Datensatz 1602 in Beziehung stehen. In mindestens einem Ausführungsbeispiel kann durch unüberwachtes Training eine selbstorganisierende Karte erzeugt werden, bei der es sich um eine Art trainiertes neuronales Netz 1608 handelt, das in der Lage ist, Operationen durchzuführen, die zur Verringerung der Dimensionalität neuer Daten 1612 nützlich sind. In mindestens einem Ausführungsbeispiel kann unüberwachtes Training auch zur Durchführung von Anomalieerkennung verwendet werden, was die Identifizierung von Datenpunkten in einem neuen Datensatz 1612 ermöglicht, die von den normalen Mustern des neuen Datensatzes 1612 abweichen.In at least one embodiment, the untrained neural network 1606 is trained using unsupervised learning, where the untrained neural network 1606 attempts to train itself using untagged data. In at least one embodiment, unsupervised learning dataset 1602 includes input data with no associated output data or ground truth data. In at least one embodiment, the untrained neural network 1606 can learn groupings within the training data set 1602 and determine how individual inputs relate to the untrained data set 1602 . In at least one embodiment, unsupervised training can produce a self-organizing map that is a type of trained neural network 1608 capable of performing operations useful in reducing the dimensionality of new data 1612 . In at least one embodiment, unsupervised training may also be used to perform anomaly detection, which allows for the identification of data points in a new data set 1612 that deviate from the new data set 1612's normal patterns.

In mindestens einem Ausführungsbeispiel kann halbbeaufsichtigtes Lernen verwendet werden, eine Technik, bei der der Datensatz 1602 im Training eine Mischung aus markierten und nicht markierten Daten umfasst. In mindestens einem Ausführungsbeispiel kann das Trainings-Framework 1604 verwendet werden, um inkrementelles Lernen durchzuführen, z.B. durch übertragene Lerntechniken. In mindestens einem Ausführungsbeispiel ermöglicht das inkrementelle Lernen dem trainierten neuronalen Netz 1608, sich an neue Daten 1612 anzupassen, ohne das Wissen zu vergessen, das während des initialen Trainings in das Netz eingegangen ist.In at least one embodiment, semi-supervised learning, a technique in which the data set 1602 under training comprises a mixture of tagged and untagged data, may be used. In at least one embodiment, the training framework 1604 may be used to perform incremental learning, e.g., through delegated learning techniques. In at least one embodiment, incremental learning allows the trained neural network 1608 to adapt to new data 1612 without forgetting the knowledge that entered the network during initial training.

17 zeigt ein Beispiel des Datenzentrums 1700, in dem mindestens ein Ausführungsbeispiel angewendet werden kann. In mindestens einem Ausführungsbeispiel umfasst das Datenzentrum 1700 eine Datenzentrums-Infrastrukturschicht 1710, eine Framework-Schicht 1720, eine Softwareschicht 1730 und eine Anwendungsschicht 1740. 17 17 shows an example of the data center 1700 in which at least one embodiment may be employed. In at least one embodiment, the data center 1700 includes a data center infrastructure layer 1710, a framework layer 1720, a software layer 1730, and an application layer 1740.

In mindestens einem Ausführungsbeispiel, wie in 17 dargestellt, kann die Datenzentrums-Infrastrukturschicht 1710 einen Ressourcen-Orchestrator 1712, gruppierte Rechenressourcen 1714 und Knoten-Rechenressourcen („C.R.s“, engl. computing ressources) 1716(1)-1716(N) umfassen, wobei „N“ eine beliebige ganze, positive ganze Zahl repräsentiert. In mindestens einem Ausführungsbeispiel können die Knoten-C.R.s 1716(1)-1716(N) eine beliebige Anzahl von Zentraleinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, benutzerprogrammierbaren Gate-Arrays (engl. field programmable gate arrays, FPGAs), Grafikprozessoren usw.), Speichergeräten (z.B, dynamischer Festwertspeicher), Speichergeräte (z.B. Festkörper- oder Plattenlaufwerke), Geräte für Netzwerkein-/-ausgaben („NW E/A“), Netzwerk-Switches, virtuelle Maschinen („VMs“), Leistungs- und Kühlmodule usw. In mindestens einem Ausführungsbeispiel können ein oder mehrere Knoten-C.R.s aus den Knoten-C.R.s 1716(1)-1716(N) ein Server mit einer oder mehreren der oben genannten Rechenressourcen sein.In at least one embodiment, as in 17 As illustrated, the data center infrastructure layer 1710 may include a resource orchestrator 1712, clustered computing resources 1714, and node computing resources ("CRs") 1716(1)-1716(N), where "N" is any whole, represents a positive integer. In at least one embodiment, node CRs 1716(1)-1716(N) may include any number of central processing units ("CPUs") or other processors (including accelerators, field programmable gate arrays (FPGAs), GPUs, etc.), storage devices (e.g., dynamic read-only memory), storage devices (e.g., solid state or disk drives), network input/output ("NW I/O") devices, network switches, virtual machines ("VMs"), power and cooling modules, etc. In at least one embodiment, one or more node CRs from among node CRs 1716(1)-1716(N) may be a server with one or more of the above computing resources.

In mindestens einem Ausführungsbeispiel können gruppierte Rechenressourcen 1714 separate Gruppierungen von Knoten-C.R.s umfassen, die in einem oder mehreren Einschüben (nicht gezeigt) untergebracht sind, oder viele Schränke (engl. rack), die in Datenzentren an verschiedenen geographischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s innerhalb gruppierter Rechenressourcen 1714 können gruppierte Rechen-, Netzwerk-, Speicher- oder Speicherressourcen umfassen, die zur Unterstützung einer oder mehrerer Arbeitslasten konfiguriert oder zugewiesen werden können. In mindestens einem Ausführungsbeispiel können mehrere Knoten-C.R.s einschließlich CPUs oder Prozessoren innerhalb eines oder mehrerer Schränke gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In mindestens einem Ausführungsbeispiel können ein oder mehrere Schränke auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination umfassen.In at least one embodiment, clustered compute resources 1714 may include separate clusters of node C.R.s housed in one or more racks (not shown) or many racks housed in data centers in different geographic locations (also not shown). Separate groupings of node C.R.s within grouped compute resources 1714 may include grouped compute, network, memory, or storage resources that may be configured or allocated to support one or more workloads. In at least one embodiment, multiple node C.R.s including CPUs or processors may be grouped within one or more cabinets to provide computing resources in support of one or more workloads. In at least one embodiment, one or more cabinets may also include any number of power modules, cooling modules, and network switches in any combination.

In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator 1712 einen oder mehrere Knoten-C.R.s 1716(1)-1716(N) und/oder gruppierte Rechenressourcen 1714 konfigurieren oder anderweitig steuern. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator 1712 eine Verwaltungseinheit für die Software-Design-Infrastruktur („SDI“) für das Rechenzentrum 1700 umfassen. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator Hardware, Software oder eine Kombination davon umfassen.In at least one embodiment, resource orchestrator 1712 may configure or otherwise control one or more node C.R.s 1716(1)-1716(N) and/or clustered computing resources 1714. In at least one embodiment, resource orchestrator 1712 may include a software design infrastructure ("SDI") manager for data center 1700 . In at least one embodiment, the resource orchestrator may include hardware, software, or a combination thereof.

In mindestens einem Ausführungsbeispiel, wie in 17 gezeigt, umfasst die Framework-Schicht 1720 einen Aufgabenplaner 1732, einen Konfigurationsverwalter 1734, einen Ressourcenverwalter 1736 und ein verteiltes Dateisystem 1738. In mindestens einem Ausführungsbeispiel kann die Framework-Schicht 1720 ein Framework zur Unterstützung der Software 1732 der Software-Schicht 1730 und/oder einer oder mehrerer Anwendung(en) 1742 der Anwendungsschicht 1740 umfassen. In mindestens einem Ausführungsbeispiel können die Software 1732 oder die Anwendung(en) 1742 jeweils webbasierte Dienstsoftware oder Anwendungen umfassen, wie sie beispielsweise von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In mindestens einem Ausführungsbeispiel kann die Framework-Schicht 1720 eine Art freies und quelloffenes Software-Webanwendungs-Framework wie Apache Spark™ (im Folgenden „Spark“) sein, das das verteilte Dateisystem 1738 für die Verarbeitung großer Datenmengen (z.B. „große Datenmengen“) nutzen kann, ist aber nicht darauf beschränkt. In mindestens einem Ausführungsbeispiel kann der Aufgabenplaner einen Spark-Treiber umfassen, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 1700 unterstützt werden. In mindestens einem Ausführungsbeispiel kann der Konfigurationsverwalter 1734 in der Lage sein, verschiedene Schichten wie die Softwareschicht 1730 und die Framework-Schicht 1720 einschließlich Spark und dem verteilten Dateisystem 1738 zur Unterstützung der Verarbeitung großer Datenmengen zu konfigurieren. In mindestens einem Ausführungsbeispiel kann der Ressourcenverwalter 1736 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die dem verteilten Dateisystem 1738 und dem Aufgabenplaner 1732 zugeordnet oder für deren Unterstützung zugewiesen sind. In mindestens einem Ausführungsbeispiel können geclusterte oder gruppierte Datenverarbeitungsressourcen die gruppierte Datenverarbeitungsressource 1714 auf der Datenzentrums-Infrastrukturschicht 1710 umfassen. In mindestens einem Ausführungsbeispiel kann der Ressourcenverwalter 1736 sich mit dem Ressourcen-Orchestrator 1712 koordinieren, um diese zugeordneten oder zugewiesenen Rechenressourcen zu verwalten.In at least one embodiment, as in 17 shown, the framework layer 1720 includes a task scheduler 1732, a configuration manager 1734, a resource manager 1736 and a distributed file system 1738. In at least one embodiment, the framework layer 1720 can be a framework for supporting the software 1732 of the software layer 1730 and/or one or more application(s) 1742 of the application layer 1740. In at least one embodiment, software 1732 or application(s) 1742 may each include web-based service software or applications such as those provided by Amazon Web Services, Google Cloud, and Microsoft Azure. In at least one embodiment, the framework layer 1720 may be some type of free and open source software web application framework such as Apache Spark™ (hereinafter “Spark”), which implements the distributed file system 1738 for processing large amounts of data (e.g., “big data”). can use, but is not limited to. In at least one embodiment, the task scheduler may include a Spark driver to facilitate scheduling of workloads supported by different layers of the data center 1700. In at least one embodiment, the configuration manager 1734 may be able to configure various layers such as the software layer 1730 and the framework layer 1720 including Spark and the distributed file system 1738 to support processing large amounts of data. In at least one embodiment, resource manager 1736 may be capable of managing clustered or grouped computing resources associated with or allocated to support distributed file system 1738 and task scheduler 1732 . In at least one embodiment, clustered or clustered computing resources may include clustered computing resource 1714 at data center infrastructure layer 1710 . In at least one embodiment, the resource manager 1736 may coordinate with the resource orchestrator 1712 to manage these allocated or allocated computing resources.

In mindestens einem Ausführungsbeispiel kann Software 1732, die in der Softwareschicht 1730 enthalten ist, Software umfassen, die von mindestens Teilen der Knoten-C.R.s 1716(1)-1716(N), gruppierten Rechenressourcen 1714 und/oder dem verteilten Dateisystem 1738 der Framework-Schicht 1720 verwendet wird. Eine oder mehrere Arten von Software können unter anderem Software für die Suche nach Internet-Webseiten, E-Mail-Viren-Scan-Software, Datenbank-Software und Software für Video-Streams umfassen.In at least one embodiment, software 1732 included in software layer 1730 may include software implemented by at least portions of node CRs 1716(1)-1716(N), clustered computing resources 1714, and/or distributed file system 1738 of the framework Layer 1720 is used. One or more types of software may include, but are not limited to, Internet web site search software, e-mail virus scanning software, database software, and video streaming software.

In mindestens einem Ausführungsbeispiel kann/können die Anwendung(en) 1742, die in der Anwendungsschicht 1740 enthalten ist/sind, einen oder mehrere Typen von Anwendungen umfassen, die von mindestens Teilen der Knoten-C.R.s 1716(1)-1716(N), gruppierten Rechenressourcen 1714 und/oder dem verteilten Dateisystem 1738 der Framework-Schicht 1720 verwendet werden. Eine oder mehrere Arten von Anwendungen können, ohne darauf beschränkt zu sein, eine beliebige Anzahl von Genomikanwendungen, eine kognitive Berechnung, und eine maschinelle Lernanwendung umfassen, einschließlich Trainings- oder Inferenzierungssoftware, Framework-Software für maschinelles Lernen (z.B. PyTorch, TensorFlow, Caffe usw.) oder andere maschinelle Lernanwendungen, die in Verbindung mit einem oder mehreren Ausführungsbeispielen verwendet werden.In at least one embodiment, the application(s) 1742 contained in the application layer 1740 may include one or more types of applications hosted by at least portions of the node C.R.s 1716(1)-1716(N), clustered computing resources 1714 and/or the distributed file system 1738 of the framework layer 1720. One or more types of applications can include, but are not limited to, any number of genomics applications, cognitive computation, and machine learning applications, including training or inference software, machine learning framework software (e.g., PyTorch, TensorFlow, Caffe, etc .) or other machine learning applications used in connection with one or more embodiments.

In mindestens einem Ausführungsbeispiel kann jeder von dem Konfigurationsverwalter 1734, Ressourcenverwalter 1736 und Ressourcenorchestrator 1712 eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen basierend auf einer beliebigen Menge und Art von Daten, die auf eine beliebige technisch geeignete Weise erfasst wurden, durchführen. In mindestens einem Ausführungsbeispiel können selbstmodifizierende Aktionen einen Bediener des Rechenzentrums 1700 davon entlasten, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise nicht ausgelastete und/oder leistungsschwache Teile eines Rechenzentrums zu vermeiden.In at least one embodiment, each of configuration manager 1734, resource manager 1736, and resource orchestrator 1712 may perform any number and type of self-modifying actions based on any amount and type of data collected in any technically appropriate manner. In at least one embodiment, self-modifying actions may relieve a data center 1700 operator from potentially making poor configuration decisions and potentially avoiding underutilized and/or underperforming parts of a data center.

In mindestens einem Ausführungsbeispiel kann das Datenzentrum 1700 Werkzeuge, Dienste, Software oder andere Ressourcen umfassen, um ein oder mehrere maschinelle Lernmodelle zu trainieren oder Informationen unter Verwendung eines oder mehrerer maschineller Lernmodelle gemäß einem oder mehrerer hier beschriebenen Ausführungsbeispiele vorherzusagen oder abzuleiten. Beispielsweise kann gemäß mindestens einem Ausführungsbeispiel ein maschinelles Lernmodell durch Berechnung von Gewichtungsparametern gemäß einer Architektur eines neuronalen Netzwerks unter Verwendung der oben in Bezug auf das Datenzentrum 1700 beschriebenen Software und Rechenressourcen trainiert werden. In mindestens einem Ausführungsbeispiel können trainierte maschinelle Lernmodelle, die einem oder mehreren neuronalen Netzwerken entsprechen, zur Inferenz oder Vorhersage von Informationen unter Verwendung der oben in Bezug auf das Datenzentrum 1700 beschriebenen Ressourcen verwendet werden, indem Gewichtsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.In at least one embodiment, data center 1700 may include tools, services, software, or other resources to train one or more machine learning models or to predict or infer information using one or more machine learning models according to one or more embodiments described herein. For example, according to at least one embodiment, a machine learning model may be trained by computing weight parameters according to a neural network architecture using the software and computational resources described above with respect to data center 1700 . In at least one embodiment, trained machine learning models corresponding to one or more neural networks may be used to infer or predict information using the resources described above with respect to data center 1700 using weight parameters defined by one or more described herein training techniques are calculated.

In mindestens einem Ausführungsbeispiel kann ein Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um unter Verwendung der oben beschriebenen Ressourcen ein Training und/oder ein Inferenzieren durchzuführen. Darüber hinaus können eine oder mehrere der oben beschriebenen Software- und/oder Hardwareressourcen als Dienst konfiguriert sein, um Benutzern ein Trainieren oder Durchführen von Inferenzierung von Informationen zu ermöglichen, wie z.B. Bilderkennung, Spracherkennung oder andere Dienste mit künstlicher Intelligenz.In at least one embodiment, a data center may use CPUs, application specific integrated circuits (ASICs), GPUs, FPGAs, or other hardware to perform training and/or inference using the resources described above. Additionally, one or more of the software and/or hardware resources described above may be configured as a service to enable users to train or perform inference of information, such as image recognition, speech recognition, or other artificial intelligence services.

Inferenz - und/oder Trainingslogik 1515 werden verwendet, um Inferenz - und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 17 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze, oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 17 for inferring or predicting operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

18A zeigt ein Beispiel für ein autonomes Fahrzeug 1800, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das autonome Fahrzeug 1800 (hier alternativ als „Fahrzeug 1800“ bezeichnet) ohne Einschränkung ein Personenfahrzeug sein, wie z.B. ein PKW, ein LKW, ein Bus und/oder ein anderer Fahrzeugtyp, der einen oder mehrere Fahrgäste aufnimmt. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 ein Sattelschlepper sein, der zum Gütertransport verwendet wird. In mindestens einem Ausführungsbeispiel kann Fahrzeug 1800 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein. 18A 18 shows an example of an autonomous vehicle 1800, according to at least one embodiment. In at least one embodiment, autonomous vehicle 1800 (alternatively referred to herein as “vehicle 1800”) may be, without limitation, a passenger vehicle, such as an automobile, truck, bus, and/or other type of vehicle that accommodates one or more passengers. In at least one embodiment, vehicle 1800 may be an articulated lorry used to transport goods. In at least one embodiment, vehicle 1800 may be an airplane, robotic vehicle, or other type of vehicle.

Autonome Fahrzeuge können im Hinblick auf den Automatisierungsgrad beschrieben werden, der von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US-Verkehrsministeriums, und der Society of Automotive Engineers („SAE“) „Taxonomie und Definitionen für Begriffe im Zusammenhang mit Antriebsautomatisierungssystemen für Straßenkraftfahrzeuge“ definiert wird (z. B. Norm Nr. J 3016-201806 , veröffentlicht am 15. Juni 2018, Norm Nr. J 3016-201609 , veröffentlicht am 30. September 2016, sowie frühere und zukünftige Versionen dieser Norm). In einem oder mehreren Ausführungsbeispielen kann das Fahrzeug 1800 eine Funktionalität gemäß einer oder mehreren der Stufen 1 - 5 der autonomen Fahrstufen aufweisen. Beispielsweise kann Fahrzeug 1800 in mindestens einem Ausführungsbeispiel je nach Ausführungsbeispiel eine bedingte Automatisierung (Stufe 3), eine hohe Automatisierung (Stufe 4) und/oder eine vollständige Automatisierung (Stufe 5) aufweisen.Autonomous vehicles can be described in terms of the level of automation defined by the National Highway Traffic Safety Administration ("NHTSA"), a division of the US Department of Transportation, and the Society of Automotive Engineers ("SAE") "Taxonomy and Definitions for Terms in relation to propulsion automation systems for road motor vehicles” (e.g. Standard No. J 3016-201806 , published June 15, 2018, Standard No. J 3016-201609 , published September 30, 2016, as well as previous and future versions of this standard). In one or more embodiments, the vehicle 1800 may have functionality according to one or more of levels 1-5 of the autonomous driving levels. For example, in at least one embodiment, vehicle 1800 may have conditional automation (level 3), high automation (level 4), and/or full automation (level 5), depending on the embodiment.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 ohne Einschränkung Bestandteile wie Fahrgestell, Fahrzeugaufbau, Räder (z.B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Komponenten eines Fahrzeugs umfassen. In mindestens einem Ausführungsbeispiel kann Fahrzeug 1800 ohne Einschränkung ein Antriebssystem 1850 umfassen, wie z.B. einen Verbrennungsmotor, ein Hybrid-Elektrokraftwerk, einen vollelektrischen Motor und/oder einen anderen Antriebssystemtyp. In mindestens einem Ausführungsbeispiel kann das Antriebssystem 1850 mit einem Antriebsstrang des Fahrzeugs 1800 verbunden sein, der unter anderem ein Getriebe umfassen kann, um den Antrieb des Fahrzeugs 1800 zu ermöglichen. In mindestens einem Ausführungsbeispiel kann das Antriebssystem 1850 als Reaktion auf den Empfang von Signalen von einer oder mehreren Drossel/Beschleunigern 1852 gesteuert werden.In at least one embodiment, vehicle 1800 may include, without limitation, components such as a chassis, body, wheels (e.g., 2, 4, 6, 8, 18, etc.), tires, axles, and other components of a vehicle. In at least one embodiment, vehicle 1800 may include, without limitation, a propulsion system 1850, such as an internal combustion engine, hybrid electric power plant, all-electric motor, and/or other type of propulsion system. In at least one embodiment, the propulsion system 1850 may be coupled to a powertrain of the vehicle 1800, which may include, but is not limited to, a transmission to enable the vehicle 1800 to be propelled. In at least one embodiment, propulsion system 1850 may be controlled in response to receiving signals from one or more throttle/accelerators 1852 .

In mindestens einem Ausführungsbeispiel wird ein Lenksystem 1854, das unter anderem ein Lenkrad umfassen kann, verwendet, um ein Fahrzeug 1800 zu lenken (z.B. entlang einer gewünschten Bahn oder Route), wenn ein Antriebssystem 1850 in Betrieb ist (z.B. wenn das Fahrzeug in Bewegung ist). In mindestens einem Ausführungsbeispiel kann ein Lenksystem 1854 Signale von Lenkaktuator(en) 1856 empfangen. Das Lenkrad kann für die volle Funktionalität der Automatisierung (Stufe 5) optional sein. In mindestens einem Ausführungsbeispiel kann ein Bremssensorsystem 1846 verwendet werden, um Fahrzeugbremsen als Reaktion auf den Empfang von Signalen von Bremsaktuator(en) 1848 und/oder Bremssensoren zu betätigen.In at least one embodiment, a steering system 1854, which may include, among other things, a steering wheel, is used to steer a vehicle 1800 (e.g., along a desired path or route) when a propulsion system 1850 is operational (e.g., when the vehicle is in motion ). In at least one embodiment, a steering system 1854 may receive signals from steering actuator(s) 1856 . The steering wheel can be optional for full functionality of automation (level 5). In at least one embodiment, a brake sensor system 1846 may be used to actuate vehicle brakes in response to receiving signals from brake actuator(s) 1848 and/or brake sensors.

In mindestens einem Ausführungsbeispiel stellt(en) die Steuerung(en) 1836, der/die unter anderem ein oder mehrere System-on-Chips („SoCs“) (nicht in 18A dargestellt) und/oder Grafikverarbeitungseinheit(en) („GPU(s)“) umfassen kann/können, Signale (z.B. repräsentativ für Befehle) an eine oder mehrere Komponenten und/oder Systeme des Fahrzeugs 1800 bereit. In mindestens einem Ausführungsbeispiel können z.B. Steuergerät(e) 1836 Signale zur Betätigung der Fahrzeugbremsen über Bremsaktuatoren 1848, zur Betätigung des Lenksystems 1854 über Lenkaktuator(en) 1856, zur Betätigung des Antriebssystems 1850 über Drossel/Beschleuniger 1852 senden. Steuergerät(e) 1836 kann/können ein oder mehrere bordeigene (z.B. integrierte) Rechengeräte (z.B. Supercomputer) umfassen, die Sensorsignale verarbeiten und Betriebsbefehle ausgeben (z.B. Signale, die Befehle repräsentieren), um ein autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Führen des Fahrzeugs 1800 zu unterstützen. In mindestens einem Ausführungsbeispiel können Steuergerät(e) 1836 ein erstes Steuergerät 1836 für autonome Fahrfunktionen, ein zweites Steuergerät 1836 für funktionale Sicherheitsfunktionen, ein drittes Steuergerät 1836 für Funktionalität künstlicher Intelligenz (z.B. Computer Vision), ein viertes Steuergerät 1836 für Infotainment-Funktionalität, ein fünftes Steuergerät 1836 für Redundanz in Notfällen und/oder andere Steuergeräte umfassen. In mindestens einem Ausführungsbeispiel kann eine einzelne Steuerung 1836 zwei oder mehr der oben genannten Funktionalitäten handhaben, zwei oder mehr Steuerungen 1836 können eine einzelne Funktionalität und/oder eine beliebige Kombination davon handhaben.In at least one embodiment, the controller(s) 1836, which include, among other things, one or more system-on-chips ("SoCs") (not included in 18A shown) and/or graphics processing unit(s) ("GPU(s)"), may provide signals (eg, representative of commands) to one or more vehicle 1800 components and/or systems. For example, in at least one embodiment, controller(s) 1836 may send signals to actuate vehicle brakes via brake actuators 1848, to actuate steering system 1854 via steering actuator(s) 1856, to actuate powertrain system 1850 via throttle/accelerator 1852. Controller(s) 1836 may include one or more onboard (eg, integrated) computing devices (eg, supercomputers) that process sensor signals and issue operational commands (eg, signals representing commands) to enable autonomous driving and/or a human driver to assist in driving the vehicle 1800 . In at least one embodiment, controller(s) 1836 may include a first controller 1836 for autonomous driving functions, a second controller 1836 for functional safety functions, a third controller 1836 for artificial intelligence (e.g., computer vision) functionality, a fourth controller 1836 for infotainment functionality fifth controller 1836 for emergency redundancy and/or other controllers. In at least one embodiment, a single controller 1836 can handle two or more of the above functionalities, two or more controllers 1836 can handle a single functionality and/or any combination thereof.

In mindestens einem Ausführungsbeispiel stellen Steuergerät(e) 1836 als Reaktion auf Sensordaten, die von einem oder mehreren Sensoren (z.B. Sensoreingaben) empfangen werden, Signale zur Steuerung einer oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1800 bereit. In mindestens einem Ausführungsbeispiel können Sensordaten zum Beispiel und ohne Einschränkung empfangen werden von dem/den Sensor(en) eines globalen Navigationssatellitensystems („GNSS“) 1858 (z.B. Sensor(en) des globalen Positionsbestimmungssystems (Global Positioning System), RADAR-Sensor(en) 1860, Ultraschallsensor(en) 1862, LIDAR-Sensor(en) 1864, Sensor(en) einer Inertialmesseinheit („IMU“) 1866 (z.B. Beschleunigungsmesser, Gyroskop(e), Magnetkompass(e), Magnetometer usw.), Mikrofon(e) 1896, Stereokamera(s) 1868, Weitwinkelkamera(s) 1870 (z.B. Fisheye-Kameras), Infrarotkamera(s) 1872, Surround-Kamera(s) 1874 (z.B. 360-Grad-Kameras), Fernkamera(s) (nicht in 18A dargestellt), Mittelbereichskamera(s) (nicht in 18A dargestellt), Geschwindigkeitssensor(en) 1844 (z.B. zur Messung der Geschwindigkeit von Fahrzeug 1800), Vibrationssensor(en) 1842, Lenksensor(en) 1840, Bremssensor(en) (z.B. als Teil des Bremssensorsystems 1846) und/oder anderen Sensortypen.In at least one embodiment, controller(s) 1836 provide signals to control one or more components and/or systems of vehicle 1800 in response to sensor data received from one or more sensors (eg, sensor inputs). In at least one embodiment, sensor data may be received from, for example and without limitation, Global Navigation Satellite System ("GNSS") sensor(s) 1858 (e.g., Global Positioning System sensor(s), RADAR sensor(s). ) 1860, ultrasonic sensor(s) 1862, LIDAR sensor(s) 1864, inertial measurement unit ("IMU") sensor(s) 1866 (eg, accelerometer, gyroscope(s), magnetic compass(es), magnetometer, etc.), microphone( e) 1896, stereo camera(s) 1868, wide angle camera(s) 1870 (e.g. fisheye cameras), infrared camera(s) 1872, surround camera(s) 1874 (e.g. 360 degree cameras), remote camera(s) (not in 18A shown), mid-range camera(s) (not in 18A shown), speed sensor(s) 1844 (e.g. for measuring the speed of driving 1800), vibration sensor(s) 1842, steering sensor(s) 1840, brake sensor(s) (eg, as part of brake sensor system 1846), and/or other types of sensors.

In mindestens einem Ausführungsbeispiel können ein oder mehrere Steuergerät(e) 1836 Eingaben (z. B. dargestellt durch Eingabedaten) von einem Kombiinstrument 1832 des Fahrzeugs 1800 empfangen und Ausgaben (z. B. dargestellt durch Ausgabedaten, Anzeigedaten usw.) über eine Mensch-Maschine-Schnittstelle („HMI“) Anzeige 1834, einen akustischen Signalgeber, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1800 bereitstellen. In mindestens einem Ausführungsbeispiel können die Ausgaben Informationen wie Fahrzeuggeschwindigkeit, Geschwindigkeit, Zeit, Kartendaten (z.B. eine hochauflösende Karte (nicht in 18A dargestellt), Standortdaten (z.B. die Position des Fahrzeugs 1800, wie auf einer Karte), Richtung, Position anderer Fahrzeuge (z.B. ein Belegungsraster), Informationen über Objekte und den Status von Objekten, wie sie von Steuergerät(en) 1836 wahrgenommen werden, usw. umfassen. Zum Beispiel kann die HMI-Anzeige 1834 in mindestens einem Ausführungsbeispiel Informationen über das Vorhandensein eines oder mehrerer Objekte (z.B. ein Straßenschild, ein Warnschild, eine Ampelumschaltung usw.) und/oder Informationen über Fahrmanöver anzeigen, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z.B. Spurwechsel jetzt, Ausfahrt 34B in zwei Meilen, usw.).In at least one embodiment, one or more controller(s) 1836 may receive inputs (e.g., represented by input data) from an instrument cluster 1832 of vehicle 1800 and outputs (e.g., represented by output data, display data, etc.) via a human Provide a machine interface ("HMI") display 1834, an audible alarm, a speaker, and/or via other vehicle 1800 components. In at least one embodiment, the outputs may include information such as vehicle speed, speed, time, map data (e.g., a high-resolution map (not in 18A shown), location data (e.g., the position of vehicle 1800, as on a map), direction, position of other vehicles (e.g., an occupancy grid), information about objects and the status of objects as perceived by controller(s) 1836, etc . For example, in at least one embodiment, the HMI display 1834 may display information about the presence of one or more objects (e.g., a road sign, a warning sign, a traffic light change, etc.) and/or information about maneuvers that the vehicle has performed, is performing, or is performing will perform (e.g., change lanes now, exit 34B in two miles, etc.).

In mindestens einem Ausführungsbeispiel umfasst das Fahrzeug 1800 weiter eine Netzwerkschnittstelle 1824, die drahtlose Antenne(n) 1826 und/oder Modem(s) zur Kommunikation über ein oder mehrere Netzwerke verwenden kann. In mindestens einem Ausführungsbeispiel kann die Netzschnittstelle 1824 beispielsweise die Kommunikation über Long-Term-Evolution („LTE“), Wideband Code Division Multiple Access („WCDMA“), Universal Mobile Telecommunications System („UMTS“), Global System for Mobile Communication („GSM“), IMT-CDMA Multi-Carrier („CDMA2000“) usw. ermöglichen. In mindestens einem Ausführungsbeispiel können drahtlose Antenne(n) 1826 auch die Kommunikation zwischen Objekten in der Umgebung (z.B. Fahrzeuge, mobile Geräte usw.) unter Verwendung von lokalen Netzwerken wie Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw. und/oder Breitbandnetzwerken mit geringer Leistung („LPWANs“) wie LoRaWAN, SigFox usw. ermöglichen.In at least one embodiment, the vehicle 1800 further includes a network interface 1824 that may use wireless antenna(s) 1826 and/or modem(s) to communicate over one or more networks. For example, in at least one embodiment, the network interface 1824 may support communication via Long Term Evolution ("LTE"), Wideband Code Division Multiple Access ("WCDMA"), Universal Mobile Telecommunications System ("UMTS"), Global System for Mobile Communication ( "GSM"), IMT-CDMA Multi-Carrier ("CDMA2000"), etc. In at least one embodiment, wireless antenna(s) 1826 can also enable communication between objects in the vicinity (e.g., vehicles, mobile devices, etc.) using local area networks such as Bluetooth, Bluetooth Low Energy ("LE"), Z-Wave, ZigBee etc. and/or low-power broadband networks ("LPWANs") such as LoRaWAN, SigFox, etc.

Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 18A zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 18A to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

18B zeigt ein Beispiel mit Kamerapositionen und Sichtfeldern für das autonome Fahrzeug 1800 der 18A gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel sind die Kamerastandpunkte und die jeweiligen Sichtfelder eine beispielhafte Darstellung und sollen nicht einschränkend ausgelegt werden. So können z.B. in mindestens einem Ausführungsbeispiel zusätzliche und/oder alternative Kameras enthalten sein und/oder die Kameras können sich an unterschiedlichen Positionen an dem Fahrzeug 1800 befinden. 18B 18 shows an example with camera positions and fields of view for the autonomous vehicle 1800 of FIG 18A according to at least one embodiment. In at least one embodiment, the camera locations and respective fields of view are exemplary and should not be construed in a limiting sense. For example, in at least one embodiment, additional and/or alternative cameras may be included and/or the cameras may be located at different locations on the vehicle 1800 .

In mindestens einem Ausführungsbeispiel können Kameratypen für Kameras unter anderem Digitalkameras umfassen, die für die Verwendung mit Komponenten und/oder Systemen von Fahrzeug 1800 ausgebildet sind. Die Kamera(s) können auf der Sicherheitsintegritätsstufe („ASIL“) B und/oder auf einer anderen ASIL-Stufe betrieben werden. In mindestens einem Ausführungsbeispiel können die Kameratypen je nach Ausführungsbeispiel jede beliebige Bildaufnahmerate, wie z.B. 60 Bilder pro Sekunde (fps), 1220 fps, 240 fps usw., erreichen. In mindestens einem Ausführungsbeispiel können Kameras unter Verwenden von Rollblenden, globalen Blenden, einem anderen Blendentyp oder einer Kombination davon eingesetzt werden. In mindestens einem Ausführungsbeispiel kann ein Farbfilter-Array ein Rot-Klar-Klar-Klar-Farbfilter-Array („RCCC“), ein Rot-Klar-Klar-Klar-Blau-Farbfilter-Array („RCCB“), ein Rot-Blau-Grün-Klar-Farbfilter-Array („RBGC“), ein Foveon X3-Farbfilter-Array, ein Bayer-Sensor-Farbfilter-Array („RGGB“), ein Monochrom-Sensor-Farbfilter-Array und/oder eine andere Art von Farbfilter-Array umfassen. In mindestens einem Ausführungsbeispiel können Kameras mit klaren Pixeln, wie z.B. Kameras mit einem RCCC, einem RCCB und/oder einem RBGC-Farbfilterarray, verwendet werden, um die Lichtempfindlichkeit zu erhöhen.In at least one embodiment, camera types for cameras may include, but are not limited to, digital cameras configured for use with vehicle 1800 components and/or systems. The camera(s) may operate at Safety Integrity Level (“ASIL”) B and/or any other ASIL level. In at least one embodiment, the camera types can achieve any frame rate, such as 60 frames per second (fps), 1220 fps, 240 fps, etc., depending on the embodiment. In at least one embodiment, cameras may be deployed using rolling shutters, global shutters, another shutter type, or a combination thereof. In at least one embodiment, a color filter array may be a red-clear-clear-clear color filter array ("RCCC"), a red-clear-clear-clear-blue color filter array ("RCCB"), a red Blue Green Clear Color Filter Array ("RBGC"), a Foveon X3 Color Filter Array, a Bayer Sensor Color Filter Array ("RGGB"), a Monochrome Sensor Color Filter Array, and/or other Kind of include color filter array. In at least one embodiment, cameras with clear pixels, such as cameras with an RCCC, an RCCB, and/or an RBGC color filter array, can be used to increase light sensitivity.

In mindestens einem Ausführungsbeispiel können eine oder mehrere Kameras verwendet werden, um erweiterte Funktionen von Fahrerassistenzsystemen (engl. advanced driver assistance systems, „ADAS“) auszuführen (z.B. als Teil eines redundanten oder ausfallsicheren Designs). Beispielsweise kann in mindestens einem Ausführungsbeispiel eine Multifunktions-Monokamera installiert sein, die Funktionen wie Spurhalteassistent, Verkehrszeichenassistent und intelligente Scheinwerfersteuerung umfasst. In mindestens einem Ausführungsbeispiel können eine oder mehrere Kameras (z.B. alle Kameras) Bilddaten (z.B. Video) gleichzeitig aufzeichnen und bereitstellen.In at least one embodiment, one or more cameras may be used to provide advanced driver assistance system functionality "ADAS") (e.g. as part of a redundant or fail-safe design). For example, in at least one embodiment, a multifunction mono camera may be installed that includes features such as lane departure warning, traffic sign assist, and intelligent headlamp control. In at least one embodiment, one or more cameras (eg, all cameras) may record and provide image data (eg, video) concurrently.

In mindestens einem Ausführungsbeispiel können eine oder mehrere Kameras in einer Halterung montiert werden, z. B. in einer kundenspezifischen (dreidimensional („3D“) gedruckten) Baugruppe, um Streulicht und Reflexionen aus dem Fahrzeuginneren (z. B. Reflexionen vom Armaturenbrett, die in Windschutzscheibenspiegeln reflektiert werden), die die Bilddatenerfassungsfähigkeiten der Kamera stören könnten, auszuschließen. In Bezug auf Seitenspiegel-Befestigungsbaugruppen können in mindestens einem Ausführungsbeispiel Seitenspiegel-Baugruppen kundenspezifisch in 3D gedruckt werden, so dass die Kameramontageplatte der Form des Seitenspiegels entspricht. In mindestens einem Ausführungsbeispiel können die Kamera(s) in den Seitenspiegel integriert sein. Bei Seitensichtkameras können die Kameras auch in vier Säulen an jeder Ecke der Kabine integriert sein, gemäß mindestens einem Ausführungsbeispiel.In at least one embodiment, one or more cameras may be mounted in a mount, e.g. B. in a custom (three-dimensional ("3D") printed) assembly to eliminate stray light and reflections from the vehicle interior (e.g. reflections from the dashboard reflected in windshield mirrors) that could interfere with the image data collection capabilities of the camera. With respect to side mirror mounting assemblies, in at least one embodiment, side mirror assemblies may be custom 3D printed such that the camera mounting plate conforms to the shape of the side mirror. In at least one embodiment, the camera(s) may be integrated into the side view mirror. Side view cameras may also have the cameras integrated into four pillars at each corner of the cab, according to at least one embodiment.

In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung vor dem Fahrzeug 1800 umfasst (z.B. nach vorne gerichtete Kameras), für eine Rundumsicht verwendet werden, um nach vorne gerichtete Pfade und Hindernisse zu identifizieren, sowie um mit Hilfe einer oder mehrerer Steuerungen 1836 und/oder Kontroll-SoCs Informationen bereitzustellen, die für die Erstellung eines Belegungsrasters und/oder die Bestimmung bevorzugter Fahrzeugpfade entscheidend sind. In mindestens einem Ausführungsbeispiel können nach vorne gerichtete Kameras verwendet werden, um viele der gleichen ADAS-Funktionen wie LIDAR auszuführen, einschließlich, ohne Einschränkung, Notbremsung, Fußgängererkennung und Kollisionsvermeidung. In mindestens einem Ausführungsbeispiel können nach vorn gerichtete Kameras auch für ADAS-Funktionen und - Systeme verwendet werden, einschließlich, aber nicht beschränkt auf Spurverlassenswarnungen (engl. Lane Departure Warnings, „LDW“), autonome Geschwindigkeitsregelung (engl. Autonomous Cruise Control, „ACC“) und/oder andere Funktionen wie Verkehrszeichenerkennung.In at least one embodiment, cameras with a field of view that includes portions of the environment in front of the vehicle 1800 (e.g., forward-facing cameras) may be used for all-around vision to identify forward-facing paths and obstacles, and to use one or more Provide controllers 1836 and/or control SoCs with information critical to creating an occupancy grid and/or determining preferred vehicle paths. In at least one embodiment, forward-facing cameras can be used to perform many of the same ADAS functions as LIDAR, including, without limitation, emergency braking, pedestrian detection, and collision avoidance. In at least one embodiment, forward-facing cameras may also be used for ADAS functions and systems including, but not limited to, Lane Departure Warnings ("LDW"), Autonomous Cruise Control ("ACC") ") and/or other functions such as traffic sign recognition.

In mindestens einem Ausführungsbeispiel kann eine Vielzahl von Kameras in einer nach vorne gerichteten Konfiguration verwendet werden, einschließlich z.B. einer monokularen Kameraplattform, die einen CMOS-Farbbildsensor („Complementary Metal Oxide Semiconductor“) umfasst. In mindestens einem Ausführungsbeispiel kann eine Weitwinkelkamera 1870 zur Wahrnehmung von Objekten verwendet werden, die von der Peripherie in Sichtweite kommen (z.B. Fußgänger, kreuzender Verkehr oder Fahrräder). Obwohl nur eine Weitwinkelkamera 1870 in 18B gezeigt wird, kann es in anderen Ausführungsbeispielen beliebig viele (einschließlich null) Weitwinkelkameras 1870 auf dem Fahrzeug 1800 geben. In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von Weitwinkelkamera(s) 1898 (z.B. ein Weitwinkel-Stereokamerapaar) zur tiefenbasierten Objekterkennung verwendet werden, insbesondere für Objekte, für die ein neuronales Netz noch nicht trainiert wurde. In mindestens einem Ausführungsbeispiel können Fernkameras 1898 auch zur Objekterkennung und -klassifizierung sowie zur grundlegenden Objektverfolgung verwendet werden.In at least one embodiment, a variety of cameras may be used in a forward-facing configuration, including, for example, a monocular camera platform that includes a color CMOS ("Complementary Metal Oxide Semiconductor") image sensor. In at least one embodiment, a wide-angle camera 1870 may be used to perceive objects coming into view from the periphery (eg, pedestrians, crossing traffic, or bicycles). Although only a wide-angle camera 1870 in 18B As shown, there may be any number (including zero) wide-angle cameras 1870 on the vehicle 1800 in other embodiments. In at least one embodiment, any number of wide-angle camera(s) 1898 (eg, a wide-angle stereo camera pair) may be used for depth-based object detection, particularly for objects for which a neural network has not yet been trained. In at least one embodiment, remote cameras 1898 can also be used for object detection and classification, and basic object tracking.

In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von Stereokamera(s) 1868 auch in einer nach vorn gerichteten Konfiguration enthalten sein. In mindestens einem Ausführungsbeispiel können eine oder mehrere der Stereokamera(s) 1868 eine integrierte Steuereinheit umfassen, die eine skalierbare Verarbeitungseinheit umfasst, die eine programmierbare Logik („FPGA“) und einen Mehrkernmikroprozessor mit einer integrierten Controller Area Network („CAN“)- oder Ethernet-Schnittstelle auf einem einzigen Chip bereitstellen kann. In mindestens einem Ausführungsbeispiel kann eine solche Einheit verwendet werden, um eine 3D-Umgebungskarte des Fahrzeugs 1800 zu generieren, einschließlich einer Entfernungsschätzung für alle Bildpunkte. In mindestens einem Ausführungsbeispiel können eine oder mehrere Stereokamera(s) 1868 unter anderem einen oder mehrere kompakte Stereosicht-Sensor(en) umfassen, der/die unter anderem zwei Kameralinsen (je eine links und rechts) und einen Bildverarbeitungschip umfassen kann/können, der die Entfernung vom Fahrzeug 1800 zum Zielobjekt messen und die erzeugten Informationen (z.B. Metadaten) zur Aktivierung autonomer Notbrems- und Spurhaltewarnfunktionen verwenden kann/können. In mindestens einem Ausführungsbeispiel können andere Arten von Stereokamera(s) 1868 zusätzlich zu oder alternativ zu den hier beschriebenen verwendet werden.In at least one embodiment, any number of stereo camera(s) 1868 may also be included in a forward-facing configuration. In at least one embodiment, one or more of the stereo camera(s) 1868 may include an integrated controller that includes a scalable processing unit that includes programmable logic ("FPGA") and a multi-core microprocessor with an integrated controller area network ("CAN") or Ethernet interface can provide on a single chip. In at least one embodiment, such a unit can be used to generate a 3D environment map of the vehicle 1800, including a distance estimate for all pixels. In at least one embodiment, stereo camera(s) 1868 may include, among other things, one or more compact stereo vision sensor(s) that may include, among other things, two camera lenses (one each left and right) and an image processing chip that measure the distance from the vehicle 1800 to the target object and use the generated information (e.g. metadata) to activate autonomous emergency braking and lane departure warning functions. In at least one embodiment, other types of stereo camera(s) 1868 may be used in addition to or as an alternative to those described herein.

In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung seitlich des Fahrzeugs 1800 umfasst (z.B. Seitensichtkameras), für die Rundumsicht verwendet werden, wobei Informationen bereitgestellt werden, die zur Erstellung und Aktualisierung des Belegungsrasters sowie zur Generierung von Warnungen vor Seitenaufprall-Kollisionen verwendet werden. Zum Beispiel könnten in mindestens einem Ausführungsbeispiel Surround-Kamera(s) 1874 (z.B. vier Surround-Kameras 1874 wie in 18B gezeigt) auf Fahrzeug 1800 positioniert werden. Die Surround-Kamera(s) 1874 kann (können) ohne Einschränkung jede beliebige Anzahl und Kombination von Weitwinkelkamera(s) 1870, Fisheye-Kamera(s), 360-Grad-Kamera(s) und/oder ähnlichem umfassen. Beispielsweise können in mindestens einem Ausführungsbeispiel vier Fisheye-Kameras an der Front, am Heck und an den Seiten von Fahrzeug 1800 angeordnet sein. In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 drei Surround-Kamera(s) 1874 (z.B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z.B. eine nach vorne gerichtete Kamera) als vierte Surround-Kamera verwenden.In at least one embodiment, cameras with a field of view that includes portions of the environment to the side of the vehicle 1800 (eg, side view cameras) may be used for the all-round view, providing information needed to create and update the occupancy grid and to generate side impact collision warnings. For example, in at least one embodiment, surround camera(s) 1874 (eg, four surround cameras 1874 as in 18B shown) positioned on vehicle 1800 . Surround camera(s) 1874 may include, without limitation, any number and combination of wide angle camera(s) 1870, fisheye camera(s), 360 degree camera(s), and/or the like. For example, four fisheye cameras may be located at the front, rear, and sides of vehicle 1800 in at least one embodiment. In at least one embodiment, the vehicle 1800 may use three surround camera(s) 1874 (eg, left, right, and rear) and use one or more other camera(s) (eg, a front-facing camera) as the fourth surround camera.

In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung hinter dem Fahrzeug 1800 umfasst (z.B. Rückfahrkameras), für die Einparkhilfe, die Rundumsicht, die Warnung vor Heckaufprall und die Erstellung und Aktualisierung des Belegungsrasters verwendet werden. In mindestens einem Ausführungsbeispiel kann eine Vielzahl von Kameras verwendet werden, einschließlich, aber nicht beschränkt auf Kameras, die auch als nach vorne gerichtete Kamera(s) geeignet sind (z.B. Fernkameras 1898 und/oder Mittelbereichskamera(s) 1876, Stereokamera(s) 1868), Infrarotkamera(s) 1872 usw.), wie hier beschrieben.In at least one embodiment, cameras with a field of view that includes portions of the environment behind the vehicle 1800 (e.g., backup cameras) may be used for parking assistance, surround visibility, rear impact warning, and occupancy grid creation and updating. In at least one embodiment, a variety of cameras may be used, including but not limited to cameras that are also suitable as front-facing camera(s) (e.g., remote camera(s) 1898 and/or mid-range camera(s) 1876, stereo camera(s) 1868 ), infrared camera(s) 1872 etc.) as described here.

Inferenz- und/oder Trainingslogik 1515 werden verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B angegeben. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 18B zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet werden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are here in connection with 15A and or 15B specified. In at least one embodiment, the inference and/or training logic 1515 in the system 18B to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

18C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 1800 der 18A zeigt, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel werden alle Komponenten, Merkmale und Systeme des Fahrzeugs 1800 in 18C als über einen Bus 1802 verbunden gezeigt. In mindestens einem Ausführungsbeispiel kann der Bus 1802 ohne Einschränkung eine CAN-Datenschnittstelle (hier alternativ als „CAN-Bus“ bezeichnet) umfassen. In mindestens einem Ausführungsbeispiel kann ein CAN ein Netzwerk innerhalb von Fahrzeug 1800 sein, das zur Unterstützung der Steuerung verschiedener Merkmale und Funktionen von Fahrzeug 1800 verwendet wird, wie z.B. Bremsbetätigung, Beschleunigung, Bremsen, Lenkung, Scheibenwischer usw. In mindestens einem Ausführungsbeispiel kann der Bus 1802 so konfiguriert sein, dass er Dutzende oder sogar Hunderte von Knoten hat, von denen jeder seinen eigenen eindeutigen Identifikator hat (z.B. eine CAN-ID). In mindestens einem Ausführungsbeispiel kann Bus 1802 gelesen werden, um Lenkradwinkel, Fahrgeschwindigkeit, Motordrehzahl pro Minute („RPMs“), Knopfstellungen und/oder andere Fahrzeugzustandsanzeigen zu ermitteln. In mindestens einem Ausführungsbeispiel kann Bus 1802 ein CAN-Bus sein, der ASIL B-konform ist. 18C 18 is a block diagram depicting an example system architecture for the autonomous vehicle 1800 of FIG 18A shows, according to at least one embodiment. In at least one embodiment, all of the components, features, and systems of the vehicle 1800 in 18C shown connected via a bus 1802 . In at least one embodiment, bus 1802 may include, without limitation, a CAN data interface (alternatively referred to herein as "CAN bus"). In at least one embodiment, a CAN may be a network within vehicle 1800 used to support control of various features and functions of vehicle 1800, such as brake application, acceleration, braking, steering, windshield wipers, etc. In at least one embodiment, the bus 1802 can be configured to have tens or even hundreds of nodes, each with its own unique identifier (e.g., a CAN ID). In at least one embodiment, bus 1802 may be read to determine steering wheel angles, vehicle speed, engine revolutions per minute ("RPMs"), button positions, and/or other vehicle status indicators. In at least one embodiment, bus 1802 may be a CAN bus that is ASIL B compliant.

In mindestens einem Ausführungsbeispiel können zusätzlich zu oder alternativ zu CAN, FlexRay und/oder Ethernet verwendet werden. In mindestens einem Ausführungsbeispiel kann es beliebig viele Busse 1802 geben, die ohne Einschränkung null oder mehr CAN-Busse, null oder mehr FlexRay-Busse, null oder mehr Ethernet-Busse und/oder null oder mehr andere Arten von Bussen unter Verwendung eines anderen Protokolls umfassen können. In mindestens einem Ausführungsbeispiel können zwei oder mehr Busse 1802 zur Ausführung verschiedener Funktionen und/oder zur Redundanz verwendet werden. Beispielsweise kann ein erster Bus 1802 für die Funktionalität der Kollisionsvermeidung und ein zweiter Bus 1802 für die Steuerung der Betätigung verwendet werden. In mindestens einem Ausführungsbeispiel kann jeder Bus 1802 mit jeder beliebigen Komponente des Fahrzeugs 1800 kommunizieren, und zwei oder mehr Busse 1802 können mit denselben Komponenten kommunizieren. In mindestens einem Ausführungsbeispiel kann jedes von beliebig vielen Systemen auf Chip(s) („SoC(s)“) 1804, jedes von Steuergerät(en) 1836 und/oder jeder Computer im Fahrzeug Zugriff auf dieselben Eingabedaten (z.B. Eingänge von Sensoren des Fahrzeugs 1800) haben und an einen gemeinsamen Bus, einen CAN-Bus, angeschlossen sein.In at least one embodiment, CAN, FlexRay, and/or Ethernet may be used in addition to or as an alternative. In at least one embodiment, there may be any number of buses 1802, including, without limitation, zero or more CAN buses, zero or more FlexRay buses, zero or more Ethernet buses, and/or zero or more other types of buses using any other protocol can include. In at least one embodiment, two or more buses 1802 may be used to perform different functions and/or for redundancy. For example, a first bus 1802 may be used for collision avoidance functionality and a second bus 1802 may be used for actuation control. In at least one embodiment, each bus 1802 can communicate with any component of the vehicle 1800, and two or more buses 1802 can communicate with the same components. In at least one embodiment, any of any number of system on chip(s) ("SoC(s)") 1804, controller(s) 1836, and/or computer in the vehicle may have access to the same input data (e.g., inputs from sensors of the vehicle 1800) and be connected to a common bus, a CAN bus.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 eine oder mehrere Steuerungen 1836 umfassen, wie die hier in Bezug auf 18A beschriebenen. Steuergerät(e) 1836 kann/können für eine Vielzahl von Funktionen verwendet werden. In mindestens einem Ausführungsbeispiel können Steuergerät(e) 1836 mit beliebigen anderen Komponenten und Systemen von Fahrzeug 1800 gekoppelt und für die Steuerung von Fahrzeug 1800, künstliche Intelligenz von Fahrzeug 1800, Infotainment für Fahrzeug 1800 und/oder ähnliche Funktionen verwendet werden.In at least one embodiment, the vehicle 1800 may include one or more controllers 1836, such as those referred to herein 18A described. Controller(s) 1836 can be used for a variety of functions. In at least one embodiment, controller(s) 1836 may be coupled to any other vehicle 1800 components and systems and for the Vehicle 1800 control, vehicle 1800 artificial intelligence, vehicle 1800 infotainment, and/or similar functions.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 eine beliebige Anzahl von SoCs 1804 umfassen. Jeder der SoCs 1804 kann, ohne Einschränkung, Zentraleinheiten („CPU(s)“) 1806, Grafikverarbeitungseinheiten („GPU(s)“) 1808, Prozessor(en) 1810, Cache(s) 1812, Beschleuniger 1814, Datenspeicher 1816 und/oder andere nicht gezeigte Komponenten und Merkmale umfassen. In mindestens einem Ausführungsbeispiel kann/können SoC(s) 1804 zur Steuerung von Fahrzeug 1800 in einer Vielzahl von Plattformen und Systemen verwendet werden. Beispielsweise können SoC(s) 1804 in mindestens einem Ausführungsbeispiel in einem System (z.B. System des Fahrzeugs 1800) mit einer hochauflösenden (engl. High Definition, „HD“) Karte 1822 kombiniert werden, die Kartenaktualisierungen und/oder -aktualisierungen über die Netzschnittstelle 1824 von einem oder mehreren Servern erhalten kann (in nicht dargestellt).In at least one embodiment, the vehicle 1800 may include any number of SoCs 1804 . Each of the SoCs 1804 may include, without limitation, central processing unit (“CPU(s)”) 1806, graphics processing unit (“GPU(s)”) 1808, processor(s) 1810, cache(s) 1812, accelerator 1814, memory 1816, and/or or other components and features not shown. In at least one embodiment, SoC(s) 1804 may be used to control vehicle 1800 in a variety of platforms and systems. For example, in at least one embodiment, SoC(s) 1804 may be combined in a system (e.g., vehicle 1800 system) with a high definition (“HD”) map 1822 that accepts map updates and/or updates over the network interface 1824 can be obtained from one or more servers (in not shown).

In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 1806 einen CPU-Cluster oder CPU-Komplex (hier alternativ als „CCPLEX“ bezeichnet) umfassen. In mindestens einem Ausführungsbeispiel kann (können) die CPU(s) 1806 mehrere Kerne und/oder Level-2-Caches („L2“) umfassen. In mindestens einem Ausführungsbeispiel können die CPU(s) 1806 beispielsweise acht Kerne in einer kohärenten Multiprozessor-Konfiguration umfassen. In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 1806 vier Dual-Core-Cluster umfassen, wobei jedes Cluster über einen dedizierten L2-Cache (z.B. einen 2 MB großen L2-Cache) verfügt. In mindestens einem Ausführungsbeispiel können die CPU(s) 1806 (z.B. CCPLEX) so konfiguriert sein, dass sie einen simultanen Cluster-Betrieb unterstützen, so dass jede Kombination von Clustern der CPU(s) 1806 zu einem beliebigen Zeitpunkt aktiv sein kann.In at least one embodiment, CPU(s) 1806 may comprise a CPU cluster or CPU complex (alternatively referred to herein as "CCPLEX"). In at least one embodiment, the CPU(s) 1806 may include multiple cores and/or level 2 ("L2") caches. For example, in at least one embodiment, CPU(s) 1806 may include eight cores in a coherent multiprocessor configuration. In at least one embodiment, the CPU(s) 1806 may include four dual-core clusters, with each cluster having a dedicated L2 cache (e.g., a 2MB L2 cache). In at least one embodiment, the CPU(s) 1806 (e.g., CCPLEX) may be configured to support simultaneous cluster operation, such that any combination of CPU(s) 1806 clusters may be active at any one time.

In mindestens einem Ausführungsbeispiel können eine oder mehrere der CPU(s) 1806 Energieverwaltungsfunktionen implementieren, die ohne Einschränkung eines oder mehrere der folgenden Merkmale umfassen: Einzelne Hardware-Blöcke können im Leerlauf automatisch in einem Gatter von dem Taktsignal abgekoppelt werden (taktgesteuert, engl. „clock-gated“), um dynamisch Energie zu sparen; jeder Kern-Takt kann abgekoppelt werden, wenn der Kern aufgrund der Ausführung von Wait-For-Interrupt („WFI“)/Wait-For-Event („WFE“)-Instruktionen nicht aktiv Befehle ausführt, jeder Kern kann unabhängig leistungsgesteuert (engl. „power gated“) sein; jeder Kern-Cluster kann unabhängig taktgesteuert sein, wenn alle Kerne taktgesteuert oder leistungsgesteuert sind; und/oder jeder Kern-Cluster kann unabhängig leistungsgesteuert sein, wenn alle Kerne leistungsgesteuert sind. In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 1806 ferner einen verbesserten Algorithmus zur Verwaltung von Leistungszuständen implementieren, wobei die zulässigen Leistungszustände und erwarteten Aufwachzeiten spezifiziert werden und die Hardware/Mikrocode den besten Leistungszustand bestimmt, in den Kern, Cluster und CCPLEX eintreten können. In mindestens einem Ausführungsbeispiel können Verarbeitungskerne vereinfachte Sequenzen für den Eintritt in Leistungszustände in Software unterstützen, wobei die Arbeit auf den Mikrocode verlagert wird.In at least one embodiment, one or more of the CPU(s) 1806 may implement power management functions, including, without limitation, one or more of the following features: Individual hardware blocks may be automatically gated from the clock signal when idle. clock-gated") to dynamically save power; each core clock can be detached when the core is not actively executing commands due to the execution of Wait-For-Interrupt ("WFI")/Wait-For-Event ("WFE") instructions, each core can be independently power controlled .be "power gated"; each core cluster can be clocked independently if all cores are clocked or power controlled; and/or each core cluster may be independently power controlled if all cores are power controlled. In at least one embodiment, the CPU(s) 1806 may further implement an improved algorithm for managing power states, specifying the allowable power states and expected wake-up times, and the hardware/microcode determining the best power state to enter the core, cluster, and CCPLEX be able. In at least one embodiment, processing cores may support simplified sequences for entering power states in software, with the work being offloaded to microcode.

In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1808 eine integrierte GPU (hier alternativ als „iGPU“ bezeichnet) umfassen. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1808 programmierbar und für parallele Arbeitslasten effizient sein. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1808 einen verbesserten Tensorbefehlssatz verwenden. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1808 einen oder mehrere Streaming-Mikroprozessoren umfassen, wobei jeder Streaming-Mikroprozessor einen L1-Cache (z.B. einen L1-Cache mit mindestens 96 KB Speicherkapazität) und zwei oder mehrere Streaming-Mikroprozessoren einen L2-Cache (z.B. einen L2-Cache mit 512 KB Speicherkapazität) gemeinsam nutzen können. In mindestens einem Ausführungsbeispiel können GPU(s) 1808 mindestens acht Streaming-Mikroprozessoren umfassen. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1808 Compute Application Programming Interface(s) (API(s)) verwenden. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1808 eine oder mehrere parallele Rechnerplattformen und/oder Programmiermodelle (z. B. CUDA von NVIDIA) verwenden.In at least one embodiment, GPU(s) 1808 may include an integrated GPU (alternatively referred to herein as "iGPU"). In at least one embodiment, GPU(s) 1808 may be programmable and efficient for parallel workloads. In at least one embodiment, GPU(s) 1808 may use an enhanced tensor instruction set. In at least one embodiment, GPU(s) 1808 may include one or more streaming microprocessors, each streaming microprocessor having an L1 cache (e.g., an L1 cache having at least 96 KB of storage capacity) and two or more streaming microprocessors having an L2 cache (e.g. an L2 cache with a storage capacity of 512 KB). In at least one embodiment, GPU(s) 1808 may include at least eight streaming microprocessors. In at least one embodiment, GPU(s) 1808 may use Compute Application Programming Interface(s) (API(s)). In at least one embodiment, GPU(s) 1808 may utilize one or more parallel computing platforms and/or programming models (e.g., NVIDIA's CUDA).

In mindestens einem Ausführungsbeispiel kann eine oder mehrere der GPU(s) 1808 leistungsoptimiert sein, um die beste Leistung in Automobil- und eingebetteten Anwendungsfällen zu erzielen. In einem Ausführungsbeispiel könnte(n) GPU(s) 1808 beispielsweise auf einem Fin-Feldeffekttransistor („FinFET“) hergestellt werden. In mindestens einem Ausführungsbeispiel kann jeder Streaming-Mikroprozessor eine Anzahl von Verarbeitungskernen mit gemischter Präzision enthalten, die in mehrere Blöcke unterteilt sind. Zum Beispiel, und ohne Einschränkung, könnten 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke aufgeteilt werden. In mindestens einem Ausführungsbeispiel könnten jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA TENSOR-CORES für Deep-Learning-Matrix-Arithmetik mit gemischter Präzision, ein Level-Null („L0“)-Instruktionscache, ein Warp-Planer, eine Versandeinheit und/oder eine 64 KB-Registerdatei zugewiesen sein. In mindestens einem Ausführungsbeispiel können Streaming-Mikroprozessoren unabhängige parallele Integer- und Gleitkomma-Datenpfade umfassen, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Rechen- und Adressierungsberechnungen zu ermöglichen. In mindestens einem Ausführungsbeispiel können Streaming-Mikroprozessoren unabhängige Thread-Planungsfunktionen umfassen, um eine feinkörnigere Synchronisierung und Zusammenarbeit zwischen parallelen Threads zu ermöglichen. In mindestens einem Ausführungsbeispiel können Streaming-Mikroprozessoren einen kombinierten LI-Daten-Cache und eine gemeinsam genutzte Speichereinheit umfassen, um die Leistung zu verbessern und gleichzeitig die Programmierung zu vereinfachen.In at least one embodiment, one or more of the GPU(s) 1808 may be performance optimized to achieve the best performance in automotive and embedded use cases. For example, in one embodiment, GPU(s) 1808 could be fabricated on a Fin Field Effect Transistor ("FinFET"). In at least one embodiment, each streaming microprocessor may include a number of mixed-precision processing cores divided into multiple blocks. For example, and without limitation, 64 PF32 cores and 32 PF64 cores could be divided into four processing blocks. In at least one embodiment, each processing block could have 16 FP32 cores, 8 FP64 cores, 16 INT32 cores, two NVIDIA TENSOR-CORES for mixed-precision deep learning matrix arithmetic, a level-zero ("L0") instruction cache , a warp planner, a shipping unit and/or a 64 KB register file. In at least one embodiment, streaming microprocessors may include independent parallel integer and floating point data paths to enable efficient execution of workloads with a mix of computational and addressing computations. In at least one embodiment, streaming microprocessors may include independent thread scheduling functions to enable finer grained synchronization and collaboration between parallel threads. In at least one embodiment, streaming microprocessors may include a combined LI data cache and shared memory unit to improve performance while simplifying programming.

In mindestens einem Ausführungsbeispiel kann eine oder mehrere der GPU(s) 1808 einen Speicher mit hoher Bandbreite („HBM“) und/oder ein 16 GB HBM2-Speichersubsystem umfassen, um in einigen Beispielen eine Spitzenspeicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In mindestens einem Ausführungsbeispiel kann zusätzlich zum oder alternativ vom HBM-Speicher ein synchroner Grafik-Direktzugriffsspeicher („SGRAM“) verwendet werden, z.B. ein synchroner Grafik-Direktzugriffsspeicher mit doppelter Datenrate vom Typ 5 („GDDR5“).In at least one embodiment, one or more of the GPU(s) 1808 may include high-bandwidth memory ("HBM") and/or a 16GB HBM2 memory subsystem to provide peak memory bandwidth of about 900GB/second in some examples. In at least one embodiment, synchronous graphics random access memory ("SGRAM"), e.g., double data rate synchronous graphics random access memory type 5 ("GDDR5"), may be used in addition to or as an alternative to HBM memory.

In mindestens einem Ausführungsbeispiel können GPU(s) 1808 eine einheitliche Speichertechnologie umfassen. In mindestens einem Ausführungsbeispiel kann die Unterstützung von Address Translation Services („ATS“) verwendet werden, um GPU(s) 1808 den direkten Zugriff auf CPU(s) 1806 Seitentabellen zu ermöglichen. In mindestens einem Ausführungsbeispiel kann eine Adressübersetzungsanforderung an die CPU(s) 1806 übermittelt werden, wenn die Speicherverwaltungseinheit („MMU“) GPU(s) 1808 einen Fehlzugriff erfährt. Als Antwort darauf kann/können die CPU(s) 1806 in ihren Seitentabellen nach einer virtuellenzu-physischen Zuordnung der Adresse suchen und die Übersetzung zurück an die GPU(s) 1808 übertragen, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann die Unified Memory-Technologie einen einzigen einheitlichen virtuellen Adressraum für den Speicher sowohl der CPU(s) 1806 als auch der GPU(s) 1808 ermöglichen, wodurch die Programmierung der GPU(s) 1808 und die Portierung von Anwendungen auf die GPU(s) 1808 vereinfacht wird.In at least one embodiment, GPU(s) 1808 may include a unified memory technology. In at least one embodiment, Address Translation Services ("ATS") support may be used to allow GPU(s) 1808 direct access to CPU(s) 1806 page tables. In at least one embodiment, an address translation request may be sent to the CPU(s) 1806 when the memory management unit ("MMU") GPU(s) 1808 experiences a miss. In response, the CPU(s) 1806 may look up their page tables for a virtual-to-physical mapping of the address and transmit the translation back to the GPU(s) 1808, according to at least one embodiment. In at least one embodiment, unified memory technology may enable a single unified virtual address space for memory of both CPU(s) 1806 and GPU(s) 1808, making programming of GPU(s) 1808 and porting of applications to the GPU(s) 1808 is simplified.

In mindestens einem Ausführungsbeispiel kann/können die GPU(s) 1808 eine beliebige Anzahl von Zugriffszählern umfassen, die die Häufigkeit des Zugriffs von GPU(s) 1808 auf den Speicher anderer Prozessoren verfolgen können. In mindestens einem Ausführungsbeispiel können Zugriffszähler dazu beitragen, sicherzustellen, dass Speicherseiten in den physischen Speicher des Prozessors verschoben werden, der am häufigsten auf Seiten zugreift, wodurch die Effizienz für von Prozessoren gemeinsam genutzte Speicherbereiche verbessert wird.In at least one embodiment, the GPU(s) 1808 may include any number of access counters that may track the number of times GPU(s) 1808 access the memory of other processors. In at least one embodiment, access counters may help ensure that memory pages are moved to the physical memory of the processor accessing pages most frequently, thereby improving efficiency for processor-shared memory areas.

In mindestens einem Ausführungsbeispiel können einer oder mehrere der SoC(s) 1804 eine beliebige Anzahl von Cache(s) 1812 umfassen, einschließlich der hier beschriebenen. In mindestens einem Ausführungsbeispiel könnte(n) der/die Cache(s) 1812 beispielsweise einen Cache der Stufe drei (engl. Level Three, „L3“) umfassen, der sowohl der/den CPU(s) 1806 als auch der/den GPU(s) 1808 zur Verfügung steht (d.h. der/die sowohl der/den CPU(s) 1806 als auch der/den GPU(s) 1808 angeschlossen ist/sind). In mindestens einem Ausführungsbeispiel kann/können Cache(s) 1812 einen Rückschreib-Cache umfassen, der Zustände von Zeilen verfolgen kann, z.B. unter Verwendung eines Cache-Kohärenz-Protokolls (z.B. MEI, MESI, MSI usw.). In mindestens einem Ausführungsbeispiel kann der L3-Cache, je nach Ausführungsbeispiel, 4 MB oder mehr umfassen, auch wenn kleinere Cache-Größen verwendet werden können.In at least one embodiment, one or more of the SoC(s) 1804 may include any number of cache(s) 1812, including those described herein. For example, in at least one embodiment, the cache(s) 1812 could comprise a level three (“L3”) cache dedicated to both the CPU(s) 1806 and the GPU(s). (s) 1808 is available (i.e., attached to both CPU(s) 1806 and GPU(s) 1808). In at least one embodiment, cache(s) 1812 may include a write-back cache that may track states of lines, e.g., using a cache coherency protocol (e.g., MEI, MESI, MSI, etc.). In at least one embodiment, the L3 cache may be 4MB or more, depending on the embodiment, although smaller cache sizes may be used.

In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 1804 einen oder mehrere Beschleuniger 1814 umfassen (z.B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination davon). In mindestens einem Ausführungsbeispiel kann/können SoC(s) 1804 einen Hardware-Beschleunigungscluster umfassen, der optimierte Hardware-Beschleuniger und/oder einen großen On-Chip-Speicher enthalten kann. In mindestens einem Ausführungsbeispiel kann ein großer On-Chip-Speicher (z.B. 4 MB SRAM) einen Hardware-Beschleunigungscluster zur Beschleunigung neuronaler Netze und anderer Berechnungen ermöglichen. In mindestens einem Ausführungsbeispiel kann ein Hardware-Beschleunigungscluster unter Verwendung von GPU(s) 1808 verwendet werden, um den/die Grafikprozessor(en) 1808 zu ergänzen und den/die Grafikprozessor(en) 1808 von einigen Aufgaben zu entlasten (z.B. um mehr Zyklen des/der Grafikprozessor(en) 1808 für die Ausführung anderer Aufgaben freizugeben). In mindestens einem Ausführungsbeispiel könnte(n) der/die Beschleuniger 1814 für gezielte Arbeitsbelastungen verwendet werden (z.B. Wahrnehmung, Convolutional Neural Networks („CNNs“), rekurrierende neuronale Netze („RNNs“) usw.), die stabil genug sind, um einer Beschleunigung zugänglich zu sein. In mindestens einem Ausführungsbeispiel kann ein CNN auf Regionen basierende oder regionale Convolutional Neural Network („RCNNs“) und schnelle RCNNs (z.B., wie sie zur Objekterkennung verwendet werden) oder andere Arten von CNNs umfassen.In at least one embodiment, one or more of the SoC(s) 1804 may include one or more accelerators 1814 (eg, hardware accelerators, software accelerators, or a combination thereof). In at least one embodiment, SoC(s) 1804 may include a hardware acceleration cluster, which may include optimized hardware accelerators and/or large on-chip memory. In at least one embodiment, large on-chip memory (eg, 4MB SRAM) may enable a hardware acceleration cluster to speed up neural networks and other computations. In at least one embodiment, a hardware acceleration cluster using GPU(s) 1808 can be used to complement the graphics processor(s) 1808 and offload some tasks (e.g., by more cycles) from the graphics processor(s) 1808 free the graphics processor(s) 1808 to perform other tasks). In at least one embodiment, the accelerator(s) 1814 could be used for targeted workloads (e.g., perception, convolutional neural networks ("CNNs"), recurrent neural networks ("RNNs"), etc.) that are stable enough to support a acceleration to be accessible. In at least one embodiment, a CNN may be region-based or regional convolutional neural networks ("RCNNs") and fast RCNNs (e.g., as used for object detection) or other types of CNNs.

In mindestens einem Ausführungsbeispiel kann/können der/die Beschleuniger 1814 (z.B. Hardware-Beschleunigungscluster) einen/mehrere Deep Learning Accelerator(s) („DLA“) umfassen. DLA(s) können, ohne Einschränkung, eine oder mehrere Tensorverarbeitungseinheiten („TPUs“) umfassen, die so konfiguriert sein können, dass zusätzlich zehn Billionen Operationen pro Sekunde für Deep Learning-Anwendungen und Inferenzierung bereitgestellt werden. In mindestens einem Ausführungsbeispiel können TPUs Beschleuniger sein, die so konfiguriert und optimiert sind, dass sie Bildverarbeitungsfunktionen ausführen (z.B. für CNNs, RCNNs usw.). DLA(s) können weiter für einen bestimmten Satz von neuronalen Netzwerktypen und Gleitkommaoperationen sowie für die Inferenzierung optimiert werden. In mindestens einem Ausführungsbeispiel kann das Design von DLA(s) mehr Leistung pro Millimeter bereitstellen als eine typische Allzweck-GPU und übertrifft typischerweise die Leistung einer CPU bei weitem. In mindestens einem Ausführungsbeispiel kann/können TPU(s) mehrere Funktionen ausführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die beispielsweise INT8-, INT16- und FP16-Datentypen sowohl für Merkmale und Gewichte als auch Postprozessor-Funktionen unterstützt. In mindestens einem Ausführungsbeispiel können DLA(s) schnell und effizient neuronale Netze, insbesondere CNNs, auf verarbeiteten oder unverarbeiteten Daten für eine beliebige Vielzahl von Funktionen ausführen, darunter zum Beispiel und ohne Einschränkung: ein CNN zur Objektidentifizierung und -erkennung unter Verwendung von Daten von Kamerasensoren; ein CNN zum Abschätzen von Entfernungen unter Verwendung von Daten von Kamerasensoren; ein CNN zur Notfall-Fahrzeugerkennung und - identifizierung und -erkennung unter Verwendung von Daten von Mikrofonen 1896; ein CNN zur Gesichtserkennung und Fahrzeughalteridentifizierung unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherheitsrelevante Ereignisse.In at least one embodiment, the accelerator(s) 1814 (e.g., hardware acceleration cluster) may include a Deep Learning Accelerator(s) ("DLA"). DLA(s) may include, without limitation, one or more tensor processing units ("TPUs"), which may be configured to provide an additional ten trillion operations per second for deep learning applications and inferencing. In at least one embodiment, TPUs can be accelerators configured and optimized to perform image processing functions (e.g., for CNNs, RCNNs, etc.). DLA(s) can be further optimized for a specific set of neural network types and floating point operations, as well as for inferencing. In at least one embodiment, the design of DLA(s) can provide more performance per millimeter than a typical general purpose GPU and typically far exceeds the performance of a CPU. In at least one embodiment, TPU(s) may perform multiple functions, including a single-instance convolution function that supports, for example, INT8, INT16, and FP16 data types for both features and weights, and post-processor functions. In at least one embodiment, DLA(s) can quickly and efficiently run neural networks, particularly CNNs, on processed or unprocessed data for any variety of functions including, for example and without limitation: a CNN for object identification and detection using data from camera sensors; a CNN for estimating distances using data from camera sensors; a CNN for emergency vehicle detection and identification and detection using data from microphones 1896; a CNN for facial recognition and vehicle owner identification using data from camera sensors; and/or a CNN for security-related events.

In mindestens einem Ausführungsbeispiel können DLA(s) jede beliebige Funktion von GPU(s) 1808 erfüllen, und unter Verwendung eines Inferenz-Beschleunigers kann ein Designer beispielsweise entweder DLA(s) oder GPU(s) 1808 für jede beliebige Funktion einsetzen. In mindestens einem Ausführungsbeispiel kann der Konstrukteur beispielsweise die Verarbeitung von CNNs und Gleitkommaoperationen auf DLA(s) konzentrieren und andere Funktionen GPU(s) 1808 und/oder anderen Beschleuniger(n) 1814 überlassen.In at least one embodiment, DLA(s) may perform any function of GPU(s) 1808, and using an inference accelerator, for example, a designer may employ either DLA(s) or GPU(s) 1808 for any function. For example, in at least one embodiment, the designer may concentrate the processing of CNNs and floating point operations on DLA(s) and leave other functions to GPU(s) 1808 and/or other accelerator(s) 1814 .

In mindestens einem Ausführungsbeispiel kann/können der/die Beschleuniger 1814 (z.B. Hardware-Beschleunigungscluster) einen/mehrere programmierbare(n) Vision Accelerator(s) („PVA“) umfassen, der/die hier alternativ als Computer Vision Accelerator bezeichnet werden kann/können. In mindestens einem Ausführungsbeispiel kann (können) der (die) PVA so ausgelegt und konfiguriert sein, dass er (sie) Computer-Vision-Algorithmen für Advanced Driver Assistance System („ADAS“) 1838, autonomes Fahren, Augmented Reality („AR“)-Anwendungen und/oder Virtual Reality („VR“)-Anwendungen beschleunigt. PVA(s) können ein Gleichgewicht zwischen Leistung und Flexibilität bereitstellen. In mindestens einem Ausführungsbeispiel kann (können) jeder PVA beispielsweise und ohne Einschränkung eine beliebige Anzahl von Rechnerkernen mit reduziertem Befehlssatz („RISC“), direkten Speicherzugriff („DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren umfassen.In at least one embodiment, the accelerator(s) 1814 (e.g., hardware acceleration cluster) may include a programmable vision accelerator(s) ("PVA"), which may alternatively be referred to herein as a computer vision accelerator/ be able. In at least one embodiment, the PVA(s) may be designed and configured to use computer vision algorithms for Advanced Driver Assistance System ("ADAS") 1838, autonomous driving, augmented reality ("AR") ) applications and/or Virtual Reality (“VR”) applications. PVA(s) can provide a balance between performance and flexibility. In at least one embodiment, each PVA may include, for example and without limitation, any number of reduced instruction set ("RISC") cores, direct memory access ("DMA") cores, and/or any number of vector processors.

In mindestens einem Ausführungsbeispiel können RISC-Kerne mit Bildsensoren (z.B. Bildsensoren jeder der hier beschriebenen Kameras), Bildsignalprozessor(en) und/oder ähnlichem interagieren. In mindestens einem Ausführungsbeispiel kann jeder RISC-Kern einen beliebigen Speicherplatz umfassen. In mindestens einem Ausführungsbeispiel können RISC-Kerne je nach Ausführungsbeispiel eines von mehreren Protokollen verwenden. In mindestens einem Ausführungsbeispiel können RISC-Cores ein Echtzeitbetriebssystem („RTOS“) ausführen. In mindestens einem Ausführungsbeispiel können RISC-Cores unter Verwendung einer oder mehrerer integrierter Schaltungsvorrichtungen, anwendungsspezifischer integrierter Schaltungen („ASICs“) und/oder Speichervorrichtungen implementiert werden. In mindestens einem Ausführungsbeispiel könnten RISC-Cores beispielsweise einen Befehlscache und/oder ein eng gekoppeltes RAM umfassen.In at least one embodiment, RISC cores may interact with image sensors (e.g., image sensors of any of the cameras described herein), image signal processor(s), and/or the like. In at least one embodiment, each RISC core may include any memory location. In at least one embodiment, RISC cores may use one of several protocols, depending on the embodiment. In at least one embodiment, RISC cores can run a real-time operating system ("RTOS"). In at least one embodiment, RISC cores may be implemented using one or more integrated circuit devices, application specific integrated circuits ("ASICs"), and/or memory devices. For example, in at least one embodiment, RISC cores could include an instruction cache and/or tightly coupled RAM.

In mindestens einem Ausführungsbeispiel kann DMA Komponenten von PVA(s) den Zugriff auf den Systemspeicher unabhängig von CPU(s) 1806 ermöglichen. In mindestens einem Ausführungsbeispiel kann DMA eine beliebige Anzahl von Funktionen unterstützen, die zur Optimierung von PVA bereitgestellt werden, einschließlich, aber nicht beschränkt auf die Unterstützung mehrdimensionaler Adressierung und/oder zirkulärer Adressierung. In mindestens einem Ausführungsbeispiel kann DMA bis zu sechs oder mehr Adressierungsdimensionen unterstützen, die unter anderem Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockabstufung, vertikale Blockabstufung und/oder Tiefenabstufung umfassen können.In at least one embodiment, DMA may allow components of PVA(s) to access system memory independently of CPU(s) 1806. In at least one embodiment, DMA may support any number of functions provided to optimize PVA, including but not limited to supporting multi-dimensional addressing and/or circular addressing. In at least one embodiment, DMA may support up to six or more addressing dimensions, which may include, but are not limited to, block width, block height, block depth, horizontal block gradation, vertical block gradation, and/or depth gradation.

In mindestens einem Ausführungsbeispiel kann es sich bei Vektorprozessoren um programmierbare Prozessoren handeln, die so gestaltet sein können, dass sie die Programmierung von Algorithmen für die Bildverarbeitung effizient und flexibel ausführen und Signalverarbeitungsfähigkeiten bereitstellen. In mindestens einem Ausführungsbeispiel kann PVA einen PVA-Kern und zwei vektorverarbeitende Subsystem-Partitionen umfassen. In mindestens einem Ausführungsbeispiel kann der PVA-Kern ein Prozessor-Subsystem, DMA-Maschine(n) (z.B. zwei DMA-Maschinen) und/oder andere Peripheriegeräte umfassen. In mindestens einem Ausführungsbeispiel kann das Vektorverarbeitungs-Subsystem als primäre PVA-Verarbeitungseinheit arbeiten und eine Vektorverarbeitungseinheit („VPU“), einen Befehlscache und/oder einen Vektorspeicher (z.B. „VMEM“) umfassen. In mindestens einem Ausführungsbeispiel kann der VPU-Kern einen digitalen Signalprozessor umfassen, wie z.B. einen Single-Instruction, Multiple Data („SIMD“), Very Long Instruction Word („VLIW“) digitalen Signalprozessor. In mindestens einem Ausführungsbeispiel kann eine Kombination aus SIMD und VLIW den Durchsatz und die Geschwindigkeit verbessern.In at least one embodiment, vector processors may be programmable processors that may be designed to efficiently and flexibly perform programming of image processing algorithms and to provide signal processing capabilities. In at least one embodiment, PVA may include a PVA core and two vector processing subsystem partitions. In at least one embodiment, the PVA core may include a processor subsystem, DMA engine(s) (eg, two DMA engines), and/or other peripherals. In at least one embodiment, the vector processing subsystem may operate as a primary PVA processing unit and may include a vector processing unit ("VPU"), an instruction cache, and/or vector memory (eg, "VMEM"). In at least one embodiment, the VPU core may include a digital signal processor, such as a Single-Instruction, Multiple Data ("SIMD"), Very Long Instruction Word ("VLIW") digital signal processor. In at least one embodiment, a combination of SIMD and VLIW can improve throughput and speed.

In mindestens einem Ausführungsbeispiel kann jeder der Vektorprozessoren einen Befehlscache umfassen und an einen dedizierten Speicher gekoppelt sein. Infolgedessen kann in mindestens einem Ausführungsbeispiel jeder Vektorprozessor so konfiguriert sein, dass er unabhängig von anderen Vektorprozessoren arbeitet. In mindestens einem Ausführungsbeispiel können Vektorprozessoren, die in einem bestimmten PVA enthalten sind, so konfiguriert werden, dass sie Datenparallelität verwenden. Beispielsweise können in mindestens einem Ausführungsbeispiel mehrere Vektorprozessoren, die in einer einzigen PVA enthalten sind, denselben Algorithmus für die Computerbilddarstellung ausführen, jedoch in verschiedenen Bereichen eines Bildes. In mindestens einem Ausführungsbeispiel können Vektorprozessoren, die in einer bestimmten PVA enthalten sind, gleichzeitig verschiedene Algorithmen für die Computervision auf demselben Bild ausführen oder sogar verschiedene Algorithmen auf sequentiellen Bildern oder Teilen eines Bildes ausführen. In mindestens einem Ausführungsbeispiel können u.a. eine beliebige Anzahl von PVAs in einem Hardware-Beschleunigungscluster und eine beliebige Anzahl von Vektorprozessoren in jedem der PVAs enthalten sein. In mindestens einem Ausführungsbeispiel können PVA(s) zusätzlichen ECC-Speicher (Error Correction Code) umfassen, um die Gesamtsystemsicherheit zu verbessern.In at least one embodiment, each of the vector processors may include an instruction cache and be coupled to a dedicated memory. As a result, in at least one embodiment, each vector processor can be configured to operate independently of other vector processors. In at least one embodiment, vector processors included in a particular PVA can be configured to use data parallelism. For example, in at least one embodiment, multiple vector processors contained within a single PVA may execute the same computer image rendering algorithm, but in different regions of an image. In at least one embodiment, vector processors included in a given PVA may simultaneously execute different computer vision algorithms on the same image, or even execute different algorithms on sequential images or portions of an image. In at least one embodiment, any number of PVAs may be included in a hardware acceleration cluster and any number of vector processors may be included in each of the PVAs, among others. In at least one embodiment, PVA(s) may include additional ECC (Error Correction Code) memory to improve overall system security.

In mindestens einem Ausführungsbeispiel können der/die Beschleuniger 1814 (z.B. Hardware-Beschleunigungscluster) ein Computervisionsnetzwerk auf einem Chip und einen statischen Direktzugriffsspeicher (engl. static random-access memory, „SRAM“) umfassen, um einen SRAM mit hoher Bandbreite und niedriger Latenz für den/die Beschleuniger 1814 bereitzustellen. In mindestens einem Ausführungsbeispiel kann der On-Chip-Speicher mindestens 4 MB SRAM umfassen, das beispielsweise und ohne Einschränkung aus acht frei konfigurierbaren (engl. field-configurable) Speicherblöcken besteht, auf die sowohl durch PVA als auch durch DLA zugegriffen werden kann. In mindestens einem Ausführungsbeispiel kann jedes Paar von Speicherblöcken eine Advanced Peripheral Bus („APB“)-Schnittstelle, eine Schaltungsanordnung zur Konfiguration, eine Steuerung und einen Multiplexer umfassen. In mindestens einem Ausführungsbeispiel kann jede Art von Speicher verwendet werden. In mindestens einem Ausführungsbeispiel können PVA und DLA über ein Grundgerüst auf Speicher zugreifen, das PVA und DLA Hochgeschwindigkeitszugriff auf Speicher ermöglicht. In mindestens einem Ausführungsbeispiel kann der Backbone ein Computer Vision Network on-chip umfassen, das PVA und DLA mit dem Speicher verbindet (z.B. unter Verwendung von APB).In at least one embodiment, the accelerator(s) 1814 (e.g., hardware acceleration cluster) may include an on-chip computer vision network and static random-access memory (“SRAM”) to provide high-bandwidth, low-latency SRAM for to provide the accelerator(s) 1814. In at least one embodiment, the on-chip memory may include at least 4 MB of SRAM consisting of, for example and without limitation, eight blocks of field-configurable memory that are accessible by both PVA and DLA. In at least one embodiment, each pair of memory blocks may include an Advanced Peripheral Bus ("APB") interface, configuration circuitry, a controller, and a multiplexer. In at least one embodiment, any type of memory can be used. In at least one embodiment, PVA and DLA can access memory through a framework that allows PVA and DLA high-speed memory access. In at least one embodiment, the backbone may include an on-chip computer vision network that connects PVA and DLA to storage (e.g., using APB).

In mindestens einem Ausführungsbeispiel kann ein On-Chip-Computervisionsnetzwerk eine Schnittstelle umfassen, die vor der Übertragung von Steuersignalen/Adressen/Daten bestimmt, dass sowohl PVA als auch DLA fertige und gültige Signale liefern. In mindestens einem Ausführungsbeispiel kann eine Schnittstelle separate Phasen und separate Kanäle für die Übertragung von Steuersignalen/Adressen/Daten sowie Burst-Kommunikationen für die kontinuierliche Datenübertragung bereitstellen. In mindestens einem Ausführungsbeispiel kann eine Schnittstelle den Normen der Internationalen Standardisierungsorganisation („ISO“) 26262 oder der Internationalen Elektrotechnischen Kommission („IEC“) 61508 entsprechen, obwohl auch andere Normen und Protokolle verwendet werden können.In at least one embodiment, an on-chip computer vision network may include an interface that determines that both PVA and DLA provide ready and valid signals prior to transmission of control signals/address/data. In at least one embodiment, an interface may provide separate phases and separate channels for control signal/address/data transmission and burst communications for continuous data transmission. In at least one embodiment, an interface may conform to International Standardization Organization ("ISO") 26262 or International Electrotechnical Commission ("IEC") 61508 standards, although other standards and protocols may also be used.

In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 1804 einen Hardware-Beschleuniger zur Echtzeit-Strahlenverfolgung (engl. ray-tracing) umfassen. In mindestens einem Ausführungsbeispiel kann ein Hardware-Beschleuniger zur schnellen und effizienten Bestimmung von Positionen und Ausdehnungen von Objekten (z.B. innerhalb eines Modells der realen Welt), zur Erzeugung von Echtzeit-Visualisierungssimulationen, zur Interpretation von RADAR-Signalen, zur Synthese und/oder Analyse der Schallausbreitung, zur Simulation von SONAR-Systemen, zu einer allgemeinen Wellenausbreitungssimulation, zum Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder anderer Funktionen und/oder für andere Zwecke verwendet werden.In at least one embodiment, one or more of the SoC(s) 1804 may include a hardware accelerator for real-time ray tracing. In at least one embodiment, a hardware accelerator can be used to quickly and efficiently determine positions and extents of objects (e.g., within a real-world model), generate real-time visualization simulations, interpret RADAR signals, synthesize, and/or analyze of sound propagation, for simulating SONAR systems, for a general wave propagation simulation, for comparison with LIDAR data for the purpose of localization and/or other functions and/or for other purposes.

In mindestens einem Ausführungsbeispiel haben der/die Beschleuniger 1814 (z.B. Hardware-Beschleuniger-Cluster) ein breites Anwendungsfeld für autonomes Fahren. In mindestens einem Ausführungsbeispiel kann PVA ein programmierbarer Visionsbeschleuniger sein, der für wichtige Verarbeitungsstufen in ADAS und autonomen Fahrzeugen verwendet werden kann. In mindestens einem Ausführungsbeispiel sind die Fähigkeiten von PVA gut geeignet für algorithmische Bereiche, die eine vorhersagbare Verarbeitung bei niedriger Leistung und niedriger Latenz erfordern. Mit anderen Worten, die PVA ist bei halb- oder dichten regelmäßigen Berechnungen auch bei kleinen Datensätzen, die vorhersagbare Laufzeiten mit geringer Latenz und niedriger Leistung benötigen, gut einsetzbar. In mindestens einem Ausführungsbeispiel sind PVAs für autonome Fahrzeuge, wie z.B. Fahrzeug 1800, so ausgelegt, dass sie klassische Algorithmen für die computergestützte Vision ausführen können, da sie effizient bei der Objekterkennung sind und mit ganzzahliger Mathematik arbeiten.In at least one embodiment, the accelerator(s) 1814 (eg, hardware accelerator cluster) have a wide range of applications for autonomous driving. In at least one embodiment, PVA can be a programmable vision accelerator that can be used for key processing stages in ADAS and autonomous vehicles. In at least one embodiment, the capabilities of PVA are well suited to algorithmic domains that require predictable, low-performance, low-latency processing. In other words, the PVA performs well in semi- or densely regular computations even on small data sets that require predictable, low-latency, low-performance runtimes. In at least one embodiment, PVAs for autonomous vehicles, such as vehicle 1800, are designed to execute classical computer vision algorithms because they are efficient at object recognition and use integer mathematics.

Zum Beispiel wird gemäß mindestens einem Ausführungsbeispiel der Technologie PVA zur Durchführung von Computer-Stereo-Vision verwendet. In mindestens einem Ausführungsbeispiel kann in einigen Beispielen ein auf semi-globalem Matching basierender Algorithmus verwendet werden, obwohl dies keine Einschränkung darstellen soll. In mindestens einem Ausführungsbeispiel verwenden Anwendungen für das autonome Fahren der Stufe 3-5 Bewegungsabschätzungen/Stereo-Matching während des Betriebs (engl. on-the-fly) (z.B. Struktur aus Bewegung, Fußgängererkennung, Fahrspurerkennung usw.). In mindestens einem Ausführungsbeispiel kann die PVA bei Eingaben von zwei monokularen Kameras eine Computer-Stereo-Visions-Funktion ausführen.For example, according to at least one embodiment of the technology, PVA is used to perform computer stereo vision. In at least one embodiment, although not intended to be limiting, an algorithm based on semi-global matching may be used in some examples. In at least one embodiment, Level 3-5 autonomous driving applications use on-the-fly motion estimation/stereo matching (e.g., texture from motion, pedestrian detection, lane detection, etc.). In at least one embodiment, the PVA can perform a computer stereo vision function with inputs from two monocular cameras.

In mindestens einem Ausführungsbeispiel kann PVA zur Durchführung eines dichten optischen Flusses verwendet werden. In mindestens einem Ausführungsbeispiel könnte PVA beispielsweise unbearbeitete RADAR-Daten verarbeiten (z.B. unter Verwendung einer 4D-Fast-Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. In mindestens einem Ausführungsbeispiel wird PVA für die Verarbeitung einer Laufzeit-Tiefe verwendet, indem z.B. unbearbeitete Laufzeitdaten verarbeitet werden, um verarbeitete Laufzeitdaten bereitzustellen.In at least one embodiment, PVA may be used to perform dense optical flow. For example, in at least one embodiment, PVA could process raw RADAR data (e.g., using a 4D Fast Fourier Transform) to provide processed RADAR data. In at least one embodiment, PVA is used for runtime depth processing, such as processing raw runtime data to provide processed runtime data.

In mindestens einem Ausführungsbeispiel kann DLA dazu verwendet werden, eine beliebige Art von Netzwerk zu betreiben, um Kontrolle und Fahrsicherheit zu verbessern, beispielsweise und ohne Einschränkung ein neuronales Netzwerk, das für jede Objekterkennung ein Maß an Konfidenz ausgibt. In mindestens einem Ausführungsbeispiel kann Konfidenz als Wahrscheinlichkeit repräsentiert oder interpretiert werden oder als Bereitstellung eines relativen „Gewichts“ jeder Detektion im Vergleich zu anderen Detektionen. In mindestens einem Ausführungsbeispiel ermöglicht die Konfidenz einem System, weitere Entscheidungen darüber zu treffen, welche Entdeckungen als echte positive Entdeckungen und nicht als falsch positive Entdeckungen angesehen werden sollten. Beispielsweise kann ein System in mindestens einem Ausführungsbeispiel einen Schwellenwert für die Konfidenz festlegen und nur solche Entdeckungen als echte positive Entdeckungen betrachten, die den Schwellenwert überschreiten. In einem Ausführungsbeispiel, in dem ein automatisches Notbremssystem („AEB“) verwendet wird, würden falsch-positive Erkennungen bewirken, dass das Fahrzeug automatisch eine Notbremsung durchführt, was offensichtlich unerwünscht ist. In mindestens einem Ausführungsbeispiel können sehr zuverlässige Erkennungen als Auslöser für AEB in Betracht gezogen werden. In mindestens einem Ausführungsbeispiel kann DLA ein neuronales Netz zur Regression des Konfidenzwertes betreiben. In mindestens einem Ausführungsbeispiel kann das neuronale Netz als Eingabe mindestens eine Teilmenge von Parametern verwenden, wie z.B. die Abmessungen der Bounding Box, die (z.B. von einem anderen Teilsystem) erhaltene Schätzung der Bodenfläche, die Ausgabe von IMU-Sensor(en) 1866, die mit der Orientierung des Fahrzeugs 1800 korreliert, die Entfernung, 3D-Lageabschätzungen des Objekts, die von dem neuronalen Netz und/oder anderen Sensoren (z.B. LIDAR-Sensor(en) 1864 oder RADAR-Sensor(en) 1860) erhalten wurden, und andere.In at least one embodiment, DLA may be used to operate any type of network to enhance control and driving safety, such as, without limitation, a neural network that outputs a confidence level for each object detection. In at least one embodiment, confidence may be represented or interpreted as a probability or as providing a relative "weight" of each detection compared to other detections. In at least one embodiment, the confidence allows a system to make further decisions about which discoveries should be considered true positive discoveries and not false positive discoveries. For example, in at least one embodiment, a system may set a confidence threshold and only consider discoveries that exceed the threshold to be true positive discoveries. In an embodiment using an automatic emergency braking ("AEB") system, false positive detections would cause the vehicle to automatically perform emergency braking, which is obviously undesirable. In at least one embodiment, very reliable detections can be considered as triggers for AEB. In at least one embodiment, DLA may operate a neural network to regress the confidence value. In at least one embodiment, the neural network may use as input at least a subset of parameters, such as the dimensions of the bounding box, the floor area estimate obtained (e.g., from another subsystem), the output of IMU sensor(s) 1866, the correlated to vehicle 1800 orientation, range, 3D pose estimates of the object obtained from the neural network and/or other sensors (e.g., LIDAR sensor(s) 1864 or RADAR sensor(s) 1860), and others .

In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 1804 den/die Datenspeicher 1816 (z.B. Speicher) umfassen. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 1816 ein On-Chip-Speicher von SoC(s) 1804 sein, der neuronale Netze speichern kann, die auf GPU(s) 1808 und/oder DLA ausgeführt werden sollen. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 1816 groß genug sein, um aus Gründen der Redundanz und Sicherheit mehrere Instanzen von neuronalen Netzwerken zu speichern. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 1812 L2- oder L3-Cache(s) umfassen.In at least one embodiment, one or more of the SoC(s) 1804 may include the data storage(s) 1816 (e.g., memory). In at least one embodiment, data store(s) 1816 may be on-chip memory of SoC(s) 1804 that may store neural networks to be executed on GPU(s) 1808 and/or DLA. In at least one embodiment, data store(s) 1816 may be large enough to store multiple instances of neural networks for redundancy and security. In at least one embodiment, data store(s) 1812 may include L2 or L3 cache(s).

In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 1804 eine beliebige Anzahl von Prozessor(en) 1810 (z.B. eingebettete Prozessoren) umfassen. Der/die Prozessor(en) 1810 kann/können einen Boot- und Energieverwaltungsprozessor umfassen, bei dem es sich um einen dedizierten Prozessor und ein Subsystem handeln kann, die die Bootleistung und -verwaltungsfunktionen und die damit verbundene Sicherheitsdurchsetzung übernehmen. In mindestens einem Ausführungsbeispiel kann der Boot- und Energieverwaltungsprozessor Teil der Boot-Sequenz des SoC(s) 1804 sein und zur Laufzeit Energieverwaltungsdienste bereitstellen. In mindestens einem Ausführungsbeispiel kann der Bootleistungs- und -verwaltungsprozessor Takt- und Spannungsprogrammierung, Unterstützung bei Zustandsübergängen im System mit geringerem Stromverbrauch, Verwaltung der Thermik und Temperatursensoren der SoC(s) 1804 und/oder Verwaltung der Stromversorgungszustände der SoC(s) 1804 bereitstellen. In mindestens einem Ausführungsbeispiel kann jeder Temperatursensor als Ringoszillator implementiert werden, dessen Ausgangsfrequenz proportional zur Temperatur ist, und SoC(s) 1804 kann/können Ringoszillatoren verwenden, um Temperaturen von CPU(s) 1806, GPU(s) 1808 und/oder Beschleuniger(n) 1814 zu erfassen. Wenn in mindestens einem Ausführungsbeispiel festgestellt wird, dass die Temperaturen einen Schwellenwert überschreiten, dann kann der Boot- und Leistungsverwaltungsprozessor in eine Temperaturfehlerroutine eintreten und den (die) SoC(s) 1804 in einen Zustand geringerer Leistung versetzen und/oder das Fahrzeug 1800 in einen sicheren Stopp-Modus versetzen (z.B. das Fahrzeug 1800 in einen sicheren Stopp-Modus bringen).In at least one embodiment, one or more of the SoC(s) 1804 may include any number of processor(s) 1810 (eg, embedded processors). The processor(s) 1810 may include a boot and power management processor, which may be a dedicated one processor and a subsystem that handles boot performance and management functions and associated security enforcement. In at least one embodiment, the boot and power management processor may be part of the boot sequence of the SoC(s) 1804 and provide power management services at runtime. In at least one embodiment, the boot power and management processor may provide clock and voltage programming, support for state transitions in the system with lower power consumption, management of thermal and temperature sensors of the SoC(s) 1804, and/or management of the power states of the SoC(s) 1804. In at least one embodiment, each temperature sensor may be implemented as a ring oscillator whose output frequency is proportional to temperature, and SoC(s) 1804 may use ring oscillators to measure CPU(s) 1806, GPU(s) 1808, and/or accelerator(s) temperatures. n) 1814 to record. In at least one embodiment, if temperatures are determined to exceed a threshold, then the boot and power management processor may enter a temperature fault routine and place the SoC(s) 1804 in a lower performance state and/or the vehicle 1800 in a lower power state place the vehicle 1800 in a safe stop mode (e.g., place the vehicle 1800 in a safe stop mode).

In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 1810 weiter einen Satz eingebetteter Prozessoren umfassen, die als Audioverarbeitungs-Engine dienen können. In mindestens einem Ausführungsbeispiel kann eine Audioverarbeitungs-Engine ein Audio-Subsystem sein, das volle Hardware-Unterstützung für Mehrkanal-Audio über mehrere Schnittstellen und eine breite und flexible Palette von Audio-E/A-Schnittstellen ermöglicht. In mindestens einem Ausführungsbeispiel ist die Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.In at least one embodiment, processor(s) 1810 may further include a set of embedded processors that may serve as an audio processing engine. In at least one embodiment, an audio processing engine may be an audio subsystem that enables full hardware support for multi-channel audio across multiple interfaces and a wide and flexible range of audio I/O interfaces. In at least one embodiment, the audio processing engine is a dedicated processor core having a digital signal processor with dedicated RAM.

In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 1810 weiter eine immer eingeschaltete Prozessor-Engine umfassen, die die notwendigen Hardware-Features zur Unterstützung der Verwaltung von Sensoren mit geringer Leistung und von Aufweck-Anwendungsfällen bereitstellen kann. In mindestens einem Ausführungsbeispiel kann die immer eingeschaltete Prozessor-Engine ohne Einschränkung einen Prozessorkern, einen eng gekoppelten RAM-Speicher, unterstützende Peripheriegeräte (z.B. Timer und Interrupt-Steuerung), verschiedene E/A-Steuerungs-Peripheriegeräte und Routing-Logik umfassen.In at least one embodiment, processor(s) 1810 may further include an always-on processor engine that may provide the necessary hardware features to support management of low-power sensors and wake-up use cases. In at least one embodiment, the always-on processor engine may include, without limitation, a processor core, tightly coupled RAM memory, supporting peripherals (e.g., timers and interrupt controllers), various I/O control peripherals, and routing logic.

In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 1810 weiter eine Sicherheits-Cluster-Engine umfassen, die, ohne Einschränkung, ein dediziertes Prozessor-Subsystem zur Handhabung der Sicherheitsverwaltung für Automobilanwendungen umfasst. In mindestens einem Ausführungsbeispiel kann die Sicherheits-Cluster-Engine ohne Einschränkung zwei oder mehr Prozessorkerne, einen eng gekoppelten RAM-Speicher, unterstützende Peripheriegeräte (z.B. Timer, eine Interrupt-Steuerung usw.) und/oder Routing-Logik umfassen. In einem Sicherheitsmodus können zwei oder mehr Kerne in mindestens einem Ausführungsbeispiel in einem Lockstep-Modus arbeiten und als ein einziger Kern mit Vergleichslogik zur Erkennung von Unterschieden zwischen ihren Operationen fungieren. In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 1810 weiter eine Echtzeit-Kamera-Engine umfassen, die unter anderem ein dediziertes Prozessor-Subsystem zur Handhabung der Echtzeit-Kameraverwaltung umfassen kann/können. In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 1810 weiter einen Signalprozessor mit hohem Dynamikbereich umfassen, der unter anderem einen Bildsignalprozessor umfassen kann, bei dem es sich um eine Hardware-Engine handelt, die Teil der Kameraverarbeitungs-Pipeline ist.In at least one embodiment, processor(s) 1810 may further include a security cluster engine that includes, without limitation, a dedicated processor subsystem for handling security management for automotive applications. In at least one embodiment, the security cluster engine may include, without limitation, two or more processor cores, tightly coupled RAM memory, supporting peripherals (e.g., timers, an interrupt controller, etc.), and/or routing logic. In a security mode, in at least one embodiment, two or more cores may operate in a lockstep mode and act as a single core with comparison logic to detect differences between their operations. In at least one embodiment, the processor(s) 1810 may further include a real-time camera engine, which may include, among other things, a dedicated processor subsystem for handling real-time camera management. In at least one embodiment, the processor(s) 1810 may further include a high dynamic range signal processor, which may include, among other things, an image signal processor, which is a hardware engine that is part of the camera processing pipeline.

In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 1810 einen Videobildkompositor umfassen, bei dem es sich um einen Verarbeitungsblock handeln kann (z.B. auf einem Mikroprozessor implementiert), der Videonachbearbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um das endgültige Bild für das Wiedergabefenster zu erzeugen. In mindestens einem Ausführungsbeispiel kann der Videobildkompositor eine Korrektur der Linsenverzerrung an der (den) Weitwinkelkamera(s) 1870, der (den) Surround-Kamera(s) 1874 und/oder dem (den) Sensor(en) der Überwachungskamera(s) in der Kabine durchführen. Gemäß mindestens einem Ausführungsbeispiel werden kabineninterne Überwachungskamerasensoren vorzugsweise durch ein neuronales Netzwerk überwacht, das auf einer anderen Instanz von SoC 1804 läuft und so konfiguriert ist, dass es Ereignisse in der Kabine identifiziert und entsprechend reagiert. In mindestens einem Ausführungsbeispiel kann ein System in der Kabine ohne Einschränkung Lippenlesen durchführen, um den Mobilfunkdienst zu aktivieren und einen Telefonanruf zu tätigen, E-Mails zu diktieren, den Bestimmungsort des Fahrzeugs zu ändern, das Infotainmentsystem und die Einstellungen des Fahrzeugs zu aktivieren oder zu ändern oder sprachaktiviertes Websurfen bereitzustellen. In mindestens einem Ausführungsbeispiel sind bestimmte Funktionen für den Fahrer verfügbar, wenn das Fahrzeug in einem autonomen Modus betrieben wird, und werden andernfalls deaktiviert.In at least one embodiment, the processor(s) 1810 may include a video image compositor, which may be a processing block (e.g., implemented on a microprocessor) that implements video post-processing functions required by a video playback application to produce the final to generate an image for the playback window. In at least one embodiment, the video image compositor may perform lens distortion correction on the wide-angle camera(s) 1870, the surround camera(s) 1874, and/or the sensor(s) of the surveillance camera(s) in perform in the cabin. According to at least one embodiment, in-cabin security camera sensors are preferably monitored by a neural network running on another instance of SoC 1804 and configured to identify events in the cabin and respond accordingly. In at least one embodiment, an in-cabin system may, without limitation, perform lip reading to activate cellular service and make a phone call, dictate emails, change the vehicle's destination, activate or close the vehicle's infotainment system and settings change or provide voice-activated web surfing. In at least one embodiment, certain functions are for the driver available when the vehicle is operating in an autonomous mode and are disabled otherwise.

In mindestens einem Ausführungsbeispiel kann der Videobildkompositor eine verbesserte zeitliche Rauschunterdrückung sowohl für die räumliche als auch für die zeitliche Rauschunterdrückung umfassen. Zum Beispiel kann in mindestens einem Ausführungsbeispiel, in dem Bewegung in einem Video auftritt, die Rauschunterdrückung räumliche Informationen entsprechend gewichten, wodurch das Gewicht der von benachbarten Frames bereitgestellten Informationen verringert wird. In mindestens einem Ausführungsbeispiel, in dem ein Bild oder ein Teil eines Bildes keine Bewegung umfasst, kann die vom Videobildkompositor durchgeführte zeitliche Rauschunterdrückung Informationen aus dem vorherigen Bild verwenden, um das Rauschen im aktuellen Bild zu reduzieren.In at least one embodiment, the video image compositor may include improved temporal denoising for both spatial and temporal denoising. For example, in at least one embodiment where motion occurs in a video, noise reduction may weight spatial information accordingly, thereby reducing the weight of information provided by neighboring frames. In at least one embodiment where an image or portion of an image does not include motion, the temporal noise reduction performed by the video image compositor may use information from the previous image to reduce noise in the current image.

In mindestens einem Ausführungsbeispiel kann der Videobildkompositor auch so konfiguriert sein, dass er eine Stereoentzerrung auf den Einzelbildern der eingegebenen Stereolinsen durchführt. In mindestens einem Ausführungsbeispiel kann der Videobildkompositor weiter für die Komposition von Benutzeroberflächen verwendet werden, wenn der Desktop des Betriebssystems verwendet wird und die GPU(s) 1808 nicht erforderlich ist/sind, um kontinuierlich neue Oberflächen zu rendern. In mindestens einem Ausführungsbeispiel kann der Videobildkompositor unter Verwendung des Videobildkompositors zur Entlastung des/der Grafikprozessor(en) 1808 verwendet werden, wenn der/die Grafikprozessor(en) 1808 eingeschaltet ist/sind und aktiv 3D-Rendering durchführt/durchführen, um die Leistung und Reaktionsfähigkeit zu verbessern.In at least one embodiment, the video image compositor may also be configured to perform stereo equalization on the input stereo lens frames. In at least one embodiment, the video image compositor may be further used for user interface composition when the operating system desktop is used and the GPU(s) 1808 is/are not required to continuously render new interfaces. In at least one embodiment, the video image compositor may be used using the video image compositor to offload the graphics processor(s) 1808 when the graphics processor(s) 1808 is/are powered on and actively performing 3D rendering to improve performance and improve responsiveness.

In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 1804 weiter eine serielle MIPI-Schnittstelle (engl. Mobile Industry Processor Interface) für Kameras zum Empfang von Video und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingangsblock umfassen, der für Kamera- und zugehörige Pixeleingabefunktionen verwendet werden kann. In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 1804 weiter eine(n) Ein-/Ausgabesteuerung(en) umfassen, die durch Software gesteuert und zum Empfang von E/A-Signalen verwendet werden kann/können, die nicht für eine bestimmte Rolle vorgesehen sind.In at least one embodiment, one or more SoC(s) 1804 may further comprise a camera Mobile Industry Processor Interface (MIPI) serial interface for receiving video and input from cameras, a high-speed interface, and/or a video input block configured for camera - and associated pixel input functions can be used. In at least one embodiment, one or more SoC(s) 1804 may further include an input/output controller(s) that may be controlled by software and used to receive I/O signals other than for a specific roles are provided.

In mindestens einem Ausführungsbeispiel können einer oder mehrere der SoC(s) 1804 weiter eine breite Auswahl an Peripherieschnittstellen umfassen, um die Kommunikation mit Peripheriegeräten, Audio-Codierern/Decodierern („Codecs“), Energieverwaltung und/oder anderen Geräten zu ermöglichen. SoC(s) 1804 kann/können verwendet werden, um Daten von Kameras (z.B. verbunden über Gigabit Multimedia Serial Link und Ethernet), Sensoren (z.B. LIDAR-Sensor(en) 1864, RADAR-Sensor(en) 1860 usw., die über Ethernet verbunden sein können), Daten von Bus 1802 (z.B. Fahrzeuggeschwindigkeit 1800, Lenkradposition usw.), Daten von GNSS-Sensor(en) 1858 (z.B. verbunden über Ethernet oder CAN-Bus) usw. zu verarbeiten. In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 1804 weiter dedizierte Hochleistungs-Massenspeichersteuerungen umfassen, die ihre eigenen DMA-Engines enthalten können und die verwendet werden können, um die CPU(s) 1806 von Routineaufgaben der Datenverwaltung zu entlasten.In at least one embodiment, one or more of the SoC(s) 1804 may further include a wide range of peripheral interfaces to enable communication with peripherals, audio encoders/decoders ("codecs"), power management, and/or other devices. SoC(s) 1804 can be used to collect data from cameras (e.g. connected via Gigabit Multimedia Serial Link and Ethernet), sensors (e.g. LIDAR sensor(s) 1864, RADAR sensor(s) 1860 etc. connected via Ethernet may be connected), data from bus 1802 (e.g., vehicle speed 1800, steering wheel position, etc.), data from GNSS sensor(s) 1858 (e.g., connected via Ethernet or CAN bus), etc. In at least one embodiment, one or more SoC(s) 1804 may further include dedicated high-performance mass storage controllers, which may contain their own DMA engines, and which may be used to offload the CPU(s) 1806 from routine data management tasks.

In mindestens einem Ausführungsbeispiel kann/können SoC(s) 1804 eine End-to-End-Plattform mit einer flexiblen Architektur sein, die die Automatisierungsebenen 3-5 umfasst und damit eine umfassende Architektur der funktionalen Sicherheit bereitstellt, die Computer Vision und ADAS-Techniken für Diversität und Redundanz nutzt und effizient einsetzt, eine Plattform für einen flexiblen, zuverlässigen Antriebssoftware-Stack zusammen mit Deep Learning-Tools bietet. In mindestens einem Ausführungsbeispiel können SoC(s) 1804 schneller, zuverlässiger und sogar energie- und platzsparender als konventionelle Systeme sein. Zum Beispiel kann/können in mindestens einem Ausführungsbeispiel der/die Beschleuniger 1814 in Kombination mit CPU(s) 1806, GPU(s) 1808 und Datenspeicher(n) 1816 eine schnelle, effiziente Plattform für autonome Fahrzeuge der Stufe 3-5 bereitstellen.In at least one embodiment, SoC(s) 1804 may be an end-to-end platform with a flexible architecture that includes automation levels 3-5, thereby providing a comprehensive functional safety architecture that includes computer vision and ADAS techniques for diversity and redundancy, provides a platform for a flexible, reliable drive software stack together with deep learning tools. In at least one embodiment, SoC(s) 1804 may be faster, more reliable, and even more power and space efficient than conventional systems. For example, in at least one embodiment, the accelerator(s) 1814 in combination with CPU(s) 1806, GPU(s) 1808, and memory(s) 1816 can provide a fast, efficient platform for level 3-5 autonomous vehicles.

In mindestens einem Ausführungsbeispiel können Algorithmen für computergestützte Vision auf CPUs ausgeführt werden, die unter Verwendung einer höheren Programmiersprache, wie z.B. der Programmiersprache C, konfiguriert werden können, um eine Vielzahl von Verarbeitungsalgorithmen für eine Vielzahl von visuellen Daten auszuführen. In mindestens einem Ausführungsbeispiel sind CPUs jedoch oft nicht in der Lage, die Leistungsanforderungen vieler Anwendungen der computergestützten Vision zu erfüllen, wie z.B. diejenigen, die mit der Laufzeit und dem Stromverbrauch zusammenhängen. In mindestens einem Ausführungsbeispiel sind viele CPUs nicht in der Lage, komplexe Objekterkennungsalgorithmen in Echtzeit auszuführen, die in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Stufe 3-5 verwendet wird.In at least one embodiment, computational vision algorithms may execute on CPUs that may be configured using a high level programming language, such as the C programming language, to perform a variety of processing algorithms on a variety of visual data. However, in at least one embodiment, CPUs are often unable to meet the performance requirements of many computer vision applications, such as those related to runtime and power consumption. In at least one embodiment, many CPUs are unable to execute complex real-time object detection algorithms used in in-vehicle ADAS applications and in practical level 3-5 autonomous vehicles.

Die hier beschriebenen Ausführungsbeispiele ermöglichen es, mehrere neuronale Netze gleichzeitig und/oder sequentiell auszuführen und die Ergebnisse miteinander zu kombinieren, um eine autonome Funktionalität des autonomen Fahrens der Stufe 3-5 zu ermöglichen. Beispielsweise kann in mindestens einem Ausführungsbeispiel ein CNN, der auf DLA oder diskreter GPU (z.B. GPU(s) 1820) ausgeführt wird, Text- und Worterkennung umfassen, so dass ein Supercomputer Verkehrszeichen lesen und verstehen kann, auch solche Zeichen, für die das neuronale Netz nicht speziell trainiert wurde. In mindestens einem Ausführungsbeispiel kann DLA ferner ein neuronales Netz umfassen, das in der Lage ist, Zeichen zu identifizieren, zu interpretieren und ein semantisches Verständnis von Zeichen zu liefern und dieses semantische Verständnis an Pfadplanungsmodule weiterzugeben, die auf einem CPU-Komplex laufen.The exemplary embodiments described here make it possible to execute multiple neural networks simultaneously and/or sequentially and to combine the results with one another to enable level 3-5 autonomous functionality of autonomous driving. For example, in at least one embodiment, a CNN running on DLA or discrete GPU (e.g., GPU(s) 1820) may include text and word recognition so that a supercomputer can read and understand traffic signs, including signs for which the neural network has not been specially trained. In at least one embodiment, DLA may further include a neural network capable of identifying, interpreting, and providing a semantic understanding of characters, and propagating this semantic understanding to path planning engines running on a CPU complex.

In mindestens einem Ausführungsbeispiel können mehrere neuronale Netze gleichzeitig betrieben werden, wie beim Fahren auf Stufe 3, 4 oder 5. Beispielsweise kann in mindestens einem Ausführungsbeispiel ein Warnschild mit der Aufschrift „Vorsicht: Blinklicht zeigt Vereisung an“ zusammen mit einem elektrischen Licht von mehreren neuronalen Netzen unabhängig oder gemeinsam interpretiert werden. In mindestens einem Ausführungsbeispiel kann das Schild selbst durch ein erstes eingesetztes neuronales Netz (z.B. ein trainiertes neuronales Netz) als Verkehrszeichen identifiziert werden, der Text „Blinklichter zeigen Vereisungsbedingungen an“ kann durch ein zweites eingesetztes neuronales Netz interpretiert werden, das die Wegplanungssoftware des Fahrzeugs (die vorzugsweise auf CPU Complex ausgeführt wird) darüber informiert, dass beim Erkennen von Blinklichtern Vereisungsbedingungen vorliegen. In mindestens einem Ausführungsbeispiel kann „Blinklicht“ durch den Betrieb eines dritten eingesetzten neuronalen Netzes über mehrere Einzelbilder identifiziert werden, das die Wegplanungssoftware des Fahrzeugs über das Vorhandensein (oder Fehlen) von Blinklichtern informiert. In mindestens einem Ausführungsbeispiel können alle drei neuronalen Netze gleichzeitig betrieben werden, z.B. innerhalb von DLA und/oder auf GPU(s) 1808.In at least one embodiment, multiple neural networks may be operated simultaneously, such as when driving at level 3, 4, or 5. For example, in at least one embodiment, a warning sign reading "Caution: Flashing Light Indicates Icing" along with an electric light from multiple neural networks Networks can be interpreted independently or together. In at least one embodiment, the sign itself may be identified as a traffic sign by a first deployed neural network (e.g., a trained neural network), the text "Flashing lights indicate icing conditions" may be interpreted by a second deployed neural network that understands the vehicle's path planning software ( preferably running on CPU Complex) that icing conditions are present when flashing lights are detected. In at least one embodiment, "turn signals" may be identified through the operation of a third deployed neural network over multiple frames that informs the vehicle's path planning software of the presence (or absence) of turn signals. In at least one embodiment, all three neural networks may operate concurrently, e.g., within DLA and/or on GPU(s) 1808.

In mindestens einem Ausführungsbeispiel kann ein CNN zur Gesichtserkennung und Fahrzeughalteridentifikation Daten von Kamerasensoren verwenden, um die Anwesenheit eines autorisierten Fahrers und/oder Fahrzeughalters von Fahrzeug 1800 zu identifizieren. In mindestens einem Ausführungsbeispiel kann eine ständig eingeschaltete, sensorverarbeitende Engine verwendet werden, um das Fahrzeug zu entriegeln, wenn sich der Besitzer der Fahrertür nähert und die Lichter einschaltet, und um im Sicherheitsmodus das Fahrzeug zu deaktivieren, wenn der Besitzer das Fahrzeug verlässt. Auf diese Weise sind die SoC(s) 1804 für die Sicherheit gegen Diebstahl und/oder gewaltsame Autoentführung vorgesehen.In at least one embodiment, a face recognition and vehicle owner identification CNN may use data from camera sensors to identify the presence of an authorized driver and/or vehicle owner of vehicle 1800 . In at least one embodiment, an always-on sensor processing engine may be used to unlock the vehicle when the owner approaches the driver's door and turns on the lights, and to disarm the vehicle in security mode when the owner exits the vehicle. In this manner, the SoC(s) 1804 provide security against theft and/or violent car hijacking.

In mindestens einem Ausführungsbeispiel kann der CNN für die Erkennung und Identifizierung von Notfallfahrzeugen die Daten von Mikrofonen 1896 zur Erkennung und Identifizierung von Notfallfahrzeugsirenen verwenden. In mindestens einem Ausführungsbeispiel verwenden die SoC(s) 1804 ein CNN zur Klassifizierung von Umwelt- und Stadtgeräuschen sowie zur Klassifizierung visueller Daten. In mindestens einem Ausführungsbeispiel wird das CNN, das auf DLA läuft, trainiert, um die relative Annäherungsgeschwindigkeit des Einsatzfahrzeugs zu identifizieren (z.B. unter Verwendung des Dopplereffekts). In mindestens einem Ausführungsbeispiel kann das CNN auch trainiert werden, Notfallfahrzeuge zu identifizieren, die spezifisch für den lokalen Bereich sind, in dem das Fahrzeug operiert, wie durch GNSS-Sensor(en) 1858 identifiziert. In mindestens einem Ausführungsbeispiel wird das CNN beim Betrieb in Europa versuchen, europäische Sirenen zu erkennen, und in den Vereinigten Staaten wird das CNN versuchen, nur nordamerikanische Sirenen zu identifizieren. In mindestens einem Ausführungsbeispiel kann ein Steuerprogramm unter Verwendung eines Ultraschallsensors (von Ultraschallsensoren) 1862, sobald ein Notfallfahrzeug erkannt wird, dazu verwendet werden, eine Sicherheitsroutine für das Notfallfahrzeug auszuführen, das Fahrzeug abzubremsen, zur Seite zu fahren, das Fahrzeug zu parken und/oder das Fahrzeug im Leerlauf zu halten, bis das Notfallfahrzeug (die Notfallfahrzeuge) vorbeifährt (fahren).In at least one embodiment, the CNN for emergency vehicle detection and identification may use data from emergency vehicle siren detection and identification microphones 1896 . In at least one embodiment, the SoC(s) 1804 use a CNN to classify environmental and city sounds, as well as to classify visual data. In at least one embodiment, the CNN running on DLA is trained to identify the relative closing speed of the emergency vehicle (e.g., using the Doppler effect). In at least one embodiment, the CNN can also be trained to identify emergency vehicles specific to the local area in which the vehicle is operating, as identified by GNSS sensor(s) 1858 . In at least one embodiment, when operating in Europe, CNN will attempt to identify European sirens and in the United States, CNN will attempt to identify only North American sirens. In at least one embodiment, once an emergency vehicle is detected, a control program using ultrasonic sensor(s) 1862 can be used to perform an emergency vehicle safety routine, brake the vehicle, pull to the side, park the vehicle, and/or to keep the vehicle idling until the emergency vehicle(s) drive(s) past.

In mindestens einem Ausführungsbeispiel kann Fahrzeug 1800 CPU(s) 1818 (z. B. diskrete CPU(s) oder dCPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z. B. PCIe) mit SoC(s) 1804 gekoppelt werden können. In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 1818 beispielsweise einen X86-Prozessor umfassen. CPU(s) 1818 kann/können unter Verwenden beliebiger Funktionen verwendet werden, einschließlich der Arbitrierung potentiell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und SoC(s) 1804 und/oder der Überwachung von Status und Zustand von Steuerung(en) 1836 und/oder einem Infotainment-System auf einem Chip („Infotainment SoC“) 1830, zum Beispiel.In at least one embodiment, vehicle 1800 may include CPU(s) 1818 (e.g., discrete CPU(s) or dCPU(s)) that may be coupled to SoC(s) 1804 via a high-speed interconnect (e.g., PCIe). . For example, in at least one embodiment, the CPU(s) 1818 may comprise an X86 processor. CPU(s) 1818 may be deployed using any functionality, including arbitrating potentially inconsistent results between ADAS sensors and SoC(s) 1804 and/or monitoring status and condition of controller(s) 1836 and/or a Infotainment system on a chip (“Infotainment SoC”) 1830, for example.

In mindestens einem Ausführungsbeispiel kann Fahrzeug 1800 GPU(s) 1820 (z. B. diskrete GPU(s) oder dGPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z. B. NVIDIAs NVLINK) mit SoC(s) 1804 gekoppelt werden können. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1820 zusätzliche Funktionalität künstlicher Intelligenz bereitstellen, z.B. durch Ausführung redundanter und/oder unterschiedlicher neuronaler Netze, und kann/können zum Trainieren und/oder Aktualisieren neuronaler Netze basierend zumindest teilweise auf Eingaben (z.B. Sensordaten) von Sensoren des Fahrzeugs 1800 verwendet werden.In at least one embodiment, vehicle 1800 may include GPU(s) 1820 (e.g., discrete GPU(s) or dGPU(s)) coupled to SoC(s) 1804 via a high-speed interconnect (e.g., NVIDIA's NVLINK). be able. In at least one embodiment, GPU(s) 1820 may provide additional artificial intelligence functionality, eg, by performing redundant and/or different neural networks, and may be used to train and/or update neural networks based at least in part on inputs (eg, sensor data) from vehicle 1800 sensors.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter eine Netzwerkschnittstelle 1824 umfassen, die unter anderem die drahtlose(n) Antenne(n) 1826 umfassen kann (z.B. eine oder mehrere drahtlose Antennen 1826 für verschiedene Kommunikationsprotokolle, wie z.B. eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 1824 verwendet werden, um eine drahtlose Konnektivität über das Internet mit einer Cloud (z.B. mit Server(n) und/oder anderen Netzwerkgeräten), mit anderen Fahrzeugen und/oder mit Rechengeräten (z.B. Client-Geräten von Passagieren) zu ermöglichen. In mindestens einem Ausführungsbeispiel kann zur Kommunikation mit anderen Fahrzeugen eine direkte Verbindung zwischen Fahrzeug 180 und anderen Fahrzeugen und/oder eine indirekte Verbindung (z.B. über Netzwerke und über das Internet) hergestellt werden. In mindestens einem Ausführungsbeispiel können direkte Verbindungen unter Verwendung einer Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung bereitgestellt werden. Eine Fahrzeug-Fahrzeug-Kommunikationsverbindung kann Fahrzeug 1800 Informationen über Fahrzeuge in der Nähe von Fahrzeug 1800 bereitstellen (z.B. Fahrzeuge vor, seitlich und/oder hinter Fahrzeug 1800). In mindestens einem Ausführungsbeispiel kann die vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitsregelungsfunktionalität von Fahrzeug 1800 sein.In at least one embodiment, the vehicle 1800 may further include a network interface 1824, which may include, among other things, the wireless antenna(s) 1826 (e.g., one or more wireless antennas 1826 for various communication protocols, such as a cellular antenna, a Bluetooth antenna etc.). In at least one embodiment, network interface 1824 may be used to provide wireless connectivity over the Internet to a cloud (e.g., to server(s) and/or other network devices), to other vehicles, and/or to computing devices (e.g., passenger client devices). ) to allow. In at least one embodiment, vehicle 180 may connect directly to other vehicles and/or connect indirectly (e.g., via networks and via the Internet) to communicate with other vehicles. In at least one embodiment, direct connections may be provided using a vehicle-to-vehicle communication link. A vehicle-to-vehicle communication link may provide vehicle 1800 with information about vehicles in the vicinity of vehicle 1800 (e.g., vehicles in front, to the side, and/or behind of vehicle 1800). In at least one embodiment, the foregoing functionality may be part of a cooperative adaptive cruise control functionality of vehicle 1800 .

In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 1824 ein SoC umfassen, das Modulations- und Demodulationsfunktionalität bereitstellt und die Steuerung(en) 1836 in die Lage versetzt, über drahtlose Netzwerke zu kommunizieren. In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 1824 ein Hochfrequenz-Frontend für die Aufwärtskonvertierung von Basisband zu Hochfrequenz und die Abwärtskonvertierung von Hochfrequenz zu Basisband umfassen. In mindestens einem Ausführungsbeispiel können Frequenzumsetzungen auf jede technisch geeignete Weise durchgeführt werden. Zum Beispiel können Frequenzumwandlungen durch bekannte Verfahren und/oder unter Verwendung von Super-Heterodyne-Verfahren durchgeführt werden. In mindestens einem Ausführungsbeispiel kann die Hochfrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt werden. In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle drahtlose Funktionalität für die Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere Protokolle für drahtlose Datenübertragung umfassen.In at least one embodiment, network interface 1824 may include an SoC that provides modulation and demodulation functionality and enables controller(s) 1836 to communicate over wireless networks. In at least one embodiment, the network interface 1824 may include a radio frequency front end for baseband to radio frequency upconversion and radio frequency to baseband downconversion. In at least one embodiment, frequency translations can be performed in any technically suitable manner. For example, frequency conversions can be performed by known methods and/or using super-heterodyne methods. In at least one embodiment, the radio frequency front end functionality may be provided by a separate chip. In at least one embodiment, the network interface may include wireless functionality for communication via LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN, and/or other wireless data transmission protocols.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter einen/mehrere Datenspeicher 1828 umfassen, der/die ohne Einschränkung einen Off-Chip-Speicher (z.B. Off-SoC(s) 1804) umfassen kann/können. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 1828 ohne Einschränkung ein oder mehrere Speicherelemente umfassen, darunter RAM, SRAM, dynamischer Direktzugriffsspeicher(engl. Dynamic random-access memory, „DRAM“), Video-RAM (engl. video random-access memory, „VRAM“), Flash, Festplatten und/oder andere Komponenten und/oder Geräte, die mindestens ein Datenbit speichern können.In at least one embodiment, the vehicle 1800 may further include data storage(s) 1828, which may include, without limitation, off-chip memory (e.g., off-SoC(s) 1804). In at least one embodiment, the data memory(s) 1828 may include, without limitation, one or more memory elements including RAM, SRAM, dynamic random-access memory ("DRAM"), video RAM (video random- access memory ("VRAM"), flash, hard drives, and/or other components and/or devices capable of storing at least one bit of data.

In mindestens einem Ausführungsbeispiel kann Fahrzeug 1800 weiter GNSS-Sensor(en) 1858 (z.B. GPS und/oder assistierte GPS-Sensoren) umfassen, um Funktionen der Kartierung, Wahrnehmung, Belegungsrastererstellung und/oder Wegplanung zu unterstützen. In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von GNSS-Sensor(en) 1858 verwendet werden, einschließlich z.B. und ohne Einschränkung eines GPS unter Verwendung eines USB-Anschlusses mit einer Ethernet-zu-Seriell-Brücke (z.B. RS-232).In at least one embodiment, vehicle 1800 may further include GNSS sensor(s) 1858 (e.g., GPS and/or assisted GPS sensors) to support mapping, perception, mapping, and/or path planning functions. In at least one embodiment, any number of GNSS sensor(s) 1858 may be used, including, for example and without limitation, a GPS using a USB port with an Ethernet-to-serial (e.g., RS-232) bridge.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter RADAR-Sensor(en) 1860 umfassen. Der (die) RADAR-Sensor(en) 1860 kann (können) vom Fahrzeug 1800 für die Fahrzeugerfassung über große Entfernungen, auch bei Dunkelheit und/oder schlechten Wetterbedingungen, verwendet werden. In mindestens einem Ausführungsbeispiel können die RADAR-Funktionalitätssicherheitsstufen ASIL B sein. RADAR-Sensor(en) 1860 kann/können CAN und/oder Bus 1802 (z.B. zur Übertragung von Daten, die von RADAR-Sensor(en) 1860 erzeugt wurden) zur Steuerung und zum Zugriff auf Objektverfolgungsdaten verwenden, mit Zugriff auf Ethernet, um in einigen Beispielen auf unbearbeitete Daten zuzugreifen. In mindestens einem Ausführungsbeispiel kann eine Vielzahl von RADAR-Sensortypen verwendet werden. Beispielsweise und ohne Einschränkung können RADAR-Sensor(en) 1860 für die Verwendung von RADAR an der Vorderseite, Rückseite und Seite geeignet sein. In mindestens einem Ausführungsbeispiel sind ein oder mehrere RADAR-Sensor(en) 1860 Puls-Doppler-RADAR-Sensor(en).In at least one embodiment, the vehicle 1800 may further include RADAR sensor(s) 1860 . The RADAR sensor(s) 1860 may be used by the vehicle 1800 for long range vehicle detection, including in darkness and/or poor weather conditions. In at least one embodiment, the RADAR functionality assurance levels may be ASIL B. RADAR sensor(s) 1860 may use CAN and/or bus 1802 (e.g., to transmit data generated by RADAR sensor(s) 1860) for control and access object tracking data, with access to Ethernet to in some examples access raw data. In at least one embodiment, a variety of RADAR sensor types may be used. For example and without limitation, RADAR sensor(s) 1860 may be suitable for use of front, rear, and side RADAR. In at least one embodiment, one or more RADAR sensors 1860 are pulse Doppler RADAR sensors.

In mindestens einem Ausführungsbeispiel kann/können der/die RADAR-Sensor(en) 1860 verschiedene Konfigurationen umfassen, wie z.B. lange Reichweite mit engem Sichtfeld, kurze Reichweite mit weitem Sichtfeld, seitliche Abdeckung der kurzen Reichweite usw. In mindestens einem Ausführungsbeispiel kann das RADAR über große Entfernungen für adaptive Geschwindigkeitsregelungsfunktionalität verwendet werden. In mindestens einem Ausführungsbeispiel können RADAR-Systeme mit großer Reichweite ein breites Sichtfeld bereitstellen, das durch zwei oder mehr unabhängige Scans, z.B. innerhalb einer Reichweite von 250 m, realisiert wird. In mindestens einem Ausführungsbeispiel kann (können) der (die) RADAR-Sensor(en) 1860 bei der Unterscheidung zwischen statischen und sich bewegenden Objekten helfen und kann (können) vom ADAS-System 1838 für Notbremsassistenten und Vorwärtskollisionswarnung verwendet werden. Sensoren 1860(s), die in einem RADAR-System mit großer Reichweite enthalten sind, können ohne Einschränkung monostatisches multimodales RADAR mit mehreren (z.B. sechs oder mehr) festen RADAR-Antennen und einer Hochgeschwindigkeits-CAN- und FlexRay-Schnittstelle umfassen. In mindestens einem Ausführungsbeispiel mit sechs Antennen können vier Zentralantennen ein fokussiertes Strahlungsdiagramm erzeugen, das so ausgelegt ist, dass die Umgebung von 1800 Fahrzeugen bei höheren Geschwindigkeiten mit minimalen Störungen durch den Verkehr auf benachbarten Fahrspuren erfasst wird. In mindestens einem Ausführungsbeispiel können die beiden anderen Antennen das Sichtfeld erweitern, so dass Fahrzeuge, die in die Fahrspur des Fahrzeugs 1800 einfahren oder diese verlassen, schnell erfasst werden können.In at least one embodiment, the RADAR sensor(s) 1860 may include various configurations, such as long range with a narrow field of view, short range with a wide field of view, short range side coverage, etc. In at least one embodiment, the RADAR may over large distances are used for adaptive cruise control functionality. In at least one embodiment, long-range RADAR systems may provide a wide field of view realized by two or more independent scans, eg, within a 250 m range. In at least one embodiment, the RADAR sensor(s) 1860 can help distinguish between static and moving objects and can be used by the ADAS system 1838 for emergency brake assist and forward collision warning. Sensors 1860(s) included in a long-range RADAR system may include, without limitation, monostatic multi-mode RADAR with multiple (eg, six or more) fixed RADAR antennas and a high-speed CAN and FlexRay interface. In at least one six antenna embodiment, four central antennas can produce a focused radiation pattern designed to capture the environment of 1800 vehicles at higher speeds with minimal interference from traffic in adjacent lanes. In at least one embodiment, the other two antennas can expand the field of view so that vehicles entering or leaving the lane of vehicle 1800 can be quickly detected.

In mindestens einem Ausführungsbeispiel können RADAR-Systeme mittlerer Reichweite als Beispiel eine Reichweite von bis zu 160 m (vorne) oder 80 m (hinten) und ein Sichtfeld von bis zu 42 Grad (vorne) oder 150 Grad (hinten) umfassen. In mindestens einem Ausführungsbeispiel können RADAR-Systeme mit kurzer Reichweite ohne Einschränkung eine beliebige Anzahl von RADAR-Sensor(en) 1860 umfassen, die für den Einbau an beiden Enden der hinteren Stoßstange vorgesehen sind. Wenn ein RADAR-Sensorsystem in mindestens einem Ausführungsbeispiel an beiden Enden der hinteren Stoßstange installiert wird, kann es zwei Strahlen erzeugen, die den toten Winkel im hinteren und im angrenzenden Bereich des Fahrzeugs ständig überwachen. In mindestens einem Ausführungsbeispiel können RADAR-Systeme mit kurzer Reichweite im ADAS-System 1838 zur Erkennung eines toten Winkels und/oder zur Unterstützung eines Spurwechsels verwendet werden.In at least one embodiment, mid-range RADAR systems may include, as an example, a range of up to 160 m (front) or 80 m (back) and a field of view of up to 42 degrees (front) or 150 degrees (back). In at least one embodiment, short-range RADAR systems may include, without limitation, any number of RADAR sensor(s) 1860 intended for installation at either end of the rear bumper. In at least one embodiment, when a RADAR sensor system is installed at both ends of the rear bumper, it can generate two beams that continuously monitor the blind spot in the rear and adjacent areas of the vehicle. In at least one embodiment, short-range RADAR systems may be used in ADAS system 1838 for blind spot detection and/or lane change assistance.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter eine/mehrere Ultraschallsensor(en) 1862 umfassen. Der/die Ultraschallsensor(en) 1862, der/die vorne, hinten und/oder seitlich am Fahrzeug 1800 angebracht werden kann/können, kann/können zur Einparkhilfe und/oder zur Erstellung und Aktualisierung eines Belegungsrasters verwendet werden. In mindestens einem Ausführungsbeispiel kann/können eine große Vielfalt von Ultraschallsensor(en) 1862 verwendet werden, und verschiedene Ultraschallsensor(en) 1862 können für verschiedene Erfassungsbereiche (z.B. 2,5 m, 4 m) verwendet werden. In mindestens einem Ausführungsbeispiel kann/können der/die Ultraschallsensor(en) 1862 auf den funktionalen Sicherheitsstufen von ASIL B arbeiten.In at least one embodiment, the vehicle 1800 may further include ultrasonic sensor(s) 1862 . Ultrasonic sensor(s) 1862, which may be attached to the front, rear, and/or side of vehicle 1800, may be used for parking assistance and/or to create and update a population grid. In at least one embodiment, a wide variety of ultrasonic sensor(s) 1862 may be used, and different ultrasonic sensor(s) 1862 may be used for different detection ranges (e.g., 2.5m, 4m). In at least one embodiment, the ultrasonic sensor(s) 1862 may operate at ASIL B functional safety levels.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 einen/mehrere LIDAR-Sensor(en) 1864 umfassen. Der/die LIDAR-Sensor(en) 1864 kann/können für Objekt- und Fußgängererkennung, Notbremsung, Kollisionsvermeidung und/oder andere Funktionen verwendet werden. In mindestens einem Ausführungsbeispiel kann/können LIDAR-Sensor(en) 1864 der funktionalen Sicherheitsstufe ASIL B entsprechen. In mindestens einem Ausführungsbeispiel kann Fahrzeug 1800 mehrere LIDAR-Sensoren 1864 (z.B. zwei, vier, sechs usw.) umfassen, die unter Verwendung von Ethernet (z.B. zur Bereitstellung von Daten für einen Gigabit-Ethernet-Switch) bereitgestellt werden können.In at least one embodiment, the vehicle 1800 may include a LIDAR sensor(s) 1864 . The LIDAR sensor(s) 1864 may be used for object and pedestrian detection, emergency braking, collision avoidance, and/or other functions. In at least one embodiment, LIDAR sensor(s) 1864 may be ASIL B functional safety level. In at least one embodiment, vehicle 1800 may include multiple LIDAR sensors 1864 (e.g., two, four, six, etc.) that may be deployed using Ethernet (e.g., to provide data to a Gigabit Ethernet switch).

In mindestens einem Ausführungsbeispiel kann/können LIDAR-Sensor(en) 1864 eine Liste von Objekten und deren Entfernungen für ein Sichtfeld von 360 Grad bereitstellen. In mindestens einem Ausführungsbeispiel kann/können kommerziell erhältliche(r) LIDAR-Sensor(en) 1864 eine angegebene Reichweite von ca. 100 m mit einer Genauigkeit von 2cm - 3cm und mit Unterstützung z.B. für eine 100 Mbps Ethernet-Verbindung aufweisen. In mindestens einem Ausführungsbeispiel können ein oder mehrere nicht hervorstehende LIDAR-Sensoren 1864 verwendet werden. In einem solchen Ausführungsbeispiel kann der/die LIDAR-Sensor(en) 1864 als kleines Gerät implementiert werden, das in die Front, das Heck, die Seiten und/oder Ecken des Fahrzeugs 1800 eingebettet werden kann. In mindestens einem Ausführungsbeispiel können LIDAR-Sensor(en) 1864 in einer solchen Ausführung ein horizontales Sichtfeld von bis zu 120 Grad und ein vertikales Sichtfeld von bis zu 35 Grad bereitstellen, mit einer Reichweite von 200 m selbst für Objekte mit geringem Reflexionsvermögen. In mindestens einem Ausführungsbeispiel kann/können ein/mehrere frontmontierte(r) LIDAR-Sensor(en) 1864 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.In at least one embodiment, LIDAR sensor(s) 1864 may provide a list of objects and their distances for a 360 degree field of view. In at least one embodiment, commercially available LIDAR sensor(s) 1864 may have a specified range of approximately 100 m with an accuracy of 2 cm - 3 cm and with support for a 100 Mbps Ethernet connection, for example. In at least one embodiment, one or more non-protruding LIDAR sensors 1864 may be used. In such an embodiment, the LIDAR sensor(s) 1864 may be implemented as a small device that may be embedded in the front, rear, sides, and/or corners of the vehicle 1800 . In at least one embodiment, LIDAR sensor(s) 1864 in such an implementation can provide a horizontal field of view of up to 120 degrees and a vertical field of view of up to 35 degrees, with a range of 200 m even for objects with low reflectivity. In at least one embodiment, a front-mount LIDAR sensor(s) 1864 may be configured for a horizontal field of view between 45 degrees and 135 degrees.

In mindestens einem Ausführungsbeispiel können auch LIDAR-Technologien, wie z.B. 3D-Blitz-LIDAR, verwendet werden. 3D-Blitz-LIDAR verwendet einen Laserblitz als Übertragungsquelle, um die Umgebung des Fahrzeugs 1800 bis zu einer Entfernung von ca. 200 m auszuleuchten. In mindestens einem Ausführungsbeispiel umfasst eine Blitz-LIDAR-Einheit ohne Einschränkung einen Rezeptor, der die Laserpulslaufzeit und das reflektierte Licht auf jedem Pixel aufzeichnet, was wiederum der Reichweite vom Fahrzeug 1800 bis zu Objekten entspricht. In mindestens einem Ausführungsbeispiel kann mit Blitz-LIDAR mit jedem Laserblitz hochgenaue und verzerrungsfreie Bilder der Umgebung erzeugt werden. In mindestens einem Ausführungsbeispiel können vier Blitz-LIDAR-Sensoren eingesetzt werden, einer auf jeder Seite des Fahrzeugs 1800. In mindestens einem Ausführungsbeispiel umfassen 3D-Blitz-LIDAR-Systeme, ohne Einschränkung, eine Festkörper-3D-Blitz-LIDAR-Kamera mit starrem Array ohne bewegliche Teile außer einem Ventilator (z.B. ein nicht scannendes LIDAR-Gerät). In mindestens einem Ausführungsbeispiel kann ein 3D-Blitz-LIDAR-Gerät einen 5-Nanosekunden-Laserpuls der Klasse I (augensicher) pro Bild verwenden und reflektiertes Laserlicht in Form von 3D-Entfernungspunktwolken und ko-registrierten Intensitätsdaten erfassen.In at least one embodiment, lidar technologies such as 3D flash lidar may also be used. 3D flash LIDAR uses a laser flash as a transmission source to illuminate the area around the vehicle 1800 up to a distance of approximately 200 m. In at least one embodiment, without limitation, a flash LIDAR unit includes a receptor that records the laser pulse travel time and reflected light at each pixel, which in turn corresponds to the range from the vehicle 1800 to objects. In at least one embodiment, flash LIDAR can produce highly accurate and distortion-free images of the environment with each laser flash. In at least one embodiment, four flash LIDAR sensors may be deployed, one on each side of the vehicle 1800. In at least one embodiment, 3D flash LIDAR systems include, without limitation, a solid-state 3D flash LIDAR camera with a fixed beam Array with no moving parts other than a fan (e.g. a non-scanning LIDAR device). In at least one embodiment, a 3D flash LIDAR device may use a 5 nanosecond Class I (eye safe) laser pulse per frame and collect reflected laser light in the form of 3D range point clouds and co-registered intensity data.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug weiter IMU-Sensor(en) 1866 umfassen. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1866 in mindestens einem Ausführungsbeispiel in der Mitte der Hinterachse von Fahrzeug 1800 angeordnet sein. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1866 zum Beispiel und ohne Einschränkung Beschleunigungsmesser, Magnetometer, Gyroskop(e), Magnetkompass(e) und/oder andere Sensortypen umfassen. In mindestens einem Ausführungsbeispiel, wie z.B. bei Sechs-Achsen-Anwendungen, kann/können der/die IMU-Sensor(en) 1866 ohne Einschränkung Beschleunigungsmesser und Gyroskope umfassen. In mindestens einem Ausführungsbeispiel, wie z. B. in Neun-Achsen-Anwendungen, kann/können der/die IMU-Sensor(en) 1866 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer umfassen.In at least one embodiment, the vehicle may further include IMU sensor(s) 1866 . In at least one embodiment, IMU sensor(s) 1866 may be located at the center of the rear axle of vehicle 1800 in at least one embodiment. In at least one embodiment, the IMU sensor(s) 1866 may include, for example and without limitation, accelerometers, magnetometers, gyroscope(s), magnetic compass(es), and/or other types of sensors. In at least one embodiment, such as in six-axis applications, the IMU sensor(s) 1866 may include, without limitation, accelerometers and gyroscopes. In at least one embodiment, such as For example, in nine-axis applications, the IMU sensor(s) 1866 may include, without limitation, accelerometers, gyroscopes, and magnetometers.

In mindestens einem Ausführungsbeispiel kann(n) der der/die IMU-Sensor(en) 1866 als ein GPS/INS (GPS/INS = High Performance GPS-Aided Inertial Navigation System) in Miniaturausführung implementiert werden, das Inertialsensoren mikro-elektromechanischer Systeme (MEMS = Micro-Electro-Mechanical Systems), einen hochempfindlichen GPS-Empfänger und fortschrittliche Kalman-Filteralgorithmen kombiniert, um Position, Geschwindigkeit und Lage abzuschätzen. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1866 das Fahrzeug 1800 in die Lage versetzen, den Kurs abzuschätzen, ohne dass eine Eingabe von einem magnetischen Sensor erforderlich ist, indem Geschwindigkeitsänderungen von GPS- zu IMU-Sensor(en) 1866 direkt beobachtet und korreliert werden. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1866 und der/die GNSS-Sensor(en) 1858 in einer einzigen integrierten Einheit kombiniert werden.In at least one embodiment, the IMU sensor(s) 1866 may be implemented as a miniature High Performance GPS-Aided Inertial Navigation System (GPS/INS) incorporating inertial sensors of micro-electromechanical systems ( MEMS = Micro-Electro-Mechanical Systems), a highly sensitive GPS receiver and advanced Kalman filter algorithms to estimate position, velocity and attitude. In at least one embodiment, the IMU sensor(s) 1866 may enable the vehicle 1800 to estimate heading without requiring input from a magnetic sensor by using GPS to IMU sensor speed changes ( en) 1866 can be directly observed and correlated. In at least one embodiment, the IMU sensor(s) 1866 and the GNSS sensor(s) 1858 may be combined into a single integrated unit.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 ein oder mehrere Mikrofone 1896 umfassen, die in und/oder um das Fahrzeug 1800 herum angebracht sind. In mindestens einem Ausführungsbeispiel kann/können das/die Mikrofon(e) 1896 unter anderem für die Erkennung und Identifizierung von Notfallfahrzeugen verwendet werden.In at least one embodiment, the vehicle 1800 may include one or more microphones 1896 mounted in and/or around the vehicle 1800 . In at least one embodiment, the microphone(s) 1896 may be used for, among other things, emergency vehicle detection and identification.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter eine beliebige Anzahl von Kameratypen umfassen, darunter Stereokamera(s) 1868, Weitwinkelkamera(s) 1870, Infrarotkamera(s) 1872, Surround-Kamera(s) 1874, Fernkamera(s) 1898, Mitteldistanzkamera(s) 1876 und/oder andere Kameratypen. In mindestens einem Ausführungsbeispiel können Kameras zur Erfassung von Bilddaten um die gesamte Peripherie des Fahrzeugs 1800 herum verwendet werden. In mindestens einem Ausführungsbeispiel hängen die verwendeten Kameratypen vom Fahrzeug 1800 ab. In mindestens einem Ausführungsbeispiel kann eine beliebige Kombination von Kameratypen verwendet werden, um die erforderliche Abdeckung um das Fahrzeug 1800 herum bereitzustellen. In mindestens einem Ausführungsbeispiel kann die Anzahl der verwendeten Kameras je nach Ausführungsbeispiel unterschiedlich sein. In mindestens einem Ausführungsbeispiel könnte Fahrzeug 1800 beispielsweise sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras oder eine andere Anzahl von Kameras umfassen. Die Kameras können zum Beispiel und ohne Einschränkung Gigabit Multimedia Serial Link („GMSL“) und/oder Gigabit Ethernet unterstützen. In mindestens einem Ausführungsbeispiel wird jede der Kameras mit mehr Details in Bezug auf 18A und 18B beschrieben.In at least one embodiment, vehicle 1800 may further include any number of camera types, including stereo camera(s) 1868, wide-angle camera(s) 1870, infrared camera(s) 1872, surround camera(s) 1874, far camera(s) 1898, mid-range camera (s) 1876 and/or other camera types. In at least one embodiment, cameras may be used to capture image data around the entire periphery of vehicle 1800 . In at least one embodiment, the types of cameras used depend on the vehicle 1800 . In at least one embodiment, any combination of camera types may be used to provide the required coverage around vehicle 1800 . In at least one embodiment, the number of cameras used can vary depending on the embodiment. For example, in at least one embodiment, vehicle 1800 could include six cameras, seven cameras, ten cameras, twelve cameras, or another number of cameras. For example and without limitation, the cameras may support Gigabit Multimedia Serial Link ("GMSL") and/or Gigabit Ethernet. In at least one embodiment, each of the cameras is provided with more details regarding 18A and 18B described.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter einen/mehrere Vibrationssensor(en) 1842 umfassen. Der/die Vibrationssensor(en) 1842 kann/können Vibrationen von Komponenten des Fahrzeugs 1800, wie z.B. Achse(n), messen. Beispielsweise können in mindestens einem Ausführungsbeispiel Änderungen der Vibrationen auf eine Veränderung der Fahrbahnoberflächen hinweisen. Wenn in mindestens einem Ausführungsbeispiel zwei oder mehr Vibrationssensoren 1842 verwendet werden, können Vibrationsunterschiede zur Bestimmung der Reibung oder des Schlupfes der Fahrbahnoberfläche verwendet werden (z.B. wenn ein Vibrationsunterschied zwischen einer angetriebenen Achse und einer frei rotierenden Achse besteht).In at least one embodiment, the vehicle 1800 may further include vibration sensor(s) 1842 . The vibration sensor(s) 1842 can measure vibrations of components of the vehicle 1800, such as axle(s). For example, in at least one embodiment For example, changes in vibration indicate a change in the road surface. In at least one embodiment, when two or more vibration sensors 1842 are used, differences in vibration can be used to determine friction or slippage of the road surface (eg, when there is a difference in vibration between a driven axle and a freely rotating axle).

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 ein ADAS-System 1838 umfassen. Das ADAS-System 1838 kann in einigen Beispielen ohne Einschränkung ein SoC umfassen. In mindestens einem Ausführungsbeispiel kann das ADAS-System 1838 ohne Einschränkung eine beliebige Anzahl und Kombination eines autonomen/adaptiven/automatischen Geschwindigkeitsregelungssystems („ACC“), eines kooperativen adaptiven Geschwindigkeitsregelungssystems („CACC“), eines Frontaufprallwarnsystems („FCW“) und eines automatischen Notbremssystems („AEB“) umfassen, ein System zur Warnung vor dem Verlassen der Fahrspur („LDW“), ein System zur Unterstützung der Spurhaltung („LKA“), ein System zur Warnung vor dem toten Winkel („BSW“), ein System zur Warnung vor rückwärtigem Querverkehr („RCTW“), ein System zur Kollisionswarnung („CW“), ein System zur Fahrspurzentrierung („LC“) und/oder andere Systeme, Merkmale und/oder Funktionen.In at least one embodiment, the vehicle 1800 may include an ADAS system 1838 . ADAS system 1838 may include a SoC in some examples without limitation. In at least one embodiment, ADAS system 1838 may include, without limitation, any number and combination of an autonomous/adaptive/automatic cruise control ("ACC") system, a cooperative adaptive cruise control ("CACC") system, a front collision warning ("FCW") system, and an automatic Emergency Braking (“AEB”) systems include, a Lane Departure Warning (“LDW”) system, a Lane Keeping Assist (“LKA”) system, a Blind Spot Warning (“BSW”) system, a Rear Cross Traffic Warning ("RCTW") system, a Collision Warning ("CW") system, a Lane Centering ("LC") system and/or other systems, features and/or functions.

In mindestens einem Ausführungsbeispiel kann das ACC-System RADAR-Sensor(en) 1860, LIDAR-Sensor(en) 1864 und/oder eine beliebige Anzahl von Kamera(s) verwenden. In mindestens einem Ausführungsbeispiel kann das ACC-System ein Längs-ACC-System und/oder ein Quer-ACC-System umfassen. In mindestens einem Ausführungsbeispiel überwacht und steuert das Längs-ACC-System den Abstand zum Fahrzeug unmittelbar vor dem Fahrzeug 1800 und passt die Geschwindigkeit des Fahrzeugs 1800 automatisch an, um einen Sicherheitsabstand zu vorausfahrenden Fahrzeugen einzuhalten. In mindestens einem Ausführungsbeispiel hält das seitliche ACC-System den Abstand ein und rät dem Fahrzeug 1800 bei Bedarf zum Spurwechsel. In mindestens einem Ausführungsbeispiel ist das seitliche ACC mit anderen ADAS-Anwendungen wie LC und CW verwandt.In at least one embodiment, the ACC system may use RADAR sensor(s) 1860, LIDAR sensor(s) 1864, and/or any number of camera(s). In at least one embodiment, the ACC system may include a longitudinal ACC system and/or a lateral ACC system. In at least one embodiment, the longitudinal ACC system monitors and controls the distance to the vehicle immediately ahead of the vehicle 1800 and automatically adjusts the speed of the vehicle 1800 to maintain a safe distance from vehicles ahead. In at least one embodiment, the side ACC system maintains the distance and advises the vehicle 1800 to change lanes when necessary. In at least one embodiment, side ACC is related to other ADAS applications such as LC and CW.

In mindestens einem Ausführungsbeispiel verwendet das CACC-System Informationen von anderen Fahrzeugen, die über die Netzwerkschnittstelle 1824 und/oder die drahtlose(n) Antenne(n) 1826 von anderen Fahrzeugen über eine drahtlose Verbindung oder indirekt über eine Netzwerkverbindung (z.B. über das Internet) empfangen werden können. In mindestens einem Ausführungsbeispiel können direkte Verbindungen durch eine Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung („V2V“) bereitgestellt werden, während indirekte Verbindungen durch eine Infrastruktur-zu-Fahrzeug-Kommunikationsverbindung („I2V“) bereitgestellt werden können. Im Allgemeinen sind beim V2V-Kommunikationskonzept Informationen über unmittelbar vorausfahrende Fahrzeuge (z.B. Fahrzeuge unmittelbar vor und auf derselben Fahrspur wie Fahrzeug 1800) bereitgestellt, während beim I2V-Kommunikationskonzept Informationen über den Verkehr in größerer Entfernung bereitgestellt werden. In mindestens einem Ausführungsbeispiel kann das CACC-System eine oder beide der Informationsquellen 12V und V2V umfassen. In mindestens einem Ausführungsbeispiel kann das CACC-System angesichts der Informationen über Fahrzeuge vor Fahrzeug 1800 zuverlässiger sein und hat das Potenzial, den Verkehrsfluss zu verbessern und Staus auf der Straße zu verringern.In at least one embodiment, the CACC system uses information from other vehicles received via network interface 1824 and/or wireless antenna(s) 1826 from other vehicles over a wireless connection or indirectly over a network connection (e.g., over the Internet). can be received. In at least one embodiment, direct connections may be provided through a vehicle-to-vehicle ("V2V") communication link, while indirect connections may be provided through an infrastructure-to-vehicle ("I2V") communication link. In general, the V2V communication concept provides information about immediately preceding vehicles (e.g., vehicles immediately ahead and in the same lane as vehicle 1800), while the I2V communication concept provides information about traffic at a greater distance. In at least one embodiment, the CACC system may include either or both of information sources 12V and V2V. In at least one embodiment, given the information about vehicles ahead of vehicle 1800, the CACC system may be more reliable and has the potential to improve traffic flow and reduce congestion on the road.

In mindestens einem Ausführungsbeispiel ist das FCW-System so konzipiert, dass es den Fahrer auf eine Gefahr aufmerksam macht, so dass er korrigierend eingreifen kann. In mindestens einem Ausführungsbeispiel verwendet das FCW-System eine nach vorn gerichtete Kamera und/oder einen oder mehrere RADAR-Sensor(en) 1860, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der elektrisch mit der Rückkopplung des Treibers verbunden ist, wie z.B. einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente. In mindestens einem Ausführungsbeispiel kann das FCW-System eine Warnung bereitstellen, z.B. in Form eines Tons, einer visuellen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses.In at least one embodiment, the FCW system is designed to alert the driver to a hazard so that corrective action can be taken. In at least one embodiment, the FCW system uses a forward-looking camera and/or RADAR sensor(s) 1860 coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is electrically coupled to the feedback of the driver, such as a display, speaker, and/or vibrating component. In at least one embodiment, the FCW system may provide a warning such as a tone, a visual warning, a vibration, and/or a rapid brake pulse.

In mindestens einem Ausführungsbeispiel erkennt das AEB-System eine bevorstehende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und kann automatisch die Bremsen betätigen, wenn der Fahrer innerhalb eines spezifizierten Zeit- oder Abstandsparameters keine Korrekturmaßnahmen ergreift. In mindestens einem Ausführungsbeispiel kann das AEB-System eine oder mehrere nach vorn gerichtete Kameras und/oder einen oder mehrere RADAR-Sensoren 1860 verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. Wenn das AEB-System in mindestens einem Ausführungsbeispiel eine Gefahr erkennt, warnt das AEB-System den Fahrer in der Regel zuerst, korrigierende Maßnahmen zur Vermeidung einer Kollision zu ergreifen, und wenn der Fahrer keine korrigierenden Maßnahmen ergreift, kann das AEB-System automatisch Bremsen betätigen, um die Auswirkungen der vorhergesagten Kollision zu verhindern oder zumindest abzuschwächen. In mindestens einem Ausführungsbeispiel kann das AEB-System Techniken wie dynamische Bremsunterstützung und/oder Bremsen bei drohendem Zusammenstoß umfassen.In at least one embodiment, the AEB system detects an imminent forward collision with another vehicle or object and may automatically apply the brakes if the driver fails to take corrective action within a specified time or distance parameter. In at least one embodiment, the AEB system may utilize one or more forward-looking cameras and/or one or more RADAR sensors 1860 coupled to a dedicated processor, DSP, FPGA, and/or ASIC. In at least one embodiment, when the AEB system detects a hazard, the AEB system typically first alerts the driver to take corrective action to avoid a collision, and if the driver fails to take corrective action, the AEB system may automatically brake operate to prevent or at least mitigate the effects of the predicted collision. In at least one embodiment the AEB system may include techniques such as dynamic braking assistance and/or braking when a collision is imminent.

In mindestens einem Ausführungsbeispiel ist das LDW-System mit visuellen, akustischen und/oder taktilen Warnungen wie Lenkrad- oder Sitzvibrationen ausgestattet, um den Fahrer zu warnen, wenn das Fahrzeug 1800 die Fahrbahnmarkierungen überfährt. In mindestens einem Ausführungsbeispiel wird das LDW-System nicht aktiviert, wenn der Fahrer durch Betätigung eines Blinkers ein beabsichtigtes Verlassen der Fahrspur anzeigt. In mindestens einem Ausführungsbeispiel kann das LDW-System nach vorn gerichtete Kameras verwenden, die an einen dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der elektrisch an das Feedback des Fahrers gekoppelt ist, wie z.B. eine Anzeige, einen Lautsprecher und/oder eine Vibrationskomponente. In mindestens einem Ausführungsbeispiel ist das LKA-System eine Variante des LDW-Systems. Das LKA-System ist für die Eingabe von Lenk- oder Bremseingaben vorgesehen, um das Fahrzeug 1800 zu korrigieren, wenn das Fahrzeug 1800 die Fahrspur zu verlassen beginnt.In at least one embodiment, the LDW system is equipped with visual, audible, and/or tactile alerts such as steering wheel or seat vibrations to alert the driver when the vehicle 1800 is crossing lane markings. In at least one embodiment, the LDW system is not activated when the driver indicates an intention to depart from the lane by actuating a turn signal. In at least one embodiment, the LDW system may utilize forward-looking cameras coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is electrically coupled to driver feedback, such as a display, speaker, and/or or a vibration component. In at least one embodiment, the LKA system is a variant of the LDW system. The LKA system is designed to provide steering or braking inputs to correct the vehicle 1800 when the vehicle 1800 begins to drift out of lane.

In mindestens einem Ausführungsbeispiel erkennt und warnt das BSW-System den Fahrer vor Fahrzeugen im toten Winkel eines Automobils. In mindestens einem Ausführungsbeispiel kann das BSW-System einen visuellen, akustischen und/oder taktilen Alarm bereitstellen, um anzuzeigen, dass das Zusammenfahren oder der Spurwechsel unsicher ist. In mindestens einem Ausführungsbeispiel kann das BSW-System eine zusätzliche Warnung bereitstellen, wenn der Fahrer einen Blinker benutzt. In mindestens einem Ausführungsbeispiel kann das BSW-System nach hinten gerichtete Kamera(s) und/oder RADAR-Sensor(en) 1860 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der elektrisch mit dem Fahrer-Feedback gekoppelt ist, wie z.B. einer Anzeige, einem Lautsprecher und/oder einer Vibrationskomponente.In at least one embodiment, the BSW system detects and alerts the driver to vehicles in an automobile's blind spot. In at least one embodiment, the BSW system may provide a visual, audible, and/or tactile alert to indicate that collapsing or lane changing is unsafe. In at least one embodiment, the BSW system may provide an additional warning when the driver uses a turn signal. In at least one embodiment, the BSW system may utilize rear-facing camera(s) and/or RADAR sensor(s) 1860 coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is electrically coupled to the driver's coupled to feedback, such as a display, speaker, and/or vibration component.

In mindestens einem Ausführungsbeispiel kann das RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn beim Rückwärtsfahren von Fahrzeug 1800 ein Objekt außerhalb des Bereichs der Rückfahrkamera erkannt wird. In mindestens einem Ausführungsbeispiel umfasst das RCTW-System ein AEB-System, um sicherzustellen, dass die Fahrzeugbremsen zur Vermeidung eines Aufpralls betätigt werden. In mindestens einem Ausführungsbeispiel kann ein RCTW-System einen oder mehrere nach hinten gerichtete(n) RADAR-Sensor(en) 1860 verwenden, der/die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt ist/sind, der/die elektrisch mit dem Fahrer-Feedback gekoppelt ist/sind, wie z. B. einer Anzeige, einem Lautsprecher und/oder einer vibrierenden Komponente.In at least one embodiment, the RCTW system may provide a visual, audible, and/or tactile notification when an object is detected out of range of the backup camera while vehicle 1800 is backing up. In at least one embodiment, the RCTW system includes an AEB system to ensure vehicle brakes are applied to avoid a collision. In at least one embodiment, an RCTW system may utilize one or more rear-facing RADAR sensors 1860 coupled to a dedicated processor, DSP, FPGA, and/or ASIC that is/are electrically coupled to the driver feedback, e.g. B. a display, a speaker and / or a vibrating component.

In mindestens einem Ausführungsbeispiel können konventionelle ADAS-Systeme anfällig für falsch-positive Ergebnisse sein, die für den Fahrer ärgerlich und ablenkend sein können, in der Regel aber nicht katastrophal sind, da konventionelle ADAS-Systeme den Fahrer warnen und ihm die Möglichkeit geben, zu entscheiden, ob ein Sicherheitszustand tatsächlich vorliegt, und entsprechend zu handeln. In mindestens einem Ausführungsbeispiel entscheidet das Fahrzeug 1800 bei widersprüchlichen Ergebnissen selbst, ob das Ergebnis von einem primären oder einem sekundären Computer (z.B. erstes Steuergerät 1836 oder zweites Steuergerät 1836) berücksichtigt werden soll. Zum Beispiel kann das ADAS-System 1838 in mindestens einem Ausführungsbeispiel ein Ersatz- und/oder Sekundärcomputer sein, der Wahrnehmungsinformationen für ein Rationalitätsmodul eines Ersatzcomputers bereitstellt. In mindestens einem Ausführungsbeispiel kann auf dem Rationalitätsmonitor des Reservecomputers eine redundante diverse Software auf Hardwarekomponenten laufen, um Wahrnehmungsfehler und dynamische Fahraufgaben zu erkennen. In mindestens einem Ausführungsbeispiel können Ausgaben vom ADAS-System 1838 für eine übergeordnete MCU bereitgestellt werden. Wenn in mindestens einem Ausführungsbeispiel Ausgaben vom Primärcomputer und Sekundärcomputer in Konflikt stehen, bestimmt die übergeordnete MCU, wie der Konflikt zur Gewährleistung eines sicheren Betriebs ausgeglichen werden kann.In at least one embodiment, conventional ADAS systems can be prone to false positives, which can be annoying and distracting to the driver, but are typically not catastrophic because conventional ADAS systems warn the driver and provide the opportunity to decide whether a security condition actually exists and act accordingly. In at least one embodiment, in the event of conflicting results, the vehicle 1800 will self-determine whether to consider the result from a primary or a secondary computer (e.g., first controller 1836 or second controller 1836). For example, in at least one embodiment, ADAS system 1838 may be a backup and/or secondary computer that provides perceptual information to a rationality module of a backup computer. In at least one exemplary embodiment, redundant diverse software can run on hardware components on the rationality monitor of the reserve computer in order to detect perception errors and dynamic driving tasks. In at least one embodiment, ADAS system 1838 outputs may be provided to a higher-level MCU. In at least one embodiment, when outputs from the primary computer and secondary computer conflict, the higher-level MCU determines how to resolve the conflict to ensure safe operation.

In mindestens einem Ausführungsbeispiel kann der Primärcomputer so konfiguriert sein, dass er der übergeordneten MCU einen Konfidenzwert zur Verfügung stellt, der das Vertrauen des Primärcomputers in das gewählte Ergebnis anzeigt. In mindestens einem Ausführungsbeispiel kann die übergeordnete MCU, wenn die Konfidenz einen Schwellenwert überschreitet, der Richtung des primären Computers folgen, unabhängig davon, ob der sekundäre Computer ein widersprüchliches oder inkonsistentes Ergebnis liefert. In mindestens einem Ausführungsbeispiel, bei dem die Konfidenz einen Schwellenwert nicht erreicht und bei dem der primäre und der sekundäre Computer unterschiedliche Ergebnisse anzeigen (z.B. einen Konflikt), kann die übergeordnete MCU zwischen den Computern vermitteln, um ein geeignetes Ergebnis zu bestimmen.In at least one embodiment, the primary computer may be configured to provide the high-level MCU with a confidence score indicative of the primary computer's confidence in the selected outcome. In at least one embodiment, if the confidence exceeds a threshold, the master MCU may follow the direction of the primary computer, regardless of whether the secondary computer provides a conflicting or inconsistent result. In at least one embodiment where the confidence does not meet a threshold and where the primary and secondary computers display different results (e.g., a conflict), the master MCU may mediate between the computers to determine an appropriate result.

In mindestens einem Ausführungsbeispiel kann die übergeordnete MCU so konfiguriert sein, dass sie ein neuronales Netzwerk bzw. neuronale Netzwerke betreibt, das bzw. die so trainiert und konfiguriert ist bzw. sind, dass es bzw. sie, zumindest teilweise basierend auf Ausgaben von Primärcomputer und Sekundärcomputer, Bedingungen bestimmt, unter denen der Sekundärcomputer Fehlalarme liefert. In mindestens einem Ausführungsbeispiel kann/können das/die neuronale(n) Netzwerk(e) in der übergeordneten MCU lernen, wann der Ausgabe des Sekundärcomputers vertraut werden kann und wann nicht. Wenn der Sekundär Computer beispielsweise in mindestens einem Ausführungsbeispiel ein RADAR-basiertes FCW-System ist, kann/können das/die neuronale(n) Netzwerk(e) in der übergeordneten MCU lernen, wenn das FCW-System metallische Objekte identifiziert, bei denen es sich in Wirklichkeit nicht um Gefahren handelt, wie z.B. ein Entwässerungsgitter oder ein Schachtdeckel, das/der einen Alarm auslöst. In mindestens einem Ausführungsbeispiel, wenn der Sekundärcomputer ein kamerabasiertes LDW-System ist, kann ein neuronales Netzwerk in der übergeordneten MCU lernen, die LDW außer Kraft zu setzen, wenn Radfahrer oder Fußgänger anwesend sind und ein Verlassen der Fahrspur tatsächlich das sicherste Manöver ist. In mindestens einem Ausführungsbeispiel kann die übergeordnete MCU mindestens eine DLA- oder GPU-Einheit umfassen, die für den Betrieb eines oder mehrerer neuronaler Netzwerke mit assoziiertem Speicher geeignet ist. In mindestens einem Ausführungsbeispiel kann die Kontroll-MCU eine Komponente von SoC(s) 1804 umfassen und/oder als eine solche enthalten sein.In at least one embodiment, the high-level MCU may be configured to operate a trained and configured neural network(s). is to determine, based at least in part on outputs from the primary computer and the secondary computer, conditions under which the secondary computer will provide false alarms. In at least one embodiment, the neural network(s) in the high-level MCU can learn when the output of the secondary computer can and cannot be trusted. For example, in at least one embodiment, if the secondary computer is a RADAR-based FCW system, the neural network(s) in the high-level MCU can learn when the FCW system identifies metallic objects where it are not actually hazards, such as a drainage grate or a manhole cover activating an alarm. In at least one embodiment, when the secondary computer is a camera-based LDW system, a neural network in the higher-level MCU can learn to override the LDW when cyclists or pedestrians are present and lane departure is actually the safest maneuver. In at least one embodiment, the high-level MCU may include at least one DLA or GPU unit capable of operating one or more neural networks with associated memory. In at least one embodiment, the control MCU may comprise and/or be included as a component of SoC(s) 1804 .

In mindestens einem Ausführungsbeispiel kann das ADAS-System 1838 einen sekundären Computer umfassen, der ADAS-Funktionalität unter Verwendung traditioneller Regeln der computergestützten Vision ausführt. In mindestens einem Ausführungsbeispiel kann der sekundäre Computer unter Verwenden klassischer Regeln der computergestützten Vision (engl. if-then, dt. wenn-dann) arbeiten, und das Vorhandensein eines oder mehrerer neuronaler Netzwerke in der übergeordneten MCU kann die Zuverlässigkeit, Sicherheit und Leistung verbessern. Beispielsweise wird in mindestens einem Ausführungsbeispiel das Gesamtsystem durch unterschiedliche Implementierung und absichtliche Nicht-Identität fehlertoleranter, insbesondere gegenüber Fehlern, die durch Funktionalität der Software (oder der Software-Hardware-Schnittstelle) verursacht werden. Wenn z.B. in mindestens einem Ausführungsbeispiel ein Softwarefehler oder -fehler in der auf dem Primärcomputer laufenden Software vorhanden ist und nicht identischer Softwarecode auf dem Sekundärcomputer dasselbe Gesamtergebnis liefert, dann kann die übergeordnete MCU eine größere Konfidenz haben, dass das Gesamtergebnis korrekt ist und der Fehler in der Software oder Hardware des Primärcomputers keinen wesentlichen Fehler verursacht.In at least one embodiment, ADAS system 1838 may include a secondary computer that executes ADAS functionality using traditional computer-aided vision rules. In at least one embodiment, the secondary computer may operate using classic computer-aided vision (if-then) rules, and having one or more neural networks in the parent MCU may improve reliability, security, and performance . For example, in at least one embodiment, differential implementation and intentional non-identity make the overall system more fault-tolerant, particularly to faults caused by software (or software-hardware interface) functionality. For example, if in at least one embodiment there is a software error or bug in the software running on the primary computer and non-identical software code on the secondary computer produces the same overall result, then the higher-level MCU may have greater confidence that the overall result is correct and the error in does not cause a material error in the software or hardware of the primary computer.

In mindestens einem Ausführungsbeispiel kann die Ausgabe des ADAS-Systems 1838 in den Wahrnehmungsblock des Primärrechners und/oder in den Block der dynamischen Fahraufgabe des Primärrechners eingespeist werden. Wenn beispielsweise in mindestens einem Ausführungsbeispiel das ADAS-System 1838 eine Vorwärts-Crash-Warnung aufgrund eines unmittelbar vorausfahrenden Objekts anzeigt, kann der Wahrnehmungsblock diese Information unter Verwendung dieser Information bei der Identifizierung von Objekten verwenden. In mindestens einem Ausführungsbeispiel kann der Sekundärcomputer über ein eigenes neuronales Netz verfügen, das trainiert wird und so das Risiko falsch positiver Ergebnisse, wie hier beschrieben, verringert.In at least one embodiment, the output of the ADAS system 1838 may be fed into the perceptual block of the host computer and/or the dynamic driving task block of the host computer. For example, in at least one embodiment, if the ADAS system 1838 is displaying a forward crash warning due to an object immediately ahead, the perception block may use that information in identifying objects using that information. In at least one embodiment, the secondary computer may have its own neural network that is trained to reduce the risk of false positives as described herein.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter einen Infotainment-SoC 1830 umfassen (z.B. ein bordeigenes Infotainment-System (IVI)). Obwohl es als SoC dargestellt und beschrieben wird, kann das Infotainment-System 1830 in mindestens einem Ausführungsbeispiel kein SoC sein und kann ohne Einschränkung zwei oder mehr diskrete Komponenten umfassen. In mindestens einem Ausführungsbeispiel kann das Infotainment-SoC 1830 ohne Einschränkung eine Kombination von Hardware und Software umfassen, die zur Bereitstellung von Audio (z.B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z.B. Fernsehen, Filme, Streaming usw.), Telefon (z.B. Freisprechanrufe), Netzanbindung (z.B. LTE, WiFi usw.) und/oder Informationsdienste (z.B. Navigationssysteme, Einparkhilfe, ein Radiodatensystem, fahrzeugbezogene Informationen wie Kraftstoffstand, zurückgelegte Gesamtstrecke, Bremsflüssigkeitsstand, Ölstand, Tür offen/geschlossen, Luftfilterinformationen usw.) zum Fahrzeug 1800. Infotainment SoC 1830 könnte z.B. Radios, Plattenspieler, Navigationssysteme, Videoplayer, USB- und Bluetooth-Konnektivität, Carputer, In-Car-Entertainment, WiFi, Lenkrad-Audiobedienelemente, Freisprech-Sprachsteuerung, ein Heads-Up-Display („HUD“), HMI-Anzeige 1834, ein Telematikgerät, ein Steuerungspaneel (z.B. zur Steuerung und/oder Interaktion mit verschiedenen Komponenten, Funktionen und/oder Systemen) und/oder andere Komponenten umfassen. In mindestens einem Ausführungsbeispiel kann Infotainment SoC 1830 weiter verwendet werden, um Informationen (z.B. visuell und/oder akustisch) für den/die Benutzer des Fahrzeugs bereitzustellen, wie z.B. Informationen vom ADAS-System 1838, autonome Fahrinformationen wie geplante Fahrzeugmanöver, Trajektorien, Informationen über die Umgebung (z.B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.In at least one embodiment, the vehicle 1800 may further include an infotainment SoC 1830 (e.g., an in-vehicle infotainment system (IVI)). Although illustrated and described as an SoC, in at least one embodiment, infotainment system 1830 may not be an SoC and may include, without limitation, two or more discrete components. In at least one embodiment, the infotainment SoC 1830 may include, without limitation, a combination of hardware and software configured to provide audio (e.g., music, a personal digital assistant, navigation instructions, news, radio, etc.), video (e.g., television, movies, streaming etc.), telephone (e.g. hands-free calls), network connection (e.g. LTE, WiFi etc.) and/or information services (e.g. navigation systems, parking assistance, a radio data system, vehicle-related information such as fuel level, total distance traveled, brake fluid level, oil level, door open/closed, air filter information, etc.) to the vehicle 1800. Infotainment SoC 1830 could e.g. radios, turntables, navigation systems, video players, USB and Bluetooth connectivity, carputer, in-car entertainment, WiFi, steering wheel audio controls, hands-free voice control, a heads-up -Display (“HUD”), HMI display 1834, a telematics device, a control panel (e.g. for controlling ng and/or interaction with various components, functions and/or systems) and/or other components. In at least one embodiment, infotainment SoC 1830 may be further used to provide information (e.g., visual and/or audible) to the vehicle user(s), such as information from ADAS system 1838, autonomous driving information such as planned vehicle maneuvers, trajectories, information about the environment (e.g., intersection information, vehicle information, road information, etc.) and/or other information.

In mindestens einem Ausführungsbeispiel kann das Infotainment-SoC 1830 eine beliebige Menge und Art von GPU-Funktionalität umfassen. In mindestens einem Ausführungsbeispiel kann der Infotainment-SoC 1830 über den Bus 1802 (z. B. CAN-Bus, Ethernet usw.) mit anderen Geräten, Systemen und/oder Komponenten des Fahrzeugs 1800 kommunizieren. In mindestens einem Ausführungsbeispiel kann das Infotainment-SoC 1830 mit einer übergeordneten MCU gekoppelt werden, so dass die GPU des Infotainment-Systems einige selbststeuernde Funktionen ausführen kann, falls die primäre(n) Steuerung(en) 1836 (z.B. Primär- und/oder Backup-Computer von Fahrzeug 1800) ausfallen. In mindestens einem Ausführungsbeispiel kann das Infotainmentsystem SoC 1830 das Fahrzeug 1800 in einen sicheren Stopp-Modus (engl. chaffeur to safe stop mode) versetzen, wie hier beschrieben.In at least one embodiment, the infotainment SoC 1830 may include any amount and type of GPU functionality. In at least one embodiment, the infotainment SoC 1830 can communicate with other devices, systems, and/or components of the vehicle 1800 via the bus 1802 (e.g., CAN bus, Ethernet, etc.). In at least one embodiment, the infotainment SoC 1830 may be coupled to a higher-level MCU such that the infotainment system's GPU may perform some self-driving functions if the primary controller(s) 1836 (e.g., primary and/or backup -Computer of vehicle 1800) fail. In at least one embodiment, the infotainment system SoC 1830 may place the vehicle 1800 in a chaffeur to safe stop mode, as described herein.

In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1800 weiter ein Zentralanzeigegerät 1832 umfassen (z.B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.). Das Zentralanzeigegerät 1832 kann ohne Einschränkung eine Steuerung und/oder einen Supercomputer (z.B. eine diskrete Steuerung oder einen Supercomputer) umfassen. In mindestens einem Ausführungsbeispiel kann das Zentralanzeigegerät 1832 ohne Einschränkung eine beliebige Anzahl und Kombination von Instrumenten wie Tachometer, Kraftstoffstand, Öldruck, Drehzahlmesser, Kilometerzähler, Fahrtrichtungsanzeiger, Gangwechselanzeige, Gurtwarnleuchte(n), Feststellbremswarnleuchte(n), Leuchte(n) für Motorstörungen, Informationen über zusätzliche Rückhaltesysteme (z.B. Airbag), Beleuchtungssteuerungen, Steuerungen für Sicherheitssysteme, Navigationsinformationen usw. umfassen. In einigen Beispielen können Informationen zwischen Infotainment-SoC 1830 und Zentralanzeigegerät 1832 angezeigt und/oder gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel kann der Zentralanzeigegerät 1832 als Teil des Infotainment-SoC 1830 enthalten sein oder umgekehrt.In at least one embodiment, the vehicle 1800 may further include a center display device 1832 (e.g., a digital dashboard, an electronic instrument cluster, a digital instrument panel, etc.). Central display device 1832 may include, without limitation, a controller and/or supercomputer (e.g., a discrete controller or supercomputer). In at least one embodiment, central display device 1832 may include, without limitation, any number and combination of gauges such as speedometer, fuel level, oil pressure, tachometer, odometer, turn signals, gear shift indicator, seat belt warning light(s), parking brake warning light(s), engine trouble light(s), information about supplemental restraint systems (e.g. airbag), lighting controls, security system controls, navigation information, etc. In some examples, information may be displayed and/or shared between infotainment SoC 1830 and central display device 1832 . In at least one embodiment, center display device 1832 may be included as part of infotainment SoC 1830 or vice versa.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 18C zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are here in connection with 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 18C to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

18D ist ein Diagramm eines Systems 1876 zur Kommunikation zwischen dem/den Cloudbasierten Server(n) und dem autonomen Fahrzeug 1800 der 18A, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das System 1876 ohne Einschränkung Server 1878, Netzwerk(e) 1890 und eine beliebige Anzahl und Art von Fahrzeugen, einschließlich Fahrzeug 1800, umfassen. Der/die Server 1878 kann/können ohne Einschränkung eine Vielzahl von GPUs 1884(A)-1884(H) (hierin zusammenfassend als GPUs 1884 bezeichnet), PCIe-Switches 1882(A)-1882(H) (hierin zusammenfassend als PCIe-Switches 1882 bezeichnet) und/oder CPUs 1880(A)-1880(B) (hierin zusammenfassend als CPUs 1880 bezeichnet) umfassen. GPUs 1884, CPUs 1880 und PCIe-Switches 1882 können mit Hochgeschwindigkeitsverbindungen wie z.B. und ohne Einschränkung die von NVIDIA entwickelten NVLink-Schnittstellen 1888 und/oder PCIe-Verbindungen 1886 miteinander verbunden werden. In mindestens einem Ausführungsbeispiel sind die GPUs 1884 über einen NVLink und/oder NVSwitch SoC und die GPUs 1884 und PCIe-Switches 1882 über PCIe-Verbindungen miteinander verbunden. In mindestens einem Ausführungsbeispiel sind zwar acht GPUs 1884, zwei CPUs 1880 und vier PCIe-Switches 1882 dargestellt, dies soll jedoch keine Einschränkung darstellen. In mindestens einem Ausführungsbeispiel kann jeder der Server 1878 ohne Einschränkung eine beliebige Anzahl von GPUs 1884, CPUs 1880 und/oder PCIe-Switches 1882 in beliebiger Kombination umfassen. In mindestens einem Ausführungsbeispiel könnte(n) beispielsweise jeder Server 1878 acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1884 umfassen. 18D 1876 is a diagram of a system 1876 for communication between the cloud-based server(s) and the autonomous vehicle 1800 of FIG 18A , according to at least one embodiment. In at least one embodiment, system 1876 may include, without limitation, server 1878, network(s) 1890, and any number and type of vehicles, including vehicle 1800. The server(s) 1878 may include, without limitation, a variety of GPUs 1884(A)-1884(H) (collectively referred to herein as GPUs 1884), PCIe switches 1882(A)-1882(H) (collectively referred to herein as PCIe switches 1882) and/or CPUs 1880(A)-1880(B) (collectively referred to herein as CPUs 1880). GPUs 1884, CPUs 1880, and PCIe switches 1882 may be interconnected using high-speed interconnects such as, without limitation, NVLink interfaces 1888 and/or PCIe interconnects 1886 developed by NVIDIA. In at least one embodiment, the GPUs 1884 are interconnected via an NVLink and/or NVSwitch SoC, and the GPUs 1884 and PCIe switches 1882 are interconnected via PCIe connections. While eight GPUs 1884, two CPUs 1880, and four PCIe switches 1882 are shown in at least one embodiment, this is not intended to be limiting. In at least one embodiment, each of the servers 1878 may include any number of GPUs 1884, CPUs 1880, and/or PCIe switches 1882 in any combination, without limitation. For example, in at least one embodiment, each server 1878 could include eight, sixteen, thirty-two, and/or more GPUs 1884 .

In mindestens einem Ausführungsbeispiel kann/können der/die Server 1878 über das/die Netzwerk(e) 1890 und von Fahrzeugen Bilddaten empfangen, die Bilder repräsentieren, die unerwartete oder geänderte Straßenzustände zeigen, wie z.B. kürzlich begonnene Straßenbauarbeiten. In mindestens einem Ausführungsbeispiel kann/können der/die Server 1878 über das/die Netzwerk(e) 1890 und an die Fahrzeuge neuronale Netzwerke 1892, aktualisierte neuronale Netzwerke 1892 und/oder Karteninformationen 1894, einschließlich, ohne Einschränkung, Informationen über Verkehrs- und Straßenzustände, übertragen. In mindestens einem Ausführungsbeispiel können Aktualisierungen der Karteninformationen 1894 unter anderem Aktualisierungen einer HD-Karte 1822 umfassen, z.B. Informationen über Baustellen, Schlaglöcher, Umleitungen, Überschwemmungen und/oder andere Hindernisse. In mindestens einem Ausführungsbeispiel können neuronale Netze 1892, aktualisierte neuronale Netze 1892 und/oder Karteninformationen 1894 aus neuem Training und/oder neuen Erfahrungen resultieren, die in Daten repräsentiert sind, die von einer beliebigen Anzahl von Fahrzeugen in der Umgebung empfangen wurden, und/oder zumindest teilweise auf einem Training basieren, das in einem Datenzentrum durchgeführt wurde (z.B. unter Verwendung von Server(n) 1878 und/oder anderen Servern).In at least one embodiment, the server(s) 1878 may receive, via the network(s) 1890 and from vehicles, image data representing images showing unexpected or changed road conditions, such as recently started road works. In at least one embodiment, the server(s) 1878 may, via the network(s) 1890 and to the vehicles, provide neural networks 1892, updated neural networks 1892, and/or map information 1894, including, without limitation, information about traffic and road conditions , transfer. In at least one embodiment, updates to the map information 1894 may include, but are not limited to, updates to an HD map 1822, eg, information about construction sites, potholes, detours, flooding, and/or other obstructions. In at least one embodiment, neural networks 1892, updated neural networks 1892, and/or map information 1894 may be selected new training and/or new experiences represented in data received from any number of vehicles in the area and/or based at least in part on training performed in a data center (e.g. using servers (n) 1878 and/or other servers).

In mindestens einem Ausführungsbeispiel kann/können der/die Server 1878 verwendet werden, um Modelle des maschinellen Lernens (z.B. neuronale Netzwerke) zu trainieren, die zumindest teilweise auf Trainingsdaten basieren. Trainingsdaten können durch Fahrzeuge und/oder in einer Simulation (z.B. unter Verwendung der Engine) erzeugt werden. In mindestens einem Ausführungsbeispiel werden beliebig viele Trainingsdaten mit Tags versehen (z.B. wenn das assoziierte neuronale Netz vom beaufsichtigten Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen. In mindestens einem Ausführungsbeispiel ist eine beliebige Menge von Trainingsdaten nicht markiert und/oder vorverarbeitet (z.B. wenn das assoziierte neuronale Netz kein beaufsichtigtes Lernen erfordert). In mindestens einem Ausführungsbeispiel können nach dem Trainieren von maschinellen Lernmodellen diese von Fahrzeugen verwendet werden (z.B. über Netzwerk(e) 1890 an Fahrzeuge übertragen und/oder maschinelle Lernmodelle können von Server(n) 1878 zur Fernüberwachung von Fahrzeugen verwendet werden.In at least one embodiment, server(s) 1878 may be used to train machine learning models (e.g., neural networks) based at least in part on training data. Training data can be generated by vehicles and/or in a simulation (e.g. using the engine). In at least one embodiment, any amount of training data is tagged (e.g., if the associated neural network benefits from supervised learning) and/or undergoes other pre-processing. In at least one embodiment, any set of training data is not tagged and/or pre-processed (e.g., when the associated neural network does not require supervised learning). In at least one embodiment, once machine learning models are trained, they may be used by vehicles (e.g., transmitted to vehicles over network(s) 1890 and/or machine learning models may be used by server(s) 1878 to remotely monitor vehicles.

In mindestens einem Ausführungsbeispiel kann/können der/die Server 1878 Daten von Fahrzeugen empfangen und Daten auf aktuelle neuronale Netzwerke anwenden, um in Echtzeit eine intelligente Inferenz zu erhalten. In mindestens einem Ausführungsbeispiel kann/können der/die Server 1878 Supercomputer für Deep Learning und/oder dedizierte KI-Computer mit GPU(s) 1884 umfassen, wie z.B. die von NVIDIA entwickelten Maschinen DGX und DGX Station. In mindestens einem Ausführungsbeispiel kann/können der/die Server 1878 jedoch eine Deep-Learning-Infrastruktur umfassen, die CPU-gestützte Datenzentren verwendet.In at least one embodiment, server(s) 1878 may receive data from vehicles and apply data to live neural networks to obtain intelligent inference in real-time. In at least one embodiment, the server(s) 1878 may include deep learning supercomputers and/or dedicated AI computers with GPU(s) 1884, such as the DGX and DGX Station machines developed by NVIDIA. However, in at least one embodiment, server(s) 1878 may include a deep learning infrastructure using CPU-based data centers.

In mindestens einem Ausführungsbeispiel kann die Deep-Learning-Infrastruktur von Server(n) 1878 schnelle Echtzeit-Inferenzdienste anbieten und diese Fähigkeit zur Bewertung und Überprüfung des Zustands von Prozessoren, Software und/oder assoziierter Hardware im Fahrzeug 1800 nutzen. Zum Beispiel kann in mindestens einem Ausführungsbeispiel die Deep-Learning-Infrastruktur periodische Aktualisierungen von Fahrzeug 1800 erhalten, wie z.B. eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 1800 in dieser Sequenz von Bildern lokalisiert hat (z.B. durch computergestützte Vision und/oder andere Klassifizierungstechniken für Objekte des maschinellen Lernens). In mindestens einem Ausführungsbeispiel kann die Deep-Learning-Infrastruktur ihr eigenes neuronales Netzwerk betreiben, um Objekte zu identifizieren und sie mit den von Fahrzeug 1800 identifizierten Objekten zu vergleichen. Wenn die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI in Fahrzeug 1800 fehlerhaft ist, dann kann/können der/die Server 1878 ein Signal an das Fahrzeug 1800 senden und einen ausfallsicheren Computer des Fahrzeugs 1800 anweisen, die Steuerung zu übernehmen, die Passagiere zu benachrichtigen und ein sicheres Einparkmanöver durchzuführen.In at least one embodiment, the server(s) 1878 deep learning infrastructure may provide fast, real-time inference services and utilize this capability to assess and verify the health of processors, software, and/or associated hardware in the vehicle 1800 . For example, in at least one embodiment, the deep learning infrastructure may receive periodic updates from vehicle 1800, such as a sequence of images and/or objects that vehicle 1800 located in that sequence of images (e.g., through computer-aided vision and/or other classification techniques for machine learning objects). In at least one embodiment, the deep learning infrastructure can run its own neural network to identify objects and compare them to the objects identified by vehicle 1800 . If the results do not match and the deep learning infrastructure concludes that the AI in vehicle 1800 is faulty, then server(s) 1878 may send a signal to vehicle 1800 and instruct a vehicle 1800 failsafe computer to take control, notify passengers and perform safe parking manoeuvres.

In mindestens einem Ausführungsbeispiel kann/können der/die Server 1878 einen/mehrere Grafikprozessor(en) 1884 und einen oder mehrere programmierbare Inferenzbeschleuniger (z.B. NVIDIAs TensorRT 3) umfassen. In mindestens einem Ausführungsbeispiel kann die Kombination aus GPU-betriebenen Servern und Inferenzbeschleunigung Echtzeit-Reaktionsfähigkeit ermöglichen. In mindestens einem Ausführungsbeispiel, z.B. wenn die Leistung weniger kritisch ist, können Server, die von CPUs, FPGAs und anderen Prozessoren gespeist werden, für Inferenzzwecke verwendet werden. In mindestens einem Ausführungsbeispiel werden die Hardwarestruktur(en) 1515 zur Durchführung einer oder mehrerer Ausführungsbeispiele verwendet. Details zur Hardwarestruktur(x) 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt.In at least one embodiment, server(s) 1878 may include graphics processor(s) 1884 and one or more programmable inference accelerators (eg, NVIDIA's TensorRT 3). In at least one embodiment, the combination of GPU-powered servers and inference acceleration can enable real-time responsiveness. In at least one embodiment, eg where performance is less critical, servers powered by CPUs, FPGAs and other processors may be used for inference purposes. In at least one embodiment, the hardware structure(s) 1515 are used to perform one or more embodiments. Details of hardware structure(x) 1515 are here in connection with 15A and or 15B provided.

19 ist ein Blockdiagramm, das ein beispielhaftes Computersystem zeigt, bei dem es sich um ein System mit miteinander verbundenen Geräten und Komponenten handeln kann, ein System-on-a-Chip (SOC) oder eine Kombination davon 1900, das mit einem Prozessor gebildet wird, der Ausführungseinheiten zur Ausführung eines Befehls umfassen kann, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das Computersystem 1900 ohne Einschränkung eine Komponente umfassen, wie z.B. einen Prozessor 1902 zur Verwendung von Ausführungseinheiten einschließlich Logik zur Ausführung von Algorithmen für Prozessdaten gemäß der vorliegenden Offenbarung, wie z.B. in einem hier beschriebenen Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das Computersystem 1900 Prozessoren wie die PENTIUM®-Prozessorfamilie, Xeon™-, Itanium®-, XScale™- und/oder StrongARM™-, Intel® Core™ oder Intel® Nervana™ Mikroprozessoren umfassen, die bei der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering Workstations, Set-Top-Boxen und dergleichen) verwendet werden können. In mindestens einem Ausführungsbeispiel kann das Computersystem 1900 eine Version des WINDOWS-Betriebssystems ausführen, das bei der Microsoft Corporation in Redmond, Washington, erhältlich ist, obwohl auch andere Betriebssysteme (z.B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können. 19 19 is a block diagram showing an example computer system, which may be a system with interconnected devices and components, a system-on-a-chip (SOC), or a combination thereof 1900 formed with a processor. which may comprise execution units for executing an instruction, according to at least one embodiment. In at least one embodiment, the computer system 1900 may include, without limitation, a component such as a processor 1902 for using execution units including logic to perform algorithms on process data consistent with the present disclosure, such as in an embodiment described herein. In at least one embodiment, computer system 1900 may include processors such as the PENTIUM® processor family, Xeon™, Itanium®, XScale™, and/or StrongARM™, Intel® Core™, or Intel® Nervana™ microprocessors manufactured by Intel Corporation of Santa Clara, California, although other systems (including personal computers with other microprocessors, engineering workstations, set-top boxes, and the like) may be used. in minutes In at least one embodiment, computer system 1900 may run a version of the WINDOWS operating system available from Microsoft Corporation of Redmond, Washington, although other operating systems (eg, UNIX and Linux), embedded software, and/or graphical user interfaces may also be used.

Ausführungsbeispiele können in anderen Geräten wie Handheld-Geräten und eingebetteten Anwendungen verwendet werden. Einige Beispiele für Handheld-Geräte umfassen Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras, Personal Digital Assistants („PDAs“) und Handheld-PCs. In mindestens einem Ausführungsbeispiel können eingebettete Anwendungen einen Mikrocontroller, einen digitalen Signalprozessor („DSP“), ein System auf einem Chip, Netzwerkcomputer („NetPCs“), Set-Top-Boxen, Netzwerk-Hubs, Wide Area Network („WAN“)-Switches oder ein beliebiges anderes System umfassen, das einen oder mehrere Befehle ausführen kann, gemäß mindestens einem Ausführungsbeispiel.Example embodiments can be used in other devices such as handheld devices and embedded applications. Some examples of handheld devices include cell phones, Internet protocol devices, digital cameras, personal digital assistants ("PDAs"), and handheld personal computers. In at least one embodiment, embedded applications may include a microcontroller, digital signal processor ("DSP"), system on a chip, network computers ("NetPCs"), set top boxes, network hubs, wide area network ("WAN") include switches or any other system capable of executing one or more instructions, according to at least one embodiment.

In mindestens einem Ausführungsbeispiel kann das Computersystem 1900 unter anderem einen Prozessor 1902 umfassen, der unter anderem eine oder mehrere Einheiten 1908 für das Training und/oder die Inferenzierung von maschinellen Lernmodellen gemäß den hier beschriebenen Techniken umfassen kann. In mindestens einem Ausführungsbeispiel ist das System 19 ein Einzelprozessor-Desktop- oder Serversystem, aber in einem anderen Ausführungsbeispiel kann System 19 ein Multiprozessorsystem sein. In mindestens einem Ausführungsbeispiel kann der Prozessor 1902 ohne Einschränkung einen Mikroprozessor mit komplexem Befehlssatz ( engl. complex instruction set computer, CISC), einen Mikroprozessor mit reduziertem Befehlssatz ( engl. reduced instruction set computing, RISC), einen Mikroprozessor mit sehr langem Befehlswort (engl. very long instruction word, VLIW), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder ein beliebiges anderes Prozessorgerät, wie z.B. einen digitalen Signalprozessor, umfassen. In mindestens einem Ausführungsbeispiel kann der Prozessor 1902 mit einem Prozessorbus 1910 gekoppelt sein, der Datensignale zwischen dem Prozessor 1902 und anderen Komponenten im Computersystem 1900 übertragen kann.In at least one embodiment, the computer system 1900 may include, among other things, a processor 1902, which may include, among other things, one or more units 1908 for training and/or inferring machine learning models according to the techniques described herein. In at least one embodiment, system 19 is a single processor desktop or server system, but in another embodiment system 19 may be a multiprocessor system. In at least one embodiment, processor 1902 may include, without limitation, a complex instruction set computer (CISC) microprocessor, a reduced instruction set computing (RISC) microprocessor, a very long instruction word (CISC) microprocessor . very long instruction word, VLIW), a processor implementing a combination of instruction sets, or any other processing device such as a digital signal processor. In at least one embodiment, processor 1902 may be coupled to a processor bus 1910 that may transfer data signals between processor 1902 and other components in computer system 1900.

In mindestens einem Ausführungsbeispiel kann Prozessor 1902 ohne Einschränkung einen internen Level 1 („L1“) Cache-Speicher („Cache“) 1904 umfassen. In mindestens einem Ausführungsbeispiel kann Prozessor 1902 über einen einzigen internen Cache oder mehrere Ebenen eines internen Cache-Speichers verfügen. In mindestens einem Ausführungsbeispiel kann sich der Cache-Speicher außerhalb von Prozessor 1902 befinden. Andere Ausführungsbeispiele können auch eine Kombination aus internen und externen Caches umfassen, je nach spezieller Implementierung und Bedarf. In mindestens einem Ausführungsbeispiel kann die Registerdatei 1906 verschiedene Arten von Daten in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Befehlszeigerregister.In at least one embodiment, processor 1902 may include an internal level 1 ("L1") cache memory ("cache") 1904 without limitation. In at least one embodiment, processor 1902 may have a single internal cache or multiple levels of internal cache memory. In at least one embodiment, the cache memory may be external to processor 1902. Other embodiments may also include a combination of internal and external caches, depending on the particular implementation and need. In at least one embodiment, register file 1906 may store various types of data in various registers including, without limitation, integer registers, floating point registers, status registers, and instruction pointer registers.

In mindestens einem Ausführungsbeispiel befindet sich die Ausführungseinheit 1908, die unter anderem eine Logik zur Ausführung von Ganzzahl- und Gleitkommaoperationen umfasst, ebenfalls im Prozessor 1902. Prozessor 1902 kann auch einen Mikrocode- („ucode“) Nur-LeseSpeicher („ROM“) umfassen, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 1908 Logik zur Handhabung eines gepackten Befehlssatzes 1909 umfassen. In mindestens einem Ausführungsbeispiel können durch die Einbeziehung des gepackten Befehlssatzes 1909 in den Befehlssatz eines Allzweckprozessors 1902 zusammen mit einer assoziierten Schaltungsanordnung zur Ausführung von Befehlen Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung gepackter Daten in einem Allzweckprozessor 1902 durchgeführt werden. In einem oder mehreren Ausführungsbeispielen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite des Datenbusses eines Prozessors für die Durchführung von Operationen an gepackten Daten genutzt wird, wodurch die Notwendigkeit entfallen kann, kleinere Einheiten von Daten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen jeweils ein Datenelement auf einmal durchzuführen.In at least one embodiment, processor 1902 also resides in execution unit 1908, which includes, among other things, logic for performing integer and floating point operations. Processor 1902 may also include microcode ("ucode") read only memory ("ROM") , which stores microcode for specific macroinstructions. In at least one embodiment, the execution unit 1908 may include logic for handling a packed instruction set 1909 . In at least one embodiment, by including the packed instruction set 1909 in the instruction set of a general purpose processor 1902, along with associated circuitry for executing instructions, operations used by many multimedia applications can be performed using packed data in a general purpose processor 1902. In one or more embodiments, many multimedia applications may run faster and more efficiently by utilizing the full width of a processor's data bus to perform operations on packed data, thereby eliminating the need to transfer smaller chunks of data across the processor's data bus to transfer to perform one or more operations one data item at a time.

In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 1908 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einem Ausführungsbeispiel kann das Computersystem 1900 ohne Einschränkung einen Speicher 1920 umfassen. In mindestens einem Ausführungsbeispiel kann der Speicher 1920 als Dynamic Random Access Memory („DRAM“) Gerät, Static Random Access Memory („SRAM“) Gerät, Flash-Speichergerät oder anderes Speichergerät implementiert sein. Speicher 1920 kann Instruktion(en) 1919 und/oder Daten 1921 speichern, die durch Datensignale repräsentiert werden, die vom Prozessor 1902 ausgeführt werden können.In at least one embodiment, execution unit 1908 may also be used in microcontrollers, embedded processors, graphics devices, DSPs, and other types of logic circuits. In at least one embodiment, computer system 1900 may include memory 1920 without limitation. In at least one embodiment, memory 1920 may be implemented as a dynamic random access memory (“DRAM”) device, static random access memory (“SRAM”) device, flash memory device, or other storage device. Memory 1920 may store instruction(s) 1919 and/or data 1921 represented by data signals executable by processor 1902.

In mindestens einem Ausführungsbeispiel kann der Systemlogik-Chip mit dem Prozessorbus 1910 und dem Speicher 1920 gekoppelt werden. In mindestens einem Ausführungsbeispiel kann der Systemlogik-Chip ohne Einschränkung einen Speichersteuerungs-Hub (engl. Memory Controller Hub, „MCH“) 1916 umfassen, und der Prozessor 1902 kann über den Prozessorbus 1910 mit dem MCH 1916 kommunizieren. In mindestens einem Ausführungsbeispiel kann MCH 1916 einen Speicherpfad mit hoher Bandbreite von 1918 bis 1920 für die Befehls- und Datenspeicherung und für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einem Ausführungsbeispiel kann MCH 1916 Datensignale zwischen Prozessor 1902, Speicher 1920 und anderen Komponenten im Computersystem 1900 leiten und Datensignale zwischen Prozessorbus 1910, Speicher 1920 und einer System-E/A 1922 überbrücken. In mindestens einem Ausführungsbeispiel kann der Systemlogik-Chip einen Grafikport zur Kopplung an eine Grafiksteuerung bereitstellen. In mindestens einem Ausführungsbeispiel kann MCH 1916 über einen Hochgeschwindigkeits-Speicherpfad 1918 mit Speicher 1920 und Grafik-/Videokarte 1912 über einen Accelerated Graphics Port („AGP“) Interconnect 1914 mit MCH 1916 gekoppelt werden.In at least one embodiment, the system logic chip may be coupled to processor bus 1910 and memory 1920. In at least one embodiment, the system logic chip may include, without limitation, a memory controller hub ("MCH") 1916 and the processor 1902 may communicate with the MCH 1916 via the processor bus 1910 . In at least one embodiment, MCH 1916 may provide a high-bandwidth memory path from 1918 to 1920 for command and data storage and for graphics command, data, and texture storage. In at least one embodiment, MCH 1916 may route data signals between processor 1902, memory 1920, and other components in computer system 1900, and bridge data signals between processor bus 1910, memory 1920, and a system I/O 1922. In at least one embodiment, the system logic chip may provide a graphics port for coupling to a graphics controller. In at least one embodiment, MCH 1916 may be coupled to MCH 1916 via a high-speed memory path 1918 to memory 1920 and graphics/video card 1912 via an Accelerated Graphics Port ("AGP") interconnect 1914 .

In mindestens einem Ausführungsbeispiel kann das Computersystem 1900 eine System-E/A 1922 verwenden, das ein proprietärer Hub-Schnittstellenbus ist, um MCH 1916 mit dem E/A-Steuerungs-Hub („ICH“) 1930 zu koppeln. In mindestens einem Ausführungsbeispiel kann ICH 1930 über einen lokalen E/A-Bus direkte Verbindungen zu einigen E/A-Geräten bereitstellen. In mindestens einem Ausführungsbeispiel kann der lokale E/A-Bus ohne Einschränkung einen Hochgeschwindigkeits-E/A-Bus zur Verbindung von Peripheriegeräten mit dem Speicher 1920, dem Chipsatz und dem Prozessor 1902 umfassen. Beispiele können, ohne Einschränkung, eine Audio-Steuerung 1929, einen Firmware-Hub („Flash-BIOS“) 1928, einen drahtlosen Transceiver 1926, einen Datenspeicher 1924, eine älteren E/A-Steuerung 1923, der Benutzereingaben und Tastaturschnittstellen enthält, einen seriellen Erweiterungsport 1927, wie z.B. Universal Serial Bus („USB“), und eine Netzwerk-Steuerung 1934 umfassen. Der Datenspeicher 1924 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, ein CD-ROM-Gerät, ein Flash-Speichergerät oder ein anderes Massenspeichergerät umfassen.In at least one embodiment, computer system 1900 may use system I/O 1922, which is a proprietary hub interface bus, to couple MCH 1916 to I/O control hub ("ICH") 1930. In at least one embodiment, ICH 1930 may provide direct connections to some I/O devices via a local I/O bus. In at least one embodiment, the local I/O bus may include, without limitation, a high speed I/O bus for connecting peripheral devices to the memory 1920, chipset, and processor 1902. Examples may include, without limitation, an audio controller 1929, a firmware hub ("flash BIOS") 1928, a wireless transceiver 1926, a data store 1924, a legacy I/O controller 1923 containing user input and keyboard interfaces serial expansion port 1927 , such as Universal Serial Bus ("USB"), and network controller 1934 . Data storage 1924 may include a hard drive, floppy disk drive, CD-ROM device, flash memory device, or other mass storage device.

Gemäß mindestens einem Ausführungsbeispiel zeigt 19 ein System, das miteinander verbundene Hardware-Geräte oder „Chips“ umfasst, während 19 in anderen Ausführungsbeispielen ein beispielhaftes System-on-a-Chip („SoC“) zeigen kann. In mindestens einem Ausführungsbeispiel können die in 19 dargestellten Geräte mit proprietären Verbindungen, standardisierten Verbindungen (z.B. PCIe) oder einer Kombination davon verbunden sein. In mindestens einem Ausführungsbeispiel sind eine oder mehrere Komponenten des Systems 1900 durch Compute Express Link (CXL)-Verbindungen miteinander verbunden.According to at least one embodiment 19 a system that includes interconnected hardware devices or "chips" while 19 in other embodiments, an example system-on-a-chip ("SoC") may show. In at least one embodiment, the 19 Devices shown may be connected using proprietary connections, standardized connections (e.g. PCIe) or a combination thereof. In at least one embodiment, one or more components of system 1900 are interconnected by Compute Express Link (CXL) connections.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 19 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 19 to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

20 zeigt ein Blockdiagramm, das ein elektronisches Gerät 2000 für die Verwendung eines Prozessors 2010 zeigt, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann ein elektronisches Gerät 2000 zum Beispiel und ohne Einschränkung ein Notebook, ein Tower-Server, ein Rack-Server, ein Blade-Server, ein Laptop, ein Desktop, ein Tablet, ein mobiles Gerät, ein Telefon, ein eingebetteter Computer oder jedes andere geeignete elektronische Gerät sein. 20 12 is a block diagram showing an electronic device 2000 for use with a processor 2010, according to at least one embodiment. In at least one embodiment, electronic device 2000 may be, for example and without limitation, a notebook, tower server, rack server, blade server, laptop, desktop, tablet, mobile device, phone, embedded computer or any other suitable electronic device.

In mindestens einem Ausführungsbeispiel kann das System 2000 ohne Einschränkung einen Prozessor 2010 umfassen, der kommunikativ mit einer beliebigen geeigneten Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Geräten gekoppelt ist. In mindestens einem Ausführungsbeispiel ist der Prozessor 2010 über einen Bus oder eine Schnittstelle gekoppelt, wie z.B. einen 1°C-Bus, einen System Management Bus („SMBus“), einen Low Pin Count (LPC)-Bus, ein Serial Peripheral Interface („SPI“), einen High Definition Audio („HDA“)-Bus, einen Serial Advance Technology Attachment („SATA“)-Bus, einen Universal Serial Bus („USB“) (Versionen 1, 2, 3) oder einen Universal Asynchron Receiver/Transmitter („UART“)-Bus. 20 zeigt gemäß mindestens einem Ausführungsbeispiel ein System, das miteinander verbundene Hardware-Geräte oder „Chips“ umfasst, während 20 in anderen Ausführungsbeispielen ein beispielhaftes System on-a-Chip („SoC“) zeigen kann. In mindestens einem Ausführungsbeispiel können die in 20 dargestellten Geräte durch proprietäre Verbindungen, standardisierte Verbindungen (z.B. PCIe) oder eine Kombination davon miteinander verbunden sein. In mindestens einem Ausführungsbeispiel sind eine oder mehrere Komponenten von 20 durch Compute Express Link (CXL)-Verbindungen miteinander verbunden.In at least one embodiment, the system 2000 may include, without limitation, a processor 2010 communicatively coupled to any suitable number or type of components, peripherals, modules, or devices. In at least one embodiment, processor 2010 is coupled via a bus or interface, such as a 1°C bus, a System Management Bus ("SMBus"), a Low Pin Count (LPC) bus, a Serial Peripheral Interface ( "SPI"), a High Definition Audio ("HDA") bus, a Serial Advance Technology Attachment ("SATA") bus, a Universal Serial Bus ("USB") (versions 1, 2, 3), or a Universal Asynchronous receiver/transmitter ("UART") bus. 20 FIG. 10 shows a system comprising interconnected hardware devices or “chips” while FIG 20 in other embodiments, an example system on a chip ("SoC") may show. In at least one embodiment, the 20 devices represented by proprietary connections, standardized connections (e.g. PCIe) or a combination of these connected together. In at least one embodiment, one or more components of 20 interconnected by Compute Express Link (CXL) connections.

In mindestens einem Ausführungsbeispiel kann 20 eine Anzeige 2024, einen Touchscreen 2025, ein Touchpad 2030, eine Einheit für Nahfeldkommunikation („NFC“) 2045, einen SensorHub 2040, einen Thermosensor 2046, einen Express-Chipsatz („EC“) 2035, ein Trusted Platform Module („TPM“) 2038, BIOS/Firmware/Flash-Speicher („BIOS“, „FW Flash") 2022, ein DSP 2060, ein Laufwerk „SSD oder HDD“) 2020 wie eine Solid State Disk („SSD“) oder ein Festplattenlaufwerk („HDD“), eine Wireless Local Area Network-Einheit („WLAN“) 2050, eine Bluetooth-Einheit 2052, eine Wireless Wide Area Network-Einheit („WWAN“) 2056, ein Global Positioning System (GPS) 2055, eine Kamera („USB 3. 0-Kamera“) 2054, z. B. eine USB 3.0-Kamera, oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 2015 umfassen, die z. B. im LPDDR3-Standard implementiert ist. Diese Komponenten können jeweils auf beliebige geeignete Weise implementiert werden.In at least one embodiment, 20 a display 2024, a touch screen 2025, a touchpad 2030, a near field communication ("NFC") unit 2045, a sensor hub 2040, a thermal sensor 2046, an express chipset ("EC") 2035, a trusted platform module ("TPM") ) 2038, BIOS/firmware/flash memory ("BIOS", "FW Flash") 2022, a DSP 2060, a drive "SSD or HDD") 2020 such as a solid state disk ("SSD") or hard disk drive (" HDD”), a Wireless Local Area Network (“WLAN”) unit 2050, a Bluetooth unit 2052, a Wireless Wide Area Network (“WWAN”) unit 2056, a Global Positioning System (GPS) 2055, a camera ( "USB 3. 0 camera") 2054, such as a USB 3.0 camera, or a Low Power Double Data Rate ("LPDDR") storage device ("LPDDR3") 2015, such as those contained in the LPDDR3 standard is implemented.These components may each be implemented in any suitable manner.

In mindestens einem Ausführungsbeispiel können andere Komponenten über die oben diskutierten Komponenten kommunikativ an den Prozessor 2010 gekoppelt werden. In mindestens einem Ausführungsbeispiel können ein Beschleunigungsmesser 2041, ein Umgebungslichtsensor (engl. ambient light sensor, „ALS“) 2042, ein Kompass 2043 und ein Gyroskop 2044 kommunikativ mit dem Sensorhub 2040 gekoppelt werden. In mindestens einem Ausführungsbeispiel können ein Temperatursensor 2039, ein Lüfter 2037, eine Tastatur 2046 und ein Touchpad 2030 kommunikativ mit dem EC 2035 gekoppelt werden. In mindestens einem Ausführungsbeispiel können der Lautsprecher 2063, ein Kopfhörer 2064 und ein Mikrofon („mic“) 2065 kommunikativ mit einer Audioeinheit („Audio-Codec und Class-D-Amp“) 2064 gekoppelt sein, die wiederum kommunikativ mit dem DSP 2060 gekoppelt sein kann. In mindestens einem Ausführungsbeispiel kann die Audioeinheit 2064 z.B. und ohne Einschränkung einen Audio-Codierer/Decoder („Codec“) und einen Klasse-D-Verstärker umfassen. In mindestens einem Ausführungsbeispiel kann die SIM-Karte („SIM“) 2057 kommunikativ mit der WWAN-Einheit 2056 gekoppelt sein. In mindestens einem Ausführungsbeispiel können Komponenten wie die WLAN-Einheit 2050 und die Bluetooth-Einheit 2052 sowie die WWAN-Einheit 2056 in einem Next Generation Form Factor („NGFF“) implementiert werden.In at least one embodiment, other components may be communicatively coupled to processor 2010 via the components discussed above. In at least one embodiment, an accelerometer 2041 , an ambient light sensor ("ALS") 2042 , a compass 2043 , and a gyroscope 2044 may be communicatively coupled to the sensor hub 2040 . In at least one embodiment, a temperature sensor 2039, a fan 2037, a keyboard 2046, and a touchpad 2030 may be communicatively coupled to the EC 2035. In at least one embodiment, the speaker 2063, a headphone 2064, and a microphone ("mic") 2065 may be communicatively coupled to an audio unit ("audio codec and class D amp") 2064, which in turn is communicatively coupled to the DSP 2060 can be. In at least one embodiment, audio unit 2064 may include, for example and without limitation, an audio encoder/decoder ("codec") and a class-D amplifier. In at least one embodiment, SIM card ("SIM") 2057 may be communicatively coupled to WWAN unit 2056 . In at least one embodiment, components such as WLAN unit 2050 and Bluetooth unit 2052, as well as WWAN unit 2056 may be implemented in a Next Generation Form Factor ("NGFF").

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 20 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 20 to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

21 zeigt ein Computersystem 2100, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist das Computersystem 2100 so konfiguriert, dass es verschiedene Verfahren und Methoden implementiert, die in dieser Offenbarung beschrieben werden. 21 12 shows a computer system 2100, according to at least one embodiment. In at least one embodiment, computer system 2100 is configured to implement various methods and methods described in this disclosure.

In mindestens einem Ausführungsbeispiel umfasst das Computersystem 2100 ohne Einschränkung mindestens eine zentrale Verarbeitungseinheit („CPU“) 2102, die mit einem Kommunikationsbus 2110 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls wie PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder eines anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokolls bzw. beliebiger anderer Bus- oder Punkt-zu-Punkt-Kommunikationsprotokolle implementiert ist. In mindestens einem Ausführungsbeispiel umfasst das Computersystem 2100 ohne Einschränkung einen Hauptspeicher 2104 und Steuerlogik (z.B. implementiert als Hardware, Software oder eine Kombination davon), und die Daten werden im Hauptspeicher 2104 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einem Ausführungsbeispiel ist ein Netzwerkschnittstellen-Subsystem („Netzwerkschnittstelle“) 2122 eine Schnittstelle zu anderen Rechengeräten und Netzwerken zum Empfang von Daten von und zur Übertragung von Daten an andere Systeme vom Computersystem 2100 bereitgestellt.In at least one embodiment, the computer system 2100 includes, without limitation, at least one central processing unit (“CPU”) 2102 connected to a communication bus 2110, which may be communicated using any suitable protocol such as Peripheral Component Interconnect (PCI), Peripheral Component Interconnect Express (“PCI-Express”), AGP (“Accelerated Graphics Port”), HyperTransport or any other bus or point-to-point communication protocol or any other bus or point-to-point communication protocol. In at least one embodiment, computer system 2100 includes, without limitation, main memory 2104 and control logic (e.g., implemented as hardware, software, or a combination thereof), and data is stored in main memory 2104, which may take the form of random access memory ("RAM"). In at least one embodiment, a network interface subsystem ("network interface") 2122 is provided by computer system 2100 to interface to other computing devices and networks for receiving data from and transmitting data to other systems.

In mindestens einem Ausführungsbeispiel umfasst das Rechnersystem 2100, in mindestens einem Ausführungsbeispiel, unter anderem die Eingabegeräte 2108, das Parallelverarbeitungssystem 2112 und die Anzeigegeräte 2106, die mit einer herkömmlichen Kathodenstrahlröhre („CRT“), einer Flüssigkristallanzeige („LCD“), einer Leuchtdiode („LED“), einer Plasmaanzeige oder anderen geeigneten Anzeigetechnologien realisiert werden können. In mindestens einem Ausführungsbeispiel werden Benutzereingaben von Eingabegeräten 2108 wie Tastatur, Maus, Touchpad, Mikrofon und mehr empfangen. In mindestens einem Ausführungsbeispiel kann jedes der vorgenannten Module auf einer einzigen Halbleiterplattform angeordnet sein, um ein Verarbeitungssystem zu bilden.In at least one embodiment, the computing system 2100 includes, in at least one embodiment, the input devices 2108, the parallel processing system 2112, and the display devices 2106, which may be a conventional cathode ray tube ("CRT"), a liquid crystal display ("LCD"), a light emitting diode ( "LED"), a plasma display or other suitable display technologies rea can be lised. In at least one embodiment, user input is received from input devices 2108 such as a keyboard, mouse, touchpad, microphone, and more. In at least one embodiment, each of the foregoing modules may be arranged on a single semiconductor platform to form a processing system.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 21 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 21 to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

22 zeigt ein Computersystem 2200, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst das Computersystem 2200, ohne Einschränkung, einen Computer 2210 und einen USB-Stick 2220. In mindestens einem Ausführungsbeispiel kann Computer 2210 ohne Einschränkung eine beliebige Anzahl und Art von Prozessor(en) (nicht abgebildet) und einen Speicher (nicht abgebildet) umfassen. In mindestens einem Ausführungsbeispiel umfasst Computer 2210, ohne Einschränkung, einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer. 22 12 shows a computer system 2200, according to at least one embodiment. In at least one embodiment, computer system 2200 includes, without limitation, computer 2210 and thumb drive 2220. In at least one embodiment, computer 2210 may include any number and type of processor(s) (not shown) and memory (not shown). In at least one embodiment, computer 2210 includes, without limitation, a server, a cloud instance, a laptop, and a desktop computer.

In mindestens einem Ausführungsbeispiel umfasst der USB-Stick 2220 ohne Einschränkung eine Verarbeitungseinheit 2230, eine USB-Schnittstelle 2240 und eine USB-Schnittstellenlogik 2250. In mindestens einem Ausführungsbeispiel kann es sich bei der Verarbeitungseinheit 2230 um ein beliebiges Befehlsausführungssystem, ein Gerät oder eine Vorrichtung handeln, die in der Lage ist, Befehle auszuführen. In mindestens einem Ausführungsbeispiel kann die Verarbeitungseinheit 2230 ohne Einschränkung eine beliebige Anzahl und Art von Verarbeitungskernen umfassen (nicht abgebildet). In mindestens einem Ausführungsbeispiel umfasst der Verarbeitungskern 2230 eine anwendungsspezifische integrierte Schaltung („ASIC“), der für die Ausführung einer beliebigen Anzahl und Art von Operationen optimiert ist, die mit maschinellem Lernen assoziiert sind. In mindestens einem Ausführungsbeispiel ist der Verarbeitungskern 2230 beispielsweise eine Tensorverarbeitungseinheit („TPC“), die für die Durchführung von Inferenzoperationen des maschinellen Lernens optimiert ist. In mindestens einem Ausführungsbeispiel ist der Verarbeitungskern 2230 eine Bildverarbeitungseinheit („VPU“), die für die Durchführung von Inferenzoperationen im Zusammenhang mit maschineller Bildverarbeitung und maschinellem Lernen optimiert ist.In at least one embodiment, USB key 2220 includes, without limitation, processing unit 2230, USB interface 2240, and USB interface logic 2250. In at least one embodiment, processing unit 2230 may be any instruction execution system, device, or device , capable of executing commands. In at least one embodiment, processing unit 2230 may include any number and type of processing cores (not shown), without limitation. In at least one embodiment, the processing core 2230 comprises an application specific integrated circuit ("ASIC") optimized to perform any number and type of operations associated with machine learning. For example, in at least one embodiment, the processing core 2230 is a tensor processing unit ("TPC") optimized for performing machine learning inference operations. In at least one embodiment, the processing core 2230 is an image processing unit ("VPU") optimized for performing inference operations related to machine vision and machine learning.

In mindestens einem Ausführungsbeispiel kann die USB-Schnittstelle 2240 eine beliebige Art von USB-Stecker oder USB-Buchse sein. In mindestens einem Ausführungsbeispiel ist die USB-Schnittstelle 2240 beispielsweise eine USB 3.0 Typ-C-Buchse für Daten und Strom. In mindestens einem Ausführungsbeispiel ist die USB-Schnittstelle 2240 ein USB-3.0-Stecker vom Typ A. In mindestens einem Ausführungsbeispiel kann die USB-Schnittstellenlogik 2250 eine beliebige Menge und Art von Logik umfassen, die es der Verarbeitungseinheit 2230 ermöglicht, über den USB-Anschluss 2240 eine Schnittstelle mit Geräten (z.B. Computer 2210) zu bilden.In at least one embodiment, the USB interface 2240 can be any type of USB plug or USB socket. For example, in at least one embodiment, the USB interface 2240 is a USB 3.0 Type-C socket for data and power. In at least one embodiment, USB interface 2240 is a USB 3.0 Type A connector. In at least one embodiment, USB interface logic 2250 may include any amount and type of logic that enables processing unit 2230 to communicate over USB Port 2240 to interface with devices (e.g. computer 2210).

Die Inferenz- und/oder Trainingslogik 1515 werden verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 22 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 22 to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

23A zeigt eine beispielhafte Architektur, in der eine Vielzahl von GPUs 2310-2313 mit einer Vielzahl von Mehrkernprozessoren 2305-2306 über Hochgeschwindigkeitsverbindungen 2340-2343 kommunikativ gekoppelt ist (z.B. Busse, Punkt-zu-Punkt-Verbindungen usw.). In einem Ausführungsbeispiel unterstützen die Hochgeschwindigkeitsverbindungen 2340-2343 einen Kommunikationsdurchsatz von 4 GB/s, 30 GB/s, 80 GB/s oder höher. Verschiedene Verbindungsprotokolle können verwendet werden, einschließlich, aber nicht beschränkt auf, PCIe 4.0 oder 5.0 und NVLink 2.0. 23A Figure 12 shows an example architecture in which a plurality of GPUs 2310-2313 are communicatively coupled to a plurality of multi-core processors 2305-2306 via high-speed links 2340-2343 (eg, buses, point-to-point links, etc.). In one embodiment, high-speed links 2340-2343 support a communication throughput of 4 GB/s, 30 GB/s, 80 GB/s, or higher. Various connection protocols can be used including, but not limited to, PCIe 4.0 or 5.0 and NVLink 2.0.

Zusätzlich, und gemäß einem Ausführungsbeispiel, sind zwei oder mehr der GPUs 2310-2313 über Hochgeschwindigkeitsverbindungen 2329-2330 miteinander verbunden, die mit denselben oder anderen Protokollen/Links als die für die Hochgeschwindigkeitsverbindungen 2340-2343 verwendeten implementiert werden können. In ähnlicher Weise können zwei oder mehr Mehrkernprozessoren 2305-2306 über die Hochgeschwindigkeitsverbindung 2328 verbunden werden, bei der es sich um symmetrische Multiprozessor-Busse (SMP) handeln kann, die mit 20 GB/s, 30 GB/s, 120 GB/s oder höher arbeiten. Alternativ kann die gesamte Kommunikation zwischen verschiedenen in 23A gezeigten Systemkomponenten über dieselben Protokolle/Links erfolgen (z.B. über eine gemeinsame Verbindungsstruktur).Additionally, and according to one embodiment, two or more of the GPUs 2310-2313 are interconnected via high-speed links 2329-2330, which may be implemented with the same or different protocols/links than those used for the high-speed links 2340-2343. Similarly, two or more multi-core processors 2305-2306 can be connected via high-speed interconnect 2328, which can be symmetric multiprocessor (SMP) buses operating at 20 GB/s, 30 GB/s, 120 GB/s, or work higher. Alternatively, all communication between different in 23A system components shown take place via the same protocols/links (e.g. via a common connection structure).

In einem Ausführungsbeispiel ist jeder Mehrkernprozessor 2305-2306 über die Speicherverbindungen 2326-2327 kommunikativ mit einem Prozessorspeicher 2301-2302 gekoppelt, und jeder Grafikprozessor 2310-2313 ist über die GPU-Speicherverbindungen 2350-2353 kommunikativ mit dem GPU-Speicher 2320-2323 gekoppelt. Die Speicherverbindungen 2326-2327 und 2350-2353 können gleiche oder unterschiedliche Speicherzugriffstechnologien verwenden. Als Beispiel, ohne Einschränkung, können Prozessorspeicher 2301-2302 und GPU-Speicher 2320-2323 flüchtige Speicher wie dynamische Direktzugriffsspeicher (DRAM) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z. B. GDDR5, GDDR6) oder Speicher mit hoher Bandbreite (HBM) und/oder nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein. In einem Ausführungsbeispiel kann ein Teil der Prozessorspeicher 2301-2302 flüchtiger Speicher und ein anderer Teil nichtflüchtiger Speicher sein (z. B. bei Verwendung einer zweistufigen Speicherhierarchie (2LM)).In one embodiment, each multi-core processor 2305-2306 is communicatively coupled to processor memory 2301-2302 via memory interconnects 2326-2327, and each graphics processor 2310-2313 is communicatively coupled to GPU memory 2320-2323 via GPU memory interconnects 2350-2353. Memory interconnects 2326-2327 and 2350-2353 may use the same or different memory access technologies. As an example, without limitation, processor memory 2301-2302 and GPU memory 2320-2323 may be volatile memory such as dynamic random access memory (DRAM) (including stacked DRAMs), graphics DDR-SDRAM (GDDR) (e.g., GDDR5, GDDR6), or High bandwidth memory (HBM) and/or non-volatile memory such as 3D XPoint or Nano-Ram. In one embodiment, some of the processor memories 2301-2302 may be volatile memory and some may be non-volatile memory (e.g., using a two-level memory hierarchy (2LM)).

Wie hier beschrieben, können zwar verschiedene Prozessoren 2305-2306 und GPUs 2310-2313 physisch an einen bestimmten Speicher 2301-2302 bzw. 2320-2323 gekoppelt sein, es kann jedoch eine einheitliche Speicherarchitektur implementiert werden, bei der ein und derselbe virtuelle Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physische Speicher verteilt wird. Beispielsweise können die Prozessorspeicher 2301-2302 jeweils 64 GB Systemspeicher-Adressraum und die GPU-Speicher 2320-2323 jeweils 32 GB Systemspeicher-Adressraum umfassen (was in diesem Beispiel zu einem adressierbaren Speicher von insgesamt 256 GB führt).As described herein, while different processors 2305-2306 and GPUs 2310-2313 can be physically coupled to a particular memory 2301-2302 and 2320-2323, respectively, a unified memory architecture can be implemented using the same virtual system address space (aka referred to as the “effective address space”) is distributed across different physical memories. For example, processor memories 2301-2302 may each include 64 GB of system memory address space and GPU memories 2320-2323 may each include 32 GB of system memory address space (resulting in a total of 256 GB of addressable memory in this example).

23B zeigt zusätzliche Details für eine Verbindung zwischen einem Mehrkernprozessor 2307 und einem Grafikbeschleunigungsmodul 2346, gemäß einem Ausführungsbeispiel. Das Grafikbeschleunigungsmodul 2346 kann einen oder mehrere GPU-Chips umfassen, die auf einer Leitungskarte integriert sind, die über die Hochgeschwindigkeitsverbindung 2340 mit dem Prozessor 2307 gekoppelt ist. Alternativ kann das Grafikbeschleunigungsmodul 2346 in demselben Gehäuse oder Chip wie der Prozessor 2307 integriert sein. 23B 13 shows additional details for a connection between a multi-core processor 2307 and a graphics accelerator module 2346, according to one embodiment. Graphics accelerator module 2346 may include one or more GPU chips integrated on a line card coupled to processor 2307 via high speed interconnect 2340 . Alternatively, the 2346 graphics accelerator module may be integrated into the same package or chip as the 2307 processor.

In mindestens einem Ausführungsbeispiel umfasst der abgebildete Prozessor 2307 eine Vielzahl von Kernen 2360A-2360D, jeder mit einem Übersetzungs-Lookaside-Puffer 2361A-2361D und einem oder mehreren Caches 2362A-2362D. In mindestens einem Ausführungsbeispiel können die Kerne 2360A-2360D verschiedene andere Komponenten zur Ausführung von Befehlen und zur Verarbeitung von Daten umfassen, die nicht abgebildet sind. Die Caches 2362A-2362D können Level 1 (L1)- und Level 2 (L2)-Caches umfassen. Darüber hinaus können ein oder mehrere gemeinsam genutzte Caches 2356 in den Caches 2362A-2362D enthalten sein und von Sätzen von Kernen 2360A-2360D gemeinsam genutzt werden. Beispielsweise umfasst ein Ausführungsbeispiel des Prozessors 2307 24 Kerne, jeder mit seinem eigenen LI-Cache, zwölf gemeinsam genutzte L2-Caches und zwölf gemeinsam genutzte L3-Caches. In diesem Ausführungsbeispiel werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. Der Prozessor 2307 und das Grafikbeschleunigungsmodul 2346 sind mit dem Systemspeicher 2314 verbunden, der die Prozessorspeicher 2301-2302 von 23A umfassen kann.In at least one embodiment, the processor 2307 depicted includes a plurality of cores 2360A-2360D, each with a translation lookaside buffer 2361A-2361D and one or more caches 2362A-2362D. In at least one embodiment, cores 2360A-2360D may include various other components for executing instructions and processing data that are not shown. Caches 2362A-2362D may include level 1 (L1) and level 2 (L2) caches. Additionally, one or more shared caches 2356 may be included within caches 2362A-2362D and shared between sets of cores 2360A-2360D. For example, one embodiment of processor 2307 includes 24 cores, each with its own LI cache, twelve shared L2 caches, and twelve shared L3 caches. In this embodiment, one or more L2 and L3 caches are shared between two adjacent cores. The processor 2307 and the graphics accelerator module 2346 are connected to the system memory 2314, which contains the processor memories 2301-2302 of 23A may include.

Kohärenz wird für Daten und Befehle, die in verschiedenen Caches 2362A-2362D, 2356 und im Systemspeicher 2314 gespeichert sind, über die Kommunikation zwischen den Kernen über einen Kohärenzbus 2364 aufrechterhalten. Beispielsweise kann jedem Cache eine Cache-Kohärenzlogik/Schaltungsanordnung zugeordnet werden, um als Reaktion auf erkannte Lese- oder Schreibvorgänge in bestimmte Cache-Leitungen über den Kohärenzbus 2364 zu kommunizieren. In einer Implementierung ist ein Cache-Snooping-Protokoll über den Kohärenzbus 2364 implementiert, um Cache-Zugriffe abzuhören.Coherency is maintained for data and instructions stored in various caches 2362A-2362D, 2356 and in system memory 2314 via communication between the cores over a coherency bus 2364. For example, cache coherency logic/circuitry may be associated with each cache to communicate over the coherency bus 2364 in response to detected reads or writes to particular cache lines. In one implementation, a cache snooping protocol is implemented over the coherency bus 2364 to snoop on cache accesses.

In einem Ausführungsbeispiel koppelt ein Proxy-Schaltkreis 2325 das Grafikbeschleunigungsmodul 2346 kommunikativ an den Kohärenzbus 2364, so dass das Grafikbeschleunigungsmodul 2346 als Peer der Kerne 2360A-2360D an einem Cache-Kohärenzprotokoll teilnehmen kann. Insbesondere ist eine Schnittstelle 2335 für die Verbindung mit dem Proxy-Schaltkreis 2325 über die Hochgeschwindigkeitsverbindung 2340 (z. B. PCIe-Bus, NVLink usw.) vorgesehen, und eine Schnittstelle 2337 verbindet das Grafikbeschleunigungsmodul 2346 mit der Verbindung 2340.In one embodiment, a proxy circuit 2325 communicatively couples the graphics accelerator module 2346 to the coherency bus 2364 so that the graphics accelerator module 2346 can participate in a cache coherency protocol as a peer of the cores 2360A-2360D. In particular, an interface 2335 is for connection to the proxy circuitry 2325 over the high speed link 2340 (e.g. PCIe bus, NVLink, etc.) and an interface 2337 connects the graphics accelerator module 2346 to the connection 2340.

In einer Implementierung ist ein Beschleuniger-Integrationsschaltkreis 2336 für eine Vielzahl von Grafikverarbeitungs-Engines 2331, 2332, N des Grafikbeschleunigungsmoduls 2346 für Cache-Verwaltung, Speicherzugriff, Kontext-Verwaltung und Interrupt-Verwaltungsdienste bereitgestellt. Die Engines 2331, 2332, N können jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. Alternativ können die Grafikverarbeitungs-Engines 2331, 2332, N verschiedene Typen von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie z. B. Grafikausführungseinheiten, Medienverarbeitungs-Engines (z. B. Video-Codierer/-Decoder), Sampler und Blit-Engines. In mindestens einem Ausführungsbeispiel kann das Grafikbeschleunigungsmodul 2346 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 2331-2332, N oder Grafikverarbeitungs-Engines 2331-2332, N können einzelne GPUs sein, die in einem gemeinsamen Gehäuse, einer Leitungskarte oder einem Chip integriert sind.In one implementation, an accelerator integration circuit 2336 is provided for a plurality of graphics processing engines 2331, 2332, N of the graphics accelerator module 2346 for cache management, memory access, context management, and interrupt management services. The engines 2331, 2332, N can each comprise a separate graphics processing unit (GPU). Alternatively, the graphics processing engines 2331, 2332, N can include different types of graphics processing engines within a GPU, such as e.g. B. graphics execution units, media processing engines (e.g. video encoders/decoders), samplers and blit engines. In at least one embodiment, graphics accelerator module 2346 may be a GPU with a plurality of graphics processing engines 2331-2332,N or graphics processing engines 2331-2332,N may be individual GPUs integrated into a common chassis, line card, or chip.

In einem Ausführungsbeispiel umfasst der Beschleuniger-Integrationsschaltkreis 2336 eine Speicherverwaltungseinheit (MMU) 2339 zur Ausführung verschiedener Speicherverwaltungsfunktionen wie Übersetzungen von virtuellem in physischen Speicher (auch als Übersetzungen von effektivem in realen Speicher bezeichnet) und Speicherzugriffsprotokolle für den Zugriff auf den Systemspeicher 2314. MMU 2339 kann auch einen Übersetzungs-Lookaside-Puffer (engl. translation lookaside buffer, TLB) (nicht abgebildet) für die Zwischenspeicherung von Übersetzungen von virtuellen/effektiven in physische/reale Adressen umfassen. In einem Ausführungsbeispiel speichert ein Cache 2338 Befehle und Daten für den effizienten Zugriff durch die Engines 2331-2332, N. In einem Ausführungsbeispiel werden die im Cache 2338 und in den Grafikspeichern 2333-2334, M gespeicherten Daten mit den Kern-Caches 2362A-2362D, 2356 und dem Systemspeicher 2314 kohärent gehalten. Wie bereits erwähnt, kann dies über den Proxy-Schaltkreis 2325 für Cache 2338 und die Speicher 2333-2334, M erfolgen (z.B. Senden von Aktualisierungen an Cache 2338 im Zusammenhang mit Änderungen/Zugriffen auf Cache-Zeilen in den Prozessor-Caches 2362A-2362D, 2356 und Empfang von Aktualisierungen von Cache 2338).In one embodiment, the accelerator integration circuit 2336 includes a memory management unit (MMU) 2339 for performing various memory management functions such as virtual to physical memory translations (also referred to as effective to real memory translations) and memory access protocols for accessing the system memory 2314. MMU 2339 can may also include a translation lookaside buffer (TLB) (not shown) for caching translations from virtual/effective to physical/real addresses. In one embodiment, a cache 2338 stores instructions and data for efficient access by engines 2331-2332,N. In one embodiment, the data stored in cache 2338 and graphics memories 2333-2334,M is shared with core caches 2362A-2362D , 2356 and the system memory 2314 are kept coherent. As previously mentioned, this can be done via proxy circuitry 2325 for cache 2338 and memories 2333-2334, M (e.g. sending updates to cache 2338 related to changes/accesses to cache lines in processor caches 2362A-2362D , 2356 and receiving updates from cache 2338).

Ein Satz von Registern 2345 speichert Kontextdaten für Threads, die von den Engines 2331-2332, N für die Grafikverarbeitung ausgeführt werden, und ein Kontextverwaltungsschaltkreis 2348 verwaltet Thread-Kontexte. Der Kontextverwaltungsschaltkreis 2348 kann beispielsweise Sicherungs- und Wiederherstellungsoperationen durchführen, um die Kontexte verschiedener Threads während des Umschaltens von Kontexten zu sichern und wiederherzustellen (z.B. wenn ein erster Thread gesichert und ein zweiter Thread gespeichert wird, so dass ein zweiter Thread von der Engine zur Grafikverarbeitung ausgeführt werden kann). Bei einem Kontextwechsel kann z.B. die Kontextverwaltungsschaltung 2348 aktuelle Registerwerte in einem bestimmten Bereich im Speicher (z.B. identifiziert durch einen Identifikator) speichern. Sie kann dann Registerwerte wiederherstellen, wenn sie zu einem Kontext zurückkehrt. In einem Ausführungsbeispiel empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 2347 von Systemgeräten empfangene Unterbrechungen.A set of registers 2345 stores context data for threads executed by the graphics processing engines 2331-2332,N and a context management circuit 2348 manages thread contexts. For example, the context management circuitry 2348 may perform save and restore operations to save and restore the contexts of different threads during context switching (e.g., when a first thread is saved and a second thread saved so that a second thread is executed by the graphics processing engine can be). For example, upon a context switch, the context management circuit 2348 may store current register values in a particular area in memory (e.g., identified by an identifier). It can then restore register values when returning to a context. In one embodiment, an interrupt management circuit 2347 receives and processes interrupts received from system devices.

In einer Implementierung werden virtuelle/effektive Adressen aus der Grafikverarbeitungs-Engine 2331 durch die MMU 2339 in reelle/physikalische Adressen im Systemspeicher 2314 übersetzt. Ein Ausführungsbeispiel der Beschleuniger-Integrationsschaltkreis 2336 unterstützt mehrere (z.B. 4, 8, 16) Grafik-Beschleunigermodule 2346 und/oder andere Beschleunigergeräte. Das Grafikbeschleunigermodul 2346 kann für eine einzelne, auf dem Prozessor 2307 ausgeführte Anwendung dediziert sein oder von mehreren Anwendungen gemeinsam genutzt werden. In einem Ausführungsbeispiel wird eine virtualisierte Grafikausführungsumgebung dargestellt, in der Ressourcen der Grafikverarbeitungs-Engines 2331-2332, N von mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel können Ressourcen in „Abschnitte“ (engl. slices) unterteilt werden, die verschiedenen VMs und/oder Anwendungen basierend auf den mit VMs und/oder Anwendungen assoziierten Verarbeitungsanforderungen und Prioritäten zugewiesen werden.In one implementation, virtual/effective addresses from graphics processing engine 2331 are translated by MMU 2339 to real/physical addresses in system memory 2314 . One embodiment of the accelerator integration circuit 2336 supports multiple (e.g., 4, 8, 16) graphics accelerator modules 2346 and/or other accelerator devices. The graphics accelerator module 2346 can be dedicated to a single application running on the processor 2307 or shared between multiple applications. In one embodiment, a virtualized graphics execution environment is presented in which resources of graphics processing engines 2331-2332, N are shared between multiple applications or virtual machines (VMs). In at least one embodiment, resources may be divided into "slices" that are allocated to different VMs and/or applications based on the processing requirements and priorities associated with VMs and/or applications.

In mindestens einem Ausführungsbeispiel funktioniert der Beschleuniger-Integrationsschaltkreis 2336 als Brücke zu einem System für Grafikbeschleunigungsmodul 2346 und stellt Adressübersetzung und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann der Beschleuniger-Integrationsschaltkreis 2336 Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungsmodule 2331-2332, Interrupts und Speicherverwaltung zu verwalten.In at least one embodiment, accelerator integration circuit 2336 functions as a bridge to a system graphics accelerator module 2346 and provides address translation and system memory caching services. In addition, the accelerator integration circuit 2336 may provide virtualization facilities for a host processor to manage virtualization of the graphics processing modules 2331-2332, interrupts, and memory management.

Da die Hardwareressourcen der Grafikverarbeitungs-Engines 2331-2332, N explizit einem realen Adressraum zugeordnet sind, der vom Host-Prozessor 2307 gesehen wird, kann jeder beliebige Host-Prozessor diese Ressourcen direkt über einen effektiven Adresswert adressieren. Eine Funktionalität des Beschleuniger-Integrationsschaltkreises 2336, in einem Ausführungsbeispiel, ist die physische Trennung der Engines 2331-2332, N, so dass sie für ein System als unabhängige Einheiten erscheinen.Since the hardware resources of the graphics processing engines 2331-2332,N are explicitly mapped to a real address space seen by the host processor 2307, any host processor can directly address these resources via an effective address value. A functionality of Accelerator integration circuit 2336, in one embodiment, is the physical separation of engines 2331-2332, N so that they appear to a system as independent entities.

In mindestens einem Ausführungsbeispiel sind ein oder mehrere Grafikspeicher 2333-2334, M jeweils mit den Engines 2331-2332, N gekoppelt. Grafikspeicher 2333-2334, M speichern Befehle und Daten, die von der jeweiligen Grafikverarbeitungs-Engine 2331-2332, N verarbeitet werden. Bei den Grafikspeichern 2333-2334, M kann es sich um flüchtige Speicher wie DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z. B. GDDR5, GDDR6) oder HBM und/oder um nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram handeln.In at least one embodiment, one or more graphics memories 2333-2334,M are coupled to engines 2331-2332,N, respectively. Graphics memories 2333-2334,M store commands and data to be processed by the respective graphics processing engine 2331-2332,N. Graphics memory 2333-2334,M can be volatile memory such as DRAM (including stacked DRAM), GDDR memory (e.g. GDDR5, GDDR6) or HBM and/or non-volatile memory such as 3D XPoint or Nano-Ram .

In einem Ausführungsbeispiel werden, um den Datenverkehr über die Verbindung 2340 zu reduzieren, Vorgabetechniken (engl. biasing techniques) verwendet, um sicherzustellen, dass die in den Grafikspeichern 2333-2334, M gespeicherten Daten die Daten sind, die am häufigsten von den Grafikverarbeitungs-Engines 2331-2332, N und vorzugsweise nicht von den Kernen 2360A-2360D (zumindest nicht häufig) verwendet werden. In ähnlicher Weise versucht ein Vorgabemechanismus, die von den Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 2331-2332, N) benötigten Daten in den Caches 2362A-2362D, 2356 der Kerne und dem Systemspeicher 2314 zu halten.In one embodiment, to reduce data traffic over link 2340, biasing techniques are used to ensure that the data stored in graphics memories 2333-2334,M is the data most frequently used by the graphics processing engines. Engines 2331-2332, N and preferably not used by cores 2360A-2360D (at least not often). Similarly, a default mechanism attempts to hold the data needed by the cores (and preferably not by the graphics processing engines 2331-2332,N) in the cores' caches 2362A-2362D, 2356 and system memory 2314.

23C zeigt ein weiteres exemplarisches Ausführungsbeispiel, in dem der Beschleuniger-Integrationsschaltkreis 2336 im Prozessor 2307 integriert ist. In diesem Ausführungsbeispiel kommunizieren die Engines 2331-2332, N direkt über die Hochgeschwindigkeitsverbindung 2340 mit dem Beschleuniger-Integrationsschaltkreis 2336 über die Schnittstelle 2337 und die Schnittstelle 2335 (die wiederum jede Art von Bus oder Schnittstellenprotokoll verwenden kann). Der Beschleuniger-Integrationsschaltkreis 2336 kann die gleichen Operationen wie die in 23B beschriebenen ausführen, jedoch möglicherweise mit einem höheren Durchsatz, da er sich in unmittelbarer Nähe des Kohärenzbusses 2364 und der Caches 2362A-2362D, 2356 befindet. In einem Ausführungsbeispiel werden verschiedene Programmiermodelle unterstützt, darunter ein dediziertes Prozess-Programmiermodell (keine Virtualisierung des GrafikBeschleunigungsmoduls) und gemeinsam genutzte Programmiermodelle (mit Virtualisierung), die Programmiermodelle umfassen können, die durch den Beschleuniger-Integrationsschaltkreis 2336 gesteuert werden, sowie Programmiermodelle, die durch das GrafikBeschleunigungsmodul 2346 gesteuert werden. 23C FIG. 12 shows another exemplary embodiment in which accelerator integrated circuit 2336 is integrated in processor 2307. FIG. In this embodiment, engines 2331-2332,N communicate directly over high speed link 2340 with accelerator integrated circuit 2336 via interface 2337 and interface 2335 (which in turn may use any type of bus or interface protocol). The accelerator integrated circuit 2336 can perform the same operations as those in FIG 23B as described, but possibly with higher throughput since it is in close proximity to the coherency bus 2364 and caches 2362A-2362D, 2356. In one embodiment, various programming models are supported, including a dedicated process programming model (no graphics accelerator virtualization) and shared programming models (with virtualization), which may include programming models controlled by the accelerator integration circuit 2336 and programming models controlled by the Graphics accelerator module 2346 can be controlled.

In mindestens einem Ausführungsbeispiel sind die Grafikverarbeitungs-Engines 2331-2332, N für eine einzige Anwendung oder einen einzigen Prozess unter einem einzigen Betriebssystem bestimmt. In mindestens einem Ausführungsbeispiel kann eine einzelne Anwendung andere Anwendungsanforderungen zu den Grafikverarbeitungs-Engines 2331-2332, N leiten und so die Virtualisierung innerhalb einer VM/Partition bereitstellen.In at least one embodiment, the graphics processing engines 2331-2332,N are dedicated to a single application or process under a single operating system. In at least one embodiment, a single application can route other application requests to the graphics processing engines 2331-2332,N, thus providing virtualization within a VM/partition.

In mindestens einem Ausführungsbeispiel können die Grafikverarbeitungs-Engines 2331-2332, N von mehreren VM/Anwendungspartitionen gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel können gemeinsam genutzte Modelle einen Systemhypervisor zur Virtualisierung der Grafikverarbeitungs-Engines 2331-2332, N verwenden, um den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einer Partition ohne Hypervisor sind die Engines 2331-2332, N für Grafikverarbeitungsanwendungen Bestandteil eines Betriebssystems. In mindestens einem Ausführungsbeispiel kann ein Betriebssystem die Grafikverarbeitungs-Engines 2331-2332, N virtualisieren, um den Zugriff auf jeden Prozess oder jede Anwendung zu ermöglichen.In at least one embodiment, the graphics processing engines 2331-2332,N may be shared between multiple VM/application partitions. In at least one embodiment, shared models may use a system hypervisor to virtualize the graphics processing engines 2331-2332,N to allow access by any operating system. On systems with a partition without a hypervisor, the engines 2331-2332, N for graphics processing applications are part of an operating system. In at least one embodiment, an operating system may virtualize the graphics processing engines 2331-2332,N to allow access to any process or application.

In mindestens einem Ausführungsbeispiel, wählt das Grafikbeschleunigungsmodul 2346 oder eine einzelne Grafikverarbeitungs-Engine 2331-2332, N ein Prozesselement unter Verwendung eines Prozesshandles aus. In einem Ausführungsbeispiel werden die Prozesselemente im Systemspeicher 2314 gespeichert und sind unter Verwendung einer hier beschriebenen Übersetzungstechniken für effektive Adressen in reale Adressen adressierbar. In mindestens einem Ausführungsbeispiel kann ein Prozess-Handle ein implementierungsspezifischer Wert sein, der einem Host-Prozess bei der Registrierung seines Kontexts bei der Grafikverarbeitungs-Engine 2331-2332, N bereitgestellt wird (d.h. Aufruf der Systemsoftware, um ein Prozesselement zu einer Prozesselement-Verknüpfungsliste hinzuzufügen). In mindestens einem Ausführungsbeispiel können die unteren 16 Bits eines Prozess-Handle ein Offset des Prozesselements innerhalb einer Prozesselement-Verknüpfungsliste sein.In at least one embodiment, the graphics accelerator module 2346 or an individual graphics processing engine 2331-2332, N selects a process item using a process handle. In one embodiment, the process elements are stored in system memory 2314 and are addressable using an effective address-to-real address translation technique described herein. In at least one embodiment, a process handle may be an implementation-specific value provided to a host process upon registering its context with the graphics processing engine 2331-2332, N (i.e., calling system software to add a process item to a process item linked list to add). In at least one embodiment, the lower 16 bits of a process handle may be an offset of the process item within a process item linked list.

23D zeigt einen exemplarischen Beschleuniger-Integrationsabschnitt 2390. Wie hier verwendet, umfasst ein „Abschnitt“ (engl. slice) einen spezifischen Teil der Verarbeitungsressourcen des Beschleuniger-Integrationsschaltkreises 2336. Der effektive Anwendungsadressraum 2382 innerhalb des Systemspeichers 2314 speichert die Prozesselemente 2383. In einem Ausführungsbeispiel werden Prozesselemente 2383 als Antwort auf GPU-Aufrufe 2381 von Anwendungen 2380 gespeichert, die auf Prozessor 2307 ausgeführt werden. Ein Prozesselement 2383 enthält den Prozesszustand für die entsprechende Anwendung 2380. Ein Arbeitsdeskriptor (WD) 2384, der in Prozesselement 2383 enthalten ist, kann ein einzelner Job sein, der von einer Anwendung angefordert wird, oder kann einen Zeiger auf eine Warteschlange von Jobs enthalten. In mindestens einem Ausführungsbeispiel ist WD 2384 ein Zeiger auf eine Jobanforderungs-Warteschlange im Adressraum 2382 einer Anwendung. 23D Figure 12 shows an exemplary accelerator integration slice 2390. As used herein, a "slice" includes a specific portion of the accelerator integration circuit's 2336 processing resources. The effective application address space 2382 within system memory 2314 stores the process items 2383. In one embodiment, process items 2383 are stored in response to GPU calls 2381 from applications 2380 executing on processor 2307. A process element 2383 contains the process state for the corresponding application 2380. A work descriptor (WD) 2384 contained in process element 2383 may be a single job requested by an application or may contain a pointer to a queue of jobs. In at least one embodiment, WD 2384 is a pointer to a job request queue in an application's address space 2382 .

Das Grafikbeschleunigungsmodul 2346 und/oder die einzelnen Grafikverarbeitungs-Engines 2331-2332, N können von allen oder einer Teilmenge von Prozessen in einem System gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel kann eine Infrastruktur zum Einrichten des Prozesszustands und Senden eines WD 2384 an ein Grafikbeschleunigungsmodul 2346 zum Starten eines Jobs in einer virtualisierten Umgebung enthalten sein.Graphics accelerator module 2346 and/or individual graphics processing engines 2331-2332,N may be shared by all or a subset of processes in a system. In at least one embodiment, infrastructure for establishing process state and sending a WD 2384 to a graphics accelerator 2346 to start a job in a virtualized environment may be included.

In mindestens einem Ausführungsbeispiel ist ein Programmierungsmodell für einen dedizierten Prozess implementierungsspezifisch. In diesem Modell besitzt ein einzelner Prozess das Grafikbeschleunigungsmodul 2346 oder eine einzelne Grafikverarbeitungs-Engine 2331. Da sich das Grafikbeschleunigungsmodul 2346 im Besitz eines einzelnen Prozesses befindet, initialisiert ein Hypervisor den Beschleuniger-Integrationsschaltkreis 2336 für eine besitzende Partition und ein Betriebssystem initialisiert den Beschleuniger-Integrationsschaltkreis 2336 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 2346 zugewiesen wird.In at least one embodiment, a dedicated process programming model is implementation specific. In this model, a single process owns the graphics accelerator module 2346 or a single graphics processing engine 2331. Since the graphics accelerator module 2346 is owned by a single process, a hypervisor initializes the accelerator IC 2336 for an owning partition and an operating system initializes the accelerator IC 2336 for an owning process when the Graphics Accelerator Module 2346 is allocated.

Im Betrieb holt eine WD-Hol-Einheit 2391 im Beschleuniger-Integrationsabschnitt 2390 den nächsten WD 2384, der einen Hinweis auf die von einer oder mehreren Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 2346 zu erledigende Arbeit umfasst. Daten von WD 2384 können in Registern 2345 gespeichert und von der MMU 2339, der Unterbrechungs-Verwaltungsschaltung 2347 und/oder der Kontext-Verwaltungsschaltung 2348 wie abgebildet verwendet werden. Beispielsweise enthält ein Ausführungsbeispiel von MMU 2339 eine Segment-/Seitenlaufschaltung für den Zugriff auf Segment-/Seitentabellen 2386 innerhalb des virtuellen Adressraums 2385 des Betriebssystems. Der Interrupt-Verwaltungs-Schaltkreis 2347 kann Interrupt-Ereignisse 2392 verarbeiten, die vom Grafikbeschleunigungsmodul 2346 empfangen werden. Bei der Durchführung von Grafikoperationen wird eine effektive Adresse 2393, die von einer Grafikverarbeitungs-Engine 2331-2332, N generiert wird, von der MMU 2339 in eine reale Adresse übersetzt.In operation, a WD fetch unit 2391 in the accelerator integration section 2390 fetches the next WD 2384, which includes an indication of the work to be done by one or more graphics processing engines of the graphics accelerator module 2346. Data from WD 2384 may be stored in registers 2345 and used by MMU 2339, interrupt management circuitry 2347, and/or context management circuitry 2348 as shown. For example, one embodiment of MMU 2339 includes segment/page run circuitry for accessing segment/page tables 2386 within operating system virtual address space 2385 . Interrupt management circuitry 2347 may process interrupt events 2392 received from graphics accelerator module 2346 . When performing graphics operations, an effective address 2393 generated by a graphics processing engine 2331-2332,N is translated by the MMU 2339 into a real address.

In einem Ausführungsbeispiel wird derselbe Satz von Registern 2345 für jede Grafikverarbeitungs-Engine 2331-2332, N und/oder Grafikbeschleunigungsmodul 2346 dupliziert und kann von einem Hypervisor oder Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in einem Beschleuniger-Integrationsabschnitt 2390 enthalten sein. Exemplarische Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 1 dargestellt. Tabelle 1 - Vom Hypervisor initialisierte Register 1 Register für die Steuerung von Abschnitten 2 Bereichszeiger (engl. pointer) für mit realen Adressen (RA) geplante Prozesse 3 Register zur Überschreibung der Autoritätsmaske 4 Versatz eines Eintrags einer Interrupt-Vektortabelle 5 Begrenzung eines Eintrags einer Interrupt-Vektortabelle 6 Zustandsregister 7 ID einer logischen Partition 8 Zeiger auf eine Gebrauchsaufzeichnung eines Hypervisor-Beschleunigers mit realer Adresse (RA) 9 Register für Speicherbeschreibung In one embodiment, the same set of registers 2345 is duplicated for each graphics processing engine 2331-2332, N and/or graphics accelerator module 2346 and may be initialized by a hypervisor or operating system. Each of these duplicated registers may be included in an accelerator integration section 2390. Exemplary registers that can be initialized by a hypervisor are shown in Table 1. Table 1 - Registers initialized by the hypervisor 1 Tabs for controlling sections 2 Area pointer for processes scheduled with real addresses (RA). 3 Authority mask override register 4 Offset of an interrupt vector table entry 5 Delimitation of an interrupt vector table entry 6 state register 7 ID of a logical partition 8th Pointer to a real address (RA) hypervisor accelerator usage record 9 Register for memory description

Beispielhafte Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 2 dargestellt. Tabelle 2 - Vom Betriebssystem initialisierte Register 1 Prozess- und Thread-Identifikation 2 Zeiger für Sichern/Wiederherstellen eines Kontexts mit effektiver Adresse (EA) 3 Zeiger auf Gebrauchsaufzeichnung eines Beschleunigers für virtuelle Adressen (VA) 4 Zeiger für Speichersegment-Tabelle mit virtueller Adresse (VA) 5 Autoritätsmaske 6 Arbeits-Deskriptor Example registers that can be initialized by an operating system are shown in Table 2. Table 2 - Registers initialized by the operating system 1 Process and thread identification 2 Pointer for save/restore context with effective address (EA) 3 Pointer to usage record of a virtual address accelerator (VA) 4 Virtual address (VA) memory segment table pointer 5 mask of authority 6 work descriptor

In einem Ausführungsbeispiel ist jede WD 2384 spezifisch für ein bestimmtes Grafikbeschleunigungsmodul 2346 und/oder die Grafikverarbeitungs-Engines 2331-2332, N. Sie enthält alle Informationen, die eine Grafikverarbeitungs-Engine 2331-2332, N zur Ausführung ihrer Arbeit benötigt, oder sie kann ein Zeiger auf einen Speicherplatz sein, an dem eine Anwendung eine Befehlswarteschlange für die auszuführende Arbeit eingerichtet hat.In one embodiment, each WD 2384 is specific to a particular graphics accelerator module 2346 and/or graphics processing engines 2331-2332,N. It contains all of the information that a graphics processing engine 2331-2332,N needs, or can, to perform its work be a pointer to a memory location where an application has established a command queue for work to be performed.

23E zeigt zusätzliche Details für ein exemplarisches Ausführungsbeispiel eines gemeinsamen Modells. Dieses Ausführungsbeispiel umfasst einen Adressraum realer Adressen 2398 eines Hypervisors, in dem eine Prozesselementliste 2399 gespeichert ist. Der reale Adressraum 2398 des Hypervisors ist über einen Hypervisor 2396 zugänglich, der die Engines der Grafikbeschleunigungsmodule für das Betriebssystem 2395 virtualisiert. 23E Figure 12 shows additional details for an example embodiment of a common model. This embodiment includes a hypervisor real address space 2398 in which a process item list 2399 is stored. The hypervisor's physical address space 2398 is accessible through a hypervisor 2396 that virtualizes the graphics accelerator engines for the operating system 2395 .

In mindestens einem Ausführungsbeispiel ermöglichen gemeinsam genutzte Programmiermodelle allen oder einer Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System die Verwendung eines Grafikbeschleunigungsmoduls 2346. Es gibt zwei Programmiermodelle, bei denen das Graphikbeschleunigungsmodul 2346 von mehreren Prozessen und Partitionen gemeinsam genutzt wird: zeitabschnittsweise gemeinsam genutzte und graphikgerichtete gemeinsam genutzte.In at least one embodiment, shared programming models allow all or a subset of processes from all or a subset of partitions in a system to use a graphics accelerator engine 2346. There are two programming models in which the graphics accelerator engine 2346 is shared between multiple processes and partitions: epoch-wise shared and graphics-directed shared.

In diesem Modell enthält der Systemhypervisor 2396 das Grafikbeschleunigungsmodul 2346 und stellt seine Funktionalität für alle Betriebssysteme 2395 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 2346 die Virtualisierung durch den Systemhypervisor 2396 unterstützt, kann das Grafikbeschleunigungsmodul 2346 die folgenden Bedingungen erfüllen: 1) Die Auftragsanforderung einer Anwendung muss autonom sein (d. h. der Zustand muss zwischen den Aufträgen nicht aufrechterhalten werden), oder das Grafikbeschleunigungsmodul 2346 muss einen Mechanismus zum Sichern und Wiederherstellen des Kontexts bereitstellen. 2) Für eine Jobanforderung einer Anwendung garantiert das Grafikbeschleunigungsmodul 2346, dass sie in einer bestimmten Zeitspanne abgeschlossen wird, einschließlich eventueller Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 2346 bietet die Möglichkeit, die Verarbeitung eines Auftrags vorwegzunehmen. 3) Das Grafikbeschleunigungsmodul 2346 muss die Ausgeglichenheit zwischen den Prozessen garantieren, wenn es in einem gerichteten gemeinsam genutzten Programmiermodell arbeitet.In this model, the system hypervisor 2396 contains the graphics accelerator module 2346 and makes its functionality available to all operating systems 2395 . For a graphics accelerator 2346 to support virtualization through the system hypervisor 2396, the graphics accelerator 2346 may meet the following conditions: 1) An application's job request must be autonomous (i.e., state need not be maintained between jobs), or the graphics accelerator 2346 must provide a mechanism provide for backing up and restoring the context. 2) For an application's job request, the Graphics Accelerator 2346 engine guarantees that it will be completed in a specified amount of time, including any translation errors, or the Graphics Accelerator 2346 engine provides the ability to anticipate the processing of a job. 3) The Graphics Accelerator Module 2346 must guarantee inter-process balance when operating in a directed shared programming model.

In mindestens einem Ausführungsbeispiel ist die Anwendung 2380 erforderlich, um einen Systemaufruf des Betriebssystems 2395 mit einem Grafikbeschleunigungsmodul vom Typ 2346, einem Arbeitsdeskriptor (WD), einem AMR-Wert (AMR = Authority Mask Register) und einem CSRP-Wert (CSRP = Context Save/Restore Area Pointer) durchzuführen. In mindestens einem Ausführungsbeispiel beschreibt der Typ des Grafikbeschleunigungsmoduls 2346 eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einem Ausführungsbeispiel kann der Typ des Grafikbeschleunigungsmoduls 2346 ein systemspezifischer Wert sein. In mindestens einem Ausführungsbeispiel ist der WD speziell für das Graphikbeschleunigungsmodul 2346 formatiert und kann in Form eines Grafikbeschleunigungsmodul-2346-Befehls, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur zur Beschreibung der von Grafikbeschleunigungsmodul 2346 auszuführenden Arbeiten vorliegen. In einem Ausführungsbeispiel ist ein AMR-Wert ein AMR-Zustand, der für einen aktuellen Prozess zu verwenden ist. In mindestens einem Ausführungsbeispiel ähnelt ein an ein Betriebssystem übergebener Wert einem Einstellen eines AMR durch eine Anwendung. Wenn die Implementierungen des Beschleuniger-Integrationsschaltkreises 2336 und des Grafikbeschleunigungsmoduls 2346 ein User Authority Mask Override Register (UAMOR) nicht unterstützen, kann ein Betriebssystem einen aktuellen UAMOR-Wert auf einen AMR-Wert anwenden, bevor ein AMR in einem Hypervisor-Aufruf übergeben wird. Hypervisor 2396 kann optional einen aktuellen AMOR-Wert (AMOR = Authority Mask Override Register) anwenden, bevor ein AMR in Prozesselement 23 83 übergeben wird. In mindestens einem Ausführungsbeispiel ist CSRP eines der Register 2345, das eine effektive Adresse eines Bereichs im Adressraum 2382 einer Anwendung für das Grafikbeschleunigungsmodul 2346 enthält, um den Kontextzustand zu speichern und wiederherzustellen. Dieser Zeiger ist optional, wenn kein Zustand zwischen Aufträgen gespeichert werden muss oder wenn ein Auftrag vorgezogen wird. In mindestens einem Ausführungsbeispiel kann es sich bei dem Kontextsicherungs-/Wiederherstellungsbereich um fest angebundenen Systemspeicher handeln.In at least one embodiment, the 2380 application is required to invoke an operating system 2395 system call with a 2346 graphics accelerator engine, a work descriptor (WD), an authority mask register (AMR) value, and a context save (CSRP) value /Restore Area Pointer). In at least one embodiment, the graphics accelerator module 2346 type describes a targeted acceleration function for a system call. In at least one embodiment, the type of graphics accelerator module 2346 may be a native value. In at least one embodiment, the WD is formatted specifically for the graphics accelerator module 2346 and may be in the form of a graphics accelerator module 2346 command, an effective address pointer to a user-defined structure, an effective address pointer to a command queue, or any other data structure describing the graphics accelerator module 2346 to be executed works are available. In one embodiment, an AMR value is an AMR state to use for a current process. In at least one embodiment, a value passed to an operating system is similar to an application setting an AMR. If the accelerator integration circuit 2336 and graphics accelerator module 2346 implementations do not support a User Authority Mask Override Register (UAMOR), an operating system can apply a current UAMOR value to an AMR value before passing an AMR in a hypervisor call. Hypervisor 2396 can optionally apply a current AMOR (Authority Mask Override Register) value before committing an AMR in process element 23 83 . In In at least one embodiment, CSRP is one of registers 2345 that contains an effective address of a region in an application's address space 2382 for graphics accelerator module 2346 to save and restore context state. This pointer is optional if no state needs to be saved between jobs or if a job is to be brought forward. In at least one embodiment, the context save/restore area may be fixed system memory.

Bei Erhalt eines Systemaufrufs kann das Betriebssystem 2395 überprüfen, ob die Anwendung 2380 registriert und zur Verwendung des Grafikbeschleunigungsmoduls 2346 autorisiert wurde. Betriebssystem 2395 ruft dann den Hypervisor 2396 mit den in Tabelle 3 aufgeführten Informationen auf. Tabelle 3 - Aufrufparameter von OS zu Hypervisor 1 Arbeitsdeskriptor (WD) 2 Autoritätsmasken-Registerwert (AMR) (potenziell maskiert) 3 Bereichszeiger für Kontext-Sichern/Wiederherstellen mit effektiver Adresse (EA) (engl. Context Save/Restore Area Pointer, CSRP) 4 Prozess-ID (PID) und optionale Thread-ID (TID) 5 Zeiger für Gebrauchsaufzeichnung des Beschleunigers mit virtueller Adresse (VA) (engl. accelerator utilization record pointer, AURP) 6 Zeiger für Speichersegment-Tabelle (engl. stored segment table pointer, SSTP) mit virtueller Adresse 7 Service-Nummer für logische Unterbrechung (engl. logical interrupt service number, LISN) Upon receiving a system call, the operating system 2395 can verify that the application 2380 has been registered and authorized to use the graphics accelerator module 2346 . Operating system 2395 then calls hypervisor 2396 with the information listed in Table 3. Table 3 - Invocation Parameters from OS to Hypervisor 1 Work Descriptor (WD) 2 Authority Mask Register Value (AMR) (potentially masked) 3 Context Save/Restore Area Pointer (CSRP) for context save/restore with effective address (EA) 4 Process ID (PID) and optional Thread ID (TID) 5 Accelerator utilization record pointer (AURP) with virtual address (VA) 6 Stored segment table pointer (SSTP) pointer with virtual address 7 Logical interrupt service number (LISN)

Nach Erhalt eines Hypervisor-Aufrufs überprüft der Hypervisor 2396, ob das Betriebssystem 2395 registriert ist und die Berechtigung zur Verwendung des Grafikbeschleunigungsmoduls 2346 erhalten hat. Hypervisor 2396 fügt dann Prozesselement 2383 in eine Prozesselement-Verknüpfungsliste für einen entsprechenden Typ des Grafikbeschleunigungsmoduls 2346 ein. Ein Prozesselement kann die in Tabelle 4 aufgeführten Informationen umfassen. Tabelle 4 - Informationen zu Prozesselementen 1 Arbeitsdeskriptor (WD) 2 Autoritätsmasken-Registerwert (AMR) (potenziell maskiert) 3 Bereichszeiger für Kontext-Sichern/Wiederherstellen mit effektiver Adresse (EA) (engl. Context Save/Restore Area Pointer, CSRP) 4 Prozess-ID (PID) und optionale Thread-ID (TID) 5 Zeiger für Gebrauchsaufzeichnung des Beschleunigers mit virtueller Adresse (VA) (engl. accelerator utilization record pointer, AURP) 6 Zeiger für Speichersegment-Tabelle (engl. stored segment table pointer, SSTP) mit virtueller Adresse 7 Service-Nummer für logische Unterbrechung (engl. logical interrupt service number, LISN) 8 Interrupt-Vektortabelle, abgeleitet von Hypervisor-Aufrufparametern 9 Wert eines Zustandsregisters (SR) 10 ID einer logischen Partition (LPID) 11 Zeiger für Gebrauchsaufzeichnung eines Hypervisor-Beschleunigers mit realer Adresse (RA) 12 Speicher-Deskriptor-Register (SDR) Upon receiving a hypervisor call, the hypervisor 2396 verifies that the operating system 2395 is registered and has been granted permission to use the graphics accelerator module 2346 . Hypervisor 2396 then inserts process item 2383 into a process item linked list for a corresponding graphics accelerator engine 2346 type. A process item may include the information listed in Table 4. Table 4 - Process Item Information 1 Work Descriptor (WD) 2 Authority Mask Register Value (AMR) (potentially masked) 3 Context Save/Restore Area Pointer (CSRP) for context save/restore with effective address (EA) 4 Process ID (PID) and optional Thread ID (TID) 5 Accelerator utilization record pointer (AURP) with virtual address (VA) 6 Stored segment table pointer (SSTP) pointer with virtual address 7 Logical interrupt service number (LISN) 8th Interrupt vector table derived from hypervisor invocation parameters 9 Value of a status register (SR) 10 Logical Partition ID (LPID) 11 Real address (RA) hypervisor accelerator usage record pointer 12 Storage Descriptor Register (SDR)

In mindestens einem Ausführungsbeispiel initialisiert der Hypervisor eine Vielzahl von Registern 2390 von Beschleuniger-Integrationsabschnitten 2390 bis 2345.In at least one embodiment, the hypervisor initializes a plurality of registers 2390 of accelerator integration sections 2390-2345.

Wie in 23F gezeigt, wird in mindestens einem Ausführungsbeispiel ein einheitlicher Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der für den Zugriff auf physische Prozessorspeicher 2301-2302 und GPU-Speicher 2320-2323 verwendet wird. In dieser Implementierung verwenden die auf den GPUs 2310-2313 ausgeführten Operationen einen gemeinsamen virtuellen/effektiven Speicheradressraum, um auf die Prozessorspeicher 2301-2302 zuzugreifen und umgekehrt, wodurch die Programmierbarkeit vereinfacht wird. In einem Ausführungsbeispiel wird ein erster Teil eines virtuellen/effektiven Adressraums dem Prozessorspeicher 2301, ein zweiter Teil dem zweiten Prozessorspeicher 2302, ein dritter Teil dem GPU-Speicher 2320 usw. zugewiesen. In mindestens einem Ausführungsbeispiel wird dadurch ein gesamter virtueller/effektiver Speicherraum (manchmal als effektiver Adressraum bezeichnet) auf jeden der Prozessorspeicher 2301-2302 und GPU-Speicher 2320-2323 verteilt, wodurch jeder Prozessor oder GPU auf jeden physischen Speicher mit einer diesem Speicher zugeordneten virtuellen Adresse zugreifen kann.As in 23F As shown, in at least one embodiment, a unified memory is used that is addressable via a shared virtual memory address space used to access physical processor memory 2301-2302 and GPU memory 2320-2323. In this implementation, operations performed on GPUs 2310-2313 use a shared virtual/effective memory address space to access processor memories 2301-2302 and vice versa, simplifying programmability. In one embodiment, a first portion of a virtual/effective address space is allocated to processor memory 2301, a second portion to second processor memory 2302, a third portion to GPU memory 2320, and so on. In at least one embodiment, this distributes an entire virtual/effective memory space (sometimes referred to as effective address space) across each of processor memory 2301-2302 and GPU memory 2320-2323, giving each processor or GPU access to each physical memory with a virtual memory associated with that memory address can access.

In einem Ausführungsbeispiel stellt die Schaltungsanordnung 2394A-2394E für die Verwaltung von Vorgaben/Kohärenz innerhalb einer oder mehrerer der MMUs 2339A-2339E die Cache-Kohärenz zwischen den Caches eines oder mehrerer Host-Prozessoren (z. B. 2305) und der GPUs 2310-2313 sicher und implementiert Vorgabe-Techniken, die physikalische Speicher angeben, in denen bestimmte Datentypen gespeichert werden sollen. Während mehrere Vorgaben der Schaltungsanordnung 2394A-2394E zur Verwaltung der Vorgabe/Kohärenz in 23F gezeigt werden, kann die Schaltungsanordnung zur Verwaltung der Vorgabe/Kohärenz innerhalb einer MMU von einem oder mehreren Host-Prozessoren 2305 und/oder innerhalb des Beschleuniger-Integrationsschaltkreises 2336 implementiert werden.In one embodiment, policy/coherency management circuitry 2394A-2394E within one or more MMUs 2339A-2339E provides cache coherency between the caches of one or more host processors (e.g., 2305) and GPUs 2310- 2313 secure and implements default techniques specifying physical memory in which to store certain types of data. While multiple constraints of constraint/coherency management circuitry 2394A-2394E in 23F 1, the circuitry for constraint/coherency management may be implemented within an MMU by one or more host processors 2305 and/or within the accelerator integrated circuit 2336.

In einem Ausführungsbeispiel kann der GPU-gebundene Speicher 2320-2323 als Teil des Systemspeichers zugeordnet und mit der SVM-Technologie (Shared Virtual Memory) zugegriffen werden, ohne jedoch Leistungseinbußen zu erleiden, die mit der vollen System-Cache-Kohärenz assoziiert sind. In mindestens einem Ausführungsbeispiel ist die Möglichkeit, auf GPU-gebundenen Speicher 2320-2323 als Teil des Systemspeichers ohne lästigen Cache-Kohärenz-Overhead zuzugreifen, eine vorteilhafte Betriebsumgebung für die Auslagerung auf GPUs. Diese Anordnung ermöglicht es der Software des Host-Prozessors 2305, Operanden aufzubauen und auf Berechnungsergebnisse zuzugreifen, ohne den Overhead herkömmlicher E/A-DMA-Datenkopien. Solche traditionellen Kopien umfassen Treiberaufrufe, Interrupts und Memory Mapped E/A (MMIO)-Zugriffe, die alle im Vergleich zu einfachen Speicherzugriffen ineffizient sind. In mindestens einem Ausführungsbeispiel kann die Fähigkeit, ohne Cache-Kohärenz-Overhead auf GPU-gebundenen Speicher 2320-2323 zuzugreifen, entscheidend für die Ausführungszeit einer ausgelagerten Berechnung sein. In Fällen mit erheblichem Streaming-Schreibspeicherverkehr kann beispielsweise der Cache-Kohärenz-Overhead eine effektive Schreibbandbreite, die von einem GPU 2310-2313 gesehen wird, erheblich reduzieren. In mindestens einem Ausführungsbeispiel können die Effizienz des Operandenaufbaus, die Effizienz des Ergebniszugriffs und die Effizienz der GPU-Berechnung bei der Bestimmung der Wirksamkeit einer Auslagerung auf GPUs eine Rolle spielen.In one embodiment, the GPU-bound memory 2320-2323 may be allocated as part of the system memory and accessed using shared virtual memory (SVM) technology, but without incurring the performance penalties associated with full system cache coherency. In at least one embodiment, the ability to access GPU-bound memory 2320-2323 as part of system memory without the cumbersome cache coherency overhead is an advantageous operating environment for offloading to GPUs. This arrangement allows host processor 2305 software to construct operands and access calculation results without the overhead of conventional I/O DMA data copies. Such traditional copies include driver calls, interrupts, and memory mapped I/O (MMIO) accesses, all of which are inefficient compared to simple memory accesses. In at least one embodiment, the ability to access GPU-bound memory 2320-2323 without cache coherency overhead may be critical to offloaded computation execution time. For example, in cases with significant streaming write memory traffic, the cache coherence overhead can significantly reduce an effective write bandwidth seen by a GPU 2310-2313. In at least one embodiment, operand construction efficiency, result access efficiency, and GPU computation efficiency may play a role in determining GPU offloading effectiveness.

In mindestens einem Ausführungsbeispiel wird die Auswahl der GPU-Vorgabe und der Host-Prozessor-Vorgabe durch eine Vorgabe-Verfolger-Datenstruktur gesteuert. Eine Bias-Tabelle kann z.B. eine seitengranulare Struktur sein (d.h. mit der Granularität einer Speicherseite gesteuert), die 1 oder 2 Bits pro GPU-angeschlossener Speicherseite enthält. In mindestens einem Ausführungsbeispiel kann eine Vorgabentabelle in einem gestohlenen Speicherbereich von einem oder mehreren GPU-gebundenen Speichern 2320-2323 mit oder ohne Vorgabe-Cache in GPU 2310-2313 implementiert werden (z.B. um häufig/kürzlich verwendete Einträge einer Vorgabetabelle zu cachen). Alternativ kann eine gesamte Vorgabetabelle innerhalb eines Grafikprozessors verwaltet werden.In at least one embodiment, the selection of the GPU policy and the host processor policy is controlled by a policy tracker data structure. For example, a bias table can be a page-granular structure (i.e., controlled with the granularity of a memory page) containing 1 or 2 bits per GPU-attached memory page. In at least one embodiment, a default table may be implemented in a stolen memory area of one or more GPU-bound memories 2320-2323 with or without a default cache in GPU 2310-2313 (e.g., to cache frequently/recently used entries of a default table). Alternatively, an entire default table can be maintained within a graphics processor.

In mindestens einem Ausführungsbeispiel wird auf einen Vorgabetabelleneintrag, der mit jedem Zugriff auf GPU-gebundenen Speicher 2320-2323 assoziiert ist, vor dem tatsächlichen Zugriff auf einen GPU-Speicher zugegriffen, was die folgenden Operationen veranlasst. Zunächst werden lokale Anfragen vom GPU 2310-2313, die ihre Seite in der GPU-Vorgabe finden, direkt an einen entsprechenden GPU-Speicher 2320-2323 weitergeleitet. Lokale Anfragen von einem Grafikprozessor, die ihre Seite in der Vorgabe des Host-Speichers finden, werden an den Prozessor 2305 weitergeleitet (z.B. über eine Hochgeschwindigkeitsverbindung, wie oben beschrieben). In einem Ausführungsbeispiel schließen Anforderungen vom Prozessor 2305, die eine angeforderte Seite im Host-Prozessor-Bias finden, eine Anforderung wie ein normales Speicherlesen ab. Alternativ können Anfragen, die an eine GPU-vorgegebene Seite gerichtet sind, an GPU 2310-2313 weitergeleitet werden. In mindestens einem Ausführungsbeispiel kann eine GPU dann eine Seite in eine Host-Prozessor-Vorgabe überführen, wenn sie gerade keine Seite verwendet. In mindestens einem Ausführungsbeispiel kann der Vorgabezustand einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwareunterstützten softwarebasierten Mechanismus oder, für einen begrenzten Satz von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.In at least one embodiment, a default table entry associated with each access to GPU-bound memory 2320-2323 is accessed prior to the actual access to GPU memory, causing the following operations. First, local requests from the GPU 2310-2313 that find their page in the GPU policy are routed directly to a corresponding GPU memory 2320-2323. Local requests from a graphics processor that find their page in the host memory default are forwarded to processor 2305 (eg, over a high-speed link, as described above). In one embodiment, requests from processor 2305 that find a requested page in the host processor bias complete a request like a normal memory read. Alternatively, requests directed to a GPU designated page may be forwarded to GPU 2310-2313. In at least one embodiment, a GPU may then commit a page to host processor default when it is not using a page. In at least one embodiment, a page's default state may be set either by a software-based mecha mechanism, a hardware-assisted software-based mechanism, or, for a limited set of cases, a purely hardware-based mechanism.

Ein Mechanismus zur Änderung des Vorgabe-Zustands verwendet einen API-Aufruf (z. B. OpenCL), der wiederum den Gerätetreiber eines GPUs aufruft, der wiederum eine Nachricht (oder eine Befehlsbeschreibung in eine Warteschlange stellt) an einen GPU sendet, um ihn anzuweisen, einen Vorgabe-Zustand zu ändern und für einige Übergänge eine Cache-Löschoperation in einem Host durchzuführen. In mindestens einem Ausführungsbeispiel wird die Cache-Löschoperation für einen Übergang von der Vorgabe des Host-Prozessors 2305 zur GPU-Vorgabe verwendet, nicht jedoch für einen entgegengesetzten Übergang.One mechanism for changing the default state uses an API call (e.g. OpenCL), which in turn calls a GPU's device driver, which in turn sends a message (or queues a command description) to a GPU to instruct it to change a default state and to perform a cache flush operation in a host for some transitions. In at least one embodiment, the cache flush operation is used for a transition from host processor 2305 default to GPU default, but not for a reverse transition.

In einem Ausführungsbeispiel wird die Cache-Kohärenz aufrechterhalten, indem GPU-vorgegebene Seiten vom Host-Prozessor 2305 vorübergehend nicht gecached werden. Um auf diese Seiten zuzugreifen, kann Prozessor 2305 den Zugriff von GPU 2310 anfordern, der den Zugriff möglicherweise nicht sofort gewährt. Um die Kommunikation zwischen Prozessor 2305 und GPU 2310 zu reduzieren, ist es daher von Vorteil, sicherzustellen, dass GPU-vorgegebene Seiten diejenigen sind, die von einem GPU, aber nicht vom Host-Prozessor 2305 benötigt werden und umgekehrt.In one embodiment, cache coherency is maintained by temporarily not caching GPU-given pages from host processor 2305 . To access these pages, processor 2305 may request access from GPU 2310, which may not grant access immediately. Therefore, in order to reduce communication between processor 2305 and GPU 2310, it is beneficial to ensure that GPU-given pages are those required by a GPU but not required by the host processor 2305, and vice versa.

Die Hardware-Struktur(en) 1515 wird/werden verwendet, um eine oder mehrere Ausführungsbeispiele auszuführen. Details bezüglich der Hardwarestruktur(en) 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt.The hardware structure(s) 1515 is/are used to implement one or more embodiments. Details regarding the hardware structure(s) 1515 are in connection with here 15A and or 15B provided.

24 zeigt exemplarisch integrierte Schaltungen und assoziierte Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden können, gemäß verschiedenen hier beschriebenen Ausführungsbeispielen. Zusätzlich zu dem, was hier gezeigt wird, können weitere Logik und Schaltungen in mindestens einem Ausführungsbeispiel enthalten sein, einschließlich zusätzlicher Grafikprozessoren/Kerne, peripherer Schnittstellen-Steuerungen oder Allzweckprozessorkerne. 24 FIG. 1 shows exemplary integrated circuits and associated graphics processors that may be fabricated using one or more IP cores, according to various embodiments described herein. In addition to what is shown herein, other logic and circuitry may be included in at least one embodiment, including additional graphics processors/cores, peripheral interface controllers, or general purpose processor cores.

24 ist ein Blockdiagramm, das ein exemplarisches System auf einem integrierten Schaltkreis 2400 auf einem Chip zeigt, das mit einem oder mehreren IP-Kernen hergestellt werden kann, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst die integrierte Schaltung 2400 einen oder mehrere Anwendungsprozessor(en) 2405 (z.B. CPUs), mindestens einen Grafikprozessor 2410 und kann zusätzlich einen Bildprozessor 2415 und/oder einen Videoprozessor 2420 umfassen, wobei jeder dieser Prozessoren ein modularer IP-Kern sein kann. In mindestens einem Ausführungsbeispiel umfasst die integrierte Schaltung 2400 Peripherie- oder Buslogik einschließlich einer USB-Steuerung 2425, UART-Steuerung 2430, einer SPI/SDIO-Steuerung 2435 und einer I.sup.2S/I.sup.2C-Steuerung 2440. In mindestens einem Ausführungsbeispiel kann die integrierte Schaltung 2400 ein Anzeigegerät 2445 umfassen, das mit einer oder mehreren der folgenden Steuerungen gekoppelt ist: einer High-Definition Multimedia Interface (HDMI)-Steuerung 2450 und einer Mobile Industry Processor Interface (MIPI)-Anzeige-Schnittstelle 2455. In mindestens einem Ausführungsbeispiel kann der Speicher durch ein Flash-Speichersubsystem 2460 bereitgestellt werden, das einen Flash-Speicher und eine Flash-Speichersteuerung umfasst. In mindestens einem Ausführungsbeispiel kann die Speicherschnittstelle über eine Steuerung 2465 für den Zugriff auf SDRAM- oder SRAM-Speichergeräte bereitgestellt werden. In mindestens einem Ausführungsbeispiel umfassen einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheitsengine 2470. 24 14 is a block diagram depicting an exemplary system on an on-chip integrated circuit 2400 that may be fabricated with one or more IP cores, according to at least one embodiment. In at least one embodiment, the integrated circuit 2400 includes one or more application processor(s) 2405 (e.g., CPUs), at least one graphics processor 2410, and may additionally include an image processor 2415 and/or a video processor 2420, each of these processors being a modular IP core can. In at least one embodiment, integrated circuit 2400 includes peripheral or bus logic including USB controller 2425, UART controller 2430, SPI/SDIO controller 2435, and I.sup.2S/I.sup.2C controller 2440. In In at least one embodiment, the integrated circuit 2400 may include a display device 2445 coupled to one or more of the following controllers: a High-Definition Multimedia Interface (HDMI) controller 2450 and a Mobile Industry Processor Interface (MIPI) display interface 2455 In at least one embodiment, the memory may be provided by a flash memory subsystem 2460, which includes flash memory and a flash memory controller. In at least one embodiment, the memory interface may be provided via a controller 2465 to access SDRAM or SRAM memory devices. In at least one embodiment, some integrated circuits additionally include an embedded security engine 2470.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 in dem integrierten Schaltkreis 2400 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern verwendet werden, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the integrated circuit 2400 may be used to infer or predict operations based, at least in part, on weight parameters obtained using training operations with neural networks, functions and/or neural network architectures or use cases of neural networks described herein.

25A-25B zeigen exemplarische integrierte Schaltungen und assoziierte Grafikprozessoren, die mit einem oder mehreren IP-Kernen gemäß verschiedenen Ausführungsbeispielen hergestellt werden können. Zusätzlich zu dem, was hier gezeigt wird, können andere Logik und Schaltungen in mindestens einem Ausführungsbeispiel enthalten sein, einschließlich zusätzlicher Grafikprozessoren/Kerne, peripherer Schnittstellen-Steuerungen oder Allzweckprozessorkerne. 25A-25B 12 show exemplary integrated circuits and associated graphics processors that may be fabricated with one or more IP cores according to various embodiments. In addition to what is shown herein, other logic and circuitry may be included in at least one embodiment, including additional graphics processors/cores, peripheral interface controllers, or general purpose processor cores.

25A-25B zeigen als Blockdiagramme beispielhafte Grafikprozessoren für den Einsatz in einem SoC gemäß den hier beschriebenen Ausführungsbeispielen. 25A zeigt einen exemplarischen Grafikprozessor 2510 eines integrierten Schaltkreises auf einem System-on-a-Chip, der mit einem oder mehreren IP-Kernen hergestellt werden kann, gemäß mindestens einem Ausführungsbeispiel. 25B zeigt einen zusätzlichen exemplarischen Grafikprozessor 2540 eines integrierten Schaltkreises auf einem System-on-a-Chip, der unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 2510 von 25A ein Grafikprozessorkern mit niedrigem Stromverbrauch. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 2540 von 25B ein Grafikprozessorkern mit höherer Leistung. In mindestens einem Ausführungsbeispiel kann jeder der Grafikprozessoren 2510, 2540 eine Variante des Grafikprozessors 2410 aus 24 sein. 25A-25B 12 show, as block diagrams, exemplary graphics processors for use in a SoC in accordance with the exemplary embodiments described here. 25A FIG. 25 shows an example integrated circuit graphics processor 2510 on a system-on-a-chip that can be fabricated with one or more IP cores, according to at least one embodiment. 25B FIG. 2540 shows an additional example integrated circuit graphics processor 2540 on a system-on-a-chip that may be fabricated using one or more IP cores, in accordance with at least one embodiment. In at least one embodiment, the graphics processor 2510 is from 25A a graphics processor core with low power consumption. In at least one embodiment, the graphics processor is 2540 from 25B a GPU core with higher performance. In at least one embodiment, each of the graphics processors 2510, 2540 may be a variant of the graphics processor 2410 24 be.

In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2510 einen Vertex-Prozessor 2505 und einen oder mehrere Fragmentprozessor(en) 2515A-2515N (z. B. 2515A, 2515B, 2515C, 2515D, bis 2515N-1 und 2515N). In mindestens einem Ausführungsbeispiel kann der Grafikprozessor 2510 verschiedene Schattierungsprogramme über separate Logik ausführen, so dass der Vertex-Prozessor 2505 für die Ausführung von Operationen für Vertex-Schattierungsprogramme optimiert ist, während ein oder mehrere Fragmentprozessor(en) 2515A-2515N Fragment-Schattierungsoperationen (z.B. Pixel) für Fragment- oder Pixel-Schattierungsprogramme ausführen. In mindestens einem Ausführungsbeispiel führt der Vertex-Prozessor 2505 eine Vertex-Verarbeitungsstufe einer 3D-Grafik-Pipeline aus und erzeugt Primitive und Vertex-Daten. In mindestens einem Ausführungsbeispiel verwendet/verwenden der/die Fragmentprozessor(en) 2515A-2515N die vom Vertex-Prozessor 2505 erzeugten Primitiv- und Vertexdaten, um einen Einzelbildpuffer zu erzeugen, der auf einem Anzeigegerät angezeigt wird. In mindestens einem Ausführungsbeispiel ist/sind der/die Fragmentprozessor(en) 2515A-2515N für die Ausführung von Fragment-Shader-Programmen optimiert, wie sie in einer OpenGL-API vorgesehen sind, die verwendet werden kann/können, um ähnliche Operationen wie ein Pixel-Shader-Programm auszuführen, wie sie in einer direkten 3D-API vorgesehen sind.In at least one embodiment, graphics processor 2510 includes a vertex processor 2505 and one or more fragment processors 2515A-2515N (e.g., 2515A, 2515B, 2515C, 2515D, through 2515N-1 and 2515N). In at least one embodiment, graphics processor 2510 may execute different shader programs via separate logic such that vertex processor 2505 is optimized for executing vertex shader operations, while one or more fragment processor(s) 2515A-2515N execute fragment shader operations (e.g., Pixel) for fragment or pixel shader programs. In at least one embodiment, vertex processor 2505 performs a vertex processing stage of a 3D graphics pipeline and generates primitives and vertex data. In at least one embodiment, fragment processor(s) 2515A-2515N uses the primitive and vertex data generated by vertex processor 2505 to generate a frame buffer that is displayed on a display device. In at least one embodiment, the fragment processor(s) 2515A-2515N is/are optimized for executing fragment shader programs as provided in an OpenGL API that can be used to perform similar operations as a Run pixel shader programs as provided in a direct 3D API.

In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2510 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 2520A-2520B, Cache(s) 2525A-2525B und Schaltkreisverbindung(en) 2530A-2530B. In mindestens einem Ausführungsbeispiel ist (sind) eine oder mehrere MMU(s) 2520A-2520B für die Zuordnung von virtuellen zu physikalischen Adressen für den Grafikprozessor 2510 vorgesehen, einschließlich für den Vertex-Prozessor 2505 und/oder den/die Fragment-Prozessor(en) 2515A-2515N, die zusätzlich zu den in einem oder mehreren Cache(s) 2525A-2525B gespeicherten Vertex- oder Bild-/Texturdaten auf im Speicher gespeicherte Vertex- oder Bild-/Texturdaten verweisen können. In mindestens einem Ausführungsbeispiel können eine oder mehrere MMU(s) 2520A-2520B mit anderen MMUs innerhalb des Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessor(en) 2405, Bildprozessor(en) 2415 und/oder Videoprozessor(en) 2420 aus 24 assoziiert sind, so dass jeder Prozessor 2405-2420 an einem gemeinsam genutzten oder vereinheitlichten virtuellen Speichersystem teilnehmen kann. In mindestens einem Ausführungsbeispiel ermöglichen eine oder mehrere Schaltkreisverbindung(en) 2530A-2530B dem Grafikprozessor 2510 die Verbindung mit anderen IP-Kernen innerhalb des SoC, entweder über einen internen Bus des SoC oder über eine direkte Verbindung.In at least one embodiment, graphics processor 2510 additionally includes one or more memory management units (MMUs) 2520A-2520B, cache(s) 2525A-2525B, and circuit interconnect(s) 2530A-2530B. In at least one embodiment, one or more MMU(s) 2520A-2520B are provided for mapping virtual to physical addresses for graphics processor 2510, including for vertex processor 2505 and/or fragment processor(s). ) 2515A-2515N, which may reference vertex or image/texture data stored in memory in addition to vertex or image/texture data stored in one or more cache(s) 2525A-2525B. In at least one embodiment, one or more MMU(s) 2520A-2520B can be synchronized with other MMUs within the system, including one or more MMUs that interface with one or more application processor(s) 2405, image processor(s) 2415, and/or video processor (en) 2420 out 24 are associated so that each processor 2405-2420 can participate in a shared or unified virtual memory system. In at least one embodiment, circuit interconnect(s) 2530A-2530B enable graphics processor 2510 to connect to other IP cores within the SoC, either through an internal bus of the SoC or through a direct connection.

In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2540 eine oder mehrere MMU(s) 2520A-2520B, Caches 2525A-2525B, und die Schaltungsverbindungen 2530A-2530B des Grafikprozessors 2510 aus 25A. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2540 einen oder mehrere Schattierungskern(e) 2555A-2555N (z.B. 2555A, 2555B, 2555C, 2555D, 2555E, 2555F bis 2555N-1 und 2555N), die eine vereinheitlichte Schattierungskernarchitektur bereitstellen, in der ein einzelner Kern oder Typ oder Kern alle Arten von programmierbarem Schattierungscode ausführen kann, einschließlich Schattierungsprogrammcode zur Implementierung von Vertex-Schattierungen, Fragment-Schattierungen und/oder Berechnungsschattierungen. In mindestens einem Ausführungsbeispiel kann eine Anzahl von Schattierungskernen variieren. In mindestens einem Ausführungsbeispiel enthält der Grafikprozessor 2540 einen Zwischenkern-Aufgabenverwalter (engl. Inter-Core-Task-Manager) 2545, der als Thread-Verteiler arbeitet, um Ausführungsthreads an einen oder mehrere Schattierungskerne 2555A-2555N zu verteilen, und eine Kachelungseinheit 2558 zur Beschleunigung von Kachelungsoperationen für das kachelbasierte Rendern, in der Renderingoperationen für eine Szene im Bildraum unterteilt sind, um beispielsweise die lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Verwendung interner Caches zu optimieren.In at least one embodiment, graphics processor 2540 includes one or more MMU(s) 2520A-2520B, caches 2525A-2525B, and graphics processor 2510 circuit interconnects 2530A-2530B 25A . In at least one embodiment, graphics processor 2540 includes one or more shading core(s) 2555A-2555N (e.g., 2555A, 2555B, 2555C, 2555D, 2555E, 2555F through 2555N-1, and 2555N) that provide a unified shading core architecture in which a single core or type or core can execute all kinds of programmable shading code, including shading program code to implement vertex shading, fragment shading, and/or computational shading. In at least one embodiment, a number of shading kernels may vary. In at least one embodiment, the graphics processor 2540 includes an inter-core task manager 2545 that operates as a thread dispatcher to dispatch threads of execution to one or more shading cores 2555A-2555N, and a tiling unit 2558 for Accelerate tiling operations for tile-based rendering, in which rendering operations for a scene are partitioned in image space, for example to exploit local spatial coherence within a scene or to optimize the use of internal caches.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 in dem integrierten Schaltkreis 25A und/oder 25B zur Inferenz oder Vorhersage von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, inference and/or training logic 1515 in integrated circuit 25A and/or 25B may be used to infer or predict operations based at least in part on weight parameters obtained using training operations with neural networks, functions, and/or or neural network architectures or neural network use cases described herein.

26A-26B zeigen weitere exemplarische Grafikprozessorlogik gemäß den hier beschriebenen Ausführungsbeispielen. 26A zeigt einen Grafikkern 2600, der in mindestens einem Ausführungsbeispiel den Grafikprozessor 2410 von 24 umfassen kann und in mindestens einem Ausführungsbeispiel einen vereinheitlichten Schattierungskern 2555A-2555N wie in 25B darstellen kann. 26B zeigt eine hochparallele allgemeine Grafikverarbeitungseinheit 2630, die für den Einsatz auf einem Multi-Chip-Modul geeignet ist, in mindestens einem Ausführungsbeispiel. 26A-26B 12 show further example graphics processor logic consistent with the embodiments described herein. 26A FIG. 1 shows a graphics core 2600, which in at least one embodiment may include the graphics processor 2410 of FIG 24 may comprise and in at least one embodiment a unified shading kernel 2555A-2555N as in 25B can represent. 26B Figure 2630 shows a highly parallel general purpose graphics processing unit 2630, suitable for deployment on a multi-chip module, in at least one embodiment.

In mindestens einem Ausführungsbeispiel umfasst der Grafikkern 2600 einen gemeinsam genutzten Befehlscache 2602, eine Textureinheit 2618 und einen Cache/gemeinsamen Speicher 2620, die den Ausführungsressourcen im Grafikkern 2600 gemeinsam zugeordnet sind. In mindestens einem Ausführungsbeispiel kann der Grafikkern 2600 mehrere Abschnitte 2601A-2601N oder Partitionen für jeden Kern umfassen, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 2600 umfassen. Die Abschnitte 2601A-2601N können Unterstützungslogik einschließlich eines lokalen Befehlscaches 2604A-2604N, eines Thread-Planers 2606A-2606N, eines Thread-Verteilers 2608A-2608N und eines Satzes von Registern 2610A-2610N umfassen. In mindestens einem Ausführungsbeispiel können die Abschnitte 2601A-2601N einen Satz von zusätzlichen Funktionseinheiten (AFUs 2612A-2612N), Gleitkommaeinheiten (FPU 2614A-2614N), ganzzahlige arithmetisch-logische Einheiten (ALUs 2616-2616N), Adressberechnungseinheiten (ACU 2613A-2613N), Doppelpräzisions-Gleitkommaeinheiten (DPFPU 2615A-2615N) und Matrixverarbeitungseinheiten (MPU 2617A-2617N) umfassen.In at least one embodiment, the graphics core 2600 includes a shared instruction cache 2602, a texture unit 2618, and a cache/shared memory 2620 that are shared among the execution resources in the graphics core 2600. In at least one embodiment, graphics core 2600 may include multiple slices 2601A-2601N or partitions for each core, and a graphics processor may include multiple instances of graphics core 2600. Sections 2601A-2601N may include support logic including a local instruction cache 2604A-2604N, a thread scheduler 2606A-2606N, a thread dispatcher 2608A-2608N, and a set of registers 2610A-2610N. In at least one embodiment, sections 2601A-2601N may include a set of additional functional units (AFUs 2612A-2612N), floating point units (FPU 2614A-2614N), integer arithmetic logic units (ALUs 2616-2616N), address calculation units (ACU 2613A-2613N), double precision floating point units (DPFPU 2615A-2615N) and matrix processing units (MPU 2617A-2617N).

In mindestens einem Ausführungsbeispiel können die FPUs 2614A-2614N Gleitkomma-Operationen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) ausführen, während die DPFPUs 2615A-2615N Gleitkomma-Operationen mit doppelter Genauigkeit (64 Bit) ausführen können. In mindestens einem Ausführungsbeispiel können die ALUs 2616A-2616N ganzzahlige Operationen mit variabler Präzision mit 8-Bit-, 16-Bit- und 32-Bit-Genauigkeit ausführen und können für Operationen mit gemischter Präzision konfiguriert werden. In mindestens einem Ausführungsbeispiel können die MPUs 2617A-2617N auch für Matrixoperationen mit gemischter Präzision konfiguriert werden, einschließlich Gleitkomma- und 8-Bit-Ganzzahl-Operationen mit halber Präzision. In mindestens einem Ausführungsbeispiel können die MPUs 2617-2617N eine Vielzahl von Matrix-Operationen ausführen, um Anwendungs-Frameworks für maschinelles Lernen zu beschleunigen, einschließlich der Unterstützung für beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (engl. accelerated general matrix to matrix multiplication, GEMM). In mindestens einem Ausführungsbeispiel können die AFUs 2612A-2612N zusätzliche logische Operationen ausführen, die nicht durch Gleitkomma- oder ganzzahlige Einheiten unterstützt werden, einschließlich trigonometrischer Operationen (z.B. Sinus, Cosinus usw.).In at least one embodiment, FPUs 2614A-2614N can perform single-precision (32-bit) and half-precision (16-bit) floating-point operations, while DPFPUs 2615A-2615N can perform double-precision (64-bit) floating-point operations. In at least one embodiment, ALUs 2616A-2616N can perform variable-precision integer operations with 8-bit, 16-bit, and 32-bit precision and can be configured for mixed-precision operations. In at least one embodiment, MPUs 2617A-2617N may also be configured for mixed-precision matrix operations, including half-precision floating-point and 8-bit integer operations. In at least one embodiment, MPUs 2617-2617N may perform a variety of matrix operations to accelerate machine learning application frameworks, including support for accelerated general matrix to matrix multiplication , GEMM). In at least one embodiment, AFUs 2612A-2612N can perform additional logical operations not supported by floating point or integer units, including trigonometric operations (e.g., sine, cosine, etc.).

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 in Graphics Core 2600 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in Graphics Core 2600 for inferring or predicting operations may be based, at least in part, on weight parameters obtained using training operations with neural networks, functions and/or neural network architectures, or as described herein Use cases of neural networks were calculated can be used.

26B zeigt eine Allzweck-Verarbeitungseinheit (engl. General Purpose Processing Unit, GPGPU) 2630, die so konfiguriert werden kann, dass hochparallele Rechenoperationen von einem Array von Grafikverarbeitungseinheiten in mindestens einer Einheit durchgeführt werden können, in mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann die GPGPU 2630 direkt mit anderen Instanzen der GPGPU 2630 verbunden werden, um einen Multi-GPU-Cluster zur Verbesserung der Trainingsgeschwindigkeit für Deep Neural Networks zu erstellen. In mindestens einem Ausführungsbeispiel umfasst GPGPU 2630 eine Host-Schnittstelle 2632, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In mindestens einem Ausführungsbeispiel ist die Host-Schnittstelle 2632 eine PCI-Express-Schnittstelle. In mindestens einem Ausführungsbeispiel kann die Host-Schnittstelle 2632 eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In mindestens einem Ausführungsbeispiel empfängt die GPGPU 2630 Befehle von einem Host-Prozessor und plant mit Hilfe eines globalen Planers (engl. scheduler) 2634 die diesen Befehlen zugeordneten Ausführungsthreads auf einen Satz von Rechenclustern 2636A-2636H. In mindestens einem Ausführungsbeispiel teilen sich die Rechencluster 2636A-2636H einen Cache-Speicher 2638. In mindestens einem Ausführungsbeispiel kann der Cache-Speicher 2638 als Cache-Speicher höherer Ebene für Cache-Speicher innerhalb der Rechencluster 2636A-2636H dienen. 26B Figure 12 shows a general purpose processing unit (GPGPU) 2630 configurable to perform highly parallel computational operations by an array of graphics processing units in at least one unit, in at least one embodiment. In at least one embodiment, the GPGPU 2630 can be connected directly to other instances of the GPGPU 2630 to create a multi-GPU cluster to improve training speed for deep neural networks. In at least one embodiment, GPGPU 2630 includes a host interface 2632 for connecting to a host processor enable. In at least one embodiment, host interface 2632 is a PCI Express interface. In at least one embodiment, the host interface 2632 may be a proprietary communication interface or communication structure. In at least one embodiment, the GPGPU 2630 receives commands from a host processor and uses a global scheduler 2634 to schedule the threads of execution associated with those commands onto a set of compute clusters 2636A-2636H. In at least one embodiment, compute clusters 2636A-2636H share a cache 2638. In at least one embodiment, cache 2638 may serve as a higher level cache for caches within compute clusters 2636A-2636H.

In mindestens einem Ausführungsbeispiel umfasst die GPGPU 2630 den Speicher 2644A-2644B, der über einen Satz von Speichersteuerungen 2642A-2642B mit den Rechenclustern 2636A-2636H gekoppelt ist. In mindestens einem Ausführungsbeispiel kann der Speicher 2644A-2644B verschiedene Arten von Speichergeräten umfassen, einschließlich dynamischem Direktzugriffsspeicher (engl. Dynamic random access memory, DRAM) oder Graphik-Direktzugriffsspeicher, wie z.B. synchronem Graphik-Direktzugriffsspeicher (engl. synchronous graphics random access memory, SGRAM), einschließlich Graphikspeicher mit doppelter Datenrate (engl. graphics double data rate, GDDR).In at least one embodiment, GPGPU 2630 includes memory 2644A-2644B coupled to compute clusters 2636A-2636H via a set of memory controllers 2642A-2642B. In at least one embodiment, memory 2644A-2644B may include various types of memory devices, including dynamic random access memory (DRAM) or graphics random access memory, such as synchronous graphics random access memory (SGRAM). ), including graphics memory with double data rate (GDDR).

In mindestens einem Ausführungsbeispiel umfassen die Rechencluster 2636A-2636H jeweils einen Satz von Grafikkernen, wie z.B. den Grafikkern 2600 von 26A, der mehrere Typen von ganzzahligen und Gleitkomma-Logik-Einheiten umfassen kann, die Rechenoperationen mit einer Reihe von Genauigkeiten durchführen können, die auch für maschinelles Lernen geeignet sind. Beispielsweise kann in mindestens einem Ausführungsbeispiel mindestens eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 2636A-2636H für die Ausführung von 16-Bit- oder 32-Bit-Gleitkommaoperationen konfiguriert werden, während eine andere Teilmenge von Gleitkommaeinheiten für die Ausführung von 64-Bit-Gleitkommaoperationen konfiguriert werden kann.In at least one embodiment, compute clusters 2636A-2636H each include a set of graphics cores, such as graphics core 2600 of FIG 26A , which can include multiple types of integer and floating-point logic units that can perform arithmetic operations with a range of precisions that are also suitable for machine learning. For example, in at least one embodiment, at least a subset of floating point units in each of the compute clusters 2636A-2636H may be configured to perform 16-bit or 32-bit floating point operations, while another subset of floating point units may be configured to perform 64-bit floating point operations can be configured.

In mindestens einem Ausführungsbeispiel können mehrere Instanzen der GPGPU 2630 so konfiguriert werden, dass sie als Rechencluster arbeiten. In mindestens einem Ausführungsbeispiel variiert die Kommunikation, die von den Rechenclustern 2636A-2636H für die Synchronisierung und den Datenaustausch verwendet wird, von Ausführungsbeispiel zu Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kommunizieren mehrere Instanzen von GPGPU 2630 über die Host-Schnittstelle 2632. In mindestens einem Ausführungsbeispiel enthält die GPGPU 2630 einen E/A-Hub 2639, der die GPGPU 2630 mit einer GPU-Verbindung 2640 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 2630 ermöglicht. In mindestens einem Ausführungsbeispiel ist der GPU-Link 2640 mit einer dedizierten GPU-zu-GPU-Brücke gekoppelt, die eine Kommunikation und Synchronisierung zwischen mehreren Instanzen des GPGPU 2630 ermöglicht. In mindestens einem Ausführungsbeispiel wird die GPU-Verbindung 2640 mit einer Hochgeschwindigkeitsverbindung gekoppelt, um Daten an andere GPGPUs oder Parallelprozessoren zu senden und zu empfangen. In mindestens einem Ausführungsbeispiel befinden sich mehrere Instanzen von GPGPU 2630 in getrennten Datenverarbeitungssystemen und kommunizieren über ein Netzwerkgerät, das über die Host-Schnittstelle 2632 zugänglich ist. In mindestens einem Ausführungsbeispiel kann die GPU-Verbindung 2640 so konfiguriert werden, dass sie zusätzlich oder alternativ zur Host-Schnittstelle 2632 eine Verbindung zu einem Host-Prozessor ermöglicht.In at least one embodiment, multiple instances of the GPGPU 2630 can be configured to operate as a compute cluster. In at least one embodiment, the communication used by compute clusters 2636A-2636H for synchronization and data exchange varies from embodiment to embodiment. In at least one embodiment, multiple instances of GPGPU 2630 communicate through host interface 2632. In at least one embodiment, GPGPU 2630 includes an I/O hub 2639 that couples GPGPU 2630 to a GPU connection 2640 that connects directly to other instances of the GPGPU 2630. In at least one embodiment, the GPU link 2640 is coupled to a dedicated GPU-to-GPU bridge that enables communication and synchronization between multiple GPGPU 2630 instances. In at least one embodiment, GPU connection 2640 is coupled to a high-speed connection to send and receive data to other GPGPUs or parallel processors. In at least one embodiment, multiple instances of GPGPU 2630 reside in separate computing systems and communicate through a network device accessible through host interface 2632 . In at least one embodiment, GPU connection 2640 may be configured to allow connection to a host processor in addition to or as an alternative to host interface 2632 .

In mindestens einem Ausführungsbeispiel kann die GPGPU 2630 so konfiguriert werden, dass sie neuronale Netze trainiert. In mindestens einem Ausführungsbeispiel kann GPGPU 2630 innerhalb einer Inferenzplattform verwendet werden. In mindestens einem Ausführungsbeispiel, in dem GPGPU 2630 zur Inferenzierung verwendet wird, kann GPGPU weniger Rechencluster 2636A-2636H umfassen als wenn GPGPU zum Trainieren eines neuronalen Netzwerks verwendet wird. In mindestens einem Ausführungsbeispiel kann sich die mit dem Speicher 2644A-2644B assoziierte Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei für Trainingskonfigurationen Speichertechnologien mit höherer Bandbreite verwendet werden. In mindestens einem Ausführungsbeispiel kann die Inferenzkonfiguration des GPGPU 2630 die Inferenzierung spezifischer Befehle unterstützen. In mindestens einem Ausführungsbeispiel kann eine Inferenzkonfiguration beispielsweise Unterstützung für eine oder mehrere 8-Bit-Integer-Skalarprodukt-Instruktionen bieten, die bei Inferenzoperationen für eingesetzte neuronale Netzwerke verwendet werden können.In at least one embodiment, the GPGPU 2630 can be configured to train neural networks. In at least one embodiment, GPGPU 2630 may be used within an inference platform. In at least one embodiment where GPGPU 2630 is used for inference, GPGPU may include fewer compute clusters 2636A-2636H than when GPGPU is used to train a neural network. In at least one embodiment, the storage technology associated with memory 2644A-2644B may differ between inference and training configurations, with higher bandwidth storage technologies being used for training configurations. In at least one embodiment, the inference configuration of the GPGPU 2630 may support specific instruction inference. For example, in at least one embodiment, an inference configuration may provide support for one or more 8-bit integer dot product instructions that may be used in inference operations for deployed neural networks.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 in Graphics Core 2600 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. in minutes In at least one embodiment, the inference and/or training logic 1515 in graphics core 2600 can infer or predict operations based, at least in part, on weight parameters obtained using training operations with neural networks, functions and/or neural network architectures, or use cases described herein calculated by neural networks can be used.

27 ist ein Blockdiagramm, das ein Computersystem 2700 gemäß mindestens einem Ausführungsbeispiel zeigt. In mindestens einem Ausführungsbeispiel enthält das Rechensystem 2700 ein Verarbeitungs-Subsystem 2701 mit einem oder mehreren Prozessoren 2702 und einem Systemspeicher 2704, die über einen Verbindungspfad kommunizieren, der einen Speicher-Hub 2705 umfassen kann. In mindestens einem Ausführungsbeispiel kann der Speicher-Hub 2705 eine separate Komponente innerhalb einer Chipsatz-Komponente sein oder in einen oder mehrere Prozessor(en) 2702 integriert sein. In mindestens einem Ausführungsbeispiel ist der Speicher-Hub 2705 über eine Verbindung 2706 mit einem E/A-Subsystem 2711 gekoppelt. In mindestens einem Ausführungsbeispiel umfasst das E/A-Subsystem 2711 einen E/A-Hub 2707, der es dem Rechengerät 2700 ermöglichen kann, Eingaben von einem oder mehreren Eingabegerät(en) 2708 zu empfangen. In mindestens einem Ausführungsbeispiel kann der E/A-Hub 2707 eine Steuerung für eine Anzeige, die in einem oder mehreren Prozessoren 2702 enthalten sein kann, in die Lage versetzen, Ausgaben an ein oder mehrere Anzeigegeräte 2710A bereitzustellen. In mindestens einem Ausführungsbeispiel können ein oder mehrere Anzeigegerät(e) 2710A, das/die mit dem E/A-Hub 2707 gekoppelt ist/sind, ein lokales, internes oder eingebettetes Anzeigegerät umfassen. 27 12 is a block diagram depicting a computer system 2700 in accordance with at least one embodiment. In at least one embodiment, computing system 2700 includes a processing subsystem 2701 having one or more processors 2702 and system memory 2704 communicating over an interconnect path that may include a memory hub 2705 . In at least one embodiment, the memory hub 2705 may be a separate component within a chipset component or integrated into one or more processor(s) 2702 . In at least one embodiment, storage hub 2705 is coupled to I/O subsystem 2711 via connection 2706 . In at least one embodiment, I/O subsystem 2711 includes an I/O hub 2707 that may enable computing device 2700 to receive input from one or more input devices 2708 . In at least one embodiment, I/O hub 2707 may enable a controller for a display, which may be included in one or more processors 2702, to provide outputs to one or more display devices 2710A. In at least one embodiment, one or more display devices 2710A coupled to I/O hub 2707 may include a local, internal, or embedded display device.

In mindestens einem Ausführungsbeispiel umfasst das Verarbeitungs-Subsystem 2701 einen oder mehrere Parallelprozessor(en) 2712, der/die über einen Bus oder eine andere Verbindung 2713 mit dem Speicher-Hub 2705 verbunden ist/sind. In mindestens einem Ausführungsbeispiel kann es sich bei der Kommunikationsverbindung 2713 um eine beliebige Anzahl von auf Standards basierenden Kommunikationsverbindungstechnologien oder -protokollen, wie beispielsweise, aber nicht beschränkt auf PCI Express, oder um eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur handeln. In mindestens einem Ausführungsbeispiel bilden ein oder mehrere Parallelprozessor(en) 2712 ein rechenorientiertes Parallel- oder Vektorverarbeitungssystem, das eine große Anzahl von Rechenkernen und/oder Verarbeitungsclustern umfassen kann, wie z.B. einen Prozessor mit vielen integrierten Kernen (engl. many integrated core, MIC). In mindestens einem Ausführungsbeispiel bilden ein oder mehrere Parallelprozessor(en) 2712 ein Grafikverarbeitungs-Subsystem, das Pixel an eines von einem oder mehreren Anzeigegerät(en) 2710A ausgeben kann, die über den E/A-Hub 2707 gekoppelt sind. In mindestens einem Ausführungsbeispiel können ein oder mehrere Parallelprozessor(en) 2712 auch eine Steuerung und eine Anzeigeschnittstelle (nicht abgebildet) umfassen, um eine direkte Verbindung zu einem oder mehreren Anzeigegerät(en) 2710B zu ermöglichen.In at least one embodiment, processing subsystem 2701 includes one or more parallel processors 2712 coupled to memory hub 2705 via bus or other connection 2713 . In at least one embodiment, communication link 2713 may be any number of standards-based communication link technologies or protocols, such as but not limited to PCI Express, or a proprietary communication interface or communication structure. In at least one embodiment, parallel processor(s) 2712 form a computational parallel or vector processing system that may include a large number of computational cores and/or processing clusters, such as a many integrated core (MIC) processor. . In at least one embodiment, parallel processor(s) 2712 form a graphics processing subsystem that can output pixels to one of display device(s) 2710A coupled via I/O hub 2707 . In at least one embodiment, parallel processor(s) 2712 may also include a controller and display interface (not shown) to enable direct connection to display device(s) 2710B.

In mindestens einem Ausführungsbeispiel kann eine Systemspeichereinheit 2714 mit dem E/A-Hub 2707 verbunden werden, um einen Speichermechanismus für das Computersystem 2700 bereitzustellen. In mindestens einem Ausführungsbeispiel kann ein E/A-Switch 2716 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, der Verbindungen zwischen dem E/A-Hub 2707 und anderen Komponenten ermöglicht, wie z.B. einem Netzwerkadapter 2718 und/oder einem drahtlosen Netzwerkadapter 2719, die in die Plattform integriert werden können, und verschiedenen anderen Geräten, die über ein oder mehrere Zusatzgerät(e) 2720 hinzugefügt werden können. In mindestens einem Ausführungsbeispiel kann der Netzwerkadapter 2718 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzwerkadapter sein. In mindestens einem Ausführungsbeispiel kann der drahtlose Netzwerkadapter 2719 ein oder mehrere Wi-Fi-, Bluetooth-, Nahfeldkommunikations- (NFC) oder andere Netzwerkgeräte umfassen, die ein oder mehrere drahtlose Funkgeräte enthalten.In at least one embodiment, a system storage device 2714 may be coupled to I/O hub 2707 to provide a storage mechanism for computer system 2700. In at least one embodiment, an I/O switch 2716 may be used to provide an interface mechanism that enables connections between the I/O hub 2707 and other components, such as a network adapter 2718 and/or a wireless network adapter 2719, that may be used in can be integrated into the platform, and various other devices that can be added via add-on device(s) 2720. In at least one embodiment, network adapter 2718 may be an Ethernet adapter or other wired network adapter. In at least one embodiment, wireless network adapter 2719 may include one or more Wi-Fi, Bluetooth, near field communication (NFC), or other network devices that include one or more wireless radios.

In mindestens einem Ausführungsbeispiel kann das Rechensystem 2700 andere, nicht explizit gezeigte Komponenten umfassen, einschließlich USB- oder andere Portverbindungen, optische Speicherlaufwerke, Videoaufnahmegeräte und ähnliches, die ebenfalls an den E/A-Hub 2707 angeschlossen werden können. In mindestens einem Ausführungsbeispiel können Kommunikationspfade, die verschiedene Komponenten in 27 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle implementiert werden, wie z.B. PCI (Peripheral Component Interconnect) basierende Protokolle (z.B. PCI-Express) oder andere Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder Protokoll(e), wie NV-Link-Hochgeschwindigkeitsverbindungen oder Verbindungsprotokolle.In at least one embodiment, computing system 2700 may include other components not explicitly shown, including USB or other port connections, optical storage drives, video capture devices, and the like that may also connect to I/O hub 2707 . In at least one embodiment, communication paths connecting various components in 27 interconnect, be implemented using any suitable protocols, such as PCI (Peripheral Component Interconnect) based protocols (e.g. PCI-Express) or other bus or point-to-point communication interfaces and/or protocol(s) such as NV- Link high-speed connections or connection protocols.

In mindestens einem Ausführungsbeispiel umfasst/umfassen ein oder mehrere Parallelprozessor(en) 2712 eine für die Grafik- und Videoverarbeitung optimierte Schaltungsanordnung, einschließlich z.B. einer Videoausgabeschaltung, und stellt/stellen eine Grafikverarbeitungseinheit (GPU) dar. In mindestens einem Ausführungsbeispiel enthalten ein oder mehrere Parallelprozessor(en) 2712 Schaltungsanordnungen, die für die Verarbeitung für allgemeine Zwecke optimiert sind. In mindestens einem Ausführungsbeispiel können Komponenten des Rechnersystems 2700 mit einem oder mehreren anderen Systemelementen in einer einzigen integrierten Schaltung integriert sein. Beispielsweise können in mindestens einem Ausführungsbeispiel ein oder mehrere Parallelprozessor(en) 2712, Speicher-Hub 2705, Prozessor(en) 2702 und E/A-Hub 2707 in eine integrierte Schaltung eines System on-a-Chip (SoC) integriert sein. In mindestens einem Ausführungsbeispiel können Komponenten des Rechnersystems 2700 in ein einziges Gehäuse integriert werden, um eine System in Package (SIP)-Konfiguration zu bilden. In mindestens einem Ausführungsbeispiel kann mindestens ein Teil der Komponenten des Rechnersystems 2700 in ein Multi-Chip-Modul (MCM) integriert werden, das mit anderen Multi-Chip-Modulen zu einem modularen Rechnersystem verbunden werden kann.In at least one embodiment, one or more parallel processor(s) 2712 includes circuitry optimized for graphics and video processing, including, for example, a 12 and 12 illustrate a graphics processing unit (GPU). In at least one embodiment, parallel processor(s) 2712 include circuitry optimized for general purpose processing. In at least one embodiment, components of computing system 2700 may be integrated with one or more other system elements on a single integrated circuit. For example, in at least one embodiment, one or more parallel processor(s) 2712, memory hub 2705, processor(s) 2702, and I/O hub 2707 may be integrated into a system-on-a-chip (SoC) integrated circuit. In at least one embodiment, components of computing system 2700 may be integrated into a single chassis to form a system in package (SIP) configuration. In at least one embodiment, at least a portion of the components of computing system 2700 may be integrated into a multi-chip module (MCM) that may be interconnected with other multi-chip modules to form a modular computing system.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 in Graphics Core 2600 zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in Graphics Core 2600 for inferring or predicting operations may be based, at least in part, on weight parameters obtained using training operations with neural networks, functions and/or neural network architectures, or as described herein Use cases of neural networks were calculated can be used.

28A zeigt einen Parallelprozessor 2800 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel können verschiedene Komponenten des Parallelprozessors 2800 unter Verwendung einer oder mehrerer integrierter Schaltungsvorrichtungen implementiert werden, wie z.B. programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder Field Programmable Gate Arrays (FPGA). Der in mindestens einem Ausführungsbeispiel dargestellte Parallelprozessor 2800 ist eine Variante eines oder mehrerer in 27 gezeigter Parallelprozessor(en) 2712 gemäß einem exemplarischen Ausführungsbeispiel. 28A 12 shows a parallel processor 2800 according to at least one embodiment. In at least one embodiment, various components of parallel processor 2800 may be implemented using one or more integrated circuit devices, such as programmable processors, application specific integrated circuits (ASICs), or field programmable gate arrays (FPGA). The parallel processor 2800 illustrated in at least one embodiment is a variant of one or more in 27 shown parallel processor(s) 2712 according to an example embodiment.

In mindestens einem Ausführungsbeispiel umfasst der Parallelprozessor 2800 eine parallele Verarbeitungseinheit 2802. In mindestens einem Ausführungsbeispiel umfasst die Parallelverarbeitungseinheit 2802 eine E/A-Einheit 2804, die die Kommunikation mit anderen Geräten, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 2802, ermöglicht. In mindestens einem Ausführungsbeispiel kann die E/A-Einheit 2804 direkt mit anderen Geräten verbunden sein. In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 2804 über eine Hub- oder Switch-Schnittstelle, wie z.B. den Speicher-Hub 2705, mit anderen Geräten verbunden. In mindestens einem Ausführungsbeispiel bilden Verbindungen zwischen dem Speicher-Hub 2705 und der E/A-Einheit 2804 eine Kommunikationsverbindung 2713. In mindestens einem Ausführungsbeispiel stellt die E/A-Einheit 2804 eine Verbindung mit einer Host-Schnittstelle 2806 und einer Speicher-Crossbar 2816 her, wobei die Host-Schnittstelle 2806 Befehle empfängt, die auf die Durchführung von Verarbeitungsoperationen gerichtet sind, und die Speicher-Crossbar 2816 Befehle empfängt, die auf die Durchführung von Speicheroperationen gerichtet sind.In at least one embodiment, the parallel processor 2800 includes a parallel processing unit 2802. In at least one embodiment, the parallel processing unit 2802 includes an I/O unit 2804 that enables communication with other devices, including other instances of the parallel processing unit 2802. In at least one embodiment, I/O unit 2804 may be directly connected to other devices. In at least one embodiment, I/O unit 2804 is connected to other devices through a hub or switch interface, such as storage hub 2705. In at least one embodiment, connections between the storage hub 2705 and the I/O device 2804 form a communication link 2713. In at least one embodiment, the I/O device 2804 connects to a host interface 2806 and a storage crossbar 2816 where host interface 2806 receives commands directed to performing processing operations and memory crossbar 2816 receives commands directed to performing memory operations.

Wenn in mindestens einem Ausführungsbeispiel die Host-Schnittstelle 2806 über die E/A-Einheit 2804 einen Befehlspuffer empfängt, kann die Host-Schnittstelle 2806 Arbeitsoperationen zur Ausführung dieser Befehle an ein Frontend 2808 leiten. In mindestens einem Ausführungsbeispiel ist das Frontend 2808 mit einem Planer 2810 gekoppelt, der so konfiguriert ist, dass er Befehle oder andere Arbeitsaufgaben an ein Verarbeitungscluster-Array 2812 verteilt. In mindestens einem Ausführungsbeispiel stellt der Planer 2810 sicher, dass das Verarbeitungscluster-Array 2812 richtig konfiguriert und in einem gültigen Zustand ist, bevor Aufgaben an das Verarbeitungscluster-Array 2812 des Verarbeitungscluster-Arrays 2812 verteilt werden. In mindestens einem Ausführungsbeispiel ist der Planer 2810 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einem Ausführungsbeispiel ist der in einem Mikrocontroller implementierte Planer 2810 so konfigurierbar, dass er komplexe Planungs- und Arbeitsverteilungsoperationen in grober und feiner Granularität durchführt, wodurch eine schnelle Vorbelegung und Kontextumschaltung von Threads ermöglicht wird, die auf dem Verarbeitungs-Array 2812 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann die Host-Software Arbeitslasten für das Planen auf dem Array 2812 über eine von mehreren Doorbells für die Grafikverarbeitung nachweisen. In mindestens einem Ausführungsbeispiel können Arbeitslasten dann automatisch über das Verarbeitungs-Array 2812 durch die Logik des Planers 2810 innerhalb eines Mikrocontrollers, der den Planer 2810 umfasst, auf das Verarbeitungs-Array 2812 verteilt werden.In at least one embodiment, when the host interface 2806 receives a command buffer via the I/O device 2804, the host interface 2806 may direct operations to a front end 2808 for execution of those commands. In at least one embodiment, the front end 2808 is coupled to a scheduler 2810 configured to dispatch commands or other work to a processing cluster array 2812 . In at least one embodiment, scheduler 2810 ensures processing cluster array 2812 is properly configured and in a valid state before dispatching tasks to processing cluster array 2812 of processing cluster array 2812 . In at least one embodiment, scheduler 2810 is implemented via firmware logic running on a microcontroller. In at least one embodiment, the scheduler 2810 implemented in a microcontroller is configurable to perform complex scheduling and work distribution operations at coarse and fine granularity, enabling fast pre-allocation and context switching of threads running on the processing array 2812. In at least one embodiment, the host software may expose workloads for scheduling on the array 2812 via one of a plurality of graphics processing doorbells. In at least one embodiment, workloads may then be automatically distributed to the processing array 2812 across the processing array 2812 by scheduler 2810 logic within a microcontroller that includes the scheduler 2810 .

In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2812 bis zu „N“ Verarbeitungscluster umfassen (z.B. Cluster 2814A, Cluster 2814B, bis hin zu Cluster 2814N).In at least one embodiment, processing cluster array 2812 may include up to "N" processing clusters (e.g., cluster 2814A, cluster 2814B, up to cluster 2814N).

In mindestens einem Ausführungsbeispiel kann jeder Cluster 2814A-2814N des Verarbeitungscluster-Arrays 2812 eine große Anzahl gleichzeitiger Threads ausführen. In mindestens einem Ausführungsbeispiel kann der Planer 2810 den Clustern 2814A-2814N des Verarbeitungscluster-Arrays 2812 Arbeit unter Verwendung verschiedener Planungs- und/oder Arbeitsverteilungsalgorithmen zuweisen, die je nach der für die einzelnen Programm- oder Berechnungstypen anfallenden Arbeitsbelastung variieren können. In mindestens einem Ausführungsbeispiel kann die Planung durch den Planer 2810 dynamisch gehandhabt werden oder teilweise durch Compilerlogik während der Kompilierung von Programmlogik unterstützt werden, die für die Ausführung durch das Verarbeitungscluster-Arrays 2812 konfiguriert wurde. In mindestens einem Ausführungsbeispiel können verschiedene Cluster 2814A-2814N des Verarbeitungscluster-Arrays 2812 für die Verarbeitung verschiedener Programmtypen oder für die Durchführung verschiedener Arten von Berechnungen zugewiesen werden.In at least one embodiment, each cluster 2814A-2814N of processing cluster array 2812 can execute a large number of concurrent threads. In at least one embodiment, scheduler 2810 may allocate work to clusters 2814A-2814N of processing cluster array 2812 using different scheduling and/or work distribution algorithms, which may vary depending on the workload involved for each program or computation type. In at least one embodiment, scheduling may be handled dynamically by scheduler 2810 or assisted in part by compiler logic during compilation of program logic configured for execution by processing cluster array 2812 . In at least one embodiment, different clusters 2814A-2814N of processing cluster array 2812 may be assigned to process different types of programs or to perform different types of calculations.

In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2812 so konfiguriert werden, dass es verschiedene Arten von parallelen Verarbeitungsoperationen durchführt. In mindestens einem Ausführungsbeispiel ist das Verarbeitungscluster-Array 2812 so konfiguriert, dass es allgemeine parallele Rechenoperationen ausführt. In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2812 beispielsweise Logik zur Ausführung von Verarbeitungsaufgaben umfassen, darunter das Filtern von Video- und/oder Audiodaten, die Durchführung von Modellierungsoperationen, einschließlich physikalischer Operationen, und die Durchführung von Datentransformationen.In at least one embodiment, the processing cluster array 2812 can be configured to perform various types of parallel processing operations. In at least one embodiment, the processing cluster array 2812 is configured to perform general parallel computing operations. For example, in at least one embodiment, the processing cluster array 2812 may include logic to perform processing tasks including filtering video and/or audio data, performing modeling operations including physical operations, and performing data transformations.

In mindestens einem Ausführungsbeispiel ist das Verarbeitungscluster-Array 2812 so konfiguriert, dass es parallele Grafikverarbeitungsoperationen durchführt. In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2812 zusätzliche Logik zur Unterstützung der Ausführung solcher Grafikverarbeitungsoperationen umfassen, einschließlich, aber nicht beschränkt auf Texturabtastlogik zur Durchführung von Texturoperationen sowie Tessellationslogik und andere Vertex-Verarbeitungslogik. In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2812 so konfiguriert werden, dass es grafikverarbeitungsbezogene Schattierungsprogramme wie z.B. Vertex-Schattierungen, Tessellationsschattierungen, Geometrie-Schattierungen und Pixel-Schattierungen ausführt. In mindestens einem Ausführungsbeispiel kann die Parallelverarbeitungseinheit 2802 Daten aus dem Systemspeicher über die E/A-Einheit 2804 zur Verarbeitung übertragen. In mindestens einem Ausführungsbeispiel können die übertragenen Daten während der Verarbeitung im On-Chip-Speicher (z.B. im Parallelprozessorspeicher 2822) gespeichert und dann in den Systemspeicher zurückgeschrieben werden.In at least one embodiment, processing cluster array 2812 is configured to perform parallel graphics processing operations. In at least one embodiment, the processing cluster array 2812 may include additional logic to support the execution of such graphics processing operations, including but not limited to texture scanning logic for performing texture operations, as well as tessellation logic and other vertex processing logic. In at least one embodiment, the processing cluster array 2812 can be configured to execute graphics processing-related shading programs such as vertex shading, tessellation shading, geometry shading, and pixel shading. In at least one embodiment, parallel processing unit 2802 may transfer data from system memory through I/O unit 2804 for processing. In at least one embodiment, the transferred data may be stored in on-chip memory (e.g., parallel processor memory 2822) during processing and then written back to system memory.

In mindestens einem Ausführungsbeispiel kann bei Verwendung der Parallelverarbeitungseinheit 2802 zur Durchführung einer Grafikverarbeitung der Planer 2810 so konfiguriert werden, dass er eine Verarbeitungsauslastung in ungefähr gleich große Aufgaben aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 2814A-2814N des Verarbeitungscluster-Arrays 2812 zu ermöglichen. In mindestens einem Ausführungsbeispiel können Teile des Verarbeitungscluster-Arrays 2812 so konfiguriert werden, dass sie verschiedene Verarbeitungstypen ausführen. Beispielsweise kann in mindestens einem Ausführungsbeispiel ein erster Teil so konfiguriert werden, dass er Vertex-Schattierung und Topologieerzeugung durchführt, ein zweiter Teil kann so konfiguriert werden, dass er Tesselierung und Geometrie-Schattierung durchführt, und ein dritter Teil kann so konfiguriert werden, dass er Pixel-Schattierung oder andere Bildschirmraumoperationen durchführt, um ein gerendertes Bild für die Anzeige zu erzeugen. In mindestens einem Ausführungsbeispiel können Zwischendaten, die von einem oder mehreren der Cluster 2814A-2814N erzeugt wurden, in Puffern gespeichert werden, um die Übertragung von Zwischendaten zwischen den Clustern 2814A-2814N zur weiteren Verarbeitung zu ermöglichen.In at least one embodiment, when using the parallel processing unit 2802 to perform graphics processing, the scheduler 2810 can be configured to split a processing workload into approximately equally sized tasks to better distribute graphics processing operations across multiple clusters 2814A-2814N of the processing cluster array 2812 enable. In at least one embodiment, portions of the processing cluster array 2812 can be configured to perform different types of processing. For example, in at least one embodiment, a first part can be configured to perform vertex shading and topology generation, a second part can be configured to perform tessellation and geometry shading, and a third part can be configured to perform performs pixel shading or other screen space operations to produce a rendered image for display. In at least one embodiment, intermediate data generated by one or more of clusters 2814A-2814N may be stored in buffers to facilitate the transfer of intermediate data between clusters 2814A-2814N for further processing.

In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2812 Verarbeitungsaufgaben empfangen, die über den Planer 2810 ausgeführt werden sollen, der Befehle zur Definition von Verarbeitungsaufgaben vom Frontend 2808 empfängt. In mindestens einem Ausführungsbeispiel können die Verarbeitungsaufgaben Indizes der zu verarbeitenden Daten umfassen, z.B. Oberflächen- (Patch-) Daten, Primitivdaten, Vertexdaten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie die Daten verarbeitet werden sollen (z.B. welches Programm ausgeführt werden soll). In mindestens einem Ausführungsbeispiel kann der Planer 2810 so konfiguriert sein, dass er den Aufgaben entsprechende Indizes holt oder Indizes vom Frontend 2808 empfängt. In mindestens einem Ausführungsbeispiel kann das Frontend 2808 so konfiguriert werden, dass sichergestellt wird, dass das Verarbeitungscluster-Array 2812 auf einen gültigen Zustand konfiguriert wird, bevor eine durch eingehende Befehlspuffer (z. B. Batch-Puffer, Push-Puffer usw.) spezifizierte Arbeitslast initiiert wird.In at least one embodiment, processing cluster array 2812 may receive processing tasks to be performed via scheduler 2810 , which receives processing task definition commands from front end 2808 . In at least one embodiment, the processing tasks may include indices of the data to be processed, e.g., surface (patch) data, primitive data, vertex data, and/or pixel data, as well as state parameters and instructions that define how the data should be processed (e.g., which program to run shall be). In at least one embodiment, scheduler 2810 may be configured to fetch indices corresponding to tasks or to receive indices from front end 2808 . In at least one embodiment, the front end 2808 can be configured to ensure that the processing cluster array 2812 is on a valid state before initiating a workload specified by incoming command buffers (e.g., batch buffer, push buffer, etc.).

In mindestens einem Ausführungsbeispiel kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 2802 mit dem Parallelprozessorspeicher 2822 gekoppelt werden. In mindestens einem Ausführungsbeispiel kann auf den Parallelprozessorspeicher 2822 über Memory Crossbar 2816 zugegriffen werden, der Speicheranforderungen von Verarbeitungscluster-Array 2812 sowie der E/A-Einheit 2804 empfangen kann. In mindestens einem Ausführungsbeispiel kann über eine Speicherschnittstelle 2818 auf den Parallelprozessorspeicher 2822 zugegriffen werden, und zwar über Memory Crossbar 2816. In mindestens einem Ausführungsbeispiel kann die Speicherschnittstelle 2818 mehrere Partitionseinheiten (z.B. Partitionseinheit 2820A, Partitionseinheit 2820B, über Partitionseinheit 2820N) umfassen, die jeweils mit einem Teil (z.B. Speichereinheit) des Parallelprozessorspeichers 2822 gekoppelt werden können. In mindestens einem Ausführungsbeispiel ist eine Anzahl von Partitionseinheiten 2820A-2820N so konfiguriert, dass sie einer Anzahl von Speichereinheiten entspricht, so dass eine erste Partitionseinheit 2820A eine entsprechende erste Speichereinheit 2824A, eine zweite Partitionseinheit 2820B eine entsprechende Speichereinheit 2824B und eine N-te Partitionseinheit 2820N eine entsprechende N-te Speichereinheit 2824N aufweist. In mindestens einem Ausführungsbeispiel kann eine Anzahl von Partitionseinheiten 2820A-2820N nicht gleich einer Anzahl von Speichergeräten sein.In at least one embodiment, each of one or more instances of parallel processing unit 2802 may be coupled to parallel processor memory 2822 . In at least one embodiment, parallel processor memory 2822 may be accessed via memory crossbar 2816, which may receive memory requests from processing cluster array 2812 as well as I/O unit 2804. In at least one embodiment, parallel processor memory 2822 may be accessed through a memory interface 2818, via memory crossbar 2816. In at least one embodiment, memory interface 2818 may include multiple partition units (e.g., partition unit 2820A, partition unit 2820B, via partition unit 2820N), each with may be coupled to a portion (e.g., memory unit) of parallel processor memory 2822. In at least one embodiment, a number of partition units 2820A-2820N are configured to correspond to a number of storage units such that a first partition unit 2820A has a corresponding first storage unit 2824A, a second partition unit 2820B has a corresponding storage unit 2824B, and an Nth partition unit 2820N has a corresponding Nth storage unit 2824N. In at least one embodiment, a number of partition units 2820A-2820N may not equal a number of storage devices.

In mindestens einem Ausführungsbeispiel können die Speichereinheiten 2824A-2824N verschiedene Arten von Speichervorrichtungen umfassen, einschließlich dynamischem Direktzugriffsspeicher (engl. Dynamic Random Access Memory, DRAM) oder Graphik-Direktzugriffsspeicher (engl. Graphics Random Access Memory, SGRAM), einschließlich Graphikspeicher mit doppelter Datenrate (engl. Graphics Double Data Rate, GDDR). In mindestens einem Ausführungsbeispiel können die Speichereinheiten 2824A-2824N auch 3D-Stapelspeicher umfassen, einschließlich, aber nicht beschränkt auf Speicher mit hoher Bandbreite (HBM). In mindestens einem Ausführungsbeispiel können Render-Targets, wie z.B. Frame-Puffer oder Texture-Maps, über Speichereinheiten 2824A-2824N hinweg gespeichert werden, so dass die Partitionseinheiten 2820A-2820N Teile jedes Render-Targets parallel schreiben können, um die verfügbare Bandbreite des Parallelprozessorspeichers 2822 effizient zu nutzen. In mindestens einem Ausführungsbeispiel kann eine lokale Instanz des Parallelprozessorspeichers 2822 zugunsten eines vereinheitlichten Speicherdesigns ausgeschlossen werden, das den Systemspeicher in Verbindung mit dem lokalen Cache-Speicher verwendet.In at least one embodiment, memory units 2824A-2824N may comprise various types of memory devices, including dynamic random access memory (DRAM) or graphics random access memory (SGRAM), including double data rate ( Graphics Double Data Rate, GDDR). In at least one embodiment, memory units 2824A-2824N may also include 3D stacked memory, including but not limited to high-bandwidth memory (HBM). In at least one embodiment, render targets, such as frame buffers or texture maps, may be stored across memory units 2824A-2824N such that partition units 2820A-2820N may write portions of each render target in parallel to utilize the available bandwidth of parallel processor memory 2822 to use efficiently. In at least one embodiment, a local instance of parallel processor memory 2822 may be eliminated in favor of a unified memory design that uses system memory in conjunction with local cache memory.

In mindestens einem Ausführungsbeispiel kann jeder der Cluster 2814A-2814N des Verarbeitungs-Cluster-Arrays 2812 Daten verarbeiten, die in eine der Speichereinheiten 2824A-2824N im Parallelprozessorspeicher 2822 geschrieben werden. In mindestens einem Ausführungsbeispiel kann die Speicher-Crossbar 2816 so konfiguriert werden, dass eine Ausgabe jedes Clusters 2814A-2814N an eine beliebige Partitionseinheit 2820A-2820N oder an einen anderen Cluster 2814A-2814N übertragen werden kann, der zusätzliche Verarbeitungsoperationen an einer Ausgabe durchführen kann. In mindestens einem Ausführungsbeispiel kann jeder Cluster 2814A-2814N über die Speicherkreuzschiene 2816 mit der Speicherschnittstelle 2818 kommunizieren, um von verschiedenen externen Speichergeräten zu lesen oder auf diese zu schreiben. In mindestens einem Ausführungsbeispiel hat die Speicher-Crossbar 2816 eine Verbindung zur Speicherschnittstelle 2818, um mit der E/A-Einheit 2804 zu kommunizieren, sowie eine Verbindung zu einer lokalen Instanz des Parallelprozessorspeichers 2822, wodurch Verarbeitungseinheiten innerhalb verschiedener Verarbeitungscluster 2814A-2814N mit dem Systemspeicher oder einem anderen Speicher kommunizieren können, der nicht lokal zur Parallelverarbeitungseinheit 2802 ist. In mindestens einem Ausführungsbeispiel kann die Speicher-Crossbar 2816 virtuelle Kanäle verwenden, um Verkehrsströme zwischen den Clustern 2814A-2814N und den Partitionseinheiten 2820A-2820N zu trennen.In at least one embodiment, each of clusters 2814A-2814N of processing cluster array 2812 may process data that is written to one of storage units 2824A-2824N in parallel processor memory 2822. In at least one embodiment, the memory crossbar 2816 can be configured so that an output of each cluster 2814A-2814N can be transferred to any partition unit 2820A-2820N or to another cluster 2814A-2814N that can perform additional processing operations on an output. In at least one embodiment, each cluster 2814A-2814N can communicate with storage interface 2818 via storage crossbar 2816 to read from and write to various external storage devices. In at least one embodiment, memory crossbar 2816 connects to memory interface 2818 to communicate with I/O device 2804, and connects to a local instance of parallel processor memory 2822, thereby connecting processing units within different processing clusters 2814A-2814N to system memory or another memory that is not local to the parallel processing unit 2802. In at least one embodiment, memory crossbar 2816 may use virtual channels to separate traffic flows between clusters 2814A-2814N and partition units 2820A-2820N.

In mindestens einem Ausführungsbeispiel können mehrere Instanzen der Parallelverarbeitungseinheit 2802 auf einer einzigen Zusatzkarte bereitgestellt werden, oder es können mehrere Zusatzkarten miteinander verbunden werden. In mindestens einem Ausführungsbeispiel können verschiedene Instanzen der Parallelverarbeitungseinheit 2802 so konfiguriert werden, dass sie zusammenarbeiten, auch wenn die verschiedenen Instanzen eine unterschiedliche Anzahl von Verarbeitungskernen, unterschiedliche Mengen an lokalem Parallelprozessorspeicher und/oder andere Konfigurationsunterschiede aufweisen. Beispielsweise können in mindestens einem Ausführungsbeispiel einige Instanzen der Parallelverarbeitungseinheit 2802 im Vergleich zu anderen Instanzen Gleitkommaeinheiten mit höherer Präzision umfassen. In mindestens einem Ausführungsbeispiel können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 2802 oder des Parallelprozessors 2800 enthalten, in einer Vielzahl von Konfigurationen und Formfaktoren implementiert werden, einschließlich, aber nicht beschränkt auf Desktop-, Laptop- oder Handheld-Personalcomputer, Server, Workstations, Spielkonsolen und/oder eingebettete Systeme.In at least one embodiment, multiple instances of parallel processing unit 2802 may be provided on a single add-on card, or multiple add-on cards may be interconnected. In at least one embodiment, different instances of parallel processing unit 2802 may be configured to work together even if the different instances have different numbers of processing cores, different amounts of local parallel processor memory, and/or other configuration differences. For example, in at least one embodiment, some instances of parallel processing unit 2802 may include higher precision floating point units compared to other instances. In at least one embodiment, systems containing one or more instances of parallel processing unit 2802 or parallel processor 2800 may be implemented in a variety of configurations and form factors, including but not limited to desktop, laptop, or handheld personal computers, servers, workstations , game consoles and/or embedded systems.

28B zeigt ein Blockdiagramm einer Partitionseinheit 2820 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist die Partitionseinheit 2820 ein Beispiel für eine der Partitionseinheiten 2820A-2820N aus 28A. In mindestens einem Ausführungsbeispiel umfasst die Partitionseinheit 2820 einen L2-Cache 2821, eine Einzelbildpuffer-Schnittstelle 2825 und eine ROP 2826 (Raster-Operations-Einheit). L2-Cache 2821 ist ein Lese-/Schreib-Cache, der so konfiguriert ist, dass er Lade- und Speicheroperationen durchführt, die von Speicher-Crossbar 2816 und ROP 2826 empfangen werden. In mindestens einem Ausführungsbeispiel werden Lesefehler und dringende Rückschreibanforderungen von L2-Cache 2821 zur Verarbeitung an die Einzelbildpuffer-Schnittstelle 2825 ausgegeben. In mindestens einem Ausführungsbeispiel können Aktualisierungen auch über die Einzelbildpuffer-Schnittstelle 2825 zur Verarbeitung an einen Einzelbildpuffer gesendet werden. In mindestens einem Ausführungsbeispiel ist die Einzelbildpuffer-Schnittstelle 2825 mit einer der Speichereinheiten im Parallelprozessorspeicher verbunden, z.B. mit den Speichereinheiten 2824A-2824N von 28 (z.B. im Parallelprozessorspeicher 2822). 28B FIG. 28 shows a block diagram of a partition unit 2820 according to at least one embodiment. In at least one embodiment, partition unit 2820 is an example of one of partition units 2820A-2820N 28A . In at least one embodiment, the partition unit 2820 includes an L2 cache 2821, a frame buffer interface 2825, and a ROP 2826 (raster operations unit). L2 cache 2821 is a read/write cache configured to perform load and store operations received from memory crossbar 2816 and ROP 2826. In at least one embodiment, read errors and urgent writeback requests are issued from L2 cache 2821 to framebuffer interface 2825 for processing. In at least one embodiment, updates may also be sent via framebuffer interface 2825 to a framebuffer for processing. In at least one embodiment, frame buffer interface 2825 is coupled to one of the storage units in parallel processor memory, such as storage units 2824A-2824N of FIG 28 (e.g. in parallel processor memory 2822).

In mindestens einem Ausführungsbeispiel ist ROP 2826 eine Verarbeitungseinheit, die Rasteroperationen wie Schablone, z-Test, Mischen und dergleichen durchführt. In mindestens einem Ausführungsbeispiel gibt ROP 2826 dann verarbeitete Grafikdaten aus, die im Grafikspeicher gespeichert werden. In mindestens einem Ausführungsbeispiel umfasst ROP 2826 eine Komprimierungslogik zur Komprimierung von Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, und zur Dekomprimierung von Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden. In mindestens einem Ausführungsbeispiel kann die Komprimierungslogik eine verlustfreie Komprimierungslogik sein, die einen oder mehrere von mehreren Komprimierungsalgorithmen verwendet. Die Art der Komprimierung, die von ROP 2826 durchgeführt wird, kann basierend auf statistischen Eigenschaften der zu komprimierenden Daten variieren. Beispielsweise wird in mindestens einem Ausführungsbeispiel die Delta-Farbkomprimierung auf Tiefen- und Farbdaten auf einer Pro-Ktil-Basis durchgeführt.In at least one embodiment, ROP 2826 is a processing unit that performs raster operations such as stencil, z-test, blending, and the like. In at least one embodiment, ROP 2826 then outputs processed graphics data, which is stored in graphics memory. In at least one embodiment, ROP 2826 includes compression logic to compress depth or color data that is written to memory and to decompress depth or color data that is read from memory. In at least one embodiment, the compression logic may be lossless compression logic that uses one or more of a variety of compression algorithms. The type of compression performed by ROP 2826 can vary based on statistical properties of the data being compressed. For example, in at least one embodiment, delta color compression is performed on depth and color data on a per Ktil basis.

In mindestens einem Ausführungsbeispiel ist ROP 2826 in jedem Verarbeitungscluster (z.B. Cluster 2814A-2814N von 28) statt in der Partitionseinheit 2820 enthalten. In mindestens einem Ausführungsbeispiel werden Lese- und Schreibanforderungen für Pixeldaten über die Speicher-Crossbar 2816 anstelle von Pixel-Fragment-Daten übertragen. In mindestens einem Ausführungsbeispiel können verarbeitete Grafikdaten auf einem Anzeigegerät angezeigt werden, z.B. auf einem oder mehreren Anzeigegeräten 2710 aus 27, zur weiteren Verarbeitung durch Prozessor(en) 2702 weitergeleitet werden oder zur weiteren Verarbeitung durch eine der Verarbeitungseinheiten innerhalb des Parallelprozessors 2800 aus 28A weitergeleitet werden.In at least one embodiment, ROP 2826 is located in each processing cluster (eg, clusters 2814A-2814N of 28 ) instead of contained in partition unit 2820. In at least one embodiment, read and write requests for pixel data are transmitted across memory crossbar 2816 instead of pixel fragment data. In at least one embodiment, processed graphics data may be displayed on a display device, eg, one or more display devices 2710 27 , be forwarded for further processing by processor(s) 2702 or for further processing by one of the processing units within parallel processor 2800 28A to get redirected.

28C zeigt ein Blockdiagramm eines Verarbeitungsclusters 2814 innerhalb einer Parallelverarbeitungseinheit, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 2814A-2814N von 28. In mindestens einem Ausführungsbeispiel kann der Verarbeitungscluster 2814 so konfiguriert werden, dass er viele Threads parallel ausführt, wobei sich der Begriff „Thread“ auf eine Instanz eines bestimmten Programms bezieht, das auf einem bestimmten Satz von Eingabedaten ausgeführt wird. In mindestens einem Ausführungsbeispiel werden SIMD-Befehlsausgabetechniken (Single-Instruction, Multiple-Data) verwendet, um die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne dass mehrere unabhängige Befehlseinheiten bereitgestellt werden. In mindestens einem Ausführungsbeispiel werden SIMT-Techniken (Single-Instruction Multiple-Thread) verwendet, um die parallele Ausführung einer großen Anzahl allgemein synchronisierter Threads zu unterstützen, wobei eine gemeinsame Befehlseinheit verwendet wird, die so konfiguriert ist, dass sie Befehle an einen Satz von Verarbeitungsmaschinen innerhalb jedes einzelnen Verarbeitungsclusters ausgibt. 28C 12 shows a block diagram of a processing cluster 2814 within a parallel processing unit, according to at least one embodiment. In at least one embodiment, a processing cluster is an instance of one of processing clusters 2814A-2814N 28 . In at least one embodiment, the processing cluster 2814 can be configured to execute many threads in parallel, where the term "thread" refers to an instance of a particular program executing on a particular set of input data. In at least one embodiment, single-instruction, multiple-data (SIMD) instruction issue techniques are used to support the parallel execution of a large number of threads without providing multiple independent instruction units. In at least one embodiment, single-instruction multiple-thread (SIMT) techniques are used to support the parallel execution of a large number of commonly synchronized threads using a common instruction unit configured to issue instructions to a set of processing machines within each individual processing cluster.

In mindestens einem Ausführungsbeispiel kann der Betrieb des Verarbeitungsclusters 2814 über einen Pipeline-Verwalter 2832 gesteuert werden, der die Verarbeitungsaufgaben auf SIMT-Parallelprozessoren verteilt. In mindestens einem Ausführungsbeispiel empfängt der Pipeline-Verwalter 2832 Befehle vom Planer 2810 von 28 und verwaltet die Ausführung dieser Befehle über einen Grafik-Multiprozessor 2834 und/oder eine Textureinheit 2836. In mindestens einem Ausführungsbeispiel ist der Grafik-Multiprozessor 2834 ein exemplarischer Fall eines SIMT-Parallelprozessors. In mindestens einem Ausführungsbeispiel können jedoch verschiedene Typen von SIMT-Parallelprozessoren unterschiedlicher Architekturen in Verarbeitungscluster 2814 enthalten sein. In mindestens einem Ausführungsbeispiel können ein oder mehrere Instanzen des Grafik-Multiprozessors 2834 in einem Verarbeitungscluster 2814 enthalten sein. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 2834 Daten verarbeiten, und eine Daten-Crossbar 2840 kann verwendet werden, um verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Schattierungseinheiten, zu verteilen. In mindestens einem Ausführungsbeispiel kann der Pipeline-Verwalter 2832 die Verteilung von verarbeiteten Daten erleichtern, indem er Ziele für verarbeitete Daten spezifiziert, die über die Daten-Crossbar 2840 verteilt werden sollen.In at least one embodiment, the operation of processing cluster 2814 may be controlled via a pipeline manager 2832 that distributes processing tasks to SIMT parallel processors. In at least one embodiment, pipeline manager 2832 receives instructions from scheduler 2810 from 28 and manages the execution of these instructions via a graphics multiprocessor 2834 and/or a texture unit 2836. In at least one embodiment, the graphics multiprocessor 2834 is an exemplary case of a SIMT parallel processor. However, in at least one embodiment, processing cluster 2814 may include different types of SIMT parallel processors of different architectures. In at least one embodiment, one or more instances of graphics multiprocessor 2834 may be included in a processing cluster 2814. In at least one embodiment, the graphics multiprocessor 2834 can process data, and a data crossbar 2840 can be used to distribute processed data to any of a number of possible destinations, including other shading engines. In at least one embodiment, the Pipeline manager 2832 facilitates the distribution of processed data by specifying destinations for processed data to be distributed across data crossbar 2840 .

In mindestens einem Ausführungsbeispiel kann jeder Grafik-Multiprozessor 2834 innerhalb des Verarbeitungsclusters 2814 einen identischen Satz funktionaler Ausführungslogik (z. B. arithmetische Logikeinheiten, Ladespeichereinheiten) umfassen. In mindestens einem Ausführungsbeispiel kann die funktionale Ausführungslogik in einer Pipeline-Weise konfiguriert werden, in der neue Befehle ausgegeben werden können, bevor die vorherigen Befehle abgeschlossen sind. In mindestens einem Ausführungsbeispiel unterstützt die funktionale Ausführungslogik eine Vielzahl von Operationen, darunter Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, Boolesche Operationen, Bitverschiebung und die Berechnung verschiedener algebraischer Funktionen. In mindestens einem Ausführungsbeispiel kann dieselbe Hardware mit Funktionseinheiten zur Durchführung verschiedener Operationen genutzt werden, und es kann jede beliebige Kombination von Funktionseinheiten vorhanden sein.In at least one embodiment, each graphics multiprocessor 2834 within the processing cluster 2814 may include an identical set of functional execution logic (e.g., arithmetic logic units, load memory units). In at least one embodiment, the functional execution logic can be configured in a pipelined fashion, where new instructions can be issued before the previous instructions complete. In at least one embodiment, the functional execution logic supports a variety of operations, including integer and floating point arithmetic, comparison operations, Boolean operations, bit shifting, and computation of various algebraic functions. In at least one embodiment, the same hardware with functional units can be used to perform different operations, and there can be any combination of functional units.

In mindestens einem Ausführungsbeispiel bilden die an Verarbeitungscluster 2814 übermittelten Befehle einen Thread. In mindestens einem Ausführungsbeispiel bildet ein Satz von Threads, die über einen Satz paralleler Verarbeitungs-Engines ausgeführt werden, eine Thread-Gruppe. In mindestens einem Ausführungsbeispiel bildet eine Thread-Gruppe ein Programm mit verschiedenen Eingabedaten. In mindestens einem Ausführungsbeispiel kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 2834 zugeordnet werden. In mindestens einem Ausführungsbeispiel kann eine Thread-Gruppe weniger Threads umfassen als eine Anzahl von Verarbeitungs-Engines innerhalb eines Grafik-Multiprozessors 2834. Wenn in mindestens einem Ausführungsbeispiel eine Thread-Gruppe weniger Threads als eine Anzahl von Verarbeitungs-Engines umfasst, können eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in denen diese Thread-Gruppe verarbeitet wird, untätig sein. In mindestens einem Ausführungsbeispiel kann eine Thread-Gruppe auch mehr Threads als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2834 umfassen. Wenn in mindestens einem Ausführungsbeispiel eine Thread-Gruppe mehr Threads als die Anzahl der Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2834 umfasst, kann die Verarbeitung in mindestens einem Ausführungsbeispiel über aufeinanderfolgende Taktzyklen durchgeführt werden. In mindestens einem Ausführungsbeispiel können mehrere Thread-Gruppen gleichzeitig auf einem Grafik-Multiprozessor 2834 ausgeführt werden.In at least one embodiment, the instructions submitted to processing cluster 2814 form a thread. In at least one embodiment, a set of threads executing across a set of parallel processing engines forms a thread group. In at least one embodiment, a thread group forms a program with different input data. In at least one embodiment, each thread within a thread group may be mapped to a different processing engine within a 2834 graphics multiprocessor. In at least one embodiment, a thread group may include fewer threads than a number of processing engines within a graphics multiprocessor 2834. In at least one embodiment, when a thread group includes fewer threads than a number of processing engines, one or more of the processing engines to be idle during the cycles in which this thread group is processed. In at least one embodiment, a thread group may also include more threads than a number of processing engines within the graphics multiprocessor 2834. In at least one embodiment, when a thread group includes more threads than the number of processing engines within the graphics multiprocessor 2834, the processing may be performed over consecutive clock cycles in at least one embodiment. In at least one embodiment, multiple groups of threads may execute concurrently on a 2834 graphics multiprocessor.

In mindestens einem Ausführungsbeispiel umfasst der Grafik-Multiprozessor 2834 einen internen Cache-Speicher zur Durchführung von Lade- und Speicheroperationen. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 2834 auf einen internen Cache-Speicher verzichten und einen Cache-Speicher (z.B. L1-Cache 2848) innerhalb des Verarbeitungsclusters 2814 verwenden. In mindestens einem Ausführungsbeispiel hat jeder Grafik-Multiprozessor 2834 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z.B. Partitionseinheiten 2820A-2820N von 28), die von allen Verarbeitungsclustern 2814 gemeinsam genutzt werden und zur Datenübertragung zwischen Threads verwendet werden können. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 2834 auch auf globalen Off-Chip-Speicher zugreifen, der einen oder mehrere lokale Parallelprozessorspeicher und/oder Systemspeicher umfassen kann. In mindestens einem Ausführungsbeispiel kann jeder Speicher außerhalb der Parallelverarbeitungseinheit 2802 als globaler Speicher verwendet werden. In mindestens einem Ausführungsbeispiel umfasst der Verarbeitungscluster 2814 mehrere Instanzen von Grafik-Multiprozessor 2834 kann gemeinsame Befehle und Daten gemeinsam nutzen, die im L1-Cache 2848 gespeichert werden können.In at least one embodiment, the graphics multiprocessor 2834 includes internal cache memory for performing load and store operations. In at least one embodiment, the graphics multiprocessor 2834 may forego an internal cache memory and use cache memory (eg, L1 cache 2848) within the processing cluster 2814. In at least one embodiment, each graphics multiprocessor 2834 also has access to L2 caches within partition units (eg, partition units 2820A-2820N of 28 ) that are shared by all processing clusters 2814 and can be used to transfer data between threads. In at least one embodiment, graphics multiprocessor 2834 may also access off-chip global memory, which may include one or more local parallel processor memories and/or system memory. In at least one embodiment, any memory external to parallel processing unit 2802 may be used as global memory. In at least one embodiment, processing cluster 2814 includes multiple instances of graphics multiprocessor 2834 may share common instructions and data that may be stored in L1 cache 2848 .

In mindestens einem Ausführungsbeispiel kann jeder Verarbeitungscluster 2814 eine MMU 2845 (Speicherverwaltungseinheit) umfassen, die so konfiguriert ist, dass sie virtuelle Adressen physischen Adressen zuordnet. In mindestens einem Ausführungsbeispiel können sich eine oder mehrere Instanzen der MMU 2845 innerhalb der Speicherschnittstelle 2818 von 28 befinden. In mindestens einem Ausführungsbeispiel umfasst MMU 2845 einen Satz von Seitentabelleneinträgen (Page Table Entries, PTEs), die dazu verwendet werden, eine virtuelle Adresse einer physischen Adresse einer Kachel zuzuordnen (mehr über Kachelung) und optional einen Cache-Zeilenindex. In mindestens einem Ausführungsbeispiel kann MMU 2845 Adress-Übersetzungs-Lookaside-Puffer (TLB) oder Caches umfassen, die sich in einem Grafik-Multiprozessor 2834 oder L1-Cache oder Verarbeitungscluster 2814 befinden können. In mindestens einem Ausführungsbeispiel wird die physische Adresse verarbeitet, um den Oberflächendatenzugriffsort so zu verteilen, dass eine effiziente Verschachtelung von Anfragen zwischen Partitionseinheiten möglich ist. In mindestens einem Ausführungsbeispiel kann der Cache-Zeilenindex verwendet werden, um festzustellen, ob eine Anforderung für eine Cache-Zeile ein Treffer oder Fehlversuch ist.In at least one embodiment, each processing cluster 2814 may include an MMU 2845 (memory management unit) configured to map virtual addresses to physical addresses. In at least one embodiment, one or more instances of MMU 2845 may reside within memory interface 2818 of 28 condition. In at least one embodiment, MMU 2845 includes a set of Page Table Entries (PTEs) used to map a virtual address to a physical address of a tile (more on tiling) and optionally a cache line index. In at least one embodiment, MMU 2845 may include address translation lookaside (TLB) buffers or caches, which may reside in a graphics multiprocessor 2834 or L1 cache or processing cluster 2814 . In at least one embodiment, the physical address is processed to distribute the surface data access location to allow for efficient interleaving of requests between partition units. In at least one embodiment, the cache line index may be used to determine whether a request for a cache line is a hit or miss.

In mindestens einem Ausführungsbeispiel kann ein Verarbeitungscluster 2814 so konfiguriert sein, dass jeder Grafik-Multiprozessor 2834 mit einer Textureinheit 2836 gekoppelt ist, um Texturabbildungsoperationen durchzuführen, z.B. die Bestimmung von Texturabtastpositionen, das Lesen von Texturdaten und das Filtern von Texturdaten. In mindestens einem Ausführungsbeispiel werden Texturdaten aus einem internen Textur-LI-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 2834 gelesen und je nach Bedarf aus einem L2-Cache, dem lokalen Parallelprozessorspeicher oder dem Systemspeicher geholt. In mindestens einem Ausführungsbeispiel gibt jeder Grafik-Multiprozessor 2834 verarbeitete Tasks an die Daten-Crossbar 2840 aus, um verarbeitete Tasks einem anderen Verarbeitungscluster 2814 zur weiteren Verarbeitung zur Verfügung zu stellen oder um verarbeitete Tasks über die Speicher-Crossbar 2816 in einem L2-Cache, im lokalen Parallelprozessorspeicher oder im Systemspeicher zu speichern. In mindestens einem Ausführungsbeispiel ist preROP 2842 (Pre-Raster Operations Unit) so konfiguriert, dass sie Daten vom Grafik-Multiprozessor 2834 empfängt und Daten an ROP-Einheiten weiterleitet, die sich, wie hier beschrieben, bei Partitionseinheiten befinden können (z.B. Partitionseinheiten 2820A-2820N von 28). In mindestens einem Ausführungsbeispiel kann die Einheit PreROP 2842 Optimierungen für die Farbmischung durchführen, Pixel-Farbdaten organisieren und Adressübersetzungen durchführen.In at least one embodiment, a processing cluster 2814 may be configured such that each graphics multiprocessor 2834 is coupled to a texture unit 2836 to perform texture mapping operations, such as determining texture sample locations, reading texture data, and filtering texture data. In at least one embodiment, texture data is read from an internal texture LI cache (not shown) or from an L1 cache within the graphics multiprocessor 2834 and fetched from an L2 cache, local parallel processor memory, or system memory as needed. In at least one embodiment, each graphics multiprocessor 2834 issues processed tasks to the data crossbar 2840, to make processed tasks available to another processing cluster 2814 for further processing, or to have processed tasks via the memory crossbar 2816 in an L2 cache, to be stored in local parallel processor memory or in system memory. In at least one embodiment, preROP 2842 (Pre-Raster Operations Unit) is configured to receive data from graphics multiprocessor 2834 and forward data to ROP units, which as described herein may reside on partition units (e.g., partition units 2820A- 2820N from 28 ). In at least one embodiment, the PreROP 2842 unit may perform color mixing optimizations, organize pixel color data, and perform address translations.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 18C zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are here in connection with 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 18C to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

28D zeigt einen Grafik-Multiprozessor 2834 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist der Grafik-Multiprozessor 2834 mit dem Pipeline-Verwalter 2832 des Verarbeitungsclusters 2814 gekoppelt. In mindestens einem Ausführungsbeispiel verfügt der Grafik-Multiprozessor 2834 über eine Ausführungspipeline, die einen Befehlscache 2852, eine Befehlseinheit 2854, eine Adresszuordnungseinheit 2856, eine Registerdatei 2858, einen oder mehrere GPGPU-Kerne (General Purpose Graphics Processing Unit) 2862 und eine oder mehrere Lade-/Speichereinheiten 2866 umfasst, aber nicht darauf beschränkt ist. GPGPU-Kerne 2862 und Lade-/Speichereinheiten 2866 sind über eine Speicher- und Cache-Verbindung 2868 mit dem Cache-Speicher 2872 und dem gemeinsamen Speicher 2870 gekoppelt. 28D Figure 1 shows a graphics multiprocessor 2834 in accordance with at least one embodiment. In at least one embodiment, the graphics multiprocessor 2834 is coupled to the pipeline manager 2832 of the processing cluster 2814 . In at least one embodiment, the graphics multiprocessor 2834 has an execution pipeline that includes an instruction cache 2852, an instruction unit 2854, an address mapper 2856, a register file 2858, one or more GPGPU cores (General Purpose Graphics Processing Unit) 2862, and one or more loaders /memory units 2866 includes, but is not limited to. GPGPU cores 2862 and load/store units 2866 are coupled to cache memory 2872 and shared memory 2870 via a store and cache interconnect 2868 .

In mindestens einem Ausführungsbeispiel empfängt der Befehlscache 2852 einen Strom von auszuführenden Befehlen vom Pipeline-Verwalter 2832. In mindestens einem Ausführungsbeispiel werden Befehle im Befehlscache 2852 zwischengespeichert und zur Ausführung durch die Befehlseinheit 2854 verteilt. In mindestens einem Ausführungsbeispiel kann die Befehlseinheit 2854 Befehle als Thread-Gruppen (z.B. Warps) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb des GPGPU-Kerns 2862 zugeordnet ist. In mindestens einem Ausführungsbeispiel kann ein Befehl auf einen beliebigen lokalen, gemeinsam genutzten oder globalen Adressraum zugreifen, indem sie eine Adresse innerhalb eines einheitlichen Adressraums spezifiziert. In mindestens einem Ausführungsbeispiel kann die Adresszuordnungseinheit 2856 dazu verwendet werden, Adressen in einem einheitlichen Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die von den Lade-/Speichereinheiten 2866 zugegriffen werden kann.In at least one embodiment, instruction cache 2852 receives a stream of instructions to be executed from pipeline manager 2832. In at least one embodiment, instructions are cached in instruction cache 2852 and dispatched to instruction unit 2854 for execution. In at least one embodiment, the instruction unit 2854 may dispatch instructions as thread groups (e.g., warps), with each thread of the thread group being associated with a different execution unit within the GPGPU core 2862. In at least one embodiment, an instruction can access any local, shared, or global address space by specifying an address within a unified address space. In at least one embodiment, address mapping unit 2856 may be used to translate addresses in a uniform address space into a unique memory address accessible by load/store units 2866.

In mindestens einem Ausführungsbeispiel ist in der Registerdatei 2858 ein Satz von Registern für Funktionseinheiten des Grafik-Multiprozessors 2834 vorgesehen. In mindestens einem Ausführungsbeispiel ist in der Registerdatei 2858 ein temporärer Speicher für Operanden vorgesehen, die mit Datenpfaden von Funktionseinheiten (z.B. GPGPU-Kerne 2862, Lade-/Speichereinheiten 2866) des Grafik-Multiprozessors 2834 verbunden sind. In mindestens einem Ausführungsbeispiel ist die Registerdatei 2858 auf jede der Funktionseinheiten so aufgeteilt, dass jeder Funktionseinheit ein dedizierter Teil der Registerdatei 2858 zugeordnet ist. In mindestens einem Ausführungsbeispiel ist die Registerdatei 2858 auf verschiedene Warps aufgeteilt, die vom Grafik-Multiprozessor 2834 ausgeführt werden.In at least one embodiment, register file 2858 provides a set of registers for functional units of graphics multiprocessor 2834. In at least one embodiment, register file 2858 provides temporary storage for operands associated with data paths of functional units (e.g., GPGPU cores 2862, load/store units 2866) of graphics multiprocessor 2834. In at least one embodiment, register file 2858 is partitioned among each of the functional units such that each functional unit has a dedicated portion of register file 2858 associated with it. In at least one embodiment, register file 2858 is partitioned into various warps executed by graphics multiprocessor 2834.

In mindestens einem Ausführungsbeispiel können GPGPU-Kerne 2862 jeweils Gleitkommaeinheiten (FPUs) und/oder ganzzahlige arithmetische Logikeinheiten (ALUs) umfassen, die zur Ausführung von Befehlen des Grafik-Multiprozessors 2834 verwendet werden. GPGPU-Kerne 2862 können in der Architektur ähnlich sein oder sich in der Architektur unterscheiden. In mindestens einem Ausführungsbeispiel umfasst ein erster Teil der GPGPU-Kerne 2862 eine Einfachpräzisions-FPU und eine ganzzahlige ALU, während ein zweiter Teil der GPGPU-Kerne eine Doppelpräzisions-FPU umfasst. In mindestens einem Ausführungsbeispiel können FPUs den IEEE 754-2008-Standard für Gleitkomma-Arithmetik implementieren oder Gleitkomma-Arithmetik mit variabler Genauigkeit ermöglichen. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 2834 zusätzlich eine oder mehrere feste Funktion(en) oder spezielle Funktionseinheiten umfassen, um bestimmte Funktionen wie das Kopieren von Rechtecken oder Operationen zum Überblenden von Pixeln auszuführen. In mindestens einem Ausführungsbeispiel können ein oder mehrere GPGPU-Kerne auch eine feste oder spezielle Funktionslogik umfassen.In at least one embodiment, GPGPU cores 2862 may each include floating point units (FPUs) and/or integer arithmetic logic units (ALUs) used to execute graphics multiprocessor 2834 instructions. GPGPU cores 2862 may be similar in architecture or different in architecture. In at least one embodiment, a a first part of the GPGPU cores 2862 comprises a single precision FPU and an integer ALU, while a second part of the GPGPU cores comprises a double precision FPU. In at least one embodiment, FPUs may implement the IEEE 754-2008 standard for floating point arithmetic or enable variable precision floating point arithmetic. In at least one embodiment, the graphics multiprocessor 2834 may additionally include one or more fixed function(s) or special purpose functional units to perform specific functions such as copying rectangles or pixel blending operations. In at least one embodiment, one or more GPGPU cores may also include fixed or special purpose functional logic.

In mindestens einem Ausführungsbeispiel umfassen die GPGPU-Kerne 2862 SIMD-Logik, die in der Lage ist, einen einzigen Befehl auf mehreren Sätzen von Daten auszuführen. In mindestens einem Ausführungsbeispiel können GPGPU-Cores 2862 physisch SIMD4-, SIMD8- und SIMD16-Befehle ausführen und logisch SIMD1-, SIMD2- und SIMD32-Befehle ausführen. In mindestens einem Ausführungsbeispiel können SIMD-Befehle für GPGPU-Kerne zur Kompilierungszeit von einem Schattierungs-Compiler generiert werden oder automatisch generiert werden, wenn Programme ausgeführt werden, die für SPMD- (Single Program Multiple Data) oder SIMT-Architekturen geschrieben und kompiliert wurden. In mindestens einem Ausführungsbeispiel können mehrere Threads eines für ein SIMT-Ausführungsmodell konfigurierten Programms über eine einzige SIMD-Instruktion ausgeführt werden. Beispielsweise können in mindestens einem Ausführungsbeispiel acht SIMT-Threads, die gleiche oder ähnliche Operationen ausführen, parallel über eine einzige SIMD8-Logikeinheit ausgeführt werden.In at least one embodiment, the GPGPU cores 2862 include SIMD logic capable of executing a single instruction on multiple sets of data. In at least one embodiment, GPGPU cores 2862 can physically execute SIMD4, SIMD8, and SIMD16 instructions and logically execute SIMD1, SIMD2, and SIMD32 instructions. In at least one embodiment, SIMD instructions for GPGPU cores may be generated at compile time by a shadowing compiler or may be generated automatically when executing programs written and compiled for SPMD (Single Program Multiple Data) or SIMT architectures. In at least one embodiment, multiple threads of a program configured for a SIMT execution model may be executed from a single SIMD instruction. For example, in at least one embodiment, eight SIMT threads performing the same or similar operations may execute in parallel through a single SIMD8 logic unit.

In mindestens einem Ausführungsbeispiel ist die Speicher- und Cache-Verbindung 2868 ein Verbindungsnetzwerk, das jede funktionelle Einheit des Grafik-Multiprozessors 2834 mit der Registerdatei 2858 und mit dem gemeinsamen Speicher 2870 verbindet. In mindestens einem Ausführungsbeispiel ist die Speicher- und Cache-Verbindung 2868 eine Crossbar-Verbindung, die es der Lade-/Speichereinheit 2866 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher 2870 und der Registerdatei 2858 zu implementieren. In mindestens einem Ausführungsbeispiel kann die Registerdatei 2858 mit derselben Frequenz wie die GPGPU-Kerne 2862 betrieben werden, so dass der Datentransfer zwischen den GPGPU-Kernen 2862 und der Registerdatei 2858 mit sehr geringer Latenz erfolgt. In mindestens einem Ausführungsbeispiel kann der gemeinsame Speicher 2870 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf Funktionseinheiten innerhalb des Grafik-Multiprozessors 2834 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der Cache-Speicher 2872 als Daten-Cache verwendet werden, um beispielsweise Texturdaten zwischen Funktionseinheiten und der Textureinheit 2836 zwischenzuspeichern. In mindestens einem Ausführungsbeispiel kann der gemeinsam genutzte Speicher 2870 auch als programmverwalteter Cache verwendet werden. In mindestens einem Ausführungsbeispiel können Threads, die auf GPGPU-Kernen 2862 ausgeführt werden, programmgesteuert Daten im gemeinsamen Speicher zusätzlich zu automatisch gecachten Daten speichern, die im Cache-Speicher 2872 gespeichert sind.In at least one embodiment, memory and cache interconnect 2868 is an interconnection network that connects each functional unit of graphics multiprocessor 2834 to register file 2858 and to shared memory 2870 . In at least one embodiment, store and cache interconnect 2868 is a crossbar interconnect that allows load/store unit 2866 to implement load and store operations between shared memory 2870 and register file 2858. In at least one embodiment, the register file 2858 can operate at the same frequency as the GPGPU cores 2862 such that data transfer between the GPGPU cores 2862 and the register file 2858 occurs with very low latency. In at least one embodiment, shared memory 2870 may be used to enable communication between threads executing on functional units within graphics multiprocessor 2834. In at least one embodiment, cache memory 2872 may be used as a data cache to cache texture data between functional units and texture unit 2836, for example. In at least one embodiment, shared memory 2870 may also be used as a program managed cache. For at least one embodiment, threads executing on GPGPU cores 2862 may programmatically store data in shared memory in addition to auto-cached data stored in cache memory 2872 .

In mindestens einem Ausführungsbeispiel ist ein Parallelprozessor oder GPGPU, wie hierin beschrieben, kommunikativ mit Host/Prozessor-Kernen gekoppelt, um Grafikoperationen, maschinelle Lernvorgänge, Operationen zur Musteranalyse und verschiedene GPU-Funktionen für allgemeine Zwecke (engl. general purpose GPU, GPGPU) zu beschleunigen. In mindestens einem Ausführungsbeispiel kann die GPU über einen Bus oder eine andere Verbindung (z.B. eine Hochgeschwindigkeitsverbindung wie PCIe oder NVLink) kommunikativ mit dem Host-Prozessor/-Kernen gekoppelt sein. In mindestens einem Ausführungsbeispiel kann die GPU in demselben Gehäuse oder Chip wie die Kerne integriert und über einen internen Prozessorbus/eine interne Verbindung (d.h. intern mit dem Gehäuse oder dem Chip) kommunikativ mit den Kernen gekoppelt sein. In mindestens einem Ausführungsbeispiel können die Prozessorkerne unabhängig von der Art und Weise, wie die GPU angeschlossen ist, der GPU Arbeit in Form von Sequenzen von Befehlen/Instruktionen zuweisen, die in einem Arbeitsdeskriptor enthalten sind. In mindestens einem Ausführungsbeispiel verwendet die GPU dann dedizierte Schaltungsanordnungen/Logik zur effizienten Verarbeitung dieser Befehle/Instruktionen.In at least one embodiment, a parallel processor or GPGPU as described herein is communicatively coupled to host/processor cores to perform graphics operations, machine learning, pattern analysis operations, and various general purpose GPU (GPGPU) functions accelerate. In at least one embodiment, the GPU may be communicatively coupled to the host processor/cores via a bus or other connection (e.g., a high-speed connection such as PCIe or NVLink). In at least one embodiment, the GPU may be integrated in the same package or chip as the cores and communicatively coupled to the cores via an internal processor bus/interconnect (i.e., internal to the package or chip). In at least one embodiment, regardless of how the GPU is connected, the processor cores may assign work to the GPU in the form of sequences of commands/instructions contained in a work descriptor. In at least one embodiment, the GPU then uses dedicated circuitry/logic to efficiently process these commands/instructions.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 18C zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are here in connection with 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 18C for inferring or predicting operations based, at least in part, on weight parameters generated using training operations with neural networks, functions and/or architectures ronal networks or use cases of neural networks described herein can be used.

29 zeigt ein Multi-GPU-Computersystem 2900 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das Multi-GPU-Computersystem 2900 einen Prozessor 2902 umfassen, der über einen Host-Schnittstellen-Switch 2904 mit mehreren Allzweck-Grafikverarbeitungseinheiten (GPGPUs) 2906A-D gekoppelt ist. In mindestens einem Ausführungsbeispiel ist der Host-Schnittstellen-Switch 2904 ein PCI-Express-Switch-Gerät, das den Prozessor 2902 mit einem PCI-Express-Bus koppelt, über den der Prozessor 2902 mit den GPGPUs 2906A-D kommunizieren kann. Die GPGPUs 2906A-D können über einen Satz von Hochgeschwindigkeits-Punkt-zu-Punkt-Verbindungen zwischen den GPUs 2916 miteinander kommunizieren. In mindestens einem Ausführungsbeispiel stellen GPU-zu-GPU-Verbindungen 2916 zu jeder der GPGPUs 2906A-D über eine dedizierte GPU-Verbindung her. In mindestens einem Ausführungsbeispiel ermöglichen P2P-GPU-Verbindungen 2916 eine direkte Kommunikation zwischen den einzelnen GPGPUs 2906A-D, ohne dass eine Kommunikation über den Host-Schnittstellenbus 2904, an den der Prozessor 2902 angeschlossen ist, erforderlich ist. In mindestens einem Ausführungsbeispiel, bei dem der GPU-zu-GPU-Verkehr zu den P2P-GPU-Verbindungen 2916 geleitet wird, bleibt der Host-Schnittstellenbus 2904 für den Zugriff auf den Systemspeicher oder für die Kommunikation mit anderen Instanzen des Multi-GPU-Rechensystems 2900, beispielsweise über ein oder mehrere Netzwerkgeräte, verfügbar. Während in mindestens einem Ausführungsbeispiel die GPGPUs 2906A-D über den Switch 2904 der Host-Schnittstelle mit dem Prozessor 2902 verbunden sind, umfasst der Prozessor 2902 in mindestens einem Ausführungsbeispiel eine direkte Unterstützung für P2P-GPU-Links 2916 und kann direkt mit den GPGPUs 2906A-D verbunden werden. 29 12 shows a multi-GPU computing system 2900 in accordance with at least one embodiment. In at least one embodiment, the multi-GPU computing system 2900 may include a processor 2902 coupled through a host interface switch 2904 to multiple general purpose graphics processing units (GPGPUs) 2906A-D. In at least one embodiment, host interface switch 2904 is a PCI Express switch device that couples processor 2902 to a PCI Express bus over which processor 2902 can communicate with GPGPUs 2906A-D. The GPGPUs 2906A-D can communicate with each other via a set of high-speed point-to-point connections between the GPUs 2916. In at least one embodiment, GPU-to-GPU connections 2916 to each of the GPGPUs 2906A-D make a dedicated GPU connection. In at least one embodiment, P2P GPU links 2916 allow direct communication between each GPGPU 2906A-D without requiring communication over the host interface bus 2904 to which the processor 2902 is attached. In at least one embodiment where GPU-to-GPU traffic is routed to P2P GPU connections 2916, host interface bus 2904 remains available for accessing system memory or communicating with other instances of the multi-GPU Computing system 2900, for example via one or more network devices. While in at least one embodiment the GPGPUs 2906A-D connect to the processor 2902 through the host interface switch 2904, in at least one embodiment the processor 2902 includes direct support for P2P GPU links 2916 and can interface directly with the GPGPUs 2906A -D to be connected.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 18C zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are here in connection with 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 18C to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

30 ist ein Blockdiagramm eines Grafikprozessors 3000, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3000 eine Ringverbindung (engl. ring interconnect) 3002, ein Pipeline-Frontend 3004, die Engine 3037 und die Grafikkerne 3080A-3080N. In mindestens einem Ausführungsbeispiel koppelt die Ringverbindung 3002 den Grafikprozessor 3000 mit anderen Einheiten, einschließlich anderer Grafikprozessoren oder einem oder mehreren allgemeinen Prozessorkernen. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3000 einer von vielen Prozessoren, die in ein Mehrkernverarbeitungssystem integriert sind. 30 10 is a block diagram of a graphics processor 3000, according to at least one embodiment. In at least one embodiment, graphics processor 3000 includes ring interconnect 3002, pipeline front end 3004, engine 3037, and graphics cores 3080A-3080N. In at least one embodiment, ring interconnect 3002 couples graphics processor 3000 to other entities, including other graphics processors or one or more general processor cores. In at least one embodiment, graphics processor 3000 is one of many processors integrated into a multi-core processing system.

In mindestens einem Ausführungsbeispiel empfängt der Grafikprozessor 3000 Stapel von Befehlen über die Ringverbindung 3002. In mindestens einem Ausführungsbeispiel werden eingehende Befehle von einem Befehls-Streamer 3003 im Pipeline-Frontend 3004 interpretiert. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3000 eine skalierbare Ausführungslogik zur Durchführung von 3D-Geometrieverarbeitung und Medienverarbeitung mittels Grafikkern(en) 3080A-3080N. In mindestens einem Ausführungsbeispiel für Befehle zur 3D-Geometrieverarbeitung liefert Befehls-Streamer 3003 Befehle an die Geometrie-Pipeline 3036. In mindestens einem Ausführungsbeispiel liefert der Befehls-Streamer 3003 für mindestens einige Medienverarbeitungsbefehle Befehle an ein Video-Frontend 3034, das mit der Medienengine 3037 gekoppelt ist. In mindestens einem Ausführungsbeispiel umfasst die Medienengine 3037 eine Video Quality Engine (VQE) 3030 für Video- und Bildnachbearbeitung und eine Multiformat-Codierungs-/Decodierungs-Engine (MFX) 3033, um eine hardwarebeschleunigte Codierung und Decodierung von Mediendaten bereitzustellen. In mindestens einem Ausführungsbeispiel erzeugen die Geometrie-Pipeline 3036 und die Medienengine 3037 jeweils Ausführungsthreads für Thread-Ausführungsressourcen, die von mindestens einem Grafikkern 3080A bereitgestellt werden.In at least one embodiment, graphics processor 3000 receives batches of commands over ring interconnect 3002. In at least one embodiment, incoming commands are interpreted by command streamer 3003 in pipeline front end 3004. In at least one embodiment, graphics processor 3000 includes scalable execution logic to perform 3D geometry processing and media processing using graphics core(s) 3080A-3080N. In at least one embodiment for 3D geometry processing commands, command streamer 3003 delivers commands to geometry pipeline 3036. In at least one embodiment, command streamer 3003 delivers commands to a video front end 3034 running media engine 3037 for at least some media processing commands is coupled. In at least one embodiment, media engine 3037 includes a video quality engine (VQE) 3030 for video and image post-processing and a multi-format encoding/decoding engine (MFX) 3033 to provide hardware-accelerated encoding and decoding of media data. In at least one embodiment, geometry pipeline 3036 and media engine 3037 each create threads of execution for thread execution resources provided by at least one graphics core 3080A.

In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3000 skalierbare Thread-Ausführungsressourcen mit modularen Kernen 3080A-3080N (manchmal als Kernabschnitte bezeichnet), die jeweils mehrere Unterkerne 3050A-550N, 3060A-3060N (manchmal als Kernunterabschnitte bezeichnet) aufweisen. In mindestens einem Ausführungsbeispiel kann der Grafikprozessor 3000 über eine beliebige Anzahl von Grafikkernen 3080A bis 3080N verfügen. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3000 einen Grafikkern 3080A mit mindestens einem ersten Unterkern 3050A und einem zweiten Unterkern 3060A. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3000 ein Niedrigleistungsprozessor mit einem einzigen Unterkern (z.B. 3050A). In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3000 mehrere Grafikkerne 3080A-3080N, von denen jeder einen Satz erster Unterkerne 3050A-3050N und einen Satz zweiter Unterkerne 3060A-3060N umfasst. In mindestens einem Ausführungsbeispiel umfasst jeder Unterkern in den ersten Unterkernen 3050A-3050N mindestens einen ersten Satz von Ausführungseinheiten 3052A-3052N und Medien-/Texturabtaster 3054A-3054N. In mindestens einem Ausführungsbeispiel umfasst jeder Unterkern in den zweiten Unterkernen 3060A-3060N mindestens einen zweiten Satz von Ausführungseinheiten 3062A-3062N und Abtastern 3064A-3064N. In mindestens einem Ausführungsbeispiel teilt sich jeder Unterkern 3050A-3050N, 3060A-3060N einen Satz gemeinsam genutzter Ressourcen 3070A-3070N. In mindestens einem Ausführungsbeispiel umfassen gemeinsam genutzte Ressourcen gemeinsam genutzten Cache-Speicher und Pixel-Operationslogik.In at least one embodiment, graphics processor 3000 includes scalable thread execution resources with modular cores 3080A-3080N (sometimes referred to as core sections) each having multiple sub-cores 3050A-550N, 3060A-3060N (sometimes referred to as core subsections). In at least one embodiment, graphics processor 3000 may have any number of graphics cores 3080A-3080N. In at least one embodiment, the graphic includes Processor 3000 includes a graphics core 3080A having at least a first sub-core 3050A and a second sub-core 3060A. In at least one embodiment, graphics processor 3000 is a low-power processor with a single sub-core (eg, 3050A). In at least one embodiment, graphics processor 3000 includes multiple graphics cores 3080A-3080N, each including a set of first sub-cores 3050A-3050N and a set of second sub-cores 3060A-3060N. In at least one embodiment, each sub-core in first sub-cores 3050A-3050N includes at least a first set of execution units 3052A-3052N and media/texture scanners 3054A-3054N. In at least one embodiment, each sub-core in the second sub-cores 3060A-3060N includes at least a second set of execution units 3062A-3062N and samplers 3064A-3064N. In at least one embodiment, each sub-core 3050A-3050N, 3060A-3060N shares a set of shared resources 3070A-3070N. In at least one embodiment, shared resources include shared cache memory and pixel operation logic.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1515 im System 18C zur Inferenz oder Vorhersage von Operationen basierend, zumindest teilweise, auf Gewichtsparametern, die unter Verwendung von Trainingsoperationen mit neuronalen Netzen, Funktionen und/oder Architekturen neuronaler Netze oder hierin beschriebenen Anwendungsfällen neuronaler Netze berechnet wurden, verwendet werden.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are here in connection with 15A and or 15B provided. In at least one embodiment, the inference and/or training logic 1515 in the system 18C to infer or predict operations based, at least in part, on weight parameters calculated using training operations with neural networks, functions and/or neural network architectures, or neural network use cases described herein.

31 ist ein Blockdiagramm, das eine Mikroarchitektur für einen Prozessor 3100 zeigt, die logische Schaltungen zur Ausführung von Befehlen umfassen kann, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann der Prozessor 3100 Instruktionen ausführen, einschließlich x86-Instruktionen, ARM-Instruktionen, spezialisierte Instruktionen für anwendungsspezifische integrierte Schaltungen (ASICs) usw. In mindestens einem Ausführungsbeispiel kann der Prozessor 3110 Register zur Speicherung gepackter Daten umfassen, wie z.B. 64-Bit breite MMXTM-Register in Mikroprozessoren, die mit MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, betrieben werden. In mindestens einem Ausführungsbeispiel können MMX-Register, die sowohl in Ganzzahl- als auch in Gleitkommaform verfügbar sind, mit gepackten Datenelementen arbeiten, die Einzelbefehle, Mehrfachdaten („SIMD“) und Streaming-SIMD-Erweiterungen („SSE“) betreffen. In mindestens einem Ausführungsbeispiel können 128 Bit breite XMM-Register, die sich auf die SSE2-, SSE3-, SSE4-, AVX- oder darüber hinausgehende (allgemein als „SSEx“ bezeichnete) Technologie beziehen, solche gepackten Datenoperanden enthalten. In mindestens einem Ausführungsbeispiel kann der Prozessor 3110 Instruktionen ausführen, um Algorithmen für maschinelles Lernen oder Deep Learning, Training oder Inferenzieren zu beschleunigen. 31 12 is a block diagram depicting a microarchitecture for a processor 3100, which may include logic circuitry for executing instructions, according to at least one embodiment. In at least one embodiment, processor 3100 may execute instructions, including x86 instructions, ARM instructions, specialized instructions for application specific integrated circuits (ASICs), etc. In at least one embodiment, processor 3110 may include registers for storing packed data, such as 64- Bit-wide MMXTM registers in microprocessors operating on MMX technology from Intel Corporation of Santa Clara, California. In at least one embodiment, MMX registers, which are available in both integer and floating point form, can operate with packed data items involving single instructions, multiple data ("SIMD"), and streaming SIMD extensions ("SSE"). In at least one embodiment, 128-bit wide XMM registers related to SSE2, SSE3, SSE4, AVX, or beyond (commonly referred to as “SSEx”) technology may contain such packed data operands. In at least one embodiment, processor 3110 may execute instructions to accelerate machine learning or deep learning algorithms, training, or inference.

In mindestens einem Ausführungsbeispiel umfasst der Prozessor 3100 ein in einer R In-Order-Frontend („Frontend“) 3101, um auszuführende Befehle zu holen und Befehle vorzubereiten, die später in der Prozessor-Pipeline verwendet werden sollen. In mindestens einem Ausführungsbeispiel kann das Frontend 3101 mehrere Einheiten umfassen. In mindestens einem Ausführungsbeispiel holt ein Befehls-Vorholer 3126 Befehle aus dem Speicher und führt Befehle einem Befehlsdekodierer 3128 zu, der seinerseits Befehle dekodiert oder interpretiert. In mindestens einem Ausführungsbeispiel beispielsweise dekodiert der Befehlsdekodierer 3128 einen empfangenen Befehl in eine oder mehrere Operationen, die als „Mikrobefehle“ oder „Mikrooperationen“ (auch als „Mikro-Ops“ oder „Uops“ bezeichnet) bezeichnet werden und von dieser Maschine ausgeführt werden können. In mindestens einem Ausführungsbeispiel zerlegt der Befehlsdekodierer 3128 einen Befehl in einen Opcode und entsprechende Daten- und Steuerfelder, die von der Mikroarchitektur verwendet werden können, um Operationen gemäß mindestens einem Ausführungsbeispiel auszuführen. In mindestens einem Ausführungsbeispiel kann ein Abfolge-Cache (eng. trace cache) 3130 dekodierte Uops in programmgeordnete Sequenzen oder Spuren (engl. traces) in einer Uop-Warteschlange 3134 zur Ausführung zusammensetzen. Wenn der Abfolge-Cache 3130 in mindestens einem Ausführungsbeispiel auf eines komplexen Befehls trifft, stellt ein Mikrocode ROM 3132 die zum Abschluss des Betriebs erforderlichen Uops bereit.In at least one embodiment, the processor 3100 includes an R in-order front end (“front end”) 3101 to fetch instructions to be executed and to prepare instructions to be used later in the processor pipeline. In at least one embodiment, the front end 3101 may include multiple entities. In at least one embodiment, an instruction prefetcher 3126 fetches instructions from memory and provides instructions to an instruction decoder 3128, which in turn decodes or interprets instructions. For example, in at least one embodiment, instruction decoder 3128 decodes a received instruction into one or more operations, referred to as "micro-instructions" or "micro-ops" (also referred to as "micro-ops" or "uops"), that may be executed by that machine . In at least one embodiment, instruction decoder 3128 decomposes an instruction into an opcode and corresponding data and control fields that can be used by the microarchitecture to perform operations in accordance with at least one embodiment. In at least one embodiment, a trace cache 3130 may assemble decoded uops into program-ordered sequences or traces in a uop queue 3134 for execution. In at least one embodiment, when the trace cache 3130 encounters a complex instruction, a microcode ROM 3132 provides the necessary Uops to complete the operation.

In mindestens einem Ausführungsbeispiel können einige Befehle in eine einzelne Mikro-Operation umgewandelt werden, während andere mehrere Mikro-Operationen benötigen, um einen vollständigen Betrieb durchzuführen. In mindestens einem Ausführungsbeispiel kann der Befehlsdekodierer 3128 auf den Mikrocode ROM 3132 zugreifen, um einen Befehl auszuführen, wenn mehr als vier Mikro-Operationen zur Ausführung eines Befehls erforderlich sind. In mindestens einem Ausführungsbeispiel kann ein Befehl zur Verarbeitung im Befehlsdekodierer 3128 in eine kleine Anzahl von Mikro-Ops dekodiert werden. In mindestens einem Ausführungsbeispiel kann ein Befehl im Mikrocode ROM 3132 gespeichert werden, falls eine Anzahl von Mikro-Ops zur Ausführung des Betriebs erforderlich ist. In mindestens einem Ausführungsbeispiel bezieht sich der Abfolge-Cache (engl. trace cache) 3130 auf ein Entry Point Programmable Logic Array („PLA“) zur Bestimmung eines korrekten Mikro-Befehlszeigers zum Lesen von Mikrocode-Sequenzen zur Vervollständigung eines oder mehrerer Befehle aus dem Mikrocode ROM 3132, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das Frontend 3101 der Engine, nachdem der Mikrocode ROM 3132 die Sequenzierung von Mikro-Ops für einen Befehl beendet hat, das Holen von Mikro-Ops aus dem Abfolge-Cache 3130 wiederaufnehmen.In at least one embodiment, some instructions may be converted into a single micro-op, while others require multiple micro-ops to perform a full operation. In at least one embodiment, instruction decoder 3128 may access microcode ROM 3132 to execute an instruction when more than four micro-operations are required to execute an instruction. In at least one embodiment, an instruction may be decoded into a small number of micro-ops for processing in instruction decoder 3128 . At least In at least one embodiment, an instruction may be stored in microcode ROM 3132 if a number of micro-ops are required to perform the operation. In at least one embodiment, trace cache 3130 refers to an Entry Point Programmable Logic Array ("PLA") for determining a correct microinstruction pointer for reading microcode sequences to complete one or more instructions from the Microcode ROM 3132, according to at least one embodiment. In at least one embodiment, after the microcode ROM 3132 finishes sequencing micro-ops for an instruction, the engine front end 3101 may resume fetching micro-ops from the sequence cache 3130 .

In mindestens einem Ausführungsbeispiel kann die Out-of-Order Ausführungsengine („Out-of-Order-Engine“, dt. Ausführung in anderer Reihenfolge als im Programmcode) 3103 Befehle für die Ausführung vorbereiten. In mindestens einem Ausführungsbeispiel verfügt die Ausführungslogik für die „Out-of-Order“-Ausführung über eine Reihe von Puffern, um den Befehlsfluss zu glätten und neu zu ordnen, um die Leistung zu optimieren, wenn die Pipeline heruntergefahren und die Ausführung geplant wird. Die Out-of-Order Ausführungsengine 3103 umfasst, ohne Einschränkung, einen Allokator/Register-Umbenenner 3140, eine Speicher uop-Warteschlange 3142, eine Ganzzahl-/Gleitkomma-Uop-Warteschlange 3144, einen SpeicherPlaner 3146, einen schnellen Planer 3102, einen langsamen/allgemeinen Gleitkomma-Planer („langsamer/allgemeiner FP-Planer“) 3104 und einen einfachen Gleitkomma-Planer („einfacher FP-Planer“) 3106. In mindestens einem Ausführungsbeispiel werden der schnelle Planer 3102, der langsame/allgemeine Gleitkomma-Planer 3104 und der einfache Gleitkomma-Planer 3106 hier auch kollektiv als „uop-Planer 3102, 3104, 3106“ bezeichnet. Der Allokator/Register-Umbenenner 3140 weist Maschinenpuffer und Ressourcen zu, die jede uop zur Ausführung benötigt. In mindestens einem Ausführungsbeispiel benennt der Allokator/Registerumbenenner 3140 logische Register auf Einträge in einer Registerdatei um. In mindestens einem Ausführungsbeispiel allokiert der Allokator/Registerumbenenner 3140 auch einen Eintrag für jede uop in einer von zwei uop-Warteschlangen, der Speicher-uop-Warteschlange 3142 für Speicheroperationen und der Ganzzahl/Gleitkomma-op-Warteschlange 3144 für Nicht-Speicheroperationen, vor dem Speicherplaner 3146 und den uop-Planern 3102, 3104, 3106. In mindestens einem Ausführungsbeispiel bestimmen die uop-Planer 3102, 3104, 3106 basierend auf der Bereitschaft ihrer abhängigen Eingangsregister-Operandenquellen und der Verfügbarkeit von Ausführungsressourcen, die uops benötigen, um ihren Betrieb abzuschließen, wann ein uop zur Ausführung bereit ist. In mindestens einem Ausführungsbeispiel kann der schnelle Planer 3102 von mindestens einem Ausführungsbeispiel auf jeder Hälfte des Haupt-Taktzyklus planen, während der langsame/allgemeine Gleitkomma-Planer 3104 und der einfache Gleitkomma-Planer 3106 einmal pro Hauptprozessor-Taktzyklus planen können. In mindestens einem Ausführungsbeispiel können die uop-Planer 3102, 3104 und 3106 für Verteilerports arbitrieren, um uops zur Ausführung zu planen.In at least one embodiment, out-of-order execution engine 3103 may prepare instructions for execution. In at least one embodiment, the out-of-order execution logic has a series of buffers to smooth and reorder instruction flow to optimize performance when the pipeline is shut down and execution is scheduled. The out-of-order execution engine 3103 includes, without limitation, an allocator/register renamer 3140, a memory uop queue 3142, an integer/floating point uop queue 3144, a memory scheduler 3146, a fast scheduler 3102, a slow /general floating-point scheduler ("slow/general FP scheduler") 3104, and a simple floating-point scheduler ("simple FP scheduler") 3106. In at least one embodiment, the fast scheduler 3102, the slow/general floating-point scheduler 3104 and the simple floating point scheduler 3106 also referred to herein collectively as "uop scheduler 3102, 3104, 3106". The Allocator/Register Renamer 3140 allocates machine buffers and resources each uop needs to execute. In at least one embodiment, allocator/register renamer 3140 renames logical registers to entries in a register file. In at least one embodiment, the allocator/register renamer 3140 also allocates an entry for each uop in one of two uop queues, the memory uop queue 3142 for memory operations and the integer/floating point op queue 3144 for non-memory operations, before the memory scheduler 3146 and the uop schedulers 3102, 3104, 3106. In at least one embodiment, the uop schedulers 3102, 3104, 3106 determine the uops required to complete their operation based on the readiness of their dependent input register operand sources and the availability of execution resources , when a uop is ready to run. In at least one embodiment, the fast scheduler 3102 of at least one embodiment can schedule on every half of the main clock cycle, while the slow/general floating point scheduler 3104 and the simple floating point scheduler 3106 can schedule once per main processor clock cycle. In at least one embodiment, hub port uop schedulers 3102, 3104, and 3106 may arbitrate to schedule uops for execution.

In mindestens einem Ausführungsbeispiel umfasst der Ausführungsblock b11, ohne Einschränkung, ein(e) ganzzahlige Registerdatei/Umgehungsnetzwerk (engl. bypass network) 3108, eine Gleitkomma-Registerdatei/Umgehungsnetzwerk („FP-Registerdatei/Bypass-Netzwerk“) 3110, Adressgenerierungseinheiten („AGUs“) 3112 und 3114, schnelle arithmetisch-logische Einheiten (ALUs) („schnelle ALUs“) 3116 und 3118, eine langsame arithmetisch-logische Einheit („langsame ALU“) 3120, eine Gleitkomma-ALU („FP“) 3122 und eine Gleitkomma-Bewegungseinheit („FP-Bewegung“) 3124. In mindestens einem Ausführungsbeispiel werden die ganzzahlige Registerdatei / das Umgehungsnetzwerk 3108 und die Gleitkomma-Registerdatei / das Umgehungsnetzwerk 3110 hier auch als „Registerdateien 3108, 3110“ bezeichnet. In mindestens einem Ausführungsbeispiel werden die AGUS 3112 und 3114, die schnellen ALUs 3116 und 3118, die langsamen ALU 3120, die Gleitkomma-ALU 3122 und die Gleitkomma-Bewegungseinheit 3124 hierin auch ganzzahlige Registerdatei/Umgehungsnetzwerk als „Ausführungseinheiten 3112, 3114, 3116, 3118, 3120, 3122 und 3124“ bezeichnet. In mindestens einem Ausführungsbeispiel kann der Ausführungsblock b11 ohne Einschränkung jede beliebige Anzahl (einschließlich Null) und Art von Registerdateien, Bypass-Netzwerken, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination umfassen.In at least one embodiment, execution block b11 includes, without limitation, an integer register file/bypass network 3108, a floating point register file/bypass network ("FP register file/bypass network") 3110, address generation units (" AGUs") 3112 and 3114, fast arithmetic logic units (ALUs) ("Fast ALUs") 3116 and 3118, a slow arithmetic logic unit ("Slow ALU") 3120, a floating point ALU ("FP") 3122, and a floating point move unit ("FP move") 3124. In at least one embodiment, integer register file/bypass network 3108 and floating point register file/bypass network 3110 are also referred to herein as "register files 3108, 3110". In at least one embodiment, AGUS 3112 and 3114, fast ALUs 3116 and 3118, slow ALU 3120, floating point ALU 3122, and floating point mover 3124 are also referred to herein as "execution units 3112, 3114, 3116, 3118 , 3120, 3122 and 3124”. In at least one embodiment, execution block b11 may include, without limitation, any number (including zero) and type of register files, bypass networks, address generation units, and execution units, in any combination.

In mindestens einem Ausführungsbeispiel können die Registerdateien 3108, 3110 zwischen den uop-Planern 3102, 3104, 3106 und den Ausführungseinheiten 3112, 3114, 3116, 3118, 3120, 3122 und 3124 angeordnet werden. In mindestens einem Ausführungsbeispiel führt die Registerdatei / das Umgehungsnetzwerk 3108 ganzzahlige Operationen durch. In mindestens einem Ausführungsbeispiel führt Gleitkomma-Registerdatei/Bypass-Netzwerk 3110 Gleitkomma-Operationen aus. In mindestens einem Ausführungsbeispiel kann jede der Registerdateien 3108, 3110 ohne Einschränkung ein Umgehungsnetzwerk umfassen, das gerade abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder an neue abhängige Uops weiterleiten kann. In mindestens einem Ausführungsbeispiel können die Registerdateien 3108, 3110 Daten miteinander austauschen. In mindestens einem Ausführungsbeispiel kann die Registerdatei / das Umgehungsnetzwerk 3108 ohne Einschränkung zwei separate Registerdateien umfassen, eine Registerdatei für niederwertige 32 Datenbits und eine zweite Registerdatei für höherwertige 32 Datenbits. In mindestens einem Ausführungsbeispiel kann die Gleitkomma-Registerdatei / das Umgehungsnetzwerk 3110 ohne Einschränkung 128 Bit breite Einträge umfassen, da Gleitkommabefehle in der Regel Operanden mit einer Breite von 64 bis 128 Bit haben.In at least one embodiment, register files 3108, 3110 may be located between uop schedulers 3102, 3104, 3106 and execution units 3112, 3114, 3116, 3118, 3120, 3122, and 3124. In at least one embodiment, register file/bypass network 3108 performs integer operations. In at least one embodiment, floating point register file/bypass network 3110 performs floating point operations. In at least one embodiment, each of the register files 3108, 3110 may include, without limitation, a bypass network that may bypass or forward to new dependent uops just completed results that have not yet been written to the register file. In at least one embodiment, the register files 3108, 3110 can communicate with each other. In at least one embodiment, register file/bypass network 3108 may, without limitation, be two separate register files comprise a register file for low-order 32 bits of data and a second register file for high-order 32 bits of data. In at least one embodiment, the floating point register file/bypass network 3110 may include, without limitation, 128-bit wide entries since floating point instructions typically have operands that are 64 to 128 bits wide.

In mindestens einem Ausführungsbeispiel können die Ausführungseinheiten 3112, 3114, 3116, 3118, 3120, 3122, 3124 Befehle ausführen. In mindestens einem Ausführungsbeispiel speichern die Registerdateien 3108, 3110 ganzzahlige und Gleitkommadaten-Operandenwerte, die Mikrobefehle ausführen müssen. In mindestens einem Ausführungsbeispiel kann der Prozessor 3100 ohne Einschränkung jede beliebige Anzahl und Kombination von Ausführungseinheiten 3112, 3114, 3116, 3118, 3120, 3122, 3124 umfassen. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3122 und die Gleitkomma-Bewegungseinheit 3124 Gleitkomma-, MMX-, SIMD-, AVX- und SSE- oder andere Operationen, einschließlich spezieller Befehle für maschinelles Lernen, ausführen. In mindestens einem Ausführungsbeispiel kann die Gleitkomma-ALU 3122 ohne Einschränkung einen 64-Bit-x64-Bit-Gleitkomma-Dividierer zur Ausführung von Divisions-, Quadratwurzel- und Restmikrooperationen umfassen. In mindestens einem Ausführungsbeispiel können Befehle, die einen Gleitkommawert enthalten, mit Gleitkomma-Hardware verarbeitet werden. In mindestens einem Ausführungsbeispiel können ALU-Operationen an schnelle ALUs 3116, 3118 übergeben werden. In mindestens einem Ausführungsbeispiel kann der schnelle ALUs 3116, 3118 schnelle Operationen mit einer effektiven Latenzzeit von einem halben Taktzyklus ausführen. In mindestens einem Ausführungsbeispiel gehen die komplexesten ganzzahligen Operationen an die langsame ALU 3120, da die langsame ALU 3120 ohne Einschränkung ganzzahlige Ausführungshardware für Operationen mit langer Latenzzeit umfassen kann, wie z.B. einen Multiplikator, Verschiebungen, Flag-Logik und Zweigverarbeitung. In mindestens einem Ausführungsbeispiel können Speicherlade-/-speicheroperationen von AGUS 3112, 3114 ausgeführt werden. In mindestens einem Ausführungsbeispiel können die schnelle ALU 3116, schnelle ALU 3118 und langsame ALU 3120 ganzzahlige Operationen auf 64-Bit-Datenoperanden ausführen. In mindestens einem Ausführungsbeispiel können die schnelle ALU 3116, schnelle ALU 3118 und langsame ALU 3120 implementiert werden, um eine Vielzahl von Datenbitgrößen zu unterstützen, einschließlich sechzehn, zweiunddreißig, 128, 256 usw. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3122 und die Gleitkomma-Bewegungseinheit 3124 implementiert werden, um eine Reihe von Operanden mit Bits unterschiedlicher Breite zu unterstützen. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3122 und die Gleitkomma-Bewegungseinheit 3124 mit 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Befehlen arbeiten.In at least one embodiment, execution units 3112, 3114, 3116, 3118, 3120, 3122, 3124 may execute instructions. In at least one embodiment, register files 3108, 3110 store integer and floating point data operand values that microinstructions are required to execute. In at least one embodiment, processor 3100 may include any number and combination of execution units 3112, 3114, 3116, 3118, 3120, 3122, 3124, without limitation. In at least one embodiment, floating point ALU 3122 and floating point mover 3124 may perform floating point, MMX, SIMD, AVX, and SSE or other operations, including special machine learning instructions. In at least one embodiment, floating point ALU 3122 may include, without limitation, a 64-bit x 64-bit floating point divider for performing division, square root, and remainder micro-ops. In at least one embodiment, instructions containing a floating point value may be processed using floating point hardware. In at least one embodiment, ALU operations may be committed to fast ALUs 3116,3118. In at least one embodiment, the fast ALUs 3116, 3118 can perform fast operations with an effective latency of half a clock cycle. In at least one embodiment, the most complex integer operations go to the slow ALU 3120, since the slow ALU 3120 may include, without limitation, integer execution hardware for long latency operations such as a multiplier, shifts, flag logic, and branch processing. In at least one embodiment, memory load/store operations may be performed by AGUS 3112, 3114. In at least one embodiment, fast ALU 3116, fast ALU 3118, and slow ALU 3120 can perform integer operations on 64-bit data operands. In at least one embodiment, fast ALU 3116, fast ALU 3118, and slow ALU 3120 can be implemented to support a variety of data bit sizes, including sixteen, thirty-two, 128, 256, etc. In at least one embodiment, floating point ALU 3122 and the Floating point mover 3124 can be implemented to support a range of operands with different bit widths. In at least one embodiment, floating point ALU 3122 and floating point mover 3124 can operate on 128-bit wide packed data operands in conjunction with SIMD and multimedia instructions.

In mindestens einem Ausführungsbeispiel planen die uop-Planer 3102, 3104, 3106 abhängige Operationen, bevor die übergeordnete Last die Ausführung beendet hat. Da Uops spekulativ geplant und in Prozessor 3100 ausgeführt werden können, kann der Prozessor 3100 in mindestens einem Ausführungsbeispiel auch Logik zur Behandlung von Fehlversuchen im Speicher umfassen. Wenn in mindestens einem Ausführungsbeispiel ein Fehlversuch beim Laden von Daten im Daten-Cache auftritt, kann es in der Pipeline abhängige Operationen während der Ausführung geben, die den Planer mit temporär fehlerhaften Daten verlassen haben. In mindestens einem Ausführungsbeispiel verfolgt ein Wiederholungsmechanismus Befehle, die falsche Daten verwenden, und führt sie erneut aus. In mindestens einem Ausführungsbeispiel kann es erforderlich sein, abhängige Operationen erneut auszuführen und unabhängigen Operationen den Abschluss zu gestatten. In mindestens einem Ausführungsbeispiel können Planer und Wiederholungsmechanismus mindestens eines Ausführungsbeispiels eines Prozessors auch dafür ausgelegt sein, Befehlssequenzen für Textstring-Vergleichsoperationen zu erfassen. In at least one embodiment, the uop schedulers 3102, 3104, 3106 schedule dependent operations before the parent load has finished executing. Since uops may be speculatively scheduled and executed in processor 3100, in at least one embodiment, processor 3100 may also include logic for handling misses in memory. In at least one embodiment, when there is a miss loading data in the data cache, there may be dependent operations in the pipeline during execution that exited the scheduler with temporarily bad data. In at least one embodiment, a retry mechanism tracks and re-executes instructions that use incorrect data. In at least one embodiment, dependent operations may need to be re-executed and independent operations allowed to complete. In at least one embodiment, the scheduler and retry mechanism of at least one embodiment of a processor may also be configured to capture instruction sequences for text string comparison operations.

In mindestens einem Ausführungsbeispiel kann sich der Term „Register“ auf Speicherplätze im Prozessor beziehen, die als Teil von Befehle zur Identifizierung von Operanden verwendet werden können. In mindestens einem Ausführungsbeispiel können Register solche sein, die von außerhalb des Prozessors (aus der Sicht eines Programmierers) verwendet werden können. In mindestens einem Ausführungsbeispiel können Register nicht auf einen bestimmten Schaltkreistyp beschränkt sein. Vielmehr kann ein Register in mindestens einem Ausführungsbeispiel Daten speichern, Daten bereitstellen und die hier beschriebenen Funktionen ausführen. In mindestens einem Ausführungsbeispiel können die hier beschriebenen Register durch Schaltungsanordnungen innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl verschiedener Techniken implementiert sein, wie z.B. dedizierte physikalische Register, dynamisch zugewiesene physikalische Register unter Verwendung von Registerumbenennungen, Kombinationen von dedizierten und dynamisch zugewiesenen physikalischen Registern usw. In mindestens einem Ausführungsbeispiel speichern ganzzahlige Register ganzzahlige 32-Bit-Daten. Die Registerdatei von mindestens einem Ausführungsbeispiel enthält auch acht Multimedia-SIMD-Register für gepackte Daten.In at least one embodiment, the term "register" may refer to storage locations in the processor that may be used as part of instructions to identify operands. In at least one embodiment, registers may be those that can be used from outside the processor (from a programmer's point of view). In at least one embodiment, registers may not be limited to any particular circuit type. Rather, in at least one embodiment, a register may store data, provide data, and perform the functions described herein. In at least one embodiment, the registers described herein may be implemented by circuitry within a processor using any number of different techniques, such as dedicated physical registers, dynamically allocated physical registers using register renaming, combinations of dedicated and dynamically allocated physical registers, etc. In In at least one embodiment, integer registers store 32-bit integer data. The register file of at least one embodiment also includes eight packed data multimedia SIMD registers.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile der Inferenz- und/oder Trainingslogik 1515 oder die gesamte Inferenz- und/oder Trainingslogik 1515 in EXE-Block 3111 und andere Speicher oder Register enthalten sein, die gezeigt oder nicht gezeigt sind. Beispielsweise können in mindestens einem Ausführungsbeispiel die hier beschriebenen Trainings- und/oder Inferenzierungstechniken eine oder mehrere der im EXE-Block 3111 dargestellten ALUs verwenden. Darüber hinaus können Gewichtungsparameter im On-Chip- oder Off-Chip-Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des EXE-Blocks 3111 so konfigurieren, dass sie einen oder mehrere maschinelle Lernalgorithmen, neuronale Netzarchitekturen, Anwendungsfälle oder hier beschriebene Trainingstechniken ausführen können.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, some or all of the inference and/or training logic 1515 may be included in EXE block 3111 and other memory or registers, shown or not shown. For example, in at least one embodiment, the training and/or inference techniques described herein may use one or more of the ALUs illustrated in EXE block 3111 . Additionally, weight parameters may be stored in on-chip or off-chip memory and/or in registers (shown or not) that configure ALUs of EXE block 3111 to implement one or more machine learning algorithms, neural network architectures, use cases or training techniques described here.

32 zeigt einen Deep-Learning-Anwendungsprozessor 3200 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel verwendet der Deep-Learning-Anwendungsprozessor 3200 Befehle, die, wenn sie vom Deep-Learning-Anwendungsprozessor 3200 ausgeführt werden, den Deep-Learning-Anwendungsprozessor 3200 veranlassen, einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken auszuführen. In mindestens einem Ausführungsbeispiel ist der Deep-Learning-Anwendungsprozessor 3200 eine anwendungsspezifische integrierte Schaltung (ASIC). In mindestens einem Ausführungsbeispiel führt der Anwendungsprozessor 3200 Matrix-Multiplikations-Operationen aus, die entweder „festverdrahtet“ in Hardware oder als Ergebnis der Ausführung eines oder mehrerer Befehle oder beider ausgeführt werden. In mindestens einem Ausführungsbeispiel umfasst der Deep-Learning-Anwendungsprozessor 3200 ohne Einschränkung Verarbeitungscluster 3210(1)-3210(12), Inter-Chip-Verbindungen („ICLs“) 3220(1)-3220(12), Inter-Chip-Steuerungen („ICCs“) 3230(1)-3230(2), Speicher der zweiten Generation mit hoher Bandbreite („HBM2“) 3240(1)-3240(4), Speichersteuerung („Mem Ctrlrs“) 3242(1)-3242(4), eine physikalische Schicht des Speichers mit hoher Bandbreite („HBM PHY“) 3244(1)-3244(4), eine Verwaltungs-Steuerungs-Zentraleinheit (engl. management controller central processing unit, „Verwaltungs-Steuerungs-CPU“) 3250, einen Serial Peripheral Interface-, Inter-Integrated Circuit- und General Purpose Input/Output-Block (engl. „SPI, I2C, GPIO“) 3260, einen Peripheriekomponenten-Verbindungs-Express-Steuerung und Direct Memory Access-Block (engl. „PCIe Controller and DMA“) 3270 und einen sechzehnspurigen Peripheriekomponenten-Verbindungs-Express-Port (engl. „PCI Express x 16“) 3280. 32 12 shows a deep learning application processor 3200 according to at least one embodiment. In at least one embodiment, deep learning applications processor 3200 uses instructions that, when executed by deep learning applications processor 3200, cause deep learning applications processor 3200 to perform some or all of the processes and techniques described in this disclosure. In at least one embodiment, deep learning application processor 3200 is an application specific integrated circuit (ASIC). In at least one embodiment, applications processor 3200 performs matrix multiplication operations that are either "hardwired" into hardware or performed as a result of the execution of one or more instructions, or both. In at least one embodiment, deep learning applications processor 3200 includes, without limitation, processing clusters 3210(1)-3210(12), inter-chip interconnects ("ICLs") 3220(1)-3220(12), inter-chip controllers (“ICCs”) 3230(1)-3230(2), Second Generation High Bandwidth Memory (“HBM2”) 3240(1)-3240(4), Memory Controller (“Mem Ctrlrs”) 3242(1)-3242 (4), a high-bandwidth memory ("HBM PHY") physical layer 3244(1)-3244(4), a management controller central processing unit (CPU) ) 3250, a Serial Peripheral Interface, Inter-Integrated Circuit and General Purpose Input/Output (SPI, I2C, GPIO) block 3260, a Peripheral Component Connection Express Control and Direct Memory Access block ( "PCIe Controller and DMA") 3270 and a sixteen-lane peripheral component connection express port ("PCI Express x 16") 3280.

In mindestens einem Ausführungsbeispiel können Verarbeitungscluster 3210 Operationen für Deep Learning durchführen, einschließlich Inferenz- oder Vorhersageoperationen auf der Grundlage von Gewichtsparametern, die von einer oder mehreren Trainingstechniken, einschließlich der hier beschriebenen, berechnet wurden. In mindestens einem Ausführungsbeispiel kann jeder Verarbeitungscluster 3210 ohne Einschränkung eine beliebige Anzahl und Art von Prozessoren umfassen. In mindestens einem Ausführungsbeispiel kann der Deep Learning-Anwendungsprozessor 3200 eine beliebige Anzahl und Art von Verarbeitungsclustern 3200 umfassen. In mindestens einem Ausführungsbeispiel sind die Inter-Chip-Verbindungen 3220 bidirektional. In mindestens einem Ausführungsbeispiel ermöglichen Inter-Chip-Verbindungen 3220 und Inter-Chip-Steuerungen 3230 mehreren Deep-Learning-Anwendungsprozessoren 3200 den Austausch von Informationen, einschließlich Aktivierungsinformationen, die sich aus der Ausführung eines oder mehrerer maschineller Lernalgorithmen ergeben, die in einem oder mehreren neuronalen Netzen enthalten sind. In mindestens einem Ausführungsbeispiel kann der Deep-Learning-Anwendungsprozessor 3200 eine beliebige Anzahl (einschließlich Null) und Art von ICLs 3220 und ICCs 3230 umfassen.In at least one embodiment, processing clusters 3210 may perform deep learning operations, including inference or prediction operations based on weight parameters calculated by one or more training techniques, including those described herein. In at least one embodiment, each processing cluster 3210 may include any number and type of processors, without limitation. In at least one embodiment, deep learning applications processor 3200 may include any number and type of processing clusters 3200. In at least one embodiment, the inter-chip connections 3220 are bi-directional. In at least one embodiment, inter-chip interconnects 3220 and inter-chip controllers 3230 enable multiple deep learning application processors 3200 to exchange information, including enablement information, resulting from the execution of one or more machine learning algorithms running in one or more neural networks are included. In at least one embodiment, deep learning application processor 3200 may include any number (including zero) and type of ICLs 3220 and ICCs 3230.

In mindestens einem Ausführungsbeispiel sind die HBM2s 3240 mit insgesamt 32 Gigabyte (GB) Speicher bereitgestellt. HBM2 3240(i) ist sowohl der Steuerung 3242(i) als auch dem HBM PHY 3244(i) zugeordnet. In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von HBM2s 3240 jeden Typ und jede Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und kann mit einer beliebigen Anzahl (einschließlich Null) und Art von Speichersteuerungen 3242 und HBM PHYs 3244 assoziiert werden. In mindestens einem Ausführungsbeispiel können SPI, I2C, GPIO 3260, PCIe-Steuerung und DMA 3270 und/oder PCIe 3280 durch eine beliebige Anzahl und Art von Blöcken ersetzt werden, die auf jede technisch geeignete Weise eine beliebige Anzahl und Art von Kommunikationsstandards ermöglichen.In at least one embodiment, the HBM2s 3240 are provided with a total of 32 gigabytes (GB) of memory. HBM2 3240(i) is assigned to both Controller 3242(i) and HBM PHY 3244(i). In at least one embodiment, any number of HBM2s 3240 can provide any type and amount of high-bandwidth memory and can be associated with any number (including zero) and type of memory controllers 3242 and HBM PHYs 3244 . In at least one embodiment, SPI, I2C, GPIO 3260, PCIe controller and DMA 3270, and/or PCIe 3280 may be replaced with any number and type of blocks that enable any number and type of communication standards in any technically appropriate manner.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel wird der Deep-Learning-Anwendungsprozessor verwendet, um ein maschinelles Lernmodell, wie z.B. ein neuronales Netzwerk, zu trainieren, um Informationen vorherzusagen oder abzuleiten, die dem Deep-Learning-Anwendungsprozessor 3200 bereitgestellt werden. In mindestens einem Ausführungsbeispiel wird der Deep-Learning-Anwendungsprozessor 3200 verwendet, um auf der Grundlage eines trainierten maschinellen Lernmodells (z.B. eines neuronalen Netzwerks) Informationen abzuleiten oder vorherzusagen, die von einem anderen Prozessor oder System oder vom Deep-Learning-Anwendungsprozessor 3200 trainiert wurden. In mindestens einem Ausführungsbeispiel kann der Prozessor 3200 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, the deep learning application processor is used to train a machine learning model, such as a neural network, to predict or infer information provided to the deep learning application processor 3200 . At least In one embodiment, deep learning application processor 3200 is used to derive or predict information trained by another processor or system or by deep learning application processor 3200 based on a trained machine learning model (e.g., a neural network). In at least one embodiment, processor 3200 may be used to perform one or more of the neural network use cases described herein.

33 ist ein Blockdiagramm eines neuromorphen Prozessors 3300, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3300 eine oder mehrere Eingaben von Quellen außerhalb des neuromorphen Prozessors 3300 erhalten. In mindestens einem Ausführungsbeispiel können diese Eingaben an ein oder mehrere Neuronen 3302 innerhalb des neuromorphen Prozessors 3300 übertragen werden. In mindestens einem Ausführungsbeispiel können die Neuronen 3302 und ihre Komponenten mit Hilfe einer Schaltungsanordnung oder Logik implementiert werden, die eine oder mehrere arithmetisch-logische Einheiten (ALUs) umfasst. In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3300 ohne Einschränkung Tausende oder Millionen von Instanzen der Neuronen 3302 umfassen, aber es kann jede geeignete Anzahl von Neuronen 3302 verwendet werden. In mindestens einem Ausführungsbeispiel kann jedes Exemplar des Neurons 3302 eine Neuronen-Eingabe 3304 und eine Neuronen-Ausgabe 3306 umfassen. In mindestens einem Ausführungsbeispiel können die Neuronen 3302 Ausgaben erzeugen, die an Eingaben anderer Instanzen der Neuronen 3302 übertragen werden können. Beispielsweise können in mindestens einem Ausführungsbeispiel die Neuronen-Eingänge 3304 und die Neuronen-Ausgänge 3306 über die Synapsen 3308 miteinander verbunden sein. 33 3300 is a block diagram of a neuromorphic processor 3300, according to at least one embodiment. In at least one embodiment, neuromorphic processor 3300 may receive one or more inputs from sources external to neuromorphic processor 3300. In at least one embodiment, these inputs may be transmitted to one or more neurons 3302 within neuromorphic processor 3300. In at least one embodiment, neurons 3302 and their components may be implemented using circuitry or logic that includes one or more arithmetic logic units (ALUs). In at least one embodiment, neuromorphic processor 3300 may include, without limitation, thousands or millions of instances of neurons 3302, but any suitable number of neurons 3302 may be used. In at least one embodiment, each instance of neuron 3302 may include a neuron input 3304 and a neuron output 3306. In at least one embodiment, neurons 3302 may generate outputs that may be transmitted to inputs of other instances of neurons 3302. For example, in at least one embodiment, neuron inputs 3304 and neuron outputs 3306 may be connected to each other via synapses 3308 .

In mindestens einem Ausführungsbeispiel können die Neuronen 3302 und die Synapsen 3308 so miteinander verbunden sein, dass der neuromorphe Prozessor 3300 so arbeitet, dass er die vom neuromorphen Prozessor 3300 empfangenen Informationen verarbeitet oder analysiert. In mindestens einem Ausführungsbeispiel können die Neuronen 3302 einen Ausgangsimpuls (oder „Feuer“ oder „Spike“) aussenden, wenn über den Neuronen-Eingang 3304 empfangene Eingaben einen Schwellenwert überschreiten. In mindestens einem Ausführungsbeispiel können die Neuronen 3302 die an den Neuroneneingängen 3304 empfangenen Signale summieren oder integrieren. Zum Beispiel können in mindestens einem Ausführungsbeispiel die Neuronen 3302 als Leaky-Integrate-and-Fire-Neuronen implementiert sein, wobei, wenn eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, das Neuron 3302 eine Ausgabe (oder „Feuer“) unter Verwendung einer Übertragungsfunktion wie einer Sigmoid- oder Schwellenfunktion erzeugen kann. In mindestens einem Ausführungsbeispiel kann ein Leaky-Integrate-and-Fire-Neuron die an den Neuroneneingängen 3304 empfangenen Signale zu einem Membranpotential summieren und auch einen Zerfallsfaktor (oder „Leak“) anwenden, um ein Membranpotential zu reduzieren. In mindestens einem Ausführungsbeispiel kann ein Leaky Integrate-and-fire-Neuron feuern, wenn mehrere Eingangssignale an den Neuron-Eingängen 3304 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d.h. bevor ein Membranpotential zu niedrig abklingt, um zu feuern). In mindestens einem Ausführungsbeispiel können die Neuronen 3302 durch Schaltungen oder Logiken implementiert werden, die Eingänge empfangen, Eingänge in ein Membranpotential integrieren und ein Membranpotential abklingen lassen. In mindestens einem Ausführungsbeispiel können die Eingaben gemittelt werden, oder es kann jede beliebige andere geeignete Übertragungsfunktion verwendet werden. Darüber hinaus können die Neuronen 3302 in mindestens einem Ausführungsbeispiel ohne Einschränkung Komparatorschaltungen oder Logiken umfassen, die eine Ausgangsspitze am Neuronenausgang 3306 erzeugen, wenn das Ergebnis der Anwendung einer Übertragungsfunktion auf den Neuroneneingang 3304 einen Schwellenwert überschreitet. In mindestens einem Ausführungsbeispiel kann das Neuron 3302, sobald es einmal gezündet hat, zuvor empfangene Eingangsinformationen ignorieren, indem es z.B. ein Membranpotential auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In mindestens einem Ausführungsbeispiel kann das Neuron 3302, sobald das Membranpotenzial auf 0 zurückgesetzt wurde, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wiederaufnehmen.In at least one embodiment, neurons 3302 and synapses 3308 may be interconnected such that neuromorphic processor 3300 operates to process or analyze information received from neuromorphic processor 3300. In at least one embodiment, neurons 3302 may emit an output pulse (or "fire" or "spike") when input received via neuron input 3304 exceeds a threshold. In at least one embodiment, neurons 3302 may sum or integrate the signals received at neuron inputs 3304. For example, in at least one embodiment, neurons 3302 may be implemented as leaky-integrate-and-fire neurons, where when a sum (referred to as "membrane potential") exceeds a threshold, neuron 3302 outputs (or "fires"). using a transfer function such as a sigmoid or threshold function. In at least one embodiment, a leaky integrate and fire neuron can sum the signals received at neuron inputs 3304 into a membrane potential and also apply a decay factor (or "leak") to reduce a membrane potential. In at least one embodiment, a leaky integrate-and-fire neuron may fire when multiple input signals are received at neuron inputs 3304 fast enough to cross a threshold (i.e., before a membrane potential decays too low to fire). In at least one embodiment, neurons 3302 may be implemented by circuitry or logic that receives inputs, integrates inputs into a membrane potential, and decays a membrane potential. In at least one embodiment, the inputs may be averaged, or any other suitable transfer function may be used. Additionally, in at least one embodiment, without limitation, neurons 3302 may include comparator circuitry or logic that generates an output spike at neuron output 3306 when the result of applying a transfer function to neuron input 3304 exceeds a threshold. In at least one embodiment, once neuron 3302 has fired, it may ignore previously received input information, for example, by resetting a membrane potential to 0 or some other suitable default value. In at least one embodiment, once the membrane potential has been reset to 0, neuron 3302 may resume normal operation after an appropriate period of time (or refractory period).

In mindestens einem Ausführungsbeispiel können die Neuronen 3302 über die Synapsen 3308 miteinander verbunden sein. In mindestens einem Ausführungsbeispiel können die Synapsen 3308 so funktionieren, dass sie Signale von einer Ausgabe eines ersten Neurons 3302 zu einer Eingabe eines zweiten Neurons 3302 übertragen. In mindestens einem Ausführungsbeispiel können die Neuronen 3302 Informationen über mehr als eine Instanz der Synapse 3308 übertragen. In mindestens einem Ausführungsbeispiel können ein oder mehrere Instanzen des Neuronenausgangs 3306 über eine Instanz der Synapse 3308 mit einer Instanz des Neuroneneingangs 3304 in demselben Neuron 3302 verbunden sein. In mindestens einem Ausführungsbeispiel kann eine Instanz des Neurons 3302, die eine Ausgabe erzeugt, die über eine Instanz der Synapse 3308 übertragen werden soll, in Bezug auf diese Instanz der Synapse 3308 als „präsynaptisches Neuron“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann ein Neuron 3302, das eine Eingabe empfängt, die über eine Synapse 3308 übertragen wird, als ein „postsynaptisches Neuron“ in Bezug auf diese Synapse 3308 bezeichnet werden. Da eine Instanz des Neurons 3302 Eingaben von einer oder mehreren Instanzen der Synapse 3308 empfangen kann und auch Ausgaben über eine oder mehrere Instanzen der Synapse 3308 senden kann, kann eine einzelne Instanz des Neurons 3302 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen der Synapse 3308 in mindestens einem Ausführungsbeispiel sein. In at least one embodiment, neurons 3302 may be connected to each other via synapses 3308. In at least one embodiment, synapses 3308 may function to transmit signals from an output of a first neuron 3302 to an input of a second neuron 3302. In at least one embodiment, neurons 3302 may transmit information across more than one synapse 3308 instance. In at least one embodiment, one or more instances of neuron output 3306 may be connected to an instance of neuron input 3304 in the same neuron 3302 via an instance of synapse 3308 . In at least one embodiment, an instance of neuron 3302 that produces an output to be transmitted across an instance of synapse 3308 may be referred to as a "presynaptic neuron" with respect to that instance of synapse 3308. be designated. In at least one embodiment, a neuron 3302 that receives input transmitted across a synapse 3308 may be referred to as a "postsynaptic neuron" with respect to that synapse 3308. Because an instance of neuron 3302 can receive input from one or more instances of synapse 3308, and can also send outputs across one or more instances of synapse 3308, a single instance of neuron 3302 can therefore be both a "presynaptic neuron" and a "postsynaptic neuron". Neuron” in relation to various instances of synapse 3308 in at least one embodiment.

In mindestens einem Ausführungsbeispiel können die Neuronen 3302 in einer oder mehreren Schichten organisiert sein. Jede Instanz eines Neurons 3302 kann einen Neuronenausgang 3306 haben, der sich über eine oder mehrere Synapsen 3308 zu einem oder mehreren Neuroneneingängen 3304 auffächern kann. In mindestens einem Ausführungsbeispiel können die Neuronenausgänge 3306 der Neuronen 3302 in einer ersten Schicht 3310 mit den Neuroneneingängen 3304 der Neuronen 3302 in einer zweiten Schicht 3312 verbunden sein. In mindestens einem Ausführungsbeispiel kann die Schicht 3310 als „Feed-Forward-Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann jede Instanz des Neurons 3302 in einer Instanz der ersten Schicht 3310 sich zu jeder Instanz des Neurons 3302 in der zweiten Schicht 3312 auffächern. In mindestens einem Ausführungsbeispiel kann die erste Schicht 3310 als „vollständig verbundene Feed-Forward-Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann sich jede Instanz eines Neurons 3302 in einer Instanz der zweiten Schicht 3312 auf weniger als alle Instanzen des Neurons 3302 in einer dritten Schicht 3314 auffächern. In mindestens einem Ausführungsbeispiel kann die zweite Schicht 3312 als „spärlich verbundene Feed-Forward-Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel können sich die Neuronen 3302 in der zweiten Schicht 3312 auf die Neuronen 3302 in mehreren anderen Schichten auffächern, einschließlich der Neuronen 3302 in der (gleichen) zweiten Schicht 3312. In mindestens einem Ausführungsbeispiel kann die zweite Schicht 3312 als „wiederkehrende Schicht“ bezeichnet werden. Der neuromorphe Prozessor 3300 kann, ohne Einschränkung, jede beliebige geeignete Kombination von wiederkehrenden Schichten und Feed-Forward-Schichten umfassen, einschließlich, ohne Einschränkung, sowohl spärlich verbundene Feed-Forward-Schichten als auch vollständig verbundene Feed-Forward-Schichten.In at least one embodiment, neurons 3302 may be organized into one or more layers. Each instance of a neuron 3302 can have a neuron output 3306 that can fan out to one or more neuron inputs 3304 via one or more synapses 3308 . In at least one embodiment, neuron outputs 3306 of neurons 3302 in a first layer 3310 may be connected to neuron inputs 3304 of neurons 3302 in a second layer 3312. In at least one embodiment, layer 3310 may be referred to as a "feed-forward layer." In at least one embodiment, each instance of neuron 3302 in an instance of the first layer 3310 may fan out to each instance of neuron 3302 in the second layer 3312. In at least one embodiment, the first layer 3310 may be referred to as a fully connected feed-forward layer. In at least one embodiment, each instance of a neuron 3302 in a second layer 3312 instance may fan out to fewer than all of the neuron 3302 instances in a third layer 3314 . In at least one embodiment, the second layer 3312 may be referred to as a "sparsely connected feed-forward layer." In at least one embodiment, neurons 3302 in second layer 3312 may fan out to neurons 3302 in multiple other layers, including neurons 3302 in the (same) second layer 3312. In at least one embodiment, second layer 3312 may be referred to as a "recurring layer." “ be designated. The neuromorphic processor 3300 may include, without limitation, any suitable combination of recurring layers and feed-forward layers, including without limitation both sparsely connected feed-forward layers and fully connected feed-forward layers.

In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3300 ohne Einschränkung eine rekonfigurierbare Verbindungsarchitektur oder dedizierte festverdrahtete Verbindungen zur Verbindung der Synapse 3308 mit den Neuronen 3302 umfassen. In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3300 ohne Einschränkung eine Schaltungsanordnung oder Logik umfassen, die es ermöglicht, Synapsen je nach Bedarf verschiedenen Neuronen 3302 zuzuordnen, basierend auf der Topologie des neuronalen Netzes und dem Neuronen-Fan-in/out. Zum Beispiel können in mindestens einem Ausführungsbeispiel die Synapsen 3308 mit den Neuronen 3302 verbunden werden, indem eine Interconnect-Fabric, wie z.B. Netzwerk-on-Chip, oder mit dedizierten Verbindungen verwendet wird. In mindestens einem Ausführungsbeispiel können Synapsenverbindungen und deren Komponenten durch Schaltungsanordnung oder Logik implementiert werden.In at least one embodiment, neuromorphic processor 3300 may include, without limitation, a reconfigurable connection architecture or dedicated hard-wired connections for connecting synapse 3308 to neurons 3302. In at least one embodiment, neuromorphic processor 3300 may include, without limitation, circuitry or logic that allows synapses to be mapped to different neurons 3302 as needed based on neural network topology and neuron fan-in/out. For example, in at least one embodiment, synapses 3308 may be connected to neurons 3302 using an interconnect fabric, such as network-on-chip, or with dedicated connections. In at least one embodiment, synapse connections and their components may be implemented by circuitry or logic.

34 ist ein Blockdiagramm eines Verarbeitungssystems, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst das System 3400 einen oder mehrere Prozessoren 3402 und einen oder mehrere Grafikprozessoren 3408 und kann ein Einzelprozessor-Desktop-System, ein Multiprozessor-Workstation-System oder ein Server-System mit einer großen Anzahl von Prozessoren 3402 oder Prozessorkernen 3407 sein. In mindestens einem Ausführungsbeispiel ist System 3400 eine Verarbeitungsplattform, die in einer integrierten System-on-a-Chip (SoC)-Schaltung zur Verwendung in mobilen, tragbaren oder eingebetteten Geräten integriert ist. 34 12 is a block diagram of a processing system, according to at least one embodiment. In at least one embodiment, the system 3400 includes one or more processors 3402 and one or more graphics processors 3408 and may be a uniprocessor desktop system, a multiprocessor workstation system, or a server system having a large number of processors 3402 or processor cores 3407 . In at least one embodiment, system 3400 is a processing platform integrated into a system-on-a-chip (SoC) integrated circuit for use in mobile, portable, or embedded devices.

In mindestens einem Ausführungsbeispiel kann das System 3400 eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine Handheld-Spielkonsole oder eine Online-Spielkonsole, umfassen oder in eine serverbasierte Spielplattform integriert sein. In mindestens einem Ausführungsbeispiel ist das System 3400 ein Mobiltelefon, ein Smartphone, ein Tablet-Rechengerät oder ein mobiles Internet-Gerät. In mindestens einem Ausführungsbeispiel kann das Verarbeitungssystem 3400 auch ein tragbares Gerät umfassen, mit einem solchen gekoppelt sein oder in ein solches Gerät integriert sein, wie z.B. ein tragbares Smart Watch-Gerät, ein Smart Eyewear-Gerät, ein Augmented Reality-Gerät oder ein Virtual Reality-Gerät. In mindestens einem Ausführungsbeispiel ist das Verarbeitungssystem 3400 ein Fernseh- oder Set-Top-Box-Gerät mit einem oder mehreren Prozessoren 3402 und einer grafischen Schnittstelle, die von einem oder mehreren Grafikprozessoren 3408 erzeugt wird.In at least one embodiment, system 3400 may comprise a gaming console, including a gaming and media console, a mobile gaming console, a handheld gaming console, or an online gaming console, or may be integrated with a server-based gaming platform. In at least one embodiment, the system 3400 is a cell phone, a smart phone, a tablet computing device, or a mobile internet device. In at least one embodiment, processing system 3400 may also include, be coupled to, or integrated with a wearable device, such as a wearable smart watch device, smart eyewear device, augmented reality device, or virtual machine reality device. In at least one embodiment, processing system 3400 is a television or set top box device having one or more processors 3402 and a graphical interface generated by one or more graphics processors 3408 .

In mindestens einem Ausführungsbeispiel umfassen ein oder mehrere Prozessoren 3402 jeweils einen oder mehrere Prozessorkerne 3407 zur Verarbeitung von Befehlen, die, wenn sie ausgeführt werden, Operationen für System- und Anwendersoftware ausführen. In mindestens einem Ausführungsbeispiel ist jeder von einem oder mehreren Prozessorkernen 3407 so konfiguriert, dass er einen bestimmten Satz von Befehlen 3409 verarbeitet. In mindestens einem Ausführungsbeispiel kann der Befehlssatz 3409 ein Rechnen mit komplexem Befehlssatz (Complex Instruction Set Computing, CISC), ein Rechnen mit reduziertem Befehlssatz (Reduced Instruction Set Computing, RISC) oder ein Rechnen mittels eines sehr langen Befehlsworts (Very Long Instruction Word, VLIW) ermöglichen. In mindestens einem Ausführungsbeispiel können die Prozessorkerne 3407 jeweils einen anderen Befehlssatz 3409 verarbeiten, der Befehle umfassen kann, um die Emulation anderer Sätze von Befehlen zu erleichtern. In mindestens einem Ausführungsbeispiel kann der Prozessorkern 3407 auch andere Verarbeitungsgeräte, wie z.B. einen Digitalen Signalprozessor (DSP), umfassen.In at least one embodiment, one or more processors 3402 each include one or more processor cores 3407 for processing instructions that, when executed, perform system and application software operations. In at least one embodiment, each of one or more processor cores 3407 is configured to process a particular set of instructions 3409 . In at least one embodiment, instruction set 3409 may include complex instruction set computing (CISC), reduced instruction set computing (RISC), or very long instruction word (VLIW) computing ) enable. In at least one embodiment, processor cores 3407 may each process a different instruction set 3409, which may include instructions to facilitate emulation of other sets of instructions. In at least one embodiment, processor core 3407 may also include other processing devices, such as a digital signal processor (DSP).

In mindestens einem Ausführungsbeispiel umfasst der Prozessor 3402 einen Cache-Speicher 3404. In mindestens einem Ausführungsbeispiel kann Prozessor 3402 über einen einzigen internen Cache oder mehrere interne Cache-Ebenen verfügen. In mindestens einem Ausführungsbeispiel wird der Cache-Speicher von verschiedenen Komponenten des Prozessors 3402 gemeinsam genutzt. In mindestens einem Ausführungsbeispiel verwendet der Prozessor 3402 auch einen externen Cache (z.B. einen Level-3-Cache (L3) oder Last Level Cache (LLC)) (nicht gezeigt), die von den Prozessorkernen 3407 unter Verwendung bekannter Cache-Kohärenztechniken gemeinsam genutzt werden können. In mindestens einem Ausführungsbeispiel ist die Registerdatei 3406 zusätzlich in Prozessor 3402 enthalten, die verschiedene Arten von Registern zur Speicherung verschiedener Datentypen umfassen kann (z.B. Ganzzahlregister, Gleitkommaregister, Statusregister und ein Befehlszeigerregister). In mindestens einem Ausführungsbeispiel kann die Registerdatei 3406 Allzweckregister oder andere Register umfassen.In at least one embodiment, processor 3402 includes cache memory 3404. In at least one embodiment, processor 3402 may have a single internal cache or multiple internal cache levels. In at least one embodiment, the cache memory is shared between different processor 3402 components. In at least one embodiment, the processor 3402 also uses an external cache (e.g., a Level 3 (L3) cache or Last Level Cache (LLC)) (not shown) that is shared between the processor cores 3407 using known cache coherency techniques be able. In at least one embodiment, register file 3406 is additionally included in processor 3402, which may include various types of registers for storing various types of data (e.g., integer registers, floating point registers, status registers, and an instruction pointer register). In at least one embodiment, register file 3406 may include general purpose registers or other registers.

In mindestens einem Ausführungsbeispiel ist/sind ein oder mehrere Prozessor(en) 3402 mit einem oder mehreren Schnittstellenbus(en) 3410 gekoppelt, um Kommunikationssignale wie Adresse, Daten oder Steuersignale zwischen Prozessor 3402 und anderen Komponenten im System 3400 zu übertragen. In mindestens einem Ausführungsbeispiel kann der Schnittstellenbus 3410 in einem Ausführungsbeispiel ein Prozessorbus sein, z.B. eine Version eines Direct Media Interface (DMI)-Busses. In mindestens einem Ausführungsbeispiel ist die Schnittstelle 3410 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Component Interconnect Busse (z.B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen enthalten. In mindestens einem Ausführungsbeispiel umfasst/umfassen Prozessor(en) 3402 eine integrierten Speichersteuerung 3416 und einen Plattformsteuerungs-Hub 3430. In mindestens einem Ausführungsbeispiel erleichtert die Speichersteuerung 3416 die Kommunikation zwischen einem Speicherbaustein und anderen Komponenten des Systems 3400, während der Plattformsteuerungs-Hub (PCH) 3430 Verbindungen zu E/A-Bausteinen über einen lokalen E/A-Bus bereitstellt.In at least one embodiment, processor(s) 3402 is/are coupled to interface bus(s) 3410 to transfer communication signals such as address, data, or control signals between processor 3402 and other components in system 3400. In at least one embodiment, interface bus 3410 may be a processor bus, e.g., a version of a Direct Media Interface (DMI) bus, in one embodiment. In at least one embodiment, interface 3410 is not limited to a DMI bus and may include one or more peripheral component interconnect buses (e.g., PCI, PCI Express), memory buses, or other types of interface buses. In at least one embodiment, processor(s) 3402 includes an integrated memory controller 3416 and a platform control hub 3430. In at least one embodiment, the memory controller 3416 facilitates communication between a memory device and other components of the system 3400, while the platform control hub (PCH ) 3430 provides connections to I/O blocks via a local I/O bus.

In mindestens einem Ausführungsbeispiel kann das Speichergerät 3420 ein Gerät mit dynamischem Direktzugriffsspeicher (DRAM), ein Gerät mit statischem Direktzugriffsspeicher (SRAM), ein Flash-Speichergerät, ein Phasenwechsel-Speichergerät oder ein anderes Speichergerät mit geeigneter Leistung sein, das als Prozessspeicher dient. In mindestens einem Ausführungsbeispiel kann das Gerät 3420 als Systemspeicher für System 3400 arbeiten, um Daten 3422 und Befehle 3421 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 3402 eine Anwendung oder einen Prozess ausführen. In mindestens einem Ausführungsbeispiel ist die Speichersteuerung 3416 auch mit einem optionalen externen Grafikprozessor 3412 gekoppelt, der mit einem oder mehreren Grafikprozessoren 3408 in Prozessoren 3402 kommunizieren kann, um Grafik- und Medienoperationen auszuführen. In mindestens einem Ausführungsbeispiel kann ein Anzeigegerät 3411 mit den Prozessor(en) 3402 verbunden werden. In mindestens einem Ausführungsbeispiel kann das Anzeigegerät 3411 ein oder mehrere interne Anzeigegeräte umfassen, wie z.B. ein mobiles elektronisches Gerät oder einen Laptop oder ein externes Anzeigegerät, das über eine Anzeigeschnittstelle (z.B. DisplayPort usw.) angeschlossen ist. In mindestens einem Ausführungsbeispiel kann das Anzeigegerät 3411 ein Head Mounted Display (HMD) umfassen, z.B. ein stereoskopisches Anzeigegerät zur Verwendung in Virtual-Reality-Anwendungen (VR) oder Augmented-Reality-Anwendungen (AR).In at least one embodiment, storage device 3420 may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, a flash memory device, a phase change memory device, or another suitably performing memory device that serves as process memory. In at least one embodiment, device 3420 may operate as system memory for system 3400 to store data 3422 and instructions 3421 for use when one or more processors 3402 execute an application or process. In at least one embodiment, memory controller 3416 is also coupled to an optional external graphics processor 3412 that can communicate with one or more graphics processors 3408 in processors 3402 to perform graphics and media operations. In at least one embodiment, a display device 3411 may be coupled to processor(s) 3402 . In at least one embodiment, display device 3411 may include one or more internal display devices, such as a mobile electronic device or laptop, or an external display device connected via a display interface (e.g., DisplayPort, etc.). In at least one embodiment, the display device 3411 may comprise a head mounted display (HMD), e.g., a stereoscopic display device for use in virtual reality (VR) or augmented reality (AR) applications.

In mindestens einem Ausführungsbeispiel ermöglicht der Plattformsteuerungs-Hub 3430 die Verbindung von Peripheriegeräten mit der Speichersteuerung 3420 und dem Prozessor 3402 über einen Hochgeschwindigkeits-E/A-Bus. In mindestens einem Ausführungsbeispiel umfassen die E/A-Peripheriegeräte unter anderem eine Audiosteuerung 3446, eine Netzwerksteuerung 3434, eine Firmware-Schnittstelle 3428, einen drahtlosen Transceiver (d.h. Sender/Empfänger) 3426, Berührungssensoren 3425, ein Gerät zur Datenspeicherung 3424 (z.B. Festplatte, Flash-Speicher usw.). In mindestens einem Ausführungsbeispiel kann das Datenspeichergerät 3424 über eine Speicherschnittstelle (z.B. SATA) oder über einen Peripheriebus, wie z.B. einen Peripheral Component Interconnect Bus (z.B. PCI, PCI Express), angeschlossen werden. In mindestens einem Ausführungsbeispiel können die Berührungssensoren 3425 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren umfassen. In mindestens einem Ausführungsbeispiel kann der drahtlose Transceiver 3426 ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Transceiver für mobile Netzwerke wie ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. In mindestens einem Ausführungsbeispiel ermöglicht die Firmware-Schnittstelle 3428 die Kommunikation mit der System-Firmware und kann z.B. eine Unified Extensible Firmware-Schnittstelle (UEFI) sein. In mindestens einem Ausführungsbeispiel kann die Steuerung 3434 eine Netzwerkverbindung zu einem drahtgebundenen Netzwerk ermöglichen. In mindestens einem Ausführungsbeispiel ist eine Hochleistungs-Netzwerksteuerung (nicht abgebildet) mit dem Schnittstellenbus 3410 gekoppelt. In mindestens einem Ausführungsbeispiel ist die Steuerung 3446 eine mehrkanalige High-Definition-Audiosteuerung. In mindestens einem Ausführungsbeispiel umfasst das System 3400 eine optionale ältere E/A-Steuerung 3440 zum Koppeln älterer Geräte (z.B. Personal System 2 (PS/2)) an das System. In mindestens einem Ausführungsbeispiel kann der Plattformsteuerungs-Hub 3430 auch mit einem oder mehreren USB-Steuerungen (USB = Universal Serial Bus) 3442 verbunden werden, um Eingabegeräte wie Tastatur und Maus 3443-Kombinationen, eine Kamera 3444 oder andere USB-Eingabegeräte anzuschließen.In at least one embodiment, platform control hub 3430 enables peripheral devices to be connected to memory controller 3420 and processor 3402 via a high-speed I/O bus. In at least one embodiment, the I/O peripherals include, but are not limited to, an audio controller 3446, a network controller 3434, a firmware interface 3428, a wireless transceiver (ie, transmitter/receiver) 3426, touch sensors 3425, a data storage device 3424 (eg, hard drive, flash memory, etc.). In at least one embodiment, it can Data storage device 3424 can be connected via a storage interface (eg, SATA) or via a peripheral bus, such as a peripheral component interconnect bus (eg, PCI, PCI Express). In at least one embodiment, touch sensors 3425 may include touch screen sensors, pressure sensors, or fingerprint sensors. In at least one embodiment, wireless transceiver 3426 may be a Wi-Fi transceiver, a Bluetooth transceiver, or a mobile network transceiver such as a 3G, 4G, or Long Term Evolution (LTE) transceiver. In at least one embodiment, firmware interface 3428 enables communication with system firmware and may be, for example, a Unified Extensible Firmware Interface (UEFI). In at least one embodiment, controller 3434 may enable network connection to a wired network. In at least one embodiment, a high performance network controller (not shown) is coupled to interface bus 3410. In at least one embodiment, controller 3446 is a multi-channel high definition audio controller. In at least one embodiment, the system 3400 includes an optional legacy I/O controller 3440 for coupling legacy devices (eg, Personal System 2 (PS/2)) to the system. In at least one embodiment, the platform controller hub 3430 can also be connected to one or more Universal Serial Bus (USB) controllers 3442 to connect input devices such as a keyboard and mouse 3443 combo, a camera 3444, or other USB input devices.

In mindestens einem Ausführungsbeispiel kann eine Instanz der Speichersteuerung 3416 und des Plattformsteuerungs-Hubs 3430 in einen diskreten externen Grafikprozessor, wie z.B. den externen Grafikprozessor 3412, integriert werden. In mindestens einem Ausführungsbeispiel können der Plattformsteuerungs-Hub 3430 und/oder die Speichersteuerung 3416 extern zu einem oder mehreren Prozessor(en) 3402 sein. In mindestens einem Ausführungsbeispiel kann System 3400 beispielsweise eine externe Speichersteuerung 3416 und einen Plattformsteuerungs-Hub 3430 umfassen, der als Speichersteuerungs-Hub und Peripheriesteuerungs-Hub innerhalb eines System-Chipsatzes konfiguriert sein kann, der mit Prozessor(en) 3402 in Kommunikation steht.In at least one embodiment, an instance of memory controller 3416 and platform control hub 3430 may be integrated into a discrete external graphics processor, such as external graphics processor 3412. In at least one embodiment, platform control hub 3430 and/or memory controller 3416 may be external to processor(s) 3402 . For example, in at least one embodiment, system 3400 may include an external memory controller 3416 and a platform control hub 3430, which may be configured as a memory controller hub and peripheral controller hub within a system chipset that is in communication with processor(s) 3402.

Die Inferenz- und/oder Trainingslogik 1515 werden verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1515 in den Grafikprozessor 3400 integriert sein. Beispielsweise können in mindestens einem Ausführungsbeispiel die hier beschriebenen Trainings- und/oder Inferenzierungstechniken eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3412 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzierungs- und/oder Training-Operationen mit einer anderen Logik als der in 15A oder 15B dargestellten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3400 so konfigurieren, dass sie einen oder mehrere hier beschriebene Algorithmen für maschinelles Lernen, neuronale Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken ausführen können.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, some or all of the inference and/or training logic 1515 may be integrated into the graphics processor 3400 . For example, in at least one embodiment, the training and/or inference techniques described herein may use one or more ALUs included in 3D pipeline 3412 . Furthermore, in at least one embodiment, the inferencing and/or training operations described herein may use logic other than that described in 15A or 15B logic shown are performed. In at least one embodiment, weight parameters may be stored in on-chip or off-chip memory and/or registers (shown or not) that configure ALUs of graphics processor 3400 to implement one or more machine learning algorithms described herein , neural network architectures, use cases or training techniques.

35 ist ein Blockdiagramm eines Prozessors 3500 mit einem oder mehreren Prozessorkernen 3502A-3502N, einer integrierten Speichersteuerung 3514 und einem integrierten Grafikprozessor 3508, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann der Prozessor 3500 zusätzliche Kerne bis einschließlich des zusätzlichen Kerns 3502N umfassen, die durch gestrichelt Kästen repräsentiert werden. In mindestens einem Ausführungsbeispiel umfasst jeder der Prozessorkerne 3502A-3502N eine oder mehrere interne Cache-Einheiten 3504A-3504N. In mindestens einem Ausführungsbeispiel hat jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 3506. 35 10 is a block diagram of a processor 3500 having one or more processor cores 3502A-3502N, an integrated memory controller 3514, and an integrated graphics processor 3508, according to at least one embodiment. In at least one embodiment, processor 3500 may include additional cores up to and including additional core 3502N, represented by dashed boxes. In at least one embodiment, each of the processor cores 3502A-3502N includes one or more internal cache units 3504A-3504N. In at least one embodiment, each processor core also has access to one or more shared cache units 3506.

In mindestens einem Ausführungsbeispiel repräsentieren die internen Cache-Einheiten 3504A-3504N und die gemeinsam genutzten Cache-Einheiten 3506 eine Cache-Speicherhierarchie innerhalb des Prozessors 3500. In mindestens einem Ausführungsbeispiel können die Cache-Speichereinheiten 3504A-3504N mindestens eine Befehls- und Daten-Cache-Ebene innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen von gemeinsam genutztem Cache der mittleren Ebene umfassen, wie z.B. Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cache-Ebenen, wobei die höchste Cache-Ebene vor dem externen Speicher als LLC klassifiziert wird. In mindestens einem Ausführungsbeispiel erhält die Cache-Kohärenzlogik die Kohärenz zwischen den verschiedenen Cache-Einheiten 3506 und 3504A-3504N aufrecht.In at least one embodiment, internal cache units 3504A-3504N and shared cache units 3506 represent a cache memory hierarchy within processor 3500. In at least one embodiment, cache memory units 3504A-3504N may include at least one instruction and data cache level within each processor core and include one or more levels of mid-level shared cache, such as level 2 (L2), level 3 (L3), level 4 (L4), or other cache levels, with the highest cache level is classified as LLC before the external storage. In at least one embodiment, cache coherency logic maintains coherency between the various cache units 3506 and 3504A-3504N.

In mindestens einem Ausführungsbeispiel kann der Prozessor 3500 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 3516 und einen Systemdienst-Kern 3510 umfassen. In mindestens einem Ausführungsbeispiel verwalten eine oder mehrere Bussteuerungseinheiten 3516 einen Satz von Peripheriebussen, wie z.B. einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einem Ausführungsbeispiel ist der Systemdienstkern 3510 für die Verwaltung verschiedener Prozessorkomponenten vorgesehen. In mindestens einem Ausführungsbeispiel umfasst der Systemdienstkern 3510 einen oder mehrere integrierte Speichersteuerungen 3514 zur Verwaltung des Zugriffs auf verschiedene externe Speichergeräte (nicht abgebildet).In at least one embodiment, processor 3500 may also include a set of one or more bus control units 3516 and a system service core 3510 . In at least one embodiment, one or more bus control units 3516 manage a set of peripheral buses, such as one or more PCI or PCI Express buses. In at least one embodiment, the system service core 3510 is for managing various processor components. In at least one embodiment, the system service core 3510 includes one or more integrated storage controllers 3514 for managing access to various external storage devices (not shown).

In mindestens einem Ausführungsbeispiel umfassen einer oder mehrere der Prozessorkerne 3502A-3502N eine Unterstützung für simultanes Multi-Threading. In mindestens einem Ausführungsbeispiel umfasst der Systemdienst-Kern 3510 Komponenten für die Koordination und den Betrieb der Kerne 3502A-3502N während der Multi-Threading-Verarbeitung. In mindestens einem Ausführungsbeispiel kann der Systemdienstkern 3510 zusätzlich eine Leistungssteuereinheit (PCU) umfassen, die Logik und Komponenten zur Regelung eines oder mehrerer Leistungszustände der Prozessorkerne 3502A-3502N und des Grafikprozessors 3508 enthält.In at least one embodiment, one or more of the processor cores 3502A-3502N include support for simultaneous multi-threading. In at least one embodiment, system service core 3510 includes components for coordinating and operating cores 3502A-3502N during multi-threaded processing. In at least one embodiment, system service core 3510 may additionally include a power control unit (PCU) that includes logic and components for controlling one or more power states of processor cores 3502A-3502N and graphics processor 3508.

In mindestens einem Ausführungsbeispiel umfasst der Prozessor 3500 zusätzlich den Grafikprozessor 3508 zur Ausführung von Grafikverarbeitungsoperationen. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3508 mit den gemeinsam genutzten Cache-Einheiten 3506 und dem Systemdienst-Kern 3510 gekoppelt, der eine oder mehrere integrierte Speichersteuerungen 3514 umfasst. In mindestens einem Ausführungsbeispiel umfasst der Systemdienstkern 3510 auch die Steuerung 3511, um die Ausgabe des Grafikprozessors an eine oder mehrere gekoppelte Anzeigen zu steuern. In mindestens einem Ausführungsbeispiel kann die Steuerung der Anzeige 3511 auch ein separates Modul sein, das über mindestens eine Verbindung mit dem Grafikprozessor 3508 gekoppelt ist, oder in den Grafikprozessor 3508 integriert sein.In at least one embodiment, processor 3500 additionally includes graphics processor 3508 for performing graphics processing operations. In at least one embodiment, the graphics processor 3508 is coupled to the shared cache units 3506 and the system service core 3510, which includes one or more integrated memory controllers 3514. In at least one embodiment, the system service core 3510 also includes the controller 3511 to control the output of the graphics processor to one or more coupled displays. In at least one embodiment, the controller of the display 3511 may also be a separate module that is coupled to the graphics processor 3508 via at least one connection, or integrated with the graphics processor 3508.

In mindestens einem Ausführungsbeispiel wird eine auf einem Ring basierende Verbindungseinheit 3512 verwendet, um interne Komponenten des Prozessors 3500 miteinander zu koppeln. In mindestens einem Ausführungsbeispiel kann eine alternative Verbindungseinheit verwendet werden, z.B. eine Punkt-zu-Punkt-Verbindung, eine geschaltete Verbindung oder andere Techniken. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3508 mit der Ringverbindung 3512 über eine E/A-Verbindung 3513 gekoppelt.In at least one embodiment, a ring-based interconnect unit 3512 is used to couple internal components of processor 3500 together. In at least one embodiment, an alternative connection entity may be used, such as a point-to-point connection, a switched connection, or other techniques. In at least one embodiment, graphics processor 3508 is coupled to ring interconnect 3512 via an I/O interconnect 3513 .

In mindestens einem Ausführungsbeispiel repräsentiert die E/A-Verbindung 3513 mindestens eine von mehreren Varianten von E/A-Verbindungen, einschließlich einer E/A-Verbindung innerhalb des Gehäuses, die die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 3518, wie z.B. einem eDRAM-Modul, erleichtert. In mindestens einem Ausführungsbeispiel verwenden jeder der Prozessorkerne 3502A-3502N und der Grafikprozessor 3508 eingebettete Speichermodule 3518 als gemeinsamen Last Level Cache.In at least one embodiment, I/O connection 3513 represents at least one of several varieties of I/O connections, including an in-housing I/O connection that enables communication between various processor components and an embedded high-performance memory module 3518, such as a eDRAM module, lightened. In at least one embodiment, each of processor cores 3502A-3502N and graphics processor 3508 use embedded memory modules 3518 as a shared last level cache.

In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3502A-3502N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3502A-3502N in Bezug auf die Befehlssatzarchitektur (ISA) heterogen, wobei einer oder mehrere der Prozessorkerne 3502A-3502N einen gemeinsamen Befehlssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 3502A-35-02N eine Teilmenge eines gemeinsamen Befehlssatzes oder einen anderen Befehlssatz ausführen. In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3502A-3502N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einer relativ höheren Leistungsaufnahme mit einem oder mehreren Kernen mit einer geringeren Leistungsaufnahme gekoppelt sind. In mindestens einem Ausführungsbeispiel kann der Prozessor 3500 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert werden.In at least one embodiment, processor cores 3502A-3502N are homogeneous cores that execute a common instruction set architecture. In at least one embodiment, processor cores 3502A-3502N are instruction set architecture (ISA) heterogeneous, with one or more of processor cores 3502A-3502N executing a common instruction set, while one or more other cores of processor cores 3502A-35-02N execute a subset of a execute a common instruction set or a different instruction set. In at least one embodiment, processor cores 3502A-3502N are heterogeneous in terms of microarchitecture, with one or more relatively higher power consumption cores coupled with one or more lower power consumption cores. In at least one embodiment, processor 3500 may be implemented on one or more chips or as an SoC integrated circuit.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile der Inferenz- und/oder Trainingslogik 1515 oder die gesamte Inferenz und/oder Trainingslogik 1515 in den Grafikprozessor 3510 integriert werden. Beispielsweise können in mindestens einem Ausführungsbeispiel die hier beschriebenen Trainings- und/oder Inferenztechniken eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3412, dem (den) Grafikkern(en) 3515A, der (den) gemeinsam genutzten Funktionslogik(en) 3516, dem (den) Grafikkern(en) 3515B, der (den) gemeinsam genutzten Funktionslogik(en) 3520 oder einer anderen Logik in 35 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 15A oder 15B dargestellten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3510 so konfigurieren, dass sie einen oder mehrere hier beschriebene Algorithmen für maschinelles Lernen, Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken für Neuronale Netzwerke ausführen können.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, some or all of the inference and/or training logic 1515 may be integrated into the graphics processor 3510 . For example, in at least one embodiment, the training and/or inference techniques described herein may utilize one or more ALUs resident in the 3D Pipeline 3412, Graphics Core(s) 3515A, Shared Functional Logic(s) 3516 , the 3515B graphics core(s), the 3520 shared functional logic(s), or other logic in 35 are included. About that Additionally, in at least one embodiment, the inferencing and/or training operations described herein may use logic other than that described in 15A or 15B logic shown are performed. In at least one embodiment, weight parameters may be stored in on-chip or off-chip memory and/or registers (shown or not) that configure ALUs of graphics processor 3510 to implement one or more machine learning algorithms described herein , network architectures, use cases or training techniques for neural networks.

36 ist ein Blockdiagramm eines Grafikprozessors 3600, bei dem es sich um eine diskrete Grafikverarbeitungseinheit handeln kann, oder um einen Grafikprozessor, der in einer Vielzahl von Verarbeitungskernen integriert ist. In mindestens einem Ausführungsbeispiel kommuniziert der Grafikprozessor 3600 über eine dem Speicher zugeordnete E/A-Schnittstelle mit Registern des Grafikprozessors 3600 und mit Befehlen, die in den Speicher eingegeben werden. In mindestens einem Ausführungsbeispiel umfasst der Graphikprozessor 3600 eine Speicherschnittstelle 3614 für den Speicherzugriff. In mindestens einem Ausführungsbeispiel ist die Speicherschnittstelle 3614 eine Schnittstelle zum lokalen Speicher, zu einem oder mehreren internen Cache-Speichern, zu einem oder mehreren gemeinsam genutzten externen Cache-Speichern und/oder zum Systemspeicher. 36 Figure 12 is a block diagram of a 3600 graphics processor, which may be a discrete graphics processing unit or a graphics processor integrated into multiple processing cores. In at least one embodiment, graphics processor 3600 communicates with registers of graphics processor 3600 and with instructions input to memory via an I/O interface mapped to memory. In at least one embodiment, graphics processor 3600 includes a memory interface 3614 for memory access. In at least one embodiment, memory interface 3614 is an interface to local memory, one or more internal caches, one or more shared external caches, and/or system memory.

In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3600 auch eine Anzeigensteuerung 3602 zur Steuerung der Ausgabe von Anzeigedaten an ein Anzeigegerät 3620. In mindestens einem Ausführungsbeispiel umfasst die Anzeigensteuerung 3602 Hardware für eine oder mehrere Überlagerungsebenen für das Gerät 3620 und eine Zusammensetzung aus mehreren Schichten von Video- oder Benutzerschnittstellenelementen. In mindestens einem Ausführungsbeispiel kann das Anzeigegerät 3620 ein internes oder externes Anzeigegerät sein. In mindestens einem Ausführungsbeispiel ist das Anzeigegerät 3620 ein kopfmontiertes Anzeigegerät, wie z.B. ein VR-Anzeigegerät (Virtual Reality) oder ein AR-Anzeigegerät (Augmented Reality). In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3600 eine Video-Codec-Engine 3606 zum Kodieren, Dekodieren oder Transkodieren von Medien in, aus oder zwischen einem oder mehreren Medienkodierungsformaten, einschließlich, aber nicht beschränkt auf MPEG-Formate (Moving Picture Experts Group) wie MPEG-2, AVC-Formate (Advanced Video Coding) wie H.264 /MPEG-4 AVC, sowie die Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 und die Joint Photographic Experts Group (JPEG) Formate wie JPEG und Motion JPEG (MJPEG) Formate.In at least one embodiment, graphics processor 3600 also includes a display controller 3602 for controlling the output of display data to a display device 3620. In at least one embodiment, display controller 3602 includes hardware for one or more overlay layers for device 3620 and a composite of multiple layers of video or user interface elements. In at least one embodiment, display device 3620 may be an internal or external display device. In at least one embodiment, display device 3620 is a head-mounted display device, such as a virtual reality (VR) display device or an augmented reality (AR) display device. In at least one embodiment, the graphics processor 3600 includes a video codec engine 3606 for encoding, decoding, or transcoding media to, from, or between one or more media encoding formats, including but not limited to MPEG (Moving Picture Experts Group) formats such as MPEG -2, AVC (Advanced Video Coding) formats such as H.264 /MPEG-4 AVC, as well as the Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 and the Joint Photographic Experts Group (JPEG) formats such as JPEG and Motion JPEG (MJPEG) formats.

In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3600 eine Engine 3604 für die Blockbildübertragung (engl. Block Image Transfer, BLIT), um zweidimensionale (2D) Rasterisierungsoperationen durchzuführen, einschließlich z.B. Bit-Boundary-Blocktransfers. In mindestens einem Ausführungsbeispiel werden die 2D-Grafikoperationen jedoch unter Verwendung einer oder mehrerer Komponenten der Grafikverarbeitungsengine (engl. Graphics Processing Engine, GPE) 3610 ausgeführt. In mindestens einem Ausführungsbeispiel ist die GPE 3610 eine Rechenengine zur Durchführung von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.In at least one embodiment, graphics processor 3600 includes a block image transfer (BLIT) engine 3604 to perform two-dimensional (2D) rasterization operations including, for example, bit boundary block transfers. However, in at least one embodiment, the 2D graphics operations are performed using one or more Graphics Processing Engine (GPE) 3610 components. In at least one embodiment, GPE 3610 is a computational engine for performing graphics operations, including three-dimensional (3D) graphics operations and media operations.

In mindestens einem Ausführungsbeispiel umfasst die GPE 3610 eine 3D-Pipeline 3612 zur Durchführung von 3D-Operationen, wie z.B. das Rendern dreidimensionaler Bilder und Szenen mit Verarbeitungsfunktionen, die mit 3D-Primitivformen (z.B. Rechteck, Dreieck usw.) arbeiten. Die 3D-Pipeline 3612 umfasst programmierbare und feste Funktionselemente, die verschiedene Aufgaben ausführen und/oder Ausführungs-Threads auf einem 3D/Medien-Subsystem 3615 erzeugen. Während die 3D-Pipeline 3612 für die Durchführung von Medienoperationen in mindestens einem Ausführungsbeispiel verwendet werden kann, umfasst die GPE 3610 auch eine Medienpipeline 3616, die für die Durchführung von Medienoperationen, wie z. B. Video-Nachbearbeitung und Bildverbesserung, verwendet wird.In at least one embodiment, the GPE 3610 includes a 3D pipeline 3612 for performing 3D operations, such as rendering three-dimensional images and scenes with processing functions that operate on 3D primitive shapes (e.g., rectangle, triangle, etc.). The 3D pipeline 3612 includes programmable and fixed functional elements that perform various tasks and/or spawn threads of execution on a 3D/media subsystem 3615. While 3D pipeline 3612 may be used to perform media operations in at least one embodiment, GPE 3610 also includes a media pipeline 3616 that may be used to perform media operations such as B. video post-processing and image enhancement is used.

In mindestens einem Ausführungsbeispiel umfasst die Medienengine 3616 feste Funktionseinheiten oder programmierbare logische Einheiten zur Durchführung einer oder mehrerer spezialisierter Medienoperationen, wie z.B. Beschleunigung der Videodekodierung, Video-De-Interlacing und Beschleunigung der Videokodierung anstelle oder für die Videocodec-Engine 3606. In mindestens einem Ausführungsbeispiel umfasst die Medien-Pipeline 3616 zusätzlich eine Thread-Erzeugungs-Einheit zum Erzeugen von Threads für die Ausführung auf dem 3D/Media-Subsystem 3615. In mindestens einem Ausführungsbeispiel führen die erzeugten Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten durch, die im 3D/Media-Subsystem 3615 enthalten sind.In at least one embodiment, media engine 3616 includes fixed functional units or programmable logic units for performing one or more specialized media operations, such as video decoding acceleration, video de-interlacing, and video encoding acceleration instead of or for video codec engine 3606. In at least one embodiment Additionally, the media pipeline 3616 includes a thread creation unit for creating threads for execution on the 3D/media subsystem 3615. In at least one embodiment, the created threads perform computations for media operations on one or more graphics execution units running in the 3D /Media subsystem 3615 are included.

In mindestens einem Ausführungsbeispiel umfasst das 3D/Medien-Subsystem 3615 Logik zur Ausführung von Threads, die von der 3D-Pipeline 3612 und der Medien-Pipeline 3616 erzeugt werden. In mindestens einem Ausführungsbeispiel senden die 3D-Pipeline 3612 und die Medienpipeline 3616 Thread-Ausführungsanforderungen an das 3D/Media-Subsystem 3615, das Thread-Verteilungs-Logik zur Arbitrierung und zum Verteilen verschiedener Anforderungen an verfügbare Thread-Ausführungsressourcen umfasst. In mindestens einem Ausführungsbeispiel umfassen die Ausführungsressourcen ein Array von Grafikausführungseinheiten zur Verarbeitung von 3D- und Medien-Threads. In mindestens einem Ausführungsbeispiel umfasst das 3D/Media-Subsystem 3615 einen oder mehrere interne Caches für Thread-Befehle und Daten. In mindestens einem Ausführungsbeispiel umfasst das Subsystem 3615 auch gemeinsam genutzten Speicher, einschließlich Registern und adressierbarem Speicher, um Daten zwischen Threads gemeinsam zu nutzen und Ausgabedaten zu speichern.In at least one embodiment, 3D/media subsystem 3615 includes logic for executing threads spawned by 3D pipeline 3612 and media pipeline 3616 . in minutes In at least one embodiment, 3D pipeline 3612 and media pipeline 3616 send thread execution requests to 3D/media subsystem 3615, which includes thread dispatch logic for arbitrating and dispatching various requests to available thread execution resources. In at least one embodiment, the execution resources include an array of graphics execution units for processing 3D and media threads. In at least one embodiment, 3D/media subsystem 3615 includes one or more internal caches for thread instructions and data. In at least one embodiment, subsystem 3615 also includes shared memory, including registers and addressable memory, to share data between threads and to store output data.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1515 in den Grafikprozessor 3600 integriert werden. Beispielsweise können in mindestens einem Ausführungsbeispiel die hier beschriebenen Trainings- und/oder Inferenzierungstechniken eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3612 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzierungs- und/oder Training-Operationen mit einer anderen Logik als der in 15A oder 15B dargestellten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3600 so konfigurieren, dass sie einen oder mehrere hier beschriebene Algorithmen für maschinelles Lernen, Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken für Neuronale Netze ausführen können.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, some or all of the inference and/or training logic 1515 may be integrated into the graphics processor 3600. For example, in at least one embodiment, the training and/or inference techniques described herein may use one or more ALUs included in 3D pipeline 3612 . Furthermore, in at least one embodiment, the inferencing and/or training operations described herein may use logic other than that described in 15A or 15B logic shown are performed. In at least one embodiment, weight parameters may be stored in on-chip or off-chip memory and/or registers (shown or not) that configure ALUs of graphics processor 3600 to implement one or more machine learning algorithms described herein, network architectures, use cases or training techniques for neural networks.

37 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 3710 eines Grafikprozessors, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist die Grafikverarbeitungs-Engine (GPE) 3710 eine Version der in 36 gezeigten GPE 3610. In mindestens einem Ausführungsbeispiel ist die Media-Pipeline 3616 optional und kann nicht explizit in GPE 3710 enthalten sein. In mindestens einem Ausführungsbeispiel ist ein separater Medien- und/oder Bildprozessor an GPE 3710 gekoppelt. 37 3710 is a block diagram of a graphics processing engine 3710 of a graphics processor, according to at least one embodiment. In at least one embodiment, the graphics processing engine (GPE) 3710 is a version of the 36 GPE 3610 shown as shown. In at least one embodiment, media pipeline 3616 is optional and may not be included in GPE 3710 explicitly. In at least one embodiment, a separate media and/or image processor is coupled to GPE 3710.

In mindestens einem Ausführungsbeispiel ist die GPE 3710 mit einem Befehls-Streamer 3703 gekoppelt oder umfasst diesen, der einen Befehlsstrom für die 3D-Pipeline 3612 und/oder die Medienpipelines 3616 bereitstellt. In mindestens einem Ausführungsbeispiel ist der Befehls-Streamer 3703 mit einem Speicher gekoppelt, bei dem es sich um den Systemspeicher oder um einen oder mehrere interne Cache-Speicher und gemeinsam genutzte Cache-Speicher handeln kann. In mindestens einem Ausführungsbeispiel empfängt der Befehls-Streamer 3703 Befehle vom Speicher und sendet Befehle an die 3D-Pipeline 3612 und/oder die Medienpipeline 3616. In mindestens einem Ausführungsbeispiel handelt es sich bei den Befehlen um Befehle, Primitive oder Mikrooperationen, die aus einem Ringpuffer geholt werden, in dem Befehle für die 3D-Pipeline 3612 und die Medienpipeline 3616 gespeichert sind. In mindestens einem Ausführungsbeispiel kann ein Ringpuffer zusätzlich Stapel-Befehlspuffer umfassen, in denen Stapel mehrerer Befehle gespeichert sind. In mindestens einem Ausführungsbeispiel können Befehle für die 3D-Pipeline 3612 auch Verweise auf im Speicher gespeicherte Daten umfassen, wie z.B., aber nicht ausschließlich, Vertex- und Geometriedaten für die 3D-Pipeline 3612 und/oder Bilddaten und Speicherobjekte für die Medienpipeline 3616. In mindestens einem Ausführungsbeispiel verarbeiten die 3D-Pipeline 3612 und die Medienpipeline 3616 Befehle und Daten, indem sie Operationen ausführen oder einen oder mehrere Ausführungsthreads an ein Grafikkern-Array 3714 senden. In mindestens einem Ausführungsbeispiel umfasst Grafikkern-Array 3714 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkern(e) 3715A, Grafikkern(e) 3715B), wobei jeder Block einen oder mehrere Grafikkerne umfasst. In mindestens einem Ausführungsbeispiel umfasst jeder Graphikkern einen Satz von Graphik-Ausführungsressourcen, der eine allgemeine und graphikspezifische Ausführungslogik zur Durchführung von Graphik- und Rechenoperationen sowie eine Texturverarbeitung mit fester Funktionalität und/oder maschinelles Lernen und eine Beschleunigungslogik mit künstlicher Intelligenz umfasst, einschließlich Inferenz- und/oder Trainingslogik 1515 in 15A und 15B.In at least one embodiment, the GPE 3710 is coupled to or includes an instruction streamer 3703 that provides an instruction stream for the 3D pipeline 3612 and/or the media pipelines 3616 . In at least one embodiment, instruction streamer 3703 is coupled to memory, which may be system memory or one or more internal caches and shared caches. In at least one embodiment, instruction streamer 3703 receives instructions from memory and sends instructions to 3D pipeline 3612 and/or media pipeline 3616. In at least one embodiment, the instructions are instructions, primitives, or micro-operations that are retrieved from a circular buffer in which instructions for the 3D pipeline 3612 and the media pipeline 3616 are stored. In at least one embodiment, a ring buffer may additionally include batch instruction buffers storing batches of multiple instructions. In at least one embodiment, instructions for 3D pipeline 3612 may also include references to data stored in memory, such as, but not limited to, vertex and geometry data for 3D pipeline 3612 and/or image data and storage objects for media pipeline 3616. In In at least one embodiment, the 3D pipeline 3612 and media pipeline 3616 process commands and data by executing operations or sending one or more threads of execution to a graphics core array 3714 . In at least one embodiment, graphics core array 3714 includes one or more blocks of graphics cores (e.g., graphics core(s) 3715A, graphics core(s) 3715B), where each block includes one or more graphics cores. In at least one embodiment, each graphics core includes a set of graphics execution resources that includes general and graphics-specific execution logic for performing graphics and computational operations, as well as texture processing with fixed functionality and/or machine learning and artificial intelligence acceleration logic, including inference and /or training logic 1515 in 15A and 15B .

In mindestens einem Ausführungsbeispiel umfasst die 3D-Pipeline 3612 Logik mit einer festen Funktionalität und programmierbare Logik, um ein oder mehrere Schattierungsprogramme, wie z.B. Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Compute-Shader oder andere Schattierungsprogramme, durch die Verarbeitung von Befehle und das Senden von Ausführungsthreads an Grafikkern-Array 3714 zu verarbeiten. In mindestens einem Ausführungsbeispiel stellt Grafikkern-Array 3714 einen einheitlichen Block von Ausführungsressourcen zur Verwendung bei der Verarbeitung von Schattierungsprogrammen bereit. In mindestens einem Ausführungsbeispiel umfasst die allgemeine Ausführungslogik (z.B. Ausführungseinheiten) innerhalb des/der Grafikkern(s) 3715A-3715B des Grafikkern-Arrays 3714 Unterstützung für verschiedene 3D-API-Schattier-Sprachen und kann mehrere simultane Ausführungsthreads ausführen, die mit mehreren Schattierern assoziiert sind.In at least one embodiment, 3D pipeline 3612 includes logic with fixed functionality and programmable logic to implement one or more shading programs, such as vertex shaders, geometry shaders, pixel shaders, fragment shaders, compute shaders, or other shading programs. by processing commands and sending threads of execution to graphics core array 3714. In at least one embodiment, graphics core array 3714 provides a unified block of execution resources for use in processing shader programs men ready. In at least one embodiment, the general execution logic (e.g., execution units) within the graphics core(s) 3715A-3715B of the graphics core array 3714 includes support for various 3D API shader languages and can execute multiple simultaneous threads of execution associated with multiple shaders are.

In mindestens einem Ausführungsbeispiel umfasst das Grafikkern-Array 3714 auch Ausführungslogik zur Ausführung von Medienfunktionen, wie Video- und/oder Bildverarbeitung. In mindestens einem Ausführungsbeispiel umfassen die Ausführungseinheiten zusätzlich zu den Grafikverarbeitungsoperationen allgemeine Logik, die programmierbar ist, um parallele allgemeine Rechenoperationen durchzuführen.In at least one embodiment, the graphics core array 3714 also includes execution logic to perform media functions such as video and/or image processing. In at least one embodiment, in addition to the graphics processing operations, the execution units include general purpose logic that is programmable to perform parallel general purpose computing operations.

In mindestens einem Ausführungsbeispiel können Ausgabedaten, die von Threads erzeugt werden, die auf dem Grafikkern-Array 3714 ausgeführt werden, Daten in den Speicher in einem Unified Return Buffer (URB) 3718 ausgeben. Der URB 3718 kann Daten für mehrere Threads speichern. In mindestens einem Ausführungsbeispiel kann der URB 3718 zum Senden von Daten zwischen verschiedenen Threads verwendet werden, die auf Grafikkern-Array 3714 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann URB 3718 zusätzlich zur Synchronisation zwischen Threads auf Grafikkern-Array 3714 und fester Funktionslogik innerhalb der gemeinsamen Funktionslogik 3720 verwendet werden.In at least one embodiment, output data generated by threads executing on the graphics core array 3714 may output data to memory in a unified return buffer (URB) 3718 . The URB 3718 can store data for multiple threads. In at least one embodiment, the URB 3718 may be used to send data between different threads executing on the graphics core array 3714. In at least one embodiment, URB 3718 may be used in addition to synchronization between threads on graphics core array 3714 and fixed functional logic within shared functional logic 3720.

In mindestens einem Ausführungsbeispiel ist das Grafikkern-Array 3714 so skalierbar, dass das Grafikkern-Array 3714 eine variable Anzahl von Grafikkernen umfasst, von denen jeder eine variable Anzahl von Ausführungseinheiten basierend auf einem Ziel- und Leistungsniveau von GPE 3710 aufweist. In mindestens einem Ausführungsbeispiel sind die Ausführungsressourcen dynamisch skalierbar, so dass die Ausführungsressourcen je nach Bedarf aktiviert oder deaktiviert werden können.In at least one embodiment, graphics core array 3714 is scalable such that graphics core array 3714 includes a variable number of graphics cores, each having a variable number of execution units based on a target and performance level of GPE 3710. In at least one embodiment, execution resources are dynamically scalable such that execution resources can be enabled or disabled as needed.

In mindestens einem Ausführungsbeispiel ist das Grafikkern-Array 3714 mit der gemeinsam genutzten Funktionslogik 3720 gekoppelt, die mehrere Ressourcen umfasst, die von den Grafikkernen in Grafikkern-Array 3714 gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel sind gemeinsam genutzte Funktionen, die von der gemeinsam genutzten Funktionslogik 3720 ausgeführt werden, in Hardware-Logik-Einheiten verkörpert, die spezielle Zusatzfunktionen zum Grafikkern-Array 3714 bereitstellen. In mindestens einem Ausführungsbeispiel umfasst die gemeinsam genutzte Funktionslogik 3720 die Logik von Abtaster 3721, Mathematik 3722 und Inter-Thread-Kommunikation (ITC) 3723, ist aber nicht darauf beschränkt. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Cache(s) 3725 in der gemeinsam genutzten Funktionslogik 3720 enthalten oder mit dieser gekoppelt.In at least one embodiment, graphics core array 3714 is coupled to shared functional logic 3720 that includes multiple resources shared by the graphics cores in graphics core array 3714 . In at least one embodiment, shared functions performed by shared function logic 3720 are embodied in hardware logic units that provide specific additional functions to graphics core array 3714 . In at least one embodiment, shared functional logic 3720 includes, but is not limited to, sampler 3721, math 3722, and inter-thread communication (ITC) 3723 logic. In at least one embodiment, one or more caches 3725 are included in or coupled to shared functional logic 3720 .

In mindestens einem Ausführungsbeispiel wird eine gemeinsam genutzte Funktion verwendet, wenn die Nachfrage nach einer spezialisierten Funktion für die Aufnahme in Grafikkern-Array 3714 nicht ausreicht. In mindestens einem Ausführungsbeispiel wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 3720 verwendet und von anderen Ausführungsressourcen innerhalb des Grafikkern-Arrays 3714 gemeinsam genutzt. In mindestens einem Ausführungsbeispiel können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3720, die in großem Umfang von Grafikkern-Array 3714 verwendet werden, in die gemeinsam genutzte Funktionslogik 3716 innerhalb von Grafikkern-Array 3714 aufgenommen werden. In mindestens einem Ausführungsbeispiel kann die gemeinsam genutzte Funktionslogik 3716 innerhalb des Grafikkern-Arrays 3714 einige oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 3720 umfassen. In mindestens einem Ausführungsbeispiel können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 3720 in der gemeinsam genutzten Funktionslogik 3716 des Grafikkern-Arrays 3714 dupliziert werden. In mindestens einem Ausführungsbeispiel ist die gemeinsam genutzte Funktionslogik 3720 zugunsten der gemeinsam genutzten Funktionslogik 3716 innerhalb des Grafikkern-Arrays 3714 ausgeschlossen.In at least one embodiment, a shared function is used when the demand for a specialized function is insufficient for inclusion in graphics core array 3714 . In at least one embodiment, a single instantiation of a specialized function is used in shared function logic 3720 and shared by other execution resources within graphics core array 3714 . In at least one embodiment, specific shared functions within shared function logic 3720 that are widely used by graphics core array 3714 may be included in shared function logic 3716 within graphics core array 3714 . In at least one embodiment, shared functional logic 3716 within graphics core array 3714 may include some or all of the logic within shared functional logic 3720 . In at least one embodiment, all logic elements within shared functional logic 3720 may be duplicated in shared functional logic 3716 of graphics core array 3714 . In at least one embodiment, shared functional logic 3720 is eliminated in favor of shared functional logic 3716 within graphics core array 3714 .

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile der Inferenz- und/oder Trainingslogik 1515 oder die gesamte Inferenz- und/oder Trainingslogik 1515 in den Grafikprozessor 3710 integriert werden. Beispielsweise können in mindestens einer der hier beschriebenen Ausführungsbeispiele, Trainings- und/oder Inferenztechniken eine oder mehrere der ALUs verwendet werden, die in der 3D-Pipeline 3612, dem/den Grafikkern(en) 3715A, der gemeinsamen Funktionslogik 3716, dem/den Grafikkern(en) 3715B, der gemeinsamen Funktionslogik 3720 oder einer anderen Logik in 37 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 15A oder 15B dargestellten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3710 so konfigurieren, dass sie einen oder mehrere hier beschriebene Algorithmen für maschinelles Lernen, Netzwerkarchitekturen, Anwendungsfälle oder Trainingstechniken von Neuronalen Netzwerken ausführen.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, some or all of the inference and/or training logic 1515 may be integrated into the graphics processor 3710 . For example, in at least one of the example embodiments, training and/or inference techniques described herein, one or more of the ALUs included in the 3D pipeline 3612, the graphics core(s) 3715A, the common functional logic 3716, the graphics core(s). (en) 3715B, the common functional logic 3720 or other logic in 37 are included. Furthermore, in at least one embodiment, the inferencing and/or training operations described herein may use logic other than that described in 15A or 15B logic shown are performed. At least In at least one embodiment, weight parameters may be stored in on-chip or off-chip memory and/or registers (shown or not shown) that configure ALUs of graphics processor 3710 to implement one or more machine learning algorithms described herein, Execute network architectures, use cases or training techniques of neural networks.

38 ist ein Blockdiagramm der Hardware-Logik eines Grafikprozessorkerns 3800, gemäß mindestens einem Ausführungsbeispiel, das hier beschrieben wird. In mindestens einem Ausführungsbeispiel ist der Grafikprozessorkern 3800 in einem Grafikkern-Array enthalten. In mindestens einem Ausführungsbeispiel kann der Grafikprozessorkern 3800, manchmal auch als Kernabschnitt bezeichnet, ein oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors sein. In mindestens einem Ausführungsbeispiel ist der Grafikprozessorkern 3800 exemplarisch für einen Grafikkernabschnitt, und ein Grafikprozessor, wie hier beschrieben, kann mehrere Grafikkernabschnitte umfassen, die auf Ziel- und Leistungsumgebungen (engl. target power and performance envelopes) basieren. In mindestens einem Ausführungsbeispiel kann jeder Grafikkern 3800 einen festen Funktionsblock 3830 umfassen, der mit mehreren Unterkernen 3801A-3801F gekoppelt ist, die auch als Unterabschnitte bezeichnet werden und modulare Blöcke mit allgemeiner und fester Funktionslogik umfassen. 38 10 is a block diagram of the hardware logic of a graphics processor core 3800, according to at least one embodiment described herein. In at least one embodiment, the graphics processor core 3800 is included in a graphics core array. In at least one embodiment, the graphics processor core 3800, sometimes referred to as a core section, may be one or more graphics cores within a modular graphics processor. In at least one embodiment, graphics processor core 3800 is exemplary of a graphics core portion, and a graphics processor as described herein may include multiple graphics core portions based on target power and performance envelopes. In at least one embodiment, each graphics core 3800 may include a fixed functional block 3830 coupled to multiple sub-cores 3801A-3801F, also referred to as subsections, which comprise modular blocks of common and fixed functional logic.

In mindestens einem Ausführungsbeispiel umfasst der Block mit fester Funktionalität 3830 eine Geometrie-Pipeline mit fester Funktionalität 3836, die von allen Unterkernen im Grafikprozessor 3800 gemeinsam genutzt werden kann, zum Beispiel in Grafikprozessor-Implementierungen mit geringerer Leistung und/oder niedrigerem Stromverbrauch. In mindestens einem Ausführungsbeispiel umfasst die Geometrie-Pipeline mit fester Funktionalität 3836 eine Pipeline mit festen 3D-Funktionen, eine Video-Frontend-Einheit, einen Thread-Erzeuger und Thread-Verteiler sowie einen einheitlichen Rückgabepuffer-Verwalter, der einheitliche Rückgabepuffer verwaltet.In at least one embodiment, fixed functionality block 3830 includes a fixed functionality geometry pipeline 3836 that can be shared among all sub-cores in graphics processor 3800, for example in lower performance and/or lower power consumption graphics processor implementations. In at least one embodiment, the fixed functionality geometry pipeline 3836 includes a 3D fixed functions pipeline, a video front end unit, a thread creator and thread dispatcher, and a unified return buffer manager that manages unified return buffers.

In mindestens einem Ausführungsbeispiel umfasst der Block mit fester Funktionalität 3830 auch eine Grafik-SoC-Schnittstelle 3837, einen Grafik-Mikrocontroller 3838 und eine Medien-Pipeline 3839. Die Grafik-SoC-Schnittstelle 3837 ist eine Schnittstelle zwischen dem Grafikkern 3800 und anderen Prozessorkernen innerhalb eines Systems auf einem integrierten Schaltkreis auf einem Chip. In mindestens einem Ausführungsbeispiel ist der Grafik-Mikrocontroller 3838 ein programmierbarer Subprozessor, der konfigurierbar ist, um verschiedene Funktionen des Grafikprozessors 3800 zu verwalten, einschließlich Thread-Verteiler, Planer und Pre-Emption. In mindestens einem Ausführungsbeispiel umfasst die Medien-Pipeline 3839 Logik, um die Dekodierung, Kodierung, Vorverarbeitung und/oder Nachverarbeitung von Multimediadaten, einschließlich Bild- und Videodaten, zu erleichtern. In mindestens einem Ausführungsbeispiel implementiert die Medienpipeline 3839 Medienoperationen über Anforderungen zur Berechnung oder Abtastlogik innerhalb der Unterkerne 3801-3801F.In at least one embodiment, the fixed functionality block 3830 also includes a graphics SoC interface 3837, a graphics microcontroller 3838, and a media pipeline 3839. The graphics SoC interface 3837 is an interface between the graphics core 3800 and other processor cores within of a system on an integrated circuit on a chip. In at least one embodiment, the 3838 graphics microcontroller is a programmable subprocessor that is configurable to manage various functions of the 3800 graphics processor, including thread dispatcher, scheduler, and pre-emption. In at least one embodiment, media pipeline 3839 includes logic to facilitate decoding, encoding, pre-processing, and/or post-processing of multimedia data, including image and video data. In at least one embodiment, media pipeline 3839 implements media operations via requests for computation or sampling logic within sub-cores 3801-3801F.

In mindestens einem Ausführungsbeispiel ermöglicht die SoC-Schnittstelle 3837 dem Grafikkern 3800 die Kommunikation mit allgemeinen Anwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoCs, einschließlich Speicherhierarchieelementen wie einem gemeinsamen Cache-Speicher der letzten Ebene, System-RAM und/oder eingebettetem On-Chip- oder On-Package-DRAM. In mindestens einem Ausführungsbeispiel kann die SoC-Schnittstelle 3837 auch die Kommunikation mit Geräten mit festen Funktionen innerhalb eines SoCs, wie z.B. Kamerabildverarbeitungs-Pipelines, ermöglichen und ermöglicht die Verwendung und/oder Implementierung globaler Speicher-Bausteine (engl. atomics), die von Grafikkern 3800 und CPUs innerhalb eines SoCs gemeinsam genutzt werden können. In mindestens einem Ausführungsbeispiel kann die SoC-Schnittstelle 3837 auch Energieverwaltungssteuerungen für den Grafikkern 3800 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikkerns 3800 und anderen Taktdomänen innerhalb eines SoCs ermöglichen. In mindestens einem Ausführungsbeispiel ermöglicht die SoC-Schnittstelle 3837 den Empfang von Befehlspuffern von einem Befehls-Streamer und einem globalen Thread-Verteiler, die so konfiguriert sind, dass sie Befehle und Befehle für jeden von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors bereitstellen. In mindestens einem Ausführungsbeispiel können Befehle und Anweisungen an die Medien-Pipeline 3839 gesendet werden, wenn Medienoperationen ausgeführt werden sollen, oder an eine Geometrie-Pipeline mit fester Funktion (z.B. Geometrie-Pipeline mit fester Funktion 3836, Geometrie-Pipeline mit fester Funktion 3814), wenn Grafikverarbeitungsoperationen ausgeführt werden sollen.In at least one embodiment, the SoC interface 3837 allows the graphics core 3800 to communicate with general application processor cores (e.g., CPUs) and/or other components within a SoC, including memory hierarchy elements such as a shared last-level cache, system RAM, and /or embedded on-chip or on-package DRAM. In at least one embodiment, the SoC interface 3837 may also enable communication with devices with fixed functions within a SoC, such as camera image processing pipelines, and enable the use and/or implementation of global memory building blocks (atoms) used by the graphics core 3800 and CPUs can be shared within a SoC. In at least one embodiment, the SoC interface 3837 may also implement power management controls for the graphics core 3800 and enable an interface between a clock domain of the graphics core 3800 and other clock domains within a SoC. In at least one embodiment, SoC interface 3837 enables receiving command buffers from a command streamer and a global thread dispatcher configured to provide commands and commands to each of one or more graphics cores within a graphics processor. In at least one embodiment, commands and instructions may be sent to media pipeline 3839 when media operations are to be performed, or to a fixed function geometry pipeline (e.g., fixed function geometry pipeline 3836, fixed function geometry pipeline 3814). , when graphics processing operations are to be performed.

In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 3838 konfiguriert werden, um verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 3800 auszuführen. In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 3838 Grafik- und/oder Rechenlastplanungen für verschiedene parallele Grafik-Engines innerhalb der Arrays 3802A-3802F und 3804A-3804F der Ausführungseinheit (EU) innerhalb der Unterkerne 3801A-3801F durchführen. In mindestens einem Ausführungsbeispiel kann Host-Software, die auf einem CPU-Kern eines SoCs einschließlich des Grafikkerns 3800 ausgeführt wird, Arbeitslasten eine von mehreren Grafikprozessor-Doorbells senden, die einen Planungsvorgang auf einer geeigneten Grafik-Engine aufruft. In mindestens einem Ausführungsbeispiel umfassen die Planungsvorgänge ein Bestimmen des als nächstes auszuführenden Workloads, ein Übertragen einer Arbeitslast an einen Befehls-Streamer, ein Vorwegnehmen vorhandener Arbeitslasten, die auf einer Engine ausgeführt werden, ein Überwachen eines Fortschritts einer Arbeitslast und ein Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 3838 auch Niedrigleistungs- oder Leerlauf-Zustände für den Grafikkern 3800 ermöglichen, indem er dem Grafikkern 3800 die Möglichkeit bietet, Register innerhalb des Grafikkerns 3800 bei Niedrigleistungs-Zustandsübergängen unabhängig von einem Betriebssystem und/oder einer Grafiktreibersoftware auf einem System zu speichern und wiederherzustellen.In at least one embodiment, the graphics microcontroller 3838 can be configured to perform various scheduling and management tasks for the graphics core 3800. In at least one embodiment, graphics microcontroller 3838 may perform graphics and/or computational load scheduling for various parallel graphics engines within arrays 3802A-3802F and 3804A-3804F of embodiments ing unit (EU) within sub-cores 3801A-3801F. In at least one embodiment, host software running on a CPU core of a SoC including the graphics core 3800 can dispatch workloads to one of a plurality of graphics processor doorbells that invoke a scheduling operation on an appropriate graphics engine. In at least one embodiment, the scheduling operations include determining the workload to be executed next, transferring a workload to an instruction streamer, anticipating existing workloads running on an engine, monitoring a workload's progress, and notifying the host software when a workload completes. In at least one embodiment, the graphics microcontroller 3838 may also enable low-power or idle states for the graphics core 3800 by allowing the graphics core 3800 to reset registers within the graphics core 3800 during low-power state transitions independent of an operating system and/or graphics driver software save and restore on a system.

In mindestens einem Ausführungsbeispiel kann der Grafikkern 3800 mehr oder weniger als die abgebildeten Unterkerne 3801A-3801F haben, bis zu N modulare Unterkerne. In mindestens einem Ausführungsbeispiel kann der Grafikkern 3800 für jeden Satz von N Unterkernen auch gemeinsam genutzte Funktionslogik 3810, gemeinsam genutzten und/oder Cache-Speicher 3812, eine Geometrie-Pipeline mit fester Funktionalität 3814 sowie zusätzliche feste Funktionslogik 3816 zur Beschleunigung verschiedener Grafik- und Rechenoperationen umfassen. In mindestens einem Ausführungsbeispiel kann die gemeinsam genutzte Funktionslogik 3810 Logikeinheiten (z.B. Abtaster, Mathematik und/oder Kommunikationslogik zwischen Threads) umfassen, die von jedem der N Unterkerne innerhalb des Grafikkerns 3800 gemeinsam genutzt werden können. Der gemeinsam genutzte und/oder Cache-Speicher 3812 kann ein Cache der letzten Ebene für N Unterkerne 3801A-3801F innerhalb des Grafikkerns 3800 sein und kann auch als gemeinsam genutzter Speicher dienen, auf den mehrere Unterkerne zugreifen können. In mindestens einem Ausführungsbeispiel kann die Geometrie-Pipeline mit fester Funktionalität 3814 anstelle der Geometrie-Pipeline mit fester Funktionalität 3836 innerhalb des festen Funktionsblocks 3830 enthalten sein und kann gleiche oder ähnliche logische Einheiten umfassen.In at least one embodiment, graphics core 3800 may have more or less than the depicted sub-cores 3801A-3801F, up to N modular sub-cores. In at least one embodiment, for each set of N sub-cores, the graphics core 3800 may also include shared function logic 3810, shared and/or cache memory 3812, a fixed functionality geometry pipeline 3814, and additional fixed function logic 3816 to accelerate various graphics and computational operations include. In at least one embodiment, shared functional logic 3810 may include logic units (e.g., scanners, math, and/or inter-thread communication logic) that may be shared by any of the N sub-cores within graphics core 3800 . Shared and/or cache memory 3812 may be a last level cache for N sub-cores 3801A-3801F within graphics core 3800 and may also serve as shared memory accessible by multiple sub-cores. In at least one embodiment, fixed functionality geometry pipeline 3814 may be included within fixed functional block 3830 in place of fixed functionality geometry pipeline 3836 and may include the same or similar logical units.

In mindestens einem Ausführungsbeispiel umfasst der Grafikkern 3800 eine zusätzliche Logik mit fester Funktionalität 3816, die verschiedene Logik zur Beschleunigung mit fester Funktionalität zur Verwendung durch den Grafikkern 3800 umfassen kann. In mindestens einem Ausführungsbeispiel umfasst die zusätzliche Logik mit fester Funktionalität 3816 eine zusätzliche Geometrie-Pipeline zur Verwendung nur in Positionsschattierungen. In der Nur-Positions-Schattierung existieren mindestens zwei Geometrie-Pipelines, während in einer vollständigen Geometrie-Pipeline innerhalb der Geometrie-Pipeline mit fester Funktionalität 3816, 3836 und einer Ausblende-Pipeline (engl. cull pipeline), bei der es sich um eine zusätzliche Geometrie-Pipeline handelt, die in der zusätzlichen Logik mit fester Funktionalität 3816 enthalten sein kann. In mindestens einem Ausführungsbeispiel ist die Ausblende-Pipeline eine abgespeckte Version einer Pipeline mit voller Geometrie. In mindestens einem Ausführungsbeispiel können eine vollständige Pipeline und eine Ausblende-Pipeline verschiedene Instanzen einer Anwendung ausführen, wobei jede Instanz einen separaten Kontext hat. In mindestens einem Ausführungsbeispiel kann nur die Positionsschattierung lange Ausblendedurchläufe für verworfene Dreiecken unterdrücken, wodurch die Schattierung in einigen Fällen früher abgeschlossen werden kann. Beispielsweise kann in mindestens einem Ausführungsbeispiel die Ausblende-Pipeline-Logik innerhalb der zusätzlichen festen Funktionslogik 3816 Positionsschattierungen parallel zu einer Hauptanwendung ausführen und im Allgemeinen schneller als eine vollständige Pipeline kritische Ergebnisse erzeugen, da die Ausblende-Pipeline das Positionsattribut von Eckpunkten abruft und schattiert, ohne die Rasterung und das Rendern von Pixeln in einen Einzelbildpuffer durchzuführen. In mindestens einem Ausführungsbeispiel kann die Ausblende-Pipeline generierte kritische Ergebnisse zur Berechnung von Sichtbarkeitsinformationen für alle Dreiecke verwenden, ohne Rücksicht darauf, ob diese Dreiecke ausgeblendet werden. In mindestens einem Ausführungsbeispiel kann eine vollständige Pipeline (die in diesem Fall als Wiedergabe-Pipeline bezeichnet werden kann) die Sichtbarkeitsinformationen verwenden, um ausgeblendete Dreiecke zu überspringen und nur die sichtbaren Dreiecke zu schattieren, die schließlich an eine Rasterisierungsphase übergeben werden.In at least one embodiment, graphics core 3800 includes additional fixed functionality logic 3816 that may include various fixed functionality acceleration logic for use by graphics core 3800 . In at least one embodiment, the additional logic with fixed functionality 3816 includes an additional geometry pipeline for use only in positional shading. In position-only shading there are at least two geometry pipelines, while in a full geometry pipeline within the fixed functionality geometry pipeline 3816, 3836 and a cull pipeline, which is a additional geometry pipeline that may be included in additional fixed functionality logic 3816 . In at least one embodiment, the fade-out pipeline is a lightweight version of a full geometry pipeline. In at least one embodiment, a full pipeline and a hide pipeline may run different instances of an application, with each instance having a separate context. In at least one embodiment, only positional shading can suppress long fading runs for discarded triangles, allowing shading to complete earlier in some cases. For example, in at least one embodiment, the hide pipeline logic within the additional fixed function logic can perform 3816 position shading in parallel with a main application and produce critical results generally faster than a full pipeline because the hide pipeline retrieves the position attribute of vertices and shades without perform rasterization and rendering of pixels into a frame buffer. In at least one embodiment, the hiding pipeline may use generated critical results to compute visibility information for all triangles, regardless of whether those triangles are hidden. In at least one embodiment, a complete pipeline (which in this case may be referred to as a rendering pipeline) may use the visibility information to skip hidden triangles and shade only the visible triangles, which are eventually passed to a rasterization phase.

In mindestens einem Ausführungsbeispiel kann die zusätzliche Logik mit fester Funktion 3816 auch eine Beschleunigungslogik für maschinelles Lernen enthalten, wie z.B. eine Multiplikationslogik mit fester Funktionsmatrix, für Implementierungen, die Optimierungen für maschinelles Lernen oder Inferenzierung beinhalten.In at least one embodiment, the additional fixed function logic 3816 may also include machine learning acceleration logic, such as fixed function matrix multiplication logic, for implementations involving machine learning optimizations or inference.

In mindestens einem Ausführungsbeispiel umfasst innerhalb jeder Grafik-Unterkern 3801A-3801F einen Satz von Ausführungsressourcen, die verwendet werden können, um Grafiken, Medien und Rechenoperationen als Reaktion auf Anfragen der Grafik-Pipeline, Medien-Pipeline oder Schattierungsprogrammen auszuführen. In mindestens einem Ausführungsbeispiel umfassen die Grafik-Unterkerne 3801A-3801F mehrere EU-Arrays 3802A-3802F, 3804A-3804F, Thread-Verteilungs- und Zwischen-Thread-Kommunikationslogik (TD/IC) 3803A-3803F, einen 3D-(z.B. Textur-)Abtaster 3805A-3805F, einen Medienabtaster 3806A-3806F, einen Schattierungsprozessor 3807A-3807F und gemeinsam genutzten lokalen Speicher (engl. Shared Local Memory, SLM) 3808A-3808F. Die EU-Arrays 3802A-3802F, 3804A-3804F umfassen jeweils mehrere Ausführungseinheiten, bei denen es sich um allgemeine Grafikverarbeitungseinheiten handelt, die in der Lage sind, Gleitkomma- und Ganzzahl-/Festkomma-Logikoperationen zur Unterstützung von Grafik-, Medien- oder Rechenoperationen, einschließlich Grafik-, Medien- oder Rechenschattierungsprogrammen (engl. Compute Shader Program), durchzuführen. In mindestens einem Ausführungsbeispiel führt die TD/IC-Logik 3803A-3803F lokale Thread-Verteilungs- und Thread-Steuerungsoperationen für Ausführungseinheiten innerhalb eines Unterkerns aus und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Unterkerns ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der 3D-Abtaster 3805A-3805F Textur- oder andere 3D-Grafikdaten in den Speicher einlesen. In mindestens einem Ausführungsbeispiel kann der 3D-Abtaster Texturdaten basierend auf einem konfigurierten Abtastzustand und Texturformat, die mit einer gegebenen Textur assoziiert sind, unterschiedlich lesen. In mindestens einem Ausführungsbeispiel kann der Medienabtaster 3806A-3806F ähnliche Operationen basierend auf einem Typ und Format ausführen, die mit Mediendaten assoziiert sind. In mindestens einem Ausführungsbeispiel kann jeder Grafik-Unterkern 3801A-3801F abwechselnd einen vereinheitlichten 3D- und Medienabtaster umfassen. In mindestens einem Ausführungsbeispiel können Threads, die auf Ausführungseinheiten innerhalb jedes Unterkerns 3801A-3801F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 3808A-3808F innerhalb jedes Unterkerns nutzen, damit Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, unter Verwendung eines gemeinsamen Pools von On-Chip-Speicher ausgeführt werden können.In at least one embodiment, within each graphics sub-core 3801A-3801F includes a set of execution resources that can be used to run graphics, media, and compute perform operations in response to requests from the graphics pipeline, media pipeline, or shading programs. In at least one embodiment, the graphics sub-cores 3801A-3801F include multiple EU arrays 3802A-3802F, 3804A-3804F, thread distribution and inter-thread communication logic (TD/IC) 3803A-3803F, a 3D (e.g., texture 3805A-3805F scanner, 3806A-3806F media scanner, 3807A-3807F shading processor, and 3808A-3808F shared local memory (SLM). The EU arrays 3802A-3802F, 3804A-3804F each include multiple execution units, which are general purpose graphics processing units capable of performing floating point and integer/fixed point logic operations in support of graphics, media, or computational operations , including graphics, media, or compute shader programs. In at least one embodiment, the 3803A-3803F TD/IC logic performs local thread dispatch and thread control operations for execution units within a sub-core and facilitates communication between threads executing on execution units of a sub-core. In at least one embodiment, the 3D scanner 3805A-3805F can read texture or other 3D graphics data into memory. In at least one embodiment, the 3D scanner may read texture data differently based on a configured scan state and texture format associated with a given texture. In at least one embodiment, media scanner 3806A-3806F may perform similar operations based on a type and format associated with media data. In at least one embodiment, each graphics sub-core 3801A-3801F may alternately include a unified 3D and media scanner. In at least one embodiment, threads executing on execution units within each sub-core 3801A-3801F can use shared local memory 3808A-3808F within each sub-core so that threads executing within a thread group can use a shared pool of On-chip memory can run.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile oder die gesamte Inferenz- und/oder Trainingslogik 1515 in den Grafikprozessor 3810 integriert werden. Beispielsweise können in mindestens einem Ausführungsbeispiel die hierin beschriebenen Trainings- und/oder Inferenzierungstechniken eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3810, dem Grafik-Mikrocontroller 3838, der Geometrie-Pipeline mit fester Funktionalität 3814 und 3836 oder anderer Logik in 35 enthalten sind. Darüber hinaus können in mindestens einem Ausführungsbeispiel die hier beschriebenen Inferenzierungs- und/oder Training-Operationen mit einer anderen als der in 15A oder 15B gezeigten Logik durchgeführt werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3800 so konfigurieren, dass sie einen oder mehrere hier beschriebene Algorithmen für maschinelles Lernen, Architekturen, Anwendungsfälle oder Trainingstechniken von neuronalen Netzwerken ausführen.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, some or all of the inference and/or training logic 1515 may be integrated into the graphics processor 3810. For example, in at least one embodiment, the training and/or inference techniques described herein may utilize one or more ALUs resident in 3D Pipeline 3810, Graphics Microcontroller 3838, Fixed Functionality Geometry Pipeline 3814 and 3836, or other logic in 35 are included. In addition, in at least one embodiment, the inferencing and/or training operations described herein may be performed with a method other than that described in 15A or 15B shown logic are carried out. In at least one embodiment, weight parameters may be stored in on-chip or off-chip memory and/or registers (shown or not) that configure ALUs of graphics processor 3800 to implement one or more machine learning algorithms described herein , architectures, use cases or training techniques of neural networks.

39A-39B zeigen die Thread-Ausführungslogik 3900, die ein Array von Verarbeitungselementen eines Grafikprozessor-Kerns umfasst, gemäß mindestens einem Ausführungsbeispiel. 39A zeigt mindestens ein Ausführungsbeispiel, in dem die Thread-Ausführungslogik 3900 verwendet wird. 39B zeigt beispielhafte interne Details einer Ausführungseinheit gemäß mindestens einem Ausführungsbeispiel. 39A-39B 12 show thread execution logic 3900 comprising an array of processing elements of a graphics processor core, according to at least one embodiment. 39A FIG. 12 shows at least one embodiment in which thread execution logic 3900 is used. 39B 12 shows exemplary internal details of an execution unit according to at least one embodiment.

Wie in 39A gezeigt, umfasst die Thread-Ausführungslogik 3900 in mindestens einem Ausführungsbeispiel einen Schattierungsprozessor 3902, einen Thread-Verteiler 3904, den Befehlscache 3906, ein skalierbares Array von Ausführungseinheiten, das eine Vielzahl von Ausführungseinheiten 3908A-3908N, einen Abtaster 3910, einen Datencache 3912 und einen Datenport 3914 umfasst. In mindestens einem Ausführungsbeispiel kann ein skalierbares Array von Ausführungseinheiten dynamisch skaliert werden, indem eine oder mehrere Ausführungseinheiten (z. B. eine beliebige der Ausführungseinheiten 3908A, 3908B, 3908C, 3908D bis hin zu 3908N-1 und 3908N) basierend auf den rechnerischen Anforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In mindestens einem Ausführungsbeispiel sind skalierbare Ausführungseinheiten über eine Verbindungsstruktur miteinander verbunden, die eine Verbindung zu jeder der Ausführungseinheiten herstellt. In mindestens einem Ausführungsbeispiel umfasst die Thread-Ausführungslogik 3900 eine oder mehrere Verbindungen zum Speicher, wie z. B. zum Systemspeicher oder Cache-Speicher, über einen oder mehrere von Befehlscache 3906, Datenport 3914, Abtaster 3910 und Ausführungseinheiten 3908A-3908N. In mindestens einem Ausführungsbeispiel ist jede Ausführungseinheit (z.B. 3908A) eine eigenständige programmierbare allgemeine Recheneinheit, die in der Lage ist, mehrere simultane Hardware-Threads auszuführen und dabei für jeden Thread mehrere Datenelemente parallel zu verarbeiten. In mindestens einem Ausführungsbeispiel ist das Array der Ausführungseinheiten 3908A-3908N so skalierbar, dass es eine beliebige Anzahl einzelner Ausführungseinheiten umfasst.As in 39A As shown, the thread execution logic 3900 includes, in at least one embodiment, a shader processor 3902, a thread dispatcher 3904, the instruction cache 3906, a scalable array of execution units that includes a plurality of execution units 3908A-3908N, a scanner 3910, a data cache 3912, and a Data port 3914 includes. In at least one embodiment, a scalable array of execution units may be dynamically scaled by adding one or more execution units (e.g., any of execution units 3908A, 3908B, 3908C, 3908D through 3908N-1 and 3908N) based on the computational needs of a workload can be enabled or disabled. In at least one embodiment, scalable execution units are interconnected by an interconnect fabric that connects to each of the execution units. In at least one embodiment, thread execution logic 3900 includes one or more connections to memory, such as: e.g., to system memory or cache memory, via one or more of instruction cache 3906, data port 3914, scanner 3910, and execution units 3908A-3908N. In at least one embodiment, each execution unit (eg, 3908A) is a self-contained programmable general purpose processing unit capable of executing multiple simultaneous hardware threads while processing multiple data items in parallel for each thread. In In at least one embodiment, the array of execution units 3908A-3908N is scalable to include any number of individual execution units.

In mindestens einem Ausführungsbeispiel werden die Ausführungseinheiten 3908A-3908N in erster Linie zur Ausführung von Schattierungsprogrammen verwendet. In mindestens einem Ausführungsbeispiel kann der Schattierungsprozessor 3902 verschiedene Schattierungsprogramme verarbeiten und Ausführungs-Threads, die mit Schattierungsprogrammen assoziiert sind, über einen Thread-Verteiler 3904 verteilen. In mindestens einem Ausführungsbeispiel umfasst der Thread-Verteiler 3904 Logik zur Arbitrierung von Thread-Initiationsanforderungen von Grafik- und Medien-Pipelines und zur Instanziierung angeforderter Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 3908A-3908N. In mindestens einem Ausführungsbeispiel kann eine Geometrie-Pipeline beispielsweise Vertex-, Tessellations- oder Geometrie-Schattierer an die Thread-Ausführungslogik zur Verarbeitung verteilen. In mindestens einem Ausführungsbeispiel kann der Thread-Verteiler 3904 auch Thread-Erzeugungs-Anforderungen von ausführenden Schattierungsprogrammen zur Laufzeit verarbeiten.In at least one embodiment, execution units 3908A-3908N are used primarily to execute shading programs. In at least one embodiment, shader processor 3902 may process various shader programs and dispatch threads of execution associated with shader programs via thread dispatcher 3904 . In at least one embodiment, thread dispatcher 3904 includes logic for arbitrating thread initiation requests from graphics and media pipelines and instantiating requested threads on one or more execution units in execution units 3908A-3908N. For example, in at least one embodiment, a geometry pipeline may dispatch vertex, tessellation, or geometry shaders to thread execution logic for processing. In at least one embodiment, thread dispatcher 3904 may also process thread creation requests from executing shaders at runtime.

In mindestens einem Ausführungsbeispiel unterstützen die Ausführungseinheiten 3908A-3908N einen Befehlssatz, der eine native Unterstützung für viele Standard-3D-Grafik-Schattierungsbefehle umfasst, so dass Schattierungsprogramme aus Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimaler Übersetzung ausgeführt werden. In mindestens einem Ausführungsbeispiel unterstützen die Ausführungseinheiten Vertex- und Geometrieverarbeitung (z. B. Vertex-Programme, Geometrieprogramme, Vertex-Schattierer), Pixelverarbeitung (z. B. Pixel-Schattierer, Fragment-Schattierer) und allgemeine Verarbeitung (z. B. Rechen- und Medien-Schattierer). In mindestens einem Ausführungsbeispiel ist jede der Ausführungseinheiten 3908A-3908N, die eine oder mehrere arithmetisch-logische Einheiten (ALUs) umfassen, in der Lage, eine SIMD-Ausführung (Single Instruction Multiple Data) mit mehreren Befehle auszuführen, und der Multi-Thread-Betrieb ermöglicht trotz höherer Latenz-Speicherzugriffe eine effiziente Ausführungsumgebung. In mindestens einem Ausführungsbeispiel verfügt jeder Hardware-Thread innerhalb jeder Ausführungseinheit über eine dedizierte Registerdatei mit hoher Bandbreite und einen assoziierten unabhängigen Thread-Zustand. In mindestens einem Ausführungsbeispiel erfolgt die Ausführung mehrfach pro Takt an Pipelines, die ganzzahlige, einfach- und doppeltgenaue Gleitkommaoperationen, SIMD-Verzweigungen, logische Operationen, transzendente Operationen und andere verschiedene Operationen ausführen können. In mindestens einem Ausführungsbeispiel veranlasst die Abhängigkeitslogik innerhalb der Ausführungseinheiten 3908A-3908N während des Wartens auf Daten aus dem Speicher oder einer der gemeinsam genutzten Funktionen einen wartenden Thread zum Pausieren (engl. sleep), bis die angeforderten Daten zurückgegeben wurden. In mindestens einem Ausführungsbeispiel kann es vorkommen, dass während ein wartender Thread im Ruhezustand ist, Hardwareressourcen für die Verarbeitung anderer Threads verwendet werden. Beispielsweise kann in mindestens einem Ausführungsbeispiel während einer Verzögerung, die mit einer Vertex-Schattierungsoperation assoziiert ist, eine Ausführungseinheit Operationen für einen Pixel-Schattierer, Fragment-Schattierer oder einen anderen Typ von Schattierungsprogrammen, einschließlich eines anderen Vertex-Schattierers, ausführen.In at least one embodiment, execution units 3908A-3908N support an instruction set that includes native support for many standard 3D graphics shading instructions such that shading programs from graphics libraries (e.g., Direct 3D and OpenGL) execute with minimal translation. In at least one embodiment, the execution units support vertex and geometry processing (e.g., vertex programs, geometry programs, vertex shaders), pixel processing (e.g., pixel shaders, fragment shaders), and general processing (e.g., computations). - and Media Shader). In at least one embodiment, each of the execution units 3908A-3908N, comprising one or more arithmetic logic units (ALUs), is capable of executing multiple instruction SIMD (single instruction multiple data) execution, and the multi-threaded Operation enables an efficient execution environment despite higher latency memory accesses. In at least one embodiment, each hardware thread within each execution unit has a dedicated high bandwidth register file and an associated independent thread state. In at least one embodiment, execution occurs multiple times per clock on pipelines capable of performing integer, single and double precision floating point operations, SIMD branches, logical operations, transcendent operations, and other miscellaneous operations. In at least one embodiment, while waiting for data from memory or one of the shared functions, dependency logic within execution units 3908A-3908N causes a waiting thread to sleep until the requested data is returned. In at least one embodiment, while a waiting thread is idle, hardware resources may be used to process other threads. For example, in at least one embodiment, during a delay associated with a vertex shader operation, an execution unit may execute operations for a pixel shader, fragment shader, or other type of shader program including another vertex shader.

In mindestens einem Ausführungsbeispiel arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3908A-3908N mit Arrays von Datenelementen. In mindestens einem Ausführungsbeispiel ist eine Anzahl von Datenelementen die „Ausführungsgröße“ oder die Anzahl der Kanäle für einen Befehl. In mindestens einem Ausführungsbeispiel ist ein Ausführungskanal eine logische Einheit der Ausführung für Datenelementzugriff, Maskierung und Flusssteuerung innerhalb von Befehlen. In mindestens einem Ausführungsbeispiel kann eine Anzahl von Kanälen unabhängig von einer Anzahl physischer arithmetisch-logischer Einheiten (Arithmetic Logic Units, ALUs) oder Gleitkommaeinheiten (Floating Point Units, FPUs) für einen bestimmten Grafikprozessor sein. In mindestens einem Ausführungsbeispiel unterstützen die Ausführungseinheiten 3908A-3908N Ganzzahl- und Gleitkomma-Datentypen.In at least one embodiment, each execution unit in execution units 3908A-3908N operates on arrays of data elements. In at least one embodiment, a number of data items is the "run size" or number of channels for an instruction. In at least one embodiment, an execution channel is a logical unit of execution for data element access, masking, and flow control within instructions. In at least one embodiment, a number of channels may be independent of a number of physical arithmetic logic units (ALUs) or floating point units (FPUs) for a particular graphics processor. In at least one embodiment, execution units 3908A-3908N support integer and floating point data types.

In mindestens einem Ausführungsbeispiel umfasst ein Befehlssatz einer Ausführungseinheit SIMD-Befehle. In mindestens einem Ausführungsbeispiel können verschiedene Datenelemente als ein gepackter Datentyp in einem Register gespeichert werden, und die Ausführungseinheit verarbeitet verschiedene Elemente basierend auf der Datengröße der Elemente. Zum Beispiel werden in mindestens einem Ausführungsbeispiel beim Betrieb mit einem 256-Bit breiten Vektor 256 Bit eines Vektors in einem Register gespeichert, und eine Ausführungseinheit arbeitet mit einem Vektor als vier separate 64-Bit-gepackte Datenelemente (Datenelemente der Größe Quad-Word (QW)), acht separate 32-Bit-gepackte Datenelemente (Datenelemente der Größe Double Word (DW)), sechzehn separate 16-Bit-gepackte Datenelemente (Datenelemente der Größe Word (W)) oder zweiunddreißig separate 8-Bit-Datenelemente (Datenelemente der Größe Byte (B)). In mindestens einem Ausführungsbeispiel sind jedoch unterschiedliche Vektorbreiten und Registergrößen möglich.In at least one embodiment, an instruction set of an execution unit includes SIMD instructions. In at least one embodiment, different data items may be stored as a packed data type in a register, and the execution unit processes different items based on the data size of the items. For example, in at least one embodiment, when operating with a 256-bit wide vector, 256 bits of a vector are stored in a register and an execution unit operates on a vector as four separate 64-bit packed data elements (quad-word (QW )), eight separate 32-bit packed data items (Double Word (DW) size data items), sixteen separate 16-bit packed data items (Word (W) size data items), or thirty-two separate 8-bit data items (Double Word (W) size data items). size bytes (B)). However, in at least one embodiment, different vector widths and register sizes are possible.

In mindestens einem Ausführungsbeispiel können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 3909A-3909N mit einer Thread-Steuerungslogik (3907A-3907N) kombiniert werden, die allen fusionierten EUs gemeinsam ist. In mindestens einem Ausführungsbeispiel können mehrere EUs zu einer EU-Gruppe fusioniert werden. In mindestens einem Ausführungsbeispiel kann jede EU in einer fusionierten EU-Gruppe so konfiguriert werden, dass sie einen separaten SIMD-Hardware-Thread ausführt. Die Anzahl der EUs in einer fusionierten EU-Gruppe kann gemäß verschiedenen Ausführungsbeispielen variieren. In mindestens einem Ausführungsbeispiel können verschiedene SIMD-Breiten pro EU ausgeführt werden, einschließlich, aber nicht beschränkt auf SIMD8, SIMD16 und SIMD32. In mindestens einem Ausführungsbeispiel umfasst jede fusionierte Grafikausführungseinheit 3909A-3909N mindestens zwei Ausführungseinheiten. Beispielsweise umfasst die fusionierte Ausführungseinheit 3909A in mindestens einem Ausführungsbeispiel eine erste EU 3908A, eine zweite EU 3908B und die Steuerung des Threads 3907A, die der ersten EU 3908A und der zweiten EU 3908B gemeinsam ist. In mindestens einem Ausführungsbeispiel steuert die Thread-Steuerlogik 3907A die auf der fusionierten Grafikausführungseinheit 3909A ausgeführten Threads, so dass jede EU innerhalb der fusionierten Ausführungseinheiten 3909A-3909N unter Verwendung eines gemeinsamen Befehlszeigerregisters ausgeführt werden kann.In at least one embodiment, one or more execution units may be combined into a merged execution unit 3909A-3909N with thread control logic (3907A-3907N) common to all merged EUs. In at least one embodiment, multiple EUs may be merged into an EU group. In at least one embodiment, each EU in a merged EU group can be configured to run a separate SIMD hardware thread. The number of EUs in a merged EU group may vary according to different embodiments. In at least one embodiment, different SIMD widths can be implemented per EU, including but not limited to SIMD8, SIMD16, and SIMD32. In at least one embodiment, each merged graphics execution unit 3909A-3909N includes at least two execution units. For example, in at least one embodiment, the merged execution unit 3909A includes a first EU 3908A, a second EU 3908B, and control of the thread 3907A that is common to the first EU 3908A and the second EU 3908B. In at least one embodiment, thread control logic 3907A controls the threads executing on merged graphics execution unit 3909A such that each EU can execute within merged execution units 3909A-3909N using a common instruction pointer register.

In mindestens einem Ausführungsbeispiel sind in der Thread-Ausführungslogik 3900 ein oder mehrere interne Befehls-Caches (z. B. 3906) enthalten, um Thread-Befehle für Ausführungseinheiten zwischenzuspeichern. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Daten-Caches (z. B. 3912) enthalten, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In mindestens einem Ausführungsbeispiel ist ein Abtaster (engl. sampler) 3910 enthalten, um Texturabtastung für 3D-Operationen und Medienabtastung für Medienoperationen bereitzustellen. In mindestens einem Ausführungsbeispiel umfasst Abtaster 3910 eine spezialisierte Textur- oder Medienabtastfunktionalität, um Textur- oder Mediendaten während des Abtastvorgangs zu verarbeiten, bevor abgetastete Daten einer Ausführungseinheit bereitgestellt werden.In at least one embodiment, thread execution logic 3900 includes one or more internal instruction caches (e.g., 3906) to cache thread instructions for execution units. In at least one embodiment, one or more data caches (e.g., 3912) are included to cache thread data during thread execution. In at least one embodiment, a sampler 3910 is included to provide texture sampling for 3D operations and media sampling for media operations. In at least one embodiment, sampler 3910 includes specialized texture or media sampling functionality to process texture or media data during the sampling process before sampled data is provided to an execution unit.

Während der Ausführung senden Grafik- und Medien-Pipelines in mindestens einem Ausführungsbeispiel Thread-Initiationsanforderungen über die Thread-Erzeugungs- und Verteilungslogik an die Thread-Ausführungslogik 3900. In mindestens einem Ausführungsbeispiel wird, sobald eine Gruppe geometrischer Objekte verarbeitet und in Pixeldaten gerastert wurde, Pixelprozessorlogik (z.B. Pixel-Schattierungs-Logik, Fragment-Schattierungs-Logik usw.) innerhalb des Schattierungsprozessors 3902 aufgerufen, um weitere Ausgabeinformationen zu berechnen und zu veranlassen, dass die Ergebnisse auf Ausgabeflächen (z.B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In mindestens einem Ausführungsbeispiel berechnet ein Pixel-Schattierer oder Fragment-Schattierer Werte verschiedener Vertex-Attribute, die über ein gerastertes Objekt interpoliert werden sollen. In mindestens einem Ausführungsbeispiel führt die Pixel-Prozessorlogik innerhalb des Schattierungsprozessors 3902 dann ein Pixel- oder Fragment-Schattierungsprogramm aus, das von einer API (Application Programming Interface) bereitgestellt wird. In mindestens einem Ausführungsbeispiel verteilt der Schattierungsprozessor 3902 zur Ausführung eines Schattierungsprogramms Threads über den Thread-Verteiler 3904 an eine Ausführungseinheit (z.B. 3908A). In mindestens einem Ausführungsbeispiel verwendet der Schattierungsprozessor 3902 die Texturabtastlogik in Abtaster 3910, um auf Texturdaten in im Speicher zugeordneten Texturabbildungen zuzugreifen. In mindestens einem Ausführungsbeispiel werden durch arithmetische Operationen an Texturdaten und eingegebenen Geometriedaten Pixelfarbdaten für jedes geometrische Fragment berechnet oder ein oder mehrere Pixel von der weiteren Verarbeitung ausgeschlossen.During execution, in at least one embodiment, graphics and media pipelines send thread initiation requests to thread execution logic 3900 via thread creation and distribution logic. In at least one embodiment, once a set of geometric objects has been processed and rasterized into pixel data, Pixel processor logic (e.g. pixel shading logic, fragment shading logic, etc.) is called within the shading processor 3902 to calculate other output information and cause the results to be written to output surfaces (e.g. color buffers, depth buffers, stencil buffers, etc.). In at least one embodiment, a pixel shader or fragment shader calculates values of various vertex attributes to be interpolated across a rasterized object. In at least one embodiment, the pixel processor logic within the shading processor 3902 then executes a pixel or fragment shading program provided by an API (Application Programming Interface). In at least one embodiment, shader processor 3902 dispatches threads via thread dispatcher 3904 to an execution unit (e.g., 3908A) for execution of a shader program. In at least one embodiment, shading processor 3902 uses texture sampling logic in sampler 3910 to access texture data in memory-associated texture maps. In at least one embodiment, arithmetic operations on texture data and input geometry data calculate pixel color data for each geometric fragment or exclude one or more pixels from further processing.

In mindestens einem Ausführungsbeispiel stellt der Datenport 3914 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3900 bereit, um verarbeitete Daten zur weiteren Verarbeitung auf einer Grafikprozessor-Ausgabepipeline in den Speicher auszugeben. In mindestens einem Ausführungsbeispiel umfasst der Datenport 3914 einen oder mehrere Cache-Speicher (z.B. Daten-Cache 3912) oder ist mit diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zwischenzuspeichern.In at least one embodiment, data port 3914 provides a memory access mechanism for thread execution logic 3900 to output processed data to memory for further processing on a graphics processor output pipeline. In at least one embodiment, data port 3914 includes or is coupled to one or more cache memories (e.g., data cache 3912) to cache data for memory access via a data port.

Wie in 39B gezeigt, kann eine Graphik-Ausführungseinheit 3908 in mindestens einem Ausführungsbeispiel eine Befehls-Hol-Einheit 3937, ein General-Register-File-Array (GRF) 3924, ein Architecture-Register-File-Array (ARF) 3926, einen Thread-Arbiter 3922, eine Sendeeinheit 3930, eine Verzweigungseinheit 3932, einen Satz SIMD-Gleitkommaeinheiten (FPUs) 3934 und in mindestens einem Ausführungsbeispiel einen Satz dedizierter ganzzahliger SIMD-ALUs 3935 umfassen. In mindestens einem Ausführungsbeispiel umfassen die Registerdateien GRF 3924 und ARF 3926 einen Satz allgemeiner Registerdateien und Architekturregisterdateien, die mit jedem simultanen Hardware-Thread assoziiert sind, der in der Graphik-Ausführungseinheit 3908 aktiv sein kann. In mindestens einem Ausführungsbeispiel wird der Architekturzustand pro Thread in ARF 3926 beibehalten, während die während der Thread-Ausführung verwendeten Daten in GRF 3924 gespeichert werden. In mindestens einem Ausführungsbeispiel kann der Ausführungszustand jedes Threads, einschließlich der Befehlszeiger für jeden Thread, in thread-spezifischen Registern in ARF 3926 gehalten werden. As in 39B As shown, a graphics execution unit 3908, in at least one embodiment, may include an instruction fetch unit 3937, a general register file array (GRF) 3924, an architecture register file array (ARF) 3926, a thread arbiter 3922, a transmit unit 3930, a branch unit 3932, a set of SIMD floating point units (FPUs) 3934, and in at least one embodiment a set of dedicated integer SIMD ALUs 3935. In at least one embodiment, register files GRF 3924 and ARF 3926 include a set of general register files and Architectural register files associated with each concurrent hardware thread that may be active in graphics execution unit 3908. In at least one embodiment, per-thread architecture state is maintained in ARF 3926 while data used during thread execution is stored in GRF 3924 . In at least one embodiment, the execution state of each thread, including the instruction pointers for each thread, may be held in ARF 3926 in thread-specific registers.

In mindestens einem Ausführungsbeispiel weist die Grafikausführungseinheit 3908 eine Architektur auf, die eine Kombination aus Simultan Multi-Threading (SMT) und feingranularem Interleaved Multi-Threading (IMT) ist. In mindestens einem Ausführungsbeispiel hat die Architektur eine modulare Konfiguration, die zur Zeit des Designs basierend auf einer Zielanzahl von simultanen Threads und einer Anzahl von Registern pro Ausführungseinheit fein abgestimmt werden kann, wobei die Ressourcen der Ausführungseinheit auf die Logik aufgeteilt werden, die zur Ausführung mehrerer simultaner Threads verwendet wird.In at least one embodiment, the graphics execution unit 3908 has an architecture that is a combination of Simultaneous Multi-Threading (SMT) and Fine-Grain Interleaved Multi-Threading (IMT). In at least one embodiment, the architecture has a modular configuration that can be fine-tuned at design time based on a target number of simultaneous threads and a number of registers per execution unit, where execution unit resources are allocated to the logic needed to execute multiple simultaneous threads is used.

In mindestens einem Ausführungsbeispiel kann die Graphik-Ausführungseinheit 3908 mehrere Befehle, die jeweils unterschiedliche Befehle sein können, gemeinsam ausgeben. In mindestens einem Ausführungsbeispiel kann der Thread-Arbiter 3922 des Grafikausführungseinheitsthreads 3908 Befehle zur Ausführung an eine der Sendeeinheit 3930, Verzweigungseinheit 3942 oder SIMD-FPU(s) 3934 senden. In mindestens einem Ausführungsbeispiel kann jeder AusführungsThread auf 128 allgemeine Register im GRF 3924 zugreifen, wobei jedes Register 32 Bytes speichern kann, auf die als SIMD 8-Element-Vektor von 32-Bit-Datenelementen zugegriffen werden kann. In mindestens einem Ausführungsbeispiel hat jeder Thread der Ausführungseinheit Zugriff auf 4 KByte innerhalb des GRF 3924, obwohl die Ausführungseinheiten nicht so begrenzt sind und in anderen Ausführungsbeispielen mehr oder weniger Registerressourcen bereitgestellt werden können. In mindestens einem Ausführungsbeispiel können bis zu sieben Threads gleichzeitig ausgeführt werden, obwohl die Anzahl der Threads pro Ausführungseinheit auch je nach Ausführungsbeispiel variieren kann. In mindestens einem Ausführungsbeispiel, in dem sieben Threads auf 4 KByte zugreifen können, kann das GRF 3924 insgesamt 28 KByte speichern. In mindestens einem Ausführungsbeispiel können flexible Adressierungsmodi die gemeinsame Adressierung von Registern ermöglichen, um effektiv breitere Register aufzubauen oder gestrichelte rechteckige Blockdatenstrukturen zu repräsentieren.In at least one embodiment, graphics execution unit 3908 may concurrently issue multiple instructions, each of which may be different instructions. In at least one embodiment, the thread arbiter 3922 of the graphics execution unit thread 3908 may send instructions to one of the dispatch unit 3930, branch unit 3942, or SIMD FPU(s) 3934 for execution. In at least one embodiment, each thread of execution can access 128 general purpose registers in the GRF 3924, with each register capable of storing 32 bytes that can be accessed as a SIMD 8-element vector of 32-bit data elements. In at least one embodiment, each execution unit thread has access to 4K bytes within the GRF 3924, although the execution units are not so limited and in other embodiments more or fewer register resources may be provided. In at least one embodiment, up to seven threads may be executing concurrently, although the number of threads per execution unit may also vary by embodiment. In at least one embodiment, where seven threads can access 4K bytes, the GRF 3924 can store a total of 28K bytes. In at least one embodiment, flexible addressing modes may allow registers to be addressed together to effectively build wider registers or to represent dashed rectangular block data structures.

In mindestens einem Ausführungsbeispiel werden Speicheroperationen, Abtasteroperationen und andere Systemkommunikationen mit längerer Latenzzeit über „Sende“ Befehle versandt, die von der nachrichtenübergebenden Sendeeinheit 3930 ausgeführt werden. In mindestens einem Ausführungsbeispiel werden Verzweigungsbefehle an eine dedizierte Verzweigungseinheit 3932 gesendet, um die SIMD-Divergenz und schließlich die Konvergenz zu erleichtern.In at least one embodiment, memory operations, scanner operations, and other higher latency system communications are dispatched via "send" commands executed by the messaging sending unit 3930 . In at least one embodiment, branch instructions are sent to a dedicated branch unit 3932 to facilitate SIMD divergence and eventual convergence.

In mindestens einem Ausführungsbeispiel umfasst die Graphik-Ausführungseinheit 3908 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 3934 zur Durchführung von Gleitkommaoperationen. In mindestens einem Ausführungsbeispiel unterstützen die FPU(s) 3934 auch die Ganzzahlberechnung. In mindestens einem Ausführungsbeispiel können FPU(s) 3934 SIMD bis zu M 32-Bit-Gleitkomma- (oder Ganzzahl-) Operationen oder SIMD bis zu 2M 16-Bit-Ganzzahl- oder 16-Bit-Gleitkomma-Operationen ausführen. In mindestens einem Ausführungsbeispiel ist mindestens eine der FPU(s) mit erweiterten mathematischen Funktionen ausgestattet, um transzendente mathematische Funktionen mit hohem Durchsatz und 64-Bit-Gleitkomma-Operationen mit doppelter Genauigkeit zu unterstützen. In mindestens einem Ausführungsbeispiel ist auch ein Satz von ganzzahligen 8-Bit-SIMD-ALUs 3935 vorhanden, die speziell optimiert werden können, um Operationen durchzuführen, die mit maschinellen Lernberechnungen assoziiert sind.In at least one embodiment, graphics execution unit 3908 includes one or more SIMD floating point units (FPU(s)) 3934 for performing floating point operations. In at least one embodiment, FPU(s) 3934 also support integer math. In at least one embodiment, FPU(s) 3934 may perform SIMD up to M 32-bit floating point (or integer) operations, or SIMD up to 2M 16-bit integer or 16-bit floating point operations. In at least one embodiment, at least one of the FPU(s) is equipped with extended math functions to support high throughput transcendent math functions and 64-bit double-precision floating-point operations. In at least one embodiment, there is also a set of 8-bit integer SIMD ALUs 3935 that can be specifically optimized to perform operations associated with machine learning computations.

In mindestens einem Ausführungsbeispiel können Arrays aus mehreren Instanzen von Grafikkern-Array 3908 in einer Grafik-Unterkerngruppierung (z.B. einem Unterabschnitt) instanziiert werden. In mindestens einer Einheit der Ausführungseinheit 3908 in mindestens einem Ausführungsbeispiel können Befehle über eine Vielzahl von Ausführungskanälen ausgeführt werden. In mindestens einem Ausführungsbeispiel wird jeder Thread, der auf der Graphik-Ausführungseinheit 3908 ausgeführt wird, in einem anderen Kanal ausgeführt.In at least one embodiment, arrays of multiple instances of graphics core array 3908 may be instantiated in a graphics sub-core grouping (e.g., subsection). In at least one unit of execution unit 3908, in at least one embodiment, instructions may be executed through a variety of execution channels. In at least one embodiment, each thread executing on graphics execution unit 3908 executes in a different channel.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel können Teile oder die gesamte Inferenz und/oder Trainingslogik 1515 in die Ausführungslogik 3900 integriert werden. Darüber hinaus können in mindestens einem Ausführungsbeispiel Inferenzieren und/oder Trainieren von Operationen, die hierin beschrieben werden, andere Logiken als die in 15A oder 15B dargestellte Logik verwendet werden. In mindestens einem Ausführungsbeispiel können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Ausführungslogik 3900 so konfigurieren, dass sie einen oder mehrere hier beschriebene Algorithmen für maschinelles Lernen, Architekturen, Anwendungsfälle oder Trainingstechniken für neuronale Netze ausführen können.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, some or all of the inference and/or training logic 1515 may be incorporated into the execution logic 3900. Furthermore, in at least one embodiment, inference and/or training of operations described herein may use logic other than in the 15A or 15B logic shown can be used. In at least one embodiment, weight parameters may be stored in on-chip or off-chip memory and/or registers (shown or not) that configure ALUs of execution logic 3900 to execute one or more machine learning algorithms described herein , architectures, use cases or training techniques for neural networks.

40 zeigt eine Parallelverarbeitungseinheit („PPU“) 4000 nach mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist die PPU 4000 mit maschinenlesbarem Code konfiguriert, der, wenn er von der PPU 4000 ausgeführt wird, die PPU 4000 veranlasst, einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken auszuführen. In mindestens einem Ausführungsbeispiel ist PPU 4000 ein Multithread-Prozessor, der auf einem oder mehreren Geräten mit integrierten Schaltkreisen implementiert ist und Multithreading als Latenzverringerungstechnik verwendet, die dafür ausgelegt ist, computerlesbare Befehle (auch als maschinenlesbare Befehle oder einfach nur Befehle bezeichnet) auf mehreren Threads parallel zu verarbeiten. In mindestens einem Ausführungsbeispiel bezieht sich ein Thread auf einen Ausführungsthread und ist eine Instanziierung eines Befehlssatzes, der so konfiguriert ist, dass er von PPU 4000 ausgeführt wird. In mindestens einem Ausführungsbeispiel ist PPU 4000 eine Grafikverarbeitungseinheit („GPU“), die so konfiguriert ist, dass sie eine Grafik-Rendering-Pipeline für die Verarbeitung dreidimensionaler („3D“) Grafikdaten implementiert, um zweidimensionale („2D“) Bilddaten für die Anzeige auf einem Anzeigegerät, wie z.B. einem Flüssigkristallanzeigegerät („LCD“), zu erzeugen. In mindestens einem Ausführungsbeispiel wird PPU 4000 verwendet, um Berechnungen wie lineare Algebra-Operationen und maschinelle Lernvorgänge durchzuführen. 40 illustriert ein Beispiel für einen Parallelprozessor nur zur Veranschaulichung und ist als ein nicht einschränkendes Beispiel für Prozessorarchitekturen zu verstehen, die im Rahmen dieser Offenlegung in Betracht gezogen werden können, wobei jeder geeignete Prozessor als Ergänzung und/oder Ersatz dafür eingesetzt werden kann. 40 12 shows a parallel processing unit (“PPU”) 4000 according to at least one embodiment. In at least one embodiment, PPU 4000 is configured with machine-readable code that, when executed by PPU 4000, causes PPU 4000 to perform some or all of the processes and techniques described in this disclosure. In at least one embodiment, PPU 4000 is a multithreaded processor implemented on one or more integrated circuit devices and using multithreading as a latency reduction technique designed to execute computer-readable instructions (also referred to as machine-readable instructions or just instructions) on multiple threads to process in parallel. In at least one embodiment, a thread refers to a thread of execution and is an instantiation of an instruction set configured to be executed by PPU 4000. In at least one embodiment, PPU 4000 is a graphics processing unit ("GPU") configured to implement a graphics rendering pipeline for processing three-dimensional ("3D") graphics data to generate two-dimensional ("2D") image data for the generate a display on a display device, such as a liquid crystal display ("LCD") device. In at least one embodiment, PPU 4000 is used to perform computations such as linear algebra operations and machine learning operations. 40 Figure 13 illustrates an example parallel processor for purposes of illustration only and is intended as a non-limiting example of processor architectures contemplated by this disclosure, where any suitable processor may be substituted and/or supplemented.

In mindestens einem Ausführungsbeispiel sind eine oder mehrere PPUs 4000 konfiguriert, um High Performance Computing („HPC“), Rechenzentren und Anwendungen des maschinellen Lernens zu beschleunigen. In mindestens einem Ausführungsbeispiel ist die PPU 4000 so konfiguriert, dass sie Systeme und Anwendungen für das Deep Learning beschleunigt, darunter die folgenden, nicht einschränkenden Beispiele: autonome Fahrzeugplattformen, Deep Learning, hochgenaue Sprach-, Bild-, Texterkennungssysteme, intelligente Videoanalyse, Molekularsimulationen, Arzneimittelentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Optimierungen der Online-Suche und personalisierte Benutzerempfehlungen und vieles mehr.In at least one embodiment, one or more PPUs 4000 are configured to accelerate high performance computing ("HPC"), data centers, and machine learning applications. In at least one embodiment, PPU 4000 is configured to accelerate systems and applications for deep learning, including but not limited to the following: autonomous vehicle platforms, deep learning, high-fidelity speech, image, text recognition systems, intelligent video analytics, molecular simulations, Drug discovery, disease diagnosis, weather forecasting, big data analysis, astronomy, molecular dynamics simulation, financial modeling, robotics, factory automation, real-time language translation, online search optimizations and personalized user recommendations, and much more.

In mindestens einem Ausführungsbeispiel umfasst die PPU 4000, ohne Einschränkung, eine Eingabe/Ausgabe-Einheit („E/A“) 4006, eine Frontend-Einheit 4010, eine Planereinheit 4012, eine Arbeitsverteilungseinheit 4014, einen Hub 4016, eine Crossbar („Xbar“) 4020, einen oder mehrere allgemeine Verarbeitungscluster („GPCs“) 4018 und eine oder mehrere Partitionseinheiten („Speicher-Partitionseinheiten“) 4022. In mindestens einem Ausführungsbeispiel ist die PPU 4000 mit einem Host-Prozessor oder anderen PPUs 4000 über eine oder mehrere Hochgeschwindigkeits-GPU-Verbindungen („GPU-Verbindungen“) 4008 verbunden. In mindestens einem Ausführungsbeispiel ist PPU 4000 über eine Verbindung (engl. interconnect) 4002 mit einem Host-Prozessor oder anderen peripheren Geräten verbunden. In mindestens einem Ausführungsbeispiel ist PPU 4000 mit einem lokalen Speicher verbunden, der ein oder mehrere Speichergeräte („Speicher“) 4004 umfasst. In mindestens einem Ausführungsbeispiel umfassen die Speicherbausteine 4004 ohne Einschränkung einen oder mehrere Dynamic Random Access Memory („DRAM“)-Bausteine. In mindestens einem Ausführungsbeispiel sind eine oder mehrere DRAM-Bausteine als Speichersubsysteme mit hoher Bandbreite (engl. high-bandwidth memory, „HBM“) konfiguriert und/oder konfigurierbar, wobei in jedem Gerät mehrere DRAM-Chips gestapelt sind.In at least one embodiment, the PPU 4000 includes, without limitation, an input/output ("I/O") unit 4006, a front-end unit 4010, a scheduler unit 4012, a work distribution unit 4014, a hub 4016, a crossbar ("Xbar ") 4020, one or more general processing clusters ("GPCs") 4018, and one or more partition units ("memory partition units") 4022. In at least one embodiment, the PPU 4000 is connected to a host processor or other PPUs 4000 via one or more High Speed GPU Connections (“GPU Connections”) 4008 connected. In at least one embodiment, PPU 4000 is connected via interconnect 4002 to a host processor or other peripheral devices. In at least one embodiment, PPU 4000 is coupled to local storage, which includes one or more storage devices (“storage”) 4004 . In at least one embodiment, memory devices 4004 include, without limitation, one or more Dynamic Random Access Memory ("DRAM") devices. In at least one embodiment, one or more DRAM devices are configured and/or configurable as high-bandwidth memory (“HBM”) memory subsystems, with multiple DRAM chips stacked in each device.

In mindestens einem Ausführungsbeispiel kann sich die GPU-Hochgeschwindigkeits-Verbindung 4008 auf eine drahtgebundene, mehrspurige Kommunikationsverbindung beziehen, die von Systemen zur Skalierung und Einbeziehung einer oder mehrerer PPUs 4000 in Kombination mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) verwendet wird, die Cache-Kohärenz zwischen PPUs 4000 und CPUs sowie CPU-Mastering unterstützt. In mindestens einem Ausführungsbeispiel werden Daten und/oder Befehle durch die GPU-Hochgeschwindigkeits-Verbindungseinheit 4008 über den Hub 4016 zu/von anderen Einheiten der PPU 4000 übertragen, wie z.B. einer oder mehreren Copy-Engines, Videokodierern, Videodekodierern, Energieverwaltungseinheiten und anderen Komponenten, die in 40 nicht explizit gezeigt sein können.In at least one embodiment, GPU high-speed link 4008 may refer to a wired, multi-lane communication link used by systems to scale and incorporate one or more PPUs 4000 in combination with one or more central processing units ("CPUs") that Cache coherency between PPUs 4000 and CPUs as well as CPU mastering supported. In at least one embodiment, data and/or commands are transmitted through the GPU high-speed interconnect unit 4008 via the hub 4016 to/from other units of the PPU 4000, such as one or more copy engines, video encoders, video decoders, power management units, and other components. in the 40 cannot be shown explicitly.

In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 4006 so konfiguriert, dass sie Kommunikationen (z. B. Befehle, Daten) von einem Host-Prozessor (nicht in 40 gezeigt) über den Systembus 4002 sendet und empfängt. In mindestens einem Ausführungsbeispiel kommuniziert die E/A-Einheit 4006 mit dem Host-Prozessor direkt über den Systembus 4002 oder über ein oder mehrere zwischengeschaltete Geräte wie z.B. eine Speicherbrücke. In mindestens einem Ausführungsbeispiel kann die E/A-Einheit 4006 mit einem oder mehreren anderen Prozessoren, wie z.B. einer oder mehreren PPUs 4000, über den Systembus 4002 kommunizieren. In mindestens einem Ausführungsbeispiel implementiert die E/A-Einheit 4006 eine Peripheral Component Interconnect Express („PCIe“)-Schnittstelle für die Kommunikation über einen PCIe-Bus. In mindestens einem Ausführungsbeispiel implementiert die E/A-Einheit 4006 Schnittstellen für die Kommunikation mit externen Geräten.In at least one embodiment, I/O unit 4006 is configured to receive communications (e.g., commands, data) from a host processor (not in 40 shown) transmits and receives over system bus 4002. In at least one embodiment, I/O unit 4006 communicates with the host processor directly over system bus 4002 or through one or more intermediary devices such as a memory bridge. In at least one embodiment, I/O unit 4006 may communicate with one or more other processors, such as one or more PPUs 4000, via system bus 4002. In at least one embodiment, I/O unit 4006 implements a Peripheral Component Interconnect Express ("PCIe") interface for communication over a PCIe bus. In at least one embodiment, I/O unit 4006 implements interfaces for communicating with external devices.

In mindestens einem Ausführungsbeispiel dekodiert die E/A-Einheit 4006 über den Systembus 4002 empfangene Pakete. In mindestens einem Ausführungsbeispiel repräsentieren mindestens einige Pakete Befehle, die so konfiguriert sind, dass sie die PPU 4000 veranlassen, verschiedene Operationen durchzuführen. In mindestens einem Ausführungsbeispiel überträgt die E/A-Einheit 4006 dekodierte Befehle an verschiedene andere Einheiten der PPU 4000, wie durch Befehle spezifiziert. In mindestens einem Ausführungsbeispiel werden Befehle an die Frontend-Einheit 4010 und/oder an den Hub 4016 oder andere Einheiten der PPU 4000 wie z.B. eine oder mehrere Copy-Engines, einen Videokodierer, einen Videodekodierer, eine Energieverwaltungseinheit usw. übertragen. (nicht ausdrücklich in 40 gezeigt). In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 4006 so konfiguriert, dass sie die Kommunikation zwischen und zwischen verschiedenen logischen Einheiten von PPU 4000 weiterleitet.In at least one embodiment, I/O unit 4006 decodes packets received over system bus 4002. In at least one embodiment, at least some packets represent instructions configured to cause PPU 4000 to perform various operations. In at least one embodiment, I/O unit 4006 transmits decoded commands to various other units of PPU 4000 as specified by commands. In at least one embodiment, commands are transmitted to the front end unit 4010 and/or the hub 4016 or other units of the PPU 4000 such as one or more copy engines, a video encoder, a video decoder, a power management unit, and so forth. (not expressly in 40 shown). In at least one embodiment, I/O unit 4006 is configured to route communications between and between different PPU 4000 logical units.

In mindestens einem Ausführungsbeispiel kodiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der PPU 4000 Arbeitslasten zur Verarbeitung bereitstellt. In mindestens einem Ausführungsbeispiel umfasst eine Arbeitslast Befehle und Daten, die von diesen Befehle verarbeitet werden sollen. In mindestens einem Ausführungsbeispiel ist der Puffer ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 4000 zugreifen kann (z.B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann so konfiguriert sein, dass sie über Speicheranforderungen, die über den Systembus 4002 von der E/A-Einheit 4006 über den Systembus 4002 übertragen werden, auf den Puffer in einem mit dem Systembus 4002 verbundenen Systemspeicher zugreift. In mindestens einem Ausführungsbeispiel schreibt der Host-Prozessor einen Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Beginn des Befehlsstroms an PPU 4000, so dass die Frontend-Einheit 4010 Zeiger auf einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, Befehle aus Befehlsströmen liest und Befehle an verschiedene Einheiten von PPU 4000 weiterleitet.In at least one embodiment, a program executed by the host processor encodes an instruction stream in a buffer that provides PPU 4000 workloads for processing. In at least one embodiment, a workload includes instructions and data to be processed by those instructions. In at least one embodiment, the buffer is an area in memory that is accessible (e.g., read/write) by both the host processor and the PPU 4000 - a host interface unit may be configured to handle memory requests that exceed system bus 4002 from I/O unit 4006 via system bus 4002 accesses the buffer in a system memory connected to system bus 4002. In at least one embodiment, the host processor writes an instruction stream to the buffer and then sends a pointer to the beginning of the instruction stream to PPU 4000 so that front end unit 4010 receives pointers to one or more instruction streams and manages one or more instruction streams, instructions reads from command streams and forwards commands to various units of PPU 4000.

In mindestens einem Ausführungsbeispiel ist die Frontend-Einheit 4010 mit der Planereinheit 4012 gekoppelt, die verschiedene GPCs 4018 für die Verarbeitung von Aufgaben konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einem Ausführungsbeispiel ist die Planereinheit 4012 so konfiguriert, dass sie Statusinformationen zu verschiedenen von der Planereinheit 4012 verwalteten Aufgaben verfolgt, wobei Statusinformationen angeben können, welchem der GPCs 4018 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, welche Prioritätsstufe mit der Aufgabe assoziiert ist usw. In mindestens einem Ausführungsbeispiel plant die Planereinheit 4012 die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren GPCs 4018.In at least one embodiment, the front-end unit 4010 is coupled to the scheduler unit 4012, which configures various GPCs 4018 to process tasks defined by one or more instruction streams. In at least one embodiment, the scheduler unit 4012 is configured to track status information on various tasks managed by the scheduler unit 4012, where status information may indicate which of the GPCs 4018 a task is associated with, whether the task is active or inactive, the priority level associated with the task is associated, etc. In at least one embodiment, scheduler unit 4012 schedules execution of a variety of tasks on one or more GPCs 4018.

In mindestens einem Ausführungsbeispiel ist die Planereinheit 4012 mit der Arbeitsverteilungseinheit 4014 gekoppelt, die so konfiguriert ist, dass sie Aufgaben zur Ausführung auf GPCs 4018 verteilt. In mindestens einem Ausführungsbeispiel verfolgt die Arbeitsverteilungseinheit 4014 eine Anzahl geplanter Aufgaben, die von der Planereinheit 4012 empfangen werden, und die Arbeitsverteilungseinheit 4014 verwaltet einen Pool ausstehender Aufgaben und einen Pool aktiver Aufgaben für jeden der GPCs 4018. In mindestens einem Ausführungsbeispiel umfasst der Pool ausstehender Aufgaben eine Anzahl von Slots (z.B. 32 Slots), die Aufgaben enthalten, die der Verarbeitung durch eine bestimmte GPC 4018 zugewiesen sind; der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von den GPCs 4018 aktiv verarbeitet werden, so dass, wenn eine der GPCs 4018 die Ausführung einer Aufgabe abschließt, diese Aufgabe aus dem Pool aktiver Aufgaben für GPC 4018 verdrängt wird und eine der anderen Aufgaben aus dem Pool ausstehender Aufgaben ausgewählt und zur Ausführung auf GPC 4018 geplant wird. Wenn in mindestens einem Ausführungsbeispiel eine aktive Aufgabe auf GPC 4018 inaktiv ist, z.B. während sie darauf wartet, dass eine Datenabhängigkeit aufgelöst wird, wird die aktive Aufgabe aus GPC 4018 verdrängt und an den Pool der ausstehenden Aufgaben zurückgegeben, während eine andere Aufgabe aus dem Pool der ausstehenden Aufgaben ausgewählt und für die Ausführung auf GPC 4018 geplant wird.In at least one embodiment, scheduler engine 4012 is coupled to work distribution engine 4014, which is configured to distribute tasks to GPCs 4018 for execution. In at least one embodiment, the work distribution unit 4014 keeps track of a number of scheduled tasks received from the scheduler unit 4012, and the work distribution unit 4014 maintains a pending task pool and an active task pool for each of the GPCs 4018. In at least one embodiment, the pending task pool includes a number of slots (e.g., 32 slots) containing tasks assigned for processing by a particular GPC 4018; the active task pool may include a number of slots (e.g., 4 slots) for tasks that are being actively processed by the GPCs 4018 such that when one of the GPCs 4018 completes execution of a task, that task is removed from the active task pool for GPC 4018 is preempted and one of the other tasks is selected from the pool of pending tasks and scheduled to run on GPC 4018. In at least one embodiment, when an active task is idle on GPC 4018, e.g. while waiting for a data dependency to be resolved, the active task is evicted from GPC 4018 and returned to the pending task pool while another task is removed from the pool of pending tasks is selected and scheduled to run on GPC 4018.

In mindestens einem Ausführungsbeispiel kommuniziert die Arbeitsverteilungseinheit 4014 mit einem oder mehreren GPCs 4018 über die XBar 4020. In mindestens einem Ausführungsbeispiel ist die XBar 4020 ein Verbindungsnetzwerk, das viele Einheiten der PPU 4000 mit anderen Einheiten der PPU 4000 koppelt und so konfiguriert werden kann, dass die Arbeitsverteilungseinheit 4014 mit einem bestimmten GPC 4018 gekoppelt wird. In mindestens einem Ausführungsbeispiel können auch eine oder mehrere andere Einheiten von PPU 4000 über den Hub 4016 an die XBar 4020 angeschlossen sein.In at least one embodiment, the work distribution unit 4014 communicates with one or more GPCs 4018 via the XBar 4020. In at least one embodiment, the XBar 4020 is an interconnection network that couples many units of the PPU 4000 to other units of the PPU 4000 and can be configured to the work distribution unit 4014 is paired with a particular GPC 4018. In at least one embodiment, one or more other units of PPU 4000 may also be connected to XBar 4020 via hub 4016 .

In mindestens einem Ausführungsbeispiel werden die Aufgaben von der Planereinheit 4012 verwaltet und von der Arbeitsverteilungs-Einheit 4014 an eine der GPCs 4018 geschickt. GPC 4018 ist konfiguriert, um Aufgaben zu verarbeiten und Ergebnisse zu erzeugen. In mindestens einem Ausführungsbeispiel können die Ergebnisse von anderen Aufgaben innerhalb von GPC 4018 verwendet, über XBar 4020 an ein anderes GPC 4018 weitergeleitet oder im Speicher 4004 gespeichert werden. In mindestens einem Ausführungsbeispiel können Ergebnisse über Partitionseinheiten 4022 in den Speicher 4004 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den/aus dem Speicher 4004 implementieren. In mindestens einem Ausführungsbeispiel können Ergebnisse über die GPU-Hochgeschwindigkeitsverbindung 4008 an eine andere PPU 4004 oder CPU übertragen werden. In mindestens einem Ausführungsbeispiel umfasst die PPU 4000 ohne Einschränkung eine Anzahl U von Partitionseinheiten 4022, die der Anzahl der mit der PPU 4000 gekoppelten separaten und unterschiedlichen Speichergeräte 4004 entspricht. In mindestens einem Ausführungsbeispiel wird die Partitionseinheit 4022 in Verbindung mit 42 hierin ausführlicher beschrieben.In at least one embodiment, the tasks are managed by the scheduler engine 4012 and dispatched to one of the GPCs 4018 by the work distribution engine 4014 . GPC 4018 is configured to process tasks and produce results. In at least one embodiment, the results may be used by other tasks within GPC 4018, forwarded to another GPC 4018 via XBar 4020, or stored in memory 4004. In at least one embodiment, results may be written to memory 4004 via partition units 4022 that implement a memory interface for reading and writing data to/from memory 4004 . In at least one embodiment, results may be transmitted to another PPU 4004 or CPU via the GPU high speed link 4008 . In at least one embodiment, PPU 4000 includes, without limitation, a number U of partition units 4022 equal to the number of separate and distinct storage devices 4004 coupled to PPU 4000 . In at least one embodiment, partition unit 4022 is used in conjunction with 42 described in more detail herein.

In mindestens einem Ausführungsbeispiel führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen für die Ausführung auf der PPU 4000 zu planen. In mindestens einem Ausführungsbeispiel werden mehrere Rechenanwendungen gleichzeitig von PPU 4000 ausgeführt, und die PPU 4000 stellt Isolierung, Dienstgüte („QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen bereit. In mindestens einem Ausführungsbeispiel erzeugt eine Anwendung Befehle (z. B. in Form von API-Aufrufen), die den Treiberkernel veranlassen, eine oder mehrere Tasks zur Ausführung durch die PPU 4000 zu generieren, und der Treiberkernel gibt Tasks an einen oder mehrere Datenströme aus, die von der PPU 4000 verarbeitet werden. In mindestens einem Ausführungsbeispiel umfasst jede Aufgabe eine oder mehrere Gruppen verwandter Threads, die als Warp bezeichnet werden können. In mindestens einem Ausführungsbeispiel umfasst ein Warp eine Vielzahl verwandter Threads (z.B. 32 Threads), die parallel ausgeführt werden können. In mindestens einem Ausführungsbeispiel können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, die Befehle zur Ausführung von Aufgaben enthalten und die Daten über einen gemeinsamen Speicher austauschen. In mindestens einem Ausführungsbeispiel werden Threads und kooperierende Threads in Übereinstimmung mit mindestens einem Ausführungsbeispiel in Verbindung mit 42 ausführlicher beschrieben.In at least one embodiment, a host processor executes a driver kernel that implements an application programming interface ("API") that allows one or more applications executing on the host processor to schedule operations for execution on PPU 4000. In at least one embodiment, multiple computing applications are executed concurrently by PPU 4000, and PPU 4000 provides isolation, quality of service ("QoS"), and independent address spaces for multiple computing applications. In at least one embodiment, an application generates commands (e.g., in the form of API calls) that cause the driver kernel to generate one or more tasks for execution by PPU 4000, and the driver kernel issues tasks to one or more data streams , which are processed by the PPU 4000. In at least one embodiment, each task includes one or more groups of related threads, which may be referred to as a warp. In at least one embodiment, a warp includes a plurality of related threads (eg, 32 threads) that may execute in parallel. In at least one embodiment, cooperating threads may refer to a plurality of threads that contain instructions to perform tasks and that exchange data over a shared memory. In at least one embodiment, threads and cooperating threads are described in accordance with at least one embodiment in connection with 42 described in more detail.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel wird ein Deep-Learning-Anwendungsprozessor verwendet, um ein maschinelles Lernmodell, wie z.B. ein neuronales Netzwerk, zu trainieren, um die der PPU 4000 bereitgestellten Informationen vorherzusagen oder abzuleiten. In mindestens einem Ausführungsbeispiel wird der Deep-Learning-Anwendungsprozessor 4000 verwendet, um auf der Grundlage eines trainierten maschinellen Lernmodells (z.B. eines neuronalen Netzes), das von einem anderen Prozessor oder System oder von der PPU 4000 trainiert wurde, Informationen abzuleiten oder vorherzusagen. In mindestens einem Ausführungsbeispiel kann PPU 4000 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, a deep learning application processor is used to train a machine learning model, such as a neural network, to predict or infer the information provided to PPU 4000 . In at least one embodiment, deep learning application processor 4000 is used to infer or predict information based on a trained machine learning model (e.g., a neural network) trained by another processor or system or by PPU 4000. In at least one embodiment, PPU 4000 may be used to perform one or more of the neural network use cases described herein.

41 zeigt einen allgemeinen Verarbeitungscluster („GPC“) 4100 gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist GPC 4100 der GPC 4018 aus 40. In mindestens einem Ausführungsbeispiel umfasst jeder GPC 4100 ohne Einschränkung eine Anzahl von Hardware-Einheiten für Verarbeitungsaufgaben, und jeder GPC 4100 umfasst ohne Einschränkung einen Pipeline-Verwalter 4102, eine Pre-Raster Operations Unit („PROP“) 4104, eine Rasterisierungs-Engine 4108, eine Arbeitsverteilungs-Crossbar (engl. Work Distribution Crossbar, „WDX“) 4116, eine Speicherverwaltungseinheit (engl. Memory Management Unit, „MMU“) 4118, einen oder mehrere Datenverarbeitungs-Cluster (engl. Data Processing Cluster, „DPCs“) 4106 sowie jede geeignete Kombination von Elementen. 41 4 shows a general processing cluster (“GPC”) 4100 according to at least one embodiment. In at least one embodiment, GPC 4100 is GPC 4018 off 40 . In at least one embodiment, each GPC 4100 includes, without limitation, a number of hardware units for processing tasks, and each GPC 4100 includes, without limitation, a pipeline manager 4102, a pre-raster operations unit ("PROP") 4104, a rasterization engine 4108 , a work distribution crossbar (“WDX”) 4116, a memory management unit (“MMU”) 4118, one or more data processing clusters (“DPCs”) 4106, and any suitable combination of elements.

In mindestens einem Ausführungsbeispiel wird der Betrieb von GPC 4100 vom Pipeline-Verwalter 4102 gesteuert. In mindestens einem Ausführungsbeispiel verwaltet der Pipeline-Verwalter 4102 die Konfiguration eines oder mehrerer DPCs 4106 für die Verarbeitung der GPC 4100 zugewiesenen Aufgaben. In mindestens einem Ausführungsbeispiel konfiguriert der Pipeline-Verwalter 4102 mindestens eine von einer oder mehreren DPCs 4106, um mindestens einen Teil einer Pipeline zum Rendern von Grafiken zu implementieren. In mindestens einem Ausführungsbeispiel ist DPC 4106 so konfiguriert, dass er ein Schattierungsprogramm auf einem programmierbaren Streaming-Multiprozessor („SM“) 4114 ausführt. In mindestens einem der Ausführungsbeispiele ist der Pipeline-Verwalter 4102 so konfiguriert, dass er von einer Arbeitsverteilungseinheit empfangene Pakete an geeignete logische Einheiten innerhalb von GPC 4100 weiterleitet, und einige Pakete können an Hardware-Einheiten mit fester Funktionalität in PROP 4104 und/oder der Raster-Engine 4108 weitergeleitet werden, während andere Pakete an DPCs 4106 zur Verarbeitung durch eine Primitiv-Engine 4112 oder SM 4114 weitergeleitet werden können. In mindestens einem Ausführungsbeispiel konfiguriert der Pipeline-Verwalter 4102 mindestens eine der DPCs 4106 zur Implementierung eines Modells eines neuronalen Netzwerks und/oder einer Rechenpipeline.In at least one embodiment, the operation of GPC 4100 is controlled by pipeline manager 4102 . In at least one embodiment, pipeline manager 4102 manages the configuration of one or more DPCs 4106 for processing GPC 4100 assigned tasks. In at least one embodiment, pipeline manager 4102 configures at least one of one or more DPCs 4106 to implement at least a portion of a graphics rendering pipeline. In at least one embodiment, DPC 4106 is configured to run a shading program on a streaming programmable multiprocessor ("SM") 4114 . In at least one embodiment, pipeline manager 4102 is configured to forward packets received from a work distribution unit to appropriate logical units within GPC 4100, and some packets may be sent to hardware units with fixed functionality in PROP 4104 and/or the grid Engine 4108 may be forwarded, while other packets may be forwarded to DPCs 4106 for processing by primitive engine 4112 or SM 4114. In at least one embodiment, the pipeline manager 4102 configures at least one of the DPCs 4106 to implement a neural network model and/or a computational pipeline.

In mindestens einem Ausführungsbeispiel ist die PROP-Einheit 4104 so konfiguriert, dass sie die von der Engine 4108 und den DPCs 4106 erzeugten Daten an eine Raster Operations („ROP“)-Einheit in der Partitionseinheit 4022 weiterleitet, die oben in Verbindung mit 40 ausführlicher beschrieben ist. In mindestens einem Ausführungsbeispiel ist die PROP-Einheit 4104 so konfiguriert, dass sie Optimierungen für die Farbmischung durchführt, Pixeldaten organisiert, Adressübersetzungen durchführt und vieles mehr. In mindestens einem Ausführungsbeispiel umfasst die Rasterengine 4108 ohne Einschränkung eine Reihe von Hardware-Einheiten mit fester Funktionalität, die so konfiguriert sind, dass sie verschiedene Rasteroperationen durchführen, und die Rasterengine 4108 umfasst ohne Einschränkung eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Tile-Coalescing-Engine und jede geeignete Kombination davon. In mindestens einem Ausführungsbeispiel empfängt die Setup-Engine transformierte Vertices und erzeugt Ebenengleichungen, die mit einem durch Vertices definierten geometrischen Primitiv assoziiert sind; Ebenengleichungen werden an die Grob-Raster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x-, y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen; die Ausgabe der Grob-Raster-Engine wird an die Culling-Engine übertragen, wo Fragmente, die mit dem Primitiv assoziiert sind und einen z-Test nicht bestehen, ausgeblendet werden, und an eine Clipping-Engine übertragen, wo Fragmente, die außerhalb eines Sichtkegels liegen, abgeschnitten werden. In mindestens einem Ausführungsbeispiel werden die Fragmente, die das Clipping und Culling überleben, an die Feinraster-Engine weitergeleitet, um Attribute für Pixelfragmente basierend auf den von der Setup-Engine erzeugten Ebenengleichungen zu erzeugen. In mindestens einem Ausführungsbeispiel umfasst die Ausgabe der Engine 4108 Fragmente, die von einer beliebigen geeigneten Entität verarbeitet werden, z.B. von einem in dem DPC 4106 implementierten Fragment-Schattierer.In at least one embodiment, PROP unit 4104 is configured to forward the data generated by engine 4108 and DPCs 4106 to a raster operations ("ROP") unit in partition unit 4022, described above in connection with 40 is described in more detail. In at least one embodiment, the PROP unit 4104 is configured to perform color mixing optimizations, organize pixel data, perform address translations, and more. In at least one embodiment, raster engine 4108 includes, without limitation, a set of fixed functionality hardware units configured to perform various raster operations, and raster engine 4108 includes, without limitation, a setup engine, a coarse raster engine, a culling engine, a clipping engine, a fine rasterization engine, a tile coalescing engine, and any suitable combination thereof. In at least one embodiment, the setup engine receives transformed vertices and generates plane equations associated with a geometric primitive defined by vertices; Plane equations are passed to the coarse raster engine to generate coverage information (eg, an x,y coverage mask for a tile) for the primitive; the output of the coarse raster engine is sent to the culling engine, where fragments associated with the primitive that fail a z-test are hidden, and to a clipping engine, where fragments that fall outside a Visibility cone are cut off. In at least one embodiment, the fragments that survive clipping and culling are passed to the fine raster engine to generate attributes for pixel fragments based on the plane equations generated by the setup engine. In at least one embodiment, the output of engine 4108 includes fragments that are processed by any suitable entity, such as a fragment shader implemented in DPC 4106 .

Jeder in GPC 4100 enthaltene DPC 4106 besteht in mindestens einem Ausführungsbeispiel aus, ohne Einschränkung, einem M-Pipe-Controller („MPC“) 4110; der Primitiv-Engine 4112; einer oder mehreren SMs 4114 und einer beliebigen geeigneten Kombination davon. In mindestens einem Ausführungsbeispiel steuert MPC 4110 den Betrieb von DPC 4106 und leitet die vom Pipeline-Verwalter 4102 empfangenen Pakete an geeignete Einheiten in DPC 4106 weiter. In mindestens einem Ausführungsbeispiel werden Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 4112 weitergeleitet, die so konfiguriert ist, dass sie Vertex-Attribute, die mit dem Vertex assoziiert sind, aus dem Speicher holt; im Gegensatz dazu können Pakete, die mit einem Schattierungsprogramm assoziiert sind, an SM 4114 weitergeleitet werden.Each DPC 4106 included in GPC 4100 consists, in at least one embodiment, of, without limitation, an M-Pipe Controller ("MPC") 4110; the primitive engine 4112; one or more SMs 4114 and any suitable combination thereof. In at least one embodiment, MPC 4110 controls the operation of DPC 4106 and forwards packets received from pipeline manager 4102 to appropriate entities in DPC 4106 . In at least one embodiment, packets associated with a vertex are forwarded to primitive engine 4112, which is configured to fetch vertex attributes associated with the vertex from memory; in contrast, packets associated with a shader program may be forwarded to SM 4114.

In mindestens einem Ausführungsbeispiel umfasst SM 4114 ohne Einschränkung einen programmierbaren Streaming-Prozessor, der zur Verarbeitung von Aufgaben konfiguriert ist, die durch eine Anzahl von Threads repräsentiert werden. In mindestens einem Ausführungsbeispiel umfasst der SM 4114 mehrere Threads (engl. multi-threaded) und ist so konfiguriert, dass er die Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig ausführt und eine SIMD-Architektur („Single-Instruction, Multiple-Data“) implementiert, bei der jeder Thread in einer Gruppe von Threads (z.B. ein Warp) so konfiguriert ist, dass er einen anderen Datensatz auf der Basis desselben Befehlssatzes verarbeitet. In mindestens einem Ausführungsbeispiel führen alle Threads in einer Gruppe von Threads dieselben Befehle aus. In mindestens einem Ausführungsbeispiel implementiert SM 4114 eine SIMT-Architektur („Single-Instruction, Multiple Thread“), wobei jeder Thread in einer Gruppe von Threads so konfiguriert ist, dass er einen anderen Datensatz auf der Grundlage desselben Befehlssatzes verarbeitet, wobei jedoch einzelne Threads in einer Gruppe von Threads während der Ausführung divergieren dürfen. In mindestens einem Ausführungsbeispiel werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp aufrechterhalten, wodurch die Gleichzeitigkeit zwischen Warps und die serielle Ausführung innerhalb von Warps ermöglicht wird, wenn die Threads innerhalb eines Warps divergieren. In einem anderen Ausführungsbeispiel werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread aufrechterhalten, wodurch gleiche Gleichzeitigkeit zwischen allen Threads innerhalb und zwischen Warps ermöglicht wird. In mindestens einem Ausführungsbeispiel wird der Ausführungszustand für jeden einzelnen Thread aufrechterhalten, und Threads, die dieselben Befehle ausführen, können konvergiert und parallel ausgeführt werden, um eine bessere Effizienz zu erzielen. Mindestens ein Ausführungsbeispiel von SM 4114 wird hierin ausführlicher beschrieben.In at least one embodiment, without limitation, SM 4114 includes a programmable streaming processor configured to process tasks represented by a number of threads. In at least one embodiment, SM 4114 is multi-threaded and configured to execute the plurality of threads (e.g., 32 threads) from a particular set of threads concurrently and uses a single-threaded (SIMD) architecture. Instruction, Multiple-Data"), where each thread in a group of threads (e.g., a warp) is configured to process a different set of data based on the same instruction set. In at least one embodiment, all threads in a group of threads execute the same instructions. In at least one embodiment, SM 4114 implements a single-instruction, multiple-thread (SIMT) architecture, where each thread in a group of threads is configured to process a different data set based on the same instruction set, but with individual threads in a group of threads are allowed to diverge during execution. In at least one embodiment, a program counter, call stack, and execution state are maintained for each warp, enabling concurrency between warps and serial execution within warps becomes when the threads diverge within a warp. In another embodiment, a program counter, call stack, and execution state are maintained for each individual thread, allowing equal concurrency between all threads within and between warps. In at least one embodiment, execution state is maintained for each individual thread, and threads executing the same instructions can be converged and executed in parallel for better efficiency. At least one embodiment of SM 4114 is described in more detail herein.

In mindestens einem Ausführungsbeispiel stellt die MMU 4118 eine Schnittstelle zwischen GPC 4100 und der Speicherpartitionseinheit (z.B. Partitionseinheit 4022 von 40) bereit, und stellt die MMU 4118 eine Übersetzung virtueller Adressen in physische Adressen, Speicherschutz und Arbitrierung von Speicheranforderungen bereit. In mindestens einem Ausführungsbeispiel stellt die MMU 4118 einen oder mehrere Übersetzungs-Lookaside-Puffer („TLBs“) für die Übersetzung virtueller Adressen in physische Adressen im Speicher bereit.In at least one embodiment, MMU 4118 provides an interface between GPC 4100 and the memory partition unit (eg, partition unit 4022 of 40 ) and MMU 4118 provides virtual address to physical address translation, memory protection, and arbitration of memory requests. In at least one embodiment, MMU 4118 provides one or more translation lookaside buffers ("TLBs") for translation of virtual addresses to physical addresses in memory.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel wird ein Deep-Learning-Anwendungsprozessor verwendet, um ein maschinelles Lernmodell, wie z.B. ein neuronales Netzwerk, zu trainieren, um Informationen vorherzusagen oder abzuleiten, die GPC 4100 zur Verfügung gestellt werden. In mindestens einem Ausführungsbeispiel wird der GPC 4100 verwendet, um auf der Grundlage eines trainierten maschinellen Lernmodells (z.B. eines neuronalen Netzwerks), das von einem anderen Prozessor oder System oder von GPC 4100 trainiert wurde, Informationen abzuleiten oder vorherzusagen. In mindestens einem Ausführungsbeispiel kann GPC 4100 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle für neuronale Netze durchzuführen.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, a deep learning application processor is used to train a machine learning model, such as a neural network, to predict or infer information provided to GPC 4100 . In at least one embodiment, GPC 4100 is used to infer or predict information based on a trained machine learning model (eg, a neural network) trained by another processor or system or by GPC 4100 . In at least one embodiment, GPC 4100 may be used to perform one or more of the neural network use cases described herein.

42 zeigt eine Speicher-Partitionseinheit 4200 einer Parallelverarbeitungseinheit („PPU“), gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst die Speicherpartitionseinheit 4200 ohne Einschränkung eine Rasteroperationen-Einheit (engl. raster operations, „ROP“) 4202, einen L2-Cache (engl. level two, „L2“) 4204, eine Speicherschnittstelle 4206 und jede geeignete Kombination davon. Die Speicherschnittstelle 4206 ist mit dem Speicher gekoppelt. Die Speicherschnittstelle 4206 kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder ähnliches für die Hochgeschwindigkeits-Datenübertragung implementieren. In mindestens einem Ausführungsbeispiel enthält die PPU U Speicherschnittstellen 4206, eine Speicherschnittstelle 4206 pro Paar Partitionseinheiten 4200, wobei jedes Paar Partitionseinheiten 4200 mit einem entsprechenden Gerät verbunden ist. In mindestens einem Ausführungsbeispiel kann die PPU beispielsweise mit bis zu Y Speichergeräten verbunden sein, wie z.B. mit Speicherstapeln mit hoher Bandbreite oder Speicher mit doppelter Grafikdatenrate, Version 5, synchroner Dynamic Random Access Memory („GDDR5 SDRAM“). 42 12 shows a memory partition unit 4200 of a parallel processing unit ("PPU"), according to at least one embodiment. In at least one embodiment, the memory partition unit 4200 includes, without limitation, a raster operations unit ("ROP") 4202, an L2 cache ("L2") 4204, a memory interface 4206, and any suitable combination thereof . Memory interface 4206 is coupled to memory. Memory interface 4206 may implement 32, 64, 128, 1024 bit data buses or the like for high speed data transfer. In at least one embodiment, the PPU U includes memory interfaces 4206, one memory interface 4206 per pair of partition units 4200, with each pair of partition units 4200 connected to a corresponding device. For example, in at least one embodiment, the PPU may be coupled to up to Y memory devices, such as high-bandwidth memory stacks or double graphics data rate memory, version 5, synchronous dynamic random access memory ("GDDR5 SDRAM").

In mindestens einem Ausführungsbeispiel implementiert die Speicherschnittstelle 4206 eine Speicherschnittstelle der zweiten Generation („HBM2“) mit hoher Bandbreite, wobei Y gleich der Hälfte von U ist. In mindestens einem Ausführungsbeispiel befinden sich die HBM2-Speicherstacks in demselben Gehäuse wie die PPU, wodurch erhebliche Strom- und Flächeneinsparungen im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen bereitgestellt werden. In mindestens einem Ausführungsbeispiel umfasst jeder HBM2-Stapel ohne Einschränkung vier Speicherbausteine und Y ist gleich 4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Baustein für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit umfasst. In mindestens einem Ausführungsbeispiel unterstützt der Speicher den Single-Error Correcting Double-Error Detecting („SECDED“) Error Correction Code („ECC“) zum Schutz der Daten. ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die empfindlich auf Datenkorruption reagieren.In at least one embodiment, memory interface 4206 implements a high-bandwidth second generation memory interface ("HBM2"), where Y equals half of U . In at least one embodiment, the HBM2 memory stacks reside in the same package as the PPU, providing significant power and area savings compared to traditional GDDR5 SDRAM systems. In at least one embodiment, each HBM2 stack includes, without limitation, four memory devices and Y equals 4, with each HBM2 stack including two 128-bit channels per device for a total of 8 channels and a data bus width of 1024 bits. In at least one embodiment, the memory supports Single-Error Correcting Double-Error Detecting ("SECDED") Error Correction Code ("ECC") to protect the data. ECC provides higher reliability for computing applications that are sensitive to data corruption.

In mindestens einem Ausführungsbeispiel implementiert die PPU eine mehrstufige Speicherhierarchie. In mindestens einem Ausführungsbeispiel unterstützt die Speicherpartitionseinheit 4200 einen einheitlichen Speicher, um einen einzigen einheitlichen virtuellen Adressraum für die Zentraleinheit („CPU“) und den PPU-Speicher bereitzustellen, wodurch die gemeinsame Nutzung von Daten durch virtuelle Speichersysteme ermöglicht wird. In mindestens einem Ausführungsbeispiel wird die Häufigkeit der Zugriffe einer PPU auf Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU verschoben werden, die häufiger auf Seiten zugreift. In mindestens einem Ausführungsbeispiel unterstützt die GPU-Hochgeschwindigkeitsverbindung 4008 Adressübersetzungsdienste, die es der PPU ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und die den vollen Zugriff der PPU auf den CPU-Speicher ermöglichen.In at least one embodiment, the PPU implements a multi-level memory hierarchy. In at least one embodiment, memory partition unit 4200 supports unified memory to provide a single unified virtual address space for central processing unit ("CPU") and PPU memory, thereby enabling data sharing across virtual memory systems. In at least one embodiment, the frequency of accesses by a PPU to memory residing on other processors is tracked to ensure that memory pages are moved to the physical memory of the PPU that is accessing pages more frequently. In at least one embodiment, GPU high speed interconnect 4008 supports address translation services that allow the PPU to directly access a CPU's page tables and allow the PPU full access to CPU memory.

In mindestens einem Ausführungsbeispiel übertragen die Copy-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In mindestens einem Ausführungsbeispiel können Copy-Engines Seitenfehler für Adressen erzeugen, die nicht in Seitentabellen zugeordnet sind, und die Speicherpartitionseinheit 4200 bedient dann Seitenfehler, indem sie Adressen in Seitentabellen abbildet, wonach die Copy-Engine die Übertragung durchführt. In mindestens einem Ausführungsbeispiel ist der Speicher für mehrere Operationen der Copy-Engines zwischen mehreren Prozessoren angeheftet (d.h. nicht auslagerbar), wodurch der verfügbare Speicher erheblich reduziert wird. In mindestens einem Ausführungsbeispiel mit Hardware-Seitenfehlern können Adressen an die Copy-Engines übergeben werden, ohne Rücksicht darauf, ob Speicherseiten resident sind, und der Kopiervorgang ist transparent.In at least one embodiment, the copy engines transfer data between multiple PPUs or between PPUs and CPUs. In at least one embodiment, copy engines can generate page faults for addresses not mapped into page tables, and memory partition unit 4200 then services page faults by mapping addresses into page tables, after which the copy engine performs the transfer. In at least one embodiment, memory for multiple copy engine operations is pinned (i.e., non-swappable) between multiple processors, thereby significantly reducing available memory. In at least one embodiment with hardware page faults, addresses can be passed to the copy engines regardless of whether memory pages are resident, and the copy process is transparent.

Daten aus dem Speicher 4004 von 40 oder einem anderen Systemspeicher werden von der Speicherpartitionseinheit 4200 abgerufen und im L2-Cache 4204 gespeichert, der sich auf dem Chip befindet und von verschiedenen GPCs gemäß mindestens einem Ausführungsbeispiel gemeinsam genutzt wird. Jede Speicherpartitionseinheit 4200 umfasst in mindestens einem Ausführungsbeispiel mindestens einen Teil des L2-Caches, der einem entsprechenden Speichergerät zugeordnet ist, ohne Einschränkung. In mindestens einem Ausführungsbeispiel sind Caches niedrigerer Ebenen in verschiedenen Einheiten innerhalb von GPCs implementiert. In mindestens einem Ausführungsbeispiel kann jeder der SMs 4114 einen Level-1- („L1“-)Cache implementieren, wobei der L1-Cache ein privater Speicher ist, der einem bestimmten SM 4114 zugeordnet ist, und Daten aus dem L2-Cache 4204 geholt und in jedem der L1-Caches zur Verarbeitung in funktionalen Einheiten der SMs 4114 gespeichert werden. In mindestens einem Ausführungsbeispiel ist der L2-Cache 4204 mit der Speicherschnittstelle 4206 und der XBar 4020 gekoppelt.Data from memory 4004 of 40 or other system memory are retrieved from the memory partition unit 4200 and stored in the on-chip L2 cache 4204 shared between different GPCs according to at least one embodiment. Each memory partition unit 4200 includes, without limitation, at least a portion of the L2 cache associated with a corresponding memory device, in at least one embodiment. In at least one embodiment, lower level caches are implemented in various entities within GPCs. In at least one embodiment, each of the SMs 4114 may implement a level 1 ("L1") cache, where the L1 cache is private memory associated with a particular SM 4114, and data is fetched from the L2 cache 4204 and stored in each of the L1 caches for processing in SMs 4114 functional units. In at least one embodiment, L2 cache 4204 is coupled to memory interface 4206 and XBar 4020.

Die ROP-Einheit 4202 führt in mindestens einem Ausführungsbeispiel grafische Rasterisierungsoperationen in Bezug auf Pixelfarben aus, wie z.B. Farbkomprimierung, Pixelüberblendung und mehr. Die ROP-Einheit 4202 führt in mindestens einem Ausführungsbeispiel in Verbindung mit der Rasterengine 4108 eine Tiefenprüfung durch und empfängt eine Tiefe für eine Probenstelle, die einem Pixelfragment aus der ausblendenden Engine der Rasterengine 4108 zugeordnet ist. In mindestens einem Ausführungsbeispiel wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit dem Fragment assoziierte Probenstelle getestet. Wenn das Fragment in mindestens einem Ausführungsbeispiel den Tiefentest für die Probenposition besteht, aktualisiert die ROP-Einheit 4202 den Tiefenpuffer und überträgt das Ergebnis des Tiefentests an die Rasterengine 4108. Es ist zu beachten, dass sich die Anzahl der Partitionseinheiten 4200 von der Anzahl der GPCs unterscheiden kann und daher jede ROP-Einheit 4202 in mindestens einem Ausführungsbeispiel mit jeder der GPC gekoppelt sein kann. In mindestens einem Ausführungsbeispiel verfolgt die ROP-Einheit 4202 Pakete, die von verschiedenen GPCs empfangen werden, und legt fest, zu welchen Paketen ein von der ROP-Einheit 4202 erzeugtes Ergebnis über XBar 4020 weitergeleitet wird.The ROP unit 4202, in at least one embodiment, performs graphical rasterization operations related to pixel colors, such as color compression, pixel blending, and more. ROP unit 4202, in at least one embodiment, performs a depth check in conjunction with rasterization engine 4108 and receives a depth for a sample location associated with a pixel fragment from rasterization engine 4108's masking engine. In at least one embodiment, the depth is tested against a corresponding depth in a depth buffer for a sample location associated with the fragment. In at least one embodiment, if the fragment passes the depth test for the sample location, the ROP unit 4202 updates the depth buffer and transmits the result of the depth test to the raster engine 4108. Note that the number of partition units 4200 depends on the number of GPCs can differ and therefore each ROP unit 4202 can be coupled to each of the GPC in at least one embodiment. In at least one embodiment, ROP unit 4202 keeps track of packets received from different GPCs and determines which packets a result generated by ROP unit 4202 is forwarded via XBar 4020 to.

43 zeigt einen Streaming-Multiprozessor („SM“) 4300, entsprechend mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist SM 4300 der SM von 41. In mindestens einem Ausführungsbeispiel enthält SM 4300 ohne Einschränkung einen Befehlscache 4302; eine oder mehrere Planer-Einheiten 4304; eine Registerdatei 4308; einen oder mehrere Verarbeitungskerne („Cores“) 4310; eine oder mehrere Spezialfunktionseinheiten („SFUs“) 4312; eine oder mehrere Lade-/Speichereinheiten („LSUs“) 4314; ein Verbindungsnetzwerk 4316; einen gemeinsamen Speicher-/Level-1- („L1“)-Cache 4318; und jede geeignete Kombination davon. In mindestens einem Ausführungsbeispiel verteilt eine Arbeitsverteilungseinheit Aufgaben zur Ausführung auf allgemeine Verarbeitungscluster („GPCs“) von Parallelverarbeitungseinheiten („PPUs“), wobei jede Aufgabe einem bestimmten Datenverarbeitungscluster („DPC“) innerhalb eines GPCs und, falls die Aufgabe mit einem Schattierungsprogramm assoziiert ist, einem der SMs 4300 zugewiesen wird. In mindestens einem Ausführungsbeispiel empfängt die Planereinheit 4304 Aufgaben von der Arbeitsverteilungseinheit und verwaltet die Befehlsplanung für einen oder mehrere Thread-Blöcke, die SM 4300 zugeordnet sind. In mindestens einem Ausführungsbeispiel plant die Planereinheit 4304 Thread-Blöcke zur Ausführung als Warps paralleler Threads, wobei jedem Thread-Block mindestens ein Warp zugeordnet ist. In mindestens einem Ausführungsbeispiel führt jeder Warp Threads aus. In mindestens einem Ausführungsbeispiel verwaltet die Planereinheit 4304 eine Vielzahl verschiedener Thread-Blöcke, ordnet die Warps verschiedenen Thread-Blöcken zu und sendet dann während jedes Taktzyklus Befehle von einer Vielzahl verschiedener kooperativer Gruppen an verschiedene Funktionseinheiten (z.B. Verarbeitungskerne 4310, SFUs 4312 und LSUs 4314). 43 12 shows a streaming multiprocessor ("SM") 4300, according to at least one embodiment. In at least one embodiment, SM 4300 is the SM of 41 . In at least one embodiment, SM 4300 includes, without limitation, instruction cache 4302; one or more scheduler units 4304; a register file 4308; one or more processing cores (“Cores”) 4310; one or more Special Function Units (“SFUs”) 4312; one or more load/store units ("LSUs") 4314; an interconnection network 4316; a shared memory/level 1 ("L1") cache 4318; and any suitable combination thereof. In at least one embodiment, a work distribution unit distributes tasks for execution across general processing clusters ("GPCs") of parallel processing units ("PPUs"), with each task associated with a particular data processing cluster ("DPC") within a GPC and, if the task is associated with a shader program , assigned to one of the SMs 4300. In at least one embodiment, scheduler unit 4304 receives tasks from the work distribution unit and manages instruction scheduling for one or more thread blocks associated with SM 4300. In at least one embodiment, scheduler unit 4304 schedules thread blocks for execution as parallel thread warps, with each thread block having at least one warp associated therewith. In at least one embodiment, each warp executes threads. In at least one embodiment, scheduler unit 4304 manages a variety of different thread blocks, assigns the warps to different thread blocks, and then dispatches instructions from a variety of different cooperative groups to different functional units (e.g., processing cores 4310, SFUs 4312, and LSUs 4314) during each clock cycle. .

In mindestens einem Ausführungsbeispiel können sich kooperative Gruppen (engl. Cooperative Groups) auf ein Programmiermodell zur Organisation von Gruppen von kommunizierenden Threads beziehen, das es Entwicklern ermöglicht, die Granularität, mit der die Threads kommunizieren, anzugeben, was den Entwurf reichhaltigerer, effizienterer paralleler Zerlegungen ermöglicht. In mindestens einem Ausführungsbeispiel unterstützen kooperative Start-APIs die Synchronisierung zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In mindestens einem Ausführungsbeispiel sind Anwendungen konventioneller Programmiermodelle ein einziges, einfaches Konstrukt für die Synchronisierung kooperierender Threads bereitgestellt: eine Barriere über alle Threads eines Thread-Blocks (z.B. die syncthreads( ) Funktion). In mindestens einem Ausführungsbeispiel können Programmierer jedoch Gruppen von Threads mit einer Granularität definieren, die kleiner als die eines Thread-Blocks ist, und sich innerhalb der definierten Gruppen synchronisieren, um eine größere Leistung, Designflexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen. In mindestens einem Ausführungsbeispiel ermöglichen kooperative Gruppen es Programmierern, Gruppen von Threads explizit auf Sub-Block- (d.h. so klein wie ein einzelner Thread) und Multi-Block-Granularitäten zu definieren und kollektive Operationen wie die Synchronisation von Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Komposition über Software-Grenzen hinweg, so dass Bibliotheken und Utility-Funktionen sicher innerhalb ihres lokalen Kontexts synchronisiert werden können, ohne Annahmen über Konvergenz treffen zu müssen. In mindestens einem Ausführungsbeispiel ermöglichen die Primitive der kooperativen Gruppe neue Muster der kooperativen Parallelität, einschließlich, ohne Einschränkung, der Parallelität zwischen Hersteller und Verbraucher, der opportunistischen Parallelität und der globalen Synchronisierung über ein ganzes Gitter von Thread-Blöcken hinweg.In at least one embodiment, cooperative groups can refer to a programming model for organizing groups of communicating threads that allows developers to specify the granularity at which the threads communicate, allowing for the design of richer, more efficient parallel decompositions allows. In at least one embodiment, cooperative launch APIs support synchronization between thread blocks for executing parallel algorithms. In at least one embodiment, applications of conventional programming models are provided with a single, simple construct for synchronizing cooperating threads: a barrier across all threads of a thread block (eg, the syncthreads( ) function). However, in at least one embodiment, programmers can define groups of threads with a granularity smaller than that of a thread block and synchronize within the defined groups to provide greater performance, design flexibility, and software reuse in the form of collective group-wide functional interfaces enable. In at least one embodiment, cooperative groups allow programmers to explicitly define groups of threads at sub-block (ie, as small as a single thread) and multi-block granularities and perform collective operations such as synchronizing threads in a cooperative group. The programming model supports clean composition across software boundaries, allowing libraries and utility functions to be safely synchronized within their local context without making assumptions about convergence. In at least one embodiment, the cooperative set primitives enable new patterns of cooperative parallelism, including, without limitation, producer-consumer parallelism, opportunistic parallelism, and global synchronization across an entire lattice of thread blocks.

In mindestens einem Ausführungsbeispiel ist eine Verteilungseinheit 4306 so konfiguriert, dass sie Instruktionen an eine oder mehrere Funktionseinheiten überträgt, und die Planereinheit 4304 umfasst, ohne Einschränkung, zwei Verteilungseinheiten 4306, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Instruktionen aus derselben Kette zu planen. In mindestens einem Ausführungsbeispiel umfasst jede Planereinheit 4304 eine einzelne Verteilungseinheit 4306 oder zusätzliche Verteilungseinheiten 4306.In at least one embodiment, dispatch unit 4306 is configured to dispatch instructions to one or more functional units, and scheduler unit 4304 includes, without limitation, two dispatch units 4306 that allow two different instructions from the same chain to be scheduled during each clock cycle. In at least one embodiment, each scheduler unit 4304 includes a single distribution unit 4306 or additional distribution units 4306.

In mindestens einem Ausführungsbeispiel umfasst jeder SM 4300 in mindestens einem Ausführungsbeispiel eine Registerdatei 4308, die einen Satz von Registern für funktionelle Einheiten des SM 4300 bereitstellt. In mindestens einem Ausführungsbeispiel ist die Registerdatei 4308 auf jede der Funktionseinheiten so aufgeteilt, dass jeder Funktionseinheit ein bestimmter Teil der Registerdatei 4308 zugeordnet ist. In mindestens einem Ausführungsbeispiel ist die Registerdatei 4308 auf verschiedene Warps aufgeteilt, die von SM 4300 ausgeführt werden, und die Registerdatei 4308 ist als temporärer Speicher für Operanden vorgesehen, die mit Datenpfaden von Funktionseinheiten verbunden sind. In mindestens einem Ausführungsbeispiel umfasst jeder SM 4300 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 4310. In mindestens einem Ausführungsbeispiel umfasst SM 4300, ohne Einschränkung, eine große Anzahl (z.B. 128 oder mehr) von unterschiedlichen Verarbeitungskernen 4310. In mindestens einem Ausführungsbeispiel umfasst jeder Verarbeitungskern 4310 in mindestens einem Ausführungsbeispiel ohne Einschränkung eine Verarbeitungseinheit mit vollständiger Pipeline, einfacher Präzision, doppelter Präzision und/oder gemischter Präzision, die ohne Einschränkung eine arithmetisch-logische Gleitkommaeinheit und eine arithmetisch-logische Ganzzahleinheit umfasst. In mindestens einem Ausführungsbeispiel implementieren Gleitkomma-Arithmetik-Logik-Einheiten den Standard IEEE 754-2008 für Gleitkomma-Arithmetik. In mindestens einem Ausführungsbeispiel umfassen die Verarbeitungskerne 4310 ohne Einschränkung 64 Gleitkomma-Kerne einfacher Genauigkeit (32-Bit), 64 ganzzahlige Kerne, 32 Gleitkomma-Kerne doppelter Genauigkeit (64-Bit) und 8 Tensor-Kerne.In at least one embodiment, each SM 4300 includes a register file 4308 that provides a set of registers for SM 4300 functional units. In at least one embodiment, register file 4308 is partitioned among each of the functional units such that each functional unit is allocated a specific portion of register file 4308. In at least one embodiment, register file 4308 is partitioned among various warps executed by SM 4300, and register file 4308 is provided as temporary storage for operands associated with functional unit data paths. In at least one embodiment, each SM 4300 includes, without limitation, a plurality of L processing cores 4310. In at least one embodiment, SM 4300 includes, without limitation, a large number (e.g., 128 or more) of different processing cores 4310. In at least one embodiment, each processing core 4310 includes in at least one embodiment, without limitation, a fully pipelined, single-precision, double-precision, and/or mixed-precision processing unit that includes, without limitation, a floating point arithmetic logic unit and an integer arithmetic logic unit. In at least one embodiment, floating point arithmetic logic units implement the IEEE 754-2008 standard for floating point arithmetic. In at least one embodiment, the processing cores 4310 include, without limitation, 64 single-precision (32-bit) floating-point cores, 64 integer cores, 32 double-precision (64-bit) floating-point cores, and 8 tensor cores.

Tensorkerne sind so konfiguriert, dass sie Matrixoperationen durchführen, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 4310 enthalten. In mindestens einem Ausführungsbeispiel sind die Tensorkerne so konfiguriert, dass sie Deep-Learning-Matrixarithmetik ausführen, wie z.B. Faltungsoperationen für das Training und Inferenzieren von neuronalen Netzen. In mindestens einem Ausführungsbeispiel arbeitet jeder Tensorkern auf einer 4x4-Matrix und führt eine Matrix-Multiplikations- und Akkumulationsoperation D = A X B + C aus, wobei A, B, C und D 4x4-Matrizen sind.Tensor cores are configured to perform matrix operations, according to at least one embodiment. In at least one embodiment, processing cores 4310 include one or more tensor cores. In at least one embodiment, the tensor cores are configured to perform deep learning matrix arithmetic, such as convolution operations for neural network training and inference. In at least one embodiment, each tensor core operates on a 4x4 matrix and performs a matrix multiplication and accumulation operation D = A X B + C, where A, B, C, and D are 4x4 matrices.

In mindestens einem Ausführungsbeispiel sind die Eingaben A und B für die Matrixmultiplikation 16-Bit-Gleitkomma-Matrizen und die Akkumulationsmatrizen C und D sind 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen. In mindestens einem Ausführungsbeispiel arbeiten die Tensorkerne mit 16-Bit-Gleitkomma-Eingangsdaten mit 32-Bit-Gleitkomma-Akkumulation. In mindestens einem Ausführungsbeispiel verwendet die 16-Bit-Gleitkomma-Multiplikation 64 Operationen und führt zu einem Produkt mit voller Genauigkeit, das dann unter Verwendung der 32-Bit-Gleitkomma-Addition mit anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. Tensorkerne werden verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen, die aus diesen kleineren Elementen aufgebaut sind, in mindestens einem Ausführungsbeispiel durchzuführen. In mindestens einem Ausführungsbeispiel stellt eine API, wie z.B. die CUDA 9 C++-API, spezielle Matrixlade-, Matrixmultiplikations- und -akkumulations- und Matrixspeicheroperationen bereit, um Tensorkerne aus einem CUDA-C++-Programm effizient zu verwenden. In mindestens einem Ausführungsbeispiel nimmt die Warp-Level-Schnittstelle auf CUDA-Ebene Matrizen der Größe 16x16 an, die alle 32 Threads des Warps umfassen.In at least one embodiment, the inputs A and B to the matrix multiplication are 16-bit floating point matrices and the accumulation matrices C and D are 16-bit floating point or 32-bit floating point matrices. In at least one embodiment, the tensor cores operate on 16-bit floating point input data with 32-bit floating point accumulation. In at least one embodiment, 16-bit floating point multiplication uses 64 operations and results in a full precision product, which is then combined using 32-bit floating point addition with other intermediate products is accumulated for a 4x4x4 matrix multiplication. Tensor cores are used to perform much larger two-dimensional or higher-dimensional matrix operations built from these smaller elements, in at least one embodiment. In at least one embodiment, an API, such as the CUDA 9 C++ API, provides special matrix loading, matrix multiplication and accumulation, and matrix storage operations to efficiently use tensor cores from a CUDA C++ program. In at least one embodiment, the CUDA-level warp-level interface accepts 16x16 arrays spanning all 32 threads of the warp.

In mindestens einem Ausführungsbeispiel umfasst jeder SM 4300 ohne Einschränkung M SFUs 4312, die spezielle Funktionen (z.B. Attributbewertung, reziproke Quadratwurzel u.ä.) erfüllen. In mindestens einem Ausführungsbeispiel umfassen die SFUs 4312, ohne Einschränkung, eine Einheit zur Traversierung von Bäumen, die zum Durchlaufen einer hierarchischen Baumdatenstruktur konfiguriert ist. In mindestens einem Ausführungsbeispiel umfassen die SFUs 4312 ohne Einschränkung eine Textur-Einheit, die so konfiguriert ist, dass sie Texturkarten-Filteroperationen durchführt. In mindestens einem Ausführungsbeispiel sind die Textureinheiten so konfiguriert, dass sie Texturkarten (z.B. ein 2D-Array von Texeln) aus dem Speicher laden, und Texturkarten abtasten, um abgetastete Texturwerte zur Verwendung in Schattierungsprogrammen zu erzeugen, die von SM 4300 ausgeführt werden. In mindestens einem Ausführungsbeispiel werden die Texturkarten im gemeinsamen Speicher/L1-Cache 4318 gespeichert. In mindestens einem Ausführungsbeispiel implementieren die Textureinheiten Texturoperationen wie z.B. Filteroperationen unter Verwendung von Mip-Maps (z.B. Texturkarten mit unterschiedlichem Detaillierungsgrad), gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst jeder SM 4300, ohne Einschränkung, zwei Textureinheiten.In at least one embodiment, each SM 4300 includes, without limitation, M SFUs 4312 that perform specific functions (e.g., attribute scoring, reciprocal square root, and the like). In at least one embodiment, SFUs 4312 include, without limitation, a tree traversal unit configured to traverse a hierarchical tree data structure. In at least one embodiment, without limitation, SFUs 4312 include a texture unit configured to perform texture map filtering operations. In at least one embodiment, the texture units are configured to load texture maps (e.g., a 2D array of texels) from memory and sample texture maps to generate sampled texture values for use in shading programs executed by SM 4300. In at least one embodiment, the texture maps are stored in shared memory/L1 cache 4318 . In at least one embodiment, the texture units implement texture operations, such as filtering operations, using mip-maps (e.g., texture maps with varying levels of detail), in accordance with at least one embodiment. In at least one embodiment, each SM 4300 includes, without limitation, two texture units.

Jeder SM 4300 umfasst, ohne Einschränkung, N LSUs 4314, die Lade- und Speicheroperationen zwischen gemeinsam genutztem Speicher/L1-Cache 4318 und der Registerdatei 4308 implementieren, gemäß mindestens einem Ausführungsbeispiel. Jeder SM 4300 umfasst, ohne Einschränkung, das Verbindungsnetzwerk 4316, das jede der Funktionseinheiten mit der Registerdatei 4308 und die LSU 4314 mit der Registerdatei 4308 verbindet, und den gemeinsam genutzten Speicher/L1-Cache 4318, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist das Verbindungsnetzwerk 4316 eine Crossbar, die so konfiguriert werden kann, dass sie jede der Funktionseinheiten mit jedem der Register in der Registerdatei 4308 und die LSUs 4314 mit der Registerdatei 4308 und den Speicherplätzen im gemeinsam genutzten Speicher/L1-Cache 4318 verbindet.Each SM 4300 includes, without limitation, N LSUs 4314 that implement load and store operations between shared memory/L1 cache 4318 and register file 4308, according to at least one embodiment. Each SM 4300 includes, without limitation, interconnection network 4316 connecting each of the functional units to register file 4308 and LSU 4314 to register file 4308, and shared memory/L1 cache 4318, according to at least one embodiment. In at least one embodiment, interconnection network 4316 is a crossbar that can be configured to connect each of the functional units to each of the registers in register file 4308 and the LSUs 4314 to register file 4308 and locations in shared memory/L1 cache 4318 connects.

In mindestens einem Ausführungsbeispiel ist der gemeinsam genutzte Speicher/L1-Cache 4318 ein Array von On-Chip-Speicher, der die Datenspeicherung und -kommunikation zwischen dem SM 4300 und der Primitiv-Engine sowie zwischen den Threads in dem SM 4300 ermöglicht, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst der gemeinsam genutzte Speicher/L1-Cache 4318 ohne Einschränkung 128 KB Speicherkapazität und befindet sich im Pfad vom SM 4300 zur Partitionseinheit. In mindestens einem Ausführungsbeispiel wird der gemeinsam genutzte Speicher/L1-Cache 4318 in mindestens einem Ausführungsbeispiel zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. In mindestens einem Ausführungsbeispiel sind einer oder mehrere von gemeinsam genutztem Speicher/L1-Cache 4318, L2-Cache und Speicher Zusatzspeicher.In at least one embodiment, shared memory/L1 cache 4318 is an array of on-chip memory that enables data storage and communication between SM 4300 and the primitive engine, and between threads within SM 4300, according to at least one embodiment an embodiment. In at least one embodiment, shared memory/L1 cache 4318 is, without limitation, 128 KB of storage capacity and is located in the path from SM 4300 to the partition unit. In at least one embodiment, shared memory/L1 cache 4318 is used to cache reads and writes. In at least one embodiment, one or more of shared memory/L1 cache 4318, L2 cache, and memory is backing memory.

Die Kombination der Funktionalitäten von Daten-Cache- und gemeinsam genutztem Speicher in einem einzigen Speicherblock stellt eine verbesserte Leistung für beide Arten von Speicherzugriffen bereit, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel wird eine Kapazität von Programmen, die keinen gemeinsam genutzten Speicher verwenden, als Cache genutzt oder ist als solcher nutzbar, z.B. wenn der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte der Kapazität nutzt, können Textur- und Lade-/Speicheroperationen die verbleibende Kapazität nutzen. Die Integration in einen gemeinsam genutzten Speicher/L1-Cache 4318 ermöglicht es dem gemeinsam genutzten Speicher/L1-Cache 4318, als Leitung mit hohem Durchsatz für einen Datenstrom zu fungieren und gleichzeitig Zugriffe mit hoher Bandbreite und geringer Latenz auf häufig wiederverwendete Daten bereitzustellen, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann, wenn sie für allgemeine parallele Berechnungen konfiguriert ist, eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In mindestens einem Ausführungsbeispiel werden Grafikverarbeitungseinheiten mit fester Funktionalität umgangen, wodurch ein wesentlich einfacheres Programmiermodell geschaffen wird. In einer allgemeinen Konfiguration für parallele Berechnungen weist die Arbeitsverteilungseinheit in mindestens einem Ausführungsbeispiel Blöcke von Threads direkt den DPCs zu und verteilt diese. In mindestens einem Schritt in mindestens einem Ausführungsbeispiel führen Threads in einem Block dasselbe Programm aus, wobei eine eindeutige Thread-ID bei der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 4300 zur Programmausführung und Durchführung von Berechnungen, der gemeinsam genutzte Speicher/L1-Cache 4318 zur Kommunikation zwischen Threads, und und die LSU 4314 zum Lesen und Schreiben des globalen Speichers über den gemeinsam genutzten Speicher/Ll-Cache 4318 und die Speicherpartitionseinheit verwendet werden. In mindestens einem Ausführungsbeispiel schreibt der SM 4300, wenn er für allgemeine parallele Berechnungen konfiguriert ist, Befehle, die die Planereinheit 4304 zum Starten neuer Arbeiten an DPCs verwenden kann.Combining the functionalities of data cache and shared memory in a single block of memory provides improved performance for both types of memory access, in accordance with at least one embodiment. In at least one embodiment, a capacity is or is usable as a cache by programs that do not use shared memory, e.g., if the shared memory is configured to use half the capacity, texture and load /memory operations use the remaining capacity. Integration with a shared memory/L1 cache 4318 allows the shared memory/L1 cache 4318 to act as a high-throughput conduit for a stream of data while providing high-bandwidth, low-latency access to frequently reused data, according to FIG at least one embodiment. In at least one embodiment, when configured for general parallel computations, a simpler configuration can be used compared to graphics processing. In at least one embodiment, fixed functionality graphics processing units are bypassed, providing a much simpler programming model. In a general configuration for parallel computations, in at least one embodiment, the work distribution unit allocates and distributes blocks of threads directly to the DPCs. In at least one step in at least one embodiment, threads in a block execute the same program using a unique thread ID in the computation to ensure that each thread produces unique results, with SM 4300 for program execution and performing computations, shared memory/L1 cache 4318 for inter-thread communication, and LSU 4314 for reading and writing global memory via shared memory/L1 -Cache 4318 and the memory partition unit are used. In at least one embodiment, when configured for general purpose parallel computations, SM 4300 writes instructions that scheduler unit 4304 can use to start new work on DPCs.

In mindestens einem Ausführungsbeispiel ist die PPU in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, einem Fahrzeug, einer am Kopf angebrachten Anzeige, einem tragbaren elektronischen Gerät und mehr enthalten oder mit diesen gekoppelt. In mindestens einem Ausführungsbeispiel ist die PPU auf einem einzigen Halbleitersubstrat ausgebildet. In mindestens einem Ausführungsbeispiel ist die PPU in einem System-on-a-Chip („SoC“) zusammen mit einem oder mehreren anderen Geräten wie zusätzlichen PPUs, Speicher, einer CPU mit reduziertem Befehlssatz („RISC“), einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler („DAC“) und ähnlichem enthalten.In at least one embodiment, the PPU is in a desktop computer, a laptop computer, a tablet computer, servers, supercomputers, a smartphone (e.g., a wireless handheld device), a personal digital assistant ("PDA"), a digital camera , a vehicle, a head-mounted display, a portable electronic device, and more. In at least one embodiment, the PPU is formed on a single semiconductor substrate. In at least one embodiment, the PPU resides in a system-on-a-chip (“SoC”) along with one or more other devices such as additional PPUs, memory, a reduced instruction set CPU (“RISC”), a memory management unit (“MMU ’), a digital-to-analog converter (‘DAC’) and the like.

In mindestens einem Ausführungsbeispiel kann die PPU auf einer Grafikkarte enthalten sein, die ein oder mehrere Speichergeräte umfasst. Die Grafikkarte kann so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf der Hauptplatine eines Desktop-Computers verbunden werden kann. In mindestens einem Ausführungsbeispiel kann die PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die im Chipsatz der Hauptplatine enthalten ist.In at least one embodiment, the PPU may be included on a graphics card that includes one or more memory devices. The graphics card can be configured to connect to a PCIe slot on a desktop computer motherboard. In at least one embodiment, the PPU may be an integrated graphics processing unit ("iGPU") included in the motherboard chipset.

Die Inferenz- und/oder Trainingslogik 1515 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1515 sind hier in Verbindung mit 15A und/oder 15B bereitgestellt. In mindestens einem Ausführungsbeispiel wird ein Deep-Learning-Anwendungsprozessor verwendet, um ein Modell eines maschinellen Lernens, wie z.B. ein neuronales Netzwerk, zu trainieren, um für SM 4300 bereitgestellte Informationen vorherzusagen oder abzuleiten. In mindestens einem Ausführungsbeispiel wird SM 4300 verwendet, um auf der Grundlage eines trainierten maschinellen Lernmodells (z.B. eines neuronalen Netzes), das von einem anderen Prozessor oder System oder von SM 4300 trainiert wurde, Informationen abzuleiten oder vorherzusagen. In mindestens einem Ausführungsbeispiel kann der SM 4300 verwendet werden, um einen oder mehrere der hier beschriebenen Anwendungsfälle neuronaler Netzwerke durchzuführen.Inference and/or training logic 1515 is used to perform inference and/or training operations associated with one or more embodiments. Details of the inference and/or training logic 1515 are in connection with here 15A and or 15B provided. In at least one embodiment, a deep learning application processor is used to train a machine learning model, such as a neural network, to predict or infer information provided to SM 4300 . In at least one embodiment, SM 4300 is used to infer or predict information based on a trained machine learning model (eg, a neural network) trained by another processor or system or by SM 4300 . In at least one embodiment, SM 4300 may be used to perform one or more of the neural network use cases described herein.

In mindestens einem Ausführungsbeispiel kann sich eine einzelne Halbleiterplattform auf einen einzigen einheitlichen integrierten Schaltkreis oder Chip auf Halbleiterbasis beziehen. In mindestens einem Ausführungsbeispiel können Multi-Chip-Module mit erhöhter Konnektivität verwendet werden, die einen On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer herkömmlichen Zentraleinheit („CPU“) und einer Bus-Implementierung aufweisen. In mindestens einem Ausführungsbeispiel können verschiedene Module auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen je nach Wunsch des Benutzers angeordnet werden.In at least one embodiment, a single semiconductor platform may refer to a single unitary semiconductor-based integrated circuit or chip. In at least one embodiment, multi-chip modules may be used with increased connectivity that simulate on-chip operation and provide significant improvements over the use of a traditional central processing unit ("CPU") and bus implementation. In at least one embodiment, different modules can also be arranged separately or in different combinations of semiconductor platforms as desired by the user.

In mindestens einem Ausführungsbeispiel werden Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Algorithmen der Computer-Steuerlogik im Hauptspeicher 2104 und/oder Sekundärspeicher gespeichert. Computerprogramme, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, ermöglichen es dem System 2100, gemäß mindestens einem Ausführungsbeispiel verschiedene Funktionen auszuführen. Speicher 2104, Speicher und/oder jeder andere Speicher sind mögliche Beispiele für computerlesbare Medien. In mindestens einem Ausführungsbeispiel kann sich sekundärer Speicher auf ein beliebiges geeignetes Speichergerät oder -system beziehen, wie z.B. ein Festplattenlaufwerk und/oder ein austauschbares Speicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Kompaktplattenlaufwerk, ein Laufwerk für DVDs, ein Aufzeichnungsgerät, einen USB-Flash-Speicher (Universal Serial Bus) usw. repräsentiert. In mindestens einem Ausführungsbeispiel sind die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Zusammenhang mit CPU 2102, dem Parallelverarbeitungssystem 2112, einem integrierten Schaltkreis, der mindestens einen Teil der Fähigkeiten beider CPU 2102 abdecken kann, dem Parallelverarbeitungssystem 2112, einem Chipsatz (z.B. eine Gruppe integrierter Schaltkreise, die als Einheit zur Ausführung verwandter Funktionen usw. konzipiert und verkauft werden) und einer beliebigen geeigneten Kombination integrierter Schaltkreise implementiert.In at least one embodiment, computer programs are stored in main memory 2104 and/or secondary storage in the form of machine-readable executable code or computer control logic algorithms. Computer programs, when executed by one or more processors, enable system 2100 to perform various functions, in accordance with at least one embodiment. Storage 2104, memory, and/or any other storage are possible examples of computer-readable media. In at least one embodiment, secondary storage may refer to any suitable storage device or system, such as a hard disk drive and/or removable storage drive, including a floppy disk drive, a magnetic tape drive, a compact disk drive, a DVD drive, a recording device, a USB flash memory (Universal Serial Bus), etc. In at least one embodiment, the architecture and/or functionality of various previous figures relating to CPU 2102, parallel processing system 2112, an integrated circuit that may provide at least a portion of the capabilities of both CPU 2102, parallel processing system 2112, a chipset (e.g., a group integrated circuits designed and sold as a unit to perform related functions, etc.) and any suitable combination of integrated circuits.

In mindestens einem Ausführungsbeispiel werden die Architektur und/oder Funktionalität verschiedener vorhergehender Figuren im Kontext eines allgemeinen Computersystems, eines Leiterplattensystems, eines Spielkonsolensystems für Unterhaltungszwecke, eines anwendungsspezifischen Systems und mehr implementiert. In mindestens einem Ausführungsbeispiel kann das Rechengerät 2100 die Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z.B. ein drahtloses, handgehaltenes Gerät), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer am Kopf angebrachten Anzeige, eines handgehaltenen elektronischen Geräts, eines Mobiltelefons, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder jeder anderen Art von Logik annehmen.In at least one embodiment, the architecture and/or functionality of various preceding figures are presented in the context of a general computing system, a circuit board system, implemented a game console system for entertainment purposes, an application specific system and more. In at least one embodiment, the computing device 2100 may take the form of a desktop computer, a laptop, a tablet computer, servers, supercomputers, a smartphone (eg, a wireless handheld device), a personal digital assistant ("PDA"), a digital camera, vehicle, head mounted display, handheld electronic device, cell phone, television, workstation, gaming console, embedded system and/or any other type of logic.

In mindestens einem Ausführungsbeispiel umfasst das Parallelverarbeitungssystem 2112, ohne Einschränkung, eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 2114 und assoziierte Speicher 2116. In mindestens einem Ausführungsbeispiel sind die PPUs 2114 über eine Verbindung (engl. interconnect) 2118 und einen Switch 2120 oder Multiplexer mit einem Host-Prozessor oder anderen peripheren Geräten verbunden. In mindestens einem Ausführungsbeispiel verteilt das Parallelverarbeitungssystem 2112 Rechenaufgaben auf die PPUs 2114, die parallelisierbar sein können, z.B. als Teil der Verteilung von Rechenaufgaben auf mehrere Thread-Blöcke der GPUs (Graphics Processing Unit). In mindestens einem Ausführungsbeispiel wird Speicher (z.B. für Lese- und/oder Schreibzugriff) über einige oder alle PPUs 2114 gemeinsam genutzt und zugänglich gemacht, obwohl ein solcher gemeinsam genutzter Speicher Leistungseinbußen in Bezug auf die Nutzung von lokalem Speicher und Registern, die in einer PPU 2114 resident sind, nach sich ziehen kann. In mindestens einem Ausführungsbeispiel wird der Betrieb der PPUs 2114 durch die Verwendung eines Befehls wie _syncthreads() synchronisiert, wobei alle Threads in einem Block (z.B. über mehrere PPUs 2114 hinweg ausgeführt werden), um vor dem Fortfahren einen bestimmten Punkt der Codeausführung zu erreichen.In at least one embodiment, the parallel processing system 2112 includes, without limitation, a plurality of parallel processing units ("PPUs") 2114 and associated memory 2116. In at least one embodiment, the PPUs 2114 are interconnected 2118 and a switch 2120 or multiplexer connected to a host processor or other peripheral devices. In at least one embodiment, the parallel processing system 2112 distributes compute tasks across the PPUs 2114, which may be parallelizable, e.g., as part of distributing compute tasks across multiple GPU (Graphics Processing Unit) thread blocks. In at least one embodiment, memory (e.g., for read and/or write access) is shared and made accessible across some or all PPUs 2114, although such shared memory incurs performance penalties relative to the use of local memory and registers resident in a PPU 2114 are resident. In at least one embodiment, the operation of the PPUs 2114 is synchronized through the use of an instruction such as _syncthreads(), where all threads execute in a block (e.g., across multiple PPUs 2114) to reach a certain point in code execution before continuing.

Andere Variationen befinden sich im Geiste der vorliegenden Offenbarung. So wurde, während die offenbarten Techniken verschiedenen Modifikationen und alternativen Konstruktionen unterliegen können, bestimmte illustrierte Ausführungsbeispiele davon in Zeichnungen gezeigt und oben im Detail beschrieben worden. Es sollte dabei jedoch verstanden werden, dass nicht beabsichtigt ist, die Offenbarung auf bestimmte offenbart Form(en) zu beschränken, sondern dass im Gegenteil beabsichtigt ist, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die sich im Geiste und Umfang der Offenbarung befinden, wie sie in den beigefügten Ansprüchen definiert sind.Other variations are within the spirit of the present disclosure. Thus, while the disclosed techniques are susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof have been shown in the drawings and described in detail above. It should be understood, however, that the disclosure is not intended to be limited to the particular form(s) disclosed, but on the contrary is intended to cover all modifications, alternative constructions, and equivalents as may come within the spirit and scope of the disclosure. as defined in the appended claims.

Die Verwendung der Begriffe „ein/e“ und „der/das/die“ und ähnlicher Verweise im Zusammenhang mit der Beschreibung offenbarer Ausführungsbeispiele (insbesondere im Zusammenhang mit folgenden Ansprüchen) ist so auszulegen, dass sie sowohl Singular als auch Plural umfasst, sofern hierin nicht anders angegeben oder durch den Kontext klar widersprochen wird, und nicht als Definition eines Begriffs. Die Begriffe „umfassen“, „haben“, „einschließen“ und „enthalten“ sind, sofern nicht anders angegeben, als unbeschränkte Begriffe (d.h. „einschließlich, aber nicht beschränkt auf“) auszulegen. Der Begriff „verbunden“ ist, wenn er sich auf physische Verbindungen bezieht und unverändert bleibt, als teilweise oder vollständig darin enthalten, daran angefügt oder miteinander verbunden auszulegen, selbst wenn etwas dazwischen liegt. Die Erwähnung von Wertebereichen in diesem Dokument dient als kurzes Verfahren zur individuellen Bezugnahme auf jeden einzelnen Wert, der in den Bereich fällt, es sei denn, es ist hierin anders angegeben und jeder einzelne Wert wird in die Beschreibung so aufgenommen, als ob er einzeln rezitiert würde. Die Verwendung des Terms „Satz“ (z.B. „ein Satz von Gegenständen“) oder „Teilsatz“ ist, sofern nicht anders angegeben oder im Kontext gegenteilig angegeben, als eine nicht leere Menge zu verstehen, die ein oder mehrere Elemente umfasst. Ferner bezeichnet der Term „Teilmenge“ eines entsprechenden Satzes, sofern nicht anders angegeben oder durch den Kontext widersprüchlich, nicht notwendigerweise eine echte Teilmenge der entsprechenden Menge, sondern Teilmenge und entsprechende Menge können gleich sein.The use of the terms "a" and "the" and similar references in connection with the description of disclosed example embodiments (particularly in connection with the following claims) should be construed to include both singular and plural where used herein unless otherwise indicated or clearly contradicted by the context, and not as a definition of a term. The terms "comprise", "have", "include" and "contain" shall be construed as having unlimited terms (i.e. "including but not limited to") unless otherwise specified. The term "connected," when referring to physical connections and remaining unaltered, shall be construed as partially or fully included, attached, or connected to each other, even if anything in between. The mention of ranges of values in this document is for a brief method of individually referencing each individual value that falls within the range, unless otherwise specified herein, and each individual value is incorporated into the specification as if recited individually would. The use of the term "set" (e.g. "a set of items") or "subset" is intended to mean a non-empty set comprising one or more elements, unless otherwise indicated or the context indicates otherwise. Further, unless otherwise indicated or contradicted by context, the term "subset" of a corresponding set does not necessarily mean a true subset of the corresponding set, but subset and corresponding set may be the same.

Konjunktive Sprache, wie z.B. Ausdrücke der Form „mindestens eines von A, B und C“ oder „mindestens eines von A, B und C“, wird, sofern nicht ausdrücklich anders angegeben oder anderweitig durch den Kontext klar widersprochen wird, ansonsten so verstanden, wie sie im Kontext im Allgemeinen verwendet wird, um diesen Gegenstand, Term usw. darzustellen, kann entweder A oder B oder C oder irgendein nicht leerer Teilsatz von Satz von A und B und C sein. Zum Beispiel, in einem illustrativen Beispiel eines Satzes mit drei Mitgliedern, beziehen sich Konjunktivsätze „mindestens einer von A, B und C“ und „mindestens einer von A, B und C“ auf irgendeinen der folgenden Sätze: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Eine solche Konjunktivsprache soll also im Allgemeinen nicht implizieren, dass für bestimmte Ausführungsbeispiele jeweils mindestens eines von A, mindestens eines von B und mindestens eines von C vorhanden sein muss. Sofern nicht anders angegeben oder durch den Kontext gegenteilig angegeben, bezeichnet der Term „Vielzahl“ außerdem einen Zustand der Pluralität (z.B. bezeichnet „eine Vielzahl von Elementen“ mehrere Elemente). Die Anzahl der Elemente in einer Vielzahl beträgt mindestens zwei, kann aber mehr sein, wenn dies entweder explizit oder durch den Kontext angegeben wird. Sofern nicht anders angegeben oder anderweitig aus dem Kontext klar hervorgeht, bedeutet weiter die Formulierung „basierend auf“ „zumindest teilweise basierend auf“ und nicht „ausschließlich basierend auf“.Subjunctive language, such as phrases of the form "at least one of A, B and C" or "at least one of A, B and C", unless expressly stated otherwise or otherwise clearly contradicted by the context, is otherwise understood to mean as the context generally uses to represent that item, term, etc., can be either A or B or C or any non-empty subset of the set of A and B and C. For example, in an illustrative example of a three-member clause, subjunctive clauses "at least one of A, B, and C" and "at least one of A, B, and C" refer to any of the following clauses: {A}, {B} , {C}, {A, B}, {A, C}, {B, C}, {A, B, C}. Such a subjunctive language should therefore generally not imply that at least one of A, at least one of B and at least one of C must be present for certain exemplary embodiments. Also, unless otherwise indicated or otherwise indicated by context, the term "plurality" denotes a state of plurality (e.g., "a plurality of elements" denotes multiple elements). The number of elements in a multitude is at least two, but may be more if so specified either explicitly or by context. Further, unless otherwise stated or otherwise clear from the context, the phrase "based on" means "based at least in part on" and not "based solely on."

Der Betrieb der hier beschriebenen Prozesse kann in beliebiger geeigneter Reihenfolge durchgeführt werden, es sei denn, es ist hierin anders angegeben oder im Kontext eindeutig gegenteilig beschrieben. In mindestens einem Ausführungsbeispiel wird ein Prozeß wie die hier beschriebenen Prozesse (oder Varianten und/oder Kombinationen davon) unter der Steuerung eines oder mehrerer Computersysteme ausgeführt, die mit ausführbaren Befehlen konfiguriert sind, und als Code (z.B. ausführbare Befehle, ein oder mehrere Computerprogramme oder eine oder mehrere Anwendungen) implementiert, der gemeinsam auf einem oder mehreren Prozessoren, durch Hardware oder Kombinationen davon ausgeführt wird. In mindestens einem Ausführungsbeispiel ist der Code auf einem computerlesbaren Speichermedium gespeichert, z.B. in Form eines Computerprogramms, das eine Vielzahl von Befehlen umfasst, die von einem oder mehreren Prozessoren ausführbar sind. In mindestens einem Ausführungsbeispiel ist ein computerlesbares Speichermedium ein nichtflüchtiges computerlesbares Speichermedium, das flüchtige Signale (z.B. eine sich ausbreitende transiente elektrische oder elektromagnetische Übertragung) ausschließt, aber eine nichtflüchtige Schaltungsanordnung zur Datenspeicherung (z.B. Puffer, Cache und Warteschlangen) innerhalb von Sende-Empfängern für flüchtige Signale umfasst. In mindestens einem Ausführungsbeispiel wird Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz von einem oder mehreren nichtflüchtigen computerlesbaren Speichermedien gespeichert, auf denen ausführbare Befehle (oder ein anderer Speicher zur Speicherung ausführbarer Befehle) gespeichert sind, die bei ihrer Ausführung (d.h. als Ergebnis ihrer Ausführung) durch einen oder mehrere Prozessoren eines Computersystems bewirken, dass das Computersystem die hier beschriebenen Operationen ausführt. Satz nichtflüchtiger computerlesbarer Speichermedien umfasst in mindestens einem Ausführungsbeispiel mehrere nichtflüchtige computerlesbare Speichermedien, und einem oder mehreren einzelnen nichtflüchtigen Speichermedien mehrerer nichtflüchtiger computerlesbarer Speichermedien fehlt der gesamte Code, während mehrere nichtflüchtige computerlesbare Speichermedien gemeinsam den gesamten Code speichern. In mindestens einem Ausführungsbeispiel werden ausführbare Befehle so ausgeführt, dass verschiedene Befehle von verschiedenen Prozessoren ausgeführt werden - z.B. speichert ein nichtflüchtiges computerlesbares Speichermedium Befehle und eine Hauptzentraleinheit („CPU“) führt einen Teil der Befehle aus, während eine Grafikverarbeitungseinheit („GPU“) andere Befehle ausführt. In mindestens einem Ausführungsbeispiel haben verschiedene Komponenten eines Computersystems separate Prozessoren, und verschiedene Prozessoren führen verschiedene Untergruppen von Befehlen aus.Operation of the processes described herein may be performed in any suitable order, unless otherwise indicated herein or unless context clearly indicates the contrary. In at least one embodiment, a process such as the processes described herein (or variants and/or combinations thereof) is executed under the control of one or more computer systems configured with executable instructions and executed as code (e.g., executable instructions, one or more computer programs, or one or more applications) running collectively on one or more processors, by hardware, or combinations thereof. In at least one embodiment, the code is stored on a computer-readable storage medium, e.g., in the form of a computer program comprising a plurality of instructions executable by one or more processors. In at least one embodiment, a computer-readable storage medium is a non-transitory computer-readable storage medium that excludes transient signals (e.g., propagated transient electrical or electromagnetic transmission), but includes non-volatile data storage circuitry (e.g., buffers, cache, and queuing) within transceivers for volatile includes signals. In at least one embodiment, code (e.g., executable code or source code) is stored on a set of one or more non-transitory computer-readable storage media storing executable instructions (or other memory for storing executable instructions) that, when executed (i.e., as a result their execution) by one or more processors of a computer system cause the computer system to perform the operations described herein. Set of non-transitory computer-readable storage media, in at least one embodiment, includes multiple non-transitory computer-readable storage media, and one or more individual non-transitory storage media of multiple non-transitory computer-readable storage media lacks all code, while multiple non-transitory computer-readable storage media collectively store all code. In at least one embodiment, executable instructions are executed such that different instructions are executed by different processors - e.g., a non-transitory computer-readable storage medium stores instructions, and a main central processing unit ("CPU") executes some of the instructions, while a graphics processing unit ("GPU") executes others executes commands. In at least one embodiment, different components of a computer system have separate processors, and different processors execute different subsets of instructions.

Dementsprechend sind Computersysteme in mindestens einem Ausführungsbeispiel so konfiguriert, dass sie einen oder mehrere Dienste implementieren, die einzeln oder kollektiv Operationen der hier beschriebenen Prozesse durchführen, und solche Computersysteme sind mit geeigneter Hardware und/oder Software konfiguriert, die die Durchführung von Operationen ermöglichen. Ferner ist ein Computersystem, das mindestens ein Ausführungsbeispiel der vorliegenden Offenbarung implementiert, ein einzelnes Gerät und in einem anderen Ausführungsbeispiel ein verteiltes Computersystem, das mehrere Geräte umfasst, die unterschiedlich arbeiten, so dass das verteilte Computersystem die hier beschriebenen Operationen durchführt und ein einzelnes Gerät nicht alle Operationen durchführt.Accordingly, in at least one embodiment, computer systems are configured to implement one or more services that individually or collectively perform operations of the processes described herein, and such computer systems are configured with appropriate hardware and/or software that enable operations to be performed. Furthermore, a computer system that implements at least one embodiment of the present disclosure is a single device, and in another embodiment, a distributed computer system that includes multiple devices that operate differently such that the distributed computer system performs the operations described herein and a single device does not performs all operations.

Die Verwendung von Beispielen oder beispielhaften Formulierungen (z.B. „so wie“) dient lediglich der besseren Veranschaulichung von Ausführungsbeispielen der Offenbarung und stellt keine Beschränkung des Umfangs der Offenbarung dar, sofern nichts Gegenteiliges angegeben ist. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass sie irgendein beliebiges nicht beanspruchtes Element als wesentlich für die Ausführungspraxis der Offenbarung bezeichnet.The use of examples or exemplary language (e.g., "such as") is intended solely to better illustrate embodiments of the disclosure and should not be construed as a limitation on the scope of the disclosure unless otherwise noted. Nothing in the specification should be construed as identifying any non-claimed element as essential to the practice of the disclosure.

Alle hierin zitierten Verweise, einschließlich Publikationen, Patentanmeldungen und Patente, sind hiermit hiermit im gleichen Umfang durch Verweis einbezogen, als ob jeder Verweis einzeln und spezifisch als durch Verweis einbezogen angegeben wäre und in seiner Gesamtheit wiedergegeben wäre.All references cited herein, including publications, patent applications and patents, are hereby incorporated by reference to the same extent as if each reference were individually and specifically stated as incorporated by reference and reproduced in its entirety.

In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es ist zu verstehen, dass diese Begriffe nicht als Synonyme füreinander gedacht sein können. Vielmehr können in einzelnen Beispielen die Begriffe „verbunden“ oder „gekoppelt“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente in direktem oder indirektem physischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann auch bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch miteinander kooperieren oder interagieren können. In the specification and claims, the terms "coupled" and "connected," along with their derivatives, may be used. It is to be understood that these terms are not intended as synonyms for each other. Rather, in particular examples, the terms "connected" or "coupled" may be used to indicate that two or more elements are in direct or indirect physical or electrical contact with one another. "Coupled" can also mean that two or more elements are not in direct contact with each other, but can still cooperate or interact with each other.

Sofern nicht ausdrücklich anders angegeben, ist zu verstehen, dass sich in der gesamten Beschreibung Begriffe wie „Verarbeiten“, „Rechnen“, „Berechnen“, „Bestimmen“ oder ähnliches auf Aktionen und/oder Prozesse eines Computers oder Rechnersystems oder eines ähnlichen elektronischen Rechengeräts beziehen, die Daten, die als physikalische, z.B. elektronische, Größen in den Registern und/oder Speichern des Rechensystems repräsentiert werden, manipulieren und/oder in andere Daten transformieren, die ähnlich als physikalische Größen in den Speichern, Registern oder anderen derartigen Geräten zur Speicherung, Übertragung oder Anzeige von Informationen repräsentiert werden.Unless expressly stated otherwise, it is to be understood that throughout the specification, terms such as "processing", "computing", "calculating", "determining" or the like refer to the actions and/or processes of a computer or computer system or similar electronic computing device that manipulate and/or transform data represented as physical, e.g. electronic, quantities in the registers and/or memories of the computing system into other data that are similar to physical quantities in the memories, registers or other such devices for storage , transmission or display of information.

In ähnlicher Weise kann sich der Ausdruck „Prozessor“ auf ein beliebiges Gerät oder einen beliebigen Teil eines Geräts beziehen, das elektronische Daten aus Registern und/oder Speicher verarbeitet und diese elektronischen Daten in andere elektronische Daten umwandelt, die in Registern und/oder Speicher gespeichert werden können. Als nicht einschränkende Beispiele kann „Prozessor“ eine CPU oder eine GPU sein. Eine „Rechenplattform“ kann einen oder mehrere Prozessoren umfassen. Wie hierin verwendet, können „Software“-Prozesse beispielsweise Software- und/oder Hardware-Einheiten umfassen, die im Laufe der Zeit Arbeit ausführen, wie Aufgaben, Threads und intelligente Bearbeitungsprogramme. Außerdem kann sich jeder Prozess auf mehrere Prozesse beziehen, um Befehle in Sequenz oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hier insofern austauschbar verwendet, als System ein oder mehrere Verfahren verkörpern kann und Verfahren als System betrachtet werden können.Similarly, the term “processor” may refer to any device or part of a device that processes electronic data from registers and/or memory and converts that electronic data into other electronic data that is stored in registers and/or memory can become. As non-limiting examples, "processor" can be a CPU or a GPU. A "computing platform" may include one or more processors. As used herein, "software" processes may include, for example, software and/or hardware entities that perform work over time, such as tasks, threads, and intelligent handlers. Also, each process can refer to multiple processes to execute commands in sequence or in parallel, continuously or intermittently. The terms "system" and "method" are used interchangeably herein in that system can embody one or more methods and methods can be considered as a system.

In diesem Dokument kann auf die Beschaffung, den Erwerb, den Empfang oder die Eingabe von analogen oder digitalen Daten in ein Subsystem, Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. Der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens von analogen und digitalen Daten kann auf verschiedene Weise durchgeführt werden, z.B. durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger oder digitaler Daten durch Übertragung von Daten über eine serielle oder parallele Schnittstelle erfolgen. In einer anderen Implementierung kann der Prozess des Erhaltens, Erfassens, Empfangens oder Eingebens analoger oder digitaler Daten durch die Übertragung von Daten über ein Computernetzwerk von der bereitstellenden Entität zur empfangenden Entität durchgeführt werden. Es kann auch auf das Bereitstellen, Ausgeben, Übertragen, Senden oder Darstellen analoger oder digitaler Daten Bezug genommen werden. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Darstellens analoger oder digitaler Daten durch die Übertragung von Daten als Eingabe- oder Ausgabeparameter eines Funktionsaufrufs, als Parameter einer Anwendungsprogrammierschnittstelle oder eines Interprozesskommunikationsmechanismus erreicht werden.This document may refer to the acquisition, acquisition, receipt, or input of analog or digital data into a subsystem, computer system, or computer-implemented machine. The process of obtaining, capturing, receiving, or inputting analog and digital data can be performed in a variety of ways, such as receiving data as a parameter of a function call or an application programming interface call. In some implementations, the process of obtaining, capturing, receiving, or inputting analog or digital data may be accomplished by transmitting data over a serial or parallel interface. In another implementation, the process of obtaining, gathering, receiving, or inputting analog or digital data may be performed by the transmission of data over a computer network from the providing entity to the receiving entity. It may also refer to the provision, output, transmission, broadcast, or presentation of analog or digital data. In various examples, the process of providing, outputting, transferring, sending, or representing analog or digital data may be accomplished by transferring data as an input or output parameter of a function call, as a parameter of an application programming interface, or as an interprocess communication mechanism.

Obwohl in der obigen Diskussion beispielhafte Implementierungen der beschriebenen Techniken aufgeführt sind, können zur Implementierung der beschriebenen Funktionalität auch andere Architekturen verwendet werden, die unter den Umfang dieser Offenbarung fallen sollen. Darüber hinaus können verschiedene Funktionen und Verantwortlichkeiten je nach den Umständen auf unterschiedliche Weise verteilt und aufgeteilt werden, obwohl oben für die Zwecke der Diskussion spezifische Beschreibungen der Verantwortlichkeiten definiert wurden.Although the above discussion provides example implementations of the described techniques, other architectures may be used to implement the described functionality and are intended to be within the scope of this disclosure. In addition, although specific descriptions of responsibilities have been defined above for purposes of discussion, various roles and responsibilities may be distributed and divided in different ways depending on the circumstances.

Claims (27)

Computerimplementiertes Verfahren, umfassend: Bestimmen (1406), aus einem Bild einer Hand (102, 106, 110, 114, 802-817), einer ersten Pose (702) der Hand; Übersetzen (1408) der ersten Pose (702) der Hand (102, 106, 110, 114, 802-817) in eine entsprechende zweite Pose einer Roboterhand (104, 108, 112, 116, 204, 704, 818-833), Bestimmen (1410) eines Satzes von Bewegungen, der die Roboterhand (104, 108, 112, 116, 204, 704, 818-833) von einer ersten Pose der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) in die zweite Pose umstellt; Veranlassen (1412) der Roboterhand (104, 108, 112, 116, 204, 704, 818-833), den Satz von Bewegungen auszuführen; und kinematisches Nachstellen (314) der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) durch Minimieren einer Kostenfunktion, welche zumindest auf Vektoren, die von primären Fingern (406, 408, 410) der Hand (102, 106, 110, 114, 802-817) ausgehen und auf den Daumen (412) der Hand (102, 106, 110, 114, 802-817) zeigen, und Vektoren, die zwischen den primären Fingern (406, 408, 410) der Hand (102, 106, 110, 114, 802-817) verlaufen, basiert.Computer-implemented method, comprising: determining (1406), from an image of a hand (102, 106, 110, 114, 802-817), a first pose (702) of the hand; translating (1408) the first pose (702) of the hand (102, 106, 110, 114, 802-817) into a corresponding second pose of a robot hand (104, 108, 112, 116, 204, 704, 818-833), determining (1410) a set of motions that converts the robot hand (104, 108, 112, 116, 204, 704, 818-833) from a first pose of the robot hand (104, 108, 112, 116, 204, 704, 818- 833) switched to the second pose; causing (1412) the robotic hand (104, 108, 112, 116, 204, 704, 818-833) to perform the set of motions; and kinematic adjustment (314) of the robotic hand (104, 108, 112, 116, 204, 704, 818-833) by minimizing a cost function which is based at least on vectors derived from primary fingers (406, 408, 410) of the hand (102, 106, 110, 114, 802-817) pointing to the thumb (412) of the hand (102, 106, 110, 114, 802-817), and vectors pointing between the primary fingers (406, 408, 410) of the hand (102, 106, 110, 114, 802-817). Computerimplementiertes Verfahren nach Anspruch 1, weiter umfassend: Erhalten (1402) des Bildes von einer Tiefenkamera; Bestimmen (1404) einer Punktwolke der Hand (102, 106, 110, 114, 802-817) aus dem Bild; und Bestimmen (1406) der ersten Pose (702) der Hand (102, 106, 110, 114, 802-817) aus der Punktwolke.Computer-implemented method claim 1 , further comprising: obtaining (1402) the image from a depth camera; determining (1404) a point cloud of the hand (102, 106, 110, 114, 802-817) from the image; and determining (1406) the first pose (702) of the hand (102, 106, 110, 114, 802-817) from the point cloud. Computerimplementiertes Verfahren nach Anspruch 2, wobei: die Tiefenkamera eine RGB-Tiefenkamera (302), ein Radarbildgerät, ein medizinisches Bildgebungssystem oder ein LIDAR-System ist.Computer-implemented method claim 2 , wherein: the depth camera is an RGB depth camera (302), a radar imager, a medical imaging system, or a LIDAR system. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei: die erste Pose (702) der Hand (102, 106, 110, 114, 802-817) Informationen umfasst, die die Position jedes von fünf Fingern (404, 406, 408, 410, 412) der Hand (102, 106, 110, 114, 802-817) identifizieren; und die erste Pose (702) der Hand (102, 106, 110, 114, 802-817) Informationen umfasst, die eine oder mehrere Positionen von Gelenken der Hand (102, 106, 110, 114, 802-817) identifizieren.A computer-implemented method according to any one of the preceding claims, wherein: the first pose (702) of the hand (102, 106, 110, 114, 802-817) includes information identifying the position of each of five fingers (404, 406, 408, 410, 412) of the hand (102, 106, 110 , 114, 802-817); and the first pose (702) of the hand (102, 106, 110, 114, 802-817) includes information identifying one or more positions of joints of the hand (102, 106, 110, 114, 802-817). Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei: die erste Pose (702) in die zweite Pose übersetzt wird, indem zumindest eine kinematische Neuausrichtung (314) von Gelenkwinkeln ausgeführt wird; und die Gelenkwinkel zumindest teilweise basierend auf der ersten Pose (702) bestimmt werden.A computer-implemented method according to any one of the preceding claims, wherein: translating the first pose (702) to the second pose by performing at least one kinematic realignment (314) of joint angles; and the joint angles are determined based at least in part on the first pose (702). Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Satz von Bewegungen mit Hilfe von Riemann'schen Bewegungsrichtlinien bestimmt wird.A computer-implemented method according to any one of the preceding claims, wherein the set of motions is determined using Riemannian motion rules. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Roboterhand (104, 108, 112, 116, 204, 704, 818-833) eine bewegliche Roboterhand, ein Robotergreifer oder eine Sonde ist.A computer-implemented method as claimed in any preceding claim, wherein the robotic hand (104, 108, 112, 116, 204, 704, 818-833) is a movable robotic hand, a robotic gripper or a probe. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei: die Roboterhand (104, 108, 112, 116, 204, 704, 818-833) einen oder mehrere Berührungssensoren (216, 218, 220, 222) umfasst, die taktile Sensorinformationen bereitstellen; und die Informationen des/der taktilen Sensors/Sensoren (216, 218, 220, 222) ein 2-dimensionales Array von Kraftwerten für einen Finger der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) umfassen.A computer-implemented method according to any one of the preceding claims, wherein: the robotic hand (104, 108, 112, 116, 204, 704, 818-833) includes one or more touch sensors (216, 218, 220, 222) that provide tactile sensory information; and the information from the tactile sensor(s) (216, 218, 220, 222) comprises a 2-dimensional array of force values for a finger of the robot hand (104, 108, 112, 116, 204, 704, 818-833). System, umfassend: einen oder mehrere Prozessoren (2102); und einen computerlesbaren Speicher (2104), der ausführbare Befehle speichert, die bei Ausführung durch einen oder mehrere Prozessoren (2102) das System (2100) veranlassen, zum: Bestimmen (1406), aus einem Bild eines Gliedmaßes (102, 106, 110, 114, 802-817), das eine Aufgabe ausführt, einer ersten Pose (702) des Gliedmaßes (102, 106, 110, 114, 802-817); Bestimmen (1408) einer zweiten Pose für einen Robotergreifer (104, 108, 112, 116, 204, 704, 818-833), die zumindest teilweise auf der ersten Pose (702) des Gliedmaßes (102, 106, 110, 114, 802-817) basiert; Bestimmen (1410) eines Satzes von Bewegungen, der den Robotergreifer (104, 108, 112, 116, 204, 704, 818-833) von einer ersten Pose des Robotergreifers (104, 108, 112, 116, 204, 704, 818-833) in die zweite Pose umstellt; Ausführen (1412) des Satzes von Bewegungen, um den Robotergreifer (104, 108, 112, 116, 204, 704, 818-833) in der zweiten Pose zu positionieren, um den Robotergreifer (104, 108, 112, 116, 204, 704, 818-833) zur Ausführung der Aufgabe zu veranlassen; und kinematisches Nachstellen (314) des Robotergreifers (104, 108, 112, 116, 204, 704, 818-833) durch Minimieren einer Kostenfunktion, welche zumindest auf Vektoren, die von primären Fingern (406, 408, 410) der Gliedmaße (102, 106, 110, 114, 802-817) ausgehen und auf den Daumen (412) der Gliedmaße (102, 106, 110, 114, 802-817) zeigen, und Vektoren, die zwischen den primären Fingern (406, 408, 410) der Gliedmaße (102, 106, 110, 114, 802-817) verlaufen, basiert.System comprising: one or more processors (2102); and a computer-readable memory (2104) storing executable instructions that, when executed by one or more processors (2102), cause the system (2100) to: determining (1406), from an image of a limb (102, 106, 110, 114, 802-817) performing a task, a first pose (702) of the limb (102, 106, 110, 114, 802-817) ; Determining (1408) a second pose for a robot gripper (104, 108, 112, 116, 204, 704, 818-833) based at least in part on the first pose (702) of the limb (102, 106, 110, 114, 802 -817) based; determining (1410) a set of motions that will move the robot gripper (104, 108, 112, 116, 204, 704, 818-833) from a first pose of the robot gripper (104, 108, 112, 116, 204, 704, 818- 833) switched to the second pose; performing (1412) the set of movements to position the robot gripper (104, 108, 112, 116, 204, 704, 818-833) in the second pose to position the robot gripper (104, 108, 112, 116, 204, 704, 818-833) to perform the task; and kinematically adjusting (314) the robot gripper (104, 108, 112, 116, 204, 704, 818-833) by minimizing a cost function based at least on vectors derived from primary fingers (406, 408, 410) of the limb (102, 106, 110, 114, 802-817) pointing to the thumb (412) of the limb (102, 106, 110, 114, 802-817), and vectors pointing between the primary fingers (406, 408, 410) of the limbs (102, 106, 110, 114, 802-817). System nach Anspruch 9, wobei die ausführbaren Befehle das System weiter veranlassen, zum: Erzeugen (1404) einer Punktwolke aus dem Bild des Gliedmaßes (102, 106, 110, 114, 802-817); und Bestimmen (1406) der ersten Pose (702) aus der Punktwolke.system after claim 9 wherein the executable instructions further cause the system to: generate (1404) a point cloud from the image of the limb (102, 106, 110, 114, 802-817); and determining (1406) the first pose (702) from the point cloud. System nach Anspruch 9 oder 10, wobei der Satz von Bewegungen in Übereinstimmung mit Riemann'schen Bewegungsrichtlinien durchgeführt wird.system after claim 9 or 10 , where the set of motions is performed in accordance with Riemannian motion rules. System nach einem der Ansprüche 9 bis 11, wobei das Gliedmaß (102, 106, 110, 114, 802-817) eine menschliche Hand oder ein menschlicher Fuß ist.system according to one of the claims 9 until 11 , wherein the limb (102, 106, 110, 114, 802-817) is a human hand or foot. System nach einem der Ansprüche 9 bis 12, wobei die ausführbaren Befehle das System (2100) veranlassen, weiter einen Skalierungsfaktor auf die erste Pose (702) des Gliedes anzuwenden, um die zweite Pose des Robotergreifers (104, 108, 112, 116, 204, 704, 818-833) zu bestimmen.system according to one of the claims 9 until 12 wherein the executable instructions cause the system (2100) to further apply a scaling factor to the first pose (702) of the limb to scale the second pose of the robot gripper (104, 108, 112, 116, 204, 704, 818-833). determine. System nach einem der Ansprüche 9 bis 13, wobei die erste Pose (702) des Gliedes eine Segmentierung der Hand (102, 106, 110, 114, 802-817) und einen Satz von Gelenkwinkeln spezifiziert.system according to one of the claims 9 until 13 , wherein the first pose (702) of the limb specifies a segmentation of the hand (102, 106, 110, 114, 802-817) and a set of joint angles. System nach Anspruch 14, wobei die zweite Pose einen Satz von Zielgelenkwinkeln und eine Position des Robotergreifers (104, 108, 112, 116, 204, 704, 818-833) spezifiziert.system after Claim 14 , wherein the second pose specifies a set of target joint angles and a position of the robot gripper (104, 108, 112, 116, 204, 704, 818-833). System nach Anspruch 15, wobei die zweite Pose unter Verwendung einer Teilmenge der ersten Pose (702) bestimmt wird.system after claim 15 , wherein the second pose is determined using a subset of the first pose (702). Computerlesbares Medium zur Speicherung von Befehlen, die bei Ausführung durch einen oder mehrere Prozessoren (2102) eines Computersystems (2100) das Computersystem (2100) veranlassen, zum: Bestimmen (1406) , aus einem Bild eines Menschen, der eine Aufgabe ausführt, eine erste Pose (702) eines Gliedmaßes (102, 106, 110, 114, 802-817) des Menschen; Übersetzen (1408) der ersten Pose (702) des Gliedmaßes (102, 106, 110, 114, 802-817) in eine entsprechende zweite Pose einer Roboterhand (104, 108, 112, 116, 204, 704, 818-833); Bestimmen (1410) eines Satzes von Bewegungen, die die Roboterhand (104, 108, 112, 116, 204, 704, 818-833) von einer ersten Pose der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) in die zweite Pose umstellen; Veranlassen (1412) der Roboterhand (104, 108, 112, 116, 204, 704, 818-833), den Satz von Bewegungen auszuführen; und kinematisches Nachstellen (314) der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) durch Minimieren einer Kostenfunktion, welche zumindest auf Vektoren, die von primären Fingern (406, 408, 410) der Gliedmaße (102, 106, 110, 114, 802-817) ausgehen und auf den Daumen (412) der Gliedmaße (102, 106, 110, 114, 802-817) zeigen, und Vektoren, die zwischen den primären Fingern (406, 408, 410) der Gliedmaße (102, 106, 110, 114, 802-817) verlaufen, basiert.A computer-readable medium storing instructions that, when executed by one or more processors (2102) of a computer system (2100), cause the computer system (2100) to: determining (1406), from an image of a human performing a task, a first pose (702) of a limb (102, 106, 110, 114, 802-817) of the human; translating (1408) the first pose (702) of the limb (102, 106, 110, 114, 802-817) into a corresponding second pose of a robot hand (104, 108, 112, 116, 204, 704, 818-833); determining (1410) a set of motions that the robotic hand (104, 108, 112, 116, 204, 704, 818-833) requires from a first pose of the robotic hand (104, 108, 112, 116, 204, 704, 818- 833) switch to the second pose; causing (1412) the robotic hand (104, 108, 112, 116, 204, 704, 818-833) to perform the set of motions; and kinematically re-enacting (314) the robotic hand (104, 108, 112, 116, 204, 704, 818-833) by minimizing a cost function based at least on vectors derived from primary fingers (406, 408, 410) of the limb (102, 106, 110, 114, 802-817) pointing to the thumb (412) of the limb (102, 106, 110, 114, 802-817), and vectors pointing between the primary fingers (406, 408, 410) of the limbs (102, 106, 110, 114, 802-817). Computerlesbares Medium nach Anspruch 17, wobei die Befehle das Computersystem (2100) weiter veranlassen, zum: Erhalten (1402) des Bildes von einer Tiefenkamera; Bestimmen (1404) einer Punktwolke des Gliedmaßes (102, 106, 110, 114, 802-817) aus dem Bild; und Bestimmen (1406) der ersten Pose (702) des Gliedmaßes (102, 106, 110, 114, 802-817) aus der Punktwolke.computer-readable medium Claim 17 , wherein the instructions further cause the computer system (2100) to: obtain (1402) the image from a depth camera; determining (1404) a point cloud of the limb (102, 106, 110, 114, 802-817) from the image; and determining (1406) the first pose (702) of the limb (102, 106, 110, 114, 802-817) from the point cloud. Computerlesbares Medium nach Anspruch 18, wobei die Tiefenkamera eine RGB-Tiefenkamera (302), ein Radarbildgerät, ein medizinisches Bildgebungssystem oder ein LIDAR-System ist.computer-readable medium Claim 18 , wherein the depth camera is an RGB depth camera (302), a radar imager, a medical imaging system, or a LIDAR system. Computerlesbares Medium nach einem der Ansprüche 17 bis 19, wobei: die erste Pose (702) des Gliedmaßes (102, 106, 110, 114, 802-817) Informationen umfasst, die eine Position jedes von fünf Finger (404, 406, 408, 410, 412) einer Hand identifizieren; und die erste Pose (702) des Gliedmaßes (102, 106, 110, 114, 802-817) Informationen umfasst, die eine oder mehrere Positionen von Gelenken der Hand identifizieren.Computer-readable medium according to any of claims 17 until 19 wherein: the first pose (702) of the limb (102, 106, 110, 114, 802-817) includes information identifying a position of each of five fingers (404, 406, 408, 410, 412) of a hand; and the first pose (702) of the limb (102, 106, 110, 114, 802-817) includes information identifying one or more positions of joints of the hand. Computerlesbares Medium nach einem der Ansprüche 17 bis 20, wobei: die erste Pose (702) des Gliedmaßes (102, 106, 110, 114, 802-817) Informationen umfasst, die eine Position jedes von fünf Finger (404, 406, 408, 410, 412) einer Hand identifiziert; und die erste Pose (702) des Gliedes Informationen umfasst, die eine oder mehrere Positionen von Gelenken der Hand identifizieren.Computer-readable medium according to any of claims 17 until 20 wherein: the first pose (702) of the limb (102, 106, 110, 114, 802-817) includes information identifying a position of each of five fingers (404, 406, 408, 410, 412) of a hand; and the first pose (702) of the limb includes information identifying one or more positions of joints of the hand. Computerlesbares Medium nach einem der Ansprüche 17 bis 21, wobei: die erste Pose (702) in die zweite Pose übersetzt wird, indem mindestens ein kinematisches Neuausrichten (314) von Gelenkwinkeln ausgeführt wird; und die Gelenkwinkel zumindest teilweise basierend auf der ersten Pose (702) bestimmt werden.Computer-readable medium according to any of claims 17 until 21 wherein: the first pose (702) is translated into the second pose by performing at least one kinematic realignment (314) of joint angles; and the joint angles are determined based at least in part on the first pose (702). Computerlesbares Medium nach einem der Ansprüche 17 bis 22, wobei: die Roboterhand (104, 108, 112, 116, 204, 704, 818-833) einen oder mehrere Berührungssensoren (216, 218, 220, 222) umfasst, die taktile Sensorinformationen bereitstellen; und die Informationen des/der taktilen Sensors/Sensoren (216, 218, 220, 222) ein 2-dimensionales Array von Kraftwerten für einen Finger der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) umfassen.Computer-readable medium according to any of claims 17 until 22 wherein: the robotic hand (104, 108, 112, 116, 204, 704, 818-833) includes one or more touch sensors (216, 218, 220, 222) that provide tactile sensory information; and the tactile sensor(s) (216, 218, 220, 222) information comprises a 2-dimensional array of force values for a finger of the robotic hand (104, 108, 112, 116, 204, 704, 818-833). Computerlesbares Medium nach einem der Ansprüche 17 bis 23, wobei die Roboterhand (104, 108, 112, 116, 204, 704, 818-833) eine bewegliche Roboterhand, ein Robotergreifer oder eine Sonde ist.Computer-readable medium according to any of claims 17 until 23 , wherein the robot hand (104, 108, 112, 116, 204, 704, 818-833) is a movable robot hand, a robot gripper or a probe. Computerlesbares Medium nach einem der Ansprüche 17 bis 24, wobei die erste Pose (702) in die zweite Pose übersetzt wird, indem zumindest ein kinematisches Nachstellen (314) von Gelenkwinkeln ausgeführt wird; und die Gelenkwinkel zumindest teilweise basierend auf der ersten Pose (702) bestimmt werden.Computer-readable medium according to any of claims 17 until 24 wherein the first pose (702) is translated into the second pose by performing at least one kinematic adjustment (314) of joint angles; and the joint angles are determined based at least in part on the first pose (702). Computerlesbares Medium nach einem der Ansprüche 17 bis 25, wobei die erste Pose der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) die gegenwärtige Pose der Roboterhand (104, 108, 112, 116, 204, 704, 818-833) ist.Computer-readable medium according to any of claims 17 until 25 , where the first pose of the robot hand (104, 108, 112, 116, 204, 704, 818-833) is the current pose of the robot hand (104, 108, 112, 116, 204, 704, 818-833). Roboter, umfassend: einen Arm, der ein oder mehrere bewegliche Elemente umfasst, die über einen oder mehrere Servomotoren verbunden sind; ein Roboterglied, das mit dem Arm verbunden ist; einen oder mehrere Prozessoren (2102); und das computerlesbare Medium nach einem der Ansprüche 17 bis 26, das an einen oder mehrere Prozessoren (2102) angeschlossen ist.A robot comprising: an arm comprising one or more movable elements connected via one or more servomotors; a robotic link connected to the arm; one or more processors (2102); and the computer-readable medium of any one of claims 17 until 26 , which is connected to one or more processors (2102).
DE102020124285.9A 2019-09-20 2020-09-17 Vision-based teleoperation of a moving robotic system Active DE102020124285B4 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201962903671P 2019-09-20 2019-09-20
US62/903,671 2019-09-20
US16/932,067 2020-07-17
US16/932,067 US20210086364A1 (en) 2019-09-20 2020-07-17 Vision-based teleoperation of dexterous robotic system

Publications (2)

Publication Number Publication Date
DE102020124285A1 DE102020124285A1 (en) 2021-03-25
DE102020124285B4 true DE102020124285B4 (en) 2022-06-09

Family

ID=74846599

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020124285.9A Active DE102020124285B4 (en) 2019-09-20 2020-09-17 Vision-based teleoperation of a moving robotic system

Country Status (1)

Country Link
DE (1) DE102020124285B4 (en)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019105573A1 (en) * 2017-12-01 2019-06-06 Volvo Truck Corporation A method for maintenance of a vehicle
DE102020127508B4 (en) 2019-10-24 2022-09-08 Nvidia Corporation Pose tracking of objects in hand
CN113192503A (en) * 2021-04-28 2021-07-30 深圳市金画王技术有限公司 Intelligent voice control system of water surface lifesaving robot
CN113643380A (en) * 2021-08-16 2021-11-12 安徽元古纪智能科技有限公司 Mechanical arm guiding method based on monocular camera vision target positioning

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112004002219T5 (en) 2003-11-13 2006-11-23 Japan Science And Technology Agency, Kawaguchi Method for driving a robot
JP2011110620A (en) 2009-11-24 2011-06-09 Toyota Industries Corp Method of controlling action of robot, and robot system
US20130211592A1 (en) 2012-02-15 2013-08-15 Samsung Electronics Co., Ltd. Tele-operation system and control method thereof
JP2015071206A (en) 2013-10-03 2015-04-16 セイコーエプソン株式会社 Control device, robot, teaching data generation method, and program
CN104589356A (en) 2014-11-27 2015-05-06 北京工业大学 Dexterous hand teleoperation control method based on Kinect human hand motion capturing
WO2016201806A1 (en) 2015-06-16 2016-12-22 深圳市中兴微电子技术有限公司 Self-adaptation method for terminal and terminal card, and computer storage medium
WO2016201609A1 (en) 2015-06-15 2016-12-22 北京大学深圳研究生院 Metal oxide thin-film transistor and display panel, and preparation methods for both
US10406686B2 (en) 2012-12-14 2019-09-10 Abb Schweiz Ag Bare hand robot path teaching

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE112004002219T5 (en) 2003-11-13 2006-11-23 Japan Science And Technology Agency, Kawaguchi Method for driving a robot
JP2011110620A (en) 2009-11-24 2011-06-09 Toyota Industries Corp Method of controlling action of robot, and robot system
US20130211592A1 (en) 2012-02-15 2013-08-15 Samsung Electronics Co., Ltd. Tele-operation system and control method thereof
US10406686B2 (en) 2012-12-14 2019-09-10 Abb Schweiz Ag Bare hand robot path teaching
JP2015071206A (en) 2013-10-03 2015-04-16 セイコーエプソン株式会社 Control device, robot, teaching data generation method, and program
CN104589356A (en) 2014-11-27 2015-05-06 北京工业大学 Dexterous hand teleoperation control method based on Kinect human hand motion capturing
WO2016201609A1 (en) 2015-06-15 2016-12-22 北京大学深圳研究生院 Metal oxide thin-film transistor and display panel, and preparation methods for both
WO2016201806A1 (en) 2015-06-16 2016-12-22 深圳市中兴微电子技术有限公司 Self-adaptation method for terminal and terminal card, and computer storage medium

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Norm SAE J3016 2016-09-00. Taxonomy and definitions for terms related to driving automation systems for on-road motor vehicles
Norm SAE J3016 2018-06-15. Taxonomy and definitions for terms related to driving automation systems for on-road motor vehicles

Also Published As

Publication number Publication date
DE102020124285A1 (en) 2021-03-25

Similar Documents

Publication Publication Date Title
DE102019122790B4 (en) Robot control system
DE112020005156T5 (en) Reinforcement learning of tactile gripping strategies
DE102021103272A1 (en) Robot control using deep learning
DE102020129425A1 (en) GUIDED UNCERTAINTY-AWARE GUIDELINE OPTIMIZATION: COMBINING MODEL-FREE AND MODEL-BASED STRATEGIES FOR SAMPLE-EFFICIENT LEARNING
DE112020004302T5 (en) TRAINING STRATEGY SEARCH USING REINFORCEMENT LEARNING
DE102020127508B4 (en) Pose tracking of objects in hand
DE102022103493A1 (en) ONE-STAGE CATEGORY-LEVEL OBJECT POSE ESTIMATION
DE112020003832T5 (en) IMAGE REGISTRATION AND SEGMENTATION NEURAL NETWORKS TRAINED USING A REGISTRATION SIMULATOR
DE102020128653B4 (en) Grasping determination for an object in disorder
DE102021118885B4 (en) MACHINE LEARNING TO CONTROL OBJECT PASSING
DE112020005206T5 (en) Determining object orientation from an image using machine learning
DE102021121560A1 (en) OBJECT IMAGE COMPLETION
DE112021001164T5 (en) DYNAMIC LOAD BALANCING OF OPERATIONS FOR REAL-TIME DEEP-EARNING ANALYZES
DE102020124285B4 (en) Vision-based teleoperation of a moving robotic system
DE112021004282T5 (en) GRID-BASED TECHNIQUES OF CONVOLUTIONAL NEURAL NETWORK
DE112020006144T5 (en) Master transformation architecture for deep learning
DE102021123213A1 (en) Motion control of a neural network
DE112021000190T5 (en) Video compression using neural networks
DE112021000953T5 (en) GENERATION OF IDENTIFICATIONS USING NEURAL NETWORKS
DE112021001461T5 (en) IMPROVED OBJECT IDENTIFICATION USING ONE OR MORE NEURAL NETWORKS
DE112021001807T5 (en) Accelerated training for neural network models
DE102021100919A1 (en) DETERMINING A 3D HAND POSE FROM A 2D IMAGE USING MACHINE LEARNING
DE102022110657A1 (en) HIGH DYNAMIC RANGE IMAGE PROCESSING WITH FIXED CALIBRATION SETTINGS
DE102022110000A1 (en) DYNAMIC WEIGHT UPDATES FOR NEURAL NETWORKS
DE112021005717T5 (en) Machine learning model for task and motion planning

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final