DE69430352T2 - Gegenflusspipeline - Google Patents

Gegenflusspipeline

Info

Publication number
DE69430352T2
DE69430352T2 DE69430352T DE69430352T DE69430352T2 DE 69430352 T2 DE69430352 T2 DE 69430352T2 DE 69430352 T DE69430352 T DE 69430352T DE 69430352 T DE69430352 T DE 69430352T DE 69430352 T2 DE69430352 T2 DE 69430352T2
Authority
DE
Germany
Prior art keywords
data
pipeline
stage
group
data elements
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
DE69430352T
Other languages
English (en)
Other versions
DE69430352D1 (de
Inventor
Ian W. Jones
Charles E. Molnar
Robert F. Sproull
Ivan E. Sutherland
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.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
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 Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of DE69430352D1 publication Critical patent/DE69430352D1/de
Application granted granted Critical
Publication of DE69430352T2 publication Critical patent/DE69430352T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • 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
    • G06F7/02Comparing digital values
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Advance Control (AREA)
  • Image Processing (AREA)
  • Multi Processors (AREA)
  • Complex Calculations (AREA)

Description

    GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung bezieht sich im allgemeinen auf das Gebiet von Datenverarbeitungssystemen und insbesondere auf ein Verfahren und ein System zum Verarbeiten von in einer bidirektionalen Gegenfluß-Berechnungs-Pipeline transportierten Datenelementen mit einer Reihe von in Kaskade geschalteten Stufen.
  • HINTERGRUND DER ERFINDUNG
  • Berechnungs-Pipelines wurden lange bei der Signalverarbeitung, in universellen Recheneinrichtungen und weiteren digitalen Rechenanwendungen verwendet. Bei einer Berechnungs-Pipeline fließen Informationen von einer Stufe zu einer anderen primär in einer Richtung durch die Pipeline und werden auf verschiedene Weisen an den verschiedenen Stufen der Pipeline verarbeitet.
  • Eine frühe Anwendung von Berechnungs-Pipelines besteht in dem Wiedergeben von Computergraphikbildern. Bei dieser Art von Pipeline werden Daten, die das Bild darstellen, von dem Computerspeicher durch eine Reihe von Verarbeitungsstufen geleitet und erscheinen schließlich auf der Computeranzeige. Eine weitere Art einer Berechnungs-Pipeline wird üblicherweise zur Multiplikation verwendet. Hier sind die vielen Additionen, aus denen die Multiplikation aufgebaut ist, als die Stufen einer Pipeline angeordnet. Wenn ein Multiplikand durch die Pipeline läuft, werden Teilprodukte bei jeder Stufe akkumuliert, so daß an dem Ende der Pipeline ein vollständiges Produkt gebildet wurde. Bei diesen Anwendungen von Pipelines in Computern fließen Datenelemente in nur einer einzigen Richtung.
  • Computerprozessoren mit verringertem Befehlssatz (RISC = Reduced Instruction Set Computer Prozessors) verwenden ebenfalls eine interne Pipeline, um Befehle auszuführen. An der ersten Stufe der Pipeline werden Befehle aus dem Befehlsspeicher geholt. Bei nachfolgenden Stufen werden sie unterschiedlich decodiert, ausgeführt und ihre Antworten werden aufgezeichnet. Bei derartigen Pipelines sind "Bypass"-Verbindungen üblich, die die Ausgänge nachfolgender Stufen mit Hilfseingängen vorheriger Stufen verbinden, so daß durch frühere Befehle berechnete Daten so bald wie möglich an spätere Befehle weitergeleitet werden können. Ohne Bypass-Pfade müßten alle berechneten Daten in einer Registerdatei aufgezeichnet werden, bevor sie für nachfolgende Befehle zugänglich wären.
  • Bei derartigen RISC-Prozessoren erzeugen eine Vielzahl von Bypass-Pfaden ein Hauptentwicklungsproblem. Da ein Bypass von beinahe jeder Stufe zu beinahe jeder vorherigen Stufe erforderlich ist, weist jede Stufe viele Eingänge auf. Das Ausgestalten des Steuersystems für einen derartigen RISC-Computer wird durch die Notwendigkeit, den Datenfluß auf so vielen Datenpfaden zu verwalten, schwierig. Da jede Stufe auswählen muß, ob sie ihre Eingangsdaten von ihrer Vorgänger-Stufe oder von irgendeinem einer Anzahl von Bypass-Pfaden nimmt, wird die Ausgestaltung von sogar einer einzigen Stufe sehr komplex.
  • Die meisten heute in Gebrauch befindlichen Recheneinrichtungen sind synchron und verwenden ein extern bereitgestelltes Taktsignal, um durch ihre Sequenz von Operationen zu laufen. Jede Maßnahme findet nur nach dem Eintreffen des nächsten Taktereignisses statt, und alle Teile werden, falls überhaupt, in genau den gleichen Intervallen arbeiten.
  • Bei asynchronen Schaltungen arbeitet jedes einzelne Teil unabhängig, wann immer es lokale Bedingungen gestatten, es so zu tun. Eine lokale Logik erfasst, wann die Bedingungen richtig sind, und initiiert die geeignete Maßnahme. Jede Stufe sendet in einer asynchronen Pipeline Daten an die nächste Stufe ohne Bezug auf irgendein externes Taktsignal weiter, jedesmal wenn die zwei Stufen übereinstimmen, daß eine derartige Transaktion richtig ist.
  • Eine Bypass-Pfad-Struktur bei synchronen Systemen ist aus zwei Gründen unerwünscht. Erstens kann, wenn integrierte Schaltungen größer werden, die Verzögerung in einem langen Bypass-Pfad zu groß werden und eine langsamere Taktrate erfordern. Zweitens ist es bei einer großen integrierten Schaltung schwierig, identische Taktsignale an alle Teile der Pipeline zu liefern. Unterschiede in dem Timing der Taktsignale an unterschiedlichen Teilen der Pipeline werden als zeitliche Versetzung zwischen Taktimpulsen bzw. clock skew bezeichnet. Es kann schwierig oder unmöglich sein, Daten anzunehmen, die von einer in der Pipeline entfernt angeordneten Quelle kommen, deren Takt in Bezug auf nahe liegende Taktsignale zeitlich versetzt ist.
  • Bei einem asynchronen System sind Bypass-Pfade sehr schwierig zu implementieren, da entfernte Abschnitte eines asynchronen Systems zu Zeiten arbeiten, die von der Betriebszeit der lokalen Informationen vollständig unabhängig sind. Große Sorgfalt muß aufgewendet werden, wenn Daten zwischen weit voneinander entfernten Zuständen in einem asynchronen System bewegt werden. Wenn bei der Entwicklung nicht entsprechend sorgfältig gearbeitet wird, kann es möglich sein, daß gelegentlich Datenelemente beschädigt oder verloren gehen, und somit das System unzuverlässig wird. Die Schwierigkeit dieser Aufgabe begründet teilweise die sehr seltene gegenwärtige Verwendung von asynchronen Systemen.
  • Schließlich erfordert das Vorhandensein von Bypass- Strukturen, daß sorgfältig gesteuert wird, wann sich Daten tatsächlich in der Pipeline bewegen. Bei den meisten heute in Gebrauch befindlichen Systemen teilt, wenn irgendeine Stufe nicht imstande ist, ihre Daten zu bewegen, sie allen anderen Stufen ihrer Blockierung mit, und alle warten. Da das Blockierungssignal aus irgendeiner oder allen Stufen stammen kann und an alle Stufen geliefert werden muß, beinhaltet es nicht nur eine logische Funktion mit vielen Eingangsgliedern, sondern ebenfalls einen langwierigen Kommunikationspfad, wobei beides zu einer Verzögerung beiträgt. Somit kann das Blockierungssignal selbst ein Pacing-Element in dem System sein.
  • Asynchrone Pipelines sind vorwiegend deswegen selten, weil Entwickler sie als zu schwierig zu entwickeln betrachtet haben. Einige asynchrone Pipelines werden nun bei Zuerst-Hinein-Zuerst-Hinaus- bzw. FIFO-Pufferspeichern hauptsächlich bei der Signalverarbeitung und bei Eingangs/Ausgangs-Anwendungen verwendet. Eine besonders einfache Form einer asynchronen Pipeline wurde von Sutherland in den US-Patenten Nr. 5 187 800 und Nr. 4 837 740 und in der Veröffentlichung mit dem Titel "Micropipelines" beschrieben. Eine weitere unidirektionale asynchrone Pipeline wurde in dem Artikel "Dynamic Reordering of High Latency Transactions using a Modified Micropipeline" von A. Liebchen u. a., Proceedings of 1992 IEEE International Conference on Computer Design, beschrieben. Insbesondere wird eine unidirektionale Pipeline beschrieben, die Steuer-Tokens bzw. Sendeberechtigungszeichen verwendet, um die Sequenz der sich die Pipeline aufwärts bewegenden Befehle neu zu ordnen. Bei den asynchronen Pipeline-Einrichtungen, die bis jetzt gebaut wurden, fließen Informationen in nur einer einzigen Richtung, oder, wenn Informationen in mehr als eine Richtung fließen müssen, werden vollständig getrennte Mechanismen für die getrennten Richtungen verwendet. Derartige Strukturen sind nur eine zusammengesetzte Verwendung einer unidirektionalen Pipeline.
  • Die Entwicklung eines RISC-Computers mit vielen Bypass- Pfaden im asynchronen Entwicklungsstil lag bis jetzt außerhalb der Fähigkeit von Entwicklern. Die wenigen asynchronen RISCS, die bis jetzt entwickelt wurden (Caltech, Manchester), vermieden Bypass-Pfade und litten somit unter einer unnötigen Verzögerung und Leistungsverschlechterung.
  • Elastisch versus Unelastisch
  • Pipeline-Systeme können entweder "elastisch" oder "unelastisch" sein. In einer elastischen Pipeline können sich Lücken in dem durch die Pipeline fließenden Strom von Daten bilden oder verschwinden, wie es erforderlich ist, wohingegen in einer unelastischen Pipeline Lücken in dem regulären Datenstrom, genannt "Blasen", in Position bleiben. Elastische Pipelines sind flexibler als unelastische. Sollte beispielsweise eine Stufe einer elastischen Pipeline länger als gewöhnlich zur Verarbeitung eines bestimmten Datenelementes benötigen, können sich andere Datenelemente, die bereits durch die Verzögerungsstufe gelaufen sind ohne Einschränkung vorwärts bewegen, obgleich sie dadurch eine Lücke in den Datenstrom einführen. Unterschiede in der Verarbeitungszeit verschiedener Stufen können somit durch Puffer verschiedener Arten ausgeglichen werden. Es ist jedoch bedeutsam, daß eine elastische Pipeline das Löschen existierender Datenelemente und die Einfügung neuer Datenelemente in das Innere der Pipeline gestattet. Bei einer elastischen Pipeline läßt die Löschung eines bestimmten Datenelementes einfach eine Lücke zurück, die durch nachfolgende Datenelemente gefüllt werden kann. Auf ähnliche Weise kann eine elastische Pipeline durch Verzögern der Übertragung nachfolgender Elemente in der Pipeline neue Datenelemente nach Belieben einfügen. Diese Einfügungs- und Löschungs-Operationen wurden bei Graphik- Pipelines verwendet, wobei ein Teil der Berechnung bestimmen kann, daß ein bestimmter Teil der gespeicherten Daten nicht auf dem Bildschirm erscheinen und somit aus dem Datenstrom entfernt werden sollte, oder daß der gegenwärtige Betrachtungspunkt so nahe an einem bestimmten Teil des betrachteten Objektes ist, daß es detaillierter angezeigt werden sollte.
  • Bei einigen Systemen wird ein Teil der Vorteile einer elastischen Pipeline in einem im übrigen unelastischen System durch "Blasen" erzielt. Bei einem derartigen unelastischen System sind die Datenelemente des Stroms in regelmäßigen Intervallen beabstandet. Würde eines der Datenelemente gelöscht werden, würde der regelmäßige Abstand zerstört werden. Statt nur das Datenelement zu löschen, wird es statt dessen durch ein Leerzeichen oder eine Blase ersetzt.
  • Die Blase hält die Position eines Datenelements, geht jedoch nicht in die Berechnung ein. Durch Einführen von Blasen kann eine unelastische Pipeline die Löschung handhaben, obgleich sie keinen Geschwindigkeitsvorteil aus dem Schließen der somit erzeugten Lücke erfährt. Unelastische Pipelines können keine neuen Daten in den Strom einfügen, ausgenommen durch Ersetzen einer existierenden Blase. Wenn zufällig keine Blase verfügbar ist, können überhaupt keine neuen Daten eingefügt werden.
  • Anwendungen für Pipelines
  • Es gibt viele Anwendungen, wo es wünschenswert ist, alle Elemente aus zwei Datenströmen zu vergleichen. Bei vielen Anwendungen ist es bedeutsam, daß alle in einer Richtung fließenden Datenelemente mit allen in der anderen Richtung fließenden Datenelementen in Interaktion treten. Die Funktion derartiger Anwendungen kann zerstört werden, würden zwei entgegengesetzt fließende Datenelemente ohne Interaktion aneinander vorbeilaufen. Beispielsweise ist es bei einer Wortsuchanwendung bedeutsam, daß alle Wörter in dem durchsuchten Text tatsächlich auf jedes Suchwort geprüft werden. Der Begriff "gegensynchronisierter Vergleich" wird hier verwendet, um zu bedeuten, daß zwischen in entgegengesetzten Richtungen laufenden Elementen einmal und nur einmal in einer Stufe der Pipeline eine Interaktion stattfindet.
  • Eine Form einer Vergleichsschaltung wird bei Suchmaschinen verwendet, die für das Durchsuchen von Text nach bestimmten Schlüsselwörter angewendet werden. Bei einem derartigen System wird jedes Schlüsselwort in einer festen Stufe in dem System gespeichert, und der zu durchsuchende Text strömt an dieser durch eine unidirektionale Pipeline vorbei. Bei jeder Stufe in der Pipeline wird das gespeicherte Wort mit dem durchlaufenden Wort verglichen, und jede Übereinstimmung wird gemeldet.
  • Derartige unidirektionale Berechnungs-Pipelines können einen relativ festen Satz von Daten mit einem relativ beweglichen Satz vergleichen. In jedem Schritt werden so viele Vergleiche durchgeführt, wie es Stufen in der Berechnungs- Pipeline gibt, und jedes Element von dem sich bewegenden Satz trifft der Reihe nach jedes Element des festen Satzes.
  • Da die sich bewegenden Datenelemente der Reihe nach jede Stufe der Pipeline treffen, muß jedes jeweils nur an einen Platz gesendet werden, und dieser Platz liegt in unmittelbarer Nähe zu dem Ursprung des Datenelements, d. h. der vorherigen Stufe der Berechnungs-Pipeline. Somit weisen Berechnungs-Pipelines einen hohen Durchsatz auf und erfordern weniger elektrische Leistung als alternative Vergleichsschaltungen, wie beispielsweise Assoziativ-Speicher.
  • Die Anzahl von Stufen in einer unidirektionalen Berechnungs-Pipeline begrenzt die Anzahl von Datenelementen, die in dem festen Datensatz sein können. Typischerweise gibt es eine Zelle oder eine Stufe für jedes Element des festen Datensatzes, und es ist relativ schwieriger, ein Element des festen Satzes zu ändern, als ein neues Element von dem sich bewegenden Satz zum Vergleich einzugeben.
  • Somit besteht gegenwärtig ein Bedarf an einer bidirektionalen Berechnungs-Pipeline, die es zwei unterschiedlichen Datenelementen von zwei verschiedenen Datenströmen ermöglicht, miteinander verglichen oder modifiziert zu werden oder aus ihren jeweiligen Strömen gelöscht oder von einem Strom in den anderen eingefügt zu werden.
  • Systolische Arrays wurden ebenfalls in der Vergangenheit beschrieben. Bei einer Recheneinrichtung mit systolischen Arrays kommuniziert ein Array von ähnlichen Stufen mit nächsten Nachbarn auf eine solche Art und Weise, um eine komplexe Berechnungsoperation durchzuführen. In einem systolischen Array, wie es im allgemeinen in der Technik verstanden wird, findet die Kommunikation zwischen benachbarten Elementen nach einem regelmäßigen Plan statt. Die Rechenoperationen an jeder Stufe müssen in diesen Plan der Datenübertragung passen.
  • Somit besteht gegenwärtig insbesondere für systolische Arrays ein Bedarf an einer bidirektionalen Berechnungs-Pipeline, die es ermöglicht, daß Rechenoperationen bei jeder Stufe der Pipeline zu jeder Zeit nach Bedarf und nicht gemäß einem festen Plan der Datenübertragung zwischen den Stufen durchgeführt werden können.
  • Pipeline-Verbindungen wurden ebenfalls bei Kommunikationssystemen verwendet. Seitz beschreibt beispielsweise ein System, bei dem Nachrichten von einer Stufe zu einer anderen in einem Netzwerk weitergeleitet werden, um von einer bestimmten Quelle zu einem bestimmten Ziel zu gelangen. Obgleich Nachrichten in dem Seitzschen System in beiden Richtungen laufen können, sind die Datenelemente in den beiden Strömen vollständig unabhängig. Es gibt keine Interaktion zwischen den in einer Richtung und den in der anderen Richtung fließenden Nachrichten.
  • Es besteht daher ein gegenwärtiger Bedarf an einer bidirektionalen Berechnungs-Pipeline, die es Datenelementen aus zwei verschiedenen Datenströmen ermöglicht, die in zwei entgegengesetzten Richtungen fließen, in Interaktion zu treten.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung umfaßt ein Datenverarbeitungssystem und ein Verfahren zum Verwalten zwei verschiedener Gruppen von Datenelementen, die in zwei entgegengesetzten Richtungen fließen, wie sie in den hier angefügten Ansprüchen 1 und 21 dargestellt sind. Jedes der Datenelemente umfaßt wenigstens ein Bit. Das Datenverarbeitungssystem umfaßt einen Satz von Stufen, die in Reihe geschaltet sind, um eine Berechnungs-Pipeline zu bilden; und eine Steuerschaltung, um den Fluß jedes Datenelements aus den zwei verschiedenen Gruppen von Datenelementen durch die Berechnungs-Pipeline zu steuern. Der Satz von Stufen umfaßt mindestens eine ausgewählte Stufe, die eine Erfassungsschaltung aufweist, um zu erfassen, wenn ein Datenelement der ersten Gruppe von Datenelementen und ein Datenelement der zweiten Gruppe von Datenelementen beide in der ausgewählten Stufe vorhanden sind; und eine Interaktionsschaltung, um das erste Datenelement und das zweite Datenelement zu veranlassen, in der ausgewählten Stufe in Interaktion zu treten, wenn die ersten und zweiten Datenelemente beide in der ausgewählten Stufe vorhanden sind.
  • Die vorliegende Erfindung liefert eine zweidirektionale Pipeline, die imstande ist, den Datenfluß in beiden Richtungen zu steuern und es entgegengesetzt fließenden Datenelementen ermöglicht, zuverlässig an jeder Stufe der Pipeline in Interaktion zu treten.
  • Die vorliegende Erfindung stellt einen unregelmäßigen Datenfluß in umgekehrter Richtung entlang regulärer Pfade bereit, um die Lieferung von Daten von nachfolgenden Stufen zu vorherigen stark zu vereinfachen. Die vorliegende Erfindung ermöglicht es Daten, sich gemäß einem unregelmäßigen Plan zu bewegen, und zwar abhängig von den weiterzuleitenden Daten, von der bestimmten Stufe, durch die sie geleitet werden, und von den Operationen, die an ihnen durchzuführen sind. Die vorliegende Erfindung behandelt zwei Sätze von Daten auf eine symmetrische Art und Weise und kann eine sehr einfache und regelmäßige Struktur für viele Pipeline-Anwendungen, wie beispielsweise für einen RISC-Computer, bilden. Jede Stufe in der Pipeline kommuniziert hauptsächlich nur mit der Stufe vor und hinter ihr. Datenelemente können durch verschiedene Stufen laufen, bevor sie verwendet werden. Durch Ersetzen des komplexen Satzes von Bypass-Pfaden, der gewöhnlicherweise bei RISC-Computern mit einem einzigen Rückkehr-Pfad zu finden ist, erreicht die vorliegende Erfindung ein wertvoll einfaches Design. Die Verzögerung bei der Übertragung von Daten über verschiedene Stufen anstatt durch einen direkten Bypass-Pfad ist aufgrund der in dem einfachen Design möglichen hohen Geschwindigkeit minimal.
  • Die vorliegende Erfindung umfasst neuartige synchrone und asynchrone Ausführungsformen. Synchrone Pipelines arbeiten heute gewöhnlicherweise mittels eines Handshake-Protokolls zwischen Stufen. Bei einem derartigen Handshake-Protokoll gibt der Empfänger dem Sender an, daß Platz verfügbar ist, um eine neues Datenelement unterzubringen. Wenn ein Datenelement verfügbar ist, gibt der Sender dem Empfänger an, daß es genommen werden sollte. Somit entscheidet bei den heute in Verwendung befindlichen Handshake-Protokollen der Sender allein, wann Daten übertragen werden sollten. Diese Vorgehensweise bringt "Blasen", d. h. leere Stellen in dem sonst glatten Datenfluß unter. Die vorliegende Erfindung weist eine symmetrische Form der Kommunikation auf, bei der benachbarte Stufen gemeinsam und symmetrisch entscheiden, wann sich Daten von einer Stufe zu der nächsten bewegen können.
  • Die asynchrone Ausführungsform für eine hier offenbarte Gegenfluß-Berechnungs-Pipeline ist in ihrer Fähigkeit einzigartig, Informationen asynchron und gleichzeitig in zwei Richtungen weiterzuleiten.
  • Die vorliegende Erfindung beschreibt einen einfachen symmetrischen Mechanismus zum Bereitstellen eines gegensynchronisierten Vergleichs zwischen zwei entgegengesetzt fließenden Strömen von Daten. Die Symmetrie und Einfachheit des Mechanismus machen es leicht, ihn zu implementieren und liefern reichlich Gelegenheit, um bestimmte Recheneinrichtungen anzugliedern, um verschiedenste Aufgaben zu erfüllen. Spezielle Schaltungen sind enthalten, um einen gegensynchronisierten Vergleich bereitzustellen. Der gegensynchronisierte Vergleich der Gegenfluß-Pipeline macht sie überaus nützlich und bietet verschiedene Vorteile.
  • Die vorliegende Erfindung vermeidet das Erfordernis eines globalen Blockierungssignals. Jede Stufe ist in sich abgeschlossen und muß nur mit benachbarten Stufen kommunizieren. Da nur eine lokale Kommunikation erforderlich ist, werden lange Verbindungen und die Verzögerung und der Leistungsverbrauch, die sie mit sich bringen, vermieden. Wenn eine Stufe mehr Zeit zum Arbeiten benötigt, benachrichtigt sie nur ihre benachbarten Stufen, so daß diese richtig funktionieren können.
  • Diese Verwendung einer lokalen Steuerung macht die vorliegende Erfindung ebenfalls ideal zur Verwendung in asynchronen Systemen. Jede Stufe in einem asynchronen System kann mit ihrer eigenen Geschwindigkeit voranschreiten, wobei ihre benachbarten Stufen benachrichtigt werden, wenn sie bereit ist, Daten anzunehmen oder zu liefern. Es wird kein globaler Takt benötigt, wobei es jedoch bedeutsamer ist, daß kein globales Steuersignal benötigt wird. Das üblicherweise in synchronen Systemen mit Bypass-Pfaden zu findende Blockierungssignal wird vermieden.
  • Die vorliegende Erfindung liefert eine Pipeline, die sowohl bidirektional als auch elastisch ist. Zuvor wurden elastische Pipelines für den Fluß in nur einer einzigen Richtung beschrieben. Die vorliegende Erfindung nutzt die elastische Eigenschaft ihrer Pipeline, indem ein Fluß in jeder Richtung entlang der Pipeline ohne Interaktion ermöglicht wird, wenn eine Lücke in dem Datenfluß in der anderen Richtung eine Interaktion unnötig macht.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Fig. 1A ist ein Blockdiagramm einer Gegenfluß-Pipeline- Steuerung, die einen Satz von Datenpfad-Stufen betreibt.
  • Fig. 1B ist ein Blockdiagramm einer Gegenfluß-Pipeline, das die Stufen, die Datenflußpfade nach oben und nach unten und die Steuerkommunikationspfade zwischen den Stufen zeigt.
  • Fig. 1C ist ein Blockdiagramm einer Gegenfluß-Pipeline mit bidirektionalen Datenpfaden.
  • Fig. 2A ist ein Blockdiagramm der Register- und Steuermittel innerhalb einer einzigen Stufe einer einfachen Gegenfluß-Pipeline, die Markierungs-Flip-Flops umfaßt, um den Zustand der Register zu zeigen.
  • Fig. 2B ist ein Blockdiagramm der Register- und Vergleichsmittel und der Datenrecheneinrichtungen innerhalb einer einzigen Stufe der Gegenfluß-Pipeline.
  • Fig. 3 ist ein Zustandsdiagramm für eine einzige Stufe der Gegenfluß-Pipeline, die ihre fünf Hauptzustände zeigt.
  • Fig. 4 ist ein detailliertes Diagramm eines möglichen Satzes von Kommunikations- und Taktsignalen für eine synchrone Implementierung der Gegenfluß-Pipeline.
  • Fig. 5 ist ein Blockdiagramm einer asynchronen Implementierung der Gegenfluß-Pipeline, die mit "COP" bezeichnete Entscheidungseinheiten (arbitration units) zwischen allen Stufen zeigt.
  • Fig. 6 ist ein Zustandsdiagramm für den in der COP verwendeten Arbiter, das seine acht Zustände zeigt.
  • Fig. 7 ist ein Blockdiagramm einer möglichen Implementierung der COP mit dem ARBITER von Fig. 6.
  • Fig. 8 ist ein Blockdiagramm des Steuermechanismus, der für eine Stufe einer asynchronen Ausführung der Gegenfluß- Berechnungs-Pipeline benötigt wird, das Mechanismen zeigt, um zu erfassen, wenn die Registermittel voll und die Entscheidungsmechanismen freizugeben sind.
  • Fig. 9 ist ein Blockdiagramm einer Gabel-Pipeline. Über dem Gabelungspunkt gibt es zwei Gegenfluß-Pipelines und darunter gibt es nur eine einzige Pipeline. An dem Gabelungspunkt teilt sich der aufwärts gerichtete Datenflußstrom und der abwärts gehende Datenfluß wird vereinigt.
  • Fig. 10 ist ein Blockdiagramm der asynchronen Implementierung für die bevorzugte Ausführungsform. Es zeigt ausführlicher, wie die Kommunikation nach oben und nach unten tatsächlich durchgeführt wird.
  • Fig. 11 ist ein Blockdiagramm einer einzelnen Stufe einer asynchronen Gegenfluß-Pipeline, die in Teile zur Löschung, zur Einfügung und zum Vergleich aufgebrochen ist.
  • Fig. 12 ist ein Diagramm des Steuermechanismus, der für den Löschungsteil der bevorzugten Ausführungsform erforderlich ist.
  • Fig. 13 ist ein Blockdiagramm des Einfügungsteils der Gegenfluß-Pipeline mit einem zusätzlichen Registermittel zum Halten von Daten, die in die Datenströme einzufügen sind.
  • Fig. 14 ist ein Zustandsdiagramm für eine einzelne Stufe einer Implementierung der Gegenfluß-Pipeline, das Ereignisse zur Einfügung und Löschung zeigt.
  • AUSFÜHRLICHE BESCHREIBUNG DER ERFINDUNG Überblick:
  • Die vorliegende Erfindung umfaßt eine Gegenfluß-Pipeline, die aus einer Reihe von Stufen in einer linearen Progression besteht. Bei dieser Beschreibung werden die Stufen beschrieben, als ob sie übereinander angeordnet wären, so daß die lineare Progression als vertikal gedacht werden kann. Wie bei allen elektronischen Systemen ist die tatsächliche Anordnung der Stufen im Raum für ihre korrekte Arbeitsweise natürlich irrelevant, solange wie logisch benachbarte Stufen in einer vernünftigen Nähe liegen.
  • Jede Stufe in der Pipeline kann in jeder Richtung mit ihren beiden direkten Nachbarn kommunizieren. Da die Kommunikation bidirektional ist, können Informationen sowohl aufwärts als auch abwärts entlang des Satzes von Stufen fließen.
  • Die Gegenfluß-Pipeline ist imstande, gleichzeitig einen Satz von Datenelementen aufwärts durch die Pipeline und einen anderen Satz von Datenelementen abwärts durch die Pipeline zu strömen zu lassen. Die Aufwärts- und Abwärts-Strömungsoperationen können unabhängig sein; der gesamte oder ein Teil jedes der beiden Datenströme können sich bewegen oder stationär bleiben, wie es von dem Mechanismus verlangt wird, der Daten an ihn an seinen Anfang liefert und Daten von ihm an seinem Ende annimmt. Es kann Lücken in einem oder beiden Datenströmen geben, da der Steuermechanismus die Pipeline in beiden Richtungen "elastisch" machen kann.
  • Die tatsächliche Kommunikation zwischen den Stufen kann von jedem zweckmäßigen Mechanismus ermöglicht werden. In den meisten Fällen wird sie durch einen geeigneten Satz von Leitungen, eine für jedes zu übertragende Daten-Bit, stattfinden. Alternativ kann die Kommunikation zwischen den Stufen in serieller Form, bitweise oder mehrere Bits auf einmal erfolgen, wobei mehrere Schritte benötigt werden, um das gesamte Datenelement weiterzuleiten. Ebenso kann die Kommunikation durch elektrische, optische oder akustische oder beliebige andere geeignete Mittel stattfinden.
  • Jede Stufe der Gegenfluß-Pipeline enthält wenigstens zwei Speicherelemente, z. B. Register, eines für Datenelemente, die aufwärts fließen, und das andere für Datenelemente, die abwärts fließen. Natürlich kann eines oder können beide dieser Register zu einem beliebigen Zeitpunkt leer sein, wenn es eine Lücke in dem regulären Fluß von Daten in dieser Richtung gab. Nur wenn Daten in beiden Richtungen bereitgestellt werden, werden beide dieser Register ein Datenelement enthalten.
  • Die Datenelemente in den beiden Strömen können sich in Größe oder Funktion unterscheiden. Die Bedeutung der Bits in den beiden Strömen kann ebenso ähnlich oder ziemlich unterschiedlich sein. Die Register für den Fluß nach oben können so viele Bits von Daten wie das Register für den Fluß nach unten oder mehr Bits oder weniger Bits unterbringen. Bei den besonders vorteilhaften Systemen wird die Anzahl von Bits in den beiden Registern in jeder Stufe unterschiedlich sein. Außerdem können unterschiedliche Teile der Pipeline Register aufweisen, die mehr oder weniger Bits als verlangt halten, um den Bedürfnissen der Datenelemente bei dieser Stufe der Verarbeitung zu genügen. Der Fluß nach oben kann an unterschiedlichen Stellen "breiter" oder "enger" als der Fluß nach unten sein, wobei Bezug auf die Anzahl von Bits in jeden Datenelement in dem Strom genommen wird.
  • Es gibt vier mögliche Zustände der Belegung der Register. Wenn keines der Register ein Datenelement enthält, sagt man, daß die Stufe "leer" (E-empty) ist. Wenn beide Register ein Datenelement enthalten, sagt man, daß die Stufe "voll" (F-full) ist. Wenn nur ein Register ein Datenelement enthält, ist die Stufe entweder "halbvoll" oder "halbleer", und zwar abhängig von dem Optimismus des Sprechers. Der Zustand der Stufe, wenn sie halbvoll oder halbleer ist, kann durch das Datenelement benannt werden, das vorhanden ist. Beispielsweise heißt der Zustand "aufwärts" (U-up), wenn nur das dem Strom nach oben zugeordnete Register ein Datenelement enthält, oder "abwärts" (D-down), wenn nur das dem Strom nach unten zugeordnete Register ein Datenelement enthält. Somit kann man sagen, daß die Stufe in dem Zustand "E", "F", "U" oder "D" ist.
  • Die Kommunikationsschaltungen zwischen den Stufen dienen dazu, Daten in zwei Richtungen weiterzuleiten: 1) aufwärts, von dem Aufwärts-Register in einer Stufe zu dem Aufwärts-Register in der nächsten Stufe, und 2) abwärts, von dem Abwärts-Register in einer Stufe zu dem Abwärts-Register in der vorherigen Stufe. Die Register und die Kommunikationsschaltungen stellen zusammen einen Pfad bereit, durch den Datenelemente der beiden Ströme von einem Ende der Pipeline zu dem anderen fließen können. Der Aufwärts-Datenstrom fließt in die untere Stufe der Pipeline und von oben heraus, und der Abwärts-Datenstrom fließt in die obere Stufe der Pipeline und aus der unteren Stufe heraus.
  • Die Steuerschaltungen für beide Ströme können symmetrisch sein. Die Steuerschaltungen für den Aufwärts-Strom sind mit den Steuerschaltungen für den Abwärts-Strom um die offensichtliche Umkehrung der Rollen der Stufen herum über und unter der gesteuerten Stufe symmetrisch. Außer ihren Kennungen muß in den Steuerschaltungen nicht unterschieden werden, welche den Strom aufwärts und welche den Strom abwärts steuert.
  • Obgleich sich die Größe, die Bedeutung und die an den beiden Strömen ausgeführte Verarbeitung, unterscheiden können, sind beide Ströme beweglich und können auf ähnliche Weise gesteuert werden. Im Gegensatz zu dem Assoziativ-Speicher oder den gewöhnlichen gegenwärtig verwendeten Pipeline- Prozessoren, die einen beweglichen und einen relativ festen Satz von Daten vorsehen, sieht die Gegenfluß-Berechnungs- Pipeline die Interaktion von zwei ähnlich beweglichen Strömen von Daten vor.
  • Jede Stufe der Gegenfluß-Pipeline kann falls gewünscht, eine Vergleichsschaltung enthalten. Wenn beide Datenelemente vorhanden sind (Zustand (F)), kann eine derartige Vergleichsschaltung das gesamte oder einen Teil eines Datenelements von dem Aufwärts-Fluß mit dem gesamten oder einem Teil eines Datenelements von dem Abwärts-Fluß vergleichen. Wenn eines der beiden oder beide Datenelemente fehlen, wird die Vergleichsschaltung inaktiv bleiben. Es ist im allgemeinen für derartige Vergleichsschaltungen vorteilhaft, nur einen Teil der Datenelemente zu vergleichen, der häufig als der "Kennungs"- oder "Adressen"-Teil der Datenelemente bezeichnet wird. Weitere Teile der Datenelemente können auf verschiedene Weisen abhängig von den Ergebnissen des Vergleichs verarbeitet werden. Bei den meisten Anwendungen wird jede Stufe eine Vergleichsschaltung enthalten, so daß die Eigenschaft des "gegensynchronisierten Vergleichs" realisiert werden kann.
  • Obgleich das Wort "Übereinstimmung" hier verwendet wird, um einen erfolgreichen Vergleich anzugeben, ist es offensichtlich, daß der Vergleich viele Formen annehmen kann. Obgleich das Wort "Übereinstimmung" scheinbar impliziert, daß der Vergleich eine bitweise Identität in den zwei Teilen der geprüften Datenelemente sucht, ist der bitweise Vergleich nur die einfachste Form eines Vergleichs und stellt das einfachste Schlüsselwort dar, das zum Beschreiben verwendet werden kann, wenn eine Datenverarbeitung zwischen den beiden Datenströmen stattfinden sollte. Alternativ kann bei komplexeren Systemen eine "Übereinstimmung" auftreten, wenn ein gesamtes Datenelement oder ein Teil eines Datenelements aus dem Vorwärtsstrom im arithmetischen Sinne größer als ein gesamtes Datenelement oder ein Teil eines Datenelements aus dem umgekehrten Strom ist. Jede der arithmetischen Operationen kann verwendet werden, z. B. größer als, kleiner als, Null, außerhalb des Bereichs usw. Logische Operationen jeder Art können ebenfalls verwendet werden, einschließlich sowohl der gewöhnlichen, wie beispielsweise Vergleich unter einer Maske, als auch der exotischen, wie beispielsweise Deklarieren einer Übereinstimmung, wenn der Zählwert von wahren binären Bits in einem Datenelement den Zählwert von wahren binären Bits in dem anderen überschreitet. Im allgemeinen prüft die Übereinstimmung eine spezifische Beziehung zwischen einem Element in einem Strom und einem Element in dem anderen. Fachleute werden ohne weiteres den Bereich der Bedingungen erweitern, die als eine "Übereinstimmung" bezeichnet werden können, und somit eine weitere Verarbeitung verursachen.
  • Typischerweise besteht der Zweck des Vergleichens eines Datenelements in dem Aufwärts-Strom mit einem in dem Abwärts-Strom darin, zu bestimmen, ob eine Maßnahme erforderlich oder erlaubt ist, die von einem von beiden abhängt oder eines von beiden beeinflußt. Die spezifische Maßnahme kann von bestimmten Bit-Mustern abhängen, die in einem oder beiden der Datenelemente vorhanden sind, oder von dem Auftreten bestimmter Beziehungen zwischen Bit-Mustern in den beiden Elementen abhängen. Wenn eine Maßnahme als Ergebnis eines derartigen Vergleichs erforderlich ist, wird sie "Übereinstimmung" genannt.
  • Wenn eine "Übereinstimmung" als Ergebnis eines Vergleichs innerhalb einer Gegenfluß-Berechnungs-Pipeline-Stufe gefunden wird, kann die Stufe die Daten in einem oder beiden Datenströmen modifizieren. Viele Arten von Modifikationen sind möglich; die bestimmte Form der Modifikation wird nicht durch die vorliegende Erfindung beschränkt, da die vorliegende Erfindung alle derartigen Modifikationen oder überhaupt keine Modifikation einschließt. Die spezielle Form der Modifikation wird so konzipiert, daß sie den Bedürfnissen der vorhandenen Verarbeitungsaufgabe entspricht.
  • Eine einfache Form der Modifikation, die ausgeführt werden kann, wenn es eine Übereinstimmung gibt, besteht darin, ein binäres Kennungs-Bit in einem oder in jedem der Datenelemente in den wahren Zustand zu versetzen. Wenn die so markierten Datenelemente das Ende ihrer Reise durch die Gegenfluß-Verarbeitungs-Pipeline erreichen, können sie für eine Spezialverarbeitung ausgewählt werden. Eine weitere einfache Art einer Modifikation, die durchgeführt werden kann, wenn eine Übereinstimmung auftritt, besteht darin, einen gekennzeichneten Teil eines Datenelements in einen gekennzeichneten Teil des anderen Datenelements zu kopieren. Ein derartiger Kopiervorgang kann bewirken, daß ausgewählte Informationen von einem Datenstrom in den anderen bewegt werden. Eine weitere Form einer Modifikation, die durchgeführt werden kann, besteht darin, eines der Datenelemente als ungültig zu markieren, wenn eine Übereinstimmung auftritt, so daß weitere Stufen der Pipeline es ignorieren oder aus dem Datenstrom entfernen können. Weitere Formen von Modifikationen, die durchgeführt werden können, wenn es eine Übereinstimmung gibt, können arithmetische oder logische Operationen an den Datenelementen von den beiden Strömen beinhalten. Es wird für Fachleute offensichtlich sein, daß verschiedenste Operationen an den gesamten oder an Teilen der beiden Datenelemente möglich sind.
  • Es wird ebenfalls in Betracht gezogen, daß eine beliebige Stufe der Gegenfluß-Berechnungs-Pipeline eine gewöhnliche digitale Verarbeitung an einem Datenelement aus einem, oder aus dem anderen oder aus beiden Datenströmen ohne Bezug auf ein Datenelement aus dem anderen Strom durchführen kann. Die Form der Berechnung in einer Stufe kann eine Ähnlichkeit zu der in einer anderen Stufe durchgeführten Berechnung aufweisen oder nicht; die Stufen müssen in dieser Hinsicht nicht gleich sein. Beispielsweise kann eine bestimmte Stufe zwei Teile jedes Datenelements von dem Vorwärtsstrom addieren und ihre Summe als ein Teil des gleichen Datenelements aufzeichnen. Eine derartige Operation muß nicht vom Vorhandensein eines Datenelements von dem anderen Strom abhängen, und ist somit zu der Verarbeitung ähnlich, die nun gewöhnlicherweise bei Berechnungs-Pipelines durchgeführt wird. Es kann Spezialoperationen geben, die an den Elementen eines Stroms durchgeführt werden müssen, die für die Elemente des anderen Stroms irrelevant sind.
  • Einige Datenverarbeitungsoperationen werden nur durchgeführt, wenn es eine "Übereinstimmung" gibt. Derartige Operationen können arithmetische Berechnungen an den Werten der beiden Datenelemente, deren Übereinstimmung gefunden wurde, beinhalten. Sie können ebenfalls eine Substitution von Daten aus einem Datenelement in das andere beinhalten. Alternativ können sie beinhalten, daß Daten in dem einem oder dem anderen Datenelement durch Ändern des Zustands geeigneter Validierungs-Markierungs-Bits gültig oder ungültig gemacht werden. Für die Fachleute ist es klar, daß ein sehr breites Spektrum von möglichen Datenverarbeitungsoperationen möglich ist und für unterschiedliche Aufgaben wünschenswert sein kann.
  • Ein sehr nützliches Merkmal der vorliegenden Erfindung besteht darin, daß sie imstande ist, einen vollständigen und nicht redundanten Vergleich zu gewährleisten. "Vollständiger Vergleich" bedeutet, daß, wenn ein bestimmtes Datenelement aus dem Aufwärts-Strom an einem Datenelement aus dem Abwärts-Strom vorbeiläuft, die beiden gleichzeitig wenigstens eine Stufe der Gegenfluß-Berechnungs-Pipeline belegen werden und ein Vergleich stattfinden wird. Zwei derartige Datenelemente können nicht aneinander vorbeigehen, ohne sich in einer Stufe zu treffen. Wenn beide die gleiche Stufe der Gegenfluß-Berechnungs-Pipeline belegen, wird sie "voll" (F) sein, und die beiden Elemente können verglichen werden. Somit gewährleistet die vollständige Vergleichseigenschaft, daß jedes Element von einem Strom wenigstens einmal mit jedem Element des anderen Stroms verglichen wird, an dem es vorbei fließt.
  • "Nicht-redundanter Vergleich" bedeutet, daß jedes Datenelement von dem Vorwärtsstrom mit jedem Datenelement des Rückwärtsstroms höchstens einmal verglichen wird. Die hier beschriebene Gegenfluß-Berechnungs-Pipeline ist imstande, zu gewährleisten, daß jedes Datenelement aus einem Strom, das bereits ein Datenelement aus dem anderen Strom getroffen hat, es niemals erneut treffen wird.
  • Zusammen können die vollständige und die nicht redundante Eigenschaft der Gegenfluß-Berechnungs-Pipeline gewährleisten, daß jedes Datenelement aus einem Strom jedes Datenelement aus dem anderen Strom genau einmal trifft. Die vollständige und nicht redundante Eigenschaft der hier beschriebenen Gegenfluß-Berechnungs-Pipeline ("gegensynchronisierter Vergleich") macht sie für verschiedene Berechnungsaufgaben verwendbar.
  • Die in der Gegenfluß-Pipeline bereitgestellte Steuerschaltung zur Gewährleistung von Vergleichen unterscheidet die Gegenfluß-Pipeline von zwei getrennten Pipelines, die zufällig in entgegengesetzten Richtungen fließen. In dem Fall von zwei getrennten Pipelines, die parallel zueinander, jedoch in entgegengesetzten Richtungen fließen, kann ein nach oben fließendes Datenelement an einem nach unten fließenden Datenelement vorbeilaufen, ohne jemals die gleiche Stufe mit diesem zu belegen. Dies könnte auftreten, wenn die beiden Datenelemente benachbarte Stufen belegen, und dann in einem einzigen Moment die Plätze tauschen. Die beiden Datenelemente, obgleich sie aneinander vorbeigelaufen sind, könnten tatsächlich nie in Interaktion treten. Die Gegenfluß- Pipeline umfaßt eine bestimmte Schaltung, um dieses Ereignis zu verhindern.
  • Eine Erweiterung der Erfindung wird hier beschrieben, die es möglich macht, unnötige Datenelemente aus einem oder aus beiden Datenströmen zu löschen. Die Löschung ist nützlich, wo ein Vergleich zwischen Elementen der beiden Datenströme ein Datenelement aus dem einem oder dem anderen von ihnen obsolete macht. Obgleich die Löschung sowohl in der synchronen als auch in der asynchronen Ausführungsform der Erfindung arbeiten wird, kann sie bei der synchronen Ausführungsform eine "Blase" einführen.
  • Eine weitere Erweiterung der Erfindung wird hier beschrieben, die es möglich macht, neue Datenelemente in einen oder beide der zwei Datenströme einzufügen. Die Einfügung von neuen Datenelementen in den einen oder den anderen Datenstrom ist vorteilhaft, wenn die Berechnung an den vorliegenden Datenelementen neue Datenelemente erzeugt, die eine weitere Verarbeitung erfordern. Es hat sich bei einigen Anwendungen als nützlich herausgestellt, Datenelemente in den Abwärts-Strom als Antwort auf und als Ergebnis von Berechnungen einzufügen, die an Datenelementen in dem Aufwärts- Strom stattfinden. Da die Grundpipeline symmetrisch ist, ist es natürlich gleichfalls möglich, Datenelemente in dem Aufwärts-Strom als Antwort auf Ereignisse einzufügen, die in dem Abwärts-Strom auftreten.
  • Die hier beschriebene Gegenfluß-Pipeline kann Verzweigungsstrukturen aufweisen. Die einfachste Form einer Verzweigungsstruktur ist eine einfache Gabelung. Unter der Gabelung gibt es nur eine einzige Gegenfluß-Pipeline. Über der Gabelung gibt es zwei getrennte Gegenfluß-Pipelines, die die rechte Pipeline und die linke Pipeline genannt werden. Das System sieht wie der Buchstabe Y aus. Fachleute werden erkennen, daß aufgrund der Symmetrie der Gegenfluß-Pipeline eine Beschreibung einer derartigen einfachen Gabelung ausreicht, um jede Verzweigung oder Verbindungsstruktur möglich zu machen. Eine Struktur mit zwei Pipelines weiter unten und einer einzigen darüber ist nur die auf den Kopf gestellte "Y"-Struktur. Fachleute werden erkennen, daß Mehrfachverzweigungen und Verbindungen, die mehr als zwei Verzweigungen beinhalten, möglich sind.
  • Daten, die von unterhalb der Gabelung nach oben fließen, können entweder nach links oder nach rechts oder nach beiden Richtungen gesendet werden und zwar abhängig von einer Gabelungsregel. Eine derartige Regel kann ein unterscheidendes Merkmal der Datenelemente selber verwenden, um sie zu steuern. Beispielsweise können Elemente, die englische Wörter darstellen, in eine Pipeline gesendet werden, und Elemente, die französische Worte darstellen, in die andere gesendet werden. Andere Regeln sind ebenfalls möglich, einschließlich einer abwechselnden Verwendung der beiden Ausgangspipes, einer zufälligen Auswahl, einer Auswahl auf der Basis der weniger belegten Ausgangspipeline oder des nach oben Sendens eines Teils jedes Elements in jeder Pipe.
  • Die nach unten fließenden Ströme treffen sich an der Gabelung. Es muß erneut eine Wahl durchgeführt werden, wie die Elemente dieser beiden Ströme in einen einzigen Strom einzupassen sind. Eine Vielzahl von Regeln ist möglich, einschließlich einer abwechselnden Bedienung, Bedienung auf der Grundlage des ersten Ankommens, einer Bedienung auf der Grundlage des Dateninhalts, des paarweisen Kombinierens von Elementen, des Verbindens von Daten von jedem oder andere, die für Fachleute offensichtlich sind. Jede bestimmte Gabelung kann durch die zum Aufteilen des Aufwärts-Flusses verwendete Regel und die zum Kombinieren des Abwärts-Flusses verwendete Regel gekennzeichnet werden.
  • In den meisten Pipelines ist zweckmäßig, sich jede Stufe mit einem einzelnen Register für nach oben gehende Daten und einem anderen für nach unten gehende Daten vorzustellen. Es ist jedoch für eine einzige Stufe der Pipeline ebenfalls möglich, mehr als ein Register für Daten aufzuweisen, die in die eine oder die andere Richtung oder in beiden laufen. Ein derartiges System muß imstande sein, mehrfache Vergleiche durchzuführen, so daß jeder der verschiedenen nach oben gerichteten Datenwerte, die in der Stufe vorhanden sind, ordnungsgemäß mit jedem der nach unten gerichteten Werte verglichen werden kann.
  • Bestimmte Stufen der Pipeline können Signale von außerhalb der Pipeline annehmen. Derartige Signale können Spezialdaten an die Pipeline liefern, wie beispielsweise die Tageszeit, oder die Maßnahmen der Pipeline modifizieren. Beispielsweise kann eine bestimmte Stufe auf ein externes Ereignis warten, bevor eine bestimmte Berechnung ausgeführt oder ein bestimmtes Datenstück weitergeleitet wird. Es ist besonders vorteilhaft, einen derartigen Mechanismus zu verwenden, um Daten von einem externen Speichersystem anzunehmen.
  • Ebenso können bestimmte Stufen der Pipeline Signale an externe Einrichtungen liefern. Somit kann eine bestimmte Stufe der Pipeline eine physikalische Einrichtung, wie beispielsweise eine Glühlampe oder einen Summer steuern, um eine Bedienungsperson aufgrund eines bestimmten Zustandes zu warnen. Es ist besonders vorteilhaft, einen derartigen Mechanismus zu verwenden, um Daten und Adressen an ein externes Speichersystem zu liefern.
  • Es ist möglich, derartige externe Zusätze der Pipeline, als eine Pipeline-Gabelung mit einer Seite von sehr begrenzter Fähigkeit aufzubauen. Es ist jedoch häufig einfacher, jeden derartigen Zusatz als einen Sonderfall zu betrachten. Fachleute werden erkennen, daß das hier beschriebene Steuersystem derart angepaßt werden kann, daß es ein breites Spektrum derartiger externer Einrichtungen steuern kann.
  • Eine externe Einrichtung kann mit verschiedenen Stufen der Pipeline verbunden sein. Beispielsweise kann eine Speichereinrichtung Befehle von einer Stufe der Pipeline erhalten und Antworten an eine andere Stufe liefern. Eine derartige Verbindung wird hier als ein "Rangiergleis" bzw. Nebenarm aufgrund ihrer Ähnlichkeit zu dem Rangiergleis einer Eisenbahn an der Hauptstrecke bezeichnet.
  • Nebenarme sind immer dann vorteilhaft, wenn ein externer Prozeß länger dauert als das Bewegen von Daten von einer Stufe zu der nächsten in der Hauptpipeline. Ein Nebenarm kann seine Aufgabe ausführen, während sich Daten entlang der Hauptpipeline bewegen, und seine Antwort an den geeigneten Punkt in der Pipeline liefern, um den Erfordernissen der voranschreitenden Daten zu entsprechen. Beispielsweise kann ein Speicher-Nebenarm den benötigten Wert in einem externen Speicher nachschlagen, während sich das Datenelement, das den Speicherwert benötigt, entlang der Hauptpipeline bewegt. Ebenso kann ein arithmetischer Nebenarm eine schwierige arithmetische Funktion berechnen, beispielsweise eine Division, während andere Operationen in der Hauptpipeline durchgeführt werden. Derartige Speicher-Nebenarme und arithmetischen Nebenarme ermöglichen die Anpassung der relativ hohen Geschwindigkeit einer Gegenfluß-Pipeline an die niedrigere Geschwindigkeit vieler nützlicher Rechenoperationen anzupassen.
  • Synchrone und asynchrone Verfahren
  • Die vorliegende Erfindung umfaßt sowohl synchrone als auch asynchrone Ausführungsformen für Gegenfluß-Berechnungs- Pipelines. Bei einer synchronen Ausführungsform bewegen sich Daten von einer Stufe der Pipeline zu der nächsten wenn überhaupt nur beim nächsten Eintreffen eines externen Timing bzw. Zeitgabe-Signals, das als "Takt" bezeichnet wird. Bei einer synchronen Ausführungsform bleiben die Daten zwischen den Taktsignalen stationär. Bei einer synchronen Ausführungsform werden Daten ebenfalls stationär bleiben, wenn es keinen Platz gibt, um sie bei ihrem nächsten Ziel unterzubringen. Bei einer synchronen Ausführungsform einigen sich die Sende- und Empfangsstufe darauf, welche Taktereignisse zum Weiterleiten von Daten nach oben oder nach unten je nachdem zu verwenden sind.
  • Bei einer asynchronen Ausführungsform einer Gegenfluß- Berechnungs-Pipeline bewegen sich Daten zwischen Stufen, wann immer sich die Sende- und Empfangsstufe darauf einigen, daß sie sich so bewegen sollen und zwar unabhängig von einem externen Taktsignal. Bei einer asynchronen Ausführungsform ist jedes Datenelement aus dem Vorwärtsstrom frei, sich vorwärts zu bewegen, sobald es Platz für dieses in der nächsten Stufe gibt, es nicht länger in dieser Stufe benötigt wird und so schnell wie es die lokale Schaltung gestattet. Jedes Datenelement von dem Rückwärtsstrom ist frei, sich rückwärts zu bewegen, sobald es Platz für dieses in der vorherigen Stufe gibt und so schnell wie es die lokale Schaltung gestattet.
  • Ein sehr vorteilhafter Aspekt der vorliegenden Erfindung ist ihre Fähigkeit, die vollständige und nicht redundante Vergleichseigenschaft, die "gegensynchronisierter Vergleich" genannt wird, in Verbindung mit einer asynchronen oder ungetakteten lokalen Steuerung der Datenbewegung bereitzustellen.
  • Beschreibung der bevorzugten Ausführungsform
  • In den Fig. 1A, 1B und 1C sind die Stufen 20, 30 oder 40 übereinander angeordnet, wobei die Daten "aufwärts" oder "abwärts" durch die auf diese Weise gebildete Pipeline fließen. Die Wörter "aufwärts" und "abwärts" beziehen sich in diesem Zusammenhang nur auf die Richtungen in der Zeichnung und weisen nur eine zufällige Ähnlichkeit zu den tatsächlichen Richtungen des Flusses in einem realen System auf. Überall in dieser Beschreibung der Erfindung werden "aufwärts" und "abwärts" nur verwendet, um eine zweckmäßige Unterscheidung zwischen den beiden Richtungen des Datenflusses zu ermöglichen.
  • Die vorliegende Erfindung liefert den Steuermechanismus für einen Satz ähnlicher Stufen, die in zwei Richtungen kommunizieren und einen Vorwärts- und Rückwärts-Datenfluß ermöglichen. Das Blockdiagramm der allgemeinsten Form der vorliegenden Erfindung ist in Fig. 1A gezeigt. Wie es in Fig. 1A dargestellt ist, gibt es verschiedene Stufen 20 einer Datenpipeline 50, die mit STUFE N, STUFE N-1, STUFE N+1 u. s. w. bezeichnet sind. Diese Datenstufen kommunizieren in zwei Richtungen mit Hilfe der Datenpfade 22, 24 und 26. In einigen Fällen kann die Aufwärts- und Abwärts-Kommunikation auf getrennten Pfaden, wie beispielsweise 24 und 26 stattfinden, oder auf einem einzigen Pfad, der reversibel bzw. umkehrbar verwendet wird, wie es durch 22 dargestellt ist, oder es können Kombinationen dieser Anordnungen sein.
  • Das Steuersystem 52 für diese Stufen tritt mit ihnen mit Hilfe von Steuersignalen in das Steuersystem und die Stufen verbindenden Steuerpfaden 28 in Interaktion. Einige Steuersignale fließen von der Steuerung an die Stufen und dienen zum Steuern der Maßnahmen bzw. Aktionen der Stufen. Andere Steuersignale fließen von den Stufen an das Steuersystem, um den Zustand der Stufen oder Informationen über ihren Dateninhalt anzugeben.
  • Es muß erkannt werden, daß die Anordnung gemäß Fig. 1A nur zur Veranschaulichung bestimmt ist. Einige der in Fig. 1A gezeigten Datenpfade können fehlen, einige können mehr Informationen als andere transportieren und es können nicht gezeigte spezielle Datenpfade enthalten sein. Die vorliegende Erfindung berücksichtigt viele derartige Variationen, die für Fachleute offensichtlich sind.
  • Das Steuersystem 52 ermöglicht den geordneten Fluß von Daten durch die Stufen. Datenelemente können in beiden Richtungen zwischen den Stufen fließen und können zu verschiedenen Zeiten oder gleichzeitig zwischen verschiedenen Stufen fließen.
  • Das Steuersystem 52 ermöglicht den gegensynchronisierten Vergleich der in einer Richtung durch den Datenpfad fließenden Daten mit den in der anderen Richtung fließenden Daten.
  • Bei einer weiteren Form der Erfindung ist das Steuersystem in die Stufen selber verteilt. Wie es in Fig. 1B dargestellt ist, kann die Pipeline einen Satz von ähnlichen Stufen 30 mit Hilfe von breiten Pfeilen dargestellten Datenpfaden 32 und 36 und mit Hilfe von schmalen Pfeilen dargestellten Steuerpfaden 34, die zwischen ihnen verlaufen, umfassen. In Fig. 1B sind getrennte Datenpfade für die Aufwärts- und Abwärts-Richtungen des Datenflusses dargestellt. In Fig. 1C wird ein gemeinsamer Datenpfad 42 für beide Richtungen des Datenflusses verwendet. Wie es in den Fig. 1A, 1B und 1C dargestellt ist, gibt es verschiedene Stufen der Pipeline, die als 20, 30 oder 40 gekennzeichnet sind und mit STUFE N, STUFE N-1, STUFE N+1 u. s. w. bezeichnet sind.
  • Wie es in Fig. 1B dargestellt ist, kommunizieren die Stufen in der Aufwärts-Richtung mit Hilfe des Datenpfads 32 und in der Abwärts-Richtung mit Hilfe des Datenpfads 36. Die Datenpfade sind als Doppelpfeile gezeichnet, um anzugeben, daß sie viele Daten-Bits parallel transportieren können. Datenelemente für den Aufwärtsstrom treten in diesen an dem unteren Eingangs-Port 31 ein und verlassen ihn aus dem oberen Ausgangs-Port 33. Datenelemente für den Abwärts-Strom treten in ihn an dem oberen Eingangs-Port 35 ein und verlassen ihn aus dem unteren Ausgangs-Port 37.
  • Parallel und zusätzlich zu den in Fig. 1B gezeigten Datenkommunikationspfaden gibt es ebenfalls Steuerpfade 34. Diese Pfade sind durch einen schmalen Pfeil mit zwei Pfeilspitzen angegeben, um anzugeben, daß Steuersignale in jeder Richtung fließen können, um die Aktionen der Stufen zu steuern. Der Doppelpfeil soll angeben, daß Steuersignale auf getrennten Pfaden sowohl aufwärts als auch abwärts fließen können. Die Steuerpfade geben dem Steuersystem in jeder Stufe Informationen über benachbarte Stufen an, so daß jede Steuerung für einen geordneten Fluß von Informationen in den Datenkommunikationspfaden sorgen kann.
  • Es wird später ersichtlich sein, daß es bei einigen Implementierungen für die Aufwärts- und Abwärts-Datenbewegungen möglich ist, den gleichen Datenpfad zu verwenden, da sie zu unterschiedlichen Zeiten auftreten müssen. Es kann in einigen Fällen wünschenswert sein, den gleichen Datenpfad 42 zur Kommunikation in sowohl der Aufwärts- als auch der Abwärts Richtung zu verwenden, wie es in Fig. 1C gezeigt ist. Hier wird ein einziger bidirektionaler Datenpfad 42 sowohl für die aufwärts als auch für die abwärts fließenden Datenelemente verwendet. Ein Steuerpfad 44 übermittelt Steuerinformationen zwischen den Stufen.
  • Die Komponenten einer einzigen Stufe der Gegenfluß-Berechungs-Pipeline sind in Fig. 2A gezeigt. Jede Stufe umfaßt wenigstens ein Speicherelement, z. B. Register 60, um ein Datenelement von dem Aufwärts-Datenstrom unterzubringen, und ein zweites Register 66, um ein Datenelement von dem Abwärts-Datenstrom unterzubringen. Die Register 60 und 66 sind mit Datenkommunikationspfaden 32 bzw. 36 verbunden, die jede Stufe mit ihren angrenzenden benachbarten Stufen verbinden. Datenelemente fließen von den Registern in einer Stufe an die Register in der angrenzenden Stufe entlang dieser Kommunikationspfade. Wie es durch die Differenz in der Größe der Register 60 und 66 angedeutet ist, müssen die beiden Register weder die gleiche Informationsmenge noch die gleiche Anzahl von Bits halten.
  • Jedes der Register in einer einzelnen Stufe kann ein Datenelement enthalten oder leer sein. Bei der in Fig. 2A betrachteten Ausführungsform wird ein Markierungs-Flip-Flop 62 und 64 für jedes der Register verwendet, um anzugeben, ob es voll oder leer ist. Wenn es auf Eins oder Null gesetzt ist, gibt das Markierungs-Flip-Flop 62 an, daß ein Datenelement in dem Aufwärts-Register 60 vorhanden ist bzw. fehlt. Wenn es auf Eins oder Null gesetzt ist, gibt das Markierungs- Flip-Flop 64 an, daß ein Datenelement in dem Abwärts-Register 66 vorhanden ist bzw. fehlt.
  • Die Zustände dieser beiden Markierungs-Flip-Flops geben zusammen vier verschiedene Zustände für die Stufe an, wobei "voll" (F) und "leer" (E) die zwei am einfachsten zu benennenden sind, die angegeben werden, wenn beide Markierungs- Bits auf Eins bzw. beide auf Null gesetzt sind. Die anderen zwei Zustände treten auf, wenn nur ein einziges Datenelement vorhanden ist, d. h. die Stufe "halbvoll" ist, und werden abhängig davon, ob ein sich abwärts bewegendes Datenelement oder ein sich aufwärts bewegendes Datenelement vorhanden ist, (D) bzw. (U) benannt.
  • Bei einigen Ausführungsformen der Gegenfluß-Berechnungs- Pipeline können die leeren und vollen Zustände der Register 60 und 66 durch andere Mechanismen als die Markierungs-Flip- Flops 62 bzw. 64 bestimmt werden. Wie es in dem US-Patent Nr. 4 837 740 beschrieben wurde, können in einem asynchronen System beispielsweise Signale, die den vollen oder leeren Zustand der Register kennzeichnen, als das exklusive ODER von zwei Steuersignalen an dem Register hergeleitet werden.
  • Diese Form des Markierers kann ebenfalls in der Gegenfluß- Berechnungs-Pipeline verwendet werden.
  • Die Steuerschaltung 68 in jeder Stufe ist mit den Registern 60 und 66 und mit den Flip-Flops 62 und 64 verbunden. Außerdem kann jede Stufe der Gegenfluß-Berechnungs-Pipeline Vergleichsschaltungen enthalten, wie es in Fig. 2B dargestellt ist. In dieser Figur wurde das Aufwärts-Register 60 von Fig. 2A in zwei Teile 60a und 60b und das Abwärts-Register 66 von Fig. 2A in zwei Teile 66a und 66b aufgeteilt. Ein Teil oder beide Teile jedes Registers können einen Multiplexer 70 und 76 aufweisen, der mit dessen Eingang verbunden ist, so daß der Teil Daten entweder von dem Kommunikationspfad-Eingängen oder von dem Vergleichs- und Berechnungsblock 72 nehmen kann. Die Register, Multiplexer und externen Steuersignale werden alle von der Steuerschaltung 68 verwaltet. Bei den meisten Anwendungen wird jede Stufe wenigstens eine minimale Vergleichsschaltung enthalten, um die "gegensynchronisierte Vergleich"-Eigenschaft bereitzustellen, die für Gegenfluß-Pipelines möglich ist.
  • Wie es in Fig. 2B gezeigt ist, kann eine Vergleichsschaltung, die ein Teil des Vergleichs- und Berechnungsblocks 72 ist, den Teil 60a des Aufwärts-Registers 60 mit dem Teil 66a des Abwärts-Registers 66 vergleichen. Natürlich kann der Vergleich jeweils mehr oder weniger oder sogar das gesamte Register umfassen, falls es gewünscht ist; die Tatsache, daß ein bestimmter Teil in Fig. 2B dargestellt ist, dient nur zur Veranschaulichung. In Fig. 2B sind diese Vergleichsschaltungen so dargestellt, daß sie an ungefähr der Hälfte der Informationen in jedem der Register arbeiten, die entlang der Datenpfade 71 bzw. 77 bereitgestellt werden. Bei verschiedenen Ausführungsformen der Erfindung können diese Schaltungen jedoch mehr oder weniger der in dem Register verfügbaren Daten verwenden, und zwar abhängig von der vorliegenden Berechnungsaufgabe.
  • Die Vergleichsschaltungen in dem Vergleichs- und Berechnungsblock 72 können einen arithmetischen oder logischen Vergleich durchführen, wobei eine oder mehrere "Übereinstimmungs"-Bedingungen erfaßt werden. Diese Übereinstimmungsbedingungen werden der Steuerschaltung entlang der Steuerpfade 76 gemeldet. Diese Übereinstimmungsbedingungen können auf der Grundlage eines bitweisen Vergleichs einiger Datenfelder innerhalb der beiden Register berechnet werden. Beispielsweise kann eine Übereinstimmung angegeben werden, wenn der erste Buchstabe eines aufwärts gerichteten englischen Worts mit dem ersten Buchstaben eines abwärts gerichteten englischen Worts übereinstimmt. Alternativ kann eine Übereinstimmung angegeben werden, wenn der arithmetische Wert von einem Feld eines Registers den Wert eines Felds in dem anderen Register überschreitet. Fachleute werden verschiedenste "Übereinstimmungs"-Bedingungen erkennen, die für unterschiedliche Zwecke erfaßt werden können.
  • Es ist ebenfalls möglich und manchmal nützlich, eine Mehrzahl von Übereinstimmungsbedingungen für unterschiedliche Zwecke aufzuweisen. Einige Arten von Übereinstimmungen können eine Modifikation in dem aufwärts gerichteten Datenelement verursachen, während andere eine Modifikation in dem abwärts gerichteten Datenelement verursachen können. Das Ausmaß und die Art der Modifikation kann durch die bestimmte Art der "Übereinstimmung" gesteuert werden, die erfaßt wurde.
  • Unter der Steuerung dieser Übereinstimmungsbedingungen werden Schaltungen zum Modifizieren des Inhalts der Register ins Spiel gebracht. In Fig. 2B beinhalten diese Modifikationsschaltungen Datenausgänge von dem Vergleichs- und Berechnungsblock 72. Die Ausgangsdaten von diesem Block können jede berechenbare Funktion seiner Eingangsdaten sein. Somit können die an den Multiplexer 70 in dem aufwärts gerichteten Datenpfad entlang des Datenpfads 75 gesendeten Werte eine beliebige Kombination der Datenwerte in dem Aufwärts-Register allein oder in dem Abwärts-Register allein oder eine Kombination von beiden sein. Ebenso können die an den Multiplexer 76 in dem abwärts gerichteten Datenpfad entlang des Datenpfads 73 gesendeten Werte eine beliebige Kombination der Datenwerte in dem Aufwärts-Register allein oder in dem Abwärts-Register allein oder eine Kombination von beiden sein.
  • Insbesondere sollen die in Fig. 2B dargestellten Modifikationsschaltungen die Möglichkeit beinhalten, Daten von einem Register in das gesamte oder einen Teil des anderen Registers zu kopieren. Die Tatsache, daß der Multiplexer 70 nur einen Teil 60a des aufwärts gerichteten Registers 60 speist, ist nicht dazu bestimmt, tatsächliche Schaltungen so zu begrenzen. Fachleute werden sofort erkennen, daß die relative Größe des festen Abschnitts 60b und des Multiplexergespeisten Abschnitts 60a eines derartigen Registers beliebig ausgewählt werden kann, um den Erfordernissen einer bestimmten Anwendung zu entsprechen. Ebenso kann es in Fig. 2B erscheinen, daß der gleiche Abschnitt 60a des aufwärts gerichteten Registers sowohl als Eingabe in die Datenvergleichs- und Berechnungsschaltungen 72 als auch als der zu modifizierende Abschnitt verwendet wird, wobei dies die tatsächlichen Ausgestaltungen jedoch nicht begrenzen soll. Fachleute werden erkennen, daß jeder Abschnitt des aufwärts gerichteten Registers 60 als Eingabe für die Daten-Vergleichs- und Berechnungsschaltungen verwendet werden kann, und ein beliebiger anderer Abschnitt des Registers 60 mit dem Multiplexer verbunden sein kann, und daß sich diese beiden Abschnitte, wenn überhaupt, auf jede gewünschte Art überlappen können.
  • Die in Fig. 2B dargestellten Modifikationsschaltungen sollen verschiedenste spezielle Operationen darstellen, die an dem Inhalt von einem Register alleine durchgeführt werden können. Die Schaltungen gemäß Fig. 2B sollen außerdem Schaltungen darstellen, die den Inhalt der beiden Register kombinieren und eines oder beide von ihnen als Ergebnis modifizieren. Fachleute werden schnell erkennen, daß eine beliebige Anzahl derartiger Modifikationsschaltungen in einer Gegenfluß-Verarbeitungs-Pipeline enthalten sein könnte. Diejenigen, die dargestellt sind, sollen nur die verschiedensten möglichen Berechnungskonfigurationen andeuten, die verwendet werden können.
  • Der Betrieb der Stufe der Gegenfluß-Berechnungs-Pipeline wird von einem Steuersystem gesteuert. Dieses Steuersystem kann für eine bestimmte Stufe der Pipeline lokal sein, wie es bei 68 in Fig. 2A und 2B dargestellt ist.
  • Das für die grundlegende Gegenfluß-Berechnungs-Pipeline bevorzugte Steuersystem ist am besten mit Bezug auf das Zustandsdiagramm von Fig. 3 zu verstehen. Die fünf Kreise in diesem Zustandsdiagramm stellen die fünf Hauptzustände dar, die eine einzige Stufe der Gegenfluß-Berechnungs-Pipeline im Einsatz durchlaufen kann. Von diesen Hauptzuständen wurden vier bereits erwähnt, d. h. (F), (E), (D) und (U). Diese Namen sind vollständig beliebig; die speziellen verwendeten Namen sind natürlich nicht für die Arbeitsweise der Erfindung relevant.
  • Die Pfeile in Fig. 3 stellen mögliche Änderungen in dem Grundzustand der beschriebenen einzelnen Stufe dar. Somit kann beispielsweise das Eintreffen eines neuen aufwärts gerichteten Datenelements, das durch den mit "Aufwärts aufnehmen" bzw. "get up" bezeichneten Pfeil dargestellt ist, den Zustand von (E) nach (U) oder von (D) nach (F) ändern. Ebenso kann das Eintreffen eines neuen abwärts gerichteten Datenelements, das durch den "Abwärts aufnehmen" bzw. "get down" bezeichneten Pfeil dargestellt ist, den Zustand von (E) nach (D) oder von (U) nach (F) ändern. Ebenso kann der Abgang eines aufwärts gerichteten Datenelements, der durch den mit "aufwärts weiterleiten" bezeichneten Pfeil dargestellt ist, den Zustand der Stufe von (U) nach (E) ändern, und der Abgang eines abwärts gerichteten Datenelements, der durch den mit "abwärts weiterleiten" bezeichneten Pfeil dargestellt ist, den Zustand der Stufe von (D) nach (E) ändern.
  • Die Übergänge zwischen den in Fig. 3 gezeigten Zuständen wurden oben teilweise beschrieben. Das Folgende ist eine vollständige Beschreibung von ankommenden Daten. Wenn sie leer (E) ist, kann jede Stufe der Gegenfluß-Berechnungs-Pipeline ein Datenelement von beiden Datenströmen aufnehmen. Somit gibt es zwei Zustandsübergänge, die den Zustand leer (E) in Fig. 3 verlassen. Diese sind: 1) Wenn die Stufe ein aufwärts gerichtetes Datenelement aufnimmt, wird sie in den Zustand (U) eintreten; 2) wenn sie ein abwärts gerichtetes Datenelement aufnimmt, wird sie in den Zustand (D) eintreten. Es sei bemerkt, daß, wie es in der Figur gezeigt ist, die Stufe von dem Zustand (D) noch ein aufwärts fließendes Datenelement aufnehmen kann, um voll (F) zu werden, und ebenso die Stufe von dem Zustand (U) noch ein abwärts fließendes Datenelement aufnehmen kann, ebenfalls um voll (F) zu werden. Es könnte passieren, daß ausgehend von dem leeren- Zustand ein aufwärts und ein abwärts fließendes Datenelement gleichzeitig ankommen können, und somit kann sich das System von dem Zustand (E) direkt in den Zustand (F) bewegen. Diese Möglichkeit ist in der Figur als eine gepunktete Linie dargestellt, da ihre Aktion unter die getrennte Ankunft der beiden Datenelemente subsumiert wird. Fig. 3 berichtet genau, daß, wenn die Stufe nicht voll (F) ist, sie ein Datenelement in demjenigen ihrer Register oder beiden annehmen kann, das/die nicht bereits belegt ist/sind.
  • Der Abgang von Datenelementen aus der Stufe ist eingeschränkter. In Fig. 3 gibt es keine Pfeile, die von dem Zustand (F) zu einem anderen Zustand als (C) führen. Wenn die Stufe nur einen abwärts fließenden Datenwert enthält (Zustand (D)), kann sie somit das Datenelement weiterleiten und sich in den Zustand (E) bewegen. Wenn die Stufe nur einen aufwärts fließenden Datenwert enthält (Zustand (U)), kann sie das Datenelement ebenso weiterleiten und sich in den Zustand (E) bewegen. Wenn sie beide Datenelemente aufweist (Zustand (F)), kann sie jedoch solange keines von beiden weiterleiten, bis der Vergleich abgeschlossen ist (Zustand (C)). Das Zustandsdiagramm gemäß Fig. 3 gibt an, daß es Datenelementen solange untersagt wird abzugehen, nachdem eine Stufe den Zustand (F) erreicht hat; bis die Stufe den Zustand (C) erreicht.
  • Um das ordnungsgemäße Funktionieren der Pipeline zu verstehen, ist es notwendig, den fünften Zustand des Zustandsdiagramms gemäß Fig. 3, genannt (C) für "abgeschlossen (Complete)", zu verstehen.
  • Das Weitergehen vom Zustand (F) des Zustandsdiagramms in den Zustand (C) beinhaltet die Vergleichsoperation an den beiden Datenelementen. Wenn der Zustand (F) erreicht ist, sind beide Datenelemente gleichzeitig vorhanden und müssen verglichen werden. Wenn der Vergleich abgeschlossen ist und alle durch irgendeine der "Übereinstimmungs"-Bedingungen erforderliche Aktionen beendet sind, sagt man, daß das System den Zustand (C), der abgeschlossen (complete) bedeutet, erreicht hat, und die Datenelemente sind dann frei abzugehen. Bevorzugte Ausführungsformen der Erfindung implementieren diese Zustandsübergänge genau. Ein richtiges Implementieren dieser gewährleistet die vollständige und nicht redundante Vergleichseigenschaft, genannt "gegensynchronisierter Vergleich", die bei bestimmten Anwendungen von Gegenfluß-Pipelines sehr zweckmäßig ist.
  • Welchen Zustand eine Stufe der Gegenfluß-Berechnungs- Pipeline belegt, kann durch drei Flip-Flops angegeben werden, von denen zwei in Fig. 2A gezeigt sind. Die beiden in Fig. 2A gezeigten Markierungs-Bits 62 und 64 können angeben, ob die beiden Register belegt sind. Ein dritter Indikator ist erforderlich, um zu melden, ob der Zustand abgeschlossen (C) erreicht wurde oder nicht. Es gibt viele Mechanismen, die verwendet werden können, um den Zustand der Stufe anzugeben. Beispielsweise kann bei der asynchronen Ausführungsform der Erfindung der Zustand aus verschiedenen Steuersignalen hergeleitet werden, wie es später erläutert wird. Fachleute werden diverse verschiedene Mechanismen zum Unterscheiden der fünf Grundzustände erkennen. Außerdem kann, wie wir später sehen werden, jeder der fünf Grundzustände in viele Unterzustände weiter aufgeteilt werden. Bei bestimmten Anwendungen der Gegenfluß-Berechnungs-Pipeline ist es bedeutsam, daß diese fünf Grundzustände getrennt sind, und daß die Übergänge zwischen ihnen den in Fig. 3 gezeigten Charakter haben, so daß die Gegenfluß-Pipeline die "gegensynchronisierte Vergleich"-Eigenschaft anbieten kann.
  • Eine Spezialschaltung kann in dem Steuersystem für jede Stufe der Gegenfluß-Berechnungs-Pipeline oder zwischen Stufen enthalten sein, um ein ordnungsgemäßes Weiterleiten der Daten gemäß den in dem Zustandsdiagramm gemäß Fig. 3 umrissenen Regeln zu gewährleisten. Wenn das Zustandsdiagramm gemäß Fig. 3 einfacher wäre, könnten getrennte Steuerungen für den Aufwärts- und Abwärts-Fluß der Daten verwendet werden. Es wird jedoch eine komplexere Steuerung bevorzugt, da das Zustandsdiagramm gemäß Fig. 3 verlangt, daß jede Stufe, wenn sie voll ist, eine Übereinstimmung oder einen Vergleich und zugehörige Daten-Modifikationsoperationen vor dem Weiterleiten von Daten in irgendeine Richtung beenden muß. Fachleute können sich viele derartiger Steuerschaltungen ausdenken. Zwei von ihnen, eine für eine synchrone Ausführungsform und eine für eine asynchrone Ausführungsform, werden nachstehend beschrieben.
  • Synchrone Steuerung
  • Eine synchrone Form der Steuerung ist in Fig. 4 mit besonderem Schwerpunkt auf der Kommunikation zwischen Stufen dargestellt. Jede Stufe informiert ihren Nachbarn über ihren gegenwärtigen Zustand unter Verwendung der in der Figur gezeigten Signalisierungsschaltung 80 und 82. Jede dieser Signalisierungsschaltungen ist mit einem Schrägstrich und der Ziffer "3" markiert, um anzugeben, daß drei Bits von Informationen vorzugsweise bereitgestellt werden, um einen vollen Bericht des Zustands der berichtenden Stufe zu geben. Während des Intervalls zwischen von dem Taktgeber 78 bereitgestellten Taktimpulsen weist jede Stufe alle Informationen auf, die erforderlich ist, um zu entscheiden, ob Daten in den Kommunikationspfaden zwischen der Stufe und ihren Nachbarn bewegt werden sollten, und, wenn Daten zu bewegen sind, ob die Übertragung aufwärts oder abwärts sein sollte. Es gibt nur 25 Fälle, die dem Produkt der fünf möglichen Zustände in jeder der beiden benachbarten Stufen entsprechen. Der kombinierte Zustand der beiden Stufen wird durch die beiden Buchstaben gekennzeichnet, die ihre getrennten Zustände darstellen, wobei der Zustand der unteren Stufe zuerst aufgezeichnet wird. Somit bedeutet beispielsweise (E, D) , daß die untere Stufe leer ist und daß die obere Stufe abwärts gerichtete Daten aufweist.
  • Bei diesen 25 möglichen gepaarten Zuständen ist ein aufwärts gerichtete Datenfluß nur in den gepaarten Zuständen (U, E), (C, E), (U, D) und (C, D) möglich. Nur diese Zustände gestatten einen Fluß nach oben, da nur diese Zustände Platz für die aufwärts gerichteten Daten in der Stufe darüber aufweisen und aufwärts gerichtete Daten in der Stufe darunter verfügbar sind. Auf ähnliche Weise gestatten nur die gepaarten Zustände (E, D), (E, C), (U, D) und (U, C) die Übertragung von Daten nach unten. Es sei bemerkt, daß bei dem gepaarten Zustand (U, D) entweder ein Fluß von Daten nach oben oder nach unten möglich ist, wobei die eine oder die andere Datenbewegung gewählt werden muß. Wenn beide auf einmal gestattet würden, könnte ein aufwärts gerichtetes Datenelement und ein abwärts gerichtetes Datenelement ihre Plätze tauschen und weitergeleitet werden, ohne daß sie in einer der beiden Stufen verglichen worden wären. Dies würde die Pipeline daran hindern, einen vollständigen Vergleich zu liefern und somit ihre "gegensynchronisierte Vergleich"- Eigenschaft zerstören.
  • Die synchrone Steuerung kann dann entscheiden, wann Daten auf der Grundlage der kombinierten Zustände benachbarter Stufen zu bewegen sind. In dem Fall (U, D) müssen beide Stufen die gleiche Entscheidung treffen. Man könnte eine Steuerung entwickeln, in der diese Entscheidung darin besteht, Daten immer aufwärts weiterzuleiten, immer abwärts weiterzuleiten oder abwechselnd zu wählen oder gemäß einer anderen Regel weiterzuleiten. Solange wie sich beide Stufen über die Regel einig sind, wird jede Regel funktionieren.
  • Asynchrone Steuerung
  • Die asynchrone Ausführungsform der Erfindung kann etwas komplexer sein. Die fundamentale Schwierigkeit ist dem Zustandsdiagramm gemäß Fig. 3 eigen. Von dem Zustand (D) kann eine Stufe Daten abwärts weiterleiten, wobei sie jedoch nach der Ankunft eines aufwärts gerichteten Datenelements, das die Stufe in den Zustand (F) treibt, nicht länger die abwärts gerichteten Daten weiterleiten kann. Somit muß das Steuersystem vorbereitet sein, sauber zu entscheiden, ob es richtig ist oder nicht, ein Datenelement angesichts einer asynchronen Ankunft eines anderen in dem anderen Datenpfad weiterzuleiten. Diese Entscheidung ist genau die Entscheidung, ob der an die Stufe angrenzende Kommunikationspfad in der Abwärts-Richtung oder in der Aufwärts-Richtung zu verwenden ist.
  • Ein Verständnis dieser Notwendigkeit macht es einfacher, die erforderliche Steuerung zu verstehen. Eine Möglichkeit zur Lieferung der erforderlichen Entscheidung, besteht darin, eine Arbiter-Schaltung an jedem Kommunikationspfad anzuordnen, um eine saubere Antwort im Falle eines Konflikts zwischen aufwärts gerichteten und abwärts gerichteten Daten zu liefern. Ein derartiger Konflikt entsteht in dem Zustand (U, D), d. h. wenn die untere Stufe aufwärts und die obere Stufe abwärts kommunizieren kann, genauso wie sie es bei der Synchronsteuerung getan hat. Ein asynchrones Steuersystem kann jedoch nicht allein auf der Basis der Priorität oder einer abwechselnden Bedienung entscheiden, in welche Richtung die Daten zu bewegen sind. Die Entscheidung ist komplexer, da es möglich ist, daß in letzter Zeit keine Daten weitergeleitet wurden, und dann plötzlich eine Anforderung für eine aufwärts gerichtete und eine abwärts gerichtete Kommunikation fast zum gleichen Zeitpunkt ankommen kann.
  • Es ist für diejenigen offensichtlich, die mit asynchronen Systemen vertraut sind, daß die nahezu gleichzeitige Ankunft von konkurrierenden Anforderungen mit Sorgfalt gehandhabt werden muß. Arbiter-Schaltungen, um mit dieser Art von Konflikt umzugehen, sind in der Technik bekannt. Geeignete Arbiter-Schaltungen werden in Charles L. Seitz (Verfasser), "Ideas about Arbiters", in Lambda (Magazin), Erstes Quartal 1980, oder in Philip J. Keller, "Arbiter Circuit", US-Patent Nr. 4 398 105 beschrieben.
  • Fig. 5 stellt das System-Blockdiagramm für das bevorzugte asynchrone Design dar. Zwischen jedem Paar von Stufen liegt eine "COP" 89, die einen Arbiter enthält, um Konflikte darüber aufzulösen, welchen Weg die Signale fließen sollen. Die Stufen geben ihre Wünsche an die COP entlang der Steuerpfade 84 und 85 an. Diese Steuerpfade sind durch einen Schrägstrich und die Ziffer 3 markiert, um anzugeben, daß mindestens drei Zustandsbits entsprechend den Zuständen gemäß Fig. 3 angegeben werden müssen. Unter Verwendung ihres Arbiters steuert die COP den Fluß von Daten zwischen den Stufen, wobei die Stufen über Steuerpfade 86 und 88 informiert werden, ob der Aufwärts-Kommunikationspfad 32 oder der Abwärts-Kommunikations-Pfad 36 als nächstes zu verwenden ist. Die COP muß nicht an dem tatsächlichen Fluß von Daten teilnehmen, sie gibt nur die Erlaubnis an die angrenzenden Stufen, die Daten aufwärts oder abwärts zu bewegen. Der Sender und der Empfänger tauschen die Daten unter Verwendung der Datenpfade 32 und 36 aus und unter Verwendung beliebiger zwischen ihnen erforderlicher Steuerpfade zum Steuern der Einzelheiten des Datenflusses. In Fig. 5 sind nur die Steuerpfade, die erforderlich sind, um die Entscheidung zwischen dem Fluß von Daten nach oben und nach unten durchzuführen, dargestellt. Zusätzliche Steuerpfade, die nicht gezeigt sind, werden erforderlich sein, um den Fluß von Daten entlang der Datenpfade 32 oder 36, je nach der Auswahl, zu steuern.
  • Eine Ausführungsform des Steuersystems verwendet die folgenden Signale an und von der COP. Die Signale sind Ereignissignale, die in der zuvor zitierten Veröffentlichung "Mikropipelines" beschrieben und der Fig. 10 zu entnehmen sind.
  • In dem abwärts gerichteten Steuerpfad 84 bedeuten:
  • AU? Ich kann ein aufwärts fließendes Datenelement annehmen
  • PD? Ich kann ein abwärts fließendes Datenelement weiterleiten
  • CD Mein Steuersystem ist für eine weitere Kommunikation bereit
  • In dem aufwärts gerichteten Steuerpfad 85 bedeuten:
  • PU? Ich kann ein aufwärts fließendes Datenelement weiterleiten
  • AD? Ich kann ein abwärts fließendes Datenelement annehmen
  • CU Mein Steuersystem ist für eine weitere Kommunikation bereit
  • Die Ausgaben von der COP bedeuten:
  • GU! Sie können aufwärts kommunizieren (Steuerleitung 86)
  • GD! Sie können abwärts kommunizieren (Steuerleitung 88)
  • Die Signale mit "?" in ihren Namen und die Signale CD und CU geben der COP die Bereitschaft der beiden Stufen zur Kommunikation an. Die COP entscheidet, in welcher Richtung die Kommunikation stattzufinden hat und teilt den beiden Stufen mit, was mit den Signalen mit einem "!" in ihren Namen zu tun ist. Unter der Steuerung dieser Signale können die Stufen ihre Maßnahmen bzw. Aktionen ordnungsgemäß durchführen.
  • Fachleute werden erkennen, daß eine Vielzahl von Kommunikationsprotokollen und Mechanismen in einer derartigen Ausgestaltung möglich sind. Beispielsweise kann die Kommunikation der Daten von einfachen Steuer-"Ereignissen", wie es in dem US-Patent 4 837 740 vorgesehen ist, begleitet werden. Alternativ kann ein "Vier-Phasen"-Steuersystem verwendet werden. Obgleich Fig. 5 getrennte Datenpfade für die aufwärts und abwärts fließenden Daten zeigt, kann ein gemeinsamer Satz von reversiblen Leitungen für diese Kommunikation gemeinsam benutzt werden, da Daten zu jeder Zeit in nur einer Richtung fließen werden. Ebenso kann die Kommunikation in Teilen, entweder als eine serielle Kommunikation mit einem einzelnen Bit auf einmal oder in Bytes, durchgeführt werden. Eine derartige Serialisierung oder Teilserialisierung kann gewählt werden, um die Anzahl erforderlicher Datenleitungen zu verringern, wobei dies jedoch die Kommunikation natürlich langsamer macht.
  • Das System verhindert vorzugsweise einen vorzeitigen Abgang von Datenelementen vor dem Erreichen des abgeschlossenen Zustands (C). Diese Einschränkung wird dadurch ermöglicht, daß zusätzliche Beendigungs- oder "Freiheits"-Signale der COP zur Verfügung gestellt werden. Die COP wird eine Kommunikation nur bewilligen, wenn beide Stufen sich selbst für ein weiteres Kommunikationsereignis bereit erklären. Die Signale CD und CO, die Teil der in Fig. 5 gezeigten Steuerpfade 84 und 85 sind, liefern diese Informationen an die COP. Die COP wird nur gestatten, daß Daten weitergeleitet werden, wenn sie durch geeignete Kombinationen von "? "-Signalen aufgefordert wird, und nur, wenn die Signale CD und CU, die sie empfängt, angeben, daß beide Stufen für eine weitere Kommunikationsaktion bereit sind.
  • Die Aktion der COP
  • Die COP gemäß Fig. 5 kann unter Verwendung eines Arbiters implementiert sein, dessen Tätigkeit nun beschrieben wird. Fig. 6 ist ein Zustandsdiagramm für einen Arbiter, der verwendet werden kann. Es gibt 8 Zustände, die mit 1 bis 8 bezeichnet sind. Es gibt 16 mit R1, R2, G1 G2 und C bezeichnete Übergänge zwischen diesen Zuständen. Die Aktion des Arbiters ist wie folgt. Als Antwort auf die Anforderungssignale R1 und R2, die zu einer beliebigen Zeit oder sogar zu genau der gleichen Zeit kommen können, wird der Arbiter eine und nur eine Dienste-Bewilligung durchführen. Der Arbiter gibt seine Dienste-Bewilligung dadurch an, daß er ein Signal an entweder den Ausgang G1 oder G2, jedoch niemals an beide sendet. In dem Fall von konkurrierenden Anforderungen, die den Zustand 4 verlassen, ist eine Entscheidung erforderlich, um zu entscheiden, ob ein Signal G1 oder G2 zu erzeugen ist. Spezialschaltungen, die den Fachleuten bekannt sind, können eine derartige Entscheidung sauber durchführen und die durch eine Metastabilität verursachte Unzuverlässigkeit vermeiden, in dem jede Ankündigung einer Entscheidung bis zum Ende der Metastabilität verschoben wird.
  • Fig. 7 zeigt, wie diese Form eines Arbiters in einer COP-Schaltung 89 untergebracht sein kann. Drei Muller-C-Elemente 92, 94 und 96 kombinieren die ankommenden Steuersignale, wie es gezeigt ist. Das Muller-C-Element 92 kombiniert die Signale AU? und PU?, um die Anforderung R1 an den Arbiter zu bilden. Diese Kombination gibt an, daß Daten aufwärts fließen könnten, wenn es der Arbiter gestattet. Ebenso kombiniert das Muller-C-Element 96 die Signale AD? und PD?, um die Anforderung R2 an den Arbiter zu bilden. Diese Kombination gibt an, daß Daten abwärts fließen könnten, wenn es der Arbiter gestattet. Die Blasen an den Eingängen dieser beiden Muller-C-Elemente geben an, daß anfangs, wenn die Pipeline vollständig leer ist, jede Stufe bereit ist, eine Dateneingabe anzunehmen.
  • Das Muller-C-Element 94 kombiniert die Signale CD und CU, um das Signal C für den Arbiter zu liefern. Diese Kombination gibt dem Arbiter an, daß beide Stufen für ein weiteres Kommunikationsereignis bereit sind.
  • Asynchrone Steuerung innerhalb einer Stufe
  • Eine einfach Form einer asynchronen Steuerung innerhalb einer Stufe ist in Fig. 8 dargestellt. In dieser Figur sind das aufwärts gerichtete Register UREG 60 und das abwärts gerichtete Register 66 als übergangsgesteuerte Register implementiert, wie es in dem US-Patent Nr. 5 187 800 beschrieben ist. Derartige Register werden durch Ereignisse an zwei Steuereingängen gesteuert. Bei den Registern 60 und 66 von Fig. 8 werden diese zwei Eingänge unterschieden, da einer von ihnen von der Seite des Kästchens und der andere an einer Ecke eintritt. Ein Ereignis, das von der Seite des Kästchens eintritt, veranlaßt das Register, diejenigen Daten zu erfassen, welche auch immer dann durch dieses weitergeleitet werden. Wenn die Daten erfaßt wurden, wird eine Ereignisausgabe an der entfernten Seite des Kästchens erzeugt. Somit wird beispielsweise ein an dem Eingang AU! unten links von Fig. 8 ankommendes Ereignis das UREG veranlassen, 1) die an den Dateneingang Uin angelegten Daten zu erfassen, womit nachfolgende Änderungen im Wert der Daten Uin verhindert werden, um die Datenausgaben an dem Ausgang Uout zu beeinflussen, und 2) dann eine Ausgabe an dem Ausgangs-Steuerpfad PU! zu erzeugen.
  • Ein Ereignis an dem Steuereingang, das in das Kästchen an seiner Ecke eingehend gezeigt ist, veranlaßt das Register, sein Festhalten an Daten freizugeben und transparent zu werden. Somit wird beispielsweise ein an dem Eingang PUI oben links von Fig. 8 ankommendes Eingangs-Ereignis das UREG 60 veranlassen, transparent zu werden, und es wird anschließend Daten von dem Dateneingang Uin an den Datenausgang Uout kopieren.
  • Zum besseren Verständnis der Aktionen der in Fig. 8 gezeigten Steuersignale seien kurz die wesentlichen Eigenschaften des Ereignis-Signalisterens wiederholt. Diese Zusammenfassung wird in erweiterter Form in der Referenz geliefert. Bei dieser Form von Signalisierung signalisiert die Änderung im elektrischen Zustand einer Leitung ein Ereignis, wobei jedoch die Richtung der Änderung, entweder HI (hoch) nach LO (niedrig) oder LO (niedrig) nach HI (hoch) unerheblich ist. Das gewöhnliche EXKLUSIV-ODER-Gatter XOR, das in Fig. 8 als ein Kreis, wie beispielsweise 101, dargestellt ist, liefert eine "ODER"-Funktion für diese Form von Signalisierung, da eine EXKLUSIV-ODER-Schaltung für jeden Zustand ihrer beiden Eingänge ihren Ausgangszustand ändert. Beim Lesen des Diagramms von Fig. 8 ist es hilfreich, sich daran zu erinnern, daß ein an einem der beiden Eingänge einer EXKLUSIV-ODER-Schaltung ankommendes Ereignis, das als ein Kreis gezeichnet ist, sofort an seinen Ausgang geliefert wird.
  • Das Muller-C-Element, wie beispielsweise 102, liefert eine UND-Funktion für Ereignisse. Sein Ausgangszustand ändert sich nur in HI, wenn beide Eingänge HI geworden sind, und ändert sich erneut nur in LO, nachdem beide Eingänge LO geworden sind. Wenn ein Eingang HI und der andere LO ist, erinnert sich das Muller-C-Element und behält seinen vorherigen Zustand bei. Somit verlangt ein von einem Muller-C- Element ausgegebenes Ereignis sowohl ein an seinem ersten Eingang eingegebenes Ereignis als auch ein an seinen zweiten Eingang eingegebenes Ereignis. Beim Lesen des Diagramm von Fig. 8 ist es hilfreich, sich daran zu erinnern, daß ein Ausgangsereignis von dem Muller-C-Element 102 ein Eingangsereignis an jedem seiner beiden Eingangsanschlüsse erfordert, d. h. als Ausgänge der beiden EXKLUSIV-ODER-Elemente 101 oder 103.
  • Eine dritte Art von Ereignis-Steuereinrichtung ist in Fig. 8 gezeigt, die AUSWAHL-Einheit 107. Diese Einrichtung lenkt ein Eingangsereignis von dem linken Eingangsanschluß zu einem ihrer beiden mit "t" und "f" bezeichneten rechten Anschlüsse, abhängig von dem Wert der Eingabe, die sie an ihrem unteren Anschluß empfängt. Eine geeignete Schaltung, um diese Funktion durchzuführen, ist den Fachleuten bekannt. Wenn das AUSWAHL-Element 107 ein Ereignis von dem Muller-C- Element 102 bekommt, erzeugt es ein Ausgangsereignis entweder an seinem Ausgang t, der mit der mit XX gekennzeichneten Leitung verbunden ist, oder an seinem Ausgang f, der mit der mit YY gekennzeichneten Leitung verbunden ist. Welchen Ausgang der Selektor wählt, hängt davon ab, ob das mit "Register ist voll" bezeichnete Signal wahr oder unwahr ist. Dieses Signal wird auf eine solche Weise erzeugt, um zu melden, ob Daten in dem UREG vorhanden sind.
  • Die Aktion der Steuerschaltung von Fig. 8 wird nun beschrieben. Es sei daran erinnert, daß die COP unter dieser Stufe eine Kommunikation nur in einer Richtung gestattet. Ihre Wahl wird der Schaltung von Fig. 8 mit den Eingängen AU! oder PD! in diese Steuerschaltung angegeben, wie es in Verbindung mit Fig. 10 erläutert wird. Somit wird für jede Kommunikation mit der Stufe darunter nur eine der beiden Eingaben AU! oder PD! ankommen. Die EXKLUSIV-ODER-Schaltung 103 kombiniert diese Ereignisse, so daß der Ausgang der EXKLUSIV-ODER-Schaltung 103 angibt, daß eine Kommunikation auf dem unteren Kommunikationspfad stattgefunden hat. Ebenso kann aufgrund der Aktion der COP über dieser Stufe sich nur eines der beiden Eingangsereignisse PU! und AD! ereignen. Da die EXKLUSIV-ODER-Schaltung 101 diese Ereignisse kombiniert, geben ihre Ausgänge somit an, daß eine Kommunikation auf dem oberen Kommunikationspfad stattgefunden hat. Ein Ausgangs- Ereignis von dem Muller-C-Element 102 gibt somit an, das sich sowohl ein oberes als auch ein unteres Kommunikationsereignis ereignet hat.
  • Vorausgesetzt, daß die in Fig. 8 dargestellte Stufe in dem leeren Zustand (E) begonnen hat, liefert die Ausgabe des Muller-C-Elements eine große Menge an Informationen über den Zustand der Stufe. Da insbesondere die Muller-C-Element-Ausgabe angibt, daß sich eine Kommunikation sowohl über als auch unter dieser Stufe ereignet hat, muß die Stufe entweder im Zustand (E) oder im Zustand (F) sein. Sie wird im Zustand (E) unter drei Umständen sein. 1) Sie war im Zustand (E) und ein aufwärts gerichtetes Datenelement ist von unten eingetreten und oben ausgetreten; 2) sie war im Zustand (E) und ein abwärts gerichtetes Datenelement ist von oben eingetreten und unten ausgetreten; 3) sie war im Zustand (C) und beide Datenelemente sind ausgetreten bzw. abgegangen, eines nach oben und eines nach unten. Die Stufe wird im Zustand (F) unter drei Umständen sein: 4) Sie war im Zustand (E) und sowohl ein aufwärts gerichtetes als auch ein abwärts gerichtetes Datenelement kamen an, eines von oben und das andere von unten; 5) sie war im Zustand (F) und ein aufwärts gerichtetes Datenelement trat aus und wurde durch ein anderes ersetzt; 6) sie war im Zustand (F) und ein abwärts gerichtetes Datenelement trat aus und wurde durch ein anderes ersetzt.
  • Der Selektor 107 trennt die Ausgangsereignisse des Muller-C-Elements 102 in diejenigen, die dem vollen Zustand (F) entsprechen, und diejenigen, die dem leeren Zustand (E) entsprechen. Ein Ereignis auf der mit YY bezeichneten Leitung entspricht dem Erreichen des leeren Zustands, und ein Ereignis auf der mit XX bezeichneten Leitung entspricht dem Erreichen des vollen Zustands. Die Stufe sollte ihren Anpassungs- und Berechnungsprozeß durchführen, wann immer der volle Zustand erreicht ist, wie es von der mit VERGL bezeichneten Raute 105 angegeben wird, die vorher in Fig. 2B beschrieben wurde. Dieser Prozeß verwendet Daten von beiden Registern, wie es durch die dunklen Linien angegeben ist. Wenn der VERGL.-Prozeß beendet ist, hat die Stufe den abgeschlossenen Zustand (C) erreicht. Die Steuerausgabe der VERGL-Raute 105 ist mit der EXKLUSIV-ODER-Schaltung 106 verbunden, die ihrerseits die Signale CU und CD entwickelt. Diese Signale melden, daß die Stufe für die nächsten Kommunikationsereignisse bereit ist.
  • Verzweigung
  • Fig. 9 ist ein Blockdiagramm einer Gegenfluß-Pipeline, die verzweigt ist. Es gibt einen Gabelungspunkt genau über der STUFE N der Pipeline. Es sei bemerkt, daß, wo die STUFE N+1 vorher die Position über der STUFE N belegt hat, wie in Fig. 1B, es hier zwei derartige Stufen N+1(A) und N+1(B) gibt.
  • Die Gabelung erfordert eine Modifikation des aufwärts gerichteten Datenpfads, des abwärts gerichteten Datenpfads und des Steuerpfads. An dem Gabelungspunkt teilt sich der aufwärts gerichtete Datenflußpfad 114 und speist den aufwärts gerichteten Datenflußpfad in die beiden obigen Pipelines. An dem Gabelungspunkt werden die beiden abwärts gerichteten Datenflußpfade 36A und 36B auf eine von verschiedenen Weisen kombiniert. In Fig. 9 haben wir die Verwendung eines Multiplexers 110 dargestellt, um den einzigen abwärts gerichteten Datenflußpfad 36 unter dem Gabelungspunkt zu speisen. Es muß jedoch erkannt werden, daß die Daten von 36A und 36B auf eine beliebige logische Weise kombiniert werden können einschließlich, jedoch nicht begrenzt auf: 1) durch Addition, 2) durch Verkettung, 3) durch Boolesche Kombination oder 4) durch Auswahl, wie es in Fig. 9 dargestellt ist.
  • Die Steuersignale von unterhalb und oberhalb des Gabelungspunkts werden in einem Steuerblock 112 kombiniert, der die Aktion der Stufen über und unter derselben steuert.
  • Unterschiedliche Steuerschaltungen werden ein unterschiedliches Verhalten an der Gabelung erzeugen. Um eine bestimmte Steuerschaltung zu kennzeichnen, muß man ihre Behandlung der aufwärts gerichteten und abwärts gerichteten Daten betrachten. Verschiedene mögliche Variationen wurden vorher erläutert, einschließlich eines Weiterleitens der aufwärts gerichteten Daten abwechselnd an die beiden aufwärts gerichteten Pfade, des Weiterleitens der aufwärts gerichteten Daten an beide Pfade, des Weiterleitens der aufwärts gerichteten Daten an einen der beiden Pfade und zwar abhängig von einer Eigenschaft der Daten selber, und des Weiterleitens der aufwärts gerichteten Daten an irgendeinen Pfad, der frei ist, sie anzunehmen. Bei einer asynchronen Implementierung kann diese letzte Wahl eine Zuteilungsentscheidung (arbitration) erfordern.
  • Das Kombinieren der abwärts gerichteten Flüsse kann geringfügig komplexer sein. Bei einer asynchronen Implementierung erfordern die meisten Formen des Kombinierens der Daten von oben eine Zuteilungsentscheidung. Eine, die dies nicht erfordert, kombiniert Datenelemente von beiden abwärts gerichteten Pfaden in einem einzigen größeren abwärts gerichteten Paket, wobei gewartet wird, bis Daten von beiden Stufen STUFE N+1(A) und STUFE N+1(B) verfügbar sind. Weitere Auswahlmöglichkeiten bestehen darin, die Daten abwechselnd oder auf einer "First-come-First-served"-Grundlage zu kombinieren. Fachleute werden schnell erkennen, daß verschiedenste Kombinationsverfahren möglich sind.
  • Bei den meisten Pipelines ist es zweckmäßig, sich jede Stufe mit einem einzigen Register für aufwärts gerichtete Daten und einem weiteren für abwärts gerichtete Daten vorzustellen. Es ist jedoch ebenfalls möglich, daß eine einzige Stufe der Pipeline mehr als ein Register für Daten aufweist, die in irgendeine Richtung oder in beide laufen. Ein derartiges System muß imstande sein, mehrere Vergleiche durchzuführen, so daß jeder der verschiedenen, aufwärts gerichteten Datenwerte, die in der Stufe vorhanden sind, ordnungsgemäß mit jedem der abwärts gerichteten Werte verglichen werden kann.
  • Die hier beschriebene Gegenfluß-Pipeline kann in einer Anzahl von Weisen angewendet werden, von denen eine bestimmte in einer gleichzeitig anhängigen Patentanmeldung mit dem Titel "Counterflow Pipeline Processor" beschrieben ist, die am gleichen Tag eingereicht und an den Anmelder der vorliegenden Erfindung übertragen wurde, und die durch Bezugnahme hier aufgenommen ist. Weitere Anwendungen, für die die hier beschriebene Gegenfluß-Pipeline verwendet werden kann, umfassen Textvergleichsmaschinen, Signalprozessoren, Konvolutionsmaschinen, Assoziativ-Speicher, Inventarnachschlagemaschinen und Mikrobiologie-Anwendungen, wie beispielsweise Gen-Übereinstimmungs- und Protein-Struktur-Analysen, wobei die Anwendungen jedoch nicht darauf beschränkt sind.
  • BEVORZUGTE AUSFÜHRUNGSFORM Register
  • Die bevorzugte Ausführungsform der Gegenfluß-Pipeline verwendet die bereits in Fig. 8 dargestellte Datenpfad-Konfiguration. Zwei Ereignis-gesteuerte Register 60 und 66 dienen dazu, die aufwärts gerichteten und abwärts gerichteten Datenelemente zu halten. Diese Register werden von Ereignissignalen gesteuert, wie es dargestellt und vorher beschrieben wurde.
  • Vergleichsschaltung
  • Die bevorzugte Ausführungsform der Gegenfluß-Pipeline verwendet den bereits mit allgemeinen Begriffen in Fig. 2B beschriebenen Vergleich. Bei einer Ausführungsform der Einrichtung wird jedes Datenelement von 32 Bits von einer Registernummer oder Adresse von 8 Bits begleitet. Diese Registernummern werden von den Vergleichsschaltungen verglichen, und wenn eine Übereinstimmung erfaßt wird, werden verschiedene Operationen an den Registerwerten durchgeführt. Insbesondere können Registerwerte von einem Datenpfad in den anderen kopiert werden, oder Registerwerte können zur nachfolgenden Löschung aus dem Strom markiert werden.
  • Asynchrone Kommunikationspfade
  • Der Schnittstellen-Mechanismus zwischen Stufen für eine asynchrone Ausführungsform der Gegenfluß-Berechnungspipeline ist besonders einfach. Er nimmt an, daß die Aktion des Weiterleitens von Daten von einer Stufe zu der nächsten automatisch stattfindet. Die COP in Fig. 5 teilt sowohl der Sende- als auch der Empfangs-Einheit mit, daß die Kommunikation stattfinden kann, wie es durch die Tatsache dargestellt ist, daß die Signale GU! und GD! sowohl an die Stufe oberhalb als auch die Stufe unterhalb der COP gehen.
  • In der Praxis ist es gut, den Sender und den Empfänger in einer asynchronen Kommunikation das Timing der Kommunikation selber steuern zu lassen. Daher verwendet unsere bevorzugte Ausführungsform der Gegenfluß-Pipeline die in Fig. 10 dargestellten Signalisierungspfade. Die Signalpfade GU! und GD! werden von der COP verwendet, um der Sende-Einheit mitzuteilen, daß ihr Zugriff auf den Kommunikationskanal bewilligt wurde. Die Steuerung der tatsächlichen Kommunikation findet unter Verwendung der Signalisierungspfade PU! und AU! zur Steuerung des Datenflusses nach oben und PD! und AD! zur Steuerung des Datenflusses nach unten statt. Wie es durch die gepunktete Linie angegeben ist, erzeugt die Sende- Einheit das Signal AU! oder AD! aus den Signalen GU! bzw. GD!. Somit dienen die von den in Fig. 10 gezeigten Verbindungen ausgelösten Aktionen der vorher in Verbindung mit Fig. 5 beschriebenen Funktion, wobei jedoch die in Fig. 10 gezeigten Verbindungen die ordnungsgemäße Beendigung der tatsächlichen Kommunikations-Funktionen ermöglichen.
  • Die Anordnung gemäß Fig. 10 weist einen zusätzlichen Vorteil auf. Wenn es notwendig ist, die Datenpfad-Leitungen für die den aufwärts und abwärts gerichteten Kommunikationspfade gemeinsam zu benutzen, wie es in Fig. 1C erwogen wurde, kann die untere Stufe das Signal GU! als Erlaubnis dafür verwenden, um ihre Daten auf diese gemeinsamen Leitungen zu bringen, und um nach einer geeigneten Verzögerung das Signal AU! auszugeben. Ebenso kann die obere Stufe das Signal GD! als Erlaubnis dafür benutzen, um ihre abwärts fließenden Daten auf diese gemeinsamen Datenleitungen zu bringen und nach einer geeigneten Verzögerung das Signal AD! auszugeben.
  • Fachleute werden erkennen, wie weitere Schnittstellen aufzubauen sind, die in der Funktion ähnlich sind. Beispielsweise könnte ein komplizierteres Kommunikationsprotokoll verwendet werden, um Datenelemente weiterzuleiten. Beispielsweise könnte die Kommunikation in einer oder beiden Richtungen teilweise seriell sein, so daß weniger Datenleitungen zwischen den Stufen benötigt würden. Zusätzliche Steuerleitungen können erforderlich sein. In Fig. 10 trennten wir die Entscheidungsfunktion, über welche Richtung zu kommunizieren ist, von der Kommunikationsaufgabe selber. Fig. 10 macht es Fachleuten deutlich, wie verschiedenste Kommunikations-Mechanismen zur Verfügung gestellt werden können.
  • Asynchrone Steuerung
  • Der in Fig. 8 gezeigte Steuermechanismus bildet die Grundlage der bevorzugten Ausführungsform der Gegenfluß-Pipeline. Für Stufen, die weder existierende Datenelemente löschen noch neue Datenelemente in die Datenströme einführen, reicht diese Form der Steuerung aus. Wie wir in Kürze sehen werden, kann der vollständige Steuermechanismus dadurch realisiert werden, daß zu diesem grundlegenden Steuersystem Einheiten, die Datenelemente einfügen und löschen können, hinzugefügt werden.
  • Ebenso reicht das für die COP bereits in den Fig. 6 und 7 beschriebene Steuersystem für die bevorzugte Ausführungsform aus.
  • Fig. 11 zeigt weitere Einzelheiten über das Innere einer in Teile aufgebrochenen vollständigen Stufe 30. Bei der bevorzugten Ausführungsform können Daten, die in einer der beiden Richtungen fließen, aus dem Datenstrom gelöscht werden. Eine Aufwärts-Löschschaltung 126 und eine Abwärts- Löschschaltung 120 sind für diesen Zweck dargestellt. Die Steuermechanismen in diesen Teilen der Stufe werden später in Verbindung mit Fig. 12 beschrieben. Bei der bevorzugten Ausführungsform können Daten, die aufwärts fließen, unter bestimmten Umständen neue Daten in den abwärts fließenden Strom einführen. Bei der bevorzugten Ausführungsform werden neue Daten niemals in den aufwärts gerichteten Strom eingeführt. Somit ist in Fig. 11 ein Teil 124 der Stufe zum Einfügen von Daten in den abwärts gerichteten Strom dargestellt. Der Steuermechanismus für diesen Teil der Stufe wird später in Verbindung mit Fig. 13 beschrieben. Ein identisches Teil, umgeklappt und umbenannt, um auf den anderen Strom zu wirken, hätte verwendet werden können, um Daten in den aufwärts gerichteten Strom bei Anwendungen einzufügen, wo dies wünschenswert ist. Die Einzelheiten der Aktion der Einfügungsbox werden später gegeben.
  • Schaltung zum Löschen
  • Fig. 12 zeigt eine ausführliche Ansicht einer Löscheinrichtung, z. B. 126. Diese Einrichtung ist ausgebildet, um in der Aufwärts-Richtung fließende Informationen zu löschen. Die Löscheinrichtung für abwärts fließende Information ist identisch, wobei sie jedoch umbenannt und umgeklappt ist, um die Steuersignale für abwärts fließende Daten zu modifizieren. Um zu verstehen, wie die Löscheinrichtung arbeitet, sei daran erinnert, daß die Kommunikation zwischen Stufen die Verwendung von Handshake-Signalen beinhaltet. Wie es in Fig. 10 dargestellt ist, informiert die COP für den aufwärts gerichteten Datenfluß die untere Stufe, die die Daten senden wird, daß sie tätig werden kann. Die COP verwendet das Signal GU! zu diesem Zweck. Die untere Stufe plaziert die zu sendenden Daten auf den aufwärts gerichteten Datenleitungen 32 und informiert dann die obere Stufe unter Verwendung des Signals AU!, daß die Daten bereit sind. Wenn die obere Stufe die Daten erfaßt hat, gibt sie ein Signal PUI an die untere Stufe zurück, das angibt, daß die untere Stufe die Daten erfolgreich weitergeleitet hat.
  • Die Löscheinrichtung arbeitet an den Steuersignalen und überhaupt nicht an den Daten. Sie arbeitet, indem sowohl die obere als auch die untere Stufe getäuscht werden. Sie täuscht die obere Stufe durch Verhindern, daß das Signal AU! diese erreicht, so daß die obere Stufe niemals weiß, daß die untere Stufe versucht hat, Daten an sie weiterzuleiten. Die Löscheinrichtung täuscht die untere Stufe, so daß diese glaubt, daß die obere Stufe die Daten angenommen hat, wenn diese sie tatsächlich nicht angenommen hat, indem ein Signal PU! als Antwort auf das Signal AU! genauso zurückgegeben wird, wie es die obere Stufe getan hätte, wenn sie die Daten empfangen hätte.
  • Die Schaltungen von Fig. 12 erreichen dies. Für eine normale Übertragung leitet der SELEKTOR 130 das Signal AU! von unterhalb an die obere Stufe. Bei dieser Aktion empfängt der SELEKTOR von unten ein Ereignis auf dem Pfad AU! und leitet es über den mit "0" bezeichneten Anschluß weiter, um oben in der Figur über den Steuerpfad AU! auszutreten. Wenn die Daten zu löschen sind, wird jedoch der SELEKTOR demgemäß über seinen mit K bezeichneten Seiteneingang 136 informiert. Das Signal K teilt dem Selektor mit, daß das nachfolgende Datenelement zu löschen oder "zu töten" ist. Wenn das Datenelement zu löschen ist, leitet der SELEKTOR sein Eingangs-Ereignis AU! an seinen Ausgang "1", von dem es an die drei EXKLUSIV-ODER-Blöcke 132, 134 und 138 geht. Diese EXKLUSIV-ODER-Blöcke leiten Ereignisse für die normale Kommunikation von oben nach unten. Sie erzeugen ebenfalls unwahre Ausgaben an ihren jeweiligen Ausgängen, wenn sie von der Ausgabe "1" des SELEKTORS stimuliert werden.
  • Schaltungen zur Einfügung
  • Eine Einfügungseinrichtung 124 ist in Fig. 13 dargestellt, wobei ihre Steuerteile als Block 124a dargestellt sind und ihr Datenpfad als Block 124b dargestellt ist. Diese Einfügungseinrichtung kann Daten aus dem aufwärts fließenden Strom in den abwärts fließenden Strom einfügen. Eine ähnliche Schaltung, die identisch im Inhalt, jedoch umgeklappt ist, um auf den anderen Datenpfaden zu arbeiten, könnte verwendet werden, um Daten aus dem abwärts gerichteten Strom in den aufwärts gerichteten Strom einzufügen. Keine derartige Schaltung wird hier dargestellt, wobei jedoch Fachleute aus der folgenden Beschreibung verstehen werden, wie eine derartige Schaltung arbeiten würde.
  • Der Einfügungsschaltungs-Datenpfad 124b enthält ein Zusatzregister 140, um das neue Datenelement zu halten, das in den abwärts fließenden Datenstrom einzufügen ist. Dieses Register empfängt aus dem Aufwärts-Datenregister 60 die Datenelemente, die in den Abwärts-Datenstrom einzufügen sind. Die Einfügungsschaltung enthält ebenfalls einen Multiplexer 141, der entweder diese neuen Daten oder die regulären Daten auswählen wird, die von oben entlang des abwärts fließenden Datenpfads 36 kommen.
  • Bei dem hier beschriebenen Steuermechanismus wird der aufwärts gerichtete Fluß von Daten in der Einfügungs-Einheit 124 verzögert, bis die Einfügung des Datenelements in den abwärts fließenden Strom abgeschlossen ist. Nur nach der neuen Einfügung in den abwärts gerichteten Strom werden die Daten, die aufwärts fließen, an die Stufe darüber weitergeleitet. Es kann möglich sein, eine Einfügungseinrichtung zu entwickeln, die gleichzeitig neue Daten abwärts weiterleitet und gestattet, daß sich die aufwärts fließenden Daten weiterbewegen.
  • Die Steuerschaltung 124a für die Einfügungseinrichtung besteht aus zwei Teilen; der SELEKTOR 142 und das EXKLUSIV- ODER-Element 144 bilden einen Teil, und der "Prioritäts-Mischer" 148 den anderen Teil. Die Ereignis-Eingabe des SELEKTORS 142 kommt von dem Signal AU!, das von unten kommt. Das Signal gibt an, daß gültige Daten von unten kommen. Ob einige dieser Daten in den abwärts gerichteten Datenstrom einzufügen sind oder nicht, wird dem SELEKTOR durch das Vorhandensein eines wahren oder unwahren Signals G an seinen Dateneingang 143 angegeben. Wenn keine Daten einzufügen sind, tritt die Einfügungseinrichtung 142 nicht in Aktion. In diesem Fall liefert der Selektor das von unten auf dem Steuerpfad AU! nach oben kommende Ereignis an den Steuerausgangspfad AU! über das EXKLUSIV-ODER-Element 144. Auf ähnliche Weise wird die von oben kommende Eingabe CD von der EXKLUSIV-ODER-Einheit 149 an den unteren Steuerausgang CD geliefert. Auf ähnliche Weise wird der Prioritäts-Mischer 148 dazu dienen, eine direkte Verbindung zwischen Ereignissen an seinen Eingängen PD! und PD? und seinen entsprechenden Ausgänge PD! und PD? bereitzustellen.
  • Es sei nun betrachtet, was passiert, wenn das in den Dateneingang 143 des SELEKTORs eingehende Signal angibt, daß eine Einfügung stattzufinden hat. Ein über den Eingang AU! bei dem SELEKTOR eintreffendes Ereignis wird an seinen Ausgang "1" geliefert. Dieser liefert ein Ereignis an den Eingang PG? des Prioritäts-Mischers und schaltet über die EXKLUSIV-ODER-Einheit 146 den Multiplexer 141 um, um die einzufügenden Daten aus dem Register 140 auf dem Ausgangs- Datenpfad 36 zu liefern. Nach einer geeigneten Verzögerung, die es dem Datenpfad erlaubt, seine Einrichtung zu beenden, wird das Verzögerungselement 145 seine Ausgabe an das EXKLUSIV-ODER-Element 149 liefern, wodurch eine Ausgabe auf dem Ausgangspfad CD unten in der Figur erzeugt wird.
  • Die Arbeit des Prioritäts-Mischers besteht darin, geeignete Steuersignale zum Durchführen der Einfügung zu erzeugen. Gewöhnlicherweise verbindet er die Signale PD? und PD! direkt durch, wie es deren Anordnung an seiner Rechten suggeriert. Wenn er jedoch durch ein Eingangssignal PG? aktiviert wird, erzeugt er ein Ausgangssignal PD?, wenn noch keines erzeugt wurde. Er liefert nachfolgend die erste Antwort PD! an den Ausgang PG! und nicht an den Ausgang PD!.
  • Die Stufe unterhalb der Einfügungseinrichtung kann den Unterschied zwischen in den Datenstrom durch die Einfügungseinrichtung eingefügten Daten und von der Stufe darüber gelieferten Daten nicht erkennen. In beiden Fällen sind die Signale PD? und PD! ordnungsgemäß sequentiell angeordnet, wie es das CD-Signal ist. Somit werden die Daten von dem Register 140, die von dem Multiplexer 141 an die Ausgangsdatenleitungen 36 geliefert werden, an die Stufe darunter geliefert. Wenn diese Aktion abgeschlossen ist, wird, wie es vorher angegeben wurde, ein Ereignis PD! von unten empfangen. Der Prioritäts-Mischer liefert dieses Ereignis PD! an seinen Ausgang PG!. Hier führt er zwei Dinge aus. Zuerst schaltet er bei Erreichen der EXKLUSIV-ODER-Einrichtung 146 den MULTIPLEXER 141 zurück in die Durchgangsposition. Zweitens erlaubt er schließlich über das EXKLUSIV-ODER-Element 144, daß ein Ereignis an dem Ausgang AU! oben in der Figur der Stufe darüber schließlich mitteilt, daß aufwärts gerichtete Daten angekommen sind.
  • Zustandsdiagramm
  • Wenn alle Elemente einer Stufe zusammengestellt sind, können sehr viele Ereignisse gleichzeitig stattfinden. Zusätzlich zu dem normalen Fluß von Daten, der durch die fünf Zustände gemäß Fig. 3 beschrieben wird, werden viele weitere Zustände durch die Möglichkeit möglich gemacht, Daten zu löschen oder in die Ströme einzufügen. Diese Zustände entstehen, da aufwärts oder abwärts fließende Daten gelöscht und neue Daten eingefügt werden können. Das Zustandsdiagramm gemäß Fig. 14 erläutert einen möglichen Satz von Zuständen, die eine einzelne Stufe einer vollständigen Gegenfluß-Pipeline erfahren kann.
  • Es sei zuerst bemerkt, daß das Diagramm gemäß Fig. 14 den allgemeinen Charakter des Diagramms gemäß Fig. 3 aufweist, wobei jedoch jeder der Zustände von Fig. 3 in eine Vielzahl von Unterzuständen aufgebrochen wurde. Beispielsweise erscheint der Zustand (E) oben in der Fig. 3 in Fig. 14 als in vier Zustände, Nummern 0, 4, 3 und 15, aufgebrochen. Tatsächlich ist das Zustandsdiagramm gemäß Fig. 3 eine Untermenge des Zustandsdiagramms gemäß Fig. 14; würden Zustände in Fig. 14 in geeigneter Weise vereinigt, würde das Zustandsdiagramm gemäß Fig. 3 herauskommen.
  • Das Zustandsdiagramm gemäß Fig. 14 wurde von einer bestimmten Ausgestaltung eines bestimmten Pipeline-Systems genommen. In dieser Figur beziehen sich Bezeichnungen, die das Zeichen "I" enthalten, auf aufwärts gerichtete Daten, und Bezeichnungen, die das Zeichen "R" enthalten, auf abwärts gerichtete Daten. Das Zustandsdiagramm zeigt ausführlich die Zustände, die beim Einfügen von Daten von dem aufwärts gerichteten Strom in den abwärts gerichteten Strom beteiligt sind. OKI und PIT beziehen sich auf das Annehmen bzw. Weiterleiten von aufwärts gerichteten Daten. OKR und PR! beziehen sich auf das Annehmen bzw. Weiterleiten von abwärts gerichteten Daten. GRE bezieht sich auf die Notwendigkeit, ein neues abwärts gerichtetes Datenelement als Ergebnis eines aufwärts gerichteten einzufügen, wobei die Notwendigkeit bekannt ist, sobald wie das aufwärts gerichtete Element ankommt. NGRE bezieht sich auf das Fehlen einer derartigen Notwendigkeit. GRM bezieht sich auf das Entdecken einer Notwendigkeit, ein neues abwärts gerichtetes Datenelement als Ergebnis eines Vergleichens der aufwärts gerichteten und der abwärts gerichteten Elemente einzufügen. NGRM bezieht sich auf das Fehlen einer derartigen Notwendigkeit. PG ist die Handlung des Weiterleitens des neu erzeugten Elements als Teil des abwärts gerichteten Stroms. XX bezieht sich auf das Erfassen, daß sowohl ein aufwärts als auch ein abwärts gerichtetes Element vorhanden sind, d. h. daß der Zustand (F) erreicht wurde. YY bezieht sich auf das Erfassen, daß die Stufe, ausgenommen möglicherweise eines in den abwärts fließenden Strom einzufügenden Elementes, leer ist.
  • Mit diesen Bezeichnungen im Gedächtnis kann das Zustandsdiagramm gemäß Fig. 14 interpretiert werden. Es sei bemerkt, daß beim Weiterleiten, PG, des neu erzeugten Elements, alle Zustände des äußeren Rings von Zuständen 2, 3, 4, 5, 6, 8, 9, 10 zu dem inneren Ring von Zuständen führen. GRE, das angibt, daß ein neues Element in dem abwärts gerichteten Strom erzeugt werden muß, kann nur auftreten, wenn ein aufwärts fließendes Element vorhanden ist. Ebenso kann GRM nur auftreten, wenn sowohl ein aufwärts als auch ein abwärts fließendes Element vorhanden sind.
  • Das Zustandsdiagramm gemäß Fig. 14 setzt bestimmte Verhaltensregeln für die Einfügungs- und Löschungs-Schaltungen des Systems voraus. Sollten andere Verhaltensregeln erforderlich sein, könnte ein Zustandsdiagramm ähnlich der Fig. 14, jedoch nicht identisch zu diesem gezeichnet werden. Fachleute werden erkennen, daß derartige Zustandsdiagramme üblicherweise verwendet werden, um das Verhalten komplexer Systeme, wie beispielsweise das hier beschriebene, zu beschreiben.
  • Die Ausgestaltung eines synchronen Steuermechanismus, um das Zustandsdiagramm gemäß Fig. 14 zu implementieren, ist unkompliziert. Fachleute werden erkennen, daß eine beliebige Anzahl von Zustands-Codierungen möglich ist. Beispielsweise kann der Zustand mit Hilfe der beiden Markierungs-Bits 62 und 64 von Fig. 2A codiert werden, wobei ein Bit das Vorhandensein eines erzeugten Ergebnisses angibt, daß das nun vorhandene aufwärts fließende Datenelement bereits ein neues abwärts fließendes Datenelement erzeugt hat und daher kein weiteres erzeugen wird, und schließlich ein Bit angibt, daß die Vergleichsoperation beendet ist. Die Ausgestaltung einer derartigen synchronen Steuerung liegt im Bereich des Stands der Technik.
  • Die Ausgestaltung einer asynchronen Steuerung ist jedoch nicht nahezu so einfach. In Fig. 10 wird gezeigt, wie eine einzige Stufe in ihre Bestandteile aufzubrechen ist, die die unterschiedlichen Operationen getrennt durchführen. Weitere Ausgestaltungen sind natürlich möglich. Es ist hier nicht unsere Absicht, durch das Darstellen einer bestimmten Ausgestaltung die Implementierungen auf diese einzige Ausgestaltung zu beschränken. Vielmehr weisen wir darauf hin, daß beliebige einer Anzahl von Ausgestaltungen verwendet werden können, die den benötigten vollständigen und nicht redundanten Vergleich liefern.

