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 DE1999126538 DE19926538A DE19926538A1 DE 19926538 A1 DE19926538 A1 DE 19926538A1 DE 1999126538 DE1999126538 DE 1999126538 DE 19926538 A DE19926538 A DE 19926538A DE 19926538 A1 DE19926538 A1 DE 19926538A1
Authority
DE
Grant status
Application
Patent type
Prior art keywords
flow
graphs
component
separated
register
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
DE1999126538
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

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING; 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; 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 Anwendungsbereiche The object of the invention and applications

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. The present invention also extends to the field of programmable and reprogrammable in particular during the operation of the arithmetic and / or logical blocks of plurality of arithmetic and / or logical units, the interconnection is also programmable and reprogrammable during operation. Derartige logische Bausteine sind unter dem Oberbegriff FPGA von verschiedenen Firmen verfügbar. Such logical blocks are available under the heading FPGA by different companies. Weiterhin sind mehrere Patente veröffentlicht, die spezielle arithmetische Bausteine mit automatischer Datensynchronisation und verbesserten offenlegen. In addition, several patents have been published, reveal the special arithmetic modules with automatic data synchronization and improved.

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

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 available that allows to program the blocks described efficiently in ordinary high-level languages ​​and to take advantage of emerging through the plurality of units parallelism of the blocks described largely automatically, completely and efficiently.

Stand der Technik State of the art

Bausteine der genannten Gattung werden zumeist unter Verwendung gewöhnlicher Datenflussprachen programmiert. Blocks of the aforementioned type are usually programmed using ordinary Datenflussprachen. Dabei treten zwei grundlegende Probleme auf: Here come 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. The programming in Datenflussprachen getting used to for programmers deep sequential tasks can be very inconvenient to describe.
  • 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. Large applications and sequential descriptions are of limited use to map to the desired target technology (synthesize) with the existing translation programs (synthesis tools).

Für gewöhnlich werden Applikationen in mehrere Teilapplikationen partitioniert, die dann einzeln auf die Zieltechnologie synthetisiert werden ( Fig. 1). Typically applications are partitioned into a plurality of sub-applications, which are then synthesized individually to the target technology (Fig. 1). Die einzelnen Binärcodes werden dann auf jeweils einen Baustein geladen. The individual binary codes are then loaded on each one block. 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. An essential prerequisite of the invention is the process in DE 44 16 881 described, which makes it possible to use several partitioned part applications within a block by the time dependence is analyzed and sequentially requested via control signals necessary in each case sub-applications in a higher-level load unit and from this then are loaded on the block.

