DE60024088T2 - Ereignis-simulation einer schaltkreislogik - Google Patents

Ereignis-simulation einer schaltkreislogik Download PDF

Info

Publication number
DE60024088T2
DE60024088T2 DE60024088T DE60024088T DE60024088T2 DE 60024088 T2 DE60024088 T2 DE 60024088T2 DE 60024088 T DE60024088 T DE 60024088T DE 60024088 T DE60024088 T DE 60024088T DE 60024088 T2 DE60024088 T2 DE 60024088T2
Authority
DE
Germany
Prior art keywords
register
gate
associative
logic
delay
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.)
Expired - Fee Related
Application number
DE60024088T
Other languages
English (en)
Other versions
DE60024088D1 (de
Inventor
Damian Dalton
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.)
University College Dublin
Original Assignee
University College Dublin
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 University College Dublin filed Critical University College Dublin
Application granted granted Critical
Publication of DE60024088D1 publication Critical patent/DE60024088D1/de
Publication of DE60024088T2 publication Critical patent/DE60024088T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

  • Einführung
  • Die vorliegende Erfindung gilt einem Parallelverarbeitungsverfahren für Logiksimulation, das die Darstellung von Signalen als Bitsequenz auf einer Linie über eine Zeitperiode umfasst, sowie die Auswertung des Ausgangs jedes Logikgatters einschließlich einer Auswertung einer inhärenten Verzögerung mittels eines Vergleichs zwischen den Bitsequenzen seiner Eingänge mit einer vorbestimmten Bitmusterfolge, wobei diejenigen Logikgatter, deren Ausgänge sich über die Zeitperiode geändert haben, während der Auswertung der Gatterausgänge als echte Gatteränderungen ermittelt werden und nur diese echten Gatteränderungen zu den Fan-out-Gattern propagiert werden, wobei die Steuerung des Verfahrens in einem assoziativen Speichermechanismus durchgeführt wird, der in Wortform eine Gattereingangssignalhistorie speichert, indem ein Hitlistenregister von Logikgatter-Statusänderungen zusammengestellt und ein Mehrfachreaktions-Resolver (Multiple-Response-Resolver) verwendet wird, der einen Teil des assoziativen Speichermechanismus bildet, der eine Adresse für jeden Hit erzeugt und dann die Ergebnisse in der Hitliste durchsucht und sie für die nachfolgende Verwendung zu einem Ausgaberegister überträgt. Das Ausgaberegister kann das Endergebnis der Simulation enthalten oder kann eine Liste von Ausgängen darstellen, die als anschließendes Fan-out zu anderen Gattern zu verwenden sind. Außerdem zielt die Erfindung darauf, einen Parallelprozessor für die Logikereignissimulation bereitzustellen (APPLES).
  • Die Logiksimulation spielt eine wichtige Rolle bei dem Entwurf und der Validierung von VLSI-Schaltungen. Da die Schaltungen in ihrer Größe und Komplexität zunehmen, besteht stets die Forderung, die Verarbeitungsgeschwindigkeit dieses Entwurfswerkzeugs zu beschleunigen. Die Parallelverarbeitung gilt in der Industrie als beste Methode, dieses Ziel zu erreichen, und es wurden zahlreiche Parallelverarbeitungssysteme entwickelt. Leider sind große Leistungssteigerungen bei diesen Ansätzen ausgeblieben. Größere Leistungssteigerungen sind nur durch Beeinträchtigung der Genauigkeit des Gatterverzögerungsmodells, das in diesen Systemen eingesetzt wird, erreicht worden. Ein hoher Kommunikationsaufwand auf Grund der elementaren Werteübergabe zwischen Prozessoren, aufwändige Maßnahmen zur Vermeidung bzw. Behebung von Systemblockaden und Lastausgleichsverfahren stellen die Hauptbarrieren dar.
  • Die stetig wachsende Größe von VLSI-Schaltungen (Very Large Scale Integration) unterstreicht weiterhin den Bedarf für ein schnelles und genaues Mittel zur Simulation von Digitalschaltungen. Ein Kompromiss zwischen Modellgenauigkeit und rechentechnischer Durchführbarkeit wurde in der Logiksimulation gefunden. Bei diesem Simulationsparadigma sind die Signalwerte diskret und können im einfachsten Fall die Logikwerte 0 und 1 annehmen. Komplexere Signalwerte transienter Zustände werden unter Verwendung einer bis zu 9-wertigen Logik modelliert. Logikgatter können als ideale Bauelemente ohne Schaltzeit oder realistischer als elektronische Bauelemente mit endlicher Verzögerung und Schalteigenschaften, wie zum Beispiel trägen, reinen oder unbestimmten Verzögerungen, modelliert werden.
  • Wegen des ungeheueren Ausmaßes an Rechenaufwand für große Schaltungen, wurde die Anwendung der Parallelverarbeitung für dieses Problem untersucht. Leider blieb eine große Leistungssteigerung für die meisten Systeme und Ansätze aus.
  • Sequentielle (Uniprozessor) Logiksimulation kann in zwei weite Gruppen unterteilt werden: Compiled-Code-Simulation und ereignisgesteuerte Simulation (Breur et al: Diagnosis and Reliable Design of Digital Systems. Computer-Science Press, New York (1976)). Diese Verfahren können in einer parallelen Umgebung eingesetzt werden, indem die Schaltung zwischen Prozessoren aufgeteilt wird. Bei der Compiled-Code-Simulation werden alle Gatter zu allen Zeitschritten ausgewertet, selbst wenn sie nicht aktiv sind. Die Schaltung muss angepasst werden und es können nur Unit-Delay- oder Zero-Delay-Modelle eingesetzt werden. Sequentielle Schaltungen werfen ebenfalls Schwierigkeiten für diese Simulationsart auf. Ein Compiled-Code-Mechanismus wurde auf verschiedene Generationen spezialisierter, von IBM entworfener paralleler Hardwarebeschleuniger angewendet, die Logic Simulation Machine LSM (Howard et al: Introduction to the IBM Los Gatos Simulation Machine. Proc IEEE Int. Conf. Computer Sedign: VLSI in Computers. (Okt. 1983) 580–583), die Yorktown Simulation Engine (Pfister: The Yorktown Simulation Engine. Introduction 19th ACM/IEEE Design Automation Conf, (Juni 1982), 51–54) und die Engineering Verification Engine EVE (Dunn: IBM's Engineering Design System Support for VLSI Design and Verification. IEEE Design and Test Computers, (Februar 1984) 30–40) und eine Leistung bis zu 2,2 Milliarden Gatterauswertungen/Sekunde berichtet. Agrawal et al: Logic Simulation and Parallel Processing Intl Conf on Computer Aided Design (1990) haben die Aktivität verschiedener Schaltungen analysiert und ihre Ergebnisse haben gezeigt, dass die Schaltungsaktivität (d.h. Gatter, deren Ausgänge sich im Übergang befinden) zu jedem Zeitpunkt typischerweise in dem Bereich von 1% bis 0,1% liegt. Deshalb ist die effektive Anzahl an Gatterauswertungen dieser Maschinen voraussichtlich um einen Faktor einhundert oder mehr kleiner. Leistungssteigerungswerte in einem Bereich von 6 bis 13 für verschiedene Compiled-Code-Benchmark-Schaltungen wurden auf dem MIMD Encore Multimax Multiprozessor mit gemeinsamem Speicher von Soule und Blank: Parallel Logic Simulation on General purpose machines. Proc Design Automation Conf, (Juni 1988), 166–171, festgestellt. Eine SIMD-(array)-Version wurde durch Kravitz (Mueller-Thuns et al: Benchmarking Parallel Processing Platforms: An Application Perspective. IEEE Trans on Parallel and Distributed systems, 4 Nr. 8 (Aug. 1993)) mit ähnlichen Ergebnissen untersucht.
  • Das immanente Unit-Delay-Modell der Compiled-Code-Simulatoren ist für viele Anwendungen zu sehr vereinfachend.
  • Einige Verzögerungsmodelleinschränkungen der Compiled-Code-Simulation wurden in parallelen ereignisgesteuerten Verfahren beseitigt. Diese Parallelalgorithmen sind im Wesentlichen aus zwei Phasen zusammengesetzt; eine Gatterauswertungsphase und eine Ereignisplanungsphase. Die Gatterauswertungsphase bestimmt die sich ändernden Gatter und die Planungsphase legt die durch diese Änderungen betroffenen Gatter (die Fan-out-Gatter) in einer zeitlich geordneten verketteten Liste ab, die durch die aktuelle Zeit und die Verzögerungen der aktiven Gatter ermittelt wird. Soule und Blank: Parallel Logic Simulation on General purpose machines. Proc Design Automation Conf, (Juni 1988), 166–171 und Mueller-Thuns et al: Benchmarking Parallel Processing Platforms: An Application Perspective. IEEE Trans on Parallel and Distributed systems, 4 Nr. 8 (Aug. 1993) haben synchrone Ereignis-MIMD-Architekturen mit gemeinsamem und verteiltem Speicher untersucht. Abermals war die Gesamtleistung enttäuschend, die Ergebnisse verschiedener Benchmarks, die auf einem 8-Prozessor Encore Multimax und einem 8-Prozessor iPSC-Hypercube ausgeführt wurden, ergaben lediglich Leistungssteigerungswerte im Bereich von 3 bis 5.
  • Asynchrone Ereignissimulation gestattet eine begrenzte Prozessorautonomie. Kausalitätsbedingungen erfordern eine gelegentliche Synchronisierung zwischen Prozessoren und ein Wiederholen von Ereignissen. Systemblockaden zwischen Prozessoren müssen aufgelöst werden. Chandry, Misra: Asynchronous Distributed Simulation via Sequence of parallel Computations. Comm ACM 24(ii) (April 1981), 198–206 und Bryant: Simulation of Packet Communications Architecture Computer Systems. Tech report MIT-LCS-TR-188. MIT Cambridge (1977) haben Algorithmen zur Vermeidung von Systemblockaden entwickelt, während Briner: Parallel Mixed Level Simulation of Digital Circuits Virtual Time. Ph.D. thesis. Dept of El. Eng, Duke University, (1990) und Jefferson: Virtual time. ACM Trans Programming languages systems, (Juli 1985) 404–425 Algorithmen erforscht haben, die auf der Behebung von Systemblockaden beruhen. Die beste Leistungssteigerung für asynchrone MIMD-Systeme mit gemeinsamem und verteiltem Speicher war 8,5 für ein 14-Prozessorsystem und 20 für ein 32-Prozessor-BBN-System.
  • Eine frühe Version eines Parallelverarbeitungsverfahrens für die Logiksimulation wurde in der eigenen Forschungsarbeit des Anmelders mit dem Titel „An associative memory approach to parallel logic event driven simulation" beschrieben, die in Proceedings of the Annual European Conference on Computer Systems and Software Engineering (Compeuro), US, Los Alamitos, IEEE Comp. Soc. Press, Vol Conf 6. 4. Mai 1992 Seiten 341–246 veröffentlicht wurde. Diese Arbeit beschrieb ein Logiksimulationsverfahren, bei dem die Gatterauswertungen in assoziativem Speicher statt in dem Prozessor ausgeführt werden können. Das beschriebene Verfahren vermeidet den Bedarf für einen Ereignisplanungsmechanismus und ermöglicht die Modellierung verschiedener Gattertypen und Verzögerungsmodelle.
  • Eine frühe Version eines Prozessors zur Ausführung des Logiksimulationsverfahrens mit Assoziativspeicher ist in der eigenen Forschungsarbeit des Anmelders mit dem Titel „A special purpose Hybrid SIMD processor for logic event simulation" beschrieben, die in Proceedings of the Seventh Euromicro Workshop on Parallel and Distributed Processing, PDP '99, Funchal Portugal 3.–5. Feb. 1999, Seiten 74–83 veröffentlicht wurde. Diese Arbeit stellt eine Architektur vor, die speziell für die Logiksimulation entworfen wurde, die nicht auf ein Unit-Delay-Modell beschränkt ist und die komplexe Verzögerungen, wie zum Beispiel träge Verzögerungen, simulieren kann. Abermals wird die parallele Ausführung der Logikgatterauswertungen im Gegensatz zur Auswertung im Prozessor im Speicher vorgenommen.
  • Optimierungsstrategien wie zum Beispiel Lastverteilung, Schaltungspartitionierung und verteilte Warteschlangen sind erforderlich, um die besten Leistungssteigerungszahlen zu erzielen. Unglücklicherweise tragen diese Mechanismen selbst zu großem Zusatzkommunikationsaufwand bei Parallelsystemen mit selbst bescheidener Größe bei. Außerdem verursacht der Gatterauswertungsvorgang trotz seiner geringen Granularität zwischen 10 bis 250 Maschinenzyklen pro Gatterauswertung.
  • Ausführungen der Erfindung
  • Die Erfindung umfasst ein Verfahren wie in Anspruch 1 festgelegt und einen Prozessor wie in Anspruch 15 festgelegt für einen zugehörigen Parallelprozessor für die Logikereignissimulation; der Prozessor wird in dieser Beschreibung mit APPLES bezeichnet und wurde speziell für die parallele diskrete Ereignislogiksimulation und die Durchführung eines solchen parallelen Verarbeitungsverfahrens entworfen. Zusammengefasst bietet die Erfindung Gatterauswertungen im Speicher und ersetzt die Interprozessorkommunikation durch ein Abfrageverfahren. Außerdem ist der Abfragemechanismus derart gestaltet, dass er Parallelisierung ermöglicht und eine breite Vielfalt an Verzögerungsmodellen verwendet werden kann.
  • Im Wesentlichen ist deshalb ein Parallelverarbeitungsverfahren für die Logiksimulation wie in Anspruch 1 festgelegt bereitgestellt.
  • Eines der Hauptmerkmale der Erfindung ist die Segmentierung oder Unterteilung wenigstens eines Registers oder einer Hitliste in kleinere Register oder Hitlisten, um die Rechenzeit zu verringern. Das andere Merkmal von erheblicher Bedeutung ist die Handhabung der Übertragung des Leitungssignals durch Modellieren von Signalverzögerungen. Schließlich ermöglicht das Verfahren gemäß der Erfindung, die Simulation auf beliebig gewählten Zeitperioden auszuführen.
  • Das zugehörige Register ist in einzelne kleinere assoziative Subregister untergeteilt, wobei ein Logikgattertyp jedem assoziativem Subregister zugeordnet ist, wobei jedes assoziative Subregister entsprechende mit ihm verbundene Subregister aufweist, wodurch Gatterauswertungen und Gatterprüfungen parallel in jedem assoziativen Subregister durchgeführt werden können.
  • Weiter stellt die Erfindung einen Parallelprozessor für die Logikereignissimulation bereit (APPLES), der im Wesentlichen einen zugehörigen Speichermechanismus aufweist, der mehrere einzelne assoziative Subregister jeweils zur Speicherung einer Gattereingangssignalhistorie für einen bestimmten Logikgattertyp in Wortform umfasst. Außerdem gibt es eine Zahl einzelner zusätzlicher Subregister, die jedem assoziativen Subregister zugeordnet sind, wodurch Gatterauswertungen und Gatterprüfungen parallel in jedem assoziativen Subregister durchgeführt werden können.
  • Bei dem Verfahren gemäß der Erfindung wird jedes assoziative Subregister dazu verwendet, eine Hitliste zu bilden, die mit einem entsprechenden separaten Abfrageregister verbunden ist.
  • Idealerweise wird mehr als ein Subregister verwendet, wenn es eine Anzahl von Subregistern gibt und die Anzahl eines Logikgattertyps eine vorbestimmte Zahl übersteigt.
  • Idealerweise werden die Abfrageregister durch eine Ausnahmelogik unter Verwendung eines ODER-Gatters gesteuert, wobei die Abfrage für jedes Register an dem ODER-Gatter beendet ist, das den Zustand ändert, was anzeigt, dass keine weiteren Übereinstimmungen vorhanden sind. Die vorbestimmte Anzahl wird durch die Rechenlast bestimmt.
  • Die Abfrage kann auf viele Arten durchgeführt werden, aber einer der besten Wege zur Durchführung ist, sequentiell durch die Hitliste zu zählen, wobei im Allgemeinen die Schritte ausgeführt werden:
    Überprüfen, ob das Bit, das einen Hit anzeigt, gesetzt ist;
    Falls ein Hit, Bestimmen der durch diesen Hit betroffenen Adresse;
    Speichern der Adresse;
    Löschen des Bits in der Hitliste;
    Weitergehen zur nächsten Position in der Hitliste; und
    Wiederholen der obigen Schritte bis die Hitliste gelöscht ist.
  • Offensichtlich wird, wo Fan-out anschließend auftritt, mehr als eine Adresse hervorgebracht.
  • In einer bestimmten Ausführungsform der Erfindung wird ein solches Parallelverarbeitungsverfahren für Logiksimulation bereitgestellt, in dem jedes Leitungssignal für ein Ziellogikgatter in mehreren Bits gespeichert wird, wobei jedes eine Verzögerung von einer Zeitperiode darstellt und die gesamten Bits die Verzögerung zwischen Signalausgang und Empfang durch das Ziellogikgatter darstellen und in dem die inhärente Verzögerung jedes Logikgatters auf die selbe Weise dargestellt wird. Die Zeitperiode ist beliebig gewählt und wird häufig in der Größenordnung von 1 Nanosekunde oder weniger liegen. Die Tatsache, dass die Zeitperiode beliebig gewählt werden kann, ist von immenser Bedeutung, da es möglich ist, eine Schaltung für mehrere verschiedene Zeitperioden zu simulieren. In verstärktem Maße wird die Auswirkung der bei der Übertragung des Leitungssignals zwischen Logikgattern inhärente Verzögerung wichtiger, da die Antwortzeit der Schaltungsbauelemente abnimmt.
  • In dieser letzteren Ausführungsform wird jede Verzögerung als ein Verzögerungswort in einem Assoziativspeicher gespeichert, der Teil des assoziativen Speichermechanismus ist und in dem:
    die Länge des Verzögerungsworts festgelegt ist; und
    falls die Verzögerungswortbreite die Breite des assoziativen Registerworts übersteigt:
    die Anzahl der ganzzahligen Vielfachen der Registerwortbreite, die in dem Verzögerungswort enthalten ist, als ein Gatterzustand berechnet wird;
    der Gatterzustand in einem weiteren Zustandsregister gespeichert wird;
    der Rest aus der Berechnung in dem assoziativen Register mit jenen Verzögerungsworten gespeichert wird, deren Breiten die Breite des assoziativen Registerworts nicht übertroffen haben; und
    bei der Zählung des assoziativen Registers beginnend:
    das Zustandsregister für das in das Zustandsregister eingetragene Verzögerungswort herangezogen wird und der Rest für die Zählung des assoziativen Registers ignoriert wird;
    am Ende der Zählung des assoziativen Registers das Zustandsregister aktualisiert wird; und
    die Zählung fortgesetzt wird, bis der Rest die noch erforderliche Zahl darstellt.
  • Zur Durchführung der Erfindung wird eine Initialisierungsphase ausgeführt, in der vorgegebene Signalwerte eingegeben werden, nicht spezifizierte Signalwerte als unbekannt gesetzt werden, Prüfvorlagen vorbereitet werden, die das Verzögerungsmodell für jedes Logikgatter festlegen, die eingegebene Schaltung analysiert wird, um eine äquivalente Schaltung bestehend aus 2-Eingangs-Logikgattern zu erzeugen, und die 2-Eingangs-Logikgatter werden dann konfiguriert.
  • Mit der vorliegenden Erfindung kann eine mehrwertige Logik angewendet werden und in dieser Situation werden n Bits verwendet, um einen Signalwert zu jedem Zeitpunkt darzustellen, wobei n eine beliebig gewählte Logik darstellt. Eine besonders geeignete Logik ist eine 8-wertige Logik, bei der 000 logisch 0 darstellt, 111 logisch 1 darstellt und 001 bis 110 beliebig festgelegte andere Signalzustände darstellen.
  • Eines der Merkmale der Erfindung ist, dass die Wertefolge an einem Logikgatter als Bitmuster gespeichert wird, das ein eindeutiges Wort in dem assoziativen Speichermechanismus bildet, und auf diese Weise ist es möglich, einen Datensatz aller Werte zu speichern, die ein Logikgatter während der Verzögerungseinheiten der längsten Verzögerung in der Schaltung angenommen hat.
  • Ausführliche Beschreibung der Erfindung
  • Die Erfindung wird deutlicher aus der folgenden Beschreibung ihrer Ausführungsformen verstanden werden, die nur als Beispiel mit Bezug auf die begleitenden Zeichnungen gegeben wird, in denen:
  • 1 die Funktionsblöcke des APPLE-Prozessors darstellt;
  • 2 den trägen Verzögerungsmechanismus in dem APPLE-System darstellt;
  • 3 eine Darstellung eines simulierten Takts ist;
  • 4 ein Prüfsuchmuster darstellt;
  • 5 eine Darstellung des logischen Verknüpfungsmechanismus gemäß der Erfindung ist;
  • 6 Bauelemente darstellt, die während einer Gatterauswertungsphase aktiv sind;
  • 7 Bitmuster für ein unbestimmtes Verzögerungsmodell und Hasarderkennung darstellt;
  • 8 eine Skizze einer alternativen Anordnung von Prozessoren gemäß der Erfindung ist;
  • 9 den Aufbau eines Prozessors im Detail darstellt; und
  • 10 eine Ansicht ähnlich der in 1 des alternativen Prozessoraufbaus ist.
  • Die wesentlichen Elementaraufgaben für die parallele Logiksimulation sind:
    • 1. Gatterauswertung
    • 2. Verzögerungsmodell-Implementierung
    • 3. Fan-out-Gatteraktualisierung
  • Der Bezugsrahmen für den Entwurf einer parallelen Logiksimulationsarchitektur entstand durch Ermittlung der wesentlichen Simulationselementaroperationen, die parallel ausgeführt werden können und durch Minimierung der Aufgaben, die diese Operationen unterstützen und die dem parallelen System gänzlich innewohnen.
  • Tätigkeiten wie zum Beispiel die Ereignisplanung und der Lastausgleich werden als Implementierungsfrage verstanden, die nicht notwendigerweise in einem neuen Entwurf berücksichtigt sein müssen. Ein wichtiger zusätzlicher kritischer Punkt ist, dass der Entwurf unmittelbar in Hardware so viele parallele Aufgaben wie möglich und so schnell wie möglich ausführen muss, jedoch ohne die Art des Verzögerungsmodells zu beschränken.
  • Die vorliegende Erfindung enthält unter Beachtung der obigen Zielsetzungen mehrere spezielle Assoziativspeicherblöcke und Hardware in der APPLES-Architektur.
  • Die Modellimplementierung der Gatterauswertung/Gatterverzögerung und des Aktualisierungs-/Fan-out-Vorgangs werden mit Bezug auf die APPLES-Architektur mit Bezug auf 1 erläutert.
  • In 1 sind die Funktionsblöcke des APPLES-Prozessors dargestellt. Die der Gatterauswertung entsprechenden Blöcke sind Assoziativ-Array 1a 1, Eingangswert-Registerbank 2, Assoziativ-Array 1b, Prüfergebnis-Registerbank 4, Gruppenergebnis-Registerbank 5 und die Gruppentest-Hitliste 6. Die Gruppentest-Hitliste speist der Reihe nach einen Mehrfachreaktions-Resolver 7, der wiederum über einen Fan-out-Speicher 8 ein Adressregister 9 speist, das mit der Eingangswert-Registerbank 2 verbunden ist. Das Assoziativ-Array 1 weist ein assoziatives Maskenregister 1a und Eingangsregister 1a auf, während das Assoziativ-Array 1b ein Maskenregister 1b und Eingangsregister 1b aufweist. Ähnlich weist die Prüfergebnis-Registerbank 4 ein aktives Ergebnisregister 14 auf und die Gruppenergebnis-Registerbank 5 weist ein Maskenregister 15 und ein Eingangsregister 16 auf. Schließlich ist eine Eingangswert-Registerbank 17 vorgesehen. Abgesehen von den Assoziativ-Arrays weist die Gruppenergebnis-Registerbank parallele Suchmöglichkeiten auf. Ungeachtet der Wortanzahl in diesen Strukturen können sie parallel in konstanter Zeit durchsucht werden. Weiterhin können die Wörter in der Eingangswert-Registerbank 17 und in dem Assoziativ-Array 1b parallel nach rechts geschoben werden, während sie im Speicher resident sind.
  • Ein Gatter kann ausgewertet werden, sobald seine Eingangsleitungswerte bekannt sind. In herkömmlichen Uniprozessor- und Parallelsystemen sind diese Werte im Speicher abgelegt und werden durch den Prozessor bzw. die Prozessoren abgerufen, sobald das Gatter aktiviert wird. In APPLES werden Gattersignalwerte in assoziativen Speicherwörtern abgelegt. Die Abfolge von Signalwerten, die in einer Zeitperiode an einer bestimmten Leitung erschienen ist, wird in einem gegebenen assoziativen Speicherwort in zeitlich geordneter Reihenfolge abgelegt. Zum Beispiel könnte ein Binärwertmodell in einem 32-Bit Wort die Historie von Leitungswerten speichern, die in den letzten 32 Zeitintervallen erschienen sind. Die Gatterauswertung läuft ab, indem parallel nach geeigneten Signalwerten im Assoziativspeicher gesucht wird. Teile der Wörter, die ohne Bedeutung sind (z. B. sind für ein 4-Einheiten-Gatterverzögerungsmodell nur die 4 letzten Bits relevant), werden durch die Verknüpfung aus Eingangs- und Maskenregister des Speichers aus der Suche ausgeblendet. Für einen bestimmten Gattertyp (z. B. Und, Oder) und ein Gatterverzögerungsmodell gibt es Anforderungen an die Struktur der Eingangssignale, um eine Änderung am Ausgang zu bewirken. Jede Mustersuche im Assoziativspeicher ermittelt jene Signalwerte, die ein bestimmtes Merkmal der erforderlichen Struktur aufweisen (z. B. jene Signale, die innerhalb der letzten 3 Zeiteinheiten auf HIGH gegangen sind). Jene Leitungen, die alle Merkmale aufweisen, zeigen ein aktives Gatter an. Die Leitungswerte sind in einem mit Assoziativ-Array 1b (Wortleitungs-Registerbank) bezeichneten Speicherblock abgelegt. Nur jene Gattertypen, die für die angewendeten Suchmuster relevant sind, werden ausgewählt. Dies wird durch Markieren jedes Worts mit einem Gattertyp erreicht. Diese Markierungen werden im Assoziativ-Array 1a gehalten. Ein bestimmter Gattertyp wird durch eine parallele Suche der gewünschten Markierung im Assoziativ-Array 1a aktiviert.
  • Dieser einfache Auswertungsmechanismus impliziert, dass die Leitungen durch den Gattertyp, in den sie münden, bestimmt werden müssen, da unterschiedliche Gattertypen unterschiedliche, sie aktivierende Eingangsleitungsfolgen aufweisen. Gatter eines bestimmten Typs werden durch eine parallele Suche der Gattertypkennungen im Assoziativ-Array 1a ausgewählt.
  • Jedes Signalmerkmal entspricht einer Bitmustersuche im Speicher. Da mehrere Merkmale normalerweise für ein aktiviertes Gatter erforderlich sind, muss das Ergebnis mehrerer Mustersuchen erfasst werden. Diese Suchen können als Prüfungen auf Wörtern betrachtet werden.
  • Das Ergebnis einer Prüfung ist entweder erfolgreich oder nicht. Dies kann mit einem einzelnen Bit in einem entsprechenden Wort in einem anderen Register, das in einer als Prüfergebnis-Registerbank genannten Registerbank gehalten wird, aufgezeichnet werden. Da angenommen wird, dass jedes Gatter zwei Eingänge aufweist (Inverter und Mehrfacheingangsgatter werden in ihre 2-Eingangsgatter-Schaltungsäquivalente übersetzt), werden die Prüfungen mit Wortpaaren in dieser Bank verknüpft. Dieser Verknüpfungsmechanismus ist für ein Verzögerungsmodell spezifisch und wird durch das Ergebnisaktivatorregister festgelegt und besteht aus einfacher UND- oder ODER-Operation zwischen den Bits der Wortpaare.
  • Die Ergebnisse jeder Verknüpfung jedes Wortpaars, der letzte Schritt des Gatterauswertungsvorgangs, werden in einem einzelnen Wort in einem anderen Assoziativ-Array, der Gruppenergebnis-Registerbank 5, abgelegt. Aktive Gatter besitzen ein eindeutiges Bitmuster in dieser Bank und können durch eine parallele Suche nach diesem Bitmuster bestimmt werden. Erfolgreiche Kandidaten dieser Suche setzen ihr Bit in dem 1-Bit-Spaltenregister Gruppentest-Hitliste.
  • Die Bits in jeder Spaltenposition jedes Gatterpaars in der Prüfergebnis-Registerbank 4 werden gemäß den Logikoperatoren, die in dem Ergebnisaktivatorregister festgelegt sind, verknüpft. Die Bits jeder Spalte werden zeitlich der Reihe nach verknüpft, um die Anzahl der Ausgangsleitungen in der Prüfergebnis-Registerbank 4 zu verringern. Auf diese Weise ist nur eine Ausgangsleitung für jedes Gatterpaar in der Prüfergebnis-Registerbank erforderlich anstelle einer Leitung für jede Spaltenposition.
  • Das Ergebnis der Verknüpfung der Gatterpaare in der Prüfergebnis-Registerbank 4 wird Spalte für Spalte in die Gruppenergebnis-Registerbank 5 geschrieben. Nur eine Spalte wird parallel bei einer jeweiligen Taktflanke geschrieben. Dies impliziert, dass nur eine Eingangsleitung zur Gruppenergebnis-Registerbank 5 pro Gatterpaar in der Prüfergebnis-Registerbank erforderlich ist.
  • Dies verringert die Anzahl an Verbindungen von der Prüfergebnis-Registerbank zur Gruppenergebnis-Registerbank.
  • Die Abfrageregister sind insoweit unabhängig, als sie dekrementiert oder inkrementiert werden können, während andere Abfrageregister gesperrt sind, obwohl sie im Einklang mit einem Taktsignal getaktet werden.
  • Die optimale Anzahl an Abfrageregistern ist durch die Inverse der Wahrscheinlichkeit gegeben, mit der ein Hit in der Hitliste gefunden wird.
  • Es ist wesentlich, dass eine ODER-Operation alle Bits in der Hitliste mit einer Flanke einer Taktperiode berechnet, um zu bestimmen, wann alle Hitbits gelöscht sind, und mit der entgegengesetzten Flanke des selben Taktzyklus ist es jedem Abfrageregister, dem der Zugriff auf seine Fan-out-Liste erlaubt ist, gestattet, das Hitbit, welches es ermittelt hat, zu löschen. Der Zugriff wird durch ein Wartesemaphorsystem gesteuert, um zu gewährleisten, dass nur jeweils ein Zugriff auf jeden Einzelzugriffsspeicher ausgeführt wird.
  • Ein alternatives System besteht aus einem Mehrzugriffs-Fan-out-Speicher, der aus mehreren Speicherbänken besteht, von denen jede gleichzeitig angesteuert werden kann. Jede Speicherbank in dem System besitzt ihren eigenen Semaphorsteuerungsmechanismus.
  • Eine andere Strategie weist ein Hitbit auf, das die Eingänge seiner Fan-out-Liste in dem Eingangswertregister freigibt. Die Freigabeverbindungen von der Hitliste zu den passenden Elementen in der Eingangswert-Registerbank werden vor dem Beginn der Simulation hergestellt und werden über den Zusammenhang zwischen den Gattern in der zu simulierenden Schaltung bestimmt. Diese Verbindungen können mittels einer dynamisch konfigurierten Baugruppe, wie zum Beispiel einem FPGA (Field Programmable Gate Array), das die Hitlistenelemente physikalisch zu ihren Fan-out-Eingängen weiterleiten kann, hergestellt werden. Bei diesem Verfahren werden alle so verbundenen aktiven Fan-out-Elemente gleichzeitig freigegeben und parallel mit dem selben Logikwert aktualisiert.
  • Der Steuerungskern besteht aus einer synchronisierten, selbstgeregelten Ereignisreihe, die in einem Beispiel, dem Verilog-Code, mit e0, e1, e2 usw. gekennzeichnet ist. Ein Ereignis entspricht dem Abschluss einer Hauptaufgabe. Selbstregelung bedeutet, dass es keine Software gibt, die die Ereignisreihe steuert, obwohl es prozessorexterne Software geben mag, die Informationen bezüglich des Prozessorstatus anfordert. Außerdem ist impliziert, dass der Entwurf kein Mikroprogrammieren bedingt. Dies beseitigt den Bedarf für eine mikroprogrammierte Einheit und erhöht die Verarbeitungsgeschwindigkeit.
  • Bei der Fan-out-Aktualisierungstätigkeit, die zum Beispiel durch e20 gesteuert wird, ist es wesentlich, dass das Ereignis, dass der Mehrfachreaktions-Resolver 7 keine zu ermittelnden Hits mehr aufweist, diese Tätigkeit beendet. Es besteht die Möglichkeit, dass diese Tätigkeit durch das Ereignis beendet wird, dass die ganze Hitliste durchsucht wurde. Dennoch kann die Erkennung, dass keine Hits mehr existieren, diesen Fan-out-Aktualisierungsvorgang frühzeitig beenden und führt zu einer schnelleren Ausführungszeit dieses Vorgangs.
  • Einige Logikeinheiten können Verzögerungen aufweisen, die den Zeitrahmen, der in dem Wort des Assoziativ-Arrays 1b darstellbar ist, übersteigen. Größere Verzögerungen könne modelliert werden, indem einem Gattertyp ein Zustand zugeordnet wird. In diesem Fall wird ein Gatter und sein Zustand in dem Assoziativ-Array 1a festgelegt. Prüfungen werden auf dem Assoziativ-Array 1b ausgeführt und wenn ein Gatter mit einem gegebenen Zustand eine Eingangswertkritik besteht, zusätzlich zu den Fan-out-Elementen des Gatters, die möglicherweise betroffen sind, wird der Gatterzustand in dem Assoziativ-Array 1a ergänzt. Dieser neue Zustand kann ebenfalls einen neuen Ausgangswert verursachen, der der Fan-out-Liste des Gatters zugeschrieben wird. Die angewendeten Prüfungen werden durch den Gattertyp und Gatterzustand bestimmt. Bei diesem Mechanismus enthält die Fan-out-Liste eines Gatters die normalen Fan-out-Eingänge und die Adresse im Assoziativ-Array 1a des Gatters selbst.
  • Um zu bestimmen, ob der Zustand oder der Zustand und die Fan-out-Gatter zu aktualisieren sind, kann der Zustand (ein Binärwert) als Offset in den Fan-out-Aktualisierungsdateien des Gatters dienen. Der Zustand wird der Ausgangsposition jeder Datei eines Gatters hinzugerechnet und dies ermöglicht, die normale Fan-out-Liste des Gatters zu umgehen oder nicht.
  • Die Verbindung zwischen den zu simulierenden Logikeinheiten kann modelliert werden, indem ein großes Verzögerungsmodell, das unten beschrieben wird, verwendet wird. Außerdem können einzelne Leitungen durch ein Wort statt zwei in dem Assoziativ-Array 1a, Assoziativ-Array 1b und der Prüfergebnis-Registerbank 4 modelliert werden. Verzweigungsstellen werden als gesonderte Leitungen modelliert, was es ermöglicht, dass unterschiedliche Verzweigungsstellen unterschiedliche Verzögerungseigenschaften haben.
  • Eine effiziente Implementierung verwendet Einzelwortversionen des Assoziativ-Arrays 1a, Assoziativ-Arrays 1b und der Prüfergebnis-Registerbank.
  • Der APPLES-Gatterauswertungsmechanismus wählt Gatter eines bestimmten Typs aus, wendet eine Reihe von Bitmustersuchen (Prüfungen) auf sie an und bestimmt die aktiven Gatter, indem das Ergebnis jeder Mustersuche aufgezeichnet wird und diejenigen bestimmt werden, die alle erforderlichen Prüfungen erfüllt haben. Dieser Mechanismus führt die Gatterauswertung in konstanter Zeit durch – die Parallelsuche ist unabhängig von der Wortanzahl. Dies ist eine effektive lineare Beschleunigung der Auswertungstätigkeit. Er ermöglicht ebenfalls unterschiedliche Verzögerungsmodelle, da ein Verzögerungsmodell durch eine Menge an Suchmustern festgelegt werden kann. Weitere Erörterung hierüber wird unten gegeben.
  • Aktive Gatter setzen ihre Bits in der Spaltenhitliste. Ein Mehrfachreaktions-Resolver sucht diese Liste durch. Der Mehrfach-Resolver kann ein einzelner Zähler sein, der die gesamte Liste von oben nach unten untersucht und anhält, wenn er auf ein gesetztes Bit trifft, und dann verwendet er seinen aktuellen Wert als Vektor für die Fan-out-Liste des bestimmten aktiven Gatters. Diese Liste enthält die Adressen der Fan-out-Gattereingänge in einer Eingangswert-Registerbank. Der neuen Logikwerte der aktiven Gatter werden in das passende Wort dieser Bank geschrieben.
  • Er löscht dann das Bit bevor er durch den Rest der Liste dekrementiert und den Vorgang wiederholt. Alle Hitbits werden zusammen ODER-verknüpft, so dass sofort ermittelt werden kann, wenn alle Bits gelöscht sind und kein weiteres Durchsuchen notwendig ist.
  • Mehrere Abfrageregister können in dem Mehrfachreaktions-Resolver verwendet werden, um die Spaltenhitliste parallel zu durchsuchen. Jedes arbeitet unabhängig, außer wenn zwei oder mehr Register gleichzeitig einen Hit entdecken; eine Kollision ist aufgetreten. Dann muss jedes Abfrageregister warten, bis ihm willkürlich gestattet wird, seine Fan-out-Liste aufzurufen und zu aktualisieren. Jedes Register durchsucht einen Teil gleicher Größe. Die Kollisionshäufigkeit hängt von der Wahrscheinlichkeit eines Hits für jedes Abfrageregister ab, typischerweise liegt diese Wahrscheinlichkeit zwischen 0,01 und 0,001 bei digitalen Schaltungen. Der Zeitmechanismus in APPLES gibt nur aktive Gatter zur Ermittlung frei, die Struktur des Mehrfachabfrageregisters stellt eine Gatterpipeline, die in dem aktuellen Zeitintervall zu aktualisieren ist, bereit ohne einen expliziten Planungsmechanismus. Der Scheduler wurde durch dieses effizientere, parallele Suchverfahren ersetzt.
  • Wenn alle Gattertypen in dem aktuellen Zeitintervall ausgewertet wurden, werden alle Signale aktualisiert, indem die Wörter des Eingangswertregisters parallel in die entsprechenden Wörter der Wortleitungs-Registerbank geschoben werden. Für 8-wertige Logik (d. h. 3 Bits für jedes Wort in dem Eingangswertregister) erfordert diese Phase 3 Maschinenzyklen. Die Eingangswert-Registerbank kann als Speichersystem mit Mehrfachzugriff ausgeführt sein, was es gestattet, dass mehrere Eingangswerte gleichzeitig aktualisiert werden, vorausgesetzt, dass sich die Werte in unterschiedlichen Speicherbänken befinden. Andere Logikwerte können verwendet werden.
  • Der APPLES-Bit-Schiebemechanismus hat die Rolle eines Schedulers überflüssig gemacht. Außerdem ermöglicht er es, den Gatterauswertungsvorgang im Speicher auszuführen, wodurch der übliche Von-Neumann-Flaschenhals vermieden wird. Jedes Wortpaar im Array 1b ist gewissermaßen ein Prozessor. Hauptpunkte, die in anderen parallelen Logiksimulationen einen großen Overhead verursachen, sind „Deadlock" und Planungsfragen.
  • Systemblockade tritt in dem Chandry-Misra-Algorithmus auf Grund von zwei Regeln auf, die für die zeitliche Fehlerfreiheit erforderlich sind, eine Eingangswarteregel und eine Ausgangswarteregel. Regel eins wird durch den Aktualisierungsmechanismus von APPLES beachtet. In jedem Zeitintervall Ti bis Ti+1 geben alle Wörter im Array 1b den Zustand der Leitungen zur Zeit Ti wieder und am Ende des Auswertungs- und Aktualisierungsvorgangs sind alle Leitungen zur Zeit Ti+1 aktualisiert worden. Alle Leitungen wurden durch den kleinsten Zeitstempel inkrementiert, eine diskrete Zeiteinheit. Folglich können alle Gatter zu Beginn jedes Zeitintervalls mit Vertrauen ausgewertet werden, dass die Eingangswerte richtig sind. Die Ausgangsregel wird verhängt um sicherzustellen, dass die Signalwerte zur Verarbeitung in nicht absteigender Zeitstempelreihenfolge eintreffen. Das ist in APPLES gewährleistet, da alle Signalwerte ihre zeitliche Reihenfolge in jedem Wort durch den Schiebevorgang aufrechterhalten. Anders als beim Chandry-Misra-Algorithmus ist eine Systemblockade ausgeschlossen, da jedes Gatter zu jedem Zeitintervall ausgewertet werden kann.
  • Es gibt im APPLES-System keinen Scheduler. Komplexes Modellieren, wie zum Beispiel träge Verzögerungen, haben Scheduler mit teuren (zeitlich) Unscheduling-Problemen konfrontiert. Gatter, die dafür eingeplant wurden, aktiviert zu werden, müssen aus diesem Plan wieder entfernt werden, wenn Eingangssignale unter einer vorbestimmten Minimaldauer festgestellt werden. Dies trägt mit den normalen Planungsaufgaben zu einem lästigen Zusatzaufwand bei.
  • 2 stellt den entsprechenden Mechanismus in APPLES dar. Ein UND-Gatter weist zwei Eingänge a und b auf, angenommen, dass, sofern die Signale nicht wenigstens drei Zeiteinheiten andauern, keine Wirkung am Ausgang auftritt, die Simulation nur binäre Werte 0 und 1 umfasst und jedes Bit in Array 1b eine Zeiteinheit darstellt. Signal b liegt konstant auf dem Wert 1, während Signal a für zwei Zeiteinheiten auf logisch 1 liegt, weniger als die Minimalzeit. Dies wird durch die parallele Suche, die durch die Verknüpfung von Eingangs- und Maskenregister erzeugt wird, erkannt und das Gatter wird nicht aktiv werden.
  • Die Schaltung ist nun für die Simulation durch APPLES bereit und wird analysiert, um die Gattertypen und das Verzögerungsmodell und die Topologieinformationen zu erzeugen, die erforderlich sind, um die Assoziativ-Arrays 1a, 1b und die Fan-out-Vektortabellen zu initialisieren. Es gibt keine Beschränkung der Fan-out-Gatteranzahl.
  • Der APPLES-Prozessor setzt voraus, dass die zu simulierende Schaltung in eine äquivalente Schaltung übersetzt wurde, die nur aus 2-Eingangs-Logikgattern zusammengesetzt ist. Folglich weist jedes Gatter zwei in dieses führende Leitungen auf (ein Inverter besitzt zwei Leitungen von einer Quelle). Diese Leitungen sind als benachbarte Wörter im Assoziativ-Array 1b 1 organisiert, die Wortgruppe genannt werden. Das Assoziativ-Array 1a 1 enthält Kennungen von jeder Leitung, die den Gattertyp und den Eingang, mit dem die Leitung verbunden ist, angeben. Die Kennungen befinden sich in einem Assoziativspeicher, so dass, wenn eine bestimmte Gatterauswertungsprüfung ausgeführt wird, das Setzen der relevanten Bitmuster in Eingangsregister 1a und Maskenregister 1a den Gattertyp bestimmt. Alle mit solchen Gattern verbundenen Leitungen werden durch eine parallele Suche in dem Assoziativ-Array 1a ermittelt und diese werden verwendet, die passenden Wörter im Assoziativ-Array 1b (Wortleitungs-Registerbank) zu aktivieren. Daher sind Gatterauswertungsprüfungen nur für die relevanten Wortgruppen aktiv.
  • Die Eingangswert-Registerbank 17 enthält den aktuellen Eingangswert für jede Leitung. Die drei Bits ganz links jedes Worts im Assoziativ-Array 1b werden parallel von dieser Bank geschoben, wenn alle Signalwerte um eine Zeiteinheit aktualisiert werden. Während der Aktualisierungsphase der Simulation werden die Fan-out-Leitungen der aktiven Gatter ermittelt und die entsprechenden Wörter in der Eingangswert-Registerbank ergänzt.
  • Die Simulation schreitet in diskreten Zeiteinheiten voran. Für jedes Zeitintervall wird jeder Gattertyp ausgewertet, indem Prüfungen auf das Assoziativ-Array 1b angewendet werden und die Ergebnisse in der benachbarten Registerbank verknüpft und aufgezeichnet werden. Ungeachtet der auszuwertenden Gatteranzahl belegt dieser Vorgang zwischen 10 Maschinenzyklen für die einfachsten und 20 Maschinenzyklen für die komplexeren Gatterverzögerungsmodelle, siehe 3. Sobald die Fan-out-Gattereingänge ergänzt wurden, werden alle Leitungen zeitlich durch eine parallele Schiebeoperation von 3 Maschinenzyklendauer inkrementiert. Allgemein sind für eine 2N-wertige Logik N Schiebeoperation erforderlich, um alle Signalwerte zu aktualisieren.
  • 3 veranschaulicht einen Simulationszyklus. In dem Simulationszyklus ist das Durchsuchen der Hitliste die Tätigkeit, die besonders von der Schaltungsgröße beeinflusst ist. Die Liste und die sequentielle Abfragezeit vergrößern sich proportional mit der Größe der Schaltung. Analog zu dem herkömmlichen Kommunikations-Overhead-Problem enthält die APPLES-Architektur einen Abfragemechanismus, der die Abfragerate wirksam erhöhen kann, während sich die Hitliste vergrößert. Folglich wird eine Mehrfachabfrage-Registerstruktur bereitgestellt. Wie beschrieben werden wird, ist eines der Merkmale der vorliegenden Erfindung die Parallelisierung der Anwendung von Testvektoren in der Gatterauswertungsphase, wie nachstehend beschrieben werden wird. In ähnlicher Weise ist 4 ein Abfragesuchmuster für ein UND-Gatter.
  • Die Folge der Signalwerte, die auf einer Leitung über eine Periode diskreter Zeiteinheiten erscheinen, kann als Zahlenfolge dargestellt werden. Zum Beispiel werden in einem Binärsystem, wenn die Leitung eine Folge von Logikwerten aufweist, 1, 1, 0 jeweils zu den Zeiten t0, t1 und t2 auf sie angewendet, wobei t0 < t1 < t2. Die Historie der Signalwerte auf dieser Leitung kann als Bitfolge 011 bezeichnet werden; je weiter links die Bitposition, umso kürzlicher erschien der Wert auf der Leitung.
  • Unterschiedliche Verzögerungsmodelle führen zu Signalwerten über verschiedene Zeitintervalle. In jedem Modell werden in einem Wort gespeicherte Signalwerte, die unerheblich sind, aus dem Suchmuster ausgeblendet.
  • Der Aktualisierungsvorgang der Signalwerte einer bestimmten Leitung wird durch Rechtsschieben aller Werte um eine Zeiteinheit und Setzen des aktuellen Werts an die Stelle ganz links erzielt. Das Assoziativ-Array 1b kann alle seine Wörter im Einklang nach rechts schieben. Die neuen aktuellen Werte werden aus der Eingangswert-Registerbank in das Assoziativ-Array 1b geschoben.
  • In 4 sind die parallelen Abfragemuster für den Übergang eines UND-Gatters auf logisch „0" veranschaulicht.
  • Mit Leitungssignalwerten, die als Bitfolge in assoziativen Speicherworten abgebildet sind, kann die Gatterauswertungsaufgabe als Folge von parallelen Mustersuchen durchgeführt werden. 4 stellt die Situation dar, in der eine 8-wertige Logik eingesetzt wurde und das UND-Gatter willkürlich mit einer 1-Einheiten-Verzögerung modelliert wurde.
  • Jedes Gatter, das einen Eingang aufweist, der T1 erfüllt und keinen Eingang, der T2 erfüllt, wird auf 0 wechseln.
  • Folglich ist es erforderlich, um zu ermitteln, ob der Ausgang dieses Gatters von logisch 1 auf logisch 0 wechselt, die Signalwerte zu der aktuellen Zeit tc und tc-1 zu kennen. Die aktuellen Werte sind in den drei Bits ganz links in der Wortgruppe enthalten. 4 gibt die aktuellen Werte an den zwei Eingängen als logisch 1 = ,111' und logisch 0 = '000' an und die vorhergehenden Werte beide als logisch 1.
  • Um festzustellen, ob dieses UND-Gatter einen Ausgangswechsel auf logisch 0 vollzieht, genügen zwei einfache Bitmusterprüfungen. Wenn IRGENDEIN aktueller Eingangswert logisch 0 ist (Prüfung T1) und KEINE der vorigen Eingangswerte logisch 0 sind (Prüfung T2), wechselt der Ausgang auf logisch 0. Dieses sind die einzigen Bedingungen für dieses Verzögerungsmodell, die diesen Übergang bewirken. Bei Assoziativspeicher kann jeder Teil eines Worts bei einer Suche aktiv oder passiv sein. Folglich kann die Prüfung T1 ausgeführt werden, indem ,000' und ,111' in die drei Bits ganz links des Such- und Maskenregisters des Assoziativ-Arrays 1b gesetzt wird. Prüfung T2 kann im Wesentlichen durch die selbe Prüfung auf den nächsten drei Bitpositionen ganz links ausgeführt werden.
  • Im Allgemeinen wird jede Prüfung eine nach der anderen angewendet. Das Ergebnis von Prüfung Ti auf Wortj wird in der i-ten Bitposition von Wortj in der Prüfergebnis-Registerbank 4 gespeichert. Eine ,1' zeigt ein erfolgreiches Prüfergebnis an. Bei jeder Wortgruppe ist es für jede Prüfung erforderlich zu wissen, ob IRGENDEINER oder BEIDE oder KEINER der Eingänge die jeweilige Prüfung bestanden hat. Wenn die i-ten Bits von Wortj und Wortj-1 in der Prüfergebnis-Registerbank zusammen ODER-verknüpft werden und das Ergebnis dieser Operation ,1' ist, dann hat wenigstens ein Eingang in der entsprechenden Wortgruppe die Prüfung Ti bestanden – die Prüfung der IRGENDEIN-Bedingung. Wenn das Ergebnis der Operation ,0' ist, dann haben keine Eingänge die Prüfung Ti bestanden – die Prüfung der KEIN-Bedingung. Wenn schließlich die i-ten Bits zusammen UND-verknüpft werden und das Ergebnis ,1' ist, dann haben BEIDE die Prüfung Ti bestanden.
  • Das Ergebnisaktivatorregister 14 verknüpft Ergebnisse, die anschließend durch das Gruppenergebnis-Register ermittelt werden. Das logische Zusammenspiel ist in 5 dargestellt.
  • Die UND- oder ODER-Operation zwischen den Bitpositionen wird durch das Ergebnisaktivatorregister vorgeschrieben. Eine ,0' in der i-ten Bitposition des Ergebnisaktivatorregister führt einen ODER-Vorgang auf den Ergebnissen der Prüfung Ti für jede Wortgruppe in der Prüfergebnis-Registerbank aus und umgekehrt eine ,1' einen UND-Vorgang. Jede i-te UND- oder ODER-Operation findet parallel in allen Wortgruppen-Prüfergebnis-Registerpaaren statt.
  • Die Arbeitsergebnisse des Ergebnisaktivatorregister auf jedem Wortgruppen-Prüfergebnis-Registerpaar werden in einem zugehörigen Gruppenergebnis-Register gesichert. Abgesehen von der Aufbewahrung der Ergebnisse einer bestimmten Wortgruppe sind die Gruppenergebnis-Register Verbundelemente in einem Assoziativ-Array. Dies ermöglicht eine parallele Suche nach einem bestimmten Ergebnismuster und ermittelt so alle aktiven Gatter. Diese Gatter werden als Hits (der Suche in der Gruppenergebnis-Registerbank) in der Gruppentest-Hitliste gekennzeichnet.
  • Zurück zu dem Beispiel des UND-Gatter-Übergangs auf logisch ,0', wird ein UND-Gatter als die Prüfvoraussetzungen erfüllend erkannt, irgendein Eingang die Prüfung T1 besteht und keiner die Prüfung T2, wenn sein entsprechendes Gruppenergebnis-Register die Bitfolge ,10' in den ersten zwei Bitpositionen aufweist.
  • Die APPLES-Bauelemente, die in der Gatterauswertungsphase und ihrer Ablaufsteuerung einbezogen sind, sind in 6 dargestellt.
  • Bei der vorliegenden Erfindung ist eines der Hauptmerkmale des Verfahrens die Speicherung jedes Leitungssignals zu einem Ziel-Logikgatter mit mehreren Bits, wobei jedes eine Verzögerung einer Zeitperiode bedeutet. Die gesamten Bits gestatten, den Signalausgang zu und den Empfang durch das Ziel-Logikgatter exakt wiederzugeben. Folglich sind diese auf die gleiche Weise dargestellt, wie die inhärente Verzögerung jedes Logikgatters. Was nun erkannt werden muss ist, dass, während sich die Geschwindigkeit der Schaltungen erhöht, die verbrauchte Zeit zum Übermitteln einer Nachricht zwischen zwei Logikgattern erheblich sein kann. Daher müssen die Leitungen sowie die Logikgatter als logische Einheiten betrachtet werden.
  • Einige Logikeinheiten können Verzögerungen aufweisen, die den Zeitrahmen, der in dem Wort des Assoziativ-Arrays 1b darstellbar ist, übersteigen. Größere Verzögerungen könne modelliert werden, indem einem Gattertyp ein Zustand zugeordnet wird. In diesem Fall wird ein Gatter und sein Zustand in dem Assoziativ-Array 1a festgelegt. Prüfungen werden auf dem Assoziativ-Array 1b ausgeführt und wenn ein Gatter mit einem gegebenen Zustand eine Eingangswertkritik besteht, zusätzlich zu den Fan-out-Elementen des Gatters, die möglicherweise betroffen sind, wird der Gatterzustand in dem Assoziativ-Array 1a ergänzt. Dieser neue Zustand kann ebenfalls einen neuen Ausgangswert verursachen, der der Fan-out-Liste des Gatters zugeschrieben wird. Die angewendeten Prüfungen werden durch den Gattertyp und Gatterzustand bestimmt. Bei diesem Mechanismus enthält die Fan-out-Liste eines Gatters die normalen Fan-out-Eingänge und die Adresse im Assoziativ-Array 1a des Gatters selbst.
  • Um zu bestimmen, ob der Zustand oder der Zustand und die Fan-out-Gatter zu aktualisieren sind, kann der Zustand (ein Binärwert) als Selektor der Fan-out-Aktualisierungsdateien des Gatters dienen. Der Zustand ändert den Zugangspunkt relativ zur Startposition der Dateien eines Gatters und dies ermöglicht, die normale Fan-out-Liste des Gatters zu umgehen oder nicht.
  • Mit Beginn des Füllens eines neuen Zeitrahmens (ein Wort in Assoziativ-Array 1b) wird ein spezielles Symbol in die Position ganz links (neueste Zeit) eingefügt. Dieses Symbol überträgt den Eingangswert auf dem Gatter und dient als Markierung. Wenn die Markierung die Position ganz rechts in dem Wort erreicht, zeigt dies an, dass ein kompletter Zeitrahmen verstrichen ist. Dies kann durch das normale parallele Prüfmustersuchverfahren auf dem Assoziativ-Array 1b ermittelt werden (siehe 1).
  • Die Verbindung zwischen zu simulierenden logischen Einheiten kann modelliert werden, indem das große Verzögerungsmodell verwendet wird, das oben beschrieben wurde. Außerdem können einzelne Leitungen durch ein Wort statt zwei in dem Assoziativ-Array 1a, Assoziativ-Array 1b und der Prüfergebnis-Registerbank modelliert werden. Verzweigungsstellen werden als gesonderte Leitungen modelliert, was es ermöglicht, dass unterschiedliche Verzweigungsstellen unterschiedliche Verzögerungseigenschaften haben.
  • Was in Wirklichkeit gemacht wird ist, dass jede Verzögerung als Verzögerungswort in einem Assoziativspeicher, der Teil des assoziativen Speichermechanismus bildet, gespeichert wird. Die Länge des Verzögerungsworts wird bestimmt und falls die Verzögerungswortbreite die Breite des assoziativen Registerworts übersteigt, kann es nicht einfach in dem Register gespeichert werden. Dann wird die Anzahl der ganzzahligen Vielfachen der Registerwortbreite, die in dem Verzögerungswort enthalten ist, als ein Gatterzustand berechnet. Dieser Gatterzustand wird in einem weiteren Zustandsregister gespeichert, eigentlich das Assoziativregister oder Assoziativ-Array 1a. Der Rest aus der Berechnung wird in dem Assoziativregister-Array 1b mit jenen Verzögerungsworten gespeichert, deren Breiten die Breite des Assoziativregisters nicht übertroffen haben sowie mit jenen Worten, bei denen dies zutraf. Dann wird, beginnend mit der Zählung des Assoziativregisters 16, das Zustandsregister nachgeschlagen, das heißt das Assoziativregister 1a und das Verzögerungswort wird in das Register eingetragen. Der Rest wird für diese Zählung des Assoziativregister-Array 1b ignoriert. Am Ende der Zählung des Assoziativregisters 1b wird das Assoziativregister 1a durch Dekrementieren einer Einheit aktualisiert. Wenn dies noch nicht das Stattfinden der Zählung ermöglicht, wird der Vorgang wiederholt. Wenn jedoch das Assoziativregister 1a gelöscht wird, setzt die Zählung fort und der Rest stellt nun die erforderliche Zahl dar.
  • Komplexe Verzögerungsmodelle wie zum Beispiel träge Verzögerungen erfordern es, dass herkömmliche sequentielle und parallele Logiksimulatoren Ereignisse entplanen (unschedule), wenn eine Zeitkritik verletzt wird. Dies wendet eine äußerst zeitintensive Suche durch eine Ereignisliste auf. Bei der vorliegenden Erfindung erfordern träge Verzögerungen lediglich die Überprüfung, dass die Signale wenigstens eine minimale Zeitspanne aufweisen; durchführbar als eine einzelne Mustersuche.
  • Eine unbestimmte Verzögerung, bei der das statistische Verhalten des Gatters eine Unsicherheit an den Ausgang überträgt, ist komplizierter. Ein Gatterausgang nimmt einen unbekannten Wert zwischen den Parametern tmin (M Zeiteinheiten) und tmax (N Zeiteinheiten) an. Mit einer 4-wertigen Logik erkennt APPLES einen anfänglichen Ausgangswechsel auf den unbekannten Wert zu Zeit tmin, gefolgt von dem Wechsel von dem unbekannten Wert auf den logisch Zustand ,0' zur Zeit tmax, siehe 7. Hasardzustände, bei denen beide Eingänge gleichzeitig auf entgegengesetzte Werte wechseln, können ebenfalls erkannt werden, was in 7 veranschaulicht ist.
  • Für jeden Gattertyp bleibt die Auswertungszeit Tgate-eval konstant, typischerweise reicht sie von 10 bis 20 Maschinenzyklen. Die Zeit zur Abfrage der Hitliste hängt von ihrer Länge und der Anzahl der bei der Abfrage eingesetzten Register ab. N Abfrageregister können eine Hitliste von H Speicherzellen in N gleiche Speicherbereiche von der Größe H/N unterteilen. Angenommen eine Speicherzelle kann in 1 Maschinenzyklus abgefragt werden, dann beträgt die Abfragezeit Tscan H/N Takte. Ähnlich wird angenommen, dass 1 Takt ausreichend ist, um 1 Fan-out-Aktualisierung durchzuführen.
  • Für einen Abfrageregisterbereich beträgt die Aktualisierungsanzahl (Probhit)H/N. Wenn alle N Teile ohne Beeinträchtigung der anderen Bereiche aktualisieren, stellt dies ebenfalls die Gesamtaktualisierungszeit für das gesamte System dar. Während ein Fan-out aktualisiert wird, fahren andere Register dennoch mit der Abfrage fort und Hits in diesen Bereichen müssen möglicherweise warten und sich einreihen. Die Wahrscheinlichkeit für dieses Ereignis erhöht sich mit der Anzahl der Speicherbereiche und ist durch NC1(Probhit)H/N gegeben.
  • Eine Kollision tritt auf, wenn zwei oder mehr Register gleichzeitig einen Hit feststellen und versuchen, den Einzelzugriffs-Fan-out-Speicher anzusteuern. Unter diesen Umständen genehmigt ein Semaphor willkürlich die Zugriffe wartender Register auf den Speicher. Die Kollisionsanzahl während einer Abfrage ist. Anzahl Kollisionen = (Wahrscheinlichkeit 2 Hits pro Untersuchung) × H/N + Wahrscheinlichkeiten höherer Ordnung (1)
  • Die niedrige Aktivitätsrate der Schaltungen (typischerweise 1%–5% der Gesamtgatterzahl) impliziert, dass Wahrscheinlichkeiten höherer Ordnung vernachlässigt werden können. Man nehme eine gleichmäßige Zufallsverteilung der Hits an und Probhit sei die Wahrscheinlichkeit, dass das Register einen Hit bei einer Untersuchung antreffen wird. Dann wird (1) zu Anzahl Kollisionen = NC2(Probhit)2 × H/N (2)
  • Somit ist Tn, die durchschnittliche Gesamtzeit, die für die Abfrage und Aktualisierung der Fan-out-Listen eines Speicherbereichs für einen bestimmten Gattertyp erforderlich ist, Tn = Tgate-eval + Tscan + Tupdate + Tclash = Tgate-eval + H/N + NC1(Probhit)H/N + NC2(Probhit)2 × H/N (3)
  • Da alle Speicherbereich parallel abgefragt werden, entspricht Tn der Bearbeitungszeit für ein System mit N Abfrageregistern. Folglich beträgt die Leistungssteigerung Sp = T1/Tn eines solchen Systems
  • Figure 00260001
  • Gleichung (4) wurde empirisch bestätigt. Die vorhergesagten Ergebnisse liegen innerhalb 20% der beobachteten für Beispielschaltungen C7552 und C2670 und 30% für C1908. Eine Ungleichmäßigkeit der Hitverteilung scheint die Ursache für diese Abweichung zu sein.
  • Differenziert man Tn nach N und vernachlässigt die 2. Ordnung und höhere Potenzen von Probhit, ergibt sich die optimale Abfrageregisteranzahl Noptimum und die entsprechende optimale Leistungssteigerung Soptimum zu Noptimum ≅ (√2)/Probhit (5) Soptimum ≅ 1/(2,4 × Probhit) (6)
  • Folglich wird die optimale Abfrageregisteranzahl umgekehrt durch die Wahrscheinlichkeit für das Antreffen eines Hits in der Hitliste bestimmt. In APPLES ist das wesentliche Verarbeitungsmaß die Rate, mit der die Gatter ausgewertet und ihre Fan-out-Listen aktualisiert werden können. Mit steigender Wahrscheinlichkeit eines Hits gibt es eine wechselseitige Steigerung der Rate, mit der die Gatter aktualisiert werden. Schaltungen unter Simulation, die höhere Hitraten aufweisen, weisen eine höhere Aktualisierungsrate auf.
  • Falls die durchschnittliche Fan-out-Zeit nicht ein Takt beträgt, wird Probhit mit Fout multipliziert, wobei Fout die effektive durchschnittliche Fan-out-Zeit ist.
  • Eine höhere Hitrate kann ebenfalls durch Einführen zusätzlicher Register erzielt werden. Ein Zuwachs an Registern erhöht die Hitrate und die Anzahl der Kollisionen. Die Erhöhung stoppt, wenn die Hitrate gleich der Fan-out-Aktualisierungsrate ist, was bei Noptimum auftritt. Diese Situation ist einer gesättigten Pipeline analog. Ein weiterer Zuwachs der Registeranzahl dient nur dazu, die Anzahl der Kollisionen und Wartelisten derjenigen Register zu vergrößern, die versuchen, die Fan-out-Listen zu aktualisieren.
  • Weitere Simulationen wurden wieder mit einem Verilog-Modell von APPLES durchgeführt, 4 ISCAS-95 Benchmarks simuliert, C7552 (4392 Gatter), C2670 (1736 Gatter), C1908 (1286 Gatter), C880 (622 Gatter), wobei ein Unit-Delay-Modell verwendet wurde. Jede wurde mit 10 zufälligen Eingangsvektoren über eine Zeitperiode von 1.000 bis 10.000 Maschinenzyklen angewendet. Statistiken wurden erfasst, während die Anzahl der Abfrageregister von 1 bis 50 verändert wurde. Die Steigerung relativ zur Anzahl der Abfrageregister ist in Tabelle 1 dargestellt.
  • Figure 00270001
    Tabelle 1. Steigerungsleistung der Benchmarks
  • Tabelle (1.a) legt dar, dass im Allgemeinen die Steigerung mit der Anzahl der Abfrageregister zunimmt. Die konstanten Overheads der Gatterauswertung, Schieben der Eingänge usw. tendieren dazu, die Leistung der kleineren Schaltungen mit einer großen Registeranzahl zu benachteiligen. Eine ausgewogenere Analyse erhält man, indem alle zeitlich konstanten Overheads aus den Simulationsergebnissen ausgeklammert werden. Dies spiegelt die Leistung realistischer großer Schaltungen wider, bei denen die unveränderlichen Overheads gegenüber der Abfragezeit vernachlässigbar sind. Tabelle (1.b) beschreibt die Ergebnisse ausführlich mit dieser Korrektur. Wie erwartet, hat diese Korrektur einen kleinern Einfluss auf die größeren Benchmark-Schaltungen.
  • Figure 00280001
    Tabelle 2. Durchschnittliche Maschinenzyklenanzahl pro bearbeitetem Gatter
  • Mit den korrigierten simulierten Leistungsstatistiken zeigt Tabelle (2) die durchschnittliche Maschinenzyklenanzahl, die aufgewendet wird, ein Gatter zu bearbeiten. Das APPLES-System ermittelt eigentlich nur aktive Gatter, keine unnützlichen Aktualisierungen oder Verarbeitung werden ausgeführt. Die Daten berücksichtigen die Abfragezeit zwischen Hits und die Zeit zum Aktualisieren der Fan-out-Liste. Indem mehr Register eingeführt werden, verringert sich die Zeit zwischen den Hits und die Gatteraktualisierungsrate vergrößert sich. Kollisionen treten auf und aktive Gatter werden effektiv in eine Fan-out-/Aktualisierungs-Pipeline eingereiht. Die Steigerung saturiert, wenn die Fan-out-/Aktualisierungsrate, die durch die Größe der durchschnittlichen Fan-out-Liste bestimmt ist, gleich der Rate ist, mit der sie in die Pipeline eintreten.
  • Die Benchmark-Leistung der Schaltungen gestattet ebenfalls eine Abschätzung der Gültigkeit der Leistungssteigerungstheorie. Aus den Leistungssteigerungsmessungen in Tabelle (1.b) wurde der entsprechende Wert für fav unter Verwendung von Gleichung (7) berechnet. Dieser Wert, der die durchschnittliche Fan-out-Aktualisierungszeit in Maschinenzyklen darstellt, sollte unabhängig von der Anzahl der Abfrageregister konstant sein. Außerdem reichte der Fan-out für die ausgewerteten Benchmarks von 0 bis 3 Gatter und die Wahrscheinlichkeit eines Hits, Probhit, wurde zu 0,01 ± 5% festgestellt. Innerhalb anderthalb Taktzyklen ist es möglich, 2 Fan-out-Gatter zu aktualisieren, deshalb sollte fav abhängig von der Schaltung von 0,5 bis 1,5 reichen. Die berechneten Werte für fav sind in Tabelle 3 dargestellt.
  • Figure 00290001
    Tabelle 3. Die durchschnittliche Fan-out-Aktualisierungszeit (in Maschinenzyklen) für die Benchmarks
  • Die Werte für fav stimmen mit dem erwarteten Bereich für den Fan-out dieser Schaltungen überein. Die Wertschwankungen für fav über einer Zeile, wo er konstant sein sollte, treten möglicherweise auf Grund der relativ kleinen Probenanzahl und Größe der Schaltungen auf, wo eine kleine Störung in der Hitverteilung in der Hitliste die Leistungssteigerungszahlen maßgeblich beeinflussen kann. Im Fall von C880 kann eine Abnahme der Steigerung um 10% tatsächlich zu einer Verzehnfachung von fav führen.
  • Zu Vergleichszwecken verwendet Tabelle 4 Daten von Banerjee: Parallel Algorithms for VLSI Computer-Aided Design. Prentice-Hall, 1994, worin die Steigerungsleistung auf verschiedenen Parallelarchitekturen für Schaltungen ähnlicher Größe wie die, die in dieser Arbeit verwendet wurden, veranschaulicht wird. Dies zeigt, dass APPLES durchweg eine höhere Leistungssteigerung bietet.
  • Figure 00300001
    Tabelle 4. Ein Leistungssteigerungsvergleich anderer Parallelarchitekturen
  • Das Folgende auf den Seiten 31 bis 47 ist ein Beispiel einer Implementierung der vorliegenden Erfindung in Software, die in Verilog geschrieben wurde.
  • Verilog-Beschreibung von APPLES
  • Assoziativ-Array 1a
  • Beschreibung: Jedes Wort dieses Arrays nimmt eine Bitfolge, die die Gattertypeingangsverbindung einer Leitung bestimmt, an der entsprechenden Stelle im Assoziativ-Array 1b auf. Die Verknüpfung des Eingangs-/Maskenregisters legt einen Gattertyp fest, der für die Suche im Assoziativ-Array 1a aktiviert wird. Wörter, die erfolgreich übereinstimmen, werden in einem 1-Bit-Spaltenregister gekennzeichnet. Das Array verfügt ebenfalls über Schreibmöglichkeiten.
  • Figure 00310001
  • Figure 00320001
  • Assoziativ-Array 1b
  • Beschreibung: Jedes Wort in diesem Arrays stellt den zeitlichen Umfang der Signalwerte auf einer bestimmten Leitung dar. Die neuesten Werte befinden sich ganz links in jedem Wort. Alle Wörter können gleichzeitig nach rechts geschoben werden, was eine Inkrementierung um eine Zeiteinheit auf allen Leitungen bewirkt. Die Signalwerte werde von einem 1-Bit-Spaltenregister aktualisiert. Das Array verfügt über parallele Such- und Lese- und Schreibmöglichkeiten.
  • Figure 00320002
  • Figure 00330001
  • Prüfergebnis-Registerbank
  • Beschreibung: Wenn eine i-te Suche auf Assoziativ-Array 1b ausgeführt wird, wenn Wortj in Array 1b mit dem Suchmuster übereinstimmt, dann wird Biti im Wortj der Prüfergebnis-Registerbank gesetzt, andernfalls wird es gelöscht. Das Ergebnisaktivatorregister gibt die logische Verknüpfung zwischen Wortpaaren (die Menge der Eingänge eines Gatters) an. Das Ergebnis dieser Verknüpfung von Wortpaaren ist ein Spaltenregister (die halbe Länge der Anzahl an Wortpaaren).
  • Figure 00340001
  • Figure 00350001
  • Gruppenergebnis-Registerbank
  • Beschreibung: Das Verknüpfungsergebnis der Wortpaare in dem Prüfergebnisregister wird als Bitkolonne in die Gruppenergebnis-Registerbank geschrieben. Wenn alle Verknüpfungsergebnisse erstellt worden sind, wird eine Parallelsuche auf dem Gruppenergebnisregister ausgeführt, um alle Wortpaare in Array 1b zu bestimmen, die alle Prüfmustersuchen bestanden haben.
  • Figure 00360001
  • Mehrfachreaktions-Resolver (Version 1.0 Einzelabfragemodus)
  • Beschreibung: Der Mehrfachreaktions-Resolver durchsucht die Gruppentest-Hitliste (ein 1-Bit-Spaltenregister). Der Resolver beginnt eine Suche mit der Initialisierung seines Zählers mit der ersten Adresse der Hitliste. Dieser zähler dient als Adressregister, das es ermöglicht, jedes Hitlistenbit zu lesen. Wenn das untersuchte Bit gesetzt ist, wird die Fan-out-Liste des zugeordneten Gatters aufgerufen und entsprechend aktualisiert. Das Bit wird dann zurückgesetzt. Nach dem Zurücksetzen oder wenn das Bit bereits null war, wird der Zähler dekrementiert, um auf die nächste Adresse in der Hitliste zu zeigen. Der Überprüfungsvorgang wird wiederholt. Die Abfrage ist beendet, wenn entweder alle Bits überprüft worden sind oder alle Bits null sind.
  • Figure 00370001
  • Figure 00380001
  • Figure 00390001
  • Mehrfachreaktions-Resolver (Version 2.0 Mehrfachabfragemodus)
  • Beschreibung: Der Mehrfachreaktions-Resolver durchsucht die Gruppentest-Hitliste (ein 1-Bit-Spaltenregister). Der Resolver im Mehrfachabfragemodus besteht aus mehreren Zähl-(Abfrage-)Registern. Jedem ist ein gleich großer Teil der Gruppentest-Hitliste zugewiesen. Wenn der Resolver initialisiert wird, zeigen alle Abfrageregister auf den Anfang ihres entsprechenden Hitlistenabschnitts. Die Register werden durch einen einzigen Takt synchronisiert. Die äußere Funktionalität des Mehrfachabfragemodus-Resolvers ist mit der Version des Einfachabfragemodus identisch. Intern verwendet die Mehrfachabfrageversion ein Warte-Semaphor, um Mehrfachzugriffe auf die Fan-out-Listen einzureihen. Register, die kollidieren, werden beliebig eingereiht und beginnen die Abfrage wieder, nachdem sie die Erlaubnis erhalten haben, ihre Fan-out-Listen zu aktualisieren. Die Abfrage ist beendet, wenn alle Bits überprüft worden sind oder alle Bits null sind.
  • Figure 00400001
  • Figure 00410001
  • Figure 00420001
  • Figure 00430001
  • Figure 00440001
  • Fan-out-Generatormodul
  • Beschreibung: Wenn ein Hit in der Gruppentest-Hitliste ermittelt wurde, wählt die Adresse innerhalb des Abfrageregisters einen Vektor (aus der Fan-out-hdr-Tabelle) aus, der den Beginn einer Fan-out-Liste für das aktuell aktive Gatter feststellt. Das Adressregister dieses Moduls wird mit der Adresse des Fan-out-Listenkopfs geladen. Die Größe dieser Fan-out-Liste und die zu übertragenden aktualisierten Signalwerte werden ebenfalls an das Modul übergeben. Das Modul fährt fort, um alle Änderungen in den Fan-out-Listen zu bestimmen.
  • Figure 00450001
  • Figure 00460001
  • Eingangswertbank
  • Beschreibung: Die Bank enthält die aktuellen Werte aller Signale in der Schaltung. Jede Speicherzelle in der Bank entspricht einer Leitung. Da ein Wort jeder Speicherzelle 3 Bits breit ist, kann eine bis zu 8-wertige Logik simuliert werden (dies kann erweitert werden, indem die Wortbreite vergrößert wird). Der aktuelle Wert jeder Leitung wird von dieser Bank nach Array 1b geschoben, wenn die Zeit inkrementiert wird. Dies wird parallel ausgeführt. Nur die Leitungswerte, die sich in dem aktuellen Zeitintervall geändert haben, werden aktualisiert.
  • Figure 00470001
  • Die Ablauflogik des APPLES-Prozessors
    Figure 00480001
  • Figure 00490001
  • Figure 00500001
  • Figure 00510001
  • Figure 00520001
  • Figure 00530001
  • Figure 00540001
  • Figure 00550001
  • Figure 00560001
  • Figure 00570001
  • Die APPLES-Architektur wurde entworfen, um einen schnellen und flexiblen Logiksimulationsmechanismus bereitzustellen. Das Verfahren, Prüfmuster auf einen Assoziativspeicher anzuwenden kulminiert in einer Gatterverarbeitung in konstanter Zeit und einem flexiblen Verzögerungsmodell. Mehrfache Abfrageregister bieten eine effektive Möglichkeit, das Fan-out-Aktualisierungsverfahren zu parallelisieren. Dieser Mechanismus beseitigt den Bedarf an herkömmlichen parallelen Verfahren wie zum Beispiel Lastverteilung und die Vermeidung oder die Behebung von Systemblockaden. Folglich werden parallele Overheads verringert. Indem mehr Abfrageregister eingeführt werden, steigt die Gatterauswertungsrate an, die letztendlich durch die durchschnittliche Fan-out-Listengröße pro Gatter begrenzt ist und somit durch die Speicherbandbreite des Fan-out-Listenspeichers.
  • In 8 ist ein Array veranschaulicht, das im Allgemeinen mit der Hinweiziffer 20 gekennzeichnet ist und mehrere Zellen 21 umfasst, von denen jede einen APPLES-Prozessor wie oben beschrieben enthält. Eine Synchronisationslogiksteuerung 22 ist bereitgestellt. Die zu simulierende Schaltung wird unter den APPLES-Prozessoren aufgeteilt. Gatterauswertungen werden unabhängig in jedem Prozessor oder jeder Zelle 21 durchgeführt. Jede Zelle 21 ist mit einer lokalen Eingangswert-Registerbank und einer fremden Eingangswert-Registerbank ausgestattet, um eine Zusammenschaltung zu ermöglichen, die durch ein Verbindungsnetzwerk 23 einschließlich der Synchronisationslogik 22 hergestellt wird. Die Verbindungen zwischen der Sychronisationslogikschaltung 22, die, genau gesagt, die Hauptsynchronisationslogikschaltung ist, zu jeder Zelle 21 sind nicht dargestellt.
  • Nachdem alle Gatterauswertungen für alle Gattertypen und die entsprechenden Aktualisierungen auf einem gegebenen, eine Zelle 21 bildenden Prozessor stattgefunden haben, muss der Prozessor auf alle anderen Prozessoren warten, bis diese den selben Zustand erreicht haben. Wenn alle Prozessoren diesen Zustand erreicht haben, kann die betreffende Eingangswert-Registerbank in das entsprechende Array und Assoziativregister 1b geschoben werden und die Auswertung der nächsten Zeiteinheit kann stattfinden. Um eine Implementierung zu erreich, ist es daher erforderlich, dass ein geeignetes Verbindungsnetzwerk entworfen wird und eine Schnittstelle zu den APPLES-Prozessoren erstellt wird. Ein Synchronisierungsverfahren muss vorhanden sein, um zu bestimmen, wann die Auswertung der nächsten Zeiteinheit fortgeführt werden sollte. Ein System zur Aufteilung der Hitlisteninformation unter den Prozessoren ist erforderlich, um das System zu initialisieren.
  • Das Prozessoren-Array ist als Ring ausgeführt (entsprechend einem zyklischen 2D-Netz) wie in 8 dargestellt ist. Die Einbeziehung von Rundumverbindungen verringert den Netzwerkdurchmesser, was die Netzwerkgeschwindigkeit erhöht. Es bedeutet ebenso, dass jeder Prozessor identisch sein kann ohne ungenutzte Hardware an den Rändern des Arrays. Es erfordert jedoch einen komplizierteren Routingmechanismus. Es wurde keine bestimmte Arraygröße verwendet, sondern die Größe wurde als Kriterium verwendet, das während der Simulationen verändert wurde. Dieses Kriterium wurde dem Verilog-Compiler über einen Kommandozeilenparameter angegeben. Diese Kommandozeilenparameter werden im nächsten Kapitel ausführlich behandelt.
  • Jede Zelle ist mit ihren vier benachbarten Zellen über serielle Verbindungen verbunden. Offensichtlich wären parallele Verbindungen schneller. Es wurde jedoch ein Virtex-FPGA verwendet und dieses hat eine begrenzte Anzahl an Anschlüssen. Es kann vorkommen, dass nicht alle Anschlüsse für einen bestimmten Entwurf wegen der FPGA-Architektur zur Verfügung stehen. Anschlüsse sind deshalb eine kostbare Ressource. Da jedes FPGA acht parallele Verbindungen beanspruchen würde (eine Eingangs- und eine Ausgangsverbindung an jeder der vier Kanten), würde dies eine große Zahl von Anschlüssen erfordern. Wenn in einem späteren Stadium erkannt wird, dass überschüssige Anschlüsse verfügbar sind und ein Parallelnetzwerk gerechtfertigt ist, dann kann der Entwurf umgestaltet werden. In diesem Entwurf weist jede Zelle einen seriellen Eingang einen seriellen Ausgang an jeder seiner vier Kanten auf. Diese seriellen Verbindungen bestehen jede aus einer Datenleitung und zwei Steuerleitungen. Diese seriellen Verbindungen erfordern deshalb 12 Anschlüsse an jedem Virtex-FPGA. Jede Zelle ist außerdem mit der Synchronisationslogik des Arrays verbunden.
  • Um das Netzwerk zu entwerfen ist Kenntnis über die Informationen, die das Netzwerk überträgt, erforderlich. Das Netzwerk wird benötigt, um Fan-out-Aktualisierungen zwischen Prozessoren weiterzugeben. Diese Aktualisierungen können als Nachrichten übergeben werden. Jede Nachricht in eine Aktualisierung und besteht aus einer Zieladresse und einem Aktualisierungswert. Ein einzelnes Virtex-FPGA wurde verwendet, um einen APPLES-Prozessor zu implementieren, der im Stande ist, eine Schaltung mit ungefähr 256 Gattern zu simulieren. Diese Zahl ist ein wenig willkürlich und weitere Entwicklungsarbeit wird den wahren erforderlichen Wert aufdecken. Angesichts der Einschränkung auf 256 Gatter pro Prozessor, wären circa 64 Prozessoren erforderlich, um eine sinnvolle komplexe Schaltung zu simulieren. Dies entspricht einem 8 × 8 Array. Jeder Prozessor muss in der Lage sein, Aktualisierungen an jeden anderen Prozessor zu senden, um jeden seiner 512 Gattereingänge zu aktualisieren. Dies impliziert einen Adressraum von sechs, um den Prozessor zu bestimmen und einen Adressraum von neun, um die Leitung zu bestimmen. Jede gesendete Aktualisierung erfordert ebenfalls einen Aktualisierungswert. Diese sind drei Bits breit (ermöglicht Unterstützung für achtwertige Logik). Deshalb müssen die von Prozessor zu Prozessor gesendeten Nachrichten achtzehn Bits groß sein. Diese Zahlen sind willkürlich, jedoch ein brauchbarer Ausgangspunkt.
  • Der Aufbau einer Zelle 21 ist in 9 dargestellt. Jede der vier Kanten weist einen Sender 25 und einen Empfänger 26 auf. Diese Baugruppen befassen sich mit den seriellen Verbindungen. Der Sender 25 nimmt eine Achtzehn-Bit-Einheit auf und versendet sie in einem Bitstrom. Der Empfänger 26 nimmt den Bitstrom auf und stellt die Original-Achtzehn-Bit-Nachricht wieder her.
  • Der Anforderungsscanner 27 prüft jeden Empfänger 26 und den APPLES-Prozessor 30 gleichzeitig, um festzustellen, ob sie Nachrichten bereithalten, die darauf warten, weitergeleitet zu werden. Er vergibt jeder dieser Quellen eine rotierende Priorität und wählt die Quelle aus, die eine Nachricht und die höchste Priorität aufweist. Dann leitet er die gewählte Nachricht an einen Auftragsrouter 28 weiter.
  • Der Auftragsrouter 28 leitet seine Nachrichten entweder an den APPLES-Prozessor 30 oder einen Sender 25 weiter. Wenn es sich um einen Sender handelt, dann wird die Nachricht an eine andere Zelle 21 gesendet. Wenn es sich um den APPLES-Prozessor 30 handelt, dann ist die Nachricht eine Aktualisierung für den lokalen Prozessor. Eine Synchronisationslogikschaltung 31 steuert die Zelle 21 durch die Synchronisationslogikschaltung 22.
  • In 9 weist jeder Sender, jeder Empfänger und die Eingangs- und Ausgangsanschlüsse des APPLES-Prozessors verbundene Puffer auf. Ein Kommandozeilenparameter für den Verilog-Compiler bestimmt, ob die Baugruppen verwendet oder aus dem Entwurf entfernt werden sollen. Ein etwas anderes Verhalten dieser Puffer ist, dass sie Daten nach dem LIFO-Prinzip verarbeiten. Die Auswirkung dieser Puffer auf die Leistung ist ein wesentlicher Teil der Systemanalyse.
  • Der Auftragsrouter 28 setzt eine von zwei unterschiedlichen Routingverfahren ein. Das verwendete Verfahren wird über einen Kommandozeilenparameter für den Verilog-Simulator, der für die Implementierung der Erfindung eingesetzt wird, bestimmt. Ein Vergleich der Routingverfahren ist für das Verständnis der Erfindung wesentlich. Beide Routingverfahren arbeiten auf eine ähnliche Weise.
  • Der Auftragsrouter 28 dekodiert die Nachricht. Er kann dann den Zielprozessor ermitteln. Er ermittelt alle gültigen Optionen zum Routen der Nachricht. Die Nachricht kann an den lokalen APPLES-Prozessor 30 geleitet werden oder zu einem der Sender 25. Die Nachricht wird dann entpsrechend einer gültigen Möglichkeit weitergeleitet.
  • Das erste Routingverfahren führt nur zu einer gültigen Routingoption und wenn die Route nicht blockiert ist, dann wird die Nachricht in diese Richtung weitergeleitet. Wenn sie blockiert ist, dann versucht der Auftragsrouter 28 eine andere Nachricht weiterzuleiten. Nachrichten werden von Zelle 21 zu Zelle 21 weitergeleitet bis sie ihr Ziel erreichen. Bei diesem Routingverfahren wird eine Nachricht zunächst entweder in Ost- oder West-Richtung weitergegeben bis sie sich an der richtigen Ost-West-Stelle befindet. Sie wird dann in Nord- oder Süd-Richtung weitergeleitet bis die Nachricht an ihr Ziel gelangt. Das Nettoergebnis der Nachrichtenweiterleitung ist, dass die Nachricht die minimale Entfernung zurücklegt. Diese Routingstrategie führt dazu, dass der Verkehr zwischen irgendwelchen zwei gegebenen Zellen 21 immer der selben Route durch das Netzwerk folgt. Diese Routingstrategie kann Standardrouting genannt werden.
  • Das zweite Routingverfahren ist komplizierter. Bei dieser Strategie, die dazu führt, dass die Nachricht die kürzeste Entfernung zurücklegt, ermittelt der Auftragsrouter 28 alle möglichen Richtungen, die von der Nachricht genommen werden können. Die verschiedenen Möglichkeiten haben unterschiedliche mit ihnen verbundene Prioritäten. Diese Priorität basiert auf den Möglichkeiten, die vorher genommen worden sind. Dieses Prioritätsverfahren hilft, die verschiedenen Routen gleichmäßig und deshalb effizient zu verwenden. Einige der Optionen mögen nicht zulässig sein, da sie durch vorherige Nachrichten verwendet werden. Eine Möglichkeit wird bezogen auf die Priorität und Verfügbarkeit ausgewählt. Die Prioritätsangabe wird dann aktualisiert. Diese Routingstrategie ist ein erweitertes Routing.
  • Für beide Routingverfahren gilt, dass, wenn alle gültigen Pfade blockiert sind und der Auftragsrouter 28 nicht in der Lage ist, seine Nachricht weiterzuleiten, er dann die Nachricht einfach verwirft. Dies ist ein wesentlicher Aspekt hinsichtlich der Art und Weise, wie der Anforderungsscanner 27 und der Auftragsrouter 28 zusammen arbeiten. Der Anforderungsscanner 27 übernimmt eine Nachricht von einer seiner Quellen. Er informiert die Quelle nicht, dass er versucht, die Nachricht weiterzuleiten. Die Quelle belässt die Nachricht an ihrem Ausgang.
  • Wenn der Auftragsrouter 28 die Nachricht erfolgreich weiterleitet, benachrichtigt er den Anforderungsscanner 27, dass dies geschehen ist und der Anforderungsscanner 27 informiert die Quelle. Auf diese Weise ist der Auftragsrouter 28 nicht verpflichtet, eine bestimmte Nachricht weiterzuleiten. Der Auftragsrouter 28 darf deshalb stets versuchen, Nachrichten weiterzuleiten.
  • Die Netzwerkschnittstelle 42 teilt den Zugang zu der Eingangswert-Registerbank 20 zwischen dem lokalen Prozessor und dem Netzwerk. Der lokale Prozessor erhält die Priorität. Diese Baugruppe dekodiert die Nachricht und aktualisiert die entsprechenden Stellen in der Eingangswert-Registerbank 2.
  • Die Netzwerkschnittstelle 42 ist zwischen dem Fan-out-Generator 43 und der Eingangswert-Registerbank 2 angeschlossen. Sie kann deshalb Fan-out-Aktualisierungen von dem Prozessor zum Netzwerk weitergeben, wenn passend, oder sie einfach an die Eingangswert-Registerbank 2 weiterreichen. Sie kann außerdem Fan-out-Aktualisierungen vom Netzwerk an die Eingangswert-Registerbank 2 weiterreichen. Einige Änderungen waren an dem Fan-out-Generator 43 erforderlich, um die Netzwerkschnittstelle 42 aufzunehmen.
  • Wenn jeder Prozessor in dem Array die Fan-out-Liste für jedes seiner aktiven Gatter abgearbeitet hat und alle Aktualisierungen ihr Ziel erreicht haben, dann kann jeder Prozessor seine Eingangswert-Registerbank 2 in sein Array 1b schieben und mit der Auswertung der nächsten Zeiteinheit fortfahren. Um dies zu erreichen, ist etwas Synchronisationslogik zwischen den Zellen 21 erforderlich. Die Implementierung hierfür erfordert, dass jeder Prozessor seiner Zelle 21 mitteilt, wann er das Senden der Aktualisierungen abgeschlossen hat. Jede Zelle 21 überwacht ebenfalls die Netzwerkaktivität und teilt dem Array mit, ob es Netzwerkaktivität oder Prozessoraktivität gibt. Das Array weiß daher, wenn alle Prozessoren das Aktualisieren beendet haben und wenn das Netzwerk leer ist. Zu einer solchen Zeit erstattet das Array Bericht an die Zellen 21. Dann teilen die Zellen 21 den Prozessoren mit, mit der nächsten Zeiteinheit in dem Verzögerungsmodell fortzufahren. Die Implementierung dieses Systems erforderte geringe Änderungen in der Ablauflogik des APPLES-Prozessors.
  • Das Netzwerk wird nicht verwendet, diese Synchronisationsinformation zu übermitteln. Stattdessen sind dedizierte Leitungen bereitgestellt. Jede Zelle 21 hat eine Fertig-Eingangsleitung und eine Fertig-Ausgangsleitung. Die Zelle 21 hält die Fertig-Ausgangsleitung auf einem HIGH-Pegel, wenn ihr Prozessor fertig ist und keine Netzwerkaktivität um die Zelle 21 herum stattfindet. Die Fertig-Eingangsleitung wird durch die Array-Synchronisationslogik gesteuert. Das Array hält sie auf HIGH-Pegel, wenn es feststellt, dass alle Fertig-Ausgangsleitungen zur gleichen Zeit auf HIGH-Pegel liegen. Es wäre möglich, das Netzwerk zur Übermittlung dieser Synchronisationsinformation zu verwenden. Dies würde die Anzahl der durch den Entwurf erforderlichen Virtex-Anschlüsse reduzieren. Jedoch würde die Synchronisationslogik komplexer sein und mehr Schaltkreise erfordern. Der Synchronisationsvorgang würde zum Ausführen ebenfalls länger dauern.
  • Die zur Schaltungsbeschreibung gehörenden Daten werden in fünf Speichern innerhalb eines APPLES-Prozessors gespeichert. Bei dem grundlegenden APPLES-Verilog-Entwurf werden diese Speicher mit dem $READMEM Sytembefehl aus Dateien geladen. Bei dem auf einem Virtex-Chip zu implementierenden System könnten diese Speicher über eine PCI-Schnittstelle geladen werden.
  • Bei dem APPLES-Array wertet jeder Prozessor einen Teil der zu simluierenden Schaltung aus. Die Inhalte dieser fünf Speicher müssen unter den Prozessoren in dem Array aufgeteilt werden. Die Speicherinhalte müssen ebenfalls verarbeitet werden, um sie mit dem Array-Entwurf kompatibel zu machen. Bei einer Implementierung mit einem Virtex-Chip-Array, können diese Daten über einen PCI-Bus geladen werden und unter Verwendung des Array-Netzwerks verteilt werden. Die Daten würden für das Array vorverarbeitet werden und jeder Prozessor müsste die Daten einfach in seine Speicher laden. Die Aufnahme in den Entwurf eines Systems, die Daten zu verteilen, ist nicht trivial. Dieses Projekt ist hauptsächlich mit der Analyse der Entwurfsfähigkeit des Arrays zur Schaltungssimulation befasst. Eine Analyse des Array-Initialisierungssystems ist zu diesem Zeitpunkt nicht von höchster Wichtigkeit. Infolge dessen wurde das Initialisierungssystem nicht entworfen.
  • Um den Entwurf zu initialisieren, die Schaltungssimulation zu ermöglichen, wurde ein Verilog-Task geschrieben, die Speicher zu laden. Die Schaltungsbeschreibungsdateien für den Einzelprozessor werden in dem Entwurf in einen globalen Speicher geladen. Jedem Prozessor in dem Array ist eine Nummer zugewiesen. Eine Prozessornummer wird durch Multiplikation seiner y-Koordinate mit der Array-Breite und Addieren seiner x-Koordinate berechnet. Jeder Prozessor lädt ein Segment des globalen Arrays 1b, Arrays 1b, der Fan-out-Kopftabelle und der Fan-out-Größentabelle in seinen lokalen Speicher. Diese Segmente weisen die gleiche Größe auf. Die ausgewählten Segmente sind auf ihre Prozessornummer bezogen. Prozessor null übernimmt das erste Segment, Prozessor eins übernimmt das zweite Segment und so weiter. Außerdem muss ein Segment der Fan-out-Vektortabelle geladen werden. Das Segment wird durch Betrachten der Inhalte der lokalen Fan-out-Größen- und Fan-out-Kopftabellen bestimmt. Die erste aus der globalen Fan-out-Vektortabelle zu ladende Adresse ist die Adresse, die an der ersten Stelle in der lokalen Fan-out-Kopftabelle gespeichert ist. Die letzte zu ladende Adresse wird durch Addieren der in dem letzten Eintrag in der lokalen Fan-out-Kopftabelle gespeicherten Adresse zu der letzten Fan-out-Größe, die in dem letzten Eintrag in der lokalen Fan-out-Größentabelle gespeichert ist, berechnet. Die Adressen in der Fan-out-Kopftabelle müssen angeglichen werden, um auf die neue lokale Fan-out-Vektortabelle zu zeigen. Dies wird durch Subtraktion der in der ersten Stelle in der lokalen Fan-out-Kopftabelle gespeicherten Adresse von jeder Adresse in der selben Tabelle erreicht. Jede in der lokalen Fan-out-Vektortabelle gespeicherte Gattereingangsadresse muss in eine Array-Adresse umgerechnet werden. Eine Array-Adresse besteht aus der in den Bits vierzehn bis zwölf gespeicherten x-Koordinate des Zielprozessors, der in den Bits elf bis neun gespeicherten y-Koordinate des Zielprozessors und der in den Bits acht bis zehn gespeicherten lokalen Adresse des Gattereingangs auf dem Zielprozessor.
  • Bei Verwendung dieses Systems wird die Schaltungsbeschreibung unter den Prozessoren aufgeteilt. Es wird nicht betrachtet zu entscheiden, welches Gatter auf welchem Prozessor simuliert wird. Die APPLES-Schaltungsbeschreibungsdateien bestimmen, wo jedes Gatter simuliert wird. Der Aufbau dieser Dateien wird durch den Aufbau der iscas-85 Netzlistendateien bestimmt, die verwendet wurde, die APPLES-Schaltungsbeschreibungsdateien zu erstellen.
  • In 10 ist ein alternativer Prozessoraufbau veranschaulicht, in dem Teile, die denen ähnlich sind, wie sie in 1 beschrieben wurden, mit den selben Hinweisziffern gekennzeichnet sind. In dieser Ausführungsform sind die Abfrageregister mit den Hinweisziffern 6a gekennzeichnet und die allgemeine Logikabfolge ist mit der Hinweisziffer 40 gekennzeichnet. Der Prozessor enthält außerdem eine Schaltungsaufteilungs-Logikschaltung 41 und eine Netzwerkschnittstelle 42. Ein Fan-out-Generator 43 ist kenntlich gemacht und enthält, zum Beispiel, den Fan-out-Speicher 8. Die Netzwerkschnittstelle 42 teilt den Zugriff auf die Eingangswert-Registerbank 2.
  • Der Original-APPLES-Entwurf ist in Verilog geschrieben. Ebenso der Array-Entwurf. Der Verilog-Code ist auf einem Behavioural-Level geschrieben. Dies ist das abstrakteste Niveau, das einem Verilog-Programmierer zur Verfügung steht. Wie mit jedem Verilog-System ist es in Verilog-Module aufgeteilt. Jedes Modul ist eine Komponente des Systems. Die in dem APPLES-Array-Entwurf zusammengefügten Verilog-Module sind:
    • • Das Top-Modul
    • • Das Array-Modul
    • • Das Zellen-Modul
    • • Das Empfangs-Modul
    • • Das Sende-Modul
    • • Das Anforderungsscanner-Modul
    • • Das Auftragsrouter-Modul
    • • Das Puffer-Modul
    • • Das Netzwerkschnittstellen-Modul
  • Das Top-Modul wird verwendet, um zu prüfen, dass das System korrekt arbeitet. Eine Instantiierung des Top-Moduls enthält eine Instantiierung des Array-Moduls. Das Array enthält mehrere Instantiierungen des Zellen-Moduls. Jede Zelle enthält vier Instantiierungen von jeweils dem Sende- und Empfangs-Modul. Eine Zelle enthält außerdem einen Anforderungsscanner, einen Auftragrouter, verschiedene Puffer und einen APPLES-Prozessor. Der APPLES-Prozessor enthält Instantiierungen der Standardprozessorkomponenten zusammen mit einer Instantiierung des Netzwerkschnittstellen-Moduls. Dieser Aufbau und das Verhalten dieser Module wurden früher in diesem Kapitel beschrieben. Jedes dieser Module ist in einer passend benannten Datei enthalten.
  • Zusätzlich zum Entwurf dieser Module, erforderte der Array-Entwurf ebenfalls die folgenden Änderungen:
    • • Die Einführung eines Verilog-Task, um die Schaltungsbeschreibungsdaten unter den Prozessoren in dem Array aufzuteilen. Dieser ist in dem APPLES-Prozessor-Modul untergebracht.
    • • Die Aufnahme von Prozessorsynchronisierungslogik in das APPLES-Prozessor-Modul, das Zellen-Modul und das Array-Modul.
    • • Die Integration des Netzwerkschnittstellen-Moduls in den APPLES-Prozessor.
  • Die APPLES-Architektur umfasst eine alternative Taktstrategie, die die Erfordernis für komplexe Systemblockadevermeidungs- oder Systemblockadebehebungsverfahren und andere Mechanismen, die normalerweise Bestandteil einer ereignisgesteuerten Simulation sind, umgeht. Die vorliegende Erfindung weist einen Overhead auf, der beträchtlich kleiner ist als bei herkömmlichen Ansätzen und sie gestattet es, die Gatterauswertung im Speicher zu aktivieren. Die Verringerung des Verarbeitungs-Overheads ist offenkundig in der verbesserten Steigerungsleistung im Vergleich zu anderen Verfahren.
  • Ein im Chandry-Misra-Algorithmus inhärenter Nachrichtenweiterleitungsmechanismus wurde durch einen parallelen Abfragemechanismus ersetzt. Dieser Mechanismus gestattet es, den Fan-out/Aktualisierungsvorgang zu parallelisieren. Während Kollisionen auftreten, werden Gatter effektiv in eine Warteschlange gestellt, die eine Fan-out/Aktualisierungs-Pipeline füllt. Während sich die Pipeline füllt (mit steigender Anzahl an Abfrageregistern) erhöht sich folglich die Leistung. Die Leistungssteigerung erreicht eine Grenze, wenn die neuen Gatter, die in die Warteschlange eintreten, gleich der Fan-out-Rate ist. Dennoch ist die Leistungssteigerung und die Taktanzahl pro verarbeitetem Gatter wesentlich besser als bei herkömmlichen Ansätzen. Das System lässt außerdem eine breite Auswahl an Verzögerungsmodellen zu.
  • Der Bit-Muster-Gatterauswertungsmechanismus in APPLES ermöglicht die Implementierung einfacher und komplexer Verzögerungsmodelle als Folge paralleler Suchen. Folglich ist der im Speicher ausgeführte Auswertungsvorgang zeitkonstant. Gewissermaßen gibt es eine eins-zu-eins Übereinstimmung zwischen Gatter und Prozessor (die Gatterwortpaare). Diese feinkörnige Parallelität erlaubt eine maximale Parallelität in der Gatterauswertungsphase. Aktive Gatter werden automatisch erkannt und ihre Fan-out-Listen durch Abfragen einer Hitliste aktualisiert. Dieser Abfragemechanismus ist analog dem Kommunikations-Overhead in typischen parallelen Verarbeitungsarchitekturen, jedoch ist dieses Abfragen der Parallelisierung selbst zugänglich. Mehrere Abfrageregister verringern die Overhead-Zeit und ermöglichen es, dass die Gatterverarbeitungsrate lediglich durch die Fan-out-Speicherbandbreite begrenzt ist. Die erhebliche Leistungssteigerung der Logiksimulation wird mit der APPLES-Architektur erreicht, was zu einer Gatterverarbeitungsrate von wenigen Maschinenzyklen führt.
  • Die Erfindung ist nicht auf die hier beschriebenen Ausführungsformen beschränkt. Die Erfindung ist nur durch die angefügten Ansprüche beschränkt.

Claims (17)

  1. Parallelverarbeitungsverfahren für Schaltungslogiksimulation, das die folgenden Schritte umfasst: Darstellen von Signalen auf einer Linie über eine Zeitperiode als eine Bitsequenz, Beurteilen des Ausgangs eines Logikgatters einschließlich einer Beurteilung einer inhärenten Verzögerung mittels eines Vergleichs zwischen den Bitsequenzen der Eingänge des Logikgatters mit einer vorbestimmten Serie von Bitmustern, wobei diejenigen Logikgatter, deren Ausgänge sich über die Zeitperiode geändert haben, während der Beurteilung der Gatterausgänge als echte Gatteränderungen identifiziert werden, und nur diese echten Gatteränderungen zu den Fan-out-Gates dieser Logikgatter propagiert werden, wobei die Steuerung des Verfahrens in einem assoziativen Speichermechanismus (1a, 1b) erfolgt, der in Wortform eine Historie von Gattereingangssignalen speichert, wobei ein Wort einer bestimmten Leitung entspricht und mit einem Gattertyp assoziiert ist, indem ein Hitlistenregister von Logikgatter-Statusänderungen kompiliert und ein Multiple-Response-Resolver (7) benutzt wird, der einen Teil des assoziativen Speichermechanismus (1a, 1b) bildet, der eine Adresse für jeden Hit erzeugt, und dann die Ergebnisse auf der Hitliste scant und sie zu einem Ausgaberegister für die nachfolgende Verwendung überträgt, dadurch gekennzeichnet, dass das assoziative Register (1b) in separate kleinere assoziative Subregister unterteilt wird, wobei jedem assoziativen Subregister ein Logikgattertyp zugeordnet ist, wobei mit jedem assoziativen Subregister entsprechende Subregister verbunden sind, so dass Gatterbeurteilungen und Tests parallel auf jedem assoziativen Subregister durchgeführt werden.
  2. Verfahren nach Anspruch 1, in dem jede Verzögerung als Verzögerungswort in einem assoziativen Speicher (1b) gespeichert wird, der einen Teil des assoziativen Speichermechanismus (1a, 1b) bildet, wobei: die Länge des Verzögerungswortes bestimmt wird; und wenn die Verzögerungswortbreite die Wortbreite im assoziativen Register (1b) überschreitet: die Anzahl der ganzzahligen Vielfachen der in dem Verzögerungswort enthaltenen Registerwortbreite als Gatterstatus berechnet wird; der Gatterstatus in einem weiteren Statusregister (1a) gespeichert wird; der Rest von der Berechnung in dem assoziativen Register (1b) mit denjenigen Verzögerungswörtern gespeichert wird, deren Breiten die Wortbreite des assoziativen Registers nicht überschritten; und nach Beginn des Zählens des assoziativen Registers: das Statusregister (1a) für das Verzögerungswort konsultiert wird, das in das Statusregister eingegeben wurde, und der Rest für diese Zahl des assoziativen Registers ignoriert wird; am Ende des Zählens des assoziativen Registers das Statusregister aktualisiert wird; und das Zählen fortgesetzt wird, bis der Rest das noch nötige Zählen repräsentiert.
  3. Verfahren nach Anspruch 1 oder 2, bei dem die Hitliste in eine Mehrzahl von separaten kleineren Hitlisten segmentiert wird, wobei jede mit einem separaten Scan-Register verbunden ist und in dem jedes Scan-Register parallel betrieben wird, um die Ergebnisse zum Ausgangsregister zu übertragen.
  4. Verfahren nach einem der Ansprüche 1 bis 3, in dem jedes Leitungssignal zu einem Ziellogikgatter als eine Mehrzahl von Bits gespeichert wird, die jeweils eine Verzögerung von einer Zeitperiode repräsentieren, wobei die Summenbits die Verzögerung zwischen Signalausgang zu dem und Empfang durch das Ziellogikgatter repräsentieren und in dem die inhärente Verzögerung jedes Logikgatters auf dieselbe Weise repräsentiert wird.
  5. Verfahren nach einem der Ansprüche 1 oder 4, bei dem jedes assoziative Subregister zum Bilden einer Hitliste verwendet wird, die mit einem entsprechenden separaten Scan-Register verbunden ist.
  6. Verfahren nach einem der Ansprüche 1 bis 5, bei dem dort, wo die Zahl des einen Logikgattertyps einen vorbestimmten Wert überschreitet, mehr als ein Subregister verwendet wird.
  7. Verfahren nach einem der Ansprüche 3 bis 6, in dem die Scan-Register durch Ausnahmelogik unter Verwendung eines OR-Gatters gesteuert werden, wodurch der Scan für jedes Register dann terminiert wird, wenn das OR-Gatter seinen Status geändert hat und so keine weiteren Übereinstimmungen anzeigt.
  8. Verfahren nach Anspruch 7, bei dem der Scan durch sequentielles Zählen durch die Hitliste erfolgt und die folgenden Schritte ausgeführt werden: Prüfen, ob das Bit gesetzt ist, so dass ein Hit angezeigt wird; wenn ein Hit vorliegt, Ermitteln der Adresse, die von diesem Hit bewirkt wird; Speichern der Adresse; Löschen des Bits in der Hitliste; Bewegen zur nächsten Position in der Hitliste; und Wiederholen der obigen Schritte, bis die Hitliste gelöscht ist.
  9. Verfahren nach einem der vorherigen Ansprüche, in dem jedes Leitungssignal zu einem Ziellogikgatter als eine Mehrzahl von Bits gespeichert wird, die jeweils eine Verzögerung von einer Zeitperiode repräsentieren, wobei die Summenbits die Verzögerung zwischen dem Signalausgang zu dem und Empfang durch das Ziellogikgatter repräsentieren.
  10. Verfahren nach einem der vorherigen Ansprüche, in dem eine Initialisierungsphase besteht, in der: vorgegebene Signalwerte eingegeben werden; unvorgegebene Signalwerte auf unbekannt gesetzt werden; Testschablonen vorbereitet werden, die das Verzögerungsmodell für jedes Logikgatter definieren; die Eingangsschaltung geparst wird, um eine äquivalente Schaltung zu erzeugen, die aus 2-Eingangs-Logikgattern besteht; und die 2-Eingangs-Logikgatter dann konfiguriert werden.
  11. Verfahren nach einem der vorherigen Ansprüche, in dem eine mehrwertige Logik angewendet wird und in dem n Bits zum Darstellen eines Signalwertes zu jedem Zeitpunkt verwendet werden, wobei n eine beliebige willkürlich gewählte Logik ist.
  12. Verfahren nach Anspruch 11, bei dem eine 8-wertige Logik verwendet wird, wobei 000 Logik 0 repräsentiert, 111 Logik 1 repräsentiert und 001 bis 110 willkürlich definierte andere Signalzustände repräsentieren.
  13. Verfahren nach Anspruch 11 oder 12, bei dem die Sequenz von Werten auf einem Logikgatter als Bitmuster gespeichert wird, das ein eindeutiges Wort in dem assoziativen Speichermechanismus (1a, 1b) bildet.
  14. Verfahren nach einem der vorherigen Ansprüche, bei dem ein Datensatz aller Werte gespeichert ist, die ein Logikgatter für die Verzögerungseinheiten der längsten Verzögerung in der Schaltung erworben hat.
  15. Parallelprozessor für ein paralleles Verarbeitungsverfahren von Schaltungslogiksimulation (APPLES), das die folgenden Schritte umfasst: Darstellen von Signalen auf einer Linie über eine Zeitperiode als eine Bitsequenz, Beurteilen des Ausgangs eines Logikgatters einschließlich einer Beurteilung einer inhärenten Verzögerung mittels eines Vergleichs zwischen den Bitsequenzen der Eingänge des Logikgatters mit einer vorbestimmten Serie von Bitmustern, wobei diejenigen Logikgatter, deren Ausgänge sich über die Zeitperiode geändert haben, während der Beurteilung der Gatterausgänge als echte Gatteränderungen identifiziert werden, und nur diese echten Gatteränderungen zu Fan-out-Gates propagiert werden, wobei die Steuerung des Verfahrens in einem assoziativen Speichermechanismus (1a, 1b) erfolgt, der in Wortform eine Historie von Gattereingangssignalen speichert, wobei ein Wort einer bestimmten Leitung entspricht und mit einem Gattertyp assoziiert ist, indem ein Hitlistenregister von Logikgatter-Statusänderungen kompiliert und ein Multiple-Response-Resolver (7) benutzt wird, der einen Teil des assoziativen Speichermechanismus (1a, 1b) bildet, der eine Adresse für jeden Hit erzeugt, und dann die Ergebnisse auf der Hitliste scant und sie zu einem Ausgaberegister für die nachfolgende Verwendung überträgt, wobei der Prozessor Folgendes umfasst: einen Hauptprozessor (30); einen assoziativen Speichermechanismus (1a, 1b), der eine assoziative Array 1a und eine assoziative Array 1b umfasst, wobei der assoziative Speichermechanismus Folgendes umfasst: einen Response-Resolver (7); eine Eingangswert-Registerbank (2); eine Testergebnis-Registerbank (4); eine Gruppenergebnis-Registerbank (5); eine Gruppentesthitliste (6), wobei die Gruppentesthitliste den Response-Resolver speist; und Adressregister 9; dadurch gekennzeichnet, dass der assoziative Speichermechanismus (1a, 1b) Folgendes umfasst: eine Mehrzahl von separaten assoziativen Subregistern, jeweils zum Speichern einer Historie von Gattereingabesignalen in Wortform, wobei jedem assoziativen Subregister ein Logikgattertyp zugeordnet wird; und eine Mehrzahl von separaten zusätzlichen Subregistern, die mit jedem assoziativen Subregister assoziiert sind, so dass Gatterbeurteilungen und Tests parallel auf jedem assoziativen Subregister durchgeführt werden können.
  16. Prozessor nach Anspruch 15, in dem die zusätzlichen Subregister ein Eingangssubregister, ein Maskensubregister und ein Scansubregister umfassen.
  17. Prozessor nach Anspruch 16, in dem die Scansubregister mit einem Ausgaberegister verbunden sind.
DE60024088T 1999-06-28 2000-06-28 Ereignis-simulation einer schaltkreislogik Expired - Fee Related DE60024088T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IE990535 1999-06-28
IE990535 1999-06-28
PCT/IE2000/000083 WO2001001298A2 (en) 1999-06-28 2000-06-28 Logic event simulation

Publications (2)

Publication Number Publication Date
DE60024088D1 DE60024088D1 (de) 2005-12-22
DE60024088T2 true DE60024088T2 (de) 2006-08-17

Family

ID=11042093

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60024088T Expired - Fee Related DE60024088T2 (de) 1999-06-28 2000-06-28 Ereignis-simulation einer schaltkreislogik

Country Status (8)

Country Link
US (1) US20070156380A1 (de)
EP (1) EP1192570B1 (de)
JP (1) JP2003503800A (de)
KR (1) KR20020077032A (de)
AT (1) ATE310281T1 (de)
AU (1) AU5422600A (de)
DE (1) DE60024088T2 (de)
WO (1) WO2001001298A2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5583263A (en) * 1995-08-30 1996-12-10 Shell Oil Company Process of making ketones
AU2002233604A1 (en) * 2002-02-22 2003-09-29 Neosera Systems Limited A method and a processor for parallel processing of logic event simulation
EP1812877A1 (de) * 2004-10-04 2007-08-01 University College Dublin Verfahren und prozessor zur leistungsanalyse in digitalen schaltungen
US7983890B2 (en) * 2007-06-18 2011-07-19 Massachusetts Institute Of Technology Method and apparatus performing automatic mapping for a multi-processor system
WO2009043920A1 (en) * 2007-10-03 2009-04-09 University College Dublin A system level power evaluation method
US8024168B2 (en) 2008-06-13 2011-09-20 International Business Machines Corporation Detecting X state transitions and storing compressed debug information
CN101794214B (zh) 2009-02-04 2013-11-20 世意法(北京)半导体研发有限责任公司 使用多块物理寄存器映射表的寄存器重命名系统及其方法
CN111522255B (zh) * 2020-04-22 2022-09-23 第四范式(北京)技术有限公司 仿真系统和仿真方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5423015A (en) * 1988-10-20 1995-06-06 Chung; David S. F. Memory structure and method for shuffling a stack of data utilizing buffer memory locations
US6226710B1 (en) * 1997-11-14 2001-05-01 Utmc Microelectronic Systems Inc. Content addressable memory (CAM) engine

Also Published As

Publication number Publication date
EP1192570B1 (de) 2005-11-16
ATE310281T1 (de) 2005-12-15
AU5422600A (en) 2001-01-31
KR20020077032A (ko) 2002-10-11
WO2001001298A2 (en) 2001-01-04
WO2001001298A3 (en) 2001-07-26
DE60024088D1 (de) 2005-12-22
EP1192570A2 (de) 2002-04-03
JP2003503800A (ja) 2003-01-28
US20070156380A1 (en) 2007-07-05

Similar Documents

Publication Publication Date Title
DE60318086T2 (de) System und methode zur reduzierung von leitungsverzögerung oder überlastung bei der synthese von hardware-solvern
DE3880478T2 (de) Geschichtetes netz.
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
DE68924934T2 (de) Parallelsynchronisationstechnik.
DE69033272T2 (de) Verbundarchitektur für ein hochgradig paralleles skalar/vektor-multiprozessorsystem
Makedon et al. On minimizing width in linear layouts
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
DE69419524T2 (de) Sperrsynchronisierung für verteilte speicher-massivparallelrechner
DE3787886T2 (de) Parallelprozessor mit binärer baumstruktur.
Navaridas et al. Simulating and evaluating interconnection networks with INSEE
DE69106384T2 (de) Skalierbares parallel-vektorrechnersystem.
DE102010044531A1 (de) Autonome Speicherarchitektur
DE60024088T2 (de) Ereignis-simulation einer schaltkreislogik
DE102016104108A1 (de) Systeme und Verfahren zur verteilten skalierbaren Strahlenverarbeitung
Chen et al. Dsim: scaling time warp to 1,033 processors
DE102023105575A1 (de) Verteilter gemeinsamer speicher
DE102023105563A1 (de) Arrays kooperativer gruppen
Faasen Intermediate uniformly distributed tuple space on transputer meshes
Kundu An incremental algorithm for identification of longest (shortest) paths
EP1038235B1 (de) Vorrichtung zum hierarchischen verbinden einer mehrzahl von funktionseinheiten in einem prozessor
Chen et al. Software environment for WASMII: A data driven machine with a virtual hardware
Hogl et al. Enable++: a general-purpose L2 trigger processor
Mielke et al. Algorithm To Architecture Mapping Model (ATAMM) multicomputer operating system functional specification
Rasheedha et al. Bitonic sorting on FPGA for energy and memory efficient mapping
Oi et al. Performance analysis of the bidirectional ring-based multiprocessor

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee