DE19926538A1 - Hardware und Betriebsverfahren - Google Patents

Hardware und Betriebsverfahren

Info

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
Application number
DE19926538A
Other languages
English (en)
Inventor
Martin Vorbach
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Pact Informationstechnologie GmbH
Original Assignee
Pact Informationstechnologie GmbH
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Pact Informationstechnologie GmbH filed Critical Pact Informationstechnologie GmbH
Priority to DE19926538A priority Critical patent/DE19926538A1/de
Priority to PCT/DE2000/001869 priority patent/WO2000077652A2/de
Priority to CN00811550A priority patent/CN1378665A/zh
Priority to EP00943684.1A priority patent/EP1228440B1/de
Priority to JP2001503066A priority patent/JP2003505753A/ja
Priority to AU58053/00A priority patent/AU5805300A/en
Priority to US10/009,649 priority patent/US8230411B1/en
Priority to DE10081643T priority patent/DE10081643D2/de
Publication of DE19926538A1 publication Critical patent/DE19926538A1/de
Priority to US12/720,898 priority patent/US8726250B2/en
Priority to US12/840,477 priority patent/US8312200B2/en
Priority to US12/840,559 priority patent/US20110012640A1/en
Priority to US14/276,449 priority patent/US9690747B2/en
Priority to US15/629,720 priority patent/US10409765B2/en
Priority to US16/547,796 priority patent/US20200057749A1/en
Withdrawn legal-status Critical Current

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

Aufgabe der Erfindung und Anwendungsbereiche
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.
Stand der Technik
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.
Erfindungsgemäßes Verfahren
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.
Das Prozessormodell
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 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.
Hochsprachenbeispiele
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.
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.
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.
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.
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:
. . .
Die Zustandsinformationen des Prozessormodells
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.
Erweiterungen in der Hardware gegenüber PACT02 und PACT04
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.
Entkopplung der Konfigurationsregister
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.
DE19926538A 1999-06-10 1999-06-10 Hardware und Betriebsverfahren Withdrawn DE19926538A1 (de)

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)

* Cited by examiner, † Cited by third party
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 上海交通大学 一种基于子图解耦的粗粒度可重构阵列调度方法

Cited By (68)

* Cited by examiner, † Cited by third party
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