DE10058371A1 - Verwaltung von nicht-festgelegten Registerwerten während der Zufallsprogrammerzeugung - Google Patents
Verwaltung von nicht-festgelegten Registerwerten während der ZufallsprogrammerzeugungInfo
- 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
Links
- 238000012942 design verification Methods 0.000 title description 2
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000015654 memory Effects 0.000 claims description 33
- 238000000034 method Methods 0.000 claims description 31
- 230000006870 function Effects 0.000 claims description 6
- 230000000295 complement effect Effects 0.000 claims 2
- 230000001902 propagating effect Effects 0.000 claims 2
- 238000012360 testing method Methods 0.000 abstract description 15
- 238000011161 development Methods 0.000 abstract description 4
- 238000006243 chemical reaction Methods 0.000 abstract 1
- 230000000644 propagated effect Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 9
- 230000007547 defect Effects 0.000 description 7
- 108090000623 proteins and genes Proteins 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 241000251468 Actinopterygii Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 150000001768 cations Chemical class 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009249 intrinsic sympathomimetic activity Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 241000894007 species Species 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/263—Generation of test inputs, e.g. test vectors, patterns or sequences ; with adaptation of the tested hardware for testability with external testers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/2205—Detection 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/2236—Detection 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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)
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)
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 |
-
2000
- 2000-02-22 US US09/510,371 patent/US6671664B1/en not_active Expired - Lifetime
- 2000-11-24 DE DE10058371A patent/DE10058371A1/de not_active Withdrawn
-
2003
- 2003-08-26 US US10/647,296 patent/US6886125B2/en not_active Expired - Lifetime
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 |