-
Verwandte Anmeldung/Priorität
-
Die vorliegende Anmeldung beansprucht
die Priorität
der provisorischen Anmeldung Nr. 60/288,298, die am 2. Mai 2001
eingereicht worden ist.
-
Hintergrund der Erfindung
-
Die vorliegende Erfindung bezieht
sich auf umkonfigurierbare Logikchips, insbesondere auf umkonfigurierbare
Logikchips, die für
eine umkonfigurierbare Datenverarbeitung verwendet werden.
-
Anwenderprogrammierbare Gate-Arrays
(FPGAs) sind programmierbare Chips, die verschiedene Konfigurationen
implementieren können. Üblicherweise
wird ein Design unter Verwendung von Entwurfswerkzeugen erzeugt,
und ein FPGA wird für
ein spezielles Design konfiguriert. Obwohl sich die Entwürfe ändern können, verwendet
das FPGA üblicherweise
eine einzige Konfiguration aufgrund der im Vergleich zu der Betriebszeit
des Chips relativ langen Zeit, die erforderlich wäre, um eine
Konfiguration zu ändern.
-
Jüngst
wurden umkonfigurierbare Chips geschaffen, die so ausgebildet sind,
daß schnell
Teile eines Algorithmus auf ein umkonfigurierbares Chip geschaltet
werden können.
Die umkonfigurierbaren Chips sind so ausgebildet, daß sie die
umkonfigurierbaren Elemente des Chips derart verwenden, daß Ressourcen
für die Implementierungsabschnitte
eines Algorithmus zur Verfügung
gestellt werden.
-
Es ist erwünscht, ein Datenoperationselement
oder eine umkonfigurierbare Funktionseinheit zur Verwendung in einem
umkonfigurierbaren Chip zur Verfügung
zu haben, das beziehungsweise die ein verbessertes Design implementiert,
um Algorithmen auf einem umkonfigurierbaren Chip effektiver zu implementieren.
-
Zusammenfassende Darstellung der Erfindung
-
Die vorliegende Erfindung betrifft
ein umkonfigurierbares Chip, das mehrere umkonfigurierbare Funktionseinheiten
(wie beispielsweise eine Datenpfadeinheit) enthält, die so ausgebildet sind,
daß sie
verschiedene Funktionen implementieren. Die umkonfigurierbaren Funktionseinheiten
enthalten vorzugsweise Multiplexer, wenigstens eine Schiebeeinheit
und wenigstens eine arithmetisch-logische Einheit (ALU). Die umkonfigurierbaren
Funktionseinheiten werden durch Umkonfigurierbare-Funktionseinheit-Befehle
konfiguriert. Die Befehle steuern die Konfiguration der Multiplexer
und der Schiebeeinheit und der ALU. Das umkonfigurierbare Chip enthält darüber hinaus
Verbindungen, die so ausgebildet sind, daß sie die umkonfigurierbaren
Funktionseinheiten miteinander verbinden. Auf diese weise können Daten
zwischen den umkonfigurierbaren Funktionseinheiten weitergeleitet
werden.
-
Der Umkonfigurierbare-Funktionseinheit-Befehl
enthält
vorzugsweise eine Reihe von Feldern für die Multiplexer, die Schiebeeinheit
und die arithmetisch-logische Einheit. Diese Felder konfigurieren
diese Elemente in der umkonfigurierbaren Funktionseinheit auf eine
gewünschte
Weise.
-
Bei einem bevorzugten Ausführungsbeispiel
gibt es für
jede umkonfigurierbare Funktionseinheit einen zugeordneten Befehlsspeicher.
Der Befehlsspeicher speichert mehrere Befehle für die umkonfigurierbare Funktionseinheit.
Bei einem bevorzugten Ausführungsbeispiel
adressiert die Zustandsmaschine den Befehlsspeicher, um den nächsten in
die umkonfigurierbare Funktionseinheit zu ladenden Befehl zu bestimmen.
Bei einem bevorzugten Ausführungsbeispiel
stellen die umkonfigurierbaren Funktionseinheiten eine Rückkopplung
an die Zustandsmaschine zur Verfügung,
welche anzeigt, wenn eine Funktion beendet ist, und somit, wenn
die nächste
Funktion in die umkonfigurierbare Funktionseinheit geladen werden
kann.
-
Bei einem Ausführungsbeispiel ist die Schiebereinheit
mit einer Reihe verschiedener Modi konfigurierbar. Diese Modi sind
vorzugsweise durch ein Feld des Umkonfigurierbare-Funktionseinheit-Befehls
auswählbar.
-
Bei einem Ausführungsbeispiel sind Verbindungselemente
so ausgebildet, daß sie
selektiv einige der umkonfigurierbaren Funktionseinheiten derart
verbinden, daß Daten
von Wortlänge übertragen
werden. Die übertragenen
Daten weisen vorzugsweise eine feste Datenlänge von 32 Bits oder mehr auf.
Die Übertragung von
Daten fester Länge
gestattet es dem Verbindungssystem, bei einem Verlust einer Flexibilität bei der
Datenübertragung
vereinfacht zu werden. Die Schiebereinheit in der umkonfigurierbaren
Funktionseinheit gestattet es der arithmetisch-logischen Einheit,
an verschiedenen Bits in den Eingabedaten von Wortlänge der
umkonfigurierbaren Funktionseinheit zu wirken, was die feste Struktur
der Verbindungselemente kompensiert. Wenn somit Daten in einem bestimmten
Platz innerhalb eines Worts benötigt
werden, kann der Schieber diesen Bitort an die geeignete Position
zur Manipulation durch die arithmetisch-logische Einheit bewegen.
-
Ein anderes Ausführungsbeispiel der vorliegenden
Erfindung umfaßt
die Verwendung eines Multiplexers mit einer Verzögerungseinheit-Eingabe und
einer Eingabe, die die Verzögerungseinheit
umgeht. Auf diese weise kann die umkonfigurierbare Funktionseinheit
eine variable Verzögerung
implementieren, was die Flexibilität des Systems erhöht.
-
KURZBESCHREIBUN DER ZEICHNUNGSFIGUREN
-
1 ist
eine Übersicht
des umkonfigurierbaren Chips eines Ausführungsbeispiels der vorliegenden Erfindung;
-
2 ist
ein vereinfachtes Schema einer umkonfigurierbaren Funktionseinheit
eines Ausführungsbeispiels
der vorliegenden Erfindung;
-
3 ist
ein Schema einer umkonfigurierbaren Funktionseinheit eines Ausführungsbeispiels
der vorliegenden Erfindung;
-
4 ist
ein Schema einer Multiplizierereinheit, welche bei dem Ausführungsbeispiel
der vorliegenden Erfindung verwendet werden kann;
-
5 ist
ein Schema einer Scheibe (slice) der in 1 gezeigten umkonfigurierbaren Funktionseinheit,
das die Verbindung zwischen den Datenpfadeinheiten veranschaulicht;
-
6 ist
ein Schema, das die Verbindungen zwischen der Datenpfadeinheit und
den horizontalen und vertikalen Busleitungen veranschaulicht;
-
7 ist
ein Schema, das die Verbindung einer Datenpfadeinheit in einer Kachel
(tile) zu einer Datenpfadeinheit mit einer anderen Kachel veranschaulicht;
-
8 ist
ein Schema, das die Verbindung der Datenpfadeinheiten und eines
lokalen Systemspeichers eines Ausführungsbeispiels der vorliegenden
Erfindung veranschaulicht;
-
9 ist
ein Schema, das eine Zustandsmaschine und einen Funktionsblockkonfigurationsspeicher, die
den Befehl der Konfigurationsinformationen für die Funktionsblockdateneinheit
erzeugen, veranschaulicht;
-
10A ist
ein Schema, das die Verbindung einer Zustandsmaschine, eines Konfigurationszustandsspeichers
und einer Datenpfadeinheit gemäß der vorliegenden
Erfindung veranschaulicht und das den Befehl und Befehlsfelder für die Datenpfadeinheit
zeigt;
-
10B ist
ein Schema, das eine Datenpfadeinheit veranschaulicht, die einen
Decodierer für
zumindest einen Teil des Befehls verwendet;
-
11 ist
ein Schema, das den Steuersystemkonfigurationsspeicher bei der Datenpfadeinheit
als einem Ausführungsbeispiel
der vorliegenden Erfindung veranschaulicht;
-
12 ist
ein Schema einer Verbindungslogikeinheit zur Verwendung bei einem
Ausführungsbeispiel der
vorliegenden Erfindung;
-
13A und 13B sind Übersichten, die die Abschnitte
der Befehle für
die ALU veranschaulichen;
-
14 ist
ein Schema, das die Flags für
das System eines Ausführungsbeispiels
der vorliegenden Erfindung veranschaulicht;
-
15 ist
ein Schema, das den Schiebemodus für den Schieber veranschaulicht;
-
16 ist
ein Schema des Befehls eines Ausführungsbeispiels des Schiebers;
-
17 ist
ein Schema, das die Wirkungsweise des Schiebers gemäß 16 veranschaulicht;
-
18 ist
ein Schema eines mehrere Master-Latch-Speicher verwendenden Logiksystems eines
Ausführungsbeispiels
der vorliegenden Erfindung;
-
19 ist
ein Schema, das die Hintergrund- und Vordergrund-Ebene-Latch-Speicher
eines Ausführungsbeispiels
der vorliegenden Erfindung veranschaulicht;
-
20 ist
ein Schema eines Ausführungsbeispiels
einer umkonfigurierbaren Funktionseinheit für einen Datenpfad bei einem
Ausführungsbeispiel
der vorliegenden Erfindung;
-
21 ist
ein Schema der Eingangsmultiplexer für das System gemäß 20;
-
22 ist
ein Schema des Schiebemodus für
den Schieber eines Ausführungsbeispiels
der vorliegenden Erfindung;
-
23 ist
ein Schema, das einige Schiebemodi für den Schieber eines Ausführungsbeispiels
der vorliegenden Erfindung veranschaulicht; und
-
24 ist
ein Schema, das die Implementierung einer Turbo-Nachschlagetabelle
eines Ausführungsbeispiels
der vorliegenden Erfindung veranschaulicht.
-
Detaillierte Beschreibung der Erfindung
-
1 veranschaulicht
ein umkonfiguierbares Chip 20. Das umkonfigurierbare Chip 20 enthält eine zentrale
Verarbeitungseinheit (CPU) 22, vorzugsweise eine CPU eines
reduzierten Befehlssatzes (RISC). Daten aus dem (nicht gezeigtem)
externen Speicher werden unter Verwendung des Speicher-Controllers 24 übertragen.
Ein Bus 26, der Roadrunner-Bus genannt wird, wird verwendet,
um Daten aus dem Speicher-Controller in das umkonfigurierbare Gebilde
(fabric) 28 zu übertragen.
Das umkonfigurierbare Gebilde 28 ist in eine Anzahl von
Scheiben unterteilt. Jede Scheibe (slice) wird in eine Anzahl von
Kacheln (tiles) aufgeteilt. Jede Kachel enthält eine Datenpfadeinheit (umkonfigurierbare
Funktionseinheit), Steuereinheiten und lokale Systemspeichereinheiten.
Die lokalen Systemspeichereinheiten treten mit den Datenpfadeinheiten,
wie sie unten beschrieben werden, in Interaktion. Bei einem bevorzugten
Ausführungsbeispiel
weist jede Kachel darüber
hinaus eine Reihe von Multiplizierereinheiten auf.
-
2 veranschaulicht
ein vereinfachtes Schema einer umkonfigurierbaren Funktionseinheit
eines Ausführungsbeispiels
der vorliegenden Erfindung. Die umkonfigurierbare Funktionseinheit
enthält Eingangsmultiplizierer
30 und 32. Wie unten beschrieben wird,
gestatten es die Eingangsmultiplizierer
der
Datenpfadeinheit, Eingangssignale aus einer Reihe verschiedener
Orte zu empfangen, die in der Nähe
angeordnete Datenpfadeinheiten ebenso wie Datenbusse einschließen. Der
ausgewählte
Ausgang der Eingangsmultiplizierer
wird weiter an die Register 36 und 38 gesendet.
Darüber
hinaus geht das Ausgangssignal des Multiplizierers
32 zur
Schiebeeinheit 34. Wie unten beschrieben wird, gestattet
die Schiebereinheit 34 die Auswahl verschiedener Bits,
an denen die ALU 40 wirken sollen. Da die Verbindungen
zwischen den Datenpfadeinheiten Verbindungen fest vorgegebener Wortlänge verwenden,
um das Verbindungssystem zu vereinfachen, gestattet die Verwendung
einer Schiebereinheit der Datenpfadeinheit den Zugriff auf Bits,
die im Inneren eines Worts gepackt sind.
-
Wie unten beschrieben werden wird,
weist die Schiebereinheit 34 vorzugsweise eine Reihe von
Modi auf, welche mehr als nur logische und arithmetische Verschiebungen
nach links und nach rechts implementieren. Diese verschiedenen Modi
gestatten es dem System; auf eine effizientere Weise betrieben zu
werden. Die arithmetisch-logische Einheit 40, die unten
beschrieben wird, verwendet vorzugsweise ein Feld des Befehls für die Datenpfadeinheit,
um eine Funktion zu implementieren. Die Ausgabe der ALU 40 geht
vorzugsweise an ein Ausgabere- gister 42.
Die Ausgabe kann darüber
hinaus tatsächlich
an einen optionalen Bitschieber 44 gesendet werden, so
daß ein
verschobener wert erzeugt wird.
-
Bei einem Ausführungsbeispiel wird außerdem eine
umgehende (bypassing) ALU-Rückkopplungsausgabe
auf Leitung 46 verwendet. Diese gestattet es, daß Teile
der Datenpfadeinheit arbeiten, während
das Ausgaberegister 42 steuert, welche Ausgaben aus der
Datenpfadeinheit hinaus gesendet werden. Dies ist nützlich,
wenn das Ausgaberegister 42 verwendet wird, um eine lokale
Systemspeichereinheit zu adressieren.
-
Der Bitschieber 44 wird
verwendet, um das lineare Rückkopplungsschieberegister
zu implementieren, wie es in der Patentanmeldung „Modifications
to Reconfigurable Functional Unit in a Reconfigurable Chip to Perform
Linear Feedback Shift Register Function" von Peter Lam, Anwaltsakte Nummer 032001-060, beschrieben
ist.
-
Man beachte, daß die Multiplexer, Schiebereinheit 34 und
ALU 40 vorzugsweise von einem Befehl für die Datenpfadeinheit gesteuert
werden. Dieser Befehl ist vorzugsweise in eine Reihe verschiedener
Felder unterteilt, die Multiplexerinstruktionsfelder für die Multiplexer,
Schiebereinheitfelder für
den Schieber 34 und ein ALU-Instruktionsfeld für die ALU 40 umfassen.
Bei einem Ausführungsbeispiel
wird ein Decodierer für
zumindest einen Teil des Befehls verwendet.
-
3 ist
ein detailliertes Schema eines Ausführungsbeispiels der vorliegenden
Erfindung. Die Eingangsmultiplexer 50 und 52 empfangen
als Eingaben Daten von in der Nähe
befindlichen Einheiten. Bei einem Beispiel werden Datenworte aus
16 Einheiten, die Datenpfadeinheiten und Multiplizierereinheiten
einschließen,
als Eingaben verwendet. Globale vertikale und horizontale Verbindungen
(interconnections) werden verwendet. Bei einem Ausführungsbeispiel
eine Verbindung für
die Rückkopplung
des linearen Rückkopplungsschieberegisters,
eine Konstanten-Eingabe einer logischen Null und eine Eingabe für eine lokale
Systemspeichereinheit. Eine weitere Eingabe ist die Übertragseingabe
aus der vorhergehenden Datenpfadeinheit, welche direkt an die ALU 54 geliefert
wird. Der Multi plexer 50 ist mit dem Schieber 56 verbunden,
der eine Reihe verschiedener Betriebsmodi einschließt. Der
Schieber 56 ist mit einem weiteren Multiplexer 58 verbunden,
so daß das
Ausgangssignal des Multiplexers 50 die Schiebereinheit 56 entweder
vermeiden oder verwenden kann. Die Schiebereinheit 56 kann
darüber
hinaus die A-Eingabe aus dem Eingangsmultiplexer 52 für einige
der Modi verwenden. Die Ausgabe des Multiplexers 58 und
die Ausgabe des Multiplexers 52 können an die Register 60 beziehungsweise 62 gesendet
werden. Die Register 60 und 62 können auch
aus einer Quelle außerhalb
des Chips geladen werden. Diese Logik 64 und 66 gestattet
es, daß die
Registerwerte als Maskenregister für das System dienen. Die Multiplexer 68 und 70 wählen die
Eingaben in die ALU 54 aus. Die Ausgaben an die ALU können an
eine Reihe verschiedener möglicher
Pfade gesendet werden. Man beachte, daß die Datenpfadausgabe aus
dem Multiplexer 72 der Wert aus dem Ausgaberegister 74 oder
der Wert aus dem Multiplexer 76 (welcher der ALU-Wert oder
die aus dem lokalen Systemspeicher gelesenen Daten auf Leitung 78 sein
können)
sein kann. Die Flag-Werte aus der ALU werden an die Multiplexer 80 und 82 gesendet,
welche den gewünschten
Flag-Wert auswählen. Dieser
Flag-Wert kann in den Registern 88 und 90 gespeichert
werden, und der Wert der Register 88 oder 90 wird
an die Multiplexer 92 und 94 gesendet, oder der
ausgewählte Wert
aus den Multiplexern 80 oder 82 wird verwendet.
Der CONF-wert ist ein Feld in dem Befehl, welches anzeigt, welches
Flag auszuwählen
ist.
-
Bei einem Ausführungsbeispiel können die
Register 60, 62 und 74 unter Verwendung
mehrerer Master-Slave-Latch-Speicher
implementiert werden, wie es in 18 gezeigt
ist, um das Laden von Hintergrundkonfigurationsdaten in das Register
zu ermöglichen.
Bei einem Ausführungsbeispiel
kann der Betrieb dieser Register durch das Feld des Umkonfigurierbare-Funktionseinheit-Befehls
gesteuert werden.
-
4 ist
ein Schema einer Multiplizierereinheit. Die Multiplizierereinheit
orientiert sich etwas an der umkonfigurierbaren Funktionseinheit,
die in 3 gezeigt ist. Jedoch
weist die Multiplizierereinheit einen speziellen Mul-tiplizierer anstelle
einer ALU auf.
-
Wie es in 5 gezeigt ist, gibt es bei einem Ausführungsbeispiel
für jeweils
sieben Datenpfadeinheiten oder umkonfigurierbare Funktionseinheiten
in einer Kachel zwei Mul-tiplizierereinheiten.
-
6 veranschaulicht
die Verbindungen benachbarter Datenpfadeinheiten und Multiplizierer
in die Datenpfadeinheitseingänge.
Man beachte, daß gemäß 5 die Datenpfadeinheit 100 Ausgaben
von acht vorhergehenden Datenpfadeinheiten (und Multiplizierern)
darüber
und sieben der nächsten
Datenpfadeinheiten (und Multiplizierer) darunter als Eingaben empfangen
kann. Die Ausgabe der Datenpfadeinheit 100 wird darüber hinaus
zu ihr selbst zurückgekoppelt.
Die Ausgaben beliebiger dieser Einheiten können unter Verwendung der Eingangsmultiplexer
des Systems für
entweder die A- oder die B-Eingänge ausgewählt werden.
-
6 ist
ein Schema, das die Verbindungen der umkonfigurierbaren Funktionseinheiten
(Datenpfadeinheiten) der einen Kachel mit horizontalen und vertikalen
Verbindungsleitungen veranschaulicht. Indem Multiplexer verwendet
werden, können
die Ausgänge
und Eingänge
der Datenpfadeinheiten mit sowohl den vertikalen Routing-Leitungen
als auch den horizontalen Routing-Leitungen verbunden werden.
-
7 veranschaulicht
ein Beispiel des Verbindens einer Datenpfadeinheit in einer Kachel
mit einer Datenpfadeinheit in einer anderen Kachel unter Verwendung
vertikaler Verbindungsleitungen. Man beachte, daß das System der vorliegenden
Erfindung für
die Verbindungen vorzugsweise wort-basierte Verbindungen verwendet.
Bei einem Ausführungsbeispiel
ermöglichen
die Verbindungsleitungen die Verbindung von 32 Bit breiten Daten.
Die Schiebereinheit in der Datenpfadeinheit gestattet die Ausrichtung
der Daten, sobald sie in einer Datenpfadeinheit aus dem Verbindungssystem
empfangen worden sind. Da das System Daten in einem 32-Bit-Wort
sendet, wird die Komplexität
des Verbindungssystems reduziert und vereinfacht, was die Flexibilität der Verbindung
ein wenig verringert.
-
8 veranschaulicht
die Verbindung zwischen den Datenpfadeinheiten und dem lokalen Systemspeicher
(LSM). In einer bevorzugten Umgebung werden abwechselnde Datenpfadeinheiten
verwendet, um die Schreiboperationen und Leseoperationen des lokalen
Systemspeichers zu implementieren. Beispielsweise stellt die Datenpfadeinheit 102 Leseadressen
an den lokalen Systemspeicher 104 zur Verfügung und
empfängt gelesene
Daten aus dem lokalen Systemspeicher 104. Die Datenpfadeinheit 106 stellt
Schreibadressen und Schreibdaten an den lokalen Systemspeicher 104 zur
Verfügung.
Man beachte, daß durch
die Verwendung der Durchlaßgatter,
wie beispielsweise der Durchlaßgatter 106, 108, 110 und 112,
die Datenpfadeinheiten 102 und 106 sich mit anderen
lokalen Systemspeichern, wie beispielsweise dem lokalen Systemspeicher 114,
verbinden können,
und die Datenpfadeinheiten 116 und 118 sich mit
dem lokalen Systemspeicher 104 verbinden können. Bei
einem anderen Ausführungsbeispiel
kann eine Datenpfadeinheit aus einem lokalen Systemspeicher sowohl
lesen als auch in ihn schreiben. Eine der Verwendungen einer Datenpfadeinheit
besteht darin, eine Adresse an einen lokalen Systemspeicher zur
Verfügung
zu stellen, um Daten aus einem lokalen Systemspeicher zu gewinnen,
welche dann auf die horizontalen und vertikalen Verbindungsbusse
gegeben werden können.
Die in 8 gezeigten Verbindungen
sind die direkten Verbindungen zum Lesen und Schreiben von Daten
in bzw. aus dem lokalen Systemspeicher. Bei einer bevorzugten Umgebung
wird der lokale Systemspeicher global ausgelesen und eingeschrieben
unter Verwendung des Speichersteuersystems. Dieses allgemeine Speichersteuersystem
wird zur Konfiguration des Systems und zum Gewinnen der Daten, an
denen die Datenpfadeinheiten Operationen ausführen, verwendet. Man beachte,
daß, wie
oben beschrieben wurde, bei einem bevorzugten Ausführungsbeispiel
die Datenpfadeinheiten Strukturen enthalten, die es ermöglichen,
daß Adressen
und Daten dem lokalen Systemspeicher zur Verfügung gestellt werden, während die
Datenpfadeinheit irgendeine andere Funktion ausführt.
-
9 ist
eine Offenbarung einer Steuergebildeeinheit (controll fabric unit) 132 für die umkonfigurierbare Funktionseinheit 130.
Bei diesem Ausführungsbeispiel
erzeugt die Steuergebildeeinheit 132 eine Steuer- oder
Befehlszeile für
die umkonfigurierbare Funktionseinheit 130. Bei diesem
Ausführungsbeispiel
besteht die Steuergebildeeinheit 132 vorzugsweise aus einer
Zustandsmaschineneinheit 134 und einer Funktionsblockkonfigurationsspeichereinheit 136.
Die Zustandsmaschine 134 erzeugt die Adressen in den Befehlsspeicher 136.
Eine Implementierung der Zustandsmaschine 134 verwendet
eine umkonfigurierbare programmierbare Summe-der-Produkte-Einheit 136.
-
10A veranschaulicht
ein System mit der Zustandsmaschinenkonfigurationseinheit 136,
dem Konfigurationszustandsspeicher 138' und der Datenpfadeinheit 130'. Man beachte,
daß die
Konfiguration aus dem Konfigurationszustandsspeicher 138' als Befehl
für die
Datenpfadeinheit 130' angesehen
werden kann. Der Befehl enthält
vorzugsweise Felder, wie beispielsweise ein ALU-Konfigurationsfeld,
ein Schieberegisterkonfigurationsfeld und ein Multiplexerkonfigurationsfeld.
Bei einem Ausführungsbeispiel
werden einige der Flags aus der Datenpfadeinheit 130' an die Zustandsmaschine 136' gesendet, um
Konfigurationen für
die Datenpfadeinheit umzuschalten, nachdem die Datenpfadeinheit
die Operation an einem Satz von Daten erledigt hat. Die Konfigurationszustandsmaschine 138' kann darüber hinaus
aus einer externen Konfiguration aus einem externen Speicher oder
aus dem Prozessor geladen werden.
-
10B ist
ein Schema, das eine Datenpfadeinheit veranschaulicht, die einen
Decodierer zum Decodieren zumindest eines Teil eines Befehls verwendet.
-
11 zeigt
das Steuersystem einschließlich
der Zustandsmaschinen für
die verschiedenen Konfigurationszustandsspeicher. Die Datenpfadeinheit-Flags
werden an das Steuersystem gewendet, wie es oben beschrieben wurde.
-
12 ist
ein Schema, das ein Beispiel einer arithmetisch-logischen Einheit
veranschaulicht. Diese arithmetisch-logische Einheit enthält eine
Arithmetikeinheit 142, eine parallele Logikeinheit 140 und
eine Flag-Einheit 144. Darüber hinaus ist eine Übertragsauswahleinheit 146 gezeigt.
-
Das ALU-Befehlsfeld aus dem Befehl
wird gesendet, um die Operationen der ALU auszuwählen. Die Arithmetikeinheit 142 verwendet
eine Übertragseingabe.
Bei einem bevorzugten Ausführungsbeispiel
ist dieser Übertragswert
entweder der Übertrag
aus der vorhergehenden Datenpfadeinheit oder das Steuersignal oder
ein Übertrag,
welcher Teil des Befehls ist.
-
13A und 13B veranschaulichen eine
Liste einiger der Befehlscodes (Opcodes), die bei einem Ausführungsbeispiel
einer ALU der umkonfigurierbaren Funktionseinheit gemäß der vorliegenden
Erfindung verwendet werden. Details dieser Opcodes werden im Anhang
I beschrieben, auf den hiermit Bezug genommen wird.
-
14 ist
ein Schema des Flag-Systems für
die vorliegende Erfindung. Die Flag-Einheit befindet sich innerhalb
der Datenpfadeinheit und wird zum Erzeugen der Flags verwendet,
welche zu der Steuereinheit sowie zu der nächsten Datenpfadeinheit laufen.
Die Auswahl der verwendeten Flags... ...
der Steuerung eines
Feldes des Umkonfigurierbar-Funktionseinheit-Befehls und sind von
der vorliegenden Erfindung bevorzugt. Eine Beschreibung einiger
dieser Flags ist unten angegeben.
-
ROXR wird in jedem Zyklus angesteuert.
Es wird ausgewählt
durch conf = 1.
-
-
Abkürzungen
-
- CO – Auslaufender Übertrag
(Carry Out) (der Additions-/Subtraktionsoperation)
- OV – Überlauf
(Overflow) (der Additions-/Subtraktionsoperation)
- EQ – Gleich
(Equal) (A = B)
- GT – Größer als
(Greater Than)
- LT – Weniger
als (Less Than)
- SN – Vorzeichen
(Sign) (Vorzeichenbit des Ergebnisses) Vorhergehendes Flag
- Cin – Übertrag
in vorhergehender Zeile (Carry in previous row)
- Ctrl – Einlaufender Übertrag
aus Steuerung (Carry in from control)
- Max – Ox7fff[ffff]
(für 16/32
Bits)
- Min – Ox8000[0000]
(für 16/32
Bits)
-
15 veranschaulicht
den Schiebemodus und die Betriebsweise einiger der Modi der Schiebeeinheit eines
Ausführungsbeispiels
der vorliegenden Erfindung. Da die Schiebeeinheit eine Reihe verschiedener
Modi aufweist, wird die Flexibilität des Systems gemäß der vorliegenden
Erfindung erhöht.
[0060] 16 und 17 veranschaulichen eine
Implementierung der Schiebeeinheit unter Verwendung mehrerer Zeilen
von Multiplexern. Eine zusätzliche
Logik wird ebenfalls verwendet, um eine spezielle Ausgabe zu erzeugen. 17 veranschaulicht den Betrieb
einiger der Implementierungen des Schieberegisters.
-
Dieser in der Datenpfadeinheit verwendete
Schieber führt
mehr als nur Recht-/Links-Schiebeoperationen aus. Der Schieber enthält ein Array
von Multiplexern, welche über
Mul-tiplexerauswahlsignale
gesteuert werden. Bei einem 4 × 6-Multiplexer-Array-Schieberausführungsbeispiel
wird ein 32-Bit-Operant, welcher in vier Gruppen von acht Signalen
unterteilt wird, mit einer ersten Zeile von vier Multiplexern gekoppelt.
Im Unterschied zur letzten Zeile werden die Ausgangssignale der
Multiplexer in einer vorhergehenden Zeile mit den Eingangssignalen
der nächsten
Zeile von Multiplexern gekoppelt. Jeder Multiplexer in dem Array
wird unabhängig
gesteuert. Die Steuersignale bestimmen, wie die Signale in dem Array
gelenkt werden, und somit die Art der an dem Operanden ausgeführten Operation.
Bei einem Ausführungsbeispiel
umfassen Beispiele von Operationen: logisches 32-Bit-Rechts-/Links-Schieben,
arithmetisches 32-Bit-Recht-/Links-Schieben, unteres 16-Bit-Vorzeichen Erweitern
auf 32 Bit, Konstantenerzeugung, Duplizieren untere 16 Bit in obere
16 Bit, Duplizieren obere 16 Bit in untere 16 Bit, Austauschen untere
und obere 16 Bit, arithmetisches 16-Bit-Rechtsschieben und Byte-Austauschen.
-
18 veranschaulicht
ein System mit mehreren Master-Latch-Speichern, das bei einem Ausführungsbeispiel
des Systems der vorliegenden Erfindung verwendet wird. Bei diesem
Beispiel werden zwei Master-Latch-Speicher verwendet. Einer der
Master-Latch-Speicher wird für
die Hintergrundkonfiguration des Systems verwendet. Der andere Master-Latch-Speicher
empfängt
Daten aus der Pipeline in der Datenpfadeinheit oder aus dem Prozessor.
Die Eingaben in das Latch 150 werden über den Multiplexer 152 zur
Verfügung
gestellt. Das Latch 154 ist mit dem Konfigurationsbus verbunden,
um Daten aus der Hintergrundkonfiguration zu empfangen. Der Multiplexer 156 kann
verwendet werden, um die Eingabe in den Slave-Latch-Speicher 158 auszuwählen. Die
Verwendung eines Hintergrundkonfigurationsspeichers für das System
gestattet den schnellen Betrieb des Systems bei der vorliegenden
Erfindung.
-
Das Speicherelement gemäß 18 weist mehrere Master-Latch-Speicher
auf, welche sich einen einzigen Slave-Latch-Speicher über einen Multiplexer teilen,
was ein Multifunktionsspeicherelement zur Verfügung stellt. Indem darüber hinaus
ein Slave-Latch gemeinsam benutzt wird, werden signifikante Flächeneinsparungen
verwirklicht (etwa 25%). Dies ist insbesondere bei einem System
der Fall, das zahlreiche Speicherelemente verwendet. Das Speicherelement-Design
vertraut auf den Umstand, daß Konfigurationsbits
selten in Speicherelemente geladen werden. Statt einen separaten
Slave-Latch-Speicher für
jeden Master-Latch-Speicher, der mit einem Konfigurationsbitstromsignal
gekoppelt ist, vorzusehen, teilen sich gemäß der Erfindung die mit dem
Konfigurationsbitstromsignal gekoppelten Master-Latch-Speicher ihr
Slave-Latch mit einem anderen Master-Latch. Somit teilen sich zwei
oder mehr Master-Latch-Speicher
einen einzigen Slave-Latch-Speicher. Ein Multiplexer ist zwischen
den Master-Latch-Speichern und dem einzelnen Slave-Latch eingekoppelt, um
auszuwählen,
welches Master-Latch
mit dem Slave-Latch gekoppelt wird.
-
Bei einem Ausführungsbeispiel ist ein Eingang
des Master-Latch-Speichers mit einem Signal gekoppelt, das häufig die
Speicherelementfunktionalität
erfordert, und der Eingang des anderen Master-Latch-Speichers ist
mit einem Signal gekoppelt, das die Speicherelementfunktionalität seltener
erfordert. Bei einem Ausführungsbeispiel
ist das erste Master-Latch mit dem Datenpfadsignal und das zweite
Master-Latch mit dem Konfigurationsbitsignal gekoppelt. Wenn das
Datenpfadsignal zu dem Slave-Latch weitergeleitet wird, funktioniert
das Speicherelement so, daß es
die Datenpfadpipeline in Stufen unterteilt. Wenn das Konfigurationsbitstromsignal
zu dem Slave-Latch
weitergeleitet wird, funktioniert das Speicherelement so, daß es Konfigurationsbits
speichert. Bei einem anderen Ausführungsbeispiel ist ein Master-Latch
mit dem Datenpfadsignal und mehr als ein Master-Latch mit einem
Konfigurationsbitsignal gekoppelt, wobei die Ausgänge sämtlicher
Master-Latch-Speicher
mit dem Multiplexer gekoppelt sind, welcher verwendet wird, um eines
der Signale auszuwählen
und von den Master-Latch-Speichern
an dem gemeinsamen Slave-Latch-Speicher weiterzuleiten.
-
Bei 18:
-
- – Master-Latch-Speicher
werden bei 'RESET' oder 'INIT' zurückgesetzt
- – Slave-Latch-Speicher
werden nur bei 'RESET' zurückgesetzt
- – Multiplexer
A wählt
Konfigurationspfad immer dann aus, wenn Konfiguration aktivierend
ist (ferner qualifiziert durch die spezielle Scheibe, die ausgewählt wird)
- – Multiplexer
B wählt
arc-Bus aus, wenn arc schreibt (ferner qualifiziert durch Decodieren
zugehöriger
arc adress. Siehe ARC ext spec für
Adreßabbildung)
- – Master-Latch-Speicher
sind nur während
Takt niedrig transparent
- – Slave-Latch-Speicher
sind nur während
Takt hoch transparent
- – Master-Latch
0 ist transparent, wenn die latpipe 0 freigegeben oder ein arc-Schreiben
in dieses Register auftritt
- – Master-Latch
1 ist transparent, wenn config-Laden aktiviert ist und entsprechende
config-Adresse decodiert ist
- – Slave-Latch
ist transparent, wenn
1. config aktiviert zu dieser Scheibe
oder
2. arc-Schreiben in dieses Register oder
3. latpipe-Signal
aus Steuerung ist hoch
- – Dieses
Setup ist unter der Annahme, daß Konfiguration
und arc-Schreiben nicht gleichzeitig auftreten. Wenn dies auftritt,
hat die Konfiguration die höhere
Priorität.
-
Ein weiteres Ausführungsbeispiel der vorliegenden
Erfindung betrifft die variablen Verzögerungseinheiten der vorliegenden
Erfindung. Variable Verzögerungseinheiten
bestehen aus einem Multiplexer, welcher eine erste Eingabe, die
an ein Register gesendet wird, und die zweite Eingabe, welche das
Register umgeht, empfängt.
Auf diese Weise kann eine variable Verzögerung implementiert werden.
Bei der umkonfigurierbaren Funktionseinheit gemäß 3 können
das mit dem Multiplexer 68 verbundene Register 60 und
das aus dem Multiplexer 70 verbundene Register 62 und
das mit dem Multiplexer 92 verbundene Register 88,
das mit dem Multiplexer 94 verbundene Register 90 und
das mit dem Multiplexer 72 verbundene Register 74 eine
solche variable Verzögerung
implementieren. Ein Multiplexer kann ein verzögertes oder ein Umgehungssignal
auswählen;
das Verzögerungssignal
geht durch ein Verzögerungselement,
wie beispielsweise ein Flip-Flop.
-
Das flexible adaptive Verzögerungselement
enthält
eine Speichereinrichtung (z. B. ein Flip-Flop, Latch), dessen Eingang
mit einem Eingangssignal und dessen Ausgang mit einem ersten Eingang
eines Multiplexers gekoppelt ist. Der andere Eingang des Multiplexers
ist mit dem Eingangssignal gekoppelt. Im Ergebnis ist der erste
Eingang des Multiplexers mit dem Eingangssignal und ein zweiter
Eingang des Multiplexers mit dem um den von der Speichereinrichtung
zur Verfügung
gestellten Betrag verzögerten
Eingangssignal gekoppelt. Das Auswahlsignal kann dann verwendet
werden, um entweder das verzögerte
Signal oder das unverzögerte
Signal auszuwählen.
-
19 zeigt
eine alternative Ausführungsform
einer Hintergrund-Vordergrund-Ebenen-Anordnung.
-
Die vorliegende Erfindung nimmt durch
Bezugnahme die folgenden früheren
Patentanmeldungen in sich auf: "A
HIGH PERFORMANCE DATA PATH UNIT FOR BEHAVIORAL DATA TRANSMISSION
AND RECEPTION",
Erfinder Hsinshih Wang, Serien Nr. 09/307,072, angemeldet am 7.
Mai 1999 (Anwaltsakte Nr. 032001–014); "CONTROL FABRIC FOR ENABLING DATA PATH
FLOW", Erfinder
Shaila Hanrahan, et al., Serien Nr. 09/401,194, angemeldet am 23.
September 1999 (Anwaltsakte Nr. 032001–016); sowie "CONFIGURATION STATE
MEMORY FOR FUNCTIONAL BLOCKS ON A RECONFIGURABLE CHIP", Erfinder Shaila Hanrahan
und Christopher E. Phillips, Serien Nr. 09/401,312 und angemeldet
am 23. September 1999 (Anwaltsakte Nr. 032001–035).
-
Vermont-Ausführungsbeispiele
-
20 veranschaulicht
ein letztes Ausführungsbeispiel
der umkonfigurierbaren Funktionseinheit oder Datenpfadeinheit. Bei
diesem Ausführungsbeispiel
sind ein zusätzliches
Register und Multiplexer zu dem B-Eingangspfad vor dem Schieber
hinzugefügt.
Zusätzlich
ist der Eingangsmultiplexer geringfügig modifiziert. Der Eingangsmultiplexer
ist unter Bezugnahme auf 21 gezeigt.
-
22 veranschaulicht
die Schieber-Modus-Tabelle für
das neue Ausführungsbeispiel
gemäß 19.
-
23 veranschaulicht
die Implementierung der neuen Modi gemäß 22.
-
24 veranschaulicht
eine Turbo-Nachschlagetabelle zur Verwendung bei dem System gemäß der vorliegenden
Erfindung. Die Turbo-Nachschlagetabelle ist nützlich bei der Addition von
Daten, die in einem logarithmischen Format gespeichert sind. Dies
ist bei vielen Kommunikationssystem nützlich. Bei einem früheren Ausführungsbeispiel
mußten,
um die Multiplikation von im logarithmischen Format gespeicherten
Daten auszuführen,
die Daten in das normale Format durch Ausführen einer exponentiellen Expansion
der Daten konvertiert werden. Die exponentiell expandierten Daten
werden miteinander addiert und dann die kombinierten Informationen
zurück
in das logarithmische Format konvertiert. Bei dem bevorzugten Ausführungsbeispiel wird
die Turbo-Nachschlagetabelle bei der Erzeugung einer Abschätzung der
Addition eines Korrekturfaktors verwendet. Diese Abschätzung verwendet
den Wert des größten Werts
von A und B als erste Abschätzung des
Werts der Addition von A plus B. Der Absolutwert dieser Differenz
von A minus B wird als eine Eingabe in eine Nachschlagetabelle verwendet,
um einen Korrekturfaktor zum Addieren zu dem größten Wert von A oder B zur
Verfügung
zu stellen. Durch Addieren dieses Korrekturfaktors zu dem größten Wert
von A oder B wird eine relativ genaue Abschätzung erzeugt. Man beachte,
daß die
Nachschlagetabelle nicht dieselbe Anzahl von Eingangsbits von A
zu haben braucht. Bei einem bevorzugten Ausführungsbeispiel werden nur wenige
Bits der Genauigkeit verwendet. Wenn der Betrag von A minus B relativ
groß ist,
unterscheidet sich der kombinierte Wert nicht signifikant von dem
größten Wert
von A oder B. Beispielsweise ist die Summe von 1.000.000 und 0,1
etwa 1.000.000. Die Summe von 1.000.000 und 1.000.000 ist im Endeffekt
das Doppelte des Maximalwerts.
-
Die Anhänge II und III veranschaulichen
das Vermont-Ausführungsbeispiel
der umkonfigurierbaren Funktionseinheiten näher.
-
Für
Fachleute ist es klar, daß die
Erfindung in anderen speziellen Formen implementiert werden kann, ohne
vom Geist oder deren Charakter abzuweichen. Die hier offenbarten
Ausführungsbeispiele
sind dementsprechend in einem veranschaulichenden und keinem einschränkenden
Sinne zu verstehen. Der Umfang der Erfindung wird durch die beigefügten Ansprüche nicht
durch die vorstehende Beschreibung veranschaulicht, und sämtliche Änderungen,
die innerhalb der Bedeutung und der Reichweite der ihrer Äquivalente
liegen, sollen hier eingeschlossen sein.
-
Anhang I
-
1.9 Befehlscode-Details
-
-
-
-
-
-
-
-
Anhang II
-
1.10 DPU-Schnittstellensignale (32-Bit-DPU)
-
-
-
1.11 DPU-Funktionen – Nach dem Schieber/Maske
-
-
CS2212 ALU-Befehlscode-Additionen
-
Die folgenden Befehlscodes werden
zu dem CS2212 hinzugefügt:
-
CS2212 Multiplizierer-Ausgabe-Mux-Spezifikation
-
Der Ausgangs-Mux für den Multiplizierer ändert sich
für den
CS2212, um es den A- oder B-Operanden zu ermöglichen, bei dem O-Register
latch-gespeichert zu werden. Dies umgeht im Endeffekt die Multiplikationsoperation.
Dies erfordert die Addition eines Bits zu dem "muxmultlsmsel"-Feld in dem MULT CSM. Das Signal "muxmultlsmsel" wählt den
Eingang in das O-Register auf folgende Weise aus:
-
Diese Funktionalität gestattet
es dem Benutzer, den Multiplizierer als dynamisch konfigurierbare
Routing-Ressource zu benutzen, wenn er nicht für seine primäre Funktion
verwendet wird.
-
CS2212 Pipeline-Registerspezifikation
-
Der CS2212 weist Register auf, die
verwendet werden können
entweder als Maskenregister oder Pipeline-Register. Um es dem Benutzer
zu ermöglichen,
Pipelineregister in den A- und B-Operandenpfaden zu verwenden und
die Maskenregister zu verwenden, enthält der CS2212 zusätzliche
Register. Diese Register werden eingefügt nach dem A- und B-Eingang
und werden als "apipe" und "bpipe" bezeichnet. Diese
Register können
durch die Signale "muxapipe" bzw. "muxbpipe" umgangen werden.
Man nehme Bezug auf das Blockschaltbild der DPU CS2212 bezüglich der
Anordnung dieser Register und Multiplexer. Die Multiplexer werden auf
folgende Weise ausgewählt:
-
CS2212 LSM-Schreib-Daten-Mux-Spezifikation
-
Der CS2212 ist in der Lage, in den
LSM mit der Schieber-Ausgabe sowie mit der ALU-Ausgabe zu schreiben. Um diese hinzugefügte Funktionalität zu erleichtern,
wird ein Multiplexer zu dem LSM-Schreib-Datenpfad hinzugefügt. Dieser
Multiplexer wird als "muxlsmwd" bezeichnet und wird
durch "muxlsmwdsel" auf folgende Weise
ausgewählt:
-
Siehe das CS2212-Blockschaltbild
für die
Anordnung von "muxlsmwd".
-
2.1 Allgemeine Beschreibung
-
Das Gebilde (fabric) ist umkonfigurierbar
und wird durch Konfig.-Bits kontrolliert. Die Konfig.-Bits werden
in das Gebilde durch die Ausgabe von arc-Befehlen (über Lade-Speichere)
geladen, und dann überträgt der Konfigurations-Controller
die Konfig.-Bits in die Konfigurationsebene des Gebildes.
-
Die folgende Tabelle soll Software-Informationen
darüber
zur Verfügung
stellen, welcher Adresse in dem Adreßraum jedes Konfig.-Signal
entspricht. Bis hier wurde die Basisadresse der Konfiguration noch
nicht bestimmt, und somit startet die folgende Adresse bei 0.
-
2.2 Details
-
- – Die
oberen 16 Bits sind die eingebettete Adresse
- – Das
oberste Bit (Bit[127]) ist das Paritätsbit. Die Hardware überprüft hinsichtlich
einer geraden Parität
in jeder Zeile von 128 Bits. Bezüglich
des Verhaltens der Parität
siehe ARC-Erweiterungs-Spezifikation von Dani.
- – Die
Adresse unten ist relativ in Bezug auf irgendeine Basisadresse (base_address)
- – Jede
128-Bit-Zeile trägt
112 Bits Konfig.-Daten
- – Während des
Konfig.-Ladens kann die Hardware höchstens 112 Bit Zeile in jedem
Zyklus speichern
- – Die
Zeilen, welche für
eine bestimmte Konfiguration nicht benötigt werden, können übersprungen
werden.
- – Die
Scheibenadresse ist nicht in der aktuellen Adreßabbildung eingebettet und
wird jetzt aus der aktuellen Abbildung gelöscht. Ein Benutrer sollte in
der arc-Erweiterungs-Spezifikation nachsehen, um zu sehen, wie mehrere
Scheiben in einer Operation zu konfigurieren sind.
-
2.3. Adress-Abbildung
-
-
-
-
-
-
-
-
Die PLA_in_sel sind 64-zu-1-Mux-Auswahl.
Es gibt 16 von ihnen für
jede PLA (jedes Bit wird individuell gesteuert).
-
-
Zusammenfassung
-
Ein umkonfigurierbares Chip (20)
wird gelehrt, welches umkonfigurierbare Funktionseinheiten, die
ein Schieberegister, eine arithmetische Logik und Multiplexer einschließen, aufweist.
Die Datenpfade sind mit weiteren Datenpfadeinheiten verbunden. Eine
Verbindung wird zur Verfügung
gestellt, indem Daten von Wortlänge übertragen
werden. Die Schieber ermöglichen
es bei den Daten von Wortlänge,
dass diese zur Verwendung in der arithmetisch-logischen Einheit
eingestellt werden. Die umkonfigurierbaren Funktionseinheiten werden durch
Umkonfigurierbare-Funktionseinheit-Befehle gesteuert. Die Umkonfigurierbare-Einheit-Befehle
sind in einem Umkonfigurierbare-Funktionseinheit-Befehlsspeicher
gespeichert, welcher von einer Zustandsmaschine auf dem Chip adressiert
wird.
-
(1)