Movatterモバイル変換


[0]ホーム

URL:


EP2217999A2 - On data processing - Google Patents

On data processing

Info

Publication number
EP2217999A2
EP2217999A2EP08855171AEP08855171AEP2217999A2EP 2217999 A2EP2217999 A2EP 2217999A2EP 08855171 AEP08855171 AEP 08855171AEP 08855171 AEP08855171 AEP 08855171AEP 2217999 A2EP2217999 A2EP 2217999A2
Authority
EP
European Patent Office
Prior art keywords
pct
code
specific
architecture
target
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
EP08855171A
Other languages
German (de)
French (fr)
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 XPP Technologies AG
Original Assignee
KRASS MAREN
KRASS MAREN
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KRASS MAREN, KRASS MARENfiledCriticalKRASS MAREN
Publication of EP2217999A2publicationCriticalpatent/EP2217999A2/en
Withdrawnlegal-statusCriticalCurrent

Links

Classifications

Definitions

Landscapes

Abstract

The invention relates to a method for compiling high-level language code for various architectures and/or components. The invention proposes that an architecture-specific precompilation be generated and subsequently the architecture-specific precompilation be compiled taking into account component-specific information.

Description

Titel : Über DatenverarbeitungTitle: About data processing
Beschreibungdescription
Die vorliegende Erfindung betrifft das Oberbegrifflieh Beanspruchte. Sie bezieht sich somit u. a. darauf, wie zu einem gegebenen Hochsprachen- Programm ein ausführbarer Maschinencode erzeugt werden kann, wenn berücksichtigt werden muss, dass möglicherweise durch Prozessorwechsel, etwa die Verwendung neuerer Prozessorgenerationen, eine Änderung der Maschinencodes erforderlich wird.The present invention relates to the preamble claimed. It thus relates u. a. on how an executable machine code can be generated for a given high-level language program, taking into account that a change in machine code may be required by processor changes, such as the use of new generations of processors.
Bei der Ausführung von Programmen auf Datenverarbeitungsanlagen wie Laptops, Servern und dergleichen wird typisch beim System, das heißt beispielsweise auf der Festplatte eines Laptops oder im Festplattenarray eines Servers, eine Vielzahl von Dateien vorrätig gehalten, die ausführbar sind. Damit ein Benutzer ein einzelnes Programm starten kann, sind typisch eine Vielzahl von modulartig miteinander zusammenwirkenden, ausführbaren Teilen erforderlich. In herkömmlichen Betriebssystemen wie MICROSOFT WINDOWS werden diese Programmteile Endungen wie „.exe" und ,,.dllλλ aufweisen.In the execution of programs on data processing systems such as laptops, servers and the like, a large number of files which are executable are typically kept in stock in the system, that is for example on the hard disk of a laptop or in the hard disk array of a server. For a user to start a single program, a variety of modularly co-operating, executable parts are typically required. In conventional operating systems such as MICROSOFT WINDOWS, these program partswill have endings such as ".exe" and ".dllλλ" .
Bei der Abarbeitung eines Programms werden häufig eine Vielzahl unterschiedlicher Module, die ausführbar sind, aufgerufen. Diese ausführbaren Module bilden gemeinsam eine Bibliothek (library) .When executing a program, a large number of different modules that are executable are often called. These executable modules together form a library.
Die einzelnen Elemente einer Library sind dabei für die Ausführung an die jeweilige Datenverarbeitungsarchitektur ange- passt. Diese Anpassung erfolgt typisch durch Compilierung ei- nes in einer Programmier-Hochsprache geschriebenen Programmteiles beziehungsweise Programms. Bei der Compilierung werden eine Vielzahl von Umformungen des Hochsprache-Programms oder -Programmteils vorgenommen, um zu einem auf der Zielarchitektur ausführbaren Codeteil zu gelangen. Die Compilierung ist ein in der Technik bestens bekanntes Verfahren. Verwiesen sei insbesondere auf Standardlehrbücher wie WIRTH, Compilerbau, AHO, SETHI und ULLMAMN „Red Dragon" .The individual elements of a library are adapted for execution to the respective data processing architecture. This adaptation is typically done by compiling a nes in a programming language written program part or program. During compilation, a plurality of conversions of the high-level language program or program part are made to arrive at a code portion executable on the target architecture. Compilation is a technique well known in the art. Reference is made in particular to standard textbooks such as WIRTH, Compiler Construction, AHO, SETHI and ULLMAMN "Red Dragon".
Bei herkömmlichen Compilern wird zunächst der Hochsprachen- quelltext in für die Compilierung geeignete Teilstücke, sogenannte „Symbole" oder Anweisungen zerlegt (geparst) , auf Syntaxfehler untersucht usw. Dies geschieht im sogenannten Frontend des Compilers. Der vom Frontend erhaltene, aufbereitete Code wird dann abstrahiert, um einen sogenannten RTL- Code (Register Transfer Level -Code) zu erhalten. In dieser Stufe liegen typisch bereits die Datenfluss- und Kontroll- flussgraphen vor, die beispielsweise auch Erwähnung finden in den Veröffentlichungen des Anmelders (PCT/DE 02/03278, PCT/EP 02/10065, PCT/EP 2004/009640, PCT/EP 03/00624) einschließlich aller Familienmitglieder. Die genannten Schriften sind zu Offenbarungszwecken vollumfänglich eingegliedert.In conventional compilers, the high-level source text is first decomposed (parsed) into sections suitable for compilation, parsed for syntax errors, etc. This is done in the so-called front end of the compiler, and the edited code obtained from the frontend is then abstracted In order to obtain a so-called RTL code (Register Transfer Level Code), the data flow and control flow graphs are typically already present in this stage, which are also mentioned, for example, in the publications of the applicant (PCT / DE 02/03278, PCT / EP 02/10065, PCT / EP 2004/009640, PCT / EP 03/00624), including all members of the family, all of which are incorporated by reference for purposes of disclosure.
Zielarchitekturen des Compilers sind insbesondere rekonfigu- rierbare Architekturen.The target architectures of the compiler are in particular reconfigurable architectures.
Unter einer rekonfigurierbaren Architektur werden u. a. Bausteine (VPU) verstanden, die eine Vielzahl in Funktion und/oder Vernetzung im Betrieb veränderliche Elemente (PAE) aufweisen, die vorzugsweise in einer zwei- oder noch höher dimensionalen Matrix angeordnet sind. Zu den Elementen können arithmetische Logikeinheiten, FPGA-Bereiche, Ein-Ausgabe- zellen, Speicherzellen, analoge Baugruppen usw. gehören. Diese sind in der Regel grobgranular, also z. B. wenigstens 4, bevorzugt 8 Bit breit und in ihrer Funktion und Vernetzung konfigurierbar. Dazwischen können aber zum Teil auch feingra- nulare Bereiche angeordnet sein. Bausteine dieser Art sind beispielsweise unter der Bezeichnung VPU bekannt . Diese um- fasst typisch als PAEs bezeichnete ein- oder mehrdimensional angeordnete arithmetische und/oder logische und/oder analoge und/oder speichernde und/oder vernetzende Baugruppen und/oder kommunikative periphere Baugruppen (10) , die direkt oder durch einen oder mehrere Bussysteme miteinander verbunden sind. Die PAEs sind in beliebiger Ausgestaltung, Mischung und Hierarchie angeordnet, wobei die Anordnung als PAE-Array oder kurz PA bezeichnet wird. Es kann dem PAE-Array eine konfigurierende Einheit zugeordnet sein. Prinzipiell sind neben VPU-Baustei- nen auch systolische Arrays, neuronale Netze, Mehrprozessor- systeme, Prozessoren mit mehreren Rechenwerken und/oder logischen Zellen, Vernetzungs- und Netzwerkbausteine wie Cross- bar-Schaltung usw. bekannt, genauso wie FPGAs, DPGAs, Trans- puter usw.A reconfigurable architecture is understood, inter alia, to include building blocks (VPU) which have a plurality of operationally variable elements (PAEs) in operation and / or networking, which are preferably arranged in a two-dimensional or even higher-dimensional matrix. The elements may include arithmetic logic units, FPGA areas, input / output cells, memory cells, analog modules, etc. These are usually coarsely granular, ie z. B. at least 4, preferably 8 bits wide and configurable in their function and networking. In between, however, fine-grained areas can also be arranged in part. Building blocks of this type are known, for example, under the name VPU. This typically includes arithmetic and / or logical and / or analog and / or storage and / or networking assemblies referred to as PAEs and / or communicative peripheral assemblies (10) directly or through one or more bus systems are connected. The PAEs are arranged in any desired configuration, mixture and hierarchy, the arrangement being referred to as a PAE array or PA for short. It can be assigned to the PAE array a configuring unit. In principle, in addition to VPU components, systolic arrays, neural networks, multiprocessor systems, processors with multiple arithmetic units and / or logic cells, networking and network components such as crossbar circuitry, etc., are known, as well as FPGAs, DPGAs, Trans - computer etc.
Insbesondere gehören FPGAs zu den Zielarchitekturen, wobei die FPGAs bevorzugt zumindest einige der vorstehend aufgeführten (in der Regel grobgranularen, konfigurierbaren) Elemente (PAEs) aufweisen. Besonders bevorzugt ist zumindest eine Reihe oder Spalte innerhalb der FPGA Architektur, die Elemente aufweist mit zumindest einem Addierer und einem Multiplizierer, oder eine Arithmetisch-Logische-Einheit (ALU) . Im übrigen sei bezüglich der Zielarchitekturen, und vorteilhafter Datenverarbeitungsverfahren auf diesen Zielarchitekturen hingewiesen auf die folgenden Dokumente der Anmelderin: 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/DΞ 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, PCT/DE 97/02949, PCT/DE 97/02998, PCT/DE 97/02999, PCT/DE 98/00334, PCT/DE 99/00504, PCT/DE 99/00505, DE 101 39 170.6, DE 101 42 903.7, DE 101 44 732.9, DE 101 45 792.8, DE 101 54 260.7, DE 102 07 225.6, PCT/DE 00/01869, DE 101 42 904.5, DE 101 44 733.7, DE 101 54 259.3, DE 102 07 226.4, DE 101 10 530.4, DE 101 11 014.6, DE 101 46 132.1, DE 102 02 044.2, DE 102 02 175.9, DE 101 35 210.7, PCT/EP 02/02402, EP 01 129 923.7, PCT/EP 03/00624, PCT/EP 02/10084, PCT/DE 03/00942, PCT/EP 03/08080, PCT/EP 02/10464, PCT/EP 02/10536, PCT/EP 02/10572, PCT/EP 02/10479, PCT/EP 03/08081, PCT/EP 03/09956, PCT/EP 03/09957, DE 102 36 269.6, DE 102 43 322, EP 02 022 692.4, DE 103 00 380.0-53, DE 103 10 195.0-53, EP 03 009 906.3, PCT/EP 2004/006547, EP 03 015 015.5, PCT/EP 2004/009640, DE 103 41 051.1, PCT/EP 2004/003603, EP 03 025 911.3, DE 103 57 284.8-55, PCT/EP 2005/001211, DE 10 2004 004 955.6, DE 04 002 719.5, DE 04 075 382.4, EP 04 003 258.3, EP 04 004 885.2, EP 04 075 654.6, EP 04 005 403.3, EP 04 075 707.2, EP 04 013 557.6, EP 04 018 267.7, EP 04 077 206.3, PCT/EP 2006/001014, EP 05 003 174.9, EP 05 017 798.9, EP 05 017 844.1, EP 05 027 332.5, EP 05 027 333.3, PCT/EP 2007/000380, DE 10 2007 054 903.4, DE 10 2007 055 131.4, jeweils inklusive aller Familienmitglieder.In particular, FPGAs are among the target architectures, with the FPGAs preferably having at least some of the above-listed (typically coarse-grained, configurable) elements (PAEs). Particularly preferred is at least one row or column within the FPGA architecture having elements with at least one adder and a multiplier, or an arithmetic logic unit (ALU). Furthermore, with regard to the target architectures and advantageous data processing methods on these target architectures, reference should be made to the following documents of the Applicant: 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, PCT / DE 97/02949, PCT / DE 97/02998, PCT / DE 97/02999, PCT / DE 98/00334, PCT / DE 99 / 00504, PCT / DE 99/00505, DE 101 39 170.6, DE 101 42 903.7, DE 101 44 732.9, DE 101 45 792.8, DE 101 54 260.7, DE 102 07 225.6, PCT / DE 00/01869, DE 101 42 904.5 DE 101 44 733.7, DE 101 54 259.3, DE 102 07 226.4, DE 101 10 530.4, DE 101 11 014.6, DE 101 46 132.1, DE 102 02 044.2, DE 102 02 175.9, DE 101 35 210.7, PCT / EP 02 / 02402, EP 01 129 923.7, PCT / EP 03/00624, PCT / EP 02/10084, PCT / DE 03/00942, PCT / EP 03/08080, PCT / EP 02/10464, PCT / EP 02/10536, PCT EP 02/10572, PCT / EP 02/10479, PCT / EP 03/08081, PCT / EP 03/09956, PCT / EP 03/09957, DE 102 36 269.6, DE 102 43 322, EP 02 022 692.4, DE 103 00 380.0-53, DE 103 10 195.0-53, EP 03 009 906.3, PCT / EP 2004/006547, EP 03 015 015.5, PCT / EP 2004/009640, DE 103 41 051.1, PCT / EP 2004/003603, EP DE 03/025911.3, DE 103 57 284.8-55, PCT / EP 2005/001211, DE 10 2004 004 955.6, DE 04 002 719.5, DE 04 075 382.4, EP 04 003 258.3, EP 04 004 885.2, EP 04 075 654.6, EP 04 005 403.3, EP 04 075 707.2, EP 04 013 557.6, EP 04 018 267.7, EP 04 077 206.3, PCT / EP 2006/001014, EP 05 003 174.9, EP 05 017 798.9, EP 05 017 844.1, EP 05 027 332.5 , EP 05 027 333.3, PCT / EP 2007/000380, DE 10 2007 054 903.4, DE 10 2007 055 131.4, in each case including all family members.
Auch diese sind zu Offenbarungszwecken, ohne sich hier auf in den Schriften gezeigte oder erwähnte Sonderfälle zu beschränken, vollumfänglich eingegliedert.These too are for the purpose of disclosure without being limited to special cases shown or mentioned in the documents, incorporated in their entirety.
Es sei darauf hingewiesen, dass als Zielarchitekturen der vorliegenden Erfindung neben den bekannten XPP-Bausteinen des Anmelders auch andere, parallel datenverarbeitende Architekturen in Frage kommen, wie die bereits genannten FPGAs. Nur beispielsweise seien etwa VIRTEX-Bausteine der Firma XILINX (SPARTAN, VIRTEX-2, VIRTEX-II Pro, VIRTEX-4, VIRTEX-5) etc. oder Bausteine von Altera insbesondere STRATIX usw. erwähnt. Die Bausteine weisen PAE Elemente in Form von DSP Zellen auf. Zum besseren Verständnis sei auf die Datenblätter der jeweiligen Bausteine verwiesen, die öffentlich zugänglich beispielsweise über die Internet Seiten der Hersteller XILINX und ALTERA zu erhalten sind und zu Offenbarungszwecken vollumfänglich eingegliedert sind.It should be pointed out that as target architectures of the present invention, besides the known XPP building blocks of the applicant, other parallel data processing architectures are also possible, such as the already mentioned FPGAs. For example only VIRTEX building blocks from XILINX (SPARTAN, VIRTEX-2, VIRTEX-II Pro, VIRTEX-4, VIRTEX-5) etc. or building blocks from Altera, in particular STRATIX, etc., may be mentioned. The blocks have PAE elements in the form of DSP cells. For a better understanding, reference is made to the data sheets of the respective building blocks, which can be obtained in public, for example, via the Internet pages of the manufacturers XILINX and ALTERA, and are incorporated in their entirety for disclosure purposes.
Ebenfalls gehören Multithread Systeme und Prozessoren, wie z. B. INTEL Pentium und XEON oder AMD Athlon, zu den Zielarchitekturen.Also include multithreaded systems and processors, such. INTEL Pentium and XEON or AMD Athlon, to the target architectures.
Zum besseren Verständnis sei auch hier auf die Datenblätter der jeweiligen Bausteine verwiesen, die öffentlich zugänglich beispielsweise über die Internetseiten der Hersteller INTEL und AMD zu erhalten sind und zu Offenbarungszwecken vollumfänglich eingegliedert sind. Im herkömmlichen Compilerbau wird der RTL-Code, der bereits optimiert ist, dann in einem sogenannten Backend weiterübersetzt auf den von der jeweiligen „Maschine", das heißt der tatsächlichen Zielstruktur, zu verstehenden Code. Bei rekon- figurierbaren Architekturen umfasst die Funktion des Backende typisch die Erzeugung tatsächlich ausführbarer Konfigurationen aus den hierfür vorhergehend optimierten Datenfluss- und Kontrollflussgraphen, was beispielsweise ein Plazieren und Routen erfordert . Auf den hier einschlägigen Stand der Technik, z. B. die von der Anmelderin stammende PCT/DE 02/03278, wurde bereits verwiesen. Andere Verfahren sind gleichfalls mit der Erfindung anwendbar.For a better understanding, reference is also made here to the data sheets of the respective building blocks, which can be obtained in public, for example, via the Internet pages of the manufacturers INTEL and AMD, and which are incorporated in their entirety for disclosure purposes. In conventional compiler construction, the RTL code, which has already been optimized, is then further translated in a so-called backend to the code to be understood by the respective "machine", ie the actual target structure.For reconfigurable architectures, the function of the backend is typical the generation of actually executable configurations from the previously optimized data flow and control flow graphs, which requires, for example, placement and routing, as has already been referred to the relevant prior art, eg, the applicant's PCT / DE 02/03278 Other methods are also applicable to the invention.
Problematisch ist nun, dass das Backend, welches die maschi- nenangepassten Programm- beziehungsweise Bibliotheksteile ausgibt, typisch sehr eng an die jeweilige Rechnerarchitektur bzw. Maschine angepasst sein muss. Dies verhindert typisch, dass die Bibliotheksteile, die für eine bestimmte Zielarchitektur erstellt wurden, auf einer anderen Zielarchitektur ausgeführt werden können, beziehungsweise, sofern dies überhaupt der Fall sein könnte, performant ausgeführt werden können.The problem now is that the backend, which outputs the machine-adapted program or library parts, must typically be very closely adapted to the respective computer architecture or machine. This typically prevents the library parts created for a particular target architecture from executing on a different target architecture, or, if so, from performing at a high performance level.
Es ist im Hinblick auf die sich regelmäßig ergebenden großen Fortschritte im Hardwarebereich jedoch erforderlich, dem Endbenutzer die Möglichkeit zu eröffnen, seine zuvor lauffähigen Programme auch auf einer verbesserten Hardware ausführen zu können. Dies soll mit möglichst geringem Aufwand geschehen, was typisch bedeutet, dass eine Kompilierung eines Hochspra- chenguellcodes nicht durchgeführt werden kann, weil eine solche Kompilierung für Durchschnitts- oder DAU-Benutzer allen- falls unter größten Schwierigkeiten, wenn überhaupt, zu bewältigen ist.However, in view of the frequently occurring major advances in hardware, it is necessary to give the end user the ability to run their previously executable programs on improved hardware as well. This should be done with as little effort as possible, which typically means that a compilation of a high-level language code can not be performed because such a compilation for average or DAU users if it is difficult, if not impossible.
Es ist wünschenswert, auf einfache Weise maschinenangepasste Bibliotheken bereitstellen zu können.It is desirable to be able to easily provide machine-adapted libraries.
Die Aufgabe der vorliegenden Erfindung besteht darin, Neues für die gewerbliche Anwendung bereitzustellen.The object of the present invention is to provide new products for commercial use.
Die Lösung dieser Aufgabe wird in unabhängiger Form beansprucht .The solution to this problem is claimed in an independent form.
Mach einem ersten unabhängigen Gedanken der vorliegenden Erfindung wird somit vorgeschlagen, dem Benutzer ein Präcompi- lat zur Verfügung zu stellen, in welchem bereits bestimmte Optimierungen vorgenommen worden sind, um als solches Präcom- pilat ein intermediäres Format zu erzeugen, das vor (erstmaliger) Ausführung problemfrei fertig kompilierbar ist.According to a first independent idea of the present invention, it is thus proposed to provide the user with a precompatible in which certain optimizations have already been made in order to produce, as such a precompilate, an intermediate format that precedes (first) execution Completely ready to compile.
Die Kompilierung kann bestimmte architektur- aber nicht bausteinspezifische Optimierungen eines Hochsprachencodes umfassen, beispielsweise für die Präcompilaterzeugung jene Optimierungen, die erwähnt sind in PCT/EP 02/10065, PCT/EP 2004/003603, PCT/EP 2004/009640, PCT/EP 02/06865. Es werden also beispielsweise Optimierungen vorgenommen, die eine Aufteilung in parallele und vektorielle/sequentielle Programmanteile oder Flussanteile betreffen, ein (Hyper-) Threading betreffen usw. Diese Optimierungen können gegebenenfalls von einem Programmierer manuell unterstützt werden; dies ist allerdings nicht zwingend erforderlich. Es sei erwähnt, dass gegebenenfalls, wenn auch nicht im Optimalfall, als Ausgangscode für ein Präcompilat auch auf sequentiellen bekannten Prozessoren ausführbare Programme, Programmteile und Module, das heißt existierende Binaries herangezogen werden, die einer architekturspezifischen Analyse unterzogen werden können, etwa um Parallelanteile herauszufinden und eine Anpassung auf Parallelarchitekturen auch ohne Kenntnis eines Quellcodes zu ermöglichen, was insbesondere für sogenannten Legacy-Code und dessen Verwendung von Vorteil ist. Dass dies vor allem für auf sequenziellen Architekturen ausführbare Binaries gilt, sei erwähnt. Es sei erwähnt, dass es möglich ist, für die Präcompilaterzeugung bestimmte Optimierungen so vorzunehmen, dass eine Anpassung auch auf allgemein zu erwartende Bausteineigenschaften erfolgt, z. B. durch Anpassung an die Anzahl vermutlich zu erwartender sequenzieller Einheiten wie Funktions- und/oder Graphfalteelemente in einem Array; hier ist der so - typisch iterativ - bestimmte Objektcode zwar schon im Hinblick auf die Zielbausteine optimiert, oftmals bleiben solche Optimierungen aber bei Generationswechsel sinnvoll .The compilation may include certain architectural, but not building block-specific optimizations of a high-level language code, for example for precompilation, those optimizations mentioned in PCT / EP 02/10065, PCT / EP 2004/003603, PCT / EP 2004/009640, PCT / EP 02 / 06,865th Thus, for example, optimizations are made which relate to a division into parallel and vectorial / sequential program portions or flow portions, to a (hyper-) threading, etc. These optimizations may optionally be supported manually by a programmer; However, this is not mandatory. It should be mentioned that if appropriate, even if not in the optimum case, as output code for a precompilate also known on sequential Processors executable programs, program parts and modules, that is, existing binaries are used, which can be subjected to an architecture-specific analysis, such as to find parallel shares and allow adaptation to parallel architectures even without knowledge of a source code, in particular for so-called legacy code and its use is beneficial. That this is especially true for executable on sequential architectures binaries, should be mentioned. It should be mentioned that it is possible to make certain optimizations for the precompilation production in such a way that an adaptation also takes place to generally expected building block properties, e.g. By adapting to the number of expected sequential units such as function and / or graphfold elements in an array; Although the object code, which is typically iterative, is optimized in this case with regard to the target building blocks, such optimizations often make sense in the event of a generational change.
Das Präcompilat kann und wird dann als Objektcode vor Ausführung einer bausteinspezifischen Optimierung unterworfen werden. Diese bausteinspezifische Optimierung kann beispielsweise angepasst sein an die Breite und Menge zur Verfügung stehender Busse, Registertiefen und/oder lokal vorhandene Speicher, den Befehlssatz von Elementen wie ALUs in einem Array beziehungsweise den unterschiedlichen Befehlssätzen unterschiedlicher Elemente in einem Array; es können bei dieser (zweiten) Optimierung temporale Partitionierungen entsprechend PCT/EP 03/00624 durchgeführt werden usw. Die entsprechend weiter optimierten Teile des RTL werden einem Backend zugeführt und daraus ein Binary-Code bestimmt. Dies ist deshalb vorteilhaft, weil bei Umstellungen der tatsächlich aus- führenden Bausteine, beispielsweise bei Wechsel von einer Prozessor-Generation zu einer nächsten Prozessor-Generation leichter Anpassungen durch einfache Nachkompilierung des Prä- compilats vorgenommen. werden können.The precompilate can and will then be subjected to object code before execution of a block-specific optimization. This block-specific optimization can, for example, be adapted to the width and quantity of available buses, register depths and / or locally available memories, the instruction set of elements such as ALUs in an array or the different instruction sets of different elements in an array; temporal partitions according to PCT / EP 03/00624 can be carried out in this (second) optimization, etc. The correspondingly further optimized parts of the RTL are fed to a backend and from this a binary code is determined. This is advantageous because in the case of leading components, for example, when changing from one processor generation to a next generation processor easy adjustments made by simple recompilation of the compile. can be.
Dies ist insbesondere bei solchen Zielarchitekturen von Interesse, deren Hardware Architektur nicht komplett vom ausführbaren Binärcode (Executable) abstrahiert werden kann - oder aus Komplexitäts- und/oder Kostengründen soll. Diese Gruppe umfasst somit vor allem die vorgenannten Field-Programmable- Gate-Arrays (FPGAs) und (re) konfigurierbare Prozessoren, wie z. B. die VPUs der Anmelderin, Bausteine des Herstellers Si- liconHive (Netherlands) , die ADRES Architektur des IMEC (BeI- gium) und IPFlex (Japan) . Die Architektur-Details sind öffentlich zugänglich und es soll auf die Web-Seiten und Patentanmeldungen der jeweiligen Anbieter verweisen werden, die zu Offenbarungszwecken vollumfänglich eingegliedert sind.This is of particular interest for those target architectures whose hardware architecture can not be completely abstracted from executable binary code (executable) - or for complexity and / or cost reasons. Thus, this group mainly includes the aforementioned Field Programmable Gate Arrays (FPGAs) and (re) configurable processors, such as. For example, the Applicant's VPUs, building blocks manufactured by Siliconicon (Netherlands), the ADRES architecture of IMEC (England), and IPFlex (Japan). The details of the architecture are publicly available and it is intended to refer to the web pages and patent applications of the respective providers, which are fully incorporated for revelation purposes.
Es ist auch möglich, die typisch in eine Bibliothek eingefügten Binaries für unterschiedliche Prozessoren oder Prozessorkombinationen vorrätig zu halten, was es ermöglicht, bei Ausfall eines Teils von Prozessoren dennoch weiterarbeiten zu können, ohne dass der Gesamtbetrieb gestört wird. Dies trägt zu einem hoch versagenssicheren System bei. Die bausteinspezifischen Daten wie Busbreiten, Feldgrößen, Befehlssätze usw. können dem Nachcompilierer der vorliegenden Erfindung auf unterschiedliche Weise bekannt gegeben werden. In der besonders bevorzugten Variante können sie aus jedem im System verfügbaren, einschlägigen Chip ausgelesen werden. So können entsprechende Daten in einem ROM- oder einem Flash-Speicher beim oder auf dem Prozessor-Chip beziehungsweise -Modul gespei - chert werden. Analog ist eine Ablage in einem BIOS oder dergleichen möglich, wenn auch nicht bevorzugt.It is also possible to stock the binaries typically inserted in a library for different processors or processor combinations, which makes it possible to continue working in the event of failure of a part of processors without disturbing the overall operation. This contributes to a highly fail-safe system. The building block specific data such as bus widths, field sizes, instruction sets, etc. can be reported to the post-compiler of the present invention in a variety of ways. In the most preferred variant, they can be read from any relevant chip available in the system. Thus, corresponding data can be stored in a ROM or flash memory at or on the processor chip or module. be chert. Similarly, storage in a BIOS or the like is possible, though not preferred.
Es ist auch möglich, vor allem dann, wenn ein System Anbindung an das Internet oder andere Datenquellen hat, die einschlägigen Chip- beziehungsweise Moduldaten, die für die Kompilierung benötigt werden, von extern zu erhalten.It is also possible, especially when a system has access to the Internet or other data sources, to obtain the relevant chip or module data needed for the compilation from an external source.
Zusammenfassend umfasst die Erfindung somit ein System und/oder Verfahren zur Zurverfügungstellung von flexiblerem und prozessorunabhängigerem Code für den Endbenutzer, wie folgt:In summary, the invention thus includes a system and / or method for providing more flexible and processor-independent code to the end user, as follows:
1. Ein Präcompilat wird beim Software-Hersteller durch einen Compiler erzeugt. Das Präcompilat ist kein prozessorspezifischer Binärcode im herkömmlichen Sinn, sondern ein Zwischen-Format (intermediate format) des Codes, zum Beispiel in Form von Graphen oder einer Register Transfer Language (RTL) . Der Code weist bevorzugt keine maschinenspezifischen Teile auf, sondern ist ein reines prozessorunabhängiges Zwischen-Format (intermediate format) .1. A pre-compilation is generated by the software manufacturer by a compiler. The precompilate is not a processor-specific binary code in the conventional sense but an intermediate format of the code, for example in the form of graphs or a Register Transfer Language (RTL). The code preferably has no machine-specific parts, but is a pure processor-independent intermediate format (intermediate format).
2. Dieses Präcompilat wird an Stelle des nach dem Stand der2. This precompilate will replace the state of the art
Technik üblichen Executables im Binärformat dem Anwender zur Verfügung gestellt .Technology usual executables in binary format provided to the user.
3. Das Präcompilat wird auf dem Prozessorsystem oder Computer des Anwenders mittels eines Nachcompilers in das ausführbare Executable im Binärformat übersetzt. Verschiedene Zeitpunkte bieten sich zur Code-Übersetzung an und sind System-, markt- und anwenderspezifisch zu wäh- len. Beispielsweise kann, das Präcompilat zu folgenden Zeitpunkten übersetzt werden:3. The precompilation is translated on the processor system or the user's computer by means of a post-compiler into the executable executable in binary format. Various times are suitable for code translation and can be selected system-, market- and user-specific. len. For example, the precompilation may be translated at the following times:
a. während der Installation der Software b . beim Aufruf der Software c. beim Booten des Computers d. während der Ausführung, wobei sich hier auch insbesondere die Interpretation des Präcompilates anbietet .a. during the installation of the software b. when calling the software c. when booting the computer d. during the execution, whereby in particular the interpretation of the precompilate offers itself here.
Es soll an dieser Stelle auf die Programmiersprache JAVA verwiesen werden. JAVA wird ebenfalls nicht als ausführbarer Binärcode (Executable) distributiert, sondern in Form einer Zwischenrepräsentation. Dies ist jedoch, als wesentlicher Unterschied zu der vorliegenden Erfindung, bereits prozessorspezifisch auf die JAVA Virtual Machine übersetzt und somit nicht mehr vollständig zielsystemunabhängig. Zwar kann der Code auf unterschiedlichen Zielprozessoren ausgeführt werden, diese implementieren bzw. emulieren jedoch entweder innerhalb eines Interpreters zur Laufzeit, oder eines Compilers die JAVA Virtual Machine. Sämtliche spezifischen Limitierungen der JAVA Virtual Machine sind daher bereits implizit im Präcompilat enthalten und lassen sich kaum oder nicht mehr auf dem Zielsystem optimieren. Dies ist im Übrigen einer der wesentlichen Nachteile von JAVA, da hierdurch die mögliche Performance erheblich eingeschränkt wird.It should be referred to the programming language JAVA at this point. JAVA is also not distributed as an executable binary code (executable), but in the form of an intermediate representation. However, as an essential difference to the present invention, this is already processor-specifically translated to the JAVA Virtual Machine and thus no longer completely independent of the target system. Although the code can be executed on different target processors, these implement or emulate the JAVA Virtual Machine either within an interpreter at runtime, or a compiler. All specific limitations of the JAVA Virtual Machine are therefore already implicitly included in the pre-compilation and can hardly or no longer be optimized on the target system. Incidentally, this is one of the major disadvantages of JAVA, as it significantly limits the possible performance.
Es soll nochmals herausgestellt werden, dass im Unterschied zu JAVA das erfindungsgemäße Präcompilat ein reines Zwischenformat ist, das keine prozessor- oder architekturspezifischen Merkmale aufweist und damit effizient auf jedes mögliche Zielsystem compiliert werden kann.It should again be emphasized that, in contrast to JAVA, the precompilate according to the invention is a pure intermediate format which has no processor or architecture-specific features and can therefore be efficiently compiled on any possible target system.
- Ii - Das Präcompilat ist dabei jedoch bevorzugt bereits auf bestimmte Prozessortypen und Basisarchitekturen hin optimiert und ausgestaltet.. Beispielsweise wird ein Präcompilat für FPGAs bereits andere Optimierungsschritte und Transformationen im Präcompiler durchlaufen haben als das Präcompilat für gewöhnliche sequentielle Prozessoren. Auch mag das Präcompilat bereits herstellerspezifische Optimierungen aufweisen, und sich somit das Präcompilat in Architekturdetails zwischen beispielsweise Altera und XILINX FPGAs unterscheiden. Das Compiler ist jedoch vollständig unabhängig von bestimmten Bausteinen innerhalb einer bestimmten Baustein- oder Architektur-Familie (z. B. Virtex-4) und bevorzugt weitestgehend unabhängig zwischen ähnlichen Baustein- oder Architektur- Familien (wie z. B. Virtex-4 und Virtex-5) und ermöglicht somit eine flexible und effiziente Endcompilierung auf die entsprechenden Zielbausteine oder Zielprozessoren.- II - However, the precompilate is preferably already optimized and designed for specific processor types and basic architectures., For example, a precompilation for FPGAs will have undergone other optimization steps and transforms in the precompiler than the precompilate for ordinary sequential processors. Also, the precompilate may already have manufacturer specific optimizations, and thus the precompilate may differ in architectural details between, for example, Altera and XILINX FPGAs. However, the compiler is completely independent of particular building blocks within a particular building block or architecture family (eg, Virtex-4) and preferably is largely independent between similar building block or architectural families (such as Virtex-4 and Virtex -5) and thus enables flexible and efficient final compilation to the corresponding target modules or target processors.
Der klassische Compileraufbau ist im Übrigen in Fig. 2a dargestellt. In dieser bedeutet 0201 den Hochsprachenquellcode, beispielsweise C-Code. 0202 stellt das Frontend dar, 0204 das intermediäre Format, 0205 das Backend und 0206 die aus dem Backend ausgegebenen Binärdaten. 0203a bis 0203n sind die für die Optimierung des intermediären Formates erforderlichen Optimierer beziehungsweise Transformierer, die in Hard- und/ oder typisch Software erstellt sein können und insoweit bestimmte Verfahrensschritte darstellen.Incidentally, the classical compiler construction is shown in FIG. 2a. In this case, 0201 means the high-level language source code, for example C code. 0202 represents the frontend, 0204 the intermediate format, 0205 the backend, and 0206 the binary data output from the backend. 0203a to 0203n are the optimizers or transformers required for the optimization of the intermediate format, which can be created in hardware and / or typical software and represent certain method steps in this respect.
In Fig. 2b sind im wesentlichen dieselben Einheiten beziehungsweise Stufen wie in Fig. 2a beschrieben, nunmehr aber unter Implementierung der vorliegenden Erfindung. Der letztlich ausgegebene Binary-Code, der in einer Bibliothek oder dergleichen eingetragen werden kann, ist in Fig. 2b als 0214 bezeichnet. Das Backend ist als 0213 bezeichnet. Die Präcom- pilaterzeugung findet in 0204 nach Durchlauf eines Hochsprachen-Codes beziehungsweise eines für einen sequentiellen Prozessor oder Co-Prozessor aufbereiteten Binär-Codes 0201 durch ein Frontend 0202 in der Stufe 0204 statt, wobei die verschiedenen Optimierungen 0203a bis 0203i ausgeführt werden, die vorstehend bereits erwähnt wurden. Das erzeugte und ausgeworfene Präcompilat 0210 wird als Objektcode in eine intermediäre Stufe 0211 eingespeist, die wiederum über die spezifischen Daten jener Chips verfügt, auf denen die Programmteile, Module usw. später tatsächlich ausgeführt werden sollen. Es werden chipspezifische Optimierungen 0212a bis 0212g ausgeführt. Dass das Präcompilat verfügbar, handelbar und versendbar gemacht wird, ist somit besonders vorteilhaft .In Fig. 2b substantially the same units or stages are described as in Fig. 2a, but now with implementation of the present invention. The ultimately output binary code that is in a library or can be registered, is referred to as 0214 in Fig. 2b. The backend is called 0213. Precom- mulator generation takes place in 0204 after passing a high-level code or a binary code 0201 prepared for a sequential processor or co-processor through a front-end 0202 in stage 0204, performing the various optimizations 0203a-0203i described above already mentioned. The generated and ejected precompilation 0210 is fed as object code to an intermediate stage 0211, which in turn has the specific data of those chips on which the program parts, modules, etc., are actually to be executed later. Chip specific optimizations 0212a to 0212g are executed. Making the precompil available, tradable and mailable is thus particularly advantageous.
Es sei erwähnt, dass typisch die Ausführung der chipspezifischen beziehungsweise bausteinspezifischen Optimierungen signifikant später und/oder auf einem anderen Rechnersystem als die Präcompilaterzeugung erfolgen kann. Insbesondere kann die Nachcompilierung durch die Zielarchitektur selbst erfolgen. Dies wird für sich jeweils als besonders vorteilhaft angesehen. Es sei allerdings darauf hingewiesen, dass gegebenenfalls auch dasselbe Rechnersystem verwendet werden kann, etwa weil ein bestehendes Hochsprachenprogramm nach Präcompilie- rung für eine Vielzahl unterschiedlicher Rechnerbausteine von einem Softwarehersteller übersetzt werden soll .It should be mentioned that typically the execution of the chip-specific or block-specific optimizations can occur significantly later and / or on a different computer system than the precompilation. In particular, the post-compilation can be done by the target architecture itself. This is considered to be particularly advantageous in each case. It should, however, be noted that the same computer system can possibly be used, for example because an existing high-level language program is to be translated by a software manufacturer after precompiling for a large number of different computer components.
Der Nachcompilierer 0211 speist das Nachcompilat an das Backend 0213, das ein chipspezifisches Binary erzeugt. Es sei darauf hingewiesen, dass gegebenenfalls ein einzelnes Binary eine Vielzahl von Teilbinaries für spezifische Chips umfassen kann, wobei beim Laden eines in einer Bibliothek abgelegten derartigen Binaries das jeweils benötigte Teil-Binary aus dem so zusammengestellten Binary ausgewählt wird. Alternativ ist es möglich, in einer Bibliothek Binaries abzulegen, die zwar prinzipiell dieselben Programmteile oder Funktionen ausführen, gleichwohl aber für unterschiedliche Maschinen beziehungsweise Chips kompiliert sind und jeweils typisch auch nur und ausschließlich auf diesen laufen beziehungsweise zumindest nur auf diesen performant laufen.The post-compiler 0211 feeds the post-compilation to the backend 0213, which generates a chip-specific binary. It should be noted that optionally a single binary may include a plurality of sub-binaries for specific chips can, which is loaded when loading a stored in a library such a binaries each required sub-binary from the so composed binary. Alternatively, it is possible to store binaries in a library, which in principle execute the same program parts or functions, but are nevertheless compiled for different machines or chips and in each case typically only and exclusively run on them or at least run on them only with high performance.
Fig. 1 zeigt dann, wie ein gegebener Objektcode 0105 in dem (lokalen) Übersetzer/Nachcompilierer 0104 unter Berücksichtigung von chipspezifischen Informationen aus einer Datenbank 0106 oder einem Chip, insbesondere der Chip-ID, vergleiche 0102, Extraktion 0103 nachkompiliert wird, um in einem Backend 0107 Binaries zu erzeugen, die dann in einer Bibliothek 0101 abgelegt werden, um nach Verlinkung von einem Programm 0108 instanziiert zu werden.Fig. 1 then shows how a given object code 0105 in the (local) translator / post-compiler 0104 is recompiled, taking into account chip-specific information from a database 0106 or a chip, in particular the chip ID, compare 0102, extraction 0103 Backend 0107 to generate binaries, which are then stored in a library 0101 to be instantiated after linking by a program 0108.
Bei der gewünschten Instanziierung eines Programms oder Programmteiles kann dann geprüft werden, ob ein in der Library vorhandenes Element beziehungsweise Modul eine Chip- Id oder dergleichen aufweist, die jener Chip- Id des Chips, der gerade mit dem Programm beziehungsweise Programmteil geladen werden soll. Ist dies der Fall, kann der Programmteil geladen werden. Ist dies nicht der Fall, wird der Objektcode für die tatsächlich vorhandene Zielarchitektur nachkompiliert. Dies kann, hinreichend hohe Leistungsfähigkeit der Zielarchitektur und/oder anderer, im System vorhandener Datenverarbeitungs- prozessoren vorausgesetzt/ auch in für den Benutzer transparenter Weise geschehen, etwa während eines Ladevorganges in Echtzeit; dann muss nur der Objektcode, das heißt das Präcom- pilat, in Zugriff ermöglichender Weise mit abgelegt werden.In the case of the desired instantiation of a program or program part, it can then be checked whether an element or module present in the library has a chip ID or the like which is the chip ID of the chip which is currently to be loaded with the program or program part. If this is the case, the program part can be loaded. If this is not the case, the object code for the actual target architecture is recompiled. This can, assuming sufficiently high performance of the target architecture and / or other existing in the system data processing processors / in a manner that is transparent to the user, such as during a loading process in Real time; then only the object code, ie the precompilat, must be stored in access-enabling manner.

Claims

Patentansprüche claims
1. Verfahren zum Compilieren von Hochsprachen-Code für variierende Architekturen und/oder Bausteine, dadurch gekennzeichnet, dass aus dem Hochsprachen-Code ein architekturspezifisches Präcompilat erzeugt wird und nachfolgend das architekturspezifische Präcompilat unter Berücksichtigung bausteinspezifischer Informationen compiliert wird.1. A method for compiling high-level code for varying architectures and / or blocks, characterized in that from the high-level code an architecture-specific precompile is generated and subsequently the architecture-specific precompile is compiled taking into account block-specific information.
EP08855171A2007-11-282008-11-28On data processingWithdrawnEP2217999A2 (en)

Applications Claiming Priority (2)

Application NumberPriority DateFiling DateTitle
DE1020070576422007-11-28
PCT/DE2008/001971WO2009068014A2 (en)2007-11-282008-11-28On data processing

Publications (1)

Publication NumberPublication Date
EP2217999A2true EP2217999A2 (en)2010-08-18

Family

ID=40679035

Family Applications (1)

Application NumberTitlePriority DateFiling Date
EP08855171AWithdrawnEP2217999A2 (en)2007-11-282008-11-28On data processing

Country Status (4)

CountryLink
US (1)US20110173596A1 (en)
EP (1)EP2217999A2 (en)
DE (1)DE112008003670A5 (en)
WO (1)WO2009068014A2 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
WO2014151017A1 (en)*2013-03-152014-09-25Arganteal, LlcMethod of taking a computer architecture representation and generating manufaturing method capable of manufacturing computer systems in a specification
US11163546B2 (en)*2017-11-072021-11-02Intel CorporationMethod and apparatus for supporting programmatic control of a compiler for generating high-performance spatial hardware

