DE102020106728A1 - Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung - Google Patents

Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung Download PDF

Info

Publication number
DE102020106728A1
DE102020106728A1 DE102020106728.3A DE102020106728A DE102020106728A1 DE 102020106728 A1 DE102020106728 A1 DE 102020106728A1 DE 102020106728 A DE102020106728 A DE 102020106728A DE 102020106728 A1 DE102020106728 A1 DE 102020106728A1
Authority
DE
Germany
Prior art keywords
graphics
processor
data
pipeline
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102020106728.3A
Other languages
English (en)
Inventor
Anthony Rhodes
Manan Goel
Swarnendu Kar
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.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102020106728A1 publication Critical patent/DE102020106728A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • G06T7/215Motion-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/211Selection of the most significant subset of features
    • G06F18/2113Selection of the most significant subset of features by ranking or filtering the set of features, e.g. using a measure of variance or of feature cross-correlation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • 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
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/194Segmentation; Edge detection involving foreground-background segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/20Image preprocessing
    • G06V10/26Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion
    • G06V10/267Segmentation of patterns in the image field; Cutting or merging of image elements to establish the pattern region, e.g. clustering-based techniques; Detection of occlusion by performing operations on regions, e.g. growing, shrinking or watersheds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/40Scenes; Scene-specific elements in video content
    • G06V20/41Higher-level, semantic clustering, classification or understanding of video scenes, e.g. detection, labelling or Markovian modelling of sport events or news items
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/62Extraction of image or video features relating to a temporal dimension, e.g. time-based feature extraction; Pattern tracking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Image Generation (AREA)

Abstract

Hier beschriebene Ausführungsformen schaffen eine Vorrichtung, die einen Prozessor umfasst, der ausgelegt ist zum: Empfangen eines Eingangsvideos, Umwandeln des Eingangsvideos in eine oder mehrere Bildsequenzen, die zumindest teilweise auf einer Analyse einer Bewegung eines oder mehrerer Objekte in dem Eingangsvideo basieren, Empfangen eines Indikators eines Objekts von Interesse in einem ersten Frame, das durch mehrere Frames in dem Eingangsvideo verfolgt werden soll; und Anwenden eines faltenden neuronalen Netzes, um das Objekt von Interesse durch die mehreren Frames in dem Eingangsvideo zu verfolgen. Andere Ausführungsformen können beschrieben und beansprucht sein.

