DE102020127508B4 - Pose tracking of objects in hand - Google Patents
Pose tracking of objects in hand Download PDFInfo
- Publication number
- DE102020127508B4 DE102020127508B4 DE102020127508.0A DE102020127508A DE102020127508B4 DE 102020127508 B4 DE102020127508 B4 DE 102020127508B4 DE 102020127508 A DE102020127508 A DE 102020127508A DE 102020127508 B4 DE102020127508 B4 DE 102020127508B4
- Authority
- DE
- Germany
- Prior art keywords
- pose
- simulations
- memory
- simulation
- computer
- 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
Links
Images
Classifications
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1656—Programme controls characterised by programming, planning systems for manipulators
- B25J9/1671—Programme controls characterised by programming, planning systems for manipulators characterised by simulation, either to verify existing program or to create and verify new program, CAD/CAM oriented, graphic oriented programming systems
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1694—Programme 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
-
- B—PERFORMING OPERATIONS; TRANSPORTING
- B25—HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
- B25J—MANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
- B25J9/00—Programme-controlled manipulators
- B25J9/16—Programme controls
- B25J9/1679—Programme controls characterised by the tasks executed
- B25J9/1689—Teleoperation
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B19/00—Programme-control systems
- G05B19/02—Programme-control systems electric
- G05B19/42—Recording and playback systems, i.e. in which the programme is recorded from a cycle of operations, e.g. the cycle of operations being manually controlled, after which this record is played back on the same machine
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/39—Robotics, robotics to robotics hand
- G05B2219/39543—Recognize object and plan hand shapes in grasping movements
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/39—Robotics, robotics to robotics hand
- G05B2219/39546—Map human grasps to manipulator grasps
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40532—Ann for vision processing
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40575—Camera combined with tactile sensors, for 3-D
-
- G—PHYSICS
- G05—CONTROLLING; REGULATING
- G05B—CONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
- G05B2219/00—Program-control systems
- G05B2219/30—Nc systems
- G05B2219/40—Robotics, robotics mapping to robotics vision
- G05B2219/40625—Tactile sensor
Landscapes
- Engineering & Computer Science (AREA)
- Robotics (AREA)
- Mechanical Engineering (AREA)
- Manipulator (AREA)
Abstract
Computerimplementiertes Verfahren, umfassend:Erhalten (1302) einer Berührungssensorinformation von einem Roboterglied (104, 108, 112, 116, 204, 504, 618-633), das ein Objekt in der realen Welt manipuliert;Erzeugen (1304) einer Vielzahl von Simulationen des Roboterglieds (104, 108, 112, 116, 204, 504, 618-633), das das Objekt manipuliert, wobei die einzelnen Simulationen unterschiedliche Posen für das Objekt aufweisen;Bestimmen (1308) einer Vielzahl von Kosten, wobei jede Kosten der Vielzahl von Kosten einer jeweiligen Simulation der Vielzahl von Simulationen entspricht und jede Kosten der Vielzahl von Kosten mindestens teilweise auf Unterschieden zwischen der Berührungssensorinformation und einer simulierten Berührungssensorinformation basiert, die durch die jeweilige Simulation der Vielzahl von Simulationen erzeugt wird;Identifizieren (1310) einer einzelnen Simulation der Vielzahl von Simulationen mindestens teilweise basierend auf den Kosten;Bestimmen (1312) einer Pose des Objekts in der realen Welt, basierend mindestens teilweise auf einer Pose des Objekts in der identifizierten individuellen Simulation; undBereitstellen der Pose des Objekts an ein Robotersteuerungssystem (702), das einen Roboter steuert, um eine Aufgabe auszuführen, die mindestens teilweise auf der Pose des Objekts basiert.A computer-implemented method comprising:obtaining (1302) touch sensor information from a robotic member (104, 108, 112, 116, 204, 504, 618-633) manipulating an object in the real world;generating (1304) a plurality of simulations of the robotic member (104, 108, 112, 116, 204, 504, 618-633) manipulating the object, each simulation having different poses for the object; determining (1308) a plurality of costs, each cost of the plurality of corresponds to a cost of a respective simulation of the plurality of simulations and each cost of the plurality of costs is based at least in part on differences between the touch-sensor information and simulated touch-sensor information generated by the respective simulation of the plurality of simulations;identifying (1310) a single simulation of the plurality of simulations based at least in part on the cost;determining (1312) a pose of the object in the real world based at least in part on a pose of the object in the identified individual simulation; and providing the pose of the object to a robotic control system (702) that controls a robot to perform a task based at least in part on the pose of the object.
Description
Technischer BereichTechnical part
Mindestens ein Ausführungsbeispiel betrifft das Trainieren und Simulieren von Robotern zum Ausführen und Erleichtern von Aufgaben. Zum Beispiel bezieht sich mindestens ein Ausführungsbeispiel auf das Trainieren und Simulieren von Robotern, die künstliche Intelligenz verwenden, gemäß verschiedenen hier beschriebenen neuen Techniken.At least one embodiment relates to training and simulating robots to perform and facilitate tasks. For example, at least one embodiment relates to training and simulating robots that use artificial intelligence according to various emerging techniques described herein.
Hintergrundbackground
Das Trainieren und Simulieren von Robotern für eine genaue Ausführung von Aufgaben kann erhebliche Speicher-, Zeit- oder Rechenressourcen beanspruchen. Das Trainieren eines Robotersteuerungssystems zur Verfolgung der Pose eines Objekts, das von einer Roboterhand gehalten und manipuliert wird, ist eine Herausforderung für visionsbasierte Systeme zur Verfolgung der Pose eines Objekts, da das Objekt stark verdeckt ist, während die Roboterhand es hält. Eine solche Verdeckung reduziert die Datenmenge, die bei der Bestimmung der Bewegungen, die ein Roboter ausführen soll, verwendet werden kann, wodurch das Risiko entsteht, dass die jeweilige Aufgabe falsch und/oder ineffizient ausgeführt wird und dabei möglicherweise das Objekt oder andere Objekte in der Umgebung beschädigt werden. Eine solche Verfolgung ist besonders komplex, da Objekte während des Prozesses manchmal verrutschen oder sich anderweitig bewegen, wodurch Änderungen in der Ausrichtung des Objekts entstehen, die unentdeckt bleiben und daher nicht berücksichtigt werden. Die Menge an Speicher, Zeit oder Rechenressourcen, die für das genaue Training und die Simulation von Robotern verwendet wird, kann verbessert werden.Training and simulating robots to perform tasks accurately can consume significant memory, time, or computational resources. Training a robot control system to track the pose of an object held and manipulated by a robotic hand is a challenge for vision-based systems for tracking an object's pose, since the object is heavily obscured while the robotic hand is holding it. Such occlusion reduces the amount of data that can be used in determining the movements a robot should perform, creating the risk that the task at hand will be performed incorrectly and/or inefficiently, potentially damaging the object or other objects in the environment will be damaged. Such tracking is particularly complex because objects sometimes slip or otherwise move during the process, resulting in changes in the object's orientation that go undetected and therefore not accounted for. The amount of memory, time, or computational resources used to accurately train and simulate robots can be improved.
Vor diesem Hintergrund ist es eine Aufgabe der vorliegenden Erfindung, die Pose eines Objekts zu verfolgen, das von einer Roboterhand gehalten und manipuliert wird. Diese Aufgabe wird von dem Gegenstand des computerimplementierten Verfahrens nach Anspruch 1, dem System nach Anspruch 9 und dem computerlesbaren Medium nach Anspruch 17 gelöst.With this in mind, it is an object of the present invention to track the pose of an object being held and manipulated by a robotic hand. This object is solved by the subject matter of the computer-implemented method of
Druckschrift
Druckschrift
Druckschrift
Druckschrift
Druckschrift
Druckschrift
Druckschrift
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 Roboter mit Berührungssensoren, gemäß mindestens einem Ausführungsbeispiel;2 12 shows an example of a robot with touch sensors, according to at least one embodiment; -
3 zeigt ein Beispiel für ein System, das Objekte in Echtzeit verfolgt, gemäß mindestens einem Ausführungsbeispiel;3 Figure 12 shows an example of a system that tracks objects in real time, in accordance with at least one embodiment; -
4 zeigt ein Beispiel für das Abschätzen einer Handpose, gemäß mindestens einem Ausführungsbeispiel;4 Figure 12 shows an example of estimating a hand pose, according to at least one embodiment; -
5 zeigt ein Beispiel für eine Pose einer menschlichen Hand und einen Robotergreifer, der eine entsprechende Pose ausführt, gemäß mindestens einem Ausführungsbeispiel;5 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; -
6 zeigt ein Beispiel für Posen einer menschlichen Hand und entsprechende Posen eines Robotergreifers, gemäß mindestens einem Ausführungsbeispiel;6 12 shows an example of poses of a human hand and corresponding poses of a robot gripper, according to at least one embodiment; -
7 zeigt ein Beispiel eines Frameworks (Programmier-Rahmenstruktur) zur Verfolgung von Objektposen in der Hand, gemäß mindestens einem Ausführungsbeispiel;7 Figure 12 shows an example of a framework (programming framework) for tracking object poses in the hand, according to at least one embodiment; -
8 zeigt ein Beispiel für einen Vergleich von Optimierern, gemäß mindestens einem Ausführungsbeispiel; 12 shows an example of a comparison of optimizers, according to at least one embodiment;8th -
9 zeigt ein Beispiel für einen Algorithmus, der von einem System verwendet wird, gemäß mindestens einem Ausführungsbeispiel;9 Figure 12 shows an example of an algorithm used by a system, in accordance with at least one embodiment; -
10 zeigt ein erstes Beispiel für Ergebnisse von Ablationsstudien, gemäß mindestens einem Ausführungsbeispiel;10 shows a first example of results of ablation studies, according to at least one embodiment; -
11 zeigt ein zweites Beispiel für Ergebnisse von Ablationsstudien, gemäß mindestens einem Ausführungsbeispiel;11 12 shows a second example of ablation study results, according to at least one embodiment; -
12 zeigt ein Beispiel von Versuchsergebnissen aus der realen Welt, gemäß mindestens einem Ausführungsbeispiel;12 Figure 12 shows an example of real-world test results, in accordance with at least one embodiment; -
13 zeigt ein Beispiel für ein Verfahren, das als Ergebnis einer Ausführung durch ein Computersystem die Pose eines Objekts bestimmt, das von einer mit Berührungssensoren ausgestatteten Roboterhand manipuliert wird;13 Figure 12 shows an example of a method that, as a result of being executed by a computer system, determines the pose of an object being manipulated by a robotic hand equipped with touch sensors; -
14A zeigt eine Inferenz- und/oder Trainingslogik, gemäß mindestens einem Ausführungsbeispiel;14A shows an inference and/or training logic according to at least one embodiment; -
14B zeigt eine Inferenz- und/oder Trainingslogik, gemäß mindestens einem Ausführungsbeispiel;14B shows an inference and/or training logic according to at least one embodiment; -
15 zeigt ein Training und den Einsatz eines neuronalen Netzes, gemäß mindestens einem Ausführungsbeispiel;15 shows a training and the use of a neural network, according to at least one embodiment; -
16 zeigt ein Beispiel für ein Datenzentrums-System, gemäß mindestens einem Ausführungsbeispiel;16 Figure 12 shows an example of a data center system, according to at least one embodiment; -
17A zeigt ein Beispiel für ein autonomes Fahrzeug, gemäß mindestens einem Ausführungsbeispiel;17A shows an example of an autonomous vehicle, according to at least one embodiment; -
17B zeigt ein Beispiel von Kamerapositionen und Sichtfeldern für das autonome Fahrzeug der17A , gemäß mindestens einem Ausführungsbeispiel;17B shows an example of camera positions and fields of view for the autonomous vehicle17A , according to at least one embodiment; -
17C zeigt ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug der17A zeigt, gemäß mindestens einem Ausführungsbeispiel;17C FIG. 12 is a block diagram showing an example system architecture for the autonomous vehicle of FIG17A shows, according to at least one embodiment; -
17D ist ein Diagramm, das ein System zur Kommunikation zwischen cloud-basierten Servern und dem autonomen Fahrzeug der17A zeigt, gemäß mindestens einem Ausführungsbeispiel;17D is a diagram showing a system for communication between cloud-based servers and the autonomous vehicle of the17A shows, according to at least one embodiment; -
18 ist ein Blockdiagramm, das ein Computersystem zeigt, gemäß mindestens einem Ausführungsbeispiel;18 Figure 12 is a block diagram showing a computer system 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 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;20 Figure 12 shows 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; -
22A zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;22A Figure 12 shows a computer system, according to at least one embodiment; -
22B zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;22B Figure 12 shows a computer system, according to at least one embodiment; -
22C zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;22C Figure 12 shows a computer system, according to at least one embodiment; -
22D zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;22D Figure 12 shows a computer system, according to at least one embodiment; -
22E und22F zeigen ein gemeinsames Programmiermodell, gemäß mindestens einem Ausführungsbeispiel;22E and22F show a common programming model, according to at least one embodiment; -
23 zeigt beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren, gemäß mindestens einem Ausführungsbeispiel;23 Figure 12 shows example integrated circuits and associated graphics processors, according to at least one embodiment; -
24A und24B zeigen beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren, gemäß mindestens einem Ausführungsbeispiel;24A and24B -
25A und25B zeigen weitere beispielhafte Grafikprozessorlogik, gemäß mindestens einem Ausführungsbeispiel;25A and25B Figure 12 shows further example graphics processor logic, in accordance with at least one embodiment; -
26 zeigt ein Computersystem, gemäß mindestens einem Ausführungsbeispiel;26 Figure 12 shows a computer system, according to at least one embodiment; -
27A zeigt einen Parallelprozessor, gemäß mindestens einem Ausführungsbeispiel;27A Figure 12 shows a parallel processor, according to at least one embodiment; -
27B zeigt eine Partitionseinheit, gemäß mindestens einem Ausführungsbeispiel;27B Figure 12 shows a partition unit, according to at least one embodiment; -
27C zeigt einen Verarbeitungscluster, gemäß mindestens einem Ausführungsbeispiel; 12 shows a processing cluster, according to at least one embodiment;27C -
27D zeigt einen Grafik-Multiprozessor, gemäß mindestens einem Ausführungsbeispiel; 12 shows a graphics multiprocessor, according to at least one embodiment;27D -
28 zeigt ein Multi-Grafikverarbeitungssystem (engl. Multi-Graphics Processing Unit,28 shows a multi-graphics processing unit - GPU), gemäß mindestens einem Ausführungsbeispiel;GPU), according to at least one embodiment;
-
29 zeigt einen Grafikprozessor, gemäß mindestens einem Ausführungsbeispiel;29 12 shows a graphics processor, according to at least one embodiment; -
30 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor zeigt, gemäß mindestens einem Ausführungsbeispiel;30 12 is a block diagram showing a processor microarchitecture for a processor, according to at least one embodiment; -
31 zeigt einen Prozessor für Deep Learning-Anwendungen, gemäß mindestens einem Ausführungsbeispiel;31 12 shows a processor for deep learning applications, according to at least one embodiment; -
32 zeigt ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor zeigt, gemäß mindestens einem Ausführungsbeispiel;32 12 is a block diagram showing an example neuromorphic processor, according to at least one embodiment; -
33 zeigt zumindest Teile eines Grafikprozessors, gemäß einem oder mehreren Ausführungsbeispielen;33 12 shows at least parts of a graphics processor, according to one or more embodiments; -
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 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 3610 eines Grafikprozessors, gemäß mindestens einem Ausführungsbeispiel;36 3610 is a block diagram of agraphics processing engine 3610 of a graphics processor, according to at least one embodiment; -
37 zeigt ein Blockdiagramm von zumindest Teilen eines Grafikprozessorkerns, gemäß mindestens einem Ausführungsbeispiel;37 12 shows a block diagram of at least parts of a graphics processor core, according to at least one embodiment; -
38A und38B zeigen eine Thread-Ausführungslogik 3800, umfassend ein Array von Verarbeitungselementen eines Grafikprozessorkerns, gemäß mindestens einem Ausführungsbeispiel;38A and38B -
39 zeigt eine Parallelverarbeitungseinheit („PPU“), gemäß mindestens einem Ausführungsbeispiel;39 Figure 12 shows a parallel processing unit (“PPU”), according to at least one embodiment; -
40 zeigt einen allgemeinen Verarbeitungscluster („GPC“), gemäß mindestens einem Ausführungsbeispiel;40 12 shows a general processing cluster ("GPC"), according to at least one embodiment; -
41 zeigt eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“), gemäß mindestens einem Ausführungsbeispiel; und41 Figure 12 shows a memory partition unit of a parallel processing unit (“PPU”), according to at least one embodiment; and -
42 zeigt einen Streaming-Multi-Prozessor, gemäß mindestens einem Ausführungsbeispiel.42 12 shows a streaming multiprocessor, in accordance with at least one embodiment.
Detaillierte BeschreibungDetailed description
Das vorliegende Dokument beschreibt ein System und Verfahren zum Abschätzen der Pose eines Objekts, während das Objekt durch eine Roboterhand, eine Klaue oder einen Manipulator manipuliert wird. Wenn ein Objekt von einem Roboter gehalten wird, können bildbasierte Systeme zur Posenschätzung in verschiedenen Beispielen aufgrund von Objektverdeckungen ungenaue Posenschätzungen erzeugen. In mindestens einem Ausführungsbeispiel ist eine Roboterhand mit Berührungssensoren (taktile Sensoren) ausgestattet, und während ein Objekt von der Roboterhand manipuliert wird, werden die von den Berührungssensoren erzeugten Sensorsignale verwendet, um die Pose des Objekts besser abzuschätzen. In einigen Situationen können während einer aktiven Manipulation dynamische Effekte wie Rutschen auftreten, die die Schwierigkeit des Abschätzens der Pose erhöhen. In mindestens einem Ausführungsbeispiel wird ein physikalisches Modell des Objekts verwendet, um die Modellierung von Roboter-Objekt-Interaktionen zu verbessern.The present document describes a system and method for estimating the pose of an object while the object is being manipulated by a robotic hand, claw or manipulator. In various examples, when an object is held by a robot, image-based pose estimation systems can produce inaccurate pose estimates due to object occlusions. In at least one embodiment, a robotic hand is equipped with touch (tactile) sensors, and as an object is manipulated by the robotic hand, the sensor signals generated by the touch sensors are used to better estimate the object's pose. In some situations, dynamic effects such as slipping can occur during active manipulation, increasing the difficulty of estimating the pose. In at least one embodiment, a physical model of the object is used to enhance modeling of robot-object interactions.
In mindestens einem Ausführungsbeispiel verfolgt eine mittels Grafikverarbeitungseinheiten („GPU“) beschleunigte Physik-Engine mit derivatefreien, stichprobenbasierten (abtastungsbasierten, sample-basierten) Optimierern die Posen eines Objekts in der Hand mit Feedback durch Kontakte während der Manipulation. In mindestens einem Ausführungsbeispiel wird die Physiksimulation als Vorwärtsmodell für Roboter-Objekt-Interaktionen verwendet, und die hier beschriebenen Techniken optimieren gemeinsam für den Zustand und die Parameter der Simulationen, so dass die Simulationen die reale Welt genauer abschätzen können.In at least one embodiment, a graphics processing unit ("GPU") accelerated physics engine with derivative-free, sample-based optimizers tracks the poses of an object-in-hand with feedback from contacts during manipulation. In at least one embodiment, physics simulation is used as a forward model for robot-object interactions, and the techniques described herein optimize together for the state and parameters of the simulations so that the simulations can more accurately estimate the real world.
In mindestens einem Ausführungsbeispiel modellieren die hier beschriebenen Techniken explizit die Dynamik von Roboter-Objekt-Interaktionen für die Objekt-Posenverfolgung und optimieren für die Simulationsparameter während der Posenverfolgung. In verschiedenen Beispielen ermöglichen es diese Merkmale dem System, die Objektpose unter komplexen dynamischen Verhaltensweisen zu verfolgen, wie z.B. Translations- und Torsionsschlupf aufgrund von Trägheits- und externen Kräften sowie Abbruch und Wiederherstellung des Kontakts. Darüber hinaus können diese Techniken durch die Verwendung der GPU-beschleunigten Physik-Engine oft in Echtzeit (30 Hz) unter Verwendung der GPU angewendet werden.In at least one embodiment, the techniques described herein explicitly model the dynamics of robot-object interactions for object pose tracking and optimize for the simulation parameters during pose tracking. In various instances, these features allow the system to track object pose under complex dynamic behaviors, such as translational and torsional slippage due to inertial and external forces, and breakup and recovery development of the contact. Additionally, by using the GPU-accelerated physics engine, these techniques can often be applied in real-time (30 Hz) using the GPU.
Verschiedene der Ausführungsbeispiele demonstrieren vielversprechende Anwendungen der GPU-beschleunigten Physiksimulation für die Robotik. In einigen Ausführungsbeispielen zum Beispiel erlaubt die Geschwindigkeit der Physik-Engine aufwändige, kontaktreiche Simulationen und stichproben-basierte Optimierungsverfahren, die sich auf Daten aus vielen gleichzeitigen Simulationen stützen, alles in Echtzeit auf derselben Maschine, was bei CPUbasierten Simulationen oft schwierig ist. Verschiedene Ausführungsbeispiele können als Hilfsmittel zum Abschätzen einer Objektpose in der Hand und zur Verringerung der Einschränkung verwendet werden, mit der viele Forscher bei geschickter (beweglicher, händischer) Manipulation konfrontiert sind, d.h. dass das Objekt in der Regel so platziert wird, dass es nur zum Teil von einer Kamera aus sichtbar ist, was die Auswahl der untersuchbaren Manipulationsaufgaben einschränkt.Several of the working examples demonstrate promising applications of GPU-accelerated physics simulation for robotics. For example, in some embodiments, the speed of the physics engine allows for expensive, high-contact simulations and sample-based optimization techniques that rely on data from many simultaneous simulations, all in real time on the same machine, which is often difficult with CPU-based simulations. Various embodiments can be used as an aid in estimating an object's pose in the hand and reducing the limitation many researchers face in skilled (mobile, manual) manipulation, i.e. that the object is typically placed so that it can only be part is visible from a camera, which limits the range of manipulation tasks that can be examined.
Teleoperation kann leblose Robotersysteme mit hochentwickelten logischen Fähigkeiten, Intuition und Kreativität versehen. Allerdings können Teleoperationslösungen für Roboter mit einem hohen Grad an Bewegung (engl. degree of actuation, „DoA“) und mehreren Fingern komplex sein. In mindestens einem Ausführungsbeispiel wird ein System entwickelt, das die vollständige Steuerung eines Robotersystems mit hohem DoA durch bloße Beobachtung der bloßen menschlichen Hand ermöglicht. Das System kann Bediener in die Lage versetzen, eine Vielzahl komplexer Manipulationsaufgaben zu lösen, die über einfache Pick-and-Place (Aufnehmen und Ablegen) -Operationen hinausgehen. In verschiedenen Ausführungsbeispielen kann das System durch ein oder mehrere Systeme implementiert werden, wie in
Eine Verfolgung der Pose eines Objekts, während es von einer Roboterhand gehalten und manipuliert wird, kann für visionsbasierte Verfahren aufgrund erheblicher Verdeckungen schwierig sein. Die hier beschriebenen Techniken verwenden GPU-beschleunigte parallele Robotersimulationen und derivatefreie, stichproben-basierte Optimierer, um die Posen von Objekten in der Hand mit Feedback durch Kontakte während der Manipulation zu verfolgen. In einigen Beispielen wird eine Physiksimulation als Vorwärtsmodell für Roboter-Objekt-Interaktionen verwendet, und der Algorithmus optimiert gemeinsam den Zustand und die Parameter der Simulationen, so dass sie besser mit denen der realen Welt übereinstimmen. Mindestens ein Ausführungsbeispiel läuft in Echtzeit (30 Hz) auf der GPU und erreicht einen durchschnittlichen Punktwolkenabstandsfehler von 6 mm in Simulationsexperimenten und 13 mm in der realen Welt.Tracking an object's pose while being held and manipulated by a robotic hand can be difficult for vision-based methods due to significant occlusions. The techniques described here use GPU-accelerated parallel robotic simulations and derivative-free, sample-based optimizers to track the poses of in-hand objects with feedback from contacts during manipulation. In some examples, a physics simulation is used as a forward model for robot-object interactions, and the algorithm collectively optimizes the state and parameters of the simulations to better match those of the real world. At least one embodiment runs in real-time (30 Hz) on the GPU and achieves an average point cloud distance error of 6 mm in simulation experiments and 13 mm in the real world.
In mindestens einem Ausführungsbeispiel profitiert ein Durchführen von Richtlinien für geschickte Manipulation (engl. dexterous manipulation policies) von einer robusten Abschätzung der Pose des in der Hand gehaltenen Objekts. In vielen Implementierungen stellt jedoch die Verfolgung der in der Hand gehaltenen Obj ektpose aufgrund signifikanter Verdeckungen immer noch eine Herausforderung dar. Bei solchen Implementierungen können Arbeiten, die Posen von in der Hand gehaltenen Objekten erfordern, auf Experimente beschränkt werden, bei denen das Objekt größtenteils sichtbar ist, oder die mehrere Kameras verwenden, oder bei denen die Hand-Objekt-Transformation fest oder bekannt ist. In einigen Beispielen wird das Problem der visuellen Verdeckungen verringert durch genauere Betrachtung einer Abschätzung der Objektposen durch Kontakte oder taktiles Feedback, oft unter Verwendung von Partikelfiltern und Kenntnis der Objektgeometrie und der Kontaktpositionen. In mindestens einem Ausführungsbeispiel können diese Techniken auf eine statische Greifsituation angewendet werden, in der ein Objekt stationär und im Griff ist. In mindestens einem Ausführungsbeispiel werden diese Techniken auf die Verfolgung von Objektposen während der Manipulation in der Hand ausgedehnt, was eine Modellierung komplexer Objekt-Hand-Kontaktdynamiken erfordert.In at least one embodiment, performing dexterous manipulation policies benefits from a robust estimation of the pose of the hand-held object. However, in many implementations, tracking the hand-held object pose is still a challenge due to significant occlusions. In such implementations, work requiring poses of hand-held objects can be limited to experiments where the object is mostly visible or that use multiple cameras, or where the hand-to-object transformation is fixed or known. In some examples, the problem of visual occlusions is reduced by looking more closely at an estimate of object poses from contacts or tactile feedback, often using particle filters and knowledge of object geometry and contact positions. In at least one embodiment, these techniques can be applied to a static gripping situation where an object is stationary and gripped. In at least one embodiment, these techniques are extended to object pose tracking during in-hand manipulation, which requires modeling of complex object-hand contact dynamics.
Um eine Verfolgung von Objekten in der Hand während der Manipulation durch einen Roboter zu ermöglichen, wird in mindestens einem Ausführungsbeispiel ein GPU-beschleunigter hochpräziser Physik-Simulator als Vorwärtsdynamikmodell mit einem stichproben-basierten Optimierungs-Framework zur Verfolgung von Objektposen mit Feedback durch Kontakte kombiniert, wie in
In mindestens einem Ausführungsbeispiel wurden zur Evaluierung des vorgeschlagenen Algorithmus insgesamt 24 Trajektorien der Manipulation in der Hand mit drei verschiedenen Objekten in der Simulation und in der realen Welt gesammelt. In mindestens einem Ausführungsbeispiel wurde ein Kuka IIWA7 Arm mit der 4-Finger Wonik Robotics Allegro-Hand als Endeffektor verwendet, wobei jeder Finger mit einem SynTouch BioTac Berührungssensor ausgestattet war. In mindestens einem Ausführungsbeispiel handelt es sich bei den Trajektorien der Objektmanipulation um menschliche Demonstrationen, die über ein Teleoperationssystem, welches eine Hand verfolgt, gesammelt wurden. In mindestens einem Ausführungsbeispiel werden detaillierte Ablationsstudien in Simulationsexperimenten durchgeführt, um die Eigenschaften des vorgeschlagenen Algorithmus zu untersuchen, da in der Simulation Objektposen als Grundwahrheitsdaten verfügbar sind. In mindestens einem Ausführungsbeispiel wird für reale Experimente ein visionsbasierter Algorithmus verwendet, um die Objektpose im ersten und letzten Einzelbild der gesammelten Trajektorien zu erhalten, in denen sich das Objekt nicht in Verdeckung befindet. In mindestens einem Ausführungsbeispiel wird die Pose im ersten Einzelbild verwendet, um die Simulationen zu initialisieren, und die Pose im letzten Einzelbild wird verwendet, um die Genauigkeit des vorgeschlagenen kontaktbasierten Algorithmus zu bewerten.In at least one embodiment, a total of 24 trajectories of hand manipulation with three different objects in simulation and in the real world were collected to evaluate the proposed algorithm. In at least one embodiment, a Kuka IIWA7 arm was used with the 4-finger Wonik Robotics Allegro hand as the end effector, each finger equipped with a SynTouch BioTac touch sensor. In at least one embodiment, the object manipulation trajectories are human demonstrations collected via a teleoperation system that tracks a hand. In at least one embodiment, since object poses are available as ground truth data in the simulation, detailed ablation studies are performed in simulation experiments to investigate the properties of the proposed algorithm. In at least one embodiment, for real-world experiments, a vision-based algorithm is used to obtain the object pose in the first and last frames of the collected trajectories where the object is not in occlusion. In at least one embodiment, the pose in the first frame is used to initialize the simulations, and the pose in the last frame is used to assess the accuracy of the proposed contact-based algorithm.
In verschiedenen Beispielen wird eine Position eines Objekts in der Hand nur mit Hilfe von Vision identifiziert, indem zunächst die Roboter- oder menschliche Hand in einem Bild segmentiert wird, bevor die Pose abgeschätzt wird. Bei größeren Verdeckungen kann die Leistung von Ansätzen, die nur auf Vision basieren, jedoch abnehmen. Einige Ausführungsbeispiele verwenden taktile Rückmeldungen, um die Schätzung der Objektpose zu unterstützen. Taktile Wahrnehmung kann Objekteigenschaften, wie z. B. Material und Pose, identifizieren, und ebenso eine Rückmeldung während der Objektmanipulation bereitstellen.In various examples, a position of an object in the hand is identified using only vision, by first segmenting the robot or human hand in an image before estimating the pose. However, at larger occlusions, the performance of vision-only approaches may degrade. Some embodiments use tactile feedback to help estimate object pose. Tactile perception can object properties, such. material and pose, and also provide feedback during object manipulation.
In mindestens einem Ausführungsbeispiel zeigen Experimente mit Dynamikmodellen und Partikelfiltertechniken, dass das Hinzufügen von Rauschen zu den angelegten Kräften anstelle der zugrunde liegenden Dynamik genauere Verfolgungsergebnisse liefert. In mindestens einem Ausführungsbeispiel werden taktile Rückmeldungen mit einem visionsbasierten Objektverfolger kombiniert, um Trajektorien von Objekten während planarer Schiebeaufgaben zu verfolgen, und in einem anderen Ausführungsbeispiel wird inkrementelles Glätten und Abbilden (engl. Incremental Smoothing and Mapping, „iSAM“) angewendet, um globale visuelle Posenschätzungen mit lokalen Kontaktposenmessungen zu kombinieren.In at least one embodiment, experiments with dynamics models and particle filtering techniques show that adding noise to the applied forces, rather than the underlying dynamics, provides more accurate tracking results. In at least one embodiment, tactile feedback is combined with a vision-based object tracker to track trajectories of objects during planar sliding tasks, and in another embodiment, Incremental Smoothing and Mapping (iSAM) is applied to provide global visual Combine pose estimates with local contact pose measurements.
In mindestens einem Ausführungsbeispiel ergreift eine Roboterhand ein Objekt und lokalisiert die Objektpose, ohne sich zu bewegen. Einige Beispiele verwenden Punktkontaktpositionen und einige Beispiele verwenden eine vollständige taktile Karte, um lokale Geometrieinformationen um die Kontakte herum zu extrahieren.In at least one embodiment, a robotic hand grasps an object and locates the object's pose without moving. Some examples use point contact locations and some examples use a full tactile map to extract local geometry information around the contacts.
In mindestens einem Ausführungsbeispiel werden Rückmeldungen von Kontaktpositionen für die Posenschätzung verwendet, und einige Implementierungen verwenden eine Variante von Bayes- oder Partikelfiltern. In einigen Ausführungsbeispielen wird das Filtern gemeinsam über visuelle Merkmale, Hand-Gelenkspositionen, Kraft-Drehmoment-Messwerte und binäre Kontaktmodi durchgeführt. Einige Techniken können auch auf die Abschätzung der Pose angewendet werden, wenn das Objekt nicht von der Roboterhand gehalten wird, indem Kraftmessfühler verwendet werden.In at least one embodiment, contact position feedback is used for the pose estimation, and some implementations use some variant of Bayesian or particle filters. In some embodiments, the filtering is performed collectively across visual features, hand-joint positions, force-torque measurements, and binary contact modes. Some techniques can also be applied to estimating the pose when the object is not held by the robot hand using force sensors.
In mindestens einem Ausführungsbeispiel werden taktile Karten zur Posenschätzung verwendet, wobei einige Beispiele große, niedrig auflösende taktile Arrays zur Erfassung von Kontakten in einem Raster verwenden, während andere Beispiele hochauflösende taktile Sensoren verwenden, die an den Fingerspitzen des Roboters angebracht sind. In mindestens einem Ausführungsbeispiel sucht das System nach ähnlichen lokalen Bereichen auf einer Objektoberfläche, um das Objekt in Bezug auf die Kontaktposition zu lokalisieren, und andere Systeme fusionieren GelSight-Daten mit einer von einem Tiefensensor wahrgenommenen Punktwolke, bevor sie eine Posenabschätzung durchführen.In at least one embodiment, tactile maps are used for pose estimation, with some examples using large, low-resolution tactile arrays to detect contacts in a grid, while other examples using high-resolution tactile sensors attached to the robot's fingertips. In at least one embodiment, the system looks for similar local areas on an object's surface to locate the object relative to contact position, and other systems fuse GelSight data with a point cloud perceived by a depth sensor before performing pose estimation.
In einigen Ausführungsbeispielen wird eine Verfolgung der Objektpose in der Hand während der Objektmanipulation implementiert, was eine größere Herausforderung darstellt, als wenn das Objekt statisch ist. In mindestens einem Ausführungsbeispiel wird ein Algorithmus verwendet, der Kontaktpositionen mit Dense Articulated Real-time Tracking („DART“) kombiniert. In mindestens einem Ausführungsbeispiel fusioniert der Algorithmus Kontaktpositionen mit visuellen Farbmerkmalen, Gelenkpositionen und Kraft-Drehmoment-Messwerten. In mindestens einem Ausführungsbeispiel ist der Algorithmus empfindlich gegenüber der Initialisierung der Objektposen, insbesondere wenn das Objekt im Tiefenbild klein erscheint. In mindestens einem Ausführungsbeispiel setzen die hier beschriebenen Techniken keinen Zugang zu robusten visuellen Merkmalen während der Manipulation voraus, sondern verwenden stattdessen einen Physiksimulator zur Modellierung sowohl der Kinematik als auch der Dynamik des Roboter-Objekt-Systems.In some embodiments, object pose tracking is implemented in the hand during object manipulation, which is more challenging than when the object is static. In at least one embodiment, an algorithm that combines contact locations with Dense Articulated Real-time Tracking ("DART") is used. In at least one embodiment, the algorithm fuses contact locations with visual color features, joint locations, and force-torque measurements. In at least one embodiment, the algorithm is sensitive to the initialization of object poses, particularly when the object appears small in the depth image. In at least one embodiment, the techniques described herein do not require access to robust visual features during manipulation, but instead use a physics simulator to model both the kinematics and dynamics of the robot-object system.
In verschiedenen Beispielen kann eine Teleoperation von Robotern in den Bereichen Suche und Rettung, Raumfahrt, Medizin und angewandtes maschinelles Lernen Anwendung finden. Die Motivation für eine Fähigkeit zur Teleoperation kann darin bestehen, einem Robotersystem die Lösung komplexer Aufgaben zu ermöglichen, indem es sich die Kognition, Kreativität und Reaktionsfähigkeit des Menschen über eine Mensch-Maschine-Schnittstelle („HMI“) zunutze macht. In einem Ausführungsbeispiel ist dieses System eine Lösung ohne Handschuhe, um ein mehrfingriges, stark bewegtes Robotersystem zur Lösung einer Vielzahl von Greif- und Manipulationsaufgaben zu steuern. In einigen Beispielen können Tiefenkameras und verschiedene Grafikverarbeitungseinheiten („GPU“) zusammen mit Deep Learning und Optimierung verwendet werden, um ein geschicktes Teleoperationssystem mit minimalem Platzbedarf zu schaffen. In einigen Beispielen kann eine Vielzahl von physischen Aufgaben allein mit visueller Rückmeldung durchgeführt werden. Daher kann dieses System die menschliche Fähigkeit nutzen, zu planen, sich zu bewegen und die Folgen physischer Aktionen allein durch Vision vorherzusagen, was eine ausreichende Voraussetzung für die Lösung einer Vielzahl von Aufgaben sein kann.In various examples, robotic teleoperation can find applications in search and rescue, space travel, medicine, and applied machine learning. The motivation for a teleoperation capability may be to enable a robotic system to solve complex tasks by harnessing human cognition, creativity, and responsiveness via a human-machine interface (“HMI”). In one embodiment, this system is a gloveless solution to control a multi-fingered, high-motion robotic system to perform a variety of gripping and manipulation tasks. In some examples, depth cameras and various graphics processing units (“GPU”) can be used along with deep learning and optimization to create a nifty teleoperation system with a minimal footprint. In some examples, a variety of physical tasks can be performed with visual feedback alone. Therefore, this system can use the human ability to plan, move and predict the consequences of physical actions through vision alone, which can be a sufficient condition for solving a variety of 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
Der Teleoperationsaufbau kann ein Robotersystem und eine angrenzende Arena für menschliche Bediener umfassen, wie in
In einigen Ausführungsbeispielen, wie in
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 volle Systemarchitektur und die Komponentenverbindungen sind in
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, DART uses a moving model of the hand that is registered from 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 gebraucht wird - 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 be able to reliably track the human hand over long periods of time - which is needed for teleoperation - it may be desirable to have reliable presets for the hand pose of a human hand, a 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.
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.
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.
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 den neuausgerichteten 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 can be completed with the previous solution to be initiated. 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 transfer joint angles to remove high-frequency noise associated with human hand tracking and to smooth discrete events, such as the projection algorithm, that induce step response changes in the realigned angles.
Riemann'sche Bewegungsrichtlinien („RMPs“) sind in einem Ausführungsbeispiel Echtzeit-Bewegungserzeugungsverfahren, die Beschleunigungsfelder aus potentiellen Funktionsgradienten und entsprechenden Riemann'schen Metriken berechnen. RMPs können die Erzeugung von kartesischen Trajektorien mit mehreren Prioritäten und Kollisionsvermeidungsverhalten in einem zusammenhängenden Bezugssystem kombinieren. 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 werden. In mindestens einem Ausführungsbeispiel werden die kinematisch angepassten Allegro-Winkel mit 30 Hz an den Drehmoment-Impedanzregler des Arms gesendet. In mindestens einem Ausführungsbeispiel wird eine Teleoperationsinstanz initialisiert, indem die Studiokameras über eine initiale, statische Roboterpose und die initiale Beobachtung der menschlichen Hand mit dem Roboter-Basiskoordinatensystem registriert werden. In mindestens einem Ausführungsbeispiel werden die Achsen des menschlichen Handmodells und die Achsen des Roboter-Endeffektors näherungsweise so ausgerichtet, dass die Bewegungsrichtung zwischen der Bewegung der menschlichen Hand und der Roboterbewegung erhalten bleibt.Riemannian motion guidelines ("RMPs"), in one embodiment, are real-time motion generation methods that compute acceleration fields from potential functional gradients and corresponding Riemannian metrics. RMPs can combine multi-priority Cartesian trajectory generation and collision avoidance behavior in a cohesive 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-joint target trajectories that are sent at 200 Hz to the arm's torque impedance controller. In at least one embodiment, the kinematically adjusted Allegro angles are sent at 30 Hz to the arm's torque impedance controller. In at least one embodiment, a teleoperation instance is initialized by registering the studio cameras with the robot base coordinate system via an initial, static robot pose and the initial observation of the human hand. In at least one embodiment, the axes of the human hand model and the axes of the robotic end effector are approximately aligned such that the direction of motion between human hand motion and robotic motion is preserved.
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).
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 nach Bedarf (engl. on-demand) 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 on-demand for many demonstrations. 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.
In einem Ausführungsbeispiel wird ein System entwickelt, um Objekte in der Hand während einer Manipulation durch einen Roboter zu verfolgen. In verschiedenen Ausführungsbeispielen kann das System durch ein oder mehrere Systeme implementiert werden, wie in
In verschiedenen Ausführungsbeispielen können zur Evaluierung des vorgeschlagenen Algorithmus insgesamt 24 Trajektorien für die Manipulation in der Hand mit drei verschiedenen Objekten in der Simulation und in der realen Welt gesammelt werden, obwohl eine beliebige Anzahl von Trajektorien gesammelt werden kann. In mindestens einem Ausführungsbeispiel wird ein Roboterarm wie der Kuka IIWA7 Arm mit der 4-Finger Wonik Robotics Allegro-Hand als Endeffektor verwendet, wobei jeder Finger mit einem SynTouch BioTac Berührungssensor ausgestattet ist. In mindestens einem Ausführungsbeispiel handelt es sich bei den Trajektorien der Objektmanipulation um menschliche Demonstrationen, die über ein Teleoperationssystem mit Handverfolgung gesammelt wurden. In verschiedenen Ausführungsbeispielen werden aufgrund der Objektposen der Grundwahrheiten in der Simulation detaillierte Ablationsstudien in Simulationsexperimenten durchgeführt, um die Eigenschaften des vorgeschlagenen Algorithmus zu bewerten. In mindestens einem Ausführungsbeispiel wird ein visionsbasierter Algorithmus verwendet, um die Objektpose im ersten und letzten Einzelbild der gesammelten Trajektorien zu erhalten, in denen sich das Objekt nicht in Verdeckung befindet. In mindestens einem Ausführungsbeispiel wird die Pose im ersten Einzelbild verwendet, um die Simulationen zu initialisieren, und die Pose im letzten Einzelbild wird verwendet, um die Genauigkeit des vorgeschlagenen kontaktbasierten Algorithmus zu bewerten.In various embodiments, to evaluate the proposed algorithm, a total of 24 trajectories for in-hand manipulation with three different objects in simulation and in the real world can be collected, although any number of trajectories can be collected. In at least one embodiment, a robotic arm such as the Kuka IIWA7 arm is used with the 4-finger Wonik Robotics Allegro hand as the end effector, each finger equipped with a SynTouch BioTac touch sensor. In at least one embodiment, the object manipulation trajectories are human demonstrations collected via a hand-tracking teleoperation system. In various embodiments, based on the object poses of the ground truths in the simulation, detailed ablation studies are performed in simulation experiments to evaluate the properties of the proposed algorithm. In at least one embodiment, a vision-based algorithm is used to obtain the object pose in the first and last frames of the collected trajectories where the object is not in occlusion. In at least one embodiment, the pose in the first frame is used to initialize the simulations, and the pose in the last frame is used to assess the accuracy of the proposed contact-based algorithm.
In einem Ausführungsbeispiel verfolgt ein System die Pose eines Objekts, das von einem Robotermanipulator während der Objektmanipulation in der Hand gehalten wird. In einigen Ausführungsbeispielen kann für die Zeit, die durch t repräsentiert werden kann, eine Objektpose als pt E SE(3) definiert werden, und ein physikalisches Dynamikmodell kann als st+1 = ƒ(st,ut,θ) definiert werden, wobei st der Zustand der realen Welt sein kann (Position und Geschwindigkeiten von starren Körpern und von Gelenkwinkeln in beweglichen Körpern), ut ∈ ℝM die Steuerung des Roboters sein kann (gewünschte Gelenkpositionen können als Aktionsraum verwendet werden), und θ ∈ ℝN die festen Parameter der Simulation sein können (e. g., Masse und Reibung).In one embodiment, a system tracks the pose of an object being hand-held by a robotic manipulator during object manipulation. In some embodiments, for the time that can be represented by t, an object pose can be defined as p t E SE(3) and a physical dynamics model can be defined as s t+1 = ƒ(s t ,u t ,θ). where s t can be the real world state (position and velocities of rigid bodies and of joint angles in moving bodies), u t ∈ ℝ M can be the controller of the robot (desired joint positions can be used as action space), and θ ∈ ℝ N can be the fixed parameters of the simulation (eg, mass and friction).
In verschiedenen Ausführungsbeispielen kann die Posenabschätzung für ein Simulationsmodell f, das bei perfekten Initialisierungen von p0, s0 und θ genau mit der Realität übereinstimmt, nur die Rückgabe der Sequenz von Aktionen ut erfordern, die in der Simulation auf den Roboter angewendet werden. Da die Vorwärtsmodelle jedoch unvollkommen und die Poseninitialisierungen verrauscht sein können, kann die Posenabschätzung durch Rückmeldung von Beobachtungen verbessert werden.In various embodiments, for a simulation model f that exactly matches reality with perfect initializations of p 0 , s 0 and θ, pose estimation may only require returning the sequence of actions u t applied to the robot in the simulation. However, since the forward models can be imperfect and the pose initializations can be noisy, feedback from observations can improve the pose estimation.
In einigen Ausführungsbeispielen kann D als die Anzahl der Gelenke des Roboters und L als die Anzahl seiner Berührungssensoren definiert sein. Ein Beobachtungsvektor ot kann definiert sein als die Verkettung der Gelenkpositionskonfiguration des Roboters qt ∈ ℝD, der Position und Rotation der Berührungssensoren des Roboters
In verschiedenen Ausführungsbeispielen kann ein GPU-beschleunigter Physiksimulator als Vorwärtsdynamikmodell verwendet werden, um viele Roboterobjektumgebungen gleichzeitig zu simulieren, um die Objektpose in der Hand zu verfolgen, und derivatefreie, stichproben-basierte Optimierer können verwendet werden, um den Zustand und die Parameter der Simulationen gemeinsam abzustimmen, um die Verfolgungsleistung zu verbessern.
Zunächst kann eine Abschätzung einer initialen Objektpose über einen visionsbasierten Objektposenabschätzer erhalten werden. Es kann davon ausgegangen werden, dass der Posenabschätzer eine zuverlässige initiale Posenabschätzung p0 liefert, wenn der Roboter nicht in Kontakt mit dem Objekt ist und wenn das Objekt nicht verdeckt ist, z. B. vor dem Greifen. Mit der initialen Objektposen-Abschätzung und der Roboterkonfiguration können dann K gleichzeitige Simulationen initialisiert werden, und bei jedem Zeitschritt können die realen Roboteraktionen ut in alle K Simulationen kopiert werden. In verschiedenen Beispielen kann sich die Objektpose ändern, wenn die Hand den Kontakt herstellt, und dies kann vom Simulator modelliert werden. In verschiedenen Ausführungsbeispielen können die Objektpose und die Beobachtung der i-ten Simulation als
Die Kosten können verwendet werden, um die Simulationen und ihre Parameter periodisch zu aktualisieren, was eine verbesserte Übereinstimmung mit dem realen Roboterobjektsystem ermöglichen kann.The costs can be used to periodically update the simulations and their parameters, which can allow for improved consistency with the real robot object system.
In einigen Ausführungsbeispielen kann eine Kostenfunktion verwendet werden, die hinreichend mit Unterschieden zwischen Objektposen während der Manipulation in der Hand korreliert, so dass niedrigere Kosten einer besseren Abschätzung der Posen entsprechen. Die Kostenfunktion kann durch die folgende symbolische mathematische Gleichung repräsentiert werden:
Für den ersten Term in der Kostenfunktion kann ein Vergleich von qts zwischen den simulierten und den realen Robotern sinnvoll sein, selbst wenn sie dasselbe ut haben, da qt abhängig von den Kollisionsbeschränkungen, die durch die aktuelle Objektpose in Kontakt mit der Roboterhand auferlegt werden, unterschiedlich sein kann, was es für ein Gelenk physikalisch unmöglich machen kann, einen befohlenen Zielwinkel zu erreichen.For the first term in the cost function, a comparison of q t s between the simulated and the real robots can make sense even if they have the same u t , since q t depends on the collision constraints imposed by the current object pose in contact with the robot hand imposed may be different, which may make it physically impossible for a joint to achieve a commanded target angle.
In mindestens einem Ausführungsbeispiel gilt ein Berührungssensor als in Kontakt, wenn seine Kraftgröße größer als ein bestimmter Schwellenwert ist. In mindestens einem Ausführungsbeispiel ist α(i,l) gleich 1, wenn der binäre Kontaktzustand des l-ten Berührungssensors der i-ten Simulation mit dem des realen Berührungssensors übereinstimmt, und ansonsten gleich 0. In mindestens einem Ausführungsbeispiel ist β(i,l) gleich 1, wenn der l-te Berührungssensor der i-ten Simulation mit dem realen Berührungssensor darin übereinstimmt, ob der Sensor translatorischen Schlupf erfährt oder nicht, andernfalls 0; γ(i,l) ist dasselbe für rotierenden Schlupf.In at least one embodiment, a touch sensor is considered in contact when its force magnitude is greater than a certain threshold. In at least one embodiment, α (i,l) equals 1 if the binary contact state of the l th touch sensor of the ith simulation matches that of the real touch sensor, and equals 0 otherwise. In at least one embodiment, β (i,l ) equal to 1 if the l th touch sensor of the ith simulation agrees with the real touch sensor in whether or not the sensor experiences translational slip, 0 otherwise; γ (i,l) is the same for rotating slip.
In mindestens einem Ausführungsbeispiel gibt ΔM(•,•) für beliebige zwei Vektoren die Differenz ihrer Beträge an, und Δφ(•,•) gibt den Winkel zwischen ihnen an. In mindestens einem Ausführungsbeispiel gibt für beliebige zwei Rotationen Ra und Rb, Δ(Ra,Rb) den Winkel der Achsenwinkeldarstellung von
In verschiedenen Ausführungsbeispielen können zwei Unsicherheitsquellen bei der Abschätzung der Objektpose durch die Simulation auftreten: 1) die initiale Posenabschätzung p0 aus dem visionsbasierten Posenschätzer kann verrauscht sein, und 2) es kann eine Fehlanpassung zwischen der simulierten und der realen Dynamik geben, teilweise veranlasst durch unvollkommene Modellierung und teilweise durch die unbekannten physikalischen Parameter θ der realen Welt.In various embodiments, two sources of uncertainty may arise in the simulation's estimation of the object pose: 1) the initial pose estimate p 0 from the vision-based pose estimator may be noisy, and 2) there may be a mismatch between the simulated and real dynamics, caused in part by imperfect modeling and partly due to the unknown physical parameters θ of the real world.
In mindestens einem Ausführungsbeispiel wird das erste Problem der Unsicherheit der initialen Posenabschätzung angegangen, indem die initialen Posenabschätzungen über die verschiedenen Simulationen hinweg gestört werden, indem Stichproben aus einer Verteilung gezogen werden, die um die visionsbasiert geschätzte Pose
In mindestens einem Ausführungsbeispiel wird ein zweites Problem der Nichtübereinstimmung zwischen simulierter und realer Physik (engl. „sim to real“-Lücke) durch die Verwendung von derivatefreien, stichproben-basierten Optimierungsalgorithmen zur Abstimmung von θ während der Posenverfolgung behandelt. In verschiedenen Ausführungsbeispielen können nach jeweils TZeitschritten die durchschnittlichen Kosten aller Simulationen während dieses Fensters zusammen mit dem Simulationszustand und den Parametern an einen bestimmten Optimierer übergeben werden. In mindestens einem Ausführungsbeispiel bestimmt der Optimierer den nächsten Satz von Simulationen mit ihren eigenen aktualisierten Parametern. In mindestens einem Ausführungsbeispiel werden die Simulationen des nächsten Satzes aus den Simulationen des aktuellen Satzes entnommen, wobei einige zusätzliche Störungen (Abweichungen) zu den Simulationsparametern und der Objektpose hinzugefügt werden. In mindestens einem Ausführungsbeispiel kann eine solche Herangehensweise die Vielfalt der Simulationen aufrechterhalten und verhindern, dass sie aufgrund von verrauschten Beobachtungen in suboptimalen Simulationsparametern oder - zuständen steckenbleiben.In at least one embodiment, a second sim to real physics mismatch problem is addressed by using derivative-free, sample-based optimization algorithms to tune θ during pose tracking. In various embodiments, the average cost of all simulations during this window, together with the simulation state and parameters, can be passed to a particular optimizer after every Ttimesteps. In at least one embodiment, the optimizer determines the next set of simulations with their own updated parameters. In at least one embodiment, the simulations of the next set are extracted from the simulations of the current set, adding some additional perturbations (deviations) to the simulation parameters and object pose. In at least one embodiment, such an approach can maintain the diversity of the simulations and prevent them from getting stuck in sub-optimal simulation parameters or states due to noisy observations.
Obwohl es wünschenswert sein kann, dass θ(i*) gegen das wahre θ(gt) konvergiert, kann dies nicht notwendig sein, um eine gute Posenabschätzung zu erreichen. Darüber hinaus kann aufgrund der Unterschiede zwischen der simulierten und der realen Dynamiken das optimale θ zur Reduktion von C auf die entsprechenden Werte in der realen Welt geringfügige Abweichungen von den berechneten theoretischen Vorhersagen aufweisen.Although it may be desirable to have θ (i*) converge to the true θ (gt) , this may not be necessary to achieve a good pose estimate. Furthermore, due to the differences between the simulated and real dynamics, the optimal θ for reducing C to the corresponding values in the real world may show slight deviations from the calculated theoretical predictions.
Die Parameter der K-Simulationen können durch drei derivatefreie, stichproben-basierte Optimierer optimiert werden:The parameters of the K-simulations can be optimized by three derivative-free, sample-based optimizers:
In einem Ausführungsbeispiel wird ein Optimierer mit gewichtetem Neuabtasten (engl. resampling, „WRS“) verwendet. In verschiedenen Ausführungsbeispielen kann WRS eine Wahrscheinlichkeitsmassenfunktion (engl. probability mass function, PMF) über die vorhandenen Simulationszustände s(1:K) bilden und K-mal mit Ersetzung aus dieser Verteilung abtasten, um den nächsten Satz von Simulationen zu bilden. Um die PMF zu bilden, kann WRS Softmax auf die Simulationskosten anwenden:
Hier kann λ ein Temperatur-Hyperparameter sein, der die Schärfe der Verteilung bestimmt. In mindestens einem Ausführungsbeispiel wird nach der Neuabtastung eine Exploration an Simulationen durchgeführt, indem die Simulationsparameter θ und die Objektpose gestört werden.Here λ can be a temperature hyperparameter that determines the sharpness of the distribution. In at least one embodiment, after resampling, an exploration of simulations is performed by perturbing the simulation parameters θ and the object pose.
In mindestens einem Ausführungsbeispiel werden die Simulationsparameter durch Stichproben aus einer isotropen Normalverteilung um die vorherigen Parameter gestört:
In einem Ausführungsbeispiel wird ein Optimierer mit relativer Entropie (engl. Relative Entropy Policy Search, „REPS“) verwendet. In mindestens einem Ausführungsbeispiel wird eine stichproben-basierte Variante von REPS verwendet, die Gewichte für jede Simulation berechnet und Stichproben aus einer Verteilung nimmt, die durch die Softmax dieser Gewichte gebildet wird. Während WRS einen festen λ-Parameter verwenden kann, um die Verteilung zu formen, kann REPS nach einem adaptiven Temperaturparameter η suchen, der die Leistung der Gesamtverteilung in Abhängigkeit von ∈ am besten verbessert, was eine Einschränkung der KL-Divergenz zwischen der alten und der aktualisierten Probenverteilung sein kann.In one embodiment, a Relative Entropy Policy Search ("REPS") optimizer is used. In at least one embodiment, a sample-based variant of REPS is used that computes weights for each simulation and samples from a distribution formed by the softmax of those weights. While WRS can use a fixed λ parameter to shape the distribution, REPS can look for an adaptive temperature parameter η that best improves the performance of the overall distribution as a function of ∈, imposing a constraint on the KL divergence between the old and the updated sample distribution can be.
Um REPS zu verwenden, werden in mindestens einem Ausführungsbeispiel die Kosten als Belohnungen umformuliert, indem Ri = maxjCj + minjCj - Ci gesetzt wird. Der Parameter η kann in jedem Schritt durch Optimierung der dualen Funktion g(η) berechnet werden, und dann kann η zur Bildung des PMF verwendet werden:
Nach der Neuabtastung kann eine Simulation auf die gleiche Weise wie bei WRS gestört (engl. perturbed) werden.After resampling, a simulation can be perturbed in the same way as in WRS.
In verschiedenen Ausführungsbeispielen kann ein populationsbasierter Optimierungsalgorithmus („PBO“) verwendet werden. In mindestens einem Ausführungsbeispiel ordnet der PBO-Algorithmus alle Simulationen nach ihren durchschnittlichen Kosten und findet die besten Kbest Simulationen mit den niedrigsten Kosten. In mindestens einem Ausführungsbeispiel nutzt der Algorithmus, indem er die verbleibenden K - Kbest Simulationen durch Kopien der Kbest Simulationen ersetzt, die mit Ersetzung abgetastet werden, und erforscht (engl. explored), indem er die Kbest Simulationen auf die gleiche Weise wie bei WRS stört (engl. perturb). In mindestens einem Ausführungsbeispiel verwendet PBO effektiv geformte Kosten, die nur von der relativen Anordnung der Simulationskosten abhängen und nicht von deren Größenordnungen, was den Optimierer möglicherweise robuster gegenüber verrauschten Kosten macht.In various embodiments, a population based optimization algorithm ("PBO") may be used. In at least one embodiment, the PBO algorithm ranks all simulations by their average cost and finds the best K best simulations with the lowest cost. In at least one embodiment, the algorithm exploits, replacing the remaining K - K best simulations with copies of the K best simulations sampled with replacement, and explores, by examining the K best simulations in the same manner as at WRS disturbs (engl. perturb). In at least one embodiment, PBO effectively uses shaped costs that depend only on the relative location of the simulation costs and not on their magnitudes, potentially making the optimizer more robust to noisy costs.
In mindestens einem Ausführungsbeispiel verwenden die oben beschriebenen Optimierer einen verteilungsformenden Hyperparameter, der verwendet wird, um ein Gleichgewicht zwischen Erforschung (Exploration) und Ausnutzung (Exploitation) herzustellen. In mindestens einem Ausführungsbeispiel können verschiedene Ausführungsbeispiele Kombinationen von zusätzlichen Hyperparametern wie die folgenden verwenden:
- • T, as die Zeitschritte repräsentieren kann, die ein Algorithmus bei jeder Aktualisierung wartet.
- • K, das die Anzahl der gleichzeitigen Simulationen repräsentieren kann.
- • θ0, das die initiale Normalverteilung der Simulationsparameter repräsentieren kann.
- • Σp, das die diagonale Kovarianzmatrix für die Normalverteilung über die initiale Posenstörung repräsentieren kann.
- • Σθ und Σv, die die diagonalen Kovarianzen der Normalverteilungen der für die Exploration verwendeten Störungen repräsentieren können.
- • T, as can represent the time steps an algorithm waits at each update.
- • K, which can represent the number of simultaneous simulations.
- • θ 0 , which can represent the initial normal distribution of the simulation parameters.
- • Σ p , which can represent the diagonal covariance matrix for the normal distribution over the initial pose perturbation.
- • Σ θ and Σ v , which can represent the diagonal covariances of the normal distributions of the faults used for exploration.
Ein größeres K kann generell besser sein als ein kleineres K, mit dem Vorbehalt, dass die resultierende Simulation langsamer sein kann und in der Anwendung nicht praktikabel ist. Σp kann so groß sein, dass die tatsächliche initiale Pose in der initialen Posenverteilung gut repräsentiert wird. Allerdings kann K mit einem größeren Σp und der Konvarianz von θ0 erhöht werden, um sicherzustellen, dass die Dichte der Stichproben hoch genug ist, um eine breitere Verteilung zu erfassen.A larger K can generally be better than a smaller K, with the caveat that the resulting simulation can be slower and impractical in the application. Σ p can be so large that the actual initial pose is well represented in the initial pose distribution. However, with a larger Σ p and the convariance of θ 0 , K can be increased to ensure that the sampling density is high enough to capture a broader distribution.
In mindestens einem Ausführungsbeispiel gibt es zwei zusätzliche Abwägungen mit diesen Hyperparametern. In mindestens einem Ausführungsbeispiel ist eine Abwägung die Abwägung zwischen Erforschung (Exploration) und Ausnutzung (Exploitation) im Zusammenhang mit der Optimierung für θ, und die andere Abwägung ist die Abwägung zwischen der Optimierung von θ und von
In verschiedenen Ausführungsbeispielen kann ein Physiksimulator als Vorwärtsmodell anstelle eines konstanten Modells verwendet werden. Zusätzlich zur Verfolgung der Objektpose kann der vorgeschlagene Algorithmus auch den Kontext des Vorwärtsmodells identifizieren, indem er die Simulationsparameter θ einstellt, die nicht durch das Vorwärts- oder Beobachtungsmodell beeinflusst werden können. Die Optimierer können auf diskreten Abtastungen basieren, da Posen von in der Hand befindlichen Objekten aus einer bestimmten Verteilung aufgrund komplizierter Netzdurchdringungsbeschränkungen durch Kontakte nicht einfach abgetastet werden können.In various embodiments, a physics simulator can be used as a forward model instead of a constant model. In addition to tracking the object pose, the proposed algorithm can also identify the context of the forward model by adjusting the simulation parameters θ, which cannot be influenced by the forward or observation model. The optimizers can be based on discrete sampling, since poses of hand-held objects from a given distribution cannot easily be sampled by contacts due to complicated network penetration limitations.
In verschiedenen Ausführungsbeispielen kann das System sowohl mit Simulationen als auch mit Experimenten in der realen Welt evaluiert werden, wobei eine Allegro-Hand an einem Kuka IIWA7-Roboterarm verwendet wird, obwohl in verschiedenen Ausführungsbeispielen jede beliebige Hand, jeder beliebige Roboterarm, jede beliebige Roboterkomponente und/oder Variationen davon verwendet werden können. Die Trajektorien der Manipulation in der Hand können zunächst mit einem Teleoperationssystem zur Handverfolgung gesammelt werden, und die Fehler bei der Posenabschätzung können evaluiert werden, indem die vorgeschlagenen Algorithmen offline anhand der gesammelten Trajektorien ausgeführt werden.
In verschiedenen Ausführungsbeispielen kann die Allegro-Hand mit 4 Fingern und 16 DoF auf dem Kuka IIWA7-Roboterarm mit 7 DoF montiert werden. Um Feedback durch Kontakte in der realen Welt zu erhalten, können SynTouch BioTac-Sensoren oder eine Variation davon an jeder der Fingerspitzen angebracht sein. Ein oder mehrere Prozesse, die in Verbindung mit verschiedenen Sensoren und den unbearbeiteten Elektrodenmesswerten der Sensoren durchgeführt werden, können verwendet werden, um die Kontaktkraft, die Schlupfrichtung und die Stabilität des Griffs vorherzusagen. Ein trainiertes Modell kann verwendet werden, um Kraftvektoren ct abzuschätzen. In verschiedenen Beispielen können die Kostenfunktionen keine Terme für Schlupf enthalten. Die Simulationen können auf einem Computer mit einer oder mehreren grafischen Verarbeitungseinheiten, einer oder mehreren zentralen Verarbeitungseinheiten und einer oder mehreren Speichereinheiten durchgeführt werden.In various embodiments, the 4-finger, 16-DoF Allegro hand can be mounted on the Kuka IIWA7 7-DoF robotic arm. To get feedback from real-world contacts, SynTouch BioTac sensors, or a variation thereof, can be attached to each of the fingertips. One or more processes performed in conjunction with various sensors and the sensors' raw electrode readings may be used to determine the contact power to predict slip direction and grip stability. A trained model can be used to estimate force vectors c t . In various examples, the cost functions may not include terms for slack. The simulations may be performed on a computer having one or more graphical processing units, one or more central processing units, and one or more storage units.
In verschiedenen Ausführungsbeispielen können drei Objekte aus dem Yale Columbia Berkeley („YCB“)-Objektdatensatz (Spam-Dose, Schaumstoff-Klotz und Spielzeugbanane) mit Modellen, Texturen und Punktwolken verwendet werden. Die Objekte können basierend auf Einschränkungen hinsichtlich der Größe der Roboterhand ausgewählt werden und darauf, dass die Objekte leicht genug sind, damit die Roboterhand (z. B. die Allegro-Hand) robuste Präzisionsgriffe mit ihren Fingerspitzen durchführen kann.In various embodiments, three objects from the Yale Columbia Berkeley ("YCB") object dataset (Spam Can, Foam Block, and Toy Banana) may be used with models, textures, and point clouds. The objects can be chosen based on constraints of the size of the robotic hand and that the objects be light enough for the robotic hand (e.g., the Allegro hand) to perform robust, precision grips with its fingertips.
In einigen Beispielen können für jedes Objekt, sowohl in der Simulation als auch in realen Experimenten, 2 Demonstrationen von 2 Arten von Trajektorien für die Manipulation verwendet werden: 1) Aufnehmen und Platzieren (Pick-and-Place) mittels eines Fingergriffs und Rotieren des Objekts in der Hand und 2) das Gleiche, aber mit Fingerspitzen, die den Kontakt während des Griffs unterbrechen und wieder herstellen (Finger-Bewegungen). Dies kann insgesamt 24 Trajektorien ergeben, die sowohl für Simulationen als auch für Experimente in der realen Welt analysiert werden können. Bei beiden Trajektorien kann das Objekt sowohl durch Trägheitskräfte als auch durch Druckkontakte mit dem Tisch translatorisch und rotierend verschoben werden. Jede Trajektorie kann etwa eine Minute dauern. In verschiedenen Ausführungsbeispielen kann der Algorithmus zur Posenabschätzung mit ca. 30 Hz ausgeführt werden, was insgesamt ca. 2k Einzelbilder pro Trajektorie ergeben kann.In some examples, for each object, both in simulation and in real experiments, 2 demonstrations of 2 types of trajectories can be used for manipulation: 1) pick-and-place using a finger grip and rotate the object in the hand and 2) the same but with fingertips breaking and re-establishing contact during the grip (finger movements). This can give a total of 24 trajectories that can be analyzed for both simulations and real-world experiments. In both trajectories, the object can be translated and rotated both by inertial forces and by pressure contacts with the table. Each trajectory can last about a minute. In various exemplary embodiments, the pose estimation algorithm can be executed at approximately 30 Hz, which can result in a total of approximately 2k individual images per trajectory.
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 Neuausrichten 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, e.g., 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 hand's joint angles. In at least one embodiment, these estimates, along with a moving hand model and the original point cloud, are then passed to DART, which performs the tracking by refining the neural network estimates. Finally, to perform kinematic realignment, 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.
Zusätzlich zu den oben genannten Optimierern (WRS, REPS, PBO) können auch die folgenden beiden Grundfunktionen ausgewertet werden: Open Loop („OLP“) und Identity („EYE“). OLP kann die Objektpose mit 1 Simulation nachführen. EYE kann mit einem Satz von verrauschten initialen Posen initialisiert werden und kann immer die Pose der Simulation mit den geringsten Kosten wählen, aber es kann kein Neuabtasten (Resampling) oder Optimierungs-Updates durchführen. In verschiedenen Ausführungsbeispielen kann eine durchschnittliche Abstandsabweichung (engl. Average Distance Deviation, „ADD“) als Bewertungsmaßstab verwendet werden. ADD kann den durchschnittlichen Abstand zwischen korrespondierenden Punkten in der Objekt-Point Cloud berechnen, die sich in der Grundwahrheitspose und in der vorhergesagten Pose befinden.In addition to the optimizers mentioned above (WRS, REPS, PBO), the following two basic functions can also be evaluated: Open Loop ("OLP") and Identity ("EYE"). OLP can track the object pose with 1 simulation. EYE can be initialized with a set of noisy initial poses and can always choose the pose of the simulation with the lowest cost, but it cannot perform resampling or optimization updates. In various exemplary embodiments, an average distance deviation (“ADD”) can be used as an evaluation criterion. ADD can calculate the average distance between corresponding points in the object point cloud that are in the ground truth pose and the predicted pose.
In verschiedenen Ausführungsbeispielen können Arm und Hand in der Simulation über eine Gelenkwinkel-PD-Steuerung gesteuert werden, und die Verstärkungen der Steuerung können so eingestellt werden, dass die Gelenkwinkel-Sprungantworten denen des realen Roboters ähneln. Um die Simulation zu beschleunigen, können die Kollisionsnetze des Roboters und der Objekte vereinfacht werden. Dies kann mit verschiedenen Hilfsmitteln erfolgen, z. B. durch Anwendung eines Algorithmus wie dem TetWild-Algorithmus, der ein Netz mit Dreiecken ergibt, die gleichseitiger sind als andere Algorithmen, wie z. B. das Quadric Edge Collapse Decimation von MeshLab 1. Insgesamt kann jede Simulation höchstens 200 Kontakte während der Manipulation erzeugen, und es können K = 40 Simulationen mit 30 Hz durchgeführt werden.In various embodiments, the arm and hand in the simulation can be controlled via a joint angle PD controller, and the controller's gains can be adjusted so that the joint angle jump responses resemble those of the real robot. To speed up the simulation, the collision meshes of the robot and objects can be simplified. This can be done with various tools, e.g. B. by applying an algorithm such as the TetWild algorithm, which yields a mesh with triangles that are more equilateral than other algorithms such as
Die Simulationsexperimente können mit unterschiedlichen Mengen an initialem Rauschen der initialen Pose durchgeführt werden. Es können drei Levels getestet werden: „Niedrig“ kann eine Standardabweichung der Translation von 1 mm und eine Standardabweichung der Rotation von 0,01 Radiant haben. „Mittel“ kann 5 mm und 0,1 Radiant betragen, und „High“ kann 10 mm und 1 Radiant betragen.The simulation experiments can be performed with different amounts of initial noise of the initial pose. Three levels can be tested: Low can have a translation standard deviation of 1 mm and a rotation standard deviation of 0.01 radians. Medium can be 5 mm and 0.1 radians, and High can be 10 mm and 1 radians.
In einem Ausführungsbeispiel zeigen
Die Algorithmen können an Trajektorien aus der realen Welt evaluiert werden, die denen aus der Simulation ähneln. PoseRBPF kann verwendet werden, um die Objektpose im ersten und letzten Einzelbild einer Trajektorie zu registrieren. Die initiale Posenabschätzung kann zur Initialisierung der Simulationen verwendet werden, während die letzte zur Bewertung der Genauigkeit des auf Kontakten basierenden Posenverfolgungsalgorithmus verwendet werden kann. Im Gegensatz zu den Simulationsexperimenten kann bei den Experimenten in der realen Welt die Objektpose durch Stichproben aus der Verteilung über die Objektposen von PoseRBPF initialisiert werden, so dass die initialen Posenstichproben den Unsicherheiten des visionsbasierten Algorithmus für die Posenabschätzung entsprechen.The algorithms can be evaluated on real-world trajectories that are similar to those from the simulation. PoseRBPF can be used to register the object pose in the first and last frame of a trajectory. The initial pose estimate can be used to initialize the simulations, while the last one can be used to assess the accuracy of the contacts-based pose tracking algorithm. In contrast to the simulation experiments, in the real-world experiments the object pose can be initialized by sampling from the distribution over the object poses of PoseRBPF such that the initial pose samples correspond to the uncertainties of the vision-based pose estimation algorithm.
In mindestens einem Ausführungsbeispiel wird ein stichproben-basierter Optimierungsalgorithmus für die Verfolgung Posen von Objekten in der Hand während der Manipulation durch Feedback durch Kontakte und GPU-beschleunigte Robotersimulation entwickelt. In mindestens einem Ausführungsbeispiel werden in parallelen Simulationen gleichzeitig viele Prinzipien über die reale Welt beibehalten und Änderungen der Objektpose modelliert, die durch komplexe Kontaktdynamik veranlasst werden können. In mindestens einem Ausführungsbeispiel stellt der Optimierungsalgorithmus die Simulationsparameter während der Verfolgung der Objektpose ein, um die Verfolgungsleistung weiter zu verbessern. In verschiedenen Ausführungsbeispielen kann die Erfassung von Kontakten in der realen Welt durch den Einsatz von Vision in der Schleife verbessert werden.In at least one embodiment, a sample-based optimization algorithm for tracking poses of in-hand objects during manipulation through feedback through contacts and GPU-accelerated robotic simulation is developed. In at least one embodiment, parallel simulations simultaneously maintain many principles about the real world and model changes in object poses that may be induced by complex contact dynamics. In at least one embodiment, the optimization algorithm adjusts the simulation parameters during object pose tracking to further improve tracking performance. In various embodiments, the detection of contacts in the real world can be improved through the use of vision in the loop.
In mindestens einem Ausführungsbeispiel erhält das Computersystem in Schritt 1302 taktile Informationen von einem oder mehreren Berührungssensoren einer Roboterhand, die zur Manipulation eines Objekts verwendet wird. In mindestens einem Ausführungsbeispiel sind die Berührungssensoren BioTac-Sensoren, die mit einer Reibungsbeschichtung ausgestattet sind. In mindestens einem Ausführungsbeispiel sind die Daten des Berührungssensors ein zweidimensionales Array von Kraftdaten, das über die Oberfläche des Berührungssensors verteilte Kräfte repräsentiert.In at least one embodiment, in step 1302, the computer system obtains tactile information from one or more touch sensors of a robotic hand used to manipulate an object. In at least one embodiment, the touch sensors are BioTac sensors equipped with a friction coating. In at least one embodiment, the touch sensor data is a two-dimensional array of force data representing forces distributed across the surface of the touch sensor.
In mindestens einem Ausführungsbeispiel erzeugt das Computersystem in Schritt 1304 einen Satz von Simulationen, die die vom Roboter ausgeführte Manipulation simulieren, und bestimmt einen Satz von simulierten Berührungssensor-Informationen 1306 für jede Simulation. In mindestens einem Ausführungsbeispiel verwendet jede Simulation eine andere Pose für das Objekt. In mindestens einem Ausführungsbeispiel wird eine abgeschätzte Pose für das Objekt aus einem oder mehreren Bildern des Objekts gewonnen.In at least one embodiment, in
In mindestens einem Ausführungsbeispiel bestimmt das Computersystem in Schritt 1308 einen Kostenwert für jede Simulation, basierend zumindest teilweise auf den Unterschieden zwischen den in der realen Welt gemessenen Berührungssensorinformationen und den in der Simulation ermittelten Berührungsinformationen. In einem Ausführungsbeispiel können die Kosten wie oben beschrieben bestimmt werden. Mindestens teilweise basierend auf den für jede Simulation ermittelten Kosten wird eine Simulation identifiziert, die am ehesten mit den Beobachtungen in der realen Welt übereinstimmt 1310. In mindestens einem Ausführungsbeispiel wird die Pose des Objekts in der identifizierten Simulation als die Pose des Objekts in der realen Welt bestimmt 1312.In at least one embodiment, in
In mindestens einem Ausführungsbeispiel kann die Pose bei der Durchführung einer Aufgabe verwendet werden, bei der das Objekt in der Hand manipuliert wird. Zum Beispiel kann die Pose einer Schraubenmutter in der Hand bestimmt werden, damit der Roboter die Mutter auf einen Gewindebolzen positionieren kann. In einem anderen Beispiel kann die Pose eines Objekts in der Hand verwendet werden, wenn das Objekt auf eine horizontale Fläche gesetzt wird, um sicherzustellen, dass das Objekt aufrecht und stabil ist, wenn es von der Roboterhand losgelassen wird.In at least one embodiment, the pose may be used in performing a task that involves manipulating the object in hand. For example, the pose of a nut in the hand can be determined so that the robot can position the nut onto a threaded bolt. In another example, the pose of an object in hand can be used when placing the object on a horizontal surface to ensure that the object is upright and stable when released from the robotic hand.
In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1415 ohne Einschränkung einen Code- und/oder Datenspeicher 1401 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 1415 den Code und/oder den Datenspeicher 1401 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 1401 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 1401 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
In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1401 intern oder extern von einem oder mehreren Prozessoren oder anderen Hardware-Logik-Geräten oder -Schaltungen ausgeführt sein. In mindestens einem Ausführungsbeispiel kann der Code- und/oder der Code- und/oder Datenspeicher 1401 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 1401 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
In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1415 ohne Einschränkung einen Code und/oder einen Datenspeicher 1405 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 1405 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 1415 einen Code- und/oder Datenspeicher 1405 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 1405 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 1405 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 1405 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 1405 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
In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1401 und der Code- und/oder Datenspeicher 1405 separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1401 und der Code- und/oder Datenspeicher 1405 dieselbe Speicherstruktur sein. In mindestens einem Ausführungsbeispiel können der Code- und/oder Datenspeicher 1401 und der Code- und/oder Datenspeicher 1405 teilweise die gleiche Speicherstruktur und teilweise separate Speicherstrukturen sein. In mindestens einem Ausführungsbeispiel kann jeder Teil des Code- und/oder Datenspeichers 1401 und des Code- und/oder Datenspeichers 1405 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
In mindestens einem Ausführungsbeispiel kann die Inferenz- und/oder Trainingslogik 1415 ohne Einschränkung eine oder mehrere arithmetisch-logische Einheit(en) („ALU(s)“) 1410, 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 1420 gespeicherte Aktivierungen (z.B. Ausgabewerte von Schichten oder Neuronen innerhalb eines neuronalen Netzes) erzeugen kann, die Funktionen von in Code- und/oder Datenspeicher 1401 und/oder Code- und/oder Datenspeicher 1405 gespeicherten Ein-/Ausgabe- und/oder Gewichtsparameterdaten sind. In mindestens einem Ausführungsbeispiel werden in einem Aktivierungsspeicher 1420 gespeicherte Aktivierungen gemäß linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von ALU(s) 1410 als Reaktion auf die Ausführung von Befehlen oder anderem Code ausgeführt wird, wobei in Code- und/oder Datenspeicher 1405 und/oder Daten 1401 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 1405 oder Code- und/oder Datenspeicher 1401 oder einem anderen Speicher on oder off-chip gespeichert werden können, verwendet werden.In at least one embodiment, the inference and/or
In mindestens einem Ausführungsbeispiel sind die ALU(s) 1410 in einem oder mehreren Prozessoren oder anderen Hardware-Logikgeräten oder -schaltungen enthalten, während in einem anderen Ausführungsbeispiel die ALU(s) 1410 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) 1410 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 1401, der Code- und/oder Datenspeicher 1405 und der Aktivierungsspeicher 1420 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 1420 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) 1410 reside within one or more processors or other hardware logic device or circuitry, while in another embodiment, the ALU(s) 1410 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) 1410 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,
In mindestens einem Ausführungsbeispiel kann der Aktivierungsspeicher 1420 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder ein anderer Speicher sein. In mindestens einem Ausführungsbeispiel kann der Aktivierungsspeicher 1420 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 1420 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
In mindestens einem Ausführungsbeispiel entspricht jeder der Code- und/oder Datenspeicher 1401 und 1405 und der entsprechenden Rechen-Hardware 1402 bzw. 1406 verschiedenen Schichten eines neuronalen Netzes, so daß die aus einem „Speicher-/Berechnungspaar 1401/1402“ resultierende Aktivierung des Code- und/oder Datenspeichers 1401 und der Rechen-Hardware 1402 als Eingabe für das nächste „Speicher-/Berechnungspaar 1405/1406“ des Code- und/oder Datenspeichers 1405 und der Rechen-Hardware 1406 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzes widerzuspiegeln. In mindestens einem Ausführungsbeispiel kann jedes der Speicher-/Berechnungspaare 1401/1402 und 1405/1406 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 1401/1402 und 1405/1406 in der Inferenz- und/oder Trainingslogik 1415 enthalten sein.In at least one embodiment, each of the code and/or
In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netz 1506 unter Verwenden von beaufsichtigtem Lernen trainiert, wobei der Trainingsdatensatz 1502 eine Eingabe gepaart mit einer gewünschten Ausgabe für eine Eingabe umfasst, oder wobei der Trainingsdatensatz 1502 eine Eingabe mit einer bekannten Ausgabe umfasst und eine Ausgabe des neuronalen Netzes 1506 manuell abgestuft wird. In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netz 1506 unter Aufsicht trainiert, verarbeitet Eingaben aus dem Trainingsdatensatz 1502 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 1506 zurückpropagiert. In mindestens einem Ausführungsbeispiel passt das Trainings-Framework 1504 Gewichte an, die das untrainierte neuronale Netz 1506 steuern. In mindestens einem Ausführungsbeispiel umfasst das Trainings-Framework 1504 Werkzeuge, mit denen überwacht werden kann, wie gut das untrainierte neuronale Netzwerk 1506 zu einem Modell wie dem trainierten neuronalen Netzwerk 1508 konvergiert, das geeignet ist, auf der Grundlage bekannter Eingabedaten wie z.B. neuer Daten 1512 korrekte Antworten wie im Ergebnis 1514 zu generieren. In mindestens einem Ausführungsbeispiel trainiert das Trainings-Framework 1504 das untrainierte neuronale Netz 1506 wiederholt, während die Gewichte angepasst werden, um eine Ausgabe des untrainierten neuronalen Netzes 1506 unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie z.B. stochastischer Gradientenabfall, zu verfeinern. In mindestens einem Ausführungsbeispiel trainiert das Trainings-Framework 1504 das untrainierte neuronale Netz 1506, bis das untrainierte neuronale Netz 1506 eine gewünschte Genauigkeit erreicht. In mindestens einem Ausführungsbeispiel kann das trainierte neuronale Netz 1508 dann zur Implementierung einer beliebigen Anzahl von maschinellen Lernoperationen eingesetzt werden.In at least one embodiment, the untrained
In mindestens einem Ausführungsbeispiel wird das untrainierte neuronale Netz 1506 unter Verwendung von unbeaufsichtigtem Lernen trainiert, wobei das untrainierte neuronale Netz 1506 versucht, sich selbst unter Verwendung unmarkierter Daten zu trainieren. In mindestens einem Ausführungsbeispiel enthält der Datensatz 1502 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 1506 Gruppierungen innerhalb des Trainingsdatensatzes 1502 lernen und bestimmen, wie individuelle Eingaben mit dem untrainierten Datensatz 1502 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 1508 handelt, das in der Lage ist, Operationen durchzuführen, die zur Verringerung der Dimensionalität neuer Daten 1512 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 1512 ermöglicht, die von den normalen Mustern des neuen Datensatzes 1512 abweichen.In at least one embodiment, the untrained
In mindestens einem Ausführungsbeispiel kann halbbeaufsichtigtes Lernen verwendet werden, eine Technik, bei der der Datensatz 1502 im Training eine Mischung aus markierten und nicht markierten Daten umfasst. In mindestens einem Ausführungsbeispiel kann das Trainings-Framework 1504 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 1508, sich an neue Daten 1512 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
In mindestens einem Ausführungsbeispiel, wie in
In mindestens einem Ausführungsbeispiel können gruppierte Rechenressourcen 1614 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 1614 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
In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator 1612 einen oder mehrere Knoten-C.R.s 1616(1)-1616(N) und/oder gruppierte Rechenressourcen 1614 konfigurieren oder anderweitig steuern. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator 1612 eine Verwaltungseinheit für die Software-Design-Infrastruktur („SDI“) für das Datenzentrum 1600 umfassen. In mindestens einem Ausführungsbeispiel kann der Ressourcen-Orchestrator Hardware, Software oder eine Kombination davon umfassen.In at least one embodiment,
In mindestens einem Ausführungsbeispiel, wie in
In mindestens einem Ausführungsbeispiel kann Software 1632, die in der Software-Schicht 1630 enthalten ist, Software umfassen, die von mindestens Teilen der Knoten-C.R.s 1616(1)-1616(N), gruppierten Rechenressourcen 1614 und/oder dem verteilten Dateisystem 1638 der Framework-Schicht 1620 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,
In mindestens einem Ausführungsbeispiel kann/können die Anwendung(en) 1642, die in der Anwendungsschicht 1640 enthalten ist/sind, einen oder mehrere Typen von Anwendungen umfassen, die von mindestens Teilen der Knoten-C.R.s 1616(1)-1616(N), gruppierten Rechenressourcen 1614 und/oder dem verteilten Dateisystem 1638 der Framework-Schicht 1620 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) 1642 contained in the
In mindestens einem Ausführungsbeispiel kann jeder von dem Konfigurationsverwalter 1634, Ressourcenverwalter 1636 und Ressourcenorchestrator 1612 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 Datenzentrums 1600 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
In mindestens einem Ausführungsbeispiel kann das Datenzentrum 1600 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 1600 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 1600 beschriebenen Ressourcen verwendet werden, indem Gewichtsparameter verwendet werden, die durch eine oder mehrere hierin beschriebene Trainingstechniken berechnet werden.In at least one embodiment,
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 1415 wird verwendet, um Inferenz - und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. Zum Beispiel kann ein Generierungsnetzwerk oder ein Evaluierungsnetzwerk wie in
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. J3016-201806, veröffentlicht am 15. Juni 2018, Norm Nr. J3016-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 1700 eine Funktionalität gemäß einer oder mehreren der Stufen 1 - 5 der autonomen Fahrstufen aufweisen. Beispielsweise kann Fahrzeug 1700 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. J3016-201806 published on June 15, 2018, Standard No. J3016-201609 published on September 30, 2016, and previous and future versions of this standard). In one or more embodiments, the
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 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 1700 ohne Einschränkung ein Antriebssystem 1750 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 1750 mit einem Antriebsstrang des Fahrzeugs 1700 verbunden sein, der unter anderem ein Getriebe umfassen kann, um den Antrieb des Fahrzeugs 1700 zu ermöglichen. In mindestens einem Ausführungsbeispiel kann das Antriebssystem 1750 als Reaktion auf den Empfang von Signalen von einer oder mehreren Drossel/Beschleunigern 1752 gesteuert werden.In at least one embodiment,
In mindestens einem Ausführungsbeispiel wird ein Lenksystem 1754, das unter anderem ein Lenkrad umfassen kann, verwendet, um ein Fahrzeug 1700 zu lenken (z.B. entlang einer gewünschten Bahn oder Route), wenn ein Antriebssystem 1750 in Betrieb ist (z.B. wenn das Fahrzeug in Bewegung ist). In mindestens einem Ausführungsbeispiel kann ein Lenksystem 1754 Signale von Lenkaktuator(en) 1756 empfangen. Das Lenkrad kann für die volle Funktionalität der Automatisierung (Stufe 5) optional sein. In mindestens einem Ausführungsbeispiel kann ein Bremssensorsystem 1746 verwendet werden, um Fahrzeugbremsen als Reaktion auf den Empfang von Signalen von Bremsaktuator(en) 1748 und/oder Bremssensoren zu betätigen.In at least one embodiment, a
In mindestens einem Ausführungsbeispiel stellt(en) die Steuerung(en) 1736, der/die unter anderem ein oder mehrere System-on-Chips („SoCs") (nicht in
In mindestens einem Ausführungsbeispiel stellen Steuerung(en) 1736 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 1700 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“) 1758 (z.B. Sensor(en) des globalen Positionsbestimmungssystems (Global Positioning System), RADAR-Sensor(en) 1760, Ultraschallsensor(en) 1762, LIDAR-Sensor(en) 1764, Sensor(en) einer Trägheitsmesseinheit („IMU“) 1766 (z.B. Beschleunigungsmesser, Gyroskop(e), Magnetkompass(e), Magnetometer usw.), Mikrofon(e) 1796, Stereokamera(s) 1768, Weitwinkelkamera(s) 1770 (z.B. Fisheye-Kameras), Infrarotkamera(s) 1772, Surround-Kamera(s) 1774 (z.B. 360-Grad-Kameras), Fernkamera(s) (nicht in
In mindestens einem Ausführungsbeispiel können ein oder mehrere Steuerung(en) 1736 Eingaben (z. B. dargestellt durch Eingabedaten) von einem Kombiinstrument 1732 des Fahrzeugs 1700 empfangen und Ausgaben (z. B. dargestellt durch Ausgabedaten, Anzeigedaten usw.) über eine Mensch-Maschine-Schnittstellen- („HMI“) -Anzeige 1734, einen akustischen Signalgeber, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1700 bereitstellen. In mindestens einem Ausführungsbeispiel können die Ausgaben Informationen wie Fahrzeuggeschwindigkeit, Geschwindigkeit, Zeit, Kartendaten (z.B. eine hochauflösende Karte (nicht in
In mindestens einem Ausführungsbeispiel umfasst das Fahrzeug 1700 weiter eine Netzwerkschnittstelle 1724, die drahtlose Antenne(n) 1726 und/oder Modem(s) zur Kommunikation über ein oder mehrere Netzwerke verwenden kann. In mindestens einem Ausführungsbeispiel kann die Netzschnittstelle 1724 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) 1726 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
Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der Roboter ein autonomes Fahrzeug sein, und die Evaluierung und Generierung von Netzwerken kann unter Verwendung eines Computersystems in dem autonomen Fahrzeug implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the robot may be an autonomous vehicle, and the evaluation and generation of networks may be implemented using a computer system in the autonomous vehicle.
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 1700 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
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 perform advanced advanced driver assistance system (“ADAS”) functions (e.g., as part of a redundant or failsafe 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 (e.g., all cameras) can record and provide image data (e.g., video) simultaneously.
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 1700 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 1736 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 1700 (e.g., forward-facing cameras) can be used for all-around vision to identify forward-facing paths and obstacles, and to use one or more Provide
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 1770 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 1770 in
In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von Stereokamera(s) 1768 auch in einer nach vorn gerichteten Konfiguration enthalten sein. In mindestens einem Ausführungsbeispiel können eine oder mehrere der Stereokamera(s) 1768 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 1700 zu generieren, einschließlich einer Entfernungsschätzung für alle Bildpunkte. In mindestens einem Ausführungsbeispiel können eine oder mehrere Stereokamera(s) 1768 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 1700 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) 1768 zusätzlich zu oder alternativ zu den hier beschriebenen verwendet werden.In at least one embodiment, any number of stereo camera(s) 1768 may also be included in a forward-facing configuration. In at least one embodiment, one or more of the stereo camera(s) 1768 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
In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung seitlich des Fahrzeugs 1700 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) 1774 (z.B. vier Surround-Kameras 1774 wie in
In mindestens einem Ausführungsbeispiel können Kameras mit einem Sichtfeld, das Teile der Umgebung hinter dem Fahrzeug 1700 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 1798 und/oder Mittelbereichskamera(s) 1776, Stereokamera(s) 1768), Infrarotkamera(s) 1772 usw.), wie hier beschrieben.In at least one embodiment, cameras with a field of view that includes portions of the environment behind the vehicle 1700 (e.g., backup cameras) may be used for parking assist, surround view, 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) 1798 and/or mid-range camera(s) 1776, stereo camera(s) 1768 ), infrared camera(s) 1772 etc.) as described here.
Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der Roboter ein autonomes Fahrzeug sein, und die Evaluierungs- und Generierungsnetzwerke können unter Verwendung eines Computersystems in dem autonomen Fahrzeug implementiert werden. In mindestens einem Ausführungsbeispiel ist die Tiefenkamera, die zur Erfassung der Punktwolke eines zu greifenden Objekts verwendet wird, eine Kamera, ein Sonar, ein Radar oder ein Lidar in einem autonomen Fahrzeug.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the robot can be an autonomous vehicle, and the evaluation and generation networks can be implemented using a computer system in the autonomous vehicle. In at least one embodiment, the depth camera used to capture the point cloud of an object to be grasped is a camera, sonar, radar, or lidar in an autonomous vehicle.
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 1702 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 1702 zur Ausführung verschiedener Funktionen und/oder zur Redundanz verwendet werden. Beispielsweise kann ein erster Bus 1702 für die Funktionalität der Kollisionsvermeidung und ein zweiter Bus 1702 für die Steuerung der Betätigung verwendet werden. In mindestens einem Ausführungsbeispiel kann jeder Bus 1702 mit jeder beliebigen Komponente des Fahrzeugs 1700 kommunizieren, und zwei oder mehr Busse 1702 können mit denselben Komponenten kommunizieren. In mindestens einem Ausführungsbeispiel kann jedes von beliebig vielen Systemen auf Chip(s) („SoC(s)“) 1704, jede Steuerung(en) 1736 und/oder jeder Computer im Fahrzeug Zugriff auf dieselben Eingabedaten (z.B. Eingänge von Sensoren des Fahrzeugs 1700) 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
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 eine oder mehrere Steuerungen 1736 umfassen, wie die hier in Bezug auf
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 eine beliebige Anzahl von SoCs 1704 umfassen. Jeder der SoCs 1704 kann, ohne Einschränkung, Zentraleinheiten („CPU(s)“) 1706, Grafikverarbeitungseinheiten („GPU(s)“) 1708, Prozessor(en) 1710, Cache(s) 1712, Beschleuniger (engl. accelerator) 1714, Datenspeicher 1716 und/oder andere nicht gezeigte Komponenten und Merkmale umfassen. In mindestens einem Ausführungsbeispiel kann/können SoC(s) 1704 zur Steuerung von Fahrzeug 1700 in einer Vielzahl von Plattformen und Systemen verwendet werden. Beispielsweise können SoC(s) 1704 in mindestens einem Ausführungsbeispiel in einem System (z.B. System des Fahrzeugs 1700) mit einer hochauflösenden (engl. High Definition, „HD“) Karte 1722 kombiniert werden, die Kartenaktualisierungen und/oder -aktualisierungen über die Netzschnittstelle 1724 von einem oder mehreren Servern erhalten kann (in
In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 1706 einen CPU-Cluster oder CPU-Komplex (hier alternativ als „CCPLEX“ bezeichnet) umfassen. In mindestens einem Ausführungsbeispiel kann (können) die CPU(s) 1706 mehrere Kerne und/oder Level-2-Caches („L2“) umfassen. In mindestens einem Ausführungsbeispiel können die CPU(s) 1706 beispielsweise acht Kerne in einer kohärenten Multiprozessor-Konfiguration umfassen. In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 1706 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) 1706 (z.B. CCPLEX) so konfiguriert sein, dass sie einen simultanen Cluster-Betrieb unterstützen, so dass jede Kombination von Clustern der CPU(s) 1706 zu einem beliebigen Zeitpunkt aktiv sein kann.In at least one embodiment, CPU(s) 1706 may comprise a CPU cluster or CPU complex (alternatively referred to herein as "CCPLEX"). In at least one embodiment, the CPU(s) 1706 may include multiple cores and/or level 2 ("L2") caches. For example, in at least one embodiment, the CPU(s) 1706 may include eight cores in a coherent multiprocessor configuration. In at least one embodiment, the CPU(s) 1706 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, CPU(s) 1706 (e.g., CCPLEX) may be configured to support simultaneous cluster operation, such that any combination of CPU(s) 1706 clusters may be active at any one time.
In mindestens einem Ausführungsbeispiel können eine oder mehrere der CPU(s) 1706 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) 1706 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) 1706 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; any core clock may 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 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) 1706 may further implement an improved power state management algorithm, 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) 1708 eine integrierte GPU (hier alternativ als „iGPU“ bezeichnet) umfassen. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1708 programmierbar und für parallele Arbeitslasten effizient sein. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1708 einen verbesserten Tensorbefehlssatz verwenden. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1708 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) 1708 mindestens acht Streaming-Mikroprozessoren umfassen. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1708 Compute Application Programming Interface(s) (API(s)) verwenden. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1708 eine oder mehrere parallele Rechnerplattformen und/oder Programmiermodelle (z. B. CUDA von NVIDIA) verwenden.In at least one embodiment, GPU(s) 1708 may include an integrated GPU (alternatively referred to herein as “iGPU”). In at least one embodiment, GPU(s) 1708 may be programmable and efficient for parallel workloads. In at least one embodiment, GPU(s) 1708 may use an enhanced tensor instruction set. In at least one embodiment, GPU(s) 1708 may include one or more streaming microprocessors, each streaming microprocessor having an L1 cache (eg, 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) 1708 include at least eight streaming microprocessors. In at least one embodiment, GPU(s) 1708 may use Compute Application Programming Interface(s) (API(s)). In at least one embodiment, GPU(s) 1708 may utilize one or more parallel computing platforms and/or programming models (e.g., CUDA from NVIDIA).
In mindestens einem Ausführungsbeispiel kann eine oder mehrere der GPU(s) 1708 leistungsoptimiert sein, um die beste Leistung in Automobil- und eingebetteten Anwendungsfällen zu erzielen. In einem Ausführungsbeispiel könnte(n) GPU(s) 1708 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 L1-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) 1708 may be performance optimized to achieve the best performance in automotive and embedded use cases. For example, in one embodiment, GPU(s) 1708 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 scheduler, a shipping unit, and/or a 64K 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 L1 data cache and shared memory unit to improve performance while simplifying programming.
In mindestens einem Ausführungsbeispiel kann eine oder mehrere der GPU(s) 1708 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) 1708 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) 1708 eine einheitliche Speichertechnologie umfassen. In mindestens einem Ausführungsbeispiel kann die Unterstützung von Address Translation Services („ATS“) verwendet werden, um GPU(s) 1708 den direkten Zugriff auf CPU(s) 1706 Seitentabellen zu ermöglichen. In mindestens einem Ausführungsbeispiel kann eine Adressübersetzungsanforderung an die CPU(s) 1706 übermittelt werden, wenn die Speicherverwaltungseinheit („MMU“) GPU(s) 1708 einen Fehlzugriff erfährt. Als Antwort darauf kann/können die CPU(s) 1706 in ihren Seitentabellen nach einer virtuellen-zu-physischen Zuordnung der Adresse suchen und die Übersetzung zurück an die GPU(s) 1708 ü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) 1706 als auch der GPU(s) 1708 ermöglichen, wodurch die Programmierung der GPU(s) 1708 und die Portierung von Anwendungen auf die GPU(s) 1708 vereinfacht wird.In at least one embodiment, GPU(s) 1708 may include a unified memory technology. In at least one embodiment, Address Translation Services ("ATS") support may be used to allow GPU(s) 1708 direct access to CPU(s) 1706 page tables. In at least one embodiment, an address translation request may be sent to the CPU(s) 1706 when the memory management unit ("MMU") GPU(s) 1708 experiences a miss. In response, the CPU(s) 1706 may look up their page tables for a virtual-to-physical mapping of the address and transmit the translation back to the GPU(s) 1708, 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) 1706 and GPU(s) 1708, making programming of GPU(s) 1708 and porting of applications to the GPU(s) 1708 is simplified.
In mindestens einem Ausführungsbeispiel kann/können die GPU(s) 1708 eine beliebige Anzahl von Zugriffszählern umfassen, die die Häufigkeit des Zugriffs von GPU(s) 1708 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) 1708 may include any number of access counters that may track the number of times GPU(s) 1708 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) 1704 eine beliebige Anzahl von Cache(s) 1712 umfassen, einschließlich der hier beschriebenen. In mindestens einem Ausführungsbeispiel könnte(n) der/die Cache(s) 1712 beispielsweise einen Cache der Stufe drei (engl. Level Three, „L3“) umfassen, der sowohl der/den CPU(s) 1706 als auch der/den GPU(s) 1708 zur Verfügung steht (d.h. der/die sowohl der/den CPU(s) 1706 als auch der/den GPU(s) 1708 angeschlossen ist/sind). In mindestens einem Ausführungsbeispiel kann/können Cache(s) 1712 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) 1704 may include any number of cache(s) 1712, including those described herein. For example, in at least one embodiment, the cache(s) 1712 could comprise a level three (“L3”) cache dedicated to both the CPU(s) 1706 and the GPU(s). (s) 1708 is available (i.e., attached to both CPU(s) 1706 and GPU(s) 1708). In at least one embodiment, cache(s) 1712 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) 1704 einen oder mehrere Beschleuniger 1714 umfassen (z.B. Hardware-Beschleuniger, Software-Beschleuniger oder eine Kombination davon). In mindestens einem Ausführungsbeispiel kann/können SoC(s) 1704 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) 1708 verwendet werden, um den/die Grafikprozessor(en) 1708 zu ergänzen und den/die Grafikprozessor(en) 1708 von einigen Aufgaben zu entlasten (z.B. um mehr Zyklen des/der Grafikprozessor(en) 1708 für die Ausführung anderer Aufgaben freizugeben). In mindestens einem Ausführungsbeispiel könnte(n) der/die Beschleuniger 1714 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) 1704 may include one or more accelerators 1714 (eg, hardware accelerators, software accelerators, or a combination thereof). In at least one embodiment, SoC(s) 1704 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) 1708 may be used to complement the graphics processor(s) 1708 and offload some tasks (e.g., by more cycles) from the graphics processor(s) 1708 free the graphics processor(s) 1708 to perform other tasks). In at least one embodiment, the accelerator(s) 1714 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 include region-based or regional convolutional neural networks ("RCNNs") and fast RCNNs (eg, such as are used for object detection) or other types of CNNs.
In mindestens einem Ausführungsbeispiel kann/können der/die Beschleuniger 1714 (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 1796; 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) 1714 (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
In mindestens einem Ausführungsbeispiel können DLA(s) jede beliebige Funktion von GPU(s) 1708 erfüllen, und unter Verwendung eines Inferenz-Beschleunigers kann ein Designer beispielsweise entweder DLA(s) oder GPU(s) 1708 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) 1708 und/oder anderen Beschleuniger(n) 1714 überlassen.In at least one embodiment, DLA(s) may perform any function of GPU(s) 1708, and using an inference accelerator, for example, a designer may employ either DLA(s) or GPU(s) 1708 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) 1708 and/or other accelerator(s) 1714 .
In mindestens einem Ausführungsbeispiel kann/können der/die Beschleuniger 1714 (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“) 1738, 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) 1714 (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") 1738, 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 (eg, 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 support a real-time operating system (“RTOS”) run. 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) 1706 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) 1706. 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) (e.g., 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 (e.g., "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 1714 (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 1714 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) 1714 (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) 1714. 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 version For example, an interface may conform to International Standardization Organization ("ISO") 26262 or International Electrotechnical Commission ("IEC") 61508 standards, although other standards and protocols may be used.
In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 1704 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) 1704 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 1714 (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 1700, 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) 1714 (e.g., 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
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-thefly) (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) 1766, die mit der Orientierung des Fahrzeugs 1700 korreliert, die Entfernung, 3D-Lageabschätzungen des Objekts, die von dem neuronalen Netz und/oder anderen Sensoren (z.B. LIDAR-Sensor(en) 1764 oder RADAR-Sensor(en) 1760) 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 take as input at least a subset of parameters, such as the dimensions of the bounding box, the estimate of floor area obtained (eg, from another subsystem), the output of IMU sensor(s) 1766, the correlated with
In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 1704 den/die Datenspeicher 1716 (z.B. Speicher) umfassen. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 1716 ein On-Chip-Speicher von SoC(s) 1704 sein, der neuronale Netze speichern kann, die auf GPU(s) 1708 und/oder DLA ausgeführt werden sollen. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 1716 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 1712 L2- oder L3-Cache(s) umfassen.In at least one embodiment, one or more of the SoC(s) 1704 may include the data storage(s) 1716 (e.g., memory). In at least one embodiment, data store(s) 1716 may be on-chip memory of SoC(s) 1704 that may store neural networks to be executed on GPU(s) 1708 and/or DLA. In at least one embodiment, data store(s) 1716 may be large enough to store multiple instances of neural networks for redundancy and security. In at least one embodiment, data store(s) 1712 may include L2 or L3 cache(s).
In mindestens einem Ausführungsbeispiel kann einer oder mehrere der SoC(s) 1704 eine beliebige Anzahl von Prozessor(en) 1710 (z.B. eingebettete Prozessoren) umfassen. Der/die Prozessor(en) 1710 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) 1704 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) 1704 und/oder Verwaltung der Stromversorgungszustände der SoC(s) 1704 bereitstellen. In mindestens einem Ausführungsbeispiel kann jeder Temperatursensor als Ringoszillator implementiert werden, dessen Ausgangsfrequenz proportional zur Temperatur ist, und SoC(s) 1704 kann/können Ringoszillatoren verwenden, um Temperaturen von CPU(s) 1706, GPU(s) 1708 und/oder Beschleuniger(n) 1714 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) 1704 in einen Zustand geringerer Leistung versetzen und/oder das Fahrzeug 1700 in einen sicheren Stopp-Modus versetzen (z.B. das Fahrzeug 1700 in einen sicheren Stopp-Modus bringen).In at least one embodiment, one or more of the SoC(s) 1704 may include any number of processor(s) 1710 (e.g., embedded processors). The processor(s) 1710 may include a boot and power management processor, which may be a dedicated processor and subsystem that performs 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) 1704 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) 1704, and/or management of the power states of the SoC(s) 1704. 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) 1704 may use ring oscillators to measure CPU(s) 1706, GPU(s) 1708, and/or accelerator(s) temperatures. n) 1714 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) 1704 in a lower performance state and/or the
In mindestens einem Ausführungsbeispiel kann/können der/die Prozessor(en) 1710 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 RAMIn at least one embodiment, processor(s) 1710 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) 1710 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) 1710 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) 1710 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) 1710 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) 1710 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, the processor(s) 1710 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) 1710 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, processor(s) 1710 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) 1710 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) 1770, der (den) Surround-Kamera(s) 1774 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 1704 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, processor(s) 1710 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) 1770, the surround camera(s) 1774, and/or the sensor(s) of the surveillance camera(s) in perform in the cabin. In accordance with at least one embodiment, in-cabin surveillance camera sensors are preferably monitored by a neural network running on another instance of
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) 1708 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) 1708 verwendet werden, wenn der/die Grafikprozessor(en) 1708 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) 1708 is/are not required to continually 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) 1708 when the graphics processor(s) 1708 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) 1704 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) 1704 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) 1704 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) 1704 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) 1704 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) 1704 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) 1764, RADAR-Sensor(en) 1760 usw., die über Ethernet verbunden sein können), Daten von Bus 1702 (z.B. Geschwindigkeit des Fahrzeugs 1700, Lenkradposition usw.), Daten von GNSS-Sensor(en) 1758 (z.B. verbunden über Ethernet oder CAN-Bus) usw. zu verarbeiten. In mindestens einem Ausführungsbeispiel können ein oder mehrere SoC(s) 1704 weiter dedizierte Hochleistungs-Massenspeichersteuerungen umfassen, die ihre eigenen DMA-Engines enthalten können und die verwendet werden können, um die CPU(s) 1706 von Routineaufgaben der Datenverwaltung zu entlasten.In at least one embodiment, one or more of the SoC(s) 1704 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) 1704 can be used to collect data from cameras (e.g., connected via Gigabit Multimedia Serial Link and Ethernet), sensors (e.g., LIDAR sensor(s) 1764, RADAR sensor(s) 1760, etc. connected via Ethernet may be connected), data from bus 1702 (e.g.,
In mindestens einem Ausführungsbeispiel kann/können SoC(s) 1704 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) 1704 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 1714 in Kombination mit CPU(s) 1706, GPU(s) 1708 und Datenspeicher(n) 1716 eine schnelle, effiziente Plattform für autonome Fahrzeuge der Stufe 3-5 bereitstellen.In at least one embodiment, SoC(s) 1704 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) 1704 may be faster, more reliable, and even more power and space efficient than conventional systems be. For example, in at least one embodiment, the accelerator(s) 1714 in combination with CPU(s) 1706, GPU(s) 1708, and memory(s) 1716 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) 1720) 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) 1720) 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) 1708.In at least one embodiment, multiple neural networks may be operated simultaneously, such as when driving at
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 1700 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) 1704 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
In mindestens einem Ausführungsbeispiel kann der CNN für die Erkennung und Identifizierung von Notfallfahrzeugen die Daten von Mikrofonen 1796 zur Erkennung und Identifizierung von Notfallfahrzeugsirenen verwenden. In mindestens einem Ausführungsbeispiel verwenden die SoC(s) 1704 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) 1758 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) 1762, 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 the data from emergency vehicle siren detection and
In mindestens einem Ausführungsbeispiel kann Fahrzeug 1700 CPU(s) 1718 (z. B. diskrete CPU(s) oder dCPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z. B. PCIe) mit SoC(s) 1704 gekoppelt werden können. In mindestens einem Ausführungsbeispiel kann/können die CPU(s) 1718 beispielsweise einen X86-Prozessor umfassen. CPU(s) 1718 kann/können unter Verwenden beliebiger Funktionen verwendet werden, einschließlich der Arbitrierung potentiell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und SoC(s) 1704 und/oder der Überwachung von Status und Zustand von Steuerung(en) 1736 und/oder einem Infotainment-System auf einem Chip („Infotainment SoC“) 1730, zum Beispiel.In at least one embodiment,
In mindestens einem Ausführungsbeispiel kann Fahrzeug 1700 GPU(s) 1720 (z. B. diskrete GPU(s) oder dGPU(s)) umfassen, die über eine Hochgeschwindigkeitsverbindung (z. B. NVIDIAs NVLINK) mit SoC(s) 1704 gekoppelt werden können. In mindestens einem Ausführungsbeispiel kann/können GPU(s) 1720 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 1700 verwendet werden.In at least one embodiment,
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter eine Netzwerkschnittstelle 1724 umfassen, die unter anderem die drahtlose(n) Antenne(n) 1726 umfassen kann (z.B. eine oder mehrere drahtlose Antennen 1726 für verschiedene Kommunikationsprotokolle, wie z.B. eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 1724 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 170 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 Fahrzeugzu-Fahrzeug-Kommunikationsverbindung bereitgestellt werden. Eine Fahrzeug-Fahrzeug-Kommunikationsverbindung kann Fahrzeug 1700 Informationen über Fahrzeuge in der Nähe von Fahrzeug 1700 bereitstellen (z.B. Fahrzeuge vor, seitlich und/oder hinter Fahrzeug 1700). In mindestens einem Ausführungsbeispiel kann die vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitsregelungsfunktionalität von Fahrzeug 1700 sein.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 1724 ein SoC umfassen, das Modulations- und Demodulationsfunktionalität bereitstellt und die Steuerung(en) 1736 in die Lage versetzt, über drahtlose Netzwerke zu kommunizieren. In mindestens einem Ausführungsbeispiel kann die Netzwerkschnittstelle 1724 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,
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter einen/mehrere Datenspeicher 1728 umfassen, der/die ohne Einschränkung einen Off-Chip-Speicher (z.B. Off-SoC(s) 1704) umfassen kann/können. In mindestens einem Ausführungsbeispiel kann/können der/die Datenspeicher 1728 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
In mindestens einem Ausführungsbeispiel kann Fahrzeug 1700 weiter GNSS-Sensor(en) 1758 (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) 1758 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,
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter RADAR-Sensor(en) 1760 umfassen. Der (die) RADAR-Sensor(en) 1760 kann (können) vom Fahrzeug 1700 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) 1760 kann/können CAN und/oder Bus 1702 (z.B. zur Übertragung von Daten, die von RADAR-Sensor(en) 1760 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) 1760 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) 1760 Puls-Doppler-RADAR-Sensor(en).In at least one embodiment, the
In mindestens einem Ausführungsbeispiel kann/können der/die RADAR-Sensor(en) 1760 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) 1760 bei der Unterscheidung zwischen statischen und sich bewegenden Objekten helfen und kann (können) vom ADAS-System 1738 für Notbremsassistenten und Vorwärtskollisionswarnung verwendet werden. Sensoren 1760(s), die in einem RADARSystem 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 Fahrzeugen 1700 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 1700 einfahren oder diese verlassen, schnell erfasst werden können.In at least one embodiment, the RADAR sensor(s) 1760 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 can provide a wide field of view realized by two or more independent scans, e.g., within a 250 m range. In at least one embodiment, the RADAR sensor(s) 1760 can help distinguish between static and moving objects and can be used by the
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) 1760 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 1738 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) 1760 intended for installation on 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
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter eine/mehrere Ultraschallsensor(en) 1762 umfassen. Der/die Ultraschallsensor(en) 1762, der/die vorne, hinten und/oder seitlich am Fahrzeug 1700 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) 1762 verwendet werden, und verschiedene Ultraschallsensor(en) 1762 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) 1762 auf den funktionalen Sicherheitsstufen von ASIL B arbeiten.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 einen/mehrere LIDAR-Sensor(en) 1764 umfassen. Der/die LIDAR-Sensor(en) 1764 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) 1764 der funktionalen Sicherheitsstufe ASIL B entsprechen. In mindestens einem Ausführungsbeispiel kann Fahrzeug 1700 mehrere LIDAR-Sensoren 1764 (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
In mindestens einem Ausführungsbeispiel kann/können LIDAR-Sensor(en) 1764 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) 1764 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 1764 verwendet werden. In einem solchen Ausführungsbeispiel kann der/die LIDAR-Sensor(en) 1764 als kleines Gerät implementiert werden, das in die Front, das Heck, die Seiten und/oder Ecken des Fahrzeugs 1700 eingebettet werden kann. In mindestens einem Ausführungsbeispiel können LIDAR-Sensor(en) 1764 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) 1764 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.In at least one embodiment, LIDAR sensor(s) 1764 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) 1764 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
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 1700 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 1700 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 1700. 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 koregistrierten 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
In mindestens einem Ausführungsbeispiel kann das Fahrzeug weiter IMU-Sensor(en) 1766 umfassen. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1766 in mindestens einem Ausführungsbeispiel in der Mitte der Hinterachse von Fahrzeug 1700 angeordnet sein. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1766 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) 1766 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) 1766 ohne Einschränkung Beschleunigungsmesser, Gyroskope und Magnetometer umfassen.In at least one embodiment, the vehicle may further include IMU sensor(s) 1766 . In at least one embodiment, IMU sensor(s) 1766 may be located at the center of the rear axle of
In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1766 als ein GPS/INS (GPS/INS = High Performance GPS-Aided Inertial Navigation System) in Miniaturausführung implementiert werden, das Trägheitssensoren mikroelektromechanischer 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) 1766 das Fahrzeug 1700 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) 1766 direkt beobachtet und korreliert werden. In mindestens einem Ausführungsbeispiel kann/können der/die IMU-Sensor(en) 1766 und der/die GNSS-Sensor(en) 1758 in einer einzigen integrierten Einheit kombiniert werden.In at least one embodiment, the IMU sensor(s) 1766 may be implemented as a miniature High Performance GPS-Aided Inertial Navigation System (GPS/INS) that incorporates Micro-Electro-Mechanical Systems (MEMS) inertial sensors. Electro-Mechanical Systems), a highly sensitive GPS receiver and advanced Kalman filtering algorithms to estimate position, velocity and attitude. In at least one embodiment, the IMU sensor(s) 1766 may enable the
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 ein oder mehrere Mikrofone 1796 umfassen, die in und/oder um das Fahrzeug 1700 herum angebracht sind. In mindestens einem Ausführungsbeispiel kann/können das/die Mikrofon(e) 1796 unter anderem für die Erkennung und Identifizierung von Notfallfahrzeugen verwendet werden.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter eine beliebige Anzahl von Kameratypen umfassen, darunter Stereokamera(s) 1768, Weitwinkelkamera(s) 1770, Infrarotkamera(s) 1772, Surround-Kamera(s) 1774, Fernkamera(s) 1798, Mitteldistanzkamera(s) 1776 und/oder andere Kameratypen. In mindestens einem Ausführungsbeispiel können Kameras zur Erfassung von Bilddaten um die gesamte Peripherie des Fahrzeugs 1700 herum verwendet werden. In mindestens einem Ausführungsbeispiel hängen die verwendeten Kameratypen vom Fahrzeug 1700 ab. In mindestens einem Ausführungsbeispiel kann eine beliebige Kombination von Kameratypen verwendet werden, um die erforderliche Abdeckung um das Fahrzeug 1700 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 1700 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
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter einen/mehrere Vibrationssensor(en) 1742 umfassen. Der/die Vibrationssensor(en) 1742 kann/können Vibrationen von Komponenten des Fahrzeugs 1700, 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 1742 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
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 ein ADAS-System 1738 umfassen. Das ADAS-System 1738 kann in einigen Beispielen ohne Einschränkung ein SoC umfassen. In mindestens einem Ausführungsbeispiel kann das ADAS-System 1738 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
In mindestens einem Ausführungsbeispiel kann das ACC-System RADAR-Sensor(en) 1760, LIDAR-Sensor(en) 1764 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 1700 und passt die Geschwindigkeit des Fahrzeugs 1700 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 1700 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) 1760, LIDAR sensor(s) 1764, 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
In mindestens einem Ausführungsbeispiel verwendet das CACC-System Informationen von anderen Fahrzeugen, die über die Netzwerkschnittstelle 1724 und/oder die drahtlose(n) Antenne(n) 1726 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 1700) 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 bezüglich Informationen über Fahrzeuge vor Fahrzeug 1700 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
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 vom gerichtete Kamera und/oder einen oder mehrere RADAR-Sensor(en) 1760, 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 one or more RADAR sensor(s) 1760 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 a vibrating component. In at least one embodiment, the FCW system may provide a warning, eg, in the form of 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 vom gerichtete Kameras und/oder einen oder mehrere RADAR-Sensoren 1760 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
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 1700 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 1700 zu korrigieren, wenn das Fahrzeug 1700 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
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) 1760 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) 1760 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 1700 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) 1760 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
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 1700 bei widersprüchlichen Ergebnissen selbst, ob das Ergebnis von einem primären oder einem sekundären Computer (z.B. erste Steuerung 1736 oder zweite Steuerung 1736) berücksichtigt werden soll. Zum Beispiel kann das ADAS-System 1738 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 1738 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, if there are conflicting results, the
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ärcomputer beispielsweise in mindestens einem Ausführungsbeispiel ein RADARbasiertes 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) 1704 umfassen und/oder als eine solche enthalten sein.In at least one embodiment, the high-level MCU may be configured to operate a neural network or networks that are trained and configured to, based at least in part on outputs from the primary computer and Secondary computer, determines conditions under which the secondary computer will give 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 higher-level MCU can learn when the FCW system identifies metallic objects that it is in reality is not about hazards, such as a drainage grate or a manhole cover that sets off 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) 1704 .
In mindestens einem Ausführungsbeispiel kann das ADAS-System 1738 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,
In mindestens einem Ausführungsbeispiel kann die Ausgabe des ADAS-Systems 1738 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 1738 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
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter einen Infotainment-SoC 1730 umfassen (z.B. ein bordeigenes Infotainment-System (IVI)). Obwohl es als SoC dargestellt und beschrieben wird, kann das Infotainment-System 1730 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 1730 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 1700. Infotainment SoC 1730 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 1734, 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 1730 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 1738, 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
In mindestens einem Ausführungsbeispiel kann das Infotainment-SoC 1730 eine beliebige Menge und Art von GPU-Funktionalität umfassen. In mindestens einem Ausführungsbeispiel kann der Infotainment-SoC 1730 über den Bus 1702 (z. B. CAN-Bus, Ethernet usw.) mit anderen Geräten, Systemen und/oder Komponenten des Fahrzeugs 1700 kommunizieren. In mindestens einem Ausführungsbeispiel kann das Infotainment-SoC 1730 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) 1736 (z.B. Primär- und/oder Backup-Computer von Fahrzeug 1700) ausfallen. In mindestens einem Ausführungsbeispiel kann das Infotainmentsystem SoC 1730 das Fahrzeug 1700 in einen sicheren Stopp-Modus (engl. chaffeur to safe stop mode) versetzen, wie hier beschrieben.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel kann das Fahrzeug 1700 weiter ein Zentralanzeigegerät 1732 umfassen (z.B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.). Das Zentralanzeigegerät 1732 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 1732 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 1730 und Zentralanzeigegerät 1732 angezeigt und/oder gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel kann der Zentralanzeigegerät 1732 als Teil des Infotainment-SoC 1730 enthalten sein oder umgekehrt.In at least one embodiment, the
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken konstruiert werden. In mindestens einem Ausführungsbeispiel kann es sich bei dem Roboter um ein autonomes Fahrzeug handeln, und die Netzwerke zur Evaluierung und Generierung können mithilfe eines Computersystems in dem autonomen Fahrzeug implementiert werden.At least one embodiment can be constructed using the techniques described above. In at least one embodiment, the robot may be an autonomous vehicle, and the evaluation and generation networks may be implemented using a computer system in the autonomous vehicle.
In mindestens einem Ausführungsbeispiel kann/können der/die Server 1778 über das/die Netzwerk(e) 1790 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 1778 über das/die Netzwerk(e) 1790 und an die Fahrzeuge neuronale Netzwerke 1792, aktualisierte neuronale Netzwerke 1792 und/oder Karteninformationen 1794, einschließlich, ohne Einschränkung, Informationen über Verkehrs- und Straßenzustände, übertragen. In mindestens einem Ausführungsbeispiel können Aktualisierungen der Karteninformationen 1794 unter anderem Aktualisierungen einer HD-Karte 1722 umfassen, z.B. Informationen über Baustellen, Schlaglöcher, Umleitungen, Überschwemmungen und/oder andere Hindernisse. In mindestens einem Ausführungsbeispiel können neuronale Netze 1792, aktualisierte neuronale Netze 1792 und/oder Karteninformationen 1794 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) 1778 und/oder anderen Servern).In at least one embodiment, the server(s) 1778 may receive, via the network(s) 1790 and from vehicles, image data representing images showing unexpected or changed road conditions, such as recently started roadworks. In at least one embodiment, the server(s) 1778 may, via the network(s) 1790 and to the vehicles, provide
In mindestens einem Ausführungsbeispiel kann/können der/die Server 1778 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) 1790 an Fahrzeuge übertragen und/oder maschinelle Lernmodelle können von Server(n) 1778 zur Fernüberwachung von Fahrzeugen verwendet werden.In at least one embodiment, server(s) 1778 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) 1790 and/or machine learning models may be used by server(s) 1778 to remotely monitor vehicles.
In mindestens einem Ausführungsbeispiel kann/können der/die Server 1778 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 1778 Supercomputer für Deep Learning und/oder dedizierte KI-Computer mit GPU(s) 1784 umfassen, wie z.B. die von NVIDIA entwickelten Maschinen DGX und DGX Station. In mindestens einem Ausführungsbeispiel kann/können der/die Server 1778 jedoch eine Deep-Learning-Infrastruktur umfassen, die CPU-gestützte Datenzentren verwendet.In at least one embodiment, server(s) 1778 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) 1778 may include deep learning supercomputers and/or dedicated AI computers with GPU(s) 1784, such as the DGX and DGX Station machines developed by NVIDIA. However, in at least one embodiment, server(s) 1778 may include a deep learning infrastructure using CPU-based data centers.
In mindestens einem Ausführungsbeispiel kann die Deep-Learning-Infrastruktur von Server(n) 1778 schnelle Echtzeit-Inferenzdienste anbieten und diese Fähigkeit zur Bewertung und Überprüfung des Zustands von Prozessoren, Software und/oder assoziierter Hardware im Fahrzeug 1700 nutzen. Zum Beispiel kann in mindestens einem Ausführungsbeispiel die Deep-Learning-Infrastruktur periodische Aktualisierungen von Fahrzeug 1700 erhalten, wie z.B. eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 1700 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 1700 identifizierten Objekten zu vergleichen. Wenn die Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI in Fahrzeug 1700 fehlerhaft ist, dann kann/können der/die Server 1778 ein Signal an das Fahrzeug 1700 senden und einen ausfallsicheren Computer des Fahrzeugs 1700 anweisen, die Steuerung zu übernehmen, die Passagiere zu benachrichtigen und ein sicheres Einparkmanöver durchzuführen.In at least one embodiment, the server(s) 1778 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
In mindestens einem Ausführungsbeispiel kann/können der/die Server 1778 einen/mehrere Grafikprozessor(en) 1784 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) 1415 zur Durchführung einer oder mehrerer Ausführungsbeispiele verwendet. Details zur Hardwarestruktur(x) 1415 sind hier in Verbindung mit
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 1800 unter anderem einen Prozessor 1802 umfassen, der unter anderem eine oder mehrere Ausführungseinheiten 1808 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 18 ein Einzelprozessor-Desktop- oder Serversystem, aber in einem anderen Ausführungsbeispiel kann System 18 ein Multiprozessorsystem sein. In mindestens einem Ausführungsbeispiel kann der Prozessor 1802 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 1802 mit einem Prozessorbus 1810 gekoppelt sein, der Datensignale zwischen dem Prozessor 1802 und anderen Komponenten im Computersystem 1800 übertragen kann.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel kann Prozessor 1802 ohne Einschränkung einen internen Level 1 („L1“) Cache-Speicher („Cache“) 1804 umfassen. In mindestens einem Ausführungsbeispiel kann Prozessor 1802 ü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 1802 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 1806 verschiedene Arten von Daten in verschiedenen Registern speichern, einschließlich, ohne Einschränkung, Ganzzahlregister, Gleitkommaregister, Statusregister und Befehlszeigerregister.In at least one embodiment,
In mindestens einem Ausführungsbeispiel befindet sich die Ausführungseinheit 1808, die unter anderem eine Logik zur Ausführung von Ganzzahl- und Gleitkommaoperationen umfasst, ebenfalls im Prozessor 1802. Prozessor 1802 kann auch einen Mikrocode- („ucode“) Nur-Lese-Speicher („ROM“) umfassen, der Mikrocode für bestimmte Makrobefehle speichert. In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 1808 Logik zur Handhabung eines gepackten Befehlssatzes 1809 umfassen. In mindestens einem Ausführungsbeispiel können durch die Einbeziehung des gepackten Befehlssatzes 1809 in den Befehlssatz eines Allzweckprozessors 1802 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 1802 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, execution unit 1808, which includes, among other things, logic for performing integer and floating point operations, also resides in
In mindestens einem Ausführungsbeispiel kann die Ausführungseinheit 1808 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikgeräten, DSPs und anderen Arten von Logikschaltungen verwendet werden. In mindestens einem Ausführungsbeispiel kann das Computersystem 1800 ohne Einschränkung einen Speicher 1820 umfassen. In mindestens einem Ausführungsbeispiel kann der Speicher 1820 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 1820 kann Instruktion(en) 1819 und/oder Daten 1821 speichern, die durch Datensignale repräsentiert werden, die vom Prozessor 1802 ausgeführt werden können.In at least one embodiment, execution unit 1808 may also be used in microcontrollers, embedded processors, graphics devices, DSPs, and other types of logic circuits. In at least one embodiment,
In mindestens einem Ausführungsbeispiel kann der Systemlogik-Chip mit dem Prozessorbus 1810 und dem Speicher 1820 gekoppelt sein. In mindestens einem Ausführungsbeispiel kann der Systemlogik-Chip ohne Einschränkung einen Speichersteuerungs-Hub (engl. Memory Controller Hub, „MCH“) 1816 umfassen, und der Prozessor 1802 kann über den Prozessorbus 1810 mit dem MCH 1816 kommunizieren. In mindestens einem Ausführungsbeispiel kann MCH 1816 einen Speicherpfad mit hoher Bandbreite 1818 zu Speicher 1820 für die Befehls- und Datenspeicherung und für die Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In mindestens einem Ausführungsbeispiel kann MCH 1816 Datensignale zwischen Prozessor 1802, Speicher 1820 und anderen Komponenten im Computersystem 1800 leiten und Datensignale zwischen Prozessorbus 1810, Speicher 1820 und einer System-E/A 1822 ü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 1816 über einen Hochgeschwindigkeits-Speicherpfad 1818 mit Speicher 1820 und Grafik-/Videokarte 1812 über einen Accelerated Graphics Port („AGP“) Interconnect 1814 mit MCH 1816 gekoppelt werden.In at least one embodiment, the system logic chip may be coupled to processor bus 1810 and
In mindestens einem Ausführungsbeispiel kann das Computersystem 1800 eine System-E/A 1822 verwenden, das ein proprietärer Hub-Schnittstellenbus ist, um MCH 1816 mit dem E/A-Steuerungs-Hub („ICH“) 1830 zu koppeln. In mindestens einem Ausführungsbeispiel kann ICH 1830 ü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 1820, dem Chipsatz und dem Prozessor 1802 umfassen. Beispiele können, ohne Einschränkung, eine Audio-Steuerung 1829, einen Firmware-Hub („Flash-BIOS“) 1828, einen drahtlosen Transceiver 1826, einen Datenspeicher 1824, eine älteren E/A-Steuerung 1823, der Benutzereingaben und Tastaturschnittstellen enthält, einen seriellen Erweiterungsport 1827, wie z.B. Universal Serial Bus („USB“), und eine Netzwerk-Steuerung 1834 umfassen. Der Datenspeicher 1824 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,
Gemäß mindestens einem Ausführungsbeispiel zeigt
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
In mindestens einem Ausführungsbeispiel kann das System 1900 ohne Einschränkung einen Prozessor 1910 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 1910 ü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.
In mindestens einem Ausführungsbeispiel kann
In mindestens einem Ausführungsbeispiel können andere Komponenten über die oben diskutierten Komponenten kommunikativ an den Prozessor 1910 gekoppelt werden. In mindestens einem Ausführungsbeispiel können ein Beschleunigungsmesser 1941, ein Umgebungslichtsensor (engl. ambient light sensor, „ALS“) 1942, ein Kompass 1943 und ein Gyroskop 1944 kommunikativ mit dem Sensor-Hub 1940 gekoppelt werden. In mindestens einem Ausführungsbeispiel können ein Temperatursensor 1939, ein Lüfter 1937, eine Tastatur 1946 und ein Touchpad 1930 kommunikativ mit dem EC 1935 gekoppelt werden. In mindestens einem Ausführungsbeispiel können der Lautsprecher 1963, ein Kopfhörer 1964 und ein Mikrofon („Mic“) 1965 kommunikativ mit einer Audioeinheit („Audio-Codec und Class-D-Amp“) 1964 gekoppelt sein, die wiederum kommunikativ mit dem DSP 1960 gekoppelt sein kann. In mindestens einem Ausführungsbeispiel kann die Audioeinheit 1964 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“) 1957 kommunikativ mit der WWAN-Einheit 1956 gekoppelt sein. In mindestens einem Ausführungsbeispiel können Komponenten wie die WLAN-Einheit 1950 und die Bluetooth-Einheit 1952 sowie die WWAN-Einheit 1956 in einem Next Generation Form Factor („NGFF“) implementiert werden.In at least one embodiment, other components may be communicatively coupled to
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robotic control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel umfasst das Computersystem 2000 ohne Einschränkung mindestens eine zentrale Verarbeitungseinheit („CPU“) 2002, die mit einem Kommunikationsbus 2010 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 2000 ohne Einschränkung einen Hauptspeicher 2004 und Steuerlogik (z.B. implementiert als Hardware, Software oder eine Kombination davon), und die Daten werden im Hauptspeicher 2004 gespeichert, der die Form eines Direktzugriffsspeichers („RAM“) annehmen kann. In mindestens einem Ausführungsbeispiel ist ein Netzwerkschnittstellen-Subsystem („Netzwerkschnittstelle“) 2022 eine Schnittstelle zu anderen Rechengeräten und Netzwerken zum Empfang von Daten von und zur Übertragung von Daten an andere Systeme vom Computersystem 2000 bereitgestellt.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel umfasst das Rechnersystem 2000, in mindestens einem Ausführungsbeispiel, unter anderem die Eingabegeräte 2008, das Parallelverarbeitungssystem 2012 und die Anzeigegeräte 2006, 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 2008 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
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Computersystems wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a computer system as described above.
In mindestens einem Ausführungsbeispiel umfasst der USB-Stick 2120 ohne Einschränkung eine Verarbeitungseinheit 2130, eine USB-Schnittstelle 2140 und eine USB-Schnittstellenlogik 2150. In mindestens einem Ausführungsbeispiel kann es sich bei der Verarbeitungseinheit 2130 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 2130 ohne Einschränkung eine beliebige Anzahl und Art von Verarbeitungskernen umfassen (nicht abgebildet). In mindestens einem Ausführungsbeispiel umfasst der Verarbeitungskern 2130 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 2130 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 2130 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 2120 includes, without limitation,
In mindestens einem Ausführungsbeispiel kann die USB-Schnittstelle 2140 eine beliebige Art von USB-Stecker oder USB-Buchse sein. In mindestens einem Ausführungsbeispiel ist die USB-Schnittstelle 2140 beispielsweise eine USB 3.0 Typ-C-Buchse für Daten und Strom. In mindestens einem Ausführungsbeispiel ist die USB-Schnittstelle 2140 ein USB-3.0-Stecker vom Typ A. In mindestens einem Ausführungsbeispiel kann die USB-Schnittstellenlogik 2150 eine beliebige Menge und Art von Logik umfassen, die es der Verarbeitungseinheit 2130 ermöglicht, über den USB-Anschluss 2140 eine Schnittstelle mit Geräten (z.B. Computer 2110) zu bilden.In at least one embodiment, the
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Computersystems wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a computer system as described above.
Zusätzlich, und gemäß einem Ausführungsbeispiel, sind zwei oder mehr der GPUs 2210-2213 über Hochgeschwindigkeitsverbindungen 2229-2230 miteinander verbunden, die mit denselben oder anderen Protokollen/Links als die für die Hochgeschwindigkeitsverbindungen 2240-2243 verwendeten implementiert werden können. In ähnlicher Weise können zwei oder mehr Mehrkernprozessoren 2205-2206 über die Hochgeschwindigkeitsverbindung 2228 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
In einem Ausführungsbeispiel ist jeder Mehrkernprozessor 2205-2206 über die Speicherverbindungen 2226-2227 kommunikativ mit einem Prozessorspeicher 2201-2202 gekoppelt, und jeder Grafikprozessor 2210-2213 ist über die GPU-Speicherverbindungen 2250-2253 kommunikativ mit dem GPU-Speicher 2220-2223 gekoppelt. Die Speicherverbindungen 2226-2227 und 2250-2253 können gleiche oder unterschiedliche Speicherzugriffstechnologien verwenden. Als Beispiel, ohne Einschränkung, können Prozessorspeicher 2201-2202 und GPU-Speicher 2220-2223 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 2201-2202 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 2205-2206 is communicatively coupled to processor memory 2201-2202 via memory interconnects 2226-2227, and each graphics processor 2210-2213 is communicatively coupled to GPU memory 2220-2223 via GPU memory interconnects 2250-2253. Memory interconnects 2226-2227 and 2250-2253 may use the same or different memory access technologies. As an example, without limitation, processor memory 2201-2202 and GPU memory 2220-2223 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, a portion of the processor memories 2201-2202 may be volatile memory and another portion may be non-volatile memory (e.g., when using a two-level memory hierarchy (2LM)).
Wie hier beschrieben, können zwar verschiedene Prozessoren 2205-2206 und GPUs 2210-2213 physisch an einen bestimmten Speicher 2201-2202 bzw. 2220-2223 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 2201-2202 jeweils 64 GB Systemspeicher-Adressraum und die GPU-Speicher 2220-2223 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 2205-2206 and GPUs 2210-2213 can be physically coupled to a particular memory 2201-2202 and 2220-2223, 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 For example, processor memories 2201-2202 can each include 64 GB of system memory address space and GPU memories 2220-2223 can each include 32 GB of system memory address space (resulting in a total of 256 GB of addressable memory in this example).
In mindestens einem Ausführungsbeispiel umfasst der abgebildete Prozessor 2207 eine Vielzahl von Kernen 2260A-2260D, jeder mit einem Übersetzungs-Lookaside-Puffer 2261A-2261D und einem oder mehreren Caches 2262A-2262D. In mindestens einem Ausführungsbeispiel können die Kerne 2260A-2260D verschiedene andere Komponenten zur Ausführung von Befehlen und zur Verarbeitung von Daten umfassen, die nicht abgebildet sind. Die Caches 2262A-2262D können Level 1 (L1)- und Level 2 (L2)-Caches umfassen. Darüber hinaus können ein oder mehrere gemeinsam genutzte Caches 2256 in den Caches 2262A-2262D enthalten sein und von Sätzen von Kernen 2260A-2260D gemeinsam genutzt werden. Beispielsweise umfasst ein Ausführungsbeispiel des Prozessors 2207 24 Kerne, jeder mit seinem eigenen L1-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 2207 und das Grafikbeschleunigungsmodul 2246 sind mit dem Systemspeicher 2214 verbunden, der die Prozessorspeicher 2201-2202 von
Kohärenz wird für Daten und Befehle, die in verschiedenen Caches 2262A-2262D, 2256 und im Systemspeicher 2214 gespeichert sind, über die Kommunikation zwischen den Kernen über einen Kohärenzbus 2264 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 2264 zu kommunizieren. In einer Implementierung ist ein Cache-Snooping-Protokoll über den Kohärenzbus 2264 implementiert, um Cache-Zugriffe abzuhören.Coherency is maintained for data and instructions stored in
In einem Ausführungsbeispiel koppelt ein Proxy-Schaltkreis 2225 das Grafikbeschleunigungsmodul 2246 kommunikativ an den Kohärenzbus 2264, so dass das Grafikbeschleunigungsmodul 2246 als Peer der Kerne 2260A-2260D an einem Cache-Kohärenzprotokoll teilnehmen kann. Insbesondere ist eine Schnittstelle 2235 für die Verbindung mit dem Proxy-Schaltkreis 2225 über die Hochgeschwindigkeitsverbindung 2240 (z. B. PCIe-Bus, NVLink usw.) vorgesehen, und eine Schnittstelle 2237 verbindet das Grafikbeschleunigungsmodul 2246 mit der Verbindung 2240.In one embodiment, a
In einer Implementierung ist ein Beschleuniger-Integrationsschaltkreis 2236 für eine Vielzahl von Grafikverarbeitungs-Engines 2231, 2232, N des Grafikbeschleunigungsmoduls 2246 für Cache-Verwaltung, Speicherzugriff, Kontext-Verwaltung und Interrupt-Verwaltungsdienste bereitgestellt. Die Engines 2231, 2232, N können jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. Alternativ können die Grafikverarbeitungs-Engines 2231, 2232, 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 2246 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 2231-2232, N oder Grafikverarbeitungs-Engines 2231-2232, N können einzelne GPUs sein, die in einem gemeinsamen Gehäuse, einer Leitungskarte oder einem Chip integriert sind.In one implementation, an
In einem Ausführungsbeispiel umfasst der Beschleuniger-Integrationsschaltkreis 2236 eine Speicherverwaltungseinheit (MMU) 2239 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 2214. MMU 2239 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 2238 Befehle und Daten für den effizienten Zugriff durch die Engines 2231-2232, N. In einem Ausführungsbeispiel werden die im Cache 2238 und in den Grafikspeichern 2233-2234, M gespeicherten Daten mit den Kern-Caches 2262A-2262D, 2256 und dem Systemspeicher 2214 kohärent gehalten. Wie bereits erwähnt, kann dies über den Proxy-Schaltkreis 2225 für Cache 2238 und die Speicher 2233-2234, M erfolgen (z.B. Senden von Aktualisierungen an Cache 2238 im Zusammenhang mit Änderungen/Zugriffen auf Cache-Zeilen in den Prozessor-Caches 2262A-2262D, 2256 und Empfang von Aktualisierungen von Cache 2238).In one embodiment, the
Ein Satz von Registern 2245 speichert Kontextdaten für Threads, die von den Engines 2231-2232, N für die Grafikverarbeitung ausgeführt werden, und eine Kontextverwaltungsschaltung 2248 verwaltet Thread-Kontexte. Die Kontextverwaltungsschaltung 2248 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 2248 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 (engl. interrupt management circuit) 2247 von Systemgeräten empfangene Unterbrechungen.A set of
In einer Implementierung werden virtuelle/effektive Adressen aus der Grafikverarbeitungs-Engine 2231 durch die MMU 2239 in reelle/physikalische Adressen im Systemspeicher 2214 übersetzt. Ein Ausführungsbeispiel der Beschleuniger-Integrationsschaltkreis 2236 unterstützt mehrere (z.B. 4, 8, 16) Grafik-Beschleunigermodule 2246 und/oder andere Beschleunigergeräte. Das Grafikbeschleunigermodul 2246 kann für eine einzelne, auf dem Prozessor 2207 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 2231-2232, 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
In mindestens einem Ausführungsbeispiel funktioniert der Beschleuniger-Integrationsschaltkreis 2236 als Brücke zu einem System für Grafikbeschleunigungsmodul 2246 und stellt Adressübersetzung und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann der Beschleuniger-Integrationsschaltkreis 2236 Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungsmodule 2231-2232, Interrupts und Speicherverwaltung zu verwalten.In at least one embodiment,
Da die Hardwareressourcen der Grafikverarbeitungs-Engines 2231-2232, N explizit einem realen Adressraum zugeordnet sind, der vom Host-Prozessor 2207 gesehen wird, kann jeder beliebige Host-Prozessor diese Ressourcen direkt über einen effektiven Adresswert adressieren. Eine Funktionalität des Beschleuniger-Integrationsschaltkreises 2236, in einem Ausführungsbeispiel, ist die physische Trennung der Engines 2231-2232, N, so dass sie für ein System als unabhängige Einheiten erscheinen.Since the hardware resources of the graphics processing engines 2231-2232,N are explicitly mapped to a real address space seen by the
In mindestens einem Ausführungsbeispiel sind ein oder mehrere Grafikspeicher 2233-2234, M jeweils mit den Engines 2231-2232, N gekoppelt. Grafikspeicher 2233-2234, M speichern Befehle und Daten, die von der jeweiligen Grafikverarbeitungs-Engine 2231-2232, N verarbeitet werden. Bei den Grafikspeichern 2233-2234, 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 2233-2234,M are coupled to engines 2231-2232,N, respectively. Graphics memories 2233-2234,M store commands and data to be processed by the respective graphics processing engine 2231-2232,N. Graphics memory 2233-2234,M may 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 2240 zu reduzieren, Vorgabetechniken (engl. biasing techniques) verwendet, um sicherzustellen, dass die in den Grafikspeichern 2233-2234, M gespeicherten Daten die Daten sind, die am häufigsten von den Grafikverarbeitungs-Engines 2231-2232, N und vorzugsweise nicht von den Kernen 2260A-2260D (zumindest nicht häufig) verwendet werden. In ähnlicher Weise versucht ein Vorgabemechanismus, die von den Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 2231-2232, N) benötigten Daten in den Caches 2262A-2262D, 2256 der Kerne und dem Systemspeicher 2214 zu halten.In one embodiment, to reduce data traffic over
In mindestens einem Ausführungsbeispiel sind die Grafikverarbeitungs-Engines 2231-2232, 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 2231-2232, N leiten und so die Virtualisierung innerhalb einer VM/Partition bereitstellen.In at least one embodiment, the graphics processing engines 2231-2232,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 2231-2232,N, thus providing virtualization within a VM/partition.
In mindestens einem Ausführungsbeispiel können die Grafikverarbeitungs-Engines 2231-2232, 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 2231-2232, N verwenden, um den Zugriff durch jedes Betriebssystem zu ermöglichen. Bei Systemen mit einer Partition ohne Hypervisor sind die Engines 2231-2232, N für Grafikverarbeitungsanwendungen Bestandteil eines Betriebssystems. In mindestens einem Ausführungsbeispiel kann ein Betriebssystem die Grafikverarbeitungs-Engines 2231-2232, N virtualisieren, um den Zugriff auf jeden Prozess oder jede Anwendung zu ermöglichen.In at least one embodiment, the graphics processing engines 2231-2232,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 2231-2232,N to allow access by any operating system. In systems with a partition without a hypervisor, the engines 2231-2232, 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 2231-2232,N to allow access to any process or application.
In mindestens einem Ausführungsbeispiel, wählt das Grafikbeschleunigungsmodul 2246 oder eine einzelne Grafikverarbeitungs-Engine 2231-2232, N ein Prozesselement unter Verwendung eines Prozesshandles aus. In einem Ausführungsbeispiel werden die Prozesselemente im Systemspeicher 2214 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 2231-2232, 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
Das Grafikbeschleunigungsmodul 2246 und/oder die einzelnen Grafikverarbeitungs-Engines 2231-2232, 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 2284 an ein Grafikbeschleunigungsmodul 2246 zum Starten eines Jobs in einer virtualisierten Umgebung enthalten sein.
In mindestens einem Ausführungsbeispiel ist ein Programmierungsmodell für einen dedizierten Prozess implementierungsspezifisch. In diesem Modell besitzt ein einzelner Prozess das Grafikbeschleunigungsmodul 2246 oder eine einzelne Grafikverarbeitungs-Engine 2231. Da sich das Grafikbeschleunigungsmodul 2246 im Besitz eines einzelnen Prozesses befindet, initialisiert ein Hypervisor den Beschleuniger-Integrationsschaltkreis 2236 für eine besitzende Partition und ein Betriebssystem initialisiert den Beschleuniger-Integrationsschaltkreis 2236 für einen besitzenden Prozess, wenn das Grafikbeschleunigungsmodul 2246 zugewiesen wird.In at least one embodiment, a dedicated process programming model is implementation specific. In this model, a single process owns the
Im Betrieb holt eine WD-Hol-Einheit 2291 im Beschleuniger-Integrationsabschnitt 2290 den nächsten WD 2284, der einen Hinweis auf die von einer oder mehreren Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 2246 zu erledigende Arbeit umfasst. Daten von WD 2284 können in Registern 2245 gespeichert und von der MMU 2239, der Unterbrechungsverwaltungsschaltung 2247 und/oder der Kontextverwaltungsschaltung 2248 wie abgebildet verwendet werden. Beispielsweise enthält ein Ausführungsbeispiel von MMU 2239 eine Segment-/Seitenlaufschaltung für den Zugriff auf Segment-/Seitentabellen 2286 innerhalb des virtuellen Adressraums 2285 des Betriebssystems. Der Unterbrechungsverwaltungsschaltung 2247 kann Interrupt-Ereignisse 2292 verarbeiten, die vom Grafikbeschleunigungsmodul 2246 empfangen werden. Bei der Durchführung von Grafikoperationen wird eine effektive Adresse 2293, die von einer Grafikverarbeitungs-Engine 2231-2232, N generiert wird, von der MMU 2239 in eine reale Adresse übersetzt.In operation, a WD fetch
In einem Ausführungsbeispiel wird derselbe Satz von Registern 2245 für jede Grafikverarbeitungs-Engine 2231-2232, N und/oder Grafikbeschleunigungsmodul 2246 dupliziert und kann von einem Hypervisor oder Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in einem Beschleuniger-Integrationsabschnitt 2290 enthalten sein. Exemplarische Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 1 dargestellt. Tabelle 1 - Vom Hypervisor initialisierte Register
Beispielhafte Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 2 dargestellt. Tabelle 2 - Vom Betriebssystem initialisierte Register
In einem Ausführungsbeispiel ist jede WD 2284 spezifisch für ein bestimmtes Grafikbeschleunigungsmodul 2246 und/oder die Grafikverarbeitungs-Engines 2231-2232, N. Sie enthält alle Informationen, die eine Grafikverarbeitungs-Engine 2231-2232, 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
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 2246. Es gibt zwei Programmiermodelle, bei denen das Graphikbeschleunigungsmodul 2246 von mehreren Prozessen und Partitionen gemeinsam genutzt wird: zeitabschnittsweise gemeinsam genutzte und graphikgerichtete gemeinsam genutzte.In at least one embodiment, shared programming models enable all or a subset of processes from all or a subset of partitions in a system the use of a
In diesem Modell enthält der Systemhypervisor 2296 das Grafikbeschleunigungsmodul 2246 und stellt seine Funktionalität für alle Betriebssysteme 2295 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 2246 die Virtualisierung durch den Systemhypervisor 2296 unterstützt, kann das Grafikbeschleunigungsmodul 2246 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 2246 muss einen Mechanismus zum Sichern und Wiederherstellen des Kontexts bereitstellen. 2) Für eine Jobanforderung einer Anwendung garantiert das Grafikbeschleunigungsmodul 2246, dass sie in einer bestimmten Zeitspanne abgeschlossen wird, einschließlich eventueller Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 2246 bietet die Möglichkeit, die Verarbeitung eines Auftrags vorwegzunehmen. 3) Das Grafikbeschleunigungsmodul 2246 muss die Ausgeglichenheit zwischen den Prozessen garantieren, wenn es in einem gerichteten gemeinsam genutzten Programmiermodell arbeitet.In this model, the
In mindestens einem Ausführungsbeispiel ist die Anwendung 2280 erforderlich, um einen Systemaufruf des Betriebssystems 2295 mit einem Grafikbeschleunigungsmodul vom Typ 2246, 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 2246 eine gezielte Beschleunigungsfunktion für einen Systemaufruf. In mindestens einem Ausführungsbeispiel kann der Typ des Grafikbeschleunigungsmoduls 2246 ein systemspezifischer Wert sein. In mindestens einem Ausführungsbeispiel ist der WD speziell für das Graphikbeschleunigungsmodul 2246 formatiert und kann in Form eines Grafikbeschleunigungsmodul-2246-Befehls, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur zur Beschreibung der von Grafikbeschleunigungsmodul 2246 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 2236 und des Grafikbeschleunigungsmoduls 2246 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 2296 kann optional einen aktuellen AMOR-Wert (AMOR = Authority Mask Override Register) anwenden, bevor ein AMR in Prozesselement 2283 übergeben wird. In mindestens einem Ausführungsbeispiel ist CSRP eines der Register 2245, das eine effektive Adresse eines Bereichs im Adressraum 2282 einer Anwendung für das Grafikbeschleunigungsmodul 2246 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
Bei Erhalt eines Systemaufrufs kann das Betriebssystem 2295 überprüfen, ob die Anwendung 2280 registriert und zur Verwendung des Grafikbeschleunigungsmoduls 2246 autorisiert wurde. Betriebssystem 2295 ruft dann den Hypervisor 2296 mit den in Tabelle 3 aufgeführten Informationen auf. Tabelle 3 - Aufrufparameter von OS zu Hypervisor
Nach Erhalt eines Hypervisor-Aufrufs überprüft der Hypervisor 2296, ob das Betriebssystem 2295 registriert ist und die Berechtigung zur Verwendung des Grafikbeschleunigungsmoduls 2246 erhalten hat. Hypervisor 2296 fügt dann Prozesselement 2283 in eine Prozesselement-Verknüpfungsliste für einen entsprechenden Typ des Grafikbeschleunigungsmoduls 2246 ein. Ein Prozesselement kann die in Tabelle 4 aufgeführten Informationen umfassen. Tabelle 4 - Informationen zu Prozesselementen
In mindestens einem Ausführungsbeispiel initialisiert der Hypervisor eine Vielzahl von Registern 2290 von Beschleuniger-Integrationsabschnitten 2290 bis 2245.In at least one embodiment, the hypervisor initializes a plurality of
Wie in
In einem Ausführungsbeispiel stellt die Schaltungsanordnung 2294A-2294E für die Verwaltung von Vorgaben/Kohärenz innerhalb einer oder mehrerer der MMUs 2239A-2239E die Cache-Kohärenz zwischen den Caches eines oder mehrerer Host-Prozessoren (z. B. 2205) und der GPUs 2210-2213 sicher und implementiert Vorgabe-Techniken, die physikalische Speicher angeben, in denen bestimmte Datentypen gespeichert werden sollen. Während mehrere Vorgaben der Schaltungsanordnung 2294A-2294E zur Verwaltung der Vorgabe/Kohärenz in
In einem Ausführungsbeispiel kann der GPU-gebundene Speicher 2220-2223 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 2220-2223 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 2205, 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 2220-2223 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 2210-2213 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 GPUseine Rolle spielen.In one embodiment, the GPU-bound memory 2220-2223 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 2220-2223 as part of system memory without the inconvenient cache coherency overhead is a beneficial operating environment for offloading to GPUs. This arrangement allows
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 2220-2223 mit oder ohne Vorgabe-Cache in GPU 2210-2213 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 2220-2223 with or without a default cache in GPU 2210-2213 (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 2220-2223 assoziiert ist, vor dem tatsächlichen Zugriff auf einen GPU-Speicher zugegriffen, was die folgenden Operationen veranlasst. Zunächst werden lokale Anfragen vom GPU 2210-2213, die ihre Seite in der GPU-Vorgabe finden, direkt an einen entsprechenden GPU-Speicher 2220-2223 weitergeleitet. Lokale Anfragen von einem Grafikprozessor, die ihre Seite in der Vorgabe des Host-Speichers finden, werden an den Prozessor 2205 weitergeleitet (z.B. über eine Hochgeschwindigkeitsverbindung, wie oben beschrieben). In einem Ausführungsbeispiel schließen Anforderungen vom Prozessor 2205, 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 2210-2213 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 2220-2223 is accessed prior to the actual access to GPU memory, causing the following operations. First, local requests from the GPU 2210-2213 that find their page in the GPU policy are routed directly to a corresponding GPU memory 2220-2223. Local requests from a graphics processor that find their page in the host memory default are forwarded to processor 2205 (e.g., over a high-speed link, as described above). In one embodiment, requests from
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 2205 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
In einem Ausführungsbeispiel wird die Cache-Kohärenz aufrechterhalten, indem GPU-vorgegebene Seiten vom Host-Prozessor 2205 vorübergehend nicht gecached werden. Um auf diese Seiten zuzugreifen, kann Prozessor 2205 den Zugriff von GPU 2210 anfordern, der den Zugriff möglicherweise nicht sofort gewährt. Um die Kommunikation zwischen Prozessor 2205 und GPU 2210 zu reduzieren, ist es daher von Vorteil, sicherzustellen, dass GPU-vorgegebene Seiten diejenigen sind, die von einem GPU, aber nicht vom Host-Prozessor 2205 benötigt werden und umgekehrt.In one embodiment, cache coherency is maintained by temporarily not caching GPU-given pages from
Die Hardware-Struktur(en) 1415 wird/werden verwendet, um eine oder mehrere Ausführungsbeispiele auszuführen. Details bezüglich der Hardwarestruktur(en) 1415 sind hier in Verbindung mit
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robotic control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2410 einen Vertex-Prozessor 2405 und einen oder mehrere Fragmentprozessor(en) 2415A-2415N (z. B. 2415A, 2415B, 2415C, 2415D, bis 2415N-1 und 2415N). In mindestens einem Ausführungsbeispiel kann der Grafikprozessor 2410 verschiedene Schattierungsprogramme über separate Logik ausführen, so dass der Vertex-Prozessor 2405 für die Ausführung von Operationen für Vertex-Schattierungsprogramme optimiert ist, während ein oder mehrere Fragmentprozessor(en) 2415A-2415N Fragment-Schattierungsoperationen (z.B. Pixel) für Fragment- oder Pixel-Schattierungsprogramme ausführen. In mindestens einem Ausführungsbeispiel führt der Vertex-Prozessor 2405 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) 2415A-2415N die vom Vertex-Prozessor 2405 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) 2415A-2415N 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,
In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2410 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 2420A-2420B, Cache(s) 2425A-2425B und Schaltkreisverbindung(en) 2430A-2430B. In mindestens einem Ausführungsbeispiel ist (sind) eine oder mehrere MMU(s) 2420A-2420B für die Zuordnung von virtuellen zu physikalischen Adressen für den Grafikprozessor 2410 vorgesehen, einschließlich für den Vertex-Prozessor 2405 und/oder den/die Fragment-Prozessor(en) 2415A-2415N, die zusätzlich zu den in einem oder mehreren Cache(s) 2425A-2425B 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) 2420A-2420B mit anderen MMUs innerhalb des Systems synchronisiert werden, einschließlich einer oder mehrerer MMUs, die mit einem oder mehreren Anwendungsprozessor(en) 2305, Bildprozessor(en) 2315 und/oder Videoprozessor(en) 2320 aus
In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2440 eine oder mehrere MMU(s) 2420A-2420B, Caches 2425A-2425B, und die Schaltungsverbindungen 2430A-2430B des Grafikprozessors 2410 aus
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robotic control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel umfasst der Grafikkern 2500 einen gemeinsam genutzten Befehlscache 2502, eine Textureinheit 2518 und einen Cache/gemeinsamen Speicher 2520, die den Ausführungsressourcen im Grafikkern 2500 gemeinsam zugeordnet sind. In mindestens einem Ausführungsbeispiel kann der Grafikkern 2500 mehrere Abschnitte 2501A-2501N oder Partitionen für jeden Kern umfassen, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 2500 umfassen. Die Abschnitte 2501A-2501N können Unterstützungslogik einschließlich eines lokalen Befehlscaches 2504A-2504N, eines Thread-Planers 2506A-2506N, eines Thread-Verteilers 2508A-2508N und eines Satzes von Registern 2510A-2510N umfassen. In mindestens einem Ausführungsbeispiel können die Abschnitte 2501A-2501N einen Satz von zusätzlichen Funktionseinheiten (AFUs 2512A-2512N), Gleitkommaeinheiten (FPU 2514A-2514N), ganzzahlige arithmetisch-logische Einheiten (ALUs 2516-2516N), Adressberechnungseinheiten (ACU 2513A-2513N), Doppelpräzisions-Gleitkommaeinheiten (DPFPU 2515A-2515N) und Matrixverarbeitungseinheiten (MPU 2517A-2517N) umfassen.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel können die FPUs 2514A-2514N Gleitkomma-Operationen mit einfacher Genauigkeit (32 Bit) und halber Genauigkeit (16 Bit) ausführen, während die DPFPUs 2515A-2515N Gleitkomma-Operationen mit doppelter Genauigkeit (64 Bit) ausführen können. In mindestens einem Ausführungsbeispiel können die ALUs 2516A-2516N 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 2517A-2517N 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 2517-2517N 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 2512A-2512N 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,
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robotic control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel umfasst die GPGPU 2530 den Speicher 2544A-2544B, der über einen Satz von Speichersteuerungen 2542A-2542B mit den Rechenclustern 2536A-2536H gekoppelt ist. In mindestens einem Ausführungsbeispiel kann der Speicher 2544A-2544B 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,
In mindestens einem Ausführungsbeispiel umfassen die Rechencluster 2536A-2536H jeweils einen Satz von Grafikkernen, wie z.B. den Grafikkern 2500 von
In mindestens einem Ausführungsbeispiel können mehrere Instanzen der GPGPU 2530 so konfiguriert werden, dass sie als Rechencluster arbeiten. In mindestens einem Ausführungsbeispiel variiert die Kommunikation, die von den Rechenclustern 2536A-2536H 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 2530 über die Host-Schnittstelle 2532. In mindestens einem Ausführungsbeispiel enthält die GPGPU 2530 einen E/A-Hub 2539, der die GPGPU 2530 mit einer GPU-Verbindung 2540 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 2530 ermöglicht. In mindestens einem Ausführungsbeispiel ist der GPU-Link 2540 mit einer dedizierten GPU-zu-GPU-Brücke gekoppelt, die eine Kommunikation und Synchronisierung zwischen mehreren Instanzen des GPGPU 2530 ermöglicht. In mindestens einem Ausführungsbeispiel wird die GPU-Verbindung 2540 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 2530 in getrennten Datenverarbeitungssystemen und kommunizieren über ein Netzwerkgerät, das über die Host-Schnittstelle 2532 zugänglich ist. In mindestens einem Ausführungsbeispiel kann die GPU-Verbindung 2540 so konfiguriert werden, dass sie zusätzlich oder alternativ zur Host-Schnittstelle 2532 eine Verbindung zu einem Host-Prozessor ermöglicht.In at least one embodiment, multiple instances of the
In mindestens einem Ausführungsbeispiel kann die GPGPU 2530 so konfiguriert werden, dass sie neuronale Netze trainiert. In mindestens einem Ausführungsbeispiel kann GPGPU 2530 innerhalb einer Inferenzplattform verwendet werden. In mindestens einem Ausführungsbeispiel, in dem GPGPU 2530 zur Inferenzierung verwendet wird, kann GPGPU weniger Rechencluster 2536A-2536H umfassen als wenn GPGPU zum Trainieren eines neuronalen Netzwerks verwendet wird. In mindestens einem Ausführungsbeispiel kann sich die mit dem Speicher 2544A-2544B 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 2530 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
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robotic control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel umfasst das Verarbeitungs-Subsystem 2601 einen oder mehrere Parallelprozessor(en) 2612, der/die über einen Bus oder eine andere Verbindung 2613 mit dem Speicher-Hub 2605 verbunden ist/sind. In mindestens einem Ausführungsbeispiel kann es sich bei der Kommunikationsverbindung 2613 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) 2612 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) 2612 ein Grafikverarbeitungs-Subsystem, das Pixel an eines von einem oder mehreren Anzeigegerät(en) 2610A ausgeben kann, die über den E/A-Hub 2607 gekoppelt sind. In mindestens einem Ausführungsbeispiel können ein oder mehrere Parallelprozessor(en) 2612 auch eine Steuerung und eine Anzeigeschnittstelle (nicht abgebildet) umfassen, um eine direkte Verbindung zu einem oder mehreren Anzeigegerät(en) 2610B zu ermöglichen.In at least one embodiment,
In mindestens einem Ausführungsbeispiel kann eine Systemspeichereinheit 2614 mit dem E/A-Hub 2607 verbunden werden, um einen Speichermechanismus für das Computersystem 2600 bereitzustellen. In mindestens einem Ausführungsbeispiel kann ein E/A-Switch 2616 verwendet werden, um einen Schnittstellenmechanismus bereitzustellen, der Verbindungen zwischen dem E/A-Hub 2607 und anderen Komponenten ermöglicht, wie z.B. einem Netzwerkadapter 2618 und/oder einem drahtlosen Netzwerkadapter 2619, die in die Plattform integriert werden können, und verschiedenen anderen Geräten, die über ein oder mehrere Zusatzgerät(e) 2620 hinzugefügt werden können. In mindestens einem Ausführungsbeispiel kann der Netzwerkadapter 2618 ein Ethernet-Adapter oder ein anderer drahtgebundener Netzwerkadapter sein. In mindestens einem Ausführungsbeispiel kann der drahtlose Netzwerkadapter 2619 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
In mindestens einem Ausführungsbeispiel kann das Rechensystem 2600 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 2607 angeschlossen werden können. In mindestens einem Ausführungsbeispiel können Kommunikationspfade, die verschiedene Komponenten in
In mindestens einem Ausführungsbeispiel umfasst/umfassen ein oder mehrere Parallelprozessor(en) 2612 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) 2612 Schaltungsanordnungen, die für die Verarbeitung für allgemeine Zwecke optimiert sind. In mindestens einem Ausführungsbeispiel können Komponenten des Rechnersystems 2600 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) 2612, Speicher-Hub 2605, Prozessor(en) 2602 und E/A-Hub 2607 in eine integrierte Schaltung eines System on-a-Chip (SoC) integriert sein. In mindestens einem Ausführungsbeispiel können Komponenten des Rechnersystems 2600 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 2600 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) 2612 includes circuitry optimized for graphics and video processing, including, for example, video output circuitry, and constitutes a graphics processing unit (GPU). In at least one embodiment, one or more parallel processors include (en) 2612 circuitry optimized for general-purpose processing. In at least one embodiment, components of
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Computersystems wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a computer system as described above.
In mindestens einem Ausführungsbeispiel umfasst der Parallelprozessor 2700 eine parallele Verarbeitungseinheit 2702. In mindestens einem Ausführungsbeispiel umfasst die Parallelverarbeitungseinheit 2702 eine E/A-Einheit 2704, die die Kommunikation mit anderen Geräten, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 2702, ermöglicht. In mindestens einem Ausführungsbeispiel kann die E/A-Einheit 2704 direkt mit anderen Geräten verbunden sein. In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 2704 über eine Hub- oder Switch-Schnittstelle, wie z.B. den Speicher-Hub 2605, mit anderen Geräten verbunden. In mindestens einem Ausführungsbeispiel bilden Verbindungen zwischen dem Speicher-Hub 2605 und der E/A-Einheit 2704 eine Kommunikationsverbindung 2613. In mindestens einem Ausführungsbeispiel stellt die E/A-Einheit 2704 eine Verbindung mit einer Host-Schnittstelle 2706 und einer Speicher-Crossbar 2716 her, wobei die Host-Schnittstelle 2706 Befehle empfängt, die auf die Durchführung von Verarbeitungsoperationen gerichtet sind, und die Speicher-Crossbar 2716 Befehle empfängt, die auf die Durchführung von Speicheroperationen gerichtet sind.In at least one embodiment, parallel processor 2700 includes a
Wenn in mindestens einem Ausführungsbeispiel die Host-Schnittstelle 2706 über die E/A-Einheit 2704 einen Befehlspuffer empfängt, kann die Host-Schnittstelle 2706 Arbeitsoperationen zur Ausführung dieser Befehle an ein Frontend 2708 leiten. In mindestens einem Ausführungsbeispiel ist das Frontend 2708 mit einem Planer 2710 gekoppelt, der so konfiguriert ist, dass er Befehle oder andere Arbeitsaufgaben an ein Verarbeitungscluster-Array 2712 verteilt. In mindestens einem Ausführungsbeispiel stellt der Planer 2710 sicher, dass das Verarbeitungscluster-Array 2712 richtig konfiguriert und in einem gültigen Zustand ist, bevor Aufgaben an das Verarbeitungscluster-Array 2712 des Verarbeitungscluster-Arrays 2712 verteilt werden. In mindestens einem Ausführungsbeispiel ist der Planer 2710 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In mindestens einem Ausführungsbeispiel ist der in einem Mikrocontroller implementierte Planer 2710 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 2712 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann die Host-Software Arbeitslasten für das Planen auf dem Array 2712 über eine von mehreren Doorbells für die Grafikverarbeitung nachweisen. In mindestens einem Ausführungsbeispiel können Arbeitslasten dann automatisch über das Verarbeitungs-Array 2712 durch die Logik des Planers 2710 innerhalb eines Mikrocontrollers, der den Planer 2710 umfasst, auf das Verarbeitungs-Array 2712 verteilt werden.In at least one embodiment, when the
In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2712 bis zu „N“ Verarbeitungscluster umfassen (z.B. Cluster 2714A, Cluster 2714B, bis hin zu Cluster 2714N). In mindestens einem Ausführungsbeispiel kann jeder Cluster 2714A-2714N des Verarbeitungscluster-Arrays 2712 eine große Anzahl gleichzeitiger Threads ausführen. In mindestens einem Ausführungsbeispiel kann der Planer 2710 den Clustern 2714A-2714N des Verarbeitungscluster-Arrays 2712 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 2710 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 2712 konfiguriert wurde. In mindestens einem Ausführungsbeispiel können verschiedene Cluster 2714A-2714N des Verarbeitungscluster-Arrays 2712 für die Verarbeitung verschiedener Programmtypen oder für die Durchführung verschiedener Arten von Berechnungen zugewiesen werden.In at least one embodiment, processing
In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2712 so konfiguriert werden, dass es verschiedene Arten von parallelen Verarbeitungsoperationen durchführt. In mindestens einem Ausführungsbeispiel ist das Verarbeitungscluster-Array 2712 so konfiguriert, dass es allgemeine parallele Rechenoperationen ausführt. In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2712 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
In mindestens einem Ausführungsbeispiel ist das Verarbeitungscluster-Array 2712 so konfiguriert, dass es parallele Grafikverarbeitungsoperationen durchführt. In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2712 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 2712 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 2702 Daten aus dem Systemspeicher über die E/A-Einheit 2704 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 2722) gespeichert und dann in den Systemspeicher zurückgeschrieben werden.In at least one embodiment, processing
In mindestens einem Ausführungsbeispiel kann bei Verwendung der Parallelverarbeitungseinheit 2702 zur Durchführung einer Grafikverarbeitung der Planer 2710 so konfiguriert werden, dass er eine Verarbeitungsauslastung in ungefähr gleich große Aufgaben aufteilt, um eine bessere Verteilung der Grafikverarbeitungsoperationen auf mehrere Cluster 2714A-2714N des Verarbeitungscluster-Arrays 2712 zu ermöglichen. In mindestens einem Ausführungsbeispiel können Teile des Verarbeitungscluster-Arrays 2712 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 2714A-2714N erzeugt wurden, in Puffern gespeichert werden, um die Übertragung von Zwischendaten zwischen den Clustern 2714A-2714N zur weiteren Verarbeitung zu ermöglichen.In at least one embodiment, when using the
In mindestens einem Ausführungsbeispiel kann das Verarbeitungscluster-Array 2712 Verarbeitungsaufgaben empfangen, die über den Planer 2710 ausgeführt werden sollen, der Befehle zur Definition von Verarbeitungsaufgaben vom Frontend 2708 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 2710 so konfiguriert sein, dass er den Aufgaben entsprechende Indizes holt oder Indizes vom Frontend 2708 empfängt. In mindestens einem Ausführungsbeispiel kann das Frontend 2708 so konfiguriert werden, dass sichergestellt wird, dass das Verarbeitungscluster-Array 2712 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
In mindestens einem Ausführungsbeispiel kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 2702 mit dem Parallelprozessorspeicher 2722 gekoppelt werden. In mindestens einem Ausführungsbeispiel kann auf den Parallelprozessorspeicher 2722 über Memory Crossbar 2716 zugegriffen werden, der Speicheranforderungen von Verarbeitungscluster-Array 2712 sowie der E/A-Einheit 2704 empfangen kann. In mindestens einem Ausführungsbeispiel kann über eine Speicherschnittstelle 2718 auf den Parallelprozessorspeicher 2722 zugegriffen werden, und zwar über Memory Crossbar 2716. In mindestens einem Ausführungsbeispiel kann die Speicherschnittstelle 2718 mehrere Partitionseinheiten (z.B. Partitionseinheit 2720A, Partitionseinheit 2720B, über Partitionseinheit 2720N) umfassen, die jeweils mit einem Teil (z.B. Speichereinheit) des Parallelprozessorspeichers 2722 gekoppelt werden können. In mindestens einem Ausführungsbeispiel ist eine Anzahl von Partitionseinheiten 2720A-2720N so konfiguriert, dass sie einer Anzahl von Speichereinheiten entspricht, so dass eine erste Partitionseinheit 2720A eine entsprechende erste Speichereinheit 2724A, eine zweite Partitionseinheit 2720B eine entsprechende Speichereinheit 2724B und eine N-te Partitionseinheit 2720N eine entsprechende N-te Speichereinheit 2724N aufweist. In mindestens einem Ausführungsbeispiel kann eine Anzahl von Partitionseinheiten 2720A-2720N nicht gleich einer Anzahl von Speichergeräten sein.In at least one embodiment, each of one or more instances of
In mindestens einem Ausführungsbeispiel können die Speichereinheiten 2724A-2724N 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 2724A-2724N 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 2724A-2724N hinweg gespeichert werden, so dass die Partitionseinheiten 2720A-2720N Teile jedes Render-Targets parallel schreiben können, um die verfügbare Bandbreite des Parallelprozessorspeichers 2722 effizient zu nutzen. In mindestens einem Ausführungsbeispiel kann eine lokale Instanz des Parallelprozessorspeichers 2722 zugunsten eines vereinheitlichten Speicherdesigns ausgeschlossen werden, das den Systemspeicher in Verbindung mit dem lokalen Cache-Speicher verwendet.In at least one embodiment,
In mindestens einem Ausführungsbeispiel kann jeder der Cluster 2714A-2714N des Verarbeitungs-Cluster-Arrays 2712 Daten verarbeiten, die in eine der Speichereinheiten 2724A-2724N im Parallelprozessorspeicher 2722 geschrieben werden. In mindestens einem Ausführungsbeispiel kann die Speicher-Crossbar 2716 so konfiguriert werden, dass eine Ausgabe jedes Clusters 2714A-2714N an eine beliebige Partitionseinheit 2720A-2720N oder an einen anderen Cluster 2714A-2714N übertragen werden kann, der zusätzliche Verarbeitungsoperationen an einer Ausgabe durchführen kann. In mindestens einem Ausführungsbeispiel kann jeder Cluster 2714A-2714N über die Speicherkreuzschiene 2716 mit der Speicherschnittstelle 2718 kommunizieren, um von verschiedenen externen Speichergeräten zu lesen oder auf diese zu schreiben. In mindestens einem Ausführungsbeispiel hat die Speicher-Crossbar 2716 eine Verbindung zur Speicherschnittstelle 2718, um mit der E/A-Einheit 2704 zu kommunizieren, sowie eine Verbindung zu einer lokalen Instanz des Parallelprozessorspeichers 2722, wodurch Verarbeitungseinheiten innerhalb verschiedener Verarbeitungscluster 2714A-2714N mit dem Systemspeicher oder einem anderen Speicher kommunizieren können, der nicht lokal zur Parallelverarbeitungseinheit 2702 ist. In mindestens einem Ausführungsbeispiel kann die Speicher-Crossbar 2716 virtuelle Kanäle verwenden, um Verkehrsströme zwischen den Clustern 2714A-2714N und den Partitionseinheiten 2720A-2720N zu trennen.In at least one embodiment, each of
In mindestens einem Ausführungsbeispiel können mehrere Instanzen der Parallelverarbeitungseinheit 2702 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 2702 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 2702 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 2702 oder des Parallelprozessors 2700 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 the
In mindestens einem Ausführungsbeispiel ist ROP 2726 eine Verarbeitungseinheit, die Rasteroperationen wie Schablone, z-Test, Mischen und dergleichen durchführt. In mindestens einem Ausführungsbeispiel gibt ROP 2726 dann verarbeitete Grafikdaten aus, die im Grafikspeicher gespeichert werden. In mindestens einem Ausführungsbeispiel umfasst ROP 2726 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 2726 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,
In mindestens einem Ausführungsbeispiel ist ROP 2726 in jedem Verarbeitungscluster (z.B. Cluster 2714A-2714N von
In mindestens einem Ausführungsbeispiel kann der Betrieb des Verarbeitungsclusters 2714 über einen Pipeline-Verwalter 2732 gesteuert werden, der die Verarbeitungsaufgaben auf SIMT-Parallelprozessoren verteilt. In mindestens einem Ausführungsbeispiel empfängt der Pipeline-Verwalter 2732 Befehle vom Planer 2710 von
In mindestens einem Ausführungsbeispiel kann jeder Grafik-Multiprozessor 2734 innerhalb des Verarbeitungsclusters 2714 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 2734 within the
In mindestens einem Ausführungsbeispiel bilden die an Verarbeitungscluster 2714 ü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 2734 zugeordnet werden. In mindestens einem Ausführungsbeispiel kann eine Thread-Gruppe weniger Threads umfassen als eine Anzahl von Verarbeitungs-Engines innerhalb eines Grafik-Multiprozessors 2734. 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 2734 umfassen. Wenn in mindestens einem Ausführungsbeispiel eine Thread-Gruppe mehr Threads als die Anzahl der Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2734 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 2734 ausgeführt werden.In at least one embodiment, the instructions submitted to
In mindestens einem Ausführungsbeispiel umfasst der Grafik-Multiprozessor 2734 einen internen Cache-Speicher zur Durchführung von Lade- und Speicheroperationen. In mindestens einem Ausführungsbeispiel kann der Grafik-Multiprozessor 2734 auf einen internen Cache-Speicher verzichten und einen Cache-Speicher (z.B. L1-Cache 2748) innerhalb des Verarbeitungsclusters 2714 verwenden. In mindestens einem Ausführungsbeispiel hat jeder Grafik-Multiprozessor 2734 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z.B. Partitionseinheiten 2720A-2720N von
In mindestens einem Ausführungsbeispiel kann jeder Verarbeitungscluster 2714 eine MMU 2745 (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 2745 innerhalb der Speicherschnittstelle 2718 von
In mindestens einem Ausführungsbeispiel kann ein Verarbeitungscluster 2714 so konfiguriert sein, dass jeder Grafik-Multiprozessor 2734 mit einer Textureinheit 2736 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-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 2734 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 2734 verarbeitete Tasks an die Daten-Crossbar 2740 aus, um verarbeitete Tasks einem anderen Verarbeitungscluster 2714 zur weiteren Verarbeitung zur Verfügung zu stellen oder um verarbeitete Tasks über die Speicher-Crossbar 2716 in einem L2-Cache, im lokalen Parallelprozessorspeicher oder im Systemspeicher zu speichern. In mindestens einem Ausführungsbeispiel ist preROP 2742 (Pre-Raster Operations Unit) so konfiguriert, dass sie Daten vom Grafik-Multiprozessor 2734 empfängt und Daten an ROP-Einheiten weiterleitet, die sich, wie hier beschrieben, bei Partitionseinheiten befinden können (z.B. Partitionseinheiten 2720A-2720N von
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robotic control system may be implemented using a processor as described above.
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1415 sind hier in Verbindung mit
In mindestens einem Ausführungsbeispiel empfängt der Befehlscache 2752 einen Strom von auszuführenden Befehlen vom Pipeline-Verwalter 2732. In mindestens einem Ausführungsbeispiel werden Befehle im Befehlscache 2752 zwischengespeichert und zur Ausführung durch die Befehlseinheit 2754 verteilt. In mindestens einem Ausführungsbeispiel kann die Befehlseinheit 2754 Befehle als Thread-Gruppen (z.B. Warps) versenden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb des GPGPU-Kerns 2762 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 2756 dazu verwendet werden, Adressen in einem einheitlichen Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf die von den Lade-/Speichereinheiten 2766 zugegriffen werden kann.In at least one embodiment,
In mindestens einem Ausführungsbeispiel ist in der Registerdatei 2758 ein Satz von Registern für Funktionseinheiten des Grafik-Multiprozessors 2734 vorgesehen. In mindestens einem Ausführungsbeispiel ist in der Registerdatei 2758 ein temporärer Speicher für Operanden vorgesehen, die mit Datenpfaden von Funktionseinheiten (z.B. GPGPU-Kerne 2762, Lade-/Speichereinheiten 2766) des Grafik-Multiprozessors 2734 verbunden sind. In mindestens einem Ausführungsbeispiel ist die Registerdatei 2758 auf jede der Funktionseinheiten so aufgeteilt, dass jeder Funktionseinheit ein dedizierter Teil der Registerdatei 2758 zugeordnet ist. In mindestens einem Ausführungsbeispiel ist die Registerdatei 2758 auf verschiedene Warps aufgeteilt, die vom Grafik-Multiprozessor 2734 ausgeführt werden.In at least one embodiment,
In mindestens einem Ausführungsbeispiel können GPGPU-Kerne 2762 jeweils Gleitkommaeinheiten (FPUs) und/oder ganzzahlige arithmetische Logikeinheiten (ALUs) umfassen, die zur Ausführung von Befehlen des Grafik-Multiprozessors 2734 verwendet werden. GPGPU-Kerne 2762 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 2762 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 2734 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,
In mindestens einem Ausführungsbeispiel umfassen die GPGPU-Kerne 2762 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 2762 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
In mindestens einem Ausführungsbeispiel ist die Speicher- und Cache-Verbindung 2768 ein Verbindungsnetzwerk, das jede funktionelle Einheit des Grafik-Multiprozessors 2734 mit der Registerdatei 2758 und mit dem gemeinsamen Speicher 2770 verbindet. In mindestens einem Ausführungsbeispiel ist die Speicher- und Cache-Verbindung 2768 eine Crossbar-Verbindung, die es der Lade-/Speichereinheit 2766 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher 2770 und der Registerdatei 2758 zu implementieren. In mindestens einem Ausführungsbeispiel kann die Registerdatei 2758 mit derselben Frequenz wie die GPGPU-Kerne 2762 betrieben werden, so dass der Datentransfer zwischen den GPGPU-Kernen 2762 und der Registerdatei 2758 mit sehr geringer Latenz erfolgt. In mindestens einem Ausführungsbeispiel kann der gemeinsame Speicher 2770 verwendet werden, um die Kommunikation zwischen Threads zu ermöglichen, die auf Funktionseinheiten innerhalb des Grafik-Multiprozessors 2734 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann der Cache-Speicher 2772 als Daten-Cache verwendet werden, um beispielsweise Texturdaten zwischen Funktionseinheiten und der Textureinheit 2736 zwischenzuspeichern. In mindestens einem Ausführungsbeispiel kann der gemeinsam genutzte Speicher 2770 auch als programmverwalteter Cache verwendet werden. In mindestens einem Ausführungsbeispiel können Threads, die auf GPGPU-Kernen 2762 ausgeführt werden, programmgesteuert Daten im gemeinsamen Speicher zusätzlich zu automatisch gecachten Daten speichern, die im Cache-Speicher 2772 gespeichert sind.In at least one embodiment, memory and
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 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robotic control system may be implemented using a processor as described above.
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuersystems unter Verwendung einer GPU wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a GPU as described above.
In mindestens einem Ausführungsbeispiel empfängt der Grafikprozessor 2900 Stapel von Befehlen über die Ringverbindung 2902. In mindestens einem Ausführungsbeispiel werden eingehende Befehle von einem Befehls-Streamer 2903 im Pipeline-Frontend 2904 interpretiert. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2900 eine skalierbare Ausführungslogik zur Durchführung von 3D-Geometrieverarbeitung und Medienverarbeitung mittels Grafikkern(en) 2980A-2980N. In mindestens einem Ausführungsbeispiel für Befehle zur 3D-Geometrieverarbeitung liefert Befehls-Streamer 2903 Befehle an die Geometrie-Pipeline 2936. In mindestens einem Ausführungsbeispiel liefert der Befehls-Streamer 2903 für mindestens einige Medienverarbeitungsbefehle Befehle an ein Video-Frontend 2934, das mit der Medienengine 2937 gekoppelt ist. In mindestens einem Ausführungsbeispiel umfasst die Medienengine 2937 eine Video Quality Engine (VQE) 2930 für Video- und Bildnachbearbeitung und eine Multiformat-Codierungs-/Decodierungs-Engine (MFX) 2933, um eine hardwarebeschleunigte Codierung und Decodierung von Mediendaten bereitzustellen. In mindestens einem Ausführungsbeispiel erzeugen die Geometrie-Pipeline 2936 und die Medienengine 2937 jeweils Ausführungsthreads für Thread-Ausführungsressourcen, die von mindestens einem Grafikkern 2980A bereitgestellt werden.In at least one embodiment,
In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2900 skalierbare Thread-Ausführungsressourcen mit modularen Kernen 2980A-2980N (manchmal als Kernabschnitte bezeichnet), die jeweils mehrere Unterkeme 2950A-550N, 2960A-2960N (manchmal als Kernunterabschnitte bezeichnet) aufweisen. In mindestens einem Ausführungsbeispiel kann der Grafikprozessor 2900 über eine beliebige Anzahl von Grafikkernen 2980A bis 2980N verfügen. In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2900 einen Grafikkern 2980A mit mindestens einem ersten Unterkern 2950A und einem zweiten Unterkern 2960A. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 2900 ein Niedrigleistungsprozessor mit einem einzigen Unterkern (z.B. 2950A). In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 2900 mehrere Grafikkerne 2980A-2980N, von denen jeder einen Satz erster Unterkeme 2950A-2950N und einen Satz zweiter Unterkerne 2960A-2960N umfasst. In mindestens einem Ausführungsbeispiel umfasst jeder Unterkern in den ersten Unterkernen 2950A-2950N mindestens einen ersten Satz von Ausführungseinheiten 2952A-2952N und Medien-/Texturabtaster 2954A-2954N. In mindestens einem Ausführungsbeispiel umfasst jeder Unterkern in den zweiten Unterkernen 2960A-2960N mindestens einen zweiten Satz von Ausführungseinheiten 2962A-2962N und Abtastern 2964A-2964N. In mindestens einem Ausführungsbeispiel teilt sich jeder Unterkern 2950A-2950N, 2960A-2960N einen Satz gemeinsam genutzter Ressourcen 2970A-2970N. In mindestens einem Ausführungsbeispiel umfassen gemeinsam genutzte Ressourcen gemeinsam genutzten Cache-Speicher und Pixel-Operationslogik.In at least one embodiment,
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann unter Verwendung der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung einer GPU wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a GPU as described above.
In mindestens einem Ausführungsbeispiel umfasst der Prozessor 3000 ein in einer R In-Order-Frontend („Frontend“) 3001, 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 3001 mehrere Einheiten umfassen. In mindestens einem Ausführungsbeispiel holt ein Befehls-Vorholer 3026 Befehle aus dem Speicher und führt Befehle einem Befehlsdekodierer 3028 zu, der seinerseits Befehle dekodiert oder interpretiert. In mindestens einem Ausführungsbeispiel beispielsweise dekodiert der Befehlsdekodierer 3028 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 3028 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) 3030 dekodierte Uops in programmgeordnete Sequenzen oder Spuren (engl. traces) in einer Uop-Warteschlange 3034 zur Ausführung zusammensetzen. Wenn der Abfolge-Cache 3030 in mindestens einem Ausführungsbeispiel auf eines komplexen Befehls trifft, stellt ein Mikrocode ROM 3032 die zum Abschluss des Betriebs erforderlichen Uops bereit.In at least one embodiment, the
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 3028 auf den Mikrocode ROM 3032 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 3028 in eine kleine Anzahl von Mikro-Ops dekodiert werden. In mindestens einem Ausführungsbeispiel kann ein Befehl im Mikrocode ROM 3032 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) 3030 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 3032, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel kann das Frontend 3001 der Engine, nachdem der Mikrocode ROM 3032 die Sequenzierung von Mikro-Ops für einen Befehl beendet hat, das Holen von Mikro-Ops aus dem Abfolge-Cache 3030 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,
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) 3003 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 3003 umfasst, ohne Einschränkung, einen Allokator/Register-Umbenenner 3040, eine Speicher uop-Warteschlange 3042, eine Ganzzahl-/Gleitkomma-Uop-Warteschlange 3044, einen Speicher-Planer 3046, einen schnellen Planer 3002, einen langsamen/allgemeinen Gleitkomma-Planer („langsamer/allgemeiner FP-Planer“) 3004 und einen einfachen Gleitkomma-Planer („einfacher FP-Planer“) 3006. In mindestens einem Ausführungsbeispiel werden der schnelle Planer 3002, der langsame/allgemeine Gleitkomma-Planer 3004 und der einfache Gleitkomma-Planer 3006 hier auch kollektiv als „uop-Planer 3002, 3004, 3006“ bezeichnet. Der Allokator/Register-Umbenenner 3040 weist Maschinenpuffer und Ressourcen zu, die jede uop zur Ausführung benötigt. In mindestens einem Ausführungsbeispiel benennt der Allokator/Registerumbenenner 3040 logische Register auf Einträge in einer Registerdatei um. In mindestens einem Ausführungsbeispiel allokiert der Allokator/Registerumbenenner 3040 auch einen Eintrag für jede uop in einer von zwei uop-Warteschlangen, der Speicher-uop-Warteschlange 3042 für Speicheroperationen und der Ganzzahl/Gleitkomma-op-Warteschlange 3044 für Nicht-Speicheroperationen, vor dem Speicherplaner 3046 und den uop-Planern 3002, 3004, 3006. In mindestens einem Ausführungsbeispiel bestimmen die uop-Planer 3002, 3004, 3006 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 3002 von mindestens einem Ausführungsbeispiel auf jeder Hälfte des Haupt-Taktzyklus planen, während der langsame/allgemeine Gleitkomma-Planer 3004 und der einfache Gleitkomma-Planer 3006 einmal pro Hauptprozessor-Taktzyklus planen können. In mindestens einem Ausführungsbeispiel können die uop-Planer 3002, 3004 und 3006 für Verteilerports arbitrieren, um uops zur Ausführung zu planen.In at least one embodiment, out-of-
In mindestens einem Ausführungsbeispiel umfasst der Ausführungsblock b 11, ohne Einschränkung, ein(e) ganzzahlige Registerdatei/Umgehungsnetzwerk (engl. bypass network) 3008, eine Gleitkomma-Registerdatei/Umgehungsnetzwerk („FP-Registerdatei/Bypass-Netzwerk“) 3010, Adressgenerierungseinheiten („AGUs“) 3012 und 3014, schnelle arithmetisch-logische Einheiten (ALUs) („schnelle ALUs“) 3016 und 3018, eine langsame arithmetisch-logische Einheit („langsame ALU“) 3020, eine Gleitkomma-ALU („FP“) 3022 und eine Gleitkomma-Bewegungseinheit („FP-Bewegung“) 3024. In mindestens einem Ausführungsbeispiel werden die ganzzahlige Registerdatei / das Umgehungsnetzwerk 3008 und die Gleitkomma-Registerdatei / das Umgehungsnetzwerk 3010 hier auch als „Registerdateien 3008, 3010“ bezeichnet. In mindestens einem Ausführungsbeispiel werden die AGUS 3012 und 3014, die schnellen ALUs 3016 und 3018, die langsamen ALU 3020, die Gleitkomma-ALU 3022 und die Gleitkomma-Bewegungseinheit 3024 hierin auch ganzzahlige Registerdatei/Umgehungsnetzwerk als „Ausführungseinheiten 3012, 3014, 3016, 3018, 3020, 3022 und 3024“ bezeichnet. In mindestens einem Ausführungsbeispiel kann der Ausführungsblock b 11 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,
In mindestens einem Ausführungsbeispiel können die Registerdateien 3008, 3010 zwischen den uop-Planern 3002, 3004, 3006 und den Ausführungseinheiten 3012, 3014, 3016, 3018, 3020, 3022 und 3024 angeordnet werden. In mindestens einem Ausführungsbeispiel führt die Registerdatei / das Umgehungsnetzwerk 3008 ganzzahlige Operationen durch. In mindestens einem Ausführungsbeispiel führt Gleitkomma-Registerdatei/Bypass-Netzwerk 3010 Gleitkomma-Operationen aus. In mindestens einem Ausführungsbeispiel kann jede der Registerdateien 3008, 3010 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 3008, 3010 Daten miteinander austauschen. In mindestens einem Ausführungsbeispiel kann die Registerdatei / das Umgehungsnetzwerk 3008 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 3010 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
In mindestens einem Ausführungsbeispiel können die Ausführungseinheiten 3012, 3014, 3016, 3018, 3020, 3022, 3024 Befehle ausführen. In mindestens einem Ausführungsbeispiel speichern die Registerdateien 3008, 3010 ganzzahlige und Gleitkommadaten-Operandenwerte, die Mikrobefehle ausführen müssen. In mindestens einem Ausführungsbeispiel kann der Prozessor 3000 ohne Einschränkung jede beliebige Anzahl und Kombination von Ausführungseinheiten 3012, 3014, 3016, 3018, 3020, 3022, 3024 umfassen. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3022 und die Gleitkomma-Bewegungseinheit 3024 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 3022 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 3016, 3018 übergeben werden. In mindestens einem Ausführungsbeispiel kann der schnelle ALUs 3016, 3018 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 3020, da die langsame ALU 3020 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 3012, 3014 ausgeführt werden. In mindestens einem Ausführungsbeispiel können die schnelle ALU 3016, schnelle ALU 3018 und langsame ALU 3020 ganzzahlige Operationen auf 64-Bit-Datenoperanden ausführen. In mindestens einem Ausführungsbeispiel können die schnelle ALU 3016, schnelle ALU 3018 und langsame ALU 3020 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 3022 und die Gleitkomma-Bewegungseinheit 3024 implementiert werden, um eine Reihe von Operanden mit Bits unterschiedlicher Breite zu unterstützen. In mindestens einem Ausführungsbeispiel können die Gleitkomma-ALU 3022 und die Gleitkomma-Bewegungseinheit 3024 mit 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Befehlen arbeiten.In at least one embodiment,
In mindestens einem Ausführungsbeispiel planen die uop-Planer 3002, 3004, 3006 abhängige Operationen, bevor die übergeordnete Last die Ausführung beendet hat. Da Uops spekulativ geplant und in Prozessor 3000 ausgeführt werden können, kann der Prozessor 3000 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
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 1415 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung einer GPU wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a GPU as described above.
In mindestens einem Ausführungsbeispiel können Verarbeitungscluster 3110 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 3110 ohne Einschränkung eine beliebige Anzahl und Art von Prozessoren umfassen. In mindestens einem Ausführungsbeispiel kann der Deep Learning-Anwendungsprozessor 3100 eine beliebige Anzahl und Art von Verarbeitungsclustern 3100 umfassen. In mindestens einem Ausführungsbeispiel sind die Inter-Chip-Verbindungen 3120 bidirektional. In mindestens einem Ausführungsbeispiel ermöglichen Inter-Chip-Verbindungen 3120 und Inter-Chip-Steuerungen 3130 mehreren Deep-Learning-Anwendungsprozessoren 3100 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 3100 eine beliebige Anzahl (einschließlich Null) und Art von ICLs 3120 und ICCs 3130 umfassen.In at least one embodiment, processing clusters 3110 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 3110 may include any number and type of processors, without limitation. In at least one embodiment, deep
In mindestens einem Ausführungsbeispiel sind die HBM2s 3140 mit insgesamt 31 Gigabyte (GB) Speicher bereitgestellt. HBM2 3140(i) ist sowohl der Steuerung 3142(i) als auch dem HBM PHY 3144(i) zugeordnet. In mindestens einem Ausführungsbeispiel kann eine beliebige Anzahl von HBM2s 3140 jeden Typ und jede Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und kann mit einer beliebigen Anzahl (einschließlich Null) und Art von Speichersteuerungen 3142 und HBM PHYs 3144 assoziiert werden. In mindestens einem Ausführungsbeispiel können SPI, I2C, GPIO 3160, PCIe-Steuerung und DMA 3170 und/oder PCIe 3180 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
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung einer GPU wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a GPU as described above.
In mindestens einem Ausführungsbeispiel können die Neuronen 3202 und die Synapsen 3208 so miteinander verbunden sein, dass der neuromorphe Prozessor 3200 so arbeitet, dass er die vom neuromorphen Prozessor 3200 empfangenen Informationen verarbeitet oder analysiert. In mindestens einem Ausführungsbeispiel können die Neuronen 3202 einen Ausgangsimpuls (oder „Feuer“ oder „Spike“) aussenden, wenn über den Neuronen-Eingang 3204 empfangene Eingaben einen Schwellenwert überschreiten. In mindestens einem Ausführungsbeispiel können die Neuronen 3202 die an den Neuroneneingängen 3204 empfangenen Signale summieren oder integrieren. Zum Beispiel können in mindestens einem Ausführungsbeispiel die Neuronen 3202 als Leaky-Integrate-and-Fire-Neuronen implementiert sein, wobei, wenn eine Summe (als „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, das Neuron 3202 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 3204 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 3204 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 3202 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 3202 in mindestens einem Ausführungsbeispiel ohne Einschränkung Komparatorschaltungen oder Logiken umfassen, die eine Ausgangsspitze am Neuronenausgang 3206 erzeugen, wenn das Ergebnis der Anwendung einer Übertragungsfunktion auf den Neuroneneingang 3204 einen Schwellenwert überschreitet. In mindestens einem Ausführungsbeispiel kann das Neuron 3202, 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 3202, sobald das Membranpotenzial auf 0 zurückgesetzt wurde, nach einer geeigneten Zeitspanne (oder Refraktärzeit) den normalen Betrieb wiederaufnehmen.In at least one embodiment,
In mindestens einem Ausführungsbeispiel können die Neuronen 3202 über die Synapsen 3208 miteinander verbunden sein. In mindestens einem Ausführungsbeispiel können die Synapsen 3208 so funktionieren, dass sie Signale von einer Ausgabe eines ersten Neurons 3202 zu einer Eingabe eines zweiten Neurons 3202 übertragen. In mindestens einem Ausführungsbeispiel können die Neuronen 3202 Informationen über mehr als eine Instanz der Synapse 3208 übertragen. In mindestens einem Ausführungsbeispiel können ein oder mehrere Instanzen des Neuronenausgangs 3206 über eine Instanz der Synapse 3208 mit einer Instanz des Neuroneneingangs 3204 in demselben Neuron 3202 verbunden sein. In mindestens einem Ausführungsbeispiel kann eine Instanz des Neurons 3202, die eine Ausgabe erzeugt, die über eine Instanz der Synapse 3208 übertragen werden soll, in Bezug auf diese Instanz der Synapse 3208 als „präsynaptisches Neuron“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann ein Neuron 3202, das eine Eingabe empfängt, die über eine Synapse 3208 übertragen wird, als ein „postsynaptisches Neuron“ in Bezug auf diese Synapse 3208 bezeichnet werden. Da eine Instanz des Neurons 3202 Eingaben von einer oder mehreren Instanzen der Synapse 3208 empfangen kann und auch Ausgaben über eine oder mehrere Instanzen der Synapse 3208 senden kann, kann eine einzelne Instanz des Neurons 3202 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen der Synapse 3208 in mindestens einem Ausführungsbeispiel sein.In at least one embodiment,
In mindestens einem Ausführungsbeispiel können die Neuronen 3202 in einer oder mehreren Schichten organisiert sein. Jede Instanz eines Neurons 3202 kann einen Neuronenausgang 3206 haben, der sich über eine oder mehrere Synapsen 3208 zu einem oder mehreren Neuroneneingängen 3204 auffächern kann. In mindestens einem Ausführungsbeispiel können die Neuronenausgänge 3206 der Neuronen 3202 in einer ersten Schicht 3210 mit den Neuroneneingängen 3204 der Neuronen 3202 in einer zweiten Schicht 3212 verbunden sein. In mindestens einem Ausführungsbeispiel kann die Schicht 3210 als „Feed-Forward-Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann jede Instanz des Neurons 3202 in einer Instanz der ersten Schicht 3210 sich zu jeder Instanz des Neurons 3202 in der zweiten Schicht 3212 auffächern. In mindestens einem Ausführungsbeispiel kann die erste Schicht 3210 als „vollständig verbundene Feed-Forward-Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel kann sich jede Instanz eines Neurons 3202 in einer Instanz der zweiten Schicht 3212 auf weniger als alle Instanzen des Neurons 3202 in einer dritten Schicht 3214 auffächern. In mindestens einem Ausführungsbeispiel kann die zweite Schicht 3212 als „spärlich verbundene Feed-Forward-Schicht“ bezeichnet werden. In mindestens einem Ausführungsbeispiel können sich die Neuronen 3202 in der zweiten Schicht 3212 auf die Neuronen 3202 in mehreren anderen Schichten auffächern, einschließlich der Neuronen 3202 in der (gleichen) zweiten Schicht 3212. In mindestens einem Ausführungsbeispiel kann die zweite Schicht 3212 als „wiederkehrende Schicht“ bezeichnet werden. Der neuromorphe Prozessor 3200 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,
In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3200 ohne Einschränkung eine rekonfigurierbare Verbindungsarchitektur oder dedizierte festverdrahtete Verbindungen zur Verbindung der Synapse 3208 mit den Neuronen 3202 umfassen. In mindestens einem Ausführungsbeispiel kann der neuromorphe Prozessor 3200 ohne Einschränkung eine Schaltungsanordnung oder Logik umfassen, die es ermöglicht, Synapsen je nach Bedarf verschiedenen Neuronen 3202 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 3208 mit den Neuronen 3202 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,
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung einer GPU wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a GPU as described above.
In mindestens einem Ausführungsbeispiel kann das System 3300 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 3300 ein Mobiltelefon, ein Smartphone, ein Tablet-Rechengerät oder ein mobiles Internet-Gerät. In mindestens einem Ausführungsbeispiel kann das Verarbeitungssystem 3300 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 3300 ein Fernseh- oder Set-Top-Box-Gerät mit einem oder mehreren Prozessoren 3302 und einer grafischen Schnittstelle, die von einem oder mehreren Grafikprozessoren 3308 erzeugt wird.In at least one embodiment,
In mindestens einem Ausführungsbeispiel umfassen ein oder mehrere Prozessoren 3302 jeweils einen oder mehrere Prozessorkerne 3307 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 3307 so konfiguriert, dass er einen bestimmten Satz von Befehlen 3309 verarbeitet. In mindestens einem Ausführungsbeispiel kann der Befehlssatz 3309 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 3307 jeweils einen anderen Befehlssatz 3309 verarbeiten, der Befehle umfassen kann, um die Emulation anderer Sätze von Befehlen zu erleichtern. In mindestens einem Ausführungsbeispiel kann der Prozessorkern 3307 auch andere Verarbeitungsgeräte, wie z.B. einen Digitalen Signalprozessor (DSP), umfassen.In at least one embodiment, one or
In mindestens einem Ausführungsbeispiel umfasst der Prozessor 3302 einen Cache-Speicher 3304. In mindestens einem Ausführungsbeispiel kann Prozessor 3302 ü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 3302 gemeinsam genutzt. In mindestens einem Ausführungsbeispiel verwendet der Prozessor 3302 auch einen externen Cache (z.B. einen Level-3-Cache (L3) oder Last Level Cache (LLC)) (nicht gezeigt), die von den Prozessorkernen 3307 unter Verwendung bekannter Cache-Kohärenztechniken gemeinsam genutzt werden können. In mindestens einem Ausführungsbeispiel ist die Registerdatei 3306 zusätzlich in Prozessor 3302 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 3306 Allzweckregister oder andere Register umfassen.In at least one embodiment,
In mindestens einem Ausführungsbeispiel ist/sind ein oder mehrere Prozessor(en) 3302 mit einem oder mehreren Schnittstellenbus(en) 3310 gekoppelt, um Kommunikationssignale wie Adresse, Daten oder Steuersignale zwischen Prozessor 3302 und anderen Komponenten im System 3300 zu übertragen. In mindestens einem Ausführungsbeispiel kann der Schnittstellenbus 3310 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 3310 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) 3302 eine integrierten Speichersteuerung 3316 und einen Plattformsteuerungs-Hub 3330. In mindestens einem Ausführungsbeispiel erleichtert die Speichersteuerung 3316 die Kommunikation zwischen einem Speicherbaustein und anderen Komponenten des Systems 3300, während der Plattformsteuerungs-Hub (PCH) 3330 Verbindungen zu E/A-Bausteinen über einen lokalen E/A-Bus bereitstellt.In at least one embodiment, processor(s) 3302 is/are coupled to interface bus(s) 3310 to transfer communication signals such as address, data, or control signals between
In mindestens einem Ausführungsbeispiel kann das Speichergerät 3320 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 3320 als Systemspeicher für System 3300 arbeiten, um Daten 3322 und Befehle 3321 zur Verwendung zu speichern, wenn ein oder mehrere Prozessoren 3302 eine Anwendung oder einen Prozess ausführen. In mindestens einem Ausführungsbeispiel ist die Speichersteuerung 3316 auch mit einem optionalen externen Grafikprozessor 3312 gekoppelt, der mit einem oder mehreren Grafikprozessoren 3308 in Prozessoren 3302 kommunizieren kann, um Grafik- und Medienoperationen auszuführen. In mindestens einem Ausführungsbeispiel kann ein Anzeigegerät 3311 mit den Prozessor(en) 3302 verbunden werden. In mindestens einem Ausführungsbeispiel kann das Anzeigegerät 3311 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 3311 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 3320 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 3320 may operate as system memory for
In mindestens einem Ausführungsbeispiel ermöglicht der Plattformsteuerungs-Hub 3330 die Verbindung von Peripheriegeräten mit der Speichersteuerung 3320 und dem Prozessor 3302 über einen Hochgeschwindigkeits-E/A-Bus. In mindestens einem Ausführungsbeispiel umfassen die E/A-Peripheriegeräte unter anderem eine Audiosteuerung 3346, eine Netzwerksteuerung 3334, eine Firmware-Schnittstelle 3328, einen drahtlosen Transceiver (d.h. Sender/Empfänger) 3326, Berührungssensoren 3325, ein Gerät zur Datenspeicherung 3324 (z.B. Festplatte, Flash-Speicher usw.). In mindestens einem Ausführungsbeispiel kann das Datenspeichergerät 3324 ü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 3325 Touchscreen-Sensoren, Drucksensoren oder Fingerabdrucksensoren umfassen. In mindestens einem Ausführungsbeispiel kann der drahtlose Transceiver 3326 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 3328 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 3334 eine Netzwerkverbindung zu einem drahtgebundenen Netzwerk ermöglichen. In mindestens einem Ausführungsbeispiel ist eine Hochleistungs-Netzwerksteuerung (nicht abgebildet) mit dem Schnittstellenbus 3310 gekoppelt. In mindestens einem Ausführungsbeispiel ist die Steuerung 3346 eine mehrkanalige High-Definition-Audiosteuerung. In mindestens einem Ausführungsbeispiel umfasst das System 3300 eine optionale ältere E/A-Steuerung 3340 zum Koppeln älterer Geräte (z.B. Personal System 2 (PS/2)) an das System. In mindestens einem Ausführungsbeispiel kann der Plattformsteuerungs-Hub 3330 auch mit einem oder mehreren USB-Steuerungen (USB = Universal Serial Bus) 3342 verbunden werden, um Eingabegeräte wie Tastatur und Maus 3343-Kombinationen, eine Kamera 3344 oder andere USB-Eingabegeräte anzuschließen. In at least one embodiment,
In mindestens einem Ausführungsbeispiel kann eine Instanz der Speichersteuerung 3316 und des Plattformsteuerungs-Hubs 3330 in einen diskreten externen Grafikprozessor, wie z.B. den externen Grafikprozessor 3312, integriert werden. In mindestens einem Ausführungsbeispiel können der Plattformsteuerungs-Hub 3330 und/oder die Speichersteuerung 3316 extern zu einem oder mehreren Prozessor(en) 3302 sein. In mindestens einem Ausführungsbeispiel kann System 3300 beispielsweise eine externe Speichersteuerung 3316 und einen Plattformsteuerungs-Hub 3330 umfassen, der als Speichersteuerungs-Hub und Peripheriesteuerungs-Hub innerhalb eines System-Chipsatzes konfiguriert sein kann, der mit Prozessor(en) 3302 in Kommunikation steht.In at least one embodiment, an instance of
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel repräsentieren die internen Cache-Einheiten 3404A-3404N und die gemeinsam genutzten Speicher 3406 eine Cache-Speicherhierarchie innerhalb des Prozessors 3400. In mindestens einem Ausführungsbeispiel können die Cache-Speichereinheiten 3404A-3404N mindestens eine Ebene von Befehls- und Daten-Cache innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen von gemeinsam genutztem Mid-Level-Cache 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 ist. In mindestens einem Ausführungsbeispiel hält die Cache-Kohärenzlogik die Kohärenz zwischen verschiedenen Cache-Einheiten 3406 und 3404A-3404N aufrecht.In at least one embodiment,
In mindestens einem Ausführungsbeispiel kann der Prozessor 3400 auch einen Satz von einer oder mehreren Bussteuerungseinheiten 3416 und einen Systemdienst-Kern 3410 umfassen. In mindestens einem Ausführungsbeispiel verwalten eine oder mehrere Bussteuerungseinheiten 3416 einen Satz von Peripheriebussen, wie einen oder mehrere PCI- oder PCI-Express-Busse. In mindestens einem Ausführungsbeispiel ist der Systemdienst-Kern 3410 für die Funktionalität der Verwaltung verschiedener Prozessorkomponenten bereitgestellt. In mindestens einem Ausführungsbeispiel umfasst der Systemdienst-Kern 3410 eine oder mehrere integrierte Speichersteuerungen 3414 zur Verwaltung des Zugriffs auf verschiedene externe Speichergeräte (nicht dargestellt).In at least one embodiment,
In mindestens einem Ausführungsbeispiel umfassen einer oder mehrere der Prozessorkerne 3402A-3402N Unterstützung für simultanes Multithreading. In mindestens einem Ausführungsbeispiel umfasst der Kern des Systemdienstes 3410 Komponenten zum Koordinieren und Betreiben der Kerne 3402A-3402N während der Multi-Thread-Verarbeitung. In mindestens einem Ausführungsbeispiel kann der Systemdienst-Kern 3410 zusätzlich eine Leistungssteuerungseinheit (PCU) umfassen, die Logik und Komponenten zur Regelung eines oder mehrerer Leistungszustände der Prozessorkerne 3402A-3402N und des Grafikprozessors 3408 enthält.In at least one embodiment, one or more of the
In mindestens einem Ausführungsbeispiel umfasst der Prozessor 3400 zusätzlich den Grafikprozessor 3408 zur Ausführung von Grafikverarbeitungsoperationen. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3408 mit gemeinsam genutzten Cache-Einheiten 3406 und dem Systemdienst-Kern 3410 gekoppelt, der eine oder mehrere integrierte Speichersteuerungen 3414 umfasst. In mindestens einem Ausführungsbeispiel umfasst der Systemdienst-Kern 3410 auch eine Anzeigensteuerung 3411 zur Ansteuerung der Ausgabe des Grafikprozessors an eine oder mehrere gekoppelte Anzeigen. In mindestens einem Ausführungsbeispiel kann die Anzeigensteuerung 3411 auch ein separates Modul sein, das über mindestens eine Verbindung mit dem Grafikprozessor 3408 gekoppelt ist, oder sie kann in den Grafikprozessor 3408 integriert sein.In at least one embodiment,
In mindestens einem Ausführungsbeispiel wird eine ringbasierte Verbindungseinheit 3412 verwendet, um interne Komponenten des Prozessors 3400 zu koppeln. In mindestens einem Ausführungsbeispiel kann eine alternative Verbindungseinheit verwendet werden, wie z. B. eine Punkt-zu-Punkt-Verbindung, eine Switch-Verbindung oder andere Techniken. In mindestens einem Ausführungsbeispiel ist der Grafikprozessor 3408 mit der Ringverbindung 3412 über eine E/A-Verbindung 3413 gekoppelt.In at least one embodiment, a ring-based
In mindestens einem Ausführungsbeispiel repräsentiert die E/A-Verbindung 3413 mindestens eine von mehreren Arten von E/A-Verbindungen, einschließlich einer E/A-Verbindung in dem Gehäuse (Package), die die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 3418, wie z. B. einem eDRAM-Modul, ermöglicht. In mindestens einem Ausführungsbeispiel verwenden jeder der Prozessorkerne 3402A-3402N und der Grafikprozessor 3408 eingebettete Speichermodule 3418 als gemeinsam genutzten Last-Level-Cache.In at least one embodiment, I/
In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3402A-3402N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3402A-3402N heterogen in Bezug auf die Befehlssatzarchitektur (ISA), wobei ein oder mehrere Prozessorkerne 3402A-3402N einen gemeinsamen Befehlssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 3402A-34-02N einen Teilsatz eines gemeinsamen Befehlssatzes oder einen anderen Befehlssatz ausführen. In mindestens einem Ausführungsbeispiel sind die Prozessorkerne 3402A-3402N in Bezug auf die Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einer relativ höheren Leistungsaufnahme mit einem oder mehreren Leistungskernen mit einer geringeren Leistungsaufnahme gekoppelt sind. In mindestens einem Ausführungsbeispiel kann der Prozessor 3400 auf einem oder mehreren Chips oder als integrierte SoC-Schaltung implementiert sein.In at least one embodiment,
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3500 auch eine Anzeigensteuerung 3502 zur Steuerung der Ausgabe von Anzeigedaten an ein Anzeigegerät 3520. In mindestens einem Ausführungsbeispiel umfasst die Anzeigensteuerung 3502 Hardware für eine oder mehrere Überlagerungsebenen für das Gerät 3520 und eine Zusammensetzung aus mehreren Schichten von Video- oder Benutzerschnittstellenelementen. In mindestens einem Ausführungsbeispiel kann das Anzeigegerät 3520 ein internes oder externes Anzeigegerät sein. In mindestens einem Ausführungsbeispiel ist das Anzeigegerät 3520 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 3500 eine Video-Codec-Engine 3506 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,
In mindestens einem Ausführungsbeispiel umfasst der Grafikprozessor 3500 eine Engine 3504 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) 3510 ausgeführt. In mindestens einem Ausführungsbeispiel ist die GPE 3510 eine Rechenengine zur Durchführung von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.In at least one embodiment,
In mindestens einem Ausführungsbeispiel umfasst die GPE 3510 eine 3D-Pipeline 3512 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 3512 umfasst programmierbare und feste Funktionselemente, die verschiedene Aufgaben ausführen und/oder Ausführungs-Threads auf einem 3D/Medien-Subsystem 3515 erzeugen. Während die 3D-Pipeline 3512 für die Durchführung von Medienoperationen in mindestens einem Ausführungsbeispiel verwendet werden kann, umfasst die GPE 3510 auch eine Medienpipeline 3516, die für die Durchführung von Medienoperationen, wie z. B. Video-Nachbearbeitung und Bildverbesserung, verwendet wird.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel umfasst die Medienengine 3516 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 3506. In mindestens einem Ausführungsbeispiel umfasst die Medien-Pipeline 3516 zusätzlich eine Thread-Erzeugungs-Einheit zum Erzeugen von Threads für die Ausführung auf dem 3D/Media-Subsystem 3515. 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 3515 enthalten sind.In at least one embodiment,
In mindestens einem Ausführungsbeispiel umfasst das 3D/Medien-Subsystem 3515 Logik zur Ausführung von Threads, die von der 3D-Pipeline 3512 und der Medien-Pipeline 3516 erzeugt werden. In mindestens einem Ausführungsbeispiel senden die 3D-Pipeline 3512 und die Medienpipeline 3516 Thread-Ausführungsanforderungen an das 3D/Media-Subsystem 3515, 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 3515 einen oder mehrere interne Caches für Thread-Befehle und Daten. In mindestens einem Ausführungsbeispiel umfasst das Subsystem 3515 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/
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the evaluation and generation networks of a robot control system can be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel ist die GPE 3610 mit einem Befehls-Streamer 3603 gekoppelt oder umfasst diesen, der einen Befehlsstrom für die 3D-Pipeline 3512 und/oder die Medienpipelines 3516 bereitstellt. In mindestens einem Ausführungsbeispiel ist der Befehls-Streamer 3603 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 3603 Befehle vom Speicher und sendet Befehle an die 3D-Pipeline 3512 und/oder die Medienpipeline 3516. 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 3512 und die Medienpipeline 3516 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 3512 auch Verweise auf im Speicher gespeicherte Daten umfassen, wie z.B., aber nicht ausschließlich, Vertex- und Geometriedaten für die 3D-Pipeline 3512 und/oder Bilddaten und Speicherobjekte für die Medienpipeline 3516. In mindestens einem Ausführungsbeispiel verarbeiten die 3D-Pipeline 3512 und die Medienpipeline 3516 Befehle und Daten, indem sie Operationen ausführen oder einen oder mehrere Ausführungsthreads an ein Grafikkern-Array 3614 senden. In mindestens einem Ausführungsbeispiel umfasst Grafikkern-Array 3614 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkern(e) 3615A, Grafikkern(e) 3615B), 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 1415 in
In mindestens einem Ausführungsbeispiel umfasst die 3D-Pipeline 3512 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 3614 zu verarbeiten. In mindestens einem Ausführungsbeispiel stellt Grafikkern-Array 3614 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) 3615A-3715B des Grafikkern-Arrays 3614 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,
In mindestens einem Ausführungsbeispiel umfasst das Grafikkern-Array 3614 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
In mindestens einem Ausführungsbeispiel können Ausgabedaten, die von Threads erzeugt werden, die auf dem Grafikkern-Array 3614 ausgeführt werden, Daten in den Speicher in einem Unified Return Buffer (URB) 3618 ausgeben. Der URB 3618 kann Daten für mehrere Threads speichern. In mindestens einem Ausführungsbeispiel kann der URB 3618 zum Senden von Daten zwischen verschiedenen Threads verwendet werden, die auf Grafikkern-Array 3614 ausgeführt werden. In mindestens einem Ausführungsbeispiel kann URB 3618 zusätzlich zur Synchronisation zwischen Threads auf Grafikkern-Array 3614 und fester Funktionslogik innerhalb der gemeinsamen Funktionslogik 3620 verwendet werden.In at least one embodiment, output data generated by threads executing on the
In mindestens einem Ausführungsbeispiel ist das Grafikkern-Array 3614 so skalierbar, dass das Grafikkern-Array 3614 eine variable Anzahl von Grafikkernen umfasst, von denen jeder eine variable Anzahl von Ausführungseinheiten basierend auf einem Ziel- und Leistungsniveau von GPE 3610 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,
In mindestens einem Ausführungsbeispiel ist das Grafikkern-Array 3614 mit der gemeinsam genutzten Funktionslogik 3620 gekoppelt, die mehrere Ressourcen umfasst, die von den Grafikkernen in Grafikkern-Array 3614 gemeinsam genutzt werden. In mindestens einem Ausführungsbeispiel sind gemeinsam genutzte Funktionen, die von der gemeinsam genutzten Funktionslogik 3620 ausgeführt werden, in Hardware-Logik-Einheiten verkörpert, die spezielle Zusatzfunktionen zum Grafikkern-Array 3614 bereitstellen. In mindestens einem Ausführungsbeispiel umfasst die gemeinsam genutzte Funktionslogik 3620 die Logik von Abtaster 3621, Mathematik 3622 und Inter-Thread-Kommunikation (ITC) 3623, ist aber nicht darauf beschränkt. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Cache(s) 3625 in der gemeinsam genutzten Funktionslogik 3620 enthalten oder mit dieser gekoppelt.In at least one embodiment,
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 3614 nicht ausreicht. In mindestens einem Ausführungsbeispiel wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 3620 verwendet und von anderen Ausführungsressourcen innerhalb des Grafikkern-Arrays 3614 gemeinsam genutzt. In mindestens einem Ausführungsbeispiel können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3620, die in großem Umfang von Grafikkern-Array 3614 verwendet werden, in die gemeinsam genutzte Funktionslogik 3616 innerhalb von Grafikkern-Array 3614 aufgenommen werden. In mindestens einem Ausführungsbeispiel kann die gemeinsam genutzte Funktionslogik 3616 innerhalb des Grafikkern-Arrays 3614 einige oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 3620 umfassen. In mindestens einem Ausführungsbeispiel können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 3620 in der gemeinsam genutzten Funktionslogik 3616 des Grafikkern-Arrays 3614 dupliziert werden. In mindestens einem Ausführungsbeispiel ist die gemeinsam genutzte Funktionslogik 3620 zugunsten der gemeinsam genutzten Funktionslogik 3616 innerhalb des Grafikkern-Arrays 3614 ausgeschlossen.In at least one embodiment, a shared function is used when the demand for a specialized function is insufficient for
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel umfasst der Block mit fester Funktionalität 3730 eine Geometrie-Pipeline mit fester Funktionalität 3736, die von allen Unterkernen im Grafikprozessor 3700 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 3736 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
In mindestens einem Ausführungsbeispiel umfasst der Block mit fester Funktionalität 3730 auch eine Grafik-SoC-Schnittstelle 3737, einen Grafik-Mikrocontroller 3738 und eine Medien-Pipeline 3739. Die Grafik-SoC-Schnittstelle 3737 ist eine Schnittstelle zwischen dem Grafikkern 3700 und anderen Prozessorkernen innerhalb eines Systems auf einem integrierten Schaltkreis auf einem Chip. In mindestens einem Ausführungsbeispiel ist der Grafik-Mikrocontroller 3738 ein programmierbarer Subprozessor, der konfigurierbar ist, um verschiedene Funktionen des Grafikprozessors 3700 zu verwalten, einschließlich Thread-Verteiler, Planer und Pre-Emption. In mindestens einem Ausführungsbeispiel umfasst die Medien-Pipeline 3739 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 3739 Medienoperationen über Anforderungen zur Berechnung oder Abtastlogik innerhalb der Unterkerne 3701-3701F.In at least one embodiment, the fixed
In mindestens einem Ausführungsbeispiel ermöglicht die SoC-Schnittstelle 3737 dem Grafikkern 3700 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 3737 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 3700 und CPUs innerhalb eines SoCs gemeinsam genutzt werden können. In mindestens einem Ausführungsbeispiel kann die SoC-Schnittstelle 3737 auch Energieverwaltungssteuerungen für den Grafikkern 3700 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikkerns 3700 und anderen Taktdomänen innerhalb eines SoCs ermöglichen. In mindestens einem Ausführungsbeispiel ermöglicht die SoC-Schnittstelle 3737 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 3739 gesendet werden, wenn Medienoperationen ausgeführt werden sollen, oder an eine Geometrie-Pipeline mit fester Funktion (z.B. Geometrie-Pipeline mit fester Funktion 3736, Geometrie-Pipeline mit fester Funktion 3714), wenn Grafikverarbeitungsoperationen ausgeführt werden sollen.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 3738 konfiguriert werden, um verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 3700 auszuführen. In mindestens einem Ausführungsbeispiel kann der Grafik-Mikrocontroller 3738 Grafik- und/oder Rechenlastplanungen für verschiedene parallele Grafik-Engines innerhalb der Arrays 3702A-3702F und 3704A-3704F der Ausführungseinheit (EU) innerhalb der Unterkeme 3701A-3701F durchführen. In mindestens einem Ausführungsbeispiel kann Host-Software, die auf einem CPU-Kern eines SoCs einschließlich des Grafikkerns 3700 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 3738 auch Niedrigleistungs- oder Leerlauf-Zustände für den Grafikkern 3700 ermöglichen, indem er dem Grafikkern 3700 die Möglichkeit bietet, Register innerhalb des Grafikkerns 3700 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
In mindestens einem Ausführungsbeispiel kann der Grafikkern 3700 mehr oder weniger als die abgebildeten Unterkeme 3701A-3701F haben, bis zu N modulare Unterkeme. In mindestens einem Ausführungsbeispiel kann der Grafikkern 3700 für jeden Satz von N Unterkernen auch gemeinsam genutzte Funktionslogik 3710, gemeinsam genutzten und/oder Cache-Speicher 3712, eine Geometrie-Pipeline mit fester Funktionalität 3714 sowie zusätzliche feste Funktionslogik 3716 zur Beschleunigung verschiedener Grafik- und Rechenoperationen umfassen. In mindestens einem Ausführungsbeispiel kann die gemeinsam genutzte Funktionslogik 3710 Logikeinheiten (z.B. Abtaster, Mathematik und/oder Kommunikationslogik zwischen Threads) umfassen, die von jedem der N Unterkeme innerhalb des Grafikkerns 3700 gemeinsam genutzt werden können. Der gemeinsam genutzte und/oder Cache-Speicher 3712 kann ein Cache der letzten Ebene für N Unterkerne 3701A-3701F innerhalb des Grafikkerns 3700 sein und kann auch als gemeinsam genutzter Speicher dienen, auf den mehrere Unterkeme zugreifen können. In mindestens einem Ausführungsbeispiel kann die Geometrie-Pipeline mit fester Funktionalität 3714 anstelle der Geometrie-Pipeline mit fester Funktionalität 3736 innerhalb des festen Funktionsblocks 3730 enthalten sein und kann gleiche oder ähnliche logische Einheiten umfassen.In at least one embodiment,
In mindestens einem Ausführungsbeispiel umfasst der Grafikkern 3700 eine zusätzliche Logik mit fester Funktionalität 3716, die verschiedene Logik zur Beschleunigung mit fester Funktionalität zur Verwendung durch den Grafikkern 3700 umfassen kann. In mindestens einem Ausführungsbeispiel umfasst die zusätzliche Logik mit fester Funktionalität 3716 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 3716, 3736 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 3716 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 3716 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,
In mindestens einem Ausführungsbeispiel kann die zusätzliche Logik mit fester Funktion 3716 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
In mindestens einem Ausführungsbeispiel umfasst innerhalb jeder Grafik-Unterkern 3701A-3701F 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 3701A-3701F mehrere EU-Arrays 3702A-3702F, 3704A-3704F, Thread-Verteilungs- und Zwischen-Thread-Kommunikationslogik (TD/IC) 3703A-3703F, einen 3D-(z.B. Textur-)Abtaster 3705A-3705F, einen Medienabtaster 3706A-3706F, einen Schattierungsprozessor 3707A-3707F und gemeinsam genutzten lokalen Speicher (engl. Shared Local Memory, SLM) 3708A-3708F. Die EU-Arrays 3702A-3702F, 3704A-3704F 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 3703A-3703F 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 3705A-3705F 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 3706A-3706F ähnliche Operationen basierend auf einem Typ und Format ausführen, die mit Mediendaten assoziiert sind. In mindestens einem Ausführungsbeispiel kann jeder Grafik-Unterkern 3701A-3701F abwechselnd einen vereinheitlichten 3D- und Medienabtaster umfassen. In mindestens einem Ausführungsbeispiel können Threads, die auf Ausführungseinheiten innerhalb jedes Unterkerns 3701A-3701F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 3708A-3708F 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 3701A-3701F includes a set of execution resources that can be used to execute graphics, media, and compute operations in response to requests from the graphics pipeline, media pipeline, or shader programs. In at least one embodiment, the graphics sub-cores 3701A-3701F include
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
Wie in
In mindestens einem Ausführungsbeispiel werden die Ausführungseinheiten 3808A-3808N in erster Linie zur Ausführung von Schattierungsprogrammen verwendet. In mindestens einem Ausführungsbeispiel kann der Schattierungsprozessor 3802 verschiedene Schattierungsprogramme verarbeiten und Ausführungs-Threads, die mit Schattierungsprogrammen assoziiert sind, über einen Thread-Verteiler 3804 verteilen. In mindestens einem Ausführungsbeispiel umfasst der Thread-Verteiler 3804 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 3808A-3808N. 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 3804 auch Thread-Erzeugungs-Anforderungen von ausführenden Schattierungsprogrammen zur Laufzeit verarbeiten.In at least one embodiment,
In mindestens einem Ausführungsbeispiel unterstützen die Ausführungseinheiten 3808A-3808N 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 3808A-3808N, 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 3808A-3808N 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,
In mindestens einem Ausführungsbeispiel arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3808A-3808N 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 3808A-3808N Ganzzahl- und Gleitkomma-Datentypen.In at least one embodiment, each execution unit in
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 3809A-3809N mit einer Thread-Steuerungslogik (3807A-3807N) 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, SIMD 16 und SIMD32. In mindestens einem Ausführungsbeispiel umfasst jede fusionierte Grafikausführungseinheit 3809A-3809N mindestens zwei Ausführungseinheiten. Beispielsweise umfasst die fusionierte Ausführungseinheit 3809A in mindestens einem Ausführungsbeispiel eine erste EU 3808A, eine zweite EU 3808B und die Steuerung des Threads 3807A, die der ersten EU 3808A und der zweiten EU 3808B gemeinsam ist. In mindestens einem Ausführungsbeispiel steuert die Thread-Steuerlogik 3807A die auf der fusionierten Grafikausführungseinheit 3809A ausgeführten Threads, so dass jede EU innerhalb der fusionierten Ausführungseinheiten 3809A-3809N unter Verwendung eines gemeinsamen Befehlszeigerregisters ausgeführt werden kann.In at least one embodiment, one or more execution units may be combined into a
In mindestens einem Ausführungsbeispiel sind in der Thread-Ausführungslogik 3800 ein oder mehrere interne Befehls-Caches (z. B. 3806) enthalten, um Thread-Befehle für Ausführungseinheiten zwischenzuspeichern. In mindestens einem Ausführungsbeispiel sind ein oder mehrere Daten-Caches (z. B. 3812) enthalten, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In mindestens einem Ausführungsbeispiel ist ein Abtaster (engl. sampler) 3810 enthalten, um Texturabtastung für 3D-Operationen und Medienabtastung für Medienoperationen bereitzustellen. In mindestens einem Ausführungsbeispiel umfasst Abtaster 3810 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 3800 includes one or more internal instruction caches (e.g., 3806) to cache thread instructions for execution units. In at least one embodiment, one or more data caches (e.g., 3812) are included to cache thread data during thread execution. In at least one embodiment, a
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 3800. 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 3802 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 3802 dann ein Pixel- oder Fragment-Schattierungsprogramm aus, das von einer API (Application Programming Interface) bereitgestellt wird. In mindestens einem Ausführungsbeispiel verteilt der Schattierungsprozessor 3802 zur Ausführung eines Schattierungsprogramms Threads über den Thread-Verteiler 3804 an eine Ausführungseinheit (z.B. 3808A). In mindestens einem Ausführungsbeispiel verwendet der Schattierungsprozessor 3802 die Texturabtastlogik in Abtaster 3810, 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 3800 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
In mindestens einem Ausführungsbeispiel stellt der Datenport 3814 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3800 bereit, um verarbeitete Daten zur weiteren Verarbeitung auf einer Grafikprozessor-Ausgabepipeline in den Speicher auszugeben. In mindestens einem Ausführungsbeispiel umfasst der Datenport 3814 einen oder mehrere Cache-Speicher (z.B. Daten-Cache 3812) oder ist mit diesen gekoppelt, um Daten für den Speicherzugriff über einen Datenport zwischenzuspeichern.In at least one embodiment,
Wie in
In mindestens einem Ausführungsbeispiel weist die Grafikausführungseinheit 3808 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 3808 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 3808 mehrere Befehle, die jeweils unterschiedliche Befehle sein können, gemeinsam ausgeben. In mindestens einem Ausführungsbeispiel kann der Thread-Arbiter 3822 des Grafikausführungseinheitsthreads 3808 Befehle zur Ausführung an eine der Sendeeinheit 3830, Verzweigungseinheit 3842 oder SIMD-FPU(s) 3834 senden. In mindestens einem Ausführungsbeispiel kann jeder Ausführungs-Thread auf 128 allgemeine Register im GRF 3824 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 3824, 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 3824 insgesamt 27 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 3808 may concurrently issue multiple instructions, each of which may be different instructions. In at least one embodiment,
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 3830 ausgeführt werden. In mindestens einem Ausführungsbeispiel werden Verzweigungsbefehle an eine dedizierte Verzweigungseinheit 3832 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
In mindestens einem Ausführungsbeispiel umfasst die Graphik-Ausführungseinheit 3808 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 3834 zur Durchführung von Gleitkommaoperationen. In mindestens einem Ausführungsbeispiel unterstützen die FPU(s) 3834 auch die Ganzzahlberechnung. In mindestens einem Ausführungsbeispiel können FPU(s) 3834 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 3835 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 3808 includes one or more SIMD floating point units (FPU(s)) 3834 for performing floating point operations. In at least one embodiment, FPU(s) 3834 also support integer math. In at least one embodiment, FPU(s) 3834 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
In mindestens einem Ausführungsbeispiel können Arrays aus mehreren Instanzen von Grafikkern-Array 3808 in einer Grafik-Unterkerngruppierung (z.B. einem Unterabschnitt) instanziiert werden. In mindestens einer Einheit der Ausführungseinheit 3808 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 3808 ausgeführt wird, in einem anderen Kanal ausgeführt.In at least one embodiment, arrays of multiple instances of graphics core array 3808 may be instantiated into a graphics sub-core grouping (e.g., subsection). In at least one unit of execution unit 3808 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 3808 executes in a different channel.
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel sind eine oder mehrere PPUs 3900 konfiguriert, um High Performance Computing („HPC“), Rechenzentren und Anwendungen des maschinellen Lernens zu beschleunigen. In mindestens einem Ausführungsbeispiel ist die PPU 3900 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
In mindestens einem Ausführungsbeispiel umfasst die PPU 3900, ohne Einschränkung, eine Eingabe/Ausgabe-Einheit („E/A“) 3906, eine Frontend-Einheit 3910, eine Planereinheit 3912, eine Arbeitsverteilungseinheit 3914, einen Hub 3916, eine Crossbar („Xbar“) 3920, einen oder mehrere allgemeine Verarbeitungscluster („GPCs“) 3918 und eine oder mehrere Partitionseinheiten („Speicher-Partitionseinheiten“) 3922. In mindestens einem Ausführungsbeispiel ist die PPU 3900 mit einem Host-Prozessor oder anderen PPUs 3900 über eine oder mehrere Hochgeschwindigkeits-GPU-Verbindungen („GPU-Verbindungen“) 3908 verbunden. In mindestens einem Ausführungsbeispiel ist PPU 3900 über eine Verbindung (engl. interconnect) 3902 mit einem Host-Prozessor oder anderen peripheren Geräten verbunden. In mindestens einem Ausführungsbeispiel ist PPU 3900 mit einem lokalen Speicher verbunden, der ein oder mehrere Speichergeräte („Speicher“) 3904 umfasst. In mindestens einem Ausführungsbeispiel umfassen die Speicherbausteine 3904 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
In mindestens einem Ausführungsbeispiel kann sich die GPU-Hochgeschwindigkeits-Verbindung 3908 auf eine drahtgebundene, mehrspurige Kommunikationsverbindung beziehen, die von Systemen zur Skalierung und Einbeziehung einer oder mehrerer PPUs 3900 in Kombination mit einer oder mehreren zentralen Verarbeitungseinheiten („CPUs“) verwendet wird, die Cache-Kohärenz zwischen PPUs 3900 und CPUs sowie CPU-Mastering unterstützt. In mindestens einem Ausführungsbeispiel werden Daten und/oder Befehle durch die GPU-Hochgeschwindigkeits-Verbindungseinheit 3908 über den Hub 3916 zu/von anderen Einheiten der PPU 3900 übertragen, wie z.B. einer oder mehreren Copy-Engines, Videokodierern, Videodekodierern, Energieverwaltungseinheiten und anderen Komponenten, die in
In mindestens einem Ausführungsbeispiel ist die E/A-Einheit 3906 so konfiguriert, dass sie Kommunikationen (z. B. Befehle, Daten) von einem Host-Prozessor (nicht in
In mindestens einem Ausführungsbeispiel dekodiert die E/A-Einheit 3906 über den Systembus 3902 empfangene Pakete. In mindestens einem Ausführungsbeispiel repräsentieren mindestens einige Pakete Befehle, die so konfiguriert sind, dass sie die PPU 3900 veranlassen, verschiedene Operationen durchzuführen. In mindestens einem Ausführungsbeispiel überträgt die E/A-Einheit 3906 dekodierte Befehle an verschiedene andere Einheiten der PPU 3900, wie durch Befehle spezifiziert. In mindestens einem Ausführungsbeispiel werden Befehle an die Frontend-Einheit 3910 und/oder an den Hub 3916 oder andere Einheiten der PPU 3900 wie z.B. eine oder mehrere Copy-Engines, einen Videokodierer, einen Videodekodierer, eine Energieverwaltungseinheit usw. übertragen. (nicht ausdrücklich in
In mindestens einem Ausführungsbeispiel kodiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der PPU 3900 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 3900 zugreifen kann (z.B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann so konfiguriert sein, dass sie über Speicheranforderungen, die über den Systembus 3902 von der E/A-Einheit 3906 über den Systembus 3902 übertragen werden, auf den Puffer in einem mit dem Systembus 3902 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 3900, so dass die Frontend-Einheit 3910 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 3900 weiterleitet.In at least one embodiment, a program executed by the host processor encodes an instruction stream in a buffer that provides
In mindestens einem Ausführungsbeispiel ist die Frontend-Einheit 3910 mit der Planereinheit 3912 gekoppelt, die verschiedene GPCs 3918 für die Verarbeitung von Aufgaben konfiguriert, die durch einen oder mehrere Befehlsströme definiert sind. In mindestens einem Ausführungsbeispiel ist die Planereinheit 3912 so konfiguriert, dass sie Statusinformationen zu verschiedenen von der Planereinheit 3912 verwalteten Aufgaben verfolgt, wobei Statusinformationen angeben können, welchem der GPCs 3918 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 3912 die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren GPCs 3918.In at least one embodiment, the front-
In mindestens einem Ausführungsbeispiel ist die Planereinheit 3912 mit der Arbeitsverteilungseinheit 3914 gekoppelt, die so konfiguriert ist, dass sie Aufgaben zur Ausführung auf GPCs 3918 verteilt. In mindestens einem Ausführungsbeispiel verfolgt die Arbeitsverteilungseinheit 3914 eine Anzahl geplanter Aufgaben, die von der Planereinheit 3912 empfangen werden, und die Arbeitsverteilungseinheit 3914 verwaltet einen Pool ausstehender Aufgaben und einen Pool aktiver Aufgaben für jeden der GPCs 3918. 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 3918 zugewiesen sind; der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von den GPCs 3918 aktiv verarbeitet werden, so dass, wenn eine der GPCs 3918 die Ausführung einer Aufgabe abschließt, diese Aufgabe aus dem Pool aktiver Aufgaben für GPC 3918 verdrängt wird und eine der anderen Aufgaben aus dem Pool ausstehender Aufgaben ausgewählt und zur Ausführung auf GPC 3918 geplant wird. In at least one embodiment, the
Wenn in mindestens einem Ausführungsbeispiel eine aktive Aufgabe auf GPC 3918 inaktiv ist, z.B. während sie darauf wartet, dass eine Datenabhängigkeit aufgelöst wird, wird die aktive Aufgabe aus GPC 3918 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 3918 geplant wird.In at least one embodiment, when an active task is idle on
In mindestens einem Ausführungsbeispiel kommuniziert die Arbeitsverteilungseinheit 3914 mit einem oder mehreren GPCs 3918 über die XBar 3920. In mindestens einem Ausführungsbeispiel ist die XBar 3920 ein Verbindungsnetzwerk, das viele Einheiten der PPU 3900 mit anderen Einheiten der PPU 3900 koppelt und so konfiguriert werden kann, dass die Arbeitsverteilungseinheit 3914 mit einem bestimmten GPC 3918 gekoppelt wird. In mindestens einem Ausführungsbeispiel können auch eine oder mehrere andere Einheiten von PPU 3900 über den Hub 3916 an die XBar 3920 angeschlossen sein.In at least one embodiment, the
In mindestens einem Ausführungsbeispiel werden die Aufgaben von der Planereinheit 3912 verwaltet und von der Arbeitsverteilungs-Einheit 3914 an eine der GPCs 3918 geschickt. GPC 3918 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 3918 verwendet, über XBar 3920 an ein anderes GPC 3918 weitergeleitet oder im Speicher 3904 gespeichert werden. In mindestens einem Ausführungsbeispiel können Ergebnisse über Partitionseinheiten 3922 in den Speicher 3904 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in den/aus dem Speicher 3904 implementieren. In mindestens einem Ausführungsbeispiel können Ergebnisse über die GPU-Hochgeschwindigkeitsverbindung 3908 an eine andere PPU 3904 oder CPU übertragen werden. In mindestens einem Ausführungsbeispiel umfasst die PPU 3900 ohne Einschränkung eine Anzahl U von Partitionseinheiten 3922, die der Anzahl der mit der PPU 3900 gekoppelten separaten und unterschiedlichen Speichergeräte 3904 entspricht. In mindestens einem Ausführungsbeispiel wird die Partitionseinheit 3922 in Verbindung mit
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 3900 zu planen. In mindestens einem Ausführungsbeispiel werden mehrere Rechenanwendungen gleichzeitig von PPU 3900 ausgeführt, und die PPU 3900 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 3900 zu generieren, und der Treiberkernel gibt Tasks an einen oder mehrere Datenströme aus, die von der PPU 3900 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
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel wird der Betrieb von GPC 4000 vom Pipeline-Verwalter 4002 gesteuert. In mindestens einem Ausführungsbeispiel verwaltet der Pipeline-Verwalter 4002 die Konfiguration eines oder mehrerer DPCs 4006 für die Verarbeitung der GPC 4000 zugewiesenen Aufgaben. In mindestens einem Ausführungsbeispiel konfiguriert der Pipeline-Verwalter 4002 mindestens eine von einer oder mehreren DPCs 4006, um mindestens einen Teil einer Pipeline zum Rendern von Grafiken zu implementieren. In mindestens einem Ausführungsbeispiel ist DPC 4006 so konfiguriert, dass er ein Schattierungsprogramm auf einem programmierbaren Streaming-Multiprozessor („SM“) 4014 ausführt. In mindestens einem der Ausführungsbeispiele ist der Pipeline-Verwalter 4002 so konfiguriert, dass er von einer Arbeitsverteilungseinheit empfangene Pakete an geeignete logische Einheiten innerhalb von GPC 4000 weiterleitet, und einige Pakete können an Hardware-Einheiten mit fester Funktionalität in PROP 4004 und/oder der Raster-Engine 4008 weitergeleitet werden, während andere Pakete an DPCs 4006 zur Verarbeitung durch eine Primitiv-Engine 4012 oder SM 4014 weitergeleitet werden können. In mindestens einem Ausführungsbeispiel konfiguriert der Pipeline-Verwalter 4002 mindestens eine der DPCs 4006 zur Implementierung eines Modells eines neuronalen Netzwerks und/oder einer Rechenpipeline.In at least one embodiment, the operation of
In mindestens einem Ausführungsbeispiel ist die PROP-Einheit 4004 so konfiguriert, dass sie die von der Engine 4008 und den DPCs 4006 erzeugten Daten an eine Raster Operations („ROP“)-Einheit in der Partitionseinheit 3922 weiterleitet, die oben in Verbindung mit
Jeder in GPC 4000 enthaltene DPC 4006 besteht in mindestens einem Ausführungsbeispiel aus, ohne Einschränkung, einem M-Pipe-Controller („MPC“) 4010; der Primitiv-Engine 4012; einer oder mehreren SMs 4014 und einer beliebigen geeigneten Kombination davon. In mindestens einem Ausführungsbeispiel steuert MPC 4010 den Betrieb von DPC 4006 und leitet die vom Pipeline-Verwalter 4002 empfangenen Pakete an geeignete Einheiten in DPC 4006 weiter. In mindestens einem Ausführungsbeispiel werden Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 4012 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 4014 weitergeleitet werden.Each
In mindestens einem Ausführungsbeispiel umfasst SM 4014 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 4014 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 4014 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 4014 wird hierin ausführlicher beschrieben.In at least one embodiment, without limitation,
In mindestens einem Ausführungsbeispiel stellt die MMU 4018 eine Schnittstelle zwischen GPC 4000 und der Speicherpartitionseinheit (z.B. Partitionseinheit 3922 von
Die Inferenz- und/oder Trainingslogik 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
In mindestens einem Ausführungsbeispiel implementiert die Speicherschnittstelle 4106 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,
In mindestens einem Ausführungsbeispiel implementiert die PPU eine mehrstufige Speicherhierarchie. In mindestens einem Ausführungsbeispiel unterstützt die Speicherpartitionseinheit 4100 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 3908 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,
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 4100 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
Daten aus dem Speicher 3904 von
Die ROP-Einheit 4102 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 4102 führt in mindestens einem Ausführungsbeispiel in Verbindung mit der Rasterengine 4008 eine Tiefenprüfung durch und empfängt eine Tiefe für eine Probenstelle, die einem Pixelfragment aus der ausblendenden Engine der Rasterengine 4008 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 4102 den Tiefenpuffer und überträgt das Ergebnis des Tiefentests an die Rasterengine 4008. Es ist zu beachten, dass sich die Anzahl der Partitionseinheiten 4100 von der Anzahl der GPCs unterscheiden kann und daher jede ROP-Einheit 4102 in mindestens einem Ausführungsbeispiel mit jeder der GPC gekoppelt sein kann. In mindestens einem Ausführungsbeispiel verfolgt die ROP-Einheit 4102 Pakete, die von verschiedenen GPCs empfangen werden, und legt fest, zu welchen Paketen ein von der ROP-Einheit 4102 erzeugtes Ergebnis über XBar 3920 weitergeleitet wird.The
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 4206 so konfiguriert, dass sie Instruktionen an eine oder mehrere Funktionseinheiten überträgt, und die Planereinheit 4204 umfasst, ohne Einschränkung, zwei Verteilungseinheiten 4206, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Instruktionen aus derselben Kette zu planen. In mindestens einem Ausführungsbeispiel umfasst jede Planereinheit 4204 eine einzelne Verteilungseinheit 4206 oder zusätzliche Verteilungseinheiten 4206.In at least one embodiment,
In mindestens einem Ausführungsbeispiel umfasst jeder SM 4200 in mindestens einem Ausführungsbeispiel eine Registerdatei 4208, die einen Satz von Registern für funktionelle Einheiten des SM 4200 bereitstellt. In mindestens einem Ausführungsbeispiel ist die Registerdatei 4208 auf jede der Funktionseinheiten so aufgeteilt, dass jeder Funktionseinheit ein bestimmter Teil der Registerdatei 4208 zugeordnet ist. In mindestens einem Ausführungsbeispiel ist die Registerdatei 4208 auf verschiedene Warps aufgeteilt, die von SM 4200 ausgeführt werden, und die Registerdatei 4208 ist als temporärer Speicher für Operanden vorgesehen, die mit Datenpfaden von Funktionseinheiten verbunden sind. In mindestens einem Ausführungsbeispiel umfasst jeder SM 4200 ohne Einschränkung eine Vielzahl von L Verarbeitungskernen 4210. In mindestens einem Ausführungsbeispiel umfasst SM 4200, ohne Einschränkung, eine große Anzahl (z.B. 128 oder mehr) von unterschiedlichen Verarbeitungskernen 4210. In mindestens einem Ausführungsbeispiel umfasst jeder Verarbeitungskern 4210 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 4210 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
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 4210 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,
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 for a 4x4x4 mat rix multiplication is accumulated. 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
In mindestens einem Ausführungsbeispiel umfasst jeder SM 4200 ohne Einschränkung M SFUs 4212, die spezielle Funktionen (z.B. Attributbewertung, reziproke Quadratwurzel u.ä.) erfüllen. In mindestens einem Ausführungsbeispiel umfassen die SFUs 4212, 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 4212 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 4200 ausgeführt werden. In mindestens einem Ausführungsbeispiel werden die Texturkarten im gemeinsamen Speicher/L1-Cache 4218 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 4200, ohne Einschränkung, zwei Textureinheiten.In at least one embodiment, each
Jeder SM 4200 umfasst, ohne Einschränkung, N LSUs 4214, die Lade- und Speicheroperationen zwischen gemeinsam genutztem Speicher/L1-Cache 4218 und der Registerdatei 4208 implementieren, gemäß mindestens einem Ausführungsbeispiel. Jeder SM 4200 umfasst, ohne Einschränkung, das Verbindungsnetzwerk 4216, das jede der Funktionseinheiten mit der Registerdatei 4208 und die LSU 4214 mit der Registerdatei 4208 verbindet, und den gemeinsam genutzten Speicher/L1-Cache 4218, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel ist das Verbindungsnetzwerk 4216 eine Crossbar, die so konfiguriert werden kann, dass sie jede der Funktionseinheiten mit jedem der Register in der Registerdatei 4208 und die LSUs 4214 mit der Registerdatei 4208 und den Speicherplätzen im gemeinsam genutzten Speicher/L1-Cache 4218 verbindet.Each
In mindestens einem Ausführungsbeispiel ist der gemeinsam genutzte Speicher/L1-Cache 4218 ein Array von On-Chip-Speicher, der die Datenspeicherung und -kommunikation zwischen dem SM 4200 und der Primitiv-Engine sowie zwischen den Threads in dem SM 4200 ermöglicht, gemäß mindestens einem Ausführungsbeispiel. In mindestens einem Ausführungsbeispiel umfasst der gemeinsam genutzte Speicher/L1-Cache 4218 ohne Einschränkung 128 KB Speicherkapazität und befindet sich im Pfad vom SM 4200 zur Partitionseinheit. In mindestens einem Ausführungsbeispiel wird der gemeinsam genutzte Speicher/L1-Cache 4218 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 4218, L2-Cache und Speicher Zusatzspeicher.In at least one embodiment, shared 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 4218 ermöglicht es dem gemeinsam genutzten Speicher/L1-Cache 4218, 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 4200 zur Programmausführung und Durchführung von Berechnungen, der gemeinsam genutzte Speicher/L1-Cache 4218 zur Kommunikation zwischen Threads, und und die LSU 4214 zum Lesen und Schreiben des globalen Speichers über den gemeinsam genutzten Speicher/L1-Cache 4218 und die Speicherpartitionseinheit verwendet werden. In mindestens einem Ausführungsbeispiel schreibt der SM 4200, wenn er für allgemeine parallele Berechnungen konfiguriert ist, Befehle, die die Planereinheit 4204 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/
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 1415 wird verwendet, um Inferenz- und/oder Trainingsoperationen durchzuführen, die mit einem oder mehreren Ausführungsbeispielen assoziiert sind. Details zur Inferenz- und/oder Trainingslogik 1415 sind hier in Verbindung mit
Mindestens ein Ausführungsbeispiel kann mittels der oben beschriebenen Techniken ausgeführt werden. In mindestens einem Ausführungsbeispiel können die Netzwerke zur Evaluierung und Generierung eines Robotersteuerungssystems unter Verwendung eines Prozessors wie oben beschrieben implementiert werden.At least one embodiment may be implemented using the techniques described above. In at least one embodiment, the networks for evaluating and generating a robot control system may be implemented using a processor as described above.
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 2004 und/oder Sekundärspeicher gespeichert. Computerprogramme, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, ermöglichen es dem System 2000, gemäß mindestens einem Ausführungsbeispiel verschiedene Funktionen auszuführen. Speicher 2004, 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 2002, dem Parallelverarbeitungssystem 2012, einem integrierten Schaltkreis, der mindestens einen Teil der Fähigkeiten beider CPU 2002 abdecken kann, dem Parallelverarbeitungssystem 2012, 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
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 2000 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 implemented in the context of a general purpose computing system, a printed circuit board system, an entertainment game console system, an application specific system, and more. In at least one embodiment, the
In mindestens einem Ausführungsbeispiel umfasst das Parallelverarbeitungssystem 2012, ohne Einschränkung, eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 2014 und assoziierte Speicher 2016. In mindestens einem Ausführungsbeispiel sind die PPUs 2014 über eine Verbindung (engl. interconnect) 2018 und einen Switch 2020 oder Multiplexer mit einem Host-Prozessor oder anderen peripheren Geräten verbunden. In mindestens einem Ausführungsbeispiel verteilt das Parallelverarbeitungssystem 2012 Rechenaufgaben auf die PPUs 2014, 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 2014 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 2014 resident sind, nach sich ziehen kann. In mindestens einem Ausführungsbeispiel wird der Betrieb der PPUs 2014 durch die Verwendung eines Befehls wie syncthreads() synchronisiert, wobei alle Threads in einem Block (z.B. über mehrere PPUs 2014 hinweg ausgeführt werden), um vor dem Fortfahren einen bestimmten Punkt der Codeausführung zu erreichen.In at least one embodiment, the
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}. a sole Thus, subjunctive language is generally not intended to imply that at least one of A, at least one of B, and at least one of C must be present for particular 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 plurality is at least two, but can be more if indicated 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 transient 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 individual examples, the terms "connected" or "Coupled" can be used to indicate that two or more elements are in direct or indirect physical or electrical contact with each other. "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.
Claims (25)
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201962925669P | 2019-10-24 | 2019-10-24 | |
US62/925,669 | 2019-10-24 | ||
US16/863,111 | 2020-04-30 | ||
US16/863,111 US20210122045A1 (en) | 2019-10-24 | 2020-04-30 | In-hand object pose tracking |
Publications (2)
Publication Number | Publication Date |
---|---|
DE102020127508A1 DE102020127508A1 (en) | 2021-04-29 |
DE102020127508B4 true DE102020127508B4 (en) | 2022-09-08 |
Family
ID=75379392
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE102020127508.0A Active DE102020127508B4 (en) | 2019-10-24 | 2020-10-19 | Pose tracking of objects in hand |
Country Status (1)
Country | Link |
---|---|
DE (1) | DE102020127508B4 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102022124832A1 (en) | 2022-09-27 | 2024-03-28 | Deutsches Zentrum für Luft- und Raumfahrt e.V. | Method for robot learning skills from user demonstration and robot, data structure and computer program for autonomously performing tasks |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113723237B (en) * | 2021-08-17 | 2023-12-05 | 绍兴市北大信息技术科创中心 | Three-dimensional human body posture estimation method and device based on relative information |
DE102021121743A1 (en) | 2021-08-23 | 2023-02-23 | Aeon Robotics GmbH | Robotic hand of a robot and method for training a robot and a wearable sensor and force feedback element therefor |
DE102021211185B4 (en) | 2021-10-05 | 2024-05-02 | Robert Bosch Gesellschaft mit beschränkter Haftung | Device and method for controlling a robot |
CN114545877B (en) * | 2022-02-08 | 2024-04-05 | 燕山大学 | Multi-working-procedure mechanical digital twin on-line monitoring system and method for bulk cargo |
DE102022206381A1 (en) | 2022-06-24 | 2024-01-04 | Robert Bosch Gesellschaft mit beschränkter Haftung | Method for controlling a robotic device |
DE102022212198A1 (en) * | 2022-11-16 | 2024-05-16 | Kuka Deutschland Gmbh | Adaptation of a gripping simulation through parameter identification in the real world |
CN117095339B (en) * | 2023-10-20 | 2024-01-30 | 江西师范大学 | RGB video frame handheld object detection method based on deep learning |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE602005006126T2 (en) | 2004-06-15 | 2009-07-02 | Abb Ab | METHOD AND SYSTEM FOR OFF-LINE PROGRAMMING OF SEVERAL INTERACTIVE ROBOTS |
DE102013113459B4 (en) | 2013-03-14 | 2015-05-13 | GM Global Technology Operations LLC (n. d. Ges. d. Staates Delaware) | INTUITIVE GRID CONTROL FOR A MULTIPLE ROBOT GRIPPER |
US9321176B1 (en) | 2014-04-01 | 2016-04-26 | University Of South Florida | Systems and methods for planning a robot grasp based upon a demonstrated grasp |
DE102016009030B4 (en) | 2015-07-31 | 2019-05-09 | Fanuc Corporation | Machine learning device, robot system and machine learning system for learning a workpiece receiving operation |
DE112019001507T5 (en) | 2018-03-23 | 2020-12-31 | Amazon Technologies, Inc. | OPTIMIZATION-BASED GRID DEFORMATION MODEL FOR SOFT MATERIALS |
EP3771522A1 (en) | 2019-07-30 | 2021-02-03 | Siemens Aktiengesellschaft | Method and manipulation system for manipulating an object by a robot with vector fields |
DE102020124285A1 (en) | 2019-09-20 | 2021-03-25 | Nvidia Corporation | VISION-BASED TELEOPERATION OF A MOVING ROBOT SYSTEM |
-
2020
- 2020-10-19 DE DE102020127508.0A patent/DE102020127508B4/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE602005006126T2 (en) | 2004-06-15 | 2009-07-02 | Abb Ab | METHOD AND SYSTEM FOR OFF-LINE PROGRAMMING OF SEVERAL INTERACTIVE ROBOTS |
DE102013113459B4 (en) | 2013-03-14 | 2015-05-13 | GM Global Technology Operations LLC (n. d. Ges. d. Staates Delaware) | INTUITIVE GRID CONTROL FOR A MULTIPLE ROBOT GRIPPER |
US9321176B1 (en) | 2014-04-01 | 2016-04-26 | University Of South Florida | Systems and methods for planning a robot grasp based upon a demonstrated grasp |
DE102016009030B4 (en) | 2015-07-31 | 2019-05-09 | Fanuc Corporation | Machine learning device, robot system and machine learning system for learning a workpiece receiving operation |
DE112019001507T5 (en) | 2018-03-23 | 2020-12-31 | Amazon Technologies, Inc. | OPTIMIZATION-BASED GRID DEFORMATION MODEL FOR SOFT MATERIALS |
EP3771522A1 (en) | 2019-07-30 | 2021-02-03 | Siemens Aktiengesellschaft | Method and manipulation system for manipulating an object by a robot with vector fields |
DE102020124285A1 (en) | 2019-09-20 | 2021-03-25 | Nvidia Corporation | VISION-BASED TELEOPERATION OF A MOVING ROBOT SYSTEM |
Non-Patent Citations (5)
Title |
---|
Norm DIN EN 61508-1 (VDE 0803-1) 2011-02-00. Funktionale Sicherheit sicherheitsbezogener elektrischer/elektronischer/programmierbarer elektronischer Systeme - Teil 1: Allgemeine Anforderungen (IEC 61508-1:2010); Deutsche Fassung EN 61508-1:2010 |
Norm IEEE Std 754-2008. IEEE Standard for floating-point arithmetic. - ISBN 978-0-7381-5752-8. DOI: 10.1109/IEEESTD.2008.4610935. URL: http://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=4610935 [abgerufen am 2017-06-06] |
Norm ISO 26262-1 2018-12-00. Road vehicles - Functional safety - Part 1: Vocabulary |
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-00. Taxonomy and definitions for terms related to driving automation systems for on-road motor vehicles |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102022124832A1 (en) | 2022-09-27 | 2024-03-28 | Deutsches Zentrum für Luft- und Raumfahrt e.V. | Method for robot learning skills from user demonstration and robot, data structure and computer program for autonomously performing tasks |
Also Published As
Publication number | Publication date |
---|---|
DE102020127508A1 (en) | 2021-04-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE102019122790B4 (en) | Robot control system | |
JP7491808B2 (en) | Handheld object pose tracking | |
DE112020005156T5 (en) | Reinforcement learning of tactile gripping strategies | |
US20210086364A1 (en) | Vision-based teleoperation of dexterous robotic system | |
DE102020127508B4 (en) | Pose tracking of objects in hand | |
DE102021118885B4 (en) | MACHINE LEARNING TO CONTROL OBJECT PASSING | |
DE112020005206T5 (en) | Determining object orientation from an image using machine learning | |
DE102020128653B4 (en) | Grasping determination for an object in disorder | |
DE112020004302T5 (en) | TRAINING STRATEGY SEARCH USING REINFORCEMENT LEARNING | |
DE102020129425A1 (en) | GUIDED UNCERTAINTY-AWARE GUIDELINE OPTIMIZATION: COMBINING MODEL-FREE AND MODEL-BASED STRATEGIES FOR SAMPLE-EFFICIENT LEARNING | |
DE112020004277T5 (en) | Machine learning-based architecture search method for a neural network | |
DE102022103493A1 (en) | ONE-STAGE CATEGORY-LEVEL OBJECT POSE ESTIMATION | |
DE112020003832T5 (en) | IMAGE REGISTRATION AND SEGMENTATION NEURAL NETWORKS TRAINED USING A REGISTRATION SIMULATOR | |
DE112020005696T5 (en) | TRAINING AND DERIVING USING A NEURAL NETWORK TO PREDICT THE ORIENTATION OF OBJECTS IN IMAGES | |
DE112020004192T5 (en) | PROCESSOR AND SYSTEM TO CONVERT TENSOR OPERATIONS INTO MACHINE LEARNING | |
DE112020003833T5 (en) | Perform matrix operations in neural networks | |
DE102021206331A1 (en) | IMAGE GENERATION USING ONE OR MORE NEURAL NETWORKS | |
DE112021001164T5 (en) | DYNAMIC LOAD BALANCING OF OPERATIONS FOR REAL-TIME DEEP-EARNING ANALYZES | |
DE112021000351T5 (en) | MACHINE LEARNING-BASED OBJECT DETECTION SYSTEM | |
DE112021005717T5 (en) | Machine learning model for task and motion planning | |
DE112020005464T5 (en) | DISTRIBUTED WEIGHT UPDATE FOR BACKPROPAGATION OF A NEURAL NETWORK | |
DE112019007906T5 (en) | Identification of multi-scale features using a neural network | |
DE112020006144T5 (en) | Master transformation architecture for deep learning | |
DE102021100919A1 (en) | DETERMINING A 3D HAND POSE FROM A 2D IMAGE USING MACHINE LEARNING | |
DE102021123213A1 (en) | Motion control of a neural network |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |