DE10058371A1 - Verwaltung von nicht-festgelegten Registerwerten während der Zufallsprogrammerzeugung - Google Patents

Verwaltung von nicht-festgelegten Registerwerten während der Zufallsprogrammerzeugung

Info

Publication number
DE10058371A1
DE10058371A1 DE10058371A DE10058371A DE10058371A1 DE 10058371 A1 DE10058371 A1 DE 10058371A1 DE 10058371 A DE10058371 A DE 10058371A DE 10058371 A DE10058371 A DE 10058371A DE 10058371 A1 DE10058371 A1 DE 10058371A1
Authority
DE
Germany
Prior art keywords
content
random
command
value
data locations
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.)
Withdrawn
Application number
DE10058371A
Other languages
English (en)
Inventor
Steven T Mangelsdorf
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.)
HP Inc
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10058371A1 publication Critical patent/DE10058371A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/26Functional testing
    • G06F11/263Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/22Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
    • G06F11/2205Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested
    • G06F11/2236Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing using arrangements specific to the hardware being tested to test CPU or processors

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Advance Control (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Ein Verfahren und eine Vorrichtung machen während eines Zufallscodeerzeugungsprozesses nicht-festgelegte Registerwerte verfügbar. Wenn es nötig ist, daß ein Register einen bestimmten (erwünschten) Wert enthält, wird das Register an diesem Punkt auf diesen Wert festgelegt. Nicht-festgelegte Werte können durch einen oder mehrere vorhergehende Befehle propagieren. Alle Register und Speicher beginnen das Testprogramm in dem nicht-festgelegten Zustand. Wenn der Zufallscodegenerator das Erzeugen des Testprogramms abgeschlossen hat und wenn irgendwelche nicht-festgelegten Werte verbleiben, werden die nicht-festgelegten Werte auf willkürliche Werte festgelegt.

Description

Die vorliegende Erfindung bezieht sich auf die Entwurfsveri­ fikation von Zentralverarbeitungseinheiten (CPUs; CPU = central processing unit), die Programme gemäß Befehlssatz­ architekturen ausführen.
Befehlssatzarchitekturen (ISAs; ISA = instruction set archi­ tecture) spezifizieren, wie CPUs Programme ausführen. Die Programme umfassen Befehle, die in einem Speicher gespei­ chert sind. Die Befehle sind typischerweise einfache, primi­ tive Operationen, wie z. B. Addieren, Verzweigen auf eine Bedingung hin, aus einem Speicher Laden und in einen Spei­ cher Speichern.
Um für Softwarekompatibilität mit vorhandenen Computer­ systemen zu sorgen, sollten moderne CPUs mit minimalen Defekten an der ISA festhalten. Um dieses Ziel zu erreichen, könnten Computerentwickler das korrekte Verhalten von jeder Art von Befehl isoliert verifizieren. Dies mag jedoch nicht ausreichend sein, da moderne CPUs im Bemühen, das Verhalten Leistung zu verbessern, die Ausführung von zahlreichen Befehlen überlappen können. In dieser Umgebung können einige Defekte nur aufgedeckt werden, wenn spezielle Kombinationen von Befehlen in einer Sequenz ausgeführt werden. Somit mag der Entwickler wünschen, jede Kombination oder Sequenz von Befehlen zu testen. Moderne CPUs führen jedoch typischer­ weise über 100 Befehle aus, von denen jeder zahlreiche Optionen umfaßt. Ein mechanisches Aufzählen all dieser möglichen Befehlssequenzen kann undurchführbar sein. Selbst wenn alle möglichen Befehlssequenzen aufgezählt werden würden, kann das Testregime bzw. Testmodell des Entwicklers unzureichend sein, da viele Defekte mehr als nur eine bestimmte Sequenz von Befehlen erfordern. Insbesondere können zusätzliche Ereignisse, wie z. B. Operandendaten­ muster, Speicheradressenkollisionen zwischen Befehlen, der Zustand von CPU-Strukturen, wie z. B. von Cache-Speicher, und ein Stimulus, der durch die CPU empfangen wird, Vorbe­ dingungen für Defekte sein.
Eines der wichtigsten Werkzeuge, das von CPU-Entwicklern verwendet wird, um diesen Herausforderungen zu begegnen, ist ein Zufallscodegenerator (RCG; RCG = Random Code Generator). Der RCG erzeugt ein Zufallssoftwareprogramm, das während des CPU-Entwicklungs- und Prototypenverifikations-Prozesses ver­ wendet wird, um Milliarden von zufälligen Befehlen zu er­ zeugen, um die CPU zu testen.
Der RCG erzeugt den anfänglichen Zustand der CPU für jedes Zufallssoftwareprogramm. Der anfängliche Zustand umfaßt Be­ fehle in einem Speicher und Daten, die durch diese Befehle verwendet werden. Die Daten können in dem Speicher oder in CPU-Strukturen, wie Registern und Cache-Speichern, angeord­ net sein. Ferner ist ein erwarteter Endzustand erforderlich, um den tatsächlichen Endzustand, der durch das Ablaufen des Zufallsprogramms auf der CPU erzeugt wird, zu überprüfen. Der erwartete Endzustand kann durch den RCG erzeugt werden. Alternativ kann der erwartete Endzustand erhalten werden, indem das Zufallssoftwareprogramm auf einem separaten CPU- Referenz-Emulator ausgeführt wird.
Der RCG unterhält zwei Modelle des Zustandes der CPU-Regi­ ster: den anfänglichen Zustand und den aktuellen Zustand. Die CPU-Register und der CPU-Speicher werden kollektiv als Datenorte bezeichnet. Im Betrieb erzeugt eine typische RCG- Operation Zufallswerte für alle Datenorte und speichert sie in dem anfänglichen Zustand und in dem aktuellen Zustand. Der RCG durchläuft dann eine Schleife, bis eine erwünschte Programmlänge erreicht ist. Eine typische Zufallssoftware­ programmlänge kann 100 Befehle oder mehr umfassen. Um die Befehle in dem Zufallssoftwareprogramm zu verfolgen, wird ein Programmzähler verwendet. Wenn der Programmzähler auf einen nichtinitialisierten Befehlsspeicher zeigt, erzeugt der RCG einen Zufallsbefehl und speichert den anfänglichen Zustand und den aktuellen Zustand. Als nächstes wird der Befehl, auf den der Programmzähler zeigt, emuliert, wodurch der aktuelle Zustand aktualisiert wird. Dann inkrementiert der Programmzähler und der nächste Befehl wird untersucht.
Dieses Verfahren kann in einigen Fällen funktionieren, ist aber in vielen anderen Fällen oft unzureichend, um hochqua­ litative Zufallssoftwareprogramme zu erzeugen. Beispiele für diese Fälle sind: 1) wenn es erwünscht ist, daß Adressen, die durch Lade-Speicher-Befehle verwendet werden, um die selben Cache-Speicherorte konkurrieren; 2) wenn es erwünscht ist, Befehloperanden zu vermeiden, die in einer übermäßigen Anzahl von Fallen ("traps") resultieren; 3) wenn es er­ wünscht ist, Verzweigungszieladressen auszuwählen, die be­ wirken, daß unterschiedliche Teile des Programms um die selben Cache-Speicherorte konkurrieren; und 4) wenn es er­ wünscht ist, Befehlsoperanden zu vermeiden, die die ISA als illegal spezifiziert oder die unvorhersehbare Ergebnisse bewirken können.
Bei gegenwärtigen Systemen kann der RCG einen Teilsatz der Register für eine spezielle Verwendung, wie z. B. eine Spei­ cheradressierung für Lade- und Speicher-Befehle, beiseite legen. Anstatt mit Zufallswerten versehen zu werden, können diesen Registern erwünschte Werte gegeben werden. Diese Re­ gister können aber durch das Zufallssoftwareprogramm nicht geändert werden, da sie mit Zufallswerten überschrieben wer­ den würden. Dadurch wird es für das Zufallssoftwareprogramm unmöglich, die Verwendung dieser Register nach einer frühe­ ren Modifikation der Register zu testen. Diese Situation liefert inakzeptable Abdeckungslücken.
Bei anderen gegenwärtigen Systemen kann der RCG, wenn er erstmals die Operandenregister für einen Befehl auswählt und diese Register Werte halten, die unerwünscht sind, das Aus­ wählen einmal oder mehrere Male wiederholen, bis geeignetere Register gefunden sind. Das Problem ist, daß die Erforder­ nisse, damit ein Registerwert erwünscht ist, oft sehr spezi­ fisch sind. Ferner mögen keine erwünschten Register verfüg­ bar sein. Wenn ein erwünschtes Register verfügbar ist, würde dieser Ansatz dazu tendieren, das erwünschte Register eine unverhältnismäßige Anzahl von Malen auszuwählen, wodurch die Qualität der Testabdeckung reduziert wird.
Die Aufgabe der vorliegenden Erfindung besteht darin, ein Verfahren und eine Vorrichtung zum Erzeugen von Zufallspro­ grammen und ein Verfahren und eine Vorrichtung zum Verwalten der Zufallsprogrammerzeugung zu schaffen, die eine verbes­ serte Testabdeckung aufweisen.
Diese Aufgabe wird durch ein Verfahren gemäß Anspruch 1 oder 8 oder durch eine Vorrichtung gemäß Anspruch 13 oder ? gelöst.
Ein Verfahren und eine Vorrichtung machen während des Zu­ fallscodeerzeugungsprozesses nicht-festgelegte Registerwerte verfügbar. Wenn es nötig ist, daß ein Register einen be­ stimmten (erwünschten) Wert enthält, dann wird der Register­ wert an diesem Punkt auf diesen Wert festgelegt. Nicht-fest­ gelegte Werte können durch einen oder mehrere vorhergehende Befehle propagieren. Alle Register und der Speicher beginnen das Testprogramm in dem nicht-festgelegten Zustand. Wenn der Zufallscodegenerator die Erzeugung des Testprogramms abge­ schlossen hat und irgendwelche nicht-festgelegte Werte zu­ rückbleiben, werden die nicht-festgelegten Werte auf will­ kürliche Werte festgelegt.
Beispielsweise wird ein Zufallscodegenerator betrachtet, der gerade dabei ist, den Befehl 2 zu erzeugen:
  • 1. r1 = r2 + 3
  • 2. Lade den Speicher bei r1 in r3
