AT502264B1 - Verfahren zum verarbeiten von daten in einem logischen system - Google Patents

Verfahren zum verarbeiten von daten in einem logischen system Download PDF

Info

Publication number
AT502264B1
AT502264B1 AT6972004A AT6972004A AT502264B1 AT 502264 B1 AT502264 B1 AT 502264B1 AT 6972004 A AT6972004 A AT 6972004A AT 6972004 A AT6972004 A AT 6972004A AT 502264 B1 AT502264 B1 AT 502264B1
Authority
AT
Austria
Prior art keywords
output
data
signal
input
phase
Prior art date
Application number
AT6972004A
Other languages
English (en)
Other versions
AT502264A1 (de
Inventor
Andreas Dipl Ing Dr Steininger
Martin Dipl Ing Delvai
Wolfgang Dipl Ing Huber
Original Assignee
Univ Wien Tech
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 Univ Wien Tech filed Critical Univ Wien Tech
Priority to AT6972004A priority Critical patent/AT502264B1/de
Publication of AT502264A1 publication Critical patent/AT502264A1/de
Application granted granted Critical
Publication of AT502264B1 publication Critical patent/AT502264B1/de

Links

Landscapes

  • Logic Circuits (AREA)

Description

2 AT 502 264 B1
Die Erfindung betrifft Verfahren zum Verarbeiten von Eingangsdaten, welche aus einer oder mehreren Eingangsvariablen zusammengesetzt sind, in einem logischen System bestehend aus Verarbeitungsmitteln, welche mittels Übertragungsmitteln miteinander verbunden sind, wobei die Verarbeitungsmittel zumindest einen Eingang und zumindest einen Ausgang aufweisen, wobei von den Übertragungsmitteln Ausgangsvariablen von dem/den Ausgang/Ausgängen zu dem/den Eingang/Eingängen übertragen werden, und wobei weiters ein oder mehrere Eingangsvariablen von den Verarbeitungsmitteln mittels eines Sets von Transformationsregeln in Ausgangsvariablen aufgelöst werden.
Digitale Schaltungen werden heute fast ausschließlich synchron entworfen. Das synchrone Design läuft nach relativ einfachen, klaren Regeln ab, deren Einhaltung im Wesentlichen ein Funktionieren des Designs garantiert. Sowohl die Entwurfstechniken wie auch die Werkzeuge sind über Jahrzehnte gereift und millionenfach bewährt. Das synchrone Design ist ein wichtiger Faktor in der Erfolgsgeschichte der digitalen Schaltungen.
Es gibt allerdings immer deutlichere Indizien dafür, dass das synchrone Design bald an die Grenzen seiner Möglichkeiten gelangen wird. Vor allem die rasant steigenden Taktraten, aber auch die Tatsache, dass schwer abschätzbare Laufzeiten im Routing gegenüber klar definierten Gatterlaufzeiten immer mehr in den Vordergrund treten, machen grundlegende Annahmen des synchronen Paradigmas immer schwerer haltbar. Hinzu kommen Probleme mit Metastabilität an den Grenzen von Clock-Domains, Probleme bei der Taktverteilung, etc.
Es ist daher durchaus gerechtfertigt, sich darauf zu besinnen, dass ein Design digitaler Schaltungen auch ohne das synchrone Paradigma möglich ist, und tatsächlich existierte bereits vor dem Siegeszug der synchronen Methoden auch eine Reihe von asynchronen Entwurfstechniken. Durch deren Erweiterung bzw. Modifikation können u.U. geeignete Alternativen entwickelt werden.
Grundprobleme des Logikdesign
Abstrakt betrachtet ist das Grundproblem des Logikdesign einfach zu formulieren: Es darf stets nur mit gültigen Daten operiert werden. Die technische Umsetzung dieser Forderung ist allerdings im Detail sehr komplex, da die Gültigkeit von Daten auf mehreren Abstraktionsebenen betrachtet werden muss, die sich von der analogen Darstellung eines digitalen Signals über dessen logische Interpretation als Bit bis hin zur Konsistenz eines aus mehreren Bits bzw. Variablen gebildeten Datenwortes spannen. In diesem Zusammenhang bezeichnet Bit den konkreten logischen Zustand einer Variable zu einem Zeitpunkt.
Diese Abstraktionsebenen sollen im Folgenden genauer betrachtet werden. Gültigkeit der analogen Signalpegel
Im Unterschied zur analogen Elektronik werden in der digitalen Welt nur zwei diskrete Werte, nämlich „0“ und „1“, als gültig betrachtet. Die Repräsentation eines digitalen Wertes in der Hardware erfolgt üblicherweise aber dennoch mittels eines im Grunde analogen elektrischen Signals. Auf diesem erfolgen die Übergänge zwischen „0“ und „1“ aufgrund physikalischer Grenzen nicht sprunghaft, sondern das analoge Signal U(t) nimmt zwischenzeitlich auch Pegel an, die nach der digitalen Abstraktion ungültig sind (siehe Fig. 1). Da diese ungültigen Pegel also in der digitalen Darstellung nicht Vorkommen, können sie im logischen Design a priori auch nicht berücksichtigt werden. Dieser konzeptionelle Mangel führt potentiell zu Problemen, daher ist durch begleitende Maßnahmen sicherzustellen, dass ungültige Pegel an den Signalflanken keine funktionalen Störungen verursachen.
Die endliche Flankensteilheit der analogen Signale bewirkt in der digitalen Darstellung eine Signalverzögerung entsprechend der Projektion auf die Zeitachse (siehe Fig. 1). In Verbindung 3 AT 502 264 B1 mit unterschiedlichen Schwellwerten bei der Interpretation eines Signals als logischer Pegel an verschiedenen Eingängen entsteht weiters ein Skew (siehe auch weiter unten).
Bei synchronem Design führt die analoge Natur der Signaldarstellung zu einem weiteren fundamentalen Problem: Die Existenz eines kontinuierlichen Überganges zwischen den logischen Zuständen ist letztlich die Wurzel der Metastabilität von Speicherelementen. Dieses Problem ist zwar in der Praxis technisch beherrschbar, kann aber nicht systematisch eliminiert werden (siehe ebenfalls weiter unten).
Laufzeiten und Skew
In der Booleschen Logik sind kombinatorische Verknüpfungen zeitfrei z.B. durch Wahrheitstabellen beschrieben. Es ist nicht möglich, zeitliche Zusammenhänge unmittelbar zu beschreiben. In der physikalischen Realisierung treten jedoch an Gattern und Leitungen stets Laufzeiten auf, die letztlich das Zeitverhalten eines Designs bestimmen. Zusätzlich sind infolge von unvermeidlichen Asymmetrien z.B. im physikalischen Layout des Chips die Laufzeiten für alle Pfade unterschiedlich (und von den Betriebsbedingungen abhängig). Es kann folglich nicht davon ausgegangen werden, dass zeitliche Beziehungen zwischen Flanken (d.h. Zustandsübergängen) auf unterschiedlichen Pfaden bei der Verarbeitung erhalten bleiben. Da jedoch die zeitlichen Beziehungen zwischen den einzelnen Signalen - insbesondere z.B. die Reihenfolge des Eintreffens von Flanken - eine entscheidende Rolle für die Funktion einer Schaltung spielen, ist beim Design logischer Schaltungen zusätzlich zum Logikentwurf eine explizite Analyse des Zeitverhaltens notwendig.
Datenkonsistenz
Kombinatorische logische Verknüpfungen der Booleschen Logik generieren aus mehreren Bits am Eingang („Daten“) eindeutig ein Ausgangsbit. Eine logische Verknüpfung von Bits ist nur sinnvoll, wenn diese aus dem gleichen Kontext stammen, d.h. konsistent sind. Üblicherweise laufen die zum gleichen Kontext gehörenden Daten wie eine Wellenfront parallel durch die Schaltung. Idealerweise haben daher Bits, die an einem Eingang gleichzeitig eintreffen, den gleichen Kontext, und zu einem späteren Zeitpunkt trifft dann die nächste Wellenfront mit dem nächsten konsistenten Datensatz ein. In der physikalischen Realisierung führt nun aber der Skew dazu, dass die Wellenfronten „zerlaufen“ und beim Übergang von einem gültigen Datenwort auf das nächste Änderungen in den einzelnen Bits zeitlich versetzt stattfinden. Dadurch entsteht eine Sequenz inkonsistenter Daten, deren Bits zum Teil noch dem alten Eingangswort angehören und zum Teil schon dem neuen (siehe Fig. 2). Der Zustand Z(n) liegt zu einem Zeitpunkt t1 in konsistenter Form vor, ebenso der Zustand Z(n+1) zu einem Zeitpunkt t4; zu den Zeitpunkten t2 und t3 liegt allerdings Inkonsistenz auf Grund von Skew vor.
Die zweiwertige Boolesche Logik ist nicht in der Lage, die Konsistenz der Daten unmittelbar darzustellen bzw. zu berücksichtigen. Es ist bei alleiniger Betrachtung des Datenwortes daher unmöglich festzustellen, ob alle Bits dem gleichen Kontext angehören. Um zu verhindern, dass inkonsistente Daten verarbeitet werden, muss die fehlende Information über die Konsistenz auf andere Weise hinzugefügt werden, z.B. durch zusätzliche Steuersignale (Takt, Handshake-Signale). Gültigkeit von Bits
Aus Aufwandsgründen wird die Verarbeitung inkonsistenter Daten in räumlich begrenzten Bereichen oft zugelassen. Dadurch treten am Ausgang vorübergehend falsche logische Zustände (Glitches) auf (Figur 3), die aus einer zeitfreien Analyse mittels der Booleschen Logik nicht erklärbar sind. Um eine über diesen begrenzten Bereich hinaus gehende weitere Verarbeitung der ungültigen Zwischenzustände zu verhindern, wäre es nötig, diese als ungültig zu markieren. Dies ist mit der üblichen zweiwertigen Darstellung logischer Zustände nicht möglich, sondern 4 AT 502 264 B1 erfordert zusätzliche Maßnahmen.
Synchronisation der Eingangsbits
Ohne Begrenzung der Asymmetrie in den Laufzeiten der Bits können sich aufeinander folgende Wellenfronten so weit ineinander schieben, dass zu keinem Zeitpunkt mehr ein konsistentes Datenwort am Eingang anliegt. Damit wäre eine sinnvolle Verarbeitung auch dann nicht mehr möglich, wenn Information über die Konsistenz verfügbar wäre. Das „Zerlaufen“ der Wellenfronten, wie es in Figur 4 schematisch dargestellt ist, muss daher durch Maßnahmen zur Synchronisation begrenzt werden.
Mit der Booleschen Logik können jedoch nur Zustände dargestellt werden und keine Ereignisse. Das macht es a priori unmöglich eine Wellenfront vollständig zu identifizieren, da beim Übergang von einem konsistenten Eingangswort zum nächsten nicht immer alle Bits ihren logischen Zustand ändern. Wird an einem Signal keine Änderung beobachtet, so kann ohne Kenntnis der Laufzeiten nicht unterschieden werden, ob dieser unveränderte Pegel bereits dem neuen Eingangsbit entspricht, oder ob eine Änderung des Logikpegels noch ausständig ist.
Synchrone Logik
Bei der synchronen Logik werden die Flanken eines speziellen zusätzlichen Steuersignals, nämlich des Taktsignals, als Kennzeichnung der Gültigkeit von Daten herangezogen: Bei der aktiven Taktflanke ist ein Datenwort per definitionem gültig. Durch entsprechende Timing-Analysen während des Designs wird eine Taktfrequenz ermittelt, die geeignet ist, dieses Postulat zu erfüllen. Bei dieser Timing-Analyse müssen worst-case Angaben für Laufzeiten und Skew berücksichtigt werden, die Gültigkeit der analogen Signalpegel ist angesichts der vergleichsweise steilen Signalflanken im Normalfall automatisch gegeben.
Zur Synchronisation wird die kombinatorische Logik durch gezieltes Einfügen von Registern in kleinere überschaubare Einheiten aufgeteilt. Diese strukturelle Maßnahme wird als Pipelining bezeichnet. Innerhalb der verbleibenden Pipeline-Stufen können lokale Inkonsistenzen in Kauf genommen werden, da die Daten erst nach Ende aller Einschwingvorgänge als gültig angesehen werden.
Damit sind scheinbar auch alle Probleme gelöst, und die Praxis zeigt, dass sich auf dieser Basis auch tatsächlich zuverlässig funktionierende Schaltungen entwerfen lassen. Dennoch verbleiben einige grundsätzliche Schönheitsfehler: • Das Grundproblem, die Gültigkeit der Daten festzustellen, ist konzeptionell nicht wirklich gelöst: In Ermangelung einer direkten Möglichkeit zur Überprüfung der Gültigkeit wird diese indirekt aus der Überprüfung einer zeitlichen Bedingung abgeleitet. Gerade dieser indirekte Schluss ist jedoch problematisch, da eine Zeitbedingung ein im Grunde ungeeignetes Maß für die Gültigkeit der Daten ist. • Durch das Hinzufügen der Zeitbedingung wird die Überprüfung der Gültigkeit aus dem logischen Entwurf herausgelöst (was diesen scheinbar auch vereinfacht) und in eine spätere Analysephase verschoben, die nun zusätzlich erforderlich ist. • Diese Timing-Analyse ist meist wesentlich komplexer als das logische Design selbst. So müssen z.B. auch beim Taktsignal Delay und Skew berücksichtigt werden. Da dies die Analyse substanziell erschwert, werden beim physikalischen Design große Aufwände getrieben, um Delay und Skew beim Takt minimal zu halten, was angesichts der steigenden Taktraten jedoch immer problematischer wird. • In der Analysephase ist das Laufzeitproblem nur dann lösbar, wenn einschränkende Annah- 5 AT 502 264 B1 men über die Signalverzögerungen gemacht werden. Dies wiederum zieht folgende schwere Nachteile nach sich:
Angesichts der Dominanz von Interconnect-Delay über Gate Delay können realistische Analysen des Zeitverhaltens erst nach dem Place & Route - d.h. erst gegen Ende des De-sign-Flow - gemacht werden. In der Praxis bewirken Erkenntnisse aus diesen Analysen oft Änderungen im funktionalen Design. Die Trennung von funktionalem Design und Timing-Analyse führt auf diese Weise zu unnötig großen Iterationszyklen im Design-Flow.
Die tatsächlich im Betrieb auftretenden Signalverzögerungen sind unter anderem abhängig von den Betriebsbedingungen (Versorgung, Temperatur) und unterliegen zusätzlich einer Typenstreuung. Bei der Festlegung des Taktes müssen daher willkürliche Grenzen gesetzt werden. Üblicherweise wird ein zulässiger Bereich für die Betriebsbedingungen festgelegt, und anschließend die Taktfrequenz auf den worst case innerhalb dieses Bereiches dimensioniert. Daraus ergibt sich zwangsläufig, dass unter nicht-worst-case Bedingungen der Takt unnötig langsam ist, und dass bei Überschreiten der (willkürlich!) festgelegten Grenzen das Design nicht mehr ordnungsgemäß funktioniert - es ist dann weder Datenkonsistenz noch Gültigkeit der Bits noch Gültigkeit der Signalpegel gegeben.
Bei jeder geringfügigen Änderung der Annahmen (kleine Änderung im Design, neue Technologie, anderer Temperaturbereich) ist eine neuerliche Timing-Analyse erforderlich. • Für das Zeitverhalten asynchroner Eingänge bzw. Schnittstellen zu anderen Clock-Domains können im Allgemeinen keinerlei einschränkende Annahmen gemacht werden. Diese können daher nicht in der Timing-Analyse berücksichtigt werden. Damit ergibt sich in synchronen Schaltungen an Schnittstellen immer ein Potential für Metastabilität, das letztlich auf das Problem der analogen Signalpegel zurückgeführt werden kann.
Angesichts der rasant steigenden Taktraten und der zunehmenden Miniaturisierung werden die Probleme im Zusammenhang mit der Timing-Analyse immer massiver. Hinzu kommen Probleme mit der Verlustleitung aufgrund der ständigen, teils unnötigen Schaltvorgänge sowie der massiven Energieverluste im Taktnetz. Weiters weisen synchrone Schaltungen ein besonders ungünstiges Verhalten bezüglich Störabstrahlung auf (Linienspektrum mit weit verzweigtem Taktnetz als Antenne). Wie bereits erwähnt sind auch die Metastabilitätsprobleme an den Schnittstellen zwischen Clock-Domains bzw. zu asynchronen Bereichen ein spezifischer Nachteil synchroner Designs. Der willkürliche, indirekte Schluss, vom Einhalten einer Zeitbedingung auf die Gültigkeit der Daten zu schließen, ist zwar eine pragmatische aber keineswegs konzeptionell elegante Lösung der Grundprobleme des digitalen Design. Es wird immer höhere Anstrengungen erfordern, die praktischen Auswirkungen dieses konzeptionellen Mangels zu kaschieren, und letztendlich wird die Rentabilität des synchronen Designs in Zukunft nicht mehr gegeben sein.
Als Alternative zu den synchronen Verfahren bieten sich asynchrone Verfahren an, auf die im Folgenden kurz eingegangen werden soll.
Bestehende asynchrone Verfahren
Techniken zum Entwurf asynchroner Logik gab es schon vor der Verbreitung des synchronen Design-Paradigmas. Angesichts der immer offenbarer werdenden Probleme mit dem synchronen Entwurf sind nun schon seit Jahren wieder Bemühungen für die Rückkehr zur asynchronen Logik bzw. deren Weiterentwicklung im Gange. Bisher konnte sich jedoch keine der vorgeschlagenen Methoden durchsetzen, da sie allesamt substantielle Nachteile aufweisen. Im Folgenden soll auf die wichtigsten Verfahren kurz eingegangen werden.
Huffman-Circuits 6 AT 502 264 B1
Die so genannten Huffman-Circuits sind geeignet, das Problem der Gültigkeit von Bits unmittelbar zu lösen. Zu diesem Zweck wird die Logik so ausgelegt, dass die Änderung eines beliebigen einzelnen Bits am Eingang stets ohne transiente Zwischenzustände direkt zum gewünschten Zustand am Ausgang führt. Die dafür notwendige Robustheit des Designs gegenüber einem internen Skew des logischen Blockes wird durch Hinzufügen redundanter Logik erkauft.
Das Problem der Datenkonsistenz wird durch die Restriktion umgangen, dass sich am Eingang stets nur ein einzelnes Bit ändern darf und danach das Einschwingen der Schaltung abgewartet werden muss („fundamental Mode“). Dies ist keine Lösung sondern vielmehr eine Restriktion, die für reale Anwendungen vollkommen unrealistisch ist, weshalb sich der klassische Ansatz (Scott Hauck, Asynchronous Design Methodologies: An OverView, Proc. of the IEEE vol. 83, no 1, January 1995) auch kaum in der Praxis durchsetzen konnte.
Das Problem der Synchronisation bleibt ebenfalls im Wesentlichen ungelöst. Die vorgeschlagenen Maßnahmen beschränken sich auf das Einfügen von Delay-Elementen in den Rückkopplungspfad. Dies ist nicht nur im Design schwer zu handhaben, sondern erfordert letztlich auch wieder worst-case Annahmen für das Timing. Die Maßnahmen sind überdies nicht allgemein anwendbar und sind z.B. für Datenpfadelemente völlig ungeeignet.
Die vorgeschlagenen Varianten (Fred. U. Rosenberger, Charles E. Molnar, Thomas J. Chaney, Ting-Pien Fang, Q-Modules: Internally Clocked Delay-Insensitive Modules, IEEE Transactions on Computers, vol. 37, no 9, September 1988, pp. 1005 - 1018) des klassischen Konzepts versuchen die Restriktionen bezüglich der Eingänge zu lockern, lösen aber das Synchronisationsproblem letztendlich auch nicht und konnten sich daher ebenfalls nicht durchsetzen. In Summe sind die Huffman-Circuits wohl eher eine geeignete Methode, um die lokale Skew-Problematik in den Griff zu bekommen, als ein durchgängiges Design-Konzept für asynchrone Logik.
Micropipelines
Bei den Micropipelines (Ivan E. Sutherland, Micropipelines, Communications of the ACM, vol. 32, no 6, June 1989, pp. 720 - 738) wird wie im synchronen Design die Logik durch eine Pipeline strukturiert. Die Synchronisation der Daten zwischen den Stufen der Pipeline wird nun allerdings nicht mittels eines starren Taktsignals geregelt, sondern durch ein Handshake-Protokoll. Dieses ist prinzipiell in der Lage, die Abarbeitungsgeschwindigkeit flexibel zu regeln. Damit entfallen alle mit der Taktung verbundenen Nachteile des synchronen Designs.
Micropipelines sind also eine attraktive Lösung für das Problem der Synchronisation und werden zu diesem Zweck auch in einigen praktischen Designs eingesetzt (S. B. Furber, A. Efthymi-ou, J. D. Garside, D. W. Lloyd, M. J. G. Lewis, S. Temple, Power Management in the Amulet Microprocessors, IEEE Design & Test of Computers, vol. 18, no 2, 2001, pp. 42 - 52; A. Taka-mura, M. Kuwako, M. Imai, T. Fujii, M. Ozawa, I. Fukasaku, Y. Ueno, T. Nanya, TITAC-2: an asynchronous 32-bit microprocessor based on scalable-delay-insensitive model, Proc. IEEE International Conference on Computer Design 1997 (ICCD'97), 12-15 Oct. 1997, pp. 288 -294). Das Problem der Laufzeiten und des Skew lösen sie nur insoweit, als die Strukturierung eine Eingrenzung des Problems auf die jeweiligen Pipelinestufen impliziert. Auch das Problem der Datenkonsistenz bleibt ungelöst.
Damit bleibt auch hinsichtlich der Synchronisation noch ein wichtiger Punkt offen: Während Micropipelines hervorragend dazu geeignet sind, die im Rahmen der Synchronisation auftretenden Ereignisse in einer elastischen Pipeline zu verwalten, wird das Generieren dieser Ereignisse an eine Completion Detection Unit delegiert. Deren Aufgabe ist es, eine Flanke (= Ereignis) zu erzeugen, sobald die Daten am Ausgang einer kombinatorischen Stufe fertig verarbeitet, also konsistent und gültig sind. Zu diesem Zeitpunkt werden sie in das Pipeline-Register übernommen, sofern die nachfolgende Stufe bereit ist, neue Daten zu verarbeiten (auch dies wird 7 AT 502 264 B1 über eine Flanke signalisiert). Damit lasten offenbar die Probleme von Laufzeiten & Skew sowie das der Datenkonsistenz auf der Completion Detection Unit. Gerade für diese wichtige Funktion werden allerdings nur höchst unbefriedigende Lösungen vorgeschlagen: • Im klassischen Ansatz der Micropipeline wird eine Zeitsteuerung vorgeschlagen: In jeder Verarbeitungsstufe gibt ein Delay-Element an, wann die Daten (im worst case) fertig verarbeitet sind. Dies ist keine substantielle Verbesserung zur synchronen Logik, denn immer noch erfolgt der indirekte Schluss von Zeitbedingung auf Gültigkeit der Daten mit all den daraus resultierenden Problemen. • Alternativ zur Zeitsteuerung wird auch die Ermittlung des Gültigkeitszeitpunktes der Daten mittels „current sensing“ vorgeschlagen: Anhand von Stromspitzen in der Versorgung kann man erkennen, wann Signalflanken auftreten, nach Abklingen der Spitzen wird postuliert, dass alle Bits gültig sind. Auch dies ist offensichtlich ein indirekter Schluss, der nur unter der Annahme ähnlicher Signallaufzeiten zulässig ist. Für den Fall dass sich von einem Eingangswort zum nächsten kein einziges Bit ändert, muss zusätzlich eine Zeitsteuerung als Time-out vorgesehen werden.
Insgesamt sind Micropipelines daher ein durchaus wertvolles Instrument zur Synchronisation. Als durchgängiges Konzept für die Realisierung asynchroner Logik sind sie allein jedoch mangelhaft.
Null-Convention Logic (NCL)
Bei dieser patentierten Methode (US 5,305,463) wird zu den zwei Zuständen der konventionellen Booleschen Logik („T“ für True und „F“ für False) ein weiterer Zustand („NULL“) hinzugefügt, der die Übergangszustände kennzeichnet (Karl M. Fant and Scott A. Brandt, NULL Convention Logic: A Complete and Consistent Logic for Asynchronous Digital Circuit Synthesis, Proc. International Conference on Application Specific Systems, Architectures and Processors, 1996 (ASAP 96)., 19-21 Aug. 1996, pp. 261 - 273). Damit ist es nun unmittelbar möglich, auch die Gültigkeit von Bits explizit zu berücksichtigen, womit auch lokale Delay und Skew-Probleme beherrschbar werden. Es wird vorgeschlagen, für die Codierung eines logischen NCL-Signales zwei Leitungen in herkömmlicher Boolescher Logik zu verwenden, um diese drei logischen Zustände darzustellen (two-rail coding). Daraus ergibt sich natürlich ein erhöhter Aufwand an Gattern und Leitungen.
In NCL kann also die Gültigkeit von Bits unmittelbar - d.h. nicht mehr indirekt über Zeitbedingungen - beschrieben werden. Das ist ein substantieller Fortschritt gegenüber den bisher beschriebenen Methoden. Dennoch ist damit nur eines der Teilprobleme wirklich gelöst, es liegt immer noch keine unmittelbare Beschreibung der Gültigkeit und Konsistenz des gesamten Datenwortes vor. Insbesondere ist das Problem der Synchronisation nicht gelöst, was vor allem daran liegt, dass in NCL logische Zustände weiterhin durch die logischen Pegel auf den Leitungen beschrieben sind. Ein über zwei Eingangsworte gleich bleibendes Bit ist daher wie bei der Booleschen Logik a priori nicht von einem verspätet eintreffenden Zustandswechsel unterscheidbar. Um das Datenkonsistenzproblem dennoch lösen zu können, wird in der NCL ein Zustandswechsel dadurch erzwungen, dass zwischen zwei gültigen Datenworten (DATA-Wellen) stets eine so genannte NULL-Welle eingefügt wird, bei der alle Bits auf NULL gestellt werden. Auf diese Weise ist ein konsistentes Datenwort also vorne und hinten durch eine NULL-Welle abgegrenzt, und das Auftreten eines logischen Zustandes „T“ oder „F“ ist somit ein eindeutiges Indiz dafür, dass das jeweilige Bit nicht nur gültig sondern bereits aktuell ist (siehe Fig. 5, zum Zeitpunkt to).
Bei geeigneter Codierung der logischen Zustände ändert sich bei jedem möglichen Übergang (von NULL auf „T“, von NULL auf „F“ bzw. jeweils umgekehrt) immer nur ein Leitungspegel im Codewort und es kann - außer im Fall von Glitches auf den Signalen - daher zu keinen inkonsis- 8 AT 502 264 B1 tenten Übergängen innerhalb der Leitungen eines logischen Bits kommen. Diese Auflösung des Datenstromes in eindeutig identifizierbare Daten- und NULL-Wellen ist gleichzeitig auch eine wichtige Basis für die Lösung des Synchronisationsproblems: Ein NCL-Gatter beginnt erst mit der Verarbeitung, wenn alle Eingänge konsistent DATA oder NULL sind. Damit sind nun alle wesentlichen Probleme des digitalen Design konzeptionell einwandfrei lösbar.
Zur Reduktion des Gatteraufwandes wird eine Implementierung mittels Hysterese vorgeschlagen, die allerdings einschränkende Annahmen über die relativen Laufzeiten einer lokalen Rückkopplung trifft und damit die Allgemeinheit der Lösung in Hinblick auf Delay Insensitivity beschränkt. Obwohl die Synchronisation wie beschrieben auf Gatterebene bereits garantiert ist, kann NCL vorteilhaft mit einer Strukturierung mittels Micropipeline kombiniert werden. Auf dieser Basis wurden schon mehrere Designs publiziert, und auch eine industrielle Verwendung der Technologie wird vorangetrieben. Die Realisierung der Synchronisation auf Gatterebene erfordert so genannte „Threshold Gates“, die sich zwar in der üblichen CMOS Technologie fertigen lassen, die jedoch keine Standard-Library-Elemente sind, d.h. sie erfordern spezielle Bibliotheken für das Design. Auf Basis solcher Threshold Gates lassen sich auch alle benötigten logischen Standardfunktionen realisieren.
Ein wesentlicher Nachteil der NCL liegt darin, dass mit dem Propagieren der NULL-Wellen 50% der möglichen Verarbeitungskapazität und 50% der Verlustleistung des Chips für unproduktive Synchronisationsaufgaben aufgewendet werden. Damit werden zwei wesentliche potentielle Vorteile des asynchronen Design gegenüber dem synchronen wieder egalisiert.
Flankencodierung (Transition Signaling)
Bei der Flankencodierung sind die logischen Zustände „Hl“ und „LO“ nicht durch Zustände sondern durch Ereignisse - nämlich Signalflanken - codiert. Dadurch kann die Gültigkeit eines Bits direkt durch ein Event signalisiert werden, was zum Teil auch die Probleme der Laufzeiten & Skew löst. Das Datenkonsistenzproblem lässt sich indirekt dadurch lösen, dass mit der logischen Verknüpfung einfach bis zum Eintreffen aller benötigten Bits (=Signalflanken) abgewartet wird. Es lässt sich jedoch zeigen, dass mit den üblichen single-output Gates die Synchronisationsproblematik nicht vollständig lösbar ist, da eine eindeutige Zuordnung der Ereignisse zu bestimmten Datenwellen nicht in allen Fällen möglich ist (Scott Hauck, Asynchronous Design Methodologies: An OverView, Proc. of the IEEE vol. 83, no 1, January 1995).
Aufgrund der unüblichen Codierung der Bits ist die praktische Umsetzung äußerst ungewohnt und schwierig: Die logische Kombination von Flanken führt zu völlig anderen Strukturen als man es von Pegeln her gewöhnt ist und erfordert letztlich auch völlig neue ungewohnte Techniken für Entwurf (Scott Hauck, Asynchronous Design Methodologies: An OverView, Proc. of the IEEE vol. 83, no 1, January 1995), Test und Debugging. Hinzu kommt der ungewohnte Umgang mit multiple-output Gates, die für eine einwandfreie Synchronisation erforderlich wären.
Bezüglich der Entwurfstechniken gibt es bereits eine Reihe von Publikationen die im Wesentlichen Analogien zu bestehenden Techniken wie Petri-Netze, Signal-Transition Graphs etc. herstellen. Den Weg in praktische Anwendungen hat die Flankencodierung nur in Einzelfällen gefunden: so z.B. wird das Handshaking bei den Micropipelines über Transition Signaling realisiert. Für alle genannten Verfahren gilt, dass der Einsatz der üblichen Design-Werkzeuge aus der synchronen Welt oft problematisch ist. Dies ließe sich zwar durch Entwicklung geeigneter asynchroner Werkzeuge beheben, Bedingung für deren Entwicklung ist aber wiederum ein nennenswertes Potential an Anwendern.
Bei der praktischen Anwendung der beschriebenen asynchronen Design-Methoden zeigt sich im Allgemeinen auch sehr rasch, dass der Hardware-Aufwand deutlich höher wird als bei Reali- 9 AT 502 264 B1 sierung derselben Funktion in synchroner Logik. Auch wenn dies zum Teil daran liegen mag, dass die verfügbaren Technologien für synchrone Designs optimiert sind, so lässt sich dennoch generell feststellen, dass die explizite Berücksichtigung der Konsistenz im Datenpfad (anstelle über Zeitbedingungen) tendenziell höheren Overhead nach sich zieht.
Es ist daher eine Aufgabe der Erfindung, die genannten Probleme auf einfache Weise zu lösen, wobei insbesondere die Verarbeitungskapazität der Hardware optimal ausgenützt werden soll.
Insbesondere ist es eine Aufgabe der Erfindung, das Datenkonsistenzproblem vollständig und auf einfache Weise zu lösen.
Diese Aufgaben werden mit einem eingangs erwähnten Verfahren dadurch gelöst, dass erfindungsgemäß jede Eingangsvariable durch ein mehrwertiges Signal dargestellt wird, sodass zusätzlich zum logischen Zustand der Variable eine Phaseninformation darstellbar ist, mittels welcher aufeinanderfolgende zu verarbeitende Daten unterschieden werden können, die Eingangsvariablen entsprechend den Transformationsregeln in Ausgangsvariable aufgelöst werden, wobei a) entweder eine Auflösung der Eingangsvariablen nur dann durchgeführt wird, wenn die Phase der Eingangsvariablen übereinstimmt, oder b) im Falle von nicht übereinstimmender Phase der Eingangsvariablen zwischenzeitlich ein erkennbar ungültiger Signalwert ausgegeben wird.
Die Grundidee der Erfindung ist, dem logischen Zustand der Boolschen Logik eine Phase zuzuordnen. Die Daten durchlaufen dann mit abwechselnden Phasen die Schaltung. Durch Betrachten der Phase kann somit Konsistenz und Gültigkeit der Daten bestimmt werden. Die Anzahl der Phasen kann im Prinzip beliebig sein, für alternierende Phasen muss es jedoch mindestens zwei Phasen geben. Aus dieser Sicht hat die Boolsche Logik nur eine Phase.
Die Erfindung eignet sich prinzipiell aber nicht nur zur Verwendung in der digitalen Welt, wie dies in der weiteren Beschreibung noch näher erläutert wird.
Stimmt im Fall a) die Phaseninformation der Eingangsvariablen nicht überein, was bedeutet, dass die Variablen nicht zu den selben Daten bzw. dem selben Datenwort gehören, so erfolgt keine Auflösung der Variablen in eine Ausgangsvariable. Der Wert der Variable am Ausgang wird beibehalten, was allerdings bedingt, dass die entsprechende Hardware ein Hystereseverhalten aufweist. Der Vorteil der Hysterese gegenüber dem Ausgeben eines ungültigen Zustandes liegt in der effizienteren Codierung - man benötigt kein eigenes Codewort für den ungültigen Zustand. Wie später erläutert wird, kann dieser Nachteil bei Implementierungen mit mehr als zwei Phasen dadurch umgangen werden, dass die Abfolge der Phasen der Eingangsvariablen mit in die Gültigkeitsbetrachtung einbezogen werden.
Ein solches notwendiges Hystereseverhalten kann vermieden werden, wenn bei einem Nicht-Übereinstimmen der Phase am Ausgang eine Variable in einem ungültigen Zustand ausgegeben wird.
Besonders einfach lässt sich die Ungültigkeit des Zustandes darstellen, wenn in Punkt b) die Variable mit einer Phase ausgegeben wird, an Hand welcher die Ungültigkeit erkennbar ist.
Bei einer konkreten Ausführungsform wird ein mehrwertiges Signal aus zumindest zwei zweiwertigen Signalen erzeugt. Jede Eingangsvariable lässt sich also einfach durch mindestens zwei zweiwertige Eingangssignale, welche das entsprechende mehrwertige Signal, das dann neben der logischen Information auch noch eine Phaseninformation enthält, darstellen.
Diese Ausführungsform beschreibt die Realisierung der Erfindung in der digitalen Welt. In 10 AT 502 264 B1 diesem Zusammenhang sei darauf hingewiesen, dass es sich insbesondere bei der digitalen Realisierung der Erfindung bei einem sogenannten „mehrwertigen“ Signal nicht um ein konkretes physikalisches Signal, sondern vielmehr um ein abstraktes „Signal“ handelt. Das mehrwertige Signal wird durch zwei oder mehr zweiwertige, also digitale Signale, dargestellt bzw. „erzeugt“. Die jeweils ein mehrwertiges Signal darstellenden Signale werden von der Hardware entsprechend miteinander verknüpft und als ein mehrwertiges Signal interpretiert, obwohl es sich physikalisch gesehen natürlich nach wie vor um mehrere zweiwertige Signale handelt.
Die zweiwertigen Signale am Eingang werden in zumindest zwei zweiwertige Ausgangssignale aufgelöst, welche ein mehrwertiges Ausgangssignal bilden, das die entsprechende Ausgangsvariable darstellt.
Besonders einfach und mit geringem Aufwand lassen sich die erfindungsgemäßen Aufgaben lösen, wenn für die Darstellung der logischen Zustände einer Eingangsvariable genau zwei zweiwertige Signale verwendet werden.
Bei dieser konkreten Ausführungsform der Erfindung werden also für jeden logischen Zustand in der Booleschen Logik („Hl“ oder „LO“) jeweils zwei Darstellungen, nämlich eine für Phase <p0 und eine für φ1, verwendet. Ein Datenwort ist genau dann konsistent und gültig, wenn alle Bits die gleiche Phase haben. Ein Umweg über Zeitbedingungen oder künstlich eingefügte Nullwellen ist nicht notwendig, sodass es sich bei der erfindungsgemäßen Lösung einerseits um eine äußerst elegante Lösung handelt, die andererseits den Vorteil bietet, dass die Verarbeitungsgeschwindigkeit optimiert werden kann.
Damit sich hardwaremäßig die Erfindung auch mit konventionellen digitalen Logikelementen realisieren lässt, ist es von Vorteil, wenn für jedes zweiwertige Signal eine eigene physikalische Leitung an den Verarbeitungsmitteln verwendet wird.
Damit in der Zeit zwischen zwei Signalflanken auf einer ersten, schnelleren und einer zweiten, langsameren Leitung kein inkonsistenter Zustand auftreten kann, ist es zweckmäßig, wenn die Codierung der Eingangsvariablen mittels der zumindest zwei zweiwertigen Signale derart gewählt wird, dass der Übergang zwischen einem logischen Zustand in einer Phase in einen beliebigen Zustand in jeder vorgesehenen nachfolgenden Phase lediglich die Änderung des Signalwertes eines einzigen der den Zustand des mehrwertigen Signals darstellenden zweiwertigen Signale_erfordert.
Um das Problem der Datenkonsistenz zu lösen, ist vorgesehen, dass die Codierung der Da-ten/eines Datenwortes derart gewählt wird, dass alle (Eingangs-)Variablen des Datenwortes die gleiche Phase aufweisen und dass aufeinanderfolgende Daten(worte) jeweils mit einer unterschiedlichen Phase codiert werden.
Damit auf Gatterebene die Synchronisation der Datenwellen sichergestellt ist, ist weiters vorgesehen, dass erst bei Vorliegen eines konsistenten Datenwortes an einem Verarbeitungsmittel bzw. einem logischen System mit der Verarbeitung der Daten begonnen wird.
Alternativ kann vorgesehen sein, dass bei Vorliegen eines nicht konsistenten Datenwortes zumindest zwischenzeitlich eine Variable (bzw. das zugehörige mehrwertige Signal) in einem erkennbar ungültigen Zustand ausgegeben wird.
Bei der Umwandlung eines zweiwertigen Standard-Signals zur Beschreibung eines logischen Zustandes in zwei zweiwertige Signale bzw. ein vierwertiges Signal wird der Signalwert des Standard-Signals als Signalwert von einem der zwei zweiwertigen Signale verwendet, und das weitere zweiwertige Signal ergibt sich durch eine XOR-Verknüpfung mit einem vorgebbaren oder vorgegebenen Phasensignal mit dem Signalwert des Standard-Signals. 1 1 AT 502 264 B1
Bei der Rückumwandlung wird jenes der beiden zweiwertigen Signale, welches dem Standard-Signal entspricht, wiederum als Standard-Signal verwendet. Für die Konversion ist die oben vorgeschlagene Methode die einfachste. Die Konversion ist vorteilhaft als „Interface“ zu konventioneller Logik, zur effizienten Speicherung und zur effizienten Datenübertragung, wenn delay insensitives Verhalten nicht erforderlich ist.
Zur Verwendung in einem beschriebenen Verfahren eignet sich besonders ein erfindungsgemäßes Gatter für ein logisches System, welches entsprechend einem oben beschriebenen Verfahren arbeitet, wobei das Gatter für jede logische Eingangsvariable zumindest zwei Eingangsleitungen und für die Ausgangsvariablen eine der Anzahl der Eingangsleitungen für eine Eingangsvariable entsprechende Anzahl Ausgangsleitungen aufweist.
Damit das Gatter eine logische Funktion, d.h. eine Verarbeitung von Eingangsdaten nur für konsistente Daten durchführt bzw. durchführen kann (d.h. ein neue Daten am Ausgang ausgibt), ist weiters noch vorgesehen, dass es ein Hystereseverhalten aufweist.
Bei einer konkreten Realisierung eines solchen Gatters ist der Ausgang des Gatters an seinen Eingang rückgekoppelt, und a) im Fall, dass die Eingänge nicht dieselbe Phase aufweisen, wird der rückgeführte logische Zustand erneut am Ausgang ausgegeben, oder b) bei gleichen Phasen der Eingänge wird der neu berechnete Wert am Ausgang ausgegeben.
Bei einer anderen Ausführungsform weist das Gatter zumindest ein Speicherelement auf, welches einen neu berechneten Wert erst übernimmt, wenn alle Eingänge dieselbe Phase aufweisen.
Welche der beiden Ausführungsformen dabei verwendet wird, hängt von der verwendeten Technologie ab; die erste genannte Variante, bei der der Ausgang des Gatters an seinen Eingang rückgekoppelt ist, ist genetischer, die Implementierung hängt stark vom Design-Tool ab und ist daher etwas unsicherer bezüglich Timing, während bei der anderen Variante dem Tool mehr vorgeschrieben wird. Die zweite Variante erfordert aber Kenntnis der verfügbaren Elemente in der Library. Für den Aufbau einer Pipeline-Struktur von logischen Systemen, welche nach dem erfindungsgemäßen Verfahren arbeiten, eignen sich besonders erfindungsgemäße Register für eine Pipeline-Struktur aus logischen Systemen, welche über entsprechende Register miteinander verbunden sind, und wobei die logischen Systeme entsprechend einem oben beschriebenen Verfahren arbeiten, wobei das Register neue Daten nur übernimmt, wenn a) die Daten am Ausgang des Registers bereits durch die Logikwolke hindurch propagiert sind und von dem nachfolgenden Register übernommen wurden, und b) die Daten am Eingang konsistent sind und sich in Bezug auf ihre Phase von den Daten am Ausgang des Registers unterscheiden.
Bei einer konkreten Ausführungsform weist das Register zumindest eine Steuerlogik auf, welcher die Phaseninformationen der Daten an ihrem Eingang sowie der aktuell an ihrem Ausgang gespeicherten Daten zugeführt sind, und zur Steuerung des Registers die Steuerlogik ein Steuersignal generiert, mit dem das Register zur Entgegennahme von am Eingang anliegenden Daten angewiesen wird, wobei das Steuersignal nur erzeugt wird, wenn a) die Phasen der Daten am Eingang und am Ausgang ungleich sind, und b) die Phase am Ausgang gleich der Phase der Daten am Ausgang des nachfolgenden Registers ist. 12 AT 502 264 B1
Weiters ist noch vorgesehen, dass das Steuersignal (en) nur erzeugt wird, wenn bei mehr als zwei Phasen weiters die Phasen der Daten in einer vorgebbaren bzw. vorgegebenen Se-quenz/Reihenfolge sind. Üblicherweise wird bei der Verwendung von mehreren Phasen, wie dies auch später noch genauer erläutert wird, eine bestimmte Reihenfolge der Phasen vorgegeben. Dies hat den Vorteil der besseren Kontrollierbarkeit und einfacheren Fehlerüberwachung. In diesem Fall wird dann das Steuersignal auch nur dann aktiviert, wenn die Phasen in der vorgegebenen Reihenfolge eintreffen.
Prinzipiell einfach zu implementieren ist es, wenn die Phasen eine „beliebige“ Abfolge einnehmen können. Dadurch wird aber die Kontrollierbarkeit erschwert, und auch obige Bedingung für die Generierung eines Steuersignals ist dann nicht mehr gültig.
Im Folgenden wird auf die Zeichnung näher eingegangen. In dieser zeigen die Figuren 1-5 bekannten Stand der Technik, der bereits in der Beschreibungseinleitung eingehend erörtert wurde. Im Speziellen zeigt
Fig. 1 eine analoge Darstellung digitaler Zustände,
Fig. 2 eine schematische Darstellung der Inkonsistenz von Daten auf Grund von Skew,
Fig. 3 die Entstehung von Glitches durch Verarbeitung inkonsistenter Daten,
Fig. 4 das Zerlaufen der Wellen ohne Synchronisation, und
Fig. 5 die Abfolge von NULL und DATA bei der sogenannten Null-Convention-Logik.
Die Erfindung selbst ist in den Figuren 6-19 näher erläutert. Insbesondere zeigt
Fig. 6 einen erfindungsgemäßen Signalfluss,
Fig. 7 schematisch ein CAL-AND-Gatter,
Fig. 8 eine Implementierung eines solchen CAL-AND-Gatters,
Fig. 9 schematisch ein CAL-OR-Gatter,
Fig. 10 eine Implementierung eines solchen CAL-OR-Gatters,
Fig. 11 schematisch ein CAL-Inverter-Gatter,
Fig. 12 eine Implementierung eines solchen CAL-Inverter-Gatters,
Fig. 13 schematisch einen erfindungsgemäßen Phasendetektor,
Fig. 14 eine konkrete Realisierung eines solchen erfindungsgemäßen Phasendetektors,
Fig. 15 ein erfindungsgemäßes Register,
Fig. 16 eine Pipelinestruktur mit Registern entsprechend Figur 15,
Fig. 17 schematisch die Umwandlung eines logischen Zustandes in herkömmlicher Darstellung in eine erfindungsgemäße Darstellung,
Fig. 18 schematisch die Rück-Umwandlung eines logischen Zustandes in erfindungsgemäßer Darstellung in die herkömmliche Darstellung,
Fig. 19 einen Phasenkonverter zur Verwendung im Rahmen der Erfindung, und
Fig. 20 ein Implementierungsbeispiel für die Darstellung eines logischen Zustandes mit vier
Phasen.
Die erfindungsgemäßen Gedanken werden zur Vereinfachung im Folgenden (wie auch im Text oben bereits) unter dem Begriff Code Alternation Logic, abgekürzt als „CAL“, subsumiert.
Unter „mehrwertigen“ Signalen sind im Folgenden immer Signale zu verstehen, die im Gegensatz zu zweiwertigen Signalen mehr als zwei Signalwerte annehmen können.
Die Darstellung von mehrwertigen Signalen erfolgt im Rahmen der weiteren Beschreibung immer an Hand von zwei oder mehr zweiwertigen Signalen.
Grundsätzlich ist es aber auch möglich, diese mehrwertigen Signale anders zu erzeugen. Verlässt man etwa die digitale Welt, in der es nur zwei Zustände gibt (z.B. LO -» 0 Volt, Hl —»-5 Volt), kann man auch direkt analoge Signale (z.B. zur Darstellung eines vierwertigen 1 3 AT 502 264 B1
Signals 1 -» 0 Volt, L —> 1,5 Volt, H -> 3 Volt, h 5 Volt) verwenden.
Alternativ könnten auch Lichtwellenleiter eingesetzt werden. Bei dieser Technik wird zum Übertragen von Daten nicht ein Draht verwendet, durch den Strom fließt, sondern ein sogenannter Lichtwellenleiter, durch den Licht „fließt“. In einem solchen kann man natürlich (vergleichbar mit analogen Signalen) mehrwertige Signale auf einen Leiter übertragen bzw. unterschiedliche Frequenzen zur Kennzeichnung mehrerer unterschiedlicher Signalwerte verwenden.
Codierung
Die Grundidee der Erfindung besteht bei CAL darin, für jeden logischen Zustand in der Booleschen Logik („Hl“ oder „LO“) jeweils zumindest zwei Darstellungen zu verwenden, z.B. bei genau zwei Darstellungen eine für Phase cpO und eine für q>1. Dies bedeutet, dass für die Darstellung der logischen Zustände der (Eingangs-)Variable (eines Bits) vier Signalpegel (bei zwei Phasen) oder mehr Signalpegel verwendet werden; auf diese Weise kann die benötigte Information über die Gültigkeit bzw. Konsistenz über eine sogenannten Phaseninformation durch die zusätzlichen Signalpegel hinzugefügt werden.
Im Folgenden Text werden die Bezeichnungen „Signalpegel“ und „Signalwert“ synonym verwendet.
Auch bei der Null Convention Logic werden zur Darstellung eines Bits zwei Leitungen bzw. zwei zweiwertige Signale_verwendet, allerdings existiert dort für jeden gültigen logischen Zustand einer Variable nur ein Code und zusätzlich ein ungültiger Zustand NULL, der bei der vorliegenden Erfindung allerdings nicht benötigt wird. Das vierte darstellbare Codewort bleibt bei der gebräuchlichen Implementierung von NCL ungenutzt.
Im Folgenden wird die Erfindung vorerst an Hand der Darstellung der logischen Zustände eines Bits mittels vier Signalpegeln (Werten) - d.h. mittels zweier zweiwertiger Signale - näher erläutert.
Die mehrwertige Darstellung von Signalen gemäß der Erfindung, im Folgenden mit CALJogic bezeichnet, sieht die folgenden vier Signalpegel vor: • die Signalpegel „H“ und „h“ eines vierwertigen (Eingangs-)Signals, welche den Zustand „Hl“ repräsentieren, sowie • die Signalpegel „L“ und „I“ eines vierwertigen (Eingangs-)Signals, welche den Zustand „LO“ repräsentieren.
Die logischen Zustände „Hl“ und „LO“ eines Bits (einer Variable) können dadurch in je zwei Phasen (<p1 und <p0) ausgedrückt werden: in cpO als „H“ und „L“, in <p1 als „h“ und „I“.
Um eine Implementierung der mehrwertigen CAL-Logik mit konventionellen digitalen Logikelementen zu erlauben, sind (zumindest) zwei Leitungen (jede dieser Leitungen übermittelt ein zweiwertiges Signal) pro mehrwertigem Signal, welches eine Variable zusammen mit der Phaseninformation darstellt, notwendig. Jede dieser Leitungen kann nur mehr einen von zwei möglichen logischen Pegeln („0“ oder „1“) annehmen. Auf diese Weise wird die Erfindung auch mit konventionellen logischen Gattern implementierbar. Die folgende Tabelle 1 zeigt eine entsprechende Codierung CAL_rail_logic, auf Leitungsebene gemeinsam mit der abstrakten logischen Darstellung als CALJogic auf der Ebene der vierwertigen Signale: 1 4 AT 502 264 B1
Tabelle 1
Cal railjogic Caljogic Logischer Zustand φΟ <P1 cpO <P1 „LO“ „00“ „01“ I L „Hl“ „11“ „10“ h H
Wichtig bei der Codierung ist vor allem, dass sichergestellt ist, dass der Übergang von jedem beliebigen logischen Zustand in cpO auf jeden beliebigen logischen Zustand in φ1 (und umgekehrt) die Änderung auf genau einer der beiden dem Bit zugehörigen Leitungen (d.h. eine Stelle im Codewort) erfordert. Anderenfalls würde in der Zeit zwischen der Flanke auf der ersten (schnelleren) Leitung und der Flanke auf der zweiten (langsameren) Leitung ein inkonsistenter Zustand auftreten.
Signalfluss
Beim Design muss nun dafür gesorgt werden, dass die Codierung innerhalb eines Datenwortes einheitlich ist, also entweder alle Bits bzw. (Eingangs-)Variablen_eines Datenwortes in <p0 oder alle in cp1 dargestellt werden. Um die einzelnen Datenworte voneinander unterscheiden zu können, ist es weiters von Bedeutung, dass aufeinanderfolgende Datenworte jeweils in unterschiedlicher Darstellung codiert werden. Ein in cpO (<p1) dargestelltes Datenwort wird damit zeitlich von jeweils in <p1 (<p0) codierten Datenworten eingerahmt. Aus diesem Grund wird für die Bezeichnung Code Alternation Logic verwendet. Der entsprechende Signalfluss ist in Fig. 6 dargestellt. Die unterschiedliche Codierung φΟ - <p1 - <p0 - <p1 -.... der Bits der aufeinanderfolgenden Datenworte DAW1, DAW2, DAW3, DAW4 ist zu erkennen. Zu den Zeitpunkten t^, ta, tk3. tk4, etc. liegen die Datenworte DAW1, DAW2, DAW3, DAW4, etc. in konsistenter Form vor.
Durch die alternierende Codierung zeitlich aufeinanderfolgender Wellenfronten wird somit das Problem der Datenkonsistenz gelöst, da das Datenwort genau dann konsistent ist, wenn alle Bits des Datenwortes die gleiche Codierung (Phase) haben. Die Codierung eines einzelnen Bits kann jederzeit einfach festgestellt werden: Sind die Werte der beiden zugehörigen Leitungen bzw. der beiden zweiwertigen Signale, welche das mehrwertige - hier vierwertige Signal - bilden, gleich, so handelt es sich bei der in Tabelle 1 gezeigten Codierung um φΟ, sind die Signalwerte der beiden Signale verschieden, so ist das Bit in q>1 codiert.
Im Unterschied zu den bisher bekannten Verfahren ist es daher bei der vorliegenden Erfindung unmittelbar möglich, die Datenkonsistenz zu prüfen. Ein Umweg über Zeitbedingungen oder künstlich eingefügte Nullwellen ist nicht erforderlich. Die Logikstufen werden so ausgelegt, dass sie erst bei Vorliegen eines konsistenten Datenwortes mit der Verarbeitung der Daten beginnen. Auf diese Weise wird auf Gatterebene die Synchronisation der Wellen sichergestellt.
Realisierung der Erfindung für 2 Phasen
Eine kombinatorische Verknüpfung entsprechend der Erfindung (CAL) bildet ebenso wie eine Boolesche Verknüpfung entsprechend einer Wahrheitstabelle aus Eingangsvariablen eine Ausgangsvariable. Betrachtet man lediglich die rein logische Information (Hl, LO), so sind die Wahrheitstabellen für Boolesche Logik und CAL identisch - CAL ist letztlich eine andere Implementierung der Funktionalität der Booleschen Logik. Im Unterschied zur Booleschen Logik sind bei CAL die Eingangs- und Ausgangsvariable jedoch nicht durch zweiwertige sondern durch vierwertige Signale codiert und diese umfassen jeweils zwei Leitungen. Auf der Leitungsebene gibt es daher deutliche Unterschiede. Während für die klassische Boolesche Logik die Wahrheitstabelle auf Informations-Ebene und jene auf Leitungsebene identisch sind, gibt es bei CAL für jede der beiden Leitungen des 1 5 AT 502 264 B1
Ausgangssignals eine eigene Wahrheitstabelle.
Zur Veranschaulichung dieser Situation sind im Folgenden die logischen Grundfunktionen, an Hand derer sich alle weiteren komplexen Funktionen realisieren lassen, beschrieben. Diese Gatter sind das AND, das OR- und das Inverter-Gatter, wobei allerdings auch alleine das OR-bzw. das AND- und Inverter-Gatter dazu ausreichen würden. An dieser Stelle sei jedoch angemerkt, dass sich auch komplexere Funktionen direkt in CAL realisieren lassen.
Im Folgenden wird eine mögliche Abbildung von CAL auf CAL-Rail beschrieben. In dieser Implementierung weisen die CAL-Rail-Gatter zusätzlich zur normalen logischen Funktionalität ein Hystereseverhalten auf. Da die im allgemeinen mehrwertigen, hier im Speziellen vierwertigen CAL-Eingangssignale nicht nur einen logischen Wert, „1“ oder „0“, sondern auch noch eine Phase besitzen, muss im Falle, dass sich ein vienwertiges Eingangssignal noch in der Phase φΟ befindet, während das andere in der Phase φ1 ist, der alte Wert am Ausgang beibehalten werden. Erst wenn sich beide Eingangssignale in derselben Phase befinden, wird der neu berechnete Wert durchgeschaltet. Damit wird erreicht, dass nur für konsistente Eingangsdaten (d.h. alle Bits in der gleichen Phase) eine logische Funktion durchgeführt wird.
CAL-AND-GATTER
Figur 7 zeigt schematisch ein CAL-AND-Gatter mit den Eingängen E1 und E2 und dem Ausgang Z. Sind beide Eingänge in Phase, so entspricht das Verhalten einer „normalen“ AND-Verknüpfung, wobei die Phase entsprechend vom Eingang auf den Ausgang übertragen wird. Stimmen die Phasen nicht überein, so behält (in dieser Implementierung) der Wert Z am Ausgang seinen ursprünglichen Wert bei. Die entsprechende Wahrheitstabelle für das CAL-AND-Gatter ist in Tabelle 2 dargestellt.
Man könnte aber auch eine Phase als „ungültig“ deklarieren (bei mehr als 2 Phasen), dann wird nicht unbedingt eine Hysterese benötigt. Dies wird weiter unten im Text noch näher erörtert.
Tabelle 2 E1 E2 Z L L L L H L H L L H H H L I HOLD L h HOLD H I HOLD H h HOLD I L HOLD I H HOLD h L HOLD h H HOLD I I I I h I h I I h h h
Das Beibehalten des alten Wertes am Ausgang im Falle nicht phasengleicher Eingänge hat zur 1 6 AT 502 264 B1
Konsequenz, dass jedes logische Gatter bei der gezeigten Realisierung ein Hystereseverhalten aufweist. Dieses kann auf verschiedenste Art und Weise realisiert werden. Eine Möglichkeit wäre, den Ausgang an den Eingang rückzukoppeln - haben die Eingänge nicht dieselbe Phase, wird dieser rückgeführte logische Zustand neuerlich am Ausgang ausgegeben, ansonsten wird der neu berechnete Wert ausgegeben. Eine andere Möglichkeit besteht in der Verwendung von Speicherelementen, die einen neuen Wert erst übernehmen, wenn die beiden Eingänge dieselbe Phase haben. Da unterschiedliche Speicherelemente (Latch, D-Flip-Flip, JK-Flip-Flop, Mas-ter-Slave-Flip-Flop, RS-Flip-Flop, ...) unterschiedlichen Steuersignale benötigen, fällt die konkrete Implementierung eines CAL Gatters, unter der Voraussetzung, dass ein Speicherelement zur Realisierung des Hystereseverhaltens verwendet wird, unterschiedlich aus. In Figur 8, welche die Implementierung eines CAL-AND Gatters zeigt, sind als Speicherelemente RS-Flip-Flops RSF verwendet. Durch Setzen des Set bzw. Reset Einganges auf T wird der Ausgang auf '1' bzw. auf '0' geschaltet. Daher ergibt sich folgendes Funktionsprinzip für die Realisierung eines CAL-Gatters mit RS-Flip-Flops: Haben die Eingänge des CAL Gatters unterschiedliche Phase, so bleiben sowohl der Set- als auch der Reset-Eingang auf '0' und der alte Wert am Ausgang des CAL-Gatters bleibt erhalten („HOLD“). Weisen die Eingänge des CAL-Gatters dieselbe Phase auf, so wird je nachdem, welchen Wert die logische Funktion des CAL Gatters am Ausgang liefern soll, der Set- oder der Reset-Eingang des RS-Flip Flops gesetzt und dadurch der Ausgang des CAL-Gatters auf den entsprechenden Wert geschaltet. Die Funktionen für den Set- und Reset-Eingang lassen sich aus der Wahrheitstabelle 3 einfach ableiten.
Tabelle 3 E1.a E1.b E2.a E2.b Z.a Sa Ra Z.b Sb Rb 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 HOLD 0 0 HOLD 0 0 0 1 1 1 HOLD 0 0 HOLD 0 0 1 0 0 0 HOLD 0 0 HOLD 0 0 1 0 1 1 HOLD 0 0 HOLD 0 0 0 0 0 1 HOLD 0 0 HOLD 0 0 0 0 1 0 HOLD 0 0 HOLD 0 0 1 1 0 1 HOLD 0 0 HOLD 0 0 1 1 1 0 HOLD 0 0 HOLD 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 E1.a und E1.b bzw. E2.a und E2.b bezeichnen dabei die zweiwertigen Signale, welche dann das vierwertige Signal E1 bzw. E2 bilden Z.a und Z.b stellen die beiden zweiwertigen Ausgangssignale dar, welche das hier vierwertige Ausgangssignal Z bilden.
Der Ausgang eines RS-FlipFlop kann durch Aktivieren (logisch 1) des Set-Eingangs S auf logisch 1 gesetzt werden, durch Aktivieren (logisch 1) des Reset-Eingangs R auf logisch 0. Ist keiner der beiden Eingänge aktiviert, so verbleibt der Ausgang in seinem aktuellen Zustand. In der vorgeschlagenen Implementierung sind Sa und Ra die Set- bzw. Reset-Eingänge für das der Ausgangsleitung Z.a zugeordnete RS-FlipFlop. In gleicher Weise sind Sb und Rb der Ausgangsleitung Z.b zugeordnet. 1 7 AT 502 264 B1
Die Realisierung eines CAL-Gatters kann wesentlich vereinfacht und optimiert werden, wenn die CAL-Gatter nicht aus konventionellen Gattern als kleinste Funktionseinheit sondern direkt mittels Transistoren realisiert werden. Ebenso wäre es denkbar in speziell optimierten Schaltungen CAL-Gatter ohne Hystereseverhalten zu verwenden. In diesem Fall muss jedoch durch geeignete Synchronisationsmaßnahmen gewährleistet sein, dass nur konsistente Daten verarbeitet werden (bzw. ungültige Signale geeignet behandelt werden).
CAL-OR GATTER
Figur 9 zeigt schematisch ein CAL-OR Gatter, Figur 10 eine Implementierung eines entsprechenden Gatters. Die Wahrheitstabelle für das Gatter aus Figur 9 ist in Tabelle 4 dargestellt, Tabelle 5 zeigt die Wahrheitstabelle für den Set- und Reset- Eingang. Wiederum gilt, dass wenn beide Eingänge in Phase sind, das Verhalten einer normalen Oder-Verknüpfung entspricht, wobei die Phase entsprechend vom Eingang zum Ausgang weiter gereicht wird, während bei nicht gleicher Phase der Ausgang seinen alten Wert beibehält.
Tabelle 4 E1 E2 Z L L L L H H H L H H H H I L HOLD I H HOLD h L HOLD h H HOLD L I HOLD L h HOLD H I HOLD H h HOLD I I I I h h h I h h h h
Wie beim CAL-AND Gatter wird zum Beibehalten des alten Wertes am Ausgang im Falle nicht phasengleicher Eingänge zusätzlich ein Speicherelement verwendet. Bei der Implementierung nach Figur 10 wurde wiederum ein RS-Flip-Flop verwendet. Die Funktionen für den Set- und Reset-Eingang sind der Tabelle 5 zu entnehmen.
Die Überlegungen hinsichtlich der Notwendigkeit eines Hystereseverhaltens sind dieselben wie beim CAL-AND-Gatter.
Tabelle 5 E1.a E1.b E2.a E2.b Z.a Sa Ra Z.b Sb Rb 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 18 AT 502 264 B1 E1.a E1.b E2.a E2.b Z.a Sa Ra Z.b Sb Rb 0 1 0 0 HOLD 0 0 HOLD 0 0 0 1 1 1 HOLD 0 0 HOLD 0 0 1 0 0 0 HOLD 0 0 HOLD 0 0 1 0 1 1 HOLD 0 0 HOLD 0 0 0 0 0 1 HOLD 0 0 HOLD 0 0 0 0 1 0 HOLD 0 0 HOLD 0 0 1 1 0 1 HOLD 0 0 HOLD 0 0 1 1 1 0 HOLD 0 0 HOLD 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 0 1 1 0 0 0 1 CAL-Inverter Gatter
Schließlich ist noch das CAL-Inverter Gatter (schematisch in Figur 10, Implementierung in Figur 11) kurz beschrieben. Die Wahrheitstabelle für das CAL-Inverter Gatter ist in Tabelle 6 dargestellt.
Tabelle 6
E1 Z L H H L I h h I
Da dieses Gatter nur einen Eingang besitzt, ist eine Konsistenzprüfung ebenso wie eine Hysteresefunktion nicht notwendig. Damit gestaltet sich die Implementierung des CAL-Inverter Gatters einfach, wie dies aus Figur 12 bzw. Tabelle 7 zu entnehmen ist.
Tabelle 7 E1.a E1.b Z.a Z.b 0 0 1 1 1 1 0 0 0 1 1 0 1 0 0 1
Zur Bestimmung der Phasen eines einzelnen mehrwertigen_Signals oder eines ganzen Busses wird eine entsprechende Vorrichtung, im Folgenden als Phasen- oder Phi-Detektor bezeichnet, verwendet. Wie der schematischen Darstellung in Figur 13 zu entnehmen, liefert der Phi-Detektor PHI einen Phasenwert cpou, von (pout = 1 wenn die Phase φ = φ1 und einen Wert qw = 0 wenn cp = cpO.
Die Phase eines mehrwertigen_Signals kann dabei einfach ermittelt werden - haben beide zweiwertige cal_rail Signale denselben Pegel, so befindet sich das mehrwertige_Signal in der Phase φ0, ansonsten befindet sich das mehrwertige_Signal in der Phase <p1. Ein solcher Vergleich entspricht der Funktionalität eines XOR-Gatters in herkömmlicher Boolscher Logik. 1 9 AT 502 264 B1
Analog zu den Basis-Gattern ändert sich bei einer konkreten Ausführungsform der Erfindung der Wert des Ausgangs nur, wenn alle Eingänge in der selben Phase sind, ansonsten wird der alte Wert am Ausgang beibehalten. Somit weist auch der Phi-Detektor PHI ein Hystereseverhalten auf, das analog zu den oben beschriebenen CAL-Gattern, entweder durch eine Rückkopplung des Ausgangs an den Eingang oder einem Speicherelement realisiert werden kann. Für den in Figur 14 dargestellten Phi-Detektor wird ein Speicherelement, im Speziellen ein RS-Flip Flop RSF verwendet. Mit dem Detektor PHI kann ermittelt werden, ob sich die mehrwerti-gen_Eingangssignale in[15]... in[0] (jeweils mit den Leitungen bzw. den zweiwertigen Signalen a und b) in derselben Phase befinden oder nicht, und dementsprechend wird ein Phasenwert (Pout von dem Detektor PHI ausgegeben.
Der Phi-Detektor PHI kann zusätzlich auch im Rahmen einer sogenannten „Completion Detecti-on Unit“ verwendet werden, wie dies an Hand der Figur 16 noch näher erläutert wird.
Zur Speicherung von Werten, oder für die Aufteilung großer logischer Schaltungen, was oftmals im Sinne der Erhöhung der Verarbeitungsgeschwindigkeit vorteilhaft ist, werden Register verwendet. Ein solches Register REG ist in Figur 15 näher dargestellt. Die Bezugszeichen Datajn und Data_out bezeichnen die mehrwertigen_Signale an den Dateneingangs- bzw. -ausgangs-bussen des Registers REG. Diese Signale sind je nach Betrachtungsebene als cal_logic_vector oder cal_rail_logic_vector ausgeführt. (Der Begriff „vector“ kommt aus der Hardwarebeschreibungssprache VHDL und ist vergleichbar mit einem Bus - ein cal_logic_vector setzt sich aus mehreren caljogic Signalen zusammen.) Damit ein CAL Register neue Daten übernimmt, müssen zwei Bedingungen erfüllt sein: Erstens, die Daten am Ausgang des Registers müssen von der nächsten Stufe bereits übernommen worden sein. Diese Information liefert das PASS Signal. Zweitens, die am Eingang anliegenden Daten müssen konsistent sein und sich in Bezug auf ihre Phase von den Daten am Ausgang des Registers unterschieden. Diese Information wird durch die beiden Phi-Detektoren PHIe und PHIa geliefert. Die Speicherung der Daten im CAL-Register selbst kann durch Rückkopplung des Ausgangs an den Eingang oder mit einem klassischen Speicherelement (Latch, D-Flip-Flip, JK-Flip-Flop, Master-Slave-Flip-Flop, RS-Flip-Flop,...) erfolgen.
Die Steuerlogik muss an die verwendete Methode zur Speicherung angepasst werden. In Figur 15 wird exemplarisch ein CAL-Register dargestellt, das ein Latch für die Speicherung verwendet. Zur Ansteuerung des Latches LAT muss die Steuerlogik SLO das Signal en generieren. Zu diesem Zweck (siehe dazu nochmals Figur 15) verwendet die Steuerlogik SLO einerseits die von dem Phasendetektor PHIe am Eingang mittels Capture gelieferte Phaseninformation der zu übernehmenden Daten am Eingang, sowie die Phaseninformation der aktuell am Ausgang gespeicherten Daten, die vom Detektor PHIa geliefert wird. Weiters wird von der Steuerlogik SLO noch die mittels PASS übermittelte Phaseninformation der nachfolgenden Stufe zur Auswertung verwendet.
Die Steuerleitung en wird nun aktiviert (und die Latches LAT können die am Eingang anliegenden Daten entgegennehmen), wenn 1. die durch Capture repräsentierte Phase am Eingang ungleich der Phase am Ausgang ist, und 2. die Phase am Ausgang gleich der Phase der nachfolgenden Stufe (Wert von Pass) ist.
Bedingung 1 ist dabei gleichbedeutend damit, dass neue Daten fertig abgearbeitet sind und am Eingang zur Übernahme bereit sind. Betrachtet man Figur 16 und hier beispielsweise das Register REG2, so bedeutet die Erfüllung der Bedingung 1, dass von Register REG1 stammende Daten in der Logikwolke LW01 fertig verarbeitet sind und nun am Eingang Datajn von Register REG2 zur Übernahme bereit sind. (Wenn Eingang und Ausgang dieselbe Phasen haben, bedeutet dies, dass die Daten am 20 AT 502 264 B1
Eingang noch zu jenen gehören, die sich bereits am Ausgang befinden.)
Weiters ist Bedingung 2 gleichbedeutend damit, dass die Daten von dem nachfolgenden Register REG3 ordnungsgemäß übernommen wurden. 5
Werden mehrere CAL-Register zusammen geschaltet, so wird die C-done („Capture-done“) Leitung mit der PASS Leitung des vorhergehenden Registers verbunden. Umgekehrt wird die PASS Leitung mit dem C-Done des nachfolgenden Registers verbunden. Eine entsprechende Pipeline PIP mit drei CAL-Registern REG1, REG2, REG3 sowie Logikwolken LW01, LW02 ist io in Figur 16 dargestellt. Durch die dargestellte Art und Weise der Verbindungen zwischen den Registern bekommt ein Register die Information, dass seine ausgangsseitigen Daten vom nachfolgenden Register übernommen wurden und signalisiert andererseits dem vorhergehenden Register, wann es die anliegenden Daten korrekt übernommen hat. 15 Bei der Initialisierung der in Figur 16 dargestellte Schaltung ist darauf zu achten, dass die einzelnen CAL-Register richtig initialisiert werden. Die Initialisierung erfolgt durch die Reset Leitung.
Im Rahmen der Erfindung ist es notwendig, die logischen Zustände von der „herkömmlichen“, 20 bekannten Darstellung in die CAL-Darstellung und umgekehrt umzuwandeln. Die Gegenüberstellung der beiden Darstellungen ist nochmals in Tabelle 8 aufgeführt.
Tabelle 8 log. state code q>0 code φ1 „LO“ (a,b) = (0,0) (a,b) = (0,1) „Hl“ (a,b) = (1,1) _(a.b) = (1,0)_
Die Umwandlung eines Standard-Signals Datajn in Standard-Darstellung stdjogic in 30 cal_rail_logic ist an Hand von Figur 17 näher erläutert. Dabei kann im Fall der betrachteten Realisierung mit zwei Phasen der logische Zustand des Standard-Signals direkt als Pegel für Leitung a bzw. als Signalwert für das zweiwertige Signal a verwendet werden (siehe auch Tabelle 8: logischer Zustand in Standarddarstellung „LO“: a = 0; logischer Zustand in Standarddarstellung „Hl“: a = 1), die Leitung b muss hingegen je nach Phase generiert werden. Wie 35 dabei aus Figur 17 zu erkennen ist, ergibt sich dann der Pegel von Leitung b bzw. der Signalwert für das zweiwertige Signal b als XOR-Verknüpfung des Eingangssignals mit der Leitung, die die Phaseninformation enthält.
Umgekehrt entspricht das binäre, herkömmliche Signal aus der CAL-Darstellung unmittelbar der 40 Leitung a des cal_rail_logic-Tupels, wie dies der Figur 18 zu entnehmen ist.
Schließlich kann es noch, um bei der Erfindung mehrwertige Signale in anderen Pipelinestufen verwenden zu können, notwendig sein, die Phase der Signale zu vertauschen. Bei Signalen, die an einer Stufe in gerader Entfernung zu der aktuellen Stufe angelangen (d.h. bei der 3-ten, 45 5-ten. etc. Stufe, wenn die aktuelle Stufe die erste Stufe ist), ist keine Konversion notwendig, da hier die gleiche Phase verwendet bzw. weiterverarbeitet wird. Ist der Abstand jedoch ungerade (2-te, 4-te, etc. Stufe), so muss die Phase konvertiert werden. Dies geschieht mit einem Phasenkonverter KOV entsprechend der Figur 19, der den Pegel der Leitung a unverändert lässt, während jener der Leitung b invertiert wird. 50 CAL mit mehr als 2 Phasen
Folgenden Erläuterung beziehen sich insbesondere auf Figur 20. 55 Die Idee, den Datenfluss in der Logik durch Einfügen einer Phaseninformation erkennbar und 21 AT 502 264 B1 damit steuerbar zu machen, ist nicht auf zwei Phasen beschränkt, sondern lässt sich prinzipiell mit beliebig vielen Phasen umsetzen. Dieser zusätzliche Freiheitsgrad in der Phaseninformation wäre geeignet, neben der Konsistenz noch weitere Meta-Informationen zu übertragen (Reihenfolge, Quelle, Vorgeschichte, etc.).
Eine mögliche Codierung am Beispiel von 4 Phasen bei 4 Leitungen (4 zweiwertigen Signalen) pro mehrwertigem Signal ist in Tabelle 1 dargestellt.
Tabelle 9
Codewort φ0 cp1 <P2 cp3 0000 Hl 0001 Hl 0010 Hl 0011 Hl 0100 LO 0101 LO 0110 LO 0111 LO 1000 LO 1001 LO 1010 LO 1011 LO 1100 Hl 1101 Hl 1110 Hl 1111 Hl
Diese Codierung ist wieder so gewählt, dass bei jedem gültigen Zustandswechsel stets nur eine Leitung ihren Pegel (bzw. ein zweiwertiges Signal seinen Signalwert) ändert. Dadurch ist die Konsistenz auf Leitungsebene wieder unmittelbar sichergestellt. Um dies zu erreichen, werden hier in jeder Phase für jeden logischen Zustand zwei Codierungen zugelassen. Mit den 16 möglichen Codeworten sind damit 4 Phasen darstellbar. Varianten zu dieser Tabelle sind möglich, die vorgeschlagene Codierung besticht aber besonders durch ihre Symmetrie.
Die Implementierung kann wieder in gleicher Weise erfolgen wie für 2 Phasen, allerdings ist wegen der 4 Leitungen pro Signal der Aufwand deutlich höher. Figur 20 zeigt das Prinzip: Die einzelnen Funktionen F(a) ... F(d) bilden aus den Eingangsleitungen E1.a, E1.b ... E2.d die benötigten Ausgangsleitungen Y.a ... Y.d. Jede dieser Funktionen kann wieder durch eine kombinatorische Verknüpfung der Eingänge gebildet werden, wobei für das „Halten“ des Zustandes im Falle nicht konsistenter Eingänge gegebenenfalls wieder ein Speicherelement bzw. Hystereseverhalten vorzusehen ist. Alternativ zum Halten könnte im Fall nicht konsistenter Eingänge auch ein „ungültiger“ Ausgang generiert werden, also ein Zustand in einer Phase, die der erwarteten Reihenfolge (z.B. φ0 —> φ1 -> φ2 —> φ3 -► φΟ —► etc.) widerspricht (z.B. <p3 —► φ2). Hier ist insbesondere ein Schritt zurück in die vorige Phase günstig, da sich dabei jeweils wieder nur ein Bit im Codewort ändert. Durch die Realisierung ohne Halten lässt sich das Speicherelement einsparen.
Tabelle 10 zeigt die Verknüpfung der Eingänge am Beispiel des AND-Gatters. Für die Verknüpfung ist zusätzlich auch der aktuelle Ausgangszustand zu beachten - dies wurde in der Tabelle aus Gründen der Übersichtlichkeit nicht berücksichtigt. Insgesamt sind daher für das Ausgeben 22 AT 502 264 B1 des nächsten gültigen Codewortes drei mehrwertige_Signale in Phase zu bringen: E1 und E2 müssen in gleicher Phase cp[i] sein (wie es ja auch bei der zweiphasigen Variante von CAL der Fall war), zusätzlich muss sich der Ausgang in der „Vorgänger-Phase“ <p[i-1j befinden. Diese letztere Bedingung ist ein zusätzliches Feature der mehrphasigen Variante.
Tabelle 10
Dabei bedeutet in Tabelle 10 „H[i]“ das Ausgeben von Hl mit Phase q>[i], wobei von den beiden möglichen Darstellungen laut Tabelle 10 jene gewählt wird, bei der sich am Ausgang nur ein Bit gegenüber dem vorigen Ausgangscodewort ändert (durch die Codierung ist sichergestellt, dass dies immer erreichbar ist). „H[ij“ wird jedoch nur ausgegeben, wenn der vorige Ausgangszustand H[i-1] oder L[i-1] war, ansonst erfolgt keine Änderung („hold“).
Die Vorgangsweise für F(b) ... F(d) bzw. bei anderen logischen Verknüpfungen als AND ist analog.
Abschließend sollen nochmals kurz die Vorteile der vorliegenden Erfindung zusammengefasst werden: • Ein auf logischer Ebene sorgfältig entworfenes CAL-Design ist robust gegenüber beliebigen Signalverzögerungen, es ist delay insensitive. • Eine explizite Timing-Analyse des Designs ist nicht nötig, die Abfolge der alternierend codierten Eingangsworte erfolgt mit der jeweils maximal möglichen Geschwindigkeit. Diese wichtige Eigenschaft lässt sich ansonst nur mit Flankencodierung bzw. NCL erreichen, nicht jedoch mit synchronem Design bzw. den Micropipelines mit Delay-Elementen, die auf worst case dimensioniert werden müssen.

Claims (20)

  1. 23 AT 502 264 B1 • Einschränkungen bezüglich der implementierbaren Funktionen - wie sie z.B. bei den Huff-mann Codes oder der Flankencodierung genannt wurden - treffen für CAL nicht zu. Es lassen sich alle in üblichen Designs vorkommenden Konstrukte realisieren. • Bei CAL können Datenwellen (in alternieren der Codierung) in dichter Folge durch die Logik laufen. Gegenüber der NCL ergibt sich damit in etwa eine Verdopplung des Durchsatzes und eine Halbierung des Energieverbrauches, da keine NULL-Wellen benötigt werden. • Wie beschrieben basiert die Codierung der mehrwertigen Pegel auf Zuständen der zweiwertigen Signale. Es lassen sich daher bei Design, Debugging und Test die üblichen auf Zustandscodierung ausgelegten Verfahren (Boolesche Logik) und Werkzeuge (Simulator, Logikanalysator) weiterhin anwenden. Auch wenn ein neues Konzept wie das asynchrone Design prinzipiell Adaptionen der Werkzeuge erfordert, sind diese bei CAL substantiell geringer als z.B. bei der Flankencodierung. • Trotz der aus Design-Sicht vorteilhaften Zustandscodierung ist das Gültigwerden eines Bits garantiert immer durch ein Ereignis gekennzeichnet (Flanke auf a oder b). Dies war mit den herkömmlichen Methoden nur bei der im Design sehr aufwendigen Flankencodierung unmittelbar gegeben. Bei anderen Verfahren wie der NCL mussten explizit unproduktive NULL-Wellen in den Datenstrom eingefügt werden, um Übergänge zu erzwingen. Beim synchronen Design war das Hinzufügen des Taktsignals samt zusätzlicher Timing-Analyse erforderlich. • Da jederzeit die Gültigkeit von Datenworten feststellbar ist, kann bei CAL am Eingang jedes Gatters eine Synchronisierung vorgenommen werden. Als zusätzliche Maßnahme zur Strukturierung kann CAL vorteilhaft in eine Micropipeline eingebettet werden, und dies konzeptionell völlig einwandfrei, ohne Einschränkungen durch Delay-Elemente. Patentansprüche: 1. Verfahren zum Verarbeiten von Eingangsdaten, welche aus einer oder mehreren Eingangsvariablen zusammengesetzt sind, in einem logischen System (LW01, LW02) bestehend aus Verarbeitungsmitteln (CALAND, CALOR, CALINV), welche mittels Ubertragungsmitteln miteinander verbunden sind, wobei die Verarbeitungsmittel (CALAND, CALOR, CALINV) zumindest einen Eingang und zumindest einen Ausgang aufweisen, wobei von den Übertragungsmitteln Ausgangsvariablen von dem/den Ausgang/Ausgängen (Z) zu dem/den Eingang/Eingängen übertragen werden, und wobei weiters ein oder mehrere Eingangsvariablen von den Verarbeitungsmitteln (CALAND, CALOR, CALINV) mittels eines Sets von Transformationsregeln in Ausgangsvariablen aufgelöst werden, dadurch gekennzeichnet, dass jede Eingangsvariable durch ein mehrwertiges Signal (E1, E2) dargestellt wird, sodass zusätzlich zum logischen Zustand (Hl, LO) der Variable eine Phaseninformation (φ0, φ1; φ0, φ1, φ2, φ3) darstellbar ist, mittels weicheraufeinanderfolgende zu verarbeitende Daten unterschieden werden können, und die Eingangsvariablen entsprechend den Transformationsregeln in Ausgangsvariable aufgelöst werden, wobei a) entweder eine Auflösung der Eingängsvariablen nur dann durchgeführt wird, wenn die Phase (<p0, q>1; <p0, cp1, q>2, <p3) der Eingangsvariablen übereinstimmt, oder b) im Falle von nicht übereinstimmender Phase (φ0, φ1; φ0, φ1, φ2, φ3) der Eingangsvariablen zwischenzeitlich ein erkennbar ungültiger Signalwert ausgegeben wird.
  2. 2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, dass in Punkt b) die Variable mit einer Phase ausgegeben wird, an Hand welcher die Ungültigkeit erkennbar ist. 24 AT 502 264 B1
  3. 3. Verfahren nach Anspruch 1 oder 2, dadurch gekennzeichnet, dass ein mehrwertiges Signal (E1, E2) aus zumindest zwei zweiwertigen Signalen (E1.a, E1.b, E2.a, E2.b; E1.a, E1.b, E1.c, E1.d, E2.a, E2.b, E2.c, E2.d) erzeugt wird.
  4. 4. Verfahren nach Anspruch 3, dadurch gekennzeichnet, dass die zweiwertigen Signale (E1.a, E1.b, E2.a, E2.b; E1.a, E1.b, E1.c, E1.d, E2.a, E2.b, E2.c, E2.d) in zumindest zwei zweiwertige Ausgangssignale (Z.a, Z.b) aufgelöst werden, welche ein mehrwertiges Ausgangssignal (Z) bilden, das die entsprechende Ausgangsvariable darstellt.
  5. 5. Verfahren nach Anspruch 3 oder 4, dadurch gekennzeichnet, dass für die Darstellung der logischen Zustände einer Eingangsvariable („Hl“, „LO“) genau zwei zweiwertige Signale (E1.a, E1.b; E2.a, E2.b) verwendet werden.
  6. 6. Verfahren einem der Ansprüche 3 bis 5, dadurch gekennzeichnet, dass für jedes zweiwertige Signal (E1.a, Elb, E2.a, E2.b; E1.a, Elb, Elc, Eid, E2.a, E2.b, E2.c, E2.d) eine eigene physikalische Leitung an den Verarbeitungsmitteln (CALAND, CALOR, CALINV) verwendet wird.
  7. 7. Verfahren nach einem der Ansprüche 1 bis 6, dadurch gekennzeichnet, dass die Codierung der Eingangsvariablen mittels der zumindest zwei zweiwertigen Signale (Ela, Elb, E2.a, E2.b; Ela, Elb, Elc, Eid, E2.a, E2.b, E2.c, E2.d) derart gewählt wird, dass der Übergang zwischen einem logischen Zustand („Hl“, „LO“) in einer Phase (<p0, cp1; cpO, q>1, <p2, <p3) in einen beliebigen Zustand in jeder vorgesehenen nachfolgenden Phase lediglich die Änderung des Signalwertes eines einzigen der den Zustand des mehrwertigen Signals darstellenden zweiwertigen Signale erfordert.
  8. 8. Verfahren nach einem der Ansprüche 1 bis 7, dadurch gekennzeichnet, dass die Codierung der Daten/eines Datenwortes (DAW1, DAW2, DAW3, DAW4) derart gewählt wird, dass alle (Eingangs-)Variablen des Datenwortes die gleiche Phase aufweisen.
  9. 9. Verfahren nach Anspruch 8, dadurch gekennzeichnet, dass aufeinanderfolgende Da-ten(worte) (DAW1,... DAW4) jeweils mit einer unterschiedlichen Phase codiert werden.
  10. 10. Verfahren nach Anspruch 8 oder 9, dadurch gekennzeichnet, dass erst bei Vorliegen eines konsistenten Datenwortes (DAW1,... DAW4) an einem Verarbeitungsmittel (CALAND, CALINV, CALOR) bzw. einem logischen System (LW01, LW02) mit der Verarbeitung der Daten begonnen wird.
  11. 11. Verfahren nach Anspruch 8 oder 9, dadurch gekennzeichnet, dass bei Vorliegen eines nicht konsistenten Datenwortes (DAW1,... DAW4) zumindest zwischenzeitlich eine Variable oder das zugehörige mehrwertige Signal in einem erkennbar ungültigen Zustand ausgegeben wird.
  12. 12. Verfahren nach einem der Ansprüche 1 bis 11, dadurch gekennzeichnet, dass bei der Umwandlung eines zweiwertigen Standard-Signals zur Beschreibung eines logischen Zustandes in zwei zweiwertige Signale bzw. ein vienwertiges Signal der Signalwert des Standard-Signals als Signalwert von einem der zwei zweiwertigen Signale (a) verwendet wird, und sich das weitere zweiwertige Signal (b) durch eine XOR-Verknüpfung mit einem vor-gebbaren oder vorgegebenen Phasensignal (phijn) mit dem Signalwert des Standard-Signals ergibt.
  13. 13. Verfahren nach Anspruch 12, dadurch gekennzeichnet, dass bei der Rückumwandlung jenes der beiden zweiwertigen Signale (a), welches dem Standard-Signal entspricht, wiederum als Standard-Signal verwendet wird. 2 5 AT 502 264 B1
  14. 14. Gatter für ein logisches System (LW01, LW02), welches entsprechend einem Verfahren nach einem der Ansprüche 1 bis 13 arbeitet, dadurch gekennzeichnet, dass das Gatter (CALAND, CALOR, CALINV) für jede logische Eingangsvariable („Hl“, „LO“) zumindest zwei Eingangsleitungen und für die Ausgangsvariablen eine der Anzahl der Eingangsleitungen für eine Eingangsvariable entsprechende Anzahl Ausgangsleitungen aufweist.
  15. 15. Gatter nach Anspruch 14, dadurch gekennzeichnet, dass es ein Hystereseverhalten aufweist.
  16. 16. Gatter nach Anspruch 15, dadurch gekennzeichnet, dass der Ausgang des Gatters an seinen Eingang rückgekoppelt ist, und a) im Fall, dass die Eingänge nicht dieselbe Phase aufweisen, der rückgeführte logische Zustand erneut am Ausgang ausgegeben wird, oder b) bei gleichen Phasen der Eingänge der neu berechnete Wert am Ausgang ausgegeben wird.
  17. 17. Gatter nach Anspruch 15, dadurch gekennzeichnet, dass es zumindest ein Speicherelement (RSF) aufweist, welches einen neu berechneten Wert erst übernimmt, wenn alle Eingänge dieselbe Phase aufweisen.
  18. 18. Register für eine Pipeline-Struktur aus logischen Systemen (LW01, LW02), welche über Register (REG; REG1, REG2, REG3) miteinander verbunden sind, und wobei die logischen Systeme (LW01, LW02) entsprechend einem Verfahren nach einem der Ansprüche 1-13 arbeiten, dadurch gekennzeichnet, dass das Register (REG; REG1, REG2, REG3) neue Daten nur übernimmt, wenn a) die Daten am Ausgang des Registers (REG1, REG2) bereits durch die Logikwolke (LW01, LW02) hindurch propagiert sind und von dem nachfolgenden Register (REG2, REG3) übernommen wurden, und b) die Daten am Eingang konsistent sind und sich in Bezug auf ihre Phase von den Daten am Ausgang des Registers unterscheiden.
  19. 19. Register nach Anspruch 18, dadurch gekennzeichnet, dass es ein Hystereseverhalten aufweist.
  20. 20. Register nach Anspruch 18 oder 19, dadurch gekennzeichnet, dass es zumindest eine Steuerlogik (SLO) aufweist, welcher die Phaseninformationen der Daten an ihrem Eingang sowie der aktuell an ihrem Ausgang gespeicherten Daten zugeführt sind, und zur Steuerung des Registers (REG1, REG2, REG3) die Steuerlogik (SLO) ein Steuersignal (en) generiert, mit dem das Register zur Entgegennahme von am Eingang anliegenden Daten angewiesen wird, wobei das Steuersignale (en) nur aktiviert wird, wenn a) die Phasen der Daten am Eingang und am Ausgang ungleich sind, und b) die Phase am Ausgang gleich der Phase der Daten am Ausgang des nachfolgenden Registers ist. Hiezu 8 Blatt Zeichnungen
