DE10212622A1 - Computer program translation method allows classic language to be converted for system with re-configurable architecture - Google Patents

Computer program translation method allows classic language to be converted for system with re-configurable architecture

Info

Publication number
DE10212622A1
DE10212622A1 DE10212622A DE10212622A DE10212622A1 DE 10212622 A1 DE10212622 A1 DE 10212622A1 DE 10212622 A DE10212622 A DE 10212622A DE 10212622 A DE10212622 A DE 10212622A DE 10212622 A1 DE10212622 A1 DE 10212622A1
Authority
DE
Germany
Prior art keywords
reconfigurable
processor
standard
vpu
data
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.)
Ceased
Application number
DE10212622A
Other languages
German (de)
Inventor
Martin Vorbach
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PACT XPP Technologies AG
Original Assignee
PACT XPP Technologies AG
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by PACT XPP Technologies AG filed Critical PACT XPP Technologies AG
Priority to DE10212622A priority Critical patent/DE10212622A1/en
Priority to AT10005502T priority patent/ATE557344T1/en
Priority to AU2002347560A priority patent/AU2002347560A1/en
Priority to JP2003505782A priority patent/JP2004533691A/en
Priority to US10/480,003 priority patent/US7657877B2/en
Priority to EP02780770A priority patent/EP1402382B1/en
Priority to PCT/EP2002/006865 priority patent/WO2002103532A2/en
Priority to AT02780770T priority patent/ATE478381T1/en
Priority to EP10005502A priority patent/EP2224330B1/en
Priority to US10/490,079 priority patent/US7434191B2/en
Priority to AU2002338729A priority patent/AU2002338729A1/en
Priority to PCT/EP2002/010479 priority patent/WO2003025781A2/en
Priority to EP02777144A priority patent/EP1466264B1/en
Priority to PCT/EP2002/010572 priority patent/WO2003036507A2/en
Priority to AU2002357982A priority patent/AU2002357982A1/en
Priority to US10/490,081 priority patent/US8429385B2/en
Priority to JP2003538928A priority patent/JP4456864B2/en
Priority to AT02791644T priority patent/ATE533111T1/en
Priority to EP02791644A priority patent/EP1472616B8/en
Priority to AU2003223892A priority patent/AU2003223892A1/en
Priority to EP03720231A priority patent/EP1518186A2/en
Priority to US10/508,559 priority patent/US20060075211A1/en
Priority to PCT/DE2003/000942 priority patent/WO2003081454A2/en
Publication of DE10212622A1 publication Critical patent/DE10212622A1/en
Priority to US12/247,076 priority patent/US8209653B2/en
Priority to US12/571,173 priority patent/US8686549B2/en
Priority to JP2009271120A priority patent/JP2010079923A/en
Priority to US12/640,201 priority patent/US20100095094A1/en
Priority to US12/729,090 priority patent/US20100174868A1/en
Priority to US12/729,932 priority patent/US20110161977A1/en
Priority to US13/023,796 priority patent/US8686475B2/en
Priority to US14/162,704 priority patent/US20140143509A1/en
Priority to US14/223,793 priority patent/US10031733B2/en
Priority to US14/263,185 priority patent/US8890215B2/en
Priority to US14/540,782 priority patent/US20150074352A1/en
Priority to US14/543,306 priority patent/US9092595B2/en
Priority to US14/810,905 priority patent/US9240220B2/en
Priority to US14/923,702 priority patent/US10579584B2/en
Priority to US15/000,763 priority patent/US10885996B2/en
Ceased 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/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/177Initialisation or configuration control
    • 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)
  • Software Systems (AREA)
  • Multi Processors (AREA)

Abstract

The program translation method has parts of the program code which are applicable to a re-configurable unit identified and extracted and/or separated, with the remaining program codes processed via a standard processor. An Independent claim for a device for data processing with a standard data processor and a re-configurable unit is also included.

Description

Die vorliegende Erfindung befaßt sich mit der Integration und/oder engen Kopplung von rekonfigurierbaren Prozessoren mit Standardprozessoren, dem Datenaustausch und der Synchronisation der Datenverarbeitung. The present invention is concerned with integration and / or tight coupling of reconfigurable processors with standard processors, data exchange and Synchronization of data processing.

Aufgabe der Erfindung ist es, Neues für die gewerbliche Nutzung bereitzustellen. The object of the invention is to create something new for commercial purposes To provide usage.

Die Lösung der Aufgabe wird unabhängig beansprucht. Bevorzugte Ausführungsformen befinden sich in den Unteransprüchen. The solution to the problem is claimed independently. Preferred embodiments are in the subclaims.

Unter einer rekonfigurierbaren Architektur werden vorliegend 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 und/oder intern/extern vernetzenden Baugruppen, die direkt oder durch ein Bussystem miteinander verbunden sind. Under a reconfigurable architecture are present Modules (VPU) with configurable function and / or Networking understood, especially with integrated modules a plurality of one- or multi-dimensionally arranged arithmetic and / or logical and / or analog and / or storing and / or internally / externally networking modules, which are connected directly or through a bus system are.

