-
Stand der Technik
-
Für eine computergestützte Simulation wird ein Simulator benötigt, also ein Computer, auf dem ein Programm zur Berechnung einer Simulation ausgeführt wird. Ein solches Programm zur Berechnung einer Simulation ist ein Simulationsmodell.
-
Wenn man ein erstes Simulationsmodell und ein zweites Simulationsmodell in einem Simulator simulieren möchte, gibt es grundsätzlich die Möglichkeit, die beiden Simulationsmodelle entweder in einem Prozessraum auszuführen, also rechnen zu lassen oder deren Prozessräume zu trennen. Ein Prozessraum umfasst vom Betriebssystem abgetrennte Betriebsmittel, insbesondere voneinander abgetrennte unabhängige Speicherbereiche.
-
Die Prozessraumtrennung hat Vorteile dadurch, dass das Betriebssystem den Zugriff auf den jeweils anderen Prozessraum verwehrt und somit das System weniger anfällig auf ungewollte Querbeeinflussung zwischen den Simulationsmodellen macht. Eine gewollte Beeinflussung der Simulationsmodelle, also die Nutzung eines Parameterwerts von einem Parameter eines ersten Simulationsmodells bei der Berechnung eines zweiten Simulationsmodells, ist aber dringend notwendig, denn sonst würde man die beiden Simulationsmodelle schließlich nicht in einem System simulieren wollen. Damit das erste Simulationsmodell und das zweite Simulationsmodell nicht voneinander abhängig sind, werden im Stand der Technik die Daten, also die benötigten Parameterwerte, in festgelegten Schnittstellen, sogenannten Ports, verfügbar gemacht und die Simulationsumgebung sorgt dafür, dass die Daten zwischen den Simulationsmodellen zu definierten Zeitpunkten umkopiert werden (Call-by-Value). Das funktioniert bei einer geringen Anzahl Daten recht gut. Wenn jedoch sehr viele Daten übertragen werden müssen kann es sehr erstrebenswert sein, die Daten nicht zu kopieren, um die Kopierzeit zu sparen. In dem Fall liegt es nahe, die Daten nicht zu übertragen, sondern nur einen Zeiger auf die Speicherstelle des Datums, also des Parameterwerts, weiterzugeben. Bei Simulatoren, die beide Simulationsmodelle im gleichen Prozessraum halten, ist das einfach möglich, indem ein Zeiger auf die entsprechende Speicherstelle des Parameterwertes vom ersten Simulationsmodell dem zweiten Simulationsmodell übergeben wird. Das zweite Simulationsmodell kann dann den übergebenen Zeiger nutzen, um auf die entsprechende Speicherstelle zuzugreifen.
-
Um Prozessen in unterschiedlichen Prozessräumen Zugriff auf den gleichen Speicher zu ermöglichen, bieten Betriebssysteme das Konstrukt des gemeinsam genutzten Speichers (Shared Memory) an, wobei ein Speicherbereich in den Adressraum beider Prozesse gemappt wird. Für derart getrennte Prozessräume muss das sendende Simulationsmodell ein Objekt im gemeinsam genutzten Speicher anlegen und die Handhabung (Handle) dazu übertragen, sodass das empfangende Simulationsmodell sich mit der übergebenen Handhabung Zugriff auf den gemeinsam genutzten Speicher holt und so an den benötigten Parameterwert gelangt.
-
Gibt es allerdings keinen gemeinsam genutzten Speicher, müsste das sendende Simulationsmodell zunächst wissen, dass der Simulator mit unterschiedlichen Prozessräumen arbeitet und somit keine Zeiger übergeben werden sollten. Ein Zeiger hat nämlich in einem anderen Prozessraum keine Bedeutung.
-
Um solche Fehler durch Zeiger ohne Bedeutung zu verhindern, werden im Stand der Technik alle von einem ersten Simulationsmodell benötigten Daten, also Parameterwerte, von dem ersten Simulationsmodell an das zweite Simulationsmodell als Kopie übergeben. Gerade bei großen Datenmengen ist dies sehr zeitaufwändig.
-
Offenbarung der Erfindung
-
Die Aufgabe wird erfindungsgemäß durch ein Verfahren zur Übergabe von Parameterwerten eines ersten Simulationsmodells an ein zweites Simulationsmodell während einer Simulation mit den Merkmalen des Patentanspruchs 1 gelöst. Dabei wird das erste Simulationsmodell in einem ersten Prozessraum ausgeführt und das zweite Simulationsmodell in einem zweiten Prozessraum ausgeführt, wobei der erste Prozessraum und der zweite Prozessraum nicht identisch sind. Das erste Simulationsmodell weist mindestens einen Parameter mit einem Parameterwert auf, wobei der Parameterwert an das zweite Simulationsmodell während der Simulation übergeben werden soll. In einem ersten Schritt wird zur Laufzeit geprüft, ob der zu übergebende Parameterwert in einem gemeinsam genutzten Speicher liegt. In einem zweiten Schritt wird ein Zeiger auf den gemeinsam genutzten Speicher vom ersten Simulationsmodell an das zweite Simulationsmodell übergeben, wenn der zu übergebende Parameterwert in einem gemeinsam genutzten Speicher liegt und der Parameterwert vom ersten Simulationsmodell an das zweite Simulationsmodell als Kopie übergeben, wenn der zu übergebende Parameterwert nicht in einem gemeinsam genutzten Speicher liegt.
-
Die Erfindung besteht somit darin zur Laufzeit, vor dem Kopieren zu überprüfen, ob der Zeiger auf einen gemeinsam genutzten Speicher zeigt. Das kann effizient implementiert werden und deutlich schneller als ein Kopieren sein. In dem Fall würde nicht kopiert, sondern das Zeigerpendant, also die Handhabung (Handle) des Speicherobjekts auf den gemeinsam genutzten Speicher im anderen Prozessraum verwendet.
-
In einer weiteren Ausführungsform der Erfindung ist kein gemeinsam genutzter Speicher vorhanden. Das erfindungsmäße Verfahren prüft nun in einem ersten Schritt, ob der zu übergebende Parameterwert in einem gemeinsam genutzten Speicher vorhanden ist. Da kein gemeinsam genutzter Speicher vorhanden ist, wird der zu übergebende Parameterwert als Kopie übergeben. In einer weiteren Ausführungsform kann nun in einem weiteren Verfahrensschritt vorgeschlagen werden, einen gemeinsam genutzten Speicher anzulegen, so dass bei einer weiteren Übergabe des Parameterwerts lediglich ein Zeiger auf den gemeinsam genutzten Speicher übergeben werden muss.
-
Die Erfindung bietet beispielsweise folgende Vorteile:
- Wenn beide Simulationsmodelle für die Prozesstrennung ausgelegt sind, können sie korrekt simuliert werden. Die Übertragung der Daten per Kopie mag langsamer, aber in genügend Fällen nicht ausschlaggebend sein.
-
Wenn das Kopieren der Daten die Simulationsgeschwindigkeit deutlich verringert, kann das sendende erste Simulationsmodell so geändert werden, dass es den gemeinsam genutzten Speicher anlegt bzw. ihn beim Simulator anfordert. Diese Änderung vom Benutzer reicht aus, um die Übertragung ohne Kopie stattfinden zu lassen. Das empfangende zweite Simulationsmodell muss nicht umgestellt werden. Auch muss der Benutzer nicht die Kommunikation zwischen den beiden Simulationsmodellen im Simulator umkonfigurieren.
-
In einer weiteren Ausführungsform kann der Simulator zur Laufzeit erkennen, ob eine Kommunikation mit Kopieren stattfindet und den Nutzer darüber informieren, dass mit einer kleinen Anpassung am sendenden ersten Simulationsmodell die Simulation beschleunigt werden könnte. Somit erfolgt in einem weiteren Schritt im Fall einer Übergabe des Parameterwertes vom ersten Simulationsmodell an das zweite Simulationsmodell als Kopie eine Rückmeldung an den Benutzer, wobei die Rückmeldung beinhaltet, dass es für die Laufzeit der Simulation günstiger wäre einen gemeinsam genutzten Speicher anzulegen.
-
In einer weiteren Ausführungsform kann der Simulator vorhersagen, wieviel schneller die Simulation sein könnte, damit der Benutzer entscheiden kann, ob es sich lohnt, die Änderung an dem sendenden ersten Simulationsmodell vornehmen zu lassen. Dafür beinhaltet die Rückmeldung an den Benutzer, um welchen Faktor die Simulation beschleunigt werden könnte, wenn ein gemeinsam genutzter Speicher genutzt würde.
-
Die Erfindung hebt sich vom Stand der Technik dadurch ab, dass der Benutzer die Vorteile der Prozessraumtrennung und der Call-by-Reference Übertragung gleichzeitig nutzen kann. Diesen Vorteil kann der Benutzer mit einer kleinen Änderung am sendenden ersten Simulationsmodell erreichen. Ohne die Änderung kann die Simulation weiterhin korrekt, aber nicht so schnell erfolgen.
-
Figurenliste
-
Zum besseren Verständnis der vorliegenden Erfindung und ihrer Vorteile wird nun auf die nachfolgende Beschreibung
in Verbindung mit den zugehörigen Zeichnungen verwiesen.
-
Es zeigen:
- 1 Schematische Darstellung der am erfindungsgemäßen Verfahren beteiligten Komponenten
- 2 Ablaufdiagram zum erfindungsgemäßen Verfahren
-
1 zeigt eine schematische Darstellung der am erfindungsgemäßen Verfahren beteiligten Komponenten. So erfolgt das Verfahren auf einem Simulator 11. Ein Simulator 11 ist ein Computer, der so eingerichtet ist, dass ein erstes Simulationsmodell 14 in einem ersten Prozessraum 12 und ein zweites Simulationsmodell 15 in einem zweiten Prozessraum 13 darauf ausgeführt werden können. Dabei sind der erste Prozessraum 12 und der zweite Prozessraum 13 nicht identisch. Optional gibt es einen vom ersten Simulationsmodell 14 und zweiten Simulationsmodell 15 gemeinsam genutzten Speicher 20. Parameterwerte 16a, 16b, die im ersten Simulationsmodell 14 vorliegen und zur Laufzeit der Simulation an das zweite Simulationsmodell 15 übergeben werden sollen, können, wie im Fall des Parameterwerts 16a im gemeinsam genutzten Speicher 20 an der Speicherstellen 17 liegen. In diesem Fall hat das Simulationsmodell 14 einen Zeiger 18 mit der entsprechenden Handhabung des Speicherobjekts auf die Speicherstelle 17. Unabhängig davon, ob ein gemeinsam genutzter Speicher 20 vorhanden ist oder nicht, kann ein zu übergebender Parameterwert 16b auch nur innerhalb des ersten Prozessraums 12 gespeichert sein und somit nicht im gemeinsam genutzten Speicher 20 gespeichert sein.
-
Die Übergabe 21 mindestens eines zu übergebenden Parameterwertes 16a, 16b hängt erfindungsgemäß nun von dem Ergebnis einer Prüfung in einem ersten Verfahrensschritt 101 ab. Wenn der zu übergebende Parameterwert 16a in einem gemeinsam genutzten Speicher 20 gespeichert ist, wird in einem zweiten Verfahrensschritt 102a ein Zeiger 18 mit der Handhabung auf den Speicherplatz 17 vom ersten Simulationsmodell 14 an das zweite Simulationsmodell 15 durch die Übergabe 21 übergeben. Wenn der zu übergebende Parameterwert 16 nicht in einem gemeinsam genutzten Speicher 20 gespeichert ist, wird in einem zweiten Verfahrensschritt 102b eine Kopie 16b' des zu übergebenden Parameterwertes 16b vom ersten Simulationsmodell 14 an das zweite Simulationsmodell 15 durch die Übergabe 21 übergeben.
-
2 zeigt den Ablauf des erfindungsgemäßen Verfahrens. So wird in einem ersten Verfahrensschritt 101 geprüft, ob der vom ersten Simulationsmodell 14 zum zweiten Simulationsmodell 15 zu übergebende Parameterwert 16a, 16b in einem gemeinsam genutzten Speicher 20 liegt. Der zweite Verfahrensschritt 102 hängt vom Ergebnis der Prüfung des ersten Verfahrensschritts 101 ab. Hat die Prüfung in Verfahrensschritt 101 zum Ergebnis, dass der zu übergebende Parameterwert 16a in einem vom ersten Simulationsmodell 14 und zweiten Simulationsmodell 15 gemeinsam genutzten Speicher 20 liegt, so wird im zweiten Verfahrensschritt 102a von dem ersten Simulationsmodell 14 ein Zeiger 18 an das zweite Simulationsmodell 15 übergeben.
-
Hat die Prüfung in Verfahrensschritt 101 das Ergebnis, dass der zu übergebende Parameterwert 16b nicht in einem vom ersten Simulationsmodell 14 und zweiten Simulationsmodell 15 gemeinsam genutzten Speicher 20 liegt, so wird im zweiten Verfahrensschritt 102b von dem ersten Simulationsmodell 14 eine Kopie 16b' des zu übergebenden Parameterwerts 16b an das zweite Simulationsmodell 15 übergeben.
-
Ein Ausführungsbeispiel für Verfahrensschritt 102b:
- Es wurde ein erstes Simulationsmodell 14 erstellt, das Daten, also mindestens ein Parameterwerte 16 mittels eines Zeigers überträgt. Ein Benutzter verbindet die Schnittstellen des ersten Simulationsmodells 14 mit einem zweiten Simulationsmodell 15 und startet die Simulation. Der Simulator 11 erkennt, dass der Parameterwert 16 nicht in einem gemeinsam genutzten Speicher 20 vorhanden ist, kopiert den Parameterwert 16 und ändert den Zeiger auf die Kopie 16'. Das empfangende zweite Simulationsmodell 15 nutzt den Zeiger auf die Kopie 16' für weitere Berechnungen.
-
Ein Ausführungsbeispiel für Verfahrensschritt 102a:
- In einem weiteren Ausführungsbeispiel wurde ein erstes Simulationsmodell 14 erstellt, das Daten, also mindestens ein Parameterwert 16 mittels eines Zeigers überträgt. Das erste Simulationsmodell 14 erfragt beim Simulator oder auch direkt beim Betriebssystem gemeinsamen Speicher 20. Der Kunde verbindet die Schnittstellen des ersten Simulationsmodells 14 mit einem zweiten Simulationsmodell 15 und startet die Simulation. Der Simulator 11 erkennt, dass der Parameterwert 16 in einem gemeinsamen Speicher 20 vorhanden ist, und ändert den Zeiger auf das Zeiger-Mapping 18 im anderen Prozess. Das empfangende zweite Simulationsmodell 15 nutzt den Zeiger 18 für weitere Berechnungen.
-
In einem weiteren Ausführungsbeispiel wurde ein erstes Simulationsmodell 14 erstellt, das Daten, also mindestens einen Parameterwert 16 mittels eines Zeigers überträgt. Ein Benutzter verbindet die Schnittstellen des ersten Simulationsmodells 14 mit einem zweiten Simulationsmodell 15 und startet die Simulation. Der Simulator 11 erkennt, dass der Parameterwert 16 nicht in einem gemeinsam genutzten Speicher 20 vorhanden ist, kopiert den Parameterwert 16 und ändert den Zeiger auf die Kopie 16'. Allerdings ist der Benutzer unzufrieden mit der Übertragungsgeschwindigkeit. Der Simulator 11 erkennt zur Laufzeit, dass per Kopie kommuniziert wird und schlägt für die betreffenden Schnittstellen im sendenden ersten Simulationsmodell 14 vor, gemeinsam genutzten Speicher 20 zu nutzen. Der Simulator 11 schätzt, welche Geschwindigkeitsverbesserung zu erwarten ist.