Existierende Synthese-Tools sind nur bedingt in der Lage Programm-Schleifen auf Bausteine abzubilden ( Fig. 2 ( 0201 )). Existing synthesis tools are only partially capable of mapping program loops on blocks (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 further supported as primitive loop, that the loop can be completely rolled to the resources of the target block.

WHILE-Schleifen ( 0203 ) besitzen im Gegensatz zu FOR-Schleifen keinen konstanten Abbruchswert. WHILE loops (0203) do not have a constant value as opposed to demolition FOR loops. Vielmehr wird durch eine Bedingung evaluiert, wann der Schleifenabbruch stattfindet. Rather, it is evaluated by a condition when the loop termination takes place. Daher ist gewöhnlicherweise (wenn die Bedingung nicht konstant ist) zur Synthesezeit nicht bekannt, wenn die Schleife abbricht. Therefore, usually (if the condition is not constant) for the synthesis time is not known when the loop terminates. Durch das dynamische Verhalten können Synthese-Tools diese Schleifen nicht fest auf Hardware abgebildet dh auf einen Zielbaustein übertragen werden. By the dynamic behavior synthesis tools can be these loops not been mapped to hardware that is transferred to a target device.

Rekursionen sind grundsätzlich nicht auf Hardware abbildbar, wann die Rekursionstiefe nicht zur Synthesezeit bekannt und damit konstant ist. Recurrences are generally not mapped to hardware when not known the recursion for the synthesis of time and thus is constant. Bei der Rekursion werden mit jeder neuen Rekursionsebene neue Ressourcen allokiert. Recursion new resources are allocated with each new level of recursion. Das würde bedeuten, daß mit jeder Rekursionsebene neue Hardware zur Verfügung gestellt werden muß, was aber dynamisch nicht möglich ist. That would mean that new hardware must be provided with each level of recursion, but this is not possible dynamically.

Selbst einfache Grundstrukturen sind von Synthesetools nur dann abbildbar, wenn der Zielbaustein ausreichend groß ist, dh ausreichende Ressourcen bietet. Even simple basic structures are only mapped by synthesis tools when the target device is sufficiently large, that provides 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 temporal dependencies (0301) are not partitioned by today's synthesis tools into multiple applications and are therefore only be transferred in its entirety to a target device.

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 over conditions (0303) are also mapped only if sufficient resources exist on the target device.

Erfindungsgemäßes Verfahren Inventive Process

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. By the method described in DE 44 16 881 method, it is possible to detect conditions at runtime within the hardware structures of the said blocks and to respond to such dynamic out that the function of the hardware is modified in accordance with the occurring condition, which substantially by configuring a new structure occurs.

Ein wesentlicher Schritt in dem erfindungsgemäßen Verfahren ist die Partitionierung von Graphen in zeitlich unabhängige Teilgraphen. An essential step in the process of this invention is the partitioning of the graph 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. The term "temporal independence" is defined so that the data transmitted between two sub-applications by a memory of any embodiment (in other words by means of simple register), decoupled. 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. This is possible especially at the points of a graph, in which there is a clear interface with a limited and minimum possible quantity of signals between the two sub-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. S n in Fig. 4). The temporal independence can be brought about in large graphs through the targeted insertion of clearly defined and simple interfaces greatest possible to store data in a buffer (cf.. S n 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. Loops generally have a strong temporal independence because they work for a long time over a certain amount of (mostly) in the loop local variables, and only when loop entering and leaving the loop transmission of the operands and the result required.

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. By the time independence is achieved that the subsequent part application can be downloaded after the complete execution of a partial application without any additional dependencies or effects occur. 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. When storing the data in said memory, a signal (trigger) can be generated that prompts the parent charging unit for recharging the next part of the application. Der Trigger kann bei der Verwendung von einfachen Registern als Speicher immer generiert werden, wenn das Register beschrieben wird. The trigger can always be generated with the use of simple registers as a memory when the register is written. Bei der Verwendung von Speichern, ib von solchen die nach dem FIFO-Prinzip arbeiten, ist die Generierung des Triggers von mehreren Bedingungen abhängig. In the use of memories, ib of such operating according to the FIFO principle, the generation of the trigger of several conditions is dependent.

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

  • - Ergebnis-Speicher voll - Earnings memory full
  • - Operanden-Speicher leer - operand memory empty
  • - keine neuen Operanden - no new operand
  • - Beliebige Bedingung innerhalb der Teilapplikation, generiert durch z. - Any condition within the application part, generated by z. B. 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. A partial application will be referred to below as module to increase the clarity from the perspective of classical programming. Aus demselben Grund werden Signale im folgenden auch Variablen genannt. For the same reason signals below are also called variables. 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. Here, the variables differ in a point substantially from conventional variables: Each variable is a status signal (Ready) is assigned, which indicates whether the variable has a valid value. Wenn ein Signal einen gültigen (berechneten) Wert besitzt, ist das Statussignal Ready; When a signal having a valid (calculated) value, the status signal Ready; wenn das Signal keinen gültigen Wert besitzt (Berechnung noch nicht abgeschlossen), ist das Statussignal Not_Ready. if the signal does not have a valid value (calculation not yet completed), the status signal Not_Ready. Das Prinzip ist ausführlich in der Patentanmeldung PACT02 beschrieben. The principle is described in the patent application PACT02.

Das Prozessormodell The 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. The graph shown in the following figures always have in module as graph nodes, it being assumed that a plurality of modules can be imaged onto a target block. 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. That is, although all the modules are time-independent, is only according to the modules carried out a reconfiguration, or a data storage inserted, which are marked with a vertical line and .DELTA.t. Dieser Punkt wird Umkonfigurationszeitpunkt genannt. This point is called Umkonfigurationszeitpunkt.

Das bedeutet zusammenfassend: This means in summary:

  • 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 points and be broken down into small time independent modules.
  • 2. Bei kleinen Modulen die sich gemeinsam auf einen Zielbaustein abgebildet werden können, wird auf die zeitliche Unabhängigkeit verzichtet. 2. In small modules that can be displayed together to a target device, dispensing with the temporal independence. Dadurch werden Konfigurationsschritte eingespart und die Datenverarbeitung beschleunigt. This configuration steps are saved and speeds up data processing.
  • 3. Die Umkonfigurationszeitpunkte werden entsprechend der Ressourcen der Zielbausteine positioniert. 3. The Umkonfigurationszeitpunkte be positioned according to the resources of the target devices. Dadurch ist eine beliebige Skalierung der Graphenlänge gegeben. As a result, any scaling of the graph length is given.

In Fig. 4a sind einige grundlegenden Eigenschaften des erfindungsgemäßen Verfahrens dargestellt: In Fig. 4a some basic characteristics of the process of the invention are shown:
Die Module des Types A sind zu einer Gruppe zusammengefaßt und besitzen am Ende einen bedingten Sprung, entweder nach B1 oder B2. The of the type A modules are combined to form one group and have a conditional branch at the end, either B1 or 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). At that position (0401) a Umkonfigurationspunkt is inserted because it is useful to look at the branches of the conditional jump as one group (Case 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. If, however, both branches of B (B1 and B2) in addition to A fit on the target device (case 2), it would be useful to insert only one Umkonfigurationspunkt at 0402, as a result, the number of configurations is reduced and the processing speed is increased. Beide Zweige (B1 und B2) springen bei 0402 nach C. Both branches (B1 and B2) jump in 0402 by C.

Die Konfiguration der Zellen auf dem Zielbaustein ist in Fig. 4b schematisch dargestellt. The configuration of the cells on the target block is illustrated schematically in Figure 4b.. Dabei werden die Funktionen der einzelnen Graphenknoten auf die Zellen des Zielbausteins abgebildet. The functions of each graph nodes are mapped to the cells of the target block. Jeweils eine Zeile stellt eine Konfiguration dar. Die gestrichelten Pfeile bei einem Zeilenwechsel zeigen eine Umkonfiguration. Each case one line illustrates a configuration. The broken arrows in a line alternating show a reconfiguration. S n ist eine datenspeichernde Zelle, von beliebiger Ausgestaltung (Register, Speicher, etc.). S n is a data-storing cell of any configuration (registers, memory, etc.). Dabei ist S n I ein Speicher, der Daten entgegennimmt und S n O ein Speicher der Daten ausgibt. Where S n is I a memory which receives data and S n O outputs a memory of the data. Der Speicher S n ist für gleiche n jeweils derselbe, I und O kennzeichnen die Datentransferrichtung. The memory S n is equal for n are each the same, I and O indicate the data transfer direction.

Beide Fälle des bedingten Sprunges (Fall 1, Fall 2) sind dargestellt. Both cases the conditional branch (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, but with the significant expansion of the Umkonfigurationspunkt and the achievable thereby partitioning of the graph, wherein the data transmitted between the partitions data is latched.

Im Modell von Fig. 5a wird aus einer beliebigen Graphenmenge und -Konstellation ( 0501 ) selektiv ein Graph aus einer Menge von Graphen B aufgerufen. In the model of Fig. 5a of an arbitrary graph and -Konstellation amount (0501) is selectively invoked a graph of a set of graphs B. Nach der Ausführung von B gelangen die Daten nach 0501 zurück. After running B the data goes back to 0,501th

Wird in 0501 ein ausreichend großer Sequencer (A) implementiert, ist mit dem Modell ein den typischen Prozessoren sehr ähnliches Prinzip implementierbar. Implemented in 0501 a sufficiently large Sequencer (A), can be implemented with the model a typical processors very similar principle. Dabei gelangen Here come

  • 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, this decoded as commands and responds according to the "von Neumann" principle to it;
  • 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, which are regarded as data and forwarded to a fixed-configured calculating unit for calculating C.

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. Ver Graph B is selectable a special arithmetic units and / or special opcodes for certain functions and is used as an alternative to accelerate C. Beispielsweise kann B1 ein optimierter Algorithmus zu Berechnung von Matrixmultiplikationen sein, während B2 einen FIR-Filter und B3 eine Mustererkennung darstellt. For example, B1 may be an optimized algorithm for calculation of matrix multiplications, while B2 represents an FIR filter and B3 pattern recognition. Entsprechend eines Opcodes der von 0501 dekodiert wird, wird der geeignete bzw. entsprechende Graph B aufgerufen. Accordingly, an opcode is decoded by the 0501, the appropriate and corresponding graph B is called.

Fig. 5b schematisiert die Abbildung auf die einzelnen Zellen, wobei in 0502 der pipelineartige Rechenwerks-Character symbolisiert wird. Fig. 5b the mapping schematically the individual cells being symbolized in 0502 of pipelined arithmetic logic unit Character.

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; While be inserted for temporarily storing the data in the Umkonfigurationspunkten of Fig. 4 is preferably larger memory, a simple synchronization of the data in the Umkonfigurationspunkten of Fig. 5 is sufficient, because the data stream is preferably run as a whole by the graph B and graph B not is partitioned; dadurch ist das Zwischenspeichern der Daten überflüssig. characterized the latching of the data is unnecessary.

In Fig. 6a sind verschiedene Schleifen dargestellt. In Fig. 6a different loops are shown. Schleifen können grundsätzlich auf drei Arten behandelt werden: Grinding can basically be treated in three ways:

  • 1. Hardware-Ansatz: Schleifen werden vollständig ausgewalzt auf die Zielhardware abgebildet ( 0601 a/b). 1. Hardware approach: loops are completely rolled to the target hardware ready (0601 a / b). Wie bereits erläutert ist dies nur bei wenigen Schleifenarten möglich. As explained above, this is possible only in a few types of loops.
  • 2. Datenfluß-Ansatz: Innerhalb der Datenflusses werden Schleifen über mehrere Zellen hinweg aufgebaut ( 0602 a/b). 2. dataflow approach: within the data flow loops are built up across cells (0602 a / b). Das Ende der Schleife wird auf den Schleifenanfang rückgekoppelt. The end of the loop is fed back to the beginning of loop.
  • 3. Sequenzer-Ansatz: Ein Sequenzer mit minimalem Befehlssatz führt die Schleife aus ( 0603 a/b). 3. sequencer approach: A sequencer with minimal instruction set executes the loop (0603 a / b). Dabei sind die Zellen der Zielbausteine so ausgestaltet, daß sie den entsprechenden Sequenzer beinhalten (vgl. Fig. 11a/b). The cells of the target blocks are designed so that they contain the respective sequencer (see. Fig. 11a / b).

Durch eine geeignete Zerlegung von Schleifen kann deren Ausführung ggf. optimiert werden: By a suitable separation of loops whose execution can be optimized 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 ( 0604 a/b). 1. Using optimization methods according to the state of the art often can be the loop body, so the repeated executed part optimize the fact that certain operations be removed from the loop and before or be placed behind the loop (0604 a / b). Dadurch wird die Menge der zu sequencenden Befehle erheblich reduziert. Thus, the quantity of the sequencenden commands is significantly reduced. Die entfernten Operationen werden nur einmal vor bzw. nach Ausführung der Schleife durchlaufen. The remote operations are executed only once before or after execution of the loop.
  • 2. Eine weitere Optimierungsmöglichkeit ist das Teilen von Schleifen in mehrere kleinere oder kürzere Schleifen. 2. Another possibility for optimization is the sharing of loops into several smaller or shorter loops. Dabei findet die Teilung derart statt, daß mehrere parallele oder mehrere sequentielle ( 0605 a/b) Schleifen entstehen. The division takes place such that a plurality of parallel or more sequential (0605 a / b) loops are formed.

Fig. 7 verdeutlicht die Implementierung einer Rekursion. Fig. 7 illustrates the implementation of a recursion. Dabei werden dieselben Ressourcen ( 0701 ) in Form von Zellen für jede Rekursionsebene ( 1-3 ) verwendet. In this case, the same resources (0701) in the form of cells for each recursion level (1-3) are used. Die Ergebnisse einer jeden Rekursionsebene ( 1-3 ) werden beim Aufbau ( 0711 ) in einen nach dem Stack-Prinzip aufgebauten Speicher ( 0702 ) geschrieben. The results of each level of recursion (1-3) are written in the structure (0711) in a constructed according to the principle stack memory (0702). Gleichzeitig mit dem Abbau ( 0712 ) der Ebenen wird der Stack abgebaut. Simultaneously with the degradation (0712) of the planes of the stack is reduced.

Hochsprachenbeispiele High-level language examples

Ein Modul kann beispielsweise folgendermaßen deklariert werden: A module can be declared for example as follows:

module kennzeichnet den Beginn eines Modules. modules marks the beginning of a module.
input/output definiert die Ein-/Ausgangsvariablen mit den Typen ty n . input / output defines the input / output variables with the types ty n.
begin . begin. . , . , end markieren den Rumpf des Modules. end mark the hull of the module.
register <regname1/2< übergibt das Ergebnis an den Output, wobei des Ergebnis in dem durch <regname1/2< spezifizierten Register zwischengespeichert wird. register <regname1 / 2 <passes the result to the output, wherein the result is latched in the range specified by <regname1 / 2 <register. <regname1/2< ist dabei eine globale Referenz auf ein bestimmtes Register. <Regname1 / 2 <is a global reference to a particular register.

Als weitere Übergabemodi an den Output stehen beispielsweise folgende Speicherarten zur Verfügung: As another Übergabemodi to the output are for example the following memory types:
fifo <fifoname<, wobei die Daten an einen nach dem FIFO- Prinzip arbeitenden Speicher übergeben werden. fifo <fifoname <, wherein the data is passed to an operating according to the FIFO principle memory. fifoname ißt dabei eine globale Referenz auf einen bestimmten, im FIFO- Modus arbeitenden Speicher. fifoname eats it a global reference to a specific, operating in FIFO mode memory. terminate@ wird dabei um den Parameter bzw. das Signal. @ terminate is in this case to the parameters or the signal. "fifofull" erweitert, der/das anzeigt, daß der Speicher voll ist. expanded "fifofull", the / indicating that the memory is full.
stack <stackname<, wobei die Daten an einen nach dem Stack- Prinzip arbeitenden Speicher übergeben werden. stack <stack name <, wherein the data is passed to a working according to the principle stack memory. stackname ist dabei eine globale Referenz auf einen bestimmten, im Stack- Modus arbeitenden Speicher. stack name is a global reference to a certain operating mode in the stack memory.
terminate@ unterscheidet die Programmierung entsprechend des erfindungsgemäßen Verfahrens von der herkömmlichen sequentiellen Programmierung. @ terminate different programming according to the inventive method of the conventional sequential programming. Der Befehl definiert das Abbruchkriterium des Modules. The command defines the termination criterion of the module. 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. The outcome variables res1 and res2 are not evaluated by @ terminate with their actual value, instead only the validity of the variables (whose status signal so) is checked. 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. If both variables valid, that module terminated with the value 1. That is, a signal having the value 1 is forwarded to the parent load unit, whereupon the parent loading unit loads the next module.

register wird in diesem Beispiel über input-Daten definiert. register is defined in this example, on input data. Dabei ist <regname1< derselbe wie in example1. Where <regname1 <same as in example1. Dies bewirkt, daß das Register, das die output-Daten in example1 aufnimmt, die input-Daten für example2 zur Verfügung stellt. This causes the register which receives the output data in example1, provides the input data for example2 available.
fifo definiert einen FIFO-Speicher der Tiefe 256 für die Ausgangsdaten res1. fifo defines a FIFO memory depth 256 for the output data res1. Das Full-Flag (fifofull) des FIFO- Speichers wird in terminate@ als Abbruchkriterium verwendet. The full flag (fifofull) of the FIFO memory is used in @ terminate as termination criterion.

define definiert eine Schnittstelle für Daten (Register, Speicher, etc.). define defines an interface for data (register, memory, etc.). Bei der Definition werden die erforderlichen Ressourcen, sowie die Bezeichnung der Schnittstelle angegeben. When defining the resources and the name of the interface are given. Da die Ressourcen eindeutig angegeben werden und nur einmal verwendet werden können, ist die Definition global, dh die Bezeichnung gilt für das gesamte Programm. Since the resources are clearly identified and can be used only once, the definition is global, that is, the designation is valid for the entire program.
call ruft ein Modul als Unterprogramm auf. call calls a module as a subroutine.
signal definiert ein Signal als Ausgangssignal, ohne daß eine Zwischenspeicherung verwendet wird. signal defines a signal as an output signal without any intermediate storage is used.

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

Durch die globale Deklaration "define . . ." The global declaration ". Define.." ist es prinzipiell nicht mehr notwendig, die so definierten input/output Signale in die Schnittstellen-Deklaration der Module aufzunehmen. in principle it is no longer necessary, the defined so as to receive input / output signals in the interface declaration of the modules. Die entsprechend modifizierten Beispiel-Module würden dann folgendermaßen aussehen: The correspondingly modified example modules would then look like this:

. , . , . ,

Die Zustandsinformationen des Prozessormodells The state information 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). To determine the states within a graph, the status register of the individual cells (PAEs) About one in addition to the data bus (0801) existing status-bus system (0802) al l asked other calculators are available (Fig. 8b). Das bedeutet, daß eine Zelle (PAE X) die Statusinformation einer anderen Zelle (PAE Y) evaluieren kann und dementsprechend die Daten verarbeitet. This means that a cell (PAE X) can evaluate the status information of another cell (PAE Y) and accordingly processes the data. Um den Unterschied zu bestehenden Paralle rechnersystemen zu verdeutlichen, ist in Fig. 8a der Stand der Technik angegeben. To illustrate computer systems the difference to existing parallels, in Fig. 8a, the prior art is given. Dabei ist ein Multiprozessorsystem gezeigt, dessen Prozessoren über einen gemeinsamen Datenbus ( 0803 ) miteinander verbünden sind. In this case, a multi-processor system is shown, whose processors are unite with each other via a common data bus (0803). Ein explizites Bussystem für den synchronen Austausch von Daten und Status existiert nicht. An explicit bus system for the synchronous exchange of data and status does not exist.

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 it can be treated accordingly to the method described according to the task of both the data flow graph, and the control flow.

Erweiterungen in der Hardware gegenüber PACT02 und PACT04 Enhancements in hardware over 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). By PACT02 PACT04 and the prior art is in relation aμf the configuration properties of cells (PAEs) defined and published in DE 196 51 075 (PACT02) and DE 196 54 846 (PACT04).