Zur Gattung dieser Bausteine zählen insbesondere systolische Arrays, neuronale Netze, Mehrprozessor Systeme, Prozessoren mit mehreren Rechenwerken und/oder logischen Zellen und/oder kommunikativen/peripheren Zellen (IO), Vernetzungs- und Netzwerkbausteine wie z. B. Crossbar-Schalter, ebenso wie bekannte Bausteine der Gattung FPGA, DPGA, Chameleon, XPUTER, etc. Hingewiesen wird insbesondere in diesem Zusammenhang auf die folgenden Schutzrechte und Anmeldungen 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/01 869, DE 100 36 627.9-33, DE 100 28 397.7, DE 101 10 530.4, DE 101 11 014.6, PCT/EP 00/10 516, EP 01 102 674.7, PACT02, PACT04, PACT05, PACT08, PACT10, PACT11, PACT13, PACT21, PACT13, PACT18, PACTI8a, PACT19, PACT25, PACT25a. Diese sind hiermit zu Offenbarungszwecken vollumfänglich eingegliedert. The genus of these building blocks includes, in particular, systolic Arrays, neural networks, multiprocessor systems, processors with several arithmetic units and / or logical cells and / or communicative / peripheral cells (IO), networking and Network components such as B. crossbar switch, as well as known Building blocks of the FPGA, DPGA, Chameleon, XPUTER, etc. In this context, particular attention is drawn to the following property rights and applications by the same 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/01 869, DE 100 36 627.9-33, DE 100 28 397.7, DE 101 10 530.4, DE 101 11 014.6, PCT / EP 00/10 516, EP 01 102 674.7, PACT02, PACT04, PACT05, PACT08, PACT10, PACT11, PACT13, PACT21, PACT13, PACT18, PACTI8a, PACT19, PACT25, PACT25a. These are hereby for disclosure purposes fully integrated.

Die o. g. Architektur wird beispielhaft zur Verdeutlichung herangezogen und im folgenden VPU genannt. Die Architektur besteht aus beliebigen arithmetischen, logischen (auch Speicher) und/oder Speicherzellen und/oder Vernetzungszellen und/oder kommunikativen/peripheren (IO) Zellen (PAEs), die zu einer ein- oder mehrdimensionalen Matrix (PA) angeordnet sein können, wobei die Matrix unterschiedliche beliebig ausgestaltete Zellen aufweisen kann, auch die Bussysteme werden dabei als Zellen verstanden. Der Matrix als ganzes oder Teilen davon zugeordnet ist eine Konfigurationseinheit (CT), die die Vernetzung und Funktion des PA durch Konfigurations bestimmt. The above Architecture becomes an example for clarification used and hereinafter referred to as VPU. Architecture consists of any arithmetic, logical (also Memory) and / or memory cells and / or network cells and / or communicative / peripheral (IO) cells (PAEs) associated with a one- or multi-dimensional matrix (PA) can, the matrix being any different can have configured cells, including the bus systems understood as cells. The matrix as a whole or parts of which is assigned a configuration unit (CT) that the Networking and function of the PA determined by configuration.

Verschieden Methoden zum Ankoppeln von rekonfigurierbaren Prozessoren an Standardprozessoren sind bekannt. Diese sehen für gewöhnlich eine lose Kopplung vor. Different methods for connecting reconfigurable Processors on standard processors are known. See this usually a loose coupling.

Beschreibung der ErfindungDescription of the invention

Ein Standardprozessor z. B. ein RISC, CISC, DSP (CPU) wird mit einem rekonfigurierbaren Prozessor (VPU) gekoppelt. A standard processor e.g. B. a RISC, CISC, DSP (CPU) with coupled with a reconfigurable processor (VPU).

Zwei unterschiedliche bevorzugt jedoch zugleich implementierte Kopplungsvarianten werden beschrieben. However, two different preferred at the same time implemented coupling variants are described.

Eine erste Variante sieht eine direkte Ankoppelung an den Befehlssatz einer CPU vor (Befehlssatzkopplung). A first variant sees a direct connection to the Instruction set of a CPU before (instruction set coupling).

Eine zweite Variante sieht eine Ankoppelung über Tabellen im Hauptspeicher vor. A second variant sees a connection via tables in the Main memory.

BefehlssatzkoppelungInstruction set coupling

Innerhalb eines Instruktionssets (ISA) einer CPU sind für gewöhnlich freie unbenutzte Befehle vorhanden. Einer oder eine Mehrzahl dieser freien unbenutzen Befehle wird nunmehr für die Steuerung von VPUs verwendet (VPUCODE). Within an instruction set (ISA) of a CPU are for usually free unused commands available. One or one Most of these free unused commands are now used for control of VPUs used (VPUCODE).

Durch die Dekodierung eines VPUCODEs wird eine Konfigurationseinheit (CT) einer VPU angesteuert die in Abhängigkeit des VPUCODEs bestimmte Abläufe ausführt. Decoding a VPUCODE results in a Configuration unit (CT) of a VPU controlled depending on the VPUCODEs executes certain processes.

Beispielsweise kann ein VPUCODE das Laden und/oder Ausführen von Konfigurationen durch die Konfigurationseinheit (CT) für eine VPU auslösen. For example, a VPUCODE can load and / or execute of configurations by the configuration unit (CT) for trigger a VPU.

Kommandoübergabe an VPUCommand transfer to VPU

In einer erweiterten Ausführung kann ein VPUCODE über eine Übersetzungstabelle, die bevorzugt von der CPU aus aufgebaut wird auf unterschiedliche VPU-Kommandos übersetzt werden. Die Konfigurationstabelle kann in Abhängigkeit von dem ausgeführten CPU Programm oder Codeabschnitt gesetzt werden. In an extended version, a VPUCODE can have one Translation table, which is preferably built up from the CPU will be translated to different VPU commands. The Configuration table can vary depending on the executed CPU program or code section.

