[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE10129237A1 - Verfahren zur Bearbeitung von Daten - Google Patents

Verfahren zur Bearbeitung von Daten

Info

Publication number
DE10129237A1
DE10129237A1 DE10129237A DE10129237A DE10129237A1 DE 10129237 A1 DE10129237 A1 DE 10129237A1 DE 10129237 A DE10129237 A DE 10129237A DE 10129237 A DE10129237 A DE 10129237A DE 10129237 A1 DE10129237 A1 DE 10129237A1
Authority
DE
Germany
Prior art keywords
code
processor
extracted
interface
reconfigurable
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
DE10129237A
Other languages
English (en)
Inventor
Frank May
Armin Nueckel
Martin Vorbach
Markus Weinhardt
Joao Manuel Paiva Cardoso
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
Priority to PCT/EP2001/008534 priority Critical patent/WO2002008964A2/de
Priority to EP01969493A priority patent/EP1377919A2/de
Priority to AU2001289737A priority patent/AU2001289737A1/en
Priority to US09/967,498 priority patent/US20040015899A1/en
Priority to AU2002254921A priority patent/AU2002254921A1/en
Priority to AU2002257615A priority patent/AU2002257615A1/en
Priority to PCT/EP2002/002398 priority patent/WO2002071248A2/de
Priority to US10/469,909 priority patent/US7444531B2/en
Priority to PCT/EP2002/002403 priority patent/WO2002071249A2/de
Priority to EP02727358A priority patent/EP1540507B1/de
Priority to EP02712937A priority patent/EP1454258A2/de
Priority to JP2002570052A priority patent/JP4011488B2/ja
Priority to US10/469,910 priority patent/US20070299993A1/en
Priority to US10/471,061 priority patent/US7581076B2/en
Priority to PCT/EP2002/002402 priority patent/WO2002071196A2/de
Priority to EP02724198.3A priority patent/EP1386220B1/de
Priority to JP2002570103A priority patent/JP2004535613A/ja
Priority to JP2002570104A priority patent/JP2004536373A/ja
Publication of DE10129237A1 publication Critical patent/DE10129237A1/de
Application filed by Pact Informationstechnologie GmbH filed Critical Pact Informationstechnologie GmbH
Priority to AT10005502T priority patent/ATE557344T1/de
Priority to AT02780770T priority patent/ATE478381T1/de
Priority to DE50214592T priority patent/DE50214592D1/de
Priority to EP10005502A priority patent/EP2224330B1/de
Priority to EP02780770A priority patent/EP1402382B1/de
Priority to DE10227650A priority patent/DE10227650A1/de
Priority to AU2002347560A priority patent/AU2002347560A1/en
Priority to JP2003505782A priority patent/JP2004533691A/ja
Priority to PCT/EP2002/006865 priority patent/WO2002103532A2/de
Priority to US10/480,003 priority patent/US7657877B2/en
Priority to JP2008249112A priority patent/JP2009020909A/ja
Priority to JP2008249116A priority patent/JP2009043276A/ja
Priority to JP2008249099A priority patent/JP2009032281A/ja
Priority to JP2008249106A priority patent/JP2009054170A/ja
Priority to JP2008249115A priority patent/JP2009043275A/ja
Priority to US12/257,075 priority patent/US8099618B2/en
Priority to US12/389,116 priority patent/US20090210653A1/en
Priority to US12/496,012 priority patent/US20090300262A1/en
Priority to US12/570,984 priority patent/US8312301B2/en
Priority to US12/640,201 priority patent/US20100095094A1/en
Priority to US12/944,068 priority patent/US9037807B2/en
Priority to US13/043,102 priority patent/US20110173389A1/en
Priority to US13/653,639 priority patent/US9075605B2/en
Priority to US14/219,945 priority patent/US9552047B2/en
Priority to US14/223,793 priority patent/US10031733B2/en
Priority to US14/231,358 priority patent/US9436631B2/en
Priority to US14/318,211 priority patent/US9250908B2/en
Priority to US14/500,618 priority patent/US9141390B2/en
Priority to US15/225,638 priority patent/US10152320B2/en
Priority to US15/408,358 priority patent/US10331194B2/en
Priority to US16/190,931 priority patent/US20190102173A1/en
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

Die Erfindung betrifft ein Verfahren zur Übersetzung von Programmen auf ein System, bestehend aus wenigstens einem ersten Prozessor und einer rekonfigurierbaren Einheit. Hierbei ist vorgesehen, daß die Codeteile, die für die rekonfigurierbare Einheit geeignet sind, bestimmt und extrahiert werden und der verbleibende Code zur Abarbeitung durch den ersten Prozessor derart extrahiert wird.

Description

Die vorliegende Erfindung befaßt sich mit herkömmlichen, d. h. konventionellen und rekonfigurierbaren Architekturen sowie mit Verfahren hierfür, die eine Übersetzung einer klassischen Hochsprache (PROGRAMM), wie Pascal, C, C++, Java, etc. ermög­ lichen, insbesondere auf eine rekonfigurierbare Architektur.
Unter einer konventionellen Prozessorarchitektur (PROZESSOR) werden vorliegend beispielsweise sequentielle Prozessoren mit einer von-Neumann- oder Havardarchitektur verstanden, wie z. B. Kontroller, CISC-, RISC-, VLIW-, DSP- u. ä. Prozessoren.
Unter einer rekonfigurierbaren Zielarchitektur werden vorlie­ gend Bausteine (VPU) mit konfigurierbarer Funktion und/oder Vernetzung verstanden, insbesondere integrierte Bausteine mit einer Mehrzahl von ein- oder mehrdimensional angeordneten, arithmetischen und/oder logischen und/oder analogen und/oder speichernden Baugruppen, die direkt oder durch ein Bussystem miteinander verbunden sind.
Zur Gattung dieser Bausteine zählen insbesondere systolische Arrays, neuronale Netze, Mehrprozessor-Systeme, Prozessoren mit mehreren Rechenwerken und/oder logischen Zellen, Vernet­ zungs- und Netzwerkbausteine wie z. B. Crossbar-Schalter, ebenso wie bekannte Bausteine der Gattung FPGA, DPGA, XPUTER, etc. Hingewiesen wird insbesondere in diesem Zusammenhang auf die folgenden Schutzrechte desselben Anmelders: P 44 16 881.0-53, DE 197 81 412.3, DE 197 81 483.2, DE 196 54 846.2-53, DE 196 54 593.5-53, DE 197 04 044.6-53, DE 198 80 129.7, DE 198 61 088.2-53, DE 199 80 312.9, PCT/DE 00/01869, DE 100 36 627.9-33, DE 100 28 397.7, DE 101 10 530.4, DE 101 11 014.6, PCT/EP 00/10516, EP 01 102 674.7. Diese sind hiermit zu Offenbarungszwecken vollumfänglich eingegliedert.
Es hat sich gezeigt, daß es bestimmte Verfähren und Pro­ grammabläufe gibt, die sich besser mit einer rekonfigurierba­ re Architektur abarbeiten lassen als mit einer konventionel­ len Prozessorarchitektur. Umgekehrt gibt es auch solche Ver­ fahren und Programmabläufe, die besser mit einer konventio­ nellen Prozessorarchitektur ausgeführt werden können.
Die Aufgabe dieser Erfindung besteht darin Neues für die ge­ werbliche Anwendung bereitzustellen.
Die Lösung dieser Aufgabe wird in unabhängiger Form bean­ sprucht.
Es wurde erkannt, daß es wünschenswert ist, daß Verfahren zur Datenverarbeitung so ausgelegt werden, daß nur die jeweils für die rekonfigurierbare Zielarchitektur besonders geeigne­ ten Teile des zu übersetzenden Programmes extrahiert werden. Die verbleibenden Teile des Programmes können dann auf eine konventionelle Prozessorarchitektur übersetzt werden.
Weiterhin sei angemerkt, daß die Verfahren auch auf Gruppen von mehreren Bausteinen angewendet werden können.
Systemaufbau
Ein PROZESSOR wird derart mit einer oder mehreren VPU(s) ver­ bunden, daß ein effizienter Informationsaustausch, insbeson­ dere in Form von Daten- und Statusinformation möglich ist.
Die Anordnung eines herkömmlichen Prozessors und eines rekon­ figurierbaren Prozessors, dergestalt, daß eine Daten- und Sta­ tusinformation zwischen denselben während der Abarbeitung ei­ nes oder mehrere Programme möglich ist und/oder ohne daß ins­ besondere die Datenverarbeitung auf dem rekonfigurierbaren Prozessor und/oder dem herkömmlichen Prozessor signifikant unterbrochen werden muß, sowie die Ausbildung eines derarti­ gen Systems soweit aus dem nachfolgenden ersichtlich, wird gleichfalls beansprucht.
Es werden zunächst beispielsweise folgende Verbindungsverfah­ ren und -mittel verwendet:
  • a) Shared-Memory
  • b) Netzwerk (beispielsweise Bussysteme wie z. B. PCI-Bus, Se­ rielle Busse wie z. B. Ethernet)
  • c) Kopplung an einen internen Registersatz oder mehrere in­ terne Registersätze
  • d) andere Speichermedien (Festplatte, Flash-ROM, etc.)