AT6972004A 2004-04-22 2004-04-22 Verfahren zum verarbeiten von daten in einem logischen system AT502264B1 (de)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AT6972004A AT502264B1 (de) 2004-04-22 2004-04-22 Verfahren zum verarbeiten von daten in einem logischen system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
AT6972004A AT502264B1 (de) 2004-04-22 2004-04-22 Verfahren zum verarbeiten von daten in einem logischen system

Publications (2)

Publication Number Publication Date
AT502264A1 AT502264A1 (de) 2007-02-15
AT502264B1 true AT502264B1 (de) 2007-09-15

Family

ID=37685470

Family Applications (1)

Application Number Title Priority Date Filing Date
AT6972004A AT502264B1 (de) 2004-04-22 2004-04-22 Verfahren zum verarbeiten von daten in einem logischen system

Country Status (1)

Country Link
AT (1) AT502264B1 (de)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1368872A1 (ru) * 1986-07-14 1988-01-23 Харьковский авиационный институт им.Н.Е.Жуковского Многофункциональный логический модуль
US5305463A (en) * 1991-05-17 1994-04-19 Theseus Research Null convention logic system
WO1996031868A1 (en) * 1995-04-07 1996-10-10 Creative Technology Ltd. Method and apparatus for creating different waveforms when synthesizing musical sounds
EP1174759A1 (de) * 2000-07-14 2002-01-23 Lucent Technologies Inc. Optische Vorrichtung mit Boolescher Logik
DE10318643A1 (de) * 2002-05-01 2003-12-04 Futaba Denshi Kogyo Kk Mehrwertiges FSK Frequenzmodulationssystem
US6697929B1 (en) * 2000-02-14 2004-02-24 Intel Corporation Scannable zero-catcher and one-catcher circuits for reduced clock loading and power dissipation
US20040088596A1 (en) * 2002-10-30 2004-05-06 Adc Dsl Systems, Inc. Method and apparatus for synchronous loading and out-of-phase unloading of data registers
US7038488B1 (en) * 2004-04-30 2006-05-02 Altera Corporation Programmable logic device with transceiver and reconfigurable PLL

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SU1368872A1 (ru) * 1986-07-14 1988-01-23 Харьковский авиационный институт им.Н.Е.Жуковского Многофункциональный логический модуль
US5305463A (en) * 1991-05-17 1994-04-19 Theseus Research Null convention logic system
WO1996031868A1 (en) * 1995-04-07 1996-10-10 Creative Technology Ltd. Method and apparatus for creating different waveforms when synthesizing musical sounds
US6697929B1 (en) * 2000-02-14 2004-02-24 Intel Corporation Scannable zero-catcher and one-catcher circuits for reduced clock loading and power dissipation
EP1174759A1 (de) * 2000-07-14 2002-01-23 Lucent Technologies Inc. Optische Vorrichtung mit Boolescher Logik
DE10318643A1 (de) * 2002-05-01 2003-12-04 Futaba Denshi Kogyo Kk Mehrwertiges FSK Frequenzmodulationssystem
US20040088596A1 (en) * 2002-10-30 2004-05-06 Adc Dsl Systems, Inc. Method and apparatus for synchronous loading and out-of-phase unloading of data registers
US7038488B1 (en) * 2004-04-30 2006-05-02 Altera Corporation Programmable logic device with transceiver and reconfigurable PLL

