-
Die
vorliegende Erfindung bezieht sich auf ein Verfahren und ein Kamerasystem,
wobei ein Signal in einer Anordnung von Verarbeitungselementen verarbeitet
wird zum Erhalten paralleler Datenströme.
-
Die
Produktinformation MAPP2200, Version 2.1, Datum 1998-02-01, IVP
Integrated Vision Products AB, Technikringen 2C Schaltungselement-583 30
Linköping,
Schweden beschreibt eine Kombination aus einem Sensor und einem
Allzweck-Bildprozessor auf ein und demselben Halbleiter-Chip. Dabei handelt
es sich um einen zweidimensionalen Smart Vision Sensor mit einer
Voll-Matrix von 156 × 256 Sensoren
und 256 Prozessoreinheiten. Die eingebaute Prozessoranordnung erledigt
eine ganze Reihe von Pixeln parallel. Eine Analog-Digitalumwandlung
wird parallel an den Graupegeln einer ganzen Bildzeile durchgeführt. Alle
Pixel in einer Bildreihe oder ein adressiertes Register werden gleichzeitig verarbeitet.
Die parallelen Vorgänge
werden an den Bildregistern bitweise durchgeführt. Das Ergebnis einer Berechnung
wird in dem Akkumulator gespeichert, oder wenn die Instruktion eine
arithmetische Instruktion ist, auf in Drain-Elektrode, Carry-Register gespeichert.
Der Inhalt dieser Register kann zu einem Speicherregister verlagert
werden, kann als zweiter Operand der nächsten Instruktion wirksam sein,
oder darauf kann von dem Controller aus über das Statusregister zugegriffen
werden. Dieser bekannte Sensor wird benutzt zur Objekterkennung
und ist nicht geeignet für
Video-Kommunikation. Der bekannte Sensor beschreibt nicht eine parallele
Implementierung eines Sensors für
Farbbilder, die für
Video-Kommunikation erwünscht
ist.
-
Eine
Kombination einer Anordnung von Verarbeitungselementen mit einem
Misch-Bus ist in IEEE Journal of Solid State Circuits, Heft 23,
Nr. 1, 02-1988, Seiten 98–104
beschrieben worden.
-
Es
ist nun u.a. eine Aufgabe der vorliegenden Erfindung, eine Flexibilität paralleler
Datenverarbeitung zu verbessern. Dazu schafft die vorliegende Erfindung
eine Anordnung, ein Kamerasystem und ein Verfahren, wie in den Hauptansprüchen definiert. Vorteilhafte
Ausführungsformen
sind in den Unteransprüchen
definiert.
-
Eine
erste Ausführungsform
der vorliegenden Erfindung weist das Kennzeichen auf, dass die Anordnung
weiterhin Mittel aufweist zum Mischen der parallelen Datenströme auf eine
blockartige Weise.
-
In
weitgehend paralleler Verarbeitung ist Flexibilität, insbesondere
in Termen von Datenfluss, wesentlich begrenzt. Die vorliegende Erfindung
schafft Blockpegelberechnung, wie dies bei Videoverarbeitungsanordnungen
weitgehend angewandt wird, kombiniert mit paralleler Datenverarbeitung.
-
In
einer praktischen Ausführungsform
umfassen die Datenmischmittel eine Anordnung adressierbarer Schaltspeichermatrizen,
die je mit einer vorbestimmten Anzahl Verarbeitungselemente gekoppelt
sind. Die Schaltspeichermatrizen sind imstande, die Daten blockweise
zu mischen. Weil die Schaltspeicher parallel angeordnet sind, ist
Steuerung sehr schwer.
-
Die
vorliegende Erfindung schafft weiterhin ein Kamerasystem mit einem
Sensor und einer Anordnung nach der vorliegenden Erfindung. Das
Kamerasystem wird vorzugsweise für
Video-Kommunikation eingesetzt. Applikationen für Video-Kommunikation erfordern
zur Zeit einen riesigen Aufwand an Blockpegelberechnungen für beispielsweise
Kompression. Die vorliegende Erfindung schafft eine Erweiterung
einer weitgehend parallelen Architektur um beispielsweise Blockpegelberechnungen
zu ermöglichen.
-
Ausführungsbeispiele
der Erfindung sind in der Zeichnung dargestellt und werden im vorliegenden
Fall näher
beschrieben. Es zeigen:
-
1 ein Kamerasystem mit einer
weitgehend parallelen Verarbeitungsarchitektur und mit Datenmischmitteln
nach der vorliegenden Erfindung,
-
2 eine Farbfilteranordnung,
-
3 eine Architektur einer
linearen Verarbeitungsanordnung nach der vorliegenden Erfindung,
-
4 eine Datenmischmittelarchitektur
nach der vorliegenden Erfindung,
-
5 bis 8 verschiedene Betriebsarten der Datenmischmittel
nach 4, und
-
9 und 10 Betriebsarten der Datenmischmittel,
wobei zwei benachbarte Schaltmatrizen gekoppelt sind.
-
Die
Zeichnung zeigt nur diejenigen Elemente, die zum Verständnis der
vorliegenden Erfindung notwendig sind.
-
1 zeigt eine bevorzugte
Ausführungsform
der vorliegenden Erfindung, d. h. ein Kamerasystem mit einer weitgehend
parallelen Verarbeitungsarchitektur und mit Datenmischmitteln nach
der vorliegenden Erfindung. Das Kamerasystem umfasst eine Bildsensoranordnung
S mit einem parallelen Analog-Digitalwandler (ADC 1...320). Der
Analog-Digitalwandler ist mit einer linearen Prozessoranordnung
(LPA 1...320) sowie mit einem Zeilenspeicher (LM) gekoppelt. Die
jeweiligen Teile des Kamerasystems werden von einer zentralen Verarbeitungseinheit
(CPU) gesteuert. Das Kamerasystem benutzt vorzugsweise CMOS-Bilderzeugung,
wobei Halbleiter-CMOS-Sensoren und digitale Signalverarbeitung (DSP)
auf einem einzigen IC-Chip integriert sind.
-
Ohne
die Datenmischmittel ist die Ausführungsform nach 1 bereits imstande, Pixelpegelbildverarbeitung
und -filterung durchzuführen,
wie Totpixelersatz, Autoweißeinstellung,
Autobelichtungssteuerung.
-
Ein
hoher Pegel der Parallelität
fürt zu
einer geringen Flexibilität
zum Durchführen
komplexerer Blockpegelalgorithmen, wie DCT und Zick-Zack-Abtastung.
Die vorliegende Erfindung schafft dazu eine Erweiterung einer weitgehend
parallelen Architektur, wodurch die Signalverarbeitungsanordnung
imstande ist, auf effiziente Art und Weise Blockpegelvorgänge durchzuführen mit
vereinzelbarer rekursiver "Discrete
Cosine Transform" (DCT),
Farbart-Unterabtastung, und Zick-Zack-Abtastung. Dazu ist das Kamerasystem
mit Mitteln erweitert worden zum Mischen von Daten auf eine blockartige
Weise. Die Datenmischmittel (TSMM 1...80) sind mit der LPA und dem Zeilenspeicher
LM gekoppelt. In einer praktischen Ausführungsform umfassen diese Datenmischmittel eine
Anordnung von Übertragungsschaltspeichermatrizen
("Transpose Switch
Memory Matrices" TSMMs).
Die TSMM ist eine zusätzliche
Blockpegelspeichereinheit zu der ursprünglichen Architektur. Die TSMM
ist entworfen worden zum Verbessern des Datenflusses zwischen den
Verarbeitungselementen und dem Zeilenspeicher LM. Sie können als
eine Erweiterung des Zeilenspeichers LM mit hinzugefügter Funktionalität betrachtet
werden. Die TSMM bindet Verarbeitungselemente zusammen und ermöglicht Speicherung
und Kommunikation zwischen denselben. Bei einer weiteren Ausführungsform
bindet die TSMM eine benachbarte TSMM und ermöglicht Übertragung von Daten zu einer
benachbarten TSMM. Andere Vorteile sind, dass die TSMM Daten überträgt und ermöglicht Zugriff
auf die Ausgänge von
vier Prozessoren, d. h. blockweise beliebige Adressierung. Weil
die TSMMen mit je vier Prozessorelementen gekoppelt sind, ist die
gesamte Anzahl TSMMen bei dieser Ausführungsform 80.
-
Wegen
der massiv parallelen Architektur werden nicht nur hohe rechnerische
Leistungen erzielt, sondern auch mit einen günstigen Energieverbrauch. Die
Datenbandbreite der On-Chip-Speicher wird nicht durch die Anzahl
I/O-Stifte begrenzt, wie bei den Off-Chip-Gegenstücken. Datenbandbreitenbegrenzungen
können
durch Zugriffslatenzanforderungen oder Übersprechen verursacht werden,
aber diese Sachen können
dadurch verringert werden, dass Taktanforderungen der Speichereinheiten
reduziert werden. Dies geschieht mit ausreichender Parallelität und mit
einem geeigneten Architekturentwurf. Mit einer ausreichend niedrigen
Taktrate kann die Betriebsspannung verringert werden zum Erzielen
weiterer Energieeinsparungen. Eine wesentliche Reduktion des Energieverbrauchs
stützt
auf das Prinzip, das die Daten parallel aus dem Zeilenspeicher LM
erhalten werden. Speicherzugriff verbraucht einen wesentlichen Teil
der Energie in sequentiellen Prozessoren. In einem sequentiellen
Prozessor braucht man eine bestimmte Anzahl Zugriffe auf den Speicher
je Pixel um einen Algorithmus laufen zu lassen. Erstens wird in
der LPA die Anzahl Zugriffe je Pixel einfach reduziert, das vielfache
Berechnungen mit einem einzigen Lese/Schreivorgang durchgeführt werden
können,
wobei alle gleichzeitig verfügbaren
Pixelwerte vorhanden sind. Zweitens sind die Zeilenspeicher LM um
einen Faktor 3 leistungseffizienter als ein vergleichbarer Zugriff
auf Pixelspeicher. Ein Teil der Leistungseffizienz rührt von
der parallelen Implementierung der ADC und der LPA her. Obschon
es für
die rechnerische Leistung nichts ausmacht, ob Berechnungen in Sequenz
oder parallel durchgeführt werden,
wird die Leistung durch langsame Elemente, wie Steuerdecodierungs-
und Instruktionstricks wesentlich reduziert.
-
Das
Kamerasystem ist anwendbar bei "Electronic
Still Picture" (ESP/DSC),
digitalen Videokameras, Desktop-Videokameras, Videophonen usw. Diese
Produkte werden alle durch geringe Kosten und durch einen hohen
Integrationspegel gekennzeichnet. Einige der Applikationen erfordern
ebenfalls den geringen Energieverbrauch. Die Ausführungsform unterstützt typische
Signalverarbeitungsaufgaben, wie: Analog-Digitalumwandlung (SDC),
Bildverbesserung und Transformationen sowie viele Steuerfunktionen,
wie Weiß-Balance-
und Belichtungszeitsteuerung.
-
Es
gibt im Wesentlichen zwei programmierbare digitale Prozessoren:
die CPU für
zeilenbasierte Algorithmen und die lineare Prozessoranordnung (LPA
1...320) für pixelbasierte
Algorithmen. Die beiden Prozessoren erhalten ihre Instruktionen
aus einem Programmspeicher (PM). Nicht programmierbare Prozessoren
und Controller können
verwendet werden zum Schaffen von Reihen- und Spaltenadressselektoren,
eines ADC-Controllers,
eines I2C Steuerprozessors und eines seriellen Prozessors (SP).
Diese Prozessoren können
Parameter von der CPU akzeptieren zur Unterabtastung, zur Selektion des
betreffenden Gebietes, zur Spiegelung, Verstärkung, Schwarzpegel, Gamma
und Videoausgangsformat. Der serielle Prozessor ist über einen
Spaltenselektor (CS) mit dem Zeilenspeicher LM gekoppelt.
-
Der
Bildsensor S kann eine VGA (640 zu 480) Matrix aktiver Pixel sein.
Nachdem ein Pixel durch Anlegung einer bestimmten Spannung an den Kondensator
zurückgestellt
worden ist, wird eintreffendes Licht damit anfangen, diese Ladung
zu reduzieren. Nach einer bestimmten Belichtungszeit wird die Restspannung
an dem Kondensator ausgelesen, was die Beleuchtung oder "den Pixelwert" reflektiert. Die
Belichtungszeit wird von der Verzögerung zwischen dem Zurückstellen
und dem Auslesen des Pixels gesteuert. Der Sensor kann als großer analoger Speicher
betrachtet werden, wobei die Bildreihen als beliebig adressierbare
Worte wirksam sind. Dies bedeutet, dass obschon alle Pixel innerhalb
einer ganzen Reihe (d. h. 640) gleichzeitig ausgelesen werden, eine
beliebige Selektion eines betreffenden Gebietes (ROI) dennoch möglich ist.
-
Die
Pixel können
mit einer optischen Farbfilteranordnung überlagert werden, wie in 2 dargestellt. Dieses Filter
ordnet jedem einzelnen Pixel entweder eine rote (R), eine grüne (G) oder
eine blaue (B) Empfindlichkeit zu. Eine Reihe in der Filteranordnung
enthält
zwei abwechselnd verschiedene Farben. Weil nur eine einzige Farbe
je Taktzyklus verarbeitet wird, ist es günstig, je Verarbeitungselement zwei
Spalten gemeinsam zu haben, die den verschiedenen Farben entsprechen.
Die parallele Prozessoranordnung LPA besteht deswegen aus 320 vorzugsweise
identischen Verarbeitungselementen, d. h. ein Verarbeitungselement
zu je zwei Spalten. Die Art der Teilung von Spalten, die verschiedenen
Farben entsprechen, ist abhängig
von dem verwendeten Farbfilter. Wenn beispielsweise ein Farbfilter
drei verschiedene Farben in einer Reihe schafft, können drei
Spalten je Verarbeitungselement geteilt werden.
-
Da
der CMOS-Sensor auf Reihenbasis ausgelesen wird, ist ein paralleler
ADC günstig.
Alle Spalten werden gleichzeitig umgewandelt. Wegen der niedrigen
Abtastrate, wegen der Tatsache, dass ein gemeinsamer Teil für alle ADCs
geteilt werden kann und dass ein fester Offset erlaubt ist, kann
der parallele ADC sehr leistungseffizient entworfen werden, dies
im Vergleich zu ADCs mit Video-Geschwindigkeit. In dem ADC hat jede
Spalte eine Vergleichsstufe, die einen Satz von Signalspeichern
ermöglicht, in
denen der Ausgangswert gespeichert werden soll. Ein Eingang jeder
Vergleichsstufe ist mit dem zu digitalisierenden Signal verbunden.
Das Eingangssignal ist nach wie vor stabil, während dem anderen Eingang der
Vergleichsstufe von einem globalen Sägezahngenerator ein Sägezahnsignal
zugeführt
wird. Wenn das Sägezahnsignal
den Eingangswert erreicht, wird die Vergleichsstufe den den Signalspeichern
zu dem betreffenden Zeitpunkt zugeführten digitalen Wert umschalten
und speichern. Dadurch, dass die Signalspeicher mit einem globalen
Zähler verbunden
werden, der zu dem Sägezahngenerator einigermaßen synchronisiert
ist, kann die Schaltzeit (und folglich den analogen Eingangswert)
auf einem digitalen Wert abgebildet und in den Speichern gespeichert
werden. Ein Nachteil des parallelen ADCs ist, dass Parameterstreuung
eine Reaktionsdifferenz zwischen Spalten für gleiche Intensitäten verursacht. Dies
zeigt sich als ein spaltenbasierter "Fixed-Pattern Noise" (FPN) in dem Bildsignal. Dieser Spalten
FPN wird von einem Auslösungsprogramm
geschätzt
und in einem der Zeilenspeicher zur Annulierung in der normalen
Betriebsart gespeichert. Der Pixelpegel FPN wird von dem durchaus
bekannten Verfahren der Doppelabtastung korrigiert, wozu analoge
Subtraktion in dem ADC integriert ist. Wegen der Farbfilteranordnung
können
zwei Spalten sich ein einziges ADC-Element teilen. Auf diese Weise
findet analoges Multiplexing statt. Wenn digitales Multiplexing
erwünscht
ist, ist nur ein ADC je Spalte erforderlich.
-
3 zeigt eine praktische
Implementierung einer Prozessoranordnung LPA 1...320. Über linke und
rechte Kommunikationskanäle
COMM und Multiplexer MUX 1...320 kann jedes Verarbeitungselement
unmittelbar Daten aus sechs Spalten erhalten. Die aus dem Zeilenspeicher
LM ausgelesenen Daten oder eine bestimmte TSMM können zu dem entsprechenden
Verarbeitungselement oder zu dem Verarbeitungselement auf der linken
oder rechten Seite zurückgeführt werden,
wodurch eine beschränkte
Kommunikation zwischen Verarbeitungselementen LPA1...320 geschaffen
wird. Ein Datenwort kann in einem bestimmten Taktzyklus zu den benachbarten Verarbeitungselementen
geschoben werden. Alle Verarbeitungselemente lassen identische Instruktionen
an ihren örtlichen
Daten laufen. Auch hier wird wieder im Vergleich zu einem sequentiellen
Spaltenprozessor Energieverbrauch reduziert, weil die Steuerung
und die Adressendecodierung nur einmal durchgeführt und von allen Verarbeitungselementen entsprechend
einem "Single Instruction
Multiple Data" (SIMD)
Prinzip geteilt wird. Jeder Prozessor enthält einen Akkumulator ACC1...320,
der das jüngste Ergebnis
speichert, das als Operand für
eine nächste Instruktion
verwendet werden kann. Ein Addierer sowie ein Multiplizierer sind
in der ALU1...320 implementiert worden und mit diesen Funktionen
werden Vergleich, Addition, Subtraktion, Datengewichtung und Multiplizieren-Akkumulieren
durchgeführt.
Die Prozessoren enthalten einen Merker F, der entsprechend dem jüngsten Ergebnis
gesetzt wird. Auf Basis dieses Merkers F sind bedingte Pass-Instruktionen möglich, wobei
eine beschränkte
Form von Datenabhängigkeit
in dem Algorithmus erlaubt ist. Alle 320 Merker F1...F320 sind mit
einer globalen Leitung EVT verbunden, die mit der CPU gekoppelt
ist. Auf diese Weise können
Wiederholungsprozesse mit einer bestimmten End-Bedingung über die
parallele Prozessoranordnung LPA laufen oder die CPU kann auf Bildinhalt
reagieren. Die CPU schafft dazu ein Steuersignal INSTR. An den Stellen
P1...P4 werden resultierende Daten verfügbar. Daten aus dem Zeilenspeicher
LM oder aus dem TSMM, der mit diesen Punkten P1...P4 gekoppelt ist,
können
in den betreffenden Verarbeitungselementen LPA1...320 verwendet
werden.
-
Man
kann den Akkumulator ACC, den Inhalt des Speichers LM oder eine
globale Gewichtung WGHT als Operand verwenden. Das Gewicht WGHT, dass
für alle
Prozessoren LPA 1...320 gleich ist, wird verwendet zum Skalieren
der Daten bei der Multiplikation und bei den Multiplizier-Akkumulier-Instruktionen.
Das Gewicht WGHT kann von der CPU geliefert werden.
-
Aufgaben,
für welche
der parallele Prozessor LPA benutzt werden kann sind: Festmuster-Geräuschreduktion,
das Verstecken fehlerhafter Pixel, Geräuschreduktion, Farbrekonstruktion
und Farbdomäntransformation
mit Vorfilterung für
Unterabtastungszwecke.
-
Durch
Verwendung eines Doppeltor-Prinzips für die Zeilenspeicher LM in
einem einzigen Instruktionszyklus können Operanden aus dem Speicher ausgelesen
werden und Ergebnisse können
an gewünschten
Stellen zurück
geschrieben werden. In einer praktischen Ausführungsform umfasst der Zeilenspeicher
(LM) 16 Zeilenspeicher zur einstweiligen Datenspeicherung. Weiterhin
werden zusätzlich
drei Zeilen verwendet, und zwar als Nur-Schreiben-Speicher zum Zusammenbringen
der Endergebnisse der Berechnungen.
-
Die
CPU ist im Dienste des ganzen Chips. Die Hauptaufgabe ist, den Programmzähler zu
führen,
Instruktionen hervorzubringen und zu decodieren und sie zu dem LPA
weiter zu leiten. Außerdem kann
sie globale Berechnungen durchführen
zur Steuerung der Belichtungszeit, für die Weißbalance und dergleichen. Sie
benutzt die statistischen Bilddaten, die aktualisiert werden (durch
den seriellen Prozessor SP), in internen Registern. Eine Anzahl
logischer und arithmetischer Instruktionen, die eine Multiplikation
umfassen, sind verfügbar.
Zur Programmsteuerung erledigt die CPU (bedingte) Sprünge in einem
Programm und enthält
dazu eine Anzahl (Programm) Zähler.
Außerdem
kann die CPU auf Ereignisse reagieren, die von dem parallelen Prozessor LPA
erzeugt worden sind, und zu Subroutinen springen. Bestimmte Register
der CPU sind über
I2C zugänglich
und bieten eine Kommunikationsweise zu und von einem Endbenutzer.
So kann beispielsweise ein betreffendes Gebiet zu der CPU spezifiziert
werden, die ihrerseits die selektierten Reihen und Spalten zur Verarbeitung
selektiert. Der Programmspeicher enthält die Instruktionen für die CPU.
Es sei bemerkt, dass dieser Speicher PM ebenfalls Instruktionen
enthält
für den
parallelen Prozessor LPA. Die Instruktionen werden decodiert und
danach wird entweder der LPA oder die CPU aufgerufen. Dieser sequentielle
Instruktionstrick ermöglicht
das Programmieren der Kombination der zwei Prozessoren aus einem
einzigen Programm.
-
Vorzugsweise
besteht der TSMM aus einem halbverbundenen Kreuzschienenschalter,
der einer Matrix von Registern überlagert
worden ist. Die vorgeschlagene Architektur des TSMMs ist in 4 dargestellt. Rechtecke
MR stellen Register in der Speichermatrix dar. Der TSMM umfasst
weiterhin steuerbare Schalter T, dargestellt durch Kreise. Ein voller Kreis
bedeutet, dass der Schalter geschlossen und leitend ist. Ein offerener
Kreis bedeutet, dass der Schalter offen und gesperrt ist. Der TSMM
kann global adressiert werden und darauf kann unabhängig von
dem Zeilenspeicher zugegriffen werden. In der Zeichnung ist eine
Matrix von 4 × 4
Registern als Beispiel gegeben. Weil die Verarbeitungselemente mit zwei
Spalten der Sensoranordnung gekoppelt sind, ist der TSMM im Endeffekt
mit acht Spalten in der Sensoranordnung gekoppelt. Bei dieser Ausführungsform
ist ein einziger TSMM im Endeffekt zum Verarbeiten eines Blocks
von 8 zu 4 Pixeln vorgesehen. Bei einer praktischen Ausführungsform
sind acht Busse, vier in der horizontalen Richtung (r1...r4) und
vier in der vertikalen Richtung (c1...c4), die den Kreuzschienenschalter
bilden 16 Bits breit. Die Busse sind mit den Verarbeitungselementen
LPA, mit dem Zeilenspeicher LM, benachbarten TSMMn sowie den Registern
MR der Matrix gekoppelt.
-
Weiterhin
sind Schalter T an den Kreuzungen der horizontalen (r1...r4) und
vertikalen Busse (c1...c4) vorgesehen zur Steuerung des Datenflusses
zwischen den mit einander verbundenen Einheiten. Obschon ein Schalter
an jeder Kreuzung vorgesehen sein kann, ist in 4 eine Anzahl von sieben Schaltern an
Kreuzungen bei diesem Ausführungsbeispiel
bevorzugt. Außerdem
ist jedes Register MR mit dem entsprechenden horizontalen (r1...r4)
und vertikalen Bus (c1...c4) verbunden, durchgeschaltet durch zwei
Schalter T. Daten können über den
horizontalen oder den vertikalen Bus zu und von den Registern MR
fließen.
-
Die
Registermatrix kann als vier Spalten (c1...c4) von vier Registern
MR interpretiert werden, wobei jede Spalte einem bestimmten Verarbeitungselement
LPA1...320 entspricht. Ein Verarbeitungselement hat begrenzten Zugriff
auf andere Spalten innerhalb des TSMMs. Die Ausführungsform nach der vorliegenden
Erfindung schafft die nachfolgenden Datenfluss-Konfigurationen:
Zeilenspeicherzugriff, Registerzugriff, Überlagerung-Schreiben/Lesen,
Verarbeitungselement-selektives Lesen/Schreiben, Längsblockübertragung.
Diese Konfigurationen werden nachstehend noch näher beschrieben.
-
5 zeigt eine Datendurchführungs-Betriebsart.
Die Schalter T bei P1...P4 sind geschlossen, was zu einer direkten
Datenstrecke zu dem Zeilenspeicher führt. Der TSMM ist transparent
für den Prozessor
LPA und die Zeilenspeicher MEM. In den Registern MR werden keine
Daten gespeichert, weil alle Schalter, die mit den Registern verbunden
sind, offen sind.
-
6 zeigt eine Registerzugriffs-Betriebsart. In
dieser Betriebsart wird der TSMM zur einstweiligen Speicherung verwendet.
Daten können
aus den Speicherregistern ausgelesen und in denselben eingeschrieben
werden. Wie in 5 sind
die Schalter bei P1...P4 geschlossen. Weiterhin sind die Schalter T
der Register der dritten Reihe mit den betreffenden Spalten ebenfalls
geschlossen. Auf diese Weise wird eine ganze Reihe ausgelesen oder
eingeschrieben, und zwar in einer wort-artigen Weise in der dritten Registerreihe.
Die vier Spalten sind unter einander exklusiv. Ein Spalt in dem
TSMM ist mit dem entsprechenden Verarbeitungselement assoziiert
und auf diesen Spalt kann nur von diesem direkt zugegriffen werden.
Der TSMM kann zur einstweiligen Speicherung ähnlich wie die Speicherung
in dem Zeilenspeicher LM verwendet werden. Ein Vorteil des TSMMs gegenüber dem
LM ist, dass der TSMM viel näher
bei dem LPA steht und mit einer geringeren Taktrate als LM laufen
kann. Lokalisierung des Speichers kann leistungseffizienter sein.
-
7 zeigt eine Übertragungs-Betriebsart. Daten,
die in dem TSMM gespeichert sind, werden spaltenweise ausgelesen
und den vertikalen Bussen zugeführt,
indem die geeigneten Schalter T geschlossen werden zum Ausliefern
eines horizontalen Wortes zurück
zu den Verarbeitungselementen. Übertragungs-Lesen
(und Schreiben, wenn in der entgegengesetzten Richtung angewandt)
des TSMMs ist dadurch erzielt.
-
9 zeigt eine Prozessor-selektive
Zugriffs-Betriebsart. Diese Figur zeigt die Fähigkeit der Benutzung des TSMMs
zum beliebigen Zugreifen auf einen der vier Ausgänge des Prozessors und zum beliebigen
Speichern des Ausgangs in einem der vier Registern einer Spalte
des TSMMs. So kann beispielsweise der Schalter T bei P2 geschlossen
sein, wodurch nur erlaubt wird, dass die Daten von LPA2 in den TSMM
eintreten. Durch Aktivierung der geeigneten Schalter T werden diese
Daten dem vierten Register MR in der ersten Spalte des TSMMs zugeführt. Auf
diese Weise wird der Ausgang aus dem LPA2 in das vierte Register
der ersten Spalte c1 des TSMMs eingeschrieben. Das Auslesen durch
ein Verarbeitungselement aus dem TSMM wird Probleme schaffen, weil
die LPA1...320 nicht einzeln selektierbar sind. Alle Verarbeitungselemente
werden dann versuchen eine bestimmte Verarbeitung auszulesen und durchzuführen, dies
mit unsicheren Ergebnissen. Wenn die Akkumulatoren des LPA1...320
selektiv adressierbar sind, wird dieses Problem effektiv gelöst.
-
9 und 10 zeigen Blockübertragungs-Betriebsarten.
Bei diesen Betriebsarten sind TSMM je zwei und zwei miteinander
gekoppelt. Auf diese Weise umfasst das Kamerasystem nach 1 eine Anordnung von 40
parallelen doppelten TSMMn. 9 und 10 zeigen mögliche Betriebsarten
zur Übertragung
von Daten aus dem einen Block in einen benachbarten Block. Es sei
bemerkt, dass zum Ermöglichen
einer Datenübertragung
die Schalter T (hier aus als Übertragungsgatter
bezeichnet), zwischen den TSMMn erforderlich sind um den Datenfluss
an demselben horizontalen Bus zu einem benachbarten TSMM möglich zu
machen. 9 zeigt eine
Blockübertragung
von oben nach links des TSMMs 2. Die Schalter T an den Kreuzungen
der horizontalen und vertikalen Busse werden derart aktiviert, dass
eine Reihe aus den mit P5...P8 gekoppelten Verarbeitungselementen
spaltenweise nach Links übertragen wird.
Die Übertragungsgatter
T ermöglichen
es, dass diese Daten in den TSMM1 hin eingehen. Die Schalter T an
den Kreuzungen der horizontalen und vertikalen Busse von TSMM1 werden
derart aktiviert, dass die Datenspalte auf eine reihenweise Art
in dem TSMM verfügbar
wird. Daten aus den mit dem TSMM2 gekoppelten Verarbeitungselementen
werden auf diese Art und Weise in dem TSMM1 verfügbar, als kämen die Daten aus den Verarbeitungselementen,
die mit dem TSMM1 gekoppelt sind. 10 zeigt
eine Blockübertragungs-Betriebsart,
wobei eine Reihe in dem TSMM1 zu dem TSMM2 übertragen wird. Diese Betriebsart
ist vergleichbar mit der in 9 präsentierten
Betriebsart, aber in der entgegengesetzten Richtung. Anstelle von
Daten aus den Verarbeitungselementen sind die Betriebsarten aus den 9 und 10 auch auf Daten anwendbar, die aus
den Zeilenspeichern LM erhalten worden sind. Weil die Daten aus
dem Zeilenspeicher LM unten in die TSMM eintreten, werden in dem
Fall die Schalter P1 bis P8 nicht verwendet. Ähnliche Ausleseprobleme können auftreten,
die oben in Bezug auf 8 beschrieben
worden sind, und zwar wegen der massiv parallelen Architektur der
LPA. Auch in diesem Fall wird bevorzugt, dass man über selektiv
adressierbare LPA Akkumulatoren verfügen kann, wenn die LPA Daten
auslesen soll. Obschon 9 und 10 eine Illustration betreffs
TSMM1 und TSMM2 geben, gilt dies auch für andere gekoppelte TSMM, beispielsweise
TSMM3 + TSMM4 usw.
-
Die
jeweiligen oben beschriebenen Betriebsarten ermöglichen es, dass die Anordnung
mehrere Algorithmen auf eine effiziente Art und Weise durchführt, beispielsweise
rekursive oder Matrix DCT, Farbart Unterabtastung und Zick-Zack-Abtastung. Diese
Merkmale werden nachstehend näher
beschrieben.
-
Block
DCT wird auf vier Y Blöcke,
einen U- und einen V-Block jedes Makroblocks angewandt. Ein günstiger
Algorithmus ist ein trennbarer zweidimensionaler rekursiver DCT
Algorithmus, wie bekannt aus dem Artikel von Aburdene u.a.: "Computation of discrete
cosine transform using Clenshaw's
recurrence formula",
IEEE Signal Processing Letters, 2(8), Seiten 155–156, August 1995. Die Eingabe
für den
DCT Algorithmus ist eine Sequenz von 8 Pixeln, herrührend aus
einer Spalte eines Blocks und zwei Gewichtungen. Die Gewichtungen
bestimmen die Ordinate des resultierenden DCT Koeffizienten. Da jeder
Block von vier Verarbeitungselementen bedient wird, werden vier
DCT Koeffizienten parallel verarbeitet. Es sind sechzehn Schritte
des DCT Algorithmus erforderlich zum Berechnen der horizontalen
eindimensionalen DCT für
eine komplette Block DCT. Der rekursive DCT Algorithmus ist günstig zum
Minimieren des zur Zwischenspeicherung erforderlichen Gebietes.
Zwei zwischenliegende Variablen sind erforderlich zum Verarbeiten
eines einzigen DCT Koeffizienten. Schmetterling DCT Algorithmen,
die schneller sind, erfordern acht zwischenliegende Variablen für jedes
Verarbeitungselement. Da zwischenliegende Variablen eine hohe Präzision erfordern,
würde dies mehr
Raum erfordern um sie in Pixelpuffer, wie den Zeilenspeicher LM
zu integrieren. Der TSMM schafft vier zwischenliegende Register
MR hoher Präzision für jedes
Verarbeitungselement. Weil zum Berechnen des DCT Koeffizienten nur
zwei Stück
erforderlich sind, können
zwei Register für
andere Zwecke verwendet werden. Wichtiger ist, dass DCT Koeffizienten,
die in dem TSMM gespeichert sind transponiert werden können (siehe 7). Transposition ist erforderlich
zur horizontalen Durchführung
des rekursiven DCT Algorithmus.
-
Für die vorgeschlagene
Architektur wird ein vier zu vier TSMM bevorzugt. Erstens ist es
weniger als ein Viertel des Gebietes einer vollen acht zu acht Transpositionsmatrix,
weil eine volle acht zu acht Transponiermatrix mehr Adressierungs-Overhead hat.
Zweitens erzeugen die Verarbeitungselemente nur vier DCT Koeffizienten,
während
der Zeilenspeicher nur vier DCT Koeffizienten speichert.
-
Die
Blockübertragungsbetriebsarten
(siehe 9 und 10) bieten effiziente Betriebsarten
zur Farbart-Unterabtastung. RGB-YW-Umwandlung wird vor der Unterabtastung
der Farbartanteile in dem 4:2:2 Format durchgeführt. RGB-YUV-Umwandlung an
sich ist ein Pixelpegelvorgang und erfordert Multiplikation konstanter
Gewichtungen und Akkumulation der Produkte. Wenn das Pixel einmal
in die YUV-Domäne
umgewandelt worden ist, werden die U- und V-Anteile um einen Faktor
2 horizontal sowie vertikal vorabgetastet. In der Speicherzuordnung
gibt es zum Speichern der U- und der V-Anteile ein wesentliches Problem.
In dem 4:2:2 Format wird der U- und der V-Anteil in einem Makroblock
von 16×16
Pixeln zu 8×8
Pixeln unterabgetastet und der Y-Anteil wird nicht unterabgetastet.
Ein Makroblock überspannt zwei
Blöcke
(zwei 8 Pixel Spalten), d. h. zwei TSMM einheiten oder 8 Verarbeitungselemente.
Wenn die Unterabtastblöcke
unmittelbar in dem entsprechenden Zeilenspeicher gespeichert wären, wäre es weitgehend
ineffizient den horizontalen DCT Durchgang durchzuführen. Es
ist mehr erwünscht,
den U Block auf der einen Hälfte
des Makroblocks und den V Block auf der anderen zu speichern. Dies
ermöglicht es,
dass für
alle Y-, U- und V-Blöcke
derselbe 2-D DCT Code verwendet werden kann. Mit der Blockübertragungsbetriebsart
bedeutet dies nur eine direkte Übertragung.
Sogar falls in einer parallelen Struktur ist Kommunikation zwischen
benachbarten Spalten möglich,
diese Übertragung
erfordert vier Zyklen mit Datenverschiebung. Die Overhead-Kosten
dieser Ausführungsform
im Vergleich zu der Ausführungsform
nach 4 sind in den Schaltern,
welche die Datenbusse zwischen den TSMMn umschalten. Auf das Blockdatenübertra gungsmerkmal
kann verzichtet werden, wenn genügend
Zyklen für
Datenverschiebung zwischen Verarbeitungselementen übrig bleiben
oder wenn die Schalter eine kapazitive Belastung einführen, welche
die Leistung je Zeilenspeicherzugriff steigert. Diese Wechselwirkung
kann zur Implementierung bewertet werden.
-
Beliebige
Blockpegeladressierung (siehe 8)
kann für
mehrere Typen von Algorithmen verwendet werden, beispielsweise ZZ
Abtastung. Akkumulatordaten von einem der Verarbeitungselemente kann
selektiv adressiert werden und in einem der vier Register in der
ersten TSMM Spalte eingeschrieben werden. Nach dem Einschreiben
in allen vier den Registern kann die erste TSMM Spalte transponiert
werden und in dem Zeilenspeicher LM geschrieben werden. Es sind
nur zwei Bits erforderlich zum Adressieren des Ausgang der Verarbeitungselemente
und zwei andere Bits zum Adressieren der Register. ZZ Abtastung,
wie in der JPEG-Norm beschrieben, kann verschiedenartig implementiert
werden. Es ist im Wesentlichen eine Aufzeichnung von Daten innerhalb
eines acht zu acht Blocks. Das Kompromiss zwischen Durchführung einer
ZZ Abtastung in der linearen Prozessoranordnung LPA und außerhalb
der LPA ist in der Komplexität
der Hardware. Das Durchführen
einer ZZ Abtastung außerhalb
der LPA würde
einen Blockpuffer erfordern um zu gewährleisten, dass es genügend Daten
gibt zum Aufzeichnen mit der spezifizierten Strömungsrate. Das Überwachen
der Hardware wird erforderlich sein zum Schützen des Puffers vor Entleerung
oder vor Überfluss.
Synchronisation zwischen der Strömungseinheit
und der LPA wird erforderlich sein, wodurch Komplexität in die
LPA sowie in das Programm eingeführt
wird. Anderseits, wenn ZZ Abtastung in der parallelen Hardware durchgeführt wäre, würde die
Strömung
konstant sein und es wäre
nur ein Lauflängencodierer
erforderlich.
-
Variable
Länge Codierung
kann nicht auf effiziente Weise in weitgehend parallelen ganzen
ALUs implementiert werden, ohne dass dadurch eine große Komplexität
eingeführt
wird, und deswegen werden sie außerhalb der linearen Prozessoranordnung verarbeitet.
-
Zusammenfassend:
eine Anordnung hoher Genauigkeit, Registermatrizen TSMM sind vorgeschlagen
zum Lösen
der Datenflussbegrenzungen weitgehend paralleler linearer Prozessoren
sowie Zwischenspeicheranforderungen von Bildverarbeitungsalgorithmen.
Diese Hierarchie von Prozessor- und Speichereinheiten ist notwendig
zur Verbes serung der Flexibilität
weitgehend paralleler Verarbeitungssystememe, wobei Flexibiliät, insbesondere
in Termen des Datenflusses, wesentlich begrenzt wird.
-
Eine
Anordnung einfacher spezieller Speichereinheiten TSMM wird mit einer
weitgehend paralleler Pixelpegelverarbeitungsarchitektur kombiniert,
was Bildfang und Bewegungs-JPEG
Videokompression mit einer Videorate auf einem einzigen Chip ermöglicht.
-
Die
vorliegende Erfindung schafft eine parallele Datenverarbeitungsanordnung
mit einer Anordnung paralleler Verarbeitungselemente zum Verarbeiten
eines Signals zum Erhalten paralleler Datenströme, und Mitteln zum Mischen
der parallelen Datenströme
auf eine blockartige Weise. Die Datenmischmittel haben eine Anordnung
adressierbarer Schaltspeichermatrizen, die mit je einer vorbestimmten
Anzahl Verarbeitungselemente gekoppelt sind. Die Anordnung von Schaltspeichermatrizen
löst Datenflussbegrenzungen
weitgehend paralleler linearer Anordnungsprozessoren, sowie Zwischenspeicheranforderungen
von Bildverarbeitungsalgorithmen. In einem Kamerasystem wird die
paralleler Datenverarbeitungsanordnung mit einer Sensoranordnung
kombiniert.
-
Es
sei bemerkt, dass die oben genannten Ausführungsformen die vorliegende
Erfindung illustrieren statt begrenzen, und das der Fachmann imstande
sein wird, im Rahmen der beiliegenden Patentansprüche viele
alternative Ausführungsformen zu
bedenken. Spalten und Reihen können
im Rahmen der vorliegenden Erfindung vertauscht werden. In den Ansprüchen sollen
die eingeklammerten Bezugszeichen nicht als den Anspruch begrenzend
betrachtet werden. Das Wort "mit", "umfasst" oder "enthält" schließt das Vorhandensein
anderer Elemente oder Schritte als diejenigen, die in einem Anspruch aufgelistet
sind, nicht aus. Die vorliegende Erfindung kann mit Hilfe von Hardware
mit verschiedenen einzelnen Elementen und mit Hilfe eines auf geeignete Art
und Weise programmierten Computers implementiert werden. In einem
Anordnungsanspruch, wobei mehrere Mittel nummeriert sind, können einige dieser
Mittel in ein und demselben Hardwareteil einverleibt sein.