DE102013202060A1 - Beschleunigung von Speicherdurchlaufsequenzen während einer Simulation - Google Patents

Beschleunigung von Speicherdurchlaufsequenzen während einer Simulation Download PDF

Info

Publication number
DE102013202060A1
DE102013202060A1 DE102013202060A DE102013202060A DE102013202060A1 DE 102013202060 A1 DE102013202060 A1 DE 102013202060A1 DE 102013202060 A DE102013202060 A DE 102013202060A DE 102013202060 A DE102013202060 A DE 102013202060A DE 102013202060 A1 DE102013202060 A1 DE 102013202060A1
Authority
DE
Germany
Prior art keywords
memory
simulated
memory location
hardware
location
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Ceased
Application number
DE102013202060A
Other languages
English (en)
Inventor
David W. Cummings
Douglas A. MacKay
Vasantha R. Vuyyuru
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE102013202060A1 publication Critical patent/DE102013202060A1/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/398Design verification or optimisation, e.g. using design rule check [DRC], layout versus schematics [LVS] or finite element methods [FEM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

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 wird ein Simulationstestfall ausgeführt, und eine oder mehrere Speicherpositionen in dem simulierten Speicher als dafür in Frage kommend erkannt, gültige Daten zu enthalten. Nach dem Beginn der simulierten Speicherdurchlaufsequenz wird ermittelt, ob sich eine erkannte Speicherposition innerhalb einer angegebenen Anzahl von Speicherpositionen nach einer Speicherposition befindet, die von der simulierten Hardware während der simulierten Speicherdurchlaufsequenz zu verarbeiten sind. Wenn sich eine erkannte Speicherposition innerhalb der angegebenen Anzahl befindet, wird der simulierten Hardware gestattet, die Speicherposition zu verarbeiten. Wenn sich eine erkannte Speicherposition nicht innerhalb der angegebenen Anzahl befindet, wird die simulierte Hardware auf eine folgende Speicherposition vorgerückt und ihr wird gestattet, die folgende Speicherposition zu verarbeiten.

Description

  • 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.

Claims (12)

  1. Verfahren zum Beschleunigen einer simulierten Speicherdurchlaufsequenz während einer von einem Computer durchgeführten Simulation, wobei das Verfahren aufweist: Ausführen eines Simulationstestfalls, bei dem das Testen auf Teile eines simulierten Speichers beschränkt ist; Erkennen einer oder mehrerer Speicherpositionen in dem simulierten Speicher als dafür in Frage kommend, gültige Daten während einer Ausführung des Simulationstestfalls zu enthalten; nach dem Beginn der simulierten Speicherdurchlaufsequenz, bei der eine simulierte Hardware nacheinander Speicherpositionen in dem simulierten Speicher verarbeitet, Ermitteln, 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, Zulassen, dass die simulierte Hardware die Speicherposition verarbeitet; und 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, Vorrücken der simulierten Hardware zu einer nachfolgenden Speicherposition in dem simulierten Speicher, bei der es sich um eine angegebene Zahl von Speicherpositionen vor einer erkannten Speicherposition handelt, und Zulassen, dass die simulierte Hardware die nachfolgende Speicherposition verarbeitet.
  2. Verfahren nach Anspruch 1, wobei die simulierte Hardware ein Verzeichnis pflegt, das einen Zeiger enthält, der die Speicherposition in dem simulierten Speicher angibt, die von der simulierten Hardware zu verarbeiten ist, und wobei das Vorrücken der simulierten Hardware auf eine folgende Speicherposition ein Setzen des Zeigers auf die folgende Speicherposition aufweist.
  3. Verfahren nach Anspruch 1, wobei die simulierte Hardware eine oder mehrere simulierte Mikroprozessorkomponenten aufweist.
  4. Verfahren nach Anspruch 1, wobei es sich bei dem simulierten Speicher um einen simulierten Cachespeicher handelt.
  5. Computersystem zum Beschleunigen einer simulierten Speicherdurchlaufsequenz während einer von dem Computersystem durchgeführten Simulation, wobei das Computersystem einen oder mehrere Prozessoren, einen oder mehrere computerlesbare Speicher, eine oder mehrere computerlesbare materielle Speichereinheiten und Programmbefehle aufweist, die auf mindestens einer der einen oder mehreren Speichereinheiten gespeichert sind und die, wenn sie von mindestens einem der einen oder mehreren Prozessoren über mindestens einen der einen oder mehreren Speicher ausgeführt werden, das Verfahren von Anspruch 1 ausführen.
  6. Verfahren zum Beschleunigen einer simulierten Speicherdurchlaufsequenz während einer von einem Computer durchgeführten Simulation, wobei das Verfahren aufweist: Ausführen eines Simulationstestfalls, bei dem das Testen auf Teile eines simulierten Speichers beschränkt ist; Erkennen einer oder mehrerer Speicherpositionen in dem simulierten Speicher als dafür in Frage kommend, gültige Daten während einer Ausführung des Simulationstestfalls zu enthalten; nach dem Beginn der simulierten Speicherdurchlaufsequenz, bei der eine simulierte Hardware nacheinander Speicherpositionen in dem simulierten Speicher verarbeitet, Ermitteln, 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, Zulassen, dass die simulierte Hardware die Speicherposition verarbeitet; und als Antwort darauf, dass es sich bei der von der simulierten Hardware zu verarbeitenden Speicherposition nicht um eine erkannte Speicherposition handelt, Vorrücken der simulierten Hardware zu einer erkannten Speicherposition und Zulassen, dass die simulierte Hardware die erkannte Speicherposition verarbeitet.
  7. Verfahren nach Anspruch 6, wobei die simulierte Hardware ein Verzeichnis pflegt, das einen Zeiger enthält, der die Speicherposition in dem simulierten Speicher angibt, die von der simulierten Hardware zu verarbeiten ist, und wobei das Vorrücken der simulierten Hardware auf eine erkannte Speicherposition ein Setzen des Zeigers auf die erkannte Speicherposition aufweist.
  8. Verfahren nach Anspruch 6, wobei die simulierte Hardware eine oder mehrere simulierte Mikroprozessorkomponenten aufweist.
  9. Verfahren nach Anspruch 6, wobei es sich bei dem simulierten Speicher um einen simulierten Cachespeicher handelt.
  10. Computersystem zum Beschleunigen einer simulierten Speicherdurchlaufsequenz während einer von dem Computersystem durchgeführten Simulation, wobei das Computersystem einen oder mehrere Prozessoren, einen oder mehrere computerlesbare Speicher, eine oder mehrere computerlesbare materielle Speichereinheiten und Programmbefehle aufweist, die auf mindestens einer der einen oder mehreren Speichereinheiten gespeichert sind und die, wenn sie von mindestens einem der einen oder mehreren Prozessoren über mindestens einen der einen oder mehreren Speicher ausgeführt werden, das Verfahren von Anspruch 6 ausführen.
  11. Computerprogrammprodukt zum Beschleunigen einer simulierten Speicherdurchlaufsequenz während einer von einem Computer durchgeführten Simulation, wobei das Computerprogrammprodukt aufweist: eine oder mehrere computerlesbare materielle Speichereinheiten und Programmbefehle, die auf mindestens einer der einen oder mehreren Speichereinheiten gespeichert sind, wobei die Programmbefehle aufweisen: Programmbefehle zum Ausführen eines Simulationstestfalls, bei dem das Testen auf Teile eines simulierten Speichers beschränkt ist; Programmbefehle zum Erkennen einer oder mehrerer Speicherpositionen in dem simulierten Speicher als dafür in Frage kommend, gültige Daten während einer Ausführung des Simulationstestfalls zu enthalten; Programmbefehle, um nach dem Beginn der simulierten Speicherdurchlaufsequenz, bei der eine simulierte Hardware nacheinander Speicherpositionen in dem simulierten Speicher verarbeitet, zu ermitteln, ob sich eine erkannte Speicherposition innerhalb einer angegebenen Anzahl von Speicherpositionen nach einer Speicherposition befindet, die von der simulierten Hardware zu verarbeiten ist; Programmbefehle, um 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, zuzulassen, dass die simulierte Hardware die Speicherposition verarbeitet; und Programmbefehle, um 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, die simulierte Hardware auf eine nachfolgende Speicherposition in dem simulierten Speicher vorzurücken, bei der es sich um eine angegebene Zahl von Speicherpositionen vor einer erkannten Speicherposition handelt, und um zuzulassen, dass die simulierte Hardware die nachfolgende Speicherposition verarbeitet.
  12. Computerprogrammprodukt zum Beschleunigen einer simulierten Speicherdurchlaufsequenz während einer von einem Computer durchgeführten Simulation, wobei das Computerprogrammprodukt aufweist: eine oder mehrere computerlesbare materielle Speichereinheiten und Programmbefehle, die auf mindestens einer der einen oder mehreren Speichereinheiten gespeichert sind, wobei die Programmbefehle aufweisen: Programmbefehle zum Ausführen eines Simulationstestfalls, bei dem das Testen auf Teile eines simulierten Speichers beschränkt ist; Programmbefehle zum Erkennen einer oder mehrerer Speicherpositionen in dem simulierten Speicher als dafür in Frage kommend, gültige Daten während einer Ausführung des Simulationstestfalls zu enthalten; Programmbefehle, um nach dem Beginn der simulierten Speicherdurchlaufsequenz, bei der eine simulierte Hardware nacheinander Speicherpositionen in dem simulierten Speicher verarbeitet, zu ermitteln, ob es sich bei einer von der simulierten Hardware zu verarbeitenden Speicherposition um eine erkannte Speicherposition handelt; Programmbefehle, um als Antwort darauf, dass es sich bei der von der simulierten Hardware zu verarbeitenden Speicherposition um eine erkannte Speicherposition handelt, zuzulassen, dass die simulierte Hardware die Speicherposition verarbeitet; und Programmbefehle, um als Antwort darauf, dass es sich bei der von der simulierten Hardware zu verarbeitenden Speicherposition nicht um eine erkannte Speicherposition handelt, die simulierte Hardware auf eine erkannte Speicherposition vorzurücken und zuzulassen, dass die simulierte Hardware die erkannte Speicherposition verarbeitet.
DE102013202060A 2012-02-22 2013-02-08 Beschleunigung von Speicherdurchlaufsequenzen während einer Simulation Ceased DE102013202060A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/401,922 US10394998B2 (en) 2012-02-22 2012-02-22 Acceleration of memory walking sequences during simulation
US13/401,922 2012-02-22

Publications (1)

Publication Number Publication Date
DE102013202060A1 true DE102013202060A1 (de) 2013-08-22

Family

ID=48048673

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102013202060A Ceased DE102013202060A1 (de) 2012-02-22 2013-02-08 Beschleunigung von Speicherdurchlaufsequenzen während einer Simulation

Country Status (4)

Country Link
US (1) US10394998B2 (de)
CN (1) CN103324515B (de)
DE (1) DE102013202060A1 (de)
GB (1) GB2501589A (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10394998B2 (en) 2012-02-22 2019-08-27 International Business Machines Corporation Acceleration of memory walking sequences during simulation
CN105337801B (zh) * 2015-11-10 2018-07-31 上海斐讯数据通信技术有限公司 一种适用于交换机协议的基于状态机的测试用例设计方法
GB2560336B (en) 2017-03-07 2020-05-06 Imagination Tech Ltd Address generators for verifying integrated circuit hardware designs for cache memory
US11281560B2 (en) * 2019-03-19 2022-03-22 Microsoft Technology Licensing, Llc Input/output data transformations when emulating non-traced code with a recorded execution of traced code
US11782816B2 (en) * 2019-03-19 2023-10-10 Jens C. Jenkins Input/output location transformations when emulating non-traced code with a recorded execution of traced code
US10949332B2 (en) 2019-08-14 2021-03-16 Microsoft Technology Licensing, Llc Data race analysis based on altering function internal loads during time-travel debugging
US11675681B2 (en) * 2021-09-21 2023-06-13 International Business Machines Corporation Configuration of weighted address pools for component design verification

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4606025A (en) * 1983-09-28 1986-08-12 International Business Machines Corp. Automatically testing a plurality of memory arrays on selected memory array testers
US5845106A (en) * 1996-01-26 1998-12-01 Advanced Micro Devices, Inc. Method for simulating cache operation
US6026230A (en) 1997-05-02 2000-02-15 Axis Systems, Inc. Memory simulation system and method
US6711562B1 (en) * 1999-12-01 2004-03-23 The Trustees Of Columbia University In The City Of New York Cache sensitive search (CSS) tree indexing system and method
US7437692B2 (en) * 2003-11-10 2008-10-14 Infineon Technologies Ag Memory debugger for system-on-a-chip designs
US7506119B2 (en) 2006-05-04 2009-03-17 International Business Machines Corporation Complier assisted victim cache bypassing
US8095745B1 (en) * 2006-08-07 2012-01-10 Marvell International Ltd. Non-sequential transfer of data from a memory
US7756695B2 (en) * 2006-08-11 2010-07-13 International Business Machines Corporation Accelerated simulation and verification of a system under test (SUT) using cache and replacement management tables
CN101996117B (zh) 2009-08-27 2014-02-12 鸿富锦精密工业(深圳)有限公司 计算机测试系统及方法
US8707101B2 (en) * 2010-11-09 2014-04-22 International Business Machines Corporation Verification of operating self modifying code
US10394998B2 (en) 2012-02-22 2019-08-27 International Business Machines Corporation Acceleration of memory walking sequences during simulation

Also Published As

Publication number Publication date
CN103324515B (zh) 2017-03-01
US10394998B2 (en) 2019-08-27
US20130218550A1 (en) 2013-08-22
CN103324515A (zh) 2013-09-25
GB2501589A (en) 2013-10-30
GB201302967D0 (en) 2013-04-03

Similar Documents

Publication Publication Date Title
DE102013202060A1 (de) Beschleunigung von Speicherdurchlaufsequenzen während einer Simulation
DE102012109959A1 (de) Automatische Vergrößerungs- und Auswahlbestätigung
DE102012224363A1 (de) Informationsverarbeitungssystem mit Hardware- und Softwarevorablesezugriff
DE102008012337A1 (de) Programmcode-Trace-Signatur
DE102016001467A1 (de) Verfahren zum intelligenten Laden von Webreferenzen im Voraus basierend auf einer Vorhersage des Benutzerverhaltens
DE112017005014B4 (de) Qualifizieren des Durchsuchens eines Verzweigungsprädiktors unter Verwendung der Vorhersage einer Datenstromlänge
DE112011105082T5 (de) Installieren einer Anwendung in eine visualisierte Umgebung
DE102018209205A1 (de) Datenspeicher mit intelligentem Speicher oder Ladeverfahren und -vorrichtung
DE112017008158T5 (de) Dateienvorababrufeinplanung für cachespeicher zur verringerung von latenzen
DE102008058209A1 (de) Anordnung und Verfahren um zu verhindern, dass ein Anwenderbetriebssystem in einem VMM System eine Anordnung abschaltet, die von einem Servicebetriebssystem verwendet wird
DE102006019292A1 (de) Modellieren programmierbarer Einrichtungen
DE112020005789T5 (de) Hierarchische partitionierung von operatoren
DE102013006396A1 (de) Eine grafikverarbeitungseinheit, in der eine standardverarbeitungseinheit verwendet ist, und ein verfahren zum aufbau einer grafikverarbeitungseinheit
DE102015107875A1 (de) Decodieren von Anweisungen, die von einer oder mehreren anderen Anweisungen modifiziert werden
DE102021131418A1 (de) Dedizierte registerdatei mit begrenzungsinformationen zum schützen vor speicherreferenzen ausserhalb der begrenzungen
DE112016002275T5 (de) Koordinierte benutzerwortauswahl zum übersetzen und erhalten von kontextinformtionen für das ausgewählte wort
DE102021130906A1 (de) Optimieren von zugriffen auf begrenzungsinformationen beim pufferschutz
DE102019103279A1 (de) Techniken zur informationsgraphenkomprimierung
DE102016007400A1 (de) Techniken zum Evaluieren von Anwendungen durch die Verwendung einer Hilfsanwendung
DE112018005620T5 (de) Auftragsverwaltung in einem datenverarbeitungssystem
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE112013000751T5 (de) Datenverarbeitung, Datensammlung
DE102013101300A1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
DE10038499A1 (de) Verfahren und System für die verbesserte Entwicklungsprüfung mittels angepasster Ablaufverfolgung
DE112021004940T5 (de) Erneutes Laden einer aktualisierten, gemeinsam genutzten Bibliothek, ohne die Ausführung einer Anwendung zu stoppen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final