DE69935924T2 - Umgeordnete kommunikationsprozesse in asynchronen schaltkreisen mit pipelines - Google Patents

Umgeordnete kommunikationsprozesse in asynchronen schaltkreisen mit pipelines Download PDF

Info

Publication number
DE69935924T2
DE69935924T2 DE69935924T DE69935924T DE69935924T2 DE 69935924 T2 DE69935924 T2 DE 69935924T2 DE 69935924 T DE69935924 T DE 69935924T DE 69935924 T DE69935924 T DE 69935924T DE 69935924 T2 DE69935924 T2 DE 69935924T2
Authority
DE
Germany
Prior art keywords
circuit
channel
output
state
input
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 - Lifetime
Application number
DE69935924T
Other languages
English (en)
Other versions
DE69935924D1 (de
Inventor
Andrew M. Pasadena LINES
Alain Pasadena MARTIN
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.)
California Institute of Technology CalTech
Original Assignee
California Institute of Technology CalTech
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 California Institute of Technology CalTech filed Critical California Institute of Technology CalTech
Publication of DE69935924D1 publication Critical patent/DE69935924D1/de
Application granted granted Critical
Publication of DE69935924T2 publication Critical patent/DE69935924T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3867Concurrent instruction execution, e.g. pipeline or look ahead using instruction pipelines
    • G06F9/3869Implementation aspects, e.g. pipeline latches; pipeline synchronisation and clocking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)
  • Advance Control (AREA)