Claims (39)

1. Ein Datenverarbeitungssystem mit entgegengesetzt fließenden Daten, daß verschiedene Datenelemente in zwei Richtungen transportieren kann, gekennzeichnet durch:
einen Satz von Stufen (20), die so miteinander verbunden sind, daß sie eine Pipeline bilden;
eine Schaltung (52, 68), die so ausgebildet ist, daß sie den Fluß einer ersten Gruppe der verschiedenen Datenelemente in einer ersten Richtung durch den Satz der die Pipeline bildenden Stufen steuert;
eine Schaltung (52, 68), die so ausgebildet ist, daß sie den Fluß einer zweiten Gruppe der verschiedenen Datenelemente in einer zweiten Richtung durch den Satz der die Pipeline bildenden Stufen steuert;
eine Stufe in dem Satz von Stufen, die ferner enthält:
eine dynamische Auswahlschaltung (62, 64), die so ausgebildet ist, daß sie bestimmt, ob ein erstes Datenelement aus der ersten Gruppe der verschiedenen Datenelemente und zweites Datenelement aus der zweiten Gruppe der verschiedenen Datenelemente in der einen Stufe vorhanden sind; und
eine Interaktionsschaltung (72), die so ausgebildet ist, daß sie bewirkt, daß das erste Datenelement und das zweite Datenelement in der einen Stufe in Interaktion treten, wenn das erste Datenelement und das zweite Datenelement in der einen Stufe vorhanden sind.
2. Das System nach Anspruch 1, ferner aufweisend eine Schaltung (52, 68) zum Sichern, daß das erste Datenelement mit jedem der verschiedenen Datenelemente der zweiten Gruppe, die in der Pipeline angetroffen werden, nicht mehr als einmal in Interaktion tritt.
3. Das System nach Anspruch 1, wobei die Interaktionsschaltung (72) eine Vergleichsschaltung zum Vergleichen des ersten Datenelements in der einen Stufe mit jedem der verschiedenen Datenelemente der zweiten Gruppe von Datenelementen, die in der Stufe angetroffen werden, aufweist.
4. Das System nach Anspruch 3, wobei die Interaktionsschaltung (72) ferner eine Verhinderungsschaltung aufweist zum Verhindern des Flusses des ersten Datenelements und des Flusses des zweiten Datenelements in der einen Stufe, bis die Vergleichsschaltung ihren Vergleich des ersten Datenelements und des zweiten Datenelements abgeschlossen hat.
5. Das System nach Anspruch 1, wobei die dynamische Auswahlschaltung (62, 64) ferner eine Zustandsbestimmungsschaltung aufweist zum Bestimmen des Zustands der einen Stufe, wobei die eine Stufe irgendeinen der folgenden Zustände belegen kann: leer; voll; aufwärts; abwärts und abgeschlossen.
6. Das System nach Anspruch 5, wobei der Zustand der einen Stufe in Übereinstimmung mit der Reihenfolge der Überquerung von die eine Stufe definierenden Grenzen durch das erste Datenelement und das zweite Datenelement geändert wird.
7. Das System nach Anspruch 1, wobei die eine Stufe Speicherelemente (60, 66) zum Zurückhalten des ersten Datenelements und des zweiten Datenelements aufweist.
8. Das System nach Anspruch 1, wobei die eine Stufe eine Modifizierschaltung (120,124, 126) zum Modifizieren der ersten und/oder zweiten verschiedenen Datenelemente aufweist.
9. Das System nach Anspruch 8, wobei die eine Stufe eine Schaltung (124) zum Einfügen eines Abschnitts des ersten Datenelements, das in der ersten Richtung fließt, als eines der verschiedenen Datenelemente der zweiten Gruppe, die in der zweiten Richtung fließen, enthält.
10. Das System nach Anspruch 8, wobei die Modifizierschaltung eine Schaltung (120, 126) zum Löschen des zweiten Datenelements aus der Pipeline aufweist.
11. Das System nach Anspruch 8, wobei die Modifizierschaltung (120, 124, 126) eine Schaltung zum Durchführen von das erste Datenelement in der Pipeline einschließenden Berechnungen aufweist.
12. Das System nach Anspruch 11, wobei die Schaltung (120,124, 126) zum Durchführen von Berechnungen gestattet, daß verschiedene Berechnungen an verschiedenen Stufen des Satzes der zum Ausbilden der Pipeline miteinander verbundenen Stufen durchgeführt werden.
13. Das System nach Anspruch 11, wobei die Schaltung (120,124, 126) zum Durchführen von Berechnungen gestattet, daß dieselben Berechnungen an verschiedenen Stufen des Satzes der zum Ausbilden der Pipeline miteinander verbundenen Stufen durchgeführt werden.
14. Das System nach Anspruch 8, wobei die Modifizierschaltung (120,124, 126) eine Schaltung zum Aktualisieren des zweiten Datenelements aufweist.
15. Das System nach Anspruch 1, wobei die Schaltung (52, 68) zum Steuern des Flusses der ersten Gruppe der verschiedenen Datenelemente und die Schaltung zum Steuern des Flusses der zweiten Gruppe der verschiedenen Datenelemente einen elastischen Betrieb der Pipeline gestatten.
16. Das System nach Anspruch 1, wobei die Schaltung (52, 68) zum Steuern des Flusses der ersten Gruppe der verschiedenen Datenelemente und die Schaltung zum Steuern des Flusses der zweiten Gruppe der verschiedenen Datenelemente ferner eine Schaltung zur bidirektionalen Kommunikation zwischen den Stufen aufweist.
17. Das System nach Anspruch 1, wobei die Schaltung (52, 68) zum Steuern des Flusses der ersten Gruppe der verschiedenen Datenelemente und die Schaltung zum Steuern des Flusses der zweiten Gruppe der verschiedenen Datenelemente eine asynchrone Bewegung der ersten Gruppe und der zweiten Gruppe der verschiedenen Datenelemente in der Pipeline gestattet.
18. Das System nach Anspruch 1, wobei die Schaltung (52, 68) zum Steuern des Flusses der ersten Gruppe der verschiedenen Datenelemente und die Schaltung zum Steuern des Flusses der zweiten Gruppe der verschiedenen Datenelemente eine synchrone Bewegung der ersten Gruppe und der zweiten Gruppe der verschiedenen Datenelemente in der Pipeline gestattet.
19. Das System nach Anspruch 1, wobei die Schaltung (52, 68) zum Steuern des Flusses der ersten Gruppe der verschiedenen Datenelemente und die Schaltung zum Steuern des Flusses der zweiten Gruppe der verschiedenen Datenelemente in dem Satz der zum Ausbilden der Pipeline miteinander verbundenen Stufen enthalten ist.
20. Das System nach Anspruch 1, wobei die Pipeline ferner eine Schaltung (28) aufweist, die so ausgebildet ist, daß sie externe Signale an wenigstens einige der Stufen der Pipeline zur Verfügung stellt.
21. Das System nach Anspruch 1, wobei die Pipeline ferner aufweist: eine Schaltung (114), die so ausgebildet ist, daß sie Verzweigungen in der Pipeline bildet; und eine Schaltung (112) zum Steuern des Flusses ausgewählter der verschiedenen Datenelemente in die und aus den Verzweigungen.
22. Das System nach Anspruch 1, wobei die Pipeline ferner aufweist: eine Schaltung, die so ausgebildet ist, daß sie Nebenarme (Sidings) für die Pipeline ausbildet; und eine Schaltung (52, 68) zum Steuern des Flusses ausgewählter der Datenelemente in die und aus den Nebenarmen.
23. Das System nach Anspruch 1, ferner aufweisend einen Satz der dynamischen Auswahlschaltungen (62, 64) und einen Satz der Interaktionsschaltungen (72), wobei jede der dynamischen Auswahlschaltungen und der Interaktionsschaltungen jeweils einer der Stufen des Satzes von Stufen in der Pipeline zugeordnet sind.
24. Das System nach Anspruch 1, ferner aufweisend eine Schaltung (52, 68), die in dem Satz der Stufen verteilt ist, um zu sichern, daß jedes der verschiedenen Datenelemente der ersten Gruppe mit jedem der verschiedenen Datenelemente der zweiten Gruppe der Pipeline verglichen wird.
25. Das System nach Anspruch 1, wobei die dynamische Auswahlschaltung (62, 64) verwendet wird, um zu bestimmen, an welcher Stufe in der Pipeline ein bestimmtes erstes Datenelement aus der ersten Gruppe mit einem bestimmten zweiten Datenelement aus der zweiten Gruppe in Interaktion treten wird.
26. Ein Verfahren zum Bereitstellen eines Datenverarbeitungssystems, das verschiedene Datenelemente in zwei Richtungen transportieren kann, gekennzeichnet durch:
Bereitstellen eines Satzes von Stufen (20), die zum Ausbilden einer Pipeline miteinander verbunden sind;
Bereitstellen einer Schaltung, die so ausgebildet ist, daß sie den Fluß einer ersten Gruppe von verschiedenen Datenelementen in einer ersten Richtung durch den Satz der die Pipeline bildenden Stufen steuert; und
Bereitstellen einer Schaltung, die so ausgebildet ist, daß sie den Fluß einer zweiten Gruppe von verschiedenen Datenelementen in einer zweiten Richtung durch den Satz der die Pipeline bildenden Stufen steuert;
Bereitstellen einer Stufe in dem Satz von Stufen, die ferner enthält:
eine dynamische Auswahlschaltung, die so ausgebildet ist, daß sie bestimmt, ob ein erstes Datenelement aus der ersten Gruppe von verschiedenen Datenelementen und ein zweites Datenelement aus der zweiten Gruppe von verschiedenen Datenelementen in der einen Stufe vorhanden sind; und
eine Interaktionsschaltung, die so ausgebildet ist, daß sie bewirkt, daß das erste Datenelement und das zweite Datenelement in der einen Stufe in Interaktion treten, wenn sowohl das erste Datenelement als auch das zweite Datenelement in der einen Stufe vorhanden sind.
27. Das Verfahren nach Anspruch 26, ferner umfassend:
Steuern des Flusses einer ersten Gruppe von verschiedenen Datenelementen in einer ersten Richtung durch einen Satz von eine Pipeline bildenden Stufen;
Steuern des Flusses einer zweiten Gruppe von verschiedenen Datenelementen in einer zweiten Richtung durch den Satz der die Pipeline bildenden Stufen;
dynamisches Auswählen einer Stufe in dem Satz von Stufen in der Pipeline, wobei die eine Stufe ausgewählt wird, indem bestimmt wird, wann ein erstes Datenelement aus der ersten Gruppe von verschiedenen Datenelementen und ein zweites Datenelement aus der zweiten Gruppe von verschiedenen Datenelementen in der einen Stufe vorhanden sind; und
Veranlassen des ersten Datenelements und des zweiten Datenelements, miteinander in der einen Stufe in Interaktion zu treten, wenn das erste Datenelement und das zweite Datenelement in der einen Stufe vorhanden sind.
28. Das Verfahren nach Anspruch 27, ferner umfassend den Schritt des Sicherns, daß das erste Datenelement mit jedem der verschiedenen Datenelemente der zweiten Gruppe, die in der Pipeline angetroffen werden, nicht mehr als einmal in Interaktion tritt.
29. Das Verfahren nach Anspruch 27, wobei der Schritt des dynamischen Auswählens ferner den Schritt des Bestimmens des Zustands der einen Stufe umfaßt, wobei die eine Stufe irgendeinen der folgenden Zustände belegen kann: leer; voll; aufwärts; abwärts und abgeschlossen.
30. Das Verfahren nach Anspruch 27, wobei die Schritte des Steuerns des Flusses der ersten Gruppe von verschiedenen Datenelementen und des Flusses der zweiten Gruppe von verschiedenen Datenelementen eine elastische Operation der Pipeline ermöglichen.
31. Das Verfahren nach Anspruch 22, ferner umfassend den Schritt des Modifizierens des ersten Datenelements und/oder des zweiten Datenelements.
32. Das Verfahren nach Anspruch 31, wobei der Schritt des Modifizierens ferner den Schritt des Löschens des zweiten Datenelements aus der Pipeline umfaßt.
33. Das Verfahren nach Anspruch 31, wobei der Schritt des Modifizierens ferner den Schritt des Durchführens von Berechnungen, die das erste Datenelement einschließen, umfaßt.
34. Das Verfahren nach Anspruch 31, wobei der Schritt des Modifizierens ferner den Schritt des Aktualisierens des zweiten Datenelements umfaßt.
35. Das Verfahren nach Anspruch 31, ferner umfassend den Schritt des Einfügens eines Abschnitts des ersten Datenelements, das in der ersten Richtung fließt, als eines der verschiedenen Datenelemente der zweiten Gruppe, die in der zweiten Richtung fließt.
36. Das Verfahren nach Anspruch 27, wobei der Interaktionsschritt ferner den Schritt des Vergleichens des ersten Datenelements in der einen Stufe mit jedem der verschiedenen Datenelemente der zweiten Gruppe, die in der einen Stufe angetroffen werden, umfaßt.
37. Das Verfahren nach Anspruch 36, ferner umfassend den Schritt des Verhinderns der Bewegung des ersten Datenelements aus der ausgewählten Stufe solange, bis der Vergleichsschritt abgeschlossen ist.
38. Das Verfahren nach Anspruch 27, wobei der Schritt des Steuerns des Flusses der ersten Gruppe von verschiedenen Datenelementen und der Schritt des Steuerns des Flusses der zweiten Gruppe von verschiedenen Datenelementen ferner den Schritt des Ermöglichens einer asynchronen Bewegung der Datenelemente der ersten Gruppe und der zweiten Gruppe in der Pipeline umfassen.
39. Das Verfahren nach Anspruch 27, wobei der Schritt des Steuerns der Flusses der ersten Gruppe von verschiedenen Datenelementen und der Schritt des Steuerns des Flusses der zweiten Gruppe von verschiedenen Datenelementen ferner den Schritt des Ermöglichens einer synchronen Bewegung der Datenelemente der ersten Gruppe und der zweiten Gruppe in der Pipeline umfassen.
DE69430352T 1993-10-21 1994-10-17 Gegenflusspipeline Expired - Fee Related DE69430352T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US14065493A 1993-10-21 1993-10-21