Es sei erwähnt, daß hier als ein "Prozessor" auch ein Dual- Prozessorsystem und/oder ein andere Anordnungen aufweisendes System insbesondere mit mehr als zwei konventionellen Prozes­ soren gemeint sein kann. Gleichfalls und/oder alternativ sind mehrere rekonfigurierbare Bausteine gleichzeitig verwendbar.
Übersetzungsprinzip
Aus einem PROGRAMM werden mittels eines PRÄPROZESSORS die Teile extrahiert, die sich auf die jeweils bestimmte(n) VPU(s) effizient und/oder sinnvoll abbilden lassen. Diese Teile werden in einem für VPUs geeigneten Format ausgegeben (NML).
Der verbleibende Code und/oder der extrahierte Code wird an der Stelle der durch die Extraktion fehlenden Code-Teile um einen Interface-Code erweitert, der entsprechend der Archi­ tektur des Zielsystems die Kommunikation zwischen PROZES­ SOR(en) und VPU(s) steuert. Der verbleibende und ggf. erwei­ terte Code wird in Form einer klassischen Hochsprache ausge­ geben (HOSTCODE), wobei die Gattung des ausgegebenen Codes insbesondere exakt der Gattung der ursprünglichen HOCHSPRACHE entsprechen kann.
Diese extrahierte HOCHSPRACHE wird mittels eines gewöhnlichen Standard-Übersetzers für den/die jeweiligen PROZESSOR(en) übersetzt, wobei es möglich ist, dies so zu gestalten, daß keinerlei besondere Anpassung des Übersetzers an die verwen­ dete Datenverarbeitungsarchitektur notwendig ist.
Durch dieses Verfahren wird der Implementierungsaufwand der Programmierumgebung erheblich vereinfacht. Zudem kann der An­ wender den PROZESSOR weiterhin in der ihm bekannten Program­ mierumgebung, die er frei wählen kann, programmieren und de­ buggen.
Übersetzungsablauf Extraktion
Zunächst wird der für eine VPU geeignet erscheinende Code aus dem PROGRAMM extrahiert. Die Extraktion kann auf unterschied­ lichen Methoden basieren, die einzeln oder kombiniert ange­ wendet werden. Folgende Methoden sollen beispielhaft detail­ lierter beschrieben werden.
Extraktion durch Hints
Der Programmierer gibt explizit durch Hinweise (Hints) inner­ halb des PROGRAMMES Anweisungen, welche Teile extrahiert wer­ den sollen. Beispielsweise kann dies folgendermaßen erfolgen:
. . .
Code
. . .
/ / START_NML_EXTRACTION
Zu extrahierender Code
/ / END_NML_EXTRACTION
. . .
Code
. . .
"/ / START_NML_EXTRACTION" kennzeichnet den Beginn eines zu extrahierenden Codes.
"/ / END_NML_EXTRACTION" kennzeichnet das Ende eines zu extra­ hierenden Codes.
In einem solchen Fall ist die Einheit zur Umsetzung des Pro­ gramms in Konfigurationscodes dazu ausgebildet, die Hints be­ ziehungsweise Umsetzungsvorgaben zu erkennen.
Extraktion durch Aufruf von NML-Routinen
Der Programmierer implementiert Teile des PROGRAMMES direkt in NML und springt in die NML-Routinen durch Aufrufe (calls). Beispielsweise erfolgt dies derart:
  • a) NML-Code
    . . .
    procedure EXAMPLE
    begin
    . . .
    end
    . . .
  • b) PROGRAMM Code
    . . .
    Code
    . . .
    call EXAMPLE / / Aufruf des NML-Codes
    . . .
    Code
    . . .