Die Werte r1 und r2 sind nicht-festgelegt. Der RCG wünscht r1 auf einen bestimmten erwünschten Wert 1.024 festzulegen. Der RCG kann dies tun, dies hat aber Auswirkungen für r2, da r1 = r2 + 3. Der RCG muß deshalb auch r2 auf 1.021 fest­ legen.
Bei einem Ausführungsbeispiel erzeugt der RCG Zufallspro­ gramme, indem er eine Mehrzahl von Datenorten bestimmt, wo­ bei jeder der Datenorte einen nicht zugewiesenen anfängli­ chen Inhalt aufweist, indem er einem oder mehreren Daten­ orten aus der Mehrzahl von Datenorten einen anfänglichen Inhalt zuweist, wobei das Zuweisen während einer Zufallspro­ grammerzeugung exakt einmal auftritt, und indem er eine Mehrzahl von Befehlen in einer Programmausführungsreihen­ folge einzeln verarbeitet, bis eine erwünschte Zufallspro­ grammlänge erreicht ist, wobei das Verarbeiten die Datenorte mit aktuellen Werte versieht. Das Verarbeiten umfaßt das Berechnen eines aktuellen Inhalts von jedem der Mehrzahl von Datenorten, wobei der aktuelle Inhalt abhängig ist von Funk­ tionen von vorher verarbeiteten Befehlen, und wobei der ak­ tuelle Inhalt unbekannt sein kann, wenn der aktuelle Inhalt von einem nicht zugewiesenen anfänglichen Inhalt von einem oder mehreren Datenorten abhängt. Das Verarbeiten wird mit dem Erzeugen eines Zufallsbefehls fortgesetzt, wobei, wenn ein aktueller Inhalt eines Datenorts, der durch den Zufalls­ befehl genutzt wird, von einem nicht zugewiesenen anfäng­ lichen Inhalt von mindestens einem Datenort abhängt, der anfängliche Inhalt dem mindestens einen Datenort zugewiesen wird, wodurch die Wirksamkeit des Zufallsbefehls optimiert wird. Schließlich wird einem anfänglichen Inhalt eines Datenortes, auf den ein Programmzähler zeigt, ein Befehls­ operationscode zugewiesen, und der Programmzähler wird vor­ gerückt.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf die beiliegenden Zeich­ nungen detaillierter erklärt. Es zeigen:
Fig. 1 ein Blockdiagramm einer Testumgebung, die einen Zufallscodegenerator verwendet;
Fig. 2 ein detaillierteres Blockdiagramm der Umgebung aus Fig. 1;
Fig. 3 ein Beispiel einer Zufallscodesequenz;
Fig. 4 eine Graph-Datenstruktur, die verwendet wird, um Zufallsprogramme in der Gegenwart von nicht-fest­ gelegten Werten zu erzeugen;
Fig. 5a bis 11c Flußdiagramme, die den Betrieb des Zufallscode­ generators darstellen; und
Fig. 12a bis 12c Flußdiagramme, die die Unterroutine Zurückset­ zen(Befehl I) 250 darstellen.
CPUs haben eine Befehlssatz-Architektur (ISA), die spezifi­ ziert, wie die CPU Programme ausführt. Die Programme umfas­ sen Befehle, die in einem Speicher gespeichert sind. Die Befehle sind typischerweise einfache, primitive Operationen, wie z. B. Addieren, Verzweigen auf eine Bedingung hin, aus einem Speicher Laden und in einen Speicher Speichern.
Während der Entwicklung einer solchen CPU muß der Entwickler verifizieren, daß der Entwurf der ISA entspricht. Dies bie­ tet Schwierigkeiten, da moderne CPUs versuchen können, die Ausführung von zahlreichen Befehlen zu überlappen, um die Leistung zu verbessern. Wegen dieser Entwurfsoption werden einige Defekte nur aufgedeckt werden, wenn spezifische Kom­ binationen von Befehlen in einer Sequenz ausgeführt werden. Es gibt typischerweise über 100 Befehle, von denen jeder zahlreiche Optionen umfassen kann. Deshalb ist ein mechani­ sches Aufzählen aller möglichen Befehlssequenzen nicht durchführbar. Dies wäre sogar unzureichend, da viele Defekte mehr als nur eine spezifische Befehlssequenz erfordern. Ope­ randendatenmuster, Speicheradreßkollisionen zwischen Befeh­ len, der Zustand von CPU-Strukturen, wie z. B. Cache-Spei­ cher, und ein Stimulus, der durch die CPU auf ihrer äußeren Oberfläche empfangen wird, sind Beispiele für zusätzliche Ereignisse, die Vorbedingungen für Defekte sein können.
Ein Zufallscodegenerator (RCG) kann verwendet werden, um ein Testprogramm in diesen modernen CPUs zu implementieren. Im wesentlichen erzeugt der RCG ein Zufallssoftwareprogramm. RCGs werden während der Entwicklungs- und Prototypenverifi­ kations-Prozesse verwendet, um Milliarden von Zufallsbefeh­ len zu erzeugen, um die CPU zu testen.
Der RCG erzeugt einen anfänglichen Zustand der CPU für jedes Zufallsprogramm. Der anfängliche Zustand umfaßt Befehle in einem Speicher und Daten, die durch diese Befehle verwendet werden. Die Daten können in einem Speicher oder in CPU- Orten, wie Registern und Cache-Speichern, angeordnet sein. Ferner ist ein erwarteter Endzustand erforderlich, um den tatsächlichen Endzustand, der durch das Ablaufen des Zu­ fallsprogramms auf der CPU erzeugt wird, zu überprüfen. Dieser kann durch den RCG erzeugt werden oder der Endzustand kann erhalten werden, indem das Zufallsprogramm auf einem separaten CPU-Referenz-Emulator abläuft.
Fig. 1 ist ein Blockdiagramm einer Testumgebung 10, die einen Zufallscodegenerator (RCG) 20 verwendet, um bestimmte Tests durchzuführen. Die Umgebung 10 umfaßt eine Hardware­ vorrichtung oder einen Prozessor 100. Die Umgebung 10 umfaßt auch einen Simulator 200, der alle Teile oder einen Teil des Prozessors 100 simuliert. Der RCG 20 ist mit dem Prozessor 100 und dem Simulator 200 gekoppelt und kann verwendet werden, um Tests auf jedem der beiden Geräte durchzuführen.
Die Funktionen des RCG 20 können auf zwei oder mehr Kompo­ nenten aufgeteilt sein. Zum Beispiel könnte ein RCG verwen­ det werden, um das Zufallssoftwareprogramm zu erzeugen, und ein separater Emulator verwendet werden, um den korrekten Endzustand der Datenorte nach der Ausführung des Zufalls­ softwareprogramms zu bestimmen.
Fig. 2 ist ein detaillierteres Blockdiagramm der Testumge­ bung 10, die in Fig. 1 gezeigt ist. In Fig. 2 ist der Pro­ zessor 100 detaillierter gezeigt. Der Simulator 200 kann Module oder Komponenten umfassen, die eine oder alle der Komponenten (und deren Funktionen) des Prozessors 100 simu­ lieren. Demgemäß wird ein detailliertes Blockdiagramm des Simulators nicht benötigt und ein gewöhnlicher Fachmann versteht, wie ein solcher Simulator aufzubauen ist.
Der Prozessor 100 ist mit dem RCG 20 gekoppelt gezeigt. Der Prozessor 100 umfaßt ein Speicher-Teilsystem 130, einen oder mehrere Integerwert-Register 110, einen oder mehrere Gleit­ komma-Register 120 und einen oder mehrere Akkumulatoren 140. Ferner umfaßt er eine Speichersteuerung 150. Die Register, Speicher und Akkumulatoren werden im folgenden als Datenorte bezeichnet. Andere Vorrichtungen neben den Integerwert-Regi­ stern 110, den Gleitkomma-Registern, den Akkumulatoren und dem Speicher können ebenfalls als Datenorte in dem Prozessor 100 umfaßt sein.
Der RCG 20 erzeugt einen anfänglichen Zustand des Prozessors 100. Der anfängliche Zustand umfaßt alle Register, Akkumula­ toren, Speicher und andere Komponenten, die bei der Ausfüh­ rung des Zufallssoftwareprogramms verwendet werden. Diese Register, Akkumulatoren und Speicher werden als Datenorte bezeichnet. Der RCG 20 erzeugt Zufallswerte für ausgewählte Datenorte. Das heißt, der RCG 20 erzeugt Zufallswerte für jeden Datenort, den die Testsequenz tatsächlich verwendet. Der RCG 20 kann die Zufallswerte unter Verwendung mathemati­ scher Routinen erzeugen, die Stand der Technik sind. Während der RCG 20 die Zufallsbefehle in der Befehlssequenz erzeugt, kann der RCG 20 die Zufallsbefehle emulieren. Während die Befehlssequenz ausgeführt wird, aktualisiert der RCG 20 Werte in den Datenorten und liefert einen aktuellen Zustand des Prozessors 100. Wenn die Befehlssequenz ausgeführt wird, wird der aktuelle Zustand der Hardwarevorrichtung von dem anfänglichen Zustand abweichen.
Ferner umfaßt die Hardwarevorrichtung einen Programmzähler 22. Der Programmzähler 22 wird verwendet, um auf Datenorte zu zeigen, die Datenorte einschließen, die nicht initiali­ siert sind. Wenn der Datenort, auf den der Programmzähler 22 zeigt, nicht initialisiert ist, kann der RCG 20 einen Wert in den Datenort schreiben. Andernfalls kann der RCG 20 den Datenort nicht ändern. In diesem Fall setzt der RCG 20 die Verarbeitung mit dem Befehl fort, der an diesem Datenort vorgesehen ist, statt einen neuen Befehl zu erzeugen. Unab­ hängig davon, ob der RCG 20 einen neuen Befehl erzeugt oder einen existierenden Befehl an einem Datenort verwendet, rückt der RCG 20 den Zustand des Prozessors 100 gemäß der Wirkung des Befehls vor. Der Programmzähler 22 zeigt dann auf einen nächsten Datenort und der Prozeß setzt sich fort.
Fig. 3 zeigt ein Beispiel einer Codesequenz, die durch den Zufallscodegenerator erzeugt ist. In Fig. 3 bestimmt ein erster Befehl 30 einen Wert r1 = r2 + r3. Ein zweiter Befehl 40 bestimmt einen Wert r4 = r1 + r5.
Fig. 4 zeigt eine Graph-Datenstruktur 50, die verwendet wird, um Zufallsprogramme in Gegenwart von nicht-festgeleg­ ten Werten zu erzeugen. Der Graph 50 ist eine logische Dar­ stellung einer Datenstruktur in dem RCG 20. Der Graph 50 umfaßt Knoten 52 und 53, die Befehlen entsprechen, die bis­ her verarbeitet wurden. Kanten 61 bis 67 des Graphen 50 entsprechen den Operandenwerten. Zum Beispiel ist der Knoten 52 ein Addier-Befehl, der zwei Eingaben 61 und 62 empfängt und einen einzigen Ausgabewert 63 erzeugt. Für einen Daten­ ort, der durch die ISA definiert ist, werden zwei Zeiger unterhalten. Ein erster Zeiger zeigt auf einen Wert, der anfangs gehalten ist, und ein zweiter Zeiger zeigt auf einen Wert, den der Datenort gegenwärtig hält. In dem Beispiel, das in Fig. 4 dargestellt ist, entsprechen die Zeiger 71 und 73 einem anfänglichen Zustand und einem aktuellen Zustand für das Register R5. Zeiger 75 und 77 entsprechen einem an­ fänglichen Zustand und einem aktuellen Zustand für das Re­ gister R1.
Bei der Verwendung der Codesequenz, die in Fig. 3 darge­ stellt ist, wird der aktuelle Zustand 77 des Registers R1 durch den Addier-Befehl aktualisiert, der Werte aus Regi­ stern R2 und R3 addiert, um die Ausgabe 63 zu erzeugen. Der aktuelle Wert 73 des Registers R5 wird dann zu dem aktuellen Wert des Registers R1 addiert, um die Ausgabe 66 zu erzeu­ gen.
Die Werte, die in Fig. 4 als Kanten gezeigt sind, können jeweils einen von drei Zuständen aufweisen. Ein Wert kann nicht-festgelegt sein, wenn er eine beliebige Zahl halten kann. Der Wert ist "zurückgestellt", wenn der Wert keine beliebige Zahl mehr halten kann, aber seine Zahl noch nicht bekannt ist. Schließlich kann der Wert festgelegt sein, wenn er eine bestimmte Zahl hält.
Bei einem Ausführungsbeispiel macht der RCG 20 während des Zufallsprogrammerzeugungsprozesses nicht-festgelegte Daten­ orte verfügbar. Wenn ein Bedarf existiert, daß ein Datenort eine bestimmte (erwünschte) Zahl enthält, dann wird der Wert an dem Datenort an diesem Punkt in der Ausführung des Zu­ fallsprogramms auf diese Zahl festgelegt. Nicht-festgelegte Werte können durch einen oder mehrere vorhergehende Befehle propagieren. Alle Datenorte beginnen das Zufallsprogramm in dem nicht-festgelegten Zustand. Dieser anfängliche Zustand bleibt fixiert, aber während das Zufallsprogramm ausgeführt wird, wird ein aktueller Zustand für jeden Datenort aktuali­ siert. Wenn der RCG 20 die Erzeugung des Zufallsprogramms abgeschlossen hat, werden, wenn irgendwelche nicht-festge­ legte Datenorte verbleiben, die nicht-festgelegten Datenorte auf willkürliche Zahlen festgelegt.
Der Prozeß wird mit Bezug auf die Fig. 5a bis 12c darge­ stellt. Fig. 5a ist ein Flußdiagramm, das einen Algorithmus auf hoher Ebene darstellt, der durch den RCG 20 ausgeführt wird. Der Prozeß startet bei Block 101. Der RCG 20 erzeugt dann einen nicht-festgelegten Wert für alle Datenorte (Block 105). Als nächstes werden für alle Datenorte der Zeiger auf den anfänglichen Zustand und der Zeiger auf den aktuellen Zustand auf die nicht-festgelegten Werte gesetzt (Block 111). Der RCG 20 führt dann die Unterroutine 121 aus. Nach der Unterroutine 121 wird durch den RCG 20 die Programmlänge überprüft, um zu bestimmen, ob die erwünschte Programmlänge erreicht worden ist (Block 115). Wenn die erwünschte Pro­ grammlänge noch nicht erreicht worden ist, wird der Pro­ grammzähler 22 inkrementiert (Block 117), und der Prozeß kehrt dann zu Block 121 zurück. Sobald die erwünschte Pro­ grammlänge erreicht worden ist, ruft der RCG 20 für jeden Datenort die Unterroutine Festlegen (Wert V) 170 auf, um den Wert festzulegen, auf den der Zeiger auf den aktuellen Zu­ stand zeigt.
Fig. 5b ist ein Flußdiagramm, das eine Unterroutine 121 dar­ stellt, die ausgeführt wird, wenn der Programmzähler 22 auf einen nichtinitialisierten Befehlsspeicher zeigt. Der RCG 20 erzeugt einen Zufallsbefehl und speichert ihn in den anfäng­ lichen und den aktuellen Zustandswerten für diesen Datenort (Block 131). Der RCG 20 fügt dann den Befehl in den Graphen ein (Block 141). Für den Bestimmungsdatenort des Befehls bewegt der RCG 20 den Gegenwartzustandszeiger, damit dieser auf den Ausgabewert des Befehls zeigt (Block 145). Die Un­ terroutine endet dann (Block 146).
Fig. 6 ist ein Flußdiagramm, das die Unterroutine Festle­ gen (Wert V) 170 darstellt. Der RCG 20 bestimmt einen Zustand des Wertes V (Block 180). Wenn V festgelegt ist, springt der Prozeß zu Block 182 und endet. Wenn V zurückgestellt ist, bestimmt der RCG 20 den Befehl, der V erzeugte (Block 190). Der RCG 20 ruft dann die Unterroutine Ausführen (I) 201 auf. Wenn V weder festgelegt noch zurückgestellt ist, erzeugt der RCG 20 eine Zufallszahl X (Block 195). Der RCG 20 ruft dann die Unterroutine Festlegen (V,X) 210 auf.
Fig. 7 ist ein Flußdiagramm, das die Unterroutine Festle­ gen (V,X) 210 darstellt. Der RCG 20 bestimmt, ob ein Befehl I den Wert V erzeugte (Block 215). Wenn I existiert, ruft der RCG 20 die Unterroutine Umgekehrt_Propagieren (I,X) 225 auf und dann die Unterroutine Ausführen (I) 230. Wenn kein Befehl I den Wert V erzeugte (I = NULL), setzt der RCG 20 den Wert von V auf X (Block 227). Der RCG 20 ruft dann die Unterrou­ tine Zurückversetzen (V,festgelegt) 240 auf.
Fig. 8 ist ein Flußdiagramm, das die Unterroutine Zurückver­ setzen(Wert V, Zustand S) 240 darstellt. Bei einem Block 245 überprüft der RCG 20, ob der Zustand von V festgelegt ist. Wenn der Zustand von V nicht-festgelegt oder zurückgestellt ist, setzt der RCG 20 den Zustand von V auf S (Block 247). Dann ruft der RCG 20 für jeden Befehl I, der V verwendet, die Unterroutine Zurückversetzen (I) 250. Wenn der Zustand von V festgelegt ist, wird die Unterroutine verlassen (Block 246).
Fig. 9 ist ein Flußdiagramm, das die Unterroutine Ausfüh­ ren (Befehl I) 201 darstellt. Der RCG 20 ruft die Unterrou­ tine Festlegen (V) 170 für jeden Eingabewert von I auf (Block 260). Als nächstes führt der RCG 20 eine ISA-Operation für I durch (Block 265). Für jeden Ausgabewert V von I setzt der RCG 20 den Wert von V auf das Ergebnis der ISA-Operation von I (Block 267). Der RCG 20 ruft dann die Unterroutine Zurück­ versetzen (V,festgelegt) 240 auf.
Fig. 10 ist ein Flußdiagramm, das eine Unterroutine Einfü­ gen (Befehl I) 280 darstellt. Für den Befehl I fügt der RCG 20 den Befehl in den Graphen 50 ein (Block 282). Der RCG 20 verwendet den Zeiger auf den aktuellen Zustand für Daten­ orte, die durch I verwendet werden, um zu bestimmen, mit welchen Werten I verknüpft ist. Der RCG 20 erzeugt dann einen Wert V für das Ergebnis des Befehls I (Block 284). Der anfängliche Zustand des Werts V ist nicht-festgelegt. Der RCG 20 führt dann die Unterroutine Zurückversetzen (I) aus (Block 300).
Die Fig. 11a und 11b sind Flußdiagramme, die die Unterrou­ tine Umgekehrt_Propagieren (Befehl I,Integer X) 225 darstel­ len. Die Unterroutine Umgekehrt_Propagieren wird für Be­ fehlstypen aufgerufen, die nicht-festgelegte Werte propa­ gieren können. Die Unterroutine Umgekehrt_Propagieren legt einen oder mehrere Eingabewerte des Befehls I auf Werte fest, die zur Folge haben, daß, wenn die Unterroutine Aus­ führen (I) aufgerufen wird, X als Ausgabe des Befehls I er­ zeugt wird. Fig. 11a ist ein Flußdiagramm, das die Unter­ routine Umgekehrt_Propagieren (I,X) 225 darstellt, wenn der Befehl I ein Kopier-Befehl ist. Der RCG 20 weist V als einen Eingabewert von I zu (Block 314). Der RCG 20 ruft dann die Unterroutine Festlegen (V,X) 210 auf, die oben beschrieben wurde.
Fig. 11b ist ein Flußdiagramm, das die Unterroutine Umge­ kehrt_Propagieren (I,X) 225 darstellt, wenn der Befehl I ein Addier-Befehl ist. Der RCG 20 weist V1 und V2 als Eingabe­ werte für den Befehl I zu (Block 316). Bei Block 320 be­ stimmt der RCG 20, ob V1 nicht-festgelegt ist. Wenn V1 nicht-festgelegt ist, ruft der RCG 20 die Unterroutine Fest­ legen (V2) 170 auf (Block 330). Der RCG 20 ruft dann die Un­ terroutine Festlegen (V1,X-V2. Wert) 210 auf (Block 340). Wenn der Wert von V1 nicht nicht-festgelegt ist, ruft der RCG 20 die Unterroutine Festlegen (V1) 170 auf (Block 350), und die Unterroutine Festlegen (V2,X-V1._Wert) auf (Block 360).
Die Fig. 12a bis 12c sind Flußdiagramme, die die Unterrou­ tine Zurückversetzen (Befehl I) 250 darstellen. Die Unter­ routine Zurückversetzen (Befehl I) 250 ist vorgesehen, um den Zustand des Ausgabewerts des Befehls I abhängig von der Fä­ higkeit des Befehls I, nicht-festgelegte Werte zu propagie­ ren, zurückzuversetzen. Die Definition der Unterroutine Zu­ rückversetzen (Befehl I) 250 ist für jeden Befehlstyp unter­ schiedlich. Fig. 12a ist ein Flußdiagramm, das die Unter­ routine Zurückversetzen (Befehl I) 250 für Befehlstypen dar­ stellt, die nicht fähig sind, nicht-festgelegte Werte zu propagieren. Diese Befehle umfassen beispielsweise Divi­ dieren, Gleitkommabefehle und Boolsche Befehle. Der RCG 20 weist V dem Ausgabewert des Befehls I zu (Block 370). Der RCG 20 ruft dann die Unterroutine Zurückversetzen (V, zurück­ gestellt) 240 auf (Block 372).
Die Fig. 12b und 12c sind Flußdiagramme, die die Unterrou­ tine Zurückversetzen (Befehl I) 250 für Kopier- und Addier- Befehle darstellen.
Bei Verwendung der oben beschriebenen Prozesse kann der RCG 20 einen Datenort mit einem nicht-festgelegten Zustand als einen Operanden eines Befehles wählen. Der RCG 20 kann dann einen beliebigen erwünschten Inhalt oder Wert für den Ein­ trag an diesem Datenort vorsehen. Die Existenz eines zurück­ gestellten Zustands dient dazu, so viele nicht-festgelegte Werte zu erhalten wie möglich. Wenn z. B. ein nicht-festge­ legter Datenort für den Operanden eines komplexen Befehls ausgewählt ist, für den der RCG 20 den nicht-festgelegten Wert nicht propagieren kann, muß der Ausgabewert dieses Befehls als zurückgestellt und nicht als nicht-festgelegt markiert werden. Der Eingabewert dieses Befehls bleibt aber nicht-festgelegt, so daß der Eingabewert später in dem Zu­ fallsprogrammerzeugungsprozeß ein Erfordernis erfüllen kann.
Wenn der RCG 20 verwendet wird, um ein Zufallsprogramm zu erzeugen, können viele Befehle, die in der Befehlssequenz enthalten sein mögen, einen unmittelbaren Operanden als Teil des Befehls aufweisen. Diese Situation kann als zusätzlicher Operand des Befehls aufgefaßt werden, der für eine Zeit, nachdem der Befehl durch den RCG 20 erzeugt worden ist, nicht-festgelegt bleibt. Wenn der Wert festgelegt wird, kann der Operationscode von dem Befehl modifiziert werden, um den unmittelbaren Wert zu integrieren.
Der RCG 20 kann sich auch bedingten Befehlen (z. B. einer Boolschen Bedingung) anpassen, wie z. B. einer Verzweigung.
Zum Beispiel zeigt ein bedingter Befehl: "Wenn r1 < r2, dann verzweigen" einen möglichen Zweig an. Der RCG 20 muß wissen, ob die Bedingung (r1 < r2) wahr ist, wenn der RCG 20 einen solchen Befehl erzeugt, so daß der RCG 20 den Programmablauf vorhersagen kann. Wenn r1 oder r2 einen nicht-festgelegten Zustand aufweisen, ergibt sich ein Problem. An diesem Punkt Datenorte festzulegen, kann unerwünscht sein, da die Daten­ orte in späteren Phasen des Zufallsprogramms eine gute Ver­ wendung haben können.
Um dieses Problem zu überwinden, kann der RCG 20 entschei­ den, ob die Bedingung wahr ist. Der RCG 20 zeichnet eine Entscheidung in dem Graphen 50 entsprechend dem Zweig auf. Später, wenn "Ausführen"() für diesen Befehl aufgerufen wird, wird die tatsächliche Bedingung gegenüber dem ge­ wünschten Ergebnis überprüft. Wenn sich die tatsächliche Bedingung und die erwünschte Bedingung unterscheiden, kann der Befehls-Operationscode durch die Unterroutine Ausfüh­ ren () modifiziert werden, um den Sinn der Bedingung zu "flippen" bzw. umzudrehen. Bei dem oben gegebenen Beispiel würde, wenn ein Umdrehen erforderlich ist, der Befehl zu "wenn r1 <= r2, dann verzweigen" werden.
Wenn das Zufallsprogramm länger wird, nimmt die Anzahl von Prozessorregistern in dem nicht-festgelegten Zustand ab. Dies kann eventuell die Länge des Zufallsprogramms limitie­ ren. In diesem Fall kann der RCG 20 eine große Tabelle nicht-festgelegter Speicherorte anlegen, z. B. in dem Spei­ cher 130. Der RCG 20 kann periodisch einen Ladebefehl emit­ tieren, um einen der nicht-festgelegten Werte in ein zufäl­ lig ausgewähltes Prozessorregister zu transferieren.

