DE102015002365A1 - Prioritätsbasierte kontextpräemption - Google Patents

Prioritätsbasierte kontextpräemption Download PDF

Info

Publication number
DE102015002365A1
DE102015002365A1 DE102015002365.9A DE102015002365A DE102015002365A1 DE 102015002365 A1 DE102015002365 A1 DE 102015002365A1 DE 102015002365 A DE102015002365 A DE 102015002365A DE 102015002365 A1 DE102015002365 A1 DE 102015002365A1
Authority
DE
Germany
Prior art keywords
context
priority
contexts
pipeline
port
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
DE102015002365.9A
Other languages
English (en)
Inventor
Hema Chand Nalluri
Peter L. Doyle
Balaji Vembu
Aditya Navale
Jeffrey S. Boles
Murali Ramadoss
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 DE102015002365A1 publication Critical patent/DE102015002365A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5038Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Abstract

Verfahren und Vorrichtungen können die Verarbeitung von Kontexten hoher Priorität und niedriger Priorität, die über separate Ports zur Übermittlung von Kontexten hoher Priorität und niedriger Priorität an eine Verarbeitungseinheit übermittelt werden, priorisieren. Gemäß einer Ausführungsform bewirkt die Übermittlung eines Kontextes an den Port niedriger Priorität, dass dieser in Verarbeitung befindlichen Kontexten vorgezogen wird, wohingegen die Übermittlung eines Kontextes an den Port hoher Priorität bewirkt, dass in Verarbeitung befindliche Kontexte unterbrochen werden.

