DE112018004431T5 - Ressourcenlastausgleich basierend auf gebrauchs- und leistungsgrenzen - Google Patents

Ressourcenlastausgleich basierend auf gebrauchs- und leistungsgrenzen Download PDF

Info

Publication number
DE112018004431T5
DE112018004431T5 DE112018004431.9T DE112018004431T DE112018004431T5 DE 112018004431 T5 DE112018004431 T5 DE 112018004431T5 DE 112018004431 T DE112018004431 T DE 112018004431T DE 112018004431 T5 DE112018004431 T5 DE 112018004431T5
Authority
DE
Germany
Prior art keywords
frequency
processor
resource
load balancing
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
DE112018004431.9T
Other languages
English (en)
Inventor
Sanjeev Jahagirdar
Altug Koker
Yoav Harel
Kenneth Brand
Chandra Gurram
Eric Finley
Bhushan Borole
Carlos Nava Rodriguez
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 DE112018004431T5 publication Critical patent/DE112018004431T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/324Power saving characterised by the action undertaken by lowering clock frequency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3206Monitoring of events, devices or parameters that trigger a change in power modality
    • G06F1/3212Monitoring battery levels, e.g. power saving mode being initiated when battery voltage goes below a certain level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/3243Power saving in microcontroller unit
    • 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Image Generation (AREA)

Abstract

Verfahren und Apparate bezüglich Techniken für Ressourcenlastausgleich basierend auf Verwendung und/oder Leistungsgrenzen sind beschrieben. In einer Ausführungsform löst eine Ressourcenlastausgleichslogik den Betrieb einer ersten Ressource eines Prozessors bei einer ersten Frequenz aus und eine zweite Ressource des Prozessors bei einer zweiten Frequenz aus. Der Speicher speichert mehrere Frequenzwerte. Die Ressourcenlastausgleichslogik wählt auch die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten. Der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz wiederum veranlasst den Prozessor, unter einem Leistungsbudget zu laufen. Die Ressourcenlastausgleichslogik löst eine Änderung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung aus, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet. Andere Ausführungsformen werden ebenfalls offenbart und beansprucht.

