-
Die
vorliegende Erfindung bezieht sich auf Rechenwerke und insbesondere
auf Rechenwerke zum Verarbeiten eines Operanden mit einer Anzahl von
Stellen, wobei das Rechenwerk eine Anzahl von Bit-Slices hat, die
gleich einem m-ten Teil der Anzahl von Stellen des Operanden ist.
In anderen Worten ausgedrückt
bezieht sich die vorliegende Erfindung auf ein Rechenwerk zum Verarbeiten
von einem oder mehreren Operanden, wobei das Rechenwerk weniger
Bit-Slices hat als der eine oder die mehreren Operanden.
-
4 zeigt
ein bekanntes Rechenwerk. Das Rechenwerk umfaßt eine Rechenwerkssteuerung 40 und
eine Mehrzahl von Bit-Slices 41a, 41b, 41c,
wobei in 4 insgesamt N Bit-Slices bzw. Bit-Slice-Einrichtungen
dargestellt sind. Ferner umfaßt
das Rechenwerk, das in 4 abschnittsweise gezeigt ist,
einen externen Rechenwerksbus 42, der ausgebildet ist,
um Daten in jeden Bit-Slice zu laden. In der Ausführungsform
können
auch Daten, die von einem Bit-Slice in den nächsten Bit-Slice weitergegeben
werden, also beispielsweise Übertrag-Bits, über slice-interne
Kommunikationsleitungen von einem Bit-Slice zum nächsthöheren Bit-Slice übertragen werden.
Alternativ kann dies jedoch auch über den externen Bus 42 erfolgen.
-
Lediglich
schematisch ist in 4 ein Operand 43 gezeigt,
der eine Anzahl von m mal N Stellen hat, dessen Stellenanzahl also
zunächst
einmal größer als
die Anzahl N von Bit-Slices ist. Bei dem speziellen in 4 gezeigten
Fall ist der Faktor m größer oder
gleich 2, so daß die
Anzahl von Stellen des Operanden 43 gleich dem Doppelten,
Dreifachen, Vierfachen, ..., M-fachen der Anzahl von Bit-Slices
N des in 4 gezeigten Rechenwerks ist.
-
5 zeigt
eine detailliertere Darstellung des Bit-Slices i von 4.
Bei dem in 5 gezeigten Ausführungsbeispiel
ist das Rechenwerk ausgebildet, um eine Anzahl k von Operanden zu
verarbeiten, wobei in 5 lediglich für den Bit-Slice i der Registerbereich 50a für den ersten
Operanden sowie der Registerbereich 50b für den zweiten
Operanden gezeigt sind. Weitere Registerbereiche für weitere Operanden
sind bei 50c angedeutet.
-
Ein
Bit-Slice umfaßt
ferner ein Logikelement
51, das typischerweise aus einer
Anzahl von Logikgattern besteht, um – insbesondere bei Langzahlrechenwerken – eine Addiererzelle
zum Addieren einer Mehrzahl von Operanden zu schaffen. Das Logikelement
umfaßt
hierzu die für
einen Addierer nötigen Gatter
zum Erzeugen eines Summenbits und eines Übertragbits aus den beiden
Eingangsoperandenbits und einem Übertragbit
aus dem nächstniedrigeren Bit-Slice,
also aus dem Bit-Slice mit der Ordnungszahl i – 1. Bezüglich einer detaillierteren
Beschreibung von Bit-Slices und deren Stapelung aufeinander, um
ein Rechenwerk zu erhalten, sei auf die
DE 3631992 C1 verwiesen.
-
Die
Elemente 50a, 50b, 50c, 51 einer Bit-Slice
i sind über
einen lokalen Kommunikationsbus für den Bit-Slice i, der in 5 mit 52 bezeichnet ist,
miteinander verbunden. Im einzelnen umfaßt jede Registereinheit einen
Anschluß an
den Kommunikationsbus 52, wobei der Kommunikationsbus 52 sich zum
externen Bus 42 erstrecken kann, oder über Slice-Ein/Aus-Schaltungen mit dem
externen Bus 42 verbunden sein kann. Der Bit-Slice i ist
in 5 ferner so gezeigt, daß er über die Steuerungseinrichtung 40,
die bereits anhand von 4 dargestellt worden ist, steuerbar
ist.
-
Wie
es bereits ausgeführt
worden ist, dient das in
4 gezeigte Rechenwerk zur Verarbeitung eines
Operanden oder mehrerer Operanden. Wird nur ein Operand verarbeitet,
so könnte
dies beispielsweise eine Inversion des Operanden etc. sein. Typischerweise
werden jedoch zwei oder mehrere Operanden miteinander verarbeitet,
wie beispielsweise zwei Operanden, wenn einfach addiert wird, oder
wie beispielsweise drei Operanden, die addiert werden, um insbesondere
für kryptographische
Anwendungen, wie beispielsweise das RSA-Kryptosystem, eine effiziente Ausführung der
modularen Exponensation umzusetzen, wie es in der
DE 3631992 C2 offenbart ist.
In diesem Fall besteht das Logikelement
51 von
5 aus
einem bitweisen Drei-Operanden-Addierer, der jeweils aus einem Halbaddierer
und einem nachgeschalteten Volladdierer für jede Bit-Slice besteht.
-
Ist
die Länge
des Rechenwerks, also die Anzahl der Bit-Slices N, größer oder
gleich der Anzahl von Stellen des Operanden, so wird der Operand
typischerweise in einem Eingabezyklus in die entsprechenden Rechenwerk-Registerzellen über den
externen Bus 42 eingeladen. Dies bedeutet, daß das niederstwertige
Bit in eine Registerzelle des Bit-Slices 41a eingespeist
wird, daß das
nächsthöhere Bit
in den Bit-Slice 41b eingespeist wird, daß das wieder nächsthöhere Bit
in den Bit-Slice 41c eingespeist wird, und daß das i-te
Bit in den Bit-Slice i eingespeist wird.
-
Hat
der Operand nicht mehr Stellen, ist die Anzahl von Stellen des Operanden
also kleiner oder gleich der Anzahl von Bit-Slices, so kann in einem
Zyklus eine Operation durchgeführt
werden, wobei das Ergebnis der Operation wiederum in einem eigenen Ergebnisregister
eines Bit-Slices abgespeichert werden kann, oder in dem Register,
in dem der ursprüngliche
Wert war, wenn der ursprüngliche
Wert nicht mehr benötigt
wird. Das Ergebnis der Operation kann dann für den externen Bus 42 von 4 ausgegeben werden
und z. B. in einem externen Speicher abgespeichert werden. Je nach
Anforderung kann das Ergebnis jedoch wieder verwendet werden, um
in einem nächsten
Rechenschritt wieder über
die jeweiligen lokalen Kommunikationsbusse der Bit-Slices den Logikelementen
zugeführt
zu werden, um wiederum eine erneute Rechnung durchzu führen. Diese
Steuerung wird durch die Rechenwerks-Steuerungseinrichtung 40 ausgeführt, die
mit jeder Bit-Slice in Wirkverbindung steht, um entsprechende Register-Lade-Funktionalitäten durchzuführen.
-
Bei
den vorstehenden Ausführungen
wurde angenommen, daß jeder
Registerblock 50a, 50b, 50c genau eine
einzige Registerzelle hat. Würde
in einem solchen Rechenwerk, bei dem jede Bit-Slice für jeden Operanden eine Registerzelle
hat, z. B. eine Addition zweier Operanden durchgeführt werden,
die beide mehr Stellen haben als Bit-Slices vorhanden sind, so würde über den
externen Bus zunächst
eine erste Untergruppe von Stellen des Operanden in den Addierer
eingespeist werden, um die ersten niedrigeren Stellen des Ergebnisses
zu berechnen. Diese würden
dann ausgegeben werden, wobei der Übertrag der höchsten Bit-Slice
gespeichert wird. Dann würde über den
externen Bus die nächste
Portion von Stellen in die Bit-Slice-Registerzellen
eingespeist werden, um dann unter Verwendung des zuletzt gespeicherten Übertragbits
für den
niedrigsten Bit-Slice die nächste
Portion von Summenbits auszurechnen. Dieses Prozedere kann wiederholt
werden, bis sämtliche
Stellen des Operanden abgearbeitet sind.
-
Dieses
Prozedere ist insbesondere dahingehend nachteilhaft, daß immer,
nach jedem Rechenwerks-Zyklus, Daten über den externen Bus übertragen
werden müssen.
-
Um
diesen Nachteil zu übergehen,
wurde das in 6 beschriebene Konzept eingesetzt,
bei dem jeder Bit-Slice eine Mehrzahl von Registerzellen hat, und
zwar insbesondere m Registerzellen. Insbesondere zeigt 6 den
Register-Abschnitt
eines Bit-Slices i von 5, also eine vergrößerte Darstellung
der Blöcke 50a, 50b samt
Steuerungseinrichtung 40 und Kommunikationsbus 52.
Der Kommunikationsbus 52 umfaßt bei dem in 6 gezeigten Beispiel
einen Hin-Kommunikationsbus 52a und
einen Rück-Kommunikationsbus 52b.
Im einzelnen umfaßt
nunmehr jeder Registerblock 50a, 50b eine Mehrzahl
von M seriell geschalteten Registerzellen 61a – 61d im
Hinblick auf den Registerblock 50a sowie eine Mehrzahl
von seriell geschalteten m Registerzellen 62a, 62b, 62c, 62d im
Hinblick auf den Registerblock 50b. Die Registerzellen 61a, 61b sind
also, wie es in 6 gezeigt ist, seriell geschaltet,
derart, daß der
Ausgang einer Registerzelle mit einem Eingang der nächsten Registerzelle
verbunden ist.
-
Zum
Einspeichern von Daten in die Registerzellen wird über den
rechenwerks-internen Input-Bus die Dateneinspeicherung so vorgenommen,
daß zunächst das
i-te Bit eines bestimmten Operanden, der in den Registerblock 50a eingespeist
wird, der Registerzelle 61d zugeführt wird. Für die nachfolgende Betrachtung
sei davon ausgegangen, daß das
Rechenwerk N Bit-Slices
hat. Der Operand N + i wird dann, in einem nächsten Schritt, vom externen
Bus dem Input-Bus 52b zugeführt. Dieser Operand für die Stelle N
+ i wird nunmehr in die Registerzelle 61d eingespeist,
wobei nun jedoch der bisher in der Registerzelle m gespeicherte
Operand für
die Stelle i in die Registerzelle 3 „nach oben" weitergereicht wird.
-
Zum
Einspeichern des nächsten
Bits für
die Stelle i + 2N wird dieses Bit wiederum von außen zugeführt und
der Registerzelle m 61d zugeführt. Zuvor wird jedoch der
aktuelle in der Registerzelle m gespeicherte Wert in die höhere Registerzelle 3 weitergereicht.
Bevor dies stattfindet, wird jedoch zunächst der in der Registerzelle 3 befindliche
Wert in die Registrierung 2 hochgeschoben.
-
Zum
Einspeichern der Stelle i + 3N des Operanden wird folgendermaßen vorgegangen.
Der aktuell in der Registerzelle 61b gespeicherte Wert
wird in die Registerzelle 61a hochgeschoben. Der aktuell
in der Registerzelle 61c gespeicherte Wert wird in die Registerzelle 61b hochgeschoben.
Der aktuell in der Registerzelle 61d gespeicherte Wert
wird in die Registerzelle 61c hochgeschoben. Dann wird
schließlich
der neu einzu speichernde Wert für
die Stelle i + 3N in die Registerzelle m eingeführt.
-
Eine
entsprechende Prozedur findet statt, wenn vom Logikelement i über den
Bus 52b Werte zugeführt
werden, die als Zwischenergebnis des letzten Schritts berechnet
worden sind. Sie werden wieder „von unten nach oben" in die seriell geschalteten Registerzellen
eingespeist. Entsprechend werden dann, wenn Registerzelleninhalte über den
Output-Bus 52a z. B. zum Logikelement oder zum externen
Bus, also „nach
außen", transportiert werden
sollen, sequentiell herausgeführt.
-
Dieses
Prozedere ist insbesondere dann von Vorteil, wenn die Anzahl der
Registerzellen relativ groß ist,
also insbesondere größer als
2 oder 3. Dies bedeutet, daß sehr
große
Zahlen mit relativ kleinen Rechenwerken verarbeitet werden können. Im
einzelnen sei beispielhaft der Fall dargelegt, daß Operanden
mit einer Größe von bis
zu 1.120 Bits verarbeitet werden sollen, und daß das Rechenwerk N gleich 280
Bit-Slices hat. In einem solchen Fall hat jeder Registerblock in
der Bit-Slice vier
Registerzellen, die seriell hintereinander geschaltet sind.
-
Das
Laden kann in einem eigenen Ladezyklus seriell stattfinden, während bereits
im Logikelement andere Bits verarbeitet werden. Andererseits ist es
erforderlich, daß,
um einen schnellen Betrieb zu erreichen, gewissermaßen gleichzeitig
alle Registerzellen mit neuen Bits beschrieben werden. Dies bedeutet,
in anderen Worten ausgedrückt,
daß zu
einem Zeitpunkt gewissermaßen
alle Eingänge/Ausgänge aller
Registerzellen geöffnet
werden, damit das „Verschieben" der Registerzelleninhalte
stattfinden kann.
-
Die
Registerbits werden typischerweise als Latches realisiert, wobei
für jeden
der Anzahl von m Teilzyklen, die notwendig sind, um eine Addition
abzuarbeiten, das betreffende Registerbit in einem Puffer gespeichert
und alle übrigen
m – 1
Bits sukzessiv durch die sequentiell angeordneten Latches weitergereicht
werden, wie es anhand von 6 dargelegt worden
ist. Dadurch, daß eine
Zwischenspeicherung (typischerweise irgendwo auf dem Weg des Output-Busses 52a oder
auf dem Weg des Input-Busses 52b) benötigt wird, ist diese Implementierung
insbesondere hinsichtlich des Timings problematisch. Ferner ist
die Ansteuerung komplex, was insbesondere dahingehend problematisch
ist, daß nur
festverdrahtete Steueroptionen innerhalb der Bit-Slices verwendet
werden können.
-
Ein
weiterer Nachteil von ganz erheblicher Bedeutung ist die Tatsache,
daß erhebliche
Querströme
generiert werden, wenn die Registerzellen in der beschriebenen sequentiellen
Weise betrieben werden. Insbesondere bei CMOS-Schaltungen, die typischerweise
verwendet werden, wird im Halten-Zustand, also wenn keine Veränderung
eines Registers auftritt, kein oder nur ein geringer Querstrom erzeugt. Ändert ein
Register jedoch seinen Zustand, so werden merkbare Querströme erzeugt,
die von einer chipinternen Stromquelle produziert werden müssen. Wie
es bereits ausgeführt
worden ist, können
im ungünstigen
Fall alle m Registerzellen der in 6 gezeigten
Schaltungstopologie ihren Zustand ändern. Dies heißt, daß eine Stromversorgung
eines Chips einen ganz erheblichen Strom erzeugen muß, der gleich
der Summe sämtlicher
Querströme
ist. Nachdem typische Stromversorgungen über eine Spannungsquelle mit
einem entsprechenden Spannungsregler implementiert sind, ist für diesen
Fall der hohen Querströme
eine außerordentlich
starke Spannungsregelung erforderlich. Wird diese nicht vorgesehen,
so wird auf dem Chip ein Spannungsabfall auftreten. Ein solcher
komfortabel ausgelegter Spannungsregler, der einem solchen Spannungsabfall
entgegen wirken kann, benötigt
jedoch einerseits viel Chipfläche
und ist andererseits im Hinblick auf den Entwurf im Vergleich zu
einfacheren Spannungsreglern aufwendiger.
-
Zusammenfassend
führt somit
das in 6 gezeigte Konzept zu einem teureren Chip, da
im Hinblick auf die Ansteuerung und deren Komplexität zusätzliche
Chipfläche
benötigt
wird, und da auch im Hinblick auf die hohen Querströme, die
potentiell auftreten können,
teure Spannungsregler auf dem Chip benötigt werden.
-
Insbesondere
bei Massenanwendungen, wie beispielsweise bei Chips für Chipkarten,
können
jedoch bereits kleine Preisdifferenzen aufgrund der großen Stückzahlen
dazu führen,
daß ein
Produkt überlebt,
während
ein anderes Produkt keine Marktakzeptanz erreicht.
-
Die
DE 32 28 018 A1 offenbart
ein Schlüsselsystem
für die
RSA-Kryptographie. Für
Berechnungen innerhalb einer RSA-Verschlüsselung
werden ein M-Register, ein e-Register, ein n-Register und ein C-Register
zur Speicherung der entsprechenden Variablen verwendet. Die Inhalte
des M-Registers und des C-Registers werden einem Selektor zugeführt. Der
Selektor wählt
eines der beiden Signale und liefert das ausgewählte Signal an ein M
2-Register. Ein Multiplizierer/Dividiererwerk
erhält
dieses Signal und ein anderes Signal. Das Multiplizierer/Dividiererwerk ist
in einen Quotientenrechner und einen Hauptaddierer unterteilt. Der
Teil ohne Quotientenrechner wird in einzelne Gruppen aufgeteilt.
Jede der Gruppen hat eine Steuerung. Ein Register mit einer Bitlänge von
beispielsweise 512 wird in 8 Register mit einer Bitlänge von
jeweils 64 Bits unterteilt. Auch der Hauptaddierer ist in 8 Gruppen
unterteilt.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, ein einfacheres
und damit preisgünstigeres
Rechenwerk zu schaffen.
-
Diese
Aufgabe wird durch ein Rechenwerk nach Patentanspruch 1 gelöst.
-
Der
vorliegenden Erfindung liegt die Erkenntnis zugrunde, daß das Problem
der komplexen Ansteuerung und insbesondere der hohen Querströme dadurch
angegangen werden kann, wenn die m Registerzellen in einem Bit-Slice,
nicht mehr, wie im Stand der Technik der Fall, seriell hintereinander
geschaltet werden, sondern parallel geschaltet werden. Dies bedeutet,
daß jede
Registerzelle eine Kopplung zum slice-internen lokalen Kommunikationsbus
hat und selektiv ansteuerbar ist, derart, daß diese Registerzelle zum Lesen
oder Schreiben geöffnet
werden kann, während
alle anderen Registerzellen geschlossen sind. Damit wird dann, wenn
ein in der Registerzelle gespeichertes Bit zu einer Logikeinheit
transportiert wird, ein Querstrom auftreten, der dem Querstrom entspricht,
wenn eine einzige Registerzelle ihren Inhalt ändert. Dies stellt eine erhebliche
Verbesserung im Vergleich zum Stand der Technik dar, bei dem potentiell
der m-fache Querstrom auftreten konnte.
-
Ferner
ist die Ansteuerung einfach, da immer nur eine „1-aus-M"-Codierung
eingesetzt werden braucht, um eine Registerzelle zu öffnen, also
mit dem Kommunikationsbus zu verbinden, während die anderen Registerzellen
geschlossen gehalten werden.
-
Die
vorliegende Erfindung ist ferner dahingehend vorteilhaft, daß ohne weiteres
eine Dual-Rail-Implementierung mit Initialisierungstakt zwischen
zwei Nutztakten, also mit Precharge bzw. Pre-Discharge eingesetzt
werden kann. In diesem Fall hat der Kommunikationsbus eine Busleitung
für Daten
und eine weitere Busleitung für
negierte Daten. Aufgrund der parallelen Anordnung der Registerzellen
bezüglich
der Datenbusse ist diese busbezogene Dual-Rail-Architektur ohne
weiteres implementierbar, nämlich
einfach durch einen Input-Schalter sowie einen Output-Schalter für eine Registerzelle.
-
Im
Gegensatz zum Datentakt, bei dem immer eine Registerzelle mit dem
Kommunikationsbus verbunden ist, während alle anderen Registerzellen funktionsmäßig von
dem Kommunikationsbus abgetrennt sind, sind im Initialisierungstakt
sämtliche
Registerzellen funktionsmäßig vom
Kommunikationsbus abgetrennt.
-
Je
nach Implementierung können
jedoch auch Dual-Rail-Register eingesetzt werden, die ebenfalls
initialisiert werden können,
um eine optimale Sicherheit gegenüber Seitenkanal-Angriffen zu
ermöglichen.
-
In
der Implementierung kann derselbe Datenbus ohne weiteres als Eingabebus
und als Ausgabebus verwendet werden. Fall jedoch ein separater Input-Bus
oder ein separater Output-Bus benötigt werden, ist dies ebenfalls
ohne weiteres durchführbar,
da immer nur eine entsprechende Anzahl von Input-/Output-Schaltern für die einzelnen Register vorgesehen
werden müssen.
-
Das
erfindungsgemäße Konzept
basiert somit auf dem parallelen Anschluß der m Latches eines Bit-Slices
an einem lokalen Bus des Bit-Slices. Je nach Aufgabe des Registers
genügt
ein Bus zum Lesen und Schreiben oder es müssen zwei Busse implementiert
werden.
-
Damit
ergibt sich der Vorteil der einfachen Ansteuerung, da immer nur
ein einziges Register geöffnet
werden muß.
Da kein Weiterreichen der Registerbits notwendig ist, werden nur
verschwindend geringe Querströme
generiert. Statt der sequentiellen Konfiguration, wie sie eingangs
dargestellt worden ist, wird erfindungsgemäß eine parallele Verschaltung
der Registerzellen im Hinblick auf die Immunität gegenüber Seitenkanal-Attacken gewählt.
-
Bevorzugte
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend Bezug nehmend auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 eine
schematische Darstellung des Registerblocks eines Bit-Slices i gemäß der vorliegenden
Erfindung;
-
2 eine
detailliertere Darstellung von zwei Registerzellen von 1;
-
3a eine Übersichtsdarstellung über die „1-aus-M"-Codierung zur Ansteuerung der Registerzellen
mit dazwischenliegenden Initialisierungstakten;
-
3b eine
Registerzelle in Dual-Rail-Technik;
-
4 ein
schematisches Diagramm eines Rechenwerks, das aus N Bit-Slices aufgebaut
ist;
-
5 eine
detaillierte Darstellung eines Bit-Slices i von 4;
-
6 eine
bekannte Implementierung eines Bit-Slices i mit einer Anzahl von
m seriell geschalteten Registerzellen.
-
1 zeigt
eine schematische Darstellung zweier Registerblöcke eines erfindungsgemäßen Rechenwerks
zum Verarbeiten von wenigstens einem und vorzugsweise mehreren Operanden,
wobei jeder Operand eine Anzahl von Stellen hat. Das erfindungsgemäße Rechenwerk
ist ein Rechenwerk vom Bit-Slice-Architektur-Typ,
wie er anhand von 4 dargestellt worden ist. Das
erfindungsgemäße Rechenwerk
umfaßt
somit eine Anzahl von Bit-Slices 41a, 41b, 41c (4),
wobei die Anzahl von Bit-Slices kleiner als die Anzahl von Stellen
des zumindest einen Operanden ist.
-
Jeder
Bit-Slice des Rechenwerks umfaßt wieder,
wie im Falle des anhand von 4 gezeigten bekannten
Rechenwerks, ein Logikelement 51 (5). Der
Bit-Slice i des erfindungsgemäßen Rechenwerks,
der in 1 dargestellt ist, umfaßt ferner einen lokalen Bit-Slice-Kommunikationsbus 10 sowie für jeden
Registerblock eine Mehrzahl von Registerzellen 12a, 12b, 12c, 12d für den linken
Registerblock oder 14a, 14b, 14c, 14d für den rechten
Registerblock von 1. Die Registerzellen 12a, 12b, 12c, 12d sind,
wie es aus 1 ersichtlich ist, mit dem Kommunikationsbus 10 so
gekoppelt, daß die
Registerzellen bezüglich
des Kommunikationsbusses für einen
Registerblock parallel geschaltet sind. Insbesondere hat jede Zelle
in 1 einen Bit-Ausgang 13a, 13b, 13c, 13d, über den
das in der jeweiligen Zelle gespeicherte Bit zum Kommunikationsbus 10 ausgebbar
ist. Vorzugsweise umfaßt
jede Zelle auch einen Ausgang für
das jeweilige negierte Bit 15a, 15b, 15c, 15d.
-
Erfindungsgemäß ist ferner
jede Registerzelle über
eine eigene Steuerleitung 17a, 17b, 17c, 17d ansteuerbar,
dahingehend, daß sie
von dem Kommunikationsbus 10 abgetrennt ist oder daß sie mit
dem Kommunikationsbus 10 zu Zwecken des Lesens oder Schreibens
gekoppelt ist.
-
Die
Steuerleitungen 17a – 17d werden über eine
irgendwo auf dem Chip angeordnete Steuerungseinrichtung 20 angesteuert,
derart, daß immer die
korrekte Zelle mit dem Bus 10 verbunden wird. Die Steuerungseinrichtung 20 ist
somit vorgesehen, um die Mehrzahl von Registerzellen so zu steuern, daß nur eine
der Registerzellen mit dem Kommunikationsbus gekoppelt ist, um eine
gespeicherte Stelle des Operanden über den Kommunikationsbus zum Logikelement
zu übertragen
oder eine Stelle zu Zwecken des Speicherns in der Registerzelle
vom Logikelement zu erhalten, wobei die anderen Registerzellen von
dem Kommunikationsbus abgekoppelt bleiben.
-
Vorzugsweise
ist die Anzahl der Zellen in einem Registerblock einer Bit-Slice
i für einen
Operanden gleich m, wobei der zu verarbeitende Operand eine Anzahl
von m mal N Stellen hat, wobei N die Anzahl der Bit-Slices des Rechenwerks
ist. Es ist jedoch ohne weiteres ersichtlich, daß das erfindungsgemäße Konzept
auch dann funktioniert, wenn die Anzahl von Stellen des Operanden
a = m mal N ist, da es insbesondere für Addiererrechenwerke unerheblich
ist, ob eine bestimmte Anzahl von Bit-Slices, die eigentlich für höhere Bits
als das höchstwertige
Bit des Operanden vorgesehen wären,
gewissermaßen „leerlaufen". Anders ausgedrückt können diese Bit-Slices
entweder deaktiviert werden oder einfach mit Nullen gespeist werden,
um die entsprechenden Bit-Slices de facto zu „neutralisieren".
-
Bei
dem in 1 gezeigten Ausführungsbeispiel umfaßt jede
Registerzelle zwei Ausgänge,
nämlich
einen Ausgang für
das Bit 13a beispielsweise und einen Ausgang für das negierte
Bit 15a beispielsweise. Diese Implementierung ist insbesondere
für eine
Anwendung des Dual-Rail-Konzepts auf den sliceinternen lokalen Kommunikationsbus
günstig.
Zu diesem Zweck wird Bezug nehmend auf 2 eine detailliertere
Darstellung der Registerzellen gegeben. So umfaßt eine Registerzelle bei einem
bevorzugten Ausführungsbeispiel
der vorliegenden Erfindung zwei gegengekoppelte Inverter 22a, 22b bzw. 24a, 24b für die Zelle
1 12a bzw. die Zelle 2 12b von 1.
Die Steuerleitung 17a beispielsweise für die Zelle 1 ist ausgebildet,
um zwei Schalter zu betätigen,
wobei ein Schalter ausgebildet ist, um die Zelle mit der Leitung 13d für ein Datenbit
zu koppeln (Schalter 26a), und wobei der andere Schalter
ausgebildet ist, um die Speicherzelle mit der Leitung 15d für das negierte
Bit zu koppeln (26b). Entsprechende Schalter 28a, 28b existieren
für die
zweite Zelle 12b. Bei dem bevorzugten Ausführungsbeispiel
stellen die Schalter 26a, 26b, 28a, 28b eine
leitende Verbindung dar, wenn auf der entsprechenden Steuerleitung 17a bzw. 17b ein
positiver Spannungsimpuls anliegt, während in dem Fall, in dem an
der Steuerleitung keine Spannung anliegt, die Schalter 26a, 26b, 28a, 28b einen
Leerlauf darstellen, derart, daß die
Registerzelle von dem Bus 13d bzw. 15d abgekoppelt
ist.
-
Die
Busleitungen 13d, 15d sind ferner, wie es in 2 gezeigt
ist, mit einer Initialisierungseinrichtung 30 gekoppelt,
die ausgebildet ist, um dann, wenn ein Initialisierungstakt durch
eine Steuerleitung 32 signalisiert wird, einen Precharge-Betrieb
oder einen Pre-Discharge-Betrieb auszuführen. Dies bedeutet, daß im Precharge-Betrieb
beide Leitungen 13d, 15d auf einen hohen Spannungszustand
gebracht werden. Pre-Discharge-Betrieb heißt, daß beide Leitungen 13d, 15d auf
einen niedrigen Spannungszustand gebracht werden. Der Precharge-Betrieb
bzw. Pre-Discharge findet immer zwischen zwei Datentakten statt,
so daß auf
einen Datentakt ein Initialisierungstakt folgt. Damit wird sichergestellt,
daß unabhängig davon,
ob sich tatsächliche
Datenzustände ändern oder
nicht, immer von einem Takt zum nächsten auf den Busleitungen 13d, 15d genau
eine Änderung
stattfindet, so daß unabhängig von
den über
den Bus 13d, 15d übertragenen Daten dasselbe Stromprofil
erzeugt wird.
-
Dieser
Betrieb ist in der in 3 gezeigten Tabelle
schematisch dargestellt. Aus der in 3 gezeigten
Tabelle ist ferner die One-Hot-Codierung zu sehen, die unter den
Steuerleitungen verwendet wird, wenn ein Datentakt stattfindet.
In dem ersten Takt ist nur die Steuerleitung 1 hoch, was
bedeutet, daß die
Zelle 1 12a von 1 mit dem Bus verbunden ist,
um Daten aus der Zelle zum Logikelement zu bringen oder um Daten
vom Logikelement in die Zelle zu bringen. Die Steuerleitungen 2, 3 und 4 sind
dagegen mit einer Null beaufschlagt, so daß die entsprechenden Speicherzellen 12b, 12c, 12d vom
lokalen Kommunikationsbus abgekoppelt sind. Dann folgt ein Initialisierungstakt,
in dem durch die Initialisierungseinrichtung 30 von 2 beide
Busleitungen, also die Busleitung für das Bit und die Busleitung
für das invertierte
Bit auf denselben Zustand gebracht werden. Dann folgt ein Datentakt,
in dem nunmehr nur der Inhalt der zweiten Registerzelle zum Logikelement
gebracht wird bzw. ein von dem Logikelement bereitgestelltes Datum
in die Registerzelle 2 eingespeist wird, jedoch in keine andere
Zelle. Dann folgt wieder ein Initialisierungstakt etc.
-
Es
sei darauf hingewiesen, daß bei
dem in 1 gezeigten Ausführungsbeispiel von der Steuereinrichtung 20 zu
jeder Zelle eine eigene Leiterbahn ausgeführt ist. Es könnte jedoch
auch nur eine einzige Leitung bereitgestellt werden, die mit jeder Zelle
verbunden ist. In diesem Fall müßte innerhalb einer
Zelle eine Decodierung beispielsweise in Form eines Multiplexers
stattfinden, um das auf der Steuerleitung liegende Signal zu interpretieren,
um herauszufinden, ob eine aktuell betrachtete Registerzelle mit
dem Bus verbunden werden soll oder nicht. Aufgrund der Einfachheit
der Implementierung wird jedoch bevorzugt, für jede Registerzelle eine eigene Steuerleitung
zu haben.
-
Obgleich
in 1 eine Dual-Rail-Ausführung gezeigt ist, bei der
jede Zelle sowohl einen Bit-Anschluß auch als einen Anschluß für das negierte
Bit hat, würde
auch eine Single- Rail-Ausführung möglich sein.
In diesem Fall würden
die Anschlüsse 15a, 15b, 15c, 15d und
die entsprechende Busleitung des Busses 10 nicht vorhanden
sein. Die Dual-Rail-Ausführung kann
jedoch für
die in 2 gezeigten Latches ohne weiteres verwendet werden,
da die Latches aufgrund ihrer Konstruktion bereits sowohl das Datenbit als
auch das negierte Datenbit ohne weiteren schaltungstechnischen Aufwand
liefern.
-
Obgleich
in den 1 und 2 eine Implementierung gezeigt
ist, bei der der lokale Bit-Slice-Kommunikationsbus 10 sowohl
zum Übertragen
von Daten zum Logikelement als auch zum Übertragen von Daten vom Logikelement
gezeigt ist, existieren auch andere Implementierungen, bei denen
ein eigener Bus zum Übertragen
von Daten zum Logikelement und ein eigener Bus zum Übertragen von
Daten vom Logikelement zur Registerzelle vorgesehen sind. In diesem
Fall würde
jede Registerzelle einen zusätzlichen
Ausgang für
das nicht-negierte Bit sowie einen zusätzlichen Ausgang für das negierte
Bit haben, wobei diese beiden zusätzlichen Ausgänge für einen
weiteren Kommunikationsbus vorgesehen sind, um die geforderte Zwei-Wege-Funktionalität auf zwei
verschiedenen Bussen zu implementieren.
-
Obgleich
in den vorstehenden Ausführungen dargelegt
worden ist, daß im
Initialisierungstakt, der durch die Precharge-/Pre-Discharge-Einrichtung 30 in 2 bewirkt
wird, alle Speicherzellen abgeklemmt werden, kann dieses Dual-Rail-Konzept mit Initialisierung
auch auf ein Register-Dual-Rail-Konzept
ohne weiteres erweitert werden. So ist es aus 2 ersichtlich,
daß es
generell nicht möglich
ist, die Speicherzelle 1 z. B. auf beiden Seiten, also auf der linken
Seite 15d und der rechten Seite 13d auf denselben
Zustand zu bringen. Dies liegt daran, daß die beiden Inverter 22a, 22b gegensinnig
verschaltet sind und nur dann einen stabilen möglichen Zustand haben, wenn
links und rechts bezüglich
der Inverter ein unterschiedlicher Zustand ist.
-
Daher
wird bei dem in 2 gezeigten Konzept im Dual-Rail-Betrieb eine Abkopplung
von allen Speicherzellen durchgeführt, so daß das Dual-Rail-Konzept nur
für den
lokalen Bit-Slice-Kommunikationsbus
implementiert wird. Für
einen noch sicheren Betrieb könnte
jedoch auch dann, wenn auf ein Register geschrieben werden soll,
also wenn Daten von dem Logikelement zur Registerzelle zurückübertragen
werden, der Dual-Rail-Betrieb
mit Initialisierung auf eine Registerzelle übertragen werden. Zu diesem
Fall würde
die in 2 gezeigte Registerzelle 1 beispielsweise durch
ein weiteres Paar aus gekoppelten Invertern erweitert werden, die
nebeneinander geschaltet sind.
-
Dieses
im Dual-Rail-Betrieb betreibbare Register ist in 3b schematisch
dargestellt. Es zeichnet sich dadurch aus, daß es gewissermaßen zwei Paare
von gegengekoppelten Invertern, nämlich 22a, 22b und 23a, 23b hat.
Beide Inverter sind über
eine Abschlußeinrichtung
bzw. einen steuerbaren Abschluß 27 verbunden.
Der steuerbare Abschluß 27 ist ausgebildet,
um die rechte Seite des Inverterpaars 22a, 22b von
der linken Seite des Inverterpaars 23a, 23b gewissermaßen zu trennen,
so daß eine
Initialisierung nicht nur auf den Busleitungen 15d, 13d durchgeführt werden
kann, sondern auch in der Registerzelle selbst. Bei der in 3b gezeigten
Schaltung ist es nunmehr möglich,
auch im Initialisierungstakt die beiden Schalter 26a, 26b geöffnet zu
halten, so daß die
linke Seite des Inverterpaars 22a, 22b genauso
wie die rechte Seite des Inverterpaars 23a, 23b auf
denselben Spannungszustand initialisiert werden. Dies ist dann sinnvoll,
wenn vom Logikelement Daten zurück
auf eine Registerzelle geschrieben werden. Damit wird sichergestellt,
daß unabhängig von
den Daten, die auf die Registerzelle geschrieben werden, also unabhängig davon,
ob der Zustand der Registerzelle geändert wird oder nicht, immer eine Änderung
im linken Inverterpaar 22a, 22b oder im rechten
Inverterpaar 23a, 23b auftritt, so daß auch Seitenkanalangriffe
direkt auf das Register selbst erfolglos bleiben werden. Die Abschlußeinrichtung 27 ist
in diesem Fall ausgebildet, um eine Potentialtrennung zwischen den
beiden Inverterpaaren zu erreichen, wobei diese Potentialtrennung
nur dann wichtig ist, wenn die Registerpaare im Precharge- bzw. Pre-Discharge-Betrieb
sind. Falls die Registerzelle aus 3b im
normalen Betrieb ist, kann die Abschlußeinrichtung eine Potentialverbindung
beibehalten, muß dies
aber nicht.
-
- 10
- Kommunikationsbus
- 12a – 12d
- Registerzellen
für den
ersten Operanden
- 13a – 13d
- Ausgang
einer Registerzelle für
ein Bit
- 14a – 14d
- Registerzellen
für den
zweiten Operanden
- 15a – 15d
- Ausgang
einer Registerzelle für
ein invertier
-
- tes
Bit
- 17a – 17d
- jeweilige
Steuerleitung für
eine Registerzelle
- 20
- Steuerungseinrichtung
- 22a,
22b
- Inverterpaar
der erste Registerzelle
- 23a,
23b
- zweites
Inverterpaar für
die Dual-Rail-
-
- Registerzelle
- 24a,
24b
- Inverterpaar
der zweiten Registerzelle
- 26a,
26b
- Eingangs-/Ausgangsschalter
für die erste
-
- Registerzelle
- 27
- steuerbare
Abschlußeinrichtung
- 28a,
28b
- Eingangs-/Ausgangsschalter
für die zweite
-
- Registerzelle
- 30
- Initialisierungseinrichtung
- 32
- Steuerung
für die
Initialisierungseinrichtung
- 40
- Rechenwerksteuerung
- 41a – 41c
- Bit-Slices
- 42
- externer
Bus
- 43
- Operand
mit m mal N Stellen
- 50a
- Registerblock
für den
ersten Operanden
- 50b
- Registerblock
für den
zweiten Operanden
- 50c
- Registerblöcke für weitere
Operanden
- 51
- Logikelement
- 52
- lokaler
Kommunikationsbus
- 52a
- Output-Kommunikationsbus
- 52b
- Input-Kommunikationsbus
- 61a – 61d
- Registerzellen
1 bis m
- 62a – 62d
- Registerzellen
1 bis m