Publications (2)

Publication Number Publication Date
DE69430352D1 DE69430352D1 (de) 2002-05-16
DE69430352T2 true DE69430352T2 (de) 2003-01-30

Family

ID=22492220

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69430352T Expired - Fee Related DE69430352T2 (de) 1993-10-21 1994-10-17 Gegenflusspipeline

Country Status (5)

Country Link
US (1) US5572690A (de)
EP (1) EP0650117B1 (de)
JP (1) JP3588487B2 (de)
KR (1) KR100338790B1 (de)
DE (1) DE69430352T2 (de)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5732233A (en) * 1995-01-23 1998-03-24 International Business Machines Corporation High speed pipeline method and apparatus
US5732269A (en) * 1995-04-21 1998-03-24 International Business Machines Corporation Data adapter transparent to application I/O path
US5704054A (en) * 1995-05-09 1997-12-30 Yale University Counterflow pipeline processor architecture for semi-custom application specific IC's
EP0787327B1 (de) * 1995-08-23 2002-06-12 Koninklijke Philips Electronics N.V. Datenverarbeitungssystem mit einer asynchrongesteuerten pipeline
JP3510729B2 (ja) * 1996-02-29 2004-03-29 三洋電機株式会社 命令実行方法および命令実行装置
US6209020B1 (en) * 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US5937177A (en) * 1996-10-01 1999-08-10 Sun Microsystems, Inc. Control structure for a high-speed asynchronous pipeline
US5964866A (en) * 1996-10-24 1999-10-12 International Business Machines Corporation Elastic self-timed interface for data flow elements embodied as selective bypass of stages in an asynchronous microprocessor pipeline
US6065109A (en) * 1997-02-05 2000-05-16 Sun Microsystems, Inc. Arbitration logic using a four-phase signaling protocol for control of a counterflow pipeline processor
US5838939A (en) * 1997-05-09 1998-11-17 Sun Microsystems, Inc. Multi-issue/plural counterflow pipeline processor
US5996059A (en) * 1997-07-01 1999-11-30 National Semiconductor Corporation System for monitoring an execution pipeline utilizing an address pipeline in parallel with the execution pipeline
US6360288B1 (en) * 1997-10-17 2002-03-19 Sun Microsystems, Inc. Method and modules for control of pipelines carrying data using pipelines carrying control signals
AU5123799A (en) 1998-07-22 2000-02-14 California Institute Of Technology Reshuffled communications processes in pipelined asynchronous circuits
US6085316A (en) * 1998-07-28 2000-07-04 Sun Microsystems, Inc. Layered counterflow pipeline processor with anticipatory control
US6163839A (en) * 1998-09-30 2000-12-19 Intel Corporation Non-stalling circular counterflow pipeline processor with reorder buffer
US6192466B1 (en) 1999-01-21 2001-02-20 International Business Machines Corporation Pipeline control for high-frequency pipelined designs
US6442671B1 (en) * 1999-03-03 2002-08-27 Philips Semiconductors System for priming a latch between two memories and transferring data via the latch in successive clock cycle thereafter
WO2001016714A1 (en) 1999-09-01 2001-03-08 Intel Corporation Fast write instruction for micro engine used in multithreaded parallel processor architecture
US7546444B1 (en) 1999-09-01 2009-06-09 Intel Corporation Register set used in multithreaded parallel processor architecture
US7681018B2 (en) 2000-08-31 2010-03-16 Intel Corporation Method and apparatus for providing large register address space while maximizing cycletime performance for a multi-threaded register file set
US6725287B1 (en) 2000-11-09 2004-04-20 Elity Systems, Inc. Method and system for capturing streaming data by an actionable information engine
US7017064B2 (en) * 2001-05-09 2006-03-21 Mosaid Technologies, Inc. Calculating apparatus having a plurality of stages
US7283557B2 (en) * 2002-01-25 2007-10-16 Fulcrum Microsystems, Inc. Asynchronous crossbar with deterministic or arbitrated control
US7437724B2 (en) * 2002-04-03 2008-10-14 Intel Corporation Registers for data transfers
US7698535B2 (en) 2002-09-16 2010-04-13 Fulcrum Microsystems, Inc. Asynchronous multiple-order issue system architecture
US7260753B2 (en) 2003-07-14 2007-08-21 Fulcrum Microsystems, Inc. Methods and apparatus for providing test access to asynchronous circuits and systems
US7584449B2 (en) * 2004-11-22 2009-09-01 Fulcrum Microsystems, Inc. Logic synthesis of multi-level domino asynchronous pipelines
US7814280B2 (en) * 2005-01-12 2010-10-12 Fulcrum Microsystems Inc. Shared-memory switch fabric architecture
US20070123792A1 (en) * 2005-11-17 2007-05-31 Charlotte-Mecklenburg Hospital Authority D/B/A Carolinas Medical Center System and method for determining airway obstruction
US7916718B2 (en) * 2007-04-19 2011-03-29 Fulcrum Microsystems, Inc. Flow and congestion control in switch architectures for multi-hop, memory efficient fabrics
US7757017B2 (en) * 2007-05-15 2010-07-13 International Business Machines Corporation Adjusting direction of data flow between I/O bridges and I/O hubs based on real time traffic levels
US7984272B2 (en) * 2007-06-27 2011-07-19 International Business Machines Corporation Design structure for single hot forward interconnect scheme for delayed execution pipelines
US7769987B2 (en) * 2007-06-27 2010-08-03 International Business Machines Corporation Single hot forward interconnect scheme for delayed execution pipelines
US7913007B2 (en) * 2007-09-27 2011-03-22 The University Of North Carolina Systems, methods, and computer readable media for preemption in asynchronous systems using anti-tokens
US8356151B2 (en) * 2008-02-01 2013-01-15 International Business Machines Corporation Reporting of partially performed memory move
US8327101B2 (en) * 2008-02-01 2012-12-04 International Business Machines Corporation Cache management during asynchronous memory move operations
US8245004B2 (en) * 2008-02-01 2012-08-14 International Business Machines Corporation Mechanisms for communicating with an asynchronous memory mover to perform AMM operations
US8275963B2 (en) * 2008-02-01 2012-09-25 International Business Machines Corporation Asynchronous memory move across physical nodes with dual-sided communication
US8669779B2 (en) 2008-06-27 2014-03-11 The University Of North Carolina At Chapel Hill Systems, pipeline stages, and computer readable media for advanced asynchronous pipeline circuits
US8385971B2 (en) * 2008-08-19 2013-02-26 Digimarc Corporation Methods and systems for content processing
US8452944B2 (en) * 2009-05-22 2013-05-28 Canon Kabushiki Kaisha Information processing apparatus and information processing method
JP5650441B2 (ja) 2010-06-07 2015-01-07 キヤノン株式会社 演算装置、キャッシュ装置、その制御方法及びコンピュータプログラム
JP5627330B2 (ja) 2010-08-02 2014-11-19 キヤノン株式会社 情報処理装置、キャッシュ装置およびデータ処理方法
WO2015192062A1 (en) 2014-06-12 2015-12-17 The University Of North Carolina At Chapel Hill Camera sensor with event token based image capture and reconstruction

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL297562A (de) * 1962-09-06
GB1506972A (en) * 1976-02-06 1978-04-12 Int Computers Ltd Data processing systems
JPS57139856A (en) * 1981-02-23 1982-08-30 Nippon Telegr & Teleph Corp <Ntt> Data driving information processing system
US4489393A (en) * 1981-12-02 1984-12-18 Trw Inc. Monolithic discrete-time digital convolution circuit
US5187800A (en) * 1985-01-04 1993-02-16 Sun Microsystems, Inc. Asynchronous pipelined data processing system
GB8605366D0 (en) * 1986-03-05 1986-04-09 Secr Defence Digital processor
US4991078A (en) * 1987-09-29 1991-02-05 Digital Equipment Corporation Apparatus and method for a pipelined central processing unit in a data processing system
DE68927218T2 (de) * 1988-10-18 1997-02-06 Hewlett Packard Co Verfahren und Vorrichtung für Zustandskode in einem Zentralprozessor
US5210750A (en) * 1989-03-23 1993-05-11 International Business Machines Corporation Method and apparatus for distributed queue multiple access in a communication system
US5107465A (en) * 1989-09-13 1992-04-21 Advanced Micro Devices, Inc. Asynchronous/synchronous pipeline dual mode memory access circuit and method
US5361367A (en) * 1991-06-10 1994-11-01 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Highly parallel reconfigurable computer architecture for robotic computation having plural processor cells each having right and left ensembles of plural processors

