-
Die Erfindung betrifft eine parallelisierte Verarbeitung. Insbesondere betrifft die Erfindung die Verarbeitung von Vektorelementen mittels mehrerer Prozessoren.
-
Stand der Technik
-
Bestimmte Probleme der physikalischen Mess- und Verarbeitungstechnik lassen sich gut parallelisieren, wobei mehrere Prozessoren nebenläufig an der Lösung eines gemeinsamen Problems arbeiten. In einer Ausführungsform werden alle Prozessoren mit den gleichen Instruktionen, aber auf unterschiedlichen Daten betrieben (SIMD: Single Instruction Multiple Data).
-
Beispielsweise kann eine parallelisierte Verarbeitung im Rahmen der Auswertung von Radarsignalen, die an einem Objekt reflektiert wurden, durchgeführt werden. Ein besonders relevantes Beispiel ist in
DE 199 37 723 C2 gezeigt. Dort soll ein Höhenwinkelfehler eines mehrstrahligen Radarsensors bestimmt werden.
-
Ein bekanntes Problem in der Verarbeitung von Radarsignalen ist die Schätzung eines Richtungswinkels eines Objekts. Ein Radarsignal wird ausgesandt, durch das Objekt reflektiert und wieder empfangen. Überlagern sich zwei Objekte, so kann eine zweidimensionale Suche über eine Reihe empfangener Messdaten durchgeführt werden. Die Messdaten liegen in Form eines Vektors vor, wobei verschiedene Elemente des Vektors mit unterschiedlichen Indizes miteinander verarbeitet werden sollen.
-
Dieses und andere technische Probleme, insbesondere im Bereich der digitalen Signalverarbeitung, können parallelisiert werden, indem mehrere Prozessoren jeweils mit unterschiedlichen Elementen eines oder mehrerer Vektoren geladen werden und daraus einen Kombinationswert bestimmen.
-
Eine der vorliegenden Erfindung zugrunde liegende Aufgabe besteht darin, eine verbesserte Technik zur parallelisierten Verarbeitung von Elementen eines Vektors anzugeben. Die vorliegende Erfindung löst diese Aufgabe mittels der Gegenstände der unabhängigen Ansprüche. Unteransprüche geben bevorzugte Ausführungsformen wieder.
-
Offenbarung der Erfindung
-
Ein Verfahren zum parallelisierten Verarbeiten von Elementen eines ersten Vektors R mittels Prozessoren 1 bis k umfasst Schritte des (b) Ladens des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; (c) des parallelen Verarbeitens geladener Elemente durch die Prozessoren; (d) des Weitergebens der geladenen Elemente des ersten Vektors R von den Prozessoren 1 bis k-1 an den jeweils nächsten Prozessor 2 bis k; (e) des Ladens des nächsten ungeladenen Elements des ersten Vektors R in Prozessor 1; und (f) des Rückspringens zu Schritt c, falls nicht alle Elemente des ersten Vektors R geladen und verarbeitet wurden.
-
Durch das zyklische Weiterleiten eines einmal geladenen Elements des ersten Vektors R kann vermieden werden, dass derselbe Wert häufig aus einem Speicher in einen der Prozessoren verbracht werden muss. Insbesondere wenn der erste Vektor R groß ist, können nur wenige Speicherzugriffe erforderlich sein, um alle Elemente des Vektors parallelisiert mittels mehrerer Prozessoren zu verarbeiten.
-
Es ist besonders bevorzugt, dass das Verfahren zum parallelisierten Verarbeiten von Elementen eines ersten Vektors R und eines zweiten Vektors L mittels der Prozessoren 1 bis k eingerichtet ist. Vor den oben genannten Schritten b bis f kann ein Schritt a durchgeführt werden, in welchem k Elemente des zweiten Vektors L in die Prozessoren 1 bis k geladen werden. In Anschluss an den oben genannten Schritt f werden dann in einem Schritt g die nächsten k Elemente des zweiten Vektors L in die Prozessoren 1 bis k geladen und in einem Schritt h wird zu Schritt c zurückgekehrt, falls nicht alle Elemente des zweiten Vektors L geladen und verarbeitet wurden.
-
Dadurch können insbesondere Kombinationen zwischen Elementen zweier Vektoren R und L gebildet und parallelisiert mittels der Prozessoren verarbeitet werden. Das beschriebene Verfahren bietet sich insbesondere an, wenn beide Vektoren die gleiche Länge besitzen. Weiter bevorzugt kann das Verfahren angewendet werden, wenn die Verarbeitung auf Elemente beschränkt ist, deren Indizes in den Vektoren R und L voneinander verschieden sind. Werden Kombinationen der Elemente der Vektoren R und L in eine Matrix eingetragen, so bilden die interessierenden Kombinationen der Elemente eine obere oder untere Dreiecksmatrix. Ist die resultierende Matrix symmetrisch bzw. hermitesch, so genügt es nur eine der beiden Dreiecksmatrizen auszuwerten.
-
Es ist weiter bevorzugt, dass die oben genannten Schritte a bis h abwechselnd aufsteigend und absteigend durchgeführt werden. Beim aufsteigenden Durchlauf sind Indizes von Elementen des ersten Vektors R aufsteigend, wobei einem Prozessor mit niedrigem Index ein Element des zweiten Vektors L mit hohem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit niedrigem Index zugeordnet ist. Beim absteigenden Durchlauf sind Indizes von Elementen des ersten Vektors R absteigend, wobei einem Prozessor mit niedrigem Index ein Element des zweiten Vektors L mit niedrigem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit hohem Index zugeordnet ist.
-
In der aufsteigenden Variante werden Indizes der Elemente des ersten Vektors R inkrementiert und die geladenen Elemente des ersten Vektors R werden in Richtung aufsteigender Indizes der Prozessoren weitergegeben. Einem Prozessor mit niedrigem Index ist ein Element des zweiten Vektors L mit hohem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit niedrigem Index zugeordnet.
-
In der absteigenden Variante werden die Indizes der Elemente des ersten Vektors R dekrementiert und die Elemente des ersten Vektors R werden wie in der ersten Variante in Richtung aufsteigender Indizes der Prozessoren weitergegeben. Einem Prozessor mit niedrigem Index ist ein Element des zweiten Vektors L mit niedrigem Index und einem Prozessor mit hohem Index ein Element des zweiten Vektors L mit hohem Index zugeordnet.
-
Die Prozessoren können nacheinander von der ersten in die zweite Variante oder umgekehrt übergeleitet werden. Anders ausgedrückt kann ein Prozessor, der gegen Ende eines Durchlaufs der Schritte c bis f nicht mehr beschäftigt werden kann, weil in der Durchlaufrichtung des ersten Vektors R alle Elemente bereits geladen und verarbeitet wurden, zum Laden und/oder Verarbeiten von Werten bezüglich eines anderen Elements des zweiten Vektors verwendet werden. Für einen vollständigen Durchlauf des Verfahrens, bei dem alle Kombinationen zwischen Elementen der Vektoren R und L gebildet werden, bei denen sich die Indizes der Elemente der Vektoren R und L voneinander unterscheiden, kann eine vollständige Auslastung aller Prozessoren während der gesamten Laufzeit des Verfahrens erzielt werden. Die Effizienz eines entsprechenden Auswertungssystems kann dadurch maximiert sein. Das Verfahren kann beispielsweise zur Verarbeitung von Radarsignalen verwendet werden, wie oben bereits erwähnt wurde. Die Auswertung kann beschleunigt werden, wodurch eine erhöhte Auswertegeschwindigkeit oder Auswertefrequenz erzielt werden kann.
-
In einer Ausführungsform sind die beiden Vektoren R und L identisch, sodass die Elemente des Vektors L bereits durch das Laden des Vektors R im Prozessor vorliegen. Diese können zum richtigen Zeitpunkt in einem Register oder einem dedizierten Zwischenspeicher (z. B. Register, Cache, etc) im Prozessor vorgehalten werden. Dadurch ist es nicht nötig die nächsten k Elemente des Vektors L neu zu laden und die Schritte a bzw. g können übersprungen werden.
-
In einer Ausführungsform spannen die Vektoren eine Matrix auf, deren Elemente mit Ergebnissen der Verarbeitungen im Schritt c gefüllt werden. Auch ein schreibender Zugriff auf einen Speicher, in dem die Matrix abgelegt ist, kann durch die beschriebene Vorgehensweise optimiert sein.
-
Es ist weiterhin bevorzugt, dass die Verarbeitung eine Maximum-Likelihood-Analyse von Elementen der Vektoren umfasst. Ferner ist bevorzugt, dass Elemente der Vektoren jeweils einen Richtungswinkel eines abgetasteten Radarsignals betreffen. Mittels der Maximum-Likelihood-Analyse können beispielsweise Richtungswinkel zweier sich gegenseitig überlagernder Objekte in einem durch den Vektor R zweidimensional aufgespannten Suchraum verbessert gefunden werden. Die resultierende Matrix kann symmetrisch sein, d.h. es kann vorzugsweise nur die untere bzw. obere Dreiecksmatrix ausgewertet werden.
-
Ein Computerprogrammprodukt umfasst Programmcodemittel zur Durchführung des oben beschriebenen Verfahrens, wenn das Computerprogrammprodukt auf einer Verarbeitungseinrichtung abläuft oder auf einem computerlesbaren Datenträger gespeichert ist. Die Verarbeitungseinrichtung kann insbesondere einen oder mehrere der oben erwähnten Prozessoren umfassen. Ein Prozessor kann beispielsweise als programmierbarer Mikrocomputer oder Mikrocontroller, als anwenderspezifischer integrierter Schaltkreis (Application Specific Integrated Circuit, ASIC) oder als feldprogrammierbare Logik (Field Programmable Gate Array, FPGA) ausgebildet sein.
-
Ein Prozessor zur Durchführung des oben beschriebenen Verfahrens umfasst eine Verarbeitungseinrichtung zur Verarbeitung eines oder mehrerer Elemente eines Vektors; ein erstes Speicherelement, das dazu eingerichtet ist, mit einem Element des Vektors geladen zu werden; ein zweites Speicherelement zur Aufnahme des Elements des ersten Speicherelements, während das erste Speicherelement neu geladen wird; ein drittes Speicherelement zur Bereitstellung eines Elements eines Vektors einer weiteren Verarbeitungseinrichtung; eine erste Schnittstelle zum Aufnehmen eines Elements; eine zweite Schnittstelle zum Bereitstellen eines Elements; und eine dritte Schnittstelle zum Bereitstellen eines Ergebnisses.
-
Der Prozessor kann besonders dazu eingerichtet sein, mit einem weiteren Prozessor verkettet zu werden, um das Weitergeben einer Variablen oder eines Elements eines Vektors verbessert zu implementieren. Der Prozessor ist nicht notwendig, um das oben beschriebene Verfahren zu realisieren, kann dieses aber effizient unterstützen. Merkmale oder Vorteile des Prozessors können auf das Verfahren bezogen werden und umgekehrt.
-
Ein Prozessorsystem umfasst mehrere der beschriebenen Prozessoren, wobei die Prozessoren in einer Reihe miteinander verkettet sind. Die Prozessoren können insbesondere nach dem SIMD-Prinzip unterschiedliche Daten auf die gleiche Weise mit gleichen Instruktionen verarbeiten. Die Verkettung kann mittels geeigneter Schnittstellen erfolgen. Bevorzugt besteht eine Verkettungsverbindung nur zwischen den Schnittstellen miteinander verketteter Prozessoren, sodass nur wenig physischer Aufwand erforderlich ist. Da die Verkettungen keine anderen Signale übermitteln müssen, können eine Übertragungsgeschwindigkeit und -sicherheit hoch sein.
-
Figurenliste
-
Die Erfindung wird nun mit Bezug auf die beigefügten Figuren genauer beschrieben, in denen:
- 1 eine Veranschaulichung eines Verfahrens; und
- 2 ein Prozessorsystem zur Durchführung des Verfahrens von 1
darstellt.
-
1 zeigt eine Veranschaulichung eines Verfahrens 100. Gegeben sind ein erster Vektor R mit Elementen r1 bis rn , sowie ein zweiter Vektor L mit Elementen I1 bis In . Zwischen Elementen der Vektoren L und R sollen Kombinationen gebildet werden, wobei nur solche Kombinationen von Interesse sind, bei denen die Indizes der Elemente in ihren jeweiligen Vektoren R und L unterschiedlich sind.
-
In einem illustrativen Beispiel kann eine Schätzung von Ankunftswinkeln θ zweier, sich aus Sicht eines messenden Radarsystems teilweise überlagernder Objekte mittels eines deterministischen Maximum-Likelihood-Verfahrens (DML) durchgeführt werden. Dabei muss eine zweidimensionale Suche über den Ankunftswinkel des ersten Objekts und den Ankunftswinkel des zweiten Objekts durchgeführt werden. Die folgende Gleichung muss für jede mögliche Kombination von i und j ausgewertet werden, um das Maximum und damit die beiden höchst-wahrscheinlichen Ankunftswinkel zu finden:
-
Eine wichtige Optimierung bei dieser Berechnung nutzt die Symmetrie der 2-dimensionalen Datenstruktur, sodass nur eine obere bzw. untere Dreiecksmatrix ausgewertet werden muss. Bei genauerer Betrachtung erkennt man, dass die 2-dimensionale Berechnung unter anderem auf den Werten ri und rj eines Vektors R basiert, welche dazu in den Prozessor geladen werden müssen. Hierbei kann sich zu Nutze gemacht werden, dass der einmal geladene Wert ri zur Berechnung mehrerer Zellen der Matrix benutzt werden kann.
-
In 1 ist eine Matrix 105 dargestellt, in der alle möglichen Kombinationen von Elementen zweier Vektoren R und L als jeweils ein Matrixelement gebildet sind. Im Falle des DML Verfahrens für 2 Objekte wären die Vektoren R und L identisch, jedoch ist das beschriebene Verfahren im Folgenden exemplarisch für zwei verschiedene Vektoren dargestellt.
-
Der erste Vektor R ist in horizontaler Richtung angetragen, sein Laufindex ist j; der zweite Vektor L ist in vertikaler Richtung angetragen, sein Laufindex ist i. Ein beliebiges Element der Matrix 105 weist in der gewählten Darstellung einen Rechtswert von j und einen Hochwert von i auf. Matrixelemente, die gleiche Indizes für das Element des ersten Vektors R und des zweiten Vektors L haben, sind schwarz eingefärbt. Die Reihe der schwarz eingefärbten Matrixelemente unterteilt die Matrix 105 in zwei Dreiecksmatrizen, die jeweils alle interessierenden Kombinationen von Elementen der Vektoren R und L umfassen. Dargestellt ist exemplarisch lediglich die untere Dreiecksmatrix.
-
Gegeben sind ferner k Prozessoren, die hier mit p1 bis pk bezeichnet sind. Zur parallelisierten Verarbeitung von Kombinationen der Elemente der Vektoren R und L ist beispielhaft jeweils ein Prozessor p einer Zeile der Matrix 105 und damit einem Wert Ii des zweiten Vektors L zugeordnet. Der erste Prozessor p1 arbeitet also zunächst nacheinander auf Kombinationen des k-ten Elements Ik des zweiten Vektors L mit Elementen rk+1 bis rn des ersten Vektors R. Es wird vorgeschlagen, dass die Prozessoren p1 bis pk zeitlich versetzt auf Elementen des ersten Vektors R arbeiten. Dadurch kann eine Zahl von Zugriffen auf die Vektoren R und L bzw. deren Elemente minimiert werden. Sind die Vektoren L und R in einem von den Prozessoren p1 bis pk getrennten Speicher abgelegt, so ist nur eine verringerte Anzahl von Speicherzugriffen erforderlich, um sämtliche Kombinationen der Elemente der Vektoren R und L zu bilden. Durch die zeitliche Versetzung kann außerdem eine vollständige Auslastung aller Prozessoren während der gesamten Verarbeitungszeit erreicht werden.
-
Im hier dargestellten Beispiel werden zunächst Werte I1 bis Ik des zweiten Vektors L in die Prozessoren pk bis p1 geladen. Dann wird in einem ersten Speicherzugriff das zweite Element r2 des ersten Vektors R in den ersten Prozessor p1 geladen. Anschließend verarbeitet der erste Prozessor p1 die Kombination aus Ik und r2 . Das Ergebnis dieser Verarbeitung wird verworfen, da es nicht in der unteren Dreiecksmatrix liegt. Danach reicht der erste Prozessor p1 den zuvor empfangenen Wert des ersten Vektors R an den nächsten Prozessor p2 weiter. Gleichzeitig wird in einem zweiten Speicherzugriff das nächste Element des ersten Vektors R in den ersten Prozessor p1 geladen. Der erste Prozessor p1 kann dann die Kombination von Ik und r3 verarbeiten, während der zweite Prozessor p2 die Kombination von Ik-1 und r2 verarbeitet. Auch das Ergebnis dieser Verarbeitung wird verworfen, da es ebenfalls nicht in der unteren Dreiecksmatrix liegt. Nachfolgend kann in einem dritten Speicherzugriff das nächste Element des ersten Vektors R in den ersten Prozessor p1 geladen werden und zuvor verwendete Elemente des ersten Vektors R der Prozessoren p1 und p2 können jeweils um einen Prozessor weitergeschoben werden. Die Ergebnisse der darauf folgenden Verarbeitung sind mit einer 1 gekennzeichnet und liegen innerhalb der unteren Dreiecksmatrix. Alle nun folgenden Schritte tragen zur Ergebnisberechnung bei.
-
In 1 fasst ein Oval 110 Elemente des ersten Vektors R zusammen, die nacheinander in die Prozessoren p1 bis pk geladen bzw. geschoben und zeitgleich verarbeitet werden. Die beschriebene Vorgehensweise kann enden, wenn nacheinander sämtliche Elemente des ersten Vektors R in den ersten Prozessor p1 geladen wurden. Anschließend muss in die Prozessoren p1 bis pk jeweils ein neues Element des zweiten Vektors L geladen werden. Dieser Schritt kann entfallen, falls die Vektoren R und L identisch sind, da die Werte bereits aus dem vorherigen Durchlauf vorliegen.
-
Es wird vorgeschlagen, die zuvor durchgeführte Richtung (aufsteigender Index j) zu ändern und in umgekehrter Richtung (absteigender Index j) zu durchlaufen. Außerdem wird die Zuordnung von Prozessoren zu Elementen des zweiten Vektors L umgekehrt: Korrespondierte zuvor ein aufsteigender Index i des zweiten Vektors L mit einem absteigenden Index eines Prozessors pk bis p1 , so korrespondiert er nun mit einem aufsteigenden Index des Prozessors p1 bis pk oder umgekehrt. Die abweichende Zeilenlänge für jeden einzelnen Prozessor p1 bis pk kann dadurch ausgeglichen werden. Hatte Prozessor pk im aufsteigenden Durchlauf die meisten Elemente zu verarbeiten, so hat er im absteigenden Durchlauf die wenigsten Elemente zu verarbeiten.
-
Eine Zuordnung der Prozessoren p1 bis pk zu Elementen des zweiten Vektors L für weitere drei Zeilen der Matrix 105 ist in 1 eingezeichnet. Neben den Zuordnungen sind jeweils Blockpfeile dargestellt, die anzeigen, in welcher Richtung der Index j des ersten Vektors R während eines Durchgangs durch die Matrix 105 in Zeilenrichtung fortgeschaltet wird. Das Durchlaufen in Zeilenrichtung nach links endet in der Darstellung von 1 bei den Elementen unmittelbar rechts von den dunkel gefärbten Diagonalelementen der Matrix 105. Danach werden die Prozessoren p1 bis pk erneut mit Elementen des zweiten Vektors L geladen und ein neuer Durchlauf durch weitere Zeilen der Matrix 105 erfolgt in umgekehrter Richtung, wie oben beschrieben wurde.
-
2 zeigt ein Prozessorsystem 200, das insbesondere zur Durchführung des Verfahrens 100 von 1 eingerichtet ist. Obwohl in 1 exemplarisch von drei Prozessoren p1 bis pn ausgegangen wurde, sind in 2 nur zwei Prozessoren 205 (entsprechend p1 und p2 ) dargestellt. Ein Prozessor 205 umfasst eine Eingangsschnittstelle 210 zur Entgegennahme eines Elements der Vektoren R bzw. L, eine Ausgangsschnittstelle 215 zur Verbindung mit einer Eingangsschnittstelle 210 eines nachfolgenden Prozessors 205, eine optionale Ergebnisschnittstelle 220 zur Bereitstellung eines Ergebnisses einer Verarbeitung auf der Basis von Elementen des ersten Vektors R und des zweiten Vektors L, eine Verarbeitungseinrichtung 225 zur Durchführung dieser Verarbeitung, sowie bevorzugt ein erstes Speicherelement 230, ein zweites Speicherelement 235 und/oder ein drittes Speicherelement 240. In der dargestellten Ausführungsform sind zusätzlich ein erster Multiplexer 245 und ein zweiter Multiplexer 250 vorgesehen.
-
Der Prozessor 205 ist dazu eingerichtet, über die Eingangsschnittstelle 210 ein Element Ii des zweiten Vektors L entgegenzunehmen und im ersten Speicherelement 230 abzulegen. Gleichzeitig kann ein zuvor verwendetes Element der beiden Vektoren R bzw. L aus dem dritten Speicherelement 240 über die Ausgangsschnittstelle 215 an einen nachfolgenden Prozessor 205 bereitgestellt werden. So können miteinander verkettete Prozessoren 205 gleichzeitig jeweils ein Element des ersten Vektors R an den nachfolgenden Prozessor 205 weitergeben. Eine zeitintensivere gestaffelte Weitergabe („ripplecarry“) ist nicht erforderlich.
-
Nach erfolgtem Durchlaufen einer Zeile der Matrix 105wird bevorzugt das nächste benötigte Element Ii aus dem ersten Speicherelement 230 bzw. direkt von der Schnittstelle 210 in das zweite Speicherelement 235 kopiert, um es gegen Überschreiben zu schützen. Die Verarbeitungseinrichtung 225 kann unmittelbar auf das zweite Speicherelement 235 und auf die Eingangsschnittstelle 210 zugreifen.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-