[go: up one dir, main page]

DE102007032307A1 - Dedizierter Mechanismus zur Seitenabbildung in einer GPU - Google Patents

Dedizierter Mechanismus zur Seitenabbildung in einer GPU Download PDF

Info

Publication number
DE102007032307A1
DE102007032307A1 DE102007032307A DE102007032307A DE102007032307A1 DE 102007032307 A1 DE102007032307 A1 DE 102007032307A1 DE 102007032307 A DE102007032307 A DE 102007032307A DE 102007032307 A DE102007032307 A DE 102007032307A DE 102007032307 A1 DE102007032307 A1 DE 102007032307A1
Authority
DE
Germany
Prior art keywords
address
memory
page table
cache
graphics processor
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE102007032307A
Other languages
English (en)
Inventor
Peter C. Cupertino Tong
Sonny S. San Jose Yeoh
Kevin J. Campbell Kranzusch
Gary D. San Jose Lorensen
Kaymann L. Milpitas Woo
Ashish K. Santa Clara Kaul
Colyn S. Case
Stefan A. Gottschalk
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102007032307A1 publication Critical patent/DE102007032307A1/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/14Digital output to display device ; Cooperation and interconnection of the display device with other functional units
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/654Look-ahead translation
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2330/00Aspects of power supply; Aspects of display protection and defect management
    • G09G2330/02Details of power systems and of start or stop of display operation
    • G09G2330/026Arrangements or methods related to booting a display
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/121Frame memory handling using a cache memory
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G2360/00Aspects of the architecture of display systems
    • G09G2360/12Frame memory handling
    • G09G2360/125Frame memory handling using unified memory architecture [UMA]
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09GARRANGEMENTS OR CIRCUITS FOR CONTROL OF INDICATING DEVICES USING STATIC MEANS TO PRESENT VARIABLE INFORMATION
    • G09G5/00Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators
    • G09G5/36Control arrangements or circuits for visual indicators common to cathode-ray tube indicators and other visual indicators characterised by the display of a graphic pattern, e.g. using an all-points-addressable [APA] memory
    • G09G5/363Graphics controllers

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

Die vorliegende Patentanmeldung bezieht sich auf Schaltungen, Verfahren und Vorrichtungen, die Systemspeicherzugriffe zum Abrufen von Adressumsetzungsinformationen beseitigen oder verringern. In einem Beispiel werden diese Zugriffe verringert oder beseitigt, indem ein Grafik-TLB mit Einträgen vorgeladen wird, die dafür verwendet werden, virtuelle Adressen, die von einer GPU verwendet werden, in physikalische Adressen, die von einem Systemspeicher verwendet werden, umzusetzen. Umsetzungsinformationen werden beibehalten, indem Einträge in dem Grafik-TLB, die für einen Anzeigezugriff benötigt werden, gesperrt oder eingeschränkt zugreifbar gemacht werden. Dies kann durch Beschränken des Zugriffs auf bestimmte Speicherorte in dem Grafik-TLB, durch Speichern von Signalisierungsbits oder sonstigen Identifizierungsinformationen in dem Grafik-TLB oder mittels sonstiger geeigneter Verfahren bewerkstelligt werden. In einem anderen Beispiel wird einer GPU Speicherplatz durch ein System-BIOS zugewiesen, der eine Basisadresse und einen Adressbereich speichert. Virtuelle Adressen in dem Adressbereich werden umgesetzt, indem sie zu der Basisadresse addiert werden.

Description

  • 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.