Description

  • Aussage zu bundesstaastlich unterstützer Forschung
  • Die vorliegende Anmeldung erhielt möglicherweise finanzielle Unterstützung gemäß US Government Grant No. DAAH-04-94-G-0274 durch die Department of Army.
  • Die vorliegende Spezifikation beschreibt die Kommunikation von sequentiellen Prozessen (CSP), die als quasi verzögerungsunempfindliche asynchrone Schaltungen ausgeführt sind. Spezieller lehrt die vorliegende Erfindung das Umordnen von Kommunikationssequenzen und das Kombinieren von Rechnen mit Pufferung, um Pipelinestrukturierte Schaltungen zu erzeugen.
  • HINTERGRUND
  • Asynchrone Prozessoren sind aus dem US-Patent Nr. 5,752,050 bekannt. Diese Prozessoren verarbeiten einen Informationsstrom ohne einen den Betrieb synchronisierenden globalen Takt.
  • Ein Pipeline-Ansatz mit asynchronen Prozessoren benutzt das in 1 gezeigte Grundlayout. Ein erster Prozess 100 kommuniziert mit einem zweiten Prozess 110, der wiederum eine Meldung zum nächsten Prozess sendet. Die Meldungen erfolgen über einen vierphasigen Quittungsaustausch. In der ersten Phase hebt der Sender die Anforderungsleitung; in der zweiten Phase hebt der Empfänger die Quittungsleitung; in der dritten Phase senkt der Sender die Anforderungsleitung; in der vierten Phase senkt der Empfänger die Quittungsleitung. In der HSE-(Handshaking Expansion Language)-Sprache wird der Quittungsaustausch auf Kanal X als X+; Xa+; X-; Xa- beschrieben. In 1 ist die Anforderung zwischen 100 und 110 die L-Leitung (102). Die Quittung für diese Kommunikation ist La (108). Die Anforderung zwischen 110 und 120 ist die R-Leitung (104), die Quittung ist Ra (106).
  • Dies ist ein einfaches Anforderungs-/Quittungssystem. Die Anforderung [L] wird quittiert (La), dann ausgeführt R↑ dann wieder quittiert (Ra).
  • Pipelinestrukturierte asynchrone Schaltungen sind als „Bundled-Data" oder „Micropipelines" bekannt und haben einen synchronen Datenpfad, der durch asynchrone, selbstgetaktete Steuerelemente „getaktet" wird. Diese Steuerelemente führen einen Quittungsaustauch zwischen Pipeline-Stufen mit einem Anforderung/Quittung-Paar durch. Die Verzögerung der Datenpfadlogik wird mit einem Verzögerungselement in der Steuerung geschätzt, so dass die Anforderung zum nächsten Pipeline-Zustand erst dann erfolgt, wenn die Daten als gültig angenommen werden.
  • Die alternative Art und Weise beinhaltet (quasi) verzögerungsunempfindliche Schaltungen, für die keine Verzögerungsannahmen gemacht werden. In diesem Stil ist der Stand der Technik im Caltech-Patent Asynchronous Microprocessor ausgestaltet. Datenpfade sind weiterhin von der Steuerung getrennt, wie im Bundled-Data-Fall, aber anstatt Verzögerungsleitungen wird eine Endeerfassungsschaltung addiert, um zu erfassen, wann die Daten gültig sind. Kommunikationen zwischen Prozessoren erfolgen über verzögerungsunempfindliche Kanäle mit einem 4-phasigen Quittungsaustausch. Zwischen Signalspeichern oder Puffern kann Logik mit nicht Pipeline-strukturierten Schwachzustands-Logikbausteinen ausgeführt werden.
  • Die WO92-07361 offenbart die Anwendung von selbstgetakteter iterativer Overhead-Logik, CMOS-Dominologik wird gewöhnlich nur in zwei Phasen verwendet, Precharge und Logikbewertung. Die WO92-07361 verwendet eine dritte Phase zum Speichern von Daten, die es zulässt, Dominologikgatter zu kaskadieren und ohne Interventions-Signalspeicher zu Pipeline-strukturieren. Die Eingänge (data in) zu diesem System müssen in der Logikbewertungsphase streng monotone Übergänge haben und das Precharge-Signal darf nur während der Precharge-Phase aktiv sein.
  • Die US 5,434,520 offenbart ein Synchronisationssystem und Verfahren für Pipeline-strukturierte, selbstgetaktete dynamische Logikschaltungen. Solche Synchronisationssysteme arbeiten mit zwei oder mehr unterschiedlichen Taktsignalen für jeweilige Gruppen oder Stufen von selbstgetakteten dynamischen Logikgattern. Jedes Taktsignal definiert ein Precharge-Zeitintervall und ein Bewertungszeitintervall für seine jeweilige Gruppe oder Stufe von selbstgetakteten dynamischen Logikgattern.
  • ZUSAMMENFASSUNG
  • Das vorliegende System lehrt eine Art der Pipeline-Strukturierung dieses Quittungsaustauschs, damit bestimmte Prozesse näher an gleichzeitig ablaufen können. Das offenbarte System ist ein verzögerungsunempfindliches System, das eine Kombination aus Logik und Pufferung zum Neusequenzieren bestimmter Operationen anwendet.
  • Demgemäß stellt die vorliegende Erfindung eine asynchrone Schaltung bereit, die einen ersten Prozess und einen mit dem ersten Prozess kommunizierenden zweiten Prozess umfasst, wobei der erste Prozess Folgendes beinhaltet: einen L-Kanal zum Kommunizieren mit einer vorherigen Stufe durch Warten auf Eingabedaten auf dem L-Kanal, Aufdrücken eines Eingabebestätigungssignals als Reaktion auf die Eingabedaten, Warten, bis der L-Kanal auf neutral gesetzt ist, und Wegnehmen des Eingabebestätigungssignals als Reaktion darauf, dass der L-Kanal auf neutral gesetzt wird, wobei der erste Prozess auch beinhaltet, dass ein R-Kanal mit dem zweiten Prozess kommuniziert, indem er wartet, bis ein mit dem zweiten Prozess assoziiertes Ausgabebestätigungssignal weggenommen wird, Übertragen von Ausgabedaten auf dem R-Kanal als Reaktion auf das Wegnehmen des Ausgabebestätigungssignals, Warten auf das Aufdrücken des Ausgabebestätigungssignals und Neutralsetzen des R-Kanals als Reaktion auf das Aufdrücken des Ausgabebestätigungssignals, dadurch gekennzeichnet, dass der erste Prozess eine Zustandshalteeigenschaft beinhaltet, die direkt mit einer Dominologikberechnung kombiniert wird, um Steuerung und Daten zu kombinieren und die Notwendigkeit für eine zusätzliche Zustandshalteschaltung zwischen dem ersten und dem zweiten Prozess zu eliminieren.
  • Es wird eine neue Art der Pipeline-Strukturierung von quasi verzögerungsunempfindlichen Schaltungen offenbart, bei der die Steuerung nicht explizit vom Datenpfad getrennt ist. Es werden zwischen Logikbausteinen keine zusätzlichen Puffer oder Signalspeicher addiert. Stattdessen wird die Zustandshalteeigenschaft eines Puffers direkt mit einer Zweischienen-Dominologikberechnung kombiniert. Die Tokens laufen durch die Pipeline wie bei einfachen Puffern. Die Tokens führen auch Werte, an denen gerechnet wird. Indem die Steuerung nicht von Daten getrennt wird und indem die Schaltungsteile, die die Quittungsaustausche handhaben, sorgfältig entworfen werden, können höhere Durchsätze erwartet werden. Der zusätzliche Quittungsaustausch-Schaltkomplex addiert gewöhnlich nicht mehr als 50% Fläche.
  • Der Unterstützungsschaltkomplex, der den Quittungsaustausch handhabt, erfolgt in Precharge-Dominologik eines Typs, der für synchrones Design üblich ist. Zusätzliche Schaltungen erkennen die Gültigkeit der Ein- und Ausgangskanäle (in asynchronem Design üblich). Eine Quittungsschaltung quittiert die Eingänge und lädt die Logik vor.
  • Die im vorliegenden Patent offenbarten Schaltungsausführungen beinhalten Komponenten für eine Logikberechnung plus Komponenten zum Erfassen der Validität der Ein- und Ausgangsdaten sowie eine weitere Komponente zum Erzeugen der Quittungen und zum Vorladen der Logik. Details und Zusammensetzung dieser Teile ergeben schnelle, quasi verzögerungsunempfindliche Schaltungen, die dem Stand der Technik überlegen sind.
  • Das vorliegende Patent beinhaltet auch weitere Verbesserungen dieser kombinierten Puffer/Logik-Zelle. Dazu gehört die Fähigkeit, auf Eingängen oder Ausgängen konditionell zu kommunizieren, um Leitwegfunktionalität zu implementieren. Es werden auch Mechanismen beschrieben, um interne Zustandsvariablen effizient zu implementieren.
  • Kurzbeschreibung der Zeichnungen
  • Diese und andere Aspekte werden nun ausführlich mit Bezug auf die Begleitzeichnungen beschrieben. Dabei zeigt:
  • 1 ein einfaches Pipeline-Strukturierungssystem und einige der in diesem System verwendeten Signale;
  • 1A einen einfachen Precharge-Puffer in Blockdiagrammform;
  • 2 eine einfache Schwachzustands-Halbpufferschaltung;
  • 3 die Transistordiagramme für den Schwachzustands-Halbpuffer;
  • 4 einen Precharge-Puffer mit der Transistoranordnung oben und der Gatteranordnung unten;
  • 5 eine Teilungs-Precharge-Schaltung;
  • 6 eine Vereinigungs-Precharge-Schaltung;
  • 7 eine Reg-Precharge-Schaltung.
  • Beschreibung der Ausgestaltung
  • Das vorliegende System basiert auf einer Art der Pipeline-Strukturierung der Informationen in der Zeichnung von 1 unter Verwendung von Precharge-Logik, die einen parallelen Ablauf der Operationen zulässt. Eine Pipeline-Strukturierung lässt es zu, dass ein System mehr als eine Operation gleichzeitig ausführt. Anders ausgedrückt, ein Pipeline-strukturiertes System braucht nicht auf den Abschluss einer Aktion zu warten, bevor die andere Aktion ausgeführt wird. Wenn jedoch versucht wird, Daten vor ihrer Benutzung zurückzusetzen, dann gehen die Daten verloren.
  • Die vorliegende Erfindung lehrt eine Möglichkeit, dieses Problem anzugehen, indem die Kommunikationssequenz umgeordnet wird, bestimmte Informationen innerhalb der Sequenz gespeichert werden und eine effizientere Pipeline-Strukturierung von Informationen ermöglicht wird.
  • Eine „Pipeline" ist eine lineare Sequenz von Puffern, wobei der Ausgang eines Puffers mit dem Eingang des nächsten Puffers wie in 1 gezeigt verbunden wird. „Tokens" 99 werden zum Eingangsende der Pipeline gesendet und durchlaufen jeden Puffer zum Ausgangsende. Die Tokens bleiben in FIFO-(First-In-First-Out)-Reihenfolge.
  • Für synchrone Pipelines durchlaufen die Tokens gewöhnlich bei jedem Taktzyklus eine Stufe. Für asynchrone Pipelines gibt es keinen globalen Takt zum Synchronisieren der Bewegung. Stattdessen bewegt sich jedes Token durch die Pipeline vorwärts, wo sich eine leere Zelle davor befindet; ansonsten stoppt der Token. Die Tokens haben effektiv ein ähnliches Verhalten wie Fahrzeuge auf einer Autobahn.
  • Die Pufferkapazität („Slack" = Reserve) einer asynchronen Pipeline ist proportional zur Höchstzahl der Tokens, die in die Pipeline gepackt werden können, ohne das Eingangsende der Pipeline anzuhalten. Der „Durchsatz" ist die Zahl der Tokens pro Sekunde, die eine bestimmte Stufe der Pipeline durchlaufen. Die „Vorwärtslatenz" ist die Zeit, die ein Token zum Durchlaufen der Länge der Pipeline braucht.
  • Pufferumordnung
  • Ein Einschienenpuffer hat die „CSP"-(Communication Sequential Process)-Spezifikation *[L; R]. Mit einem passiven Protokoll für L und einem Lazy-Active-Protokoll für R hat der Puffer die Quittungsaustauscherweiterung (HSE):
    Figure 00070001
  • In Englisch ist die Quittungsaustauscherweiterung für diesen Puffer wie folgt: Warten, bis L wahr wird; La auf wahr setzen; warten, bis L falsch wird; La auf falsch setzen; warten, bis Ra falsch wird; R auf wahr setzen; warten, bis Ra wahr wird; R auf falsch setzen; unendlich oft wiederholen.
  • Das vorliegende System erkennt, dass bestimmte Sequenzen unter diesen Sequenzen am interessantesten sind. Die vorliegende Anmeldung ordnet die Sequenz um, um diese zuerst abzuarbeiten.
  • In der Tat repräsentiert Gleichung 1 ein Vierphasenprotokoll. Die ersten beiden Aktionen [L]; La↑ repräsentieren das Warten, bis L aktiv wird, und eine Bestätigung dieser Tatsache. Die zweiten zwei Aktionen repräsentieren, dass L inaktiv wird. Die dritten zwei Aktionen repräsentieren das Warten, bis R aktiv wird. Die vierten zwei Aktionen repräsentieren R inaktiv.
  • Die Umgebung führt Folgendes aus: *[[¬La]; L↑; [La]; L↓] und *[[R]; Ra↑; [¬R]↑; Ra↓]. Das Warten auf L oder [L] wird als die Ankunft eines Eingangstokens interpretiert und der Übergang R↑ ist der Anfang des Ausgangstokens. Puffer werden hierin verwendet, um die gewünschte FIFO-Reihenfolge und Eigenschaften einer Pipeline zu bewahren.
  • Eine direkte Implementation dieses Quittungsaustauschausdrucks kann eine Zustandsvariable benutzen, um die erste Hälfte von der zweiten Hälfte zu unterscheiden. Dies repräsentiert einen großen Betrag an Sequenzierung in jedem Zyklus.
  • Eine andere Option besteht darin, die Wartezeiten und Events zum Reduzieren des Sequenzierungsbetrags und der Anzahl der Zustandsvariablen umzuordnen, um den Durchsatz zu maximieren und die Latenz der Pipeline zu minimieren.
  • Die erste Anforderung für ein gültiges Umordnen ist, dass der Quittungsaustauschausdruck die Quittungsaustauschprotokolle auf L und R hält. Das heißt, die Projektion auf dem L-Kanal ist *[[L]; La↑; [–, L]; La↓], die Projektion auf dem R Kanal *[[¬Ra]; R↑; [Ra]; R↓]. Zusätzlich sollte die Zahl der fertigen Lt minus die Zahl der fertigen R↑ (die Pufferreserve) wenigstens null betragen, um die Zahl der Tokens in der Pipeline zu konservieren. Ebenso sollte, da dies ein „Puffer" ist, eine Reserve von ungleich null eingeführt werden. Daher sollte La↑ nicht auf das entsprechende [Ra] warten, da die Umordnung sonst keine Reserve hat. Dies ist die „konstante Ansprechzeit"-Anforderung.
  • Diese drei Anforderungen reichen zwar aus, um eine korrekte Implementation zu garantieren, aber eine weitere ist nützlich. Die L- und R-Kanäle können zum Codieren von Daten expandiert werden. Wenn beim Umordnen R↑ am entsprechenden La↑ vorbei bewegt wird, dann würden die "L"-Daten verschwinden, bevor R↑ fertig ist. Die Daten werden hier in einem Puffer gespeichert, hier als interne Zustandsvariable proportional zur Anzahl der Bits auf R oder L ausgeführt. Diese Daten müssten in internen Zustandsbits gespeichert werden, da die L-Daten verschwinden können, sobald La+ erfolgt. Diese zusätzlichen internen Zustandsbits sind unerwünscht, daher folgt La↑ R↑.
  • Es gibt neun gültige Umordnungen, die jeweils nachfolgend angegeben sind:
    Figure 00090001
  • Es sind zwei Zustandsvariablen nötig, um die MSFB-Umordnung zu implementieren. Die Umordnungen PCFB, B1, B2, B3, B4 und B5 benötigen alle eine Zustandsvariable en (kurz für Enable), wobei en↓ nach La↓ und en↑ vor dem Ende eingeführt werden.
  • Bei der Wahl, welche dieser Umordnungen die beste ist, kann davon ausgegangen werden, dass das Ziel weniger Transistoren und ein schnellerer Betrieb ist. Gemäß dieser Metrik sind die vorliegenden Erfinder der Ansicht, das B3, B4 und B5 gegenüber PCFB immer unterlegen sind. Sie benötigen alle dieselbe Zustandsvariable. Sie produzieren nur eine Teilmenge des PCFB-Kompromisses, mit zusätzlichen Wartezeiten, die evtl. unnötig sind. Diese Wartezeiten addieren zusätzliche Transistoren und verlangsamen die Schaltungen im Vergleich zu PCFB. Sie verlangsamen auch die Schaltung im Vergleich zu PCFB, so dass zusätzliche Transistoren hinzukommen.
  • B1 und B2 sind PCFB auch sehr ähnlich, mit der Ausnahme, dass sie mehr Sequenzierung haben. Diese zusätzliche Sequenzierung vereinfacht jedoch die Produktionsregel für en: auf ¬R→en↑ anstatt ¬R^¬La→en↑ im Fall von PCFB. Die Erfinder sind daher nicht der Ansicht, dass dies PCFB immer unterlegen ist. Aufgrund der zusätzlichen Sequenzierung und der zusätzlichen Transistoren anderswo werden diese Umordnungen jedoch nur selten, wenn überhaupt jemals, besser als PCFB sein.
  • MSFB hat die geringstmögliche Sequenzierung aller dieser Umordnungen. MSFB braucht jedoch zwei Zustandsvariablen und hat kompliziertere Produktionsregeln als PCFB. Sie hat evtl. einen Geschwindigkeitsvorteil, da sie zulässt, dass R↓ etwas früher stattfindet. Wenn man Übergänge zählt, stellt sich heraus, dass der nächste Puffer in der Pipeline (wenn er ähnlich umgeordnet ist) Ra überhaupt erst dann hebt, wenn La↓ erfolgt. Dies ist möglicherweise überhaupt kein Vorteil.
  • Damit bleiben noch drei interessantesten Umordnungen, WCHB, PCHB und PCFB. Die Namen sind von den Eigenschaften der Schaltungsimplementationen abgeleitet. WC bedeutet Schwachzustandslogik an, PC zeigt eine Precharge-Logik an, HB bedeutet einen Halbpuffer (Reserve ½) und FB einen Vollpuffer (Reserve 1).
  • In den Halbpufferumordnungen kann nur jede zweite Stufe einen Token auf ihrem Ausgangskanal haben, da ein Token auf diesem Kanal verhindert, dass die vorherige Stufe einen Ausgangstoken erzeugt. In der Praxis hat jede dieser Umordnungen Vorteile für bestimmte Anwendungen, daher sind alle nützlich. Mit eingefügten Zustandsvariablen sind die drei besten Umordnungen wie folgt:
    Figure 00110001
  • Man beachte, dass die ersten drei Teile der Umordnung gleich sind.
  • 1A zeigt ein Kasten- und Pfeilediagramm der Standardkomponenten einer PCHB- oder PCFB-Zelle. Die verschiedenen Teile der Schaltung können als Logik, Eingangsvollzug, Ausgangsvollzug und Enable-Erzeugung angesehen werden. Die Logik ist als Precharge-Zweischienen-Dominologik mit zwei Aktivierungsgates dargestellt, wobei das interne Enable und das Ausgangs-Enable von der nächsten Zelle in der Pipeline zurückkommen. Auf die invertierte Logik folgen Inverter, um sie zur normalen Richtung zurückzubringen. Die Vollzugsschaltungen sind standardmäßige NOR- oder NAND-Gates und C-Element-Baumstrukturen, die die Gültigkeit der Eingänge und die Gültigkeit der Ausgänge berechnen. Schließlich erzeugt die „Enable"-Schaltung die Eingangsquittung(en) und das interne Enable (en) der Zelle. PCHB und PCFB unterscheiden sich nur in der genauen Ausführung dieser Enable-Schaltung.
  • Logik mit Pufferung
  • Man nehme an, es soll eine Einheit mit CSP der folgenden Form implementiert werden:
    Figure 00110002
  • Dabei bedeutet A?a den Empfang von Daten a auf Kanal A und y!g bedeutet das Senden von Daten g auf Kanal y.
  • Bei jedem Zyklus empfängt P einige Eingänge und sendet dann von diesen Eingängen berechnete Funktionen aus. Die Kanäle A, B, X und Y müssen einige Daten codieren. Dies erfolgt gewöhnlich durch die Verwendung von Sätzen von 1-von-N-Schienen für jeden Kanal. So könnte man z.B. zum Senden von zwei Bits zwei 1-von-2-Schienen mit einer Quittung oder eine 1-von-4-Schienen mit einer Quittung verwenden.
  • Als Notationskonvention wird eine Schiene durch den Kanalnamen mit einer Hochstellung für die 1-von-N-Leitung, die aktiv ist, und einer Tiefstellung für die Gruppe von 1-von-N-Leitungen identifiziert, zu der er gehört (wenn sich im Kanal mehr als eine Gruppe befindet). Die entsprechende Quittung ist der Kanalname mit einer Hochstellung „a" oder eine Hochstellung „e", wenn sie im umgekehrten Sinne verwendet wird.
  • Wie im Falle des Einschienenpuffers, könnte P durch Expandieren jeder Kanalkommunikation zu einer Quittungsaustauscherweiterung expandiert werden. Eine direkte Implementation dieser Quittungsaustauscherweiterung verlangt Zustandsvariablen für die Variablen a, b und mehr. Sie könnte eine äußerst große und langsame Schaltung produzieren. Es wird etwas Umordnen gewünscht. Die PCFB-, PCHB- und WCHB-Umordnungen sind die nützlichsten.
  • Die Korrespondenz zwischen den Einschienen„Schablonen" für PCFB, PCHB und WCHB und ein Vorgang wie P lauten wie folgt. L und La repräsentieren alle Eingangsdaten und Quittungen. R und Ra repräsentieren alle Ausgangsdaten und Quittungen. [L] zeigt eine Wartezeit für die Gültigkeit aller Eingänge, [¬L] eine Wartezeit für die Neutralität aller Eingänge an. [¬R] zeigt eine Wartezeit an, bis alle Ausgangsquittungen falsch sind, [Ra] zeigt eine Wartezeit an, bis alle Ausgangsquittungen wahr sind. La↑ bedeutet, dass alle Eingangsquittungen parallel wahr gemacht werden, und La↓ zeigt an, dass sie falsch gemacht werden. R↑ bedeutet, dass alle Ausgänge parallel in ihre gültigen Zustände gesetzt werden. Wenn R↓ erfolgt, dann bedeutet dies, dass alle Ausgänge in ihre neutralen Zustände gesetzt werden. Wenn R↑ auftritt, dann bedeutet dies, dass bestimmte Schienen der Ausgänge wahr gemacht werden, je nachdem, welche Schienen von L wahr sind. Dies expandiert R↑ zu einem Satz von parallel ablaufenden Exklusiv-Auswahlstatements.
  • Die Erfinder haben erkannt, dass diese einfache Umsetzung leider mehr Sequenzierung einfügen kann als nötig. Von den verschiedenen Aktionen, die parallel auftreten, wie z.B. das Gültigsetzen aller Ausgänge (R↑), könnte jede Aktion auf nur einen Teil des vorangegangenen Schutzes ([¬Ra ∧ L]) warten müssen. Zum Anheben von X0↑ oder X1↑ muss [¬Xa] geprüft, [¬Ya] aber nicht geprüft werden. Ebenso könnten die Semikolons zwischen Aktionen (R↑; La↑) zu einer Übersequenzierung führen. Dies lässt sich aber bei fortgesetzter Benutzung der Quittungsaustausch-Erweiterungssprache nicht leicht beheben. So könnte es beispielsweise in der Sequenz X↑, Y↑; Aa↑, Ba↑ nötig sein, dass Aa↑ auf [X] wartet, nur (wenn Y↑ den Wert von A nicht benutzt hat) während Bat auf [X ∧ Y] warten müsste. Dieser Fall könnte als X↑, Y↑, [X]; Aa↑), [X ∧ Y]; Ba↑) geschrieben werden. Dies könnte jedoch die geschriebene Software schwerer verständlich machen. Wenn die nächsten Aktionen nicht voll sequenziert werden, dann könnte es noch schlimmer werden. Im Grenzfall spiegelt die Quittungsaustaucherweiterung den eigentlichen Produktionsregelsatz (PRS) einfach wieder. Um das Problem zu umgehen, könnte eine Quittungsaustauscherweiterung verwendet werden. Diese könnte etwas übersequenziert sein, mit dem Verständnis, dass die unnötige Sequenzierung bei der Kompilation zu Produktionsregeln optimiert wird.
  • Die PCFB-Version eines P mit Zweischienenkanälen würde daher wie folgt lauten:
    Figure 00140001
  • Bei dieser Quittungsaustauscherweiterung sind f0, f1, g0 und g1 boolesche Erweiterungen in den Datenschienen der Eingangskanäle. Sie werden von f und g der CSP abgeleitet und zeigen die Bedingungen zum Heben der verschiedenen Datenschienen der Ausgangskanäle an. Man beachte, dass jeder Ausgangskanal nur auf seine eigene Quittung wartet, was weniger sequenziert ist, als es eine direkte Umsetzung der PCFB-Schablone wäre.
  • In P ist ersichtlich, dass Aa und Ba dazu neigen, etwa gleichzeitig zu schalten. Sie könnten tatsächlich zu einem einzelnen ABa kombiniert werden, das auf die Konjunktion der Schutzsignale auf Aa und Ba warten würde. Ein Kombinieren der Quittungen neigt dazu, die Fläche der Schaltung zu reduzieren, könnte sie aber verlangsamen. Die beste Entscheidung ist von den Umständen abhängig.
  • Beispiele für Logik mit Pufferung Um den vorherigen Abschnitt in die Praxis umzusetzen, werden mehrere CSP-Prozesse mit derselben Form wie P zu Pipeline-strukturierten Schaltungen kompiliert. Der einfachste CSP-Puffer, der Daten codiert, hat einen Doppelschieneneingang L und einen Doppelschienenausgang R.
  • Die CSP ist *[L?x; R!x]. Drei Quittungsaustauscherweiterungsumordnungen für diesen Prozess lauten:
    Figure 00150001
  • Nach der Blasenumordnung (die die Verwendung der invertierten Quittungen Le und Re nahelegt) folgen die Produktionsregeln für WCHB-BUF. Der Schaltplan für einen WCHB ist in 2 dargestellt.
  • Figure 00150002
  • Die anderen Quittungsaustauscherweiterungen können ebenso ausgeführt werden, aber sie sind beide etwas größer. Für diese Umordnung implizieren Gültigkeit und Neutralität der Ausgangsdaten R die Neutralität der Eingangsdaten L. Logik mit dieser Eigenschaft wird als „weck condition" (Schwachzustand) bezeichnet. Es bedeutet, dass L nirgendwo anders als in R geprüft zu werden braucht. Auch WCHB erhält einige seine Semikolons kostenlos implementiert. Das Semikolon zwischen La↑; [Ra ∧ ¬L] wird durch die Umgebung implementiert, da dies das implizite Semikolon am Ende der Schleife ist. WCHB hat einige inhärente Vorzüge. Es stellt sich jedoch heraus, dass WCHB zwar gut für Puffer funktioniert, aber die "Schwachzustand"-Anforderung kann Probleme mit anderen Schaltungen verursachen.
  • Diese WCHB_BUF Blasenumordnung hat zwei Übergänge Vorwärtslatenz und drei Übergänge „Rückwärts"-Latenz (für den Pfad von der rechten Quittung zur linken Quittung). Wenn man dies für den gesamten Quittungsaustausch kombiniert, dann ergeben sich 2 + 3 + 2 + 3 = 10 Übergänge pro Zyklus.
  • Es können zusätzliche Inverter zu WCHB_BUF hinzugefügt werden, um 10 Übergänge pro Zyklus zu erhalten. Diese Inverter können den Durchsatz tatsächlich beschleunigen, trotz der höheren Übergangszahl, weil Inverter eine hohe Verstärkung haben. Ebenso würden die 6 Übergänge pro Zykluspuffer die Richtungen der Daten und Quittungen nach jeder Stufe umkehren, was äußerst unpraktisch ist, wenn unterschiedliche Pipeline-strukturierte Zellen erstellt werden. Als Standardpraxis haben die meisten Pipelinestrukturierten Logikzellen zwei Übergänge mit Vorwärtslatenz, aber kompliziertere Schaltungen haben 5, 7 oder sogar 9 Übergänge Rückwärtslatenz, was 10 bis 22 Übergänge pro Zyklus ergibt (natürlich immer gerade Zahlen).
  • Wir betrachten als Nächstes einen Volladdierer mit der CSP *[A?a, B?b, C?c; S!XOR(a, b, c), D!MAJ(a, b, c)]. Die Kanäle A, B, C, S und D sind doppelschienig. Die Quittungen für A, B und C werden zu einem einzelnen Fe kombiniert. Von Anfang an werden invertierte Quittungen benutzt. Die drei Quittungsaustauscherweiterungsumordnungen lauten:
    Figure 00170001
  • In der WCHB_FA impliziert die Gültigkeit der Ausgänge S und D die Gültigkeit der Eingänge, weil S alle A, B und C prüfen muss. Der Neutralitätstest der Eingänge wird zwischen S↓ und D↓ aufgeteilt. Dies funktioniert, solange sowohl S↓ als auch D↓ die Neutralität von wenigstens einem Eingang vollständig prüfen und beide Schienen von S und D auf dieselbe Erweiterung warten. In PCHB_FA und PCFB_FA ist die Erweiterung für die Neutralität der Eingänge offensichtlich zu groß, um sie als eine einzelne Produktionsregel zu implementieren. Stattdessen muss der Neutralitätstest in mehrere Operatoren zerlegt werden. Die gewöhnliche Zerlegung ist 'NOR'-Gates für jeden Doppelschieneneingang, gefolgt von einem 3-Eingang-C-Element. Fe↓ muss jetzt auf die Gültigkeit der Eingänge warten, einfach um die internen Übergänge zu quittieren. Dies bedeutet jedoch, dass die Logik für S und D die Gültigkeit der Eingänge nicht mehr voll zu prüfen braucht; sie braucht kein Schwachzustand zu sein.
  • Die blasenumgeordneten und zerlegten Produktionsregeln für WCHB_FA lauten:
    Figure 00180001
  • Der Schaltplan ist in 3 zu sehen. Die Pullup-Logik für S0, S1, D0 und D1 hat 4 Transistoren des P-Typs in Reihe. Dies kann recht schwach sein, aufgrund der geringeren Mobilität von Löchern. Andere WCHB-Schaltungen können noch schlechter sein. Da alle Eingänge vor dem Reset der Ausgänge auf Neutralität geprüft werden, hätte ein Vorgang mit drei Eingängen und nur einem Ausgang zur Folge, dass 7 p-Transistoren in Reihe diesen Ausgang zurücksetzen.
  • Die vorliegenden Systeme arbeiten mit den „Precharge-Logik"-Umordnungen PCHB_FA oder PCFB_FA. Diese testen die Neutralität der Eingänge an einer anderen Stelle, die sich leichter in verwaltbare Gatter zerlegen lässt, und verlangsamen die Vorwärtslatenz nicht. Die PCHB_FA Umordnung hat die folgenden Produktionsregeln:
    Figure 00190001
  • Diese Schaltung kann dadurch beschleunigt werden, dass zwei Inverter zu Fe und zwei weitere zum Erzeugen des intern verwendeten Fe addiert werden (das jetzt en genannt wird). Diese Schaltung ist in 4 zu sehen.
  • Eine PCFB_FA Umordnung hätte nur geringfügig andere Produktionsregeln:
    Figure 00200001
  • Wenn man die drei Volladdierer-Umordnungen vergleicht, dann hat WCHB_FA nur 10 Übergänge pro Zyklus, während PCHB_FA 14 und PCFB_FA 12 hat (7 in der Set-Phase, 5 in der Reset-Phase, da L und R Quittungsaustausche parallel zurückgesetzt werden). WCHB_FA hat zwar weniger Transistoren, aber um eine sinnvolle Geschwindigkeit zu erzielen, müssen die 4 P-Transistoren in Reihe sehr groß sein. Trotz der geringeren Übergangszahl der Fliese WCHB_FA sind sowohl PCHB_FA als auch PCFB_FA im Hinblick auf Durchsatz und Latenz erheblich schneller. PCFB_FA ist die schnellste von allen, da sie stark auf n-Transistoren beruht und in der Reset-Phase 2 Übergänge spart. PCFB_FA kann jedoch größer sein als PCHB_FA, aufgrund der zusätzlichen Zustandsvariablen en und dem zusätzlichen Vollzug SDV. Wenn die Geschwindigkeit des Volladdierers nicht wesentlich ist, dann scheint PCHB_FA die beste Wahl zu sein.
  • Die WCHB Umordnung ist im Allgemeinen nur für Puffer und Kopien ([L?x; R!x, S!x]) am besten. PCHB ist für die meisten Anwendungen das Arbeitspferd; sie ist sowohl klein als auch schnell. Wenn außergewöhnliche Geschwindigkeit verlangt wird, dann dominiert PCFB. Sie ist auch besonders gut beim Vollziehen von 1-von-N-Codes, wo N sehr groß ist, da der Vollzug durch eine Schaltung erfolgen kann, die wie eine „Tied-or Pulldown" ist, im Gegensatz zu vielen Kombinationslogikstufen. Die Umordnung kann tatsächlich vermischt werden, wobei jeder Kanal in der Zelle eine andere benutzt. Dies ist im Allgemeinen dann nützlich, wenn eine Zelle an einigen Eingängen mit PCHB rechnet, aber auch einige Eingänge direkt mit WCHB auf Ausgänge kopiert. In diesem Fall ist die Neutralitätserfassung für die WCHB-Ausgänge nur ein p-Gate, was nicht schlechter ist als ein zusätzliches en-Gate.
  • Eine andere übliche Logikschaltungsklasse arbeitet mit gemeinsamen Steuereingängen zum Verarbeiten von Multibit-Wörtern. Dies ist ähnlich wie ein Volladdierer. Die Steuerung ist lediglich ein anderer Eingang, der zufällig einen großen Fallout zu vielen Ausgangskanälen hat. Da die Ausgänge nur spärlich von den Eingängen abhängig sind (gewöhnlich mit einer Bit-zu-Bit-Entsprechung), wird die Zahl der Gates in Reihe in der Logik häufig nicht zu groß. Wenn die Zahl der Bits jedoch groß ist, z.B. 32, dann erfordert der Vollzug aller Eingänge und Ausgänge viele Stufen in einer c-Element-Baumstruktur, was die Zykluszeit erhöht, wie auch die Last auf dem Broadcast der Steuerdaten. Zur Erzielung einer Datenpfadlogik mit hohem Durchsatz kann es besser sein, den Datenpfad in verwaltbare Portionen (vielleicht 4 oder 8 Bits) zu zerlegen und gepufferte Kopien der Steuertokens zu jeder Portion zu senden. Dadurch wird die Zykluszeit verkürzt, aber dies ändert nicht die High-Level-Bedeutung, mit der Ausnahme, dass zusätzliche Reserve eingeführt wird.
  • Konditionelles Erzeugen von Ausgängen
  • Die im vorangegangenen Abschnitt erörterten Zellen können zwar als Turing-komplett angezeigt werden (sie können zu einer VonNeumann-Statusmaschine gemacht werden, wobei einige Ausgänge durch Puffer zurück zum Speicherzustand gemeldet werden), aber sie sind für viele Anwendungen eindeutig ineffizient. Eine sehr nützliche Erweiterung ist die Fähigkeit, eine Kommunikation auf einem Kanal auf einem bestimmten Zyklus zu überspringen. Man stellt fest, dass dies nur ein paar geringfügige Modifikationen am bisher vorgestellten Ansatz erfordert.
  • Man nehme an, der Prozess vollzieht höchstens eine Kommunikation pro Zyklus auf den Ausgängen, aber empfängt immer alle seine Eingänge. Die CSP wäre:
    Figure 00220001
  • Wie oben, kann dies wie WCHB, PCHB oder PCFB umgeordnet werden. Die Auswahlstatements für die Ausgänge expandieren in Exklusiv-Auswahlen zum Setzen der Ausgangsschienen, plus ein neuer Fall, bei dem überhaupt kein Ausgang auf dem Kanal produziert wird. Eine Doppelschienenversion von P1 mit einer PCFB-Umordnung lautet:
    Figure 00230001
  • Man beachte, dass das Rücksetzen der Ausgangskanäle und Y die Fälle aufnehmen muss, in denen diese Kanäle nicht benutzt wurden. Da sie keine Ausgänge erzeugen, dürfen sie nicht auf die Quittung warten. Das Addieren in den ¬X0 ∧ ¬X1 Termen lässt es zu, die Wartezeit leer zu vollziehen. Dies erzeugt tatsächlich keine Produktionsregeln. Diese Quittungsaustauscherweiterung kann zu Produktionsregeln kompiliert werden, aber es gibt einige heikle Details.
  • Eine interessante Wahl entsteht aus der Verwendung des Skip (Sprung). Ein Skip verursacht keine sichtbare Zustandsänderung, daher müssen die nächsten Statements in Folge (Aa↑, Ba↑, ...) tatsächlich direkt auf die boolesche Expansion für ¬do_x(A, B, ...) und -do_y(AB, ...) zusätzlich zu den Ausgangsschienen X0, X1, Y0, Y1 blicken.
  • Die Vollzugsbedingung zum Setzen der Ausgänge wäre en ∧ (X0vX1v¬do_x(A, B, ...)) ∧ (Y*vY1v¬do_y(A, B, ...)). Diese Expansion kann jedoch nicht hier in den Schutzfunktionen für Aa↑ und Ba↓ verwendet werden, denn wenn einer zuerst auslöst, dann könnte er den anderen destabilisieren. (Dies würde dann funktionieren, wenn Aa und Ba zu einer Quittung kombiniert würden.)
  • Ein weiterer Ansatz ist die Einführung einer neuen Variablen, die die Fälle ¬do_x und ¬do_y repräsentiert. Angenommen, die Skip's werden jeweils mit no_x↑ und no_y↑ ersetzt und no x↓ werden zu X0↓, X1↓ und no y↓ zu Y0↓, Y1↓ addiert. Jetzt werden die Produktionsregeln einfach so erzeugt, als wenn X und Y 1-von-3-Kanäle anstatt 1-von-2-Kanäle wären, mit der Ausnahme, dass die zusätzliche Schiene nicht die richtige Quittung prüft oder in der Tat die Zelle verlässt.
  • Schließlich gibt es viele Fälle, bei denen eine Erweiterung der Ausgänge ausreicht, um die Ausgangsvollzugserweiterung ohne Bezug auf die Eingänge zu erzeugen. Wenn beispielsweise ein Eingang benutzt wird, um zu entscheiden, ob ein bestimmter Ausgang benutzt wird, aber auch auf den anderen Ausgang kopiert wird, dann könnte der kopierte Ausgang zum Prüfen des Vollzugs des optionalen Ausgangs verwendet werden. Ebenso, wenn zwei Ausgangskanäle exklusiv benutzt werden, so dass der eine oder der andere in jedem Zyklus benutzt wird, dann ist der Vollzug für beide lediglich das ODER des Vollzugs des anderen.
  • Um diese Erörterung in die Praxis umzusetzen, wird ein Split implementiert, ein fundamentaler Leitwegprozess, der einen Steuereingang zum Leiten eines Dateneingangs zu einem von zwei Ausgangskanälen benutzt. Die einfache Einzelbit-CSP ist *[S?s, L?x; [¬s→A!x[]s→B!x]]. Die PCHB-Umordnung lautet:
    Figure 00240001
  • Die ersten beiden Auswahlstatements werden bekanntlich beendet, wenn A0vA1vB0vB1v. Dies wird als Schutz für SLe↓ benutzt. Die blasenumgeordneten Produktionsregeln lauten:
    Figure 00250001
  • Die Schaltung ist in 5 dargestellt.
  • Konditionelles Lesen von Eingängen
  • Es ist auch äußerst nützlich, Eingänge konditionell lesen zu können. Normalerweise wird die Bedingung auf einem separaten unkonditionellen Kanal eingelesen, aber im Allgemeinen könnte es jede Erweiterung der Schienen der Eingänge sein. Eine CSP-Schablone für den Typ von Zelle wäre dies [sic]:
    Figure 00250002
  • Das A in diesem Kontext bezieht sich auf eine Probe des Wertes von A, nicht nur auf die Verfügbarkeit. Dies ist in der CSP nicht Standard, sondern eine nützliche Erweiterung, die sich in der Quittungsaustauscherweiterung leicht implementieren lässt. Grundsätzlich können die Bools für do_a, do_b, no_a und no_b die Schienen von A und B prüfen, um zu entscheiden, ob sie tatsächlich von den Kanälen empfangen sollen. Die Auswahlstatements werden unterbrochen, bis entweder do a oder no a wahr ist. Diese Erweiterungen müssen stabil sein; d.h. wenn zusätzliche Eingänge auftreten, dürfen sie deshalb nicht falsch werden.
  • Für die Quittungsaustauscherweiterung untersuchen die f und g Erweiterungen die Eingänge direkt, anstatt einer internen Variablen „unbenutzt" zuzuordnen. Die Ergebnisse der Erweiterungen do_a/no a und do_b/no b müssen in internen Variablen u und v zwischengespeichert werden, so dass A und B parallel quittiert werden können, ohne die Schutzfunktionen von do a und dergleichen zu destabilisieren. Die PCFB-Version der Quittungsaustauscherweiterung lautet:
    Figure 00260001
  • Ebenso wie die konditionelle Ausgangs-Quittungsaustauscherweiterung werden die Schutzfunktionen für Aa↓ und Ba↓ geschwächt, um den leeren Fall zuzulassen. Der Sprung kann wieder ein Problem verursachen, da keine Zustandsänderung erfolgt. Mit den Variablen u0 und v0 ist es jedoch möglich, den Sprung zu inferieren und den richtigen Schutz für en zu erzeugen. In der Reset-Phase müssen u und v in den neutralen Zustand zurückkehren. Es gibt mehrere Orte, um dies unterzubringen, aber die symmetrische Platzierung, die sie mit Aa↓ und Ba↓ sequenziert, vereinfacht PRS.
  • In vielen Fällen kann diese allgemeine Schablone stark vereinfacht werden. Wenn beispielsweise ein Satz von unkonditionellen Eingängen die Bedingungen zum Lesen der anderen komplett steuert, dann können diese als „Steuer"-Eingänge angesehen werden. Wenn das Heben der Quittungen der verschiedenen Eingänge so sequenziert wird, dass die konditionellen den Steuereingängen vorangehen, dann können die Variablen u und v eliminiert werden, ohne dass Stabilitätsprobleme verursacht werden. Ebenso können in einigen Fällen u und v durch eine Erweiterung der Ausgänge substituiert anstatt separat gespeichert zu werden.
  • Als konkretes Beispiel kehrt die Schaltung für den Merge-Prozess die Teilung des letzten Abschnitts durch konditionelles Lesen von einem von zwei Dateneingangskanälen (A und B) auf den einzelnen Ausgangskanal R auf der Basis eines Steuereingangs M um. Die CSP ist *[M?m; [¬m→A?x[]m→B?x]; X!x]. Hier wird die Vereinfachung der Quittierung der Dateneingänge A und B vor dem Steuereingang M benutzt. Die PCHB-Umordnung lautet:
    Figure 00270001
  • Eine hier verwendete subtile Vereinfachung ist die, dass Ae↑ und Be↑ veranlasst werden, die entsprechenden ¬M0 und ¬M1 zu prüfen. Dies reduziert den Schutzzustand für Me↑ und macht die Reset-Phase mit der Set-Phase symmetrisch. Es folgt eine gewisse Zerlegung zum Addieren von AV, BV und XV, um Validitäts- und Neutralitätschecks auszuführen. Nach der Blasenumordnung lautet PRS:
    Figure 00280001
  • Wie für PCHB-Umordnung üblich, erfolgt die Arbeit in einem großen Netzwerk von n Transistoren. Die Schaltung ist in 6 dargestellt.
  • Interner Zustand
  • Eine weitere Erweiterung dieses Design-Stils ist die Fähigkeit, den internen Zustand von einem Zyklus zum nächsten zu speichern. Eine CSP-Schablone für einen Zustandshalteprozess mit der Zustandsvariablen s lautet:
    Figure 00280002
  • Dies wird auf eine Reihe verschiedener Weisen implementiert. Die einfachste, die keine neuen Schaltungen erfordert, besteht darin, einen Ausgang einer normalen, Pipeline-strukturierten Zelle zurück um einen Eingang über mehrere Pufferstufen zu speisen. Einer dieser Feedback- Puffer wird initialisiert und enthält einen Token mit dem Wert des Anfangszustands. Es müssen genügend Puffer verwendet werden, um eine Blockierung zu vermeiden, und es werden noch mehr benötigt, um den Durchsatz zu maximieren. Daher kann diese Lösung recht groß sein. Für einen Steuerschaltkomplex, bei dem Fläche von geringerer Bedeutung ist, reicht dies häufig aus. Als zusätzlicher Vorzug kann der Vorwärtsspeiseteil der Zustandsmaschine als mehrere sequentielle Stufen von Pipeline-strukturierter Logik implementiert werden, was die Zahl der nötigen Feedback-Puffer reduziert und auch weitaus kompliziertere Funktionen zulässt.
  • Abgesehen von der Verwendung von Feedback-Puffern, gibt es drei Hauptansätze zur Zustandsbeibehaltung mit zunehmender Generalität und Komplexität. Zunächst speichern Pipeline-Strukturierungskanäle an sich den Zustand. Diese Werte werden gewöhnlich in der Pipeline weitergeleitet und passieren jede Stufe nur einmal. Wenn eine Stufe jedoch ihren Eingang benutzt, aber nicht quittiert, dann ist der Eingangswert weiterhin im nächsten Zyklus. Im Wesentlichen wird der Token gestoppt und viele Male abgetastet. In der CSP kann dies mit der Probe des Wertes des Kanals ausgedrückt werden. Es wird ein konditioneller Schaltungseingangstyp verwendet, der einen Eingang zum Ereugen von Ausgängen ohne Quittierung dieses Eingangs benutzt. Diese Technik kann für bestimmte Probleme verwendet werden. Zum Beispiel könnte ein Loop-Unroller einen Befehl auf dem Eingangskanal nehmen und viele Kopien davon auf einem Ausgangskanal auf der Basis eines Steuereingangs produzieren. Dieser Typ von Zustandsvariable kann natürlich niemals gesetzt werden, er kann nur ein oder mehrere Male von einem Eingang gelesen werden.
  • Wenn die Zustandsvariable exklusiv in einem Zyklus gesetzt oder benutzt wird, dann reicht eine einfache Modifikation der standardmäßigen Pipelinestrukturierten Umordnung aus. Die Zustandsvariable s wird einem Zweischienenwert zur selben Zeit zugewiesen, wie die Ausgänge erzeugt werden. In der Reset-Phase bleibt er stabil. Im Gegensatz zu den gewöhnlichen Zurück-zu-null-Variablen geht s nur kurz durch Neutralität zwischen gültigen Zuständen über. Wenn s sich nicht ändert, dann geht es überhaupt nicht durch einen Neutralzustand. Die CSP für dieses Verhalten wird genau wie P3 ausgedrückt, mit der Ausnahme, dass das Semikolon vor der Zuweisung zu s durch ein Komma ersetzt wird. Dies wird durch die Annahme ermöglicht, dass s sich nur dann ändert, wenn die Ausgänge X und Y nicht davon abhängen; dadurch werden Stabilitätsprobleme vermieden.
  • Die einzige schwierige Sache beim Ableiten der Quittungsaustauscherweiterung dafür ist das Zuweisungsstatement. Grundsätzlich erfolgt die Zuweisung dadurch, dass zunächst die entgegengesetzte Schiene gesenkt und dann die gewünschte Schiene gehoben wird. Dadurch wird garantiert, dass die Variable beim Ändern durch neutral geht und auch eine gute Blasenumordnung erzielt wird.
  • Vollzugserfassung dieser Zuweisung ist grundsätzlich äquivalent mit dem Prüfen, dass der Wert von s den Eingängen zu s entspricht. So wird s:x zu [x0→s↓; s1↑[]x1→s0↓s1↑]; [x0 ∧ s0vx1 ∧ s1]. Die PCFB-Version der Quittungsaustauscherweiterung für diesen Typ von Zustandshalteprozess lautet:
    Figure 00300001
  • Es ist häufig wünschenswert, die Vollzugserfassung der Zustandsvariablen in eine 4-Phasen-Vollzugsvariable sV zu zerlegen, die den Vollzug der Zuweisung auf der Set-Phase erfasst und in der Reset-Phase gelöscht wird. Dies macht es leichter, mehrere Zustandsvariablen zu haben. Eine bemerkenswerte Sache ist, dass die Zuweisungssequenz und der Vollzug 3 Übergänge haben, wenn sich der Zustand ändert, und daher häufig mehr Übergänge haben als ein typischer Ausgangskanal. Bei der Reset-Phase oder wenn der Zustand unverändert bleibt, erfordert dies jedoch nur 1 Übergang. Ein anderer Vorbehalt ist, dass die hier gezeigte Zustandsvariable am besten nur für doppelschienige 1-Bit-Zustandsvariablen funktioniert.
  • Als ein Beispiel für diesen Typ von Zustandsvariablen betrachte man den "Register"-Prozess x: = 0; *[C?c; [c→R!x[]¬c→L?x]]. Dieser verwendet einen Steuerkanal C, um zu entscheiden, ob das Zustandsbit x über die Ein- und Ausgangskanäle L und R gelesen oder geschrieben werden soll. Das Zustandsbit wird offensichtlich ausschließlich auf einem beliebigen gegebenen Zyklus benutzt oder gesetzt. Dieser Vorgang kommuniziert auch konditionell auf L und R.
  • Die PCHB-Version der Quittungsaustauscherweiterung lautet:
    Figure 00310001
  • PRS hat mehrere heikle Merkmale. Aufgrund des Exklusiv-Musters der Kommunikationen können die Regeln für Ce vereinfacht werden. Es folgt das zerlegte und blasenumgeordnete PRS. Die Schaltung ist in 7 dargestellt.
  • Figure 00320001
  • Die allgemeinste Form der Zustandshaltezelle ist eine, bei der die Zustandsvariable in einem beliebigen Zyklus benutzt und gesetzt werden kann. Dazu ist es notwendig, separate Speicherstellen für den neuen Zustand und den alten Zustand zu haben. Dies kann durch Einführen einer zusätzlichen Zustandsvariablen t erfolgen, die den neuen Zustand hält, bis s benutzt wird. Die CSP hierfür lautet:
    Figure 00320002
  • Wenn dies in eine Quittungsaustauscherweiterung umgewandelt wird, dann gibt es mehrere Auswahlmöglichkeiten dafür, wo die Zuweisung s: = t gesetzt werden soll. Es ist am besten, diese Zuweisung in der Reset-Phase der Kanalquittungsaustausche durchzuführen. Nach der Zuweisung s: = t kehrt t genau wie ein Kanal zu neutral zurück. Die PCFB-Version dieses Zellentyps ist:
    Figure 00330001
  • Die Zuweisungsstatements können wie zuvor zu Produktionsregeln kompiliert werden. Von besonderem Interesse ist die Kompilation der Sequenz [t0→s1↓; s0↑; t0↓[]t1→s0↓; s1↑; t1↓]. Aufgrund von Korrelationen der Daten wird dies zu den einfachen (blasenumgeordneten) Produktionsregeln kompiliert:
    Figure 00330002
  • s0 und s1 sollten auch auf den richtigen Anfangswert zurückgesetzt werden. Der Vollzug dieser Sequenz ist der normale Check für zu [sic] t 0 t 1. Wenn sich die Zustandsvariable nicht ändert, dann braucht diese Sequenz nur 1 Übergang, da die ersten 4 Regeln leer sind. Wenn sich der Zustand ändert, dann sind 3 Übergänge nötig. Dies ist 2 Übergänge länger als das Reset eines normalen Ausgangskanals, daher sollte dies so angesehen werden, dass die Low-Level-Produktionsregelzerlegung optimiert wird. Dieser Strukturtyp funktioniert nur dann gut, wenn s und t doppelschienig sind, obwohl mehrere Zweischienen-Zustandsvariablen parallel zum Codieren mehrerer Zustände verwendet werden können.
  • Zusätzlich wurden Erweiterungen zu diesen Zellen erläutert, die einen konditionellen Empfang von Eingängen und ein konditionelles Senden von Ausgängen erlauben. Schließlich werden verschiedene Ansätze zum Speichern des internen Zustands in den Zellen offenbart.
  • Der Stand der Technik bestand darin, nicht Pipelinestrukturierte Schwachzustandslogik zu verwenden. Es wurden zusätzliche Puffer oder Register zwischen Logikbausteinen hinzugefügt, um etwas Pipeline-Strukturierung hinzuzufügen. Dieser Ansatz war kleiner, aber wesentlich langsamer. Die zusätzlichen Puffer erhöhten auch die Vorwärtslatenz. Im Wesentlichen sollten sie, innerhalb der Grenzen der Verwendung von mehr und mehr Puffern, irgendwann in die Logik integriert werden und alle Zellen sollten „maximal" Pipeline-strukturiert werden. Das heißt, jeder diskrete Logikzustand erhält seine eigene Pipeline-Strukturierung, so dass keine weitere Reserve hinzugefügt werden könnte, ohne einfach überschüssige Puffer zu addieren. In der Praxis belaufen sich die Kosten für eine solche feine Pipeline-Strukturierung auf eine 50 bis 100%ige Flächenzunahme gegenüber einer völlig nicht Pipelinestrukturierten Schaltung. Sie reduziert die Latenz (da keine separaten Puffer hinzugefügt werden) und erhöht natürlich den Durchsatz. Bei dieser natürlichen Grenze der Pipeline-Strukturierung erfordern alle Quittungsaustausche zwischen Nachbarzellen eine geringe Zahl von Übertragungen pro Zyklus, typischerweise 14 bis 18. Die internen Zyklen halten gewöhnlich Schritt. Dies ergibt einen sehr hohen Spitzendurchsatz (vergleichbar mit 14 Übergängen pro Zyklus an Hyper-Pipeline-strukturierten synchronen Designs wie dem DEC Alpha), lässt sich aber leichter zusammensetzen. Eine Zusammensetzung schneller Pipeline-strukturierter Zellen in verschiedenen Mustern kann weitaus niedrigere Systemdurchsätze ergeben, wenn nicht besondere Maßnahmen getroffen werden, um die Latenzen sowie die Durchsätze der Einheiten abzustimmen.
  • Mehrere einfache Modifikationen an diesen Pipelinestrukturierten Schaltungsschablonen sind ebenfalls nützlich und neu.
  • 1. GO-SIGNAL
  • In der PCHB ist es möglich, die „en & re" Ausdrücke für das Logik-Pulldown und „-en & -re" für das Logik-Pullup in ein Zweieingangs-c-Element von „en" und „re" aufzuteilen, das ein einzelnes „Go"-Signal erzeugt, das für Precharge und Enable der Logik verwendet wird. Dies verbessert die Vorwärtslatenz und die Analogsicherheit der Logik, obwohl 4 Übergänge zum Quittungsaustausch auf dem Ausgangskanal hinzukommen.
  • Mit mehr Aufmerksamkeit könnte dieses „Go"-Signal auch zu einer PCFB hinzugefügt werden. In diesem Fall muss das „Go"-Signal auch geprüft werden, bevor die linken Enables erzeugt werden, da es sonst zu Unstabilitäten kommt. Dies hat den Nebeneffekt, dass Reserve auf eine Hälfte reduziert wird, aber dies ist irrelevant, wenn das Ziel hohe Geschwindigkeit ist.
  • Wenn ein „Go"-Signal mit konditionellen Ausgängen verwendet wird, dann darf das „Go-„ nicht warten, bis das rechte Enable (re) tief geht, da es dies sonst nicht tut (da keine Daten im letzten Zyklus gesendet werden). Anstatt eines c-Elementes ergibt dies das PRS: "en & re & ~no_r → go+" und "-en & (no_r; -re) → go-".
  • 2. GEMEINSAMER EIN-/AUSGANGSVOLLZUG
  • In den meisten dieser Beispiele erfolgt der Ausgangsvollzug vor den Invertern, da so ein NAND-Gate anstatt eines NDR-Gates benutzt werden und der Vollzug einen Übergang früher erfolgen kann. Es ist jedoch möglich, auch von hinter den Invertern zu vollziehen. Dies ist besonders dann nützlich, wenn die Ausgangsvollzugsschaltung einer Zelle mit dem Eingangsvollzug der nächsten Zelle in der Pipeline gemeinsam genutzt werden kann.
  • 3. TIMING-ANNAHMEN
  • Das vorliegende Patent präsentiert zwar vornehmlich asynchrone Schaltungen in einem quasi verzögerungsunempfindlichen Rahmen, aber es kann sich als wünschenswert erweisen, Timing-Annahmen einzuführen, um die Schaltung zu vereinfachen oder zu beschleunigen. Es können mehrere nützliche Non-QDI-Schaltungen einfach dadurch abgeleitet werden, dass Transistoren von einer QDI WCHB, PCHB oder PCFB Schaltung weggelassen werden. Es wird bevorzugt, wenn die eingeführten Timing-Annahmen gänzlich durch Schätzen der Verzögerungen in der Zelle erfüllt werden können, ohne Annahmen über die Verzögerungen ihrer Umgebung zu machen. Diese Eigenschaft kann durch mehrere einfache Modifikationen erzielt werden.
  • So kann beispielsweise in einem PCFB mit einem einzigen „Go"-Signal angenommen werden, dass der Ausgang sehr bald vorgeladen wird, nachdem das „Go"-Signal tief gegangen ist. Die Tatsache, dass das „Go"-Signal tief geht, kann als eine Anzeige dafür gesehen werden, dass die Ausgangsdaten vorgeladen sind oder es bald sein werden. Diese Timing-Annahme der „implizierten Neutralität" kann viele Übergänge einer Vollzugserfassung eliminieren und es zulassen, dass der nächste Zyklus früher beginnt. Auf ähnliche Weise kann die Eingangsvalidität zuweilen ignoriert werden, wenn die Ausgangsvalidität impliziert, dass alle Eingangskanäle gültig sind.
  • Von den verschiedenen Typen von Zustandshaltezellen haben die eingeschränkteren Versionen im Allgemeinen einfachere und schnellere Implementationen und sollten daher nach Möglichkeit verwendet werden. Für den allgemeinsten Fall sollte entweder ein Paar Zustandsvariablen oder, wenn Fläche keine Frage ist, eine Feedback-Schleife von Puffern verwendet werden.
  • Drei Haupttypen von Quittungsaustauschumordnung haben sich für verschiedene Umstände als überlegen erwiesen. Die Schwachzustands-Halbpufferversion funktioniert gut für Puffer und Kopien ohne Logik. Die Precharge-Logik-Halbpufferung ist der einfachste gute Weg, um die meisten Logikzellen zu implementieren. Die Precharge-Logik-Vollpufferung hat Vorteile im Hinblick auf die Geschwindigkeit und ist gut beim Abkoppeln der Quittungsaustausche von Nachbareinheiten. Sie sollte dann angewendet werden, wenn der Durchsatz verbessert werden muss.
  • Es wurden zwar oben nur ein paar Ausgestaltungen ausführlich beschrieben, aber weitere Ausgestaltungen sind vom Erfinder vorgesehen und sollen in den Rahmen der folgenden Ansprüche fallen. Darüber hinaus sind andere Modifikationen vorgesehen und sollen hierin abgedeckt sein.