Description

  • HINTERGRUND DER ERFINDUNG
  • Eine Computerhardwarearchitektur verarbeitet im Allgemeinen eine Workload (Arbeitslast) in einer bestimmten vorgegebenen Folge. Trotzdem können in dieser Folge Präemptionen (Bevorzugungen) vorhanden sein. Solche Präemptionen können beträchtliche Latenzzeiten zur Folge haben, die das System verlangsamen. Diese Latenzwirkung kann sich besonders deutlich bei solchen prozessorintensiven Aktivitäten bemerkbar machen, wie bei Grafikverarbeitung und insbesondere dreidimensionalem (3D) Rendering.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die verschiedenen Vorteile der Ausführungsformen werden für den Fachmann aus dem Studium der nachfolgenden Beschreibung und der beigefügten Ansprüche sowie anhand der folgenden Zeichnungen ersichtlich, wobei:
  • ein Blockschaltbild eines Beispiels einer Grafikverarbeitungsarchitektur gemäß einer Ausführungsform ist;
  • ein Blockschaltbild eines Beispiels einer Pipeline gemäß einer Ausführungsform ist;
  • ein Blockschaltbild eines Beispiels von priorisiertem Kontextfluss gemäß einer Ausführungsform ist;
  • ein Flussdiagramm eines Beispiels eines Verfahrens zur Handhabung von Übermittlungen von Kontext hoher Priorität und niedriger Priorität gemäß einer Ausführungsform ist;
  • ein Flussdiagramm eines weiteren Beispiels eines Verfahrens zur Handhabung von Übermittlungen von Kontext hoher Priorität und niedriger Priorität gemäß einer Ausführungsform ist;
  • ein Blockschaltbild eines Beispiels einer Logikarchitektur gemäß einer Ausführungsform ist;
  • ein Blockschaltbild eines Systems gemäß einer Ausführungsform ist; und
  • ein Blockschaltbild eines Beispiels eines Systems mit einem kleinen Formfaktor gemäß einer Ausführungsform ist.
  • BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Auf einer ausreichend hohen Ebene eines Computersystems kann eine Anwendung eine Workload an einen Treiber übermitteln, welcher wiederum einen entsprechenden Kontext (auch „Task” genannt) an Hardware übermitteln kann. Auf einem gegebenen Computersystem können mehrere in Bearbeitung befindliche Kontexte – die Workload – vorhanden sein, welche die Computerhardware verwenden. Das Betriebssystem kann diese mehreren Kontexte verwalten, indem es unter Nutzung der Zeitverteilungs-(Time-Sharing-)Fähigkeiten des Computers und seines Betriebssystems jedem Kontext ein Hardwarezeitfenster zur Verfügung stellt. Die Geschwindigkeit, mit der diese Kontexte gehandhabt werden, definiert zumindest teilweise die Effizienz des Computersystems.
  • Ein Zugang zur Erhöhung der Effizienz bestand darin zu ermöglichen, dass gewisse Kontexte gegenüber Kontexten mit niedrigerer Priorität vorgezogen werden. Dies kann während der Ausführung von Kontext-Workload niedriger Priorität geschehen, z. B. wenn das Betriebssystem (Operating System, OS) die Bewegung einer Maus oder anderen Zeigevorrichtung erkennt, welche Kontexte der grafischen Benutzeroberfläche (Graphical User Interface, GUI) erzeugt, denen im Allgemeinen eine höhere Priorität bei der Verarbeitung auf der Mikroprozessorebene verliehen wird, als anderen Kontexten. GUI-Workloads kann eine höhere Priorität verliehen werden, da sie sich direkt und unmittelbar auf die Endbenutzererfahrung auswirken.
  • Obwohl Computer dafür eingesetzt werden können, viele verschiedene Arten von Kontexten zu handhaben, gehören zu den rechentechnisch anspruchsvollsten diejenigen, die das Rendering von 3D-Grafiken zum Ziel haben. Moderne Spiel- und andere videointensive Programme können hohen Wert auf Grafik legen, und die Endbenutzer können die Qualität dieser Grafik leicht selbst beurteilen. Ein System, welches das Rendering von Bildern effizient und schnell durchführen kann, kann wünschenswerter sein als eines, welches langsam und ineffizient ist.
  • Die hier beschriebenen Ausführungsformen weisen einen Port hoher Priorität auf, welcher in Hardware als Hardware-Frontend-Befehlsgeber (Command Streamer) implementiert sein kann. Diese Ausführungsformen ermöglichen, dass Kontexte hoher Priorität Kontexte niedrigerer Priorität vorübergehend unterbrechen, anstatt ihnen gegenüber vorgezogen zu werden, wie unten näher erläutert wird. Ausführungsformen können einen dedizierten, in den Grafikchip der 3D-Pipeline eingebauten On-Chip-Speicher aufweisen, um den Zustand und die Workload eines unterbrochenen Kontextes niedriger Priorität zu sichern und wiederherzustellen. Ausführungsformen können auch einen Port niedriger Priorität zur Handhabung von Kontexten niedriger Priorität aufweisen, welche trotzdem Vorrang gegenüber einem gewissen laufenden Arbeitsablauf (Workflow) haben können.
  • Hier vorgestellte Ausführungsformen können drei Ebenen von Workflow-Kontexten berücksichtigen, die hier in der Reihenfolge ihrer Priorität von niedrig zu hoch angegeben sind:
    • a. Basis-Workflow (hier auch als Kontext-Workload niedriger Priorität bezeichnet, oder LPCW (Low Priority Context Workload));
    • b. Kontexte niedriger Priorität, die Vorrang gegenüber dem Basis-Workflow haben; und
    • c. Kontexte hoher Priorität, welche Vorrang gegenüber a. und b. haben.
  • zeigt ein Blockschaltbild eines Beispiels einer Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) 101, welche in Beispielen von Ausführungsformen verwendet werden kann. Die dargestellte GPU 101 weist einen Befehlsgeber (Command Streamer) 111 auf („CS”, in der Literatur auch als das Hardware-Frontend bezeichnet). Daten von dem Befehlsgeber 111 können einer Medien-Pipeline 113 zugeführt werden. Der Befehlsgeber 111 kann auch mit einer 3D-Festfunktions-Pipeline 115 verbunden sein. Der dargestellte Befehlsgeber 111 verwaltet die Verwendung der 3D- und der Medien-Pipeline 115, 113, indem er zwischen den Pipelines umschaltet und Befehlsströme zu der Pipeline weiterleitet, welche aktiv ist. Die 3D-Pipeline 115 kann spezialisierte primitive Verarbeitungsfunktionen bereitstellen, während die Medien-Pipeline 113 allgemeinere Funktionalität bereitstellen kann. Für ein 3D-Rendering wird die 3D-Pipeline 115 von Vertex-Puffern 117 gespeist, während die Medien-Pipeline 113 von einer separaten Gruppe von Speicherobjekten 119 gespeist werden kann. Zwischenergebnisse von der 3D- und der Medien-Pipeline 115, 113 sowie Befehle von dem Befehlsgeber 111 werden einem Grafik-Subsystem 121 zugeführt, welches mit den Pipelines und mit dem Befehlsgeber 111 direkt verbunden ist.
  • Das dargestellte Grafik-Subsystem 121 enthält einen einheitlichen Rückgabepuffer (Unified Return Buffer, URB) 123, der mit einer Anordnung von Grafikverarbeitungskernen 125 verbunden ist. Der einheitliche Rückgabepuffer 123 kann Speicher enthalten, welcher von verschiedenen Funktionen gemeinsam verwendet wird, um zu ermöglichen, dass Ausführungsstränge (Threads) Daten zurückgeben, welche später von anderen Funktionen oder Threads empfangen werden. Die Anordnung von Kernen 125 verarbeitet die Werte von der 3D- und der Medien-Pipeline 115, 113, um letztendlich Zielflächen 127 zu erzeugen. Die Anordnung von Kernen kann Zugriff auf Sampler-Funktionen 129, mathematische Funktionen 131, Inter-Thread-Kommunikationen 133, Farbrechner (Color Calculators, CC) 135 und einen Render-Cache 137 zum Zwischenspeichern fertig gerenderter Flächen haben. Eine Menge von Quellflächen 139 kann an das Grafik-Subsystem 121 angelegt werden, und nachdem alle diese Funktionen 129, 131, 135, 137, 139 von der Anordnung von Kernen angewendet wurden, kann eine Menge von Zielflächen hergestellt werden. Für Zwecke allgemeiner Berechnungen wird der dargestellte Befehlsgeber 111 verwendet, um Operationen in Abhängigkeit von der speziellen Implementierung durch die Anordnung von Kernen 125 auszuführen.
  • Bei Prozessen des 3D-Renderings erfolgt oft eine besonders intensive Nutzung von Zykluszeit, und insofern ergeben sich daraus hohe Anforderungen an die Entwickler, die danach streben müssen, sowohl Geschwindigkeit als auch Durchsatzeffizienz zu optimieren. Obwohl die Ausführungsformen hier bezüglich der Anforderungen dargestellt sind, die bei 3D-Kontexten gestellt werden, weisen die Ausführungsformen eine breite Anwendbarkeit auf andere Workload-Situationen auf, in denen Geschwindigkeit und Durchsatz zu optimieren sind.
  • zeigt eine detailliertere Ansicht der 3D-Pipeline 115. Hieraus ist ersichtlich, dass die Pipeline 115 eine Anzahl von Stufen zur Handhabung grundlegender primitiver Bildverarbeitungsfunktionen zur Verarbeitung von 3D-Bildern aufweist. Die dargestellte Pipeline 115 weist ein Grafik-Hardware-Frontend (HWFE) 115a, einen Eingangs-(Input-)Assembler 115b, Vorrasterungs-Schattierer (Pre-rasterization Shaders) 115c, einen Rasterer 115d, einen Pixelschattierer (Pixel Shader) 115e und einen Ausgangs-(Output-)Merger 115f auf. Andere Hardware-Implementierungen können zusätzliche oder weniger Stufen aufweisen. Jede dieser Stufen kann mit einem dedizierten On-Chip-Speicher 116 zum Speichern von Zustands- und Arbeitselementen von vorübergehend unterbrochenem Kontext niedriger Priorität gekoppelt sein. Ein solcher einfacher Zugriff auf diese Objekte im Speicher kann die Latenzzeit verringern, wie unten näher erläutert wird.
  • Das Blockschaltbild in zeigt ein Beispiel eines Kontextflusses gemäß einer Ausführungsform. In diesem Beispiel führt ein Betriebssystem (OS) 306 verschiedene Anwendungen aus, wie in der Abbildung dargestellt: eine Abbildungsanwendung 302, einen Browser 304 und eine grafische Benutzeroberfläche (GUI) 308. Das OS 306 kann einen Kernmodustreiber 310 (Kernel Mode Driver, KMD) aufweisen, welcher unter anderem eine Warteschlange niedriger Priorität 311 und eine Warteschlange hoher Priorität 312 unterstützt. Die Letztere kann Kontexte von einer Berührungsvorrichtung 314 (z. B. einer Maus oder einem Trackpad) mittels eines Grafik-Mikrocontrollers 316 empfangen. Es kann auch andere Hardware verwendet und andere Software ausgeführt werden; die hier dargestellten Objekte sind Beispiele für gewöhnlich verwendete Hardware und Software, welche typischerweise eine Anzahl von Kontexten mit unterschiedlichen Prioritäten erzeugen.
  • In enthält die Warteschlange niedriger Priorität 311 diejenigen Kontexte, welche, obwohl sie als „mit niedriger Priorität” ausgewiesen sind, trotzdem Vorrang vor anderen, weniger zeitsensiblen Kontexten haben können, welche die Masse der allgemeinen Kontext-Workload niedriger Priorität ausmachen. Anders ausgedrückt, obwohl die Warteschlange 311 in dieser Anmeldung als „Warteschlange niedriger Priorität” bezeichnet ist, können ihre Kontexte trotzdem von höherer Priorität sein als andere Kontexte, denen sie vorgezogen werden kann. Kontexte, die eine noch höhere Priorität aufweisen als diejenigen in der Warteschlange niedriger Priorität 311, können zu der Warteschlange hoher Priorität 312 gelenkt werden. Die Warteschlange hoher Priorität 312 kann Kontexte von verschiedenen Quellen empfangen, obwohl diese in dieser Abbildung als Berührungsbefehle dargestellt sind, die an der Berührungsvorrichtung 314 über den Grafik-Mikrocontroller 316 erzeugt werden. Sowohl die Warteschlange niedriger Priorität 311 als auch die Warteschlange hoher Priorität 312 können entweder in Software oder in Hardware implementiert sein.
  • Die Kontexte in den dargestellten Warteschlangen 311 und 312 werden einem von zwei Ports durch einen Software-Scheduler 318 zugewiesen, welcher zu einem gegebenen Zeitpunkt Hunderte oder Tausende oder mehr Kontexte handhaben, kann. Der erste dieser Ports ist der Port zur Übermittlung von Kontexten niedriger Priorität 320, welcher Kontexte niedriger Priorität von der Warteschlange niedriger Priorität 311 empfängt. Ein Port zur Übermittlung von Kontexten hoher Priorität 322 empfängt Kontexte hoher Priorität von der Warteschlange hoher Priorität 312. Bei einer Ausführungsform sind diese zwei Ports 320, 322 beide in Hardware implementiert. Die Übermittlungen zu diesen Ports können dann zu einem Hardware-Scheduler 328 weitergeleitet werden.
  • Der dargestellte Hardware-Scheduler 328 entscheidet zwischen Kontexten niedriger Priorität, die an den Port zur Übermittlung von Kontexten niedriger Priorität 320 übermittelt wurden, Kontexten hoher Priorität, die an den Port zur Übermittlung von Kontexten hoher Priorität 322 übermittelt wurden, und solchen Kontexten niedriger Priorität, die vorübergehend unterbrochen werden können, wie unten näher erläutert wird. Der Hardware-Scheduler 328 kann festlegen, welcher von diesen zum aktiven Kontext 330 gemacht und zur Ausführung auf der Pipeline 332 weitergeleitet werden soll. Bei dieser Festlegung besteht seine Auswahlpriorität darin, zuerst einen Kontext hoher Priorität zu wählen, dann irgendeinen Kontext niedriger Priorität, welcher unterbrochen worden ist, und dann andere Kontexte niedriger Priorität. Der dargestellte Hardware-Scheduler 328 leitet die Zustands- und Workload-Einzelheiten, wie etwa Speicherflächen, Speicherobjekte 119 und Vertexpuffer 117 ( ), weiter, die verwendet werden, um den aktiven Kontext 330 zu verarbeiten, der die Pipeline durchläuft, wenn die Kontext-Workload zur Pipeline 332 zur Verarbeitung weitergeleitet wird. Die Pipeline 332 kann 3D- und/oder Medien-Pipelines umfassen, wie zum Beispiel die 3D- und Medien-Pipelines 115, 113 ( ), wie bereits unter Bezugnahme auf eine Ausführungsform der Erfindung erörtert wurde. Der Hardware-Scheduler 328 kann auch dafür verantwortlich sein, den aktiven Kontext 330 vorübergehend zu unterbrechen, wenn ein Kontext höherer Priorität auf eine Verarbeitung wartet, wodurch wiederum die Pipeline 332 angehalten wird. Eine solche Unterbrechung kann erfolgen, wenn ein Kontext hoher Priorität zu dem Port zur Übermittlung von Kontexten hoher Priorität 322 gesendet worden ist. Dies bewirkt, dass ein eventuell in Verarbeitung befindlicher Kontext niedriger Priorität an einer geeigneten logischen Grenze angehalten wird, und dass sein Zustand und die ausstehende Workload und Arbeitselemente in den Speicher kopiert werden.
  • Wenn ein Kontext relativ niedriger Priorität unterbrochen wird, wird sein Zustand gespeichert. In diesem Beispiel kann sich „Zustand” auf die Hardwarekonfiguration beziehen, einschließlich derjenigen jeder Stufe der Pipeline, die benötigt wird, um eine bestimmte Workload/bestimmte Kontexte zu verarbeiten, und kann ferner zusätzliche Softwareanweisungen einschließen. (Zum Beispiel, ob der Kontext aus Dreiecken oder Rechtecken besteht, sowie die primitiven Hardwareoperationen, die an ihnen ausgeführt werden müssen.) Jeder teilweise verarbeitete Kontext, d. h. ausstehende, nicht fertiggestellte Arbeit, kann ebenfalls gespeichert werden. Im vorliegenden Beispiel ist ein Speicher für den Zustand und teilweise verarbeitete Arbeit für unterbrochene Kontexte niedriger Priorität als dedizierter On-Chip-Speicher 333 vorgesehen. Die Bereitstellung dieses Mechanismus vor Ort auf demselben Chip wie die GPU oder CPU kann gegenüber der Verwendung eines Hauptspeichers wesentlich schnellere Zugriffszeiten (um mehrere Größenordnungen) gewährleisten, was eine schnellere nachfolgende Verarbeitung von Kontexten niedriger Priorität, welche unterbrochen wurden, zur Folge hat.
  • In Reaktion auf eine Unterbrechung eines Kontextes niedriger Priorität aufgrund des Eintreffens eines Kontextes hoher Priorität signalisiert die dargestellte Pipeline 332 dem Hardware-Scheduler 328, dass die Pipeline einen Kontext niedriger Priorität unterbrochen hat und sich in einem Zustand befindet, in welchem sie Kontext hoher Priorität annehmen kann. Der dargestellte Hardware-Scheduler 328 verschiebt den unterbrochenen Kontext niedriger Priorität von einem Zustand als aktiver Kontextes 330 zu einem Zustand als unterbrochener Kontext niedriger Priorität (Low Priority, LP) 334, und die Verarbeitung des Kontextes hoher Priorität kann beginnen. Die Hardware kann auch speichern, dass der Kontext niedriger Priorität unterbrochen worden ist, und dass er später, nach Abschluss der Ausführung des hinzugekommenen Kontextes hoher Priorität, und bevor mit irgendeinem anderen Kontext niedriger Priorität begonnen wird, erneut zur Ausführung übermittelt werden kann.
  • Im Falle einer Präemption durch einen Kontext niedriger Priorität, bei der kein Kontext hoher Priorität beteiligt ist, wird, sobald einem Kontext niedriger Priorität ein anderer Kontext niedriger Priorität vorgezogen wird, der Software-Scheduler 318 aktualisiert, und ihm ist bekannt, dass dem Kontext niedriger Priorität ein anderer vorgezogen worden ist und er aus der Pipeline entfernt worden ist. Außerdem können einige Informationen, die den Zustand des Kontextes niedriger Priorität, dem ein anderer vorgezogen wurde, betreffen, in einem Speicher gesichert werden, wie etwa Softwareanweisungen, um verwendet zu werden, wenn die Verarbeitung des Kontextes niedriger Priorität, dem ein anderer vorgezogen wurde, in der Pipeline fortgesetzt wird. Dieser Speicher kann ein Hauptspeicher sein, ein Massenspeicher oder ein Speicher mit doppelter Datenrate (Double Data Rate, DDR), wie er zur Speicherung von Grafik-Kontexten zugewiesen sein kann. Der Software-Scheduler 318 kann die Kennung des Kontextes niedriger Priorität, dem ein anderer vorgezogen wurde, speichern, so dass dieser zu einem späteren Zeitpunkt erneut übermittelt oder verworfen werden kann.
  • Es wird nun auf Bezug genommen; sie zeigt ein Flussdiagramm eines Beispiels eines Verfahrens 400 zum Vorsehen einer Bevorzugung (Präemption) von Kontexten hoher Priorität gegenüber Kontexten niedriger Priorität. Das Verfahren 400 kann in ausführbarer Software als ein Satz von Logikanweisungen implementiert sein, der auf einem maschinen- oder computerlesbaren Speichermedium eines Speichers gespeichert ist, wie etwa eines Direktzugriffsspeichers (Random Access Memory, RAM), Nur-Lese-Speichers (Read Only Memory, ROM), programmierbaren ROM (PROM), von Firmware, eines Flash-Speichers usw., in konfigurierbarer Logik, wie zum Beispiel programmierbaren logischen Anordnungen (Programmable Logic Arrays, PLAs), feldprogrammierbaren Gatteranordnungen (Field Programmable Gate Arrays, FPGAs), komplexen programmierbaren Logikbausteinen (Complex Programmable Logic Devices, CPLDs), in Logikhardware mit fester Funktionalität unter Verwendung von Schaltungstechnologie wie zum Beispiel von anwendungsspezifischen integrierten Schaltungen (Application Specific Integrated Circuit, ASIC), komplementärer Metalloxid-Halbleiter-(Complementary Metal Oxide Semiconductor, CMOS) oder Transistor-Transistor-Logik-(TTL)Technologie, oder einer beliebigen Kombination davon.
  • Es wird zunächst auf die linke Hälfte des Flussdiagramms Bezug genommen; zuerst wird der Fall betrachtet, in dem keine Kontexte hoher Priorität zu verarbeiten sind. Im einfachsten Fall kann sich ein Computer inmitten der Verarbeitung eines Workflow für ein 3D-Rendering befinden. Dies kann zum Beispiel bedeuten, dass ein Bild aus Tausenden von Dreieckselementen zu erzeugen ist, welche eine 3D-Bild-Pipeline mit den in dargestellten verschiedenen Stufen durchlaufen und dabei die Pipeline mit diesem Kontext füllen. Dieser Kontext kann gewöhnliche Kontext-Workload niedriger Priorität sein. Die Ausführung beginnt im dargestellten Block 404, da in diesem einfachen Fall keine Zustände von Kontext niedriger Priorität vorhanden sein können, die in Block 403 aus dem Speicher wiederherzustellen sind, und wenn in Block 406 keine Präemptionen oder Unterbrechungen zu berücksichtigen sind, kann die Ausführung in Block 408 abgeschlossen werden. Im Sinne einer guten Verwaltung und Gestaltung kann der fertig bearbeitete, nunmehr ausgeführte Kontext in Block 410 zur weiteren Verwendung an einer anderen Stelle in einem Speicher gesichert werden. Dieser Speicher kann ein Hauptspeicher oder DDR-Speicher auf der GPU sein, oder irgendein anderer Speicher, der zur Speicherung eines abgeschlossenen Kontextes geeignet ist. Außerdem kann in 410 der Software-Scheduler darüber informiert werden, dass der Kontext abgeschlossen worden ist, und der Prozess endet in 412.
  • Oft kann der Fall vorliegen, dass inmitten des Stroms von Kontexten, aus denen der allgemeine Workflow besteht, einige vorhanden sind, denen ein erster Grad der Priorität eingeräumt werden muss. Die Beispiele solcher Kontexte sind vielfältig. Zum Beispiel kann in einem Medien-Kontext eine Ausführungsform das Zeigen eines Films oder Clips beinhalten, während im Hintergrund eine Workload einer Allzweck-Grafikverarbeitungseinheit (General Purpose Graphics Processing Unit, GPGPU) arbeiten kann, wobei mathematisch aufwendige Berechnungen wie N-Körper-Schwerkraftsimulationen ausgeführt werden. In diesem Beispiel wird dann Medien Priorität gegenüber der GPGPU-Workload eingeräumt. Bei anderen Ausführungsformen kann der umgekehrte Fall vorliegen.
  • Obwohl ein gegebener Kontext hier als „Kontext niedriger Priorität” in Bezug auf Kontexte hoher Priorität bezeichnet sein kann, kann er trotzdem von höherer Priorität sein als andere Kontexte im Workflow. Eine solche relative Vorrangigkeit muss nicht immer auf die automatische Priorität einer Verwendung (z. B. Mausbewegung) gegenüber einer anderen (z. B. mathematische Berechnungen) zurückzuführen sein. Zum Beispiel kann bei einer anderen Ausführungsform ein Algorithmus im Betriebssystem implementiert sein und durch den Software-Scheduler 318 ( ) ausgeführt werden, der darauf abzielt, allen Kontexten einen ausgewogenen Anteil am Hardwarezugang zu ermöglichen, was zu Präemptionen führt, welche nicht zwangsläufig dem Paradigma der Einräumung von Priorität für GPU-Kontexte gegenüber anderen Kontexten folgen.
  • Als Nächstes wird der Fall betrachtet, wenn ein Kontext niedriger Priorität, der Priorität gegenüber dem allgemeinen Workflow hat, zu verarbeiten ist. Der Kontext niedriger Priorität kann an dem Port zur Übermittlung von Kontexten niedriger Priorität durch Block 432 am Startblock 434 übermittelt werden. Wie oben angemerkt, können so bezeichnete Kontexte Priorität gegenüber dem Basis-Workflow haben, und sie können Priorität gegenüber einem anderen, zuvor übermittelten Kontext niedriger Priorität haben, der gerade verarbeitet wird. Somit kann das Verfahren in Block 436 anweisen, dass eine Bevorzugung in Bezug auf beliebige Kontexte in der Pipeline, welche nicht Kontexte hoher Priorität sind, zu erfolgen hat, einschließlich in Bezug auf einen zuvor übermittelten Kontext niedriger Priorität, der gerade verarbeitet wird. Bevorzugung oder „Präemption” bedeutet hier, dass der zu der 3D-Pipeline fließende Workflow angehalten wird und die bereits in der Pipeline befindlichen Kontexte „ausgespült” werden (d. h., es wird ermöglicht, die Ausführung der Verarbeitung an solchen Stationen abzuschließen, wie sie in dargestellt sind). Dieser Prozess des Entleerens der Pipeline läuft möglicherweise nicht augenblicklich ab – er kann Tausende von Taktzyklen erfordern, in Abhängigkeit von der Tiefe der Pipeline und der Menge an Arbeit, die im internen Cache-Speicher ihrer Stationen gespeichert ist. Zum Beispiel kann bei einer Grafikverarbeitung, bei der Dreiecke als Primitive für das Rendering von 3D-Objekten verwendet werden, jede Station in einer Pipeline einen Cache aufweisen, der Tausende von Dreiecken enthält. Der Prozess des Entleerens der Pipeline kann das Abschließen der Arbeit an diesen Dreiecken in der Pipeline nach sich ziehen, so dass eine beträchtliche Latenz bewirkt wird, während in dem dargestellten Block 438 auf das Freiwerden der Pipeline gewartet wird.
  • Sobald die Pipeline freigeworden ist, kann in Block 440 der Software-Scheduler vom Hardware-Scheduler eine Zustandsaktualisierung empfangen, die angibt, dass der neue Kontext niedriger Priorität angenommen worden ist. In Block 442 beginnt der Kontext niedriger Priorität den Prozess der Ausführung in der Pipeline in Block 402, welche in Block 444 das Ende der Übermittlungsphase markiert. Die Ausführung beginnt in Block 403 mit einem Abruf eventuell verfügbarer Zustandsdaten, die zuvor im Speicher gespeichert wurden, aus dem Speicher, und im dargestellten Block 404 kann die Hardware mit der Ausführung der Workload beginnen. Während die Workload ausgeführt wird, überwacht die Pipeline in Block 406 das System in Bezug auf eventuelle neue Bevorzugungen oder Unterbrechungen aufgrund von Übermittlungen von Kontext niedriger Priorität oder Kontext hoher Priorität. Während der Ausführung in Block 406 kann der Fall eintreten, dass über Block 451 ein anderer Kontext niedriger Priorität eintrifft, um dem Kontext vorgezogen zu werden, oder dass ein Kontext hoher Priorität eine Unterbrechung in dem Kontext ausgelöst hat. Falls keine weiteren Bevorzugungen oder Unterbrechungen erfolgen, wird in Block 408 der Kontext abgeschlossen und kann in Block 410 wie zuvor für eine eventuelle zukünftige Wiederverwendung im Speicher gesichert werden, bevor das Verfahren in Block 412 endet.
  • Andererseits kann in Block 406 ein ankommender Kontext niedriger Priorität oder ein Kontext hoher Priorität erkannt werden, wobei in diesem Falle der Kontext niedriger Priorität in Block 408 nicht abgeschlossen wird, sondern er entweder unterbrochen oder ihm ein anderer vorgezogen wird. In Block 414 wird, falls keine Unterbrechung angezeigt wird, dem Kontext niedriger Priorität in Block 415 ein anderer vorgezogen. Ein weiterer Test, ob eine Unterbrechung vorliegt, wird in Block 420 durchgeführt, und wenn dies nicht der Fall ist, bleibt die Bevorzugung in Kraft, und in Block 422 wird der Zustand des Kontextes niedriger Priorität im Speicher gesichert, und der Hardware-Scheduler kann den Software-Scheduler darüber informieren, dass einem Kontext niedriger Priorität ein anderer vorgezogen worden ist.
  • Ein Port für Kontext hoher Priorität in Block 446 ist für die Übermittlung von als Kontexte hoher Priorität eingestuften Kontexten vorgesehen. In diesem Beispiel können Kontexte hoher Priorität durch eine Maus, Trackpad-Berührung und andere GUI-Befehle erzeugt werden, für welche eine zeitnahe Ausführung besonders wichtig ist. Bei anderen Ausführungsformen können andere Operationen andere Kontexte zum Ergebnis haben, welche als eine hohe Priorität aufweisend eingestuft werden können. Bei dieser Ausführungsform ist der Port zur Übermittlung von Kontexten hoher Priorität in Block 446 in Hardware implementiert, obwohl er bei anderen Ausführungsformen in Software implementiert sein kann.
  • Die Kontexte hoher Priorität werden von dem Software-Scheduler oder einem anderen Teil des Betriebssystems erkannt. Falls sie erkannt werden, wird, anstatt irgendwelchen Kontexten niedriger Priorität in der Pipeline zuvorgekommen, was den Nachteil einer relativ hohen Latenzzeit für das Entleeren der Pipeline nach sich ziehen würde, im dargestellten Block 450 eine Unterbrechung von allen Kontexten in der Pipeline ausgelöst, und eine Anzeige davon kann über Block 451 zu Block 406 gesendet werden. Anstatt die Pipeline zu entleeren, wird ermöglicht, dass jeder Kontext in der Pipeline an dem nächsten logischen Punkt angehalten wird, der erreicht werden kann, wie etwa nach Abschluss von In-Flight-Operationen oder Transaktionen, die an der Station, an der er sich befindet, im Gange sind. Zum Beispiel kann in dem Falle, wenn der Kontext aus der Grafikverarbeitung von Tausenden von Dreiecken an jeder Station in der Pipeline besteht, ermöglicht werden, dass die Verarbeitung eines jeden einzelnen Dreiecks, die an einer Station im Gange ist, abgeschlossen wird, doch danach wird die Pipeline für diesen Kontext unterbrochen, und der Zustand des Kontextes und die ausstehenden Daten/Zwischendaten in der Pipeline werden in den Speicher/On-Chip-Speicher kopiert. Auf das Flussdiagramm 400 bezogen, kann Kontext an verschiedenen Stellen in einem Speicher gesichert werden, darunter Block 410, Block 422, Block 426 und Block 450. Die Latenz, die durch das Unterbrechen einer Pipeline hervorgerufen wird, kann wesentlich kleiner sein als beim Entleeren derselben.
  • Sobald in Block 452 die Unterbrechung beendet ist oder die Ausführung des vorhergehenden Kontextes bereits beendet ist, kann in Block 454 der Software-Scheduler darüber informiert werden, dass ein Kontext hoher Priorität angenommen worden ist. Die Ausführung des Kontextes hoher Priorität kann dann in Block 456 beginnen. In Block 460 können eventuelle zuvor gespeicherte, den Kontext hoher Priorität betreffende Zustandsinformationen, welche optional im Speicher abgelegt worden sein können, gelesen werden, um diesen Zustand des Kontextes hoher Priorität wiederherzustellen, und die Ausführung des Kontextes hoher Priorität beginnt. Die Ausführung wird in Block 462 abgeschlossen. In Block 464 kann der Zustand des abgeschlossenen Kontextes hoher Priorität zur späteren weiteren Verwendung im Speicher gesichert werden, und der Software-Scheduler kann darüber informiert werden, dass der Kontext hoher Priorität abgeschlossen worden ist. In Block 466 kann die Verarbeitung eines eventuell ausstehenden, unterbrochenen Kontextes niedriger Priorität fortgesetzt werden, oder der Gesamtprozess kann in 468 enden.
  • Unter erneuter Bezugnahme auf die linke Seite des Verfahrens 400 werden nun weitere Aspekte der Verarbeitung von Kontexten hoher Priorität betrachtet. In Block 406 trifft ein Hinweis auf eine Unterbrechung (die Marke eines Kontextes hoher Priorität) ein, und in Block 414 wird sie quittiert. Danach wird in Block 424 ein eventueller aktiver Kontext niedriger Priorität (wobei es sich hier um einen beliebigen Kontext handeln kann, der nicht von hoher Priorität ist) vorübergehend unterbrochen. In Block 426 werden der Zustand des unterbrochenen Kontextes niedriger Priorität und dessen eventuell bereits erzeugte Zwischendaten in einem Speicher wie etwa einen On-Chip-Speicher gesichert. Außerdem wird der Software-Scheduler darüber informiert, dass der Kontext niedriger Priorität unterbrochen worden ist. Der Block 426 kann von Block 466 einen Hinweis erhalten, dass die Arbeit an dem unterbrochenen Kontext niedriger Priorität fortgesetzt werden kann, wobei in diesem Falle in Block 430 der Software-Scheduler darüber informiert wird, dass die Arbeit an dem unterbrochenen Kontext fortgesetzt werden kann, was er beginnend mit Block 402 ausführt.
  • Es wird nun auf Bezug genommen; ein anderes Beispiel eines Verfahrens zum Vorsehen einer Bevorzugung von Kontexten hoher Priorität gegenüber Kontexten niedriger Priorität ist anhand eines Flussdiagramms 500 dargestellt. Zuerst wird der Fall betrachtet, in dem in Block 504 ein Kontext hoher Priorität an den Port hoher Priorität übermittelt wird. Falls in Block 506 keine in der Verarbeitung befindlichen Kontexte niedriger Priorität zu berücksichtigen sind, wird der Kontext hoher Priorität zu der Pipeline gesendet und in Block 512 ausgeführt. Falls dagegen bereits ein Kontext niedriger Priorität in der Pipeline vorhanden ist, wird dieser Kontext niedriger Priorität in Block 508 unterbrochen, und sein Zustand und die nicht fertiggestellte Arbeit werden in Block 510 in einem Speicher (welcher ein dedizierter On-Chip-Speicher sein kann) gesichert. Außerdem kann eine beliebige abgeschlossene Kontextverarbeitung in einem Haupt- oder DDR-Grafikspeicher gespeichert werden.
  • Nach Abschluss des Kontextes hoher Priorität in Block 512 wird das System in 514 in Bezug auf eventuelle unterbrochene Kontexte niedriger Priorität abgefragt. Falls keine vorhanden sind, wird das System in Block 518 weiter abgefragt, um zu bestimmen, ob irgendwelche weiteren Kontexte niedriger Priorität zu verarbeiten sind. Falls keine vorhanden sind, ist der Workflow beendet. Falls weitere Kontexte niedriger Priorität zu verarbeiten sind, geschieht dies in Block 520, und danach, wenn dies abgeschlossen ist, ist dieser Workflow beendet.
  • Sollte in Block 514 bestimmt werden, dass noch ein unterbrochener Kontext niedriger Priorität zu verarbeiten ist, so werden dessen Zustand und eventuelle teilweise abgeschlossene Arbeit in Block 516 aus dem Speicher wiederhergestellt und in Block 517 in der Pipeline verarbeitet, wonach die Steuerung an Block 518 übergeht und der Ablauf wie oben fortgesetzt wird.
  • In Block 532 kann ein Kontext niedriger Priorität an den Port niedriger Priorität übermittelt werden. Wie für diesen Fall aus dem Flussdiagramm 500 ersichtlich ist, wird im Bedingungsblock 534 bestimmt, ob ein Kontext hoher Priorität an den Port hoher Priorität übermittelt worden ist. Ist dies der Fall, geht die Ablaufsteuerung zu Block 506 über, um die Verarbeitung wie oben durchzuführen. Wenn nicht, wird in Block 536 weiterhin bestimmt, ob irgendwelche älteren Kontexte niedriger Priorität in der Pipeline vorhanden sind. Falls keine vorhanden sind, wird der Kontext niedriger Priorität an die Pipeline übermittelt und in 538 bis zum Abschluss ausgeführt, und die Workload ist in 540 beendet. Falls sich dagegen bereits ein anderer Kontext niedriger Priorität in der Pipeline befindet, wird ihm in Block 542 der neuere Kontext niedriger Priorität vorgezogen und in Block 544 ausgeführt. Nach seinem Abschluss wird in Block 546 wieder der ältere Kontext niedriger Priorität, dem der andere vorgezogen wurde, geladen und ausgeführt.
  • Ein Beispiel einer Logikarchitektur 600 gemäß einer Ausführungsform ist in dargestellt. Die Logikarchitektur 600 weist eine Grafikpipeline 602, einen Port für Kontexte niedriger Priorität 604 und einen Port für Kontexte hoher Priorität 606 auf. Ein Detektionsmodul für Kontexte hoher Priorität 614 kann die Übermittlung von Kontexten hoher Priorität an den Port hoher Priorität 606 erkennen. Falls ein solcher Kontext zu einem Zeitpunkt erkannt wird, zu dem ein Kontext niedriger Priorität der aktive Kontext in der Pipeline 602 ist, kann das Unterbrechungsmodul für Kontexte niedriger Priorität 616 den Kontext niedriger Priorität unterbrechen, und dessen Zustand und eventuelle teilweise abgeschlossene Arbeit können von dem Sicherungsmodul für unterbrochene Kontexte 618 in einem On-Chip-Speicher 620 gesichert werden. Nachdem der Kontext hoher Priorität verarbeitet worden ist, werden der Zustand und eventuelle teilweise abgeschlossene Arbeit des unterbrochenen Kontextes durch das Wiederherstellungsmodul für unterbrochene Kontexte 622 aus dem On-Chip-Speicher 620 in der Pipeline wiederhergestellt, und die Arbeit an dem unterbrochenen Kontext niedriger Priorität wird fortgesetzt.
  • Es ist möglich, dass keine Kontexte hoher Priorität vorhanden sind, die zu verarbeiten sind. In diesem Falle erkennt das Detektionsmodul für Kontexte niedriger Priorität 626 die Übermittlung von Kontexten niedriger Priorität an den Port niedriger Priorität 604. Falls ein solcher Kontext zu einem Zeitpunkt erkannt wird, zu dem ein anderer Kontext niedriger Priorität der aktive Kontext in der Pipeline 602 ist, zieht das Präemptionsmodul für Kontexte niedriger Priorität 628 dem Kontext niedriger Priorität einen anderen vor, und gewisse Aspekte seines Zustands sowie eventuelle abgeschlossene Arbeit können von dem Sicherungsmodul 630 für Kontexte, denen ein anderer vorgezogen wurde, in einem Speicher 632 gesichert werden, welcher ein Hauptspeicher oder DDR-Speicher sein kann. Nachdem der Kontext niedriger Priorität verarbeitet worden ist, werden die Zustandsinformationen, die möglicherweise gesichert wurden, und der Kontext niedriger Priorität, dem der andere vorgezogen wurde, durch das Wiederherstellungsmodul 622 für Kontexte, denen ein anderer vorgezogen wurde, in der Pipeline wiederhergestellt, und die Arbeit an dem Kontext niedriger Priorität, dem der andere vorgezogen wurde, wird fortgesetzt.
  • zeigt eine Ausführungsform eines Systems 700. Bei verschiedenen Ausführungsformen kann das System 700 ein Mediensystem sein, obwohl das System 700 nicht auf diesen Kontext beschränkt ist. Zum Beispiel kann das System 700 in einen Personalcomputer (PC), ein Notebook, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Handheld-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination Mobiltelefon/PDA, ein Fernsehgerät, ein Smart Device (z. B. Smartphone, Smart Tablet oder Smart-Fernsehgerät), ein mobiles Internet-Gerät (Mobile Internet Device, MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung usw. integriert sein. Somit kann das System 700 verwendet werden, um Bilder zu rendern, wie hier beschrieben.
  • Bei verschiedenen Ausführungsformen umfasst das System 700 eine Plattform 702, die mit einer Anzeige 720 verbunden ist. Die Plattform 702 kann Video-Bitstream-Inhalt von einer Inhaltsvorrichtung wie etwa (einer) Inhaltsdienstvorrichtung(en) 730 oder (einer) Inhaltszustellungsvorrichtung(en) 740 oder anderen ähnlichen Inhaltsquellen empfangen. Eine Navigationssteuerung 750, die ein oder mehrere Navigationsmerkmale umfasst, kann verwendet werden, um zum Beispiel mit der Plattform 702 und/oder der Anzeige 720 zu interagieren. Jede dieser Komponenten wird im Folgenden genauer beschrieben.
  • Bei verschiedenen Ausführungsformen kann die Plattform 702 eine beliebige Kombination eines Chipsatzes 705, Prozessors 710, Arbeitsspeichers 712, Datenspeichers 714, Grafik-Subsystems 715, von Anwendungen 716 und/oder einer Funkvorrichtung 718 umfassen. Der Chipsatz 705 kann Wechselkommunikation zwischen dem Prozessor 710, dem Arbeitsspeicher 712, dem Datenspeicher 714, dem Grafik-Subsystem 715, den Anwendungen 716 und/oder der Funkvorrichtung 718 bereitstellen. Zum Beispiel kann der Chipsatz 705 einen Datenspeicher-Adapter (nicht dargestellt) umfassen, der in der Lage ist, eine Wechselkommunikation mit dem Datenspeicher 714 zu gewährleisten.
  • Der Prozessor 710 kann als ein Prozessor eines Computers mit komplexem Befehlssatz (Complex Instruction Set Computer, CISC) oder eines Computers mit reduziertem Befehlssatz (Reduced Instruction Set Computer, RISC), ein mit dem x86-Befehlssatz kompatibler Prozessor, ein Mehrkernprozessor oder ein beliebiger anderer Mikroprozessor oder eine beliebige andere zentrale Verarbeitungseinheit (Central Processing Unit, CPU) implementiert sein. Bei verschiedenen Ausführungsformen kann es sich bei dem Prozessor 710 um Prozessor(en) mit zwei Kernen, Mobilprozessor(en) mit zwei Kernen und so weiter handeln.
  • Der Arbeitsspeicher 712 kann als eine flüchtige Speichervorrichtung implementiert sein, wie unter anderem als ein Direktzugriffspeicher (Random Access Memory, RAM), ein dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) oder ein statischer RAM (SRAM).
  • Der Datenspeicher 714 kann als eine nichtflüchtige Speichervorrichtung, wie unter anderem ein magnetisches Plattenlaufwerk, ein optisches Plattenlaufwerk, ein Bandlaufwerk, eine interne Speichervorrichtung, eine angeschlossene Speichervorrichtung, ein Flash-Speicher, ein batteriegepufferter SDRAM (synchroner DRAM) und/oder eine Speichervorrichtung mit Netzzugang, implementiert sein. Bei verschiedenen Ausführungsformen kann der Datenspeicher 714 Technologie umfassen, um den erweiterten Speicherleistungsschutz für wertvolle digitale Medien zu erhöhen, wenn zum Beispiel mehrere Festplattenlaufwerke enthalten sind.
  • Das Grafik-Subsystem 715 kann eine Verarbeitung von Bildern, wie beispielsweise Stand- oder Videobildern, zur Anzeige durchführen. Das Grafik-Subsystem 715 kann zum Beispiel eine Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) oder eine visuelle Verarbeitungseinheit (Visual Processing Unit, VPU) sein. Das Grafik-Subsystem 715 kann daher die bereits erläuterte GPU 101 ( ) enthalten. Außerdem kann der Prozessor 710 dafür konfiguriert sein, über Anweisungen, die von dem Arbeitsspeicher 712, dem Datenspeicher 714 oder einer anderen geeigneten Quelle erhalten werden, als eine CPU zu arbeiten. Es kann eine analoge oder digitale Schnittstelle verwendet werden, um das Grafik-Subsystem 715 und die Anzeige 720 kommunikativ zu koppeln. Zum Beispiel kann die Schnittstelle eine beliebige von einer High-Definition-Multimedia-Schnittstelle, DisplayPort, drahtlosen HDMI- und/oder drahtlosen HD-kompatiblen Techniken sein. Das Grafik-Subsystem 715 kann in den Prozessor 710 oder den Chipsatz 705 integriert sein. Das Grafik-Subsystem 715 kann eine eigenständige Karte sein, die mit dem Chipsatz 705 kommunikativ gekoppelt ist.
  • Die hierin beschriebenen Grafik- und/oder Videoverarbeitungsverfahren können in verschiedenen Hardware-Architekturen implementiert werden. Zum Beispiel kann Grafik- und/oder Videofunktionalität in einen Chipsatz integriert werden. Alternativ dazu kann ein diskreter Grafik- und/oder Videoprozessor verwendet werden. Als noch eine andere Ausführungsform können die Grafik- und/oder Videofunktionen durch einen Universalprozessor, einschließlich eines Mehrkernprozessors, implementiert werden. Bei einer weiteren Ausführungsform können die Funktionen in einer Unterhaltungselektronikvorrichtung implementiert werden.
  • Die Funkvorrichtung 718 kann eine oder mehrere Funkvorrichtungen umfassen, die zum Senden und Empfangen von Signalen unter Verwendung von verschiedenen geeigneten Drahtloskommunikationstechniken in der Lage sind. Solche Techniken können Kommunikationen über ein oder mehrere drahtlose Netze umfassen. Beispielhafte drahtlose Netze umfassen (ohne darauf beschränkt zu sein) drahtlose lokale Netze (Wireless Local Area Networks, WLANs), drahtlose Netze für den persönlichen Bereich (Wireless Personal Area Networks, WPANs), drahtlose Stadtnetze (Wireless Metropolitan Area Networks, WMANs), zellulare Mobilfunknetze und Satellitennetze. Beim Kommunizieren über solche Netze kann die Funkvorrichtung 718 gemäß einem oder mehreren anwendbaren Standard(s) einer beliebigen Version funktionieren.
  • Bei verschiedenen Ausführungsformen kann die Anzeige 720 einen beliebigen Monitor oder eine beliebige Anzeige von der Art eines Fernsehgeräts umfassen. Die Anzeige 720 kann zum Beispiel einen Computeranzeigebildschirm, eine Berührungsbildschirmanzeige, einen Videomonitor, eine fernsehgerätähnliche Vorrichtung und/oder ein Fernsehgerät umfassen. Die Anzeige 720 kann digital und/oder analog sein. Bei verschiedenen Ausführungsformen kann die Anzeige 720 eine holografische Anzeige sein. Außerdem kann die Anzeige 720 eine durchsichtige Oberfläche sein, die eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bildern und/oder Objekten übertragen. Zum Beispiel können solche Projektionen ein visuelles Overlay (Überlagerung) für eine Anwendung für mobile erweiterte Realität (Mobile Augmented Reality, MAR) sein. Gesteuert von einer oder mehreren Softwareanwendungen 716, kann die Plattform 702 eine Benutzeroberfläche 722 auf der Anzeige 720 anzeigen.
  • Bei verschiedenen Ausführungsformen kann eine/können Inhaltsdienstvorrichtung(en) 730 durch einen beliebigen nationalen, internationalen und/oder unabhängigen Dienst gehostet werden, so dass die Plattform 702 zum Beispiel über das Internet auf sie zugreifen kann. Die Inhaltsdienstvorrichtung(en) 730 kann/können mit der Plattform 702 und/oder der Anzeige 720 verbunden sein. Die Plattform 702 und/oder die Inhaltsdienstvorrichtung(en) 730 können mit einem Netz 760 verbunden sein, um Medieninformationen zwischen ihnen und dem Netz 760 zu übertragen (z. B. an dieses zu senden oder von ihm zu empfangen). Die Inhaltszustellungsvorrichtung(en) 740 kann/können mit der Plattform 702 und/oder mit der Anzeige 720 verbunden sein.
  • Bei verschiedenen Ausführungsformen kann eine/können Inhaltsdienstvorrichtung(en) 730 eine Kabel-TV-Box, einen Personalcomputer, ein Netz, ein Telefon, internetfähige Vorrichtungen oder ein Gerät, das zum Zustellen von digitalen Informationen und/oder digitalem Inhalt in der Lage ist, und jede andere ähnliche Vorrichtung, die zum unidirektionalen oder bidirektionalen Kommunizieren von Inhalt zwischen Inhalteanbietern und der Plattform 702 und/oder der Anzeige 720 über das Netz 760 oder direkt in der Lage ist, umfassen. Es versteht sich, dass der Inhalt unidirektional und/oder bidirektional zu und von jeder der Komponenten im System 700 und einem Inhalteanbieter über das Netz 760 kommuniziert werden kann. Beispiele von Inhalt können beliebige Medieninformationen, wie beispielsweise Video, Musik, medizinische oder Spielinformationen und so weiter umfassen.
  • Die Inhaltsdienstvorrichtung(en) 730 empfängt/empfangen Inhalt, wie etwa Kabelfernsehprogramme, die Medieninformationen, digitale Informationen und/oder anderen Inhalt umfassen. Beispiele von Inhalteanbietern können beliebige Anbieter von Fernseh- oder Radio- oder Internetinhalt über Kabel oder Satellit sein. Die genannten Beispiele sollen keine Einschränkung der Ausführungsformen darstellen.
  • Bei verschiedenen Ausführungsformen kann die Plattform 702 Steuersignale von einer Navigationssteuerung 750 mit einem oder mehreren Navigationsmerkmalen empfangen. Die Navigationsmerkmale der Steuerung 750 können zum Beispiel zur Interaktion mit der Benutzeroberfläche 722 verwendet werden. Bei verschiedenen Ausführungsformen kann die Navigationssteuerung 750 eine Zeigevorrichtung sein, die eine Computer-Hardwarekomponente (insbesondere eine Benutzerschnittstellenvorrichtung) sein kann, die es einem Benutzer ermöglicht, räumliche (z. B. kontinuierliche oder multidimensionale) Daten in einen Computer einzugeben. Viele Systeme, wie beispielsweise grafische Benutzeroberflächen (Graphical User Interface, GUI), sowie Fernsehgeräte und Monitore ermöglichen es dem Benutzer, Daten unter Verwendung von physischen Gesten zu steuern und in den Computer oder das Fernsehgerät einzugeben.
  • Bewegungen der Navigationsmerkmale der Steuerung 750 können auf einer Anzeige (z. B. der Anzeige 720) durch Bewegungen eines Zeigers, Cursors, Fokusrings oder anderer visueller Indikatoren, die auf der Anzeige angezeigt werden, reproduziert werden. Zum Beispiel können, gesteuert durch die Softwareanwendungen 716, die auf der Navigationssteuerung 750 befindlichen Navigationsmerkmale auf virtuelle Navigationsmerkmale abgebildet werden, die zum Beispiel auf der Benutzeroberfläche 722 angezeigt werden. Bei verschiedenen Ausführungsformen ist die Steuerung 750 möglicherweise keine separate Komponente, sondern ist in die Plattform 702 und/oder die Anzeige 720 integriert. Die Ausführungsformen sind jedoch nicht auf die Elemente oder in dem Kontext beschränkt, die hier dargestellt oder beschrieben sind.
  • Bei verschiedenen Ausführungsformen können Treiber (nicht dargestellt) Technologie umfassen, die es Benutzern zum Beispiel ermöglicht, Plattform 702 wie ein Fernsehgerät mit der Berührung einer Schaltfläche nach dem anfänglichen Hochfahren, wenn aktiviert, augenblicklich ein- und auszuschalten. Programmlogik kann es der Plattform 702 ermöglichen, Inhalt auf Medien-Adapter oder andere Inhaltsdienstvorrichtung(en) 730 oder Inhaltszustellungsvorrichtung(en) 740 zu streamen, wenn die Plattform auf „Aus” geschaltet ist. Außerdem kann der Chipsatz 705 zum Beispiel Hardware- und/oder Software-Unterstützung für 5.1 Surround-Sound-Audio und/oder hochauflösendes 7.1 Surround-Sound-Audio (Mehrkanalton) umfassen. Die Treiber können einen Grafiktreiber für integrierte Grafikplattformen umfassen. Bei verschiedenen Ausführungsformen kann der Grafiktreiber eine PCI-(Peripheral Component Interconnect, Peripheriegeräteanschluss)Express-Grafikkarte umfassen.
  • Bei verschiedenen Ausführungsformen können eine oder mehrere der im System 700 dargestellten Komponenten integriert sein. Zum Beispiel können die Plattform 702 und die Inhaltsdienstvorrichtung(en) 730 integriert sein, oder die Plattform 702 und die Inhaltszustellungsvorrichtung(en) 740 können integriert sein, oder die Plattform 702, die Inhaltsdienstvorrichtung(en) 730 und die Inhaltszustellungsvorrichtung(en) 740 können zum Beispiel integriert sein. Bei verschiedenen Ausführungsformen können die Plattform 702 und die Anzeige 720 eine integrierte Einheit sein. Zum Beispiel können die Anzeige 720 und die Inhaltsdienstvorrichtung(en) 730 integriert sein, oder die Anzeige 720 und die Inhaltszustellungsvorrichtung(en) 740 können integriert sein. Diese Beispiele sollen die Ausführungsformen nicht einschränken.
  • Bei verschiedenen Ausführungsformen kann das System 700 als ein drahtloses System, ein drahtgebundenes System oder eine Kombination von beidem implementiert sein. Bei Implementierung als ein drahtloses System kann das System 700 Komponenten und Schnittstellen aufweisen, die für eine Kommunikation über drahtlose gemeinsam genutzte Medien, wie etwa eine oder mehrere Antennen, Sender, Empfänger, Sendeempfänger, Verstärker, Filter, Steuerlogik und so weiter, geeignet sind. Ein Beispiel für drahtlose gemeinsam genutzte Medien kann Teile eines drahtlosen Spektrums, wie beispielsweise eines HF-Spektrums, und so weiter umfassen. Bei Implementierung als ein drahtgebundenes System kann das System 700 Komponenten und Schnittstellen aufweisen, die für eine Kommunikation über drahtgebundene Kommunikationsmedien, wie etwa Eingangs-/Ausgangs(E/A)-Adapter, physische Verbinder zum Verbinden des E/A-Adapters mit einem entsprechenden drahtgebundenen Kommunikationsmedium, eine Netzschnittstellenkarte (Network Interface Card, NIC), eine Plattenspeichersteuerung, eine Videosteuerung, eine Audiosteuerung und so weiter, geeignet sind. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, ein Kabel, Metallleitungen, eine gedruckte Leiterplatte (Printed Circuit Board, PCB), eine Rückwandplatine, eine Schaltmatrix (Switch-Fabric), ein Halbleitermaterial, ein Kabel mit verdrillten Adernpaaren, ein Koaxialkabel, Lichtwellenleiter und so weiter umfassen.
  • Die Plattform 702 kann einen oder mehrere logische oder physikalische Kanal/Kanäle zum Übertragen von Informationen aufbauen. Die Informationen können Medieninformationen und Steuerungsinformationen umfassen. Medieninformationen können sich auf beliebige Daten beziehen, die Inhalt darstellen, der für einen Benutzer bestimmt ist. Beispiele für Inhalt können zum Beispiel Daten aus einem Gespräch, einer Videokonferenz, einem Video-Streaming, einer elektronischen Nachricht („E-Mail”), einer Sprachnachricht („Voicemail”), alphanumerischen Symbolen, Grafiken, Bild, Video, Text und so weiter umfassen. Daten aus einem Gespräch können zum Beispiel Sprachinformationen, Ruheperioden, Hintergrundrauschen, Komfortrauschen, Töne und so weiter sein. Steuerungsinformationen können sich auf beliebige Daten beziehen, die Befehle, Anweisungen oder Steuerwörter darstellen, die für ein automatisiertes System bestimmt sind. Zum Beispiel können Steuerungsinformationen verwendet werden, um Medieninformationen durch ein System zu leiten oder einen Knoten anzuweisen, die Medieninformationen auf eine vorbestimmte Art und Weise zu verarbeiten. Die Ausführungsformen sind jedoch nicht auf die Elemente oder in dem Kontext beschränkt, die in dargestellt oder beschrieben sind.
  • Wie oben beschrieben, kann das System 700 in verschiedenen physikalischen Stilen oder Formfaktoren realisiert sein. veranschaulicht Ausführungsformen einer Vorrichtung 800 mit kleinem Formfaktor, in der das System 700 realisiert sein kann. Bei verschiedenen Ausführungsformen kann die Vorrichtung 800 zum Beispiel als eine mobile Datenverarbeitungsvorrichtung mit Drahtlos-Fähigkeiten implementiert sein. Bei einer mobilen Datenverarbeitungsvorrichtung kann es sich um eine beliebige Vorrichtung mit einem Verarbeitungssystem und einer mobilen Stromquelle oder -versorgung, wie beispielsweise einer oder mehreren Batterie(n), handeln.
  • Wie oben beschrieben, können Beispiele einer mobilen Datenverarbeitungsvorrichtung einen Personalcomputer (PC), ein Notebook, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Handheld-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination Mobiltelefon/PDA, ein Fernsehgerät, ein Smart Device (z. B. Smartphone, Smart Tablet oder Smart-Fernsehgerät), ein mobiles Internet-Gerät (Mobile Internet Device, MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung und so weiter umfassen.
  • Beispiele einer mobilen Datenverarbeitungsvorrichtung können außerdem Computer umfassen, die dafür ausgelegt sind, von einer Person getragen zu werden, wie etwa einen Handgelenk-Computer, einen Finger-Computer, einen Ring-Computer, einen Brillen-Computer, einen Gürtelclip-Computer, einen Armband-Computer, Schuh-Computer, Kleidungs-Computer und andere tragbare Computer. Bei verschiedenen Ausführungsformen kann eine mobile Datenverarbeitungsvorrichtung zum Beispiel als ein Smartphone implementiert sein, das zum Ausführen von Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen in der Lage ist. Obwohl einige Ausführungsformen beispielhaft anhand einer mobilen Datenverarbeitungsvorrichtung beschrieben werden können, die als ein Smartphone implementiert ist, versteht es sich, dass andere Ausführungsformen auch unter Verwendung anderer drahtloser mobiler Datenverarbeitungsvorrichtungen implementiert sein können. Die Ausführungsformen sind diesbezüglich nicht beschränkt.
  • Wie in dargestellt, kann die Vorrichtung 800 ein Gehäuse 802, eine Anzeige 804, eine Eingabe-/Ausgabe-(E/A-)Vorrichtung 806 und eine Antenne 808 umfassen. Die Vorrichtung 800 kann außerdem Navigationsmerkmale 812 umfassen. Die Anzeige 804 kann jede geeignete Anzeigeeinheit zum Anzeigen von Information umfassen, die für eine mobile Datenverarbeitungsvorrichtung geeignet ist. Die E/A-Vorrichtung 806 kann jede geeignete E/A-Vorrichtung zum Eingeben von Informationen in eine mobile Datenverarbeitungsvorrichtung umfassen. Beispiele für eine E/A-Vorrichtung 806 können eine alphanumerische Tastatur, ein numerisches Tastenfeld, ein Touchpad, Eingabetasten, Schaltflächen, Schalter, Kippschalter, Mikrofone, Lautsprecher, Spracherkennungsvorrichtungen und Software und so weiter sein. Informationen können auch durch ein Mikrofon in die Vorrichtung 800 eingegeben werden. Solche Informationen können durch eine Spracherkennungsvorrichtung digitalisiert werden. Die Ausführungsformen sind diesbezüglich nicht beschränkt.
  • Zusätzliche Anmerkungen und Beispiele:
  • Beispiel 1 kann ein System beinhalten, das einen Prozessor, eine Pipeline, einen ersten Port zum Empfangen von Kontexten mit einer ersten Priorität, einen zweiten Port zum Empfangen eines Kontextes mit einer zweiten Priorität, welche höher als die erste Priorität ist, ein Detektionsmodul für Kontexte der zweiten Priorität zum Erkennen des Empfangs des Kontextes mit der zweiten Priorität an dem zweiten Port und ein Unterbrechungsmodul zum Unterbrechen eines Kontextes in der Pipeline, nachdem das Detektionsmodul für Kontexte der zweiten Priorität den Empfang des Kontextes mit der zweiten Priorität an dem zweiten Port erkannt hat, aufweist.
  • Beispiel 2 kann das System von Beispiel 1 beinhalten, welches ferner einen On-Chip-Speicher zum Speichern eines Zustands wenigstens eines der Kontexte aufweist, wobei sich der On-Chip-Speicher und der Prozessor auf einem gemeinsamen Chip befinden.
  • Beispiel 3 kann das System von Beispiel 2 beinhalten, welches ferner ein Wiederherstellungsmodul zum Wiederherstellen eines unterbrochenen Kontextes, nachdem der Kontext mit der zweiten Priorität abgeschlossen ist, aufweist.
  • Beispiel 4 kann das System von Beispiel 3 beinhalten, wobei mindestens eines der Module in Software implementiert ist.
  • Beispiel 5 kann das System von Beispiel 1 beinhalten, wobei das Unterbrechungsmodul in Hardware implementiert ist.
  • Beispiel 6 kann das System von Beispiel 1 oder 2 beinhalten, welches ferner ein Präemptionsmodul umfasst, um, nachdem ein Kontext an den ersten Port übermittelt worden ist, diesen einem Kontext in der Pipeline vorzuziehen.
  • Beispiel 7 kann das System eines der vorhergehenden Beispiele beinhalten, welches ferner ein Präemptions-Wiederherstellungsmodul umfasst, das einen Kontext, dem ein anderer vorgezogen wurde, wiederherstellen kann.
  • Beispiel 8 kann das System eines der Beispiele 1, 2, 4 oder 5 beinhalten, welches ferner ein Unterbrechungs-Wiederherstellungsmodul umfasst, das einen Kontext, der vorübergehend unterbrochen worden ist, wiederherstellen kann.
  • Beispiel 9 kann das System eines der vorhergehenden Beispiele beinhalten, welches ferner einen dreidimensionalen (3D-)Grafikprozessor umfasst.
  • Beispiel 10 kann ein Verfahren beinhalten, welches Übermitteln eines ersten Kontextes an einen ersten Port, der für Kontexte mit einer ersten Priorität bestimmt ist, Übermitteln des ersten Kontextes an eine Pipeline, Übermitteln eines zweiten Kontextes an einen zweiten Port, der für Kontexte mit einer zweiten Priorität bestimmt ist, und Unterbrechen des ersten Kontextes, bevor seine Verarbeitung in der Pipeline abgeschlossen ist, umfasst.
  • Beispiel 11 kann das Verfahren von Beispiel 10 beinhalten, welches ferner das Erkennen der Übermittlung des Kontextes an den zweiten Port umfasst.
  • Beispiel 12 kann das Verfahren von Beispiel 10 beinhalten, welches ferner das Kopieren eines Zustands und von nicht fertiggestellter Arbeit des ersten Kontextes in einen On-Chip-Speicher und danach das Übermitteln des zweiten Kontextes an die Pipeline umfasst.
  • Beispiel 13 kann das Verfahren von Beispiel 12 beinhalten, welches ferner das Fortsetzen der Verarbeitung des ersten Kontextes, nachdem die Verarbeitung des zweiten Kontextes abgeschlossen ist, umfasst.
  • Beispiel 14 kann das Verfahren eines der Beispiele 10–13 beinhalten, welches ferner umfasst, nachdem ein Kontext an den ersten Port übermittelt worden ist, diesen einem Kontext in der Pipeline vorzuziehen.
  • Beispiel 15 kann mindestens ein computerlesbares Speichermedium beinhalten, welches einen Satz Anweisungen umfasst, die, wenn sie von einer Datenverarbeitungsvorrichtung ausgeführt werden, bewirken, dass die Datenverarbeitungsvorrichtung einen ersten Kontext an einen ersten Port übermittelt, der für Kontexte mit einer ersten Priorität bestimmt ist, den ersten Kontext an eine Pipeline übermittelt, einen zweiten Kontext an einen zweiten Port übermittelt, der für Kontexte mit einer zweiten Priorität bestimmt ist, und den ersten Kontext unterbricht, bevor seine Verarbeitung in der Pipeline abgeschlossen ist.
  • Beispiel 16 kann das mindestens eine computerlesbares Speichermedium von Beispiel 15 beinhalten, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass die Datenverarbeitungsvorrichtung die Übermittlung eines Kontextes an den zweiten Port erkennt.
  • Beispiel 17 kann das mindestens eine computerlesbares Speichermedium von Beispiel 15 beinhalten, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung den Zustand und nicht fertiggestellte Arbeit des ersten Kontextes in einen On-Chip-Speicher kopiert und danach den zweiten Kontext an die Pipeline übermittelt.
  • Beispiel 18 kann das mindestens eine computerlesbares Speichermedium eines der Beispiele 15–17 beinhalten, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung die Verarbeitung des ersten Kontextes fortsetzt, nachdem die Verarbeitung des zweiten Kontextes abgeschlossen ist.
  • Beispiel 19 kann das mindestens eine computerlesbares Speichermedium eines der Beispiele 15–17 beinhalten, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung, nachdem ein Kontext an den ersten Port übermittelt worden ist, diesen einem Kontext in der Pipeline vorzieht.
  • Beispiel 20 kann eine Vorrichtung beinhalten, welche einen ersten Port zum Empfangen von Kontexten einer ersten Priorität, einen zweiten Port zum Empfangen von Kontexten einer zweiten Priorität, eine Pipeline zum Verarbeiten von Kontexten, ein Kontextdetektionsmodul zum Erkennen der Übermittlung von Kontexten an die Ports, ein Scheduler-Modul zum Senden von Kontexten an die Pipeline und ein Unterbrechungsmodul zum Unterbrechen der Pipelineverarbeitung von an dem ersten Port empfangenen Kontexten zugunsten von an dem zweiten Port empfangenen Kontexten umfasst.
  • Beispiel 21 kann die Vorrichtung von Beispiel 20 beinhalten, welche ferner einen On-Chip-Speicher zum Speichern des Zustands mindestens eines der Kontexte umfasst.
  • Beispiel 22 kann die Vorrichtung von Beispiel 20 beinhalten, welche ferner ein Wiederherstellungsmodul zum Wiederherstellen eines Kontextes in der Pipeline umfasst.
  • Beispiel 23 kann die Vorrichtung eines der Beispiele 20 oder 21 beinhalten, welche ferner Speicher zum Speichern von Kontexte betreffenden Zustandsinformationen umfasst.
  • Beispiel 24 kann die Vorrichtung von Beispiel 20 beinhalten, welche ferner eine Grafikverarbeitungseinheit umfasst.
  • Beispiel 25 kann die Vorrichtung eines der Beispiele 20–22 beinhalten, welche ferner ein Wiederherstellungsmodul für unterbrochene Kontexte zum Fortsetzen der Verarbeitung eines unterbrochenen Kontextes nach dem Abschluss der Verarbeitung eines an den zweiten Port übermittelten Kontextes umfasst.
  • Beispiel 26 kann eine Vorrichtung beinhalten, welche eine Pipeline, einen ersten Port zum Übermitteln von Kontexten einer ersten Priorität, einen zweiten Port zum Übermitteln von Kontexten einer zweiten Priorität, Mittel zum Erkennen der Übermittlung eines Kontextes an den zweiten Port und Mittel zum Unterbrechen eines Kontextes in der Pipeline, nachdem die Übermittlung eines Kontextes an den zweiten Port erkannt worden ist, umfasst.
  • Beispiel 27 kann die Vorrichtung von Beispiel 26 beinhalten, wobei die Mittel zum Unterbrechen des Kontextes in Software implementiert sind.
  • Beispiel 28 kann die Vorrichtung von Beispiel 26 beinhalten, wobei die Mittel zum Unterbrechen des Kontextes in Hardware implementiert sind.
  • Beispiel 29 kann die Vorrichtung von Beispiel 26 beinhalten, welche ferner einen On-Chip-Speicher umfasst, in welchem der Zustand eines Kontextes mit einer ersten Priorität gespeichert wird.
  • Beispiel 30 kann die Vorrichtung der Beispiele 26 oder 29 beinhalten, welche ferner Speicher umfasst, in welchem der Zustand eines Kontextes mit einer zweiten Priorität gespeichert werden soll.
  • Beispiel 31 kann die Vorrichtung von Beispiel 26 beinhalten, welche ferner Speicher zum Speichern des Zustands eines an einen der Ports übermittelten Kontextes und ein Modul zum Fortsetzen der Verarbeitung eines unterbrochenen Kontextes umfasst.
  • Beispiel 32 kann die Vorrichtung eines der Beispiele 26–29 beinhalten, welche ferner Mittel umfasst, um, nachdem ein Kontext an den ersten Port übermittelt worden ist, diesen einem Kontext in der Pipeline vorzuziehen.
  • Beispiel 33 kann die Vorrichtung von Beispiel 32 beinhalten, welche ferner Mittel zum Wiederherstellen eines Kontextes, dem ein anderer vorgezogen worden ist, umfasst.
  • Beispiel 34 kann die Vorrichtung von Beispiel 26 beinhalten, welche ferner Mittel zum Wiederherstellen eines Kontextes, welcher unterbrochen worden ist, umfasst.
  • Beispiel 35 kann die Vorrichtung von Beispiel 26 beinhalten, welche ferner mehrere Pipelines umfasst.
  • Beispiel 36 kann ein Verfahren zum Priorisieren von Aufgaben, die durch einen Prozessor zu verarbeiten sind, beinhalten, welches umfasst: Bereitstellen eines ersten und eines zweiten Ports, welche Aufgaben eines niedrigeren bzw. höheren Grades der Verarbeitungspriorität entsprechen, Weiterleiten von an den ersten Port übermittelten Aufgaben niedrigerer Priorität an eine Pipeline, Vorziehen vor einer eventuellen Aufgabe niedrigerer Priorität, die gegenwärtig in der Pipeline ausgeführt wird, durch Entleeren der Pipeline von allen solchen eventuell in ihr befindlichen Aufgaben niedrigerer Priorität, wenn eine Aufgabe an den ersten Port übermittelt wird, und Übermitteln einer Aufgabe an ihrer Stelle, welche an den ersten Port übermittelt worden ist, und Unterbrechen aller eventuell in der Pipeline befindlichen Aufgaben niedrigerer Priorität, wenn eine Aufgabe an den zweiten Port übermittelt wird, und Übermitteln einer an den zweiten Port übermittelten Aufgabe an ihrer Stelle.
  • Beispiel 37 kann das Verfahren von Beispiel 36 beinhalten, wobei die an den zweiten Port übermittelte Aufgabe Grafik umfasst.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beidem implementiert sein. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuits, ASIC), programmierbare Logikbausteine (Programmable Logic Devices, PLD), digitale Signalprozessoren (DSP), feldprogrammierbare Gatteranordnungen (Field Programmable Gate Arrays, FPGAs), Logikgatter, Register, Halbleiterbauelemente, Chips, Mikrochips, Chipsätze und so weiter umfassen. Beispiele für Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (Application Program Interfaces, API), Anweisungssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder beliebige Kombinationen davon umfassen. Das Bestimmen, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann gemäß einer beliebigen Anzahl von Faktoren variieren, wie etwa gewünschter Rechengeschwindigkeit, Leistungspegeln, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingabedatenraten, Ausgabedatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und anderen Design- und Leistungsvorgaben.
  • Ein oder mehrere Aspekt(e) mindestens einer Ausführungsform können durch repräsentative Anweisungen implementiert sein, die auf einem maschinenlesbaren Medium gespeichert sind, welches diverse Logik innerhalb des Prozessors darstellt, und die, wenn sie durch eine Maschine ausgelesen werden, die Maschine veranlassen, Logik zu erstellen, um die hierin beschriebenen Techniken auszuführen. Solche Darstellungen, die „IP-Kerne” genannt werden, können auf einem gegenständlichen, maschinenlesbaren Medium gespeichert sein und an verschiedene Kunden oder Produktionsstätten geliefert werden, um sie in die Fertigungsmaschinen zu laden, welche die Logik oder den Prozessor tatsächlich herstellen.
  • Ausführungsformen sind für eine Verwendung mit allen Typen von Halbleiterchips für integrierte Schaltkreise (Integrated Circuits, ICs) anwendbar. Zu den Beispielen solcher IC-Chips gehören unter anderem Prozessoren, Steuereinrichtungen, Chipsatzkomponenten, programmierbare logische Anordnungen (Programmable Logic Arrays, PLAs), Speicherchips, Netzchips und Ähnliches. Zusätzlich sind in einigen der Zeichnungen Signalleiterleitungen durch Linien dargestellt. Einige davon können dicker sein, um mehrere einzelne Signalwege darzustellen, eine Nummernbezeichnung aufweisen, um eine Anzahl der einzelnen Signalwege anzugeben, und/oder an einem oder mehreren Enden Pfeile aufweisen, um die Hauptrichtung des Informationsflusses anzugeben. Dies sollte jedoch nicht als einschränkend ausgelegt werden. Vielmehr können solche zusätzlichen Details in Verbindung mit einer oder mehreren beispielhaften Ausführungsformen verwendet werden, um ein leichteres Verständnis einer Schaltung zu ermöglichen. Die dargestellten Signalleitungen können, unabhängig davon, ob sie zusätzliche Informationen aufweisen oder nicht, tatsächlich eines oder mehrere Signale umfassen, das/die in mehrere Richtungen übertragen werden kann/können, und können mit irgendeinem geeigneten Typ von Signalschema ausgeführt werden, z. B. mit digitalen oder analogen Leitungen, die mit Differentialpaaren, Glasfaserleitungen und/oder Leitungen mit einseitigem Abschluss implementiert sind.
  • Möglicherweise wurden Beispiele für Größen/Modelle/Werte/Bereiche angegeben, obwohl die Ausführungsformen nicht auf diese beschränkt sind. Da die Herstellungstechniken (z. B. Fotolithografie) mit der Zeit immer ausgereifter werden, ist zu erwarten, dass Geräte mit geringerer Größe hergestellt werden könnten. Außerdem sind wohlbekannte Strom/Erdungsverbindungen mit IC-Chips und anderen Komponenten um der Einfachheit der Darstellung und Erörterung willen, sowie um die Verständlichkeit bestimmter Aspekte der Ausführungsformen nicht zu beeinträchtigen, möglicherweise nicht in den Abbildungen dargestellt. Ferner können Anordnungen in Form von Blockschaltbildern dargestellt sein, um zu vermeiden, dass die Verständlichkeit von Ausführungsformen beeinträchtigt wird, und auch im Hinblick auf die Tatsache, dass spezifische Merkmale in Bezug auf die Implementierung solcher Anordnungen von Blockschaltbildern in hohem Maße von der Plattform abhängig sind, in der die Ausführungsform implementiert werden soll, d. h. solche spezifischen Merkmale sollten innerhalb des Kenntnisbereichs eines Fachmanns auf diesem Gebiet liegen. Dort, wo spezifische Einzelheiten (z. B. Schaltungen) dargelegt werden, um beispielhafte Ausführungsformen zu beschreiben, sollte für den Fachmann klar sein, dass Ausführungsformen ohne diese oder mit Abänderungen dieser spezifischen Einzelheiten in die Praxis umgesetzt werden können. Daher ist die Beschreibung als veranschaulichend und nicht als einschränkend anzusehen.
  • Einige Ausführungsformen können zum Beispiel unter Verwendung eines maschinenlesbaren oder materiellen computerlesbaren Mediums oder Produkts implementiert sein, das bzw. der eine Anweisung oder einen Satz von Anweisungen speichern kann, welcher bei Ausführung durch eine Maschine die Maschine veranlassen kann, ein Verfahren und/oder Operationen gemäß den Ausführungsformen auszuführen. Eine solche Maschine kann zum Beispiel eine beliebige geeignete Verarbeitungsplattform, Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, ein Rechensystem, Verarbeitungssystem, einen Computer, Prozessor oder Ähnliches umfassen und kann unter Verwendung irgendeiner geeigneten Kombination von Hardware und/oder Software implementiert sein. Das maschinenlesbare Medium oder Produkt kann zum Beispiel jede geeignete Art von Arbeitsspeichereinheit, Arbeitsspeichervorrichtung, Arbeitsspeicherprodukt, Arbeitsspeichermedium, Datenspeichervorrichtung, Datenspeicherprodukt, Datenspeichermedium und/oder Datenspeichereinheit sein, zum Beispiel Arbeitsspeicher, Wechsel- oder Nichtwechselmedien, löschbare oder nichtlöschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatten, Disketten, CD-ROMs (Compact Disk Read-Only Memories), CD-Rs (Compact Disks Recordable), CD-RWs (Compact Disks Rewritable), optische Platten, magnetische Medien, magneto-optische Medien, Wechselspeicherkarten oder -platten, verschiedene Arten von DVDs (Digital Versatile Disks), von Bändern, Kassetten oder dergleichen sein. Die Anweisungen können jede geeignete Art von Code, wie etwa Quellcode, kompilierter Code, interpretierter Code, ausführbarer Code, statischer Code, dynamischer Code, verschlüsselter Codes und dergleichen, umfassen, der unter Verwendung irgendeiner geeigneten höheren, niederen, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert ist.
  • Sofern nicht ausdrücklich anders angegeben, versteht es sich, dass sich Begriffe wie „Verarbeiten”, „Rechnen”, „Berechnen”, „Bestimmen” oder dergleichen auf die Aktion und/oder die Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Datenverarbeitungsvorrichtung beziehen, die als physikalische Größen dargestellte Daten (zum Beispiel elektronische) innerhalb der Register und/oder Speicher des Rechensystems handhabt und/oder in andere Daten umwandelt, die auf ähnliche Weise als physikalische Größen innerhalb der Speicher, Register oder anderen derartigen Informationsspeicher-, Übertragungs- oder Anzeigevorrichtungen des Rechensystems dargestellt sind. Die Ausführungsformen sind in diesem Zusammenhang nicht beschränkt.
  • Der Begriff „gekoppelt” bzw. „verbunden” kann hier verwendet werden, um irgendeine Art von direkter oder indirekter Beziehung zwischen den betreffenden Komponenten zu bezeichnen, und elektrische, mechanische, fluide, optische, elektromagnetische, elektromechanische oder andere Verbindungen bezeichnen. Weiterhin werden die Begriffe „erste(r/s)”, „zweite(r/s)” usw. hier nur verwendet, um die Erläuterung zu vereinfachen, und haben keine bestimmte zeitliche oder chronologische Bedeutung, sofern nicht anders angegeben.
  • Fachleute auf diesem Gebiet werden aus der vorstehenden Beschreibung erkennen, dass die umfassenden Techniken der Ausführungsformen in vielfältigen Formen implementiert werden können. Daher soll, obwohl die Ausführungsformen in Verbindung mit bestimmten Beispielen derselben beschrieben wurden, der tatsächliche Schutzumfang der Ausführungsformen nicht auf diese beschränkt sein, da für den Fachmann nach dem Studium der Zeichnungen, der Beschreibung und der folgenden Ansprüche weitere Modifikationen offensichtlich sind.