Family Cites Families (100)

* Cited by examiner, † Cited by third party
Publication numberPriority datePublication dateAssigneeTitle
US3564506A (en)*1968-01-171971-02-16IbmInstruction retry byte counter
US3753008A (en)*1970-06-201973-08-14Honeywell Inf SystemsMemory pre-driver circuit
US5459846A (en)*1988-12-021995-10-17Hyatt; Gilbert P.Computer architecture system having an imporved memory
US3754211A (en)*1971-12-301973-08-21IbmFast error recovery communication controller
US3956589A (en)*1973-11-261976-05-11Paradyne CorporationData telecommunication system
US4594682A (en)*1982-12-221986-06-10Ibm CorporationVector processing
US4646300A (en)*1983-11-141987-02-24Tandem Computers IncorporatedCommunications method
US4760525A (en)*1986-06-101988-07-26The United States Of America As Represented By The Secretary Of The Air ForceComplex arithmetic vector processor for performing control function, scalar operation, and set-up of vector signal processing instruction
US5119290A (en)*1987-10-021992-06-02Sun Microsystems, Inc.Alias address support
CA1286421C (en)*1987-10-141991-07-16Martin Claude LefebvreMessage fifo buffer controller
US5031179A (en)*1987-11-101991-07-09Canon Kabushiki KaishaData communication apparatus
NL8800071A (en)*1988-01-131989-08-01Philips Nv DATA PROCESSOR SYSTEM AND VIDEO PROCESSOR SYSTEM, PROVIDED WITH SUCH A DATA PROCESSOR SYSTEM.
US4939641A (en)*1988-06-301990-07-03Wang Laboratories, Inc.Multi-processor system with cache memories
US5245616A (en)*1989-02-241993-09-14Rosemount Inc.Technique for acknowledging packets
AU7305491A (en)*1990-01-291991-08-21Teraplex, Inc.Architecture for minimal instruction set computing system
DE4129614C2 (en)*1990-09-072002-03-21Hitachi Ltd System and method for data processing
JPH04328657A (en)*1991-04-301992-11-17Toshiba Corp cache memory
US5493663A (en)*1992-04-221996-02-20International Business Machines CorporationMethod and apparatus for predetermining pages for swapping from physical memory in accordance with the number of accesses
JP2572522B2 (en)*1992-05-121997-01-16インターナショナル・ビジネス・マシーンズ・コーポレイション Computing device
DE4322343C2 (en)*1992-07-061996-10-02Mitsubishi Electric Corp Means for detecting a motion vector and method for determining a motion vector
US5339840A (en)*1993-04-261994-08-23Sunbelt Precision Products Inc.Adjustable comb
US5435000A (en)*1993-05-191995-07-18Bull Hn Information Systems Inc.Central processing unit using dual basic processing units and combined result bus
US5829007A (en)*1993-06-241998-10-27Discovision AssociatesTechnique for implementing a swing buffer in a memory array
US5502838A (en)*1994-04-281996-03-26Consilium Overseas LimitedTemperature management for integrated circuits
US6064819A (en)*1993-12-082000-05-16ImecControl flow and memory management optimization
US5574927A (en)*1994-03-251996-11-12International Meta Systems, Inc.RISC architecture computer configured for emulation of the instruction set of a target computer
US5677909A (en)*1994-05-111997-10-14Spectrix CorporationApparatus for exchanging data between a central station and a plurality of wireless remote stations on a time divided commnication channel
US6154826A (en)*1994-11-162000-11-28University Of Virginia Patent FoundationMethod and device for maximizing memory system bandwidth by accessing data in a dynamically determined order
US5584013A (en)*1994-12-091996-12-10International Business Machines CorporationHierarchical cache arrangement wherein the replacement of an LRU entry in a second level cache is prevented when the cache entry is the only inclusive entry in the first level cache
US5603005A (en)*1994-12-271997-02-11Unisys CorporationCache coherency scheme for XBAR storage structure with delayed invalidates until associated write request is executed
JP3598139B2 (en)*1994-12-282004-12-08株式会社日立製作所 Data processing device
US5682491A (en)*1994-12-291997-10-28International Business Machines CorporationSelective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US5778237A (en)*1995-01-101998-07-07Hitachi, Ltd.Data processor and single-chip microcomputer with changing clock frequency and operating voltage
EP0809825A1 (en)*1995-02-141997-12-03Vlsi Technology, Inc.Method and apparatus for reducing power consumption in digital electronic circuits
ZA965340B (en)*1995-06-301997-01-27Interdigital Tech CorpCode division multiple access (cdma) communication system
US5784313A (en)*1995-08-181998-07-21Xilinx, Inc.Programmable logic device including configuration data or user data memory slices
US5943242A (en)*1995-11-171999-08-24Pact GmbhDynamically reconfigurable data processing system
CA2166369C (en)*1995-12-292004-10-19Robert J. BlaineyMethod and system for determining inter-compilation unit alias information
US7266725B2 (en)*2001-09-032007-09-04Pact Xpp Technologies AgMethod for debugging reconfigurable architectures
US5898602A (en)*1996-01-251999-04-27Xilinx, Inc.Carry chain circuit with flexible carry function for implementing arithmetic and logical functions
US5727229A (en)*1996-02-051998-03-10Motorola, Inc.Method and apparatus for moving data in a parallel processor
US5859993A (en)*1996-08-301999-01-12Cypress Semiconductor CorporationDual ROM microprogrammable microprocessor and universal serial bus microcontroller development system
JP3934710B2 (en)*1996-09-132007-06-20株式会社ルネサステクノロジ Microprocessor
US5832288A (en)*1996-10-181998-11-03Samsung Electronics Co., Ltd.Element-select mechanism for a vector processor
US5895487A (en)*1996-11-131999-04-20International Business Machines CorporationIntegrated processing and L2 DRAM cache
US5913925A (en)*1996-12-161999-06-22International Business Machines CorporationMethod and system for constructing a program including out-of-order threads and processor and method for executing threads out-of-order
GB2323188B (en)*1997-03-142002-02-06Nokia Mobile Phones LtdEnabling and disabling clocking signals to elements
US6058266A (en)*1997-06-242000-05-02International Business Machines CorporationMethod of, system for, and computer program product for performing weighted loop fusion by an optimizing compiler
US5838988A (en)*1997-06-251998-11-17Sun Microsystems, Inc.Computer product for precise architectural update in an out-of-order processor
US6072348A (en)*1997-07-092000-06-06Xilinx, Inc.Programmable power reduction in a clock-distribution circuit
US6026478A (en)*1997-08-012000-02-15Micron Technology, Inc.Split embedded DRAM processor
JPH11147335A (en)*1997-11-181999-06-02Fuji Xerox Co LtdPlot process apparatus
US6075935A (en)*1997-12-012000-06-13Improv Systems, Inc.Method of generating application specific integrated circuits using a programmable hardware architecture
US6096091A (en)*1998-02-242000-08-01Advanced Micro Devices, Inc.Dynamically reconfigurable logic networks interconnected by fall-through FIFOs for flexible pipeline processing in a system-on-a-chip
US6298043B1 (en)*1998-03-282001-10-02Nortel Networks LimitedCommunication system architecture and a connection verification mechanism therefor
US6456628B1 (en)*1998-04-172002-09-24Intelect Communications, Inc.DSP intercommunication network
US6052524A (en)*1998-05-142000-04-18Software Development Systems, Inc.System and method for simulation of integrated hardware and software components
US6173419B1 (en)*1998-05-142001-01-09Advanced Technology Materials, Inc.Field programmable gate array (FPGA) emulator for debugging software
US6449283B1 (en)*1998-05-152002-09-10Polytechnic UniversityMethods and apparatus for providing a fast ring reservation arbitration
WO2001006371A1 (en)*1998-07-212001-01-25Seagate Technology LlcImproved memory system apparatus and method
US6289369B1 (en)*1998-08-252001-09-11International Business Machines CorporationAffinity, locality, and load balancing in scheduling user program-level threads for execution by a computer system
US20020152060A1 (en)*1998-08-312002-10-17Tseng Ping-ShengInter-chip communication system
US7100026B2 (en)*2001-05-302006-08-29The Massachusetts Institute Of TechnologySystem and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
JP3551353B2 (en)*1998-10-022004-08-04株式会社日立製作所 Data relocation method
US6249756B1 (en)*1998-12-072001-06-19Compaq Computer Corp.Hybrid flow control
US6826763B1 (en)*1998-12-112004-11-30Microsoft CorporationAccelerating a distributed component architecture over a network using a direct marshaling
US6694434B1 (en)*1998-12-232004-02-17Entrust Technologies LimitedMethod and apparatus for controlling program execution and program distribution
US6496902B1 (en)*1998-12-312002-12-17Cray Inc.Vector and scalar data cache for a vector multiprocessor
US6321298B1 (en)*1999-01-252001-11-20International Business Machines CorporationFull cache coherency across multiple raid controllers
US6191614B1 (en)*1999-04-052001-02-20Xilinx, Inc.FPGA configuration circuit including bus-based CRC register
GB9909196D0 (en)*1999-04-211999-06-16Texas Instruments LtdTransfer controller with hub and ports architecture
US6738967B1 (en)*2000-03-142004-05-18Microsoft CorporationCompiling for multiple virtual machines targeting different processor architectures
US6845445B2 (en)*2000-05-122005-01-18Pts CorporationMethods and apparatus for power control in a scalable array of processor elements
US7164422B1 (en)*2000-07-282007-01-16Ab Initio Software CorporationParameterized graphs with conditional components
EP1182559B1 (en)*2000-08-212009-01-21Texas Instruments IncorporatedImproved microprocessor
JP2002123563A (en)*2000-10-132002-04-26Nec CorpCompiling method, composing device, and recording medium
US6836849B2 (en)*2001-04-052004-12-28International Business Machines CorporationMethod and apparatus for controlling power and performance in a multiprocessing system according to customer level operational requirements
TWI230897B (en)*2001-04-202005-04-11IbmMethod for sharing a translation lookaside buffer between CPUs
US6836842B1 (en)*2001-04-242004-12-28Xilinx, Inc.Method of partial reconfiguration of a PLD in which only updated portions of configuration data are selected for reconfiguring the PLD
US6976239B1 (en)*2001-06-122005-12-13Altera CorporationMethods and apparatus for implementing parameterizable processors and peripherals
AU2002347560A1 (en)*2001-06-202003-01-02Pact Xpp Technologies AgData processing method
US7036114B2 (en)*2001-08-172006-04-25Sun Microsystems, Inc.Method and apparatus for cycle-based computation
EP1428107A2 (en)*2001-09-102004-06-16Cybula LimitedComputing devices
US7472230B2 (en)*2001-09-142008-12-30Hewlett-Packard Development Company, L.P.Preemptive write back controller
US6625631B2 (en)*2001-09-282003-09-23Intel CorporationComponent reduction in montgomery multiplier processing element
US7752459B2 (en)*2001-12-062010-07-06Novell, Inc.Pointguard: method and system for protecting programs against pointer corruption attacks
US6668237B1 (en)*2002-01-172003-12-23Xilinx, Inc.Run-time reconfigurable testing of programmable logic devices
DE10243322B4 (en)2002-09-182004-12-02Pact Xpp Technologies Ag Analog reconfigurable data processing device
US20030226056A1 (en)*2002-05-282003-12-04Michael YipMethod and system for a process manager
AU2003286131A1 (en)*2002-08-072004-03-19Pact Xpp Technologies AgMethod and device for processing data
US6908227B2 (en)*2002-08-232005-06-21Intel CorporationApparatus for thermal management of multiple core microprocessors
US6931494B2 (en)*2002-09-092005-08-16Broadcom CorporationSystem and method for directional prefetching
US7155708B2 (en)*2002-10-312006-12-26Src Computers, Inc.Debugging and performance profiling using control-dataflow graph representations with reconfigurable hardware emulation
US7299458B2 (en)*2002-10-312007-11-20Src Computers, Inc.System and method for converting control flow graph representations to control-dataflow graph representations
US7873811B1 (en)*2003-03-102011-01-18The United States Of America As Represented By The United States Department Of EnergyPolymorphous computing fabric
US7412581B2 (en)*2003-10-282008-08-12Renesas Technology America, Inc.Processor for virtual machines and method therefor
US7389490B2 (en)*2004-07-292008-06-17International Business Machines CorporationMethod, system and program product for providing a configuration specification language supporting selective presentation of configuration entities
US7455450B2 (en)*2005-10-072008-11-25Advanced Micro Devices, Inc.Method and apparatus for temperature sensing in integrated circuits
JP2008071130A (en)*2006-09-142008-03-27Ricoh Co Ltd SIMD type microprocessor
US20090193384A1 (en)*2008-01-252009-07-30Mihai SimaShift-enabled reconfigurable device

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PIOTR LESNICKI ET AL: "Split Compilation: an Application to Just-in-Time Vectorization", INTERNATIONAL WORKSHOP ON GCC FOR RESEARCH IN EMBEDDED AND PARALLEL SYSTEMS, GREPS 2007, 16 September 2007 (2007-09-16), pages 1 - 7, XP055171902, Retrieved from the Internet <URL:http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.73.3450&rep=rep1&type=pdf> [retrieved on 20150225]*
See also references ofWO2009068014A2*