Claims (15)

  1. Asynchrone Schaltung, die einen ersten Prozess und einen mit dem ersten Prozess kommunizierenden zweiten Prozess umfasst, wobei der erste Prozess Folgendes beinhaltet: einen L-Kanal zum Kommunizieren mit einer vorherigen Stufe durch Warten auf Eingabedaten auf dem L-Kanal, Aufdrücken eines Eingabebestätigungssignals als Reaktion auf die Eingabedaten, Warten, bis der L-Kanal auf neutral gesetzt ist, und Wegnehmen des Eingabebestätigungssignals als Reaktion darauf, dass der L-Kanal auf neutral gesetzt wird, wobei der erste Prozess auch beinhaltet, dass ein R-Kanal mit dem zweiten Prozess kommuniziert, indem er wartet, bis ein mit dem zweiten Prozess assoziiertes Ausgabebestätigungssignal weggenommen wird, Übertragen von Ausgabedaten auf dem R-Kanal als Reaktion auf das Wegnehmen des Ausgabebestätigungssignals, Warten auf das Aufdrücken des Ausgabebestätigungssignals und Neutralsetzen des R-Kanals als Reaktion auf das Aufdrücken des Ausgabebestätigungssignals, dadurch gekennzeichnet, dass der erste Prozess eine Zustandshalteeigenschaft beinhaltet, die direkt mit einer Dominologikberechnung kombiniert wird, um Steuerung und Daten zu kombinieren und die Notwendigkeit für eine zusätzliche Zustandshalteschaltung zwischen dem ersten und dem zweiten Prozess zu eliminieren.
  2. Schaltung nach Anspruch 1, wobei der L- und der R-Kanal die Ein- und Ausgabedaten mit einem Satz von 1 von N Schienen für jeden Kanal codieren.
  3. Schaltung nach Anspruch 1, wobei der erste Prozess die Aufgabe hat, wenigstens eine der folgenden Aktionen durchzuführen: konditionelle Erzeugung von Ausgaben, konditionelles Lesen von Eingaben und Speichern des internen Zustands von einem ersten Verarbeitungszyklus auf einem nachfolgenden Verarbeitungszyklus.
  4. Schaltung nach Anspruch 3, wobei der erste Prozess die Aufgabe hat, den internen Zustand durch Speisen eines Ausgangs zurück zu einem Eingang durch mehrere Pufferstufen zu speichern, von denen eine mit einem anfänglichen Daten-Token initialisiert wird.
  5. Schaltung nach Anspruch 3, wobei der erste Prozess die Aufgabe hat, den internen Zustand zu speichern, indem er den L-Kanal nicht quittiert.
  6. Schaltung nach Anspruch 3, wobei der erste Prozess die Aufgabe hat, den internen Zustand zu speichern, der in jedem Verarbeitungszyklus benutzt und gesetzt werden kann.
  7. Schaltung nach Anspruch 6, wobei der erste Prozess die Aufgabe hat, einen neuen Zustand und einen alten Zustand zu behalten, wobei der neue Zustand in einem bestimmten Verarbeitungszyklus gesetzt werden kann, während dessen der alte Zustand benutzt werden kann, und wobei der neue Zustand den alten Zustand bei einer Rückstellphase jedes Verarbeitungszyklus ersetzt.
  8. Schaltung nach Anspruch 3, wobei der erste Prozess die Aufgabe hat, Eingaben durch konditionelles Quittieren des L-Kanals als Reaktion auf eine Bedingung konditionell zu lesen, wobei die Bedingung mit Bezug auf die Eingabedaten berechnet wird.
  9. Schaltung nach Anspruch 3, wobei der erste Prozess die Aufgabe hat, Eingaben durch konditionelles Quittieren des L-Kanals als Reaktion auf eine Bedingung konditionell zu lesen, wobei die Bedingung mit Bezug auf einen separaten unkonditionellen Kanal berechnet wird.
  10. Schaltung nach Anspruch 3, wobei der erste Prozess die Aufgabe hat, Ausgaben durch konditionelles Überspringen einer Kommunikation auf dem R-Kanal als Reaktion auf eine Bedingung konditionell zu erzeugen, wobei die Bedingung mit Bezug auf die Eingabedaten berechnet wird.
  11. Schaltung nach Anspruch 3, wobei der. erste Prozess die Aufgabe hat, Ausgaben durch konditionelles Überspringen einer Kommunikation auf dem R-Kanal als Reaktion auf eine Bedingung konditionell zu erzeugen, wobei die Bedingung mit Bezug auf eine zusätzliche Variable berechnet wird.
  12. Schaltung nach Anspruch 1, wobei der Ablauf des ersten Prozesses wenigstens eine interne Timing-Annahme beinhaltet, wobei die wenigstens eine interne Timing-Annahme die Annahme einer Vorladung eines Ausgangs nach der Wegnahme eines GO-Signals umfasst.
  13. Schaltung nach Anspruch 1, wobei der Ablauf des ersten Prozesses wenigstens eine interne Timing-Annahme beinhaltet, wobei die wenigstens eine interne Timing-Annahme die Annahme der Gültigkeit der Eingabedaten umfasst, wo die Ausgabedaten gültig sind.
  14. Schaltung nach Anspruch 1, wobei der erste Prozess ferner eine Ausgabevollzugsschaltung umfasst, von der wenigstens ein Teil mit einer Eingabevollzugsschaltung einer nachfolgenden Pipeline-Stufe gemeinsam genutzt wird.
  15. Schaltung nach Anspruch 1, wobei die Dominologik als Reaktion auf das Ausgabebestätigungssignal und ein Enable-Signal vorgeladen und enabelt wird, wobei der erste Prozess ferner ein Gate zum Kombinieren des Ausgabebestätigungssignals und des Enable-Signals zum Erzeugen eines GO-Signals beinhaltet, wobei die Dominologik als Reaktion auf das GO-Signal vorgeladen und enabelt wird.