In diesem Fall ist die Einheit zur Umsetzung dazu ausge­ bildet, NML-Programmteile, das heißt Programmteile zur Aus­ führung in und/oder auf einem rekonfigurierbaren Array in ein größeres Programm einzubinden.
Extraktion durch Analyse
Durch an die jeweilig VPU angepaßte Analysemethoden werden Teile innerhalb des PROGRAMMES erkannt, die effizient und/oder sinnvoll auf die VPU abbildbar sind. Diese Teile werden aus dem PROGRAMM extrahiert.
Eine beispielsweise für viele VPUs geeignete Analysemethode ist der Aufbau von Datenfluß- und/oder Kontrollflußgraphen aus dem PROGRAMM. Diese Graphen können hinsichtlich ihrer möglichen Partitionierung und/oder Abbildung auf die Ziel-VPU automatisch untersucht werden. In diesem Fall werden die Tei­ le der generierten Graphen bzw. die entsprechenden PROGRAMM- Teile, extrahiert; die sich hinreichend gut partitionieren und/oder abbilden lassen. Hierzu kann eine Partitionierbar­ keits- und/oder Abbildbarkeitsanalyse erfolgen, die die je­ weilige Eigenschaft bewertet.
Übersetzung in NML
Eine für die implementierte VPU geeignete Übersetzung des ex­ trahierten Codes nach NML wird durchgeführt.
Für datenflußorientierte VPUs kann beispielsweise automatisch ein Datenfluß- und/oder Kontrollflußgraph aufgebaut werden. Die Graphen werden dann in NML-Code übersetzt. Dabei kann ge­ gebenenfalls bereits das Abbilden auf die VPU erfolgen, bei­ spielsweise mittels der Durchführung des Plazierens der benö­ tigten Ressourcen und des Routens der Verbindungen (Place and Route). Dies geschieht zum Beispiel nach typischen bekannten Regeln des Plazierens und Routens.
Analyse
Mittels einer automatischen Analysemethode wird der extra­ hierte Code und/oder der übersetzte NML-Code auf seine Verar­ beitungseffizienz hin analysiert. Dabei ist die Analysemetho­ de bevorzugt so gewählt, daß der Interface-Code und die dar­ aus entstehenden Performanceeinflüsse an geeigneter Stelle mit in die Analyse einfließen.
Gegebenenfalls wird die Analyse durch eine komplette Überset­ zung und Implementierung auf dem Hardware-System durchge­ führt, indem das PROGRAMM ausgeführt und mit geeigneten Me­ thoden, wie sie beispielsweise nach dem Stand der Technik be­ kannt sind, vermessen wird.
Loop
Basierend auf den durchgeführten Analysen, können verschiede­ ne durch die Extraktion für eine VPU gewählte Teile als unge­ eignet identifiziert werden. Umgekehrt kann die Analyse erge­ ben, daß bestimmte für einen PROZESSOR extrahierte Teile zur Ausführung auf einer VPU geeignet wären.
Eine optionale Schleife, die nach der Analyse basierend auf geeigneten Entscheidungskriterien zurück in den Extraktion­ steil führt, um diesen mit entsprechend der Analyse angepaß­ ten Extraktionsvorgaben erneut auszuführen, ermöglicht die Optimierung des Übersetzungsergebnisses. Man hat somit eine Iteration.
Die Schleife kann an mehreren unterschiedlichen Stellen in den Compilerlauf eingebracht sein.
Einbindung der PROZESSOR- und VPU-Compiler
Der ausgegebene Code ist üblicherweise vollständig und ohne weitere Eingriffe auf den jeweils nachfolgenden Compilern ausführbar. Gegebenenfalls werden Compilerflags und Con­ straints für die nachfolgenden Compiler generiert, wobei der Anwender optional eigene Vorgaben hinzufügen und/oder die ge­ nerierten Vorgaben modifizieren kann. Die nachfolgenden Com­ piler benötigen keine wesentlichen Modifikationen, sodaß Standard-Tools einsetzbar sind.
Das vorgeschlagene Verfahren eignet sich somit beispielsweise insbesondere als Präprozessor vor Compilern und Entwicklungs­ systemen.
Interface-Code
Der Interface-Code, der in den extrahierten Code eingesetzt wird, kann durch unterschiedliche Verfahren vorgegeben wer­ den. Bevorzugt wird der Interface-Code in einer Datenbank ab­ gelegt, auf die zugegriffen wird. Die Einheit zur Umsetzung kann so ausgebildet sein, daß sie eine Auswahl des Program­ mierers berücksichtigt, der beispielsweise durch Hinweise im PROGRAMM oder durch Compilerflags den passenden Interface- Code auswählt. Dabei kann der für das jeweils verwendete Im­ plementierungsverfahren geeignete Interface-Code gewählt wer­ den.
Die Datenbank selbst kann durch unterschiedliche Methoden aufgebaut und gewartet werden. Einige Beispiele sollen zur Verdeutlichung der Möglichkeiten angeführt werden:
  • a) Der Interface-Code kann vom Lieferanten des Compilers für bestimmte Verbindungsverfahren vorgegeben werden. Dies kann bei der Organisation der Datenbank berücksichtigt werden, indem entsprechende Speichermittel für diese An­ gaben bereitgehalten werden.
  • b) Der Interface-Code kann vom Benutzer, der den Systemauf­ bau bestimmt hat, selbst geschrieben oder aus bestehenden (Beispiel-) Interface-Codes modifiziert und der Datenbank zugefügt werden. Das Datenbankmittel wird hierzu bevor­ zugt benutzermodifizierbar gestaltet, um dem Benutzer die Datenbankmodifikation zu ermöglichen.
  • c) Der Interface-Code kann von einem Entwicklungssystem, mit dem beispielsweise der Systemaufbau geplant und/oder be­ schrieben und/oder getestet wurde, automatisch generiert werden.
