-
GEBIET DER
ERFINDUNG
-
Die
Erfindung bezieht sich im allgemeinen auf Speichermanagement, und
im genaueren bezieht sich die Erfindung auf die Verbesserung der
Speichereffizienz in einem Grafikbearbeitungssystem.
-
HINTERGRUND
DER ERFINDUNG
-
Zu
den vielen Vorteilen von modernen Computersystemen gehört deren
Fähigkeit,
lebhafte grafische Anzeigen zu produzieren. Folglich wurden Computersysteme
oft verwendete Werkzeuge in verschiedenen graphischen Techniken,
so wie in der Fotographie und im Grafikdesign. Verstärkte Computerverwendung
für diese
Zwecke hat jedoch den Effekt von erhöhter Konstruktionskomplexität und folglich
der Komplexität
der Software, die die grafischen Bilder produziert.
-
Die
Technik hat auf dieses Bedürfnis
reagiert durch mehr Bearbeitungsleistung der Computersysteme. Beispielsweise
haben viele Computersysteme Grafikprozessoren gewidmet, die speziell
ausgelegt wurden zum Reduzieren der Rechenlast des Hauptprozessors.
Viele solcher Computer weisen daher Bearbeitungsgeschwindigkeiten
auf, die die Geschwindigkeit anderer Computerkomponenten, so wie
dem Hauptspeicher (z. B. RAM) oder dem Cash übersteigen. Tatsächlich weisen
viele konventionelle Personalcomputer Hauptprozessoren auf, die
alleine die Geschwindigkeit des Hauptspeichers und des Cash übersteigen.
Folglich können trotz
gestiegener Prozessorgeschwindigkeiten der Hauptspeicher und der
Cash Flaschenhälse
innerhalb eines Computersystems erzeugen, die ungewünschter
weise den Bildrasterungsprozess behindern.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Gemäß einem
Aspekt der Erfindung verbessert eine Zirkularspeicher-Vorrichtung
mit relativ hoher Geschwindigkeit in Kombination mit anderen Prozessen
die Bildbearbeitungseffizienz. Ein Verfahren und eine Vorrichtung
zum Bearbeiten von Bilddaten, die in einem Eingangsspeicher gespeichert
sind, teilt das Bild logisch in eine Vielzahl von angrenzenden Streifen
auf. Eine erste Vielzahl von Streifen werden in einem Arbeitsspeicher
gespeichert, der eine zirkulare Adressenanordnung aufweist, wobei
der Arbeitsspeicher schneller ist als der Eingangsspeicher und eine
Vielzahl von sequenziellen Adressenorten aufweist. Die erste Vielzahl
von Streifen ist einander angrenzend und weisen eine Startadresse
auf. Zusätzlich
wird die erste Vielzahl von Streifen in Arbeitsspeicher auf eine
angrenzende Weise gespeichert und wird durch den Arbeitsspeicher
relativ zu einer Startadresse bearbeitet.
-
In
einigen Ausführungsformen
wird die erste Vielzahl von Streifen auf eine angrenzende Art gespeichert,
wenn angrenzende Abschnitte von unterschiedlichen Streifen (in der
Vielzahl der Streifen) in angrenzenden Adressorten des Arbeitsspeichers
gespeichert sind. Um die Rundheit (engl.: circularity) beizubehalten, kann
der Arbeitsspeicher einen ersten Speicherort und einen letzten Speicherort
aufweisen, wobei der erste Speicherort logisch angrenzend ist mit
dem letzten Speicherort. Darüber
hinaus kann während
der Bearbeitung ein Offset von dem adressierten Start berechnet
werden.
-
In
anderen Ausführungsformen
wird ein neuer Streifen im Arbeitsspeicher gespeichert als die erste Vielzahl
von Streifen, die bearbeitet werden. Der neue Streifen ist angrenzend
an die erste Vielzahl von Streifen. Somit kann mindestens ein Streifen
der ersten Vielzahl von Streifen zusammen mit dem neuen Streifen bearbeitet
werden. Der Arbeitsspeicher kann in eine gegebene Anzahl von Streifengebieten
aufgeteilt werden, und die Bilddaten in jedem Streifen enthalten
eine Vielzahl von Reihen von Bilddaten. In solchen Ausführungsformen
können
Streifen gespeichert werden durch Verschieben der Vielzahl von Reihen
zum Speichern im Arbeitsspeicher basierend auf der gegebenen Anzahl
von Streifengebieten.
-
Gemäß anderen
Aspekten der Erfindung beinhaltet eine Vorrichtung zum Bearbeiten
von Bilddaten, die in einem Eingangsspeicher gespeichert sind, der
logisch in eine Vielzahl von angrenzenden Streifen aufgeteilt ist,
einen Adressmanager zum Zugreifen auf einen Arbeitsspeicher auf
eine zirkulare Weise. Der Arbeitsspeicher ist schneller als der
Eingangsspeicher und weist eine Vielzahl von sequenziellen Adressorten auf.
Die Vorrichtung enthält
auch eine Datenübertragungseinrichtung,
die eine erste Vielzahl der Streifen im Arbeitsspeicher speichert,
wobei die erste Vielzahl von Streifen angrenzend sind und eine Startadresse
aufweisen. Die erste Vielzahl von Streifen ist im Arbeitsspeicher
auf eine angrenzende Weise gespeichert. Die Vorrichtung enthält ferner
einen Prozessor zum Bearbeiten der ersten Vielzahl von Streifen über den
Arbeitsspeicher relativ zur Startadresse.
-
Illustrative
Ausführungsformen
der Erfindung sind als ein Computerprogrammprodukt implementiert, das
ein vom Computer verwendbares Medium mit einem vom Computer lesbaren
Programmcode darauf aufweist. Der vom Computer lesbare Code kann
von einem Computersystem gemäß konventioneller
Prozesse gelesen und verwendet werden.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Das
Vorangegangene und Vorteile der Erfindung werden klarer durch die
folgende Beschreibung dieser mit Bezug auf die beigefügten Zeichnungen,
wobei:
-
1 schematisch
ein exemplarisches Computersystem zeigt, auf dem illustrative Ausführungsformen
implementiert sein können.
-
2 schematisch
einen Rahmen eines grafischen Bildes zeigt, das bearbeitet werden
kann gemäß den illustrativen
Ausführungsformen
der Erfindung.
-
3 die
zwei Speichereinrichtungen zeigt, die verwendet werden können zum
Bearbeiten des Bildes.
-
4A zusätzliche
Details der Konfiguration des zweiten (Cash) Speichers, der in 3 gezeigt
ist, zeigt.
-
4B eine
andere logische Ansicht des zweiten in 4A gezeigten
Speichers zeigt.
-
5 ein
illustratives Verfahren zum Bearbeiten des in 2 gezeigten
Bildes zeigt.
-
6 ein
illustratives Verfahren des Durchlaufens durch den in den 3, 4A und 4B gezeigten
zweiten Speichers zeigt.
-
BESCHREIBUNG
VON ILLUSTRATIVEN AUSFÜHRUNGSFORMEN
-
In
illustrativen Ausführungsformen
der Erfindung werden Bilddaten in einem Computersystem von einem
langsameren Speicher zu einem schnelleren, zirkular konfigurierten
Speicher für
die Bearbeitung übertragen. Details
von illustrativen Ausführungsformen
werden unten diskutiert.
-
1 zeigt
schematisch ein exemplarisches Computersystem auf dem illustrative
Ausführungsformen implementiert
sein können.
Das exemplarische Computersystem 100 aus 1 wird
lediglich für
beschreibende Zwecke diskutiert, jedoch sollte dies nicht als eine
Limitierung der Erfindung verstanden werden. Obwohl die untere Beschreibung
sich auf allgemein verwendete Ausdrücke in der Beschreibung bestimmter
Computersysteme bezieht, gelten die beschriebenen Konzepte auch
für andere
Computersysteme, Systeme beinhaltend, die Architekturen aufweisen,
die unterschiedlich zu der in 1 dargestellt
sind.
-
Der
Computer 100 beinhaltet eine zentrale Bearbeitungseinheit
(CPU) 105, die einen konventionellen Mikroprozessor, Hauptspeicher 110 (z.
B. Direktzugriffsspeicher, der im allgemeinen als „RAM" bezeichnet wird)
zum temporären
Speichern von Informationen, und Festwertspeicher (ROM) 115 zum
permanenten Speichern von nur zu lesenden Informationen, aufweist.
Zusätzlich
weist der Computer 100 auf eine Speichersteuereinheit 120 zum
Steuern des System-RAM 110 und eine Direktspeicherzugriffs-
(DMA, Englisch: Direct Memory Access) Steuereinheit 160 zum
Steuern des direkten Speicherzugriffs auf den System RAM 110 auf.
Der Computer 100 enthält
auch einen Hauptbus 130 zum Koppeln verschiedener interner
Komponenten.
-
Massenspeicher
kann bereitgestellt werden durch bekannte nichtflüchtige Speichermedien
wie eine Diskette 142, eine digitale bewegliche Scheibe
(die im allgemeinen in der Technik als „DVD" bezeichnet wird, Englisch: Digital
Versatile Disk) eine CD-ROM 147 und eine Festplatte 152.
Darüber
hinaus können
Daten und Software mit dem Computersystem 100 über austauschbare
Medien, sowie eine Diskette 142 und die CD-ROM 147 oder über eine
Netzwerkverbindung ausgetauscht werden.
-
Anwendereingaben
in den Computer 100 können
bereitgestellt sein durch eine Anzahl von Einrichtungen. Beispielsweise
können
eine Tastatur 156 und eine Maus 157 mit dem Bus 130 durch
eine Tastatur- und Maussteuereinheit 155 verbunden sein.
Es ist für
den Fachmann offensichtlich, dass andere Eingabeeinrichtungen, sowie
eine Digitalkamera, Stift und/oder Tablett und ein Mirkophon für die Spracheingabe
mit dem Computer 100 über
den Bus 130 und eine geeignete Steuereinheit verbunden
sein können.
-
Das
Computersystem 100 wird vorzugsweise gesteuert und koordiniert
durch Betriebssystemsoftware, so wie das WINDOWS NT® Betriebssystem
(vertrieben durch die Microsoft Corp. aus Redmond, Washington).
Zusammen mit anderen Computersystemsteuerungsfunktionen steuert
das Betriebssystem die Zuweisung von Systemressourcen und führt Systemaufgaben,
so wie Prozessplanung, Speichermanagement, Netzwerkbetrieb und I/O-Dienste,
aus. Zusammen mit anderen Dingen können illustrative Ausführungsformen (die
sich auf Speichermanagement beziehen) implementiert sein als Teil
des Betriebssystems oder als ein separates Dienstprogramm implementiert
sein.
-
2 zeigt
schematisch einen Rahmen eines grafischen Bildes 162, das
gemäß illustrativer
Ausführungsformen
der Erfindung bearbeitet werden kann. Das grafische Bild 162 kann
ein digitalisiertes Bild sein, das von irgendeiner bekannten Quelle,
so wie von einer Digitalkamera oder eine Videoeinspeisung, erzeugt sein
kann. Das Bild 162 kann beispielsweise etwas Bearbeitung
benötigen,
sowie die Anwendung von Komprimierungsoperationen in Übereinstimmung
mit konventionellen MPEG-Standards.
-
Bisher
wurde das grafische Bild
162 logisch in eine Vielzahl von
angrenzenden Datenstreifen aufgeteilt (nachstehend „Streifen"), die logisch betrachtet
eine Vielzahl von angrenzenden Datenzellen bilden (nachstehend „Zellen"). Jeder Streifen
besteht aus einem zweidimensionalen Array von Pixels, die dessen
jeweiligen Abschnitt des Bildes
162 bilden. In dem in
2 gezeigten
Beispiel ist das Bild
162 in zwei Reihen von sieben Streifen
aufgeteilt. Jede Reihe von sieben Streifen bildet sechs Zellen.
Die Streifen sind identifiziert als Streifen A–N, während die Zellen identifiziert
sind als Zellen 1–12.
Eine Zelle besteht aus zwei angrenzenden Streifen. Beispielsweise
bilden Streifen A und B die Zelle 1. Unten ist eine Tabelle gezeigt,
die Zellen und deren dazugehörige
Streifen in
2 zeigen:
Zelle | Streifen |
1 | A,
B |
2 | B,
C |
3 | C,
D |
4 | D,
E |
5 | E,
F |
6 | F,
G |
7 | H,
I |
8 | I,
J |
9 | J,
K |
10 | K,
L |
11 | L,
M |
12 | M,
N |
-
Zellen
sind in jeder Reihe gebildet, so dass jede mittlere Zelle (d. h.
weder die erste Zelle noch die letzte Zelle in einer Reihe) mit
der vorangehenden oder nachfolgenden Zelle überlappt. Beispielsweise ist
die Zelle 2 gebildet durch Streifen B und C, während die Zelle 3 gebildet
ist durch Streifen C und D. Folglich teilen sich die Zellen 2 und
3 den Streifen C. Auf die gleiche Weise teilen sich die Zellen 1
und 2 den Streifen B. Wie detaillierter später beschrieben wird, erleichtert
diese Überlappung
Parallelbearbeitung durch Ermöglichen
von Befehlsverknüpfung
im internen Speichersystem des Computers 100. Vorteile
der logischen Zuweisung von Streifen, sowie die Verbesserung von
Bearbeitungsgeschwindigkeit, sollten dem Fachmann klar sein.
-
Es
sollte jedoch bemerkt werden, dass die Diskussion der logischen
Streifen und Zellen in 2 exemplarisch ist und nicht
gedacht ist zu suggerieren, dass lediglich diese Anzahl von Streifen
und Zellen ausreichen. In einigen Ausführungsformen kann z. B. eine
Zelle gebildet sein durch drei Streifen oder einen Streifen. Demzufolge
ist die Diskussion von spezifischen Streifen- und Zellengrößen/Anzahlen
nicht gedacht, den Bereich verschiedener Ausführungsformen der Erfindung
zu limitieren.
-
Die
Streifen und Zellen aus dem in 2 gezeigten
Bild 162 sind logisch gebildet bevor das Bild 162 im
schnellen Speicher bearbeitet wird. 3 zeigt
zwei Speichereinrichtungen, die verwendet werden können ein
solch logisch aufgeteiltes Bild 162 zu bearbeiten. Auf
einer hohen Ebene wird das Bild 162 anfangs gespeichert
in einer Eingangsspeichereinrichtung (Eingangsspeicher 164)
und dann zur Arbeitsspeichereinrichtung (Arbeitsspeicher 166)
auf einer Streifen-für-Streifen
Weise übertragen.
Der Arbeitsspeicher 166 hat eine größere Geschwindigkeit als die
des Eingangsspeichers 164. Die CPU 105 bearbeitet
das Bild 162, während
dieses im Arbeitsspeicher 166 ist.
-
Mit
Bezug auf 3 kann im genaueren der Eingangsspeicher 164 ein
externer SDRAM (synchroner dynamischer Direktzugriffsspeicher) sein,
der das gesamte Bild 162 speichert. Die DMA-Steuereinheit überträgt Streifen
des Bildes 162 in den Arbeitsspeicher 166, der
in diesem Beispiel ein interner Cash-Speicher ist. Details des Verfahrens
zum Übertragen
und Bearbeiten des Bildes 162 werden detaillierter unten
mit Bezug auf die 5 und 6 diskutiert.
Es sollte bemerkt werden, dass obwohl SDRAM und Cash diskutiert
werden, andere Speichertypen, die solche relative Geschwindigkeiten
aufweisen, verwendet werden können. Demzufolge
sollten alle langsameren Speichereinrichtungen, die Daten zum schnellen
Speicher für
die Bearbeitung übertragen,
in vielen Ausführungsformen
ausreichen.
-
4A zeigt
zusätzliche
Details der Konfiguration des in 3 gezeigten
zweiten (Cash) Speichers. Der Arbeitsspeicher 166 ist konfiguriert,
eine feste Anzahl von Adressorten (auch als „Speicherorte" bezeichnet) aufzuweisen,
die jeder Daten für
ein Pixel in dem Bild 162 speichert. Beispielsweise weist
der in 4A gezeigte Arbeitsspeicher
Adressenorte für
96 Pixels von Daten auf. Jeder Adressort ist in der Größe geeignet ausgelegt
zum Speichern der nicht bearbeitenden Bilddaten, die vom Eingangsspeicher 162 empfangen
wurden. Folglich sollten alle Adressorte genug Raum aufweisen zum
Speichern von Farbe (z. B. rot, grün und blau), Transparenz, Tiefe
und anderen Daten, die für
ein gegebenes Pixel benötigt
werden.
-
Während der
Bearbeitung kann jeder Adressort in Folge durchlaufen werden. Wenn
z. B. der erste zu lesende Adressort der Adressort 0 ist, dann ist
der zweite zu lesende Adressort der Adressort 1, und der folgende
zu lesende Adressort wird der Adressort 2 sein, ect.... In alternativen
Ausführungsformen
sind Adressorte nicht in Folge bearbeitet. In jeder Ausführungsform
wird jedoch eine Basisadresse ausgewählt (wird unten diskutiert
und wird auch als „Startadresse" bezeichnet), und
die Bearbeitung wird relativ zu dieser Basisadresse fortgeführt. Im
genaueren wird die Bearbeitung bei relativen Abständen zur
Basisadresse durchgeführt. Wenn
beispielsweise die Basisadresse der Adressort 4 ist, dann spezifiziert
die Logik zum Bearbeiten der Adressorte 6–8 Adressortsabstände 2–4 von dieser
Basisadresse.
-
Gemäß illustrativen
Ausführungsformen
wird der Arbeitsspeicher 166 so konfiguriert, dass dieser
ein zirkularer Speicher ist. Nachdem der Adressort 95 gelesen, übersprungen
oder auf eine andere Weise durchlaufen wurde, kehrt die Bearbeitung
zurück
zum Adressort 0. Darüber
hinaus ist der Arbeitsspeicher 166 logisch in zwei oder
mehr Gruppen aufgeteilt, die den Streifen in dem Bild 162 entsprechen.
Im genaueren ist der in 4A gezeigte
Arbeitsspeicher 166 in drei gleich große Blöcke aufgeteilt. Die Blöcke werden
hier bezeichnet als erster Block 166A, zweiter Block 166B und
dritter Block 166C. Jeder Speicherblock ist konfiguriert, dieselbe
Gesamtanzahl von Adressorten wie der eines Streifens von Bilddaten
aufzuweisen. In illustrativen Ausführungsformen ist jeder Speicherblock
daher konfiguriert, die exakte zweidimensionale Größe wie ein Streifen
des Bildes 162 aufzuweisen.
-
4B zeigt
eine andere logische Ansicht des in 4A gezeigten
Arbeitsspeichers 166. Im genaueren erscheint einem Zeiger
oder einer andere Speicherdurchlaufvorrichtung der Arbeitsspeicher 166 ein
eindimensionaler Array von Adressorten zu sein. In dem gezeigten
Beispiel wird nachdem der Adressort 95 durchlaufen wurde der Adressort
0 gelesen/übersprungen
oder auf eine andere Weise durchlaufen. Angrenzende Bitdaten werden
nichts desto trotz in Adressorten wie in 4A gezeigt,
gespeichert.
-
Auf
eine Weise, die anderen Elementen der Erfindung ähnlich ist, ist die Gesamtanzahl
von in den 4A und 4B gezeigten
Adressorten exemplarisch. Folglich können unterschiedliche Anzahlen
von Adressorten und Partitionen verwendet werden, und Speicher unterschiedlicher
Größe können verwendet
werden. Diskussionen über
spezifische Größen können somit
nicht den Bereich der Erfindung limitieren.
-
5 zeigt
ein illustratives Verfahren zum Bearbeiten des in 2 gezeigten
Bildes 162. Das Verfahren beginnt bei Schritt 500,
in dem das Bild 162 in eine Vielzahl von Streifen aufgeteilt
wird. Beispielsweise kann das Bild wie in 2 gezeigt,
aufgeteilt werden. Abhängig
von der Größe des Bildes 162 kann
das Bild 162 in eine oder mehr Reihen von Streifen aufgeteilt
werden, wobei wie oben erwähnt,
jede Reihe eine Vielzahl von überlappenden
Zellen bildet. Die übrigen
Schritte werden daher für
jede Reihe in dem Bild 162 ausgeführt.
-
Im
genaueren wird ein erster Mehrfach-Satz von angrenzenden Streifen
dann vom Eingangsspeicher 164 (d. h. ein langsamerer Speicher,
so wie ein Level 2 Speicher) zum Arbeitsspeicher 166 (d.
h. ein schnellerer Speicher, so wie ein Level 1 Speicher) übertragen.
In illustrativen Ausführungsformen
können
Streifen A und B (d. h. Zelle 1) zuerst in den ersten und zweiten
Block 166A und 166B von dem Arbeitsspeicher 166 geladen
werden. Wie in den Zeichnungen demonstriert, werden die Streifen
in Arbeitsspeicher 166 auf eine angrenzende Weise geladen.
Im genaueren werden angrenzende Pixels zwischen zwei der angrenzenden
Streifen in angrenzenden Adressorten innerhalb des Arbeitsspeichers 166 gespeichert.
In dem gezeigten Beispiel weisen zwei angrenzende Streifen angrenzende
Pixels in der gleichen Reihe auf.
-
Bisher
ist die DMA-Steuereinheit als eine 2D-DMA konfiguriert. Zusammen
mit anderen Sachen führt diese
zwei Operationen durch; nämlich,
1) eine „Lade"-Operation zum Laden
einer Zelle (d. h. ein Satz von Streifen) in eine FIFO- (first-in,
first-out) Leitung, und 2) eine „Speicher"-Operation zum Speichern eines Arrays von
Bilddaten von der FIFO-Leitung in den Arbeitsspeicher 166 als
ein zweidimensionales Array von Pixels (d. h. als einen Streifen
oder Zelle). Wie oben diskutiert ist zu bemerken, dass jeder Streifen
ein zweidimensionales Array von Pixeldaten ist, das einen Abschnitt
des Bildes 162 bildet. Folglich gewährleisten diese Operationen,
dass das Streifendatenformat beibehalten wird, wenn dieses in den
Eingangsspeicher 164 gespeichert ist.
-
In
illustrativen Ausführungsformen
kann die Software-Semantik für
die zwei DMA-Operationen wie folgt sein:
-
Nachdem
der erste Satz von Streifen geladen wurde, wird dann ein Paar von
Zeigern bei Schritt 504 gesetzt. Im genaueren ist das System
konfiguriert, einen Basiszeiger aufzuweisen, der auf einen ersten
Adressort (im Arbeitsspeicher 166) einer gegebenen Zelle
zeigt, und einen Lese-Pointer, der auf einen Adressort (auch im
Arbeitsspeicher 166) zeigt, der einen Abstand relativ zum
Basiszeiger aufweist. Anfangs zeigen beide Zeiger auf dieselben
Adressorte. Beispielsweise sind die Zeiger anfangs eingestellt zum
Anzeigen auf den ersten Adressort im Streifen A. Wie in 6 gezeigt
(wird später
diskutiert), erhöht
der Basiszeiger einen Satz von Nummern von Adressorten jedes Mal,
wenn eine neue Zelle bearbeitet wird, während der Lese-Zeiger sukzessiv
einmal (für
jeden Adressort) in jeder Zelle erhöht wird, während eine solche Zelle durchlaufen
wird.
-
Folglich
fährt das
Verfahren zu Schritt 506 fort, in dem der aktuelle Satz
von Streifen (d. h. die aktuell bearbeitete Zelle) bearbeitet wird,
gemäß dem mit
Bezug auf 6 diskutierten Verfahren. Es
wird dann bei Schritt 508 bestimmt, ob die bearbeitete
Reihe zusätzliche
Streifen für
die Bearbeitung aufweist. Wenn zusätzliche Streifen für diese
Reihe nicht zu bearbeiten sind, endet dann der Prozess (für diese
Reihe).
-
Wenn
umgekehrt zusätzliche
Streifen zu bearbeiten sind, dann fährt der Prozess zu Schritt 510 fort, indem
der nächste
Satz von Streifen im Arbeitsspeicher 166 gespeichert ist.
In dem in 2 gezeigten Beispiel wird ein
einzelner Streifen von Daten (z. B. Streifen C) in dem nächsten folgenden
Block des Arbeitsspeichers 166 gespeichert, der in diesem
Fall nun der dritte Block 166C des Arbeitsspeichers 166 ist.
Der Prozess kehrt dann zu Schritt 504 zurück, in dem
die Zeiger zurückgesetzt
werden. Bis zu diesem Punkt werden der Basis- und der Lese-Zeiger
auf den Punkt des ersten Adressortes der nächsten Zelle gesetzt (z. B.
der erste Speicherort des Streifens B). Folglich wird die nächste Zelle
(bestehend aus Streifen B und C) bearbeitet, wodurch ermöglicht wird,
dass Daten (d. h. Streifen B) wieder verwendet werden. Dieses Verfahren
iteriert bis die gesamte Reihe bearbeitet ist. Wenn das Bild 162 zusätzliche
Reihen aufweist, dann wird das Verfahren für die nächste Reihe wiederholt.
-
In
illustrativen Ausführungsformen
werden verschiedene Schritte des Verfahrens aus 5 entweder in
einer unterschiedlichen Reihenfolge oder im wesentlichen simultan
ausgeführt.
Während
beispielsweise ein aktueller Satz von Streifen bearbeitet wird (Schritt 506),
kann die CPU 105 bestimmen, ob zusätzliche Streifen zu bearbeiten
sind (Schritt 508), und wenn dem so ist, wird diese solche
Streifen im nächsten
Block des Arbeitsspeichers 166 speichern (Schritt 510).
Einige Ausführungsformen
kombinieren diese drei Schritte in eine im wesentlichen parallele
Operation.
-
6 zeigt
ein Verfahren zum Bearbeiten des aktuellen Satzes von Streifen wie
durch Schritt 506 rezitiert. Das Verfahren beginnt bei
Schritt 600, in dem die Basis- und Lese-Zeiger lokalisiert
werden. Dieser Schritt kann im Prozess impliziert sein und somit
ein nicht bestätigter
Schritt sein, der in verschiedenen Ausführungsformen benötigt wird.
Der Prozess fährt
dann zu Schritt 602 fort, in dem ein Satz von Adressorten
für die
Bearbeitung gelesen wird. Bis zu diesem Punkt wird der Lesezeiger
erhöht,
um einen Satz von Nummern der Adressorte von dem Basiszeiger zu
lesen. In dem hier diskutierten Beispiel wird der Lese-Zeiger acht
mal erhöht,
um jede der ersten acht Adressorte in dessen aktuelle Zelle zu lesen.
Folglich ermöglicht
dieser Schritt des Verfahrens, Abschnitte von zwei angrenzenden
Blöcken
des Arbeitsspeichers 166 zu lesen, die Zellendaten aufweisen.
-
Nachdem
der Satz von Adressorten gelesen ist, überspringt dann der Lese-Zeiger
einen Satz der nächsten
folgenden Adressorte (Schritt 604). In dem gezeigten Beispiel überspringt
der Lese-Zeiger die nächsten
vier Adressorte. Dieser Schritt erlaubt somit dem Verfahren, den
einen Block des Arbeitsspeichers 166 zu überspringen,
der keine Zellendaten aufweist. Dann wird bei Schritt 606 bestimmt,
ob der Lese-Zeiger auf dieselbe Adresse zeigt, auf die durch den
Basis-Zeiger gezeigt wird (d. h. bei der Basisadresse). Wenn dem
so ist, dann endet das Verfahren, da die gesamte Zelle im Arbeitsspeicher 166 gespeichert
wurde. Wenn umgekehrt der Lese-Zeiger auf einen unterschiedlichen
Adresssort zeigt, dann kehrt der Prozess zurück zu Schritt 602,
in dem eine feste Anzahl der nächsten
Adressorte gelesen wird. Dieses Verfahren iteriert folglich, bis
eine gesamte Zelle im Arbeitsspeicher 166 gespeichert ist.
Wie oben erwähnt,
kann die CPU, nachdem Adressorte gelesen wurden, einige Bearbeitungsfunktionen
durchführen,
so wie das Komprimieren der Bilddaten.
-
Das
in den 5 und 6 beschriebene Verfahren ermöglicht folglich,
dass zwei dimensionale Arrays von Pixel Daten im Arbeitsspeicher 166 gespeichert
werden. Beginnend mit dem Lese/Speicher-Prozessen von dem Basiszeiger
und Konfigurieren des Arbeitsspeichers 166 als einen zirkularen
Speicher, ermöglicht dies,
effektiv erreicht zu werden.
-
Unten
ist ein Beispiel, das neun Iterationen des hier beschriebenen Verfahrens
in dem in
4A gezeigten Arbeitsspeicher
166 zeigt.
Im genaueren zeigt das Beispiel den Inhalt des Arbeitsspeichers
166 über die
neun Iterationen der Bildüberarbeitung.
Das Bild
162 weist Pixel auf, die sequentiell in Reihen
adressiert sind. Mit anderen Worten weist jede Reihe 64 sequentiell
adressierte Pixel-Orte auf. Die Parameter dieses Beispiels sind
wie folgt:
Bildgröße: | 64 × 64 |
Streifengröße: | 4 × 8 |
Anzahl
von Streifen: | 16
Streifen pro Reihe, 8 Reihen von Streifen, insgesamt 128 Streifen |
Zellengröße: | 8 × 8 (2 Streifen) |
Zirkulare
Adressgröße: | 3·4·8 |
-
In
dem unteren Beispiel wird jedes Pixel im Bild
162 in den
folgenden Format identifiziert: „a (Reihe, Spalte)". Freimachungsvermerke
so wie „a
(0,1)" repräsentieren
daher Pixel-Daten für
das Pixel, das in Reihe 0 und Spalte 1 des Bildes
162 positioniert
ist. Zusätzlich
ist die Adressennummer jedes Speicherortes in der ersten Spalte des
Arbeitsspeichers
166 direkt links von der ersten Spalte
des Arbeitsspeichers
166 aufgelistet. Natürlich können alle
Adressen in dem exemplarischen Arbeitsspeicher
166 mit
Bezug auf
4A bestimmt werden. Schließlich ist
die Basisadresse jeder Iteration groß geschrieben und unterstrichen,
während
der Bilddaten empfangende Speicherabschnitt fett gedruckt ist.
-
Wie
oben demonstriert, haben dieser und verwandte Prozesse den Effekt
des logischen Schiebens von Reihen innerhalb der Streifen zuvor
ausgewählter
Zeiten. Im Speziellen wird dieses Verschieben ausgeführt basierend
auf der Anzahl von Blöcken
im Arbeitsspeicher 166. Nachdem der erste Satz von drei
Streifen gespeichert wurde, wird im oberen Beispiel der zweite Satz
von Streifen um eine Reihe herunter geschoben, wenn diese im Arbeitsspeicher
gespeichert werden. Wenn die nächsten
drei nachfolgenden Sätze
von Streifen im Arbeitsspeicher 166 gespeichert werden,
werden diese um zwei Reihen herunter geschoben. Dieser Prozess iteriert
um eine Reihe pro Satz aus drei (in dem diskutierten Beispiel) bis
alle Zelle in einer Reihe des Bildes bearbeitet wurden.
-
Dem
Fachmann sollte klar sein, dass illustrative Ausführungsformen
in Ausdrücken
von Reihen der Zellen lediglich beispielhaft diskutiert wurden.
Es können
andere Konfigurationen von Zellen verwendet werden. Beispielweise
können ähnliche
Prinzipien auf Spalten von Zellen angewendet werden. Folglich sollen
verschiedene Ausführungsformen
nicht auf Reihen von Zellen limitiert sein.
-
Zusätzlich zu
den oben beschriebenen Vorteilen benötigen die illustrativen Ausführungsformen
nicht, dass die CPU 105 die Spur der Zeiger verfolgt. Anstelle
dessen kann ein einfacher Modulo-Befehl und Zähler verwendet werden zum Erhöhen von
Zeigern, bis bestimmte Bedingungen erreicht sind (z. B. der Lese-Zeiger zeigt
auf denselben Adressort wie durch den Basis-Zeiger angezeigt wird).
Folglich wird die CPU-Verwendung optimiert. Zusätzlich optimiert die Bearbeitung
einer Zelle von Bilddaten, während
ein anderer Streifen geladen wird, (d. h. Parallelverarbeitung)
auch die Systemleistung.
-
Verschiedene
Ausführungsformen
der Erfindung können
mindestens teilweise in einer konventionellen Computerprogrammiersprache
implementiert sein. Beispielsweise können einige Ausführungsformen
in einer prozeduralen Programmiersprache (z. B. „C") oder in einer objektorientierten Programmiersprache
(z. B. „C++") implementiert sein.
Andere Ausführungsformen
der Erfindung können
implementiert sein als vorprogrammierte Hardware-Elemente (z. B.
anwendungsspezifische integrierte Schaltkreise, FPGAs, und digitale Signalprozessoren),
oder andere verwandte Komponenten.
-
In
einer alternativen Ausführungsform
können
die offenbarte Vorrichtung und das Verfahren implementiert sein
als ein Computerprogrammprodukt für die Verwendung mit einem
Computersystem. Eine solche Implementierung kann eine Reihe von
Computerbefehlen beinhalten, die auf einem konkreten Medium, so
wie einem computerlesbaren Medium (z. B. eine Diskette, CD-ROM,
ROM, oder feste Scheibe) fixiert sind, oder an das Computersystem über ein
Modem oder eine Schnittstellenvorrichtung, so wie einem Kommunikationsadapter,
der mit einem Netzwerk über
ein Medium verbunden ist, übertragbar
ist. Das Medium kann entweder ein konkretes Medium (z. B. optische
oder analoge Kommunikationsleitung) oder ein Medium sein, das mit
kabelloser Technik implementiert ist (z. B. Mikrowellen, Infrarot
oder andere Übertragungstechniken).
-
Die
Reihe von Computerbefehlen verkörpern
die gesamte oder einen Teil der Funktionalität, die hier zuvor mit Bezug
auf das System beschrieben wurde. Der Fachmann sollte verstehen,
dass solche Computerbefehle in einer Anzahl von Programmiersprachen
für die
Verwendung mit vielen Computerarchitekturen oder Betriebssystemen
geschrieben sein kann. Darüber
hinaus können
solche Befehle in irgendeiner Speichervorrichtung gespeichert werden,
so wie einem Halbleiter, magnetisch, optisch oder anderen Speichervorrichtungen,
und können übertragen
werden unter Verwendung jeglicher Kommunikationstechnologie, so
wie optischer, infraroter, Mikrowellen, oder anderen Übertragungstechnologien.
-
Es
ist zu erwarten, dass solch ein Computerprogrammprodukt als ein
austauschbares Medium mit einer beigefügten gedruckten oder elektronischen
Dokumentation (z. B. schrumpfverpackter Software), die mit dem Computersystem
mitgeliefert wird (z. B. auf einer System ROM oder einer festen
Scheibe), vertrieben wird, oder von einem Server oder elektronischen
Bulltinboard über
das Netzwerk (z. B. dem Internet oder dem Word Wide Web) vertrieben
wird. Natürlich
können
einige Ausführungsformen
der Erfindung implementiert sein als eine Kombination von sowohl
Software (z. B. ein Computerprogrammprodukt) und Hardware. Andere Ausführungsformen
der Erfindung sind gänzlich
Hardware implementiert oder gänzlich
Software implementiert (z. B. ein Computerprogrammprodukt).
-
Obwohl
verschiedene exemplarische Ausführungsformen
der Erfindung offenbart wurden, sollte dem Fachmann klar sein, dass
verschiedene Veränderungen
und Modifikationen gemacht werden können, die einige der Vorteile
der Erfindung erreichen, ohne den wahren Bereich der Erfindung zu
verlassen. Diese und andere offensichtliche Modifikationen sollen
durch die beigefügten
Ansprüche
abgedeckt sein.