Also Published As

Publication numberPublication date
WO2009068014A3 (en)2010-08-05
WO2009068014A2 (en)2009-06-04
US20110173596A1 (en)2011-07-14
DE112008003670A5 (en)2010-10-28

Similar Documents

PublicationPublication DateTitle
DE19815865B4 (en) Compilation system and method for reconfigurable computing
DE69622305T2 (en) Process and device for an optimizing compiler
DE112012002905B4 (en) Technique for compiling and running programs in high-level programming languages on heterogeneous computers
EP1228440B1 (en)Sequence partitioning in cell structures
DE69516891T2 (en) METHOD FOR TRANSLATING SOURCE CODE FROM ONE COMPUTER HIGH LANGUAGE TO ANOTHER
DE69021659T2 (en) Method and device for serial parallel debugging.
EP2765528B1 (en)Unrestricted access to signal values of an FPGA during runtime
DE102005021749A1 (en)Program-controlled information processing method, involves initiating information processing operations in selected resources, and disconnecting connections that are no longer needed between selected resources
DE112013001735T5 (en) Optimizing the linking of instructions
EP2954440B1 (en)Alteration of a signal value for an fpga at runtime
EP2799983B1 (en)Flexible distribution of I/O channels of a hardware component
DE112013001747T5 (en) Optimizing the linking of instructions
WO2007082730A1 (en)Hardware definition method
EP0825540B1 (en)Pipeline processor
DE102019119956A1 (en) ARCHITECTURE AND METHOD FOR THE DATA-PARALLEL SINGLE-PROGRAM-MULTIPLE-DATA (SPMD) -EXECUTION
EP3568757B1 (en)Method for producing source code
DE102016110195A1 (en) Generate code in statically typed programming languages for a dynamically typed array-based language
DE102018208267A1 (en) TECHNOLOGY USING TAX RELIEF GRAPHS FOR CONVERTING CONTROL FLOW PROGRAMS IN DATA FLOW PROGRAMS
DE102019124215A1 (en) Procedure for changing models for the generation of source code
DE102020124080A1 (en) Procedure for incremental code generation
DE102013101300A1 (en)Method for assessing signal value i.e. engine speed, of field programmable gate array at run-time of processing device, involves reading status data from memory as read-back data, and determining signal value by mapping data on value
DE112018002316T5 (en) CODE COVERAGE TRACKING FOR A MICROCONTROLLER PROGRAM
EP2217999A2 (en)On data processing
WO2003060747A2 (en)Reconfigurable processor
EP4148557B1 (en)Method for generating source code

Legal Events

DateCodeTitleDescription
PUAIPublic reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text:ORIGINAL CODE: 0009012

AKDesignated contracting states

Kind code of ref document:A2

Designated state(s):AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

AXRequest for extension of the european patent

Extension state:AL BA MK RS

R17DDeferred search report published (corrected)

Effective date:20100805

17PRequest for examination filed

Effective date:20110204

RBVDesignated contracting states (corrected)

Designated state(s):AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MT NL NO PL PT RO SE SI SK TR

17QFirst examination report despatched

Effective date:20110304

DAXRequest for extension of the european patent (deleted)
RAP1Party data changed (applicant data changed or rights of an application transferred)

Owner name:PACT XPP TECHNOLOGIES AG

111LLicence recorded

Designated state(s):AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LT LU LV MC MT NL NO PL PT RO SE SI SK TR

Name of requester:XILINX, INC., US

Effective date:20141010

STAAInformation on the status of an ep patent application or granted ep patent

Free format text:STATUS: THE APPLICATION IS DEEMED TO BE WITHDRAWN

18DApplication deemed to be withdrawn

Effective date:20150714


[8]ページ先頭

©2009-2025 Movatter.jp