DE69935924T 1998-07-22 1999-07-22 Umgeordnete kommunikationsprozesse in asynchronen schaltkreisen mit pipelines Expired - Lifetime DE69935924T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US9384098P 1998-07-22 1998-07-22
US93840P 1998-07-22
PCT/US1999/016628 WO2000005644A1 (en) 1998-07-22 1999-07-22 Reshuffled communications processes in pipelined asynchronous circuits

Publications (2)

Publication Number Publication Date
DE69935924D1 DE69935924D1 (de) 2007-06-06
DE69935924T2 true DE69935924T2 (de) 2008-01-10

Family

ID=22241108

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69935924T Expired - Lifetime DE69935924T2 (de) 1998-07-22 1999-07-22 Umgeordnete kommunikationsprozesse in asynchronen schaltkreisen mit pipelines

Country Status (5)

Country Link
US (2) US20040030858A1 (de)
EP (1) EP1121631B1 (de)
AU (1) AU5123799A (de)
DE (1) DE69935924T2 (de)
WO (1) WO2000005644A1 (de)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2885461B1 (fr) * 2005-05-04 2007-07-27 France Etat Dispositif formant porte logique adaptee pour minimisee les differences de comportement electrique ou electromagnetique dans un circuit integre manipulant un secret
WO2007029168A2 (en) * 2005-09-05 2007-03-15 Nxp B.V. Asynchronous ripple pipeline
US8817029B2 (en) * 2005-10-26 2014-08-26 Via Technologies, Inc. GPU pipeline synchronization and control system and method
US8495543B2 (en) * 2008-06-18 2013-07-23 University Of Southern California Multi-level domino, bundled data, and mixed templates
US9965342B2 (en) * 2010-03-16 2018-05-08 Arm Limited Synchronization in data processing layers
US8791717B2 (en) * 2010-07-15 2014-07-29 Nanyang Technological University Asynchronous-logic circuit for full dynamic voltage control
US8994406B2 (en) * 2011-12-19 2015-03-31 Nanyang Technological University Digital cell
US8854075B2 (en) * 2012-03-06 2014-10-07 Tiempo Delay-insensitive asynchronous circuit
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9576094B2 (en) 2014-08-20 2017-02-21 Taiwan Semiconductor Manufacturing Company, Ltd. Logic circuit and system and computer program product for logic synthesis
US10797706B2 (en) * 2016-12-27 2020-10-06 Semiconductor Energy Laboratory Co., Ltd. Semiconductor device
CN112313626A (zh) * 2018-06-22 2021-02-02 华为技术有限公司 异步处理器架构上的死锁检测及同步感知优化的方法

