-
Die
vorliegende Erfindung bezieht sich auf ein System zum Emulieren
einer elektronischen Vorrichtung und insbesondere auf ein System
gemäß dem Vorcharakterisierungssatz
des ersten Anspruchs.
-
Eine
elektronische Vorrichtung besteht aus einem Satz von Schaltungen
(Hardware), die konzipiert und hergestellt sind, um eine spezifische
Aufgabe zu erfüllen.
Die elektronische Vorrichtung ist im Allgemeinen in ein geeignetes
System so eingegliedert, dass dieselbe mit externen Elementen verbunden
werden kann, um Eingangssignale (Daten) zu empfangen; Operationen
verschiedener Typen (gemäß spezifischer
Anforderungen) werden bei den Eingangsdaten so ausgeführt, dass
Ausgangssignale (Ergebnisse) erhalten werden, die an die externen Elemente
geliefert werden.
-
Eine
elektronische Vorrichtung besteht im Allgemeinen aus einer integrierten
Schaltung, die für eine
gegebene Anwendung spezifisch ist (anwendungsspezifische integrierte
Schaltung oder ASIC). Die integrierte Schaltung ist geeignet aufgebaut
(kundenspezifisch), dieselbe wird unter Verwendung einer kanallosen
Gate-Schaltung hergestellt, bei der die Verbindungen zwischen den
verschiedenen Komponenten nur durch eine Endmetallisierungsmaske kundenspezifisch
gemacht werden (halb-kundenspezifisch), oder unter Verwendung eines
feldprogrammierbaren Gatter-Arrays (oder FPGA), das durch ein Aktivieren
geeigneter interner Verbindungen kundenspezifisch gemacht werden
kann; alternativ dazu wird die elektronische Vorrichtung unter Verwendung von
geeignet verbundenen Komponenten mit einem größeren oder kleineren Maß an Integration
hergestellt (festverdrahtete Logik). Diese elektronischen Vorrichtungen
unterscheiden sich von programmierten Logiksystemen, bei denen eine
Integrationskomponente sehr großen
Maßstabs
(Prozessor), die in der Lage ist, Anweisungen eines geeigneten Programms
auszufüh ren,
bereitgestellt ist; durch ein Variieren dieser Anweisungen ist es
dann möglich,
den Prozessor zu programmieren, um zu unterschiedlichen Zeiten unterschiedliche
Aufgaben auszuführen.
-
Eine
elektronische Vorrichtung, wie z. B. eine ASIC, die dazu vorgesehen
ist, ein Element eines Computersystems zu bilden, wird im Allgemeinen durch
ein Beschreiben der elektronischen Vorrichtung mittels geeigneter
Sprachen hoher Ebene (Hardwareentwurfssprache oder HDL) konzipiert,
die in der Lage sind, die Schaltungsstruktur der elektronischen
Vorrichtung automatisch zu erzeugen.
-
Bevor
die echte elektronische Vorrichtung physisch hergestellt wird, wird
ihr Betrieb durch ein Verwenden von Softwaresimulatoren getestet.
Auf einer ersten Stufe der Softwaresimulation wird der Betrieb der
elektronischen Vorrichtung in dem isolierten (alleinstehenden) Zustand
geprüft.
Zu diesem Zweck werden geeignete Softwareanwendungen (Simulatoren)
verwendet, die es ermöglichen,
den Betrieb der elektronischen Vorrichtung (die in HDL beschrieben ist)
zu simulieren, indem spezifische Werte an den Eingang (Reizvorrichtung)
angelegt werden und die Ergebnisse an dem Ausgang und gegebenenfalls
die Werte von internen Signalen (Zwischenergebnisse) geprüft werden.
Auf einer zweiten Stufe der Softwaresimulation wird die Wechselwirkung
der elektronischen Vorrichtung mit den externen Elementen, die mit
derselben verbunden sind, geprüft;
dies erfordert jedoch die Beschreibung in HDL auch der externen Elemente
(oder nur einer Schnittstelle derselben). In jedem Fall liegt die
Ausführungsgeschwindigkeit
des Softwaresimulators in der Größenordnung
von 50.000 bis 100.000 Mal unter derjenigen der echten elektronischen
Vorrichtung. Zum Beispiel wird ein Computersystem mit einer Betriebsgeschwindigkeit von
100 MHz mit einer Frequenz von 1-2 kHz simuliert, und deshalb ist
es nur möglich,
eine sehr geringe Anzahl von Anweisungen des Computersystems und
nicht ein ganzes Programm zu simulieren.
-
Aus
diesem Grund werden im Allgemeinen Hardwareemulatoren verwendet,
um den Betrieb der elektronischen Vorrichtung gründlicher zu testen. Hardwareemulatoren
basieren auf der Verwendung eines Prototyps der elektronischen Vorrichtung,
der z. B. unter Verwendung eines FPGA hergestellt wird. Der Prototyp
wird physisch mit den externen Elementen des echten Systems mittels
geeigneter Anschlüsse
verbunden, von denen jeder mit einem Kabel zur Verbindung mit dem
Prototyp ausgestattet ist. In dem Fall von ziemlich komplexen elektronischen
Vorrichtungen erfordert diese Lösung
jedoch die Verwendung einer Anzahl von FPAGs, die geeignet miteinander
verbunden sind. Die verschiedenen FPAGs können mittels geeigneter programmierbarer
Schalter verbunden werden; diese Lösung ist bezüglich der Ausführungsgeschwindigkeit
(in der Größenordnung von
10 bis 20 Mal unter derjenigen der echten elektronischen Vorrichtung,
wobei die Betriebsfrequenz des Computersystems z. B. 5-10 MHz beträgt) ziemlich
effizient, wirft jedoch aufgrund der beschränkten Möglichkeiten der Verbindung
praktische Schwierigkeiten auf. Alternativ dazu wird ein System
von FPAGs verwendet, bei dem bereits bestehende Verbindungen durch
eine Software durch einen eigens vorgesehenen Arbeitsplatzrechner
gesteuert werden; diese Lösung
ist außerordentlich
teuer und verringert die Ausführungsgeschwindigkeit
erheblich (in der Größenordnung
von 100 bis 200 Mal unter derjenigen der echten elektronischen Vorrichtung,
wobei die Betriebsfrequenz des Computersystems z. B. 0,5-1 MHz beträgt). In
jedem Fall zieht das Herstellen der Prototypen hohe Kosten nach
sich, und jegliche Modifizierung derselben erfordert sehr lange
Zeitperioden; außerdem
ist die Ausführungsgeschwindigkeit
des Computersystems durch die Betriebsfrequenz des Prototypen begrenzt
und ist immer erheblich geringer als die echte Betriebsgeschwindigkeit.
-
Ein
Beispiel des Hardwareemulationslösungsansatzes
ist durch Barroso L. u. a. in „RPM:
a rapid prototyping engine for multiprocessor systems"; Computer, Bd. 28,
Nr. 2, 1. Februar 1995, S. 26-34, XP000502736 beschrieben.
-
Es
sei auch darauf hingewiesen, dass beide Lösungen (Softwaresimulation
und Hardwareemulation) die vollständige Beschreibung der elektronischen
Vorrichtung in HDL zum Prüfen
ihres Betriebs erfordern.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, die im Vorhergehenden
genannten Nachteile zu beseitigen. Um diese Aufgabe zu erreichen, wird
ein System zum Emulieren einer elektronischen Vorrichtung vorgeschlagen,
wie es in dem ersten Anspruch beschrieben ist.
-
Die
vorliegende Erfindung schlägt
auch eine Leiteinheit und eine programmierbare Einheit zur Verwendung
bei diesem System und ein entsprechendes Verfahren zum Emulieren
einer elektronischen Vorrichtung vor.
-
Weitere
Charakteristika und die Vorteile des Verfahrens zum Emulieren einer
elektronischen Vorrichtung gemäß der vorliegenden
Erfindung werden aus der folgenden Beschreibung eines bevorzugten Ausführungsbeispiels
der Erfindung, die zur Orientierung und ohne Einschränkung bereitgestellt
ist, unter Bezugnahme auf die angehängten Figuren verstanden. Es
zeigen:
-
1 ein
schematisches Blockdiagramm eines Computersystems, bei dem die vorliegende
Erfindung verwendet werden kann;
-
2 ein
Ausführungsbeispiel
des Systems zum Emulieren einer elektronischen Vorrichtung gemäß der vorliegenden
Erfindung;
-
3 im
Detail die Pufferstruktur der Leiteinheit;
-
4 ein
schematisches Blockdiagramm eines Verfahrens, das verwendet wird,
um den Dialog mit der Leiteinheit zu steuern;
-
5a bis 5b in
Zeitdiagrammen zwei Beispiele von Transaktio nen, die durch das
Emulationssystem ausgeführt
werden.
-
Insbesondere
unter Bezugnahme auf 1 ist ein Computersystem 100 des
cc-NUMA-Typs – cache-kohärenter uneinheitlicher
Speicherzugriff – gezeigt.
Das Computersystem 100 umfasst zwei oder mehr Knoten N1,
N2, N3 und N4 (bei dem gezeigten Beispiel vier), die mittels eines
entfernten Kommunikationskanals in Form einer Schleife 105 (REM
LINK) verbunden sind.
-
Der
Knoten N1 (ähnliche Überlegungen
gelten für
die anderen Knoten N2 bis N4) besteht aus einem Systembus 110 (SYS
BUS), der unterschiedliche Abschnitte aufweist, wobei einer für die Übertragung
von Adressen verwendet wird (der Adressbus), einer für die Übertragung
von Daten (der Datenbus) und einer für die Übertragung von Befehlen (Steuerbus).
Ein oder mehr Prozessoren (μP)
C1, C2, C3, C4 (bei dem gezeigten Beispiel vier), von denen jeder normalerweise
mit einem internen Speicher des Cache-Typs ausgestattet ist (im
Allgemeinen mit zwei Ebenen), sind parallel mit dem Systembus 110 verbunden.
Der Systembus 110 ist auch mit einer Lokalbrückeneinheit 115 (LOC
BDG) verbunden, die die Verbindung mit einem lokalen Bus (in der
Figur nicht gezeigt) steuert, mit dem eine Gruppe (Cluster) von Eingangs-/Ausgangs- (oder
I/O-) Steuereinheiten verbunden ist. Der Knoten N1 umfasst einen
lokalen Speicher 120 (LOC MEM), normalerweise von dem Dynamischer-Direktzugriff-
(oder DRAM-) Typ, der mit dem Systembus 110 durch eine
geeignete Steuereinheit (in der Figur nicht gezeigt) verbunden ist.
-
Eine
Fernbrückeneinheit
(REM BDG) 125 verbindet den Knoten N1 mit der entfernten
Schleife 105 und steuert die Verbin dung des Knotens N1
mit den anderen Knoten N2 bis N4 des Computersystems 100.
Insbesondere steuert die Fernbrückeneinheit 125 die
verschiedenen Kommunikationsprotokolle des Systembusses 110 und
der entfernten Schleife 105, ihre verschiedenen Zeitgebungen,
die Übersetzung
der Adressen, die bei dem Systembus 110 und bei der entfernten
Schleife 105 verwendet werden, und Ähnliches.
-
Die
Agenten C1-C4, 115, 120 und 125 sind gleichzeitig
(im sogenannten Slave-Modus) mit dem Systembus 110 verbunden,
so dass dieselben den Wert empfangen, der auf demselben übertragen wird;
ein gegenseitig exklusiver Zugriff (im sogenannten Master-Modus)
auf den Systembus 110 durch diese Agenten zum Senden eines
gegebenen Werts wird durch eine geeignete Entscheidungseinheit (ARB) 130 gesteuert.
Insbesondere ist die Entscheidungseinheit 130 mit den Agenten
C1-C4, 115, 120 und 125 durch
eigens vorgesehene Leitungen (des Steuerbusses) zum Austausch von
Steuersignalen verbunden, die verwendet werden, um die Zugriffsanforderungen,
das Gewähren
eines Zugriffs und, falls nötig,
die Belegung (falls dies keine feste Dauer hat) der verschiedenen
Abschnitte (Adressen und Daten) des Systems 110 zu steuern.
-
Bei
dem im Vorhergehenden beschriebenen Computersystem 100 kann
jeder Prozessor C1-C4 sowohl auf Daten, die in dem lokalen Speicher 120 enthalten
sind, als auch auf Daten, die in den lokalen Speichern der anderen
Knoten N2-N4 enthalten sind, die als Ganzes durch den Begriff „entfernter
Speicher" angezeigt
sind, zugreifen. Es ist klar, dass die Zugriffszeit nicht einheitlich
ist (daher der Name NUMA), da die Fernspeicherzugriffszeit viel
länger
als die Lokalspeicherzugriffszeit ist. Um die Fernspeicherzugriffszeit
zu verringern, umfasst die Fernbrückeneinheit 125 im
Allgemeinen einen Cache-Speicher 135, der entfernter Cache
(RC) genannt wird, in dem entsprechende Daten des entfernten Speichers reproduziert
sind.
-
Da
die Daten sowohl in dem lokalen Speicher als auch in dem entfernten
Speicher in den verschiedenen Cache-Speichern reproduziert werden können (interne
Cache-Speicher in den Prozessoren oder entfernter Cache-Speicher),
ist es nötig,
ihre Kohärenz
sicherzustellen (daher der Name „cc"). Bei dem Knoten N1 wird dies normalerweise
mittels eines Nachprüfprozesses
erreicht, bei dem die Agenten, die mit dem Systembus 110 verbunden
sind, kontinuierlich die kohärenten
Datenlese-/-schreibanforderungen überwachen, die auf demselben
gesendet werden, um zu prüfen,
ob diese Daten in ihren internen Cache-Speichern vorhanden sind.
-
Die
Kohärenz
der Daten in dem lokalen Speicher 120, die in den Cache-Speichern
der anderen Knoten N2-N4 reproduziert sind, wird durch die Fernbrückeneinheit 125 gesteuert.
Um die Anzahl von Zugriffen auf die anderen Knoten N2-N4 zu verringern, umfasst
die Fernbrückeneinheit 125 im
Allgemeinen einen Speicher 140, der ein Lokalspeicherverzeichnis
(LMD) enthält,
das für
jeden Datenblock (Cache-Leitung) des lokalen Speichers spezifiziert,
ob dieser in anderen Knoten reproduziert ist oder nicht, in welchem
Knoten sich eine derartige Kopie befindet, und ob die Kopie modifiziert
worden ist oder nicht.
-
Jede
vollständige
Logikoperation, die auf dem Systembus 110 durch die Agenten
C1-C4, 115, 120 und 125 ausgeführt wird,
wird im Allgemeinen als eine Transaktion beschrieben. Insbesondere
wird ein Wert (ADR), der z. B. 64 Bits aufweist, der eine Adresse
(die z. B. 40 Bits aufweist) eines Datenblocks (in dem lokalen Speicher,
in einem internen Register eines Agenten, in dem entfernten Speicher oder
dergleichen) anzeigt und von Attributen, die sich auf diese Adresse
beziehen, auf dem Systembus 100 übertragen. Zum Beispiel zeigt
ein Abschnitt des Werts ADR den Typ von Operation an, der benötigt wird
(Lesen, Schreiben, Lesen mit der Absicht eines Modifizierens des
Datenelements oder dergleichen); normalerweise werden die Datenblöcke nicht
in einem geordneten Fluss gesteuert und können zu einem anfor dernden
Prozessor in einer anderen Reihenfolge als derjenigen, in der dieselben
angefordert wurden (außer
der Reihe) geliefert werden, und deshalb umfasst der Wert ADR auch
ein Tag bzw. eine Kennung (DTag), das bzw. die den anfordernden
Prozessor und die Transaktion, die sich darauf bezieht, identifiziert.
Die Übertragung
eines Datenblocks (gelesen oder zu schreiben), der z. B. 512 Bits
aufweist, wird im Allgemeinen durch ein Serialisieren der Operation
in eine Anzahl von aufeinanderfolgenden Phasen ausgeführt, im
Laufe von jeder von denen ein Abschnitt des Datenblocks, der z.
B. 64 Bits aufweist, und das zugeordnete Identifizierungstag DTag übertragen
werden. Andererseits werden Informationspakete (Adressen, Daten,
Befehle), von denen jedes z. B. 768 Bits aufweist, auf der entfernten
Schleife 105 übertragen.
-
Jede
Transaktion, die auf dem Systembus 110 gesendet wird, bewirkt
die Erzeugung (in spezifizierten aufeinanderfolgenden Momenten)
von geeigneten Steuersignalen. Insbesondere sind die Agenten C1-C4, 115, 120 und 125 durch
eigens vorgesehene Kanäle
(des Steuerbusses) mit der Entscheidungseinheit 130 zum
Senden eines Transaktionszustandssignals (AStatOut) verbunden; die
Entscheidungseinheit 130 ist mit allen Agenten durch einen Mehrpunktkanal
(des Steuerbusses) zum Senden eines kollektiven Transaktionszustandssignals
(AStatIn) verbunden, das von dem Wert der verschiedenen AStatOut-Signale
abhängig
ist. Auf ähnliche
Weise sind die Agenten C1-C4, 115, 120 und 125 durch
eigens vorgesehene Kanäle
(des Steuerbusses) mit der Entscheidungseinheit 130 zum
Senden eines Nachprüfergebnissignals
(ARespOut) verbunden; die Entscheidungseinheit 130 ist
durch einen Mehrpunktkanal (des Steuerbusses) mit allen Agenten
zum Senden eines kollektiven Nachprüfergebnissignals (ARespIn)
verbunden, das von dem Wert der verschiedenen ARespOut-Signale abhängig ist.
-
Die
vorliegende Erfindung ist jedoch auch zur Anwendung bei anderen
Computersystemen geeignet, z. B. denjenigen mit einem Kommunikationskanal
zwischen Knoten, der aus zwei oder mehr Schleifen besteht, einem
Netzwerk (Maschen-Router),
einem Bus oder einer anderen äquivalenten Kommunikationseinrichtung,
mit einer anderen Anzahl von Knoten, einer anderen Anzahl von Prozessoren
für jeden
Knoten, wobei die I/O-Einheiten direkt mit dem Systembus verbunden
sind, oder wobei die Entscheidungseinheit in der Fernbrückeneinheit
bereitgestellt ist; alternativ dazu ist es möglich, ein Computersystem mit
symmetrischen Prozessoren, ein Computersystem mit einem einzigen
Prozessor, ein Industriesteuersystem, eine numerisch gesteuerte
Maschine oder dergleichen zu verwenden. Allgemeiner kann die vorliegende
Erfindung verwendet werden, um eine beliebige elektronische Vorrichtung zu
emulieren, die mit externen Elementen verbunden ist, zum Empfangen
von Eingangsdaten, zum Erzeugen von entsprechenden Ergebnissen und
zum Liefern der Ergebnisse an dem Ausgang an die externen Elemente.
-
Unter
jetziger Bezugnahme auf 2 (die Elemente, die im Vorhergehenden
in 1 gezeigt wurden, sind durch die gleichen Bezugszeichen
oder Symbole identifiziert) ist ein System 200 zum Emulieren
der Fernbrückeneinheit
(in 1 durch 125 angezeigt) des im Vorhergehenden
beschriebenen Computersystems gezeigt; ähnliche Überlegungen gelten in dem Fall
einer Emulation einer anderen Komponente des Computersystems, wie
z. B. der Lokalspeichersteuereinheit, der Entscheidungseinheit, eines
Prozessors oder dergleichen.
-
Die
Fernbrückeneinheit
ist durch eine Leiteinheit (Transponder oder TSP) 205 ersetzt,
die auf eine ähnliche
Weise mit der entfernten Schleife 105 und mit dem Systembus 110 verbunden
ist. Insbesondere umfasst die Leiteinheit 205 eine Schnittstelleneinheit
(SBInt) 210 zum Empfangen und Senden von Werten auf dem
Systembus 110 und eine Schnittstelleneinheit (RLInt) 215 zum
Empfangen und Senden von Werten auf der entfernten Schleife 105.
Bevorzugt steuern die Schnittstellen 210, 215 auch
direkt die Erkennung (und möglicherweise
die Korrektur) von Fehlern bei dem empfangenen Wert und dergleichen.
-
Die
Leiteinheit 205 umfasst auch eine Pufferstruktur 220,
die verwendet wird, um die Werte, die von dem Systembus 110 und
von der entfernten Schleife 105 empfangen werden, und die
Werte, die auf denselben gesendet werden sollen, zu speichern. Insbesondere
werden ein Eingangspuffer für
den Systembus SBI und ein Ausgangspuffer für den Systembus SBO jeweils
verwendet, um die empfangenen Werte zu schreiben und die Werte,
die auf dem Systembus 110 gesendet werden sollen, zu lesen; auf ähnliche
Weise werden ein Eingangspuffer für die entfernte Schleife RLI
und ein Ausgangspuffer für
die entfernte Schleife RLO jeweils verwendet, um die empfangenen
Werte zu schreiben und die Werte, die auf der entfernten Schleife 105 gesendet
werden sollen, zu lesen. Die Schnittstelle 210 ist mit
den Puffern SBI, RLI und SBO, RLO verbunden, um die Werte, die von
dem Systembus 110 und von der entfernten Schleife 105 empfangen
werden, zu lesen und die Werte, die auf dem Systembus 110 und
auf der entfernten Schleife 105 gesendet werden sollen,
zu schreiben.
-
Die
Pufferstruktur 220 besteht aus einer einzigen Speichereinheit,
die logisch geeignet unterteilt ist; alternativ dazu sind zwei oder
mehr Einheiten, eine Mehrzahl von Registern oder äquivalente
Speichereinrichtungen zum Speichern der Daten und der Ergebnisse
bereitgestellt. Die Leiteinheit 205 umfasst zwei getrennte
Schnittstellen 210 und 215; alternativ dazu sind
eine einzige Schnittstelle, zwei, drei oder mehr getrennte Schnittstellen
oder eine äquivalente Schnittstelleneinrichtung
bereitgestellt, um die Daten an dem Eingang von den externen Elementen
zu empfangen und dieselben in die Speichereinrichtung zu schreiben
und die Ergebnisse von der Speichereinrichtung zu lesen und dieselben
an dem Ausgang an die externen Elemente zu liefern.
-
Ein
Emulationsprozessor, z. B. der Prozessor C1, liest durch die Schnittstelle 210 (wie
es im Folgenden im Detail beschrieben ist) die Werte, die in der
Pufferstruktur 220 gespeichert sind, oder nur einige derselben.
Der Emulationsprozessor C1 führt mittels
eines geeigneten Programms die Operationen aus, die durch die Fernbrückeneinheit
ausgeführt
werden müssten.
Zu diesem Zweck werden die Daten in dem entfernten Cache-Speicher
und in dem Lokalspeicherverzeichnis der Fernbrückeneinheit (in 1 durch 135 bzw. 140 angezeigt)
in einem Bereich des lokalen Speichers 120 gespeichert,
der eigens für
den Emulationsprozessor C1 vorgesehen ist. Die Ergebnisse, die von
dem Emulationsprozessor C1 erhalten werden, werden dann durch die Schnittstelle 210 (wie
es im Folgenden genauer beschrieben ist) in die Pufferstruktur 220 geschrieben, um
nachfolgend durch die Schnittstelle 210 und durch die Schnittstelle 215 auf
dem Systembus 110 bzw. auf der entfernten Schleife 105 gesendet
zu werden. Bevorzugt ist der Emulationsprozessor C1 eigens für die Emulation
der Fernbrückeneinheit
vorgesehen, um eine höhere
Ausführungsgeschwindigkeit
sicherzustellen.
-
Diese
Struktur weist den Vorteil auf, die Verwendung einer bereits bestehenden
Komponente (des Prozessors C1) zum Emulieren des Verhaltens der
elektronischen Vorrichtung zu gestatten, ohne zusätzliche
Elemente zu erfordern; außerdem
wird der Dialog zwischen der Leiteinheit 205 und dem Emulationsprozessor
C1 durch den Systembus 110 unter Verwendung einer bereits
bestehenden Funktionalität
gesteuert. Alternativ dazu kann der Prozessor C1 auch andere Aufgaben
in gleichzeitigem Modus ausführen,
oder ein externer Prozessor oder ein Personalcomputer (PC), die
mit der Leiteinheit durch eine zusätzliche Schnittstelle verbunden
sind, oder allgemein eine beliebige programmierbare Einheit, die
mit der Leiteinheit verbunden ist, können verwendet werden, um die
Daten von der Speichereinrichtung zu erhalten, um die entsprechenden
Ergebnisse zu bestimmen und um die Ergebnisse in die Speichereinrichtung
zu schreiben.
-
Bei
dem im Vorhergehenden beschriebenen System wird die zu emulierende
elektronische Vorrichtung durch eine Leiteinheit ersetzt, die nur
ihre Schnittstellen (unter Hinzufügung einiger Puffer zum Speichern
der Daten und der Ergebnisse) behält, während die Datenverarbeitung
durch eine andere programmierbare Einheit ausgeführt wird. Die Leiteinheit weist
nur die Funktion eines Empfangens der Daten und eines Weiterleitens
derselben zu der programmierbaren Einheit und die Funktion eines
Empfangens der entsprechenden Ergebnisse von der programmierbaren
Einheit und eines Weiterleitens derselben an die externen Bestimmungselemente auf.
-
Das
Emulationssystem gemäß der vorliegenden
Erfindung ermöglicht,
dass die elektronische Vorrichtung direkt in dem realen System geprüft wird; gleichzeitig
macht die programmierbare Einheit das Emulationssystem außerordentlich
flexibel, wobei die Möglichkeit
besteht, Modifizierungen sehr rasch vorzunehmen. Diese Lösung erleichtert
deshalb das Testen der Funktionen der elektronischen Vorrichtung
und vereinfacht den Prozess eines Fehleraufspürens (Fehlerbeseitigung) erheblich.
-
Die
Leiteinheit kann direkt aus ähnlichen
bereits bestehenden elektronischen Vorrichtungen abgeleitet werden.
Die Leiteinheit und die programmierbare Einheit (insbesondere das
Programm, das durch letztere ausgeführt wird) können auch zum Prüfen verschiedener ähnlicher
elektronischer Vorrichtungen wiederverwendet werden, was dieses System
außerordentlich
wirtschaftlich macht.
-
Die
Lösung
gemäß der vorliegenden
Erfindung ermöglicht,
dass die Logikoperation der elektronischen Vorrichtung (Funktionscharakteristika)
und die Korrektheit ihres Aufbaus (in HDL beschrieben) unabhängig geprüft werden.
-
Diese
Lösung
ermöglicht
es, die Funktionscharakteristika der elektronischen Vorrichtung
vor oder während
der Phase der Herstellung der elektronischen Vorrichtung, in anderen
Worten vor oder während
ihrer Beschreibung in HDL zu prüfen.
Somit wird das Prüfen
der logischen Korrektheit der elektronischen Vorrichtung im Voraus
ausgeführt,
was insbesondere in dem Fall von hochkomplexen elektronischen Vorrichtungen
vorteilhaft ist. Dies ermöglicht es
auch, (vollständig
geprüfte)
Schaltungselemente allmählich
während
der Entwicklungsphasen der elektronischen Vorrichtung zu der Leiteinheit
hinzuzufügen.
-
Die
Leiteinheit weist eine sehr einfache Struktur auf, so dass dieselbe
z. B. aus einem einzigen FPGA hergestellt werden kann, und ist folglich außerordentlich
schnell. Die Leiteinheit kann deshalb mit einer Geschwindigkeit
wirksam sein, die nahe bei der des realen Systems liegt. Es ist
klar, dass die einzelnen Operationen, die durch die programmierbare Einheit
ausgeführt
werden, langsamer sind. Da jedoch bei vielen Anwendungen die Operationen,
die durch die elektronische Vorrichtung ausgeführt werden sollen, nur einen
kleinen Prozentsatz (in der Größenordnung
von 5 %) der Gesamtanzahl von Operationen des Gesamtsystems ausmachen,
ermöglicht es
diese Lösung,
eine Gesamtsystemgeschwindigkeit zu erhalten, die noch höher als
diejenige von bekannten Hardwareemulationssystemen ist (mit einer Mehrzahl
von verbundenen FPGAs).
-
Es
ist somit möglich,
die Operation des Gesamtsystems mit einer Geschwindigkeit zu prüfen, die
der realen Geschwindigkeit nahe kommt (z. B. etwa 2-5 Mal langsamer
als die reale Geschwindigkeit bei einer Betriebsfrequenz von 20-50 MHz). Dies ermöglicht,
dass das gesamte System bei seiner realen Operation getestet wird,
wobei seine tatsächlichen
dynamischen Probleme berücksichtigt
werden; z. B. ist es in dem Fall eines Computersystems möglich, ein
komplettes Programm mit einer Geschwindigkeit auszuführen, die
der realen Geschwindigkeit nahe kommt, wodurch eine vollständigere
Abdeckung des Prüfprozesses
erhalten wird, während auch
Grenzbetriebsbedingungen und seltene Ereignisse getestet werden.
-
Diese
Struktur ermöglicht,
dass das System im Voraus modifiziert wird, um dasselbe an die neue elektronische
Vorrichtung anzupassen, z. B. um seine Leistung zu optimieren (Abstimmung);
somit kann die Betriebsumgebung der neuen elektronischen Vorrichtung
parallel zu der Herstellung der Vorrichtung vorbereitet werden,
ohne dass die Notwendigkeit besteht, auf die tatsächliche
Verfügbarkeit
der elektronischen Vorrichtung zu warten.
-
Unter
jetziger Bezugnahme auf 3 (die Elemente, die im Vorhergehenden
in 2 gezeigt wurden, sind durch die gleichen Bezugszeichen
oder Symbole identifiziert) ist die Pufferstruktur der Leiteinheit
genauer gezeigt.
-
Der
Puffer SBI, der verwendet wird, wenn die Leiteinheit im Slave-Modus
wirksam ist, umfasst einen Systembuseingangsadresspuffer (SBIA),
der verwendet wird, um die Adresse eines Datenblocks und die entsprechenden
Attribute (Typ von benötigter Operation,
zugeordnetes Identifikationstag usw.) zu speichern, die von dem
Systemadressbus empfangen werden; auf ähnliche Weise wird ein Systembuseingangsdatenpuffer
(SBID) verwendet, um einen Datenblock zu speichern, der von dem
Systemdatenbus empfangen wird. Die Puffer SBIA und SBID sind einem
entsprechenden Indikatorregister (Flag) SBI_Busy zugeordnet, das
den Zustand dieser Puffer anzeigt.
-
Der
Puffer SBI ist auch einem Register RO_SBI zugeordnet, das verwendet
wird, um das ARespOut-Signal zu speichern, das das Ergebnis der
Nachprüfung
für die
Transaktion anzeigt, die in dem Puffer SBI gespeichert ist (an die
Entscheidungseinheit zu senden); das Register RO_SBI ist einem entsprechenden
Flag FRO_SBI zugeordnet, das den Zustand dieses Registers anzeigt.
Auf ähnliche
Weise wird ein Register RI_SBI verwendet, um das kollektive Nachprüfergeb nissignal
ARespIn für die
Transaktion zu speichern, die in dem Puffer SBI gespeichert ist
(von der Entscheidungseinheit empfangen); das Register RI_SBI ist
einem entsprechenden Flag FRI_SBI zugeordnet, das den Zustand dieses
Registers anzeigt. Ein weiteres Flag FRIC_SBI wird verwendet, um
anzuzeigen, dass die Transaktion, die in dem Puffer SBI gespeichert
ist, gelöscht werden
soll.
-
Der
Puffer SBO, der verwendet wird, wenn die Leiteinheit im Master-Modus
wirksam ist, umfasst einen Systembusausgangsadresspuffer (SBOA),
der bei einer Lese- oder Schreibtransaktion verwendet wird, um die
Adresse eines Datenblocks und die entsprechenden Attribute, die
auf dem Systemadressbus gesendet werden sollen, zu speichern; ein
Systembusausgangsdatenpuffer (SBOD) wird verwendet, um den entsprechenden
Datenblock (der geschrieben werden soll) zu speichern. Die Puffer SBOA
und SBOD sind einem entsprechenden Flag SBO_Busy zugeordnet, das
den Zustand dieser Puffer anzeigt.
-
Der
Puffer SBO umfasst auch einen Nur-Systembusausgangsdaten-Tagpuffer
(SBDOT), der verwendet wird, um das Identifikationstag (das auf
dem Systemadressbus gesendet werden soll) zu speichern, das einem
Datenblock bei einer Eingriffstransaktion zugeordnet wird, bei der
der Datenblock, der durch einen Prozessor angefordert wird, durch
einen Eingriffsprozessor (eines anderen Knotens) geliefert wird,
der diesen Datenblock in modifizierter Form in seinem eigenen Cache-Speicher
aufweist; auf ähnliche
Weise wird ein Nur-Systembusausgangsdaten-Puffer (SBDO) verwendet,
um diesen Datenblock (der auf dem Systemdatenbus gesendet werden
soll) zu speichern. Die Puffer SBDOT und SBDO sind einem entsprechenden
Flag SBDO_Busy zugeordnet, das den Zustand dieser Puffer anzeigt.
-
Der
Puffer SBO ist auch einem Register RI_SBO zugeordnet, das verwendet
wird, um das Signal ARespIn zu speichern, das das kollektive Ergebnis
des Nachprüfens
für die
Transaktion anzeigt, die in dem Puffer SBOA gespeichert ist (von
der Entscheidungseinheit empfangen).
-
Der
Fernschleifeneingangspuffer RLI wird verwendet, wenn die Leiteinheit
im Slave-Modus wirksam ist, um ein Paket zu speichern, das von der entfernten
Schleife empfangen wird; der Puffer RLI ist einem entsprechenden
Flag RLI_Busy zugeordnet, das den Zustand dieses Puffers anzeigt.
Auf ähnliche
Weise wird der Fernschleifenausgangspuffer RLO verwendet, wenn die
Leiteinheit im Master-Modus wirksam ist, um ein Paket zu speichern, das
auf der entfernten Schleife gesendet werden soll; der Puffer RLO
ist einem entsprechenden Flag RLO_Busy zugeordnet, das den Zustand
dieses Puffers anzeigt.
-
Wenn
die 2 und 3 nun gemeinsam betrachtet werden,
empfängt
die Schnittstelle 215 alle Transaktionen, die auf der entfernten
Schleife 105 übertragen
werden; wenn eine Transaktion an den Knoten N1 adressiert ist, speichert
die Schnittstelle 215 das entsprechende Paket in dem Puffer RLI
(falls dieser nicht besetzt ist); wenn das Paket in dem Puffer RLI
vollständig
verfügbar
ist, setzt die Schnittstelle 215 automatisch das Flag RLI_Busy. Dieses
Flag wird automatisch durch die Schnittstelle 215 rückgesetzt,
sobald der Emulationsprozessor C1 den Inhalt des Puffers RLI vollständig gelesen
hat.
-
Auf ähnliche
Weise empfängt
die Schnittstelle 210 alle Transaktionen, die auf dem Systembus 110 übertragen
werden. Die Schnittstelle 210 prüft (mittels des Werts des Identifikationstags
DTag) den Prozessor, der die Transaktion emittiert hat. Falls der anfordernde
Prozessor sich von dem Emulationsprozessor C1 unterscheidet, wird
die Transaktion in dem Puffer SBI gespeichert (falls derselbe nicht
besetzt ist); gleichzeitig setzt die Schnittstelle 215 automatisch
das Flag SBI_Busy und sendet an die Entscheidungseinheit 130 ein
Transaktionszustandssignal AStatOut, das anzeigt, dass die Transaktion
durch den anfordernden Prozessor wiederholt werden muss (AStatOut
= Neuversuch). Bis das Flag SBI_Busy gesetzt wird, ist die Leiteinheit
besetzt, und deshalb werden andere Transaktionen gelöscht und wiederholt
(erneut versucht).
-
Die
Transaktionen, die durch den Prozessor C1 emittiert werden und nicht
an die Leiteinheit 205 adressiert sind, werden nicht beachtet,
da dieselben direkt durch den Emulationsprozessor C1 geprüft werden.
Wenn die Transaktion, die durch den Prozessor C1 emittiert wird,
an die Leiteinheit 205 adressiert ist, führt die
Schnittstelle 210 die angeforderten Operationen aus, die
in dem Lesen oder Beschreiben der Pufferstruktur 220 bestehen
(wie es im Folgenden genau beschrieben ist).
-
Wenn
der Emulationsprozessor C1 (aus dem Inhalt des Flags SBI_Busy) feststellt,
dass eine neue Transaktion in dem Puffer SBI gespeichert worden ist,
führt derselbe
alle angeforderten Operationen aus und bestimmt den Wert des entsprechenden Nachprüfergebnissignals
ARespOut. An diesem Punkt speichert der Emulationsprozessor C1 diesen Wert
in dem Register RO_SBI; gleichzeitig wird das entsprechende Flag
FRO_SBI automatisch gesetzt (die Flags FRI_SBI und FRIC_SBI werden
gleichzeitig rückgesetzt).
-
Die
Schnittstelle 210 vergleicht alle Transaktionen, die von
dem Systembus 110 empfangen werden, mit der Transaktion,
die in dem Puffer SBI gespeichert ist (Adresse und Identifikationstag).
Falls die empfangene Transaktion mit derjenigen übereinstimmt, die in dem Puffer
SBI gespeichert ist, und das Flag FRO_SBI gesetzt ist, sendet die
Schnittstelle 210 an die Entscheidungseinheit 130 ein
Transaktionszustandssignal AStatOut, das anzeigt, dass die Transaktion
geprüft
werden kann (AStatOut = Null), und nachfolgend das Signal ARespOut,
das das Ergebnis des Nachprüfens
anzeigt, das in dem Register RO_SBI gespeichert ist. Gleichzeitig
setzt die Schnittstelle 210 die Flags SBI_Busy und FRO_SBI zurück, so dass
eine neue Transaktion in dem Puffer SBI gespeichert werden kann.
Die Schnittstelle 210 empfängt dann von der Entscheidungseinheit 130 das
entsprechende kollektive Nachprüfergebnissignal
ARespIn für
die vorhergehende Transaktion und speichert dasselbe in dem Register
RI_SBI, wobei gleichzeitig das entsprechende Flag FRI_SBI gesetzt wird,
derart, dass dieses Signal verfügbar
ist, um nachfolgend durch den Emulationsprozessor C1 gelesen zu
werden; es sei darauf hingewiesen, dass diese Operationen notwendig
sind, da dieses Signal ARespIn, das auch durch den Emulationsprozessor C1
empfangen wird, durch diesen Prozessor nicht beachtet wird, da dasselbe
nicht einer Transaktion entspricht, die durch denselben emittiert
wird.
-
Bei
einem bevorzugten Ausführungsbeispiel der
vorliegenden Erfindung wird die Transaktion, die in dem Puffer SBI
gespeichert ist, nach einem maximalen Zeitintervall gelöscht (Zeitablauf).
Eine besonders einfache Lösung
besteht in dem Setzen (durch die Schnittstelle 210) des
Flags FRIC_SBI nach einer vorbestimmten Anzahl (z. B. 32) von Transaktionen, die
von dem Systembus 110 empfangen werden, die nicht mit derjenigen übereinstimmen,
die in dem Puffer SBI gespeichert ist; alternativ dazu kann das
Flag FRIC_SBI nach einer vorbestimmten Anzahl von Taktsignalen gesetzt
werden, die verwendet werden, um die Operation des Computersystems
zu synchronisieren, z. B. 96 oder dergleichen. Dies bewirkt das automatische
Rücksetzen
des Flags SBI_Busy und folglich das Löschen der Transaktion, die
in dem Puffer SBI gespeichert ist. Auf diese Weise ist es möglich, das
Phänomen
einer Blockade des Emulationssystems 200 zu vermeiden,
die durch gelöschte Transaktionen
bewirkt wird, die nachfolgend nicht erneut emittiert werden.
-
Wenn
die Leiteinheit 205 eine Transaktion auf der entfernten
Schleife 105 senden muss, speichert der Emulationsprozessor
C1 das zu sendende Paket in dem Register RLO; wenn das Paket vollständig in
dem Puffer RLO verfügbar
ist, setzt die Schnittstelle 215 automatisch das Flag RLO_Busy.
-
Die
Schnittstelle 215 steuert dann eigenständig die Übertragung dieses Pakets auf
der entfernten Schleife 105; sobald der gesamte Inhalt
des Puffers RLO auf der entfernten Schleife 105 gesendet
worden ist, setzt die Schnittstelle 215 automatisch das Flag
RLO_Busy zurück.
-
Auf ähnliche
Weise speichert, wenn die Leiteinheit 205 eine Transaktion
auf den Systembus 110 senden muss, der Emulationsprozessor
C1 die entsprechende Information in dem Puffer SBO.
-
Insbesondere
speichert der Emulationsprozessor C1 in dem Fall einer Lesetransaktion
in dem Register SBOA die Adresse des zu lesenden Datenblocks mit
den entsprechenden Attributen, und in dem Fall einer Schreibtransaktion
speichert der Emulationsprozessor C1 in dem Register SBOA die Adresse
des zu schreibenden Datenblocks mit den entsprechenden Attributen
und speichert den entsprechenden Datenblock in dem Register SBOD. Wenn
diese Informationen vollständig
in dem Puffer SBO verfügbar
sind, setzt die Schnittstelle 210 automatisch das Flag
SBO_Busy.
-
Die
Schnittstelle 215 steuert dann automatisch den Zugriff
auf den Systembus 110. Das kollektive Nachprüfergebnissignal
ARespIn, das dieser Transaktion entspricht, das durch die Entscheidungseinheit 130 erzeugt
wird, wird in dem Register RI_SBO gespeichert, derart, dass dasselbe
nachfolgend durch den Emulationsprozessor C1 gelesen werden kann.
-
Das
Flag SBO_Busy wird automatisch durch die Schnittstelle 210 am
Ende der Transaktion rückgesetzt.
Insbesondere wird in dem Fall einer Transaktion, die nicht das Lesen
oder Schreiben von Daten aufweist, das SBO_Busy rückgesetzt,
sobald die Leiteinheit 205 das entsprechende Signal ARespIn empfangen
hat und dasselbe in dem Register RI_SBO gespeichert hat. In anderen
Fällen
empfängt die
Leiteinheit 205 das entsprechende Signal ARespIn und speichert
dasselbe in dem Register RI_SBO. Falls dieses Signal einen Wert
auf weist, der anzeigt, dass die Transaktion wiederholt (ARespIn
= Neuversuch) oder gelöscht
(ARespIn = Neuausführung)
werden muss, setzt die Schnittstelle 210 sofort das Flag
SBO_Busy zurück;
umgekehrt wird das Flag SBO_Busy rückgesetzt, wenn der Datenblock
in dem Fall einer Lesetransaktion vollständig durch den Systembus 110 empfangen
worden ist, oder wenn derselbe im Fall einer Schreibtransaktion
vollständig
auf dem Systembus 110 gesendet worden ist.
-
In
dem Fall einer Eingriffstransaktion speichert der Emulationsprozessor
C1 jedoch das Identifikationstag des benötigten Datenblocks in dem Register
SBDOT und speichert den Datenblock, der durch den eingreifenden
Prozessor gesendet wird, in dem Register SBDO. Wenn diese Informationen
vollständig
in dem Puffer SBO verfügbar
sind, setzt die Schnittstelle 210 automatisch das Flag
SBDO_Busy. Die Schnittstelle 210 steuert dann eigenständig die Übertragung
dieses Datenblocks auf dem Systembus 110; sobald der Inhalt
des Puffers SBDO vollständig
auf dem Systembus 110 gesendet worden ist, setzt die Schnittstelle 210 automatisch
das Flag SBDO_Busy zurück.
-
Ähnliche Überlegungen
gelten in Fällen,
bei denen andere Werte in der Pufferstruktur gespeichert werden,
andere Kommunikationsprotokolle verwendet werden, Pufferwarteschlangen
für die
Steuerung einer Mehrzahl von Werten des gleichen Typs bereitgestellt
sind, u. a.; im Allgemeinen umfassen die Ergebnisse, die durch die
zu emulierende elektronische Vorrichtung erzeugt werden, Zustandssignale
für Operationen,
die entsprechenden Daten zugeordnet sind, und die Leiteinheit erzeugt
ein Zustandssignal, das anzeigt, dass die Operationen nicht ausgeführt worden
sind, wenn die entsprechenden Daten in die Speichereinrichtung geschrieben
worden sind.
-
Somit
bleiben, während
eine Transaktion durch den Emulationsprozessor ausgeführt wird,
die Systemressourcen nicht besetzt, während auf ihren Abschluss gewartet
wird; dies ermöglicht,
dass die Operation des Systems von der tatsächlichen Ausführungsgeschwindigkeit
der Transaktion durch den Emulationsprozessor getrennt wird. Die
vorliegende Erfindung ist deshalb auch zur Anwendung geeignet, wenn
die Systemressourcen für
die gesamte Transaktion besetzt gehalten werden, die durch den Emulationsprozessor
ausgeführt
wird, bei elektronischen Vorrichtungen, bei denen keine Zustandssignale
geliefert werden, und dergleichen.
-
Falls
nun der Emulationsprozessor C1 betrachtet wird, fragt dieser Prozessor
bei einem bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung periodisch die Leiteinheit 205 durch
einen Prozess, der als Abrufen bekannt ist, ab, um zu prüfen, ob
der Inhalt der Pufferstruktur 220 gelesen werden muss (da
derselbe neue Werte enthält,
die von dem Systembus 110 oder von der entfernten Schleife 105 empfangen
worden sind); auf ähnliche
Weise fragt der Emulationsprozessor C1 periodisch die Leiteinheit 205 ab,
um zu prüfen,
ob die Pufferstruktur 220 frei ist, um neue Werte zu empfangen.
-
Unter
Bezugnahme insbesondere auf 4 ist ein
schematisches Blockdiagramm eines Verfahrens 400 gezeigt,
das verwendet wird, um den Dialog mit der Leiteinheit gemäß den obigen
Ausführungen zu
steuern; dieses Verfahren 400 wird mittels eines geeigneten Überwachungsprogramms
implementiert, in Software oder Firmware implementiert und durch
den Emulationsprozessor ausgeführt.
Das Verfahren 400 beginnt bei Block 405 und geht
dann über zu
Block 410, bei dem der Emulationsprozessor (mittels einer
geeigneten Transaktion, die auf dem Systembus gesendet wird) den
Inhalt der Pufferstruktur der Leiteinheit liest.
-
Wird
zu Block 415 übergegangen,
prüft der Emulationsprozessor
den Inhalt des Flags SBI_Busy. Falls dieses Flag gesetzt ist und
der Inhalt des Puffers SBI noch nicht gelesen worden ist, geht das
Verfahren zu Block 420 über,
bei dem die Operationen, die der Transaktion zugeordnet sind, die in
dem Puffer SBI gespeichert ist, ausgeführt werden; im Allgemeinen
kehrt, wenn diese Operationen gestartet worden sind, das Verfahren
direkt zu Block 415 zurück, ohne
auf ihren Abschluss zu warten, um das Überwachen des Eingangsflags
der Pufferstruktur der Leiteinheit wiederaufzunehmen.
-
Im
gegensätzlichen
Fall fährt
das Verfahren mit Block 425 fort, bei dem der Emulationsprozessor den
Inhalt des Flags FRI_SBI prüft.
Falls dieses Flag gesetzt ist und der Inhalt des Registers RI_SBI
noch nicht gelesen worden ist, geht das Verfahren zu Block 430 über, bei
dem das kollektive Nachprüfergebnissignal
ARespIn für
die laufende Transaktion aus dem Register RI_SBI gelesen wird, und
kehrt dann zu Block 415 zurück.
-
Im
gegensätzlichen
Fall geht das Verfahren zu Block 435 über, bei dem der Inhalt des
Flags RLI_Busy geprüft
wird. Falls dieses Flag gesetzt ist und der Inhalt des Puffers RLI
noch nicht gelesen worden ist, fährt
das Verfahren mit Block 440 fort, bei dem der Inhalt des
Pakets, das aus dem Puffer RLI gelesen wird, interpretiert wird
und die zugeordneten Operationen gestartet werden (ohne auf ihren
Abschluss zu warten); das Verfahren kehrt dann zu Block 415 zurück. Im gegensätzlichen
Fall geht das Verfahren direkt zu Block 445 über (im
Folgenden beschrieben).
-
Somit
werden die Operationen im Slave-Modus, der allen Eingangspuffern
zugeordnet ist, ausgeführt,
wobei die Priorität
durch die Reihenfolge bestimmt wird, in der die entsprechenden Flags überwacht
werden. Erst wenn alle Eingangspuffer gelesen worden sind, fährt das
Verfahren fort, die Operationen im Master-Modus auszuführen, der
den Ausgangspuffern der Pufferstruktur der Leiteinheit zugeordnet
ist. Dies hat den Vorteil, dass ermöglicht wird, dass der Ausführung neuer
Transaktionen Priorität gegenüber dem
Abschluss von bereits laufenden Transaktionen gegeben wird.
-
Falls
nun Block 445 betrachtet wird, prüft das Verfahren den Inhalt
des Flags SBO_Busy. Falls dieses Flag nicht gesetzt ist und der
Emulationsprozessor Informationen (bei einer Lese- oder Schreibtransaktion)
auf dem Systembus senden muss, geht das Verfahren zu Block 450 über, bei
dem diese Informationen (durch eine geeignete Transaktion) in die
Puffer SBOA und SBOD geschrieben werden; das Verfahren kehrt dann
zu Block 445 zurück,
um das Überwachen
des Ausgangsflags zu wiederholen.
-
In
dem gegensätzlichen
Fall fährt
das Verfahren mit Block 455 fort, bei dem der Emulationsprozessor
den Inhalt des Registers RI_SBO liest, falls auf das kollektive
Nachprüfergebnissignal
ARespIn für
eine Transaktion gewartet wird (die in dem Puffer SBOA gespeichert
ist), die auf dem Systembus durch die Leiteinheit gesendet wird.
-
Unter
jetziger Bezugnahme auf Block 460 prüft der Emulationsprozessor
den Inhalt des Flags SBDO_Busy. Falls dieses Flag nicht gesetzt
ist und der Emulationsprozessor Informationen (bei einer Eingriffstransaktion)
auf dem Systembus senden muss, geht das Verfahren zu Block 465 über, bei
dem diese Informationen (mittels einer geeigneten Transaktion) in
die Puffer SBDOT und SBDO geschrieben werden, und kehrt dann zu
Block 445 zurück.
-
In
dem gegensätzlichen
Fall geht das Verfahren zu Block 470 über, bei dem der Emulationsprozessor
den Inhalt des Flags RLO_Busy prüft.
Falls dieses Flag nicht gesetzt ist und der Emulationsprozessor
ein Paket auf der entfernten Schleife senden muss, wird dieses Paket
(mittels einer geeigneten Transaktion) in den Puffer RLO geschrieben;
das Verfahren kehrt dann zu Block 445 zurück.
-
In
dem gegensätzlichen
Fall prüft
das Verfahren bei Block 480, ob die Unterbrechung des Überwachungsprogramms,
das in dem Emulationsprozessor ausgeführt wird, angefordert wurde.
Ist dies der Fall, endet das Verfahren am Endblock 485, wohingegen,
wenn dies nicht der Fall ist, das Verfahren zu Block 410 zurückkehrt,
so dass die im Vorhergehenden beschriebenen Operationen kontinuierlich wiederholt
werden können.
-
Alternativ
dazu können
die verschiedenen Flags mit unterschiedlichen Prioritäten (z.
B. gemäß geschätzten Zeitplanungstaktiken) überwacht
werden, die verschiedenen Puffer, Flags und Register, die aus der
Leiteinheit gelesen werden, können
mittels entsprechender gleichzeitiger Prozesse gesteuert werden,
der Emulationsprozessor kann die Werte, die in die Pufferstruktur
geschrieben werden sollen, in jedem Fall zu der Leiteinheit senden
(wobei ein Zustandsignal für
die Transaktion AStatOut = Neuversuch empfangen wird, falls der
entsprechende Puffer nicht frei ist), die Leiteinheit kann ein Unterbrechungssignal
an den Emulationsprozessor senden, wenn der Inhalt der Pufferstruktur
durch die Schnittstellen mit dem Systembus und mit der entfernten Schleife
modifiziert worden ist (wobei dieses Signal maskiert ist, bis seine
Bedienung abgeschlossen ist), oder andere Unterbrechungssignale
können
verwendet werden, um bestimmte Situationen anzuzeigen, die so behandelt
werden sollen, dass dieselben eine hohe Priorität aufweisen, wie z. B. das
Setzen des Flags SBI_Busy, des Flags RLI_Busy und des Flags SBO_Busy,
die Leiteinheit kann die Daten direkt an den Emulationsprozessor
senden oder dergleichen.
-
Ein
Beispiel für
eine Transaktion, die durch das im Vorhergehenden beschriebene Emulationssystem
ausgeführt
wird, ist in dem Zeitdiagramm in 5a gezeigt.
Wie gewöhnlich
wird ein Signal (ein Bit) durch eine einzelne Linie dargestellt,
während Werte,
die eine Mehrzahl von Bits aufweisen, durch ein Band dargestellt
werden (die Kreuzungspunkte sind die Momente des Schaltens).
-
Es
wird angenommen, dass ein allgemeiner Prozessor (z. B. der Prozessor,
der in 3 durch C3 angezeigt ist) eine Transaktion TR1
auf dem Systembus (SYS BUS) sendet, um das Lesen eines Datenblocks
in dem lokalen Speicher anzufordern. Die Transaktion TR1 wird von
der entsprechenden Schnittstelle empfangen und in dem Puffer SBI
gespeichert (wobei das Flag SBI_Busy automatisch gesetzt wird).
Die Schnittstelle mit dem Systembus sendet dann an die Entscheidungseinheit
ein Transaktionszustandssignal AStatOut = Neuversuch, so dass die
Transaktion TR1 gelöscht
wird.
-
Der
Emulationsprozessor liest dann den Inhalt des Puffers SBI und prüft dann
die Transaktion TR1, die in demselben gespeichert ist. Es wird angenommen,
dass der Emulationsprozessor C1 (durch ein Untersuchen des Inhalts
des Verzeichnisses, das in dem lokalen Speicher gespeichert ist)
feststellt, dass das angeforderte Datenelement sich nicht in modifizierter
Form in irgendeinem der anderen Knoten des Systems befindet. In
diesem Fall schreibt der Emulationsprozessor den AStatOut-Wert des
entsprechenden Nachprüfergebnisses
(AStatOut = sauber bzw. clean) in das RO_SBI-Register (wobei das Flag FRO_SBI automatisch
gesetzt wird).
-
Wenn
der anfordernde Prozessor C3 erneut die Transaktion TR1 auf dem
Systembus sendet, wird diese Transaktion durch die entsprechende Schnittstelle
empfangen, die prüft,
dass dieselbe mit der Transaktion übereinstimmt, die in dem Puffer
SBI gespeichert ist (und dass das Flag FRO_SBI gesetzt ist). An
diesem Punkt sendet die Schnittstelle mit dem Systembus an die Entscheidungseinheit
ein Transaktionszustandssignal AStatOut = Null und dann das ARespOut-Signal
des Ergebnisses des Nachprüfens,
das in dem Register RO_SBI gespeichert ist (ARespOut = sauber),
während
die Flags SBI_Busy und FRO_SBI automatisch rückgesetzt werden.
-
Unter
jetziger Bezugnahme auf 5b sendet
der Prozessor C3 eine weitere Transaktion TR2 auf dem Systembus,
um das Lesen eines Datenblocks in dem lokalen Speicher anzufordern,
die in dem Puffer SBI gespeichert wird und nachfol gend durch den
Emulationsprozessor auf die gleiche Weise wie bei dem vorhergehenden
Fall gelesen wird.
-
Es
sei nun angenommen, dass der Emulationsprozessor (durch ein Untersuchen
des Inhalts des Verzeichnisses, das in dem lokalen Speicher gespeichert
ist) feststellt, dass das Anforderungsdatenelement in modifizierter
Form in einem anderen Knoten vorhanden ist (z. B. dem Knoten, der
in 2 durch N2 angezeigt ist). In diesem Fall schreibt
der Emulationsprozessor in das Register RO_SBI einen Wert AStatOut
des Ergebnisses des Nachprüfens, der
anzeigt, dass die Transaktion gelöscht und für eine nachfolgende Neuaktivierung
ausgesetzt werden muss (ARespOut = Neuausführung), wobei das Flag FRO_SBI
automatisch gesetzt wird.
-
Wenn
der anfordernde Prozessor C3 die Transaktion TR2 erneut auf dem
Systembus sendet, wird diese Transaktion durch die entsprechende Schnittstelle
empfangen, die prüft,
dass dieselbe mit der Transaktion übereinstimmt, die in dem Puffer
SBI gespeichert ist (und dass das Flag FRO_SBI gesetzt ist). An
diesem Punkt sendet die Schnittstelle mit dem Systembus an die Entscheidung
ein Transaktionszustandssignal AStatOut = Null und nachfolgend das
ARespOut-Signal des Ergebnisses des Nachprüfens, das in dem Register RO_SBI
gespeichert ist (ARespOut = Neuausführung), während die Flags SBI_Busy und
FRO_SBI automatisch rückgesetzt werden.
-
Gleichzeitig
schreibt der Emulationsprozessor in den Puffer RLO ein Paket PCK1,
das der Transaktion TR2 entspricht (wobei das Flag RLO_Busy automatisch
gesetzt wird), das dann an den Knoten N2 gesendet wird (wobei das
Flag RLO_Busy automatisch rückgesetzt
wird). Der Knoten N2 sendet dann an die Leiteinheit ein Antwortpaket
PCK2 für
diese Transaktion, das durch die Schnittstelle mit der entfernten
Schleife empfangen wird und in dem Puffer RLI gespeichert wird (wobei das
Flag RLI_Busy automatisch gesetzt wird).
-
Der
Emulationsprozessor liest dann den Inhalt des Puffers RLI (wobei
das Flag RLI_Busy automatisch rückgesetzt
wird) und erhält
von dem Paket PCK2 den Wert ARespOut des Ergebnisses des Nachprüfens der
Transaktion TR2 (ARespOut = RespN2).
-
Der
Emulationsprozessor schreibt in den Puffer SBO (wobei das Flag SBO_Busy
automatisch gesetzt wird) eine Transaktion, um die Transaktion TR2
erneut zu aktivieren, die vorhergehend ausgesetzt wurde (ReRun TR2),
die dann auf dem Systembus gesendet wird (während das Flag SBO_Busy automatisch
rückgesetzt
wird). Wenn der anfordernde Prozessor C3 die Transaktion TR2 erneut
auf dem Systembus sendet, wird diese Transaktion wie zuvor durch
die entsprechende Schnittstelle empfangen und in dem Puffer SBI
gespeichert, während
das Flag SBI_Busy automatisch gesetzt wird (durch das Senden eines
Transaktionszustandssignals AStatOut = Neuversuch an die Entscheidungseinheit).
Der Emulationsprozessor liest dann den Inhalt des Puffers SBI, und
da derselbe bereits Zugriff auf das entsprechende Nachprüfergebnissignal
hat (das vorhergehend von dem Knoten N2 empfangen wurde), schreibt
derselbe diesen Wert ARespOut = RespN2 in das Register RO_SBI, während das
Flag FRO_SBI automatisch gesetzt wird.
-
Wenn
der anfordernde Prozessor C3 die Transaktion TR2 erneut auf dem
Systembus sendet, wird diese Transaktion durch die entsprechende Schnittstelle
empfangen, die prüft,
dass dieselbe mit der Transaktion übereinstimmt, die in dem Puffer
SBI gespeichert ist (und dass das Flag FRO_SBI gesetzt ist). An
diesem Punkt sendet die Schnittstelle mit dem Systembus an die Entscheidungseinheit
ein Transaktionszustandssignal AStatOut = Null und dann das Signal
ARespOut des Ergebnisses des Nachprüfens, das in dem Register RO_SBI
gespeichert ist (ARespOut = RespN2), während die Flags SBI_Busy und
FRO_SBI automatisch rückgesetzt werden.
-
Der
Knoten N2 sendet dann (falls derselbe die Transaktion TR2 nicht
gelöscht
hat) an die entfernte Schleife ein Paket PCKD, das den angeforderten
Datenblock enthält,
das durch die entsprechende Schnittstelle empfangen wird und in
dem Puffer RLI gespeichert wird (wobei das Flag RLI_Busy automatisch
gesetzt wird).
-
Der
Emulationsprozessor liest dann den Inhalt des Puffers RLI (wobei
das Flag RLI_Busy automatisch rückgesetzt
wird) und erhält
von dem Paket PCKD den angeforderten Datenblock (Daten). Der Emulationsprozessor
schreibt in den Puffer SBO (während
das Flag SBDO_Busy automatisch gesetzt wird) den angeforderten Datenblock
(mit dem Identifikationstag, das der Transaktion TR2 zugeordnet ist),
der dann auf dem Systembus zu dem anfordernden Prozessor C3 gesendet
wird (während
das Flag SBDO_Busy automatisch rückgesetzt
wird).
-
Ähnliche Überlegungen
gelten für
andere Typen von Transaktion, wie z. B. eine Anforderung zum Lesen
eines Datenblocks von dem entfernten Speicher, eine Anforderung
zum Schreiben eines Datenblocks in den lokalen Speicher, eine Anforderung zum
Schreiben eines Datenblocks in den entfernten Speicher und dergleichen.
-
Es
ist klar, dass ein Fachmann zahlreiche Modifizierungen und Veränderungen
an dem System zum Emulieren einer elektronischen Vorrichtung, das im
Vorhergehenden beschrieben ist, vornehmen kann, um eventuelle und
spezifische Anforderungen zu erfüllen,
wobei alle diese Modifizierungen und Veränderungen in dem Schutzbereich
der Erfindung enthalten sind, wie derselbe in den folgenden Ansprüchen definiert
ist.