Claims (14)

1. Verfahren zum Erzeugen von Zufallsprogrammen, mit fol­ genden Schritten:
Bestimmen (105) einer Mehrzahl von Datenorten, wobei jeder Datenort der Mehrzahl von Datenorten einen nicht zugewiesenen anfänglichen Inhalt aufweist;
Zuweisen (111) eines anfänglichen Inhalts zu einem oder mehreren Datenorten von der Mehrzahl von Daten­ orten, wobei das Zuweisen während des Erzeugens eines Zufallsprogrammes genau einmal auftritt; und
Verarbeiten (121) einer Mehrzahl von Befehlen, und zwar einer nach dem anderen, in einer Programmausfüh­ rungsreihenfolge, bis eine erwünschte Zufallsprogramm­ länge erreicht ist, wobei der Schritt des Verarbeitens den einen oder die mehreren Datenorte mit aktuellen Inhalten versieht, und wobei der Schritt des Verarbei­ tens folgende Schritte aufweist:
Berechnen (170) eines aktuellen Inhalts von jedem der Mehrzahl von Datenorten, wobei der aktuelle Inhalt von Funktionen von zuvor verarbeiteten Be­ fehlen abhängt, und wobei der aktuelle Inhalt un­ bekannt sein kann, wenn der aktuelle Inhalt von einem nicht zugewiesenen anfänglichen Inhalt von einem oder mehreren Datenorten abhängt;
Erzeugen (131) eines Zufallsbefehls;
wenn ein aktueller Inhalt von einem Datenort, der durch den Zufallsbefehl verwendet wird, von einem nicht zugewiesenen anfänglichen Inhalt von minde­ stens einem Datenort abhängt, Zuweisen (141) des anfänglichen Inhalts zu dem mindestens einen Da­ tenort, wodurch eine Wirksamkeit des Zufalls­ befehls optimiert wird; und
Zuweisen (201, 214) eines Befehls-Operationscodes zu einem anfänglichen Inhalt eines Datenortes, auf den gezeigt wird.
2. Verfahren gemäß Anspruch 1, bei dem der Schritt des Verarbeitens ferner folgenden Schritt aufweist:
wenn Datenorte mit nicht zugewiesenen anfänglichen In­ halten verbleiben, wenn alle Zufallsbefehle verarbei­ tet sind, Zuweisen (195) von beliebigen Zahlen zu den anfänglichen Inhalten von jedem der verbleibenden Da­ tenorte.
3. Verfahren gemäß Anspruch 1 oder 2, bei dem ein oder mehrere Befehle Boolsche Bedingungen umfassen, mit folgenden Schritten:
Auswählen (250) eines Ergebnisses der Boolschen Bedin­ gung, wenn, während ein Befehl erzeugt wird, einer oder mehrere Datenorte, die der Befehl verwendet, kei­ nen bekannten aktuellen Inhalt aufweist; und
Modifizieren (370) des Befehls-Operationscodes, um eine komplementäre Boolsche Bedingung zu spezifizie­ ren, wenn das Zuweisen von anfänglichen Inhalten zu der Mehrzahl von Datenorten während des Verarbeitens von einem ersten Befehl oder von einem späteren Befehl bewirkt, daß sich ein Ergebnis der Boolschen Bedingung von dem ausgewählten Ergebnis unterscheidet.
4. Verfahren gemäß einem der Ansprüche 1 bis 3, bei dem ein Befehl einen unmittelbaren Operanden enthält, der durch den Befehl verwendet wird.
5. Verfahren gemäß Anspruch 4, das ferner folgenden Schritt aufweist:
Hemmen des Zuweisens einer anfänglichen Zufallszahl zu den unmittelbaren Operanden, wenn der Befehl erzeugt wird.
6. Verfahren gemäß einem der Ansprüche 1 bis 5, das fer­ ner folgende Schritte aufweist:
Zuordnen einer Speichertabelle in einem Speicher (130), wobei die Speichertabelle eine Mehrzahl von Einträgen aufweist; und
Erzeugen von Ladevorgängen von der Speichertabelle zu Prozessorregistern (110, 120) in zufälligen Interval­ len, wobei jeder Eintrag aus der Mehrzahl von Einträ­ gen einmal geladen wird.
7. Verfahren gemäß einem der Ansprüche 1 bis 6, bei dem ein Programmzähler (22) auf den Datenort zeigt, auf den gezeigt wird, wobei das Verfahren ferner den Schritt des Vorrückens (117) des Programmzählers (22) aufweist.
8. Verfahren zum Verwalten einer Zufallsprogrammerzeu­ gung, wobei anfängliche Inhalte von Datenorten und Ergebnisse, die durch Befehle berechnet werden, durch Werte dargestellt werden, und wobei das Zufallspro­ gramm durch ein Verarbeiten von Befehlen ausgeführt wird, mit folgenden Schritten:
Markieren (111) von Zuständen der Werte, wobei das Markieren folgende Schritte aufweist:
Markieren (247) eines Zustands von einem Wert als nicht-festgelegt, wenn der Inhalt unbekannt ist, und wenn ein beliebiger erwünschter Inhalt er­ zeugt werden kann, indem ein Inhalt zu einem oder mehreren anderen nicht-festgelegten Werten zuge­ wiesen wird,
Markieren (247) eines Zustands von einem Wert als zurückgestellt, wenn ein Inhalt unbekannt ist und es nicht möglich ist, einen beliebigen erwünsch­ ten Inhalt zu berechnen, indem einem oder mehre­ ren anderen nicht-festgelegten Werten ein Inhalt zugewiesen wird, und
Markieren (267) eines Zustands von einem Wert als festgelegt, wenn der Inhalt bekannt ist;
Propagieren (225) eines nicht-festgelegten Eingabe­ werts zu einem nicht-festgelegten Ausgabewert, wobei bestimmte Befehle das Propagieren bewirken; und
Umwandeln (270) eines nicht-festgelegten Wertes in einen festgelegten Wert mit einem erwünschten Inhalt mit folgenden Schritten:
Ausfindigmachen eines Vorgängerbefehls, der den Wert erzeugte, der umgewandelt werden soll,
Verwenden einer inversen Funktion des Vorgänger­ befehls, um einen Inhalt für einen nicht-festge­ legten Eingabewert des Vorgängerbefehls zu be­ stimmen, der mit dem erwünschten Inhalt des nicht-festgelegten Ausgabewerts konsistent ist, und
Wiederholen der Schritte des Ausfindigmachens und Bestimmens, bis keine Vorgängerbefehle verblei­ ben.
9. Verfahren gemäß Anspruch 8, bei dem einer oder mehrere Befehle Boolsche Bedingungen umfassen, mit folgenden Schritten:
Auswählen (250) von einem Ergebnis der Boolschen Be­ dingung, wenn, während ein Befehl erzeugt wird, einer oder mehrere Datenorte, die der Befehl verwendet, kei­ nen bekannten aktuellen Zustand aufweisen; und
Modifizieren (370) des Befehls-Operationscodes, um eine komplementäre Boolsche Bedingung zu spezifizie­ ren, wenn das Zuweisen von anfänglichen Inhalten zu der Mehrzahl von Datenorten während des Verarbeitens eines ersten Befehls oder eines späteren Befehls ein Ergebnis der Boolschen Bedingung bewirkt, das von einem angenommenen Ergebnis abweicht.
10. Verfahren gemäß Anspruch 8 oder 9, bei dem ein Befehl einen unmittelbaren Operanden enthält, der durch den Befehl verwendet wird.
11. Verfahren gemäß Anspruch 10, das ferner folgenden Schritt aufweist:
Hemmen des Zuweisens von einer anfänglichen Zufalls­ zahl zu dem unmittelbaren Operanden, wenn der Befehl erzeugt wird.
12. Verfahren gemäß einem der Ansprüche 8 bis 11, das ferner folgende Schritte aufweist:
Anordnen einer Speichertabelle in einem Speicher, wobei die Speichertabelle eine Mehrzahl von Einträgen aufweist; und
Erzeugen von Ladevorgängen von der Speichertabelle zu Prozessorregistern in zufälligen Intervallen, wobei jeder Eintrag aus der Mehrzahl von Einträgen einmal geladen wird.
13. Vorrichtung zum Erzeugen von Zufallsprogrammen, mit folgenden Merkmalen:
einer Einrichtung zum Bestimmen (105) einer Mehrzahl von Datenorten, wobei jeder Datenort der Mehrzahl von Datenorten einen nicht zugewiesenen anfänglichen In­ halt aufweist;
einer Einrichtung zum Zuweisen (111) eines anfängli­ chen Inhalts zu einem oder mehreren Datenorten von der Mehrzahl von Datenorten, wobei das Zuweisen während des Erzeugens eines Zufallsprogrammes genau einmal auftritt; und
einer Einrichtung zum Verarbeiten (121) einer Mehrzahl von Befehlen, und zwar einer nach dem anderen, in einer Programmausführungsreihenfolge, bis eine er­ wünschte Zufallsprogrammlänge erreicht ist, wodurch der eine oder die mehreren Datenorte mit aktuellen Inhalten versehen werden, und wobei die Einrichtung zum Verarbeiten folgende Merkmale aufweist:
eine Einrichtung zum Berechnen (170) eines aktu­ ellen Inhalts von jedem der Mehrzahl von Daten­ orten, wobei der aktuelle Inhalt von Funktionen von zuvor verarbeiteten Befehlen abhängt, und wobei der aktuelle Inhalt unbekannt sein kann, wenn der aktuelle Inhalt von einem nicht zugewie­ senen anfänglichen Inhalt von einem oder mehreren Datenorten abhängt;
eine Einrichtung zum Erzeugen (131) eines Zu­ fallsbefehls;
eine Einrichtung zum Zuweisen (141) eines anfäng­ lichen Inhalts zu dem mindestens einen Datenort, wodurch eine Wirksamkeit des Zufallsbefehls opti­ miert wird, wenn ein aktueller Inhalt von einem Datenort, der durch den Zufallsbefehl verwendet wird, von einem nicht zugewiesenen anfänglichen Inhalt von mindestens einem Datenort abhängt; und
eine Einrichtung zum Zuweisen (201, 210) eines Befehls-Operationscodes zu einem anfänglichen Inhalt eines Datenortes, auf den gezeigt wird.
14. Vorrichtung zum Verwalten einer Zufallsprogrammerzeu­ gung, bei der anfängliche Inhalte von Datenorten und Ergebnisse, die durch Befehle berechnet werden, durch Werte dargestellt werden, und bei der das Zufallspro­ gramm durch ein Verarbeiten von Befehlen ausgeführt wird, mit folgenden Merkmalen:
einer Einrichtung zum Markieren (111) von Zuständen der Werte, wobei die Einrichtung zum Markieren folgen­ de Merkmale aufweist:
eine Einrichtung zum Markieren (247) eines Zu­ stands von einem Wert als nicht-festgelegt, wenn der Inhalt unbekannt ist, und wenn ein beliebiger erwünschter Inhalt erzeugt werden kann, indem ein Inhalt zu einem oder mehreren anderen nicht-fest­ gelegten Werten zugewiesen wird,
eine Einrichtung zum Markieren (247) eines Zu­ stands von einem Wert als zurückgestellt, wenn ein Inhalt unbekannt ist und es nicht möglich ist, einen beliebigen erwünschten Inhalt zu berechnen, indem einem oder mehreren anderen nicht-festgelegten Werten ein Inhalt zugewiesen wird, und
eine Einrichtung zum Markieren (267) eines Zu­ stands von einem Wert als festgelegt, wenn der Inhalt bekannt ist;
eine Einrichtung zum Propagieren (225) eines nicht- festgelegten Eingabewerts zu einem nicht-festgelegten Ausgabewert, wobei bestimmte Befehle das Propagieren bewirken; und
eine Einrichtung zum Umwandeln (270) eines nicht-fest­ gelegten Wertes in einen festgelegten Wert mit einem erwünschten Inhalt, wobei die Einrichtung zum Umwan­ deln folgende Merkmale aufweist:
eine Einrichtung zum Ausfindigmachen eines Vor­ gängerbefehls, der den Wert erzeugte, der umge­ wandelt werden soll,
eine Einrichtung zum Verwenden einer inversen Funktion des Vorgängerbefehls, um einen Inhalt für einen nicht-festgelegten Eingabewert des Vor­ gängerbefehls zu bestimmen, der mit dem erwünsch­ ten Inhalt des nicht-festgelegten Ausgabewerts konsistent ist, und
eine Einrichtung zum Wiederholen der Schritte des Ausfindigmachens und Bestimmens, bis keine Vor­ gängerbefehle verbleiben.
DE10058371A 2000-02-22 2000-11-24 Verwaltung von nicht-festgelegten Registerwerten während der Zufallsprogrammerzeugung Withdrawn DE10058371A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/510,371 US6671664B1 (en) 2000-02-22 2000-02-22 Management of uncommitted register values during random program generation