Description

  • VERWANDTE ANMELDUNGEN
  • Diese Anmeldung beansprucht Priorität unter 35 U.S.C. § 365 (c) über die US-Anmeldung Nr. 15/859,598 , eingereicht am 31. Dezember 2017 unter dem Titel RESOURCE LOAD BALANCING BASED ON USAGE AND POWER LIMITS. Die gesamte Offenbarung dieser Dokumente sind hierin durch Bezugnahme in jeder Hinsicht aufgenommen.
  • GEBIET
  • Die vorliegende Offenbarung betrifft im Allgemeinen das Gebiet der Elektronik. Insbesondere betreffen manche Ausführungsformen Techniken zum Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen.
  • STAND DER TECHNIK
  • Im Verlaufe der Verbesserung der integrierten Schaltungsfertigungstechnologie sind Hersteller dazu imstande, zusätzliche Funktionalität auf einem einzelnen Siliciumsubstrat zu integrieren. So wie die Anzahl der Funktionen zunimmt, so erhöht sich auch die Anzahl von Komponenten auf einem einzelnen integrierten Schaltungs- (IC-) Chip. Zusätzliche Komponenten verursachen zusätzliche Signalschaltung, wodurch wiederum mehr Wärme erzeugt und/oder mehr Leistung verbraucht wird. Die zusätzliche Wärme kann Komponenten auf dem Chip beispielsweise durch Wärmeausdehnung beschädigen. Außerdem kann der zusätzliche Leistungsverbrauch Gebrauchsorte und/oder Gebrauchsmodelle für derartige Geräte einschränken, beispielsweise besonders für Geräte, die auf Batterieleistung zum Funktionieren zurückgreifen. Daher kann effiziente Leistungsverwaltung eine direkte Einwirkung auf Effizienz, Langlebigkeit sowie Gebrauchsmodelle für elektronische Geräte haben.
  • Figurenliste
  • Damit die hierin aufgeführten Merkmale der vorliegenden Ausführungsformen im Detail zu verstehen sind, ist eine speziellere Beschreibung der Ausführungsformen unter Bezugnahme auf die Ausführungsformen vorgesehen, von denen einige in den beiliegenden Zeichnungen dargestellt sind. Es ist jedoch zu beachten, dass die beiliegenden Zeichnungen nur typische Ausführungsformen darstellen und daher nicht als ihren Anwendungsbereich einschränkend anzusehen sind.
    • 1 ist ein Blockdiagramm eines Verarbeitungssystems 100 gemäß einer Ausführungsform.
    • 2, 3, 4 und 5 stellen verschiedene Komponenten von Prozessoren gemäß einigen Ausführungsformen dar.
    • 6A und 6B stellen Threadausführungslogik mit einer Gruppierung von Verarbeitungselementen, die in einem Grafikprozessorkern eingesetzt werden, gemäß hierin beschriebenen Ausführungsformen dar.
    • 7 stellt Grafikkernanweisungsformate gemäß einigen Ausführungsformen dar.
    • 8 ist ein Blockdiagramm einer anderen Ausführungsform eines Grafikprozessors.
    • 9A und 9B stellen Grafikprozessorbefehlsformat bzw. -sequenz gemäß einigen Ausführungsformen dar.
    • 10 stellt beispielhafte Grafiksoftwarearchitektur für ein Datenverarbeitungssystem gemäß einigen Ausführungsformen dar.
    • 11A stellt ein Diagramm von IP-Kernentwicklung gemäß einer Ausführungsform dar.
    • 11B stellt eine Querschnittsseitenansicht einer integrierten Schaltungspackungsbaugruppe gemäß einigen hierin beschriebenen Ausführungsformen dar.
    • 12, 13 und 14 stellen beispielhafte integrierte Schaltungen und zugehörige Grafikprozessoren, die unter Benutzung von einem oder mehr IP-Kernen gefertigt werden können, gemäß verschiedenen hierin beschriebenen Ausführungsformen dar.
    • 13A und 13B sind Blockdiagramme, die beispielhafte Grafikprozessoren zum Gebrauch innerhalb eines SoC gemäß hierin beschriebenen Ausführungsformen dar.
    • 14A und 14B stellen zusätzliche beispielhafte Grafikprozessorlogik gemäß hierin beschriebenen Ausführungsformen dar.
    • 15 stellt ein Blockdiagramm von Logik zum Vorsehen von Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen gemäß einer Ausführungsform dar.
    • 16 stellt ein Ablaufdiagramm von Vorgängen zum Vorsehen von Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen gemäß einer Ausführungsform dar.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung sind zahlreiche spezifische Details dargelegt, um ein gründliches Verständnis von verschiedenen Ausführungsformen vorzusehen. Verschiedene Ausführungsformen können jedoch ohne die spezifischen Details in die Praxis umgesetzt werden. In anderen Fällen wurden allgemein bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht detailliert beschrieben, um die bestimmten Ausführungsformen nicht zu verschleiern. Ferner können verschiedene Aspekte von Ausführungsformen unter Benutzung verschiedener Mittel ausgeführt werden, wie etwa integrierter Halbleiterschaltungen („Hardware“), rechnerlesbarer Anweisungen, die in einem oder mehr Programmen organisiert sind („Software“) oder einer anderen Kombination von Hardware und Software. Für die Zwecke dieser Offenbarung soll Bezugnahme auf „Logik“ entweder Hardware, Software, Firmware oder eine Kombination davon bedeuten.
  • Einige derzeitige Lösungen können eine große Menge an Daten sammeln, eine dauerhafte Voraussage für das nächste (große) Zeitfenster erstellen und Frequenz in einem großen Sprung zum Übereinstimmen mit der Voraussage bewegen. Derartige Ansätze können Leistungsfähigkeit außerdem durch Überschreiten der Leistungsaufnahme über kurze Zeiträume verstärken (auch als Bursting oder Turbo bezeichnet). Da die Bestrafung für eine Fehlvoraussage sehr hoch sein kann, werden derartige Lösungen im Allgemeinen sehr sorgfältig abgestimmt. Sie können außerdem Leistungsfähigkeitseinbußen beibringen (beispielsweise weil Ausführung während Übergängen angehalten oder ausgesetzt wird), was ein Grund dafür sein kann, dass gewöhnlich zum Bürsten auf höhere Leistung (statt Ausgleichen auf einen neuen, tragbaren thermischen Punkt) ausgelegt sind. In der Praxis birgt Burst oder Turbo nur begrenzte Nützlichkeit für Grafikbenchmarks, und das Abstimmen kann äußerst schwierig sein (zum Teil weil jegliches bestimmte Rezept für manche Benchmarks funktionieren würde, für andere jedoch nicht).
  • Zu diesem Zweck sehen einige Ausführungsformen Techniken zum Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen vor. In einer Ausführungsform werden der Leistungsverbrauch und die Leistungsfähigkeit von Ressourcen innerhalb des dreidimensionalen (3D) Blocks oder Domain eines Prozessors ausgeglichen (wobei der Prozessor ein Mehrzweckprozessor, ein Grafikprozessor (oder eine Grafikverarbeitungseinheit (GPU), eine Mehrzweck-GPU (GPGPU) usw. sein kann). Das festgelegte Ausgleichen kann im Allgemeinen auf einen oder mehr Blöcke/Domains im Prozessor angewendet werden. Das Ausgleichen kann auf andere Blöcke angewendet werden, wie etwa beispielsweise den Textursampler- oder Deep-Learning-Beschleunigerblock. Daher sehen eine oder mehr Ausführungsformen die Frequenz- und/oder Spannungsänderungsinfrastruktur, den Algorithmus zum Überwachen der Engpässe auf einer feinen Zeitskala und/oder das Verfahren zum Berechnen und Ausgleichen der Gesamtleistung vor. Wenn neue Domains geschaffen werden müssen, können die bestehende Infrastruktur und der bestehende Algorithmus leicht angepasst werden. Zudem bestimmen eine oder mehr Ausführungsformen Frequenz und/oder Spannung für jeden Abschnitt innerhalb eines Blocks dynamisch, während gewährleistet ist, dass alle Komponenten unter einer Gesamtleistungsgrenze (oder Budget) arbeiten.
  • Derartige Techniken können die Leistungseffizienz von Produkten verbessern, die von Geräten mit niedriger Leistung (beispielsweise Mobilgeräte) bis hin zu Servern reichen. Außerdem können eine oder mehr Ausführungsformen in diskreten sowie integrierten GPU-Untersystemen zum Maximieren der Energieeffizienz angewendet werden. Wie hierin besprochen, bezieht sich eine integrierte GPU im Allgemeinen auf eine Grafiklogik, die eine GPU enthält, welche in einem Prozessor integriert ist, oder anderweitig auf demselben integrierten Schaltungsgerät oder System-on-Chip (SOC) wie ein Prozessor mit einem oder mehr Prozessorkernen. Ausführungsformen sind jedoch nicht auf integrierte GPUs beschränkt und können ebenfalls auf diskrete GPUs und/oder diskrete Grafiklogik angewendet werden, die beispielsweise mit einer oder mehr Komponenten integriert sein können (wie etwa einem Netzwerkgerät, einem Anzeigengerät, einer Tastatur (oder anderem Eingabegerät wie etwa einer Maus, einem Trackball, einem Touchpad usw.) einem Porterweiterungshub, einer Batterie usw.).
  • Ferner können einige Ausführungsformen in Rechensystemen angewendet werden, die einen oder mehr Prozessoren (beispielsweise mit einem oder mehr Prozessorkernen) enthalten, wie etwa jene, die unter Bezugnahme auf 1 ff. besprochen werden, darunter beispielsweise mobile Rechengeräte, beispielsweise ein Smartphone, Tablet, UMPC (Ultra-Mobile Personal Computer), Laptop-Computer, Ultrabook™-Rechengerät, tragbare Geräte (wie etwa eine Smartwatch oder Datenbrillen) usw.
  • In einigen Ausführungsformen ist eine Grafikverarbeitungseinheit (GPU) kommunikationstechnisch an Host/Prozessorkerne gekoppelt, um Grafikvorgänge, Maschinenlernvorgänge, Musteranalysevorgänge und verschiedene Mehrzweck-GPU-(GPGPU-) Funktionen zu beschleunigen. Die GPU kann kommunikationstechnisch über einen Bus oder eine andere Zusammenschaltung (beispielsweise eine Hochgeschwindigkeitszusammenschaltung wie etwa PCIe oder NVLink) an die Host/Prozessorkerne gekoppelt sein. In anderen Ausführungsformen kann die GPU in derselben Packung oder im selben Chip wie die Kerne integriert sein und kommunikationstechnisch über eine interne Prozessorbus/Zwischenschaltung (beispielsweise intern zur Verpackung oder zum Chip) an die Kerne gekoppelt sein. Unabhängig von der Art und Weise, in der die GPU verbunden ist, können die Kerne der GPU Arbeit in der Form von Sequenzen von befehlen/Anweisungen zuteilen, die in einem Arbeitsdeskriptor enthalten sind. Die GPU benutzt dann dedizierte Schaltungen/Logik zum effizienten Verarbeiten dieser Befehle/Anweisungen.
  • In der folgenden Beschreibung sind zahlreiche spezifische Details dargelegt, um ein gründlicheres Verstehen zu bieten. Für den Fachmann ist es jedoch ersichtlich, dass die hierin beschriebenen Ausführungsformen ohne eines oder mehr dieser spezifischen Details in die Praxis umgesetzt werden können. In anderen Fällen wurden allgemein bekannte Merkmale nicht beschrieben, um Verschleierung der Details der vorliegenden Ausführungsformen zu vermeiden.
  • Systemüberblick
  • 1 ist ein Blockdiagramm eines Verarbeitungssystems 100 gemäß einer Ausführungsform. In verschiedenen Ausführungsformen enthält das System 100 einen oder mehr Prozessoren 102 und einen oder mehr Grafikprozessoren 108 und kann ein Einzelprozessordesktopsystem, ein Mehrprozessorarbeitsstationssystem oder ein Serversystem mit einer hohen Anzahl von Prozessoren 102 oder Prozessorkernen 107 sein. In einer Ausführungsform ist das System 100 eine Verarbeitungsplattform, die innerhalb einer integrierten System-on-Chip- (SoC-) Schaltung zum Gebrauch in mobilen, handgehaltenen oder eingebetteten Geräten eingegliedert ist.
  • In einer Ausführungsform kann das System 100 eine serverbasierte Spieleplattform, eine Spielkonsole, darunter eine Spiel- und Medienkonsole, eine mobile Spielkonsole, eine handgehaltene Spielkonsole oder eine Online-Spielkonsole enthalten oder darin eingegliedert sein. In einigen Ausführungsformen ist das System 100 ein Mobiltelefon, Smartphone, Tablet-Rechengerät oder mobiles Internet-Gerät. Das Verarbeitungssystem 100 kann außerdem ein tragbares Gerät, wie etwa ein tragbares Smartwatch-Gerät, Datenbrillengerät, Augmented Reality-Gerät oder Virtual Reality-Gerät, sein oder damit verkoppelt oder darin integriert sein. In einigen Ausführungsformen ist das Verarbeitungssystem 100 ein Fernseher oder Set Top Box-Gerät mit einem oder mehr Prozessoren 102 und einer grafischen Oberfläche, die durch einen oder mehr Grafikprozessoren 108 erzeugt wird.
  • In einigen Ausführungsformen können der eine oder mehr Prozessoren 102 jeder einen oder mehr Prozessorkerne 107 zum Verarbeiten von Anweisungen enthalten, die, wenn sie ausgeführt werden, Vorgänge für System- und Benutzersoftware ausführen. In einigen Ausführungsformen ist jeder der einen oder mehr Prozessorkerne 107 zum Verarbeiten eines spezifischen Anweisungssatzes 109 konfiguriert. In einigen Ausführungsformen kann der spezifische Anweisungssatz 109 Complex Instruction Set Computing (CISC), Reduced Instruction Set Computing (RISC) oder Rechnen über ein Very Long Instruction Word (VLIW) ermöglichen. Mehrfache Prozessorkerne 107 können jeder einen unterschiedlichen Anweisungssatz 109 verarbeiten, der Anweisungen zum Ermöglichen der Emulation anderer Anweisungssätze enthalten kann. Der Prozessorkern 107 kann andere Verarbeitungsgeräte enthalten, wie etwa einen Digitalsignalprozessor (DSP) .
  • In einigen Ausführungsformen enthält der Prozessor 102 einen Cachespeicher 104. Abhängig von der Architektur kann der Prozessor 102 einen einzelnen internen Cache oder mehrere Level von internem Cache enthalten. In einigen Ausführungsformen wird der Cachespeicher von verschiedenen Komponenten des Prozessors 102 geteilt. In einigen Ausführungsformen benutzt der Prozessor 102 außerdem einen externen Cache (beispielsweise einen Level-3- (L3-) Cache oder Last Level Cache (LLC)) (nicht gezeigt), der von den Prozessorkernen 107 unter Verwendung bekannter Kohärenztechniken geteilt wird. Eine Registerdatei 106 ist zusätzlich im Prozessor 102 enthalten, die verschiedene Typen von Register zum Speichern von verschiedenen Typen von Daten enthalten kann (beispielsweise Ganzzahlenregister, Gleitkommaregister, Statusregister und ein Anweisungszeigerregister) . Einige Register können Mehrzweckregister sein, während andere Register für die Gestaltung des Prozessors 102 spezifisch sein können.
  • In einigen Ausführungsformen sind ein oder mehr Prozessoren 102 mit einem oder mehr Schnittstellenbussen 110 zum Übertragen von Kommunikationssignalen verkoppelt, wie etwa Adress-, Daten- oder Steuersignalen zwischen dem Prozessor 102 und anderen Komponenten im System 100. Der Schnittstellenbus 110 kann in einer Ausführungsform ein Prozessorbus sein, wie etwa eine Version des Direct Media Interface- (DMI-) Busses. Prozessorbusse sind jedoch nicht auf den DMI-Bus beschränkt und können einen oder mehr Peripheral Component Interconnect-Busse (beispielsweise PCI, PCI Express), Speicherbusse oder andere Arten von Schnittstellenbussen enthalten. In einer Ausführungsform enthält der Prozessor 102 oder enthalten die Prozessoren 102 eine integrierte Speichersteuerung 116 und einen Plattformsteuerungshub 130. Die Speichersteuerung 116 ermöglicht Kommunikation zwischen einem Speichergerät und anderen Komponenten des Systems 100, während der Plattformsteuerungshub (PCH) 130 Verbindungen zu I/O-Geräten über einen lokalen I/O-Bus vorsieht.
  • Das Speichergerät 120 kann ein dynamisches Direktzugriffsspeicher- (DRAM-) Gerät, ein statisches Direktzugriffsspeicher- (SRAM-) Gerät, Flashspeichergerät, Phasenwechselspeichergerät oder ein anderes Speichergerat mit geeigneter Leistungsfähigkeit zum Dienen als Prozessspeicher sein. In einer Ausführungsform kann das Speichergerät 120 als Systemspeicher für das System 100 arbeiten, zum Speichern von Daten 122 und Anweisungen 121 zum Gebrauch, wenn der eine oder mehr Prozessoren 102 eine Anwendung oder einen Prozess ausführen. Die Speichersteuerung 116 koppelt außerdem an einen externen optischen Grafikprozessor 112 an, der mit dem einen oder mehr Grafikprozessoren 108 in den Prozessoren 102 zum Ausführen von Grafik- und Medienvorgängen kommunizieren kann. In einigen Ausführungsformen kann sich ein Anzeigengerät 111 mit dem (den) Prozessor(en) 102 verbinden. Das Anzeigengerät 111 kann eines oder mehr eines internen Anzeigengeräts sein, wie in einem Mobiltelefongerät oder einem Laptop-Gerät, oder ein externes Anzeigengerät, das über eine Anzeigenschnittstelle (beispielsweise DisplayPort usw.) angebracht ist. In einer Ausführungsform kann das Anzeigengerät 111 ein Head Mounted Display (HMD) sein, wie etwa ein stereoskopisches Anzeigengerät zum Gebrauch in Virtual Reality- (VR-) Anwendungen oder Augmented Reality- (AR-) Anwendungen.
  • In einigen Ausführungsformen ermöglicht der Plattformsteuerungshub 130 Peripheriegeräten die Verbindung mit dem Speichergerät 120 und Prozessor 102 über einen Hochgeschwindigkeits-I/O-Bus. Die I/O-Peripheriegeräte enthalten u.a. eine Audiosteuerung 146, eine Netzwerksteuerung 134, eine Firmwareschnittstelle 128, einen drahtlosen Transceiver 126, Berührungssensoren 125, ein Datenspeichergerät 124 (beispielsweise Festplattenlaufwerk, Flashspeicher usw.). Das Datenspeichergerät 124 kann über eine Speicherschnittstelle (beispielsweise SATA) oder über einen peripheren Bus, wie etwa einen Peripheral Component Interconnect-Bus (beispielsweise PCI, PCI Express) verbunden sein. Die Berührungssensoren 125 können Touchscreensensoren, Drucksensoren oder Fingerabdrucksensoren enthalten. Der drahtlose Transceiver 126 kann ein Wi-Fi-Transceiver, ein Bluetooth-Transceiver oder ein Mobilnetzwerktransceiver sein, wie etwa ein 3G-, 4G- oder Long Term Evolution- (LTE-) Transceiver. Die Firmwareschnittstelle 128 ermöglicht Kommunikation mit Systemfirmware und kann beispielsweise eine Unified Extensible Firmware Interface (UEFI) sein. Die Netzwerksteuerung 134 kann eine Netzwerkverbindung zu einem verdrahteten Netzwerk ermöglichen. In einigen Ausführungsformen verkoppelt sich eine Hochleistungsnetzwerksteuerung (nicht gezeigt) mit dem Schnittstellenbus 110. Die Audiosteuerung 146 ist in einer Ausführungsform eine hochauflösende Mehrkanalaudiosteuerung. In einer Ausführungsform enthält das System 100 eine optionale herkömmliche I/O-Steuerung 140 zum Koppeln von herkömmlichen Geräten (beispielsweise Personal System 2 (PS/2)) an das System. Der Plattformsteuerungshub 130 kann außerdem mit einer oder mehr Universal Serial Bus- (USB-) Steuerungen 142 zum Verbinden von Eingabegeräten, wie etwa Tatstatur- und Maus-Kombinationen 143, einer Kamera 144 oder anderen USB-Eingabegeräten, verbunden sein.
  • Es versteht sich, dass das gezeigte System 100 beispielhaft und nicht einschränkend ist, da andere Arten von Datenverarbeitungssystemen, die anders konfiguriert sind, ebenfalls benutzt werden können. Beispielsweise kann ein Beispiel der Speichersteuerung 116 und des Plattformsteuerungshubs 130 in einem diskreten externen Grafikprozessor, wie etwa dem externen Grafikprozessor 112, integriert sein. In einer Ausführungsform können der Plattformsteuerungshub 130 und/oder die Speichersteuerung 160 extern zu dem einen oder mehr Prozessoren 102 sein. Beispielsweise kann das System 100 eine externe Speichersteuerung 116 und einen externen Plattformsteuerungshub 130 enthalten, die als ein Speichersteuerungshub und peripherer Steuerungshub innerhalb eines Systemchipsatzes konfiguriert sein können, welcher in Kommunikation mit dem (den) Prozessor(en) 102 ist.
  • 2 ist ein Blockdiagramm einer Ausführungsform eines Prozessors 200 mit einem oder mehr Prozessorkernen 202A-202N, einer integrierten Speichersteuerung 214 und einem integrierten Grafikprozessor 208. Jene Elemente von 2 mit denselben Bezugszeichen (oder Bezeichnungen) wie die Elemente von jeglicher anderen Figur hierin können in jeglicher Art und Weise arbeiten oder funktionieren, die jener an anderer Stelle hierin beschriebenen gleicht, sind jedoch nicht darauf beschränkt. Der Prozessor 200 kann zusätzliche Kerne bis zum und einschließlich des zusätzlichen Kerns 202N enthalten, der durch die gestrichelten Kästen dargestellt ist. Jeder der Prozessorkerne 202A-202N enthält eine oder mehr interne Cacheeinheiten 204A-204N. In einigen Ausführungsformen hat jeder Prozessorkern außerdem Zugang zu einer oder mehr geteilten Cacheeinheiten 206.
  • Die internen Cacheeinheiten 204A-204N und geteilten Cacheeinheiten 206 stellen eine Cachespeicherhierarchie innerhalb des Prozessors 200 dar. Die Cachespeicherhierarchie kann mindestens ein Anweisungs- und Datencachelevel innerhalb jeden Prozessorkerns und ein oder mehr Level von geteiltem Mittellevel-Cache enthalten, wie etwa ein Level 2 (L2), Level 3 (L3), Level 4 (L4) oder andere Cachelevel, wobei das höchste Cachelevel vor dem externen Speicher als der LLC klassifiziert ist. In einigen Ausführungsformen hält Kohärenzlogik Kohärenz zwischen den verschiedenen Cacheeinheiten 206 und 204A-204N aufrecht.
  • In einigen Ausführungsformen kann der Prozessor 200 außerdem einen Satz von einer oder mehr Bussteuereinheiten 216 und einen System-Agent-Kern 210 enthalten. Die eine oder mehr Bussteuerungseinheiten 216 verwalten einen Satz von peripheren Bussen, wie etwa einen oder mehr PCI- oder PCI Express-Busse. Der System-Agent-Kern 210 sieht Verwaltungsfunktionalität für die verschiedenen Prozessorkomponenten vor. In einigen Ausführungsformen enthält der System-Agent-Kern 210 eine oder mehr integrierte Speichersteuerungen 214 zum Verwalten des Zugangs zu verschiedenen externen Speichergeräten (nicht gezeigt).
  • In einigen Ausführungsformen enthalten einer oder mehr der Prozessorkerne 202A-202N Unterstützung für simultanes Multithreading. In einer derartigen Ausführungsform enthält der System-Agent-Kern 210 Komponenten zum Koordinieren und Betreiben der Kerne 202A-202N während Multithread-Verarbeitung. Der System-Agent-Kern 210 kann zusätzlich eine Leistungssteuereinheit (PCU) enthalten, die Logik und Komponenten zum Regulieren des Leistungszustands der Prozessorkerne 202A-202N und des Grafikprozessors 208 enthält.
  • In einigen Ausführungsformen enthält der Prozessor 200 zusätzlich den Grafikprozessor 208 zum Ausführen von Grafikverarbeitungsvorgängen. In einigen Ausführungsformen ist der Grafikprozessor 208 mit dem Satz von geteilten Cacheeinheiten 206 und dem System-Agent-Kern 210 verkoppelt, der die eine oder mehr integrierten Speichersteuerungen 214 enthält. In einigen Ausführungsformen enthält der System-Agent-Kern 210 außerdem eine Anzeigensteuerung 211 zum Zuführen einer Grafikprozessorausgabe zu einer oder mehr angekoppelten Anzeigen. In einigen Ausführungsformen kann die Anzeigensteuerung 211 außerdem ein separates Modul sein, das mit dem Grafikprozessor über mindestens eine Zusammenschaltung verkoppelt ist, oder sie kann innerhalb des Grafikprozessors 208 integriert sein.
  • In einigen Ausführungsformen ist eine ringbasierte Zusammenschaltungseinheit 212 zum Verkoppeln der internen Komponenten des Prozessors 200 benutzt. Es kann jedoch eine alternative Zusammenschaltungseinheit benutzt sein, wie etwa eine Punkt-zu-Punkt-Zusammenschaltung, eine geschaltete Zusammenschaltung oder andere Techniken, darunter im Fachgebiet allgemein bekannte Techniken. In einigen Ausführungsformen ist der Grafikprozessor 208 über eine I/O-Verbindung 213 mit der Ringzusammenschaltung 212 verkoppelt.
  • Die beispielhafte I/O-Verbindung 213 stellt mindestens eine von vielerlei I/O-Zusammenschaltungen dar, darunter eine On-Package-I/O-Zusammenschaltung, die Kommunikation zwischen verschiedenen Prozessorkomponenten und einem eingebetteten Hochleistungsspeichermodul 218, wie etwa einem eDRAM-Modul, ermöglicht. In einigen Ausführungsformen benutzen jeder der Prozessorkerne 202A-202N und der Grafikprozessor 208 eingebettete Speichermodule 218 als einen geteilten Last Level Cache.
  • In einigen Ausführungsformen sind die Prozessorkerne 202A-202N homogene Kerne, die dieselbe Anweisungssatzarchitektur ausführen. In einer anderen Ausführungsform sind die Prozessorkerne 202A-202N hinsichtlich Anweisungssatzarchitektur (ISA) heterogen, wobei einer oder mehr der Prozessorkerne 202A-202N einen ersten Anweisungssatz ausführt, während mindestens ein anderer der Kerne einen Teilsatz des ersten Anweisungssatzes oder einen anderen Anweisungssatz ausführt. In einer Ausführungsform sind die Prozessorkerne 202A-202N hinsichtlich Mikroarchitektur heterogen, wobei ein oder mehr Kerne mit einem verhältnismäßig höheren Leistungsverbrauch mit einem oder mehr Leistungskernen mit einem niedrigeren Leistungsverbrauch verkoppelt sind. Zudem kann der Prozessor 200 auf einem oder mehr Chips oder als eine integrierte SoC-Schaltung mit den dargestellten Komponenten neben anderen Komponenten implementiert sein.
  • 3 ist ein Blockdiagramm eines Grafikprozessors 300 der eine diskrete Grafikverarbeitungseinheit sein kann oder ein Grafikprozessor, der mit mehreren Verarbeitungskernen integriert ist, sein kann. In einigen Ausführungsformen kommuniziert der Grafikprozessor über eine speicherkartierte I/O-Schnittstelle zu Registern im Grafikprozessor und mit Befehlen, die dem Prozessorspeicher zugeführt werden. In einigen Ausführungsformen enthält der Grafikprozessor 300 eine Speicherschnittstelle 314 zum Zugang auf den Speicher. Die Speicherschnittstelle 314 kann eine Schnittstelle zu lokalem Speicher, einem oder mehr internen Caches, einem oder mehr geteilten externen Caches und/oder zum Systemspeicher sein.
  • In einigen Ausführungsformen enthält der Grafikprozessor 300 außerdem eine Anzeigensteuerung 302 zum Zuführen von Anzeigenausgabedaten zu einem Anzeigengerät 320. Die Anzeigensteuerung 302 enthält Hardware für eine oder mehr Einblendungsebenen für die Anzeige und Zusammensetzung von mehreren Lagen von Video- oder Benutzeroberflächenelementen. Das Anzeigengerät 320 kann ein internes oder externes Anzeigengerät sein. In einer Ausführungsform ist das Anzeigengerät 320 ein Head Mounted Display, wie etwa ein Virtual Reality- (VR-) Anzeigengerät oder ein Augmented Reality- (AR-) Anzeigengerät. In einigen Ausführungsformen enthält der Grafikprozessor 300 eine Videocodecmaschine 306 zum Codieren, Decodieren oder Transcodieren von Medien zu, aus oder zwischen einem oder mehr Mediencodierformaten, darunter u.a. Moving Picture Experts Group- (MPEG-) Formate wie etwa MPEG-2, Advanced Video Coding- (AVC-) Formate wie etwa H.264/MPEG-4 AVC, sowie die Society of Motion Picture & Television Engineers- (SMPTE-) 421M/VC-1 und Joint Photographic Experts Group-(JPEG-) Formate wie etwa JPEG- und Motion JPEG-(MJPEG-) Formate.
  • In einigen Ausführungsformen enthält der Grafikprozessor 300 eine Blockbildtransfer- (BLIT-) Maschine 304 zum Ausführen von zweidimensionalen (2D-) Rasterervorgängen, darunter beispielsweise Bitgrenzenblocktransfers. In einer Ausführungsform werden jedoch 2D-Grafikvorgänge unter Verwendung von einer oder mehr Komponenten der Grafikverarbeitungsmaschine (GPE) 310 ausgeführt. In einigen Ausführungsformen ist die GPE 310 eine Rechenmaschine zum Ausführen von Grafikvorgängen, darunter dreidimensionale (3D-) Grafikvorgänge und Medienvorgänge.
  • In einigen Ausführungsformen enthält die GPE 310 eine 3D-Pipeline 312 zum Ausführen von 3D-Vorgängen, wie etwa Wiedergeben von dreidimensionalen Bildern und Szenen unter Benutzung von Verarbeitungsfunktionen, die auf primitive 3D-Formen einwirken (beispielsweise Rechteck, Dreieck usw.). Die 3D-Pipeline 312 enthält programmierbare und festgelegte Funktionselemente, die verschiedene Aufgaben innerhalb des Elements ausführen und/oder Ausführungsthreads zu einem 3D/Medien-Untersystem 315 ablegen. Während die 3D-Pipeline 312 zum Ausführen von Medienvorgängen benutzt werden kann, enthält eine Ausführungsform der GPE 310 außerdem eine Medienpipeline 316, die spezifisch zum Ausführen von Medienvorgängen, wie etwa Videonachbearbeitung und Bildverbesserung, benutzt wird.
  • In einigen Ausführungsformen enthält die Medienpipeline 316 Festfunktions- oder programmierbare Logikeinheiten zum Ausführen von einem oder mehr spezialisierten Medienvorgängen, wie etwa Videodecodierbeschleunigung, Video-Deinterlacing und Videocodierbeschleunigung anstelle der oder für die Videocodecmaschine 306. In einigen Ausführungsformen enthält die Medienpipeline 316 zusätzlich eine Threadablageeinheit zum Ablegen von Threads zur Ausführung auf das 3D/Medien-Untersystem 315. Die abgelegten Threads können Rechnungen für die Medienvorgänge auf einer oder mehr Grafikausführungseinheiten ausführen, die im 3D/Medien-Untersystem 315 enthalten sind.
  • In einigen Ausführungsformen enthält das 3D/Medien-Untersystem 315 Logik zum Ausführen von Threads, die durch die 3D-Pipeline 312 und Medienpipeline 316 abgelegt werden. In einer Ausführungsform senden die Pipelines Threadausführungsanforderungen an das 3D/Medien-Untersystem 315, das Threadabsendelogik zum Vermitteln und Absenden der verschiedenen Anforderungen an verfügbare Threadausführungsressourcen enthält. Die Ausführungsressourcen eine Gruppierung von Grafikausführungseinheiten zum Verarbeiten der 3D- und Medienthreads. In einigen Ausführungsformen enthält das 3D/Medien-Untersystem 315 einen oder mehr interne Caches für Threadanweisungen und -daten. In einigen Ausführungsformen enthält das Untersystem außerdem geteilten Speicher, darunter Register und adressierbaren Speicher, zum Teilen von Daten unter Threads und zum Speichern von Ausgabedaten.
  • Grafikverarbeitungsmaschine
  • 4 ist ein Blockdiagramm einer Grafikverarbeitungsmaschine 410 eines Grafikprozessors 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 denselben Bezugszeichen (oder Bezeichnungen) wie die Elemente von jeglicher anderen Figur hierin können in jeglicher Art und Weise arbeiten oder funktionieren, die jener an anderer Stelle hierin beschriebenen gleicht, sind jedoch nicht darauf beschränkt. Beispielsweise ist die 3D-Pipeline 312 und Medienpipeline 316 von 3 dargestellt. Die Medienpipeline 316 ist in einigen Ausführungsformen der GPE 410 optional und könnte nicht explizit in der GPE 410 enthalten sein. Zum Beispiel, und in mindestens einer Ausführungsform, ist ein separater Medien- und/oder Bildprozessor an die GPE 410 gekoppelt.
  • In einigen Ausführungsformen ist die GPE 410 mit einer Befehlsstromeinrichtung 403 verkoppelt oder enthält diese, welche der 3D-Pipeline 312 und/oder der Medienpipeline 316 einen Befehlsstrom zuführt. In einigen Ausführungsformen ist die Befehlsstromeinrichtung 403 mit einem Speicher, der Systemspeicher sein kann, oder mit einem oder mehr von internem Cachespeicher oder geteiltem Cachespeicher verkoppelt. In einigen Ausführungsformen empfängt die Befehlsstromeinrichtung 403 Befehle vom Speicher und sendet die Befehle zur 3D-Pipeline 312 und/oder Medienpipeline 316. Die Befehle sind Anordnungen, die von einem Ringpufferspeicher abgeholt werden, der Befehle für die 3D-Pipeline 312 und die Medienpipeline 316 speichert. In einer Ausführungsform kann der Ringpufferspeicher zusätzlich Bündelbefehlspufferspeicher enthalten, die Bündel von mehreren Befehlen speichern. Die Befehle für die 3D-Pipeline 312 können außerdem Verweise auf im Speicher gespeicherte Daten enthalten, wie etwa u.a. Scheitelpunkt- und Geometriedaten für die 3D-Pipeline 312 und/oder Bilddaten und Speicherobjekte für die Medienpipeline 316. Die 3D-Pipeline 312 und Medienpipeline 316 verarbeiten die Befehle und Daten durch Ausführen von Vorgängen über Logik innerhalb der jeweiligen Pipelines oder durch Absenden von einem oder mehr Ausführungsthreads an eine Grafikkerngruppierung 414. In einer Ausführungsform enthält die Grafikkerngruppierung 414 einen oder mehr Blöcke von Grafikkernen (beispielsweise Grafikkern(e) 415A, Grafikkern(e) 415B), wobei jeder Block einen oder mehr Grafikkerne enthält. Jeder Grafikkern enthält einen Satz von Grafikausführungsressourcen, die Mehrzweck- und grafikspezifische Ausführungslogik zum Ausführen von Grafik- und Rechenvorgängen sowie Festfunktionstexturverarbeitungs- und/oder Maschinenlern- und künstliche Intelligenzbeschleunigungslogik enthalten.
  • In verschiedenen Ausführungsformen enthält die 3D-Pipeline 312 Festfunktions- und programmierbare Logik zum Verarbeiten von einem oder mehr Shaderprogrammen, wie etwa Scheitelpunktshader, Geometrieshader, Pixelshader, Fragmentshader, Rechenshader oder anderen Shaderprogrammen, durch Verarbeiten der Anweisungen und Absenden von Ausführungsthreads an die Grafikkerngruppierung 414. Die Grafikkerngruppierung 414 sieht einen vereinigten Block von Ausführungsressourcen zum Gebrauch beim Verarbeiten dieser Shaderprogramme vor. Mehrzweckausführungslogik (beispielsweise Ausführungseinheiten) innerhalb des Grafikkerns (der Grafikkerne) 415A-415B der Grafikkerngruppierung 414 beinhaltet Unterstützung für verschiedene 3D-API-Shadersprachen und kann mehrfache simultane Ausführungsthreads ausführen, die mit mehrfachen Shadern assoziiert sind.
  • In einigen Ausführungsformen enthält die Grafikkerngruppierung 414 außerdem Ausführungslogik zum Ausführen von Medienfunktionen, wie etwa Video- und/oder Bildverarbeitung. In einer Ausführungsform enthalten die Ausführungseinheiten außerdem Mehrzwecklogik, die zum Ausführen von parallelen Mehrzweckrechenvorgängen, zusätzlich zu Grafikverarbeitungsvorgängen, programmierbar ist. Die Mehrzwecklogik kann Verarbeitungsvorgänge parallel zu oder in Verbindung mit Mehrzwecklogik innerhalb des Prozessorkerns (der Prozessorkerne) 107 von 1 oder Kerns 202A-202N wie in 2 ausführen.
  • Ausgabedaten, die durch Threads erstellt werden, welche in der Grafikkerngruppierung 414 ausgeführt werden, können Daten zum Speicher in einem vereinigten Rückgabepufferspeicher (URB) 418 ausgeben. Der URB 418 kann Daten für mehrfache Threads speichern. In einigen Ausführungsformen kann der URB 418 zum Senden von Daten zwischen verschiedenen Threads benutzt werden, die in der Grafikkerngruppierung 414 ausgeführt werden. In einigen Ausführungsformen kann der URB 418 zusätzlich zur Synchronisierung von Threads in der Grafikkerngruppierung und Festfunktionslogik innerhalb der geteilten Funktionslogik 420 benutzt werden.
  • In einigen Ausführungsformen ist die Grafikkerngruppierung 414 skalierbar, sodass die Gruppierung eine variable Anzahl von Grafikkernen enthält, die jeder eine variable Anzahl von Ausführungseinheiten basierend auf der Zielleistung und der Leistungsfähigkeitsebene der GPE 410 aufweisen. In einer Ausführungsform sind die Ausführungsressourcen dynamisch skalierbar, sodass Ausführungsressourcen nach Bedarf aktiviert und deaktiviert werden können.
  • Die Grafikkerngruppierung 414 ist mit geteilter Funktionslogik 420 verkoppelt, die mehrfache Ressourcen enthält, welche von den Grafikkernen in der Grafikkerngruppierung geteilt werden. Die geteilten Funktionen innerhalb der geteilten Funktionslogik 420 sind Hardwarelogikeinheiten, die spezialisierte ergänzende Funktionalität für die Grafikkerngruppierung 414 vorsehen. In verschiedenen Ausführungsformen enthält die geteilte Funktionslogik 420 u.a. Sampler- 421, Mathematik- 422 und Interthread-Kommunikations- (ITC-) 423 Logik. Zusätzlich implementieren einige Ausführungsformen einen oder mehr Caches 425 innerhalb der geteilten Funktionslogik 420.
  • Eine geteilte Funktion wird implementiert, wenn der Bedarf an einer gegebenen spezialisierten Funktion ungenügend zur Einbeziehung innerhalb der Grafikkerngruppierung 414 ist. Stattdessen wird eine einzelne Umschreibung dieser spezialisierten Funktion als eine eigenständige Einheit in der geteilten Funktionslogik 420 implementiert und von den Ausführungsressourcen innerhalb der Grafikkerngruppierung 414 geteilt. Der genaue Satz von Funktionen, die unter der Grafikkerngruppierung 414 geteilt werden und innerhalb der Grafikkerngruppierung 414 enthalten sind, variiert über Ausführungsformen hinweg. In einigen Ausführungsformen können spezifische geteilte Funktionen innerhalb der geteilten Funktionslogik 420, die ausgiebig von der Grafikkerngruppierung 414 benutzt werden, innerhalb der geteilten Funktionslogik 416 innerhalb der Grafikkerngruppierung 414 enthalten sein. In verschiedenen Ausführungsformen kann die geteilte Funktionslogik 416 innerhalb der Grafikkerngruppierung 4141 manche oder die gesamte Logik innerhalb der geteilten Funktionslogik 420 enthalten. In einer Ausführungsform können alle Logikelemente innerhalb der geteilten Funktionslogik 420 innerhalb der geteilten Funktionslogik 416 der Grafikkerngruppierung 414 dupliziert sein. In einer Ausführungsform ist die geteilte Funktionslogik 420 zugunsten der geteilten Funktionslogik 416 innerhalb der Grafikkerngruppierung 414 ausgeschlossen.
  • 5 ist ein Blockdiagramm von Hardwarelogik eines Grafikprozessorkerns 500 gemäß einigen, hierin beschriebenen Ausführungsformen. Elemente von 5 mit denselben Bezugszeichen (oder Bezeichnungen) wie die Elemente von jeglicher anderen Figur hierin können in jeglicher Art und Weise arbeiten oder funktionieren, die jener an anderer Stelle hierin beschriebenen gleicht, sind jedoch nicht darauf beschränkt. Der dargestellte Grafikprozessorkern 500 ist in einigen Ausführungsformen innerhalb der Grafikkerngruppierung 414 von 4 enthalten. Der Grafikprozessorkern 500, der manchmal als eine Kernscheibe bezeichnet wird, kann ein oder mehrfache Kerne innerhalb eines modularen Grafikprozessors sein. Der Grafikprozessorkern 500 ist beispielhaft für eine Grafikkernscheibe, und ein Grafikprozessor wie hierin beschrieben kann mehrfache Grafikkernscheiben basierend auf Zielleistung und Leistungsfähigkeitsumfang enthalten. Jeder Grafikkern 500 kann einen Festfunktionsblock 530 enthalten, der mit mehrfachen Teilkernen 501A-501F verkoppelt ist, auch als Teilscheiben bezeichnet, die modulare Blöcke von Mehrzweck- und Festfunktionslogik enthalten.
  • In einigen Ausführungsformen enthält der Festfunktionsblock 530 eine Geometrie/Festfunktions-Pipeline 536, die von allen Teilkernen im Grafikprozessor 500 geteilt werden kann, beispielsweise in Grafikprozessorimplementierungen mit niedriger Leistungsfähigkeit und/oder niedriger Leistung. In verschiedenen Ausführungsformen enthält die Geometrie/Festfunktions-Pipeline 536 eine 3D-Festfunktionspipeline (beispielsweise 3D-Pipeline 312 wie in 3 und 4), eine Video-Frontend-Einheit, einen Threadableger und Threadabsender und einen vereinigten Rückgabezwischenspeicherverwalter, der vereinigte Rückgabezwischenspeicher verwaltet, wie etwa den vereinigten Rückgabezwischenspeicher 418 von 4.
  • In einer Ausführungsform enthält der Festfunktionsblock 530 außerdem eine Grafik-SoC-Schnittstelle 537, eine Grafikmikrosteuerung 538 und eine Medienpipeline 539. Die Grafik-SoC-Schnittstelle 537 sieht eine Schnittstelle zwischen dem Grafikkern 500 und anderen Prozessorkernen innerhalb einer integrierten System-on-Chip-Schaltung vor. Die Grafikmikrosteuerung 538 ist ein programmierbarer Subprozessor, der zum Verwalten von verschiedenen Funktionen des Grafikprozessors 500 konfigurierbar ist, darunter Thread-Absenden, -Terminieren und - Vorwegnahme. Die Medienpipeline 539 (beispielsweise Medienpipeline 316 von 3 und 4) enthält Logik zum Ermöglichen des Decodierens, Codierens, Vorverarbeiten und/oder Nachbearbeiten von Multimediadaten, darunter Bild- und Videodaten. Die Medienpipeline 539 implementiert Medienvorgänge über Anforderungen an Rechen- und Samplelogik innerhalb der Teilkerne 501-501F.
  • In einer Ausführungsform aktiviert die SoC-Schnittstelle 537 den Grafikkern 500 zum Kommunizieren mit Mehrzweckanwendungsprozessorkernen (beispielsweise CPUs) und/oder anderen Komponenten innerhalb eines SoC, darunter Speicherhierarchieelemente wie etwa ein geteilter Last Level Cache-Speicher, der System-RAM und/oder eingebetteter On-Chip- oder On-Package-DRAM. Die SoC-Schnittstelle 537 kann außerdem Kommunikation mit Festfunktionsgeräten innerhalb des SoC ermöglichen, wie etwa Kamerabildgebungspipelines, und ermöglicht die Benutzung von oder implementiert globale Speicheratomik, die unter dem Grafikkern 500 und den CPUs innerhalb des SoC geteilt werden kann. Die SoC-Schnittstelle 537 kann außerdem Leistungsverwaltungssteuerungen für den Grafikkern 500 implementieren und eine Schnittstelle zwischen einer Taktdomäne des Grafikkerns 500 und anderen Taktdomänen innerhalb des SoC aktivieren. In einer Ausführungsform aktiviert die SoC-Schnittstelle 537 Empfang von Befehlszwischenspeichern von einer Befehlsstromeinrichtung und einem globalen ThreadAbsender, die zum Zuführen von Befehlen und Anweisungen zu jedem von einem oder mehr Grafikkernen innerhalb eines Grafikprozessors konfiguriert sind. Die Befehle und Anweisungen können an die Medienpipeline 539 abgesendet werden, wenn Medienvorgänge ausgeführt werden soll, oder an eine Geometrie- und Festfunktions-Pipeline (beispielsweise Geometrie- und Festfunktions-Pipeline 536, Geometrie- und Festfunktions-Pipeline 514), wenn Grafikverarbeitungsvorgänge ausgeführt werden sollen.
  • Die Grafikmikrosteuerung 538 kann zum Ausführen von verschiedenen Zeitplanungs- und Verwaltungsaufgaben für den Grafikkern 500 konfiguriert sein. In einer Ausführungsform kann die Grafikmikrosteuerung 538 auf den verschiedenen parallelen Grafikmaschinen innerhalb der Ausführungseinheits- (EU-) Gruppierungen 502A-502F, 504A-504F innerhalb der Teilkerne 501A-501F Grafiken ausführen und/oder Arbeitslastzeitplanung berechnen. In diesem Zeitplanungsmodell kann Hostsoftware, die auf einem CPU-Kern eines SoC ausgeführt wird, welches den Grafikkern 500 enthält, Arbeitslasten einer von mehrfachen Grafikprozessor-Doorbells vorlegen, wodurch ein Zeitplanungsvorgang auf der zweckmäßigen Grafikmaschine aufgerufen wird. Zeitplanungsvorgänge beinhalten Bestimmen, welche Arbeitslast als nächste laufen soll, Leiten einer Arbeitslast an eine Befehlsstromeinrichtung, Vorwegnehmen von bestehenden Arbeitslasten, die auf einer Maschine laufen, Überwachen des Fortschritts einer Arbeitslast und Melden an Hostsoftware, wenn eine Arbeitslast komplett ist. In einer Ausführungsform kann die Grafikmikrosteuerung 538 außerdem Niedrigleistungs- oder Untätigkeitszustände für den Grafikkern 500 ermöglichen, wodurch der Grafikkern 500 mit der Fähigkeit zum Speichern und Wiederherstellen von Registern innerhalb des Grafikkerns 500 über Niedrigleistungszustandsübergänge hinweg unabhängig vom Betriebssystem und/oder von der Treibersoftware auf dem System versehen wird.
  • Der Grafikkern 500 kann mehr oder weniger als die dargestellten Teilkerne 501A-501F aufweisen, bis zu N modulare Teilkerne. Für jeden Satz von N Teilkernen kann der Grafikkern 500 außerdem geteilte Funktionslogik 510, geteilten und/oder Cachespeicher 512, eine Geometrie/Festfunktions-Pipeline 514 sowie eine zusätzliche Festfunktionslogik 516 zum Beschleunigen von verschiedenen Grafik- und Rechenverarbeitungsvorgängen enthalten. Die geteilte Funktionslogik 510 kann mit der geteilten Funktionslogik 420 von 4 (beispielsweise Sampler-, Mathematik- und/oder Interthread-Kommunikationslogik) assoziierte Logikeinheiten enthalten, die von jeden N Teilkernen innerhalb des Grafikkerns 500 geteilt werden können. Der geteilte und/oder Cachespeicher 512 kann ein Last Level Cache für den Satz von N Teilkernen 501A-501F innerhalb des Grafikkerns 500 sein und kann außerdem als geteilter Speicher dienen, der für mehrfache Teilkerne zugänglich ist. Die Geometrie/Festfunktions-Pipeline 514 kann anstelle der Geometrie/Festfunktions-Pipeline 536 innerhalb des Festfunktionsblocks 530 enthalten sein und kann dieselben oder ähnliche Logikeinheiten enthalten.
  • In einer Ausführungsform enthält der Grafikkern 500 zusätzliche Festfunktionslogik 516, die verschiedene Festfunktionsbeschleunigungslogik zum Gebrauch durch den Grafikkern 500 enthalten kann. In einer Ausführungsform enthält die zusätzliche Festfunktionslogik 516 eine zusätzliche Geometriepipeline zum Gebrauch beim positionsbasierten Shading. Beim positionsbasierten Shading liegen zwei Geometriepipelines vor, die volle Pipeline innerhalb der Geometrie/Festfunktions-Pipeline 516, 536 und eine Ausschusspipeline, die eine zusätzliche Geometriepipeline ist, welche innerhalb der zusätzlichen Festfunktionslogik 516 enthalten sein kann. In einer Ausführungsform ist die Ausschusspipeline eine verschlankte Version der vollen Geometriepipeline. Die volle Pipeline und die Ausschusspipeline können verschiedene Vorgänge derselben Anwendung ausführen, wobei jeder Vorgang einen separaten Kontext aufweist. Positionsbasiertes Shading kann lange Ausschussläufe von verworfenen Dreiecken verbergen, wodurch ermöglicht wird, dass das Shading in manchen Fällen früher abgeschlossen wird. Beispielsweise, und in einer Ausführungsform, kann die Ausschusspipelinelogik innerhalb der zusätzlichen Festfunktionslogik 516 Positionsshader parallel mit der Hauptanwendung ausführen und erzeugt kritische Ergebnisse im Allgemeinen schneller als die volle Pipeline, da die Ausschusspipeline nur das Positionsattribut der Scheitelpunkte holt und shadet, ohne Rastern und Rendern der Pixel zum Framezwischenspeicher auszuführen. Die Ausschusspipeline kann die erzeugten kritischen Ergebnisse zum Errechnen von Sichtbarkeitsinformation für alle die Dreiecke verwenden, ohne Rücksicht darauf, ob diese Dreiecke verworfen werden. Die volle Pipeline (die in diesem Falle als eine Wiedergabepipeline bezeichnet werden kann) kann die Sichtbarkeitsinformation zum Überspringen der verworfenen Dreiecke zum Shaden von nur den sichtbaren Dreiecken aufnehmen, die schließlich zur Rasterungsphase übergeben werden.
  • In einer Ausführungsform kann die zusätzliche Festfunktionslogik 516 außerdem Maschinenlernbeschleunigungslogik, wie etwa Festfunktionsmatrixmultiplikationslogik, für Implementierungen enthalten, die Optimierungen für Maschinenlerntraining oder Interferencing enthalten.
  • Innerhalb jeden Grafikteilkerns 501A-501F ist ein Satz von Ausführungsressourcen enthalten, die zum Ausführen von Grafik-, Medien- und Rechenvorgängen in Reaktion auf Anforderungen durch Grafikpipeline-, Medienpipeline- oder Shaderprogramme benutzt werden können. Die Grafikteilkerne 501A-501F enthalten mehrfache EU-Gruppierungen 502A-502F, 504A-504F, Threadabsende- und Interthread-Kommunikations-(TD/IC-) Logik 503A-503F, einen 3D- (beispielsweise Textur-) Sampler 505A-505F, einen Mediensampler 506A-506F, einen Shaderprozessor 507A-507F und geteilten lokalen Speicher (SLM) 508A-508F. Die EU-Gruppierungen 502A-502F, 504A-504F enthalten jede mehrfache Ausführungseinheiten, die Mehrzweckgrafikverarbeitungseinheiten sind, welche zum Ausführen von Gleitkomma- und Ganzzahl/Festpunktlogikvorgängen im Dienst eines Grafik-, Medien- oder Rechenvorgangs imstande sind, darunter Grafik-, Medien- oder Rechenshaderprogramme. Die TD/IC-Logik 503A-503F führt lokale Threadabsende- und Threadsteuervorgänge für die Ausführungseinheiten innerhalb eines Teilkerns aus und ermöglicht Kommunikation zwischen Threads, die auf den Ausführungseinheiten des Teilkerns ausgeführt werden. Der 3D-Sampler 505A-505F kann Textur- oder andere 3D-Grafik betreffende Daten in den Speicher einlesen. Der 3D-Sampler kann Texturdaten basierend auf einem konfigurierten Samplezustand und dem Texturformat, das mit einer gegebenen Textur assoziiert ist, unterschiedlich lesen. Der Mediensampler 506A-506F kann ähnliche Lesevorgänge basierend auf dem Typ und Format, die mit Mediendaten assoziiert sind, ausführen. In einer Ausführungsform kann jeder Grafikteilkern 501A-501F abwechselnd einen vereinigten 3D- und Mediensampler enthalten. Threads, die auf den Ausführungseinheiten innerhalb von jedem der Teilkerne 501A-501F ausgeführt werden, kann den geteilten lokalen Speicher 508A-508F innerhalb von jedem Teilkern nutzen, um es Threads, die innerhalb einer Threadgruppe ausgeführt werden, zu ermöglichen, unter Benutzung eines gemeinsamen Pools von On-Chip-Speicher ausgeführt zu werden.
  • Ausführungseinheiten
  • 6A bis 6B stellen Threadausführungslogik 600 mit einer Gruppierung von Verarbeitungselementen, die in einem Grafikprozessorkern eingesetzt werden, gemäß hierin beschriebenen Ausführungsformen dar. Elemente von 6A-6B mit denselben Bezugszeichen (oder Bezeichnungen) wie die Elemente von jeglicher anderen Figur hierin können in jeglicher Art und Weise arbeiten oder funktionieren, die jener an anderer Stelle hierin beschriebenen gleicht, sind jedoch nicht darauf beschränkt. 6A stellt eine Übersicht von Threadausführungslogik 600 dar, die eine Variante der Hardwarelogik enthalten kann, welche mit jedem Teilkern 501A-501F von 5 dargestellt ist. 6B stellt beispielhafte interne Details einer Ausführungseinheit dar.
  • Wie in 6A dargestellt, enthält die Threadausführungslogik 600 in einigen Ausführungsformen einen Shader-Prozessor 602, einen Threadabsender 604, einen Anweisungscache 606, eine skalierbare Ausführungseinheitsgruppierung mit mehreren Ausführungseinheiten 608A-608N, einen Sampler 610, einen Datencache 612 und einen Datenport 614. In einer Ausführungsform kann die skalierbare Ausführungseinheitsgruppierung durch Aktivieren oder Deaktivieren von einer oder mehr Ausführungseinheiten (beispielsweise jegliche von Ausführungseinheit 608A, 608B, 608C, 608D bis 608N-1 und 608N) basierend auf den Rechenanforderungen einer Arbeitslast dynamisch skalieren. In einer Ausführungsform sind die beinhalteten Komponenten über eine Verbindungsstruktur, die zu jeder der Komponenten verbindet, miteinander verbunden. In einigen Ausführungsformen enthält die Threadausführungslogik 600 eine oder mehr Verbindungen zu einem Speicher, wie etwa Systemspeicher oder Cachespeicher, über eines oder mehr von Anweisungscache 606, Datenport 614, Sampler 610 und Ausführungseinheiten 608A-608N. In einigen Ausführungsformen ist jede Ausführungseinheit (beispielsweise 608A) eine eigenständige programmierbare Mehrzweckrecheneinheit, die zum Ausführen von mehrfachen simultanen Hardwarethreads imstande ist, während sie parallel mehrfache Datenelemente für jeden Thread ausführt. In verschiedenen Ausführungsformen ist die Gruppierung von Ausführungseinheiten 608A-608N zum Enthalten von jeglicher Anzahl von individuellen Ausführungseinheiten skalierbar.
  • In einigen Ausführungsformen werden die Ausführungseinheiten 608A-608N primär zum Ausführen von Shaderprogrammen benutzt. Ein Shaderprozessor 602 kann die verschiedenen Shaderprogramme ausführen und Ausführungsthreads, die mit den Shaderprogrammen assoziiert sind, über einen Threadabsender 604 absenden. In einer Ausführungsform enthält der Threadabsender Logik zum Vermitteln von Threadinitiierungsanforderungen von den Grafik- und Medienpipelines und Instanziieren der angeforderten Threads auf einer oder mehr Ausführungseinheiten in den Ausführungseinheiten 608A-608N. Beispielsweise kann eine Geometriepipeline Scheitelpunkt-, Tesselations- oder Geometrieshader an die Ausführungslogik zur Ausführung absenden. In einigen Ausführungsformen kann der Threadabsender 604 außerdem Laufzeitthreadablegeanforderungen von den ausführenden Shaderprogrammen verarbeiten.
  • In einigen Ausführungsformen unterstützen die Ausführungseinheiten 608A-608N einen Anweisungssatz, der native Unterstützung für zahlreiche standardmäßige 3D-Grafikshaderanweisungen enthält, sodass Shaderprogramme aus Grafikbibliotheken (beispielsweise Direct 3D und OpenGL) mit einer minimalen Übersetzung ausgeführt werden. Die Ausführungseinheiten unterstützen Scheitelpunkt- und Geometrieverarbeitung (beispielsweise Scheitelpunktprogramme, Geometrieprogramme, Scheitelpunktshader), Pixelverarbeitung (beispielsweise Pixelshader, Fragmentshader) und Mehrzweckverarbeitung (beispielsweise Rechen- und Medienshader). Jede der Ausführungseinheiten 608A-608N ist zur Multi-Issue Single Instruction Multiple Data- (SIMD-) Ausführung imstande, und Multithreadbetrieb ermöglicht eine effiziente Ausführungsumgebung hinsichtlich höherer Latenzspeicherzugänge. Jeder Hardwarethread innerhalb jeder Ausführungseinheit weist eine dedizierte Registerdatei mit hoher Bandbreite und assoziierten unabhängigen Threadzustand auf. Die Ausführung ist Multi-Issue pro Takt zu Pipelines, die zu Ganzzahl-, einzelnen und doppelten Genauigkeitsgleitkommavorgängen, SIMD-Zweigfähigkeit, logischen Vorgängen, Transzendentenvorgängen und anderen vermischten Vorgängen imstande sind. Während des Wartens auf Daten aus dem Speicher oder einer der geteilten Funktionen bewirkt Abhängigkeitslogik innerhalb der Ausführungseinheiten 608A-608N, dass ein Wartethread im Ruhezustand ist, bis die angeforderten Daten rückgeführt wurden. Während der Wartethread im Ruhezustand ist, können Hardwareressourcen zum Verarbeiten von anderen Threads verwendet werden. Beispielsweise kann während einer Verzögerung, die mit einem Scheitelpunktshadervorgang assoziiert ist, eine Ausführungseinheit Vorgänge für einen Pixelshader, Fragmentshader oder einen anderen Shader oder ein anderes Shaderprogramm, darunter ein anderer Scheitelpunktshader, ausführen.
  • Jede Ausführungseinheit der Ausführungseinheiten 608A-608N wirkt auf Gruppierungen von Datenelementen ein. Die Anzahl von Datenelementen ist die „Ausführungsgröße“, oder die Anzahl von Kanälen für die Anweisung. Ein Ausführungskanal ist eine logische Ausführungseinheit für Datenzugang, Maskierung und Flusssteuerung innerhalb von Anweisungen. Die Anzahl von Kanälen kann unabhängig von der Anzahl von Arithmetic Logic Units (ALUs) oder Floating Point Units (FPUs) für einen bestimmten Grafikprozessor sein. In einigen Ausführungsformen unterstützen die Ausführungseinheiten 608A-608N Ganzzahl- und Gleitkommadatentypen.
  • Der Ausführungseinheitsanweisungssatz enthält SIMD-Anweisungen. Die verschiedenen Datenelemente können als ein gepackter Datentyp in einem Register gespeichert sein, und die Ausführungseinheit verarbeitet die verschiedenen Elemente basierend auf der Datengröße der Elemente. Beispielsweise werden beim Einwirken auf einen 256 Bit breiten Vektor die 256 Bits des Vektors in einem Register gespeichert, und die Ausführungseinheit wirkt auf den Vektor als vier separate gepackte 64-Bit-Datenelemente (Quad-Wort- (QW-) Größendatenelemente), acht separate gepackte 32-Bit-Datenelemente (Doppelwort- (DW-) Größendatenelemente), sechzehn separate gepackte 16-Bit-Datenelemente (Wort- (W-) Größendatenelemente) oder zweiunddreißig 8-Bit-Datenelemente (Byte- (B-) Größendatenelemente) ein. Es sind jedoch andere Vektorbreiten und Registergrößen möglich.
  • In einer Ausführungsform können eine oder mehr Ausführungseinheiten zu einer fusionierten Ausführungseinheit 609A-609N mit Threadsteuerlogik (607A-607N), die für die fusionierten EUs gemeinsam ist, kombiniert werden. Mehrfache EUs können zu einer EU-Gruppe fusioniert werden. Jede EU in der fusionierten EU-Gruppe kann zum Ausführen eines separaten SIMD-Hardwarethread konfiguriert sein. Die Anzahl von EUs in einer fusionierten EU-Gruppe kann gemäß Ausführungsformen variieren. Zudem können verschiedene SIMD-Breiten pro EU ausgeführt werden, darunter u.a. SIMD8, SIMD16 und SIMD32. Jede fusionierte Grafikausführungseinheit 609A-609N enthält mindestens zwei Ausführungseinheiten. Beispielsweise enthält die fusionierte Ausführungseinheit 609A eine erste EU 608A, zweite EU 608B und Threadsteuerlogik 607A, die für die erste EU 608A und die zweite EU 608B gemeinsam ist. Die Threadsteuereinheit 607A steuert Threads, die auf der fusionierten Grafikausführungseinheit 609A ausgeführt werden, wodurch es jeder EU innerhalb der fusionierten Ausführungseinheiten 609A-609N ermöglicht ist, unter Benutzung eines gemeinsamen Anweisungszeigerregister zu laufen.
  • Ein oder mehr interne Anweisungscaches (beispielsweise 606) sind in der Threadausführungslogik 600 zum Zwischenspeichern von Threadanweisungen für die Ausführungseinheiten enthalten. In einigen Ausführungsformen sind ein oder mehr Datencaches (beispielsweise 612) zum Zwischenspeichern von Cachedaten während Threadausführung enthalten. In einigen Ausführungsformen ist ein Sampler 610 zum Vorsehen von Textursampling für 3D-Vorgänge und Mediensampling für Medienvorgänge enthalten. In einigen Ausführungsformen enthält der Sampler 610 spezialisierte Textur- oder Mediensamplingfunktionalität zum Verarbeiten von Textur- oder Mediendaten während des Samplingprozesses vor dem Zuführen der gesampelten Daten zu einer Ausführungseinheit.
  • Während der Ausführung senden die Grafik- und Medienpipelines Threadinitiierungsanforderungen an die Threadausführungslogik 600 über Threadablege- und -absendelogik. Sobald eine Gruppe von geometrischen Objekten verarbeitet und zu Pixeldaten gerastert wurde, wird Pixelprozessorlogik (beispielsweise Pixelshaderlogik, Fragmentshaderlogik usw.) innerhalb des Shaderprozessors 602 aufgerufen, um Ausgabeinformation weiter zu berechnen und zu bewirken, dass Ergebnisse auf Ausgabeflächen (beispielsweise Farbpufferspeicher, Tiefenpufferspeicher, Stencil Buffer usw.) geschrieben werden. In einigen Ausführungsformen berechnet ein Pixelshader oder Fragmentshader die Werte der verschiedenen Scheitelpunktattribute, die über das gerasterte Objekt hinweg interposiert werden sollen. In einigen Ausführungsformen führt Pixelprozessorlogik innerhalb des Shaderprozessors 602 dann ein durch Anwendungsprogrammierschnittstelle (API) vorgesehenes Pixel- oder Fragmentshaderprogramm aus. Zum Ausführen des Shaderprogramms sendet der Shaderprozessor 602 Threads an eine Ausführungseinheit (beispielsweise 608A) über den Threadabsender 604 ab. In einigen Ausführungsformen benutzt der Shaderprozessor 602 Textursamplinglogik im Sampler 610 zum Zugreifen auf Texturdaten in Texturkarten, die im Speicher gespeichert sind. Arithmetische Vorgänge auf die Texturdaten und die Eingabegeometriedaten errechnen Pixelfarbdaten für jedes geometrische Fragment oder streichen ein oder mehr Pixel aus der weiteren Verarbeitung.
  • In einigen Ausführungsformen sieht der Datenport 614 einen Speicherzugriffsmechanismus für die Threadausführungslogik 600 zum Ausgeben von verarbeiteten Daten an den Speicher zur weiteren Verarbeitung auf einer Grafikprozessorausgabepipeline vor. In einigen Ausführungsformen enthält der Datenport 614 einen oder mehr Cachespeicher (beispielsweise Datencache 612) oder ist daran angekoppelt, um Daten zum Speicherzugriff über den Datenport zwischenzuspeichern.
  • Wie in 6B dargestellt, kann eine Grafikausführungseinheit 608 eine Anweisungsabholeinheit 637, eine allgemeine Registerdateigruppierung (GRF) 624, eine Architekturregisterdateigruppierung (ARF) 626, einen Threadvermittler 622, eine Sendeeinheit 630, eine Abzweigeinheit 632, einen Satz von SIMD-Gleitkommaeinheiten (FPUs) 634 und in einer Ausführungsform einen Satz von dedizierten Ganzzahl-SIMD-ALUs 635 enthalten. Die GRF 624 und ARF 626 enthält den Satz von allgemeinen Registerdateien und Architekturregisterdateien, die mit jedem simultanen Hardwarethread assoziiert sind, der in der Grafikausführungseinheit 608 aktiv sein kann. In einer Ausführungsform wird ein Pro-Thread-Architekturzustand in der ARF 626 aufrechterhalten, während Daten, die während der Threadausführung benutzt werden, in der GRF 624 gespeichert werden. Der Ausführungszustand jeden Threads, darunter die Anweisungszeiger für jeden Thread, kann in threadspezifischen Registern in der ARF 626 gehalten werden.
  • In einer Ausführungsform weist die Grafikausführungseinheit 608 eine Architektur auf, die eine Kombination von Simultaneous Multi-Threading (SMT) und feinkörnigem Interleaved Multi-Threading (IMT) ist. Die Architektur weist eine modulare Funktion auf, die zum Zeitpunkt der Gestaltung basierend auf einer Zielanzahl von simultanen Threads und Anzahl von Registern pro Ausführungseinheit feinabgestimmt werden kann, wobei Ausführungseinheitsressourcen über Logik hinweg aufgeteilt werden, die zum Ausführen von mehrfachen simultanen Threads benutzt wird.
  • In einer Ausführungsform kann die Grafikausführungseinheit 608 mehrfache Anweisungen zusammen ausgeben, die jeweils verschiedene Anweisungen sein können. Der Threadvermittler 622 des Grafikausführungseinheitsthreads 608 kann die Anweisungen an eine der Sendeeinheit 630, Abzweigeinheit 642 oder SIMD-FPU(s) 634 zur Ausführung absenden. Jeder Ausführungsthread kann auf 128 Mehrzweckregister innerhalb der GRF 624 zugreifen, wobei jedes Register 32 Bytes speichern kann, zugänglich als ein SIMD 8-Element-Vektor von 32-Bit-Datenelementen. In einer Ausführungsform hat jeder Ausführungseinheitsthread Zugang zu 4 Kbytes innerhalb der GRF 624, obgleich Ausführungsformen nicht darauf beschränkt sind und in anderen Ausführungsformen größere oder kleinere Registerressourcen vorgesehen sein können. In einer Ausführungsform können sieben Threads simultan ausgeführt werden, obgleich die Anzahl von Threads pro Ausführung ebenfalls gemäß Ausführungsformen variieren können. In einer Ausführungsform, in der sieben Threads auf 4 Kbytes zugreifen können, kann die GRF 624 insgesamt 28 Kbytes speichern. Flexible Adressiermodi können erlauben, dass Register zusammen adressiert werden, um effektiv breitere Register zu bilden oder raumgreifende rechteckige Blockdatenstrukturen darzustellen.
  • In einer Ausführungsform werden Speichervorgänge, Samplervorgänge und andere Systemkommunikationen mit längerer Latenz über „Senden“-Anweisungen abgesendet, die durch die Nachrichtenweiterleitungssendeeinheit 630 ausgeführt werden. In einer Ausführungsform werden Abzweiganweisungen an eine dedizierte Abzweigeinheit 632 zum Ermöglichen von SIMD-Divergenz und letztendlicher Konvergenz abgesendet.
  • In einer Ausführungsform enthält die Grafikausführungseinheit 608 eine oder mehr SIMD-Gleitkommaeinheiten (FPU(s)) 634 zum Ausführen von Gleitkommavorgängen. In einer Ausführungsform unterstützt (unterstützen) die FPU(s) 634 außerdem Ganzzahlrechnung. In einer Ausführungsform kann (können) die FPU(s) 634 bis zu M 32-Bit-Gleitkomma-(oder Ganzzahl-) Vorgänge über SIMD ausführen oder bis zu 2M 16-Bit-Ganzzahl- oder 16-Bit-Gleitkommavorgänge über SIMD ausführen. In einer Ausführungsform sieht mindestens einer der FPU(s) erweiterte Mathematikfähigkeit zum Unterstützen von transzendentalen Mathematikfunktionen mit hohem Durchsatz und Doppelgenauigkeits-64-Bit-Gleitkomma vor. In einigen Ausführungsformen liegt außerdem ein Satz von 8-Bit-Ganzzahl-SIMD-ALUs 635 vor und kann zum Ausführen von Vorgängen, die mit Maschinenlernrechnungen assoziiert sind, spezifisch optimiert sein.
  • In einer Ausführungsform können mehrere Instanzen der Grafikausführungseinheit 608 in einer Grafikteilkerngruppierung (beispielsweise einer Teilscheibe) instanziiert sein. Zur Skalierbarkeit können Produktarchitekten die exakte Anzahl von Ausführungseinheiten pro Teilkerngruppierung wählen. In einer Ausführungsform kann die Ausführungseinheit 608 Anweisungen über mehrere Kanäle hinweg ausführen. In einer weiteren Ausführungsform wird jeder Thread, der auf der Grafikausführungseinheit 608 ausgeführt wird, auf einem anderen Kanal ausgeführt.
  • 7 ist ein Blockdiagramm, das Grafikprozessoranweisungsformate 700 gemäß Ausführungsformen darstellt. In einer oder mehr Ausführungsformen unterstützen die Grafikprozessorausführungseinheiten einen Anweisungssatz mit Anweisungen in mehrfachen Formaten. Die Kästen mit durchgezogener Linie stellen die Komponenten dar, die im Allgemeinen in einer Ausführungseinheitsanweisung enthalten sind, während die gestrichelten Linien Komponenten enthalten, die optional sind oder die nur in einem Teilsatz der Anweisungen enthalten sind. In einigen Ausführungsformen sind die beschriebenen und dargestellten Anweisungsformate 700 Makrovorgänge, dahingehend dass sie Anweisungen sind, die der Ausführungseinheit zugeführt werden, im Gegensatz zu Mikrovorgängen, die aus Anweisungsdecodierung resultieren, sobald die Anweisung verarbeitet ist.
  • In einigen Ausführungsformen unterstützen die Grafikprozessorausführungseinheiten nativ Anweisungen in einem 128-Bit-Anweisungsformat 710. Ein komprimiertes 64-Bit-Anweisungsformat 730 ist für manche Anweisungen basierend auf der ausgewählten Anweisung, Anweisungsoptionen und der Anzahl von Operanden verfügbar. Das native 128-Bit-Anweisungsformat 710 versieht Zugriff auf alle Anweisungsoptionen, während einige Optionen und Vorgänge auf das 64-Bit-Format 730 beschränkt sind.
  • Die nativen Anweisungen, die im 64-Bit-Format 730 verfügbar sind, variieren je nach Ausführungsform. In einigen Ausführungsformen ist die Anweisung teilweise unter Verwendung eines Satzes von Indexwerten in einem Indexfeld 713 komprimiert. Die Ausführungseinheitshardware nimmt Bezug auf einen Satz von Komprimierungstabellen basierend auf den Indexwerten und benutzt die Komprimierungstabellenausgaben zum Rekonstruieren einer nativen Anweisung im 128-Bit-Anweisungsformat 710.
  • Für jedes Format definiert Anweisungs-Opcode 712 den Vorgang, den die Ausführungseinheit ausführen soll. Die Ausführungseinheiten führen jede Anweisung parallel über die mehrfachen Datenelemente jeden Operanden aus. Beispielsweise führt die Ausführungseinheit in Reaktion auf eine Addieranweisung einen simultanen Addiervorgang über jeden Farbkanal hinweg aus, der ein Texturelement oder Bildelement darstellt. Vorgabemäßig führt die Ausführungseinheit jede Anweisung über alle Datenkanäle der Operanden hinweg aus. In einigen Ausführungsformen ermöglicht das Anweisungs-Control-Feld 714 Steuerung über bestimmte Ausführungsoptionen, wie etwa Kanalauswahl (beispielsweise Prädikation) und Datenkanalreihenfolge (beispielsweise Wiederordnung). Für Anweisungen im 128-Bit-Format 710 begrenzt ein Exec-Size-Feld 716 die Anzahl von Datenkanälen, die parallel ausgeführt werden. In einigen Ausführungsformen ist das Exec-Size-Feld 716 zum Gebrauch im komprimierten 64-Bit-Anweisungsformat 730 nicht verfügbar.
  • Einige Ausführungseinheitsanweisungen weisen bis zu drei Operanden auf, darunter zwei Quelloperanden, src0 720, srcl 722, und eine Destination 718. In einigen Ausführungsformen unterstützen die Ausführungseinheiten duale Destinationsanweisungen, wobei eine der Destinationen impliziert ist. Datenmanipulationsanweisungen können einen dritten Quelloperanden (beispielsweise SRC2 724) aufweisen, wobei der Anweisungs-Opcode 712 die Anzahl von Quelloperanden bestimmt. Ein letzter Quelloperand einer Anweisung kann ein unmittelbarer (beispielsweise hartcodierter) Wert sein, der mit der Anweisung weitergegeben wird.
  • In einigen Ausführungsformen enthält das 128-Bit-Anweisungsformat 710 ein Zugriffs-/Adressmodusfeld 726, das beispielsweise spezifiziert, ob direkter Registeradressiermodus oder indirekter Registeradressiermodus benutzt ist. Wenn direkter Registeradressiermodus benutzt ist, wird die Registeradresse von einem oder mehr Operanden direkt durch Bits in der Anweisung vorgesehen.
  • In einigen Ausführungsformen enthält das 128-Bit-Anweisungsformat 710 ein Zugriffs-/Adressmodusfeld 726, das einen Adressmodus und/oder einen Zugriffsmodus für die Anweisung spezifiziert. In einer Ausführungsform wird der Zugriffsmodus zum Definieren einer Datenzugriffsausrichtung für die Anweisung benutzt. Einige Ausführungsformen unterstützen Zugriffsmodi mit einem ausgerichteten 16-Byte-Zugriffsmodus und einem ausgerichteten 1-Byte-Zugriffsmodus, wobei die Byteausrichtung des Zugriffsmodus die Zugriffsausrichtung der Anweisungsoperanden bestimmt. Beispielsweise kann die Anweisung, wenn sie im ersten Modus ist, byteausgerichtetes Adressieren für Quell- und Destinationsoperanden benutzen, und wenn sie im zweiten Modus ist, kann die Anweisung 16-Bteausgerichtetes Adressieren für alle Quell- und Destinationsoperanden benutzen.
  • In einer Ausführungsform bestimmt der Adressmodulabschnitt des Zugriffs-/Adressmodusfelds 726, ob die Anweisung direktes oder indirektes Adressieren benutzen soll. Wenn der direkte Registeradressiermodus benutzt wird, sehen Bits in der Anweisung die Registeradresse von einem oder mehr Operanden direkt vor. Wenn der indirekte Registeradressiermodus benutzt wird, kann die Registeradresse von einem oder mehr Operanden basierend auf einem Registeradresswert und einem unmittelbaren Adressfeld in der Anweisung errechnet.
  • In einigen Ausführungsformen werden Anweisungen basierend auf Opcode 712 Bitfeldern zum Vereinfachen von Opcode-Decodieren 740 gruppiert. Für einen 8-Bit-Opcode ermöglichen es Bits 4, 5 und 6 der Ausführungseinheit, den Opcode-Typ zu bestimmen. Die gezeigte, genaue Opcode-Gruppierung ist lediglich ein Beispiel. In einigen Ausführungsformen eine enthält Verschiebungs- und Logik-Opcode-Gruppe 742 Datenverschiebungs- und Logikanweisungen (beispielsweise Verschieben (mov), Vergleichen (comp)). In einigen Ausführungsformen teilt die Verschiebungs- und Logikgruppe 742 die fünf signifikantesten Bits (MSB), wobei Verschiebungs-(mov-) Anweisungen in der Form von 0000xxxxb sind und Logikanweisungen in der Form von 0001xxxxb sind. Eine Flusssteueranweisungsgruppe 744 (beispielsweise Rufen, Springen (jmp)) enthält Anweisungen in der Form von 0010xxxxb (beispielsweise 0x20). Eine vermischte Anweisungsgruppe 746 enthält eine Mischung von Anweisungen, darunter Synchronisationsanweisungen (beispielsweise Warten, Senden) in der Form von 0011xxxxb (beispielsweise 0x30). Eine parallele Mathematikanweisungsgruppe 748 enthält komponentenweise Arithmetikanweisungen (beispielsweise Addieren, Multiplizieren (mul)) in der Form von 0100xxxxb (beispielsweise 0x40). Die parallele Mathematikgruppe 748 führt die Arithmetikvorgänge parallel über die Kanäle hinweg aus. Die Vektormathematikgruppe 750 enthält Arithmetikanweisungen (beispielsweise dp4) in der Form von 0101xxxxb (beispielsweise 0x50). Die Vektormathematikgruppe führt Arithmetik wie etwa Punktproduktrechnungen auf Vektoroperanden aus.
  • Grafikpipeline
  • 8 ist ein Blockdiagramm einer anderen Ausführungsform eines Grafikprozessors 800. Elemente von 8 mit denselben Bezugszeichen (oder Bezeichnungen) wie die Elemente von jeglicher anderen Figur hierin können in jeglicher Art und Weise arbeiten oder funktionieren, die jener an anderer Stelle hierin beschriebenen gleicht, sind jedoch nicht darauf beschränkt.
  • In einigen Ausführungsformen enthält der Grafikprozessor 800 eine Geometriepipeline 820, eine Medienpipeline 830, eine Anzeigenpipeline 840, Threadausführungslogik 850 und eine Wiedergabeausgabepipeline 870. In einigen Ausführungsformen ist der Grafikprozessor 800 ein Grafikprozessor innerhalb eines Mehrkernverarbeitungssystems, das einen oder mehr Mehrzweckverarbeitungskerne enthält. Der Grafikprozessor wird durch Registerschreiben in ein oder mehr Steuerregister (nicht gezeigt) oder über Befehle gesteuert, die über eine Ringzusammenschaltung 802 an den Grafikprozessor 800 ausgegeben werden. In einigen Ausführungsformen koppelt die Ringzusammenschaltung 802 den Grafikprozessor 800 an andere Verarbeitungskomponenten, wie etwa andere Grafikprozessoren oder Mehrzweckprozessoren. Befehle von der Ringzusammenschaltung 802 werden durch eine Befehlsstromeinrichtung 803 interpretiert, die individuellen Komponenten der Geometriepipeline 820 oder der Medienpipeline 830 Anweisungen zuführt.
  • In einigen Ausführungsformen leitet die Befehlsstromeinrichtung 803 den Betrieb einer Scheitelpunktabholeinrichtung 805, die Scheitelpunktdaten aus dem Speicher ausliest und Scheitelpunktverarbeitungsbefehle ausführt, welche durch die Befehlsstromeinrichtung 803 zugeführt werden. In einigen Ausführungsformen führt die Scheitelpunktabholvorrichtung 805 einem Scheitelpunktshader 807 Daten zu, der Koordinatenraumtransformation und Leuchtvorgänge auf jeden Scheitelpunkt ausführt. In einigen Ausführungsformen führen die Scheitelpunktabholeinrichtung 805 und der Scheitelpunktshader 807 Scheitelpunktverarbeitungsvorgänge durch Absenden von Ausführungsthreads an Ausführungseinheiten 852A-852B über einen Threadabsender 831 aus.
  • In einigen Ausführungsformen sind die Ausführungseinheiten 852A-852B eine Gruppierung von Vektorprozessoren mit einem Anweisungssatz zum Ausführen von Grafik- und Medienvorgängen. In einigen Ausführungsformen weisen die Ausführungseinheiten 852A-852B einen beigeordneten Ll-Cache 851 auf, der spezifisch für jede Gruppierung ist oder von den Gruppierungen geteilt wird. Der Cache kann als ein Datencache, ein Anweisungscache oder ein einzelner Cache konfiguriert sein, der zum Enthalten von Daten und Anweisungen in verschiedenen Partitionen partitioniert ist.
  • In einigen Ausführungsformen enthält die Geometriepipeline 820 Tesselationskomponenten zum Ausführen von hardwarebeschleunigter Tesselation von 3D-Objekten. In einigen Ausführungsformen konfiguriert ein programmierbarer Rumpfshader 811 die Tesselationsvorgänge. Ein programmierbarer Domain-Shader 817 versieht Back-End-Einschätzung von Tesselationsausgabe. Ein Tesselator 813 arbeitet unter der Leitung des Rumpfshaders 811 und enthält Logik mit spezieller Zweckbestimmung zum Erzeugen eines Satzes von detaillierten geometrischen Objekten basierend auf einem Grobgeometriemodell, das als Eingabe zur Geometriepipeline 820 zugeführt wird. In einigen Ausführungsformen können, wenn Tesselation nicht verwendet wird, Tesselationskomponenten (beispielsweise Rumpfshader 811, Tesselator 813 und Domain-Shader 817) umgangen werden.
  • In einigen Ausführungsformen können komplette geometrische Objekte durch einen Geometrieshader 819 über einen oder mehr Threads, die an die Ausführungseinheiten 852A-852B abgesendet werden, verarbeitet werden, oder sie können direkt zum Clipper 829 weitergeleitet werden. In einigen Ausführungsformen wirkt der Geometrieshader auf gesamte geometrische Objekte ein, statt auf Scheitelpunkte oder Stellen von Scheitelpunkten wie in vorhergehenden Stufen der Grafikpipeline. Wenn die Tesselation deaktiviert ist, empfängt der Geometrieshader 819 eine Eingabe vom Scheitelpunktshader 807. In einigen Ausführungsformen ist der Geometrieshader 819 durch ein Geometrieshaderprogramm zum Ausführen von Geometrietesselation programmierbar, wenn die Tesselationseinheiten deaktiviert sind.
  • Vor der Rasterung verarbeitet ein Clipper 829 Scheitelpunktdaten. Der Clipper 829 kann ein Festfunktionsclipper oder ein programmierbarer Clipper mit Clip- und Geometrieshaderfunktionen sein.
  • In einigen Ausführungsformen sendet eine Rasterer- und Tiefentesteinheit 873 in der Wiedergabeausgabepipeline 870 Pixelshader zum Umwandeln der geometrischen Objekte in Pro-Pixel-Darstellungen ab. In einigen Ausführungsformen ist die Pixelshaderlogik in der Threadausführungslogik 850 enthalten. In einigen Ausführungsformen kann eine Anwendung den Rasterisierer und eine Tiefentestkomponente 873 umgehen und auf nicht rasterisierte Vertexdaten über eine Stream-Out-Einheit 823 zugreifen.
  • Der Grafikprozessor 800 hat einen Verbindungsbus, ein Verbindungsgewebe oder einen anderen Verbindungsmechanismus, der die Übermittlung von Daten und Meldungen unter den wichtigen Bestandteilen des Prozessors zu ermöglicht. In einigen Ausführungsformen verbinden sich die Ausführungseinheiten 852A bis 852B und die assoziierten Logikeinheiten (z. B. Ll-Cache 851, Sampler 854, Texturcache 858 usw.) über einen Datenport 856, um Speicherzugriff auszuführen und mit Renderausgabepipelinekomponenten des Prozessors zu kommunizieren. In einigen Ausführungsformen weisen der Sampler 854, die Caches 851, 858 und die Ausführungseinheiten 852A bis 852B je separate Speicherzugriffspfade auf. In einer Ausführungsform kann die Texturcache 858 auch als ein Samplercache ausgeführt werden.
  • In einigen Ausführungsformen enthält die Renderingausgabepipeline 870 eine Rasterisierungs- und Tiefentestkomponente 873, die vertexbasierte Objekte in eine entsprechende pixelbasierte Darstellung umwandeln. In einigen Ausführungsformen umfasst die Rasterisiererlogik eine Fenster-/Maskierereinheit, um das Festfunktionsdreieck und die Linienrasterisierung auszuführen. Ein entsprechender Rendercache 878 und Tiefencache 879 sind in einigen Ausführungsformen ebenfalls verfügbar. Eine Pixeloperationskomponente 877 führt pixelbasierte Operationen auf die Daten aus, wobei in einigen Fällen jedoch Pixeloperationen, die mit 2D-Operationen assoziiert sind (z. B. Bitblockbildtransfers mit Blending) durch die 2D-Engine 841 ausgeführt oder zum Zeitpunkt der Anzeige durch den Anzeigecontroller 843 unter Verwendung von Overlay-Anzeigeebenen ersetzt werden. In einigen Ausführungsformen ist ein geteilter L3-Cache 875 für alle Grafikkomponenten verfügbar, sodass Daten geteilt werden können, ohne den Hauptsystemspeicher zu verwenden.
  • In einigen Ausführungsformen umfasst die Grafikprozessor-Medienpipeline 830 eine Medienengine 837 und ein Videofrontend 834. In einigen Ausführungsformen empfängt das Videofrontend 834 Pipelinebefehle von dem Befehls-Streamer 803. In einigen Ausführungsformen umfasst die Medienpipeline 830 einen separaten Befehls-Streamer. In einigen Ausführungsformen verarbeitet das Videofrontend 834 Medienbefehle vor dem Versand des Befehls an die Medienengine 837. In einigen Ausführungsformen umfasst die Medienengine 837 Thread-Spawning-Funktionen, um Threads zum Senden an die Threadausführungslogik 850 über den Thread-Dispatcher 831 zu spawnen.
  • In einigen Ausführungsformen umfasst der Grafikprozessor 800 eine Anzeigeengine 840. In einigen Ausführungsformen ist die Anzeigeengine 840 von dem Prozessor 800 getrennt und koppelt sich über die Ringverbindung 802 oder einen anderen Verbindungsbus oder ein Verbindungsgewebe mit dem Grafikprozessor. In einigen Ausführungsformen umfasst die Anzeigeengine 840 eine 2D-Engine 841 und einen Anzeigecontroller 843. In einigen Ausführungsformen enthält die Anzeigeengine 840 eine Logik für einen speziellen Zweck, die in der Lage ist, unabhängig von der 3D-Pipeline zu funktionieren. In einigen Ausführungsformen koppelt sich der Anzeigecontroller 843 mit einem Anzeigegerät (nicht dargestellt), die eine in ein System, wie etwa in einen Laptopcomputer, ein integriertes Anzeigegerät oder eine externes Anzeigegerät, das über einen Anzeigegeräteanschluss verbunden ist, sein kann.
  • In einigen Ausführungsformen sind die Geometriepipeline 820 und die Medienpipeline 830 konfigurierbar, Operationen auf Grundlage von mehreren Grafiken und Medienprogrammierungsschnittstellen auszuführen, und nicht spezifisch für eine bestimmte Anwendungsprogrammierschnittstelle (API). 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 durch den Grafikprozessor verarbeitet werden können. In einigen Ausführungsformen werden Open Graphics Library (OpenGL), Open Computing Language (OpenCL) und/oder Vulkan-Grafik, und Compute-API unterstützt, alle von der Khronos Group. In einigen Ausführungsformen kann auch die Direct3D-Library der Microsoft Corporation unterstützt werden. In einigen Ausführungsformen kann eine Kombination dieser Bibliotheken unterstützt werden. Außerdem kann eine Unterstützung für die Open Source Computer Vision Library (OpenCV) bereitgestellt werden. Eine künftige API mit einer kompatiblen 3D-Pipeline wäre ebenfalls unterstützt, wenn eine Zuordnung von der Pipeline einer künftigen API zur Pipeline des Grafikprozessor möglich ist.
  • Grafikpipelineprogrammierung
  • 9A ist ein Blockdiagramm, das ein Grafikprozessorbefehlsformat 900 nach einigen Ausführungsformen illustriert. 9B ist ein Blockdiagramm, das eine Grafikprozessorbefehlssequenz 910 nach einer Ausführungsform illustriert. Die Kästen mit durchgezogenen Linien in 9A illustrieren die Bestandteile, die allgemein in einem Grafikbefehl enthalten sind, während die gestrichelten Linien Bestandteile enthalten, die optional sind oder die nur in einem Untersatz von Grafikbefehlen enthalten sind. Das beispielhafte Grafikprozessorbefehlsformat 900 aus 9A umfasst Datenfelder zum Identifizieren eines Clients 902, eines Befehlsoperationscodes (opcode) 904 und von Daten 906 für den Befehl. Ein Unter-Opcode 905 und eine Befehlsgröße 908 sind in einigen Befehlen ebenfalls enthalten.
  • In einigen Ausführungsformen spezifiziert der Client 902 die Clienteinheit der Grafikvorrichtung, die die Befehlsdaten verarbeitet. In einigen Ausführungsformen untersucht ein Grafikprozessorbefehlsparser das Clientfeld jedes Befehls zur Festlegung der Bedingungen für die weitere Verarbeitung des Befehls und Weiterleitung der Befehlsdaten an die entsprechend Clienteinheit. In einigen Ausführungsformen umfassen die Grafikprozessor-Clienteinheiten eine Speicherschnittstelleneinheit, eine Renderingeinheit, eine 2D-Einheit, eine 3D-Einheit und eine Medieneinheit. Jede Clienteinheit weist eine entsprechende Verarbeitungspipeline auf, die die Befehle verarbeitet. Wenn der Befehl durch die Clienteinheit empfangen wird, liest die Clienteinheit den Opcode 904 und, wenn vorhanden, den Unter-Opcode 905 aus, um die auszuführende Operation zu bestimmen. Die Clienteinheit führt den Befehl unter Verwendung von Informationen im Datenfeld 906 aus. Für einige Befehle wird eine ausdrückliche Befehlsgröße 908 erwartet, um die Größe des Befehls anzugeben. In einigen Ausführungsformen bestimmt der Befehlsparser automatisch die Größe von mindestens einigen der Befehle auf Grundlage des Befehls-Opcodes. In einigen Ausführungsformen werden die Befehle über Mehrfache eines Doppelworts ausgerichtet.
  • Ein Ablaufdiagramm in 9B illustriert eine beispielhafte Grafikprozessorbefehlssequenz 910. In einigen Ausführungsformen verwendet Software oder Firmware eines Datenverarbeitungssysteme, das eine Ausführungsform eines Grafikprozessors aufweist, eine Version des Befehlsablaufs, der gezeigt wird, um einen Satz Grafikoperationen aufzubauen, auszuführen und zu beenden. Ein Beispielbefehlsablauf ist ausschließlich zu Beispiel zwecken darstellt und beschrieben, da die Ausführungsformen nicht auf diese spezifischen Befehle oder auf diesen Befehlsablauf beschränkt sind. Weiterhin können die Befehle als Befehlsbatch in einem Befehlsablauf ausgegeben werden, sodass der Grafikprozessor die Befehlssequenz in mindestens teilweiser Übereinstimmung ausführen kann.
  • In einigen Ausführungsformen kann der Grafikprozessorbefehlsablauf 910 mit einem Befehl 912 zum Leeren der Pipeline beginnen, um eine aktive Grafikpipeline zu veranlassen, die aktuell ausstehenden Befehle für die Pipeline auszuführen. In einigen Ausführungsformen funktionieren die 3D-Pipeline 922 und die Medienpipeline 924 nicht gleichzeitig. Die Pipelineleerung erfolgt, um die aktiven Grafikpipeline zu veranlassen, ausstehende Befehle abzuschließen. In Reaktion auf eine Pipelineleerung pausiert der Befehlsparser für den Grafikprozessor die Befehlsverarbeitung, bis die aktiven Zeichnungsengines die ausstehenden Operationen abschließen und die jeweiligen Lesecaches invalidiert werden. Optional können Daten in dem Rendercache, der als „unsauber“ markiert ist, in den Speicher geleert werden. In einigen Ausführungsformen kann der Befehl 912 zum Leeren der Pipeline zur Synchronisierung der Pipeline oder vor dem Umschalten des Grafikprozessors in einen Zustand mit geringer Leistung verwendet werden.
  • In einigen Ausführungsformen wird ein Befehl 913 zur Auswahl der Pipeline verwendet, wenn ein Befehlsablauf verlangt, dass der Grafikprozessor ausdrücklich zwischen Pipelines umschaltet. In einigen Ausführungsformen ist ein Befehl 913 zur Auswahl der Pipeline nur einmal innerhalb eines Ausführungszusammenhangs erforderlich, bevor Pipelinebefehle ausgegeben werden, sofern der Kontext nicht die Ausgabe von Befehlen für beide Pipelines ist. In einigen Ausführungsformen ist ein Befehl 912 zum Leeren der Pipeline direkt vor dem Umschalten der Pipelines über den Befehl 913 zur Auswahl der Pipeline erforderlich.
  • In einigen Ausführungsformen konfiguriert ein Befehl 914 zum Steuern der Pipeline 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 Befehl 914 zum Steuern der Pipeline den Pipelinezustand für die aktive Pipeline. In einer Ausführungsform wird der Befehl 914 zum Steuern der Pipeline zur Pipelinesynchronisierung und zum Löschen von Daten aus einem oder mehreren Cachespeichern innerhalb der aktiven Pipeline verwendet, bevor ein Befehlsbatch verarbeitet wird.
  • In einigen Ausführungsformen werden Rücklaufpufferzustandsbefehle 916 verwendet, um einen Satz Rücklaufpuffer für die jeweiligen Pipelines zum Schreiben von Daten einzustellen. Einige Pipelineoperationen verlangen die Zuweisung, Auswahl oder Konfiguration von einem oder mehreren Rücklaufpuffern, in den/die die Operationen bei der Verarbeitung Zwischendaten schreiben. In einigen Ausführungsformen verwendet der Grafikprozessor außerdem einen oder mehrere Rücklaufpuffer zum Speichern von Ausgabedaten und Ausführen von threadübergreifender Kommunikation. In einigen Ausführungsformen umfasst der Rücklaufpufferzustand 916 die Auswahl der Größe und Anzahl der Rücklaufpuffer zur Verwendung für einen Satz Pipelineoperationen.
  • Die verbleibenden Befehle in dem Befehlsablauf unterscheiden sich je nach der aktiven Pipeline für Operationen. Basierend auf der Pipelinebestimmung 920 wird die Befehlssequenz beginnend mit dem 3D-Pipelinezustand 930 auf die 3D-Pipeline 922 oder beginnend mit dem Medienpipelinezustand 940 auf die Medienpipeline 924 zugeschnitten.
  • Die Befehle zum Konfigurieren des 3D-Pipelinezustands 930 umfassen 3D-Zustandseinstellbefehle für den Vertexpufferzustand, Vertexelementzustand, konstanten Farbzustand, Tiefenpufferzustand und andere Zustandsvariablen, die konfiguriert werden sollen, bevor 3D-primitive Befehle verarbeitet werden. Die Werte dieser Befehle werden mindestens teilweise basierend auf der jeweils verwendeten 3D API berechnet. In einigen Ausführungsformen können die Befehle für den 3D-Pipelinezustand 930 auch in der Lage sein, bestimmte Pipelineelemente selektiv zu deaktivieren oder zu umgehen, wenn diese Elemente nicht verwendet werden.
  • In einigen Ausführungsformen wird der Befehl für die 3D-Primitive 932 verwendet, um 3D-Primitive zur Verarbeitung durch die 3D-Pipeline zu übermitteln. Befehle und entsprechende Parameter, die über den Befehl für 3D-Primitive 932 an den Grafikprozessor weitergegeben werden, werden an die Vertexabruffunktion in der Grafikpipeline weitergeleitet. Die Vertexabruffunktion verwendet die Befehlsdaten für die 3D-Primitive 932 zur Erzeugung von Vertexdatenstrukturen. Die Vertexdatenstrukturen werden in einem oder mehreren Rücklaufpuffern gespeichert. In einigen Ausführungsformen wird der Befehl der 3D-Primitiven 932 verwendet, um Vertexoperationen über Vertexshader auf 3D-Primitive auszuführen. Um den Vertexshader zu verarbeiten, versendet die 3D-Pipeline 922 Shaderausführungsthreads an die Grafikprozessorausführungseinheiten.
  • In einigen Ausführungsformen wird die 3D-Pipeline 922 über einen Befehl oder ein Ereignis zur Ausführung 934 ausgelöst. In einigen Ausführungsformen löst ein Schreibvorgang im Register die Ausführung des Befehls aus. In einigen Ausführungsformen wird die Ausführung über einen ‚Go‘ - oder ‚Kick‘-Befehl im Befehlsablauf ausgelöst. In einer Ausführungsform wird die Befehlsausführung unter Verwendung eines Pipelinesynchronisierungsbefehls ausgelöst, um den Befehlsablauf durch die Grafikpipeline zu löschen. Die 3D-Pipeline führt eine Geometrieverarbeitung für 3D-Primitive aus. Wenn die Operationen abgeschlossen sind, werden die entstehenden geometrischen Objekte rasterisiert und die Pixelengine färbt die entstehenden Pixel ein. Weitere Befehle zum Steuern von Pixelshading und Pixel-Backend-Operationen können für diese Operationen ebenfalls enthalten sein.
  • In einigen Ausführungsformen folgt der Grafikprozessorbefehlsablauf 910 dem Pfad der Medienpipeline 924 bei der Durchführung der Medienfunktionen. Allgemein hängt die spezifische Benutzung und Art der Programmierung für die Medienpipeline 924 von den auszuführenden Medien oder Berechnungsfunktionen ab. Spezifische Mediendecodierungsfunktionen können während der Decodierung der Medien auf die Medienpipeline entladen werden. In einigen Ausführungsformen kann die Medienpipeline auch umgangen und die Mediendecodierung kann ganz oder teilweise unter Verwendung von Ressourcen ausgeführt werden, die durch eine oder mehrere Prozessorkerne zu allgemeinen Zwecken bereitgestellt werden. In einer Ausführungsform umfasst die Medienpipeline auch Elemente für Mehrzweckgrafikprozessoreinheiten-(GPGPU) Operationen, wobei der Grafikprozessor verwendet wird, um SIMD-Vektoroperationen unter Verwendung von Berechnungsshaderprogrammen auszuführen, die nicht ausdrücklich mit dem Rendern von Grafikprimitiven zu tun haben.
  • In einigen Ausführungsformen ist die Medienpipeline 924 in einer ähnlichen Weise konfiguriert, wie die 3D-Pipeline 922. Ein Satz Befehle zum Konfigurieren des Medienpipelinezustands 940 wird versendet oder in eine Befehlswarteschlange vor den Medienobjektbefehlen 942 eingestellt. In einigen Ausführungsformen enthalten die Befehle für den Medienpipelinezustand 940 Daten zum Konfigurieren der Medienpipelineelemente, die verwendet werden, um die Medienobjekte zu verarbeiten. Dies umfasst Daten zur Konfiguration der Videodecodierung und Videocodierungslogik innerhalb der Medienpipeline, wie etwa dem Codierungs- oder Decodierungsformat. In einigen Ausführungsformen unterstützen die Befehle für den Medienpipelinezustand 940 auch die Verwendung eines oder mehrerer Pointer auf „indirekte“ Zustandselemente, die einen Batch von Zustandseinstellungen umfassen.
  • In einigen Ausführungsformen liefern Medienobjektbefehle 942 Pointer auf Medienobjekte zur Verarbeitung durch die Medienpipeline. Die Medienobjekte umfassen Speicherpuffer, die Videodaten enthalten, die verarbeitet werden sollen. In einigen Ausführungsformen müssen alle Medienpipelinezustände gültig sein, bevor ein Medienobjektbefehl 942 ausgegeben wird. Wenn der Pipelinezustand konfiguriert ist und die Medienobjektbefehle 942 in die Warteschlange eingereiht sind, wird die Medienpipeline 924 über einen Ausführungsbefehl 944 oder ein entsprechendes Ausführungsereignis ausgeführt (z. B. Registerschreibvorgang). Die Ausgabe von der Medienpipeline 924 kann dann durch die Operationen, die durch die 3D-Pipeline 922 oder die Medienpipeline 924 bereitgestellt werden, nachverarbeitet werden. In einigen Ausführungsformen sind GPGPU-Operationen in ähnlicher Weise wie Medienoperationen konfiguriert und ausgeführt.
  • Grafiksoftwarearchitektur
  • 10 illustriert eine beispielhafte Grafiksoftwarearchitektur für ein Datenverarbeitungssystem 1000 nach 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 enthält der Prozessor 1030 einen Grafikprozessor 1032 und einen oder mehrere Prozessorkern(e) 1034 mit allgemeinem Zweck. Die Grafikanwendung 1010 und das Betriebssystem 1020 werden jeweils im Systemspeicher 1050 des Datenverarbeitungssystems ausgeführt.
  • In einigen Ausführungsformen enthält die 3D-Grafikanwendung 1010 ein oder mehrere Shaderprogramme, die Shaderanweisungen 1012 enthalten. Die Shadersprachanweisungen können in einer High-Level-Shadersprache geschrieben sein, wie etwa der High Level Shader Language (HLSL) oder der OpenGL Shader Language (GLSL). Die Anwendung enthält außerdem ausführbare Anweisungen 1014 in einer Maschinensprache, die sich für die Ausführung durch den Prozessorkern 1034 für allgemeine Zwecke eignet. Die Anwendung enthält außerdem Grafikobjekte 1016, die durch Vertexdaten definiert sind.
  • In einigen Ausführungsformen ist das Betriebssystem 1020 ein Microsoft® Windows® Betriebssystem 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-Shadercompiler 1024 zum Kompilieren aller Shaderanweisungen 1012 in HLSL in eine Shadersprache eines tieferen Levels. Die Kompilation kann eine Just-in-Time (JIT)-Kompilation sein, oder die Anwendung kann eine Shader-Vorkompilation ausführen. In einigen Ausführungsformen werden die High-Level Shader bei der Kompilierung der 3D-Grafikanwendung 1010 in Low-Level-Shader kompiliert. In einigen Ausführungsformen werden die Shaderanweisungen 1012 in einer Zwischenform bereitgestellt, wie etwa einer Version der Standard Portable Intermediate Representation (SPIR), die durch die Vulkan API verwendet wird.
  • In einigen Ausführungsformen enthält der Benutzermodusgrafiktreiber 1026 einen Backend-Shadercompiler 1027 zum Umwandeln der Shaderanweisungen 1012 in eine hardwarespezifische Darstellung. Wenn die OpenGL API verwendet wird, werden Shaderanweisungen 1012 in der GLSL-High-Level-Sprache zur Kompilierung an einen Benutzermodusgrafiktreiber 1026 übergeben. In einigen Ausführungsformen verwendet der Benutzermodusgrafiktreiber 1026 die Betriebssystem-Kernelmodusfunktionen 1028 zur Kommunikation mit einem Kernelmodusgrafiktreiber 1029. In einigen Ausführungsformen kommuniziert der Kernelmodusgrafiktreiber 1029 mit dem Grafikprozessor 1032 zum Versenden der Befehle und Anweisungen.
  • IP-Kern-Umsetzungen
  • Ein oder mehrere Aspekte von mindestens einer Ausführungsform können durch repräsentativen Code umgesetzt werden, der auf einem maschinenlesbaren Medium gespeichert wird, das eine Logik innerhalb einer integrierten Schaltung wie etwa einem Prozessor darstellt und/oder definiert. Beispielsweise kann das maschinenlesbare Medium Anweisungen umfassen, die eine unterschiedliche Logik innerhalb des Prozessors darstellen. Beim Auslesen durch eine Maschine können die Anweisungen dazu führen, dass die Maschine die Logik so herstellt, dass die darin beschriebenen Techniken ausgeführt werden. Solche Darstellungen, die als „IP-Kerne“ bekannt sind, sind wiederverwendbare Logikeinheiten der Logik für eine integrierte Schaltung, die auf einem greifbaren maschinenlesbaren Medium als Hardwaremodell gespeichert werden kann, das die Struktur der integrierten Schaltung beschreibt. Das Hardwaremodell kann an die verschiedenen Kunden oder Herstellungseinrichtungen geliefert werden, die das Hardwaremodell auf Herstellungsmaschinen laden, die die integrierte Schaltung herstellen. Die integrierte Schaltung kann so hergestellt sein, dass die Schaltung Operationen ausführt, die in Assoziation mit einer der hierin beschriebenen Ausführungsformen beschrieben sind.
  • 11A ist ein Blockdiagramm, das ein IP-Kernentwicklungssystem 1100 illustriert, das verwendet werden kann, um eine integrierte Schaltung herzustellen, um Operationen nach einer Ausführungsform auszuführen. Das IP-Kernentwicklungssystem 1100 kann verwendet werden, um modulare wiederverwendbare Designs zu erzeugen, die in ein größeres Design eingebaut oder verwendet werden können, um eine gesamte integrierte Schaltung (z. B. eine SOC-integrierte Schaltung) zu erzeugen. Eine Designeinrichtung 1130 kann eine Softwaresimulation 1110 eines IP-Kerndesigns in einer Programmiersprache auf hoher Ebene (z. B. C/C++) erzeugen. Die Softwaresimulation 1110 kann verwendet werden, um das Verhalten des IP-Kerns unter Verwendung eines Simulationsmodells 1112 zu designen, zu prüfen und zu verifizieren. Das Simulationsmodell 1112 kann Funktions-, Verhaltens- und/oder Timingsimulationen umfassen. Ein Design für einen Registertransferlevel (RTL) 1115 kann dann aus dem Simulationsmodell 1112 erzeugt oder synthetisiert werden. Das RTL-Design 1115 ist eine Abstraktion des Verhaltens der integrierten Schaltung, die den Fluss digitaler Signale zwischen Hardwareregistern modelliert, einschließlich der entsprechenden Logik, die unter Verwendung der modellierten digitalen Signale ausgeführt wird. Neben einem RTL-Design 1115 können auch Lower-Level-Designs auf Logik-Ebene oder Transistor-Ebene erzeugt, entworfen oder synthetisiert werden. So können die genauen Details des anfänglichen Designs und der Simulation variieren.
  • Das RTL-Design 1115 oder etwas Entsprechendes können weiter durch die Designeinrichtung in ein Hardwaremodell 1120 synthetisiert werden, das in einer Hardwarebeschreibungssprache (HDL) oder einer anderen Darstellung physischer Designdaten erstellt sein kann. Die HDL kann ferner simuliert oder geprüft werden, um das IP-Kerndesign zu verifizieren. Das IP-Kerndesign kann zur Lieferung an eine Drittherstellungseinrichtung 1165 unter Verwendung von nichtflüchtigem Speicher 1140 (z. B. Festplatte, Flashspeicher oder einem anderen nichtflüchtigen Speichermedium) gespeichert werden. Alternativ kann das IP-Kerndesign (z. B. über das Internet) über eine verkabelte Verbindung 1150 oder eine drahtlose Verbindung 1160 übermittelt werden. Die Herstellungseinrichtung 1165 kann dann eine integrierte Schaltung herstellen, der mindestens teilweise auf dem IP-Kerndesign basiert. Die hergestellte integrierte Schaltung kann konfiguriert sein, Operationen nach mindestens einer hierin beschriebenen Ausführungsform bereitzustellen.
  • 11B illustriert eine Querschnittsseitenansicht einer integrierten Schaltungspackagebaugruppe 1170 nach einigen Ausführungsformen. Die integrierte Schaltungspackagebaugruppe 1170 illustriert eine Umsetzung eines oder mehrerer Prozessoren oder Beschleunigervorrichtungen wie hierin beschrieben. Die Packagebaugruppe 1170 umfasst mehrere Einheiten von Hardwarelogik 1172, 1174, die mit einem Substrat 1180 verbunden sind. Die Logik 1172, 1174 kann mindestens teilweise in konfigurierbarer Logik oder Festfunktionslogikhardware umgesetzt sein und kann einen oder mehrere Abschnitte eines der Prozessorkern(e), Grafikprozessor(en) oder anderen Beschleunigervorrichtungen umfassen, die hierin beschrieben sind. Jede Einheit der Logik 1172, 1174 kann innerhalb eines Halbleiterdies umgesetzt und mit dem Substrat 1180 über eine Zwischenverbindungsstruktur 1173 gekoppelt sein. Die Zwischenverbindungsstruktur 1173 kann konfiguriert sein, elektrische Signale zwischen der Logik 1172, 1174 und dem Substrat 1180 zu leiten und kann Verbindungen, wie unter anderem Bumps oder Pillars, umfassen. In einigen Ausführungsformen kann die Zwischenverbindungsstruktur 1173 konfiguriert sein, elektrische Signale wie beispielsweise Eingabe- /Ausgabe- (E/A) Signale und/oder Leistungs- oder Erdungssignale zu leiten, die mit der Operation der Logik 1172, 1174 assoziiert sind. In einigen Ausführungsformen ist das Substrat 1180 ein epoxidbasiertes Laminatsubstrat. Das Packagesubstrat 1180 kann andere geeignete Arten von Substraten in anderen Ausführungsformen umfassen. Die Packagebaugruppe 1170 kann mit anderen elektrischen Vorrichtungen über eine Packagezwischenverbindung 1183 verbunden werden. Die Packagezwischenverbindung 1183 kann mit einer Fläche des Substrats 1180 gekoppelt sein, um elektrische Signale an andere elektrische Vorrichtungen, wie etwa an ein Motherboard, ein anderer Chipset oder ein Multichipmodul, zu routen.
  • In einigen Ausführungsformen sind die Einheiten der Logik 1172, 1174 elektrisch mit einer Bridge 1182 gekoppelt, die konfiguriert ist, elektrische Signale zwischen der Logik 1172, 1174 zu routen. Die Bridge 1182 kann eine dichte Zwischenverbindungsstruktur sein, die eine Route für elektrische Signale bereitstellt. Die Bridge 1182 kann ein Bridgesubstrat umfassen, das aus Glas oder einem geeigneten Halbleitermaterial besteht. Elektrische Routingmerkmale können auf dem Bridgesubstrat gebildet werden, um eine Chip-Chip-Verbindung zwischen der Logik 1172, 1174 herzustellen.
  • Wenn auch zwei Einheiten der Logik 1172, 1174 und eine Bridge 1182 illustriert sind, können hierin beschriebene Ausführungsformen mehr oder weniger Logikeinheiten an einem oder mehr Dies umfassen. Der eine oder die mehreren Dies können durch Null oder mehr Bridges verbunden sein, da die Bridge 1182 ausgeschlossen werden kann, wenn die Logik auf einem einzigen Die enthalten ist. Alternativ dazu können mehrere Dies oder Einheiten der Logik durch eine oder mehrere Bridges verbunden sein. Weiterhin können mehrere Logikeinheiten, Dies und Bridges miteinander in anderen möglichen Konfigurationen, einschließlich dreidimensionaler Konfigurationen, verbunden sein.
  • Beispielhafter in einem System auf einem Chip integrierte Schaltkreis
  • 12 bis 14 illustrieren beispielhafte integrierte Schaltungen und assoziierte Grafikprozessoren, die unter Verwendung eines oder mehrere IP-Kerne nach verschiedenen hierin beschriebenen Ausführungsformen hergestellt werden können. Neben dem Illustrierten können andere Logik und Schaltungen enthalten sein, einschließlich weiterer Grafikprozessors/-kerne, Peripherieschnittstellencontroller oder Mehrzweckprozessorkernen.
  • 12 ist ein Blockdiagramm, das eine beispielhafte integrierte Schaltung 1200 in einem System auf einem Chip nach einer Ausführungsform illustriert, das unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann. Die beispielhafte integrierte Schaltung 1200 umfasst einen oder mehrere Anwendungsprozessoren 1205 (z. B. CPUs), mindestens einen Grafikprozessor 1210, und kann weiterhin einen Bildprozessor 1215 und/oder einen Videoprozessor 1220 umfassen, von denen jeder ein modularer IP-Kern von derselben oder mehreren verschiedenen Designeinrichtungen sein kann. Die integrierte Schaltung 1200 umfasst eine Peripherie- oder Buslogik, einschließlich eines USB-Controllers 1225, UART-Controllers 1230, eines SPI/SDIO-Controllers 1235 und eines I2S/I2C-Controllers 1240. Weiterhin kann die integrierte Schaltung ein Anzeigegerät 1245 umfassen, die mit einem oder mehreren der Elemente eines High-Definition-Multimediaschnittstellen-(HDMI) Controllers 1250 und einer mobilen Industrieprozessor-Schnittstellen- (MIPI) Anzeigeschnittstelle 1255 gekoppelt ist. Der Speicher kann durch ein Flashspeicheruntersystem 1260 bereitgestellt werden, das einen Flashspeicher und einen Flashspeichercontroller umfasst. Die Speicherschnittstelle kann über einen Speichercontroller 1265 bereitgestellt werden, um auf SDRAM oder SRAM-Speichervorrichtungen zuzugreifen. Einige integrierte Schaltungen enthalten weiterhin eine eingebettete Sicherheitsengine 1270.
  • 13A bis 13B sind Blockdiagramme, die beispielhafte Grafikprozessoren zur Verwendung innerhalb eines SoC nach hierin beschriebenen Ausführungsformen illustrieren. 13A illustriert einen beispielhaften Grafikprozessor 1310 einer integrierten Schaltung eines Systems auf einem Chip, das unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann. 13B illustriert einen weiteren beispielhaften Grafikprozessor 1340 einer integrierten Schaltung eines Systems auf einem Chip, das unter Verwendung eines oder mehrerer IP-Kerne hergestellt werden kann, nach einer Ausführungsform. Grafikprozessor 1310 aus 13A ist ein Beispiel eines Grafikprozessorkerns mit geringer Energie. Grafikprozessor 1340 aus 13B ist ein Beispiel eines Grafikprozessorkerns mit höherer Leistung. Jeder der Grafikprozessoren 1310, 1340 kann Varianten des Grafikprozessors 1210 aus 12 darstellen.
  • Wie in 13A gezeigt, umfasst der Grafikprozessor 1310 einen Vertexprozessor 1305 und einen oder mehrere Fragmentprozessor(en) 1315A bis 1315N (z. B. 1315A, 1315B, 1315C, 1315D bis 1315N-1 und 1315N). Der Grafikprozessor 1310 kann verschiedene Shaderprogramme über eine separate Logik ausführen, sodass der Vertexprozessor 1305 optimiert ist, Operationen für Vertexshaderprogramme auszuführen, während der eine oder die mehreren Fragmentprozessor(en) 1315A bis 1315N Fragment-(z. B. Pixel-) Shadingoperationen für Fragment- oder Pixelshaderprogramme ausführen. Der Vertexprozessor 1305 führt die Vertexverarbeitungsstufe der 3D-Grafikpipeline durch und erzeugt die Primitiven- und Vertexdaten. Der oder die Fragmentprozessor(en) 1315A bis 1315N verwenden die durch den Vertexprozessor 1305 erzeugten Primitiven- und Vertexdaten zur Herstellung eines Rahmenpuffers, der auf dem Anzeigegerät angezeigt wird. In einer Ausführungsform ist der oder sind die Fragmentprozessor(en) 1315A bis 1315N optimiert, Fragmentshaderprogramme auszuführen, wie in der OpenGL API vorgesehen, die verwendet werden können, um ähnliche Operationen wie ein Pixelshaderprogramm auszuführen, wie in der Direct 3D API vorgesehen.
  • Der Grafikprozessor 1310 enthält weiterhin eine oder mehrere Speichermanagementeinheiten (MMUs) 1320A bis 1320B, Cache(s) 1325A bis 1325B, und Schaltkreisverbindung(en) 1330A bis 1330B. Die eine oder die mehreren MMU(s) 1320A bis 1320B sehen virtuell-zu-physische Adresszuordnung für den Grafikprozessor 1310 vor, einschließlich für den Vertexprozessor 1305 und/oder Fragmentprozessor(en) 1315A bis 1315N, die Referenzvertex oder Bild-/Texturdaten sein können, die zusätzlich zu Vertex- oder Bild-/Texturdaten, die in einem oder mehreren Cache (s) 1325A bis 1325B gespeichert sind, in dem Speicher gespeichert sind. In einer Ausführungsform können die eine oder die mehreren MMU(s) 1320A bis 1320B mit anderen MMUs innerhalb des Systems synchronisiert sein, einschließlich einer oder mehrerer MMUs, die mit dem einen oder den mehreren Anwendungsprozessor(en) 1205, dem Bildprozessor 1215 und/oder dem Videoprozessor 1220 von 12 assoziiert sind, sodass jeder Prozessor 1205 bis 1220 an einem geteilten oder vereinten virtuellen Speichersystem beteiligt sein kann. Die eine oder die mehreren Schaltkreisverbindung(en) 1330A bis 1330B ermöglichen dem Grafikprozessor 1310 nach Ausführungsformen entweder über einen internen Bus des SoC oder über eine direkte Verbindung die Verbindung mit anderen IP-Kernen innerhalb des SoC.
  • Wie in 13B gezeigt, umfasst der Grafikprozessor 1340 die eine oder die mehreren MMU(s) 1320A bis 1320B, Caches 1325A bis 1325B, und Schaltungsverbindungen 1330A bis 1330B des Grafikprozessors 1310 aus 13A. Grafikprozessor 1340 umfasst einen oder mehrere Shaderkern(e) 1355A bis 1355N (z. B. 1455A, 1355B, 1355C, 1355D, 1355E, 1355F bis 1355N-1, und 1355N), was eine vereinheitlichte Shaderkernarchitektur bereitstellt, in der ein einzelner Kern oder eine Art von Kern alle Arten von programmierbarem Shadercode ausführen kann, einschließlich Shaderprogrammcode zum Umsetzen von Vertexshaders, Fragmentshaders und/oder Rechenshaders. Die genaue Anzahl von vorhandenen Shaderkernen kann zwischen verschiedenen Ausführungsformen und Umsetzungen variieren. Weiterhin umfasst der Grafikprozessor 1340 einen Zwischenkerntaskmanager 1345, der als Thread-Dispatcher dient, um Ausführungsthreads für einen oder mehrere Shaderkerne 1355A bis 1355N bereitzustellen, und eine Kacheleinheit 1358, um die Kacheloperationen für kachelbasiertes Rendering zu beschleunigen, wobei Renderingoperationen für eine Szene im Bildraum unterteilt werden, etwa zum Ausnutzen von lokaler räumlicher Kohärenz innerhalb einer Szene oder zum Optimieren der Verwendung interner Caches.
  • 14A bis 14B illustrieren weitere beispielhafte Grafikprozessorlogik nach hierin beschriebenen Ausführungsformen. 14A illustriert einen Grafikkern 1400, den der Grafikprozessor 1210 aus 12 umfassen kann, und kann ein vereinheitlichter Shaderkern 1355A bis 1355N sein, wie in 13B. 14B illustriert eine stark parallele Mehrzweckgrafikprozessoreinheit 1430, die sich zum Einsatz auf einem Multichipmodul eignet.
  • Wie in 14A gezeigt, umfasst der Grafikkern 1400 einen geteilten Anweisungscache 1402, eine Textureinheit 1418 und einen Cache/geteilten Speicher 1420, die für die Ausführungsressourcen in dem Grafikkern 1400 gemeinsam vorliegen. Der Grafikkern 1400 kann mehrere Scheiben 1401A bis 1401N oder eine Partition für jeden Kern umfassen, und ein Grafikprozessor kann mehrere Instanzen des Grafikkerns 1400 umfassen. Die Scheiben 1401A bis 1401N können Supportlogik umfassen, einschließlich eines örtlichen Anweisungscaches 1404A bis 1404N, eines Threadplaners 1406A bis 1406N, eines Thread-Dispatchers 1408A bis 1408N und eines Satzes Register 1410A. Zum Ausführen von Logikoperationen können die Scheiben 1401A bis 1401N einen Satz weiterer Funktionseinheiten (AFUs 1412A bis 1412N), Fließkommaeinheiten (FPU 1414A bis 1414N), integerarithmetischer Logikeinheiten (ALUs 1416 bis 1416N), Adressrechnereinheiten (ACU 1413A bis 1413N), Doppelpräzisions-Fließkommaeinheiten (DPFPU 1415A bis 1415N), und Matrixverarbeitungseinheiten (MPU 1417A bis 1417N) umfassen.
  • Einige der Rechnereinheiten laufen mit einer vorgegebenen Genauigkeit. Beispielsweise können die FPUs 1414A bis 1414N Einzelpräzisions- (32-Bit-) und Halbpräzisions- (16-Bit-) Fließkommaoperationen ausführen, während die DPFPUs 1415A bis 1415N Doppelpräzisions- (64-Bit-) Fließkommaoperationen ausführen. Die ALUs 1416A bis 1416N können verschiedene Präzisionsintegeroperationen bei 8-Bit-, 16-Bit- und 32-Bit-Präzision ausführen, und können für Mischpräzisionsoperationen konfiguriert sein. Die MPUs 1417A bis 1417N können ebenfalls für Mischpräzisionsmatrixoperationen konfiguriert sein, einschließlich Halbpräzisions-Fließkomma- und 8-Bit-Integeroperationen. Die MPUs 1417 bis 1417N können eine Vielzahl von Matrixoperationen ausführen, um Maschinenlernanwendungsrahmen zu beschleunigen, einschließlich des Ermöglichens von Unterstützung für beschleunigte allgemeine Matrix-Matrix-Multiplikation (GEMM). Die AFUs 1412A bis 1412N können weitere Logikoperationen ausführen, die nicht durch die Fließkomma- oder Integereinheiten unterstützt werden, einschließlich trigonometrischer Operationen (z. B. Sinus, Kosinus usw.).
  • Wie in 14B gezeigt, kann eine Mehrzweckverarbeitungseinheit (GPGPU) 1430 konfiguriert sein, die Ausführung stark paralleler Rechenoperationen durch ein Array von Grafikprozessoreinheiten zu ermöglichen. Weiterhin kann die GPGPU 1430 direkt mit anderen Instanzen der GPGPU verknüpft werden, um einen Multi-GPU-Cluster zu erschaffen, um die Schulungsgeschwindigkeit für besonders tiefe neutrale Netze zu verbessern. Die GPGPU 1430 umfasst eine Hostschnittstelle 1432, um eine Verbindung mit einem Hostprozessor zu ermöglichen. In einer Ausführungsform ist die Hostschnittstelle 1432 eine PCI-Express-Schnittstelle. Die Hostschnittstelle kann jedoch auch eine händlerspezifische Kommunikationsschnittstelle oder ein Kommunikationsgewebe sein. Die GPGPU 1430 empfängt Befehle von dem Hostprozessor und verwendet einen globalen Planer 1434 zum Verteilen von Ausführungsthreads, die mit diesen Befehlen assoziiert sind, an einen Satz von Rechenclustern 1436A bis 1436H. Die Rechencluster 1436A bis 1436H teilen sich einen Cachespeicher 1438. Der Cachespeicher 1438 kann als höherstufiger Cache für Cachespeicher innerhalb der Rechencluster 1436A bis 1436H dienen.
  • Die GPGPU 1430 umfasst Speicher 1434A bis 1434B, die über einen Satz Speichercontroller 1442A bis 1442B mit den Rechenclustern 1436A bis 1436H gekoppelt sind. In verschiedenen Ausführungsformen kann der Speicher 1434A bis 1434B verschiedene Arten von Speichervorrichtungen umfassen, einschließlich dynamischem Direktzugriffsspeicher (DRAM) oder Grafikdirektzugriffsspeicher, wie etwa synchronen Grafikdirektzugriffsspeicher (SGRAM), einschließlich Grafikdoppeldatenraten- (GDDR) Speicher.
  • In einer Ausführungsform umfassen die Rechencluster 1436A bis 1436H je einen Satz Grafikkerne, wie etwa den Grafikkern 1400 aus 14A, die mehrere Arten von Integer- und Fließkommalogikeinheiten umfassen können, die Rechenoperationen in einem Genauigkeitsbereich ausführen können, der sich auch für Maschinenlernberechnungen eignet. Beispielsweise und in einer Ausführungsform können mindestens ein Untersatz der Fließkommaeinheiten in jedem der Rechencluster 1436A bis 1436H konfiguriert werden, 16-Bit- oder 32-Bit-Fließkommaoperationen auszuführen, während ein anderer Untersatz der Fließkommaeinheiten konfiguriert sein kann, 64-Bit-Fließkommaoperationen auszuführen.
  • Mehrere Instanzen der GPGPU 1430 können konfiguriert sein, als ein Rechencluster zu wirken. Der Kommunikationsmechanismus, der durch den Rechencluster für Synchronisierung und Datenaustausch verwendet wird, variiert in verschiedenen Ausführungsformen. In einer Ausführungsform kommunizieren die mehreren Instanzen der GPGPU 1430 über die Hostschnittstelle 1432. In einer Ausführungsform umfasst die GPGPU 1430 einen I/O-Hub 1439, der die GPGPU 1430 mit einer GPU-Verbindung 1440 koppelt, die eine direkte Verbindung mit anderen Instanzen der GPGPU ermöglicht. In einer Ausführungsform ist die GPU-Verbindung 1440 mit einer dedizierten GPU-GPU-Bridge gekoppelt, die Kommunikation und Synchronisation zwischen mehreren Instanzen der GPGPU 1430 ermöglicht. In einer Ausführungsform koppelt sich die GPU-Verbindung 1440 mit einer Hochgeschwindigkeitszwischenverbindung zum Übertragen und Empfangen von Daten an andere und von anderen GPGPUs oder parallelen Prozessoren. In einer Ausführungsform befinden sich die mehreren Instanzen der GPGPU 1430 in separaten Datenverarbeitungssystemen und kommunizieren über eine Netzwerkvorrichtung, die über die Hostschnittstelle 1432 zugänglich ist. In einer Ausführungsform kann die GPU-Verbindung 1440 konfiguriert sein, eine Verbindung mit einem Hostprozessor neben oder alternativ zu der Hostschnittstelle 1432 zu ermöglichen.
  • Während die illustrierte Konfiguration der GPGPU 1430 konfiguriert sein kann, um neurale Netze zu schulen, stellt eine Ausführungsform eine alternative Konfiguration der GPGPU 1430 bereit, die zum Einsatz in einer Hochleistungs- oder Niedrigenergieschlussfolgerungsplattform verwendet werden kann. In einer Schlussfolgerungskonfiguration umfasst die GPGPU 1430 weniger der Rechencluster 1436A bis 1436H als in der Schulungskonfiguration. Weiterhin kann die Speichertechnologie, die mit dem Speicher 1434A bis 1434B assoziiert ist, bei Schlussfolgerungs- und Schulungskonfigurationen unterschiedlich sein, wobei Speichertechnologien mit höherer Bandbreite Schulungskonfigurationen vorbehalten sind. In einer Ausführungsform kann die Schlussfolgerungskonfiguration der GPGPU 1430 das Schließen auf spezifische Anweisungen unterstützten. Beispielsweise kann eine Schlussfolgerungskonfiguration eine Unterstützung für eine oder mehr 8-Bit-Integer-Punktproduktanweisungen bereitstellen, die üblicherweise bei Schlussfolgerungsoperationen für eingesetzte neurale Netze verwendet werden.
  • Wie oben erwähnt, können einige aktuelle Lösungen eine große Menge an Daten sammeln, eine dauerhafte Vorhersage für das nächste (große) Zeitfenster erstellen und die Frequenz in einem großen Spring bewegen, um zu der Vorhersage zu passen. Solche Ansätze können auch durch Überschreiten der Leistungshüllkurven für kurze Zeiträume an Leistung gewinnen (auch als Bursting oder Turbo bezeichnet). Da die Strafe bei falscher Vorhersage sehr hoch sein kann, werden solche Lösungen üblicherweise sehr genau eingestellt. Sie können auch einen Leistungsoverhead hinzufügen (z. B. da die Ausführung während Übergängen gestoppt oder angehalten wird), was ein Grund dafür sein kann, warum sie üblicherweise entworfen sind, um einen Burst mit hoher Leistung auszuführen (statt im Vergleich mit den von Burst abhängigen Umsetzungen auf einen nachhaltigen Wärmepunkt auszubalancieren). In der Praxis ist der Burst oder Turbo nur eingeschränkt nützlich für Grafikbenchmarks, und die Einstellung kann extrem schwer sein (teilweise, weil jedes Rezept für einige Benchmarks funktionieren würde, nicht aber für andere).
  • Dazu stellen einige Ausführungsformen Techniken für den Ressourcenlastausgleich basierend auf Nutzungs- und/oder Leistungsgrenzen bereit. In einer Ausführungsform sind der Leistungsverbrauch und die Leistung von Ressourcen innerhalb des dreidimensionalen (3D) Blocks oder der Domain eines Prozessors (wobei der Prozessor ein Mehrzweckprozessor, ein Grafikprozessor (oder eine Grafikprozessoreinheit (GPU), eine Mehrzweck-GPU (GPGPU) usw. sein kann) ausgleichen. Der bestimmte Ausgleich kann generisch auf eine n oder mehrere andere Blocks/Domains in dem Prozessor angewendet werden. Weiterhin bestimmen eine oder mehrere Ausführungsformen die Frequenz und/oder Spannung für jeden Abschnitt innerhalb eines Blocks dynamisch, während sichergestellt wird, dass alle Komponenten unter einer Gesamtleistungsgrenze (oder einem Budget) laufen.
  • In einer Ausführungsform werden die Betriebsfrequenzen der verschiedenen Ressource(n) (oder eines oder mehrerer ihrer Abschnitte) geändert, um die Rechenlast in einem Block/einer Domain auszugleichen. Beispielsweise würden eine oder mehrere Ressourcen mit einer höheren Frequenz laufen, während eine oder mehrere andere Ressourcen mit einer niedrigeren Frequenz laufen würden, um dieselbe oder eine andere Leistungsverbrauchsstufe zu erhalten. Weiterhin erlauben eine oder mehrere Ausführungsformen durch eine Reihe von kleinen Schritten (z. B. ca. 5 % Frequenzänderung) eine Selbstkorrektur, sodass eine maximale Leistung erreicht werden kann. In einigen Ausführungsformen kann eine Leistungssteigerung von ca. 5 bis 15 % bei gleicher oder ähnlicher Leistungsverbrauchsstufe mit sehr geringem Bereichswachstum entstehen. Dies liegt teilweise daran, dass einige Ausführungsformen Ressource(n) erlauben, die einschränkend sind, um schneller zu laufen (und Energie für den Rest der Ressource(n) zu sparen, um den allgemeinen Leistungsverbrauch auszugleichen). Wenn etwa ein bestimmter Block der Mikroarchitektur die Arbeitslastleistung zu dem Zeitpunkt einschränkt, identifiziert der Algorithmus den Block/die Domain und lässt ihn schneller laufen. In solchen Situationen können die anderen Blocks verlangsamt werden, da sie nicht die Begrenzer sind. Die Verlangsamung erlaubt die Übertragung von Leistung, während sie im Gesamtleistungsbudget bleibt. Außerdem wird bei der kleinen Schrittgröße (z. B. ca. 5 % der Frequenzverschiebung) und ständigen Ausführung gewartet, dass solche Ausführungsformen automatisch funktionieren, z. B. ohne weitere Einstellung.
  • 15 illustriert ein Blockdiagramm der Logik, um einen Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen bereitzustellen, nach einer Ausführungsform. Genauer zeigt 15 eine oder mehrere Operationen, die durch eine Ausführungsform der Logik für die Bereitstellung von Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen in einem GPU-Subsystem ausgeführt werden sollen. In einer oder mehreren Ausführungsformen kann diese Logik in einer GPU oder Grafiklogik bereitgestellt sein, oder anderweitig kommunikativ mit einer GPU oder Grafiklogik gekoppelt sein.
  • Mit Verweis auf 15 sind drei Logiken dargestellt und mit den Zahlen 1501, 1502 und 1503 markiert. Bei Logik 1501 werden Leistungs- (P) Einheitenupdate- und Domaintemperatureingaben (z. B. basierend auf einer oder mehreren erkannten Temperaturen neben einer oder mehreren Komponenten (hierin auch bezeichnet als Domain oder Block) eines Prozessors) verwendet, um VF (Spannungs-Frequenz-) Paarwerte für einen oder mehrere Prozessordomains/-blocks (z. B. EU und Rest der 3D-Pipeline) bestimmt/erzeugt. Wie hierin besprochen bezieht sich die P-Einheit (auch als PM-Einheit oder PCU - Leistungssteuerungseinheit - bezeichnet) allgemein auf den Leistungsmanagementcontroller für den IP-Block oder die SOC. Sie ist zuständig für die Aktualisierung der VF-Tabellen für die SOC sowie für das Aktualisieren der Einschränkungen basierend auf Plattformanforderungen. Beispielsweise kann sie die Leistungs- oder Stromverfügbarkeit basierend auf den Wärme-, Plattform- oder Herstellereingaben verringern.
  • Weiterhin beziehen sich zwar einige Ausführungsformen auf einen VF-Wert, aber die Ausführungsformen sind nicht darauf beschränkt sowohl Spannung als auch Frequenz bereitzustellen, und Spannung, Frequenz, oder beides kann bestimmt/angepasst werden. Außerdem bezieht sich der Begriff VF-Tabellen auf eine oder mehrere Tabellen (oder einfach gespeicherte Daten), die im Speicher gespeichert werden sollen (wie etwa in jeder der hierin erklärten Speichervorrichtungen, egal, ob flüchtig oder nichtflüchtig). Jede Tabelle kann V- und/oder F-Werte umfassen, die allen P-Einheitenupdates oder Temperaturänderungen entsprechen. Wie gezeigt, können eine oder mehrere Sicherungen verwendet werden, um den Betrieb der Logik 1501 zu steuern. Die Sicherungen sind Herstellungseinstellungen für das Teil, die codierte Informationen zu der Teilegeschwindigkeit, Leistung und den Leckeigenschaften enthalten. Die Sicherungsinformationen bestimmen zusammen mit P-Einheitsupdates die Betriebs-VF für den Grafik- (Gfx) IP-Block.
  • Weiterhin bezieht sich, wie hierin erklärt, ein Verweis auf eine Domain oder einen Block allgemein auf einen Abschnitt eines Prozessors, wie etwa einem oder mehrere aus: Ausführungseinheiten (EUs), programmierbare Shader, Sampler und alle anderen funktionalen Komponenten (z. B. Cache, Farbpuffers, Geometrie-/Formpuffer, Tiefenpuffer usw.). Blocks in dem Grafikprozessor, die in funktionale Domains unterteilt werden können, sind Kandidaten. Sie können Ausführungseinheiten, programmierbare Shader, Sampler sein. Mediendecodierungs-/Codierungs-/Transcodierungsengines, das Cacheuntersystem, das Verbindungsgewebe.
  • Die Logik 1502 empfängt die VF-Tabellen, die erkannte Domaintemperatur, Strom-VF, Imon (oder überwachten Strom), und erzeugt eine vorhergesagte VF für eine entsprechende Domain (z. B. EU und Rest der 3D-Pipeline). Der überwachte Strom kann verwendet werden, um den Energie-/Leistungsverbrauch bei Laufzeit zu schätzen. Wie in 15 gezeigt, können Konfigurationsparameter für die Logik 1502 in Reaktion auf einen Last-Ausgleichstimeout (oder anderweitig das Auslaufen eines Last-Ausgleichstimers oder Erreichen eines Grenzwerts auf einem Lastausgleichszähler, abhängig von der Umsetzung) bereitgestellt sein.
  • Die Logik 1503 empfängt den vorhergesagten VF-Wert und die Gebrauchsmetriken und erzeugt den nächsten VF-Wert/Punkte für eine entsprechende Domain (z. B. EU und Rest der 3D-Pipeline). Wie in 15 gezeigt, können Konfigurationsparameter für die Logik 1503 in Reaktion auf einen Last-Ausgleichstimeout außer Phase mit Operation(en), die durch die Logik 1502 ausgeführt werden (oder anderweitig das Auslaufen eines Last-Ausgleichstimers oder Erreichen eines Grenzwerts auf einem Lastausgleichszähler, abhängig von der Umsetzung) bereitgestellt sein.
  • 16 illustriert ein Ablaufdiagramm der Operationen, um einen Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen bereitzustellen, nach einer Ausführungsform. Genauer zeigt 15 eine oder mehrere Operationen, die durch eine Ausführungsform der Logik für die Bereitstellung von Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen in einem GPU-Subsystem ausgeführt werden sollen. In einer oder mehreren Ausführungsformen kann diese Logik in einer GPU oder Grafiklogik bereitgestellt sein, oder anderweitig kommunikativ mit einer GPU oder Grafiklogik gekoppelt sein.
  • Mit Verweis auf 16 werden in Operation 1602 ein oder mehrere Parameter von der P-Einheit empfangen. Die Einschränkungen der P-Einheit können das Leistungsbudget (PB), die Dynamik und/oder die Leckabschnitte des Leistungsbudgets umfassen. Sie können auch eine Nennbetriebsfrequenz und/oder eine maximal erlaubte Frequenz umfassen. Diese Parameter können Pmax (maximal zulässige Leistungsebene), Imax (maximal zulässigen Strom), PB-Leck, PB-Dyn, und Fnom (Nennfrequenz) umfassen. Bei Betrieb 1604 wird die Aktivitätsstufe der FPU (Floating Point Unit) mit einem Grenzwert vergleichen und die entsprechende VF wird bestimmt. Operation 1606 prüft den Pmax und Imax für jede Domain, um festzustellen, ob das Leistungsbudget für den Prozessor erhalten bleibt, und wenn Operation 1606 ausfällt, wird die VF für beide Domains des Prozessors, die betrachtet werden, um eine Stufe (z. B. ca. 5 %) gesenkt. In einer Ausführungsform kann der Algorithmus ‚um eine Stufe steigen oder sinken‘. In einer spezifischen Umsetzung sind die VFs für ‚alle‘ Domains unter Betrachtung des Leitungsbudgets berechnet. Es wird also nicht erwartet, dass die entstehende Leistung das Budget überschreitet. Es wurde jedoch eine Prüfung als Sicherheitsmechanismus hinzugefügt, und um Rundungs- und Näherungsfehler in den Leistungsberechnungen zu behandeln. Diese Prüfung kann nur auf die maximale Seite angewendet werden und die korrigierende Aktion kann sein, die Frequenz oder VF zu senken, wenn das Leistungsbudget überschritten wird. Diese spezifische Umsetzung teilt die GPU in EU- und Nicht-EU- (oder Rest der-GT- oder Grafik-) Domains. Daher wird in dieser Figur das Wort ‚beide‘ verwendet.
  • Wenn Operation 1606 nach der Prüfung zu Bestehen führt, wird in Operation 1608 der neue VF-Wert an den FIVR (Fully Integrated Spannung Regulator) und PLL (Phase Locked Loop) gesendet. Und Operation 1610 wartet auf das Auslaufen eines Lastausgleichstimers (oder bis ein Grenzwert an einem Lastausgleichszähler erreicht ist, abhängig von der Umsetzung). Nach Operation 1610 fährt das Verfahren in Operation 1604 fort.
  • In einigen Ausführungsformen kann der folgende Pseudocode verwendet werden, um die hierin besprochene Logik zu betreiben, um einen Ressourcenlastausgleich basierend auf Gebrauchs- und/oder Leistungsgrenzen bereitzustellen. In dem folgenden Pseudocode bezieht sich Cdyn auf dynamische Kapazität, F auf Frequenz, V auf die Spannung, C auf die Kapazität, FSM auf Finite State Machine. Wie hierin erklärt, ist ‚Delta‘ eine kleine Frequenzverschiebung (~5 % Frequenz). Da wir zahlreiche kleine Schritte einsetzen, wird jede Fehlvorhersage schnell korrigiert. In einer Ausführungsform variieren die hohen und niedrigen Grenzwerte mit der Frequenz (für Leistungsbewusstsein). Beispielsweise steigt der Grenzwert an, je mehr Leistung das nächste ‚Delta‘ verlangt.
    • Wenn die P-Einheit einen neuen Arbeitspunkt schickt:
      • Verhältnis Domain1:Domain2 auf 1:1 zurücksetzen Akkumulierten Cdyn, Gebrauchsstatistik zurücksetzen
    • Sonst:
      • Wenn akkumulierte Gebrauchsstatistik > threshold hi: F1new = F 1 + delta
        Figure DE112018004431T5_0001
      • Sonst, wenn akkumulierte Gebrauchsstatistik < threshold_lo: F1new = F 1 delta
        Figure DE112018004431T5_0002
    • Sonst: F1new = F1 domain1 in VF-Tabelle nachschlagen, um Vlnew zu bestimmen V 2 2 F2 = ( PB 1 dyn C 1 ( V 1 new 2 * F 1 new ) ) /C 2
      Figure DE112018004431T5_0003
      Optimalen V2new F2new basierend auf VF-Tabelle für domain2 finden Leck basierend auf neuem VF berechnen Pmax/Imax-Verletzungen unter Verwendung von max. verschmolzenem Cdyn prüfen VF-Steuer-FSM auslösen, um neue VF an beide Domains zu senden VF-Übergang abschließen Nach Timeout wiederholen
  • Außerdem erhält das Verfahren aus 16 das GT-Leistungsbudget, das von der P-Einheit bereitgestellt ist, wie folgt: PB 1 dyn = C 1 ( V 1 2 * F 1 ) + C 2 ( V 2 2 * F 2 )
    Figure DE112018004431T5_0004
    V 2 2 F 2 = ( PB 1 dyn C 1 ( V 1 new 2 * F 1 new ) ) /C 2
    Figure DE112018004431T5_0005
    C1, C2 basiert auf der FIVR-Stromerkennung. C = ( I mon I leak ) /V*F
    Figure DE112018004431T5_0006
  • Dementsprechend ist ein Turbo- oder Burstansatz zumindest teilweise anders als die mit Verweis auf die verschiedenen Ausführungsformen hierin besprochenen, weil ein linker Headroom nicht angepasst wird, und stattdessen eine Anpassung pro Arbeitslast für verschiedene Domains eines Prozessors ausgeführt wird. Außerdem können auch innerhalb einer Arbeitslast Änderungen vorgenommen werden (z. B. unter Beachtung der Phase der Arbeitslast, ob sie rechenbeschränkt ist, shaderbeschränkt ist usw.). Solche Techniken können relativ schnell laufen. Weiterhin verwenden externe DVFS- (Dynamic Voltage and Frequency Scaling) Schemas Systeme mit geschlossener Schleife, während einige Ausführungsformen Bewertungen t in sehr feiner Granularität vornehmen (z. B. ca. alle 1 Millisekunden).
  • In einer Ausführungsform umfasst die Logik zum Bereitstellen des Ressourcenlastausgleichs basierend auf Gebrauchs- und/oder Leistungsgrenzen: (1) einen Taktgenerator (z. B. PLL) mit einem Frequenzcrawlmodus (der die Sperre nicht bricht und kein Anhalten verlangt, weil die Frequenz sich mit einer feinen Granularität ändert (z. B. Bewertungsintervall von ca. 1 Millisekunde); (2) einen On-Die-Spannungsregler, der eine Spannungsänderung mit einem gezielten Intervall (z. B. Bewertungsintervall von ca. 1 Millisekunde) erlaubt; und (3) Logik, um zu erlauben, dass Signale/Daten Domains mit Puffern und einigen Pointern überqueren. Eine solche Logik funktioniert nach wie vor innerhalb des Leistungsbudgets und verteilt das Leistungsbudget asymmetrisch wie hierin erklärt. Das Bewertungsintervall kann ca. 1 ms betragen, was bedeutet, dass der Algorithmus feine Änderungen alle 1 ms vornehmen kann. Die Istzeit zum Abschließen der Änderung in V und F ist als Ergebnis davon ein kleiner Bruchteil von 1 ms und die Zeit bis zum Übergang erfolgt dann in der Größenordnung einiger Mikrosekunden.
  • Die folgenden Beispiele beziehen sich auf weitere Ausführungsformen. Beispiel 1 umfasst einen Apparat, umfassend: Ressourcenlastausgleichslogik, um eine erste Ressource eines Prozessors zu veranlassen, bei einer ersten Frequenz zu laufen, und eine zweite Ressource des Prozessors, bei einer zweiten Frequenz zu laufen, und einen Speicher zum Speichern mehrerer Frequenzwerte, wobei die Ressourcenlastausgleichslogik die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten wählen soll, wobei der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz den Prozessor veranlassen soll, unter einem Leistungsbudget zu laufen, wobei die Ressourcenlastausgleichslogik eine Änderung an der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet. Beispiel 2 umfasst den Apparat aus Beispiel 1, wobei die Ressourcenlastausgleichslogik die Änderung ohne Anhalten eines Abschnitts des Prozessors auslöst. Beispiel 3 umfasst den Apparat aus Beispiel 1, wobei der Speicher mehrere Spannungswerte speichern soll, die den mehreren Frequenzwerten entsprechen, wobei die Ressourcenlastausgleichslogik die erste Frequenz und eine entsprechende erste Spannung für die erste Ressource und die zweite Frequenz und eine entsprechende zweite Spannung für die zweite Ressource basierend auf den gespeicherten mehreren Frequenzwerten und den gespeicherten mehreren Spannungswerten wählen soll. Beispiel 4 umfasst den Apparat aus Beispiel 1, wobei die Ressourcenlastausgleichslogik eine Erhöhung der ersten Frequenz und eine Verringerung der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass die erste Ressource bei einer höheren Frequenz laufen soll. Beispiel 5 umfasst den Apparat aus Beispiel 1, wobei die Ressourcenlastausgleichslogik eine Verringerung der ersten Frequenz und eine Erhöhung der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass die zweite Ressource bei einer höheren Frequenz laufen soll. Beispiel 6 umfasst den Apparat aus Beispiel 1, wobei die Ressourcenlastausgleichslogik eine Erhöhung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass der Betrieb des Prozessors unter dem Leistungsbudget liegt. Beispiel 7 umfasst den Apparat aus Beispiel 1, wobei die Ressourcenlastausgleichslogik eine Verringerung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass der Betrieb des Prozessors über dem Leistungsbudget liegt. Beispiel 8 umfasst den Apparat aus Beispiel 1, wobei die Ressourcenlastausgleichslogik die Änderung der ersten Frequenz und der zweiten Frequenz auf Arbeitslastbasis auslösen soll. Beispiel 9 umfasst den Apparat aus Beispiel 1, wobei die Änderung nicht größer als ca. 5 Prozent ist. Beispiel 10 umfasst den Apparat aus Beispiel 1, wobei der Speicher flüchtigen oder nichtflüchtigen Speicher umfasst. Beispiel 11 umfasst die Vorrichtung aus Beispiel 1, wobei der Prozessor eine Grafikprozessoreinheit (GPU) umfasst, die einen oder mehrere Grafikprozessorkerne aufweist. Beispiel 12 umfasst die Vorrichtung aus Beispiel 1, wobei der Prozessor einen oder mehrere Prozessorkerne umfasst. Beispiel 13 umfasst den Apparat aus Beispiel 1, wobei sich eines oder mehrere aus Prozessor, Ressourcenlastausgleichslogik und Speicher auf einem einzelnen integrierten Schaltungsdie befinden.
  • Beispiel 14 umfasst ein oder mehrere computerlesbare Medien, die eine oder mehrere Anweisungen umfassen, die bei Ausführung auf mindestens einem Prozessor den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, um zu veranlassen: dass Ressourcenlastausgleichslogik eine erste Ressource des Prozessors veranlasst, bei einer ersten Frequenz zu laufen, und eine zweite Ressource des Prozessors, bei einer zweiten Frequenz zu laufen, und einen Speicher zum Speichern mehrerer Frequenzwerte, wobei die Ressourcenlastausgleichslogik die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten wählen soll, wobei der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz den Prozessor veranlassen soll, unter einem Leistungsbudget zu laufen, wobei die Ressourcenlastausgleichslogik eine Änderung an der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet. Beispiel 15 umfasst das computerlesbare Medium aus Beispiel 14, ferner umfassend eine oder mehrere Anweisungen, die bei Ausführung des mindestens einen Prozessors den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, um zu veranlassen, dass die Ressourcenlastausgleichslogik die Änderung ohne Anhalten eines Abschnitts des Prozessors auslöst. Beispiel 16 umfasst das computerlesbare Medium aus Beispiel 14, ferner umfassend eine oder mehrere Anweisungen die bei Ausführung auf dem mindestens einen Prozessor den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, den Speicher zu veranlassen, mehrere Spannungswerte, die den mehreren Frequenzwerten entsprechen, zu speichern, wobei die Ressourcenlastausgleichslogik die erste Frequenz und eine entsprechende erste Spannung für die erste Ressource und die zweite Frequenz und eine entsprechende zweite Spannung für die zweite Ressource basierend auf den gespeicherten mehreren Frequenzwerten und den gespeicherten mehreren Spannungswerten wählen soll. Beispiel 17 umfasst das computerlesbare Medium aus Beispiel 14, ferner umfassend eine oder mehrere Anweisungen, die bei Ausführung des mindestens einen Prozessors den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, um zu veranlassen, dass die Ressourcenlastausgleichslogik eine Erhöhung der ersten Frequenz und eine Verringerung der zweiten Frequenz in Reaktion auf eine Feststellung auslöst, dass die erste Ressource bei einer höheren Frequenz laufen soll. Beispiel 18 umfasst das computerlesbare Medium aus Beispiel 14, ferner umfassend eine oder mehrere Anweisungen, die bei Ausführung des mindestens einen Prozessors den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, um zu veranlassen, dass eine Verringerung der ersten Frequenz und eine Erhöhung der zweiten Frequenz in Reaktion auf eine Feststellung erfolgt, dass die zweite Ressource bei eine höheren Frequenz laufen soll. Beispiel 19 umfasst das computerlesbare Medium aus Beispiel 14, ferner umfassend eine oder mehrere Anweisungen, die bei Ausführung des mindestens einen Prozessors den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, um eine Erhöhung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung zu veranlassen, dass der Betrieb des Prozessors unter dem Leistungsbudget liegt. Beispiel 20 umfasst das computerlesbare Medium aus Beispiel 14, ferner umfassend eine oder mehrere Anweisungen, die bei Ausführung des mindestens einen Prozessors den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, um zu veranlassen, dass die Ressourcenlastausgleichslogik eine Verringerung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslöst, dass der Betrieb des Prozessors über dem Leistungsbudget liegt. Beispiel 21 umfasst das computerlesbare Medium aus Beispiel 14, ferner umfassend eine oder mehrere Anweisungen, die bei Ausführung des mindestens einen Prozessors den mindestens einen Prozessor konfigurieren, eine oder mehrere Operationen auszuführen, um zu veranlassen, dass die Ressourcenlastausgleichslogik die Änderung der ersten Frequenz und der zweiten Frequenz auf Arbeitslastbasis auslöst.
  • Beispiel 22 umfasst ein Rechnersystem, umfassend: einen Prozessor, der einen oder mehrere Prozessorkerne aufweist; Speicher, der mit dem Prozessor gekoppelt ist, um ein oder mehrere Datenbits zu speichern; und Ressourcenlastausgleichslogik, um eine erste Ressource des Prozessors zu veranlassen, bei einer ersten Frequenz zu laufen, und eine zweite Ressource des Prozessors, bei einer zweiten Frequenz zu laufen, wobei der Speicher mehrere Frequenzwerte speichern soll, wobei die Ressourcenlastausgleichslogik die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten wählen soll, wobei der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz den Prozessor veranlassen soll, unter einem Leistungsbudget zu laufen, wobei die Ressourcenlastausgleichslogik eine Änderung an der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet. Beispiel 23 umfasst das System aus Beispiel 22, wobei die Ressourcenlastausgleichslogik die Änderung ohne Anhalten eines Abschnitts des Prozessors auslöst. Beispiel 24 umfasst das System aus Beispiel 22, wobei der Speicher mehrere Spannungswerte speichern soll, die den mehreren Frequenzwerten entsprechen, wobei die Ressourcenlastausgleichslogik die erste Frequenz und eine entsprechende erste Spannung für die erste Ressource und die zweite Frequenz und eine entsprechende zweite Spannung für die zweite Ressource basierend auf den gespeicherten mehreren Frequenzwerten und den gespeicherten mehreren Spannungswerten wählen soll. Beispiel 25 umfasst das System aus Beispiel 22, wobei die Ressourcenlastausgleichslogik die Änderung der ersten Frequenz und der zweiten Frequenz auf Arbeitslastbasis auslösen soll. Beispiel 26 umfasst das System aus Beispiel 22, wobei die Ressourcenlastausgleichslogik eine Erhöhung der ersten Frequenz und eine Verringerung der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass die erste Ressource bei einer höheren Frequenz laufen soll. Beispiel 27 umfasst das System aus Beispiel 22, wobei die Ressourcenlastausgleichslogik eine Verringerung der ersten Frequenz und eine Erhöhung der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass die zweite Ressource bei einer höheren Frequenz laufen soll. Beispiel 28 umfasst das System aus Beispiel 22, wobei die Ressourcenlastausgleichslogik eine Erhöhung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass der Betrieb des Prozessors unter dem Leistungsbudget liegt. Beispiel 29 umfasst das System aus Beispiel 22, wobei die Ressourcenlastausgleichslogik eine Verringerung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass der Betrieb des Prozessors über dem Leistungsbudget liegt. Beispiel 30 umfasst das System aus Beispiel 22, wobei die Änderung nicht größer als ca. 5 Prozent ist. Beispiel 31 umfasst das System aus Beispiel 22, wobei der Speicher flüchtigen oder nichtflüchtigen Speicher umfasst. Beispiel 32 umfasst das System aus Beispiel 22, wobei der Prozessor eine Grafikprozessoreinheit (GPU) umfasst, die einen oder mehrere Grafikprozessorkerne aufweist. Beispiel 33 umfasst das System aus Beispiel 22, wobei der Prozessor einen oder mehrere Prozessorkerne umfasst. Beispiel 34 umfasst das System aus Beispiel 22, wobei sich eines oder mehrere aus Prozessor, Ressourcenlastausgleichslogik und Speicher auf einem einzelnen integrierten Schaltungsdie befinden.
  • Beispiel 35 umfasst ein Verfahren, umfassend: Ressourcenlastausgleichslogik, zum Veranlassen einer ersten Ressource eines Prozessors, bei einer ersten Frequenz zu laufen, und eine zweite Ressource des Prozessors, bei einer zweiten Frequenz zu laufen, und zum Speichern mehrerer Frequenzwerte auf einem Speicher, wobei die Ressourcenlastausgleichslogik die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten wählen soll, wobei der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz den Prozessor veranlassen soll, unter einem Leistungsbudget zu laufen, wobei die Ressourcenlastausgleichslogik eine Änderung an der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet. Beispiel 36 umfasst das Verfahren aus Beispiel 35, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, die Änderung ohne Anhalten eines Abschnitts des Prozessors auszulösen. Beispiel 37 umfasst das Verfahren aus Beispiel 35, ferner umfassend das Veranlassen des Speichers, mehrere Spannungswerte zu speichern, die den mehreren Frequenzwerten entsprechen, wobei die Ressourcenlastausgleichslogik die erste Frequenz und eine entsprechende erste Spannung für die erste Ressource und die zweite Frequenz und eine entsprechende zweite Spannung für die zweite Ressource basierend auf den gespeicherten mehreren Frequenzwerten und den gespeicherten mehreren Spannungswerten wählen soll. Beispiel 38 umfasst das Verfahren aus Beispiel 35, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Erhöhung der ersten Frequenz und eine Verringerung der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass die erste Ressource bei einer höheren Frequenz laufen soll. Beispiel 39 umfasst das Verfahren aus Beispiel 35, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Verringerung der ersten Frequenz und eine Erhöhung der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass die zweite Ressource bei einer höheren Frequenz laufen soll. Beispiel 40 umfasst das Verfahren aus Beispiel 35, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Erhöhung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass der Betrieb des Prozessors unter dem Leistungsbudget liegt. Beispiel 41 umfasst das Verfahren aus Beispiel 35, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Verringerung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass der Betrieb des Prozessors über dem Leistungsbudget liegt. Beispiel 42 umfasst das Verfahren aus Beispiel 35, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, die Änderung der ersten Frequenz und der zweiten Frequenz auf Arbeitslastbasis auszulösen.
  • Beispiel 43 umfasst eine Vorrichtung, die Mittel zum Ausführen eines Verfahrens umfasst, wie in einem der vorhergehenden Beispiele festgelegt. Beispiel 44 umfasst maschinenlesbaren Speicher, umfassend maschinenlesbare Anweisungen, die bei Ausführung ein Verfahren umsetzen oder eine Vorrichtung realisieren, wie in einem vorhergehenden Beispiel festgelegt.
  • In verschiedenen Ausführungsformen können die hierin besprochenen Operationen z. B. mit Verweis auf 1 ff. als Hardware (z. B. Logikschaltkreise), Software, Firmware oder Kombinationen daraus umgesetzt werden, was als ein Computerprogrammprodukt bereitgestellt werden kann, z. B. umfassend ein oder mehrere greifbare (z. B. nicht-transitorische) maschinenlesbare oder computerlesbare Medien, auf denen Anweisungen (oder Softwareverfahren) gespeichert sind, die verwendet werden, um einen Computer zu programmieren, einen hierin besprochenen Prozess auszuführen. Das maschinenlesbare Medium kann eine Speichervorrichtung wie die, die mit Verweis auf 1 ff. besprochen sind, umfassen.
  • Weiterhin können solche computerlesbaren Medium als ein Computerprogrammprodukt heruntergeladen werden, wobei das Programm mittels Datensignalen, die in einer Trägerwelle oder einem anderen Weiterleitungsmedium bereitgestellt werden, von einem externen Computer (z. B. einem Server) über eine Kommunikationsverbindung (z. B. einen Bus, ein Modem oder eine Netzwerkverbindung) auf einen anfragenden Computer (z. B. einen Client) übertragen werden kann.
  • Ein Verweis in der Spezifikation auf „eine Ausführungsform“ bedeutet, dass eine bestimmte Funktion, Struktur oder Eigenschaft, die in Zusammenhang mit der Ausführungsform beschrieben ist, in mindestens einer Ausführungsform enthalten ist.
  • Das Auftreten des Begriffs „in einer Ausführungsform“ an verschiedenen Orten der Spezifikation kann, muss sich aber nicht auf dieselbe Ausführungsform beziehen.
  • Außerdem können in der Beschreibung und den Ansprüchen die Begriffe „gekoppelt“ und „verbunden“ zusammen mit ihren Derivaten verwendet werden. In einigen Ausführungsformen kann „verbunden“ verwendet werden, um anzuzeigen, dass zwei oder mehr Elemente direkt in physischem oder elektrischem Kontakt miteinander stehen. „Gekoppelt“ kann bedeutet, dass zwei oder mehr Elemente sich in direktem physischem oder elektrischem Kontakt befinden. „Gekoppelt“ kann jedoch auch bedeuten, dass zwei oder mehr Elemente nicht unbedingt in direktem Kontakt zueinander stehen, aber dennoch miteinander koordinieren oder interagieren können.
  • So wurden zwar Ausführungsformen in einer Sprache beschrieben, die sich speziell auf strukturelle Merkmale und/oder methodologische Handlungen beziehen, es versteht sich jedoch, dass der beanspruchte Inhalt nicht unbedingt auf die spezifischen beschriebenen Merkmale oder Handlungen beschränkt ist. Stattdessen sind die spezifischen offenbarten Merkmale und Handlungen als Beispielformen der Umsetzung des beanspruchten Inhalts offenbart.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 15859598 [0001]

Claims (25)

  1. Vorrichtung, umfassend: Ressourcenlastausgleichslogik, um eine erste Ressource eines Prozessors zu veranlassen, bei einer ersten Frequenz zu laufen, und eine zweite Ressource des Prozessors, bei einer zweiten Frequenz zu laufen, und Speicher zum Speichern mehrerer Frequenzwerte, wobei die Ressourcenlastausgleichslogik die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten wählen soll, wobei der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz den Prozessor veranlassen soll, unter einem Leistungsbudget zu laufen, wobei die Ressourcenlastausgleichslogik eine Änderung an der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet.
  2. Vorrichtung nach Anspruch 1, wobei die Ressourcenlastausgleichslogik die Änderung ohne Anhalten eines Abschnitts des Prozessors auslöst.
  3. Vorrichtung nach Anspruch 1, wobei der Speicher mehrere Spannungswerte speichern soll, die den mehreren Frequenzwerten entsprechen, wobei die Ressourcenlastausgleichslogik die erste Frequenz und eine entsprechende erste Spannung für die erste Ressource und die zweite Frequenz und eine entsprechende zweite Spannung für die zweite Ressource basierend auf den gespeicherten mehreren Frequenzwerten und den gespeicherten mehreren Spannungswerten wählen soll.
  4. Vorrichtung nach Anspruch 1, wobei die Ressourcenlastausgleichslogik eine Erhöhung der ersten Frequenz und eine Verringerung der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass die erste Ressource bei einer höheren Frequenz laufen soll.
  5. Vorrichtung nach Anspruch 1, wobei die Ressourcenlastausgleichslogik eine Verringerung der ersten Frequenz und eine Erhöhung der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass die zweite Ressource bei einer höheren Frequenz laufen soll.
  6. Vorrichtung nach Anspruch 1, wobei die Ressourcenlastausgleichslogik eine Erhöhung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass der Betrieb des Prozessors unter dem Leistungsbudget liegt.
  7. Vorrichtung nach Anspruch 1, wobei die Ressourcenlastausgleichslogik eine Verringerung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass der Betrieb des Prozessors über dem Leistungsbudget liegt.
  8. Vorrichtung nach Anspruch 1, wobei die Ressourcenlastausgleichslogik die Änderung der ersten Frequenz und der zweiten Frequenz auf Arbeitslastbasis auslösen soll.
  9. Vorrichtung nach Anspruch 1, wobei die Änderung nicht größer als ca. 5 Prozent ist.
  10. Vorrichtung nach Anspruch 1, wobei der Speicher flüchtigen oder nichtflüchtigen Speicher umfasst.
  11. Vorrichtung nach Anspruch 1, wobei der Prozessor eine Grafikprozessoreinheit (GPU) umfasst, die einen oder mehrere Grafikprozessorkerne aufweist.
  12. Vorrichtung nach Anspruch 1, wobei der Prozessor einen oder mehrere Prozessorkerne umfasst.
  13. Vorrichtung nach Anspruch 1, wobei sich eines oder mehrere aus Prozessor, Ressourcenlastausgleichslogik und Speicher auf einem einzelnen integrierten Schaltungsdie befinden.
  14. Rechnersystem umfassend: einen Prozessor, der einen oder mehrere Prozessorkerne aufweist; Speicher, der mit dem Prozessor gekoppelt ist, um ein oder mehrere Datenbits zu speichern; und Ressourcenlastausgleichslogik, um eine erste Ressource des Prozessors zu veranlassen, bei einer ersten Frequenz zu laufen, und eine zweite Ressource des Prozessors, bei einer zweiten Frequenz zu laufen, wobei der Speicher mehrere Frequenzwerte speichern soll, wobei die Ressourcenlastausgleichslogik die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten wählen soll, wobei der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz den Prozessor veranlassen soll, unter einem Leistungsbudget zu laufen, wobei die Ressourcenlastausgleichslogik eine Änderung an der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auslösen soll, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet.
  15. System nach Anspruch 14, wobei die Ressourcenlastausgleichslogik die Änderung ohne Anhalten eines Abschnitts des Prozessors auslöst.
  16. System nach Anspruch 14, wobei der Speicher mehrere Spannungswerte speichern soll, die den mehreren Frequenzwerten entsprechen, wobei die Ressourcenlastausgleichslogik die erste Frequenz und eine entsprechende erste Spannung für die erste Ressource und die zweite Frequenz und eine entsprechende zweite Spannung für die zweite Ressource basierend auf den gespeicherten mehreren Frequenzwerten und den gespeicherten mehreren Spannungswerten wählen soll.
  17. Verfahren, umfassend: durch die Ressourcenlastausgleichslogik Veranlassen einer ersten Ressource eines Prozessors, bei einer ersten Frequenz zu laufen, und einer zweiten Ressource des Prozessors, bei einer zweiten Frequenz zu laufen, und Speichern mehrerer Frequenzwerte auf einem Speicher, wobei die Ressourcenlastausgleichslogik die erste Frequenz und die zweite Frequenz basierend auf den gespeicherten mehreren Frequenzwerten wählen soll, wobei der Betrieb der ersten Ressource bei der ersten Frequenz und der zweiten Ressource bei der zweiten Frequenz den Prozessor veranlassen soll, unter einem Leistungsbudget zu laufen, wobei die Ressourcenlastausgleichslogik eine Änderung an der ersten Frequenz und der zweiten Frequenz in Reaktion auf einer Feststellung auslösen soll, dass sich der Betrieb des Prozessors von dem Leistungsbudget unterscheidet.
  18. Verfahren nach Anspruch 17, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, die Änderung ohne Anhalten eines Abschnitts des Prozessors auszulösen.
  19. Verfahren nach Anspruch 17, ferner umfassend das Veranlassen des Speichers, mehrere Spannungswerte zu speichern, die den mehreren Frequenzwerten entsprechen, wobei die Ressourcenlastausgleichslogik die erste Frequenz und eine entsprechende erste Spannung für die erste Ressource und die zweite Frequenz und eine entsprechende zweite Spannung für die zweite Ressource basierend auf den gespeicherten mehreren Frequenzwerten und den gespeicherten mehreren Spannungswerten wählen soll.
  20. Verfahren nach Anspruch 17, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Erhöhung der ersten Frequenz und eine Verringerung der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass die erste Ressource bei einer höheren Frequenz laufen soll.
  21. Verfahren nach Anspruch 17, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Verringerung der ersten Frequenz und eine Erhöhung der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass die zweite Ressource bei einer höheren Frequenz laufen soll.
  22. Verfahren nach Anspruch 17, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Erhöhung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass der Betrieb des Prozessors unter dem Leistungsbudget liegt.
  23. Verfahren nach Anspruch 17, ferner umfassend das Veranlassen der Ressourcenlastausgleichslogik, eine Verringerung der ersten Frequenz und der zweiten Frequenz in Reaktion auf eine Feststellung auszulösen, dass der Betrieb des Prozessors über dem Leistungsbudget liegt.
  24. Computerlesbares Medium, umfassend eine oder mehrere Anweisungen, die bei Ausführung auf einem Prozessor den Prozessor konfigurieren, eine oder mehrere Operationen aus einem der Ansprüche 17 bis 23 auszuführen.
  25. Vorrichtung, umfassend Mittel zum Ausführen eines Verfahrens wie in einem der Ansprüche 17 bis 23 dargelegt.
DE112018004431.9T 2017-12-31 2018-09-27 Ressourcenlastausgleich basierend auf gebrauchs- und leistungsgrenzen Pending DE112018004431T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/859,598 2017-12-31
US15/859,598 US10983581B2 (en) 2017-12-31 2017-12-31 Resource load balancing based on usage and power limits
PCT/US2018/053043 WO2019133088A1 (en) 2017-12-31 2018-09-27 Resource load balancing based on usage and power limits

Publications (1)

Publication Number Publication Date
DE112018004431T5 true DE112018004431T5 (de) 2020-05-20

Family

ID=67058206

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018004431.9T Pending DE112018004431T5 (de) 2017-12-31 2018-09-27 Ressourcenlastausgleich basierend auf gebrauchs- und leistungsgrenzen

Country Status (3)

Country Link
US (1) US10983581B2 (de)
DE (1) DE112018004431T5 (de)
WO (1) WO2019133088A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586478B2 (en) * 2018-08-21 2023-02-21 International Business Machines Corporation Swarm-based resource management
US11698812B2 (en) * 2019-08-29 2023-07-11 Intel Corporation System, apparatus and method for providing hardware state feedback to an operating system in a heterogeneous processor
US11971774B2 (en) * 2020-10-13 2024-04-30 Nvidia Corporation Programmable power balancing in a datacenter
US11994751B1 (en) 2020-12-30 2024-05-28 Snap Inc. Dual system on a chip eyewear
US11997249B2 (en) * 2021-10-14 2024-05-28 Snap Inc. Dual system on a chip eyewear
US20230117720A1 (en) * 2021-10-14 2023-04-20 Jason Heger Dual system on a chip eyewear

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7444524B2 (en) * 2002-12-30 2008-10-28 Intel Corporation Dynamic voltage transitions
US7386739B2 (en) 2005-05-03 2008-06-10 International Business Machines Corporation Scheduling processor voltages and frequencies based on performance prediction and power constraints
US7698249B2 (en) * 2007-01-22 2010-04-13 International Business Machines Corporation System and method for predicting hardware and/or software metrics in a computer system using models
US7730340B2 (en) * 2007-02-16 2010-06-01 Intel Corporation Method and apparatus for dynamic voltage and frequency scaling
US8281160B1 (en) * 2008-04-17 2012-10-02 Marvell International Ltd. Method and system for selecting an operating frequency for a chip to provide a desired overall power dissipation value for the chip
US8689021B1 (en) 2010-09-10 2014-04-01 Marvell International Ltd. System and method for selecting a power management configuration in a multi-core environment according to various operating conditions such as voltage, frequency, power mode, and utilization factor varied on a per-core basis
US9304570B2 (en) 2011-12-15 2016-04-05 Intel Corporation Method, apparatus, and system for energy efficiency and energy conservation including power and performance workload-based balancing between multiple processing elements
US9606842B2 (en) 2013-05-08 2017-03-28 National Science Foundation Resource and core scaling for improving performance of power-constrained multi-core processors
US20150067356A1 (en) 2013-08-30 2015-03-05 Advanced Micro Devices, Inc. Power manager for multi-threaded data processor
US9665161B2 (en) * 2014-08-27 2017-05-30 Mediatek Inc. Method and computer-readable medium for dynamically managing power of multi-core processor
CN105934976B (zh) * 2014-12-31 2019-06-21 华为技术有限公司 主从网络休眠及唤醒的方法、装置及主从网络省电系统
US20170212575A1 (en) * 2016-01-21 2017-07-27 Mediatek Inc. Power budget allocation method and apparatus for generating power management output according to system setting of multi-core processor system and target power budget

Also Published As

Publication number Publication date
US20190204894A1 (en) 2019-07-04
WO2019133088A1 (en) 2019-07-04
US10983581B2 (en) 2021-04-20

Similar Documents

Publication Publication Date Title
DE102019117592A1 (de) Videoverarbeitungsmechanismus
DE112018004431T5 (de) Ressourcenlastausgleich basierend auf gebrauchs- und leistungsgrenzen
DE102019120661A1 (de) Videoverfeinerungsmechanismus
DE102019119102A1 (de) Spärliche repräsentation für voxel
DE102019119085A1 (de) Punktbasiertes rendern und entfernung von projektionsrauschen
DE112018005527T5 (de) Automatisches aufwecken von leistungsdomänen fürgrafikkonfigurationsanforderungen
DE102019117218A1 (de) Reduziertes Rendern eines Videos mit sechs Freiheitsgraden
DE102019117495A1 (de) System und verfahren zur 3d-blob-klassifizierung und -übertragung
DE102020107080A1 (de) Grafiksysteme und Verfahren zum Beschleunigen von Synchronisation mittels feinkörniger Abhängigkeitsprüfung und Planungsoptimierungen basierend auf verfügbarem gemeinsam genutztem Speicherplatz
DE112018007634T5 (de) Vorrichtung und verfahren für eine virtualisierte anzeige
DE102019110027A1 (de) Kachelbasiertes rendern für mehrere auflösungen von bildern
DE102020127035A1 (de) Programmierbarer umordnungspuffer für dekomprimierung
DE102020131704A1 (de) Multikachelspeicherverwaltungsmechanismus
DE102020105902A1 (de) Hardware-indexzuordnungsmechanismus
DE102019117545A1 (de) Reduzierung von registerbankkonflikten für ausführungseinheiten eines multithread-prozessors
DE102020126177A1 (de) Verfahren und vorrichtung zum planen der threadreihenfolge, um den cache-wirkungsgrad zu verbessern
DE112018003999T5 (de) Verfahren und Vorrichtung für effiziente Verarbeitung von abgeleiteten einheitlichen Werten in einem Grafikprozessor
DE102020115578A1 (de) Management von partiellem schreiben in einer grafik-enginemit mehreren kacheln
DE102020134334A1 (de) Vorrichtung und verfahren zur quantisierten konvergenten richtungsbasierten strahlsortierung
DE112018007635T5 (de) Vorrichtung und verfahren zur effizienten gemeinsamen nutzung einer lokalen anzeige für einen virtualisierten grafikprozessor
DE102020129625A1 (de) Seitentabellen-mapping-mechanismus
DE102020104651A1 (de) Arbeitsspeicherkomprimierungs-Hashmechanismus
DE102020113789A1 (de) Asynchroner ausführungsmechanismus
DE102019124705A1 (de) Multiphasenarchitektur für Mehrraten-Pixelschattierung
DE102019123443A1 (de) Mechanismus zum gemeinsamen Benutzen von Registern