-
HINTERGRUND
DER ERFINDUNG
-
Gebiet der Erfindung
-
Diese
Erfindung betrifft im Allgemeinen das Gebiet von Computergraphiksystemen
und insbesondere die Erzeugung und Verarbeitung von Texturen in
rechnergestützten
graphischen Bildern.
-
Beschreibung
des Standes der Technik
-
Um
Realismus in einem dreidimensionalen computererzeugten graphischen
Bild auf Pixelbasis zu erzielen, muss eine realistische Oberflächenschattierung
zum graphischen Bild hinzugefügt
werden, um Oberflächenmerkmale
der realen Welt wie z.B. Oberflächentextur
zu simulieren. Eine herkömmliche
Art und Weise zum Erzeugen solcher Oberflächeneigenschaften ist die Texturabbildung.
-
Die
Texturabbildung ist ein relativ effizientes Verfahren zum Erzeugen
des Aussehens eines komplexen Bildes ohne die Langwierigkeit und
den übermäßigen Rechenaufwand,
wenn man direkt dreidimensionale Details auf der Oberfläche eines dreidimensionalen
graphischen Bildes wiedergeben muss. Insbesondere wird ein Quellen-
(Textur-) Bild, das aus einzelnen Elementen (Texeln) besteht, durch
Pixelzusammensetzung auf das dreidimensionale graphische Bild abgebildet.
Um beispielsweise ein graphisches Bild eines Eichentisches zu erzeugen,
wird zuerst die Struktur des Stuhls erzeugt. Zweitens wird ein Texturbild
von Eichenholz über
der Strukturoberfläche
des Stuhls abgebildet. Um dieses Eichentexturbild korrekt in den
Stuhl zu integrieren, wird eine vordefinierte Anzahl von Texeln
interpoliert, um jedes Pixel der Oberfläche des Stuhls zu erzeugen.
-
Wie
auf dem Fachgebiet gut bekannt ist, sind zwei der üblicheren
Texturabbildungsverfahren zum effektiven Interpolieren von Pixeln
von einem Texturbild bilineare Filterung und trilineare Filterung.
Bei der bilinearen Filterung werden vier Texel verwendet, um jedes
Pixel des graphischen Bildes zu interpolieren. Bei der trilinearen
Filterung werden acht Texel verwendet, um jedes Pixel des graphischen
Bildes zu interpolieren.
-
Um
potentiell überwältigende
Bandbreitenanforderungen zu vermeiden, die der Verwendung dieser
Texturabbildungsverfahren zuzuschreiben sind, wird häufig eine
Mip- (multum in parvo) Abbildung verwendet, um das Texturbild in
Texturabbildungen mit verschiedenen "d" Auflösungsniveaus
zu komprimieren. Während
der Abtastumwandlungsphase der Rasterisierungsphase wird jede dieser Mip-Abbildungen
der Texturabbildung mit einem spezifischen "d"-Detailniveau
vorberechnet und wird separat gespeichert. In Abhängigkeit
vom Detailniveau des graphischen Bildes auf Pixelbasis wird ein
spezifisches "d"-Niveau der Texturabbildung
für die
Texturfilterung abgerufen. Wenn das graphische Bild beispielsweise
als kleineres Bild im Hintergrund einer vom Computer erzeugten graphischen
Szene angezeigt wird, ist das Detailniveau niedrig, wodurch ermöglicht wird,
dass eine Texturabbildung mit niedrigerer Auflösung (z.B. d = 4) verwendet
wird. Wenn weniger Texel für
die Texturfilterung erforderlich sind, führt die Texturabbildung mit
niedrigerer Auflösung zu
niedrigeren Systembandbreitenanforderungen. Wenn das graphische
Bild alternativ als Bild mit voller Größe im Vordergrund einer graphischen
Szene angezeigt wird, wird eine Texturabbildungsoberfläche mit
höherer
Auflösung
(z.B. d = 0) verwendet, wodurch die gesamten Systembandbreitenanforderungen
erhöht
werden.
-
Wie
in "Hardware Accelerated
Rendering of Anti-aliasing Using a Modified A-Buffer Algorithm", Computer Graphics,
307–316
(Siggraph '97 Proceedings),
erörtert,
sind leider in einer Echtzeitumgebung, in der mehrere zig Millionen
Pixel jede Sekunde durch diese komplexen Texturabbildungsverfahren
erzeugt werden müssen,
hohe Rechenanforderungen und ungeheure Bandbreiten für ein Texturabbildungssystem
unvermeidbar. Wenn beispielsweise ein Hauptziel des Texturabbildungssystems
das Erzielen einer mittleren Pixelzusammensetzungsrate von einem
Pixel pro Taktzyklus ist, muss ohne Verwendung einer Cachespeicherung
ein Speicherblock (z.B. vier 32-Bit-Texel in einer 2x2-Matrixkonfiguration)
jeden Taktzyklus abgerufen werden. Auf der Basis einer Taktfrequenz
von ungefähr
100 MHz sind die entsprechenden Bandbreitenanforderungen zum Erzielen
einer solchen idealen Datenübertragungsrate
ungefähr
1600 MBytes pro Sekunde (MBps).
-
Aufgrund
der immer mehr zunehmenden Benutzererwartungen an Realismus in computererzeugten
Graphiken sowie des Bedarfs für
wirtschaftliche Texturabbildungssysteme ist das Erzielen solcher
idealen Datenübertragungsraten
mit einem wirtschaftlichen Preis häufig unerreichbar. Es stehen
beispielsweise kommerziell erhältliche
Systeme zur Verfügung,
die ein Texturabbildungssystem zusammen mit einer parallelen DRAM-Speichermodul-Untersystemkonstruktion
integrieren. Selbst wenn solche Systeme hohe Datenübertragungsraten
bieten, sind sie aufgrund des hohen Preises solcher Konstruktionen für den durchschnittlichen
Verbraucher wirtschaftlich unpraktisch.
-
Eine
weniger aufwändige
Implementierung der Texturabbildungssystem-Konstruktion ist die
Integration des Texturabbildungssystems in eine Graphikbeschleunigerkarte,
die über
eine Schnittstelle eines erweiterten Graphikanschlusses/einer peripheren
Komponentenverbindung (AGP/PCI) mit einem relativ kostengünstigen
Unversal-Personalcomputer koppelt.
Dieser Implementierung stehen jedoch mindestens zwei signifikante
Leistungsbegrenzungen gegenüber.
-
Da
die AGP/PCI-Schnittstelle nur eine Bandbreite von ungefähr 512 MBps
aufweist, ist erstens die Fähigkeit
des Texturabbildungssystems, Datenraten von 1600 MBps zu erzielen,
stark eingeschränkt. Insbesondere
führt ein
solcher Bandbreitenengpass zu einer relativ signifikanten Wartezeit
zwischen dem System, das eine Vielzahl von Texeln (Speicherblock)
vom Speichermodul anfordert, und dem System, das den angeforderten
Speicherblock zurückempfängt. Durch
Ausgeben dieser Speicherblockanforderungen in der Reihenfolge, in
der die Pixelidentifikatoren durch das Abtastmodul erzeugt werden, muss
das Texturabbildungssystem zweitens häufig DRAM-Seiten innerhalb
des Speichermoduls seitenweise wechseln, um die erforderlichen Speicherblöcke zu erhalten,
wodurch zusätzliche
Wartezeit in das gesamte Texturabbildungssystem eingeführt wird.
-
Um
solche Leistungsprobleme anzugehen, verwenden kostengünstige Texturabbildungssysteme
ein Cachemodul, das sich intern innerhalb des Systems befindet,
um zu versuchen, die Begrenzungen der AGP/PCI zu minimieren. Durch
Abrufen von Speicherblöcken,
bevor irgendwelche der im Speicherblock enthaltenen Texel benötigt werden, wird
die Wartezeit, die dem Abrufen dieser Texel über die AGP/PCI-Schnittstelle
zuzuschreiben ist, verringert.
-
Die
Leistungsvorteile dieser lokalen Cachekonstruktion hängen jedoch
von der Erfolgs- ("Treffer"-) Rate der Speicherung
der erforderlichen Speicherblöcke
innerhalb des Cachemoduls ab. Wenn beispielsweise bestimmte Formen
(wie z.B. lange, schmale Dreiecke) als Texturgrundelemente wiedergegeben
werden, können
Probleme eines schlechten Speicherorts auftreten. Aufgrund von Kosteneinschränkungen,
die erfordern, dass das Cachemodul eine begrenzte Speichergröße aufweist, wird
der innerhalb des Cachemoduls gespeicherte Speicherblock, der dem
Beginn der Abtastumwandlung zugeordnet ist, nicht mehr lokal innerhalb
des Cachemoduls gespeichert, bis das Ende einer Abtastumwandlungsspanne
erreicht ist. Diese Situation führt
nicht nur zu einer Steigerung der Fehler- (Misserfolgs-) Rate beim
Auffinden eines speziellen Speicherblocks innerhalb des Cachemoduls,
sondern auch zu einer Steigerung des Bedarfs, Speicherblöcke übermäßig in das
und aus dem Cachemodul auszulagern. Um dieses Ortsproblem zu minimieren,
erfordern Texturabbildungssysteme eine genaue Synchronisation zwischen
dem Speichermodul und dem Cachemodul, ohne die Kosten des Systems
drastisch zu erhöhen.
-
EP 0 747 858 A2 offenbart
die teilweise Speicherung von MIP-Abbildungen und einer entsprechenden
Textur auf einer Texturabbildungskarte, während der vollständige Satz
von MIP-Abbildungen in einem Hauptspeicher eines Hauptrechners gespeichert
wird. Im Cachespeicher der Texturabbildungskarte werden Grundelemente,
die von MIP-Abbildungen
wiedergegeben werden, gespeichert. Texel stehen im Cachespeicher
der Karte zur Verfügung,
während
im Hauptspeicher nur MIP-Abbildungen gespeichert sind.
-
Was
erforderlich ist, ist ein Cachesystem und -verfahren, das die Probleme
der Übertragung
von so vielen Texelanforderungen so früh wie möglich effektiv angehen kann.
-
Die
Erfindung ist in den Ansprüchen
1 bzw. 7 definiert. Spezielle Ausführungsbeispiele sind in den abhängigen Ansprüchen dargelegt.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß dem System
und Verfahren der vorliegenden Erfindung wird ein beschleunigtes
Cachesystem bereitgestellt, um die Operationsgleichzeitigkeit zwischen
einem Cachemodul und einem Speichermodul zu steigern. Anspruch 6
stellt eine effiziente Synchronisation eines FIFO-Schemas bereit.
Das Cachespeichersystem kann ein Abtastmodul, ein Speichermodul,
ein Texturcachemodul, ein Texturfiltermodul und eine Pixelverarbeitungseinheit
umfassen. Das System und das Verfahren synchronisieren die Verarbeitung
von Texelanforderungen und der entsprechenden Texel und vermeiden
Bandbreitenbegrenzungen in einer kosteneffizienten Weise.
-
Das
Abtastmodul erzeugt Pixelidentifikatoren entsprechend sowohl speziellen
Pixeln in einem dreidimensionalen graphischen Bild als auch Speicherblöcken von
Texeln innerhalb des Speichermoduls. Das Texturcachemodul zerlegt
jeden dieser Pixelidentifikatoren in seine entsprechenden Speicherblock-
(MB) Identifikator- und Texelidentifikator-Unterkomponenten. Auf der Basis eines FIFO-Schemas
verwendet das Texturcachemodul jeden MB-Identifikator, um festzustellen,
ob ein dem MB-Identifikator entsprechender Speicherblock bereits
lokal innerhalb des Cachemoduls gespeichert wurde. Wenn der Speicherblock
bereits lokal cachegespeichert ist, synchronisiert das Texturcachemodul die Übertragung
der Texel innerhalb des Speicherblocks zum Texturfiltermodul. Wenn
der Speicherblock noch nicht lokal innerhalb des Texturcachemoduls
cachegespeichert ist, ruft das Texturcachemodul den erforderlichen
Speicherblock aus dem Speichermodul ab und speichert den Speicherblock
an einer speziellen Stelle innerhalb des Texturcachemoduls. Wenn
diese Texel zur Pixelzusammensetzung erforderlich sind, überträgt das Texturcachemodul
die Texel zum Texturfiltermodul.
-
Dieses
System und Verfahren stellen sicher, dass ein kosteneffizientes
FIFO-Cachespeicherschema mit hoher Leistung erzielt wird, indem
die Operationsgleichzeitigkeit zwischen dem Cachemodul und dem Speichermodul
durch eine effiziente Synchronisation gesteigert wird.
-
KURZBESCHREIBUNG
DER ZEICHNUNGEN
-
1 ist
eine Darstellung hoher Ebene eines bevorzugten Ausführungsbeispiels
des Texturabbildungssystems des bevorzugten Ausführungsbeispiels der vorliegenden
Erfindung.
-
2 ist
eine detaillierte Darstellung des Texturcachemoduls des bevorzugten
Ausführungsbeispiels.
-
3 ist
eine detaillierte Darstellung des Adressenmoduls des bevorzugten
Ausführungsbeispiels.
-
4 ist
eine Darstellung des Steuermoduls des bevorzugten Ausführungsbeispiels.
-
5 ist
eine Darstellung der Umsetzung des Speicherblock-Speicherschemas
in das Cacheblock-Speicherschema
im bevorzugten Ausführungsbeispiel.
-
AUSFÜHRLICHE
BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSBEISPIELE
-
Ein
bevorzugtes Ausführungsbeispiel
der vorliegenden Erfindung wird nun mit Bezug auf die Figuren beschrieben,
in denen gleiche Bezugsziffern identische oder funktional ähnliche
Elemente kennzeichnen und die am weitesten links liegende Ziffer jeder
Bezugsziffer der Figur entspricht, in der die Bezugsziffer zum ersten
Mal verwendet wird.
-
1 ist
ein Überblick über das
System des bevorzugten Ausführungsbeispiels
der vorliegenden Erfindung zum Verbessern der Leistung der Cachespeicherung
von Texeln zur Pixelzusammensetzung. Das System 100 umfasst
ein Speichermodul 140, ein Abtastmodul 160, ein
Texturcachemodul (TCM) 130, ein Texturfiltermodul (TFM) 180 und
eine Pixelverarbeitungseinheit (PPU) 190. In diesem Ausführungsbeispiel
besteht das Speichermodul 140 aus einem dynamischen Direktzugriffsspeicher
(DRAM), der jede 4x4-Matrix
von Texeln in einem einer Vielzahl von Speicherblöcken speichert.
-
Das
Abtastmodul 160, das mit dem TCM 130 gekoppelt
ist, überträgt eine
Vielzahl von Pixelidentifikatoren 510 (in 5 gezeigt)
zum TCM 130. Das TCM 130 verwendet jeden dieser
Pixelidentifikatoren 510, um sicherzustellen, dass ein
dem Pixelidentifikator 510 entsprechender Speicherblock
aus dem Speichermodul 140 abgerufen und lokal innerhalb des
TCM 130 cachegespeichert wurde. Sobald die Speicherblöcke lokal
cachegespeichert sind, wird jedes Texel innerhalb des dem Pixelidentifikator 510 entsprechenden
Speicherblocks zum TFM 180 übertragen. Das TFM 180 filtert
die empfangenen Texel in resultierende Texel, die dann zur Pixelzusammensetzung
zur PPU 190 übertragen
werden.
-
2 ist
eine detailliertere Darstellung des TCM 130 des bevorzugten
Ausführungsbeispiels
der vorliegenden Erfindung. Das TCM 130 umfasst ein Cachemodul 220,
einen Datenformatierer 255, einen Abrufpuffer 260,
einen Anforderungspuffer 250, ein Adressenmodul 210,
ein Puffermodul 240 und ein Steuermodul 290.
-
Das
Cachemodul 220, das in diesem Ausführungsbeispiel aus einem SRAM
mit einem 4-Weg-4-Satz-Zusammenhang besteht, speichert lokal eine
Teilmenge der innerhalb des Speichermoduls 140 gespeicherten
Speicherblöcke.
Wie in 5 dargestellt ist, führt ein solcher Zusammenhang
dazu, dass das Cachemodul 220 organisatorisch in vier Wege
(z.B. Wege 0–3)
unterteilt wird, wobei jeder Weg vier Quadranten (Sätze) aufweist.
Jeder Satz mit einer eindeutigen Cacheblockadresse (z.B. einer Zahl
zwischen 0 und 15) stellt eine 4x4-Matrix von Texeln (Cacheblock)
dar.
-
Das
Adressenmodul 210, das mit dem Abtastmodul 160 und
dem Cachemodul 220 gekoppelt ist, empfängt vom Abtastmodul 160 einen
Pixelidentifikator 510 (u.uf, v.vf, d.df), der einen
ganzzahligen Teil (u., v., d.) und einen Bruchteil (_.uf,
_.vf, _.df) umfasst,
für jedes
abgetastete Pixel. Aus dem ganzzahligen Teil jedes Pixelidentifikators 510 erzeugt
das Adressenmodul 210 einen Speicherblock- (MB) Identifikator
und einen Texelidentifikator 520. Das Adressenmodul 210 verwendet
den MB-Identifikator 530, um einen Speicherblock innerhalb
des Speichermoduls 140 zu identifizieren. Das Adressenmodul 210 verwendet
den Texelidentifikator 520, um ein spezielles Texel innerhalb
dieses Speicherblocks aufzufinden. Das Adressenmodul 210 stützt sich
auf den Bruchteil des Pixelidentifikators 510 als Interpolationsfaktor
zum linearen Interpolieren der dem Texelidentifikator 520 entsprechenden
Texel zur Pixelzusammensetzung.
-
5 stellt
in Verbindung mit 2 die Verwendung jedes dieser
Identifikatoren im bevorzugten Ausführungsbeispiel besser dar.
Für die
bilineare Filterung erzeugt das Abtastmodul 160 vier Pixelidentifikatoren 510 mit
11 Bits [10:0] für
jedes Pixel des dreidimensionalen graphischen Bildes. Das Adressenmodul 210 zerlegt
jeden ganzzahligen Teil des Pixelidentifikators 510 in
einen MB-Identifikator 530 mit 9
Bits und einen Texelidentifikator 520 mit 2 Bits. Der MB-Identifikator 530,
der einen 4x4-Texelspeicherblock
innerhalb des Speichermoduls 140 darstellt, besteht aus
den höchsten
8 Bits [10:2] des ganzzahligen Teils. Der Texelidentifikator 520,
der eine orthogonale Koordinate für ein Texel innerhalb dieses Speicherblocks
darstellt, besteht aus den niedrigeren 2 Bits [1:0] des ganzzahligen
Teils.
-
Das
Adressenmodul 210 verwendet den MB-Identifikator 530, um
festzustellen, ob der dem MB-Identifikator 530 entsprechende
Speicherblock bereits lokal innerhalb eines Cacheblocks des Cachemoduls 220 gespeichert
wurde. wenn das Adressenmodul 210 feststellt, dass der
Speicherblock bereits lokal an einer speziellen Cacheblockadresse
cachegespeichert ist (Treffer), erzeugt und überträgt das Adressenmodul 210 ein Übertragungskennzeichensignal
zum Puffermodul 240. Das Übertragungskennzeichensignal
umfasst die Cacheblockadresse, den Texelidentifikator 520,
die Interpolationsfaktoren und eine Treffermarkierung. Das TCM 130 stützt sich auf
die Treffermarkierung, um Übertragungskennzeichensignale
entsprechend Speicherblöcken
zu identifizieren, die bereits lokal innerhalb des Cachemoduls 220 cachegespeichert
sind.
-
Wenn
der Speicherblock noch nicht lokal cachegespeichert ist (Misserfolg),
leitet das Adressenmodul 210 eine Anforderung zum Abrufen
des Speicherblocks aus dem Speichermodul 140 durch Übertragen
eines Abrufsignals zum Anforderungspuffer 250 ein, der
als FIFO-Warteschlange arbeitet. In diesem Ausführungsbeispiel kann der Anforderungspuffer 250 bis
zu 4 Abrufsignale gleichzeitig empfangen. Das Abrufsignal umfasst
den MB-Identifikator 530 und eine lineare Speichermoduladresse. Da
das Abrufsignal nicht schneller zum Speichermodul 140 übertragen
werden kann als es die AGP/PCI-Schnittstelle (nicht dargestellt)
erlaubt, überträgt der Anforderungspuffer 250 kontinuierlich die
Abrufsignale zum Speichermodul 140 in der Reihenfolge,
in der die entsprechenden Pixelidentifikatoren 510 vom
Adressenmodul 210 empfangen wurden. Die RGP/PCI-Schnittstelle
begrenzt jedoch die Übertragungsrate
des Anforderungspuffers 250 auf eine ungefähre maximale
Rate von 512 MBps.
-
Das
Speichermodul 140 reagiert auf den Empfang der Abrufsignale
durch Übertragen
des Speicherblocks, der dem MB-Identifikator 530 entspricht,
zurück
zum TCM 130. Aufgrund von Kosteneinschränkungen, die die Speicherkapazität des Cachemoduls 220 auf
eine endliche Größe begrenzen, können jedoch
nicht alle aus dem Speichermodul 140 abgerufenen Speicherblöcke sofort
innerhalb des Cachemoduls 220 gespeichert werden. Bis der
dem Speicherblock zugeordnete Cacheblock zum Speichern des Speicherblocks
zur Verfügung
steht, speichert der Abrufpuffer 260, der auch als FIFO-Warteschlange
arbeitet, statt dessen die empfangenen Speicherblöcke vorübergehend
in der empfangenen Reihenfolge. In diesem Ausführungsbeispiel empfängt der
Abrufpuffer 260 den 256-Bit-Speicherblock innerhalb
2 Taktzyklen eines Systemtakts.
-
Zusätzlich zum Übertragen
des Abrufsignals zum Anforderungspuffer 250 erzeugt und überträgt das Adressenmodul 210 auch
ein Abrufkennzeichensignal und ein Übertragungskennzeichensignal
zum Puffermodul 240. Das Abrufkennzeichensignal umfasst
einen Kennzeichen-Bezugszählerwert,
der mit Bezug auf 3 erörtert wird, und eine Cacheblockadresse,
die einen speziellen Cacheblock innerhalb des Cachemoduls 220 festlegt,
wo der dem MB-Identifikator 530 entsprechende
abgerufene Speicherblock gespeichert wird. Das Adressenmodul 210 ermittelt
die spezielle Cacheblockadresse für jedes Abrufkennzeichensignal
durch Stützen
auf einen Algorithmus der ältesten
Verwendung (LRU). Das Übertragungskennzeichensignal
umfasst die Cacheblockadresse, den Texelidentifikator, Interpolationsfaktoren
und eine Misserfolgsmarkierung.
-
Das
Steuermodul 290 stützt
sich auf die Abrufkennzeichensignale im Puffermodul 240,
um die Übertragung
der Speicherblöcke
vom Abrufpuffer 260 zum dem Speicherblock zugeordneten
Cacheblock zu steuern. Wie mit Bezug auf 4 genauer
erörtert
wird, löst
das Steuermodul 290, wenn das Steuermodul 290 feststellt,
dass der Cacheblock für den
zugehörigen
Speicherblock an der Oberseite des Abrufpuffers 260 zur
Verfügung
steht, die Übertragung
des Speicherblocks zum Datenformatierer 255 aus. Der Datenformatierer 255 transformiert
diesen Speicherblock von seinem ursprünglichen Format in ein Cachemodulformat,
das in diesem Ausführungsbeispiel
ein herkömmliches
ARGB-Format ist. Der Datenformatierer 255 überträgt dann
jeden dieser umformatierten Speicherblöcke zum Cachemodul 220,
wo die Speicherblöcke
in ihren zugehörigen
Cacheblöcken
gespeichert werden.
-
Das
Steuermodul 290 stützt
sich auf die durch das Adressenmodul 210 isolierte Interpolationsinformation,
um festzustellen, wann die Übertragung
jedes Texels, das jedem Übertragungskennzeichensignal
zugeordnet ist, vom Cachemodul 220 zum TFM 180 auszulösen ist.
Da ein Filterverfahren wie z.B. bilineare Filterung, mehr als ein
Texel erfordert, um eine Pixelzusammensetzung durchzuführen, und
die Möglichkeit
besteht, dass sich jedes dieser Texel aufgrund der 4-Weg-4-Satz-Organisation des
Cachemoduls 220 in einem anderen Cacheblock befinden kann,
müssen
bis zu vier Übertragungskennzeichensignale
für jede
Zusammensetzung eines Pixels zum Cachemodul 220 übertragen
werden.
-
3 ist
eine detailliertere Darstellung des Adressenmoduls 210 und
des Puffermoduls 240. Das Adressenmodul 210 umfasst
eine Adressensteuereinheit 310, ein Kennzeichenmodul 320 und
einen Kennzeichenbezugszähler
(TRC) 330. Das Puffermodul 240 umfasst einen Cachepuffer 335 und
einen Übertragungspuffer 345.
Jeder Puffer 335 und 345 kann bis zu 4 Kennzeichensignale
gleichzeitig empfangen. Das Kennzeichenmodul, das mit der Adressensteuereinheit 310 gekoppelt
ist, speichert Zusammenhänge
zwischen jeder Cacheblockadresse und dem MB-Identifikator 530 entsprechend
dem innerhalb dieses Cacheblocks gespeicherten Speicherblock. In
diesem Ausführungsbeispiel
ist das Kennzeichenmodul 320 eine Tabelle, die durch die
Adressensteuereinheit 310 aufbereitet wird.
-
Die
Adressensteuereinheit 310 ist mit dem Anforderungspuffer 250,
dem Kennzeichenmodul 320, dem TRC 330, dem Cachepuffer 335,
dem Übertragungspuffer 345 und
dem Abtastmodul 160 gekoppelt. In diesem bevorzugten Ausführungsbeispiel
ist die Adressensteuereinheit 310 eine Zustandsmaschine,
die entweder ein Softwareprogramm ist, das von einer Zentralverarbeitungseinheit (CPU)
(nicht dargestellt) eines Personalcomputers auf Intel-Basis ausgeführt wird,
oder alternativ aus einer Hardware besteht, die zum Implementieren
einer Zustandsmaschine organisiert ist. Nach dem Empfang der Pixelidentifikatoren 510 vom
Abtastmodul 160 vergleicht die Adressensteuereinheit 310 den Teil
des MB-Identifikators 530 jedes Pixelidentifikators 510 mit
den MB-Identifikatoren 530,
die im Kennzeichenmodul 320 gespeichert sind. Der TRC 330 zeichnet
die fortlaufende Anzahl von Malen auf, die die Adressensteuereinheit 310 eine Übereinstimmung
(Treffer) zwischen diesen zwei MB-Identifikatoren 530 erzielt.
In diesem Ausführungsbeispiel
ist der TRC 330 ein 8-Bit-Zähler, der anfänglich auf
0 gesetzt wird.
-
Wenn
die Adressensteuereinheit 310 einen empfangenen MB-Identifikator 530 mit
einem innerhalb des Kennzeichenmoduls 350 gespeicherten MB-Identifikator 530 als übereinstimmend
feststellt, erzeugt die Adressensteuereinheit 310 das vorher
erwähnte Übertragungskennzeichensignal,
das die Treffermarkierung, den dem MB-Identifikator 530 entsprechenden
Texelidentifikator 520 und die Cacheblockadresse, die dem
MB-Identifikator 530 zugeordnet ist, enthält. Die
Adressensteuereinheit 310 inkrementiert auch den TRC 330 um
einen Wert von 1.
-
Wenn
die Adressensteuereinheit 310 einen empfangenen MB-Identifikator 530 nicht
mit einem der im Kennzeichenmodul 320 gespeicherten MB-Identifikatoren 530 als übereinstimmend
feststellen kann, erzeugt die Adressensteuereinheit 310 ein Abrufkennzeichensignal,
das den MB-Identifikator 530 und eine lineare Speichermoduladresse
umfasst. Außerdem
werden ein Übertragungskennzeichensignal
und ein Abrufkennzeichensignal erzeugt und zum Puffermodul 240 übertragen.
Das Abrufkennzeichensignal umfasst den aktuellen TRC-Wert und eine
Cacheblockadresse, die, wie vorher erörtert, durch die Adressensteuereinheit 310 dem nicht-übereinstimmenden
MB-Identifikator 530 durch die Verwendung des LRU-Algorithmus
zugeordnet wird. Diese Cacheblockadresse wird später als Ort innerhalb des Cachemoduls 220 verwendet,
wo der dem nicht-übereinstimmenden
MB-Identifikator 530 entsprechende abgerufene Speicherblock
gespeichert wird. Im Gegensatz zur "Treffer"-Situation wird in der "Misserfolgs"-Situation der TRC 330 nicht
um 1 inkrementiert. Vielmehr wird der aktuelle Wert des TRC 330 in
das Abrufkennzeichensignal integriert und der TRC 330 wird
auf 1 zurückgesetzt.
Dieser TRC-Wert stellt die Anzahl von aufeinanderfolgenden "Treffern" dar, bevor die Adressensteuereinheit 310 die "Misserfolgs"-Situation identifiziert
hat. Das Übertragungskennzeichensignal
für die "Misserfolgs"- Situation umfasst den Texelidentifikator 520,
die dem Texelidentifikator 520 entsprechende Cacheblockadresse
und eine "Misserfolgs"-Markierung. Die "Misserfolgs"-Markierung wird
verwendet, um diejenigen Übertragungskennzeichensignale
zu identifizieren, die Speicherblöcken entsprechen, die aus dem
Speichermodul 140 abgerufen werden müssen. Sowohl das Abrufkennzeichensignal
als auch das Übertragungskennzeichensignal
werden dann an das Ende des Cachepuffers 335 bzw. des Übertragungspuffers 345 angehängt.
-
4 stellt
eine detaillierte Ansicht des Steuermoduls 290 des TCM 130 dar.
Das Steuermodul 290 umfasst eine Abrufsteuereinheit 410,
eine Übertragungssteuereinheit 430,
einen Datenbezugszähler (DRC) 440 und
ein Zustandsmodul 450. Der DRC 440 zeichnet die
Anzahl von aufeinanderfolgenden Übertragungskennzeichensignalen
mit einer "Treffer"-Markierung auf,
die zum Cachemodul 220 übertragen
werden. In diesem Ausführungsbeispiel
ist der DRC 440 ein 8-Bit-Zähler und das Zustandsmodul 450 ist
eine Tabelle, in der jede Cacheblockadresse einem Logikzustand (z.B. "Nur-Lese"-Logikzustand oder "Nur-Schreib"-Logikzustand) zugeordnet ist.
-
Die Übertragungssteuereinheit 430,
die mit dem Übertragungspuffer 350,
dem DRC 440 und dem Zustandsmodul 450 gekoppelt
ist, steuert, wann die Texel innerhalb eines Speicherblocks, die
den Übertragungskennzeichensignalen
an der Oberseite des Übertragungspuffers 350 entsprechen,
durch das TCM 130 weiterverarbeitet werden. Im bevorzugten
Ausführungsbeispiel
ist die Übertragungssteuereinheit 430 eine
Zustandsmaschine, die entweder ein von einer CPU eines Personalcomputers
auf Intel-Basis ausgeführtes
Softwareprogramm ist oder alternativ Hardwarekomponenten umfasst,
die zum Implementieren einer solchen Zustandsmaschine organisiert
sind. Wenn die Übertragungskennzeichensignale
bezüglich
eines speziellen Pixels sowohl eine "Treffer"-Markierung enthalten als auch die nächsten durch
den Übertragungspuffer 350 zu übertragenden Signale
sind, ebenso wie der Logikzustand im Zustandsmodul 450 der
entsprechenden Cacheblöcke auf
den "Nur-Lese"-Zustand gesetzt
ist, löst
die Übertragungssteuereinheit 430 den Übertragungspuffer 350 aus,
um die Übertragungskennzeichensignale zum
Cachemodul 220 zu übertragen.
Das Cachemodul 220 überträgt dann
die den Übertragungskennzeichensignalen
entsprechenden Texel zum TFM 180. Ungefähr zur gleichen Zeit inkrementiert
die Übertragungssteuereinheit 430 auch
den DRC 440, der anfänglich
auf einen wert von 0 gesetzt ist, um Eins. Wenn mindestens eines
der Übertragungskennzeichensignale,
das sich an der Oberseite des Übertragungspuffers 350 befindet
und einem speziellen Pixelidentifikator 510 zugeordnet
ist, eine "Misserfolgs"-Markierung enthält, löst die Übertragungssteuereinheit 430 nicht
sofort den Übertragungspuffer 350 aus,
um die Übertragungskennzeichensignale
zum Cachemodul 220 zu übertragen.
Vielmehr ändert
die Abrufsteuereinheit 410 die Logikzustände der
Cacheblöcke
vom "Nur-Lese"- in den "Nur-Schreib"-Zustand und löst den Abruf
des Speicherblocks aus dem Abrufpuffer 260 aus. Auf das
Erfassen der Änderung
des Logikzustands auf "Nur
Schreiben" hin ändert die Übertragungssteuereinheit 430 den
Logikzustand wieder auf den "Nur-Lese"-Zustand, inkrementiert
den DRC um 1 und löst
den Übertragungspuffer 350 aus,
um die Übertragungskennzeichensignale,
die zur Pixelzusammensetzung erforderlich sind, zum Cachemodul 220 zu übertragen.
-
Die
Abrufsteuereinheit 410 ist mit dem Abrufpuffer 260,
dem Cachepuffer 340, dem DRC 440 und dem Zustandsmodul 450 gekoppelt.
Im bevorzugten Ausführungsbeispiel
ist die Abrufsteuereinheit 410 eine Zustandsmaschine, die
ein von einer CPU eines Personalcomputers auf Intel-Basis ausgeführtes Softwareprogramm
ist oder alternativ eine Hardware umfasst, die zum Implementieren
einer solchen Zustandsmaschine organisiert ist. Die Abrufsteuereinheit 410 ist
für das
Synchronisieren des Schreibens von Speicherblöcken innerhalb des Cacheblocks 220 durch Ändern des
einem speziellen Cacheblock innerhalb des Zustandsmoduls 450 zugeordneten
Logikzustands von "Nur
Lesen" auf "Nur Schreiben" verantwortlich.
Insbesondere wartet die Abrufsteuereinheit 410, dass der
dem Abrufkennzeichensignal entsprechende Speicherblock durch den
Abrufpuffer 260 vom Speichermodul 140 empfangen
wird. Sobald er empfangen ist, vergleicht die Abrufsteuereinheit 410 den
aktuellen DRC-Wert mit dem TRC-Wert innerhalb des Abrufkennzeichensignals.
Wenn dieser TRC-Wert größer als
0 und geringer als der DRC-Wert ist, hält die Abrufsteuereinheit 410 an. Wenn
der DRC-wert größer als
oder gleich dem TRC-Wert ist und der Abrufpuffer 260 nicht
leer ist, setzt die Abrufsteuereinheit 410 den der Cacheblockadresse
entsprechenden Logikzustand auf "Nur Schreiben" und setzt den DRC-Wert
auf 0 zurück.
-
Wie
vorstehend erörtert,
führt das Ändern des
Logikzustands auf "Nur
Schreiben" dazu,
dass die Abrufsteuereinheit 410 den Cachepuffer 340 auslöst, um den
abgerufenen Speicherblock an der Oberseite des Abrufpuffers 260 zur
Umformatierung zum Datenformatierer 255 zu übertragen.
Der Datenformatierer 255 überträgt dann den umformatierten Speicherblock
zum Cachemodul 220, wo der Speicherblock im dem Abrufkennzeichensignal
entsprechenden Cacheblock gespeichert wird. Sobald der Speicherblock
innerhalb des Cachemoduls 220 gespeichert ist, reagiert
die Übertragungssteuereinheit 430 auf
die Änderung
im Logikzustand auf "Nur Schreiben" durch Ändern des
Logikzustands des Cacheblocks zurück auf "Nur Lesen". Selbst wenn dieses ganze Verfahren
das Risiko aufweisen kann, dass Speicherblöcke, die Texel enthalten, die
zu einem späteren
Zeitpunkt gebraucht werden können, möglicherweise überschrieben
werden, gleicht das Ausmaß an Wartezeit,
das durch dieses Verfahren vermieden wird, weitaus die geringfügige Verzögerung aus,
die dem zuzuschreiben ist, dass diese Speicherblöcke erneut abgerufen werden
müssen.
-
Die
vorangehende Beschreibung des bevorzugten Ausführungsbeispiels wurde für die Zwecke der
Erläuterung
und Beschreibung dargestellt. Sie soll weder erschöpfend sein,
noch die Erfindung auf die genaue offenbarte Form begrenzen. Viele
Modifikationen und Veränderungen
sind angesichts der obigen Lehre möglich. Trilineare Filterung
anstatt bilinearer Filterung kann beispielsweise durch ein alternatives
Ausführungsbeispiel
der vorliegenden Erfindung unterstützt werden. Das bevorzugte
Ausführungsbeispiel
wurde gewählt
und beschrieben, um die Prinzipien der Erfindung und ihre praktische
Anwendung am besten zu erläutern,
um dadurch anderen Fachleuten zu ermöglichen, die Erfindung in verschiedenen
Ausführungsbeispielen
und mit verschiedenen Modifikationen, die für die in Betracht gezogene
spezielle Verwendung geeignet sind, am besten zu verwenden. Das
System und Verfahren können
jedoch in einer beliebigen anderen Situation verwendet werden, in
der ein Bandbreitenengpass die effiziente Verarbeitung von großen Mengen
an Daten behindert. Es ist vorgesehen, dass der Schutzbereich der Erfindung
durch die Ansprüche
und ihre Äquivalente definiert
ist.