-
Querverweise zu verwandten Anmeldungen:
-
Diese
Anmeldung beansprucht den Nutzen der vorläufigen
US-Patentanmeldungen mit den Nummern 60/820,952 ,
eingereicht am 31. Juli 2006, und
60/821,127 ,
eingereicht am 1. August 2006, beide mit dem Titel "DEDICATED MECHANISM
FOR PAGE-MAPPING IN A GPU" von
Tong u.a., die beide durch Bezugnahme in den vorliegenden Text aufgenommen
werden.
-
Diese
Anmeldung ist verwandt mit den in gleichem Besitz befindlichen und
derzeit ebenfalls anhängigen
US-Patentanmeldungen Nr. 11/253,438 , eingereicht
am 18. Oktober 2005, mit dem Titel "Zero Frame Buffer",
Nr.
11/077,662 , eingereicht am 10. März 2005, mit dem Titel "Memory Management
for Virtual Address Space with Translation Units of Variable Range
Size" und
Nr. 11/077,662 , eingereicht
am 10. März
2005, mit dem Titel "Memory
Management for Virtual Address Space with Translation Units of Variable
Range Size", die
durch Bezugnahme in den vorliegenden Text aufgenommen werden.
-
Hintergrund der Erfindung:
-
Die
vorliegende Erfindung bezieht sich auf das Beseitigen oder Verringern
von Systemspeicherzugriffen zum Abrufen von Adressumsetzungsinformationen,
die für
Systemspeicheranzeigedatenzugriffe benötigt werden.
-
Grafikverarbeitungseinheiten(Graphics
Processing Units, GPUs) sind ein Teil von Computer-, Videospiel-,
Automobilnavigations- und sonstigen elektronischen Systemen, um
Grafikbilder auf einem Monitor oder einer sonstigen Anzeigevorrichtung
zu erzeugen. Die als erstes entwickelten GPUs speicherten Pixelwerte,
das heißt,
die tatsächlichen
angezeigten Farben, in einem als Bildwiederholspeicher bezeichneten
lokalen Speicher.
-
Seit
dieser Zeit hat die Komplexität
von GPUs, insbesondere der GPUs, die von der NVIDIA Corporation
aus Santa Clara, Kalifornien, entworfen und entwickelt wurden, enorm
zugenommen. Die Größe und Komplexität der in
Bildwiederholspeichern gespeicherten Daten hat in ähnlicher
Weise zugenommen. Diese Grafikdaten enthalten heute nicht nur Pixelwerte,
sondern auch Texturen, Texturdeskriptoren, Shaderprogrammanweisungen
und weitere Daten und Befehle. Diese Bildwiederholspeicher werden
heute in Anbetracht ihrer erweiterten Aufgaben oft als Grafikspeicher
bezeichnet.
-
Bis
vor kurzem haben GPUs mit Zentralverarbeitungseinheiten und anderen
Bauelementen in Computersystemen über einen Advanced Graphics Port
(AGP)-Bus kommuniziert: Obgleich schnellere Versionen dieses Busses
entwickelt worden, war er nicht in der Lage, der GPU genügend Grafikdaten
zuzuführen.
Dementsprechend wurden die Grafikdaten in einem lokalen Speicher
gespeichert, der der GPU zur Verfügung stand, ohne über den
AGP gehen zu müssen.
Vorteilhafterweise ist ein neuer Bus entwickelt worden, und zwar
eine verbesserte Version des Peripheral Component Interconnect (PCI)-Standards oder
PCIE(PCI Express). Dieses Busprotokoll und die dabei herausgekommene
Implementierung sind durch die NVIDIA Corporation deutlich verbessert und
verfeinert worden. Dies wiederum hat es ermöglicht, den lokalen Speicher
zugunsten eines Systemspeichers zu eliminieren, auf den über den
PCIE-Bus zugegriffen wird.
-
Durch
den Wechsel des Grafikspeicherortes kommt es zu verschiedenen Komplikationen.
Eine davon ist, dass die GPU Datenspeicherorte anhand virtueller
Adressen aufspürt,
während
der Systemspeicher mit physikalischen Adressen arbeitet. Um Daten
aus dem Systemspeicher zu lesen, setzt die GPU ihre virtuellen Adressen
in physikalische Adressen um. Falls diese Umsetzung übermäßig lange dauert,
so kann es sein, dass der GPU Daten nicht mit ausreichender Geschwindigkeit
vom Systemspeicher bereitgestellt werden. Das gilt besonders für Pixel-
oder Anzeigedaten, die beständig
und schnell an die GPU übermittelt
werden müssen.
-
Diese
Adressumsetzung kann übermäßig lange
dauern, falls Informationen, die zum Umsetzen virtueller Adressen
in physikalische Adressen benötigt
werden, nicht in der GPU gespeichert sind. Genauer gesagt, falls
diese Umsetzungsinformationen nicht in der GPU zur Verfügung stehen,
ist ein erster Speicherzugriff erforderlich, um sie aus dem Systemspeicher
abzurufen. Erst dann können
die Anzeige- oder sonstigen benötigten
Daten aus dem Systemspeicher in einem zweiten Speicherzugriff gelesen werden.
Dementsprechend kommt der erste Speicherzugriff in der Reihenfolge
vor dem zweiten Speicherzugriff, da der zweite Speicherzugriff nicht
ohne die Adresse vonstatten gehen kann, die durch den ersten Speicherzugriff
bereitgestellt wird. Der zusätzliche
erste Speicherzugriff kann bis zu 1 μs dauern, was die Rate, mit
der Anzeige- oder sonstige benötigte
Daten gelesen werden, deutlich verlangsamt.
-
Was
also benötigt
wird, sind Schaltungen, Verfahren und Vorrichtungen, die diese zusätzlichen Speicherzugriffe
zum Abrufen von Adressumsetzungsinformationen aus dem Systemspeicher
beseitigen oder verringern.
-
Kurzdarstellung der Erfindung:
-
Dementsprechend
sehen Ausführungsformen
der vorliegenden Erfindung Schaltungen, Verfahren und Vorrichtungen
vor, die Systemspeicherzugriffe zum Abrufen von Adressumsetzungsinformationen,
die für
Systemspeicheranzeigedatenzugriffe benötigt werden, beseitigen oder
verringern. Genauer gesagt, werden Adressumsetzungsinformationen in
einem Grafikprozessor gespeichert. Dies verringert oder beseitigt
die Notwendigkeit separater Systemspeicherzugriffe zum Abrufen der
Umsetzungsinformationen. Da die zusätzlichen Speicherzugriffe nicht
benötigt
werden, kann der Prozessor Adressen schneller umsetzen und die benötigten Anzeige-
oder sonstigen Daten schneller aus dem Systemspeicher lesen.
-
Ein
Ausführungsbeispiel
der vorliegenden Erfindung beseitigt oder verringert Systemspeicherzugriffe
für Adressumsetzungsinformationen
nach einem Hochfahren durch Vorladen eines als assoziierter Pufferspeicher
zur Grafikumsetzung (Graphics Translation Look-aside Buffer, Grafik-TLB)
bezeichneten Zwischenspeichers (Cache) mit Einträgen, die dazu verwendet werden
können,
virtuelle Adressen, die von einer GPU benutzt werden, in physikalische Adressen,
die von einem Systemspeicher benutzt werden, umzusetzen. In einer
konkreten Ausführungsform
der vorliegenden Erfindung wird der Grafik-TLB mit Adressinformationen,
die für
Anzeigedaten benötigt
werden, vorgeladen, obgleich in anderen Ausführungsformen der vorliegenden
Erfindung auch Adressen für
andere Arten von Daten den Grafik-TLB vorladen können. Dadurch werden zusätzliche
Systemspeicherzugriffe vermieden, die andernfalls benötigt werden
würden,
um die erforderlichen Adressumsetzungsinformationen abzurufen.
-
Nach
dem Hochfahren werden Einträge
im Grafik-TLB, die für
einen Anzeigezugriff benötigt
werden, gesperrt bzw. eingeschränkt
zugreifbar gemacht, um zu gewährleisten,
dass benötigte
Umsetzungsinformationen im Grafikprozessor erhalten bleiben. Das
kann durch Einschränken
des Zugriffs auf bestimmte Speicherorte in dem Grafik-TLB, durch Speichern
von Signalisierungsbits oder sonstigen Identifizierungsinformationen
in dem Grafik-TLB oder durch andere geeignete Verfahren bewerkstelligt werden.
Dies verhindert ein Überschreiben
von Daten, die noch einmal aus dem Systemspeicher gelesen werden
müssten.
-
Ein
weiteres Ausführungsbeispiel
der vorliegenden Erfindung beseitigt oder verringert Speicherzugriffe
für Adressumsetzungsinformationen
durch Speichern einer Basisadresse und eines Adressbereichs für einen
großen
zusammenhängenden
Block aus Systemspeicher, der durch das System-BIOS bereitgestellt
wird. Beim Hochfahren oder einem anderen geeigneten Ereignis weist
ein System-BIOS der GPU einen großen Speicherblock zu, der als
ein "Speicherausschnitt" bezeichnet werden
kann. Die GPU kann dies für
Anzeige- oder sonstige Daten verwenden. Die GPU speichert die Basisadresse
und den Chipbereich zum Beispiel in Hardware-Registern.
-
Wenn
eine von der GPU benutzte virtuelle Adresse in eine physikalische
Adresse umgesetzt werden soll, so wird eine Bereichsüberprüfung vorgenommen,
um festzustellen, ob sich die virtuelle Adresse im Bereich des Speicherausschnitts
befindet. In einer konkreten Ausführungsform der vorliegenden
Erfindung wird dies dadurch vereinfacht, dass man die Basisadresse
des Speicherausschnitts der virtuellen Adresse "Null" entsprechen
lässt.
Die höchste
virtuelle Adresse in dem Speicherausschnitt entspricht dann dem
Bereich der physikalischen Adressen. Falls die umzusetzende Adresse
im Bereich der virtuellen Adressen für den Speicherausschnitt liegt,
kann die virtuelle Adresse in eine physikalische Adresse umgesetzt
werden, indem die Basisadresse zu der virtuellen Adresse addiert
wird. Falls sich die umzusetzende Adresse nicht in diesem Bereich
befindet, kann sie mittels eines Grafik-TLB oder mittels Seitentabellen umgesetzt
werden.
-
Verschiedene
Ausführungsformen
der vorliegenden Erfindung können
eines oder mehrere dieser oder weiterer Merkmale, die im vorliegenden
Text beschrieben sind, enthalten. Ein besseres Verständnis der
Art und der Vorteile vorliegender Erfindung lässt sich unter Bezugnahme auf
die folgende detaillierte Beschreibung und die begleitenden Zeichnungen
gewinnen.
-
Kurze Beschreibung der Zeichnungen:
-
1 ist
ein Blockschaubild eines Computersystems, das durch die Aufnahme
einer Ausführungsform
der vorliegenden Erfindung verbessert wird,
-
2 ist
ein Blockschaubild eines weiteren Computersystems, das durch die
Aufnahme einer Ausführungsform
der vorliegenden Erfindung verbessert wird,
-
3 ist
ein Flussdiagramm, das ein Verfahren zum Zugreifen auf in einem
Systemspeicher gespeicherte Anzeigedaten gemäß einer Ausführungsform
der vorliegenden Erfindung veranschaulicht,
-
4A–C veranschaulichen Übertragungen von
Befehlen und Daten in einem Computersystem während eines Verfahrens zum
Zugreifen auf Anzeigedaten gemäß einer
Ausführungsform
der vorliegenden Erfindung,
-
5 ist
ein Flussdiagramm, das ein weiteres Verfahren zum Zugreifen auf
Anzeigedaten in einem Systemspeicher gemäß einer Ausführungsform der
vorliegenden Erfindung veranschaulicht,
-
6 veranschaulicht
die Übertragung
von Befehlen und Daten in einem Computersystem während eines Verfahrens zum
Zugreifen auf Anzeigedaten gemäß einer
Ausführungsform
der vorliegenden Erfindung,
-
7 ist
ein Blockschaubild einer Grafikverarbeitungseinheit gemäß einer
Ausführungsform
der vorliegenden Erfindung, und
-
8 ist
ein Schaubild einer Grafikkarte gemäß einer Ausführungsform
der vorliegenden Erfindung.
-
Beschreibung von Ausführungsbeispielen:
-
1 ist
ein Blockschaubild eines Computersystems, das durch die Aufnahme
einer Ausführungsform
der vorliegenden Erfindung verbessert wird. Dieses Blockschaubild
enthält
eine Zentralverarbeitungseinheit (Central Processing Unit, CPU) oder
einen Hostprozessor 100, einen Systemplattformprozessor
(SPP) 110, einen Systemspeicher 120, eine Grafikverarbeitungseinheit
(Graphics Processing Unit, GPU) 130, einen Medienkommunikationsprozessor
(Media Communications Prozessor, MCP) 150, Netzwerke 160 sowie
interne und periphere Geräte 270.
Ein Bildwiederholspeicher, lokaler Speicher bzw. Grafikspeicher 140 ist
ebenfalls enthalten, aber in Strichlinien dargestellt. Die Strichlinien bedeuten,
dass herkömmliche
Computersysteme diesen Speicher enthalten, wohingegen Ausführungsformen
der vorliegenden Erfindung ein Weglassen dieses Speichers erlauben.
Diese Figur, wie auch die anderen enthaltenen Figuren, ist nur zur Veranschaulichungszwecken
dargestellt und schränkt
weder die möglichen
Ausführungsformen der
vorliegenden Erfindung noch die Ansprüche ein.
-
Die
CPU 100 ist mit dem SPP 110 über den Hostbus 105 verbunden.
Der SPP 110 kommuniziert mit der Grafikverarbeitungseinheit 130 über einen PCIE-Bus 135.
Der SPP 110 liest und schreibt Daten aus dem bzw. in den
Systemspeicher 120 über
den Speicherbus 125. Der MCP 150 kommuniziert
mit dem SPP 110 über
eine Hochgeschwindigkeitsverbindung, wie zum Beispiel einen HyperTransport-Bus 155,
und verbindet das Netzwerk 160 sowie interne und periphere
Geräte 170 mit
dem Rest des Computersystems. Die Grafikverarbeitungseinheit 130 empfängt Daten über den
PCIE-Bus 135 und erzeugt Grafik- und Videobilder zur Anzeige über einen
Monitor oder eine andere Anzeigevorrichtung (nicht dargestellt).
In anderen Ausführungsformen
der vorliegenden Erfindung ist die Grafikverarbeitungseinheit in
einem integrierten Grafikprozessor (IGP) enthalten, der anstelle
des SPP 110 verwendet wird. In weiteren Ausführungsformen
kann eine Allzweck-GPU als die GPU 130 verwendet werden.
-
Die
CPU 100 kann ein Prozessor sein, wie zum Beispiel einer
von jenen, die von der Intel Corporation oder anderen Anbietern
hergestellt werden und die dem Fachmann vertraut sind. Der SPP 110 und
der MCP 150 werden gemeinhin als ein Chipsatz bezeichnet.
Der Systemspeicher 120 ist oft eine Anzahl dynamischer
Direktzugriffsspeicherbausteine, die in einer Anzahl von Dual Inline
Memory-Modulen (DIMMs) angeordnet sind. Die Grafikverarbeitungseinheit 130,
der SPP 110, der MCP 150 und der IGP stammen,
wenn sie verwendet werden, vorzugsweise von der NVIDIA Corporation.
-
Die
Grafikverarbeitungseinheit 130 kann sich auf einer Grafikkarte
befinden, während
die CPU 100, der Systemplattformprozessor 110,
der Systemspeicher 120 und der Medienkommunikationsprozessor 150 auf
der Hauptplatine eines Computersystems angeordnet sein können. Die
Grafikkarte, welche die Grafikverarbeitungseinheit 130 enthält, ist
in der Regel eine gedruckte Datenleiterplatte, auf der die Grafikverarbeitungseinheit
montiert ist. Die Leiterplatte enthält in der Regel einen Anschluss,
zum Beispiel einen PCIE-Steckverbinder,
der ebenfalls auf der Leiterplatte angebracht ist und in einen auf
der Hauptplatine angeordneten PCIE-Steckplatz hineinpasst, der auf
der Hauptplatine angeordnet ist. In anderen Ausführungsformen der vorliegenden
Erfindung ist der Grafikprozessor auf der Hauptplatine angeordnet oder
in einen IGP eingebunden.
-
Ein
Computersystem, wie zum Beispiel das veranschaulichte Computersystem,
kann mehrere GPUs 130 enthalten. Außerdem kann jede dieser Grafikverarbeitungseinheiten
auf separaten Grafikkarten angeordnet sein. Zwei oder mehr dieser
Grafikkarten können über eine
Kurzschlussbrücke
(Jumper) oder ein anderes Verbindungselement zusammengefügt sein.
Bei der bahnbrechenden SLITM-Technologie,
die von der NVIDIA Corporation entwickelt wurde, handelt es sich
um eine solche Technologie. In anderen Ausführungsformen der vorliegenden
Erfindung können
eine oder mehrere GPUs auf einer oder mehreren Grafikkarten angeordnet
sein, während
eine oder mehrere weitere GPUs auf der Hauptplatine angeordnet sind.
-
In
früher
entwickelten Computersystemen kommunizierte die GPU 130 mit
dem Systemplattformprozessor 110 oder einer anderen Komponente, wie
zum Beispiel einem Intel® 82845 Memory Controller
Hub (MCH), auch bezeichnet als "Northbridge", über einen
AGP-Bus. Leider waren die AGP-Busse nicht in der Lage, der GPU 130 die
benötigten
Daten mit der erforderlichen Rate zuzuführen. Daher wurde ein Bildwiederholspeicher 140 zur
Verwendung durch die GPU vorgesehen. Dieser Speicher gestattete
Zugriff auf Daten, ohne dass die Daten den AGP-Engpass passieren
mussten.
-
Inzwischen
stehen schnellere Datenübertragungsprotokolle,
wie zum Beispiel PCIE und HyperTransport, zur Verfügung. Insbesondere
ist von der NVIDIA Corporation eine verbesserte PCIE-Schnittstelle
entwickelt worden. Dementsprechend ist die Übertragungsbandbreite von der
GPU
130 zum Systemspeicher
120 deutlich vergrößert worden.
Infolgedessen wird bei Ausführungsformen
der vorliegenden Erfindung ein Weglassen des Bildwiederholspeichers
140 vorgesehen
und ermöglicht.
Beispiele für weitere
Verfahren und Schaltungen, die bei Weglassen des Bildwiederholspeichers
verwendet werden können,
finden sich in der derzeit ebenfalls anhängigen und in gleichem Besitz
befindlichen
US-Patentanmeldung
Nr. 11/253,438 , eingereicht am 18. Oktober 2005, mit dem
Titel "Zero Frame
Buffer", die durch
Bezugnahme in den vorliegenden Text aufgenommen wird.
-
Das
Weglassen des Bildwiederholspeichers, das durch Ausführungsformen
der vorliegenden Erfindung ermöglicht
wird, ermöglicht
Einsparungen, welche nicht nur das Fehlen dieser DRAMs, sondern auch
weitere Einsparungen betreffen. Zum Beispiel wird normalerweise
ein Spannungsregler verwendet, um die Spannungsversorgung zu den
Speichern zu steuern, und Kondensatoren werden verwendet, um die
Versorgungsspannung zu filtern. Durch Weglassen der DRAMs, des Reglers
und der Kondensatoren ist eine Kostenersparnis vorgesehen, welche
die Materialstückliste
für die
Grafikkarte verringert. Darüber hinaus
wird das Leiterplattenlayout vereinfacht, der Platzbedarf der Leiterplatte
wird verringert, und das Testen der Grafikkarte wird vereinfacht.
Diese Faktoren reduzieren den Forschungs- und Planungsaufwand und
weitere Entwicklungs- und Testkosten, wodurch die Bruttogewinnspannen
für Grafikkarten
steigen, die Ausführungsformen
der vorliegenden Erfindung enthalten.
-
Zwar
eignen sich Ausführungsformen
der vorliegenden Erfindung gut zur Verbesserung der Leistung von
Nullrahmenpuffer-Grafikprozessoren, doch es können auch andere Grafikprozessoren,
einschließlich
jener mit begrenzten oder On-Chip-Speichern oder begrenztem lokalen
Speicher, durch die Aufnahme von Ausführungsformen der vorliegenden Erfindung
verbessert werden. Des Weiteren sieht diese Ausführungsform zwar ein Computersystem
eines bestimmten Typs vor, das durch die Aufnahme einer Ausführungsform
der vorliegenden Erfindung verbessert werden kann, doch es können auch
andere Arten elektronischer oder Computersysteme verbessert werden.
Zum Beispiel können
Video- und andere Spielsysteme, Navigationssysteme, Set-Top-Boxen,
Pachinko-Maschinen und andere Arten von Systemen durch die Aufnahme
von Ausführungsformen
der vorliegenden Erfindung verbessert werden.
-
Obzwar
diese Arten von Computersystemen und die anderen elektronischen
Systeme, die im vorliegenden Text beschrieben sind, heute die gängigen Typen
sind, werden derzeit auch andere Arten von Computer- und anderen
elektronischen Systemen entwickelt, und weitere werden in der Zukunft
entwickelt werden. Es wird erwartet, dass viele davon ebenfalls
durch die Aufnahme von Ausführungsformen
der vorliegenden Erfindung verbessert werden können. Dementsprechend sind
die angeführten
konkreten Beispiele nur erläuternder
Art und schränken weder
die möglichen
Ausführungsformen
der vorliegenden Erfindung noch die Ansprüche ein.
-
2 ist
ein Blockschaubild eines weiteren Computersystems, das durch die
Aufnahme einer Ausführungsform
der vorliegenden Erfindung verbessert wird. Dieses Blockschaubild
enthält
eine Zentralverarbeitungseinheit oder einen Hostprozessor 200, einen
SPP 210, einen Systemspeicher 220, eine Grafikverarbeitungseinheit 230,
einen MCP 250, Netzwerke 260 und interne und periphere
Geräte 270. Auch
hier ist ein Bildwiederholspeicher, lokaler oder Grafikspeicher 240 enthalten,
aber in Strichlinien dargestellt, um sein Weglassen hervorzuheben.
-
Die
CPU 200 kommuniziert mit dem SPP 210 über den
Hostbus 205 und greift auf den Systemspeicher 220 über den
Speicherbus 225 zu. Die GPU 230 kommuniziert mit
dem SPP 210 über
den PCIE-Bus 235 und mit dem lokalen Speicher über den Speicherbus 245.
Der MCP 250 kommuniziert mit dem SPP 210 über eine
Hochgeschwindigkeitsverbindung, wie zum Beispiel einen HyperTransport-Bus 255,
und verbindet das Netzwerk 260 sowie interne und periphere
Geräte 270 mit
dem Rest des Computersystems.
-
Wie
vorstehend erwähnt,
kann die Zentralverarbeitungseinheit oder der Hostprozessor 200 eine
der Zentralverarbeitungseinheiten sein, die von der Intel Corporation
oder einem anderen Anbieter hergestellt werden und die dem Fachmann
vertraut sind. Der Grafikprozessor 230, der integrierte
Grafikprozessor 210 und der Medien- und Kommunikationsprozessor 240 stammen
vorzugsweise von der NVIDIA Corporation.
-
Das
Weglassen der Bildwiederholspeicher 140 und 240 in
den 1 und 2 und das Weglassen anderer
Bildwiederholspeicher in anderen Ausführungsformen der vorliegenden
Erfindung bleibt nicht ohne Folgen. Zum Beispiel entstehen Schwierigkeiten
hinsichtlich der Adressen, die zum Speichern und Lesen von Daten
aus dem Systemspeicher verwendet werden.
-
Wenn
eine GPU einen lokalen Speicher zum Speichern von Daten verwendet,
steht der lokale Speicher vollkommen unter der Kontrolle der GPU.
In der Regel haben keine anderen Schaltkreise Zugriff auf den lokalen
Speicher. Dadurch ist es der GPU möglich, Adressen im Blick zu
behalten und auf jede Weise, die sie für zweckdienlich erachtet, zuzuweisen.
Es wird jedoch ein Systemspeicher von mehreren Schaltkreisen verwendet,
und durch das Betriebssystem wird diesen Schaltkreisen Speicherplatz
zugewiesen. Der Speicherplatz, welcher der GPU durch ein Betriebssystem
zugewiesen wird, kann einen zusammenhängenden Speicherabschnitt bilden.
Wahrscheinlicher ist, dass der Speicherplatz, der einer GPU zugewiesen
wird, in viele Blöcke
oder Abschnitte aufgeteilt wird, von denen einige unterschiedliche
Größen haben
können.
Diese Blöcke oder
Abschnitte können
durch eine Anfangs-, Start- oder Basisadresse und eine Speichergröße oder
einen Adressbereich beschrieben werden.
-
Es
ist für
eine Grafikverarbeitungseinheit schwierig und umständlich,
die tatsächlichen
Systemspeicheradressen zu verwenden, weil die Adressen, die der
GPU bereitgestellt werden, in mehreren unabhängigen Blöcken zugewiesen werden. Des Weiteren
können
sich die Adressen, die der GPU bereitgestellt werden, jedes Mal ändern, wenn
die Spannungsversorgung eingeschaltet wird bzw. wenn Speicheradressen
neu zugewiesen werden. Für
Software, die auf der GPU läuft,
ist es viel einfacher, virtuelle Adressen zu benutzen, die von den
tatsächlichen
physikalischen Adressen im Systemspeicher unabhängig sind. Genauer gesagt,
behandeln GPUs Speicherplatz als einen großen zusammenhängenden
Block, während
der GPU Speicher in mehreren kleineren ungleichartigen Blöcken zugewiesen
wird. Dementsprechend wird, wenn Daten in den Systemspeicher geschrieben
oder aus dem Systemspeicher gelesen werden, eine Umsetzung zwischen
den virtuellen Adressen, die von der GPU verwendet werden, und den
physikalischen Adressen, die von dem Systemspeicher verwendet werden,
durchgeführt. Diese
Umsetzung kann unter Verwendung von Tabellen vorgenommen werden,
deren Einträge
virtuelle Adressen und ihre entsprechenden physikalischen Adress-Gegenparts
enthalten. Diese Tabellen werden als Seitentabellen bezeichnet,
während
die Einträge
als Seitentabelleneinträge
(Page-Table Entries, PTEs) bezeichnet werden.
-
Die
Seitentabellen sind zu groß,
um sie in einer GPU abzulegen. Dies zu tun, ist aus Kostengründen unerwünscht. Daher
werden die Seitentabellen im Systemspeicher gespeichert. Leider
bedeutet das, dass jedes Mal, wenn Daten aus dem Systemspeicher
benötigt
werden, ein erster oder weiterer Speicherzugriff erforderlich ist,
um den benötigten
Seitentabelleneintrag abzurufen, und ein zweiter Speicherzugriff,
um die erforderlichen Daten abzurufen. Deshalb werden in Ausführungsformen
der vorliegenden Erfindung einige der Daten in den Seitentabellen
in einem Grafik-TLB in der GPU zwischengespeichert.
-
Wenn
ein Seitentabelleneintrag benötigt
wird und der Seitentabelleneintrag in einem Grafik-TLB in der GPU
verfügbar
ist, spricht man von einem "Zugriffstreffer", und die Adressumsetzung
kann vonstatten gehen. Falls der Seitentabelleneintrag nicht in dem
Grafik-TLB in der
GPU gespeichert ist, spricht man von einem "Fehlzugriff".
-
Nachdem
der benötigte
Seitentabelleneintrag abgerufen wurde, besteht eine hohe Wahrscheinlichkeit,
dass eben dieser Seitentabelleneintrag erneut benötigt wird.
Daher ist es, um die Anzahl der Speicherzugriffe zu verringern,
wünschenswert, diesen
Seitentabelleneintrag in dem Grafik-TLB zu speichern. Falls es keine
leeren Speicherorte im Cache gibt, kann ein Seitentabelleneintrag,
der nicht vor Kurzem benutzt wurde, zugunsten dieses neuen Seitentabelleneintrags überschrieben
oder gelöscht werden.
In verschiedenen Ausführungsformen
der vorliegenden Erfindung wird vor dem Löschen überprüft, ob der momentan im Cache
gespeicherte Eintrag durch die Grafikverarbeitungseinheit verändert wurde,
nachdem er aus dem Systemspeicher gelesen wurde. Falls er verändert wurde,
erfolgt ein Rückschreibevorgang,
bei dem der aktualisierte Seitentabelleneintrag in den Systemspeicher
zurückgeschrieben
wird, bevor der neue Seitentabelleneintrag ihn in dem Grafik-TLB überschreibt.
In anderen Ausführungsformen
der vorliegenden Erfindung wird dieser Rückschreibevorgang nicht ausgeführt.
-
In
einer konkreten Ausführungsform
der vorliegenden Erfindung werden die Seitentabellen auf der Basis
der kleinsten Auflösung
indexiert, die das System zuweisen könnte. Zum Beispiel könnte ein PTE
ein Minimum von vier 4 kB-Blöcken
darstellen. Daher wird der interessierende Index in der Seitentabelle
durch Dividieren einer virtuellen Adresse durch 16 kB und anschließendes Multiplizieren
mit der Größe eines
Eintrags erzeugt. Nach einem Fehlzugriff auf die Grafik-TLB benutzt
die GPU den oben erwähnten
Index zum Auffinden des Seitentabelleneintrags. In dieser konkreten
Ausführungsform
kann der Seitentabelleneintrag einen oder mehrere Blöcke abbilden,
die größer als
4 kB sind. Zum Beispiel kann ein Seitentabelleneintrag mindestens
vier 4 kB-Blöcke
abbilden und kann vier, acht oder sechzehn Blöcke, die größer als 4 kB sind, bis zu einer
Größe von insgesamt
maximal 256 kB abbilden. Sobald ein solcher Seitentabelleneintrag
in den Cache geladen wurde, kann der Grafik-TLB eine virtuelle Adresse
innerhalb dieser 256 kB durch Bezugnahme auf einen einzelnen Grafik-TLB-Eintrag,
der ein einzelner PTE ist, finden. In diesem Fall ist die Seitentabelle
selbst in Form von 16-Byte-Einträgen
angeordnet, von denen jeder mindestens 16 kB abbildet. Daher wird
der 256 kB-Seitentabelleneintrag an jedem Seitentabellenort repliziert,
der in diesen virtuellen Adressraum von 256 kB Größe hineinfällt. Dementsprechend
gibt es bei diesem Beispiel sechzehn Seitentabelleneinträge mit exakt
den gleichen Informationen. Ein Fehlzugriff innerhalb der 256 kB
liest einen dieser identischen Einträge.
-
Wie
oben angesprochen, wird, falls ein benötigter Seitentabelleneintrag
nicht in dem Grafik-TLB verfügbar
ist, ein zusätzlicher
Speicherzugriff benötigt,
um den Eintrag abzurufen. Für
bestimmte Grafikfunktionen, die einen stabilen, gleichbleibenden
Zugang zu Daten erfordern, sind diese zusätzlichen Speicherzugriffe überaus unerwünscht. Zum
Beispiel benötigt
eine Grafikverarbeitungseinheit einen zuverlässigen Zugang zu Anzeigedaten,
und zwar dergestalt, dass sie Bilddaten mit einer erforderlichen
Rate an einen Monitor übermitteln
kann. Falls übermäßig viele
Speicherzugriffe erforderlich sind, kann die resultierende Verzögerungszeit
den Pixeldatenstrom zum Monitor unterbrechen, wodurch das Grafikbild unterbrochen
wird.
-
Genauer
gesagt, falls Adressumsetzungsinformationen für einen Anzeigedatenzugriff
aus dem Systemspeicher gelesen werden müssen, erfolgt dieser Zugriff
in Folge mit dem anschließenden
Datenzugriff, das heißt,
die Adressumsetzungsinformationen müssen aus dem Speicher gelesen
werden, damit die GPU in Erfahrung bringen kann, wo die benötigten Anzeigedaten
gespeichert sind. Die zusätzliche
Verzögerungszeit,
die durch diesen zusätzlichen Speicherzugriff
verursacht wird, verringert die Rate, mit der Anzeigedaten an den
Monitor übermittelt
werden können,
was wiederum das Grafikbild unterbricht. Diese zusätzlichen
Speicherzugriffe erhöhen auch
den Verkehr auf dem PCIE-Bus und vergeuden Systemspeicherbandbreite.
-
Zusätzliche
Speicherauslesungen zum Abrufen von Adressumsetzungsinformationen
sind besonders wahrscheinlich beim Hochfahren oder anderen Ereignissen,
bei denen der Grafik-TLB leer ist oder gelöscht wird. Genauer gesagt,
erwartet das Basis-Eingabe/Ausgabe-System (BIOS) beim Hochfahren eines
Computersystems, dass die GPU einen lokalen Bildwiederholspeicher
zu ihrer Verfügung
hat. Darum weist das System-BIOS bei herkömmlichen Systemen keinen Platz
im Systemspeicher zur Verwendung durch den Grafikprozessor zu. Stattdessen fordert
die GPU eine bestimmte Menge an Systemspeicherplatz vom Betriebssystem
an. Nachdem Speicherplatz durch das Betriebssystem zugewiesen wurde,
kann die GPU Seitentabelleneinträge
in den Seitentabellen im Systemspeicher speichern, aber der Grafik-TLB
ist leer. Wenn Anzeigedaten benötigt werden,
führt jede
Anfrage nach einem PTE zu einem Fehlzugriff, der wiederum zu einem
zusätzlichen Speicherzugriff
führt.
-
Daher
laden Ausführungsformen
der vorliegenden Erfindung den Grafik-TLB mit Seitentabelleneinträgen vor.
Das heißt,
der Grafik-TLB wird mit Seitentabelleneinträgen geladen, bevor Anfragen
nach ihnen zu einem Fehlzugriff auf den Cache führen. Dieses Vorladen beinhaltet
typischerweise zumindest Seitentabelleneinträge, die für das Abrufen von Anzeigedaten
benötigt
werden, obgleich auch andere Seitentabelleneinträge den Grafik-TLB vorladen können. Um
des Weiteren zu verhindern, dass Seitentabelleneinträge gelöscht werden,
können
einige Einträge
gesperrt bzw. eingeschränkt
zugreifbar gemacht werden. In einer konkreten Ausführungsform der
vorliegenden Erfindung werden Seitentabelleneinträge, die
für Anzeigedaten
benötigt
werden, gesperrt oder eingeschränkt
zugreifbar gemacht, obgleich in anderen Ausführungsformen auch andere Arten
von Daten gesperrt oder eingeschränkt zugreifbar gemacht werden
können.
Ein Flussdiagramm, das ein solches Ausführungsbeispiel veranschaulicht,
ist in der folgenden Figur dargestellt.
-
3 ist
ein Flussdiagramm, das ein Verfahren zum Zugreifen auf in einem
Systemspeicher gespeicherte Anzeigedaten gemäß einer Ausführungsform
der vorliegenden Erfindung veranschaulicht. Diese Figur, wie auch
die anderen enthaltenen Figuren, ist nur zur Veranschaulichungszwecken
gezeigt und schränkt
weder die möglichen
Ausführungsformen
der vorliegenden Erfindung noch die Ansprüche ein. Und obgleich dieses
und die anderen hier aufgezeigten Beispiele besonders gut für den Zugriff
auf Anzeigedaten geeignet sind, können auch andere Arten von
Datenzugriffen durch die Aufnahme von Ausführungsformen der vorliegenden
Erfindung verbessert werden.
-
Bei
diesem Verfahren gewährleistet
eine GPU oder, genauer gesagt, ein auf der GPU laufender Treiber
oder Ressourcenverwalter dass unter Verwendung von Umsetzungsinformationen,
die in der GPU selbst gespeichert sind, die virtuellen Adressen
in physikalische Adressen umgesetzt werden können, ohne diese Informationen
aus dem Systemspeicher abrufen zu müssen. Dies wird bewerkstelligt,
indem zunächst
Umsetzungseinträge
in einen Grafik-TLB vorgefüllt
bzw. vorgeladen werden. Die zu Anzeigedaten gehörenden Adressen werden dann gesperrt
oder auf sonstige Weise vor Überschreiben oder
Löschen
geschützt.
-
Genauer
gesagt, wird der Computer oder ein sonstiges elektronisches System
in Schritt 310 hochgefahren oder wird einem Warmstart,
einem Kaltstart oder einem ähnlichen
Vorgang unterzogen. In Schritt 320 fordert ein Ressourcenverwalter,
der Teil eines auf der GPU laufenden Treibers ist, Systemspeicherplatz
vom Betriebssystem an. Das Betriebssystem weist der GPU in Schritt 330 Speicherplatz
im Systemspeicher zu.
-
Obgleich
in diesem Beispiel das auf der CPU laufende Betriebssystem für die Zuweisung
von Bildwiederholspeicher- oder Grafikspeicherplatz im Systemspeicher
zuständig
ist, können
in verschiedenen Ausführungsformen
der vorliegenden Erfindung Treiber oder sonstige auf der CPU oder
einer anderen Systemkomponente laufende Software für diese
Aufgabe zuständig
sein. In anderen Ausführungsformen ist
diese Aufgabe zwischen dem Betriebssystem und einem oder mehreren
der Treiber oder sonstiger Software aufgeteilt. In Schritt 340 empfängt der
Ressourcenverwalter die physikalischen Adress-Informationen für den Speicherplatz
im Systemspeicher vom Betriebssystem. Diese Informationen enthalten in
der Regel zumindest die Basisadresse und die Größe oder den Bereich von einem
oder mehreren Abschnitten im Systemspeicher.
-
Der
Ressourcenverwalter kann dann diese Informationen so verdichten
bzw. anordnen, dass die Anzahl an Seitentabelleneinträgen, die
benötigt
werden, um virtuelle, von der GPU verwendete Adressen in physikalische,
vom Systemspeicher verwendete Adressen umzusetzen, begrenzt ist.
Zum Beispiel können
separate, aber zusammenhängende
Blöcke aus
Systemspeicherplatz, der der GPU durch das Betriebssystem zugewiesen
wurde, kombiniert werden, wobei eine einzelne Basisadresse als Startadresse
verwendet wird und virtuelle Adressen als ein Indexsignal. Beispiele,
die dies zeigen, finden sich in der derzeit ebenfalls anhängigen und
in gleichem Besitz befindlichen
US-Patentanmeldung
Nr. 11/077,662 mit dem Titel "Memory Management for Virtual Address
Space with Translation Units of Variable Range Size", eingereicht am
10. März
2005, die durch Bezugnahme in den vorliegenden Text aufgenommen
wird. Und obgleich in diesem Beispiel diese Aufgabe in die Zuständigkeit
eines Ressourcenverwalters fallt, der Teil eines auf der GPU laufenden Treibers
ist, können
in anderen Ausführungsformen diese
und weitere Aufgaben, die in diesem und in den anderen hier enthaltenen
Beispielen aufgezeigt sind, auch durch andere Software, Firmware
oder Hardware ausgeführt
oder gemeinsam ausgeführt
werden.
-
In
Schritt 350 schreibt der Ressourcenverwalter Umsetzungseinträge in die
im Systemspeicher gespeicherten Seitentabellen. Der Ressourcenverwalter
lädt oder
füllt auch
den Grafik-TLB mit mindestens einigen dieser Umsetzungseinträge vor.
In Schritt 360 können
einige oder sämtliche
der Grafik-TLB-Einträge
gesperrt oder auf sonstige Weise vor einem Löschen geschützt werden. In einer konkreten
Ausführungsform
der vorliegenden Erfindung werden Adressen für angezeigte Daten vor einem Überschreiben
oder einem Löschen
geschützt,
um zu gewährleisten,
dass Adressen für
Anzeigeinformationen bereitgestellt werden können, ohne dass zusätzliche
Systemspeicherzugriffe für
Adressumsetzungsinformationen nötig
sind.
-
Dieses
Sperren kann unter Verwendung verschiedener Verfahren gemäß Ausführungsformen der
vorliegenden Erfindung bewerkstelligt werden. Sofern zum Beispiel
eine Anzahl von Clients in der Lage ist, Daten aus dem Grafik-TLB
zu lesen, können einem
oder mehreren dieser Clients derartige Beschränkungen auferlegt werden, dass
sie keine Daten in zugriffsbeschränkte Cache-Speicherorte schreiben
können,
sondern in einen Cache-Bereich, der
aus einer Anzahl zusammengefasster oder uneingeschränkt zugreifbarer
Cache-Zeilen besteht, schreiben
müssen.
Weitere Details finden sich in der derzeit ebenfalls anhängigen und
in gleichem Besitz befindlichen
US-Patentanmeldung
Nr. 11/298,256 mit dem Titel "Shared Cache with Client-Specific Replacement
Policy", eingereicht
am 8. Dezember 2005, die durch Bezugnahme in den vorliegenden Text
aufgenommen wird. In anderen Ausführungsformen können andere
Beschränkungen
Schaltkreisen auferlegt werden, die Daten in den Grafik-TLB schreiben
können,
oder es können
Daten, wie zum Beispiel ein Signalisierungsbit, mit den Einträgen in dem
Grafik-TLB gespeichert werden. Zum Beispiel kann das Vorhandensein
einiger Cache-Zeilen vor Schaltkreisen verborgen werden, die Daten
in den Grafik-TLB schreiben können.
Alternativ dazu können,
wenn ein Signalisierungsbit gesetzt ist, die Daten in der zugehörigen Cache-Zeile
weder überschrieben
noch gelöscht
werden.
-
In
Schritt 370 werden, wenn Anzeige- oder andere Daten aus
dem Systemspeicher benötigt
werden, die von der GPU verwendeten virtuellen Adressen unter Verwendung
von Seitentabelleneinträgen in
dem Grafik-TLB in physikalische Adressen umgesetzt. Genauer gesagt,
wird dem Grafik-TLB eine virtuelle Adresse bereitgestellt, und die
entsprechende physikalische Adresse wird gelesen. Falls diese Informationen
nicht in dem Grafik-TLB gespeichert sind, müssen sie wiederum aus dem Systemspeicher angefordert
werden, bevor die Adressumsetzung stattfinden kann.
-
Bei
verschiedenen Ausführungsformen
der vorliegenden Erfindung können
andere Techniken aufgenommen werden, um die Auswirkungen eines Fehlzugriffs
auf den Grafik-TLB
zu begrenzen. Genauer gesagt, können
zusätzliche
Schritte unternommen werden, um die Speicherzugriffsverzögerungszeit
zu verkürzen,
wodurch die Auswirkung eines Cache-Fehlzugriffs auf die Bereitstellung
von Anzeigedaten verringert wird. Eine Lösung ist die Nutzung des virtuellen
Kanals VC1, der ein Teil der PCIE-Spezifikation ist. Falls ein Fehlzugriff
auf den Grafik-TLB den virtuellen Kanal VC1 nutzt, könnte er
andere Anfragen umgehen, wodurch ermöglicht wird, den benötigten Eintrag
schneller abzurufen. Jedoch gestatten herkömmliche Chipsätze keinen
Zugriff auf den virtuellen Kanal VC1. Obgleich des Weiteren die
NVIDIA Corporation eine solche Lösung
in einem Produkt in einer der vorliegenden Erfindung gemäßen Weise
implementieren könnte,
lässt es
die Interoperabilität
mit anderen Geräten
derzeit nicht ratsam erscheinen, dies zu tun, auch wenn sich das
in der Zukunft ändern
kann. Eine andere Lösung
beinhaltet das Priorisieren oder Markieren von Anfragen, die aus
Fehlzugriffen auf den Grafik-TLB resultieren. Zum Beispiel könnte eine
Anfrage mit einem Signalisierungsbit von hoher Priorität gekennzeichnet
werden. In Bezug auf diese Lösung
bestehen ähnliche Bedenken
hinsichtlich der Interoperabilität
wie bei der oben erwähnten
Lösung.
-
4A–C veranschaulichen Übertragungen von
Befehlen und Daten in einem Computersystem während eines Verfahrens zum
Zugreifen auf Anzeigedaten gemäß einer
Ausführungsform
der vorliegenden Erfindung. In diesem konkreten Beispiel ist das
Computersystem von 1 dargestellt, obgleich Befehls-
und Datenübertragungen
in anderen Systemen, wie zum Beispiel dem in 2 dargestellten System, ähnlich sind.
-
In 4A sendet
die GPU im Fall eines Hochfahrens, eines Kaltstarts, eines Warmstarts oder
eines sonstigen Ereignisses eine Anfrage nach Systemspeicherplatz
an das Betriebssystem. Diese Anfrage kann wiederum von einem auf
dem GPU laufenden Treiber kommen. Insbesondere kann eine Komponente
der Ressourcenverwaltung des Treibers diese Anfrage tätigen, obgleich
auch andere Hardware, Firmware oder Software diese Anfrage tätigen kann.
Diese Anfrage kann von der GPU 430 über den Systemplattformprozessor 410 zur
Zentralverarbeitungseinheit 400 weitergeleitet werden.
-
In 4B weist
das Betriebssystem der GPU Speicherplatz im Systemspeicher zur Verwendung
als Bildwiederholspeicher oder Grafikspeicher 422 zu. Zu
den Daten, die in dem Bildwiederholspeicher oder Grafikspeicher 422 gespeichert
sind, können
Anzeigedaten, das heißt
Pixelwerte zum Anzeigen, Texturen, Texturdeskriptoren, Shaderprogrammanweisungen
sowie sonstige Daten und Befehle gehören.
-
In
diesem Beispiel ist der zugewiesene Speicherplatz, der Bildwiederholspeicher 422 im
Systemspeicher 420, als zusammenhängend dargestellt. In anderen
Ausführungsformen
oder Beispielen kann der zugewiesene Speicherplatz auch nicht zusammenhängend sein,
das heißt,
er kann ungleichartig und in mehrere Abschnitte aufgeteilt sein.
-
Informationen,
die in der Regel eine oder mehrere Basisadressen und Bereiche von
Abschnitten des Systemspeichers enthalten, werden an die GPU weitergeleitet.
Wiederum werden in einer konkreten Ausführungsform der vorliegenden
Erfindung diese Informationen an eine Komponente des Ressourcenverwalters
eines auf dem GPU laufenden Treibers übermittelt, obgleich auch andere
Software, Firmware oder Hardware benutzt werden kann. Diese Informationen
können
von der CPU 400 über
den Systemplattformprozessor 410 an die GPU 430 weitergeleitet
werden.
-
In 4C schreibt
die GPU Umsetzungseinträge
in die Seitentabellen im Systemspeicher. Die GPU lädt auch
den Grafik-TLB mit mindestens einigen dieser Umsetzungseinträge vor.
Wiederum setzen diese Einträge
virtuelle, von der GPU verwendete Adressen in physikalische Adressen
um, die von dem Bildwiederholspeicher 422 in dem Systemspeicher 420 verwendet
werden.
-
Wie
vorstehend ausgeführt,
können
einige der Einträge
in dem Grafik-TLB gesperrt bzw. eingeschränkt zugreifbar gemacht werden,
und zwar dergestalt, dass sie weder gelöscht noch überschrieben werden können. Wiederum
werden in einer konkreten Ausführungsform
der vorliegenden Erfindung Einträge,
welche die Adressen zur Identifikation von Bereichen im Bildwiederholspeicher 422 umsetzen, an
denen Pixel- oder Anzeigedaten gespeichert sind, gesperrt bzw. eingeschränkt zugreifbar
gemacht.
-
Wenn
auf Daten aus dem Bildwiederholspeicher 422 zugegriffen
werden muss, werden virtuelle, von der GPU 430 verwendete
Adressen in physikalische Adressen, die von dem Grafik-TLB 432 verwendet
werden, umgesetzt. Diese Anfragen werden dann zu dem Systemplattformprozessor 410 übermittelt, der
die angeforderten Daten liest und sie an die GPU 430 zurücksendet.
-
In
den obigen Beispielen sendet die GPU im Anschluss an ein Hochfahren
oder einen anderen Kaltstart bzw. einen ähnlichen Zustand eine Anfrage nach
Speicherplatz im Systemspeicher an das Betriebssystem. In anderen
Ausführungsformen
der vorliegenden Erfindung ist der Umstand, dass die GPU Speicherplatz
im Systemspeicher braucht, bekannt, und es muss keine Anfrage getätigt werden.
In diesem Fall kann im Anschluss an ein Hochfahren, einen Kaltstart,
einen Warmstart oder ein anderes entsprechendes Ereignis ein System-BIOS,
ein Betriebssystem oder eine andere Software, Firmware oder Hardware
Speicherplatz im Systemspeicher zuweisen. Das ist besonders in einer
kontrollierten Umgebung durchführbar,
wie zum Beispiel einer mobilen Anwendung, in der GPUs nicht ohne
Weiteres ausgelagert oder ersetzt werden, wie es oft in einer Desktop-Anwendung
der Fall ist.
-
Die
GPU kann die Adressen, die sie in dem Systemspeicher verwenden soll,
bereits kennen, oder die Adressinformationen können durch das System-BIOS
oder das Betriebssystem an die GPU übermittelt werden. In beiden
Fällen
kann der Speicherplatz ein zusammenhängender Speicherabschnitt sein,
wobei die GPU in diesem Fall nur eine einzelne Adresse, die Basisadresse,
kennen oder übermittelt bekommen
muss. Alternativ dazu kann der Speicherplatz ungleichartig oder
nicht zusammenhängend sein,
und die GPU muss möglicherweise
mehrere Adressen kennen oder übermittelt
bekommen. In der Regel sind der GPU auch andere Informationen, wie zum
Beispiel Speicherblockgrößen- oder
Speicherbereichsinformationen, bekannt oder werden an sie übermittelt.
-
Des
Weiteren kann in verschiedenen Ausführungsformen der vorliegenden
Erfindung Speicherplatz im Systemspeicher durch das System durch
ein Betriebssystem beim Hochfahren zugewiesen werden, und die GPU
kann eine Anfrage nach mehr Speicher zu einem späteren Zeitpunkt tätigen. In
einem solchen Beispiel können
sowohl das System-BIOS als auch das Betriebssystem Speicherplatz
im Systemspeicher zur Verwendung durch die GPU zuweisen. Die folgende
Figur zeigt ein Beispiel einer Ausführungsform der vorliegenden
Erfindung, bei der ein System-BIOS programmiert ist, einer GPU beim
Hochfahren Systemspeicherplatz zuzuweisen.
-
5 ist
ein Flussdiagramm, das ein weiteres Verfahren zum Zugreifen auf
Anzeigedaten in einem Systemspeicher gemäß einer Ausführungsform der
vorliegenden Erfindung veranschaulicht. Auch hier eignen sich Ausführungsformen
der vorliegenden Erfindung zwar gut zum Ermöglichen eines Zugriffs auf
Anzeigedaten, doch können
verschiedene Ausführungsformen
auch einen Zugriff auf diese oder auf andere Arten von Daten ermöglichen.
In diesem Beispiel weiß das
System-BIOS beim Hochfahren, dass Speicherplatz im Systemspeicher
zur Verwendung durch die GPU zugewiesen werden muss. Dieser Speicherplatz
kann zusammenhängend
oder nicht zusammenhängend
sein. Des Weiteren leitet das System-BIOS in diesem Beispiel Speicher-
und Adressinformationen zu einem Ressourcenverwalter oder einer
anderen Treiberkomponente einer GPU zu, obgleich auch in anderen
Ausführungsformen
der vorliegenden Erfindung der Ressourcenverwalter oder die andere
Treiberkomponente der GPU die Adressinformationen schon vorher kennen
kann.
-
Genauer
gesagt, in Schritt 510 fährt der Computer oder ein anderes
elektronisches Gerät hoch.
In Schritt 520 weist das System-BIOS oder eine andere entsprechende
Software, Firmware oder Hardware, wie zum Beispiel das Betriebssystem, Speicherplatz
im Systemspeicher zur Verwendung durch die GPU zu. Wenn der Speicherplatz
zusammenhängend
ist, stellt das System-BIOS eine Basisadresse an einen Ressourcenverwalter
oder einen auf der GPU laufenden Treiber bereit. Falls der Speicherplatz
nicht zusammenhängend
ist, stellt das System-BIOS eine Anzahl von Basisadressen bereit. Jede
Basisadresse ist in der Regel mit Speicherblockgrößeninformationen
verbunden, wie zum Beispiel Größen- oder
Adressbereichsinformationen. In der Regel ist der Speicherplatz
ein Speicherausschnitt eines zusammenhängenden Speicherplatzes. Diese
Informationen werden in der Regel von Adressbereichsinformationen
begleitet.
-
In
Schritt 540 werden die Basisadresse und der Speicherbereich,
der zur Verwendung in der GPU vorgesehen ist, gespeichert. Anschließende virtuelle Adressen
können
in Schritt 550 in physikalische Adressen umgewandelt werden,
indem die virtuellen Adressen als Index benutzt werden. Zum Beispiel kann
in einer konkreten Ausführungsform
der vorliegenden Erfindung eine virtuelle Adresse in eine physikalische
Adresse umgewandelt werden, indem die virtuelle Adresse der Basisadresse
addiert wird.
-
Genauer
gesagt, wird, wenn eine virtuelle Adresse in eine physikalische
Adresse umzusetzen ist, eine Bereichsüberprüfung durchgeführt. Wenn die
gespeicherte physikalische Basisadresse der virtuellen Adresse "Null" entspricht und falls
sich die virtuelle Adresse in dem Bereich befindet, kann die virtuelle
Adresse umgesetzt werden, indem sie zu der physikalischen Basisadresse
addiert wird. Gleichermaßen
kann, wenn die gespeicherte physikalische Basisadresse einer virtuellen
Adresse von "X" entspricht und falls
sich die virtuelle Adresse in dem Bereich befindet, die virtuelle
Adresse umgesetzt werden, indem sie zu der physikalischen Basisadresse addiert
und "X" subtrahiert wird.
Falls sich die virtuelle Adresse nicht in dem Bereich befindet,
kann die Adresse unter Verwendung des Grafik-TLB oder der Seitentabelleneinträge umgesetzt
werden, wie oben beschrieben.
-
6 veranschaulicht
die Übertragung
von Befehlen und Daten in einem Computersystem während eines Verfahrens zum
Zugreifen auf Anzeigedaten gemäß einer Ausführungsform
der vorliegenden Erfindung. Beim Hochfahren weist das System-BIOS Speicherplatz,
einen "Speicherausschnitt" 622 im Systemspeicher 624,
zur Verwendung durch die GPU 630 zu.
-
Die
GPU empfängt
und speichert die Basisadresse (oder Basisadressen) für einen
zugewiesenen Speicherplatz oder Speicherausschnitt 622 im Systemspeicher 620.
Diese Daten können
in dem Grafik-TLB 632 gespeichert werden, oder sie können an
einem anderen Speicherort in der GPU 630, zum Beispiel
in einem Hardware-Register, gespeichert werden. Diese Adresse wird
zum Beispiel in einem Hardware-Register zusammen mit dem Bereich
des Speicherausschnitts 622 gespeichert.
-
Wenn
Daten aus dem Bildwiederholspeicher 622 in den Systemspeicher 620 auszulesen
sind, können
die virtuellen, von der GPU verwendeten Adressen in physikalische,
vom Systemspeicher verwendete Adressen umgesetzt werden, indem die
virtuellen Adressen als Index behandelt werden. Wiederum werden
in einer konkreten Ausführungsform der
vorliegenden Erfindung virtuelle Adressen in dem Speicherausschnitts-Adressbereich
in physikalische Adressen umgesetzt, indem die virtuelle Adresse
zur Basisadresse addiert wird. Das heißt, falls die Basisadresse
der virtuellen Adresse "Null" entspricht, können virtuelle
Adressen in physikalische Adressen umgewandelt werden, indem sie
zur Basisadresse addiert werden, wie oben beschrieben. Auch hier können virtuelle
Adressen, die außerhalb
des Bereichs liegen, unter Verwendung von Grafik-TLBs oder Seitentabellen
umgesetzt werden, wie oben beschrieben.
-
7 ist
ein Blockschaubild einer Grafikverarbeitungseinheit gemäß einer
Ausführungsform
der vorliegenden Erfindung. Dieses Blockschaubild einer Grafikverarbeitungseinheit 700 enthält eine PCIE-Schnittstelle 710,
eine Grafik-Pipeline 720, einen Grafik-TLB 730 und
eine Logikschaltung 740. Die PCIE-Schnittstelle 710 überträgt und empfängt Daten über den
PCIE-Bus 750. Wiederum können in anderen Ausführungsformen
der vorliegenden Erfindung andere Arten von Bussen, die es derzeit
gibt oder die derzeit entwickelt werden, und auch jene, die in der
Zukunft entwickelt werden, verwendet werden. Die Grafikverarbeitungseinheit
ist in der Regel als Teil eines integrierten Schaltkreises ausgebildet, obgleich
in einigen Ausführungsformen
auch mehrere integrierte Schaltkreise die GPU 700 umfassen können.
-
Die
Grafik-Pipeline 720 empfängt Daten von der PCIE-Schnittstelle
und gibt Daten zur Anzeige auf einem Monitor oder einem sonstigen
Gerät aus. Der
Grafik-TLB 730 speichert Seitentabelleneinträge, die
dafür verwendet
werden, virtuelle Speicheradressen, die von der Grafik-Pipeline 720 verwendet
werden, in physikalische Speicheradressen, die vom Systemspeicher
verwendet werden, umzusetzen. Die Logikschaltung 740 steuert
den Grafik-TLB 730, überprüft, ob Sperrungen
oder sonstige Zugriffsbeschränkungen
bezüglich
der dort gespeicherten Daten vorliegen, und liest bzw. schreibt
Daten aus dem bzw. in den Cache.
-
8 ist
ein Schaubild, das eine Grafikkarte gemäß einer Ausführungsform
der vorliegenden Erfindung veranschaulicht. Die Grafikkarte 800 enthält eine
Grafikverarbeitungseinheit 810, einen Busanschluss 820 und
ein Anschlusselement zu einer zweiten Grafikkarte 830.
Der Busanschluss 820 kann ein PCIE-Steckverbinder sein,
der zum Einstecken in einen PCIE-Schlitz passend ausgelegt ist,
zum Beispiel ein PCIE-Schlitz auf der Hauptplatine eines Computersystems.
Das Anschlusselement zu einer zweiten Grafikkarte 830 kann
so konfiguriert sein, dass es mit einer Kurzschlussbrücke oder
einem sonstigen Anschlussteil zu einer oder mehreren weiteren Grafikkarten
zusammenpasst. Es können
auch weitere Komponenten, wie zum Beispiel ein Stromversorgungsregler
und Kondensatoren, enthalten sein. Es ist anzumerken, dass auf dieser
Grafikkarte kein Speicherbaustein enthalten ist.
-
Die
obige Beschreibung von Ausführungsbeispielen
der Erfindung dient lediglich dem Zweck der Veranschaulichung und
Beschreibung. Sie soll weder erschöpfend sein noch die Erfindung
auf die konkret beschriebene Ausführungsform beschränken, und
vor dem Hintergrund der vorstehenden Lehren sind viele Modifikationen
und Variationen möglich.
-
Die
Ausführungsformen
wurden so gewählt und
beschrieben, dass sie die Prinzipien der Erfindung und ihre praktischen
Anwendungen am besten erläutern,
um es dadurch anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen
Ausführungsformen
und mit verschiedenen Modifikationen, die an den konkret ins Auge
gefassten Verwendungszweck angepasst sind, zu nutzen.