Claims (20)

  1. Verfahren zum Abrufen von Daten unter Verwendung eines Grafikprozessors, das Folgendes umfasst: – Anfordern eines Zugriffs auf Speicherorte in einem Systemspeicher, – Empfangen von Adressinformationen für mindestens einen Block aus Speicherorten in dem Systemspeicher, wobei die Adressinformationen Informationen enthalten, die mindestens eine physikalische Speicheradresse identifizieren, und – Speichern eines der physikalischen Speicheradresse entsprechenden Seitentabelleneintrags in einem Cache, wobei die Adressinformationen in dem Cache empfangen werden und der Seitentabelleneintrag in dem Cache gespeichert wird, ohne auf das Eintreten eines Fehlzugriffs auf den Cache zu warten.
  2. Verfahren nach Anspruch 1, das des Weiteren Folgendes umfasst: Speichern des Seitentabelleneintrags im Systemspeicher.
  3. Verfahren nach Anspruch 2, das des Weiteren Folgendes umfasst: Sperren des Speicherortes in dem Cache, in dem der Seitentabelleneintrag gespeichert wird.
  4. Verfahren nach Anspruch 3, wobei der Grafikprozessor eine Grafikverarbeitungseinheit ist.
  5. Verfahren nach Anspruch 3, wobei der Grafikprozessor in einem integrierten Grafikprozessor enthalten ist.
  6. Verfahren nach Anspruch 3, wobei die Anforderung nach einem Zugriff auf einen Speicherort in einem Systemspeicher an ein Betriebssystem gerichtet wird.
  7. Verfahren nach Anspruch 3, wobei die Informationen, die mindestens eine physikalische Speicheradresse identifizieren, eine Basisadresse und eine Speicherblockgröße umfassen.
  8. Grafikprozessor, der Folgendes umfasst: – eine Datenschnittstelle zum Übermitteln einer Anfrage nach einem Zugriff auf Speicherorte in einem Systemspeicher und zum Empfangen von Adressinformationen bezüglich Speicherorten in dem Systemspeicher, wobei die Adressinformationen Informationen enthalten, die mindestens eine physikalische Speicheradresse identifizieren, – einen Cache-Controller zum Schreiben eines Seitentabelleneintrags, welcher der physikalischen Speicheradresse entspricht, und – einen Cache zum Speichern des Seitentabelleneintrags, wobei die Adressinformationen in dem Cache empfangen werden und der Seitentabelleneintrag in dem Cache gespeichert wird, ohne auf das Eintreten eines Fehlzugriffs auf den Cache zu warten.
  9. Grafikprozessor nach Anspruch 8, wobei die Datenschnittstelle auch eine Anfrage zum Speichern des Seitentabelleneintrags in dem Systemspeicher übermittelt.
  10. Grafikprozessor nach Anspruch 8, wobei die Datenschnittstelle eine Anfrage nach einem Zugriff auf Speicherorte in einem Systemspeicher im Anschluss an ein Hochfahren des Systems übermittelt.
  11. Grafikprozessor nach Anspruch 8, wobei der Cache-Controller den Speicherort sperrt, an dem der Seitentabelleneintrag gespeichert ist.
  12. Grafikprozessor nach Anspruch 8, wobei der Cache-Controller den Zugriff auf den Speicherort einschränkt, an dem die virtuelle Adresse und die physikalische Adresse gespeichert sind.
  13. Grafikprozessor nach Anspruch 8, wobei die Datenschnittstellenschaltung eine PCIE-Schnittstellenschaltung ist.
  14. Grafikprozessor nach Anspruch 8, wobei der Grafikprozessor eine Grafikverarbeitungseinheit ist.
  15. Grafikprozessor nach Anspruch 8, wobei der Grafikprozessor in einem integrierten Grafikprozessor enthalten ist.
  16. Verfahren zum Abrufen von Daten unter Verwendung eines Grafikprozessors, das Folgendes umfasst: Empfangen einer Basisadresse und eines Bereichs für einen Speicherblock in einem Systemspeicher, – Speichern der Basisadresse und des Bereichs, – Empfangen einer ersten Adresse, – Feststellen, ob die erste Adresse innerhalb des Bereichs liegt, und wenn das der Fall ist, – Umsetzen der ersten Adresse in eine zweite Adresse durch Addieren der Basisadresse zu der ersten Adresse, andernfalls – Lesen eines Seitentabelleneintrags aus einem Cache und – Umsetzen der ersten Adresse in eine zweite Adresse unter Verwendung des Seitentabelleneintrags.
  17. Verfahren nach Anspruch 16, das des Weiteren umfasst, vor dem Lesen eines Seitentabelleneintrags aus dem Cache den Seitentabelleneintrag in dem Cache zu speichern, ohne auf das Eintreten eines Fehlzugriffs auf den Cache zu warten.
  18. Verfahren nach Anspruch 16, das des Weiteren umfasst, vor dem Lesen eines Seitentabelleneintrags aus dem Cache festzustellen, ob die Seitentabelle im Cache gespeichert ist, und, wenn das nicht der Fall ist, den Seitentabelleneintrag aus dem Systemspeicher zu lesen.
  19. Verfahren nach Anspruch 16, wobei der Grafikprozessor eine Grafikverarbeitungseinheit ist.
  20. Verfahren nach Anspruch 16, wobei der Grafikprozessor in einem integrierten Grafikprozessor enthalten ist.
DE102007032307A 2006-07-31 2007-07-11 Dedizierter Mechanismus zur Seitenabbildung in einer GPU Ceased DE102007032307A1 (de)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US82095206P 2006-07-31 2006-07-31
US60/820,952 2006-07-31
US82112706P 2006-08-01 2006-08-01
US60/821,127 2006-08-01
US11/689,485 US20080028181A1 (en) 2006-07-31 2007-03-21 Dedicated mechanism for page mapping in a gpu
US11/689,485 2007-03-21

Publications (1)

Publication Number Publication Date
DE102007032307A1 true DE102007032307A1 (de) 2008-02-14

Family

ID=38461494

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102007032307A Ceased DE102007032307A1 (de) 2006-07-31 2007-07-11 Dedizierter Mechanismus zur Seitenabbildung in einer GPU

Country Status (7)

Country Link
US (1) US20080028181A1 (de)
JP (1) JP4941148B2 (de)
KR (1) KR101001100B1 (de)
DE (1) DE102007032307A1 (de)
GB (1) GB2440617B (de)
SG (1) SG139654A1 (de)
TW (1) TWI398771B (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101636778B (zh) * 2007-03-15 2011-12-28 日本电气株式会社 半导体集成电路装置
US20080276067A1 (en) * 2007-05-01 2008-11-06 Via Technologies, Inc. Method and Apparatus for Page Table Pre-Fetching in Zero Frame Display Channel
US8024547B2 (en) * 2007-05-01 2011-09-20 Vivante Corporation Virtual memory translation with pre-fetch prediction
US7827333B1 (en) * 2008-02-04 2010-11-02 Nvidia Corporation System and method for determining a bus address on an add-in card
US8219778B2 (en) * 2008-02-27 2012-07-10 Microchip Technology Incorporated Virtual memory interface
US8392667B2 (en) * 2008-12-12 2013-03-05 Nvidia Corporation Deadlock avoidance by marking CPU traffic as special
TWI514324B (zh) * 2010-11-30 2015-12-21 Ind Tech Res Inst 影像目標區域追蹤系統與方法及電腦程式產品
US9977800B2 (en) 2011-03-14 2018-05-22 Newsplug, Inc. Systems and methods for enabling a user to operate on displayed web content via a web browser plug-in
US9053037B2 (en) * 2011-04-04 2015-06-09 International Business Machines Corporation Allocating cache for use as a dedicated local storage
US9164923B2 (en) 2011-07-01 2015-10-20 Intel Corporation Dynamic pinning of virtual pages shared between different type processors of a heterogeneous computing platform
KR20160122278A (ko) 2012-08-18 2016-10-21 퀄컴 테크놀로지스, 인크. 프리페칭을 갖는 변환 색인 버퍼
US20140101405A1 (en) * 2012-10-05 2014-04-10 Advanced Micro Devices, Inc. Reducing cold tlb misses in a heterogeneous computing system
US9720858B2 (en) 2012-12-19 2017-08-01 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9697006B2 (en) 2012-12-19 2017-07-04 Nvidia Corporation Technique for performing memory access operations via texture hardware
US9348762B2 (en) 2012-12-19 2016-05-24 Nvidia Corporation Technique for accessing content-addressable memory
US9292453B2 (en) * 2013-02-01 2016-03-22 International Business Machines Corporation Storing a system-absolute address (SAA) in a first level translation look-aside buffer (TLB)
US9619364B2 (en) 2013-03-14 2017-04-11 Nvidia Corporation Grouping and analysis of data access hazard reports
US9886736B2 (en) 2014-01-20 2018-02-06 Nvidia Corporation Selectively killing trapped multi-process service clients sharing the same hardware context
US10152312B2 (en) 2014-01-21 2018-12-11 Nvidia Corporation Dynamic compiler parallelism techniques
US9507726B2 (en) 2014-04-25 2016-11-29 Apple Inc. GPU shared virtual memory working set management
US9563571B2 (en) 2014-04-25 2017-02-07 Apple Inc. Intelligent GPU memory pre-fetching and GPU translation lookaside buffer management
US9594697B2 (en) * 2014-12-24 2017-03-14 Intel Corporation Apparatus and method for asynchronous tile-based rendering control
CN106560798B (zh) * 2015-09-30 2020-04-03 杭州华为数字技术有限公司 一种内存访问方法、装置及计算机系统
DE102016219202A1 (de) * 2016-10-04 2018-04-05 Robert Bosch Gmbh Verfahren und Vorrichtung zum Schützen eines Arbeitsspeichers
US10417140B2 (en) * 2017-02-24 2019-09-17 Advanced Micro Devices, Inc. Streaming translation lookaside buffer
EP3800527B1 (de) * 2018-06-12 2025-01-22 Huawei Technologies Co., Ltd. Speicherverwaltungsverfahren, -vorrichtung und -system
US11436292B2 (en) 2018-08-23 2022-09-06 Newsplug, Inc. Geographic location based feed
US12461712B2 (en) 2018-10-15 2025-11-04 The Board Of Trustees Of The University Of Illinois In-memory near-data approximate acceleration
US11604654B2 (en) 2018-10-23 2023-03-14 Nvidia Corporation Effective and scalable building and probing of hash tables using multiple GPUs
CN111274166B (zh) * 2018-12-04 2022-09-20 展讯通信(上海)有限公司 Tlb的预填及锁定方法和装置
US11550728B2 (en) * 2019-09-27 2023-01-10 Advanced Micro Devices, Inc. System and method for page table caching memory
CN111338988B (zh) * 2020-02-20 2022-06-14 西安芯瞳半导体技术有限公司 内存访问方法、装置、计算机设备和存储介质
US12326816B2 (en) * 2020-12-21 2025-06-10 Intel Corporation Technologies for offload device fetching of address translations

Family Cites Families (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4677546A (en) * 1984-08-17 1987-06-30 Signetics Guarded regions for controlling memory access
JPS62237547A (ja) * 1986-04-09 1987-10-17 Hitachi Ltd アドレス変換方式
JP2635058B2 (ja) * 1987-11-11 1997-07-30 株式会社日立製作所 アドレス変換方式
JP2689336B2 (ja) * 1988-07-29 1997-12-10 富士通株式会社 コンピュータシステムに於けるアダプタ用アドレス変換装置
US5058003A (en) * 1988-12-15 1991-10-15 International Business Machines Corporation Virtual storage dynamic address translation mechanism for multiple-sized pages
US5394537A (en) * 1989-12-13 1995-02-28 Texas Instruments Incorporated Adaptive page placement memory management system
JPH0418650A (ja) * 1990-05-14 1992-01-22 Toshiba Corp メモリ管理装置
EP0508577A1 (de) * 1991-03-13 1992-10-14 International Business Machines Corporation Adressübersetzungseinrichtung
US5617554A (en) * 1992-02-10 1997-04-01 Intel Corporation Physical address size selection and page size selection in an address translator
US5465337A (en) * 1992-08-13 1995-11-07 Sun Microsystems, Inc. Method and apparatus for a memory management unit supporting multiple page sizes
US5555387A (en) * 1995-06-06 1996-09-10 International Business Machines Corporation Method and apparatus for implementing virtual memory having multiple selected page sizes
US5479627A (en) * 1993-09-08 1995-12-26 Sun Microsystems, Inc. Virtual address to physical address translation cache that supports multiple page sizes
US5446854A (en) * 1993-10-20 1995-08-29 Sun Microsystems, Inc. Virtual memory computer apparatus and address translation mechanism employing hashing scheme and page frame descriptor that support multiple page sizes
SG45399A1 (en) * 1994-01-12 1998-01-16 Sun Microsystems Inc Logically addressable physical memory for a virtual memory computer system that support multiple page sizes
US5822749A (en) * 1994-07-12 1998-10-13 Sybase, Inc. Database system with methods for improving query performance with cache optimization strategies
JP3740195B2 (ja) * 1994-09-09 2006-02-01 株式会社ルネサステクノロジ データ処理装置
US5963984A (en) * 1994-11-08 1999-10-05 National Semiconductor Corporation Address translation unit employing programmable page size
US5958756A (en) * 1996-01-26 1999-09-28 Reynell; Christopher Paul Method and apparatus for treating waste
US5963964A (en) * 1996-04-05 1999-10-05 Sun Microsystems, Inc. Method, apparatus and program product for updating visual bookmarks
US6104417A (en) * 1996-09-13 2000-08-15 Silicon Graphics, Inc. Unified memory computer architecture with dynamic graphics memory allocation
US5928352A (en) * 1996-09-16 1999-07-27 Intel Corporation Method and apparatus for implementing a fully-associative translation look-aside buffer having a variable numbers of bits representing a virtual address entry
US5987582A (en) * 1996-09-30 1999-11-16 Cirrus Logic, Inc. Method of obtaining a buffer contiguous memory and building a page table that is accessible by a peripheral graphics device
US6308248B1 (en) * 1996-12-31 2001-10-23 Compaq Computer Corporation Method and system for allocating memory space using mapping controller, page table and frame numbers
US6349355B1 (en) * 1997-02-06 2002-02-19 Microsoft Corporation Sharing executable modules between user and kernel threads
JP3296240B2 (ja) * 1997-03-28 2002-06-24 日本電気株式会社 バス接続装置
KR100263672B1 (ko) * 1997-05-08 2000-09-01 김영환 가변적인 페이지 크기를 지원하는 어드레스 변환장치
US6249853B1 (en) * 1997-06-25 2001-06-19 Micron Electronics, Inc. GART and PTES defined by configuration registers
US5999743A (en) * 1997-09-09 1999-12-07 Compaq Computer Corporation System and method for dynamically allocating accelerated graphics port memory space
US5933158A (en) * 1997-09-09 1999-08-03 Compaq Computer Corporation Use of a link bit to fetch entries of a graphic address remapping table
US6112285A (en) * 1997-09-23 2000-08-29 Silicon Graphics, Inc. Method, system and computer program product for virtual memory support for managing translation look aside buffers with multiple page size support
US5949436A (en) * 1997-09-30 1999-09-07 Compaq Computer Corporation Accelerated graphics port multiple entry gart cache allocation system and method
US6356991B1 (en) * 1997-12-31 2002-03-12 Unisys Corporation Programmable address translation system
US6205531B1 (en) * 1998-07-02 2001-03-20 Silicon Graphics Incorporated Method and apparatus for virtual address translation
US6374341B1 (en) * 1998-09-02 2002-04-16 Ati International Srl Apparatus and a method for variable size pages using fixed size translation lookaside buffer entries
JP2001022640A (ja) * 1999-07-02 2001-01-26 Victor Co Of Japan Ltd メモリ管理方法
US6457068B1 (en) * 1999-08-30 2002-09-24 Intel Corporation Graphics address relocation table (GART) stored entirely in a local memory of an expansion bridge for address translation
US6857058B1 (en) * 1999-10-04 2005-02-15 Intel Corporation Apparatus to map pages of disparate sizes and associated methods
US6628294B1 (en) * 1999-12-31 2003-09-30 Intel Corporation Prefetching of virtual-to-physical address translation for display data
US6477612B1 (en) * 2000-02-08 2002-11-05 Microsoft Corporation Providing access to physical memory allocated to a process by selectively mapping pages of the physical memory with virtual memory allocated to the process
US6643759B2 (en) * 2001-03-30 2003-11-04 Mips Technologies, Inc. Mechanism to extend computer memory protection schemes
JP4263919B2 (ja) * 2002-02-25 2009-05-13 株式会社リコー 画像形成装置及びメモリ管理方法
US20040117594A1 (en) * 2002-12-13 2004-06-17 Vanderspek Julius Memory management method
US7194582B1 (en) * 2003-05-30 2007-03-20 Mips Technologies, Inc. Microprocessor with improved data stream prefetching
US7082508B2 (en) * 2003-06-24 2006-07-25 Intel Corporation Dynamic TLB locking based on page usage metric
US20050160229A1 (en) * 2004-01-16 2005-07-21 International Business Machines Corporation Method and apparatus for preloading translation buffers
US7321954B2 (en) * 2004-08-11 2008-01-22 International Business Machines Corporation Method for software controllable dynamically lockable cache line replacement system
JP2006195871A (ja) * 2005-01-17 2006-07-27 Ricoh Co Ltd 通信装置、電子機器、及び画像形成装置
US7519781B1 (en) * 2005-12-19 2009-04-14 Nvidia Corporation Physically-based page characterization data

Also Published As

Publication number Publication date
GB2440617A (en) 2008-02-06
GB0713574D0 (en) 2007-08-22
KR20080011630A (ko) 2008-02-05
US20080028181A1 (en) 2008-01-31
TW200817899A (en) 2008-04-16
GB2440617B (en) 2009-03-25
TWI398771B (zh) 2013-06-11
SG139654A1 (en) 2008-02-29
KR101001100B1 (ko) 2010-12-14
JP2008033928A (ja) 2008-02-14
JP4941148B2 (ja) 2012-05-30

Similar Documents

Publication Publication Date Title
DE102007032307A1 (de) Dedizierter Mechanismus zur Seitenabbildung in einer GPU
DE102011076894B9 (de) Persistenter Speicher für einen Hauptspeicher eines Prozessors
DE69524564T2 (de) Kohärenz- und synchronisationsmechanismus für ein-/ausgangkanalsteuereinheiten in einem datenverarbeitungssystem
DE3587960T2 (de) Datenverarbeitungsanlage mit einem Speicherzugriffssteuergerät.
DE69709483T2 (de) Ein Computersystem mit auf Anforderungstyp der CPU basierender Cache-Vorausladefähigkeit
DE69708188T2 (de) Speichersteuerungseinheit
DE69025302T2 (de) Hochleistungsrasterpuffer- und -cachespeicheranordnung
DE102007030116B4 (de) Snoop-Filter mit ausschließlicher Inhaberschaft
DE112008002018B4 (de) Bereitstellen eines gemeinsam genutzten Inklusiv-Cache bei Mehrkern-Cache-Clustern
DE102008048630B4 (de) Speicheranordnung und Speichersystem
DE102014100031B4 (de) Ein-Chip-System mit Speicherverwaltungseinheit und Speicheradressen-Übersetzungsverfahren hiervon
DE102013114256B4 (de) Systeme und Verfahren zur Beibehaltung der Informationskohärenz
DE102008062044A1 (de) Speicherinterne, seiteninterne Verzeichnis-Chache-Kohärenz-Konfiguration
DE112009000373T5 (de) Technik, um Information zwischen unterschiedlichen Kohärenz-Domains von Caches zu nutzen
DE202010017667U1 (de) Datenspeichervorrichtung mit Flash-Speicherchips
DE102006032832A1 (de) Netzwerksystem und Verfahren zur Steuerung verteilter Speicher
DE102014103056A1 (de) Ein-Chip-System und Verfahren des Betreibens desselben
DE10219623A1 (de) System und Verfahren zur Speicherentscheidung unter Verwendung von mehreren Warteschlangen
DE102020121508A1 (de) Cache-Speichervorrichtung, System dieselbe enthaltend und Verfahren zum Betreiben derselben
DE102013018135B4 (de) Adressenbit-Wiederabbildungsschema zur Reduzierung einer Zugriffsauflösung von DRAM-Zugriffen
DE112012004926B4 (de) Gemeinsame Speichernutzung durch Prozessoren
DE68925336T2 (de) Datenverarbeitungsvorrichtung mit Cache-Speicher
DE112017003203T5 (de) Mehr-ebenen-systemspeicher mit near-memory-scrubbing basierend auf vorhergesagter far-memory-leerlaufzeit
DE69130626T2 (de) Verfahren zur Verwaltung einer Cache-Speicheranordnung
DE69027919T2 (de) Anordnung und Verfahren zur Unterstützung des Zugriffs auf E/A-Geräte durch grosse, direkt abgebildete Datencache-Speicher

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final

Effective date: 20140613