-
GEBIET DER ERFINDUNG
-
Die
Erfindung betrifft das Gebiet der Computersimulation von physikalischen
Schaltungen und Systemen, in denen analoge und gemischt digital-analoge
Signale auftreten, und insbesondere das Planen nicht ganzzahliger
Zeitpunkte für
Simulationsereignisse.
-
HINTERGRUND DER ERFINDUNG
-
Bei
der Simulation digitaler Systeme, bei der sowohl das funktionale
Verhalten der Systeme als auch deren zeitliches Verhalten verifiziert
werden soll, ist die Geschwindigkeit der Simulation einer der wichtigsten
Faktoren. Einer der Schlüssel
zum Beschleunigen der Simulation besteht darin, in der Simulation
gezielt nur die Aktivität
im Modell zu verfolgen. Diese gezielte Verfolgung wird in zwei Bereichen
vorgenommen. Ein Bereich ist das Modell. Zu jedem gegebenen Simulationszeitpunkt
lässt der
Simulator die Teile des Modells außer Acht, die sich nicht verändern. Der
andere Bereich ist die Zeit. Idealerweise wird der Simulator nur
für diejenigen
Simulationszeitpunkte aktiv, zu denen eine Aktivität auftritt.
-
Zum
Erzielen dieser Wirksamkeit wird die Aktivität in Ereignisse unterteilt,
die zu bestimmten Zeitpunkten auftreten. Erzeugt das Modell diese
Ereignisse, so ist es unerlässlich,
dass der Simulator diese Ereignisse für die Verarbeitung zu den spezifizierten
Simulationszeitpunkten wirksam speichert und sie wirksam zurückholt,
wenn die Simulation zu diesem Simulationszeitpunkt fortschreitet.
Um dies zu erreichen werden in der Regel Datenstrukturen und Algorithmen
verwendet, die eine Planungsliste (time wheel) implementieren. Eines
der Merkmale der Planungsliste ist die Fähigkeit, dem Simulator in einer
Operation die gesamte Liste aller Ereignisse am nächsten Simulationszeitpunkt
zu übermitteln,
an den ein Ereignis auftritt.
-
Jeder
Schlitz in der Planungsliste stellt eine Einheit der minimal auflösbaren Zeit
dar. Eine Modulooperation auf der Simulationszeit dient dazu, den richtigen
Schlitz zu finden, in dem ein Ereignis angeordnet wird. Die Simulationszeit
wird weitergeschaltet, indem man den nächsten Schlitz aufsucht, in
dem die Planungsliste eine nicht leere Ereignisliste aufweist. Die
Ordnung der Komplexität
der Modulooperation ist bezüglich
der Computerzeit eine Konstante. Der Aufwand zum Prüfen eines
jeden leeren Schlitzes ist so beträchtlich, dass es wichtig ist,
die Anzahl der leeren Schlitze so gering wie möglich zu halten. Das Minimieren
der Schlitze erfolgt durch das Wählen
einer kleinsten auflösbaren
Zeit, die so klein ist, dass man die gewünschte Genauigkeit bezüglich der Zeit
erreicht, jedoch so groß,
dass die Anzahl der leeren Schlitze so gering wie möglich wird. Aus
der Sicht des Simulierenden ist es am einfachsten, wenn diese minimale
auflösbare
Zeit zu Beginn der Simulation bekannt ist. Andernfalls muss man
Vorkehrungen zum Umorganisieren der Planungsliste bei fortschreitender
Simulation treffen. Diese Umorganisation ist sehr aufwendig.
-
Eine
weitere Schwierigkeit stellt die Entscheidung über die Größe der Planungsliste dar. Sie muss
so groß sein,
dass sie die längste
Verzögerung im
Modell abdeckt. Dies stellt sicher, dass zwei unterschiedliche Zeitpunkte
nicht den gleichen Schlitz in der Planungsliste zum gleichen Zeitpunkt
belegen müssen.
Dies kann möglicherweise
die Größe der Verzögerung begrenzen,
die man in einer gegebenen Menge an Computerspeicher modellieren
kann. Die anderen Optionen bestehen darin, unterschiedliche Zeitpunkte
im gleichen Schlitz zu verwalten oder getrennte Listen von Ereignissen
zu verwalten, die weit in der Zukunft liegen. Jede dieser beiden
letzten Optionen macht den Simulator unwirksamer und komplizierter.
-
Die
Simulatoren können
wirksam arbeiten, wenn die kürzeste
auflösbare
Zeit zum Zeitpunkt der Modellübersetzung
festgestellt wird. Es gibt einen sehr viel weniger wirksamen Simulationsmodus,
falls sich die kleinste auflösbare
Zeit während
der Simulation ändern
kann.
-
Während der
analogen Teile der Simulation legt der Simulator die kürzeste auflösbare Zeit
als den Zeitzuwachs fest, der zum Lösen algebraischen Gleichungen
und der Differentialgleichungen mit der Genauigkeit des Modells
erforderlich ist. Zu unterschiedlichen Zeiten während der Simulation kann sich
die kürzeste
auflösbare
Zeit um zahlreiche Größenordnungen ändern. Diese
kürzeste
auflösbare Zeit
kann in manchen Fällen
als Verzögerung
wirken, die geplant werden muss. An der Schnittstelle von der analogen
zur digitalen Simulation treten Grenzwertüberschreitungen auf, die geplant
werden müssen.
Die Zeiten dieser Grenzwertüberschreitungen treten
mit analoger Zeitauflösung
auf.
-
9 zeigt
eine Folge von Schritten, die beim Ausführen einer Simulation auftreten.
Im Schritt 905 wird die Entwurfsbeschreibung zusammengestellt.
Die Entwurfsbeschreibung enthält
sämtliche Eingaben,
die den zu simulierenden Entwurf beschreiben. Sie kann Modelle enthalten,
die physikalische Vorrichtungen beschreiben, und eine Netzliste (eine
Liste von Modellfällen
und ihrer Verbindungen und Parameter). Die Modelle und die Netzliste
können
als Text oder in kompilierter Form vorliegen. Im Schritt 910 wird
das simulierbare Modell zusammengestellt. Dabei wird die Entwurfsbeschreibung
genommen und in eine Zusammenstellung von Datenstruktur und ausführbarem
Code umgesetzt, den der Kernsimulator dazu verwenden kann, das Verhalten des
Modells zu analysieren, das den zu simulierenden Entwurf darstellt.
Im Schritt 915 simuliert der Kernsimulator das Modell.
Der Kernsimulator berechnet das Verhalten des gemischt analog/digitalen
Modells im Zeitbereich und im Frequenzbereich. Schließlich erlaubt
im Schritt 920 der Postprozessor dem Benutzer, die Simulationsereignisse
zu überprüfen, beispielsweise
in einem graphischen Betrachter, und die Ereignisse anhand von gewählten Kriterien zu
verarbeiten.
-
4A und 4B zeigen
den Simulationsvorgang zum Simulieren einer physikalischen Schaltung
oder eines Systems, in dem analoge und gemischt digital-analoge
Signale auftreten. Der Simulationsvorgang zeigt, wo Ereignisse intern
im System geplant werden. Der Simulationsvorgang in 4A und 4B ist
dem Simulationsvorgang sehr ähnlich,
der im IEEE Standard VHDL Analog and Mixed-Signal Extensions, IEEE
Std 1076.1-1999, § 12.6.4
spezifiziert ist, und er gleicht den Simulationen, die SABER ausführt.
-
In 4A und 4B prüft der Simulator
im Schritt 405, ob weitere Ereignisse zu simulieren sind. Sind
noch geplante Zeitpunkte vorhanden, so sind weitere Ereignisse zu
simulieren. Vorausgesetzt dass Ereignisse zu simulieren sind, werden
im Schritt 410 geplante analoge Ereignisse bearbeitet.
Es gibt drei Arten von analogen Ereignissen, nämlich: die Ankunft an der linken
Grenze einer Unstetigkeit, bei der das zu simulierende Modell eine
Unterbrechung ausgeführt
hat; die Ankunft an der rechten Grenze einer Unstetigkeit; und die
Ankunft am Zeitpunkt der geplanten analogen Lösung. Im Schritt 415 werden die
Signale aktualisiert. Das Aktualisieren der Signale umfasst die Übergabe
von Wertänderungen
an die Signale. Im Schritt 420 werden Prozesse wiederaufgenommen.
Ein Prozess ist eine Menge von Verarbeitungsschritten in der Hardware-Beschreibungssprache,
die der Benutzer liefert. Prozesse können Benutzersignaländerungen
behandeln und einem Signal Werte zuweisen. Das Zuweisen eines Werts
an ein Signal bewirkt, dass ein Ereignis geplant wird. Im Schritt 425 wird
der Zeitschlitz geprüft,
um zu festzustellen, ob er zu Ende ist. Da Ereignisse ohne Verzögerung geplant
werden können
(anders ausgedrückt Ereignisse
zugefügt
werden können,
die sofort zu simulieren sind), muss der Zeitschlitz überprüft werden,
bevor der Simulator schließen
kann, dass alle geplanten Ereignisse simuliert sind. Im Schritt 430 werden – falls
das Ende des Zeitschlitzes erreicht ist – aufgeschobene Prozesse wieder
aufgenommen. Ein aufgeschobener Prozess ist ein besonderer Prozess,
der so eingestellt ist, dass er bei einem Zeitwechsel auftritt.
Im Schritt 435 prüft
der Simulator, ob eine analoge Projektion erforderlich ist. Eine
analoge Projektion ist erforderlich, falls die vorhergehende analoge
Projektion nur auf die aktuelle geplante Zeit projiziert hat. Ist
eine analoge Projektion erforderlich, so wird im Schritt 440 die
folgende analoge Lösung projiziert.
Schließlich
wird im Schritt 445 der Zeitpunkt der folgenden analog/digitalen
Ereignisse geholt.
-
Gibt
es eine feststellbare kleinste auflösbare Zeit, so kann die Simulationszeit
durch eine natürliche
Zahl dargestellt werden. Kann die Verzögerung zwischen geplanten Simulationszeiten
jedoch sowohl sehr klein als auch sehr groß sein (d. h., die kleinste auflösbare Zeit
kann sich ändern),
so muss die Zeit als Gleitkommazahl (nicht ganzzahlig) dargestellt werden.
Dies beeinflusst zusätzlich
die Komplexität der
Planungsliste.
-
Damit
besteht Bedarf für
eine Vorgehensweise, mit der die zeitlichen Zusammenhänge einer
Ereignissimulation gesteuert werden, die nicht auf einer festen
kleinsten auflösbaren
Zeit beruht, und die ein wirksames unbeschränktes Wachstum der Anzahl geplanter
Zeitpunkte für
Simulationsereignisse erlaubt.
-
Techniken
mit linearen verketteten Listen, impliziten Heaps, internen binären Suchbäumen (splay
tree) und Ereignislistenverwaltung (calendar queue) werden für die Implementierung
eingesetzt, um Ereigniskombinationen in einer digitalen Simulation
zu bilden, siehe die Veröffentlichung "Using split event
sets to form and schedule event combinations in discrete event simulation", N. Manjikian, W.
M. Loucks (1992-04-06).
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Ein
Simulator modelliert physikalische Schaltungen und Systeme, in denen
analoge und gemischt digital-analoge Signale auftreten, in einem
digitalen Computer. Gemäß der Erfindung
weist der Simulator den Ereignissen geplante Zeitpunkte zu. Unter
Verwendung einer die Reihenfolge nicht erhaltenden Hashfunktion
werden die Ereignisse in Speicherzonen in einer Hashtabelle angeordnet.
Ereignisse, die durch den Hashvorgang in die gleiche Speicherzone geleitet
werden, jedoch zu unterschiedlichen Zeitpunkten stattfinden, werden
in der Speicherzone in unterschiedlichen Listen untergebracht. Die
geplanten Zeitpunkte für
die Ereignisse in jeder Speicherzone werden durch die Hashfunktion
mit jeder Speicherzone verknüpft.
Die geplanten Zeitpunkte für
die Ereignisse werden in einen Heap eingeordnet. Der Simulator entfernt
den frühesten
geplanten Zeitpunkt aus dem Heap, sucht die zugeordnete Speicherzone, bestimmt
die geeignete Liste innerhalb der Speicherzone und führt das
Ereignis in der Ereignisliste aus. Die verbleibenden geplanten Zeitpunkte
werden in einen neuen Heap umorganisiert, und der Ablauf wird wiederholt,
bis der Heap leer ist.
-
Gemäß einem
Aspekt der Erfindung wird ein computerimplementiertes Verfahren
zum Aufnehmen von Ereignissen bereitgestellt, die an geplanten Zeitpunkten
auftreten, und zwar in ein Simulationsmodell zum Modellieren analoger
und gemischt digital-analoger Signale in physikalischen Schaltungen
und Systemen in einem digitalen Computer, wobei das Verfahren umfasst:
das
Zuweisen von geplanten Zeitpunkten an die Ereignisse;
das Verwenden
einer die Reihenfolge nicht erhaltenden Hashfunktion ausgehend von
den geplanten Zeitpunkten der Ereignisse zum Speichern der Ereignisse
in Speicherzonen, wobei eine Speicherzone ein einer Hashtabelle
zugeordnetes Element ist, und jede Speicherzone mindestens ein Ereignis
enthält und
die Speicherzonen relativ zueinander keine zugewiesene Reihenfolge
besitzen;
das Verknüpfen
der geplanten Zeitpunkte, die den Ereignissen in den Speicherzonen
zugewiesen sind, mit den Speicherzonen;
das Organisieren der
geplanten Zeitpunkte, jedoch nicht ihrer Ereignisse, in einem Heap,
wobei der Heap einen binären
Baum von Knoten enthält,
die in einer Eltern-Kind-Beziehung
stehen, und ein erster Knoten, der eine Ebene über einem zweiten Knoten steht,
ein Kind des ersten Knotens genannt wird, und jeder Elternknoten
einen kleineren geplanten Zeitpunkt hat als seine zwei Kinder;
das
Entfernen eines frühesten
geplanten Zeitpunkts aus dem Heap;
das Simulieren der Ereignisse
in der Speicherzone, die dem frühesten
geplanten Zeitpunkt zugeordnet sind;
das Umorganisieren der
verbleibenden geplanten Zeitpunkte in einen neuen Heap;
und
das
Wiederholen der Schritte des Entfernens eines geplanten Zeitpunkts,
des Simulierens der Ereignisse und des Umorganisierens der verbleibenden
geplanten Zeitpunkte bis der Heap leer ist, wobei die geplanten
Zeitpunkte als Gleitkommazahlen dargestellt sind.
-
Gemäß einem
weiteren Aspekt der Erfindung wird ein System zum Planen von Ereignissen mit
zugeordneten geplanten Zeitpunkten bereitgestellt, die mit nicht
ganzzahligen Intervallen in einem Simulationsmodell auftreten, und
zwar zum Modellieren analoger und gemischt digital-analoger Signale
in physikalischen Schaltungen und Systemen in einem digitalen Computer,
wobei das System umfasst:
einen Computer; und
eine Datenstruktur,
wobei die Datenstruktur umfasst:
eine Anzahl Speicherzonen,
die mit einer Hashtabelle verknüpft
sind und untereinander keine zugewiesene Reihenfolge aufweisen,
und die in dem Computer gespeichert sind, wobei jede Speicherzone
Ereignisse speichert, die zu einem geplanten Zeitpunkt stattzufinden
haben, und abhängig
von den geplanten Zeitpunkten der Ereignisse eine die Reihenfolge nicht
erhaltende Hashfunktion verwendet wird, und die geplanten Zeitpunkte,
die den Ereignissen in den Speicherzonen zugeordnet sind, mit den
Speicherzonen verknüpft
sind;
Mittel zum Organisieren der geplanten Zeitpunkte, jedoch
nicht ihrer Ereignisse, in einem Heap, wobei der Heap einen binären Baum
von Knoten enthält,
die in einer Eltern-Kind-Beziehung
stehen, und ein erster Knoten, der eine Ebene über einem zweiten Knoten steht,
ein Kind des ersten Knotens genannt wird, und jeder Elternknoten
einen kleineren geplanten Zeitpunkt hat als seine zwei Kinder;
dass
der Heap so aufgebaut und angeordnet ist, dass das Entfernen eines
frühesten
geplanten Zeitpunkts aus dem Heap möglich ist;
Mittel zum
Simulieren der Ereignisse, die dem frühesten geplanten Zeitpunkt
zugeordnet sind;
Mittel zum Umorganisieren der verbleibenden
geplanten Zeitpunkte in einen neuen Heap; und
Mittel zum Wiederholen
des Entfernens, Simulierens und Umorganisierens bis der Heap leer
ist, damit man einen frühesten
geplanten Zeitpunkt leicht finden kann, wobei die geplanten Zeitpunkte
als Gleitkommazahlen dargestellt sind.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Es
zeigt:
-
1 ein
Computersystem, in dem das Verfahren und die Vorrichtung dieser
Erfindung implementiert sind;
-
2A und 2B einfache
Heaps, die für den
Heap in 1 verwendet werden können;
-
3A und 3B eine
Muster-Hashtabelle, die als Hashtabelle in 1 verwendbar
ist;
-
4A und 4B in
ausführlicherer
Weise den herkömmlichen
Simulationsvorgang in 9,
-
5 die
Art und Weise, in der Ereignisse im Heap in 1 abgelegt
bzw. daraus entfernt werden;
-
6 die
Art und Weise, in der Ereignisse dem Heap in 1 zugefügt werden
können;
-
7 die
Art und Weise, in der Ereignisse aus der Planung im Heap in 1 entfernt
werden können;
-
8 wie
Ereignisse verarbeitet werden, wenn im Simulator in 1 ihr
geplanter Zeitpunkt erreicht ist; und
-
9 die
Folge von Schritten, die beim Ablauf einer Simulation auftreten.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Die
bisher verwendete Planungsliste ist eine die Reihenfolge erhaltende
Hashtabelle, die ein festes Intervall zwischen Zeitpunkten in der
Liste (d. h. den Plätzen
in der Hashtabelle) aufweist. Die Zeitwerte werden in sortierter
Reihenfolge gespeichert, wobei eine Modulo-Hashfunktion verwendet
wird. Der Nachteil, den man für
die sortierte Reihenfolge in Kauf nehmen muss, ist die Notwendigkeit,
leere Schlitze zu bearbeiten, um zum nächsten Zeitschlitz mit Ereignissen
zu kommen.
-
Gemäß der Erfindung
wird eine die Reihenfolge nicht erhaltende Hashfunktion eingesetzt.
Die Schwierigkeit, dass man eine minimale auflösbare Zeit zum Handhaben des
Problems mit den leeren Schlitzen festlegen muss, wird dadurch beseitigt. Längere Verzögerungen
erfordern keine besondere Verarbeitung. Die Hashfunktion legt Ereignisse
anhand ihrer geplanten Zeitpunkte in Speicherzonen ab (die Speicherzonen
bilden dadurch die Hashtabelle), die Speicherzonen selbst besitzen
aber keine zugewiesene Reihenfolge.
-
Eine
Heapprioritätenschlange
ermöglicht das
Verfolgen der Zeitpunkte im Planer. Die Heapprioritätenschlange
erlaubt es, den nächsten
Ereigniszeitpunkt leicht festzustellen. Die Heapprioritätenschlange
stellt die Anordnungsfähigkeit
wieder her, die durch den Übergang
zu einer die Reihenfolge nicht erhaltenden Hashfunktion verloren
geht.
-
Eine
Hashtabellen-Speicherzone enthält eine
Liste von Ereignislisten. Jede Ereignisliste ist mit der Simulationszeit
der Ereignisse in der Liste gekennzeichnet. Treten Kollisionen von
unterschiedlichen Simulationszeiten auf, die durch den Hashvorgang
in die gleiche Speicherzone geleitet werden, so hält sie der
Mechanismus der Listen, die mit den geplanten Zeitpunkten gekennzeichnet
sind, außen
vor.
-
Der
Gebrauch einer die Reihenfolge nicht erhaltenden Hashtabelle und
einer Heapprioritätenschlange
erzeugt ein gleichförmiges
Schema, dessen Wirksamkeit nicht von den relativen Größen der kürzesten
und längsten
Verzögerung
abhängt.
Der Umfang des Speichers, der für
das Schema nötig
ist, hängt
von der Anzahl der Ereignisse und der einzelnen Zeitpunkte ab. Der
Umfang des verwendeten Speichers hängt nicht von den Größen der
Verzögerungen
ab.
-
1 zeigt
ein Computersystem 105, in dem das Verfahren und die Vorrichtung
dieser Erfindung verwendet werden. Das Computersystem 105 enthält einen
Computer 110, einen Monitor 115, eine Tastatur 120 und
eine Maus 125. Zu dem Computersystem 105 können noch
weitere Komponenten gehören, auch
wenn sie in 1 nicht dargestellt sind. Das Computersystem 105 kann
beispielsweise weitere Ein/Ausgabegeräte enthalten, beispielsweise
eine Plottervorrichtung. Das Computersystem 105 enthält auch
den Simulator 130. Der Simulator 130 simuliert physikalische
Schaltungen und Systeme, in denen analoge und gemischt digital-analoge
Signale auftreten.
-
In
der bevorzugten Ausführungsform
werden die geplanten Zeitpunkte für die zu simulierenden Ereignisse
in einem Heap gespeichert. Das Computersystem 105 enthält einen
Heap 135 zum Speichern der geplanten Zeitpunkte in einer
Heapprioritätenschlange
und eine Hashtabelle 138 zum Speichern der Ereignislisten
von Ereignissen, die zu gegebenen geplanten Zeitpunkten zu simulieren
sind. Speicherzonen 140 bilden einen Teil der Hashtabelle 138.
Die Speicherzonen 140 speichern die Ereignisliste der tatsächlich zu
simulierenden Ereignisse. Dadurch wird es möglich, dass der Heap 135 nur
die geplanten Zeitpunkte für
die zu simulierenden Ereignisse speichert, wodurch die Heapverwaltung
einfacher wird.
-
2A zeigt
einen Musterheap 205. Der Heap 205 enthält neben
anderen Knoten die Knoten 210, 215, 220, 225, 230 und 235.
Ein Heap ist eine Datenstruktur, die als binärer Baum organisiert ist. Von
den Knoten im binären
Baum sagt man, dass sie eine Eltern-Kind-Beziehung aufweisen. D. h., ein Knoten
im Heap 205, der sich eine Ebene über einem anderen Knoten befindet,
wird als Elternknoten des anderen Knotens bezeichnet, und der andere
Knoten wird als Kindknoten des Elternknotens bezeichnet. In einem
Heap hat jeder Elternknoten einen kleineren Wert als seine zwei
Kinder (dies ist als Heapeigenschaft bekannt). Beispielsweise speichert
der Knoten 210 den Wert 2, der kleiner ist als die Werte
der Knoten 215 (5) und 220 (8). Der Knoten 215 (5)
hat einen kleineren Wert als die Knoten 225 (6) und 230 (16.), usw.
Man beachte, dass neben der Forderung, dass jeder Knoten im Heap 205 einen
kleineren Wert hat als seine beiden Kindknoten, dem Heap keine weiteren
Regeln auferlegt sind. So befindet sich der Knoten 225,
der den Wert 6 speichert, in der dritten Zeile des Heaps 205,
obwohl der Knoten 220 mit dem Wert 8 in der zweiten Zeile
des Heaps 205 liegt. In vergleichbarer Weise hat der Knoten 235 einen
kleineren Wert als der Knoten 230; er befindet sich jedoch auf
der anderen Seite des Heaps in einer tieferen Position. Einen Heap
wie den Heap 205 kann man als teilweise geordnet bezeichnen.
-
In
der bevorzugten Ausführungsform
ist der Heap 205 links gefüllt. D. h., zwei Kindknoten
werden dem am weitesten links gelegenen Elternknoten der letzten
vollständigen
Zeile im Heap zugeordnet, der keine zwei Kinder aufweist. Hat zudem
der Elternknoten, dem das Kind zugefügt wird, keine Kinder, so wird
das neue Kind dem Elternknoten als linkes Kind zugefügt. Die
Anforderung, den Heap 205 von links zu füllen, vereinfacht
die Einzelheiten der Implementierung, ist jedoch nicht erforderlich.
Algorithmen zum Konstruieren eines Heaps aus einem Satz von Werten,
zum Einfügen
neuer Werte in den Heap und zum Entfernen von Werten aus dem Heap
sind bekannt und werden nicht erneut erklärt.
-
2B zeigt,
wie der Heap 205 in 2A aussehen
kann, nachdem der früheste
geplante Zeitpunkt aus dem Heap entfernt wurde. Im Heap 255 ist der
Knoten 235 als Kind des Knotens 260 innerhalb des
Heaps neu angeordnet worden. In ähnlicher
Weise sind die Knoten 215, 225 und 260 neu
angeordnet worden. Man beachte, dass der Heap 255 nach
wie vor die Heapeigenschaft erfüllt.
-
3A zeigt
eine Hashtabelle, die mit dem Heap 205 in 2A verbunden
sein kann. In 3A bildet eine Hashfunktion 305 die
Zeitpunkte aus dem Heap auf Speicherzonen ab. Man beachte, dass
die zum Darstellen der Abbildung der Hashfunktion verwendeten Pfeile
nur der besseren Sichtbarkeit dienen. In der bevorzugten Ausführungsform
nimmt die Hashfunktion einen Zeitpunkt und liefert einen Index der
Speicherzone in der Hashtabelle zurück. In 3A werden
die Zeitpunkte 2 (310) und 9 (315) auf die Speicherzone
1 (320) abgebildet, und die Zeitpunkte 5 (325)
und 6 (327) werden auf die Speicherzone 2 (330)
abgebildet. Die Speicherzone 1 (320) weist zwei Ereignislisten
auf, nämlich
eine Liste für
Ereignisse, die zum Zeitpunkt 9 auftreten (320A), und eine
Liste für
Ereignisse, die zum Zeitpunkt 2 auftreten (320B). Die Speicherzone
2 (330) weist zwei Ereignislisten auf, nämlich eine
Liste für
Ereignisse, die zum Zeitpunkt 5 auftreten (330A), und eine Liste
für Ereignisse,
die zum Zeitpunkt 6 auftreten (330B). Man beachte, dass
mehrere Zeitpunkte auf eine Speicherzone abgebildet werden können. Die geplanten
Zeitpunkte für
die Ereignisse in den Ereignislisten in der Speicherzone kennzeichnen,
welche Ereignisse an welchen Zeitpunkten erfolgen müssen.
-
In 3A zeigt
die Ereignisliste 330A zwei Ereignisse in der Liste, nämlich das
Ereignis 1 (332A) und das Ereignis 2 (332B). Die
Ereignisliste 330B hat keine Ereignisse in ihrer Ereignisliste;
dies wird durch den Nullzeiger 335 dargestellt. Dies kann
auftreten, falls ursprünglich
für den
Zeitpunkt 6 (332) geplante Ereignisse vorhanden waren,
diese Ereignisse jedoch aus der Planung entfernt wurden. In der
bevorzugten Ausführungsform ist
die Ereignisliste eine doppelt verkettete Liste, die man in beiden
Richtungen durchlaufen kann.
-
3B zeigt
die Hashtabelle in 3A nachdem ein neues Ereignis
geplant worden ist. In 3B ist ein neues Ereignis für den Zeitpunkt
5 geplant (325). Die Hashfunktion 305 bildet den
Zeitpunkt 5 (325) auf die Speicherzone 2 ab (330).
Da für den
Zeitpunkt 5 (325) bereits eine Ereignisliste in der Speicherzone
2 (330) vorliegt, wird in die Ereignisliste 330B ein
neues Ereignis 332C eingefügt.
-
In
der bevorzugten Ausführungsform
kennen die Ereignisse ihren Ort in der Ereignisliste. Das Entfernen
eines Ereignisses erfordert nur das Verändern der Zeiger der Ereignisse
vor und nach dem zu entfernenden Ereignis in der Ereignisliste. 7 zeigt diesen
Vorgang. Im Schritt 705 werden die Zeiger auf das entfernte
Ereignis von dem vorhergehenden Ereignis und dem folgenden Ereignis
in der Ereignisliste verändert.
Dadurch ist das Ereignis entfernt. (Man beachte, dass in der bevorzugten
Ausführungsform der
geplante Zeitpunkt auch dann nicht aus dem Heap entfernt wird, wenn
die Ereignisliste für
den geplanten Zeitpunkt des entfernten Ereignisses leer ist.) In
einer anderen Ausführungsform
kann man jedoch Ereignisse dadurch aus Ereignislisten entfernen, dass
man die Hashfunktion 305 dazu verwendet, die Speicherzone
zu finden, die die Ereignisliste für den Zeitpunkt des Ereignisses
enthält,
das zu entfernen ist, auf die passende Ereignisliste in der Speicherzone
zugreift und das Ereignis entfernt.
-
Existiert
für den
Zeitpunkt, für
den ein Ereignis eingefügt
wird, keine Ereignisliste, so kann der geplante Zeitpunkt in den
Heap eingefügt
werden. Wie dieses Einfügen
des neuen geplanten Zeitpunkts in den Heap vor sich geht, wird im
Weiteren anhand von 6 beschrieben.
-
Die
Erfindung kann mit dem in 4A und 4B dargestellten
Simulator arbeiten. Im Schritt 405 wird durch Prüfen des
Heaps festgestellt, ob noch irgendwelche Ereignisse zu simulieren
sind. Enthält
der Heap noch irgendwelche geplanten Zeitpunkte, so sind noch Ereignisse
zu simulieren. Neue Ereignisse können
in den Schritten 420, 430 und 440 geplant
werden. Fachleute können
jedoch erkennen, dass jedes beliebige System, in dem eine Ereignisplanung
erforderlich ist, jedoch keine Simulation, von der Erfindung profitieren
kann. Beispielsweise können
Rückrufe
(das Ausführen
von Softwareroutinen zu vorbestimmten geplanten Zeitpunkten) mit
Hilfe der Erfindung organisiert werden.
-
5 zeigt,
wie der Heap und die Speicherzonen außerhalb des Simulationszusammenhangs verwaltet
werden. Im Schritt 505 wird dem Ereignis ein geplanter
Zeitpunkt zugewiesen. Im Schritt 508 wird die Speicherzone
gesucht, die die Ereignisliste speichert, in die das Ereignis einzutragen
ist. Die Hashfunktion verwendet den geplanten Zeitpunkt des Ereignisses
zum Suchen der passenden Speicherzone. Im Schritt 510 wird
das Ereignis der Ereignisliste in der passenden Speicherzone zugefügt. Im Schritt 515 wird
der geplante Zeitpunkt des Ereignisses in den Heap eingetragen,
falls erforderlich (der geplante Zeitpunkt des Ereignisses kann
bereits früher
in den Heap eingetragen worden sein). Zum Eintragen des geplanten
Zeitpunkts des Ereignisses in den Heap muss man sicherstellen, dass
der Heap nach dem Eintragen des geplanten Zeitpunkts des Ereignisses
die Heapeigenschaft behält.
Die gestrichelte Linie 518 zeigt an, dass man die Schritte 505, 508, 510 und 515 für so viele
Ereignisse wie nötig wiederholen
kann. Ist der Heap einmal aufgebaut, so wird im Schritt 520 der
früheste
geplante Zeitpunkt aus dem Heap entnommen. Beim Entfernen des frühesten geplanten
Zeitpunkts muss man sicherstellen, dass der Heap nach dem Entfernen
des frühesten geplanten
Zeitpunkts die Heapeigenschaft behält. Dies ist im Schritt 522 dargestellt.
Im Schritt 525 wird die Speicherzone gesucht, die die Ereignisse
enthält, die
für den
frühesten
Zeitpunkt geplant sind. Schließlich
werden im Schritt 530 die für den frühesten Zeitpunkt geplanten
Ereignisse simuliert. Die gestrichelte Linie 535 zeigt
an, dass man die Schritte 520, 522, 525 und 530 so
lange wiederholen kann, bis der Heap geleert ist.
-
6 zeigt
den Vorgang, der zum Zufügen neuer
geplanter Ereignisse verwendet wird. 6 wird verwendet,
wenn neue Ereignisse geplant werden müssen, nachdem der Vorgang zum
Leeren des Heaps bereits begonnen hat. Effektiv ist 6 ein
Interrupt der Schleife aus den Schritten 520, 522, 525 und 530 in 5. 6 (und
ebenso 7 und 8) zielen nicht spezifisch auf
das Planen neuer Simulationsereignisse ab, sondern man kann wie
beschrieben den Ablauf in 6 auf das
Simulieren von Ereignissen anwenden. Im Schritt 605 wird
dem neuen Ereignis ein geplanter Zeitpunkt zugewiesen. Im Schritt 608 wird
die Speicherzone gesucht, die die Ereignisliste speichert, in die
das Ereignis einzutragen ist. Im Schritt 610 wird das neue
Ereignis der Ereignisliste in der gefundenen Speicherzone zugefügt. Im Entscheidungspunkt 615 prüft der Ablauf,
ob das neue Ereignis einen neuen geplanten Zeitpunkt in den Heap
eintragen muss. Muss ein neuer geplanter Zeitpunkt in den Heap eingetragen
werden, so wird im Schritt 620 der neu geplante Zeitpunkt
in den Heap eingefügt,
und im Schritt 625 werden die geplanten Zeitpunkte in einen
neuen Heap umorganisiert. Die gestrichelte Linie 630 zeigt,
dass man den Vorgang wiederholen kann, falls mehrere Ereignisse zu
planen sind.
-
8 zeigt,
wie Ereignisse verarbeitet werden, wenn im Simulator in 1 ihr
geplanter Zeitpunkt erreicht wird. Im Schritt 805 wird
ein geplanter Zeitpunkt aus dem Heap entnommen. Im Schritt 808 werden
die verbleibenden geplanten Zeitpunkte im Heap umorganisiert, damit
die Heapeigenschaft bestehen bleibt. Im Schritt 810 wird
die Speicherzone gesucht, die dem gewählten geplanten Zeitpunkt zugeordnet
ist. Im Entscheidungspunkt 815 wird die Speicherzone geprüft, um festzustellen,
ob eine Ereignisliste für
den geplanten Zeitpunkt vorliegt. Ist eine Ereignisliste für den geplanten
Zeitpunkt vorhanden, so werden im Schritt 820 die Ereignisse
in der Ereignisliste ausgeführt.
-
Die
Prinzipien der Erfindung wurden anhand einer bevorzugten Ausführungsform
beschrieben und erläutert.
Natürlich
kann man Anordnungen und Einzelheiten der Erfindung verändern, ohne
diese Prinzipien zu verlassen. Ich beanspruche alle Abwandlungen
und Veränderungen,
die in den Bereich der folgenden Ansprüche fallen.