Description

  • Hintergrund
  • Der hier beschriebene Gegenstand bezieht sich im Allgemeinen auf Grafikverarbeitung.
  • Der Begriff Rotoskopieren bezieht sich auf den Prozess des Übertragens eines Bildes oder eines Abschnitts eines Bildes von einer ersten Videosequenz in eine andere Videosequenz. Das Rotoskopieren ist eine wesentliche Aufgabe bei der Filmbearbeitung. Die meisten aktuellen Rotoskopie-Pipelines, die in der Filmindustrie und verwandten Branchen eingesetzt werden, erfordern eine kostspielige, arbeitsintensive Bearbeitung und Segmentierung einzelner Videobilder durch ein Team von Grafikern. Dementsprechend können Techniken zum Verbessern der Effizienz des Rotoskopierens nützlich sein, z. B. in Grafikverarbeitungsanwendungen.
  • Figurenliste
  • Damit die Art und Weise der oben genannten Merkmale der vorliegenden Ausführungsformen im Einzelnen verstanden werden können, kann eine spezifischere Beschreibung der Ausführungsformen, die oben kurz zusammengefasst wurden, unter Bezugnahme auf Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen veranschaulicht sind. Es ist jedoch zu beachten, dass die beigefügten Zeichnungen nur typische Ausführungsformen darstellen und daher nicht als Einschränkung ihres Umfangs zu betrachten sind.
    • 1 ist ein Blockdiagramm eines Verarbeitungssystems gemäß einigen hier beschriebenen Ausführungsformen;
    • 2 ist ein Blockdiagramm eines Prozessors gemäß einigen hier beschriebenen Ausführungsformen;
    • 3 ist ein Blockdiagramm eines Grafikprozessors gemäß einigen hier beschriebenen Ausführungsformen;
    • 4 ist ein Blockdiagramm einer Grafikverarbeitungsmaschine eines Grafikprozessors gemäß einigen hier beschriebenen Ausführungsformen;
    • 5 ist ein Blockdiagramm einer Hardwarelogik eines Grafikprozessorkerns gemäß einigen hier beschriebenen Ausführungsformen;
    • 6A-6B zeigen eine Strangausführungslogik, die eine Anordnung von Verarbeitungselementen enthält, die in einem Grafikprozessorkern gemäß den hier beschriebenen Ausführungsformen verwendet werden;
    • 7 ist ein Blockdiagramm, das ein Grafikprozessor-Befehlsformat gemäß einigen hier beschriebenen Ausführungsformen darstellt;
    • 8 ist ein Blockdiagramm eines Grafikprozessors gemäß einigen hier beschriebenen Ausführungsformen;
    • 9A-9B zeigen ein Grafikprozessor-Befehlsformat und eine Grafikprozessor-Befehlssequenz gemäß einigen hier beschriebenen Ausführungsformen;
    • 10 zeigt eine beispielhafte Grafiksoftwarearchitektur für ein Datenverarbeitungssystem gemäß einigen hier beschriebenen Ausführungsformen;
    • 11A ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem gemäß einigen hier beschriebenen Ausführungsformen darstellt;
    • 11B zeigt eine Querschnittsseitenansicht einer Baugruppe für integrierte Schaltungen gemäß einigen hier beschriebenen Ausführungsformen;
    • 12 ist ein Blockdiagramm, das ein beispielhaftes integrierte Ein-Chip-System-Schaltung gemäß einer Ausführungsform darstellt;
    • 13A-13B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung in einem SoC gemäß den hier beschriebenen Ausführungsformen darstellen;
    • 14A-14B zeigen eine zusätzliche beispielhafte Grafikprozessorlogik gemäß den hier beschriebenen Ausführungsformen;
    • 15 zeigt ein Datenverarbeitungssystem, das dazu ausgelegt werden kann, die Hintergrundschätzung für die Objektsegmentierung mittels Grobstufenverfolgung gemäß den hier beschriebenen Ausführungsformen zu unterstützen;
    • 16 ist ein Ablaufdiagramm, das Operationen in einem Verfahren zum Unterstützen der Hintergrundschätzung für die Objektsegmentierung mittels Grobstufenverfolgung gemäß den hier beschriebenen Ausführungsformen darstellt;
    • 17 zeigt Aspekte einer Technik zum Unterstützen der Steuerungshintergrundschätzung für die Objektsegmentierung mittels Grobstufenverfolgung gemäß den hier beschriebenen Ausführungsformen;
    • 18 zeigt Aspekte einer Umgebung zur Unterstützung der Steuerhintergrundschätzung für die Objektsegmentierung mittels Grobstufenverfolgung gemäß den hier beschriebenen Ausführungsformen;
    • 19 ist ein Blockdiagramm einer Rechenvorrichtung, die einen Grafikprozessor gemäß einigen hier beschriebenen Ausführungsformen aufweist.
  • Beschreibung von Ausführungsformen
  • Zum Zweck der Erläuterung sind zahlreiche spezifische Einzelheiten angegeben, um ein gründliches Verständnis der verschiedenen nachstehend beschriebenen Ausführungsformen zu liefern. Für Fachleute ist es jedoch offensichtlich, dass die Ausführungsformen ohne einige dieser spezifischen Einzelheiten praktiziert werden können. In anderen Fällen sind bekannte Strukturen und Vorrichtungen in Blockdiagrammform gezeigt, um eine Verunklarung der zugrundeliegenden Prinzipien zu vermeiden und ein gründlicheres Verständnis der Ausführungsformen zu ermöglichen. Obwohl einige der folgenden Ausführungsformen unter Bezugnahme auf einen Grafikprozessor beschrieben sind, können die hier beschriebenen Techniken und Lehren auf verschiedene Arten von Schaltungen oder Halbleitervorrichtungen einschließlich Allzweckverarbeitungsvorrichtungen oder Grafikverarbeitungsvorrichtungen angewendet werden. Die Bezugnahme hier auf „eine Ausführungsform“ gibt an, dass ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Eigenschaft, die in Verbindung oder Assoziation mit der Ausführungsform beschrieben wird, in mindestens einer dieser Ausführungsformen enthalten sein kann. Das Erscheinen des Ausdrucks „in einer Ausführungsform“ an verschiedenen Stellen in der Beschreibung beziehen sich jedoch nicht notwendigerweise alle auf dieselbe Ausführungsform.
  • In der folgenden Beschreibung und den folgenden Ansprüchen können die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Ableitungen verwendet werden. Es versteht sich, dass diese Begriffe nicht als Synonyme für einander gedacht sind. „Gekoppelt“ wird verwendet, um anzugeben, dass zwei oder mehr Elemente, die in direktem physischen oder elektrischen Kontakt miteinander stehen können oder nicht, miteinander zusammenarbeiten oder interagieren. „Verbunden“ wird verwendet, um den Aufbau einer Kommunikation zwischen zwei oder mehr miteinander gekoppelten Elementen anzuzeigen.
  • In der folgenden Beschreibung geben 1-14 einen Überblick über ein beispielhaftes Datenverarbeitungssystem und eine Grafikprozessorlogik, die die verschiedenen Ausführungsformen einschließen oder sich darauf beziehen. 15-25 liefern spezifische Einzelheiten der verschiedenen Ausführungsformen. Einige Aspekte der folgenden Ausführungsformen sind unter Bezugnahme auf einen Grafikprozessor beschrieben, während andere Aspekte in Bezug auf einen Allzweckprozessor wie eine Zentralverarbeitungseinheit (CPU) beschrieben sind. Ähnliche Techniken und Lehren können auf andere Arten von Schaltungen oder Halbleitervorrichtungen angewendet werden, einschließlich, aber nicht beschränkt auf viele integrierte Kernprozessoren, einen GPU-Cluster oder eine oder mehrere Instanzen einer feldprogrammierbaren Gatteranordnung (FPGA). Im Allgemeinen sind die Lehren auf jeden Prozessor oder jede Maschine anwendbar, die Bilddaten (z. B. Abtastung, Pixel), Vertexdaten oder Geometriedaten manipuliert oder verarbeitet.
  • 1 ist ein Blockdiagramm eines Verarbeitungssystems 100 gemäß einer Ausführungsform. In verschiedenen Ausführungsformen umfasst das System 100 einen oder mehrere Prozessoren 102 und einen oder mehrere Grafikprozessoren 108 und kann ein Einzelprozessor-Desktopsystem, ein Mehrprozessor-Arbeitsplatzsystem oder ein Serversystem mit einer großen Anzahl von Prozessoren 102 oder Prozessorkernen 107 sein. In einer Ausführungsform ist das System 100 eine Verarbeitungsplattform, die in eine integrierte Ein-Chip-System-Schaltung (SOC-Schaltung) für den Einsatz in mobilen, tragbaren oder eingebetteten Vorrichtungen integriert ist.
  • In einer Ausführungsform kann das System 100 eine serverbasierte Spiele-Plattform, eine Spielkonsole einschließlich einer Spiel- und Medienkonsole, eine mobile Spielkonsole, eine in der Hand tragbare Spielkonsole oder eine Online-Spielkonsole umfassen oder darin integriert sein. In einigen Ausführungsformen ist das System 100 ein Mobiltelefon, ein Smartphone, eine Tablet-Rechenvorrichtung oder eine mobile Internetvorrichtung. Das Verarbeitungssystem 100 kann auch eine am Körper tragbare Vorrichtung wie beispielsweise eine Smartwatch, eine intelligente Brillenvorrichtung, eine Vorrichtung für erweiterte Realität oder eine Vorrichtung für virtuelle Realität umfassen, damit gekoppelt sein oder darin integriert sein. In einigen Ausführungsformen ist das Verarbeitungssystem 100 ein Fernseher oder ein Beistellgerät mit einem oder mehreren Prozessoren 102 und einer grafischen Schnittstelle, die von einem oder mehreren Grafikprozessoren 108 erzeugt wird.
  • In einigen Ausführungsformen umfassen der eine oder die mehreren Prozessoren 102 jeweils einen oder mehrere Prozessorkerne 107, um Befehle zu verarbeiten, die, wenn sie ausgeführt werden, Operationen für System- und Anwendersoftware durchführen. In einigen Ausführungsformen ist jeder des einen oder der mehreren Prozessorkerne 107 dazu ausgelegt, einen bestimmten Befehlssatz 109 zu verarbeiten. In einigen Ausführungsformen kann der Befehlssatz 109 eine Datenverarbeitung mit komplexem Befehlssatz (CISC), eine Datenverarbeitung mit reduziertem Befehlssatz (RISC) oder eine Datenverarbeitung mit sehr langem Befehlswort (VLIW) ermöglichen. Mehrere Prozessorkerne 107 können jeweils einen anderen Befehlssatz 109 verarbeiten, der Befehle enthalten kann, um die Emulation von anderen Befehlssätzen zu ermöglichen. Der Prozessorkern 107 kann zudem andere Verarbeitungsvorrichtungen wie einen Digitalsignalprozessor (DSP) umfassen.
  • In einigen Ausführungsformen umfasst der Prozessor 102 einen Cache-Speicher 104. Abhängig von der Architektur kann der Prozessor 102 einen einzelnen internen Cache oder mehrere Ebenen von internem Cache aufweisen. In einer Ausführungsform wird der Cache-Speicher von den verschiedenen Komponenten des Prozessors 102 gemeinsam verwendet. In einer Ausführungsform verwendet der Prozessor 102 auch einen externen Cache (beispielsweise einen Ebene-3-Cache-Speicher (L3-Cache-Speicher) oder einen Cache der letzten Ebene (LLC)) (nicht gezeigt), der von den Prozessorkernen 107 unter Verwendung bekannter Cache-Kohärenz-Techniken gemeinsam verwendet werden kann. Zusätzlich ist ein Registersatz 106 in dem Prozessor 102 enthalten, der verschiedene Arten von Registern zum Speichern von verschiedenen Arten von Daten enthalten kann (beispielsweise ein Ganzzahlregister, ein Gleitkommaregister, ein Statusregister und ein Befehlszeigerregister). Einige Register können Allzweckregister sein, während andere Register spezifisch für den Entwurf des Prozessors 102 sein können.
  • In einigen Ausführungsformen sind der eine oder die mehreren Prozessoren 102 mit einem oder mehreren Schnittstellenbussen 110 gekoppelt, um Kommunikationssignale wie Adressen, Daten oder Steuersignale zwischen dem Prozessor 102 und anderen Komponenten in dem System 100 zu übertragen. Der Schnittstellenbus 110 kann in einer Ausführungsform ein Prozessorbus sein, beispielsweise eine Version des Direktmedienschnittstellen-Busses (DMI-Busses). Prozessorbusse sind jedoch nicht auf den DMI-Bus beschränkt und können einen oder mehrere Peripheriekomponenten-Zwischenverbindungs-Busse (z. B. PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen umfassen. In einer Ausführungsform umfassen die Prozessoren 102 einen integrierten Speichercontroller 116 und einen Plattformcontroller-Hub 130. Der Speichercontroller 116 ermöglicht die Kommunikation zwischen einer Speichervorrichtung und anderen Komponenten des Systems 100, während der Plattformcontroller-Hub (PCH) 130 Verbindungen zu E/A-Vorrichtungen über einen lokalen E/A-Bus bietet.
  • Die Speichervorrichtung 120 kann ein dynamischer Direktzugriffsspeicher (DRAM), ein statischer Direktzugriffsspeicher (SRAM), eine Flash-Speichervorrichtung, eine Phasenwechsel-Speichervorrichtung oder eine andere Speichervorrichtung mit geeignetem Leistungsvermögen, um als Prozessspeicher zu dienen, sein. In einer Ausführungsform kann die Speichervorrichtung 120 als Systemspeicher für das System 100 fungieren, um Daten 122 und Befehle 121 für die Verwendung beim Ausführen eines Prozesses oder einer Anwendung durch den Prozessor 102 zu speichern. Der Speichercontroller 116 koppelt auch mit einem optionalen externen Grafikprozessor 112, der mit dem einen oder den mehreren Grafikprozessoren 108 in den Prozessoren 102 kommunizieren kann, um Grafik- und Medienoperationen durchzuführen. In einigen Ausführungsformen kann eine Anzeigevorrichtung 111 mit dem einen oder mehreren Prozessoren 102 verbunden sein. Die Anzeigevorrichtung 111 kann eine oder mehrere von einer internen Anzeigevorrichtung sein, wie etwa eine mobile elektronische Vorrichtung oder eine Laptop-Vorrichtung oder eine externe Anzeigevorrichtung, die über eine Anzeigeschnittstelle (z. B. DisplayPort usw.) verbunden ist. In einer Ausführungsform kann die Anzeigevorrichtung 111 eine am Kopf befestigte Anzeige (HMD) wie etwa eine stereoskopische Anzeigevorrichtung zur Verwendung in Anwendungen der virtuellen Realität (VR-Anwendungen) oder Anwendungen der erweiterten Realität (AR-Anwendungen) sein.
  • In einigen Ausführungsformen ermöglicht es der Plattformcontroller-Hub 130 Peripheriegeräten, eine Verbindung zu der Speichervorrichtung 120 und dem Prozessor 102 über einen Hochgeschwindigkeits-E/A-Bus herzustellen. Die E/A-Peripheriegeräte umfassen einen Audiocontroller 146, einen Netzcontroller 134, eine Firmware-Schnittstelle 128, einen drahtlosen Sendeempfänger 126, Berührungssensoren 125, eine Datenspeichervorrichtung 124 (z. B. ein Festplattenlaufwerk, Flash-Speicher usw.), ohne darauf beschränkt zu sein. Die Datenspeichervorrichtung 124 kann über eine Speicherschnittstelle (z. B. SATA) oder über einen Peripheriekomponentenbus wie einen Peripheriekomponenten-Zwischenverbindungs-Bus (z. B. PCI, PCI Express) verbunden sein. Die Berührungssensoren 125 können Berührungsschirmsensoren, Drucksensoren oder Fingerabdrucksensoren umfassen. Der drahtlose Sendeempfänger 126 kann ein Wi-Fi-Sendeempfänger, ein Bluetooth-Sendeempfänger oder ein Mobilfunknetz-Sendeempfänger wie etwa ein 3G-, 4G- oder Langzeitzentwicklungs-Sendeempfänger (LTE-Sendeempfänger) sein. Die Firmware-Schnittstelle 128 ermöglicht die Kommunikation mit System-Firmware und kann beispielsweise eine vereinheitlichte erweiterbare Firmware-Schnittstelle (UEFI) sein. Der Netzcontroller 134 kann eine Netzverbindung zu einem drahtgebundenen Netz ermöglichen. In einigen Ausführungsformen koppelt ein Hochleistungs-Netzcontroller (nicht gezeigt) mit dem Schnittstellenbus 110. Der Audiocontroller 146 ist in einer Ausführungsform ein Mehrkanal-Hochdefinitions-Audiocontroller. In einer Ausführungsform umfasst das System 100 einen optionalen Alt-E/A-Controller 140 zum Koppeln von Alt-Vorrichtungen (z. B. Personal-System-2-Vorrichtungen (PS/2-Vorrichtungen)) an das System. Der Plattformcontroller-Hub 130 kann auch mit einem oder mehreren Controllern des universellen seriellen Busses (USB-Controllern) 142 verbunden sein, um Eingabevorrichtungen wie Kombinationen aus Tastatur und Maus 143, eine Kamera 144 oder andere USB-Eingabevorrichtungen zu verbinden.
  • Es versteht sich, dass das gezeigte System 100 beispielhaft und nicht einschränkend ist, weil andere Typen von Datenverarbeitungssystemen, die anders konfiguriert sind, ebenfalls verwendet werden können. Zum Beispiel kann eine Instanz des Speichercontrollers 116 und des Plattformcontroller-Hubs 130 in einen diskreten externen Grafikprozessor wie etwa den externen Grafikprozessor 112 integriert sein. In einer Ausführungsform kann der Plattformcontroller-Hub 130 und/oder der Speichercontroller 160 außerhalb des einen oder der mehreren Prozessoren 102 sein. Zum Beispiel kann das System 100 einen externen Speichercontroller 116 und Plattformcontroller-Hub 130 umfassen, der als ein Speichercontroller-Hub und Peripheriekomponenten-Controller-Hub innerhalb eines System-Chipsatzes, der mit dem einen oder den mehreren Prozessoren 102 in Kommunikation steht, ausgelegt sein kann.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors 200 mit einem oder mehreren Prozessorkernen 202A-N, einem integrierten Speichercontroller 214 und einem integrierten Grafikprozessor 208. Die Elemente von 2 mit den gleichen Bezugszeichen (oder Namen) wie die Elemente von irgendeiner anderen Figur hier können auf eine Art und Weise arbeiten oder funktionieren, die der an anderer Stelle hier beschriebenen ähnlich ist, sind jedoch nicht darauf beschränkt. Der Prozessor 200 kann zusätzliche Kerne bis zu und einschließlich des zusätzlichen Kerns 202N umfassen, die durch die gestrichelten Kästen dargestellt sind. Jeder der Kerne 202A-N umfasst eine oder mehrere interne Cache-Einheiten 204A-N. In einer Ausführungsform hat jeder Kern auch auf eine oder mehrere gemeinsam genutzte Cache-Einheiten 206 Zugriff.
  • Die internen Cache-Einheiten 202A-N und die gemeinsamen Cache-Einheiten 206 stellen eine Cache-Speicherhierarchie innerhalb des Prozessors 200 dar. Die Cache-Speicherhierarchie kann mindestens eine Ebene eines Befehls- und Daten-Caches in jedem Kern und eine oder mehrere Ebenen von mehrere Caches einer mittleren Ebene wie z. B. Ebene 2 (L2), Ebene 3 (L3), Ebene 4 (L4) oder Caches anderer Ebenen umfassen, wobei die höchste Ebene des Caches vor dem externen Speicher als der LLC klassifiziert ist. In einer Ausführungsform hält eine Cache-Kohärenz-Logik die Kohärenz zwischen den verschiedenen Cache-Einheiten 206 und 204A-N aufrecht.
  • In einigen Ausführungsformen kann der Prozessor 200 auch einen Satz von einem oder mehreren Buscontrollereinheiten 216 und einen Systemagentenkern 210 umfassen. Der eine oder die mehreren Buscontrollereinheiten verwalten einen Satz von Peripheriebussen wie etwa einen oder mehrere PCI- oder PCI-Express-Busse. Der Systemagentenkern 210 bietet Verwaltungsfunktionen für die verschiedenen Prozessorkomponenten. In einigen Ausführungsformen umfasst der Systemagentenkern 210 einen oder mehrere integrierte Speichercontroller 214, die den Zugriff auf verschiedene externe Speichervorrichtungen (nicht gezeigt) verwalten.
  • In einigen Ausführungsformen weisen ein oder mehrere der Kerne 202A-N eine Unterstützung für simultane Mehrsträngigkeit auf. In solchen Ausführungsformen umfasst der Systemagentenkern 210 Komponenten zum Koordinieren und Betreiben der Kerne 202A-N während der Mehrstrangverarbeitung. Der Systemagentenkern 210 kann zusätzlich eine Leistungssteuereinheit (PCU) umfassen, die Logik und die Komponenten enthält, um den Leistungsaufnahmezustand der Kerne 202A-N und des Grafikprozessors 208 zu regulieren.
  • In einigen Ausführungsformen umfasst der Prozessor 200 zusätzlich einen Grafikprozessor 208, um Grafikverarbeitungsoperationen auszuführen. In einigen Ausführungsformen ist der Grafikprozessor 208 mit dem Satz von gemeinsam genutzten Cache-Einheiten 206 und dem Systemagentenkern 210 einschließlich des einen oder der mehreren integrierte Speichercontroller 214 gekoppelt. In einigen Ausführungsformen umfasst der Systemagentenkern 210 einen Anzeigecontroller 211, um die Grafikprozessorausgabe an eine oder mehrere gekoppelte Anzeigen zu auszugeben. In einigen Ausführungsformen kann der Anzeigecontroller 211 zudem ein separates Modul sein, das mit dem Grafikprozessor über mindestens eine Zwischenverbindung gekoppelt ist, oder kann in den Grafikprozessor 208 integriert sein.
  • In einigen Ausführungsformen wird eine ringbasierte Zwischenverbindungseinheit 212 verwendet, um die internen Komponenten des Prozessors 200 zu koppeln. Jedoch kann eine alternative Zwischenverbindungseinheit wie beispielsweise eine Punkt-zu-Punkt-Zwischenverbindung, eine geschaltete Zwischenverbindung oder andere Techniken, einschließlich Techniken, die im Stand der Technik gut bekannt sind, verwendet werden. In einigen Ausführungsformen ist der Grafikprozessor 208 mit der Ringzwischenverbindung 212 über einen E/A-Link 213 gekoppelt.
  • Der beispielhafte E/A-Link 213 stellt mindestens eine von mehreren Arten von E/A-Zwischenverbindungen dar, darunter eine Baugruppen-E/A-Zwischenverbindung, die die Kommunikation zwischen verschiedenen Prozessorkomponenten ermöglicht, und ein eingebettetes Hochleistungs-Speichermodul 218 wie etwa ein eDRAM-Modul. In einigen Ausführungsformen verwenden jeder der Kerne 202-N und der Grafikprozessor 208 die eingebetteten Speichermodule 218 als gemeinsamen Cache der letzten Ebene.
  • In einigen Ausführungsformen sind die Verarbeitungskerne 202A-N homogene Kerne, die die gleiche Befehlssatzarchitektur ausführen. In einer weiteren Ausführungsform sind die Verarbeitungskerne 202A-N heterogen in Bezug auf die Befehlssatzarchitektur (ISA), wobei einer oder mehrere der Kerne 202A-N einen ersten Befehlssatz ausführen, während mindestens einer der anderen Kerne einen Teilsatz des ersten Befehlssatzes oder einen anderen Befehlssatz ausführt. In einer Ausführungsform sind die Prozessorkerne 202A-202N hinsichtlich der Mikroarchitektur heterogen, wobei ein oder mehrere Kerne mit einer relativ höheren Leistungsaufnahme mit einem oder mehreren Leistungskernen mit einer geringeren Leistungsaufnahme gekoppelt sind. Zusätzlich kann der Prozessor 200 auf einem oder mehreren Chips oder als eine integrierte Ein-Chip-System-Schaltung (SOC-Schaltung) mit den dargestellten Komponenten zusätzlich zu den anderen Komponenten implementiert sein.
  • 3 ist ein Blockdiagramm eines Grafikprozessors 300, der eine diskrete Grafikverarbeitungseinheit sein kann oder ein Grafikprozessor sein kann, der in mehrere Prozessorkerne integriert ist. In einigen Ausführungsformen kommuniziert der Grafikprozessor über eine speicherabgebildete E/A-Schnittstelle mit Registern auf dem Grafikprozessor und über Befehle, die in dem Prozessorspeicher platziert sind. In einigen Ausführungsformen umfasst der Grafikprozessor 300 eine Speicherschnittstelle 314, um auf den Speicher zuzugreifen. Die Speicherschnittstelle 314 kann eine Schnittstelle zu lokalem Speicher, einem oder mehreren internen Caches, einem oder mehreren gemeinsam genutzten externen Caches und/oder zu Systemspeicher sein.
  • In einigen Ausführungsformen umfasst der Grafikprozessor 300 auch einen Anzeigecontroller 302, um Anzeigeausgabedaten an eine Anzeigevorrichtung 320 zu auszugeben. Der Anzeigecontroller 302 umfasst Hardware für eine oder mehrere Überlagerungsebenen für die Anzeige und die Komposition von mehreren Schichten von Video- oder Anwenderschnittstellenelementen. Die Anzeigevorrichtung 320 kann eine interne oder externe Anzeigevorrichtung sein. In einer Ausführungsform ist die Anzeigevorrichtung 320 eine am Kopf angebrachte Anzeigevorrichtung wie etwa eine Anzeigevorrichtung für virtuelle Realität (VR-Anzeigevorrichtung) oder eine Anzeigevorrichtung für erweiterte Realität (AR-Anzeigevorrichtung). In einer Ausführungsform umfasst der Grafikprozessor 300 eine Video-Codec-Maschine 306 zum Codieren, Decodieren oder Transcodieren von Medien in, aus oder zwischen einen oder mehreren Mediencodierungsformaten, einschließlich, aber nicht beschränkt auf, Formate der Expertengruppe für bewegte Bilder (MPEG) wie MPEG-2, Fortgeschrittene Videocodierformate (AVC) wie H.264/MPEG-4 AVC sowie Society of Motion Picture & Television Engineers (SMPTE) 421M/VC-1 und Formate der gemeinsamen Fotografieexpertengruppe (JPEG) wie JPEG und Motion JPEG (MJPEG).
  • In einigen Ausführungsformen umfasst der Grafikprozessor 300 eine Blockbildübertragungs-Maschine (BLIT-Maschine) 304, um zweidimensionale Rasterungs-Operationen (2D-Rasterungs-Operationen), die beispielsweise Bitgrenzen-Blockübertragungen umfassen, durchzuführen. Jedoch werden in einer Ausführungsform 2D-Grafikoperationen unter Verwendung einer oder mehrerer Komponenten der Grafikverarbeitungsmaschine (GPE) 310 durchgeführt. In einigen Ausführungsformen ist die GPE 310 eine Rechenmaschine zum Ausführen von Grafikoperationen, die dreidimensionale Grafikoperationen (3D-Grafikoperationen) und Medienoperationen umfassen.
  • In einigen Ausführungsformen umfasst die GPE 310 eine 3D-Pipeline 312 zum Durchführen von 3D-Operationen wie etwa dem Rendern dreidimensionaler Bilder und Szenen unter Verwendung von Verarbeitungsfunktionen, die mit 3D-Grundformen (z. B. Rechteck, Dreieck usw.) arbeiten. Die 3D-Pipeline 312 umfasst programmierbare und feste Funktionselemente, die verschiedene Aufgaben innerhalb des Elements erfüllen und/oder Ausführungsstränge zu einem 3D/Medien-Teilsystem 315 erzeugen. Obwohl die 3D-Pipeline 312 verwendet werden kann, um Medienoperationen auszuführen, umfasst eine Ausführungsform der GPE 310 auch eine Medienpipeline 316, die speziell verwendet wird, um Medienoperationen wie beispielsweise Videonachbearbeitung und Bildverbesserung durchzuführen.
  • In einigen Ausführungsformen umfasst die Medienpipeline 316 Logikeinheiten, die eine feste Funktion aufweisen oder programmierbar sind, um eine oder mehrere spezialisiertere Medienoperationen wie eine Videodecodierbeschleunigung, eine Videoentschachtelung und eine Videocodierbeschleunigung anstelle oder im Auftrag der Videocodec-Maschine 306 durchzuführen. In einigen Ausführungsformen umfasst die Medienpipeline 316 zusätzlich eine Strangerzeugungseinheit zum Erzeugen von Strängen für die Ausführung auf dem 3D/Medien-Teilsystem 315. Die erzeugten Stränge führen Berechnungen für die Medienoperationen auf einer oder mehreren Grafikausführungseinheiten in dem 3D/Medien-Teilsystem aus.
  • In einigen Ausführungsformen umfasst das 3D/Medien-Teilsystem 315 eine Logik zum Ausführen von Strängen, die von der 3D-Pipeline 312 und der Medienpipeline 316 erzeugt werden. In einer Ausführungsform senden die Pipelines Strangausführungsanforderungen an das 3D/Medien-Teilsystem 315, das eine Strangabfertigungslogik zum Zuteilen und Entsenden der verschiedenen Anforderungen an verfügbare Strangausführungsbetriebsmittel umfasst. Die Ausführungsbetriebsmittel umfassen eine Anordnung von Grafikausführungseinheiten, um die 3D- und Medien-Stränge zu verarbeiten. In einigen Ausführungsformen umfasst das 3D/Medien-Teilsystem 315 einen oder mehrere interne Caches für Strangbefehle und -daten. In einigen Ausführungsformen umfasst das Teilsystem zudem einen gemeinsamen Speicher, der Register und adressierbaren Speicher umfasst, um Daten zwischen Strängen zu teilen und Ausgabedaten zu speichern.
  • Grafikverarbeitungsmaschine
  • 4 ist ein Blockdiagramm einer Grafikverarbeitungsmaschine 410 für einen Grafikprozessor gemäß einigen Ausführungsformen. In einer Ausführungsform ist die Grafikverarbeitungsmaschine (GPE) 410 eine Version der GPE 310, die in 3 gezeigt ist. Elemente von 4 mit den gleichen Bezugszeichen (oder Namen) wie die Elemente irgendeiner anderen Figur hier können auf eine Art und Weise arbeiten oder funktionieren, die der an anderer Stelle hier beschriebenen ähnlich ist, sind jedoch nicht darauf beschränkt. Beispielsweise sind die 3D-Pipeline 312 und die Medienpipeline 316 von 3 dargestellt. Die Medienpipeline 316 ist in einigen Ausführungsformen der GPE 410 optional und kann nicht explizit in der GPE 410 enthalten sein. Beispielsweise und in mindestens einer Ausführungsform ist ein separater Medien- und/oder Bildprozessor mit der GPE 410 gekoppelt.
  • In einigen Ausführungsformen ist die GPE 410 mit einem Befehls-Streamer 403 gekoppelt, der einen Befehlsstrom für die GPE 3D und/oder die Medienpipelines 316 liefert. In einigen Ausführungsformen ist der Befehls-Streamer 403 mit einem Speicher, der ein Systemspeicher sein kann, oder einem oder mehreren des internen Cache-Speichers und des gemeinsam genutzten Cache-Speichers gekoppelt. In einigen Ausführungsformen empfängt der Befehls-Streamer 403 Befehle von dem Speicher und sendet die Befehle an die 3D-Pipeline 312 und/oder die Medienpipeline 316. Die Befehle sind Anweisungen, die aus einem Ringpuffer abgerufen werden, der Befehle für die 3D-Pipeline 312 und die Medienpipeline 316 speichert. In einer Ausführungsform kann der Ringpuffer zusätzlich Stapelbefehlspuffer umfassen, die Stapel von mehreren Befehlen speichern. Die Befehle für die 3D-Pipeline 312 können auch Verweise auf Daten enthalten, die im Speicher gespeichert sind, wie beispielsweise Vertex- und Geometriedaten für die 3D-Pipeline 312 und/oder Bilddaten und Speicherobjekte für die Medienpipeline 316, ohne darauf beschränkt zu sein. Die 3D-Pipeline 312 und die Medienpipeline 316 verarbeiten die Befehle und Daten durch Ausführen von Operationen über Logik in den jeweiligen Pipelines oder durch Versenden eines oder mehrerer Ausführungsstränge an eine Grafikkernanordnung 414. In einer Ausführungsform enthält die Grafikkernanordnung 414 einen oder mehrere Blöcke von Grafikkernen (z. B. Grafikkern(e) 415A, Grafikkern(e) 415B), wobei jeder Block einen oder mehrere Grafikkerne umfasst. Jeder Grafikkern umfasst eine Reihe von Grafikausführungsbetriebsmitteln, die allgemeine und grafikspezifische Ausführungslogik zum Ausführen von Grafik- und Rechenoperationen sowie Texturverarbeitung mit festen Funktionen und/oder maschinelles Lernen und Beschleunigungslogik für künstliche Intelligenz umfassen.
  • In verschiedenen Ausführungsformen umfasst die 3D-Pipeline 312 eine Logik mit fester Funktion oder eine programmierbare Logik zum Verarbeiten eines oder mehrerer Schattierer-Programme wie z. B. Vertex-Schattierer, Geometrie-Schattierer, Pixel-Schattierer, Fragment-Schattierer, Rechen-Schattierer oder andere Schattierer-Programme, indem sie die Befehle verarbeitet und Ausführungsstränge an die Grafikkernanordnung 414 absendet. Die Grafikkernanordnung 414 stellt einen vereinheitlichten Block von Ausführungsbetriebsmitteln für die Verarbeitung dieser Schattierer-Programme bereit. Die Mehrzweckausführungslogik (z. B. Ausführungseinheiten) innerhalb des einen oder der mehreren Grafikkerne 415A-414B der Grafikkernanordnung 414 umfasst die Unterstützung verschiedener 3D-API-Schattierer-Sprachen und kann mehrere gleichzeitige Ausführungsstränge, die mehreren Schattierern zugeordnet sind, ausführen.
  • In einigen Ausführungsformen umfasst die Grafikkernanordnung 414 auch eine Ausführungslogik zum Ausführen von Medienfunktionen wie z. B. Video- und/oder Bildverarbeitung. In einer Ausführungsform umfassen die Ausführungseinheiten zusätzlich eine Allzwecklogik, die programmierbar ist, um zusätzlich zu Grafikverarbeitungsoperationen parallele Allzweck-Rechenoperationen durchzuführen. Die Allzwecklogik kann Verarbeitungsoperationen parallel oder in Verbindung mit der Allzwecklogik innerhalb des Prozessorkerns (der Prozessorkerne) 107 von 1 oder des Kerns 202A-202N wie in 2 ausführen.
  • Ausgabedaten, die von Strängen erzeugt werden, die auf der Grafikkernanordnung 414 ausgeführt werden, können Daten an einen Speicher in einem vereinheitlichten Rückgabepuffer (URB) 418 ausgeben. Der URB 418 kann Daten für mehrere Stränge speichern. In einigen Ausführungsformen kann der URB 418 verwendet werden, um Daten zwischen verschiedenen auf der Grafikkernanordnung 414 ausgeführten Strängen zu senden. In einigen Ausführungsformen kann der URB 418 zusätzlich zur Synchronisation zwischen Strängen auf der Grafikkernanordnung und für die Logik fester Funktionen innerhalb der gemeinsam genutzten Funktionslogik 420 verwendet werden.
  • In einigen Ausführungsformen ist die Grafikkernanordnung 414 basierend auf der gewünschten Leistungsaufnahme und Rechenleistung der GPE 410 so skalierbar, dass die Anordnung eine variable Anzahl von Grafikkernen enthält, die jeweils eine variable Anzahl von Ausführungseinheiten aufweisen. Die Ausführungsbetriebsmittel sind in einer Ausführungsform dynamisch skalierbar, so dass Ausführungsbetriebsmittel nach Bedarf aktiviert oder deaktiviert werden können.
  • Die Grafikkernanordnung 414 ist mit einer gemeinsam genutzten Funktionslogik 420 gekoppelt, die mehrere Betriebsmittel enthält, die unter den Grafikkernen in der Grafikkernanordnung gemeinsam genutzt werden. Die gemeinsam genutzten Funktionen innerhalb der gemeinsam genutzten Funktionslogik 420 sind Hardwarelogikeinheiten, die für das Grafikkernanordnung 414 eine spezialisierte Zusatzfunktionalität bereitstellen. In verschiedenen Ausführungsformen umfasst die gemeinsam genutzte Funktionslogik 420 einen Abtaster 421, Mathematik 422 und eine Zwischenstrangkommunikations-Logik (ITC-Logik) 423, ist jedoch nicht darauf beschränkt. Zusätzlich implementieren einige Ausführungsformen einen oder mehrere Caches 425 in der gemeinsam genutzten Funktionslogik 420.
  • Eine gemeinsam genutzte Funktion wird implementiert, wenn der Bedarf an einer bestimmten spezialisierten Funktion für die Aufnahme in die Grafikkernanordnung 414 unzureichend ist. Stattdessen wird eine einzelne Instanz der spezialisierten Funktion als eigenständige Einheit in der gemeinsam genutzten Funktionslogik 420 implementiert und wird von den Ausführungsbetriebsmitteln innerhalb der Grafikkernanordnung 414 gemeinsam genutzt. Der genaue Satz von Funktionen, die unter der Grafikkernanordnung 414 gemeinsam genutzt werden und in der Grafikkernanordnung 414 enthalten sind, variiert zwischen Ausführungsformen. In einigen Ausführungsformen können bestimmte gemeinsam genutzte Funktionen in der gemeinsam genutzten Funktionslogik 420, die in großem Umfang von der Grafikkernanordnung 414 verwendet werden, in der gemeinsam genutzten Funktionslogik 416 in der Grafikkernanordnung 414 enthalten sein. In verschiedenen Ausführungsformen kann die gemeinsam genutzte Funktionslogik 416 in der Grafikkernanordnung 414 einen Teil oder die gesamte Logik innerhalb der gemeinsam genutzten Funktionslogik 420 umfassen. In einer Ausführungsform können alle Logikelemente innerhalb der gemeinsam genutzten Funktionslogik 420 innerhalb der gemeinsam genutzten Funktionslogik 416 der Grafikkernanordnung 414 dupliziert sein. In einer Ausführungsform ist die gemeinsam genutzte Funktionslogik 420 zugunsten der gemeinsam genutzten Funktionslogik 416 innerhalb der Grafikkernanordnung 414 weggelassen.
  • 5 ist ein Blockdiagramm von Hardwarelogik eines Grafikprozessorkerns 500 gemäß einigen hier beschriebenen Ausführungsformen. Elemente von 5, die die gleichen Bezugszeichen (oder Namen) wie die Elemente von irgendeiner anderen Figur hier aufweisen, können auf eine beliebige Art und Weise, die mit der an einer anderen Stelle hier beschriebenen vergleichbar ist, wirken oder funktionieren, ohne darauf beschränkt zu sein. Der veranschaulichte Grafikprozessorkern 500 ist in einigen Ausführungsformen innerhalb der Grafikkernanordnung 414 von 4 enthalten. Der Grafikprozessorkern 500, der gelegentlich als ein Kern-Slice bezeichnet wird, kann ein oder mehrere Grafikkerne innerhalb eines modularen Grafikprozessors sein. Der Grafikprozessorkern 500 ist beispielhaft für einen Grafikkern-Slice und ein hier beschriebener Grafikprozessor kann basierend auf gewünschten Leistungsaufnahme- und Rechenleistungshüllkurven mehrere Grafikkern-Slices umfassen. Jeder Grafikkern 500 kann einen Block mit fester Funktion 530 umfassen, der mit mehreren Teilkernen 501A-501F gekoppelt ist, die auch als Unter-Slices bezeichnet werden, die modulare Blöcke von Universallogik und Logik mit fester Funktion umfassen.
  • In einigen Ausführungsformen umfasst der Block mit fester Funktion 530 eine Geometrie-Pipeline/Pipeline mit fester Funktion 536, die von allen Teilkernen in dem Grafikprozessor 500 gemeinsam genutzt werden kann, beispielsweise in Grafikprozessorimplementierungen mit niedrigerer Rechenleistung und/oder mit niedrigerer Leistungsaufnahme. In verschiedenen Ausführungsformen umfasst die Geometrie-Pipeline/Pipeline mit fester Funktion 536 eine 3D-Pipeline mit fester Funktion (z. B. die 3D-Pipeline 312 wie in 3 und 4), eine Video-Frontend-Einheit, einen Strangersteller und Strangabfertiger und einen Verwalter eines vereinheitlichten Rücklaufpuffers, der vereinheitlichte Rücklaufpuffer wie den vereinheitlichten Rücklaufpuffer 418 von 4 verwaltet.
  • In einer Ausführungsform umfasst der Block mit fester Funktion 530 zudem eine Grafik-SoC-Schnittstelle 537, einen Grafikmikrocontroller 538 und eine Medienpipeline 539. Die Grafik-SoC-Schnittstelle 537 stellt eine Schnittstelle zwischen dem Grafikkern 500 und anderen Prozessorkernen innerhalb einer integrierten Ein-Chip-System-Schaltung bereit. Der Grafikmikrocontroller 538 ist ein programmierbarer Unterprozessor, der konfigurierbar ist, um verschiedene Funktionen des Grafikprozessors 500 einschließlich Strangabfertigung, Planung und Vorwegnahme zu verwalten. Die Medienpipeline 539 (z. B. die Medienpipeline 316 von 3 und 4) umfasst Logik zum Unterstützen des Decodierens, Codierens, Vorverarbeitens und/oder Nachverarbeitens von Multimedia-Daten einschließlich Bild- und Videodaten. Die Medienpipeline 539 implementiert Medienoperationen über Anforderungen zum Berechnen oder Abtasten von Logik innerhalb der Teilkerne 501-501F.
  • In einer Ausführungsform ermöglicht es die SoC-Schnittstelle 537 dem Grafikkern 500, mit Universalanwendungsprozessorkernen (z. B. CPUs) und/oder anderen Komponenten innerhalb eines SoC einschließlich Speicherhierarchie-Elementen wie einem gemeinsam genutzten Cache-Speicher letzter Ebene, dem System-RAM und/oder eingebettetem DRAM auf dem Chip oder in der Baugruppe zu kommunizieren. Die SoC-Schnittstelle 537 kann auch eine Kommunikation mit Vorrichtungen mit fester Funktion innerhalb des SoC wie etwa Kamera-Bildgebungs-Pipelines ermöglichen und ermöglicht die Verwendung von globalen Speicheratomen, die zwischen dem Grafikkern 500 und CPUs innerhalb des SoC geteilt werden können, und/oder implementiert diese. Die SoC-Schnittstelle 537 kann auch Leistungsverwaltungssteuerungen für den Grafikkern 500 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikkerns 500 und anderen Taktdomänen innerhalb des SoC ermöglichen. In einer Ausführungsform ermöglicht die SoC-Schnittstelle 537 den Empfang von Befehlspuffern von einem Befehls-Streamer und globalen Strangabfertiger, die dazu ausgelegt sind, Befehle und Anweisungen zu jedem von einem oder mehreren Grafikkernen innerhalb eines Grafikprozessors zu liefern. Die Befehle und Anweisungen können zu der Medienpipeline 539 gesendet werden, wenn Medienoperationen durchzuführen sind, oder zu einer Geometrie-Pipeline und Pipeline mit fester Funktion (z. B. der Geometrie-Pipeline und Pipeline mit fester Funktion 536, der Geometrie-Pipeline und Pipeline mit fester Funktion 514) gesendet werden, wenn Grafikverarbeitungsoperationen durchzuführen sind.
  • Der Grafikmikrocontroller 538 kann dazu ausgelegt sein, verschiedene Planungs- und Verwaltungsaufgaben für den Grafikkern 500 durchzuführen. In einer Ausführungsform kann der Grafikmikrocontroller 538 eine Grafik- und/oder Rechenarbeitslastplanung auf den verschiedenen parallelen Grafikmaschinen innerhalb der Ausführungseinheitsanordnungen (EU-Anordnungen) 502A-502F, 504A-504F innerhalb der Teilkerne 501A-501F durchführen. In diesem Planungsmodell kann Host-Software, die auf einem CPU-Kern eines SoC ausgeführt wird, das den Grafikkern 500 umfasst, Arbeitslasten eine von mehreren Grafikprozessor-Türklingeln übermitteln, wodurch eine Planungsoperation auf der geeigneten Grafikmaschine aufgerufen wird. Planungsoperationen umfassen ein Bestimmen, welche Arbeitslast als Nächstes ausgeführt wird, ein Übermitteln einer Arbeitslast an einen Befehls-Streamer, ein Vorwegnehmen vorhandener Arbeitslasten, die auf einer Maschine ausgeführt werden, ein Überwachen des Fortschritts einer Arbeitslast und ein Benachrichtigen von Host-Software, wenn eine Arbeitslast abgeschlossen ist. In einer Ausführungsform kann der Grafikmikrocontroller 538 auch Zustände mit niedriger Leistungsaufnahme oder Ruhezustände für den Grafikkern 500 unterstützen, wodurch dem Grafikkern 500 die Fähigkeit gegeben wird, Register innerhalb des Grafikkerns 500 über Übergänge zu Zuständen mit niedriger Leistungsaufnahme hinweg unabhängig von dem Betriebssystem und/oder der Grafiktreibersoftware auf dem System zu speichern und wiederherzustellen.
  • Der Grafikkern 500 kann mehr oder weniger als die veranschaulichten Teilkerne 501A-501F, bis zu N modulare Teilkerne, aufweisen. Für jeden Satz von N Teilkernen kann der Grafikkern 500 auch gemeinsam genutzte Funktionslogik 510, gemeinsam genutzten Speicher und/oder Cache-Speicher 512, eine Geometrie-Pipeline/Pipeline mit fester Funktion 514 sowie zusätzliche Logik mit fester Funktion 516 zum Beschleunigen verschiedener Grafik- und Rechenverarbeitungsoperationen umfassen. Die gemeinsam genutzte Funktionslogik 510 kann Logikeinheiten umfassen, die mit der gemeinsam genutzten Funktionslogik 420 von 4 (z. B. Abtaster-, Mathematik- und/oder Zwischenstrangkommunikations-Logik) verbunden sind und die von allen N Teilkernen innerhalb des Grafikkerns 500 gemeinsam genutzt werden können. Der gemeinsam genutzte und/oder Cache-Speicher 512 kann ein Cache letzter Ebene für den Satz von N Teilkernen 501A-501F innerhalb des Grafikkerns 500 sein und kann auch als gemeinsam genutzter Speicher dienen, der mehreren Teilkernen zugänglich ist. Die Geometrie-Pipeline/Pipeline mit fester Funktion 514 kann anstelle der Geometrie-Pipeline/Pipeline mit fester Funktion 536 innerhalb des Blocks mit fester Funktion 530 enthalten sein und kann die gleichen oder ähnliche Logikeinheiten umfassen.
  • In einer Ausführungsform umfasst der Grafikkern 500 eine zusätzliche Logik mit fester Funktion 516, die verschiedene Beschleunigungslogik mit fester Funktion zur Verwendung durch den Grafikkern 500 umfassen kann. In einer Ausführungsform umfasst die zusätzliche Logik mit fester Funktion 516 eine zusätzliche Geometrie-Pipeline zur Verwendung bei Nur-Positions-Schattierung. Bei Nur-Positions-Schattierung sind zwei Geometrie-Pipelines vorhanden, die vollständige Geometrie-Pipeline innerhalb der Geometrie-Pipeline/Pipeline mit fester Funktion 516, 536 und eine Ausschuss-Pipeline, die eine zusätzliche Geometrie-Pipeline ist, die innerhalb der zusätzlichen Logik mit fester Funktion 516 enthalten sein kann. In einer Ausführungsform ist die Ausschuss-Pipeline eine gekürzte Version der vollständigen Geometrie-Pipeline. Die vollständige Pipeline und die Ausschuss-Pipeline können verschiedene Instanzen der gleichen Anwendung ausführen, wobei jede Instanz einen separaten Kontext aufweist. Nur-Positions-Schattierung kann lange Ausschuss-Läufe von verworfenen Dreiecken verbergen, wodurch es in einigen Fällen ermöglicht wird, dass die Schattierung früher abgeschlossen wird. Zum Beispiel und in einer Ausführungsform kann die Ausschuss-Pipeline-Logik innerhalb der zusätzlichen Logik mit fester Funktion 516 Positions-Schattierer parallel zu der Hauptanwendung ausführen und erzeugt im Allgemeinen kritische Ergebnisse schneller als die vollständige Pipeline, da die Ausschuss-Pipeline nur das Positionsattribut der Vertices abruft und schattiert, ohne eine Rasterung und ein Rendern der Pixel in den Frame-Speicher durchzuführen. Die Ausschuss-Pipeline kann die erzeugten kritischen Ergebnisse verwenden, um Sichtbarkeitsinformationen für alle Dreiecke unabhängig davon zu berechnen, ob diese Dreiecke aussortiert werden. Die vollständige Pipeline (die in diesem Fall als eine Replay-Pipeline bezeichnet werden kann) kann die Sichtbarkeitsinformationen verbrauchen, um die aussortierten Dreiecke zu überspringen, um nur die sichtbaren Dreiecke zu schattieren, die letztlich an die Rasterungsphase übergeben werden.
  • In einer Ausführungsform kann die zusätzliche Logik mit fester Funktion 516 auch Beschleunigungslogik für maschinelles Lernen wie Matrixmultiplikationslogik mit fester Funktion für Implementierungen, die Optimierungen für Training und Inferenz für maschinelles Lernen beinhalten, umfassen.
  • Innerhalb jedes Grafikteilkerns 501A-501 F ist ein Satz von Ausführungsbetriebsmitteln enthalten, die verwendet werden können, um Grafik-, Medien- und Rechenoperationen als Antwort auf Anforderungen von einer Grafik-Pipeline, einer Medienpipeline oder Schattiererprogrammen durchzuführen. Die Grafikteilkerne 501A-501F umfassen mehrere EU-Anordnungen 502A-502F, 504A-504F, Strangabfertigungs- und Zwischenstrangkommunikations-Logik (TD/IC-Logik) 503A-503F, einen 3D-Abtaster (z. B. Textur-Abtaster) 505A-505F, einen Medienabtaster 506A-506F, einen Schattierer-Prozessor 507A-507F und einen gemeinsam genutzten lokalen Speicher (SLM) 508A-508F. Die EU-Anordnungen 502A-502F, 504A-504F umfassen jeweils mehrere Ausführungseinheiten, die Universalgrafikverarbeitungseinheiten sind, die dazu in der Lage sind, logische Gleitkomma- und Ganzzahl-/Festkommaoperationen für eine Grafik-, Medien- oder Rechenoperation einschließlich Grafik-, Medien- oder Rechen-Schattierer-Programmen durchzuführen. Die TD/IC-Logik 503A-503F führt lokale Strangabfertigungs- und Strangsteuerungsoperationen für die Ausführungseinheiten innerhalb eines Teilkerns durch und ermöglicht eine Kommunikation zwischen Strängen, die auf den Ausführungseinheiten des Teilkerns ausgeführt werden. Der 3D-Abtaster 505A-505F kann Texturdaten oder andere auf 3D-Grafik bezogene Daten in einen Speicher lesen. Der 3D-Abtaster kann Texturdaten basierend auf einem konfigurierten Abtastzustand und dem Texturformat, das einer gegebenen Textur zugeordnet ist, verschieden lesen. Der Medienabtaster 506A-506F kann ähnliche Leseoperationen basierend auf dem Typ und Format, der bzw. das Mediendaten zugeordnet ist, durchführen. In einer Ausführungsform kann jeder Grafikteilkern 501A-501F abwechselnd einen vereinheitlichten 3D- und Medienabtaster umfassen. Stränge, die auf den Ausführungseinheiten innerhalb jedes der Teilkerne 501A-501F ausgeführt werden, können den gemeinsam genutzten lokalen Speicher 508A-508F innerhalb jedes Teilkerns verwenden, um es zu ermöglichen. dass Stränge, die innerhalb einer Strang-Gruppe ausgeführt werden, unter Verwendung eines gemeinsamen Pools von chipinternem Speicher ausgeführt werden.
  • Ausführungseinheiten
  • 6A-6B zeigen eine Strangausführungslogik 600, die eine Anordnung von Verarbeitungselementen aufweist, die in einem Grafikprozessorkern eingesetzt werden, gemäß hier beschriebenen Ausführungsformen. Elemente von 6A-6B, die die gleichen Bezugszeichen (oder Namen) wie die Elemente von irgendeiner anderen Figur hier aufweisen, können auf eine beliebige Art und Weise, die mit der an einer anderen Stelle hier beschriebenen vergleichbar ist, wirken oder funktionieren, ohne darauf beschränkt zu sein. 6A zeigt eine Übersicht über die Strangausführungslogik 600, die eine Variante der Hardwarelogik umfassen kann, die mit jedem Teilkern 501A-501F von 5 veranschaulicht ist. 6B zeigt beispielhafte interne Einzelheiten einer Ausführungseinheit.
  • Wie es in 6A dargestellt ist, umfasst die Strangausführungslogik 600 in einigen Ausführungsformen einen Schattierer-Prozessor 602, einen Strangabfertiger 604, einen Befehls-Cache 606, eine skalierbare Ausführungseinheitsanordnung, die mehrere Ausführungseinheiten 608A-608N umfasst, einen Abtaster 610, einen Daten-Cache 612 und einen Daten-Port 614. In einer Ausführungsform kann die skalierbare Ausführungseinheitsanordnung dynamisch skalieren, indem eine oder mehrere Ausführungseinheiten (z. B. eine beliebige der Ausführungseinheiten 608A, 608B, 608C, 608D bis 608N-1 und 608N) basierend auf den Rechenanforderungen einer Arbeitslast aktiviert oder deaktiviert werden. In einer Ausführungsform sind die enthaltenen Komponenten über eine Zwischenverbindungsstruktur, die mit jeder der Komponenten verbunden ist, miteinander verbunden. In einigen Ausführungsformen umfasst die Strangausführungslogik 600 eine oder mehrere Verbindungen zu Speicher wie Systemspeicher oder Cache-Speicher durch den Befehls-Cache 606, den Daten-Port 614, den Abtaster 610 und/oder die Ausführungseinheiten 608A-608N. In einigen Ausführungsformen ist jede Ausführungseinheit (z. B. 608A) eine eigenständige programmierbare Universalrecheneinheit, die dazu in der Lage ist, mehrere gleichzeitige Hardwarestränge auszuführen und zugleich für jeden Strang mehrere Datenelemente parallel zu verarbeiten. In verschiedenen Ausführungsformen ist die Anordnung von Ausführungseinheiten 608A-608N so skalierbar, dass sie eine beliebige Anzahl von einzelnen Ausführungseinheiten umfasst.
  • In einigen Ausführungsformen werden die Ausführungseinheiten 608A-608N hauptsächlich verwendet, um Schattierer-Programme auszuführen. Ein Schattierer-Prozessor 602 kann die verschiedenen Schattierer-Programme verarbeiten und Ausführungsstränge, die den Schattierer-Programmen zugeordnet sind, über einen Strangabfertiger 604 abfertigen. In einer Ausführungsform umfasst der Strangabfertiger Logik zum Vermitteln von Stranginitiierungsanforderungen von den Grafik- und Medien-Pipelines und Instanziieren der angeforderten Stränge auf einer oder mehreren Ausführungseinheiten in den Ausführungseinheiten 608A-608N. Zum Beispiel kann eine Geometrie-Pipeline Vertex-, Tessellations- oder Geometrie-Schattierer zum Verarbeiten an die Strangausführungslogik senden. In einigen Ausführungsformen kann der Strangabfertiger 604 auch Laufzeit-Strangerstellungsanforderungen von den ausgeführten Schattierer-Programmen verarbeiten.
  • In einigen Ausführungsformen unterstützen die Ausführungseinheiten 608A-608N einen Befehlssatz, der native Unterstützung für viele Standard-3D-Grafik-Schattierer-Befehle umfasst, so dass Schattierer-Programme von Grafikbibliotheken (z. B. Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. Die Ausführungseinheiten unterstützen eine Vertex- und Geometrieverarbeitung (z. B. Vertex-Programme, Geometrieprogramme, Vertex-Schattierer), Pixelverarbeitung (z. B. Pixel-Schattierer, Fragment-Schattierer) und Universalverarbeitung (z. B. Rechen-und Medien-Schattierer). Jede der Ausführungseinheiten 608A-608N ist zur Ausführung mit Anwendung eines Befehls auf mehrere Datenströme (SIMD-Ausführung) mit mehrfacher Ausgabe in der Lage und ein mehrsträngiger Betrieb ermöglicht eine effiziente Ausführungsumgebung angesichts von Speicherzugriffen mit höherer Latenz. Jeder Hardware-Strang innerhalb jeder Ausführungseinheit weist einen dedizierten Registersatz für hohe Bandbreite und einen zugehörigen unabhängigen Strangzustand auf. Die Ausführung erfolgt durch mehrfaches Ausgeben je Takt an Pipelines, die zu Ganzzahlgleitkommaoperationen mit einfacher und doppelter Genauigkeit, SIMD-Verzweigungsfähigkeit, logischen Operationen, transzendenten Operationen und sonstigen Operationen in der Lage sind. Während des Wartens auf Daten aus Speicher oder von einer der gemeinsam genutzten Funktionen veranlasst eine Abhängigkeitslogik innerhalb der Ausführungseinheiten 608A-608N, dass ein wartender Strang im Ruhezustand bleibt, bis die angeforderten Daten zurückgegeben worden sind. Während sich der wartende Strang im Ruhezustand befindet, können Hardwarebetriebsmittel für die Verarbeitung von anderen Strängen verwendet werden. Zum Beispiel kann eine Ausführungseinheit während einer Verzögerung in Verbindung mit einer Vertex-Schattierer-Operation Operationen für einen Pixel-Schattierer, einen Fragment-Schattierer oder einen anderen Typ von Schattierer-Programm einschließlich eines anderen Vertex-Schattierers durchführen.
  • Jede Ausführungseinheit in den Ausführungseinheiten 608A-608N arbeitet mit Arrays von Datenelementen. Die Anzahl von Datenelementen ist die „Ausführungsgröße“ oder die Anzahl von Kanälen für den Befehl. Ein Ausführungskanal ist eine logische Ausführungseinheit für Datenelementzugriff, Maskierung und Flusssteuerung innerhalb von Befehlen. Die Anzahl von Kanälen kann von der Anzahl von arithmetischlogischen Einheiten (ALUs) oder Gleitkommaeinheiten (FPUs) für einen bestimmten Grafikprozessor unabhängig sein. In einigen Ausführungsformen unterstützen die Ausführungseinheiten 608A-608N Ganzzahl- und Gleitkommadatentypen.
  • Der Ausführungseinheits-Befehlssatz umfasst SIMD-Befehle. Die verschiedenen Datenelemente können als gepackte Datentypen in einem Register gespeichert sein und die Ausführungseinheit wird die verschiedenen Elemente auf der Basis der Datengröße der Elemente verarbeiten. Beispielsweise sind beim Arbeiten mit einem 256 Bit breiten Vektor die 256 Bits des Vektors in einem Register gespeichert und die Ausführungseinheit arbeitet mit dem Vektor als vier separaten 64-Bit-gepackten Datenelementen (Datenelementen der Größe Vierfachwort (QW)), acht separaten 32-Bit-gepackten Datenelementen (Datenelementen der Größe Doppelwort (DW)), sechzehn separaten 16-Bit-gepackten Datenelementen (Datenelementen der Größe Wort (W)) oder zweiunddreißig separaten 8-Bit-Datenelementen (Datenelementen der Größe Byte (B)). Allerdings sind andere Vektorbreiten und Registergrößen möglich.
  • In einer Ausführungsform können eine oder mehrere Ausführungseinheiten zu einer zusammengeschlossenen Ausführungseinheit 609A-609N kombiniert werden, die eine Strangsteuerlogik (607A-607N) aufweist, die den zusammengeschlossenen EUs gemein ist. Mehrere EUs können in einer EU-Gruppe zusammengeschlossen werden. Jede EU in der zusammengeschlossenen EU-Gruppe kann dazu ausgelegt sein, einen separaten SIMD-Hardware-Strang auszuführen. Die Anzahl von EUs in einer zusammengeschlossenen EU-Gruppe kann gemäß Ausführungsformen variieren. Außerdem können je EU verschiedene SIMD-Breiten durchgeführt werden, einschließlich, ohne darauf beschränkt zu sein, SIMD8, SIMD16 und SIMD32. Jede zusammengeschlossene Grafikausführungseinheit 609A-609N umfasst mindestens zwei Ausführungseinheiten. Zum Beispiel umfasst die zusammengeschlossene Ausführungseinheit 609A eine erste EU 608A, eine zweite EU 608B und die Strangsteuerlogik 607A, die der ersten EU 608A und der zweiten EU 608B gemein ist. Die Strangsteuerlogik 607A steuert Stränge, die auf der zusammengeschlossenen Grafikausführungseinheit 609A ausgeführt werden, wodurch es ermöglicht wird, dass jede EU innerhalb der zusammengeschlossenen Ausführungseinheiten 609A-609N, unter Verwendung eines gemeinsamen Befehlszeigerregisters ausgeführt wird.
  • Ein oder mehrere interne Befehls-Caches (z. B. 606) sind in der Strangausführungslogik 600 enthalten, um Strangbefehle für die Ausführungseinheiten zwischenzuspeichern. In einigen Ausführungsformen sind ein oder mehrere Daten-Caches (z. B. 612) enthalten, um Strangdaten während der Strangausführung zwischenzuspeichern. In einigen Ausführungsformen ist ein Abtaster 610 enthalten, um eine Texturabtastung für 3D-Operationen und eine Medienabtastung für Medienoperationen bereitzustellen. In einigen Ausführungsformen umfasst der Abtaster 610 eine spezielle Textur- oder Medienabtastfunktionalität, um Textur- oder Mediendaten während des Abtastverfahrens zu verarbeiten, bevor er die abgetasteten Daten an eine Ausführungseinheit liefert.
  • Während der Ausführung senden die Grafik- und Medien-Pipelines Stranginitiierungsanforderungen über Strangerstellungs- und Strangabfertigungs-Logik an die Strangausführungslogik 600. Sobald eine Gruppe von geometrischen Objekten verarbeitet und in Pixeldaten gerastert wurde, wird Pixelprozessorlogik (z. B. Pixel-Schattierer-Logik, Fragment-Schattierer-Logik usw.) innerhalb des Schattierer-Prozessors 602 aufgerufen, um Ausgabeinformationen weiter zu berechnen und zu veranlassen, dass Ergebnisse in Ausgabeoberflächen (z. B. Farbpuffer, Tiefenpuffer, Schablonenpuffer usw.) geschrieben werden. In einigen Ausführungsformen berechnet ein Pixel-Schattierer oder Fragment-Schattierer die Werte der verschiedenen Vertexattribute, die über das gerasterte Objekt hinweg zu interpolieren sind. In einigen Ausführungsformen führt Pixelprozessorlogik innerhalb des Schattierer-Prozessors 602 dann ein von einer Anwendungsprogrammierschnittstelle (API) geliefertes Pixel- oder Fragment-Schattierer-Programm aus. Zum Ausführen des Schattierer-Programms sendet der Schattierer-Prozessor 602 über den Strangabfertiger 604 Stränge an eine Ausführungseinheit (z. B. 608A). In einigen Ausführungsformen verwendet der Schattierer-Prozessor 602 Texturabtastlogik in dem Abtaster 610, um auf Texturdaten in Texturkarten zuzugreifen, die in Speicher gespeichert sind. Arithmetische Operationen an den Texturdaten und die eingegebenen Geometriedaten berechnen Pixelfarbdaten für jedes geometrische Fragment oder schließen einen oder mehrere Pixel von einer Weiterverarbeitung aus.
  • In einigen Ausführungsformen bietet der Daten-Port 614 einen Speicherzugriffsmechanismus für die Strangausführungslogik 600 zum Ausgeben von verarbeiteten Daten an Speicher zur Weiterverarbeitung auf einer Grafikprozessorausgabe-Pipeline. In einigen Ausführungsformen umfasst der Daten-Port 614 einen oder mehrere Cache-Speicher (z. B. Daten-Cache 612) oder koppelt mit diesen, um Daten für einen Speicherzugriff über den Daten-Port zwischenzuspeichern.
  • Wie es in 6B dargestellt ist, kann eine Grafikausführungseinheit 608 eine Befehlsabrufeinheit 637, eine Allgemeinregistersatz-Anordnung (GRF-Anordnung) 624, eine Architekturregistersatz-Anordnung (ARF-Anordnung) 626, einen Strangvermittler 622, eine Sendeeinheit 630, eine Verzweigungseinheit 632, einen Satz von SIMD-Gleitkommaeinheiten (SIMD-FPUs) 634 und in einer Ausführungsform einen Satz dedizierter Ganzzahl-SIMD-ALUs 635 umfassen. Die GRF 624 und die ARF 626 umfassen die Menge von Allgemeinregistersätzen und Architekturregistersätzen, die jedem gleichzeitigen Hardware-Strang zugeordnet sind, der in der Grafikausführungseinheit 608 aktiv sein kann. In einer Ausführungsform wird der Per-Strang-Architekturzustand in der ARF 626 beibehalten, während Daten, die während der Strangausführung verwendet werden, in der GRF 624 gespeichert werden. Der Ausführungszustand jedes Strangs einschließlich der Befehlszeiger für jeden Strang kann in strangspezifischen Registern in der ARF 626 gehalten werden.
  • In einer Ausführungsform weist die Grafikausführungseinheit 608 eine Architektur auf, die eine Kombination von gleichzeitiget Mehrsträngigkeit (SMT) und feingranularer verschachtelter Mehrsträngigkeit (IMT) darstellt. Die Architektur weist eine modulare Konfiguration auf, die zur Designzeit basierend auf einer Zielanzahl von gleichzeitigen Strängen und einer Anzahl von Registern je Ausführungseinheit fein abgestimmt werden kann, wobei Ausführungseinheitsbetriebsmittel auf Logik, die zum Ausführen von mehreren gleichzeitigen Strängen verwendet wird, verteilt wird.
  • In einer Ausführungsform kann die Grafikausführungseinheit 608 mehrere Befehle, die jeweils verschiedene Befehle sein können, gemeinsam ausgeben. Der Strangvermittler 622 des Grafikausführungseinheits-Strangs 608 kann die Befehle an die Sendeeinheit 630, die Verzweigungseinheit 642 und/oder die eine oder die mehreren SIMD-FPU(s) 634 zur Ausführung senden. Jeder Ausführungsstrang kann auf 128 Universalregister innerhalb der GRF 624 zugreifen, wobei jedes Register 32 Bytes speichern kann, die als ein SIMD-8-Element-Vektor von 32-Bit-Datenelementen zugänglich sind. In einer Ausführungsform hat jeder Ausführungseinheitsstrang Zugriff auf 4 KBytes innerhalb der GRF 624, wenngleich Ausführungsformen nicht hierauf beschränkt sind und in anderen Ausführungsformen mehr oder weniger Registerbetriebsmittel bereitgestellt sein können. In einer Ausführungsform können bis zu sieben Stränge gleichzeitig ausgeführt werden, wenngleich die Anzahl von Strängen je Ausführungseinheit auch gemäß Ausführungsformen variieren kann. In einer Ausführungsform, in der sieben Stränge auf 4 KBytes zugreifen können, kann die GRF 624 insgesamt 28 KBytes speichern. Flexible Adressierungsmodi können es ermöglichen, dass Register zusammen adressiert werden, um effektiv breitere Register zu erstellen oder um rechteckige schrittweise Blockdatenstrukturen darzustellen.
  • In einer Ausführungsform werden Speicheroperationen, Abtasteroperationen und andere Systemkommunikation mit einer längeren Latenz über „Senden“-Befehle gesendet, die durch die Nachrichtenweiterleitungssendeeinheit 630 ausgeführt werden. In einer Ausführungsform werden Verzweigungsbefehle an eine dedizierte Verzweigungseinheit 632 gesendet, um eine SIMD-Divergenz und letztliche Konvergenz zu unterstützen.
  • In einer Ausführungsform umfasst die Grafikausführungseinheit 608 eine oder mehrere SIMD-Gleitkommaeinheiten (SIMD-FPUs) 634 zum Durchführen von Gleitkommaoperationen. In einer Ausführungsform unterstützt/unterstützen die FPU(s) 634 auch eine Ganzzahlberechnung. In einer Ausführungsform kann/können die FPU(s) 634 bis zu M Anzahl von 32-Bit-Gleitkomma-(oder Ganzzahl-) Operationen mit SIMD ausführen oder bis zu 2M 16-Bit-Ganzzahl- oder 16-Bit-Gleitkommaoperationen mit SIMD ausführen. In einer Ausführungsform stellt zumindest eine der FPU(s) erweiterte Mathematikfähigkeit bereit, um transzendente Mathematikfunktionen mit hohem Durchsatz und 64-Bit-Gleitkomma mit doppelter Genauigkeit zu unterstützen. In einigen Ausführungsformen ist auch ein Satz von 8-Bit-Ganzzahl-SIMD-ALUs 635 vorhanden und kann insbesondere optimiert sein, um Operationen in Verbindung mit Maschinenlernberechnungen durchzuführen.
  • In einer Ausführungsform können Anordnungen von mehreren Instanzen der Grafikausführungseinheit 608 in einer Grafikteilkerngruppierung (z. B. einem Unter-Slice) instanziiert werden. Zur Skalierbarkeit können Produktarchitekten die genaue Anzahl von Ausführungseinheiten je Teilkerngruppierung auswählen. In einer Ausführungsform kann die Ausführungseinheit 608 Befehle über mehrere Ausführungskanäle hinweg ausführen. In einer weiteren Ausführungsform wird jeder Strang, der auf der Grafikausführungseinheit 608 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • 7 ist ein Blockdiagramm, das ein Grafikprozessor-Ausführungseinheits-Befehlsformat 700 gemäß einigen Ausführungsformen darstellt. In einer oder mehreren Ausführungsformen unterstützen die Grafikprozessor-Ausführungseinheiten einen Befehlssatz mit Befehlen in mehreren Formaten. Die durchgezogenen Kästen zeigen die Komponenten, die in der Regel in einem Ausführungseinheitsbefehl enthalten sind, während die gestrichelten Linien Komponenten umfassen, die optional sind oder die nur in einem Teilsatz der Befehle enthalten sind. In einigen Ausführungsformen besteht das Befehlsformat, das gezeigt und beschrieben wird, aus Makrobefehlen, die Befehle sind, die an die Ausführungseinheit geliefert werden, im Gegensatz zu Mikrooperationen, die aus der Befehlsdecodierung resultieren, sobald der Befehl verarbeitet wird.
  • In einigen Ausführungsformen unterstützen die Grafikprozessor-Ausführungseinheiten standardmäßig Befehle in einem 128-Bit-Format 710. Ein verdichtetes 64-Bit-Befehlsformat 730 steht für einige Befehle basierend auf dem ausgewählten Befehl, den Befehlsoptionen und der Anzahl der Operanden zur Verfügung. Das standardmäßige 128-Bit-Format 710 bietet Zugriff auf alle Befehlsoptionen, während einige Optionen und Operationen in dem 64-Bit-Format 730 eingeschränkt sind. Die standardmäßigen Befehle, die in dem 64-Bit-Format 730 verfügbar sind, variieren je nach Ausführungsform. In einigen Ausführungsformen ist der Befehl unter Verwendung eines Satzes von Indexwerten in einem Indexfeld 713 zum Teil verdichtet. Die Ausführungseinheits-Hardware verweist auf einen Satz von Verdichtungstabellen auf der Grundlage der Indexwerte und verwendet die Verdichtungstabellenausgaben, um einen standardmäßigen Befehl in dem 128-Bit-Befehlsformat 710 zu rekonstruieren.
  • Für jedes Format definiert ein Befehls-Opcode 712 die Funktion, die die Ausführungseinheit ausführen soll. Die Ausführungseinheiten führen jeden Befehl parallel über die mehreren Datenelemente jedes Operanden hinweg aus. Zum Beispiel führt die Ausführungseinheit als Antwort auf einen Addierbefehl eine gleichzeitige Additionsoperation für jeden Farbkanal, der ein Texturelement oder Bildelement darstellt, durch. Standardmäßig führt die Ausführungseinheit jeden Befehl über alle Datenkanäle der Operanden hinweg aus. In einigen Ausführungsformen ermöglicht ein Befehlssteuerfeld 714 die Kontrolle über bestimmte Ausführungsoptionen wie beispielsweise die Kanalauswahl (z. B. Prädikation) und Datenkanalreihenfolge (z. B. Umordnen (Swizzle)). Für 128-Bit-Befehle 710 begrenzt ein Feld „exec-size“ 716 die Anzahl von Datenkanälen, die parallel ausgeführt werden. Das Feld „exec-size“ 716 steht in einigen Ausführungsformen nicht für den Einsatz in dem kompakten 64-Bit-Befehlsformat 730 zur Verfügung.
  • Einige Ausführungseinheitsbefehle weisen bis zu drei Operanden auf, darunter zwei Quelloperanden src0 722, srcl 722, und ein Ziel 718. In einigen Ausführungsformen unterstützen die Ausführungseinheiten Doppelziel-Befehle, wobei eines der Ziele impliziert ist. Datenmanipulationsbefehle können einen dritten Quelloperanden (z. B. SRC2 724) aufweisen, wobei der Befehls-Opcode 712 die Anzahl der Quelloperanden bestimmt. Der letzte Quelloperand eines Befehls kann ein direkter (z. B. fest codierter) Wert sein, der mit dem Befehl weitergegeben wird.
  • In einigen Ausführungsformen umfasst das 128-Bit-Befehlsformat 710 ein Zugriffs-/Adressmodusfeld 726, das beispielsweise angibt, ob ein direkter Registeradressierungsmodus oder ein indirekter Registeradressierungsmodus verwendet wird. Wenn der direkte Registeradressierungsmodus verwendet wird, wird die Registeradresse eines oder mehrerer Operanden direkt über Bits in dem Befehl bereitgestellt.
  • In einigen Ausführungsformen umfasst das 128-Bit-Befehlsformat 710 ein Zugriffs-/Adressmodusfeld 726, das einen Adressmodus und/oder einen Zugriffsmodus für den Befehl spezifiziert. In einer Ausführungsform wird der Zugriffsmodus verwendet, um eine Datenzugriffsausrichtung für den Befehl zu definieren. Einige Ausführungsformen unterstützen Zugriffsmodi einschließlich eines 16-Byte-Ausrichtungs-Zugriffsmodus und eines 1-Byte-Ausrichtungs-Zugriffsmodus, wobei die Byte-Ausrichtung des Zugriffsmodus die Zugriffsausrichtung der Befehlsoperanden bestimmt. Wenn sich der Befehl beispielsweise in einem ersten Modus befindet, kann er eine Byte-Ausrichtungs-Adressierung für Quell- und Zieloperanden verwenden, und wenn sich der Befehl in einem zweiten Modus befindet, kann er eine 16-Byte-Ausrichtungs-Adressierung für alle Quell- und Zieloperanden verwenden.
  • In einer Ausführungsform bestimmt der Adressmodusabschnitt des Zugriffs-/Adressmodusfelds 726, ob der Befehl eine direkte oder indirekte Adressierung verwenden soll. Wenn der direkte Registeradressierungsmodus verwendet wird, liefern die Bits in dem Befehl direkt die Registeradresse eines oder mehrerer Operanden. Wenn der indirekte Registeradressierungsmodus verwendet wird, kann die Registeradresse eines oder mehrerer Operanden basierend auf einem Adressregisterwert und einem Adress-Direktwertfeld in dem Befehl berechnet werden.
  • In einigen Ausführungsformen sind Befehle basierend auf Opcode-Bitfeldern 712 gruppiert, um eine Opcode-Decodierung 740 zu vereinfachen. Bei einem 8-Bit-Opcode ermöglichen die Bits 4, 5 und 6 es der Ausführungseinheit, den Typ von Opcode zu bestimmen. Die speziell gezeigte Opcode-Gruppierung ist lediglich beispielhaft. In einigen Ausführungsformen umfasst eine Verschiebungs- und Logik-Opcode-Gruppe 742 Datenverschiebungs- und Logik-Befehle (z. B. Verschieben (mov), Vergleichen (cmp)). In einigen Ausführungsformen nutzt die Verschiebungs- und Logik-Gruppe 742 die fünf höchstwertigen Bits (MSB) gemeinsam, wobei die Verschiebungsbefehle in der Form 0000xxxxb vorliegen und die Logikbefehle in der Form 0001xxxxb vorliegen. Eine Ablaufsteuerungsbefehlsgruppe 744 (z. B. Aufrufen (call), Springen (jmp)) enthält Befehle in der Form 0010xxxxb (z. B. 0x20). Eine gemischte Befehlsgruppe 746 umfasst eine Mischung aus Befehlen, die Synchronisationsbefehle (z. B. Warten (wait), Senden (send)) in der Form 0011xxxxb (z. B. 0x30) umfasst. Eine Parallelmathematik-Befehlsgruppe 748 umfasst komponentenweise arithmetische Befehle (z. B. Addieren (add), Multiplizieren (mul)) in der Form 0100xxxxb (z. B. 0x40). Die Parallelmathematik-Gruppe 748 führt die arithmetischen Operationen parallel über Datenkanäle hinweg aus. Die Vektormathematik-Gruppe 750 umfasst arithmetische Befehle (z. B. dp4) in der Form 0101xxxxb (z. B. 0x50). Die Vektormathematik-Gruppe führt arithmetische Operationen wie Skalarproduktberechnungen an Vektoroperanden aus.
  • Grafikpipeline
  • 8 ist ein Blockdiagramm einer weiteren Ausführungsform eines Grafikprozessors 800. Elemente von 8 mit den gleichen Bezugszeichen (oder Namen) wie die Elemente von irgendeiner anderen Figur hier können auf eine Art und Weise arbeiten oder funktionieren, die der an anderer Stelle hier beschriebenen ähnlich ist, sind jedoch nicht darauf beschränkt.
  • In einigen Ausführungsformen umfasst der Grafikprozessor 800 eine Geometriepipeline 820, eine Medienpipeline 830, eine Anzeigemaschine 840, eine Strangausführungslogik 850 und eine Renderausgabepipeline 870. In einigen Ausführungsformen ist der Grafikprozessor ein Grafikprozessor innerhalb eines Mehrkern-Verarbeitungssystems, das einen oder mehrere Allzweck-Verarbeitungskerne aufweist. Der Grafikprozessor wird durch Registerschreibvorgänge in ein oder mehrere Steuerregister (nicht gezeigt) oder über Befehle, die über eine Ringzwischenverbindung 802 an den Grafikprozessor 800 erteilt werden, gesteuert. In einigen Ausführungsformen koppelt die Ringzwischenverbindung 802 den Grafikprozessor 800 mit anderen Verarbeitungskomponenten wie anderen Grafikprozessoren oder Allzweckprozessoren. Befehle aus der Ringzwischenverbindung 802 werden durch einen Befehls-Streamer 803 interpretiert, der Befehle an einzelne Komponenten der Geometriepipeline 820 oder Medienpipeline 830 liefert.
  • In einigen Ausführungsformen lenkt der Befehls-Streamer 803 den Betrieb eines Vertexabrufers 805, der Vertexdaten aus dem Speicher liest und Vertexverarbeitungsbefehle, die von dem Befehls-Streamer 803 geliefert werden, ausführt. In einigen Ausführungsformen liefert der Vertexabrufer 805 Vertexdaten an einen Vertex-Schattierer 807, der eine Koordinatenraumtransformation und Beleuchtungsoperationen an jedem Vertex ausführt. In einigen Ausführungsformen führen der Vertexabrufer 805 und der Vertex-Schattierer 807 Vertexverarbeitungsbefehle durch Entsenden von Ausführungssträngen an die Ausführungseinheiten 852A, 852B über einen Strangabfertiger 831 aus.
  • In einigen Ausführungsformen sind die Ausführungseinheiten 852A, 852B eine Anordnung von Vektorprozessoren mit einem Befehlssatz zum Durchführen von Grafik- und Medienoperationen. In einigen Ausführungsformen weisen die Ausführungseinheiten 852A-852B einen angeschlossenen Ll-Cache 851 auf, der spezifisch für jede Anordnung ist oder von den Anordnungen gemeinsam genutzt wird. Der Cache kann als Daten-Cache, Befehls-Cache oder ein einzelner Cache, der so partitioniert ist, dass er Daten und Befehle in verschiedenen Partitionen enthält, ausgelegt sein.
  • In einigen Ausführungsformen umfasst die Geometriepipeline 820 Tessellationskomponenten zum Durchführen einer hardwarebeschleunigtem Tessellation von 3D-Objekten. In einigen Ausführungsformen konfiguriert ein programmierbarer Mantel-Schattierer 811 die Tessellationsoperationen. Ein programmierbarer Domain-Schattierer 817 liefert eine Backend-Auswertung der Tessellationsausgabe. Ein Tessellator 813 arbeitet unter der Führung des Mantel-Schattierers 811 und umfasst Sonderlogik, um einen Satz von detaillierten geometrischen Objekten basierend auf einem groben geometrischen Modell, das als Eingabe in die Geometriepipeline 820 bereitgestellt wird, zu erzeugen. Wenn die Tessellation in einigen Ausführungsformen nicht verwendet wird, können die Tessellationskomponenten (z. B. Mantel-Schattierer 811, Tessellator 813 und Domain-Schattierer 817) umgangen werden.
  • In einigen Ausführungsformen können die vollständigen geometrischen Objekte durch einen Geometrie-Schattierer 819 über einen oder mehrere Stränge, die an die Ausführungseinheiten 852A, 852B entsendet werden, verarbeitet werden oder können direkt zu dem Clipper 829 gelangen. In einigen Ausführungsformen bearbeitet der Geometrie-Schattierer gesamte geometrische Objekte anstelle von Vertices oder Flecken von Vertices wie in vorherigen Stufen der Grafik-Pipeline. Wenn die Tessellation deaktiviert ist, empfängt der Geometrie-Schattierer 819 Eingaben aus dem Vertex-Schattierer 807. In einigen Ausführungsformen ist der Geometrie-Schattierer 819 durch ein Geometrie-Schattierer-Programm programmierbar, um eine Geometrie-Tessellation durchzuführen, wenn die Tessellationseinheiten deaktiviert sind.
  • Vor der Rasterung kann ein Clipper 829 Vertex-Daten verarbeiten. Der Clipper 829 kann entweder ein Clipper mit fester Funktion oder ein programmierbarer Clipper mit Clipping- und Geometrie-Schattierer-Funktionen sein. In einigen Ausführungsformen fertigt eine Raster-und-Tiefentestkomponente 873 in der Renderausgabepipeline 870 Pixel-Schattierer ab, um die geometrischen Objekte in ihre pixelweisen Darstellungen zu konvertieren. In einigen Ausführungsformen ist die Pixel-Schattierer-Logik in der Strangausführungslogik 850 enthalten. In einigen Ausführungsformen kann eine Anwendung die Raster-und-Tiefentestkomponente 873 umgehen und über eine Stream-Out-Einheit 823 auf nicht gerasterte Vertex-Daten zugreifen.
  • Der Grafikprozessor 800 verfügt über einen Zwischenverbindungsbus, eine Zwischenverbindungsstruktur oder irgendeinen anderen Zwischenverbindungsmechanismus, der einen Daten- und Nachrichtenaustausch zwischen den Hauptkomponenten des Prozessors ermöglicht. In einigen Ausführungsformen sind Ausführungseinheiten 852A, 852B und zugehörige Logikeinheiten (z. B. Ll-Cache 851, Abtaster 854 und ein Textur-Cache 858 usw.) über einen Daten-Port 856 verbunden, um einen Speicherzugriff durchführen und mit Renderausgabepipeline-Komponenten des Prozessors zu kommunizieren. In einigen Ausführungsformen weisen der Abtaster 854, die Caches 851, 858 und die Ausführungseinheiten 852A, 852B jeweils separate Speicherzugriffspfade auf. In einer Ausführungsform kann der Textur-Cache 858 auch als Abtaster-Cache ausgelegt sein.
  • In einigen Ausführungsformen enthält die Renderausgabepipeline 870 eine Raster-und-Tiefentestkomponente 873, die vertexbasierte Objekte in die ihnen zugeordnete pixelbasierte Darstellung umwandelt. In einigen Ausführungsformen umfasst die Rasterlogik eine Fenster-/Maskier-Einheit, um eine Dreiecks- und Linien-Rasterung mit fester Funktion durchzuführen. Zudem sind in zugehöriger Render-Cache 878 und Tiefen-Cache 879 in einigen Ausführungsformen verfügbar. Eine Pixeloperationskomponente 877 führt pixelbasierte Operationen an den Daten durch, obwohl in einigen Fällen Pixeloperationen, die 2D-Operationen zugeordnet sind (z. B. Bitblockbildübertragungen mit Überlagerung), von der 2D-Maschine 841 durchgeführt werden, oder zu der Anzeigezeit durch den AnzeigeController 843 mit Überlagerungsanzeigeebenen ersetzt werden. In einigen Ausführungsformen ist ein gemeinsam genutzter L3-Cache 875 für alle Grafikkomponenten verfügbar, so dass die gemeinsame Nutzung von Daten ohne den Einsatz des Hauptsystemspeichers ermöglicht wird.
  • In einigen Ausführungsformen umfasst die Grafikprozessor-Medien-Pipeline 830 eine Medienmaschine 337 und ein Video-Frontend 834. In einigen Ausführungsformen empfängt das Video-Frontend 834 Pipelinebefehle aus dem Befehls-Streamer 803. In einigen Ausführungsformen umfasst die Medienpipeline 830 aber einen separaten Befehls-Streamer. In einigen Ausführungsformen verarbeitet das Video-Frontend 834 Medienbefehle, bevor es den Befehl an die Medienmaschine 837 sendet. In einigen Ausführungsformen umfasst die Medienmaschine eine Strangerzeugungsfunktionalität, um Stränge für das Entsenden an die Strangausführungslogik 850 über den Strangabfertiger 831 zu erzeugen.
  • In einigen Ausführungsformen umfasst der Grafikprozessor eine Anzeigemaschine 840. In einigen Ausführungsformen ist die Anzeigemaschine 840 bezüglich des Prozessors 800 extern und ist mit dem Grafikprozessor über die Ringzwischenverbindung 802 oder irgendeinen anderen Zwischenverbindungsbus oder irgendeine andere Zwischenverbindungsstruktur gekoppelt. In einigen Ausführungsformen umfasst die Anzeigemaschine 840 eine 2D-Maschine 841 und einen Anzeigecontroller 843. In einigen Ausführungsformen enthält die Anzeigemaschine 840 eine Sonderlogik, die unabhängig von der 3D-Pipeline arbeiten kann. In einigen Ausführungsformen ist der Anzeigecontroller 843 mit einer Anzeigevorrichtung (nicht dargestellt) gekoppelt, die eine integrierte Systemanzeigevorrichtung wie bei einem Laptop-Computer oder eine externe Anzeigevorrichtung, die über ein Anzeigevorrichtungs-Verbindungselement angeschlossen ist, sein kann.
  • In einigen Ausführungsformen sind die Geometriepipeline 820 und die Medienpipeline 830 konfigurierbar, um Operationen auf der Basis mehrerer Grafik- und Medienprogrammierschnittstellen durchzuführen, und sind nicht speziell für irgendeine Anwendungsprogrammierschnittstelle (API) ausgelegt. In einigen Ausführungsformen übersetzt die Treibersoftware für den Grafikprozessor API-Aufrufe, die spezifisch für eine bestimmte Grafik- oder Medienbibliothek sind, in Befehle, die von dem Grafikprozessor verarbeitet werden können. In einigen Ausführungsformen wird Unterstützung für die Open Graphics Library (OpenGL) und die Open Computing Language (OpenCL) und/oder Vulkan-Grafik und Rechen-API geboten, die alle von der Khronos Group bereitgestellt werden. In einigen Ausführungsformen kann auch Unterstützung für die Direct3D-Bibliothek von der Microsoft Corporation geboten werden. In einigen Ausführungsformen kann eine Kombination dieser Bibliotheken unterstützt werden. Es kann auch Unterstützung für die Open Source Computer Vision Library (OpenCV) geboten werden. Eine zukünftige API mit einer kompatiblen 3D-Pipeline würde dann auch unterstützt, wenn eine Abbildung von der Pipeline der zukünftigen API auf die Pipeline des Grafikprozessors vorgenommen werden kann.
  • Grafikpipelineprogrammierung
  • 9A ist ein Blockdiagramm, das ein Grafikprozessorbefehlsformat 900 gemäß einigen Ausführungsformen zeigt. 9B ist ein Blockdiagramm, das eine Grafikprozessorbefehlsfolge 910 gemäß einer Ausführungsform zeigt. Die durchgezogenen Kästchen in 9A veranschaulichen die Komponenten, die im Allgemeinen in einem Grafikbefehl enthalten sind, während die gestrichelten Linien Komponenten enthalten, die optional sind oder die nur in einem Teilsatz der Grafikbefehle enthalten sind. Das beispielhafte Grafikprozessorbefehlsformat 900 von 9A umfasst Datenfelder zum Identifizieren eines Clients 902, eines Befehlsoperationscodes (Opcodes) 904 und von Daten 906 für den Befehl. Ein Teil-Opcode 905 und eine Befehlsgröße 908 sind ebenfalls in einigen Befehlen enthalten.
  • In einigen Ausführungsformen spezifiziert der Client 902 die Client-Einheit der Grafikvorrichtung, die die Befehlsdaten verarbeitet. In einigen Ausführungsformen untersucht ein Grafikprozessor-Befehls-Parser das Client-Feld jedes Befehls, um die weitere Verarbeitung des Befehls aufzubereiten und die Befehlsdaten an die geeignete Client-Einheit weiterzuleiten. In einigen Ausführungsformen weisen die Grafikprozessor-Client-Einheiten eine Speicherschnittstelleneinheit, eine Render-Einheit, eine 2D-Einheit, eine 3D-Einheit und eine Medieneinheit auf. Jede Client-Einheit hat eine entsprechende Verarbeitungs-Pipeline, die die Befehle verarbeitet. Sobald der Befehl durch die Client-Einheit empfangen wurde, liest die Client-Einheit den Opcode 904 und, falls vorhanden, den Teil-Opcode 905, um die durchzuführende Operation zu bestimmen. Die Client-Einheit führt den Befehl unter Verwendung von Informationen in dem Datenfeld 906 aus. Für einige Befehle wird eine explizite Befehlsgröße 908 erwartet, die die Größe des Befehls angibt. In einigen Ausführungsformen bestimmt der Befehls-Parser automatisch die Größe von mindestens einigen der Befehle basierend auf dem Befehls-Opcode. In einigen Ausführungsformen sind Befehle nach Vielfachen eines Doppelwortes ausgerichtet.
  • Das Ablaufdiagramm in 9B zeigt eine beispielhafte Grafikprozessorbefehlsfolge 910. In einigen Ausführungsformen verwendet Software oder Firmware eines Datenverarbeitungssystems, das eine Ausführungsform eines Grafikprozessors aufweist, eine Version der dargestellten Befehlsfolge, um einen Satz von Grafikoperationen einzurichten, auszuführen und zu beenden. Eine beispielhafte Befehlsfolge ist nur zu Beispielszwecken dargestellt und beschrieben, da Ausführungsformen nicht auf diese spezifischen Befehle oder auf diese Befehlsfolge beschränkt sind. Darüber hinaus können die Befehle als Stapel von Befehlen in einer Befehlsfolge ausgegeben werden, so dass der Grafikprozessor die Folge von Befehlen zumindest teilweise gleichzeitig verarbeitet.
  • In einigen Ausführungsformen kann die Grafikprozessorbefehlsfolge 910 mit einem Pipelinebereinigungsbefehl 912 beginnen, um zu veranlassen, dass eine aktive Grafikpipeline die aktuell ausstehenden Befehle für die Pipeline abschließt. In einigen Ausführungsformen arbeiten die 3D-Pipeline 922 und die Medienpipeline 924 nicht gleichzeitig. Die Pipelinebereinigung wird ausgeführt, um zu veranlassen, dass die aktive Grafikpipeline alle ausstehenden Befehle abschließt. Als Antwort auf eine Pipelinebereinigung unterbricht der Befehls-Parser für den Grafikprozessor die Befehlsverarbeitung, bis die aktiven Zeichenmaschinen ausstehende Operationen abschließen und die relevanten Lese-Caches ungültig gemacht werden. Wahlweise können alle Daten im Render-Cache, die als „schmutzig“ gekennzeichnet sind, in den Speicher geleert werden. In einigen Ausführungsformen kann der Pipelinebereinigungsbefehl 912 für die Pipelinesynchronisation oder vor dem Versetzen des Grafikprozessors in einen Zustand niedriger Leistungsaufnahme verwendet werden.
  • In einigen Ausführungsformen wird ein Pipelineauswahlbefehl 913 verwendet, wenn eine Befehlsfolge erfordert, dass der Grafikprozessor explizit zwischen Pipelines wechselt. In einigen Ausführungsformen wird ein Pipelineauswahlbefehl 913 nur einmal in einem Ausführungskontext vor dem Ausgeben von Pipeline-Befehlen benötigt, es sei denn, der Kontext gibt vor, Befehle für beide Pipelines auszugeben. In einigen Ausführungsformen ist ein Pipelinebereinigungsbefehl 912 unmittelbar vor einem Pipelinewechsel mittels des Pipelineauswahlbefehls 913 erforderlich.
  • In einigen Ausführungsformen konfiguriert ein Pipelinesteuerbefehl 914 eine Grafikpipeline für den Betrieb und wird verwendet, um die 3D-Pipeline 922 und die Medienpipeline 924 zu programmieren. In einigen Ausführungsformen konfiguriert der Pipelinesteuerbefehl 914 den Pipelinezustand für die aktive Pipeline. In einer Ausführungsform wird der Pipelinesteuerbefehl 914 für eine Pipelinesynchronisation und zum Löschen von Daten aus einem oder mehreren Cache-Speichern innerhalb der aktiven Pipeline verwendet, bevor ein Stapel von Befehlen verarbeitet wird.
  • In einigen Ausführungsformen werden Rückgabepufferzustands-Befehle 916 verwendet, um einen Satz von Rückgabepuffern für die jeweiligen Pipelines zum Schreiben von Daten zu konfigurieren. Einige Pipelineoperationen erfordern die Zuweisung, Auswahl oder Konfiguration eines oder mehrerer Rückgabepuffer, in die die Operationen während der Verarbeitung Zwischendaten schreiben. In einigen Ausführungsformen verwendet der Grafikprozessor auch einen oder mehrere Rückgabepuffer, um Ausgabedaten zu speichern und eine strangübergreifende Kommunikation durchzuführen. In einigen Ausführungsformen beinhaltet der Rückgabepufferzustand 916 das Auswählen der Größe und Anzahl von Rückgabepuffern, die für einen Satz von Pipelineoperationen verwendet werden sollen.
  • Die verbleibenden Befehle in der Befehlsfolge unterscheiden sich basierend auf der aktiven Pipeline für Operationen. Basierend auf einer Pipelinebestimmung 920 wird die Befehlsfolge auf die 3D-Pipeline 922, beginnend mit dem 3D-Pipeline-Zustand 930, oder die Medienpipeline 924, beginnend mit dem MedienpipelineZustand 940, zugeschnitten.
  • Die Befehle zum Konfigurieren des 3D-Pipeline-Zustands 930 umfassen 3D-Zustandseinstellungsbefehle für den Vertex-Pufferzustand, einen Vertex-Elementzustand, einen Konstantfarbzustand, einen Tiefenpufferzustand und andere Zustandsvariablen, die zu konfigurieren sind, bevor 3D-Primitiv-Befehle verarbeitet werden. Die Werte dieser Befehle werden zumindest teilweise basierend auf der jeweiligen verwendeten 3D-API bestimmt. In einigen Ausführungsformen sind Befehle zum 3D-Pipelinezustand 930 auch in der Lage, bestimmte Pipelineelemente gezielt zu deaktivieren oder zu umgehen, falls diese Elemente nicht verwendet werden.
  • In einigen Ausführungsformen wird der 3D-Primitiv-Befehl 932 verwendet, um 3D-Primitive, die von der 3D-Pipeline verarbeitet werden sollen, zu versenden. Befehle und zugehörige Parameter, die über den 3D-Primitiv-Befehl 932 an den Grafikprozessor geleitet werden, werden an die Vertex-Abruffunktion in der Grafik-Pipeline weitergeleitet. Die Vertex-Abruf funktion verwendet die Daten des 3D-Primitiv-Befehls 932, um Vertex-Datenstrukturen zu erzeugen. Die Vertex-Datenstrukturen werden in einem oder mehreren Rückgabepuffern gespeichert. In einigen Ausführungsformen wird der 3D-Primitiv-Befehl 932 verwendet, um Vertex-Operationen an 3D-Primitiven mittels Vertex-Schattierern durchzuführen. Um Vertex-Schattierer zu verarbeiten, sendet die 3D-Pipeline 922 Schattierer-Ausführungsstränge an Grafikprozessor-Ausführungseinheiten.
  • In einigen Ausführungsformen wird die 3D-Pipeline 922 über einen Befehl oder ein Ereignis Ausführen 934 ausgelöst. In einigen Ausführungsformen löst ein Registerschreibvorgang eine Befehlsausführung aus. In einigen Ausführungsformen wird die Ausführung über einen „go“- oder „kick“-Befehl in der Befehlsfolge ausgelöst. In einer Ausführungsform wird die Befehlsausführung unter Verwendung eines Pipelinesynchronisationsbefehls ausgelöst, um die Befehlsfolge durch die Grafikpipeline zu bereinigen. Die 3D-Pipeline führt eine Geometrieverarbeitung für die 3D-Primitive aus. Sobald die Operationen abgeschlossen sind, werden die resultierenden geometrischen Objekte gerastert und die Pixelmaschine färbt die resultierenden Pixel. Zusätzliche Befehle zum Steuern von Pixelschattierungs- und Pixel-Backend-Operationen können für diese Operationen ebenfalls enthalten sein.
  • In einigen Ausführungsformen folgt die Grafikprozessorbefehlsfolge 910 dem Pfad der Medienpipeline 924, wenn Medienoperationen ausgeführt werden. Im Allgemeinen hängt die spezifische Verwendung und Art der Programmierung für die Medienpipeline 924 von den durchzuführenden Medien- oder Rechenoperationen ab. Bestimmte Mediendecodieroperationen können während der Mediendecodierung in die Medienpipeline ausgelagert werden. In einigen Ausführungsformen kann die Medienpipeline auch umgangen werden und die Mediendecodierung kann ganz oder teilweise unter Verwendung von Betriebsmitteln durchgeführt werden, die von einem oder mehreren Allzweck-Verarbeitungskernen bereitgestellt werden. In einer Ausführungsform umfasst die Medienpipeline auch Elemente für Operationen einer Allzweck-Grafikprozessoreinheit (GPGPU), wobei der Grafikprozessor verwendet wird, um SIMD-Vektoroperationen unter Verwendung von Rechen-Schattierer-Programmen, die nicht explizit mit dem Rendern von Grafikprimitiven in Zusammenhang stehen, durchzuführen.
  • In einigen Ausführungsformen ist die Medienpipeline 924 auf ähnliche Weise wie die 3D-Pipeline 922 konfiguriert. Ein Satz von Befehlen zum Konfigurieren des Medienpipelinezustands 940 wird vor den Medienobjektbefehlen 942 an eine Befehlswarteschlange versendet oder in dieser platziert. In einigen Ausführungsformen umfassen die Befehle für den Medienpipelinezustand 940 Daten zum Konfigurieren der Medienpipelineelemente, die zum Verarbeiten der Medienobjekte verwendet werden. Dies umfasst Daten zum Konfigurieren der Videodecodierungs- und Videocodierungslogik in der Medienpipeline wie beispielsweise ein Codierungs- oder Decodierungsformat. In einigen Ausführungsformen unterstützen die Befehle für den Medienpipelinezustand 940 auch die Verwendung von einem oder mehreren Zeigern auf „indirekte“ Zustandselemente, die einen Stapel von Zustandseinstellungen enthalten.
  • In einigen Ausführungsformen liefern Medienobjektbefehle 942 Zeiger auf Medienobjekte zur Verarbeitung durch die Medienpipeline. Die Medienobjekte weisen Speicherpuffer auf, die zu verarbeitende Videodaten enthalten. In einigen Ausführungsformen müssen alle Medienpipelinezustände gültig sein, bevor ein Medienobjektbefehl 942 ausgegeben wird. Sobald der Pipelinezustand konfiguriert ist und die Medienobjektbefehle 942 in die Warteschlange eingereiht sind, wird die Medienpipeline 924 über einen Ausführungsbefehl 944 oder ein äquivalentes Ausführungsereignis (z. B. Registerschreibvorgang) ausgelöst. Die Ausgabe aus der Medienpipeline 924 kann dann durch Operationen nachbearbeitet werden, die von der 3D-Pipeline 922 oder der Medienpipeline 924 bereitgestellt werden. In einigen Ausführungsformen werden GPGPU-Operationen auf ähnliche Weise wie Medienoperationen konfiguriert und ausgeführt.
  • Grafiksoftwarearchitektur
  • 10 zeigt eine beispielhafte Grafiksoftwarearchitektur für ein Datenverarbeitungssystem 1000 gemäß einigen Ausführungsformen. In einigen Ausführungsformen umfasst die Softwarearchitektur eine 3D-Grafikanwendung 1010, ein Betriebssystem 1020 und mindestens einen Prozessor 1030. In einigen Ausführungsformen weist der Prozessor 1030 einen Grafikprozessor 1032 und einen oder mehrere Allzweck-Prozessorkerne 1034 auf. Die Grafikanwendung 1010 und das Betriebssystem 1020 werden jeweils in dem Systemspeicher 1050 des Datenverarbeitungssystems ausgeführt.
  • In einigen Ausführungsformen weist die 3D-Grafikanwendung 1010 ein oder mehrere Schattierer-Programme auf, die Schattierer-Befehle 1012 enthalten. Die Schattierer-Sprachen-Befehle können in einer Schattierer-Hochsprache wie der High Level Shader Language (HLSL) oder der OpenGL Shader Language (GLSL) vorliegen. Die Anwendung weist auch ausführbare Befehle 1014 in einer Maschinensprache auf, die zur Ausführung durch den Allzweck-Prozessorkern 1034 geeignet sind. Die Anwendung weist auch Grafikobjekte 1016 auf, die durch Vertexdaten definiert sind.
  • In einigen Ausführungsformen ist das Betriebssystem 1020 das Betriebssystem Microsoft® Windows® der Microsoft Corporation, ein proprietäres UNIX-ähnliches Betriebssystem oder ein UNIX-ähnliches Open-Source-Betriebssystem, das eine Variante des Linux-Kernels verwendet. Das Betriebssystem 1020 kann eine Grafik-API 1022 wie die Direct3D-API, die OpenGL-API oder die Vulkan-API unterstützen. Wenn die Direct3D-API verwendet wird, verwendet das Betriebssystem 1020 einen Frontend-Schattierer-Kompilierer 1024, um jegliche Schattierer-Befehle 1012 in HLSL in eine Schattierer-Sprache niedrigerer Ebene zu kompilieren. Die Kompilierung kann eine einsatzsynchrone Kompilierung (JIT-Kompilierung) sein oder die Anwendung kann eine Schattierer-Vorkompilierung ausführen. In einigen Ausführungsformen werden Schattierer hoher Ebene während der Kompilierung der 3D-Grafikanwendung 1010 zu Schattierern niedrigerer Ebene kompiliert. In einigen Ausführungsformen werden die Schattierer-Befehle 1012 in einer Zwischenform wie beispielsweise einer Version der von der Vulkan-API verwendeten portierbaren Standard-Zwischendarstellung (SPIR) bereitgestellt.
  • In einigen Ausführungsformen enthält der Anwendermodus-Grafiktreiber 1026 einen Backend-Schattierer-Kompilierer 1027, um die Schattierer-Befehle 1012 in eine hardwarespezifische Darstellung umzuwandeln. Wenn die OpenGL-API verwendet wird, werden die Schattierer-Befehle 1012 in der GLSL-Hochsprache an einen Anwendermodus-Grafiktreiber 1026 zur Kompilierung geleitet. In einigen Ausführungsformen verwendet der Anwendermodus-Grafiktreiber 1026 Betriebssystemkernelmodusfunktionen 1028, um mit einem Kernelmodus-Grafiktreiber 1029 zu kommunizieren. In einigen Ausführungsformen kommuniziert der Kernelmodus-Grafiktreiber 1029 mit dem Grafikprozessor 1032, um Befehle und Anweisungen zu entsenden.
  • IP-Kern-Implementierungen
  • Ein oder mehrere Aspekte mindestens einer Ausführungsform können durch einen repräsentativen Code implementiert werden, der auf einem maschinenlesbaren Medium gespeichert ist und Logik innerhalb einer integrierten Schaltung wie etwa eines Prozessors repräsentiert und/oder definiert. Zum Beispiel kann das maschinenlesbare Medium Befehle enthalten, die verschiedene Logik innerhalb des Prozessors repräsentieren. Wenn sie von einer Maschine gelesen werden, können die Befehle veranlassen, dass die Maschine die Logik zum Ausführen der hier beschriebenen Techniken herstellt. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, sind wiederverwendbare Logikeinheiten für eine integrierte Schaltung, die auf einem greifbaren, maschinenlesbaren Medium als ein Hardwaremodell gespeichert werden können, das die Struktur der integrierten Schaltung beschreibt. Das Hardwaremodell kann an verschiedene Kunden oder Herstellungseinrichtungen geliefert werden, die das Hardwaremodell auf Herstellungsmaschinen laden, die die integrierte Schaltung herstellen. Die integrierte Schaltung kann derart hergestellt werden, dass die Schaltung Operationen ausführt, die in Verbindung mit irgendeiner der hier beschriebenen Ausführungsformen beschrieben sind.
  • 11A ist ein Blockdiagramm, das ein IP-Kern-Entwicklungssystem 1100 zeigt, das zur Herstellung einer integrierten Schaltung zur Ausführung von Operationen gemäß einer Ausführungsform verwendet werden kann. Das IP-Kern-Entwicklungssystem 1100 kann verwendet werden, um modulare, wiederverwendbare Entwürfe zu erzeugen, die in einen größeren Entwurf integriert werden können oder verwendet werden können, um eine gesamte integrierte Schaltung (z. B. eine integrierte SoC-Schaltung) zu konstruieren. Eine Entwurfseinrichtung 1130 kann eine Softwaresimulation 1110 eines IP-Kernentwurfs in einer Programmierhochsprache (z. B. C/C++) erzeugen. Die Softwaresimulation 1110 kann verwendet werden, um das Verhalten des IP-Kerns unter Verwendung eines Simulationsmodells 1112 zu gestalten, zu testen und zu verifizieren. Das Simulationsmodell 1112 kann Funktions-, Verhaltens- und/oder Zeitvorgabesimulationen beinhalten. Ein Registertransferebenen-Entwurf (RTL-Entwurf) 1115 kann dann aus dem Simulationsmodell 1112 erzeugt oder synthetisiert werden. Der RTL-Entwurf 1115 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Fluss digitaler Signale zwischen Hardware-Registern modelliert, einschließlich der zugehörigen Logik, die unter Verwendung der modellierten digitalen Signale ausgeführt wird. Neben einem RTL-Entwurf 1115 können auch Entwürfe auf niedrigerer Ebene auf der Logikebene oder der Transistorebene erzeugt, entworfen oder synthetisiert werden. Daher können die speziellen Einzelheiten des anfänglichen Entwurfs und der Simulation variieren.
  • Der RTL-Entwurf 1115 oder ein Äquivalent kann ferner durch die Entwurfseinrichtung zu einem Hardwaremodell 1120 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL) oder einer anderen Darstellung von physischen Entwurfsdaten vorliegen kann. Die HDL kann weiter simuliert oder getestet werden, um den IP-Kern-Entwurf zu verifizieren. Der IP-Kern-Entwurf kann zur Lieferung an eine Drittherstellereinrichtung 1165 unter Verwendung eines nichtflüchtigen Speichers 1140 (z. B. Festplatte, Flash-Speicher oder ein beliebiges nichtflüchtiges Speichermedium) gespeichert werden. Alternativ kann der IP-Kern-Entwurf über eine drahtgebundene Verbindung 1150 oder eine drahtlose Verbindung 1160 (z. B. über das Internet) übertragen werden. Die Herstellungseinrichtung 1165 kann dann eine integrierte Schaltung herstellen, die zumindest teilweise auf dem IP-Kern-Entwurf basiert. Die hergestellte integrierte Schaltung kann dazu ausgelegt sein, Operationen gemäß mindestens einer hier beschriebenen Ausführungsform auszuführen.
  • 11B zeigt eine Querschnittsseitenansicht einer Baugruppenanordnung für integrierte Schaltungen 1170 gemäß einigen hier beschriebenen Ausführungsformen. Die Baugruppenanordnung für integrierte Schaltungen 1170 veranschaulicht eine Implementierung von einer oder mehreren Prozessor- oder Beschleunigervorrichtungen, wie sie hier beschrieben sind. Die Baugruppenanordnung 1170 umfasst mehrere Einheiten von Hardwarelogik 1172, 1174, die mit einem Substrat 1180 verbunden sind. Die Logik 1172, 1174 kann zumindest teilweise in konfigurierbarer Logik oder Logikhardware mit fester Funktionalität implementiert sein und kann einen oder mehrere Abschnitte von beliebigen der hier beschriebenen Prozessorkern(e), Grafikprozessor(en) oder anderen Beschleunigervorrichtungen umfassen. Jede Logikeinheit 1172, 1174 kann innerhalb eines Halbleiter-Chips implementiert und mit dem Substrat 1180 über eine Zwischenverbindungsstruktur 1173 gekoppelt sein. Die Zwischenverbindungsstruktur 1173 kann dazu ausgelegt sein, elektrische Signale zwischen der Logik 1172, 1174 und dem Substrat 1180 weiterzuleiten, und kann Zwischenverbindungen wie Kontakthügel oder Kontaktsäulen umfassen, ohne darauf beschränkt zu sein. In einigen Ausführungsformen kann die Zwischenverbindungsstruktur 1173 dazu ausgelegt sein, elektrische Signale, wie z. B. Eingabe/Ausgabe-Signale (E/A-Signale) und/oder Leistungs- oder Massesignale, die dem Betrieb der Logik 1172, 1174 zugeordnet sind, weiterzuleiten. In einigen Ausführungsformen ist das Substrat 1180 ein Laminatsubstrat auf Epoxidbasis. Das Baugruppensubstrat 1180 kann in anderen Ausführungsformen andere geeignete Typen von Substraten umfassen. Die Baugruppenanordnung 1170 kann über eine Baugruppenzwischenverbindung 1183 mit anderen elektrischen Vorrichtungen verbunden sein. Die Baugruppenzwischenverbindung 1183 kann an eine Oberfläche des Substrats 1180 gekoppelt sein, um elektrische Signale zu anderen elektrischen Vorrichtungen wie einer Hauptplatine, einem anderen Chipsatz oder einem Mehrchipmodul weiterzuleiten.
  • In einigen Ausführungsformen sind die Logikeinheiten 1172, 1174 elektrisch mit einer Brücke 1182 gekoppelt, die dazu ausgelegt ist, elektrische Signale zwischen der Logik 1172, 1174 weiterzuleiten. Die Brücke 1182 kann eine dichte Zwischenverbindungsstruktur sein, die einen Weg für elektrische Signale bietet. Die Brücke 1182 kann ein Brückensubstrat umfassen, das aus Glas oder einem geeigneten Halbleitermaterial besteht. Merkmale zur elektrischen Weiterleitung können auf dem Brückensubstrat ausgebildet sein, um eine Chip-zu-Chip-Verbindung zwischen der Logik 1172, 1174 bereitzustellen.
  • Wenngleich zwei Logikeinheiten 1172, 1174 und eine Brücke 1182 veranschaulicht sind, können hier beschriebene Ausführungsformen mehr oder weniger Logikeinheiten auf einem oder mehreren Chips umfassen. Der eine oder die mehreren Chips können durch null oder mehr Brücken verbunden sein, weil die Brücke 1182 entfallen kann, wenn die Logik auf einem einzelnen Chip enthalten ist. Alternativ dazu können mehrere Chips oder Logikeinheiten durch eine oder mehrere Brücken verbunden sein. Außerdem können mehrere Logikeinheiten, Chips und Brücken in anderen möglichen Konfigurationen einschließlich dreidimensionaler Konfigurationen miteinander verbunden sein.
  • Beispielhafte integrierte Ein-Chip-System-Schaltung
  • 12-14 zeigen beispielhafte integrierte Schaltungen und zugeordnete Grafikprozessoren, die unter Verwendung eines oder mehrerer IP-Kerne gemäß verschiedenen hier beschriebenen Ausführungsformen hergestellt werden können. Zusätzlich zu dem Dargestellten können andere Logik und Schaltungen einschließlich zusätzlicher Grafikprozessoren/-kerne, peripherer Schnittstellencontroller oder Allzweck-Prozessorkerne enthalten sein.
  • 12 ist ein Blockdiagramm, das eine beispielhafte integrierte Ein-Chip-System-Schaltung 1200, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß einer Ausführungsform zeigt. Die beispielhafte integrierte Schaltung 1200 weist einen oder mehrere Anwendungsprozessoren 1205 (z. B. CPUs) und mindestens einen Grafikprozessor 1210 auf und kann zusätzlich einen Bildprozessor 1215 und/oder einen Videoprozessor 1220 aufweisen, von denen jeder ein modularer IP-Kern aus derselben oder mehreren verschiedenen Entwurfseinrichtungen sein kann. Die integrierte Schaltung 1200 weist eine Peripherie- oder Buslogik auf, die einen USB-Controller 1225, einen UART-Controller 1230, einen SPI/SDIO-Controller 1235 und einen I2S/I2C-Controller 1240 aufweist. Außerdem kann die integrierte Schaltung eine Anzeigevorrichtung 1245 aufweisen, die mit einem Controller für die hochauflösende Multimedia-Schnittstelle (HDMI-Controller) 1250 und einer Mobilindustrie-Prozessorschnittstellen-Anzeigeschnittstelle (MIPI-Anzeigeschnittstelle) 1255 gekoppelt ist. Die Speicherung kann durch ein Flash-Speicher-Untersystem 1260 bereitgestellt sein, das einen Flash-Speicher und einen Flash-Speichercontroller aufweist. Die Speicherschnittstelle kann über einen Speichercontroller 1265 für den Zugriff auf SDRAM- oder SRAM-Speichervorrichtungen bereitgestellt sein. Einige integrierte Schaltungen weisen zusätzlich eine eingebettete Sicherheitsmaschine 1270 auf.
  • 13A-13B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC gemäß hier beschriebenen Ausführungsformen zeigen. 13A zeigt einen beispielhaften Grafikprozessor 1310 einer integrierten Ein-Chip-System-Schaltung, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß einer Ausführungsform. 13B zeigt einen zusätzlichen beispielhaften Grafikprozessor 1340 einer integrierten Ein-Chip-System-Schaltung, die unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, gemäß einer Ausführungsform. Der Grafikprozessor 1310 von 13A ist ein Beispiel eines Grafikprozessorkerns mit niedriger Leistungsaufnahme. Der Grafikprozessor 1340 von 13B ist ein Beispiel eines Grafikprozessorkerns mit höherer Rechenleistung. Die Grafikprozessoren 1310, 1340 können jeweils Varianten des Grafikprozessors 1210 von 12 sein.
  • Wie es in 13A gezeigt ist, weist der Grafikprozessor 1310 einen Vertexprozessor 1305 und einen oder mehrere Fragmentprozessoren 1315A-1315N (z. B. 1315A, 1315B, 1315C, 1315D, bis 1315N-1, 1315N) auf. Der Grafikprozessor 1310 kann unterschiedliche Schattierer-Programme über eine separate Logik ausführen, so dass der Vertexprozessor 1305 dazu optimiert ist, Operationen für Vertex-Schattierer-Programme auszuführen, während der eine oder die mehreren Fragmentprozessoren 1315A-1315N Fragment-Schattierungsoperationen (z. B. Pixel-Schattierungsoperationen) für Fragment- oder Pixel-Schattierer-Programme ausführen. Der Vertexprozessor 1305 führt die Vertexverarbeitungsstufe der 3D-Grafik-Pipeline durch und erzeugt Primitiv- und Vertexdaten. Der eine oder die mehreren Fragmentprozessoren 1315A-1315N verwenden Primitiv- und Vertexdaten, die durch den Vertexprozessor 1305 erzeugt werden, um einen Frame-Puffer zu erzeugen, der auf einer Anzeigevorrichtung angezeigt wird. In einer Ausführungsform sind der eine oder die mehreren Fragmentprozessoren 1315A-1315N dazu optimiert, Fragment-Schattierer-Programme auszuführen, die in der OpenGL-API bereitgestellt sind und verwendet werden können, um ähnliche Operationen durchzuführen wie ein Pixel-Schattierer-Programm, das in der Direct-3D-API bereitgestellt ist.
  • Der Grafikprozessor 1310 weist zusätzlich eine oder mehrere Speicherverwaltungseinheiten (MMUs) 1320A-1320B, Cache(s) 1325A-1325B und Schaltungszwischenverbindung(en) 1330A-1330B auf. Die eine oder mehreren MMUs 1320A-1320B stellen eine Virtuell-zu-Physisch-Adresszuordnung für den Grafikprozessor 1300 einschließlich des Vertexprozessors 1305 und/oder des einen oder der mehreren Fragmentprozessoren 1315A-1315N bereit, die auf Vertex- oder Bild-/Texturdaten, die in dem Speicher gespeichert sind, zusätzlich zu Vertex- oder Bild-/Texturdaten, die in dem einen oder den mehreren Caches 1320A-1320B gespeichert sind, verweisen kann. In einer Ausführungsform können die eine oder mehreren MMU(s) 1325A-1325B mit anderen MMUs innerhalb des Systems einschließlich einer oder mehrerer MMUs, die dem einen oder den mehreren Anwendungsprozessoren 1205, Bildprozessor 1215 und/oder Videoprozessor 1220 von 12 zugeordnet sind, synchronisiert sein, so dass jeder Prozessor 1205-1220 in einem gemeinsam genutzten oder vereinheitlichten virtuellen Speichersystem teilnehmen kann. Die eine oder mehreren Schaltungszwischenverbindungen ermöglichen es dem Grafikprozessor 1310 gemäß Ausführungsformen mit anderen IP-Kernen innerhalb des SoC eine Schnittstelle zu bilden, entweder über einen internen Bus des SoC oder über eine direkte Verbindung.
  • Wie es in 13B gezeigt ist, umfasst der Grafikprozessor 1340 die eine oder die mehreren MMU(s) 1320A-1320B, Caches 1325A-1325B und Schaltungszwischenverbindungen 1330A-1330B des Grafikprozessors 1310 von 13A. Der Grafikprozessor 1340 umfasst einen oder mehrere Schattierer-Kerne 1355A-1355N (z. B. 1455A, 1355B, 1355C, 1355D, 1355E, 1355F bis 1355N-1 und 1355N), was eine vereinheitlichte Schattierer-Kern-Architektur bietet, in der ein einzelner Kern oder Typ oder Kern alle Typen von programmierbarem Schattierer-Code einschließlich Schattierer-Programmcode zum Implementieren von Vertex-Schattierern, Fragment-Schattierern und/oder Rechen-Schattierern ausführen kann. Die genaue Anzahl von vorhandenen Schattierer-Kernen kann zwischen Ausführungsformen und Implementierungen variieren. Außerdem umfasst der Grafikprozessor 1340 einen Zwischenkernaufgabenverwalter 1345, der als ein Strangabfertiger fungiert, um Ausführungsstränge an einen oder mehrere Schattierer-Kernen 1355A-1355N zu entsenden, und eine Kachelungseinheit 1358 zum Beschleunigen von Kachelungsoperationen für kachelbasiertes Rendern, wobei Render-Operationen für eine Szene in Bildraum unterteilt werden, um zum Beispiel eine lokale räumliche Kohärenz innerhalb einer Szene zu nutzen oder um die Verwendung von internen Caches zu optimieren.
  • 14A-14B zeigen eine zusätzliche beispielhafte Grafikprozessorlogik gemäß hier beschriebenen Ausführungsformen. 14A zeigt einen Grafikkern 1400, der in dem Grafikprozessor 1210 von 12 enthalten sein kann und ein vereinheitlichter Schattierer-Kern 1355A-1355N wie in 13B sein kann. 14B zeigt eine in hohem Maße parallele Universalgrafikverarbeitungseinheit 1430, die eine in hohem Maße parallele Universalgrafikverarbeitungseinheit ist, die zum Einsatz auf einem Mehrchipmodul geeignet ist.
  • Wie es in 14A gezeigt ist, umfasst der Grafikkern 1400 einen gemeinsam genutzten Befehls-Cache 1402, eine Textureinheit 1418 und einen Cache/geteilten Speicher 1420, die den Ausführungsbetriebsmitteln innerhalb des Grafikkerns 1400 gemein sind. Der Grafikkern 1400 kann mehrere Slices 1401A-1401 N oder eine Partition für jeden Kern umfassen und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 1400 umfassen. Die Slices 1401A-1401N können Unterstützungslogik einschließlich eines lokalen Befehls-Caches 1404A-1404N, eines Strangplaners 1406A-1406N, eines Strangabfertigers 1408A-1408N und eines Satzes von Registern 1410A umfassen. Zum Durchführen von logischen Operationen können die Slices 1401A-1401N einen Satz von zusätzlichen Funktionseinheiten (AFUs 1412A-1412N), Gleitkommaeinheiten (FPU 1414A-1414N), arithmetisch-logischen Ganzzahl-Einheiten (ALU, 1416-1416N), Adressrecheneinheiten (ACU 1413A-1413N), Gleitkommaeinheiten mit doppelter Genauigkeit (DPFPU 1415A-1415N) und Matrixverarbeitungseinheiten (MPU 1417A-1417N) umfassen.
  • Einige der Recheneinheiten arbeiten mit einer spezifischen Genauigkeit. Zum Beispiel können die FPUs 1414A-1414N Gleitkommaoperationen mit einfacher Genauigkeit (32 Bit) und mit halber Genauigkeit (16 Bit) durchführen, während die DPFPUs 1415A-1415N Gleitkommaoperationen mit doppelter Genauigkeit (64 Bit) durchführen. Die ALUs 1416A-1416N können Ganzzahloperationen mit variabler Genauigkeit mit einer Genauigkeit von 8 Bit, 16 Bit und 32 Bit durchführen und können für Operationen mit gemischter Genauigkeit ausgelegt sein. Die MPUs 1417A-1417N können auch für Matrixoperationen mit gemischter Genauigkeit, einschließlich Gleitkommaoperationen mit halber Genauigkeit und 8-Bit-Ganzzahloperationen, ausgelegt sein. Die MPUs 1417-1417N können eine Vielfalt von Matrixoperationen durchführen, um Anwendungsrahmen für maschinelles Lernen zu beschleunigen, einschließlich des Ermöglichens einer Unterstützung für eine beschleunigte allgemeine Matrix-zu-Matrix-Multiplikation (GEMM). Die AFUs 1412A-1412N können zusätzliche logische Operationen durchführen, die von den Gleitkomma- oder Ganzzahleinheiten nicht unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Kosinus usw.).
  • Wie es in 14B gezeigt ist, kann eine Allzweck-Verarbeitungseinheit (GPGPU) 1430 dazu ausgelegt sein, zu ermöglichen, dass in hohem Maße parallele Rechenoperationen von einem Array von Grafikverarbeitungseinheiten durchgeführt werden. Außerdem kann die GPGPU 1430 direkt mit anderen Instanzen der GPGPU verbunden sein, um einen Multi-GPU-Cluster zu erstellen, um die Trainingsgeschwindigkeit für besonders tiefe neuronale Netze zu verbessern. Die GPGPU 1430 umfasst eine Host-Schnittstelle 1432, um eine Verbindung mit einem Host-Prozessor zu ermöglichen. In einer Ausführungsform ist die Host-Schnittstelle 1432 eine PCI-Express-Schnittstelle. Die Host-Schnittstelle kann jedoch auch eine anbieterspezifische Kommunikationsschnittstelle oder Kommunikationsstruktur sein. Die GPGPU 1430 empfängt Befehle von dem Host-Prozessor und verwendet einen globalen Planer 1434 zum Verteilen von Ausführungssträngen in Verbindung mit diesen Befehlen auf eine Menge von Rechen-Clustern 1436A-1436H. Die Rechen-Cluster 1436A-1436H teilen sich einen Cache-Speicher 1438. Der Cache-Speicher 1438 kann als ein Cache höherer Ebene für Cache-Speicher innerhalb der Rechen-Cluster 1436A-1436H dienen.
  • Die GPGPU 1430 umfasst Speicher 1434A-1434B, der über einen Satz von Speichercontrollern 1442A-1442B mit den Rechen-Clustern 1436A-1436H gekoppelt ist. In verschiedenen Ausführungsformen kann der Speicher 1434A-1434B verschiedene Typen von Speichervorrichtungen einschließlich dynamischen Speichers mit wahlfreiem Zugriff (DRAM) oder Grafikdirektzugriffsspeicher wie synchronen Grafikdirektzugriffsspeicher (SGRAM) einschließlich Grafikspeicher mit doppelter Datenrate (GDDR) umfassen.
  • In einer Ausführungsform umfassen die Rechen-Cluster 1436A-1436H jeweils einen Satz von Grafikkernen wie etwa den Grafikkern 1400 von 14A, die mehrere Typen von Ganzzahl- und Gleitkommalogikeinheiten umfassen können, die Rechenoperationen in einem Bereich von Genauigkeiten durchführen können, die auch für Maschinenlernberechnungen geeignet sind. Zum Beispiel und in einer Ausführungsform kann zumindest ein Teilsatz der Gleitkommaeinheiten in jedem der Rechen-Cluster 1436A-1436H dazu ausgelegt sein, 16-Bit- oder 32-Bit-Gleitkommaoperationen durchzuführen, während ein anderer Teilsatz der Gleitkommaeinheiten dazu ausgelegt sein kann, 64-Bit-Gleitkommaoperationen durchzuführen.
  • Mehrere Instanzen der GPGPU 1430 können dazu ausgelegt sein, als ein Rechen-Cluster zu fungieren. Der von dem Rechen-Cluster zur Synchronisierung und zum Datenaustausch verwendete Kommunikationsmechanismus variiert zwischen Ausführungsformen. In einer Ausführungsform kommunizieren die mehreren Instanzen der GPGPU 1430 über die Host-Schnittstelle 1432. In einer Ausführungsform umfasst die GPGPU 1430 einen E/A-Hub 1439, der die GPGPU 1430 mit einem GPU-Link 1440 koppelt, der eine Direktverbindung zu anderen Instanzen der GPGPU ermöglicht. In einer Ausführungsform ist der GPU-Link 1440 an eine dedizierte GPU-zu-GPU-Brücke gekoppelt, die eine Kommunikation und Synchronisierung zwischen mehreren Instanzen der GPGPU 1430 ermöglicht. In einer Ausführungsform koppelt der GPU-Link 1440 mit einer Hochgeschwindigkeitszwischenverbindung, um Daten zu anderen GPGPUs oder parallelen Prozessoren zu senden und zu empfangen. In einer Ausführungsform befinden sich die mehreren Instanzen der GPGPU 1430 in separaten Datenverarbeitungssystemen und kommunizieren über eine Netzvorrichtung, die über die Host-Schnittstelle 1432 zugänglich ist. In einer Ausführungsform kann der GPU-Link 1440 dazu ausgelegt sein, eine Verbindung zu einem Host-Prozessor zusätzlich zu oder alternativ zu der Host-Schnittstelle 1432 zu ermöglichen.
  • Während die veranschaulichte Konfiguration der GPGPU 1430 dazu ausgelegt sein kann, neuronale Netze zu trainieren, stellt eine Ausführungsform eine alternative Konfiguration der GPGPU 1430 bereit, die zur Bereitstellung innerhalb einer Inferenzplattform mit hoher Rechenleistung oder niedriger Leistungsaufnahme ausgelegt sein kann. In einer Inferenzkonfiguration umfasst die GPGPU 1430 weniger der Rechen-Cluster 1436A-1436H im Vergleich zu der Trainingskonfiguration. Außerdem kann sich die Speichertechnologie, die dem Speicher 1434A-1434B zugeordnet ist, zwischen Inferenz- und Trainingskonfigurationen unterscheiden, wobei Speichertechnologien mit höherer Bandbreite für Trainingskonfigurationen verwendet werden. In einer Ausführungsform kann die Inferenzkonfiguration der GPGPU 1430 inferenzspezifische Befehle unterstützen. Zum Beispiel kann eine Inferenzkonfiguration Unterstützung für eine oder mehrere 8-Bit-Ganzzahlskalarprodukt-Befehle bieten, die gemeinhin während Inferenzoperationen für bereitgestellte neuronale Netze verwendet werden.
  • Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung
  • Wie es oben beschrieben ist, bezieht sich der Begriff Rotoskopieren auf den Prozess des Übertragens eines Bildes oder eines Abschnitts eines Bildes aus einer ersten Videosequenz in eine andere Videosequenz. Der Ausdruck „Hintergrundschätzung“ bezieht sich auf den Prozess des Schätzens der Komponenten der Videosequenz, die sich außerhalb des Bildes oder eines Abschnitts eines Bildes befinden, das/der aus der ersten Videosequenz in eine zweite Videosequenz übertragen werden soll, d. h. des Hintergrunds der Videosequenz. Die Hintergrundschätzung ist eine Schlüsselkomponente des Rotoskopierens.
  • Es gibt zwei allgemeine Paradigmen für die Objektsegmentierung mittels Hintergrundsubtraktion mit einer Kamera mit fester Quelle. Wenn die Feldreferenz (d. h. ein Bild ohne Vordergrundobjekte) bekannt ist, kann eine einfache Hintergrundsubtraktionsoperation gute Ergebnisse erzielen. In der Praxis ist die Hintergrundfeldreferenz jedoch im Allgemeinen unbekannt und der Hintergrund muss approximiert werden, bevor eine Hintergrundsubtraktion durchgeführt wird.
  • Hier werden Systeme und Techniken zur Hintergrundschätzung für einen festen Kameraaufbau beschrieben, wobei ein Verfolger mit tiefem Lernen verwendet. Der hier beschriebene und beanspruchte Gegenstand ermöglicht eine Hintergrundschätzung, die minimale Anwenderinteraktion bei geringer Rechenintensität erfordert. Im Gegensatz zu bestehenden Rotoskopietechniken ermöglichen die hier beschriebenen Hintergrundschätzungstechniken ein Rotoskopieren mit nur minimaler Anwenderinteraktion, wodurch eine halbautomatische Funktionalität ermöglicht wird. Darüber hinaus nutzen die hier beschriebenen Techniken Verfahren mit tiefem Lernen, wodurch die Techniken verallgemeinert werden können.
  • In einigen Beispielen verwendet eine Pipeline zum halbautomatischen Rotoskopieren für Video eine siamesische Technik für tiefes Lernen. Die Pipeline kann ein tiefes, vollständig faltendes siamesisches Netz umfassen, das einen Grobverfolgungsalgorithmus (d. h. über Begrenzungsrahmen) eines anwenderdefinierten Objekts oder eines Bereichs von Interesse unter Verwendung einer minimalen Anzahl von anfänglichen Anmerkungen erzeugt. Die Begrenzungsrahmenausgabe für jedes von dem siamesischen Netz erzeugte Videobild liefert eine Vordergrund-Hintergrund-Saat, die an einen sekundären Algorithmus übergeben wird, der anschließend eine semantische oder pixelweise Segmentierung des verfolgten Objekts erzeugt. Eine Schätzung des Hintergrundinhalts kann aus einer gewichteten Näherung der Hintergründe, die in aufeinanderfolgenden Frames in einer Sequenz identifiziert werden, berechnet werden. Dieser geschätzte Hintergrund kann von der Bildsequenz subtrahiert werden, um das Objekt oder den Bereich von Interesse zu isolieren.
  • 15 zeigt ein Datenverarbeitungssystem, das dazu ausgelegt sein kann, die Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung gemäß den hier beschriebenen Ausführungsformen zu unterstützen. Unter Bezugnahme auf 15 kann in einigen Beispielen ein Datenverarbeitungssystem 1500 als ein heterogenes Verarbeitungssystem mit einem Zentralverarbeitungseinheits-Komplex (CPU-Komplex) 1510, einem vereinheitlichten Speicher 1530 und einer Allzweck-Grafikverarbeitungseinheit (GPGPU) 1540 implementiert sein. Der CPU-Komplex 1510 umfasst einen oder mehrere Prozessoren 1512, die ein Betriebssystem 1514 ausführen. Eine oder mehrere Spiel- und/oder Medienanwendungen 1516 können in der Umgebung ausgeführt werden, die von dem Betriebssystem 1514 bereitgestellt wird, das auf dem Prozessor 1512 ausgeführt wird. Der CPU-Komplex 1510 kann ferner einen Grafikvorrichtungstreiber 1520 aufweisen, der einen Abfertiger 1524 ausführt. Der Prozessor 1512 kann wie jeder der hier beschriebenen Prozessoren implementiert werden.
  • Die GPGPU 1540 weist mehrere Rechenblöcke 1544A-1544N auf, die eine oder mehrere hier beschriebene Instanzen der Ausführungslogik enthalten. Die GPGPU 1540 weist auch einen Satz von Registern 1545, einen Cache-Speicher 1547 und ein Leistungsaufnahme-und-Rechenleistungsmodul 1546 auf, die als gemeinsam genutzte Betriebsmittel für die Rechenblöcke 1544A-1544N verwendet werden können. In einer Ausführungsform umfassen die Register 1545 direkt und indirekt zugängliche Register, wobei die indirekt zugänglichen Register zur Verwendung in Matrixberechnungsoperationen optimiert sein können. Das Leistungsaufnahme-und-Rechenleistungsmodul 1546 kann dazu ausgelegt sein, die Leistungszufuhr und die Taktfrequenzen für die Rechenblöcke 1544A-1544N anzupassen, um Gate-Leerlaufkomponenten innerhalb der Rechenblöcke 1544A-1544N unter hoher Arbeitslast zu versorgen. Die GPGPU 1540 umfasst den lokalen GPGPU-Speicher 1548, bei dem es sich um physische Speichermodule handelt, die eine Grafikkarte oder ein Mehrchipmodul gemeinsam mit der GPGPU 1540 nutzen.
  • Der vereinheitlichte Speicher 1530 repräsentiert einen vereinheitlichten Adressraum, auf den der Prozessor 1512 und die GPGPU 1540 zugreifen können. Der vereinheitlichte Speicher umfasst den Systemspeicher 1532 sowie den GPGPU-Speicher 1538. In einigen Ausführungsformen umfasst der GPGPU-Speicher 1538 lokalen GPGPU-Speicher 1534 innerhalb der GPGPU 1540 und kann auch einen Teil oder die Gesamtheit des Systemspeichers 1532 umfassen. Beispielsweise kann der in dem Systemspeicher 1512 gespeicherte kompilierte Code 1534B für den Zugriff durch die GPGPU 1540 auch in den GPGPU-Speicher 1538 abgebildet werden. In einer Ausführungsform kann eine Laufzeitbibliothek 1536 in dem Systemspeicher 1532 ein Kompilieren und/oder Ausführen des kompilierten Codes 1534B erleichtern. Der Prozessor 1512 kann Befehle für einen in dem Systemspeicher 1532 gespeicherten Kompilierer 1535 ausführen. Der Kompilierer 1535 kann den Quellcode 1534A in den kompilierten Code 1534B zur Ausführung durch den Prozessor 1512 und/oder die GPGPU 1540 kompilieren. In einer Ausführungsform ist der Kompilierer 1535 ein Schattierer-Kompilierer zum Kompilieren von Schattierer-Programmen speziell für die Ausführung durch die GPGPU 1540 sein oder diesen umfassen.
  • In dem in 15 dargestellten Beispiel können ein oder mehrere Hintergrundschätzer 1522 von dem CPU-Komplex 1510 und/oder der GPGPU 1540 ausgeführt werden. In einigen Beispielen können die Hintergrundschätzer 1522 als Logikbefehle, die auf einem nichttransitorischen computerlesbaren Medium verkörpert sind, (d. h. Software) implementiert sein, während in einer anderen Ausführungsform ein oder mehrere Elemente der Hintergrundschätzer 1522 auf Firmware, Logikschaltungen oder Kombinationen davon reduziert sein können.
  • Nachdem verschiedene Strukturkomponenten zum Implementieren einer Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung beschrieben wurden, werden Operationen zum Implementieren einer Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung unter Bezugnahme auf 16A-18 beschrieben. In einigen Beispielen können die in 16 gezeigten Operationen von dem einen oder den mehreren Hintergrundschätzern 1522 allein oder in Kombination mit anderen Komponenten eines in 15 dargestellten Client-Systems 1500 implementiert werden.
  • Unter Bezugnahme auf 16 verarbeitet der eine oder die mehreren Hintergrundschätzer 1522 in Operation 1610 ein Eingangsvideo vor. In Operation 1615 wird das Eingangsvideo in eine oder mehrere Bildsequenzen umgewandelt. Beispielsweise kann das Eingangsvideo in eine oder mehrere Bildsequenzen segmentiert werden, die zumindest teilweise auf einer Analyse der Bewegung eines oder mehrerer Objekte in dem Eingangsvideo basieren. Alternativ oder zusätzlich kann das Eingangsvideo basierend auf Änderungen in dem Hintergrund der Szene in eine oder mehrere Bildsequenzen segmentiert werden.
  • In Operation 1620 empfangen der eine oder die mehreren Hintergrundschätzer 1522 ein ausgewähltes Objekt, das verfolgt werden soll. Unter Bezugnahme auf 17 kann in einigen Beispielen ein Anwender einen Begrenzungsrahmen in einer grafischen Anwenderschnittstelle anwenden, um eine Teilmenge eines Bildes in einem ersten Frame auszuwählen, die ein Objekt enthält, das in der Bildsequenz verfolgt werden soll. Die Grafikdaten, die den Inhalt des Begrenzungsrahmens repräsentieren, können aus Framedaten extrahiert und in den einen oder die mehreren Hintergrundschätzer 1522 eingegeben werden. Das zu verfolgende Objekt kann als Archetyp bezeichnet und in 17 als Z 1710 bezeichnet werden. Die Grafikdaten für das Objekt können in einem Array im Speicher gespeichert werden. In dem in 17 dargestellten Beispiel werden die Grafikdaten in einem dreidimensionalen Array gespeichert, das 127 × 127 × 3 misst.
  • In Operation 1625 wird der Ertrag, der durch den Begrenzungsrahmen in Operation 1620 ausgewählt wurde, als Startvorlage für ein siamesisches Netz verwendet. Unter Bezugnahme auf 17 wird der Archetyp Z 1710 an dem Eingangsknoten 1712 in das Netz eingegeben, der eine Merkmalsdarstellung 1714 des Archetyps erzeugt, die als 6×6×128-Datenarray in dem Speicher gespeichert wird. In ähnlicher Weise werden die Daten aus einem oder mehreren Suchbereichen aus nachfolgenden Frames, die mit X, 1720 bezeichnet sind, in einen Eingabeknoten 1720 des siamesischen Netzes eingegeben, der eine Merkmalsdarstellung 1724 des Inhalts in dem einen oder den mehreren Suchbereichen erzeugt, die im Speicher als 22×22×128-Datenarray gespeichert wird. Die jeweiligen Merkmalsdarstellungen 1714, 1724 werden in eine Faltungsoperation 1730 eingegeben.
  • Unter Bezugnahme auf 17 wurde in einigen Beispielen das siamesische Netz trainiert, um ein allgemeines Ähnlichkeitsmaß zwischen zwei Bildern zu lernen, und ist daher zum Lernen von Domänen wie Verfolgen geeignet. Wenn Translationen des Archetyps 1710 in dem einen oder den mehreren Suchbereichen 1720 vorhanden sind, gibt das siamesische Netz eine große positive Bewertung zurück. Im Gegensatz dazu erzeugen unähnliche Objekte negative Bewertungen. Da das siamesische Netz aus einer tiefen Architektur aufgebaut ist, kann es eine akkurate Ähnlichkeit erzeugen, die gegenüber einer Reihe verschiedener Objekttransformationen (z. B. Translationen, Beleuchtungsvariationen, morphologischen Änderungen, Drehungen usw.) robust ist.
  • Nach der CNN-basierten Einbettung werden die Muster- und Bereichsmerkmale in eine Faltungsoperation 1730 eingegeben, um ein räumlich aussagekräftiges Gitter 1740 von siamesischen Ähnlichkeitsbewertungen zu erzeugen, das den aktuellen Ort des Verfolgungsobjekts angibt. Diese letzte Faltungsoperation macht das Netz zu einem „vollständig faltenden“ Netz und reduziert die Anzahl der für die Verfolgung erforderlichen Gesamtberechnungen erheblich. In einigen Beispielen pflegt der Verfolgungsalgorithmus zusätzlich einen laufenden Durchschnitt von Exemplaren aus früheren Videobildern, um die Robustheit zu verbessern.
  • Unter Bezugnahme auf 16 können in Operation 1630 die Ähnlichkeitsbewertungen, die durch das siamesische Netz erzeugt werden, verwendet werden, um das Objekt von Interesse zu verfolgen, das in dem Begrenzungsrahmen in dem einen oder den mehreren nächsten Frames der zur Analyse ausgewählten Bildsequenz(en) ausgewählt ist. Sobald das Objekt von Interesse verfolgt wurde, können die Ähnlichkeitsbewertungen und die Begrenzungsrahmeninformationen verwendet werden, um zu bestimmen, welche Pixel in jedem Videoframe statt dem Objekt von Interesse dem Hintergrund zugewiesen werden sollen. Diese Daten können zusammengesetzt werden, um eine gewichtete Hintergrundnäherung zu berechnen (Operation 1635). In einigen Beispielen kann die gewichtete Hintergrundnäherung unter Verwendung der folgenden Gleichung berechnet werden:
    EQ1: B a p p r o x ( x , y , c ) = t = 1 T w 1 I ( x , y ) B t f ( x , y , c , t )
    Figure DE102020106728A1_0001
    w o b e i   { I ( x , y ) B t = 1   w e n n   ( x , y ) B t I ( x , y ) B t = 0   s o n s t
    Figure DE102020106728A1_0002
  • Wobei c den Farbkanal (z. B. rot, grün, blau) bezeichnet; T die Gesamtzahl der Bilder in dem Videosegment ist, wt der Gewichtswert für das Frame t ist (z. B. für einheitliche Gewichte oder einen Durchschnitt wird wt gesetzt: auf 1/T); I(x,y)Bt ist die Indikatorfunktion für Pixel (x,y) in Bezug auf den Begrenzungsrahmen Bt; und f(x,y,c,t) bezeichnet den Pixelwert für Pixel (x,y) und Kanal c bei Frame t.
  • Für Videodaten mit hoher Dichte kann die direkte Berechnung einer gewichteten Hintergrundnäherung unter Verwendung von Gleichung (1) ressourcenintensiv sein. Daher kann alternativ eine effizientere iterative Durchschnittsberechnung anstelle der direkten Berechnung aus (1) verwendet werden. Diese Berechnung kann wie in Gleichung 2 dargestellt durchgeführt werden:
    EQ 2: B a p p r o x ( x , y , c , t ) = t 1 t B a p p r o x ( x , y , c , t 1 ) + 1 t I ( x , y ) B t f ( x , y , c , t )
    Figure DE102020106728A1_0003
  • Nach dem Berechnen der gewichteten Hintergrundnäherung kann eine Hintergrundsubtraktion auf jedes Frame der Videosequenz angewendet werden, um das in Operation 1620 identifizierte Objekt von Interesse zu segmentieren. In einigen Beispielen läuft der Segmentierungsprozess gemäß Gleichung 3 ab:
    EQ 3: S e g ( x , y , c , t ) = | B a p p r o x ( x , y , c , t ) f ( x , y , c , t ) |
    Figure DE102020106728A1_0004
  • Das Ergebnis ist eine feinkörnige Vordergrundsegmentierung eines anwenderdefinierten Objekts von Interesse über die Videosequenz, die als rotoskopiertes Objekt in Operation 1645 ausgegeben werden kann.
  • 18 zeigt Aspekte einer Umgebung zum Unterstützen der Steuerungshintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung gemäß den hier beschriebenen Ausführungsformen. Unter Bezugnahme auf 18 kann in einigen Beispielen ein Eingangsvideo 1810 für ein oder mehrere Kamera-/Bewegungsdetektionsmodule 1820 bereitgestellt werden, die die in 16 dargestellten Operationen implementieren. Die Ausgabe des Kamera-/Bewegungsdetektionsmoduls 1820 kann an eine Folge von bewegungsbasierten Algorithmen 1830 oder eine Folge von kamerabasierten Algorithmen 1840 geleitet werden.
  • 19 ist ein Blockdiagramm einer Rechenvorrichtung 1900 einschließlich eines Grafikprozessors 1904 gemäß einer Ausführungsform. Die Rechenvorrichtung 1900 kann eine hier beschriebene Rechenvorrichtung wie beispielsweise das Datenverarbeitungssystem 100 wie in 1 sein. Die Rechenvorrichtung 1900 kann auch eine Kommunikationsvorrichtung wie ein Beistellkasten (z. B. Beistellkästen für internetbasiertes Kabelfernsehen usw.), auf dem globalen Positionsbestimmungssystem (GPS) basierte Vorrichtungen usw. sein oder in diesen enthalten sein. Die Rechenvorrichtung 1900 kann auch mobile Rechenvorrichtungen wie Mobiltelefone, Smartphones und persönliche digitale Assistenten (PDAs), Tablet-Computer, Laptops, E-Reader, intelligente Fernseher, Fernsehplattformen, am Körper tragbare Vorrichtungen (z. B. Brillen, Uhren, Armbänder, Smartcards, Schmuck, Kleidungsstücke usw.), Medienspieler usw. sein oder diese enthalten. Zum Beispiel umfasst die Rechenvorrichtung 1900 in einer Ausführungsform eine mobile Rechenvorrichtung, die eine integrierte Schaltung („IC“) wie beispielsweise ein Ein-Chip-System („SoC“ oder „SOC“), das verschiedene Hardware- und/oder Softwarekomponenten der Rechenvorrichtung 1900 auf einem einzigen Chip integriert, verwendet.
  • Die Rechenvorrichtung 1900 umfasst einen Grafikprozessor 1904. Der Grafikprozessor 1904 repräsentiert einen hier beschriebenen Grafikprozessor. Der Grafikprozessor umfasst eine oder mehrere Grafikmaschinen, Grafikprozessorkerne und andere Grafikausführungsbetriebsmittel, wie sie hier beschrieben sind. Solche Grafikausführungsbetriebsmittel können in Form von Ausführungseinheiten, Schattierer-Maschinen, Fragmentprozessoren, Vertexprozessoren, Streaming-Multiprozessoren, Grafikprozessor-Clustern oder einer beliebigen Ansammlung von Rechenbetriebsmitteln, die für die Verarbeitung von Grafik- und Bildressourcen geeignet sind, dargestellt werden, sind aber nicht darauf beschränkt.
  • In einer Ausführungsform umfasst der Grafikprozessor 1904 einen Cache 1914, der ein einzelner Cache sein oder in mehrere Segmente von Cache-Speicher unterteilt sein kann, einschließlich, aber nicht beschränkt auf eine beliebige Anzahl von L1-L2-, L3- oder L4-Caches, Render-Caches , Tiefen-Caches, Abtaster-Caches und/oder Schattierereinheits-Caches. In einer Ausführungsform umfasst der Grafikprozessor 1904 einen Planer 1924, der eine Variante der Planereinheit 1622 von 16 oder einer anderen hier beschriebenen Planerlogik sein kann. Der Grafikprozessor 1904 kann zusätzlich einen Befehls-Streamer 1926, einen Strangabfertiger 1934 und eine Barriere-/Synchronisationslogik 1936 neben einer GPGPU-Maschine 1944, die Hardwarelogik zum Durchführen der Grafikverarbeitung und Allzweckbefehlen wie hier beschrieben aufweist, umfassen.
  • Wie es dargestellt ist, kann die Rechenvorrichtung 1900 in einer Ausführungsform und zusätzlich zu dem Grafikprozessor 1904 ferner eine beliebige Anzahl und Art von Hardwarekomponenten und/oder Softwarekomponenten umfassen, einschließlich, aber nicht beschränkt auf einen Anwendungsprozessor 1906; Speicher 1908 und Eingabe/Ausgabe-Quellen (E/A-Quellen) 1910. Der Anwendungsprozessor 1906 kann mit einer Hardware-Grafik-Pipeline interagieren, wie es unter Bezugnahme auf 3 dargestellt ist, um die Grafik-Pipeline-Funktionalität gemeinsam zu nutzen. Verarbeitete Daten werden in einem Puffer in der Hardwaregrafik-Pipeline gespeichert und Zustandsinformationen werden in dem Speicher 1908 gespeichert. Die resultierenden Daten können zur Ausgabe über eine Anzeigevorrichtung wie die Anzeigevorrichtung 323 von 3 an einen Anzeigecontroller übertragen werden. Die Anzeigevorrichtung kann von verschiedenen Typen sein, beispielsweise eine Kathodenstrahlröhre (CRT), ein Dünnschichttransistor (TFT), eine Flüssigkristallanzeige (LCD), ein Array aus organischen Leuchtdioden (OLED-Array) usw., und kann zum Anzeigen von Informationen an einen Anwender über eine grafische Anwenderoberfläche ausgelegt sein.
  • Der Anwendungsprozessor 1906 kann einen oder mehrere Prozessoren wie etwa den einen oder die mehreren Prozessoren 102 von 1 umfassen und kann die Zentralverarbeitungseinheit (CPU) sein, die zumindest teilweise zum Ausführen eines Betriebssystems (OS) 1902 für die Rechenvorrichtung 1900 verwendet wird. Das Betriebssystem 1902 kann als Schnittstelle zwischen Hardware und/oder physischen Betriebsmittel der Rechenvorrichtung 1900 und einem oder mehreren Anwendern dienen. Das OS 1902 kann eine Grafiktreiberlogik 1922 wie beispielsweise den Anwendermodus-Grafiktreiber 1026 und/oder den Kernelmodus-Grafiktreiber 1029 von 10 aufweisen.
  • Es wird in Betracht gezogen, dass in einigen Ausführungsformen der Grafikprozessor 1904 als Teil des Anwendungsprozessors 1906 (wie beispielsweise eines Teils einer physischen CPU-Baugruppe) existieren kann. In diesem Fall kann mindestens ein Abschnitt des Speichers 1908 von dem Anwendungsprozessor 1906 und dem Grafikprozessor 1904 gemeinsam genutzt werden, obwohl mindestens ein Abschnitt des Speichers 1908 ausschließlich für den Grafikprozessor 1904 sein kann oder der Grafikprozessor 1904 einen separaten Speicher haben kann. Der Speicher 1908 kann einen vorab zugewiesenen Bereich eines Puffers (z. B. einen Framepuffer) umfassen; Fachleute sollten jedoch verstehen, dass die Ausführungsformen nicht darauf beschränkt sind und dass ein beliebiger Speicher verwendet werden kann, auf den die untere Grafikpipeline zugreifen kann. Der Speicher 1908 kann verschiedene Formen von Direktzugriffsspeicher (RAM) (z. B. SDRAM, SRAM usw.) umfassen, der eine Anwendung enthält, die den Grafikprozessor 1904 zum Rendern einer Desktop- oder 3D-Grafikszene verwendet. Ein Speichercontroller kann verwendet werden, um auf Daten in dem Speicher 1908 zuzugreifen und die Daten zur Grafikpipelineverarbeitung an den Grafikprozessor 1904 weiterzuleiten. Der Speicher 1908 kann anderen Komponenten innerhalb der Rechenvorrichtung 1900 zur Verfügung gestellt werden. Beispielsweise können alle Daten (z. B. Eingabegrafikdaten), die von verschiedenen E/A-Quellen 1910 der Rechenvorrichtung 1900 empfangen werden, vorübergehend in den Speicher 1908 in die Warteschlange gestellt werden, bevor sie von einem oder mehreren Prozessoren (z. B. dem Anwendungsprozessor 1906) bei der Implementierung eines Softwareprogramms oder einer Anwendung bearbeitet werden. In ähnlicher Weise werden Daten, die von einem Softwareprogramm dazu bestimmt werden, von der Rechenvorrichtung 1900 über eine der Rechensystemschnittstellen an eine externe Entität gesendet oder in einem internen Speicherelement gespeichert zu werden, häufig vorübergehend in dem Speicher 1908 in die Warteschlange gestellt, bevor sie übertragen oder gespeichert werden.
  • Die E/A-Quellen können Vorrichtungen wie Berührungsbildschirme, Berührungstafeln, Berührungsfelder, virtuelle oder normale Tastaturen, virtuelle oder normale Mäuse, Ports, Anschlüsse, Netzvorrichtungen oder dergleichen umfassen. Zudem können die E/A-Quellen 1910 ein oder mehrere E/A-Vorrichtungen umfassen, die zum Übertragen von Daten zu und/oder aus der Rechenvorrichtung 1900 (z. B. einem Netzwerkadapter); oder für einen nichtflüchtigen Speicher in großem Maßstab innerhalb der Rechenvorrichtung 1900 (z. B. Festplattenlaufwerk) implementiert sind. Anwendereingabevorrichtungen einschließlich alphanumerischer und anderer Tasten können verwendet werden, um Informationen und Befehlsauswahlen an den Grafikprozessor 1904 zu übermitteln. Eine andere Art von Anwendereingabevorrichtungen ist die Cursorsteuerung wie beispielsweise eine Maus, eine Steuerkugel, ein Berührungsbildschirm, ein Berührungsfeld oder ein Cursor-Richtungstasten zum Übermitteln von Richtungsinformationen und Befehlsauswahlen an die GPU und zum Steuern der Cursorbewegung auf der Anzeigevorrichtung. Kamera- und Mikrofonanordnungen der Rechenvorrichtung 1900 können verwendet werden, um Gesten zu beobachten, Audio und Video aufzuzeichnen und visuelle und hörbare Befehle zu empfangen und zu senden.
  • E/A-Quellen 1910, die als Netzschnittstellen konfiguriert sind, können Zugriff auf ein Netz wie beispielsweise ein LAN, ein Weitbereichsnetz (WAN), ein Metropolbereichsnett (MAN), ein Personenbereichsnetz (PAN), Bluetooth, ein Cloud-Netz, ein Zellen- oder Mobilfunknetz (z. B. 3. Generation (3G), 4. Generation (4G) usw.), ein Intranet, das Internet usw. bereitstellen. Netzschnittstelle(n) können beispielsweise eine drahtlose Netzschnittstelle mit einer oder mehreren Antennen umfassen. Netzschnittstelle(n) können beispielsweise auch eine drahtgebundene Netzschnittstelle zur Kommunikation mit entfernten Vorrichtungen über ein Netzkabel umfassen, das beispielsweise ein Ethernet-Kabel, ein Koaxialkabel, ein Glasfaserkabel, ein serielles Kabel oder ein paralleles Kabel sein kann.
  • Netzschnittstelle(n) können Zugriff auf ein LAN bereitstellen, beispielsweise durch Konformität mit IEEE 802.11-Standards, und/oder die drahtlose Netzschnittstelle kann Zugriff auf ein persönliches Netz bereitstellen, beispielsweise durch Konformität mit Bluetooth-Standards. Andere drahtlose Netzschnittstellen und/oder Protokolle einschließlich früherer und nachfolgender Versionen der Standards werden möglicherweise ebenfalls unterstützt. Zusätzlich zu oder anstelle der Kommunikation über die WLAN-Standards können Netzschnittstellen eine drahtlose Kommunikation bereitstellen, die beispielsweise Zeitmultiplex-Protokolle (TDMA-Protokolle), Protokolle des globalen Systems für Mobilkommunikation (GSM-Protokolle) und Codemultiplex-Protokolle (CDMA-Protokolle) und/oder jede andere Art von Protokollen für die drahtlose Kommunikation verwendet.
  • Es versteht sich, dass ein mehr oder weniger ausgestattetes System als das oben beschriebene Beispiel für gewisse Implementierungen bevorzugt werden kann. Daher kann die Konfiguration der Rechenvorrichtung 1900 von Implementierung zu Implementierung in Abhängigkeit von zahlreichen Faktoren wie etwa Preisbeschränkungen, Leistungsfähigkeitsanforderungen, technologischen Verbesserungen oder anderen Umständen variieren. Beispiele beinhalten (ohne Beschränkung) eine Mobilvorrichtung, einen persönlichen digitalen Assistenten, eine mobile Rechenvorrichtung, ein Smartphone, ein Mobiltelefon, ein Handset, einen Ein-Wege-Pager, einen Zwei-Wege-Pager, eine Nachrichtenvorrichtung, einen Computer, einen PC, einen Desktop-Computer, einen Laptop-Computer, einen Notebook-Computer, einen tragbaren Computer, einen Tablet-Computer, einen Server, ein Server-Array oder eine Serverfarm, einen Webserver, einen Netzserver, einen Internetserver, eine Workstation, einen Minicomputer, einen Main-Frame-Computer, einen Supercomputer, ein Netzgerät, ein Web-Gerät, ein verteiltes Rechensystem, Mehrprozessorsysteme, prozessorbasierte Systeme, Verbraucherelektronik, programmierbare Verbraucherelektronik, einen Fernseher, einen Digitalfernseher, einen Beistellkasten, einen Drahtloszugangspunkt, eine Basisstation, eine Teilnehmerstation, ein Mobilteilnehmerzentrum, einen Funknetzcontroller, einen Router, einen Hub, ein Gateway, eine Brücke, einen Switch, eine Maschine oder Kombinationen davon.
  • Die folgenden Klauseln und/oder Beispiele beziehen sich auf spezifische Ausführungsformen oder Beispiele davon. Besonderheiten in den Beispielen können an beliebiger Stelle in einer oder mehreren Ausführungsformen verwendet werden. Die verschiedenen Merkmale der unterschiedlichen Ausführungsformen oder Beispiele können verschiedenartig mit manchen enthaltenen Merkmalen kombiniert werden und andere können ausgeschlossen werden, zur Eignung für eine Vielzahl unterschiedlicher Anwendungen. Beispiele können den Gegenstand wie etwa ein Verfahren, Mittel zum Ausführen von Handlungen des Verfahrens, mindestens ein maschinenlesbares Medium, das Befehle enthält, die, wenn sie durch eine Maschine ausgeführt werden, die Maschine dazu veranlassen, Handlungen des Verfahrens oder einer Vorrichtung oder eines Systems durchzuführen, gemäß hier beschriebenen Ausführungsformen und Beispielen umfassen. Verschiedene Komponenten können ein Mittel zum Durchführen der beschriebenen Operationen oder Funktionen sein.
  • Beispiel 1 ist eine Vorrichtung, die einen Prozessor für Folgendes umfasst: Empfangen eines Eingangsvideos; Umwandeln des Eingangsvideos in eine oder mehrere Bildsequenzen, die zumindest teilweise auf einer Analyse einer Bewegung eines oder mehrerer Objekte in dem Eingangsvideo basieren; Empfangen eines Indikators eines Objekts von Interesse in einem ersten Frame, das durch mehrere Frames in dem Eingangsvideo verfolgt werden soll; und Anwenden eines faltenden neuronalen Netzes, um das Objekt von Interesse durch die mehreren Frames in dem Eingangsvideo zu verfolgen.
  • Beispiel 2 kann den Gegenstand von Beispiel 1 umfassen, wobei der Indikator eines zu verfolgenden Objekts von Interesse erste Grafikdaten umfasst, die den Inhalt eines Begrenzungsrahmens repräsentieren, der auf einer grafischen Anwenderschnittstelle dargestellt ist.
  • Beispiel 3 kann den Gegenstand eines der Beispiele 1-2 umfassen, wobei der Prozessor die Grafikdaten in einem dreidimensionalen Array in einem Speicher speichert.
  • Beispiel 4 kann den Gegenstand eines der Beispiele 1-3 umfassen, wobei der Prozessor ausgelegt ist zum: Liefern der Grafikdaten aus dem Begrenzungsrahmen an einen ersten Eingangsknoten eines siamesischen Netzes; und Liefern von zweiten Grafikdaten aus einem Suchbereich aus einem nachfolgenden Frame an einen zweiten Eingangsknoten des siamesischen Netzes; wobei das siamesische Netz ein Gitter von Ähnlichkeitsbewertungen zwischen den ersten Grafikdaten und den zweiten Grafikdaten erzeugt, wobei eine hohe Ähnlichkeitsbewertung angibt, dass das Objekt von Interesse in dem Begrenzungsrahmen in dem Suchbereich vorhanden ist.
  • Beispiel 5 kann den Gegenstand eines der Beispiele 1-4 umfassen, wobei der Prozessor ausgelegt ist zum: Verwenden des von dem siamesischen Netz erzeugten Gitters von Ähnlichkeitsbewertungen, um das Objekt von Interesse in einem oder mehreren nachfolgenden Frames der Bildsequenz zu verfolgen.
  • Beispiel 6 kann den Gegenstand eines der Beispiele 1-5 umfassen, wobei der Prozessor ausgelegt ist zum: Verwenden des Gitters von Ähnlichkeitsbewertungen, um Pixeldaten in einem oder mehreren Frames in der Bildsequenz als Hintergrundinhalt zuzuweisen; und Berechnen einer gewichteten Näherung des Hintergrundinhalts des einen oder der mehreren Frames in der Bildsequenz.
  • Beispiel 7 kann den Gegenstand eines der Beispiele 1-6 umfassen, wobei der Prozessor ausgelegt ist zum: Subtrahieren der gewichteten Näherung des Hintergrundinhalts von einem oder mehreren Frames in der Bildsequenz, um ein rotoskopiertes Objekt zu erzeugen.
  • Beispiel 8 ist ein nicht transitorisches maschinenlesbares Medium zum Speichern von Befehlen, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren zu Folgendem veranlassen: Empfangen eines Eingangsvideos; Umwandeln des Eingangsvideos in eine oder mehrere Bildsequenzen, die zumindest teilweise auf einer Analyse einer Bewegung eines oder mehrerer Objekte in dem Eingangsvideo basieren; Empfangen eines Indikators eines Objekts von Interesse in einem ersten Frame, das durch mehrere Frames in dem Eingangsvideo verfolgt werden soll; und Anwenden eines faltenden neuronalen Netzes, um das Objekt von Interesse durch die mehreren Frames in dem Eingangsvideo zu verfolgen.
  • Beispiel 9 kann den Gegenstand von Beispiel 8 umfassen, wobei der Indikator eines zu verfolgenden Objekts von Interesse erste Grafikdaten umfasst, die Inhalt eines Begrenzungsrahmens repräsentieren, der auf einer grafischen Anwenderschnittstelle dargestellt ist.
  • Beispiel 10 kann den Gegenstand eines der Beispiele 8-9 umfassen, der ferner Befehle umfasst, die den Prozessor zu Folgendem konfigurieren: Speichern der Grafikdaten in einem dreidimensionalen Array in einem Speicher.
  • Beispiel 11 kann den Gegenstand eines der Beispiele 8-10 umfassen, der ferner Befehle umfasst, die den Prozessor zu Folgendem konfigurieren: Liefern der Grafikdaten aus dem Begrenzungsrahmen an einen ersten Eingangsknoten eines siamesischen Netzes; und Liefern von zweiten Grafikdaten aus einem Suchbereich aus einem nachfolgenden Frame an einen zweiten Eingangsknoten des siamesischen Netzes; wobei das siamesische Netz ein Gitter von Ähnlichkeitsbewertungen zwischen den ersten Grafikdaten und den zweiten Grafikdaten erzeugt, wobei eine hohe Ähnlichkeitsbewertung angibt, dass das Objekt von Interesse in dem Begrenzungsrahmen in dem Suchbereich vorhanden ist.
  • Beispiel 12 kann den Gegenstand eines der Beispiele 8-11 umfassen, der ferner Befehle umfasst, die den Prozessor zu Folgendem konfigurieren: Verwenden des von dem siamesischen Netz erzeugten Gitters von Ähnlichkeitsbewertungen, um das Objekt von Interesse in einem oder mehreren nachfolgenden Frames der Bildsequenz zu verfolgen.
  • Beispiel 13 kann den Gegenstand eines der Beispiele 8-12 umfassen, der ferner Befehle umfasst, die den Prozessor zu Folgendem konfigurieren: Verwenden des Gitters von Ähnlichkeitsbewertungen, um Pixeldaten in einem oder mehreren Frames in der Bildsequenz als Hintergrundinhalt zuzuweisen; und Berechnen einer gewichteten Näherung des Hintergrundinhalts des einen oder der mehreren Frames in der Bildsequenz.
  • Beispiel 14 kann den Gegenstand eines der Beispiele 8-13 umfassen, der ferner Befehle umfasst, die den Prozessor zu Folgendem konfigurieren: Subtrahieren der gewichteten Näherung des Hintergrundinhalts von einem oder mehreren Frames in der Bildsequenz, um ein rotoskopiertes Objekt zu erzeugen.
  • Beispiel 15 ist ein computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen eines Eingangsvideos; Umwandeln des Eingangsvideos in eine oder mehrere Bildsequenzen, die zumindest teilweise auf einer Analyse einer Bewegung eines oder mehrerer Objekte in dem Eingangsvideo basieren; Empfangen eines Indikators eines Objekts von Interesse in einem ersten Frame, das durch mehrere Frames in dem Eingangsvideo verfolgt werden soll; und Anwenden eines faltenden neuronalen Netzes, um das Objekt von Interesse durch die mehreren Frames in dem Eingangsvideo zu verfolgen.
  • Beispiel 16 kann den Gegenstand von Beispiel 15 umfassen, wobei der Indikator eines zu verfolgenden Objekts von Interesse erste Grafikdaten umfasst, die Inhalt eines Begrenzungsrahmens repräsentieren, der auf einer grafischen Anwenderschnittstelle dargestellt ist.
  • Beispiel 17 kann den Gegenstand eines der Beispiele 15-16 umfassen, der ferner umfasst.
  • Beispiel 18 kann den Gegenstand eines der Beispiele 15-17 umfassen, der ferner umfasst: Liefern der Grafikdaten aus dem Begrenzungsrahmen an einen ersten Eingangsknoten eines siamesischen Netzes; und Liefern von zweiten Grafikdaten aus einem Suchbereich aus einem nachfolgenden Frame an einen zweiten Eingangsknoten des siamesischen Netzes; wobei das siamesische Netz ein Gitter von Ähnlichkeitsbewertungen zwischen den ersten Grafikdaten und den zweiten Grafikdaten erzeugt, wobei eine hohe Ähnlichkeitsbewertung angibt, dass das Objekt von Interesse in dem Begrenzungsrahmen in dem Suchbereich vorhanden ist.
  • Beispiel 19 kann den Gegenstand eines der Beispiele 15-18 umfassen, der ferner umfasst: Verwenden des von dem siamesischen Netz erzeugten Gitters von Ähnlichkeitsbewertungen, um das Objekt von Interesse in einem oder mehreren nachfolgenden Frames der Bildsequenz zu verfolgen.
  • Beispiel 20 kann den Gegenstand eines der Beispiele 15-19 umfassen, der ferner umfasst: Verwenden des Gitters von Ähnlichkeitsbewertungen, um Pixeldaten in einem oder mehreren Frames in der Bildsequenz als Hintergrundinhalt zuzuweisen; und Berechnen einer gewichteten Näherung des Hintergrundinhalts des einen oder der mehreren Frames in der Bildsequenz.
  • Beispiel 21 kann den Gegenstand eines der Beispiele 15-20 umfassen, der ferner umfasst: Subtrahieren der gewichteten Näherung des Hintergrundinhalts von einem oder mehreren Frames in der Bildsequenz, um ein rotoskopiertes Objekt zu erzeugen.
  • Ausführungsformen können beispielsweise als Computerprogrammprodukt bereitgestellt sein, das ein oder mehrere maschinenlesbare Medien umfassen kann, auf denen maschinenausführbare Befehle gespeichert sind, die, wenn sie von einer oder mehreren Maschinen wie einem Computer, einem Netz von Computern oder anderen elektronische Einrichtungen ausgeführt werden, dazu führen können, dass eine oder mehrere Maschinen Operationen gemäß den hier beschriebenen Ausführungsformen ausführen. Ein maschinenlesbares Medium kann, ohne darauf beschränkt zu sein, Disketten, optische Datenträger, CD-ROMs (Kompaktscheiben-Nur-Lese-Speicher) und magnetooptische Datenträger, ROMs, RAMs, EPROMs (löschbare programmierbare Nur-Lese-Speicher), EEPROMs (elektrisch löschbare programmierbare Nur-Lese-Speicher), magnetische oder optische Karten, Flash-Speicher oder andere Arten von Medien/maschinenlesbaren Medien, die zum Speichern von maschinenausführbaren Befehlen geeignet sind, umfassen.
  • Darüber hinaus können Ausführungsformen als Computerprogrammprodukt heruntergeladen werden, wobei das Programm über ein oder mehrere durch eine Trägerwelle oder ein anderes Ausbreitungsmedium verkörperte und/oder modulierte Datensignale über eine Kommunikationsverbindung (z. B. ein Modem und/oder eine Netzverbindung) von einem entfernten Computer (z. B. einem Server) zu einem anfordernden Computer (z. B. einem Client) übertragen werden kann.
  • Fachleute werden aus der vorstehenden Beschreibung erkennen, dass die ausgedehnten Techniken der Ausführungsformen in einer Vielzahl von Formen implementiert werden können. Obwohl die Ausführungsformen in Verbindung mit bestimmten Beispielen davon beschrieben wurden, soll daher der wahre Umfang der Ausführungsformen nicht darauf eingeschränkt sein, da andere Abwandlungen für Fachleute bei Studium der Zeichnungen, der Beschreibung und der folgenden Ansprüche ersichtlich werden.

Claims (14)

  1. Vorrichtung, die Folgendes umfasst: einen Prozessor, der ausgelegt ist zum: Empfangen eines Eingangsvideos; Umwandeln des Eingangsvideos in eine oder mehrere Bildsequenzen, die zumindest teilweise auf einer Analyse einer Bewegung eines oder mehrerer Objekte in dem Eingangsvideo basieren; Empfangen eines Indikators eines Objekts von Interesse in einem ersten Frame, das durch mehrere Frames in dem Eingangsvideo verfolgt werden soll; und Anwenden eines faltenden neuronalen Netzes, um das Objekt von Interesse durch die mehreren Frames in dem Eingangsvideo zu verfolgen.
  2. Vorrichtung nach Anspruch 1, wobei der Indikator eines zu verfolgenden Objekts von Interesse erste Grafikdaten umfasst, die den Inhalt eines Begrenzungsrahmens repräsentieren, der auf einer grafischen Anwenderschnittstelle dargestellt ist.
  3. Vorrichtung nach einem der Ansprüche 1-2, wobei der Prozessor ausgelegt ist zum: Speichern der Grafikdaten in einem dreidimensionalen Array in einem Speicher.
  4. Vorrichtung nach einem der Ansprüche 1-3, wobei der Prozessor ausgelegt ist zum: Liefern der Grafikdaten aus dem Begrenzungsrahmen an einen ersten Eingangsknoten eines siamesischen Netzes; und Liefern von zweiten Grafikdaten aus einem Suchbereich aus einem nachfolgenden Frame an einen zweiten Eingangsknoten des siamesischen Netzes; wobei das siamesische Netz ein Gitter von Ähnlichkeitsbewertungen zwischen den ersten Grafikdaten und den zweiten Grafikdaten erzeugt, wobei eine hohe Ähnlichkeitsbewertung angibt, dass das Objekt von Interesse in dem Begrenzungsrahmen in dem Suchbereich vorhanden ist.
  5. Vorrichtung nach einem der Ansprüche 1-4, wobei der Prozessor ausgelegt ist zum: Verwenden des von dem siamesischen Netz erzeugten Gitters von Ähnlichkeitsbewertungen, um das Objekt von Interesse in einem oder mehreren nachfolgenden Frames der Bildsequenz zu verfolgen.
  6. Vorrichtung nach einem der Ansprüche 1-5, wobei der Prozessor ausgelegt ist zum: Verwenden des Gitters von Ähnlichkeitsbewertungen, um Pixeldaten in einem oder mehreren Frames in der Bildsequenz als Hintergrundinhalt zuzuweisen; und Berechnen einer gewichteten Näherung des Hintergrundinhalts des einen oder der mehreren Frames in der Bildsequenz.
  7. Vorrichtung nach einem der Ansprüche 1-6, wobei der Prozessor ausgelegt ist zum: Subtrahieren der gewichteten Näherung des Hintergrundinhalts von einem oder mehreren Frames in der Bildsequenz, um ein rotoskopiertes Objekt zu erzeugen.
  8. Computerimplementiertes Verfahren, das Folgendes umfasst: Empfangen eines Eingangsvideos; Umwandeln des Eingangsvideos in eine oder mehrere Bildsequenzen, die zumindest teilweise auf einer Analyse einer Bewegung eines oder mehrerer Objekte in dem Eingangsvideo basieren; Empfangen eines Indikators eines Objekts von Interesse in einem ersten Frame, das durch mehrere Frames in dem Eingangsvideo verfolgt werden soll; und Anwenden eines faltenden neuronalen Netzes, um das Objekt von Interesse durch die mehreren Frames in dem Eingangsvideo zu verfolgen.
  9. Verfahren nach Anspruch 8, wobei der Indikator eines zu verfolgenden Objekts von Interesse erste Grafikdaten umfasst, die Inhalt eines Begrenzungsrahmens repräsentieren, der auf einer grafischen Anwenderschnittstelle dargestellt ist.
  10. Verfahren nach einem der Ansprüche 8-9, das ferner umfasst: Speichern der Grafikdaten in einem dreidimensionalen Array in einem Speicher.
  11. Verfahren nach einem der Ansprüche 8-10, das ferner umfasst: Liefern der Grafikdaten aus dem Begrenzungsrahmen an einen ersten Eingangsknoten eines siamesischen Netzes; und Liefern von zweiten Grafikdaten aus einem Suchbereich aus einem nachfolgenden Frame an einen zweiten Eingangsknoten des siamesischen Netzes; wobei das siamesische Netz ein Gitter von Ähnlichkeitsbewertungen zwischen den ersten Grafikdaten und den zweiten Grafikdaten erzeugt, wobei eine hohe Ähnlichkeitsbewertung angibt, dass das Objekt von Interesse in dem Begrenzungsrahmen in dem Suchbereich vorhanden ist.
  12. Verfahren nach einem der Ansprüche 8-11, das ferner umfasst: Verwenden des von dem siamesischen Netz erzeugten Gitters von Ähnlichkeitsbewertungen, um das Objekt von Interesse in einem oder mehreren nachfolgenden Frames der Bildsequenz zu verfolgen.
  13. Verfahren nach einem der Ansprüche 8-12, das ferner umfasst: Verwenden des Gitters von Ähnlichkeitsbewertungen, um Pixeldaten in einem oder mehreren Frames in der Bildsequenz als Hintergrundinhalt zuzuweisen; und Berechnen einer gewichteten Näherung des Hintergrundinhalts des einen oder der mehreren Frames in der Bildsequenz.
  14. Verfahren nach einem der Ansprüche 8-13, das ferner umfasst: Subtrahieren der gewichteten Näherung des Hintergrundinhalts von einem oder mehreren Frames in der Bildsequenz, um ein rotoskopiertes Objekt zu erzeugen.
DE102020106728.3A 2019-03-27 2020-03-12 Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung Pending DE102020106728A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/366,322 2019-03-27
US16/366,322 US20200311948A1 (en) 2019-03-27 2019-03-27 Background estimation for object segmentation using coarse level tracking

Publications (1)

Publication Number Publication Date
DE102020106728A1 true DE102020106728A1 (de) 2020-10-01

Family

ID=72607590

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102020106728.3A Pending DE102020106728A1 (de) 2019-03-27 2020-03-12 Hintergrundschätzung für Objektsegmentierung mittels Grobstufenverfolgung

Country Status (2)

Country Link
US (1) US20200311948A1 (de)
DE (1) DE102020106728A1 (de)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111708448B (zh) * 2019-05-08 2023-11-03 义隆电子股份有限公司 用于触控装置的控制系统及方法
US11948401B2 (en) * 2019-08-17 2024-04-02 Nightingale.ai Corp. AI-based physical function assessment system

Also Published As

Publication number Publication date
US20200311948A1 (en) 2020-10-01

Similar Documents

Publication Publication Date Title
DE102019117514A1 (de) Punktwolkenblickwinkel und skalierbare komprimierung/dekomprimierung
DE102019119058A1 (de) Punktwolkenvorgänge
DE102019117592A1 (de) Videoverarbeitungsmechanismus
DE102019120661A1 (de) Videoverfeinerungsmechanismus
DE102019119102A1 (de) Spärliche repräsentation für voxel
DE102019120554A1 (de) Video-umcodierungsmechanismus mit sechs freiheitsgraden
DE102020115026A1 (de) Systeme und Verfahren zur Tonabbildung von Bildern mit hohem Dynamikumfang für auf tiefem Lernen basierende Verarbeitung von hoher Qualität
DE102019119085A1 (de) Punktbasiertes rendern und entfernung von projektionsrauschen
DE102019117495A1 (de) System und verfahren zur 3d-blob-klassifizierung und -übertragung
DE102019101118A1 (de) Anweisung und Logik für systolisches Skalarprodukt mit Akkumulation
DE102019117218A1 (de) Reduziertes Rendern eines Videos mit sechs Freiheitsgraden
DE102020121814A1 (de) Vorrichtung und Verfahren zum Verwenden von Dreieckspaaren und gemeinsam genutzten Transformationsschaltungen zum Verbessern der Strahlverfolgungsleistung
DE112017003932T5 (de) Mechanismus zum Beschleunigen von Grafikarbeitslasten in einer Mehrkern-Datenverarbeitungsarchitektur
DE102020107080A1 (de) Grafiksysteme und Verfahren zum Beschleunigen von Synchronisation mittels feinkörniger Abhängigkeitsprüfung und Planungsoptimierungen basierend auf verfügbarem gemeinsam genutztem Speicherplatz
DE102020115680A1 (de) LESEZUSAMMENFüGUNG UND M ULTICAST-RÜCKFÜHRUNG FÜR EINEN GETEILTEN LOKALEN SPEICHER
DE102020108476A1 (de) Mechanismus zum Ausführen nichtlinearer Funktionen in einem Beschleuniger des maschinellen Lernens
DE102020129756A1 (de) Verwendung eines efehls einer rchitektur mit einem efehlssatz (isa) zur ektornormalisierung
DE102020105902A1 (de) Hardware-indexzuordnungsmechanismus
DE102020126177A1 (de) Verfahren und vorrichtung zum planen der threadreihenfolge, um den cache-wirkungsgrad zu verbessern
DE102020132871A1 (de) Verbessern von hierarchischer tiefenpuffer-cullingeffizienz durch maskenakkumulation
DE112018007634T5 (de) Vorrichtung und verfahren für eine virtualisierte anzeige
DE102019110027A1 (de) Kachelbasiertes rendern für mehrere auflösungen von bildern
DE102020124872A1 (de) Verwendung von innere-abdeckung-informationen durch eine konservative-rasterung-pipeline zum aktivieren von earlyz für eine konservative rasterung
DE102020130880A1 (de) Mechanismus zur partitionierung eines geteilten lokalen speichers
DE102020115578A1 (de) Management von partiellem schreiben in einer grafik-enginemit mehreren kacheln