Claims (25)

  1. System, welches umfasst: einen Prozessor; eine Pipeline; einen ersten Port zum Empfangen eines Kontextes mit einer ersten Priorität; einen zweiten Port zum Empfangen eines Kontextes mit einer zweiten Priorität, welche höher als die erste Priorität ist; ein Detektionsmodul für Kontexte der zweiten Priorität zum Erkennen des Empfangs des Kontextes mit der zweiten Priorität an dem zweiten Port; und ein Unterbrechungsmodul zum Unterbrechen eines Kontextes in der Pipeline, nachdem das Detektionsmodul für Kontexte der zweiten Priorität den Empfang des Kontextes mit der zweiten Priorität an dem zweiten Port erkannt hat.
  2. System nach Anspruch 1, welches ferner einen On-Chip-Speicher zum Speichern eines Zustands wenigstens eines der Kontexte aufweist, wobei sich der On-Chip-Speicher und der Prozessor auf einem gemeinsamen Chip befinden.
  3. System nach Anspruch 2, welches ferner ein Wiederherstellungsmodul zum Wiederherstellen eines unterbrochenen Kontextes, nachdem der Kontext mit der zweiten Priorität abgeschlossen ist, umfasst.
  4. System nach Anspruch 3, wobei mindestens eines der Module in Software implementiert ist.
  5. System nach Anspruch 1, wobei das Unterbrechungsmodul in Hardware implementiert ist.
  6. System nach Anspruch 1 oder 2, welches ferner ein Präemptionsmodul umfasst, um, nachdem der Kontext mit der ersten Priorität an den ersten Port übermittelt worden ist, diesen einem Kontext in der Pipeline vorzuziehen.
  7. System nach einem der Ansprüche 1–5, welches ferner ein Präemptions-Wiederherstellungsmodul zum Wiederherstellen eines Kontextes, dem ein anderer vorgezogen wurde, umfasst.
  8. System nach einem der Ansprüche 1, 2, 4 oder 5, welches ferner ein Unterbrechungs-Wiederherstellungsmodul zum Wiederherstellen eines Kontextes, der unterbrochen wurde, umfasst.
  9. System nach Anspruch 1, welches einen dreidimensionalen (3D-)Grafikprozessor umfasst.
  10. Verfahren, welches umfasst: Übermitteln eines ersten Kontextes an einen ersten Port, der für Kontexte mit einer ersten Priorität bestimmt ist; Übermitteln des ersten Kontextes an eine Pipeline; Übermitteln eines zweiten Kontextes an einen zweiten Port, der für Kontexte mit einer zweiten Priorität bestimmt ist; und Unterbrechen des ersten Kontextes, bevor seine Verarbeitung in der Pipeline abgeschlossen ist.
  11. Verfahren nach Anspruch 10, welches ferner das Erkennen der Übermittlung des zweiten Kontextes zu dem zweiten Port umfasst.
  12. Verfahren nach Anspruch 10, welches ferner das Kopieren eines Zustands und von nicht fertiggestellter Arbeit des ersten Kontextes in einen On-Chip-Speicher und danach das Übermitteln des zweiten Kontextes an die Pipeline umfasst.
  13. Verfahren nach Anspruch 12, welches ferner das Fortsetzen der Verarbeitung des ersten Kontextes, nachdem die Verarbeitung des zweiten Kontextes abgeschlossen ist, umfasst.
  14. Verfahren nach einem der Ansprüche 10–13, welches ferner umfasst, nachdem ein Kontext an den ersten Port übermittelt worden ist, diesen einem Kontext in der Pipeline vorzuziehen.
  15. Mindestens ein computerlesbares Speichermedium, welches einen Satz Anweisungen umfasst, die, wenn sie von einer Datenverarbeitungsvorrichtung ausgeführt werden, bewirken, dass die Datenverarbeitungsvorrichtung: einen ersten Kontext an einen ersten Port übermittelt, der für Kontexte mit einer ersten Priorität bestimmt ist; den ersten Kontext an eine Pipeline übermittelt; einen zweiten Kontext an einen zweiten Port übermittelt, der für Kontexte mit einer zweiten Priorität bestimmt ist; und den ersten Kontext unterbricht, bevor seine Verarbeitung in der Pipeline abgeschlossen ist.
  16. Mindestens ein computerlesbares Speichermedium nach Anspruch 15, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung die Übermittlung des zweiten Kontextes zu dem zweiten Port erkennt.
  17. Mindestens ein computerlesbares Speichermedium nach Anspruch 15, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung einen Zustand und nicht fertiggestellte Arbeit des ersten Kontextes in einen On-Chip-Speicher kopiert und danach den zweiten Kontext an die Pipeline übermittelt.
  18. Mindestens ein computerlesbares Speichermedium nach den Ansprüchen 15–17, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung die Verarbeitung des ersten Kontextes fortsetzt, nachdem die Verarbeitung des zweiten Kontextes abgeschlossen ist.
  19. Mindestens ein computerlesbares Speichermedium nach den Ansprüchen 15–17, wobei die Anweisungen, wenn sie ausgeführt werden, bewirken, dass eine Datenverarbeitungsvorrichtung, nachdem ein Kontext an den ersten Port übermittelt worden ist, diesen einem Kontext in der Pipeline vorzieht.
  20. Vorrichtung, welche umfasst: einen ersten Port zum Empfangen von Kontexten einer ersten Priorität; einen zweiten Port zum Empfangen von Kontexten einer zweiten Priorität; eine Pipeline zum Verarbeiten von Kontexten; ein Kontextdetektionsmodul zum Erkennen der Übermittlung von Kontexten an die Ports; ein Scheduler-Modul zum Senden von Kontexten an die Pipeline; und ein Unterbrechungsmodul zum Unterbrechen der Pipelineverarbeitung von an dem ersten Port empfangenen Kontexten zugunsten von an dem zweiten Port empfangenen Kontexten.
  21. Vorrichtung nach Anspruch 20, welche ferner einen On-Chip-Speicher zum Speichern eines Zustands mindestens eines der Kontexte umfasst.
  22. Vorrichtung nach Anspruch 20, welche ferner ein Wiederherstellungsmodul zum Wiederherstellen eines Kontextes in der Pipeline umfasst.
  23. Vorrichtung nach Anspruch 20 oder 21, welche ferner Speicher zum Speichern von Kontexte betreffenden Zustandsinformationen umfasst.
  24. Vorrichtung nach Anspruch 20, welche ferner eine Grafikverarbeitungseinheit umfasst.
  25. Vorrichtung nach einem der Ansprüche 20–22, welche ferner ein Wiederherstellungsmodul für unterbrochene Kontexte zum Fortsetzen der Verarbeitung eines unterbrochenen Kontextes nach dem Abschluss der Verarbeitung eines an den zweiten Port übermittelten Kontextes umfasst.
