-
Die
Erfindung bezieht sich auf eine Einrichtung der programmierbaren
Logik mit mehreren Logikblöcken
mit konfigurierbaren Eigenschaften, die jeweils mindestens eine
logische Verarbeitungseinheit mit Funktionsprogrammen und Schnittstellen
zu den jeweils anderen Logikblöcken
umfassen, mit mindestens einer den Logikblöcken zugeordneten Eingabe-
und Ausgabeeinheit sowie mit Mitteln zum Verknüpfen der Logikblöcke untereinander,
mit der mindestens einen Verarbeitungseinheit eines anderen Logikblocks
und mit der mindestens einen Ein-/Ausgabeeinheit. Eine derartige
Logikeinrichtung ist der
US
4,870,302 A zu entnehmen.
-
Programmierbare
logische Bausteine von herkömmlichen
Logikeinrichtungen wie insbesondere Prozessoren führen Programme
aus, die aus einem Speicher geladen werden. Die auszuführende Software
in Form von Befehlswörtern
ist dort als Maschinenbefehl abgelegt. Diese Befehlswörter werden geladen,
analysiert, interpretiert und in einer Verarbeitungseinheit ausgeführt. Dabei
löst die
Verarbeitung eines einzigen Befehlswortes eine Vielzahl von Einzelaktionen
in der Logikeinrichtung aus.
-
Die
Basisstruktur und -organisation bekannter digitaler Logikeinrichtungen,
insbesondere von Computern mit Mikroprozessoren, beruht auf der Konzeption
des sogenannten „Von-Neumann-Rechners". Dessen Zentraleinheit
CPU („Central
Processing Unit"),
d. h. dessen Computerkern, umfasst in ihrer Minimalkonfiguration
als Hauptbestandteile einen Hauptspeicher, eine Steuereinheit und
eine Verarbeitungseinheit (bzw. Rechenwerk):
- – Der Hauptspeicher
speichert Befehlswörter (Programmdaten)
und Verarbeitungsdaten (Operantenwörter) und stellt diese auf
Aufforderung zur Verfügung.
Ferner nimmt der Haupt speicher Zwischen- und Endresultate der Verarbeitung
auf. Hauptspeicher können
durch flüchtige
oder nicht-flüchtige
Speicher realisiert werden.
- – Die
Steuereinheit organisiert die Reihenfolge, in der Befehlswörter abgearbeitet
werden. Sie fordert Befehlswörter
aus dem Hauptspeicher an und veranlasst deren Ausführung in
der Verarbeitungseinheit. Außerdem
analysiert sie die Befehlswörter
und veranlasst die Lieferung von Verarbeitungsdaten an die Verarbeitungseinheit.
- – Die
Verarbeitungseinheit führt
die Operation an den Verarbeitungsdaten aus und liefert entsprechende
Resultatwörter
an den Hauptspeicher. Für jede
Operation enthält
die Verarbeitungseinheit ein Mikroprogramm, das die benötigten Übertragungswege
freischaltet. Die Verarbeitungseinheit wird durch die Steuereinheit
auf die jeweilige Operationsart, d. h. auf den abzuarbeitenden Befehl, eingestellt.
Der Zentraleinheit sind Peripheriegeräte zugeordnet, bei denen es
sich um externe Speicher sowie um Ein- und Ausgabegeräte handeln
kann. Die angegebenen Hauptkomponenten der Zentraleinheit können physikalisch
getrennt sein; zumeist sind sie jedoch auf einem gemeinsamen Prozessorchip
mit einem Cache oder beispielsweise einem embedded ROM realisiert.
-
Eine
genauere Betrachtung der Programmierung einer solchen programmierbaren
Logikeinrichtung PLD („Programmable
Logic Device") mit
den erwähnten
Grundkomponenten des Von-Neumann Rechners zeigt, dass das Programm
sowie die Initialisierungsdaten im preiswerten Speicher (mit minimal 1
Transistor pro Speicherzelle) untergebracht sind und erst dann in
die CPU zur Ausführung
gelangen, wenn sie an der Reihe sind. Die preiswerte Speicherung
einerseits und die „Wiederverwendung" der aufwendigeren
CPU-Schaltkreise wie ALU („Arithmetic Logic
Unit") für alle möglichen
Instruktionen andererseits sind die positiven Beiträge zu einer
sogenannten „funktionalen
Dichte" der Prozessor-basierten Rechner.
Hierbei ergibt die zeitliche Sequenz der Bearbeitung natürlich einen
negativen Beitrag.
-
Die
funktionale Dichte kann dabei als mittlere Anzahl von aktiven Gatteräquivalenten
pro Siliziumfläche
und Zeit definiert werden.
-
Bei
bekannten programmierbaren Logikeinrichtungen (PLDs) mit Rechenkapazität, Speicher und
Ein- und Ausgabeeinheit I/O („Input/Output"), wie sie z. B.
aus der eingangs genannten US-A-Schrift
zu entnehmen ist, wird deren Struktur einmal programmiert, und der
Programm-(wie Daten-)Inhalt wird an der Struktur selbst gespeichert.
Diese Form der Speicherung ist aufwendig, denn um den Speicher selbst müssen zwecks
schneller Umsetzung in geschaltete Datenpfade eine Menge von zusätzlichen
Transistoren hinzukommen. Es existieren zwar nur wenige Angaben über die
Ausnutzung des Siliziums; man sollte von Faktoren 20 bis 40 im Verhältnis Gesamtzahl/sichtbarer
Transistorkapazität
(im Sinne der Schaltfunktion) ausgehen. Bei der bekannten Ausführungsform
einer Logikeinrichtung bezieht sich die Verknüpfung ihrer Logikblöcke erstens
auf die Kopplung von Datenausgängen
auf Dateneingänge
(Routing-Verknüpfung)
und zweitens auf die Verarbeitung der Eingangsdaten zu den Ausgangsdaten
in den einzelnen Logikblöcken
(Logik-Verknüpfung).
Die Routing-Verknüpfung
gilt sowohl für
Daten, die aus Logikblöcken
(Logic Elements) stammen bzw. in diese geführt werden, als auch für solche,
die aus I/O-Pads stammen bzw. in diese geleitet werden. Es ist ausschließlich an
eine Datenkopplung in diesem System gedacht.
-
Aus
der
US 6,333,641 B1 geht
eine programmierbare Logikeinrichtung mit einem Array von Logikmodulen
oder -blöcken
hervor. Eine Verbindungseinheit mit vertikalen Routing(Leitweg-)Bahnen,
horizontalen Routing-Bahnen und lokalen Routing-Bahnen verknüpft die Logikblöcke. Ein
Omni-(universeller)Bus (Datenaustauschsammelschiene) ist über das
Array gelegt, der mit dem Array derart verknüpft ist, dass dieser dynamisch
selbständige
Sub-Arrays der Logikblöcke
mit variabler Größe bildet,
die ihrerseits mit dem Omni-Bus verbunden sind. Die Verknüpfung ist
dabei von vornherein festgelegt. Auch hier handelt es sich wie im
Fall der
US 4,870,302
A um Datenverbindungen, d. h. um einen Austausch von Daten.
-
Da
die Programmierbarkeit in Form eines Speichers mit Umsetzung in
geschaltete Datenpfade recht teuer ist, wie im Fall des Rechners
aber bislang das komplette Programm im Baustein lagert, erreichen
die PLDs trotz Potenzials für
hohe funktionale Dichte „nur" den Faktor 10 mehr
als Prozessoren. Das bedeutet, dass der Geschwindigkeitsgewinn in PLDs
gegenüber
Prozessorlösungen
teuer erkauft ist.
-
Aufgabe
der vorliegenden Erfindung ist es deshalb, die programmierbare Logikeinrichtung
mit den eingangs genannten Merkmalen dahingehend auszugestalten,
dass bei hoher funktioneller Dichte eine hohe Geschwindigkeit des
PLDs mit einfachen Mitteln zu erreichen ist.
-
Diese
Aufgabe wird erfindungsgemäß mit den
in Anspruch 1 angegebenen Maßnahmen
gelöst. Diese
Maßnahmen
umfassen eine Rekonfigurierbarkeit der Logikblöcke während des gesamten Betriebs der
Logikeinrichtung dadurch, dass die Verknüpfungsmittel zusätzlich wenigstens
einen konfigurierbaren Umschalt-Logikblock
aufweisen, mit dem eine Konfiguration wenigstens einiger der rekonfigurierbaren
Logikblöcke
selbst und/oder ihrer Verbindungen untereinander und/oder ihrer
Verbindungen mit der Verarbeitungseinheit und/oder ihrer Verbindungen mit
der Ein-/Ausgabeeinheit erfolgt, wobei der Umschalt-Logikblock in
einer Ebene ausgebildet ist, die von einer Ebene mit den rekonfigurierbaren
Logikblöcken
verschieden ist. Unter einer verschiedenen Ebene des Umschalt-Logikblocks
wird dabei jede Ebene verstanden, die nicht gleichzeitig die Ebene der
rekonfigurierbaren Logikblöcke
ist. D. h., die Ebene des Umschalt-Logikblocks kann über, neben
oder unter der Ebene der rekonfigurierbaren Logikblöcke liegen.
-
Die
mit einer solchen Architektur verbundenen Vorteile sind insbesondere
darin zu sehen, dass bei begrenzter Anzahl von nunmehr rekonfigurierbaren
Logikblöcken
neben einer Konfiguration der Blöcke
selbst auch die Verbindungen zwischen diesen Blöcken und/oder zu externen Bausteinen
wie Speichereinheiten oder Mikroprozessoren wie z. B. zu der Verarbeitungseinheit
und/oder zu der Ein-/Ausgabeeinheit nicht ein für alle Male fest vorgegeben
sind, sondern dass diese Verbindungen mit Hilfe des zusätzlich vorgesehenen
Umschalt-Logikblocks während
des gesamten Betriebs bedarfsmäßig erstellt,
d. h. konfiguriert werden können.
Eine derartige Konfiguration mittels des Umschalt-Logikblocks kann
als eine Verknüpfungsoperation
der erfindungsgemäß ausgestalteten
Verknüpfungsmittel
angesehen werden.
-
Die
Konfiguration kann dabei jederzeit, d. h. während der gesamten, ununterbrochenen
Betriebsdauer – also
nicht nur während
einer Start- oder Boot-Phase – vorgenommen
werden. Die erfindungsgemäßen Maßnahmen
bedeuten also eine Verbindung von dem Umschalt-Logikblock zu Verknüpfungsbereichen
und damit zu einer entsprechenden Konfiguration derselben. Damit
wird es ermöglicht, dass
von einzelnen Blöcken
unterschiedliche Funktionen zu unterschiedlichen Zeitpunkten auszuführen sind;
d. h., deren Ausnutzung wird entsprechend erhöht. Damit verbunden ist eine
entsprechende Performance-Verbesserung der gesamten Logikeinrichtung,
verglichen mit einem Mikroprozessor, bzw. kein Performance-Verlust
im Vergleich zu herkömmlichen PLDs.
-
PLDs
erhalten – wie
von-Neumann-Prozessoren – zwei
Arten von Informationen, Code und Daten. Der Code, der grundsätzlich die
Aktionsweise bestimmt und bei PLDs Konfiguration bzw. Konfigurationscode
genannt wird, wird üblicherweise
vor dem eigentlichen Betrieb geladen und ist dann während des
Betriebs unveränderlich.
Die Konfiguration bestimmt u. a. die im Baustein aktiven Verbindungen.
-
Die
Daten können
sich während
des Betriebs verändern
und da- durch auch den aktuellen Verlauf der Operationen beeinflus sen.
Während
also der Code alle möglichen
Wege beinhaltet, wird die tatsächliche
Nutzung – dies
entspricht dem aktuell durchlaufenden Pfad – (auch) von den Daten bestimmt.
-
Der
Umschalt-Logikblock nach der Erfindung erhält ebenfalls Code und Daten.
Das Wesentliche der Erfindung besteht nun darin, die übrigen, Nicht-Umschalt-PLDs,
zu steuern, und zwar durch Wechseln bzw. Modifizieren des Codes.
-
Bei
dem genannten Stand der Technik sowie bei den in der Praxis üblichen
PLDs werden konfigurierbare Blöcke
dadurch miteinander verbunden, dass die (Laufzeit-variablen) Daten
austauschbar sind, also etwa in der Form, dass Datenausgänge des
einen Blocks mit Dateneingängen
des anderen verbunden sind. Bei dem erfindungsgemäßen Umschalt-Logikblock
ist es jedoch so, dass die Ausgänge
dieses Logikblocks zumindest partiell an den in anderen Ausführungsformen
im Betrieb unzugänglichen
Codebereich der konfigurierbaren Logikblöcke angeschlossen sind. Demgegenüber bezieht
sich der Stand der Technik auf Ausführungsformen, bei denen die
konfigurierbaren Logikblöcke
im Datenpfad koppeln, nicht jedoch auf den Code Einfluss haben.
-
Vorteilhafte
Ausgestaltungen der erfindungsgemäßen Logikeinrichtung gehen
aus den abhängigen
Ansprüchen
hervor.
-
So
kann insbesondere die Konfiguration wenigstens einiger der rekonfigurierbaren
Logikblöcke einem
vorgegebenen Kontext entsprechend erfolgen.
-
Ferner
kann vorteilhaft der Umschalt-Logikblock wenigstens einen Zustandsspeicher
aufweisen, der Informationen bezüglich
der Funktionen der einzelnen rekonfigurierbaren Logikblöcke enthält, so dass
die Konfiguration der ausgewählten
rekonfigurierbaren Logikblöcke
gemäß den Funktionsinformationen
des aktuellen Zustands erfolgt.
-
Die
den erfindungsgemäßen Maßnahmen
zu Grunde liegenden Überlegungen
werden nachfolgend unter Bezugnahme auf die Zeichnung noch weiter
erläutert.
Dabei zeigen
-
deren 1 die Grundstrukturen von vier einfachen,
bekannten Automatentypen,
-
deren 2 die
Grundstruktur einer sogenannten „Sequential Finite State Machine",
-
deren 3 den
schematischen Aufbau einer partiell rekonfigurierbaren PLD und
-
deren 4 den
schematischen Aufbau einer erfindungsgemäßen Logikeinrichtung.
-
Im
Folgenden werden aus den Maschinen vom sogenannten „Finite
State"-Typ die sogenannten „Sequential
Finite State Machines" (SFSM)
abgeleitet. Das hierfür
aufgezeigte Modell ist dazu geeignet, eine Sequenz von Konfigurationen
im PLD zu definieren, und genau diese Sequenz kann ohne Performance-Verlust
eine wesentlich höhere
funktionale Dichte (gleichbedeutend mit drastisch gesenkten Kosten
für Herstellung
und Betrieb) eines PLDs erzeugen.
-
Abschnitt I („Sequential Finite State Machines")
-
Eines
der „klassischen" Denkmodelle für eine Hardwareentwicklung
besteht in den einfachen endlichen Automaten, im Folgenden „Finite
State Machines” (FSM)
genannt.
-
Dieses
eng mit theoretischen Konzepten (insbesondere des sogenannten „Deterministischen endlichen
Automaten") verwandte
Modell ist exakt wie folgt definiert:
-
Definition 1:
-
- Eine FSM besteht aus einem 6-Tupel {A, X, Y, f, g, a0}. A = {a0, a1, ... aM} ist hierbei
die endliche Menge der Zustände,
wobei a0 den Startzustand bedeutet.
- X = {X1, .. XK}
ist die endliche Menge der Eingangsvektoren mit XI =
(x1, .. xL)i, wobei x1 ϵ {0,
1, –}.
- Y = {Y1, .. YN}
ist die endliche Menge der Ausgangsvektoren mit YJ =
(y1 .. yH)j, wobei yh ϵ {0,
1, –}.
- f: A × X → A heißt Transitionsfunktion
(Next State Decoder),
- g: A × X → Y heißt Ausgangsfunktion
(Output Decoder),
- t = Zeiteinheit.
-
Die
in dieser Definition genannten Funktionen werden durch Schaltnetze
realisiert, die den algorithmischen Zusammenhang zwischen den (im Wesentlichen
binären)
Eingangs- und Zustandsvektoren darstellen. Hierzu ist allerdings
notwendig, dass auch die Zustände
binär codiert
werden, was in Definition 1 noch nicht der Fall war.
-
Für die Zustandsautomaten
werden weiterhin drei wesentliche Untertypen (siehe 1)
unterschieden, deren Einfluss auf die Komplexität der Funktionen in der Praxis
gegeben ist. Ein Entwickler wird folgende Schritte durchführen:
- 1. Festlegen der Signale: Das Schaltwerk wird
als „Black
Box" mit den erforderlichen
Eingangs- und Ausgangssignalen skizziert.
- 2. Entwerfen des Zustandsdiagramms: Dieser Schritt ist der eigentliche
Kern der Synthese, da hier das zu lösende Problem formal beschrieben wird.
Als Zustandsdiagramm sind Zustandsgraphen, Programmablaufpläne oder
auch Schaltwerktabellen möglich.
- 3. Aufstellen der Schaltwerktabelle als formaler Ausgangspunkt
für alle
weiteren Operationen.
- 4. Zustandsminimierung: Die Minimierung der Anzahl der Zustände soll
eine Vereinfachung des Designs erreichen.
- 5. Zustandscodierung: Bei synchronen Schaltwerken mit synchronisierten
Eingängen
(nicht für
Mealy-Automat gemäß 1d)
lassen sich beliebige Codierungen für die Zustände aus Z angeben. Beim Medwedjew-Automat
gemäß 1b müssen die
Codierungen allerdings mit den gewünschten Ausgangssignalen übereinstimmen; beim
Moore-Automat gemäß 1c hingegen können die
Codierungen so gewählt
werden, dass sich vereinfachte Schaltnetze für Next State Decoder (f) und
Output Decoder (g) ergeben.
- 6. Berechnung von Folgezustands- und Ausgangsschaltnetzen: Zur
konkreten Berechnung des Folgezustandsschaltnetzes muss ein Register-
bzw. Flipfloptyp gewählt
werden, da deren Eingänge
(T, D, RS oder JK) durch dieses Schaltnetz belegt werden, aber unterschiedliche
Funktionalitäten
zeigen.
- 7. Realisierung des Schaltwerks und Test
-
Aus
der Praxis weiß man
nun, dass die Implementierung als einfache Maschine – man könnte sie
auch als „flache
Maschine" bezeichnen – nicht
unbedingt die beste ist. Ein kooperierender Automat, bestehend aus
mehreren einfachen Automaten, die miteinander gekoppelt sind, kann
dies häufig
wesentlich besser im Sinne von flächeneffizienter. Zudem sollte
bedacht werden, dass der vorstehend skizzierte Designfluss nicht
unbedingt in der angegebenen Weise durchgeführt werden muss. Gerade mit
zunehmender Beschreibung in Hochsprachen wie VHDL ist eine Hinwendung
zu mehr algorithmischem Stil zu erkennen.
-
Unabhängig davon
soll jedoch die FSM als das grundlegende Modell angenommen werden. Man
kann sich nun vorstellen, nicht nur eine FSM zu haben, sondern mehrere,
von denen exakt eine zu einem Zeitpunkt aktiv ist. Ein ausgezeichneter
Teil (der sogenannte „Sequencer") schaltet dann in
Abhängigkeit
von Eingangssignalen oder erreichten Resultaten zwischen den einzelnen
FSMs um.
-
Ausgehend
von dieser FSM wird nachfolgend die Sequential Finite State Machine
(SFSM) korrekt definiert und dargestellt:
-
Definition 2:
-
Eine
Sequential Finite State Machine (SFSM) besteht aus einem 5-Tupel
(B, B0, C, V, h). Hierbei stellt B = (B0, ... BK} eine endliche
Menge von Finite State Machines (FSM) dar, B0 ist
die Start-FSM. C = {C0, ... CK}
beschreibt eine endliche Menge von Zuständen zur Kenntlichmachung der
aktuellen FSM. V = {V1, .. VN}
ist die endliche Menge der (zusätzlichen)
Eingangsvektoren mit VI = (vl,
... vL)i, wobei
vl ϵ (0, 1, –). h: B × V → B heißt FSM-Transitionsfunktion
(hext FSM Decoder).
-
Der
wesentliche Vorteil dieser SFSM (vgl. hierzu auch 2)
liegt erst einmal in der Modellierung. Ein Designer hat die Chance,
sein Design in kleinere Portionen zu teilen. In der technischen
Ausführung
wird man dann versuchen, die (weiterhin endliche) Menge der Zustände aus
allen FSMs Bk auf eine einheitliche Zustandscodierung
abzubilden. Zusätzlich
hierzu muss eine Codierung für
die Ck der aktuellen FSM Bk mitgeführt werden,
um für
die Funktion h die Berechnung der nächsten FSM zu ermöglichen.
-
Andererseits
zeigt ein Blick auf 2, dass eigentlich nur wenig
gewonnen ist. Falls der Takt für alle
Register identisch ist, dann wurden in 1a die Register
und das Schaltnetz f(u*, x*) (Next State Decoder), * bedeutet Gesamtmenge)
in Teilmengen von Registern mit f(u, x, c) und h(u, v, c) eingeteilt,
die in der Realisierung wieder zusammengeführt werden. Minimaler wird
die Lösung
dadurch kaum, denn in einem PLD heutiger Bauart müssen alle
Teile, also alle Teil-FSM, auf dem Baustein integriert werden. Hier setzen
nun die erfindungsgemäßen Überlegungen an.
-
Es
existieren zwar wenige FPGAs („Field-Programmable
Gate Arrays"; vgl.
z. B. „Spektrum
der Wissenschaft",
August 1997, Seiten 44 bis 49), die dynamisch rekonfigurierbar sind,
jedoch nur partiell. Diese rekonfigurierbare Eigenschaft könnte man
ausnutzen, indem in einem permanenten Teil h(u, v, c) und die Register
zur FSM-Codierung sowie im nachladbaren Teil die aktuelle FSM geladen
und ausgeführt
werden. Das Problem hierbei ist der Performanceverlust beim Nachladen.
Dies ist aus dem nachfolgenden Beispiel ersichtlich:
-
Beispiel
-
Die
gern genommene Straßenverkehrsampel
als Beispiel für
eine Finite State Machine kann auch sehr gut als Beispiel für eine Sequential
FSM genommen werden, wenn man an einen Nachtmodus denkt. Das Wort
Modus zeigt schon den Weg: Im Umschalten zwischen einzelnen FSMs
sollte so etwas wie ein Moduswechsel liegen, und Tag- und Nachtmodus
schließen
sich nun einmal gegenseitig aus.
-
FSM1
integriert nun die Tagampel, FSM2 die Nachtampel (z. B. gelbes Blinken
für die
Nebenstraßen),
und im übergeordneten
Sequencer wird an Hand eines Zeitsignals entschieden, welche FSM
zur Ausführung
kommt und welche ruht. Der Sequencer wird als FSMO implementiert.
-
Die
Beschreibung für
hierfür
erforderliche drei FSM (0 .. 2) wird getrennt durchgeführt, dann aber
auf einem PLD integriert, so dass im Bereich 0 die FSM0, 1 FSM1
und 2 FSM2 liegen würde.
Ein Flächengewinn
wäre damit
nicht zu verzeichnen.
-
Im
nachladbaren Fall müsste
FSMO permanent zur Verfügung
stehen, außerdem
ein Bereich, der das Maximum von {FSM1, FSM2} aufnehmen könnte. In
diesen Bereich wäre
dann ständig
eine von zweien geladen, und das Umschalten würde eine Rekonfiguration nach
sich ziehen.
-
Zur
Verdeutlichung des Vorteils bei dynamisch rekonfigurierbaren PLDs,
wie sie Logikeinrichtungen nach der Erfindung darstellen, wird die Übergangsfunktion
f(u, x, c) (vgl. 2) nunmehr als fc(u, x)
(Äquivalentes
gilt für
Funktion g) bezeichnet. Mit dieser Darstellung soll die Unterschiedlichkeit
in der Abhängigkeit
demonstriert werden: u und x bewirken eine ständige, mit dem Takt verbundene
Fortentwicklung des Zustands der Maschine, während c die Abhängigkeit
vom wesentlich selteneren Moduswechsel beschreibt.
-
Die
Rekonfiguration selbst würde
vergleichsweise viel Zeit in Anspruch nehmen; es wurde nun erkannt,
dass eine wesentlich günstigere
Lösung
in einer erweiterten Architektur von PLDs besteht, in denen zugleich
mehrere Programme dynamisch umschaltbar gespeichert sind. Eine entsprechende
Logikeinrichtung könnte
als Multi-Plane-PLD bezeichnet werden; um jedoch dem Aspekt des
jeweiligen „Kontext" Rechnung zu tragen
und darzustellen, dass auch nur Teilbereiche von Umschaltvorgängen betroffen
sind, wird hier der Name „Dynamical
Multi-Context PLDs
(dMC-PLDs)" gewählt.
-
Abschnitt II ( Erfindungsgemäße Architektur
von „Dynamical
Multi-Context PLDs")
-
Zunächst sei
ein Problem angesprochen, dass sowohl für klassische dynamisch rekonfigurierbare
als auch für
dMC-PLDs gilt. Wird nämlich
lediglich ein Teilbereich umgeschaltet, müssen dessen Schnittstellen
nach außen
hin, also insbesondere in Richtung der verbleibenden Teile, konstant
bleiben. Zugleich sind einige Funktionsprogramme (sogenannte „Routingressourcen") von dem Umschalten mit
betroffen, da innerhalb des umzuschaltenden Blocks nicht nur Logik,
sondern auch Verbindungen liegen müssen.
-
Konsequenterweise
wird im Folgenden für die
erfindungsgemäße Logikeinrichtung
ein PLD-Block als eine rekonfigurierbare Einheit, bestehend aus
logischen Verarbeitungseinheiten mit Routingressourcen und Schnittstellen
(sogenanntes „Routing") zu anderen Blöcken definiert;
diese Definition stimmt mit den in der Praxis üblichen, partiell rekonfigurierbaren
Baustei nen überein.
Die Definition dieses Blocks weicht dabei von der üblichen
Definition der logischen Blöcke
ab.
-
Wenn
man sich jetzt einmal einen fiktiven PLD mit solchen Blöcken anschaut,
erhält
man eine Architektur, wie sie aus 3 hervorgeht.
In der Figur sind bezeichnet mit 2 eine partiell rekonfigurierbare
PLD-Einrichtung bzw. -Struktur, mit 3A bis 3D vier
PLD-Blöcke
(= Logikblöcke),
mit 4 ein (globales) Routing, das eine Verarbeitungseinheit
mit Funktionsprogrammen und Schnittstellen zu den Blöcken bildet,
sowie mit 5 ein I/O-Bereich, der Mittel zum Verknüpfen der
Logikblöcke
mit der Verarbeitungseinheit und einer Ein-/und Ausgabeeinheit darstellt.
Man kann sich diese Architektur so vorstellen, dass – einmal
abgesehen von den I/O-Ressourcen 5 am Außenrand – jeder
PLD-Block 3A bis 3D einem vollwertigen CPLD ("Complex PLD") oder FPGA entspricht. Derartige
Architekturen existieren bereits, z. B. von der Firma Cypress unter
der Marke „Delta39k", oder von der Firma
Lattice-Vantis unter der Marke „Godfather-Architecture". Diese Architekturen
sind jedoch nicht im Betriebszustand der PLD-Einrichtung rekonfigurierbar.
-
Bei
der in 4 schematisch angedeuteten dMC-PLD-Architektur
einer Logikeinrichtung 7 nach der Erfindung wird die PLD-Struktur 2 nach 3 durch
einen zusätzlichen
PLD überlagert.
Dieser als Umschalt-Logikblock 8 bezeichnete Extra-PLD
ist bei bekannten Logikeinrichtungen nicht vorhanden und soll die
Umschaltfunktion h(u, v, c) (vgl. 2) übernehmen.
Er stellt folglich einen Teil von Verknüpfungsmitteln dar, mit denen
die Konfiguration wenigstens einiger der Logikblöcke 3A bis 3D untereinander und/oder
mit der Verarbeitungseinheit 4 und/oder der Ein-/Ausgabeeinheit 5 erfolgt.
Dies bedeutet, dass die Ausgänge
in 4 einem gespeicherten Kontext c entsprechen und
die Auswahl der aktuellen Funktionen fc(u,
x) und gc(u, x) steuern.
-
Für diesen
Extra-PLD ergibt sich damit eine Struktur, die aus vielen Eingängen (u,
x) wenige, ausschließlich
gespeicherte Ausgänge
berechnet.
-
Die
sich aus diesem Aufbau ergebenden Vorteile sind darin zu sehen,
dass die funktionale Dichte und damit die Ausnutzbarkeit gesteigert
werden bzw. die Kosten pro Anwendung zu senken sind. Folgende grobe
Abschätzung
kann dafür
gegeben werden:
Es sei angenommen, dass die Ausnutzung der
verwendeten Transistoren 1:20 ist; d. h., von 20 eingesetzten Transistoren
ist tatsächlich
nur einer in der (programmierbaren) logischen Funktion sichtbar.
Für den
Extra-PLD 8 lassen sich 20% Overhead veranschlagen, da
es sich um einen Logikblock handelt, der nicht zur eigentlichen
Funktionalität
beiträgt,
sondern nur die anderen Blöcke 3A bis 3D umschaltet. Für die Speicherung
und Decodierung der zusätzlichen
Programme (es werden lediglich 4 gespeicherte Funktionen pro PLD-Block
angenommen) werden weitere 6 Transistoren berechnet (4 Transistoren
zur Speicherung und 2 zur Auswahl 1 aus 4). Daraus ergibt sich eine
neue Ausnutzung von 4:30, mithin eine Steigerung der Dichte gegenüber bekannten
Ausführungsformen
um 166%.
-
Gegebenenfalls
könnte
sich eine Schwierigkeit dadurch ergeben, dass sich auf Grund mehrerer Konfigurationen,
aus denen eine aktuelle auszuwählen
ist, der kritische Pfad innerhalb eines PLD-Blocks um einen Transistor
verlängern
kann, was mit der Erniedrigung der maximalen Taktfrequenz einhergehen würde. Hierzu
muss zwischen sogenannter SRAM-basierten Speicherung einerseits
und sogenannter FLASH-EEPROM bzw. Anti-Fuse andererseits unterschieden
werden.
-
Für SRAM-basierte
Verfahren wird mit der
US
6,011,740 A ein Verfahren vorgeschlagen, die Speicherung
mehrerer Konfigurationen in einem Schatten-RAM z. B. als Ringspeicher
zu realisieren und die aktuell benötigte Information in eine Arbeitszelle
zu laden. Dieses Verfahren garantiert eine maximale Arbeitsgeschwindigkeit.
-
Für Flash-
und Antifuse-Speicherung könnte als
eigentliche Zelle ebenfalls eine nachladbare SRAM-Zelle in Betracht
kommen, so dass die obengenannte Lösung zum Tragen kommt; dies
bedeutet jedoch einen zusätzlichen
Aufwand und möglicherweise
eine Verringerung der Geschwindigkeit, bedingt durch den Technologiewechsel
bei der Speicherung. Bei diesen Technologien wird tatsächlich ein
weiterer Path-Transistor, der den aktuellen Kontext decodiert, im
Pfad eingeführt,
gegebenenfalls in Form von Dual-Gate-FETs.
-
Die
genaue Einteilung, welche Blockgröße und Extra-PLD-Größe für die Vielzahl
an Anwendungen von Vorteil sind, kann durch Simulationen an Beispielen
ermittelt werden.
-
Zu
einer Realisierung einer erfindungsgemäßen Logikeinrichtung nach 4 kann
man sich vorstellen, dass die beiden schematisch dargestellten Schichten,
nämlich
die mit dem Extra-PLD 8 (= Umschalt-Logikblock) und die
mit den Logikblöcken 3A bis 3D,
jeweils in einer Ebene E2 bzw. E1 zumindest weitgehend äquivalent
sind und sich nicht nur gegenseitig umschalten, sondern vielmehr
auch die Programmierung des jeweils anderen Teils erzeugen. Umschaltung
bedeutet in diesem Fall, dass zwischen vorbestimmten Programmen
ausgewählt
wird. Gegenseitige Programmierung hingegen kann zur Anpassung (Evolution)
an die jeweilige Umgebung genutzt werden. Ein einfaches Beispiel
kann eine digitale PLL sein, die eine Frequenz mittels Laufzeiteffekten
an einen Mastertakt anpasst.