Der Interface-Code ist gewöhnlicherweise derart gestaltet, daß er den Anforderungen der Programmiersprache entspricht, in der der extrahierte Code vorliegt in den der Interface- Code eingefügt werden soll.
Debugging und Integration der Toolsets
In die Interface-Codes können Kommunikationsroutinen einge­ führt werden, um die unterschiedlichen Entwicklungssysteme für PROZESSOR und VPU zu synchronisieren. Insbesondere kann der Code für die jeweiligen Debugger aufgenommen werden.
Der Interface-Code steuert den Datenaustausch zwischen PRO­ ZESSOR und VPU. Er ist daher eine geeignete und bevorzugte Schnittstelle, um die jeweiligen Entwicklungssysteme und De­ buggets zu steuern. Es ist beispielsweise möglich, einen De­ bugger für den PROZESSOR solange zu aktivieren, wie die Daten von dem Prozessor verarbeitet werden. Sobald die Daten über den Interface-Code an eine (oder mehrere) VPU übergeben wer­ den, ist ein Debugger für VPUs zu aktivieren. Wird der Code zurück an den PROZESSOR gesendet, soll wiederum der PROZES­ SOR-Debugger aktiviert werden.
Es ist daher also möglich und bevorzugt, derartige Abläufe durch das Einfügen von Steuercodes für Debugger und/oder Ent­ wicklungssysteme in den Interface-Code abzuwickeln.
Die Kommunikation und Steuerung zwischen den unterschiedli­ chen Entwicklungssystemen soll daher bevorzugt mittels in die Interface-Codes von PROZESSOR und/oder VPU eingebrachte Steu­ ercodes abgewickelt werden. Die Steuercodes können dabei be­ stehenden Standards für die Steuerung von Entwicklungssyste­ men weitgehend entsprechen.
Die Verwaltung und Kommunikation der Entwicklungssysteme wird vorzugsweise wie beschrieben in die Interface-Codes abgewic­ kelt, kann jedoch - sofern sinnvoll - auch getrennt von die­ sen, nach einem entsprechenden ähnlichen Verfahren abgewic­ kelt werden.
Beschreibung der Figuren
Fig. 1 verdeutlicht das vorgeschlagene Verfahren und zeigt einen möglichen Systemaufbau. Dabei ist ein PROZESSOR (0101) über ein geeignetes Interface (0102) zum Daten- und Statu­ saustausch mit einer VPU (0103) verbunden.
Ein PROGRAMM-Code (0110) wird in einen für den PROZESSOR ge­ eigneten Teil (0111) und einen VPU-geeigneten Teil (0112) zerlegt.
0111 wird durch einen Standard-Compiler (0113) übersetzt, wo­ bei zusätzlicher Code zur Beschreibung und Verwaltung des In­ terfaces (0102) aus einer Datenbank (0114) eingefügt wird. Auf 0101 ausführbarer sequentieller Code wird generiert (0116) und sofern notwendig die entsprechende Programmierung (0117) des Interfaces (0102).
0112 wird durch einen VPU-Compiler (0115) übersetzt, wobei ein zusätzlicher Code zur Beschreibung und Verwaltung des Inter­ faces (0102) aus einer Datenbank (0114) eingefügt wird. Auf 0103 ausführbare Konfigurationen werden generiert (0118) und sofern notwendig die entsprechende Programmierung (0119) des Interfaces (0102).
In Fig. 2 ist beispielhaft ein prinzipieller Ablauf einer Compilation dargestellt. Ein PROGRAMM (0201) wird in der Ex­ traktionseinheit (0202) nach unterschiedlichen Verfahren in VPU-Code (0203) und PROZESSOR-Code (0204) zerlegt. Unter­ schiedliche Methoden können in beliebiger Kombination zur Ex­ traktion angewendet werden, beispielsweise Hinweise im ur­ sprünglichen PROGRAMM (0205), Unterprogrammaufrufe (0206) und/oder Analyseverfahren (0207). Der jeweils extrahierte Code wird ggf. übersetzt und ggf. auf seine Eignung für das jeweilige Zielsystem hin überprüft (0208). Dabei ist eine Rückkopplung (0209) auf die Extraktion möglich, um Verbesse­ rungen durch eine geänderte Zuordnung der Codes zum PROZESSOR oder einer VPU zu erhalten.
Danach (0211) wird 0203 durch den Interface-Code aus einer Datenbank (0210) erweitert (0212) und/oder 0204 wird durch den Interface-Code aus 0210 zu 0213 erweitert.
Der entstandene Code wird auf seine Performance analysiert (0214), ggf. ist eine Rückkopplung (0215) auf die Extraktion möglich, um Verbesserungen durch eine geänderte Zuordnung der Codes zum PROZESSOR oder einer VPU zu erhalten.
Der entstandene VPU-Code (0216) wird für eine weitere Über­ setzung an einen nachgeschalteten für die VPU geeigneten Com­ piler weitergegeben. Der entstandene PROZESSOR-Code (0217) wird für die weitere Übersetzung in einem beliebigen nachge­ schalteten für den PROZESSOR geeigneten Compiler weiterverar­ beitet.
Es soll angemerkt werden, daß einzelne Schritte je nach Ver­ fahren ausgelassen werden können. Wesentlich ist, daß weitge­ hend kompletter und ohne Eingriff durch den Programmierer di­ rekt übersetzbarer Code an die jeweils nachgeschalteten Com­ pilersysteme ausgegeben wird.
Die Datenbank für die Interface-Codes (0210) wird unabhängig und vor dem Compilerdurchlauf aufgebaut. Beispielsweise sind folgende Quellen für die Datenbank möglich: Vom Lieferanten vorgegeben (0220), vom Benutzer programmiert (0221) oder au­ tomatisch von einem Entwicklungssystem generiert (0222).
Zusammenfassend befaßt sich die vorliegende Erfindung mit Verfahren, die eine Übersetzung einer klassischen Hochsprache wie Pascal, C, C++, Java, etc. auf eine rekonfigurierbare Ar­ chitektur ermöglicht. Das Verfahren ist derart ausgelegt, daß nur die jeweils für die rekonfigurierbare Zielarchitektur ge­ eigneten Teile des zu übersetzenden Programmes extrahiert werden. Die verbleibenden Teile des Programmes werden auf ei­ ne konventionelle Prozessorarchitektur übersetzt.