Publications (1)

Publication Number Publication Date
DE10058371A1 true DE10058371A1 (de) 2001-09-06

Family

ID=24030475

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10058371A Withdrawn DE10058371A1 (de) 2000-02-22 2000-11-24 Verwaltung von nicht-festgelegten Registerwerten während der Zufallsprogrammerzeugung

Country Status (2)

Country Link
US (2) US6671664B1 (de)
DE (1) DE10058371A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7373463B2 (en) * 2003-02-13 2008-05-13 Stmicroelectronics S.A. Antifraud method and circuit for an integrated circuit register containing data obtained from secret quantities
US20080189528A1 (en) * 2007-02-02 2008-08-07 Mips Technologies, Inc. System, Method and Software Application for the Generation of Verification Programs
US7865793B2 (en) * 2008-04-30 2011-01-04 International Business Machines Corporation Test case generation with backward propagation of predefined results and operand dependencies
FR2957434B1 (fr) * 2010-03-11 2012-04-27 St Microelectronics Grenoble 2 Dispositif de test d'une architecture de calcul multitaches et procede de test correspondant
US9734033B2 (en) 2014-12-08 2017-08-15 International Business Machines Corporation Implementing processor functional verification by generating and running constrained random irritator tests for multiple processor system and processor core with multiple threads

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5748936A (en) * 1996-05-30 1998-05-05 Hewlett-Packard Company Method and system for supporting speculative execution using a speculative look-aside table
US6031992A (en) * 1996-07-05 2000-02-29 Transmeta Corporation Combining hardware and software to provide an improved microprocessor
US5926832A (en) * 1996-09-26 1999-07-20 Transmeta Corporation Method and apparatus for aliasing memory data in an advanced microprocessor
US5729554A (en) * 1996-10-01 1998-03-17 Hewlett-Packard Co. Speculative execution of test patterns in a random test generator
US6011908A (en) * 1996-12-23 2000-01-04 Transmeta Corporation Gated store buffer for an advanced microprocessor
US5881280A (en) * 1997-07-25 1999-03-09 Hewlett-Packard Company Method and system for selecting instructions for re-execution for in-line exception recovery in a speculative execution processor