Die VPU läd nach Eintreffen eines Ladekommandos Konfigurationen aus einem eigenen oder mit der CPU geteilten Speicher. Insbesondere kann eine Konfiguration im Code des aktuell ausgeführten Programmes beinhaltet sein. The VPU loads after the arrival of a charging command Configurations from own memory or shared with the CPU. In particular, a configuration in the code of the current executed program.

Nach Erhalt eines Ausführungskommandos führt eine VPU die auszuführende Konfiguration aus und die entsprechende Datenverarbeitung durch. Das Beenden der Datenverarbeitung kann durch ein Terminierungssignal (TERM) an die CPU angezeigt werden. After receiving an execution command, a VPU leads the configuration to be executed and the corresponding one Data processing by. The termination of data processing can indicated by a termination signal (TERM) to the CPU become.

VPUCODE-Verarbeitung auf CPUVPUCODE processing on CPU

Das Auftreten eines VPUCODEs können solange Wartezyklen auf der CPU ausgeführt werden, bis das Terminierungssignal (TERM) der Beendingung der Datenverarbeitung von der VPU eintrifft. The occurrence of a VPUCODE can wait for as long the CPU to run until the termination signal (TERM) the processing of data ends by the VPU.

In einer bevorzugten Ausgestaltung wird mit der Verarbeitung der nächsten Codes fortgefahren. Tritt ein weiterer VPUCODE auf, kann sodann auf die Beendigung des vorhergehenden gewartet werden, oder sämtliche gestartete VPUCODEs werden in einer Verarbeitungspipeline eingereiht, oder ein Taskwechsel wird wie nachfolgend beschrieben ausgeführt. In a preferred embodiment, the processing of the next codes continued. Another VPUCODE kicks in on, can then proceed to the termination of the previous one be serviced, or all started VPUCODEs will be in a processing pipeline, or a task change is carried out as described below.

Die Beendigung einer Datenverarbeitung wird durch das eintreffen des Terminierungssignal (TERM) in einem Statusregister signalisiert. Die Terminierungssignale treffen in der Reihenfolge einer möglichen Verarbeitungspipeline ein. Die Datenverarbeitung auf der CPU kann durch das Testen des Statusregisters auf das Eintreffen eines Terminierungssignales synchronisiert werden. The termination of data processing is carried out by the arrival of the termination signal (TERM) in one Status register signaled. The termination signals meet in the Order of a possible processing pipeline. The data processing on the CPU can be done by testing the Status register on the arrival of a Termination signals are synchronized.

In einer möglichen Ausgestaltung kann, sofern eine Applikation vor dem Eintreffen von TERM z. B. durch Datenabhängigkeiten nicht fortgesetzt werden kann, ein Taskwechsel ausgelöst werden. In one possible embodiment, if one Application before the arrival of TERM z. B. through data dependencies a task change cannot be continued become.

Coprozessor-Kopplung (lose gekoppelt)Coprocessor coupling (loosely coupled)

Nach PACT18 werden bevorzugt lose Kopplungen zwischen Prozessoren und VPUs aufgebaut, bei welchen VPUs weitestgehend als unabhängige Coprozessoren arbeiten. According to PACT18, loose couplings between are preferred Processors and VPUs built, in which VPUs largely as independent coprocessors work.

Eine derartige Kopplung sieht eine oder mehrere gemeinsame Datenquellen und -senken, zumeist über gemeinsame Bussysteme und/oder gemeinsame Speicher vor. Über DMAs und/oder andere Speicherzugriffskontroller werden Daten zwischen einer CPU und einer VPU ausgetauscht. Die Synchronisation der Datenverarbeitung erfolgt bevorzugt über eine Interruptsteuerung oder einen Statusabfragemechanismus (z. B. Polling). Such a coupling sees one or more common ones Data sources and sinks, mostly via common bus systems and / or shared memory. Via DMAs and / or others Memory access controllers become data between a CPU and a VPU. The synchronization of the Data processing is preferably carried out via an interrupt control or a status query mechanism (e.g. polling).

Rechenwerk-Kopplung (eng gekoppel)Calculator coupling (closely coupled)

Eine enge Ankopplung entspricht der vorab beschriebenen direkten Ankopplung einer VPU in den Befehlssatz einer CPU. A close coupling corresponds to that described above direct coupling of a VPU into the instruction set of a CPU.

Bei einer direkten Rechenwerk-Ankopplung ist besonders auf eine hohe Rekonfigurationsperformance zu achten. Bevorzugt kann daher die Wave-Rekonfiguration nach PACT10, PACT13, PACT17 zum Einsatz kommen. Desweiteren werden die Konfigurationsworte bevorzugt nach PACT04, PACT13, PACT17, PACT31 vorab derart vorgeladen, dass bei Ausführung des Befehls die Konfiguration besonders schnell (mittels Wave-Reconfiguration im Optimalfall innerhalb eines Taktes) konfiguriert werden kann. With a direct arithmetic unit coupling is particularly on to ensure a high reconfiguration performance. Prefers the wave reconfiguration according to PACT10, PACT13, PACT17 are used. Furthermore, the Configuration words preferred according to PACT04, PACT13, PACT17, PACT31 preloaded in such a way that when the command is executed the Configuration particularly fast (using wave reconfiguration ideally be configured within one cycle) can.

