DE69736611T2 - Reorganisation von Speicherreferenzen für Pixel in einer seitenorientierten Speicherarchitektur - Google Patents

Reorganisation von Speicherreferenzen für Pixel in einer seitenorientierten Speicherarchitektur Download PDF

Info

Publication number
DE69736611T2
DE69736611T2 DE69736611T DE69736611T DE69736611T2 DE 69736611 T2 DE69736611 T2 DE 69736611T2 DE 69736611 T DE69736611 T DE 69736611T DE 69736611 T DE69736611 T DE 69736611T DE 69736611 T2 DE69736611 T2 DE 69736611T2
Authority
DE
Germany
Prior art keywords
pixel
memory
page
references
module
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.)
Expired - Lifetime
Application number
DE69736611T
Other languages
English (en)
Other versions
DE69736611D1 (de
Inventor
B. Michael Menlo Park COX
B. Dinyar Newark LAHEWALA
Dong-Ying Pleasanton KUO
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.)
S3 Inc
Original Assignee
S3 Inc
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 S3 Inc filed Critical S3 Inc
Application granted granted Critical
Publication of DE69736611D1 publication Critical patent/DE69736611D1/de
Publication of DE69736611T2 publication Critical patent/DE69736611T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects

Landscapes

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

Description

  • Hintergrund der Erfindung
  • 1. Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich allgemein auf Texturabbildung bei Graphiksystemen und insbesondere auf ein System und ein Verfahren zum Umsortieren von Pixeln, um Bandbreite und Leistungsfähigkeit zu verbessern.
  • 2. Beschreibung des Stands der Technik
  • Texturabbildung ist der Prozeß des Abbildens eines Bilds auf eine Oberfläche in einem dreidimensionalen Graphiksystem. Diese Technik ist auf dem Gebiet gut bekannt und ist beispielsweise in J. Foley et al., Computer Grahpics: Principles and Practice 2. Ausg., Addison-Wesley, 1990, auf 741-44 beschrieben.
  • Unter Bezugnahme auf 1 ist dort ein Beispiel einer Texturabbildung gemäß dem Stand der Technik gezeigt. Das Bild, das abgebildet werden soll, wird als eine Texturabbildung 101 bezeichnet und ihre einzelnen Elemente werden als Texel bezeichnet. Die Texturabbildung 101 ist typischerweise in einem rechteckigen Koordinatenschema beschrieben, das mit (u, v) bezeichnet ist, und ist für gewöhnlich in einem bestimmten Bereich eines herkömmlichen Speichers gespeichert, wie einem herkömmlichen dynamischen Direktzugriffsspeicher (DRAM = Dynamic Random-Access Memory) mit Seitenmodus oder einem anderen Seitenspeicher. Bei dem Beispiel von 1 sind vier Seiten 110, 111, 112, 113 gezeigt, wobei jede einem Abschnitt des Bildbereichs entspricht, der einen entsprechenden Abschnitt der Texturabbildung 101 umfaßt.
  • Eine Oberfläche 104 in einem dreidimensionalen Raum hat ihr eigenes Koordinatensystem (s, t). Bei einem typischen, dreidimensionalen Graphiksystem kann die Oberfläche 104 ein Grundelement sein, beispielsweise ein Vieleck; es können viele solcher Vielecke in einem dreidimensionalen Raum definiert sein, um ein dreidimensionales Objekt oder eine dreidimensionale Szene zu bilden. Jedes Vieleck hätte dann sein eigenes Koordinatensystem (s, t) ähnlich der in 1 angegebenen Oberfläche 104. Basierend auf der Ausrichtung der Oberfläche 104 in einem dreidimensionalen Raum und auf der Position und Ausrichtung der „Kamera" wird die Oberfläche 104 zur Anzeige durch das Computersystem wiederum auf ein zweidimensionales Anzeigegitter 103 abgebildet, das in dem Bildpuffer gespeichert ist. Die Abbildung der Oberfläche 104 auf das Anzeigegitter 103 wird durch Matrixtransformationen erzielt, die auf dem Gebiet gut bekannt sind. Das Anzeigegitter 103 hat ein Koordinatensystem (x, y) und ist typischerweise in einem Speicherbereich implementiert, der für eine Videoanzeige reserviert ist, wie einem Videodirektzugriffspeicher (Video RAM), z. B. einem VRAM oder synchronen Graphikdirektzugriffsspeicher (SGRAM = Synchronous Graphics Random-Access Memory). Das Anzeigegitter 103 umfaßt einzelne Elemente, die als Pixel bekannt sind und durch gesonderte Speicherpositionen in dem Video-RAM dargestellt sind.
  • Jedes Pixel in einer bestimmten Region des Anzeigegitters 103 bildet auf einen Punkt an der Oberfläche 104 und wiederum zu einem Punkt in der Texturabbildung 101 ab. Bei dem Beispiel von 1 bildet somit ein Punkt Axy des Anzeigegitters 103 auf einen Punkt Ast in den Koordinaten der Oberfläche 102 und auf einen Punkt Auv in der Texturabbildung 101 oder eine Gruppe von Punkten ab, die eine Region in der Texturabbildung 101 bilden. Jede der Abbildungen zwischen dem Anzeigegitter 103, der Oberfläche 102 und der Texturabbildung 101 kann von Punkt zu Punkt, von Punkt zu Region, von Region zu Punkt oder von Region zu Region erfolgen. Bei herkömmlichen Implementierungen von Texturabbildungssystemen erzeugt die Abbildung von dem Anzeigegitter 103 auf die Oberfläche 104 und wiederum auf die Texturabbildung 101 ferner einen Wert d, der die Detailebene für das spezielle Texel darstellt. Typischerweise ist d ein Maß des wahrgenommenen Abstands des Punkts in der Texturabbildung, wie es durch einen z-Wert für den Punkt in dem Bildpuffer bestimmt ist. Punkte, die als weiter weg wahrgenommen werden, weisen eine niedrigere Detailebene auf, was eine verringerte Auflösung darstellt. Beim Wiedererlangen von Texeln aus der Texturabbildung 101 wird d verwendet, um ein Multum-In-Parvo-Abbildungsschema (MIP-Abbildungsschema) zu implementieren, bei dem mehrere Texel gemittelt und auf ein Pixel des Bildpuffers abgebildet werden können. Je höher der Wert von d, desto niedriger die Detailebene und desto mehr Pixelmittelwertbildung wird durchgeführt. Im Grenzfall ist eventuell die gesamte Texturabbildung auf ein Pixel in dem Bildpuffer reduziert.
  • Herkömmliche Rasterungsmodule („rasterization engines") ziehen das Bild durch die bekannte Technik der Abtastumwandlung von Grundelementen, beispielsweise Vielecken und Linien (siehe beispielsweise Foley et al.), in den Bildpuffer. Eine Abtastumwandlung nimmt als Eingabe Grundelemente, die hinsichtlich Scheitelpunkten und Ausrichtungen definiert sind, und liefert als Ausgabe eine Reihe von Pixeln, die an dem Bildschirm gezeichnet werden sollen. Wenn jedes Pixel durch Abtastumwandlung erzeugt wurde, führt ein Rasterungsmodul die notwendigen Abbildungsberechnungen durch, um zu bestimmen, welches Texel der Texturabbildubng 101 dem Pixel entspricht. Das Rasterungsmodul erteilt dann alle erforderlichen Speicherreferenzen, wie Texturabruf, z-Abruf, z-Einspeicherung, Farbabruf, Farbeinspeicherung, und dergleichen), um Texelinformationen zum Schreiben zu dem Pixel wiederzuerlangen, das verarbeitet wird. Somit werden Speicherreferenzen in der Reihenfolge erteilt, die durch die Abtastumwandlung erzeugt wird. Herkömmlicherweise werden derartige Speicherreferenzen gemäß einem FIFO-Schema (FIFO = First-In First-Out) unter Verwendung einer FIFO-Warteschlange gespeichert und verwaltet.
  • Es ist bekannt, daß herkömmliche Seitenmodus-DRAM-Komponenten Zugriffszeiteinbußen erleiden, wenn sie auf Speicherpositionen von unterschiedlichen Speicherseiten aus zugreifen. Bei einigen Speicherarchitekturen beispielsweise, wie etwa SGRAM, benötigt ein Zugriff auf eine offene Seite einen Zyklus, ein Lesevorgang von einer nicht offenen Seite neun Zyklen, ein Schreibvorgang zu einer nicht offenen Seite sechs Zyklen und ein Zugriff auf eine offene Seite an einer unterschiedlichen Bank drei Zyklen. Somit kann das oben beschriebene Schema zum Erteilen von Speicherreferenzen in der Reihenfolge, die durch die Abtastumwandlung erzeugt wird, derartige Einbußen erleiden, wenn die referenzierten Bereiche der Texturabbildung 101 in unterschiedlichen Seiten liegen. Abhängig von der Verzerrung der Texturgrenzen, die aus der speziellen verwendeten Abbildungstransformation resultiert, können Referenzen, die in einer Abtastumwandlungsreihenfolge erzeugt werden, tatsächlich ein wiederholtes Hin- und Herschalten einer Seite notwendig machen. Da die Speicherbandbreite bei einer schnellen Erzeugung dreidimensionaler Bilder im allgemeinen die Engstelle ist, resultiert ein derartiges wiederholtes Seitenwechseln in einer verringerten Leistungsfähigkeit.
  • Im Stand der Technik gab es Versuche, die oben beschriebene Problematik zu entschärfen. Ein Beispiel ist die Verwendung eines spezialisierten Speichers anstelle herkömmlicher Seitenmodus-Speicherkomponenten. Siehe beispielsweise H. Fuchs und J. Poulton, „Pixel-Planes: A VLSI-Oriented Design for a Raster Graphics Engine" in VLSI Design, Bd. 2, Nr. 3, 1981; M. Deering et al., „FBRAM: A New Form of Memory Optimized for 3D Graphics" in Computer Graphics, Proceedings of SIGGRAPH, 1995; A. Schilling et al., „Texram: A Smart Memory for Texturing" in IEEE Computer Graphics and Applications, 1996. Solche Systeme verbessern im allgemeinen die Speicherbandbreite beispielsweise dadurch, daß ein Speicher direkt einer Verarbeitung an einer anwendungsspezifischen integrierten Schaltung (ASIC = Application-Specific Integrated Circuit) zugeordnet wird oder eine Logik auf einem DRAM-Chip direkt einem Speicher zugeordnet wird. Siehe A. Schilling et al. Solche Techniken benötigen hochspezialisierte Komponenten, die im allgemeinen teurer als ein herkömmlicher Seitenmodus-DRAM sind.
  • Ein weiterer Versuch, die Speicherbandbreite zu reduzieren, ist in K. Akeley, „Reality Engine Graphics" in Computer Graphics, Proceedings of SIGGRAPH 1993, beschrieben. Akeley beschreibt ein System extremer Speicherverschachtelung. Diese Technik benötigt erheblich mehr Speicherchips als herkömmliche Speichersysteme und ist folglich teurer.
  • Die EP 0 749 100 A2 offenbart ein Computergraphiksystem zur Texturabbildung, das einen Hostcomputer umfaßt, der einen Systemspeicher aufweist, der Texturdaten speichert. Eine Graphikhardwarevorrichtung, die mit dem Hostcomputer verbunden ist, bereitet texturabgebildete Bilder auf und umfaßt einen lokalen Speicher, der zumindest einen Teil der Texturdaten speichert, die zu jeder Zeit in dem Systemspeicher gespeichert sind. Eine Software-Hintergrundroutine läuft auf dem Prozessor des Hostcomputers und verwaltet das Übertragen von Texturdaten von dem Systemspeicher zu dem lokalen Speicher, wenn diese von der Hardwarevorrichtung benötigt werden, um ein Bild aufzubereiten. Die Software-Hintergrundroutine überwacht die Verwendung von Texturdatenblöcken, die in dem lokalen Speicher gespeichert sind, mittels der Hardwarevorrichtung. Die Hintergrundroutine verfolgt ferner die Prioritäten der in dem Hauptspeicher gespeicherten Texturen, so daß am weitesten zurückliegend verwendete Texturdatenblöcke mit niedrigster Priorität in dem lokalen Speicher mit Texturdatenblöcken ersetzt werden, die von der Hardwarevorrichtung benötigt werden, um Bilder aufzubereiten.
  • Die US 5,440,713 bezieht sich auf ein seitenverschachteltes Speicherzugriffssystem mit M Wegen und N Ports und umfaßt einen getrennten, seitenverschachtelten Controller, der jeder der M Speicherbänke zugeordnet ist. Jeder der getrennten, verschachtelten Seitencontroller umfaßt eine Speicherbankentscheidungseinrichtung und einen Speicherbankcontroller. Die Bankentscheidungseinrichtung empfängt Anforderungen von den N Mastern und unterzieht sie einem Anforderungshalteprotokoll („request-halt protocol"). Das Anforderungshalteprotokoll, das von jeder Entscheidungseinrichtung ausgeführt wird, setzt unter einer Mehrzahl von aktuellen Anforderungen nach der gleichen Speicherbank durch die Master Prioritäten und gibt aktuellen Anforderungen, die eine Zeilenadresse spezifizieren, die gleich einer gültigen Zeilenadresse der vorhergehenden Anforderung ist, die von der Entscheidungseinrichtung gewährt wurde, eine höhere Priorität.
  • Es wird ein System zum Reduzieren einer Speicherbandbreite durch Minimieren eines Seitenumschaltens bei einem herkömmlichen Seitenmodusspeicher benötigt, um eine Leistungsfähigkeit von Graphikmodulen für einen breiten Bereich von Client-Algorithmen zu verbessern, ohne die Anzahl von Komponenten oder die Gesamtkosten wesentlich zu erhöhen.
  • Abriß der Erfindung
  • Gemäß der vorliegenden Erfindung sind ein System und ein Verfahren zum Umsortieren von Speicherreferenzen vorgesehen, die erforderlich sind, um unabhängige Pixel in einem Texturabbildungssystem zu verarbeiten, um eine verbesserte Speicherlokalität und somit eine verbesserte Graphikleistungsfähigkeit unter Verwendung herkömmlicher Seitenmodus-Speicherkomponenten zu erreichen. Da die vorliegende Erfindung nicht erfordert, daß ir gendwelche Veränderungen an dem zugrundeliegenden Graphikalgorithmus vorgenommen werden, kann die Speicherlokalizität für viele solcher Algorithmen sofort verbessert werden.
  • Verschiedene Arten von Lesevorgängen und Schreibvorgängen können in Verbindung mit der Aufbereitung durch ein Graphikmodul durchgeführt werden. Diese umfassen beispielsweise Lesen und Schreiben für eine Texturwiedererlangung, eine Wiedererlangung von Daten aus dem Bildpuffer (beispielsweise Farbwerte, z-Werte und dergleichen), eine Farbeinspeicherung (endgültiger Farbschreibvorgang zu einem Bildpuffer nach Auflösung aller anwendbaren Texturen) und dergleichen. Die vorliegende Erfindung sortiert die den Pixeln zugeordneten Lese- und Schreibvorgänge um, wenn sie eine solche Verarbeitung durchgeführt wird, so daß Referenzen, welche die gegenwärtig offene Seite benötigen, im allgemeinen vor Referenzen verarbeitet werden, die das Öffnen einer anderen Seite erfordern, um eine Speicherlokalizität zu verbessern und ein Seitenumschalten zu minimieren. Die hierin beschriebene Technik ermöglicht, daß das Graphikrasterungsmodul unter Verwendung herkömmlicher Seitenmodus-Speicherkomponenten und ohne eine übermäßige Speicherverschachtelung zu erfordern eine bessere Bandbreite erzielen kann.
  • Die vorliegende Erfindung verwendet ein Pixel-Prioritäts-Heap (PPH = Pixel-Priority-Heap), um Pixel umzusortieren. Bei einer Ausführung sortiert das PPH Adressen in einen Texturspeicher um, um mehr Lesevorgänge von derselben Seite durchzuführen, bevor diese Seite geschlossen und eine andere geöffnet wird. Bei alternativen Ausführungen wird das PPH verwendet, um Lesevorgänge und Schreibvorgänge von/zu anderen Clients ebenfalls umzusortieren. Das PPH kann beispielsweise verwendet werden, um Referenzen zu Bestimmungsadressen in dem Bildpuffer umzusortieren, um eine Lokalizität zu verbessern; dies ist vorteilhaft, wenn eine Umsortierung von Texturspeicherreferenzen durch das PPH in Veränderungen an der Reihenfolge von Bildpufferschreibvorgängen resultiert, so daß ein PPH auch günstig für Bildpufferadressen ist.
  • Jedes durch eine Abtastumwandlung erzeugte Pixel wird zu dem PPH geschrieben (je eines pro Zyklus). Wenn das PPH voll ist, wird das Pixel nicht geschrieben und das System wartet, bis ein Eintrag in dem PPH verfügbar ist, bevor zu diesem geschrieben wird.
  • Gleichzeitig versucht das System, ein Pixel aus dem PPH auszuwählen und es zu einer FIFO-Warteschlange einer Speichersteuerung zu schreiben, die texturiert werden soll. Falls es keine Pixel in dem PPH gibt oder falls die FIFO-Warteschlange der Speichersteuerung voll ist, wird kein Pixel in die FIFO-Warteschlange der Speichersteuerung geschrieben. Bei dem Auswählen eines Pixels aus dem PPH, das in die FIFO-Warteschlange der Speichersteuerung geschrieben werden soll, versucht das System ein Pixel zu finden, dessen PPH-Adresse eine Bank- und Zeilenadresse (RAS) umfaßt, die zu der offenen Seite an dem letzten gelesenen oder geschriebenen Pixel paßt. Wenn eine solche Übereinstimmung gefunden wird, kann der Zugriff bei einigen Speichersystemen relativ schnell (z. B. in einem Zyklus) durchgeführt werden. Falls keine solche Übereinstimmung gefunden wird, versucht das System ein Pixel zu finden, dessen PPH-Adresse zu irgendeiner offenen Seite paßt, wobei so bei einigen Speichersystemen ein Zugriff mit mittlerer Geschwindigkeit (z. B. drei Zyklen) ermöglicht wird. Falls keine solche Übereinstimmung gefunden wird, versucht das System, ungeachtet von Bankoder Seitenadresse irgendein gültiges Pixel in dem PPH zu finden. Bei einigen Speichersystemen erfolgt so ein Zugriff relativ langsam (z. B. neun Zyklen für Lesevorgänge oder sechs Zyklen für Schreibvorgänge). Bei einer Ausführung werden alle derartigen Versuche, Übereinstimmungen zu finden, für eine verbesserte Leistungsfähigkeit gleichzeitig durchgeführt.
  • Das ausgewählte Pixel wird zu der FIFO-Warteschlange des Speicher-Controllers geschrieben und aus dem PPH gelöscht. Bei nachfolgenden Zyklen erteilt ein Speicher-Controller den Lesevorgang oder Schreibvorgang entsprechend der PPH-Adresse des Pixels. Falls der Vorgang ein Schreibvorgang ist, können dann die Daten abhängig von der Anwendung zu einer nachfolgenden Verarbeitung aus dem Speicher zurückgegeben werden.
  • Zusätzlich kann das PPH eine herkömmliche FIFO-Funktionalität implementieren. Eine solche Implementierung kann beispielsweise nützlich sein, wenn das PPH in Verbindung mit einer z-Pufferung verwendet wird. Wie es auf dem Gebiet bekannt ist, ist ein z-Puffer eine Technik, wodurch jedes Pixel, das in den Bildpuffer geschrieben wird, einen zugeordneten gespeicherten z-Wert in einem z-Puffer aufweist. Jeder Schreibvorgang eines eingehenden Pixels hat einen z-Wert, der mit dem gespeicherten z-Wert für das passende Pixel verglichen wird, und es wird nur dann geschrieben, wenn der z-Wert des eingehenden Pixels kleiner als der gespeicherte z-Wert ist. Wenn der Schreibvorgang des eingehenden Pixels durchgeführt wird, wird der gespeicherte z-Wert mit dem z-Wert des eingehenden Pixels aktualisiert. Siehe J. Foley et al.
  • Das PPH ermöglicht ferner, daß Schreibvorgänge oder Lesevorgänge an einer offenen Seite auf einer gegebenen Bank weitergehen, während an einer Seite auf einer anderen Bank eine Vorladung vorgenommen wird.
  • Bei einer bevorzugten Ausführungsform ist die vorliegende Erfindung auf eine im wesentlichen zustandslose Weise wirksam. Es basieren keine Entscheidungen explizit auf vorhergehenden Entscheidungen. Ein solcher im wesentlichen zustandsloser Betrieb ist vorteilhaft, weil er die Verwendung einfacherer Algorithmen und einfacherer Hardware ermöglicht. Die vorliegende Erfindung betont einen korrekten anstelle eines optimalen Betriebs, indem relativ einfache Entscheidungen vorgenommen werden, die eventuell nicht optimal sind, aber die in dem Sinn korrekt sind, daß sie zu einer Leistungsfähigkeit führen, die vorzugsweise nicht schlechter als bei einer herkömmlichen FIFO-Technik ist.
  • Kurze Beschreibung der Zeichnungen
  • 1 ist ein Diagramm, das eine Texturabbildung gemäß dem Stand der Technik zeigt.
  • 2 ist ein Blockdiagramm, das eine Gesamtarchitektur einer Ausführung der vorliegenden Erfindung zeigt.
  • 3 ist ein Blockdiagramm, das eine detaillierte Architektur einer Ausführung der vorliegenden Erfindung zeigt.
  • 4 ist ein Flußdiagramm des Verfahrens zum Auswählen von Pixeln aus dem Pixel-Prioritäts-Heap gemäß der vorliegenden Erfindung.
  • 5 ist ein Zustandsdiagramm, das Seitenaktualisierungsvorgänge zeigt.
  • 6 ist ein Flußdiagramm eines Verfahrens zum Auswählen einer Seite, die vorgeladen werden soll, gemäß einer Ausführung der vorliegenden Erfindung.
  • 7 ist ein Flußdiagramm eines Verfahrens zum Lesen aus dem PPH gemäß einer Ausführung der vorliegenden Erfindung.
  • 8 ist ein Blockdiagramm einer Implementierung eines Heap-Moduls gemäß einer Ausführung der vorliegenden Erfindung.
  • Detaillierte Beschreibung der Erfindung
  • Gesamtbetrieb
  • Die folgende detaillierte Beschreibung nimmt Bezug auf mehrere Variablen und Terme, die hier der Zweckmäßigkeit halber definiert sind:
    • • N Anzeiger-Bitlänge bzw. Index-Bitlänge (d. h. Adresse von Chip und Bank); die bevorzugte Ausführung verwendet N = 32;
    • • 2N-1 Anzahl von Speicherbänken auf diesem Kanal (0 stellt einen Wert von Null dar);
    • • 2N- 2 Anzahl von Chips auf diesem Kanal (jeweils zwei Bänke);
    • • M Anzeiger-Bitlänge eines Pixeleintrags in Pixel-Prioritäts-Heap; die bevorzugte Ausführung verwendet M = 5;
    • • 2M-1 maximale Anzahl von Einträgen in Pixel-Prioritäts-Heap (0 stellt einen Wert von Null dar).
  • Unter Bezugnahme auf 2 ist dort ein Blockdiagramm der Gesamtarchitektur auf hoher Ebene („high-level architecture") einer Ausführung der vorliegenden Erfindung gezeigt. Ein System 200 umfaßt die folgenden Elemente. Grundelemente, sog. „primitives", 208 werden auf herkömmliche Weise gespeichert und umfassen beispielsweise Definitionen von Vielekken und Linien. Ein Abtastumwandler 201 wandelt die Grundelemente 208 auf herkömmliche Weise in Pixel um. Jedes Pixel ist hinsichtlich Werten für u, v und d definiert, die u- und v-Koordinaten in einem Texturraum zusammen mit einem Abstandswert (auch als Kompressionswert bekannt) zum Bestimmen der Detailebene für das Pixel darstellen. Bei einer Ausführung werden die Werte u, v und d für Pixel mit einer Rate von einem Pixel pro Zyklus in ein Pixel-Prioritäts-Heap (PPH = Pixel Priority Heap) 202 geschrieben. Bei einer anderen Ausführung werden die Werte u, v und d auf Speicherreferenzen abgebildet, die als Bank, Zeile und Spalte dargestellt sind, und diese Speicherreferenzen werden in das PPH 202 geschrieben. Bei noch einer anderen Ausführung wird eine gewisse Kombination dieser zwei Darstellungen abhängig von dem durchgeführten Vorgang verwendet, wie es unten beschrieben wird.
  • Bei einer Ausführung ist das PPH 202 auf einem Kanal definiert. Wenn zwei oder mehr Kanäle (z. B. ein linker und ein rechter Kanal) verwendet werden, hat vorzugsweise jeder Kanal ein PPH. Dies dient dazu, Pixel unabhängig für jeden Kanal in Warteschlange zu stellen, und kann zu einer höheren Gesamttrefferrate führen, weil der Lokalitätsverbesserungsprozeß für jeden Kanal getrennt ausgeführt wird. Bei mehreren PPHs wird ein Selektor verwendet, um Adreßbits von Pixeln zu prüfen, um den ordnungsgemäßen PPH für einen Eintrag der Pixel zu bestimmen. Bei einer Ausführung bestimmt der Selektor beispielsweise den ordnungsgemäßen PPH auf der Basis des letzten Bits der Pixeladresse.
  • Bei einer Ausführung ist ein 1MB-Chip (256K × 32) für jeden Kanal vorgesehen. Bänke sind von 1 bis 2N-1 numeriert, wobei es 2N-1 Bänke gibt (0 ist als ein Wert von Null reserviert).
  • Bei einer Ausführung umfaßt das PPH 202 2M-1 Einträge, wobei jeder einem Pixel entspricht, das texturiert werden soll. Bei einer Ausführung sind zwei Bänke für jeden Chip vorgesehen.
  • Es sind drei Pixeltypen definiert: 1) ein Pixel, das texturiert werden soll (ein tpixel; 2) ein Pixel, das z-gepuffert werden soll (ein zpixel); und 3) ein Pixel, das in den Bildpuffer („frame buffer") geschrieben (oder von demselben gelesen) werden soll, oder ein Texel, das in den Texturspeicher geschrieben werden soll (ein cpixel). Jeder Pixeltyp ist einer Anzahl von Feldern zugeordnet, wie:
    • • uv-Adresse: eine (17 + N)-Bitadresse in die Texturabbildung, wobei N Bits den Chip und die Bank eindeutig identifizieren, acht Bits die Spaltenadresse (CAS) identifizieren und neun Bits die Zeilenadresse (RAS) identifizieren;
    • • fb-Adresse: eine (17 + N)-Bitadresse in den Bildpuffer;
    • • Farbe: 24 Bits (acht für Rot, acht für Grün, acht für Blau);
    • • z-wert: 32 Bits.
  • Cpixel und tpixel können gepackt werden, so daß die 24-Bit-Farbe oder der 32-Bit-z-Wert vier, zwei oder eine Farbe oder z-Werte umfassen können. Das Packen und/oder Entpacken wird mit herkömmlichen Mitteln erzielt.
  • Bei einer Ausführung verwenden die drei Pixeltypen die oben definierten Felder wie folgt:
    • • tpixel: uv-Adresse, fb-Adresse, Farbe;
    • • zpixel: fb-Adresse, z-Wert;
    • • cpixel: fb-Adresse, Farbe.
  • Gemäß einer Ausführung der vorliegenden Erfindung verwenden tpixel uv-Adressen als PPH-Adressen in den Bildpuffer 207. Andere Pixeltypen verwenden fb-Adressen.
  • Aus dem PPH 202 werden Pixel ausgewählt, die gemäß dem in 4 gezeigten Verfahren in die FIFO-Warteschlange 203 des Speicher-Controllers geschrieben werden sollen, wobei das Verfahren Pixel auf offenen Seiten gegenüber Pixeln an anderen Speicherpositionen bevorzugt. Die in 4 gezeigten Schritte werden für jeden Zyklus durchgeführt. Das System 200 prüft 401 zuerst, ob das PPH 202 leer ist; falls ja, endet 402 das Verfahren und es wird kein Pixel in die Warteschlange 203 geschrieben. Falls das PPH 202 nicht leer ist, prüft das System 200, ob die Warteschlange 203 voll ist; falls ja, endet 402 das Verfahren und es wird kein Pixel in die Warteschlange 203 geschrieben. Falls die Warteschlange 203 nicht voll ist, sucht 404 das System 200 nach einem Pixel in dem PPH 202, dessen PPH-Adresse eine Bank-und Zeilenadresse (RAS) umfaßt, die zu der offenen Seite und der Bank des zuletzt gelesenen oder geschriebenen Pixels paßt. Wenn ein solches Pixel gefunden wird, schreibt 405 das System 200 das Pixel in die Warteschlange 203. Wie vorhergehend erwähnt, kann ein derartiger Zugriff bei einigen Speichersystemen relativ schnell (z. B. in einem Zyklus) durchgeführt werden. Falls kein solches Pixel gefunden wird, sucht 406 das System 200 nach einem Pixel in dem PPH 202, dessen PPH-Adresse zu irgendeiner offenen Seite paßt. Wenn ein derartiges Pixel gefunden wird, schreibt 405 das System 200 das Pixel in die Warteschlange 203. Wie oben angegeben, kann ein solcher Zugriff bei einigen Speichersystemen mit einer mittleren Geschwindigkeit (z. B. in drei Zyklen) durchgeführt werden. Falls keine derartige Übereinstimmung gefunden wird, sucht 407 das System 200 nach irgendeinem gültigen Pixel in dem PPH 202, ungeachtet einer Bank- oder Seitenadresse. Wenn ein gültiges Pixel gefunden wird, schreibt 405 das System 200 das Pixel in die Warteschlange 203. Wie vorhergehend angegeben, ist bei herkömmlichen Speichersystemen ein derartiger Zugriff relativ langsam (z. B. neun Zyklen für Lesevorgänge oder sechs Zyklen für Schreibvorgänge). Bei einer Ausführung werden die Suchvorgänge 404, 406 und 407 für eine verbesserte Leistungsfähigkeit gleichzeitig durchgeführt.
  • Der Speicher-Controller 204 gewinnt Pixel aus der Warteschlange 203 wieder und führt basierend auf den Pixeldarstellungen aus der Warteschlange 203 entsprechend Zugriffe auf einen Texturabbildung-RAM 205 durch. Arbeitsvorgänge 206, beispielsweise Mischen, z-Vergleichen und dergleichen, werden an den wiedergewonnen Pixeln je nach Anwendung für eine Ausgabe in den Bildpuffer 207 durchgeführt, der herkömmlicherweise in einem Video-RAM implementiert ist. Der Bildpuffer 207 wird auf eine Anzeige 209 ausgegeben, die als eine herkömmliche Kathodenstrahlröhre oder eine andere Ausgabevorrichtung implementiert ist.
  • Datenstrukturen
  • Gemäß einer Ausführung verwendet das System 200 die folgenden Datenstrukturen, welche die Felder der Einträge in einem Heap-Modul 305 und einem Pixelmodul 306 definieren. Wie es oben dargelegt ist, ist ein Neun-Bit-Komparator, ein N-Bit-Komparator und ein M-Bit-Komparator jedem Eintrag des Heap-Moduls 305 zugeordnet. Jeder Eintrag liefert eine globale Drei-Bit-Ausgabe (d. h. jeder Eintrag liefert drei Bits einer Ausgabe, die als eine Eingabe zu einem MPE 303 geliefert werden müssen), darin den Wert von valid, und das jeweilige Ein-Bit-Ergebnis aus dem Neun- und dem N-Bit-Komparator.
  • Datenstruktur pph_heap:
    Figure 00100001
  • Figure 00110001
  • Implementierung
  • Unter Bezugnahme auf 3 ist dort ein detailliertes Blockdiagramm einer Ausführung der vorliegenden Erfindung gezeigt. 3 umfaßt Komponenten, die ein Verfügbarkeitsmodul 301, ein Heap-Modul 305, einen Modifizierte-Priorität-Kodierer (MPE = Modified Priority Encoder) 303, ein Steuerungsmodul 304 und ein Pixelmodul 306 sowie Adreßregister 302 genannt werden. Jede dieser Komponenten wird unten beschrieben. Bei den Beschreibungen erzeugt jedes Modul zuerst Ausgaben basieren auf aktuellen Register/Speicher-Einheiten und setzt dann die Register/Speicher-Werte für den nächsten Zyklus.
  • Verfügbarkeitsmodul 301
  • Das Verfügbarkeitsmodul 301 ist eine FIFO-Warteschlange, die bis zu 2M-1 M-Bit-Anzeiger umfaßt, die verfügbare Slots in dem PPH 202 darstellen. Die folgenden Signale werden von dem Verfügbarkeitsmodul 301 verwendet:
    Figure 00110002
  • Ein Client (Aufbereitungsmodul) fordert an, daß ein neues Pixel in das PPH 202 eingetragen wird, indem er renable an dem Verfügbarkeitsmodul 301 erklärt. Das neue Pixel wird in die Adreßregister 302 plaziert, einschließlich bank, RAS, CAS und other. Das Verfügbarkeitsmodul 301 gibt einen gültigen windex zurück, der bei dem Heap 202, dem Steuerungsmodul 204 und dem Pixelmodul 203 eine Schreibfreigabe bewirkt (jeder Wert außer Null bewirkt eine Schreibfreigabe bei diesen Modulen). Wenn ein von Null verschiedener windex erklärt wird, werden bank und RAS in das Heap 202 geschrieben, wird bank allein in das Steuerungsmodul 204 und das vollständige Pixel in das Pixelmodul 204 geschrieben. Um zu bestimmen, ob das PPH 202 voll ist, liest das Aufbereitungsmodul (nicht gezeigt) auch den Wert von windex, um auf einen von Null verschiedenen Wert hin zu prüfen. Wenn das PPH 202 voll ist, beträgt windex 0. Wenn das Heap-Modul 305 ein Pixel entfernt, das erfolgreich zu dem Speicher-Controller 204 ausgegeben wurde, gibt es den o_done_index des Slots, der das Pixel enthielt, an das Verfügbarkeitsmodul 301 zurück. Immer wenn o_ done_index nicht Null beträgt, ist ein Schreibvorgang zu dem Verfügbarkeitsmodul 301 freigegeben und der Wert von o_done_index wird selbst in die FIFO-Warteschlange eingetragen. Schließlich wird das Verfügbarkeitsmodul 301 initialisiert, so daß es alle Indizes bzw. Anzeiger in das PPH 202 umfaßt. Da immer ein Index bzw. Anzeiger aus dem Verfügbarkeitsmodul 301 entfernt wird, wenn ein neues Pixel in das PPH 202 geschrieben wird, und da immer der gleiche Index an die FIFO-Warteschlange zurückgegeben wird, wenn das Pixel aus dem PPH 202 entfernt wird, ist ein jeglicher windex, der durch das Verfügbarkeitsmodul 301 aktiviert wird, immer ein gültiger Index zu einem leeren Slot in dem PPH 202.
  • Weil somit das Heap-Modul 305 in das Verfügbarkeitsmodul 301 nur die Indizes jener Pixel schreibt, die aus dem PPH 202 entfernt wurden, ist garantiert, daß diese Schreibvorgänge immer erfolgreich sind. Das Heap-Modul 305 kann keinen Wert von Null in das Verfügbarkeitsmodul 301 schreiben (i_done_index = 0 macht nichts) und somit kann auch kein Wert von 0 zurückgegeben werden, wenn renable aktiviert wird. Bei jedem Zyklus kann ein Index aus dem Verfügbarkeitsmodul 301 gelesen und ein anderer Index zu diesem geschrieben werden.
  • Das PPH 202 ist primär durch das Heap-Modul 305, den MPE 303 und das Steuerungsmodul 304 implementiert. Jedes dieser Module wird nun der Reihe nach beschrieben.
  • Heap-Modul 305
  • Das Heap-Modul 305 verwendet die folgenden Signale:
  • Figure 00120001
  • Figure 00130001
  • Das Heap-Modul 305 behält eine Kopie aller gültigen bank und RAS-Pixeladressen. Jedem Eintrag sind Markierungszeichen (Tags) zugeordnet, die Informationen liefern, die Seitenumbrüche und offene Seiten identifizieren, um zu ermöglichen, daß das PPH 202 in einem Zyklus die beste Adresse bestimmen kann, die zu dem Speicher-Controller geschrieben werden soll. Dies ist in Form von zwei Komparatoren (=_open_page() and =_bank()) implementiert. Ein zusätzlicher Komparator (=_index()) ist vorgesehen, um zu ermöglichen, daß jede Position in dem Heap-Modul 305 ein Pixel löschen kann, das in dem vorhergehenden Zyklus an den Speicher-Controller 204 versandt wurde. Bei jedem Zyklus vergleicht jede Position in dem Heap-Modul 305 die bank-Adresse jedes Pixels mit der i_last_bank-Adresse des Pixels, das zuletzt an den Speicher-Controller 204 ausgegeben wurde, und ihre RAS-Adresse mit der RAS-Adresse der offenen Seite an der Bank, zu der ihr Pixel geschrieben wird (d. h. sie vergleicht mit i_open_pages[bank]). In Kombination mit einem gültigen Bit für jede Position erzeugen diese zwei Komparatoren ein Ergebnis mit drei Bits, welches das folgende anzeigt:
    • • 111: das Pixel ist für eine offene Seite an der zuletzt beschriebenen Bank bestimmt;
    • • 011: das Pixel ist für eine offene Seite an einer anderen Bank bestimmt;
    • • 001 oder 101: das Pixel ist gültig, aber für keine offene Seite bestimmt;
    • • 000: das Pixel ist nicht gültig.
  • Jedes Pixel weist ein solches Ergebnis mit drei Bits auf, so daß bis zu 2M-1 derartiger Ergebnisse erzeugt und als eine Eingabe (i_pixel_status) zu dem MPE 303 geliefert werden.
  • Bei einer Ausführung sind zusätzliche Markierungszeichen vorgesehen, um das Grundelement zu identifizieren, zu dem jedes Pixel gehört. Dies ist bei reihenfolgeabhängigen Anwendungen vorteilhaft, d. h. bei Anwendungen, bei denen es bevorzugt wird, eine relative Reihenfolge der Erzeugung von Grundelementen zu bewahren. Ein Grundelement-ID-Feld mit beispielsweise zwei Bits kann für jedes Pixel vorgesehen sein.
  • Das Heap-Modul 305 implementiert somit den folgenden Code: Gleichzeitig bei jedem Zyklus:
    Figure 00140001
  • Gleichzeitig bei jedem Zyklus führt jeder Eintrag „this" in dem Heap[] folgendes durch:
    Figure 00140002
  • Gleichzeitig bei jedem Zyklus:
    Figure 00140003
  • Figure 00150001
  • Unter Bezugnahme auf 8 ist eine Implementierung des Heap-Moduls 305 gemäß einer Ausführung der vorliegenden Erfindung gezeigt. Bei dem gezeigten Beispiel beträgt N = 3 für acht Speicherbänke auf jedem Kanal und 8 MB Speicher.
  • Ein ix-Register 801 stellt my_index dar. ν 802 ist das valid- Bit, b 803 ist die Bank. b 803 wählt eine der Bänke für einen Vergleich. Ein Komparator 805 vergleicht RAS 804 mit einer Liste 809 offener Seiten. Ein Komparator 806 vergleicht die Bank, auf die zuletzt zugegriffen wurde, mit b. Ein Komparator 808 vergleicht den letzten Index und den aktuellen Index ix 801, um sicherzustellen, daß ein echter Eintrag verfügbar ist. Ein Multiplexer 807 nimmt die Ausgaben 805, 806 und 808, um ein 3-Bit-Signal zu erzeugen, das zu dem MPE 303 gesendet werden soll.
  • MPE 303
  • Der MPE 303 verwendet die folgenden Signale:
    Figure 00150002
  • Der MPE 303 wählt ein „bestes" Pixel, das zu dem Speicher-Controller 204 ausgegeben werden soll, basierend auf den folgenden Kriterien, was eine Implementierung des oben in Verbindung mit 4 beschriebenen Verfahrens ist:
    • • Den Index eines Pixels mit i_pixel_status = 111 wählen, falls es ein derartiges Pixel gibt (gleiche Bank, gleiche Seite) (Schritt 404);
    • • den Index eines Pixels mit i_pixel_status = 011 wählen, falls es ein derartiges Pixel gibt (offene Seite an anderer Bank) (Schritt 406);
    • • den Index eines Pixels mit i_pixel_status = 001 oder 101 wählen, falls es ein derartiges Pixel gibt (irgendein gültiges Pixel) (Schritt 407);
    • • 0 zurückgeben (keine gültigen Pixel) (Schritt 401 oder 407).
  • Der MPE 303 implementiert den folgenden Code:
    Figure 00160001
    Figure 00170001
  • Steuerungsmodul 304
  • Das Steuerungsmodul 304 verfolgt mit, welche Seiten in welcher Bank offen sind. Die folgenden Signale werden von dem Steuerungsmodul 304 verwendet:
    Figure 00170002
  • Das Steuerungsmodul 304 behält die_last_bank, zu der geschrieben wurde, und den last_index des Pixels, das bei dem vorhergehenden Zyklus geschrieben wurde, und hält ferner eine Ta belle von open_pages[]. Es liefert diese als eine Eingabe zu dem Heap-Modul 305. Zusätzlich behalten das Steuerungsmodul 304 und das Heap-Modul 305 zusammen (in einem einfachen Zwei-Zyklus-Protokoll) eine korrekte Version der open_pages[]-Tabelle bei. Wenn ein Seitenumbruch auftritt, wird dies von dem MPE 303 signalisiert und zwei Zyklen lang werden keine Pixel aus dem PPH 202 gelesen (solange das PPH 202 nicht voll ist, können immer noch Pixel während dieser zwei Zyklen in das PPH 202 eingegeben werden).
  • Das Steuerungsmodul 304 implementiert den folgenden Code:
  • Gleichzeitig bei jedem Zyklus:
    Figure 00180001
  • Pixelmodul 306
  • Das Pixelmodul 306 ist ein Standard-RAM oder eine Registerdatei mit einer Steuerung, die Pixeldaten und Farbinformationen umfaßt. Die folgenden Signale werden von dem Pixelmodul 306 verwendet:
    Figure 00180002
    Figure 00190001
  • Bei jedem Zyklus wird ein Pixel aus dem Pixelmodul 306 gelesen und zu dem Speicher-Controller 204 geschrieben. Der Lesevorgang aus dem Pixelmodul 306 wird mit der Logik in dem Steuerungsmodul 304, dem Heap-Modul 305 und dem MPE 303 in Pipelineverarbeitung verarbeitet, so daß das in dem Zyklus t ausgewählte Pixel in dem Zyklus t + 1 aus dem Pixelmodul 306 gelesen und zu dem Speicher-Controller geschrieben wird. Natürlich wird kein Pixel aus dem Pixelmodul 306 gelesen, wenn das PPH 202 leer ist.
  • Das Pixelmodul 306 implementiert den folgenden Code:
    Figure 00190002
  • Lesevorgang
  • Unter Bezugnahme auf 7 ist dort ein Flußdiagramm eines Lesevorgangs des PPH 202 basierend auf einer Pipeline mit zwei Zyklen gezeigt. Die Zeitsteuerung bei dieser Pipeline basiert auf einer zweiphasigen Taktung. In der ersten Phase verarbeitet das PPH 202 Signale aus einem Speicher durch eine Kombinationslogik. In der zweiten Phase wird ein Speicher aktualisiert. Bei einem Zyklus t treten Schritte 700 bis 704 auf; bei einem Zyklus t + 1 treten Schritte 705 bis 707 auf.
  • Zyklus t: Zuerst müssen die Signale von dem Steuerungsmodul 304 zu dem Heap-Modul 305 gültig sein. Dann erzeugt 701 das Heap-Modul 305 alle o_pixel_status[]-Bits. Der MPE 303 wählt einen Index aus 702 und liefert ihn zu dem Steuerungsmodul 304 und dem Pixelmodul 306. Das Steuerungsmodul 304 aktualisiert 703 last_bank, last_index und bank[i_index]. Das Pixelmodul 306 speichert 704 den bei 702 erhaltenen Index für eine Verwendung bei dem nächsten Zyklus.
  • Zyklus t + 1: Der Index des Eintrags in dem Heap-Modul 305, der bei dem letzten Zyklus (falls es irgendwelche gibt) ausgewählt 702 wurde, wird zu dem Verfügbarkeitsmodul 301 geschrieben 705 (o_done_index). Das Pixelmodul 306 schreibt 706 das Pixel bei rindex (i_index des letzten Zyklus) zu dem Speicher-Controller 204.
  • FIFO-Modus
  • Das PPH 202 kann als eine einfache FIFO-Warteschlange wirksam sein, wenn i_FIFO gegenüber dem MPE 303 erklärt ist. Bei einem derartigen Betrieb behält der MPE 303 den last_index, der aus dem PPH 202 (dieser ist auf 0 initialisiert) gelesen wurde, und versucht bei jedem Zyklus ((last_index + 1)mod2M) zurückzugeben. Genauer gesagt, falls das Pixel bei diesem Folgeindex (mod2M) gültig ist (was der MPE 303 aus i_pixel_status[] bestimmen kann), gibt der MPE 303 diesen nächsten Index (o_index) zurück; der MPE 303 speichert in diesem Fall auch den Index als last_index. Falls das Pixel bei dem Folgeindex ungültig ist, setzt der MPE 303 o_index = 0 und modifiziert last_index nicht.
  • Wie es oben beschrieben ist, ist das Verfügbarkeitsmodul 301 eine FIFO-Warteschlange und Einträge werden zu dem Verfügbarkeitsmodul 301 in der aus dem PPH 202 gelesenen Reihenfolge zurückgegeben. Den Betrieb des MPE 303 in einem FIFO-Modus, um aufeinanderfolgende Einträge zurückzugeben, solange das Pixel gültig ist, vorausgesetzt, arbeitet das PPH 202 somit in diesem Modus als eine FIFO-Warteschlange. Bei einer Ausführung muß der Client des PPH 202 i_FIFO während der ganzen Zeit erklären, in der ein FIFO-Modus erwünscht ist, und muß ferner sicherstellen, daß das PPH 202 leer ist, bevor es dazu gebracht wird, von dem FIFO-Modus in den PPH-Modus überzugehen. Irgendein anderer Betrieb ist undefiniert.
  • Seitenaktualisierungsprotokoll
  • Bei einer Ausführung werden, wenn ein Seitenumbruch auftritt, zwei Zyklen benötigt, um die Tabelle offener Seiten zu aktualisieren. Wenn der MPE 303 erfaßt, daß ein Seitenumbruch infolge einer bank- und RAS-Adresse eines gegebenen Pixels auftreten wird, signalisiert er dies über o_pbreak an das Steuerungsmodul 304. Da der Pixelindex o_index an das Steuerungsmodul 304 und auch an das Pixelmodul 306 geliefert wird, wird das Pixel bei dem nächsten Zyklus auch zu dem Speicher-Controller 204 geschrieben. Immer wenn somit eine Pixeladresse, die einen Seitenumbruch bewirken wird, zu einem Speicher ausgegeben wird, gibt es bald eine Totzeit gewisser Länge, z. B. sechs oder acht Zyklen bei einigen Speichersystemen. Das PPH 202 kann diese Totzeit verwenden, um bei einem Seitenumbruch Tabellen zu aktualisieren. Während der zwei zusätzlichen Zyklen, die der MPE 303 nach einem Seitenumbruch für eine Seitenaktualisierung benötigt, schreibt der MPE 303 keine in Frage kommenden Pixel zu dem Steuerungsmodul 304 oder Pixelmodul 306.
  • Das Seitenaktualisierungsprotokoll arbeitet wie folgt. Wenn das Steuerungsmodul 304 von dem MPE 303 informiert wird, daß ein Seitenumbruch aufgetreten ist, fragt es das Heap-Modul 305 nach der RAS-Adresse, die den Seitenumbruch bewirkte. Wenn das Heap-Modul 305 die RAS-Adresse (o_RAS und o_valid RAS) zurückgibt, aktualisiert das Steuerungsmodul 304 open_pages[] auf die neue Adresse für diese Bank. Für Zyklen, die bei c beginnen, ist das Protokoll wie folgt:
    Figure 00210001
  • Unter Bezugnahme auf 5 ist ein Zustandsdiagramm von Seitenaktualisierungsvorgängen gezeigt. Der MPE 303, das Steuerungsmodul 304 und das Heap-Modul 305 weisen jeweils zwei Zustände mit Bezug auf das Seitenaktualisierungsprotokoll auf. Der MPE 303 befindet sich normalerweise in einem Zustand 505 und geht bei einem Zyklus c in einen Aktualisierungszustand 506 über, um das Seitenaktualisierungsprotokoll einzuleiten. Das Steuerungsmodul 304 befindet sich normalerweise in einem Zustand 503 und geht bei dem Zyklus c auf ein Empfangen von i_pbreak von dem MPE 303 hin in einen Aktualisierungszustand 504 über. Das Heap-Modul 501 befindet sich normalerweise in einem Zustand 501 und geht bei dem Zyklus c + 1 auf ein Empfangen von i_pbreak von dem Steuerungsmodul 304 hin in einen Aktualisierungszustand 502 über; zu dieser Zeit speichert das Heap-Modul 501 auch die RAS des Seitenumbruchs. Bei dem Zyklus c + 2 erklärt der MPE 303 i_valid_RAS, sendet das Heap-Modul 305 die gespeicherte RAS zu dem Steuerungsmodul 304 und aktiviert o_valid_RAS und aktualisiert das Steuerungsmodul 304 open_pages[] mit der neuen RAS. Alle drei Module 303, 304 und 305 kehren dann zu ihren Normalzuständen 505, 503 bzw. 501 zurück.
  • Vorladung einer anderen Bank
  • Wenn sich das PPH 202 nicht in einem FIFO-Modus befindet, lädt es bei einer Ausführung eine Seite auf irgendeiner „anderen" Bank vor, wenn dies möglich ist. Vorladen ist eine Technik, die auf dem Gebiet gut bekannt ist. Durch Vorladen einer Seite auf einer anderen Bank kann die vorliegende Erfindung die Vorladeeinbuße durch ein Verschachteln eines Vorladevorgangs mit einem anderen Lese- oder Schreibvorgang verstecken. Unter Bezugnahme auf 6 ist ein Flußdiagramm eines Verfahrens zum Auswählen einer Seite gezeigt, die vorgeladen werden soll. Zuerst bestimmt 601 das PPH 202, ob irgendwelche gültigen Pixel übrig sind. Eine Bank wird nur dann vorgeladen, wenn es ein gültiges Pixel gibt, das eine Seite an dieser Bank verwenden kann. Bei einer Ausführung führt das PPH 202 diese Bestimmung durch ein Überprüfen des gültigen Bits der Pixel durch. Falls keine gültigen Pixel übrig sind, werden keine Seiten vorgeladen. Andernfalls wählt das PPH 202 ein gültiges Pixel aus 602.
  • Das PPH 202 bestimmt 603 dann, ob sich das ausgewählte Pixel auf der gegenwärtig verwendeten Bank befindet. Falls dem so ist, wird die Bank nicht vorgeladen und das PPH 202 kehrt zu 601 zurück, um ein anderes Pixel auszuwählen. Bei einer Ausführung führt das PPH 202 die Bestimmung bei 603 durch eine Überprüfung durch, ob der Pixelstatus 0×7 oder 0×5 ist, was anzeigt, daß sich das Pixel auf der gegenwärtig verwendeten Bank befindet.
  • Wenn sich das ausgewählte Pixel nicht auf der gegenwärtig verwendeten Bank befindet, bestimmt 604 das PPH 202 dann, ob sich das Pixel auf einer Bank befindet, für die es eine offene Seite gibt, die verwendet werden kann. Falls dem so ist, bringt ein Verwenden dieser offenen Seite keine Einbuße mit sich; deshalb wird die Bank nicht vorgeladen und das PPH 202 kehrt zu 601 zurück, um ein anderes Pixel auszuwählen. Bei einer Ausführung führt das PPH 202 die Bestimmung bei 604 durch eine Überprüfung durch, ob die Bank, die das Pixel umfaßt, ein anderes Pixel mit einer passenden Bank aufweist; mit anderen Worten prüft das PPH 202 die Bank des Pixels gegen die Bänke aller anderer Pixel mit einem Status 0×3. Alternativ kann der Einfachheit halber das PPH 202 einfach prüfen, ob es irgendein Pixel gibt, das immer noch eine andere Bank verwenden kann; d. h. bestimmen, ob es irgendein Pixel auf der Bank mit dem Status 0×3 gibt.
  • Wenn sich das ausgewählte Pixel nicht auf einer Bank befindet, die eine offene Seite aufweist, die verwendet werden kann, geht das PPH 202 dazu über, die Seite, die das Pixel umfaßt, vorzuladen 605, wie es unten ausführlicher beschrieben wird. Das PPH 202 stellt dann sicher 606, daß Pixel, die nachfolgend gewählt werden, um die vorgeladene Bank zu verwenden, die Seite verwenden, die vorgeladen wurde. Bei einer Ausführung implementiert das PPH 202 dies durch ein Aktualisieren der Tabelle offener Seiten, nachdem die Vorladung 605 durchgeführt wurde. Nachdem das PPH 202 Pixel für die aktuelle Bank und die offene Seite ausgewählt hat, wählt es somit automatisch Pixel für die eben vorgeladene, offene Seite aus, da das Pixelauswahlverfahren offene Seiten gegenüber Seitenumbrüchen bevorzugt. In der Praxis verwendet das PPH 202 im wesentlichen das gleiche Seitenaktualisierungsprotokoll, das für Seitenumbrüche verwendet wird, und benötigt deshalb typischerweise zusätzlich zwei Zyklen, bevor die Seitentabellen tatsächlich aktualisiert sind. In der Zwischenzeit läßt es explizit nur jene Pixel durch, deren Adressen für die aktuelle Bank und eine offene Seite vorgesehen sind.
  • Das Verfahren zum Vorladen einer anderen Bank gemäß einer Ausführung wird nun beschrieben. Die Vorladung einer anderen Bank wird durch den MPE 303, das Steuerungsmodul 304 und das Pixelmodul 306 implementiert. Wenn der MPE 303 erfaßt, daß eine andere Bank vorgeladen werden kann (durch das Verfahren von 6), schreibt er den o_index zu dem Steuerungsmodul 304 und dem Pixelmodul 306 und erklärt o_precharge. Der MPE 303 setzt ferner ein einziges Statusbit, in_precharge, das nachfolgende Handlungen leitet. Immer wenn in_recharge gesetzt ist, veranlaßt der MPE 303 Transaktionen nur an der aktuellen Bank und einer offenen Seite. Dies steht im Gegensatz zu seinem Verhalten, wenn ein Seitenumbruch auftritt; in dem letztgenannten Fall veranlaßt der MPE 303 keine weiteren Transaktionen, bis das Seitenaktualisierungsprotokoll abgeschlossen ist.
  • Wenn das Steuerungsmodul 304 eine Vorladeanforderung empfängt, speichert es die vorzuladende Bank in einem Register precharge_bank und leitet bei dem nächsten Zyklus im wesentlichen das gleiche Seitenaktualisierungsprotokoll (über o_precharge) ein, das bei einem Seitenumbruch verwendet wird, wie es oben beschrieben ist. Es gibt drei Unterschiede: 1) Namen der Signale umfassen precharge anstelle von pbreak; 2) das Heap-Modul 305 löscht das Pixel nicht, das die Vorladung bewirkt; und 3) der MPE 303 ermöglicht, daß Pixel mit Adressen für die aktuelle Seite und Bank während einer Vorladung durchlaufen können.
  • Der Betrieb des Heap-Moduls 305 bei einem Empfang von i_recharge ist im wesentlichen der gleiche wie bei dem Empfang von i_pbreak; das Modul speichert im wesentlichen die RAS, die vorgeladen werden soll, in saue_RAS. Bei dem darauffolgenden Zyklus wird dem Steuerungsmodul 304 die RAS über i_RAS zurückgegeben und es aktualisiert open_ages[precharge_bank] auf i_RAS. Während der zwei Zyklen, in denen das Heap-Modul 305 und das Steuerungsmodul 304 Informationen austauschen, erzeugt das Heap-Modul 305 weiterhin in Frage kommende Pixel für Speicherzugriffe. Falls irgendwelche von diesen für die aktuelle Bank und eine offene Seite vorgesehen sind, werden sie durch den MPE 303 zu dem Steuerungsmodul 304 und dem Pixelmodul 306 weitergeleitet und als Speichertransaktionen zu der FIFO-Warteschlange ausgegeben. Es werden keine anderen Transaktionen von dem MPE 303 zugelassen, bis das in_precharge-Bit gelöscht ist. Dies tritt bei dem letzten Zyklus des Seitenaktualisierungsprotokolls auf, wenn das Heap-Modul 305 valid RAS gegenüber dem Steuerungsmodul 304 und dem MPE 303 erklärt.
  • Eine Vorladeanforderung an das Pixelmodul 306 ist identisch mit einem Lese- oder Schreibvorgang, außer daß i_precharge erklärt wird; da das Pixelmodul 306 das Vorladebit mit der Bank-, RAS- und CAS-Adresse verkettet, wenn es einen Eintrag zu der FIFO-Warteschlange 203 des Speicher-Controllers schreibt, ist sich das Pixelmodul 306 in der Tat nicht dessen bewußt, daß die Transaktion eine Vorladung und kein Lesevorgang oder Schreibvorgang ist. Ein Seitenumbruch und eine Vorladung können nicht simultan auftreten; der MPE 303 behält einen minimalen Zustand bei, um dies zu verhindern.
  • Aus der obigen Beschreibung ist ersichtlich, daß die hierin offenbarte Erfindung ein neuartiges und vorteilhaftes System und Verfahren zum Umsortieren von Pixeln in Graphiksystemen liefert, um Bandbreite und Leistungsfähigkeit zu verbessern. Die vorhergehende Erörterung offenbart und beschreibt lediglich exemplarische Verfahren und Ausführungen der Erfindung.

