-
Prioritäten
-
Die Priorität aus PACT15(a,b), PACT26/US, PACT18(a)
wird beansprucht.
-
Definitionen
-
Rekonfigurierbare Elemente werden
abhängig
von der auszuführenden
Applikation unterschiedlich und applikationsentsprechend ausgestaltet.
-
Aufgabe der Erfindung ist es, Neues
für die gewerbliche
Nutzung bereitzustellen.
-
Die Lösung der Aufgabe wird unabhängig beansprucht.
Bevorzugte Ausführungsformen
befinden sich in den Unteransprüchen.
-
Unter einer rekonfigurierbaren Architektur werden
vorliegend Bausteine (VPU) mit konfigurierbarer Funktion und/oder
Vernetzung verstanden, insbesondere integrierte Bausteine mit einer
Mehrzahl von ein- oder mehrdimensional angeordneten arithmetischen
und/oder logischen und/oder analogen und/oder speichernden und/oder
intern/extern vernetzenden Baugruppen, die direkt oder durch ein Bussystem
miteinander verbunden sind.
-
Zur Gattung dieser Bausteine zählen insbesondere
systolische Arrays, neuronale Netze, Mehrprozessor Systeme, Prozessoren
mit mehreren Rechenwerken und/oder logischen Zellen und/oder kommunikativen/peripheren
Zellen (IO), Vernetzungs- und Netzwerkbausteine wie z.B. Crossbar-Schalter,
ebenso wie bekannte Bausteine der Gattung FPGA, DPGA, Chameleon,
XPUTER, etc.. Hingewiesen wird insbesondere in diesem Zusammenhang
auf die folgenden Schutzrechte und Anmeldungen desselben Anmelders:
P 44 16 881 .0-53,
DE 197 81 412 .3,
DE 197 81 483 .2,
DE 196 54 846 .2-53,
DE 196 54 593 .5-53,
DE 197 04 044 .6-53,
DE 198 80 129 .7,
DE 198 61 088 .2-53,
DE 199 80 312 .9, PCT/DE
00/01869,
DE 100 36 627 .9-33,
DE 100 28 397 .7,
DE 101 10 530 .4,
DE 101 11 014 .6, PCT/EP 00/10516,
EP 01 102 674 .7, PACT02,
PACT04, PACT05, PACT08, PACT10, PACT11, PRCT13, PACT21, PACT13,
PRCT15, PACT16, PACT17, PACT18, PACT19, PACT20, PACT21, PACT22, PACT25,
PACT27, PACT26/US. Diese sind hiermit zu Offenbarungszwecken vollumfänglich eingegliedert.
-
Die o.g. Architektur wird beispielhaft
zur Verdeutlichung herangezogen und im folgenden VPU genannt. Die
Architektur besteht aus beliebigen arithmetischen, logischen (auch
Speicher) und/oder Speicherzellen und/oder Vernetzungszellen und/oder kommunikativen/peripheren
(IO) Zellen (PAEs), die zu einer ein- oder mehrdimensionalen Matrix
(PA) angeordnet sein können,
wobei die Matrix unterschiedliche beliebig ausgestaltete Zellen
aufweisen kann, auch die Bussysteme werden dabei als Zellen verstanden.
Der Matrix als ganzes oder Teilen davon zugeordnet ist eine Konfigurationseinheit
(CT), die die Vernetzung und Funktion des PA beeinflußt.
-
Stand der Technik
-
Unterschiedliche PAE-Strukturen sind
nach dem Stand der Technik bekannt. Die gebräuchlichsten sind durch PACT02,
PACT22, sowie Chameleon CS2112 definiert. Weiterhin soll auf die
bekannten FPGA Zellen verwiesen werden.
-
Aus dem universitären Umfeld sind Zellstrukturen
wie die DPGAs, RawMachine (DeHuon), KressArrays (Kress, Uni Kaiserslautern),
XPUTER (Hartenstein, Uni Kaiserslautern), sowie weitere Strukturen
bekannt.
-
Die nachfolgend beschriebenen Erweiterungen,
die für
alle vorgenannten Strukturen nutzbar sind, verbessern die Nutzbarkeit
der Architekturen und PAE-Strukturen in komplexen insbesondere auch
stark sequentiellen und/oder wenig datenflußorientierten Anwendungen.
Weiterhin wird der Anschluß an
externe Einheiten (z.B. Speicher und/oder Peripherie) vereinfacht
und homogenisiert.
-
Indirekte Konfiguration
-
In einer besonderen Ausführung einer
PAE (IPAE) wird diese oder eine Gruppe von PAEs mit einem Speicher
(RRAM), vorzugsweise einer RAM-PAE gekoppelt. Die IPAE weist einen
eigenen internen Sequenzer auf oder ist mit einem Sequenzer bzw.
-
Microcontroller mit einem bevorzugt
limitierten aber bevorzugt vollständigen Befehlsssatz (vgl. ARC
Microprocessor) gekoppelt. In einer weiteren Ausführungsvariante
kann der Sequenzer auch durch eine Konfiguration von PAEs gebildet
werden. In einer weiteren Ausführungsvariante
kann der Sequenzer auch konfigurierbar ausgestaltet sein (beispielsweise ähnlich EPS448
von Altera [ALTERA Data Book 1993]).
-
Der Sequenzer/Microcontroller kann
auf Zustände
(z.B. Statussignale, Ereignisse) in der IPAE und/oder auf Zustände (z.B.
auch Trigger) anderer PAEs die mit der IPAE verbunden sind (z.B. über ein Bussystem)
reagieren. In einem Konfigurationsregister der IPAE wird ein Pointer
auf einen RRAM Speicherinhalt konfiguriert. Ein Adressgenerator
im Sequenzer liest den durch den Pointer referenzierten Speicherinhalt
aus dem RRAM und konfiguriert diesen (oder einen Teil dessen) entweder
in ein durch den Speicherinhalt adressiertes Konfigurationsregister
einer adressierten PAE oder nutzt den Speicherinhalt als Instruktion
für eine
nächste
Verarbeitung. Insoweit stellt der Speicher RRAM einen Codespeicher und
in einer bevorzugten Ausführung
auch Datenspeicher für
einen Sequenzer dar. Der Sequenzer kann frei Code aus dem Speicher
(RRAM) lesen und in einer bevorzugten Ausführung auch Daten aus dem Speicher
lesen oder in den Speicher schreiben.
-
Der RRAM Speicherinhalt kann von
einer übergeordneten
Konfigurationseinheit (CT) geladen werden. In einer erweiterten
Ausführung
kann der Speicherinhalt zusätzlich
oder alternativ von einem anderen (beispielsweise externen) Speicher
geladen oder an diesen geschrieben werden, z.B. über einen Anschluß an ein
Frontend.
-
In einer Ausführungsvariante kann der Speicher
einen direkten Anschluß (EXTBUS)
an ein externes RAM und/oder externe IO besitzen.
-
In einer besonders bevorzugten Ausgestaltung
kann der RRAM selbständig
Code für
den Sequenzer über
den EXTBUS aus dem externen RAM laden.
-
In einer möglichen Ausführung ist
der RRAM in mehrere Segmente unterteilt die in unterschiedlichen
Adressbereichen liegen. Die Segmente können beispielsweise für einige
der folgenden Funktionen aufgeteilt sein:
Sequenzerspeicher,
Stack (z.B. für
Registersatz), Datenspeicher, IO-Puffer, Puffer zu externem RAM bzw.
Cache, Lookuptabellen, Konfigurationen für PAEs und/oder Busse.
-
In einer Ausführung kann der RRAM als Multi-Port
Speicher ausgeführt
sein.
-
In einer besonderen Ausführung kann
die IPAE mit dem RRAM als lokale Konfigurationseinheit ähnlich einer
CT für
PAEs in der Umgebung arbeiten oder unter anderem diese Funktion
mit erfüllen.
Die IPAE adressiert gesteuert durch den Sequenzer/Microcontroller
Konfigurationen im RRAM und konfiguriert diese an PAEs und/oder
sich selbst und/oder bestimmt den Ablauf des Sequenzers/Microcontrollers. Bevorzugt
findet hierbei eine Synchronisation mit einer übergeordneten CT ähnlich der
bekannte Inter-CT-Protokolle (PACT10, PACT17, PACT13) statt. Die
IPAE RRAM Schaltung kann Konfiguration über eines der EXTRAM-Interface
selbst laden und/oder Konfigurationen von einer übergeordneten CT über das
CT Interface anfordern. Die Funktionsweise kann ähnlich der Rekonfigurationseinheit
in PACT04 sein. Die Konfigurationsdaten für die PAEs werden durch die
IRAM an die PAEs weitergeleitet oder in einer bevorzugten Ausgestaltung
direkt von RRAM. Zur Aufteilung der Daten im RRAM an mehrere PAEs
kann dabei ein Busverteilverfahren ähnlich des in PACT18 beschriebene
SIMD-Bussystem ver wendet werden. PACT18 ist hiermit zu Offenbarungszwecken
vollumfänglich
eingegliedert.
-
Mit anderen Worten ist der prinzipielle
Arbeitsweise einer IPAE RRAM Verschaltung ähnlich eines Microcontrollersystemes,
dessen Busanbindung und/oder dessen Datentransfers und/oder dessen
Programmablauf einem VPU-System entspricht.
-
RAMoverPAE
-
Die nachfolgend beschriebene besondere Ausgestaltung
einer ALU-PAE (im Folgenden mit ROP-PAE bezeichnet) eignet sich
besonders für VPUs
deren Applikation irreguläre
sequentielle Codes aufweisen die auf kleine Datenmengen in einer weitgehend
ungeordneten Reihenfolge zugreifen.
-
Zur Realisierung dieser Aufgabe wird
in eine ALU-PAE Speicher (IRAM) integriert auf den die ALU direkten
Schreib/Lese-Zugriff
besitzt. Die ALU ist entsprechend um eine Adressverwaltungsschaltung
erweitert.
-
In einer besonders bevorzugten Ausführung ist
ein Sequenzer bzw. Microcontroller mit einem bevorzugt limitierten
aber bevorzugt vollständigen
Befehlsssatz (vgl. ARC Microprocessor) in der ROP-PAE integriert,
der die Verarbeitung sequentieller Codes ermöglicht. In einer weiteren Ausführungsvariante
kann der Sequenzer auch konfigurierbar ausgestaltet sein (beispielsweise ähnlich EPS448 von
Altera [ALTERA Data Book 1993]). Der Sequenzer/Microcontroller kann
auf Zustände
(z.B. Statussignale, Ereignisse) in der ROP-PAE und/oder auf Zustände (z.B.
auch Trigger) anderer PAEs die mit der ROP-PAE verbunden sind (z.B. über ein
Bussystem) reagieren.
-
Der Microcontroller liest seine Programmbefehle
aus dem IRAM.
-
Die Zugriffe auf das Bussystem des
Arrays (PA) entsprechen den üblichen
PAEs, ebenso die Generierung, der Empfang und die Weiterleitung
von Statussignalen. Mehrere Busanbindungen für Daten- und Triggereingänge und
für Daten-
und Triggerausgänge
können
vorgesehen sein.
-
Die ROP-PAE kann Operanden vom Bus
lesen ggf. mehrzyklisch Verarbeiten und das Ergebnis wieder auf
den Bus schreiben.
-
In die ROP-PAE ist in einer bevorzugten
Ausgestaltung ein Registersatz integriert. Der Registersatz kann
in einer besonderen Ausgestaltung ähnlich des Registersatzes von
Transputern organisiert.
-
In einer bevorzugten Ausführung besitzt
die ROP-PAE direkten Anschluß (EXTBUS)
an ein externes RAM und/oder externe IO. Es können applikationsabhängig mehrere
EXTBUS vorgesehen sein. In einer bevorzugten Ausführung kann
die ROP-PAE selbständig
Adressen für
das externe RAM und/oder die externe IO generieren und externe Datentransfers
selbständig
steuern.
-
Die ROP-PAE besitzt Anschluß an eine
CT die die ROP-PAE entsprechend des üblichen Verfahrens konfiguriert
und rekonfiguriert. In einer bevorzugten Ausführung. kann die CT auf den
IRAM lesend und/oder schreibend zugreifen um Daten und/oder Code
für den
Sequenzer im IRAM zu verwalten.
-
In einer besonders bevorzugten Ausgestaltung
kann die ROP-PAE selbständig
Code für
den Sequenzer über
den EXTBUS aus dem externen RAM laden.
-
In einer bevorzugten Ausführung ist
der IRAM in mehrere Segmente unterteilt die in unterschiedlichen
Adressbereichen liegen. Die Segmente können beispielsweise für einige
der folgenden Funktionen aufgeteilt sein:
Sequenzerspeicher,
Stack (z.B. für
Registersatz), Datenspeicher, IO-Puffer, Puffer zu externem RAM bzw.
Cache, Lookuptabellen, Konfigurationen für PAEs und/oder Busse.
-
In einer möglichen Variante ist der IRAM komplett
oder teilweise durch RAM-PAEs außerhalb der ROP-PAE realisiert.
Für ggf.
unterschiedlichen Segmente können
unterschiedliche RAM-PAEs
verwendet werden.
-
In einer bevorzugten Ausgestaltung
können einige
oder alle Segmente als aktive Speicher ausgestaltet sein und insbesondere
die Funktionen der Speicher aus PACT13 aufweisen, z.B. FIFO, Stack, Random
Access, Cache, etc., wobei für
jedes Segment einzeln die Funktion konfigurierbar und/oder durch
den Sequenzer programmierbar ist.
-
In einer Ausführung kann der IRAM als Multi-Port
Speicher ausgeführt
sein.
-
In einer besonderen Ausführung kann
die ROP-PAE als lokale Konfigurationseinheit ähnlich einer CT für ROP-PAEs
in der Umgebung arbeiten oder unter anderem diese Funktion mit erfüllen. Die ROP-PAE
adressiert gesteuert durch den Sequenzer/Microcontroller Konfigurationen
im IRAM und konfiguriert diese an PAEs und/oder sich selbst und/oder
bestimmt den Ablauf des Sequenzers/Microcontrollers. Bevorzugt findet
hierbei eine Synchronisation mit einer übergeordneten CT ähnlich der
bekannte Inter-CT-Protokolle (PACT10, PACT17, PACT13) statt. Die
ROP-PAE kann Konfiguration über
eines der EXTRAM-Interface
selbst laden und/oder Konfigurationen von einer übergeordneten CT über das
CT Interface anfordern. Die Funktionsweise kann ähnlich der Rekonfigurationseinheit
in PACT04 sein.
-
Mit anderen Worten ist der prinzipielle
Arbeitsweise einer ROP-PAE ähnlich
eines Microcontrollersystemes, dessen Busan bindung und/oder dessen
Datentransfers und/oder dessen Programmablauf einem VPU-System entspricht.
-
Die beschriebene Struktur kann durch
erweiterte und verbesserte Halbleiterherstellungsverfahren und -strukturen
besonders leistungsfähig
implementiert werden.
-
Dazu wird über der nach dem Stand der Technik üblichen
ersten Halbleiterstruktur (z.B. Silizium) und der damit aufgebauten
Transistorstrukturen eine oder mehrere weitere Ebenen von Halbleiterstrukturen
(Transistorstrukturen) aufgebracht, die für zusätzliche Funktionen genutzt
werden können.
Beispielsweise können
in einer ersten Ebene die Logik und Gatter der PAE-Funktion und
in einer weiteren zusätzlichen
Ebene die Speicherfunktionen implementiert werden.
-
In einer bevorzugten Bauweise werden
die einzelnen Halbleiterschichten durch eine Isolierschicht voneinander
getrennt. Die Isolierschicht kann Durchkontaktierungen (Vias) aufweisen,
um Signale zwischen den einzelnen Halbleiterschichten zu übertragen.
-
Die Verdrahtungsstruktur kann je
nach Anwendung unterschiedlich implementiert sein. Beispielsweise
können
direkt über
jeder Halbleiterschicht Verdrahtungsebenen und/oder eine globale Verdrahtungsebene,
die allen Halbleiterschichten zugeordnet ist vorgesehen sein.
-
Um eine wirtschaftliche Ausbeute
zu erlangen muss sichergestellt sein, dass die Gesamtschaltung,
also alle Halbleiterstrukturebenen zusammen, eine hinreichend hohe
Ausbeute erreichen. Desweiteren ist zu beachten, dass der Stromverbrauch,
also die Verlustleistung, aller Halbleiterstrukturebenen zusammen
innerhalb eines akzeptablen Bereiches bleibt, der zu keiner Überhitzung
und dem damit verbundenen Ausfall der Schaltung führt.
-
Es kann durch eine geeignete Zusammenstellung
der Funktionseinheiten der einzelnen Halbleiterebenen den entsprechenden
Anforderungen entsprochen werden.
-
Beispielsweise ist die vorgeschlagene
Architektur eine Ebene von Logikhalbleiterstrukturen und eine weitere
Ebene von Speicherhalbleiterstrukturen vorzusehen für diese
Anforderungen geeignet. Während
die irregularen und wenig redundanten Logikhalbleiterstrukturen
eine vergleichsweise hohe Fehlerquote mit hoher Verlustleistung
aufweisen, können Speicherhalbleiterstrukturen
vergleichsweise redundant mit niederer Fehlerquote und durch geeignete Speicherverfahren
(z.B. DRAM) auch mit geringer Verlustleistung implementiert werden.
-
IOx-PAEs
-
Aus PACT13 sind Speicher (IORAM-PAEs) mit
einem dedizierten Anschluss an externe Einheiten wie z.B. Peripherie
und/oder Speicher bekannt. Weiterhin sind aus PACT03 und PACT15
dedizierte Einheiten (z.B. Interface-Baugruppen (IBG)) zum Anschluss
von externen Einheiten wie z.B. Peripherie und/oder Speicher bekannt.
-
Beide Verfahren weisen das Problem
auf, dass ein zusätzlicher
Aufwand zur Datenkommunikation zwischen PAEs, insbesondere datenverarbeitender
und/oder datenberechnender PAEs und externen Einheiten betrieben
werden muss, indem die Daten explizit zwischen den PAEs und den
IBGs und/oder IORAM-PAEs übertragen
werden müssen.
-
Es wird nunmehr erfindungsgemäß vorgeschlagen
für beliebige
PAEs, insbesondere jedoch für datenverarbeitende
und/oder datenberechnende PAEs (z.B. ALU-PAEs) einen oder mehrere
dedi zierten Anschlüsse
(IO-Channel) an externe Einheiten vorzusehen. Dadurch ist eine direkte
Kommunkikationsmöglichkeit
der PAEs, nachfolgend IOx-PAEs genannt, und externen Einheiten gegeben.
-
Besonders effizient kann das Vorsehen
von IO-Channels für
nur eine Teilmenge aller PAEs sein. Beispielsweise bietet es sich
an nur Streifen von PAEs mit IO-Channel-Erweiterung innerhalb einer Anordnung
von PAEs (PAE-Array, PA) vorzusehen. Dadurch wird eine verbesserte
Flächen-
und Kosteneffizienz gegenüber
der Implementierung der IO-Channel-Erweiterung in alle PAEs erreicht.
-
SIMD PAEs
-
Bei der Verwendung von rekonfigurierbaren Technologien
zur Verarbeitung von Algorithmen entsteht ein wesentliches Paradoxon:
Einserseits sind um eine möglichst
hohe Rechenleistung zu erhalten komplexe ALUs erforderlich, wobei
der Aufwand für die
Rekonfiguration minimal sein sollte; andererseits sollten die ALUs
möglichst
einfach sein um effiziente Verarbeitung auf Bitebene zu ermöglichen;
andererseits sollte die Rekonfiguration und Datenverwaltung derart
intelligent und schnell erfolgen, daß sie effizient und einfach
zu programmieren ist.
-
Bisherige Technologien verwenden
a) sehr kleine ALUs mit wenig Rekonfigurationsunterstützung(FPGAs)
und sind auf Bitebene effizient, b) große ALUs (Cameleon) mit wenig
Rekonfigurationsunterstützung,
c) eine Mischung aus großen
ALUs und kleinen ALUs mit Rekonfigurationsunterstützung und Datenverwaltung
(VPUs).
-
Da die VPU-Technologie die leistungsfähigste Technik
darstellt, soll auf ihr aufbauend ein optimiertes Verfahren ge schaffen
werden. Es soll ausdrücklich
darauf hingewiesen werden, daß dieses Verfahren
ebenfalls für
die anderen Architekturen eingesetzt werden kann.
-
Der Flächenaufwand zur effizienten
Steuerung von Rekonfiguration ist mit einer Menge von ca. 10.000
bis 40.000 Gattern pro PAE vergleichsweise hoch. Unterhalb dieser
Gattermenge lassen sich nur einfache Ablaufsteuerungen realsieren,
die die Programmierbarkeit von VPUs erheblich einschränken und
eine Verwendung als General Purpose Prozessor ausschließen. Sofern
auf eine besonders schnelle Rekonfiguration abgezielt wird, müssen zusätzliche
Speicher vorgesehen werden, wodurch die erforderliche Gattermenge
nochmals erheblich ansteigt.
-
Um ein ordentliches Verhältnis zwischen
Rekonfigurationsaufwand und Rechenleistung zu erhalten, ist somit
der Einsatz von großen
ALUs (viel Funktionalität
und/oder große
Bitbreite) zwingend erforderlich. Werden die ALUs jedoch zu groß, sinkt
die nutzbare parallele Rechenleistung pro Chip. Bei zu kleinen ALUs
(z.B. 4-bit) ist der Aufwand zur konfiguration aufwendiger Funktionen
(z.B. 32-bit Multiplikation) zu hoch. Insbesondere der Verdrahtungsaufwand
wächst
in kommerziell nicht mehr sinnvolle Bereiche.
-
SIMD Rechenwerkes
-
Um ein ideales Verhältnis zwischen
der Verarbeitung von kleinen Bitbreiten, Verdrahtungsaufwand und
der Konfiguration aufwendiger Funktionen zu erhalten, wird der Einsatz
von SIMD-Rechenwerken vorgeschlagen. Dabei werden Rechenwerke der Breite
m derart zerteilt, daß n
einzelne Blöcke
der Breite b = m/n entstehen. Durch Konfiguration wird je Rechenwerk
vor gegeben, ob ein Rechenwerk unzerteilt arbeiten soll, oder ob
das Rechenwerk in einen oder mehrere Blöcke, jeweils gleicher oder
unterschiedlicher Breite zerlegt sein soll. Mit anderen Worten,
kann ein Rechenwerk auch derart zerlegt sein, daß innerhalb eines Rechenwerkes
unterschiedliche Wortbreiten zugleich konfiguriert sind (z.B. Breite 32-bit,
zerlegt in 1 × 16-,
1 × 8-
und 2 × 4-bit).
Die Daten werden derart zwischen den PAEs übertragen, daß die zerlegten
Datenworte (SIMD-WORD) zu Datenworten der Bitbreite m zusammengefaßt werden und
als Paket über
das Netzwerk übertragen
werden.
-
Das Netzwerk überträgt immer ein komplettes Paket,
d.h. alle Datenworte sind innerhalb eines Paketes gültig, und
werden nach dem bekannte Handshake-Verfahren übertragen.
-
SIMD Bussysteme
-
Für
einen effizienten Einsatz der von SIMD-Rechenwerken ist eine flexible
und effiziente Umsortierung der SIMD-WORD untereinander innerhalb
eines Busses oder zwischen unterschiedlichen Bussen erforderlich.
-
Die Busschalter nach 2 bzw. 3 können derart
modifiziert werden, daß eine
flexible Vernetzung der einzelnen SIMD-WORD möglich ist. Dazu werden die
Multiplexer entsprechend den Rechenwerken teilbar ausgelegt, derart
daß durch
Konfiguration die Teilung bestimmt werden kann. Mit anderen Worten,
wird beispielsweise nicht ein Multiplexer der Breite m pro Bus verwendet,
sondern n einzelne Multiplexer der Breite b = m/n. Es ist nunmehr
möglich, die
Datenbusse für
b bit Breite zu konfigurieren. Durch die Matrixstruktur der Busse
(2) ist die Umsortierung
der Daten ebenfalls möglich;
wie in 4b dargestellt.
-
Die Handshakes der Busse werden logisch derart
verknüpft,
daß ein
gemeinsamer Handshake für
den neu geordneten Bus aus den Handshakes der ursprünglichen
Busse generiert wird. Beispielsweise kann ein RDY für einen
neu sortierten Bus aus einer logischen UND-Verknüpfung aller RDYs der Daten für diesen
Bus liefernden Busse generiert werden. Ebenso kann beispielsweise
das ACK eines Daten liefernden Busses aus einer UND-Verknüpfung der ACKs
aller Busse generiert werden, die die Daten weiterverarbeiten.
-
In einer ersten Ausführungsvariante
finden die Verknüpfungen
der Handshakes innerhalb eines jeden Busknotens statt. Dadurch wird
es möglich
einem Bussystem der Breite m, bestehend aus n Teilbussen der Breite
b, nur ein Handshake-Protokol zuzuordnen.
-
In einer weiteren besonders bevorzugten Ausgestaltung
werden sämtliche
Bussysteme in der Breite b ausgestaltet, die die kleinste realisierbare Ein-/Ausgabe
Datenbreite b eines SIMD-Word
entspricht. Entsprechend der Breite der PAE Datenpfade (m) besteht
nunmehr ein Ein-/Ausgangsbus aus m/b = n Teilbussen der Breite b.
Beispielsweise besitzt eine PAE mit 3 32bit Eingangsbussen und 2
32 bit Ausgangsbusse bei einer kleinsten SIMD-Wortbreite von 8 tatsächlich 3 × 4 8bit
Eingangsbusse und 2 × 4 8bit
Ausgangsbusse.
-
Jedem der Teilbusse sind sämtliche
Handshake- und Steuersignale zugeordnet.
-
Der Ausgang einer PAE versendet die
mit denselben Steuersignalen für
sämtliche
n Teil-Busse. Eingehende Quittierungssignale aller Teilbusse werden
miteinander logische verknüpft,
z.B. durch eine UND-Funktion. Die Bussysteme können jeden Teilbus frei verschalten
und unabhängig
routen. Die Bussysteme und insbesondere die Busknoten verarbeiten
und verknüpfen
die Handshake-Signale der einzelnen Busse unabhängig ihres Routings, ihrer
Anordnung und Sortierung nicht.
-
Bei einer PAE eingehenden Daten werden die
Steuersignale sämtlicher
n Teilbusse derart miteinander verknüpft, dass ein allgemeingültiges Steuersignal
quasi als Bussteuersignal für
den Datenpfad generiert wird.
-
Beispielsweise können in einer "dependend" Betriebsart
gemäß Definition
RdyHold-Stufen für
jeden einzelnen Datenpfad eingesetzt werden und erst wenn sämtliche
RdyHold-Stufen anstehende Daten signalisieren, werden diese von
der PAE übernommen.
-
In einer "independend" Betriebsart
gemäß Definition
werden die Daten jedes Teilbusses einzeln in Eingangsregister der
PAE geschrieben und quittiert, wodurch der Teilbus sofort für eine nächste Datenübertragung
frei ist. Das Vorhandensein aller erforderlichen Daten von allen
Teilbussen in den Eingangsregistern wird innerhalb der PAE durch
geeignete logische Verknüpfung
der für
jeden Teilbus im Eingangsregister gespeicherten RDY-Signale detektiert,
woraufhin die PAE mit der Datenverarbeitung beginnt.
-
Der wesentliche daraus resultierende
Vorteil dieses Verfahrens ist, dass die SIMD-Eigenschaft von PAEs
keinerlei besonderen Einfluß auf
das verwendete Bussystem aufweist. Es werden lediglich mehr Busse
(n) einer geringeren Breite (b) benötigt. Die Verschaltung selbst
bleibt unberührt.
Die PAEs verknüpfen
und verwalten die Steuerleitungen lokal. Dadurch entfällt der
zusätzliche
Hardwareaufwand in den Bussystemen zur Verwaltung und/oder Verknüpfung der
Steuerleitungen.
-
Einsatz von FPGAs als ALU-Core
-
In PACT13 ist bereits eine Architektur
beschrieben, in welcher anstatt einer ALU eine FPGA oder FPGA-ähnliche
Struktur in eine PAE integriert wird. Diese Struktur wird innerhalb
einer PAE gemäß den FPGA
Konfigurationsmethoden nach dem Stand der Technik konfiguriert,
d.h. die erweiterten Konfigurationsverfahren nach PACT02, 04, 05,
10, 13, 17 finden auf die FPGA-Struktur keine Anwendung. Dadurch
ist sind Aufwand und Kosten für
die Konfigurationssteuerung der verhältnismäßig kleinen FPGA-Zellen gering.
Die PAE allerdings, die die FPGA-Zellen enthält, verhält sich gemäß des VPU-Konfigurationsverfahrens nach den o.g.
Schriften. Dadurch ist die FPGA-Struktur in der PAE-Struktur gekapselt
und verhält
sich wie ein PAE-Objekt mit vielen Konfigurationsregistern. Dadurch
lassen sich auch beliebige Operationen auf ein Array aus FPGAs abbilden.
Gemäß PACT25
ist eine Mischung aus ALU-PAEs
und FPGA-PAEs innerhalb einer VPU möglich und durchaus sinnvoll.
-
Es ist anhand des Anwendungsgebietes
zu entscheiden, ob ein mehrfacher Satz an Konfigurationsregistern
für die
FPGA-Zellen sinnvoll
ist, da deren Anzahl sehr hoch ist. Gegebenenfalls werden Konfigurationsregister
zum schnellen Umkonfigurieren einer FPGA-PAE gemäß PACT02, 13 und insbesondere
PACT17, dort 18 und 19,
als Register-File oder FIFO-Struktur
innerhalb der PAE realisiert und von dort aus in die FPGA-Zellen
geladen.
-
Konfiguration komplexer Rechenwerke
Komplexe Rechenwerke (z.B. Floating-Point Rechenwerke) können durch
die geeignete Verschaltung und Gruppierung von PAEs möglicherweise
auch unterschiedlicher Bauart realisiert werden.
-
Statemachines über RAM-PAEs
-
Mit einem Array aus PAEs verbundene RAM-PAEs
können
zum Aufbau von Sequenzern eingesetzt werden, wie aus PACT13 bereits
bekannt.
-
Ein bevorzugter Sequenzer kann wie
folgt aufgebaut sein: Der Adressbus einer RAM-PAE, die als Sequenzerspeicher
verwendet wird, wird in mehrere Teiladressen beliebiger und insbesondere
möglicherweise
auch unterschiedlicher Breite aufgeteilt, beispielsweise Bit 0..3
für eine
erste Teiladresse (NEXT_CYCLE), Bit 4..7 für eine zweite Teiladresse (SEQ_IN)
und Bit 8..12 für
eine dritte Teiladresse (CTRL_IN).
-
Der Datenausgang einer RAM-PAE wird
in mehrere Teildaten aufgeteilt, beispielsweise Bit 0..3 für die ersten
Teildaten (CYLCE), Bit 4..7 für
die zweiten Teildaten (SEQ_OUT) und Bit 8..12 für die dritten Teildaten (CTRL_OUT).
-
Zur Aufteilung der Adressen und/oder
Daten kann insbesondere das beschriebene SIMD PAE- und Bus-Konzept
verwendet werden.
-
Der RAM-PAE werden datenverarbeitende PAEs
zugeordnet, wie z.B. ALU-PAEs.
-
Die Berechnung des nächsten Zyklusses
innerhalb eines Sequenzerdurchlaufes erfolgt durch die Rückkopplung
von NEXT_CYCLE auf CYCLE.
-
In einer erweiterten Ausführungsvariante können zusätzliche
datenverarbeitende PREs zur Berechnung von CYCLE in Abhängigkeit
von NEXT_CYCLE innerhalb der Rückkopplung
vorgesehen sein. Diese PAEs können
auf beliebige i.b. auch zusätzliche
Signale, Daten oder Zustände
anderer PAEs und/oder externer/peripherer Baugruppen reagieren.
Desweiteren können
diese PAEs zusätzliche Signale
oder Daten erzeugen.
-
Zur Realisierung eines kompletten
Sequenzers können
weitere PAEs angekoppelt sein, die insbesondere auch in ihrer Funktion
und/oder Vernetzung vom Sequenzer beeinflußt werden. Diese angekoppelten
PAEs verarbeiten vorwiegend Daten beliebiger Art und besitzen Anschluß an weitere
PAEs, insbesondere datenverarbeitende (ALU-PAEs) und/oder Speicher-PAEs
(RAM-PAEs) und/oder periphere Anschlüsse (IO-PAEs).
-
Diese PAEs können durch SEQ_OUT angesteuert
werden und können
bedarfsweise durch SEQ_IN Ablaufspeicher des Sequenzers ansteuern.
-
Weitere möglicherweise auch unabhängige PAEs
oder Einheiten, insbesondere auch externe/periphere Einheiten und/oder übergeordnete
CTs können
durch den Sequenzerspeicher angesteuert werden (CTRL_OUT) oder diesen
ansteuern (CTRL_IN).
-
Zur korrekten taktgesteuerten Ablaufsteuerung
des Sequenzers sind in Rückkopplungspfade bevorzugt
taktsynchronisierte Register eingebaut.
-
Die RAM-PAE kann durch eine übergeordnete
CT konfiguriert werden, insbesondere können die Sequenzerfunktionen
durch den Inhalt der RAM-PAE konfiguriert und festgelegt werden.
-
Konfigurationsregistermodelle
-
Verschiedene Konfigurationsregistermodelle
zur Festlegung der Konfiguration von jeweils lokal zugeordneten
PAEs sind bekannt. In PACT02 ist ein sequentiell abarbeitbares Modell
beschrieben, in PACT04 ist ein FIFO-Modell beschrieben, das ebenfalls
sequentiell abgearbeitet und überlappend
konfiguriert werden kann, in PACT08 ist ein selektives Modell beschrieben,
bei welchem abhängig
von der Datenverarbeitung bestimmte Konfigurationsregister und damit
die in ihnen gespeicherte Funktion und/oder Vernetzung ausgewählt werden.
In PACT17 ist weiterhin ein FIFO-Modell beschrieben, das sich besonders
für die
Vorabkonfigüration
und überlappende
Konfiguration eignet.
-
Als besonders leistungsfähig und
Kosten/Performance effizient wurde eine Mischung aus diesen Modellen
erkannt.
-
Das FIFO-Modell nach PACT17 eignet
sich besonders, um eine beliebige Anzahl von Konfigurationsregistern
von PAEs vorzuladen, da die Funktion des verwendeten FIFOs eine
variable Konfigurationslänge
effizient ermöglicht.
-
Durch eine Erweiterung des FIFO-Modelles kann
der Anfang und das Ende einer bestimmten Konfiguration und der dazugehörenden einzelnen Konfigurationseinträge festgestellt
werden. Nunmehr können
mehrere Konfigurationen zugleich in dem FIFO-Modell abgelegt werden.
-
Eine Konfiguration wird je Aufruf
von ihrem Anfang bis zu ihrem Ende in die Konfigurationsregister
einer PAE übertragen.
-
Durch eine optionale zusätzliche Übersetzungs-
und Zuweisungsvorrichtung können
Zustände (z.B.
Zustände
der eigenen ALU und/oder ein oder mehrere Trigger (vgl. PACT08)
beispielsweise anderer PAEs) auf bestimmte Konfigurationen innerhalb des
FIFO-Modells übersetzt
werden. Beispielsweise kann ein eintreffender Reconfigurationstrigger
auf eine bestimmte Konfiguration innerhalb des FIFO-Modells zeigen,
die durch das Auftreten des Reconfigurationstrigger dann konfiguriert
wird.
-
Als Übersetzungs- und Zuweisungsvorrichtung
können
beispielsweise algebraische Berechnungen. und/oder logische Verknüpfungen
und/oder bevorzugt Übersetzungsspeicher
(Lookup-Tabellen) zum Einsatz kommen.
-
Nach oder während der Konfiguration können Konfigurationen
aus dem FIFO entfernt werden. Bevorzugt wird dabei die Referenzierung
innerhalb der Übersetzungs-
und Zuweisungsvorrichtung entsprechend angepasst.
-
Weiterhin kann das FIFO-Modell um
das Sequenzer-Verfahren nach PACT04 erweitert werden. Dazu werden
beispielsweise Sprünge
(GOTO), sowie zustandsabhängige
und bedingte Sprünge (WAIT-GOTO)
eingeführt.
-
Weiterhin kann ein Synchronisationsanzeigeverfahren
verwendet werden, das anzeigt wann eine bestimmte Konfiguration
bzw. ein bestimmter Zyklus des Sequenzers beendet ist. Mit anderen Worten
kann jeder Zyklus aus mehreren Konfigurationseinträgen bestehen.
Zur Kennzeichnung kann beispielsweise nach PACT04 ein run/stop-Flag
verwendet werden, wobei 'run' zusammengehörende Konfigurationseinträge eines
Zyklus kennzeichnet und 'stop' den ersten Eintrag eines nachfolgenden Zyklus.
Alternativ oder zusätzlich
kann der ebenfalls aus PACT04 bekannte Befehl WAIT verwendet werden.
-
Durch 'stop' oder WAIT wird das Ende
eines Zyklus gekennzeichnet, d.h. eine Konfiguration ist komplett,
kann ausgeführt
und abgearbeitet werden. Nach Beendigung der Datenverarbeitung dieser
Konfiguration wird der nächste
Zyklus ausgeführt
.
-
Die Beendigung kann entsprechend
sequentieller Prozessoren durch einen Takt (Instruktionssequenzing)
definiert sein, und/oder entsprechend des Datenverarbeitungsprinzips
der PACT-Prozessoren (PACT01, PACT04, Konfigurationssequenzing) durch
ein Statussignal (z.B. einen Trigger) definiert sein. Mit anderen
Worten wird z.B. durch das Eintreffen eines Triggers 'stop' übersprungen
und die nachfolgenden Konfigurationen konfiguriert und/oder WAIT
wartet bis zum Eintreffen eines Triggers.
-
Optional kann ein FIFO nicht nur
die lokal zugeordnete PAE ansteuern, sondern auch weitere umliegende
PAEs.
-
Optional kann der FIFO auch als eine
dedizierte Einheit nach PACT04 ausgestaltet sein.
-
Ausführungsbeispiele:
-
A) Ein eintreffende Trigger wird über eine Übersetzungs-
und Zuweisungsvorrichtung auf eine im FIFO liegende Konfiguration
(K1) übersetzt.
Die Konfiguration (K1) wird daraufhin in die PAE konfiguriert. Als
Ende-Kennung kann beispielsweise ein WAIT-Befehl, ein END-Befehl
oder das run/stop-Flag dienen. Ein nachfolgend eintreffender Trigger
wird über
eine Übersetzungs-
und Zuweisungsvorrichtung auf eine andere im FIFO liegende Konfiguration
(K2) übersetzt.
Diese Konfiguration (K2) wird daraufhin in die PAE konfiguriert.
-
K1 und/oder K2 können nach erfolgter Konfiguration
in die PAE aus dem FIFO gelöscht
werden.
-
B) Ein eintreffende Trigger wird über eine Übersetzungs-
und Zuweisungsvorrichtung auf eine im FIFO liegende Konfiguration
(K3) übersetzt,
die aus mehreren Zyklen (Cy1, Cy2, Cy3a, Cy3b, Cy4) besteht. Der
erste Zyklus (Cy1) wird daraufhin in die PAE konfiguriert und ausgeführt. Als
Ende-Kennung kann beispielsweise ein WAIT-Befehl oder das run/stop-Flag
dienen. Ein nachfolgend eintreffender Trigger, der das Ausführungsende
des Zyklus anzeigt, bewirkt die Konfiguration und das Ausführen von
Cy2. Cy2 endet mit zwei WAIT-GOTO-Befehlen (WAIT-GOTO (Trg1, Cy3a); WAIT-GOTO (Trg2, Cy3b))
(vgl. PRCT04), dies bewirkt, dass auf zwei unterschiedliche Trigger,
die das Ausführungsende
des Zyklus anzeigen, Trg1 und Trg2 reagiert wird. Trifft Trg1 ein,
wird im nächsten
Zyklus Cy3a konfiguriert und ausgeführt bzw. bei Trg2 entsprechend
Cy3b.
-
Cy3a und Cy3b enden mit einem WAIT-GOTO
(Trg, Cy4). Bei eintreffen eines Trigger, der das Ausführungsende
des Zyklus anzeigt, wird nach Cy4 gesprungen und die Konfiguration
entsprechend konfiguriert und ausgeführt.
-
Cy4 endet mit einem WRIT-GOTO (Trg, Cy1),
wodurch bei eintreffen des Trigger, der das Ausführungsende des Zyklus anzeigt,
der erneute sequentielle Durchlauf einer Schleife beginnen kann. Insoweit
kann durch den Sprung auf Cy1 ein Ringspeicher nach PACT04 zum Ausführen von
Schleifen gebildet werden.
-
Durch Eintreffen eines Triggers (Trg-x)
kann die Schleife terminiert werden.
-
Existiert ein Eintrag für Trg-x
in der Übersetzungs-
und Zuweisungsvorrichtung kann die Schleife jederzeit abgebrochen
und die durch Trg-x in der Übersetzungs-
und Zuweisungsvorrichtung referenzierte Konfiguration (KX) ausgeführt werden.
Existiert kein Eintrag, kann durch das explizite Verwenden von WAIT-GOTO
(Trg-x, KX) Befehlen, z.B. zusammen mit WAIT-GOTO (Trg, Cy1) in Cy4 die Schleife
zu bestimmte vorgegebenen Ausführungszeitpunkten
terminiert werden.
-
1 zeigt
eine mögliche
Ausgestaltung einer ALU-PAE. Ein erstes Bussystem (0104a) ist mit einer
ALU verbunden deren Ergebnisse auf ein zweites Bussystem (0104b) übertragen
werden. Der vertikale Datentransfer wird über zwei Register/Multiplexerstufen
(FREG 0401, BREG 0402) mit je unterschiedlicher Übertragungsrichtung geführt. Über ein zusätzliches
Interface (0403) wird die Einheit in ihrer Funktion und Vernetzung
von einer CT konfiguriert, in einer bevorzugten Ausgestaltung besteht
die Möglichkeit
Konstanten für
die Datenverarbeitung zu sezten. In einer weiteren Ausgestaltung
kann eine Konfigurationseinheit (CT) Daten aus den Arbeitsregistern auslesen.
-
In einer erweiterten Ausgestaltung
kann eine ALU-PAE zusätzlich
einen Anschluß an
einen 'global system bus' aufweisen und damit direkt mit einem globalen
ggf. auch externen Speicher und/oder Peripherie kommunizieren
-
1 kann
auch eine entsprechende RAM-PAE darstellen. Über 0403 kann von
einer CT die Vernetzung und Funktion des RAMs eingestellt werden.
-
Die Funktion umfaßt beispielswiese folgende Funktionen
oder Kombinationen daraus:
- 1. Random Access
- 2. FIFO
- 3. Stack
- 4. Cache
- 5. Page Memory für
MMUs
-
Desweiteren kann in einer bevorzugten
Ausführung
der Speicher mit Daten von der CT vorgeladen werden (z.B. Konstanten,
Lookup-Tabellen, etc). Ebenfalls kann die CT in einer erweiterten
Ausführung
Daten (z.B. zum Debuggen oder für
Taskwechsel) aus dem Speicher über
0403 zurücklesen.
-
In einer bevorzugten Ausführung kann
eine RAM-PAE mehrere Anschlüsse
an das Bussystem 0104 aufweisen (dual-port oder multi-port), wodurch mehrere
Datentransfers gleichzeitig durchgeführt werden können.
-
In einer weiteren Ausführung kann
die RAM-PAE einen dedizierten Anschluß an einen externen Bus aufweisen.
-
RAM-PAEs können derart zusammengeschaltet
werden, dass aus mehreren (n) RAM-PAEs ein n-fach größerer Speicher
entsteht.
-
Beliebige weitere Ausgestaltungen
und Kombinationen der erläuterten
Erfindungen sind möglich
und einem Fachmann offensichtlich.
-
Sämtliche
erwähnten
PACT-Patentanmeldungen sind zu Offenbarungszwecken vollumfänglich eingegliedert.