Family Cites Families (30)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3290511A (en) * 1960-08-19 1966-12-06 Sperry Rand Corp High speed asynchronous computer
US4680701A (en) * 1984-04-11 1987-07-14 Texas Instruments Incorporated Asynchronous high speed processor having high speed memories with domino circuits contained therein
US4710650A (en) * 1986-08-26 1987-12-01 American Telephone And Telegraph Company, At&T Bell Laboratories Dual domino CMOS logic circuit, including complementary vectorization and integration
GB8711991D0 (en) * 1987-05-21 1987-06-24 British Aerospace Asynchronous communication systems
US4912348A (en) 1988-12-09 1990-03-27 Idaho Research Foundation Method for designing pass transistor asynchronous sequential circuits
US5752070A (en) * 1990-03-19 1998-05-12 California Institute Of Technology Asynchronous processors
US5121003A (en) * 1990-10-10 1992-06-09 Hal Computer Systems, Inc. Zero overhead self-timed iterative logic
US5434520A (en) * 1991-04-12 1995-07-18 Hewlett-Packard Company Clocking systems and methods for pipelined self-timed dynamic logic circuits
US5367638A (en) 1991-12-23 1994-11-22 U.S. Philips Corporation Digital data processing circuit with control of data flow by control of the supply voltage
DE4214981A1 (de) * 1992-05-06 1993-11-11 Siemens Ag Asynchrone Logikschaltung für den 2-Phasen-Betrieb
US5544342A (en) * 1993-06-30 1996-08-06 International Business Machines Corporation System and method for prefetching information in a processing system
DE69430352T2 (de) 1993-10-21 2003-01-30 Sun Microsystems Inc Gegenflusspipeline
US5440182A (en) 1993-10-22 1995-08-08 The Board Of Trustees Of The Leland Stanford Junior University Dynamic logic interconnect speed-up circuit
US6152613A (en) * 1994-07-08 2000-11-28 California Institute Of Technology Circuit implementations for asynchronous processors
US5642501A (en) * 1994-07-26 1997-06-24 Novell, Inc. Computer method and apparatus for asynchronous ordered operations
US5732233A (en) * 1995-01-23 1998-03-24 International Business Machines Corporation High speed pipeline method and apparatus
JPH10508132A (ja) 1995-08-23 1998-08-04 フィリップス エレクトロニクス ネムローゼ フェンノートシャップ 非同期に制御されるパイプラインを具えるデータ処理システム
GB2310738B (en) * 1996-02-29 2000-02-16 Advanced Risc Mach Ltd Dynamic logic pipeline control
US5889979A (en) * 1996-05-24 1999-03-30 Hewlett-Packard, Co. Transparent data-triggered pipeline latch
US5737614A (en) * 1996-06-27 1998-04-07 International Business Machines Corporation Dynamic control of power consumption in self-timed circuits
WO1999004334A1 (en) * 1997-07-16 1999-01-28 California Institute Of Technology Improved devices and methods for asynchronous processing
US5920899A (en) 1997-09-02 1999-07-06 Acorn Networks, Inc. Asynchronous pipeline whose stages generate output request before latching data
US6038656A (en) * 1997-09-12 2000-03-14 California Institute Of Technology Pipelined completion for asynchronous communication
US6502180B1 (en) * 1997-09-12 2002-12-31 California Institute Of Technology Asynchronous circuits with pipelined completion process
US6301655B1 (en) * 1997-09-15 2001-10-09 California Institute Of Technology Exception processing in asynchronous processor
US6055620A (en) * 1997-09-18 2000-04-25 Lg Semicon Co., Ltd. Apparatus and method for system control using a self-timed asynchronous control structure
US6044453A (en) * 1997-09-18 2000-03-28 Lg Semicon Co., Ltd. User programmable circuit and method for data processing apparatus using a self-timed asynchronous control structure
US5949259A (en) 1997-11-19 1999-09-07 Atmel Corporation Zero-delay slew-rate controlled output buffer
US5973512A (en) 1997-12-02 1999-10-26 National Semiconductor Corporation CMOS output buffer having load independent slewing
US6049882A (en) * 1997-12-23 2000-04-11 Lg Semicon Co., Ltd. Apparatus and method for reducing power consumption in a self-timed system