Claims (13)

  1. System, das zum Umsortieren von Speicherreferenzen für Pixel konfiguriert ist, so daß Referenzen, die eine gegenwärtig offene Seite benötigen, verarbeitet werden, bevor Referenzen verarbeitet werden, die das Öffnen einer anderen Seite benötigen, um die Speicher-Lokalizität in einer Seiten-Modus-Speicherarchitektur zu verbessern, und das folgendes umfaßt: ein Verfügbarkeitsmodul, das zum Empfangen von Pixelspeicherreferenzen von einem Graphikmodul eines Client konfiguriert ist; und ein Pixel-Prioritäts-Heap (202), das mit dem Verfügbarkeitsmodul gekoppelt ist und konfiguriert ist, um Pixelspeicherreferenzen aus dem Verfügbarkeitsmodul zu empfangen, das zum Umsortieren von Pixelspeicherreferenzen konfiguriert ist, um die Speicherlokalizität zu verbessern, und konfiguriert ist, um umsortierte Pixelspeicherreferenzen zu einem Speicher-Controller (204) zu übertragen; wobei: das Pixel-Prioritäts-Heap (202) eine Mehrzahl von Slots umfaßt, die für die Speicherung von Pixelspeicherreferenzen konfiguriert sind, wobei ein jeder Slot einen Status hat, der wählbar ist aus einem Verfügbarkeitsstatus, der anzeigt, daß keine Referenz in dem Slot gespeichert ist, und einem Nicht-Verfügbarkeitsstatus, der anzeigt, daß in dem Slot eine Referenz gespeichert ist; und das Verfügbarkeitsmodul ferner konfiguriert ist, um Anzeiger zu speichern, die verfügbare Slots in dem Pixel-Prioritäts-Heap (202) repräsentieren.
  2. System nach Anspruch 1, bei dem die Pixelspeicherreferenzen Adressen in einen Textur-Speicherraum (205) umfassen.
  3. System nach Anspruch 1, bei dem die Pixelspeicherreferenzen Adressen in einen Bildspeicher (207) umfassen.
  4. System nach einem der vorhergehenden Ansprüche, bei dem das Pixel-Prioritäts-Heap (202) konfiguriert ist, um die Pixelspeicherreferenzen in Antwort auf eine Suche nach Speicherreferenzen auf offenen Seiten und Bänken umzusortieren.
  5. System nach einem der vorhergehenden Ansprüche, bei dem das Pixel-Prioritäts-Heap (202) in Antwort auf ein Modusauswahlsignal selektiv Speicherreferenzen in der empfangenen Reihenfolge überträgt.
  6. System nach einem der vorhergehenden Ansprüche, das ferner einen Speicher-Controller (204) umfaßt, der mit dem Pixel-Prioritäts-Heap (202) gekoppelt ist, um übertragene umsortierte Pixelspeicherreferenzen zu empfangen und um in Antwort auf die umsortierten Pixelspeicherreferenzen des Pixel-Prioritäts-Heaps (202) auf Speicher zuzugreifen.
  7. System nach einem der vorhergehenden Ansprüche, bei dem das Pixel-Prioritäts-Heap (202) ferner folgendes umfaßt: ein Heap-Modul, das die Mehrzahl von Slots des Pixel-Prioritäts-Heaps (202) enthält, wobei das Heap-Modul zum Speichern von Pixelspeicherreferenzen und Markierungszeichen bestimmt ist, die Speicherorte der Pixelspeicherreferenzen beschreiben; ein Steuerungsmodul, welches mit dem Heap-Modul gekoppelt ist, um offene Speicherseiten zu orten; und einen Modifizierte-Priorität-Kodierer, der mit dem Heap-Modul und dem Steuerungsmodul gekoppelt ist, um eine Pixelspeicherreferenz auszuwählen, die zum Speicher-Controller (204) zu übertragen ist.
  8. System nach Anspruch 7, das ferner ein Pixel-Modul umfaßt, welches mit dem Modifizierte-Priorität-Kodierer und dem Speicher-Controller (204) gekoppelt ist, um die Pixelspeicherreferenzen in Pipelineverarbeitung zum Speicher-Controller (204) zu übertragen.
  9. System nach einem der vorhergehenden Ansprüche, bei dem das Pixel-Prioritäts-Heap (202) selektiv eine Speicherseite auf einer alternierenden Bank vorlädt.
  10. Verfahren zum Umsortieren von Speicherreferenzen für Pixel, so daß Referenzen, die eine gegenwärtig offene Seite benötigen, verarbeitet werden, bevor Referenzen verarbei tet werden, die das Öffnen einer anderen Seite benötigen, um die Speicherlokalizität in einer Seiten-Modus-Speicherarchitektur zu verbessern, das folgendes umfaßt: a) Schreiben (705) einer Pixelspeicherreferenz in einen verfügbaren Slot eines Pixel-Prioritäts-Heaps, wobei das Pixel-Prioritäts-Heap (202) eine Mehrzahl von Slots umfaßt, die zum Speichern von Pixelspeicherreferenzen konfiguriert sind, wobei ein jeder Slot einen Status hat, der auswählbar ist aus einem Verfügbarkeitsstatus, der anzeigt, daß keine Referenz in dem Slot gespeichert ist, und einem Nicht-Verfügbarkeitsstatus, der anzeigt, daß eine Referenz in dem Slot gespeichert ist; und b) gleichzeitig mit a): b.1) Auswählen eines nichtverfügbaren Slots des Pixel-Prioritäts-Heaps (202), welcher eine Pixelspeicherreferenz enthält; und b.2) Übertragen der Pixelspeicherreferenz, die in dem ausgewählten nichtverfügbaren Slot enthalten ist, zu einem Speicher-Controller (204).
  11. Verfahren nach Anspruch 10, bei dem b) folgendes umfaßt: b.1.1) Ermitteln (404), ob irgendwelche nichtverfügbaren Slots des Pixel-Prioritäts-Heaps Pixelspeicherreferenzen enthalten, die zu einer offenen Seite und einer Bank einer unmittelbar zuvor übertragenen Pixelspeicherreferenz passen; b.1.2) in Antwort auf b.1.1), Anzeigen, daß eine passende Pixelspeicherreferenz existiert, Übertragen (405) der Pixelspeicherreferenz; und b.1.3) in Antwort auf b.1.1), Anzeigen, daß eine passende Pixelspeicherreferenz nicht existiert: b.1.4) Feststellen (406), ob irgendwelche nichtverfügbaren Slots des Pixel-Prioritäts-Heaps Pixelspeicherreferenzen enthalten, die zu einer offenen Seite passen; b.1.5) in Antwort auf b.1.4), Anzeigen, daß eine passende Pixelspeicherreferenz existiert, Übertragen (405) der Pixelspeicherreferenz; und b.1.6) in Antwort auf b.1.4), Anzeigen, daß eine passende Pixelspeicherreferenz nicht existiert und in Antwort auf die Existenz irgendeiner gültigen Pixelspeicherreferenz: b.1.7) Veranlassen eines Seitenumbruchs; und b.1.8) Auswählen und Übertragen einer gültigen Pixelspeicherreferenz.
  12. Verfahren nach Anspruch 10 oder 11, ferner umfassend: c) selektives Vorladen einer Speicherseite auf einer alternierenden Bank.
  13. Verfahren nach Anspruch 12, wobei c) folgendes umfaßt: c.1) Bestimmen (601), ob irgendeine gültige Pixelspeicherreferenz existiert; und c.2) in Antwort auf c.1), Anzeigen, daß mindestens eine gültige Pixelspeicherreferenz existiert: c.3) Auswählen (602) einer gültigen Pixelspeicherreferenz, die eine assoziierte Speicherseite hat; c.4) in Antwort darauf, daß die ausgewählte Referenz mit einer gegenwärtig verwendeten Speicherbank assoziiert ist, Zurückkehren (603) zu c.1); c.5) in Antwort darauf, daß die ausgewählte Referenz mit einer Bank assoziiert ist, die eine verwendbare offene Seite hat, Zurückkehren (604) zu c.1); und c.6) in Antwort darauf, daß die ausgewählte Referenz nicht mit einer gegenwärtig verwendeten Speicherbank assoziiert ist und nicht mit einer Bank assoziiert ist, die eine benutzbare offene Seite hat, Vorladen (605) der Speicherseite, die mit der ausgewählten Referenz assoziiert ist.
