DE102013006396A1 - Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit - Google Patents

Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit Download PDF

Info

Publication number
DE102013006396A1
DE102013006396A1 DE102013006396.5A DE102013006396A DE102013006396A1 DE 102013006396 A1 DE102013006396 A1 DE 102013006396A1 DE 102013006396 A DE102013006396 A DE 102013006396A DE 102013006396 A1 DE102013006396 A1 DE 102013006396A1
Authority
DE
Germany
Prior art keywords
processing unit
graphics
parallel processing
input
memory
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.)
Ceased
Application number
DE102013006396.5A
Other languages
English (en)
Inventor
Albert Meixner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013006396A1 publication Critical patent/DE102013006396A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units
    • G06F9/3887Concurrent instruction execution, e.g. pipeline or look ahead using a plurality of independent parallel functional units controlled by a single instruction for multiple data lanes [SIMD]
    • HELECTRICITY
    • H05ELECTRIC TECHNIQUES NOT OTHERWISE PROVIDED FOR
    • H05KPRINTED CIRCUITS; CASINGS OR CONSTRUCTIONAL DETAILS OF ELECTRIC APPARATUS; MANUFACTURE OF ASSEMBLAGES OF ELECTRICAL COMPONENTS
    • H05K13/00Apparatus or processes specially adapted for manufacturing or adjusting assemblages of electric components
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10TTECHNICAL SUBJECTS COVERED BY FORMER US CLASSIFICATION
    • Y10T29/00Metal working
    • Y10T29/49Method of mechanical manufacture

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Manufacturing & Machinery (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Advance Control (AREA)
  • Image Generation (AREA)
  • Image Processing (AREA)

Abstract

Es sind das Verwenden einer allgemeinen Verarbeitungseinheit als eine programmierbare Funktionseinheit einer Grafikparallelverarbeitungseinheit und ein Verfahren zur Herstellung einer Grafikparallelverarbeitungseinheit offenbart. In einer Ausführungsform umfasst die Grafikparallelverarbeitungseinheit: (1) Beschleuniger, (2) eine Eingangs-/Ausgangsschnittstelle, die mit jedem der Beschleuniger verbunden ist, und (3) eine allgemeine Verarbeitungseinheit, die mit der Eingangs-/Ausgangsschnittstelle verbunden und als eine programmierbare Funktionseinheit der Grafikparallelverarbeitungseinheit ausgebildet ist, wobei die allgemeine Verarbeitungseinheit ausgebildet ist, Vektorbefehle über die Eingangs-/Ausgangsschnittstelle zu Vektordatenpfaden für die programmierbare Funktionseinheit auszugeben.

Description

  • TECHNISCHES GEBIET
  • Die Anmeldung betrifft allgemein Grafikverarbeitungseinheiten (GPUs) und betrifft insbesondere Komponenten einer GPU.
  • HINTERGRUND
  • In traditionellen GPUs sind festgelegte bzw. unveränderliche Funktionseinheiten statisch miteinander verbunden, um eine grafische Verarbeitung mit festgelegter bzw. unveränderlicher Funktion zu bilden. Die Ausgabepakete jeweils der festgelegten Funktionseinheiten oder festgelegten Funktionsstufen sind so gestaltet, dass sie mit den Eingangspaketen der in Bearbeitungsrichtung nachgeordneten festgelegten Funktionseinheit übereinstimmen. Eine flexiblere Vorgehensweise besteht darin, die grafische Verarbeitung als Software als ein Programm oder Programme zu definieren, die auf einem programmierbaren Prozessor abgearbeitet werden. In einer derartigen Parallelverarbeitungseinheit bzw. Pipeline sind die Funktionsstufen in Software eingerichtet, wobei Daten über ein reguläres Speichersystem für allgemeine Zwecke transportiert werden.
  • ÜBERBLICK
  • In einem Aspekt ist eine Grafikparallelverarbeitungseinheit bzw. Grafik-Pipeline offenbart. In einer Ausführungsform umfasst die Grafikparallelverarbeitungseinheit: (1) Beschleuniger, (2) eine Eingangs-/Ausgangsschnittstelle, die mit jedem der Beschleuniger verbunden ist, und (3) eine allgemeine Verarbeitungseinheit, die mit der Eingangs-/Ausgangsschnittstelle verbunden und als eine programmierbare Funktionseinheit der Grafikverarbeitungsleitung ausgebildet ist, wobei die allgemeine Verarbeitungseinheit ausgebildet ist, Vektorbefehle über die Eingangs-/Ausgangsschnittstelle an Vektordatenpfade für die programmierbare Funktionseinheit auszugeben.
  • In einem weiteren Aspekt ist eine Vorrichtung offenbart. In einer Ausführungsform umfasst die Vorrichtung: (1) einen skalaren Verarbeitungskern, der programmiert ist, eine Funktionseinheit einer Grafikparallelverarbeitungseinheit zu emulieren, und (2) einen Speicher, der direkt mit dem skalaren Verarbeitungskern verbunden ist und ein Grafikregister enthält, das ausgebildet ist, Eingangsoperanden und Ausgangsoperanden für Beschleuniger der Grafikparallelverarbeitungseinheit zu speichern.
  • In einem noch weiteren Aspekt ist ein Verfahren zur Herstellung einer Grafikparallelverarbeitungseinheit offenbart. In einer Ausführungsform umfasst das Verfahren: (1) Verbinden einer festgelegten Funktionseinheit mit einer Eingangs-/Ausgangsschnittstelle, (2) Verbinden einer allgemeinen Verarbeitungseinheit mit der Eingangs-/Ausgangsschnittstelle, (3) Programmieren der allgemeinen Verarbeitungseinheit derart, dass eine Funktionseinheit einer Grafikparallelverarbeitungseinheit emuliert wird, und (4) Verbinden von Vektordatenpfaden mit der Eingangs-/Ausgangsschnittstelle, wobei die Vektordatenpfade mit der allgemeinen Verarbeitungseinheit und der Funktionseinheit verknüpft sind.
  • KURZE BESCHREIBUNG
  • Es sei nun auf die folgende Beschreibung in Verbindung mit den begleitenden Zeichnungen verwiesen, in denen:
  • 1 eine Blockansicht einer Ausführungsform eines Rechnersystems ist, in welchem ein oder mehrere Aspekte der Offenbarung eingerichtet sind;
  • 2 ein Blockdiagramm einer Ausführungsform einer Grafikparallelverarbeitungseinheit bzw. Grafik-Pipeline zeigt, die gemäß den Prinzipien der Erfindung aufgebaut ist; und
  • 3 ein Flussdiagramm eines Verfahrens zur Herstellung einer Grafikparallelverarbeitungseinheit zeigt, wobei das Verfahren gemäß den Prinzipien der Erfindung ausgeführt wird.
  • DETAILLIERTE BESCHREIBUNG
  • In Pipelines bzw. Parallelverarbeitungseinheiten mit Software-definierten Funktionseinheiten wird typischer Weise ein kundenspezifischer Prozessor verwendet, um die programmierbaren Funktionsstufen einzurichten und der Prozessor ist aufgebaut, parallelen Code zu verarbeiten. Somit erfordert der kundenspezifische Prozessor die notwendigen Modifizierungen und den zugehörigen Aufwand, um einen Prozessor zu erhalten, der speziell zur Verarbeitung parallelen Codes ausgebildet ist. Während der Prozessor für spezielle Zwecke bestens geeignet für äußerst parallelen Code ist, ist er für skalaren Code wenig geeignet.
  • Daher ist hierin eine programmierbare Grafikparallelverarbeitungseinheit bzw. Grafik-Pipeline offenbart, in der eine allgemeine Verarbeitungseinheit verwendet ist, um Funktionsstufen der Pipeline bzw. Parallelverarbeitungseinheit einzurichten. Die programmierbare Grafik-Pipeline bzw. Grafikparallelverarbeitungseinheit behandelt vorteilhafter Weise Vektordatenpfade einer Funktionsstufe als Beschleuniger und fügt die Vektordatenpfade einer Eingangs-/Ausgangsschnittstelle hinzu, die programmierbare, nicht statische Verbindungen zwischen Stufen der Grafikparallelverarbeitungseinheit bereit stellt. Die allgemeine Verarbeitungseinheit ist eine standardmäßige Verarbeitungseinheit mit einem skalaren Kern, der für die Verarbeitung eines skalaren Codes geeignet ist. Beispielsweise kann die allgemeine Verarbeitungseinheit eine standardmäßige CPU, etwa eine ARM A9/A15 sein. Wie hierin offenbart ist, kann die allgemeine Verarbeitungseinheit auch einen Prozessorspeicher enthalten.
  • Ein Beschleuniger ist eine in Hardware eingerichtete Einheit, die verwendet wird, die Verarbeitung in der Grafikparallelverarbeitungseinheit zu beschleunigen. Ein Beispiel eines Beschleunigers ist eine Rastereinheit mit festgelegter Funktion oder eine festgelegte Textureinheit. Damit stellt die Erfindung eine Grafikvektorverarbeitungsarchitektur mit einer allgemeinen Verarbeitungseinheit bereit, die Vektorbefehle an eine Eingangs-/Ausgangsschnittstelle als reguläre Grafikanforderungen ausgibt. Eine Anforderung ist eine Arbeitsanforderung, die von einem der Beschleuniger auszuführen ist. Die Vektorbefehle können daher über einen Steuerbus ausgegeben werden, der die allgemeine Verarbeitungseinheit mit der Eingangs-/Ausgangsschnittstelle verbindet. In einer Ausführungsform ist die Eingangs-/Ausgangsschnittstelle eine Eingangs-/Ausgangsverbindungskomponente, wie sie in der Patentanmeldung mit der Nr. 13/722,901, Albert Meixner, mit dem Titel „Eine Eingangs-/Ausgangsverbindungseinheit zum Zugreifen auf grafische festgelegte Funktionseinheiten in einer Software-definierten Parallelverarbeitungseinheit und eine Verfahren zum Betreiben einer Parallelverarbeitungseinheit bzw. Pipeline” offenbart ist, wobei die Anmeldung am gleichen Tag wie diese Erfindung eingereicht wurde und hiermit durch Bezugnahme mit eingeschlossen ist.
  • Die allgemeine Verarbeitungseinheit umfasst einen Prozessorspeicher, der darin eingebaut ist, mit einem Grafikregister, das ausgebildet ist, Eingangsoperanden und Ausgangsoperanden für die Vektordatenpfade und die anderen Beschleuniger der Grafikvektorverarbeitungsstufe aufzunehmen. In einer Ausführungsform ist der Prozessorspeicher ein L2-Cache-Speicher. Ein L2- oder Ebene2-Cache-Speicher ist Teil einer Speicherarchitektur mit mehreren Ebenen der allgemeinen Verarbeitungseinheit. In einigen Ausführungsformen ist der Prozessorspeicher in die Hauptplatine der allgemeinen Verarbeitungseinheit integriert. Der Prozessorspeicher kann ein Speicher mit wahlfreiem Zugriff (RAM) oder eine andere Art eines flüchtigen Speichers sein. Der Prozessorspeicher wird verwendet, die Zugriffszeit für die allgemeine Verarbeitungseinheit für die gemeinsame Benutzung eines Datenpfads, der die allgemeine Verarbeitungseinheit mit der Eingangs-/Ausgangsschnittstelle verbindet, zu minimieren, wobei dennoch ein großer Betrag an Bandbreite zwischen dem Verarbeitungskern der Verarbeitungseinheit und den Vektorpfaden bereitgestellt wird.
  • Die Größe des L2-Cache-Speichers des Prozessors macht es möglich, dass das Grafikregister, das darin enthalten ist, eine große Anzahl an aktiven Vektorregistern aufweist. In einigen Ausführungsformen haben die L2-Cache-Speicher eine Größe von ungefähr 256 KB bis ungefähr 2 MB. In diesen Ausführungsformen wird ungefähr die Hälfte der Cache-Speicher als Register etwa 64 K- bis 512 K-Register, verwendet. In einer Ausführungsform werden minimal mindestens 32 Register pro schneller Speicherzugriffs-(FMA)Einheit in den Vektordatenpfaden 237 und 239 verwendet. Damit macht es die erfindungsgemäße programmierbare Grafikparallelverarbeitungseinheit möglich, dass eine große Anzahl an Grafiksträngen bzw. Grafik-Threads eine gewisse Latenzzeit toleriert.
  • Die allgemeine Verarbeitungseinheit muss nicht in hohem Maße multi-strang-fähig bzw. multi-thread-fähig sein. In einer Ausführungsform ist die allgemeine Verarbeitungseinheit so gestaltet, dass sie einen einzelnen Hardware-Strangkontext pro kooperativem Strangarray (CTA) (4–8 insgesamt) unterstützt, um den pro-CTA-Parallelverarbeitungs-Emulationscode abzuarbeiten, ohne dass Software-Kontextschalter erforderlich sind.
  • In einer Ausführungsform wird auf die in dem Prozessorspeicher abgelegten Daten, beispielsweise Eingangs- und Ausgangsoperanden, in Blöcken mittels der Eingangs-/Ausgangsschnittstelle zugegriffen, um die Bandbreite bei geringem Aufwand zu maximieren. In einer Ausführungsform liegt die Blockgröße in einem Bereich von 64 Bytes bis 256 Bytes.
  • In einer hierin offenbarten Ausführungsform ist ein schneller RAM für die Verarbeitungseinheit der programmierbaren Grafikvektorverarbeitungsstufe ebenfalls als ein Beschleuniger eingerichtet. Damit wird ein Speicher mit mehreren Bänken als ein zusätzlicher Beschleuniger bereitgestellt, um einen schnellen RAM für die Verarbeitungseinheit zu unterstützen, für den stark divergente Zugriffe erforderlich sind. In einigen Ausführungsformen kann eine Texturstufe einer Grafikparallelverarbeitungseinheit Kosten bzw. den Aufwand minimieren, indem der schnelle RAM-Beschleuniger für ihre Datenbänke verwendet wird, die ebenfalls stark divergente Zugriffe erfordern.
  • Die Grafikparallelverarbeitungsarchitektur, die hierin bereitgestellt ist, ermöglicht vorteilhafter Weise eine niedrigere Zugangsbarriere für das Aufbauen einer GPU. Da eine allgemeine Verarbeitungseinheit eingesetzt ist, werden Details, die am Aufbau eines üblichen Prozessors beteiligt sind, vermieden. Des Weiteren sind die geschaffenen Beschleuniger zumeist zustandslos und einfacher zu gestalten und zu verifizieren als ein vollständiger kundenspezifischer Prozessor.
  • Wenn die Programmierseite betrachtet wird, so läuft der Hauptanteil des Vektorverarbeitungs-Emulationscodes auf einem standardmäßigen skalaren Kern, wodurch der Anteil an Infrastruktur verringert wird, etwa für Compiler, Debugger und Profiler, die erforderlich sind, und es wird dadurch einfacher, ein akzeptableres Leistungsverhalten als auf einem kundenspezifischen skalaran Kern zu erreichen.
  • Ferner überwindet die offenbarte Architektur oder verringert zumindest die Grenzen zwischen einer allgemeinen Verarbeitungseinheit und einer GPU. Das Umschalten zwischen skalaren und Daten-parallelen Abschnitten kann in einigen wenigen Zyklen erfolgen, da die allgemeine Verarbeitungseinheit direkten Zugriff auf alle Vektorregister besitzt, die in dem Prozessorspeicher gespeichert sind. Als zusätzlicher Vorteil ergibt sich, dass die allgemeine Verarbeitungseinheit Zugriff auf alle Beschleuniger hat, die mit der Eingangs-/Ausgangsschnittstelle verbunden sind, und diese somit direkt in ansonsten skalaren Code verwenden kann.
  • Bevor diverse Ausführungsformen der neuen programmierbaren Funktionseinheiten und damit verknüpfter Verfahren beschrieben werden, sei ein Rechnersystem beschrieben, in welchem die allgemeine Verarbeitungseinheit in einer GPU verwendbar ist.
  • 1 ist eine Blockansicht einer Ausführungsform eines Rechnersystems 100, in welchem ein oder mehrere Aspekte der Erfindung eingerichtet sind. Das Rechnersystem 100 umfasst einen Systemdatenbus 122, eine zentrale CPU 102, Eingangseinrichtungen 108, einen Systemspeicher 104, ein Grafikverarbeitungssubsystem 106 und eine Anzeigeeinrichtungen 110. In alternativen Ausführungsformen sind die CPU 102, Bereiche des Grafikverarbeitungssubsystems 106, der Systemdatenbus 132 oder eine Kombination davon in eine einzelne Verarbeitungseinheit integriert. Ferner kann die Funktion eines Grafikverarbeitungssubsystems 106 in einen Chipsatz oder in eine andere Art an Verarbeitungseinheit oder Co-Prozessor für speziellen Zweck integriert sein.
  • Wie gezeigt, verbindet der Systemdatenbus 132 die CPU 102, die Eingangseinrichtungen 108, den Systemspeicher 104 und das Grafikverarbeitungssubsystem 106 miteinander. In anderen Ausführungsformen kann der Systemspeicher 100 direkt mit der CPU 102 verbunden sein. Die CPU 102 empfängt Anwendereingaben aus den Eingangseinrichtungen 108, führt Programmbefehle, die in dem Systemspeicher 104 abgelegt sind, aus, operiert auf Daten, die in dem Systemspeicher 104 abgelegt sind, und sendet Befehle und/oder Daten (d. h., Daten oder Aufgaben für die Abarbeitung) an eine Grafikverarbeitungseinheit 116, um dort abgearbeitet zu werden. Der Systemspeicher 104 umfasst typischer Weise einen dynamischen Speicher mit wahlfreiem Zugriff bzw. Direktzugriffspeicher (DRAM), der verwendet wird, um Programmbefehle und Daten zur Abarbeitung durch die CPU 102 und das Grafikverarbeitungssubsystem 106 zu speichern. Das Grafikverarbeitungssubsystem 106 empfängt von der CPU 102 gesendete Daten bzw. zu verarbeitende Arbeit und verarbeitet die Daten unter Anwendung ihrer Grafikverarbeitungseinheit (GPU) 116. In dieser Ausführungsform erledigt die CPU 116 den Arbeitsaufwand, um Grafikbilder zu erzeugen und in den Anzeigeeinrichtungen 110 darzustellen. In anderen Ausführungsformen können die GPU 116 oder das Grafikverarbeitungssubsystem 106 als Ganzes für nicht-grafische Verarbeitungszwecke verwendet werden.
  • Wie ferner gezeigt ist, enthält der Systemspeicher 104 ein Anwendungsprogramm 112, eine Anwenderprogrammierschnittstelle (API) 114 und einen Grafikverarbeitungseinheiten-(GPU)Treiber 115. Das Anwendungsprogramm 112 erzeugt Aufrufe für die API 114, um eine gewünschte Menge an Ergebnissen typischerweise in Form einer Sequenz von Grafikbildern zu erzeugen.
  • Das Grafikverarbeitungssubsystem 106 enthält die GPU 116, einen Chip-internen CPU-Speicher 122, einen Chip-internen GPU-Datenbus 136, einen lokalen GPU-Speicher 120 und einen GPU-Datenbus 134. Die GPU 116 ist ausgebildet, mit dem Chip-internen GPU-Speicher 122 über den Chip-internen GPU-Datenbus 136 und mit dem lokalen GPU-Speicher 120 über den GPU-Datenbus 134 zu kommunizieren. Die GPU 116 kann die von der CPU 102 ausgegebenen Befehle empfangen, die Befehle zum Erzeugen von Grafikdaten und Bildern abarbeiten und diese Bilder in dem lokalen GPU-Speicher 120 speichern. Anschließend kann die GPU 116 gewisse Grafikbilder, die in dem lokalen GPU-Speicher 120 gespeichert sind, auf den Anzeigeeinrichtungen 110 anzeigen.
  • Die GPU 116 enthält Beschleuniger 117, eine IO-Schnittstelle 118 und eine allgemeine Verarbeitungseinheit 119. Die Beschleuniger 117 sind als Hardware eingerichtete Verarbeitungsblöcke oder Einheiten vorgesehen, die die Verarbeitung in der allgemeinen Verarbeitungseinheit 119 beschleunigen. Die Beschleuniger 117 enthalten eine konventionelle Einheit oder Einheiten mit festgelegter Funktion mit einer Schaltung, die ausgebildet ist, eine spezielle Funktion auszuführen. Die Beschleuniger 117 enthalten auch einen Vektordatenpfad oder Pfade und einen Speicher mit mehreren Bänken, die mit der allgemeinen Verarbeitungseinheit 119 verknüpft sind.
  • Die IO-Schnittstelle 118 ist ausgebildet, die allgemeine Verarbeitungseinheit 119 jeweils mit den Beschleunigern 117 zu verbinden und die notwendigen Umwandlungen zwischen Software- und Hardwareformaten bereitzustellen, um eine Kommunikation aus Anforderungen und Antworten zwischen der allgemeinen Verarbeitungseinheit 119 und den Beschleunigern 117 zu ermöglichen. Die IO-Schnittstelle 118 stellt eine programmierbare Pipeline bzw. Parallelverarbeitungsstufe mit dynamisch definierten Verbindungen zwischen Stufen anstelle von statischen Verbindungen bereit. Die IO-Schnittstelle 118 kann diverse Zustände zwischen der allgemeinen Verarbeitungseinheit 119 und den Beschleunigern 117 austauschen. Eingaben und Ausgaben werden ebenfalls von einem Software-freundlichen Format der allgemeinen Verarbeitungseinheit 119 in ein Hardware-freundliches Format der Beschleuniger übersetzt und umgekehrt. Ferner vollführt die IO-Schnittstelle 118 eine Übersetzung von Zuständen von einem Software-freundlichen Format in ein Hardware-freundliches Format und umgekehrt. In einer Ausführungsform stellt die IO-Schnittstelle vorteilhafter Weise alle der zuvor genannten Funktionen in einem einzelnen Verarbeitungsblock bereit, der von allen Beschleunigern 117 und der allgemeinen Verarbeitungseinheit 119 gemeinsam benutzt wird. Somit stellt die IO-Schnittstelle vorteilhafter Weise eine einzelne Schnittstelle bereit, die die notwendige Logik enthält, um die allgemeine Verarbeitungseinheit 119 dynamisch mit den Beschleunigern 117 zu verbinden, um damit eine Grafikparallelverarbeitungseinheit bzw. Pipeline zu bilden und um eine Kommunikation auf Befehlsebene zwischen diesen zu verwalten. Die IO-Verbindungseinheit umfasst mehrere Komponenten, die bidirektionale Verbindungen bereitstellen, wozu bidirektionale Steuerverbindungen zu dem skalaren Prozessorkern der allgemeinen Verarbeitungseinheit 119 und bidirektionale Datenverbindungen zu dem Prozessorspeicher der allgemeinen Verarbeitungseinheit 119 gehören.
  • Die allgemeine Verarbeitungseinheit 119 ist ein Standardprozessor mit einem skalaren Kern, der für die Verarbeitung eines skalaren Codes geeignet ist. Die allgemeine Verarbeitungseinheit 119 umfasst ferner einen Prozessorspeicher, der direkt mit dem skalaren Prozessorkern verbunden ist. Durch diese direkte Verbindung ist der Prozessorspeicher als ein Teil der allgemeinen Verarbeitungseinheit 119 eingerichtet, so dass der skalare Prozessorkern ohne Verwendung der IO-Schnittstelle 118 damit in Verbindung treten kann. Es sei nun kurz auf 2 verwiesen; sowohl der Prozessorspeicher 214 als auch die CPU 210 sind Teil der allgemeinen Verarbeitungseinheit 119 und die CPU 210 tritt bei einem Zugriff auf den Prozessorspeicher 214 nicht mit der IO-Schnittstelle 118 in Verbindung. In einer Ausführungsform kann die CPU 102 als die allgemeine Verarbeitungseinheit für die GPU 116 verwendet sein und kann mit den Beschleunigern über den Systemdatenbus 132 und die IO-Schnittstelle 118 in Verbindung treten. Damit kann die CPU 102 zusammen mit der allgemeinen Verarbeitungseinheit 119 verwendet werden oder kann anstelle der allgemeinen Verarbeitungseinheit 119 verwendet werden.
  • Anstatt dass beide vorhanden sind, wie dies dargestellt ist, ersetzt in einigen Ausführungsformen die allgemeine Verarbeitungseinheit 119 die CPU 102 vollständig. In dieser Konfiguration gibt es keine Unterscheidung zwischen dem lokalen CPU-Speicher 120 und dem Systemspeicher 104. Dieser ist durch einen einzelnen gemeinsam benutzten Speicher ersetzt. Beispielsweise sind die CPU 102 und der Systemspeicher 104 nicht vorhanden, und das Anwendungsprogramm 112, die API 114 und der GPU-Treiber 115 liegen in dem lokalen GPU-Speicher 120 und werden von der allgemeinen Verarbeitungseinheit 119 ausgeführt. Genaueres über eine Ausführungsform einer Grafikparallelverarbeitungseinheit gemäß den Prinzipien der Erfindung ist nachfolgend im Zusammenhang mit der 2 offenbart.
  • Die GPU 116 kann mit einer beliebigen Größe an Chip-internem GPU-Speicher 122 und lokalem GPU-Speicher 120 versehen sein, wobei auch kein Speicher mit eingeschlossen ist, und es können der Chip-interne GPU-Speicher 122, der lokale GPU-Speicher 120 und der Systemspeicher 104 in beliebiger Kombination für Speicheroperationen verwendet sein.
  • Der Chip-interne GPU-Speicher 122 ist so ausgebildet, dass er GPU-Programmiercode 128 und Chipinterne Puffer bzw. Zwischenspeicher 130 enthält. Der GPU-Programmiercode 128 kann von dem GPU-Treiber 115 zu dem Chip-internen GPU-Speicher 122 über den Systemdatenbus 132 übertragen werden.
  • Der lokale GPU-Speicher 120 enthält typischerweise einen weniger teuren dynamischen Speicher mit wahlfreiem Zugriff außerhalb des Chips (DRAM) und wird auch verwendet, um Daten und Programme zu speichern, die von der GPU 116 verwendet werden. Wie gezeigt, enthält der lokale GPU-Speicher 120 einen Blockpuffer 126. Der Blockpuffer 126 speichert Daten für mindestens eine zweidimensionale Oberfläche, die zum Ansteuern der Anzeigeeinrichtungen 110 verwendet werden kann. Ferner kann der Blockpuffer 126 mehr als eine zwei-dimensionale Oberfläche enthalten, so dass die GPU 116 ein Bild in einer einzelnen zwei-dimensionalen Oberfläche erzeugen kann, während eine zweite zwei-dimensionale Oberfläche verwendet wird, um die Anzeigeeinrichtungen 110 anzusteuern.
  • Die Anzeigeeinrichtungen 110 sind eine oder mehrere Ausgabeeinrichtungen, die in der Lage sind, ein visuelles Bild, das einem Eingangsdatensignal entspricht, auszusenden. Beispielsweise kann eine Anzeigeeinrichtung aufgebaut werden unter Anwendung eines Monitors mit Kathodenstrahlröhre (CRT), einer Flüssigkristallanzeige, oder einem anderen geeigneten Anzeigesystem. Die Eingangsdatensignale für die Anzeigeeinrichtungen 110 werden typischer Weise so erzeugt, dass der Inhalt eines oder mehrere Blöcke aus Bilddaten gerastert wird, die in dem Blockpuffer 126 gespeichert sind.
  • Nachdem ein Rechnersystem beschrieben ist, in welchem die erfindungsgemäße programmierbare Grafikparallelverarbeitungseinheit bzw. Pipeline und die Verfahren eingerichtet oder ausgeführt werden können, wird nunmehr eine spezielle Ausführungsform einer programmierbaren Grafikparallelverarbeitungseinheit bzw. Pipeline in der Umgebung einer GPU 200 beschrieben.
  • 2 zeigt eine Blockansicht einer Ausführungsform einer programmierbaren Grafikparallelverarbeitungseinheit bzw. Pipeline 200, die gemäß den Prinzipien der Erfindung aufgebaut ist. Die programmierbare Grafikparallelverarbeitungseinheit 200 umfasst eine allgemeine Verarbeitungseinheit 210, eine IO-Schnittstelle 220 und Beschleuniger 230.
  • Die allgemeine Verarbeitungseinheit 210 ist eine standardmäßige Verarbeitungseinheit mit einem Verarbeitungskern 212 und einem Prozessorspeicher 214. Der Prozessorkern 212 ist ein skalarer Kern, der für die Verarbeitung eines skalaren Codes ausgebildet ist. Der Prozessorspeicher 214 ist als Teil der allgemeinen Verarbeitungseinheit 210 eingerichtet. Der Prozessorspeicher 214 ist ausgebildet, die von dem Verarbeitungskern 212 zu verarbeitenden Daten oder die Daten, die an die Beschleuniger 230 zur Verarbeitung zu senden sind, zu speichern. In einer Ausführungsform ist der Prozessorspeicher 214 ein L2-Cache-Speicher. In anderen Ausführungsformen ist der Prozessorspeicher 214 ein Speicher mit wahlfreiem Zugriff bzw. ein Direktzugriffspeicher (RAM) oder ein schneller interner Speicher.
  • Der Prozessorspeicher 214 enthält eine Grafikregisterdatei 215. Die Grafikregisterdatei 215 ist ausgebildet, Beschleunigerdaten einschließlich von Eingangs- und Ausgangsoperanden für die Beschleuniger 230 aufzunehmen. Die Grafikregisterdatei 215 ist ausgebildet, eine Datei bzw. Ansammlung aus aktiven Vektoren der Beschleuniger 230 zu enthalten. Ein aktiver Vektor ist ein Vektor oder sind Vektordaten, die aktuell in der Grafikparallelverarbeitungseinheit 200 verarbeitet werden.
  • Die allgemeine Verarbeitungseinheit 210 ist mit der IO-Schnittstelle 220 über zwei bidirektionale Verbindungen verbunden. Wie in 2 gezeigt ist, ist der Verarbeitungskern 212 mit der IO-Schnittstelle 220 über eine bidirektionale Steuerverbindung 213 verbunden, und der Prozessorspeicher 214 ist mit der IO-Schnittstelle 220 über eine bidirektionale Datenverbindung 217 verbunden. In einer Ausführungsform sind die bidirektionale Steuerverbindung 213 und die bidirektionale Datenverbindung 217 konventionelle Verbindungseinheiten, die so dimensioniert, positioniert und angeschlossen sind, dass sie zumindest die damit verknüpfte Kommunikation, wie sie hierin beschrieben ist, ermöglichen.
  • Die IO-Schnittstelle 220 ist eine einzelne Schnittstelle, die die allgemeine Verarbeitungseinheit 210 mit den Beschleunigern 230 verbindet, um eine Grafikparallelverarbeitungseinheit bzw. Pipeline zu bilden. Die IO-Schnittstelle 220 enthält mehrere Komponenten, die ausgebildet sind, nicht-permanente Verbindungen zwischen der allgemeinen Verarbeitungseinheit 210 und den Beschleunigern 230 bereitzustellen und die geeigneten Umwandlungen bereitzustellen, so dass eine Kommunikation und Verarbeitung von Anforderungen und Antworten zwischen den Komponenten möglich ist. In einer Ausführungsform stellt die IO-Schnittstelle 220 dynamische Verbindungen zwischen der allgemeinen Verarbeitungseinheit 210 und den Beschleunigern 230 für jede Anforderung, die von der allgemeinen Verarbeitungseinheit 210 erzeugt wird, bereit. Eine Anforderung ist ein Befehl oder ein Kommando, um eine Aktion auszuführen oder Daten zu verarbeiten. Eine Anforderung wird von dem Verarbeitungskern 212 für einen der Beschleuniger 230 zur Ausführung erzeugt. Eine Antwort wird erzeugt oder bereitgestellt von einem der speziellen Beschleuniger 230 als Ergebnis auf die Anforderung. Zu jeder Anforderung gehören Parameter und Zustandsinformation, die die Beschleuniger 230 verwenden, um die Anforderungen abzuarbeiten. In einigen Ausführungsformen ist die IO-Schnittstelle 220 die IO-Schnittstelle 118 aus 1.
  • Die Beschleuniger 230 sind als Hardware eingerichtete Einheiten vorgesehen, die ausgebildet sind, die Verarbeitung in der Grafikparallelverarbeitungseinheit 200 zu beschleunigen. Die Beschleuniger 230 enthalten drei festgelegte bzw. unveränderliche Funktionseinheiten 231, 232 und 233. Die festgelegten Funktionseinheiten 231, 232, 233 sind festgelegte bzw. unveränderliche Funktionseinheiten, die typischer Weise in einer GPU vorhanden sind. Jede der festgelegten Funktionseinheiten 231, 232, 233 ist mit der erforderlichen Schaltungstechnik versehen, die dazu dient, eine spezielle Funktion einer Grafikparallelverarbeitung bzw. Pipeline auszuführen. In einer Ausführungsform sind die festgelegten Funktionseinheiten 231, 232 und 233 entsprechend eine Geometriehilfsstufe, eine Oberflächenhilfsstufe und eine Texturstufe. Der Fachmann auf diesem Gebiet erkennt, dass andere Arten an festgelegten Funktionseinheiten als Beschleuniger anwendbar sind.
  • Die Beschleuniger 230 enthalten ferner einen Speicher mit mehreren Bänken 235, einen als 237 bezeichneten Vektordatenpfad A und einen als 239 bezeichneten Vektordatenpfad B. Im Gegensatz zu einer programmierbaren Funktionseinheit, die in einem Prozessor für spezielle Zwecke eingerichtet und so ausgebildet ist, dass sie mit überwiegend parallelem Code arbeitet, enthält die allgemeine Verarbeitungseinheit 210 keine Vektordatenpfade oder einen schnellen RAM. Stattdessen ist die Funktion dieser Komponenten extern an einen programmierbaren Prozessor vergeben und ist mit einem festgelegten Format in Form von Beschleunigern vorgesehen. Somit gibt der Verarbeitungskern 212 Vektorbefehle als reguläre Grafikanforderung an den speziellen Vektordatenpfad, d. h. den Vektordatenpfad A 237 oder den Vektordatenpfad B 239 aus. Die Vektorbefehle werden über die bidirektionale Steuerverbindung 213 an die IO-Schnittstelle 220 übermittelt. Die IO-Schnittstelle 220 übersetzt das Software-Format des Vektorbefehls in ein Hardware-Format für den geeigneten Vektordatenpfad und übermittelt den Vektorbefehl dahin über eine Beschleunigerverbindung, die speziell jeweils einem einzelnen der Beschleuniger 230 zugeordnet ist. Die jeweils speziell zugeordneten Beschleunigerverbindungen werden allgemein in 2 als Elemente 240 bezeichnet und sind insbesondere als Elemente 241, 242, 243, 244, 245 und 246 bezeichnet.
  • In 2 sind zwei der Beschleuniger, die festgelegte Funktionseinheit 233 und der Speicher mit mehreren Bänken 235 direkt zusammen über eine Einheitenverbindungseinrichtung 248 und eine Einheitenverbindungseinrichtung 249 verbunden. Die Einheitenverbindungseinrichtungen 248, 249 bieten Zugriff auf unterschiedliche Beschleuniger 230. Für die programmierbare Grafikparallelverarbeitungseinheit 200 bieten die Einheitenverbindungseinrichtungen 248, 249 Kommunikationspfade zum Senden und Empfangen von Daten von und zu dem Speicher mit mehreren Bänken 235. Die Einheitenverbindungseinrichtungen 248, 249 können daher verwendet werden, um den Aufwand bzw. die Kosten der Grafikparallelverarbeitungseinheit zu reduzieren oder minimieren, indem es ermöglicht wird, dass der Speicher mit mehreren Bänken 235 auch von der festgelegten Funktionseinheit 233 verwendet wird. Wie beispielsweise zuvor angegeben ist, kann die festgelegte Funktionseinheit 233 eine Texturstufe sein, die typischer Weise einen Speicher erfordert, der äußerst divergente Zugriffe zulässt. Mittels der Einheitenverbindungseinrichtungen 248, 249 kann die Texturstufe den Speicher mit mehreren Bänken 235 als ihre Textur-Cache-Datenbanken verwenden. In einer Ausführungsform ist der Speicher mit mehreren Bänken 235 ein schneller RAM, der für äußerst divergente Zugriffe ausgebildet ist. In einer Ausführungsform sind die Einheitenverbindungseinrichtungen 248, 249 und die speziellen Beschleunigerverbindungen 240 konventionelle Verbindungseinheiten, die so dimensioniert, positioniert und angeschlossen sind, dass sie zumindest die damit verknüpften Kommunikationsereignisse bereitstellen, wie dies hierin beschrieben ist.
  • 3 zeigt ein Flussdiagramm eines Verfahrens 300 zur Herstellung einer Grafikparallelverarbeitungseinheit bzw. Grafik-Pipeline, wobei das Verfahren gemäß den Prinzipien der Erfindung ausgeführt ist. Die resultierende Grafikparallelverarbeitungseinheit kann beispielsweise die programmierbare Grafikparallelverarbeitungseinheit bzw. Grafik-Pipeline 200 aus 2 oder die Grafikparallelverarbeitungseinheit der GPU 116 sein. Das Verfahren 300 beginnt im Schritt 305.
  • Im Schritt 310 wird eine festgelegte Funktionseinheit mit einer Eingangs-/Ausgangsschnittstelle verbunden. Die Eingangs-/Ausgangsschnittstelle kann die IO-Schnittstelle 118 oder die IO-Schnittstelle 220 sein. In einer Ausführungsform werden mehrere festgelegte Funktionseinheiten mit der Eingangs-/Ausgangsschnittstelle verbunden. Jede festgelegte Funktionseinheit kann eine konventionelle festgelegte Funktionseinheit sein.
  • Eine allgemeine Verarbeitungseinheit wird mit der Eingangs-/Ausgangsschnittstelle im Schritt 320 verbunden. Im Schritt 330 wird die allgemeine Verarbeitungseinheit so programmiert, dass sie eine Funktionseinheit einer Grafikparallelverarbeitungseinheit bzw. Grafik-Pipeline emuliert. Die allgemeine Verarbeitungseinheit umfasst einen Verarbeitungskern und einen Prozessorspeicher. In einer Ausführungsform ist der Verarbeitungskern ein skalarer Kern und der Prozessorspeicher ist ein L2-Cache-Speicher. Es können bidirektionale Steuer- und Datenverbindungen verwendet werden, um die Eingangs-/Ausgangsschnittstelle mit der allgemeinen Verarbeitungseinheit zu verbinden.
  • Der Prozessorspeicher wird als ein Grafikregister für die Grafikparallelverarbeitungseinheit im Schritt 340 konfiguriert. In einer Ausführungsform wird lediglich ein Teil des Prozessorspeichers als ein Grafikregister konfiguriert.
  • Im Schritt 350 werden Vektordatenpfade mit der Eingangs-/Ausgangsschnittstelle verbunden. Die Vektordatenpfade sind in Hardware eingerichtete Beschleuniger, die mit der allgemeinen Verarbeitungseinheit/Funktionseinheit verknüpft sind. Das Herausnehmen der Vektorverarbeitung aus dem Prozessorkern einer programmierbaren Verarbeitungseinheit ermöglicht die Verwendung einer üblichen CPU als eine programmierbare Funktionseinheit. Damit kann ein Multi-Prozessor für Datenströme durch eine CPU ersetzt werden. Das Verfahren 300 endet im Schritt 330.
  • Ausführungsformen der vorliegenden Erfindung umfassen folgende Konzepte:
    • Konzept 1. Eine Grafikparallelverarbeitungseinheit mit: Beschleunigern; einer Eingangs-/Ausgangsschnittstelle, die mit jedem der Beschleuniger verbunden ist; und einer allgemeinen Verarbeitungseinheit, die mit der Eingangs-/Ausgangsschnittstelle verbunden und als eine programmierbare Funktionseinheit der Grafikparallelverarbeitungseinheit ausgebildet ist, wobei die allgemeine Verarbeitungseinheit ausgebildet ist, Vektorbefehle über die Eingangs-/Ausgangsschnittstelle an Vektordatenpfade für die programmierbare Funktionseinheit auszugeben.
    • Konzept 2. Die Grafikparallelverarbeitungseinheit nach Konzept 1, wobei die allgemeine Verarbeitungseinheit einen Speicher mit einem Grafikregister enthält, das ausgebildet ist, Eingangs- und Ausgangsoperanden für die Vektordatenpfade zu speichern.
    • Konzept 3. Die Grafikparallelverarbeitungseinheit nach Konzept 2, wobei der Speicher ein Cache-Speicher der Ebene 2 ist.
    • Konzept 4. Die Grafikparallelverarbeitungseinheit nach Konzept 2, wobei die allgemeine Verarbeitungseinheit direkten Zugriff auf das Grafikregister hat.
    • Konzept 5. Die Grafikparallelverarbeitungseinheit nach Konzept 2, wobei das Grafikregister ausgebildet ist, Eingangs- und Ausgangsoperanden für alle Beschleuniger zu speichern.
    • Konzept 6. Die Grafikparallelverarbeitungseinheit nach Konzept 1, wobei die allgemeine Verarbeitungseinheit die Vektorbefehle als eine Anforderung ausgibt.
    • Konzept 7. Die Grafikparallelverarbeitungseinheit nach Konzept 1, wobei die Beschleuniger die Vektordatenpfade umfassen.
    • Konzept 8. Die Grafikparallelverarbeitungseinheit nach Konzept 1, wobei die Beschleuniger ferner einen flüchtigen Speicher enthalten.
    • Konzept 9. Die Grafikparallelverarbeitungseinheit nach Konzept 1, wobei die allgemeine Verarbeitungseinheit einen standardmäßigen skalaren Kern aufweist.
    • Konzept 10. Die Grafikparallelverarbeitungseinheit nach Konzept 1, wobei die Grafikparallelverarbeitungseinheit modular ist.
    • Konzept 11. Die Grafikparallelverarbeitungseinheit nach Konzept 1, wobei zwei der Beschleuniger direkt miteinander verbunden sind.
    • Konzept 12. Eine Vorrichtung mit: einem skalaren Verarbeitungskern, der programmiert ist, eine Funktionseinheit einer Grafikparallelverarbeitungseinheit zu emulieren; und einem Speicher, der direkt mit dem skalaren Verarbeitungskern verbunden ist und ein Grafikregister enthält, das ausgebildet ist, Eingangs- und Ausgangsoperanden für Beschleuniger der Grafikparallelverarbeitungseinheit zu speichern.
    • Konzept 13. Die Vorrichtung nach Konzept 12, wobei der skalare Verarbeitungskern keine Vektordatenpfade, die mit der Funktionseinheit verknüpft sind, enthält.
    • Konzept 14. Die Vorrichtung nach Konzept 12, wobei der Speicher ein L2-Cache-Speicher ist.
    • Konzept 15. Die Vorrichtung nach Konzept 12, wobei der skalare Verarbeitungskern einen einzelnen Hardware-Strang bzw. Thread pro kooperativem Strang- bzw. Thread-Array unterstützt.
    • Konzept 16. Ein Verfahren zur Herstellung einer Grafikparallelverarbeitungseinheit unter Anwendung einer allgemeinen Verarbeitungseinheit, mit: Verbinden einer festgelegten Funktionseinheit mit einer Eingangs-/Ausgangsschnittstelle; Verbinden einer allgemeinen Verarbeitungseinheit mit der Eingangs-/Ausgangsschnittstelle; Programmieren der allgemeinen Verarbeitungseinheit derart, dass diese eine Funktionseinheit einer Grafikparallelverarbeitungseinheit emuliert; und Verbinden von Vektordatenpfaden mit der Eingangs-/Ausgangsschnittstelle, wobei die Vektordatenpfade mit der allgemeinen Verarbeitungseinheit/Funktionseinheit verknüpft sind.
    • Konzept 17. Das Verfahren nach Konzept 16, wobei die allgemeine Verarbeitungseinheit einen Speicher enthält und wobei das Verfahren ferner umfasst: Konfigurieren des Speichers als ein Grafikregister für die Grafikparallelverarbeitungseinheit.
    • Konzept 18. Das Verfahren nach Konzept 16, das ferner umfasst: Verbinden eines Speichers, der mehrere Bänke aufweist, mit der Eingangs-/Ausgangsschnittstelle, wobei der Speicher mit mehreren Bänken ein Beschleuniger der Grafikparallelverarbeitungseinheit ist.
    • Konzept 19. Das Verfahren nach Konzept 16, wobei die allgemeine Verarbeitungseinheit einen skalaren Kern aufweist und wobei der Schritt des Programmierens bedeutet, dass der skalare Kern programmiert wird.
    • Konzept 20. Das Verfahren nach Konzept 18, das ferner umfasst: Verbinden der festgelegten Funktionseinheit mit dem Speicher mit mehreren Bänken.
  • Die erfindungsgemäße Architektur bietet Vorteile, wozu eine niedrigere Hürde zum Aufbau einer GPU zählt. Da die Architektur eine bestehende CPU verwenden kann, können viele der Komplikationen und Details, die beim Aufbau eines kundenspezifischen Prozessors anfallen, vermieden werden. Die Beschleuniger sind zumeist zustandsfrei und leichter zu gestalten und zu verifizieren als ein vollständiger Prozessor. Für die Software-Seite gilt, dass der Hauptanteil des Vektorverarbeitungsemulationscodes auf einem standardmäßigen Kern abgearbeitet werden kann, wodurch der Anteil an benötigter Infrastruktur (Compiler/Debugger/Profiler) verringert wird, und wodurch es einfacher wird, ein akzeptables Leistungsverhalten im Vergleich zu einem kundenspezifischen skalaren Kern zu erreichen.
  • Aus technischer Sicht kann die vorgeschlagene Architektur die Barriere zwischen der CPU und einer GPU vermeiden oder zumindest reduzieren. Das Umschalten zwischen skalaren und Daten-parallelen Abschnitten kann in wenigen Zyklen erfolgen, da die CPU direkten Zugriff auf alle Vektorregister hat. Als ein zusätzlicher Vorteil ergibt sich, dass die CPU auf alle Beschleuniger Zugriff hat und diese direkt in einem ansonsten skalaren Code verwenden kann. Aufgrund der losen Verbindung von Komponenten in der offenbarten Architektur ist der Aufbau äußerst modular. Gewisse Modifizierungen am CPU-Teil (um den Steuerbus hinzuzufügen) und am Speichersystem (um den Datenbus zum L2 hinzuzufügen) sind vorhanden, aber die gleichen Grafikkomponenten können mit unterschiedlichen CPU-Implementierungen verbunden werden, um unterschiedlichen Leistungsanforderungen gerecht zu werden. Die offenbarte Architektur stellt einen nicht oder nahezu nicht modifizierten Kern mit lose gekoppelten Vektor- und festgelegten Funktionsbeschleunigern bereit. In einigen Ausführungsformen enthalten die Modifizierungen das Hinzufügen eines Steuerbusses, um Befehle zu den Beschleunigern zu senden und um Antworten zu empfangen. Diese Funktion kann unter Anwendung eines bestehenden Speichers eingerichtet werden. Dennoch kann ein spezieller Steuerbus das Leistungsverhalten verbessern. Modifizierungen können ebenfalls umfassen, dass die Register des Cash-Speichers gehalten und nicht gelöscht werden.
  • Obwohl das hierin offenbarte Verfahren in Bezug auf spezielle Schritte beschrieben und gezeigt ist, die in einer speziellen Reihenfolge ausgeführt werden, ist zu beachten, dass diese Schritte kombiniert, unterteilt oder umgeordnet werden können, so dass ein äquivalentes Verfahren entsteht, ohne dass von der Lehre der vorliegenden Erfindung abgewichen wird. Sofern somit nicht dies speziell hierin dargelegt ist, ist die Reihenfolge oder die Gruppierung der Schritte keine Beschränkung der vorliegenden Erfindung.
  • Ein Teil der zuvor beschriebenen Vorrichtungen, Systeme oder Verfahren kann eingerichtet sein in oder ausgeführt werden durch diverse, etwa konventionelle, digitale Datenprozessoren oder Computer, wobei die Computer programmiert sind oder ausführbare Programme aus Sequenzen an Softwarebefehlen speichern, um einen oder mehrere der Schritte der Verfahren auszuführen. Die Softwarebefehle derartiger Programme repräsentieren Algorithmen und können in maschinenausführbarer Form auf nicht-vergänglichen bzw. dinglichen digitalen Datenspeichermedien codiert sein, beispielsweise magnetischen oder optischen Disketten, Speichern mit wahlfreiem Zugriff (RAM), magnetischen Festplatten, Flash-Speichern, und/oder nur-Lese-Speichern (ROM), um diverse Arten digitaler Datenprozessoren oder Computer in die Lage zu versetzen, einen, mehrere oder alle der Schritte eines oder mehrerer der oben beschriebenen Verfahren, oder Funktionen der hierin beschriebenen Vorrichtungen auszuführen. Wie im Zusammenhang mit offenbarten Ausführungsformen erläutert ist, wird eine allgemeine Verarbeitungseinheit mit einem skalaren Kern, der für die Verarbeitung skalaren Codes geeignet ist, verwendet.
  • Teile offenbarter Ausführungsformen können sich auf Computerspeicherprodukte mit einem nicht vergänglichen computerlesbaren Medium beziehen, das einen Programmcode darauf aufweist, um diverse computerimplementierte Operationen auszuführen, die einen Teil einer Vorrichtung, eines Systems verkörpern oder Schritte eines hierin beschriebenen Verfahrens ausführen. Nicht-vergänlich bzw. dinglich im hierin verwendeten Sinne bezeichnet alle computerlesbare Medien mit Ausnahme von vergänglichen sich ausbreitenden Signalen. Beispiele nicht-vergänglicher bzw. dinglicher computerlesbarer Medien umfassen, ohne einschränkend zu sein: magnetische Medien, etwa Festplatten, Disketten und ein magnetisches Band; optische Medien, etwa CD-ROM-Disketten; magneto-optische Medien, etwa optische Disketten; und Hardwaregeräte, die speziell ausgebildet sind, Programmcode zu speichern und abzuarbeiten, etwa ROM- und RAM-Geräte. Zu Beispielen von Programmcode gehören sowohl Maschinencode, etwa durch einen Compiler erzeugt, und Dateien, die Code höherer Ebene enthalten, der von dem Computer unter Anwendung eines Übersetzers ausführbar ist.
  • Der Fachmann, für den diese Anmeldung gedacht ist, erkennt, dass andere und weitere Hinzufügungen, Löschungen, Ergänzungen und Modifizierungen an den beschriebenen Ausführungsformen vorgenommen werden können.

Claims (10)

  1. Eine Grafikparallelverarbeitungseinheit mit: Beschleunigern; einer Eingangs-/Ausgangsschnittstelle, die mit jedem der Beschleuniger verbunden ist; und einer allgemeinen Verarbeitungseinheit, die mit der Eingangs-/Ausgangsschnittstelle verbunden und als eine programmierbare Funktionseinheit der Grafikparallelverarbeitungseinheit ausgebildet ist, wobei die allgemeine Verarbeitungseinheit ausgebildet ist, Vektorbefehle über die Eingangs-/Ausgangsschnittstelle an Vektordatenpfade für die programmierbare Funktionseinheit auszugeben.
  2. Die Grafikparallelverarbeitungseinheit nach Anspruch 1, wobei die allgemeine Verarbeitungseinheit einen Speicher mit einem Grafikregister enthält, das ausgebildet ist, Eingangs- und Ausgangsoperanden für die Vektordatenpfade zu speichern.
  3. Die Grafikparallelverarbeitungseinheit nach Anspruch 2, wobei der Speicher ein Cache-Speicher der Ebene 2 ist.
  4. Die Grafikparallelverarbeitungseinheit nach Anspruch 2, wobei die allgemeine Verarbeitungseinheit direkten Zugriff auf das Grafikregister hat.
  5. Die Grafikparallelverarbeitungseinheit nach Anspruch 1, wobei die allgemeine Verarbeitungseinheit die Vektorbefehle als eine Anforderung ausgibt.
  6. Die Grafikparallelverarbeitungseinheit nach Anspruch 1, wobei die Beschleuniger die Vektordatenpfade umfasst und wobei die allgemeine Verarbeitungseinheit ein standardmäßiger skalarer Kern ist.
  7. Eine Vorrichtung mit: einem skalaren Verarbeitungskern, der programmiert ist, eine Funktionseinheit einer Grafikparallelverarbeitungseinheit zu emulieren; und einem Speicher, der direkt mit dem skalaren Verarbeitungskern verbunden ist und ein Grafikregister enthält, das ausgebildet ist, Eingangs- und Ausgangsoperanden für Beschleuniger der Grafikparallelverarbeitungseinheit zu speichern.
  8. Die Vorrichtung nach Anspruch 7, wobei der skalare Verarbeitungskern keine Vektordatenpfade, die mit der Funktionseinheit verknüpft sind, enthält.
  9. Die Vorrichtung nach Anspruch 7, wobei der skalare Verarbeitungskern einen einzelnen Hardware-Strangkontext pro kooperativem Strang-Array unterstützt.
  10. Ein Verfahren zur Herstellung einer Grafikparallelverarbeitungseinheit unter Verwendung einer allgemeinen Verarbeitungseinheit, wobei das Verfahren umfasst: Verbinden einer festgelegten Funktionseinheit mit einer Eingangs-/Ausgangsschnittstelle; Verbinden einer allgemeinen Verarbeitungseinheit mit der Eingangs-/Ausgangsschnittstelle; Programmieren der allgemeinen Verarbeitungseinheit derart, dass eine Funktionseinheit einer Grafikparallelverarbeitungseinheit emuliert wird; und Verbinden von Vektordatenpfaden mit der Eingangs-/Ausgangsschnittstelle, wobei die Vektordatenpfade mit der allgemeinen Verarbeitungseinheit/Funktionseinheit verknüpft sind.
DE102013006396.5A 2012-12-21 2013-04-15 Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit Ceased DE102013006396A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/724,233 US9123128B2 (en) 2012-12-21 2012-12-21 Graphics processing unit employing a standard processing unit and a method of constructing a graphics processing unit
US13/724,233 2012-12-21

Publications (1)

Publication Number Publication Date
DE102013006396A1 true DE102013006396A1 (de) 2014-06-26

Family

ID=50878756

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013006396.5A Ceased DE102013006396A1 (de) 2012-12-21 2013-04-15 Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit

Country Status (4)

Country Link
US (1) US9123128B2 (de)
CN (1) CN103886546A (de)
DE (1) DE102013006396A1 (de)
TW (1) TWI550547B (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9019284B2 (en) 2012-12-20 2015-04-28 Nvidia Corporation Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline
US9361116B2 (en) * 2012-12-28 2016-06-07 Intel Corporation Apparatus and method for low-latency invocation of accelerators
US10140129B2 (en) 2012-12-28 2018-11-27 Intel Corporation Processing core having shared front end unit
US9417873B2 (en) 2012-12-28 2016-08-16 Intel Corporation Apparatus and method for a hybrid latency-throughput processor
US10346195B2 (en) 2012-12-29 2019-07-09 Intel Corporation Apparatus and method for invocation of a multi threaded accelerator
US9910675B2 (en) 2013-08-08 2018-03-06 Linear Algebra Technologies Limited Apparatus, systems, and methods for low power computational imaging
US9146747B2 (en) 2013-08-08 2015-09-29 Linear Algebra Technologies Limited Apparatus, systems, and methods for providing configurable computational imaging pipeline
US11768689B2 (en) * 2013-08-08 2023-09-26 Movidius Limited Apparatus, systems, and methods for low power computational imaging
US10001993B2 (en) 2013-08-08 2018-06-19 Linear Algebra Technologies Limited Variable-length instruction buffer management
CN105701757B (zh) * 2016-01-13 2020-04-21 华南理工大学 基于数字水印和图形码的产品防伪方法及装置
JP7346401B2 (ja) * 2017-11-10 2023-09-19 エヌビディア コーポレーション 安全で信頼できる自動運転車両のためのシステム及び方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US20110078417A1 (en) * 2009-09-25 2011-03-31 Brian Fahs Cooperative thread array reduction and scan operations

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385632B1 (en) * 1999-06-18 2002-05-07 Advanced Micro Devices, Inc. Fast CORDIC algorithm with sine governed termination
US7002591B1 (en) * 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US7158141B2 (en) * 2002-01-17 2007-01-02 University Of Washington Programmable 3D graphics pipeline for multimedia applications
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US7146486B1 (en) * 2003-01-29 2006-12-05 S3 Graphics Co., Ltd. SIMD processor with scalar arithmetic logic units
US7213136B2 (en) * 2003-07-30 2007-05-01 Intel Corporation Apparatus and method for redundant zero micro-operation removal
US7324106B1 (en) 2004-07-27 2008-01-29 Nvidia Corporation Translation of register-combiner state into shader microcode
US7568189B2 (en) * 2006-05-03 2009-07-28 Sony Computer Entertainment Inc. Code translation and pipeline optimization
US20080030510A1 (en) * 2006-08-02 2008-02-07 Xgi Technology Inc. Multi-GPU rendering system
US20080291208A1 (en) * 2007-05-24 2008-11-27 Gary Keall Method and system for processing data via a 3d pipeline coupled to a generic video processing unit
US8106914B2 (en) 2007-12-07 2012-01-31 Nvidia Corporation Fused multiply-add functional unit
US7945768B2 (en) * 2008-06-05 2011-05-17 Motorola Mobility, Inc. Method and apparatus for nested instruction looping using implicit predicates
US8966477B2 (en) * 2011-04-18 2015-02-24 Intel Corporation Combined virtual graphics device
WO2012147364A1 (en) 2011-04-28 2012-11-01 Digital Media Professionals Inc. Heterogeneous graphics processor and configuration method thereof
US9349209B2 (en) * 2011-05-27 2016-05-24 Arm Limited Graphics processing systems
US8578129B2 (en) * 2011-12-14 2013-11-05 Advanced Micro Devices, Inc. Infrastructure support for accelerated processing device memory paging without operating system integration
US9019284B2 (en) 2012-12-20 2015-04-28 Nvidia Corporation Input output connector for accessing graphics fixed function units in a software-defined pipeline and a method of operating a pipeline

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7788468B1 (en) * 2005-12-15 2010-08-31 Nvidia Corporation Synchronization of threads in a cooperative thread array
US20110078417A1 (en) * 2009-09-25 2011-03-31 Brian Fahs Cooperative thread array reduction and scan operations

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
LEE, Yunsup, et al. Exploring the tradeoffs between programmability and efficiency in data-parallel accelerators. In: ACM SIGARCH Computer Architecture News. ACM, 2011. S. 129-140. doi: 10.1145/2024723.2000080 *
WITTENBRINK, Craig M.; KILGARIFF, Emmett; PRABHU, Arjun. Fermi GF100 GPU architecture. Micro, IEEE, 2011, Vol. 31(2): 50-59. doi: 10.1109/MM.2011.24 *

Also Published As

Publication number Publication date
US20140176569A1 (en) 2014-06-26
TW201426630A (zh) 2014-07-01
CN103886546A (zh) 2014-06-25
TWI550547B (zh) 2016-09-21
US9123128B2 (en) 2015-09-01

Similar Documents

Publication Publication Date Title
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE102009047518B4 (de) Computersystem und Verfahren geeignet zum Vermeiden von Datenkommunikationsverklemmungssituationen durch Markieren von CPU-Datenverkehr als speziell
DE112016001837T5 (de) Architektur für leistungseffiziente und programmierbare hochleistungs-bildverarbeitung
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE102013016871A1 (de) Technik zur Steigerung der Effizienz in mehrsträngigen Verarbeitungseinrichtngen
DE102013017511A1 (de) Effiziente speichervirtualisierung in mehrsträngigen verarbeitungseinheiten
DE102013202495A1 (de) Verfahren zur Durchführung von interaktivem Debugging auf nicht unterbrechbaren Graphikverarbeitungseinheiten
DE102013205886A1 (de) Dynamische Bankmodus-Adressierung für Speicherzugriff
DE102013202173A1 (de) Einheitliche Lade-Verarbeitung für Teilsätze von parallelen Threads
DE102013022257A1 (de) Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten
DE102016211642A1 (de) Patch-speichersystem
DE112010003750T5 (de) Hardware für parallele Befehlslistenerzeugung
DE112015000430T5 (de) Einheitliche Speichersysteme und -verfahren
DE102009039231A1 (de) Einzeldurchgang-Kachelung
DE102013017640A1 (de) Verteilte gekachelte Zwischenspeicherung
DE102013020485A1 (de) Technik zur Ausführung von Speicherzugriffsoperationen über eine Textur-Hardware
DE102013020968A1 (de) Technik zum Zugreifen auf einen inhaltsadressierbaren Speicher
DE112005002370T5 (de) Ausführung von Kontrollbefehlen in redundanten Multithreadingumgebungen
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102013114256A1 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE112020004181T5 (de) Bereitstellen eines direkten datenzugriffs zwischen beschleunigern und speicher in einer datenverarbeitungsumgebung
DE102019127726A1 (de) Für fernarbeitsplatz-anwendungen geeignetes streaming individueller anwendungsfenster
DE102013208041A1 (de) Serverbasierte Grafikverarbeitungstechniken
DE102013014778A1 (de) System und verfahren zur synchronisierung von strängen in einem divergenten codegebiet
DE112020000865T5 (de) Speicherverwaltungssystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final
R003 Refusal decision now final

Effective date: 20150103