Dabei soll auf zwei Eigenschaften eingegangen werden: Here will be discussed on two properties:

  • 1. Einer PAE ist gemäß PACT02 ein Satz von Konfigurationsregi stern zugeordnet, der eine Konfiguration beinhaltet ( Fig. 8a). 1. One is a set of PAE Konfigurationsregi star assigned according PACT02, which includes 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. A group of PAEs, according PACT04 access a memory to store or read data (Fig. 8b).

Aufgabe ist es, The task is,

  • a) ein Verfahren zu schaffen, das das Umkonfigurieren von. a) to provide a method which comprises reconfiguring. PAEs beschleunigt und zeitlich von der übergeordneten Ladeeinheit entkoppelt, und PAEs accelerated and temporally decoupled from the parent load unit, and
  • b) das Verfahren so auszulegen, daß gleichzeitig die Möglichkeit geschaffen wird über mehrere Konfigurationen zu Sequenzen. b) design the method so that the same time provides the possibility of multiple configurations to sequences.
Entkopplung der Konfigurationsregister Decoupling of the configuration register

Das Konfigurationsregister wird von der übergeordneten Ladeeinheit (CT) entkoppelt ( Fig. 9), indem ein Satz von mehreren Konfigurationsregistern ( 0901 ) verwendet wird. The configuration register is from the parent loading unit (CT) uncoupled (Fig. 9) by a set of a plurality of configuration registers (0901) is used. Immer genau eines der Konfigurationsregister bestimmt selektiv die Funktion dar PAE. Always exactly one of the configuration registers is selectively determined PAE the function. Die Auswahl des aktiven Registers wird über einen Multiplexer ( 0902 ) durchgeführt. The selection of the active register is performed via a multiplexer (0902). In jedes der Konfigurationsregister kann die CT beliebig schreiben, sofern dieses nicht die aktuelle Konfiguration der PAE bestimmt. In each of the configuration registers, the CT can write freely, provided that this does not determine the current configuration of the PAE. Welches Konfigurationsregister von 0902 selektiert wird kann durch verschiedene Quellen bestimmt werden: Which configuration register is selected by 0902 can be determined by various sources:

  • 1. Ein beliebiges Status-Signal oder eine Gruppe beliebiger Status-Signale, die über ein Bussystem ( 0802 ) an 0902 geführt werden ( Fig. 9a). 1. Any status signal or a group of any status signals via a bus system (0802) to 0902 (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). The status signals are generated by any PAEs or provided by external connectors of the block available (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 generated from the parent CT signal 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, optionally, the incoming signals (0903, 0904, 0905) for storing a register means for a certain period.

Durch den Einsatz mehrere Register wird die CT zeitlich entkoppelt. By using more registers CT is decoupled in time. Das bedeutet, die CT kann mehrere Konfigurationen "vorladen", ohne daß eine direkte zeitliche Abhängigkeit besteht. That is, the CT may have several configurations "summon" without a direct temporal dependency exists.

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. Only the selected tab is not charged in 0901, maintained with the configuration of the PAE until the CT has the register loaded. 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. To determine whether a register has a valid information is a "valid bit" (0906) can be inserted per register, which is set by the CT. Ist 0906 bei einem selektierten Register nicht gesetzt, wird über ein Signal die CT zum schnellstmöglichen Setzten des Registers aufgefordert. Is not set at a selected register 0906, the CT will be prompted for the fastest possible set of register a signal.

Das in Fig. 9 beschriebene Verfahren ist einfach zu einem Sequenzer erweiterbar ( Fig. 10). The process described in Fig. 9 can be extended easily to a sequencer (Fig. 10). Dazu wird ein Mikrokontroller ( 1001 ) zur Ansteuerung der Selektionssignale des Multiplexers ( 0902 ) verwendet. For this purpose a microcontroller (1001) for controlling the selection signals of the multiplexer (0902) is used. 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. The sequencer determined dependent on the currently selected configuration (1002) and an additional status information (1003/1004), the next to be selected configuration. Dabei kann die Statusinformation Here, 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) any over 0802 supplied status signal (FIG. 10b).
  • c) eine Kombination aus (a) und (b) sein. c) be 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. For easy understanding of 0901 can be seen as a memory that is being addressed through a 0902 command of the 1,001th Die Adressierung ist dabei abhängig vom Befehl selbst und von einem Statusregister. Addressing is always depending on the command itself and a status register. Insoweit entspricht der Aufbau einer "von Neumann" Maschine, mit dem Unterschied, To this extent, the construction of a "von Neumann" machine, with the difference

  • a) der universellen Einsetzbarkeit, also den Sequenzer nicht zu verwenden (vgl. Fig. 9) (a) the universal use, so do not use the sequencer see. 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 is not (from the associated sequencer arithmetic unit PAE) must be generated, but can be derived from any other arithmetic logic unit (see. 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 doing jumps, particularly conditional jumps, can perform within the 0,901th

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. A further additional or alternative method (Fig. 11) for setting up sequencers within said blocks is to use the internal data memory (1101) for storing the configuration information for a PAE. Dabei wird der Datenausgang eines Speichers auf einen Konfigurationseingang einer PAE geschaltet ( 1102 ). Here, the data output of a memory is switched to a configuration input of a PAE (1102). Die Adresse ( 1103 ) für 1101 kann dabei von derselben PAE oder einer beliebigen anderen generiert werden. The address (1103) for 1101 may thereby 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. In this method, the sequencer is not firmly implemented, but is emulated by a PAE or a group of PAEs.

Claims (2)

  1. 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. A process for executing programs on a block with a single- or multi-dimensional cell structure, characterized in that data flow or control flow graph are partitioned in time separated subgraphs and are sequentially displayed on the block and carried out who the.
  2. 2. Hardware mit entkoppeltem Konfigurationsregister. 2. Hardware with decoupled configuration registers.
DE1999126538 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 (1)

Application Number Priority Date Filing Date Title
DE1999126538 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

Applications Claiming Priority (12)

Application Number Priority Date Filing Date Title
DE1999126538 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
US10009649 US8230411B1 (en) 1999-06-10 2000-06-13 Method for interleaving a program over a plurality of cells
PCT/DE2000/001869 WO2000077652A9 (en) 1999-06-10 2000-06-13 Sequence partitioning in cell structures
DE2000181643 DE10081643D2 (en) 1999-06-10 2000-06-13 Sequence partitioning of cell structures
EP20000943684 EP1228440B1 (en) 1999-06-10 2000-06-13 Sequence partitioning in cell structures
CN 00811550 CN1378665A (en) 1999-06-10 2000-06-13 Programming concept
JP2001503066A JP2003505753A (en) 1999-06-10 2000-06-13 Sequence division method in the cell structure
US12720898 US8726250B2 (en) 1999-06-10 2010-03-10 Configurable logic integrated circuit having a multidimensional structure of configurable elements
US12840559 US20110012640A1 (en) 1999-06-10 2010-07-21 Configurable logic integrated circuit having a multidimensional structure of configurable elements
US12840477 US8312200B2 (en) 1999-06-10 2010-07-21 Processor chip including a plurality of cache elements connected to a plurality of processor cores
US14276449 US9690747B2 (en) 1999-06-10 2014-05-13 Configurable logic integrated circuit having a multidimensional structure of configurable elements
US15629720 US20170286364A1 (en) 1999-06-10 2017-06-21 Method for providing subapplications to an array of alus

Publications (1)

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

Family

ID=7910839

Family Applications (1)

Application Number Title Priority Date Filing Date
DE1999126538 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 (28)

* 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
EP1472616A2 (en) * 2001-09-19 2004-11-03 PACT XPP Technologies AG Reconfigurable elements
EP1518186A2 (en) * 2002-03-21 2005-03-30 PACT XPP Technologies AG Method and device for data processing
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
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method 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
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag 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

Cited By (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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
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
USRE45109E1 (en) 1997-02-08 2014-09-02 Pact Xpp Technologies Ag 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
USRE44365E1 (en) 1997-02-08 2013-07-09 Martin Vorbach 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
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
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
US8312301B2 (en) 2001-03-05 2012-11-13 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
US7844796B2 (en) 2001-03-05 2010-11-30 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
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
US7657877B2 (en) 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of 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
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
US7840842B2 (en) 2001-09-03 2010-11-23 Martin Vorbach Method for debugging reconfigurable architectures
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
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
US8407525B2 (en) 2001-09-03 2013-03-26 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
WO2003025781A2 (en) 2001-09-19 2003-03-27 Pact Xpp Technologies Ag Router
EP1472616A2 (en) * 2001-09-19 2004-11-03 PACT XPP Technologies AG Reconfigurable elements
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
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
EP1518186A2 (en) * 2002-03-21 2005-03-30 PACT XPP Technologies AG Method and device for data processing
US8156284B2 (en) 2002-08-07 2012-04-10 Martin Vorbach Data processing method and device
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US8281265B2 (en) 2002-08-07 2012-10-02 Martin Vorbach Method and device for processing data
US7928763B2 (en) 2002-09-06 2011-04-19 Martin Vorbach Multi-core processing system
US8803552B2 (en) 2002-09-06 2014-08-12 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US8310274B2 (en) 2002-09-06 2012-11-13 Martin Vorbach Reconfigurable sequencer structure
US7782087B2 (en) 2002-09-06 2010-08-24 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

Similar Documents

Publication Publication Date Title
EP1146432B1 (en) Reconfiguration method for programmable components during runtime
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
DE19807872A1 (en) Method of managing configuration data in data flow processors
DE102010028266A1 (en) Control apparatus and method for calculating an output quantity for control
DE10028397A1 (en) Registration method in operating a reconfigurable unit, involves evaluating acknowledgement signals of configurable cells with time offset to configuration
DE102010028259A1 (en) Microcontroller with a computing unit and a logic circuit and Verfahrung for performing calculations by a microcontroller for a system or a control system in a vehicle
DE19929821A1 (en) A processor-based process control system for controlling industrial process machines e.g. plastics injection molding machine has computer with I/O bus controller directly connected to I/O bus network
EP1898282A1 (en) Method of testing an electronic control system
EP0825540A1 (en) Pipeline processor
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
JPH06175884A (en) Program error cause investigating device
DE19857332C1 (en) Procedure to synchronize processes, editing of data, creating of program
US20020152256A1 (en) Method and device for reconstructing the process sequence of a control program
DE10110504B4 (en) Method and computer system for managing threads
DE3718639A1 (en) Method and circuit arrangement for driving two or more microprocessors in parallel operation, particularly in stored program control units
DE10116809A1 (en) Programmable controller for the development of control programs uses sequential processing
US5237643A (en) Parallel processing inference system with single inference engine
EP0477598A2 (en) Instruction unit for a processor featuring &#39;n&#39; processing elements
EP0108415A2 (en) Integrated microprogrammed device for the control of information processing execution and method for its operation
EP1116129B1 (en) Configurable hardware block
DE10338701A1 (en) Safety controller, e.g. for use in chip cards or smart cards, has processor that can switch between power mode and security mode
EP0629944A1 (en) Data processing machine
DE3643560A1 (en) Flexible correction of firmware
DE19843640A1 (en) A method for configuring a configurable hardware block
EP1709534B1 (en) The running of a program by a virtual machine

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