Claims (14)

1. Verfahren zur Übersetzung von Programmen auf ein System bestehend aus wenigstens einem ersten Prozessor und einer rekonfigurierbaren Einheit, dadurch gekennzeichnet, daß die Codeteile, die für die rekonfigurierbare Einheit ge­ eignet sind, bestimmt und extrahiert werden und der verbleibende Code zur Abarbeitung durch den ersten Prozessor derart extrahiert wird.
2. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß dem für den Prozessor extrahierten Code derart Interface-Code zugefügt wird, daß eine Kommunikation zwischen Prozessor und rekonfigurierbarer Einheit entsprechend des Systems möglich ist.
3. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß dem für die rekonfigurierbare Einheit extrahierten Code derart Interface-Code zugefügt wird, daß eine Kommunikation zwischen Prozessor und rekonfigurierba­ rer Einheit entsprechend des Systems möglich ist.
4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der zu extrahierende Code aufgrund von Analysen festge­ stellt wird.
5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der zu extrahierende Code aufgrund von Hinweisen im Code festgestellt wird.
6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der zu extrahierende Code aufgrund von Aufrufen von Unter­ programmen festgestellt wird.
7. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Interface-Code eine Speicherkopplung (Shared-Memory) vorsieht.
8. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der Interface-Code eine Registerkopplung vorsieht.
9. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß der Interface-Code eine Kopplung mittels eines Netzwerkes vorsieht.
10. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß der extrahierte Code analysiert wird und gegebenenfalls die Extraktion mit neuen verbesserten Parametern erneut gestartet wird.
11. Verfahren nach Anspruch 1, dadurch gekennzeichnet, daß dem extrahierten Code Steuer-Code zur Verwaltung und/oder Steuerung und/oder Kommunikation der Entwicklungssysteme zugefügt wird.
12. Verfahren nach einem der vorhergehenden Ansprüche, worin der erste Prozessor eine konventionelle Prozessorarchitek­ tur aufweist, insbesondere ein Prozessor mit von -Neumann- und/oder Harvardarchitektur, Kontroller, CISC-, RISC-, VLIW-, DSP-Prozessor.
13. Verfahren insbesondere nach einem der vorhergehenden An­ sprüche zur Übersetzung von Programmen auf ein System be­ stehend aus einem Prozessor und einer rekonfigurierbaren Einheit, dadurch gekennzeichnet, daß
die Codeteile, die für die rekonfigurierbare Einheit ge­ eignet sind, extrahiert werden,
der verbleibende Code derart extrahiert wird, daß er mit­ tels eines beliebigen gewöhnlichen unmodifizierten für den Prozessor geeigneten Compilers übersetzbar ist.
14. Vorrichtung zur Datenverarbeitung mit wenigstens einem herkömmlichen Prozessor und wenigstens einer rekonfigu­ rierbaren Einheit, dadurch gekennzeichnet, daß sie ein Mittel zum Informationsaustausch, insbesondere in Form von Daten- und Statusinformation zwischen herkömmlichem Pro­ zessor und rekonfigurierbarer Einheit aufweist, wobei das Mittel so ausgebildet ist, daß eine Daten- und Statusinfor­ mation zwischen denselben während der Abarbeitung eines oder mehrerer Programme möglich ist und/oder ohne daß ins­ besondere die Datenverarbeitung auf dem rekonfigurierbaren Prozessor und/oder dem herkömmlichen Prozessor signifikant unterbrochen werden muß.
DE10129237A 2000-07-24 2002-06-20 Verfahren zur Bearbeitung von Daten Withdrawn DE10129237A1 (de)

Priority Applications (49)

Application Number Priority Date Filing Date Title
PCT/EP2001/008534 WO2002008964A2 (de) 2000-07-24 2001-07-24 Integrierter schaltkreis
EP01969493A EP1377919A2 (de) 2000-07-24 2001-07-24 Integrierter schaltkreis
AU2001289737A AU2001289737A1 (en) 2000-07-24 2001-07-24 Integrated circuit
US09/967,498 US20040015899A1 (en) 2000-10-06 2001-09-28 Method for processing data
AU2002254921A AU2002254921A1 (en) 2001-03-05 2002-03-05 Methods and devices for treating and processing data
AU2002257615A AU2002257615A1 (en) 2001-03-05 2002-03-05 Methods and devices for treating and/or processing data
PCT/EP2002/002398 WO2002071248A2 (de) 2001-03-05 2002-03-05 Verfahren und vorrichtungen zur datenbe- und/oder verarbeitung
US10/469,909 US7444531B2 (en) 2001-03-05 2002-03-05 Methods and devices for treating and processing data
PCT/EP2002/002403 WO2002071249A2 (de) 2001-03-05 2002-03-05 Verfahren und vorrichtungen zur datenbe- und/oder verarbeitung
EP02727358A EP1540507B1 (de) 2001-03-05 2002-03-05 Vorrichtung zur datenverarbeitung mit einem feld rekonfigurierbarer elemente
EP02712937A EP1454258A2 (de) 2001-03-05 2002-03-05 Verfahren und vorrichtungen zur datenbe- und/oder verarbeitung
JP2002570052A JP4011488B2 (ja) 2001-03-05 2002-03-05 データ加工および/またはデータ処理方法および装置
US10/469,910 US20070299993A1 (en) 2001-03-05 2002-03-05 Method and Device for Treating and Processing Data
US10/471,061 US7581076B2 (en) 2001-03-05 2002-03-05 Methods and devices for treating and/or processing data
PCT/EP2002/002402 WO2002071196A2 (de) 2001-03-05 2002-03-05 Verfahren und vorrichtung zu datenbe- und/oder verarbeitung
EP02724198.3A EP1386220B1 (de) 2001-03-05 2002-03-05 Verfahren und vorrichtung zu datenbe- und/oder verarbeitung
JP2002570103A JP2004535613A (ja) 2001-03-05 2002-03-05 データ処理方法およびデータ処理装置
JP2002570104A JP2004536373A (ja) 2001-03-05 2002-03-05 データ処理方法およびデータ処理装置
AT10005502T ATE557344T1 (de) 2001-06-20 2002-06-20 Verfahren und gerät zum partitionieren von grossen rechnerprogrammen
AT02780770T ATE478381T1 (de) 2001-06-20 2002-06-20 Verfahren zur bearbeitung von daten
DE50214592T DE50214592D1 (de) 2001-06-20 2002-06-20 Verfahren zur bearbeitung von daten
EP10005502A EP2224330B1 (de) 2001-06-20 2002-06-20 Verfahren und gerät zum partitionieren von grossen rechnerprogrammen
EP02780770A EP1402382B1 (de) 2001-06-20 2002-06-20 Verfahren zur bearbeitung von daten
DE10227650A DE10227650A1 (de) 2001-06-20 2002-06-20 Rekonfigurierbare Elemente
AU2002347560A AU2002347560A1 (en) 2001-06-20 2002-06-20 Data processing method
JP2003505782A JP2004533691A (ja) 2001-06-20 2002-06-20 データを処理するための方法
PCT/EP2002/006865 WO2002103532A2 (de) 2001-06-20 2002-06-20 Verfahren zur bearbeitung von daten
US10/480,003 US7657877B2 (en) 2001-06-20 2002-06-20 Method for processing data
JP2008249112A JP2009020909A (ja) 2001-03-05 2008-09-26 グラフのパーティショニング方法
JP2008249116A JP2009043276A (ja) 2001-03-05 2008-09-26 Fifo記憶方法
JP2008249099A JP2009032281A (ja) 2001-03-05 2008-09-26 データ伝送方法
JP2008249106A JP2009054170A (ja) 2001-03-05 2008-09-26 データ流の管理方法
JP2008249115A JP2009043275A (ja) 2001-03-05 2008-09-26 シーケンスの形成方法
US12/257,075 US8099618B2 (en) 2001-03-05 2008-10-23 Methods and devices for treating and processing data
US12/389,116 US20090210653A1 (en) 2001-03-05 2009-02-19 Method and device for treating and processing data
US12/496,012 US20090300262A1 (en) 2001-03-05 2009-07-01 Methods and devices for treating and/or processing data
US12/570,984 US8312301B2 (en) 2001-03-05 2009-09-30 Methods and devices for treating and processing data
US12/640,201 US20100095094A1 (en) 2001-06-20 2009-12-17 Method for processing data
US12/944,068 US9037807B2 (en) 2001-03-05 2010-11-11 Processor arrangement on a chip including data processing, memory, and interface elements
US13/043,102 US20110173389A1 (en) 2001-03-05 2011-03-08 Methods and devices for treating and/or processing data
US13/653,639 US9075605B2 (en) 2001-03-05 2012-10-17 Methods and devices for treating and processing data
US14/219,945 US9552047B2 (en) 2001-03-05 2014-03-19 Multiprocessor having runtime adjustable clock and clock dependent power supply
US14/223,793 US10031733B2 (en) 2001-06-20 2014-03-24 Method for processing data
US14/231,358 US9436631B2 (en) 2001-03-05 2014-03-31 Chip including memory element storing higher level memory data on a page by page basis
US14/318,211 US9250908B2 (en) 2001-03-05 2014-06-27 Multi-processor bus and cache interconnection system
US14/500,618 US9141390B2 (en) 2001-03-05 2014-09-29 Method of processing data with an array of data processors according to application ID
US15/225,638 US10152320B2 (en) 2001-03-05 2016-08-01 Method of transferring data between external devices and an array processor
US15/408,358 US10331194B2 (en) 2001-03-05 2017-01-17 Methods and devices for treating and processing data
US16/190,931 US20190102173A1 (en) 2001-03-05 2018-11-14 Methods and systems for transferring data between a processing device and external devices

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
EPPCT/EP00/10516 2000-10-09
EP01102674 2001-02-07