Für die Wave-Reconfiguration werden bevorzugt die voraussichtlich auszuführenden Konfigurationen vorab durch den Compiler zur Compilezeit erkannt und zur Laufzeit entsprechend vorgeladen. Mögliche Verfahren sind beispielsweise aus aus PACT04, PACT08, PACT10, PACT13, PACT17, PACT31 bekannt. Zum Zeitpunkt der Befehlsausführung wird die entsprechende Konfiguration selektiert und ausgeführt. Auch derartige Verfahren sind nach den o. g. Schriften bekannt. For wave reconfiguration, preference is given to Configurations to be carried out in advance by the Compiler recognized at compile time and accordingly at runtime summoned. Possible methods are, for example, from PACT04, PACT08, PACT10, PACT13, PACT17, PACT31 known. At the time the command is executed, the corresponding one Configuration selected and executed. Even such Procedures are according to the above. Writings known.

Datentransfersdata transfers

Eine bevorzugte Implementierung kann unterschiedliche Datentransfers zwischen einer CPU und VPU vorsehen. Drei besonders bevorzugte einzeln oder kombiniert einsetzbare Methoden werden nachfolgend beschrieben. A preferred implementation can be different Provide data transfers between a CPU and VPU. Three especially preferred methods that can be used individually or in combination are described below.

Registerregister

Bei einer Registerkopplung kann die VPU Daten aus einem CPU- Register entnehmen, verarbeiten und in ein CPU-Register zurückschreiben. With a register coupling, the VPU can transfer data from a CPU Remove registers, process them and put them into a CPU register Restoring.

Bevorzugt werden Synchronisationsmechanismen zwischen der CPU und der VPU eingesetzt. Synchronization mechanisms between the CPU are preferred and the VPU.

Beispielsweise kann die VPU durch das Einschreiben der Daten in ein CPU-Register durch die CPU ein RDY-Signal (PACT02, PACT18) erhalten und daraufhin die eingeschriebenen Daten verarbeiten. Das Auslesen von Daten aus einem CPU-Register durch die CPU kann ein ACK-Signal (PACT02, PACT18) generieren, wodurch die Datenabnahme durch die CPU der VPU signalisiert wird. For example, the VPU can write data an RDY signal (PACT02, PACT18) and then the registered data to process. Reading data from a CPU register the CPU can send an ACK signal (PACT02, PACT18) generate, which means the data acquisition by the CPU of the VPU is signaled.

CPUs stellen typischerweise keine entsprechenden Mechanismen zur Verfügung. CPUs typically do not provide such mechanisms to disposal.

Zwei mögliche Lösungen werden nähers beschrieben:
Ein einfach zu realsierenden Ansatz ist, die Datensynchronisation über ein Statusregister durchzuführen. Beispielsweise kann die VPU das erfolgte Auslesen von Daten aus einem Register und das damit verbundene ACK-Signal (PACT02, PACT18) und/oder das Einschreiben von Daten in ein Register und das damit verbundene RDY-Signal (PACT02, PACT18) in dem Statusregister anzeigen. Die CPU testet zunächst das Statusregister und führt beispielsweise so lange Warteschleifen oder Taskwechsel aus, bis - je nach Operation - das RDY oder ACK eintraf. Danach führt die CPU den jeweiligen Registerdatentransfer aus.
Two possible solutions are described in more detail:
An easy to implement approach is to perform data synchronization using a status register. For example, the VPU can display the readout of data from a register and the associated ACK signal (PACT02, PACT18) and / or the writing of data into a register and the associated RDY signal (PACT02, PACT18) in the status register , The CPU first tests the status register and, for example, executes waiting loops or task changes until - depending on the operation - the RDY or ACK has arrived. The CPU then executes the respective register data transfer.

In einer erweiterten Ausgestaltung wird der Befehlssatz der CPU um load/store-Instruktionen mit integrierter Statusabfrage (load_rdy, store_ack) erweitert. Beispielsweise wird bei einem store ack nur dann ein neues Datenwort in ein CPU- Register geschrieben, wenn das Register vorher von der VPU ausgelesen wurde und ein ACK eintraf. Entsprechend liest load_rdy nur Daten aus einem CPU-Register, wenn die VPU vorher neue Daten eingeschrieben und ein RDY generiert hat. In an expanded embodiment, the instruction set is the CPU to load / store instructions with integrated Status query (load_rdy, store_ack) expanded. For example, at a store ack only then a new data word in a CPU Register written if the register was previously used by the VPU was read out and an ACK arrived. Reads accordingly load_rdy only data from a CPU register if the VPU previously wrote in new data and generated an RDY.

Daten die zu einer auszuführenden Konfiguration gehören können successive, quasi durch Block-Moves nach dem Stand der Technik in die CPU-Register geschrieben oder aus diesen gelesen werden. Ggf. implementierte Block-Move-Instruktionen können bevorzugt durch die beschriebene integrierte RDY/ACK Statusabfrage erweitert werden. Data belonging to a configuration to be executed can be successive, quasi through block moves according to the state of the art Technology written in or out of the CPU registers to be read. Possibly. implemented block move instructions can preferably by the described integrated RDY / ACK Status query can be expanded.

Es ist offensichtlich, dass eine Vielzahl von leichten Modifikationen und unterschiedlichen Ausgestaltungen dieses Grundverfahrens möglich sind. It is obvious that a variety of light Modifications and different configurations of this Basic procedures are possible.

Die bereits erwähnte Wave-Rekonfiguration erlaubt das Starten eines neuen VPU-Befehls und der entsprechenden Konfiguration, sobald die Operanden des vorhergehenden VPU-Befehls aus den CPU-Registern abgenommen wurden. Die Operanden für den neuen Befehl können direkt nach Befehlsstart in die CPU-Register geschrieben werden. The wave reconfiguration already mentioned allows starting a new VPU command and the corresponding configuration, as soon as the operands of the previous VPU instruction from the CPU registers were removed. The operands for the new one Command can be entered into the CPU register immediately after the command is started to be written.