Also Published As

Publication number Publication date
DE69430352D1 (de) 2002-05-16
KR950012242A (ko) 1995-05-16
EP0650117B1 (de) 2002-04-10
JPH07253885A (ja) 1995-10-03
JP3588487B2 (ja) 2004-11-10
EP0650117A1 (de) 1995-04-26
KR100338790B1 (ko) 2002-10-09
US5572690A (en) 1996-11-05

Similar Documents

Publication Publication Date Title
DE69430352T2 (de) Gegenflusspipeline
DE3786298T2 (de) Verfahren und Schalter zum Vermitteln von Informationen.
EP0960374B1 (de) Internes bussystem für dfps, sowie bausteine mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen, zur bewältigung grosser datenmengen mit hohem vernetzungsaufwand
DE60306937T2 (de) Synchronisierung von pipelines in einem datenverarbeitungsgerät
DE69429773T2 (de) Zellenvermittlung und verfahren zur weglenkung von zellen durch diese vermittlung
DE3650063T2 (de) FIFO-Speicher mit verminderter Durchfallzeit.
DE69131477T2 (de) Netzwerkanpassungseinrichtung
DE69514550T2 (de) Adaptiver leitweglenkungsmechanismus für torusverbindungsnetzwerk
DE3035718C2 (de) Signalprozessoranordnung mit Bedingungsunterbrechungseinheit
DE3687956T2 (de) Datensynchronisator zwischen einer sende- und einer empfangsanlage.
DE3785855T2 (de) Vermittlungsanordnung und -verfahren.
DE3787600T2 (de) Koppelpunktschaltung für Datenpaketraumvermittlung.
DE2856483A1 (de) Verbindungseinheit fuer datenverarbeitungssysteme
DE2755897A1 (de) Ein/ausgabe-system
EP1669885A2 (de) Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
EP1329816A2 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE3933361A1 (de) Einrichtung und verfahren zur warteschlangenbildung von anforderungen und antworten auf einem pipeline-paketbus
DE2619462B2 (de) Anschlußschaltung
DE3587336T2 (de) Ringuebertragungssystem mit variabler verbindungsreihenfolge der stationen.
DE2010772A1 (de)
DE2731200A1 (de) Anordnung zum steuern von datenfluessen
DE1295595B (de) Verfahren zur UEbertragung von Datennachrichten ueber eine digitale Datenuebertragungsanlage
DE2707820C3 (de) Datenverarbeitungsanlage
DE112005001221T5 (de) Verfahren und Vorrichtung zur synchronen ungepufferten Flusssteuerung von Paketen auf einer Ringverbindung
DE3856394T2 (de) Zwischenverbindungssystem für Multiprozessorstruktur

Legal Events

Date Code Title Description
8332 No legal effect for de
8370 Indication related to discontinuation of the patent is to be deleted
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee