-
HINTERGRUND
-
Technisches Gebiet
-
Diese Offenbarung bezieht sich auf Anzeige-Pipelines und insbesondere auf die mit Anzeige-Pipelines verbundene Energieverwaltung.
-
Beschreibung der verwandten Technik
-
Mit der zunehmenden Energie und Komplexität von Computersystemen werden grafische Vorgänge mehr und mehr mithilfe bestimmter Grafik-Rendering-Hardware ausgeführt. Entsprechend kann ein Grafikprozessor (GPU) verschiedene eingebaute und konfigurierbare Strukturen innerhalb einer Grafikpipeline beinhalten, um Bilder von Pixeldaten zu rendern, die über eine Anzeige dargestellt werden sollen. Diese Strukturen können verschiedene Pipeline-Phasen beinhalten, die zum Beispiel der Rasterung, dem Überlagern, Mischen, Ausschneiden, Dithering, der Farbraumkonvertierung, Rasterdrehung, Bild-Zwischenspeicherung, usw. entsprechen.
-
In einigen Fällen kann eine Anzeige-Pipeline auch bestimmte Strukturen zum Skalieren von Bildern beinhalten, wie zum Beispiel auf eine native Auflösung eines Ausgabegeräts. Die Strukturen können skalierende Vorgänge beinhalten, die lineare Transformationen zum Hochskalieren oder Herunterskalieren von Bilddaten ausführen. Dieses Skalieren kann horizontales und/oder vertikales Skalieren beinhalten.
-
Aus dem Whitepaper „NVIDIA Tegra 4 Family GPU Architecture“, http://www.nvidia.com/docs/10//116757/Tegra_4_GPU_Whitepaper_FINALv2.pdf, 2013-02-15, sind Architekturen von Grafikprozessoren bekannt.
-
Aus der Druckschrift
US 6 894 706 B1 ist eine automatische Auflösungsdetektion bekannt.
-
Aus der Druckschrift
US 7 802 118 B1 ist Clock-Gating auf Funktionsblockebene innerhalb eines Grafikprozessors bekannt.
-
Aufgabe der Erfindung ist es, die Energieverwaltung von Grafikpipeline zu verbessern.
-
ZUSAMMENFASSUNG
-
Die vorliegende Offenbarung beschreibt Ausführungsformen, in denen die Energieverwaltung auf der Basis des Betriebs eines Anzeigezwischenspeichers ausgeführt wird. In einer Ausführungsform speichert der Anzeigezwischenspeicher Bildquellzeilen (z. B. horizontale und vertikale Bildzeilen), die vom Speicher für eine Anzeige-Pipeline abgerufen werden, die die Quellzeilen zum Rendern der Bilder für eine Anzeige verwendet. Zum Beispiel kann die Grafikpipeline einzelne Zeilen häufiger abrufen, wenn es skaliert, und holt Blocks eventuell seltener, wenn es nicht skaliert.
-
In verschiedenen Ausführungsformen können ein oder mehrere Schaltungen abhängig davon, ob mehrere oder einzelne Bildquellzeilen für den Anzeigezwischenspeicher abgerufen werden, energieverwaltet werden. In einigen Ausführungsformen können diese Schaltungen eine Datenübertragungskopplung beinhalten, die die Bildquellzeilen vom Speicher auf den Anzeigezwischenspeicher überträgt, einen Speicher-Controller des Speichers, der die Bildquellzeilen speichert, usw. Entsprechend können in einer Ausführungsform, wenn Bildquellzeilenblocks abgerufen werden, diese Schaltungen heruntergefahren werden (d. h. ihre Leistung kann reduziert werden), wenn sie zwischen dem Abrufen der Quellzeilen inaktiv sind. Nach Empfangen einer Anfrage, weitere Quellzeilen abzurufen, können sie wieder hochgefahren werden. In vielen Fällen können energieverwaltende Schaltungen auf diese Weise Energieeinsparungen erzielen, ohne die Leistung ausreichend zu gefährden.
-
Figurenliste
-
- 1 ist ein Blockdiagramm, das eine Ausführungsform eines Computersystems darstellt.
- 2 ist ein Blockdiagramm, das eine Ausführungsform einer Grafikpipeline innerhalb eines Computersystems darstellt.
- 3 ist ein Blockdiagramm, das eine Ausführungsform von Komponenten innerhalb einer Grafikpipeline darstellt.
- 4 ist ein Ablaufdiagramm, das eine Ausführungsform eines Verfahrens zum Empfangen von Bilddaten darstellt.
- 5 ist ein Ablaufdiagramm, das eine Ausführungsform eines Verfahrens zum Herunterfahren einer Datenübertragungskopplung darstellt.
- 6 ist ein Ablaufdiagramm, das eine Ausführungsform eines Verfahrens zum Betreiben der Grafikpipeline in verschiedenen Betriebsmodi darstellt.
-
Verschiedene Einheiten, Schaltungen oder andere Komponenten in dieser Offenbarung können als „konfiguriert“ für das Ausführen einer Aufgabe oder von Aufgaben beschrieben oder beansprucht werden. In diesen Zusammenhängen wird „konfiguriert“ verwendet, eine Struktur näher zu bezeichnen, indem angegeben wird, ob die Einheiten/Schaltungen/Komponenten eine Struktur (z. B. eine Schaltung) beinhalten, die diese Aufgabe(n) während des Betriebs ausführt. Somit kann man sagen, dass die Einheit/Schaltung/Komponente dafür ausgelegt ist, die Aufgabe auszuführen, auch wenn die bezeichnete Einheit/Schaltung/Komponente zurzeit nicht in Betrieb ist (z. B. nicht eingeschaltet ist). Die Einheiten/Schaltungen/Komponenten, die mit dem Ausdruck „konfiguriert“ verwendet werden, beinhalten Hardware - zum Beispiel Schaltungen, Speicher, in dem Programmbefehle hinterlegt sind, die ausführbar sind, um den Betrieb zu implementieren, usw.
-
DETAILLIERTE BESCHREIBUNG
-
In 1 ist ein Blockdiagramm einer Ausführungsform eines Systems 100 gezeigt. Wie dargestellt, beinhaltet das System 100 verschiedene Komponenten, wie z. B. eine Prozessoreinheit 108, einen Speicher 106, ein Festkörperbauteil 112, eine Anzeigeeinheit 110 und ein Gefüge 102. Das System 100 kann sich auf jedes geeignete Computersystem beziehen. Entsprechend kann das System 100 in einigen Ausführungsformen ein Mobilgerät sein (z. B. ein Mobiltelefon, ein Tablet, ein Personal Data Assistant (PDA), usw.), ein Desktop-Computersystem, ein Server-System, ein Netzwerkgerät (z. B. Router, Gateway, usw.), ein Mikro-Controller, usw. In einer Ausführungsform können mehrere Komponenten des Systems 100 zusammen in einem System auf einem Chip beinhaltet sein (d. h. eine integrierte Schaltung, die Komponenten eines Computers in eine integrierte Schaltung einbindet).
-
In einigen Ausführungsformen ist das System 100 konfiguriert, um Videos und Bilder auf einem Bildschirm, der mit dem System 100 verkoppelt ist, zu rendern. Entsprechend umfasst in verschiedenen Ausführungsformen das System 100 spezialisierte Schaltungen, die vor dem Rendern einer Anzeige für die Bearbeitung und Handhabung von Grafikdaten bestimmt sind.
-
Zudem ist das System 100 konfiguriert, energieverwaltet zu werden. Entsprechend kann das System 100 in verschiedenen Ausführungsformen die Energiezufuhr ausschalten und/oder veranlassen, dass eine oder mehrere Schaltungen oder das Gefüge (d. h. Gefüge 102) einen energieverwalteten Zustand einnehmen. Die hier verwendeten Begriffe „energieverwalten“, „herunterfahren“, „in den Ruhezustand versetzen“ und Ähnliches verweisen auf die Reduzierung des Energieerbrauchs einer Schaltung. Diese Reduzierung kann zum Beispiel durch Zeittaktung (d. h. Ausschalten des Empfangens eines Zeitsignals durch eine Schaltung), Energietaktung (d. h. Ausschaltung der Spannungsversorgung der Schaltung), usw. erzielt werden. In einigen Fällen kann das Energietakten einer Schaltung zu höheren Energieeinsparungen als das Zeittakten der Schaltung führen. Das Herunterfahren einer Schaltung oder eines standardisierten Busses kann zum Abschalten einer Funktion der Schaltung führen.
-
In einigen Ausführungsformen kann ein energieverwalteter Zustand auf mehrere der Komponenten 102 bis 114 oder das gesamte System 100 angewandt werden. Zum Beispiel ist in einer Ausführungsform, in der das System 100 ein Mobiltelefon oder ein Tablet ist, das System 100 konfiguriert, in einen energieverwalteten Status einzutreten, wenn das Mobiltelefon oder Tablet inaktiv ist (z. B. in der Tasche eines Benutzers oder wenn der Benutzer sich vom Tablet entfernt hat). Während sich das System 100 in einem Energiesparmodus befindet, kann es das Gefüge 102, den Speicher-Controller 104 und den Speicher 106 zeittakten, wie unten ausführlicher diskutiert. Die Energieverwaltung für das System 100 kann aus vielen Gründen wünschenswert sein. In einigen Ausführungsformen kann die Energieverwaltung des Systems 100 den Gesamtstromverbrauch reduzieren, die Batterielebenszeit verlängern, den Kühlbedarf mindern und die Betriebskosten für Energie und Kühlung mindern.
-
Wie dargestellt, sind die Komponenten des Systems 100 über das Gefüge 102 miteinander verkoppelt. Der Begriff „Gefüge“ (oder „Datenübertragungskopplung“) bezieht sich normalerweise auf einen Satz physischer Verbindungen, die von zwei oder mehreren Strukturen geteilt werden (z. B. Anzeigeverarbeitungseinheit 110 und Speicher 106). Diese physischen Verbindungen stellen die Leitungsbahnen für die Übertragung von Informationen innerhalb von Geräten, Komponenten oder Einheiten bereit, die sich im System 100 befinden können. Entsprechend kann das Gefüge 102 in einigen Ausführungsformen einen oder mehrere Busse, Controller, Kopplungen und/oder Brücken beinhalten. In einigen Ausführungsformen kann das Gefüge 102 ein einziges Kommunikationsprotokoll beinhalten, und Elemente, die mit dem Gefüge 102 verkoppelt sind, können intern von einem Kommunikationsprotokoll in andere Kommunikationsprotokolle umgewandelt werden. In einer Ausführungsform beinhaltet das Gefüge 102 zum Beispiel eine Northbridge und eine Southbridge. Wie ferner unten diskutiert, kann das Gefüge 102 in verschiedenen Ausführungsformen konfiguriert sein, im inaktiven Zustand herunterzufahren und bei Empfangen einer Kommunikation wieder hochzufahren.
-
In verschiedenen Ausführungsformen kann die Prozessoreinheit 108 Programmanweisungen (z. B. Treiber) ausführen, die den Betrieb der Anzeigeverarbeitungseinheit 110, des Speicher-Controllers 104, des Speichers 106 und der Speichervorrichtung 112 steuern. In einer solchen Ausführungsform kann die Prozessoreinheit 108 ebenso Programmanweisungen (z. B. Anwendungen) ausführen, die Daten bereitstellen können, die an eine oder mehrere Komponenten des Systems 100 zu kommunizieren sind. Die Prozessoreinheit 108 kann eine Befehlssatz-Architektur beinhalten und kann konfiguriert sein, um die in dieser Befehlssatz-Architektur festgelegten Anweisungen auszuführen. Die Prozessoreinheit 108 kann jede Mikroarchitektur einschließlich skalare, superskalare, Pipelines, superpipelined, außer Betrieb, in Betrieb, spekulative, nicht-spekulative Architektur usw. oder Kombinationen davon einsetzen. Die Prozessoreinheit 108 kann Schaltungen beinhalten und optional mikroprogrammierte Techniken einsetzen. Weiterhin kann die Prozessoreinheit 108 eine oder mehrere Cache-Ebenen beinhalten. In einigen Ausführungsformen kann die Prozessoreinheit 108 aus einer Vielzahl von Prozessoren bestehen.
-
In einer Ausführungsform speichert der Speichert 106 Bilddaten, die für das Rendern einer Bildanzeige verwendet werden können. Bilddaten können Datenbits umfassen, die einen Bildwert für jedes einzelne Pixel auf einer Anzeigeeinheit angeben. Bilddaten können Rastergrafiken beinhalten, die hier auch als Bitmaps bezeichnet werden können. Rastergrafikdaten können als Rastergitter einzelner Pixel gespeichert und verarbeitet werden, die durch ein Anzeigemedium sichtbar sind. Eine Bitmap kann durch ihre Breite und Höhe in Pixeln gekennzeichnet sein. Üblicherweise kann eine Farb-Bitmap im RGB-Farbraum (d. h. rot, grün, blau) definiert werden und kann ferner einen Alpha-Kanal umfassen, der zum Speichern zusätzlicher Daten wie z. B. Pro-Pixel-Transparentwerte verwendet wird. In anderen Ausführungsformen können die Bilddaten mithilfe anderer Farbräume, wie sRGB, Adobe RGB (ARGB), „Cyan, Magenta, Yellow, Key“ (CMYK), YCBCR, CIE 1931 XYZ, usw. definiert werden. In einigen Ausführungsformen können Bilddaten Farbunterabtastung beinhalten. Zum Beispiel können im Fall des Farbraums YCBCR 4:2:2 zwei horizontal aneinandergrenzende Pixel jeweils eigene Y-Komponenten in Bezug auf die Leuchtkraft (d. h. Leuchtintensität) besitzen und die Chroma-Komponenten CB und CR gemeinsam nutzen. Der Speicher 106 kann verschiedene Arten von Bilddaten speichern, wie z. B. Videos, Fotos und andere Arten von Grafikbildern, die auf einer Anzeigeeinheit dargestellt werden können.
-
Die Bilddaten können auf einer Anzeigeeinheit wie z. B. einem Computerbildschirm, einem Fernseher oder einem Mobiltelefonmonitor gerendert werden. Jedes Bilderfassungsgerät, das zur Anzeige digitaler Bilddaten konfiguriert ist, kann verwendet werden. Ein Bilderfassungsgerät kann konfiguriert sein, von der unten diskutierten Anzeigeverarbeitungseinheit 110 ausgelesene Daten anzuzeigen.
-
Der Speicher 106 kann jede Art von Speicher sein, wie z. B. Arbeitsspeicher (DRAM), synchroner Arbeitsspeicher (SDRAM), doppelte Datenrate (DDR, DDR2, DDR3, usw.). SRAM (einschließlich mobiler Versionen der SDRAMS, wie DDR2 usw. und/oder energiesparender Versionen der SDRAMS, wie LPDDR2 usw.), RAMBUS DRAM (RDRAM), statischer RAM (SRAM) usw. Ein oder mehrere Speichervorrichtungen können auf einer Leiterplatte verkoppelt sein, um Speichermodule zu bilden, wie einzelreihige Speicherbausteine (SIMMs), doppelreihige Speicherbausteine (DIMMs) usw. In einigen Ausführungsformen kann der Speicher 106 mit einer eingebauten Schaltung in einer Chipon-Chip-Konfiguration, einer Package-on-Package-Konfiguration oder einer Mehrfach-Chipmodul-Konfiguration angebracht werden.
-
In verschiedenen Ausführungsformen kann der Speicher 106 vom Speicher-Controller 104 gesteuert sein. Entsprechend kann der Speicher-Controller 104 die Ausführung von Lese- und Schreibvorgängen als Reaktion auf Datenanfragen ermöglichen, die von den Einheiten 108 und 110 über das Gefüge 102 empfangen wurden. Der Speicher-Controller 104 kann verschiedene physische Speicherschnittstellen (PHY)-Funktionen ausführen, wie Speicherauffrischungs-, Speicherzeilenadress- und Spaltenadress-Strobe-Vorgänge usw. Wie unten diskutiert, kann der Speicher-Controller 104 auch zur Energieverwaltung des Speichers 106 verwendet werden. Auf die Bilddaten kann über das Gefüge 102 zugegriffen werden, und sie können auf die Anzeigeverarbeitungseinheit 110 übertragen werden, wie weiter unten diskutiert.
-
In verschiedenen Ausführungsformen kann die Speichervorrichtung 112 Programmanweisungen (z. B. Anwendungen) speichern, die von einer Prozessoreinheit 108 ausgeführt werden können. In einigen Ausführungsformen kann die Speichervorrichtung 112 eine Vielzahl von Bilddaten speichern, die auf den Speicher 106 übertragen werden können (d. h. so, dass zukünftige Anfragen nach diesen Daten schneller bedient werden können) oder direkt auf die Anzeigeverarbeitungseinheit 110 übertragen werden können. Die Speichervorrichtung 112 kann jede geeignete Art von nichtflüchtigem Speicher-Festplattenlaufwerk sein (z. B. Small Computer System Interface (SCSI)-Laufwerke, Serial AT Attachment (SATA)-Laufwerke usw.), Bandlaufwerke, optische Laufwerke (z. B. CD-Laufwerke, DVD-Laufwerke, Blu-Ray-Laufwerke usw.) usw. Die Speichervorrichtung 112 kann ein Halbleiterbauelement (SSD), z. B. eines mit NAND-Flash-Speicher, NOR-Flash-Speicher, Nano RAM („NRAM“) usw. sein.
-
In verschiedenen Ausführungsformen ist die Anzeigeverarbeitungseinheit 110 konfiguriert, Bilddaten zu bearbeiten, sodass das System 100 die Daten auf einer Anzeigeeinheit rendern kann. Die Anzeigeverarbeitungseinheit 110 kann eine Grafikpipeline beinhalten, das verschiedene Pipeline-Phasen beinhaltet, wie Rasterung, Überlagern, Mischen, Ausschneiden, Dithering, Farbraumkonvertierung, Rasterdrehung, Raster-Zwischenspeicherung. Die Anzeigeverarbeitungseinheit 110 beinhaltet auch einen oder mehrere Anzeigezwischenspeicher 114, um Bilddaten zwischenzuspeichern, die von einer oder mehreren dieser Phasen verwendet werden. In verschiedenen Ausführungsformen können die Daten als Bildquellzeilen zwischengespeichert werden. Der hier verwendete Begriff „Bildquellzeile“ bezieht sich auf Bilddaten, die entweder einer vertikalen oder horizontalen Zeile eines Bildes entsprechen (d. h. Daten, die einer horizontalen oder vertikalen Pixelzeile entsprechen). Im Sinne dieser Offenbarung kann dieser Begriff auf eine gesamte Zeile (z. B. eine horizontale Zeile, die die gesamte Breite eines Bildes umfasst) oder einen Teil einer Zeile (z. B. neun Pixel in einer horizontalen Zeile) verweisen. Entsprechend können die in einem Anzeigezwischenspeicher 114 gespeicherten Quellzeilen in verschiedenen Ausführungsformen im Gegensatz zu einer vollständigen Zeile einer teilweisen Zeile in einem Bild entsprechen.
-
In verschiedenen Ausführungsformen ruft die Anzeigeverarbeitungseinheit 110 Bilddaten ab, die in einem Zwischenspeicher 114 zu speichern sind, indem sie Anfragen für Bilddaten über das Gefüge 102 an den Speicher 106 sendet. In einigen Ausführungsformen kann die Schaltung in einem System 100 aufgrund des Abrufens von Bilddaten durch die Anzeigeverarbeitungseinheit 110 energieverwaltet sein. In einer Ausführungsform beinhaltet diese Schaltung das Gefüge 102. Entsprechend kann das Gefüge 102 durch Reduzieren der Leistung zu einem oder mehreren Bus-Controllern, Steuerleitungen, Datenleitungen und/oder Taktsignalleitungen energieverwaltet werden. In einigen Abschnitten kann die Leistung zur Gesamtheit des Gefüges 102 reduziert werden; in anderen Ausführungsformen kann die Leistung nur zu einem Abschnitt reduziert werden - z. B. den verkoppelnden Controllern und Leitungen zwischen der Anzeigeverarbeitungseinheit 110 und dem Speicher-Controller 104. In einer Ausführungsform kann der Speicher-Controller 104 ebenso energieverwaltet werden - z. B. kann Einheit 104 zeitgetaktet und/oder energiegetaktet sein.
-
In einigen Ausführungsformen können die Einheiten 110 und 104 basierend auf dem Abrufen von Bilddaten energieverwaltet werden. In einer Ausführungsform ist die Rate, zu der die Daten abgerufen werden, ein Faktor zur Bestimmung des Herunterfahrens von Einheiten. Zum Beispiel kann die Anzeigeverarbeitungseinheit 110 in verschiedenen Ausführungsformen häufig einzelne Bildquellzeilen (z. B. kann eine einzelne Zeile alle 10 ms abgerufen werden) oder Blocks von mehreren Bildquellzeilen weniger häufig (z. B. kann ein Block alle 100 ms abgerufen werden), abhängig von den durch die Anzeigeverarbeitungseinheit 110 durchgeführten Operationen, abrufen. (Zum Beispiel, wie bezüglich der 2 und 3 in einer Ausführungsform diskutiert wird, können einzelne Bildquellzeilen oder Blocks von Zeilen basierend auf der Tatsache abgerufen werden, ob die Bilddaten durch die Verarbeitungseinheit 110 skaliert werden.) In verschiedenen Ausführungsformen können das Gefüge 102 und der Speicher-Controller 104 vor dem Abrufen eines anderen Datenblocks einige Zeit inaktiv sein, wenn die Anzeigeverarbeitungseinheit 110 Blöcke von mehreren Bildquellzeilen abruft. Demzufolge können das Gefüge 102 und der Speicher-Controller 104 in einer solchen Ausführungsform heruntergefahren werden.
-
In einigen Ausführungsformen kann die Bestimmung, das Gefüge 102 und/oder den Speicher-Controller 104 herunterzufahren, auf einem Zeitschalter beruhen, der nachverfolgt, wie lange eine gewisse Einheit inaktiv war. In einer Ausführungsform kann die Steuerlogik veranlassen, dass die Einheit heruntergefahren wird, wenn der Zeitschalter anzeigt, dass eine Einheit (z. B. Gefüge 102 oder Speicher-Controller 104) für eine zugewiesene Dauer inaktiv war. Somit können die Einheiten 102 und 104 als Reaktion auf den Zeitschalter, der einem besonderen Grenzwert entspricht, heruntergefahren werden, wenn die Anzeigeverarbeitungseinheit 110 Daten in Bursts abruft, wobei das Gefüge 102 und der Speicher-Controller 104 zwischen den Abrufungen inaktiv bleiben. Zum Beispiel kann die Steuerlogik das Gefüge 102 herunterfahren, nachdem der Zeitschalter eine Ruhezeit von 100 ms oder mehr anzeigt. In einer Ausführungsform kann die Leistung als Reaktion auf eine entsprechende Anfrage nach Daten (z. B. Lese- oder Schreibanfrage) seitens einer Einheit (z. B. Anzeigeverarbeitungseinheit 110 oder Prozessoreinheit 108) wiederhergestellt werden, nachdem die Energieversorgung zum Gefüge 102 und/oder Speicher-Controller 104 reduziert wurde.
-
In 2 ist ein Blockdiagramm der Anzeigeverarbeitungseinheit 110 gezeigt. Wie oben diskutiert, kann die Anzeigeverarbeitungseinheit 110 in verschiedenen Ausführungsformen konfiguriert werden, um Bilddaten abzurufen und zu bearbeiten, sodass das System 100 die Daten auf einer Anzeigeeinheit rendern kann. In der dargestellten Ausführungsform beinhaltet die Anzeigeverarbeitungseinheit 110 eine Grafikpipeline 200, um das Bildrendern zu ermöglichen. Die Grafikpipeline 200 wiederum beinhaltet die Anzeigezwischenspeicher 114 und 115, die Skalierungseinheiten 210 und 211 und die Mischeinheit 230. In einigen Ausführungsformen sind der Anzeigezwischenspeicher 114 bzw. die Skalierungseinheit 210 identisch mit dem Anzeigezwischenspeicher 115 bzw. der Skalierungseinheit 211. (Somit trifft jede für die Einheiten 114 und 210 geltende Beschreibung auch auf die Einheiten 115 und 211 zu.) Auch wenn dies nicht dargestellt ist, kann die Grafikpipeline 200 in verschiedenen Ausführungsformen mehrere weitere Pipeline-Phasen beinhalten.
-
Wie oben angegeben, ist der Anzeigezwischenspeicher 114 in einer Ausführungsform konfiguriert, um die vom Speicher 106 abgerufenen Bilddaten 202 zu speichern. In einigen Ausführungsformen können die Bilddaten 202 alternativ von der Speichervorrichtung 112 abgerufen werden. Wie bezüglich 3 beschrieben wird, werden die Bilddaten 202 in verschiedenen Ausführungsformen als Bildquellzeilen in Zeilenzwischenspeichern des Anzeigezwischenspeichers 114 gespeichert. Der hier verwendete Begriff „Zeilenzwischenspeicher“ verweist auf Schaltungen, die konfiguriert sind, um eine einzelne Bildquellzeile (oder einen Teil einer Quellzeile) zu speichern. Wie ebenso diskutiert, kann der Anzeigezwischenspeicher 114 abhängig vom Betriebsmodus, in der die Anzeigeverarbeitungseinheit 110 arbeitet (z. B. Skalier- oder Nicht-Skaliermodus), jeweils eine Bildquellzeile oder Blocks von mehreren Bildquellzeilen abrufen.
-
In der dargestellten Ausführungsform ist die Skalierungseinheit 210 konfiguriert, um die vom Zwischenspeicher 114 empfangenen Bilddaten 202 zu skalieren. Im Allgemeinen kann das Skalieren auf das Ändern der Pixelauflösung eines Bildes hinweisen. Das Skalieren durch die Skalierungseinheit 210 kann Herunterskalieren, Hochskalieren, Vertikalskalieren und/oder Horizontalskalieren beinhalten. Zum Beispiel kann ein Bild mit einer Auflösung von 200 Pixeln breit und 100 Pixeln hoch horizontal und vertikal herunterskaliert werden, um eine Auflösung von 100 Pixeln breit und 75 Pixeln hoch zu erhalten. In einer Ausführungsform kann die Skalierungseinheit 210 die Auflösung eines solchen Bildes durch Generieren von Ausgabe-Pixelkomponenten (z. B. R-, G-, B-Komponenten) für das skalierte Bild auf der Basis von Komponenten von nahegelegenen Pixeln im ursprünglichen Bild reduzieren. In einem Beispiel kann die Skalierung durchgeführt werden, wenn eine Anwendung Bilddaten generiert, die nicht mit der nativen Auflösung der Anzeigeeinheit übereinstimmen (z. B. ein Web-Browser, der ursprünglich formatiert war, um den Internetinhalt auf einem Computerbildschirm anzuzeigen, diesen stattdessen auf einem Telefon anzeigte).
-
In einigen Fällen werden allerdings nicht alle Bildquellzeilen skaliert (z. B. wenn eine Anwendung in der nativen Auflösung formatiert ist). Entsprechend kann die Grafikpipeline 200 in einigen Ausführungsformen so konfiguriert sein, dass es in einem „Skalier-Modus“ oder einem „Nicht-Skalier-Modus“ arbeitet. In einer Ausführungsform werden die Bildquellzeilen vor dem Übertragen auf die Mischeinheit 230 durch die Skalierungseinheit 210 skaliert, wenn die Grafikpipeline 200 in einem Skalier-Modus arbeitet. Im Skalier-Modus kann der Anzeigezwischenspeicher 114 auch einzelne Bildquellzeilen nacheinander vom Speicher abrufen. In einem Nicht-Skalier-Modus werden die Bildquellzeilen vor dem Übertragen auf eine Mischeinheit 230 nicht skaliert. In gewissen Ausführungsformen kann der Anzeigenzwischenspeicher 114 Bildquellzeilen in einem Block abrufen, wenn er in einem Nicht-Skalier-Modus arbeitet (d. h. zwei oder mehr Bildquellzeilen gleichzeitig).
-
In der dargestellten Ausführungsform können Bildquellenzeilen (skaliert und nicht skaliert) auf die Mischeinheit 230 übertragen werden (oder, in anderen Ausführungsformen, auf eine andere Phase in der Pipeline). Die zusätzlichen Bilddaten können Informationen (z. B. in Bezug auf Transparenz oder Positionierung) bezüglich eines anderen Bildes beinhalten, das zusammen mit den Bilddaten 202 anzuzeigen ist. Die Bildquellzeilen und weitere Bilddaten können auf vielfache Art und Weise durch die Mischeinheit 230 kombiniert werden, um ein endgültiges Bild zu rendern (z. B. Icons in Kombination mit einem Bildschirmhintergrund).
-
In 3 ist ein Blockdiagramm des Anzeigezwischenspeichers 114 und der Skalierungseinheit 210 genauer dargestellt. Wie gezeigt, beinhaltet die Grafikpipeline 200 Schaltungen in Bezug auf das Skalieren (d. h. Skalierungseinheit 210), den Anzeigezwischenspeicher 114, ein Skaliermodus-Verzeichnis 340 und einen Mux 350. In der dargestellten Ausführungsform beinhaltet der Anzeigezwischenspeicher 114 auch eine Vielzahl von Zeilenzwischenspeichern 310a bis x (neun (9) Zwischenspeicher 310 in einer Ausführungsform), die jeweils konfiguriert sind, um eine entsprechende Bildquellzeile zu speichern und eine Zwischenspeicher-Leselogik 320. Wie diskutiert wird, können die Schaltungen 310 bis 350 in verschiedenen Ausführungsformen verwendet werden, um Unterstützung für Skalier- und Nicht-Skalier-Modi einzusetzen.
-
In der dargestellten Ausführungsform kann der Modus, in dem die Grafikpipeline 200 arbeitet, durch den Wert des Skaliermodus-Verzeichnisses 340, der von einem oder mehreren Bits angegeben wird, gesteuert werden. In verschiedenen Ausführungsformen kann ein Betriebssystem den Wert im Verzeichnis 340 festlegen (z. B. steuern, in welchem Modus die Grafikpipeline 200 arbeiten sollte). In verschiedenen Ausführungsformen kann die Zwischenspeicher-Leselogik 320 in einem Nicht-Skaliermodus so konfiguriert werden, dass sie selektiv jeweils einen Zeilenzwischenspeicher 310a bis x liest. Somit kann der Anzeigezwischenspeicher 114 konfiguriert sein, alle Bildquellzeilen in den Zeilenzwischenspeichern 310a bis x zurückzuhalten, bis jede von der Zwischenspeicher-Leselogik 320 gelesen wurde. Dann kann der Anzeigezwischenspeicher 114 einen weiteren Block von Bildquellzeilen abrufen, die von der Zwischenspeicher-Leselogik 320 zu lesen ist.
-
Im Skaliermodus kann die Zwischenspeicher-Leselogik 320 konfiguriert werden, um alle Zeilenzwischenspeicher 310a bis x gleichzeitig zu lesen. Nach jedem Lesen kann der Anzeigezwischenspeicher 114 konfiguriert werden, um jede Bildquellzeile auf den angrenzenden Zeilenzwischenspeicher zu verschieben (z. B. Übertragen der Bildquellzeile vom Zeilenzwischenspeicher 310a auf 310b) und um eine neue Bildquellzeile (z. B. Füllen des Zeilenzwischenspeichers 310a mit neuer Bildquellzeile) abzurufen. Entsprechend kann der Anzeigezwischenspeicher 114 konfiguriert werden, um nach jedem von der Zwischenspeicher-Leselogik 320 durchgeführten Ablesen eine neue Bildquellzeile abzurufen.
-
Im Skalier-Modus werden die Bildquellzeilen über den Skalierungspfad 322 auf die Skalierungseinheit 210 übertragen. Wie dargestellt, beinhaltet die Skalierungseinheit 210 einen Horizontal-Scaler 332 und einen Vertikal-Scaler 334. Der Horizontal-Scaler 332 kann konfiguriert werden, um horizontale Pixelzeilen zu verarbeiten; ebenso kann der Vertikal-Scaler 334 konfiguriert werden, um die vertikalen Pixelzeilen zu verarbeiten. Wie dargestellt, kann die Skalierungseinheit 210 konfiguriert werden, um Ausgabe-Pixelkomponenten in einem skalierten Bild beruhend auf Merkmalen naheliegender Pixel im ursprünglichen Bild zu skalieren. Zum Beispiel stellen im Falle der Übertragung von neun Bildquellzeilen durch den Skalierungspfad 322 (d. h. vom Zeilenzwischenspeicher 312a bis x) diese Quellzeilen 9 Pixelzeilen dar, die aneinandergrenzen. Somit können der Horizontal-Scaler 332 und der Vertikal-Scaler 334 jede beliebige Formelkombination auf die neun Bildquellzeilen anwenden, um die skalierte Zeile 335 zu produzieren.
-
Im Nicht-Skaliermodus werden die Bildquellzeilen über den Bypass-Pfad 324 auf den Mux 350 übertragen. Somit werden die Bildquellzeilen nicht skaliert. Wie dargestellt kann das Skaliermodus-Verzeichnis 340 dem Mux 350 anzeigen, in welchem Modus die Grafikpipeline 200 für den Betrieb konfiguriert ist. Entsprechend kann der Mux 350 die skalierte Zeile 335 oder den Bypass-Pfad 324 wählen und die Bilddaten an die Mischeinheit 230 oder eine andere Phase in der Pipeline ausgeben.
-
In einigen Ausführungsformen, in denen die Grafikpipeline 200 an Bilddaten arbeitet, die mithilfe von Farbunterabtastung verschlüsselt sind, kann die Grafikpipeline 200 in einem Hybridmodus arbeiten, der die Funktion des Skaliermodus und des Nicht-Skaliermodus beinhaltet. In diesem Hybridmodus können Bilddaten in einer Dimension skaliert werden (z. B. horizontale Dimension), aber nicht in der anderen. In einer Ausführungsform kann die Grafikpipeline 200 beim Betrieb in diesem Modus Bilddaten über den Skalierungspfad 322 übertragen. Hinsichtlich des Nicht-Skaliermodus können einzelne Quellbildzielen (d. h. jede einzeln) von Zeilenzwischenspeichern 310 abgelesen werden, wodurch Blocks von mehreren Bildquellzeilen vom Speicher 106 gelesen werden können. Bei Ankunft in der Skalierungseinheit können die Bildquellzeilen vom jeweiligen Scaler verarbeitet werden (z. B. Horizontal-Scaler 332 oder Vertikal-Scaler 334) und können den nicht-relevanten Scaler umgehen. Zum Beispiel kann im Falle des „YCBCR 4:2:2“-Farbraums horizontales Hochskalieren erfolgen, wenn die Daten in einen RGB-Farbraum umgewandelt werden, da zwei horizontal aneinandergrenzende Pixel die Chroma-Komponenten CB und CR gemeinsam nutzen. In einer solchen Situation kann der Horizontal-Scaler 332 das Hochskalieren durchführen, während der Vertikal-Scaler 334 umgangen wird. In verschiedenen Ausführungsformen kann das Umgehen eines der Scaler 332 oder 334 zusätzliche Energieeinsparungen aufbringen, da der Bypass-Scaler energiegetaktet und/oder zeitgetaktet sein kann.
-
Wie zuvor diskutiert, kann die Zwischenspeicher-Leselogik 320 in einem Nicht-Skaliermodus konfiguriert sein, selektiv jeden Zeilenzwischenspeicher 310a bis x einzeln zu lesen. In diesem Modus kann der Anzeigezwischenspeicher 114 Blocks von Bildquellzeilendaten in Bursts abrufen (im Gegensatz zum fortgesetzten Abrufen einer Bildquellzeile). Dabei bleiben das Gefüge 102 und der Speicher-Controller 104 zwischen den Abrufungen inaktiv. Somit können das Gefüge 102 und der Speicher-Controller 104 als Reaktion auf die einem bestimmten Schwellenwert entsprechende Ruhezeit heruntergefahren werden. Dies führt zu bedeutenden Energieeinsparungen. Weiterhin können durch Umgehen der Skalierungseinheit 210 über den Bypass-Pfad 324 (z. B. im Nicht-Skaliermodus) oder der einzelnen Scaler 332 und 334 (z. B. in einem Hybridmodus) weitere Energieeinsparungen erzielt werden (z. B. können die Skalierungseinheit 210 oder die einzelnen Scaler 332 und 334 heruntergefahren werden, wenn sie nicht in Gebrauch sind). In einigen Ausführungsformen kann auch das Gefüge 102 im Skaliermodus zwischen den Abrufvorgängen heruntergefahren werden, allerdings kann das Gefüge 102 für kürzere Abstände als beim Betrieb in einem Nicht-Skaliermodus heruntergefahren werden.
-
In 4 ist ein Ablaufdiagramm gezeigt, das eine Ausführungsform eines Verfahrens zur Umsetzung eines Nicht-Skaliermodus in einem System darstellt. Das Verfahren 400 kann von jedem geeigneten System durchgeführt werden, das die Energieverwaltung einer oder mehrerer Schaltungen unterstützt, wie zum Beispiel das System 100. In verschiedenen Ausführungsformen können einige der in 4 gezeigten Bausteine simultan, in einer anderen Reihenfolge als gezeigt durchgeführt oder ausgelassen werden. Zusätzliche Verfahrenselemente können zudem wie gewünscht durchgeführt werden.
-
Das Verfahren 400 beginnt mit Schritt 402, zu Beginn des Rasters wird in Entscheidungsbaustein 404 entschieden, ob in einem Skaliermodus gearbeitet wird. Falls ja, wird der Ablauf in einem Skaliermodus fortgesetzt. Falls nicht, wird der Ablauf in einem Nicht-Skaliermodus, beginnend mit Schritt 410, fortgesetzt. In Schritt 410 empfängt eine Einheit (z. B. Grafikpipeline 200) Daten (z. B. Bilddaten 202) von einer Datenübertragungskopplung (z. B. Gefüge 102). In einigen Ausführungsformen kann Schritt 410 erfolgen, während die Grafikpipeline 200 in einem Nicht-Skalier- oder Hybridmodus arbeitet. Die Grafikpipeline kann dementsprechend einen Hinweis (z. B. von einem Bit-Satz im Skaliermodus-Verzeichnis 340) empfangen und zum Abrufen von Bildquellzeilen in Blöcken übergehen. In Entscheidungsbaustein 415 wird entschieden, ob die Menge der empfangenen Bilddaten größer als ein Schwellenwert von Daten ist (z. B. werden zwei oder mehr Quellzeilen abgerufen). Da, wie oben diskutiert, die Grafikpipeline konfiguriert ist, in einem Nicht-Skalier- (oder Hybrid-)Modus zu arbeiten, fährt die Grafikpipeline nach Erhalten des Grenzwerts der Bilddaten fort, selektiv jeden Zeilenzwischenspeicher (z. B. 310a bis x) zu lesen. Falls kein Datengrenzwert empfangen wird, kehrt der Ablauf zu Schritt 410 zurück, wo die Grafikpipeline fortfahren kann, Bilddaten abzurufen, bis ein Grenzwert empfangen wurde.
-
Wie oben in Entscheidungsbaustein 415 erklärt, können die Datenübertragungsverkopplung und sonstige Einheiten (z. B. Speicher-Controller 104) inaktiv bleiben, wenn ein Datengrenzwert erreicht ist, während die Grafikpipeline die Bilddaten liest. Wie zuvor diskutiert, beinhaltet der Schritt 415 in einigen Ausführungsformen das Prüfen eines Zeitschalters, um festzustellen, ob die Datenübertragungskopplung für eine Zeitspanne mit Schwellenwert inaktiv war. In anderen Ausführungsformen kann ein Hinweis von der Grafikpipeline 200 gesendet werden, dass eine Datenmenge mit Grenzwert empfangen wurde. Entsprechend wird die Datenübertragungsverkopplung in Schritt 420 heruntergefahren, nachdem ein Hinweis oder eine Feststellung erfolgt ist, dass die Datenübertragungskopplung heruntergefahren werden sollte. Schritt 420 kann ebenso das Herunterfahren oder Reduzieren der Stromversorgung zu anderen Schaltungen, z. B. dem Speicher-Controller 104 beinhalten. In anderen Abschnitt kann ein Teil der Datenübertragungskopplung (im Gegensatz zur gesamten) heruntergefahren werden.
-
In Schritt 425 überträgt die Grafikpipeline die empfangenen Daten an eine Ausgabe. In einigen Ausführungsformen kann dies die Mischeinheit (z. B. Mischeinheit 230) oder eine andere Phase in der Pipeline sein. An diesem Punkt kann die Grafikpipeline mehr Daten abrufen. Somit wird die Datenübertragungskopplung als Reaktion auf die Übertragung der Bilddaten in Schritt 430 hochgefahren, sodass mehr Daten abgerufen werden können. In Schritt 435 wird entschieden, ob das Ende des Rasters erreicht ist. Falls ja, geht der Ablauf zu Schritt 402 zurück. Falls nicht, geht der Ablauf zu Schritt 410 zurück, in dem mehr Daten von der Datenübertragungskopplung 410 empfangen werden. Wie zuvor diskutiert, verhindert das Arbeiten in einem Skaliermodus in einigen Ausführungsformen, dass das Gefüge zwischen den Abrufungen heruntergefahren wird, da die Grafikpipeline sukzessiv jeweils eine Bildquellzeile abruft. In anderen Ausführungsformen kann das Gefüge jedoch trotz des Skaliermodus heruntergefahren werden, allerdings für wesentlich kürzere Zeit als in einem Nicht-Skaliermodus.
-
In 5 ist ein Ablaufdiagramm, das eine Ausführungsform eines Verfahrens zum Herunterfahren einer Datenübertragungskopplung gezeigt. Ähnlich wie das Verfahren 400 kann das Verfahren 500 von jedem geeigneten System, das die Energieverwaltung unterstützt, ausgeführt werden. In verschiedenen Ausführungsformen kann das Verfahren 500 von jedem System ausgeführt werden, das das Verfahren 400 zum Abrufen von Bilddaten ausführt. In verschiedenen Ausführungsformen können einige der in 5 gezeigten Bausteine simultan, in einer anderen Reihenfolge als gezeigt durchgeführt oder ausgelassen werden. Zusätzliche Verfahrenselemente können zudem wie gewünscht durchgeführt werden.
-
Das Verfahren 500 beginnt mit Schritt 502, in dem Bilddaten (z. B. die Bilddaten 202) von einer Datenübertragungskopplung (z. B. Gefüge 102) übertragen werden. Wie zuvor diskutiert, können in verschiedenen Ausführungsformen Bilddaten vom Speicher (z. B. Speicher 106) auf die Grafikpipeline (z. B. Grafikpipeline 200) übertragen werden. In Entscheidungsbaustein 504 wird entschieden, ob die Kopplung inaktiv ist. Wie oben erwähnt, kann diese Entscheidung in bestimmten Ausführungsformen von einem Zeitschalter getroffen werden. Falls die Kopplung nicht inaktiv ist, kehrt der Ablauf zu Schritt 502 zurück. Falls die Kopplung inaktiv ist, geht der Ablauf zu Schritt 516 über, wo entschieden wird, ob die Kopplung für eine Zeitspanne mit Schwellenwert inaktiv war. Falls die Ruhezeit unterhalb der Zeitspanne mit Schwellenwert liegt, kehrt der Ablauf zum Entscheidungsbaustein 504 zurück. Ansonsten geht der Ablauf zu Schritt 522 über. In Schritt 522 ist die Datenübertragungskopplung energiegetaktet. In Schritt 524 wird die Datenübertragungskopplung beim Empfangen einer Datenanfrage (z. B. fordert Grafikpipeline 200, einen weiteren Datenblock vom Speicher 106 abzurufen) erneut hochgefahren.
-
In 6 ist ein Ablaufdiagramm gezeigt, das eine Ausführungsform eines Verfahrens zum Betreiben einer Grafikpipeline in zwei unterschiedlichen Modi darstellt. In verschiedenen Ausführungsformen wird das Verfahren 600 in einer Anzeigeverarbeitungseinheit (z. B. Anzeigeverarbeitungseinheit 110) durchgeführt. In verschiedenen Ausführungsformen können einige der in 6 gezeigten Bausteine simultan, in einer anderen Reihenfolge als gezeigt durchgeführt oder ausgelassen werden. Zusätzliche Verfahrenselemente können zudem wie gewünscht durchgeführt werden.
-
Das Verfahren 600 beginnt mit Schritt 602, in dem Zeilenzwischenspeicher (z. B. Zeilenzwischenspeicher 310a bis x) in einem Anzeigezwischenspeicher (z. B. Anzeigezwischenspeicher 114) mit Daten (z. B. Bilddaten 202) gefüllt werden. In Entscheidungsbaustein 604 wird entschieden, ob die Grafikpipeline in einem Nicht-Skaliermodus arbeitet (z. B. kann dies in einer Ausführungsform durch ein Verzeichnis angezeigt werden, z. B. Skaliermodusverzeichnis 340). Falls ein Skaliermodus angegeben ist, geht der Ablauf zu Schritt 608 über. In Schritt 608 liest die Leselogik (z. B. Zwischenspeicher-Leselogik 320) alle Zeilenzwischenspeicher. Wie oben diskutiert, ruft die Grafikpipeline nach dem Lesen aller Zeilenzwischenzeilen sukzessiv eine neue Bildquellzeile ab. Entsprechend versorgt das System das Gefüge in Schritt 610 weiterhin mit Energie, da das Gefüge nicht inaktiv ist. Der Ablauf kehrt zu Schritt 602 zurück.
-
Falls ein Nicht-Skaliermodus angegeben ist, geht der Ablauf in Entscheidungsbaustein 604 zu Schritt 614 über. In Schritt 614 wird die Datenübertragungskopplung heruntergefahren (d. h. in einigen Ausführungsformen wird dies von einem Zeitschalter gesteuert; in anderen Ausführungsformen kann dies von der Grafikpipeline gesteuert werden). In Schritt 616 liest die Leselogik selektiv jeweils einen Zeilenzwischenspeicher aus. Nach dem Auslesen aller Zwischenspeicher wird das Gefüge in Schritt 618 hochgefahren. Der Ablauf kehrt zu Schritt 602 zurück.