Entsprechend des Wave-Rekonfiguration-Verfahrens wird die VPU successive mit Fertigstellung der Datenverarbeitung des vorherigen VPU-Befehls für den neuen VPU-Befehl umkonfiguriert und die neuen Operanden verarbeitet. According to the wave reconfiguration procedure, the VPU successive with the completion of the data processing of the reconfigured previous VPU command for the new VPU command and processed the new operands.

BuszugriffeBus access

Weiterhin können Daten zwischen einer VPU und einer CPU durch geeignete Buszugriffe auf gemeinsame Ressourcen ausgetauscht werden. Furthermore, data can pass between a VPU and a CPU suitable bus access to shared resources exchanged become.

Cachecache

Sofern Daten ausgetauscht werden sollen, die kurz zuvor von der CPU verarbeitet wurden und daher voraussichtlich noch im Cache der CPU liegen bzw. sofort anschliessend von der CPU verarbeitet werden und daher sinnvollerweise in den Cache der CPU gelegt werden, werden diese bevorzugt von der VPU aus dem Cache der CPU gelesen, bzw. in den Cache der CPU geschrieben. Dies kann durch geeignete Analysen weitestgehend vorab zur Compilezeit der Applikation durch den Compiler festgestellt und der Binärcode entsprechend generiert werden. If data is to be exchanged that was previously used by the CPU were processed and therefore probably still in The cache of the CPU or immediately afterwards from the CPU processed and therefore logically in the cache of CPU, these are preferred by the VPU from the CPU cache read or written to the CPU cache. By means of suitable analyzes, this can largely be done in advance Compile time of the application determined by the compiler and the binary code are generated accordingly.

Busbus

Sofern Daten ausgetauscht werden sollen, die sich voraussichtlich nicht im Cache der CPU befinden bzw. voraussichtlich nicht nachfolgend im Cache der CPU benötigt werden, werden diese bevorzugt von der VPU direkt vom externen Bus und der damit verbundenen Datenquelle (z. B. Speicher, Peripherie) gelesen, bzw. an den externen Bus und der damit verbundenen Datensenke (z. B. Speicher, Peripherie) geschrieben. Dies kann durch geeignete Analysen weitestgehend vorab zur Compilezeit der Applikation durch den Compiler festgestellt und der Binärcode entsprechend generiert werden. If data is to be exchanged, the probably not in the cache of the CPU or probably not subsequently required in the cache of the CPU, are these preferred by the VPU directly from the external bus and the associated data source (e.g. memory, peripherals) read, or to the external bus and the associated Data sink (e.g. memory, peripherals) written. This can through suitable analyzes as far as possible at compile time the application is determined by the compiler and the Binary code can be generated accordingly.

Bei einem Transfer über den Bus am Cache vorbei, wird bevorzugt ein Protokoll zwischen Cache und Bus implementiert, das für einen korrekten Inhalt des Caches sorgt. Beispielsweise kann das bekannte MESI-Protokoll nach dem Stand der Technik hierzu verwendet werden. With a transfer over the bus past the cache preferably implements a protocol between cache and bus that ensures the correct content of the cache. For example can the known MESI protocol according to the prior art can be used for this.

BetriebssystemmechanismenOperating system mechanisms

Die beschriebenen Verfahren sehen zunächst keinen besonderen Mechanismus für die Unterstützung von Betriebssystemen vor. Es ist nämlich bevorzugt sicherzustellen, dass ein auszuführendes Betriebssystem sich entsprechend des Status einer zu unterstützenden VPU verhält. Insbesondere sind Scheduler erforderlich. The methods described do not initially see any particular one Operating system support mechanism. It is preferable to ensure that a Operating system to be executed according to the status of a supporting VPU behaves. In particular, are schedulers required.

Bei einer engen Rechenwerkkopplung wird bevorzugt das Statusregister der CPU abgefragt, in welches die angekoppelte VPU ihren Datenverarbeitungsstatus (Terminierungssignal) einträgt. Soll eine weitere Datenverarbeitung an die VPU übertragen werden, und die VPU hat die vorherige Datenverarbeitung noch nicht beendet wird gewartet oder bevorzugt ein Taskwechsel ausgeführt. In the case of a narrow arithmetic logic link, this is preferred Status register of the CPU queried, in which the coupled VPU your data processing status (termination signal) enters. Should further data processing to the VPU transferred, and the VPU has the previous one Data processing is not yet waiting or preferred Task change carried out.

Für eine Coprozessorkopplung werden bevorzugt über das Betriebssystem, i. b. den Scheduler gesteuerte Mechanismen verwendet:
Ein einfacher Scheduler kann nach Übertragung einer Funktion auf eine VPU entweder den akutellen Task auf der CPU weiterlaufen lassen, sofern dieser unabhängig und parallel zur Datenverarbeitung auf einer VPU ablaufen kann. Sofern oder sobald der Task auf die Beendigung der Datenverarbeitung auf der VPU warten muss, schaltet der Taskscheduler auf einen anderen Task um.
Mechanisms controlled via the operating system and the scheduler are preferably used for coprocessor coupling:
After a function has been transferred to a VPU, a simple scheduler can either let the current task continue to run on the CPU, provided that it can run independently and in parallel to data processing on a VPU. If or as soon as the task has to wait for the data processing on the VPU to end, the task scheduler switches over to another task.