DE102015002365.9A 2014-03-27 2015-02-25 Prioritätsbasierte kontextpräemption Pending DE102015002365A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/227,692 2014-03-27
US14/227,692 US9396032B2 (en) 2014-03-27 2014-03-27 Priority based context preemption

Publications (1)

Publication Number Publication Date
DE102015002365A1 true DE102015002365A1 (de) 2015-10-15

Family

ID=54166027

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015002365.9A Pending DE102015002365A1 (de) 2014-03-27 2015-02-25 Prioritätsbasierte kontextpräemption

Country Status (5)

Country Link
US (1) US9396032B2 (de)
KR (1) KR101666416B1 (de)
CN (1) CN104951358B (de)
DE (1) DE102015002365A1 (de)
TW (1) TWI546737B (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9927784B2 (en) * 2014-12-04 2018-03-27 At&T Intellectual Property I, L.P. Ubiquitous computing methods and apparatus
US9842376B2 (en) * 2015-09-29 2017-12-12 Qualcomm Incorporated Graphics processing unit preemption with pixel tile level granularity
US10134103B2 (en) * 2015-10-23 2018-11-20 Qualcomm Incorporated GPU operation algorithm selection based on command stream marker
US10176548B2 (en) * 2015-12-18 2019-01-08 Ati Technologies Ulc Graphics context scheduling based on flip queue management
US10210593B2 (en) * 2016-01-28 2019-02-19 Qualcomm Incorporated Adaptive context switching
US10163184B2 (en) * 2016-08-17 2018-12-25 Adobe Systems Incorporated Graphics performance for complex user interfaces
US10929944B2 (en) * 2016-11-23 2021-02-23 Advanced Micro Devices, Inc. Low power and low latency GPU coprocessor for persistent computing
US10026145B2 (en) 2016-12-13 2018-07-17 Qualcomm Incorporated Resource sharing on shader processor of GPU
US10373287B2 (en) 2017-08-18 2019-08-06 Apple Inc. Fast GPU context switch
US11609791B2 (en) * 2017-11-30 2023-03-21 Advanced Micro Devices, Inc. Precise suspend and resume of workloads in a processing unit
CN109936604B (zh) * 2017-12-18 2022-07-26 北京图森智途科技有限公司 一种资源调度方法、装置和系统

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5592678A (en) * 1991-07-23 1997-01-07 International Business Machines Corporation Display adapter supporting priority based functions
CA2073516A1 (en) * 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
KR100214644B1 (ko) * 1996-12-31 1999-08-02 구자홍 프로세서의 메모리 다중 액세스 회로
US6671795B1 (en) * 2000-01-21 2003-12-30 Intel Corporation Method and apparatus for pausing execution in a processor or the like
US6738675B2 (en) * 2000-12-30 2004-05-18 Intel Corporation Method, apparatus, and system to reduce microprocessor power dissipation
US6915414B2 (en) * 2001-07-20 2005-07-05 Zilog, Inc. Context switching pipelined microprocessor
US7434223B2 (en) * 2003-05-22 2008-10-07 Agere Systems Inc. System and method for allowing a current context to change an event sensitivity of a future context
US8547339B2 (en) 2008-01-04 2013-10-01 Tactus Technology, Inc. System and methods for raised touch screens
EP2356567A2 (de) * 2008-12-08 2011-08-17 Kpit Cummins Infosystems Ltd. Verfahren zur neuorganisation von aufgaben zur ressourcenoptimierung
US8949838B2 (en) * 2009-04-27 2015-02-03 Lsi Corporation Multi-threaded processing with hardware accelerators
US9063561B2 (en) * 2009-05-06 2015-06-23 Avago Technologies General Ip (Singapore) Pte. Ltd. Direct memory access for loopback transfers in a media controller architecture
US8578138B2 (en) * 2009-08-31 2013-11-05 Intel Corporation Enabling storage of active state in internal storage of processor rather than in SMRAM upon entry to system management mode
US20130019052A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Effective utilization of flash interface
US20130070513A1 (en) * 2011-09-16 2013-03-21 Advanced Micro Devices, Inc. Method and apparatus for direct backup of memory circuits
US8719507B2 (en) 2012-01-04 2014-05-06 International Business Machines Corporation Near neighbor data cache sharing
US9524263B2 (en) * 2012-06-29 2016-12-20 Intel Corporation Method and apparatus for bus lock assistance
US9104421B2 (en) * 2012-07-30 2015-08-11 Nvidia Corporation Training, power-gating, and dynamic frequency changing of a memory controller
US9710874B2 (en) * 2012-12-27 2017-07-18 Nvidia Corporation Mid-primitive graphics execution preemption
US9703708B2 (en) * 2013-09-27 2017-07-11 Intel Corporation System and method for thread scheduling on reconfigurable processor cores
US10026714B2 (en) * 2014-02-14 2018-07-17 Nxp Usa, Inc. Integrated circuit device

Also Published As

Publication number Publication date
TW201537459A (zh) 2015-10-01
US20150277981A1 (en) 2015-10-01
US9396032B2 (en) 2016-07-19
TWI546737B (zh) 2016-08-21
CN104951358B (zh) 2019-01-22
KR101666416B1 (ko) 2016-10-14
CN104951358A (zh) 2015-09-30
KR20150112771A (ko) 2015-10-07

Similar Documents

Publication Publication Date Title
DE102015002365A1 (de) Prioritätsbasierte kontextpräemption
DE102015002218B4 (de) Vermeiden des Sendens unveränderlicher Gebiete zur Anzeige
US10241799B2 (en) Out-of-order command execution with sliding windows to maintain completion statuses
DE102019103340A1 (de) Simultanes rechen- und grafik-scheduling
DE102015002366A1 (de) Systemkohärenz in einer verteilten Graphikprozessorhierarchie
DE102013114279A1 (de) Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung
DE112013004078T5 (de) Gemeinsame Speichernutzung über eine vereinheitlichte Speicherarchitektur
DE102016122716A1 (de) Arbeitsbereichsübergänge in einer erweiterten Realität, basierend auf einem kontextuellen Umfeld
DE112012007037T5 (de) Verarbeiten von Videoinhalt
DE102019127726A1 (de) Für fernarbeitsplatz-anwendungen geeignetes streaming individueller anwendungsfenster
DE112013004618T5 (de) Tiefenpufferung
DE112011105901T5 (de) Verfahren und Vorrichtung zur Energieeinsparung für First In First Out (FIF0)-Speicher
DE102015006750A1 (de) Abtasten, fehlerverwaltung und/oder kontextwechsel über eine rechnerpipeline
DE102020132377A1 (de) Vorrichtung und Verfahren zur Drosselung einer Raytracing-Pipeline
DE112017004077T5 (de) Einrichtung und verfahren für optimiertes kachelbasiertes rendering
DE102015002023A1 (de) Kompakte Tiefenebenendarstellung zum Sortieren letzter Architekturen
DE112013005204T5 (de) Verringern des mit Frequenzänderungen von Prozessoren verbundenen Aufwands
DE102022129924A1 (de) Inhaltsfidelitätsanpassung basierend auf benutzerinteraktion
DE112016005989T5 (de) Zuverlässiges, ausserhalb der reihenfolge liegendes end-to-end-protokoll mit robustem fensterstatusüberlaufmanagement und einem mehrknotensystem durch verwenden desselben
DE112012006970T5 (de) Verteilte Grafikverarbeitung
DE102019133561A1 (de) System und Verfahren zur Detektion von Änderungen gerenderter Szenen mit ferngehosteten Graphikanwendungen
DE102021125897A1 (de) History-blockieren zum entrauschen dynamischer raytracing-szenen unter verwendung zeitlicher anhäufung
DE102016121634A1 (de) Darstellung von Informationen basierend darauf, ob ein Nutzer in physischem Kontakt mit einem Gerät ist
DE112022001485T5 (de) Verfahren und einrichtungen zum synthetisieren von ansichten mit sechs freiheitsgraden aus spärlichen rgb-tiefe-eingaben
DE112011106035T5 (de) Anzeigesteuerungs-Unterbrechungsregister

Legal Events

Date Code Title Description
R012 Request for examination validly filed