DE69736611T 1997-01-09 1997-12-19 Reorganisation von Speicherreferenzen für Pixel in einer seitenorientierten Speicherarchitektur Expired - Lifetime DE69736611T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US780787 1985-09-27
US08/780,787 US5852451A (en) 1997-01-09 1997-01-09 Pixel reordering for improved texture mapping
PCT/US1997/024264 WO1998031004A1 (en) 1997-01-09 1997-12-19 Pixel reordering for improved texture mapping

Publications (2)

Publication Number Publication Date
DE69736611D1 DE69736611D1 (de) 2006-10-12
DE69736611T2 true DE69736611T2 (de) 2007-09-20

Family

ID=25120690

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69736611T Expired - Lifetime DE69736611T2 (de) 1997-01-09 1997-12-19 Reorganisation von Speicherreferenzen für Pixel in einer seitenorientierten Speicherarchitektur

Country Status (7)

Country Link
US (1) US5852451A (de)
EP (1) EP1016068B1 (de)
JP (1) JP2001507840A (de)
AU (1) AU5812798A (de)
CA (1) CA2275237C (de)
DE (1) DE69736611T2 (de)
WO (1) WO1998031004A1 (de)

Families Citing this family (29)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3586991B2 (ja) * 1996-08-30 2004-11-10 ソニー株式会社 テクスチャ・データ読出装置およびレンダリング装置
WO1999019840A1 (en) * 1997-10-15 1999-04-22 Electric Planet, Inc. A system and method for generating an animatable character
AU5686299A (en) 1998-08-20 2000-03-14 Raycer, Inc. Method and apparatus for generating texture
US6771264B1 (en) 1998-08-20 2004-08-03 Apple Computer, Inc. Method and apparatus for performing tangent space lighting and bump mapping in a deferred shading graphics processor
US6405267B1 (en) 1999-01-22 2002-06-11 S3 Graphics Co., Ltd. Command reordering for out of order bus transfer
US6577320B1 (en) 1999-03-22 2003-06-10 Nvidia Corporation Method and apparatus for processing multiple types of pixel component representations including processes of premultiplication, postmultiplication, and colorkeying/chromakeying
US6542159B1 (en) * 1999-05-19 2003-04-01 Ati International S.R.L. Apparatus to control memory accesses in a video system and method thereof
US6469703B1 (en) 1999-07-02 2002-10-22 Ati International Srl System of accessing data in a graphics system and method thereof
US6756986B1 (en) * 1999-10-18 2004-06-29 S3 Graphics Co., Ltd. Non-flushing atomic operation in a burst mode transfer data storage access environment
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US7576748B2 (en) 2000-11-28 2009-08-18 Nintendo Co. Ltd. Graphics system with embedded frame butter having reconfigurable pixel formats
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US6564304B1 (en) * 2000-09-01 2003-05-13 Ati Technologies Inc. Memory processing system and method for accessing memory including reordering memory requests to reduce mode switching
US6891545B2 (en) * 2001-11-20 2005-05-10 Koninklijke Philips Electronics N.V. Color burst queue for a shared memory controller in a color sequential display system
US6778175B2 (en) * 2002-02-05 2004-08-17 Xgi Technology Inc. Method of arbitration of memory request for computer graphics system
US6919896B2 (en) * 2002-03-11 2005-07-19 Sony Computer Entertainment Inc. System and method of optimizing graphics processing
US6989837B2 (en) * 2002-12-16 2006-01-24 S3 Graphics Co., Ltd. System and method for processing memory with YCbCr 4:2:0 planar video data format
US7599044B2 (en) 2005-06-23 2009-10-06 Apple Inc. Method and apparatus for remotely detecting presence
US7577930B2 (en) 2005-06-23 2009-08-18 Apple Inc. Method and apparatus for analyzing integrated circuit operations
US9298311B2 (en) 2005-06-23 2016-03-29 Apple Inc. Trackpad sensitivity compensation
US7433191B2 (en) 2005-09-30 2008-10-07 Apple Inc. Thermal contact arrangement
US7598711B2 (en) 2005-11-23 2009-10-06 Apple Inc. Power source switchover apparatus and method
US20090091564A1 (en) * 2007-10-03 2009-04-09 Raju Thevan System and method for rendering electronic documents having overlapping primitives
US9019292B2 (en) * 2011-09-12 2015-04-28 Microsoft Technology Licensing Llc Reordering graph execution for processing optimization
US10061537B2 (en) 2015-08-13 2018-08-28 Microsoft Technology Licensing, Llc Data reordering using buffers and memory

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5269001A (en) * 1989-07-28 1993-12-07 Texas Instruments Incorporated Video graphics display memory swizzle logic circuit and method
US5287470A (en) * 1989-12-28 1994-02-15 Texas Instruments Incorporated Apparatus and method for coupling a multi-lead output bus to interleaved memories, which are addressable in normal and block-write modes
US5715407A (en) * 1992-03-06 1998-02-03 Rambus, Inc. Process and apparatus for collision detection on a parallel bus by monitoring a first line of the bus during even bus cycles for indications of overlapping packets
US5440713A (en) * 1992-05-29 1995-08-08 Industrial Technology Research Institute M-way N-port paged-interleaved memory system
FR2705805B1 (fr) * 1993-05-27 1996-06-28 Sgs Thomson Microelectronics Système de traitement d'images.
FR2705804B1 (fr) * 1993-05-27 1995-08-11 Sgs Thomson Microelectronics Architecture de processeur multi-tâches.
US5551002A (en) * 1993-07-01 1996-08-27 Digital Equipment Corporation System for controlling a write cache and merging adjacent data blocks for write operations
US5613083A (en) * 1994-09-30 1997-03-18 Intel Corporation Translation lookaside buffer that is non-blocking in response to a miss for use within a microprocessor capable of processing speculative instructions
US5655122A (en) * 1995-04-05 1997-08-05 Sequent Computer Systems, Inc. Optimizing compiler with static prediction of branch probability, branch frequency and function frequency
US5630096A (en) * 1995-05-10 1997-05-13 Microunity Systems Engineering, Inc. Controller for a synchronous DRAM that maximizes throughput by allowing memory requests and commands to be issued out of order
US5790130A (en) * 1995-06-08 1998-08-04 Hewlett-Packard Company Texel cache interrupt daemon for virtual memory management of texture maps