Publications (1)

Publication Number Publication Date
DE10129237A1 true DE10129237A1 (de) 2002-04-18

Family

ID=45727532

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10129237A Withdrawn DE10129237A1 (de) 2000-07-24 2002-06-20 Verfahren zur Bearbeitung von Daten

Country Status (1)

Country Link
DE (1) DE10129237A1 (de)

Cited By (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006082091A2 (en) 2005-02-07 2006-08-10 Pact Xpp Technologies Ag Low latency massive parallel data processing device
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
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 (48)

* 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)
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
USRE45223E1 (en) 1997-02-08 2014-10-28 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
US8230411B1 (en) 1999-06-10 2012-07-24 Martin Vorbach Method for interleaving a program over a plurality of cells
US8726250B2 (en) 1999-06-10 2014-05-13 Pact Xpp Technologies Ag Configurable logic integrated circuit having a multidimensional structure of configurable elements
US8301872B2 (en) 2000-06-13 2012-10-30 Martin Vorbach Pipeline configuration protocol and configuration unit communication
US9047440B2 (en) 2000-10-06 2015-06-02 Pact Xpp Technologies Ag Logical cell array and bus system
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US8471593B2 (en) 2000-10-06 2013-06-25 Martin Vorbach Logic cell array and bus system
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
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
US9075605B2 (en) 2001-03-05 2015-07-07 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US8312301B2 (en) 2001-03-05 2012-11-13 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
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
US8407525B2 (en) 2001-09-03 2013-03-26 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US8429385B2 (en) 2001-09-03 2013-04-23 Martin Vorbach Device including a field having function cells and information providing cells controlled by the function cells
US7840842B2 (en) 2001-09-03 2010-11-23 Martin Vorbach Method for debugging 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
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
US8156284B2 (en) 2002-08-07 2012-04-10 Martin Vorbach Data processing method and device
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US8281265B2 (en) 2002-08-07 2012-10-02 Martin Vorbach Method and device for processing data
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
US7928763B2 (en) 2002-09-06 2011-04-19 Martin Vorbach Multi-core processing system
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
WO2006082091A2 (en) 2005-02-07 2006-08-10 Pact Xpp Technologies Ag Low latency massive parallel data processing device
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
DE10129237A1 (de) Verfahren zur Bearbeitung von Daten
EP1402382B1 (de) Verfahren zur bearbeitung von daten
DE69525706T2 (de) Vorrichtung und Verfahren zum Generieren des Zielsprachcodes durch Verwendung eines objektorientierten Codegenerators
DE69622305T2 (de) Verfahren und Gerät für einen optimierenden Kompiler
DE68923888T3 (de) Speicherprogrammierbare Steuerung mit gespeichertem markierten Quellencode.
DE69604347T2 (de) Bestimmung der dynamischen Eigenschaften von Programmen
DE2521289C2 (de) Datenverarbeitungsanordnung mit Datenfeld-Hilfsprozessor
DE69021659T2 (de) Verfahren und Vorrichtung zur reihenweisen Parallelprogrammfehlersuche.
DE3610433C2 (de) Verfahren zum Steuern einer Maschine mit einer speicherprogrammierbaren Steuerung mit Funktionsplaninterpreter
DE19815865B4 (de) Kompiliersystem und Verfahren zum rekonfigurierbaren Rechnen
DE60010420T2 (de) Automatisches Regressionstesten von Arbeitsplatz-Software
DE19926538A1 (de) Hardware und Betriebsverfahren
EP2214104A1 (de) Umkonfigurierungs-Verfahren für programmierbare Bausteine während der Laufzeit
EP3568757B1 (de) Verfahren zur erzeugung von quellcode
EP2799983B1 (de) Flexible Aufteilung der I/O Kanäle einer Hardware Komponente
DE10039538A1 (de) Vorrichtung und Methode zum Analysieren der Leistung eines Computerprogramms
EP0825540A1 (de) Prozessor mit Pipelining-Aufbau
DE19947892C2 (de) Verfahren zur Umsetzung von Schnittstellendefinitionen und Zwischenformattabelle dafür
EP0657044B1 (de) Verfahren zum betrieb eines rechnersystems mit mindestens einem mikroprozessor und mindestens einem coprozessor
DE102020124080A1 (de) Verfahren zur inkrementellen Codegenerierung
EP2363809B1 (de) Verfahren zur Optimierung eines Steuerprogramms für Aktuatoren
EP1046991B1 (de) Verfahren zum Testen der Unabhängigkeit und Verträglichkeit eines Software-Moduls
DE10393511T5 (de) Programmentwicklungsunterstützungsvorrichtung, Programmausführungsvorrichtung, Kompilierverfahren und Diagnoseverfahren
EP1010070A1 (de) Verfahren zum umsetzen eines objektcodes in einen programmcode
DE69322800T2 (de) Verfahren zur Leistungsverbesserung in einem automatischen Testsystem

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8143 Withdrawn due to claiming internal priority