Jeder neu aktivierte Task muss, sofern er die VPU verwendet, vor Verwendung prüfen, ob diese für eine Datenverarbeitung zur Verfügung steht oder aktuell noch Daten verarbeitet; dann muss entweder auf die Beendigung der Datenverarbeitung gewartet oder bevorzugt der Task gewechselt werden. Each newly activated task, if it uses the VPU, must Check before use whether this is for data processing is available or is currently still processing data; then must either stop data processing the task is to be maintained or preferably changed.

Ein einfaches und dennoch leistungsfähiges Verfahren kann durch sogenannte Descriptor Tables aufgebaut werden, die bespielsweise folgendermassen realisiert werden können:
Jeder Task generiert zum Aufruf der VPU eine oder mehrere Tabelle(n) (VPUCALL) mit einem geeigneten festgelegten Datenformat in dem ihm zugewiesenen Speicherbereich. Diese Tabelle beeinhaltet sämtliche Steuerinformation für eine VPU, wie z. B. das auszuführende Programm/die auszuführende Konfiguration und/oder Zeiger auf die Speicherstelle(n) oder Datenquellen der Eingangsdaten und/oder die Speicherstelle(n) oder Datensenken der Ergebnisdaten.
A simple, yet powerful process can be set up using so-called descriptor tables, which can be implemented as follows:
Each task generates one or more table (s) (VPUCALL) with a suitable defined data format in the memory area assigned to it to call the VPU. This table contains all tax information for a VPU, such as: B. the program / configuration to be executed and / or pointer to the storage location (s) or data sources of the input data and / or the storage location (s) or data sinks of the result data.

Im Speicherbereich des Betriebssystems befindet sich eine Tabelle oder verkettete Liste (LINKLIST), die auf sämtliche VPUCALL-Tabellen in der Reihenfolge ihrer Erstellung zeigt. There is one in the memory area of the operating system Table or linked list (LINKLIST) on all VPUCALL tables shows in the order in which they were created.

Die Datenverarbeitung auf der VPU läuft nunmehr derart ab, dass ein Task einen VPUCALL erstellt und über das Betriebssystem die VPU aufruft. Das Betriebssystem erstellt einen Eintrag in der LINKLIST. Die VPU arbeitet die LINKLIST ab und führt die jeweils referenzierten VPUCALL aus. Die Beendigung einer der jeweiligen Datenabarbeitung wird jeweils durch einen entsprechenden Eintrag in die LINKLIST und/oder VPUCALL Tabelle angezeigt. The data processing on the VPU now runs in such a way that a task creates a VPUCALL and via the Operating system calls the VPU. The operating system creates one Entry in the LINKLIST. The VPU processes the LINKLIST and executes the referenced VPUCALL. The termination one of the respective data processing is done by a corresponding entry in the LINKLIST and / or VPUCALL Table displayed.

Die VPU arbeitet somit weitgehend unabhängig von der CPU. Das Betriebssystem und/oder die jeweiligen Task müssen lediglich die Tabellen (LINKLIST bzw. VPUCALL) überwachen. The VPU thus works largely independently of the CPU. The Operating system and / or the respective task only have to monitor the tables (LINKLIST or VPUCALL).

Besonders performanceeffizient arbeiten die beiden Verfahren, wenn als VPU eine Architektur zum Einsatz kommt, die eine mit der Datenverarbeitung überlagerte Rekonfiguration zulässt, wie z. B. die Wave-Reconfiguration nach PACT10, PACT13, PACT17. The two processes work particularly efficiently, if an architecture is used as the VPU, the one with Allows reconfiguration superimposed on data processing such as B. the wave reconfiguration according to PACT10, PACT13, PACT17.

Damit ist es möglich eine neue Datenverarbeitung und eine ggf. damit verbundene Rekonfiguration sofort nach lesen der letzten Operanden aus den Datenquellen zu starten. Mit anderen Worten ist für die Synchronisation nicht mehr das Beenden der Datenverarbeitung, sonderen das Lesen der letzten Operanden erforderlich. Dadurch wird die Performance der Datenverarbeitung erheblich gesteigert. This makes it possible for a new data processing and a any reconfiguration associated with this, immediately after reading the last operands from the data sources. With in other words, the end of synchronization is no longer data processing, especially reading the last one Operands required. This will affect the performance of the Data processing increased significantly.

Sämtliche erwähnten PACT Patentanmeldungen sind zu Offenbarungszwecken vollumfänglich eingegliedert. All mentioned PACT patent applications are closed Disclosure purposes fully integrated.

Beliebige weitere Ausgestaltungen und Kombinationen der erläuterten Erfindungen sind möglich und einem Fachmann offensichtlich. Any other configurations and combinations of Inventions explained are possible and a person skilled in the art obviously.

Claims (10)

1. Verfahren zur Integration und/oder Kopplung von rekonfigurierbaren an Standard-Prozessoren, dadurch gekennzeichnet, daß im Instruktionssatz des Standardprozessors zumindest ein Ansteuerungsbefehl für zumindest einen rekonfigurierbaren Prozessor vorgesehen wird, um bei Auftreten desselben eine Ansteuerung des rekonfigurierbaren Prozessors vorzunehmen. 1. A method for integrating and / or coupling reconfigurable to standard processors, characterized in that at least one control command for at least one reconfigurable processor is provided in the instruction set of the standard processor in order to trigger the reconfigurable processor when the same occurs. 2. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß die Ansteuerung über eine Konfigurationseinheit bzw. eine Konfigurationsverwaltungseinheit erfolgt. 2. The method according to the preceding claim, characterized characterized in that the control via a Configuration unit or a configuration management unit he follows. 3. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß die Ansteuerung erfolgt, um die Konfigurationseinheit zum Laden einer oder mehrerer Konfigurationen erfolgt. 3. The method according to the preceding claim, characterized characterized in that the control takes place to the Configuration unit for loading one or more Configurations. 4. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß dem Standardprozessor die Beendigung der Datenverarbeitung durch den rekonfigurierbaren Prozessor angezeigt wird. 4. The method according to any one of the preceding claims, characterized in that the standard processor Termination of data processing by the reconfigurable processor is displayed. 5. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß bei Ansteuerung zur Ausführung weiterer Konfigurationen diese unter Durchführung eines Takswechsels auf dem rekonfigurierbaren Prozessor durchgeführt werden, insbesondere über eine Waverekonfiguration des rekonfigurierbaren Prozessors. 5. The method according to any one of the preceding claims, characterized in that when actuated for execution further configurations this by performing a Takswechsel on the reconfigurable processor be carried out, in particular via a Wave configuration of the reconfigurable processor. 6. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß zwischen dem rekonfigurierbaren und dem Standard-Prozessor Rdy-/Ack-Signal übertragen werden und der Standard-Prozessor -Befehlssatz so gewählt ist, daß load/Store-Befehle mit Statusabfrage durchgeführt werden können. 6. The method according to any one of the preceding claims, characterized in that between the reconfigurable and the standard processor Rdy / Ack signal transferred and the standard processor instruction set like this is selected that load / store commands with status query can be carried out. 7. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß der Standard-Prozessor bis zum Eintreffen eines RDY oder ACK Warteschleifen und/oder Taskwechsel ausführt. 7. The method according to the preceding claim, characterized characterized in that the standard processor up to Arrival of an RDY or ACK queue and / or Task change executes. 8. Verfahren zur Integration und/oder Kopplung von rekonfigurierbaren an Standard-Prozessoren, insbesondere nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß Daten über gemeinsame Bussysteme und/oder Speicher übertragen werden. 8. Procedure for the integration and / or coupling of reconfigurable to standard processors, especially after any of the preceding claims, characterized in that data on common Bus systems and / or memory are transmitted. 9. Verfahren zur Integration und/oder Kopplung von rekonfigurierbaren an Standard-Prozessoren, insbesondere nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß vor dem Aufruf des rekonfigurierbares Prozessors überprüft wird, ob derselbe zur Verfügung steht und im Ansprechen auf das Überprüfungsergebnis entweder auf die Datenverarbeitungsbeendigung gewartet oder der Task gewechselt wird. 9. Procedure for the integration and / or coupling of reconfigurable to standard processors, especially after any of the preceding claims, characterized in that before calling the reconfigurable processor is checked whether the same for Is available and in response to that Review result either on data processing termination waited or the task is changed. 10. Verfahren nach einem der vorhergehenden Ansprüche, dadurch gekennzeichnet, daß es mit einer rekonfigurierbaren Architektur aus beliebigen arithmetischen, logischen (auch Speicher) und/oder Speicherzellen und/oder Vernetzungszellen insbesondere Bussystemen und/oder kommunikativen/peripheren (IO) Zellen (PAEs) angewendet wird, die zu einer ein- oder mehrdimensionalen Matrix (PA) angeordnet sind oder werden. 10. The method according to any one of the preceding claims, characterized in that it has a reconfigurable architecture from any arithmetic, logical (also memory) and / or memory cells and / or Networking cells, in particular bus systems and / or communicative / peripheral (IO) cells (PAEs) that are applied to a one- or multi-dimensional matrix (PA) are arranged or will be.
DE10212622A 1995-12-29 2002-03-21 Computer program translation method allows classic language to be converted for system with re-configurable architecture Ceased DE10212622A1 (en)

Priority Applications (38)

