DE19926538A1 - Hardware und Betriebsverfahren - Google Patents
Hardware und BetriebsverfahrenInfo
- Publication number
- DE19926538A1 DE19926538A1 DE19926538A DE19926538A DE19926538A1 DE 19926538 A1 DE19926538 A1 DE 19926538A1 DE 19926538 A DE19926538 A DE 19926538A DE 19926538 A DE19926538 A DE 19926538A DE 19926538 A1 DE19926538 A1 DE 19926538A1
- Authority
- DE
- Germany
- Prior art keywords
- graphs
- data
- hardware
- component
- time
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
- G06F8/456—Parallelism detection
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/45—Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
Die Erfindung betrifft eine ein- oder mehrdimensionale Zellstruktur. Hierbei ist eine zeitlich getrennte Sequenzierung vorgesehen.
Description
Die vorliegende Erfindung erstreckt sich auf das Gebiet von
programmierbaren und insbesondere während des Betriebes
umprogrammierbaren arithmetischen und/oder logischen
Bausteinen mit Vielzahl von arithmetischen und/oder logischen
Einheiten, deren Verschaltung ebenfalls programmierbar und
während des Betriebes umprogrammierbar ist. Derartige logische
Bausteine sind unter dem Oberbegriff FPGA von verschiedenen
Firmen verfügbar. Weiterhin sind mehrere Patente
veröffentlicht, die spezielle arithmetische Bausteine mit
automatischer Datensynchronisation und verbesserten
offenlegen.
Sämtliche beschriebene Bausteine besitzen eine zwei- oder
mehrdimensionale Anordnung von logischen und/oder
arithmetischen Einheiten, die über Bussysteme miteinander
verschaltbar sind.
Aufgabe der Erfindung ist es, ein Programmierverfahren zur
Verfügung zu stellen, das es ermöglicht die beschriebenen
Bausteine in gewöhnlichen Hochsprachen effizient zu
programmieren und dabei die Vorteile der durch die Vielzahl
von Einheiten entstehende Parallelität der beschriebenen
Bausteine weitgehend automatisch, vollständig und effizient zu
nutzen.
Bausteine der genannten Gattung werden zumeist unter
Verwendung gewöhnlicher Datenflussprachen programmiert. Dabei
treten zwei grundlegende Probleme auf:
- 1. Die Programmierung in Datenflussprachen ist für Programmierer gewöhnungsbedürftig, tief sequentielle Aufgaben lassen sich nur sehr umständlich beschreiben.
- 2. Große Applikationen und sequentielle Beschreibungen lassen sich mit den bestehenden Übersetzungsprogrammen (Synthese- Tools) nur bedingt auf die gewünschte Zieltechnologie abbilden (synthetisieren).
Für gewöhnlich werden Applikationen in mehrere
Teilapplikationen partitioniert, die dann einzeln auf die
Zieltechnologie synthetisiert werden (Fig. 1). Die einzelnen
Binärcodes werden dann auf jeweils einen Baustein geladen.
Wesentliche Voraussetzung der Erfindung ist das in DE 44 16 881
beschriebene Verfahren, das es ermöglicht, mehrere
partitionierte Teilapplikationen innerhalb eines Bausteines zu
nutzen, indem die zeitliche Abhängigkeit analysiert wird und
über Steuersignale sequentiell die jeweils erforderlichen
Teilapplikationen bei einer übergeordneten Ladeeinheit
angefordert und von dieser daraufhin auf den Baustein geladen
werden.
Existierende Synthese-Tools sind nur bedingt in der Lage
Programm-Schleifen auf Bausteine abzubilden (Fig. 2 (0201)).
Dabei werden sogenannte FOR-Schleifen (0202) als Primitiv-
Schleife häufig noch dadurch unterstützt, daß die Schleife
vollkommen auf die Ressourcen des Zielbausteines ausgewalzt
werden.
WHILE-Schleifen (0203) besitzen im Gegensatz zu FOR-Schleifen
keinen konstanten Abbruchswert. Vielmehr wird durch eine
Bedingung evaluiert, wann der Schleifenabbruch stattfindet.
Daher ist gewöhnlicherweise (wenn die Bedingung nicht konstant
ist) zur Synthesezeit nicht bekannt, wenn die Schleife
abbricht. Durch das dynamische Verhalten können Synthese-Tools
diese Schleifen nicht fest auf Hardware abgebildet d. h. auf
einen Zielbaustein übertragen werden.
Rekursionen sind grundsätzlich nicht auf Hardware abbildbar,
wann die Rekursionstiefe nicht zur Synthesezeit bekannt und
damit konstant ist. Bei der Rekursion werden mit jeder neuen
Rekursionsebene neue Ressourcen allokiert. Das würde bedeuten,
daß mit jeder Rekursionsebene neue Hardware zur Verfügung
gestellt werden muß, was aber dynamisch nicht möglich ist.
Selbst einfache Grundstrukturen sind von Synthesetools nur
dann abbildbar, wenn der Zielbaustein ausreichend groß ist,
d. h. ausreichende Ressourcen bietet.
Einfache zeitliche Abhängigkeiten (0301) werden durch heutige
Synthese-Tools nicht in mehrere Teilapplikationen
partitioniert und sind deshalb nur als Ganzes auf einen
Zielbaustein übertragbar.
Bedingte Ausführungen (0302) und Schleifen über Bedingungen
(0303) sind ebenfalls nur abbildbar, wenn ausreichende
Ressourcen auf dem Zielbaustein existieren.
Durch das in DE 44 16 881 beschriebene Verfahren ist es
möglich Bedingungen zur Laufzeit innerhalb der
Hardwarestrukturen der genannten Bausteine zu erkennen und
derart dynamisch darauf zu reagieren, daß die Funktion der
Hardware entsprechend der eingetretenen Bedingung modifiziert
wird, was im wesentlichen durch das Konfigurieren einer neuen
Struktur geschieht.
Ein wesentlicher Schritt in dem erfindungsgemäßen Verfahren
ist die Partitionierung von Graphen in zeitlich unabhängige
Teilgraphen.
Der Begriff "zeitliche Unabhängigkeit" wird damit definiert,
daß die Daten, die zwischen zwei Teilapplikationen übertragen
werden durch einen Speicher, gleich welcher Ausgestaltung
(also auch mittels einfacher Register), entkoppelt werden. Die
ist besonders an den Stellen eines Graphen möglich, an denen
eine klare Schnittstelle mit einer begrenzten und möglichst
minimalen Menge von Signalen zwischen den beiden
Teilapplikationen besteht.
Die zeitliche Unabhängigkeit kann in großen Graphen durch das
gezielte Einfügen von klar definierten und möglichste
einfachen Schnittstellen zum Speichern von Daten in einen
Zwischenspeicher herbeigeführt werden (vgl. Sn in Fig. 4).
Schleifen weisen grundsätzlich eine starke zeitliche
Unabhängigkeit auf, da sie lange Zeit über einer bestimmten
Menge von (zumeist) in der Schleife lokalen Variablen arbeiten
und nur beim Schleifeneintritt und beim verlassen der Schleife
eine Übertragung der Operanden bzw. des Ergebnisses erfordern.
Durch die zeitliche Unabhängigkeit wird erreicht, daß nach der
vollständigen Ausführung einer Teilapplikation die
nachfolgende Teilapplikation geladen werden kann, ohne daß
irgendwelche weiteren Abhängigkeiten oder Einflüsse auftreten.
Beim Speichern der Daten in den genannten Speicher kann ein
Signal (Trigger) generiert werden, das die übergeordneten
Ladeeinheit zum Nachladen der nächsten Teilapplikation
auffordert. Der Trigger kann bei der Verwendung von einfachen
Registern als Speicher immer generiert werden, wenn das
Register beschrieben wird. Bei der Verwendung von Speichern,
i. b. von solchen die nach dem FIFO-Prinzip arbeiten, ist die
Generierung des Triggers von mehreren Bedingungen abhängig.
Folgende Bedingungen können beispielsweise einzeln oder
kombiniert ein Trigger erzeugen:
- - Ergebnis-Speicher voll
- - Operanden-Speicher leer
- - keine neuen Operanden
- - Beliebige Bedingung innerhalb der Teilapplikation, generiert durch z. B.
- - Vergleicher
- - Zähler.
Eine Teilapplikation wird im folgenden auch Modul genannt, um
die Verständlichkeit aus Sicht der klassischen Programmierung
zu erhöhen. Aus demselben Grund werden Signale im folgenden
auch Variablen genannt. Dabei unterscheiden sich die Variablen
in einem Punkt wesentlich von herkömmlichen Variablen: Jeder
Variable ist ein Statussignal (Ready) zugeordnet, das anzeigt,
ob die Variable einen gültigen Wert besitzt. Wenn ein Signal
einen gültigen (berechneten) Wert besitzt, ist das
Statussignal Ready; wenn das Signal keinen gültigen Wert
besitzt (Berechnung noch nicht abgeschlossen), ist das
Statussignal Not_Ready. Das Prinzip ist ausführlich in der
Patentanmeldung PACT02 beschrieben.
Die in den folgenden Figuren gezeigten Graphen besitzen als
Graphenknoten immer in Modul, wobei davon ausgegangen wird,
daß mehrere Module auf einen Zielbaustein abgebildet werden
können. Das heißt, obwohl alle Module zeitlich voneinander
unabhängig sind, wird nur bei nach den Modulen eine
Umkonfiguration durchgeführt, bzw. ein Datenspeicher
eingefügt, die mit einem vertikalen Strich und Δt markiert
sind. Dieser Punkt wird Umkonfigurationszeitpunkt genannt.
Das bedeutet zusammenfassend:
- 1. Große Module können an geeigneten Stellen partitioniert werden und in kleine zeitlich voneinander unabhängige Module zerlegt werden.
- 2. Bei kleinen Modulen die sich gemeinsam auf einen Zielbaustein abgebildet werden können, wird auf die zeitliche Unabhängigkeit verzichtet. Dadurch werden Konfigurationsschritte eingespart und die Datenverarbeitung beschleunigt.
- 3. Die Umkonfigurationszeitpunkte werden entsprechend der Ressourcen der Zielbausteine positioniert. Dadurch ist eine beliebige Skalierung der Graphenlänge gegeben.
In Fig. 4a sind einige grundlegenden Eigenschaften des
erfindungsgemäßen Verfahrens dargestellt:
Die Module des Types A sind zu einer Gruppe zusammengefaßt und besitzen am Ende einen bedingten Sprung, entweder nach B1 oder B2. An dieser Position (0401) ist ein Umkonfigurationspunkt eingefügt, da es sinnvoll ist die Zweige des bedingten Sprunges als jeweils eine Gruppe zu betrachten (Fall 1). Würden dagegen beide Zweige von B (B1 und B2) zusätzlich zu A auf den Zielbaustein passen (Fall 2), wäre es sinnvoll nur einen Umkonfigurationspunkt bei 0402 einzufügen, da dadurch die Zahl der Konfigurationen verringert wird und sich die Verarbeitungsgeschwindigkeit erhöht. Beide Zweige (B1 und B2) springen bei 0402 nach C.
Die Module des Types A sind zu einer Gruppe zusammengefaßt und besitzen am Ende einen bedingten Sprung, entweder nach B1 oder B2. An dieser Position (0401) ist ein Umkonfigurationspunkt eingefügt, da es sinnvoll ist die Zweige des bedingten Sprunges als jeweils eine Gruppe zu betrachten (Fall 1). Würden dagegen beide Zweige von B (B1 und B2) zusätzlich zu A auf den Zielbaustein passen (Fall 2), wäre es sinnvoll nur einen Umkonfigurationspunkt bei 0402 einzufügen, da dadurch die Zahl der Konfigurationen verringert wird und sich die Verarbeitungsgeschwindigkeit erhöht. Beide Zweige (B1 und B2) springen bei 0402 nach C.
Die Konfiguration der Zellen auf dem Zielbaustein ist in Fig.
4b schematisch dargestellt. Dabei werden die Funktionen der
einzelnen Graphenknoten auf die Zellen des Zielbausteins
abgebildet. Jeweils eine Zeile stellt eine Konfiguration dar.
Die gestrichelten Pfeile bei einem Zeilenwechsel zeigen eine
Umkonfiguration. Sn ist eine datenspeichernde Zelle, von
beliebiger Ausgestaltung (Register, Speicher, etc.). Dabei ist
SnI ein Speicher, der Daten entgegennimmt und SnO ein Speicher
der Daten ausgibt. Der Speicher Sn ist für gleiche n jeweils
derselbe, I und O kennzeichnen die Datentransferrichtung.
Beide Fälle des bedingten Sprunges (Fall 1, Fall 2) sind
dargestellt.
Das Modell in Fig. 4 entspricht einem Datenflußmodell, jedoch
mit der wesentlichen Erweiterung der Umkonfigurationspunkt und
der damit erreichbaren Partitionierung des Graphen, wobei die
zwischen den Partitionen übertragenen Daten
zwischengespeichert werden.
Im Modell von Fig. 5a wird aus einer beliebigen Graphenmenge
und -Konstellation (0501) selektiv ein Graph aus einer Menge
von Graphen B aufgerufen. Nach der Ausführung von B gelangen
die Daten nach 0501 zurück.
Wird in 0501 ein ausreichend großer Sequencer (A)
implementiert, ist mit dem Modell ein den typischen
Prozessoren sehr ähnliches Prinzip implementierbar. Dabei
gelangen
- 1. Daten in den Sequenzer A, die dieser als Befehle dekodiert und entsprechend dem "von Neumann"-Prinzip darauf reagiert;
- 2. Daten in den Sequenzer A, die als Daten betrachtet werden und an ein fest konfiguriertes Rechenwerk C zur Berechnung weitergeleitet werden.
Ver Graph B stellt selektierbar ein besonderes Rechenwerke
und/oder besondere Opcodes für bestimmte Funktionen zur
Verfügung und wird alternativ zur Beschleunigung von C
verwendet. Beispielsweise kann B1 ein optimierter Algorithmus
zu Berechnung von Matrixmultiplikationen sein, während B2
einen FIR-Filter und B3 eine Mustererkennung darstellt.
Entsprechend eines Opcodes der von 0501 dekodiert wird, wird
der geeignete bzw. entsprechende Graph B aufgerufen.
Fig. 5b schematisiert die Abbildung auf die einzelnen Zellen,
wobei in 0502 der pipelineartige Rechenwerks-Character
symbolisiert wird.
Während in den Umkonfigurationspunkten von Fig. 4 vorzugsweise
größere Speicher zum Zwischenspeichern der Daten eingefügt
werden, ist eine einfache Synchronisation der Daten in den
Umkonfigurationspunkten von Fig. 5 ausreichend, da der
Datenstrom vorzugsweise als ganzer durch den Graphen B läuft
und der Graph B nicht weiter partitioniert ist; dadurch ist
das Zwischenspeichern der Daten überflüssig.
In Fig. 6a sind verschiedene Schleifen dargestellt. Schleifen
können grundsätzlich auf drei Arten behandelt werden:
- 1. Hardware-Ansatz: Schleifen werden vollständig ausgewalzt auf die Zielhardware abgebildet (0601a/b). Wie bereits erläutert ist dies nur bei wenigen Schleifenarten möglich.
- 2. Datenfluß-Ansatz: Innerhalb der Datenflusses werden Schleifen über mehrere Zellen hinweg aufgebaut (0602a/b). Das Ende der Schleife wird auf den Schleifenanfang rückgekoppelt.
- 3. Sequenzer-Ansatz: Ein Sequenzer mit minimalem Befehlssatz führt die Schleife aus (0603a/b). Dabei sind die Zellen der Zielbausteine so ausgestaltet, daß sie den entsprechenden Sequenzer beinhalten (vgl. Fig. 11a/b).
Durch eine geeignete Zerlegung von Schleifen kann deren
Ausführung ggf. optimiert werden:
- 1. Unter Verwendung von Optimierungsmethoden nach dem Stand der Technik läßt sich häufig der Schleifenrumpf, also der wiederholt auszuführende Teil, dadurch optimieren, daß bestimmte Operationen aus der Schleife entfernt werden und vor oder hinter die Schleife gestellt werden (0604a/b). Dadurch wird die Menge der zu sequencenden Befehle erheblich reduziert. Die entfernten Operationen werden nur einmal vor bzw. nach Ausführung der Schleife durchlaufen.
- 2. Eine weitere Optimierungsmöglichkeit ist das Teilen von Schleifen in mehrere kleinere oder kürzere Schleifen. Dabei findet die Teilung derart statt, daß mehrere parallele oder mehrere sequentielle (0605a/b) Schleifen entstehen.
Fig. 7 verdeutlicht die Implementierung einer Rekursion. Dabei
werden dieselben Ressourcen (0701) in Form von Zellen für jede
Rekursionsebene (1-3) verwendet. Die Ergebnisse einer jeden
Rekursionsebene (1-3) werden beim Aufbau (0711) in einen nach
dem Stack-Prinzip aufgebauten Speicher (0702) geschrieben.
Gleichzeitig mit dem Abbau (0712) der Ebenen wird der Stack
abgebaut.
Ein Modul kann beispielsweise folgendermaßen deklariert
werden:
module kennzeichnet den Beginn eines Modules.
input/output definiert die Ein-/Ausgangsvariablen mit den Typen tyn.
begin . . . end markieren den Rumpf des Modules.
register <regname1/2< übergibt das Ergebnis an den Output, wobei des Ergebnis in dem durch <regname1/2< spezifizierten Register zwischengespeichert wird. <regname1/2< ist dabei eine globale Referenz auf ein bestimmtes Register.
input/output definiert die Ein-/Ausgangsvariablen mit den Typen tyn.
begin . . . end markieren den Rumpf des Modules.
register <regname1/2< übergibt das Ergebnis an den Output, wobei des Ergebnis in dem durch <regname1/2< spezifizierten Register zwischengespeichert wird. <regname1/2< ist dabei eine globale Referenz auf ein bestimmtes Register.
Als weitere Übergabemodi an den Output stehen beispielsweise
folgende Speicherarten zur Verfügung:
fifo <fifoname<, wobei die Daten an einen nach dem FIFO- Prinzip arbeitenden Speicher übergeben werden. fifoname ißt dabei eine globale Referenz auf einen bestimmten, im FIFO- Modus arbeitenden Speicher. terminate@ wird dabei um den Parameter bzw. das Signal. "fifofull" erweitert, der/das anzeigt, daß der Speicher voll ist.
stack <stackname<, wobei die Daten an einen nach dem Stack- Prinzip arbeitenden Speicher übergeben werden. stackname ist dabei eine globale Referenz auf einen bestimmten, im Stack- Modus arbeitenden Speicher.
terminate@ unterscheidet die Programmierung entsprechend des erfindungsgemäßen Verfahrens von der herkömmlichen sequentiellen Programmierung. Der Befehl definiert das Abbruchkriterium des Modules. Die Ergebnisvariablen res1 und res2 werden von terminate@ nicht mit ihrem tatsächlichen Wert evaluiert, statt dessen wird nur die Gültigkeit der Variablen (also deren Statussignal) geprüft. Sind beide Variablen gültig, terminiert das Modul mit dem Wert 1. Das bedeutet, ein Signal mit dem Wert 1 wird an die übergeordneten Ladeeinheit weitergeleitet, woraufhin die übergeordneten Ladeeinheit das nachfolgende Modul lädt.
fifo <fifoname<, wobei die Daten an einen nach dem FIFO- Prinzip arbeitenden Speicher übergeben werden. fifoname ißt dabei eine globale Referenz auf einen bestimmten, im FIFO- Modus arbeitenden Speicher. terminate@ wird dabei um den Parameter bzw. das Signal. "fifofull" erweitert, der/das anzeigt, daß der Speicher voll ist.
stack <stackname<, wobei die Daten an einen nach dem Stack- Prinzip arbeitenden Speicher übergeben werden. stackname ist dabei eine globale Referenz auf einen bestimmten, im Stack- Modus arbeitenden Speicher.
terminate@ unterscheidet die Programmierung entsprechend des erfindungsgemäßen Verfahrens von der herkömmlichen sequentiellen Programmierung. Der Befehl definiert das Abbruchkriterium des Modules. Die Ergebnisvariablen res1 und res2 werden von terminate@ nicht mit ihrem tatsächlichen Wert evaluiert, statt dessen wird nur die Gültigkeit der Variablen (also deren Statussignal) geprüft. Sind beide Variablen gültig, terminiert das Modul mit dem Wert 1. Das bedeutet, ein Signal mit dem Wert 1 wird an die übergeordneten Ladeeinheit weitergeleitet, woraufhin die übergeordneten Ladeeinheit das nachfolgende Modul lädt.
register wird in diesem Beispiel über input-Daten definiert.
Dabei ist <regname1< derselbe wie in example1. Dies bewirkt,
daß das Register, das die output-Daten in example1 aufnimmt,
die input-Daten für example2 zur Verfügung stellt.
fifo definiert einen FIFO-Speicher der Tiefe 256 für die Ausgangsdaten res1. Das Full-Flag (fifofull) des FIFO- Speichers wird in terminate@ als Abbruchkriterium verwendet.
fifo definiert einen FIFO-Speicher der Tiefe 256 für die Ausgangsdaten res1. Das Full-Flag (fifofull) des FIFO- Speichers wird in terminate@ als Abbruchkriterium verwendet.
define definiert eine Schnittstelle für Daten (Register,
Speicher, etc.). Bei der Definition werden die erforderlichen
Ressourcen, sowie die Bezeichnung der Schnittstelle angegeben.
Da die Ressourcen eindeutig angegeben werden und nur einmal
verwendet werden können, ist die Definition global, d. h. die
Bezeichnung gilt für das gesamte Programm.
call ruft ein Modul als Unterprogramm auf.
signal definiert ein Signal als Ausgangssignal, ohne daß eine Zwischenspeicherung verwendet wird.
call ruft ein Modul als Unterprogramm auf.
signal definiert ein Signal als Ausgangssignal, ohne daß eine Zwischenspeicherung verwendet wird.
Durch terminate@ (example2) wird das Modul main terminiert,
sobald das Unterprogramm example2 terminiert.
Durch die globale Deklaration "define . . ." ist es prinzipiell
nicht mehr notwendig, die so definierten input/output Signale
in die Schnittstellen-Deklaration der Module aufzunehmen. Die
entsprechend modifizierten Beispiel-Module würden dann
folgendermaßen aussehen:
. . .
Zur Bestimmung der Zustände innerhalb eines Graphen werden die
Statusregister der einzelnen Zellen (PAEs) Über ein zusätzlich
zum Datenbus (0801) existierendes Status-Bussystem (0802) al
len anderen Rechenwerken zur Verfügung gestellt (Fig. 8b). Das
bedeutet, daß eine Zelle (PAE X) die Statusinformation einer
anderen Zelle (PAE Y) evaluieren kann und dementsprechend die
Daten verarbeitet. Um den Unterschied zu bestehenden Paralle
rechnersystemen zu verdeutlichen, ist in Fig. 8a der Stand der
Technik angegeben. Dabei ist ein
Multiprozessorsystem gezeigt, dessen Prozessoren über einen
gemeinsamen Datenbus (0803) miteinander verbünden sind. Ein
explizites Bussystem für den synchronen Austausch von Daten
und Status existiert nicht.
Abschließend soll angemerkt werden, daß je nach Aufgabe sowohl
der Datenflußgraph, als auch der Kontrollflußgraph entspre
chend dem beschriebenen Verfahren behandelt werden kann.
Durch PACT02 und PACT04 ist der Stand der Technik in Bezug aµf
die Konfigurationseigenschaften von Zellen (PAEs)definiert und
veröffentlicht in DE 196 51 075 (PACT02) sowie
in DE 196 54 846 (PACT04).
Dabei soll auf zwei Eigenschaften eingegangen werden:
- 1. Einer PAE ist gemäß PACT02 ein Satz von Konfigurationsregi stern zugeordnet, der eine Konfiguration beinhaltet (Fig. 8a).
- 2. Eine Gruppe von PAEs kann gemäß PACT04 auf einen Speicher zum Speichern oder Lesen von Daten zugreifen (Fig. 8b).
Aufgabe ist es,
- a) ein Verfahren zu schaffen, das das Umkonfigurieren von. PAEs beschleunigt und zeitlich von der übergeordneten Ladeeinheit entkoppelt, und
- b) das Verfahren so auszulegen, daß gleichzeitig die Möglichkeit geschaffen wird über mehrere Konfigurationen zu Sequenzen.
Das Konfigurationsregister wird von der übergeordneten
Ladeeinheit (CT) entkoppelt (Fig. 9), indem ein Satz von
mehreren Konfigurationsregistern (0901) verwendet wird. Immer
genau eines der Konfigurationsregister bestimmt selektiv die
Funktion dar PAE. Die Auswahl des aktiven Registers wird über
einen Multiplexer (0902) durchgeführt. In jedes der
Konfigurationsregister kann die CT beliebig schreiben, sofern
dieses nicht die aktuelle Konfiguration der PAE bestimmt.
Welches Konfigurationsregister von 0902 selektiert wird kann
durch verschiedene Quellen bestimmt werden:
- 1. Ein beliebiges Status-Signal oder eine Gruppe beliebiger Status-Signale, die über ein Bussystem (0802) an 0902 geführt werden (Fig. 9a). Die Status-Signale werden dabei von beliebigen PAEs generiert oder durch externe Anschlüsse des Bausteins zur Verfügung gestellt (vgl. Fig. 8).
- 2. Das Status-Signal der PAE, die von 0901/0902 konfiguriert wird, dient zur Selektion (Fig. 9b).
- 3. Ein von der übergeordneten CT generiertes Signal dient zur Selektion (Fig. 9c).
Dabei ist es möglich wahlweise die eingehenden Signale (0903,
0904, 0905) mittels eines Registers für einen bestimmten
Zeitraum zu speichern.
Durch den Einsatz mehrere Register wird die CT zeitlich
entkoppelt. Das bedeutet, die CT kann mehrere Konfigurationen
"vorladen", ohne daß eine direkte zeitliche Abhängigkeit
besteht.
Lediglich das selektierte Register in 0901 noch nicht geladen
ist, wird mit der Konfiguration der PAE so lange gewartet, bis
die CT das Register geladen hat. Um festzustellen, ob ein
Register eine gültige Information besitzt kann ein "Valid-Bit"
(0906) pro Register eingeführt werden, das von der CT gesetzt
wird. Ist 0906 bei einem selektierten Register nicht gesetzt,
wird über ein Signal die CT zum schnellstmöglichen Setzten des
Registers aufgefordert.
Das in Fig. 9 beschriebene Verfahren ist einfach zu einem
Sequenzer erweiterbar (Fig. 10). Dazu wird ein Mikrokontroller
(1001) zur Ansteuerung der Selektionssignale des Multiplexers
(0902) verwendet. Der Sequenzer bestimmt dabei abhängig von
der aktuell selektierten Konfiguration (1002) und einer
zusätzlichen Statusinformation (1003/1004) die nächste zu
selektierende Konfiguration. Dabei kann die Statusinformation
- a) der Status der Status-Signal der PAE, die von 0901/0902 konfiguriert wird sein (Fig. 10a).
- b) ein beliebiges über 0802 zugeführtes Statussignal sein (Fig. 10b).
- c) eine Kombination aus (a) und (b) sein.
Zum einfachen Verständnis kann 0901 als ein Speicher
betrachtet werden, wobei über 0902 ein Befehl von 1001
adressiert wird. Die Adressierung ist dabei abhängig vom
Befehl selbst und von einem Statusregister. Insoweit
entspricht der Aufbau einer "von Neumann" Maschine, mit dem
Unterschied,
- a) der universellen Einsetzbarkeit, also den Sequenzer nicht zu verwenden (vgl. Fig. 9)
- b) daß das Statussignal nicht von dem dem Sequenzer zugeordneten Rechenwerk (PAE) generiert werden muß, sondern von einem beliebigen anderen Rechenwerk stammen kann (vgl. Fig. 10b).
Wichtig ist, daß der Sequenzer dabei Sprünge, insbesondere
auch bedingte Sprünge, innerhalb von 0901 ausführen kann.
Ein weiteres zusätzliches oder alternatives Verfahren (Fig.
11) zum Aufbau von Sequenzern innerhalb der genannten
Bausteine ist die Verwendung der internen Datenspeicher (1101)
zum Speichern der Konfigurationsinformation für eine PAE.
Dabei wird der Datenausgang eines Speichers auf einen
Konfigurationseingang einer PAE geschaltet (1102). Die Adresse
(1103) für 1101 kann dabei von derselben PAE oder einer
beliebigen anderen generiert werden.
Bei diesem Verfahren ist der Sequenzer nicht fest
implementiert, sondern wird durch eine PAE oder eine Gruppe
von PAEs nachgebildet.
Claims (2)
1. Verfahren zum Ausführen von Programmen auf einem Baustein
mit ein- oder mehrdimensionaler Zellstruktur, dadurch ge
kennzeichnet, dass Datenfluss- oder Kontrollflussgraphen in
zeitlich getrennte Teilgraphen partitioniert werden und se
quentiell auf den Baustein abgebildet und ausgeführt wer
den.
2. Hardware mit entkoppeltem Konfigurationsregister.
Priority Applications (14)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE19926538A DE19926538A1 (de) | 1999-06-10 | 1999-06-10 | Hardware und Betriebsverfahren |
| US10/009,649 US8230411B1 (en) | 1999-06-10 | 2000-06-13 | Method for interleaving a program over a plurality of cells |
| DE10081643T DE10081643D2 (de) | 1999-06-10 | 2000-06-13 | Sequenz-Partitionierung auf Zellstrukturen |
| CN00811550A CN1378665A (zh) | 1999-06-10 | 2000-06-13 | 编程概念 |
| EP00943684.1A EP1228440B1 (de) | 1999-06-10 | 2000-06-13 | Sequenz-partitionierung auf zellstrukturen |
| JP2001503066A JP2003505753A (ja) | 1999-06-10 | 2000-06-13 | セル構造におけるシーケンス分割方法 |
| AU58053/00A AU5805300A (en) | 1999-06-10 | 2000-06-13 | Sequence partitioning in cell structures |
| PCT/DE2000/001869 WO2000077652A2 (de) | 1999-06-10 | 2000-06-13 | Sequenz-partitionierung auf zellstrukturen |
| US12/720,898 US8726250B2 (en) | 1999-06-10 | 2010-03-10 | Configurable logic integrated circuit having a multidimensional structure of configurable elements |
| US12/840,559 US20110012640A1 (en) | 1999-06-10 | 2010-07-21 | Configurable logic integrated circuit having a multidimensional structure of configurable elements |
| US12/840,477 US8312200B2 (en) | 1999-06-10 | 2010-07-21 | Processor chip including a plurality of cache elements connected to a plurality of processor cores |
| US14/276,449 US9690747B2 (en) | 1999-06-10 | 2014-05-13 | Configurable logic integrated circuit having a multidimensional structure of configurable elements |
| US15/629,720 US10409765B2 (en) | 1999-06-10 | 2017-06-21 | Method for providing subapplications to an array of ALUs |
| US16/547,796 US20200057749A1 (en) | 1999-06-10 | 2019-08-22 | Method for providing subapplications to an array of alus |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| DE19926538A DE19926538A1 (de) | 1999-06-10 | 1999-06-10 | Hardware und Betriebsverfahren |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| DE19926538A1 true DE19926538A1 (de) | 2000-12-14 |
Family
ID=7910839
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| DE19926538A Withdrawn DE19926538A1 (de) | 1999-06-10 | 1999-06-10 | Hardware und Betriebsverfahren |
Country Status (1)
| Country | Link |
|---|---|
| DE (1) | DE19926538A1 (de) |
Cited By (36)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2003025781A2 (de) | 2001-09-19 | 2003-03-27 | Pact Xpp Technologies Ag | Verfahren zur konfiguration der verbindung zwischen datenverarbeitungszellen |
| US6968452B2 (en) | 1997-02-08 | 2005-11-22 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable unit |
| US6990555B2 (en) | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
| US7003660B2 (en) | 2000-06-13 | 2006-02-21 | Pact Xpp Technologies Ag | Pipeline configuration unit protocols and communication |
| US7010667B2 (en) | 1997-02-11 | 2006-03-07 | Pact Xpp Technologies Ag | Internal bus system for DFPS and units with two- or multi-dimensional programmable cell architectures, for managing large volumes of data with a high interconnection complexity |
| US7028107B2 (en) | 1996-12-27 | 2006-04-11 | Pact Xpp Technologies Ag | Process for automatic dynamic reloading of data flow processors (DFPS) and units with two- or three- dimensional programmable cell architectures (FPGAS, DPGAS, and the like) |
| US7036036B2 (en) | 1997-02-08 | 2006-04-25 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable module |
| US7174443B1 (en) | 1996-12-20 | 2007-02-06 | Pact Xpp Technologies Ag | Run-time reconfiguration method for programmable units |
| US7210129B2 (en) | 2001-08-16 | 2007-04-24 | Pact Xpp Technologies Ag | Method for translating programs for reconfigurable architectures |
| US7237087B2 (en) | 1996-12-09 | 2007-06-26 | Pact Xpp Technologies Ag | Reconfigurable multidimensional array processor allowing runtime reconfiguration of selected individual array cells |
| US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
| US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
| US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
| US7577822B2 (en) | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
| US7581076B2 (en) | 2001-03-05 | 2009-08-25 | Pact Xpp Technologies Ag | Methods and devices for treating and/or processing data |
| US7595659B2 (en) | 2000-10-09 | 2009-09-29 | Pact Xpp Technologies Ag | Logic cell array and bus system |
| US7650448B2 (en) | 1996-12-20 | 2010-01-19 | Pact Xpp Technologies Ag | I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures |
| US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
| US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
| US7822881B2 (en) | 1996-12-27 | 2010-10-26 | Martin Vorbach | Process for automatic dynamic reloading of data flow processors (DFPs) and units with two- or three-dimensional programmable cell architectures (FPGAs, DPGAs, and the like) |
| US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
| US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
| US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
| US8099618B2 (en) | 2001-03-05 | 2012-01-17 | Martin Vorbach | Methods and devices for treating and processing data |
| US8127061B2 (en) | 2002-02-18 | 2012-02-28 | Martin Vorbach | Bus systems and reconfiguration methods |
| US8156284B2 (en) | 2002-08-07 | 2012-04-10 | Martin Vorbach | Data processing method and device |
| US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
| US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
| US8281108B2 (en) | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
| US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
| US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
| US8812820B2 (en) | 2003-08-28 | 2014-08-19 | Pact Xpp Technologies Ag | Data processing device and method |
| US8819505B2 (en) | 1997-12-22 | 2014-08-26 | Pact Xpp Technologies Ag | Data processor having disabled cores |
| US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
| US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
| CN112698954A (zh) * | 2021-01-14 | 2021-04-23 | 上海交通大学 | 一种基于子图解耦的粗粒度可重构阵列调度方法 |
-
1999
- 1999-06-10 DE DE19926538A patent/DE19926538A1/de not_active Withdrawn
Cited By (68)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US7237087B2 (en) | 1996-12-09 | 2007-06-26 | Pact Xpp Technologies Ag | Reconfigurable multidimensional array processor allowing runtime reconfiguration of selected individual array cells |
| US8156312B2 (en) | 1996-12-09 | 2012-04-10 | Martin Vorbach | Processor chip for reconfigurable data processing, for processing numeric and logic operations and including function and interconnection control units |
| US7822968B2 (en) | 1996-12-09 | 2010-10-26 | Martin Vorbach | Circuit having a multidimensional structure of configurable cells that include multi-bit-wide inputs and outputs |
| US7565525B2 (en) | 1996-12-09 | 2009-07-21 | Pact Xpp Technologies Ag | Runtime configurable arithmetic and logic cell |
| US7174443B1 (en) | 1996-12-20 | 2007-02-06 | Pact Xpp Technologies Ag | Run-time reconfiguration method for programmable units |
| US8195856B2 (en) | 1996-12-20 | 2012-06-05 | Martin Vorbach | I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures |
| US7899962B2 (en) | 1996-12-20 | 2011-03-01 | Martin Vorbach | I/O and memory bus system for DFPs and units with two- or multi-dimensional programmable cell architectures |
| US7650448B2 (en) | 1996-12-20 | 2010-01-19 | Pact Xpp Technologies Ag | I/O and memory bus system for DFPS and units with two- or multi-dimensional programmable cell architectures |
| US7028107B2 (en) | 1996-12-27 | 2006-04-11 | Pact Xpp Technologies Ag | Process for automatic dynamic reloading of data flow processors (DFPS) and units with two- or three- dimensional programmable cell architectures (FPGAS, DPGAS, and the like) |
| US7822881B2 (en) | 1996-12-27 | 2010-10-26 | Martin Vorbach | Process for automatic dynamic reloading of data flow processors (DFPs) and units with two- or three-dimensional programmable cell architectures (FPGAs, DPGAs, and the like) |
| US7036036B2 (en) | 1997-02-08 | 2006-04-25 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable module |
| USRE45223E1 (en) | 1997-02-08 | 2014-10-28 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable module |
| USRE44365E1 (en) | 1997-02-08 | 2013-07-09 | Martin Vorbach | Method of self-synchronization of configurable elements of a programmable module |
| USRE44383E1 (en) | 1997-02-08 | 2013-07-16 | Martin Vorbach | Method of self-synchronization of configurable elements of a programmable module |
| US6968452B2 (en) | 1997-02-08 | 2005-11-22 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable unit |
| USRE45109E1 (en) | 1997-02-08 | 2014-09-02 | Pact Xpp Technologies Ag | Method of self-synchronization of configurable elements of a programmable module |
| US7010667B2 (en) | 1997-02-11 | 2006-03-07 | Pact Xpp Technologies Ag | Internal bus system for DFPS and units with two- or multi-dimensional programmable cell architectures, for managing large volumes of data with a high interconnection complexity |
| US8819505B2 (en) | 1997-12-22 | 2014-08-26 | Pact Xpp Technologies Ag | Data processor having disabled cores |
| US8468329B2 (en) | 1999-02-25 | 2013-06-18 | Martin Vorbach | Pipeline configuration protocol and configuration unit communication |
| US8312200B2 (en) | 1999-06-10 | 2012-11-13 | Martin Vorbach | Processor chip including a plurality of cache elements connected to a plurality of processor cores |
| US8726250B2 (en) | 1999-06-10 | 2014-05-13 | Pact Xpp Technologies Ag | Configurable logic integrated circuit having a multidimensional structure of configurable elements |
| US8230411B1 (en) | 1999-06-10 | 2012-07-24 | Martin Vorbach | Method for interleaving a program over a plurality of cells |
| US7003660B2 (en) | 2000-06-13 | 2006-02-21 | Pact Xpp Technologies Ag | Pipeline configuration unit protocols and communication |
| US8301872B2 (en) | 2000-06-13 | 2012-10-30 | Martin Vorbach | Pipeline configuration protocol and configuration unit communication |
| US8471593B2 (en) | 2000-10-06 | 2013-06-25 | Martin Vorbach | Logic cell array and bus system |
| US9047440B2 (en) | 2000-10-06 | 2015-06-02 | Pact Xpp Technologies Ag | Logical cell array and bus system |
| US8058899B2 (en) | 2000-10-06 | 2011-11-15 | Martin Vorbach | Logic cell array and bus system |
| US7595659B2 (en) | 2000-10-09 | 2009-09-29 | Pact Xpp Technologies Ag | Logic cell array and bus system |
| US6990555B2 (en) | 2001-01-09 | 2006-01-24 | Pact Xpp Technologies Ag | Method of hierarchical caching of configuration data having dataflow processors and modules having two- or multidimensional programmable cell structure (FPGAs, DPGAs, etc.) |
| US7581076B2 (en) | 2001-03-05 | 2009-08-25 | Pact Xpp Technologies Ag | Methods and devices for treating and/or processing data |
| US8312301B2 (en) | 2001-03-05 | 2012-11-13 | Martin Vorbach | Methods and devices for treating and processing data |
| US9075605B2 (en) | 2001-03-05 | 2015-07-07 | Pact Xpp Technologies Ag | Methods and devices for treating and processing data |
| US8099618B2 (en) | 2001-03-05 | 2012-01-17 | Martin Vorbach | Methods and devices for treating and processing data |
| US8145881B2 (en) | 2001-03-05 | 2012-03-27 | Martin Vorbach | Data processing device and method |
| US9037807B2 (en) | 2001-03-05 | 2015-05-19 | Pact Xpp Technologies Ag | Processor arrangement on a chip including data processing, memory, and interface elements |
| US7844796B2 (en) | 2001-03-05 | 2010-11-30 | Martin Vorbach | Data processing device and method |
| US7657877B2 (en) | 2001-06-20 | 2010-02-02 | Pact Xpp Technologies Ag | Method for processing data |
| US7210129B2 (en) | 2001-08-16 | 2007-04-24 | Pact Xpp Technologies Ag | Method for translating programs for reconfigurable architectures |
| US8869121B2 (en) | 2001-08-16 | 2014-10-21 | Pact Xpp Technologies Ag | Method for the translation of programs for reconfigurable architectures |
| US7996827B2 (en) | 2001-08-16 | 2011-08-09 | Martin Vorbach | Method for the translation of programs for reconfigurable architectures |
| US8429385B2 (en) | 2001-09-03 | 2013-04-23 | Martin Vorbach | Device including a field having function cells and information providing cells controlled by the function cells |
| US8209653B2 (en) | 2001-09-03 | 2012-06-26 | Martin Vorbach | Router |
| US8069373B2 (en) | 2001-09-03 | 2011-11-29 | Martin Vorbach | Method for debugging reconfigurable architectures |
| US7266725B2 (en) | 2001-09-03 | 2007-09-04 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
| US7434191B2 (en) | 2001-09-03 | 2008-10-07 | Pact Xpp Technologies Ag | Router |
| US7480825B2 (en) | 2001-09-03 | 2009-01-20 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
| US8686549B2 (en) | 2001-09-03 | 2014-04-01 | Martin Vorbach | Reconfigurable elements |
| US8407525B2 (en) | 2001-09-03 | 2013-03-26 | Pact Xpp Technologies Ag | Method for debugging reconfigurable architectures |
| US7840842B2 (en) | 2001-09-03 | 2010-11-23 | Martin Vorbach | Method for debugging reconfigurable architectures |
| US8686475B2 (en) | 2001-09-19 | 2014-04-01 | Pact Xpp Technologies Ag | Reconfigurable elements |
| WO2003025781A2 (de) | 2001-09-19 | 2003-03-27 | Pact Xpp Technologies Ag | Verfahren zur konfiguration der verbindung zwischen datenverarbeitungszellen |
| US7577822B2 (en) | 2001-12-14 | 2009-08-18 | Pact Xpp Technologies Ag | Parallel task operation in processor and reconfigurable coprocessor configured based on information in link list including termination information for synchronization |
| US8281108B2 (en) | 2002-01-19 | 2012-10-02 | Martin Vorbach | Reconfigurable general purpose processor having time restricted configurations |
| US8127061B2 (en) | 2002-02-18 | 2012-02-28 | Martin Vorbach | Bus systems and reconfiguration methods |
| US8914590B2 (en) | 2002-08-07 | 2014-12-16 | Pact Xpp Technologies Ag | Data processing method and device |
| US8156284B2 (en) | 2002-08-07 | 2012-04-10 | Martin Vorbach | Data processing method and device |
| US8281265B2 (en) | 2002-08-07 | 2012-10-02 | Martin Vorbach | Method and device for processing data |
| US7657861B2 (en) | 2002-08-07 | 2010-02-02 | Pact Xpp Technologies Ag | Method and device for processing data |
| US7782087B2 (en) | 2002-09-06 | 2010-08-24 | Martin Vorbach | Reconfigurable sequencer structure |
| US7394284B2 (en) | 2002-09-06 | 2008-07-01 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
| US7928763B2 (en) | 2002-09-06 | 2011-04-19 | Martin Vorbach | Multi-core processing system |
| US8310274B2 (en) | 2002-09-06 | 2012-11-13 | Martin Vorbach | Reconfigurable sequencer structure |
| US7602214B2 (en) | 2002-09-06 | 2009-10-13 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
| US8803552B2 (en) | 2002-09-06 | 2014-08-12 | Pact Xpp Technologies Ag | Reconfigurable sequencer structure |
| US8812820B2 (en) | 2003-08-28 | 2014-08-19 | Pact Xpp Technologies Ag | Data processing device and method |
| US8250503B2 (en) | 2006-01-18 | 2012-08-21 | Martin Vorbach | Hardware definition method including determining whether to implement a function as hardware or software |
| CN112698954A (zh) * | 2021-01-14 | 2021-04-23 | 上海交通大学 | 一种基于子图解耦的粗粒度可重构阵列调度方法 |
| CN112698954B (zh) * | 2021-01-14 | 2022-05-10 | 上海交通大学 | 一种基于子图解耦的粗粒度可重构阵列调度方法 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| EP1228440B1 (de) | Sequenz-partitionierung auf zellstrukturen | |
| DE3751356T2 (de) | Informationsverarbeitungssystem. | |
| EP1146432B1 (de) | Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit | |
| DE69227664T2 (de) | Hardwarekonfiguriertes Betriebssystemkern für einen Multitaskprozessor | |
| DE69622305T2 (de) | Verfahren und Gerät für einen optimierenden Kompiler | |
| DE68918754T2 (de) | Datenverarbeitungsgerät mit selektivem Befehlsvorausholen. | |
| DE68927946T2 (de) | Verfahren und Vorrichtung für die Synchronisierung von parallelen Prozessoren unter Verwendung einer unscharf definierten Sperre | |
| DE69114333T2 (de) | Rechner mit der Fähigkeit mehrere Befehle gleichzeitig auszuführen. | |
| DE10028397A1 (de) | Registrierverfahren | |
| EP2765528B1 (de) | Wahlfreier Zugriff auf Signalwerte eines FPGA zur Laufzeit | |
| DE19855806A1 (de) | Vorrichtung und Verfahren zum Durchführen von Unterprogrammaufruf- und Rücksprungoperationen | |
| DE69130757T2 (de) | Ausführungsvorrichtung für bedingte Verzweigungsbefehle | |
| DE10297624T5 (de) | Steuerung von Kompatibilitätsgraden von Binärcode-Übersetzungen zwischen Befehlssatzarchitekturen | |
| DE68924719T2 (de) | Vorrichtung und Verfahren zur Ausführung eines Unterprogramms in einem Datenverarbeitungssystem mit Blockumschaltung. | |
| WO2003017095A2 (de) | Verfahren zum übersetzen von programmen für rekonfigurierbare architekturen | |
| DE69327504T2 (de) | Datenprozessor mit Operationseinheiten, die gemeinsam Gruppen von Registerspeichern benutzen | |
| DE19729618A1 (de) | Mikroprozessor und Mehrprozessorsystem | |
| EP0825540B1 (de) | Prozessor mit Pipelining-Aufbau | |
| DE3855524T2 (de) | Arithmetik-Parallelverarbeitungseinheit und zugehöriger Kompilator | |
| DE3114921A1 (de) | Datenverarbeitungssystem | |
| DE4134392A1 (de) | Verfahren und vorrichtung zum ungueltigmachen von befehlen in geraeten mit parallelverarbeitung | |
| EP1117037B1 (de) | Datenverarbeitungsvorrichtung zum parallelen Verarbeiten von unabhängigen Prozessen (Threads) | |
| DE69804444T2 (de) | Prozessor -steuergerät zur beschleunigung der befehlsausgaberate | |
| DE68928300T2 (de) | Verfahren und Vorrichtung für Pipeline-Befehlsausführung | |
| DE69528824T2 (de) | Apparat und verfahren zum erneuern von informationen in einem beschreibbaren mikrokode-kontrollspeicher |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 8181 | Inventor (new situation) |
Free format text: VORBACH, MARTIN, 80689 MUENCHEN, DE NUECKEL, ARMIN, DR., 76777 NEUPOTZ, DE |
|
| 8143 | Withdrawn due to claiming internal priority |