-
Die Erfindung betrifft eine Vorrichtung und Verfahren zum Verarbeiten von Daten, die mit einem Zeitstempel versehen sind. Die erfindungsgemäße Vorrichtung und das Verfahren können insbesondere in Anwendungen der Mechatronik oder der Robotik eingesetzt werden.
-
In derartigen Anwendungen werden eine Vielzahl von Daten, bspw. Sensordaten, durch eine Vielzahl von Prozessoren verarbeitet. Hierzu haben komplexe mechatronische Systeme meist viele verteilte Rechenknoten. Hieraus folgt ein hoher Bedarf an Ressourcen, die für die Kommunikation zwischen den Rechenknoten zuständig sind. Viele dieser Ressourcen werden für die Synchronisation von Ereignissen und das Marshalling von Daten benötigt. Marshalling bezeichnet das Kopieren von Daten, wobei die Anordnung der Daten geändert wird. Bei Prozessoren stellen diese Aufgaben einen erheblichen Anteil der Auslastung dar. Besonders bei hochintegrierten und leistungsoptimierten Systemen, ist es notwendig diese Aufgaben effizienter zu implementieren, da ansonsten die geforderte Performance nicht erreicht werden kann.
-
US 2012/0081567 A1 beschreibt ein Verfahren zum Verarbeiten von Daten, die mit einem Zeitstempel versehen sind. Hierbei geht es um eine Audio-Video Synchronisierung.
-
DE 600 04 721 T2 beschreibt einen virtuellen Gerätebetreiber, bei dem unter anderem eine Gültigkeitsprüfung eines empfangenen Zeichens unter Verwendung eines Zeitstempels durchgeführt wird.
-
Aufgabe der Erfindung ist es, eine Vorrichtung und ein Verfahren zum effizienteren Verarbeiten von zeitkritischen Daten bereitzustellen.
-
Die Lösung der Aufgabe erfolgt erfindungsgemäß durch die Merkmale der Ansprüche 1 und 5.
-
Die erfindungsmäße Vorrichtung dient dem Verarbeiten von Daten, die mit einem Zeitstempel versehen sind. Der Zeitstempel stellt hierbei einen digitalen Wert dar, wobei ein Inkrement dieses Wertes einem festen Zeitintervall zugeordnet werden kann. Außerdem repräsentiert der Zeitstempel die zeitliche Reihenfolge, in der die Daten erzeugt wurden. Bspw. kann es sich hierbei um Sensordaten handeln, die insbesondere in gleichbleibenden zeitlichen Abständen erzeugt wurden. Bspw. kann es sich hierbei auch um die Ausgangsdaten einer Datenquelle handeln, die ein zeitdiskretes Sinussignal erzeugt.
-
Die erfindungsgemäße Vorrichtung weist einen Prozessor zum Durchführen der Berechnungen und eine Vorverarbeitungseinheit zum Vorverarbeiten der für die Berechnungen benötigten Daten auf, die dem Prozessor zugeführt werden. Der Prozessor und die Vorverarbeitungseinheit können Teil eines größeren Gesamtsystems sein, bspw. eines komplexen mechatronischen Systems mit vielen verteilten Rechenknoten, wobei jeder Rechenknoten jeweils mindestens einen Prozessor und mindestens eine Vorverarbeitungseinheit enthält. Jeder Rechenknoten erhält somit Eingangsdaten, die von ihm bearbeitet werden und gibt diese Daten nach Bearbeitung als Ausgangsdaten an den nächsten bzw. mehrere der nächsten Rechenknoten aus, die diese Daten wiederrum weiter verarbeiten. Insofern können Rechenknoten ihre Eingangsdaten entweder von Sensoren oder von anderen Rechenknoten erhalten.
-
Die erfindungsgemäße Vorverarbeitungseinheit weist eine lokale Uhr auf, deren aktueller Zustand immer identisch ist mit dem jüngsten Zeitstempel aller vorzuverabeiteten Daten, die der Vorverarbeitungseinheit bis zu diesem Zeitpunkt zugeführt wurden. Die lokale Uhr gibt somit nicht die tatsächliche Zeit wieder, sondern wird durch die Zeitstempel der eingehenden Daten gestellt, wobei der jüngste Zeitstempel, der bis zu einem bestimmten Zeitpunkt in der Vorverarbeitungseinheit eingegangen ist, die aktuelle Zeit der lokalen Uhr zu diesem Zeitpunkt bestimmt.
-
Die Vorverarbeitungseinheit weist ferner einen mit der lokalen Uhr verbundenen Ereignisfilter zum Vergleichen der Zeitstempel aller in die Vorverarbeitungseinheit eingehenden Daten mit der aktuellen Zeit der lokalen Uhr auf. Dieser Ereignisfilter dient ferner dem Verwerfen aller Daten mit einem Zeitstempel, der älter als die aktuelle Zeit der lokalen Uhr ist. Anders ausgedrückt, führt der Ereignisfilter nur solche Daten der weiteren Verarbeitung durch den Prozessor zu, deren Zeitstempel identisch mit der aktuellen Zeit der lokalen Uhr ist. Empfängt der Ereignisfilter einen Zeitstempel, der jünger als die aktuelle Zeit der lokalen Uhr ist, so wird die aktuelle Zeit der lokalen Uhr gemäß diesem Zeitstempel aktualisiert. In einem weiteren Schritt wird dann geprüft, ob die bisher eingegangen Daten mit dem bisher aktuellen Zeitstempel für das erfolgreiche Durchführen eines Berechnungsschritts im Prozessor ausreichen. Dieser letztgenannte Schritt wird durch einen mit dem Ereignisfilter verbunden Triggercontroller durchgeführt, der Kenntnis darüber hat, welche Daten zu einem diskreten Zeitpunkt für das erfolgreiche Durchführen eines Berechnungsschritts im Prozessor benötigt werden. Der Triggercontroller ist ausgebildet, um beim vollständigen Eingang aller zu einem diskreten Zeitpunkt erwarteten Daten ein vorzugsweise blockweises Übermitteln aller dieser Daten an den Prozessor zu veranlassen.
-
Ziel dieser letztgenannten Maßnahme ist zu verhindern, dass der Prozessor lückenhafte Datenblöcke erhält, die nicht alle Daten enthalten, die für das erfolgreiche Durchführen eines Berechnungsschritts notwendig sind. Würde der Prozessor einen Berechnungsschritt, basierend auf einem solchen lückenhaften Datenblock starten, würden hiermit kostbare Rechenressourcen im Prozessor verschwendet werden. Dies wird erfindungsgemäß dadurch verhindert, dass der Triggercontroller derartige lückenhafte Datenblöcke überhaupt nicht an dem Prozessor weiterleitet.
-
Ein Datenblock kann bspw. dann lückenhaft sein, wenn ein oder mehrere Dateneinträge aufgrund von Übertragungsschwierigkeiten oder anderen Problemen verspätet bei der Vorverarbeitungseinheit ankommen. In diesem Fall können diese verspäteten Daten nicht mehr für das erfolgreiche Durchführen des Berechnungsschritts für den Datenblock, zu dem sie eigentlich gehören, verwendet werden. Eine Übermittlung dieser verspäteten Daten oder des lückenhaften Datenblocks an dem Prozessor macht somit keinen Sinn und wird erfindungsgemäß durch den Triggercontroller unterbunden.
-
Es wird somit die Synchronisation der für die Berechnung durch einen Prozessor benötigten Eingangsdaten ausgelagert und wird nicht mehr durch den Prozessor selbst durchgeführt. Mit anderen Worten wartet somit die Vorverarbeitungseinheit auf alle Ereignisse, die zu einem diskreten Zeitpunkt erwartet werden, wobei ein Ereignis ein Tupel aus Zeitstempel und Daten ist. Wenn alle erwarteten Ereignisse eingetroffen sind, wird ein Triggerereignis ausgelöst, das die nachfolgende Bearbeitung auf dem Prozessor startet. Durch die erfindungsgemäße Vorrichtung ist es möglich, einen erheblichen Anteil der Auslastung auf dem Prozessor einzusparen. Die Vorrichtung ist somit in besonderer Weise geeignet für komplexe mechatronische Systeme mit vielen verteilten Rechenknoten.
-
Die Vorrichtung ist vorzugweise eine ASIC-Einheit oder ein konfigurierbarer Hardware-Baustein, insbesondere eine FPGA-Einheit, wobei die Vorverarbeitungseinheit lokal in dieser ASIC- oder FPGA-Einheit implementiert ist.
-
Weiterhin ist es bevorzugt, dass die Vorrichtung einen Arbiter zum Sequentialisieren von parallel eingehenden Daten aufweist, wobei dieser der lokalen Uhr und dem Ereignisfilter in Datenflussrichtung vorgeschaltet ist. Werden bspw. der Vorverarbeitungseinheit Sensordaten parallel zugeführt, so können diese durch den Arbiter sequentialisiert werden.
-
Weiterhin weist die Vorrichtung bevorzugt eine Vorrichtung zum Marshalling zum Umsortieren der Daten unter Berücksichtigung der Hardware-Architektur des Prozessors und/oder der Applikation, für die die Berechnungen durchgeführt werden, auf. Hierdurch kann die Arbeitseffizienz des Prozessors weiterhin gesteigert werden, da er Daten so erhält, dass er sie schneller bearbeiten kann.
-
Die erfindungsgemäße Vorrichtung weist ferner einen Datenspeicher auf, zum Speichern der vom Ereignisfilter nicht verworfenen Daten vor deren vorzugsweise blockweisem Übermitteln an den Prozessor. Dieser Datenspeicher ist bevorzugt in die Vorverarbeitungseinheit integriert und dient dem Zwischenspeichern der genannten Daten, solange noch weitere Daten eingehen, deren Zeitstempel identisch mit der aktuellen Zeit der lokalen Uhr ist. Ein Übermitteln der im Datenspeicher zwischengespeicherten Daten an den Prozessor wird vom Triggercontroller dann veranlasst, wenn alle zu diesem diskreten Zeitpunkt erwarteten Daten vorhanden sind.
-
Das Übermitteln der Daten von der Vorverarbeitungseinheit an den Prozessor kann unter Verwendung eines doppelten Puffers (Doublebuffering) erfolgen. Hierbei schreibt die Vorverarbeitungseinheit die im laufenden Zyklus eingehenden Daten in den ersten Buffer, während der Prozessor aus dem zweiten Buffer zur gleichen Zeit die Daten aus dem vorangegangenen Zyklus ausliest. Dies sind somit diejenigen Daten, die durch die Vorverarbeitungseinheit im vorangehenden Zyklus in den Buffer geschrieben wurden. Durch den Triggercontroller kann ein Umschalten zwischen den beiden Buffern erfolgen. Dies bedeutet, dass wenn alle zu diesen diskreten Zeitpunkt erwarteten Daten in der Vorverarbeitungseinheit vorhanden sind, der erste Buffer zum zweiten Buffer wird und vom Prozessor ausgelesen werden kann, sodass im nächsten Verarbeitungszyklus der erste Buffer wieder mit Daten durch die Vorverarbeitungseinheit gefüllt werden kann.
-
Die Erfindung betrifft ferner ein Verfahren zum Verarbeiten von Daten, die mit einem Zeitstempel versehen sind, wobei der Zeitstempel einen digitalen Wert darstellt, wobei ein Inkrement dieses Wertes einem festen Zeitintervall zugeordnet werden kann. Außerdem repräsentiert der Zeitstempel die zeitliche Reihenfolge, in der die Daten erzeugt wurden. Das erfindungsgemäße Verfahren eignet sich besonders zur Durchführung auf der erfindungsgemäßen Vorrichtung und kann sämtliche Merkmale aufweisen, die im Zusammenhang mit der Vorrichtung beschrieben wurden. Ebenso kann die Vorrichtung sämtliche Merkmale des erfindungsgemäßen Verfahrens aufweisen.
-
Das Verfahren weist die folgenden Verfahrensschritte auf:
- a) Es werden die Zeitstempel aller Daten, die der Vorverarbeitungseinheit zugeführt werden, erfasst.
- b) Die aktuelle Zeit einer lokalen Uhr in der Vorverarbeitungseinheit wird gestellt nach dem jüngsten Zeitstempel aller vorzuverarbeiteten Daten, die der Vorverarbeitungseinheit bis zu diesem Zeitpunkt zugeführt wurden.
- c) Es werden die Zeitstempel aller in die Vorverarbeitungseinheit eingehenden Daten mit der aktuellen Zeit der lokalen Uhr verglichen.
- d) Alle Daten deren Zeitstempel älter als die aktuelle Zeit der lokalen Uhr ist, werden verworfen, da sie nicht mehr aktuell sind und verzögert bei der Vorverarbeitungseinheit angekommen sind. Diese Daten können für einen erfolgreichen Berechnungsschritt im Prozessor nicht mehr verwendet werden und werden somit von der Vorverarbeitungseinheit nicht an dem Prozessor weitergeleitet, um nicht unnötig Ressourcen zu verschwenden.
- e) Alle Daten, deren Zeitstempel identisch mit der aktuellen Zeit der lokalen Uhr ist, werden in einem Datenspeicher gesammelt oder zwischengespeichert.
- f) Geht ein Dateneintrag mit einem Zeitstempel in der Vorverarbeitungseinheit ein, der jünger ist als die bisherige aktuelle Zeit der lokalen Uhr, so wird die aktuelle Zeit der lokalen Uhr gemäß diesem neuen jüngeren Zeitstempel aktualisiert. Dies ist der Zeitstempel, der an die im Datenspeicher abgelegten Daten angefügt wird, die dann an den Prozessor übermittelt werden.
- g) Bevor dies geschieht, überprüft ein Triggercontroller, ob alle zu diesem diskreten Zeitpunkt für die erfolgreiche Durchführung eines Berechnungsschritts im Prozessor benötigten Daten im Datenspeicher vorhanden sind.
- h) Bei vollständigem Vorhandensein aller zu diesem diskreten Zeitpunkt erwarteten Daten, erfolgt ein Übermitteln aller dieser Daten aus dem Datenspeicher an den Prozessor.
- i) Anschließend wird ein Berechnungsschritt durch den Prozessor durchgeführt, wobei hierbei die durch die Vorverarbeitungseinheit vorverarbeiteten Daten verwendet werden.
-
Es ist bevorzugt, dass dem Triggercontroller zur Laufzeit, d.h. im laufenden Betrieb der erfindungsgemäßen Vorrichtung, die Information übermittelt wird, welche Daten vom Prozessor zu einem diskreten Zeitpunkt für die erfolgreiche Durchführung eines Berechnungsschritts notwendig sind. Diese Informationen können dem Triggercontroller direkt vom Prozessor oder von einer anderen Instanz übermittelt werden, und können zur Laufzeit dynamisch angepasst werden.
-
Im Folgenden werden bevorzugte Ausführungsformen der Erfindung anhand von Figuren erläutert.
-
Eine dynamische Anpassung kann auch auf Basis der in der Vorverarbeitungseinheit eingehenden Daten erfolgen. Wenn bspw. einer der Sensoren ausfällt, die Daten an die Vorverarbeitungseinheit übermitteln, kann die Vorverarbeitungseinheit den Kanal auf dem dieser ausgefallene Sensor seine Daten übermittelt hat, nach einer bestimmten Zeit, vorzugsweise nach ein bis zwei Takten (oder Zyklen) ausschalten. Dies bedeutet, dass der Triggercontroller diese Daten des ausgefallenen Sensor, d.h. dieses Ereignis nicht mehr erwartet. Hierdurch ist es möglich, den Signalfluss an den Prozessor auch bei einem ausgefallenen Sensor aufrechtzuerhalten. Sofern der ausgefallene Sensor wieder Daten liefert, kann der Kanal erneut angeschaltet werden. Dies bedeutet, dass der Triggercontroller die Daten dieses Kanals wieder erwartet.
-
Es zeigen:
- 1 ein beispielhaftes Blockschaltbild einer Ausführungsform der erfindungsgemäßen Vorrichtung,
- 2 ein Ablaufdiagramm einer beispielhaften Ausführungsform des erfindungsgemäßen Verfahrens.
-
Das Blockschaltbild gemäß 1 stellt beispielhaft eine Ausführungsform der Vorrichtung 10 dar. Diese umfasst den Arbiter 22, der eine Vielzahl parallel eingehender Daten sequentialisiert und an den Ereignisfilter 18 übermittelt. Gleichzeitig werden diese Daten inklusive ihres Zeitstempels an die lokale Uhr 16 übermittelt. Diese wird immer gemäß dem jüngsten Zeitstempel gestellt. Der Ereignisfilter 18 verwirft alle Daten mit einem Zeitstempel älter als die aktuelle Zeit der lokalen Uhr 16. Alle Daten, deren Zeitstempel der aktuellen Zeit der lokalen Uhr 16 entspricht, werden vom Ereignisfilter 18 einem Datenspeicher 26 zugeführt.
-
Die Vorrichtung 10 umfasst ferner einen Triggercontroller 20, der z.B. vom Prozessor 12 die Information darüber erhält, welche Daten der Prozessor 12 für das erfolgreiche Durchführen eines Berechnungsschritts benötigt. Sobald diese Daten vollständig im Datenspeicher 26 vorhanden sind, veranlasst der Triggercontroller 20 ein vorzugsweise blockweises Übermitteln dieser Daten vom Datenspeicher 26 an den Prozessor 12.
-
Die Vorrichtung 10 kann ferner einen Marshaller 24 aufweisen, durch den die Daten umsortiert werden können, um effizienter vom Prozessor 12 bearbeitet werden zu können. Das Umsortieren kann sowohl beim Schreiben 24a in den Datenspeicher 26 als auch beim Lesen 24b der Daten aus dem Speicher 26 erfolgen.
-
2 stellt ein beispielhaftes Ablaufdiagramm für das erfindungsgemäße Verfahren dar. Durch den Arbiter erfolgt ein paralleles Warten auf ein Event (100). Die anschließende Entscheidung (200) wird durch den Ereignisfilter getroffen, wobei abgefragt wird, ob der Zeitstempel eines Dateneintrags tn<t ist. Hierbei entspricht t der aktuellen Zeit der lokalen Uhr. Sofern dies der Fall ist, bedeutet dies, dass dieser Dateneintrag veraltet ist und nicht mehr verwendet werden kann. Er wird somit verworfen.
-
Sofern tn>t wird ein Update (300) der aktuellen Zeit t der lokalen Uhr durchgeführt.
-
Sofern der Zeitstempel identisch mit der aktuellen Zeit der lokalen Uhr ist (tn=t), wird dieser Dateneintrag in den Datenspeicher kopiert (400).
-
Anschließend überprüft der Triggercontroller, ob alle erwarteten Ereignisse für den diskreten Zeitpunkt t vorhanden sind (500). Sofern dies der Fall ist, werden die entsprechenden Berechnungen auf den Prozessor getriggert und die benötigten Daten an diesen übertragen.