Application Number Priority Date Filing Date Title
DE10212622A DE10212622A1 (en) 2002-03-21 2002-03-21 Computer program translation method allows classic language to be converted for system with re-configurable architecture
AT10005502T ATE557344T1 (en) 2001-06-20 2002-06-20 METHOD AND DEVICE FOR PARTITIONING LARGE COMPUTER PROGRAMS
AU2002347560A AU2002347560A1 (en) 2001-06-20 2002-06-20 Data processing method
JP2003505782A JP2004533691A (en) 2001-06-20 2002-06-20 Methods for processing data
US10/480,003 US7657877B2 (en) 2001-06-20 2002-06-20 Method for processing data
EP02780770A EP1402382B1 (en) 2001-06-20 2002-06-20 Data processing method
PCT/EP2002/006865 WO2002103532A2 (en) 2001-06-20 2002-06-20 Data processing method
AT02780770T ATE478381T1 (en) 2001-06-20 2002-06-20 DATA PROCESSING PROCEDURES
EP10005502A EP2224330B1 (en) 2001-06-20 2002-06-20 Method and device for partitioning large computer programs
US10/490,079 US7434191B2 (en) 2001-09-03 2002-09-18 Router
AU2002338729A AU2002338729A1 (en) 2001-09-19 2002-09-18 Router
PCT/EP2002/010479 WO2003025781A2 (en) 2001-09-19 2002-09-18 Router
EP02777144A EP1466264B1 (en) 1995-12-29 2002-09-18 Method for configuration of the connection between data processing cells
PCT/EP2002/010572 WO2003036507A2 (en) 2001-09-19 2002-09-19 Reconfigurable elements
AU2002357982A AU2002357982A1 (en) 2001-09-19 2002-09-19 Reconfigurable elements
US10/490,081 US8429385B2 (en) 2001-09-03 2002-09-19 Device including a field having function cells and information providing cells controlled by the function cells
JP2003538928A JP4456864B2 (en) 2001-09-19 2002-09-19 Reconfigurable element
AT02791644T ATE533111T1 (en) 2001-09-19 2002-09-19 RECONFIGURABLE ELEMENTS
EP02791644A EP1472616B8 (en) 2001-09-19 2002-09-19 Reconfigurable elements
AU2003223892A AU2003223892A1 (en) 2002-03-21 2003-03-21 Method and device for data processing
PCT/DE2003/000942 WO2003081454A2 (en) 2002-03-21 2003-03-21 Method and device for data processing
EP03720231A EP1518186A2 (en) 2002-03-21 2003-03-21 Method and device for data processing
US10/508,559 US20060075211A1 (en) 2002-03-21 2003-03-21 Method and device for data processing
US12/247,076 US8209653B2 (en) 2001-09-03 2008-10-07 Router
US12/571,173 US8686549B2 (en) 2001-09-03 2009-09-30 Reconfigurable elements
JP2009271120A JP2010079923A (en) 2001-09-19 2009-11-30 Processing chip, system including chip, multiprocessor device, and multi-core processor device
US12/640,201 US20100095094A1 (en) 2001-06-20 2009-12-17 Method for processing data
US12/729,090 US20100174868A1 (en) 2002-03-21 2010-03-22 Processor device having a sequential data processing unit and an arrangement of data processing elements
US12/729,932 US20110161977A1 (en) 2002-03-21 2010-03-23 Method and device for data processing
US13/023,796 US8686475B2 (en) 2001-09-19 2011-02-09 Reconfigurable elements
US14/162,704 US20140143509A1 (en) 2002-03-21 2014-01-23 Method and device for data processing
US14/223,793 US10031733B2 (en) 2001-06-20 2014-03-24 Method for processing data
US14/263,185 US8890215B2 (en) 1997-10-08 2014-04-28 Reconfigurable elements
US14/540,782 US20150074352A1 (en) 2002-03-21 2014-11-13 Multiprocessor Having Segmented Cache Memory
US14/543,306 US9092595B2 (en) 1997-10-08 2014-11-17 Multiprocessor having associated RAM units
US14/810,905 US9240220B2 (en) 1997-10-08 2015-07-28 Stacked-die multi-processor
US14/923,702 US10579584B2 (en) 2002-03-21 2015-10-27 Integrated data processing core and array data processor and method for processing algorithms
US15/000,763 US10885996B2 (en) 1997-10-08 2016-01-19 Processor having a programmable function unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE10212622A DE10212622A1 (en) 2002-03-21 2002-03-21 Computer program translation method allows classic language to be converted for system with re-configurable architecture

Publications (1)

Publication Number Publication Date
DE10212622A1 true DE10212622A1 (en) 2003-10-23

Family

ID=28458362

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10212622A Ceased DE10212622A1 (en) 1995-12-29 2002-03-21 Computer program translation method allows classic language to be converted for system with re-configurable architecture

Country Status (1)

Country Link
DE (1) DE10212622A1 (en)

Similar Documents

Publication Publication Date Title
EP1402382B1 (en) Data processing method
DE102018130441A1 (en) Equipment, methods and systems with configurable spatial accelerator
EP1146432B1 (en) Reconfiguration method for programmable components during runtime
DE68927492T2 (en) Method and device for the simultaneous distribution of commands to several functional units
DE19735350B4 (en) Vector processor for performing parallel operations and methods therefor
DE2251876C3 (en) Electronic data processing system
DE19735348B4 (en) Vector processor for single-instruction multi-data processing using multiple banks of vector registers and associated method for operating the same
DE69017178T2 (en) Data processing system with device for command marking.
DE112017001825T5 (en) PROCESSORS, METHODS, SYSTEMS AND INSTRUCTIONS FOR ATOMICALLY SAVING DATA WIDER THAN A NATIVELY SUPPORTED DATA WIDTH IN A MEMORY
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
DE102005055000A1 (en) Modular avionics system of an aircraft
DE19735869A1 (en) Multiprocessor computer software interrupt handler with argument transfer
DE102013224702A1 (en) Control device for a motor vehicle
DE102015102135A1 (en) Interruptible exclusive storage
DE102014002510A1 (en) Precise Exception Signaling for Multiple Data Architecture
DE69732793T2 (en) EIGHT-BIT MICRO-CONTROLLER WITH RISC ARCHITECTURE
WO2003081454A2 (en) Method and device for data processing
DE2533737A1 (en) DATA PROCESSOR
DE102018128626A1 (en) Systems, methods and devices for matrix operations
DE102022114563A1 (en) ARRAY PROCESSOR DEVICE AND RELATED METHODS
EP1449083B1 (en) Method for debugging reconfigurable architectures
EP0130269A2 (en) Stored program control
DE4009804A1 (en) PROGRAMMABLE PROCESSOR WITH A FUNCTIONAL BLOCK PROCESSOR AND A BIT PROCESSOR
EP1483682A2 (en) Reconfigurable processor
DE19735349B4 (en) Vector processor and method of operation thereof

Legal Events

Date Code Title Description
ON Later submitted papers
OP8 Request for examination as to paragraph 44 patent law
8131 Rejection