Also Published As

Publication number Publication date
WO2000005644A1 (en) 2000-02-03
US7934031B2 (en) 2011-04-26
US20060212628A1 (en) 2006-09-21
DE69935924D1 (de) 2007-06-06
US20040030858A1 (en) 2004-02-12
AU5123799A (en) 2000-02-14
EP1121631A1 (de) 2001-08-08
EP1121631B1 (de) 2007-04-25
EP1121631A4 (de) 2001-09-19

Similar Documents

Publication Publication Date Title
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
EP1329816B1 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
EP0948842B1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
DE4118331C2 (de) Bussystem zur Anwendung bei einem Informationsverarbeitungsgerät
DE69935924T2 (de) Umgeordnete kommunikationsprozesse in asynchronen schaltkreisen mit pipelines
DE60306937T2 (de) Synchronisierung von pipelines in einem datenverarbeitungsgerät
DE69834678T2 (de) Selbstgetaktetes Pipeline-Übertragungssystem und asynchrone Signalsteuerungsschaltung
DE4212202A1 (de) Logikgatter
DE60130039T2 (de) Fifo-schaltungen mit geringer latenz für gemischte asynchrone und synchrone systeme
DE3137292A1 (de) Fifo-speicher und diesen verwendende verarbeitungseinheit
DE2856483A1 (de) Verbindungseinheit fuer datenverarbeitungssysteme
DE4420703A1 (de) Mikrocomputer
DE2015971A1 (de) Datenverarbeitungssystem zur Verarbeitung eines Stromes mehrfacher Operanden
DE2627788A1 (de) Dynamischer digitalspeicher mit ununterbrochen umlaufendem datenfluss
DE112020004065T5 (de) Komplexe Daisy-Chain-Befehle
DE19741915A1 (de) Zwischenspeicheroptimierung in Hardware-Logikemulations-Systemen
DE4318422A1 (de) Integrierte Schaltung mit Registerstufen
DE3333366A1 (de) Aufloesungsnetzwerk fuer zuletzt erfolgte benutzungen
DE60221515T2 (de) Speichersystem für schleifenbeschleunigung nach wunsch
DE69922240T2 (de) Dekoder für redundante adressen eines speichersystems
DE2459476C3 (de)
DE10227618B4 (de) Logikschaltung
DE2610428A1 (de) Anordnung zur steuerung der zwischenspeicherung von zwischen zwei funktionseinheiten zu uebertragenden daten in einem pufferspeicher
DE69910172T2 (de) Schaltkreis mit pseudo-mehrport-speicher
DE10110578A1 (de) Hierarchisches Prioritätsfilter mit integrierter Serialisierung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition