DE19926538A1 - Hardware with decoupled configuration register partitions data flow or control flow graphs into time-separated sub-graphs and forms and implements them sequentially on a component - Google Patents

Hardware with decoupled configuration register partitions data flow or control flow graphs into time-separated sub-graphs and forms and implements them sequentially on a component

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
German (de)
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/en
Priority to US10/009,649 priority patent/US8230411B1/en
Priority to CN00811550A priority patent/CN1378665A/en
Priority to PCT/DE2000/001869 priority patent/WO2000077652A2/en
Priority to AU58053/00A priority patent/AU5805300A/en
Priority to EP00943684.1A priority patent/EP1228440B1/en
Priority to DE10081643T priority patent/DE10081643D2/en
Priority to JP2001503066A priority patent/JP2003505753A/en
Publication of DE19926538A1 publication Critical patent/DE19926538A1/en
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

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/456Parallelism detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions

Abstract

The hardware has a decoupled configuration register and performs programs on a component with a single or multi-dimensional cell structure. Data flow or control flow graphs are partitioned into time-separated sub-graphs and formed sequentially and implemented on the component. An Independent claim is also included for a method for performing programs on a component with a single or multi-dimensional cell structure.

Description

Aufgabe der Erfindung und AnwendungsbereicheObject of the invention and areas of application

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.The present invention extends to the field of programmable and especially during operation reprogrammable arithmetic and / or logical Blocks with a large number of arithmetic and / or logical Units whose interconnection is also programmable and is reprogrammable during operation. Such logical Blocks are under the generic term FPGA of different Companies available. There are also several patents published using special arithmetic blocks automatic data synchronization and improved disclose.

Sämtliche beschriebene Bausteine besitzen eine zwei- oder mehrdimensionale Anordnung von logischen und/oder arithmetischen Einheiten, die über Bussysteme miteinander verschaltbar sind.All of the blocks described have a two or multi-dimensional arrangement of logical and / or arithmetic units that are connected to each other via bus systems are interconnectable.

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.The object of the invention is to provide a programming method for To make available that enables the described Blocks in common high-level languages efficiently program while taking advantage of the variety parallelism of the units described Building blocks largely automatically, completely and efficiently use.

Stand der TechnikState of the art

Bausteine der genannten Gattung werden zumeist unter Verwendung gewöhnlicher Datenflussprachen programmiert. Dabei treten zwei grundlegende Probleme auf:
Blocks of the type mentioned are mostly programmed using ordinary data flow languages. There are two basic problems:

  • 1. Die Programmierung in Datenflussprachen ist für Programmierer gewöhnungsbedürftig, tief sequentielle Aufgaben lassen sich nur sehr umständlich beschreiben. 1. Programming in data flow languages is for Programmer needs getting used to, deeply sequential tasks can only be described with great difficulty.  
  • 2. Große Applikationen und sequentielle Beschreibungen lassen sich mit den bestehenden Übersetzungsprogrammen (Synthese- Tools) nur bedingt auf die gewünschte Zieltechnologie abbilden (synthetisieren).2. Leave large applications and sequential descriptions with the existing translation programs (synthesis Tools) only to a limited extent on the desired target technology (synthesize).

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.Applications are usually partitioned into several sub-applications, which are then synthesized individually for the target technology ( FIG. 1). The individual binary codes are then loaded onto one block each. An essential prerequisite of the invention is the method described in DE 44 16 881, which makes it possible to use several partitioned sub-applications within a module by analyzing the time dependency and sequentially requesting the sub-applications required in each case from a higher-level loading unit and then by the latter be loaded onto the block.

Existierende Synthese-Tools sind nur bedingt in der Lage Programm-Schleifen auf Bausteine abzubilden (Fig. 2 (0201)).Existing synthesis tools are only able to map program loops to blocks to a limited extent ( 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.So-called FOR loops ( 0202 ) are often also supported as a primitive loop by rolling the loop completely onto the resources of the target module.

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.In contrast to FOR loops, WHILE loops ( 0203 ) do not have a constant termination value. Rather, a condition evaluates when the loop is aborted. Therefore, it is usually not known (if the condition is not constant) at synthesis time when the loop breaks. Due to the dynamic behavior, synthesis tools cannot permanently map these loops to hardware, ie they can be transferred to a target block.

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.In general, recursions cannot be mapped to hardware, when the recursion depth is not known at the time of synthesis and so that is constant. When recursing, with each new one Recursion level allocated new resources. That would mean, that new hardware is available with every recursion level must be asked, which is not dynamically possible.

Selbst einfache Grundstrukturen sind von Synthesetools nur dann abbildbar, wenn der Zielbaustein ausreichend groß ist, d. h. ausreichende Ressourcen bietet.Even simple basic structures are only available from synthesis tools can be mapped if the target module is sufficiently large, d. H. offers sufficient resources.

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.Simple time dependencies ( 0301 ) are not partitioned into several sub-applications by today's synthesis tools and can therefore only be transferred as a whole to a target module.

Bedingte Ausführungen (0302) und Schleifen über Bedingungen (0303) sind ebenfalls nur abbildbar, wenn ausreichende Ressourcen auf dem Zielbaustein existieren.Conditional executions ( 0302 ) and loops via conditions ( 0303 ) can also only be mapped if sufficient resources exist on the target block.

Erfindungsgemäßes VerfahrenMethod according to the invention

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.It is by the method described in DE 44 16 881 possible conditions at runtime within the Recognize hardware structures of the named modules and to react so dynamically that the function of the Hardware modified according to the condition becomes what is essentially by configuring a new one Structure happens.

Ein wesentlicher Schritt in dem erfindungsgemäßen Verfahren ist die Partitionierung von Graphen in zeitlich unabhängige Teilgraphen. An essential step in the method according to the invention is the partitioning of graphs in time-independent Subgraphs.  

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.The term "temporal independence" is defined that the data transferred between two sub-applications are through a memory, of whatever configuration (also using simple registers). The is particularly possible at the points on a graph where a clear interface with a limited and possible minimal amount of signals between the two There are partial applications.

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.The temporal independence can be brought about in large graphs by deliberately inserting clearly defined and possible simple interfaces for storing data in a buffer (cf. S n in FIG. 4). Loops are fundamentally very independent of time, because they work for a long time over a certain amount of (mostly) local variables in the loop and only require the operands or the result to be transferred when the loop enters and exits the loop.

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. The independence in time ensures that after the complete execution of a partial application subsequent partial application can be loaded without any other dependencies or influences occur. When saving the data in the named memory, a Signal (trigger) are generated by the parent Loading unit for reloading the next partial application prompts. The trigger can be used when using simple Registers are always generated as memory when that Register is described. When using memories, i. b. of those that work according to the FIFO principle is the Generation of the trigger depends on several conditions.  

Folgende Bedingungen können beispielsweise einzeln oder kombiniert ein Trigger erzeugen:
For example, the following conditions can generate a trigger individually or in combination:

  • - Ergebnis-Speicher voll- Results memory full
  • - Operanden-Speicher leer- operand memory empty
  • - keine neuen Operanden- no new operands
  • - Beliebige Bedingung innerhalb der Teilapplikation, generiert durch z. B.- Generated any condition within the sub-application through z. B.
  • - Vergleicher- comparator
  • - Zähler.- Counter.

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.A partial application is also called module in the following intelligibility from the perspective of classic programming to increase. For the same reason, signals are as follows also called variables. The variables differ essentially different from conventional variables in one point: everyone Variable is assigned a status signal (ready), which indicates whether the variable has a valid value. If a signal has a valid (calculated) value, that is Status signal Ready; if the signal is not a valid value owns (calculation not yet completed), that is Status signal Not_Ready. The principle is detailed in the Patent application PACT02 described.

Das ProzessormodellThe processor model

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. The graphs shown in the following figures have as Graph nodes always in module, assuming that several modules are mapped to a target module can. That is, although all modules are in time are independent, only after the modules one Reconfiguration carried out, or a data storage inserted, marked with a vertical line and Δt are. This point is called the time of reconfiguration.  

Das bedeutet zusammenfassend:
In summary, this means:

  • 1. Große Module können an geeigneten Stellen partitioniert werden und in kleine zeitlich voneinander unabhängige Module zerlegt werden.1. Large modules can be partitioned at appropriate locations and in small, time-independent modules be disassembled.
  • 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.2. In the case of small modules that are common to one Target module can be mapped to the temporal Independence waived. This will Configuration steps saved and data processing accelerates.
  • 3. Die Umkonfigurationszeitpunkte werden entsprechend der Ressourcen der Zielbausteine positioniert. Dadurch ist eine beliebige Skalierung der Graphenlänge gegeben.3. The reconfiguration times are according to the Positioned resources of the target building blocks. This is one given any scaling of the graph length.

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.
In Fig. 4a some basic characteristics of the process of the invention are shown:
The modules of type A are grouped together and end up with a conditional jump, either to B1 or B2. At this position ( 0401 ) a reconfiguration point is inserted, since it makes sense to consider the branches of the conditional jump as a group (case 1). If, on the other hand, both branches of B (B1 and B2) match A on the target module (case 2), it would make sense to insert only one reconfiguration point at 0402 , as this reduces the number of configurations and increases the processing speed. Both branches (B1 and B2) jump to 0402 .

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.The configuration of the cells on the target module is shown schematically in FIG. 4b. The functions of the individual graph nodes are mapped to the cells of the target module. One line each represents a configuration. The dashed arrows when changing lines indicate a reconfiguration. S n is a data-storing cell of any configuration (register, memory, etc.). S n I is a memory that accepts data and S n O outputs a memory of the data. The memory S n is the same for the same n, I and O denote the data transfer direction.

Beide Fälle des bedingten Sprunges (Fall 1, Fall 2) sind dargestellt.Both cases of the conditional jump (case 1, case 2) are shown.

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.The model in FIG. 4 corresponds to a data flow model, however with the essential expansion of the reconfiguration point and the partitioning of the graph that can be achieved thereby, the data transferred between the partitions being buffered.

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.In the model of FIG. 5a, a graph from a set of graphs B is selectively called up from any graph set and constellation ( 0501 ). After executing B, the data return to 0501 .

Wird in 0501 ein ausreichend großer Sequencer (A) implementiert, ist mit dem Modell ein den typischen Prozessoren sehr ähnliches Prinzip implementierbar. Dabei gelangen
If a sufficiently large sequencer (A) is implemented in 0501 , the model can implement a principle very similar to that of typical processors. Get there

  • 1. Daten in den Sequenzer A, die dieser als Befehle dekodiert und entsprechend dem "von Neumann"-Prinzip darauf reagiert;1. Data in the sequencer A, which it decodes as commands and reacts to it according to the "von Neumann" principle;
  • 2. Daten in den Sequenzer A, die als Daten betrachtet werden und an ein fest konfiguriertes Rechenwerk C zur Berechnung weitergeleitet werden.2. Data in the sequencer A that are considered data and to a permanently configured arithmetic unit C for the calculation to get redirected.

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.Ver Graph B selectively provides a special arithmetic unit and / or special opcodes for certain functions and is alternatively used to accelerate C. For example, B1 can be an optimized algorithm for calculating matrix multiplications, while B2 represents an FIR filter and B3 represents a pattern recognition. The appropriate or corresponding graph B is called in accordance with an opcode which is decoded by 0501 .

Fig. 5b schematisiert die Abbildung auf die einzelnen Zellen, wobei in 0502 der pipelineartige Rechenwerks-Character symbolisiert wird. Fig. 5b schematically the figure on the individual cells, said pipelined arithmetic logic unit Character is symbolized in 0502nd

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.While larger memories for temporarily storing the data are preferably inserted in the reconfiguration points of FIG. 4, a simple synchronization of the data in the reconfiguration points of FIG. 5 is sufficient, since the data stream preferably runs as a whole through graph B and graph B does not continue is partitioned; this means that there is no need to cache the data.

In Fig. 6a sind verschiedene Schleifen dargestellt. Schleifen können grundsätzlich auf drei Arten behandelt werden:
Various loops are shown in FIG. 6a. Basically, loops can be handled in three ways:

  • 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.1. Hardware approach: Loops are completely rolled out onto the target hardware ( 0601 a / b). As already explained, this is only possible with a few types of loops.
  • 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.2. Data flow approach: Loops are set up across several cells within the data flow ( 0602 a / b). The end of the loop is fed back to the beginning of the loop.
  • 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).3. Sequencer approach: A sequencer with a minimal instruction set executes the loop ( 0603 a / b). The cells of the target building blocks are designed in such a way that they contain the corresponding sequencer (cf. FIGS. 11a / b).

Durch eine geeignete Zerlegung von Schleifen kann deren Ausführung ggf. optimiert werden:
A suitable disassembly of loops can optimize their execution if necessary:

  • 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.1. Using optimization methods according to the prior art, the loop body, that is to say the part to be repeated, can often be optimized by removing certain operations from the loop and placing them in front of or behind the loop ( 0604 a / b). This significantly reduces the number of commands to be sequenced. The removed operations are performed only once before or after the loop is executed.
  • 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.2. Another optimization option is the division of loops into several smaller or shorter loops. The division takes place in such a way that several parallel or several sequential ( 0605 a / b) loops are created.

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. Fig. 7 illustrates the implementation of a recursion. The same resources ( 0701 ) in the form of cells are used for each recursion level ( 1-3 ). The results of each recursion level ( 1-3 ) are written to a memory ( 0702 ) built up according to the stack principle during construction ( 0711 ). The stack is dismantled simultaneously with the dismantling ( 0712 ) of the levels.

HochsprachenbeispieleHigh-level language examples

Ein Modul kann beispielsweise folgendermaßen deklariert werden:
For example, a module can be declared as follows:

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.
module marks the beginning of a module.
input / output defines the input / output variables with the types ty n .
begin. . . end mark the fuselage of the module.
register <regname1 / 2 <transfers the result to the output, whereby the result is buffered in the register specified by <regname1 / 2 <. <regname1 / 2 <is a global reference to a specific 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.
The following storage types are available as additional transfer modes to the output:
fifo <fifoname <, whereby the data is transferred to a memory that works according to the FIFO principle. fifoname eats a global reference to a specific memory operating in FIFO mode. terminate @ is the parameter or the signal. "fifofull" expanded, indicating that the memory is full.
stack <stackname <, whereby the data is transferred to a memory that works according to the stack principle. stackname is a global reference to a specific memory working in stack mode.
terminate @ distinguishes programming according to the method according to the invention from conventional sequential programming. The command defines the termination criterion of the module. The result variables res1 and res2 are not evaluated by terminate @ with their actual value; instead, only the validity of the variables (i.e. their status signal) is checked. If both variables are valid, the module terminates with the value 1. This means that a signal with the value 1 is forwarded to the higher-level loading unit, whereupon the higher-level loading unit loads the subsequent module.

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.
In this example, register is defined using input data. Where <regname1 <is the same as in example1. This causes the register that takes the output data in example1 to provide the input data for example2.
fifo defines a FIFO memory with a depth of 256 for the output data res1. The full flag (fifofull) of the FIFO memory is used in terminate @ as an abort criterion.

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.
define defines an interface for data (register, memory, etc.). The required resources and the name of the interface are specified in the definition. Since the resources are clearly stated and can only be used once, the definition is global, ie the designation applies to the entire program.
call calls a module as a subroutine.
signal defines a signal as an output signal without using buffering.

Durch terminate@ (example2) wird das Modul main terminiert, sobald das Unterprogramm example2 terminiert.The module main is terminated by terminate @ (example2), as soon as the subroutine example2 terminates.

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:
Through the global declaration "define..." In principle, it is no longer necessary to include the input / output signals defined in this way in the interface declaration of the modules. The corresponding modified example modules would then look like this:

. . .. . .

Die Zustandsinformationen des ProzessormodellsThe status information of the processor model

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.To determine the states within a graph, the status registers of the individual cells (PAEs) are made available to all other arithmetic units via a status bus system ( 0802 ) that exists in addition to the data bus ( 0801 ) ( FIG. 8b). This means that one cell (PAE X) can evaluate the status information of another cell (PAE Y) and processes the data accordingly. In order to clarify the difference to existing parallel computer systems, the state of the art is given in FIG. 8a. A multiprocessor system is shown, the processors of which are connected to one another via a common data bus ( 0803 ). There is no explicit bus system for the synchronous exchange of data and status.

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.Finally, it should be noted that depending on the task, both the data flow graph and the control flow graph correspond can be treated according to the described method.

Erweiterungen in der Hardware gegenüber PACT02 und PACT04Hardware extensions compared to PACT02 and 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).With PACT02 and PACT04, the state of the art is related to aµf defines the configuration properties of cells (PAEs) and published in DE 196 51 075 (PACT02) and in DE 196 54 846 (PACT04).

Dabei soll auf zwei Eigenschaften eingegangen werden:
Two properties are to be considered:

  • 1. Einer PAE ist gemäß PACT02 ein Satz von Konfigurationsregi­ stern zugeordnet, der eine Konfiguration beinhaltet (Fig. 8a).1. According to PACT02, a PAE is assigned a set of configuration registers which contains a configuration ( FIG. 8a).
  • 2. Eine Gruppe von PAEs kann gemäß PACT04 auf einen Speicher zum Speichern oder Lesen von Daten zugreifen (Fig. 8b).2. According to PACT04, a group of PAEs can access a memory for storing or reading data ( FIG. 8b).

Aufgabe ist es,
The task is,

  • a) ein Verfahren zu schaffen, das das Umkonfigurieren von. PAEs beschleunigt und zeitlich von der übergeordneten Ladeeinheit entkoppelt, und a) to create a process that the reconfiguration of. PAEs accelerated and timed by the higher-level loading unit decoupled, and  
  • b) das Verfahren so auszulegen, daß gleichzeitig die Möglichkeit geschaffen wird über mehrere Konfigurationen zu Sequenzen.b) to interpret the procedure so that the Possibility is created over several configurations Sequences.
Entkopplung der KonfigurationsregisterDecoupling of the configuration register

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:
The configuration register is decoupled from the higher-level loading unit (CT) ( FIG. 9) by using a set of several configuration registers ( 0901 ). Exactly one of the configuration registers selectively determines the function of the PAE. The active register is selected using a multiplexer ( 0902 ). The CT can write to any of the configuration registers as long as this does not determine the current configuration of the PAE. Which configuration register is selected by 0902 can be determined by different sources:

  • 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).1. An arbitrary status signal or a group of arbitrary status signals which are routed to 0902 via a bus system ( 0802 ) ( FIG. 9a). The status signals are generated by any PAEs or made available by external connections of the block (see Fig. 8).
  • 2. Das Status-Signal der PAE, die von 0901/0902 konfiguriert wird, dient zur Selektion (Fig. 9b).2. The status signal of the PAE, which is configured by 0901/0902, is used for selection (Fig. 9b).
  • 3. Ein von der übergeordneten CT generiertes Signal dient zur Selektion (Fig. 9c).3. A signal generated by the higher-level CT is used for selection ( FIG. 9c).

Dabei ist es möglich wahlweise die eingehenden Signale (0903, 0904, 0905) mittels eines Registers für einen bestimmten Zeitraum zu speichern.It is possible to save the incoming signals ( 0903 , 0904 , 0905 ) for a certain period of time using a register.

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. By using several registers, the CT is timed decoupled. This means that the CT can have several configurations "preload" without any direct time dependency consists.  

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.Only the selected register in 0901 has not yet been loaded, the configuration of the PAE is waited until the CT has loaded the register. In order to determine whether a register has valid information, a "valid bit" ( 0906 ) can be inserted per register, which is set by the CT. If 0906 is not set for a selected register, the CT prompts you to set the register as quickly as possible.

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
The method described in FIG. 9 can easily be expanded to a sequencer ( FIG. 10). For this purpose, a microcontroller ( 1001 ) is used to control the selection signals of the multiplexer ( 0902 ). The sequencer determined dependent on the currently selected configuration (1002) and an additional status information (1003/1004), the next to be selected configuration. The status information

  • a) der Status der Status-Signal der PAE, die von 0901/0902 konfiguriert wird sein (Fig. 10a).a) the status of the status signal of the PAE, which is configured by 0901/0902 (FIG. 10a).
  • b) ein beliebiges über 0802 zugeführtes Statussignal sein (Fig. 10b).b) be any status signal supplied via 0802 ( FIG. 10b).
  • c) eine Kombination aus (a) und (b) sein.c) a combination of (a) and (b).

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,
For easy understanding, 0901 can be viewed as a memory, with 0902 addressing a command from 1001 . The addressing depends on the command itself and on a status register. In this respect, the construction of a "von Neumann" machine corresponds, with the difference that

  • a) der universellen Einsetzbarkeit, also den Sequenzer nicht zu verwenden (vgl. Fig. 9)a) universal usability, i.e. not to use the sequencer (cf. 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).b) that the status signal does not have to be generated by the arithmetic unit assigned to the sequencer (PAE), but can come from any other arithmetic unit (cf. FIG. 10b).

Wichtig ist, daß der Sequenzer dabei Sprünge, insbesondere auch bedingte Sprünge, innerhalb von 0901 ausführen kann.It is important that the sequencer can make jumps, especially conditional jumps, within 0901 .

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.Another additional or alternative method ( FIG. 11) for setting up sequencers within the above-mentioned modules is the use of the internal data memory ( 1101 ) for storing the configuration information for a PAE. The data output of a memory is switched to a configuration input of a PAE ( 1102 ). The address ( 1103 ) for 1101 can be generated by the same PAE or any other.

Bei diesem Verfahren ist der Sequenzer nicht fest implementiert, sondern wird durch eine PAE oder eine Gruppe von PAEs nachgebildet.The sequencer is not fixed in this method implemented but is by a PAE or a group modeled by PAEs.

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.1. Method for executing programs on a block with a one- or multi-dimensional cell structure, characterized in that data flow or control flow graphs are partitioned into temporally separate subgraphs and sequentially mapped and executed on the block. 2. Hardware mit entkoppeltem Konfigurationsregister.2. Hardware with decoupled configuration register.
DE19926538A 1999-06-10 1999-06-10 Hardware with decoupled configuration register partitions data flow or control flow graphs into time-separated sub-graphs and forms and implements them sequentially on a component Withdrawn DE19926538A1 (en)

Priority Applications (14)

Application Number Priority Date Filing Date Title
DE19926538A DE19926538A1 (en) 1999-06-10 1999-06-10 Hardware with decoupled configuration register partitions data flow or control flow graphs into time-separated sub-graphs and forms and implements them sequentially on a component
DE10081643T DE10081643D2 (en) 1999-06-10 2000-06-13 Sequence partitioning on cell structures
JP2001503066A JP2003505753A (en) 1999-06-10 2000-06-13 Sequence division method in cell structure
CN00811550A CN1378665A (en) 1999-06-10 2000-06-13 Programming concept
PCT/DE2000/001869 WO2000077652A2 (en) 1999-06-10 2000-06-13 Sequence partitioning in cell structures
AU58053/00A AU5805300A (en) 1999-06-10 2000-06-13 Sequence partitioning in cell structures
EP00943684.1A EP1228440B1 (en) 1999-06-10 2000-06-13 Sequence partitioning in cell structures
US10/009,649 US8230411B1 (en) 1999-06-10 2000-06-13 Method for interleaving a program over a plurality of cells
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 (en) 1999-06-10 1999-06-10 Hardware with decoupled configuration register partitions data flow or control flow graphs into time-separated sub-graphs and forms and implements them sequentially on a component

Publications (1)

Publication Number Publication Date
DE19926538A1 true DE19926538A1 (en) 2000-12-14

Family

ID=7910839

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19926538A Withdrawn DE19926538A1 (en) 1999-06-10 1999-06-10 Hardware with decoupled configuration register partitions data flow or control flow graphs into time-separated sub-graphs and forms and implements them sequentially on a component

Country Status (1)

Country Link
DE (1) DE19926538A1 (en)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003025781A2 (en) 2001-09-19 2003-03-27 Pact Xpp Technologies Ag Router
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
US7782087B2 (en) 2002-09-06 2010-08-24 Martin Vorbach Reconfigurable sequencer structure
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
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)
US7840842B2 (en) 2001-09-03 2010-11-23 Martin Vorbach Method for debugging reconfigurable architectures
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
US8209653B2 (en) 2001-09-03 2012-06-26 Martin Vorbach Router
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
US8301872B2 (en) 2000-06-13 2012-10-30 Martin Vorbach Pipeline configuration protocol and configuration unit communication
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach Method of self-synchronization of configurable elements of a programmable module
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 (en) * 2021-01-14 2021-04-23 上海交通大学 Coarse-grained reconfigurable array scheduling method based on subgraph decoupling

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
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
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
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
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)
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
USRE45109E1 (en) 1997-02-08 2014-09-02 Pact Xpp Technologies Ag Method of self-synchronization of configurable elements of a programmable module
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
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
US8058899B2 (en) 2000-10-06 2011-11-15 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
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US8145881B2 (en) 2001-03-05 2012-03-27 Martin Vorbach Data processing device and method
US8099618B2 (en) 2001-03-05 2012-01-17 Martin Vorbach Methods and devices for treating and processing data
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
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
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
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
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US8209653B2 (en) 2001-09-03 2012-06-26 Martin Vorbach Router
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
US7840842B2 (en) 2001-09-03 2010-11-23 Martin Vorbach Method for debugging reconfigurable architectures
US8069373B2 (en) 2001-09-03 2011-11-29 Martin Vorbach Method for debugging reconfigurable architectures
US8407525B2 (en) 2001-09-03 2013-03-26 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
WO2003025781A2 (en) 2001-09-19 2003-03-27 Pact Xpp Technologies Ag Router
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
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
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
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US8803552B2 (en) 2002-09-06 2014-08-12 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7782087B2 (en) 2002-09-06 2010-08-24 Martin Vorbach 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
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 (en) * 2021-01-14 2021-04-23 上海交通大学 Coarse-grained reconfigurable array scheduling method based on subgraph decoupling
CN112698954B (en) * 2021-01-14 2022-05-10 上海交通大学 Coarse-grained reconfigurable array scheduling method based on subgraph decoupling

Similar Documents

Publication Publication Date Title
DE19926538A1 (en) Hardware with decoupled configuration register partitions data flow or control flow graphs into time-separated sub-graphs and forms and implements them sequentially on a component
EP1228440B1 (en) Sequence partitioning in cell structures
EP1146432B1 (en) Reconfiguration method for programmable components during runtime
EP1402382B1 (en) Data processing method
DE69636861T2 (en) Microprocessor with load / store operation to / from multiple registers
DE19855806A1 (en) Device for execution of sub routines and jump operations in computer
EP2765528B1 (en) Unrestricted access to signal values of an FPGA during runtime
DE4206062A1 (en) Pipeline data processor for instructions - has source operands stored in registers and data in memory for execution using ALU circuits via selector circuit
WO1994022079A1 (en) Process for the machine-generation of secondarily processable command groups from a program for super-scalar microprocessors
DE10297624T5 (en) Control levels of compatibility of binary code translations between instruction set architectures
DE10129237A1 (en) Integrated cell matrix circuit has at least 2 different types of cells with interconnection terminals positioned to allow mixing of different cell types within matrix circuit
EP0825540B1 (en) Pipeline processor
DE4211245A1 (en) Parallel data processing system with trap and stall control functions - has processor units controlled such that multiple instructions can be executed simultaneously
DE3114921A1 (en) DATA PROCESSING SYSTEM
DE19729618A1 (en) Microprocessor for multiprocessor system
WO2014122320A2 (en) Alteration of a signal value for an fpga at runtime
DE4134392C2 (en) Method and apparatus for invalidating commands in devices with parallel processing
DE19652290C2 (en) Microcomputer
EP1117037B1 (en) Data processing apparatus for parallel processing of independent processes (threads)
WO2003060747A2 (en) Reconfigurable processor
WO2000017772A2 (en) Configurable hardware block
DE102013114508B4 (en) Block-based signal processing
WO2003017095A2 (en) Method for the translation of programs for reconfigurable architectures
DE10109848A1 (en) Program execution device and program development support device with memory restructuring arrangement that allows memory addresses of processed bit data to be changed and concentrated together
EP1789889B1 (en) Computer with a reconfigurable architecture for integrating a global cellular automaton

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