Also Published As

Publication number Publication date
AT502264A1 (de) 2007-02-15

Similar Documents

Publication Publication Date Title
DE102018005172A1 (de) Prozessoren, verfahren und systeme mit einem konfigurierbaren räumlichen beschleuniger
EP0961980B1 (de) Verfahren zur selbstsynchronisation von konfigurierbaren elementen eines programmierbaren bausteines
DE69419524T2 (de) Sperrsynchronisierung für verteilte speicher-massivparallelrechner
DE69101242T2 (de) Reduzierungsprozessor.
DE69121382T2 (de) Emulator zur Emulation eines verbindungsloses Mikrokontroller und Mikrokontroller zur Verwendung in einem solchen Emulator
DE3248215C2 (de)
DE102015117019B4 (de) Serielle Peripherieschnittstellen-Kettenkommunikation mit rahmengebundener Antwort
Song et al. Normal forms for some classes of sequential spiking neural P systems
DE69733407T2 (de) Schnittstelle zur datenübertragung zwischen zwei taktbereichen
DE69128017T2 (de) Verteiltes rechnersystem
DE69605037T2 (de) Taktquellensynchrone datenverbindung
DE19903633A1 (de) Implementierung von Boolescher Erfüllbarkeit mit nichtchronologischer Rückwärtsverarbeitung in rekonfigurierbarer Hardware
DE19860062A1 (de) Verfahren der erzwungenen Registerteilung für die Konstruktion von leistungsarmen VLSI
DE112020004065T5 (de) Komplexe Daisy-Chain-Befehle
Barnard et al. Communicating X-machines
DE69904493T2 (de) Synchron- mehrphasen- taktverteilungssystem
DE19741915A1 (de) Zwischenspeicheroptimierung in Hardware-Logikemulations-Systemen
DE69935924T2 (de) Umgeordnete kommunikationsprozesse in asynchronen schaltkreisen mit pipelines
DE60101169T2 (de) Logikschaltkreis mit Pipeline-Struktur
DE2732008A1 (de) Einrichtung zur reduzierung von fibonacci-p-codes auf die minimalform
Ebergen Arbiters: an exercise in specifying and decomposing asynchronously communicating components
DE102013209610B4 (de) Arbiter für asynchrone Zustandsautomaten
DE69432693T2 (de) Schnitstelle zwischen unsynchronisierten Geräten
AT502264B1 (de) Verfahren zum verarbeiten von daten in einem logischen system
DE69315364T2 (de) Verfahren zum Testen einer integrierten Schaltung und eine integrierte Schaltung mit einer Vielzahl von Funktionskomponenten und Verbindungs- und Schalter-Testkomponenten in verbindenden Kanälen zwischen Funktionskomponenten

Legal Events

Date Code Title Description
ELJ Ceased due to non-payment of the annual fee