-
GEBIET DER ERFINDUNG
-
Die vorliegende Erfindung bezieht sich allgemein auf Computersimulationen von Entwürfen integrierter Schaltungen und insbesondere auf ein Beschleunigen von Speicherdurchlaufsequenzen während einer Computersimulation und -überprüfung eines Mikroprozessorentwurfs vor der Herstellung.
-
HINTERGRUND
-
Simulieren und Überprüfen der Funktionalitäten eines Mikroprozessorentwurfs oder eines anderen Entwurfs einer integrierten Schaltung vor der Herstellung („Pre-Silicon” – Phase vor der Ausführung mit Silicium) sind wichtige Schritte, um sicherzustellen, dass der hergestellte Entwurf sich ordnungsgemäß verhalten wird. Wettbewerb innerhalb der Branche und weitere Faktoren können Druck auf Forscher und Hersteller ausüben, die Produktionszykluszeiten zu verkürzen. Eine Pre-Silicon-Simulation und -Überprüfung eines Entwurfs kann jedoch aufgrund des gewaltigen Umfangs möglicher zu untersuchender Testszenarios („Testfälle”) und der erforderlichen Zeit zum Simulieren jedes Testfalls zeitaufwändig sein.
-
Bei einem Gesichtspunkt der Pre-Silicon-Simulation und -Überprüfung eines Mikroprozessorentwurfs geht es um ein Simulieren von Funktionen innerhalb des Speichers des Mikroprozessors, beispielsweise Abrufvorgänge aus einem Hauptspeicher und Schreibvorgänge in einen Cachespeicher. Bei vielen dieser Simulationen werden eine oder mehrere Speicherdurchlaufsequenzen ausgeführt. Moderne Mikroprozessorentwürfe beinhalten normalerweise Mechanismen zum Ausführen von Speicherdurchlaufsequenzen, bei denen der Mikroprozessor durch einen Zielspeicher vorrückt und dabei jeweils eine Speicherposition liest und möglicherweise eine oder mehrere Funktionen mit den an jeder dieser Speicherpositionen enthaltenen Einträgen ausführt. Zum Beispiel kann ein Mikroprozessor Cachespeicher-Durchlaufsequenzen durch einen Ziel-Cachespeicher ausführen, beispielsweise Cachespeicher-Bereinigungssequenzen, bei denen der Mikroprozessor jede Cachespeicherposition im Ziel-Cachespeicher liest und Einträge aus diesen Cachespeicherpositionen entfernt. Speicherdurchlaufsequenzen können zwar eine große Zahl von Prozessorzyklen in Anspruch nehmen, moderne Mikroprozessoren sind jedoch dank ihrer hohen Taktraten in der Lage, Speicherdurchlaufsequenzen schnell auszuführen.
-
Beim Durchführen von Pre-Silicon-Simulationen von Mikroprozessorentwürfen, die große Speicher enthalten, beispielsweise Cache- oder Hauptspeicher, kann ein Simulieren von Speicherdurchlaufsequenzen durch diese Zielspeicher eine große Zahl von simulierten Prozessorzyklen verbrauchen. Ein simulierter Mikroprozessor, der simulierte Prozessorzyklen ausführt, ist jedoch deutlich langsamer als sein Hardware-Gegenstück. Das Durchführen von Pre-Silicon-Simulationen, um Speicherdurchlaufsequenzen und andere Mikroprozessorfunktionen zu testen, die ihre häufige Nutzung beinhalten, kann daher übermäßig lange dauern, möglicherweise in einem Maße, dass die Simulationen praktisch nicht durchführbar sind oder in einer eingeschränkten Weise durchgeführt werden müssen, wobei bei beidem die Gefahr besteht, dass Entwurfsprobleme in der Pre-Silicon-Phase unentdeckt bleiben.
-
Eine Möglichkeit zum Verringern der erforderlichen Testzeit, um Speicherdurchlaufsequenzen zu simulieren, wäre sinnvoll.
-
ZUSAMMENFASSUNG
-
Ausführungsformen der vorliegenden Erfindung stellen ein System, ein Verfahren und ein Programmprodukt zum Beschleunigen einer simulierten Speicherdurchlaufsequenz während einer von einem Computer durchgeführten Simulation bereit. In einer Ausführungsform weist das Verfahren ein Ausführen eines Simulationstestfalls auf, bei dem das Testen auf Teile eines simulierten Speichers beschränkt ist. Das Verfahren weist ferner ein Erkennen einer oder mehrerer Speicherpositionen in dem simulierten Speicher als dafür in Frage kommend auf, gültige Daten während einer Ausführung des Simulationstestfalls zu enthalten. Das Verfahren weist nach dem Beginn der simulierten Speicherdurchlaufsequenz, bei der eine simulierte Hardware nacheinander Speicherpositionen in dem simulierten Speicher verarbeitet, weiterhin ein Ermitteln auf, ob sich eine erkannte Speicherposition innerhalb einer angegebenen Anzahl von Speicherpositionen nach einer Speicherposition befindet, die von der simulierten Hardware zu verarbeiten ist. Als Antwort auf eine erkannte Speicherposition, die innerhalb der angegebenen Anzahl von Speicherpositionen nach der Speicherposition liegt, die von der simulierten Hardware zu verarbeiten ist, weist das Verfahren weiterhin ein Zulassen auf, dass die simulierte Hardware die Speicherposition verarbeitet. Als Antwort auf eine erkannte Speicherposition, die nicht innerhalb der angegebenen Anzahl von Speicherpositionen nach der Speicherposition liegt, die von der simulierten Hardware zu verarbeiten ist, weist das Verfahren weiterhin ein Vorrücken der simulierten Hardware auf eine nachfolgende Speicherposition in dem simulierten Speicher auf, bei der es sich um eine angegebene Zahl von Speicherpositionen vor einer erkannten Speicherposition handelt, und ein Zulassen, dass die simulierte Hardware die nachfolgende Speicherposition verarbeitet.
-
In einer weiteren Ausführungsform weist das Verfahren ein Ausführen eines Simulationstestfalls auf, bei dem das Testen auf Teile eines simulierten Speichers beschränkt ist. Das Verfahren weist ferner ein Erkennen einer oder mehrerer Speicherpositionen in dem simulierten Speicher als dafür in Frage kommend auf, gültige Daten während einer Ausführung des Simulationstestfalls zu enthalten. Das Verfahren weist nach dem Beginn der simulierten Speicherdurchlaufsequenz, bei der eine simulierte Hardware nacheinander Speicherpositionen in dem simulierten Speicher verarbeitet, weiterhin ein Ermitteln auf, ob es sich bei einer von der simulierten Hardware zu verarbeitenden Speicherposition um eine erkannte Speicherposition handelt. Als Antwort darauf, dass es sich bei der von der simulierten Hardware zu verarbeitenden Speicherposition um eine erkannte Speicherposition handelt, weist das Verfahren weiterhin ein Zulassen auf, dass die simulierte Hardware die Speicherposition verarbeitet. Als Antwort darauf, dass es sich bei der von der simulierten Hardware zu verarbeitenden Speicherposition nicht um eine erkannte Speicherposition handelt, weist das Verfahren weiterhin ein Vorrücken der simulierten Hardware auf eine erkannte Speicherposition und ein Zulassen auf, dass die simulierte Hardware die erkannte Speicherposition verarbeitet.
-
KURZBESCHREIBUNG DER VERSCHIEDENEN ANSICHTEN DER ZEICHNUNGEN
-
1 ist ein Funktionsblockschaubild eines Simulationssystems gemäß einer Ausführungsform der vorliegenden Erfindung.
-
2 ist ein Blockschaubild, das einen Testfall gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht, bei dem bekannt ist, welche Teile eines Ziel-Cachespeichers möglicherweise gültige Daten im Verlauf der Simulation enthalten.
-
3 ist ein Blockschaubild, das eine beschleunigte Speicherdurchlaufsequenz gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
4 ist ein Ablaufplan, der die Funktionsschritte einer beschleunigten Speicherdurchlaufsequenz gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
5 ist ein Ablaufplan, der die Funktionsschritte einer beschleunigten Speicherdurchlaufsequenz gemäß einer weiteren Ausführungsform der vorliegenden Erfindung veranschaulicht.
-
6 ist ein Blockschaubild von Hardware- und Software-Komponenten innerhalb und außerhalb des Computersystems von 1 gemäß einer Ausführungsform der vorliegenden Erfindung.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Kurz zusammengefasst, eine bevorzugte Ausführungsform der vorliegenden Erfindung wird in der Praxis im Zusammenhang mit der Durchführung von Pre-Silicon-Simulation und -Überprüfung eines Mikroprozessorentwurfs in einer Simulationsumgebung angewendet, wo der Mikroprozessorentwurf einen großen Ziel-Cachespeicher und einen Hardware-Mechanismus besitzt, um Cachespeicher-Durchlaufsequenzen durch den Ziel-Cachespeicher auszuführen. Beschrieben wird ein Testfall, bei dem während der Simulation des Testfalls bekannt ist, welche Teile des Ziel-Cachespeichers möglicherweise gültige Daten enthalten.
-
Eine herkömmliche Cachespeicher-Durchlaufsequenz, die während der Simulation des Testfalls ausgeführt wird, würde sequenziell durch den Ziel-Cachespeicher vorrücken, wobei der simulierte Mikroprozessor jede Cachespeicherposition verarbeitet, um zu ermitteln, ob eine Funktion an dem an der Cachespeicherposition enthaltenen Eintrag auszuführen ist, und dann etwaige zutreffende Funktionen an dem Eintrag auszuführen. Im Gegensatz dazu wird in der bevorzugten Ausführungsform der vorliegenden Erfindung die Cachespeicher-Durchlaufsequenz beschleunigt, indem Teile des Ziel-Cachespeichers übersprungen werden, von denen auf der Grundlage des gerade simulierten Testfalls bekannt ist, dass sie leer sind. Da der simulierte Mikroprozessor nur Cachespeicherpositionen in dem Ziel-Cachespeicher verarbeitet, von denen bekannt ist, dass sie möglicherweise gültige Daten enthalten, und nicht alle Cachespeicherpositionen in dem Ziel-Cachespeicher, kann die erforderliche Simulationszeit zum Abschließen der Cachespeicher-Durchlaufsequenz verringert werden.
-
Der Begriff „Cachespeicher”, wie er in dieser Darlegung verwendet wird, bezieht sich allgemein auf simulierte Mikroprozessor-Cachespeicher, einschließlich, ohne auf diese beschränkt zu sein, eines simulierten statischen Speicher mit wahlfreiem Zugriff wie L1-, L2- und L3-Cachespeicher. Beispielhafte Ausführungsformen der vorliegenden Erfindung werden zwar im Hinblick auf Cachespeicher und Cachespeicher-Durchlaufsequenzen beschrieben, andere Ausführungsformen können Speicherdurchlaufsequenzen jedoch durch andere Arten von Zielspeichern beschleunigen, wie beispielsweise eine simulierte Speichersteuereinheit, die eine Speicherdurchlaufsequenz durch simulierte Dual-Inline-Speichermodule ausführt.
-
Ausführungsformen der vorliegenden Erfindung werden nun ausführlich unter Bezugnahme auf die beiliegenden Zeichnungen beschrieben:
-
1 ist ein Funktionsblockschaubild eines Simulationssystems 100 gemäß einer Ausführungsform der vorliegenden Erfindung. Das Simulationssystem 100 beinhaltet ein Computersystem 110. Das Computersystem 110 beinhaltet eine Simulationsumgebung 112, ein Durchlaufsequenz-Steuerprogramm 114 und ein Testfalladressen-Suchprogramm 116, die zusammen einen Benutzer in die Lage versetzen, eine Pre-Silicon-Überprüfung und -Simulation von Entwürfen integrierter Schaltungen durchzuführen und simulierte Speicherdurchlaufsequenzen zu beschleunigen, die während dieser Simulationen gemäß Ausführungsformen der vorliegenden Erfindung ausgeführt werden. Bei der Simulationsumgebung 112 handelt es sich um eine Softwaresimulationsumgebung, die zum Beispiel eine Folge von Simulations- und Überprüfungswerkzeugen beinhaltet, die einen Benutzer beim Durchführen von Pre-Silicon-Simulation und -Überprüfung von Entwürfen integrierter Schaltungen unterstützen. Die Simulationsumgebung 112 ermöglicht einem Benutzer, Simulationsmodelle von Entwürfen integrierter Schaltungen zu laden und die Funktion dieser Entwürfe in verschiedenen Testfällen zu simulieren. Zum Beispiel kann ein Benutzer unter Verwendung der Simulationsumgebung 112 Simulationsmodelle eines Mikroprozessorentwurfs laden, der einen großen Cachespeicher und Hauptspeicher aufweist, simulieren, wie der Mikroprozessor Hauptspeichereinträge abruft und diese Einträge in den Cachespeicher schreibt, und auch simulieren, wie der Mikroprozessor Cachespeicher-Durchlaufsequenzen ausführt. Die Simulationsumgebung 112 kann zum Beispiel unter Verwendung im Handel erhältlicher Werkzeuge umgesetzt werden, beispielsweise der Simulations-Softwarepakete, die bei der Cadence Design Systems, Inc. in San Jose, Kalifornien, erhältlich sind. Allgemein kann es sich bei der Simulationsumgebung 112 um jede Software oder Kombination von Softwareprogrammen handeln, die einen Benutzer in die Lage versetzen, Entwürfe integrierter Schaltungen und Komponenten zu modellieren und Testfälle gemäß Ausführungsformen der vorliegenden Erfindung zu simulieren.
-
Bei dem Durchlaufsequenz-Steuerprogramm 114 handelt es sich um ein Softwaremodul, das von der Simulationsumgebung 112 aufgerufen wird. Das Durchlaufsequenz-Steuerprogramm 114 empfängt Daten, die Speicherdurchlaufsequenzen betreffen, die innerhalb der Simulationsumgebung 112 ausgeführt werden, und arbeitet so, dass Teile des Zielspeichers übersprungen werden, die auf der Grundlage des gerade simulierten Testfalls als leer bekannt sind, wie ausführlicher unter Bezugnahme auf 4 und 5 erläutert werden wird. Das Durchlaufsequenz-Steuerprogramm kann zum Beispiel in Form eines angepassten Moduls oder eines Plug-ins für die Simulationsumgebung 112 umgesetzt werden.
-
Bei dem Testfalladressen-Suchprogramm 116 handelt es sich um ein Softwaremodul, das von dem Durchlaufsequenz-Steuerprogramm 114 aufgerufen wird. Während einer Speicherdurchlaufsequenz erkennt das Testfalladressen-Suchprogramm 116 Teile eines Zielspeichers, von denen auf der Grundlage des gerade simulierten Testfalls bekannt ist, dass sie möglicherweise gültige Daten enthalten, wie ausführlicher unter Bezugnahme auf 4 und 5 erläutert werden wird. Das Testfalladressen-Suchprogramm 116 kann zum Beispiel auch in Form eines angepassten Moduls oder eines Plug-ins für die Simulationsumgebung 112 umgesetzt werden.
-
Das Computersystem 110 beinhaltet auch interne Komponenten 800 und externe Komponenten 900, und bei ihnen kann es sich zum Beispiel um einen Laptop-Computer, einen Desktop-Computer, einen spezialisierten Computerserver oder jedes andere dem Fachmann bekannte Computersystem handeln. Allgemein kann es sich bei dem Computersystem 110 um jede programmierbare Einheit handeln, wie ausführlicher unter Bezugnahme auf 6 beschrieben wird, oder um eine Kombination dieser Einheiten. In bestimmten Ausführungsformen stellt das Computersystem 110 ein Computersystem dar, das in einem Cluster zusammenwirkende Computer und Komponenten nutzt, um als ein einziger Verband nahtloser Ressourcen zu handeln, wenn darauf über ein Netzwerk, beispielsweise ein Nahbereichs-Netzwerk, ein Weitverkehrs-Netzwerk oder eine Kombination der beiden zugegriffen wird. Diese Umsetzung kann für Rechenzentren und für Cloud-Computing-Anwendungen bevorzugt werden.
-
2 ist ein Blockschaubild, das eine Simulation eines Testfalls gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht, bei dem bekannt ist, welche Teile eines Ziel-Cachespeichers möglicherweise gültige Daten im Verlauf der Simulation enthalten. In dieser Ausführungsform handelt es sich bei dem Ziel-Cachespeicher 204 um einen simulierten Cachespeicher, der gemäß einem n-fach satzassoziativen (n-way set associative) Cachespeicher-Zuordnungsschema einem simulierten Hauptspeicher zugeordnet wird, wobei es sich dabei um ein Cachespeicher-Zuordnungsschema handelt, das in vielen modernen Mikroprozessorentwürfen anzutreffen ist. In einem n-fach satzassoziativen Cachespeicher-Zuordnungsschema wird der Ziel-Cachespeicher 204 in mehrere Cachespeichersätze unterteilt, wobei jeder Cachespeichersatz n-fache Möglichkeiten bzw. „Wege” oder Cachespeicherpositionen enthält, in denen ein Hauptspeichereintrag gespeichert werden kann. Jede Speicheradresse in dem simulierten Hauptspeicher wird einem bestimmten Cachespeichersatz zugeordnet, sodass, wenn der simulierte Mikroprozessor auf eine bestimmte Hauptspeicheradresse zugreift, der an dieser Hauptspeicherposition enthaltene Eintrag in dem simulierten Cachespeicher nur an den n Cachespeicherpositionen innerhalb des Cachespeichersatzes gespeichert wird, denen er zugeordnet ist.
-
In der bevorzugten Ausführungsform wird eine Testfalladressentabelle 202 verwendet, um eine vergleichsweise kleine Teilmenge von Speicheradressen des simulierten Hauptspeichers zu speichern, die zum Testen ausgewählt wurden. Bei den Cachespeichersätzen 206a bis 206d handelt es sich um Cachespeichersätze, denen mindestens eine ausgewählte Hauptspeicheradresse in der Testfalladressentabelle 202 zugeordnet ist (dargestellt durch Pfeile). Es sollte beachtet werden, dass es sich bei 2 um eine vereinfachte Veranschaulichung eines Ziel-Cachespeichers 204 und einer Testfalladressentabelle 202 handelt. Der Ziel-Cachespeicher 204 kann mehr Cachespeichersätze enthalten, und die Testfalladressentabelle 202 kann mehr Hauptspeicheradressen enthalten als abgebildet, wie durch die Auslassungszeichen angegeben ist.
-
In der bevorzugten Ausführungsform erhält der simulierte Mikroprozessor während einer Simulation des Testfalls den Befehl, auf die simulierten Hauptspeicheradressen zuzugreifen, die in der Testfalladressentabelle 202 enthalten sind, sodass die Einträge an diesen Hauptspeicherpositionen in dem Ziel-Cachespeicher 204 an den n Cachespeicherpositionen innerhalb ihrer jeweils zugeordneten Cachespeichersätze gespeichert und daraus entfernt werden können. Abhängig von den Zielen eines bestimmten Testfalls kann ein Benutzer die in der Testfalladressentabelle 202 gespeicherten Hauptspeicheradressen auswählen, zulassen, dass die Simulation sie nach Zufallskriterien auswählt oder eine andere Auswahlmethode verwenden. Beispielsweise kann ein Ziel dieses Beispieltestfalls darin bestehen zu testen, wie sich die Cachespeicherlogik eines Mikroprozessorentwurfs verhält, wenn alle Cachespeicherpositionen in einem Cachespeichersatz mit gültigen Daten belegt sind und ein Opfereintrag zum Entfernen gewählt werden muss. In einem solchen Testfall wünscht ein Benutzer möglicherweise, Hauptspeicheradressen auszuwählen, von denen bekannt ist, dass sie denselben Cachespeichersätzen zugeordnet werden (wie beispielsweise in 2 gezeigt), sodass die Cachespeichersätze während der Simulation schneller mit gültigen Daten belegt werden und das Verhalten der Cachespeicherlogik beobachtet werden kann.
-
Da in dieser beispielhaften Ausführungsform ein n-fach satzassoziatives Cachespeicherschema von dem simulierten Mikroprozessor verwendet wird, können ungeachtet des Auswahlverfahrens der Hauptspeicheradressen nur diejenigen Cachespeichersätze in dem Ziel-Cachespeicher 204, die mindestens einer der ausgewählten Hauptspeicheradressen in der Testfalladressentabelle 202 zugeordnet sind, möglicherweise gültige Daten enthalten, wenn der simulierte Mikroprozessor während der Simulation auf diese Hauptspeicheradressen zugreift. Somit gibt es im Verlauf des Simulierens des Testfalls nur eine vergleichsweise kleine Zahl von Cachespeichersätzen, von deren n Cachespeicherpositionen bekannt ist, dass sie möglicherweise gültige Daten enthalten (Cachespeichersätze 206), während von der Mehrzahl der Cachespeichersätze in dem Ziel-Cachespeicher 204 bekannt ist, dass sie leer sind.
-
Zu anderen Ausführungsformen der vorliegenden Erfindung gehört ein Beschleunigen der Speicherdurchlaufsequenzen während der Simulationen von Testfällen, die andere Arten eines Zielspeichers enthalten. Allgemein kann es sich bei einem Ziel-Cachespeicher 204 um einen beliebigen simulierten Zielspeicher handeln; bei den Cachespeichersätzen 206 kann es sich um beliebige Teile dieses Speichers handeln, auf die das Testen beschränkt ist, sodass von Speicherpositionen innerhalb dieser Teile bekannt ist, dass sie möglicherweise gültige Daten während einer Simulation eines Testfalls enthalten; und die Testfalladressentabelle 202 kann beliebige Speicheradressen speichern, die Speicherpositionen entsprechen oder diese anderweitig erkennen, von denen bekannt ist, dass sie möglicherweise gültige Daten enthalten.
-
3 ist ein Blockschaubild, das eine beschleunigte Speicherdurchlaufsequenz gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht. In der veranschaulichten Ausführungsform wird eine beschleunigte Cachespeicher-Durchlaufsequenz während einer Simulation eines Testfalls ausgeführt, bei dem die Cachespeichersätze eines Ziel-Cachespeichers 304, die möglicherweise gültige Daten enthalten können (Cachespeichersätze 306a bis 306d), auf der Grundlage der simulierten Hauptspeicheradressen bekannt sind, die in einer Testfalladressentabelle 202 enthalten sind, wie zum Beispiel die Testfälle, die in Bezug auf die bevorzugte Ausführungsform von 2 erörtert wurden.
-
Während der Speicherdurchlaufsequenzen nutzt die Hardware, die die Speicherdurchlaufsequenz ausführt, im Allgemeinen eine Speicherdurchlauflogik 302. Die Speicherdurchlauflogik 302 pflegt ein Verzeichnis, das einen „NextLocationPointer”-Befehl enthält, der die Speicherposition in einem Zielspeicher angibt, die von der Hardware zu verarbeiten ist. Nachdem ein Verarbeiten einer Speicherposition abgeschlossen ist, wird der „NextLocationPointer” auf die nächste folgende Speicherposition zum Verarbeiten dieser Speicherposition heraufgesetzt, und die Prozedur wird für alle Speicherpositionen in dem Speicher wiederholt. In der in 3 dargestellten beispielhaften beschleunigten Cachespeicher-Durchlaufsequenz wird die Speicherdurchlauflogik 302 von dem Speicherdurchlauf-Steuerprogramm 114 gesteuert, sodass die leeren Cachespeichersätze des Ziel-Cachespeichers 304 übersprungen werden und der simulierte Mikroprozessor nur Cachespeicherpositionen innerhalb der Cachespeichersätze 306 verarbeitet. Auf der Grundlage der ausgewählten simulierten Hauptspeicheradressen, die in der Testfalladressentabelle 202 gespeichert sind, wird die Speicherdurchlauflogik 302 insbesondere von dem Durchlaufsequenz-Steuerprogramm 114 gesteuert, sodass der simulierte Mikroprozessor Cachespeicherpositionen innerhalb von Cachespeichersätzen verarbeitet, denen mindestens eine ausgewählte Hauptspeicheradresse zugeordnet ist (Cachespeichersätze 306), während er Cachespeicherpositionen innerhalb von Cachespeichersätzen überspringt, die nicht einer ausgewählten simulierten Hauptspeicheradresse zugeordnet sind.
-
4 ist ein Ablaufplan, der die Funktionsschritte für eine bevorzugte Ausführungsform der vorliegenden Erfindung veranschaulicht, bei der eine simulierte Cachespeicher-Durchlaufsequenz beschleunigt wird, indem alle Cachespeicherpositionen innerhalb von leeren Cachespeichersätzen eines Zielspeichers übersprungen werden. Modelle werden innerhalb der Simulationsumgebung 112 eines Mikroprozessorentwurfs geladen, der einen großen Ziel-Cachespeicher 304 mit einem n-fach satzassoziativen Cachespeicher-Zuordnungsschema zu einem Hauptspeicher sowie einen Hardwaremechanismus besitzt, um Cachespeicher-Durchlaufsequenzen durch den Ziel-Cachespeicher auszuführen. In dieser beispielhaften Ausführungsform wird ein Testfall innerhalb der Simulationsumgebung 112 simuliert, in der auf der Grundlage ausgewählter Hauptspeicheradressen, die in einer Testfalladressentabelle 202 enthalten sind und auf die durch den simulierten Mikroprozessor zugegriffen wird, bekannt ist, welche Cachespeichersätze in dem Ziel-Cachespeicher 304 möglicherweise gültige Daten enthalten.
-
In Schritt 402 erkennt das Durchlaufsequenz-Steuerprogramm 114 den Beginn einer simulierten Cachespeicher-Durchlaufsequenz während der Simulation des Testfalls. Das Durchlaufsequenz-Steuerprogramm 114 empfängt von der Simulationsumgebung 112 die von dem „NextLocationPointer” angegebene Cachespeicherposition („Zeigerposition”). Das Durchlaufsequenz-Steuerprogramm 114 ruft das Testfalladressen-Suchprogramm 116 auf.
-
In Schritt 404 ruft das Testfalladressen-Suchprogramm 116 aus der Testfalladressentabelle 202 die simulierten Hauptspeicheradressen ab, die für den bestimmten Testfall ausgewählt wurden. In Schritt 406 erkennt das Testfalladressen-Suchprogramm 116 die Cachespeicherpositionen innerhalb der Cachespeichersätze, denen jede ausgewählte Hauptspeicheradresse zugeordnet wird („möglicherweise gültige Cachespeicherpositionen”). Das Testfalladressen-Suchprogramm 116 übergibt diese Daten an das Durchlaufsequenz-Steuerprogramm 114.
-
In Schritt 408 ermittelt das Durchlaufsequenz-Steuerprogramm 114, ob es sich bei der von dem simulierten Mikroprozessor zu verarbeitenden Cachespeicherposition um eine möglicherweise gültige Cachespeicherposition handelt. Dazu vergleicht das Durchlaufsequenz-Steuerprogramm 114 die möglicherweise gültigen Cachespeicherpositionen mit der Zeigerposition und stellt fest, ob eine der möglicherweise gültigen Cachespeicherpositionen mit der Zeigerposition übereinstimmt.
-
Wenn die Zeigerposition nicht mit einer möglicherweise gültigen Cachespeicherposition übereinstimmt, setzt das Durchlaufsequenz-Steuerprogramm 114 in Schritt 410 den „NextLocationPointer” auf die nächste möglicherweise gültige Cachespeicherposition, die der Zeigerposition folgt. In Schritt 412 gestattet das Durchlaufsequenz-Steuerprogramm 114 dem simulierten Mikroprozessor, die neue Zeigerposition zu verarbeiten und dann den „NextLocationPointer” auf die nächste folgende Cachespeicherposition heraufzusetzen.
-
Wenn in Schritt 408 die Zeigerposition nicht mit einer möglicherweise gültigen Position übereinstimmt, ändert das Durchlaufsequenz-Steuerprogramm 114 den „NextLocationPointer” nicht. In Schritt 412 gestattet das Durchlaufsequenz-Steuerprogramm 114 dann dem simulierten Mikroprozessor, die aktuelle Zeigerposition zu verarbeiten und danach den „NextLocationPointer” auf die nächste folgende Cachespeicherposition heraufzusetzen.
-
In Schritt 414 ermittelt das Durchlaufsequenz-Steuerprogramm 114, ob alle möglicherweise gültigen Cachespeicherpositionen in dem Ziel-Cachespeicher von dem simulierten Mikroprozessor verarbeitet worden sind. Das Durchlaufsequenz-Steuerprogramm 114 kann beispielsweise ermitteln, ob es etwaige möglicherweise gültige Cachespeicherpositionen gibt, deren Position nach der in Schritt 412 verarbeiteten möglicherweise gültigen Cachespeicherposition liegt. Wenn das Durchlaufsequenz-Steuerprogramm 114 feststellt, dass alle möglicherweise gültigen Cachespeicherpositionen nicht von dem simulierten Mikroprozessor verarbeitet wurden, wiederholen sich die Funktionsschritte erneut ab Schritt 408. Wenn das Durchlaufsequenz-Steuerprogramm 114 feststellt, dass alle möglicherweise gültigen Cachespeicherpositionen von dem simulierten Mikroprozessor verarbeitet wurden, setzt das Durchlaufsequenz-Steuerprogramm 114 in Schritt 416 den „NextLocationPointer” auf die letzte Cachespeicherposition im Ziel-Cachespeicher 304, und die Funktionsschritte dieser Ausführungsform enden.
-
5 ist ein Ablaufplan, der die Funktionsschritte für eine Ausführungsform der vorliegenden Erfindung veranschaulicht, bei der eine simulierte Cachespeicher-Durchlaufsequenz beschleunigt wird, indem einige Cachespeicherpositionen innerhalb von leeren Cachespeichersätzen eines Zielspeichers übersprungen werden, dagegen aber nicht alle Cachespeicherpositionen innerhalb von leeren Cachespeichersätzen übersprungen werden. Diese Ausführungsform beruht auf demselben Testfall wie dem mit Bezug auf 4 erörterten und kann dort verwendet werden, wo ein Benutzer wünscht, simulierte Cachespeicher-Durchlaufsequenzen zu beschleunigen, wo er aber auch zu testen wünscht, wie der simulierte Mikroprozessor Cachespeicherpositionen verarbeitet, von denen bekannt ist, dass sie keine gültigen Daten enthalten. Ein Benutzer möchte zum Beispiel möglicherweise testen, ob der simulierte Mikroprozessor während einer Cachespeicher-Durchlaufsequenz ordnungsgemäß vom Verarbeiten von Cachespeicherpositionen, die keine gültigen Daten enthalten, zum Verarbeiten von Cachespeicherpositionen, die gültige Daten enthalten, übergeht. Die Funktionsschritte 502, 504 und 506 sind gleichwertig mit den Funktionsschritten 402, 404 bzw. 406 von 4. Dementsprechend wird bezüglich einer Erklärung dieser Funktionsschritte auf die Erörterung von 4 verwiesen.
-
In Schritt 508 dieser Ausführungsform ermittelt das Durchlaufsequenz-Steuerprogramm 114, ob eine möglicherweise gültige Cachespeicherposition oder das Ende des Ziel-Cachespeichers 304 innerhalb einer angegebenen Anzahl von Cachespeicherpositionen nach der Cachespeicherposition liegt, die von dem simulierten Mikroprozessor zu verarbeiten ist. Dazu vergleicht das Durchlaufsequenz-Steuerprogramm 114 die möglicherweise gültigen Cachespeicherpositionen mit der Zeigerposition und stellt fest, ob eine möglicherweise gültige Cachespeicherposition oder die letzte Cachespeicherposition in dem Ziel-Cachespeicher 304 innerhalb einer angegebenen Anzahl von Cachespeicherpositionen nach der Zeigerposition liegt. Die angegebene Zahl kann von einem Benutzer vorkonfiguriert werden.
-
Wenn eine möglicherweise gültige Cachespeicherposition oder die letzte Cachespeicherposition in dem Ziel-Cachespeicher 304 innerhalb der angegebenen Anzahl von Cachespeicherpositionen nach der Zeigerposition liegt, ändert das Durchlaufsequenz-Steuerprogramm 114 den „NextLocationPointer” nicht. In Schritt 510 gestattet das Durchlaufsequenz-Steuerprogramm 114 dann dem simulierten Mikroprozessor, die aktuelle Zeigerposition zu verarbeiten und danach den „NextLocationPointer” auf die nächste folgende Cachespeicherposition heraufzusetzen.
-
Wenn eine möglicherweise gültige Cachespeicherposition oder die letzte Cachespeicherposition in dem Ziel-Cachespeicher 304 nicht innerhalb der angegebenen Anzahl von Cachespeicherpositionen nach der Zeigerposition liegt, ermittelt das Durchlaufsequenz-Steuerprogramm 114 in Schritt 512, ob alle möglicherweise gültigen Cachespeicherpositionen von dem simulierten Mikroprozessor verarbeitet worden sind. Das Durchlaufsequenz-Steuerprogramm 114 kann beispielsweise ermitteln, ob es etwaige möglicherweise gültige Cachespeicherpositionen gibt, deren Position nach der Zeigerposition liegt.
-
Wenn das Durchlaufsequenz-Steuerprogramm 114 feststellt, dass alle möglicherweise gültigen Cachespeicherpositionen von dem simulierten Mikroprozessor verarbeitet wurden, setzt das Durchlaufsequenz-Steuerprogramm 114 in Schritt 514 den „NextLocationPointer” auf eine Cachespeicherposition, bei der es sich um eine angegebene Zahl von Cachespeicherpositionen vor der letzten Cachespeicherposition in dem Ziel-Cachespeicher 304 handelt. Die angegebene Zahl, wie sie in diesem Schritt verwendet wird, kann gleich der in Schritt 508 verwendeten angegebenen Zahl sein. In Schritt 510 gestattet das Durchlaufsequenz-Steuerprogramm 114 dann dem simulierten Mikroprozessor, die neue Zeigerposition zu verarbeiten und danach den „NextLocationPointer” auf die nächste folgende Cachespeicherposition heraufzusetzen.
-
Wenn das Durchlaufsequenz-Steuerprogramm 114 in Schritt 512 feststellt, dass nicht alle möglicherweise gültigen Cachespeicherpositionen von dem simulierten Mikroprozessor verarbeitet wurden, setzt das Durchlaufsequenz-Steuerprogramm 114 in Schritt 516 den „NextLocationPointer” auf eine Cachespeicherposition, bei der es sich um eine angegebene Zahl von Cachespeicherpositionen vor der nächsten möglicherweise gültigen Cachespeicherposition handelt, die auf die Zeigerposition folgt. Die angegebene Zahl, wie sie in diesem Schritt verwendet wird, kann gleich der in Schritt 508 verwendeten angegebenen Zahl sein. In Schritt 510 gestattet das Durchlaufsequenz-Steuerprogramm 114 dann dem simulierten Mikroprozessor, die neue Zeigerposition zu verarbeiten und danach den „NextLocationPointer” auf die nächste folgende Cachespeicherposition heraufzusetzen.
-
In Schritt 518 ermittelt das Durchlaufsequenz-Steuerprogramm 114, ob die simulierte Cachespeicher-Durchlaufsequenz das Ende des Ziel-Cachespeichers 304 erreicht hat. Beispielsweise kann das Durchlaufsequenz-Steuerprogramm 114 ermitteln, ob es sich bei der in Schritt 510 zuletzt von dem simulierten Mikroprozessor verarbeiteten Cachespeicherposition um die letzte Cachespeicherposition in dem Ziel-Cachespeicher 304 handelt. Wenn das Durchlaufsequenz-Steuerprogramm 114 feststellt, dass die simulierte Cachespeicher-Durchlaufsequenz das Ende des Ziel-Cachespeichers 304 nicht erreicht hat, wiederholen sich die Funktionsschritte dieser Ausführungsform ab Schritt 508. Wenn das Durchlaufsequenz-Steuerprogramm 114 feststellt, dass die simulierte Cachespeicher-Durchlaufsequenz das Ende des Ziel-Cachespeichers 304 erreicht hat, enden die Funktionsschritte dieser Ausführungsform.
-
Die Funktionsschritte 402 bis 416 von 4 und die Funktionsschritte 502 bis 518 von 5 sind eine veranschaulichende Darstellung von zwei oder mehr Ausführungsformen der vorliegenden Erfindung. Es versteht sich, dass der Inhalt jedes Schritts ebenso wie die Reihenfolge der Vorgehensweise geändert werden können, ohne vom Geist und dem beabsichtigten Geltungsbereich der vorliegenden Erfindung abzuweichen. Darüber hinaus veranschaulichen 4 und 5 eine Beschleunigung einer einzelnen Speicherdurchlaufsequenz und wurden im Hinblick darauf erläutert. Es versteht sich, dass während der Simulation eines Testfalls mehrere Speicherdurchlaufsequenzen begonnen werden können und dass jede Speicherdurchlaufsequenz gemäß Ausführungsformen der vorliegenden Erfindung beschleunigt werden kann.
-
6 zeigt ein Blockschaubild von internen Komponenten 800 und externen Komponenten 900 des Computersystems 110 gemäß einer veranschaulichenden Ausführungsform der vorliegenden Erfindung. Es sollte verständlich sein, dass 6 eine Veranschaulichung von nur einer Umsetzung bereitstellt und keinerlei Einschränkungen im Hinblick auf die Umgebungen bedeutet, in denen unterschiedliche Ausführungsformen umgesetzt werden können. Auf der Grundlage von Ausgestaltungs- und Umsetzungsanforderungen können viele Änderungen an den dargestellten Umgebungen vorgenommen werden.
-
Das Computersystem 110, das interne Komponenten 800 und externe Komponenten 900 aufweist, steht stellvertretend für jede elektronische Einheit, die zum Ausführen von maschinenlesbaren Programmbefehlen in der Lage ist. Zu Beispielen von Computersystemen, -umgebungen und/oder -konfigurationen, die durch das Computersystem 110 vertreten sein können, gehören, ohne auf diese beschränkt zu sein, Personal-Computer-Systeme, Server-Computersysteme, Thin Clients, Thick Clients, Laptop-Einheiten, Mehrfachprozessorsysteme, Systeme auf der Grundlage von Mikroprozessoren, Netzwerk-PCs, Kleincomputersysteme und verteilte Cloud-Computing-Umgebungen, die jedes der obigen Systeme bzw. jede der obigen Einheiten beinhalten.
-
Die internen Komponenten 800 beinhalten einen oder mehrere Prozessoren 820, einen oder mehrere computerlesbare RAM 822 und einen oder mehrere computerlesbare ROM 824 an einem oder mehreren Bussen 826, ein oder mehrere Betriebssysteme 828 und eine oder mehrere computerlesbare materielle Speichereinheiten 830. Das eine oder die mehreren Betriebssysteme 828, die Simulationsumgebung 112 und die Programme 114 und 116 in dem Computersystem 110 sind in einer oder mehreren der jeweiligen computerlesbaren materiellen Speichereinheiten 830 zur Ausführung durch einen oder mehrere der jeweiligen Prozessoren 820 über einen oder mehrere der jeweiligen RAM 822 (die üblicherweise einen Cachespeicher beinhalten) gespeichert. Bei der in 6 veranschaulichten Ausführungsform handelt es sich bei jeder der computerlesbaren materiellen Speichereinheiten 830 um eine Magnetplatten-Speichereinheit einer internen Festplatte. Alternativ handelt es sich bei jeder der computerlesbaren materiellen Speichereinheiten 830 um eine Halbleiterspeichereinheit wie beispielsweise den ROM 824, einen EPROM, Flash-Speicher oder jede andere computerlesbare materielle Speichereinheit, die ein Computerprogramm und digitale Daten speichern kann.
-
Die internen Komponenten 800 beinhalten auch ein Lese-/Schreiblaufwerk oder eine Lese-/Schreibschnittstelle 832 zum Lesen von und zum Schreiben auf eine oder mehrere computerlesbare materielle Speichereinheiten 936 wie beispielsweise eine CD-ROM, DVD, einen Speicherstick, ein Magnetband, einen magnetischen Datenträger, einen optischen Datenträger oder eine Halbleiterspeichereinheit. Die Simulationsumgebung 112 und die Programme 114 und 116 in dem Computersystem 110 können auf einer oder mehreren der jeweiligen tragbaren computerlesbaren materiellen Speichereinheiten 936 gespeichert sein, über das jeweilige Lese-/Schreiblaufwerk oder die Lese-/Schreibschnittstelle 832 gelesen werden und in die jeweiligen materiellen Speichereinheiten 830 geladen werden.
-
Die internen Komponenten 800 beinhalten auch Netzwerkadapter oder -Schnittstellen 836 wie beispielsweise TCP/IP-Adapterkarten, drahtlose Wi-Fi-Schnittstellenkarten oder drahtlose 3G- oder 4G-Schnittstellenkarten oder andere drahtgebundene oder drahtlose Datenübertragungsverbindungen. Die Simulationsumgebung 112 und die Programme 114 und 116 in dem Computersystem 110 können in das Computersystem 110 von einem externen Computer über ein Netzwerk (beispielsweise das Internet, ein Nahbereichs-Netzwerk oder ein anderes Weitverkehrs-Netzwerk) und jeweilige Netzwerkadapter oder -schnittstellen 836 heruntergeladen werden. Von den Netzwerkadaptern oder -schnittstellen 836 werden die Simulationsumgebung 112 und die Programme 114 und 116 in dem Computersystem 110 in materielle Speichereinheiten 830 geladen. Das Netzwerk kann Kupferdrähte, Lichtwellenleiter, eine drahtlose Übertragung, Router, Firewalls, Vermittlungsstellen, Gateway-Computer und/oder Rand-Server (edge servers) aufweisen.
-
Die externen Komponenten 900 können einen Computeranzeigebildschirm 920, eine Tastatur 930 und eine Maus 934 beinhalten. Die externen Komponenten 900 können auch berührungsempfindliche Bildschirme, virtuelle Tastaturen, Touch Pads, Zeigeeinheiten und andere Einheiten einer Schnittstelle zum Menschen beinhalten. Die internen Komponenten 800 beinhalten Einheitentreiber 840, die eine Schnittstelle zu dem Computeranzeigebildschirm 920, der Tastatur 930 und der Computermaus 934 bilden. Die Einheitentreiber 840, das Lese-/Schreiblaufwerk oder die Lese-/Schreibschnittstelle 832 und der Netzwerkadapter oder die Netzwerkschnittstelle 836 weisen Hardware und (in den materiellen Speichereinheiten 830 und/oder dem ROM 824 gespeicherte) Software auf.
-
Gesichtspunkte der vorliegenden Erfindung wurden mit Bezug zu Blockschaubildern und/oder Ablaufplan-Veranschaulichungen von Verfahren, Vorrichtungen (einem System) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufplan-Veranschaulichungen und/oder Blockschaubilder und Kombinationen der Blöcke in den Ablaufplan-Veranschaulichungen und/oder Blockschaubildern durch Computerbefehle umgesetzt werden können. Diese Computerbefehle können einem Prozessor eines Universalcomputers, eines Spezialcomputers oder anderer programmierbarer Datenverarbeitungsvorrichtungen bereitgestellt werden, sodass eine Maschine in der Weise hervorgebracht wird, dass die Befehle, die über den Prozessor des Computers oder anderer programmierbarer Datenverarbeitungsvorrichtungen ausgeführt werden, Mittel zum Umsetzen der Funktionen/Handlungen schaffen, die in dem Block oder den Blöcken der Ablaufpläne und/oder Blockschaltbilder festgelegt sind.
-
Die vorgenannten Programme können in jeder Kombination einer oder mehrerer Programmiersprachen geschrieben sein, darunter hardwarenahe, Hoch-, objektorientierte oder nicht objektorientierte Sprachen wie beispielsweise Java, Smalltalk, C und C++. Der Programmcode kann vollständig auf dem Computer eines Benutzers, teilweise auf dem Computer eines Benutzers, als unabhängiges Software-Paket, teilweise auf dem Computer des Benutzers und teilweise auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In dem letztgenannten Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers über jede Art von Netzwerk verbunden sein, darunter ein Nahbereichs-Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann zu einem externen Computer hergestellt werden (beispielsweise über das Internet unter Verwendung eines Internet-Dienstanbieters). Alternativ können die Funktionen der vorgenannten Programme ganz oder teilweise durch Computerschaltungen oder andere Hardware (nicht gezeigt) umgesetzt werden.
-
Die vorstehende Beschreibung von verschiedenen Ausführungsformen der vorliegenden Erfindung wurde zum Zweck der Veranschaulichung und Beschreibung vorgelegt. Sie ist nicht als erschöpfende Darstellung zu verstehen, noch dazu gedacht, die Erfindung auf die offenbarte genaue Form zu beschränken. Viele Änderungen und Varianten der vorliegenden Erfindung sind möglich. Es ist beabsichtigt, dass diese Änderungen und Varianten, die für einen Fachmann auf dem Gebiet der Erfindung offensichtlich sein können, in dem durch die anhängenden Ansprüche definierten Geltungsbereich enthalten sind.