[go: up one dir, main page]

DE3508640A1 - Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus - Google Patents

Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus

Info

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
Application number
DE19853508640
Other languages
English (en)
Inventor
Gary M. Campbell Calif. Catlin
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Daisy Systems Corp
Original Assignee
Daisy Systems Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Daisy Systems Corp filed Critical Daisy Systems Corp
Publication of DE3508640A1 publication Critical patent/DE3508640A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design 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.
DER BEKANNTE "LOGICIAN" SIMULATOR
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.
BESCHREIBUNG DER IN DEM ERFINDUNGSGEMÄSSEN COMPUTER VERWENDETEN PROZESSOREN
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.
ALLGEMEINE OPERATION DES ERFINDUNGSGEMÄSSEN COMPUTERS
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.
MIKROCODE-DEKODIERER
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.
SPEICHERADRESSENGENERATOR
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)

PATENTANWÄLTE ZENZ & HELBER · D 4300 ESSEN 1 ■ ^M- RUHRSFEIN 1 ■ XEL. : (02 01) 4126 ff! η im DAISY SYSTEMS CORP. Ansprüche
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.
DE19853508640 1984-03-28 1985-03-12 Computersystem zur implementierung eines ereignisgesteuerten simulationsalgorithmus Withdrawn DE3508640A1 (de)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Cited By (2)

* Cited by examiner, † Cited by third party
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