DE3508640A1 - Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus - Google Patents
Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmusInfo
- Publication number
- DE3508640A1 DE3508640A1 DE19853508640 DE3508640A DE3508640A1 DE 3508640 A1 DE3508640 A1 DE 3508640A1 DE 19853508640 DE19853508640 DE 19853508640 DE 3508640 A DE3508640 A DE 3508640A DE 3508640 A1 DE3508640 A1 DE 3508640A1
- Authority
- DE
- Germany
- Prior art keywords
- memory
- processor
- bus
- microcode
- computer system
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4027—Coupling between buses using bus bridges
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Multi Processors (AREA)
Description
PATENTANWÄLTE ZENZ & HELBER · D 4300 ES'SEivn -AM IRUHRSTEIN 1 · TEL.: (0201) 4126
D 110
DAISY SYSTEMS CORPORATION 3 5 0 O 6 A <J
139 Kifer Court, Sunnyvale, Kalifornien 94086, V.St.A.
Computersystem zur Implementierung eines ereignisgesteuerten Simulationsalgorithmus
Die Erfindung betrifft das Gebiet des computerunterstützten Entwurfs und insbesondere ein Computersystem zur Implementierung
eines ereignisgesteuerten Simulationsalgorithmus.
In den letzten 10 Jahren wurde das computerunterstützte Entwerfen in vielen Gebieten, zB. beim Entwurf von elektrischen
Schaltungen allgemein üblich. Tatsächlich dürfte es heute schwierig und vielleicht wirtschaftlich unmöglich sein, eine
große integrierte Schaltung ohne Entwurfsüberprüfungsmittel zu entwickeln. Die "Brettschaltung" einer Schaltung mit 1 Million
Komponenten wäre eine enorme Aufgabe, und die laufende Maskenüberarbeitung, die erforderlich ist, wenn die Schaltung vor
der Produktionsaufnahme nicht überprüft wäre, würde praktisch
undurchführbar.
Für Simulationssysteme sind gegenwärtig zahlreiche Arbeitsstationen
oder andere Hilfsmittel (tools) verfügbar. Die vorliegende Erfindung wird in Verbindung mit einer dieser kommerziell
verfügbaren Arbeitsstationen verwendet, die unter dem Warenzeichen "Logician" von Daisy Systems Corporation, Sunnyvale,
Kalifornien, vertrieben werden. Dieses bekannte System und der von diesem implementierte Algorithmus werden in Verbindung
mit den Figuren 1, 3 und 4 erläutert werden. Allgemein
implementiert die Erfindung einen ereignisgesteuerte Simulationsalgorithmus
in einem speziellen Computer.
Die der Erfindung am nächsten kommenden, der Anmelderin bekannten Veröffentlichungen beschreiben spezielle Computer zum
Implementieren von Simulationsalgorithmen und sind:
(i) "A Logic Simulation Machine" von M. Abramovici u.a.,
IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, Vol. CAD-2, No. 2, April 1983. Die Erfindung
implementiert einen dem in diesem Artikel beschriebenen ähnlichen Algorithmus. Die in der Erfindung verwendete
Aufteilung weicht jedoch von dem in diesem Artikel erläuterten System wesentlich ab.
(ii) "ZYCAD Logic Evaluator" beschrieben in ZYCAD Corp. Manual vom November 1982. Dieses Gerät verwendet eine von der
vorliegenden Erfindung unterschiedliche Aufteilung. Desweiteren bietet das bekannte Gerät nicht die Flexibilität der hier
beschriebenen Erfindung, bei der der Computer mikrocode-programmierbar
ist.
(iii) "Parallel Processing Interactively Simulates Complex VSLI Logic", J. Howard u.a., Electronics, 15. Dezember
1983, beginnend ab Seite 147. Dieser Artikel beschreibt die Implementierung eines unterschiedlichen, nicht ereignisgesteuerten
Algorithmus. Es wird eine unterschiedliche Architektur und Aufteilung verwendet. (Der Anmelder glaubt nicht, daß
dieser Artikel vorveröffentlicht ist, jedoch nimmt er an, daß es bekannte Computer gibt, die die Lehren dieses Artikels
anwenden.)
Es wird ein Computer zur Implementierung eines ereignisgesteuerten
Algorithmus beschrieben, der ein System, beispielsweise
eine integrierte Schaltung oder ein digitales System, simuliert. Der Computer weist einen ersten, zweiten und dritten
Prozessor auf, die in dem bevorzugten Ausführungsbeispiel· alle im wesentlichen identisch sind. Ein in einer Richtung übertragender
Bus verbindet jeden der Computer; speziell richtet der erste Prozessor Signale an den zweiten Prozessor, der zweite
Prozessor an den dritten Prozessor und der dritte Prozessor an den ersten Prozessor. Der erste Prozessor weist einen ersten
Speicher zur Speicherung des Zustandes des simulierten Systems an vorbestimmten Intervallen auf. In der Praxis speichert
dieser Speicher auch die "fan out" Tabelle, die bei der Simulation einer typischen Schaltung verwendet wird. Der Speicher
des zweiten Prozessors speichert einen Teil der Verhaltenscharakterist ika für jede der Systemkomponenten (z.B. eine
Wahrheitstabelle für Gates)· Der dritte Prozessor speichert Informationen, die die Intervalle darstellen, bei denen im
System Änderungen auftreten und wo diese Änderungen auftreten (z.B. den Zeitpunkt, bei dem sich das Ausgangssignal bestimmter
Gates ändert); zusätzlich speichert er die mit jedem Gate verbundenen Verzögerungszeiten. Die Information wird an die
drei Prozessoren geleitet (pipelined), und die Prozessoren arbeiten gleichzeitig in Abhängigkeit von von einem anderen
Prozessor erhaltenen Signalen an den Inhalten ihrer entsprechenden Speicher.
In dem bevorzugten Ausführungsbeispiel wird jeder Prozessor bei der Initiierung mikrocode-programmiert. Daher besitzt der
Computer die Flexibilität der Optimierung für unterschiedliche Simulationen.
Weitere Vorteile der Erfindung ergeben sich aus der folgenden Figurenbeschreibung.
In der Zeichnung zeigen:
Fig. 1 ein Blockschaltbild der Gesamtarchitektur des erfindungsgemäßen Computersystems und ein
Blockschaltbild eines in Verbindung mit der vorliegenden Erfindung verwendeten bekannten
Computers ;
Fig. 2 ein Blockschaltbild eines der als Teil des Computersystems verwendeten Prozessoren;
Fig. 3 ein Schaltbild zweier Gates, die zur Erläuterung eines bekannten Algorithmus verwendet
werden;
Fig. 4 ein Flußdiagramm zur Erläuterung eines bekannten ereignisgesteuerten Algorithmus;
Fig. 5 ein Flußdiagramm zur Erläuterung des ereignisgesteuerten durch den erfindungsgemäßen
Computer implementierten Algorithmus;
Fig. 6a und 6b ein elektrisches Schaltbild eines in jedem der Prozessoren verwendeten Mikrocode-Dekodierers;
Fig. 7a, 7b und 7c ein elektrisches Schaltbild eines
in jedem der Prozessoren verwendeten FIFO-Ausgangspuffers; und
Fig. 8a und 8b ein elektrisches Schaltbild eines in jedem der Prozessoren verwendeten Speicherad
reßgenerators.
Beschrieben wird ein einen Simulationsalgorithmus implementierender
Computer. Der Computer ist besonders für die Simulation von Schaltungsentwürfen brauchbar. In der folgenden Beschreibung
werden zahlreiche spezielle Details, wie spezielle Anzahlen von Leitungen usw. beschrieben, um die Erfindung besser
erläutern zu können. Es ist jedoch klar, daß der Fachmann die Erfindung ohne diese speziellen Details ausführen kann. Andererseits
sind bekannte Schaltungen und Strukturen nicht im Detail gezeigt, um die Erfindung nicht unnötig zu belasten.
Auch wenn die Erfindung in Verbindung mit einem speziellen Algorithmus für die Schaltungssimulation beschrieben wird,
kann die Erfindung auch mit anderen Algorithmen., wie "PIazierungs-
und Leitwegzuteilungs-" Algorithmen verwendet werden.
Zum Verständnis der Erfindung ist es hilfreich, zunächst einen bekannten Simulationsalgorithmus zu beschreiben. Die Erfindung
implementiert einen diesem bekannten Algorithmus ähnlichen Algorithmus.
In Figur 3 sind zwei UND-Gatter 77 und 78 gezeigt. Die Eingänge des UND-Gatters 77 sind Knotenpunkte 76 und 79 und die
Eingänge des UND-Gatters 78 sind Knotenpunkte 72 und 73. Der Ausgang des Gatters 77 ist ein Eingang des Gatters 78. Der
Ausgang des Gatters 78 ist eine Leitung oder ein Knotenpunkt 74. Zum Zwecke der Erläuterung sei angenommen, daß das Gatter
77 eine Verzögerungszeit von 20 Einheiten und das Gatter 78 eine Verzögerungszeit von 10 Einheiten hat.
Der im Flußdiagramm der Figur 4 angegebene Algorithmus kann zur Simulation von Schaltungen, wie diejenigen gemäß Figur 3,
verwendet werden. Es liegt auf der Hand, daß in der Praxis viel kompliziertere Schaltungen mit hunderttausenden von Gates
simuliert werden.
Beim Stande der Technik wird, bevor die Simulation beginnt, die zu simulierende Schaltung zunächst in einer vorbestimmten
Art dargestellt (digital). In dieser Darstellung ist ein "fanout" jedes Knotenpunktes angegeben (manchmal als Gateeingabetabelle
bezeichnet). Dies beschreibt grundlegend alle Verbindungen. Zum Beispiel, unter Bezugnahme auf Figur 3,
würde angegeben, daß der Ausgang des Gates 77 (Knotenpunkt 72) mit dem Eingang des Gates 7 8 verbunden ist und, wenn andere
Gates mit diesem Knotenpunkt verbunden sind, werden sie bezeichnet. Ähnlich werden für die Knotenpunkten 73, 74, 76 und
79 die anderen mit diesen Knotenpunkten verbundenen Gates angegeben. (Für das einfache Beispiel der Figur 3 werden keine
derartigen Verbindungen verwendet.) Die Schaltungsdarstellung weist auch Verhaltenscharakteristika für jede der Komponenten
auf. Für Gate 77 geben die gespeicherten Charakteristika an, daß der Ausgang des Gates nach high (hohem Zustand) geht, wenn
beide Eingänge high sind (Wahrheitstabelle), und das Gate 77 eine Verzögerungszeit von 20 Einheiten hat. Ähnlich gibt die
Eingabe für Gate 78 an, daß sein Ausgang nach high geht, wenn seine beiden Eingänge high sind, und daß das Gate eine Verzögerungszeit
von 10 Einheiten hat. Wie beschrieben werden wird, wird auch der Zustand der Knotenpunkte gespeichert und aktualisiert.
Dies bezieht sich auf das "Zustandsfeld" ("state
array").
Die Simulation schreitet in vorbestimmten Intervallen mit entsprechend typischen Zeiten (z.B. nsec.) fort, die für die
vorliegende Erläuterung als "Einheiten" bezeichnet werden.
Bei einer Simulation bestehen typischerweise Anfangsbedingungen
oder Eingangssignale, um das zu analysierende System anzuregen. Zur Erläuterung der Schaltung der Figur 3 sei angenommen,
daß zu einer Zeit 1 das Potential auf der Leitung 79 nach
high geht, zu einer Zeit 10 das Potential am Knotenpunkt 76 nach high geht und zu einer Zeit 40 das Potential am Knotenpunkt
73 nach high geht.
Unter Bezugnahme auf Figur 3 erfordert der erste Schritt 80 die Aufwärtszählung der Zeit von 0 bis 1. Beim Schritt 81
werden die zur Zeit 1 ablaufenden Ereignisse aus dem Speicher ausgelesen. Zur Zeit 1 geht der Knotenpunkt 79 nach high (dieses
war vorher für die Zeit 1 abgespeichert). Schritt 82 aktualisiert das Zustandsfeld, um anzugeben, daß der Knotenpunkt
79 jetzt high ist. Für den Schritt 83 ist der "fanout" für den Knotenpunkt 79 gelistet. Das bedeutet z.B., wenn Knotenpunkt
79 mit Eingängen anderer Gates verbunden wäre, daß im Speicher eine Aufzeichnung über den Wechsel der Eingangssignale dieser
Gates vorgenommen wird. Schritt 84 stellt fest, ob irgendwelche anderen Ereignisse zur augenblicklichen Zeit, Zeit 1,
vorhanden sind. Für das Beispiel nach Figur 3 ist dies nicht der Fall und die Analyse geht weiter mit dem Schritt 85. Wenn
zusätzliche Ereignisse während der Zeit 1 aufträten, werden die Schritte 80 bis 84 solange wiederholt, bis alle während
dieser Zeit aufgetretenen Ereignisse berücksichtigt sind.
Im Schritt 86 wird jedes Gate, dessen Eingangssignal sich geändert hat, überprüft. Die Gateliste wird bei dem obengenannten
Schritt 83 entwickelt. (Beachte, daß mit dem beschriebenen Algorithmus nur die Gates betrachtet werden, deren Eingang
sich geändert hat. Daher wird der Algorithmus als "ergebnisgesteuert" bezeichnet.) Beim vorliegenden Beispiel änderte
sich das Eingangssignal des Gates 77, so daß für den Schritt 86 das Ausgangssignal dieses Gates berücksichtigt wird. Da das
Potential auf der Leitung 80 noch low (niedriger Zustand) ist, erfolgt kein Wechsel von dem Gate, so daß der Fluß nach dem
Schritt 87 mit Schritt 89 fortgesetzt wird. Da zu diesem Zeitpunkt keine weiteren Gates in der Liste vorhanden sind, wird
/a.
zum Schritt 80 zurückgekehrt.
Beim Schritt 80 wird die Zeit auf die Zeit 2 weitergezählt. Dort sind zu diesem Zeitpunkt keine neuen Ereignisse in der
"Warteschlange". Die Zeit wird weitergeschaltet bis für diese Zeit dort ein Ereignis abgespeichert ist. Für das vorliegende
Beispiel erfolgt dies zur Zeit 10, wenn das Eingangssignal am Knotenpunkt 7 6 ansteigt. Daher besteht der Schritt 81 aus der
Feststellung, daß zur Zeit 10 das Potential auf der Leitung ansteigt. (Die Ereignisse werden durch die "Zeit" gespeichert.
) Beim Schritt 82 wird das Zustandsfeld aktualisiert um anzuzeigen, daß der Knotenpunkt 76 jetzt high ist. (Vorher
wurde zur Zeit 1 das Feld aktualisiert, um anzuzeigen, daß der Knotenpunkt 79 high ist.) Für den Schritt 83 wird die fanout-
-Liste vorbereitet, die für diesen Fall nur aus dem Gate 77 besteht, da nur der Knotenpunkt 76 mit dem Gate 7 7 verbunden
ist. Für den Schritt 84 wird festgestellt, daß für die Zeit dort keine anderen Ereignisse abgespeichert sind, und daher
ist der nächste Schritt der Schritt 85. Hier werden die im Schritt 83 aufgelisteten Gates einzeln gewählt. Beim vorliegenden
Beispiel wird Gate 77 gewählt und im Schritt 86 sein Ausgang entsprechend den vorher gespeicherten Charakteristika
(z.B. Wahrheitstabelle) gewertet. Da beide Eingänge des Gates 7 7 high sind, wird sein Ausgang high. Da das Äusgangssignal
bei Schritt 87 nicht wechselt, ist der nächste Schritt der Schritt 88. Gate 77 hat eine Verzögerungszeit von 20 Zeiteinheiten,
wodurch das Ausgangssignal (Knotenpunkt 72) sich potentialmäßig 20 Einheiten von der gegenwärtig betrachteten
Zeit oder zur Zeit 30 erhöht. Für die Zeit 30 wird die Information im Speicher abgespeichert, um eine Potentialerhöhung am
Knotenpunkt 72 anzuzeigen. Da keine weiteren Gates in der Liste vorhanden sind, erfolgt ein Zurückgehen auf den Schritt
80.
Zwischen den Zeiten 10 und 29 wurden keine Ereignisse in die Warteschlange gegeben. Zur Zeit 30 erhöht sich für den Schritt
81 das Potential am Knotenpunkt 72?. Das Zustandsfeld wird aktualisiert, um anzuzeigen, daß der Knotenpunkt 72 jetzt high
ist (Schritt 82), und die Liste der mit diesem Knotenpunkt verbundenen Gates wird aufgestellt, wobei in dem vorliegenden
Beispiel diese nur das Gate 78 beinhaltet. Der Prozeß bewegt sich zu den Schritten 85, 8 6 und 8 7 und da keine Änderung des
Ausgangssignals des Gates 78 erfolgte, es sind keine zusätzlichen Gates in der Liste, erfolgt ein Rücksprung auf den
Zustand 80.
Das nächste Ereignis wird zur Zeit 40 verzeichnet. Zu dieser Zeit zeigt die Warteschlange an, daß sich der Knotenpunkt 73
im Potential erhöht. Das Zustandsfeld wird aktualisiert und die fanout-Liste erstellt, die im vorliegenden Fall nur aus
dem Gate 78 (Schritt 83) besteht. Beim Schritt 86 wird festgestellt, daß das Ausgangssignal des Gates 78 tatsächlich
wechselt, und bei Schritt 88 wird ein Ereignis abgespeichert, um zur Zeit 50 den Potentialanstieg des Ausgangssignals des
Gate 78 anzuzeigen (wegen der Verzögerungszeit von 10 Einheiten innerhalb des Gates 78). Darauf folgt ein Rücksprung auf
Schritt 80.
Zur Zeit 50 wird das Zustandsfeld aktualisiert, um den Potentialanstieg
der Leitung 74 anzuzeigen. Wenn ein Konstrukteur wissen will, wann ein Wechsel des Zustandes am Knotenpunkt 74
unter den anfangs vorgegebenen Bedingungen für die Schaltung der Figur 3 erfolgte, wird es ihm angezeigt (z.B. über ein
Display oder einen Drucker).
In der Praxis laufen die in Figur 4 gezeigten Schritte ziemlich schnell ab. Wird z.B. ein 80286 Mikroprozessor verwendet,
laufen mehrere hunderttausend der obengenannten Schritte pro
Sekunde ab. Trotzd€>m erfordert eine Simulation für eine sehr
große Schaltung eine beachtlichen Zeit (z.B. viele Minuten).
Der Computer der Erfindung implementiert einen Algorithmus ähnlich demjenigen gemäß Figur 4 in einem spezialisierten
Computer, wodurch die Simulation mehrfach schneller als mit einem Vielzweck-Mikrocomputer ablaufen kann.
In Figur 1 ist über der Linie 25 ein bekannter, den Algorithmus nach Figur 4 implementierender Logiksimulator allgemein
dargestellt. Der Simulator arbeitet mit einer von der Daisy Systems Corporation unter dem Warenzeichen "Logician" vermarkteten
Arbeitsstation. Allgemein weist diese Station einen Bus 2 6 auf, der ein "Multibus" ist. Mit diesem Bus sind ein Plattensystem
30, eine Mikroprozessorkarte (CPU) 27 (Teile Nr. 8086 oder 80286), ein Systemspeicher 28 und ein Videodisplay
29 als Benutzerschnittstelle gekoppelt. Der Algorithmus nach Figur 4 ist als sofware implementiert, die durch die CPU 27
ausgeführt wird.
Mit der Erfindung wird ein dem in Figur 4 gezeigten ähnlicher Algorithmus innerhalb des unter der Linie 25 gezeigten Computers
implementiert. Das System oberhalb der Linie 25 arbeitet als Master-Computer, der alle normalerweise durch eine Simulationsmaschine
ausgeführten Funktionen durchführt, mit Ausnahme der Ausführung des Algorithmus. Für die Ausführung des Algorithmus
arbeitet der erfindungsgemäße Computer als Nebencomputer, was bedeutet, daß seine Operationen im allgemeinen durch
den Master-Computer bestimmt werden.
ÜBERBLICK ÜBER DAS SYSTEM GEMÄSS DER ERFINDUNG
Gemäß Figur 1 weist der erfindungsgemäße Computer drei Prozessoren
39, 40, 41 auf. Die Prozessoren 39, 40 und 41 sind über bidirektionelle Busse 54, 56 und 55 untereinander verbunden,
um jeweils Daten und Adressen vom Multibus 36 zu empfangen. Der Multibus 36, der ein 16-Bit-Standardbus ist, ist mit dem
Multibus 26 des Master-Computers über die Masterschnittstelle 34 und die Nebenschnittstelle 35 verbunden. Die Multibusse und
die Schnittstellen 34 und 3 5 verwenden bekannte Standardschaltungen. In dem bevorzugten Ausführungsbeispiel arbeiten die
Multibusse 35 und 3 6 synchron. Der Bus 3 6 steht mit jedem der Prozessoren über eine Multibus-Schnittstelleneinheit 58 in
Verbindung. Die Prozessoren stehen zusätzlich zur Verbindung mit dem Multibus 36 miteinander über in einer Richtung übertragende
Busse in Verbindung, die einen Ring zwischen den Prozessoren bilden. Der erste Prozessor 39 steht mit dem zweiten
Prozessor 40 über den Bus 50, der zweite Prozessor 40 mit dem dritten Prozessor 41 über den Bus 51 und der dritte Prozessor
41 mit dem ersten Prozessor 39 über den Bus 4 9 in Verbindung.
Die Prozessoren 39, 40 und 41 weisen jeweils Speicher 43, 45 und 46 auf. Jeder Speicher kann eine Mehrzahl von Speicherkarten
haben, die jeweils 320K-24-Bitwörter speichern. Diese Speicher weisen übliche dynamische Direktzugriffspeicher auf.
Jeder der Prozessoren ist in dem bevorzugten Ausführungsbeispiel den anderen Prozessoren gleich, jedoch wird jeder bei
der Initiierung mit einem besonderen Mikrocode geladen und führt daher eine unterschiedliche Funktion aus. Der Prozessor
39 wird als "Zustandseinheit" bezeichnet. Der Speicher 43 speichert das oben erläuterte Zustandsfeld und auch die
fanout-Tabelle. Der Prozessor 40 wird als Auswerteinheit (EU)
bezeichnet, und sein Speicher 45 speichert die Verhaltenscharakteristika der Komponenten des zu simulierenden Systems,
z.B. die Wahrneitstabellen der Gates. Der Prozessor 41 oder die Warteschlangeneinheit (QU) mit ihrem Speicher 4 6 speichert
die Ereignisse, die den Algorithmus steuern und die Verzögerungszeiten für die Gates oder ähnliches.
Wie beschrieben werden wird, arbeiten die Prozessoren simultan mit Informationen, die ihnen über die Busse 49, 50 und 51
zugeleitet (pipelined) werden. In dem vorliegenden Ausführungsbeispiel arbeiten die Prozessoren mit einer Taktfrequenz
von 6,7 MHz eines gemeinsamen Taktgebers.
Wie erwähnt, sind die drei verwendeten Prozessoren identisch. Wie in Figur 2 gezeigt, hat jeder der Prozessoren einen internen
Datenbus 60. Dieser Bus steht mit einem Multibus 36 über die Multibusschnittstelleneinheit 5 8 in Verbindung. Der interne
bidirektionelle 24-Bit-Datenbus ist mit einem FIFO(SiIo)-Eingangspuffer
65 gekoppelt. Dieser Puffer nimmt Daten von einem der anderen Prozessoren an. Zum Beispiel ist für den
Fall des Prozessors 40 der Figur 1 der Puffer 65 mit dem Bus 50 gekoppelt. Der Prozessor weist einen FIFO-Puffer 66 auf.
Dieser Puffer verbindet den internen Datenbus 60 mit der nächsten Einheit im Ring und ist z.B. für den Prozessor 40 mit dem
Bus 51 verbunden. Der Puffer 6 6 weist einen "elastischen" Speicher von 256 χ 24 Bits auf (detailliert in den Figuren 7a,
7b und 7c gezeigt). Dieser Speicher ermöglicht die zeitweilige Speicherungen von Daten zur Übertragung zum nächsten Prozessor,
um Geschwindigkeitsdifferenzen in den Prozessoren zu kompensieren. Wie erwähnt, arbeiten die Prozessoren mit der
gleichen Taktfrequenz; die von einem speziellen Prozessor benötigte Zeit zur Durchführung einer Operation braucht nicht
die gleiche zu sein, die ein anderer Prozessor zur Durchführung einer zugeordneten Operation benötigt.
Die Speicheradreßgenerator- und Schnittstellenlogikeinheit 67 verbindet den internen Datenbus 60 mit dem Speicher des Pro
zessors. Diese Einheit ist detailliert in den Figuren 8a und 8b gezeigt. Diese Einheit 6 7 erlaubt die Bildung einer 24 Bit
Adresse, die auf einer auf dem Bus 60 befindlichen Adresse und einem Mikrocode des RAM 69 (über die Verriegelungsschaltung
70) basiert.
Die arithmetischen Operationen für den Prozessor werden durch eine arithmetische Logikeinheit (ALU 62) durchgeführt. Diese
24-Bit Einheit ist ein kommerzielles TTL Standardteil (74S382) mit zugehörigen Steuerungen, Verriegelungen usw.. Eine Registerdatei
63 hat eine 8 χ 24 Bit Kapazität und ist auch mit dem Bus 6 0 verbunden. Dies ist eine gewöhnliche Datei, die das
Lesen und Schreiben in unterschiedliche Speicherplätze erlaubt und gleichzeitig Standardteile (74LS670) verwendet.
Jeder Prozessor wird durch seinen Mikrocode gesteuert. Der Mikrocode ist in einem RAM 6 9 einer Kapazität von 4kx36 Bits
gespeichert. Er wird bei der Initiierung über den Bus 36 vom Master-Computer geladen. Die Mikrocodeadreß- und Sprung-Logik
68 weist einen 12-Bit-Zähler auf, der eine Adresse zum Wählen
der Mikrocodebefehlen aus dem RAM 6 9 bildet. Diese Einheit erhält von der gemeinsamen Taktquelle von 6,7 MHz ein Taktsignal
zur Weiterschaltung des Zählers. Das Ausgangssignal des RAM 69 wird in eine Verriegelungsschaltung 70 eigegeben, die
mit dem Befehlsdekodierer 71 und dem Bus 60 in Verbindung steht. (Spezielle Befehle laufen zwischen den Prozessoren in
die Verriegelungsschaltung 70, die den Zähler zum Sprung zu einer neuen Adresse veranlassen können.)
Der Befehlsdekodierer 71 ist mit den verschiedenen Einheiten im Prozessor, wie der ALU, der Registerdatei, dem Puffer, dem
Speicheradreßgenerator usw. verbunden, um diese Einheiten zu
steuern, wie es bei dekodierten Mikrobefehlen typisch ist. Der Dekodierer 71 ist in den Figuren 6a und 6b genauer gezeigt.
Bei der Initiierung wird in jedes RAM 69 der Figur 2 der Mikrocode
geladen (unterschiedlich für jeden Prozessor), und die Speicher jedes Prozessors werden programmiert. Es wird nunmehr
kurz Bezug auf die Figur 1 genommen. Zur Schaltungssimulation speichert der Speicher 43 das Zustandsfeld, das ist der Zustand
der verschiedenen Knotenpunkte und auch die fanout— Tabelle. Die Auswertspeichereinheit 45 erhält die Charakteristika
jeder Komponente, z.B. für die Gates 77 und 78 und deren Wahrheitstabellen. Die Warteschlangenspeichereinheit
4 6 erhält alle eine Aufzeichnung erfordernden Ereignisse und speichert sie durch "Zeit", einschließlich der Anfangsereignisse.
Dieser Speicher speichert auch die Gateverzögerungszeiten. Die Speicher der Prozessoren erhalten vom Master-Computer
Daten der zu simulierenden Schaltung.
Der erfindungsgemäße Computer implementiert den in Figur 5
gezeigten Algorithmus. Die vom Prozessor 41 der Warteschlangeneinheit durchgeführten Schritte sind unter der Überschrift
QU in Figur 5 gezeigt. Ähnlich sind die durch den Prozessor 39, die Zustandseinheit, durchgeführten Schritte unter der
Überschrift SU und die durch den Prozessor 40 , die Auswerteinheit, durchgeführten Schritte unter der Überschrift EU
gezeigt.
Die vorbestimmten, gewöhnlich in der Zeit übereinstimmenden Einheiten werden, wie durch den Schritt 94 gezeigt, von der
Warteschlangeneinheit weitergeschaltet. Für jede neue Zeit stellt die Einheit 94 fest, ob irgendwelche Ereignisse aufge-
zeichnet sind; ist dies der Fall, werden diese (durch den Knotenpunkt mit dessen neuen Zustand), wie durch den Schritt
95 angezeigt, der Zustandseinheit übermittelt. Diese Übermittlung erfolgt über den Bus 49 der Figur 1. Die Zustandseinheit
aktualisiert ihren Speicher entsprechend dem Befehl der Warteschlangeneinheit, wie durch Schritt 9 7 angezeigt. Alle für
eine spezielle Zeit aufgezeichneten Ereignisse werden vom Speicher der Warteschlangeneinheit gelesen und zur Zustandseinheit
für die Aktualisierung des Zustandsfeldes gesendet.
Das Zustandsfeld, wie es im Speicher 43 der Figur 1 dargestellt
ist, wird gleichzeitig mit dem Lesen von Ereignissen aus dem Speicher 4 6 aktualisiert.
Ein zweiter Durchlauf durch den Warteschlangeneinheitspeicher wird entsprechend Schritt 98 für jedes Zeitintervall durchgeführt.
Während des Schritts 98 erhält die Zustandseinheit wiederum die Knotenpunkte, an denen Änderungen auftraten.
Während dieses zweiten Durchgangs bereitet die Zustandseinheit eine Liste (basierend auf der fanout-Liste) der mit diesen
Knotenpunkten verbundenen Gates vor. Die Zustandseinheit ist dadurch in der Lage, eine Liste von Gates, deren Eingänge sich
geändert haben, die Änderung und das augenblickliche Ausgangssignal des Gates (Schritte 99 und 100) zur Auswerteinheit zu
senden.
Die Auswerteinheit empfängt z.B. die Gatenummer, deren neuen Eingangssignale und das augenblickliche Ausgangssignal und
stellt fest, ob ein Ausgangssignal sich, wie durch die Schritte 106 und 107 angezeigt, geändert hat. Wenn eine Ausgangssignaländerung
erfolgt ist, wird das neue Ausgangssignal zur Abspeicherung innerhalb der Warteschlangeneinheit über den Bus
51 übertragen, wie durch den Schritt 108 angegeben. Der Prozessor 41 kann aus dem Speichers 46 feststellen, wann das neue
Ausgangssignal erscheint (da er die Verzögerungszeiten für
3,0
jedes Gate gespeichert hat). Es sei darauf hingewiesen, daß die Auswerteinheit keine Abtastung der "Zeit" durchführt,
jedoch eine einfache Auswertung der Ausgangssignale jener Gates vornimmt, deren Eingänge sich geändert haben.
Es wird nochmals auf Schritt 98 eingangen. Nachdem die Warteschlangeneinheit
die ein geändertes Gate betreffende Information zur Zustandseinheit übermittelt hat, stellt sie fest, ob
irgendeine Aufzeichnung, wie sie durch den Schritt 109 angegeben
ist, erforderlich ist. (Es sei darauf hingewiesen, daß wegen des "pipelining", die Warteschlangeneinheit eine Information
über ein Gate zur Statuseinheit sendet und eine Information über ein ganz anderes Gate erhalten kann, wenn sie als
nächstes den Schritt 109 durchführt.) Nach dem Vervollständigen und Aufzeichnen (Schritt 110) erfolgt ein Rücksprung auf
Schritt 98, wenn für diese Zeit (Schritt 111) weitere Ereignisse vorhanden sind. Wenn keine zusätzlichen Übertragungen
für die Zustandseinheit in diesem Zeitintervall vorhanden sind, wird zum Schritt 109 zurückgegangen, um die verbleibenden
Daten der Auswerteinheit zu empfangen. Ist keine zusätzliche Aufzeichnung erforderlich und sind für die betrachtete
Zeit keine Ereignisse vorhanden, so erfolgt ein Rücksprung auf den Schritt 94.
In der Praxis laufen die Schritte 94, 95, 96 und 97 recht schnell ab und benötigen ungefähr nur 10 bis 20/έ der Computerzeit.
Der Hauptteil der für die Simulation erforderlichen Zeit wird für die verbleibenden Schritte benötigt.
Der Mikrocode-Dekodierer (Befehlsdekodierer 71 der Figur 2)
dekodiert die Mikrocode-Befehle des RAM 69 der Figur 2 und
sorgt, wie vorher erwähnt, für die allgemeine Steuerung des
Prozessors. Die Mikrocode-Befehle der Verriegelungsschaltung
70 der Figur 2 werden an die Leitungen 122 der Figur 6a angelegt.
Der Dekodierer ermöglicht den Mikrocode-Befehlen Daten
für den internen Datenbus 60 der Figur 2 direkt zu spezifizieren. Dieser Datenbus ist auf der rechten Seite der Figur 6b
gezeigt. Die auf der Leitung 122 ankommenden Mikrocode-Befehle
werden direkt mit den Puffern 116, 117 und 118 verbunden und
ermöglichen so die direkte Spezifizierung der Daten für den Bus.
Im allgemeinen weist jede Mikrocode-Befehl einen 4-Bit OP-Code
auf, der die Befehlsart bezeichnet, und zwei feste Felder für alle Befehle, die den Ursprung und den Bestimmungsort über den
internen Datenbus bezeichnen. Der 3 bis 8 Bit-Dekodierer 113,
der in der oberen linken Ecke der Figur 6a gezeigt ist, bestimmt den OP-Code des auf den Leitungen 124 anstehenden Signals
(der ein Teilsatz der auf der Leitung 122 anstehenden Signale ist). Der Dekodierer 113 erhält auch ein Gültig—
(valid)Signal an den Stiften 4 und 5, das anzeigt, welcher der Mikrocode-Befehle gültig ist, da er sonst nicht ausgeführt
wird. (Stift 6 ist immer mit einem positiven Potential verbunden.) Die Befehlsart wird durch den OP-Code gewählt, wie im
oberen Teil der Figur 6a, beginnend mit der Leitung 125, gezeigt ist. Diese Arten von Befehlen sind: MEMWR = Speicher
schreiben, CJMP = Bedingungssprung, MEMRD = Speicher lesen, Rufen, ALU usw. Die Leitungen 126 und 127 liefern spezielle
O-ALU-Signale, die Leitung 128 löscht einen Paritätsfehler,
und die Leitung 129 löscht die FIFO Puffer bei Initiierung.
Der PLA 114 bestimmt den Bestimmungsort für jeden Mikrocode-Befehl;
der Dekodierer 115 bestimmt den Ursprung der Befehle. Der PLA 114 erhält zusätzlich zu den Speicher/Lese- und
Schreibsignalen (Stift 5 und 6), dem Gültig-Signal (Stift 7) und dem Zeitgabesignal MEMFC an Stift 8 Eingangssignale auf
den Leitungen 122. Der Dekodierer 115 erhält auf den Leitungen
130 von einer Registerdatei Mikrocode-Befehle, ein Ursprungaktivierungssignal (Stift 6) und das Gültig-Signal an Stift
5.
Die Ausgangssignale des PLA 114 und des Dekodierers 115 sind
im unteren Teil der Figur 6a gezeigt. Die Bezeichnung "D" gibt den Bestimmungsort an oder daß die Daten "aufgenommen" werden,
während die Bezeichnung "S" die Quelle angibt; das bedeutet Daten "auszusenden". Zum Beispiel sendet "SDP" Daten von einem
Datenport (dem Multibus) 36 der Figur 2. Die Leitungen 133 und 134 sind mit Dateiregistern verbunden, die Leitung 135 ist für
die Sprungsteuerlogik einer Bitverriegelungsschaltung, die Leitung 136 ist mit dem Mikrocodeadreßregister verbunden und
die Leitung 137 wird für die Sprunglogik verwendet.
Die im unteren Teil der Figur 6b gezeigte Verriegelungsschaltung 120 ist eine Bit-adressierbare Verriegelungsschaltung,
die Unterbrechungen für den im Master-Computer verwendeten Mikroprozessor erzeugt. Eine von acht Unterbrechungsleitungen
wird mit einem Springer gewählt, wie durch den Springer 137 angegeben. Andere Kennzeichensignale am Ausgang der Verriegelungsschaltung
120 werden in Verbindung mit dem 8086 Prozessor des Master-Computers verwendet und sind über die mit FL3, FL4
und FL5 bezeichneten Leitungen verbunden.
Der Puffer 119 ist technisch nicht Teil der Mikrocodelogik. Er enthält verschiedene Statusbits, die mit dem internen Bus
verbunden sind, wie Paritätsfehler auf Leitung 138, Ausgangsund
Eingangs-Puffer-voll-Signale und andere Statuskennzeichen.
FIRST-IN-, FIRST-OUT(FIFO)-AUSGABEPUFFEr
Es wird kurz auf Figur 1 Bezug genommen. Wie erwähnt, liefert jeder der Prozessoren in einem Ring Daten zu einem anderen
Prozessor. Jeder der Prozessoren führt eine andere Funktion aus, und daher benötigen nicht alle Prozessoren die gleiche
Zeit zur Durchführung ihrer Funktionen. Es ist eine gewisse Kompensation erforderlich, um zu verhindern, daß ein Prozessor
Daten zu einem anderen Prozessor sendet, bevor dieser bereit ist, die Daten zu empfangen. Wie oben auch erwähnt ist, sind
die Ausgabepuffer jedes Prozessors, wie der Puffer 66 der Figur 2, "elastische" Puffer (d.h. sie haben einen ausweitbaren
Speicher). Jeder dieser Speicher hat die Kapazität, um 256 24-Bitworte zu speichern. Der Prozessor gibt die Daten mit
der Geschwindigkeit in den Puffer, mit der die Daten vorbereitet werden. Die Daten werden mit einer Geschwindigkeit aus dem
Puffer abgenommen, die durch den empfangenden Prozessor bestimmt ist.
Im folgenden wird auf die Figuren 7a, 7b und 7c Bezug genommen. Die Daten des Prozessors werden über den internen Bus 60,
gezeigt im oberen Teil der Figur 7c, an den FIFO-Puffer angelegt.
Die Ausgangsdaten zum nächsten Prozessor werden über die Leitungen 51 angelegt. Die Puffer 140, 141 und 142 der Figur
7c puffern in den FIFO-Puffer kommende Daten vor deren Speicherung, ebenso Daten aus diesem Speicher zur Kopplung auf die
Leitungen 51.
Die Daten werden im FIFO-Puffer in sechs Direktzugriffsspeicher
(RAM)-"Chips", speziell in die in Fig. 7b gezeigten RAMs 144, 145, 146, 147, 148 und 149 gespeichert. Jeder dieser
statischen RAMs weist eine Kapazität von 4k Bits auf. Bei dem beschriebenen Ausführungsbeispiel sind zwei der Adreßleitungen
jedes RAMs geerdet, so daß die RAMs als 1k RAMs verwendet werden. Jeder RAM greift für Eingangsdaten auf jede der verwendeten
8-Bit-Adressen zu. Dadurch wird für jede 8-Bit-Adres-
se ein 24-Bit-Speicherplatz zugegriffen.
Es werden zwei RAM-Hinweisadressen zur Identifizierung von
Eingangsdaten- und Ausgangsdatenspeicherplätzen verwendet. Die Zähler 153 und 154 der Fig. 7a liefern an den RAM eine Adresse,
während die Zähler 155 und 156 eine Adresse für Ausgangsdaten liefern. Die Zähler 153 und 154 werden jeweils bei Eingabe
eines 24-Bit-Worts in den Speicher aufwärtsgezählt und
ähnlich die Zähler 155 und 156 beim Lesen eines 24-Bit-Worts aus dem Speicher. Die Zähler werden bei der Initiierung mit
einem Signal auf der Leitung 170 gelöscht, der Datenfluß zum nächsten Prozessor wird durch ein Signal auf der Leitung 171
gesteuert, die Lese-Schreib-Befehle für die RAMs werden auf
der Leitung 172 empfangen und ein Taktsignal für die Zähler wird an die Leitung 174 angelegt.
Daten können nicht gleichzeitig in die bzw. aus den RAMs 14 4-149 geschrieben bzw. gelesen werden. So können entweder
die Eingangsadressen oder die Ausgangsadressen der Zähler und 154 oder der Zähler 155 und 156 mit den RAMs verbunden
werden. Die Multiplexer 150 und 151 der Fig. 7a wählen entweder die Eingangs- oder die Ausgangshinweisadresse zur Verbindung
mit den RAMs.
Ein Komparator 158 vergleicht die Eingangs- und Ausgangshinweisadressen.
Genauer gesagt, vergleicht er den Zählwert an dem Ausgang der Zähler 153 und 154 mit dem Zählwert an dem
Ausgang der Zähler 155 und 156. Wenn diese Adressen gleich sind, werden Daten eingegeben und aus den gleichen Speicherplätzen
in den RAMs ausgelesen. Das bedeutet, daß der Puffer entweder voll oder leer ist. Wenn diese Bedingung auftritt,
bestimmt die im unteren Teil der Figuren 7a und 7b dargestellte Logikschaltung 160, ob der Puffer voll oder leer ist, und
erzeugt Signale, die anzeigen, welcher der Puffer voll oder
leer ist (siehe rechte untere Ecke der Fig. 7c). Ist der Puffer leer, wird verhindert, daß Daten aus diesem Puffer gelesen
werden; andererseits können Daten eingeschrieben werden. Umgekehrt wird verhindert, daß Daten in den Puffer eingeschrieben
werden, wenn der Puffer voll ist, während Daten dann ausgelesen werden können.
Jeder der Prozessoren weist eine Speicheradressengenerator- und Schnittstellenlogikeinheit, wie die Einheit 67 der Fig. 2,
auf. Wie vorher erwähnt, können für jeden Speicher der Prozessoren Adressen in einer Signalkombination aus Mikrocode und
Datenbus erzeugt werden. Dies ist ein besonders wichtiges Merkmal, da, wie beschrieben werden wird, dadurch die Adreßerzeugung
beschleunigt wird. Da eine relativ große Zahl von Speicherzugriffen für die Implementierung des Algorithmus
erforderlich ist, ist die Zeiteinsparung bei der Erzeugung der Adressen wichtig.
Jeder Speicher der Prozessoren ist in Abschnitte unterteilt. Der Mikrocode wählt einen Abschnitt (Basisadresse), während
Signale vom Datenbus als Offset innerhalb dieses Abschnitts verwendet werden. Wenn z.B. der Speicherabschnitt mit der
Adresse 1000 beginnt und der spezielle interessierende Speicherplatz innerhalb dieses Abschnitts bei 3 ist, muß der Prozessor
1000 und 3 addieren, um die Adresse 1003 zu erzeugen, bevor er auf den Speicher zugreifen kann. Wie zu sehen sein
wird, wird diese Additionsoperation tatsächlich durch die Wahl "1000" von den Mikrocodeleitungen und "3" von den Datenleitungen
durchgeführt, um die benötigte Adresse ohne echte Addition zu gewinnen.
Im folgenden wird auf die Figuren 8a und 8b Bezug genommen.
Der Adressengenerator ist mit dem Datenbus 60 verbunden und erhält die Mikrocode-Befehle vom Mikrocode-RAM auf Leitungen
122. Die Speicheradresse (AO bis A23) wird auf den Leitungen 180 geliefert und ist mit dem Speicher zum Zugriff auf den
Speicher in üblicher Art gekoppelt.
Es gibt drei Spalten von Gates, zwei in Fig. 8a und die dritte auf der linken Seite der Fig. 8b, die für den Basisabschnitt
der Speicheradresse verwendet werden. Die Eingangsanschlüsse dieser Gates sind abwechselnd mit dem Datenbus 60 und den
Leitungen 122 vom Mikrocode-RAM verbunden. Acht Leitungen vom Mikrocode-RAM sind auch mit den PLAs 181 und 182 verbunden.
Die Ausgangssignale dieser Felder werden als Steuersignale an die drei Spalten von Gates angelegt. Die Ausgänge der Gates
liefern die Adressensignale A12 bis A23- Die Felder 181
und 182 können in Abhängigkeit von Mikrocodebefehlen entweder eine Leitung vom Datenbus oder Mikrocode-RAM für die Adressen
A12 bis A23 wählen.
Acht Leitungen vom Datenbus 60 (D4-D11) sind direkt mit einem Puffer 183 verbunden. Der Ausgang dieses Puffers liefert die
Adreßsignale A4-A11, die allgemein den oben beschriebenen Offset darstellen.
Eine effiziente Implementierung des Algorithmus erfordert Strukturen im Speicher, d.h. ein Gruppieren von in Beziehung
stehenden Daten an benachbarten Speicherplätzen. Z.B. sind für jedes Ereignis eine Gatenummer, Zeit, neues Gatesausgangssignal
und Rücksprungbefehl (link) gespeichert. Die Basisadresse und der Offset werden zur Identifizierung der Struktur verwendet;
vier Adreßbits werden zur Identifizierung von Elementen innerhalb der Struktur benutzt. Die Adreßbits AQ bis A3,
entwickelt von den im rechten Teil der Fig. 8b gezeigten Gatespalten, wählen die Elemente innerhalb der Struktur. Diese
Adreßbits werden von dem PLA 182 mikrocodegesteuert und sind
entweder vom Mikrocode oder vom Datenbus wählbar. Datenleitungen DO1 D1, D2 und D3 und Mikrocodeleitungen UCO, UC1, UC2 und
UC3 sind mit diesen Gates verbunden.
Die oben beschriebene Wahl von Adreßbits ergibt einige Beschränkungen
bei der Unterteilung des Speichers in Abschnitte und der Abschnitte in Strukturen. Z.B. kann ein Speicherabschnitt
nicht mit der Adresse 1001 beginnen. Zu dieser Basis adresse kann kein Offset "hinzugezählt" werden, da eine wirkliche
Addition durch den vom Adressengenerator verwendeten Auswahlprozeß nicht vorgenommen wird. Ein Speicherabschnitt
kann jedoch mit der Adresse 100 0 beginnen und z.B. 249 4-Element-Strukturen
haben. Dies ist keine wesentliche Beschränkung im Vergleich zu den erreichten Vorteilen.
Es wurde ein Nebencomputer beschrieben, der einen ereignisgesteuerten
Algorithmus implementiert. Die durch den Nebencomputer ausgeführte Verarbeitung ist in einer speziellen Art unterteilt
und wird durch drei Prozessoren durchgeführt, um den
Algorithmus wirksam zu implementieren.
- Leerseite
Claims (11)
1. Computersystem zur Implementierung eines ereignisgesteuerten
Algorithmus, gekennzeichnet durch:
einen Master-Computer (26 .... 30) zur Gesamtsteuerung des Computersystems und zur Schaffung einer Benutzerschnittstelle
(29);
einen Nebencomputer (36, 39, 40, 41) zur Implementierung des Algorithmus unter Steuerung durch den Master-Computer (26
.... 30), wobei der Nebencomputer (36, 39, 40, 41) mehrere Prozessoren (39, 40, 41) für die Durchführung vorgegebener
Schritte des Algorithmus aufweist und mikroprogrammierbar ist; und
einer Schnittstellenanordnung (34, 35) zwischen dem Master-Computer
(26 ... 30) und dem Nebencomputer (36, 3 9, 40, 41).
2. Computersystem nach Anspruch 1, dadurch gekennzeichnet, daß der Master-Computer (26 ... 30) mit einem ersten Bus (26)
und der Nebencomputer (39, 40, 41) mit einem zweiten Bus (36) gekoppelt sind, daß der erste und zweite Bus über die Schnittstellenanordnung
(34, 35) verbunden sind und daß der zweite Bus (36) mit jedem der Prozessoren (39, 40, 41) verbunden
ist.
3. Computersystem nach Anspruch 1 oder 2, dadurch gekennzeichnet, daß die Prozessoren (39, 40, 41) durch in einer
Richtung übertragende Busse (49, 50, 51) in einer Ringanordnung miteinander verbunden sind.
4. Computersystem nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß jeder der Prozessoren (39, 40, 41) einen Microbefehle speichernden Microcodespeicher (69) aufweist und
daß der Mikrocodespeicher (69) vom Master-Computer (26 .... 30) programmgeladen wird.
5. Computersystem nach einem der Ansprüche 1 bis 4, dadurch gekennzeichnet, daß jeder der Prozessoren (39, 40, 41) einen
Datenbus (60), einen Speicher (43, -45, 46) sowie einen Speicheradressengenerator
(67) aufweist, der zwischen dem Datenbus (60) und dem Speicher (43, 45, 46) die Verbindung herstellt
und daß der Generator (67) für den Speicher (43, 45, 46) Adressen liefert, die aus einer Kombination von Signalen des
Datenbus (60) und eines mit dem Generator verbundenen Mikrocodespeichers (69) bestehen.
6. Computersystem nach einem der Ansprüche 1 bis 5, dadurch gekennzeichnet, daß jeder der Prozessoren (39, 40, 41) einen
FIFO-Puffer (65; 66) mit einem ausweitbaren Speicher zur Kopplung
mit einem anderen Prozessor aufweist.
7. Computersystem, insbesondere nach einem der Ansprüche 1 bis 6, zur Implementierung eines ereignisgesteuerten Simulationsalgorithmus,
dadurch gekennzeichnet, daß jeder der Prozessoren (39, 40, 41) zur Durchführung vorbestimmter Schritte
des Algorithmus vorgesehen ist und aufweist:
einen Datenbus (60);
eine arithmetische Logikeinheit (62), die mit dem Datenbus (60) verbunden ist;
einen Mikrocodespeicher (69) und einen Dekodierer (71) zur Steuerung der Operation des Prozessors, die mit der arithmetischen
Logikeinheit (62) und dem Datenbus (60) verbunden sind;
einen Speicher (43, 45 bzw. 46); und
einen Speicheradressengenerator (67), der den Datenbus (60) und den Speicher verbindet und mit dem Mikrocodespeicher
(69) verbunden ist, wobei der Generator (67) für den Speicher Adressen erzeugt, die eine auf Befehlen des Microcodespeichers
(69) basierende Kombination aus Signalen von dem Datenbus (60) und von dem Mikrocodespeicher (69) sind.
8. Computersystem, insbesondere nach einem der Ansprüche 1 bis 7, zur Implementierung eines ereignisgesteuerten Simulationsalgorithmus,
dadurch gekennzeichnet, daß ein erster, zweiter und dritter Prozessor (39, 40, 41) vorgesehen sind,
der zweite Prozessor (40) mit dem ersten Prozessor (39) derart verbunden ist, daß er von letzterem Signale empfangen kann,
der dritte Prozessor (41) mit dem zweiten Prozessor (40) derart verbunden ist, daß er von letzterem Signale empfangen kann
und der erste Prozessor (39) mit dem dritten Prozessor (41) derart verbunden ist, daß er von letzterem Signale empfangen
kann; daß der erste Prozessor (39) einen ersten Speicher (43) zur Speicherung des Zustands von Elementen des zu simulierenden
Systems an einer Vielzahl von vorbestimmten Intervallen aufweist; daß der zweite Prozessor (40) einen zweiten Speicher
(45) zur Speicherung der Verhaltenscharakteristika der Elemente des Systems auf die Ereignisse aufweist; daß der dritte
Prozessor (41) einen dritten Speicher (46) aufweist zur Speicherung von Änderungen an den Elementen des Systems darstellenden
Informationen an denjenigen Intervallen, bei denen die Änderungen auftreten; und daß der erste (39), zweite (40) und
dritte (41) Prozessor derart angeordnet sind, daß sie an den Inhalten ihrer zugehörigen Speicher (43, 45, 46) in Abhängigkeit
von vom zweiten, dritten und ersten Prozessor jeweils erhaltenen Signalen arbeiten.
9. Computersystem nach Anspruch 8, dadurch gekennzeichnet,
daß der dritte Speicher (46) auch bestimmte Verhaltenscharakteristika
der Elemente speichert.
10. Computersystem nach einem der Ansprüche 7 bis 9, dadurch
gekennzeichnet, daß jeder Prozessor (39, 40, 41) aufweist:
einen Bus (60);
einen FIFO-Eingangspuffer (65), der mit dem Bus (60)
gekoppelt ist;
einen FIFO-Ausgangspuffer (66), der mit dem Bus (60)
gekoppelt ist;
eine arithmetische Logikeinheit (62), die mit dem Bus (60) gekoppelt ist;
einen Mikrocodespeicher (69) zur Speicherung von Mikrocodebefehlen,
der mit dem Bus (60) gekoppelt ist;
einen mit dem Microcodespeicher verbundenen Dekodierer (71) für die Dekodierung von Befehlen des Mikrocodespeichers
(69); und
einen Adressengenerator (67), der den Bus (60) und den Speicher (43; 45; 46) zur Erzeugung von Speicheradressen verbindet.
11. Computersystem nach Anspruch 10, dadurch gekennzeichnet,
daß der Adressengenerator (67) mit dem Mikrocodespeicher (69) verbunden ist und unter dessen Steuerung Speicheradressen
erzeugt, die Kombinationen von Signalen des Bus und von Signalen des Mikrocodespeichers (69) sind.
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US06/594,533 US4751637A (en) | 1984-03-28 | 1984-03-28 | Digital computer for implementing event driven simulation algorithm |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE3508640A1 true DE3508640A1 (de) | 1985-10-03 |
Family
ID=24379281
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19853508640 Withdrawn DE3508640A1 (de) | 1984-03-28 | 1985-03-12 | Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus |
Country Status (8)
| Country | Link |
|---|---|
| US (1) | US4751637A (de) |
| JP (1) | JPS60218138A (de) |
| CA (1) | CA1234630A (de) |
| DE (1) | DE3508640A1 (de) |
| FR (1) | FR2562288B1 (de) |
| GB (1) | GB2156550B (de) |
| IL (1) | IL74541A (de) |
| IT (1) | IT1208522B (de) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE3808649A1 (de) * | 1988-03-15 | 1989-10-05 | Nixdorf Computer Ag | Steuereinrichtung fuer ein elektrisches bzw. elektromechanisches geraet |
| DE3933958A1 (de) * | 1989-10-11 | 1991-04-18 | Dieter Dr Vetterkind | Prozess-modellrechner |
Families Citing this family (27)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS61102569A (ja) * | 1984-10-26 | 1986-05-21 | Hitachi Ltd | 高速論理シミユレ−シヨン装置 |
| CA1283738C (en) * | 1985-11-13 | 1991-04-30 | Atsushi Hasebe | Data processor |
| US5239628A (en) * | 1985-11-13 | 1993-08-24 | Sony Corporation | System for asynchronously generating data block processing start signal upon the occurrence of processing end signal block start signal |
| US5126966A (en) * | 1986-06-25 | 1992-06-30 | Ikos Systems, Inc. | High speed logic simulation system with stimulus engine using independent event channels selectively driven by independent stimulus programs |
| US4787061A (en) * | 1986-06-25 | 1988-11-22 | Ikos Systems, Inc. | Dual delay mode pipelined logic simulator |
| US4873656A (en) * | 1987-06-26 | 1989-10-10 | Daisy Systems Corporation | Multiple processor accelerator for logic simulation |
| US4916647A (en) * | 1987-06-26 | 1990-04-10 | Daisy Systems Corporation | Hardwired pipeline processor for logic simulation |
| US4872125A (en) * | 1987-06-26 | 1989-10-03 | Daisy Systems Corporation | Multiple processor accelerator for logic simulation |
| US4901260A (en) * | 1987-10-28 | 1990-02-13 | American Telephone And Telegraph Company At&T Bell Laboratories | Bounded lag distributed discrete event simulation method and apparatus |
| JP2583949B2 (ja) * | 1988-03-10 | 1997-02-19 | 松下電器産業株式会社 | 論理シミュレーション方法と論理シミュレーション装置 |
| GB8812849D0 (en) * | 1988-05-31 | 1988-07-06 | Int Computers Ltd | Logic simulator |
| US5452231A (en) * | 1988-10-05 | 1995-09-19 | Quickturn Design Systems, Inc. | Hierarchically connected reconfigurable logic assembly |
| US5247650A (en) * | 1989-08-30 | 1993-09-21 | Industrial Technology Institute | System for combining originally software incompatible control, kinematic, and discrete event simulation systems into a single integrated simulation system |
| US5081601A (en) * | 1989-09-22 | 1992-01-14 | Lsi Logic Corporation | System for combining independently clocked simulators |
| US5375074A (en) * | 1990-01-23 | 1994-12-20 | At&T Corp. | Unboundedly parallel simulations |
| US5272651A (en) * | 1990-12-24 | 1993-12-21 | Vlsi Technology, Inc. | Circuit simulation system with wake-up latency |
| US5500808A (en) * | 1991-01-24 | 1996-03-19 | Synopsys, Inc. | Apparatus and method for estimating time delays using unmapped combinational logic networks |
| US5335191A (en) * | 1992-03-27 | 1994-08-02 | Cadence Design Systems, Inc. | Method and means for communication between simulation engine and component models in a circuit simulator |
| JP2548880B2 (ja) * | 1992-04-23 | 1996-10-30 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 空間分割型確率シミュレーション・システムおよび物質エネルギー・システムをシミュレートする方法 |
| US5745385A (en) * | 1994-04-25 | 1998-04-28 | International Business Machines Corproation | Method for stochastic and deterministic timebase control in stochastic simulations |
| US5625579A (en) * | 1994-05-10 | 1997-04-29 | International Business Machines Corporation | Stochastic simulation method for processes containing equilibrium steps |
| US5856933A (en) * | 1994-06-03 | 1999-01-05 | University Of South Florida | System and method for digital simulation of an electrical circuit |
| GB2293900B (en) * | 1994-10-03 | 2000-01-19 | Univ Westminster | Data processing method and apparatus for parallel discrete event simulation |
| US5615127A (en) * | 1994-11-30 | 1997-03-25 | International Business Machines Corporation | Parallel execution of a complex task partitioned into a plurality of entities |
| US5805859A (en) * | 1995-06-07 | 1998-09-08 | Synopsys, Inc. | Digital simulator circuit modifier, network, and method |
| US5826065A (en) * | 1997-01-13 | 1998-10-20 | International Business Machines Corporation | Software architecture for stochastic simulation of non-homogeneous systems |
| GB0509738D0 (en) * | 2005-05-12 | 2005-06-22 | Cambridge Consultants | Processor and interface |
Family Cites Families (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US3701976A (en) * | 1970-07-13 | 1972-10-31 | Bell Telephone Labor Inc | Floating point arithmetic unit for a parallel processing computer |
| US4123794A (en) * | 1974-02-15 | 1978-10-31 | Tokyo Shibaura Electric Co., Limited | Multi-computer system |
| IT1118355B (it) * | 1979-02-15 | 1986-02-24 | Cselt Centro Studi Lab Telecom | Sistema di interconnessione tra processori |
| AT361726B (de) * | 1979-02-19 | 1981-03-25 | Philips Nv | Datenverarbeitungsanlage mit mindestens zwei mikrocomputern |
| US4306286A (en) * | 1979-06-29 | 1981-12-15 | International Business Machines Corporation | Logic simulation machine |
| US4351025A (en) * | 1979-07-06 | 1982-09-21 | Hall Jr William B | Parallel digital computer architecture |
| WO1981001066A1 (en) * | 1979-10-11 | 1981-04-16 | Nanodata Computer Corp | Data processing system |
| FR2469751A1 (fr) * | 1979-11-07 | 1981-05-22 | Philips Data Syst | Processeur d'intercommunication du systeme utilise dans un systeme de traitement de donnees reparti |
| US4335426A (en) * | 1980-03-10 | 1982-06-15 | International Business Machines Corporation | Remote processor initialization in a multi-station peer-to-peer intercommunication system |
| US4365297A (en) * | 1980-12-29 | 1982-12-21 | Forney Engineering Company | Industrial control system with distributed computer implemented logic |
| DE3112693A1 (de) * | 1981-03-31 | 1982-10-14 | Stollmann & Co, 2000 Hamburg | Modular aufgebautes dezentrales datenverarbeitungssystem |
| US4468734A (en) * | 1982-03-26 | 1984-08-28 | International Business Machines Corporation | Method of purging erroneous signals from closed ring data communication networks capable of repeatedly circulating such signals |
| US4527249A (en) * | 1982-10-22 | 1985-07-02 | Control Data Corporation | Simulator system for logic design validation |
-
1984
- 1984-03-28 US US06/594,533 patent/US4751637A/en not_active Expired - Lifetime
- 1984-11-22 GB GB08429500A patent/GB2156550B/en not_active Expired
-
1985
- 1985-03-08 IL IL74541A patent/IL74541A/xx unknown
- 1985-03-12 DE DE19853508640 patent/DE3508640A1/de not_active Withdrawn
- 1985-03-26 FR FR858504469A patent/FR2562288B1/fr not_active Expired - Lifetime
- 1985-03-27 JP JP60061026A patent/JPS60218138A/ja active Pending
- 1985-03-28 CA CA000477770A patent/CA1234630A/en not_active Expired
- 1985-03-28 IT IT8520122A patent/IT1208522B/it active
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE3808649A1 (de) * | 1988-03-15 | 1989-10-05 | Nixdorf Computer Ag | Steuereinrichtung fuer ein elektrisches bzw. elektromechanisches geraet |
| DE3933958A1 (de) * | 1989-10-11 | 1991-04-18 | Dieter Dr Vetterkind | Prozess-modellrechner |
Also Published As
| Publication number | Publication date |
|---|---|
| IT8520122A0 (it) | 1985-03-28 |
| IL74541A (en) | 1988-08-31 |
| GB8429500D0 (en) | 1985-01-03 |
| FR2562288A1 (fr) | 1985-10-04 |
| IL74541A0 (en) | 1985-06-30 |
| GB2156550B (en) | 1988-01-27 |
| US4751637A (en) | 1988-06-14 |
| GB2156550A (en) | 1985-10-09 |
| FR2562288B1 (fr) | 1990-09-14 |
| JPS60218138A (ja) | 1985-10-31 |
| IT1208522B (it) | 1989-07-10 |
| CA1234630A (en) | 1988-03-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| DE3508640A1 (de) | Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus | |
| DE69032481T2 (de) | Buszugriff für Digitalrechnersystem | |
| DE69127101T2 (de) | System für verteilte mehrfachrechnerkommunikation | |
| DE3689394T2 (de) | Informationsverarbeitungsanlage mit einem Allzweckprozessor und einem Sonderzweckprozessor. | |
| DE69419524T2 (de) | Sperrsynchronisierung für verteilte speicher-massivparallelrechner | |
| DE69418146T2 (de) | Temporärer Registersatz für einen superpipeline-superskalaren Prozessor | |
| DE69030128T2 (de) | Signalprozessor | |
| DE2714805C2 (de) | ||
| DE69128017T2 (de) | Verteiltes rechnersystem | |
| DE69107476T2 (de) | Vorrichtung für eine in-circuit-prüfung mit einem minimalspeicher. | |
| DE69027806T2 (de) | Multifunktionskoppler zwischen einer zentralen Verarbeitungseinheit eines Rechners und verschiedenen Peripheriegeräten dieses Rechners | |
| DE3685711T2 (de) | Anordnung zur simulation von rechnerfunktionen von grossrechenanlagen. | |
| DE3338333A1 (de) | Logiksimulatorgeraet zur gueltigkeitspruefung einer logikstruktur | |
| DE3750028T2 (de) | Pipelineprozessor mit schwacher Kopplung. | |
| DE69425744T2 (de) | Verfahren zur modellierung von bidirektionalen oder multiplikativ gesteuerten signalpfaden in einem system zum erreichen eines statisch geplanten allzwecksimulators | |
| DE69520706T2 (de) | Herstellungsverfahren für einen elektrischen Vorrichtungs-Adapter | |
| DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
| DE69732793T2 (de) | Acht-bit-mikrokontroller mit risc-architektur | |
| DE69226272T2 (de) | Bedingungsfeststellen in asynchronpipeline | |
| DE69119149T2 (de) | Struktur zur direkten Speicher-zu-Speicher-Übertragung | |
| DE69225095T2 (de) | Wirksamer Arbiter | |
| DE10001168A1 (de) | Ausgabe-Fifo-Datenübertragungssteuereinrichtung | |
| DE68928300T2 (de) | Verfahren und Vorrichtung für Pipeline-Befehlsausführung | |
| DE68918966T2 (de) | System zur Steuerung der Datenübertragung. | |
| DE68925771T2 (de) | Emulatorsystem für eine Anzeige |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8141 | Disposal/no request for examination |