Also Published As

Publication number Publication date
EP1016068A4 (de) 2004-10-13
AU5812798A (en) 1998-08-03
EP1016068B1 (de) 2006-08-30
US5852451A (en) 1998-12-22
DE69736611D1 (de) 2006-10-12
JP2001507840A (ja) 2001-06-12
WO1998031004A1 (en) 1998-07-16
CA2275237C (en) 2002-12-03
CA2275237A1 (en) 1998-07-16
EP1016068A1 (de) 2000-07-05

Similar Documents

Publication Publication Date Title
DE69736611T2 (de) Reorganisation von Speicherreferenzen für Pixel in einer seitenorientierten Speicherarchitektur
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE69725057T2 (de) Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger
DE69918022T2 (de) Keine blockierung erforderndes textur-cache-system
EP1175663B1 (de) Verfahren zur rasterisierung eines graphikgrundelements
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
DE3619420C2 (de)
US6825847B1 (en) System and method for real-time compression of pixel colors
DE19620847B4 (de) Verfahren und Vorrichtung zur Texturabbildung
DE69917799T2 (de) Texturierungssysteme zur verwendung in drei-dimensionalen abbildungssystemen
DE69724512T2 (de) Texturabbildungssystem -medium und -verfahren
DE10101073B4 (de) Bildaufbereitungsvorrichtung mit niedrigeren Speicherkapazitätsanforderungen und Verfahren dafür
DE102008026431B4 (de) Extrapolation von nicht residenten Mipmap-Daten unter Verwendung residenter Mipmap-Daten
DE69635403T2 (de) Grafikbibliothek auf geteilten Ebenen
DE3851680T2 (de) Einrichtung zur Änderung der Bildelementdaten, die in einem Direktzugriffsspeicher gespeichert sind.
DE69635066T2 (de) Unterbrechungsschema zum Aktualisieren eines Lokalspeichers
DE60105510T2 (de) Bilderzeugungsgerät
DE69029987T2 (de) Verfahren und Gerät zur parallelen Wiedergabe von Polygonen und Pixeln
DE19709220A1 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
EP0840915A1 (de) Verfahren und apparat für ein system zum sichtbarmachen durch sortieren von segmenten
DE102013017639A1 (de) Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichen L2-Cache-Speicher mit Oberflächenkomprimierung
DE3688145T2 (de) Videoanzeigesystem.
DE102009047200A1 (de) Ein Komprimierungs-Zustandsbit-Zwischenspeicher und Zusatzspeicher
DE102020118860A1 (de) Techniken zum vorladen von texturen beim rendering von graphik
US5859646A (en) Graphic drawing processing device and graphic drawing processing system using thereof

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
R082 Change of representative

Ref document number: 1016068

Country of ref document: EP

Representative=s name: KAHLER, KAECK & MOLLEKOPF, 86899 LANDSBERG, DE