Also Published As

Publication number Publication date
US6671664B1 (en) 2003-12-30
US20040153805A1 (en) 2004-08-05
US6886125B2 (en) 2005-04-26

Similar Documents

Publication Publication Date Title
DE69730004T2 (de) Digitalsystem-Simulation
US7266534B2 (en) System and method and product of manufacture for automated test generation via constraint satisfaction with duplicated sub-problems
DE69720821T2 (de) Fehlersuchsystem für Programme mit einer graphischen Benutzerschnittstelle
US5068812A (en) Event-controlled LCC stimulation
EP2765528B1 (de) Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit
DE3338333A1 (de) Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur
DE102006019292A1 (de) Modellieren programmierbarer Einrichtungen
DE3900248C2 (de) Verfahren zur schnellen Ablaufsteuerung digitaler Testmuster und Vorrichtung zur Durchführung des Verfahrens
DE19814415A1 (de) Logikanalyse-Untersystem in einem Zeitscheibenemulator
DE69732793T2 (de) Acht-bit-mikrokontroller mit risc-architektur
WO1992018944A1 (de) Verfahren zur verifikation datenverarbeitender systeme
DE60110811T2 (de) Verfahren zur bereitstellung von bitweisen einschränkungen während einer test-generierung
DE112018002316T5 (de) Codeabdeckungsverfolgung für ein mikrocontroller-programm
DE102019112301A1 (de) Befehls-Cache in einem Multithread-Prozessor
DE112019002778T5 (de) Simulationsvorrichtung, simulationsverfahren und elektronische steuereinheitsvorrichtung
DE10058371A1 (de) Verwaltung von nicht-festgelegten Registerwerten während der Zufallsprogrammerzeugung
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
DE2702722A1 (de) Instruktionsinterpretation in elektronischen datenverarbeitungsanlagen
DE102019112186A1 (de) Doppelladebefehl
DE10200833A1 (de) Gerät und Verfahren für eine Teststimuliverdichtung
DE10056825C2 (de) Verfahren, Vorrichtung und Computerprogramm zum Erzeugen eines Zufallstestcodes
DE112008003878T5 (de) Verfahren und Vorrichtung für die Bestimmung eines sich wiederholenden Bitwertmusters
DE102021212663A1 (de) Verfahren zum Fuzz-Testing
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
Voss et al. The analysis of modeling styles for system level VHDL simulations

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8130 Withdrawal