-
Die vorliegende Erfindung betrifft ein Verfahren zum Schreiben und Lesen eines Datensatzes in wenigstens einer Recheneinheit sowie eine Recheneinheit bzw. einen Recheneinheitenverbund und ein Computerprogramm zu dessen Durchführung.
-
Stand der Technik
-
In Kraftfahrzeugen werden Steuergeräte als Recheneinheiten eingesetzt, um verschiedene Funktionen des Kraftfahrzeugs effektiv zu realisieren. Im Rahmen des Betriebs dieser Steuergeräte ist es in der Regel nötig, dass verschiedene Daten geschrieben und gelesen werden. Um die Konsistenz dieser Daten zu wahren, ist darauf zu achten, dass sich Lese- und Schreibprozesse, d.h. verschiedene Prozesse, die Daten lesen bzw. schreiben müssen, nicht gegenseitig behindern oder beeinflussen.
-
Aus der
DE 102 29 520 A1 ist bspw. ein Verfahren bekannt, bei dem für zwei unterschiedlich schnelle Aufgabenprogramme bzw. Prozesse eine Größe zu einem geeigneten Zeitpunkt kopiert wird, so dass das Kopieren der Größe in zeitlich äquidistanten Abständen erfolgt, um eine Datenkonsistenz sicherzustellen.
-
Offenbarung der Erfindung
-
Erfindungsgemäß werden ein Verfahren zum Schreiben und Lesen eines Datensatzes sowie eine Recheneinheit bzw. einen Recheneinheitenverbund und ein Computerprogramm zu dessen Durchführung mit den Merkmalen der unabhängigen Patentansprüche vorgeschlagen. Vorteilhafte Ausgestaltungen sind Gegenstand der Unteransprüche sowie der nachfolgenden Beschreibung.
-
Ein erfindungsgemäßes Verfahren dient zum Schreiben und Lesen eines Datensatzes in wenigstens einer Recheneinheit mit einer Anzahl an Speicherplätzen bei Verwendung ein oder mehrerer Schreibprozesse und ein oder mehrerer Leseprozesse. Dabei wird bei jedem Schreibprozess ein Abbild des Datensatzes in einen Speicherplatz geschrieben, und bei jedem Leseprozess wird ein zum Startzeitpunkt des jeweiligen Leseprozesses zuletzt vollständig geschriebenes Abbild des Datensatzes aus einem beschriebenen Speicherplatz gelesen. Ein Inhalt des Datensatzes ändert sich üblicherweise bei einem solchen Schreiprozess. Bei der wenigstens einen Recheneinheit kann es sich insbesondere um wenigstens eine Recheneinheit eines Kraftahrzeugs, bspw. in einem Steuergerät eines Kraftfahrzeugs, handeln.
-
Um eine Konsistenz des Datensatzes zu gewährleisten, kann für jeden Leseprozess ein eigenes Abbild im Sinne einer Kopie des Datensatzes erstellt werden, das gelesen wird. Ebenfalls kann bei jedem Schreibprozess ein eigenes Abbild des Datensatzes geschrieben werden, das nach Abschluss des Schreibens auf den Datensatz kopiert wird. Dabei ist jedoch darauf zu achten, dass während eines Kopiervorgangs eines geschriebenen Abbildes auf den Datensatz kein Abbild für einen Lesevorgang erstellt wird und dass während des Erstellens eines Abbildes für einen Lesevorgang kein geschriebenes Abbild auf den Datensatz kopiert wird, um die Konsistenz des Datensatzes zu gewährleisten. Dies wird auch als wechselseitiger Ausschluss (engl. Mutual Exclusion) bezeichnet. Dies führt jedoch zu langen Zeitdauern, während welcher Rechenleistung ungenutzt bleibt.
-
Bei dem vorgeschlagenen Verfahren hingegen wird die Zeitdauer, in welcher Rechenleistung ungenutzt bleibt, deutlich reduziert. Dies wird dadurch erreicht, dass nicht für jeden Leseprozess ein eigenes Abbild erstellt werden muss, während welcher Erstellung möglicherweise auf das Kopieren eines geschriebenen Abbildes auf den Datensatz gewartet werden müsste. Stattdessen kann nun der Leseprozess einfach das zuletzt vollständig geschriebene Abbild, d.h. das aktuellste vollständige Abbild, aus dem zugehörigen Speicherplatz lesen, ohne auf einen möglichen Kopiervorgang eines geschriebenen Abbildes warten zu müssen.
-
Besonders vorteilhaft ist das vorgeschlagene Verfahren auch für mehrere Prozesse, die gleichzeitig lesen und schreiben, und insbesondere auf mehreren Rechenkernen einer Multi-Core-Einheit, insbesondere unter Nutzung von statisch zugewiesenem Speicher (d.h. die Anzahl der Speicherplätze, die von den Prozessen verwendet werden können, ist vorab festgelegt), ausgeführt werden.
-
Vorzugsweise wird bei jedem Schreibprozess ein Abbild des Datensatzes in einen Speicherplatz geschrieben wird, von dem nicht gelesen wird und in den nicht im Rahmen eines anderen Schreibprozesses geschrieben wird. Auf diese Weise kann erreicht werden, dass kein Leseprozess während eines Schreibprozesses behindert oder abgebrochen wird. Um zu gewährleisten, dass ein Schreibprozess nicht in einen Speicherbereich schreibt, von dem gerade gelesen wird, kann bspw. vorgesehen sein, dass ein Lesevorgang während des Lesens entsprechend mitteilt, dass der betreffende Speicherplatz gerade verwendet wird. Auch bei einem anderen Schreibprozess kann dies bspw. auf diese Weise realisiert werden.
-
Vorteilhafterweise wird bei keinem Schreibprozess ein Abbild des Datensatzes in denjenigen Speicherplatz geschrieben, in den zuletzt vollständig ein Abbild des Datensatzes geschrieben wurde. Auf diese Weise kann gewährleistet werden, dass immer das aktuellste Abbild des Datensatzes für die Verwendung durch einen Leseprozess sichergestellt ist.
-
Es ist von Vorteil, wenn jedes Abbild des Datensatzes aus dem jeweiligen Speicherplatz gleichzeitig im Rahmen verschiedener Leseprozesse gelesen werden kann. Dies ermöglicht eine besonders effektive Speicherausnutzung.
-
Vorzugsweise wird das zuletzt vollständig geschriebene Abbild des Datensatzes mittels eines Verweises auf dieses Abbild für nachfolgende Leseprozesse lesbar gemacht. Ein solcher Verweis kann bspw. mittels eines sog. globalen Zeigers oder Pointers erfolgen, den dann jeder Leseprozess, der das aktuellste Abbild verwenden will, in seinen eigenen lokalen Zeiger bzw. Pointer kopieren kann. Auf diese Weise kann also sehr einfach für die Leseprozesse das aktuellste bzw. zuletzt geschriebene Abbild lesbar gemacht werden.
-
Vorteilhafterweise wird bei einer Initialisierung der wenigstens einen Recheneinheit ein Abbild des Datensatzes in einen Speicherplatz geschrieben. Auf diese Weise steht auch dann einem Leseprozess ein Abbild zum Lesen zur Verfügung, wenn nach der Initialisierung bzw. dem Start der wenigstens einen Recheneinheit noch kein Schreibprozess ein Abbild in einen Speicherplatz geschrieben hat.
-
Zweckmäßigerweise wird als die Anzahl an Speicherplätzen wenigstens eine um eins erhöhte Anzahl der Schreibprozesse und Leseprozesse verwendet. Auf diese Weise stehen auch für den Fall, dass zeitgleich jeder Leseprozess aus einem anderen Speicherbereich lesen will, was vorkommen kann, wenn zum Startzeitpunkt eines jeden der Leseprozesse bereits ein neues aktuellstes Abbild zur Verfügung steht, und jeder Schreibprozess schreiben will, genügend Speicherplätze zur Verfügung. Der eine zusätzliche Speicherplatz ist dabei für das aktuellste Abbild vorgesehen, welches vorzugsweise nicht überschrieben werden soll. Dabei ist zu bedenken, dass bei Recheneinheiten in Kraftfahrzeugen in der Regel der Autosar-Standard verwendet wird, bei dem keine dynamische Erzeugung von Speicherplätzen möglich ist und somit eine geeignete Anzahl an Speicherplätzen von vorneherein vorgehalten werden sollte.
-
Weiterhin ist es für das vorgeschlagene Verfahren zweckmäßig, dass die Speicherbereiche atomar reserviert werden können, d.h. dass bspw. die Anforderung eines Leseprozesses, von einem Speicherbereich zu lesen, ununterbrochen ausgeführt werden kann. Somit kann während der Anforderung zum Lesen nicht ein Schreibprozess beginnen, ein Abbild in den betreffenden Speicherplatz zu schreiben.
-
Eine erfindungsgemäße Recheneinheit, z.B. ein Steuergerät eines Kraftfahrzeugs, und ein erfindungsgemäßer Recheneinheitenverbund, sind, insbesondere programmtechnisch, dazu eingerichtet, ein erfindungsgemäßes Verfahren durchzuführen.
-
Auch die Implementierung des Verfahrens in Form eines Computerprogramms ist vorteilhaft, da dies besonders geringe Kosten verursacht, insbesondere wenn ein ausführendes Steuergerät noch für weitere Aufgaben genutzt wird und daher ohnehin vorhanden ist. Geeignete Datenträger zur Bereitstellung des Computerprogramms sind insbesondere magnetische, optische und elektrische Speicher, wie z.B. Festplatten, Flash-Speicher, EEPROMs, DVDs u.a.m. Auch ein Download eines Programms über Computernetze (Internet, Intranet usw.) ist möglich.
-
Weitere Vorteile und Ausgestaltungen der Erfindung ergeben sich aus der Beschreibung und der beiliegenden Zeichnung.
-
Die Erfindung ist anhand eines Ausführungsbeispiels in der Zeichnung schematisch dargestellt und wird im Folgenden unter Bezugnahme auf die Zeichnung beschrieben.
-
Kurze Beschreibung der Zeichnungen
-
1 zeigt schematisch einen Ablauf eines nicht erfindungsgemäßen Verfahrens zum Schreiben und Lesen eines Datensatzes.
-
2 bis 7 zeigen schematisch einen Ablauf eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform zu verschiedenen Zeitpunkten.
-
Ausführungsform(en) der Erfindung
-
In 1 ist schematisch ein Ablauf eines nicht erfindungsgemäßen Verfahrens zum Schreiben und Lesen eines Datensatzes dargestellt. Beispielhaft sind ein Schreibprozess 300 und drei Leseprozesse 311, 312, 313 gezeigt, die in einen Datensatz 100 schreiben bzw. den Datensatz 100 lesen.
-
Bei dem Schreibprozess bzw. den Leseprozessen kann es sich bspw. um verschiedenen Anwendungen oder verschiedene Schritte einer Anwendung beim Betrieb eines Kraftfahrzeugs handeln, die auf den Datensatz zugreifen wollen.
-
Bei dem Datensatz kann es sich bspw. um eine Information handeln, die zum einen immer wieder aktualisiert wird und die zum anderen immer wieder, möglichst in ihrer aktuellsten Version, benötigt wird.
-
Um in den Datensatz 100 zu schreiben, kann hier nun zunächst von dem Schreibprozess ein Abbild 101 in einen Speicherbereich 201 geschrieben werden. Nachdem der Schreibprozess 300 das Abbild 101 fertig gestellt hat, kann dieses Abbild 101 auf den Datensatz 100 kopiert werden, so dass der Datensatz 100 aktuell ist.
-
Um den Datensatz 100 zu lesen, kann von jedem der Leseprozesse 311, 312, 313 jeweils ein eigenes Abbild 102, 103 bzw. 104 des Datensatzes 100 in einen zugeordneten Speicherbereich 202, 203 bzw. 204 kopiert und von dort gelesen werden.
-
Dabei ist zu beachten, dass, während das geschriebene Abbild 101 auf den Datensatz 100 kopiert und während eines der Abbilder 102, 103, 104 von dem Datensatz 100 kopiert wird, für jeden dieser Kopiervorgänge andere Vorgänge ausgeschlossen werden müssen, damit die Konsistenz des Datensatzes 100 gewahrt bleibt. Während dieses wechselseitigen Ausschlusses können dementsprechend die ausgeschlossenen Prozesse nicht arbeiten, wodurch Leistung verloren geht bzw. ungenutzt bleibt.
-
In den 2 bis 7 ist schematisch ein Ablauf eines erfindungsgemäßen Verfahrens in einer bevorzugten Ausführungsform zu verschiedenen Zeitpunkten dargestellt. Auch hier sind beispielhaft ein Schreibprozess 300 und drei Leseprozesse 311, 312, 313 dargestellt, die in den Datensatz 100 schreiben bzw. den Datensatz 100 lesen. Insgesamt sind fünf Speicherplätze 201, 202, 203, 204, 205 vorgesehen, d.h. ein Speicherplatz mehr als Schreib- und Leseprozesse vorhanden sind. Das Verfahren kann dabei auf einer Recheneinheit 180, bspw. einem Steuergerät, ausgeführt werden. Der Übersichtlichkeit halber ist die Recheneinheit nur in 2 dargestellt.
-
In 2 ist nun das Verfahren zu einem Zeitpunkt bspw. unmittelbar nach einer Initialisierung der Recheneinheit 180, auf welcher das Verfahren ausgeführt wird, gezeigt. Dabei wird ein Abbild 111 in einen der Speicherplätze, von denen zu diesem Zeitpunkt noch keiner verwendet wird, hier den Speicherplatz 201, geschrieben. Das Schreiben dieses Abbilds 111, welches zu diesem Zeitpunkt das einzige und somit auch das aktuellste Abbild des Datensatzes 100 darstellt, kann bspw. in den Initialisierungsprozess der Recheneinheit integriert sein.
-
Weiterhin wird ein Verweis 250, bspw. in Form eines sog. Pointers oder Zeigers, erstellt, welcher immer den Speicherplatz, in welchem das aktuellste Abbild des Datensatzes, hier also das Abbild 111 in dem Speicherplatz 201, angibt und für die Leseprozesse 311, 312, 313 sichtbar ist.
-
In 3 ist nun das Schreiben eines Abbildes durch den Schreibprozess 300 gezeigt. Der Schreibprozess wählt hierzu einen Speicherplatz, in dem sich nicht das aktuellste Abbild 111 befindet und von welchem auch nicht gelesen wird, aus und schreibt ein Abbild des Datensatzes in diesen Speicherplatz, hier den Speicherplatz 202.
-
In 4 ist nun das Lesen des Abbildes 111 durch den Leseprozess 311 gezeigt, während der Schreibprozess 300 weiterhin in den Speicherplatz 202 schreibt. Der Leseprozess 311 weiß durch den Verweis 250, in welchem Speicherplatz sich das aktuellste Abbild befindet, hier das Abbild 111 in dem Speicherplatz 201, welches er lesen kann.
-
Während der Leseprozess 311 von dem Speicherbereich 201 liest, kann ein sog. Semaphor 271 gesetzt werden, damit ein Schreibprozess, der in einen Speicherplatz schreiben will, weiß, welcher Speicherplatz gerade in Verwendung ist und demnach nicht beschrieben werden darf.
-
In 5 ist zusätzlich zu 4 das Lesen des Abbildes 111 durch den Leseprozess 312 gezeigt. Auch der Leseprozess 312 weiß aufgrund des Verweises 250, in welchem Speicherplatz sich das aktuellste Abbild des Datensatzes befindet. Auch der Leseprozess 312 setzt ein Semaphor 272, um den Speicherplatz 201 als verwendet zu markieren.
-
Nach Beendigung eines Leseprozesses kann dann auch das jeweilige Semaphor gelöscht werden. Auf diese Weise wird ein Speicherplatz, von dem nicht mehr gelesen wird und wenn es sich nicht um den Speicherplatz mit dem aktuellsten Abbild handelt, zum Schreiben bzw. Überschreiben für einen Schreibprozess freigegeben werden. Da ein neuer Leseprozess immer das aktuellste Abbild liest, kann ein solches älteres Abbild auch ohne Bedenken überschrieben werden.
-
In 6 ist nun der Schreibprozess 300 mit dem Schreiben in den Speicherplatz 202 fertig und befindet sich bereits beim Schreiben eines neuen Abbildes in den Speicherplatz 203. Das vollständig geschriebene Abbild 112 in dem Speicherplatz 202 ist nun das aktuellste Abbild, weswegen der Verweis 250 nun auf den Speicherplatz 202 zeigt. Ein Leseprozess, welcher mit dem Lesen eines Abbildes beginnt, wird daher das Abbild 212 in dem Speicherplatz 202 lesen, wie dies im hier gezeigten Fall bei dem Leseprozess 311 der Fall ist. Entsprechend wird auch das Semaphor 271 bei dem Speicherplatz 202 gesetzt.
-
Der Leseprozess 312 ist jedoch bspw. noch nicht mit dem Lesen des Abbilds 111 in dem Speicherplatz 201 fertig, so dass der Leseprozess 312 weiterhin auf den Speicherplatz 201 zugreift. Der Speicherplatz 201 kann somit, obwohl bereits ein aktuelleres Abbild des Datensatzes existiert, noch nicht neu beschrieben werden.
-
In 7 ist nun ein Fall gezeigt, bei dem jeder der drei Leseprozesse 311, 312, 313 von einem anderen Speicherplatz, hier den Speicherplätzen 201, 202, 203, das jeweilige Abbild 112, 111 bzw. 113 liest. Das Lesen ist dabei mittels der Semaphore 272, 271, 273 gezeigt, was dazu führt, dass diese drei Speicherplätze 311, 312, 313 noch nicht neu beschrieben werden dürfen.
-
Weiterhin ist das aktuellste Abbild nunmehr jedoch bereits das Abbild 114 in dem Speicherplatz 204, was mittels des Verweises 250 gezeigt ist. Da der Schreibprozess 300 bereits erneut ein Abbild schreibt, muss er hierzu auf den Speicherplatz 205 zugreifen, weil alle übrigen Speicherplätze aus den genannten Gründen noch nicht beschrieben werden dürfen. Dies zeigt, warum die Anzahl an Speicherplätzen um eins höher sein sollte, als insgesamt Prozesse vorhanden sind. Auf diese Weise wird tritt keine Wartezeit auf.
-
Insbesondere ist anzumerken, dass bei dem vorgeschlagenen Verfahren jeder Leseprozess, der den Datensatz 100 lesen will, ohne Wartezeit auf das aktuellste Abbild des Datensatzes 100 zugreifen und dieses lesen kann. Zugleich kann jedoch auch jeder Schreibprozess ohne Wartezeit ein Abbild in einen Speicherplatz schreiben. Durch die Verwendung des Verweises kann dabei auch sichergestellt werden, dass jeder Leseprozess vom zum Zeitpunkt des Beginns des Leseprozess aktuellsten Abbild liest.
-
Weiterhin ist bei dem vorgeschlagen Verfahren vorteilhaft, dass – im Vergleich zu dem in 1 gezeigten Verfahren – nicht mehr in den Datensatz 100 kopiert werden muss, was lange Wartezeiten für Leseprozesse verursachen kann. Insgesamt wird durch das vorgeschlagene Verfahren nicht nur Jitter im System reduziert, sondern es wird auch eine Buslast im System reduziert, da keine zusätzlichen Kopien mehr erzeugt werden müssen. Zudem wird die verfügbare Systemleistung besser ausgenutzt.
-
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
-