DE102019122790A1 - Robotersteuerungssystem - Google Patents

Robotersteuerungssystem Download PDF

Info

Publication number
DE102019122790A1
DE102019122790A1 DE102019122790.9A DE102019122790A DE102019122790A1 DE 102019122790 A1 DE102019122790 A1 DE 102019122790A1 DE 102019122790 A DE102019122790 A DE 102019122790A DE 102019122790 A1 DE102019122790 A1 DE 102019122790A1
Authority
DE
Germany
Prior art keywords
processor
memory
robot
data
graphics
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.)
Granted
Application number
DE102019122790.9A
Other languages
English (en)
Other versions
DE102019122790B4 (de
Inventor
Shariq Iqbal
Jonathan Tremblay
Thang Hong To
Jia Cheng
Erik Leitch
Duncan J. McKay
Stanley Thomas Birchfield
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/549,831 external-priority patent/US11833681B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019122790A1 publication Critical patent/DE102019122790A1/de
Application granted granted Critical
Publication of DE102019122790B4 publication Critical patent/DE102019122790B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/0265Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion
    • G05B13/027Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion using neural networks only
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J19/00Accessories fitted to manipulators, e.g. for monitoring, for viewing; Safety devices combined with or specially adapted for use in connection with manipulators
    • B25J19/02Sensing devices
    • B25J19/021Optical sensing devices
    • B25J19/023Optical sensing devices including video camera means
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1602Programme controls characterised by the control system, structure, architecture
    • B25J9/161Hardware, e.g. neural networks, fuzzy logic, interfaces, processor
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1612Programme controls characterised by the hand, wrist, grip control
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1656Programme controls characterised by programming, planning systems for manipulators
    • B25J9/1669Programme controls characterised by programming, planning systems for manipulators characterised by special application, e.g. multi-arm co-operation, assembly, grasping
    • BPERFORMING OPERATIONS; TRANSPORTING
    • B25HAND TOOLS; PORTABLE POWER-DRIVEN TOOLS; MANIPULATORS
    • B25JMANIPULATORS; CHAMBERS PROVIDED WITH MANIPULATION DEVICES
    • B25J9/00Programme-controlled manipulators
    • B25J9/16Programme controls
    • B25J9/1694Programme controls characterised by use of sensors other than normal servo-feedback from position, speed or acceleration sensors, perception control, multi-sensor controlled systems, sensor fusion
    • B25J9/1697Vision controlled systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • G06T7/74Determining position or orientation of objects or cameras using feature-based methods involving reference images or patches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30244Camera pose

Landscapes

  • Engineering & Computer Science (AREA)
  • Mechanical Engineering (AREA)
  • Robotics (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Automation & Control Theory (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Orthopedic Medicine & Surgery (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Fuzzy Systems (AREA)
  • Biophysics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Medical Informatics (AREA)
  • Image Analysis (AREA)

Abstract

In zumindest einer Ausführungsform wird unter der Steuerung eines Robotersteuerungssystems ein Greifer an einem Roboter positioniert, um ein dreidimensionales Objekt zu greifen. In zumindest einer Ausführungsform wird die relative Position des Objekts und des Greifers zumindest teilweise unter Verwendung einer am Greifer montierten Kamera bestimmt.

Description

  • TECHNISCHES GEBIET
  • Zumindest eine Ausführungsform bezieht sich auf Verarbeitungsressourcen, die zur Steuerung eines Robotersteuerungssystems verwendet werden. Beispielsweise bezieht sich zumindest eine Ausführungsform auf ein trainiertes Netzwerk, das eine Greifpose für einen Roboter erzeugt.
  • HINTERGRUND
  • Automatisierung ist ein wichtiger technologischer Bereich. Ein bedeutendes Problem im Bereich der Automatisierung ist die robotergestützte Manipulation physikalischer Objekte. Um ein physikalisches Objekt zu manipulieren, bestimmt im Allgemeinen ein Robotersteuerungssystem die Position und die Ausrichtung des Roboters in Bezug auf die Position und die Ausrichtung des Objekts und positioniert dann den Roboter so, dass das Objekt von einer mechanischen Hand oder einem Greifer gegriffen werden kann. Im Allgemeinen können Objekte auf vielfältige Weise gegriffen werden. Beispielsweise könnte eine Tasse über die Breite der Tasse hinweg oder an einem beliebigen Punkt auf dem Rand, oder an einem Henkel an der Tasse gegriffen werden. Basierend auf den Eigenschaften des Objekts können Griffe aus einer bestimmten Richtung oder Griffe an einem bestimmten Teil eines Objekts in einem sichereren Griff resultieren. Daher werden Robotersteuerungssysteme benötigt, die in der Lage sind, eine breite Vielzahl von Objektgreifposen auszuführen, damit bevorzugte Objektgreifposen erreicht werden können.
  • Figurenliste
    • 1 veranschaulicht ein Beispiel für einen Gelenkroboter gemäß zumindest einer Ausführungsform;
    • 2 veranschaulicht ein Beispiel eines Robotergreifers gemäß zumindest einer Ausführungsform;
    • 3 veranschaulicht ein Beispiel eines maschinell lernenden Systems, das einen Roboter anweisen kann, ein Greifen eines Objekts durchzuführen, gemäß zumindest einer Ausführungsform;
    • 4 veranschaulicht ein Beispiel einer Simulation, die dazu verwendet wird, ein maschinell lernendes System zu trainieren, um ein Objekt zu greifen, gemäß zumindest einer Ausführungsform;
    • 5 veranschaulicht ein Beispiel für eine Top-Down-Greifpose gemäß zumindest einer Ausführungsform;
    • 6 veranschaulicht ein Beispiel für eine seitliche Greifpose gemäß zumindest einer Ausführungsform;
    • 7 veranschaulicht ein Beispiel eines Prozesses, der infolge dessen, dass er von einem maschinell lernenden Computersystem durchgeführt wird, ein neuronales Netzwerk darauf trainiert, ein Greifen eines Objekts durchzuführen, gemäß zumindest einer Ausführungsform;
    • 8 veranschaulicht ein Beispiel eines Prozesses, der infolge dessen, dass er von einem maschinell lernenden Computersystem durchgeführt wird, ein Greifen eines Objekts unter Verwendung eines trainierten neuronalen Netzwerks durchführt, gemäß zumindest einer Ausführungsform;
    • 9A veranschaulicht Inferenzierungs- und/oder Trainingslogik gemäß zumindest einer Ausführungsform;
    • 9B veranschaulicht Inferenzierungs- und/oder Trainingslogik gemäß zumindest einer Ausführungsform;
    • 10 veranschaulicht ein Training und einen Einsatz eines neuronalen Netzwerks gemäß zumindest einer Ausführungsform;
    • 11 veranschaulicht ein beispielhaftes Rechenzentrumssystem gemäß zumindest einer Ausführungsform;
    • 12A veranschaulicht ein Beispiel eines autonomen Fahrzeugs gemäß zumindest einer Ausführungsform;
    • 12B veranschaulicht ein Beispiel von Kamerapositionen und Sichtfeldern für das autonome Fahrzeug von 12A gemäß zumindest einer Ausführungsform;
    • 12C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug von 12A darstellt, gemäß zumindest einer Ausführungsform;
    • 12D ist ein Diagramm, das ein System zur Kommunikation zwischen (einem) Cloud-basierten Server(n) und dem autonomen Fahrzeug von 12A darstellt, gemäß zumindest einer Ausführungsform;
    • 13 ist ein Blockdiagramm, das ein Computersystem darstellt, gemäß zumindest einer Ausführungsform;
    • 14 ist ein Blockdiagramm, das das Computersystem darstellt, gemäß zumindest einer Ausführungsform;
    • 15 veranschaulicht ein Computersystem gemäß zumindest einer Ausführungsform;
    • 16 veranschaulicht ein Computersystem gemäß zumindest einer Ausführungsform;
    • 17A veranschaulicht ein Computersystem gemäß zumindest einer Ausführungsform;
    • 17B veranschaulicht ein Computersystem gemäß zumindest einer Ausführungsform;
    • 17C veranschaulicht ein Computersystem gemäß zumindest einer Ausführungsform;
    • 17D veranschaulicht ein Computersystem gemäß zumindest einer Ausführungsform;
    • 17E-17F veranschaulichen ein gemeinsames Programmiermodell gemäß zumindest einer Ausführungsform;
    • 18 veranschaulicht beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren gemäß zumindest einer Ausführungsform;
    • 19A-19B veranschaulichen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren gemäß zumindest einer Ausführungsform;
    • Die 20A-20B veranschaulichen zusätzliche beispielhafte Grafikprozessorlogik gemäß zumindest einer Ausführungsform;
    • 21 veranschaulicht ein Computersystem gemäß zumindest einer Ausführungsform;
    • 22A veranschaulicht einen Parallelprozessor gemäß zumindest einer Ausführungsform;
    • 22B veranschaulicht eine Partitionseinheit gemäß zumindest einer Ausführungsform;
    • 22C veranschaulicht einen Verarbeitungscluster gemäß zumindest einer Ausführungsform;
    • 22D veranschaulicht einen Grafik-Multiprozessor gemäß zumindest einer Ausführungsform;
    • 23 veranschaulicht ein Multi-Grafikverarbeitungseinheit (GPU)-System gemäß zumindest einer Ausführungsform;
    • 24 veranschaulicht einen Grafikprozessor gemäß zumindest einer Ausführungsform;
    • 25 ist ein Blockdiagramm, das eine Prozessor-Mikroarchitektur für einen Prozessor darstellt, gemäß zumindest einer Ausführungsform;
    • 26 veranschaulicht einen tief lernenden Anwendungsprozessor gemäß zumindest einer Ausführungsform;
    • 27 ist ein Blockdiagramm, das einen beispielhaften neuromorphen Prozessor darstellt, gemäß zumindest einer Ausführungsform;
    • 28 veranschaulicht zumindest Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen;
    • 29 veranschaulicht zumindest Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen;
    • 30 veranschaulicht zumindest Teile eines Grafikprozessors gemäß einer oder mehrerer Ausführungsformen;
    • 31 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 3110 eines Grafikprozessors gemäß zumindest einer Ausführungsform.
    • 32 ist ein Blockdiagramm von zumindest Teilen eines Grafikprozessorkerns gemäß zumindest einer Ausführungsform;
    • 33A-33B veranschaulichen eine Threadausführungslogik 3300 mit einer Anordnung von Verarbeitungselementen eines Grafikprozessorkerns gemäß zumindest einer Ausführungsform.
    • 34 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) gemäß zumindest einer Ausführungsform;
    • 35 veranschaulicht einen Universalverarbeitungscluster („GPC“) gemäß zumindest einer Ausführungsform;
    • 36 veranschaulicht eine Speicherpartitionseinheit einer Parallelverarbeitungseinheit („PPU“) gemäß zumindest einer Ausführungsform; und
    • 37 veranschaulicht einen Streaming-Multiprozessor gemäß zumindest einer Ausführungsform.
  • DETAILLIERTE BESCHREIBUNG
  • In zumindest einer Ausführungsform ist ein System zum Steuern eines Robotergreifers in der Lage, ein bestimmtes Greifen eines dreidimensionalen Objekts unter Verwendung einer In-Hand-Kamera und eines trainierten neuronalen Netzwerks durchzuführen. Im Allgemeinen sind viele bestehende Robotersteuerungssysteme insofern beschränkt, als die bestimmten Griffe, die sie erzielen können, durch die Positionierung der zur Bestimmung der Position des Objekts und des Roboters verwendeten Kamera eingeschränkt sind. Beispielsweise sind viele Systeme auf Top-Down-Ansichten des Objekts und des Roboters beschränkt, was zu einer begrenzten Anzahl von Top-Down-Greifposen führt, zu denen das System in der Lage ist. In zumindest einer Ausführungsform hebt das vorliegende System diese Einschränkung auf und ermöglicht weitaus mehr mögliche Griffposen von der Seite, in einem Winkel oder von der Unterseite des Objekts.
  • In zumindest einer Ausführungsform verwendet das System eine Kamera, die an einem Handgelenk eines Roboters montiert und in die allgemeine Richtung eines Greifers, einer Klaue oder einer mechanischen Hand ausgerichtet ist. In zumindest einer Ausführungsform entspricht, teilweise bedingt durch die Positionierung der Kamera, der Koordinatenrahmen, in welchem das Problem gelöst wird, dem Hauptzugang des Greifwerkzeugs und hat einen Ursprung an der Kamera. In zumindest einer Ausführungsform verwendet das System ein maschinell lernendes System, das unter Verwendung von Deep Reinforcement Learning („DRL“) trainiert wird. In zumindest einer Ausführungsform wird ein doppelt tiefer Q-Netzwerk („DDQN“) Ansatz dazu verwendet, ein Mapping von Bildern und Aktionen auf geschätzte Q-Werte zu lernen. In zumindest einer Ausführungsform wird dann ein Kreuzentropie-Verfahren (Cross Entropy Method; „CEM“) dazu verwendet, die beste Aktion durch iteratives Abtasten mehrerer Q-Werte auszuwählen.
  • In zumindest einer Ausführungsform werden die Bilder unter Verwendung einer am Handgelenk montierten RGB-Kamera aufgenommen, und liegt der Aktionsraum entlang kartesischer Achsen, die mit dem Handgelenk ausgerichtet sind. In zumindest einer Ausführungsform ist die Kamera an anderer Stelle montiert, werden aber die Bilder von dem Handgelenk aus unter Verwendung einer Reihe von Spiegeln oder eines Hohlleiters aufgenommen. In zumindest einer Ausführungsform liegt der Aktionsraum entlang des primären Zugangs eines polaren oder sphärischen Koordinatensatzes.
  • In zumindest einer Ausführungsform nutzen hierin beschriebenen Techniken einen Deep Reinforcement Learning-Ansatz, um semantisch sinnvolle Objekte in einer geometrisch konsistenten Weise zu ergreifen. In zumindest einer Ausführungsform wird das System in einer Simulation trainiert, wobei eine Simulation-zu-Real-Übertragung unter Verwendung eines Simulators erfolgt, der sowohl den physischen Kontakt zwischen dem Roboter und dem zu greifenden Objekt modelliert als auch fotorealistische Bilder erzeugt. In zumindest einer Ausführungsform stellt das System ein Beispiel für ein durchgängiges semantisches Erfassen bzw. Greifen (Zuordnung von Eingangspixeln zu Motorbefehlen in kartesischen oder anderen Koordinatensystemen) bereit. In zumindest einer Ausführungsform ist das System durch die Verwendung einer am Manipulator positionierten Kamera nicht auf Top-Down-Griffe beschränkt und in der Lage, Objekte aus jedem beliebigen Winkel zu greifen. In zumindest einer Ausführungsform ist das System in der Lage, Objekte aus mehreren vordefinierten objektzentrierten Orientierungen, wie beispielsweise von der Seite oder von oben her, zu greifen bzw. zu greifen. In Verbindung mit einem Echtzeit-6-DoF-Objekt-Posenschätzer ist zumindest eine Ausführungsform in der Lage, Objekte aus jeder beliebigen Position und Orientierung innerhalb des greifbaren Arbeitsbereichs zu greifen. In zumindest einer Ausführungsform demonstrieren Ergebnisse sowohl in der Simulation als auch in der Praxis die Wirksamkeit des Ansatzes.
  • Für den Fachmann versteht sich im Lichte dieser Offenbarung, dass bestimmte Ausführungsformen in der Lage sein können, bestimmte Vorteile zu erzielen, einschließlich einiger oder aller der folgenden: (1) Durch die Nutzung von DRL sind die hierin beschriebenen Techniken besser in der Lage, zeitliche Effekte von Aktionen zu nutzen; und (2) durch die Formulierung des Problems in Bezug auf ein um das Handgelenk und den Greifer zentriertes Koordinatensystem sind verschiedene Ausführungsformen in der Lage, Objekte aus einer Vielzahl von Orientierungen zu greifen.
  • 1 veranschaulicht ein Beispiel eines Gelenkroboters gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform wird ein Gelenkroboter 102 durch ein Steuerungscomputersystem gesteuert, das ein neuronales Netzwerk implementiert. In zumindest einer Ausführungsform beinhaltet das Steuerungscomputersystem einen oder mehrere Prozessoren, wie beispielsweise einen Universalprozessor oder eine nachfolgend beschriebene Grafikverarbeitungseinheit. In zumindest einer Ausführungsform beinhaltet das Steuerungscomputersystem einen Speicher, der ausführbare Anweisungen speichert, die infolge dessen, dass sie durch den einen oder die mehreren Prozessoren ausgeführt werden, das System dazu veranlassen, ein Objekt zu greifen. In zumindest einer Ausführungsform implementiert das Steuerungscomputersystem ein neuronales Netzwerk, das dazu trainiert ist, Steuersignale zu erzeugen, die den Gelenkroboter 102 dazu veranlassen, ein Objekt zu greifen.
  • In dem in 1 dargestellten Beispiel beinhaltet der Gelenkroboter 102 einen ersten Arm 104 und einen zweiten Arm 106, die mit einer Basis verbunden sind. In zumindest einer Ausführungsform ist der erste Arm 104 mit einem Handgelenk 114 verbunden. In zumindest einer Ausführungsform ist ein Greifer 108 an dem Handgelenk 114 montiert. In zumindest einer Ausführungsform wird ein Objekt 110 von dem Greifer 108 unter der Steuerung des Steuerungscomputersystems ergriffen. In zumindest einer Ausführungsform ist eine Kamera an dem Handgelenk 114 befestigt, und ist die Kamera ist so montiert, dass der Blick der Kamera entlang der Achse des Greifers auf das zu greifende Objekt gerichtet ist. In zumindest einer Ausführungsform beinhaltet das System eine oder mehrere zusätzliche Kameras mit Blick bzw. Sicht auf den Arbeitsbereich.
  • In zumindest einer Ausführungsform erhält das Steuerungscomputersystem ein Bild von einer Kamera mit Blick auf den Arbeitsbereich und bestimmt aus dem Bild eine 6-d-Pose des Objekts 110. In zumindest einer Ausführungsform ist die 6-d-Pose eine xyz-Pose und eine Rotationsorientierung des Objekts 110. In zumindest einer Ausführungsform wählt das Steuerungscomputersystem eine Griff- bzw. Greifpose des Objekts 110 basierend auf der 6-d-Pose des Objekts 110 aus. In zumindest einer Ausführungsform bestimmt beispielsweise das Steuerungscomputersystem basierend zumindest teilweise auf der bestimmten Pose des Objekts eine bestimmte Art und Weise, das Objekt zu greifen. In zumindest einer Ausführungsform bestimmt das Steuerungscomputersystem eine Vorgreifposition, in welche der Greifer vor dem Versuch des Greifens zu bewegen ist, und bewegt den Greifer vor dem Ausführen des Greifens in die Vorgreifposition.
  • In zumindest einer Ausführungsform erhält das Steuerungscomputersystem nach dem Bewegen in die Vorgreifposition Bilder von der am Handgelenk 114 montierten Kamera und verwendet die Bilder dazu, die Position des Greifers 108 unter Verwendung eines trainierten neuronalen Netzwerks zu verfeinern. In zumindest einer Ausführungsform werden die Bilder und eine vorgeschlagene Aktion dem trainierten neuronalen Netzwerk zugeführt und erzeugt dieses einen Q-Wert, welcher dazu verwendet wird, eine Aktion auszuwählen, die am ehesten den gewünschten Griff bzw. das gewünschte Greifen erzeugt. In zumindest einer Ausführungsform wird dann, wenn der Q-Wert einen Schwellenwert erreicht, der Greifer 108 geschlossen, um das Objekt zu ergreifen. In zumindest einer Ausführungsform werden der Gelenkroboter und das Objekt simuliert, um das neuronale Netzwerk zu trainieren.
  • 2 veranschaulicht ein Beispiel eines Robotergreifers 202 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist der Robotergreifer 202 über eine Handgelenkverbindung 206 an einem Greifer 204 befestigt. In zumindest einer Ausführungsform ist der Greifer 204 eine Klaue, eine Gelenkhand, ein Spannstock oder ein anderer Manipulator zum Greifen oder Interagieren mit einem Objekt 208. In zumindest einer Ausführungsform ist eine Kamera 210 an der Handgelenkverbindung 206 befestigt. In zumindest einer Ausführungsform ist die Kamera 210 in Richtung der Achse des Greifers gerichtet und bewegt sich mit der Handgelenkverbindung 206, um die Ausrichtung mit dem Greifer aufrechtzuerhalten. In zumindest einer Ausführungsform ermöglicht die Kamera einem Steuerungscomputersystem, die Position des Greifers 204 zu justieren, um die Wahrscheinlichkeit eines erfolgreichen Greifens zu erhöhen.
  • In zumindest einer Ausführungsform besteht das Ziel dieser Arbeit darin, eine Richtlinie in Simulation zu erlernen (links), die auf die reale Welt übertragbar ist (rechts), um ein bestimmtes Objekt auf eine bestimmte Weise zu greifen.
  • In zumindest einer Ausführungsform beschreiben die Techniken hierin ein System, das die Robotersteuerung verbessert, indem es spezifische unterschiedliche Greifposen eines Objekts ermöglicht. In einigen Systemen lernt ein Roboter, eines von mehreren Objekten aus einem überfüllten Behälter zu greifen. Bei solchen Ansätzen spielt es keine Rolle, welches Objekt erfasst wird, nur dass ein Objekt erfasst wird (oder, in diesem Fall, mehrere Objekte). Diese Verfahren beschränken sich in der Regel auf Top-Down-Greifen, bei welchem der Roboter unter Verwendung einer Überkopfkamera zum Abtasten nach unten in einen Behälter langt.
  • In zumindest einer Ausführungsform ermöglicht eine semantische Greiftechnik es einem Roboter zu lernen, einen bestimmten Typ von Objekt - der von dem Benutzer angegeben wird - aus einem überfüllten Behälter zu greifen. Obwohl sich solche Ansätze mit der Frage befassen, welches Objekt zu greifen ist, geht es in der Regel nicht um die Frage, wie die Objekte zu greifen sind, z.B. durch Auswählen des Teils des Objekts und der Richtung des Greifens. Außerdem können einige Beispiele dieser Verfahren auf das Greifen von oben nach unten mittels Überkopferfassung beschränkt sein.
  • Für viele reale Aufgaben ist die Art und Weise, in welcher das Objekt gegriffen wird, wichtig. Ein Roboter, der einen Becher verkehrt herum aufnimmt, hat nicht unbedingt ein erfolgreiches Greifen für die beabsichtigte Aufgabe durchgeführt, eben so wenig wie ein Roboter, der beispielsweise eine Gabel an den Zinken packt. Um solche Probleme anzugehen, sind die hierin beschriebenen Techniken in verschiedenen Ausführungsformen in der Lage, Objekte auf eine bestimmte Weise und aus einer bestimmten Richtung zu greifen. Außerdem hinaus hängen die Arten des Greifens, die geeignet sind, von der Art des Objekts ab. Infolge dessen beschreibt das vorliegende Dokument ein System, das in der Lage ist, einen bestimmten Objekttyp auf eine bestimmte Weise zu greifen.
  • In zumindest einer Ausführungsform verwendet unser Ansatz, um das Erfassen von Objekten aus jeder beliebigen Richtung (nicht nur von oben nach unten) zu ermöglichen, eine Kamera in der Hand. In zumindest einer Ausführungsform wird ein Deep Reinforcement Learning („DRL“)-Verfahren dazu verwendet, ein neuronales Netzwerk in einer durchgehenden bzw. End-to-EndWeise unter Verwendung ausschließlich synthetischer Daten zu trainieren. In zumindest einer Ausführungsform wird ein Domänentransfer von synthetisch nach real unter Verwendung von Daten aus einem Simulator durchgeführt, der physischen Kontakt modelliert und fotorealistische Bilder für das Training erzeugt. In zumindest einer Ausführungsform zeigen Experimente mit einem Baxter-Roboter die Fähigkeit der erlernten Richtlinien, das Erfassen bestimmter Objekte auf bestimmte Weise zu ermöglichen. In zumindest einer Ausführungsform bieten verschiedene hierin beschriebene Techniken einen Ansatz für geometriebewusstes semantisches Greifen, das lernt, bestimmte Objekte entlang bestimmter Greifrichtungen zu greifen, ein Verfahren zum Erzeugen physikalisch plausibler, fotorealistischer synthetischer Daten, um Richtlinien zu trainieren, die ohne einen speziellen Domänenanpassungsschritt auf die reale Welt übertragbar sind, und ein System, das die erlernten Handkamera-Richtlinien für eine lokale Steuerung mit globaler 6-DoF-Posenschätzung ausgehend von einer festen Kamera kombiniert, um Objekte überall im greifbaren Arbeitsbereich zu greifen.
  • In zumindest einer Ausführungsform verwenden die hierin beschriebenen Techniken einen Verstärkungslernansatz, und wird das Problem als ein Markov-Entscheidungsprozess („MDP“) modelliert, der als ein Tupel (S, O, A, P, P, r, γ) dargestellt wird, worin S der Satz von Zuständen in der Umgebung ist, 0 der Satz von Beobachtungen ist, A der Satz von Aktionen ist, P : S × A × S → ℝ die Zustandsübergangswahrscheinlichkeitsfunktion ist, r : 5 × A → ℝ die Belohnungsfunktion ist und γ ein Diskontfaktor ist.
  • In zumindest einer Ausführungsform besteht das Ziel des Trainings darin, eine deterministische Richtlinie π: 0 → A derart zu erlernen, dass eine Maßnahme bzw. Aktion at = π(ot) zum Zeitpunkt t die Summe der diskontierten zukünftigen Belohnungen aus dem Zustand s t : R t = Σ i = t γ i t r ( s i , a i )
    Figure DE102019122790A1_0001
    maximiert. In zumindest einer Ausführungsform geht nach dem Ergreifen der Maßnahme at durch Abtasten ausgehend von P die Umgebung von dem Zustand st auf den Zustand st+1 über. In zumindest einer Ausführungsform wird die Qualität des Ergreifens der Maßnahme at in dem Zustand st mittels Q ( s t , a t ) = [ R t | s t , a t ] ,
    Figure DE102019122790A1_0002
    welches als die Q-Funktion bekannt ist, gemessen.
  • In zumindest einer Ausführungsform verwenden die hierin beschriebenen Techniken zum Lernen ein doppelt tiefes Q-Netzwerk („DDQN“), welches ein richtlinienloser („off-policy“), modellfreier RL-Algorithmus ist. In zumindest einer Ausführungsform überwindet DDQN die Einschränkungen von DQN (wie beispielsweise die Überschätzung von Aktionswerten), indem es getrennte Netzwerke zur Maßnahmen- bzw. Aktionsauswahl und Maßnahmen- bzw. Aktionsauswertung verwendet und die Gewichte periodisch von einem zum anderen kopiert. In zumindest einer Ausführungsform bildet die erlernte Richtlinie 50 x 50 Bilder, die von der an dem Handgelenk des Roboters montierten Augenin-Hand-Kamera heruntergerechnet wurden, auf einen kontinuierlichen 4D-Wert ab, der eine Aktion in einem End-Effektor-zentrierten kartesischen Koordinatensystem darstellt (d.h. 3 Translationswerte und 1 Rotation um die Handgelenkachse). In zumindest einer Ausführungsform wird, da das Netzwerk Eingangsbilder und Aktionen auf Werte abbildet, das Cross-Entropie-Verfahren („CEM“) dazu verwendet, die beste Aktion bzw. Maßnahme auszuwählen.
  • 3 veranschaulicht ein Beispiel eines maschinell lernenden Systems, das einen Roboter dazu anweisen kann, ein Greifen eines Objekts durchzuführen, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform wird ein Bild 302 von einer greiferorientierten (z.B. am Handgelenk montierten) Kamera von einem tiefen neuronalen Netzwerk 304 eingebettet. In zumindest einer Ausführungsform wird dann die Einbettung 306 zusammen mit der Aktion 308 einem ersten Netzwerk 310 zugeführt, um den Q-Wert zu schätzen. In zumindest einer Ausführungsform wird die Einbettung 306 einem zweiten Netzwerk 314 zugeführt, um einen Satz von Hilfsverlusten 316 zu erzeugen. In zumindest einer Ausführungsform beinhaltet der Satz von Hilfsverlusten 316 eine Anzeige eines Kontakts mit dem Objekt und/oder eine Anzeige einer Interferenz mit einer Arbeitsoberfläche oder einem anderen Objekt. In zumindest einer Ausführungsform werden während des Trainings sowohl der Q-Wert-Verlust 312 als auch der Satz von Hilfsverlusten 316 verwendet.
  • 4 veranschaulicht ein Beispiel einer Simulation, die dazu verwendet wird, ein maschinell lernendes System zu trainieren, um ein Objekt zu greifen, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform wird die Trainingszeit reduziert, indem mehrere simulierte Roboter parallel betrieben werden. In zumindest einer Ausführungsform werden verschiedene Umgebungsbedingungen dazu verwendet, das Training des maschinell lernenden Systems zu verbessern. In zumindest einer Ausführungsform werden verschiedene Texturen und/oder Muster auf einer Arbeitsoberfläche verwendet. In zumindest einer Ausführungsform verwendet eine erste Instanz der Simulation ein erstes Arbeitsoberflächenmuster 402, verwendet eine zweite Instanz der Simulation ein zweites Arbeitsoberflächenmuster 404, verwendet eine dritte Instanz der Simulation ein drittes Arbeitsoberflächenmuster 406 und verwendet eine vierte Instanz der Simulation ein viertes Arbeitsoberflächenmuster 408. In zumindest einer Ausführungsform verwenden die hierin beschriebenen Techniken Domänen-Randomisierung, um das Netzwerk robust gegenüber Änderungen in der visuellen Eingabe zu machen.
  • 5 veranschaulicht ein Beispiel einer Top-Down-Greifpose gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist ein Roboter 502 gezeigt, der ein Objekt 504 greift. In zumindest einer Ausführungsform beinhaltet die Umgebung, die das Objekt 504 umgibt, eine Vielzahl anderer Objekte, wie beispielsweise eine Mineralwasserdose 506 und einen Stift 508. In zumindest einer Ausführungsform ist eine Kamera am Handgelenk des Roboters 502 montiert und ist die Kamera entlang der Achse eines Greifers 510 ausgerichtet. In zumindest einer Ausführungsform liefert die Kamera Bilder eines zu greifenden Objekts an ein Steuerungscomputersystem. In zumindest einer Ausführungsform implementiert das Steuerungscomputersystem ein oder mehrere neuronale Netzwerke, die dazu trainiert sind, Aktionen zu identifizieren, die als Ergebnis der Ausführung durch den Roboter 502 den Roboter beispielsweise so positionieren, dass er das Objekt 504 auf eine bestimmte Weise greift. In zumindest einer Ausführungsform nimmt die Kamera ein Bild 512 auf, das das Objekt 514 aus der Sicht des Greifers beinhaltet, welches es dem Steuersystem erlaubt, Feineinstellungen vorzunehmen, die die Präzision und Genauigkeit des resultierenden Greifens verbessern.
  • 6 veranschaulicht ein Beispiel für eine seitliche Griffhaltung gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform verwendet ein Roboter 602 einen Greifer 604, um ein Objekt 608 zu greifen. In zumindest einer Ausführungsform wird eine am Handgelenk des Roboters 602 angebrachte Kamera 606 in einer Linie mit dem Greifer 604 ausgerichtet. In zumindest einer Ausführungsform kann der Roboter 602 durch Anbringen der Kamera 606 am Handgelenk des Roboters Greifen aus verschiedenen Richtungen, wie beispielsweise von der Seite, wie in 6 dargestellt, durchführen. In zumindest einer Ausführungsform erfasst die Kamera 606 ein Bild 610, das ein Bild des Objekts 612 aus der Perspektive des Greifers beinhaltet.
  • In zumindest einer Ausführungsform ist nach dem Training in der Simulation eine durch das Training erzeugte Richtlinie in der Lage, das beabsichtigte Objekt in der realen Welt ohne Feinabstimmung zu greifen. In zumindest einer Ausführungsform ist der Aktionsraum greiferzentriert, welches es dem Roboter erlaubt, nicht nur Top-Down-Griffe (wie in 5 dargestellt), sondern auch Griffe aus anderen Orientierungen (wie in 6 dargestellt) durchzuführen.
  • 7 veranschaulicht ein Beispiel eines Prozesses, der als ein Ergebnis der Durchführung durch ein maschinell lernendes Computersystem ein neuronales Netzwerk dazu trainiert, ein Greifen eines Objekts durchzuführen, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform wird das Greifen von einem Gelenkroboter mit einem oder mehreren beweglichen Gelenken ausgeführt, deren Positionen unter der Steuerung eines Robotersteuerungssystems eingestellt werden können. In zumindest einer Ausführungsform ist das Robotersteuerungssystem ein Computersystem, das einen oder mehrere Prozessoren und Speicher umfasst, der ausführbare Anweisungen speichert, die als ein Ergebnis der Ausführung durch den einen oder die mehreren Prozessoren den Roboter dazu veranlassen, sich unter programmatischer Steuerung bzw. einer Programmsteuerung zu bewegen. In zumindest einer Ausführungsform wird das Greifen von einer Klaue durchgeführt, die unter Steuerung des Robotersteuerungssystems öffnen oder schließen kann. In zumindest einer Ausführungsform wird das Greifen von einer mechanischen Hand mit zwei oder mehr Fingern ausgeführt. In zumindest einer Ausführungsform wird das Greifen von einer Punktschweißspitze oder einem anderen Werkzeug ausgeführt.
  • In zumindest einer Ausführungsform beginnt der Prozess bei Block 702, wobei das Computersystem eine Vielzahl von Simulationen generiert. In zumindest einer Ausführungsform entsprechen die Simulationen einem zu steuernden physikalischen System. In zumindest einer Ausführungsform stimmt beispielsweise ein Manipulator in der Simulation mit einem Manipulator an einem entsprechenden zu steuernden Roboter überein. In zumindest einer Ausführungsform sind die Simulationen Simulationen eines Gelenkroboters und eines von dem Roboter zu greifenden Objekts. In zumindest einer Ausführungsform beinhaltet jede Simulation verschiedene Texturen, Objekte und Muster, die das von einer virtuellen Kamera, die sich an dem Handgelenk des Gelenkroboters befindet, gesammelte Bild blockieren, verdecken oder überladen können. In zumindest einer Ausführungsform kann eine Arbeitsoberfläche zwischen den einzelnen Instanzen der Simulation farblich variieren. In zumindest einer Ausführungsform können der Arbeitsoberfläche verschiedener Simulationsinstanzen zusätzliche Objekte hinzugefügt sein, die nicht das zu greifende Objekt sind. In zumindest einer Ausführungsform werden die Lichtverhältnisse so variiert, dass erzeugte Bilder unterschiedliche Qualitäten aufweisen. In zumindest einer Ausführungsform generiert bei Block 704 die Simulation für jede Simulation Bilder, die zum Trainieren des maschinell lernenden Systems verwendet werden. In zumindest einer Ausführungsform werden die Bilder aus der Sicht der simulierten virtuellen Kamera erzeugt, die auf dem Rest des Gelenkroboters montiert und in Richtung des Robotergreifers ausgerichtet ist, der dazu verwendet wird, das Objekt zu greifen. In zumindest einer Ausführungsform werden die Bilder mit einem Kameramodell erzeugt, das mit einer physischen Kamera auf dem zu steuernden Roboter übereinstimmt.
  • In zumindest einer Ausführungsform wird bei Block 706 jedes Bild durch ein Netzwerk geführt, um eine Einbettung des Bilds zu erzeugen. In zumindest einer Ausführungsform wird die Einbettung einem zusätzlichen Netzwerk bereitgestellt, und wird dem zusätzlichen Netzwerk darüber hinaus eine vorgeschlagene Aktion zum Erzeugen eines Q-Wert-Verlustes bereitgestellt. In zumindest einer Ausführungsform kann bei Block 708 die Einbettung einem zusätzlichen Netzwerk zugeführt werden, das einen Satz von Hilfsverlusten erzeugt, die dazu verwendet werden, das maschinell lernende System zu trainieren. In zumindest einer Ausführungsform werden bei Block 710 die Q-WertVerluste und die Hilfsverluste dazu verwendet, ein Netzwerk zu trainieren, das in der Lage ist, den Greifvorgang des Roboters zu steuern. In zumindest einer Ausführungsform wird ein Q-Lernen dazu eingesetzt, das Netzwerk zu trainieren.
  • 8 veranschaulicht ein Beispiel eines Prozesses 800, der als ein Ergebnis der Ausführung durch ein trainiertes maschinell lernendes Computersystem ein Greifen eines Objekts unter Verwendung eines trainierten neuronalen Netzwerks durchführt, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform wird das maschinell lernende Computersystem unter Verwendung des in 7 dargestellten Prozesses trainiert. In zumindest einer Ausführungsform wird der Prozess 800 dazu verwendet, einen Gelenkroboter zu steuern, der einen Manipulator wie beispielsweise eine Klaue, eine Hand oder ein Werkzeug beinhaltet. In zumindest einer Ausführungsform identifiziert bei Block 802 das maschinell lernende Computersystem ein Objekt, das von dem Roboter erfasst werden soll. In zumindest einer Ausführungsform wird das Objekt unter Verwendung eines von einer Kamera aufgenommenen Bilds identifiziert. In zumindest einer Ausführungsform ist die Kamera eine Overhead-Kamera. In zumindest einer Ausführungsform ist die Kamera in der Hand-Kamera, und ist der Manipulator in die allgemeine Richtung des zu greifenden Objekts gerichtet. In zumindest einer Ausführungsform wird das Objekt aus einem Satz bekannter Objekte identifiziert. In zumindest einer Ausführungsform wird das Objekt als symmetrisches, asymmetrisches oder halb- bzw. semi-symmetrisches Objekt identifiziert. In zumindest einer Ausführungsform identifiziert bei Block 804 und basierend zumindest teilweise auf der Identität des Objekts das maschinell lernende Computersystem eine bestimmte Greifpose, mit welcher das Objekt zu greifen ist. In zumindest einer Ausführungsform kann das System beispielsweise bestimmen, dass eine Tasse nicht am Rand, sondern an einem Henkel ergriffen wird. In zumindest einer Ausführungsform wird eine bestimmte Greifpose basierend auf einer Orientierung des Objekts auf einer Arbeitsoberfläche ausgewählt. In zumindest einer Ausführungsform wird eine bestimmte Greifpose basierend auf einem Vorhandensein anderer Objekte um das zu greifende Objekt herum ausgewählt.
  • In zumindest einer Ausführungsform bestimmt bei Block 806 das maschinell lernende Computersystem eine 6D-Pose des Objekts. In zumindest einer Ausführungsform kann die 6D-Pose aus einem Bild bestimmt werden, das von einer In-Hand-Kamera oder von einer anderen Kamera mit Blick auf den Arbeitsbereich aufgenommen wurde. In zumindest einer Ausführungsform beinhaltet die 6D-Pose eine dreiachsige Translation und eine dreiachsige Rotation für das Objekt. In zumindest einer Ausführungsform bestimmt bei Block 808 das maschinell lernende Computersystem aus der 6D-Pose und der ausgewählten Greifpose eine Vorgreifpose. In zumindest einer Ausführungsform ist die Vorgreifpose eine 6D-Pose des Robotergreifers, die geringfügig von der gewünschten Greifpose entfernt positioniert ist, so dass eine am Roboter angebrachte In-Hand-Kamera eine korrekte Sicht auf das zu greifende Objekt hat. In zumindest einer Ausführungsform weist das maschinell lernende Computersystem nach Bestimmen der Vorgreifposition den Roboter an, den Greifer in die bestimmte-Vorgreifpose zu bewegen. In zumindest einer Ausführungsform stimmt die Vorgreifpose mit einer Vorgreifpose überein, die in einer Simulation zum Trainieren des maschinell lernenden Computersystems durchgeführt wurde.
  • In zumindest einer Ausführungsform erhält bei Block 810 das maschinell lernende Computersystem ein Bild von einer Kamera, die am Handgelenk des Roboters montiert und in Richtung des Robotergreifers (einer In-Hand-Kamera) orientiert ist. In zumindest einer Ausführungsform wird bei Block 812 das Bild unter Verwendung einer trainierten Netzwerks verarbeitet, und wird darüber hinaus eine vorgeschlagene Aktion zum Trainieren des Netzwerks zum Erzeugen eines Q-Scores bereitgestellt. In zumindest einer Ausführungsform bestimmt zumindest teilweise auf dem Q-Score basierend das maschinell lernende Computersystem eine bestimmte Aktion, die die Position des Robotergreifers in Bezug auf das Produzieren eines erfolgreichen Greifens verbessert. In zumindest einer Ausführungsform werden verschiedene Aktionen unter Verwendung das Tray-Netzwerks getestet, um eine Aktion zu bestimmen, die den Q-Score maximieren wird, und wird die entsprechende Aktion von dem Roboter ausgeführt. In zumindest einer Ausführungsform weist bei Block 814 das maschinell lernende Computersystem den Roboter an, die bestimmte Aktion durchzuführen. In zumindest einer Ausführungsform ist die Aktion eine Bewegung eines oder mehrerer Gelenke eines Gelenkroboters. In zumindest einer Ausführungsform ist die Aktion eine Rotation eines oder mehrerer Gelenke eines Gelenkroboters. In zumindest einer Ausführungsform beinhaltet der Satz möglicher Aktionen Kombinationen von Bewegungen oder Rotationen.
  • In zumindest einer Ausführungsform bestimmt bei einem Entscheidungsblock 816 das maschinell lernende Computersystem, ob die Positionierung des Robotergreifers abgeschlossen ist. In zumindest einer Ausführungsform ist die Positionierung des Robotergreifers abgeschlossen, wenn der Q-Score einen Schwellenwert überschreitet. In zumindest einer Ausführungsform kehrt dann, wenn die Positionierung nicht abgeschlossen ist, die Ausführung zu Block 810 zurück, in dem ein neues Bild von der neuen Roboterposition beschafft wird. In zumindest einer Ausführungsform schreitet dann, wenn die Positionierung abgeschlossen ist, die Ausführung zu Block 818 fort und weist das maschinell lernende Computersystem den Roboter an, das Objekt zu greifen. In zumindest einer Ausführungsform kann das maschinell lernende Computersystem den Erfolg oder den Misserfolg des Greifens unter Verwendung von Kraft- und/oder Positionssensoren an dem Greifer auswerten. In zumindest einer Ausführungsform wird der Erfolg oder der Misserfolg des Greifens unter Verwendung der In-Hand-Kamera bestimmt. In zumindest einer Ausführungsform wird der Erfolg oder der Misserfolg des Greifens basierend auf einem Q-Score bestimmt, der nach der Artikulation des Robotergreifers berechnet wird. In zumindest einer Ausführungsform wird dann, wenn der Griff als ein Fehler ermittelt wird, der Roboter in die Vorgreifposition repositioniert und wird ein zusätzlicher Versuch, das Objekt zu greifen, durchgeführt.
  • In zumindest einer Ausführungsform werden ein oder mehrere Prozessoren dazu verwendet, ein maschinell lernendes System zu implementieren. In zumindest einer Ausführungsform können der eine oder die mehreren Prozessoren eine universell einsetzbare CPU, GPU, programmierbare Gatteranordnung, kombinatorische Logik oder Verarbeitungsvorrichtung sein, wie nachstehend beschrieben wird. In zumindest einer Ausführungsform kann das vorstehend beschriebene System an andere Steuerungssysteme angepasst sein, in welchen ein Objekt manipuliert oder ergriffen wird. In zumindest einer Ausführungsform kann beispielsweise das vorstehende System dazu angepasst sein, ein autonomes Fahrzeug zu steuern, bei dem Bilder von einer First-Person-Kamera aufgenommen werden, und dazu verarbeiten, das Fahrzeug auf eine bestimmte Weise zu positionieren. In zumindest einer Ausführungsform kann das vorstehende System dazu angepasst sein, ein autonomes Fahrzeug zu parken, ein Elektrofahrzeug zum Laden genau zu positionieren und eine Palette mit einem Gabelstapler aufzunehmen. In zumindest einer Ausführungsform können die vorstehend beschriebenen Techniken dazu angepasst sein, einen Pick and Place-Roboter zu betreiben, der für die Elektronikmontage verwendet wird. In zumindest einer Ausführungsform ist eine Klaue auf einem Müllwagen montiert, und werden die Klaue und optional der Wagen selbst mit den hierin beschriebenen Techniken dazu gesteuert, den Inhalt eines in einem Behälter befindlichen Abfalls zu greifen, anzuheben und in dem Müllwagen abzulegen.
  • INFERENZ UND TRAININGSLOGIK
  • 9A veranschaulicht Inferenzierungs- und/oder Trainingslogik 915, die dazu verwendet wird, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen verbunden sind. Details zur Inferenzierungs- und/oder Trainingslogik 915 werden nachstehend in Verbindung mit 9A und/oder 9B bereitgestellt.
  • In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, Code- und/oder Datenspeicher 901 zum Speichern von Vorwärts- und/oder Ausgabegewicht und/oder Eingangs-/Ausgangsdaten und/oder anderen Parametern zum Konfigurieren von Neuronen oder Schichten eines neuronalen Netzwerks beinhalten, das zur Inferenzierung in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. In zumindest einer Ausführungsform kann die Trainingslogik 915 Code und/oder Datenspeicher 901 beinhalten oder mit diesem gekoppelt sein, um Grafikcode oder andere Software zum Steuern des Timings und/oder der Reihenfolge zu speichern, in welcher Gewichts- und/oder andere Parameterinformationen zu laden sind, um Logik, einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammen Arithmetikeinheiten (ALUs)) zu konfigurieren. In zumindest einer Ausführungsform lädt Code, wie beispielsweise Grafikcode, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs, basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht. In zumindest einer Ausführungsform speichert der Code- und/oder Datenspeicher 901 Gewichtsparameter und/oder Ein-/Ausgabedaten jeder Schicht eines neuronalen Netzwerks, das in Verbindung mit einer oder mehreren Ausführungsformen während der Vorwärtspropagation von Ein-/Ausgabedaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet wurde. In zumindest einer Ausführungsform kann jeder Abschnitt des Code- und/oder Datenspeichers 901 in anderem On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Caches oder Systemspeichers eines Prozessors, enthalten sein.
  • In zumindest einer Ausführungsform kann jeder beliebige Abschnitt des Code- und/oder Datenspeichers 901 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen sein. In zumindest einer Ausführungsform können Code und/oder der Code und/oder Datenspeicher 901 Cache-Speicher, dynamisches RAM („DRAM“), statisches RAM („SRAM“), nichtflüchtiger Speicher (z.B. Flash-Speicher) oder anderer Speicher sein. In zumindest einer Ausführungsform kann die Wahl, ob Code und/oder der Code und/oder Datenspeicher 901 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash-Speicher oder einem anderen Speichertyp besteht, von auf dem Chip bzw. on-chip gegenüber nicht auf dem Chip bzw. off-chip verfügbarem Speicher, Latenzanforderungen der durchgeführten Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, einen Code- und/oder Datenspeicher 905 beinhalten zum Speichern von Rückwärts- und/oder Ausgangsgewichten und/oder Eingangs-/Ausgangsdaten, die Neuronen oder Schichten eines neuronalen Netzwerks entsprechen, das zur Inferenzierung in Aspekten einer oder mehrerer Ausführungsformen trainiert und/oder verwendet wird. In zumindest einer Ausführungsform speichert der Code- und /oder Datenspeicher 905 Gewichtsparameter und/oder Eingangs-/Ausgangsdaten jeder Schicht eines neuronalen Netzwerks, die in Verbindung mit einer oder mehreren Ausführungsformen während einer Rückwärtspropagation von Eingangs-/Ausgangsdaten und/oder Gewichtsparametern während des Trainings und/oder der Inferenzierung unter Verwendung von Aspekten einer oder mehrerer Ausführungsformen trainiert oder verwendet werden. In zumindest einer Ausführungsform kann die Trainingslogik 915 den Code und/oder Datenspeicher 905 beinhalten oder mit diesem gekoppelt sein, um Grafikcode oder andere Software zum Steuern des Timings und/oder der Reihenfolge zu speichern, in welchem bzw. welcher Gewichts- und/oder andere Parameterinformationen zum Konfigurieren von Logik einschließlich Ganzzahl- und/oder Gleitkommaeinheiten (zusammen Arithmetikeinheiten (ALUs)) zu laden sind. In zumindest einer Ausführungsform lädt Code, wie beispielsweise Grafikcode, basierend auf einer Architektur eines neuronalen Netzwerks, dem der Code entspricht, Gewichts- oder andere Parameterinformationen in Prozessor-ALUs. In zumindest einer Ausführungsform kann jeder beliebige Abschnitt des Code- und/oder Datenspeichers 905 mit anderem On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, verbunden sein. In zumindest einer Ausführungsform kann jeder beliebige Abschnitt des Code- und/oder Datenspeichers 905 intern oder extern zu einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen sein. In zumindest einer Ausführungsform kann der Code- und/oder Datenspeicher 905 Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder anderer Speicher sein. In zumindest einer Ausführungsform kann die Wahl, ob der Code- und/oder Datenspeicher 905 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash-Speicher oder einem anderen Speichertyp besteht, von On-Chip gegenüber Off-Chip verfügbarem Speicher, Latenzanforderungen an durchgeführten Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendeten Daten oder einer Kombination dieser Faktoren abhängen.
  • In zumindest einer Ausführungsform können der Code und/oder Datenspeicher 901 und der Code und/oder Datenspeicher 905 separate Speicherstrukturen sein. In zumindest einer Ausführungsform können der Code und/oder Datenspeicher 901 und der Code und/oder Datenspeicher 905 eine gleiche Speicherstruktur sein. In zumindest einer Ausführungsform können der Code und/oder Datenspeicher 901 und der Code und/oder Datenspeicher 905 teilweise eine gleiche Speicherstruktur und teilweise separate Speicherstrukturen sein. In zumindest einer Ausführungsform kann jeder beliebige Abschnitt des Code- und/oder Datenspeichers 901 und des Code- und/oder Datenspeichers 905 mit anderen On-Chip- oder Off-Chip-Datenspeichern, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, kombiniert sein.
  • In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, eine oder mehrere arithmetische Logikeinheiten („ALU(s)“) 910 , einschließlich Ganzzahl- und/oder Gleitkommaeinheiten, beinhalten, um logische und/oder mathematische Operationen durchzuführen, die zumindest teilweise auf Trainings- und/oder Inferenzcode (beispielsweise Grafikcode) basieren oder durch diesen angezeigt werden, deren Ergebnis Aktivierungen (z.B. Ausgangswerte von Schichten oder Neuronen innerhalb eines neuronalen Netzwerks), die in einem Aktivierungsspeicher 920 gespeichert sind, erzeugen kann, die Funktionen von Eingangs-/Ausgangs- und/oder Gewichtsparameterdaten sind, die in dem Code und/oder Datenspeicher 901 und/oder dem Code und/oder Datenspeicher 905 gespeichert sind. In zumindest einer Ausführungsform werden in dem Aktivierungsspeicher 920 gespeicherte Aktivierungen in Übereinstimmung mit linearer algebraischer und/oder matrixbasierter Mathematik erzeugt, die von den ALU(s) 910 im Ansprechen auf das Ausführen von Anweisungen oder anderem Code durchgeführt wird, wobei Gewichtswerte, die in dem Code und/oder Datenspeicher 905 und/oder dem Datenspeicher 905 sind, und/oder Daten 901 als Operanden zusammen mit anderen Werten, wie beispielsweise Biaswerten, Gradienteninformationen, Impulswerten oder anderen Parametern oder Hyperparametern, verwendet werden, von welchen beliebige oder alle in dem Code und/oder Datenspeicher 905 oder dem Code und/oder Code und/oder Datenspeicher 901 oder einem anderen Speicher auf oder außerhalb des Chips gespeichert sein können.
  • In zumindest einer Ausführungsform ist bzw. sind die ALU(s) 910 in einem oder mehreren Prozessoren oder anderen Hardware-Logikvorrichtungen oder Schaltungen enthalten, während in einer anderen Ausführungsform die ALU(s) 910 extern zu einem Prozessor oder einer anderen Hardware-Logikvorrichtung oder Schaltung, die sie verwendet (z.B. einem Co-Prozessor), sein kann bzw. können. In zumindest einer Ausführungsform können ALUs 910 in die Ausführungseinheiten eines Prozessors oder anderweitig in eine Bank von ALUs, auf die die Ausführungseinheiten eines Prozessors entweder innerhalb desselben Prozessors oder verteilt auf verschiedene Prozessoren unterschiedlicher Art (z.B. Zentraleinheiten, Grafikverarbeitungseinheiten, Festfunktionseinheiten usw.) zugreifen können, aufgenommen sein. In zumindest einer Ausführungsform können sich der Datenspeicher 901, der Code- und/oder Datenspeicher 905 und der Aktivierungsspeicher 920 auf demselben Prozessor oder einer anderen Hardware-Logikvorrichtung oder -schaltung befinden, während sie in einer anderen Ausführungsform in verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen oder irgendeiner Kombination aus gleichen und verschiedenen Prozessoren oder anderen Hardware-Logikvorrichtungen oder -schaltungen angeordnet sein können. In zumindest einer Ausführungsform kann ein beliebiger Abschnitt des Aktivierungsspeichers 920 mit einem anderen On-Chip- oder Off-Chip-Datenspeicher, einschließlich des L1-, L2- oder L3-Cache oder Systemspeichers eines Prozessors, verbunden sein. Ferner kann Inferenzierungs- und/oder Trainingscode mit anderem Code gespeichert sein, der einem Prozessor oder einer anderen Hardware-Logik oder -Schaltung zugänglich ist, und unter Verwendung der Hol-, Decodier-, Planungs-, Ausführungs-, Stilllegungs- und/oder anderen logischen Schaltungen eines Prozessors abgerufen und/oder verarbeitet werden.
  • In zumindest einer Ausführungsform kann der Aktivierungsspeicher 920 ein Cache-Speicher, DRAM, SRAM, nichtflüchtiger Speicher (z.B. Flash-Speicher) oder anderer Speicher sein. In zumindest einer Ausführungsform kann der Aktivierungsspeicher 920 ganz oder teilweise innerhalb oder außerhalb eines oder mehrerer Prozessoren oder anderer logischer Schaltungen liegen. In zumindest einer Ausführungsform kann die Wahl, ob der Aktivierungsspeicher 920 beispielsweise intern oder extern zu einem Prozessor ist oder aus DRAM, SRAM, Flash-Speicher oder einem anderen Speichertyp besteht, von on-chip gegenüber off-chip verfügbarem Speicher, Latenzanforderungen an die durchzuführenden Trainings- und/oder Inferenzierungsfunktionen, der Losgröße der Daten, die bei der Inferenzierung und/oder dem Training eines neuronalen Netzwerks verwendet werden, oder einer Kombination dieser Faktoren abhängen. In zumindest einer Ausführungsform kann die in 9A dargestellte Inferenzierungs- und/oder Trainingslogik 915 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung („ASIC“), wie beispielsweise der Tensorflow®-Verarbeitungseinheit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“)-Prozessor der Intel Corp. verwendet werden. In zumindest einer Ausführungsform, kann die in 9A dargestellte Inferenzierungs- und/oder Trainingslogik 915 in Verbindung mit Hardware der Zentralverarbeitungseinheit („CPU“), Hardware der Grafikverarbeitungseinheit („GPU“) oder anderer Hardware, wie beispielsweise feldprogrammierbaren Gate-Arrays („FPGAs“), verwendet werden.
  • 9B veranschaulicht die Inferenzierungs- und/oder Trainingslogik 915 gemäß zumindest einer unterschiedlichen Ausführungsform. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, Hardwarelogik beinhalten, in welcher Rechenressourcen dediziert oder anderweitig exklusiv in Verbindung mit Gewichtswerten oder anderen Informationen, die einer oder mehreren Schichten von Neuronen innerhalb eines neuronalen Netzwerks entsprechen, verwendet werden. In zumindest einer Ausführungsform kann die in 9B dargestellte Inferenzierungs- und/oder Trainingslogik 915 in Verbindung mit einer anwendungsspezifischen integrierten Schaltung (ASIC), wie beispielsweise der Tensorflow®-Verarbeitungseinheit von Google, einer Inferenzverarbeitungseinheit (IPU) von Graphcore™ oder einem Nervana® (z.B. „Lake Crest“)-Prozessor der Intel Corp. verwendet werden. In zumindest einer Ausführungsform kann die in 9B dargestellte Inferenzierungs- und/oder Trainingslogik 915 in Verbindung mit Hardware der Zentralverarbeitungseinheit (CPU), Hardware der Grafikverarbeitungseinheit (GPU) oder anderer Hardware, wie beispielsweise feldprogammierbaren Gate Arrays (FPGAs), verwendet werden. In zumindest einer Ausführungsform beinhaltet die Inferenzierungs- und/oder Trainingslogik 915, ohne darauf beschränkt zu sein, den Code- und/oder Datenspeicher 901 und den Code- und/oder Datenspeicher 905, die zum Speichern von Code (z.B. Grafikcode), Gewichtswerten und/oder anderen Informationen, einschließlich Biaswerten, Gradienteninformationen, Impulswerten und/oder anderen Parameter- oder Hyperparameter-Informationen, verwendet werden können. In zumindest einer Ausführungsform, die in 9B dargestellt ist, ist jeder des Code- und/oder Datenspeichers 901 und des Code- und/oder Datenspeichers 905 einer dedizierten Rechenressource zugeordnet, wie beispielsweise jeweils jeder von Rechenhardware 902 und Rechenhardware 906. In zumindest einer Ausführungsform umfasst jede der Rechenhardware 902 und der Rechenhardware 906 eine oder mehrere ALUs, die mathematische Funktionen, wie beispielsweise lineare algebraische Funktionen, nur auf Informationen durchführen, die in dem Code und/oder Datenspeicher 901 bzw. dem Code und/oder Datenspeicher 905 gespeichert sind, deren Ergebnis in dem Aktivierungsspeicher 920 gespeichert wird.
  • In zumindest einer Ausführungsform entsprechen jeder des Code und/oder Datenspeichers 901 und 905 und entsprechende Rechenhardware 902 und 906 jeweils verschiedenen Schichten eines neuronalen Netzwerks, so dass eine aus einem „Speicher/Rechenpaar 901/902“ des Code und/oder Datenspeichers 901 und der Rechenhardware 902 resultierende Aktivierung als ein Input in das nächste „Speicher/Rechenpaar 905/906“ des Code und/oder Datenspeichers 905 und der Rechenhardware 906 bereitgestellt wird, um die konzeptionelle Organisation eines neuronalen Netzwerks zu spiegeln. In zumindest einer Ausführungsform kann jedes der Speicher-/Rechenpaare 901/902 und 905/906 mehr als einer neuronalen Netzwerkschicht entsprechen, In zumindest einer Ausführungsform können zusätzliche Speicher/Berechnungspaare (nicht gezeigt) nach oder parallel zu den Speicher-/Rechenpaaren 901/902 und 905/906 in die Inferenzierungs- und/oder Trainingslogik 915 aufgenommen sein.
  • TRAINING UND EINSATZ EINES NEURONALEN NETZWERKS
  • 10 veranschaulicht das Training und den Einsatz eines tiefen neuronalen Netzwerks gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform wird ein untrainiertes neuronales Netzwerk 91006 unter Verwendung eines Trainingsdatensatzes 1002 trainiert. In zumindest einer Ausführungsform ist das Trainings-Framework 1004 ein PyTorch-Framework, während in anderen Ausführungsformen das Trainings-Framework 1004 ein Tensorflow-, Boost-, Caffe-, Microsoft Cognitive Toolkit/CNTK-, MXNet-, Chainer-, Keras-, Deeplearning4j- oder ein anderes Trainings-Framework ist. In zumindest einer Ausführungsform trainiert das Trainings-Rahmenwerk 1004 ein untrainiertes neuronales Netzwerk 1006 und ermöglicht dessen Training unter Verwendung von hierin beschriebenen Verarbeitungsressourcen, um ein trainiertes neuronales Netzwerk 1008 zu erzeugen. In zumindest einer Ausführungsform können Gewichte zufällig oder durch Vortraining unter Verwendung eines Netzwerks tiefen Glaubens ausgewählt werden. In zumindest einer Ausführungsform kann das Training entweder in einer überwachten, teilweise überwachten oder unbeaufsichtigten Weise durchgeführt werden.
  • In zumindest einer Ausführungsform wird das untrainierte neuronale Netzwerk 1006 unter Verwendung von überwachtem Lernen trainiert, wobei der Trainingsdatensatz 1002 eine Eingabe bzw. einen Input beinhaltet, der mit einer gewünschten Ausgabe bzw. einem gewünschten Output für einen Input gepaart ist, oder wobei der Trainingsdatensatz 1002 einen Input mit einem bekannten Output beinhaltet und ein Ausgang des neuronalen Netzwerks 1006 manuell abgestuft wird. In zumindest einer Ausführungsform wird das untrainierte neuronale Netzwerk 1006 in überwachter Weise trainiert und verarbeitet Eingaben aus dem Trainingsdatensatz 1002 und vergleicht resultierende Ausgaben gegen einen Satz von erwarteten oder gewünschten Ausgaben. In zumindest einer Ausführungsform werden dann Fehler durch das untrainierte neuronales Netzwerk 1006 zurückpropagiert. In zumindest einer Ausführungsform passt das Trainings-Framework 1004 Gewichte an, die das untrainierte neuronale Netzwerk 1006 steuern. In zumindest einer Ausführungsform beinhaltet das Trainings-Framework 1004 Werkzeuge zum Überwachen, wie gut das untrainierte neuronale Netzwerk 1006 in Richtung eines Modells konvergiert, wie beispielsweise das trainierte neuronale Netzwerk 1008, das geeignet ist, korrekte Antworten, wie beispielsweise in dem Ergebnis 1014, basierend auf bekannten Eingangsdaten, wie beispielsweise neuen Daten 1012, zu erzeugen. In zumindest einer Ausführungsform trainiert das Trainings-Framework 1004 das untrainierte neuronale Netzwerk 1006 wiederholt, während Gewichte angepasst werden, um eine Ausgabe des untrainierten neuronalen Netzwerks 1006 unter Verwendung einer Verlustfunktion und eines Anpassungsalgorithmus, wie beispielsweise des stochastischen Gradientenabstiegs, zu verfeinern. In zumindest einer Ausführungsform trainiert das Trainings-Framework 1004 das untrainierte neuronale Netzwerk 1006, bis das untrainierte neuronale Netzwerk 1006 die gewünschte Genauigkeit erreicht. In zumindest einer Ausführungsform kann das trainierte neuronale Netzwerk 1008 dann dazu eingesetzt werden, eine beliebige Anzahl von Operationen des maschinellen Lernens durchzuführen.
  • In zumindest einer Ausführungsform wird das untrainierte neuronale Netzwerk 1006 unter Verwendung unbeaufsichtigten Lernens trainiert, wobei das untrainierte neuronale Netzwerk 1006 versucht, sich selbst unter Verwendung von unmarkierten Daten zu trainieren. In zumindest einer Ausführungsform wird der Trainingsdatensatz für unbeaufsichtigtes Lernen 1002 Eingangsdaten ohne zugehörige Ausgangsdaten oder Referenz- bzw. „Ground Truth“-Daten beinhalten. In zumindest einer Ausführungsform kann das untrainierte neuronale Netzwerk 1006 Gruppierungen innerhalb des Trainingsdatensatzes 1002 lernen, und kann bestimmen, wie einzelne Eingaben mit dem untrainierten Datensatz 1002 in Beziehung stehen. In zumindest einer Ausführungsform kann unbeaufsichtigtes Training dazu verwendet werden, eine selbstorganisierende Karte zu generieren, welche eine Art trainiertes neuronales Netzwerk 1008 ist, das in der Lage ist, Operationen durchzuführen, die bei der Reduzierung der Dimensionalität neuer Daten 1012 nützlich sind. In zumindest einer Ausführungsform kann das unbeaufsichtigte Training auch zur Durchführung einer Anomalieerkennung verwendet werden, welche die Identifizierung von Datenpunkten, die von den normalen Mustern eines neuen Datensatzes 1012 abweichen, in dem neuen Datensatz 1012 ermöglicht,.
  • In zumindest einer Ausführungsform kann semi-überwachtes Lernen dazu verwendet werden, welches eine Technik ist, bei welcher der Trainingsdatensatz 1002 eine Mischung aus markierten und unmarkierten Daten beinhaltet. In zumindest einer Ausführungsform kann das Trainings-Framework 1004 dazu verwendet werden, inkrementelles Lernen durchzuführen, wie beispielsweise durch übertragene Lerntechniken. In zumindest einer Ausführungsform ermöglicht das inkrementelle Lernen dem trainierten neuronalen Netzwerk 1008, sich an neue Daten 1012 anzupassen, ohne das Wissen zu vergessen, das während des anfänglichen Trainings in das Netzwerk eingebracht wurde.
  • DATENZENTRUM
  • 11 veranschaulicht ein beispielhaftes das Rechenzentrum 1100, in welchem zumindest eine Ausführungsform verwendet werden kann. In zumindest einer Ausführungsform beinhaltet das Rechenzentrum 1100 eine Rechenzentrum-Infrastrukturschicht 1110, eine Framework-Schicht 1120, eine Softwareschicht 1130 und eine Anwendungsschicht 1140.
  • In zumindest einer Ausführungsform, wie in 11 dargestellt, kann die Rechenzentrum-Infrastrukturschicht 1110 einen Ressourcenorchestrator 1112, gruppierte Rechenressourcen 1114 und Knotenrechenressourcen („Knoten-C.R.“) 1116(1) - 1116(N) beinhalten, wobei „N“ eine ganze, positive Ganzzahl repräsentiert. In zumindest einer Ausführungsform können die Knoten-C.R.s 1116(1) - 1116(N) eine beliebige Anzahl von zentralen Verarbeitungseinheiten („CPUs“) oder anderen Prozessoren (einschließlich Beschleunigern, feldprogrammierbaren Gate-Arrays (FPGAs), Grafikprozessoren usw.), Speichervorrichtungen (z.B. dynamischer Nur-Lese-Speicher), Speichervorrichtungen (z.B. Solid-State- oder Festplattenlaufwerke), Netzwerk-Eingabe-/Ausgabe („NW I/O“)-Vorrichtungen, Netzwerk-Switches, virtuelle Maschinen („VMs“), Leistungsmodule und Kühlmodule, usw. beinhalten. In zumindest einer Ausführungsform können ein oder mehrere Knoten-C.R.s aus den Knoten-C.R.s 1116(1) - 1116(N) ein Server mit einer oder mehreren der vorstehend genannten Rechenressourcen sein.
  • In zumindest einer Ausführungsform können gruppierte Rechenressourcen 1114 separate Gruppierungen von Knoten-C.R.s. beinhalten, die in einem oder mehreren Racks (nicht gezeigt) untergebracht sind, oder in vielen Racks, die in Rechenzentren an verschiedenen geografischen Standorten untergebracht sind (ebenfalls nicht gezeigt). Separate Gruppierungen von Knoten-C.R.s. innerhalb gruppierter Rechenressourcen 1114 können gruppierte Rechen-, Netzwerk-, Speicher- oder Ablageressourcen beinhalten, die dazu konfiguriert oder zugewiesen sein können, eine oder mehrere Arbeitslasten bzw. Workloads zu unterstützen. In zumindest einer Ausführungsform können mehrere Knoten-C.R.s einschließlich CPUs oder Prozessoren innerhalb eines oder mehrerer Racks gruppiert sein, um Rechenressourcen zur Unterstützung einer oder mehrerer Arbeitslasten bereitzustellen. In zumindest einer Ausführungsform können ein oder mehrere Racks auch eine beliebige Anzahl von Leistungsmodulen, Kühlmodulen und Netzwerk-Switches in beliebiger Kombination beinhalten.
  • In zumindest einer Ausführungsform kann der Ressourcenorchestrator 1112 eine oder mehrere Knoten-C.R.s 1116(1) - 1116(N) und/oder gruppierte Rechenressourcen 1114 konfigurieren oder anderweitig steuern. In zumindest einer Ausführungsform kann der Ressourcenorchestrator 1112 eine Software-Design-Infrastruktur („SDI“)-Verwaltungseinheit für das Rechenzentrum 1100 beinhalten. In zumindest einer Ausführungsform kann der Ressourcenorchestrator Hardware, Software oder eine Kombination davon beinhalten.
  • In zumindest einer Ausführungsform, wie in 11 gezeigt, beinhaltet die Framework-Schicht 1120 einen Job-Scheduler 1132, einen Konfigurationsverwalter 1134, einen Ressourcenverwalter 1136 und ein verteiltes Dateisystem 1138. In zumindest einer Ausführungsform kann die Framework-Schicht 1120 ein Framework zur Unterstützung der Software 1132 der Softwareschicht 1130 und/oder einer oder mehrerer Anwendungen 1142 der Anwendungsschicht 1140 beinhalten. In zumindest einer Ausführungsform kann die Software 1132 oder können die Anwendung(en) 1142 jeweils webbasierte Dienstsoftware oder Anwendungen beinhalten, wie beispielsweise diejenigen, die von Amazon Web Services, Google Cloud und Microsoft Azure bereitgestellt werden. In zumindest einer Ausführungsform kann, ohne darauf beschränkt zu sein, die Framework-Schicht 1120 eine Art Framework für eine freie und quelloffene Software-Webanwendung wie beispielsweise Apache Spark™ (nachfolgend als „Spark“ bezeichnet) sein, das das verteilte Dateisystem 1138 für eine groß angelegte Datenverarbeitung (z.B. „big data“) nutzen kann. In zumindest einer Ausführungsform kann der Job-Scheduler 1132 einen Spark-Treiber beinhalten, um die Planung von Arbeitslasten zu erleichtern, die von verschiedenen Schichten des Rechenzentrums 1100 unterstützt werden. In zumindest einer Ausführungsform kann der Konfigurationsverwalter 1134 in der Lage sein, verschiedene Schichten wie beispielsweise die Softwareschicht 1130 und die Framework-Schicht 1120 einschließlich Spark und des verteilten Dateisystems 1138 zur Unterstützung der groß angelegten Datenverarbeitung zu konfigurieren. In zumindest einer Ausführungsform kann der Ressourcenverwalter 1136 in der Lage sein, geclusterte oder gruppierte Rechenressourcen zu verwalten, die zur Unterstützung des verteilten Dateisystems 1138 und des Job-Schedulers 1132 gemappt oder allokiert sind. In zumindest einer Ausführungsform können geclusterte oder gruppierte Rechenressourcen die gruppierte Rechenressource 1114 auf der Rechenzentrum-Infrastrukturschicht 1110 beinhalten. In zumindest einer Ausführungsform kann sich der Ressourcenverwalter 1136 mit dem Ressourcenorchestrator 1112 koordinieren, um diese gemappten oder allokierten Rechenressourcen zu verwalten.
  • In zumindest einer Ausführungsform kann die in der Softwareschicht 1130 enthaltene Software 1132 Software, die von zumindest Teilen der Knoten-C.R.s 1116(1) - 1116(N) verwendet wird, gruppierte Rechenressourcen 1114 und/oder das verteilte Dateisystem 1138 der Framework-Schicht 1120 beinhalten. Eine oder mehrere Arten von Software können, ohne darauf beschränkt zu sein, Internet-Webseiten-Suchsoftware, E-Mail-Virenscanner-Software, Datenbanksoftware und Videoinhalt-Streamingsoftware beinhalten.
  • In zumindest einer Ausführungsform kann bzw. können die in der Anwendungsschicht 1140 enthaltenen Anwendung(en) 1142 eine oder mehrere Arten von Anwendungen, die von zumindest Teilen der Knotens-C.R.s 1116(1) - 1116(N) verwendet werden, gruppierte Rechenressourcen 1114 und/oder das verteilte Dateisystem 1138 der Framework-Schicht 1120 beinhalten. Eine oder mehrere Arten von Anwendungen können, ohne darauf beschränkt zu sein, eine beliebige Anzahl von genomischen Anwendungen, ein kognitives Berechnen und Anwendungen maschinellen Lernens, einschließlich Trainings- oder Inferenzsoftware, Framework-Software für maschinelles Lernen (z.B. PyTorch, TensorFlow, Caffe, usw.) oder andere Anwendungen maschinellen Lernens, beinhalten, die in Verbindung mit einer oder mehreren Ausführungsformen verwendet werden.
  • In zumindest einer Ausführungsform kann jeder des Konfigurationsverwalters 1134, des Ressourcenverwalters 1136 und des Ressourcenorchestrators 1112, basierend auf einer beliebigen Menge und der Art von Daten, die in beliebig technisch machbarer Weise erfasst wurden, eine beliebige Anzahl und Art von selbstmodifizierenden Aktionen implementieren. In zumindest einer Ausführungsform können selbstmodifizierende Aktionen einen Betreiber des Rechenzentrums 1100 davon befreien, möglicherweise schlechte Konfigurationsentscheidungen zu treffen und möglicherweise ungenutzte und/oder schlecht funktionierende Abschnitte eines Rechenzentrums zu vermeiden.
  • In zumindest einer Ausführungsform kann das Rechenzentrum 1100 Werkzeuge, Dienste, Software oder andere Ressourcen beinhalten, um ein oder mehrere Modelle maschinellen Lernens zu trainieren oder Informationen unter Verwendung eines oder mehrerer Modelle maschinellen Lernens vorherzusagen oder abzuleiten, gemäß einer oder mehrerer hierin beschriebener Ausführungsformen. Beispielsweise kann in zumindest einer Ausführungsform ein Modell maschinellen Lernens trainiert werden, indem Gewichtsparameter gemäß einer neuronalen Netzwerkarchitektur unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 1100 beschriebenen Software und Rechenressourcen berechnet werden. In zumindest einer Ausführungsform können trainierte Modelle maschinellen Lernens, die einem oder mehreren neuronalen Netzwerken entsprechen, dazu verwendet werden, Informationen unter Verwendung der vorstehend in Bezug auf das Rechenzentrum 1100 beschriebenen Ressourcen unter Verwendung von Gewichtsparametern, die durch eine oder mehrere der hierin beschriebenen Trainingstechniken berechnet wurden, abzuleiten oder vorherzusagen.
  • In zumindest einer Ausführungsform kann das Rechenzentrum CPUs, anwendungsspezifische integrierte Schaltungen (ASICs), GPUs, FPGAs oder andere Hardware verwenden, um ein Training und/oder Inferenzieren unter Verwendung der vorstehend beschriebenen Ressourcen durchzuführen. Außerdem können eine oder mehrere der vorstehend beschriebenen Soft- und/oder Hardware-Ressourcen als ein Dienst konfiguriert sein, der es Benutzern erlaubt, Informationen, wie beispielsweise Bilderkennung, Spracherkennung oder andere Dienste künstlicher Intelligenz, zu trainieren oder eine Inferenzierung derselben durchzuführen.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einem oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenzierungs- und/oder Trainingslogik 915 werden hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann in dem System von 11 die Inferenzierungs- und/oder Trainingslogik 915 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In zumindest einer Ausführungsform kann das vorstehend beschriebene System für maschinelles Lernen dazu verwendet werden, einen Roboter dazu zu steuern, ein Greifen eines Objekts durchzuführen. In zumindest einer Ausführungsform werden Bilder, die von einer In-Hand-Kamera abgerufen wurden, dem vorstehenden System für maschinelles Lernen bereitgestellt, und identifiziert das System für maschinelles Lernen eine Aktion, die den Roboter für eine erfolgreiche Greifpose positionieren wird.
  • Autonomes Fahrzeug
  • 12A veranschaulicht ein Beispiel eines autonomen Fahrzeugs 1200 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann das autonome Fahrzeug 1200 (alternativ hierin als „Fahrzeug 1200“ bezeichnet), ohne darauf beschränkt zu sein, ein Personenkraftwagen sein, wie beispielsweise ein Pkw, ein Lastwagen, ein Bus und/oder ein anderer Fahrzeugtyp, der einen oder mehrere Passagiere aufnimmt. In zumindest einer Ausführungsform kann das Fahrzeug 1200 ein Sattelzugmaschine sein, die zum Befördern von Gütern verwendet wird. In zumindest einer Ausführungsform kann das Fahrzeug 1200 ein Flugzeug, ein Roboterfahrzeug oder eine andere Art von Fahrzeug sein.
  • Autonome Fahrzeuge können in Bezug auf Automatisierungsgrade beschrieben werden, die von der National Highway Traffic Safety Administration („NHTSA“), einer Abteilung des US Department of Transportation, und der Society of Automotive Engineers („SAE“) in „Taxonomy and Definitions for Terms Related to Driving Automation Systems for On-Road Motor Vehicles“ definiert wird (z.B. Norm Nr. J3016-201806, veröffentlicht am 15. Juni 2018, Norm Nr. J3016-201609, veröffentlicht am 30. September 2016, und frühere und zukünftige Versionen dieser Normen). In einer oder mehreren Ausführungsformen kann das Fahrzeug 1200 zu Funktionalität gemäß einer oder mehreren der Stufen 1 - 5 autonomer Fahrstufen bzw. „driving levels“ fähig sein. Beispielsweise kann das Fahrzeug 1200 in zumindest einer Ausführungsform je nach Ausführungsform in der Lage sein, eine bedingte Automatisierung (Stufe bzw. Level 3), eine hohe Automatisierung (Level 4) und/oder eine vollständige Automatisierung (Level 5) durchzuführen.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200, ohne darauf beschränkt zu sein, Komponenten wie beispielsweise ein Fahrgestell, eine Fahrzeugkarosserie, Räder (z.B. 2, 4, 6, 8, 18 usw.), Reifen, Achsen und andere Komponenten eines Fahrzeugs beinhalten. In zumindest einer Ausführungsform kann das Fahrzeug 1200, ohne darauf beschränkt zu sein, ein Antriebssystem 1250 beinhalten, wie beispielsweise einen Verbrennungs-Engine, ein hybridelektrisches Triebwerk, einen vollelektrischen Motor und/oder einen anderen Antriebssystemtyp. In zumindest einer Ausführungsform kann das Antriebssystem 1250 mit einem Antriebsstrang des Fahrzeugs 1200 verbunden sein, der, ohne darauf beschränkt zu sein, ein Getriebe beinhalten kann, um den Antrieb des Fahrzeugs 1200 zu ermöglichen. In zumindest einer Ausführungsform kann das Antriebssystem 1250 im Ansprechen auf den Empfang von Signalen von einer oder mehreren Drosselklappen/Beschleunigern 1252 gesteuert werden.
  • In zumindest einer Ausführungsform wird ein Lenksystem 1254, das, ohne darauf beschränkt zu sein, ein Lenkrad beinhalten kann, dazu verwendet, ein Fahrzeug 1200 (z.B. entlang eines gewünschten Wegs oder einer gewünschten Route) zu steuern, wenn ein Antriebssystem 1250 in Betrieb ist (z.B. wenn das Fahrzeug in Bewegung ist). In zumindest einer Ausführungsform kann ein Lenksystem 1254 Signale von einem bzw. mehreren Lenkstellglied(ern) 1256 empfangen. Das Lenkrad kann für vollautomatisierte (Level 5) Funktionalität optional sein. In zumindest einer Ausführungsform kann ein Bremssensorsystem 1246 dazu verwendet werden, Fahrzeugbremsen im Ansprechen auf den Empfang von Signalen von Bremszylindern 1248 und/oder Bremssensoren zu betätigen.
  • In zumindest einer Ausführungsform stellen eine oder mehrere Controller bzw. Steuereinrichtung(en) 1236, die, ohne darauf beschränkt zu sein, ein oder mehrere Systeme auf Chips („SoCs“) (in 12A nicht gezeigt) und/oder Grafikverarbeitungseinheiten („GPU(s)“) beinhalten kann (können), Signale (z.B. repräsentativ für Befehle) an eine oder mehrere Komponenten und/oder Systeme des Fahrzeugs 1200 bereit. Beispielsweise kann (können) in zumindest einer Ausführungsform die Steuereinrichtung(en) 1236 Signale zum Betätigen von Fahrzeugbremsen über die Bremsstellglieder 1248, zum Betätigen des Lenksystems 1254 über das bzw. die Lenkstellglied(er) 1256, zum Betätigen des Antriebssystems 1250 über die Drosselklappe(n)/Beschleuniger 1252 senden. Die Steuereinrichtung(en) 1236 können eine oder mehrere eingebaute (z.B. integrierte) Rechenvorrichtungen (z.B. Supercomputer) beinhalten, die Sensorsignale verarbeiten, und Betriebsbefehle (z.B. Signale, die Befehle repräsentieren) ausgeben, um autonomes Fahren zu ermöglichen und/oder einen menschlichen Fahrer beim Fahren des Fahrzeugs 1200 zu unterstützen. In zumindest einer Ausführungsform können die Steuereinrichtung(en) 1236 eine erste Steuereinrichtung 1236 für autonome Fahrfunktionen, eine zweite Steuereinrichtung 1236 für funktionale Sicherheitsfunktionen, eine dritte Steuereinrichtung 1236 für Funktionalität künstlicher Intelligenz (z.B. Computervision), eine vierte Steuereinrichtung 1236 für Infotainment-Funktionalität, eine fünfte Steuereinrichtung 1236 für Redundanz bei Notfällen und/oder andere Steuereinrichtungen beinhalten. In zumindest einer Ausführungsform kann eine einzelne Steuereinrichtung 1236 zwei oder mehr der vorstehend genannten Funktionalitäten handhaben, können zwei oder mehr Steuereinrichtungen 1236 eine einzelne Funktionalität handhaben, und/oder eine beliebige Kombination davon.
  • In zumindest einer Ausführungsform stellen die Steuereinrichtung(en) 1236 Signale zum Steuern einer oder mehrerer Komponenten und/oder Systeme des Fahrzeugs 1200 im Ansprechen auf Sensordaten bereit, die von einem oder mehreren Sensoren (z.B. Sensoreingänge) empfangen werden. In zumindest einer Ausführungsform können, ohne darauf beschränkt zu sein, Sensordaten beispielsweise von einem oder mehreren Sensoren 1258 von globalen Navigationssatellitensystemen („GNSS“) (z.B. Global Positioning SystemSensoren), einem oder mehreren RADAR Sensor(en) 1260, einem oder mehreren Ultraschallsensor(en) 1262, einem oder mehreren LIDAR Sensor(en) 1264, von einem oder mehreren Trägheitsmesseinheits („IMU“)-Sensor(en) 1266 (z.B. Beschleunigungssensor(en), Gyroskop(e), Magnetkompass(e), Magnetometer(e), usw.), von einem oder mehreren Mikrofon(en) 1296, von einer oder mehreren Stereokamera(as) 1268, von einer oder mehreren Weitwinkelkamera(s) 1270 (z.B. Fisheye-Kameras), von einer oder mehreren Infrarotkamera(s) 1272, von einer oder mehreren Surround-Kamera(s) 1274 (z.B. 360-Grad-Kameras), von einer oder mehreren Fernbereichkameras (in 12A nicht gezeigt), von einer oder mehreren Mittelbereichskamera(s) (in 12A nicht gezeigt), von einem oder mehreren Geschwindigkeitssensor(en) 1244 (z.B. zur Messung der Geschwindigkeit des Fahrzeugs 1200), einem oder mehreren Schwingungssensor(en) 1242, einem oder mehreren Lenksensor(en) 1240, einem oder mehreren Bremssensor(en) (z.B. als Teil des Bremssensorsystems 1246) und/oder anderen Sensortypen empfangen werden.
  • In zumindest einer Ausführungsform kann eine oder mehrere der Steuereinrichtung(en) 1236 Inputs (repräsentiert durch z.B. Eingangsdaten) von einem Kombiinstrument 1232 des Fahrzeugs 1200 empfangen und Ausgaben (repräsentiert durch z.B. durch Ausgangsdaten, Anzeigedaten usw.) über eine Mensch-Maschine-Schnittstellen („HMI“)-Anzeige 1234, einen akustischen Signalgeber, einen Lautsprecher und/oder über andere Komponenten des Fahrzeugs 1200 bereitstellen. In zumindest einer Ausführungsform können die Ausgaben Informationen beinhalten, wie beispielsweise die Fahrzeuggeschwindigkeit, die Geschwindigkeit, die Zeit, Kartendaten (z.B. eine hochauflösende Karte (in 12A nicht gezeigt), Standortdaten (z.B. den Fahrzeugstandort des Fahrzeugs 1200, z.B. auf einer Karte), eine Richtung, einen Standort anderer Fahrzeuge (z.B. ein Belegungsraster), Informationen über Objekte und den Status von Objekten, wie sie von der bzw. den Steuereinrichtung(en) 1236 wahrgenommen werden, usw.. Beispielsweise kann in zumindest einer Ausführungsform ein HMI-Display 1234 Informationen über das Vorhandensein eines oder mehrerer Objekte (z.B. ein Straßenschild, ein Warnschild, ein Ampellichtwechsel usw.) und/oder Informationen über Fahrmanöver, die das Fahrzeug durchgeführt hat, gerade durchführt oder durchführen wird (z.B. jetzt die Fahrspur wechseln, Ausfahrt 34B in zwei Meilen nehmen, usw.)., anzeigen
  • In zumindest einer Ausführungsform beinhaltet das Fahrzeug 1200 ferner eine Netzwerkschnittstelle 1224, welche eine bzw. mehrere drahtlose Antenne(n) 1226 und/oder ein bzw. mehrere Modem(s) zur Kommunikation über ein oder mehrere Netzwerke verwenden kann. Beispielsweise kann in zumindest einer Ausführungsform die Netzwerkschnittstelle 1224 in der Lage sein, ü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. zu kommunizieren. In zumindest einer Ausführungsform kann bzw. können drahtlose Antenne(n) 1226 auch eine Kommunikation zwischen Objekten in der Umgebung (z.B. Fahrzeugen, mobile Geräte usw.) unter Verwendung eines oder mehrerer lokaler Netzwerke wie beispielsweise Bluetooth, Bluetooth Low Energy („LE“), Z-Wave, ZigBee usw. und/oder Fernbereich-Netzwerken mit geringer Leistung („LPWANs“) wie beispielsweise LoRaWAN, SigFox usw. ermöglichen.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen verbunden sind. Einzelheiten zur Inferenzierungs- und/oder Trainingslogik 915 werden hierin in Verbindung mit den 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem System von 12A zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebener Anwendungsfälle neuronaler Netzwerke berechnet wurden.
  • 12B veranschaulicht ein Beispiel von Kamerapositionen und Sichtfeldern für das autonome Fahrzeug 1200 aus 12A gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform sind Kameras und jeweilige Sichtfelder eine beispielhafte Ausführungsform und nicht als beschränkend zu werten. Beispielsweise können in zumindest einer Ausführungsform zusätzliche und/oder alternative Kameras integriert sein, und/oder können Kameras an verschiedenen Stellen des Fahrzeugs 1200 angeordnet sein.
  • In zumindest einer Ausführungsform können Kameratypen für Kameras, ohne darauf beschränkt zu sein, Digitalkameras beinhalten, die zur Verwendung mit Komponenten und/oder Systemen des Fahrzeugs 1200 angepasst sein können. Die Kamera(s) können auf der Ebene der Fahrzeugsicherheitsintegrität („Automotive Safety Integrity Level; ASIL“) B und/oder auf einer anderen ASIL betrieben werden. In zumindest einer Ausführungsform können Kameratypen je nach Ausführungsform zu jeder beliebigen Bildaufnahmerate fähig sein, wie z.B. 60 Einzelbilder pro Sekunde (fps), 1220 fps, 240 fps, usw.. In zumindest einer Ausführungsform können Kameras in der Lage sein, Rollverschlüsse, globale Verschlüsse, eine andere Art von Verschluss oder eine Kombination davon zu verwenden. In zumindest einer Ausführungsform kann eine Farbfilteranordnung eine Rot-Klar-Klar-Klar („RCCC“)-Farbfilteranordnung, eine Rot-Klar-Klar-Blau („RCCB“)-Farbfilteranordnung, eine Rot-Blau-Grün-Klar („RBGC“)-Farbfilteranordnung, eine Foveon X3-Farbfilteranordnung, ein Bayer-Sensoren („RGGB“)-Farbfilteranordnung, eine Monochromsensor-Farbfilteranordnung und/oder eine andere Farbfilteranordnung beinhalten. In zumindest einer Ausführungsform können Klarpixelkameras, wie beispielsweise Kameras mit einer RCCC-, einer RCCB- und/oder einer RBGC-Farbfilteranordnung, zur Erhöhung der Lichtempfindlichkeit verwendet werden.
  • In zumindest einer Ausführungsform können eine oder mehrere Kameras dazu verwendet werden, Funktionen fortgeschrittener Fahrerassistenzsysteme (Advanced Driver Assistance Systems; „ADAS“) auszuführen (z.B. im Rahmen eines redundanten oder ausfallsicheren Designs). Beispielsweise kann in zumindest einer Ausführungsform eine Multifunktions-Monokamera installiert sein, um Funktionen einschließlich einer Spurverlassenswarnung, einer Verkehrszeichenassistenz und einer intelligenten Scheinwerfersteuerung bereitzustellen. In zumindest einer Ausführungsform können eine oder mehrere der Kameras (z.B. alle Kameras) Bilddaten (z.B. Video) gleichzeitig aufnehmen und bereitstellen.
  • In zumindest einer Ausführungsform können eine oder mehrere Kameras in einer Montageanordnung, wie beispielsweise einer kundenspezifisch ausgestalteten (dreidimensional („3D“) gedruckten) Anordnung, montiert sein, um Streulicht und Reflexionen aus dem Inneren des Autos (z.B. Reflexionen von dem Armaturenbrett, die in Windschutzscheibenspiegeln reflektiert werden) zu entfernen, das bzw. die die Bilddatenerfassungsfähigkeiten von Kameras beeinträchtigen können. In Bezug auf Schwenkspiegelmontagebaugruppen können in zumindest einer Ausführungsform Schwenkspiegelbaugruppen individuell in 3D gedruckt sein, so dass eine Kameramontageplatte der Form des-Außenspiegels entspricht. In zumindest einer Ausführungsform kann bzw. können die Kamera(s) in einen schwenkbaren Außenspiegel integriert sein. Bei Seitensichtkameras können in zumindest einer Ausführungsform die Kameras ebenfalls in vier Säulen an jeder Ecke der Kabine integriert sein.
  • In zumindest einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile der Umgebung vor dem Fahrzeug 1200 beinhaltet (z.B. nach vorne gerichtete Kameras), für eine Rundum-Ansicht verwendet werden, um nach vorne gerichtete Wege und Hindernisse zu identifizieren sowie unter Verwendung von einer oder mehrerer der Steuereinrichtung(en) 1236 und/oder Steuer-SoCs zu helfen, Informationen bereitzustellen, die für das Generieren eines Belegungsgitters und/oder das Bestimmen bevorzugter Fahrzeugwege entscheidend sind. In zumindest einer Ausführungsform können nach vorne gerichtete Kameras dazu verwendet werden, viele gleicher ADAS-Funktionen wie LIDAR auszuführen, einschließlich, aber nicht beschränkt auf, eine Notbremsung, eine Fußgängererkennung und eine Kollisionsvermeidung. In zumindest einer Ausführungsform können frontseitige Kameras ebenfalls für ADAS-Funktionen und -Systeme verwendet werden, einschließlich, aber nicht beschränkt auf, Spurverlassenswarnungen (Lane Departure Warnings; „LDW“), autonome Geschwindigkeitsregelung (Autonomous Cruise Control; „ACC“) und/oder anderer Funktionen wie Verkehrszeichenerkennung.
  • In zumindest einer Ausführungsform können eine Vielzahl von Kameras in einer nach vorne gerichteten Konfiguration verwendet werden, einschließlich beispielsweise einer monokularen Kameraplattform, die einen CMOS („complementary metal oxide semiconductor“; „komplementärer Metall-Oxid-Halbleiter“)-Farbbildsensor beinhaltet. In zumindest einer Ausführungsform kann die Weitwinkelkamera 1270 dazu verwendet werden, Objekte wahrzunehmen, die von der Peripherie aus sichtbar werden (z.B. Fußgänger, querender Verkehr oder Fahrräder). Obwohl in 12B nur eine Weitwinkelkamera 1270 dargestellt ist, kann es in anderen Ausführungsformen eine beliebige Anzahl (einschließlich Null) von Weitwinkelkameras 1270 am Fahrzeug 1200 geben. In zumindest einer Ausführungsform können beliebig viele Fernbereichkameras 1298 (z.B. ein Fernbereich-Stereokamerapaar) zur tiefenbasierten Objekterkennung verwendet werden, insbesondere für Objekte, für welche ein neuronales Netzwerk noch nicht trainiert worden ist. In zumindest einer Ausführungsform können die Fernbereichkamera(s) 1298 darüber hinaus zur Objekterkennung und - klassifizierung sowie zur grundlegenden Objektnachverfolgung verwendet werden.
  • In zumindest einer Ausführungsform kann darüber hinaus eine beliebige Anzahl von Stereokameras 1268 in einer nach vorne gerichteten Konfiguration einbezogen sein. In zumindest einer Ausführungsform kann eine oder mehrere von Stereokameras 1268 eine integrierte Steuereinheit beinhalten, die eine skalierbare Verarbeitungseinheit umfasst, welche eine programmierbare Logik („FPGA“) und einen Mehrkern-Mikroprozessor mit einer integrierten Controller Area Network („CAN“) oder einer Ethernet-Schnittstelle auf einem einzigen Chip bereitstellen kann. In zumindest einer Ausführungsform kann eine solche Einheit dazu verwendet werden, eine 3D-Karte der Umgebung des Fahrzeugs 1200 zu erzeugen, einschließlich einer Entfernungsschätzung für alle Punkte im Bild. In zumindest einer Ausführungsform kann eine oder mehrere der Stereokamera(s) 1268, ohne darauf beschränkt zu sein, kompakte Stereovisionssensoren beinhalten, die, ohne darauf beschränkt zu sein, zwei Kameraobjektive (eines jeweils links und rechts) und einen Bildverarbeitungschip beinhalten können, der den Abstand von dem Fahrzeug 1200 zum Zielobjekt messen und erzeugte Informationen (z.B. Metadaten) dazu verwenden kann, autonome Notbrems- und Spurhaltewarnfunktionen zu aktivieren. In zumindest einer Ausführungsform können andere Arten der Stereokamera(s) 1268 zusätzlich zu oder alternativ zu den hierin beschriebenen verwendet werden.
  • In zumindest einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile der Umgebung zur Seite des Fahrzeugs 1200 beinhaltet (z.B. Seitensichtkameras), für die Umgebungs- bzw. Rundum-Ansicht verwendet werden, die Informationen zum Erstellen und Aktualisieren des Belegungsrasters sowie zum Erzeugen von Kollisionswarnungen bei Seitenaufprall bereitstellen. Beispielsweise könnten in zumindest einer Ausführungsform die Umgebungskamera(s) 1274 (z.B. vier Umgebungskameras 1274, wie in 12B dargestellt) auf dem Fahrzeug 1200 positioniert sein. Die Umgebungskamera(s) 1274 kann (können), ohne darauf beschränkt zu sein, eine beliebige Anzahl und Kombination von Weitwinkelkamera(s) 1270, Fischaugen-Kamera(s), 360-Grad-Kamera(s) und/oder dergleichen beinhalten. Beispielsweise können in zumindest einer Ausführungsform vier Fisheye-Kameras an der Front, dem Heck und den Seiten des Fahrzeugs 1200 positioniert sein. In zumindest einer Ausführungsform kann das Fahrzeug 1200 drei Umgebungskameras 1274 (z.B. links, rechts und hinten) verwenden und eine oder mehrere andere Kamera(s) (z.B. eine nach vorne gerichtete Kamera) als eine vierte Umgebungsansichtskamera nutzen.
  • In zumindest einer Ausführungsform können Kameras mit einem Sichtfeld, das Teile der Umgebung bis zum Heck des Fahrzeugs 1200 beinhaltet (z.B. Rückfahrkameras), für eine Einparkhilfe, Rundumsicht, Warnungen bei Heckaufprall sowie die Erstellung und Aktualisierung des Belegungsrasters verwendet werden. In zumindest einer Ausführungsform kann eine Vielzahl von Kameras verwendet werden, einschließlich, aber nicht beschränkt auf, Kameras, die auch als Frontkamera(s) geeignet sind (z.B. die Fernbereichkameras 1298 und/oder Mittelbereichkameras 1276, Stereokameras 1268), Infrarotkameras 1272 usw.), wie hierin beschrieben wurde.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die mit einer oder mehreren Ausführungsformen verbunden sind. Einzelheiten zur Inferenzierungs- und/oder Trainingslogik 915 werden hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem System nach 12B zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebener Anwendungsfälle neuronaler Netzwerke berechnet wurden.
  • 12C ist ein Blockdiagramm, das eine beispielhafte Systemarchitektur für das autonome Fahrzeug 1200 von 12A darstellt, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform sind jede der Komponenten, Merkmale und Systeme des Fahrzeugs 1200 in 12C als über einen Bus 1202 verbunden dargestellt. In zumindest einer Ausführungsform kann der Bus 1202, ohne darauf beschränkt zu sein, eine CAN-Datenschnittstelle (nachstehend alternativ als ein „CAN-Bus“ bezeichnet) beinhalten. In zumindest einer Ausführungsform kann ein CAN ein Netzwerk innerhalb des Fahrzeugs 1200 sein, das dazu verwendet wird, bei der Steuerung verschiedener Merkmale und Funktionen des Fahrzeugs 1200, wie z. B. der Betätigung von Bremsen, der Beschleunigung, der Bremsen, der Lenkung, der Scheibenwischer usw., zu helfen. In zumindest einer Ausführungsform kann der Bus 1202 dazu konfiguriert sein, Dutzende oder sogar Hunderte von Knoten zu haben, von denen jeder seine eigene eindeutige Kennung (z.B. eine CAN-ID) hat. In zumindest einer Ausführungsform kann der Bus 1202 gelesen werden, um einen Lenkradwinkel, eine Fahrgeschwindigkeit, Motordrehzahl pro Minute („U/min“), Tastenpositionen und/oder andere Fahrzeugstatusanzeigen zu finden. In zumindest einer Ausführungsform kann der Bus 1202 ein CAN-Bus sein, der ASIL B-konform ist.
  • In zumindest einer Ausführungsform kann zusätzlich zu oder alternativ zu CAN FlexRay und/oder Ethernet verwendet werden. In zumindest einer Ausführungsform kann eine beliebige Anzahl von Bussen 1202 vorhanden sein, welche ohne, darauf beschränkt zu sein, null oder mehr CAN-Busse, null oder mehr FlexRay-Busse, null oder mehr Ethernet-Busse und/oder null oder mehr andere Arten von Bussen mit Verwendung eines anderen Protokolls beinhalten können. In zumindest einer Ausführungsform können zwei oder mehr Busse 1202 dazu verwendet werden, verschiedene Funktionen auszuführen, und/oder für Redundanz verwendet werden. Beispielsweise kann ein erster Bus 1202 für eine Kollisionsvermeidungsfunktionalität verwendet werden, und kann ein zweiter Bus 1202 für eine Betätigungssteuerung verwendet werden. In zumindest einer Ausführungsform kann jeder Bus 1202 mit einer beliebigen von Komponenten des Fahrzeugs 1200 kommunizieren, und können zwei oder mehr Busse 1202 mit denselben bzw. gleichen Komponenten kommunizieren. In zumindest einer Ausführungsform kann jedes der beliebig vielen System(e) auf Chip(s) („SoC(s)“) 1204, jede der Steuereinrichtung(en) 1236 und/oder jeder Computer innerhalb des Fahrzeugs Zugriff auf dieselben Eingangsdaten (z.B. Inputs von Sensoren des Fahrzeugs 1200) haben und mit einem gemeinsamen Bus, wie beispielsweise dem CAN-Bus, verbunden sein.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 eine oder mehrere Steuereinrichtung(en) 1236 beinhalten, wie beispielsweise diejenigen, die hierin in Bezug auf 12A beschrieben sind. Die Steuereinrichtung(en) 1236 können für eine Vielzahl von Funktionen verwendet werden. In zumindest einer Ausführungsform kann (können) die Steuerung(en) 1236 mit einer beliebigen von verschiedenen anderen Komponenten und Systemen des Fahrzeugs 1200 gekoppelt sein und zur Steuerung des Fahrzeugs 1200, der künstlichen Intelligenz des Fahrzeugs 1200, des Infotainments für das Fahrzeug 1200 und/oder dergleichen verwendet werden.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 eine beliebige Anzahl von SoCs 1204 beinhalten. Jedes der SoCs 1204 kann, ohne darauf beschränkt zu sein, Zentralverarbeitungseinheiten („CPU(s)“) 1206, Grafikverarbeitungseinheiten („GPU(s)“) 1208, einen oder mehrere Prozessor(en) 1210, Cache(s) 1212, Beschleuniger 1214, Datenspeicher 1216 und/oder andere nicht dargestellte Komponenten und Merkmale beinhalten. In zumindest einer Ausführungsform können SoC(s) 1204 zur Steuerung des Fahrzeugs 1200 in einer Vielzahl von Plattformen und Systemen verwendet werden. Beispielsweise können in zumindest einer Ausführungsform SoC(s) 1204 in einem System (z.B. dem System des Fahrzeugs 1200) mit einer High Definition („HD“) Karte 1222 kombiniert sein, welche über die Netzwerkschnittstelle 1224 von einem oder mehreren Servern (in 12C nicht gezeigt) Kartenaktualisierungen und/oder Aktualisierungen erhalten kann.
  • In zumindest einer Ausführungsform können die CPU(s) 1206 einen CPU-Cluster oder CPU-Komplex (alternativ hierin als „CCPLEX“ bezeichnet) beinhalten. In zumindest einer Ausführungsform können die CPU(s) 1206 mehrere Kerne und/oder Level-2 („L2“)-Caches beinhalten. Beispielsweise können in zumindest einer Ausführungsform die CPU(s) 1206 acht Kerne in einer kohärenten Multiprozessor-Konfiguration beinhalten. In zumindest einer Ausführungsform können die CPU(s) 1206 vier Dual-Core-Cluster beinhalten, wobei jeder Cluster einen dedizierten L2-Cache (z.B. einen 2 MB L2-Cache) aufweist. In zumindest einer Ausführungsform können CPU(s) 1206 (z.B. CCPLEX) dazu konfiguriert sein, gleichzeitigen Clusterbetrieb zu unterstützen, so dass jede beliebige Kombination von Clustern von CPU(s) 1206 jederzeit aktiv sein kann.
  • In zumindest einer Ausführungsform kann eine oder können mehrere der CPU(s) 1206 Energieverwaltungsfunktionen implementieren, die, ohne darauf beschränkt zu sein, eines oder mehrere der folgenden Merkmale beinhalten: einzelne Hardwareblöcke können im Leerlauf automatisch getaktet bzw. clock-gated werden, um dynamische Leistung zu sparen; jeder Kerntakt kann getaktet bzw. gegated werden, wenn der Kern aufgrund der Ausführung von Wait for Interrupt („WFI“)/Wait for Event („WFE“)-Anweisungen nicht aktiv Anweisungen ausführt; jeder Kern kann unabhängig leistungsgesteuert bzw. power-gated werden; jeder Kerncluster kann unabhängig clock-gated werden, wenn alle Kerne clock-gated oder power-gated werden; und/oder jeder Kerncluster kann unabhängig power-gated werden, wenn alle Kerne power-gated werden. In zumindest einer Ausführungsform können die CPU(s) 1206 ferner einen erweiterten Algorithmus zum Verwalten von Leistungszuständen implementieren, bei denen zulässige Leistungszustände und erwartete Aufwachzeiten angegeben sind, und bestimmt Hardware/Mikrocode den besten Leistungszustand, in den für Kern, Cluster und CCPLEX einzutreten ist. In zumindest einer Ausführungsform können Verarbeitungskerne vereinfachte Leistungszustand-Eintrittssequenzen in Software mit in Mikrocode übertragener Arbeit unterstützen.
  • In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 eine integrierte Grafikverarbeitungseinheit (hierin alternativ als „iGPU“ bezeichnet) beinhalten. In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 programmierbar sein und für parallele Arbeitslasten effizient sein. In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 in zumindest einer Ausführungsform einen erweiterten Tensorbefehlssatz verwenden. In einer Ausführungsform kann bzw. können die GPU(s) 1208 einen oder mehrere Streaming-Mikroprozessoren beinhalten, wobei jeder Streaming-Mikroprozessor einen Level 1 („L1“)-Cache beinhalten kann (z.B. ein L1-Cache mit zumindest 96KB Speicherkapazität), und sich zwei oder mehr Streaming-Mikroprozessoren einen L2-Cache (z.B. ein L2-Cache mit 512 KB Speicherkapazität) teilen können. In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 zumindest acht Streaming-Mikroprozessoren beinhalten. In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 Rechen-Anwendungsprogrammierschnittstellen (compute application programming interface(s); (API(s)) verwenden. In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 eine oder mehrere parallele Rechenplattformen und/oder Programmiermodelle (z.B. NVIDIA's CUDA) verwenden.
  • In zumindest einer Ausführungsform kann eine oder mehrere der GPU(s) 1208 energieoptimiert sein, um die beste Leistung in Automobil- und Embedded-Anwendungen zu erzielen. In einer Ausführungsform kann bzw. könnten beispielsweise die GPU(s) 1208 auf einem Fin-Feldeffekttransistor („FinFET“) hergestellt sein. In zumindest einer Ausführungsform kann jeder Streaming-Mikroprozessor eine Reihe von Verarbeitungskernen mit gemischter Genauigkeit, die in mehrere Blöcke unterteilt sind, beinhalten. Beispielsweise könnten, ohne darauf beschränkt zu sein, 64 PF32-Kerne und 32 PF64-Kerne in vier Verarbeitungsblöcke aufgeteilt sein. In zumindest einer Ausführungsform könnte jedem Verarbeitungsblock 16 FP32-Kerne, 8 FP64-Kerne, 16 INT32-Kerne, zwei NVIDIA TENSOR COREs mit gemischter Genauigkeit für Deep-Learning-Matrix-Arithmetik, ein Level-Null („LO“)-Befehls-Cache, ein Warp-Scheduler, eine Sendeeinheit und/oder eine 64 KB-Registerdatei zugeordnet sein. In zumindest einer Ausführungsform können Streaming-Mikroprozessoren unabhängige parallele Ganzzahl- und Gleitkomma-Datenpfade beinhalten, um eine effiziente Ausführung von Arbeitslasten mit einer Mischung aus Rechen- und Adressierungsberechnungen bereitzustellen. In zumindest einer Ausführungsform können Streaming-Mikroprozessoren unabhängige Thread-Scheduling-Funktionen beinhalten, um eine feinkörnigere Synchronisation und Zusammenarbeit zwischen parallelen Threads zu ermöglichen. In zumindest einer Ausführungsform können Streaming-Mikroprozessoren einen kombinierten L1-Datencache und eine gemeinsam genutzte Speichereinheit beinhalten, um die Leistung zu verbessern und gleichzeitig die Programmierung zu vereinfachen.
  • In zumindest einer Ausführungsform kann bzw. können eine oder mehrere der GPU(s) 1208 einen Speicher mit hoher Bandbreite („HBM“) und/oder ein 16 GB HBM2-Speichersubsystem beinhalten, um, in einigen Beispielen, eine maximale Speicherbandbreite von etwa 900 GB/Sekunde bereitzustellen. In zumindest einer Ausführungsform kann zusätzlich oder alternativ zu einem HBM-Speicher ein synchroner Direktzugriffs-Grafikspeicher („SGRAM“) verwendet werden, wie beispielsweise ein Typ 5 Graphics Double Data Rate Synchronous Dynamic RAM („GDDR5“).
  • In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 eine Unified Memory-Technologie beinhalten. In zumindest einer Ausführungsform kann eine Address Translation Services („ATS“)-Unterstützung verwendet werden, um es der bzw. den GPU(s) 1208 zu erlauben, direkt auf Seitentabellen der CPU(s) zuzugreifen. In zumindest einer Ausführungsform kann dann, wenn die Speicherverwaltungseinheit („MMU“) der GPU(s) einem Fehlgriff unterliegt, eine Adressübersetzungsanforderung an die CPU(s) 1206 übertragen werden. Im Ansprechen darauf kann bzw. können in zumindest einer Ausführungsform die CPU(s) 1206 in ihren Seitentabellen nach einer virtuell-physikalischen Adresszuordnung suchen und die Übersetzung an die GPU(s) 1208 zurückübertragen. In zumindest einer Ausführungsform kann die Unified Memory-Technologie einen einzigen einheitlichen virtuellen Adressraum für Speicher sowohl der CPU(s) 1206 als auch der GPU(s) 1208 ermöglichen, wodurch die Programmierung der GPU(S) und die Portierung von Anwendungen auf die GPU(s) 1208 vereinfacht wird.
  • In zumindest einer Ausführungsform kann bzw. können die GPU(s) 1208 eine beliebige Anzahl von Zugriffszählern beinhalten, die die Häufigkeit des Zugriffs der GPU(s) 1208 auf den Speicher anderer Prozessoren nachverfolgen können. In zumindest einer Ausführungsform können Zugriffszähler dazu beitragen, dass Speicherseiten in den physikalischen Speicher des Prozessors verschoben werden, der am häufigsten auf die Seiten zugreift, wodurch die Effizienz für die zwischen Prozessoren gemeinsam genutzten Speicherbereiche verbessert wird.
  • In zumindest einer Ausführungsform kann bzw. können eines oder mehrere der SoC(s) 1204 eine beliebige Anzahl von Cache(s) 1212 beinhalten, einschließlich der hierin beschriebenen. Beispielsweise könnte(n) in zumindest einer Ausführungsform der/die Cache(s) 1212 einen Level drei („L3“)-Cache beinhalten, der sowohl für die CPU(s) 1206 als auch für die GPU(s) 1208 verfügbar ist (beispielsweise der sowohl mit der bzw. den CPU(s) 1206 als auch der bzw. den GPU(s) 1208 verbunden ist). In zumindest einer Ausführungsform kann der bzw. können die Cache(s) 1212 einen Write-Back-Cache beinhalten, der den Zustand von Leitungen nachverfolgen kann, beispielsweise durch Verwendung eines Cache-Kohärenzprotokolls (z.B. MEI, MESI, MSI, usw.). In zumindest einer Ausführungsform kann der L3-Cache je nach Ausführungsform 4 MB oder mehr umfassen, obwohl kleinere Cachegrößen verwendet werden können.
  • In zumindest einer Ausführungsform kann bzw. können eines oder mehrere der SoC(s) 1204 einen oder mehrere Beschleuniger 1214 beinhalten (z.B. Hardwarebeschleuniger, Softwarebeschleuniger oder eine Kombination davon). In zumindest einer Ausführungsform kann ein bzw. können SoC(s) 1204 einen Hardwarebeschleunigungscluster beinhalten, der optimierte Hardwarebeschleuniger und/oder einen großen On-Chip-Speicher beinhalten kann. In zumindest einer Ausführungsform kann ein großer On-Chip-Speicher (z.B. 4 MB SRAM) dem Hardwarebeschleunigungscluster ermöglichen, neuronale Netzwerke und andere Berechnungen zu beschleunigen. In zumindest einer Ausführungsform kann der Hardwarebeschleunigungscluster dazu verwendet werden, die GPU(s) 1208 zu ergänzen und die GPU(s) 1208 von einigen Aufgaben zu entlasten (z.B. um mehr Zyklen der GPU(s) 1208 zum Durchführen anderer Aufgaben freizugeben). In zumindest einer Ausführungsform könnte(n) der/die Beschleuniger 1214 für gezielte Arbeitslasten (z.B. Wahrnehmung, faltende neuronale Netzwerke („CNNs“), rekursive neuronale Netzwerke („RNNs“) usw.) verwendet werden, die stabil genug sind, um für Beschleunigung zugänglich zu sein. In zumindest einer Ausführungsform kann ein CNN ein regionsbasiertes oder regionales faltendes neuronales Netzwerk („RCNNs“) und ein schnelles RCNN (z.B. wie für die Objekterkennung verwendet) oder eine andere Art von CNN beinhalten.
  • In zumindest einer Ausführungsform kann der bzw. können die Beschleuniger 1214 (z.B. Hardwarebeschleunigungscluster) einen oder mehrere tief lernende Beschleuniger (Deep Learning Accelerator; „DLA“) beinhalten. Der bzw. die DLA(s) können, ohne darauf beschränkt zu sein, eine oder mehrere Tensor-Verarbeitungseinheiten (Tensor Processing Units; „TPUs“) beinhalten, die dazu konfiguriert sein können, zusätzliche zehn Billionen Operationen pro Sekunde für Deep-Learning-Anwendungen und Inferencing bereitzustellen. In zumindest einer Ausführungsform können TPUs Beschleuniger sein, die dazu konfiguriert und optimiert sind, Bildverarbeitungsfunktionen auszuführen (z.B. für CNNs, RCNNs, usw.). Der bzw. die DLA(s) können ferner für einen bestimmten Satz von neuronalen Netzwerktypen und Gleitkommaoperationen sowie für die Inferenzierung optimiert sein. In zumindest einer Ausführungsform kann das Design eines bzw. von DLA(s) mehr Leistung pro Millimeter liefern als eine typischer Allzweck-GPU und übersteigt typischerweise erheblich die Leistung einer CPU. In zumindest einer Ausführungsform können TPU(s) mehrere Funktionen ausführen, einschließlich einer Einzelinstanz-Faltungsfunktion, die beispielsweise INT8-, INT16- und FP16-Datentypen für sowohl Merkmale als auch Gewichte sowie Postprozessorfunktionen unterstützt. In zumindest einer Ausführungsform kann bzw. können die DLA(s) schnell und effizient neuronale Netzwerke, insbesondere CNNs, auf verarbeiteten oder unverarbeiteten Daten für eine beliebige einer Vielzahl von Funktionen ausführen, einschließlich, zum Beispiel und ohne darauf beschränkt zu sein: ein CNN zur Objektidentifikation und - detektion unter Verwendung von Daten von Kamerasensoren; ein CNN zur Entfernungsschätzung unter Verwendung von Daten von Kamerasensoren; ein CNN zur Einsatzfahrzeugerkennung und -identifikation und -detektion unter Verwendung von Daten von den Mikrofonen 1296; ein CNN zur Gesichtserkennung und -identifikation unter Verwendung von Daten von Kamerasensoren; und/oder ein CNN für sicherungs- und/oder sicherheitsbezogene Ereignisse.
  • In zumindest einer Ausführungsform kann bzw. können die DLA(s) jede beliebige Funktion der GPU(s) 1208 ausführen, und kann ein Designer unter Verwendung beispielsweise eines Inferenzbeschleunigers entweder DLA(s) oder GPU(s) 1208 für jede beliebige Funktion ansteuern. Beispielsweise kann in zumindest einer Ausführungsform der Designer sich beispielsweise auf die Verarbeitung von CNNs und Gleitkommaoperationen auf DLA(s) konzentrieren und andere Funktionen der bzw. den GPU(s) 1208 und/oder anderen Beschleunigern 1214 überlassen.
  • In zumindest einer Ausführungsform kann der bzw. können die Beschleuniger 1214 (z.B. Hardwarebeschleunigungscluster) einen/mehrere programmierbare(n) Vision-Beschleuniger (Programmable Vision Accelerator; „PVA“) beinhalten, der bzw. die hierin alternativ als ein Computer Vision Accelerator bezeichnet werden können. In zumindest einer Ausführungsform kann der bzw. können die PVA(s) dazu entworfen und konfiguriert sein, Computer Vision-Algorithmen für fortgeschrittene Fahrerassistenzsysteme („ADAS“) 1238, autonomes Fahren, Augmented Reality („AR“)-Anwendungen und/oder Virtual Reality („VR“)-Anwendungen zu beschleunigen. Der bzw. die PVA(s) kann bzw. können ein Gleichgewicht zwischen Leistung und Flexibilität bereitstellen. Beispielsweise kann in zumindest einer Ausführungsform der bzw. jeder der PVA(s) beispielsweise und ohne darauf beschränkt zu sein eine beliebige Anzahl von Rechenkernen mit reduziertem Befehlssatz („RISC“), direktem Speicherzugriff („DMA“) und/oder eine beliebige Anzahl von Vektorprozessoren beinhalten.
  • In zumindest einer Ausführungsform können RISC-Kerne mit Bildsensoren (z.B. Bildsensoren einer beliebigen der hierin beschriebenen Kameras), einem oder mehreren Bildsignalprozessor(en) und/oder dergleichen interagieren. In zumindest einer Ausführungsform kann jeder von RISC-Kernen eine beliebige Menge an Speicher beinhalten. In zumindest einer Ausführungsform können RISC-Kerne je nach Ausführungsform ein beliebiges der folgenden Protokolle verwenden. In zumindest einer Ausführungsform können RISC-Kerne ein Echtzeitbetriebssystem („RTOS“) ausführen. In zumindest einer Ausführungsform können RISC-Kerne unter Verwendung einer oder mehrerer integrierter Schaltungsvorrichtungen, anwendungsspezifischer integrierter Schaltungen („ASICs“) und/oder Speichervorrichtungen implementiert sein. Beispielsweise könnten in zumindest einer Ausführungsform RISC-Kerne einen Befehls-Cache und/oder ein eng gekoppeltes RAM beinhalten.
  • In zumindest einer Ausführungsform kann DMA Komponenten von einer oder mehreren PVA(s) ermöglichen, unabhängig von der bzw. den CPU(s) 1206 auf den Systemspeicher zuzugreifen. In zumindest einer Ausführungsform kann DMA eine beliebige Anzahl von Merkmalen unterstützen, die zur PVA-Optimierung verwendet werden, einschließlich der, aber nicht beschränkt auf die, Unterstützung von mehrdimensionaler Adressierung und/oder zirkulärer Adressierung. In zumindest einer Ausführungsform kann DMA bis zu sechs oder mehr Dimensionen der Adressierung unterstützen, welches, ohne darauf beschränkt zu sein, Blockbreite, Blockhöhe, Blocktiefe, horizontale Blockabstufung, vertikale Blockabstufung und/oder Tiefenabstufung beinhalten kann.
  • In zumindest einer Ausführungsform können Vektorprozessoren programmierbare Prozessoren sein, die Beispielsweise dazu konzipiert sein können, die Programmierung von Computer Vision-Algorithmen effizient und flexibel durchzuführen und Signalverarbeitungsfähigkeiten bereitzustellen. In zumindest einer Ausführungsform kann PVA einen PVA-Kern und zwei Vektorverarbeitungs-Subsystem-Partitionen beinhalten. In zumindest einer Ausführungsform kann der PVA-Kern ein Prozessorsubsystem, eine oder mehrere DMA-Engine(s) (z.B. zwei DMA-Engines) und/oder andere Peripheriegeräte beinhalten. In zumindest einer Ausführungsform kann das Vektorverarbeitungs-Subsystem als primäre PVA-Verarbeitungs-Engine arbeiten und kann eine Vektorverarbeitungseinheit („VPU“), einen Befehls-Cache und/oder Vektorspeicher (z.B. „VMEM“) beinhalten. In zumindest einer Ausführungsform kann der VPU-Kern einen digitalen Signalprozessor beinhalten, wie beispielsweise einen digitalen Single Instruction Multiple Data („SIMD“), Very Long Instruction Word („VLIW“)-Signalprozessor. In zumindest einer Ausführungsform kann eine Kombination aus SIMD und VLIW den Durchsatz und die Geschwindigkeit erhöhen.
  • In zumindest einer Ausführungsform kann jeder von Vektorprozessoren einen Befehls-Cache beinhalten und mit einem dedizierten Speicher gekoppelt sein. Infolgedessen kann in zumindest einer Ausführungsform jeder von Vektorprozessoren dazu konfiguriert sein, unabhängig von anderen Vektorprozessoren auszuführen. In zumindest einer Ausführungsform können Vektorprozessoren, die in einem bestimmten PVA enthalten sind, dazu konfiguriert sein, Datenparallelität zu verwenden. Beispielsweise kann in zumindest einer Ausführungsform eine Vielzahl von Vektorprozessoren, die in einem einzigen PVA enthalten sind, denselben Computer Vision-Algorithmus ausführen, jedoch auf verschiedenen Bereichen eines Bilds. In zumindest einer Ausführungsform können Vektorprozessoren, die in einem bestimmten PVA enthalten sind, gleichzeitig verschiedene Computer Vision-Algorithmen für dasselbe Bild ausführen oder sogar verschiedene Algorithmen für sequentielle Bilder oder Teile eines Bilds ausführen. In zumindest einer Ausführungsform können unter anderem beliebig viele PVAs im Hardwarebeschleunigungscluster und beliebig viele Vektorprozessoren in jedem der PVAs enthalten sein. In zumindest einer Ausführungsform kann der bzw. können die PVA(s) zusätzlichen Fehlerkorrekturcode („ECC“)-Speicher beinhalten, um die Gesamtsystemsicherheit zu erhöhen.
  • In zumindest einer Ausführungsform können der bzw. die Beschleuniger 1214 (z.B. Hardwarebeschleunigungscluster) ein Computer Vision-Netzwerk auf dem Chip bzw. On-Chip und statischen Random-Access-Speicher („SRAM“) beinhalten, um ein SRAM mit hoher Bandbreite und niedriger Latenz für den bzw. die Beschleuniger 1214 bereitzustellen. In zumindest einer Ausführungsform kann der On-Chip-Speicher zumindest 4 MB SRAM beinhalten, der, beispielsweise und ohne darauf beschränkt zu sein, aus acht feldkonfigurierbaren Speicherblöcken besteht, die sowohl für PVA als auch für DLA zugänglich sein können. In zumindest einer Ausführungsform kann jedes Paar von Speicherblöcken eine Advanced Peripheral Bus („APB“)-Schnittstelle, Konfigurationsschaltkreise, eine Steuereinrichtung und einen Multiplexer beinhalten. In zumindest einer Ausführungsform kann jede Art von Speicher verwendet werden. In zumindest einer Ausführungsform können PVA und DLA über ein Backbone, das PVA und DLA einen schnellen Zugriff auf den Speicher ermöglicht, auf den Speicher zugreifen. In zumindest einer Ausführungsform kann das Backbone ein Computer Vision-Netzwerk On-Chip beinhalten, das PVA und DLA mit Speicher verbindet (z.B. unter Verwendung einer APB).
  • In zumindest einer Ausführungsform kann das Computer Vision-Netzwerk auf dem Chip eine Schnittstelle beinhalten, die vor der Übertragung von Steuersignalen/Adressen/Daten bestimmt, dass sowohl PVA als auch DLA bereite und gültige Signale bereitstellen. In zumindest einer Ausführungsform kann eine Schnittstelle getrennte Phasen und getrennte Kanäle zum Übertragen von Steuersignalen/Adressen/Daten sowie burstartige Kommunikation für kontinuierliche Datenübertragung bereitstellen. In zumindest einer Ausführungsform kann eine Schnittstelle den Normen der International Organization for Standardization (ISO") 26262 oder der International Electrotechnical Commission (IEC") 61508 entsprechen, obwohl auch andere Normen bzw. Standards und Protokolle verwendet werden können.
  • In zumindest einer Ausführungsform kann eines oder mehrere der SoC(s) 1204 einen Hardwarebeschleuniger zur Echtzeitverfolgung von Strahlen beinhalten. In zumindest einer Ausführungsform kann der Echtzeit-Strahlenverfolgungs-Hardwarebeschleuniger dazu verwendet werden, schnell und effizient Positionen und Ausmaße von Objekten (z.B. innerhalb eines Weltmodells) zu bestimmen, um Echtzeit-Visualisierungssimulationen zu erzeugen, zur RADAR-Signalinterpretation, zur Schallausbreitungssynthese und/oder -analyse, zur Simulation von SONAR-Systemen, zur allgemeinen Wellenausbreitungssimulation, zum Vergleich mit LIDAR-Daten zum Zwecke der Lokalisierung und/oder für andere Funktionen und/oder für andere Anwendungen.
  • In zumindest einer Ausführungsform haben der bzw. die Beschleuniger 1214 (z.B. Hardwarebeschleunigercluster) ein breites Anwendungsspektrum für autonomes Fahren. In zumindest einer Ausführungsform kann PVA ein programmierbarer Vision-Beschleuniger sein, der für wichtige Verarbeitungsstufen in ADAS und autonomen Fahrzeugen verwendet werden kann. In zumindest einer Ausführungsform sind die Fähigkeiten von PVA eine gute Ergänzung für algorithmische Domänen, die eine vorhersagbare Verarbeitung benötigen, bei geringer Leistung und geringer Latenzzeit. Mit anderen Worten schneidet PVA bei semidichtem oder dichtem regulärem Rechnen gut ab, selbst bei kleinen Datensätzen, die vorhersagbare Laufzeiten mit geringer Latenz und geringer Leistung benötigen. In zumindest einer Ausführungsform sind in autonomen Fahrzeugen, wie beispielsweise dem Fahrzeug 1200, PVAs so konzipiert, dass sie klassische Computer Vision-Algorithmen ausführen, da sie bei der Objekterkennung effizient sind und mit ganzzahliger Mathematik arbeiten.
  • Gemäß zumindest einer Ausführungsform der Technologie wird PVA beispielsweise zur Durchführung von Computer Stereo Vision verwendet. In zumindest einer Ausführungsform kann in einigen Beispielen ein semi-globaler matching-basierter Algorithmus verwendet werden, der jedoch nicht als Einschränkung gedacht ist. In zumindest einer Ausführungsform verwenden Anwendungen für das autonome Fahren der Level 3-5 eine Bewegungsschätzung/ein Stereomatching on-the-fly (z.B. Struktur aus Bewegung, Fußgängererkennung, Spurerkennung, usw.). In zumindest einer Ausführungsform kann PVA eine Computer Stereo Vision-Funktion für Inputs von zwei monokularen Kameras ausführen.
  • In zumindest einer Ausführungsform kann PVA zur Durchführung eines dichten optischen Flusses verwendet werden. Beispielsweise könnte in zumindest einer Ausführungsform PVA RADAR-Rohdaten verarbeiten (z.B. unter Verwendung einer 4D Fast Fourier-Transformation), um verarbeitete RADAR-Daten bereitzustellen. In zumindest einer Ausführungsform wird PVA für die Tiefenverarbeitung während der Flugzeit verwendet, beispielsweise indem Flugzeit-Rohdaten verarbeitet werden, um verarbeitete Flugzeit-Daten bereitzustellen.
  • In zumindest einer Ausführungsform kann DLA dazu verwendet werden, jede Art von Netzwerk zu betreiben, um die Steuerung und die Fahrsicherheit zu verbessern, einschließlich beispielsweise und ohne darauf beschränkt zu sein eines neuronalen Netzwerks, das ein Vertrauensmaß für jede Objekterkennung ausgibt. In zumindest einer Ausführungsform kann Vertrauen als eine Wahrscheinlichkeit oder als Bereitstellung eines relativen „Gewichts“ jeder Erkennung im Vergleich zu anderen Erkennungen dargestellt oder interpretiert werden. In zumindest einer Ausführungsform ermöglicht Vertrauen einem System, weitere Entscheidungen dahingehend zu treffen, welche Erkennungen bzw. Detektionen als wahrhaft positive Erkennungen und nicht als falsch positive Erkennungen zu betrachten sind. Beispielsweise kann in zumindest einer Ausführungsform ein System einen Schwellenwert für Vertrauen festlegen und nur Erkennungen, die den Schwellenwert überschreiten, als wahrhaft positive Erkennungen betrachten. In einer Ausführungsform, in welcher ein automatisches Notbrems („AEB“)-System verwendet wird, würden falsch positive Erkennungen dazu führen, dass das Fahrzeug automatisch eine Notbremsung durchführt, welches offenkundig unerwünscht ist. In zumindest einer Ausführungsform können hoch zuverlässige Erkennungen als Auslöser für eine automatische Notbremsung bzw. AEB betrachtet werden. In zumindest einer Ausführungsform kann DLA ein neuronales Netzwerk zum Regressieren des Vertrauenswerts betreiben. In zumindest einer Ausführungsform kann das neuronale Netzwerk zumindest Teile von Parametern als Eingang verwenden, wie unter anderem z.B. Abmessungen von Begrenzungsrahmen, eine (z.B. von einem anderen Subsystem) erhaltene Bodenebenenschätzung, eine Ausgabe von einem oder mehreren IMU-Sensor(en) 1266, die mit der Ausrichtung des Fahrzeugs 1200 korreliert, eine Entfernung, 3D-Ortsschätzungen von Objekten, die aus dem neuronalen Netzwerk und/oder von anderen Sensoren (z.B. einem oder mehreren LIDAR-Sensor(en) 1264 oder RADAR-Sensor(en) 1260).
  • In zumindest einer Ausführungsform kann bzw. können eines oder mehrere der SoC(s) 1204 Datenspeicher 1216 (z.B. Speicher) beinhalten. In zumindest einer Ausführungsform können der bzw. die Datenspeicher 1216 On-Chip-Speicher von SoC(s) 1204 sein, welche neuronale Netzwerke speichern können, die auf einer oder mehreren GPU(s) 1208 und/oder DLA ausgeführt werden. In zumindest einer Ausführungsform können der bzw. die Datenspeicher 1216 eine Kapazität aufweisen, die groß genug ist, um mehrere Instanzen neuronaler Netzwerke für Redundanz und Sicherheit zu speichern. In zumindest einer Ausführungsform können der bzw. die Datenspeicher 1212 L2- oder L3-Cache(s) umfassen.
  • In zumindest einer Ausführungsform kann bzw. können ein oder mehrere SoC(s) 1204 eine beliebige Anzahl von Prozessor(en) 1210 (z.B. eingebettete Prozessoren) beinhalten. Der/die Prozessor(en) 1210 können einen Boot- und Energieverwaltungs-Prozessor, der ein dedizierter Prozessor und ein Subsystem zum Handhaben von Boot-, Leistungs- und Verwaltungsfunktionen sowie damit verbundener Sicherheitsdurchsetzung sein kann, beinhalten. In zumindest einer Ausführungsform kann der Boot- und Energieverwaltungs-Prozessor Teil der Bootsequenz des bzw. der SoC(s) 1204 sein und zur Laufzeit Energieverwaltungsdienste bereitstellen. In zumindest einer Ausführungsform kann der Boot- und Energieverwaltungs-Prozessor eine Takt- und Spannungsprogrammierung, Unterstützung bei System-Niedrigstromverbrauch-Übergängen, Verwaltung von Thermik- und Temperatursensoren des bzw. von SoC(s) 1204 und/oder Verwaltung von Leistungszuständen des bzw. von SoC(s) 1204 bereitstellen. In zumindest einer Ausführungsform kann jeder Temperatursensor als ein Ringoszillator implementiert sein, dessen Ausgangsfrequenz proportional zur Temperatur ist, und kann ein bzw. können SoC(s) 1204 Ringoszillatoren verwenden, um Temperaturen einer/eines bzw. von CPU(s) 1206, GPU(s) 1208 und/oder Beschleuniger(n) 1214 zu erfassen. In zumindest einer Ausführungsform kann dann, wenn bestimmt wird, dass Temperaturen einen Schwellenwert überschreiten, der Boot- und Energieverwaltungs-Prozessor in eine Temperaturfehlerroutine eintreten und das bzw. die SoC(s) 1204 in einen Niedrigerenergiezustand versetzen und/oder das Fahrzeug 1200 in einen Chauffeur-nach-sicherer-Halt-Modus versetzen (z.B. das Fahrzeug 1200 zu einem sicheren Anhalten bringen).
  • In zumindest einer Ausführungsform können der bzw. die Prozessor(en) 1210 ferner einen Satz eingebetteter Prozessoren beinhalten, die als eine Audioverarbeitungs-Engine dienen können. In zumindest einer Ausführungsform kann die Audioverarbeitungs-Engine ein Audio-Subsystem sein, das volle Hardwareunterstützung für Mehrkanal-Audio über mehrere Schnittstellen und eine breite und flexible Palette von Audio-I/O-Schnittstellen ermöglicht. In zumindest einer Ausführungsform ist die Audioverarbeitungs-Engine ein dedizierter Prozessorkern mit einem digitalen Signalprozessor mit dediziertem RAM.
  • In zumindest einer Ausführungsform können der bzw. die Prozessoren 1210 ferner eine Always-on-Prozessor-Engine beinhalten, die notwendige Hardwarefunktionen zum Unterstützen einer Niedrigenergie-Sensorverwaltung und von Aufwach-Anwendungsfällen bereitstellen kann. In zumindest einer Ausführungsform kann die Always-on-Processor-Engine, ohne darauf beschränkt zu sein, einen Prozessorkern, ein eng gekoppeltes RAM, unterstützende Peripheriegeräte (z.B. Zeitgeber und Interrupt-Steuereinrichtungen), verschiedene I/O-Steuereinrichtungs-Peripherie-geräte und Routinglogik beinhalten.
  • In zumindest einer Ausführungsform können der/die Prozessor(en) 1210 ferner eine Sicherheitscluster-Engine beinhalten, die, ohne darauf beschränkt zu sein, ein dediziertes Prozessor-Subsystem zum Handhaben eines Sicherheitsmanagements für Automobilanwendungen beinhaltet. In zumindest einer Ausführungsform kann die Sicherheitscluster-Engine, ohne darauf beschränkt zu sein, zwei oder mehr Prozessorkerne, ein eng gekoppeltes RAM, unterstützende Peripheriegeräte (z.B. Zeitgeber, Unterbrechungs-Steuereinrichtung usw.) und/oder Routinglogik beinhalten. In einem Sicherheitsmodus können zwei oder mehr Kerne in zumindest einer Ausführungsform in einem Lockstep-Modus arbeiten und als einzelner Kern mit Vergleichslogik fungieren, um Unterschiede zwischen ihren Operationen zu erfassen. In zumindest einer Ausführungsform kann der bzw. können die Prozessor(en) 1210 ferner eine Echtzeit-Kamera-Engine beinhalten, die, ohne darauf beschränkt zu sein, ein dediziertes Prozessorsubsystem zur Handhabung einer Echtzeit-Kameraverwaltung beinhalten kann. In zumindest einer Ausführungsform kann der bzw. können die Prozessor(en) 1210 ferner einen Signalprozessor mit hohem Dynamikbereich beinhalten, der, ohne darauf beschränkt zu sein, einen Bildsignalprozessor beinhalten kann, der eine Hardware-Engine ist, die Teil der Kameraverarbeitungspipeline ist.
  • In zumindest einer Ausführungsform können der/die Prozessor(en) 1210 einen Videobild-Kompositor beinhalten, der ein Verarbeitungsblock (z.B. auf einem Mikroprozessor implementiert) sein kann, der Videonachbearbeitungsfunktionen implementiert, die von einer Videowiedergabeanwendung benötigt werden, um das endgültige Bild für das Abspielerfenster zu erzeugen. In zumindest einer Ausführungsform kann der Videobild-Kompositor eine Objektivverzerrungskorrektur an einer oder mehreren Weitwinkelkamera(s) 1270, einer oder mehreren Umgebungskamera(s) 1274 und/oder einem oder mehreren überwachenden Kamerasensor(en) in der Kabine durchführen. In zumindest einer Ausführungsform werden der bzw. die in der Kabine befindlichen, überwachenden Kamerasensor(en) vorzugsweise durch ein neuronales Netzwerk überwacht, das auf einer anderen SoC 1204- Instanz läuft, dazu konfiguriert, Ereignisse in der Kabine zu identifizieren und entsprechend zu reagieren. In zumindest einer Ausführungsform kann ein System in der Kabine, ohne darauf beschränkt zu sein, ein Lippenlesen durchführen, um den Mobilfunk zu aktivieren und einen Anruf zu tätigen, E-Mails zu diktieren, das Ziel des Fahrzeugs zu ändern, das Infotainmentsystem und die Einstellungen des Fahrzeugs zu aktivieren oder zu ändern oder sprachaktiviertes Websurfen anzubieten. In zumindest einer Ausführungsform stehen dem Fahrer bestimmte Funktionen zur Verfügung, wenn das Fahrzeug in einem autonomen Modus betrieben wird, und sind andernfalls deaktiviert.
  • In zumindest einer Ausführungsform kann der Videobild-Kompositor eine verbesserte temporale Rauschunterdrückung zur sowohl räumlichen als auch temporalen Rauschunterdrückung beinhalten. In zumindest einer Ausführungsform, in der Bewegung in einem Video auftritt, gewichtet beispielsweise die Rauschunterdrückung beispielsweise räumliche Informationen in geeigneter Weise, wodurch die Gewichtung der von benachbarten Einzelbildern bereitgestellten Informationen verringert wird. In zumindest einer Ausführungsform, in der ein Bild oder ein Teil eines Bilds keine Bewegung beinhaltet, kann die von dem Videobild-Kompositor durchgeführte temporale Rauschunterdrückung Informationen aus einem vorherigen Bild verwenden, um das Rauschen in dem aktuellen Bild zu reduzieren.
  • In zumindest einer Ausführungsform kann der Videobild-Kompositor auch dazu konfiguriert sein, eine Stereogleichrichtung an zugeführten Stereoobjektiv-Einzelbildern durchzuführen. In zumindest einer Ausführungsform kann der Videobild-Kompositor ferner für eine Zusammensetzung der Benutzeroberfläche verwendet werden, wenn der Desktop des Betriebssystems in Benutzung ist, und sind eine bzw. mehrere GPU(s) 1208 nicht erforderlich, um kontinuierlich neue Oberflächen zu rendern. In zumindest einer Ausführungsform kann dann, wenn die GPU(s) eingeschaltet sind und aktiv 3D wiedergeben, der Videobild-Kompositor dazu verwendet werden, die GPU(s) 1208 zu entlasten, um Leistung und Reaktionsfähigkeit zu verbessern.
  • In zumindest einer Ausführungsform kann eines oder können mehrere der SoC(s) 1204 ferner eine serielle Kameraschnittstelle für mobile Industrieprozessorschnittstellen („MIPI“) zum Empfangen von Video und Eingaben von Kameras, eine Hochgeschwindigkeitsschnittstelle und/oder einen Videoeingangsblock, der für Kamera- und zugehörige Pixeleingabefunktionen verwendet werden kann, beinhalten. In zumindest einer Ausführungsform kann eines oder können mehrere der SoC(s) 1204 ferner eine oder mehrere Ein-/Ausgabe-Steuereinrichtung(en) beinhalten, die durch Software gesteuert werden kann bzw. können und zum Empfangen von I/O-Signalen verwendet werden kann bzw. können, die nicht für eine bestimmte Rolle vorgesehen sind.
  • In zumindest einer Ausführungsform kann eines oder können mehrere der SoC(s) 1204 ferner eine breite Palette von Peripherieschnittstellen beinhalten, um Kommunikation mit Peripheriegeräten, Audio-Encodern/Decodern („Codecs“), einer Energieverwaltung und/oder anderen Vorrichtungen zu ermöglichen. Das bzw. die SoC(s) 1204 kann bzw. können dazu verwendet werden, Daten von Kameras (z.B. über Gigabit Multimedia Serial Link und Ethernet verbunden), Sensoren (z.B. einem oder mehreren LIDAR-Sensor(en) 1264, RADAR-Sensor(en) 1260, usw., die über Ethernet verbunden sein können), Daten von dem Bus 1202 (z.B. Fahrzeuggeschwindigkeit 1200, Lenkradposition usw.), Daten von einem oder mehreren GNSS-Sensor(en) 1258 (z.B. über Ethernet oder CAN-Bus verbunden) usw. zu verarbeiten. In zumindest einer Ausführungsform kann eines oder können mehrere der SoC(s) 1204 ferner dedizierte Hochleistungs-Massenspeicher-Steuereinrichtungen beinhalten, die ihre eigenen DMA-Engines beinhalten können und die dazu verwendet werden können, die CPU(s) 1206 von Routine-Datenverwaltungsaufgaben zu befreien.
  • In zumindest einer Ausführungsform kann das bzw. können die SoC(s) 1204 eine durchgängige bzw. Ende-zu-Ende-Plattform mit einer flexiblen Architektur sein, die sich über die Automatisierungsstufen bzw. -level 3-5 erstreckt, wodurch eine umfassende funktionale Sicherheitsarchitektur bereitgestellt wird, die Computer Vision und ADAS-Techniken für Vielfalt und Redundanz nutzt und effizient einsetzt und eine Plattform für einen flexiblen, zuverlässigen Treibersoftware-Stack sowie Deep Learning Tools bereitstellt. In zumindest einer Ausführungsform kann das bzw. können die SoC(s) 1204 schneller, zuverlässiger, und sogar energieeffizienter und platzsparender sein als herkömmliche Systeme. Beispielsweise kann in zumindest einer Ausführungsform der/die Beschleuniger 1214 in Kombination mit der/dem bzw. den CPU(s) 1206, GPU(s) 1208 und Datenspeicher(n) 1216 eine schnelle, effiziente Plattform für autonome Fahrzeuge der Level 3-5 bereitstellen.
  • In zumindest einer Ausführungsform können Computer-Vision-Algorithmen auf CPUs ausgeführt werden, die unter Verwendung einer Hochsprachen-Programmiersprache, wie beispielsweise der Programmiersprache C, dazu konfiguriert sein können, eine Vielzahl von Verarbeitungsalgorithmen über eine Vielzahl von Bilddaten auszuführen. In zumindest einer Ausführungsform sind CPUs jedoch häufig nicht in der Lage, die Leistungsanforderungen vieler Computer Vision-Anwendungen zu erfüllen, wie beispielsweise diejenigen in Bezug auf Ausführungszeit und Stromverbrauch. In zumindest einer Ausführungsform sind viele CPUs nicht in der Lage, komplexe Objekterkennungsalgorithmen in Echtzeit auszuführen, welche in fahrzeuginternen ADAS-Anwendungen und in praktischen autonomen Fahrzeugen der Level 3-5 eingesetzt werden.
  • Die hierin beschriebenen Ausführungsformen ermöglichen es, mehrere neuronale Netzwerke gleichzeitig und/oder sequentiell auszuführen und die Ergebnisse miteinander zu kombinieren, um die autonome Fahrfunktionalität der Level 3-5 zu ermöglichen. Beispielsweise kann in zumindest einer Ausführungsform ein CNN, das auf DLA oder einer diskreten GPU (z.B. der bzw. den GPU(s) 1220) ausgeführt wird, Text- und Worterkennung beinhalten, so dass Supercomputer Verkehrszeichen lesen und verstehen können, einschließlich Zeichen, für die das neuronale Netzwerk nicht speziell trainiert worden ist. In zumindest einer Ausführungsform kann DLA ferner ein neuronales Netzwerk beinhalten, das in der Lage ist, semantisches Verständnis von Zeichen zu identifizieren, zu interpretieren und bereitzustellen und dieses semantische Verständnis an Wegplanungsmodule, die auf dem CPU-Komplex laufen, weiterzugeben.
  • In zumindest einer Ausführungsform können mehrere neuronale Netzwerke gleichzeitig betrieben werden, wie bei dem Fahren auf Level 3, 4 oder 5. Beispielsweise kann in zumindest einer Ausführungsform ein Warnzeichen bestehend aus „Achtung: Blinkende Lichter zeigen eisige Bedingungen an“ zusammen mit einem elektrischen Licht unabhängig oder gemeinsam von mehreren neuronalen Netzwerken interpretiert werden. In zumindest einer Ausführungsform kann das Schild selbst durch ein erstes verwendetes neuronales Netzwerk (z.B. ein trainiertes neuronales Netzwerk) als ein Verkehrszeichen identifiziert werden, kann der Text „Blinkende Lichter zeigen eisige Bedingungen an“ durch ein zweites verwendetes neuronales Netzwerk interpretiert werden, welches die Wegplanungssoftware des Fahrzeugs (vorzugsweise auf dem CPU-Komplex ausgeführt) darüber informiert, dass bei Erkennung von blinkenden Lichtern eisige Bedingungen herrschen. In zumindest einer Ausführungsform kann blinkendes Licht Blinklicht durch Betreiben eines dritten verwendeten neuronalen Netzwerks über mehrere Einzelbilder hinweg identifiziert werden, wodurch die Wegplanungssoftware des Fahrzeugs über das Vorhandensein (oder Fehlen) von blinkenden Lichtern informiert. In zumindest einer Ausführungsform können alle drei neuronalen Netzwerke gleichzeitig laufen, beispielsweise innerhalb von DLA und/oder auf einer oder mehreren GPU(s) 1208.
  • In zumindest einer Ausführungsform kann ein CNN zur Gesichtserkennung und Fahrzeughalteridentifikation Daten von Kamerasensoren dazu verwenden, die Anwesenheit eines autorisierten Fahrers und/oder Besitzers des Fahrzeugs 1200 zu identifizieren. In zumindest einer Ausführungsform kann eine Always-On-Sensor-Verarbeitungs-Engine dazu verwendet werden, das Fahrzeug zu entriegeln, wenn sich der Besitzer der Fahrertür nähert, und Lichter eizuschalten, und, im Sicherheitsmodus, das Fahrzeug zu sperren, wenn der Besitzer das Fahrzeug verlässt. Auf diese Weise bieten das bzw. die SoC(s) 1204 Schutz vor Diebstahl und/oder Autodiebstahl.
  • In zumindest einer Ausführungsform kann ein CNN zur Erkennung und Identifizierung von Einsatzfahrzeugen Daten von den Mikrofonen 1296 verwenden, um Sirenen von Einsatzfahrzeugen zu erkennen und zu identifizieren. In zumindest einer Ausführungsform verwendet ein bzw. verwenden SoC(s) 1204 ein CNN zur Klassifizierung von Umgebungs- und Stadtgeräuschen sowie zur Klassifizierung visueller Daten. In zumindest einer Ausführungsform wird ein CNN, das mit DLA läuft, dazu trainiert, die relative Schließgeschwindigkeit des Einsatzfahrzeugs zu identifizieren (z.B. mittels dem Dopplereffekt). In zumindest einer Ausführungsform kann das CNN auch dazu trainiert werden, Einsatzfahrzeuge zu identifizieren, die spezifisch für das lokale Gebiet sind, in dem das Fahrzeug operiert, wie durch den/die GNSS-Sensor(en) 1258 identifiziert. In zumindest einer Ausführungsform wird das CNN bei einem Betrieb in Europa versuchen, europäische Sirenen zu erkennen, und wenn es sich in den Vereinigten Staaten befindet, wird das CNN versuchen, nur nordamerikanische Sirenen zu identifizieren. In zumindest einer Ausführungsform kann, sobald ein Einsatzfahrzeug unter Verwendung eines oder mehrerer Ultraschallsensor(s/en) 1262 erkannt wird, ein Steuerprogramm dazu verwendet werden, eine Einsatzfahrzeug-Sicherheitsroutine auszuführen, die ein Fahrzeug verlangsamt, zum Straßenrand hin lenkt, das Fahrzeug parkt und/oder das Fahrzeug in den Leerlauf versetzt, bis das/die Einsatzfahrzeug(e) vorbeifahren.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 eine oder mehrere CPU(s) 1218 (z.B. eine oder mehrere diskrete CPU(s) oder dCPU(s)) beinhalten, die über eine Hochgeschwindigkeits-Zwischenverbindung (z.B. PCle) mit einem oder mehreren SoC(s) 1204 gekoppelt sein können. In zumindest einer Ausführungsform können die CPU(s) 1218 beispielsweise einen X86-Prozessor beinhalten. Die CPU(s) 1218 können dazu verwendet werden, eine Vielzahl von Funktionen auszuführen, einschließlich der Vermittlung potenziell inkonsistenter Ergebnisse zwischen ADAS-Sensoren und einem oder mehreren SoC(s) 1204 und/oder der Überwachung von Status und Zustand der Steuereinrichtung(en) 1236 und/oder eines Infotainmentsystems auf einem Chip („Infotainment-SoC“) 1230, zum Beispiel.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 eine oder mehrere GPU(s) 1220 (z.B. eine oder mehrere diskrete GPU(s) oder dGPU(s)) beinhalten, die über eine Hochgeschwindigkeits-Zwischenverbindung (z.B. NVIDIAs NVLINK) mit einem oder mehreren SoC(s) 1204 gekoppelt sein können. In zumindest einer Ausführungsform können die GPU(s) 1220 zusätzliche Funktionalität der künstlichen Intelligenz bereitstellen, beispielsweise durch die Ausführung redundanter und/oder verschiedener neuronaler Netzwerke, und können zum Trainieren und/oder Aktualisieren neuronaler Netzwerke verwendet werden, die zumindest teilweise auf Eingaben (z.B. Sensordaten) von Sensoren des Fahrzeugs 1200 basieren.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner die Netzwerkschnittstelle 1224 beinhalten, die, ohne darauf beschränkt zu sein, die die drahtlose(n) Antenne(n) 1226 beinhalten kann (z.B. eine oder mehrere drahtlose Antennen 1226 für verschiedene Kommunikationsprotokolle, wie beispielsweise eine Mobilfunkantenne, eine Bluetooth-Antenne usw.). In zumindest einer Ausführungsform kann die Netzwerkschnittstelle 1224 dazu verwendet werden, eine drahtlose Verbindung über Internet mit einer Cloud (z.B. mit einem oder mehreren Server(n) und/oder anderen Netzwerkvorrichtungen), mit anderen Fahrzeugen und/oder mit Rechenvorrichtungen (z.B. Client-Geräten von Fahrgästen) zu ermöglichen. In zumindest einer Ausführungsform kann zur Kommunikation mit anderen Fahrzeugen eine direkte Verbindung zwischen dem Fahrzeug 1200 und einem anderem Fahrzeug und/oder eine indirekte Verbindung (z.B. über Netzwerke und über das Internet) hergestellt werden. In zumindest einer Ausführungsform können direkte Verbindungen unter Verwendung einer Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung bereitgestellt werden. Eine Fahrzeug-zu-Fahrzeug-Kommunikationsverbindung kann dem Fahrzeug 1200 Informationen über Fahrzeuge in der Nähe des Fahrzeugs 1200 (z.B. Fahrzeuge vor, auf der Seite des Fahrzeugs 1200 und/oder hinter dem Fahrzeug 1200) bereitstellen. In zumindest einer Ausführungsform kann die vorgenannte Funktionalität Teil einer kooperativen adaptiven Geschwindigkeitsregelungsfunktionalität des Fahrzeugs 1200 sein.
  • In zumindest einer Ausführungsform kann die Netzwerkschnittstelle 1224 ein SoC beinhalten, das Modulations- und Demodulationsfunktionalität bereitstellt und es der/den Steuereinrichtung(en) 1236 ermöglicht, über drahtlose Netzwerke zu kommunizieren. In zumindest einer Ausführungsform kann die Netzwerkschnittstelle 1224 ein Funkfrequenz-Frontend zur Aufwärtskonvertierung von einem Basisband auf Funkfrequenz und zur Abwärtskonvertierung von der Funkfrequenz in das Basisband beinhalten. In zumindest einer Ausführungsform können Frequenzumwandlungen in jeder technisch machbaren Weise durchgeführt werden. Beispielsweise könnten Frequenzumwandlungen durch gut bekannte Prozesse und/oder unter Verwendung von Superheterodyn-Prozessen durchgeführt werden. In zumindest einer Ausführungsform kann die Radiofrequenz-Frontend-Funktionalität durch einen separaten Chip bereitgestellt werden. In zumindest einer Ausführungsform kann die Netzwerkschnittstelle drahtlose Funktionalität zur Kommunikation über LTE, WCDMA, UMTS, GSM, CDMA2000, Bluetooth, Bluetooth LE, Wi-Fi, Z-Wave, ZigBee, LoRaWAN und/oder andere drahtlose Protokolle beinhalten.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner einen oder mehrere Datenspeicher 1228 beinhalten, der bzw. die, ohne darauf beschränkt zu sein, Off-Chip-Speicher (z.B. einen oder mehrere Off-SoC(s) 1204) beinhalten kann bzw. können. In zumindest einer Ausführungsform können der bzw. die Datenspeicher 1228, ohne darauf beschränkt zu sein, ein oder mehrere Speicherelemente beinhalten, einschließlich RAM, SRAM, dynamischem Direktzugriffsspeicher („DRAM“), Video-Direktzugriffsspeicher („VRAM“), Flash-Speicher, Festplatten und/oder anderen Komponenten und/oder Vorrichtungen, die zumindest ein Bit Daten speichern können.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner einen oder mehrere GNSS-Sensor(en) 1258 (z.B. GPS- und/oder assistierte GPS-Sensoren) beinhalten, um bei der Zuordnung, Wahrnehmung, Belegungsnetzgenerierung und/oder bei Wegplanungsfunktionen zu unterstützen. In zumindest einer Ausführungsform kann eine beliebige Anzahl von GNSS-Sensoren 1258 verwendet werden, einschließlich beispielsweise und ohne darauf beschränkt zu sein eines GPS unter Verwendung eines USB-Anschlusses mit einer Ethernet-Seriell-(z.B. RS-232)-Brücke.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner einen oder mehrere RADAR-Sensor(en) 1260 beinhalten. Der/die RADAR-Sensor(en) 1260 kann/können von dem Fahrzeug 1200 zur weiträumigen Fahrzeugerkennung verwendet werden, selbst bei Dunkelheit und/oder extremen Wetterbedingungen. In zumindest einer Ausführungsform können funktionale Sicherheitsebenen von RADAR ASIL B sein. Einer oder mehrere RADAR-Sensor(en) 1260 können CAN und/oder den Bus 1202 (z.B. zur Übertragung von Daten, die von dem/den RADAR-Sensor(en) 1260 erzeugt wurden) zur Steuerung und zum Zugreifen auf Objektverfolgungsdaten verwenden, mit in einigen Beispielen Zugriff auf Ethernet zum Zugreifen auf Rohdaten. In zumindest einer Ausführungsform können eine Vielzahl von RADAR-Sensortypen verwendet werden. Beispielsweise kann der bzw. können die RADAR-Sensor(en) 1260, ohne darauf beschränkt zu sein, für den Einsatz im vorderen, hinteren und seitlichen RADAR-Bereich geeignet sein. In zumindest einer Ausführungsform sind einer oder mehrere der RADAR-Sensor(en) 1260 Puls-Doppler-RADAR-Sensor(en).
  • In zumindest einer Ausführungsform kann der bzw. können die RADAR-Sensor(en) 1260 verschiedene Konfigurationen beinhalten, wie z. B. Fernbereich mit engem Sichtfeld, Nahbereich mit weitem Sichtfeld, Nahbereich-Seitenabdeckung usw. In zumindest einer Ausführungsform kann ein Fernbereich-RADAR für die Funktionalität des adaptiven Geschwindigkeitsreglers verwendet werden. In zumindest einer Ausführungsform können Fernbereich-RADAR-Systeme ein breites Sichtfeld bieten, das durch zwei oder mehr unabhängige Abtastungen, beispielsweise innerhalb eines Bereichs von 250 m, realisiert wird. In zumindest einer Ausführungsform kann der bzw. können die RADAR-Sensor(en) 1260 zur Unterscheidung zwischen statischen und beweglichen Objekten beitragen und von dem ADAS-System 1238 zur Notbremsunterstützung und Vorwärtskollisionswarnung verwendet werden. Der bzw. die Sensor(en) 1260, die in einem Fernbereich RADAR-System enthalten sind, können, ohne darauf beschränkt zu sein, ein monostatisches multimodales RADAR mit mehreren (z.B. sechs oder mehr) festen RADAR-Antennen und einer schnellen CAN- und FlexRay-Schnittstelle beinhalten. In zumindest einer Ausführungsform, mit sechs Antennen, können zentrale vier Antennen ein fokussiertes Strahlmuster erzeugen, das dazu ausgelegt ist, die Umgebungen des Fahrzeugs 1200 bei höheren Geschwindigkeiten mit minimaler Interferenz durch Verkehr auf benachbarten Fahrspuren aufzuzeichnen. In zumindest einer Ausführungsform können zwei weitere Antennen das Sichtfeld erweitern, wodurch es möglich wird, Fahrzeuge, die in die Fahrspur des Fahrzeugs 1200 einfahren oder sie verlassen, schnell zu erfassen.
  • In zumindest einer Ausführungsform können Mittelbereich-RADAR-Systeme als ein Beispiel eine Reichweite von bis zu 160 m (Front) oder 80 m (Heck) und ein Sichtfeld von bis zu 42 Grad (Front) oder 150 Grad (Heck) beinhalten. In zumindest einer Ausführungsform können Nahbereich-RADAR-Systeme, ohne darauf beschränkt zu sein, eine beliebige Anzahl von RADAR-Sensoren 1260 beinhalten, die so ausgelegt sind, dass sie an beiden Enden der hinteren Stoßstange installiert werden können. Wenn es an beiden Enden der hinteren Stoßstange installiert ist, kann in zumindest einer Ausführungsform ein RADAR-Sensorsystem zwei Strahlen erzeugen, die einen toten Winkel im Heck und neben dem Fahrzeug ständig überwachen. In zumindest einer Ausführungsform können Nahbereich-RADAR-Systeme in dem ADAS-System 1238 zur Totwinkelerkennung und/oder zur Spurwechselunterstützung verwendet werden.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner einen oder mehrere Ultraschallsensor(en) 1262 beinhalten. Der bzw. die Ultraschallsensor(en) 1262, die vorne, hinten und/oder seitlich des Fahrzeugs 1200 positioniert sein können, können für eine Einparkhilfe und/oder zur Erstellung und Aktualisierung eines Belegungsrasters verwendet werden. In zumindest einer Ausführungsform kann eine Vielzahl eines oder mehrerer Ultraschallsensor(s/en) 1262 verwendet werden, und können verschiedene Ultraschallsensoren 1262 für verschiedene Erfassungsbereiche (z.B. 2,5m, 4m) verwendet werden. In zumindest einer Ausführungsform kann der bzw. können die Ultraschallsensor(en) 1262 auf funktionalen Sicherheitsebenen von ASIL B arbeiten.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 einen oder mehrere LIDAR-Sensor(en) 1264 beinhalten. Der bzw. die LIDAR-Sensor(en) 1264 können zur Objekt- und Fußgängererkennung, Notbremsung, Kollisionsvermeidung und/oder für andere Funktionen verwendet werden. In zumindest einer Ausführungsform kann der bzw. können die LIDAR-Sensor(en) 1264 eine funktionale Sicherheitsebene wie ASIL B sein. In zumindest einer Ausführungsform kann das Fahrzeug 1200 mehrere LIDAR-Sensoren 1264 (z.B. zwei, vier, sechs, usw.) beinhalten, die Ethernet verwenden können (z.B. um Daten an einen Gigabit-Ethernet-Switch zu liefern).
  • In zumindest einer Ausführungsform kann der bzw. können die LIDAR-Sensor(en) 1264 in der Lage sein, eine Liste von Objekten und deren Abstände für ein 360-Grad-Sichtfeld bereitzustellen. In zumindest einer Ausführungsform kann ein bzw. können handelsübliche(r) LIDAR-Sensor(en) 1264 beispielsweise eine beworbene Reichweite von ca. 100 m aufweisen, mit einer Genauigkeit von 2cm-3cm und mit Unterstützung für eine 100 Mbit/s Ethernet-Verbindung. In zumindest einer Ausführungsform können ein oder mehrere nicht vorstehende LIDAR-Sensoren 1264 verwendet werden. In einer solchen Ausführungsform kann der bzw. können die LIDAR-Sensor(en) 1264 als eine kleine Vorrichtung implementiert sein, die in die Front, das Heck die Seiten- und/oder Ecken des Fahrzeugs 1200 eingebettet sein kann bzw. können. In zumindest einer Ausführungsform kann der bzw. können die LIDAR-Sensor(en) 1264, in einer solchen Ausführungsform, bis zu einem 120 Grad horizontalen und 35 Grad vertikalen Sichtfeld mit einer Reichweite von 200 m auch für Objekte mit geringer Reflektivität bereitstellen. In zumindest einer Ausführungsform kann ein bzw. können frontseitig angebrachte(r) LIDAR-Sensor(en) 1264 für ein horizontales Sichtfeld zwischen 45 Grad und 135 Grad konfiguriert sein.
  • In zumindest einer Ausführungsform können auch LIDAR-Technologien, wie beispielsweise 3D-Flash-LIDAR, verwendet werden. 3D-Flash-LIDAR verwendet einen Laserblitz als Übertragungsquelle, um die Umgebung des Fahrzeugs 1200 bis hin zu ca. 200m auszuleuchten. In zumindest einer Ausführungsform beinhaltet eine Flash-LIDAR-Einheit, ohne darauf beschränkt zu sein, einen Empfänger, der die Laserpulslaufzeit und das auf jedem Pixel reflektierte Licht aufzeichnet, welches wiederum einem Bereich von dem Fahrzeug 1200 zu Objekten entspricht. In zumindest einer Ausführungsform kann Flash-LIDAR mit jedem Laserblitz hochpräzise und verzerrungsfreie Umgebungsbilder erzeugen. In zumindest einer Ausführungsform können vier Flash-LIDAR-Sensoren eingesetzt werden, einer an jeder Seite des Fahrzeugs 1200. In zumindest einer Ausführungsform beinhalten 3D-Flash-LIDAR-Systeme, ohne darauf beschränkt zu sein, eine Festkörper-3D-Starrfeld-LIDAR-Kamera ohne bewegliche Teile außer einem Lüfter (z.B. eine nicht abtastende LIDAR-Vorrichtung). In zumindest einer Ausführungsform kann die Flash-LIDAR-Vorrichtung einen (augensicheren) 5 Nanosekunden-Klasse I-Laserimpuls pro Einzelbild verwenden, und kann reflektiertes Laserlicht in Form von 3D-Bereich-Punktwolken und co-registrierten Intensitätsdaten erfassen.
  • In zumindest einer Ausführungsform kann das Fahrzeug ferner einen oder mehrere IMU-Sensor(en) 1266 beinhalten. In zumindest einer Ausführungsform kann der bzw. können die IMU-Sensor(en) 1266 an der Mitte der Hinterachse des Fahrzeugs 1200 angeordnet sein. In zumindest einer Ausführungsform kann der bzw. können die IMU-Sensoren 1266 beispielsweise, und ohne darauf beschränkt zu sein, einen oder mehrere Beschleuniger, ein oder mehrere Magnetometer, Gyroskop(e), einen oder mehrere Magnetkompass(e) und/oder andere Sensortypen beinhalten. In zumindest einer Ausführungsform, wie beispielsweise in Sechs-Achsen-Anwendungen, kann der bzw. können die IMU-Sensor(en) 1266, ohne darauf beschränkt zu sein, einen oder mehrere Beschleuniger und ein oder mehrere Gyroskop(e) beinhalten. In zumindest einer Ausführungsform, wie beispielsweise in Neun-Achsen-Anwendungen, kann der bzw. können die IMU-Sensoren 1266, ohne darauf beschränkt zu sein, einen oder mehrere Beschleuniger, ein oder mehrere Gyroskop(e) und ein oder mehrere Magnetometer beinhalten.
  • In zumindest einer Ausführungsform kann der bzw. können die IMU-Sensor(en) 1266 als ein miniaturisiertes, hoch performantes GPS-gestütztes Trägheitsnavigationssystem („GPS/INS“) implementiert sein, das mikroelektromechanische Systeme („MEMS“)-Trägheitssensoren, einen hochempfindlichen GPS-Empfänger und fortschrittliche Kalman-Filteralgorithmen kombiniert, um Schätzungen von Position, Geschwindigkeit und Höhe bereitzustellen. In zumindest einer Ausführungsform kann der bzw. können die IMU-Sensor(en) 1266 dem Fahrzeug 1200 ermöglichen, den Kurs zu schätzen, ohne dass eine Eingabe von einem Magnetsensor erforderlich ist, indem er bzw. sie Geschwindigkeitsänderungen von GPS zu dem/den IMU-Sensor(en) 1266 direkt beobachtet und korreliert. In zumindest einer Ausführungsform kann der bzw. können die IMU-Sensor(en) 1266 und GNSS-Sensor(en) 1258 in einer einzigen integrierten Einheit kombiniert sein.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ein oder mehrere Mikrofon(e) 1296 beinhalten, die in und/oder um das Fahrzeug 1200 angeordnet sind. In zumindest einer Ausführungsform kann das/können die Mikrofon(e) 1296 unter anderem zur Erkennung und Identifizierung von Einsatzfahrzeugen verwendet werden.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner eine beliebige Anzahl von Kameratypen beinhalten, einschließlich von einer oder mehreren Stereokamera(s) 1268, einer oder mehreren Weitwinkelkamera(s) 1270, einer oder mehreren Infrarotkamera(s) 1272, einer oder mehreren Umgebungskamera(s) 1274, einer oder mehreren Fernbereichkamera(s) 1298, einer oder mehreren Mittelbereichkamera(s) 1276 und/oder anderen Kameratypen. In zumindest einer Ausführungsform können Kameras zum Erfassen von Bilddaten um eine gesamte Peripherie des Fahrzeugs 1200 herum verwendet werden. In zumindest einer Ausführungsform hängen die verwendeten Kameratypen von dem Fahrzeug 1200 ab. In zumindest einer Ausführungsform kann jede beliebige Kombination von Kameratypen verwendet werden, um eine erforderliche Abdeckung um das Fahrzeug 1200 herum zu gewährleisten. In zumindest einer Ausführungsform kann die Anzahl der Kameras je nach Ausführungsform unterschiedlich sein. Beispielsweise könnte in zumindest einer Ausführungsform das Fahrzeug 1200 sechs Kameras, sieben Kameras, zehn Kameras, zwölf Kameras oder eine andere Anzahl von Kameras beinhalten. Kameras können beispielsweise und ohne darauf beschränkt zu sein Gigabit Multimedia Serial Link („GMSL“) und/oder Gigabit Ethernet unterstützen. In zumindest einer Ausführungsform ist jede der Kameras vorstehend unter Bezugnahme auf 12A und 12B näher beschrieben.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner einen oder mehrere Vibrations- bzw. Schwingungssensor(en) 1242 beinhalten. Der bzw. die Schwingungssensor(en) 1242 können Vibrationen bzw. Schwingungen von Komponenten des Fahrzeugs 1200, wie beispielsweise Achse(n), messen. Beispielsweise können in zumindest einer Ausführungsform Schwingungsänderungen auf eine Veränderung der Fahrbahnoberfläche hinweisen. In zumindest einer Ausführungsform können bei Verwendung von zwei oder mehr Schwingungssensoren 1242 Unterschiede zwischen Schwingungen zum Bestimmen von Reibung oder Schlupf der Fahrbahnoberfläche verwendet werden (z.B. wenn ein Unterschied in Schwingungen zwischen einer angetriebenen Achse und einer frei rotierenden Achse besteht).
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 das ADAS-System 1238 beinhalten. Das ADAS-System 1238 kann in einigen Beispielen, ohne darauf beschränkt zu sein, ein SoC beinhalten. In zumindest einer Ausführungsform kann das ADAS-System 1238, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Kombination aus einem autonomen/adaptiven/automatischen Geschwindigkeits-regelungssystem („ACC“), einem kooperativen adaptiven Geschwindigkeits-regelungssystem („CACC“), einem Vorwärtscrash-Warn („FCW“)-System, einem automatischen Notbremssystem („AEB“), einem Spurhalteverlassens-Warn („LDW“)-System, einem Spurhalteassistenz („LKA“)-System, einem Totwinkelwarn („BSW“)-System, einem Heck-Querverkehrswarn („RCTW“)-System, einem Kollisionswarn („CW“)-System, einem Spurzentrier („LC“)-System und/oder anderen Systemen, Merkmalen und/oder Funktionalität beinhalten.
  • In zumindest einer Ausführungsform kann das ACC-System einen oder mehrere RADAR-Sensor(en) 1260, LIDAR-Sensor(en) 1264 und/oder eine beliebige Anzahl von Kameras verwenden. In zumindest einer Ausführungsform kann das ACC-System ein Längs-ACC-System und/oder ein Seiten-ACC-System beinhalten. In zumindest einer Ausführungsform überwacht und steuert das Längs-ACC-System den Abstand zum Fahrzeug unmittelbar vor dem Fahrzeug 1200 und passt die Geschwindigkeit des Fahrzeugs 1200 automatisch an, um einen Sicherheitsabstand zu den vorausfahrenden Fahrzeugen einzuhalten. In zumindest einer Ausführungsform führt das Seiten-ACC-System die Abstandshaltung durch und weist das Fahrzeug 1200 an, bei Bedarf die Spur zu wechseln. In zumindest einer Ausführungsform ist das Seiten-ACC mit anderen ADAS-Anwendungen wie LC und CW verknüpft.
  • In zumindest einer Ausführungsform verwendet das CACC-System Informationen von anderen Fahrzeugen, die über die Netzwerkschnittstelle 1224 und/oder die drahtlose(n) Antenne(n) 1226 von anderen Fahrzeugen über eine drahtlose Verbindung oder indirekt über eine Netzwerkverbindung (z.B. über das Internet) empfangen werden können. In zumindest einer Ausführungsform können direkte Verbindungen durch eine Fahrzeug-zu-Fahrzeug („V2V“)-Kommunikationsverbindung bereitgestellt werden, während indirekte Verbindungen durch eine Infrastruktur-zu-Fahrzeug („I2V“)-Kommunikationsverbindung bereitgestellt werden können. Im Allgemeinen liefert das V2V-Kommunikationskonzept Informationen über unmittelbar vorausfahrende Fahrzeuge (z.B. Fahrzeuge unmittelbar vor und auf der gleichen Spur wie das Fahrzeug 1200), während das I2V-Kommunikationskonzept Informationen über sich weiter voraus befindenden Verkehr liefert. In zumindest einer Ausführungsform kann das CACC-System eine der oder beide Informationsquellen I2V und V2V beinhalten. In zumindest einer Ausführungsform kann bei gegebenen Informationen über Fahrzeuge vor dem Fahrzeug 1200 das CACC-System zuverlässiger sein und hat Potenzial, die Gleichmäßigkeit des Verkehrsflusses zu verbessern und Staus auf der Straße zu verringern.
  • In zumindest einer Ausführungsform ist das FCW-System dazu ausgelegt, den Fahrer auf eine Gefahr aufmerksam zu machen, so dass der Fahrer Korrekturmaßnahmen ergreifen kann. In zumindest einer Ausführungsform verwendet das FCW-System eine nach vorne gerichtete Kamera und/oder einen oder mehrere RADAR-Sensor(en) 1260, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der/das elektrisch mit einer Fahrerrückmeldung gekoppelt ist, wie beispielsweise einer Anzeige-, Lautsprecher- und/oder Vibrationskomponente. In zumindest einer Ausführungsform kann das FCW-System eine Warnung bereitstellen, beispielsweise in Form eines Tons, einer optischen Warnung, einer Vibration und/oder eines schnellen Bremsimpulses.
  • In zumindest einer Ausführungsform erkennt das AEB-System eine bevorstehende Vorwärtskollision mit einem anderen Fahrzeug oder einem anderen Objekt und kann automatisch Bremsen betätigen, falls der Fahrer innerhalb eines bestimmten Zeit- oder Entfernungsparameters keine Korrekturmaßnahmen ergreift. In zumindest einer Ausführungsform kann das AEB-System eine oder mehrere Frontkamera(s) und/oder einen oder mehrere RADAR-Sensor(en) 1260 verwenden, die mit einem dedizierten Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind. In zumindest einer Ausführungsform fordert dann, wenn das AEB-System eine Gefahr erkennt, das AEB-System typischerweise zunächst den Fahrer auf, Korrekturmaßnahmen zur Kollisionsvermeidung zu ergreifen, und kann, falls der Fahrer keine Korrekturmaßnahmen ergreift, das AEB-System automatisch Bremsen betätigen, um die Auswirkungen einer vorhergesagten Kollision zu verhindern oder zumindest abzumildern. In zumindest einer Ausführungsform kann das AEB-System Techniken wie eine dynamische Bremsunterstützung und/oder ein unfall-imminentes Bremsen beinhalten.
  • In zumindest einer Ausführungsform liefert das LDW-System visuelle, akustische und/oder taktile Warnungen, wie beispielsweise Lenkrad- oder Sitzvibrationen, um den Fahrer zu warnen, wenn das Fahrzeug 1200 Fahrbahnmarkierungen überquert. In zumindest einer Ausführungsform aktiviert sich das LDW-System nicht, wenn der Fahrer durch Aktivieren eines Blinkers ein absichtliches Verlassen der Fahrspur anzeigt. In zumindest einer Ausführungsform kann das LDW-System frontseitig ausgerichtete Kameras verwenden, die mit einem speziellen Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der/das elektrisch mit der Fahrerrückmeldung, wie beispielsweise einer Anzeige-, Lautsprecher- und/oder Vibrationskomponente, gekoppelt ist. In zumindest einer Ausführungsform ist das LKA-System eine Variante des LDW-Systems. Das LKA-System stellt Lenkeingaben oder Bremsbetätigung bereit, um das Fahrzeug 1200 zu korrigieren, falls das Fahrzeug 1200 beginnt, die Fahrspur zu verlassen.
  • In zumindest einer Ausführungsform erkennt und warnt das BSW-System den Fahrer vor Fahrzeugen im toten Winkel eines Fahrzeugs. In zumindest einer Ausführungsform kann das BSW-System einen visuellen, akustischen und/oder taktilen Alarm auslösen, um anzuzeigen, dass das Einfahren in oder Wechseln von Fahrspuren unsicher ist. In zumindest einer Ausführungsform kann das BSW-System eine zusätzliche Warnung ausgeben, wenn der Fahrer einen Blinker verwendet. In zumindest einer Ausführungsform kann das BSW-System eine oder mehrere rückseitig ausgerichtete Kamera(s) und/oder einen oder mehrere RADAR-Sensor(en) 1260 verwenden, die mit einem speziellen Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der/das elektrisch mit einer Fahrerrückmeldung gekoppelt ist, wie beispielsweise einer Anzeige-, Lautsprecher- und/oder Vibrationskomponente.
  • In zumindest einer Ausführungsform kann das RCTW-System eine visuelle, akustische und/oder taktile Benachrichtigung bereitstellen, wenn ein Objekt außerhalb des Rückfahrkamerabereichs erkannt wird, wenn das Fahrzeug 1200 zurücksetzt. In zumindest einer Ausführungsform beinhaltet das RCTW-System das AEB-System, um sicherzustellen, dass die Fahrzeugbremsen betätigt werden, um einen Unfall zu vermeiden. In zumindest einer Ausführungsform kann das RCTW-System einen oder mehrere nach hinten gerichtete RADAR-Sensor(en) 1260 verwenden, die mit einem speziellen Prozessor, DSP, FPGA und/oder ASIC gekoppelt sind, der elektrisch mit einer Fahrerrückmeldung gekoppelt ist, wie beispielsweise eine Anzeige-, Lautsprecher- und/oder Vibrationskomponente.
  • In zumindest einer Ausführungsform können herkömmliche ADAS-Systeme anfällig für falsch positive Ergebnisse sein, welches für einen Fahrer lästig und störend sein können, aber in der Regel nicht katastrophal sind, da herkömmliche ADAS-Systeme den Fahrer warnen und es dem Fahrer ermöglichen, zu entscheiden, ob eine Sicherheitsbedingung tatsächlich vorliegt, und entsprechend zu handeln. In zumindest einer Ausführungsform entscheidet das Fahrzeug 1200 selbst im Falle widersprüchlicher Ergebnisse, ob es das Ergebnis eines primären Computers bzw. Primärcomputers oder eines sekundären Computers bzw. Sekundärcomputers (z.B. erste Steuereinrichtung 1236 oder zweite Steuereinrichtung 1236) berücksichtigt. Beispielsweise kann in zumindest einer Ausführungsform das ADAS-System 1238 ein Backup- und/oder Sekundärcomputer sein, um einem Rationalitätsmodul des Backup-Computers Wahrnehmungsinformationen zur Verfügung zu stellen. In zumindest einer Ausführungsform kann ein Rationalitätsmonitor des Backup-Computers eine redundante, diverse Software auf Hardwarekomponenten ausführen, um Fehler in der Wahrnehmung und dynamische Fahraufgaben zu erkennen. In zumindest einer Ausführungsform können Ausgaben aus dem ADAS-System 1238 einer übergeordneten MCU bereitgestellt werden. In zumindest einer Ausführungsform bestimmt dann, wenn Ausgaben des primärem Computers und des sekundären Computers im Widerspruch stehen, die übergeordnete MCU, wie der Konflikt zu lösen ist, um einen sicheren Betrieb zu gewährleisten.
  • In zumindest einer Ausführungsform kann der Primärcomputer dazu konfiguriert sein, der übergeordneten MCU einen Vertrauensscore zu liefern, der das Vertrauen des Primärcomputers in das gewählte Ergebnis anzeigt. In zumindest einer Ausführungsform kann die übergeordnete MCU dann, wenn der Vertrauenswert einen Schwellenwert überschreitet, der Anweisung des Primärcomputers folgen, unabhängig davon, ob der Sekundärcomputer ein widersprüchliches oder inkonsistentes Ergebnis liefert. In zumindest einer Ausführungsform, in der der Vertrauenswert den Schwellenwert nicht erreicht und in der primäre und der sekundäre Computer unterschiedliche Ergebnisse anzeigen (z.B. einen Konflikt), kann die übergeordnete MCU zwischen Computern vermitteln, um ein geeignetes Ergebnis zu bestimmen.
  • In zumindest einer Ausführungsform kann die übergeordnete MCU dazu konfiguriert sein, um ein oder mehrere neuronale(s) Netzwerk(e) zu betreiben, das/die dazu trainiert und konfiguriert sind, zumindest teilweise basierend auf Ausgaben von dem Primärcomputer und dem Sekundärcomputer Bedingungen zu bestimmen, unter welchen der Sekundärcomputer Fehlalarme liefert. In zumindest einer Ausführungsform können ein bzw. mehrere neuronale Netzwerk(e) in der übergeordneten MCU lernen, wann die Ausgabe des Sekundärcomputers vertrauenswürdig ist und wann nicht. In zumindest einer Ausführungsform kann bzw. können beispielsweise dann, wenn der Sekundärcomputer ein RADARbasiertes FCW-System ist, ein oder mehrere neuronale(s) Netzwerk(e) in der übergeordneten MCU lernen, wenn das FCW-System metallische Objekte identifiziert, die in Wirklichkeit keine Gefahren darstellen, wie beispielsweise ein Drainagerost oder eine Kanalabdeckung, die einen Alarm auslöst. In zumindest einer Ausführungsform kann dann, wenn der Sekundärcomputer ein kamerabasiertes LDW-System ist, ein neuronales Netzwerk in der übergeordneten MCU lernen, LDW zu übersteuern, wenn Radfahrer oder Fußgänger anwesend sind und eine Fahrspurabfahrt tatsächlich das sicherste Manöver ist. In zumindest einer Ausführungsform kann die übergeordnete MCU zumindest eine einer DLA oder einer GPU beinhalten, die für den Betrieb eines oder mehrerer neuronaler Netzwerke mit zugehörigem Speicher geeignet ist. In zumindest einer Ausführungsform kann die übergeordnete MCU eine Komponente von einem oder mehreren SoC(s) umfassen und/oder als solche enthalten sein.
  • In zumindest einer Ausführungsform kann das ADAS-System 1238 einen Sekundärcomputer beinhalten, der die ADAS-Funktionalität unter Verwendung traditioneller Computer Vision-Regeln ausführt. In zumindest einer Ausführungsform kann der Sekundärcomputer klassische Computer Vision-Regeln (if-then) verwenden, und kann das Vorhandensein eines oder mehrerer neuronaler Netzwerke in der übergeordneten MCU die Zuverlässigkeit, Sicherheit und Leistung verbessern. Beispielsweise macht in zumindest einer Ausführungsform eine diverse Implementierung und absichtliche Nichtidentität das Gesamtsystem fehlertoleranter, insbesondere gegenüber Fehlern, die durch Funktionalität von Software (oder der Software-Hardware-Schnittstelle) verursacht werden. Zum Beispiel kann in zumindest einer Ausführungsform dann, wenn es einen Software-Bug oder einen Fehler in der Software gibt, die auf dem primären Computer ausgeführt wird, und nicht-identischer Softwarecode, der auf dem sekundären Computer ausgeführt wird, dasselbe Gesamtergebnis liefert, die übergeordnete MCU mehr Vertrauen dahingehend haben, dass das Gesamtergebnis korrekt ist, und verursacht der Bug in der Software oder der Hardware auf dem primären Computer keinen wesentlichen Fehler.
  • In zumindest einer Ausführungsform kann die Ausgabe des ADAS-Systems 1238 in den Wahrnehmungsblock des primären Computers und/oder den Block für dynamische Fahraufgaben des primären Computers eingespeist werden. Wenn beispielsweise in zumindest einer Ausführungsform das ADAS-System 1238 eine Vorwärts-Crash-Warnung aufgrund eines unmittelbar voraus liegenden Objekts anzeigt, kann der Wahrnehmungsblock diese Informationen bei der Identifizierung von Objekten verwenden. In zumindest einer Ausführungsform kann der Sekundärcomputer ein eigenes neuronales Netzwerk aufweisen, welches trainiert ist und somit das Risiko von Fehlalarmen reduziert, wie hierin beschrieben.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner das Infotainment-SoC 1230 (z.B. ein fahrzeuginternes Infotainmentsystem (IVI)) beinhalten. Obwohl als SoC dargestellt und beschrieben, kann das Infotainmentsystem 1230 in zumindest einer Ausführungsform kein SoC sein und kann, ohne darauf beschränkt zu sein, zwei oder mehr diskrete Komponenten beinhalten. In zumindest einer Ausführungsform kann das Infotainment-SoC 1230, ohne darauf beschränkt zu sein, eine Kombination aus Hard- und Software beinhalten, die dazu verwendet werden kann, Audio (z.B. Musik, einen persönlichen digitalen Assistenten, Navigationsanweisungen, Nachrichten, Radio usw.), Video (z.B. TV, Filme, Streaming usw.), Telefon (z.B. Freisprecheinrichtung), Netzwerkkonnektivität (z.B. LTE, WiFi, usw.) und/oder Informationsdienste (z.B. Navigationssysteme, Rückfahrhilfen, ein Radiodatensystem, fahrzeugbezogene Informationen wie Kraftstoffstand, Gesamtstrecke, Bremsflüssigkeitsstand, Ölstand, Tür offen/geschlossen, Luftfilterinformationen, usw.) für das Fahrzeug 1200 bereitzustellen. Beispielsweise könnte das Infotainment-SoC 1230 Radios, Plattenspieler, Navigationssysteme, Videospieler, USB- und Bluetooth-Konnektivität, Car Computer, In-Car-Entertainment, WiFi, Lenkrad-Audiosteuerungen, Freisprech-Sprachsteuerung, eine Head-Up-Anzeige („HUD“), eine HMI-Anzeige 1234, eine Telematikvorrichtung, ein Bedienfeld (z.B. zum Steuern und/oder Interagieren mit verschiedenen Komponenten, Funktionen und/oder Systemen) und/oder andere Komponenten beinhalten. In zumindest einer Ausführungsform kann das Infotainment-SoC 1230 ferner dazu verwendet werden, Benutzern des Fahrzeugs Informationen (z.B. visuell und/oder akustisch) bereitzustellen, wie beispielsweise Informationen aus dem ADAS-System 1238, autonome Fahrinformationen wie beispielsweise geplante Fahrzeugmanöver, Trajektorien, Umgebungsinformationen (z.B. Kreuzungsinformationen, Fahrzeuginformationen, Straßeninformationen usw.) und/oder andere Informationen.
  • In zumindest einer Ausführungsform kann das Infotainment-SoC 1230 jede Menge und Art von GPU-Funktionalität beinhalten. In zumindest einer Ausführungsform kann das Infotainment-SoC 1230 über den Bus 1202 (z.B. CAN-Bus, Ethernet, usw.) mit anderen Vorrichtungen, Systemen und/oder Komponenten des Fahrzeugs 1200 kommunizieren. In zumindest einer Ausführungsform kann das Infotainment-SoC 1230 derart mit einer übergeordneten MCU gekoppelt sein, dass die GPU des Infotainmentsystems einige Selbstfahrfunktionen ausführen kann, falls die primären Steuereinrichtung(en) 1236 (z.B. der Primär- und/oder Backup-Computer des Fahrzeugs 1200) ausfallen. In zumindest einer Ausführungsform kann das Infotainment-SoC 1230 das Fahrzeug 1200 in einen Chauffeur-zu-sicherem - Stopp-Modus bringen, wie hierin beschrieben.
  • In zumindest einer Ausführungsform kann das Fahrzeug 1200 ferner das Kombiinstrument 1232 beinhalten (z.B. ein digitales Armaturenbrett, ein elektronisches Kombiinstrument, eine digitale Instrumententafel usw.). Das Kombiinstrument 1232 kann, ohne darauf beschränkt zu sein, eine Steuereinrichtung und/oder einen Supercomputer (z.B. eine diskrete Steuereinrichtung oder einen Supercomputer) beinhalten. In zumindest einer Ausführungsform kann das Kombiinstrument 1232, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Kombination einer Reihe von Instrumenten beinhalten, wie beispielsweise einen Geschwindigkeitsmesser, einen Kraftstoffstand, einen Öldruck, einen Drehzahlmesser, einen Kilometerzähler, einen Blinker, eine Schaltpositionsanzeige, eine oder mehrere Sicherheitsgurtwarnleuchte(n), eine oder mehrere Feststellbremswarnleuchte(n), eine oder mehrere Motorstörungsleuchte(n), ein zusätzliches Rückhaltesystem (z.B. Airbag), Beleuchtungssteuerungen, Sicherheitssystemsteuerungen, Navigationsinformationen usw. In einigen Beispielen können Informationen zwischen dem Infotainment-SoC 1230 und dem Kombiinstrument 1232 angezeigt und/oder ausgetauscht werden. In zumindest einer Ausführungsform kann das Kombiinstrument 1232 als Teil des Infotainment-SoC 1230 integriert sein oder umgekehrt.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten bezüglich der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit den 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem System von 12C zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • In zumindest einer Ausführungsform können verschiedene vorstehend beschriebene Sensoren auf die in 1-8 dargestellten und beschriebenen Techniken angewendet sein. In zumindest einer Ausführungsform kann beispielsweise ein Lidar, ein Radar, ein Infrarot- oder ein Ultraschallsensor die Kamera ersetzen, und können Bilder, die in das neuronale Netzwerk eingespeist werden, Lidarbilder, Radarbilder, Infrarotbilder oder Ultraschalldaten sein.
  • 12D ist ein Diagramm eines Systems 1276 zur Kommunikation zwischen einem oder mehreren Cloud-basierten Server(n) und dem autonomen Fahrzeug 1200 von 12A gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann das System 1276, ohne darauf beschränkt zu sein, einen oder mehrere Server 1278, ein oder mehrere Netzwerk(e) 1290 und eine beliebige Anzahl und Art von Fahrzeugen, einschließlich des Fahrzeugs 1200, beinhalten. Der bzw. die Server 1278 können, ohne darauf beschränkt zu sein, eine Vielzahl von GPUs 1284(A) - 1284(H) (hierin gemeinsam als GPUs 1284 bezeichnet), PCIe-Switches 1282(A)-1282(H) (hierin gemeinsam als PCIe-Switches 1282 bezeichnet) und/oder CPUs 1280(A) - 1280(B) (hier gemeinsam als CPUs 1280 bezeichnet) beinhalten. Die GPUs 1284, die CPUs 1280 und die PCIe-Switches 1282 können mit Hochgeschwindigkeits-Zwischenverbindungen verbunden sein, wie beispielsweise, und ohne darauf beschränkt zu sein, die NVLink-Schnittstellen 1288, die von NVIDIA entwickelt wurden, und/oder die PCle-Anschlüsse 1286. In zumindest einer Ausführungsform sind die GPUs 1284 über einen NVLink und/oder ein NVSwitch-SoC verbunden, und sind die GPUs 1284 und die PCIe-Switches 1282 über PCIe-Zwischenverbindungen verbunden. In zumindest einer Ausführungsform sind zwar acht GPUs 1284, zwei CPUs 1280 und vier PCIe-Switches 1282 dargestellt, jedoch ist dies nicht als Einschränkung zu verstehen. In zumindest einer Ausführungsform kann jeder von einem oder mehreren Server(n) 1278, ohne darauf beschränkt zu sein, eine beliebige Anzahl von GPUs 1284, CPUs 1280 und/oder PCIe-Switches 1282 in beliebiger Kombination beinhalten. Beispielsweise könnten in zumindest einer Ausführungsform der bzw. die die Server 1278 jeweils acht, sechzehn, zweiunddreißig und/oder mehr GPUs 1284 beinhalten.
  • In zumindest einer Ausführungsform können der bzw. die Server 1278 über das/die Netzwerk(e) 1290 und von Fahrzeugen Bilddaten empfangen, die Bilder darstellen, die unerwartete oder veränderte Straßenverhältnisse zeigen, wie beispielsweise kürzlich begonnene Straßenarbeiten. In zumindest einer Ausführungsform können der bzw. die Server 1278 über das/die Netzwerk(e) 1290 und an Fahrzeuge, neuronale Netzwerke 1292, aktualisierte neuronale Netzwerke 1292 und/oder Karteninformationen 1294 übertragen, einschließlich, aber nicht beschränkt auf, Informationen über Verkehr und Straßenzustand. In zumindest einer Ausführungsform können Aktualisierungen für Karteninformationen 1294, ohne darauf beschränkt zu sein, Aktualisierungen der HD-Karte 1222 beinhalten, wie beispielsweise Informationen über Baustellen, Schlaglöcher, Umwege, Überschwemmungen und/oder andere Hindernisse. In zumindest einer Ausführungsform können neuronale Netzwerke 1292, aktualisierte neuronale Netzwerke 1292 und/oder Karteninformationen 1294 aus neuem Training und/oder Erfahrungen, die in von einer beliebigen Anzahl von Fahrzeugen in der Umgebung empfangenen Daten repräsentiert sind, hervorgegangen sein, und/oder zumindest teilweise auf in einem Rechenzentrum (z.B. unter Verwendung des bzw. der Server(n) 1278 und/oder anderen Servern) durchgeführtem Training basieren.
  • In zumindest einer Ausführungsform können der bzw. die Server 1278 dazu verwendet werden, maschinell lernende Modelle (z.B. neuronale Netzwerke) zu trainieren, die zumindest teilweise auf Trainingsdaten basieren. Trainingsdaten können von Fahrzeugen erzeugt sein, und/oder in einer Simulation (z.B. mit einer Spielmaschine) erzeugt sein. In zumindest einer Ausführungsform sind beliebig viele Trainingsdaten markiert (z.B. wenn das zugehörige neuronale Netzwerk von überwachtem Lernen profitiert) und/oder einer anderen Vorverarbeitung unterzogen sein. In zumindest einer Ausführungsform sind beliebig viele Trainingsdaten nicht markiert und/oder vorverarbeitet (z.B. wenn das zugehörige neuronale Netzwerk kein überwachtes Lernen erfordert). In zumindest einer Ausführungsform können, nachdem Modelle des maschinellen Lernens trainiert sind, maschinell lernende Modelle von Fahrzeugen verwendet werden (z.B. an Fahrzeuge über das/die Netzwerk(e) 1290 übertragen werden) und/oder können maschinell lernende Modelle von dem bzw. den Server(n) 1278 zur Fernüberwachung von Fahrzeugen verwendet werden.
  • In zumindest einer Ausführungsform können der bzw. die Server 1278 Daten von Fahrzeugen empfangen und Daten auf aktuelle neuronale Echtzeit-Netzwerke zur intelligenten Echtzeit-Inferenzierung anwenden. In zumindest einer Ausführungsform können der bzw. die Server 1278 Deep-Learning-Supercomputer und/oder dedizierte Kl-Computer beinhalten, die von einer oder mehreren GPU(s) 1284 angetrieben werden, wie beispielsweise DGX- und DGX-Station-Maschinen, die von NVIDIA entwickelt wurden. In zumindest einer Ausführungsform jedoch können der bzw. die Server 1278 eine Deep-Learning-Infrastruktur beinhalten, die CPU-getriebene Rechenzentren verwendet.
  • In zumindest einer Ausführungsform kann die Deep-Learning-Infrastruktur des bzw. der Server(s) 1278 in der Lage sein, schnell und in Echtzeit zu inferenzieren, und kann diese Fähigkeit dazu nutzen, den Zustand von Prozessoren, Software und/oder zugehöriger Hardware in dem Fahrzeug 1200 zu evaluieren und zu überprüfen. Beispielsweise kann in zumindest einer Ausführungsform die Deep-Learning-Infrastruktur periodische Aktualisierungen von dem Fahrzeug 1200 empfangen, wie beispielsweise eine Sequenz von Bildern und/oder Objekten, die das Fahrzeug 1200 in dieser Folge von Bildern angeordnet hat (z.B. mittels Computer Vision und/oder anderen maschinell lernenden Objektklassifizierungstechniken). In zumindest einer Ausführungsform kann die Deep-Learning-Infrastruktur sein eigenes neuronales Netzwerk betreiben, um Objekte zu identifizieren und diese mit Objekten zu vergleichen, die von dem Fahrzeug 1200 identifiziert wurden, und können dann, falls Ergebnisse nicht übereinstimmen und die Deep-Learning-Infrastruktur zu dem Schluss kommt, dass die KI in dem Fahrzeug 1200 nicht funktioniert, der bzw. die Server 1278 ein Signal an das Fahrzeug 1200 senden, das einen ausfallsicheren Computer des Fahrzeugs 1200 dazu anweist, die Steuerung zu übernehmen, Fahrgäste zu benachrichtigen und ein sicheres Parkmanöver durchzuführen.
  • In zumindest einer Ausführungsform können der bzw. die Server 1278 einen oder mehrere GPU(s) 1284 und einen oder mehrere programmierbare Inferenz-Beschleuniger (z.B. NVIDIAs TensorRT 3) beinhalten. In zumindest einer Ausführungsform kann die Kombination aus GPU-betriebenen Servern und Inferenzbeschleunigung eine Echtzeitreaktion ermöglichen. In zumindest einer Ausführungsform können, beispielsweise wenn die Leistung weniger kritisch ist, Server, die von CPUs, FPGAs und anderen Prozessoren betrieben werden, zur Inferenzierung verwendet werden. In zumindest einer Ausführungsform werden die Hardware-Strukturen) 915 dazu verwendet, eine oder mehrere Ausführungsformen auszuführen. Einzelheiten zur der bzw. den Hardware-Strukturen) 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt.
  • COMPUTERSYSTEME
  • 13 ist ein Blockdiagramm, das ein beispielhaftes Computersystem veranschaulicht, welches ein System mit miteinander verbundenen Vorrichtungen und Komponenten, ein System auf einem Chip (SOC) oder eine Kombination davon 1300 sein kann, das mit einem Prozessor gebildet ist, der Ausführungseinheiten zum Ausführen einer Anweisung beinhalten kann, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann das Computersystem 1300, ohne darauf beschränkt zu sein, eine Komponente beinhalten, wie beispielsweise einen Prozessor 1302, um Ausführungseinheiten mit Logik zum Ausführen von Algorithmen für Prozessdaten in Übereinstimmung mit der vorliegenden Offenbarung, wie beispielsweise der hierin beschriebenen Ausführungsformen, durchzuführen. In zumindest einer Ausführungsform kann das Computersystem 1300 Prozessoren wie beispielsweise die PENTIUM®-Prozessorfamilie, Xeon™, Itanium®, XScale™ und/oder StrongARM™, Intel® Core™ oder Intel® Nervana™ Mikroprozessoren beinhalten, die von der Intel Corporation in Santa Clara, Kalifornien, erhältlich sind, obwohl auch andere Systeme (einschließlich PCs mit anderen Mikroprozessoren, Engineering-Arbeitsplätze, Set-Top-Boxen und dergleichen) verwendet werden können. In zumindest einer Ausführungsform kann das Computersystem 1300 eine Version des Betriebssystems WINDOWS ausführen, das bei der Microsoft Corporation in Redmond, Wash. erhältlich ist, obwohl auch andere Betriebssysteme (z.B. UNIX und Linux), eingebettete Software und/oder grafische Benutzeroberflächen verwendet werden können.
  • Ausführungsformen können in anderen Geräten wie beispielsweise Handheld-Geräten und Embedded-Anwendungen verwendet werden. Einige Beispiele für tragbare bzw. Handheld-Geräte beinhalten Mobiltelefone, Internet-Protokoll-Geräte, Digitalkameras, persönliche digitale Assistenten („PDAs“) und Handheld-PCs. In zumindest einer Ausführungsform 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 jedes andere System beinhalten, das eine oder mehrere Anweisungen ausführen kann, gemäß zumindest einer Ausführungsform.
  • In zumindest einer Ausführungsform kann das Computersystem 1300, ohne darauf beschränkt zu sein, den Prozessor 1302 beinhalten, der, ohne darauf beschränkt zu sein, eine oder mehrere Ausführungseinheiten 1308 beinhalten kann, um in Übereinstimmung mit hierin beschriebenen Techniken ein Training eines maschinell lernenden Modells durchzuführen und/oder zu inferenzieren. In zumindest einer Ausführungsform ist ein System 13 ein Einzelprozessor-Desktop- oder Serversystem, aber in einer anderen Ausführungsform kann das System 13 ein Multiprozessorsystem sein. In zumindest einer Ausführungsform kann der Prozessor 1302, ohne darauf beschränkt zu sein, einen Mikroprozessor mit komplexem Befehlssatz-Computer („CISC“), einen Mikroprozessor mit reduziertem Befehlssatz („RISC“), einen Mikroprozessor mit sehr langem Befehlswort („VLIW“), einen Prozessor, der eine Kombination von Befehlssätzen implementiert, oder jede andere Prozessorvorrichtung, wie beispielsweise einen digitalen Signalprozessor, beinhalten. In zumindest einer Ausführungsform kann der Prozessor 1302 mit einem Prozessorbus 1310 gekoppelt sein, der Datensignale zwischen dem Prozessor 1302 und anderen Komponenten des Computersystems 1300 übertragen kann.
  • In zumindest einer Ausführungsform kann der Prozessor 1302, ohne darauf beschränkt zu sein, einen internen Level 1 („L1“)-Cache-Speicher („Cache“) 1304 beinhalten. In zumindest einer Ausführungsform kann der Prozessor 1302 einen einzelnen internen Cache oder mehrere Ebenen internen Caches aufweisen. In zumindest einer Ausführungsform kann sich der Cache-Speicher extern zum Prozessor 1302 befinden. Andere Ausführungsformen können je nach Implementierung und Bedarf auch eine Kombination aus internen und externen Caches beinhalten. In zumindest einer Ausführungsform kann eine Registerdatei 1306 verschiedene Arten von Daten in verschiedenen Registern speichern, einschließlich, aber nicht beschränkt auf, Ganzzahlregister, Gleitkommaregister, Zustandsregister und Befehlszeigerregister.
  • In zumindest einer Ausführungsform befindet sich die Ausführungseinheit 1308, einschließlich, aber ohne darauf beschränkt zu sein, der Logik zum Ausführen von Ganzzahl- und Gleitkommaoperationen, ebenfalls in dem Prozessor 1302. Der Prozessor 1302 kann auch einen Mikrocode („ucode“)-Nur-Lese-Speicher („ROM“) beinhalten, der Mikrocode für bestimmte Makrobefehle speichert. In zumindest einer Ausführungsform kann die Ausführungseinheit 1308 Logik zur Handhabung eines gepackten Befehlssatzes 1309 beinhalten. In zumindest einer Ausführungsform können, indem der gepackte Befehlssatz 1309 in den Befehlssatz eines Universalprozessors 1302 aufgenommen wird, zusammen mit zugehörigen Schaltkreisen zur Ausführung von Anweisungen Operationen, die von vielen Multimedia-Anwendungen verwendet werden, unter Verwendung von gepackten Daten in einem Universalprozessor 1302 durchgeführt werden. In einer oder mehreren Ausführungsformen können viele Multimedia-Anwendungen beschleunigt und effizienter ausgeführt werden, indem die volle Breite eines Datenbusses des Prozessors für die Ausführung von Operationen auf gepackten Daten verwendet wird, welches die Notwendigkeit eliminieren kann, kleinere Dateneinheiten über den Datenbus des Prozessors zu übertragen, um eine oder mehrere Operationen jeweils Datenelement für Datenelement durchzuführen.
  • In zumindest einer Ausführungsform kann die Ausführungseinheit 1308 auch in Mikrocontrollern, eingebetteten Prozessoren, Grafikvorrichtungen, DSPs und anderen Arten von Logikschaltungen verwendet werden. In zumindest einer Ausführungsform kann das Computersystem 1300, ohne darauf beschränkt zu sein, einen Speicher 1320 beinhalten. In zumindest einer Ausführungsform kann der Speicher 1320 als eine Dynamic Random Access Memory („DRAM“)-Vorrichtung, als eine Static Random Access Memory („SRAM“)-Vorrichtung, als eine Flash-Speichervorrichtung oder eine andere Speichervorrichtung implementiert sein. Der Speicher 1320 kann eine oder mehrere Anweisung(en) 1319 und/oder Daten 1321 speichern, die von Datensignalen repräsentiert werden, die von dem Prozessor 1302 ausgeführt werden können.
  • In zumindest einer Ausführungsform kann der Systemlogikchip mit dem Prozessorbus 1310 und dem Speicher 1320 gekoppelt sein. In zumindest einer Ausführungsform kann der Systemlogikchip, ohne darauf beschränkt zu sein, einen Speichercontroller-Hub („MCH“) 1316 beinhalten, und kann der Prozessor 1302 über den Prozessorbus 1310 mit dem MCH 1316 kommunizieren. In zumindest einer Ausführungsform kann der MCH 1316 einen Speicherpfad 1318 mit hoher Bandbreite zu dem Speicher 1320 für Anweisungs- und Datenspeicherung sowie zur Speicherung von Grafikbefehlen, Daten und Texturen bereitstellen. In zumindest einer Ausführungsform kann der MCH 1316 Datensignale zwischen dem Prozessor 1302, dem Speicher 1320 und anderen Komponenten in dem Computersystem 1300 leiten und Datensignale zwischen dem Prozessorbus 1310, dem Speicher 1320 und einem System-I/O 1322 überbrücken. In zumindest einer Ausführungsform kann der Systemlogikchip einen Grafikport zur Kopplung an eine Grafiksteuereinrichtung bereitstellen. In zumindest einer Ausführungsform kann der MCH 1316 über einen Speicherpfad 1318 mit hoher Bandbreite mit dem Speicher 1320 gekoppelt sein, und kann eine Grafik-/Video-Karte 1312 über eine Accelerated Graphics Port („AGP“) Zwischenverbindung 1314 mit dem MCH 1316 gekoppelt sein.
  • In zumindest einer Ausführungsform kann das Computersystem 1300 die System-I/O 1322 verwenden, das ein proprietärer Hub-Schnittstellenbus ist, um den MCH 1316 mit dem I/O-Controller-Hub („ICH“) 1330 zu verbinden. In zumindest einer Ausführungsform kann der ICH 1330 über einen lokalen I/O-Bus direkte Verbindungen zu einigen I/O-Vorrichtungen bereitstellen. In zumindest einer Ausführungsform kann der lokale I/O-Bus, ohne darauf beschränkt zu sein, einen Hochgeschwindigkeits-I/O-Bus zum Verbinden von Peripheriegeräten mit dem Speicher 1320, dem Chipsatz und dem Prozessor 1302 beinhalten. Beispiele können, ohne darauf beschränkt zu sein, eine Audiosteuereinrichtung 1329, einen Firmware-Hub („Flash-BIOS“) 1328, einen drahtlosen Sender-Empfänger 1326, einen Datenspeicher 1324, eine Legacy-I/O-Steuereinrichtung 1323 mit Benutzereingabe und Tastaturschnittstellen, einen seriellen Erweiterungsport 1327, wie beispielsweise Universal Serial Bus („USB“), und eine Netzwerksteuereinrichtung 1334 sein. Die Datenspeicherung 1324 kann ein Festplattenlaufwerk, ein Diskettenlaufwerk, eine CD-ROM-Vorrichtung, eine Flash-Speicher-Vorrichtung oder eine andere Massenspeichervorrichtung umfassen.
  • In zumindest einer Ausführungsform veranschaulicht 13 ein System, welches miteinander verbundene Hardware-Vorrichtungen oder „Chips“ beinhaltet, während in anderen Ausführungsformen 13 ein beispielhaftes System auf einem Chip („SoC“) darstellen kann. In zumindest einer Ausführungsform können die in 13 dargestellten Vorrichtungen mit proprietären Zwischenverbindungen, standardisierten Zwischenverbindungen (z.B. PCle) oder einer Kombination derselben verbunden sein. In zumindest einer Ausführungsform sind eine oder mehrere Komponenten des Systems 1300 unter Verwendung von Compute Express Link (CXL)-Zwischenverbindungen verbunden.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann in dem System von 13 die Inferenzierungs- und/oder Trainingslogik 915 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 14 ist ein Blockdiagramm, das eine elektronische Vorrichtung 1400 zur Verwendung eines Prozessors 1410 darstellt, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann die elektronische Vorrichtung 1400 beispielsweise und ohne darauf beschränkt zu sein ein Notebook, ein turmförmig aufgebauter bzw. Tower-Server, ein Rahmengestell- bzw. Rack-Server, ein Einschub- bzw. Blade-Server, ein tragbarer Rechner bzw. Laptop, ein Tischcomputer bzw. Desktop, ein Tablett, ein mobiles Gerät, ein Telefon, ein eingebetteter bzw. Embedded-Computer oder eine andere geeignete elektronische Vorrichtung sein.
  • In zumindest einer Ausführungsform kann das System 1400, ohne darauf beschränkt zu sein, den Prozessor 1410 beinhalten, der kommunikativ mit einer beliebigen geeigneten Anzahl oder Art von Komponenten, Peripheriegeräten, Modulen oder Vorrichtungen gekoppelt ist. In zumindest einer Ausführungsform ist der Prozessor 1410 über einen Bus oder eine Schnittstelle, wie beispielsweise einen 1°C-Bus, einen System Management Bus („SMBus“), einen Low Pin Count (LPC)-Bus, eine serielle Peripherieschnittstelle („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 Asynchronous Receiver/Transmitter („UART“)-Bus, gekoppelt. In zumindest einer Ausführungsform veranschaulicht 14 ein System, welches miteinander verbundene Hardware-Vorrichtungen oder „Chips“ beinhaltet, während in anderen Ausführungsformen 14 ein beispielhaftes System auf einem Chip („SoC“) darstellen kann. In zumindest einer Ausführungsform können die in 14 dargestellten Vorrichtungen mit proprietären Verbindungen, standardisierten Verbindungen (z.B. PCle) oder einer Kombination davon verbunden sein. In zumindest einer Ausführungsform sind eine oder mehrere Komponenten von 14 unter Verwendung von Compute Express Link (CXL)-Verbindungen miteinander verbunden.
  • In zumindest einer Ausführungsform kann 14 eine Anzeige 1424, einen berührungsempfindlichen Bildschirm bzw. Touchscreen 1425, ein berührungsempfindliches Feld bzw. Touchpad 1430, eine Nahfeld-Kommunikationseinheit bzw. Near Field Communications Unit („NFC“) 1445, einen Sensor-Hub 1440, einen Thermosensor 1446, einen Express-Chipsatz („EC“) 1435, ein Trusted Platform Module („TPM“) 1438, BIOS/Firmware/Flash-Speicher („BIOS, FW-Flash“) 1422, einen DSP 1460, ein Laufwerk („SSD oder HDD“) 1420, wie beispielsweise eine Solid State Disk („SSD“) oder eine Festplatte („HDD“), eine Wireless Local Area Network Unit („WLAN“) 1450, eine Bluetooth-Einheit 1452, eine Wireless Wide Area Network Unit („WWAN“) 1456, ein Global Positioning System (GPS) 1455, eine Kamera („USB 3.0-Kamera“) 1454, wie beispielsweise eine USB 3.0-Kamera, oder eine Low Power Double Data Rate („LPDDR“)-Speichereinheit („LPDDR3“) 1415, die beispielsweise im LPDDR3-Standard implementiert ist, beinhalten. Diese Komponenten können jeweils in beliebig geeigneter Weise implementiert sein.
  • In zumindest einer Ausführungsform können andere Komponenten über die vorstehend beschriebenen Komponenten kommunikativ mit dem Prozessor 1410 gekoppelt sein. In zumindest einer Ausführungsform können ein Beschleunigungssensor 1441, ein Umgebungslichtsensor (Ambient Light Sensor, „ALS“) 1442, ein Kompass 1443 und ein Gyroskop 1444 kommunikativ mit dem Sensor-Hub 1440 gekoppelt sein. In zumindest einer Ausführungsform können der Thermosensor 1439, ein Lüfter 1437, eine Tastatur 1446 und ein Touchpad 1430 kommunikativ mit dem EC 1435 gekoppelt sein. In zumindest einer Ausführungsform können Lautsprecher 1463, ein Kopfhörer 1464 und ein Mikrofon 1465 kommunikativ mit einer Audioeinheit 1464 („Audio-Codec und Klasse D-Verstärker bzw. Class D-Amp“) 1464 gekoppelt sein, die wiederum kommunikativ mit dem DSP 1460 gekoppelt sein kann. In zumindest einer Ausführungsform kann die Audioeinheit 1464 beispielsweise und ohne darauf beschränkt zu sein einen Audio-Kodierer/Dekodierer („Codec“) und einen Klasse-D-Verstärker beinhalten. In zumindest einer Ausführungsform kann die SIM-Karte („SIM“) 1457 kommunikativ mit der WWAN-Einheit 1456 gekoppelt sein. In zumindest einer Ausführungsform können Komponenten wie die WLAN-Einheit 1450 und die Bluetooth-Einheit 1452 sowie die WWAN-Einheit 1456 in einem Formfaktor der nächsten Generation bzw. Next-Generation-Formfaktor („NGFF“) implementiert sein.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann in dem System von 14 die Inferenzierungs- und/oder Trainingslogik 915 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 15 veranschaulicht ein Computersystem 1500 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist das Computersystem 1500 dazu konfiguriert, verschiedene Prozesse und Verfahren zu implementieren, die in dieser Offenbarung beschrieben sind.
  • In zumindest einer Ausführungsform umfasst das Computersystem 1500, ohne darauf beschränkt zu sein, zumindest eine Zentraleinheit („CPU“) 1502, die mit einem Kommunikationsbus 1510 verbunden ist, der unter Verwendung eines beliebigen geeigneten Protokolls, wie beispielsweise PCI („Peripheral Component Interconnect“), Peripheral Component Interconnect Express („PCI-Express“), AGP („Accelerated Graphics Port“), HyperTransport oder eines anderen Busses oder einem oder mehreren Punkt-zu-Punkt-Kommunikationsprotokoll(en) implementiert ist. In zumindest einer Ausführungsform beinhaltet das Computersystem 1500, ohne darauf beschränkt zu sein, einen Hauptspeicher 1504 und Steuerlogik (die z.B. als Hardware, Software oder eine Kombination davon implementiert ist), und werden Daten in dem Hauptspeicher 1504 gespeichert, der in Form eines Direktzugriffsspeichers („RAM“) vorliegen kann. In zumindest einer Ausführungsform stellt ein Netzwerkschnittstellen-Subsystem („Netzwerkschnittstelle“) 1522 eine Schnittstelle zu anderen Rechenvorrichtungen und Netzwerken bereit zum Empfangen von Daten von und Übertragen von Daten an andere(n) Systeme(n) ausgehend von dem Computersystem 1500.
  • In zumindest einer Ausführungsform beinhaltet das Computersystem 1500 in zumindest einer Ausführungsform, ohne darauf beschränkt zu sein, Eingabevorrichtungen 1508, ein Parallelverarbeitungssystem 1512 und Anzeigevorrichtungen 1506, die unter Verwendung einer herkömmlichen Kathodenstrahlröhre („CRT“), einer Flüssigkristallanzeige („LCD“), Leuchtdioden („LED“), einer Plasmaanzeige oder anderer geeigneter Anzeigetechnologien implementiert sein können. In zumindest einer Ausführungsform wird eine Benutzereingabe von Eingabegeräten 1508 wie beispielsweise einer Tastatur, einer Maus, einem Touchpad, einem Mikrofon und mehr empfangen. In zumindest einer Ausführungsform kann jedes der vorgenannten Module auf einer einzigen Halbleiterplattform angeordnet sein, um ein Verarbeitungssystem zu bilden.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann in dem System von 15 die Inferenzierungs- und/oder Trainingslogik 915 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 16 veranschaulicht ein Computersystem 1600 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform beinhaltet das Computersystem 1600, ohne darauf beschränkt zu sein, einen Computer 1610 und einen USB-Stick 1620. In zumindest einer Ausführungsform kann der Computer 1610, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Art von Prozessoren (nicht dargestellt) und einen Speicher (nicht dargestellt) beinhalten. In zumindest einer Ausführungsform beinhaltet der Computer 1610, ohne darauf beschränkt zu sein, einen Server, eine Cloud-Instanz, einen Laptop und einen Desktop-Computer.
  • In zumindest einer Ausführungsform beinhaltet der USB-Stick 1620, ohne darauf beschränkt zu sein, eine Verarbeitungseinheit 1630, eine USB-Schnittstelle 1640 und eine USB-Schnittstellenlogik 1650. In zumindest einer Ausführungsform kann die Verarbeitungseinheit 1630 jedes beliebige Befehlsausführungssystem, - vorrichtung oder -einrichtung sein, das/die in der Lage ist, Befehle auszuführen. In zumindest einer Ausführungsform kann die Verarbeitungseinheit 1630, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Art von Verarbeitungskernen beinhalten (nicht gezeigt). In zumindest einer Ausführungsform umfasst der Verarbeitungskern 1630 eine anwendungsspezifische integrierte Schaltung („ASIC“), die dazu optimiert ist, jede Menge und Art von Operationen im Zusammenhang mit maschinellem Lernen durchzuführen. Beispielsweise ist in zumindest einer Ausführungsform der Verarbeitungskern 1630 eine Tensor-Verarbeitungseinheit („TPC“), die für die Durchführung von Inferenzoperationen beim maschinellen Lernen optimiert ist. In zumindest einer Ausführungsform ist der Verarbeitungskern 1630 eine Bildverarbeitungseinheit („VPU“), die dazu optimiert ist, Machine Vision- und Machine Learning-Inferenzoperationen durchzuführen.
  • In zumindest einer Ausführungsform kann die USB-Schnittstelle 1640 jede beliebige Art von USB-Anschluss oder USB-Buchse sein. Beispielsweise ist in zumindest einer Ausführungsform die USB-Schnittstelle 1640 eine USB 3.0 Typ-C Buchse für Daten und Strom. In zumindest einer Ausführungsform ist die USB-Schnittstelle 1640 ein USB 3.0 Typ-A-Anschluss. In zumindest einer Ausführungsform kann die USB-Schnittstellenlogik 1650 jede beliebige Menge und Art von Logik beinhalten, die es der Verarbeitungseinheit 1630 ermöglicht, über den USB-Stecker 1640 mit Vorrichtungen (z.B. dem Computer 1610) zu kommunizieren.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit den 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann in dem System von 16 die Inferenzierungs- und/oder Trainingslogik 915 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 17A veranschaulicht eine beispielhafte Architektur, in der eine Vielzahl von GPUs 1710-1713 kommunikativ mit einer Vielzahl von Mehrkern-Prozessoren 1705-1706 über Hochgeschwindigkeitsverbindungen 1740-1743 (z.B. Busse, Punkt-zu-Punkt-Zwischenverbindungen, usw.) gekoppelt ist. In einer Ausführungsform unterstützen die Hochgeschwindigkeitsverbindungen 1740-1743 einen Kommunikationsdurchsatz von 4GB/s, 30GB/s, 80GB/s oder höher. Es können verschiedene Verbindungsprotokolle verwendet werden, einschließlich, aber nicht beschränkt auf, PCle 4.0 oder 5.0 und NVLink 2.0.
  • Darüber hinaus sind in einer Ausführungsform zwei oder mehr GPUs 1710-1713 über Hochgeschwindigkeitsverbindungen 1729-1730 miteinander verbunden, die unter Verwendung derselben oder verschiedener Protokolle/Verbindungen als denjenigen für die Hochgeschwindigkeitsverbindungen 1740-1743 implementiert sein können. Ebenso können zwei oder mehr Mehrkern-Prozessoren 1705-1706 über die Hochgeschwindigkeitsverbindung 1728 verbunden sein, welche symmetrische Mehrkern-Prozessor-(SMP)-Busse sein können, die mit 20 GB/s, 30 GB/s, 120 GB/s oder mehr arbeiten. Alternativ kann die gesamte Kommunikation zwischen verschiedenen Systemkomponenten, wie in 17A gezeigt ist, unter Verwendung derselben Protokolle/Verbindungen (z.B. über eine gemeinsame Verbindungsstruktur) erfolgen.
  • In einer Ausführungsform ist jeder Mehrkern-Prozessor 1705-1706 über die Speicher-Zwischenverbindungen 1726-1727 jeweils mit einem Prozessorspeicher 1701-1702 gekoppelt, und ist jede GPU 1710-1713 über die GPU-Speicher-Zwischenverbindungen 1750-1753 kommunikativ mit dem GPU-Speicher 1720-1723 gekoppelt. Die Speicher-Zwischenverbindungen 1726-1727 und 1750-1753 können dieselben oder unterschiedliche Speicherzugriffstechnologien nutzen. Beispielsweise und nicht beschränkend können die Prozessorspeicher 1701-1702 und die GPU-Speicher 1720-1723 flüchtige Speicher wie Dynamic Random Access-Speicher (DRAMs) (einschließlich gestapelter DRAMs), Grafik-DDR-SDRAM (GDDR) (z.B. GDDR5, GDDR6) oder Speicher mit hoher Bandbreite bzw. High Bandwidth Memory (HBM) sein, und/oder nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein. In einer Ausführungsform kann ein Teil der Prozessorspeicher 1701-1702 flüchtiger Speicher und ein anderer Teil nichtflüchtiger Speicher sein (z.B. unter Verwendung einer zweistufigen Speicher (2LM)-Hierarchie).
  • Wie hierin beschrieben wurde, können zwar verschiedene Prozessoren 1705-1706 und GPUs 1710-1713 physikalisch mit jeweils einem bestimmten Speicher 1701-1702, 1720-1723 gekoppelt sein, jedoch kann eine einheitliche Speicherarchitektur implementiert sein, in welcher ein und derselbe virtuelle Systemadressraum (auch als „effektiver Adressraum“ bezeichnet) auf verschiedene physikalische Speicher verteilt ist. Beispielsweise können die Prozessorspeicher 1701-1702 jeweils 64 GB Systemspeicheradressraum und die GPU-Speicher 1720-1723 jeweils 32 GB Systemspeicheradressraum umfassen (welches in diesem Beispiel in insgesamt 256 GB adressierbarem Speicher resultiert).
  • 17B veranschaulicht zusätzliche Einzelheiten für eine Zwischenverbindung zwischen einem Mehrkern-Prozessor 1707 und einem Grafikbeschleunigungsmodul 1746 gemäß einer beispielhaften Ausführungsform. Das Grafikbeschleunigungs-modul 1746 kann einen oder mehrere GPU-Chips beinhalten, die auf einer Verdrahtungskarte integriert sind, welche über eine Hochgeschwindigkeitsverbindung 1740 mit dem Prozessor 1707 gekoppelt ist. Alternativ kann das Grafikbeschleunigungsmodul 1746 in bzw. auf demselben Gehäuse oder Chip wie der Prozessor 1707 integriert sein.
  • In zumindest einer Ausführungsform beinhaltet der dargestellte Prozessor 1707 eine Vielzahl von Kernen 1760A-1760D, die jeweils einen Translation-Lookaside-Puffer 1761A-1761D und einen oder mehrere Caches 1762A-1762D enthalten. In zumindest einer Ausführungsform können die Kerne 1760A-1760D verschiedene andere Komponenten zur Ausführung von Anweisungen und zur Verarbeitung von Daten beinhalten, welche nicht dargestellt sind. Die Caches 1762A-1762D können Level 1 (L1)- und Level 2 (L2)-Caches umfassen. Darüber hinaus können ein oder mehrere gemeinsam genutzte Caches 1756 in den Caches 1762A-1762D enthalten sein und von Sätzen von Kernen 1760A-1760D gemeinsam genutzt werden. Eine Ausführungsform des Prozessors 1707 umfasst beispielsweise 24 Kerne, die jeweils einen eigenen L1-Cache, zwölf gemeinsame L2-Caches und zwölf gemeinsame L3-Caches aufweisen. In dieser Ausführungsform werden ein oder mehrere L2- und L3-Caches von zwei benachbarten Kernen gemeinsam genutzt. Der Prozessor 1707 und das Grafikbeschleunigungsmodul 1746 verbinden sich mit dem Systemspeicher 1714, welcher die Prozessorspeicher 1701-1702 aus 17A beinhalten kann.
  • Die Kohärenz wird für in den verschiedenen Caches 1762A-1762D, 1756 und dem Systemspeicher 1714 gespeicherten Daten und Anweisungen via Inter-Kern-Kommunikation über einen Kohärenzbus 1764 aufrechterhalten. Beispielsweise kann jedem Cache eine Cache-Kohärenz-Logik/Schaltung zugeordnet sein, um im Ansprechen auf erfasste Lese- oder Schreiboperationen auf bestimmte Cache-Leitungen mit dem Kohärenzbus 1764 zu kommunizieren. In einer Implementierung ist ein Cache-Beobachtungsprotokoll über den Kohärenzbus 1764 implementiert, um Cache-Zugriffe zu beobachten.
  • In einer Ausführungsform koppelt eine Proxy-Schaltung 1725 das Grafikbeschleunigungsmodul 1746 kommunikativ an den Kohärenzbus 1764, so dass das Grafikbeschleunigungsmodul 1746 als ein Gleichgestelltes der Kerne 1760A-1760D an einem Cache-Kohärenzprotokoll teilnehmen kann. Insbesondere bietet eine Schnittstelle 1735 Konnektivität zur Proxy-Schaltung 1725 über die Hochgeschwindigkeitsverbindung 1740 (z.B. ein PCIe-Bus, NVLink, usw.), und verbindet eine Schnittstelle 1737 das Grafikbeschleunigungsmodul 1746 mit der Verbindung 1740.
  • In einer Implementierung stellt eine Beschleuniger-Integrationsschaltung 1736 Cache-Verwaltungs-, Speicherzugriffs-, Kontextverwaltungs- und Unterbrechungs- bzw. Unterbrechungsverwaltungsdienste im Namen einer Vielzahl von Grafikverarbeitungs-Engines bzw. -maschinen 1731, 1732, N des Grafikbeschleunigungsmoduls 1746 bereit. Die Grafikverarbeitungs-Engines 1731, 1732, N können jeweils eine separate Grafikverarbeitungseinheit (GPU) umfassen. Alternativ können die Grafikverarbeitungs-Engines 1731, 1732, N verschiedene Arten von Grafikverarbeitungs-Engines innerhalb einer GPU umfassen, wie beispielsweise Grafikausführungseinheiten, Medienverarbeitungs-Engines (z.B. Video-Kodierer/Dekodierer), Abtaster bzw. Sampler und Blit-Engines. In zumindest einer Ausführungsform kann das Grafikbeschleunigungsmodul 1746 eine GPU mit einer Vielzahl von Grafikverarbeitungs-Engines 1731-1732 sein, oder können die Grafikverarbeitungs-Engines 1731-1732, N individuelle GPUs sein, die in bzw. auf einem gemeinsamen Gehäuse, einer gemeinsamen Verdrahtungskarte oder einem gemeinsamen Chip integriert sind.
  • In einer Ausführungsform beinhaltet die Beschleuniger-Integrationsschaltung 1736 eine Speicherverwaltungseinheit (MMU) 1739 zum Ausführen verschiedener Speicherverwaltungsfunktionen wie beispielsweise Speicherübersetzungen von virtuell zu physikalisch (auch als Speicherübersetzungen von effektiv zu real bezeichnet) und Speicherzugriffsprotokollen zum Zugriff auf den Systemspeicher 1714. Die MMU 1739 kann auch einen Translation-Lookaside-Puffer (TLB) (nicht dargestellt) zum Zwischenspeichern von virtuellen/effektiven zu physikalischen/realen Adressübersetzungen beinhalten. In einer Implementierung speichert ein Cache 1738 Befehle und Daten für effizienten Zugriff durch die Grafikverarbeitungs-Engines 1731-1732, N. In einer Ausführungsform werden die in dem Cache 1738 und den Grafikspeichern 1733-1734, M gespeicherten Daten mit den Kerncaches 1762A-1762D, 1756 und dem Systemspeicher 1714 kohärent gehalten. Wie bereits erwähnt wurde, kann dies über die Proxy-Schaltung 1725 im Namen des Caches 1738 und der Speicher 1733-1734, M (z.B. Senden von Aktualisierungen an den Cache 1738 mit Bezug zu Änderungen/Zugriffen auf Cache-Leitungen auf den Prozessor-Caches 1762A-1762D, 1756 und Empfangen von Updates von dem Cache 1738) erreicht werden.
  • Ein Satz von Registern 1745 speichert Kontextdaten für Threads, die von den Grafikverarbeitungs-Engines 1731-1732, N ausgeführt werden, und eine Kontextverwaltungsschaltung 1748 verwaltet Thread-Kontexte. Beispielsweise kann die Kontextverwaltungsschaltung 1748 Speicherungs- und Wiederherstellungs-Operationen durchführen, um Kontexte verschiedener Threads während Kontextwechseln zu speichern und wiederherzustellen (z.B. wenn ein erster Thread gesichert wird und ein zweiter Thread gespeichert wird, so dass ein zweiter Thread von einer Grafikverarbeitungs-Engine ausgeführt werden kann). Beispielsweise kann die Kontextverwaltungsschaltung 1748 bei einem Kontextwechsel aktuelle Registerwerte in einen bestimmten Bereich in dem Speicher speichern (der z.B. durch einen Kontextzeiger identifiziert wird). Bei der Rückkehr zu einem Kontext kann sie dann die Registerwerte wiederherstellen. In einer Ausführungsform empfängt und verarbeitet eine Unterbrechungsverwaltungsschaltung 1747 von Systemvorrichtungen empfangene Unterbrechungen.
  • In einer Implementierung werden virtuelle/effektive Adressen von einer Grafikverarbeitungs-Engine 1731 von der MMU 1739 in reale/physikalische Adressen in dem Systemspeicher 1714 übersetzt. Eine Ausführungsform der Beschleunigerintegrationsschaltung 1736 unterstützt mehrere (z.B. 4, 8, 16) Grafikbeschleunigermodule 1746 und/oder andere Beschleunigungsvorrichtungen. Das Grafikbeschleunigermodul 1746 kann einer einzelnen Anwendung zugeordnet sein, die auf dem Prozessor 1707 ausgeführt wird, oder es kann von mehreren Anwendungen gemeinsam genutzt werden. In einer Ausführungsform wird eine virtualisierte Grafikausführungsumgebung präsentiert, in welcher Ressourcen der Grafikverarbeitungs-Engines 1731-1732, N von mehreren Anwendungen oder virtuellen Maschinen (VMs) gemeinsam genutzt werden. In zumindest einer Ausführungsform können Ressourcen in „Scheiben“ bzw. „Slices“ unterteilt sein, die basierend auf Verarbeitungsanforderungen und Prioritäten, die mit VMs und/oder Anwendungen verbunden sind, verschiedenen VMs und/oder Anwendungen zugeordnet sind.
  • In zumindest einer Ausführungsform fungiert die Beschleuniger-Integrationsschaltung 1736 als eine Brücke zu einem System für das Grafikbeschleunigungsmodul 1746 und stellt Adressübersetzungs- und Systemspeicher-Cache-Dienste bereit. Darüber hinaus kann die Beschleuniger-Integrationsschaltung 1736 Virtualisierungseinrichtungen für einen Host-Prozessor bereitstellen, um die Virtualisierung der Grafikverarbeitungs-Engines 1731-1732, Interrupts und Speicherverwaltung zu verwalten.
  • Weil die Hardwareressourcen der Grafikverarbeitungs-Engines 1731-1732, N explizit auf einen realen Adressraum abgebildet werden, der von dem Host-Prozessor 1707 gesehen wird, kann jeder Host-Prozessor diese Ressourcen unter Verwendung eines effektiven Adresswert direkt ansprechen. Eine Funktion der Beschleunigerintegrationsschaltung 1736, in einer Ausführungsform, ist die physikalische Trennung der Grafikverarbeitungs-Engines 1731-1732, N, so dass sie einem System als unabhängige Einheiten erscheinen.
  • In zumindest einer Ausführungsform sind ein oder mehrere Grafikspeicher 1733-1734, M mit jeder der Grafikverarbeitungs-Engines 1731-1732, N gekoppelt. Grafikspeicher 1733-1734, M speichern Anweisungen und Daten, die von jeder der Grafikverarbeitungs-Engines 1731-1732, N verarbeitet werden. Die Grafikspeicher 1733-1734, M können flüchtige Speicher wie beispielsweise DRAMs (einschließlich gestapelter DRAMs), GDDR-Speicher (z.B. GDDR5, GDDR6) oder HBM sein, und/oder können nichtflüchtige Speicher wie 3D XPoint oder Nano-Ram sein.
  • In einer Ausführungsform werden, um den Datenverkehr über die Verbindung 1740 zu reduzieren, Biasing-Verfahren dazu verwendet, sicherzustellen, dass in den Grafikspeichern 1733-1734, M gespeicherte Daten Daten sind, welche am häufigsten von den Grafikverarbeitungs-Engines 1731-1732, N verwendet werden und vorzugsweise nicht (zumindest nicht häufig) von den Kernen 1760A-1760D verwendet werden. Ebenso versucht ein Biasing-Mechanismus, die von den Kernen (und vorzugsweise nicht von den Grafikverarbeitungs-Engines 1731-1732, N) benötigten Daten in den Caches 1762A-1762D, 1756 der Kernen und des Systemspeichers 1714 zu halten.
  • 17C veranschaulicht eine weitere beispielhafte Ausführungsform, bei welcher die Beschleunigerintegrationsschaltung 1736 in dem Prozessor 1707 integriert ist. In dieser Ausführungsform kommunizieren die Grafikverarbeitungs-Engines 1731-1732, N direkt über die Hochgeschwindigkeitsverbindung 1740 mit der Beschleunigerintegrationsschaltung 1736 über die Schnittstelle 1737 und die Schnittstelle 1735 (die wiederum jede Form von Bus- oder Schnittstellenprotokoll verwenden kann). Die Beschleuniger-Integrationsschaltung 1736 kann dieselben Operationen wie diejenigen, die in Bezug auf 17B beschrieben sind, durchführen, jedoch potenziell mit einem höheren Durchsatz, da sie in unmittelbarer Nähe zum Kohärenzbus 1764 und den Caches 1762A-1762D, 1756 liegt. Eine Ausführungsform unterstützt verschiedene Programmiermodelle, darunter ein dediziertes Prozessprogrammiermodell (keine Virtualisierung des Grafikbeschleunigungsmoduls) und gemeinsam genutzte Programmiermodelle (mit Virtualisierung), welche Programmiermodelle beinhalten können, welche von der Beschleunigerintegrationsschaltung 1736 gesteuert werden, und Programmiermodelle, welche von dem Grafikbeschleunigungsmodul 1746 gesteuert werden.
  • In zumindest einer Ausführungsform sind die Grafikverarbeitungs-Engines 1731-1732, N für eine einzelne Anwendung oder einen einzelnen Prozess unter einem einzigen Betriebssystem dediziert. In zumindest einer Ausführungsform kann eine einzelne Anwendung andere Anwendungsanforderungen an die Grafikverarbeitungs-Engines 1731-1732, N leiten und so eine Virtualisierung innerhalb einer VM/Partition bereitstellen.
  • In zumindest einer Ausführungsform können die Grafikverarbeitungs-Engines 1731-1732, N von mehreren VM-/Anwendungs-Partitionen gemeinsam genutzt werden. In zumindest einer Ausführungsform können gemeinsam genutzte Modelle einen Systemhypervisor dazu verwenden, Grafikverarbeitungs-Engines 1731-1732, N zu virtualisieren, um den Zugriff durch jedes Betriebssystem zu ermöglichen. Für Systeme mit einer einzigen Partition ohne einen Hypervisor sind die Grafikverarbeitungs-Engines 1731-1732, N im Besitz eines Betriebssystems. In zumindest einer Ausführungsform kann ein Betriebssystem die Grafikverarbeitungs-Engines 1731-1732, N virtualisieren, um Zugriff auf jeden Prozess oder jede Anwendung zu ermöglichen.
  • In zumindest einer Ausführungsform wählt das Grafikbeschleunigungsmodul 1746 oder eine einzelne Grafikverarbeitungs-Engine 1731-1732, N ein Prozesselement unter Verwendung eines Prozesshandles aus. In einer Ausführungsform werden Prozesselemente in dem Systemspeicher 1714 gespeichert und sind unter Verwendung der hierin beschriebenen Techniken zur Übersetzung von effektiven Adressen in echte Adressen adressierbar. In zumindest einer Ausführungsform kann ein Prozesshandle ein implementierungsspezifischer Wert sein, der einem Hostprozess bei der Registrierung seines Kontextes mit der Grafikverarbeitungs-Engine 1731-1732, N bereitgestellt wird (d.h. Aufruf einer Systemsoftware, um ein Prozesselement zu einer verknüpften Liste von Prozesselementen hinzuzufügen). In zumindest einer Ausführungsform können untere 16 Bits eines Prozesshandles ein Offset des Prozesselements innerhalb einer verknüpften Liste von Prozesselementen sein.
  • 17D veranschaulicht ein beispielhaftes Beschleunigerintegrations-Slice 1790. Wie hierin verwendet, umfasst ein „Slice“ einen bestimmten Teil der Verarbeitungsressourcen der Beschleunigerintegrationsschaltung 1736. Ein anwendungseffektiver Adressraum 1782 in dem Systemspeicher 1714 speichert Prozesselemente 1783. In einer Ausführungsform werden die Prozesselemente 1783 im Ansprechen auf GPU-Aufrufe 1781 aus den auf dem Prozessor 1707 ausgeführten Anwendungen 1780 gespeichert. Ein Prozesselement 1783 enthält den Prozesszustand für die entsprechende Anwendung 1780. Ein in dem Prozesselement 1783 enthaltener Arbeitsdeskriptor (WD) 1784 kann ein einzelner von einer Anwendung angeforderter Auftrag bzw. Job sein oder einen Zeiger auf eine Warteschlange von Aufträgen enthalten. In zumindest einer Ausführungsform ist WD 1784 ein Zeiger auf eine Auftragsanforderungswarteschlange in dem Adressraum 1782 einer Anwendung.
  • Das Grafikbeschleunigungsmodul 1746 und/oder einzelne Grafikverarbeitungs-Engines 1731-1732, N können von allen oder einer Teilmenge von Prozessen in einem System gemeinsam genutzt werden. In zumindest einer Ausführungsform kann eine Infrastruktur zum Einrichten des Prozesszustands und zum Senden einer WD 1784 an ein Grafikbeschleunigungsmodul 1746 zum Starten eines Auftrags in einer virtualisierten Umgebung enthalten sein.
  • In zumindest einer Ausführungsform ist ein dediziertes Prozessprogrammierungsmodell implementierungsspezifisch. In diesem Modell besitzt ein einzelner Prozess das Grafikbeschleunigungsmodul 1746 oder eine einzelne Grafikverarbeitungs-Engine 1731. Weil das Grafikbeschleunigungsmodul 1746 einem einzelnen Prozess gehört, initialisiert ein Hypervisor die Beschleunigerintegrationsschaltung 1736 für eine besitzende bzw. zum Besitzen einer Partition, und initialisiert ein Betriebssystem die Beschleunigerintegrationsschaltung 1736 für einen besitzenden bzw. zum Besitzen eines Prozess(es), wenn das Grafikbeschleunigungsmodul 1746 zugewiesen wird.
  • Im Betrieb holt eine WD-Holeinheit 1791 in dem Beschleunigerintegrations-Slice 1790 den nächsten WD 1784, welcher eine Angabe von von einer oder mehreren Grafikverarbeitungs-Engines des Grafikbeschleunigungsmoduls 1746 zu verrichtenden Arbeiten beinhaltet. Daten aus dem WD 1784 können in Registern 1745 gespeichert und von der MMU 1739, der Unterbrechungsverwaltungsschaltung 1747 und/oder der Kontextverwaltungsschaltung 1748 wie dargestellt verwendet werden. Eine Ausführungsform der MMU 1739 beinhaltet beispielsweise eine Segment-/Seiten-Durchlauf-Schaltungsanordnung für den Zugriff auf Segment-/Seiten-Tabellen 1786 innerhalb des virtuellen Adressraums 1785 des Betriebssystems. Die Unterbrechungsverwaltungsschaltung 1747 kann Unterbrechungsereignisse 1792 verarbeiten, die von dem Grafikbeschleunigungsmodul 1746 empfangen werden. Bei der Durchführung von Grafikoperationen wird eine von einer Grafikverarbeitungs-Engine 1731-1732, N, erzeugte effektive Adresse 1793 von der MMU 1739 in eine reale Adresse übersetzt.
  • In einer Ausführungsform wird ein und derselbe Satz von Registern 1745 für jede Grafikverarbeitungs-Engine 1731-1732, N und/oder das Grafikbeschleunigungs-modul 1746 dupliziert und kann von einem Hypervisor oder Betriebssystem initialisiert werden. Jedes dieser duplizierten Register kann in einem Beschleunigerintegrations-Slice 1790 enthalten sein. Beispielhafte Register, die von einem Hypervisor initialisiert werden können, sind in Tabelle 1 gezeigt. Tabelle 1 -Hypervisor-initialisierte Register
    1 Slice-Steuerregister
    2 Zeiger auf reale Adresse (RA) des Bereichs geplanter Prozesse
    3 Register für die Übersteuerung von Berechtigungsmasken
    4 Offset Unterbrechungsvektortabelleneintrag
    5 Grenze Unterbrechungsvektortabelleneintrag
    6 Zustandsregister
    7 ID der logischen Partition
    8 Zeiger auf reale Adresse (RA) des Hypervisor-Beschleunigerauslastungseintrags
    9 Speicherbesch reibu ngsreg ister
  • Beispielhafte Register, die von einem Betriebssystem initialisiert werden können, sind in Tabelle 2 dargestellt. Tabelle 2 - Betriebssystem-initialisierte Register
    1 Prozess- und Thread-Identifikation
    2 Zeiger auf effektive Adresse (EA) des Kontext-Sichern/Wiederherstellens
    3 Zeiger auf virtuelle Adresse (VA) des Beschleunigerauslastungseintrags
    4 Zeiger auf virtuelle Adresse (VA) der Speichersegmenttabelle
    5 Berechtigungsmaske
    6 Arbeitsdeskriptor
  • In einer Ausführungsform ist jeder WD 1784 spezifisch für ein bestimmtes Grafikbeschleunigungsmodul 1746 und/oder Grafikverarbeitungs-Engines 1731-1732, N. Er enthält alle Informationen, die von einer Grafikverarbeitungs-Engine 1731-1732, N zum Verrichten von Arbeit benötigt werden, oder er kann ein Zeiger auf einen Speicherort sein, an dem eine Anwendung eine Befehlswarteschlange für auszuführende Arbeiten eingerichtet hat.
  • 17E veranschaulicht zusätzliche Einzelheiten für eine beispielhafte Ausführungsform eines gemeinsam genutzten Modells. Diese Ausführungsform beinhaltet einen Hypervisor-Real-Adressraum 1798, in welchem eine Prozesselementliste 1799 gespeichert ist. Der Hypervisor-Real-Adressraum 1798 ist über einen Hypervisor 1796 zugänglich, welcher Grafikbeschleunigungsmodul-Engines für das Betriebssystem 1795 virtualisiert.
  • In zumindest einer Ausführungsform ermöglichen gemeinsam genutzte Programmiermodelle die Verwendung eines Grafikbeschleunigungsmoduls 1746 für alle oder eine Teilmenge von Prozessen aus allen oder einer Teilmenge von Partitionen in einem System. Es gibt zwei Programmiermodelle, bei denen das Grafikbeschleunigungsmodul 1746 von mehreren Prozessen und Partitionen gemeinsam genutzt wird: zeitgesteuert gemeinsam genutzt und grafikorientiert gemeinsam genutzt.
  • In diesem Modell besitzt der Systemhypervisor 1796 das Grafikbeschleunigungsmodul 1746 und stellt seine Funktion allen Betriebssystemen 1795 zur Verfügung. Damit ein Grafikbeschleunigungsmodul 1746 eine Virtualisierung durch den Systemhypervisor 1796 unterstützen kann, kann das Grafikbeschleunigungsmodul 1746 wie folgt eingesetzt werden: 1) Die Auftragsanforderung einer Anwendung muss autonom sein (d.h. der Zustand braucht zwischen den Aufträgen nicht aufrechterhalten zu werden), oder das Grafikbeschleunigungsmodul 1746 muss einen Mechanismus zum Speichern und Wiederherstellen von Kontext bereitstellen. 2) Das Grafikbeschleunigungsmodul 1746 garantiert, dass die Auftragsanforderung einer Anwendung in einer bestimmten Zeitspanne abgeschlossen wird, einschließlich etwaiger Übersetzungsfehler, oder das Grafikbeschleunigungsmodul 1746 bietet eine Möglichkeit, der Verarbeitung eines Auftrags zuvorzukommen. 3) Dem Grafikbeschleunigungsmodul 1746 muss Fairness zwischen Prozessen garantiert werden, wenn es in einem gezielten, gemeinsam genutzten Programmiermodell arbeitet.
  • In zumindest einer Ausführungsform muss die Anwendung 1780 einen Systemaufruf des Betriebssystems 1795 mit einem Typ des Grafikbeschleunigungsmoduls 1746, einem Arbeitsdeskriptor (WD), einem Wert eines Berechtigungsmaskenregisters (AMR) und einem Zeiger auf einen Kontext-Speicher-/Wiederherstellungsbereich (CSRP) durchführen. In zumindest einer Ausführungsform beschreibt der Typ des Grafikbeschleunigungsmoduls 1746 eine Soll-Beschleunigungsfunktion für einen Systemaufruf. In zumindest einer Ausführungsform kann der Typ des Grafikbeschleunigungsmoduls 1746 ein systemspezifischer Wert sein. In zumindest einer Ausführungsform ist der WD speziell für das Grafikbeschleunigungsmodul 1746 formatiert und kann in einer Form eines Befehls des Grafikbeschleunigungsmoduls 1746, eines effektiven Adresszeigers auf eine benutzerdefinierte Struktur, eines effektiven Adresszeigers auf eine Befehlswarteschlange oder einer beliebigen anderen Datenstruktur zur Beschreibung der von dem Grafikbeschleunigungsmodul 1746 auszuführenden Arbeiten vorliegen. In einer Ausführungsform ist ein AMR-Wert ein AMR-Zustand, der für einen aktuellen Prozess zu verwenden ist. In zumindest einer Ausführungsform ist ein an ein Betriebssystem übergebener Wert vergleichbar mit einer Anwendung, die ein AMR einstellt. Falls die Implementierungen der Beschleunigerintegrationsschaltung 1736 und des Grafikbeschleunigungsmoduls 1746 ein Benutzerberechtigungsmasken-Übersteuerungsregister bzw. User Authority Mask Override Register (UAMOR) nicht unterstützen, kann ein Betriebssystem einen aktuellen UAMOR-Wert auf einen AMR-Wert anwenden, bevor es einen AMR in einem Hypervisor-Aufruf übergibt. Der Hypervisor 1796 kann optional einen aktuellen Berechtigungsmasken-Übersteuerungsregister (AMOR)-Wert bzw. Authority Mask Override Register-Wert anwenden, bevor er ein AMR in das Prozesselement 1783 platziert. In zumindest einer Ausführungsform ist CSRP eines von Registern 1745, das eine effektive Adresse eines Bereichs im Adressraum 1782 einer Anwendung für das Grafikbeschleunigungsmodul 1746 zum Speichern und Wiederherstellen des Kontextzustands enthält. Dieser Zeiger ist optional, falls zwischen Aufträgen kein Zustand gespeichert werden muss, oder falls einem Auftrag zuvorgekommen wird. In zumindest einer Ausführungsform kann der Kontext-Speicherungs-/Wiederherstellungs-Bereich als fester Systemspeicher dienen.
  • Bei Empfangen eines Systemaufrufs kann das Betriebssystem 1795 verifizieren, dass die Anwendung 1780 registriert ist und die Berechtigung zur Verwendung des Grafikbeschleunigungsmoduls 1746 erhalten hat. Das Betriebssystem 1795 ruft dann den Hypervisor 1796 mit den in Tabelle 3 gezeigten Informationen auf. Tabelle 3 - Parameter für Hypervisor-Aufruf durch Betriebssystem
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Berechtigungsmaskenregister (AMR)-Wert (potenziell maskiert).
    3 Ein Zeiger auf eine effektive Adresse (EA) des Kontext-Speicherungs-/Wiederherstellungs-Bereichs (CSRP)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID).
    5 Ein Zeiger auf eine virtuelle Adresse (VA) des Beschleunigerauslastungseintrags (AURP)
    6 Zeiger auf virtuelle Adresse der Speichersegmenttabelle (SSTP)
    7 Eine logische Unterbrechungsdienstnummer (LISN)
  • Nach Empfangen eines Hypervisoraufrufs verifiziert der Hypervisor 1796, dass das Betriebssystem 1795 registriert hat und berechtigt ist, das Grafikbeschleunigungsmodul 1746 zu verwenden. Der Hypervisor 1796 stellt dann das Prozesselement 1783 in eine verknüpfte Liste von Prozesselementen für ein entsprechendes Typ 1746 Grafikbeschleunigungsmodul ein. Ein Prozesselement kann Informationen gemäß Tabelle 4 beinhalten. Tabelle 4 - Informationen zu Prozesselementen
    1 Ein Arbeitsdeskriptor (WD)
    2 Ein Berechtigungsmaskenregister (AMR)-Wert (potenziell maskiert).
    3 Ein Zeiger auf eine effektive Adresse (EA) des Kontext-Speicherungs-/Wiederherstellungs-Bereichs (CSRP)
    4 Eine Prozess-ID (PID) und eine optionale Thread-ID (TID).
    5 Ein Zeiger auf eine virtuelle Adresse (VA) des Beschleunigerauslastungseintrags (AURP)
    6 Zeiger auf virtuelle Adresse der Speichersegmenttabelle (SSTP)
    7 Eine logische Unterbrechungsdienstnummer (LISN)
    8 Unterbrechungsvektortabelle, abgeleitet aus Hypervisor-Aufrufparametern
    9 Ein Zustandsregister (SR)-Wert
    10 Eine logische Partitions-ID (LPID)
    11 Ein Zeiger auf eine reale Adresse (RA) des Hypervisor-Beschleunigerauslastungseintrags
    12 Speicherdeskriptorregister (SDR)
  • In zumindest einer Ausführungsform initialisiert der Hypervisor eine Vielzahl von für Beschleunigerintegrations-Slice 1790-Registern 1745.
  • Wie in 17F dargestellt ist, wird, in zumindest einer Ausführungsform, ein vereinigter Speicher verwendet, der über einen gemeinsamen virtuellen Speicheradressraum adressierbar ist, der für den Zugriff auf physikalische Prozessorspeicher 1701-1702 und GPU-Speicher 1720-1723 verwendet wird. In dieser Implementierung verwenden Operationen, die auf den GPUs 1710-1713 ausgeführt werden, ein und denselben virtuellen/effektiven Speicheradressraum, um auf die Prozessorspeicher 1701-1702 zuzugreifen und umgekehrt, wodurch die Programmierbarkeit vereinfacht wird. In einer Ausführungsform ist ein erster Abschnitt eines virtuellen/effektiven Adressraums dem Prozessorspeicher 1701, ein zweiter Abschnitt dem zweiten Prozessorspeicher 1702, ein dritter Abschnitt dem GPU-Speicher 1720 zugeordnet, und so weiter. In zumindest einer Ausführungsform wird dadurch ein gesamter virtueller/effektiver Speicherraum (manchmal auch als ein effektiver Adressraum bezeichnet) über jeden der Prozessorspeicher 1701-1702 und GPU-Speicher 1720-1723 hinweg verteilt, so dass jeder Prozessor oder jede GPU auf jeden physikalischen Speicher zugreifen kann, wobei eine virtuelle Adresse auf diesen Speicher abgebildet wird.
  • In einer Ausführungsform stellen die Bias/Kohärenzverwaltungs-Schaltkreise 1794A-1794E innerhalb einer oder mehrerer MMUs 1739A-1739E die Cache-Kohärenz zwischen Caches eines oder mehrerer Host-Prozessoren (z.B. 1705) und den GPUs 1710-1713 sicher und implementieren Biasing-Techniken, die physikalische Speicher angeben, in welchen bestimmte Arten von Daten gespeichert werden sollten. Während in 17F mehrere Instanzen der Bias-/Kohärenzverwaltungsschaltkreise 1794A-1794E veranschaulicht sind, können die Bias-/Kohärenzschaltkreise innerhalb einer MMU eines oder mehrerer Hostprozessoren 1705 und/oder innerhalb der Beschleunigerintegrationsschaltung 1736 implementiert sein.
  • Eine Ausführungsform ermöglicht es, den an die GPU gebundenen Speicher 1720-1723 als Teil des Systemspeichers abzubilden und unter Verwendung einer gemeinsam genutzten Technologie virtuellen Speichers (Shared Virtual Memory; SVM) darauf zuzugreifen, ohne jedoch Leistungseinbußen im Zusammenhang mit voller Systemcache-Kohärenz zu erleiden. In zumindest einer Ausführungsform bietet die Möglichkeit, auf den an die GPU gebundenen Speicher 1720-1723 als Systemspeicher ohne lästigen Cachekohärenz-Overhead zuzugreifen, eine vorteilhafte Betriebsumgebung für GPU-Entlastung. Diese Anordnung ermöglicht es der Software des Host-Prozessors 1705, Operanden einzurichten und ohne den Aufwand traditioneller I/O-DMA-Datenkopien auf Berechnungsergebnisse zuzugreifen. Solche traditionellen Kopien involvieren Treiberaufrufe, Unterbrechungen bzw. Interrupts und Memory Mapped I/O (MMIO)-Zugriffe, die im Vergleich zu einfachen Speicherzugriffen alle ineffizient sind. In zumindest einer Ausführungsform kann die Fähigkeit, auf den an die GPU gebundenen Speicher 1720-1723 ohne Cache-Kohärenz-Overheads zuzugreifen, entscheidend für die Ausführungszeit einer entlasteten Berechnung sein. In Fällen mit starkem Streaming-Speicherschreibe-Datenaufkommen kann beispielsweise der Cache-Kohärenz-Overhead eine effektive Schreibbandbreite, die von einer GPU 1710-1713 gesehen wird, erheblich reduzieren. In zumindest einer Ausführungsform können die Effizienz der Operandeneinrichtung, die Effizienz des Zugriffs auf Ergebnisse und die Effizienz der Berechnung durch die GPU eine Rolle bei der Bestimmung der Effektivität einer GPU-Entlastung spielen.
  • In zumindest einer Ausführungsform wird die Auswahl von GPU-Bias und Host-Prozessor-Bias durch eine Bias-Tracker-Datenstruktur gesteuert. Eine Bias-Tabelle kann beispielsweise verwendet werden, die eine Seitengranularstruktur-sein kann (d.h. auf eine Granularität einer Speicherseite gesteuert wird), die 1 oder 2 Bit pro GPU-gebundener Speicherseite enthält. In zumindest einer Ausführungsform kann eine Bias-Tabelle in einem gestohlenen Speicherbereich eines oder mehrerer GPU-gebundener Speicher 1720-1723 mit oder ohne einen Bias-Cache in der GPU 1710-1713 implementiert sein (z.B. um häufig/kürzlich verwendete Einträge einer Bias-Tabelle zwischenzuspeichern). Alternativ kann eine gesamte Bias-Tabelle innerhalb einer GPU gepflegt werden.
  • In zumindest einer Ausführungsform wird auf einen Bias-Tabelleneintrag, der jedem Zugriff auf den GPU-gebundenen Speicher 1720-1723 zugeordnet ist, zugegriffen, bevor auf tatsächlich einen GPU-Speicher zugegriffen wird, welches die folgenden Operationen veranlasst. Zunächst werden lokale Anfragen von der GPU 1710-1713, die ihre Seite in GPU-Bias finden, direkt an einen entsprechenden GPU-Speicher 1720-1723 weitergeleitet. Lokale Anfragen von einer GPU, die ihre Seite in Host-Bias finden, werden an den Prozessor 1705 weitergeleitet (z.B. über eine Hochgeschwindigkeitsverbindung, wie vorstehend diskutiert). In einer Ausführungsform beenden Anfragen von dem Prozessor 1705, die eine angeforderte Seite in Hostprozessor-Bias finden, eine Anfrage wie ein normales Lesen des Speichers. Alternativ können Anfragen, die an eine Seite mit GPU-Bias gerichtet sind, an die GPU 1710-1713 weitergeleitet werden. In zumindest einer Ausführungsform kann eine GPU dann eine Seite in einen Hostprozessor-Bias überführen, wenn sie derzeit keine Seite verwendet. In zumindest einer Ausführungsform kann der Bias-Zustand einer Seite entweder durch einen softwarebasierten Mechanismus, einen hardwaregestützten softwarebasierten Mechanismus oder, für eine begrenzte Anzahl von Fällen, einen rein hardwarebasierten Mechanismus geändert werden.
  • Ein Mechanismus zum Ändern des Bias-Zustands verwendet einen API-Aufruf (z.B. OpenCL), welcher wiederum den Gerätetreiber einer GPU aufruft, welcher wiederum eine Nachricht an eine GPU sendet (oder einen Befehlsdeskriptor in eine Warteschlange stellt), der sie anweist, einen Bias-Zustand zu ändern und, für einige Übergänge, eine Cache-Leerungs-Operation in einem Host durchzuführen. In zumindest einer Ausführungsform wird die Cache-Leerung für einen Übergang von Bias des Host-Prozessors 1705 zur Bias der GPU verwendet, nicht aber für einen entgegengesetzten Übergang.
  • In einer Ausführungsform wird Cache-Kohärenz durch vorübergehendes Rendern von Seiten mit GPU-Bias, die von dem Hostprozessor 1705 nicht gecached werden können, aufrechterhalten. Um auf diese Seiten zuzugreifen, kann der Prozessor 1705 Zugriff von der GPU 1710 anfordern, welche den Zugriff sofort gewähren kann oder auch nicht. Um die Kommunikation zwischen Prozessor 1705 und GPU 1710 zu reduzieren, ist es daher vorteilhaft, sicherzustellen, dass Seiten mit GPU-Bias diejenigen sind, die von einer GPU benötigt werden, aber nicht von dem Hostprozessor 1705 und umgekehrt.
  • Die Hardware-Strukturen) 915 werden dazu verwendet, eine oder mehrere Ausführungsformen auszuführen. Einzelheiten zu der bzw. den Hardware-Strukturen) 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt.
  • 18 veranschaulicht beispielhaft integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Verwendung von einem oder mehreren IP-Kernen hergestellt sein können, gemäß verschiedenen hierin beschriebenen Ausführungsformen. Zusätzlich zu dem Dargestellten können andere Logik und Schaltungen in zumindest einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/Kerne, peripherer Schnittstellensteuereinrichtungen oder universeller Prozessorkerne.
  • 18 ist ein Blockdiagramm, das ein beispielhaftes System auf einer integrierten Chip-Schaltung 1800 veranschaulicht, die aus einem oder mehreren IP-Kernen hergestellt sein kann, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform beinhaltet die integrierte Schaltung 1800 einen oder mehrere Anwendungsprozessor(en) 1805 (z.B. CPUs), zumindest einen Grafikprozessor 1810 und kann zusätzlich einen Bildprozessor 1815 und/oder einen Videoprozessor 1820 beinhalten, von welchen jeder ein modularer IP-Kern sein kann. In zumindest einer Ausführungsform beinhaltet die integrierte Schaltung 1800 Peripherie- oder Buslogik mit einem USB-Controller 1825, einem UART-Controller 1830, einem SPI/SDIO-Controller 1835 und einem I.sup.2S/I.sup.2C-Controller 1840. In zumindest einer Ausführungsform kann die integrierte Schaltung 1800 eine Anzeigevorrichtung 1845 beinhalten, die mit einem oder mehreren eines High-Definition-Multimedia-Schnittstellen-(HDMI)-Controllers 1850 und einer Anzeigeschnittstelle 1855 für ein Mobile Industry Processor Interface (MIPI) gekoppelt ist. In zumindest einer Ausführungsform kann Speicher durch ein Flash-Speicher-Subsystem 1860 einschließlich eines Flash-Speichers und einer Flash-Speicher-Steuereinrichtung bereitgestellt sein. In zumindest einer Ausführungsform kann eine Speicherschnittstelle über eine Speichersteuereinrichtung 1865 für Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. In zumindest einer Ausführungsform beinhalten einige integrierte Schaltungen zusätzlich eine eingebettete Sicherheits-Engine 1870.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in der integrierten Schaltung 1800 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 19A-19B veranschaulichen beispielhafte integrierte Schaltungen und zugeordnete Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein können, gemäß verschiedenen der hierin beschriebenen Ausführungsformen. Zusätzlich zu dem Dargestellten können andere Logik und Schaltungen in zumindest einer Ausführungsform enthalten sein, einschließlich zusätzlicher Grafikprozessoren/Kerne, peripherer Schnittstellensteuereinrichtungen oder universeller Prozessorkerne.
  • 19A-19B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC veranschaulichen, gemäß hierin beschriebenen Ausführungsformen. 19A veranschaulicht einen beispielhaften Grafikprozessor 1910 eines Systems auf einer integrierten Chip-Schaltung, das unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein kann, gemäß zumindest einer Ausführungsform. 19B veranschaulicht einen zusätzlichen beispielhaften Grafikprozessor 1940 eines Systems auf einer integrierten Chip-Schaltung, der unter Verwendung eines oder mehrerer IP-Kerne hergestellt sein kann, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist der Grafikprozessor 1910 aus 19A ein Grafikprozessorkern mit niedrigem Stromverbrauch. In zumindest einer Ausführungsform ist der Grafikprozessor 1940 aus 19B ein leistungsfähigerer Grafikprozessorkern. In zumindest einer Ausführungsform kann jeder der Grafikprozessoren 1910, 1940 eine Variante des Grafikprozessors 1810 von 18 sein.
  • In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 1910 einen Vertex-Prozessor 1905 und einen oder mehrere Fragment-Prozessor(en) 1915A-1915N (z.B. 1915A, 1915B, 1915C, 1915D, bis 1915N-1 und 1915N). In zumindest einer Ausführungsform kann der Grafikprozessor 1910 verschiedene Shader-Programme über separate Logik ausführen, so dass der Vertex-Prozessor 1905 für die Ausführung von Operationen für Vertex-Shader-Programme optimiert ist, während ein oder mehrere Fragment-Prozessoren 1915A-1915N Fragment (beispielsweise Pixel)-Shading-Operationen für Fragment- oder Pixel-Shader-Programme ausführen. In zumindest einer Ausführungsform führt der Vertex-Prozessor 1905 eine Vertex-Verarbeitungsphase einer 3D-Grafikpipeline durch und erzeugt Primitive bzw. Stammfunktionen und Vertex-Daten. In zumindest einer Ausführungsform verwenden der bzw. die die Fragment-Prozessor(en) 1915A-1915N Stammfunktions- und Vertex-Daten, die von dem Vertex-Prozessor 1905 erzeugt wurden, um einen Frame- bzw. Einzelbildpuffer zu erzeugen, der auf einer Anzeigevorrichtung angezeigt wird. In zumindest einer Ausführungsform sind der bzw. die Fragment-Prozessor(en) 1915A-1915N dazu optimiert, Fragment-Shader-Programme auszuführen, wie sie in einer OpenGL-API vorgesehen sind, welche dazu verwendet werden können, ähnliche Operationen wie ein Pixel-Shader-Programm durchzuführen, wie sie in einer Direct 3D-API vorgesehen sind.
  • In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 1910 zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 1920A-1920B, Cache(s) 1925A-1925B und Schaltungszwischenverbindung(en) 1930A-1930B. In zumindest einer Ausführungsform stellen eine oder mehrere MMU(s) 1920A-1920B ein Adressmapping von virtuell nach physikalisch für den Grafikprozessor 1910 bereit, einschließlich des Vertex-Prozessors 1905 und/oder des/der Fragment-Prozessoren 1915A-1915N, die auf Vertex- oder Bild-/TexturDaten Bezug nehmen können, die in Speicher gespeichert sind, zusätzlich zu Vertex- oder Bild-/Textur-Daten, die in einem oder mehreren Cache(s) 1925A-1925B gespeichert sind. In zumindest einer Ausführungsform können eine oder mehrere MMU(s) 1920A-1920B mit anderen MMU(s) innerhalb des Systems synchronisiert werden, einschließlich einer oder mehrerer MMU(s), die einem oder mehreren Anwendungsprozessor(en) 1805, Bildprozessoren 1815 und/oder Videoprozessoren 1820 aus 18 zugeordnet sind, so dass jeder Prozessor 1805-1820 an einem gemeinsam genutzten oder vereinigten virtuellen Speichersystem partizipieren kann. In zumindest einer Ausführungsform ermöglichen eine oder mehrere Schaltungs-Zwischenverbindungen 1930A-1930B dem Grafikprozessor 1910, sich mit anderen IP-Kernen innerhalb des SoC entweder über einen internen Bus des SoC oder über eine direkte Verbindung zu verbinden.
  • In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 1940 eine oder mehrere MMU(s) 1920A-1920B, Caches 1925A-1925B und Schaltungs-Zwischenverbindungen 1930A-1930B des Grafikprozessors 1910 aus 19A. In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 1940 einen oder mehrere Shader-Kerne 1955A-1955N (z.B. 1955A, 1955B, 1955C, 1955D, 1955E, 1955F, bis 1955N-1 und 1955N), welche eine einheitliche Shader-Kern-Architektur bereitstellen, in welcher ein einzelner Kern oder Typ oder Kern alle Arten von programmierbarem Shader-Code ausführen kann, einschließlich Shader-Programmcode zur Implementierung von Vertex-Shadern, Fragment-Shadern. und/oder Rechen-Shadern. In zumindest einer Ausführungsform kann eine Anzahl von Shader-Kernen variieren. In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 1940 einen Inter-Kern-Aufgabenverwalter bzw. Inter-Core Task Manager 1945, der als ein Thread-Dispatcher bzw. -Sender fungiert, um Ausführungsthreads an einen oder mehrere Shader-Kerne 1955A-1955N zu verteilen, und eine Tiling- bzw. Kachelungs-Einheit 1958, um Kachelungs-Operationen für kachelbasiertes Rendering zu beschleunigen, bei welchen Rendering-Operationen für eine Szene im Bildraum unterteilt sind, zum Beispiel um lokale räumliche Kohärenz innerhalb einer Szene auszunutzen oder die Nutzung interner Caches zu optimieren.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in der integrierten Schaltung 19A und/oder 19B dazu verwendet werden, Operationen zu inferenzieren oder vorherzusagen, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 20A-20B veranschaulichen eine zusätzliche beispielhafte Grafikprozessorlogik gemäß hierin beschriebenen Ausführungsformen. 20A veranschaulicht einen Grafikkern 2000, der in zumindest einer Ausführungsform in dem Grafikprozessor 1810 von 18 enthalten sein kann und in zumindest einer Ausführungsform ein vereinheitlichter Shader-Kern 1955A-1955N wie in 19B sein kann. 20B veranschaulicht eine hochparallele universelle Grafikverarbeitungseinheit 2030, die für den Einsatz auf einem Multi-Chip-Modul in zumindest einer Ausführungsform geeignet ist.
  • In zumindest einer Ausführungsform beinhaltet der Grafikkern 2000 einen gemeinsam genutzten Befehls-Cache 2002, eine Textureinheit 2018 und einen Cache/gemeinsam genutzten Speicher 2020, die für Ausführungsressourcen innerhalb des Grafikkerns 2000 gemeinsam sind. In zumindest einer Ausführungsform kann der Grafikkern 2000 mehrere Slices 2001A-2001N oder Partitionen für jeden Kern beinhalten, und kann ein Grafikprozessor mehrere Instanzen des Grafikkerns 2000 beinhalten. Die Slices 2001A-2001N können eine Unterstützungslogik beinhalten, einschließlich eines lokalen Befehls-Caches 2004A-2004N, eines Thread-Schedulers bzw. -Planers 2006A-2006N, eines Thread-Dispatcher bzw. Verteilers 2008A-2008N und eines Satzes von Registern 2010A-2010N. In zumindest einer Ausführungsform können die Slices 2001A-2001N einen Satz zusätzlicher Funktionseinheiten (AFUs 2012A-2012N), Gleitkommaeinheiten (FPU 2014A-2014N), Ganzzahl-Rechenlogikeinheiten (ALUs 2016-2016N), Adressberechnungseinheiten (ACU 2013A-2013N), doppelt genaue Gleitkommaeinheiten (DPFPU 2015A-2015N) und Matrixverarbeitungseinheiten (MPU 2017A-2017N) beinhalten.
  • In zumindest einer Ausführungsform können die FPUs 2014A-2014N einfach genaue (32-Bit) und halb genaue (16-Bit) Gleitkomma-Operationen durchführen, während die DPFPUs 2015A-2015N doppelt genaue (64-Bit) Gleitkomma-Operationen durchführen. In zumindest einer Ausführungsform können die ALUs 2016A-2016N Ganzzahl-Operationen mit variabler Genauigkeit und 8-Bit-, 16-Bit- und 32-Bit-Genauigkeit durchführen und für Operationen mit gemischter Genauigkeit konfiguriert sein. In zumindest einer Ausführungsform können die MPUs 2017A-2017N auch für Matrix-Operationen mit gemischtere Genauigkeit konfiguriert sein, einschließlich halb genauer Gleitkomma- und 8-Bit Ganzzahl-Operationen. In zumindest einer Ausführungsform können die MPUs 2017-2017N eine Vielzahl von Matrix-Operationen durchführen, um die Frameworks von Anwendungen für maschinelles Lernen zu beschleunigen, einschließlich des Ermöglichens von Unterstützung für beschleunigte allgemeine bzw. generelle Matrix-zu-Matrix Multiplikation (GEMM). In zumindest einer Ausführungsform können die AFUs 2012A-2012N zusätzliche logische Operationen durchführen, die nicht von Gleitkomma- oder Integer-Einheiten unterstützt werden, einschließlich trigonometrischer Operationen (z.B. Sinus, Cosinus, usw.).
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zur Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem Grafikkern 2000 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 20B veranschaulicht eine Universal-Verarbeitungseinheit (GPGPU) 2030, die dazu konfiguriert sein kann, hochparallele Rechenoperationen zu ermöglichen, die von einer Anordnung von Grafikverarbeitungseinheiten durchzuführen sind, in zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann die GPGPU 2030 direkt mit anderen Instanzen der GPGPU 2030 verknüpft sein, um einen Multi-GPU-Cluster zu erstellen, um die Trainingsgeschwindigkeit für tiefe neuronale Netzwerke zu verbessern. In zumindest einer Ausführungsform beinhaltet die GPGPU 2030 eine Host-Schnittstelle 2032, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In zumindest einer Ausführungsform ist die Host-Schnittstelle 2032 eine PCI-Express-Schnittstelle. In zumindest einer Ausführungsform kann die Host-Schnittstelle 2032 eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In zumindest einer Ausführungsform empfängt die GPGPU 2030 Befehle von einem Host-Prozessor und verwendet einen globalen Scheduler 2034, um die diesen Befehlen zugeordneten Ausführungsthreads an einen Satz von Rechenclustern 2036A-2036H zu verteilen. In zumindest einer Ausführungsform nutzen die Rechencluster 2036A-2036H einen Cache-Speicher 2038 gemeinsam. In zumindest einer Ausführungsform kann der Cache-Speicher 2038 als ein übergeordneter Cache für Cache-Speicher innerhalb der Rechencluster 2036A-2036H dienen.
  • In zumindest einer Ausführungsform beinhaltet die GPGPU 2030 den Speicher 2044A-2044B, der mit den Rechenclustern 2036A-2036H über einen Satz von Speichersteuereinrichtungen 2042A-2042B gekoppelt ist. In zumindest einer Ausführungsform kann der Speicher 2044A-2044B verschiedene Arten von Speichervorrichtungen beinhalten, einschließlich dynamischen Direktzugriffsspeichers (DRAM) oder Grafik-Direktzugriffspeichers, wie beispielsweise synchroner Grafik-Direktzugriffspeicher (SGRAM), einschließlich Grafikspeicher mit doppelter Datenrate (GDDR).
  • In zumindest einer Ausführungsform beinhalten die Rechencluster 2036A-2036H jeweils einen Satz von Grafikkernen, wie beispielsweise den Grafikkern 2000 von 20A, der mehrere Typen von Ganzzahl- und Gleitkomma-Logikeinheiten beinhalten kann, die Rechenoperationen mit einer Reihe von Genauigkeitsstufen durchführen können, die auch für Berechnungen zum maschinellen Lernen geeignet sind. Beispielsweise kann in zumindest einer Ausführungsform zumindest eine Teilmenge von Gleitkommaeinheiten in jedem der Rechencluster 2036A-2036H dazu konfiguriert sein, um 16-Bit- oder 32-Bit-Gleitkommaoperationen durchzuführen, während eine andere Teilmenge von Gleitkommaeinheiten dazu konfiguriert sein kann, um 64-Bit-Gleitkommaoperationen durchzuführen.
  • In zumindest einer Ausführungsform können mehrere GPGPU 2030-Instanzen dazu konfiguriert sein, als Rechencluster zu arbeiten. In zumindest einer Ausführungsform variiert die Kommunikation, die von den Rechenclustern 2036A-2036H für die Synchronisation und den Datenaustausch verwendet wird, je nach Ausführungsform. In zumindest einer Ausführungsform kommunizieren mehrere GPGPU 2030-Instanzen über die Host-Schnittstelle 2032. In zumindest einer Ausführungsform beinhaltet die GPGPU 2030 einen I/O-Hub 2039, der die GPGPU 2030 mit einer GPU-Verbindung 2040 koppelt, die eine direkte Verbindung zu anderen Instanzen der GPGPU 2030 ermöglicht. In zumindest einer Ausführungsform ist die GPU-Verbindung 2040 mit einer dedizierten GPU-zu-GPU-Brücke gekoppelt, die die Kommunikation und Synchronisation zwischen mehreren GPGPU 2030-Instanzen ermöglicht. In zumindest einer Ausführungsform koppelt die GPU-Verbindung 2040 mit einer Hochgeschwindigkeitsverbindung, um Daten an andere GPGPUs oder Parallelprozessoren zu senden und zu empfangen. In zumindest einer Ausführungsform befinden sich mehrere GPGPU 2030-Instanzen in separaten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, die über die Host-Schnittstelle 2032 zugänglich ist. In zumindest einer Ausführungsform kann die GPU-Verbindung 2040 dazu konfiguriert sein, eine Verbindung zu einem Host-Prozessor zusätzlich oder alternativ zu der Host-Schnittstelle 2032 zu ermöglichen.
  • In zumindest einer Ausführungsform kann die GPGPU 2030 zum Trainieren neuronaler Netzwerke konfiguriert sein. In zumindest einer Ausführungsform kann die GPGPU 2030 innerhalb einer Inferenzierungsplattform verwendet werden. In zumindest einer Ausführungsform, in welcher die GPGPU 2030 zur Inferenzierung verwendet wird, kann die GPGPU weniger Rechencluster 2036A-2036H beinhalten als dann, wenn die GPGPU zum Training eines neuronalen Netzwerks verwendet wird. In zumindest einer Ausführungsform kann sich die dem Speicher 2044A-2044B zugeordnete Speichertechnologie zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei Speichertechnologien mit höherer Bandbreite für Trainingskonfigurationen vorgesehen sind. In zumindest einer Ausführungsform kann die Inferenzierungskonfiguration der GPGPU 2030 die inferenzierungsspezifische Anweisungen unterstützen. Beispielsweise kann in zumindest einer Ausführungsform eine Inferenzierungskonfiguration eine oder mehrere 8-Bit-Ganzzahl-Punkt-Produkt-Anweisungen unterstützen, welche während Inferenzierungsoperationen für bereitgestellte neuronale Netzwerke verwendet werden können.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in der GPGPU 2030 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 21 ist ein Blockdiagramm, das ein Computersystem 2100 gemäß zumindest einer Ausführungsform darstellt. In zumindest einer Ausführungsform beinhaltet das Computersystem 2100 ein Verarbeitungssubsystem 2101 mit einem oder mehreren Prozessor(en) 2102 und einem Systemspeicher 2104, der über einen Zwischenverbindungspfad kommuniziert, der einen Speicher-Hub 2105 beinhalten kann. In zumindest einer Ausführungsform kann der Speicher-Hub 2105 eine separate Komponente innerhalb einer Chipsatz-Komponente sein oder in einen oder mehrere Prozessor(en) 2102 integriert sein. In zumindest einer Ausführungsform koppelt der Speicher-Hub 2105 über eine Kommunikationsverbindung 2106 mit einem I/O-Subsystem 2111. In zumindest einer Ausführungsform beinhaltet das I/O-Subsystem 2111 einen I/O-Hub 2107, der es dem Computersystem 2100 ermöglichen kann, Eingaben von einer oder mehreren Eingabevorrichtung(en) 2108 zu empfangen. In zumindest einer Ausführungsform kann der I/O-Hub 2107 einer Anzeigesteuereinrichtung, die in einem oder mehreren Prozessor(en) 2102 enthalten sein kann, ermöglichen, Ausgaben an eine oder mehrere Anzeigevorrichtung(en) 2110A bereitzustellen. In zumindest einer Ausführungsform können eine oder mehrere mit dem I/O-Hub 2107 gekoppelte Anzeigevorrichtung(en) 2110A eine lokale, interne oder eingebettete Anzeigevorrichtung beinhalten.
  • In zumindest einer Ausführungsform beinhaltet das Verarbeitungssubsystem 2101 einen oder mehrere Parallelprozessor(en) 2112, die über einen Bus oder eine andere Kommunikationsverbindung 2113 mit dem Speicher-Hub 2105 gekoppelt sind. In zumindest einer Ausführungsform kann die Kommunikationsverbindung 2113 eine von einer beliebigen Anzahl von auf Standards basierenden Kommunikations-verbindungstechnologien oder - protokollen sein, wie beispielsweise, aber nicht beschränkt auf, PCI Express, oder kann sie eine herstellerspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. In zumindest einer Ausführungsform bilden ein oder mehrere Parallelprozessor(en) 2112 ein rechnerisch fokussiertes Parallel- oder Vektor-Verarbeitungssystem, das eine große Anzahl von Verarbeitungskernen und/oder Verarbeitungsclustern beinhalten kann, wie beispielsweise einen Prozessor mit vielen integrierten Kernen (Many Integrated Core; MIC). In zumindest einer Ausführungsform bilden ein oder mehrere Parallelprozessor(en) 2112 ein Grafikverarbeitungs-Subsystem, das Pixel an eine oder mehrere Anzeigevorrichtung(en) 2110A ausgeben kann, die über den I/O-Hub 2107 gekoppelt sind. In zumindest einer Ausführungsform können ein oder mehrere Parallelprozessor(en) 2112 auch eine Anzeigesteuereinrichtung und eine Anzeigeschnittstelle (nicht dargestellt) beinhalten, um eine direkte Verbindung zu einer oder mehreren Anzeigevorrichtung(en) 2110B zu ermöglichen.
  • In zumindest einer Ausführungsform kann eine Systemspeichereinheit 2114 mit dem I/O-Hub 2107 verbinden, um einen Speichermechanismus für das Computersystem 2100 bereitzustellen. In zumindest einer Ausführungsform kann ein I/O-Switch 2116 dazu verwendet werden, einen Schnittstellenmechanismus bereitzustellen, um Verbindungen zwischen dem I/O-Hub 2107 und anderen Komponenten, wie beispielsweise einem Netzwerkadapter 2118 und/oder einem drahtlosen Netzwerkadapter 2119, der in die Plattform integriert sein kann, und verschiedenen anderen Vorrichtungen, die über eine oder mehrere Add-In-Vorrichtung(en) 2120 hinzugefügt sein können, zu ermöglichen. In zumindest einer Ausführungsform kann der Netzwerkadapter 2118 ein Ethernet-Adapter oder ein anderer verdrahteter Netzwerkadapter sein. In zumindest einer Ausführungsform kann der drahtlose Netzwerkadapter 2119 ein oder mehrere Wi-Fi, Bluetooth-, Nahfeldkommunikations (NFC)- oder andere Netzwerkgeräte beinhalten, die ein oder mehrere drahtlose Funkeinrichtungen beinhalten.
  • In zumindest einer Ausführungsform kann das Computersystem 2100 andere Komponenten beinhalten, die nicht explizit gezeigt sind, einschließlich USB- oder andere Portverbindungen, optische Speicherlaufwerke, Videoaufnahmevorrichtungen und dergleichen, die auch mit dem I/O-Hub 2107 verbunden sein können. In zumindest einer Ausführungsform können Kommunikationspfade, die verschiedene Komponenten in 21 miteinander verbinden, unter Verwendung beliebiger geeigneter Protokolle, wie z. B. PCI-(Peripheral Component Interconnect)-basierter Protokolle (z. B. PCI-Express), oder anderer Bus- oder Punkt-zu-Punkt-Kommunikationsschnittstellen und/oder - Protokolle(n), wie z. B. NV-Link-Hochgeschwindigkeitsverbindungen oder Zwischenverbindungsprotokolle, implemen-tiert sein.
  • In zumindest einer Ausführungsform beinhalten ein oder mehrere Parallelprozessor(en) 2112 für Grafik- und Videoverarbeitung optimierte Schaltkreise, die beispielsweise Videoausgabeschaltkreise beinhalten und eine Grafikverarbeitungseinheit (GPU) bilden. In zumindest einer Ausführungsform beinhalten ein oder mehrere Parallelprozessor(en) 2112 für allgemeine Verarbeitung optimierte Schaltkreise. In zumindest einer Ausführungsform können Komponenten des Computersystems 2100 mit einem oder mehreren anderen Systemelementen auf einer einzigen integrierten Schaltung integriert sein. Beispielsweise können in zumindest einer Ausführungsform ein oder mehrere Parallelprozessor(en) 2112, der Speicher-Hub 2105, der bzw. die Prozessor(en) 2102 und der I/O-Hub 2107 in eine System on Chip (SoC)-integrierte Schaltung integriert sein. In zumindest einer Ausführungsform können Komponenten des Computersystems 2100 in ein einziges Gehäuse integriert sein, um eine Systemin-Package (SIP)-Konfiguration zu bilden. In zumindest einer Ausführungsform kann zumindest ein Teil von Komponenten des Computersystems 2100 in ein Multi-Chip-Modul (MCM) integriert sein, welches mit anderen Multi-Chip-Modulen zu einem modularen Computersystem verbunden sein kann.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem System von 2100 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • PROZESSOREN
  • 22A veranschaulicht einen Parallelprozessor 2200 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform können verschiedene Komponenten des Parallelprozessors 2200 unter Verwendung einer oder mehrerer integrierter Schaltungsvorrichtungen, wie beispielsweise programmierbare Prozessoren, anwendungsspezifische integrierte Schaltungen (ASICs) oder feldprogrammierbare Gate-Arrays (FPGA) implementiert sein. In zumindest einer Ausführungsform ist der veranschaulichte Parallelprozessor 2200 eine Variante eines oder mehrerer in 21 gezeigter Parallelprozessoren 2112, gemäß einer beispielhaften Ausführungsform.
  • In zumindest einer Ausführungsform beinhaltet der Parallelprozessor 2200 eine Parallelverarbeitungseinheit 2202. In zumindest einer Ausführungsform beinhaltet die Parallelverarbeitungseinheit 2202 eine I/O-Einheit 2204, die eine Kommunikation mit anderen Vorrichtungen ermöglicht, einschließlich anderer Instanzen der Parallelverarbeitungseinheit 2202. In zumindest einer Ausführungsform kann die I/O-Einheit 2204 direkt mit anderen Vorrichtungen verbunden sein. In zumindest einer Ausführungsform verbindet sich die I/O-Einheit 2204 mit anderen Vorrichtungen unter Verwendung eines Hubs oder einer Switch-Schnittstelle, wie beispielsweise dem Speicher-Hub 2105. In zumindest einer Ausführungsform bilden Verbindungen zwischen dem Speicher-Hub 2105 und der I/O-Einheit 2204 eine Kommunikationsverbindung 2113. In zumindest einer Ausführungsform verbindet sich die I/O-Einheit 2204 mit einer Host-Schnittstelle 2206 und einer Speicherquerschiene 2216, wobei die Host-Schnittstelle 2206 Befehle empfängt, die zur Durchführung von Verarbeitungsoperationen bestimmt sind, und die Speicherquerschiene 2216 Befehle empfängt, die zur Durchführung von Speicheroperationen bestimmt sind.
  • In zumindest einer Ausführungsform kann dann, wenn die Host-Schnittstelle 2206 über die I/O-Einheit 2204 einen Befehlspuffer empfängt, die Host-Schnittstelle 2206 Arbeitsoperationen anweisen, um diese Befehle an einem Frontend 2208 auszuführen. In zumindest einer Ausführungsform koppelt das Frontend 2208 mit einem Scheduler 2210, der dazu konfiguriert ist, Befehle oder andere Arbeitselemente an eine Verarbeitungsclusteranordnung 2212 zu verteilen. In zumindest einer Ausführungsform stellt der Scheduler 2210 sicher, dass die Clusteranordnung 2212 richtig konfiguriert ist und sich in einem gültigen Zustand befindet, bevor Aufgaben an die Verarbeitungsclusteranordnung 2212 der Verarbeitungsclusteranordnung 2212 verteilt werden. In zumindest einer Ausführungsform ist der Scheduler 2210 über Firmware-Logik implementiert, die auf einem Mikrocontroller ausgeführt wird. In zumindest einer Ausführungsform ist der von dem Mikrocontroller implementierte Scheduler 2210 dazu konfigurierbar, komplexe Planungs- und Arbeitsverteilungsoperationen mit grober und feiner Granularität durchzuführen, was eine schnelle Vorwegnahme und Kontextumschaltung von Threads ermöglicht, die auf der Verarbeitungsanordnung 2212 ausgeführt werden. In zumindest einer Ausführungsform kann die Host-Software Arbeitslasten für die Planung auf der Verarbeitungsanordnung 2212 über eine von mehreren Grafikverarbeitungstürklingeln nachweisen. In zumindest einer Ausführungsform können dann Arbeitslasten über die Verarbeitungsanordnung 2212 hinweg durch die Logik des Schedulers 2210 innerhalb eines Mikrocontrollers einschließlich des Schedulers 2210 automatisch verteilt werden.
  • In zumindest einer Ausführungsform kann die Verarbeitungsclusteranordnung 2212 bis zu „N“-Verarbeitungscluster (z.B. Cluster 2214A, Cluster 2214B, bis Cluster 2214N) beinhalten. In zumindest einer Ausführungsform kann jeder Cluster 2214A-2214N der Verarbeitungsclusteranordnung 2212 eine große Anzahl gleichzeitiger Threads ausführen. In zumindest einer Ausführungsform kann der Scheduler 2210 den Clustern 2214A-2214N der Verarbeitungsclusteranordnung 2212 unter Verwendung verschiedener Planungs- und/oder Arbeitsverteilungs-algorithmen Arbeit zuweisen, welche je nach Arbeitsbelastung, die für jede Art von Programm oder Berechnung aufkommt, variieren kann. In zumindest einer Ausführungsform kann die Planung von dem Scheduler 2210 dynamisch gehandhabt werden, oder kann teilweise durch Compilerlogik während der Kompilierung der Programmlogik, die für die Ausführung durch die Verarbeitung der Clusteranordnung 2212 konfiguriert ist, unterstützt werden. In zumindest einer Ausführungsform können verschiedene Cluster 2214A-2214N der Verarbeitungsclusteranordnung 2212 zur Verarbeitung verschiedener Arten von Programmen oder zur Durchführung verschiedener Arten von Berechnungen allokiert sein.
  • In zumindest einer Ausführungsform kann die Verarbeitungsclusteranordnung 2212 dazu konfiguriert sein, verschiedene Arten von Parallelverarbeitungsoperationen durchzuführen. In zumindest einer Ausführungsform ist die Verarbeitungsclusteranordnung 2212 dazu konfiguriert, allgemeine parallele Rechenoperationen durchzuführen. Beispielsweise kann in zumindest einer Ausführungsform die Verarbeitungsclusteranordnung 2212 Logik beinhalten, um Verarbeitungsaufgaben einschließlich eines Filterns von Video- und/oder Audiodaten, Durchführens von Modellierungsoperationen, einschließlich physikalischer Operationen, und Durchführens von Datentransformationen auszuführen,.
  • In zumindest einer Ausführungsform ist die Verarbeitungsclusteranordnung 2212 dazu konfiguriert, parallele Grafikverarbeitungsoperationen durchzuführen. In zumindest einer Ausführungsform kann die Verarbeitungsclusteranordnung 2212 zusätzliche Logik beinhalten, um die Ausführung solcher Grafikverarbeitungs-operationen zu unterstützen, einschließlich einer, aber nicht beschränkt auf eine, Texturabtastlogik zur Durchführung von Texturoperationen, sowie einer Tessellierungslogik und anderer Vertex-Verarbeitungslogik. In zumindest einer Ausführungsform kann die Verarbeitungsclusteranordnung 2212 dazu konfiguriert sein, grafikverarbeitungsbezogene Shader-Programme auszuführen, wie beispielsweise Vertex-Shader, Tessellation-Shader, Geometrie-Shader und Pixel-Shader. In zumindest einer Ausführungsform kann die Parallelverarbeitungseinheit 2202 Daten aus dem Systemspeicher über die I/O-Einheit 2204 zur Verarbeitung übertragen. In zumindest einer Ausführungsform können während der Verarbeitung übertragene Daten während der Verarbeitung in einem On-Chip-Speicher (z.B. Speicher des Parallelprozessors 2222) gespeichert und anschließend in den Systemspeicher zurückgeschrieben werden.
  • In zumindest einer Ausführungsform kann dann, wenn die Parallelverarbeitungseinheit 2202 zur Durchführung von Grafikverarbeitung verwendet wird, der Scheduler 2210 dazu konfiguriert sein, eine Verarbeitungsarbeitslast in etwa gleich große Aufgaben aufzuteilen, um die Verteilung von Grafikverarbeitungsoperationen auf mehrere Cluster 2214A-2214N der Verarbeitungsclusteranordnung 2212 besser zu ermöglichen. In zumindest einer Ausführungsform können Abschnitte der Verarbeitungsclusteranordnung 2212 dazu konfiguriert sein, verschiedene Arten von Verarbeitung durchzuführen. Beispielsweise kann in zumindest einer Ausführungsform ein erster Abschnitt dazu konfiguriert sein, Vertex-Shading und Topologieerzeugung durchzuführen, kann ein zweiter Abschnitt dazu konfiguriert sein, Tessellierung und Geometrie-Shading durchzuführen, und kann ein dritter Abschnitt dazu konfiguriert sein, Pixel-Shading oder andere Bildschirmraumoperationen durchzuführen, um ein gerendertes Bild für die Anzeige zu erzeugen. In zumindest einer Ausführungsform können Zwischendaten, die von einem oder mehreren der Cluster 2214A-2214N erzeugt wurden, in Puffern gespeichert werden, so dass Zwischendaten zwischen den Clustern 2214A-2214N zur weiteren Verarbeitung übertragen werden können.
  • In zumindest einer Ausführungsform kann die Verarbeitungsclusteranordnung 2212 Verarbeitungsaufgaben empfangen, die über den Scheduler 2210 auszuführen sind, der von dem Frontend 2208 Befehle empfängt, die Verarbeitungsaufgaben definieren. In zumindest einer Ausführungsform können Verarbeitungsaufgaben Indizes von zu verarbeitenden Daten beinhalten, z.B. Oberflächen-(Patch)-Daten, Stammfunktionsdaten, Vertex-Daten und/oder Pixeldaten, sowie Zustandsparameter und Befehle, die definieren, wie Daten zu verarbeiten sind (z.B. welches Programm auszuführen ist). In zumindest einer Ausführungsform kann der Scheduler 2210 dazu konfiguriert sein, Indizes zu holen, die Aufgaben entsprechen, oder kann Indizes von dem Frontend 2208 empfangen. In zumindest einer Ausführungsform kann das Frontend 2208 dazu konfiguriert sein, sicherzustellen, dass die Verarbeitungscluster-anordnung 2212 in einen gültigen Zustand konfiguriert ist, bevor eine durch eingehende Befehlspuffer (z.B. Stapelpuffer, Schiebepuffer, usw.) spezifizierte Arbeitslast initiiert wird.
  • In zumindest einer Ausführungsform kann jede von einer oder mehreren Instanzen der Parallelverarbeitungseinheit 2202 mit dem Parallelprozessorspeicher 2222 gekoppelt sein. In zumindest einer Ausführungsform kann auf den Parallelprozessorspeicher 2222 über die Speicherquerschiene 2216 zugegriffen werden, die Speicheranforderungen von der Verarbeitungsclusteranordnung 2212 sowie der I/O-Einheit 2204 empfangen kann. In zumindest einer Ausführungsform kann die Speicherquerschiene 2216 über eine Speicherschnittstelle 2218 auf den Parallelprozessorspeicher 2222 zugreifen. In zumindest einer Ausführungsform kann die Speicherschnittstelle 2218 mehrere Partitionierungseinheiten (z.B. eine Partitionierungseinheit 2220A, eine Partitionierungseinheit 2220B, bis Partitionierungseinheit 2220N) beinhalten, die jeweils mit einem Abschnitt (z.B. der Speichereinheit) des Parallelprozessorspeichers 2222 koppeln können. In zumindest einer Ausführungsform ist eine Anzahl von Partitionierungseinheiten 2220A-2220N dazu konfiguriert, gleich einer Anzahl von Speichereinheiten zu sein, so dass eine erste Partitionierungseinheit 2220A eine entsprechende erste Speichereinheit 2224A aufweist, eine zweite Partitionierungseinheit 2220B eine entsprechende Speichereinheit 2224B aufweist und eine N-te Partitionierungseinheit 2220N eine entsprechende N-te Speichereinheit 2224N aufweist. In zumindest einer Ausführungsform kann eine Anzahl von Partitionierungseinheiten 2220A-2220N nicht gleich einer Anzahl von Speichervorrichtungen sein.
  • In zumindest einer Ausführungsform können die Speichereinheiten 2224A-2224N verschiedene Arten von Speichervorrichtungen beinhalten, einschließlich dynamischen Direktzugriffspeichers (DRAM) oder Grafik-Direktzugriffspeichers, wie beispielsweise synchronen Grafik-Direktzugriffspeichers (SGRAM), einschließlich Grafikspeichers mit doppelter Datenrate (GDDR). In zumindest einer Ausführungsform können die Speichereinheiten 2224A-2224N auch 3D-Stapelspeicher beinhalten, einschließlich, aber nicht beschränkt auf, Speicher mit hoher Bandbreite (HBM). In zumindest einer Ausführungsform können Renderziele, wie beispielsweise Einzelbildpuffer bzw. Frame-Puffer oder Texturkarten, über Speichereinheiten 2224A-2224N hinweg gespeichert sein, so dass die Partitionseinheiten 2220A-2220N Abschnitte jedes Renderziels parallel schreiben können, um verfügbare Bandbreite des Parallelprozessorspeichers 2222 effizient zu nutzen. In zumindest einer Ausführungsform kann eine lokale Instanz des Parallelprozessorspeichers 2222 zugunsten eines vereinheitlichten Speicherdesigns, das Systemspeicher in Verbindung mit lokalem Cache-Speicher nutzt, ausgeschlossen sein.
  • In zumindest einer Ausführungsform kann jeder beliebige der Cluster 2214A-2214N der Verarbeitungsclusteranordnung 2212 Daten verarbeiten, die in eine beliebige der Speichereinheiten 2224A-2224N in dem Parallelprozessorspeicher 2222 geschrieben werden. In zumindest einer Ausführungsform kann die Speicherquerschiene 2216 dazu konfiguriert sein, eine Ausgabe jedes Clusters 2214A-2214N an eine beliebige Partitionseinheit 2220A-2220N oder an einen anderen Cluster 2214A-2214N zu übertragen, der zusätzliche Verarbeitungsoperationen an einer Ausgabe durchführen kann. In zumindest einer Ausführungsform kann jeder Cluster 2214A-2214N mit der Speicherschnittstelle 2218 über die Speicherquerschiene 2216 kommunizieren, um aus verschiedenen externen Speichervorrichtungen zu lesen oder in diese zu schreiben. In zumindest einer Ausführungsform hat die Speicherquerschiene 2216 zur Kommunikation mit der I/O-Einheit 2204 Verbindung zu der Speicherschnittstelle 2218, sowie eine Verbindung zu einer lokalen Instanz des Parallelprozessorspeichers 2222, so dass Verarbeitungseinheiten innerhalb verschiedener Verarbeitungscluster 2214A-2214N mit Systemspeicher oder anderem Speicher kommunizieren können, der nicht lokal zu der Parallelverarbeitungseinheit 2202 ist. In zumindest einer Ausführungsform kann die Speicherquerschiene 2216 virtuelle Kanäle verwenden, um Ströme von Datenaufkommen zwischen den Clustern 2214A-2214N und den Partitionierungseinheiten 2220A-2220N zu trennen.
  • In zumindest einer Ausführungsform können mehrere Instanzen der Parallelverarbeitungseinheit 2202 auf einer einzigen Erweiterungskarte bereitgestellt sein, oder können mehrere Erweiterungskarten miteinander verbunden sein. In zumindest einer Ausführungsform können verschiedene Instanzen der Parallelverarbeitungseinheit 2202 dazu konfiguriert sein, auch dann miteinander zu arbeiten, wenn verschiedene Instanzen eine unterschiedliche Anzahl von Verarbeitungskernen, unterschiedliche Mengen an lokalem Parallelprozessor-speicher und/oder andere Konfigurationsunterschiede aufweisen. Beispielsweise können in zumindest einer Ausführungsform einige Instanzen der Parallelverarbeitungseinheit 2202 relativ zu anderen Instanzen Gleitkommaeinheiten mit höherer Genauigkeit beinhalten. In zumindest einer Ausführungsform können Systeme, die eine oder mehrere Instanzen der Parallelverarbeitungseinheit 2202 oder des Parallelprozessors 2200 beinhalten, in einer Vielzahl von Konfigurationen und Formfaktoren implementiert sein, einschließlich, aber nicht beschränkt auf, Desktop-, Laptop- oder Handheld-Personal Computer, Server, Workstations, Spielkonsolen und/oder eingebetteter Systeme.
  • 22B ist ein Blockdiagramm einer Partitionierungseinheit 2220 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist die Partitionierungseinheit 2220 eine Instanz einer der Partitionierungseinheiten 2220A-2220N aus 22A. In zumindest einer Ausführungsform beinhaltet die Partitionierungseinheit 2220 einen L2-Cache 2221, ein Frame-Buffer-Interface bzw. eine Einzelbildpufferschnittstelle 2225 und eine ROP 2226 (Rasteroperationseinheit). Der L2-Cache 2221 ist ein Lese-/Schreib-Cache, der dazu konfiguriert ist, Lade- und Speicheroperationen durchzuführen, die von der Speicherquerschiene 2216 und der ROP 2226 empfangen wurden. In zumindest einer Ausführungsform werden Lesefehler und dringende Rückschreibanforderungen von dem L2-Cache 2221 an die Einzelbildpufferschnittstelle 2225 zur Verarbeitung ausgegeben. In zumindest einer Ausführungsform können Aktualisierungen über die Einzelbildpufferschnittstelle 2225 zur Verarbeitung auch an einen Einzelbildpuffer gesendet werden. In zumindest einer Ausführungsform ist die Einzelbildpufferschnittstelle 2225 mit einer der Speichereinheiten in dem Parallelprozessorspeicher, wie beispielsweise den Speichereinheiten 2224A-2224N aus 22 (z.B. innerhalb des Parallelprozessor-speichers 2222) verbunden.
  • In zumindest einer Ausführungsform ist die ROP 2226 eine Verarbeitungseinheit, die Rasteroperationen wie Schablone, Z-Test, Blending und dergleichen durchführt. In zumindest einer Ausführungsform gibt die ROP 2226 dann verarbeitete Grafikdaten aus, die in dem Grafikspeicher gespeichert sind. In zumindest einer Ausführungsform beinhaltet die ROP 2226 eine Kompressionslogik zum Komprimieren von Tiefen- oder Farbdaten, die in den Speicher geschrieben werden, und zum Dekomprimieren von Tiefen- oder Farbdaten, die aus dem Speicher gelesen werden. In zumindest einer Ausführungsform kann die Kompressionslogik eine verlustfreie Kompressionslogik sein, die einen oder mehrere von multiplen Kompressionsalgorithmen verwendet. Die Art der Komprimierung, die von der ROP 2226 durchgeführt wird, kann basierend auf statistischen Merkmalen der zu komprimierenden Daten variieren. Beispielsweise wird in zumindest einer Ausführungsform eine Delta-Farbkompression auf Tiefen- und Farbdaten auf kachelweiser Grundlage durchgeführt.
  • In zumindest einer Ausführungsform ist die ROP 2226 in jedem Verarbeitungscluster (z.B. Cluster 2214A-2214N aus 22) anstelle von in der Partitionierungseinheit 2220 enthalten. In zumindest einer Ausführungsform werden Lese- und Schreibanforderungen für Pixeldaten über die Speicherquerschiene 2216 anstelle von Pixelfragmentdaten übertragen. In zumindest einer Ausführungsform können verarbeitete Grafikdaten auf einer Anzeigevorrichtung, wie beispielsweise einer oder mehreren Anzeigevorrichtung(en) 2110 aus 21,angezeigt werden, zur weiteren Verarbeitung durch den/die Prozessor(en) 2102 weitergeleitet werden, oder zur weiteren Verarbeitung durch eine der Verarbeitungsentitäten innerhalb des Parallelprozessors 2200 aus 22A weitergeleitet werden.
  • 22C ist ein Blockdiagramm eines Verarbeitungsclusters 2214 innerhalb einer Parallelverarbeitungseinheit gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist ein Verarbeitungscluster eine Instanz eines der Verarbeitungscluster 2214A-2214N aus 22. In zumindest einer Ausführungsform kann der Verarbeitungscluster 2214 dazu konfiguriert sein, viele Threads parallel auszuführen, wobei sich der Begriff „Thread“ auf eine Instanz eines bestimmten Programms bezieht, das auf einem bestimmten Satz von Eingangsdaten ausgeführt wird. In zumindest einer Ausführungsform werden Einzelanweisungs-Mehrfachdaten ((Single Instruction, Multiple Data, SIMD)-Befehlsausgabetechniken dazu verwendet, die parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Befehlseinheiten bereitzustellen. In zumindest einer Ausführungsform werden Einzelanweisungs-Mehrfachthread (Single Instruction, Multiple Thread, SIMT)-Techniken dazu verwendet, die parallele Ausführung einer großen Anzahl von im Allgemeinen synchronisierten Threads zu unterstützen, wobei eine gemeinsame Befehlseinheit verwendet wird, die dazu konfiguriert ist, Anweisungen an eine Reihe von Verarbeitungs-Engines innerhalb jedes einzelnen der Verarbeitungscluster auszugeben.
  • In zumindest einer Ausführungsform kann der Betriebsablauf des Verarbeitungsclusters 2214 über einen Pipeline-Verwalter 2232 gesteuert werden, der Verarbeitungsaufgaben an SIMT-Parallelprozessoren verteilt. In zumindest einer Ausführungsform empfängt der Pipeline-Verwalter 2232 Anweisungen von dem Scheduler 2210 von 22 und verwaltet die Ausführung dieser Anweisungen über einen Grafik-Multiprozessor 2234 und/oder eine Textureinheit 2236. In zumindest einer Ausführungsform ist der Grafik-Multiprozessor 2234 eine beispielhafte Instanz eines SIMT-Parallelprozessors. In zumindest einer Ausführungsform können jedoch verschiedene Arten von SIMT-Parallelprozessoren unterschiedlicher Architekturen innerhalb des Verarbeitungsclusters 2214 enthalten sein. In zumindest einer Ausführungsform können eine oder mehrere Instanzen des Grafik-Multiprozessors 2234 in einem Verarbeitungscluster 2214 enthalten sein. In zumindest einer Ausführungsform kann der Grafik-Multiprozessor 2234 Daten verarbeiten und kann eine Datenquerschiene 2240 dazu verwendet werden, verarbeitete Daten an eines von mehreren möglichen Zielen, einschließlich anderer Shader-Einheiten, zu verteilen. In zumindest einer Ausführungsform kann der Pipeline-Verwalter 2232 die Verteilung der verarbeiteten Daten erleichtern, indem er Ziele für verarbeitete Daten spezifiziert, die über die Datenquerschiene 2240 zu verteilen sind.
  • In zumindest einer Ausführungsform kann jeder Grafik-Multiprozessor 2234 innerhalb des Verarbeitungsclusters 2214 einen identischen Satz funktionaler Ausführungslogik (z.B. Arithmetik-Logikeinheiten, Lade-SpeicherEinheiten, usw.) beinhalten. In zumindest einer Ausführungsform kann funktionale Ausführungslogik nach Art des Pipeline-Prinzips konfiguriert sein, in welcher neue Anweisungen ausgegeben werden können, bevor frühere Anweisungen beendet sind. In zumindest einer Ausführungsform unterstützt die funktionale Ausführungslogik eine Vielzahl von Operationen, einschließlich Ganzzahl- und Gleitkommaarithmetik, Vergleichsoperationen, boolesche Operationen, Bit-Shifting und Berechnung verschiedener algebraischer Funktionen. In zumindest einer Ausführungsform kann die gleiche Hardware funktionaler Einheiten dazu genutzt werden, verschiedene Operationen durchzuführen, und kann jede beliebige Kombination von funktionaler Einheiten vorhanden sein.
  • In zumindest einer Ausführungsform bilden an den Verarbeitungscluster 2214 übertragene Anweisungen einen Thread. In zumindest einer Ausführungsform ist ein Satz von Threads, die über einen Satz von Parallelverarbeitungs-Engines ausgeführt werden, eine Thread-Gruppe. In zumindest einer Ausführungsform führt die Thread-Gruppe ein Programm auf verschiedenen Eingangsdaten aus. In zumindest einer Ausführungsform kann jeder Thread innerhalb einer Thread-Gruppe einer anderen Verarbeitungs-Engine innerhalb eines Grafik-Multiprozessors 2234 zugeordnet sein. In zumindest einer Ausführungsform kann eine Thread-Gruppe weniger Threads beinhalten als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2234. In zumindest einer Ausführungsform kann dann, wenn eine Thread-Gruppe weniger Threads enthält als eine Anzahl von Verarbeitungs-Engines, eine oder mehrere der Verarbeitungs-Engines während der Zyklen, in welchen diese Thread-Gruppe verarbeitet wird, im Leerlauf sein. In zumindest einer Ausführungsform kann dann, wenn eine Thread-Gruppe mehr Threads beinhaltet als eine Anzahl von Verarbeitungs-Engines innerhalb des Grafik-Multiprozessors 2234, die Verarbeitung über aufeinanderfolgende Taktzyklen durchgeführt werden. In zumindest einer Ausführungsform können mehrere Thread-Gruppen gleichzeitig auf einem Grafik-Multiprozessor 2234 ausgeführt werden.
  • In zumindest einer Ausführungsform beinhaltet der Grafik-Multiprozessor 2234 einen internen Cache-Speicher, um Lade- und Speicheroperationen durchzuführen. In zumindest einer Ausführungsform kann der Grafik-Multiprozessor 2234 auf einen internen Cache verzichten und einen Cache-Speicher (z.B. den L1-Cache 2248) innerhalb des Verarbeitungsclusters 2214 verwenden. In zumindest einer Ausführungsform hat jeder Grafik-Multiprozessor 2234 auch Zugriff auf L2-Caches innerhalb von Partitionseinheiten (z.B. den Partitionseinheiten 2220A-2220N aus 22), die unter allen Verarbeitungsclustern 2214 gemeinsam genutzt werden und zum Übertragen von Daten zwischen Threads verwendet werden können. In zumindest einer Ausführungsform kann der Grafik-Multiprozessor 2234 auch auf einen globalen Speicher außerhalb des Chips zugreifen, der einen oder mehrere lokale Parallelprozessorspeicher und/oder Systemspeicher beinhalten kann. In zumindest einer Ausführungsform kann jeder Speicher, der außerhalb der Parallelverarbeitungseinheit 2202 liegt, als Gesamtspeicher verwendet werden. In zumindest einer Ausführungsform beinhaltet der Verarbeitungscluster 2214 mehrere Instanzen des Grafik-Multiprozessors 2234, der gemeinsame Anweisungen und Daten austauschen kann, welche in dem L1-Cache 2248 gespeichert sein können.
  • In zumindest einer Ausführungsform kann jeder Verarbeitungscluster 2214 eine MMU 2245 (Speicherverwaltungseinheit) beinhalten, die dazu konfiguriert ist, virtuelle Adressen auf physikalische Adressen abzubilden. In zumindest einer Ausführungsform können sich eine oder mehrere Instanzen der MMU 2245 innerhalb der Speicherschnittstelle 2218 von 22 befinden. In zumindest einer Ausführungsform beinhaltet die MMU 2245 einen Satz von Seitentabelleneinträgen (Page Table Entries, PTEs), die dazu verwendet werden, eine virtuelle Adresse auf eine physikalische Adresse einer Kachel (sprich mehr über Kacheln) und optional einen Cache-Leitungsindex abzubilden. In zumindest einer Ausführungsform kann die MMU 2245 Adressübersetzungs-Lookaside-Puffer (TLB) oder Caches beinhalten, die sich in dem Grafik-Multiprozessor 2234 oder in dem L1-Cache oder in dem Verarbeitungscluster 2214 befinden können. In zumindest einer Ausführungsform wird die physikalische Adresse verarbeitet, um den Oberflächendaten-Zugriffsort zu verteilen, um eine effiziente Verschachtelung von Anforderungen zwischen Partitionierungseinheiten zu ermöglichen. In zumindest einer Ausführungsform kann der Cache-Leitungsindex dazu verwendet werden, zu bestimmen, ob eine Anforderung für eine Cache-Leitung ein Treffer oder ein Nichttreffer ist.
  • In zumindest einer Ausführungsform kann ein Verarbeitungscluster 2214 derart konfiguriert sein, dass jeder Grafik-Multiprozessor 2234 mit einer Textureinheit 2236 zum Durchführen von Texturmappingoperationen, z.B. einem Bestimmen von Texturprobenpositionen, einem Lesen von Texturdaten und einem Filtern von Texturdaten, gekoppelt ist. In zumindest einer Ausführungsform werden Texturdaten aus einem internen Textur-L1-Cache (nicht gezeigt) oder aus einem L1-Cache innerhalb des Grafik-Multiprozessors 2234 gelesen und bei Bedarf aus einem L2-Cache, einem lokalen Parallelprozessorspeicher oder einem Systemspeicher geholt. In zumindest einer Ausführungsform gibt jeder Grafik-Multiprozessor 2234 verarbeitete Aufgaben an die Datenquerschiene 2240 aus, um die verarbeitete Aufgabe einem anderen Verarbeitungscluster 2214 zur weiteren Verarbeitung bereitzustellen oder um die verarbeitete Aufgabe über die Speicherquerschiene 2216 in einem L2-Cache, einem lokalen Parallelprozessorspeicher oder einem Systemspeicher zu speichern. In zumindest einer Ausführungsform ist eine preROP 2242 (Pre-Raster Operations Unit) bzw. Vorrasteroperationseinheit dazu konfiguriert, Daten von dem Grafik-Multiprozessor 2234 zu empfangen und Daten an ROP-Einheiten, welche mit Partitionierungseinheiten wie hierin beschrieben angeordnet sein können (z.B. die Partitionierungseinheiten 2220A-2220N von 22) zu leiten. In zumindest einer Ausführungsform kann die PreROP 2242-Einheit Optimierungen zur Farbmischung durchführen, Pixelfarbdaten organisieren und Adressübersetzungen durchführen.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem Grafikverarbeitungscluster 2214 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 22D zeigt einen Grafik-Multiprozessor 2234 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform koppelt der Grafik-Multiprozessor 2234 mit dem Pipeline-Verwalter 2232 des Verarbeitungsclusters 2214. In zumindest einer Ausführungsform weist der Grafik-Multiprozessor 2234 eine Ausführungspipeline auf, die einen Anweisungs- bzw. Befehls-Cache 2252, eine Anweisungs- bzw. Befehlseinheit 2254, eine Adresszuordnungseinheit 2256, eine Registerdatei 2258, einen oder mehrere Vielzweck-Grafikverarbeitungseinheit GPGPU-Kerne 2262 und eine oder mehrere Lade-/Speicher-Einheiten 2266 beinhaltet, ohne darauf beschränkt zu sein. Die GPGPU-Kerne 2262 und die Lade-/Speicher-Einheiten 2266 sind mit dem Cache-Speicher 2272 und dem gemeinsam genutzten Speicher 2270 über eine Speicher- und Cache-Zwischenverbindung 2268 gekoppelt.
  • In zumindest einer Ausführungsform empfängt der Befehls-Cache 2252 einen Strom von Anweisungen, die von dem Pipeline-Verwalter 2232 auszuführen sind. In zumindest einer Ausführungsform werden Anweisungen in dem Befehls-Cache 2252 zwischengespeichert und zur Ausführung durch die Befehlseinheit 2254 bereitgestellt. In zumindest einer Ausführungsform kann die Befehlseinheit 2254 Anweisungen als Thread-Gruppen (z.B. Warps) senden, wobei jeder Thread der Thread-Gruppe einer anderen Ausführungseinheit innerhalb des GPGPU-Kerns 2262 zugeordnet ist. In zumindest einer Ausführungsform kann eine Anweisung auf einen beliebigen eines lokalen, gemeinsam genutzten oder globalen Adressraums zugreifen, indem sie eine Adresse innerhalb eines vereinheitlichten Adressraums spezifiziert. In zumindest einer Ausführungsform kann die Adresszuordnungseinheit 2256 dazu verwendet werden, Adressen in einem vereinheitlichten Adressraum in eine eindeutige Speicheradresse zu übersetzen, auf von den Lade-/Speicher-Einheiten 2266 zugegriffen werden kann.
  • In zumindest einer Ausführungsform stellt die Registerdatei 2258 einen Satz von Registern für funktionale Einheiten bzw. Funktionseinheiten des Grafik-Multiprozessors 2234 bereit. In zumindest einer Ausführungsform stellt die Registerdatei 2258 einen temporären Speicher für Operanden, die mit Datenpfaden von Funktionseinheiten (z.B. den GPGPU-Kernen 2262, den Lade-/Speicher-Einheiten 2266) des Grafik-Multiprozessors 2234 verbunden sind, bereit. In zumindest einer Ausführungsform ist die Registerdatei 2258 derart auf jede der Funktionseinheiten aufgeteilt, dass jeder Funktionseinheit ein dedizierter Abschnitt der Registerdatei 2258 zugeordnet ist. In zumindest einer Ausführungsform ist die Registerdatei 2258 auf zwischen verschiedenen Ketten bzw. Warps aufgeteilt, die von dem den Grafik-Multiprozessor 2234 ausgeführt werden.
  • In zumindest einer Ausführungsform können die GPGPU-Kerne 2262 jeweils Gleitkommaeinheiten (FPUs) und/oder Ganzzahlarithmetik-Logikeinheiten (ALUs) beinhalten, die zum Ausführen von Anweisungen des Grafik-Multiprozessors 2234 verwendet werden. Die GPGPU-Kerne 2262 können in der Architektur ähnlich sein oder sich in der Architektur unterscheiden. In zumindest einer Ausführungsform beinhaltet ein erster Abschnitt der GPGPU-Kerne 2262 eine FPU einfacher Genauigkeit und eine Ganzzahl-ALU, während ein zweiter Abschnitt der GPGPU-Kerne eine FPU doppelter Genauigkeit beinhaltet. In zumindest einer Ausführungsform können FPUs den IEEE 754-2008-Standard für Gleitkommaarithmetik implementieren oder eine Gleitkommaarithmetik mit variabler Genauigkeit ermöglichen. In zumindest einer Ausführungsform kann der Grafik-Multiprozessor 2234 zusätzlich eine oder mehrere Einheiten mit fester Funktion oder Spezialfunktion zum Durchführen bestimmter Funktionen wie beispielsweise Kopierrechteck- oder Pixelblendingoperationen beinhalten. In zumindest einer Ausführungsform kann bzw. können ein oder mehrere GPGPU-Kerne auch Logik für eine feste oder spezielle Funktion beinhalten.
  • In zumindest einer Ausführungsform beinhalten die GPGPU-Kerne 2262 eine SIMD-Logik, die in der Lage ist, eine einzelne Anweisung auf bzw. für mehrere Datensätze durchzuführen. In zumindest einer Ausführungsform können GPGPU-Kerne 2262 SIMD4-, SIMD8- und SIMD16- Anweisungen physikalisch ausführen und SIMD1-, SIMD2- und SIMD32-Anweisungen logisch ausführen. In zumindest einer Ausführungsform können SIMD-Anweisungen für GPGPU-Cores zur Kompilierungszeit von einem Shader-Compiler generiert oder automatisch bei dem Ausführen von Programmen erzeugt werden, die für Single Program Multiple Data (SPMD) oder SIMT-Architekturen geschrieben und kompiliert wurden. In zumindest einer Ausführungsform können mehrere Threads eines für ein SIMT-Ausführungsmodell konfigurierten Programms über eine einzelne SIMD-Anweisung ausgeführt werden. Beispielsweise können in zumindest einer Ausführungsform acht SIMT-Threads, die gleiche oder ähnliche Operationen durchführen, über eine einzige SIMD8-Logikeinheit parallel ausgeführt werden.
  • In zumindest einer Ausführungsform ist die Speicher- und Cache-Zwischenverbindung 2268 ein Zwischenverbindungsnetzwerk, das jede Funktionseinheit des Grafik-Multiprozessors 2234 mit der Registerdatei 2258 und dem gemeinsamen Speicher 2270 verbindet. In zumindest einer Ausführungsform ist die Speicher- und Cache-Zwischenverbindung 2268 eine Querschienen-Zwischenverbindung, die es der Lade-/Speicher-Einheit 2266 ermöglicht, Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher 2270 und der Registerdatei 2258 zu implementieren. In zumindest einer Ausführungsform kann die Registerdatei 2258 mit der gleichen Frequenz wie die GPGPU-Kerne 2262 arbeiten, so dass die Datenübertragung zwischen den GPGPU-Kernen 2262 und der Registerdatei 2258 eine sehr geringe Latenzzeit aufweist. In zumindest einer Ausführungsform kann der gemeinsame Speicher 2270 dazu verwendet werden, die Kommunikation zwischen Threads zu ermöglichen, die auf Funktionseinheiten innerhalb des Grafik-Multiprozessors 2234 ausgeführt werden. In zumindest einer Ausführungsform kann der Cache-Speicher 2272 als beispielsweise ein Datencache verwendet werden, um Texturdaten, die zwischen Funktionseinheiten und der Textureinheit 2236 ausgetauscht werden, zwischenzuspeichern. In zumindest einer Ausführungsform kann der gemeinsam genutzte Speicher 2270 auch als ein programmverwalteter Cache verwendet werden. In zumindest einer Ausführungsform können Threads, die auf GPGPU-Kernen 2262 ausgeführt werden, programmatisch Daten innerhalb des gemeinsam genutzten Speichers speichern, zusätzlich zu automatisch zwischengespeicherten Daten, die innerhalb des Cache-Speichers 2272 gespeichert sind.
  • In zumindest einer Ausführungsform ist ein Parallelprozessor oder eine GPGPU, wie hierin beschrieben, kommunikativ mit Host/Prozessor-Kernen gekoppelt, um Grafikoperationen, Maschinenlernoperationen, Musteranalyseoperationen und verschiedene allgemeine GPU (GPGPU)-Funktionen zu beschleunigen. In zumindest einer Ausführungsform kann die GPU kommunikativ mit den Host/Prozessor-Kernen über einen Bus oder eine andere Zwischenverbindung (z.B. eine Hochgeschwindigkeits-Zwischenverbindung wie PCle oder NVLink) gekoppelt sein. In zumindest einer Ausführungsform kann die GPU in bzw. auf demselben Gehäuse oder Chip wie die Kerne integriert und kommunikativ mit Kernen über einen internen Prozessorbus/eine interne Zwischenverbindung (d.h. intern in Bezug auf das Gehäuse oder den Chip) gekoppelt sein. In zumindest einer Ausführungsform können Prozessorkerne unabhängig davon, wie die GPU verbunden ist, der GPU Arbeit in Form von Sequenzen von Befehlen/Anweisungen, die in einem Arbeitsdeskriptor enthalten sind, zuweisen. In zumindest einer Ausführungsform verwendet die GPU dann dedizierte Schaltkreise/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem Grafik-Multiprozessor 2234 dazu verwendet werden, Operationen zu inferenzieren oder vorherzusagen, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 23 veranschaulicht ein Multi-GPU-Computersystem 2300 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann das Multi-GPU-Computersystem 2300 einen Prozessor 2302 beinhalten, der über einen Host-Schnittstellen-Switch 2304 mit mehreren universellen Grafikverarbeitungseinheiten (GPGPUs) 2306A-D gekoppelt ist. In zumindest einer Ausführungsform ist der Host-Schnittstellen-Switch 2304 eine PCI-Express-Switch-Vorrichtung, die den Prozessor 2302 an einen PCI-Express-Bus koppelt, über welchen der Prozessor 2302 mit den GPGPUs 2306A-D kommunizieren kann. Die GPGPUs 2306A-D können sich über eine Reihe von Hochgeschwindigkeits-Punkt-zu-Punkt-GPU-zu-GPU-Verbindungen 2316 zwischenverbinden. In zumindest einer Ausführungsform verbinden sich die GPU-zu-GPU-Verbindungen 2316 über eine dedizierte GPU-Verbindung mit jeder der GPGPUs 2306A-D. In zumindest einer Ausführungsform ermöglichen die P2P-GPU-Verbindungen 2316 eine direkte Kommunikation zwischen jeder der GPGPUs 2306A-D, ohne eine Kommunikation über den Host-Schnittstellenbus 2304 zu erfordern, mit welchem der Prozessor 2302 verbunden ist. In zumindest einer Ausführungsform bleibt mit GPU-zu-GPU-Datenaufkommen, das auf die P2P-GPU-Verbindungen 2316 gerichtet ist, der Host-Schnittstellenbus 2304 für Systemspeicherzugriff oder zur Kommunikation mit anderen Instanzen des Multi-GPU-Computersystems 2300, beispielsweise, über eine oder mehrere Netzwerkvorrichtung(en) verfügbar. Während in zumindest einer Ausführungsform die GPGPUs 2306A-D über den Host-Schnittstellen-Switch 2304 mit dem Prozessor 2302 verbinden, beinhaltet in zumindest einer Ausführungsform der Prozessor 2302 direkte Unterstützung für die P2P GPU-Verbindungen 2316 und kann direkt mit den GPGPUs 2306A-D verbunden werden.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem Multi-GPU-Computersystem 2300 dazu verwendet werden, Operationen zu inferenzieren oder vorherzusagen, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 24 ist ein Blockdiagramm eines Grafikprozessors 2400 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 2400 eine Ringzwischenverbindung 2402, ein Pipeline-Frontend 2404, eine Medien-Engine 2437 und Grafikkerne 2480A-2480N. In zumindest einer Ausführungsform koppelt die Ringzwischenverbindung 2402 den Grafikprozessor 2400 an andere Verarbeitungseinheiten, einschließlich andere Grafikprozessoren oder einen oder mehrere universelle Prozessorkerne. In zumindest einer Ausführungsform ist der Grafikprozessor 2400 einer von vielen Prozessoren, die innerhalb eines Multicore-Verarbeitungssystems integriert sind.
  • In zumindest einer Ausführungsform empfängt der Grafikprozessor 2400 Stapel von Befehlen über die Ringzwischenverbindung 2402. In zumindest einer Ausführungsform werden eingehende Befehle von einem Befehlsstreamer 2403 in dem Pipeline-Frontend 2404 interpretiert. In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 2400 eine skalierbare Ausführungslogik zur Durchführung von 3D-Geometrieverarbeitung und Medienverarbeitung über den/die Grafikkern(e) 2480A-2480N. In zumindest einer Ausführungsform liefert der Befehlsstreamer 2403 für 3D-Geometrieverarbeitungsbefehle Befehle an die Geometrie-Pipeline 2436. In zumindest einer Ausführungsform liefert der Befehlsstreamer 2403 für zumindest einige Befehle zur Medienverarbeitung Befehle an ein Video-Frontend 2434, das mit einer Medien-Engine 2437 gekoppelt ist. In zumindest einer Ausführungsform beinhaltet die Medien-Engine 2437 eine Videoqualitäts-Engine (VQE) 2430 zur Video- und Bild-Nachbearbeitung und eine Multiformat-Kodier-/Dekodier-Engine (MFX) 2433 zur hardwarebeschleunigten Mediendatenkodierung und -dekodierung. In zumindest einer Ausführungsform erzeugen die Geometrie-Pipeline 2436 und die Medien-Engine 2437 jeweils Ausführungsthreads für Thread-Ausführungsressourcen, die von zumindest einem Grafikkern 2480A bereitgestellt werden.
  • In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 2400 skalierbare Thread-Ausführungsressourcen mit modularen Kernen 2480A-2480N (manchmal als Kern-Slices bezeichnet), die jeweils mehrere Subkerne 2450A-550N, 2460A-2460N (manchmal als Kern-Subslices bezeichnet) aufweisen. In zumindest einer Ausführungsform kann der Grafikprozessor 2400 eine beliebige Anzahl von Grafikkernen 2480A bis 2480N aufweisen. In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 2400 einen Grafikkern 2480A mit zumindest einem ersten Subkern 2450A und einem zweiten Subkern 2460A. In zumindest einer Ausführungsform ist der Grafikprozessor 2400 ein stromsparender Prozessor mit einem einzigen Subkern (z.B. 2450A). In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 2400 mehrere Grafikkerne 2480A-2480N, die jeweils einen Satz von ersten Subkernen 2450A-2450N und einen Satz von zweiten Subkernen 2460A-2460N beinhalten. In zumindest einer Ausführungsform beinhaltet jeder Subkern in den ersten Subkernen 2450A-2450N zumindest einen ersten Satz von Ausführungseinheiten 2452A-2452N und Medien/Textur-Abtastern bzw. -Samplern 2454A-2454N. In zumindest einer Ausführungsform beinhaltet jeder Subkern in den zweiten Subkernen 2460A-2460N zumindest einen zweiten Satz von Ausführungseinheiten 2462A-2462N und Abtastern 2464A-2464N. In zumindest einer Ausführungsform teilt sich jeder Subkern 2450A-2450N, 2460A-2460N einen Satz gemeinsamer Ressourcen 2470A-2470N. In zumindest einer Ausführungsform beinhalten gemeinsam genutzte Ressourcen gemeinsam genutzten Cache-Speicher und Pixeloperationslogik.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann die Inferenzierungs- und/oder Trainingslogik 915 in dem Grafikprozessor 2400 zum Inferenzieren oder Vorhersagen von Operationen verwendet werden, die zumindest teilweise auf Gewichtsparametern basieren, die unter Verwendung von Trainingsoperationen für neuronale Netzwerke, Funktionen und/oder Architekturen neuronaler Netzwerke oder hierin beschriebenen Anwendungsfällen neuronaler Netzwerke berechnet wurden.
  • 25 zeigt einen Prozessor 2500, der Logikschaltungen zum Ausführen von Anweisungen beinhalten kann, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann der Prozessor 2500 Anweisungen ausführen, einschließlich von x86-Befehlen, ARM-Befehlen, speziellen Anweisungen für anwendungsspezifische integrierte Schaltungen (ASICs), usw. In zumindest einer Ausführungsform kann der Prozessor 2510 Register beinhalten zum Speichern gepackter Daten beinhalten, wie beispielsweise 64-Bit breite MMX™-Register in Mikroprozessoren, die mit MMX-Technologie der Intel Corporation aus Santa Clara, Kalifornien, ausgestattet sind. In zumindest einer Ausführungsform können MMX-Register, die sowohl in Ganzzahl- als auch in Gleitkomma-Form verfügbar sind, mit gepackten Datenelementen arbeiten, die Einzelanweisungs-Mehrfachdaten („SIMD“) und Streaming-SIMD-Erweiterungen („SSE“) begleiten. In zumindest einer Ausführungsform können 128-Bit breite XMM-Register, die sich auf SSE2, SSE3, SSE4, AVX oder darüber hinaus beziehen (allgemein als „SSEx“ bezeichnet), solche gepackten Datenoperanden enthalten. In zumindest einer Ausführungsform können Prozessoren 2510 Anweisungen ausführen, um maschinelles Lernen oder Algorithmen für tiefes Lernen, das Training oder die Inferenzierung zu beschleunigen.
  • In zumindest einer Ausführungsform beinhaltet der Prozessor 2500 ein Frontend („Frontend“) 2501, um auszuführende Anweisungen zu holen und Anweisungen, die später in der Prozessorpipeline zu verwenden sind, vorzubereiten. In zumindest einer Ausführungsform kann das Frontend 2501 mehrere Einheiten beinhalten. In zumindest einer Ausführungsform holt ein Anweisungs-Vorabrufer bzw. -Prefetcher 2526 Anweisungen aus dem Speicher und leitet Anweisungen an einen Anweisungsdekodierer 2528 weiter, der wiederum Anweisungen dekodiert oder interpretiert. Beispielsweise dekodiert in zumindest einer Ausführungsform der Anweisungsdekodierer 2528 eine empfangenen Anweisung in eine oder mehrere Operationen, die als „Mikroanweisungen“ oder „Mikrooperationen“ bezeichnet werden (die auch als „Mikro-Ops“ oder „Uops“ bezeichnet werden), die die Maschine ausführen kann. In zumindest einer Ausführungsform parst bzw. analysiert der Anweisungsdekodierer 2528 die Anweisung in einen Opcode und entsprechende Daten und Steuerfelder, die von der Mikroarchitektur dazu verwendet werden können, Operationen in Übereinstimmung mit zumindest einer Ausführungsform durchzuführen. In zumindest einer Ausführungsform kann ein Trace- bzw. Spur-Cache 2530 dekodierte Uops zu programmgeordneten Sequenzen oder Spuren in einer Uop-Warteschlange 2534 zur Ausführung zusammenstellen. In zumindest einer Ausführungsform stellt dann, wenn der Trace-Cache 2530 auf eine komplexe Anweisung trifft, ein Mikrocode-ROM 2532 die für den Abschluss der Operation erforderlichen Uops bereit.
  • In zumindest einer Ausführungsform können einige Anweisungen in eine einzige Mikro-Op umgewandelt werden, während andere mehrere Mikro-Operationen benötigen, um die volle Operation abzuschließen. In zumindest einer Ausführungsform kann dann, wenn mehr als vier Mikro-Operationen benötigt werden, um eine Anweisung abzuschließen, der Anweisungsdekodierer 2528 auf den Mikrocode-ROM 2532 zugreifen, um die Anweisung auszuführen. In zumindest einer Ausführungsform kann eine Anweisung zur Verarbeitung an dem Anweisungsdekodierer 2528 in eine kleine Anzahl von Mikro-Ops. dekodiert werden. In zumindest einer Ausführungsform kann eine Anweisung in dem Mikrocode ROM 2532 gespeichert werden, falls eine Anzahl von Mikro-Operationen zur Durchführung des Betriebs erforderlich sein sollte. In zumindest einer Ausführungsform bezieht sich der Trace-Cache 2530 auf eine programmierbare Eintrittspunkt-Logikanordnung („PLA“), um einen korrekten Mikroanweisungszeiger zum Lesen von Mikrocodesequenzen zu bestimmen, um eine oder mehrere Anweisungen von dem Mikrocode ROM 2532 abzuschließen, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform beendet der Mikrocode-ROM 2532 die Sequenzierung von Mikro-Ops für eine Anweisung, wobei das Frontend 2501 der Maschine das Abholen von Mikro-Ops aus dem Trace-Cache 2530 wieder aufnehmen kann.
  • In zumindest einer Ausführungsform kann eine Außer-Betrieb bzw. Out-of-Order-Ausführungs-Engine („Out-of-Order-Engine“) 2503 Anweisungen zur Ausführung vorbereiten. In zumindest einer Ausführungsform weist die Out-of-Order-Ausführungslogik eine Reihe von Puffern auf, um den Fluss von Anweisungen zu glätten und neu zu ordnen, um die Leistung zu optimieren, während in die Pipeline gehen und zur Ausführung eingeplant werden. Die Out-of-Order-Ausführungs-Engine 2503 beinhaltet, ohne darauf beschränkt zu sein, einen Allokator/Register-Umbenenner 2540, eine Speicher-Uop-Warteschlange 2542, eine Ganzzahl/Gleitkomma-Uop-Warteschlange 2544, einen Speicher-Scheduler 2546, einen Schnell-Scheduler 2502, einen Langsam/Universal-Fließkomma-Scheduler („Langsam/Universal-FP-Scheduler“) 2504 und einen einfachen Gleitkomma-Scheduler („Einfach-FP-Scheduler“) 2506. In zumindest einer Ausführungsform werden der Schnell-Scheduler 2502, der Langsam/Universal-Gleitkomma-Scheduler 2504 und der Einfach-Gleitkomma-Scheduler 2506 hierin auch kollektiv als „Uop- Scheduler 2502, 2504, 2506“ bezeichnet. Der Allokator/Register-Umbenenner 2540 weist Engine- bzw. Maschinenpuffer und Ressourcen zu, die jeder Uop zur Ausführung benötigt. In zumindest einer Ausführungsform benennt der Allokator/Register-Umbenenner 2540 Logikregister auf Einträge in einer Registerdatei um. In zumindest einer Ausführungsform weist der Allokator/Register-Umbenenner 2540 auch einen Eintrag für jeden Uop in einer von zwei Uop-Warteschlangen, der Speicher-Uop-Warteschlange 2542 für Speicheroperationen und der Ganzzahl/Gleitkomma-Uop-Warteschlange 2544 für Nichtspeicher-operationen, vor dem Speicher-Scheduler 2546 und den Uop-Schedulern 2502, 2504, 2506 zu. In zumindest einer Ausführungsform ermitteln die Uop-Scheduler 2502, 2504, 2506, wann ein Uop ausführbereit ist, basierend auf der Bereitschaft ihrer abhängigen Eingangsregister-Operandenquellen und der Verfügbarkeit von Ausführungsressourcen, die Uops benötigen, um ihre Operation abzuschließen. In zumindest einer Ausführungsform kann der Schnell-Scheduler 2502 von zumindest einer Ausführungsform auf jeder Hälfte eines Hauptuhrzyklus planen, während der Langsam/Universal-Gleitkomma-Scheduler 2504 und der Einfach-Gleitkomma-Scheduler 2506 einmal pro Hauptprozessortaktzyklus planen können. In zumindest einer Ausführungsform vermitteln die Uop-Scheduler 2502, 2504, 2506 für Sende-Ports, um Uops zur Ausführung einzuplanen.
  • In zumindest einer Ausführungsform beinhaltet ein Ausführungsblock b11, ohne darauf beschränkt zu sein, ein Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2508, ein Gleitkomma-Registerdatei/Umgehungsnetzwerk („FP-Registerdatei/Umgehungs-netzwerk“) 2510, Adresserzeugungseinheiten („AGUs“) 2512 und 2514, schnelle Arithmetiklogikeinheiten (ALUs) („schnelle ALUs“) 2516 und 2518, eine langsame Arithmetiklogikeinheit („langsame ALU“) 2520, eine Gleitkomma-ALU („FP“) 2522 und eine Gleitkomma-Bewegungseinheit („FP Bewegung“) 2524. In zumindest einer Ausführungsform werden das Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2508 und das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2510 hierin auch als „Registerdateien 2508, 2510“ bezeichnet. In zumindest einer Ausführungsform werden die AGUSs 2512 und 2514, die schnellen ALUs 2516 und 2518, die langsame ALU 2520, die Gleitkomma-ALU 2522 und die Gleitkomma-Bewegungseinheit 2524 auch als „Ausführungseinheiten 2512, 2514, 2516, 2518, 2520, 2522 und 2524“ bezeichnet. In zumindest einer Ausführungsform kann der Ausführungsblock b11, ohne darauf beschränkt zu sein, eine beliebige Anzahl (einschließlich Null) und Art von Registerdateien, Umgehungsnetzwerken, Adresserzeugungseinheiten und Ausführungseinheiten in beliebiger Kombination beinhalten.
  • In zumindest einer Ausführungsform können die Registerdateien 2508, 2510 zwischen den Uop-Schedulern 2502, 2504, 2506 und den Ausführungseinheiten 2512, 2514, 2516, 2518, 2520, 2522 und 2524 angeordnet sein. In zumindest einer Ausführungsform führt das Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2508 Ganzzahl-Operationen aus. In zumindest einer Ausführungsform führt das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2510 Gleitkommaoperationen durch. In zumindest einer Ausführungsform kann jede der Registerdateien 2508, 2510, ohne darauf beschränkt zu sein, ein Umgehungs-Netzwerk beinhalten, das gerade abgeschlossene Ergebnisse, die noch nicht in die Registerdatei geschrieben wurden, umgehen oder an neue abhängige Uops weiterleiten kann. In zumindest einer Ausführungsform können die Registerdateien 2508, 2510 Daten miteinander kommunizieren. In zumindest einer Ausführungsform kann das Ganzzahl-Registerdatei/Umgehungs-Netzwerk 2508, ohne darauf beschränkt zu sein, zwei separate Registerdateien, eine Registerdatei für 32 Datenbits niedriger Ordnung und eine zweite Registerdatei für 32 Datenbits hoher Ordnung, beinhalten. In zumindest einer Ausführungsform kann das Gleitkomma-Registerdatei/Umgehungs-Netzwerk 2510, ohne darauf beschränkt zu sein, 128-Bit breite Einträge beinhalten, weil Gleitkommaanweisungen typischerweise Operanden von 64 bis 128 Bit Breite aufweisen.
  • In zumindest einer Ausführungsform können die Ausführungseinheiten 2512, 2514, 2516, 2518, 2520, 2522, 2524 Anweisungen ausführen. In zumindest einer Ausführungsform speichern die Registerdateien 2508, 2510 Ganzzahl- und Gleitkomma-Daten-Operandenwerte, die Mikroanweisungen ausführen müssen. In zumindest einer Ausführungsform kann der Prozessor 2500, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Kombination von Ausführungseinheiten 2512, 2514, 2516, 2518, 2520, 2522, 2524 beinhalten. In zumindest einer Ausführungsform können die Gleitkomma-ALU 2522 und die Gleitkomma-Bewegungseinheit 2524 Gleitkomma-, MMX-, SIMD-, AVX- und SSE-Operationen oder andere Operationen ausführen, einschließlich spezieller Anweisungen für maschinelles Lernen. In zumindest einer Ausführungsform kann die Gleitkomma ALU 2522, ohne darauf beschränkt zu sein, einen 64-Bit durch 64-Bit-Gleitkommateiler beinhalten, um Divisions-, Quadratwurzel- und Rest-Mikrooperationen auszuführen. In zumindest einer Ausführungsform können Anweisungen, die einen Gleitkommawert beinhalten, von Gleitkomma-Hardware gehandhabt werden. In zumindest einer Ausführungsform können ALU-Operationen an schnelle ALUs 2516, 2518 übergeben werden. In zumindest einer Ausführungsform können schnelle ALUS 2516, 2518 schnelle Operationen mit einer effektiven Latenz von einem halben Taktzyklus ausführen. In zumindest einer Ausführungsform gehen die komplexesten Ganzzahl-Operationen auf die langsame ALU 2520 über, da die langsame ALU 2520, ohne darauf beschränkt zu sein, eine Ganzzahl-Ausführungshardware für Operationen mit langer Latenz beinhalten kann, wie beispielsweise ein Multiplikator, ein Schieber, Flag- bzw Kennzeichenbit-Logik und Zweigverarbeitung. In zumindest einer Ausführungsform können Speicher-Lade-/Speicher-Operationen von AGUS 2512, 2514 ausgeführt werden. In zumindest einer Ausführungsform können die schnelle ALU 2516, die schnelle ALU 2518 und die langsame ALU 2520 Ganzzahl-Operationen an 64-Bit-Datenoperanden durchführen. In zumindest einer Ausführungsform können die schnelle ALU 2516, die schnelle ALU 2518 und die langsame ALU 2520 dazu implementiert sein, eine Vielzahl von Datenbitgrößen einschließlich sechzehn, zweiunddreißig, 128, 256 usw. zu unterstützen. In zumindest einer Ausführungsform können die Gleitkomma-ALU 2522 und die Gleitkomma-Bewegungseinheit 2524 dazu implementiert sein, eine Reihe von Operanden mit Bits unterschiedlicher Breite zu unterstützen. In zumindest einer Ausführungsform können die Gleitkomma-ALU 2522 und die Gleitkomma-Bewegungseinheit 2524 auf 128 Bit breiten gepackten Datenoperanden in Verbindung mit SIMD- und Multimedia-Anweisungen arbeiten.
  • In zumindest einer Ausführungsform versenden die Uop-Scheduler 2502, 2504, 2506 abhängige Operationen, bevor die Ausführung einer Elternlast beendet ist. In zumindest einer Ausführungsform kann, da Uops spekulativ geplant und in dem Prozessor 2500 ausgeführt werden können, der Prozessor 2500 auch eine Logik zur Handhabung von Speicherfehlzugriffen beinhalten. In zumindest einer Ausführungsform kann es dann, wenn eine Datenlast in dem Datencache fehlt, abhängige Operationen im Lauf der Pipeline geben, die den Scheduler mit temporär falschen Daten zurückgelassen haben. In zumindest einer Ausführungsform verfolgt ein Wiedergabemechanismus Anweisungen, die falsche Daten verwenden, nach und führt sie erneut aus. In zumindest einer Ausführungsform müssen möglicherweise abhängige Operationen wiedergegeben werden, und können unabhängige Operationen abgeschlossen werden. In zumindest einer Ausführungsform können die Scheduler und der Wiedergabemechanismus zumindest einer Ausführungsform eines Prozessors auch dazu ausgelegt sein, Befehlssequenzen für Textzeichenkettenvergleiche abzufangen.
  • In zumindest einer Ausführungsform kann sich der Begriff „Register“ auf On-Board-Prozessorspeicherplätze beziehen, die als Teil von Anweisungen zum Identifizieren von Operanden verwendet werden können. In zumindest einer Ausführungsform können Register diejenigen sein, die (aus der Sicht eines Programmierers) von außerhalb des Prozessors verwendbar sind. In zumindest einer Ausführungsform sind Register möglicherweise nicht auf einen bestimmten Schaltungstyp beschränkt. Vielmehr kann in zumindest einer Ausführungsform ein Register Daten speichern, Daten bereitstellen und die hierin beschriebenen Funktionen ausführen. In zumindest einer Ausführungsform können hierin beschriebene Register durch Schaltkreise innerhalb eines Prozessors unter Verwendung einer beliebigen Anzahl verschiedener Techniken implementiert sein, wie beispielsweise dedizierte physikalische Register, dynamisch allokierte physikalische Register, die Registerumbenennung verwenden, Kombinationen von dedizierten und dynamisch zugeordneten physikalischen Registern, usw. In zumindest einer Ausführungsform speichern Ganzzahlregister 32-Bit-Ganzzahldaten. Eine Registerdatei zumindest einer Ausführungsform enthält darüber hinaus acht Multimedia-SIMD-Register für gepackte Daten.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitbestellt. In zumindest einer Ausführungsform können Abschnitte der oder kann die gesamte Inferenzierungs- und/oder Trainingslogik 915 in einen EXE-Block 2511 und andere Speicher oder Register integriert sein, die gezeigt oder nicht gezeigt sind. Beispielsweise können in zumindest einer Ausführungsformen hierin beschriebene Trainings- und/oder Inferenzierungstechniken eine oder mehrere der in dem EXE Block 2511 dargestellten ALUs verwenden. Außerdem können Gewichtsparameter in On-Chip- oder Off-Chip-Speicher und/oder in Registern (gezeigt oder nicht gezeigt) gespeichert sein, die ALUs des EXE-Blocks 2511 dazu konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die Trainingstechniken, die hierin beschrieben sind, auszuführen.
  • 26 veranschaulicht einen tief lernenden bzw. Deep Learning-Anwendungsprozessor 2600 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform verwendet der Deep Learning-Anwendungsprozessor 2600 Anweisungen, die dann, wenn sie durch den Deep Learning-Anwendungsprozessor 2600 ausgeführt werden, bewirken, dass der Deep Learning-Anwendungsprozessor 2600 einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken ausführt. In zumindest einer Ausführungsform ist der Deep Learning-Anwendungsprozessor 2600 eine anwendungsspezifische integrierte Schaltung (ASIC). In zumindest einer Ausführungsform führt der Anwendungsprozessor 2600 Matrix-Multiplikationsoperationen entweder „fest verdrahtet“ in Hardware oder als ein Ergebnis der Durchführung einer oder mehrerer Anweisungen oder beides aus. In zumindest einer Ausführungsform beinhaltet der Deep Learning-Anwendungsprozessor 2600, ohne darauf beschränkt zu sein, Verarbeitungscluster 2610(1)-2610(12), Inter-Chip-Verbindungen („ICLs“) 2620(1)-2620(12), Inter-Chip-Steuereinrichtungen („ICCs“) 2630(1)-2630(2), Speicher mit hoher Bandbreite einer zweiten Generation („HBM2“) 2640(1)-2640(4), Speichersteuereinrichtungen („Mem Ctrlrs“) 2642(1)-2642(4), eine physikalische Schicht von Speicher mit hoher Bandbreite („HBM PHY“) 2644(1)-2644(4), eine Verwaltungs-Steuereinrichtungs-Zentralverarbeitungseinheit („Verwaltungs-Steuereinrichtungs-CPU“) 2650, eine serielle Peripheriegeräte-Schnittstelle, eine integrierte Inter-Schaltung und einen universellen Eingabe-/Ausgabeblock („SPI, I2C, GPIO“) 2660, eine Peripheriekomponenten-Zwischenverbindungs-Express-Steuereinrichtung und einen Direktspeicherzugriffsblock („PCle Controller und DMA“) 2670, sowie einen sechzehnkanaligen Peripheriekomponenten-Zwischenverbindungs-Express-Port („PCI Express × 16“) 2680.
  • In zumindest einer Ausführungsform können die Verarbeitungscluster 2610 Deep Learning-Operationen durchführen, einschließlich von Inferenz- oder Vorhersage-Operationen basierend auf Gewichtsparametern, die mit einer oder mehreren Trainingstechniken berechnet wurden, einschließlich der hierin beschriebenen. In zumindest einer Ausführungsform kann jeder Verarbeitungscluster 2610, ohne darauf beschränkt zu sein, eine beliebige Anzahl und Art von Prozessoren beinhalten. In zumindest einer Ausführungsform kann der Deep Learning-Anwendungsprozessor 2600 eine beliebige Anzahl und Art von Verarbeitungsclustern 2600 beinhalten. In zumindest einer Ausführungsform sind Inter-Chip-Verbindungen 2620 bidirektional. In zumindest einer Ausführungsform ermöglichen Inter-Chip-Verbindungen 2620 und Inter-Chip-Steuereinrichtungen 2630 es mehreren Deep-Learning-Anwendungs-prozessoren 2600, Informationen auszutauschen, einschließlich von Aktivierungsinformationen, die aus der Ausführung eines oder mehrerer Algorithmen maschinellen Lernens resultieren, die in einem oder mehreren neuronalen Netzwerken verkörpert sind. In zumindest einer Ausführungsform kann der Deep Learning-Anwendungsprozessor 2600 eine beliebige Anzahl (einschließlich Null) und Art von ICLs 2620 und ICCs 2630 beinhalten.
  • In zumindest einer Ausführungsform stellen die HBM2s 2640 insgesamt 32 Gigabyte (GB) Speicher zur Verfügung. Der HBM2 2640(i) ist sowohl der Speichersteuerung 2642(i) als auch der HBM PHY 2644(i) zugeordnet. In zumindest einer Ausführungsform kann eine beliebige Anzahl von HBM2s 2640 eine beliebige Art und Gesamtmenge an Speicher mit hoher Bandbreite bereitstellen und kann einer beliebigen Anzahl (einschließlich Null) und Art von Speichersteuereinrichtungen 2642 und HBM PHYs 2644 zugeordnet sein. In zumindest einer Ausführungsform können SPI, I2C, GPIO 2660, PCle-Steuereinrichtung und DMA 2670 und/oder PCle 2680 durch eine beliebige Anzahl und Art von Blöcken ersetzt sein, die eine beliebige Anzahl und Art von Kommunikationsstandards in beliebiger technisch machbaren Weise ermöglichen.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform wird der Deep Learning-Anwendungsprozessor dazu verwendet, ein Modell maschinellen Lernens, wie beispielsweise ein neuronales Netzwerk, dazu zu trainieren, Informationen vorherzusagen oder zu inferenzieren, die dem Deep Learning-Anwendungsprozessor 2600 bereitgestellt werden. In zumindest einer Ausführungsform wird der Deep Learning-Anwendungsprozessor 2600 dazu verwendet, Informationen basierend auf einem trainierten Modell maschinellen Lernens (z.B. ein neuronales Netzwerk), das von einem anderen Prozessor oder System oder von dem Deep Learning-Anwendungsprozessor 2600 trainiert wurde, abzuleiten oder vorherzusagen. In zumindest einer Ausführungsform kann der Prozessor 2600 dazu verwendet werden, einen oder mehrere der hierin beschriebenen Anwendungsfälle neuronaler Netzwerke durchzuführen.
  • 27 ist ein Blockdiagramm eines neuromorphen Prozessors 2700 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann der neuromorphe Prozessor 2700 ein oder mehrere Inputs von zu dem neuromorphen Prozessor 2700 externen Quellen empfangen. In zumindest einer Ausführungsform können diese Inputs an ein oder mehrere Neuronen 2702 innerhalb des neuromorphen Prozessors 2700 übertragen werden. In zumindest einer Ausführungsform können die Neuronen 2702 und ihre Komponenten unter Verwendung von Schaltkreisen oder Logik, einschließlich einer oder mehrerer Arithmetik-Logikeinheiten (ALUs), implementiert sein. In zumindest einer Ausführungsform kann der neuromorphe Prozessor 2700, ohne darauf beschränkt zu sein, Tausende oder Millionen von Instanzen von Neuronen 2702 beinhalten, es kann jedoch eine beliebige Anzahl von Neuronen 2702 verwendet werden. In zumindest einer Ausführungsform kann jede Neuron 2702-Instanz 2702 einen Neuroneneingang 2704 und einen Neuronenausgang 2706 beinhalten. In zumindest einer Ausführungsform können Neuronen 2702 Ausgaben erzeugen, die Eingänge anderer Instanzen der Neuronen 2702 übertragen werden können. Beispielsweise können in zumindest einer Ausführungsform die Neuronen-Eingänge 2704 und die Neuronen-Ausgänge 2706 über Synapsen 2708 miteinander verbunden sein.
  • In zumindest einer Ausführungsform können die Neuronen 2702 und die Synapsen 2708 derart miteinander verbunden sein, dass der neuromorphe Prozessor 2700 zum Verarbeiten oder Analysieren von von dem neuromorphen Prozessor 2700 empfangenen Informationen eingesetzt wird. In zumindest einer Ausführungsform können die Neuronen 2702 einen Ausgangsimpuls (oder „Feuern“ oder „Spike“) senden, wenn über den Neuroneneingang 2704 empfangenen Inputs einen Schwellenwert überschreiten. In zumindest einer Ausführungsform können die Neuronen 2702 Signale, die an den Neuroneneingängen 2704 empfangen wurden, summieren oder integrieren. Beispielsweise können in zumindest einer Ausführungsform Neuronen 2702 als lecke Integrations- und Feuerneuronen implementiert sein, wobei dann, wenn eine Summe (als ein „Membranpotential“ bezeichnet) einen Schwellenwert überschreitet, ein Neuron 2702 unter Verwendung einer Übertragungsfunktion, wie beispielsweise einer Sigmoid- oder Schwellenwertfunktion, eine Ausgabe (oder ein „Feuern“) erzeugen kann. In zumindest einer Ausführungsform kann ein leckes Integrations- und Feuerneuron Signale, die an den Neuroneneingängen 2704 empfangen wurden, zu einem Membranpotential summieren und kann darüber hinaus einen Zerfallsfaktor (oder ein Leck) anwenden, um ein Membranpotential zu reduzieren. In zumindest einer Ausführungsform kann ein leckes Integrations- und Feuerneuron feuern, falls mehrere Eingangssignale an den Neuroneneingängen 2704 schnell genug empfangen werden, um einen Schwellenwert zu überschreiten (d.h. bevor ein Membranpotential zu niedrig zum Feuern wird). In zumindest einer Ausführungsform können Neuronen 2702 unter Verwendung von Schaltungen oder Logik implementiert sein, die Inputs empfangen, Inputs zu einem Membranpotential integrieren und ein Membranpotential abbauen. In zumindest einer Ausführungsform können Inputs gemittelt werden, oder kann eine beliebige andere geeignete Übertragungsfunktion verwendet werden. Ferner können in zumindest einer Ausführungsform, ohne darauf beschränkt zu sein, die Neuronen 2702 Komparatorschaltungen oder Logik beinhalten, die einen Ausgangsspike an dem Neuronenausgang 2706 erzeugen, wenn ein Ergebnis der Anwendung einer Übertragungsfunktion auf den Neuroneneingang 2704 einen Schwellenwert überschreitet. In zumindest einer Ausführungsform kann, nachdem das Neuron 2702 feuert, es zuvor empfangene Eingangsinformationen ignorieren, indem es beispielsweise ein Membranpotenzial auf 0 oder einen anderen geeigneten Standardwert zurücksetzt. In zumindest einer Ausführungsform kann, nachdem das Membranpotential auf 0 zurückgesetzt ist, das Neuron 2702 nach einer geeigneten Zeitspanne (oder Refraktärperiode) den Normalbetrieb wieder aufnehmen.
  • In zumindest einer Ausführungsform können die Neuronen 2702 durch Synapsen 2708 miteinander verbunden sein. In zumindest einer Ausführungsform können die Synapsen 2708 dazu betrieben werden, Signale von einem Ausgang eines ersten Neurons 2702 zu einem Eingang eines zweiten Neurons 2702 zu übertragen. In zumindest einer Ausführungsform können Neuronen 2702 Informationen über mehr als eine Instanz der Synapse 2708 übertragen. In zumindest einer Ausführungsform können ein oder mehrere Instanzen des Neuronenausgangs 2706 über eine Instanz der Synapse 2708 mit einer Instanz des Neuroneneingangs 2704 im gleichen Neuron 2702 verbunden sein. In zumindest einer Ausführungsform kann eine Instanz des Neurons 2702, die eine Ausgabe erzeugt, die über eine Instanz der Synapse 2708 übertragen werden soll, als „präsynaptisches Neuron“ in Bezug auf diese Instanz der Synapse 2708 bezeichnet sein. In zumindest einer Ausführungsform kann eine Instanz des Neurons 2702, die eine über eine Instanz der Synapse 2708 übertragene Eingabe empfängt, in Bezug auf diese Instanz der Synapse 2708 als „postsynaptisches Neuron“ bezeichnet sein. Weil eine Instanz des Neurons 2702 Eingaben von einer oder mehreren Instanzen der Synapse 2708 empfangen kann, und auch Ausgaben über einen oder mehrere Instanzen der Synapse 2708 übertragen kann, kann eine einzelne Instanz des Neurons 2702 daher sowohl ein „präsynaptisches Neuron“ als auch ein „postsynaptisches Neuron“ in Bezug auf verschiedene Instanzen von Synapsen 2708 in zumindest einer Ausführungsform sein.
  • In zumindest einer Ausführungsform können die Neuronen 2702 in einer oder mehreren Schichten organisiert sein. Jede Instanz des Neurons 2702 kann einen Neuronenausgang 2706 aufweisen, der sich durch eine oder mehrere Synapsen 2708 zu einem oder mehreren Neuroneneingängen 2704 ausbreiten kann. In zumindest einer Ausführungsform können Neuronenausgänge 2706 von Neuronen 2702 in einer ersten Schicht 2710 mit Neuroneneingängen 2704 von Neuronen 2702 in einer zweiten Schicht 2712 verbunden sein. In zumindest einer Ausführungsform kann die Schicht 2710 als eine „Feed-Forward-Schicht“ bezeichnet sein. In zumindest einer Ausführungsform kann sich jede Instanz des Neurons 2702 in einer Instanz der ersten Schicht 2710 zu jeder Instanz des Neurons 2702 in der zweiten Schicht 2712 ausbreiten. In zumindest einer Ausführungsform kann die erste Schicht 2710 als „vollständig verbundene Feed-Forward-Schicht“ bezeichnet sein. In zumindest einer Ausführungsform kann sich jede Instanz des Neurons 2702 in einer Instanz der zweiten Schicht 2712 auf weniger als alle Instanzen des Neurons 2702 in einer dritten Schicht 2714 verteilen. In zumindest einer Ausführungsform kann die zweite Schicht 2712 als „spärlich verbundene Feed-Forward-Schicht“ bezeichnet sein. In zumindest einer Ausführungsform können sich Neuronen 2702 in der zweiten Schicht 2712 zu Neuronen 2702 in mehreren anderen Schichten ausbreiten, einschließlich zu Neuronen 2702 in der (gleichen) zweiten Schicht 2712. In zumindest einer Ausführungsform kann die zweite Schicht 2712 als „rekurrente Schicht“ bezeichnet sein. Der neuromorphe Prozessor 2700 kann, ohne darauf beschränkt zu sein, jede geeignete Kombination von rekurrenten Schichten und Feed-Forward-Schichten beinhalten, einschließlich, ohne darauf beschränkt zu sein, sowohl spärlich verbundene Feed-Forward-Schichten als auch vollständig verbundene Feed-Forward-Schichten.
  • In zumindest einer Ausführungsform kann der neuromorphe Prozessor 2700, ohne darauf beschränkt zu sein, eine rekonfigurierbare Zwiischenverbindungsarchitektur oder dedizierte fest verdrahtete Zwischenverbindungen beinhalten, um die Synapse 2708 mit den Neuronen 2702 zu verbinden. In zumindest einer Ausführungsform kann der neuromorphe Prozessor 2700, ohne darauf beschränkt zu sein, eine Schaltung oder Logik beinhalten, die es ermöglicht, Synapsen bei Bedarf verschiedenen Neuronen 2702 zuzuordnen, basierend auf neuronaler Netzwerktopologie und Neuronen-Fan-In/Out. Beispielsweise können in zumindest einer Ausführungsform Synapsen 2708 mit Neuronen 2702 unter Verwendung einer Zwischenverbindungsstruktur, wie beispielsweise einem Netzwerk auf dem Chip, oder mit speziellen Verbindungen verbunden sein. In zumindest einer Ausführungsform können Synapsen-Zwischenverbindungen und Komponenten derselben unter Verwendung von Schaltkreisen oder Logik implementiert sein.
  • 28 ist ein Blockdiagramm eines Verarbeitungssystems gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform beinhaltet das System 2800 einen oder mehrere Prozessoren 2802 und einen oder mehrere Grafikprozessoren 2808 und kann ein Desktop-System mit einem einzelnen Prozessor, ein Multiprozessor-Workstation-System oder ein Serversystem mit einer großen Anzahl von Prozessoren 2802 oder Prozessorkernen 2807 sein. In zumindest einer Ausführungsform ist das System 2800 eine Verarbeitungsplattform, die in eine System-on-a-Chip (SoC)-integrierte Schaltung zur Verwendung in mobilen, tragbaren oder eingebetteten Geräten integriert ist.
  • In zumindest einer Ausführungsform kann das System 2800 eine Spielkonsole, einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine tragbare Spielkonsole oder eine Online-Spielkonsole beinhalten oder in diese innerhalb einer serverbasierten Spieleplattform integriert sein. In zumindest einer Ausführungsform ist das System 2800 ein Mobiltelefon, ein Smartphone, ein Tablet-Computergerät oder ein mobiles Internetgerät. In zumindest einer Ausführungsform kann das Verarbeitungssystem 2800 auch ein tragbares Gerät, wie beispielsweise ein tragbares Smart Watch-Gerät, ein intelligentes Brillengerät, ein Gerät für erweiterte Realität oder ein Gerät für virtuelle Realität beinhalten, mit ihm koppeln oder in dieses integriert sein. In zumindest einer Ausführungsform ist das Verarbeitungssystem 2800 ein Fernseh- oder Set-Top-Box-Gerät mit einem oder mehreren Prozessoren 2802 und einer von einem oder mehreren Grafikprozessoren 2808 erzeugten Grafikschnittstelle.
  • In zumindest einer Ausführungsform beinhalten ein oder mehrere Prozessoren 2802 jeweils einen oder mehrere Prozessorkerne 2807 zum Verarbeiten von Anweisungen, die dann, wenn sie ausgeführt werden, Operationen für ein System- und Benutzersoftware ausführen. In zumindest einer Ausführungsform ist jeder eines oder mehrerer Prozessorkerne 2807 dazu konfiguriert, einen bestimmten Befehlssatz 2809 zu verarbeiten. In zumindest einer Ausführungsform kann der Befehlssatz 2809 das Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder das Rechnen über ein Very Long Instruction Word (VLIW) erleichtern. In zumindest einer Ausführungsform können die Prozessorkerne 2807 jeweils einen anderen Befehlssatz 2809 verarbeiten, der Anweisungen zum Erleichtern der Emulation anderer Befehlssätze beinhalten kann. In zumindest einer Ausführungsform kann der Prozessorkern 2807 auch andere Verarbeitungsvorrichtungen, wie beispielsweise einen digitalen Signalprozessor (DSP), beinhalten.
  • In zumindest einer Ausführungsform beinhaltet der Prozessor 2802 den Cache-Speicher 2804. In zumindest einer Ausführungsform kann der Prozessor 2802 einen einzelnen internen Cache oder mehrere Ebenen internen Caches aufweisen. In zumindest einer Ausführungsform wird Cache-Speicher von verschiedenen Komponenten des Prozessors 2802 gemeinsam genutzt. In zumindest einer Ausführungsform verwendet der Prozessor 2802 auch einen externen Cache (z.B. einen Level 3 (L3)- Cache oder einen Last Level Cache (LLC)). (nicht gezeigt), welcher unter Verwendung bekannter Cache-Kohärenztechniken von den Prozessorkernen 2807 gemeinsam genutzt werden kann. In zumindest einer Ausführungsform ist die Registerdatei 2806 zusätzlich in dem Prozessor 2802 enthalten, welcher verschiedene Registertypen zum Speichern verschiedener Datentypen beinhalten kann (z.B. ein Ganzzahlregister, ein Gleitkommaregister, ein Zustandsregister und ein Befehlszeigerregister). In zumindest einer Ausführungsform kann die Registerdatei 2806 Universalregister oder andere Register beinhalten.
  • In zumindest einer Ausführungsform sind ein oder mehrere Prozessor(en) 2802 mit einem oder mehreren Schnittstellenbus(en) 2810 gekoppelt, um Kommunikationssignale wie Adressen, Daten oder Steuersignale zwischen dem Prozessor 2802 und anderen Komponenten in dem System 2800 zu übertragen. In zumindest einer Ausführungsform kann, in einer Ausführungsform, ein Schnittstellenbus 2810 ein Prozessorbus sein, wie beispielsweise eine Version eines Direct Media Interface (DMI)-Busses. In zumindest einer Ausführungsform ist die Schnittstelle 2810 nicht auf einen DMI-Bus beschränkt und kann einen oder mehrere Peripheral Connect Interconnect-Busse (z.B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen beinhalten. In zumindest einer Ausführungsform beinhalten der/die Prozessor(en) 2802 eine integrierte Speichersteuereinrichtung 2816 und einen Plattform-Steuereinrichtungs-Hub 2830. In zumindest einer Ausführungsform erleichtert die Speichersteuereinrichtung 2816 die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 2800, während der Plattform-Steuereinrichtungs-Hub (PCH) 2830 Verbindungen zu I/O-Vorrichtungen über einen lokalen I/O-Bus bereitstellt.
  • In zumindest einer Ausführungsform kann die Speichervorrichtung 2820 eine dynamische Direktzugriffspeicher (DRAM)-Vorrichtung, eine statische Direktzugriffspeicher (SRAM)-Vorrichtung, eine Flash-Speicher-Vorrichtung, eine Phasenänderungs-Speichervorrichtung oder irgendeine andere Speichervorrichtung mit geeigneter Leistung sein, um als Prozessspeicher zu dienen. In zumindest einer Ausführungsform kann die Speichervorrichtung 2820 als Systemspeicher für das System 2800 arbeiten, um Daten 2822 und Anweisungen 2821 zu speichern, die verwendet werden, wenn ein oder mehrere Prozessoren 2802 eine Anwendung oder einen Prozess ausführen. In zumindest einer Ausführungsform koppelt die Speichersteuerung 2816 darüber hinaus mit einem optionalen externen Grafikprozessor 2812, welcher mit einem oder mehreren Grafikprozessoren 2808 in den Prozessoren 2802 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In zumindest einer Ausführungsform kann eine Anzeigevorrichtung 2811 mit dem/den Prozessor(en) 2802 verbinden. In zumindest einer Ausführungsform kann die Anzeigevorrichtung 2811 eine oder mehrere einer internen Anzeigevorrichtung beinhalten, wie in einer mobilen elektronischen Vorrichtung oder einer Laptopvorrichtung oder einer externen Anzeigevorrichtung, die über eine Anzeigeschnittstelle (z.B. DisplayPort, usw.) angeschlossen ist. In zumindest einer Ausführungsform kann die Anzeigevorrichtung 2811 eine kopfmontierte Anzeige (HMD) beinhalten, wie beispielsweise eine stereoskopische Anzeigevorrichtung zur Verwendung in Virtual-Reality-Anwendungen (VR) oderAugmented-Reality-Anwendungen (AR).
  • In zumindest einer Ausführungsform ermöglicht es der Plattform-Steuereinrichtungs-Hub 2830 Peripheriegeräten, mit der Speichervorrichtung 2820 und dem Prozessor 2802 über einen Hochgeschwindigkeits-I/O-Bus zu verbinden. In zumindest einer Ausführungsform beinhalten I/O-Peripheriegeräte unter anderem, sind aber nicht beschränkt auf, eine Audiosteuereinrichtung 2846, eine Netzwerksteuereinrichtung 2834, eine Firmware-Schnittstelle 2828, einen drahtlosen Sender-Empfänger 2826, Berührungssensoren 2825, eine Datenspeichervorrichtung 2824 (z.B. eine Festplatte, einen Flash-Speicher, usw.). In zumindest einer Ausführungsform kann die Datenspeichervorrichtung 2824 über eine Speicherschnittstelle (z.B. SATA) oder über einen Peripheriebus, wie beispielsweise einen Peripheral Component Interconnect Bus (z.B. PCI, PCI Express) verbinden. In zumindest einer Ausführungsform können die Berührungssensoren 2825 Sensoren eines berührungsempfindlichen Bildschirms, Drucksensoren oder Fingerabdrucksensoren beinhalten. In zumindest einer Ausführungsform kann der drahtlose Sender-Empfänger 2826 ein Wi-Fi-Sender-Empfänger, ein Bluetooth-Sender-Empfänger oder ein Mobilfunk-Sender-Empfänger wie beispielsweise ein 3G-, 4G- oder Long Term Evolution (LTE)-Transceiver sein. In zumindest einer Ausführungsform ermöglicht die Firmware-Schnittstelle 2828 die Kommunikation mit der System-Firmware und kann beispielsweise eine vereinheitlichte erweiterbare Firmware-Schnittstelle (UEFI) sein. In zumindest einer Ausführungsform kann die Netzwerksteuereinrichtung 2834 eine Netzwerkverbindung zu einem verdrahteten Netzwerk aktivieren. In zumindest einer Ausführungsform koppelt eine Hochleistungs-Netzwerksteuereinrichtung (nicht gezeigt) mit dem Schnittstellenbus 2810. In zumindest einer Ausführungsform ist die Audiosteuereinrichtung 2846 eine mehrkanalige hochauflösende Audiosteuereinrichtung. In zumindest einer Ausführungsform beinhaltet das System 2800 eine optionale Legacy-I/O-Steuereinrichtung 2840 zum Koppeln von Legacy-Geräten (z.B. Personal System 2 (PS/2)) mit dem System. In zumindest einer Ausführungsform kann der Plattform-Steuereinrichtungs-Hub 2830 auch mit einer oder mehreren Universal Serial Bus (USB)-Steuereinrichtungen 2842 verbinden, um Eingabegeräte wie beispielsweise Tastatur- und Maus 2843-Kombinationen, eine Kamera 2844 oder andere USB-Eingabegeräte zu verbinden.
  • In zumindest einer Ausführungsform kann eine Instanz der Speichersteuerung 2816 und des Plattform-Steuereinrichtungs-Hub 2830 in einen diskreten externen Grafikprozessor, wie beispielsweise den externen Grafikprozessor 2812, integriert sein. In zumindest einer Ausführungsform können der Plattform-Steuereinrichtungs-Hub 2830 und/oder die Speichersteuereinrichtung 2816 extern zu einem oder mehreren Prozessoren 2802 sein. Beispielsweise kann das System 2800 in zumindest einer Ausführungsform eine externe Speichersteuereinrichtung 2816 und einen Plattform-Steuereinrichtungs-Hub 2830 beinhalten, die als ein Speichersteuereinrichtungs-Hub und ein peripherer Steuereinrichtungs-Hub innerhalb eines System-Chipsatzes, der mit dem bzw. den Prozessor(en) 2802 in Verbindung steht, konfiguriert sein können.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann ein Abschnitt der oder die gesamte Inferenzierungs- und/oder Trainingslogik 915 in den Grafikprozessor 2800 integriert sein. Beispielsweise können in zumindest einer Ausführungsform hierin beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere der in der 3D-Pipeline 2812 verkörperten ALUs verwenden. Außerdem können in zumindest einer Ausführungsform hierin beschriebene Inferenzierungs- und/oder Trainingsoperationen unter Verwendung einer anderen Logik als der in 9A oder 9B dargestellten Logik durchgeführt werden. In zumindest einer Ausführungsform können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2800 dazu konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hierin beschriebenen Trainingstechniken auszuführen.
  • 29 ist ein Blockdiagramm eines Prozessors 2900 c 2902A-2902N, einer integrierten Speichersteuereinrichtung 2914 und eines integrierten Grafikprozessors 2908, gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann der Prozessor 2900 zusätzliche Kerne bis hin zu dem und einschließlich des zusätzlichen Kern(s) 2902N beinhalten, die durch gestrichelte, linierte Kästen dargestellt sind. In zumindest einer Ausführungsform beinhaltet jeder der Prozessorkerne 2902A-2902N eine oder mehrere interne Cache-Einheiten 2904A-2904N. In zumindest einer Ausführungsform hat jeder Prozessorkern auch Zugriff auf eine oder mehrere gemeinsam genutzte gecachete bzw. Cache-Einheiten 2906.
  • In zumindest einer Ausführungsform stellen die internen Cache-Einheiten 2904A-2904N und die gemeinsam genutzten Cache-Einheiten 2906 eine Cache-Speicherhierarchie innerhalb des Prozessors 2900 dar. In zumindest einer Ausführungsform können die Cache-Speichereinheiten 2904A-2904N zumindest eine Befehls- und Daten-Cache-Ebene innerhalb jedes Prozessorkerns und eine oder mehrere Ebenen gemeinsam genutzten Mid-Level-Caches, wie beispielsweise ein Level 2 (L2), ein Level 3 (L3), ein Level 4 (L4) oder andere Cache-Ebenen, beinhalten, wobei eine höchste Cache-Ebene vor externem Speicher als eine LLC klassifiziert ist. In zumindest einer Ausführungsform behält die Cache-Kohärenzlogik Kohärenz zwischen den verschiedenen Cache-Einheiten 2906 und 2904A-2904N bei.
  • In zumindest einer Ausführungsform kann der Prozessor 2900 auch einen Satz einer oder mehrerer Bussteuereinheiten 2916 und einen System-Agent-Kern 2910 beinhalten. In zumindest einer Ausführungsform verwalten eine oder mehrere Bussteuereinheiten 2916 einen Satz von Peripheriebussen, wie beispielsweise einen oder mehrere PCI- oder PCI-Express-Busse. In zumindest einer Ausführungsform stellt der System-Agent-Kern 2910 Verwaltungsfunktionen für verschiedene Prozessorkomponenten zur Verfügung. In zumindest einer Ausführungsform beinhaltet der System-Agent-Kern 2910 eine oder mehrere integrierte Speichersteuerungen 2914, um den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) zu verwalten.
  • In zumindest einer Ausführungsform beinhalten einer oder mehrere der Prozessorkerne 2902A-2902N Unterstützung für gleichzeitiges Multithreading. In zumindest einer Ausführungsform beinhaltet der System-Agent-Kern 2910 Komponenten zum Koordinieren und Betreiben der Kerne 2902A-2902N während der Multithreading-Verarbeitung. In zumindest einer Ausführungsform kann der System-Agent-Kern 2910 zusätzlich eine Leistungssteuereinheit (PCU) beinhalten, die Logik und Komponenten zum Regeln eines oder mehrerer Leistungszustände der Prozessorkerne 2902A-2902N und des Grafikprozessors 2908 beinhaltet.
  • In zumindest einer Ausführungsform beinhaltet der Prozessor 2900 zusätzlich den Grafikprozessor 2908, um Grafikverarbeitungsoperationen auszuführen. In zumindest einer Ausführungsform koppelt der Grafikprozessor 2908 mit den gemeinsam genutzten Cache-Einheiten 2906 und dem System-Agent-Kern 2910, einschließlich einer oder mehrerer integrierter Speichersteuerungen 2914. In zumindest einer Ausführungsform beinhaltet der System-Agent-Kern 2910 auch eine Anzeigesteuereinrichtung 2911, um die Grafikprozessorausgabe auf ein oder mehrere gekoppelte Anzeigen zu treiben. In zumindest einer Ausführungsform kann die Anzeigesteuereinrichtung 2911 auch ein separates Modul sein, das über zumindest eine Zwischenverbindung mit dem Grafikprozessor 2908 gekoppelt ist, oder in den Grafikprozessor 2908 integriert sein kann.
  • In zumindest einer Ausführungsform wird eine ringbasierte Zwischenverbindungseinheit 2912 dazu verwendet, interne Komponenten des Prozessors 2900 zu koppeln. In zumindest einer Ausführungsform kann eine alternative Verbindungseinheit verwendet werden, wie beispielsweise eine Punktzu-Punkt-Zwischenverbindung, eine geschaltete Zwischenverbindung oder andere Techniken. In zumindest einer Ausführungsform koppelt der Grafikprozessor 2908 über eine I/O-Verbindung 2913 mit der Ring-Zwischenverbindung 2912.
  • In zumindest einer Ausführungsform repräsentiert die I/O-Verbindung 2913 zumindest eine von mehreren Varianten von I/O-Zwischenverbindungen, einschließlich einer I/O-Zwischenverbindung auf dem Gehäuse, welche die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 2918, wie beispielsweise einem eDRAM-Modul, erleichtert. In zumindest einer Ausführungsform verwenden jeder der Prozessorkerne 2902A-2902N und der Grafikprozessor 2908 eingebettete Speichermodule 2918 als einen gemeinsam genutzten Cache letzter Ebene bzw. Last Level Cache.
  • In zumindest einer Ausführungsform sind die Prozessorkerne 2902A-2902N homogene Kerne, die eine gemeinsame Befehlssatzarchitektur ausführen. In zumindest einer Ausführungsform sind die Prozessorkerne 2902A-2902N heterogen in Bezug auf die Befehlssatzarchitektur (ISA), wobei einer oder mehrere der Prozessorkerne 2902A-2902N einen gemeinsamen Befehlssatz ausführen, während ein oder mehrere andere Kerne der Prozessorkerne 2902A-29-02N eine Teilmenge eines gemeinsamen Befehlssatzes oder einen bzw. eines anderen Befehlssatzes ausführen. In zumindest einer Ausführungsform sind die Prozessorkerne 2902A-2902N in Bezug auf Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einem relativ höheren Stromverbrauch mit einem oder mehreren Leistungskernen mit einem niedrigeren Stromverbrauch koppeln. In zumindest einer Ausführungsform kann der Prozessor 2900 auf einem oder mehreren Chips oder als eine in einem SoC integrierte Schaltung implementiert sein.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform können Abschnitte der oder die gesamte(n) Inferenzierungs- und/oder Trainingslogik 915 in den Grafikprozessor 2910 integriert sein. Beispielsweise können in zumindest einer Ausführungsform hierin beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 2812, dem/den Grafikkern(en) 2915A, der gemeinsam genutzten Funktionslogik 2916, dem/den Grafikkern(en) 2915B, der gemeinsam genutzten Funktionslogik 2920 oder einer anderen Logik in 29 verkörpert sind. Darüber hinaus können in zumindest einer Ausführungsform hierin beschriebene Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in den 9A oder 9B dargestellten Logik durchgeführt werden. In zumindest einer Ausführungsform können Gewichtsparameter in einem On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 2910 dazu konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hierin beschriebenen Trainingstechniken auszuführen.
  • 30 ist ein Blockdiagramm eines Grafikprozessors 3000, welcher eine diskrete Grafikverarbeitungseinheit sein kann, oder ein mit einer Vielzahl von Verarbeitungskernen integrierter Grafikprozessor sein kann. In zumindest einer Ausführungsform kommuniziert der Grafikprozessor 3000 über eine speicherabgebildete I/O-Schnittstelle mit Registern auf dem Grafikprozessor 3000 und mit in dem Speicher abgelegten Befehlen. In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 3000 eine Speicherschnittstelle 3014 zum Zugriff auf Speicher. In zumindest einer Ausführungsform ist die Speicherschnittstelle 3014 eine Schnittstelle zu lokalem Speicher, zu einem oder mehreren internen Caches, zu einem oder mehreren gemeinsam genutzten externen Caches und/oder zu Systemspeicher.
  • In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 3000 darüber hinaus eine Anzeigesteuereinrichtung 3002, um Anzeigeausgabedaten zu einer Anzeigevorrichtung 3020 zu treiben. In zumindest einer Ausführungsform beinhaltet die Anzeigesteuereinrichtung 3002 Hardware für eine oder mehrere Überlagerungsebenen für die Anzeigevorrichtung 3020 und die Zusammensetzung mehrerer Schichten von Video- oder Benutzeroberflächenelementen. In zumindest einer Ausführungsform kann die Anzeigevorrichtung 3020 eine interne oder eine externe Anzeigevorrichtung sein. In zumindest einer Ausführungsform ist die Anzeigevorrichtung 3020 eine kopfmontierte Anzeigevorrichtung, wie beispielsweise eine Virtual Reality (VR)-Anzeigevorrichtung oder eine Augmented Reality (AR)-Anzeigevorrichtung. In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 3000 eine Videocodec-Engine 3006 zum Kodieren, Dekodieren oder Transkodieren von Medien in, von oder zwischen einem oder mehreren Medienkodierungsformaten, einschließlich, aber nicht beschränkt auf, MPEG (Moving Picture Experts Group)-Formate wie MPEG-2, Advanced Video Coding (AVC)-Formate wie H.264./MPEG-4 AVC, sowie Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 und Joint Photographic Experts Group (JPEG)-Formate wie JPEG und Motion JPEG (MJPEG).
  • In zumindest einer Ausführungsform beinhaltet der Grafikprozessor 3000 eine Blockbildübertragungs (Block Image Transfer, BLIT)-Engine 3004, um zweidimensionale (2D) Rasterisierungsoperationen durchzuführen, einschließlich beispielsweise bitgebundener Blockübertragungen. In zumindest einer Ausführungsform werden jedoch 2D-Grafikoperationen unter Verwendung einer oder mehreren Komponenten der Grafikverarbeitungs-Engine (GPE) 3010 durchgeführt. In zumindest einer Ausführungsform ist die GPE 3010 eine Rechenmaschine zum Durchführen von Grafikoperationen, einschließlich dreidimensionaler (3D) Grafikoperationen und Medienoperationen.
  • In zumindest einer Ausführungsform beinhaltet die GPE 3010 eine 3D-Pipeline 3012 zum Durchführen von 3D-Operationen, wie z.B. Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Bearbeitungsfunktionen, die auf 3D-Primitivformen (z.B. Rechteck, Dreieck, usw.) wirken. Die 3D-Pipeline 3012 beinhaltet programmierbare und Festfunktionselemente, die verschiedene Aufgaben durchführen und/oder Ausführungsabläufe an ein 3D/Media-Subsystem 3015 übergeben. Während die 3D-Pipeline 3012 dazu verwendet werden kann, Medienoperationen durchzuführen, beinhaltet in zumindest einer Ausführungsform die GPE 3010 auch eine Medien-Pipeline 3016, die dazu verwendet wird, Medienoperationen wie beispielsweise Videonachbearbeitung und Bildverbesserung durchzuführen.
  • In zumindest einer Ausführungsform beinhaltet die Medien-Pipeline 3016 Logikeinheiten mit fester Funktion oder programmierbare Logikeinheiten, um eine oder mehrere spezialisierte Medienoperationen durchzuführen, wie beispielsweise Videodekodierbeschleunigung, Video-De-Interlacing und Videokodierbeschleunigung anstelle oder im Namen der Videokodier-Engine 3006. In zumindest einer Ausführungsform beinhaltet die Medien-Pipeline 3016 zusätzlich eine Threadübergabeeinheit zum Übergeben von Threads zur Ausführung auf dem 3D/Medien-Subsystem 3015. In zumindest einer Ausführungsform führen übergebene Threads Berechnungen für Medienoperationen auf einer oder mehreren Grafikausführungseinheiten durch, die in dem 3D/Media-Subsystem 3015 enthalten sind.
  • In zumindest einer Ausführungsform beinhaltet das 3D/Media-Subsystem 3015 Logik zum Ausführen von Threads, die durch die 3D-Pipeline 3012 und die Medien-Pipeline 3016 erzeugt wurden. In zumindest einer Ausführungsform senden die 3D-Pipeline 3012 und die Medien-Pipeline 3016 Threadausführungsanforderungen an das 3D/Media-Subsystem 3015, welches eine Threadsendelogik zum Arbitrieren und Senden verschiedener Anforderungen an verfügbare Threadausführungsressourcen beinhaltet. In zumindest einer Ausführungsform beinhalten die Ausführungsressourcen eine Reihe von Grafikausführungseinheiten zum Verarbeiten von 3D- und Medien-Threads. In zumindest einer Ausführungsform beinhaltet das 3D/Media-Subsystem 3015 einen oder mehrere interne Caches für Thread-Anweisungen und Daten. In zumindest einer Ausführungsform beinhaltet das Subsystem 3015 darüber hinaus gemeinsam genutzten Speicher, einschließlich von Registern und adressierbarem Speicher, um Daten zwischen Threads auszutauschen und Ausgangsdaten zu speichern.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann ein Abschnitt oder die gesamte Inferenzierungs- und/oder Trainingslogik 915 in den Grafikprozessor 3000 integriert sein. Beispielsweise können in zumindest einer der hierin beschriebenen Ausführungsformen hierin beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere der in der 3D-Pipeline 3012 verkörperten ALUs verwendet werden. Außerdem können in zumindest einer Ausführungsform hierin beschriebene Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in den 9A oder 9B dargestellten Logik durchgeführt werden. In zumindest einer Ausführungsform können Gewichtsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3000 dazu konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hierin beschriebenen Trainingstechniken auszuführen.
  • 31 ist ein Blockdiagramm einer Grafikverarbeitungs-Engine 3110 eines Grafikprozessors gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist die Grafikverarbeitungs-Engine (GPE) 3110 eine Version der in 30 gezeigten GPE 3010. In zumindest einer Ausführungsform ist die Medien-Pipeline 3016 optional und braucht nicht explizit innerhalb der GPE 3110 enthalten zu sein. In zumindest einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor mit der GPE 3110 gekoppelt.
  • In zumindest einer Ausführungsform ist die GPE 3110 mit einem Befehlsstreamer 3103 gekoppelt oder beinhaltet einen solchen, welcher der 3D-Pipeline 3012 und/oder den Medien-Pipelines 3016 einen Befehlsstrom bereitstellt. In zumindest einer Ausführungsform ist der Befehlsstreamer 3103 mit einem Speicher gekoppelt, welcher Systemspeicher oder ein oder mehrere interne Cache-Speicher und gemeinsam genutzte Cache-Speicher sein kann. In zumindest einer Ausführungsform empfängt der Befehlsstreamer 3103 Befehle aus dem Speicher und sendet Befehle an die 3D-Pipeline 3012 und/oder die Medien-Pipeline 3016. In zumindest einer Ausführungsform sind Befehle Anweisungen, Primitive bzw. Stammfunktionen oder Mikrooperationen, die aus einem Ringpuffer abgerufen werden, welcher Befehle für die 3D-Pipeline 3012 und die Medien-Pipeline 3016 speichert. In zumindest einer Ausführungsform kann ein Ringpuffer zusätzlich Stapelbefehlspuffer beinhalten, die Stapel mehrerer Befehle speichern. In zumindest einer Ausführungsform können Befehle für die 3D-Pipeline 3012 auch Verweise auf im Speicher gespeicherte Daten beinhalten, wie z. B., aber nicht beschränkt auf, Vertex- und Geometriedaten für die 3D-Pipeline 3012 und/oder Bilddaten und Speicherobjekte für die Medien-Pipeline 3016. In zumindest einer Ausführungsform verarbeiten die 3D-Pipeline 3012 und die Medien-Pipeline 3016 Befehle und Daten, indem sie Operationen ausführen oder einen oder mehrere Ausführungsthreads an eine Grafikkernanordnung 3114 senden. In zumindest einer Ausführungsform beinhaltet die Grafikkernanordnung 3114 einen oder mehrere Blöcke von Grafikkernen (z.B. Grafikkern(e) 3115A, Grafikkern(e) 3115B), wobei jeder Block einen oder mehrere Grafikkerne beinhaltet. In zumindest einer Ausführungsform beinhaltet jeder Grafikkern einen Satz von Grafikausführungsressourcen, der eine universelle und grafikspezifische Ausführungslogik zum Ausführen von Grafik- und Rechenoperationen sowie eine Festfunktions-Texturverarbeitung und/oder Beschleunigungslogik für maschinelles Lernen und künstliche Intelligenz beinhaltet, einschließlich der Inferenzierungs- und/oder Trainingslogik 915 in 9A und 9B.
  • In zumindest einer Ausführungsform beinhaltet die 3D-Pipeline 3012 Festfunktionslogik und programmierbare Logik zum Verarbeiten eines oder mehrerer Shader-Programme, wie z.B. Vertex-Shader, Geometrie-Shader, Pixel-Shader, Fragment-Shader, Rechen-Shader oder andere Shader-Programme, durch Verarbeiten von Anweisungen und Senden von Ausführungsthreads an die Grafikkernanordnung 3114. In zumindest einer Ausführungsform stellt die Grafikkernanordnung 3114 einen vereinheitlichten Block von Ausführungsressourcen zur Verwendung in Shader-Programmen bereit. In zumindest einer Ausführungsform beinhaltet eine Mehrzweck-Ausführungslogik (z.B. Ausführungseinheiten) innerhalb der Grafikkerne 3115A-3115B der Grafikkernanordnung 3114 Unterstützung für verschiedene 3D-API-Shadersprachen und kann mehrere gleichzeitige Ausführungsthreads ausführen, die mehreren Shadern zugeordnet sind.
  • In zumindest einer Ausführungsform beinhaltet die Grafikkernanordnung 3114 darüber hinaus Ausführungslogik zum Durchführen von Medienfunktionen, wie beispielsweise Video- und/oder Bildverarbeitung. In zumindest einer Ausführungsform beinhalten die Ausführungseinheiten zusätzlich universelle Logik, die programmierbar ist, um zusätzlich zu den Grafikverarbeitungsoperationen parallel universelle Rechenoperationen durchzuführen.
  • In zumindest einer Ausführungsform können Ausgabedaten, die von Threads erzeugt werden, die auf der Grafikkernanordnung 3114 ausgeführt werden, Daten an den Speicher in einem vereinheitlichten Rückgabepuffer bzw. Unified Return Buffer (URB) 3118 ausgeben. Der URB 3118 kann Daten für mehrere Threads speichern. In zumindest einer Ausführungsform kann der URB 3118 dazu verwendet werden, Daten zwischen verschiedenen Threads zu senden, die auf der Grafikkernanordnung 3114 ausgeführt werden. In zumindest einer Ausführungsform kann der URB 3118 zusätzlich zur Synchronisation zwischen Threads auf der Grafikkernanordnung 3114 und fester Funktionslogik innerhalb der gemeinsam genutzten Funktionslogik 3120 verwendet werden.
  • In zumindest einer Ausführungsform ist die Grafikkernanordnung 3114 derart skalierbar, dass die Grafikkernanordnung 3114 eine variable Anzahl von Grafikkernen beinhaltet, die jeweils eine variable Anzahl von Ausführungseinheiten basierend auf einer Sollleistung und einem Leistungsniveau der GPE 3110 aufweisen. In zumindest einer Ausführungsform sind die Ausführungsressourcen derart dynamisch skalierbar, dass die Ausführungsressourcen bei Bedarf aktiviert oder deaktiviert werden können.
  • In zumindest einer Ausführungsform ist die Grafikkernanordnung 3114 mit der gemeinsam genutzten Funktionslogik 3120 gekoppelt, die mehrere Ressourcen beinhaltet, die von den Grafikkernen in der Grafikkernanordnung 3114 gemeinsam genutzt werden. In zumindest einer Ausführungsform sind gemeinsam genutzte Funktionen, die von der gemeinsam genutzten Funktionslogik 3120 ausgeführt werden, in Hardware-Logikeinheiten verkörpert, die spezialisierte ergänzende Funktionalität für die Grafikkernanordnung 3114 bereitstellen. In zumindest einer Ausführungsform beinhaltet die gemeinsam genutzte Funktionslogik 3120, ohne darauf beschränkt zu sein, die Abtaster- 3121, Mathematik- 3122 und Inter-Thread-Kommunikations (ITC) 3123-Logik. In zumindest einer Ausführungsform sind ein oder mehrere Cache(s) 3125 in der gemeinsam genutzten Funktionslogik 3120 enthalten oder mit dieser gekoppelt.
  • In zumindest einer Ausführungsform wird eine gemeinsam genutzte Funktion verwendet, falls ein Bedarf an einer spezialisierten Funktion für die Inklusion in die Grafikkernanordnung 3114 nicht ausreicht. In zumindest einer Ausführungsform wird eine einzelne Instanziierung einer spezialisierten Funktion in der gemeinsam genutzten Funktionslogik 3120 verwendet und zwischen anderen Ausführungsressourcen innerhalb der Grafikkernanordnung 3114 geteilt. In zumindest einer Ausführungsform können spezifische gemeinsam genutzte Funktionen innerhalb der gemeinsam genutzten Funktionslogik 3120, die von der Grafikkernanordnung 3114 extensiv verwendet werden, in der gemeinsam genutzten Funktionslogik 3116 innerhalb der Grafikkernanordnung 3114 enthalten sein. In zumindest einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3116 innerhalb der Grafikkernanordnung 3114 einiges der oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 3120 beinhalten. In zumindest einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 3120 innerhalb der gemeinsam genutzten Funktionslogik 3116 der Grafikkernanordnung 3114 dupliziert sein. In zumindest einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 3120 zugunsten der gemeinsam genutzten Funktionslogik 3116 innerhalb der Grafikkernanordnung 3114 ausgeschlossen.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform kann ein Abschnitt der oder die gesamte Inferenzierungs- und/oder Trainingslogik 915 in den Grafikprozessor 3110 integriert sein. Beispielsweise können in zumindest einer der hierin beschriebenen Ausführungsformen die Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere ALUs verwenden, die in der 3D-Pipeline 3012, dem/den Grafikkern(en) 3115A, der gemeinsam genutzten Funktionslogik 3116, dem/den Grafikkern(en) 3115B, der gemeinsam genutzten Funktionslogik 3120 oder einer anderen Logik in 31 dargestellt sind. Darüber hinaus können in zumindest einer Ausführungsform die hierin beschriebenen Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 9A oder 9B dargestellten Logik durchgeführt werden. In zumindest einer Ausführungsform können Gewichtsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3110 dazu konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hierin beschriebenen Trainingstechniken auszuführen.
  • 32 ist ein Blockdiagramm von Hardwarelogik eines Grafikprozessorkerns 3200 gemäß zumindest einer hierin beschriebenen Ausführungsform. In zumindest einer Ausführungsform kann der Grafikprozessorkern 3200 c3200, manchmal auch als ein Kern-Slice bezeichnet, ein oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors sein. In zumindest einer Ausführungsform ist der Grafikprozessorkern 3200 beispielhaft für ein Grafikkern-Slice, und kann ein Grafikprozessor wie hierin beschrieben mehrere Grafikkern-Slices basierend auf einer Sollleistung und Leistungshüllen beinhalten. In zumindest einer Ausführungsform kann jeder Grafikkern 3200 einen Festfunktionsblock 3230 beinhalten, der mit mehreren, auch als Sub-Slices bezeichneten Subkernen 3201A-3201F gekoppelt ist, die modulare Blöcke von universeller Logik und Festfunktionslogik beinhalten.
  • In zumindest einer Ausführungsform beinhaltet der Festfunktionsblock 3230 eine Geometrie/Festfunktions-Pipeline 3236, die von allen Subkernen in dem Grafikprozessor 3200 gemeinsam genutzt werden kann, beispielsweise bei Implementierungen von Grafikprozessoren mit geringerer Leistung und/oder geringerer Stromaufnahme. In zumindest einer Ausführungsform beinhaltet die Geometrie-/Funktions-Pipeline 3236 eine 3D-Pipeline mit fester Funktion, eine Video-Frontend-Einheit, einen Thread-Übergeber bzw. -Spawner und Thread-Sender sowie einen Unified Return Buffer Manager, der vereinheitlichte Rückgabepuffer verwaltet.
  • In zumindest einer Ausführungsform beinhaltet der Festfunktionsblock 3230 auch eine Grafik-SoC-Schnittstelle 3237, einen Grafik-Mikrocontroller 3238 und eine Medien-Pipeline 3239. Die Grafik-SoC-Schnittstelle 3237 stellt eine Schnittstelle zwischen dem Grafikkern 3200 und anderen Prozessorkernen innerhalb einer integrierten SoC-Schaltung bereit. In zumindest einer Ausführungsform ist der Grafik-Mikrocontroller 3238 ein programmierbarer Subprozessor, der dazu konfiguriert sein kann, verschiedene Funktionen des Grafikprozessors 3200 zu verwalten, einschließlich der Thread-Versendung, des Scheduling und der Präemption. In zumindest einer Ausführungsform beinhaltet die Medien-Pipeline 3239 Logik zur Erleichterung der Dekodierung, Kodierung, Vorverarbeitung und/oder Nachbearbeitung von Multimedia-Daten, einschließlich Bild- und Videodaten. In zumindest einer Ausführungsform implementiert die Medien-Pipeline 3239 Medienoperationen über Anforderungen an Berechnungs- oder Abtast-Logik innerhalb der Subkerne 3201-3201F.
  • In zumindest einer Ausführungsform ermöglicht die SoC-Schnittstelle 3237 dem Grafikkern 3200, mit universellen Anwendungsprozessorkernen (z.B. CPUs) und/oder anderen Komponenten innerhalb eines SoC, einschließlich Speicherhierarchieelementen wie beispielsweise gemeinsam genutztem Last Level Cache-Speicher, System-RAM und/oder eingebettetem On-Chip- oder On-Package-DRAM zu kommunizieren. In zumindest einer Ausführungsform kann die SoC-Schnittstelle 3237 auch Kommunikation mit Vorrichtungen mit fester Funktion innerhalb eines SoC ermöglichen, wie beispielsweise Kameraabbildungspipelines, und ermöglicht die Verwendung und/oder Implementierung globaler Speicher-Atome, die zwischen dem Grafikkern 3200 und CPUs innerhalb eines SoC gemeinsam genutzt werden können. In zumindest einer Ausführungsform kann die SoC-Schnittstelle 3237 auch Energieverwaltungssteuerungen für den Grafikkern 3200 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikkerns 3200 und anderen Taktdomänen innerhalb eines SoC ermöglichen. In zumindest einer Ausführungsform ermöglicht die SoC-Schnittstelle 3237 den Empfang von Befehlspuffern von einem Befehlsstreamer und einem globalen Thread-Versender, die dazu konfiguriert sind, Befehle und Anweisungen an jeden eines einzelnen oder mehrerer Grafikkerne innerhalb eines Grafikprozessors bereitzustellen. In zumindest einer Ausführungsform können Befehle und Anweisungen an die Medien-Pipeline 3239, wenn Medienoperationen durchzuführen sind, oder an eine Geometrie- und Festfunktions-Pipeline (z.B. Geometrie- und Festfunktions-Pipeline 3236, Geometrie- und Festfunktions-Pipeline 3214), wenn Grafikverarbeitungsoperationen durchzuführen sind, gesendet werden.
  • In zumindest einer Ausführungsform kann der Grafik-Mikrocontroller 3238 dazu konfiguriert sein, verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 3200 auszuführen. In zumindest einer Ausführungsform kann der Grafik-Mikrocontroller 3238 eine Grafik- und/oder Rechen-Arbeitslast-Planung auf verschiedenen parallelen Grafik-Engines innerhalb der Ausführungseinheit (EU)-Anordnungen 3202A-3202F, 3204A-3204F innerhalb der Subkerne 3201A-3201F durchführen. In zumindest einer Ausführungsform kann Host-Software, die auf einem CPU-Kern eines SoC mit dem Grafikkern 3200 ausgeführt wird, Arbeitslasten einer von mehreren Grafikprozessor-Türklingeln übergeben, welche einen Planungsvorgang auf einer geeigneten Grafik-Engine auslösen. In zumindest einer Ausführungsform beinhalten Planungsoperationen ein Bestimmen, welche Arbeitslast als nächstes auszuführen ist, ein Übermitteln einer Arbeitslast an einen Befehlsstreamer, ein Vorbelegen existierender Arbeitslasten, die auf einer Engine ausgeführt werden, ein Überwachen des Fortschreitens einer Arbeitslast und ein Benachrichtigen der Host-Software, wenn eine Arbeitslast abgeschlossen ist. In zumindest einer Ausführungsform kann der Grafik-Mikrocontroller 3238 auch Zustände mit geringer Stromaufnahme oder Leerlaufzustände für den Grafikkern 3200 ermöglichen und dem Grafikkern 3200 die Möglichkeit geben, Register innerhalb des Grafikkerns 3200 über Zustandsübergänge mit geringem Stromverbrauch unabhängig von einem Betriebssystem und/oder einer Grafiktreibersoftware auf einem System zu speichern und wiederherzustellen.
  • In zumindest einer Ausführungsform kann der Grafikkern 3200 mehr als oder weniger als die dargestellten Subkerne 3201A-3201F und bis hin zu N modularen Subkernen aufweisen. Für jeden Satz von N-Subkernen kann der Grafikkern 3200 in zumindest einer Ausführungsform auch gemeinsam genutzte Funktionslogik 3210, gemeinsam genutzten und/oder Cache-Speicher 3212, eine Geometrie/Festfunktions-Pipeline 3214 sowie zusätzliche Festfunktionslogik 3216 zur Beschleunigung verschiedener Grafik- und Rechenoperationen beinhalten. In zumindest einer Ausführungsform kann die gemeinsam genutzte Funktionslogik 3210 Logikeinheiten (z.B. Abtaster-, Mathematik- und/oder Inter-Thread-Kommunikationslogik) beinhalten, die von jedem N-Subkern innerhalb des Grafikkerns 3200 gemeinsam genutzt werden können. Der gemeinsam genutzte und/oder Cache-Speicher 3212 kann ein Last Level-Cache für die N Subkerne 3201A-3201F innerhalb des Grafikkerns 3200 sein und kann auch als gemeinsam genutzter Speicher dienen, auf den mehrere Subkerne zugreifen können. In zumindest einer Ausführungsform kann die Geometrie/Festfunktions-Pipeline 3214 anstelle der Geometrie/Festfunktions-Pipeline 3236 innerhalb des Festfunktionsblocks 3230 aufgenommen sein und gleiche oder ähnliche Logikeinheiten beinhalten.
  • In zumindest einer Ausführungsform beinhaltet der Grafikkern 3200 zusätzliche Festfunktionslogik 3216, die verschiedene Festfunktionsbeschleunigungslogik zur Verwendung durch den Grafikkern 3200 beinhalten kann. In zumindest einer Ausführungsform beinhaltet die zusätzliche Festfunktionslogik 3216 eine zusätzliche Geometrie-Pipeline zur Verwendung in reinem Positions-Shading. In dem reinen Positions-Shading existieren zumindest zwei Geometrie-Pipelines, während in einer Vollgeometrie-Pipeline innerhalb der Geometrie-/Funktions-Pipeline 3216, 3236, und eine Cull-Pipeline, welche eine zusätzliche Geometrie-Pipeline ist, welche innerhalb der zusätzlichen Festfunktionslogik 3216 enthalten sein kann. In zumindest einer Ausführungsform ist die Cull-Pipeline eine abgespeckte Version einer Vollgeometrie-Pipeline. In zumindest einer Ausführungsform können eine Vollpipeline und eine Cull-Pipeline verschiedene Instanzen einer Anwendung ausführen, wobei jede Instanz einen separaten Kontext hat. In zumindest einer Ausführungsform kann das reine Positions-Shading lange Cull-Läufe verworfener Dreiecke verbergen, so dass das Shading in einigen Fällen früher abgeschlossen werden kann. Beispielsweise kann in zumindest einer Ausführungsform Cull-Pipeline-Logik innerhalb der zusätzlichen Festfunktionslogik 3216 Positions-Shader parallel zu einer Hauptanwendung ausführen und erzeugt im Allgemeinen kritische Ergebnisse schneller als eine Vollpipeline, da die Cull-Pipeline das Attribut der Position von Vertices holt und schattiert, ohne eine Rasterisierung und ein Rendering von Pixeln in einem Einzelbild-Puffer durchzuführen. In zumindest einer Ausführungsform kann die Cull-Pipeline erzeugte kritische Ergebnisse dazu verwenden, Sichtbarkeitsinformationen für alle Dreiecke zu berechnen, unabhängig davon, ob diese Dreiecke gecullt werden. In zumindest einer Ausführungsform kann die Vollpipeline (welche in diesem Fall als eine Wiedergabepipeline bezeichnet werden kann) Sichtbarkeitsinformationen dazu verbrauchen, gecullte Dreiecke zu überspringen, um nur sichtbare Dreiecke zu schattieren, die schließlich an eine Rasterisierungsphase übergeben werden.
  • In zumindest einer Ausführungsform kann die zusätzliche Festfunktionslogik 3216 auch eine maschinell lernende Beschleunigungslogik, wie beispielsweise eine Festfunktions-Matrix-Multiplikationslogik, für Implementierungen einschließlich von Optimierungen für das Training oder die Inferenzierung des maschinellen Lernens beinhalten.
  • In zumindest einer Ausführungsform ist innerhalb jedem Grafik-Subkern 3201A-3201F ein Satz von Ausführungsressourcen enthalten, die dazu verwendet werden können, Grafik-, Medien- und Rechenoperationen im Ansprechen auf Anfragen von der Grafikpipeline, der Medien-Pipeline oder von Shader-Programmen durchzuführen. In zumindest einer Ausführungsform beinhalten die Grafik-Subkerne 3201A-3201F mehrere EU-Arrays 3202A-3202F, 3204A-3204F, Thread-Sende- und Inter-Thread-Kommunikationslogik 3203A-3203F, einen 3D-Abtaster 3205A-3205F, einen Medien-Abtaster 3206A-3206F, einen Shaderprozessor 3207A-3207F und einen gemeinsam genutzten lokalen Speicher (SLM) 3208A-3208F. Die EU-Arrays 3202A-3202F, 3204A-3204F beinhalten jeweils mehrere Ausführungseinheiten, welche universelle Grafikverarbeitungseinheiten sind, die in der Lage sind, Gleitkomma- und Ganzzahl/Festpunkt-Logikoperationen im Dienst einer Grafik-, Medien- oder Rechenoperation durchzuführen, einschließlich von Grafik-, Medien- oder Rechen-Shader-Programmen. In zumindest einer Ausführungsform führt eine TDIIC-Logik 3203A-3203F lokale Thread-Sende- und Thread-Steuer-Operationen für Ausführungseinheiten innerhalb eines Subkerns durch und erleichtert die Kommunikation zwischen Threads, die auf Ausführungseinheiten eines Subkerns ausgeführt werden. In zumindest einer Ausführungsform kann der 3D-Abtaster 3205A-3205F Texturen oder andere 3D-Grafikdaten in den Speicher einlesen. In zumindest einer Ausführungsform kann der 3D-Abtaster Texturdaten unterschiedlich lesen, basierend auf einem konfigurierten Abtastzustand und einem Texturformat, das einer bestimmten Textur zugeordnet ist. In zumindest einer Ausführungsform kann der Medien-Abtaster 3206A-3206F ähnliche Leseoperationen durchführen, die auf einem Typ und einem Format basieren, der/das Mediendaten zugeordnet ist. In zumindest einer Ausführungsform kann jeder Grafik-Subkern 3201A-3201F abwechselnd einen vereinheitlichten 3D- und Medien-Abtaster beinhalten. In zumindest einer Ausführungsform können Threads, die auf Ausführungseinheiten innerhalb jedes der Subkerne 3201A-3201F ausgeführt werden, den gemeinsam genutzten lokalen Speicher 3208A-3208F innerhalb jedes Subkerns dazu verwenden, Threads, die innerhalb einer Thread-Gruppe ausgeführt werden, die Ausführung unter Verwendung eines gemeinsamen Pools von On-Chip-Speicher zu ermöglichen.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform können Abschnitte der oder die gesamte Inferenzierungs- und/oder Trainingslogik 915 in den Grafikprozessor 3210 integriert sein. Beispielsweise können in zumindest einer Ausführungsform hierin beschriebene Trainings- und/oder Inferenzierungs-Techniken eine oder mehrere der ALUs verwenden, die in der 3D-Pipeline 3210, dem Grafik-Mikrocontroller 3238, den Geometrie- und Festfunktions-Pipelines 3214 und 3236 oder einer anderen Logik in 29 dargestellt sind. Außerdem können in zumindest einer Ausführungsform die hierin beschriebenen Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 9A oder 9B dargestellten Logik durchgeführt werden. In zumindest einer Ausführungsform können Gewichtsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs des Grafikprozessors 3200 dazu konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, neuronale Netzwerkarchitekturen, Anwendungsfälle oder die hierin beschriebenen Trainingstechniken auszuführen.
  • 33A-33B veranschaulichen eine Threadausführungslogik 3300 einschließlich einer Anordnung von Verarbeitungselementen eines Grafikprozessorkerns gemäß zumindest einer Ausführungsform. 33A veranschaulicht zumindest eine Ausführungsform, bei welcher die Threadausführungslogik 3300 verwendet wird. 33B c
  • Wie in 33A dargestellt ist, beinhaltet die Thread-Ausführungslogik 3300 in zumindest einer Ausführungsform einen Shader-Prozessor 3302, einen Thread-Sender 3304, einen Befehls-Cache 3306, eine Anordnung skalierbarer Ausführungseinheiten mit einer Vielzahl von Ausführungseinheiten 3308A-3308N, einen Abtaster bzw. Sampler 3310, einen Daten-Cache 3312 und einen Datenport 3314. In zumindest einer Ausführungsform kann eine Anordnung skalierbarer Ausführungseinheiten dynamisch skaliert werden, indem eine oder mehrere Ausführungseinheiten (z.B. eine der Ausführungseinheiten 3308A, 3308B, 3308C, 3308D, 3308N-1 und 3308N) basierend auf Berechnungsanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In zumindest einer Ausführungsform sind skalierbare Ausführungseinheiten über eine Zwischenverbindungsstruktur, die mit jeder der Ausführungseinheiten verbunden ist, miteinander verbunden. In zumindest einer Ausführungsform beinhaltet die Thread-Ausführungslogik 3300 eine oder mehrere Verbindungen zu Speicher, wie beispielsweise Systemspeicher oder Cache-Speicher, über eine oder mehrere des Befehls-Caches 3306, des Datenports 3314, des Abtasters 3310 und der Ausführungseinheiten 3308A-3308N. In zumindest einer Ausführungsform ist jede Ausführungseinheit (z.B. 3308A) eine eigenständige, programmierbare, universelle Recheneinheit, die in der Lage ist, mehrere gleichzeitige Hardware-Threads auszuführen und gleichzeitig mehrere Datenelemente für jeden Thread parallel zu verarbeiten. In zumindest einer Ausführungsform ist die Anordnung der Ausführungseinheiten 3308A-3308N skalierbar, um eine beliebige Anzahl einzelner Ausführungseinheiten zu beinhalten.
  • In zumindest einer Ausführungsform werden die Ausführungseinheiten 3308A-3308N hauptsächlich zum Ausführen von Shader-Programmen verwendet. In zumindest einer Ausführungsform kann der Shader-Prozessor 3302 verschiedene Shader-Programme verarbeiten und Ausführungsthreads, die mit Shader-Programmen verknüpft sind, über einen Thread-Sender 3304 verteilen. In zumindest einer Ausführungsform beinhaltet der Thread-Sender 3304 Logik, um Thread-Initiationsanforderungen von Grafik- und Medien-Pipelines zu arbitrieren und angeforderte Threads auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 3308A-3308N zu instanziieren. Beispielsweise kann in zumindest einer Ausführungsform eine Geometrie-Pipeline Vertex-, Tesselierungs- oder Geometrie-Shader an die Thread-Ausführungslogik zur Verarbeitung senden. In zumindest einer Ausführungsform kann der Thread-Sender 3304 auch Laufzeit-Thread-Übergabe-Anforderungen von ausführenden Shader-Programmen verarbeiten.
  • In zumindest einer Ausführungsform unterstützen die Ausführungseinheiten 3308A-3308N einen Befehlssatz, der native Unterstützung vieler Standard-3D-Grafik-Shader-Anweisungen beinhaltet, so dass Shader-Programme aus Grafikbibliotheken (z.B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. In zumindest einer Ausführungsform unterstützen Ausführungseinheiten Vertex- und Geometrie-Verarbeitung (z.B. Vertex-Programme, Geometrie-Programme, Vertex-Shader), Pixelverarbeitung (z.B. Pixel-Shader, Fragment-Shader) und Universalverarbeitung (z.B. Rechen- und Medien-Shader). In zumindest einer Ausführungsform ist jede der Ausführungseinheiten 3308A-3308N, die eine oder mehrere Arithmetik-Logikeinheiten (ALUs) beinhalten, zu mehreren ausgegebenen Single Instruction Multiple Data (SIMD)-Ausführungen in der Lage, und ermöglicht der Multithread-Betrieb trotz Speicherzugriffen mit höherer Latenz eine effiziente Ausführungsumgebung. In zumindest einer Ausführungsform weist jeder Hardware-Thread innerhalb jeder Ausführungseinheit eine dedizierte Registerdatei mit hoher Bandbreite und einen zugehörigen unabhängigen Thread-Zustand auf. In zumindest einer Ausführungsform ist die Ausführung eine Mehrfachausgabe pro Takt an Pipelines, die zu Ganzzahlen, einfach und doppelt genauen Gleitkommaoperationen, SIMD-Zweigfähigkeit, logischen Operationen, transzendenten Operationen und anderen verschiedenen Operationen in der Lage sind. In zumindest einer Ausführungsform veranlasst, während auf Daten aus dem Speicher oder von einer der gemeinsam genutzten Funktionen gewartet wird, die Abhängigkeitslogik innerhalb der Ausführungseinheiten 3308A-3308N, dass ein wartender Thread schläft, bis angeforderte Daten zurückgegeben wurden. In zumindest einer Ausführungsform können Hardware-Ressourcen für die Verarbeitung anderer Threads bereitgestellt werden, während ein wartender Thread schläft. In zumindest einer Ausführungsform beispielsweise kann, während einer Verzögerung in Zusammenhang mit einer Vertex-Shader-Operation, eine Ausführungseinheit Operationen für einen Pixel-Shader, einen Fragment-Shader oder eine andere Art von Shader-Programm durchführen, einschließlich eines anderen Vertex-Shaders.
  • In zumindest einer Ausführungsform arbeitet jede Ausführungseinheit in den Ausführungseinheiten 3308A-3308N auf Anordnungen bzw. Arrays von Datenelementen. In zumindest einer Ausführungsform ist eine Anzahl von Datenelementen von „Ausführungsgröße“ oder Anzahl von Kanälen für eine Anweisung. In zumindest einer Ausführungsform ist ein Ausführungskanal eine logische Ausführungseinheit für den Zugriff auf Datenelemente, ein Maskieren und eine Ablaufsteuerung innerhalb von Anweisungen. In zumindest einer Ausführungsform kann eine Anzahl von Kanälen unabhängig von einer Anzahl physikalischer Arithmetik-Logikeinheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen bestimmten Grafikprozessor sein. In zumindest einer Ausführungsform unterstützen die Ausführungseinheiten 3308A-3308N Ganzzahl- und Gleitkomma-Datentypen.
  • In zumindest einer Ausführungsform beinhaltet ein Befehlssatz für Ausführungseinheiten SIMD-Befehle. In zumindest einer Ausführungsform können verschiedene Datenelemente als ein gepackter Datentyp in einem Register gespeichert sein, und wird die Ausführungseinheit verschiedene Elemente basierend auf einer Datengröße der Elemente verarbeiten. Beispielsweise werden in zumindest einer Ausführungsform dann, wenn mit einem 256-Bit breiten Vektor gearbeitet wird, 256 Bit eines Vektors in einem Register gespeichert und arbeitet eine Ausführungseinheit mit einem Vektor als vier separaten 64-Bit gepackten Datenelementen (Quad-Word (QW)-Größe-Datenelemente), acht separaten 32-Bit gepackten Datenelementen (Double Word (DW)-Größe-Datenelemente), sechzehn separaten 16-Bit gepackten Datenelementen (Word (W)-Größe-Datenelemente) oder zweiunddreißig separaten 8-Bit-Datenelementen (Byte (B)-Größe-Datenelemente). In zumindest einer Ausführungsform sind jedoch unterschiedliche Vektorbreiten und Registergrößen möglich.
  • In zumindest einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer fusionierten Ausführungseinheit 3309A-3309N mit einer Thread-Steuerlogik (3307A-3307N) kombiniert sein, die für fusionierte EUs üblich ist. In zumindest einer Ausführungsform können mehrere EUs zu einer EU-Gruppe fusioniert sein. In zumindest einer Ausführungsform kann jede EU in der fusionierten EU-Gruppe dazu konfiguriert sein, einen separaten SIMD-Hardware-Thread auszuführen. Die Anzahl von EUs in einer fusionierten EU-Gruppe kann in Übereinstimmung mit verschiedenen Ausführungsformen variieren. In zumindest einer Ausführungsform können pro EU verschiedene SIMD-Breiten durchgeführt werden, einschließlich, aber nicht beschränkt auf, SIMD8, SIMD16 und SIMD32. In zumindest einer Ausführungsform beinhaltet jede verschmolzene bzw. fusionierte Grafikausführungseinheit 3309A-3309N zumindest zwei Ausführungseinheiten. Beispielsweise beinhaltet in zumindest einer Ausführungsform die fusionierte Ausführungseinheit 3309A eine erste EU 3308A, eine zweite EU 3308B und eine Thread-Steuerlogik 3307A, die der ersten EU 3308A und der zweiten EU 3308B gemeinsam ist. In zumindest einer Ausführungsform steuert die Thread-Steuerlogik 3307A Threads, die auf der fusionierten Grafikausführungseinheit 3309A ausgeführt werden, welches es jeder EU innerhalb der fusionierten Ausführungseinheiten 3309A-3309N erlaubt, unter Verwendung eines gemeinsamen Befehlszeigerregisters ausgeführt zu werden.
  • In zumindest einer Ausführungsform sind ein oder mehrere interne Befehls-Caches (z.B. 3306) in der Thread-Ausführungslogik 3300 enthalten, um Thread-Anweisungen für Ausführungseinheiten zwischenzuspeichern. In zumindest einer Ausführungsform sind ein oder mehrere Daten-Caches (z.B. 3312) enthalten, um Thread-Daten während der Thread-Ausführung zwischenzuspeichern. In zumindest einer Ausführungsform ist ein Abtaster 3310 enthalten, um eine Texturabtastung für 3D-Operationen und eine Medienabtastung für Medienoperationen bereitzustellen. In zumindest einer Ausführungsform beinhaltet der Abtaster 3310 eine spezialisierte Textur- oder Medien-Abtastfunktionalität, um Textur- oder Mediendaten während des Abtastprozesses zu verarbeiten, bevor er abgetastete bzw. gesampelte Daten an eine Ausführungseinheit bereitgestellt werden.
  • Während der Ausführung senden in einer Ausführungsform Grafik- und Medien-Pipelines Thread-Initiationsanforderungen über Thread-Übergabe- und Sende-Logik an die Thread-Ausführungslogik 3300. In zumindest einer Ausführungsform wird, sobald eine Gruppe von geometrischen Objekten verarbeitet und in Pixeldaten gerastert wurde, eine Pixelprozessorlogik (z.B. Pixel-Shader-Logik, Fragment-Shader-Logik usw.) innerhalb des Shader-Prozessors 3302 aufgerufen, um weiter Ausgabeinformationen zu berechnen und zu veranlassen, dass Ergebnisse auf Ausgabeoberflächen (z.B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In zumindest einer Ausführungsform berechnet ein Pixel-Shader oder Fragment-Shader Werte verschiedener Vertex-Attribute, die über ein gerastertes Objekt hinweg zu interpolieren sind. In zumindest einer Ausführungsform führt die Pixelprozessorlogik innerhalb des Shader-Prozessors 3302 dann ein von der Anwendungsprogrammierschnittstelle (API) bereitgestelltes Pixel- oder Fragment-Shader-Programm aus. In zumindest einer Ausführungsform sendet, um ein Shader-Programm auszuführen, der Shader-Prozessor 3302 Threads über den Thread-Sender 3304 an eine Ausführungseinheit (z.B. 3308A). In zumindest einer Ausführungsform verwendet der Shader-Prozessor 3302 Texturabtastlogik in dem Abtaster 3310, um auf Texturdaten in im Speicher gespeicherten Texturkarten zuzugreifen. In zumindest einer Ausführungsform berechnen arithmetische Operationen auf Texturdaten und zugeführten Geometriedaten Pixelfarbdaten für jedes geometrische Fragment oder verwerfen ein oder mehrere Pixel aus der weiteren Verarbeitung.
  • In zumindest einer Ausführungsform stellt ein Datenport 3314 einen Speicherzugriffsmechanismus für die Thread-Ausführungslogik 3300 bereit zum Ausgeben verarbeiteter Daten zur weiteren Verarbeitung auf einer Grafikprozessor-Ausgabepipeline an den Speicher. In zumindest einer Ausführungsform beinhaltet oder koppelt der Datenport 3314 einen oder mehrere Cache-Speicher (z.B. Daten-Cache 3312), um Daten für einen Speicherzugriff über einen Datenport zwischenzuspeichern.
  • Wie in 33B dargestellt ist, kann in zumindest einer Ausführungsform eine Grafikausführungseinheit 3308 eine Befehlsabrufeinheit 3337, eine allgemeine Registerdateianordnung (GRF) 3324, eine architektonische Registerdateianordnung (ARF) 3326, einen Thread-Arbiter 3322, eine Sendeeinheit 3330, eine Verzweigungseinheit 3332, einen Satz von SIMD-Fließkommaeinheiten (FPUs) 3334 und in zumindest einer Ausführungsform einen Satz von dedizierten ganzzahligen SIMD ALUs 3335 beinhalten. In zumindest einer Ausführungsform beinhalten die GRF 3324 und die ARF 3326 einen Satz von allgemeinen Registerdateien und Architekturregisterdateien, die jedem gleichzeitigen Hardware-Thread zugeordnet sind, der in der Grafikausführungseinheit 3308 aktiv sein kann. In zumindest einer Ausführungsform wird der Architekturzustand pro Thread in der ARF 3326 beibehalten, während während der Thread-Ausführung verwendete Daten in der GRF 3324 gespeichert werden. In zumindest einer Ausführungsform kann der Ausführungszustand jedes Threads, einschließlich von Befehlszeigern für jeden Thread, in threadspezifischen Registern in der ARF 3326 gehalten werden.
  • In zumindest einer Ausführungsform weist die Grafikausführungseinheit 3308 eine Architektur auf, die eine Kombination aus simultanem Multi-Threading (SMT) und feinkörnigem Interleaved Multi-Threading (IMT) ist. In zumindest einer Ausführungsform weist die Architektur eine modulare Konfiguration auf, die zur Designzeit auf der Grundlage einer Sollanzahl gleichzeitiger Threads und der Anzahl von Registern pro Ausführungseinheit verfeinert werden kann, wobei Ausführungseinheitsressourcen über Logik hinweg verteilt sind, die zum Ausführen mehrerer gleichzeitiger Threads verwendet wird.
  • In zumindest einer Ausführungsform kann die Grafikausführungseinheit 3308 mehrere Anweisungen co-ausgeben bzw. gemeinsam ausgeben, welche jeweils unterschiedliche Anweisungen sein können. In zumindest einer Ausführungsform kann der Thread-Arbiter 3322 des Grafikausführungseinheit-Threads 3308 Anweisungen an eine der Sendeeinheit 3330, der Verzweigungseinheit 3342 oder der SIMD FPU(s) 3334 zur Ausführung senden. In zumindest einer Ausführungsform kann jeder Ausführungsthread auf 128 Universalregister innerhalb der GRF 3324 zugreifen, wobei jedes Register 32 Bytes speichern kann, die als ein SIMD 8-Elementvektor von 32-Bit-Datenelementen zugänglich sind. In zumindest einer Ausführungsform hat jeder Thread der Ausführungseinheit Zugriff auf 4 KByte innerhalb der GRF 3324, obwohl Ausführungsformen nicht so beschränkt sind und mehr oder weniger Registerressourcen in anderen Ausführungsformen bereitgestellt sein können. In zumindest einer Ausführungsform können bis zu sieben Threads gleichzeitig ausgeführt werden, obwohl auch eine Anzahl von Threads pro Ausführungseinheit je nach Ausführungsform variieren kann. In zumindest einer Ausführungsform, in welcher sieben Threads auf 4 KByte zugreifen können, kann die GRF 3324 insgesamt 28 KByte speichern. In zumindest einer Ausführungsform können flexible Adressierungsmodi es Registern ermöglichen, gemeinsam adressiert zu werden, um effektiv breitere Register aufzubauen oder schrittförmige rechteckige Blockdatenstrukturen darzustellen.
  • In zumindest einer Ausführungsform werden Speicheroperationen, Abtasteroperationen und andere Systemkommunikationen mit längerer Latenz über „Sende“-Anweisungen gesendet, die durch eine Nachrichtenübergabe-Sendeeinheit 3330 ausgeführt werden. In zumindest einer Ausführungsform werden Verzweigungsanweisungen an eine dedizierte Verzweigungseinheit 3332 gesendet, um SIMD-Divergenz und eventuelle Konvergenz zu erleichtern.
  • In zumindest einer Ausführungsform beinhaltet die Ausführungseinheit 3308 eine oder mehrere SIMD-Gleitkommaeinheiten (FPU(s)) 3334 zum Durchführen von Gleitkommaoperationen. In zumindest einer Ausführungsform unterstützen die FPU(s) 3334 auch Ganzzahlberechnungen. In zumindest einer Ausführungsform können die FPU(s) 3334 bis zu einer Anzahl M von 32-Bit Gleitkomma- (oder Ganzzahl-) Operationen SIMD-ausführen oder bis zu 2M 16-Bit Ganzzahl oder 16-Bit Gleitkomma-Operationen SIMD-ausführen. In zumindest einer Ausführungsform stellt zumindest eine der FPU(s) erweiterte mathematische Fähigkeiten zur Unterstützung von transzendentalen mathematischen Funktionen und doppeltgenaues 64-Bit-Gleitkomma mit hohem Durchsatz bereit. In zumindest einer Ausführungsform ist auch ein Satz von 8-Bit Ganzzahl SIMD-ALUs 3335 vorhanden, und kann speziell dazu optimiert sein, Operationen im Zusammenhang mit Berechnungen zum maschinellen Lernen durchzuführen.
  • In zumindest einer Ausführungsform können Arrays von mehreren Instanzen der Grafikausführungseinheit 3308 in einer Grafik-Subkerngruppierung (z.B. einer Sub-Slice) instanziiert sein. In zumindest einer Ausführungsform kann die Ausführungseinheit 3308 Anweisungen über eine Vielzahl von Ausführungskanälen hinweg ausführen. In zumindest einer Ausführungsform wird jeder auf der Grafikausführungseinheit 3308 ausgeführte Thread auf einem unterschiedlichen Kanal ausgeführt.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform können Abschnitt der oder die gesamte Inferenzierungs- und/oder Trainingslogik 915 in die Ausführungslogik 3300 integriert sein. Darüber hinaus können in zumindest einer Ausführungsform hierin beschriebene Inferenzierungs- und/oder Trainingsoperationen mit einer anderen Logik als der in 9A oder 9B dargestellten Logik durchgeführt werden. In zumindest einer Ausführungsform können Gewichtsparameter in On-Chip- oder Off-Chip-Speicher und/oder Registern (gezeigt oder nicht gezeigt) gespeichert werden, die ALUs der Ausführungslogik 3300 dazu konfigurieren, einen oder mehrere Algorithmen maschinellen Lernens, Lernalgorithmen, neuronale Netzwerk-architekturen, Anwendungsfälle oder die hierin beschriebenen Trainingstechniken auszuführen.
  • 34 veranschaulicht eine Parallelverarbeitungseinheit („PPU“) 3400 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist die PPU 3400 mit maschinenlesbarem Code konfiguriert, der dann, wenn er von der PPU 3400 ausgeführt wird, die PPU 3400 dazu veranlasst, einige oder alle der in dieser Offenbarung beschriebenen Prozesse und Techniken auszuführen. In zumindest einer Ausführungsform ist die PPU 3400 ein Multithread-Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist und Multithreading als eine Latenz verbergende Technik dazu verwendet, computerlesbare Anweisungen (auch als maschinenlesbare Anweisungen oder einfach Anweisungen bezeichnet) auf mehreren Threads parallel zu verarbeiten. In zumindest einer Ausführungsform bezieht sich ein Thread auf einen AusführungsThread und ist eine Instanziierung eines Befehlssatzes, der für die Ausführung durch die PPU 3400 konfiguriert ist. In zumindest einer Ausführungsform ist die PPU 3400 eine Grafikverarbeitungseinheit („GPU“), die dazu konfiguriert ist, eine Grafik-Rendering-Pipeline zur Verarbeitung dreidimensionaler („3D“) Bilddaten zu implementieren, um zweidimensionale („2D“) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeige („LCD“), zu erzeugen. In zumindest einer Ausführungsform wird die PPU 3400 dazu verwendet, Berechnungen wie beispielsweise lineare Algebra-Operationen und Maschinenlernoperationen durchzuführen. 34 veranschaulicht einen beispielhaften Parallelprozessor nur zu illustrativen Zwecken und ist als nicht beschränkendes Beispiel für Prozessorarchitekturen zu verstehen, die im Rahmen dieser Offenbarung in Betracht gezogen werden, und so, dass jeder beliebige geeignete Prozessor verwendet werden kann, um diesen zu ergänzen und/oder zu ersetzen.
  • In zumindest einer Ausführungsform sind eine oder mehrere PPUs 3400 dazu konfiguriert, High Performance Computing („HPC“), Rechenzentren und Anwendungen maschinellen Lernens zu beschleunigen. In zumindest einer Ausführungsform ist die PPU 3400 dazu konfiguriert, Deep Learning-Systeme und -Anwendungen zu beschleunigen, einschließlich folgender nicht beschränkender Beispiele: autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild-, Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffsuche, Krankheitsdiagnose, Wettervorhersage, Big Data Analytik, Astronomie, molekulardynamische Simulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und vieles mehr.
  • In zumindest einer Ausführungsform beinhaltet die PPU 3400 eine Eingabe/Ausgabe („I/O“)-Einheit 3406, eine Frontend-Einheit 3410, eine Scheduler-Einheit 3412, eine Arbeitsverteilungseinheit 3414, einen Verteiler bzw. Hub 3416, eine Querschiene bzw. Kreuzschiene (Xbar) 3420, einen oder mehrere Universalverarbeitungscluster („GPCs“; general processing cluster) 3418 und eine oder mehrere Partitionseinheiten („Speicherpartitionseinheiten“) 3422. In zumindest einer Ausführungsform ist die PPU 3400 über eine oder mehrere Hochgeschwindigkeits-GPU-Zwischenverbindungen („GPU-Zwischenverbindungen“) 3408 mit einem Host-Prozessor oder anderen PPUs 3400 verbunden. In zumindest einer Ausführungsform ist PPU 3400 kann über einen Interconnect bzw. eine Zwischenverbindung 3402 mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden. In zumindest einer Ausführungsform ist die PPU 3400 mit einem lokalen Speicher verbunden, der eine oder mehrere Speichervorrichtungen („Speicher“) 3404 umfasst. In zumindest einer Ausführungsform beinhalten die Speichervorrichtungen 3404, ohne darauf beschränkt zu sein, einen oder mehrere dynamische Direktzugriffspeicher („DRAM“)-Vorrichtungen. In zumindest einer Ausführungsform sind ein oder mehrere DRAM-Vorrichtungen konfiguriert oder konfigurierbar sein als Speicher-Subsystem mit hoher Bandbreite bzw. HBM-Subsystem („HBM“; High-Bandwidth Memory), wobei innerhalb jeder Vorrichtung mehrere DRAM-Dies gestapelt sind.
  • In zumindest einer Ausführungsform kann sich die Hochgeschwindigkeits-GPU-Zwischenverbindung 3408 auf eine drahtgebundene mehrspurige Kommunikationsverbindung beziehen, die von Systemen dazu verwendet wird, zu skalieren, und eine oder mehrere PPUs 3400 kombiniert mit einer oder mehreren Zentralverarbeitungseinheiten („CPUs“) beinhalten, Cache-Kohärenz zwischen PPUs 3400 und CPUs und CPU-Mastering unterstützen. In zumindest einer Ausführungsform werden Daten und/oder Befehle über die Hochgeschwindigkeits-GPU-Verbindung 3408 über den Hub 3416 zu/von anderen Einheiten der PPU 3400, wie beispielsweise einer oder mehreren Kopier-Engines, Video-Kodierer, Video-Dekodierer, Energieverwaltungseinheiten und andere Komponenten, die nicht ausdrücklich in 34 dargestellt sein können, übertragen.
  • In zumindest einer Ausführungsform ist die I/O-Einheit 3406 dazu konfiguriert, Kommunikationen (z.B. Befehle, Daten) von einem Host-Prozessor (in 34 nicht dargestellt) über den Systembus 3402 zu senden und zu empfangen. In zumindest einer Ausführungsform kommuniziert die I/O-Einheit 3406 mit dem Host-Prozessor direkt über den Systembus 3402 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke. In zumindest einer Ausführungsform kann die I/O-Einheit 3406 mit einem oder mehreren anderen Prozessoren kommunizieren, wie beispielsweise einer oder mehreren PPUs 3400 über den Systembus 3402. In zumindest einer Ausführungsform implementiert die I/O-Einheit 3406 eine Peripheral Component Interconnect Express („PCIe“)-Schnittstelle für Kommunikationen über einen PCIe-Bus. In zumindest einer Ausführungsform implementiert die I/O-Einheit 3406 Schnittstellen zum Kommunizieren mit externen Geräten.
  • In zumindest einer Ausführungsform dekodiert die I/O-Einheit 3406 Pakete, die über den Systembus 3402 empfangen wurden. In zumindest einer Ausführungsform repräsentieren zumindest einige Pakete Befehle dar, die dazu konfiguriert sind, die PPU 3400 zu veranlassen, verschiedene Operationen durchzuführen. In zumindest einer Ausführungsform überträgt die I/O-Einheit 3406 dekodierte Befehle an verschiedene andere Einheiten der PPU 3400, wie durch Befehle spezifiziert. In zumindest einer Ausführungsform werden Befehle an die Frontend-Einheit 3410 und/oder an den Hub 3416 oder andere Einheiten der PPU 3400, wie beispielsweise eine oder mehrere Kopier-Engines, einen Video-Kodierer, einen Video-Dekodierer, eine Energieverwaltungseinheit usw. (in 34 nicht explizit dargestellt), übertragen. In zumindest einer Ausführungsform ist die I/O-Einheit 3406 dazu konfiguriert, Kommunikationen zwischen und unter verschiedenen logischen Einheiten der PPU 3400 zu routen.
  • In zumindest einer Ausführungsform kodiert ein von dem Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 3400 Arbeitslasten zur Verarbeitung bereitstellt. In zumindest einer Ausführungsform umfasst eine Arbeitslast Anweisungen und Daten, die von diesen Anweisungen zu verarbeiten sind. In zumindest einer Ausführungsform ist der Puffer eine Region in einem Speicher, der sowohl von dem Host-Prozessor als auch von der PPU 3400 zugänglich ist (z.B. Lesen/Schreiben) - eine Host-Schnittstelleneinheit kann dazu konfiguriert sein, auf Puffer in einem Systemspeicher, der mit dem Systembus 3402 verbunden ist, über Speicheranforderungen, die über den Systembus 3402 von der I/O-Einheit 3406 übertragen werden, zuzugreifen. In zumindest einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 3400, so dass die Frontend-Einheit 3410 Zeiger auf einen oder mehrere Befehlsströme empfängt und einen oder mehrere Befehlsströme verwaltet, wobei sie Befehle aus Befehlsströmen liest und Befehle an verschiedene Einheiten der PPU 3400 weiterleitet.
  • In zumindest einer Ausführungsform ist die Frontend-Einheit 3410 mit der Scheduler-Einheit 3412 gekoppelt, die verschiedene GPCs 3418 dazu konfiguriert, Aufgaben zu verarbeiten, die durch einen oder mehrere Befehlsströme definiert sind. In zumindest einer Ausführungsform ist die Scheduler-Einheit 3412 dazu konfiguriert, Zustandsinformationen zu verfolgen, die sich auf verschiedene von der Scheduler-Einheit 3412 verwaltete Aufgaben beziehen, wobei Zustandsinformationen anzeigen können, welchem der GPCs 3418 eine Aufgabe zugeordnet ist, unabhängig davon, ob die Aufgabe aktiv oder inaktiv ist, eine Prioritätsstufe, die der Aufgabe zugeordnet ist, und so weiter. In zumindest einer Ausführungsform verwaltet die Scheduler-Einheit 3412 die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren der GPCs 3418.
  • In zumindest einer Ausführungsform ist die Scheduler-Einheit 3412 mit der Arbeitsverteilungseinheit 3414 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf GPCs 3418 zu versenden. In zumindest einer Ausführungsform verfolgt die Arbeitsverteilungseinheit 3414 eine Anzahl von geplanten Aufgaben, die von der Scheduler-Einheit 3412 empfangen wurden, und verwaltet die Arbeitsverteilungseinheit 3414 einen Pool ausstehender Aufgaben und einen Pool aktiver Aufgaben für jeden der GPCs 3418. In zumindest einer Ausführungsform umfasst der Pool ausstehender Aufgaben eine Anzahl von Slots (z.B. 32 Slots), die Aufgaben enthalten, die einem bestimmten GPC 3418 zugewiesen sind; der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von GPCs 3418 aktiv bearbeitet werden, so dass dann, wenn einer der GPCs 3418 die Ausführung einer Aufgabe abschließt, diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 3418 entnommen wird und eine der anderen Aufgaben aus dem Pool ausstehender Aufgaben ausgewählt und zur Ausführung auf dem GPC 3418 eingeplant wird. In zumindest einer Ausführungsform wird dann, wenn eine aktive Aufgabe auf dem GPC 3418 im Leerlauf ist, beispielsweise während des Wartens auf die Auflösung einer Datenabhängigkeit, die aktive Aufgabe aus dem GPC 3418 entnommen und in den Pool ausstehender Aufgaben zurückgeführt, während eine andere Aufgabe aus dem Pool ausstehender Aufgaben ausgewählt und zur Ausführung auf dem GPC 3418 eingeplant wird.
  • In zumindest einer Ausführungsform kommuniziert die Arbeitsverteilungseinheit 3414 über die Querschiene bzw. XBar 3420 mit einem oder mehreren der GPCs 3418. In zumindest einer Ausführungsform ist die XBar 3420 ein Zwischenverbindungsnetzwerk, das viele Einheiten der PPU 3400 mit anderen Einheiten der PPU 3400 koppelt und dazu konfiguriert sein werden kann, die Arbeitsverteilungseinheit 3414 mit einem bestimmten GPC 3418 zu koppeln. In zumindest einer Ausführungsform können eine oder mehrere andere Einheiten der PPU 3400 auch über den Hub 3416 mit der XBar 3420 verbunden sein.
  • In zumindest einer Ausführungsform werden Aufgaben von der Scheduler-Einheit 3412 verwaltet und von der Arbeitsverteilungseinheit 3414 an einen der GPCs 3418 gesendet. Der GPC 3418 ist dazu konfiguriert, Aufgaben zu verarbeiten und Ergebnisse zu erzeugen. In zumindest einer Ausführungsform können Ergebnisse von anderen Aufgaben innerhalb des GPC 3418 verbraucht, über die XBar 3420 an einen anderen GPC 3418 weitergeleitet oder in dem Speicher 3404 gespeichert werden. In zumindest einer Ausführungsform können Ergebnisse über die Partitionseinheiten 3422, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten aus/in dem/den Speicher 3404 implementieren, in den Speicher 3404 geschrieben werden. In zumindest einer Ausführungsform können Ergebnisse über die Hochgeschwindigkeits-GPU-Verbindung 3408 an eine andere PPU 3404 oder CPU übertragen werden. In zumindest einer Ausführungsform beinhaltet die PPU 3400, ohne darauf beschränkt zu sein, eine Anzahl U von Partitionseinheiten 3422, die gleich der Anzahl der separaten und unterschiedlichen Speichervorrichtungen 3404 ist, die mit der PPU 3400 gekoppelt sind. In zumindest einer Ausführungsform wird die Partitionseinheit 3422 hierin in Verbindung mit 36 näher beschrieben.
  • In zumindest einer Ausführungsform führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle („API“) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 3400 zu planen. In zumindest einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 3400 ausgeführt und stellt die PPU 3400 Isolation, Quality of Service („QoS“) und unabhängige Adressräume für mehrere Rechenanwendungen bereit. In zumindest einer Ausführungsform erzeugt eine Anwendung Anweisungen (z.B. API-Aufrufe), die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 3400 zu erzeugen, und gibt der Treiberkern Aufgaben an einen oder mehrere Streams aus, die von der PPU 3400 verarbeitet werden. In zumindest einer Ausführungsform umfasst jede Aufgabe eine oder mehrere Gruppen von verwandten Threads, welche als eine Kette bzw. ein Warp bezeichnet werden können. In zumindest einer Ausführungsform umfasst ein Warp eine Vielzahl verwandter Threads (z.B. 32 Threads), die parallel ausgeführt werden können. In zumindest einer Ausführungsform können sich kooperierende Threads auf eine Vielzahl von Threads beziehen, einschließlich Anweisungen zur Durchführung der Aufgabe und die Daten über gemeinsam genutzten Speicher austauschen. In zumindest einer Ausführungsform sind Threads und kooperierende Threads in Übereinstimmung mit einer Ausführungsform in Verbindung mit 36 näher beschrieben.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform wird der Deep Learning-Anwendungsprozessor dazu verwendet, ein Modell für maschinelles Lernen, wie beispielsweise ein neuronales Netzwerk, zu trainieren, um Informationen, die der PPU 3400 zur Verfügung gestellt werden, vorherzusagen oder daraus abzuleiten. In zumindest einer Ausführungsform wird der Deep Learning-Anwendungsprozessor 3400 dazu verwendet, Informationen basierend auf einem trainierten Modell maschinellen Lernens (z.B. neuronales Netzwerk), das von einem anderen Prozessor oder System oder von der PPU 3400 trainiert wurde, abzuleiten oder vorherzusagen. In zumindest einer Ausführungsform kann die PPU 3400 dazu verwendet werden, einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke durchzuführen.
  • 35 veranschaulicht einen allgemeinen Verarbeitungscluster („GPC“) 3500 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist der GPC 3500 der GPC 3418 aus 34. In zumindest einer Ausführungsform beinhaltet jeder GPC 3500, ohne darauf beschränkt zu sein, eine Anzahl von Hardwareeinheiten zum Verarbeiten von Aufgaben und beinhaltet jeder GPC 3500, ohne darauf beschränkt zu sein, einen Pipeline-Verwalter 3502, eine Pre-Raster-Operations („PROP“)-Einheit 3504, eine Raster-Engine 3508, eine Arbeitsverteilungsquerschiene („WDX“) 3516, eine Speicherverwaltungseinheit („MMU“) 3518, einen oder mehrere Datenverarbeitungscluster („DPCs“) 3506 und jede beliebige geeignete Kombination von Teilen.
  • In zumindest einer Ausführungsform wird der Betriebsablauf des GPC 3500 durch den Pipeline-Verwalter 3502 gesteuert. In zumindest einer Ausführungsform verwaltet der Pipeline-Verwalter 3502 die Konfiguration eines oder mehrerer DPCs 3506 zum Verarbeiten von Aufgaben, die dem GPC 3500 zugeordnet sind. In zumindest einer Ausführungsform konfiguriert der Pipeline-Verwalter 3502 zumindest einen von einem oder mehreren DPCs 3506, um zumindest einen Abschnitt einer Grafik-Rendering-Pipeline zu implementieren. In zumindest einer Ausführungsform ist der DPC 3506 dazu konfiguriert, ein Vertex-Shader-Programm auf einem programmierbaren Streaming-Multiprozessor („SM“) 3514 auszuführen. In zumindest einer Ausführungsform ist der Pipeline-Verwalter 3502 dazu konfiguriert, von einer Arbeitsverteilungseinheit empfangene Pakete in zumindest einer Ausführungsform an geeignete Logikeinheiten innerhalb des GPC 3500 weiterzuleiten, und einige Pakete können an Hardwareeinheiten mit fester Funktion in der PROP 3504 und/oder die Raster-Engine 3508 geroutet werden, während andere Pakete an die DPCs 3506 zur Verarbeitung durch eine Stammfunktions-Engine 3512 oder einen SM 3514 geroutet werden können. In zumindest einer Ausführungsform konfiguriert der Pipeline-Verwalter 3502 zumindest einen der DPCs 3506 dazu, ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • In zumindest einer Ausführungsform ist die PROP-Einheit 3504 dazu konfiguriert, in zumindest einer Ausführungsform, von der Raster-Engine 3508 und den DPCs 3506 erzeugte Daten an eine Rasteroperations („ROP“)-Einheit in der Partitionseinheit 3422 weiterzuleiten, die vorstehend in Verbindung mit 34 näher beschrieben wurde. In zumindest einer Ausführungsform ist die PROP-Einheit 3504 dazu konfiguriert, Optimierungen für die Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen durchzuführen und vieles mehr. In zumindest einer Ausführungsform beinhaltet die Raster-Engine 3508, ohne darauf beschränkt zu sein, eine Anzahl von Hardwareeinheiten mit fester Funktion, die dazu konfiguriert sind, verschiedene Rasteroperationen in zumindest einer Ausführungsform durchzuführen, und die Raste-Engine 3508 beinhaltet, ohne darauf beschränkt zu sein, eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine, eine Kachel-Koaleszenz-Engine und jede beliebige geeignete Kombination davon. In zumindest einer Ausführungsform empfängt die Setup-Engine transformierte Vertices und erzeugt Ebenengleichungen, die mit geometrischen, durch Vertices definierte Stammfunktionen verbunden sind; Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x-, y-Abdeckungsmaske für eine Kachel) für die Stammfunktion zu erzeugen; die Ausgabe der Grobraster-Engine wird an die Cutting-Engine übertragen, an der Fragmente, die mit der Stammfunktion verbunden sind, die einen z-Test nicht bestehen, gecullt werden, und an eine Clipping-Engine übertragen, an der Fragmente, die außerhalb eines Betrachtungsfrustums liegen, abgeschnitten werden. In zumindest einer Ausführungsform werden Fragmente, die das Clipping und das Culling überleben, an die Feinraster-Engine übergeben, um Attribute für Pixelfragmente basierend auf von der Setup-Engine erzeugten Ebenengleichungen zu erzeugen. In zumindest einer Ausführungsform umfasst die Ausgabe der Raster-Engine 3508 Fragmente, die von jeder beliebigen geeigneten Einheit verarbeitet werden können, wie beispielsweise von einem innerhalb des DPC 3506 implementierten F ragment-Shader.
  • In zumindest einer Ausführungsform umfasst jeder in einem GPC 3500 enthaltene DPC 3506, ohne darauf beschränkt zu sein, einen M-Pipe-Controller („MPC“) 3510, eine Stammfunktions-Engine 3512, einen oder mehrere SMs 3514 und jede beliebige geeignete Kombination davon. In zumindest einer Ausführungsform steuert der MPC 3510 den Betrieb des DPC 3506 und routet von dem Pipeline-Verwalter 3502 empfangene Pakete an geeignete Einheiten in dem DPC 3506. In zumindest einer Ausführungsform werden Pakete, die einem Vertex zugeordnet sind, an die Stammfunktions-Engine 3512 geroutet, die dazu konfiguriert ist, Vertex-Attribute, die dem Vertex zugeordnet sind, aus dem Speicher zu holen; im Gegensatz dazu können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 3514 übertragen werden.
  • In zumindest einer Ausführungsform umfasst der SM 3514, ohne darauf beschränkt zu sein, einen programmierbaren Streaming-Prozessor, der dazu konfiguriert ist, Aufgaben zu verarbeiten, die durch eine Anzahl von Threads repräsentiert werden. In zumindest einer Ausführungsform ist der SM 3514 multithreaded und dazu konfiguriert, eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen, und implementiert eine Single-Instruction, Multiple-Data („SIMD“)-Architektur, bei der jeder Thread in einer Gruppe von Threads (z.B. ein Warp) dazu konfiguriert ist, einen anderen Datensatz basierend auf demselben Befehlssatz zu verarbeiten. In zumindest einer Ausführungsform führen alle Threads in einer Gruppe von Threads dieselben Anweisungen aus. In zumindest einer Ausführungsform implementiert der SM 3514 eine Single-Instruction, Multiple Thread („SIMT“)-Architektur, wobei jeder Thread in einer Gruppe von Threads dazu konfiguriert ist, einen anderen Datensatz basierend auf demselben Befehlssatz zu verarbeiten, wobei jedoch einzelne Threads in einer Gruppe von Threads während der Ausführung divergieren dürfen. In zumindest einer Ausführungsform wird für jeden Warp ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, welches Gleichzeitigkeit zwischen Warps und serieller Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb von Warp divergieren. In einer weiteren Ausführungsform wird für jeden einzelnen Thread ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch eine gleiche Gleichzeitigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht wird. In zumindest einer Ausführungsform wird der Ausführungszustand für jeden einzelnen Thread beibehalten, und können Threads, die dieselben Anweisungen ausführen, für bessere Effizienz konvergiert und parallel ausgeführt werden. Zumindest eine Ausführungsform des SM 3514 wird hierin näher beschrieben.
  • In zumindest einer Ausführungsform stellt die MMU 3518 eine Schnittstelle zwischen GPC 3500 und Speicherpartitionseinheit (z.B. Partitionseinheit 3422 aus 34) bereit und ermöglicht die MMU 3518 die Übersetzung virtueller Adressen in physikalische Adressen, Speicherschutz und Arbitrierung von Speicheranforderungen. In zumindest einer Ausführungsform stellt die MMU 3518 einen oder mehrere Translation Lookaside Buffer („TLBs“) zur Verfügung zum Durchführen der Übersetzung von virtuellen Adressen in physikalische Adressen im Speicher.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform wird der Deep Learning-Anwendungsprozessor dazu verwendet, ein Modell für maschinelles Lernen, wie beispielsweise ein neuronales Netzwerk, zu trainieren, um Informationen, die dem GPC 3500 zur Verfügung gestellt werden, vorherzusagen oder daraus abzuleiten. In zumindest einer Ausführungsform wird der GPC 3500 dazu verwendet, Informationen basierend auf einem trainierten Modell für maschinelles Lernen (z.B. neuronales Netzwerk), das von einem anderen Prozessor oder System oder von dem GPC 3500 trainiert wurde, abzuleiten oder vorherzusagen. In zumindest einer Ausführungsform kann der GPC 3500 dazu verwendet werden, einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke durchzuführen.
  • 36 veranschaulicht eine Speicherpartitionierungseinheit 3600 einer Parallelverarbeitungseinheit („PPU“) in Übereinstimmung mit zumindest einer Ausführungsform. In zumindest einer Ausführungsform beinhaltet die Speicherpartitionseinheit 3600, ohne darauf beschränkt zu sein, eine Rasteroperations („ROP“)-Einheit 3602; einen Level 2 („L2“)-Cache 3604; eine Speicherschnittstelle 3606; und jede beliebige geeignete Kombination davon. Die Speicherschnittstelle 3606 ist mit dem Speicher gekoppelt. Die Speicherschnittstelle 3606 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen für eine Hochgeschwindigkeits-Datenübertragung implementieren. In zumindest einer Ausführungsform beinhaltet die PPU U Speicherschnittstellen 3606, eine Speicherschnittstelle 3606 pro Paar von Partitionseinheiten 3600, wobei jedes Paar von Partitionseinheiten 3600 mit einer entsprechenden Speichervorrichtung verbunden ist. Beispielsweise kann in zumindest einer Ausführungsform die PPU mit bis zu Y-Speichervorrichtungen verbunden sein, wie beispielsweise mit Speicherstapeln hoher Bandbreite oder synchronem Grafik-Direktzugriffspeicher mit doppelter Datenrate, Version 5 („GDDR5 SDRAM“).
  • In zumindest einer Ausführungsform implementiert die Speicherschnittstelle 3606 eine Speicherschnittstelle der zweiten Generation („HBM2“) mit hoher Bandbreite und entspricht Y der Hälfte von U. In zumindest einer Ausführungsform befinden sich die HBM2-Speicherstapel an dem demselben physikalischen Gehäuse wie die PPU, welches im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Strom- und Flächeneinsparungen bereitstellt. In zumindest einer Ausführungsform beinhaltet jeder HBM2-Stapel, ohne darauf beschränkt zu sein, vier Speicherchips und ist Y gleich 4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet. In zumindest einer Ausführungsform unterstützt der Speicher Single-Error Correcting Double-Error Detecting („SECDED“) Error Correction Code („ECC“) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die empfindlich auf Datenkorruption reagieren.
  • In zumindest einer Ausführungsform implementiert die PPU eine mehrstufige Speicherhierarchie. In zumindest einer Ausführungsform unterstützt die Speicherpartitionseinheit 3600 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für die Zentralverarbeitungseinheit („CPU“) und PPU-Speicher bereitzustellen, welches einen Datenaustausch zwischen virtuellen Speichersystemen ermöglicht. In zumindest einer Ausführungsform wird die Häufigkeit von Zugriffen von einer PPU auf den Speicher, der sich auf anderen Prozessoren befindet, nachverfolgt, um sicherzustellen, dass Speicherseiten in physischen Speicher einer PPU verschoben werden, die häufiger auf die Seiten zugreift. In zumindest einer Ausführungsform unterstützt die Hochgeschwindigkeits-GPU-Zwischenverbindung 3408 Adressübersetzungsdienste, die es der PPU erlauben, direkt auf die Seitentabellen einer CPU zuzugreifen vollen Zugriff auf CPU-Speicher durch die PPU bereitstellen.
  • In zumindest einer Ausführungsform übertragen Kopier-Engines Daten zwischen mehreren PPUs oder zwischen PPUs und CPUs. In zumindest einer Ausführungsform können Kopier-Engines Seitenfehler für Adressen erzeugen, die nicht in Seitentabellen abgebildet werden, und bedient dann die Speicherpartitionseinheit 3600 die Seitenfehler, wobei sie Adressen in die Seitentabelle abbildet, woraufhin die Kopier-Engine die Übertragung durchführt. In zumindest einer Ausführungsform ist der Speicher für mehrfache Kopier-Engine-Operationen zwischen mehreren Prozessoren festgelegt (d.h. nicht auslagerbar), wodurch der verfügbare Speicher erheblich reduziert wird. In zumindest einer Ausführungsform können mit Hardware-Seitenfehlern Adressen an Kopier-Engines übergeben werden, ohne Rücksicht darauf, ob Speicherseiten resident sind, und ist der Kopiervorgang transparent.
  • Daten aus dem Speicher 3404 von 34 oder einem anderen Systemspeicher werden von der Speicherpartitionseinheit 3600 abgerufen und in dem L2-Cache 3604 gespeichert, der sich auf dem Chip befindet und zwischen verschiedenen GPCs geteilt wird, in Übereinstimmung mit zumindest einer Ausführungsform. Jede Speicherpartitionseinheit 3600 beinhaltet in zumindest einer Ausführungsform, ohne darauf beschränkt zu sein, zumindest einen Abschnitt des L2-Cache, der einer entsprechenden Speichervorrichtung zugeordnet ist. In zumindest einer Ausführungsform sind Caches unterer Ebenen in verschiedenen Einheiten innerhalb von GPCs implementiert. In zumindest einer Ausführungsform kann jeder von SMs 3514 einen Level 1 („L1“)-Cache implementieren, wobei der L1-Cache ein privater Speicher ist, der einem bestimmten SM 3514 zugeordnet ist, und werden Daten aus dem L2-Cache 3604 abgerufen und in jedem der L1-Caches zur Verarbeitung in Funktionseinheiten der SMs 3514 gespeichert. In zumindest einer Ausführungsform ist der L2-Cache 3604 mit der Speicherschnittstelle 3606 und der XBar 3420 gekoppelt.
  • Die ROP-Einheit 3602 führt in zumindest einer Ausführungsform Grafikrasteroperationen in Bezug auf die Pixelfarbe aus, wie beispielsweise eine Farbkompression, ein Pixelblending und mehr. Die ROP-Einheit 3602 implementiert in zumindest einer Ausführungsform eine Tiefenprüfung in Verbindung mit der Raster-Engine 3508, wobei von der Culling-Engine eine Tiefe für einen Abtastort empfangen wird, die einem Pixelfragment der Raster-Engine 3508 zugeordnet ist. In zumindest einer Ausführungsform wird die Tiefe gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen dem Fragment zugeordneten Abtastort geprüft. In zumindest einer Ausführungsform aktualisiert dann, wenn das Fragment den Tiefentest für den Abtastort besteht, die ROP-Einheit 3602 den Tiefenpuffer und überträgt das Ergebnis des Tiefentests an die Raster-Engine 3508. Es ist zu beachten, dass sich die Anzahl der Partitionseinheiten 3600 von der Anzahl der GPCs unterscheiden kann und daher jede ROP-Einheit 3602 in zumindest einer Ausführungsform mit jedem der GPCs gekoppelt sein kann. In zumindest einer Ausführungsform verfolgt die ROP-Einheit 3602 Pakete, die von verschiedenen GPCs empfangen wurden, nach und ermittelt, zu welchem [GPC] ein von der ROP-Einheit 3602 erzeugtes Ergebnis über die XBar 3420 geroutet wird.
  • 37 veranschaulicht einen Streaming-Multiprozessor („SM“) 3700 gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform ist der SM 3700 der SM aus 35. In zumindest einer Ausführungsform beinhaltet der SM 3700, ohne darauf beschränkt zu sein, einen Befehls-Cache 3702; eine oder mehrere Scheduler-Einheiten 3704; eine Registerdatei 3708; einen oder mehrere Verarbeitungskerne („Kerne“) 3710; eine oder mehrere Spezialfunktionseinheiten („SFUs“) 3712; eine oder mehrere Lade-/SpeicherEinheiten („LSUs“) 3714; ein Zwischenverbindungsnetzwerk 3716; einen gemeinsam genutzten Speicher/Level 1 („L1“)-Cache 3718; und jede beliebige geeignete Kombination davon. In zumindest einer Ausführungsform sendet bzw. verteilt eine Arbeitsverteilungseinheit Aufgaben zur Ausführung auf allgemeinen Verarbeitungsclustern („GPCs“) von Parallelverarbeitungseinheiten („PPUs“) und wird jede Aufgabe einem bestimmten Datenverarbeitungscluster („DPC“) innerhalb eines GPC zugeordnet und wird, falls die Aufgabe einem Shader-Programm zugeordnet ist, die Aufgabe einem der SMs 3700 zugewiesen. In zumindest einer Ausführungsform empfängt die Scheduler-Einheit 3704 Aufgaben von der Arbeitsverteilungseinheit und verwaltet die Befehlsplanung für einen oder mehrere der dem SM 3700 zugeordneten Thread-Blöcke. In zumindest einer Ausführungsform plant die Scheduler-Einheit 3704 Thread-Blöcke zur Ausführung als Ketten bzw. Warps paralleler Threads ein, wobei jedem Thread-Block zumindest ein Warp zugeordnet ist. In zumindest einer Ausführungsform führt jeder Warp Threads aus. In zumindest einer Ausführungsform verwaltet die Scheduler-Einheit 3704 eine Vielzahl verschiedener Thread-Blöcke, ordnet Warps verschiedenen Thread-Blöcken zu und sendet dann während jedes Taktzyklus Anweisungen von einer Vielzahl verschiedener kooperativer Gruppen an verschiedene Funktionseinheiten (z.B. Verarbeitungskerne 3710, SFUs 3712 und LSUs 3714).
  • In zumindest einer Ausführungsform können sich kooperative Gruppen auf ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads beziehen, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit welcher Threads kommunizieren, welches den Ausdruck reicherer, effizienterer paralleler Zerlegungen ermöglicht. In zumindest einer Ausführungsform unterstützen kooperative Start-APIs die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. In zumindest einer Ausführungsform bieten Anwendungen konventioneller Programmiermodelle ein einziges, einfaches Konstrukt zum Synchronisieren kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks hinweg (z.B. syncthreads() Funktion). In zumindest einer Ausführungsform können Programmierer jedoch Gruppen von Threads definieren, die kleiner als Thread-Block-Granularitäten sind, und innerhalb definierter Gruppen synchronisieren, um höhere Leistung, Designflexibilität und Softwarewiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen. In zumindest einer Ausführungsform ermöglichen kooperative Gruppen Programmierern, Gruppen von Threads explizit bei Subblock (d.h. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen wie beispielsweise die Synchronisation auf Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen hinweg, so dass Bibliotheken und Hilfsprogrammfunktionen sicher innerhalb ihres lokalen Kontexts synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. In zumindest einer Ausführungsform ermöglichen Stammfunktionen der kooperativen Gruppen neue Strukturen kooperativer Parallelität, einschließlich der, aber nicht beschränkt auf die, Parallelität zwischen Produzent und Konsument, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Netz von Thread-Blöcken hinweg.
  • In zumindest einer Ausführungsform ist eine Sendeeinheit 3706 dazu konfiguriert, Anweisungen an eine oder mehrere Funktionseinheiten zu senden, und beinhaltet die Scheduler-Einheit 3704, ohne darauf beschränkt zu sein, zwei Sendeeinheiten 3706, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen aus demselben Warp zu senden. In zumindest einer Ausführungsform beinhaltet jede Scheduler-Einheit 3704 eine einzelne Sendeeinheit 3706 oder zusätzlicher Sendeeinheiten 3706.
  • In zumindest einer Ausführungsform beinhaltet jeder SM 3700 in zumindest einer Ausführungsform, ohne darauf beschränkt zu sein, eine Registerdatei 3708, die einen Satz von Registern für Funktionseinheiten des SM 3700 bereitstellt. In zumindest einer Ausführungsform ist die Registerdatei 3708 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein dedizierter Abschnitt der Registerdatei 3708 zugeordnet ist. In zumindest einer Ausführungsform ist die Registerdatei 3708 zwischen unterschiedlichen Warps aufgeteilt, die von dem SM 3700 ausgeführt werden, und stellt die Registerdatei 3708 eine Zwischenspeicherung für Operanden bereit, die mit Datenpfaden von Funktionseinheiten verbunden sind. In zumindest einer Ausführungsform umfasst jeder SM 3700, ohne darauf beschränkt zu sein, eine Vielzahl von L Verarbeitungskernen 3710. In zumindest einer Ausführungsform beinhaltet der SM 3700, ohne darauf beschränkt zu sein, eine große Anzahl (z.B. 128 oder mehr) verschiedener Verarbeitungskerne 3710. In zumindest einer Ausführungsform beinhaltet jeder Verarbeitungskern 3710 in zumindest einer Ausführungsform, ohne darauf beschränkt zu sein, eine vollpipelinierte, einfachgenaue, doppeltgenaue und/oder gemischtgenaue Verarbeitungseinheit, die, ohne darauf beschränkt zu sein, eine Gleitkomma-Arithmetiklogikeinheit und eine Ganzzahl-Arithmetiklogikeinheit beinhaltet. In zumindest einer Ausführungsform implementieren Gleitkomma-Arithmetiklogik-einheiten den IEEE 754-2008 Standard für Gleitkommaarithmetik. In zumindest einer Ausführungsform beinhalten die Verarbeitungskerne 3710, ohne darauf beschränkt zu sein, 64 einfachgenaue (32-Bit) Gleitkommakerne, 64 Ganzzahlkerne, 32 doppeltgenaue (64-Bit) Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind dazu konfiguriert, Matrixoperationen in Übereinstimmung mit zumindest einer Ausführungsform durchzuführen. In zumindest einer Ausführungsform sind ein oder mehrere Tensorkerne in den Verarbeitungskernen 3710 enthalten. In zumindest einer Ausführungsform sind Tensorkerne dazu konfiguriert, Deep-Learning-Matrixarithmetik durchzuführen, wie beispielsweise Faltungsoperationen für das Training und die Inferenzierung eines neuronalen Netzwerks. In zumindest einer Ausführungsform arbeitet jeder Tensorkern auf einer 4×4-Matrix und führt eine Matrixmultiplikations- und Akkumulations-Operation D = A X B + C durch, wobei A, B, C und D 4×4-Matrizen sind.
  • In zumindest einer Ausführungsform sind die Matrix-Multiplikations-Inputs A und B 16-Bit-Gleitkomma-Matrizen und sind die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen. In zumindest einer Ausführungsform arbeiten Tensorkerne mit 16-Bit Gleitkomma-Eingangsdaten mit 32-Bit Gleitkommaakkumulation. In zumindest einer Ausführungsform verwendet die 16-Bit-Fließkomma-Multiplikation 64 Operationen und resultiert in einem vollgenauen Produkt, das dann unter Verwendung von 32-Bit-Gleitkomma-Addition mit anderen Zwischenprodukten für eine 4×4×4-Matrix-Multiplikation akkumuliert wird. Tensorkerne werden in zumindest einer Ausführungsform dazu verwendet, viel größere zweidimensionale oder höherdimensionale Matrixoperationen, die aus diesen kleineren Elementen aufgebaut sind, durchzuführen. In zumindest einer Ausführungsform stellt eine API, wie beispielsweise eine CUDA 9 C++ API, spezialisierte Matrixlast-, Matrixmultiplikations- und -akkumulations- sowie Matrixspeicher-Operationen bereit, um Tensorkerne aus einem CUDA-C++-Programm heraus effizient zu nutzen. In zumindest einer Ausführungsform nimmt auf der CUDA-Ebene das Warp-Level-Interface 16x16 große Matrizen an, die alle 32 Threads des Warps umspannen.
  • In zumindest einer Ausführungsform umfasst jeder SM 3700, ohne darauf beschränkt zu sein, M SFUs 3712, die spezielle Funktionen durchführen (z.B. Attributevaluation, reziproke Quadratwurzel und dergleichen). In zumindest einer Ausführungsform beinhalten die SFUs 3712, ohne darauf beschränkt zu sein, eine Baumdurchlaufeinheit, die dazu konfiguriert ist, eine hierarchische Baumdatenstruktur zu durchlaufen. In zumindest einer Ausführungsform beinhalten die SFUs 3712, ohne darauf beschränkt zu sein, eine Textureinheit, die dazu konfiguriert ist, Texturkarten-Filteroperationen durchzuführen. In zumindest einer Ausführungsform sind Textureinheiten dazu konfiguriert, Texturkarten (z.B. ein 2D-Array von Texeln) aus Speicher zu laden und Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu erzeugen, die von dem SM 3700 ausgeführt werden. In zumindest einer Ausführungsform werden Texturkarten im gemeinsam genutztem Speicher/L1-Cache 3718 gespeichert. In zumindest einer Ausführungsform implementieren Textureinheiten Texturoperationen, wie z.B. Filteroperationen unter Verwendung von Mip-Maps (z.B. Texturkarten mit unterschiedlichem Detaillierungsgrad), gemäß zumindest einer Ausführungsform. In zumindest einer Ausführungsform beinhaltet jeder SM 3700, ohne darauf beschränkt zu sein, zwei Textureinheiten.
  • In zumindest einer Ausführungsform umfasst jeder SM 3700, ohne darauf beschränkt zu sein, N LSUs 3714, die Lade- und Speicher-Operationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 3718 und der Registerdatei 3708 implementieren. In zumindest einer Ausführungsform beinhaltet jeder SM 3700, ohne darauf beschränkt zu sein, das Zwischenverbindungsnetzwerk 3716, das jede von Funktionseinheiten mit der Registerdatei 3708 und die LSU 3714 mit der Registerdatei 3708 und dem gemeinsam genutzten Speicher/L1-Cache 3718 verbindet. In zumindest einer Ausführungsform ist das Zwischenverbindungsnetzwerk 3716 eine Querschiene, die dazu konfiguriert sein kann, eine beliebige von Funktionseinheiten mit einem beliebigen Register in der Registerdatei 3708 zu verbinden und die LSUs 3714 mit der Registerdatei 3708 und Speicherorten in dem gemeinsam genutzten Speicher/L1-Cache 3718 zu verbinden.
  • In zumindest einer Ausführungsform ist der gemeinsam genutzte Speicher/L1-Cache 3718 eine Anordnung bzw. ein Array von On-Chip-Speicher, die bzw. das eine Datenspeicherung und Kommunikation zwischen dem SM 3700 und der Stammfunktions-Engine und zwischen Threads in dem SM 3700 ermöglicht, in zumindest einer Ausführungsform. In zumindest einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 3718, ohne darauf beschränkt zu sein, 128KB Speicherkapazität und befindet sich in dem Pfad von dem SM 3700 zu der Partitionseinheit. In zumindest einer Ausführungsform wird der gemeinsam genutzte Speicher/L1-Cache 3718, in zumindest einer Ausführungsform, zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet. In zumindest einer Ausführungsform sind ein oder mehrere des gemeinsam genutzten Speichers/L1-Caches 3718, L2-Caches und Speichers Backup-Speicher.
  • Ein Kombinieren von Daten-Cache und Shared Memory-Funktionalität in einen einzigen Speicherblock bietet verbesserte Leistung für beide Arten von Speicherzugriffen, in zumindest einer Ausführungsform. In zumindest einer Ausführungsform wird Kapazität von Programmen, die keinen gemeinsam genutzten Speicher verwenden, als Cache verwendet oder ist als Cache verwendbar, so dass dann, wenn der gemeinsam genutzte Speicher so konfiguriert ist, dass er die Hälfte der Kapazität nutzt, Textur- und Lade-/Speicher-Operationen verbleibende Kapazität nutzen können. Die Integration in gemeinsam genutzten Speicher/L1-Cache 3718 ermöglicht es, dass der gemeinsam genutzte Speicher/L1-Cache 3718 als eine Hochdurchsatzleitung zum Streaming von Daten fungiert und gleichzeitig einen Zugriff mit hoher Bandbreite und geringer Latenz auf häufig wiederverwendete Daten bereitstellt, in Übereinstimmung mit zumindest einer Ausführungsform. In zumindest einer Ausführungsform kann, wenn sie für allgemeine parallele Berechnung konfiguriert ist, eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. In zumindest einer Ausführungsform werden Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. In der universellen Konfiguration der parallelen Berechnung weist die Arbeitsverteilungseinheit Thread-Blöcke direkt DPCs zu und verteilt sie, in zumindest einer Ausführungsform. In zumindest einer Ausführungsform führen Threads in einem Block dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 3700 dazu verwendet wird, das Programm auszuführen und Berechnungen durchzuführen, der gemeinsam genutzte Speicher/L1 Cache 3718 dazu verwendet wird, zwischen Threads zu kommunizieren, und die LSU 3714 dazu verwendet wird, den globalen Speicher über den gemeinsam genutzten Speicher/L1 Cache 3718 und die Speicherpartitionseinheit zu lesen und zu schreiben. In zumindest einer Ausführungsform schreibt der SM 3700, wenn er für allgemeine parallele Berechnung konfiguriert ist, Befehle, die die Scheduler-Einheit 3704 verwenden kann, um neue Arbeiten an DPCs zu starten.
  • In zumindest einer Ausführungsform 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 kopfmontierten Anzeige, einem tragbaren elektronischen Gerät und mehr enthalten oder mit diesem/diesen gekoppelt. In zumindest einer Ausführungsform ist die PPU auf einem einzelnen Halbleitersubstrat verkörpert. In zumindest einer Ausführungsform ist die PPU in einem System-on-a-Chip („SoC“) zusammen mit einer oder mehreren anderen Vorrichtungen wie zusätzlichen PPUs, Speicher, einer CPU mit reduziertem Befehlssatz („RISC“), einer Speicherverwaltungseinheit („MMU“), einem Digital-Analog-Wandler („DAC“) und dergleichen enthalten.
  • In zumindest einer Ausführungsform kann die PPU auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen enthält. Die Grafikkarte kann so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Computers verbunden ist. In zumindest einer Ausführungsform kann die PPU eine integrierte Grafikverarbeitungseinheit („iGPU“) sein, die in dem Chipsatz der Hauptplatine enthalten ist.
  • Die Inferenzierungs- und/oder Trainingslogik 915 wird dazu verwendet, Inferenzierungs- und/oder Trainingsoperationen durchzuführen, die einer oder mehreren Ausführungsformen zugeordnet sind. Einzelheiten zu der Inferenzierungs- und/oder Trainingslogik 915 sind hierin in Verbindung mit 9A und/oder 9B bereitgestellt. In zumindest einer Ausführungsform wird der Deep-Learning-Anwendungsprozessor dazu verwendet, ein Modell maschinellen Lernens, wie beispielsweise ein neuronales Netzwerk, zu trainieren, um die dem SM 3700 bereitgestellten Informationen vorherzusagen oder abzuleiten. In zumindest einer Ausführungsform wird der SM 3700 dazu verwendet, Informationen basierend auf einem trainierten Modell maschinellen Lernens (z.B. neuronales Netzwerk), das von einem anderen Prozessor oder System oder von dem SM 3700 trainiert wurde, abzuleiten oder vorherzusagen. In zumindest einer Ausführungsform kann der SM 3700 dazu verwendet werden, einen oder mehrere der hierin beschriebenen Anwendungsfälle für neuronale Netzwerke durchzuführen.
  • In zumindest einer Ausführungsform kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung oder einen Chip beziehen. In zumindest einer Ausführungsform 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 Zentralverarbeitungseinheit („CPU“) und der Busimplementierung vornehmen. In zumindest einer Ausführungsform können verschiedene Module auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein.
  • In zumindest einer Ausführungsform sind Computerprogramme in Form von maschinenlesbarem ausführbarem Code oder Algorithmen der Computersteuerungslogik in dem Hauptspeicher 1504 und/oder Sekundärspeicher gespeichert. Computerprogramme, falls sie von einem oder mehreren Prozessoren ausgeführt werden, ermöglichen es dem System 1500, verschiedene Funktionen gemäß zumindest einer Ausführungsform auszuführen. Der Speicher 1504, der Speicher und/oder jeder andere Speicher sind mögliche Beispiele für computerlesbare Medien. In zumindest einer Ausführungsform kann sich Sekundärspeicher auf jede geeignete Speichervorrichtung oder jedes geeignete System beziehen, wie beispielsweise eine Festplatte und/oder ein Wechseldatenträger, der ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact Disk-Laufwerk, ein Digital Versatile Disk („DVD“)-Laufwerk repräsentiert, ein Aufzeichnungsgerät, einen Flash-Speicher für den universellen seriellen Bus („USB“) usw.. In zumindest einer Ausführungsform sind die Architektur und/oder die Funktionalität verschiedener vorangehender Figuren in dem Kontext der CPU 1502; des Parallelverarbeitungssystems 1512; einer integrierten Schaltung, die zumindest zu einem Teil der Fähigkeiten sowohl der CPU 1502; des Parallelverarbeitungssystems 1512; fähig ist; eines Chipsatzes (z.B. einer Gruppe von integrierten Schaltungen, die dazu ausgelegt sind, als eine Einheit zum Durchführen verwandter Funktionen zu arbeiten und verkauft zu werden, usw.); und jeder beliebigen geeigneten Kombination von integrierten Schaltungen implementiert.
  • In zumindest einer Ausführungsform sind die Architektur und/oder die Funktionalität verschiedener vorangehender Figuren in dem Kontext eines allgemeinen Computersystems, eines Platinensystems, eines Spielkonsolensystems für Unterhaltungszwecke, eines anwendungsspezifischen Systems und mehr implementiert. In zumindest einer Ausführungsform kann das Computersystem 1500 die Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, eines Servers, eines Supercomputers, eines Smartphones (z.B. eines drahtlosen Handheld-Geräts), eines persönlichen digitalen Assistenten („PDA“), einer Digitalkamera, eines Fahrzeugs, einer kopfgetragenen Anzeige, eines tragbaren elektronischen Geräts, eines Mobiltelefons, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder jeder beliebigen anderen Art von Logik annehmen.
  • In zumindest einer Ausführungsform beinhaltet das Parallelverarbeitungssystem 1512, ohne darauf beschränkt zu sein, eine Vielzahl von Parallelverarbeitungseinheiten („PPUs“) 1514 und zugehörige Speicher 1516. In zumindest einer Ausführungsform sind die PPUs 1514 über einen Interconnect bzw. eine Zwischenverbindung 1518 und einen Switch 1520 oder Multiplexer mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden. In zumindest einer Ausführungsform verteilt das Parallelverarbeitungssystem 1512 Rechenaufgaben auf die PPUs 1514, welche parallelisierbar sein können - zum Beispiel als Teil der Verteilung von Rechenaufgaben auf Thread-Blöcke mehrerer Grafikverarbeitungseinheiten („GPU“). In zumindest einer Ausführungsform wird der Speicher gemeinsam genutzt und (z.B. für Lese- und/oder Schreibzugriffe) über einige oder alle der PPUs 1514 hinweg zugänglich, obwohl solcher gemeinsam genutzte Speicher Strafen relativ zu der Verwendung von lokalem Speicher und Registern, die in einer PPU 1514 resident sind, mit sich bringen kann. In zumindest einer Ausführungsform wird der Betrieb der PPUs 1514 über die Verwendung eines Befehls wie _syncthreads() synchronisiert, wobei alle Threads in einem Block (z.B. ausgeführt über mehrere PPUs 1514 hinweg) einen bestimmten Punkt der Ausführung von Code erreichen müssen, bevor fortgeschritten wird.
  • Andere Variationen liegen im Rahmen der vorliegenden Offenbarung. Während folglich offenbarte Techniken für verschiedene Modifikationen und alternative Konstruktionen zugänglich sind, sind bestimmte veranschaulichte Ausführungsformen derselben in den Zeichnungen dargestellt und wurden vorstehend im Einzelnen beschrieben. Es versteht sich jedoch, dass nicht beabsichtigt ist, die Offenbarung auf eine bestimmte offenbarte Form oder Formen zu beschränken, sondern im Gegenteil die Absicht besteht, alle Modifikationen, alternativen Konstruktionen und Äquivalente abzudecken, die in den Rahmen und Schutzumfang der Erfindung fallen, wie sie in den beigefügten Ansprüchen definiert ist.
  • Die Verwendung der Begriffe „ein“ und „eine“ sowie „der/die/das“ und ähnlicher Referenten im Kontext der Beschreibung offenbarter Ausführungsformen (insbesondere im Zusammenhang mit den nachfolgenden Ansprüchen) sind so auszulegen, dass sie sowohl Singular als auch Plural abdecken, solange hierin nichts anderes angegeben oder durch Kontext eindeutig im Widerspruch steht, und nicht als Definition eines Begriffs. Die Begriffe „umfassend“, „habend“, „beinhaltend“ und „enthaltend“ sind als offenendige Begriffe zu verstehen (d.h. „einschließlich, aber nicht beschränkt auf“ bedeutend), sofern nicht anders angegeben ist. Der Begriff „verbunden“ ist, wenn er unmodifiziert ist und sich auf physikalische Verbindungen bezieht, ganz oder teilweise als innerhalb enthalten, daran angeordnet oder zusammengefügt zu verstehen, auch wenn es etwas Intervenierendes gibt. Die Anführung von Wertebereichen hierin soll lediglich als Kurzform für die individuelle Bezugnahme auf jeden einzelnen Wert, der in den Bereich fällt, dienen, sofern hierin nicht anders angegeben ist, und jeder einzelne Wert ist in die Spezifikation aufgenommen, als ob er hierin einzeln aufgeführt wäre. Die Verwendung des Begriffs „Satz“ (z.B. „ein Satz von Elementen“) oder „Teilsatz“ bzw. „Teilmenge“ oder „Subset“ ist, sofern nicht anders vermerkt oder durch Kontext widerlegt, als eine nicht leere Sammlung mit einem oder mehreren Elementen zu verstehen. Sofern nicht anders vermerkt oder durch Kontext widerlegt ist, bezeichnet der Begriff „Teilmenge“ einer entsprechenden Menge nicht notwendigerweise eine geeignete Teilmenge der entsprechenden Menge, sondern eine Teilmenge und eine entsprechende Menge können gleich sein.
  • Konjunktive Sprache, wie z.B. Sätze der Form „zumindest eines von A, B und C“ oder „zumindest eines von A, B und C“, sind, sofern nicht ausdrücklich anders angegeben oder anderweitig klar durch Kontext widerlegt, anderweitig mit Kontext so zu verstehen, wie sie im Allgemeinen verwendet werden, um darzustellen, dass ein Element, ein Begriff usw..., entweder A oder B oder C oder eine nicht leere Teilmenge der Menge von A und B und C sein kann. Zum Beispiel beziehen sich in einem anschaulichen Beispiel einer Menge mit drei Elementen die Konjunktivsätze „zumindest eines von A, B und C“ und „zumindest eines von A, B und C“ auf eine der folgenden Mengen: {A}, {B}, {C}, {A, B}, {A, C}, {B, C}, {B, C}, {A, B, C}. Daher ist soll eine solche konjunktive Sprache im Allgemeinen nicht implizieren, dass bestimmte Ausführungsformen zumindest eines von A, zumindest eines von B und zumindest eines von C erfordern, um jeweils vorhanden zu sein. Darüber hinaus gibt der Begriff „Vielzahl“, sofern nicht anders vermerkt oder durch Kontext widerlegt, einen Zustand des Pluralismus an (z.B. bezeichnet „eine Vielzahl von Elementen“ mehrere Elemente). Die Anzahl der Elemente in einer Vielzahl ist zumindest zwei, kann aber bei entsprechender Angabe entweder explizit oder durch Kontext höher sein. Darüber hinaus bedeutet der Ausdruck „basierend auf“, sofern nicht anders angegeben oder anderweitig aus dem Zusammenhang gerissen, „zumindest teilweise basierend auf“ und nicht „allein basierend auf“.
  • Operationen von hierin beschriebenen Prozessen können in jeder geeigneten Reihenfolge durchgeführt werden, sofern hierin nichts anderes angegeben ist oder anderweitig eindeutig durch Kontext widersprochen wird. In zumindest einer Ausführungsform wird ein Prozess wie die hierin beschriebenen Prozesse (oder Variationen und/oder Kombinationen davon) unter der Steuerung eines oder mehrerer Computersysteme durchgeführt, die mit ausführbaren Anweisungen konfiguriert sind, und ist als Code (z.B. ausführbare Anweisungen, 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 zumindest einer Ausführungsform ist Code auf einem computerlesbaren Speichermedium gespeichert, beispielsweise in Form eines Computerprogramms mit einer Vielzahl von Anweisungen, die von einem oder mehreren Prozessoren ausgeführt werden können. In zumindest einer Ausführungsform ist ein computerlesbares Speichermedium ein nichttransitorisches, computerlesbares Speichermedium, das transitorische Signale (z.B. eine sich ausbreitende vorübergehende elektrische oder elektromagnetische Übertragung) ausschließt, aber nichttransitorische Datenspeicherschaltkreise (z.B. Puffer, Cache und Warteschlangen) innerhalb von Sendern/Empfängern von transitorischen Signalen beinhaltet. In zumindest einer Ausführungsform wird Code (z.B. ausführbarer Code oder Quellcode) auf einem Satz eines oder mehrerer nichttransitorischer computerlesbarer Speichermedien gespeichert, auf denen ausführbare Anweisungen (oder anderer Speicher zum Speichern ausführbarer Anweisungen) gespeichert sind, die bei Ausführung (d.h. als Ergebnis der Ausführung) durch einen oder mehrere Prozessoren ein Computersystem dazu veranlassen, dass das Computersystem die hierin beschriebenen Operationen ausführt. Ein Satz nichttransitorischer computerlesbarer Speichermedien umfasst in zumindest einer Ausführungsform mehrere nichttransitorische computerlesbare Speichermedien, und einem oder mehreren von individuellen nichttransitorischen computerlesbaren Speichermedien fehlt jeglicher Code, während mehrere nichttransitorische computerlesbare Speichermedien den gesamten Code gemeinsam speichern. In zumindest einer Ausführungsform werden ausführbare Anweisungen so ausgeführt, dass unterschiedliche Anweisungen von verschiedenen Prozessoren ausgeführt werden - z.B. ein nichttransitorisches, computerlesbares Speichermedium speichert Anweisungen und eine Haupt-Zentralverarbeitungseinheit („CPU“) führt einige der Anweisungen aus, während eine Grafikverarbeitungseinheit („GPU“) andere Anweisungen ausführt. In zumindest einer Ausführungsform haben verschiedene Komponenten eines Computersystems getrennte Prozessoren und führen verschiedene Prozessoren verschiedene Teilmengen von Anweisungen aus.
  • Dementsprechend sind in zumindest einer Ausführungsform Computersysteme dazu konfiguriert, einen oder mehrere Dienste zu implementieren, die einzeln oder kollektiv Operationen von hierin beschriebenen Prozessen durchführen, und sind solche Computersysteme sind mit anwendbarer Hard- und/oder Software konfiguriert, die die Durchführung von Operationen ermöglichen. Ferner ist ein Computersystem, das zumindest eine Ausführungsform der vorliegenden Offenbarung implementiert, eine einzige Vorrichtung und ist, in einer anderen Ausführungsform, ein verteiltes Computersystem, das mehrere Vorrichtungen umfasst, die unterschiedlich arbeiten, sodass das verteilte Computersystem die hierin beschriebenen Operationen durchführt, und sodass eine einzige Vorrichtung nicht alle Operationen ausführt.
  • Die Verwendung beliebiger und aller Beispiele, oder beispielhafter Formulierungen (z.B. „wie“), die hierin enthalten sind, dient lediglich der besseren Beleuchtung von Ausführungsformen der Offenbarung und stellt keine Einschränkung des Schutzumfangs der Offenbarung dar, sofern nichts anderes behauptet wird. Keine Sprache in der Spezifikation ist so auszulegen, dass ein nicht beanspruchtes Element als wesentlich für die Praxis der Offenlegung angegeben wird.
  • Alle hierin zitierten Bezugnahmen, einschließlich von Veröffentlichungen, Patentanmeldungen und Patenten, werden hiermit in gleichem Maße durch Bezugnahme einbezogen, als ob jede Bezugnahme einzeln und spezifisch angegeben wäre, um durch Bezugnahme aufgenommen zu werden, und wurden in ihrer Gesamtheit hierin dargelegt.
  • In der Beschreibung und in den Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ sowie deren Derivate verwendet sein. Es versteht sich, dass diese Begriffe nicht als Synonyme füreinander gedacht sein dürfen. Vielmehr kann in bestimmten Beispielen „verbunden“ oder „gekoppelt“ dazu verwendet sein, darauf hinzuweisen, dass zwei oder mehr Elemente in direktem oder indirektem physikalischen oder elektrischen Kontakt miteinander stehen. „Gekoppelt“ kann darüber hinaus bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt miteinander stehen, aber dennoch zusammenarbeiten oder miteinander interagieren.
  • Sofern nicht ausdrücklich anders angegeben ist, kann davon ausgegangen werden, dass sich die Begriffe „verarbeiten“, „rechnen“, „berechnen“, „bestimmen“ oder dergleichen über die Spezifikation hinweg auf Handlungen und/oder Prozesse eines Computers oder Computersystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, die als physisch dargestellte Daten, wie beispielsweise elektronisch, Größen innerhalb der Register und/oder Speicher des Computersystems, in andere Daten manipulieren und/oder transformieren, die ähnlich als physische Größen innerhalb der Speicher, Register oder anderer solcher Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen des Computersystems dargestellt sind.
  • In ähnlicher Weise kann sich der Begriff „Prozessor“ auf eine beliebige Vorrichtung oder Teil einer Vorrichtung beziehen, die 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 beschrä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-Entitäten umfassen, die im Laufe der Zeit Arbeit verrichten, wie beispielsweise Aufgaben, Threads und intelligente Agenten. Darüber hinaus kann sich jeder Prozess auf mehrere Prozesse beziehen, um Anweisungen nacheinander oder parallel, kontinuierlich oder intermittierend auszuführen. Die Begriffe „System“ und „Verfahren“ werden hierin austauschbar verwendet, insoweit das System eine oder mehrere Verfahren verkörpern kann und Verfahren als ein System betrachtet werden können.
  • In diesem Dokument kann auf das Erhalten, Beschaffen, Empfangen oder Zuführen von analogen oder digitalen Daten in ein Subsystem, ein Computersystem oder eine computerimplementierte Maschine Bezug genommen werden. Der Prozess des Erhaltens, Beschaffens, Empfangens oder Zuführens von analogen und digitalen Daten kann auf verschiedene Weise erreicht werden, beispielsweise durch Empfangen von Daten als Parameter eines Funktionsaufrufs oder eines Aufrufs einer Anwendungsprogrammierschnittstelle. In einigen Implementierungen kann der Prozess des Erhaltens, Beschaffens, Empfangens oder Zuführens von analogen oder digitalen Daten durch Übertragen von Daten über eine serielle oder parallele Schnittstelle erreicht werden. In einer anderen Implementierung kann der Prozess des Erhaltens, Beschaffens, Empfangens oder Zuführens von analogen oder digitalen Daten durch Übertragen von Daten über ein Computernetzwerk von der liefernden Entität zu der erwerbenden Entität durchgeführt werden. Bezugnahmen können darüber hinaus auf ein Bereitstellen, Ausgeben, Übertragen, Senden oder Präsentieren analoger oder digitaler Daten erfolgen. In verschiedenen Beispielen kann der Prozess des Bereitstellens, Ausgebens, Übertragens, Sendens oder Präsentierens von analogen oder digitalen Daten durch Übertragen von Daten als ein Eingangs- oder Ausgangsparameter eines Funktionsaufrufs, als ein Parameter einer Anwendungsprogrammierschnittstelle oder eines Interprozess-Kommunikationsmechanismus durchgeführt werden.
  • Obwohl die vorstehende Diskussion beispielhafte Implementierungen beschriebener Techniken aufzeigt, können andere Architekturen zur Implementierung beschriebener Funktionalität verwendet werden und sind als im Rahmen dieser Offenbarung liegend beabsichtigt. Ferner könnten, obwohl vorstehend spezifische Verteilungen von Verantwortlichkeiten zu Zwecken der Diskussion definiert sind, verschiedene Funktionen und Verantwortlichkeiten je nach den Umständen in unterschiedlicher Weise verteilt und aufgeteilt sein.
  • Obwohl ein Gegenstand in einer für strukturelle Merkmale und/oder methodische Handlungen spezifischen Sprache beschrieben wurde, versteht sich, dass der in den beigefügten Ansprüchen beanspruchte Gegenstand nicht notwendigerweise auf bestimmte Merkmale oder beschriebene Handlungen beschränkt ist. Vielmehr werden spezifische Merkmale und Handlungen als beispielhafte Formen der Implementierung der Ansprüche offenbart.

Claims (25)

  1. System, umfassend: einen Gelenkroboter mit einem Manipulator; einen oder mehrere Prozessoren; und Speicher, der ausführbare Anweisungen speichert, die dadurch, dass sie von dem einen Prozessor oder den mehreren Prozessoren ausgeführt werden, das System veranlassen, zumindest: ein Bild von einer Kamera zu erhalten, wobei die Kamera dazu positioniert ist, eine Achse des Manipulators nachzuverfolgen; das Bild einem neuronalen Netzwerk bereitzustellen, um einen Wert aus einer Wertfunktion zu erzeugen; und den Manipulator basierend auf dem Wert zu bewegen, um ein Objekt mit dem Manipulator zu greifen.
  2. System nach Anspruch 1, wobei das neuronale Netzwerk unter Verwendung eines Q-Wert-Verlusts und eines Satzes von Hilfsverlusten, die durch das neuronale Netzwerk erzeugt werden, trainiert wird.
  3. System nach Anspruch 1 oder 2, wobei der Wert ein Q-Wert ist.
  4. System nach einem der vorangehenden Ansprüche, wobei der Manipulator eine Klaue oder eine mechanische Hand ist.
  5. System eines der vorstehenden Ansprüche, wobei: der Gelenkroboter ein Handgelenkelement beinhaltet; und die Kamera an einem Handgelenkteil des Roboters befestigt ist.
  6. System nach einem der vorangehenden Ansprüche, wobei die ausführbaren Anweisungen das System ferner dazu veranlassen, zumindest: eine 6-d-Pose des Objekts zu bestimmen; eine Vorgreifposition für den Manipulator basierend zumindest teilweise auf der 6-d-Pose des Objekts zu bestimmen; und den Manipulator in die Vorgreifposition zu bewegen, bevor das Bild von der Kamera erhalten wird.
  7. System nach Anspruch 6, wobei die ausführbaren Anweisungen ferner das System dazu veranlassen, zumindest: ein Bild des Objekts unter Verwendung einer Kamera, die nicht an dem Roboter montiert ist, aufzunehmen; und die 6-d-Pose des Objekts unter Verwendung des Bilds und einem Ort der Kamera, der nicht auf dem Roboter liegt, zu bestimmen.
  8. Verfahren, umfassend: Durchführen eines Greifens eines Objekts mit einem Roboter unter der Steuerung eines oder mehrerer neuronaler Netzwerke, zumindest teilweise durch: Erzeugen einer Simulation eines simulierten Roboters, der versucht, ein simuliertes Objekt mit einem Manipulator zu greifen; Verwenden der Simulation zum Bestimmen eines Ergebnisses einer Interaktion zwischen dem simulierten Roboter und dem simulierten Objekt; Erzeugen eines Bilds aus der Sicht des Manipulators; und Verwenden des Bilds und des Ergebnisses der Interaktion zum Trainieren des einen oder der mehreren neuronalen Netzwerke.
  9. Verfahren nach Anspruch 8, wobei das Greifen zumindest teilweise durchgeführt wird durch: Bestimmen einer 6d-Pose des Objekts; und Greifen des Objekts in Übereinstimmung mit der spezifischen Greifpose.
  10. Verfahren nach Anspruch 9, wobei der Griff zumindest teilweise durchgeführt wird durch: Bestimmen einer spezifischen Greifpose für das Objekt basierend zumindest teilweise auf der 6-d-Pose des Objekts; und Greifen des Objekts in Übereinstimmung mit der spezifischen Greifpose.
  11. Verfahren nach einem der Ansprüche 8 bis 10, wobei das eine oder die mehreren neuronalen Netzwerke einen Q-Wert erzeugen, der zumindest teilweise auf einer vorgeschlagenen Aktion basiert.
  12. Verfahren nach Anspruch 11, wobei eine Aktion für den Roboter aus einer Vielzahl von möglichen Aktionen basierend zumindest teilweise auf einer Vielzahl von Q-Werten, die der Vielzahl von möglichen Aktionen entsprechen, ausgewählt wird.
  13. Verfahren nach Anspruch 11, wobei: das eine oder die mehreren neuronalen Netzwerke einen Satz von Hilfsverlusten erzeugen; der Satz von Hilfsverlusten zumindest eines Abstands des Manipulators von dem Objekt, einer Anzeige von Kontakt mit dem Objekt und einer Kraftabschätzung des Manipulators beinhaltet; und das eine oder die mehreren neuronalen Netzwerke zumindest teilweise auf der Grundlage des Satzes von Hilfsverlusten trainiert werden.
  14. Verfahren nach einem der Ansprüche 8 bis 13, wobei: das Bild von einem ersten neuronalen Netzwerk verarbeitet wird, um eine Einbettung zu erzeugen; und die Einbettung unter Verwendung eines zweiten neuronalen Netzwerks verarbeitet wird, um einen Q-Wert zu erzeugen, der einer vorgeschlagenen Aktion zugeordnet ist.
  15. Verfahren nach einem der Ansprüche 8 bis 14, wobei das Verfahren von dem System nach einem der Ansprüche 1 bis 7 ausgeführt wird.
  16. Prozessor, umfassend eine oder mehrere arithmetische Logikeinheiten (ALUs), um einen Roboter anzuweisen, ein Objekt zu greifen, zumindest durch: Verwenden eines neuronalen Netzwerks, um eine Aktion aus einem Bild zu erzeugen, das von einer In-Hand-Kamera an dem Roboter aufgenommen wurde; Veranlassen des Roboters, sich in Übereinstimmung mit der Aktion zu bewegen; Bestimmen, basierend auf einem Q-Wert, der von dem neuronalen Netzwerk erzeugt wurde, dass der Roboter richtig positioniert ist, um das Objekt zu greifen; und Veranlassen des Roboters dazu, das Objekt zu greifen.
  17. Prozessor nach Anspruch 16, wobei der Prozessor eine Aktion bestimmt, die von dem Roboter zu ergreifen ist, zumindest durch: Bereitstellen des Bilds und einer Verteilung möglicher Aktionen dem neuronalen Netzwerk, um einen Satz von Q-Werten zu erzeugen, die den möglichen Aktionen entsprechen; und Auswählen der Aktion aus den möglichen Aktionen basierend auf dem Satz von Q-Werten.
  18. Prozessor nach Anspruch 15 oder 17, wobei die eine oder die mehreren arithmetischen Logikeinheiten den Roboter ferner dazu veranlassen, zumindest: eine Position und eine Ausrichtung des Objekts zu bestimmen; und vor der Aufnahme des Bilds einen Greifer in eine Vorgreifposition zu bewegen, wobei die Vorgreifposition aus der Position und der Ausrichtung des Objekts bestimmt wird.
  19. Prozessor nach einem der Ansprüche 16 bis 18, wobei das neuronale Netzwerk unter Verwendung eines doppelt tiefen Verstärkungslernalgorithmus trainiert wird.
  20. Prozessor nach einem der Ansprüche 16 bis 19, wobei: die In-Hand-Kamera an dem Handgelenkelement eines Gelenkroboters montiert ist; und die In-Hand-Kamera im Wesentlichen auf eine Hauptachse eines an dem Handgelenk befestigten Robotergreifers ausgerichtet ist.
  21. Prozessor nach einem der Ansprüche 16 bis 20, wobei das Bild aus einem von der In-Hand-Kamera aufgenommenen Rohbild heruntergerechnet wird.
  22. Prozessor nach Anspruch 16, wobei die Aktion eine Bewegung ist, die in einem 4-dimensionalen Aktionsraum definiert ist, der um einen Robotergreifer des Roboters zentriert ist.
  23. Prozessor nach einem der Ansprüche 16 bis 22, wobei: der Roboter das Objekt mit einer Punktschweißelektrode greift; und das Objekt verschweißt wird, nachdem es gegriffen ist.
  24. Prozessor nach einem der Ansprüche 16 bis 23, wobei: der Roboter einen Manipulator beinhaltet, der an einem Fahrzeug montiert ist; und der Manipulator zumindest teilweise durch Bewegen des Fahrzeugs positioniert wird.
  25. Prozessor nach einem der Ansprüche 16 bis 24, wobei der Prozessor Teil des einen oder der mehreren Prozessoren des Systems nach einem der Ansprüche 1 bis 7 ist.
DE102019122790.9A 2018-08-24 2019-08-26 Robotersteuerungssystem Active DE102019122790B4 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862722717P 2018-08-24 2018-08-24
US62/722,717 2018-08-24
US16/549,831 US11833681B2 (en) 2018-08-24 2019-08-23 Robotic control system
US16/549,831 2019-08-23

Publications (2)

Publication Number Publication Date
DE102019122790A1 true DE102019122790A1 (de) 2020-02-27
DE102019122790B4 DE102019122790B4 (de) 2021-03-25

Family

ID=69412288

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019122790.9A Active DE102019122790B4 (de) 2018-08-24 2019-08-26 Robotersteuerungssystem

Country Status (2)

Country Link
US (1) US20240042601A1 (de)
DE (1) DE102019122790B4 (de)

Cited By (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020202632A1 (de) 2020-03-02 2021-09-02 Robert Bosch Gesellschaft mit beschränkter Haftung Inferenzberechnung für neuronale Netzwerke mit Schutz gegen Speicherfehler
DE102020204388A1 (de) 2020-04-03 2021-10-07 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren und Vorrichtung zum Ansteuern eines Agenten
DE102020112149A1 (de) 2020-05-05 2021-11-11 Integrated Dynamics Engineering Gesellschaft mit beschränkter Haftung Verfahren zur Kontrolle von Handlingsystemen
DE102020206913A1 (de) 2020-06-03 2021-12-09 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren und Vorrichtung zum Betreiben eines Roboters
DE102020115628A1 (de) 2020-06-12 2021-12-16 Schunk Gmbh & Co. Kg Spann- Und Greiftechnik Sensoreinrichtung für ein Greifsystem, Verfahren zur Erzeugung von optimalen Greifposen zur Ansteuerung einer Greifvorrichtung und zugehöriges Greifsystem
EP3968298A1 (de) 2020-09-10 2022-03-16 PKE Holding AG Modellierung einer situation
WO2022053504A1 (de) * 2020-09-08 2022-03-17 Zf Friedrichshafen Ag Computerimplementiertes verfahren, eingebettetes system und computerprogramm zum ausführen einer regelungs- und/oder steuerungsvorschrift
DE102021104001B3 (de) 2021-02-19 2022-04-28 Gerhard Schubert Gesellschaft mit beschränkter Haftung Verfahren zum automatischen Ergreifen, insbesondere Umsetzen, von Gegenständen
DE102020214301A1 (de) 2020-11-13 2022-05-19 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und verfahren zum steuern eines roboters zum aufnehmen eines objekts in verschiedenen lagen
EP4008499A1 (de) 2020-12-04 2022-06-08 AZO Holding GmbH Verfahren und vorrichtung zum entnehmen eines nachgiebigen gebindes aus einer mehrzahl an gebinden
DE102021201921A1 (de) 2021-03-01 2022-09-01 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und verfahren zum steuern eines roboters zum aufnehmen eines objekts
DE102021202340A1 (de) 2021-03-10 2022-09-15 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum steuern eines roboters zum aufnehmen und inspizieren eines objekts und robotersteuereinrichtung
DE102021202759A1 (de) 2021-03-22 2022-09-22 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zum Trainieren eines neuronalen Netzwerks zum Steuern eines Roboters
DE102021118885B4 (de) 2020-07-28 2022-11-10 Nvidia Corporation Maschinelles lernen zur steuerung von objektübergaben
EP4124915A1 (de) * 2021-07-30 2023-02-01 dSPACE GmbH Computerimplementiertes verfahren zur herstellung eines für eine numerische simulation geeigneten software-abbildes zumindest eines teils eines realen steuergeräts
US11724401B2 (en) 2019-11-13 2023-08-15 Nvidia Corporation Grasp determination for an object in clutter
DE102022202144A1 (de) 2022-03-02 2023-09-07 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zur Steuerung eines Roboters zur Durchführung einer Aufgabe
DE102022202143A1 (de) 2022-03-02 2023-09-07 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zur Steuerung eines Roboters zur Durchführung einer Aufgabe
DE102022202145A1 (de) 2022-03-02 2023-09-07 Robert Bosch Gesellschaft mit beschränkter Haftung Roboter und Verfahren zum Steuern eines Roboters
DE102022107392A1 (de) 2022-03-29 2023-10-05 Gerhard Schubert Gesellschaft mit beschränkter Haftung Verfahren zum Beschleunigen einer Handhabungs-Maschine
DE102020128653B4 (de) 2019-11-13 2024-03-14 Nvidia Corporation Greifbestimmung für ein Objekt in Unordnung

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102021204846B4 (de) 2021-05-12 2023-07-06 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Steuern einer Robotervorrichtung
DE102021209646B4 (de) 2021-09-02 2024-05-02 Robert Bosch Gesellschaft mit beschränkter Haftung Robotervorrichtung, Verfahren zum computerimplementierten Trainieren eines Roboter-Steuerungsmodells und Verfahren zum Steuern einer Robotervorrichtung
DE102022203410A1 (de) 2022-04-06 2023-10-12 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Steuern einer Robotervorrichtung
DE102022204724A1 (de) 2022-05-13 2023-11-16 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Steuern einer Robotervorrichtung
DE102022207847A1 (de) 2022-07-29 2024-02-01 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum Steuern eines Roboters zum Manipulieren, insbesondere Aufnehmen, eines Objekts

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4265088B2 (ja) * 2000-07-10 2009-05-20 株式会社豊田中央研究所 ロボット装置及びその制御方法
JP4835616B2 (ja) * 2008-03-10 2011-12-14 トヨタ自動車株式会社 動作教示システム及び動作教示方法
JP5850962B2 (ja) * 2014-02-13 2016-02-03 ファナック株式会社 ビジュアルフィードバックを利用したロボットシステム
DE102014223167A1 (de) * 2014-11-13 2016-05-19 Kuka Roboter Gmbh Bestimmen von objektbezogenen Greifräumen mittels eines Roboters
DE202017106506U1 (de) * 2016-11-15 2018-04-03 Google Llc Einrichtung für tiefes Maschinenlernen zum Robotergreifen
KR102113462B1 (ko) * 2017-02-09 2020-05-21 미쓰비시덴키 가부시키가이샤 위치 제어 장치 및 위치 제어 방법

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102020128653B4 (de) 2019-11-13 2024-03-14 Nvidia Corporation Greifbestimmung für ein Objekt in Unordnung
US11724401B2 (en) 2019-11-13 2023-08-15 Nvidia Corporation Grasp determination for an object in clutter
DE102020202632A1 (de) 2020-03-02 2021-09-02 Robert Bosch Gesellschaft mit beschränkter Haftung Inferenzberechnung für neuronale Netzwerke mit Schutz gegen Speicherfehler
DE102020204388A1 (de) 2020-04-03 2021-10-07 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren und Vorrichtung zum Ansteuern eines Agenten
DE102020112149A1 (de) 2020-05-05 2021-11-11 Integrated Dynamics Engineering Gesellschaft mit beschränkter Haftung Verfahren zur Kontrolle von Handlingsystemen
DE102020206913A1 (de) 2020-06-03 2021-12-09 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren und Vorrichtung zum Betreiben eines Roboters
DE102020206913B4 (de) 2020-06-03 2022-12-22 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren und Vorrichtung zum Betreiben eines Roboters
US11738454B2 (en) 2020-06-03 2023-08-29 Robert Bosch Gmbh Method and device for operating a robot
DE102020115628A1 (de) 2020-06-12 2021-12-16 Schunk Gmbh & Co. Kg Spann- Und Greiftechnik Sensoreinrichtung für ein Greifsystem, Verfahren zur Erzeugung von optimalen Greifposen zur Ansteuerung einer Greifvorrichtung und zugehöriges Greifsystem
DE102021118885B4 (de) 2020-07-28 2022-11-10 Nvidia Corporation Maschinelles lernen zur steuerung von objektübergaben
US11597078B2 (en) 2020-07-28 2023-03-07 Nvidia Corporation Machine learning control of object handovers
WO2022053504A1 (de) * 2020-09-08 2022-03-17 Zf Friedrichshafen Ag Computerimplementiertes verfahren, eingebettetes system und computerprogramm zum ausführen einer regelungs- und/oder steuerungsvorschrift
EP3968298A1 (de) 2020-09-10 2022-03-16 PKE Holding AG Modellierung einer situation
US11964400B2 (en) 2020-11-13 2024-04-23 Robert Bosch Gmbh Device and method for controlling a robot to pick up an object in various positions
DE102020214301A1 (de) 2020-11-13 2022-05-19 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und verfahren zum steuern eines roboters zum aufnehmen eines objekts in verschiedenen lagen
EP4008499A1 (de) 2020-12-04 2022-06-08 AZO Holding GmbH Verfahren und vorrichtung zum entnehmen eines nachgiebigen gebindes aus einer mehrzahl an gebinden
DE102020132318A1 (de) 2020-12-04 2022-06-09 Azo Holding Gmbh Verfahren und Vorrichtung zum Entnehmen eines nachgiebigen Gebindes aus einer Mehrzahl an Gebinden
DE102021104001B3 (de) 2021-02-19 2022-04-28 Gerhard Schubert Gesellschaft mit beschränkter Haftung Verfahren zum automatischen Ergreifen, insbesondere Umsetzen, von Gegenständen
DE102021201921A1 (de) 2021-03-01 2022-09-01 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und verfahren zum steuern eines roboters zum aufnehmen eines objekts
DE102021202340A1 (de) 2021-03-10 2022-09-15 Robert Bosch Gesellschaft mit beschränkter Haftung Verfahren zum steuern eines roboters zum aufnehmen und inspizieren eines objekts und robotersteuereinrichtung
DE102021202759A1 (de) 2021-03-22 2022-09-22 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zum Trainieren eines neuronalen Netzwerks zum Steuern eines Roboters
WO2023006934A1 (de) * 2021-07-30 2023-02-02 Dspace Gmbh Computerimplementiertes verfahren zur herstellung eines für eine numerische simulation geeigneten software-abbildes zumindest eines teils eines realen steuergeräts
EP4124915A1 (de) * 2021-07-30 2023-02-01 dSPACE GmbH Computerimplementiertes verfahren zur herstellung eines für eine numerische simulation geeigneten software-abbildes zumindest eines teils eines realen steuergeräts
DE102022202144A1 (de) 2022-03-02 2023-09-07 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zur Steuerung eines Roboters zur Durchführung einer Aufgabe
DE102022202143A1 (de) 2022-03-02 2023-09-07 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zur Steuerung eines Roboters zur Durchführung einer Aufgabe
DE102022202145A1 (de) 2022-03-02 2023-09-07 Robert Bosch Gesellschaft mit beschränkter Haftung Roboter und Verfahren zum Steuern eines Roboters
DE102022202143B4 (de) 2022-03-02 2024-05-16 Robert Bosch Gesellschaft mit beschränkter Haftung Vorrichtung und Verfahren zur Steuerung eines Roboters zur Durchführung einer Aufgabe
DE102022107392A1 (de) 2022-03-29 2023-10-05 Gerhard Schubert Gesellschaft mit beschränkter Haftung Verfahren zum Beschleunigen einer Handhabungs-Maschine

Also Published As

Publication number Publication date
US20240042601A1 (en) 2024-02-08
DE102019122790B4 (de) 2021-03-25

Similar Documents

Publication Publication Date Title
DE102019122790B4 (de) Robotersteuerungssystem
DE112020005156T5 (de) Verstärkendes Lernen von taktilen Greifstrategien
DE102020120201A1 (de) Blickerkennung unter verwendung eines oder mehrerer neuronaler netzwerke
DE102021112247A1 (de) Inhaltsbewusste Stilcodierung unter Verwendung neuronaler Netzwerke
DE112020004302T5 (de) Trainingsstrategiesuche unter verwendung von verstärkendem lernen
DE112020004277T5 (de) Auf maschinellem Lernen basierendes Architektur-Suchverfahren für ein neuronales Netzwerk
DE112020005509T5 (de) Prozessor und system zum identifizieren von out-of-distribution- eingabedaten in neuronalen netzwerken
DE112020003832T5 (de) Neuronale netzwerke zur bildregistrierung und bildsegmentierung, die unter verwendung eines registrierungssimulators trainiert werden
DE102020129425A1 (de) Geführte unsicherheit-bewusste richtlinien-optimierung: kombinieren von modellfreien und modellbasierten strategien für probeneffizientes lernen
DE112020005696T5 (de) Training und ableiten unter verwendung eines neuronalen netzwerkes zum vorhersagen der ausrichtung von objekten in bildern
DE102021108042A1 (de) Verbessertes medienengagement durch tiefes lernen
DE102020128653B4 (de) Greifbestimmung für ein Objekt in Unordnung
DE112020005206T5 (de) Bestimmen der Objektorientierung aus einem Bild mit Maschinenlernen
DE102021118885B4 (de) Maschinelles lernen zur steuerung von objektübergaben
DE112021001762T5 (de) Erzeugen von kennzeichnungen für synthetische bilder unter verwenden eines oder mehrerer neuronaler netzwerke
DE112020003833T5 (de) Durchführen von Matrixoperationen in neuronalen Netzen
DE112020004192T5 (de) Prozessor und system, um tensoroperationen in maschinelles lernen zu konvertieren
DE112019007906T5 (de) Identifizierung von mehrskaligen Merkmalen unter Verwendung eines neuronalen Netzes
DE102020127508B4 (de) Posenverfolgung von Objekten in der Hand
DE112020005464T5 (de) Verteilte gewichtsaktualisierung für backpropagation eines neuronalen netzwerks
DE112020006144T5 (de) Mastertransformationsarchitektur für Deep-Learning
DE112021000351T5 (de) Maschinenlernbasiertes objekterfassungssystem
DE102021129825A1 (de) Objekterkennung und kollisionsvermeidung unter verwendung eines neuronalen netzes
DE112020005476T5 (de) Neuronales netz zur bildausrichtung
DE112020004191T5 (de) Durchführen des verschlüsselns und/oder entschlüsselns auf parallelenrechenarchitekturen

Legal Events

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