WO2004021176A2 - Verfahren und vorrichtung zur datenverarbeitung - Google Patents

Verfahren und vorrichtung zur datenverarbeitung Download PDF

Info

Publication number
WO2004021176A2
WO2004021176A2 PCT/EP2003/008081 EP0308081W WO2004021176A2 WO 2004021176 A2 WO2004021176 A2 WO 2004021176A2 EP 0308081 W EP0308081 W EP 0308081W WO 2004021176 A2 WO2004021176 A2 WO 2004021176A2
Authority
WO
WIPO (PCT)
Prior art keywords
bus
data
data processing
cells
configuration
Prior art date
Application number
PCT/EP2003/008081
Other languages
English (en)
French (fr)
Other versions
WO2004021176A3 (de
Inventor
Martin Vorbach
Frank May
Armin NÜCKEL
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
Priority claimed from PCT/EP2002/010065 external-priority patent/WO2003017095A2/de
Priority claimed from DE10238172A external-priority patent/DE10238172A1/de
Priority claimed from DE10238173A external-priority patent/DE10238173A1/de
Priority claimed from DE10238174A external-priority patent/DE10238174A1/de
Priority claimed from DE10240000A external-priority patent/DE10240000A1/de
Priority claimed from PCT/DE2002/003278 external-priority patent/WO2003023616A2/de
Priority claimed from DE2002141812 external-priority patent/DE10241812A1/de
Priority claimed from PCT/EP2002/010084 external-priority patent/WO2003025770A2/de
Priority claimed from PCT/EP2002/010479 external-priority patent/WO2003025781A2/de
Priority claimed from DE2002143322 external-priority patent/DE10243322B4/de
Priority claimed from PCT/EP2002/010572 external-priority patent/WO2003036507A2/de
Priority claimed from PCT/EP2003/000624 external-priority patent/WO2003071418A2/de
Priority claimed from PCT/DE2003/000152 external-priority patent/WO2003060747A2/de
Priority claimed from PCT/DE2003/000489 external-priority patent/WO2003071432A2/de
Priority claimed from DE2003110195 external-priority patent/DE10310195A1/de
Priority claimed from PCT/DE2003/000942 external-priority patent/WO2003081454A2/de
Priority to EP03776856.1A priority Critical patent/EP1537501B1/de
Application filed by Pact Xpp Technologies Ag filed Critical Pact Xpp Technologies Ag
Priority to US10/523,763 priority patent/US7657861B2/en
Priority to AU2003286131A priority patent/AU2003286131A1/en
Publication of WO2004021176A2 publication Critical patent/WO2004021176A2/de
Publication of WO2004021176A3 publication Critical patent/WO2004021176A3/de
Priority to US12/621,860 priority patent/US8281265B2/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/34Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
    • G06F9/345Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
    • G06F9/3455Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results using stride
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3824Operand accessing
    • G06F9/383Operand prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3877Concurrent instruction execution, e.g. pipeline, look ahead using a slave processor, e.g. coprocessor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • G06F9/3885Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
    • G06F9/3893Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator
    • G06F9/3895Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros
    • G06F9/3897Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units controlled in tandem, e.g. multiplier-accumulator for complex operations, e.g. multidimensional or interleaved address generators, macros with adaptable data path

Definitions

  • the invention relates to what is claimed in the preamble and is therefore concerned with improvements in multidi ensional fields from data processing cells for data processing.
  • Multidimensional fields from data processing cells are already known.
  • the category of these modules includes, in particular, systolic arrays, neural networks, multiprocessor systems> processors with several computing units and / or logical cells and / or communicative / peripheral cells (10), networking and network components, such as e.g. Crossbar switches, as well as known modules of the FPGA, DPGA, Chameleon, XPUTER, etc. modules are known in particular, in which the first cells can be reconfigured during runtime without disturbing the operation of other cells, i cf.
  • BESTATIGUNGSKOPIE Quantity is particularly relevant, it is currently common to provide dedicated logic circuits in the form of ASICS and the like. However, these have the problem of entailing particularly high development costs, since both the design of the circuit and the production of the large number of masks are expensive.
  • the object of the present invention is to provide something new for commercial use.
  • the configuration retention means are designed, at least some of the configurations available, non-volatile ..
  • the function can be configured in a coarse-grained manner, i.e. if that.
  • Configuration reserve means only has to hold a few bits in order to determine a respective function of the cell. This makes it easier to maintain a large number of configurations to be worked through successively, but these are in each case or at least partially predefined. At least one of ALUs, EAlUs, RAM cells, I / O cells and logic blocks can be provided as cell elements.
  • the networking can also be configured in a coarse-grained manner, ie only a few bits will have to be set in order to provide the networking. In an alternative way, it is possible to at least largely predefine the networking and only vary the respective function.
  • the finished module for example in its function as in the case of wave reconfiguration, is to carry out a specific one of a predetermined number of functions, but the networking itself is fixed.
  • a closest neighbor Connection are provided (to the applicant's parallel application regarding the increase of the nearest neighbor dimensionality or connectivity is pointed out for the purpose of disclosure), some of the nearest neighbor connections are activated and some are deactivated.
  • a circuitry arrangement and / or bus structure that can be changed, if necessary, can be reconfigured for the running time. It should be pointed out that, depending on the user requirements, a multitude of different tasks can be provided with one building block unchanged except for the configuration specification, so that mask costs are distributed over a large number of building blocks and are therefore no longer so important.
  • each cell element is assigned its own configuration provision means. These can replace the configuration registers provided in XPP architectures and accessible from a central configuration memory. It is possible to enter a in the configuration reserve. Maintain a variety of configurations; this allows reconfiguration during operation, for example, without having to integrate a configuration unit which is also expensive and requires silicon area.
  • the configurations to be activated can be selected within the field via status triggers, data operations, sequencer arrangements, etc. It is also preferred if a plurality of fixed, non-volatile configurations are specified in the configuration reserve. Alternatively, volatile and non-volatile configurations can be used. It is pointed out that a complete or partial configuration specification can take place before or each actual commissioning.
  • Cells is reconfigured via a configuration manager or in some other way.
  • the changing of the large number of held and / or predetermined configurations that is to be used in each case can be determined or changed in particular by means of wave reconfiguration or local sequencing.
  • configuration storage means as ROM, EPROM, EEPROM, flash memory, fuse, antifuse-programmable storage means and / or storage means, in particular in upper layers of a silicon structure. Arrangements that provide for the configuration easily and simply with a large number of pieces are particularly preferred. This is through appropriate
  • CMOS complementary metal-oxide-semiconductor
  • CMOS complementary metal-oxide-semiconductor
  • a function block of a defined function can be obtained by specifying a multidimensional field with cell elements that can be configured in function and / or networking and associated configuration retention means for local configuration retention, determining which configurations are to be held in these, and then non-volatile configuration retention means are provided so that they hold at least some of the configurations held non-volatile.
  • AI shows a data processing arrangement according to the invention
  • the multidimensional field 1 comprises three rows and columns of PAEs, as are known per se from the applicant's input mentioned and other publications. These units have coarse-granularly configurable ALUs 2b, to which data from a bus system " 2d are received via multiplexer 2c and which are flanked on both sides with forward / reverse registers 2e, 2f, as is known per se.
  • the operation of the multiplexers 2g, 2c and that of the ALU 2b and the registers 2e, 2f is known per se and is not explained in detail here.
  • the configuration which these units have, ie the Connections that the multiplexer activates or the respective function of the ALU are stored in the configuration memory 2 hours, and a variety of different configurations can be stored for sequencing or wave reconfiguration, which are based on signals from the cells or on external signals can be activated, and a fixed, unchangeable memory does not have to be provided for all configurations nn a memory (possibly comparatively small) may also be provided in certain cases. This therefore allows a line or memory mix.
  • configuration memory 2h is non-volatile and its content is fixed during the manufacture of the IC containing the elements.
  • a chip is designed which corresponds in its rough structure to a large number of other, similar chips and differs from those only in terms of the non-volatile configuration memory contents.
  • non-volatile configuration memory contents are determined with dedicated metal layers and / or by burning / melting certain fuses / antifuses intended for configuration or in some other way.
  • the memory contents are then determined whether the non-volatile configuration memory contents are determined with dedicated metal layers and / or by burning / melting certain fuses / antifuses intended for configuration or in some other way. The memory contents are then
  • this deals with the integrated electronic processing of information which is in the form of analog signals. It should be particularly emphasized that, as will be seen, the analog processing, for example, is based on permanently stored configurations.
  • FPAAs Field Programmable Analog Arrays
  • FPMAs Field Programmable Mixed-Signal Arrays
  • FPADs Field Programmable Analog Devices
  • FPAs, FPMAs and FPADs consist of individual, programmable cells.
  • the core of such a cell is an analog operational amplifier, to which a specific function from a set of possible functions can be assigned. Possible functions are, for example, adders, inverters, rectifiers and filters of the first order, with which an analog signal can be processed.
  • the cells are connected to each other by a bus system and are controlled by logic elements;
  • ASICs Application Specific Integrated Circuits
  • DSPs Digital Signal Processors
  • CPUs Central Processing
  • a circuit with discrete components can be optimally designed for a specific task due to its primary flexibility.
  • FPAAs FPAAs
  • FPMAs FPADs
  • the possibilities for processing analog signals given by FPAAs, FPMAs and FPADs are based on the model
  • a single FPAA, FPMA or FPAD cell can be configured as memory in the manner of a sample-and-hold stage. However, it can then no longer perform an additional function.
  • FPAAs, FPMAs and FP ⁇ Ds are subject to functional restrictions due to their exclusively analog signal processing.
  • the capabilities of the digital logic implemented in FPAAs, FPMAs and FPADs are limited to the functions that are necessary for the reconfiguration of the cells.
  • the function of the cells which they perform during operation is not supported, let alone expanded, by the logic in the prior art, for example by digital counting functions or basic logic functions such as NAND and NOR.
  • digital counting functions or basic logic functions such as NAND and NOR.
  • FPAAs, FPMAs and FPADs therefore make it possible, if at all, to perform logic functions, such as decisions dependent on input signals, only to a small extent or only with great effort.
  • ASICs have a high primary flexibility because they are developed for a special application. However, they are only suitable for the application for which they are developed; ASICs can only be reconfigured within the framework specified by the application. If the application changes by a detail that was not taken into account when developing the ASIC, in extreme cases a new ASIC must be developed.
  • DSPs and CPUs Of all the signal processing options, DSPs and CPUs can be configured and reconfigured most flexibly, but neither partially nor during runtime.
  • analog signals in 'convert a material suitable for DSPs or CPUs format
  • the analog signals must be digitally encoded. This requires an analog-to-digital conversion, which can be quite complex and expensive with higher precision requirements and can furthermore restrict the bandwidth.
  • the internal bus systems in DSPs and CPUs must transmit the individual bits of a digitally coded analog signal in parallel. The required width of the data bus system increases with the required precision of the digital coding of the signal. In contrast, one line per analog signal transmitted is sufficient for analog transmission.
  • DSPs and CPUs do not have a cell-like structure, but are built in the classic von Neumann architecture. Their modularity is therefore only minimal.
  • analog circuits are increasingly being replaced by digital arithmetic units, for example in the case of the DSPs, whereby the disadvantages mentioned in the DSPs have to be accepted.
  • the invention thus also includes a programmable, at least partially analog arithmetic unit (Reconfigurable Analog Processor, RAP) with functions expanded by logic elements, in such a way that the functional scope of a digital arithmetic unit is combined with the possibility of fast, analog calculation of complex functions (about the
  • a RAP consists of cells that are freely configurable in their function and networking and can be reconfigured during runtime. When a single cell is reconfigured at runtime, other cells are not affected in their work.
  • a cell is divided into an analog section and a logic section.
  • the analog section is used to process analog data based on operational amplifier circuits, as are known from FPAAs, FPMAs and FPADs.
  • the logic section controls the functions of the analog section during runtime, during initial configuration and during reconfiguration during runtime.
  • the analog section can also be controlled and configured analog.
  • each RAP cell has the possibility, independently of an analog or digital signal, that is to say with its own internal structures, to decide on a reconfiguration of itself, to initiate this reconfiguration and the necessary ones Obtain data from a suitable structure.
  • the invention describes, among other things, an analog, reconfigurable arithmetic unit (Reconfigurable Analog Processor, RAP) made up of individual functional cells that are connected to each other and to the outside world by a suitable bus system.
  • the function of the cells is configurable and can be reconfigured during operation so that the function of other cells that are not to be reconfigured is not impaired.
  • a functional cell contains an analog section and a logic section.
  • the analog section is used to process analog data based on operational amplifier circuits.
  • the logic section controls the functions of the analog section during runtime, during initial configuration and during reconfiguration during runtime.
  • the analog, reconfigurable arithmetic unit made up of individual functional cells that are connected to each other and to the outside world by a suitable bus system.
  • the function of the cells is configurable and can be reconfigured during operation so that the function of other cells that are not to be reconfigured is not impaired.
  • a functional cell contains an analog section and a logic section.
  • the analog section is used to process analog data based
  • Logic section the purely analog functions of the analog section by providing, for example, logic functions and / or digital counting functions and / or arithmetic and / or storage elements.
  • Each cell can be assigned one or more analog memories, which store analog variables such as input or output signals and can make them available for further processing.
  • each cell has one or more digital registers for storing digital data for the. Configuration and operation of the cell are necessary. For each cell there is the possibility, depending on an analog or digital signal, to decide independently, i.e. with its own internal structures, about a reconfiguration of its cells or other cells, which may have been grouped together, to initiate this reconfiguration and the necessary data from a suitable structure, which can be located on the block. There is also the possibility of tracing the analog result of the operation of a cell without access to a bus system to the cell's analog data input.
  • a signal is to be defined here as a quantity, for example a voltage U_0 (t), which prevails at a specific point in time at a specific point in a circuit. Such a point can be, for example, an output, an input or a bus line.
  • the voltage U_0 (t) can either be related to ground (GND) or to a second voltage U_l (t).
  • the signal can be temporal, constant or variable over time.
  • a signal is to be referred to here as a digital signal or digital signal if it only has two states, for example wise 0 or 1, can assume only two information in the sense of the definition of information used here.
  • a signal is to be referred to here as an analog signal or an analog signal if it can assume at least three and at most countably infinitely many states, that is to say contains more than two pieces of information in the sense of the definition of the information used here. This means in particular that more and more information can be transmitted simultaneously over one line using analog signals than with digital signals.
  • a cell is the smallest complete, independent functional unit of a RAP.
  • Two different types of cells are possible - the simple cell and "the extended cell. Both cell types can be used on a RAP. They differ in their range of functions. Both Common to cell types is the division of their structure into an analog section and a logic section.
  • Some or all of the cells can have one. Include clock multipliers for generating a local, higher clock limited to the cell, which supports, for example, the counting functions of the logic section of the cell. It is also conceivable that some or all of the cells have structures for generating a can contain cell-internal or locally limited cell clock, the frequency of which can be configured independently of the frequency of any bus clock. The cell clock can be activated and deactivated.
  • the simple cell (SCELL)
  • the elements of the simple cell are divided into two groups, called the analog section and the logic section.
  • Analog section is used for analog data processing of the analog input signals of a cell, but can also generate analog signals, such as (but not only) a square-wave signal or a triangular signal.
  • the logic section provides additional non-analog functions, in particular, for example, input data-dependent logic operations, comparisons and counting operations, memories and / or arithmetic operations and also controls the activity of the entire SCELL.
  • An element of the logic section is the control logic (CL). It controls the functions of the analog section and manages signals for the reconfiguration of the cell, which are received or sent via the bus systems.
  • the SCELL analog input stage is a state-of-the-art multiplexer (MUX0) for analog signals.
  • the analog signal to be processed is routed from an analog data bus system (ABUS) to the inputs of MUX0.
  • MUX0 controlled by the CL, selects the analog signal to be processed by the SCELL and connects it to the analog processing unit (APU, Analog Processing Unit).
  • the APU is a configurable unit according to the state of the art. It contains one or more operational amplifier device (s) whose function can be selected from a set of possible functions. The function is selected using a digital signal from the CL.
  • Functions of the APU can be, for example (but not only):
  • the analog signal to be processed is changed in accordance with the function programmed by the CL in the APU or is not changed (in the function of a voltage follower) or the APU is used the generation of a new analog signal.
  • the analog output of the APU is connected to a memory stage (BIPS).
  • the BIPS can be in one of several states programmable by the CL, for example in one of the following.
  • the output signal of the BIPS has the value that was at its input when the BIPS received a BUFFER signal from the CL.
  • the output value is kept constant as long as the BUFFER signal is present.
  • the output signal of the BIPS has the inverted value that was at its input when the BIPS received a BUFFER signal from the CL.
  • the output value is kept constant as long as the BUFFER signal is present.
  • INVERT The input signal of the BIPS is inverted.
  • 3STATE The output of the BIPS assumes a high impedance state.
  • the output of the BIPS is connected to the input of an analog de-multiplexer (DeMUX), the outputs of which are connected to the
  • ABUS bus lines are connected.
  • the CL controls which DeMUX output the processed analog signal is routed to.
  • - digital counters that can be set, triggered, queried, reset and stopped by the CL and / or the APU; these can be formed as coarse-grained logic elements; other coarse-grained logic and / or functional elements such as arithmetic, in particular ALU-like and / or storage elements can also be implemented.
  • the Extended Cell (ECELL)
  • the extended cell contains a complete, fully functional SCELL which has been expanded by additional elements and functions in order (in particular (but not only)) to be able to perform loop operations without access to the bus system.
  • the analog input stage has been expanded by a second, equivalent, analog multiplexer (MUX1) that accesses the ABUS.
  • MUX0 and MUX1 it is possible instead of (as with a SCELL) only. one input signal two input Release signals for subsequent processing in the cell.
  • MUXO and MUX1 each have an additional ' input which is connected to ground and an input to which the result signal from the output of the BIPS of ECELL is fed back.
  • the output of MUXO carries the analog signal selected by MUXO for processing, which can also be the constant ground level or the result signal from the output of the ECELL's BIPS.
  • the output of MUX1 carries the analog signal selected by MUX1 for processing, which can also be the constant ground level or the result signal from the output of the BIPS of ECELL.
  • the output signals from MUXO and MUX1 are routed to the following programmable memory stages (BUFFO, BUFFl).
  • BUFFO receives the output signal from MUXO
  • BUFFl receives the output signal from MUX1.
  • BUFFO and BUFFl are configurable units thanks to the CL, whose function can be selected from a set of possible functions. Possible functions of BUFFO and BUFFl are, for example
  • BUFNONINV The value of the output signal from BUFFO or BUFFl is equal to the analog input signal that was present when BUFFO or BUFFl received a BUFFER signal from the CL. The output value is kept constant as long as the BUFFER signal is present.
  • BUFINV The value of the output signal from BUFFO or BUFFl is equal to the analog input signal that was present when BUFFO or BUFFl received a BUFFER signal from the CL. The output value is kept constant as long as the BUFFER signal is present.
  • INVERT The current analog input signal from BUFFO or BUFFl is inverted.
  • the output signal from BUFFO and the output signal from BUFF1 are each fed to an analog input of the expanded analog processing unit XAPU of ECELL. All functions of the APU of a SCELL are contained in the XAPU of an ECELL.
  • the XAPU has two analog inputs, so that operations with two analog, temporally constant or temporally variable signals are possible in the XAPU, in particular the addition, subtraction, multiplication and division of two such signals. It is thus conceivable to program the XAPU using an analog, time-constant or time-variable control signal by assigning certain functions to certain values of the control signal. In addition, it is conceivable to use j an analog control signal from the APU to transmit a parameter necessary for performing a function.
  • f (t) is an analog time-varying (voltage) signal that is to be multiplied by a time-varying (voltage) signal g (t)
  • VGA Voltage Controll. ed amplifier
  • f (t) being at one analog input of the XAPU
  • g (t) is at the other analog input of the XAPU and representing the said control signal.
  • the output signal of the XAPU is fed to the input of the BIPS.
  • the BIPS of ECELL and ' the BIPS of SCELL can be the same.
  • the BIPS output signal is routed to the DeMUX input.
  • the DeMUX of the ECELL and the DeMUX of the SCELL can be the same.
  • the output signal of the BIPS is routed via a separate line to an input of MUXO and an input of MUX1.
  • the logic section may include a clock multiplication element which multiplies the DBUS clock and which may be programmable. This means that the ECELL can operate internally with a multiple of the DBUS cycle.
  • the analog section and the logic section of the cell are preferably structured and connected in such a way that when certain criteria occur, the cell can generate a signal, the RECONREQ signal, with which it can initiate its own reconfiguration or the reconfiguration of another or more other cells can.
  • the RECONREQ signal can be digital and forwarded via a separate digital bus system. However, it can also be analog and can be forwarded via a separate analog bus system.
  • an analog RECONREQ signal it is possible, in addition to the RECONREQ information, to transmit additional information, for example the address of the cell or cells to be reconfigured, simultaneously on only one bus line. Criteria that trigger a RECONREQ signal can, for example (but not only):
  • the signals mentioned in the list above can also originate from other cells or other elements of the RAP.
  • further criteria can be formed by logically linking (AND, OR, NAND, NOR, XOR etc.) the named criteria.
  • the logic section of ECELL contains structures suitable for the logical linking of criteria, e.g. for comparison of results, flags of an ALU such as the transfer of an arithmetic unit (carry etc)
  • the criteria for forming a RECONREQ signal are evaluated in the CL of the cell.
  • the CL of the cell generates a digital word (RECONREQ word) with the necessary RECONREQ information from these criteria.
  • This RECONREQ word can be passed on by the cell in digital or analog form.
  • Separate bus systems (RECONREQ bus), a digital bus and an analog bus are available for this.
  • the digital RECONREQ word is converted into analog form in a digital-to-analog converter (DAC).
  • DAC digital-to-analog converter
  • This structure can be, for example, a loading logic and a switching table as described in patent application DE196 54 846.2.
  • the loading logic is a structure which, after a RECONREQ signal, carries out the reconfiguration of the cell or cells in question.
  • Several cells are connected to a single LL via the RECONREQ bus. These cells form one with the associated LL. Cluster.
  • Each cell in a cluster can send a RECONREQ signal to its LL and thus request every cell in the same cluster to be reconfigured.
  • a building block can contain several clusters. The LLs of these clusters are connected to each other via a bus system and can therefore exchange information. Such information can in particular
  • Be addresses of umzukon 'figuring cells This makes it possible for any cell of the RAP to request any cell of the RAP for reconfiguration.
  • the LL can be structured according to PACT_SWT (cf. patent application cited) and can therefore process digital RECONREQ words directly.
  • the LL requires analog pre-stages, namely an analog selection stage (ASELSTAGE) and an analog-digital converter stage (ADC).
  • ASELSTAGE analog selection stage
  • ADC analog-digital converter stage
  • the job of ASELSTAGE is to check whether and on which analog RECONREQ bus a RECONREQ signal is present. If a RECONREQ signal is available on an analog RECONREQ bus, this bus is selected by the ASELSTAGE and switched to the ADC for further processing, which is the analog
  • the ASELSTAGE can be realized in different ways. One way is to use a multiplexer, another is to use an arbiter.
  • ASELSTAGE as a multiplexer.
  • the analog RECONREQ buses of the cells monitored by the LL are connected to the inputs of a clocked analog multiplexer according to the prior art. With each cycle, the multiplexer is switched on by one input, so that with each cycle a different bus on Output of the multiplexer is.
  • a comparator monitors the output of the multiplexer. If there is no analog RECONREQ signal at the output of the multiplexer, the output of the multiplexer has a certain level, for example 0 volts. If a RECONREQ signal is present, there is a different level at the output of the multiplexer, which causes the comparator to switch the RECONREQ signal to the subsequent ADC.
  • several comparators can be provided which compare the signal with different signal levels and thus directly effect an evaluation. This is particularly useful. if ... only a few signal levels can be distinguished.
  • ASELSTAGE as an arbiter.
  • the analog RECONREQ buses of the cells in a cluster are first routed to the inputs of an analog multiplexer (AMUX). If a RECONREQ signal is present on one of the analog RECONREQ buses, this bus is selected by the AMUX and the connected RECONREQ word is switched to the output of the AMUX.
  • AMUX analog multiplexer
  • a RAP preferably contains at least two independent, flexible bus systems for networking the individual cells and for connecting the RAP to the outside world.
  • the preferred bus systems can be configured and reconfigured during runtime without the RAP having to be interrupted.
  • the bus systems can be equipped with properties as described in patent application DE 197 04 742.4. A distinction is made here between the analog bus system and the digital bus system.
  • the analog bus system (ABUS)
  • the ABUS analog bus system is used to transmit the analog data and analog signals to be processed, already processed or newly generated from the outside to the cells and / or between the cells.
  • the ABUS it is possible with the ABUS to cascade cells in order to process an analog signal in several successive operations, with one cell being operated on. With each of its lines, the ABUS can transmit several, in particular more than two pieces of information simultaneously, for example 256 pieces of information.
  • the ABUS can be clocked at a fixed or variable frequency or can be asynchronous, i.e. not clocked.
  • the ABUS can be implemented in a manner as described in patent application DE 197 04 742.4.
  • the digital bus system (DBUS)
  • DBUS second bus system on the RAP
  • the DBUS is clocked and is used to distribute digital data, such as configuration data and status data, between the cells.
  • the logic section of each cell is connected to the DBUS.
  • the DBUS can be implemented in a manner as described in patent application DE 197 04 742.4.
  • FIG. Structure of a simple cell Figure B2 shows the structure of an expanded cell Figure B3 shows a possible way of realizing BUFFO or BUFFl
  • Figure B4 shows how, for example, the expression f (t) A g (t) can be calculated.
  • Figure 1 shows the structure of a simple cell (SCELL). It consists of the digital section (0101) and the analog section (0102).
  • the central element of the logic section is the control logic CL (0110), which uses the DBUS (0130) with other cells and additional structures .
  • CL control logic
  • CL DBUS
  • FIG. 1 shows the structure of a simple cell (SCELL). It consists of the digital section (0101) and the analog section (0102).
  • the central element of the logic section is the control logic CL (0110), which uses the DBUS (0130) with other cells and additional structures .
  • a charging logic and / or a switching table as described in patent application DE 196 54 846.2, and / or can communicate with the outside world.
  • the MUXO (0121) multiplexer is connected to the ABUS (0131). If an analog signal is to be processed by the SCELL, MUXO (0121), via the lines (0141) controlled by the control logic CL (0101) or another suitable structure, selects that line of the ABUS
  • the output of MUXO (0121) is connected to the analog processing unit APU (0120) via line 0146.
  • the signal selected by MUXO is processed if a signal has been selected, or the APU generates a signal, which can be a RECONREQ signal, or the APU remains in a predefined idle state.
  • the behavior of the APU is controlled by the CL (0101) via lines 0143. These lines (0143) can be bidirectional, so that the APU is able to send signals to the CL (0101) depending on certain events and criteria.
  • the criteria can be those that for example also lead to the generation of a RECONREQ signal.
  • a generated signal can in particular be a RECONREQ signal, as described in section cellreconfig ' .
  • the signal processed or generated by the APU is sent via line 0149 to a memory stage BIPS (0124), the function of which is controlled by the CL (0101).
  • the functions BUFNONINV, BUFINV, INVERT, PASS, 3STATE described in section scell are available.
  • the analog signal is taken over by a demultiplexer DeMUX (0125), which, controlled by the CL via line 0145 or another suitable structure, switches it to the ABUS 0131.
  • the logic section (0101) of the SCELL consists of the CL (0110) and the LOGUNIT (Olli), which are connected to each other via line 0140.
  • Figure 2 shows the structure of an expanded cell (ECELL). It is functionally divided into an analog section (0202) and a logic section (0201).
  • MUXO selects the first analog signal
  • MUXl selects the second analog signal. There are three options for the origin of the two analog signals to be processed.
  • the analog output signal from BUFFO (0223) is sent via line 0248 to the first analog input of the XAPU (0220).
  • the analog output signal from BUFFl (0224) is sent via line 0249 to the second analog input of the XAPU (0220).
  • the XAPU (0220) processes the two analog input signals into one analog output signal in accordance with the function programmed by the CL (0210) via line 0243, as described in section Ecell.
  • the output signal of the XAPU (0220) is transmitted via line 0250 to a further memory stage (BIPS, 0225).
  • BIPS further memory stage
  • the BIPS of the ECELL and the BIPS of the SCELL can be the same.
  • the function of the BIPS (0225) is controlled by the CL (0210) via line 0244.
  • the analog output signal of the BIPS is transmitted via line 0251 to the demultiplexer (DeMUX, 0226), which applies the signal to the ABUS (0231).
  • the DeMUX is controlled by the CL (0210).
  • the logic section (0201) of the ECELL consists of a complete logic section as can be found in a SCELL, i.e. the CL (0210) and the LOGUNIT (0211), which are connected to each other via the line (0240).
  • the logic section of the ECELL is also able to control and manage the XAPU (0120) with its extended range of functions compared to the APU of a SCELL. For example, enable logical operations such as NAND ' NOR, AND, OR, XOR. Input variables of such operations can be criteria that also lead to the formation of a RECONREQ signal, but also digital signals that are generated specifically for this purpose.
  • Figure 3 shows a possible way of realizing BUFFO or ⁇ BUFFl.
  • OP0 is an operational amplifier that is wired in such a way that it either inverts or loops through the analog signal at input IN.
  • the operating mode is selected by DeMUXO. If- on. S. control input NONINV INV is a logical 0, the input signal is looped through, if there is a logical 1 at the control input NONINV INV, the input signal is inverted.
  • DeMUX1 is used to decide whether the signal is buffered in capacitor C (BUFFER) or whether it is available without buffering at output OUT of OP1 (PASS). Buffering takes place when the control input BUFF PASS receives a logical 0. There is no intermediate storage if the control input BUFF PASS receives a logical 1.
  • FIG. 4 shows how, for example, the expression f (t) ⁇ g (t) can be calculated.
  • f (t) is logarithmized in the first cell, which means that the logarithm of f (t) to any, but fixed, base a is formed.
  • a SCELL that is configured as a logarithmizer can be used for this.
  • the result of this operation is multiplied by g (t) in the second cell.
  • An ECELL can be used for this purpose, which multiplies both signals in the manner of a voltage-controlled amplifier.
  • base a is raised to the power of the multiplication operation.
  • a SCELL can be used for this, which is configured as a delogarithmizer.
  • the result of the delogarithmic operation corresponds to the expression ([f (t)] A ⁇ g (t) ⁇ .
  • one or more converter stages can be provided.
  • Transducer units are easily adaptable to a particular purpose, for example to meet high-frequency applications or, in the case of low-frequency applications, to provide extreme low-noise or a very good signal-to-noise ratio.
  • the digital and analog elements are preferably mixed, in particular on one and the same IC.
  • a transition means can be provided in a mixed field by means of one or more ADCs and / or DACs and / or comparators. This is advantageous because, for example in software defined radio, the purely digital processing of the incoming high-frequency weak antenna signals is still problematic, although great freedom of choice is also desired with regard to analog signal processing and / or processing.
  • the invention further relates to devices and methods for improving the transfer of data within multidimensional arrangements of transmitters and receivers or cells. It should be mentioned that this is particularly relevant in critical applications such as software defined radio.
  • the cells of about multidimensional processor arrays can now perform different functions, such as e Bool specific linkages cause of input operands,
  • Connections run between them, which can also be set, typically buses, for example, which can create a network in various ways and thus set up a multidimensional field that can be set in its network.
  • the cells exchange information as required, such as status signals, Trigger or the data to be processed.
  • the cells are arranged in rows and columns in a two-dimensional processor array, with the outputs from cells of a first row leading to buses to which the inputs of the cells of the next row are to be coupled.
  • forward and backward registers are also provided in order to route data bypassing cells to bus systems of other rows, to balance branches to be executed in parallel, etc. It has also already been proposed to implement such and / or reverse registers with functionality that goes beyond pure data transfer.
  • a specific function In order to carry out a specific type of data processing, a specific function must be assigned to each cell and suitable networking must be provided. Before the multidimensional processor field processes data as desired, it has to be determined which cell is to perform which function, a function has to be defined for each cell involved in a data processing task and the networking has to be determined. It is desirable to choose the function and networking so that data processing can be carried out as quickly as possible. However, it is often not possible to find a configuration that optimally guarantees the desired data transfer. Suboptimal configurations must then be used.
  • the data processing cells have an aspect ratio that at least 1.5: 1, preferably 2: 1. This enables the preferred pipelining in the PAEs and / or the buses. It is preferred, but not mandatory, to provide separate pipelining in each PAE in particular, which enables cycle increases
  • the cells will in particular be PAE cells with EALU, as they are per se from the previously cited state of the Technology are known. Such cells, as preferred, will be cells that can be configured in a coarse-grained manner.
  • the data processing cells are arranged in rows and columns. This allows a particularly favorable design of the cells, which are typically approximately trapezoidal or rectangular. It can then be provided that at least some of the data processing cells have data inputs to receive data from an upper row and data outputs to output data to a lower row. .In . such a case, 'results in the improved connectivity in both rows.
  • the data processing units are EALUs, ALU and / or register-flanked cells, i.e. It is typically used to connect different rows in addition to the data processing and data without delay, i.e. For example, registers that forward as quickly as possible still have registers that are used to delay data during forwarding, be it to prevent or interrupt uncontrolled feedback loops (principle of the so-called annihilated feedback loop termination, so-called AFTER cells) ) or to force simultaneous synchronization in the event of data splitting through branches and subsequent reunification (balancing).
  • the specified minimum aspect ratio which is at least 1.5: 1, preferably assumes 15 larger values and, with careful design of the units, may well range between 5: 1 and 10: 1.
  • Figure C1 shows a processor array of the present invention
  • a processor field 1 generally designated 1, comprises a plurality of data processing cells 2 arranged adjacent to it and having inputs 3, the data from
  • Networking routes 4 an operand linking unit 5, which link them according to the respective function of their operand linking unit 5 and outputs 6 in order to give the data linked on networking routes 4, the data processing cells or their data through which operand combination unit 5 has an aspect ratio of length to width which is greater than 2: 1.
  • Processor field 1 in the present case is an arrangement which is per se known as an XPP; Alternatively, it can be arranged as an array of elements that can be partially reconfigured at runtime, for example as a processor, coprocessor, DSP, etc. In the case shown, the process field is made up of 3 rows and 4 columns, but only for reasons of
  • Clarity chosen comparatively small. It will typically be made larger.
  • the data processing cells 2 can be configured in a coarse granular manner and have finely granular state machines. They can be reconfigured in a manner known per se without disrupting operation. Attention is drawn to the possibility of central configuration specification realized here, but not to be explained in more detail, for example by a configuration manager, the wave configuration, etc.
  • the cells contain an ALU unit as an operand i linking unit 5, in the arithmetic unit
  • Operations such as addition, multiplication, subtraction and division can be carried out on up to three incoming operands, as well as links such as IS larger? Is smaller? Null? as well as XOR, OR, AND NAND etc.
  • the ALU unit is arranged in the center and flanked by a forward and a reverse register, which can also be connected to the network paths 4 in a manner known per se via the connections of the data processing cell 2.
  • the data inputs and outputs 3 and 6 are connected to the connection paths 4 via multiplexers. It is in the present case a bus system with a plurality of lines is provided in order to network the cells in the rows and columns in a configurable manner.
  • the aspect ratio of the ALU unit is now 6: 1 in the example shown, i.e. the cell is much longer than it is wide.
  • a program is first selected for execution on array 1.
  • a configuration is then determined by means known per se that permits an optimal data throughput. It is now taken into account here that data also on cells that are not immediately in the row below or to the side of a given cell, but e.g. three columns are laterally offset, can receive data within one processing cycle without major delays.
  • the configuration obtained taking this extended nearest neighbor definition into account is configured on the array and executed.
  • the present invention is concerned not only with the advantageous structure of a multidimeriisional field of reconfigurable elements as with reconfigurable processors, but also with methods for their operation, for example in such a way that a translation of a classical high-level language (PROGRAM) such as Pascal, C, C ++ , Java etc. on a reconfigurable architecture.
  • PROGRAM classical high-level language
  • a method for operating a multidimensional field of reconfigurable elements in which groups of data-handling elements are configured in a predetermined manner during the runtime for processing predetermined tasks in the field, and it is provided that for at least one task to be processed, a plurality of such element group arrangements are determined in the multidimensional field, which are suitable for processing the specified tasks, for processing the specified ones
  • a particularly suitable element group arrangement is selected from the plurality and the selected arrangement is configured into the field.
  • the invention thus proposes to predetermine a large number of arrangements or configurations during the preparation of the actual data processing and then to select those from the predetermined element group arrangements which are particularly well suited to the processing of the specified task with the field resources then given.
  • a significant improvement in the operation of a multidimensional field of reconfigurable elements is essentially given by a simple extension of the compiler with which the previously programmed codes are translated, namely by the fact that it not only determines a single configuration for a given task, but several such configurations and thus takes advantage of the fact that there is no clear solution to the problem of translating a piece of given high-language code onto a multidimensional field of reconfigurable elements.
  • compiler is used here for a means that determines confections, regardless of whether it is is a router part, a translator part or another part of a means for configuration determination based on program codes. This' agent may by fixed wiring, ie, be implemented in hardware or as a software program.
  • Reconfiguration data transmission takes time, it is provided that elements that are likely to be available soon are also taken into account when selecting the optimal geometry in each case. It can be exploited that it is often possible to predict that certain elements will soon be used for the reconfiguration becomes available, for example when it has received data for the further processing of cells that have already indicated its reconfigurability and the number of processing cycles still required, the downstream cells for this purpose are finite and can be estimated or known. According to the invention, such information can be managed as a reconfigurability prediction. It should be mentioned that the available and / or required elements also include bus connections, lines, etc.
  • Tasks are coordinated in time, prioritization, etc. This can in particular be part of an operating system, provided the multidimensional field of reconfigurable elements is designed as a processor or coprocessor.
  • CT computed to parallel processing
  • a scheduler for hyperthreading, multitasking, multithreading etc. should be mentioned. In this regard, reference is made to corresponding further parts of the present application. It should be mentioned that such units can be implemented in hardware and / or software.
  • configuration data is read from a memory that has non-negligible access times, or if, should real-time determination of a configuration be desired, it is generated with non-negligible generation times, it is desirable to first provide a characteristic data record that is compared to the actual configuration data record is reduced in size and then a selection can only be made on the basis of this characteristic data record.
  • a characteristic data record that is compared to the actual configuration data record is reduced in size and then a selection can only be made on the basis of this characteristic data record.
  • a characteristic data record that is compared to the actual configuration data record is reduced in size and then a selection can only be made on the basis of this characteristic data record.
  • a characteristic data record that is compared to the actual configuration data record is reduced in size and then a selection can only be made on the basis of this characteristic data record.
  • a characteristic data record that is compared to the actual configuration data record is reduced in size and then a selection can only be made on the basis of this characteristic data record.
  • Configurations to be loaded in advance into a main memory which allows very quick access, to make a quick selection based on the different configuration data sets and then to download the complete configuration data for the selected configuration from the slow memory. It should be pointed out that in such cases it is also possible to read in part of the configurations beforehand, for example if it is foreseeable that certain configurations are typically preferred, be it because statistical evaluations of the typical ones
  • the selection of a predefined element group arrangement that is to be configured into a field can, apart from the available geometry, also depend on other parameters. be made gig. These include the achievable processing speed, the priority of a task and / or the energy consumption that is required to process a given task in a given time. It should be noted that several parameters can be viewed at the same time, either by discarding configurations regarded as equivalent on the basis of a first parameter, such as the required field volume, by viewing a second parameter, for example by using unsharp logic methods , several parameters can be optimized at the same time as far as possible.
  • Fig. Dl a multidimensional field of data-handling elements in a partially reconfigurable state
  • Fig. D2 examples of different configuration geometries
  • Fig. D3 a processor partially reconfigured at runtime.
  • a data processing device 1 generally designated 1, comprises a multidimensional field of reconfigurable elements 2 and a preprocessor 3, which feeds configurations into the multidimensional field 1 via suitable data buses 4 and receives information about reconfigurable elements from the multidimensional field 2 and several elements a memory 5 with slow access, in which configurations for in tasks to be processed in the multidimensional field 2 are stored in advance.
  • the multidimensional processor 1 is an XPU architecture, the PAE as configurable
  • a keyboard, cameras that call up images, A / D converters, etc. can be provided for this purpose.
  • the multidimensional field 2 consists here only of a series of exclusively identical data-handling elements, between which suitable networks via buses and the like can be configured.
  • suitable networks via buses and the like can be configured.
  • bus resources are assumed in the present case, although the typical application of such resources and their resources is purely practical
  • the data-handling elements are suitable for processing the commands in sequence, as is known per se, that is to say that it is possible to build up sequencers over individual cells or groups of them. It should be mentioned that time division multiplexing is possible. This permits a corresponding folding of several operations, which can then also be carried out in the case of large arrays or more space.
  • the multidimensional field 2 can be reconfigured for the duration, that is to say it is possible to individually handle the data Assigned to elements or groups of those new objects during run-time, without the operation of which to interrupt overall arrangement or other elements or groups' as a whole.
  • configuration memories are assigned locally to the data-handling elements, just like registers, namely forward and backward registers, bus lines, fine-grained state machines for exchanging trigger signals with one another and with the preprocessor unit 3, etc.
  • the preprocessor 3 is designed to load configurations into the multidimensional field, specifically via lines 4, when it receives the message from the multidimensional field that individual elements or groups of these can be reconfigured.
  • the preprocessor 3 contains a local memory (cache) and is connected to a further memory 5 (hard disk, RAM), which can be accessed more slowly and on which configuration data are stored.
  • a CT is suitable, for example.
  • Configuration data and configuration requests are transmitted via lines 4. Attention is drawn to the implementation of Rdy / Ack protocols, 'pre-configuration of elements in element-related memories etc., which is possible but not mandatory.
  • This characteristic data record comprises a first digit which indicates how many columns are spaced between the outermost cells to the left and right of one another; then they follow after a comma Number of elements in a column that are needed. If rows are free in a column, ie not occupied, there is also a b in the identifier. If a column is left blank, that is, from the respective configuration except for buses, there is a b. in the configuration. This can be seen in configurations I and II. The data for one column is separated from that of the next column by a comma. Similar configuration data are also stored for a second configuration b).
  • the preprocessor 3 first loads from the memory 5 the labels which are not extensive and thus can be loaded quickly configurations. It then determines which task is to be processed quickly and which configurations can be loaded particularly well into the field. This is done by comparing the maximum column width of a possible configuration with the actually available column width. For task a), configuration III and IV can be discarded that require too many columns. Configurations I and II must also be discarded from the remaining ones due to their geometric shape. It is then examined which configuration of b) should be loaded. All three configurations can be loaded here per se.
  • the data processing can then be continued with a configuration arrangement as shown in FIG. 3. It should be mentioned that in cases where different data handling elements are provided, the corresponding information can also be stored in the characteristic data record.
  • the present invention thus proposes, in a first basic concept, a method for selecting one of a number of ways of achieving one
  • the selection of a path can include, for example, the selection of a given algorithm from a large number of different algorithms, be it for tasks such as sorting data, certain mathematical transformations or the like. If there are several sorting algorithms, algorithms for determining a Fourier transform or the like in a program module library, z. B. can be determined for each a characteristic quantity and then a selection is made taking into account the same. This makes it possible to choose algorithms that have particularly low energy consumption, for example. This can be for mobile applications like laptops,
  • a place & route algorithm can also use the optimization, for example to achieve low-energy arrangements. This is particularly preferred and is considered inventive in itself. It is also possible to provide a large number of different configurations for one and the same algorithm, for example taking into account different subtasks to be configured simultaneously and / or sequentially on the multidimensional field, and then to make a selection from these by evaluating the respectively assigned size.
  • a given data processing task or a subtask should be assigned to the multidimensional field of configurable data handling elements under consideration and / or another element for data processing outside the multidimensional field; For example, a decision can be made as to whether, if the multidimensional field serves as a coprocessor, a specific subtask should be better processed on a purely sequential CPU or the reconfigurable multidimensional field, which typically works as a data flow processor or the like. It is also possible to determine the need or the usefulness of dedicated circuits such as ASICs for certain tasks.
  • the field of configurable data handling elements will be a two-dimensional field. It should be mentioned that the invention can be used for fields such as FPGAs, XPP processors, etc. It is particularly preferred for partially reconfigurable processor fields for elements that can be configured at runtime, in particular partially not to be reconfigured at runtime without interference.
  • data handling elements to be taken into account are in particular at least some, preferably all, of the elements buses, registers, ALUs, RAMs, I / O ports and configurating units (CTs). It should be noted that some of these parts require only an estimated or partial consumption account; For example, only certain driver stages and the like need to be taken into account in buses.
  • the characteristic value is only roughly estimated, for example to determine whether a particular element is currently being used and / or configured, or whether it is not being used instead, and possibly even from a power supply to a wake -up circuit and / or at least largely disconnected from a clock supply. It is therefore not necessary to carry out an absolutely exact consumption identification, for example by specifying the consumption of the specific algebraic operation, which is currently and / or permanently assigned to a respective arithmetic-logic unit. Rather, it may be sufficient to determine the quantity that characterizes consumption only as to whether and to what extent the respective element is actually being used at the moment. Exceptions to this are possible.
  • the selection will typically not be made solely taking into account the consumption-characterizing quantities, but can also include other parameters, such as a required execution time, required resources in a multidimensional field, a current or expected processor load due to other tasks and / or a currently desired or expected or permissible power consumption ,
  • the key figures are available through measured values and / or hardware or synthesis analyzes and can be stored in particular in look-up tables.
  • the respective path can be selected before the actual data processing, for example when defining configurations to be loaded later among several configurations that can be implemented theoretically. In such a case, it is particularly preferred if the characteristic quantity is also determined during the simulation of the data processing functions. Alternatively, it can be provided that the selection from various possible paths during the run time is done. In such a case, several possible algorithms, e.g. For example, in order to sort data, it is then queried how much individual data is to be sorted and how the degree of order of this data is, and only then is a selection from different, 'predetermined algorithms parameterized on the basis of the parameters assigned to them Consumption indicator sizes such as the total power consumption etc. made. Similarly, a configuration at runtime depending on z. B. a current possible or desired current consumption.
  • a desired type of data processing is determined, which is to be carried out on the processor field. For example, a Viterbi algorithm is programmed. and a suitable one for the processor field under consideration
  • FREG and BREG Forward and reverse registers (FREG and BREG) and switches in buses (LSW and RSW).
  • the total energy consumption per element type is then determined and then the total energy consumption of all different units.
  • the energy consumption values for a single element per cycle are in turn estimated from simulations of the hardware Circuits in the architecture under consideration and are stored in a table for the method of the invention.
  • WO 00/49496 discloses a method for executing a computer program with a processor, which comprises a configurable functional unit which is capable of executing reconfigurable instructions, the effect of which can be redefined at runtime by loading a configuration program, the A method comprising the steps of selecting combinations of reconfigurable instructions, generating a respective configuration program for each combination, and executing the computer program. Each time an instruction from one of the combinations is used during execution and the configurable functional unit is not to be configured tion program is configured for this combination, the configuration program for all of the instructions of the combination can be loaded into the configurable functional unit.
  • a data processing device with a configurable functional unit serving to execute an instruction according to a configurable function.
  • the configurable functional unit has a plurality of independent configurable logic blocks for performing programmable logic operations to implement the configurable function.
  • Configurable connection circuits are provided between the configurable logic blocks and both the inputs and the outputs of the configurable functional unit. This allows the distribution of logic functions to be optimized via the configurable logic blocks.
  • the conventional arrangements are used, among other things, to process functions in the configurable data processing logic cell field, DFP, FPGA or the like, which cannot be processed efficiently on the CPU's own ALU.
  • the configurable data processing logic cell array is thus practically used to enable user-defined opcodes that enable algorithms to be processed more efficiently than would be possible on the ALU arithmetic unit of the CPU without configurable data processing logic cell array support.
  • the coupling is therefore usually word-based, but not block-based, as would be necessary for the data flow processing.
  • logic cell fields consisting of coarse and / or fine-grained logic cells and logic cell elements consists in a very loose coupling of such a field to a conventional CPU and / or a CPU core in embedded systems.
  • a conventional, sequential program can run on a CPU or the like, for example a program written in C, C ++ or the like, from which calls of data stream processing on the fine and / or grossly granular data processing logic cell field instantiate become.
  • the problem then is that when programming for this logic cell field, a program that is not written in C or another sequential high-level language must be provided for the data stream processing.
  • PACT04 (DE 196 54 846.2-53, WO 98/29952), PACT08, (DE) within a data processing logic cell array arrangement such as is found in particular in PACT02 (DE 196 51 075.9-53, WO 98/26356), PACT04 (DE 196 54 846.2-53, WO 98/29952) 197 04 728.9, WO 98/35299)
  • PACT13 (DE 199 26 538.0, WO 00/77652)
  • PACT31 (DE 102 12 621.6-53, PCT / EP 02/10572) is known to also provide sequential data processing within the data processing logic cell field , In this case, however, partial execution is achieved within a single configuration, for example in order to save resources, achieve time optimization and so on, without this already leading to a programmer being able to easily and automatically convert a piece of high-level language code to a data processing logic cell field , as is the case with conventional machine models for sequential processors.
  • Time usage planning control means and methods are therefore known per se from the state of the art, which, at least under corresponding
  • time-use planning control means which were used in the prior art for configuration and / or configuration management, for the purposes of scheduling tasks, threads, multithreads and hyperthreads is regarded as inventive per se. It is also desirable, at least in accordance with a partial aspect, in preferred variants to be able to support modern data processing and program processing technologies such as multitasking, multithreading, hyperthreading, at least in preferred variants of a semiconductor architecture.
  • a further essential aspect of the present invention can thus be seen in the fact that data are supplied to the data processing logic cell field in response to the execution of a loading configuration by the data processing logic cell field and / or data from this data processing logic cell field are written away (STORE) by a STORE- Configuration is processed accordingly.
  • These loading and / or storage configurations are preferably designed in such a way that addresses are generated directly or indirectly within the data processing logic cell field and / or another unit such as a RISC architecture, which addresses are accessed directly and indirectly for loading and / or storage should.
  • This configuration of address generators within a configuration makes it possible to load a large amount of data into the data processing logic cell field, where they can be stored in internal memories (iRAM) and / or where they can be stored in internal cells such as EALUs with registers and / or the like can be filed.
  • the loading or storage configuration thus enables a block-wise and almost data stream-like, - in particular comparatively fast, loading of data, and a loading configuration of this type can actually be carried out before one or more
  • Loading can take place in particular from and into a cache.
  • This has the advantages that the external communication with larger memory banks is handled via the cache controller, without separate switching arrangements having to be provided within the data processing logic cell field so that the access in a read or write manner with cache memory means is typically very fast and at most low latency and that a CPU unit, typically there via a separate LOAD / STORE unit, is also connected to this cache, so that data can be accessed and exchanged between the CPU core and the data processing logic unit.
  • lenfeld can be done block by block quickly and in such a way that a separate command, for example from the OpCode fetcher of the CPU, does not have to be fetched and processed for each transfer of data.
  • This cache coupling also proves to be considerably cheaper than coupling a data processing logic cell field to the ALU via registers if these registers only communicate with a cache via a LOAD / STORE unit, as was quoted from the non-PACT-specific ones Writings are known per se.
  • a further data connection can be provided to the load / store unit of the or a sequential CPU unit assigned to the data processing logic cell field and / or to its register.
  • Data processing logic cell arrangement can take place and / or by one or more multiplexers downstream of a single port.
  • the logic cells of the field ALUs or EALUs can include and become typical of those on the input and / or output side, in particular both at the input - As well as short, finely granularly configurable, FPGA-like circuits on the output side, in order to cut out four-bit blocks from a continuous data stream, as required for MPEG-4 decoding.
  • this is advantageous if a data stream is to get into the line and is to be subjected to a kind of preprocessing there without blocking larger PAE units.
  • the ALU as SIMD
  • Arithmetic unit is designed, in which case a very wide data input word of, for example, 32-bit data width is split up into several parallel data words by the upstream, for example, FPGA-like strips. For example, 4-bit width, which can then be processed in parallel in the SIMD arithmetic units, which can significantly increase the overall performance of the system if the corresponding application is required. It should be pointed out that there was talk of FPGA-like upstream or downstream structures above. With FPGA-like, however, what is explicitly mentioned does not necessarily refer to 1-bit granular arrangements. It is particularly possible instead of this to provide hyper-fine-granular structures only of finer granular structures, for example 4 bits wide.
  • the FPGA-type input and / or output structures before and / or after a Removing particular as SIMD arithmetic unit designed ALU unit are configurable to always 4 bits wide wört 'he supplied and / or processed. It is possible to provide cascading here so that, for example, the incoming 32-bit wide data words flow into 4 separated or separating 8-bit FPGA-like structures arranged side by side, these 4 pieces of 8-bit wide FPGA-like structures a second one Stripe with 8 pieces of 4-bit wide FPGA-like structures is added, and if necessary after another such strip, if this is considered necessary for the respective purpose, for example 16 pieces of 2-bit wide FPGA-like structures arranged next to one another in parallel be provided.
  • the coupling advantages described above for data block streams can in principle be achieved via the cache; However, it is particularly preferred if the cache is built up in strips (slice-like) and then access to several of the slices can take place simultaneously, in particular to all slices simultaneously. This is advantageous when, as will be discussed, on the data processing logic cell array (XPP) and / or the sequence target CPU and / or the sequential CPUs, a large number of threads are to be processed, be it by means of hyperthreading, multitasking and / or multithreading.
  • Cache memory means with disk access or disk access enabling control means are therefore preferably provided. It can e.g. B. ' each thread can be assigned its own slice. This enables you to later ensure, when the threads are processed, that the relevant cache areas are accessed when the command group to be processed with the thread is resumed.
  • the cache does not necessarily have to be divided into slices and that if this is the case, each slice does not necessarily have to be assigned to a separate thread. However, it should be noted that this is by far the preferred method. It should also be pointed out that there may be cases in which not all cache areas are used simultaneously or temporarily at a given time. Rather, it is to be expected that in typical data processing applications, such as will occur in hand-held mobile telephones (cell phones), laptops, cameras and so on, there will often be times when the entire cache is not required. It is therefore particularly preferred if individual cache areas can be separated from the power supply in such a way that their energy consumption drops significantly, in particular to or near zero.
  • a slice-wise design of the cache this can be done by slice-wise deactivation of the cache using suitable power disconnection means.
  • the separation can take place either via a clocking down, clock separation or a power separation.
  • a single cache disk or the like can be Assignment, which is designed to recognize whether a respective cache area or a respective cache disk currently has a thread, hyperthread or task assigned to it, by which it is used. If it is then determined by the access recognition means that this is not the case, it will typically be possible to separate the clock and / or even the power. It should be noted that when you turn the power of the cache area is possible after a severing an immediate recovery response, so no significant delay is expected by the switching on and off the power supply to ⁇ if Major appropriate semiconductor technologies implementation in hardware is.
  • Another particular advantage that results from the present invention is that although there is a particularly efficient coupling with regard to the transfer of data or operands in a block-by-block form, balancing is nevertheless not necessary in this way that the exact same processing time in sequential CPU and XPP 'is kauslo- or gikzellenfeld required. Rather, the processing takes place in a practically often independent manner, in particular in such a way that the sequential CPU and the data processing logic cell array arrangement can be considered as separate resources for a scheduler or the like. This allows an immediate implementation of known data processing program splitting technologies such as multitasking, multithreading and hyperthreading. The.
  • the resulting advantage that path balancing is not required means that, for example, any number of pipeline stages can be run through in the sequential CPU.
  • Another advantage of the present invention is that by configuring a load configuration or a store configuration in the XPP or other data processing logic cell fields, the data can be loaded into or written to the field at a speed that is no longer determined by the clock speed of the CPU, the speed at which the OpCode fetcher works, or the like.
  • the sequence control of the sequential CPU is no longer a bottleneck-like limitation for the data throughput of the data cell logic field without there being only a loose coupling.
  • CT or CM; configuration manager or configuration table
  • CM configuration manager or configuration table
  • Data processing logic cell array such as an XPP receives configurations from the opcode fetcher of a sequential CPU via the coprocessor interface. This means that the sequential CPU and / or another XPP can initiate a call that leads to data processing on the XPP.
  • the XPP is then z. B. about the described Cache coupling and / or by means of LOAD and / or STORE configurations, which provide address generators for loading and / or writing away data in the XPP or data processing logic cell field, are kept in the data exchange.
  • LOAD and / or STORE configurations which provide address generators for loading and / or writing away data in the XPP or data processing logic cell field
  • the coprocessor coupling that is to say the coupling of the data processing logic cell array
  • the scheduling for this logic cell array will also take place on the sequential CPU or on a higher-level scheduler unit or a corresponding scheduler means.
  • the threading control and management practically takes place on the scheduler or the sequential CPU.
  • the data processing logic cell array can be used by calling it up in a conventional manner, such as with a standard coprocessor, for example with 8086/8087 combinations.
  • CT configuration manager
  • Data processing logic cell array memory especially internal memory, especially in the XPP architecture, such as it is known from the various prior applications and from the applicant's publications to address RAM-PAEs or other appropriately managed or internal memories like a vector register, ie to store the data quantities loaded via the LOAD configuration in vector-like manner in the internal memories as in vector registers, after reconfiguration of the XPP or the data processing logic cell field, that is to say overwriting or reloading and / or activation of a new configuration which carries out the actual processing of the data (in this connection it should be pointed out that reference can also be made to such a processing configuration) to access a plurality of configurations, which are to be processed, for example, in wave mode and / or sequentially one after the other) as in the case of a vector register and then in turn manage the results and / or intermediate results obtained in this way into the internal memory or via the XPP like internal memory external storage, to store these results there.
  • Reconfiguring the processing configuration by loading the STORE configuration in a suitable manner, which in turn happens in data stream fashion, be it via the I / O port directly into external memory areas and / or, as particularly preferred, into cache memory areas, to which then at a later point in time, the sequential CPU and / or other configurations can access the XPP that previously generated the data or another corresponding data processing unit.
  • a particularly preferred variant consists, at least for certain data processing results and / or intermediate Results as memory or vector register means, in which or the data obtained are to be stored, not to use an internal memory, in which data via a STORE configuration in the cache or another area on which the sequential CPU or another data processing unit can access, are to be written away, but instead write the results directly into appropriate, in particular access-reserved cache areas, which can be organized in particular slice-like.
  • This may have the disadvantage of greater latency, particularly if the paths between the XPP or data processing logic cell array unit and the cache are so long that the signal propagation times are significant, but may result in no further STORE configuration being required.
  • Data processing logic cell field are determined to be kept low, while the latency when accessing the serving then only as a "quasi-cache ⁇ storage area by other units not or does not fall significantly significant.
  • a configuration is also possible in such a way that the cache controller of a conventional sequential CPU addresses a memory area as a cache, which, without serving for data exchange with the data processing logic cell array, physically on and / or in the latter lies. This has the advantage that if applications are running on the data processing logic cell field which have a small local memory requirement at most and / or if only a few further configurations are required in relation to the available memory quantities, these are used as one or more sequential CPUs Cache can be available.
  • the cache controller can and will be designed for the management of a cache area with a dynamic scope, ie with a varying size. Dynamic cache scope management or cache
  • Scope management means for dynamic cache management will typically consider the workload on the sequential CPU and / or data processing logic cell array. In other words, it can be analyzed, for example, how many NOPs are present on the sequential CPU in a given time unit and / or how many configurations in the XPP
  • the dynamic cache size disclosed hereby is particularly preferably runtime dynamic, i. H .
  • the chace controller manages a current cache size, which can change from cycle to cycle or cycle group.
  • the access management of an XPP or data processing logic cell array with access as internal memory as with a vector register and as a cache-like memory for external access which increases the memory access. handles have already been described in DE 196 54 595 and PCT / DE 97/03013 (PACT03).
  • the cited documents are hereby incorporated in their entirety by reference for disclosure purposes.
  • CT or CM configuration management unit
  • CM configuration management unit
  • the administration of configurations is known per se from the various property rights of the applicant, which are referred to for disclosure purposes, and from his other publications. It should now be explicitly pointed out that such units and their mode of operation, with which configurations which are currently not yet required can be preloaded, in particular independently of connections to sequential CPUs etc., can also be used very well in order to operate in multitasking mode and / or in hyperthreading and / or multithreading to effect a thread and / or hyperthread change.
  • hyperthreading management hardware When used with a purely sequential CPU and / or several purely sequential CPUs, hyperthreading management hardware is thus implemented by the connection of a configuration manager.
  • PACT10 DE 198 07 872.2, WO 99/44147, WO 99/44120.
  • PUs can be implemented using the known techniques, as are known in particular from PACT31 (DE 102 12 621.6-53, PCT / EP 02/10572), in which one or more are located within an array Sequential CPUs are constructed using one or more memory areas in particular in the data processing logic cell field for the construction of the sequential CPU, in particular as a command and / or data register.
  • Thread and / or hyperthread changes can be carried out using the known CT technology in such a way and preferably will also take place that performance slices and / or time slices are assigned by a CT known per se, software-implemented operating system scheduler or the like, during which time slices are determined which tasks or threads subsequently assume which parts per se assumes that resources are free to be processed.
  • an address sequence is to be generated for a first task, according to which , during the execution of a LOAD configuration, data are loaded from a cache memory to which a data processing logic cell array is coupled in the manner described
  • the processing of a second the actual data processing configuration, can be started, which can also be preloaded, since it is certain that this configuration, unless interrupts or the like force a complete task change, must be carried out
  • processors are now aware of the problem of the so-called cache miss, in which the data is requested but is not available in the cache for load access, which occurs in a coupling
  • a change can preferably be made to another thread, hyperthread and / or task, which in particular has been previously carried out by the operating system scheduler, in particular software-implemented, and / or by another hardware and / or software-implemented, correspondingly acting unit for a next possible one Execution was determined and accordingly preferably in advance in one of the
  • latencies are when they occur because e.g. B. Configurations have not yet been configured, data has not yet been loaded and / or data has not yet been written off, bridged and / or hidden by
  • Threads, hyperthreads and / or tasks are carried out which are already preconfigured and which work with data which are already available or which can be written off to resources which are already available for the write-off. That way
  • Latency is largely covered and, assuming a sufficient number of threads, hyperthreads and / or tasks to be executed per se, a practically 100% utilization of the data processing logic cell field is achieved.
  • a task change in such real-time capable systems will typically be possible in three ways, namely either when a task has run for a certain time (watchdog principle), when a resource is not available, be it because it is blocked by others Access or due to latencies when accessing it, in particular in a writing and / or reading manner, that is to say in the event of latencies in data access and / or when interrupts occur.
  • a first variant is that within a resource that can be addressed by the scheduler or the CT. There is a change to the processing of an interrupt, for example. If the response times to interrupts or other requirements are so long that a configuration can still be processed without interruption during this time, this is not critical, especially during the processing of the currently running configuration on the resource that has to be changed to process the interrupt , a configuration for interrupt processing can be preloaded.
  • the selection of the interrupt processing configuration to be preloaded is e.g. B. by CT. It is possible to run the configuration runtime on the one to be released or changed for interrupt processing Limit resource. Please refer to PACT29 / PCT (PCT / DE03 / 000942).
  • a single resource ie • examples game as to reserve a separate XPP unit and / or parts of an XPP field for such processing. If an interrupt to be processed quickly occurs, • either a configuration that has been preloaded for particularly critical interrupts can be processed or loading of an interrupt handling configuration into the reserved resource is started immediately. A selection of the configuration required for the corresponding interrupt is possible by means of appropriate triggering, wave processing, etc.
  • a further, particularly preferred variant of the response to interrupts if at least one of the accessible resources is a sequential CPU, consists in executing an interrupt routine on it, in which code for the data processing logic cell field is again prohibited.
  • an interrupt routine is only processed on a sequential CPU without XPP data processing steps being called. This guarantees that the processing operation on the data processing logic cell field cannot be interrupted and further processing can then take place on this data processing logic cell field after a task switch.
  • the actual interrupt routine does not have an XPP code, it can nevertheless be ensured that an interrupt at a later, no longer real-time point in time with the XPP leads to a state detected by an interrupt and / or a real-time request and / or Data can be responded using the data processing logic cell array.
  • bus systems for reconfigurable processors in which a dynamic bus structure can take place. It should be mentioned that it is possible in particular to mix bus systems, namely the known, so-called “global” buses which can be dynamically set up and buses which cannot be set up dynamically. This also applies to the bus systems and methods disclosed below, ie the bus systems and connection set-up methods described must be are not the only bus systems or methods to be provided in a field of elements to be connected.
  • the present invention thus proposes in a further basic concept a method for dynamically establishing a connection between a transmitter and a receiver via one.
  • Numerous possible routes that progress from station to station in which it is provided that, starting from a unit that causes the bus structure (transmitter and / or receiver), a request is sent to the nearest stations that are ready for the bus structure, these stations a code number, here meaning, parameter, is assigned, starting from at least a plurality, preferably each free station, to which a code number has been assigned, a request to the nearest stations for the availability of the stations for a bus structure is sent, the available stations a further code number is assigned, and this continues until the desired end of the bus is reached.
  • a code number here meaning, parameter
  • Another essential aspect of the present invention thus exploits the knowledge that buses can be built without problems by the fact that they are closest
  • Transmission stations on the way of a possible bus inquiries are sent as to whether these stations are for the bus setup are available and then, starting from the available stations, these nearest stations are addressed in a further step, the response number being recorded by the code number assignment in order to enable the bus structure to be traced back on the basis thereof. It is possible that not every station addressed and recognized as a free station proceeds when the bus is set up, because, for example, an evaluation in the station of a desired destination shows that the bus set-up has moved in the wrong direction, but everyone prefers it The free station to which a code number has been assigned tries to continue to set up the bus by also addressing the neighboring stations of the station addressed first.
  • a code number is regularly assigned to each station that has been addressed. This is advantageous in order to determine that the station has already been addressed and is therefore no longer supposed to be available when it is addressed from another direction. This prevents a signal from spreading after the neighboring stations have already been released as not required.
  • the parameter is changed from station to station in such a way that the route chosen when the bus is set up can be traced, in particular by way of backtracing. This backtracing can be achieved by incrementing or decrementing one at the target
  • cyclic counting can also take place, i. H. Counting in a cyclic number range, in which a lower value is repeatedly started after the highest possible value has been exceeded (e.g. 1, 2, 3, 4; 1, 2, 3, 4; 1, 2-, 3 , 4; or 1, 2, 3, 4, 5; '1, 2, 3, 4, 5; 1, 2, 3, 4, 5;).
  • a cyclical counting of at least three different count values is then preferred in order to characterize the station in order to ensure a correct tracing of the path.
  • the method described will identify this bus to be set up, if a bus structure between transmitter and receiver is possible at all.
  • the bus structure but a plurality of unnecessary stations are addressed and if possible it is preferable to release it again, after construction of the bus or to the signaling between transmitter and receiver, that 'a bus path constructed wur- de.
  • the characteristic values can be reversed .
  • the station in front of it is addressed and it is ensured that the stations addressed by this station that are different and therefore not located on the bus (back) are released for external use.
  • everyone is speaking stations that have been released for further use in other bus routes have in turn progressed to all other stations that are not required and that were previously addressed. This ensures that all stations that were previously addressed for the bus setup are now available again.
  • a signal can be sent along all stations that are required for the bus route, which tells the bus stations that they are involved in the bus route.
  • Such information can in turn be sent backwards by means of back-tracing, for example by evaluating the code numbers that were assigned to the stations during the setup phase.
  • a global release can then be carried out, for example by starting from the starting station or a central control instance by resetting all stations that are not currently used on existing buses or by releasing them for the establishment of a bus route.
  • a bus can also be released under certain conditions, such as after a fixed time period. This type of release, however, can prevent buses that could be built per se from being set up; In the case of very large processor fields, it is conceivable that the distances become extremely long because various cell group arrangements that are dynamically configured into the field during operation have to be meandered or through such configurations, which is what large fields can take a long time. Concern is therefore preferable for it to be taken that a sufficient time to build a bus remains'.
  • the other stations are released, for example by back-tracing after reaching the target station.
  • This bus participation signal which is sent backwards, can take place on the basis of the numerical values which are assigned to the neighboring stations. It should also be noted that it is also possible that the station only remembers from which direction it was addressed. In such a case, traceability can take place very quickly at the neighboring stations without comparing which key figure values they have. Furthermore, if the station records which neighboring stations were still addressed when the bus was set up, it can be ensured that tracing the stations not involved in the established bus are released.
  • the code number to be assigned to a station when it is addressed can therefore also be a code number which indicates the direction from which the station was addressed.
  • a second bus between e.g. B. enable a second transmitter and a second receiver; one of the transmitters and / or one of the receivers can also be identical. Addressing two receivers from one and the same transmitter can be useful if, for example, a calculation result is required as an input for two different branches of a program that are configured in different areas.
  • Addressing a single receiver from several transmitters may be desirable if two operands, which are to be obtained from different configuration areas, are to be linked there, and addressing one receiver via one and the same transmitter may be required if operands, the too different lent times were obtained or determined, should be linked to one and the same recipient, for example in the form a n xa n - ⁇ . It can then be ensured via registers in the bus that such a link would be possible after two bus systems have been set up, even if this would typically be less preferred than local buffering of operands and the like for reasons of energy consumption in the bus system.
  • the further or next to be built bus can be set up, for example, by sending a signal with the station release signal after a station has been provisionally reserved, indicating which bus the station belonged to, which bus can in turn be identified by a prioritization signal. If a releasing station is then adjacent to a station that would like to set up a bus itself that has a slightly lower prioritization, this can be determined there and the next bus set-up can then be initiated from this station. Alternatively, if all stations that are not currently required on a bus structure are released globally and / or thereafter, a global signal can be sent, for example from a central control entity, which tells the field which bus connection is to be established next or which priority the next bus connection to be established.
  • bus configuration management information of this type can also in particular centrally and / or locally in several places, for example in hierarchically arranged processor fields in which a bus structure is desired within a certain area Bus requesting station such as a transmitter that must reach its receiver.
  • Bus requesting station such as a transmitter that must reach its receiver.
  • Which type of station release and / or the notification that a further bus can be set up is actually implemented will depend in particular on how quickly the relevant information can be propagated via the array and / or which bus set-up frequency is expected over time.
  • bus connections in the horizontal and vertical directions for example, if the bus connections in the vertical direction additionally include registers through which the data are to be routed, while along the vertical direction there are bus connections that transmit data with lower energy losses (a An example of such an architecture is the applicant's XPP 128), which is provided when the bus is set up The number of steps taken horizontally and vertically is noted.
  • This information can be stored in a station or on a header that is also transmitted with the bus structure request signal; Such information is then evaluated for bus selection. Alternatively, it can be queried at each station, for example, how many buses already exist in the vicinity of the station, for example in order to enable an approximately uniform bus connection density to be obtained across the array. On the one hand, this procedure is advantageous because the data transport along the buses results in increased energy consumption due to the necessary reloading of the bus line capacities, the drivers to be integrated in the buses, which is why the bus distribution density is evened out over the processor field in order to equalize the thermal
  • the clock rate can possibly be increased overall with the same cooling, which is advantageous in the field of mobile processors for laptops, cell phones and the like.
  • equalizing the bus connection density is also advantageous for increasing capacity utilization and conserving resources.
  • Multidimensional field of reconfigurable elements can refer to coarse-granular reconfigurable elements with elements such as ALUs, extended ALUs, RAMPAEs, etc., as mentioned above, and that in the sense of the invention a multidimensionality not only through the spatial stacking and juxtaposition of reconfigurable elements can be obtained, but also by a certain way of connection.
  • the elements in FIG. 5 are assigned two closest neighbors in the middle, in two-dimensional fields such as typically four nearest neighbors in tiling, and in a three-dimensional arrangement typically six nearest neighbors, as is the case with the stacking of cubes and the like can be recognized.
  • FIG. El shows a multidimensional field of communicating reconfigurable elements, which are designed for the bus structure, before the start of the bus structure;
  • FIG. E2 shows the field from FIG. 1 after the first bus setup step;
  • FIG. E3 shows the field from FIG. 1 after the second bus setup step;
  • FIG. E4 shows the field from FIG. 1 after the receiver field has been reached with different, possible bus connections;
  • Fig. E5 the arrangement with the selected bus.
  • panel 1 comprises a plurality of reconfigurable cells that can communicate via self-assembling buses together.
  • Each cell la, lb, lc etc. to be involved in the bus structure has internal logic elements that make it possible to store information about whether the cell is currently being used by a bus (cells marked with an X in field 1) whether the cell has already been addressed as a possible bus cell with a current bus structure, and, if so, in how many vertical and horizontal steps the bus structure was carried out to the cell, how many steps were covered during the bus structure or whether the cell is still completely free and has not yet been addressed.
  • two memory areas are provided in each cell, which are denoted by H and V in the figures.
  • a memory area for the total number of steps performed can be stored, as represented by the large numbers 1-12 in FIGS. 1-5.
  • the selected maximum number 12 is only an example, since in the selected example of low complexity this is the number of steps required to reach the receiver, starting from the selected transmitter.
  • the cells are further designed to do so when they receive a bus setup request signal and are free. are at one participate in the bus to be set up, and at the same time send a request to neighboring stations in a subsequent step as to whether these neighboring stations are also free to set up the bus. For this purpose, they have signal transmission and reception connection circuits for the nearest neighbors.
  • the individual cell is further designed such that, together with the bus structure request signal, information relating to the total step size already covered and the number of horizontal and vertical substeps (H and V) can be transmitted to the 10 stations addressed.
  • the bus is set up as follows: First, the dynamically configurable array is operated in such a way that all the buses are set up. Then like it
  • neighbors i.e. those cells that border on the cell edges, in the example shown four cells. These cells find that they are free, that they are the are first stations that receive bus setup request signals, and that they are each one step horizontally or vertically, respectively, from the transmitting cell. It will be 0 or 1 stored in the neighbor cells corresponding to the H and V a memory area, and it is stored a 1 'eiten employer in the Stepwise of the requested cell.
  • each previously addressed free cell in turn addresses its own neighboring cells and asks if they are available for the bus setup.
  • Corresponding notes on the horizontal or vertical step size are also stored in corresponding memory areas.
  • the cells already marked with X on the other hand, ignore the bus setup request signal, as is the case in the 4th cell from the left, 2nd row from below.

Abstract

Die Erfindung betrifft ein Verfahren zur Auswahl eines aus einer Vielzahl von Wegen zur Erzielung eines Datenverarbeitungsergebnisses bei der Datenverarbeitung unter zumindest möglicher Verwendung multidimensionaler Felder konfigurierbarer Datenhandhabungselemente. Hierbei ist vorgesehen, dass den Datenhandhabungselementen konfigurationsabhängig leistungsaufnahmebezogene kennzeichnende Grössen zugeordnet werden und eine Wegauswahl unter Zuordnungsbewertung erfolgt.

Description

Titel: Verfahren und Vorrichtung zur Datenverarbeitung
Beschreibung
Die Erfindung betrifft das oberbegrifflich Beanspruchte und befaßt sich somit mit Verbesserungen bei multidi ensionalen Feldern aus datenverarbeitenden Zellen zur Datenverarbeitung.
Es sind bereits multidimensionale Felder- aus datenverarbeitenden Zellen bekannt. Zur Gattung dieser Bausteine zählen insbesondere systolische Arrays, neuronale Netze, Mehrprozessor Systeme> Prozessoren mit mehreren Rechenwerken und/oder logischen Zellen und/oder kommunikati-ven/peripheren Zellen (10), Vernetzungs- und Netzwerkbauste.ine wie z.B. Crossbar- Schalter, ebenso wie bekannte Bausteine der Gattung FPGA, DPGA, Chameleon, XPUTER, etc.. Es sind insbesondere Bausteine bekannt, bei denen erste Zellen während der Laufzeit ohne Störung des Betriebes weiterer Zellen umkonfigurierbar sind, i vgl. etwa 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/01869, DE 100 36 627.9-33, DE 100 28 397.7-, DE 101 10 530.4, DE 101 11 014.6, PCT/EP 00/10516, EP 01 102 674.7. Diese sind hiermit zu Offenbarungszwecken vollumfänglich eingegliedert.
Die dergestalt aufgebauten Bausteine weisen eine hohe Leistungsfähigkeit auf; allerdings ist deren Einsatz aufgrund der hohen Kosten oftmals prohibitiv. Wo Kosten bei hohen
BESTATIGUNGSKOPIE Stückzahlen besonders relevant sind, ist es daher derzeit üblich, dedizierte Logikschaltungen in Form von ASICS und dergl. vorzusehen. Diese haben jedoch das Problem, besonders hohe Entwicklungskosten mit sich zu bringen, da sowohl der Entwurf der Schaltung als auch die Herstellung der Vielzahl von Masken teuer ist.
Die Aufgabe der vorliegenden Erfindung besteht darin, Neues für die gewerbliche Anwendung bereitzustellen.
Die Lösung dieser Aufgabe wird in unabhängiger Form beansprucht. Bevorzugte Ausführungsformen finden sich in den Unteransprüchen.
Gemäß einem ersten Aspekt der vorliegenden ERfindung wird somit vorgeschlagen, daß bei einer Datenverarbeitungsanordnung mit einem multidimensionalen Feld in Funktion und/oder Vernetzung konfigurierbarer Zellelemente und diesen zugeordneten Konfigurationsvorhalte-mitteln zum lokalen Konfigurations- Vorhalten, vorgesehen ist, daß die Konfigurationsvorhaltemittel dazu ausgebildet sind, zumindest einen Teil der vorgehaltenen Konfigurationen, nichtflüchtig vorzuhalten..
Es wird demnach vorgeschlagen, die Leistungsfähigkeit der multidimensionalen Prozessorfelder dadurch zu optimieren, daß zunächst zwar eine Vielzahl von Zellen vorgesehen wird, die oer se zu einer großen Vielzahl verschiedener Funktionen befähigt sind, aber dann aus dieser Vielzahl verschiedener Funktionen nur eine oder wenige Funktionen für jede Zelle vorzusehen. Hierbei ergeben sich gegenüber dem dedizierten Schaltungswentwurf von Asics und dergl., bei denen exakt die jeweils für die benötigten Funktionen erforderlichen Schalt- kreise vorgesehen werden, gravierende Kostenvorteile, weil Rückgriff auf leicht programmierbare Einheiten oder durchgetestete Module genommen werden und so keine hohen Entwicklungs- und/oder Testkosten anfallen, und weil überdies keine hohen Kosten für eine Vielzahl von Masken entfallen, die beim Entwurf dedizierter Asics sonst fällig sind. Der Entwurf kann über herkömmliche Entwurfsprogramme für logische Schaltungen erfolgen, in denen Module für die Zellen, Vernetzungsarchitekturelemente usw. bereitgestellt werden, oder indem eine analoge, rekonfigurierbare Anordnung so konfiguriert wird, bis sie die gewünschten Ergbenisse liefert und dann die entsprechende Funktionalität in einer Anordnung fest vorgegeben wird.
Besonders bevorzugt ist es, wenn die die Funktion grobgranu- lar konfigurierbar ist, d.h. wenn das.
Konfigurationsvorhaltemittel nur wenige Bit vorhalten muß, um eine jeweilige Funktion der Zelle zu bestimmen. Dies erleichtert es, eine Vielzahl sukzessive abzuarbeitender Konfigurationen vorzuhalten, die aber jeweils oder zumindest zum Teil fest vorgegeben sind. Als Zellelemente können zumindest eines von ALUs, EAlUs, RAM-Zellen, I/O-Zellen, Logiblöcken vorgesehen sein. Es kann auch die Vernetzung grobgranular konfigurierbar sein, d.h. es werden nur wenige Bits zu setzen sein, um die Vernetzung vorzusehen. In einer alternativen Weise ist es möglich, die Vernetzung zumindest weitgehend fest vorzugeben und nur die jeweilige Funktion zu variieren. Dies ist dann bevorzugt, wenn der fertige Baustein etwa in seiner Funktion wie bei der Wave-Rekonfigüration je- weils eine bestimmte einer vorgegebenen Anzahl von Funktionen ausführen soll, aber die Vernetzung selbst fest steht. Dazu kann in bestimm-ten Teilbereichen nur eine Nächste-Nachbar- Verbindung vorgesehen werden (auf die parallel eingereichte Anmeldung des Anmelders betreffend die Erhöhung der Nächste- Nachbar-Dimensionalität bzw. -Konnektivität sei zu Offenbarungszwecken hingewiesen.), von denen einige der Nächste- Nachbar-Verbindungen aktiviert und einige deaktiviert sind. In anderen Bereichen kann dagegen z.B. eine, erforderlichenfalls auch laufzeitrekonfigurierbar veränderliche Beschaltungsanordnung und/oder Busstruktur vorgesehen werden. Es sei darauf hingewiesen, daß abhängig von den Benutzeran- - forderungen eine Vielzahl unterschiedlicher Aufgaben mit einer bis auf die Konfigurationsvorgabe unveränderten Bausteinen vorgesehen werden kann, so daß sich Maskenkosten auf eine Vielzahl von Bausteinen verteilen und damit nicht mehr so stark ins Gewicht fallen.
Es ist bevorzugt, wenn jedem Zellelement ein eigenes Konfigurationsvorhaltemittel zugeordnet ist. Diese können die bei XPP-Architekturen vorgesehenen, von einem zentralen Konfigurationsspeicher zugreifbaren Konfigurationsregister ersetzen. Es ist möglich, in den Konfigurationsvorhaltemittel eine . Vielzahl von Konfigurationen vorzuhalten; dies erlaubt etwa die Rekonfiguration im Betrieb, ohne daß eine ebenfalls teure und Siliziumfläche erfordernde Konfigurationseinheit integriert sein muß. Die Auswahl der jeweils zu aktivierenden Konfigurationen kann innerhalb des Feldes über Statustrigger, Datenoperationen, Sequenceranordnungen etc. erfolgen. Es ist dabei auch bevorzugt, wenn mehrere fest vorgegebene nichtflüchtige Konfigurationen im Konfigurationsvorhaltemittel vorgegeben sind. Alternativ sind flüchtige und nichtflüchtige Konfigurationen einsetzbar. Es wird darauf hingewiesen, daß eine vollständige oder partielle Konfigurationsvorgabe vor der oder jeder eigentlichen Inbetriebnahme erfolgen kann. Da- zu können auf geeignete Weise eingegebene Daten als Konfigurationen behandelt werden, die abzulegen sind. Da solche eine Vorab-Ablage von Rekonfigurationsdaten nicht betreibsstö- rungsfrei geschehen muß, eröffnen sich hier weitere Möglichkeiten, die Architektur zu vereinfachen; auf das sog. Wormholerouting sei 'hingewiesen, das bei laufzeitrekonfigu- rierbaren Einheiten nicht funktioniert. Alternativ und/oder zusätzlich kann vorgesehen sein, daß bei einigen Zellen im Betrieb mit veränderlichen Konfigurationen versehbare Konfi- gurationsvorhaltemittel vorgesehen sind, d.h. ein Teil der
Zellen über einen Konfigurationsmanager oder auf andere Weise umkonfiguriert wird.
Die wechselnde der Vielzahl von vorgehaltenen und/oder vor- bestimmten Konfigurationen, die jeweils zu verwenden ist, kann insbesondere im Wege der Wave-Rekonfiguration oder des lokalen Sequencing bestimmt bzw. geändert werden.
Es ist möglich, die Konfigurationsvorhaltemittel auszubilden als ROM, EPROM, EEPROM, Flash-Speicher, Fuse-, Antifuse- programmierbare Speichermittel und/oder in insbesondere in oberen Lagen einer Siliziumstruktur fest vorgesehene Speichermittel gewählt sind. Besonders bevorzugt sind Anordnugnen, die leicht und einfach bei einer großen Stück- zahl die Konfiguration vorsehen. Dies ist durch geeignete
Maskierung bei der Herstellugn auf den oberen Metalllagen erreichbar (ZiB.-Lage M4 und/oder M5) und/oder durch Fuse/Antifuse-Techniken. Letztere haben den Vorteil, daß bei Funktionsänderungen in einer laufenden Serie Änderungen leichter implementierbar sind. Mit der Anordnung kann ein Baustein festgelegter Funktion erhalten werden, indem ein multidimensionales Feld mit in Funktion und/oder Vernetzung konfigurierbaren Zellelementen und diesen zugeordneten Konfigurationsvorhaltemitteln zum lo- kalen Konfigurations -Vorhalten vorgegeben wird, bestimmt wird, welche Konfigurationen in diesen vorzuhalten sind, und dann nichtflüchtige Konfigurationsvorhaltemittel so vorgesehen werden, daß sie zumindest einen Teil der vorgehaltenen Konfigurationen nichtflüchtig vorhalten. Es kann dabei von einem zur laufzeitrekonfigurierbaren multidimensionalen Feld ausgegangen werden, das ein höhere' Funktionalität besitzt und es kann dann das Design um bestimmte Funktionen reduziert werden, bis ein Kern-Bauelelement oder -elementblock mit vorgegebener Architektur erhalten wird, bei dem nur noch wenige freie Konfigurationen zu bestimmen sind.
Dieser Aspekt der Erfindung wird beschrieben nur besipielhaft beschrieben mit Bezug auf die Zeichung, in welcher zeigt
Fig AI eine erfindungsgemäße Datenverarbeitungsanorn- düng
Fig A2 Details hierzu
Nach Fig. 1 umfaßt nun eine allgemein mit 1 bezeichnete Datenverarbeitungsanordnung 1 mit ' einem, multidimensionalen Feld in Funktion und/oder Vernetzung konfigurierbarer Zellelemente 2 und diesen zugeordneten Konfigurationsvorhaltemitteln 2a zum lokalen Konfigurations-Vorhalten, wobei die Konfigurationsvorhaltemittel 2a dazu ausgebildet sind, zumindest einen Teil der vorgehaltenen Konfigurationen nichtflüchtig vorzu- halten. Das multidimensionale Feld 1 umfaßt im vorliegenden Beispiele jeweils drei Reihen und Spalten PAEs, wie sie aus den Eingangs erwähnten und weiteren Veröffentlichungen des Anmelders per se bekannt sind. Diese Einheiten weisen grobgranular kon- fuigurierbare ALÜs 2b auf, an die über Multiplexer 2c Daten von einem Bussystem "2d eingehen und die beidseits mit Vor- wärts-/Rückwärtsregistern 2e, 2f wie per se bekannt flankiert sind. Weiter speisen sie Ausgangsdaten über einen weiteren Multiplexer 2g auf ein Bussystem in der Reihe darunter auf. Die Funktionsweise der Multiplexer 2g, 2c sowie jene der ALU 2b und der Register 2e,2f ist per se bekannt und wird hier nicht detailliert erläutert. Die Konfiguration, die diese Einheiten haben, d.h. die Verbindung, die der Multiplexer jeweils aktiviert, bzw. die jeweilige Funktion der ALU, sind im Konfigurationsspeicher 2h abgelegt. Dabei können für Se- quencing oder Wave-Rekonfigu-ration eine Vielzahl von untershceidlichen Konfigurationen abgelegt sein, die auf Signale aus den Zellen oder auf externe Signale hin aktivierbar sind. Dabei muß nicht für alle Konfigurationen ein fester, unveränderlicher Speicher vorgesehen sein, sondern es kann auch in bestimmten Fällen ein (gegebenenfalls vergleichsweise kleiner) Speicher vorgesehen werden. Dies erlaubt demanch einen Zeil- bzw- Speichermix.
Während in bisherigen Architekturen der Konfigurationsspeicher veränderlich war, und etwa von einer zentralen Konfigurationseinheit angesprochen wurde, ist im vorliegenden Fall der Konfigurationsspeicher 2h nichtflüchtig gebildet und sein Inhalt bei der Herstellung des die Elemente enthaltenden ICs festgelegt.
Dies geschieht wie folgt: Zunächst wird festgelegt, welche Anzahl an Zellen und gegebenenfalls welche Zellen für die erwartete und mit der Datenverarbeitungsanordnung 1 abzuarbeitende Aufgabe erfor- 5 derlich sind. Dann werden mit diesen die Funktion simuliert. Das kann über Emulatoren geschehen oder es kann ein Feld laufzeitrekonfigurierbaren Elemente mit zentraler Konfigurationseinheit zur Funktionsentwicklung bzw. zum Funktionstest herangezogen werden. Sobald die Funktionsentwicklung abge-
10 schlössen ist und die erforderlichen Konfigurationen festgelegt sind, wird ein Chip entworfen, der in seinem groben Aufbau einer Vielzahl anderer, gleichartiger Chips entspricht und sich lediglich hinsichtlich der nichtflüchtigen Konfigurationsspeicherinhalten von jenen unterscheidet.
15 Es wird dann festgelegt, ob die nichtflüchtigen Konfigurationsspeicherinhalte mit dedizierten Metall-Lagen festgelegt werden und/oder durch Brennen/Schmelzen bestimmter, zur Konfiguration vorgesehener Fuses/Antifuses oder auf andere Weise. Die Speicherinhalte werden dann während der Herstel-
20 lung des Prozesses vorgesehn und der Chip ist für seine dedizierte Aufgabe ohne eine Vielzahl teurer Masken verwendbar. Dabei sind zB regionale Anpassungen möglich, zB, um unterschiedliche Modems etc. zu implementieren.
2.5 In einem weiteren Aspekt der Erfindung befaßt sich diese mit der integrierten elektronischen Verarbeitung von Informationen, die in Form analoger Signale vorliegen. Dabei ist besonders hervorzuheben, daß etwa die analoge Verarbeitung, wie ersichtlich sein wird, auf fest vorgespeicherte Konfigu-
30 rationen zurückgreifen kann, daß dafür aus unterschiedlichen Konfigurationen auswählbar ist und daß etwa bestimmte Zellformen gleichfalls vorteilhaft sind. Für die integrierte elektronische Verarbeitung von Informationen, die in Form analoger Signale vorliegen, existieren gegenwärtig mehrere Konzepte:
- Diskrete analoge, nicht programmierbare Bausteine, wie etwa Transistoren und Operationsverstärker;
- Analoge, programmierbare, integrierte Schaltkreise, genannt FPAAs (Field Programmable Analog Arrays) , FPMAs (Field Pro- grammable Mixed-Signal Arrays) oder FPADs (Field Programmable Analog Devices) . .FPAAs, FPMAs und FPADs bestehen ähnlich wie die digitalen FPGAs (Field Programmable Gate Arrays) aus einzelnen, programmierbaren Zellen. Im Fall von FPAAs, FPMAs und FPADs ist das Kernstück einer solchen Zelle ein analoger Operationsverstärker, dem eine bestimmte Funktion aus einem Satz möglicher Funktionen zugewiesen werden kann. Mögliche Funktionen sind zum Beispiel Addierer, Inverter, Gleichrichter und Filter erster Ordnung, mit denen ein analoges Signal bearbeitet werden kann. Die Zellen stehen untereinander durch ein Bussystem in Verbindung und werden durch logische Elemente gesteuert;
- Anwendungsspezifische, nicht programmierbare integrierte Schaltkreise, genannt ASICs (Application Specific Integrated Circuits) ;
- Programmierbare, voll digitale Prozessoren, genannt DSPs (Digital Signal Processors) oder CPUs (Central Processing
Units) , die der digitalen Verarbeitung analoger Signale nach deren vorhergehender Analog-Digital-Wandlung dienen. Wenn nach der Verarbeitung wieder ein analoges Signal vorliegen soll, muss nach der Verarbeitung eine Digital-Analog-Wandlung des Signals vorgenommen werden.
Probleme
Diskrete analoge Bausteine
Eine Schaltung mit diskreten Bauelementen kann aufgrund ihrer primären Flexibilität zwar optimal für eine bestimmte Aufgabe ausgelegt werden.
Die Aufgaben der Schaltung müssen allerdings zum Zeitpunkt des Schaltungsentwurfs genau bekannt sein, denn eine nachträgliche Anpassung der Schaltung an veränderte Anforderungen ist nicht oder nur mit erheblichem Aufwand möglich. Dies gilt insbesondere für die Programmierbarkeit und für Umkonfigura- tionen im Betrieb. Außerdem wird eine solche Schaltung bei komplexeren Aufgaben schnell umfangreich.
FPAAs, FPMAs, FPADs Die durch FPAAs, FPMAs und FPADs gegebenen Möglichkeiten zur Verarbeitung analoger Signale orientieren sich am Vorbild
! . klassischer analoger Signalverarbeitungsanlagen. Sie sind für das zu verarbeitende Signal weitgehend- transparent, das heißt, das zu verarbeitende Signal wird bis zu einer bestimmten, bausteinabhängigen Frequenz in Echtzeit bearbeitet.
Eine einfache Möglichkeit, analoge Werte zu speichern, existiert nicht, insbesondere nicht die Möglichkeit, ' den analogen Eingangswert und/oder den Ausgangswert jeder einzel- nen Zelle zu speichern. Viele wichtige Operationen, wie etwa Schleifenberechnungen, und sämtliche Prozesse, bei denen mehrere Signale zeitlich koordiniert nacheinander verarbeitet werden, werden durch Speicherung jedoch erst möglich. Eine einzelne FPAA-, FPMA- oder FPAD-Zelle kann zwar als Speicher nach Art einer Sample-and-Hold-Stufe konfiguriert werden. Sie kann dann jedoch keine zusätzliche Funktion mehr ausüben.
FPAAs, FPMAs und FPÄDs sind aufgrund ihrer ausschließlich analogen Signalverarbeitung funktionellen Einschränkungen unterworfen. Die Fähigkeiten der in FPAAs, FPMAs und FPADs implementierten digitalen Logik beschränken sich auf die Funktionen, die für die Umkonfiguration der Zellen notwendig sind. Die Funktion der Zellen, die diese während des Betriebs ausüben, wird durch die Logik im Stand der Technik nicht unterstützt, geschweige denn erweitert, etwa durch digitale Zählfunktionen oder logische Grundfunktionen wie beispiels- weise NAND und NOR. Insbesondere gibt es keine jeweils zu einer einzigen Zelle gehörenden logischen Strukturen, die solche digitalen Zählfunktionen oder logischen Grundfunktionen durchführen können. Daß hier erfindungsgemäß Abhilfe geschaffen wird, sei im Vorgriff erwähnt.. Mit FPAAs, FPMAs und FPADs sind deshalb logische Funktionen wie zum Beispiel eingangssignalabhängige Entscheidungen, wenn überhaupt, nur in geringem Maße oder nur sehr aufwendig möglich.
Dasselbe gilt für die datenabhängige Rekonfiguration von FPAAs, FPMAs und FPADs, beispielsweise (aber nicht nur) nach Art einer IF-THEN-ELSE-Anweisung. Diese wird erfindungsgemäß ermöglicht. Soll eine FPAA-, FPMA- oder FPAD-Zelle aufgrund von Kriterien, die die zu verarbeitenden oder bereits verarbeiteten Analogsignale betreffen, rekonfiguriert werden, so muß das betroffene Analogsignal über eine temporäre oder sogar permanente Verbindung nach außen zu einer externen, nicht in dem FPAA, FPMA oder FPAD enthaltenen Struktur geführt werden, welche über eine etwaige Rekonfiguration entscheiden und diese Rekonfiguration auslösen und durchführen muß. Es besteht für die Zelle keine Möglichkeit, abhängig von einem Analog- oder Digitalsignal selbständig, das heißt mit ihr ei- genen Strukturen, über eine Rekonfiguration ihrer selbst zu entscheiden, diese Rekonfiguration zu veranlassen und die dazu notwendigen Daten von einer internen, auf dem Baustein enthaltenen, dafür geeigneten Struktur zu erhalten.
Will man das Ergebnis der Operation einer Zelle auf deren Eingang führen, zum Beispiel bei Schleifenoperationen, so kann das bei FPAAs, FPiMAs und FPADs nur mittels des Busses geschehen; eine eigene Leitung zur Rückführung des Operationsergebnisses auf den Eingang der Zelle zur Entlastung des Busses ist bei FPAAs-, FPMAs und FPADs nicht vorgesehen.
Die genannten Nachteile schließen es aus, mit FPAAs, FPMAs und/oder FPADs ein analoges Rechenwerk aufzubauen, das die Flexibilität und den Funktionsumfang heutiger digitaler Re- chenwerke erreicht.
ASICs
ASICs besitzen eine hohe primäre Flexibilität, da sie für eine spezielle Anwendung entwickelt werden. Sie eignen sich jedoch nur für diejenige Anwendung, für die sie entwickelt werden; rekonfigurierbar sind ASICs nur in demjenigen Rahmen, den die Anwendung vorgibt, ändert sich die Anwendung um ein Detail, welches bei der Entwicklung des ASICs nicht berücksichtigt wurde, so muß im Extremfall ein neuer ASIC entwickelt werden.
DSPs und CPUs Unter allen Möglichkeiten zur Signalverarbeitung können DSPs und CPUs zwar am flexibelsten konfiguriert und rekonfiguriert werden, allerdings weder teilweise, noch während der Laufzeit .
Um Analogsignale in 'ein für DSPs oder CPUs geeignetes Format umzuwandeln, müssen die analogen Signale digital kodiert werden. Dies erfordert eine Analog-Digital-Wandlung, die bei höheren Anforderungen an die Präzision recht aufwendig und teuer werden und überdies noch die Bandbreite beschränken kann. Entsprechendes gilt für die Rücktransformation der digitalen, verarbeiteten Daten in Analogsignale . Um ausreichende Schnelligkeit zu erzielen, müssen die internen Bussysteme in DSPs und CPUs die einzelnen Bits eines digital kodierten Analogsignals parallel übertragen . Die erforderliche Breite des Datenbussystems wächst mit der geforderten Präzision der digitalen Kodierung des Signals . Im Gegensatz dazu genügt bei einer analogen Übertragung eine Leitung pro übertragenem Analogsignal .
DSPs und CPUs besitzen überdies keine zellartige Struktur, sondern sind in der klassischen von-Neumann-Architektur aufgebaut. Ihre Modularität ist deshalb nur gering.
Die heute e.xististierenden analogen Rechenwerke erreichen bei weitem nicht den Funktionsumfang und die Konfigurierbarkeit heute existierender digitaler Rechenwerke.
Umgekehrt werden analoge Schaltungen zunehmend durch digitale Rechenwerke ersetzt, etwa im Fall der DSPs, wobei man die bei den DSPs genannten Nachteile in Kauf zu nehmen hat.
Die heute existierenden Methoden zur Verarbeitung analoger Signale haben zum Ziel, diese analogen Daten zu modifizieren. Sind die dazu verwendeten Bausteine konfigurierbar, dann wird die Art und Weise, wie die analogen Signale zu modifizieren sind, ausschließlich durch digitale Logik eingestellt, das heißt, die Steuerung erfolgt ausschließlich durch digitale Signale. Es existieren weder Möglichkeiten, die Datenverarbeitungssteuerung unmittelbar durch analoge Signale vorzunehmen, noch Möglichkeiten, analoge Signale mit dem Funktionsumfang eines digitalen Rechenwerks zu bearbeiten.
Die Erfindung umfaßt somit auch ein programmierbares, zumindest teilweise analoges Rechenwerk (Reconfigurable Analog Processor, RAP) mit durch logische Elemente erweiterten Funktionen, in der Weise, daß der Funktionsumfang eines digitalen Rechenwerks verbunden wird mit der Möglichkeit zur schnel- len, analogen Berechnung komplexer Funktionen (etwa der
Logarithmusfunktion) und der Rekonfigurierbarkeit eines DFPs wie zb gemäß Offenlegungsschrift DE4416881A1.
Ein RAP besteht aus Zellen, die in ihrer Funktion und Vernet- zung frei konfigurierbar und während der Laufzeit rekonfigurierbar sind. Bei der Rekonfiguration einer einzelnen Zelle während der Laufzeit werden andere Zellen nicht in ihrer Arbeit beeinträchtigt. Eine Zelle ist unterteilt in eine Analogsektion und eine Logiksektion. Die Analogsektion dient der Verarbeitung analoger Daten auf der Basis von Operationsverstärkerschaltungen, wie sie von FPAAs, FPMAs und FPADs her bekannt sind. Die Logiksektion steuert die Funktionen der Analogsektion während der Laufzeit, bei der Anfangskonfiguration und bei der Umkonfiguration während der Laufzeit. Die Analogsektion kann aber auch analog gesteuert und konfiguriert werden. Die Datenverarbeitung findet wie bei FPAAs, FPMAs und FPADs in erster Linie analog statt; der Funktionsumfang wird jedoch durch besondere Strukturen mit jeweils einer Logiksektion und verschiedenen Speichern in jeder Zelle dahingehend erweitert, daß in der Zelle eingangsdatenabhängige logische Operationen, Vergleiche, Schleifenoperationen und Zählvorgänge schnell und einfach durchgeführt werden können, so daß ein Funktionsumfang ähnlich dem eines voll digitalen Rechenwerks erreicht wird.
Es besteht für jede RAP-Zelle zur Vereinfachung ihrer Rekonfiguration die Möglichkeit, abhängig von einem Analog- oder Digitalsignal selbständig, das heißt mit ihr eigenen, inter- nen Strukturen, über eine Rekonfiguration ihrer selbst zu entscheiden, diese Rekonfiguration zu veranlassen und die dazu notwendigen Daten von einer dafür geeigneten Struktur zu erhalten.
Zwei unabhängige, rekonfigurierbare Bussysteme, eines für analoge Signale, das andere für digitale Signale, vernetzen die Zellen untereinander und mit der Außenwelt. Jedes analoge Signal benötigt zu seiner Übertragung nur eine analoge Bus- , leitung. Bei einem .digitalen Bus wächst die Zahl der benötigten Leitungen bei paralleler Übertragung mit der geforderten Präzision der digitalen Codierung des analogen Signals stark an. Die notwendige Busbreite eines analogen Busses ist deshalb im Vergleich zu der eines digitalen Busses bei vergleichbarer Signalauflösuήg und Übertragungsrate ganz wesentlich verringert. Es sei erwähnt, dass auf einem integrierten Schaltkreis Mischungen vorliegen können aus analogen und digitalen Schaltkreisen; dabei kann eine weitgehende Trennung und/oder Übergangsbeschaltung z. B. in Form von DACs und/oder ACDs zwischen analogen und digitalen Elementen vorgesehen werden. Die digitalen Elemente können ihrerseits durch PAEs, RAM-PAEs usw. insbesondere mit geeignetem Aspekt- verhalten gebildet sein.
Die Erfindung beschreibt in diesem Teilaspekt sonst u.a. ein analoges, umkonfigurierbares Rechenwerk (Reconfigurable Analog Processor, RAP) aus einzelnen funktionalen Zellen, die durch ein geeignetes Bussystem untereinander und mit der Außenwelt verbunden sind. Die Funktion der Zellen ist konfigurierbar und kann während des Betriebs so rekonfigu- rierbar sein, daß dabei die Funktion anderer, nicht zu rekonfigurierender Zellen nicht beeinträchtigt wird. Eine funktionale Zelle enthält eine Analogsektion und eine Logiksektion. Die Analogsektion dient der Verarbeitung analoger Daten auf der Basis von Operationsverstärkerschaltungen. Die Logiksektion steuert die Funktionen der Analogsektion während der Laufzeit, bei der Anfangskonfiguration und bei der Umkon- figuration während der Laufzeit. Außerdem erweitert die
Logiksektion die rein analogen Funktionen der Analogsektion durch die Bereitstellung von zb Logikfunktionen und/oder digitalen Zählfunktionen und/oder arithmetishcen und/oder Speicherelementen. Jeder Zelle können ein oder mehrere analo- ge Speicher zugeordnet sein, die analoge Größen wie beispielsweise Eingangs- oder Ausgangssignale speichern und zur weiteren Verarbeitung bereitstellen können. Außerdem gehören zu jeder Zelle ein oder mehrere digitale Register zur Speicherung von digitalen Daten, die für die. Konfiguration und den Betrieb der Zelle notwendig sind. Für jede Zelle besteht die Möglichkeit, abhängig von einem Analog- oder Digitalsignal selbständig, das heißt mit ihr eigenen internen Strukturen, über eine Rekonfiguration ihrer selbst gegebenenfalls zu Gruppen zusammengefaßter Zellen oder anderer Zellen zu entscheiden, diese Rekonfiguration zu veranlassen und die dazu notwendigen Daten von einer dafür geeigneten Struktur, welche sich auf dem Baustein befinden kann, zu erhalten. Es existiert weiterhin die Möglichkeit, das analoge Ergebnis der Operation einer Zelle ohne Zugriff auf ein Bussystem auf den analogen Dateneingang der Zelle zurückzuführen.
In diesem Abschnitt werden Begriffe verwendet, deren Bedeutung von der allgemein gebräuchlichen in manchen Punkten abweichen kann. Zum besseren Verständnis folgen die Begriffsdefinitionen, wie sie in diesem Abschnitt verwendet werden.
Ein Signal soll hier definiert sein als eine Größe, beispielsweise eine Spannung U_0 (t) , die zu einem bestimmten Zeitpunkt an einem bestimmten Punkt einer Schaltung herrscht. Ein solcher Punkt kann beispielsweise ein Ausgang, ein Eingang oder eine Busleitung sein. Die Spannung U_0(t) kann entweder auf Masse (GND) oder auf eine zweite Spannung U_l(t) bezogen sein. Das Signal kann zeitlich, konstant oder zeitlich veränderlich sein.
Information soll.hier definiert sein als Anzahl der möglichen, unterscheidbaren Zustände, die ein Signal annehmen kann.
Als digitales Signal oder Digitalsignal soll hier ein Signal dann bezeichnet werden, wenn es nur zwei Zustände, beispiels- weise 0 oder 1, annehmen kann, also nur zwei Informationen im Sinne der hier verwendeten Definition der Information beinhaltet.
Als analoges Signal oder Analogsignal soll hier ein Signal dann bezeichnet werden, wenn es mindestens drei und höchstens abzählbar unendlich viele Zustände annehmen kann, also mehr als zwei Informationen im Sinne der hier verwendeten Definition der Information beinhaltet. Das bedeutet insbesondere, daß mittels analogen Signalen immer mehr Informationen gleichzeitig über eine Leitung übertragen werden können als mit digitalen Signalen.
Im folgenden wird der Aufbau einer erfindungsgemäßen funktio- nalen Zelle und der Aufbau des zugehörigen, die Zellen vernetzenden Bussystems beschrieben.
Die Zelle
Eine Zelle stellt die kleinste vollständige, selbständige funktionale Einheit eines RAPs dar. Dabei sind zwei verschiedene Typen von Zellen möglich — die einfache Zelle und "die erweiterte Zelle. Beide Zelltypen können auf einem RAP zum Einsatz kommen. Sie unterscheiden, sich im Funktionsumfang. Beiden Zelltypen gemeinsam ist die Unterteilung ihrer Struktur in eine Analogsektion und eine Logiksektion.
Einige oder alle Zellen können einen. Taktvervielfacher zur Erzeugung eines lokalen, auf die Zelle beschränkten höheren Taktes beinhalten, der beispielsweise die Zählfunktionen der Logiksektion der Zelle unterstützt. Denkbar ist auch, daß einige oder alle Zellen Strukturen zur Erzeugung eines zellinternen oder lokal begrenzten Zelltakts beinhalten können, dessen Frequenz unabhängig von der Frequenz eines etwaigen Bustakts konfiguriert werden kann. Der Zelltakt kann aktivierbar und deaktivierbar sein.
Die einfache Zelle (SCELL)
Die Elemente der einfachen Zelle (SCELL) gliedern sich in zwei Gruppen, genannt Analogsektion und Logiksektion. Die
Analogsektion dient der analogen Datenverarbeitung der analogen Eingangssignale einer Zelle, kann aber auch analoge Signale erzeugen, wie beispielsweise (aber nicht nur) ein Rechtecksignal oder ein Dreiecksignal. Die Logiksektion stellt zusätzliche nicht-analoge Funktionen zur Verfügung, insbesondere zB eingangsdatenabhängige logische Operationen, Vergleiche und Zählvorgänge, Speicher und/oder arithmetische Operationen und steuert darüberhinaus die Tätigkeit der gesamten SCELL. Ein Element der Logiksektion ist die Steuerlogik (CL) . Sie steuert die Funktionen der Analogsektion und verwaltet Signale zur Rekonfiguration der Zelle, die über die Bussysteme erhalten oder abgeschickt werden..
Die Änalog-Eingangsstufe der SCELL ist ein Multiplexer (MUX0) nach Stand der Technik für Analogsignale. Das zu verarbeitende analoge Signal wird von einem analogen Datenbussystem (ABUS) auf die Eingänge von MUX0 geführt. MUX0, gesteuert von der CL, selektiert das von der SCELL zu verarbeitende Analogsignal und schaltet es zu der analogen Verarbeitungseinheit (APU, Analog Processing Unit) durch. Die APU ist eine konfigurierbare Einheit nach Stand der Technik. Sie enthält eine oder mehrere Operationsverstärkerschal- tung/en, deren Funktion aus einem Satz möglicher Funktionen ausgewählt werden kann. Die Auswahl der Funktion geschieht mittels eines digitalen Signals von der CL.
Funktionen der APU können beispielsweise (aber nicht nur) sein:
- Addition einer programmierbaren Größe zum analogen Eingangssignal der APU - Subtraktion einer programmierbaren Größe vom analogen Eingangssignal der APU
- Multiplikation des analogen Eingangssignals der APU mit einer programmierbaren Größe
- Division des analogen Eingangssignals der APU durch eine programmierbare Größe, Division einer programmierbaren Größe durch das analoge Eingangssignal der APU
- Logarithmierung des analogen Eingangssignals der APU
- Antilogarithmierung des analogen Eingangssignals der APU
- Invertierung des analogen Eingangssignals der APU - Keine Veränderung des analogen Eingangssignals der APU
- Filterfunktionen, beispielsweise Hochpässe, Tiefpässe, Bandpässe und Notchfilter
- Signalerzeugung, beispielsweise Rechtecksignale, Dreiecksignale und Sinussignale mit programmierbaren Zeitkonstanten - Potenzierung -Speicherung Das zu verarbeitende analoge Signal wird entsprechend der durch die CL programmierten Funktion in der APU verändert oder (in der Funktion eines Spannungsfolgers) nicht verän- dert, oder die APU dient der Erzeugung eines neuen analogen Signals. Denkbar ist insbesondere die Erzeugung eines Signals, das eine Rekonfigurationsaufforderung darstellt, und in dem die notwendigen Rekonfigurationsparameter in analoger Form kodiert sind. Der analoge Ausgang der APU ist an eine Speicherstufe (BIPS) angeschlossen. Die BIPS kann sich in einem von mehreren durch die CL programmierbaren Zuständen befinden, beispielsweise in einem der folgenden.
BUFNONINV: Das Ausgangssignal der BIPS hat denjenigen Wert, der an ihrem Eingang lag, als die BIPS ein BUFFER-Signal von der CL erhielt. Der Ausgangswert wird konstant gehalten, so- lange das BUFFER-Signal anliegt.
BUFINV: Das Ausgangssignal der BIPS hat denjenigen invertierten Wert, der an ihrem Eingang lag, als, die BIPS ein BUFFER- Signal von der CL erhielt. Der Ausgangswert wird konstant ge- halten, solange das BUFFER-Signal anliegt.
INVERT: Das Eingangssignal der BIPS wird invertiert.
PASS: Die BIPS schleift das Eingangssignal unverändert durch.
3STATE: Der Ausgang der BIPS nimmt einen hochohmigen Zustand ein.
Der Ausgang der BIPS ist mit dem Eingang eines analogen De- multiplexers (DeMUX) verbunden, dessen Ausgänge mit den
Busleitungen des ABUS verbunden sind. Über die CL wird gesteuert, auf welchen Ausgang des DeMUX das verarbeitete analoge Signal geführt wird.
Als zusätzliches Element der Logiksektion einer SCELL zur Erweiterung des Funktionsumfanges der SCELL existiert die LOGUNIT. Sie ist in der Lage, beispielsweise folgende Funktionen durchzuführen:
- digitale Zähler, die von der CL und/oder der APU gesetzt, getriggert, abgefragt rückgesetzt und angehalten werden können; diese können als grobgranulare Logikelemente gebildet sein; andere grobgranulare Logik- und/oder Funktionselemente wie arithmetische, insbesondere ALUartige und/oder speichernde Elemente sind gleichfalls implementierbar.
- logische' Grundfunktionen, wie NAND, NOR, AND, OR, XOR, INVERT, BUFFER, die aus der' CL und/oder APU stammende Informationen logisch miteinander verknüpfen können. Hier handelt es sich also um feingranulare Logikelemente. Solche Informa- tionen können abhängig vom Status der CL und/oder der APU sein, und/oder von zu verarbeitenden Signalen. Insbesondere können solche Informationen Kriterien sein, die auch zur Bildung eines RECONREQ-Signals (Rekonfiguration-Request) führen.
Die erweiterte Zelle (ECELL)
Die erweiterte Zelle (ECELL) enthält in einer bevorzugten Ausführungsform eine vollständige, voll funktionale SCELL, die um zusätzliche Elemente und Funktionen erweitert wurde, um insbesondere (aber nicht nur) Schleifenoperationen ohne Zugriff auf das Bussystem durchführen zu können.
Die analoge Eingangsstufe (MUX0) ist um einen zweiten, gleichwertigen, auf den ABUS zugreifenden analogen Multiplexer (MUX1) erweitert. Mit MUX0 und MUX1 ist es möglich, statt (wie bei einer SCELL) nur. einem Eingangssignal zwei Eingangs- Signale zur anschließenden Verarbeitung in der Zelle freizugeben. Außer den Busanschlüssen besitzen MUXO und MUX1 jeweils zusätzlich noch einen' Eingang, der auf Masse gelegt ist und einen Eingang, auf den das Ergebnissignal vom Aus- gang der BIPS der ECELL zurückgeführt wird. Der Ausgang von MUXO führt das von MUXO zur Verarbeitung selektierte Analogsignal, welches ausdrücklich auch der konstante Massepegel oder das Ergebnissignal vom Ausgang der BIPS der ECELL sei kann. Der Ausgang von MUX1 führt das von MUX1 zur Verarbeitung selektierte Analogsignal, welches ebenfalls auch der konstante Massepegel oder das Ergebnissignal vom Ausgang der BIPS der ECELL sei kann.
Die Ausgangssignale von MUXO und MUX1 werden auf die folgen- den, programmierbaren Speicherstufen (BUFFO, BUFFl) geführt. BUFFO erhält das Ausgangssignal von MUXO, BUFFl erhält das Ausgangssignal von MUX1. BUFFO und BUFFl sind durch die CL kσnfigurierbare Einheiten, deren Funktion aus einem Satz möglicher Funktionen ausgewählt werden kann. Mögliche Funk- tionen von BUFFO und BUFFl sind beispielsweise
BUFNONINV: Der Wert des Ausgangssignals von BUFFO bzw. BUFFl ist gleich demjenigen analogen Eingangssignal, das anlag, als BUFFO bzw. BUFFl ein BUFFER-Signal von der CL erhielt. Der Ausgangswert wird konstant gehalten, solange das BUFFER- Signal anliegt.
BUFINV: Der Wert des Ausgangssignals von BUFFO bzw.. BUFFl ist gleich demjenigen analogen Eingangssignal, das anlag, als BUFFO bzw. BUFFl ein BUFFER-Signal von der CL erhielt. Der Ausgangswert wird konstant gehalten, solange das BUFFER-Signal anliegt. INVERT: Das aktuelle analoge Eingangssignal von BUFFO bzw. BUFFl wird invertiert.
PASS: BUFFO bzw. BUFFl schleift das aktuelle Eingangssignal unverändert durch.
Das Ausgangssignal von BUFFO und das Ausgangssignal von BUFFl werden auf jeweils einen analogen Eingang der erweiterten analogen Verarbeitungseinheit XAPU der ECELL geführt. Alle Funktionen der APU einer SCELL sind in der XAPU einer ECELL enthalten.
Im Gegensatz, zur APU der SCELL besitzt die XAPU zwei analoge Eingänge, so daß in der XAPU Operationen mit zwei analogen, zeitlich konstanten oder zeitlich veränderlichen Signalen möglich sind, insbesondere die Addition, Subtraktion, Multiplikation und Division zweier solcher Signale. Es ist damit denkbar, die XAPU mittels eines analogen, zeitlich konstanten oder zeitlich veränderlichen Steuersignals zu programmieren, indem bestimmten Werten des Steuersignals bestimmte Funktionen zugewiesen werden. Darüberhinaus ist es denkbar, mit j einem analogen Steuersignal der APU einen zur Ausübung einer Funktion notwendigen Parameter zu übermitteln. Wenn beispielsweise f (t) ein analoges zeitlich veränderliches (Spannungs-) Signal ist, welches mit einem zeitlich veränderlichen (Spannungs-) Signal g(t) multipliziert werden soll, kann die XAPU dann als Multiplikator nach Art eines spannungsgesteuerten Verstärkers (Voltage Controll.ed Amplifier, VGA) nach Stand der Technik programmiert werden, wobei f (t) an einem analogen Eingang der XAPU liegt, während g(t) am anderen analogen Eingang der XAPU liegt und das besägte Steuersignal darstellt. Das Ausgangssignal der XAPU wird auf den Eingang der BIPS geführt. Die BIPS der ECELL und' die BIPS der SCELL können gleich sein. Das Ausgangssignal der BIPS wird auf den Eingang des DeMUX geführt. Der DeMUX der ECELL und der DeMUX der SCELL können gleich sein. Außerdem wird das Ausgangssignal der BIPS über eine separate Leitung auf einen Eingang von MUXO sowie auf einen Eingang von MUX1 geführt.
Die Logiksektion kann ein Element zur Taktvervielfachung enthalten, welches den Takt des DBUS vervielfacht, und das programmierbar sein kann. Damit kann die ECELL intern mit einem Vielfachen des DBUS-Taktes operieren.
Rekonfiguration einer Zelle (cellreconfig)
Das RECONREQ-Signal
Die Analogsektion und die Logiksektion der Zelle sind bevorzugt in der Weise strukturiert und verbunden, daß die Zelle bei Eintreten bestimmter Kriterien ein Signal, das RECONREQ- Signal, erzeugen kann, mit welchem sie ihre eigene Rekonfiguration oder die Rekonfiguration einer anderen oder mehrerer anderer Zellen veranlassen kann. Das RECONREQ-Signal kann digital sein und über ein separates digitales Bussystem weitergeleitet werden. Es kann aber auch analog sein und über ein separates analoges Bussystem weitergeleitet werden. Mit einem analogen RECONREQ-Signal ist es möglich, neben den RECONREQ-Infor ationen noch zusätzliche Informationen, zum Beispiel die Adresse der zu rekonfigurierenden Zelle oder der zu rekonfigurierenden Zellen, gleichzeitig auf nur einer Busleitung zu übertragen. Kriterien, die ein RECONREQ-Signal auslösen, können zum Beispiel (aber nicht nur) sein:
- Ein bestimmter Signalpegel, der von in der Zelle auftreten- den Analogsignalen (zu denen auch die analogen Eingangs- und
Ausgangssignale zählen) erreicht, überschritten oder unterschritten wird.
- Eine bestimmte Signaldifferenz, die zwischen in der Zelle auftretenden Analogsignalen (zu denen auch die analogen Eingangs- und Ausgangssignale zählen) , erreicht, überschritten oder unterschritten wird.
- Eine bestimmte zeitliche Änderung eines Signalpegels, die von in der Zelle auftretenden Analogsignalen (zu denen auch die analogen Eingangs- und Ausgangssignale zählen) erreicht, überschritten oder unterschritten wird.
- Das Verstreichen einer bestimmten Zeitspanne.
- Das Auftreten eines bestimmten digitalen Signals oder einer bestimmten Kombination digitaler Signale in 'der Zelle oder an den digitalen Eingängen und/oder Ausgängen der Zelle.
Die in der obigen Auflistung genannten Signale können aus- drücklich auch von anderen Zellen oder weiteren Elementen des RAPs stammen. Außerdem können durch logische Verknüpfung (AND, OR, NAND, NOR, XOR usw.) der genannten Kriterien weitere Kriterien gebildet werden. Die Logiksektion der ECELL enthält zur logischen Verknüpfung von Kriterien geeignete Strukturen, zB für Ergebnisvergleich, Flags einer ALU wie Übertrag einer arithmetischen Einheit (carry etc) Die Kriterien zur Bildung eines RECONREQ-Signals werden in der CL der Zelle ausgewertet. Die CL der Zelle generiert aus diesen Kriterien ein digitales Wort (RECONREQ-Wort) mit den nötigen RECONREQ-Informationen.
Dieses RECONREQ-Wort kann in digitaler oder analoger Form von der Zelle weitergegeben werden. Dafür stehen eigene Bussysteme (RECONREQ-Bus) , ein digitaler Bus und ein analoger Bus, zur Verfügung.
Soll das RECONREQ-Wort in- analoger Form weitergegeben werden, so wird das digitale RECONREQ-Wort in einem Digital-Analog- Umsetzer (DAC) in analoge Form gebracht. Jede Zelle kann zu diesem Zweck einen solchen DAC besitzen.
Die Daten, die zur Rekonfigurierung der Zelle notwendig sind, stellen eine dafür geeignete Struktur zur Verfügung. Diese Struktur kann beispielsweise eine Ladelogik und eine Swit- ching-Tabelle sein, wie sie in Patentanmeldung DE196 54 846.2 beschrieben sind.
Die Ladelogik
Die Ladelogik (LL) ist eine Struktur, die nach einem RECONREQ-Signal die Rekonfiguration der betreffenden Zelle oder der betreffenden Zellen durchführt. Mehrere Zellen stehen mit jeweils einer einzigen LL über den RECONREQ-Bus in Verbindung. Diese Zellen bilden mit der zugehörigen LL einen. Cluster. Jede Zelle eines Clusters kann ein RECONREQ-Signal an ihre LL absetzen und so jede Zelle desselben Clusters zur Rekonfiguration auffordern. Andere Möglichkeiten, eine Rekonfiguration anderer Zellen auszulösen, bestehen gleichfalls. Verwiesen wird auf die o.g. Schriften und weitere Schriften der vorliegenden Anmelderin. Ein Baustein kann mehrere Clu- ster enthalten. Die LLs dieser Cluster stehen untereinander über ein Bussystem in Verbindung und können somit Informatio- nen austauschen. Solche Informationen können insbesondere
Adressen von umzukon'figurierenden Zellen sein. Dadurch ist es jeder beliebigen Zelle des RAPs möglich, jede beliebige Zelle des RAPs zur Rekonfiguration aufzufordern.
Die LL kann entsprechend PACT_SWT (vergl. zitierte Patentanmeldung) aufgebaut sein und kann damit digitale RECONREQ- Worte direkt verarbeiten. Die LL benötigt für die Verarbeitung eines analogen RECONREQ-Wortes jedoch analoge Vorstufen, nämlich eine analoge Selektierstufe (ASELSTAGE) und eine Analog-Digital-Wandlerstufe (ADC) . Die Aufgabe der ASELSTAGE ist es, zu prüfen, ob und an welchem analogen RECONREQ-Bus ein RECONREQ-Signal anliegt. Ist ein RECONREQ- Signal auf einem analogen RECONREQ-Bus vorhanden, so wird dieser Bus von der ASELSTAGE selektiert und zur weiteren Verarbeitung auf den ADC geschaltet, welcher das analoge
RECONREQ-Wort in ein digitales RECONREQ-Wort zurückwandelt, das von der LL verarbeitet werden kann.
Die ASELSTAGE kann auf verschiedene Arten realisiert werden. Eine Möglichkeit ist die Verwendung eines Multiplexers, eine andere die Verwendung eines Arbiters .
ASELSTAGE als Multiplexer. Die analogen RECONREQ-Busse der von der LL überwachten Zellen liegen an den Eingängen eines getakteten Analogmultiplexers nach Stand der Technik. Bei jedem Takt wird der Multiplexer um einen Eingang weitergeschaltet, so daß bei jedem Takt ein anderer Bus am Ausgang des Multiplexers liegt. Ein Komparator überwacht den Ausgang des Multiplexers. Wenn kein analoges RECONREQ-Signal am Ausgang des Multiplexers liegt, hat der Ausgang des Multiplexers einen bestimmten Pegel, beispielsweise 0 Volt. Liegt ein RECONREQ-Signal an, liegt ein anderer Pegel am Ausgang des Multiplexers, was den Komparator dazu veranlaßt, das RECONREQ-Signal auf den nachfolgenden ADC zu schalten. Alternativ und/oder zusätzlich können mehrere Komparatoren vorgesehen sein, die das Signal mit unterschiedlichen Si- gnalpegeln vergleichen und so unmittelbar eine Auswertung bewirken. Dies bietet sich insbesondere an, . wenn ..nur , wenige Signalstufen zu unterscheiden sind.
ASELSTAGE als Arbiter. Die analogen RECONREQ-Busse der Zellen eines Clusters werden zunächst auf die Eingänge eines analogen Multiplexers (AMUX) geführt. Liegt an einem der analogen RECONREQ-Busse ein RECONREQ-Signal an, so wird dieser Bus durch den AMUX selektier und das anliegende RECONREQ-Wort auf den Ausgang des AMUX geschaltet.
Bussysteme
Ein RAP enthält bevorzugt zumindest zwei voneinander unabhängige, flexible Bussysteme zur Vernetzung der einzelnen Zellen und zur Verbindung des RAPs mit der Außenwelt. Die bevorzug- ten Bussysteme können konfiguriert und während der Laufzeit rekonfiguriert werden, ohne daß die Tätigkeit des RAP unterbrochen werden muß. Die Bussysteme können mit Eigenschaften ausgestattet sein, wie sie in Patentanmeldung DE 197 04 742.4 beschrieben sind. Unterschieden wird hier das analoge Bussy- stem und das digitale Bussystem.
Das analoge BusSystem (ABUS) Das analoge Bussystem ABUS dient der Übermittlung der zu bearbeitenden, bereits bearbeiteten oder neu erzeugten analogen Daten und analogen Signale von außen an die Zellen und/oder zwischen den Zellen. Insbesondere ist es mit dem ABUS mög- lieh, Zellen zu kaskadieren, um auf diese Weise ein analoges Signal in mehreren aufeinanderfolgenden Operationen zu bearbeiten, wobei eine Operation von jeweils einer Zelle durchgeführt wird. Der ABUS kann mit jeder seiner Leitungen mehrere, insbesonde- re mehr als zwei Informationen gleichzeitig übertragen, zum Beispiel 256 Informationen. ' Der ABUS kann mit einer festen oder variablen Frequenz getaktet sein oder asynchron, das heißt nicht getaktet, sein. Die Implementierung des ABUS kann in einer Art und Weise erfolgen, wie sie in Patentanmeldung DE 197 04 742.4 beschrieben ist.
Das digitale Bussystem (DBUS)
Neben dem ABUS existiert auf dem RAP ein zweites Bussystem, genannt DBUS . Der DBUS ist getaktet und dient der Distribution digitaler Daten, beispielsweise Konfigurationsdaten und Statusdaten, zwischen den Zellen. Die Logiksektion jeder Zelle ist an den DBUS angeschlossen. Die Implementierung des DBUS kann in einer Art und Weise erfolgen, wie sie in Patentanmeldung DE 197 04 742.4 beschrieben ist.
Dieser Aspekt der Erfindung wirdmit Bezug auf die Zeichnung nachfolgend besipielhaft erläutert, wobei dargestellt ist durch Figur Bl zeigt den. Aufbau einer einfachen Zelle Figur B2 zeigt den Aufbau einer erweiterten Zelle Figur B3 zeigt eine mögliche Art der Realisierung von BUFFO bzw. BUFFl
Figur B4 zeigt, wie beispielsweise der Ausdruck f(t)Ag(t) berechnet werden kann.
Figur 1 zeigt den Aufbau einer einfachen Zelle (SCELL). Sie besteht aus der Digitalsektion (0101) und der Analogsektion (0102) . Zentrales Element der Logiksektion ist die Steuerlo- gik CL (0110), die über den DBUS (0130) mit anderen Zellen, zusätzlichen Strukturen. wie beispielsweise einer Ladelogik und/oder einer Switching-Tabelle, wie sie in Patentanmeldung DE 196 54 846.2 beschrieben sind, und/oder der Außenwelt kommunizieren kann.
Der Multiplexer MUXO (0121) ist an den ABUS (0131) angeschlossen. Sofern ein Analogsignal von der SCELL zu verarbeiten ist, selektiert MUXO (0121), über die Leitungen (0141) von der Steuerlogik CL (0101) oder einer anderen ge- eigneten Struktur gesteuert, diejenige Leitung des ABUS
(0131), auf der das zu verarbeitende Analogsignal anliegt.
Der Ausgang von MUXO (0121) ist über die Leitung 0146 mit der analogen Verarbeitungseinheit APU (0120) verbunden. In
• ihr wird das von MUXO selektierte Signal verarbeitet, sofern ein Signal selektiert wurde, oder die APU generiert ein Signal, welches ein RECONREQ-Signal sein kann, oder die APU verharrt in einem vordefinierten Ruhezustand. Das Verhalten der APU wird von der CL (0101) über die Leitungen 0143 gesteuert. Diese Leitungen (0143) können bidirektional ausgeführt sein, so daß die APU in der Lage ist, abhängig von bestimmten Ereignissen und Kriterien Signale an die CL (0101) zu schicken. Die Kriterien können solche sein, die bei- spielsweise auch zur Erzeugung eines RECONREQ-Signals führen. Ein erzeugtes Signal kann insbesondere ein RECONREQ-Signal, wie in Abschnitt cellreconfig' beschrieben, sein. Das von der APU verarbeitete oder erzeugte Signal gelangt über die Lei- tung 0149 auf eine Speicherstufe BIPS (0124), deren Funktion von der CL (0101) gesteuert wird. Dabei stehen die in Abschnitt scell beschriebenen Funktionen BUFNONINV, BUFINV, INVERT, PASS, 3STATE zur Verfügung. Am Ausgang der BIPS wird das Analogsignal von einem Demultiplexer DeMUX (0125) über- nommen, der es, gesteuert von der CL über Leitung 0145 oder einer anderen geeigneten Struktur, auf den ABUS 0131 schaltet.
Die Logiksektion (0101) der SCELL besteht aus der CL (0110) und der LOGUNIT (Olli), die über die Leitung 0140 miteinander in Verbindung stehen.
Figur 2 zeigt den Aufbau einer erweiterten Zelle (ECELL) . Sie ist funktionell unterteilt in eine Analogsektion (0202) und eine Logiksektion (0201) . Die analogen Multiplexer MUXO (0221) und MUXl (0222) selektieren, gesteuert von der CL (0210) der ECELL, die beiden Analogsignale, die von der ECELL verarbeitet werden sollen. MUXO selektiert dabei das erste Analogsignal, MUXl selektiert das zweite Analogsignal. Für die Herkunft der beiden zu verarbeitenden Analogsignale gibt es drei Möglichkeiten.
•Entweder stammt das erste und/oder das zweite Analogsignal vom ABUS, oder das erste und/oder das zweite Analogsignal sind identisch mit der festen Massebezugsspannung GND, oder das erste und/oder das zweite Analogsignal sind identisch mit dem Ausgangssignal der BIPS (0225), welches mittels der Leitung 0252 auf jeweils einen Eingang von MUXO und MUXl zurückgeführt wird. Das erste Analogsignal gelangt von MUXO über die Leitung 0246 auf BUFFO (0223) . Das zweite Analogsignal gelangt von MUXl über die Leitung 0247 auf BUFFl (0224) . Die beiden Analogsignale können in BUFFO bzw. BUFFl gemäß den in Abschnitt über die Ecell beschriebenen Betriebsarten von BUFFO und BUFFl verändert werden. BUFFO und BUFFl können über die Leitung 0242 unabhängig voneinander durch die CL (0210) gesteuert werden. Das analoge Ausgangssignal von BUFFO (0223) gelangt über die Leitung 0248 auf den ersten Analogeingang der XAPU (0220) . Das analoge Ausgangssignal von BUFFl (0224) gelangt über die Leitung 0249 auf den zweiten Änalogeingang der XAPU (0220) . Die XAPU (0220) verarbeitet die beiden analogen Eingangssignale zu einem analogen Ausgangssignal gemäß der durch die CL (0210) über die Leitung 0243 programmierten Funktion, wie in Abschnitt Ecell beschrieben. Das analoge
Ausgangssignal der XAPU (0220) wird mittels der Leitung 0250 an eine weitere Speicherstufe (BIPS, 0225) übertragen. Die BIPS der ECELL und die BIPS der SCELL können gleich sein. Die Funktion der BIPS (0225) wird von der CL (0210) durch die Leitung 0244 gesteuert. Das analoge Ausgangssignal der BIPS wird durch die Leitung 0251 auf den Demultiplexer (DeMUX, 0226) übertragen, der das Signal auf den ABUS (0231) aufschaltet. Der DeMUX wird von der CL (0210) gesteuert.
Die Logiksektion (0201) der ECELL besteht aus einer vollständigen Logiksektion, wie sie in einer SCELL zu finden ist, also der CL (0210) und der LOGUNIT (0211), die über die Leitung (0240) miteinander in Verbindung stehen. Die Logiksektion der ECELL ist darüberhinaus in der Lage, die XAPU (0120) mit ihrem gegenüber der APU einer SCELL erweiterten Funktionsumfang zu steuern und zu verwalten. Beispielsweise logische Operationen wie beispielsweise NAND ' NOR, AND, OR, XOR ermöglichen. Eingangsvariablen solcher Operationen können solche Kriterien sein, die auch zur Bildung eines RECONREQ-Signals führen, aber auch digitale Signale, die eigens dafür erzeugt werden.
Figur 3 zeigt eine mögliche Art der Realisierung von BUFFO bzw.\ BUFFl. OP0 ist ein Operationsverstärker, der so beschaltet ist, daß er das am Eingang IN liegende analoge Signal wahlweise invertiert oder durchschleift. Die Betriebsart wird durch DeMUXO ausgewählt. Wenn- am. S.teuereingang NONINV INV eine logische 0 liegt, wird das Eingangssignal durchgeschleift, wenn am Steuereingang NONINV INV eine logische 1 liegt, wird das Eingangssignal invertiert. Über DeMUXl wird entschieden, ob das Signal im Kondensator C zwischengespeichert wird (BUFFER) , oder ob es ohne Zwischenspeicherung am Ausgang OUT von OP1 zur Verfügung steht (PASS) . Zwischenspeicherung erfolgt, wenn der Steuereingang BUFF PASS eine logische 0 erhält. Keine Zwischenspeicherung erfolgt, wenn der Steuereingang BUFF PASS eine logische 1 erhält.
Figur 4 zeigt, wie beispielsweise der Ausdruck f(t)Λg(t) be- rechnet werden kann.
Dazu wird in der ersten Zelle f (t) logarithmiert, das bedeutet, von f (t) wird der Logarithmus zur beliebigen, aber festen Basis a gebildet. Dazu kann eine SCELL dienen, die als Logarithmierer konfiguriert ist. Das Ergebnis dieser Operati- on wird in der zweiten Zelle mit g(t) multipliziert.. Dazu kann eine ECELL dienen, die beide Signale nach Art eines spannungsgesteuerten Verstärkers miteinander multipliziert. In der dritten Zelle wird die Basis a mit dem Ergebnis der Multiplikationsoperation potenziert. Dazu kann eine SCELL dienen, die als Delogarithmierer konfiguriert ist. Das Ergebnis der Delogarithmierungsoperation entspricht dem Ausdruck ([f (t)]A{g(t)}.
Vorstehend wurde beschrieben, wie eine Einheit mit konfigurierbaren analogen Einheiten aufgebaut werden kann. Es wurde vorgeschlagen, analoge Signale für Arbeiten mit Zellen so auszubilden, dass sie im Betrieb anderer Zellen rekonfigu- rierbar sind und es wurde vorgeschlagen, ihnen dafür eine geeignete Beschaltung zuzuordnen. Es ist nun einzuschätzen, dass die Möglichkeit besteht, einen Baustein zu bilden, bei welchem eine Signalverarbeitung sowohl analog als auch digi- tal erfolgt. Es ist dann möglich, die digitale
Signalverarbeitung gleichfalls mit rekonfigurierbaren Bauelementen vorzusehen, etwa durch ein multidimentionales Feld rekonfigurierbarer digitaler Einheiten, wie es in den verschiedenen Patentanmeldungen des vorliegenden Anmelders beschrieben wurde. Um die erforderliche Wandlung vorzusehen, können einzelne oder mehrere Umsetzerstufen vorgesehen sein., d. h. ein oder mehrere Analog-Digital-Wandler und erforderlichenfalls mehrere Digital-Analog-Wandler . Überdies ist es möglich, verschiedene Wandlerverfahren einzusetzen und die Genauigkeit der Wandlung bei Vorsehen mehrerer Wandlereinheiten unterschiedlich zu gestalten. Gleichfalls ist es möglich, neben einfachen logischen Schaltungen, die einem Analogelement zugeordnet werden, auch komplexere Logik-und Funktionskreise vorgesehen werden können.
Es wird einzuschätzen sein, dass die Vielzahl der Analogelemente, Busse usw. sowie der gegebenenfalls erforderlichen Wandlereinheiten einem jeweiligen Zweck ohne weiteres anpassbar sind, etwa um Hochfrequenzanwendungen zu genügen oder, bei Niederfrequentenanwendungen, eine extreme Rauscharmut bzw. ein sehr gutes Signal- Rauschverhältnis vorzusehen.
Es sei weiter erwähnt, daß bevorzugt die digitalen und analogen Elemente gemischt werden, insbesondere auf ein und demselben IC. Dazu kann in einem gemischtne Feld vermittels eines oder mehrer ADCs und/oder DACs und/oder Komparatoren ein Übergangsmittel vorgesehen werden. Dies ist vorteilhaft, weil etwa im Bereich Software defined Radio die rein digitale Abarbeitung der ankommenden hochfrequenten schwachen Antennensignale noch problematisch ist, wobei trotzdem auch bezüglich der analogen Signalbe- und/oder -Verarbeitung eine große Wahlfreiheit erwünscht ist.
Die Erfindung betrifft weiter Vorrichtungen und Verfahren zur Verbesserung des Transfers von Daten -innerhalb von mehrdimensionalen Anordnungen von Sendern und Empfängern bzw. -zellen. Daß diese gerade in kritischen Applikationen wie Software defined Radio besonders relevant ist, sei erwähnt.
Die Zellen von etwa multidimensionalen Prozessorfeldern können nun unterschiedlichen Funktionen ausführen, etwa Boolesche Verknüpfungen von Eingangs-Operanden bewirken,
Zwischen ihnen verlaufen Verbindungen, die gleichfalls einstellbar sind, typisch etwa Busse, die auf verschiedene Weise eine Vernetzun bewirken können und so ein in seiner Vernet- zung- einstellbares multidimensionales Feld aufbauen. ÜBer die Busse oder anderen Leitungen tauschen die Zellen miteinander wie erforderlich Informationen aust, etwa Statussignale, Trigger oder die zu verarbeitenden Daten. Typisch sind dabei in einem zweidimensionalen Prozessorfeld etwa die Zellen Reihen- und spaltenweise angeordnet, wobei die Ausgänge von Zellen einer ersten Reihe auf Busse geführt, an die zugleich die Eingänge der Zellen der nächsten Reihe zu koppeln sind. Bei einer bekannten Anordnung (Pact XPP) sind zudem Vorwärts- und Rückwärtsregister vorgesehen, um Daten unter Umgehung von Zellen auf Bussysteme anderer Reihen zu leiten, ein Balancing von parallel auszuführenden Zweigen zu erreichen, usw. Es ist auch schon vorgeschlagen worden, derartige Vor- und/oder Rückwärtsregister mit einer über den reinen Datentransfer hinausgehenden Funktionalität zu versehen.
Um eine bestimmte Art der Datenverarbeitung durchzuführen, muß jeder Zelle eine bestimmte Funktion zugewiesen werden und es ist eine geeignete Vernetzung vorzusehen. Es muß dazu, bevor das multidimensionale Prozessorfeld Daten wie gewünscht verarbeitet, festgelegt werden, welche Zelle welche Funktion ausführen soll, es ist für jede an einer Datenverarbeitungs- aufgäbe beteiligen Zelle eine Funktion festzulegen und es muß die Vernetzung bestimmt werden. Dabei ist es wünschenswert, die Funktion und Vernetzung so zu wählen, daß die Datenverarbeitung möglichst zügig erfolgen kann. Oftmals ist es jedoch nicht möglich, eine Konfiguration zu finden, die den ge- wünschten Datentransfer in optimaler Weise gewährleistet. Es müssen dann suboptimale Konfigurationen verwendet werden.
Wünschenswert ist es hier, eine Möglichkeit zu schaffen, die Konfigurierbarkeit zu erleichtern.
Es wird dabei weiter vorgeschlagen, daß bei einem multidimensionalen Prozessorfeld aufweisend eine Vielzahl benachbart angeordneter Datenverarbeitungszellen mit Eingängen, die Daten von Vernetzungswegen erhalten, einer Operanden- Verknüpfungseinheit, die diese entsprechend der jeweiligen Funktion ihrer Operanden-Verknüpfungseinheit verknüpfen und Ausgängen, um die Daten verknüpft auf Vernetzungswege aufzugeben, vorgesehen ist, daß die Datenverarbeitungszellen ein Aspektverhältnis aufweisen, das wenigstens 1,5:1, bevorzugt 2:1 beträgt. Dies ermöglicht das bevorzugte Pipelining in den PAEs und/oder den Bussen. Dabei ist es bevorzugt, aber nicht zwingend, in insbesondere jeder PAE ein eigenes Pipelining vorzusehen, was Takterhöhungen ermöglicht
Damit wird eine wesentliche Verbesserung der Verknüpfbarkeit erreicht, ohne daß teuere Siliziumfläche für zusätzliche Bus- Verbindungen bereitgestellt werden muß oder eine besodners komplexe Topologie gewählt werden muß. Die Verbesserungen der Verbindbarkeit ergeben sich vielmehr allein daraus, daß der Datentransfer quer zu den Zellen verkürzt wird und damit Daten innnerhalb kürzerer Zeiten, bezogen auf die zum durchströmen bzw. Verarbeiten in der Zelle erforderlichen
Zeiten selbst, von Zelle zu Zelle gelangen. Damit wächst die Anzahl der noch- als . nächste Nachbarn zu bezeichnenden Zellen, die also noch innerhalb eines Taktes zu erreichen sind. Es Ergibt sich etwa bei zweidimensionalen Feldern eine Anord- nung, bei der eine Zelle funktional mehr nächste Nachbarn besitzt, als sich topologisch bei reiner Geometriebet.rachtung im zweidimensionalen Fall ergibt. Mit andern Worten ergibt sich nur durch die Veränderung des Aspektverhältnisses funktional eine mehr als zweidimensionale Konnektivität.
Bei den Zellen wird es sich insbesondere um PAE-Zellen mit EALU handeln, wie sie per se aus dem vorzitierten Stand der Technik bekannt sind. Bei solchen Zellen wird es sich wie bevorzugt um grobgranular konfigurierbare Zellen handeln.
Es ist möglich und bevorzugt, wenn die Datenverarbeitungszel- len in Reihen und Spalten angeordnet sind. Dies erlaubt eine besonders günstige Auslegung der Zellen, die typisch näherungsweise trapezförmig bzw. rechteckig sind. Es kann dann vorgesehen sein, daß zumindest bei einem Teil der Datenverarbeitungszellen Dateneingänge vorgesehen sind, um von einer oberen Reihe Daten zu erhalten und Datenausgänge, um an eine untere Reihe Daten auszugeben. .In. einem solchen Fall' ergibt sich die verbesserte Konnektivität in beiden Reihen.
Typisch wird es sich um ein Prozessorfeld handeln, bei dem die Datenverarbeitungseinheiten EALUs, ALU und/oder registerflankierte Zellen sind, d.h. es werden zur Verbindung unterschiedlicher Reihen typisch neben den datenverarbeitenden und dabei Daten verzögerungsfrei, d.h. etwa schnellstmöglich weiterleitenden Zellen noch Register vorhan- den sein, die gerade dazu dienen, Daten bei der Weiterleitung zu verzögern, sei es, um unkontrollierte Rückkopplungsschleifen zu verhindern, bzw. unterbrechen (Prinzip der sog. Annihilated Feedback Loop Termination- sog. AFTER-Zellen) oder bei datenaufspaltendem Durchlaufen von Zweigen und nach- folgendem Wiedervereinigen einen zeitlichen Gleichlauf zu erzwingen (Balancing) .
Mit einem solchen Prozessorfeld ist es nun möglich, eine Konfiguration derart zu wählen, daß, wenn Zellen für die Konfiguration ausgewählt und in Funktion und Vernetzung bestimmt werden, wobei eine Vernetzung derart bestimmt wird, daß Daten von Zelle zu Zelle zumindest weitgehend verzöge- rungsfrei übertragbar sind, vorgesehen ist, daß als benachbarte Zellen, zwischen denen Daten binnen eines Taktes oder einer geringen Taktzahl übertragbar sind, auch solche berücksichtigt werden, die nicht unmittelbar nebeneinander liegen, 5 sondern in der Breite durch eine Strecke getrennt sind, die geringer ist als die' Länge der Zelle. Daß eine Heruntertak- tung der Zellen im Vergleich zu den Bussen per se möglich ist, sei als bevorzugt offenbart. Offensichtlich kann aber auch in Ausnahmefällen eine in die andere Richtung gehende 10 Taktabweichung erfolgen oder auf eine solche verzichtet werden.
Es sei darauf hingewiesen, daß das angegebene minimale Aspektverhältnis das wenigstens 1,5:1 beträgt, bevorzugt noch 15 größere Werte annimmt und sich bei sorgfältiger Auslegung der Einheiten durchaus im Bereich zwischen 5:1 und 10:1 bewegen kann.
Die Erfindung wird im folgenden anhand der Zeichnung be- 2.0 schrieben, worin gezeigt ist durch
Fig. Cl ein Prozessorfeld der vorliegenden Erfindung
25 Nach Fig. 1 umfaßt ein allgemein mit 1 bezeichnetes Prozessorfeld 1 eine Vielzahl benachbart angeordneter i Datenverarbeitungszellen 2 mit Eingängen 3, die Daten von
Vernetzungswegen 4 erhalten, einer Operanden- Verknüpfungseinheit 5, die diese entsprechend der jeweiligen 30 Funktion ihrer Operanden-Verknüpfungseinheit 5 verknüpfen und Ausgängen 6, um die Daten verknüpft auf Vernetzungswege 4 aufzugeben, wobei die Datenverarbeitungszellen bzw. ihre da- tendurchflossene Operanden-Verknüpfungseinheit 5 ein Aspektverhältnis von Länge zu Breite aufweisen, das größer ist als 2:1 beträgt.
Bei dem Prozessorfeld 1 handelt es sich vorliegend um eine per se als XPP bekarinte Anordnung; -alternativ kann es als ein Array aus zur Laufzeit partiell rekonfigurierbaren Elementen angeordnet sein können, etwa als Prozessor, Koprozessor, DSP, usw.. Das Prozesssorfeld ist im dargestellten Fall aus 3 Rei- hen und 4 Spalten aufgebaut, aber nur aus Gründen der
Übersichtlichkeit so vergleichsweise klein gewählt. Typisch wird es größer ausgelegt werden.
Die Datenverarbeitungszellen 2 sind grobgranular konfigurier- bar und weisen feingranulare Statemachines auf. Sie sind auf per se bekannte Weise rekonfigurierbar, ohne den Betrieb zu stören. Auf die hier realisierte, aber nicht näher zu erläuternde Möglichkeit der zentralen Konfigurationsvorgabe etwa durch einen Konfigurationsmanager, der Waverekonfiguration etc. sei hingewiesen. Die Zellen enthalten als Operanden- i Verknüpfungseinheit 5 eine ALU-Einheit, in der arithmetische
Operationen wie Addition, Multiplikation, Subtraktion und Division an bis zu drei eingehenden Operanden durchgeführt werden können, sowie Verknüpfungen wie ISTgrößer? ISTkleiner? IStNUll? sowie XOR, OR, AND NAND etc. Die ALU-Einheit ist mittig angeordnet und flankiert von einem Vorwärts- und einem Rückwärtsregister, die in per se bekannter Weise über die Anschlüsse der Datenverarbeitungszelle 2 gleichfalls mit den Vernetzungswegen 4 verbunden werden können.
Die Datenein- und ausgänge 3 bzw 6 sind über Multiplexer mit den Verbindungswegen 4 verbunden. Es ist im vorliegenden Fall ein Bussystem mit einer Vielzahl von Leitungen vorgesehen, um die Zellen in den Reihen und Spalten konfigurierbar miteinander zu vernetzen.
Das Aspektverhältnis der ALU-Einheit beträgt nun im dargestellten Beispiel 6:1, d.h. die Zelle ist sehr viel länger als breit.
Die Anordnung wird nun verwendet wie folgt:
Es wird zunächst ein Programm zur Ausführung auf dem Array 1 ausgewählt. Dann wird mit per se bekannten Mitteln eine Konfiguration bestimmt, die einen optimalen Daten-Durchsatz erlaubt. Hierbei wird nun berücksichtigt, daß Daten auch an Zellen, die nicht unmittelbar in der Reihe darunter oder seitlich neben einer gegebenen Zelle liegen, sondern z.B. drei Spalten seitlich versetzt sind, innerhalb eines Verarbeitungs-Taktes Daten erhalten können, ohne daß größere Verzögerungen auftreten. Die unter Berücksichtigung dieser erweiterten Nächste-Nachbar-Definition erhaltene Konfiguration wird auf das Array aufkonfiguriert und ausgeführt.
Die vorliegende Erfindung befasst siqh aber nicht nur mit dem vorteilhaften Aufbau eines multidimeriisionalen Feldes rekonfi- gurierbarer Elemente wie bei rekonfigurierbaren Prozessoren, sondern auch mit Verfahren zu deren Betrieb, etwa derart, daß eine Übersetzung einer klassischen Hochsprache (PROGRAMM) wie Pascal, C, C++, Java etc. auf eine rekonfigurierbare Archi- tektur ermöglicht wird. Oftmals wird hier nicht das gesamte multidimensionale Feld rekonfigurierbarer Elemente samt aller zwischen den Daten handhabenden Elemten vorgesehenen Bussystemen, Verbindungsleitungen usw. zur Umkonfiguration freigegeben, sondern es besteht vielmehr das Erfordernis, eine neue Aufgabe einem kleinen Teilbereich 'des multidimensionalen Feldes zuzuordnen. Es ist überdies häufig nicht vorhersagbar, wie dieser Teilbereich beschaffen sein wird. Dies gilt insbesondere dann, wenn auf dem multidimensionalen Feld rekonfigurierbarer Elemente mehrere Aufgaben parallel abgearbeitet werden müssen, etwa im Wege des Multitasking, und/oder nicht vorhergesagt werden kann, wann dort, etwa bei Echtzeitanwendungen, welche Ressourcen zwecks Umkonfiguration freigegeben werden.
Prinzipiell besteht die Möglichkeit, einen Code, der auf dem multidimensionalen Feld rekonfigurierbarer Elemente abgearbeitet werden soll, zur Laufzeit zu übersetzen, also erst dann, wenn die Abarbeitung anderer Aufgaben schon begonnen hat, festzulegen, wie der als nächstes auszuführende Code be- stimmten rekonfigurierbaren Elementen zuzuordnen ist, wie die Verbindung zwischen diesen laufen soll, welche Zwischenspei- cherungen erforderlich sind usw. Es' ist einsichtig, dass eine solche Vorgehensweise' zur Übersetzung einen vergleichsweise hohen momentanen Datenverarbeitungsaufwand erfordert. Gerade in kritischen Rechnerapplikationen, die ein Höchstmaß an Rechenleistung erfordern, ist es gewünscht, für eine solche Übersetzung während- der Laufzeit keine zusätzliche Rechenleistung zu verbrauchen. Es ist daher auch schon üblich, Programmcode vor Beginn des Programmes zu kompilieren und dann Teilkonfigurationen zu bestimmen, die jeweils in das Feld hinein konfiguriert werden, sobald dort entsprechende Ressourcen frei sind. Ein Problem besteht allerdings darin, dass, gerade bei Echtzeitanwendungen, im Vorfeld nicht feststeht, wie die jeweils verfügbaren Ressourcen angeordnet sind. Dies betrifft einer- seits die Funktionalität der zur Datenhandhabung verfügbaren Elemente, in die hinein konfiguriert werden könnte, sofern nicht alle Daten handhabenden Elemente dieselbe Funktion besitzen. So wäre denkbar, in einem multidimensionalen Feld rekonfigurierbarer Elemente verschiedene Zellen mit Rechen- werken auszustatten, die für Fließkomma-Berechnungen ausgelegt sind, Elemente' vorzusehen, die. lediglich Bool'sche Daten handhaben, Elemente, die über zugeordnete Speicher verfügen, Elemente, mit oder in denen Sequenzer vorgesehen werden können usw. Hier ist eine Ausführung mit Vorkompilie- rung darauf angewiesen, entweder mit der Umkonfiguration zu ' warten, bis genau jene Zellen zur Verfügung stehen, die die in der Vorkompilierung festgelegten Funktionen und Anordnungen besitzen. Auch muß bei der Vor ompilierung zudem der kleinste, allen Zellen gemeinsame Funktionsumfang verwendet werden. Beides verschwendet Ressourcen. Zudem ist meist nicht klar, wie die für die Umkonfiguration freigegebenen Elemente angeordnet sind und welche Verbindungen verfügbar sind; 'auch dadurch wird gegebenenfalls die Hineinkonfiguration einer neuen Aufgabe (Task) massiv erschwert.
Das Problem wird noch gravierender, wenn große Bereiche des multidimensionalen Feldes freigegeben werden und prinzipiell die Möglichkeit und/oder der Zwang besteht, mehrere Konfigurationen für unterschiedliche Aufgaben gleichzeitig in das Feld hinein zu konfigurieren. Es wird somit gemäß- einem ersten wesentlichen Aspekt der Erfindung ein Verfahren zum Betrieb eines multidimensionalen Feldes rekonfigurierbarer Elemente vorgeschlagen, worin Gruppen zusammen datenhandhabender Elemente in vorbestimmter Weise während der Laufzeit zur Abarbeitung vorgegebener Aufgaben im Feld konfiguriert werden und wobei vorgesehen ist, dass für zumindest eine abzuarbeitende Aufgabe eine Mehrzahl von solchen Elementgruppenanordnungen im multidimensionalen Feld bestimmt wird, die zur Abarbeitung der vorgegebenen Auf- gäbe geeignet sind, für die Abarbeitung der vorgegebenen
Aufgabe eine dann besonders geeignete Elementgruppenanordnung aus der Mehrzahl ausgewählt wird und die ausgewählte Anordnung in das Feld hinein konfiguriert wird.
Die Erfindung schlägt somit vor, bei der Vorbereitung der eigentlichen Datenverarbeitung eine Vielzahl von Anordnungen bzw. Konfigurationen vorherzubestimmen und dann aus den vorbestimmten Elementgruppenanordnungen eine solche auszuwählen, die für die Abarbeitung der vorgegebenen Aufgabe bei den dann gegebenen Feldressourcen besonders gut geeignet ist. Damit ist eine wesentliche Verbesserung im Betrieb eines multidimensionalen Feldes rekonfigurierbarer Elemente im Wesentlichen durch eine einfache Erweiterung des Compilers gegeben, mit dem die zuvor programmierten Codes übersetzt werden, und zwar dadurch, dass dieser nicht nur eine einzige Konfiguration für eine gegebene Aufgabe bestimmt, sondern mehrere solcher Konfigurationen und somit ausnützt, dass keine eindeutige Lösung für das Problem besteht, ein Stück gegebenen Hochsprachecode auf ein multidimensionales Feld re- konfigurierbarer Elemente zu übersetzen. Es sei erwähnt, daß hier der Begriff "Compiler" verwendet wird für ein Mittel, das Konfickurationen bestimmt, unabhängig davon, ob es sich um einen Routerteil, einen Übersetzerteil oder einen anderen Teil eines Mittels zur Konfigurationsbestimmung anhand von Programmcodes handelt. Dieses ' Mittel kann mittels Festverdrahtung, d. h. als Hardware oder als Softwareprogramm realisiert sein.
Es ist möglich, aus dieser Vielzahl von potentiell möglichen Konfigurationen, die zur Abarbeitung eines gegebenen Stück- Codes möglich sind, eine Auswahl anhand der Geometrie zu treffen, die diese Elementgruppenanordnung im Vergleich zu jener besitzt, .die die im multidimensionalen Feld für die Umkonfiguration verfügbaren bzw. vermutlich bald verfügbar werdenden Elemente besitzen. So kann durch einen einfachen Mustervergleich versucht werden, eine Konfiguration, d. h. Elementgruppenanordnung, auszuwählen, die möglichst alle der frei gewordenen oder frei werdenden Elemente abdeckt bzw. möglichst wenig Elemente des multidimensionalen Feldes ungenutzt lässt. Wenn lediglich auf die Geometrie Rücksicht genommen wird, etwa weil alle Daten handhabenden Elemente des multidimensionalen Feldes den für die Hineinkonfiguration erforderlichen Funktionsumfang besitzen, so kann die Auswahl mit per se bekannten Algorithmen wie bei der Schnittmusteroptimierung erfolgen. Es kann dabei entweder auf die bereits verfügbaren Elemente Bezug genommen werden, oder es kann, ins- besondere im Hinblick darauf, dass die Umkonfiguration oftmals die Übertragung von Konfigurationsdaten zu den Elementen umfasst und eine solche
Umkonfigurationsdatenübertragung Zeit in Anspruch nimmt, vorgesehen werden, dass auch vermutlich bald verfügbare Elemente mit bei der Auswahl der jeweils optimalen Geometrie berücksichtigt werden. Dabei kann ausgenützt werden, dass es häufig möglich ist, vorherzusagen, dass bestimmte Elemente bald für die Umkonfiguration verfügbar werden, etwa wenn sie Daten für die Weiterverarbeitung von Zellen erhalten haben, die bereits ihre Umkonfigurierbarkeit angedeutet haben und die Anzahl der noch erforderlichen Verarbeitungstakte, der hierzu daten- stromabwärts liegenden Zellen endlich und abschätzbar oder bekannt ist. Derartige Information ist erfindungsgemäß als Umkonfigurierbarkeits-Vorhersage verwaltbar. Daß zu den verfügbaren und/oder benötigten Elementen auch Busverbindungen, Leitungen etc. zählen, sei erwähnt.
Die Auswahl der optimalen Konfiguration kann dabei in einem Präprozessor oder einem Teilbereich des multidimensionalen Feldes der rekonfigurierbaren Elemente erfolgen und insbesondere von einem Datenverarbeitungsprogramm und/oder -mittel übernommen werden, das die Durchführung der verschiedenen
Aufgaben zeitlich koordiniert, Priorisierungen vornimmt usw. Es kann sich hierbei insbesondere um einen Teil eines Betriebssystems handeln, sofern das multdimensionale Feld rekonfigurierbarer Elemente als Prozessor oder Koprozessor ausgeführt ist. Die Verwendbarkeit der CT, eines Schedulers für Hyperthreading, Multitasking, Multithreading usw. sei erwähnt. Auf entsprechende weitere Teile der vorliegenden Anmeldung sei diesbezüglich verwiesen. Daß solche Einheiten hard- und/oder softwaremäßig implementierbar sind, sei er- wähnt.
Gerade dann, wenn Konfigurationsdaten aus einem Speicher eingelesen werden, der nicht vernachlässigbare Zugriffszeiten besitzt, bzw. wenn sie, sollte eine Echtzeitbestimmung einer Konfiguration gewünscht werden, mit nicht vernachlässigbaren Generierungszeiten generiert werden, ist es wünschenswert, zunächst einen Kenndatensatz vorzusehen, der gegenüber dem eigentlichen Konfigurationsdatensatz in der Grosse reduziert ist und dann eine Auswahl nur auf Grund dieses Kenndatensatzes zu treffen. So kann etwa beim Laden einer neuen Konfiguration aus einem langsamen Speicher wie von einer Festplatte zunächst lediglich ein Kenndatensatz bzw. eine Kenndatensatzgruppe heruntergeladen werden, der die Umrisse der Konfiguration betrifft. Da ein solcher Umrisskenndatensatz in der Größe gegenüber dem vollständigen Konfigurationsdatensatz typisch sehr reduziert sein wird, ist es auch möglich, eine Vielzahl von Kenndatensätzen für eine Vielzahl unterschiedlicher. Konfigurationen, vorab in einen Hauptspeicher zu laden, der einen sehr schnellen Zugriff erlaubt, an Hand der unterschiedlichen Konfigurationsdatensätze eine schnelle Auswahl zu treffen und dann aus dem langsamen Speicher die kompletten Konfigurationsdaten zur ausgewählten Konfiguration herunter zu laden. Es sei darauf hingewiesen, dass es in solchen Fällen auch möglich ist, einen Teil der Konfigurationen vorneweg miteinzulesen, etwa dann, wenn absehbar ist, dass bestimmte Konfigurationen typisch bevorzugt sind, sei es, weil statistische Auswertungen des typischen
Datenverarbeitungsbetriebes für eine Vielzahl von multidimensionalen Feldern rekonfigurierbarer Elemente oder für ein einzelnes multidimensionales Feld. dies ergeben haben, etwa weil zu einer Gruppe von Anwendungen wie im UMTS-Base- Station-Bereich durch Analyse typischer Aufgaben festgestellt wurde, dass bestimmte Umkonfigurationen besonders häufig auftreten, oder weil für einen einzelnen Benutzer festgestellt wurde, dass immer wieder dieselben Anwendungen parallel in bestimmter Weise in das Feld hinein konfiguriert werden müs- sen.- Das Vorab-Mitladen bestimmter Konfigurationen kann auch dann sinnvoll sein, wenn sich diese Konfigurationen durch eine besonders einfache Geometrie auszeichnet, etwa weil sehr kleine Volumina des multidimensionalen Feldes rekonfigurierbarer Elemente davon überdeckt werden (Volumina nimmt hier auf das Volumen des multidimensionalen Feldes Bezug, bezeichnet also bei zweidimensionalen Felder rekonfigurierbarer Elemente die Fläche bzw. Flächengeometrie der für die Umkonfiguration verfügbaren rekonfigurierbaren Elemente etc.).
Es ist auch möglich und insbesondere bei der Abarbeitung komplexer Aufgabenstellungen, sei es durch die Abarbeitung besonders rechenintensiver Probleme, sei es im Multitasking, Multithreading oder bei anderen Formen der Parallelabarbeitung von Daten, auch bevorzugt, zu überprüfen, ob mehrere, insbesondere gleich priorisierte Elementgruppenanordnungen für unterschiedliche Aufgaben simultan durch geeignete Aus- wähl in das Feld hinein konfigurierbar sind. Dabei kann, abhängig von der Priorisierung einer bestimmten Aufgabe vorgesehen werden, dass die für die Abarbeitung einer vorgegebenen Aufgabe zur Verfügung gestellte Fläche oder Abarbeitungszeit größer oder kleiner, ausfällt, etwa indem durch Aufbau von Sequenzern mit den Daten handhabenden Elementen die Größe einer Konfiguration unter Verlangsamung der Datenabarbeitung verringert wird.
Es kann auch erwünscht sein, dass zunächst eine erste Ele- mentgruppenanordnung in das Feld hinein konfiguriert wird und begonnen wird, mit dieser Elementgruppenanordnung die Aufgabe abzuarbeiten, bis ein vorgegebenes Ereignis auftritt und dann unter zumindest partieller Rekonfiguration mit der Aufgabenabarbeitung in einer weiteren Elementgruppenanordnung fortgefahren wird. Hierbei kann etwa vorgesehen werden, dass zur Erzielung einer bevorzugten Geometrie von Konfigurationen auf dem multidimensionalen Feld, etwa streifenförmig hinter- einander angeordneten Zellen für jede Aufgabe, zu festgelegten Taktzeiten, etwa alle tausend, zehntausend oder hunderttausend Takte, die Abarbeitung aller oder eines Teiles aller Konfigurationen unterbrochen wird, die Ergebnisse wie erforderlich zwischengespeichert werden, auch was nur in einer Konfiguration intern erforderliche Daten wie Schleifen-, Zählerstände usw. angeht, und dann eine Neukonfiguration mit entsprechenden, bevorzugten Geometrien vorgenommen wird, um so ein allmähliches Zerfasern von Konfigurationen zu vermei- den, was schon aufgrund des erhöhten Bedarfs an Busleitungen Unerwünscht ist.
Alternativ und/oder zusätzlich ist es auch möglich, selbstfaltende Konfigurationen vorzusehen, wobei etwa zunächst mit der Abarbeitung einer Konfiguration über das gesamte Array begonnen wird, und sich dann, sobald zusätzliche Ressourcen durch eine andere Aufgabe angefordert werden, diese erste Konfiguration mehr oder minder selbsttätig zusammenzieht, etwa durch Sequenzerbildung mit einem Element, um Elemente für die neue Aufgabe freizugeben. Dieses Zusammenziehen kann durch Vorgabe neuer, Platz sparenderer Konfigurationen für ein und dieselbe Aufgabe' erreicht werden, insbesondere dann, wenn diese Platz sparenderen Konfigurationen in bei den Daten handhabenden Elementen vorgesehenen Konfigurationsspeichern mit abgelegt werden. Auf die Anmeldung zur Wave-
Rekonfiguration sei dabei nur beispielsweise hingewiesen. Es ergibt sich dann eine Situation, bei der Konfigurationen allmählich enger und enger zusammenrücken..
Die Auswahl einer vorgegebenen Elementgruppenanordnung, die in ein Feld hinein zu konfigurieren ist, kann, abgesehen von der verfügbaren Geometrie, auch von anderen Parametern abhän- gig gemacht werden. Hierzu zählt unter anderem die erzielbare Abarbeitungsgeschwindigkeit, die Priorität einer Aufgabe und/oder der Energieverbrauch, der zur Abarbeitung einer vorgegebenen Aufgabe in einer vorgegebenen Zeit erforderlich ist. Es sei darauf hingewiesen, dass mehrere Parameter gleichzeitig betrachtet werden können, sei es dadurch, dass zunächst anhand eines ersten Parameters wie des benötigten Feldvolumens als gleichwertig angesehene Konfigurationen durch Betrachten eines zweiten Parameters verworfen werden, sei es, indem, etwa mit Methoden der unscharfen Logik, mehrere Parameter gleichzeitig soweit wie möglich optimiert werden.
Die Erfindung wird nun im Folgenden nur beispielsweise anhand der Figuren erläutert, worin gezeigt ist durch
Fig. Dl ein multidimensionales Feld Daten handhabender Elemente in teilweise zu rekonfigurierendem Zustand; Fig. D2 Beispiele für unterschiedliche Konfigurationsgeometrien;
Fig. D3 ein teilweise zur Laufzeit umkonfigurierter Prozessor.
Nach Fig. 1 umfasst eine allgemein mit 1 bezeichnete Datenverarbeitungsvorrichtung 1 ein multidimensionales Feld rekonfigurierbarer Elemente 2 sowie einen Präprozessor 3, der Konfigurationen in das multidimensionale Feld 1 über geeignete Datenbusse 4 einspeist und Informationen über rekonfigurierbare Elemente aus dem multidimensionalen Feld 2 mehrere Elemente erhält sowie mit einem Speicher 5 mit langsamem Zugriff verbunden ist, in dem Konfigurationen für in dem multidimensionalen Feld 2 abzuarbeitende Aufgaben vorab abgelegt sind.
Der multidimensionale Prozessor 1 ist im vorliegenden Bei- spiel eine XPU-Architektur, die PAE als konfigurierbare
Elemente aufweist und nach PACT02, 04, 08, 10, 13 aufgebaut ist. Er erhält Daten von Eingabe-/Ausgabe-Schnittstellen 6 in Echtzeit zur Abarbeitung, wobei nicht vorhersehbar ist, wie diese Daten eintreffen und/oder abzuarbeiten sind. Es können hierfür eine Tastatur, Bilder abrufende Kameras, A/D-Wandler usw. vorgesehen sein.
Das multidimensionale Feld 2 besteht, zur Vereinfachung der Veranschaulichung, obwohgl technologisch keinesfalls zwin- gend, vorliegend nur aus einer Reihe ausschließlich identischer datenhandhabender Elemente, zwischen denen geeignete Vernetzungen über Busse und dergleichen konfigurierbar sind. Aus Gründen der Anschaulichkeit wird vorliegend von unbegrenzten Busressourcen ausgegangen, obgleich rein praktisch die typische Anwendung auch solcher Ressourcen und deren
Knappheit bei der Vorabbestimmung multipler Konfigurationsmöglichkeiten berücksichtigt wird. Die datenhandhabenden Elemente sind im vorliegenden Fall geeignet, sequenzartig die Befehle abzuarbeiten, wie dies per se bekannt ist, das heißt, es ist möglich, Sequenzer über einzelne Zellen oder Gruppen derer aufzubauen. Daß hierbei ein Zeitteilungsmultiplexing möglich ist, sei erwähnt. Dies erlaubt eine entsprechende Faltung mehrerer Operationen, dann dann bei großen Arrays bzw. mehr Platz auch ausgefaltet werden können.
Das multidimensionale Feld 2 ist laufzeitrekonfigurierbar, das heißt es ist möglich, einzelnen der datenhandhabenden Elemente oder Gruppen derer neue Aufgaben während der Laufzeit zuzuordnen, ohne den Betrieb der Gesamt-Anordnung oder anderer Elemente bzw. Gruppen ' derer insgesamt zu unterbrechen. Wie bevorzugt und per se bekannt sind den datenhandhabenden Elementen Konfigurationsspeicher lokal zugeordnet, genau so wie Register, nämlich Forward- und Backward-Register, Busleitungen, feingranulare Zustandsma- schinen zum Austausch von Triggersignalen untereinander und mit der Präprozessoreinheit 3 usw. Auf die Möglichkeit der Ausgestaltung der rekonfigurierbaren Elemente nach PCT-DE
97/02949, PCT-DE 97/02998, PCT-DE 98/00334, .PCT/DE 99/00504, PCT/DE 99/00505, PCT/DE 00/01869 usw. sei hingewiesen. Die vorgenannten Schutzrechte und die weiteren Schutzrechte des Anmelders zu rekonfigurierbaren Prozessoren, deren Teilen und Verfahren zu deren Betrieb sind zu Offenbarungszwecken vollumfänglich integriert.
Der Präprozessor 3 ist dazu ausgebildet, Konfigurationen in das multidimensionale Feld hinein zu laden und zwar über Lei- tungen 4, wenn er aus dem multidimensionalen Feld die Meldung erhält, dass einzelne Elemente oder Gruppen derer rekonfigu- rierbar sind. Der 'Präprozessor 3 enthält einen lokalen Speicher (Cache) und ist mit einem weiteren Speicher 5 (Hard- disk, RAM) verbunden, auf den langsamer zugegriffen werden kann und auf dem Konfigurationsdaten abgelegt sind. Geeignet ist etwa eine CT.
Es sei darauf hingewiesen, dass es nicht erforderlich ist, den Präprozessor 3 als externes Bauteil vorzusehen. Die ge- zeigte Darstellung wurde ausschließlich aus didaktischen
Gründen gewählt. Er kann integriert sein mit dein multidimensionalen Feld 2 auf einem einzelnen Chip und/bder seine Funktion kann durch einzelne Daten handhabende Elemente 2 des Prozessorfeldes ausgeführt werden.
Über die Leitungen 4 werden Konfigurationsdaten und Konfigu- rationsanforderungen übertragen. Auf die Implementierung von Rdy/Ack-Protokollen,' Vorab-Konfiguration von Elementen in elementennahen Speichern etc., die möglich, aber nicht zwingend ist, wird hingewiesen.
Im Speicher 5 sind nun eine Vielzahl von Konfigurationen für unterschiedliche Aufgaben und Kenndaten hierzu abgelegt. Dies wird für ein einfaches Beispiel mit Bezug auf Fig. 2 erläutert.
Nach Fig. 2 sind etliche Konfigurationen für zwei Aufgaben a) und b) abgelegt. Wie ersichtlich, sind für die Aufgabe a) insgesamt vier Konfigurationen abgelegt, die alle dieselbe Funktion ausführen, aber unterschiedliche Verbindungen der Zellen untereinander haben und sich insbesondere hinsichtlich ihrer äußeren geometrischen Gestalt unterscheiden, in der die Zellen angeordnet sind.
Wie ersichtlich, sind beispielsweise drei Konfigurationen vorabgelegt, in denen sieben datenhandhabende Elemente wie PAEs benötigt werden und eine Konfiguration, in der unter Ausnutzung der Sequenzereigenschaft der datenhandhabenden Elemente nur vier Elemente benötigt werden. Die geometrische Form der jeweiligen Konfiguration ist dabei wie durch die Zahlen in Klammern angedeutet, gleichfalls mitabgelegt. Die- ser Kenndatensatz umfasst eine erste Ziffer, die angibt, wieviele Spalten Abstand die äußersten Zellen links und rechts voneinander haben; es folgen dann nach einem Komma die Anzahl der Elemente in einer Spalte, die benötigt werden. Sind in einer Spalte Reihen frei, d. h. nicht belegt, steht gleichfalls ein b in der Kennύng. Ist dabei eine Spalte freigelassen, das heißt von der jeweiligen Konfiguration bis auf Busse nicht belegt, so steht hierfür ein b. in der Konfiguration. Dies ist ersichtlich an den Konfigurationen I und II. Die Daten zu einer Spalte sind von jenen der nächsten Spalte durch Komma getrennt. Ähnliche Konfigurationsdaten sind auch für eine zweite Konfiguration abgelegt b) .
Die Anordnung wird verwendet wie folgt :
Wenn im multidimensionalen Feld rekonfigurierbarer Elemente Ressourcen für die Rekonfiguration freigegeben sind, wie dies durch die "0" in Fig. 2 dargestellt ist, so lädt der Präprozessor 3 aus dem Speicher 5 zunächst .die wenig umfangreichen und damit schnell zu ladenden Kennsätze zu -den Konfigurationen. Er bestimmt dann, welche Aufgabe schnell abzuarbeiten ist und welche Konfigurationen gemeinsam besonders gut in das Feld eingeladen werden können.. Dies geschieht durch Vergleich der maximalen Spaltenbreite einer möglichen Konfiguration mit der tatsächlich verfügbaren Spaltenbreite. Zur Aufgabe a) können so Konfiguration III und IV verworfen werden, die zuviel Spalten benötigen. Aus den verbleibenden sind aufgrund der geometrischen Form die Konfigurationen I und II gleichfalls zu verwerfen. Es wird dann untersucht, welche Konfiguration von b) zu laden wäre. Hier sind per se alle drei Konfigurationen ladbar.
Nun- wird untersucht, ob es eine Möglichkeit' gibt, von den verbleibenden Konfigurationen zu den Aufgaben gleichzeitig zwei Konfigurationen in das Feld zu laden. Dazu werden die Konfigurationen in unterschiedlicher Weise aneinander gesetzt und es wird die benötigte maximale Spalten- und Reihenzahl mit der verfügbaren Maximalzahl verglichen. Es wird so festgestellt, daß sich eine optimale Ausnutzung der freigewordenen Elemente ergibt, wenn die Konfiguration Ib und die Konfiguration Ia' unmittelbar übereinander angeordnet werden. Diese Konfigurationen werden dann in das Prozessorfeld geladen.
Daraufhin kann die Datenverarbeitung mit einer Konfigurationsanordnung wie in Fig. 3 gezeigt fortgesetzt werden. Es sei erwähnt, dass in Fällen, in denen unterschiedliche Daten handhabende Elemente vorgesehen werden, die entsprechende Information gleichfalls im Kenndatensatz abgelegt werden kann.
Wie vorstehend ersichtlich, ist die Art und- Weise, wie ein gegebenes Prozessorfeld für eine vorgegebene Weise konfiguriert werden muß, nicht eindeutig. Dies gilt insbesondere dann, wenn es sich um komplexe Felder handelt, bei denen etwa zumindest zum Teil in den Leitungen Register vorgesehen sind und weiter mit diesen insbesondere auch Additionen und/oder Vergleiche von Daten durchzuführen sind, wie dies auch in arithmetische Logikeinheiten (ALUs) aufweisenden Logikzellen des Feldes' der Fall sein kann. Oft ist es auch möglich und/oder nötig, etwa bei Inbetriebnahme, aus vielen Konfigurationen mehrere mögliche zu wählen.
Es ist bereits vorgeschlagen worden, eine Konfiguration aus mehreren per se verwendbaren auszuwählen anhand der momentanen Konfigurierbarkeit unter geometrischen Aspekten, der Ressourcenverfügbarkeit und/oder auszuwählen aufgrund von Ge- schwindigkeitsaspekten. Dies kann die Auswahl erleichtern, stellt aber oftmals nur unzureichende Kriterien dar. Es ist wünschenswert, die Konfigurationsauswahl weiter verbessern zu können. Es ist weiter oftmals möglich, eine bestimmte Daten- Verarbeitungsaufgabe selbst auf unterschiedliche Weise durchzuführen. So ist etwa eine Reihe von Algorithmen bekannt, die es erlauben, einen Satz Daten auf unterschiedliche Weise zu sortieren. Auch hier ist es erforderlich, zwischen unterschiedlichen Algorithmen, die prinzipiell geeignet sind, eine bestimmte Datenverarbeitungsaufgabe zu bewältigen, aufgrund von objektivierbaren Kriterien zu wählen. Daß diese Wahl zur Laufzeit und/oder davor erfolgen kann, sei erwähnt. Insgesamt ist es somit wünschenswert, Auswahlmöglichkeiten bei der Datenverarbeitung mit konfigurierbaren multidimensio- nalen Prozessorfeldern zu verbessern, etwa um bei festgespeicherten Konfigurationen sicherzustellen, daß eine bereits anwendungszweckoptimierte Auswahl getroffen wurde.
Die vorliegende Erfindung schlägt somit in einem ersten Grundgedanken ein Verfahren zur Auswahl eines aus einer Vielzahl von Wegen zur Erzielung eines
Datenverarbeitungsergebnisses bei der Datenverarbeitung unter zumindest möglicher Verwendung multidimensionaler Felder konfigurierbarer Datenhandhabungselemente vor, bei welchem vorgesehen ist, daß den Datenhandhabungselementen konfigurationsabhängig verbrauchsbezogene kennzeichnende Größen zugeordnet werden und eine Wegauswahl anhand der Zuordnung erfolgt.
Ein weiterer Grundgedanke kann somit in der Erkenntnis gesehen werden, daß bestimmten Datenverarbeitungswegen typische Leistungs- bzw. Energieaufnahmewerte zugeordnet werden kön- nen, um dann eine Wegauswahl unter Berücksichtigung derselben vorzunehmen. Als Erzielung eines Datenverarbeitungsergebnisses wird auch eine bestimmte Art und Weise einer Zwischenergebnisberechnung und/oder einer Datenhandhabung etc. betrachtet. Durch die Zuordnung Verbrauchskennzeichnender Größen wird also eine wesentliche Ojektivierung der Wegauswahl möglich.
Die Auswahl eines Weges kann beispielsweise die Wahl eines gegebenen Algorithmus aus einer Vielzahl unterschiedlicher Algorithmen umfassen, sei es für -Aufgaben wie das Sortieren von Daten, bestimmte mathematische Transformationen oder dergleichen. Liegen in einer Programmmodul-Bibliothek etwa mehrere Sortieralgorithmen, Algorithmen zur Bestimmung einer Fourier-Transformierten oder dergleichen vor, so kann z. B. zu jeder eine verbrauchskennzeichnende Größe ermittelt werden und es wird dann unter Berücksichtigung derselben eine Auswahl vorgenommen. So wird es möglich, Algorithmen zu wählen, die beispielsweise einen besonders niedrigen Energieverbrauch besitzen. Dies kann für mobile Anwendungen wie bei Laptops,
Funktelefonen und dergleichen sinnvoll sein, ' bietet aber auch
1 in Bereichen Vorteile, bei denen sehr rechenintensive Aufga- i ben zu bewältigen sind, etwa in Servern, Basestations usw. , wo die in einer Verarbeitungseinheit erzeugte Leistung wegge- kühlt und/oder abgeführt werden muß. Durch die Erfindung können so Systemgesamtkosten minimiert werden. Auch kann etwa ein Place&Route-Algorithmus die Optimierung ausnutzen, etwa zur Erzielung niederenergetischer Anordnungen. Dies ist besonders bevorzugt und wird als für sich erfinderisch angesehen. Es ist weiter möglich, für ein und denselben Algorithmus eine Vielzahl unterschiedlicher Konfigurationen vorzusehen, etwa unter Berücksichtigung verschiedener, simultan und/oder se- quenziell auf das multidimensionale Feld zu konfigurierender Teilaufgaben, und dann eine Auswahl aus diesen unter Auswertung der jeweils zugeordneten Größe vorzunehmen.
Weiter ist es möglich, unter Anwendung des erfindungsgemäßen Verfahrens darüber zu befinden, ob eine gegebene Aufgabe der Datenverarbeitung, bzw. eine Teilaufgabe, dem betrachteten multidimensionalen Feld konfigurierbarer Datenhandhabungselemente und/oder einem anderen Element zur Datenverarbeitung außerhalb des multidimensionalen Feldes zugeordnet werden soll; so kann etwa- darüber entschieden werden, ob dann, wenn das multidimensionale Feld als Koprozessor dient, eine bestimmte Teilaufgabe besser auf einer rein sequenziell arbeitenden CPU oder dem rekonfigurierbaren, typisch als Da- tenflußprozessor oder dergleichen arbeitenden multidimensionalen Feld abgearbeitet werden soll. Es ist auch möglich, über das Erfordernis oder die Sinnhaftigkeit dedi- zierter Schaltkreise wie ASICs für bestimmte Aufgaben zu befinden.
Typisch wird es sich bei dem Feld, konfigurierbarer Datenhand- habungselemente um ein zweidimensionales Feld handeln. Es sei erwähnt, daß die Erfindung für Felder wie FPGAs, XPP-Prozes- soren usw. anwendbar ist. Es ist besonders bevorzugt für zur Laufzeit konfigurierbare-, insbesondere partiell zur Laufzeit ohne Störung nicht umzukonfigurierende Elemente teil-rekon- figurierbarer Prozessorfelder. In typischen Anwendungen wie bei XPP-Feldern werden als zu berücksichtigende Datenhandhabungselemente insbesondere zumindest einige, bevorzugt alle der Elemente Busse, Register, ALUs, RAMs, I/O-Ports sowie konfigurierende Einheiten (CT's) erfaßt. Es sei darauf hingewiesen, daß von bestimmten dieser Teile nur eine abgeschätzte oder partielle Verbrauchsberücksichtigung erforderlich ist; so brauchen etwa bei Bussen lediglich bestimmte Treiberstufen und dergleichen berücksichtigt werden. Weiter kann es erforderlich sein, auch Taktbeschaltungen mit zu erfassen, sei es, weil in bestimmten Datenverarbeitungswegen eine Voll- oder Teilabschaltung eines Taktzweiges möglich ist, sei es, weil bestimmte Schaltungsbereiche mit einem unterschiedlichen Takt versorgt werden können oder müssen.
Es ist bevorzugt, wenn der kennzeichnende Wert nur grob abgeschätzt wird, etwa dahingehend, daß festgestellt wird, ob ein bestimmtes Element momentan verwendet wird und/oder konfiguriert ist, oder ob es stattdessen nicht verwendet wird und gegebenenfalls sogar von einer Spannungsversorgung bis auf einen Wake-up-Schaltkreis und/oder von einer Taktversorgung zumindest weitgehend abgeklemmt ist. Es ist also nicht erforderlich, eine absolut exakte Verbrauchskennzeichnung vorzunehmen, etwa unter Festlegung des Verbrauchs der spezi- fischen algebraischen Operation, die einer jeweiligen arithmetisch-logischen Einheit aktuell und/oder dauerhaft zugeordnet wird. Vielmehr kann es ausreichend sein, die Verbrauchskennzeichnende Größe nur dahingehend zu bestimmen, ob und wie weit tatsächlich das jeweilige Element im Augen- blick verwendet wird. Ausnahmen hiervon sind möglich. Eine
Ausnahme kann insbesondere gemacht werden für Operationen wie Multiplikationen, bei denen sehr große Schaltkreisflächen mit Leistung versorgt werden müssen. In einem solchen Fall kann eine weitere Detaillierung vorgesehen werden.
Es ist möglich und bevorzugt, jedem unterschiedlichen Daten- handhabungselement unterschiedliche Kennzahlen, wie strom- und/oder leistungsau nahmebezogener Größen als verbrauchskennzeichnende Größen zuzuordnen. Dieses kann gegebenenfalls in taktabhängiger Weise (Leistungsaufnahme pro Taktfrequenz) geschehen. Weiter ist es möglich, eine Auswahl unter Berück- sichtigung eines Summenwertes vorzunehmen, also über die
Betrachtung des Gesamtverbrauchs oder abgeschätzten Gesamtverbrauchs eines betrachteten Weges zu entscheiden.
Die Auswahl wird typisch nicht alleine unter Berücksichtigung der verbrauchskennzeichnenden Größen erfolgen, sondern kann andere Parameter miterfassen, etwa eine erforderliche Ausführungszeit, erforderliche Ressourcen auf einem multidimensionalen Feld, eine aktuelle oder erwartete Prozessorauslastung durch andere Aufgaben und/oder eine aktuell gewünschte beziehungsweise erwartete oder zulässige Leistungsaufnahme. Die Kennzahlen sind durch Meßwerte und/oder Hardware- bzw. Syntheseanalysen .erhältlich und insbesondere in Look-Up-Tabellen hinterlegbar.
Die Auswahl des jeweiligen Weges kann vor der eigentlichen Datenverarbeitung erfolgen, etwa bei der Festlegung von später zu ladenden Konfigurationen unter mehreren, theoretisch implementierbaren Konfigurationen. In einem solchen Fall ist es besonders ist bevorzugt, wenn die kennzeichnende Größe während der Simulation der Datenverarbeitungsfunktionen mit ermittelt wird. Alternativ kann vorgesehen werden, daß die Auswahl unter verschiedenen möglichen Wegen während der Lauf- zeit erfolgt. In einem solchen Fall werden etwa mehrere mögliche Algorithmen, z. B. um Daten zu sortieren, bereitgestellt, es wird dann abgefragt, wie viele einzelne Daten zu sortieren sind und wie gegebenenfalls der Ordnungs- grad dieser Daten ist und es wird erst danach eine Auswahl unter verschiedenen,' vorher bestimmten Algorithmen anhand der ihnen zugeordneten parametrierten Verbrauchskennzeichnungs- größen wie der Gesamtleistungsaufnahme usw. vorgenommen. Analog kann auch eine Konfiguration zur Laufzeit abhängig von z. B. einer momentan möglichen oder gewünschten Stromaufnahme erfolgen.
Dieser Aspekt der Erfindung wird im folgenden nur beispielsweise beschrieben, ohne daß Bezug genommen wird auf eine
Figur.
Es wird zunächst eine gewünschte Art der Daten-Bearbeitung festgelegt, die auf dem Prozessorfeld durchgeführt werden soll. Beispielsweise wird ein Viterbi-Algorithmus program- i . miert und eine für das betrachtete Prozessorfeld geeignete
Konfiguration bestimmt. Es wird dann ermittelt, welche Einheiten auf dem Prozessorfeld verwendet werden und über wie viele Takte dies geschieht. Bei der Betrachtung der verwende- ten Elemente werden in einem Beispiel berücksichtigt ALUs,
Vorwärts- und Rückwärts-Register (FREG und BREG) sowie Schalter in Bussen (LSW und RSW) . Es wird dann der gesamte Energieverbrauch je Elementart bestimmt und anschließend der gesamte Energieverbrauch aller unterschiedlichen Einheiten. Die Energieverbrauchswerte für ein- einzelnes Element je Takt sind ihrerseits abgeschätzt aus Simulationen der Hardware- Schaltungen bei der betrachteten Architektur und sind für das Verfahren der Erfindung tabellarisch hinterlegt.
In dem betrachteten praktischen Beispiel sind für die Implementierung eines gegebenen Viterbi-Algorithmus 10 ALUs, 17 Vorwärtsregister, 23 Rückwärtsregister sowie 30 Busschalter (LSW) in einer und 35 Schalter in der entgegengesetzten Richtung (RSW) erforderlich. Bei einem Energieverbrauch von 4,85 pW/Hz je ALU, 7,01 pW/Hz pro FREG, 7,02 pW/Hz je BREG sowie 2,03 pW/Hz je Busschalter ergibt sich folgende Tabelle:
Number of cycles: 1582
Energy consumption
Einzelkennzahl Gesamtkennzahl
ALU: 10,00 X 4,85 = 48,50
FREG: 17,00. X 7,01 = 119,17
BREG: 23,00 1
X
| 7,02 = 161,46
1
LSW: 30,00 X 2,03 = 60,90
1
RSW: !
35,00 X 2,03 = 71,05
Total: 461,08 pW/Hz
Es kann nun der Implementierung der Viterbi-Tran'sformation ein Gesamtleistungsverbrauch von 461,08 pW/Hz zugeordnet werden und dieser so erhaltene Wert verglichen werden mit Werten, die bei anderen Algorithmen und/oder Konfigurationen erhalten werden und/oder durch dedizierte Schaltkreise wie ASICs zu erhalten sind. Es sei nun erwähnt, daß die Auswahl einer aus einer Vielzahl von Konfigurationen, auch dann sinnvoll sein kann, wenn das Datenverarbeitungslogikzellen- und/oder, hier gleichbedeutend, Mischfeld aus analogen und/oder digitalen Zellen (wie beschrieben) an eine insbesondere sequentielle CPU angekoppelt ist.
Ein Problem bei herkömmlichen Ansätzen zu rekonfigurierbaren Technologien besteht dann aber oft, wenn die Datenverarbei- tung primär auf einer sequenziellen CPU unter Hinzuziehung eines konfigurierbaren Datenverarbeitungslogikzellenfeldes oder dergleichen erfolgen soll und/oder eine Datenverarbeitung gewünscht ist, in der viele und/oder umfangreiche sequenziell auszuführende Verarbeitungsschritte vorliegen.
Es sind Ansätze bekannt, die sich damit befassen, wie eine Datenverarbeitung sowohl auf einem konfigurierbaren Datenver- arbeitungslogikzellenfeld als auch auf einer CPU erfolgen kann.
So ist aus der WO 00/49496 ein Verfahren zum Ausführen eines Computerprogrammes mit einem Prozessor bekannt, der eine konfigurierbare funktionelle Einheit umfasst, die in der Lage ist, rekonfigurierbare Anweisungen auszuführen, deren Effekt zur Laufzeit durch Laden eines Konfigurationsprogrammes redefiniert werden kann, wobei das Verfahren die Schritte umfasst, daß Kombinationen rekonfigurierbarer Anweisungen ausgewählt, ein respektives Konfigurationsprogramm für jede Kombination erzeugt und das Computerprogramm ausgeführt wird. Dabei soll jedes Mal, wenn eine Anweisung aus einer der Kombinationen während der Ausführung gebraucht wird und die konfigurierbare funktionelle Einheit nicht mit dem Konfigura- tionsprogramm für diese Kombination konfiguriert ist, das Konfigurationsprogramm für alle der Anweisungen der Kombination in die konfigurierbare funktionelle Einheit geladen werden. Weiter ist aus der WO 02/50665 AI eine Datenverarbei- tungsvorrichtung mit einer konfigurierbaren funktionellen Einheit bekannt, wobei die konfigurierbare funktionelle Einheit dazu dient, eine Anweisung gemäß einer konfigurierbaren Funktion auszuführen. Die konfigurierbare funktionelle Einheit weist eine Vielzahl von unabhängigen konfigurierbaren Logikblöcken zum Ausführen programmierbarer Logikoperationen auf, um die konfigurierbare Funktion zu implementieren. Konfigurierbare Verbindungsschaltkreise sind zwischen den konfigurierbaren Logikblöcken und sowohl den Eingängen als auch den Ausgängen der konfigurierbaren funktioneilen Einheit vorgesehen. Dies erlaubt eine Optimalisierung der Verteilung von Logikfunktionen über die konfigurierbaren Logikblöcke.
Ein Problem bei herkömmlichen Architekturen besteht auch dann, wenn eine Ankopplung erfolgen soll und/oder Technologi- en wie Datastreaming, Hyperthreading, Multithreading und so weiter in sinnvoller und Performance steigernder Weise ausgenützt werden sollen. Die beispielhaft erwähnte Technologie der vorzitierten Nicht-Anmelder-Dokumente zeigt etwa eine Anordnung, bei der zwar Konfigurationen in ein konfigurierbares Datenverarbeitungslogikzellenfeld geladen werden können, bei welchen allerdings der Datenaustausch zwischen der ALU der CPU und dem konfigurierbaren Datenverarbeitungsiogikzellen- feld, sei es ein FPGA, DSP oder dergleichen, über die Register erfolgt. Mit anderen Worten müssen Daten aus einem Datenstrom zunächst sequenziell in Register geschrieben werden und dann sequenziell wieder in diesen abgelegt werden. Auch ist ein Problem dann gegeben, wenn ein Zugriff auf Daten von extern erfolgen soll, da selbst dann noch Probleme beim zeitlichen Ablauf der Datenverarbeitung im Vergleich zur ALU und bei der Zuweisung von Konfigurationen und so weiter bestehen. Die herkömmlichen Anordnungen, wie sie aus den Nicht- Anmelder-eigenen Schutzrechten bekannt sind, werden unter anderem dazu verwendet, Funktionen im konfigurierbaren Datenverarbeitungslogikzellenfeld, DFP, FPGA oder dergleichen abzuarbeiten, die nicht effizient auf der CPU-eigenen ALU abzuarbeiten sind. Damit wird das konfigurierbare Datenverarbeitungslogikzellenfeld praktisch verwendet, um benutzerdefinierte Opcodes zu ermöglichen, die eine effizientere Abarbeitung von Algorithmen ermöglichen, als dies auf dem ALU-Rechenwerk der CPU ohne konfigurierbare Da- tenverarbeitungslogikzellenfeldunterstützung möglich wäre.
Im Stand der Technik ist, wie erkannt wurde, die Ankopplung demnach im Regelfall wortbasiert, nicht jedoch blockbasiert, wie es zur datenströmenden Verarbeitung erforderlich wäre. Es ist zunächst wünschenswert, eine effizientere Datenverarbei- tung zu ermöglichen, als dies mit einer engen Ankopplung über Register der Fall ist.
Eine weitere Möglichkeit zur Verwendung von Logikzellenfeldern aus grob- und/oder feingranular gebauten Logikzellen und Logikzellenelementen besteht in einer sehr losen Ankopplung eines solchen Feldes an eine herkömmliche CPU und/oder ein CPU-Kern bei eingebetteten Systemen. Hierbei kann ein herkömmliches, sequenzielles Programm auf einer CPU oder, dergleichen laufen, beispielsweise ein in C, C++ oder der- gleichen geschriebenes Programm, wobei von diesem Aufrufe einer Datenstromverarbeitung auf dem fein- und/oder grobgra- nularen Datenverarbeitungslogikzellenfeld instantiiert werden. Problematisch ist dann, dass beim Programmieren für dieses Logikzellenfeld ein nicht in C oder einer anderen sequenziellen Hochsprache geschriebenes Programm für die Datenstromabarbeitung vorgesehen werden muss. Erwünscht wäre hier, dass sowohl auf der herkömmlichen CPU-Architektur als auch auf einem mit diesen gemeinsam betriebenen Datenverar- beitungslogikzellenfeld C-Programme oder dergleichen abzuarbeiten sind, das heißt, dass insbesondere mit dem Da- tenverarbeitungslogikzellenfeld in quasi sequenzieller Programmabarbeitung dennoch eine Datenstromfähigkeit erhalten bleibt, während simultan auch insbesondere möglich bleibt, dass ein CPU-Betrieb in nicht zu loser Ankopplung möglich ist. Es ist auch bereits bekannt, innerhalb einer Datenverar- beitungslogikzellenfeldanordnung, wie sie insbesondere aus PACT02 (DE 196 51 075.9-53, WO 98/26356), PACT04 (DE 196 54 846.2-53, WO 98/29952), PACT08, (DE 197 04 728.9, WO 98/35299) PACT13 (DE 199 26 538.0, WO 00/77652) PACT31 (DE 102 12 621.6-53, PCT/EP 02/10572) bekannt ist, auch eine se- quenzielle Datenverarbeitung innerhalb des Datenverarbeitungslogikzellenfeldes vorzusehen. Hierbei wird dann allerdings innerhalb einer einzelnen Konfiguration, beispielsweise um Ressourcen zu sparen, eine Zeitoptimierung zu erzielen und so weiter, eine partielle Abarbeitung erzielt, ohne dass diese bereits dazu führt, dass ein Programmierer ein Stück Hochsprachencode automatisch leicht ohne weiteres auf ein Datenverarbeitungslogikzellenfeld umsetzen kann, wie dies bei herkömmlichen Maschinenmodellen für sequenzielle Prozessoren der Fall ist. Die Umsetzung von Hochsprachencode auf Datenverarbeitungslogikzellenfelder nach Prinzipien der Modelle für sequenziell arbeitende Maschinen ist weiterhin schwierig. Aus dem Stand der Technik ist weiter bekannt, dass mehrere Konfigurationen, die eine jeweils unterschiedliche Funktionsweise von Arrayteilen bewirken, simultan auf dem Prozessorfeld (PA) abgearbeitet werden können und dass ein Wechsel von einer oder einigen der Konfiguration (en) ohne
Störung anderer zur Laufzeit erfolgen kann. Es sind Verfahren und in Hardware implementierte Mittel zu deren Umsetzung bekannt, wie sichergestellt werden kann, dass dabei ein Abarbeiten von auf das Feld zu ladenden Teilkonfigurationen ohne Deadlock erfolgen kann. Verwiesen wird hierzu insbesondere auf die die Filmo-Technik betreffenden Anmeldungen PACT05 (DE 196 54 593.5-53, WO 98/31102) PACT10 (DE 198 07 872.2, WO 99/44147, WO 99/44120) PACT13 (DE 199 26 538.0, WO 00/77652), PACT17 (DE 100 28 397.7, WO 02/13000). Diese Tech- nologie ermöglicht in gewisser Weise bereits eine
Parallelisierung und, bei entsprechender Gestaltung und Zuordnung der Konfigurationen, auch eine Art - Multitasking/Multithreading und zwar dergestalt, dass eine Planung, das- heißt ein Scheduling und/oder eine Zeitnutzungs- planungssteuerung vorgesehen ist. Es sind also aus dem Stand i der Technik schon Zeitnutzungsplanungssteuerungsmittel und - verfahren per se bekannt, die, zumindest unter entsprechender
Zuordnung von Konfigurationen zu einzelnen Aufgaben und/oder
Fäden zu Konfigurationen und/oder Konfigurationsfolgen, ein Multitasking und/oder Multithreading erlauben. Die Verwendung solcher Zeitnutzungsplanungssteuermittel, die im Stand der Technik zur Konfigurierung und/oder Konfigurationsverwaltung verwendet wurden, zu Zwecken des Scheduling von Tasks., Threads, Multi- und Hyperthreads wird per se als erfinderisch angesehen. Wünschenswert ist auch zumindest gemäß einem Teilaspekt in bevorzugten Varianten, moderne Technologien der Datenverarbeitung und Programmabarbeitung wie Multitasking, Multithreading, Hyperthreading unterstützen zu können, zumin- dest in bevorzugten Varianten einer Halbleiterarchitektur.
Ein weiterer wesentlicher Aspekt der vorliegenden Erfindung ist somit darin zu sehen, dass dem Datenverarbeitungslo- gikzellenfeld Daten im Ansprechen auf die Ausführung einer Ladekonfiguration durch das Datenverarbeitungslogikzellenfeld zugeführt werden und/oder Daten aus diesem Datenverarbei- tungslogikzellenfeld weggeschrieben (STORE) werden, indem eine STORE-Konfiguration entsprechend abgearbeitet wird. Diese Lade- und oder Speicherkonfigurationen sind dabei bevorzugt derart auszugestalten, dass innerhalb des Datenver- arbeitungslogikzellenfeldes und/oder einer anderen Einheit wie einer RISC-Architektur direkt oder indirekt Adressen jener Speicherstellen generiert werden, auf welche ladend und/oder speichernd direkt oder indirekt zugegriffen werden soll. Es ist durch diese Einkonfiguration von Adressgeneratoren innerhalb einer Konfiguration möglich, eine Vielzahl von Daten in das Datenverarbeitungslogikzellenfeld einzuladen, wo sie gegebenenfalls in internen Speichern (iRAM) ablegbar sind und/oder wo sie in internen Zellen wie EALUs mit Registern und/oder dergleichen eigenen Speichermitteln abgelegt werden können. Die Lade- beziehungsweise Speicherkonfiguration ermöglicht somit ein blockweises und nahezu datenstromartiges,- insbesondere gegenüber Einzelzugriff vergleichsweises schnelles Laden von Daten und es kann eine solche Lade-Konfigura- tion ausgeführt werden vor einer oder mehreren tatsächlich
Daten auswertend und/oder verändernd abarbeitenden Konfiguration (en), mit welcher/n die vorab geladenen Daten verarbeitet werden. Das Datenladen kann dabei typisch bei großen Logikzellenfeldern in kleinen Teilbereichen derselben geschehen, während andere Teilbereiche mit anderen Aufgaben befaßt sind. Bei der in anderen veröffentlichten Dokumenten des Anmelders beschriebenen Ping-Pong-artigen Datenverarbeitung, bei der auf beiden Seiten eines Datenverarbeitungsfeldes Speicherzellen vorgesehen sind, wobei die Daten in einem ersten Verarbeitungsschritt von dem Speicher auf der einen Seite durch das Datenverarbeitungsfeld zum Speicher auf der anderen Seite strömen, dort die beim ersten Felddurchströmen erhaltenen Zwischenergebnisse im zweiten Speicher abgelegt werden, gegebenenfalls das Feld umkonfiguriert wird, die Zwischenergebnisse dann für die Weiterverarbeitung zurückströmen usw., kann etwa eine Speicherseite durch eine LOAD-Konfiguration in einem Array-Teil mit neuen Daten vorgeladen werden, während aus der gegenüberliegenden Speicherseite Daten mit einer STORE-Konfiguration in einem anderen Array-Teil weggeschrieben werden. Dieses simultane LOAD/STORE-Vorgehen ist im übrigen auch ohne räumliche Speicherbereichstrennung möglich.
Das Laden kann insbesondere aus einem Cache und in diesen hinein erfolgen. Dies hat die Vorteile, dass die externe Kommunikation mit größeren Speicherbänken über den Cachecontroller gehandhabt wird, ohne dass innerhalb des Da- tenverarbeitungslogikzellenfeldes separate Schaltanordnungen dafür vorgesehen sein müssen, dass der Zugriff in lesender oder schreibender Weise bei Cache-Speichermitteln typisch sehr schnell und mit allenfalls geringer Latenzzeit erfolgen wird und dass auch typisch eine CPU-Einheit, dort typisch über eine separate LOAD/STORE-Einheit, an diesen Cache angebunden ist, sodass ein Zugriff auf Daten und ein Austausch derselben zwischen CPU-Kern und Datenverarbeitungslogikzel- lenfeld blockweise schnell und derart erfolgen kann, dass nicht für jedes Übergeben von Daten ein separater Befehl etwa aus dem OpCode-Fetcher der CPU abgeholt und verarbeitet werden muss.
Es erweist sich diese Cacheankoppelung auch als wesentlich günstiger als eine Ankopplung eines Datenverarbeitungslo- gikzellenfeldes an die ALU über Register, wenn diese Register nur über eine LOAD/STORE-Einheit mit einem Cache kommunizie- ren, wie dies aus den Nicht-PACT-eigenen zitierten Schriften per se bekannt ist.
Es kann eine weitere Datenverbindung zu der Lade/Speicher— einheit der oder einer dem Datenverarbeitungslogikzellenfeld zugeordneten Sequenziell-CPU-Einheit vorgesehen sein und/oder zu deren Register.
Es sei erwähnt, dass ein Ansprechen derartiger Einheiten über separate Eingangs—/Ausgangsanschlüsse (IO-Ports) der insbe- sondere als VPU beziehungsweise XPP ausgestaltbaren
Datenverarbeitungslogikzellenanordnung erfolgen kann und/oder durch einen oder mehrere einem Einzelport nachgeschaltete Multiplexer.
Dass neben dem insbesondere blockweisen und/oder streamenden und/oder im Random-Access, insbesondere im RMW-Modus (Read- Modify-Write-Modus) erfolgenden Zugriff auf Cache-Bereiche in schreibender und/oder lesender Weise und/oder die LOAD/STORE- Einheit und/oder die (per se im Stand der Technik bekannte) Verbindung mit dem Register der Sequenziell-CPU auch eine Verbindung mit einem externen Massenspeicher wie einem RAM, einer Festplatte und/oder einem anderen Datenaustauschport wie einer Antenne und so weiter erfolgen kann, sei auch erwähnt. Es kann für diesen Zugriff auf Cache- und/oder LOAD/ STORE-Einheit- und/oder registereinheitverschiedene Speichermittel ein separater Port vorgesehen sein. Dass hier geeignete Treiber, Signalaufbereiter für Pegelanpassung und so weiter vorgesehen' sein können, sei erwähnt. Im Übrigen sei erwähnt, dass insbesondere, jedoch nicht ausschließlich zur Aufbereitung eines in das Datenverarbeitungslogikzellenfeld hineinströmenden oder in diesem strömenden Datenstrom die Lo- gikzellen des Feldes ALUs bzw. EALUs umfassen können und typisch werden, denen eingangs- und/oder ausgangsseitig, insbesondere sowohl eingangs- als auch ausgangsseitig kurze, feingranular konfigurierbare, FPGA-artige Schaltkreise vorgesetzt sein können, um etwa aus einem kontinuierlichen Datenstrom Vierbitblöcke herauszuschneiden, wie dies für die MPEG-4-Dekodierung erforderlich ist. Es ist dies zum einen vorteilhaft, wenn ein Datenstrom in die Zeile hineingelangeri soll und dort ohne Blockierung von größeren PAE-Einheiten einer Art Vorverarbeitung zu unterwerfen ist. Dies ist auch dann von ganz besonderem Vorteil, wenn die ALU als SIMD-
Rechenwerk ausgestaltet wird, wobei dann ein sehr breites Da- teneingangswort von zum Beispiel 32 Bit Datenbreite über die vorgeschalteten zB FPGA-artigen Streifen aufgespalten wird in mehrere parallele Datenwörter von. zum Beispiel 4 Bit Breite, die dann in den SIMD-Rechenwerken parallel abgearbeitet werden können, was die Gesamtperformänce des Systems signifikant zu erhöhen vermag, sofern entsprechende Anwendung benötigt werden. Es sei darauf hingewiesen, dass vorstehend von FPGA- artigen vor- beziehungsweise nachgeschalteten Strukturen die Rede war. Mit FPGA-artig muss aber, was explizit erwähnt sei, nicht zwingend Bezug genommen sein auf 1-Bit-granulare Anordnungen. Es ist insbesondere möglich, statt dieser hyperfeingranularen Strukturen lediglich feiner granuläre Strukturen von zum Beispiel 4 Bit Breite vorzusehen. Das heißt, die FPGA-artigen Eingangs- und/oder Ausgangsstrukturen vor und/oder nach einer insbesondere als SIMD-Rechenwerk aus- gestalteten ALU-Einheit sind so konfigurierbar, dass immer 4 Bit breite Datenwört'er zugeführt und/oder verarbeitet werden. Es ist möglich, hier eine Kaskadierung vorzusehen, so dass zum Beispiel die einkommenden 32 Bit breiten Datenwörter in 4 separierte bzw. separierende 8-Bit-FPGA-artige, nebeneinander angeordnete Strukturen strömen, diesen 4 Stück 8 Bit breiten FPGA-artigen Strukturen ein zweiter Streifen mit 8 Stück 4 Bit breiten FPGA-artigen Strukturen nachgesetzt ist, und gegebenenfalls nach einem weiteren derartigen Streifen dann, sofern dies für den jeweiligen Zweck als erforderlich erach- tet wird, zum Beispiel 16 Stück parallel nebeneinander angeordnete 2 Bit breite FPGA-artige Strukturen vorgesehen werden. Wenn dies der Fall ist, kann gegenüber rein hyper- feingranular FPGA-artigen Strukturen eine beträchtliche Verringerung des Konfigurationsaufwandes erzielt werden. Dass dies überdies dazu führt, dass der Konfigurationsspeicher und so weiter der FPGA-artigen Struktur wesentlich kleiner ausfallen kann und somit eine Einsparung an Chipfläche erzielt wird, sei erwähnt.
Prinzipiell sind die vorstehend beschriebenen Kopplungsvorteile bei Datenblockströmen über den Cache prinzipiell erreichbar; besonders bevorzugt ist es jedoch, wenn der Cache streifenweise (slice-artig) aufgebaut ist und dann ein Zugriff auf mehrere der Slices simultan erfolgen kann, insbesondere auf alle Slices gleichzeitig. Dies ist dann vorteilhaft, wenn, was noch erörtert werden wird, auf dem Datenverarbeitungslogikzellenfeld (XPP) und/oder der Sequen- ziell-CPU und/oder den Sequenziell-CPUs eine Vielzahl von Threads abzuarbeiten sind, sei es im Wege des Hyperthrea- dings, des Multitaskings und/oder des Multithreadings . Es sind also bevorzugt Cachespeichermittel mit Scheibenzugriff bzw. Scheibenzugriffsermöglichungssteuermitteln vorgesehen. Es kann dabei z. B. 'jedem Thread eine eigene Scheibe zugeordnet werden. Dies ermöglicht es später, beim Abarbeiten der Threads sicherzustellen, dass jeweils auf die entsprechenden Cachebereiche bei Wiederaufnahme der mit dem Thread abzuar- beitenden Befehlsgruppe zugegriffen wird.
Es sei noch einmal erwähnt, dass der Cache nicht zwingend in Slices unterteilt sein muss, und dass, wenn dies der Fall ist, nicht zwingend jeder Slice einem eigenen Thread zugewie- sen werden muss. Es sei allerdings darauf hingewiesen, dass dies die bei weitem bevorzugte Methode ist. Es sei weiter darauf hingewiesen, dass es Fälle geben kann, in denen nicht alle Cache-Bereiche simultan oder zu einer gegebenen Zeit temporär benützt werden. Vielmehr- ist zu erwarten, dass bei typischen Datenverarbeitungsanwendungen, wie sie in handgehaltenen mobilen Telefonen (Handys) , Laptops, Kameras und so weiter auftreten werden, häufig Zeiten vorliegen werden, in denen nicht der gesamte Cache benötigt wird. Es ist daher besonders bevorzugt, wenn einzelne Cache-Bereiche von der Leistungsversorgung derart trennbar sind, dass ihr Energieverbrauch signifikant absinkt, insbesondere auf oder nahe null. Dies kann bei sliceweiser Ausgestaltung des Caches durch sliceweise Abschaltung derselben über geeignete Leistungsabtrennmittel geschehen. Die Abtrennung kann entweder über eine Heruntertaktung, Taktabtrennung oder- eine Leistungsabtrennung erfolgen. Es kann insbesondere einer einzelnen Cache-Scheibe oder dergleichen eine Zugriffserken- nung zugeordnet sein, welche dazu ausgebildet ist, zu erkennen, ob ein jeweiliger Cache-Bereich beziehungsweise eine jeweilige Cache-Scheibe momentan einen ihm zugeordneten Thread, Hyperthread oder Task hat, von welchem er benützt wird. Sofern dann vom Zugriffserkennungsmittel festgestellt wird, dass dies nicht der Fall ist, wird typisch eine Abtrennung vom Takt und/oder sogar der Leistung möglich sein. Es sei erwähnt, dass bei Wiedereinschalten der Leistung nach einem Abtrennen ein sofortiges Wiederansprechen des Cachebereiches möglich ist, also keine signifikante Verzögerung durch das An- und Ausschalten der Leistungszufuhr zu erwarten ist, sofern mit gängigen geeigneten Halbleitertechnologien eine Implementierung in Hardware erfolgt.
Ein weiterer besonderer Vorteil, der sich bei der vorliegenden Erfindung ergibt, besteht darin, dass zwar eine besonders effiziente Kopplung bezüglich des Übertrags' von Daten beziehungsweise Operanden in insbesondere blockweiser Form gegeben ist, dass aber dennoch ein Balancing nicht in der Weise er- forderlich ist, dass die exakt gleiche Verarbeitungszeit in Sequenziell-CPU und XPP beziehungsweise' Datenverarbeitungslo- gikzellenfeld erforderlich ist. Vielmehr erfolgt die Verarbeitung in einer praktisch oftmals unabhängigen Weise, insbesondere derart, dass die Sequenziell-CPU und die Daten- verarbeitungslogikzellenfeldanordnung für einen Scheduler oder dergleichen als separate Ressourcen betrachtbar sind. Dies erlaubt eine sofortige Umsetzung bekannter Datenverar- beitungsprogrammaufspaltungstechnologien wie Multitasking, Multithreading und Hyperthreading. Der. sich ergebende Vor- teil, dass ein Pfadbalancing nicht erforderlich ist, führt dazu, dass beispielsweise in der Sequenziell-CPU beliebige Anzahlen von Pipelinestufen durchlaufen werden können, Tak- tungen in unterschiedlicher Weise mögliche sind und so weiter. Ein weiterer Vorteil der vorliegenden Erfindung besteht darin, dass durch das Hineinkόnfigurieren einer Ladekonfiguration beziehungsweise einer Storekonfiguration in das XPP oder andere Datenverarbeitungslogikzellenfelder die Daten in das Feld mit einer Geschwindigkeit hineingeladen werden oder aus diesem herausgeschrieben werden können, die nicht mehr bestimmt ist durch die Taktgeschwindigkeit der CPU, die Geschwindigkeit, mit welcher der OpCode-Fetcher arbeitet, oder dergleichen. Mit anderen Worten ist die Ablaufsteuerung der Sequenziell-CPU nicht mehr flaschenhalsartig begrenzend für den Datendurchsatz des Datenzellenlogikfeldes, ohne dass eine nur noch lose Ankopplung besteht.
Während es in einer besonders bevorzugten Variante der Erfindung möglich ist, die für eine XPP-Einheit bekannte CT (bzw. CM; Konfigurationsmanager bzw. Konfiguratiσnstabelle) zu verwenden, um sowohl das Konfigurieren eines oder mehrerer, auch hierarchisch mit mehreren CTs angeordneter XPP-Felder und gleichzeitig eines oder mehrerer Sequenziell-CPUs, dort quasi als Hyperthreading-Hardwareverwaltung /Scheduler zu verwenden, was den inhärenten Vorteil hat, daß bekannte. Technologien wie FILMO usw. für die hardwareunterstützte Verwaltung beim Hyperthreading einsetzbar werden,- ist es alternativ und/oder, insbesondere in hierarchischer Anordnung, zusätzlich möglich, dass ein
Datenverarbeitungslogikzellenfeld wie eine XPP Konfigurationen vom OpCode-Fetcher einer Sequenziell-CPU über das Koprozessor-Interface erhält. Dies führt dazu, daß von der Sequenziell-CPU und/oder einer anderen XPP ein Aufruf instan- tiiert werden kann, der zu einer Datenabarbeitung auf der XPP führt. Die XPP wird dabei dann z. B. über die beschriebene Cache-Ankopplung und/oder mittels LOAD- und/oder STORE- Konfigurationen, die Adressgeneratoren für Laden und/oder Wegschreiben von Daten im XPP- bzw. Datenverarbeitungslo- gikzellenfeld vorsehen, im Datenaustausch gehalten. Mit anderen Worten wird eine Koprozessor-artige Ankopplung eines Datenverarbeitungsldgikzellenfeldes möglich, während gleichzeitig ein datenstromartiges Datenladen durch Cache- und/oder I/O-Port-Kopplung erfolgt.
Es sei erwähnt, daß die Koprozessor-Ankopplung, d. h. die Ankopplung des Datenverarbeitungslogikzellenfeldes typisch dazu führen wird, daß das Scheduling auch für dieses Logikzellenfeld auf der Sequenziell-CPU oder einer dieser übergeordneten Schedulereinheit bzw. einem entsprechenden Schedulermittel erfolgen wird. In einem solchen Fall findet praktisch die Threading-Kontrolle und -Verwaltung auf dem Scheduler bzw. der Sequenziell-CPU statt. Obwohl dies per -se möglich ist, wird dies, zumindest bei einfachster Implementierung der Erfindung, nicht zwingend der Fall. sein. Vielmehr kann eine Verwendung des Datenverarbeitungslogikzellenfeldes durch Aufruf in herkömmlicher Weise wie bei einem Standard-Koprozessor etwa bei 8086/8087-Kombinationen erfolgen.
Weiter sei erwähnt, daß es in einer besonders bevorzugten Va- riante, unabhängig von der Art der Konfiguration, sei es über das Koprozessor-Interface, den als Scheduler mitdienenden Konfigurationsmanager (CT) der XPP bzw. des Datenverarbei- tungslogikzellenfeldes oder dergleichen oder auf andere Weise, möglich ist, im bzw. unmittelbar am Datenverarbei- tungslogikzellenfeld bzw. unter Verwaltung des
Datenverarbeitungslogikzellenfeldes Speicher, insbesondere interne Speicher, insbesondere bei der XPP-Architektur, wie sie aus den diversen Voranmeldungen und den Veröffentlichungen des Anmelders bekannt ist, RAM-PAEs, oder andere entsprechend verwaltete oder interne Speicher wie ein Vektorregister anzusprechen, d. h. die über die LOAD-Konfiguration eingeladenen Datenmengen vektorartig wie in Vektorregistern in die internen Speicher abzulegen, dann, nach Umkonfigurieren der XPP bzw. des Datenverarbeitungslogikzellenfeldes, also Überschreiben bzw. Nachladen und/oder Aktivieren einer neuen Konfiguration, die die eigentliche Verarbeitung der Da- ten durchführt (in diesem Zusammenhang sei darauf hingewiesen, daß für eine- solche Verarbeitungskonfiguration auch Bezug genommen werden kann auf eine Mehrzahl von Konfigurationen, die z. B. im Wave-Modus und/oder sequenziell nacheinander abzuarbeiten sind) zuzugreifen wie bei einem Vektorregister und dann die dabei erhaltenen Ergebnisse und/oder Zwischenergebnisse wiederum in die internen oder über die XPP wie interne Speicher verwalteten externen Speicher, um dort diese Ergebnisse abzulegen. Die so vektorregisterartig mit Verarbeitungsergebnissen beschriebe- nen Speichermittel unter XPP-Zugriff sind dann, nach
Rekonfigurieren der Verarbeitungskonfiguration durch Laden der STORE-Konfiguration in geeigneter Weise weggeschrieben, was wiederum datenstromartig geschieht, sei es über den I/O- Port direkt in externe Speicherbereiche und/oder, wie beson- ders bevorzugt, in Cache-Speicherbereiche, auf welche dann zu einem späteren Zeitpunkt die Sequenziell-CPU und/oder andere Konfigurationen auf der zuvor die Daten erzeugt habenden XPP oder einer anderen entsprechenden Datenverarbeitungseinheit zugreifen können.
Eine besonders bevorzugte Variante besteht darin, zumindest für bestimmte Datenverarbeitungsergebnisse und/oder Zwischen- ergebnisse als Speicher- bzw. Vektorregistermittel, in welchem bzw. welches die erhaltenen Daten abzulegen sind, nicht einen internen Speicher zu benutzen, in welchen Daten über eine STORE-Konfiguration in den Cache- oder einen anderen Be- reich, auf welchen die Sequenziell-CPU oder eine andere Datenverarbeitungseinheit zugreifen können, wegzuschreiben sind, sondern statt dessen unmittelbar die Ergebnisse wegzuschreiben in entsprechende, insbesondere zugriffsreservierte Cachebereiche, die insbesondere Slice-artig organisiert sein können. Dies kann gegebenenfalls den Nachteil einer größeren Latenz haben, insbesondere wenn die Wege zwischen der XPP- oder Datenverarbeitungslogikzellenfeldeinheit und dem Cache so lang sind, daß die Signallaufzeiten ins Gewicht fallen, führt aber dazu, daß gegebenenfalls keine weitere STORE- Konfiguration benötigt wird. Es sei im übrigen erwähnt, daß eine derartige Abspeicherung von Daten in Cache-Bereiche einerseits, wie vorstehend beschrieben, dadurch möglich ist, daß der Speicher, in welchen geschrieben wird, physikalisch nahe beim Cache-Controller liegt und als Cache ausgestaltet ist, dass aber alternativ und/oder zusätzlich auch die Möglichkeit besteht, einen Teil eines XPP-Speicherbereiches, XPP-internen Speichers oder dergleichen, insbesondere bei RAM über PAEs unter die Verwaltung eines oder, nacheinander mehrerer Cache-Speichercontroller zu stellen. Dies hat dann Vorteile, wenn die Latenz beim Abspeichern der Verarbeitungsergebnisse, welche innerhalb des
Datenverarbeitungslogikzellenfeldes bestimmt werden, gering gehalten werden soll, während die Latenz beim Zugriff auf den dann nur noch als „Quasi-CacheΛ dienenden Speicherbereich durch andere Einheiten nicht oder nicht signifikant ins Gewicht fällt. Es sei im übrigen erwähnt, daß auch eine Ausgestaltung derart möglich ist, daß der Cache-Controller einer herkömmlichen Sequenziell-CPU einen Speicherbereich als Cache anspricht, der, ohne dem Datenaustausch mit dem Datenverarbeitungs- logikzellenfeld zu dienen, auf und/oder bei diesem physikalisch liegt. Dies hat den Vorteil, daß dann, wenn Anwendungen auf dem Datenverarbeitungslogikzellenfeld laufen, die einen allenfalls geringen lokalen Speicherbedarf haben, und/oder wenn auch nur wenige weitere Konfigurationen bezogen auf die zur Verfügung stehenden Speichermengen benötigt werden, diese einer oder mehreren Sequenziell-CPUs als Cache zur Verfügung stehen können. Es sei erwähnt, daß dann der Cache-Controller für die Verwaltung eines Cache-Bereiches mit dynamischem Umfang, d. h. variierender Größe ausgebildet sein kann und wird. Eine dynamsiche Cache-Umfangsverwaltung bzw. Cache-
Umfangsverwaltungsmittel für die dynamische Cache-Verwaltung wird typisch die Arbeitslast auf der Sequenziell-CPU und/oder dem Datenverarbeitungslogikzellenfeld berücksichtigen. Mit anderen Worten kann beispielsweise analysiert werden, wie viele NOPs in einer gegebenen Zeiteinheit auf der Sequenzi- ell-CPU vorliegen und/oder wie viele Konfigurationen im XPP-
Feld in dafür vorgesehenen Speicherbereichen- vorabgelegt sein ι sollen, um eine schnelle Umkonfiguration, sei es im Wege einer Wellenrekonfiguration oder auf andere Weise. Die hiermit offenbarte dynamische Cachegrösse ist dabei insbesondere bevorzugt laufzeitdynamisch, d. h . der Chacecontroller verwaltet jeweils eine aktuelle Cachegrösse, die sich von Takt zu Takt oder Taktgruppe ändern kann. Es sei im übrigen darauf hingewiesen, daß die Zugriffsverwaltung eines XPP- bzw. Datenverarbeitungslogikzellenfeldes mit Zugriff als interner Speicher wie bei einem Vektorregister und als Cacheartiger Speicher für den externen Zugriff was die Speicherzu- griffe angeht bereits beschrieben wurde in der DE 196 54 595 und der PCT/DE 97/03013 (PACT03) . Die genannten Schriften sind durch Bezugnahme zu Offefibarungszwecken hiermit vollumfänglich eingegliedert.
Vorstehend wurde auf Datenverarbeitungslogikzellenfelder Bezug genommen, die insbesondere zur Laufzeit rekonfigurierbar sind. Es wurde diskutiert, dass bei diesen eine Konfigurati- onsverwaltungseinheit (CT bzw. CM) vorgesehen werden kann. Aus den diversen, zu Offenbarungszwecken unter Bezug genommenen Schutzrechten des Anmelders sowie seinen weiteren Veröffentlichungen ist die Verwaltung von Konfigurationen per se bekannt. Es sei nun explizit darauf hingewiesen, dass derartige Einheiten und deren Wirkungsweise, mit der insbesondere unabhängig von Ankopplungen an Sequenziell-CPUs etc. aktuell noch nicht benötigte Konfigurationen vorladbar sind, auch sehr gut nutzbar sind, um im Multitaskingbetrieb und/oder bei Hyperthreading und/oder Multithreading einen beziehungsweise einen Thread- und/oder Hyperthreadwech- sei zu bewirken. Dazu kann ausgenützt werden, dass während der Laufzeit eines Threads oder Tasks in die Konfigurationsspeicher bei einer einzelnen oder einer Gruppe von Zellen des Datenverarbeitungslogikzellenfeldes, also beispielsweise einer PAE eines PAE-Feldes (PA) auch Konfigurationen für unterschiedliche Aufgaben, das heißt Tasks oder Threads beziehungsweise Hyperthreads geladen werden können. Dies führt dann dazu, dass bei einer Blockade eines Tasks oder Threads, etwa wenn auf Daten gewartet werden muss, weil diese noch nicht verfügbar sind, sei es, da sie von einer anderen Ein- heit noch nicht generiert oder empfangen wurden, beispielsweise auf Grund von Latenzen, sei es, weil eine Ressource derzeit noch durch einen anderen Zugriff blockiert ist, dann Konfigurationen für einen anderen Task oder Thread vorladbar und/oder vorgeladen sind und auf diese gewechselt werden kann, ohne dass der Zeitoverhead für einen Konfigurationswechsel bei der insbesondere schattengeladenen Konfiguration abgewartet werden muss. Während es prinzipiell möglich ist, diese Technik auch dann zu verwenden, wenn innerhalb eines Tasks die wahrscheinlichste Weiterführung vorhergesagt wird und eine Vorhersage nicht zutrifft (predic- tion miss) , wird diese Art des Betriebs bei vorhersagefreiem Betrieb bevorzugt sein. Bei Verwendung mit einer rein sequentiellen CPU und/oder mehreren rein sequentiellen CPUs wird somit durch die Zuschaltung eines Konfigurationsmanagers eine Hyperthreadingverwaltungshardware realisiert. Verwiesen sei hinsichtlich dessen insbesondere auf PACT10 (DE 198 07 872.2, WO 99/44147, WO 99/44120) . Dabei kann es als ausreichend erachtet werden, insbesondere dann, wenn nur für eine CPU und/oder einige wenige Sequenziell-CPUs eine Hyperthreading- verwaltung gewünscht ist, auf bestimmte, in den speziell unter Bezug genommenen Schutzrechten beschriebene Teilschal- tungen wie den FILMO zu verzichten. Insbesondere wird damit die Verwendung der dort beschriebenen Konfigurationsmanager mit und/oder ohne FILMO für die Hyperthreadingverwaltung für eine und/oder mehrere rein sequenziell arbeitende CPUs mit oder ohne Ankopplung an eine XPP oder ein anderes Datenverar- beitungslogikzellenfeld offenbart und hiermit für sich beansprucht. Es wird hierin eine für sich erfinderische- Besonderheit gesehen. Es sei im Übrigen erwähnt, dass eine Vielzahl von PUs realisiert werden kann mit den bekannten Techniken, wie sie insbesondere aus PACT31 (DE 102 12 621.6- 53, PCT/EP 02/10572) bekannt sind, bei welchen innerhalb eines Arrays eine oder mehrere Sequenziell-CPUs aufgebaut werden unter Ausnutzung eines oder mehrerer Speicherbereiche insbesondere im Datenverarbeitungslogikzellenfeld für den Aufbau der sequenziellen CPU, insbesondere als Befehlsund/oder Datenregister. Auch sei darauf verwiesen, dass bereits in früheren Anmeldungen wie PACT02, (DE 196 51 075.9- 53, WO 98/26356), PACT04 (DE 196 54 846.2-53, WO 98/29952), PACT08, (DE 197 04 728.9, WO 98/35299) offenbart wurde, wie Sequenzer mit Ring- und/oder Wahlfrei-Zugriff-Speichern aufgebaut werden können.
Es sei darauf hingewiesen, dass ein Task- beziehungsweise
Thread- und/oder Hyperthreadwechsel unter Verwendung der bekannten CT-Technologie derart erfolgen kann und bevorzugt auch erfolgen wird, dass einem per se bekannten, Softwareimplementierten Betriebssystem-Scheduler oder dergleichen von der CT Performance-Scheiben und/oder Zeitscheiben zugeordnet werden, während welchen bestimmt wird., von welchen Tasks oder Threads nachfolgend welche Teile per se, unterstellt, dass Ressourcen frei sind, abzuarbeiten sind. Dazu sei ein Beispiel wie folgt gegeben: Zunächst soll für einen ersten Task eine Adressfolge generiert werden, gemäß welcher ' während der Ausführung einer LOAD-Konfiguration Daten aus einem Cache- Speicher, an dem ein Datenverarbeitungslogikzellenfeld in" der beschriebenen Weise angekoppelt ist, geladen werden sollen. Sobald diese Daten vorliegen, kann mit der Abarbeitung einer zweiten, der eigentlichen Datenverarbeitungskonfiguration, begonnen werden. Auch diese kann vorgeladen werden, da sicher feststeht, dass diese Konfiguration, sofern keine Interrupts oder dergleichen einen vollständigen Taskwechsel erzwingen, auszuführen ist. In herkömmlichen Prozessoren ist nun das Problem des sogenannten Cache-Miss bekannt, bei dem die Daten zwar angefordert werden, aber nicht im Cache für den Ladezugriff bereit liegen. Tritt ein solcher Fall in einer Kopplung gemäß der vorliegenden Erfindung auf, kann bevorzugt auf einen anderen Thread, Hyperthread und/oder Task gewechselt werden, der insbesondere zuvor von dem insbesondere softwareimplementierten Betriebssystem-Scheduler und/oder einer 5 anderen hard- und/oder softwareimplementierten, entsprechend wirkenden Einheit für eine nächstmögliche Ausführung bestimmt wurde und demgemäß bevorzugt vorab in einen der verfügbaren Konfigurationsspeicher des Datenverarbeitungslogikzellenfel- des insbesondere im Hintergrund während der Ausführung einer
10 anderen Konfiguration, beispielsweise der LOAD-Konfiguration, welche das Laden jener Daten, auf die nun gewartet wird, bewirkt hat, geladen wurde. Das für die Vorabkonfiguration ungestört von der tatsächlichen Verschaltung der insbesondere grobgranular ausgebildeten Datenverarbeitungslogikzellen des
15 Datenverarbeitungslogikzellenfeldes separate Konfigurationsleitungen von der konfigurierenden Einheit zu den jeweiligen Zellen direkt und/oder über geeignete Bussysteme geführt sein können wie per se im Stand der Technik bekannt, sei hier noch einmal explizit erwähnt, da diese Ausbildung hier besonders
20. bevorzugt ist, um ein ungestörtes Vorabkonfigurieren ohne
Störung einer anderen, gerade laufenden Konfiguration zu ermöglichen. Wenn dann die Konfiguration, auf welche während beziehungsweise auf Grund des Task-Thread- und/oder Hyper- threadwechsels gewechselt wurde, abgearbeitet wurde, und
25 zwar, bei bevorzugten niclit teilbaren, ununterbrechbaren und somit quasi atomaren Konfigurationen bis zum Ende abgeabeitet wurde, wird teilweise eine, weitere andere Konfiguration wie vorbestimmt durch die entsprechenden Scheduler, insbesondere den betriebssystemartigen Scheduler festgelegt, abgearbeitet
30 und/oder jene Konfiguration, zu welcher zuvor die zugehörige LOAD-Konfiguration ausgeführt wurde. Vor der Ausführung einer .Verarbeitungskonfiguration, zu welcher zuvor eine LOAD- Konfiguration ausgeführt wurde, kann insbesondere abgetestet werden, ob mittlerweile die entsprechenden Daten in das Array eingeströmt sind, also die Latenzzeit, wie sie typisch auftritt, verstrichen ist und/oder die Daten tatsächlich vorliegen.
Mit anderen Worten werden dann Latenzzeiten, wenn sie auftreten, weil z. B. Konfigurationen noch nicht einkonfiguriert sind, Daten noch nicht geladen und/oder Daten noch nicht weg- geschrieben wurden, überbrückt und/oder verdeckt, indem
Threads, Hyperthreads und/oder Tasks ausgeführt werden, welche schon vorkonfiguriert sind und welche mit Daten arbeiten, die schon verfügbar sind beziehungsweise die an Ressourcen weggeschrieben werden können, die für das Wegschreiben be- reits zur Verfügung stehen. Auf diese Weise werden
Latenzzeiten weitgehend überdeckt und es wird, eine hinreichende Anzahl von per se auszuführenden Threads, Hyperthreads und/oder Tasks unterstellt, eine praktisch 100%-ige Ausnutzung des Datenverarbeitungslogikzellenfeldes erreicht.
Mit dem beschriebenen System bezüglich Datenstrom-Fähigkeit bei gleichzeitiger Ankopplung an eine Sequenziell-CPU und/ oder bezüglich der Ankopplung eines XPP-Array beziehungsweise Datenverarbeitungslogikzellenfeldes und simultan einer Se- quenziell-CPU an eine geeignete Schedulereinheit wie einen Konfigurationsmanager oder dergleichen lassen sich insbesondere- ohne weiteres echtzeitfähige Systeme realisieren. Zur Echtzeitfähigkeit muss gewährleistet sein, dass auf eintreffende Daten beziehungsweise Interrupts, die insbesondere das Dateneintreffen signalisieren, innerhalb einer in keinem Fall zu überschreitenden Maximalzeit reagiert werden kann. Dies kann beispielsweise geschehen durch einen Taskwechsel auf ei- nen Interrupt hin und/oder, beispielsweise bei priorisierten Interrupts, durch Festlegung, dass ein gegebener Interrupt momentan zu ignorieren ist, wobei auch dies innerhalb einer bestimmten Zeit festzulegen ist. Ein Taskwechsel bei derarti- gen echtzeitfähigen Systemen wird typisch auf drei Arten erfolgen können, nämlich entweder dann, wenn ein Task eine bestimmte Zeit gelaufen ist (Watch-dog-Prinzip) , bei Nicht- zurverfügungstehen einer Ressource, sei es durch deren Blockade durch anderen Zugriff oder aufgrund von Latenzen beim Zugriff darauf, insbesondere in schreibender und/oder lesender Weise, das heißt bei Latenzen von Datenzugriffen und/oder beim Auftreten von Interrupts.
Mit der vorliegenden Erfindung kann die Echtzeitfähigkeit ei- nes Datenverarbeitungslogikzellenfeldes nunmehr erreicht werden, indem eine oder mehrere von drei möglichen Varianten implementiert wird.
Eine erste Variante dazu besteht darin, dass innerhalb einer von dem Scheduler beziehungsweise der CT ansprechbaren Ressource ein. Wechsel zur Abarbeitung beispielsweise eines Interrupts erfolgt. Sofern die Ansprechzeiten auf Interrupts oder andere Anforderungen so groß sind, dass während dieser Zeit eine Konfiguration ohne Unterbrechung noch abgearbeitet werden kann, ist dies unkritisch, zumal während der Abarbeitung der aktuell laufenden Konfiguration auf jener Ressource, die für die Abarbeitung des Interrupts zu wechseln ist, eine Konfiguration zur Interruptabarbeitung vorgeladen werden kann. Die Auswahl der vorabzuladenden Interrupt-bearbeitenden Konfiguration ist z. B. durch die CT durchzuführen. Es ist möglich, die Laufzeit der Konfiguration auf der für die Interruptbearbeitung freizugebenden bzw. zu wechselnden Ressource zu begrenzen. Verwiesen wird dazu auf PACT29/PCT(PCT/DE03/000942) .
Bei Systemen, die schneller auf Interrupts reagieren müssen, kann es bevorzugt sein, eine einzelne Ressource, also bei- spielsweise eine separate XPP-Einheit und/oder Teile eines XPP-Feldes für eine solche Abarbeitung zu reservieren. Wenn dann ein schnell abzuarbeitender Interrupt auftritt, • kann entweder eine für besonders kritische Interrupts schon vorab vorgeladene Konfiguration abgearbeitet werden oder es wird sofort mit dem Laden einer Interrupt behandelnden Konfiguration in die reservierte Ressource begonnen. Eine Auswahl der jeweils für den entsprechenden Interrupt erforderlichen Konfiguration ist durch entsprechende Triggerung, Waveabarbeitung usw. möglich.
Es sei im Übrigen erwähnt, dass es mit den -schon beschriebenen Methoden ohne weiteres möglich ist, eine instantane Reaktion auf einen Interrupt zu erhalten, indem über die Ver- endung von LOAD/STORE-Konfigurationen eine Code-Reentranz erreicht wird. Hierbei wird nach jeder datenbearbeitenden Konfiguration oder zu gegebenen Zeiten, beispielsweise alle fünf oder zehn Konfigurationen eine STORE-Konfiguration ausgeführt und dann eine LOAD-Konfiguration unter Zugriff auf jene Speicherbereiche ausgeführt, in die zuvor weggeschrieben wurde. Wenn sichergestellt wird, dass die von der STORE- Konfigura-tion benutzten Speicherbereiche so lange unberührt bleiben, bis durch Fortschreiten im Task eine weitere Konfiguration sämtliche relevanten Informationen (Zustände, Daten) weggeschrieben hat, ist sichergestellt, dass bei Wiederladen, also Wiedereintritt in eine zuvor bereits begonnene, aber nicht zu Ende geführte Konfiguration oder Konfigurationskette wieder dieselben Bedingungen erhalten werden. Eine solche Zwischenschaltung von LOAD/STORE-Konfigurationen unter simultanem Schutz von noch nicht veralteten STORE- Speicherbereichen lässt sich automatisch ohne zusätzlichen Programmieraufwand sehr einfach generieren, z. B. von einem Compiler. Dort kann 'die Ressourcenreservierung gegebenenfalls vorteilhaft sein. Das bei der Ressourcenreservierung und/oder in anderen Fällen auf zumindest eine Menge hochpriorisierter Interrupts durch Vorabladen von bestimmten Konfigurationen reagiert werden kann, sei noch einmal erwähnt.
Eine weitere, besonders bevorzugte Variante der Reaktion auf Interrupts besteht dann, wenn zumindest eine der ansprechbaren Ressourcen eine Sequenziell-CPU ist, darin, auf dieser eine Interrupt-Routine abzuarbeiten, in welcher wiederum Code für das Datenverarbeitungslogikzellenfeld verboten ist. Mit anderen Worten wird eine Interrupt-Routine ausschließlich auf einer Sequenziell-CPU abgearbeitet, ohne dass XPP-Datenverar- beitungsschritte aufgerufen werden. Dies garantiert, dass der Verarbeitungsvorgang auf dem D tenverarbeitungslogikzellen- feld nicht zu unterbrechen ist und es kann dann eine Weiterabarbeitung auf diesem Datenverarbeitungslogikzellen- feld nach einem Taskswitch erfolgen. Obwohl damit die eigentliche Interrupt-Routine keinen XPP-Code besitzt, kann dennoch dafür gesorgt werden, dass auf einen Interrupt hin zu einem späteren, nicht mehr echtzeitrelevanten Zeitpunkt mit der XPP auf einen durch einen Interrupt und/oder eine Echtzeitanforderung erfassten Zustand und/oder Daten unter Verwendung des Datenverarbeitungslogikzellenfeldes reagiert werden kann. Es ist bei der Erfindung möglich, bei einem an eine CPU angekoppelten Datenverarbeitungslogikzellenfeld optimierte Konfigurationen in das Feld zu laden, das insbesondere aus einem Analog/Digital-Mischfeld bestehen kann und Zellen mit frequenzoptimierten Aspektverhältnis besitzt. Beim Laden von Konfigurationen kann es nun sehr vorteilhaft sein, wenn Busse dynamisch aufbaubar sind. Die vorliegende Erfindung offenbart daher zugleich ein Verfahren zum dynamischen Aufbau von Bussen in Feldern miteinander kommunizierender Elemente, insbesondere rekonfigurierbarer Felder wie Prozessoren grob- granularer Felder, das in Verbindung mit den andere Aspekten besonders vorteilhaft ist, aber zugleich auch für sich genommen erfinderisch-
Es ist bereits bekannt, grobgranulare Felder rekonfigurierbarer Elemente vorzusehen, bei denen zwischen den rekonfigurierbaren Elementen Bussysteme verlaufen. In bekannten Anwendungen werden die Bussysteme, die die Verbindungen ■ für die Kommunikation der einzelnen Elemente untereinander vorsehen, durch eine zentrale Einheit konfiguriert. Die Art und Weise, wie die Busverbindung aufgebaut werden soll, kann dabei im Vorfeld bestimmt werden, etwa zu einer Compilezeit . Denkbar ist auch eine Festlegung zur Laufzeit, bei der durch einen Scheduler oder dergleichen für verschiedene, aktuell zu ladende Konfigurationen ein Busaufbau vorgenommen wird, bzw. ein Routing. Auf die Anmeldung 102 36 272.8 wird hierzu insbesondere hingewiesen, da diese Anmeldung bereits zeigt, wie aus unterschiedlichen Konfigurationen zur Ausführung ein und desselben Programmes zu einer Laufzeit eine' Auswahl erfolgen kann. Es sind auch schon Bussysteme für rekonfigurierbare Prozessoren bekannt, bei denen ein dynamischer Busaufbau erfolgen kann. Erwähnt sei, daß es insbesondere möglich ist, Bussysteme zu mischen, nämlich die bekannten, sogenannt „globalen" dynamisch aufbaubaren Busse und nicht dynamisch aufbaubare Busse. Dies gilt auch für die nachfolgend offenbarten Bussysteme und -verfahren, das heißt die beschriebenen Bussysteme und Verbindungsaufbauverfahren müssen nicht die einzigen, in einem Feld zu verbindender Elemente vorzusehenden Bussysteme bzw. -verfahren sein.
Es ist auch möglich, und dies gilt auch für Zwecke der vorliegenden Erfindung, neben grobgranularen Einheiten mit insbesondere feingranularer Steuerlogik, wie feingranularen Triggernetzwerken usw. eine sogenannte Makrogranularität vorzusehen, bei der eine Vielzahl grobgranularer Elemente mit herkömmlichen Bussystemen usw. zusammengefasst werden und bei denen dann mehrere solcher zusammengefasster, grobgranularer Elemente, zwischen denen bereits Bussysteme in konfigurierba- rer oder fester Weise vorgesehen sein können, wiederum über Bussysteme kommunizierende Teile einer übergeordneten Einheit bilden. Hierarchische Strukturen für derartige Anordnungen sind, beispielsweise aus DE 199 26 538.0 od. PCT WO 00/77652 bekannt.
Es ist oftmals wünschenswert Busse dynamisch aufzubauen, besonders dann, wenn ein Prozessor für Multitasking, Multithreading, Hyperthreading usw. verwendet werden soll, und/oder insbesondere wenn sehr- große Felder aus zum Beispiel 65.536 PAEs- oder mehr aufgebaut werden sollen. In einem solchen Fall ist es wünschenswert, für eine automatische, selbsttätige, d.h. selbsterstellende dynamische Verbindung von Start- und Zielfeldern innerhalb eines solchen Feldes sorgen zu können. Als Start- und/oder Zielelemente können auch neben den aus der herkömmlichen XPP-Technologie bekannten PAEs Elemente vorgesehen werden wie IO-Ports, feldinterne Speicher, Speicher-los, FPGAs, sequentielle CPUs, Sequencer, FSM (Finit-State-Machines) reine Lesespeicher, reine Schreibspeicher, NILdevices, etc.
Die vorliegende Erfindung schlägt somit in einem weiteren Grundgedanken ein Verfahren zum dynamischen Aufbau einer Verbindung zwischen einem Sender und einem Empfänger über einen einer. Vielzahl möglicher Wege, der von Station zu Station fortschreitet, vor, bei welchem vorgesehen ist, dass ausgehend von einer den Busaufbau bewirkenden Einheit (Sender und/ oder Empfänger) eine Anfrage an nächstliegende Stationen gesandt wird, welche für den Busaufbau bereit stehen, diesen Stationen eine Kennziffer, hier gleichbedeutend, Kenngröße, zugeordnet wird, ausgehend von wenigstens einer Vielzahl, bevorzugt jeder freien Station, der eine Kennziffer zugeordnet wurde, eine Anfrage an nächstliegende Stationen nach der Verfügbarkeit der Stationen für einen Busaufbau gesandt wird, den verfügbaren Stationen eine weitere Kennziffer zugeordnet wird, und dies fortgesetzt wird, bis das gewünschte Ende des Busses erreicht ist.
Ein weiterer wesentlicher Aspekt der vorliegenden Erfindung nutzt somit die Erkenntnis aus, dass Busse problemfrei da- durch aufgebaut werden können, dass an nächstliegende
Übertragungsstationen auf dem Weg eines möglichen Busses Anfragen gesandt werden, ob diese Stationen für den Busaufbau bereit stehen und dann, ausgehend von bereitstehenden Stationen, in einem weiteren Schritt diese nächstliegenden Stationen angesprochen werden, wobei durch die Kennzifferzuordnung eine Ansprechreihenfolge festgehalten wird, um anhand derselben eine Rückverfolgung des Busaufbaus zu ermöglichen. Es ist dabei zwar möglich, dass nicht von jeder angesprochenen und als frei erkannten Station beim Busaufbau weitergeschritten wird, weil etwa eine Auswertung in der Station eines gewünschten Zielpunktes zeigt, dass der Busaufbau sich weit in eine falsche Richtung bewegt hat, bevorzugt wird aber von jeder freien Station, der eine Kennziffer zugeordnet wurde, versucht, den Bus weiter aufzubauen, indem die Nachbarstationen der zuerst angesprochenen Station gleichfalls angesprochen werden.
Hintergrund hierfür ist, dass es Situationen geben kann, etwa bei einem bereits nahezu vollen Array, in welches weitere Konfigurationen hineingesetzt werden sollen, wo es erforderlich ist, einen Busaufbau über größere Umwege zuzulassen, um, sollte ein Busaufbau überhaupt möglich sein, diesen sicher zu ermöglichen.
In einer bevorzugten Variante wird regelmäßig jeder Station, die angesprochen wurde, eine Kennziffer zugewiesen. Dies ist vorteilhaft, um festzustellen, dass die Station bereits angesprochen wurde und somit nicht mehr bei Ansprechen aus einer anderen Richtung vermeintlich zur Verfügung steht. Dies verhindert,, dass eine Signalausbreitung noch stattfindet, nachdem die Nachbarstationen bereits wieder als nicht benö- tigt freigegeben wurden. In einer besonders bevorzugten Variante wird die Kenngröße von Station zu Station so verändert, dass der Weg, der beim Busaufbau gewählt wird, nachvollziehbar ist, insbesondere im Wege eines Backtracing. Dieses Backtracing kann durch Inkre- mentierung oder Dekrementierung eines am Ziel erreichten
Wertes erfolgen, insbesondere mit jeweils fester Schrittweite. Bei Vorsehen einer festen Schrittweite kann insbesondere auch ein zyklisches Zählen erfolgen, d. h. ein Zählen in einem zyklischen Zahlenraum, bei dem nach Überschreiten des höchst möglichen Wertes immer wieder mit einem kleineren Wert begonnen wird (z. B. 1, 2, 3, 4; 1, 2, 3, 4; 1, 2-, 3, 4; oder 1, 2, 3, 4, 5;' 1, 2, 3, 4, 5; 1, 2, 3, 4, 5; ) . Dabei ist dann zur Charakterisierung der Station, um ein einwandfreies Rückverfolgen des Weges zu gewährleisten, ein zyklisches Durchzählen von mindestens drei verschiedenen Zählwerten bevorzugt.
Das beschriebene Verfahren wird, sofern überhaupt ein Busaufbau zwischen Sender und Empfänger möglich ist, diesen aufzubauenden Bus identifizieren. Beim Busaufbau werden aber womöglich eine Vielzahl nicht benötigter Stationen angesprochen und es ist daher bevorzugt, diese wieder freizugeben, und zwar nach Aufbau des Busses bzw. mit der Signalisierung zwischen Sender und Empfänger, dass' ein Busweg aufgebaut wur- de. Dazu kann ausgehend von der letzten, den Aufbau vollendenden Station, typisch als dem Signalempfänger, wenn der Busaufbau ausgehend vom Sender hin zum Empfänger erfolgt, rückwärts unter Abschreitung der Kennwerte die. davorliegende Station angesprochen werden und sichergestellt werden, dass die von dieser Station angesprochenen, anderen und somit nicht auf dem Bus (rück) weg liegenden Stationen für eine Fremdnutzung freigegeben werden. Dabei wird von jeder ange- sprochenen und für die weitere Benutzung in anderen Buswegen freigegebenen Stationen wiederum fortgeschritten zu allen anderen, nicht benötigten Stationen, die zuvor angesprochen wurden. Auf diese Weise ist sichergestellt, dass alle Statio- nen, die zuvor für den Busaufbau angesprochen wurden, nunmehr wieder zur Verfügung stehen.
Es sei erwähnt, dass neben diesem Verfahren zur rückschreitenden Freigabe eines aufgebauten Busweges andere Möglichkeiten existieren, nach Aufbau eines Busweges zwischen Sender und Empfänger nicht benötigte Stationen freizugeben. So kann etwa längs aller Stationen, die für den Busweg benötigt werden, ein Signal gesandt werden, welches den Busstationen mitteilt, dass sie am Busweg beteiligt sind. Ei- ne solche Information kann wiederum rückwärts gesandt werden im Wege des Back-tracing, etwa indem die Kennziffern ausgewertet werden, die den Stationen während der Aufbauphase zugeordnet wurden. Danach kann eine globale Freigabe erfolgen, etwa indem ausgehend von der Anfangsstation oder einer zentralen Kontrollinstanz sämtliche, momentan nicht an bestehenden Bussen verwendeten Stationen zurückgesetzt bzw. für den Aufbau eines Busweges freigegeben werden.
Es sei darauf hingewiesen, dass etwa auch unter bestimmten Bedingungen, wie nach einem festen Zeitablauf, eine Busfreigabe erfolgen kann. Diese Art der Freigabe, kann allerdings verhindern, dass Busse, die per se aufbaubar wären, aufgebaut werden können; so ist bei sehr großen Prozessorfeldern denkbar, dass die Wege extrem lang werden, weil um verschiedene, im Laufe des Betriebes dynamisch in das Feld hineinkonfigurierte Zellgruppenanordnungen mäanderförmig ein Weg herum bzw. durch solche Konfigurationen gelegt werden muss, was bei großen Feldern sehr lange dauern kann. Sorge ist daher bevorzugt dafür zu tragen, dass eine hinreichende Zeit für den Aufbau eines Busses verbleibt'.
Es sei erwähnt, dass es prinzipiell möglich ist, insbesondere in sehr großen Feldern, simultan mehrere Buswege bzw. Busverbindungen zwischen unterschiedlichen Stationen und unterschiedlichen Empfängern aufzubauen. Dies kann jedoch dazu führen, dass sich zwei aufzubauende Busverbindungen wechselseitig im Fortschreiten blockieren, so dass keiner von den beiden Bussen erfolgreich eine Verbindung aufbaut. Es kann mit anderen Worten zu einem Deadlock kommen. Dass derartige Deadlock-Situationen auch bei simultanem Aufbau mehrerer Busse verhindert werden können, sei. erwähnt. So ist vorstell- bar, Bussen eine Priorität zuzuordnen und damit zu gewährleisten, dass dann, wenn ein aufzubauender Bus hoher Priorität auf einen gleichfalls noch nicht "aufgebauten Bus geringerer Priorität trifft, die Stationen des Busses mit geringerer Priorität besetzt werden, d. h. dass die vorherige Reservierung für einen aufzubauenden Bus geringerer Priorität ignoriert wird. Dabei wird die tatsächliche Implementierung derartiger Verbindungsaufbauten abhängig, davon zu gestalten sein, wie die für die Busaufbauprotokollumsetzung erforderliche Logik in eine Halbleiterarchitektur umzusetzen ist, d. h. welcher Aufbau im Einzelfall erforderlich ist; wie der Busaufbau und erforderlichenfalls der Versuch eines Neuaufbaus nach Scheitern eines ersten Versuchs auszusehen hat, ob eine. Priorisierung erfolgen soll und kann, wobei vorstellbar ist, eine Priorisierung eines aufzubauenden Busses etwa nach Be- deutung des Makros, das in das Feld konfiguriert wird, der Wartezeit seit dem Versuch eines ersten Aufbaus usw., zu bestimmen. Prinzipiell wäre es möglich, nach dem Erreichen des Ziels ausgehend vom Start, also typisch nach Erreichen des Empfängers ausgehend vom den Busaufbau typisch bewirkenden Sender, lediglich ein Signal auszusenden, das dem Sender anzeigt, dass überhaupt ein Bus aufbaubar ist, damit dieser mit dem Senden beginnen mag. In einem solchen Fall könnte ein abzusendendes Datenpaket einfach wie eine Stationsaüfbauanfrage an alle Nachbarstationen gesandt werden. Es müsste dann aber mit jedem Datenpaket sichergestellt werden, dass am Empfänger erkannt werden kann, von wo, das heißt von welcher Station ein abgesandtes Datenpaket zuerst empfangen wird, es muss sichergestellt werden, dass ein bestimmtes Datenpaket nur einmal empfangen wird, auch wenn es über andere, verschlunge- ne Pfade später noch einmal zum Empfänger gelangt. Bevorzugt wird aber in jedem Fall sein, dass die anderen Stationen freigegeben werden, etwa durch Back-tracing nach Erreichen der Zielstation. Dieses Busbeteiligungssignal, das rückwärts gesandt wird, kann ausgehend von den Zahlenwerten, die den Nachbarstationen zugeordnet werden, erfolgen. Im übrigen sei darauf hingewiesen, dass es gleichfalls möglich ist, dass sich die Station lediglich merkt, aus welcher Richtung aus sie angesprochen wurde. In einem solchen Fall kann ohne Vergleich an den Nachbarstationen, welche Kennzifferwerte diese besitzen, eine Rückverfolgung sehr schnell geschehen und es kann überdies dann, wenn in der Station festgehalten wird, welche Nachbarstationen beim Busaufbau noch angesprochen wurden, gewährleistet werden, dass auch beim Back-tracing die nicht am aufgebauten Bus beteiligten Stationen freigegeben werden. Die einer Station beim Ansprechen zuzuordnende Kennziffer kann daher auch eine Kennziffer sein, die die Richtung angibt, von welcher aus die Station angesprochen wurde. Bei vier nächsten anzusprechenden Nachbarn reichen dafür bei- spielsweise zwei Bit. Werden zusätzlich noch die Stationen gespeichert, die angesprochen worden sind, während der Bus aufgebaut wurde, sind weitere vier Bit erforderlich bei einer Vier-nächste-Nachbarn-Architektur. Es kann ein weiteres Bit hinzugefügt werden, um zu kennzeichnen, ob die Station über- haupt schon angesprochen wurde oder vom Busaufbau des aktuell aufzubauenden Busses bislang unberührt geblieben war. Kommen Priorisierungen und dergleichen dazu, sind weitere Zustände festzuhalten. Es sei darauf hingewiesen, dass dies feingranu- lar erfolgen kann, und zwar insbesondere auch dann, wenn das Prozessorfeld für sich grobgranular aufgebaut ist.
Es sei weiter darauf hingewiesen, dass verschiedene Möglichkeiten existieren, nach dem erfolgreichen Aufbau eines ersten Busses zwischen einem ersten Sender und einem ersten Empfän- ger den Aufbau eines zweiten Busses, zwischen z. B. einem zweiten Sender und einem zweiten Empfänger zu ermöglichen; dabei kann auch einer der Sender und/oder einer der Empfänger identisch sein. Das Ansprechen von zwei Empfängern aus ein und demselben Sender kann sinnvoll sein, wenn etwa ein Be- rechnungsergebnis als Eingang für zwei verschiedene Zweige eines Programmes, die in unterschiedliche- Bereiche hineinkonfiguriert sind, benötigt wird. Ein Ansprechen eines einzelnen Empfängers aus mehreren Sendern kann erwünscht sein, wenn dort etwa zwei Operanden, die aus unterschiedlichen Konfigu- rationsbereichen erhalten werden sollen, zu verknüpfen sind, und ein Ansprechen von einem Empfänger über ein und denselben Sender kann geboten sein, wenn Operanden, die zu unterschied- liehen Zeiten erhalten bzw. bestimmt wurden, an ein und demselben Empfänger miteinander verknüpft werden sollen, etwa in der Form an x an-ι. Es kann dann über Register im Bus sichergestellt werden, dass eine solche Verknüpfung nach Aufbau von zwei Bussystemen möglich wäre, auch wenn dies typisch schon aus Gründen des Energieverbrauches im Bussystem weniger bevorzugt wäre als eine lokale Zwischenspeicherung von Operanden und dergleichen. Der Aufbau des weiteren oder nächst aufzubauenden Busses kann etwa dadurch erfolgen, dass mit dem Stationsfreigabesignal nach vorläufiger Reservierung einer Station ein Signal mitgesandt wird, welches angibt, welchem aufgebauten Bus die Station gehörte, wobei dieser Bus etwa wiederum durch ein Priorisierungssignal gekennzeichnet werden kann. Wenn eine freigebende Station dann einer Station benachbart liegt, die gerne selbst einen Bus aufbauen würde, der eine geringfügig niederere Priorisierung hat, kann dies dort festgestellt werden und es kann dann von dieser Station ausgehend der nächste Busaufbau bewirkt werden. Alternativ kann, bei einer globalen Freigabe aller momentan nicht an ei- nem Busaufbau benötigten Stationen und/oder danach ein globales Signal abgesandt werden, etwa von einer zentralen Kontrollinstanz, welches dem Feld mitteilt, welche Busverbindung als nächste aufzubauen ist bzw. welche Priorität die nächste aufzubauende Busverbindung haben soll. Statt eines globalen Broadcast einer derartigen Busaufbauverwaltungsin- formation kann auch insbesondere zentral und/oder an mehreren Stellen dezentral, etwa bei hierarchisch angeordneten Prozessorfeldern, bei denen innerhalb eines bestimmten Bereiches ein Bus- aufbau gewünscht wird, lokal und/oder regional eine Signalisierung an eine einen Busaufbau anfordernde Station wie einen Sender, der seinen Empfänger erreichen muss, erfolgen. Welche Art der Stationsfreigabe und/oder der Mitteilung, dass ein weiterer Bus aufgebaut werden kann, tatsächlich implementiert wird, wird insbesondere davon abhängig sein, wie schnell die diesbezügliche Information über das Array propagiert werden kann und/oder welche Busaufbauhäufigkeit über der Zeit erwartet wird. So kann dann, wenn eine Analyse zeigt, dass die auf einem Feld typisch benötigten und simultan abzuarbeitenden Konfigurationen selten einen Busaufbau erfordern, der zudem langsam erfolgen kann, eine prozessorarchitektonisch einfache Implementierung gewählt werden, die mit wenigen Logikelementen auskommt, um die entsprechende Steuerung zu gewährleisten, während bei sehr häufigem und auch schnell benötigtem Busaufbau eine komplexere Implemen- tierung sinnvoll sein kann.
In einer besonders bevorzugten Variante ist es möglich, unter mehreren per se bezüglich der Buslänge und/oder des Umfangs der Stationen entlang des Busses gleichwertiger Bussysteme einen Bus auszuwählen anhand verschiedener objektiver Beurteilungskriterien. Während es prinzipiell möglich ist, in einem solchen Fall eine zufällige Wahl zu treffen, können, je nach Anforderung und tatsächlicher Auslegung, unterschiedliche Kriterien herangezogen werden. Es kann etwa bei Architekturen, die unterschiedliche Busverbindungen in Horizontal- und Vertikalrichtung aufweisen, etwa wenn die Busverbindungen in Vertikalrichtung zusätzlich Register umfassen, durch welche die Daten zu schleusen sind, während längs der Vertikalrichtung registerfrei und somit Daten mit geringeren Energieverlusten weiterleitende Busverbindungen existieren (ein Beispiel für eine solche Architektur ist die XPP 128 des Anmelders) , vorgesehen sein, dass beim Busaufbau vermerkt wird, wie viele Schritte horizontal und vertikal gegangen wurden. Diese Information kann in einer Station abgelegt werden oder an einem Header, der mit dem Busauf- bauanforderungssignal mitübertragen wird; es erfolgt dann zur Busauswahl eine Auswertung derartiger Informationen. Alternativ kann etwa an jeder Station abgefragt werden, wie viele Busse in der Nähe der Station bereits existieren, um etwa zu ermöglichen, dass eine näherungsweise gleichmäßige Busverbindungsdichte über das Array hinweg erhalten wird. Dieses Vorgehen ist einerseits vorteilhaft, weil der Datentransport längs der Busse auf Grund der erforderlichen Umladung der Busleitungskapazitäten, den in Bussen zu integrierenden Treibern usw. einen erhöhten Energieverbrauch ergibt, weshalb eine Vergleichmäßigung der Busverteilungsdichte über das Pro- zessorfeld zu einer Vergleichmäßigung der thermischen
Belastung führt. Insofern kann durch die Vergleichmäßigung insgesamt womöglich die Taktrate bei gleicher Kühlung erhöht werden, was im Bereich mobiler Prozessoren für Laptops, Handys und dergleichen vorteilhaft ist. Andererseits ist eine Busverbindungsdichtevergleichmäßigung auch vorteilhaft für die Auslastungserhöhung und Ressourcenschonung.
Schutz wird auch beansprucht für ein multidimensionales Feld rekonfigurierbarer Elemente, in welchem Bussysteme für den dynamischen Selbstaufbau in einer der vorbeschriebenen Weisen und/oder in einer Weise, wie sie aus dem nachfolgenden ersichtlich ist," vorgesehen sind. Es sei darauf hingewiesen, dass die Bezeichnung „multidimensionales Feld rekonfigurierbarer Elemente" sich auf grobgranulare rekonfigurierbare Elemente mit Elementen wie ALUs, erweiterten ALUs, RAMPAEs usw. beziehen kann, wie sie vorerwähnt wurden, und dass im Sinne der Erfindung eine Multidimensionalität nicht nur durch die räumliche Übereinanderanordnung und Nebeneinanderanordnung von rekonfigurierbaren Elementen erhalten werden kann, sondern auch durch eine bestimmte Art und Weise der Verbindung. So sind in linear angeordneten Feldern den Elementen in 5 der Mitte zwei nächste Nachbarn zugeordnet, in zweidimensionalen Feldern wie be'i einer Kachelung typisch vier nächste Nachbarn, und in einer dreidimensionalen Anordnung typisch sechs nächste Nachbarn, wie dies aus der Stapelung von Würfeln und dergleichen erkannt werden kann. Die Verwendbarkeit
10 etwa drei- oder sechseckiger Zellen sei beispielhaft erwähnt. Es ist aber auch möglich, zusätzlich Busverbindungen vorzusehen, die diagonal verlaufen, übernächste Nachbarn verbinden, größere Strecken vorsehen usw. Wird eine solche Busstruktur implementiert, ergibt sich eine Multidimensionalität mit ei-
15. nem Dimensionsmaß größer 1, wobei dieses Dimensionsmaß auch von einer ganzen Zahl verschieden sein kann. Eine solche Anordnung wird in jedem Fall als multidimensionales Feld der vorliegenden Erfindung betrachtet.
20 Die vorliegende Erfindung wird im Folgenden nur beispielsweise an Hand der Zeichnung beschrieben. In dieser zeigt:
Fig. El ein multidimensionales Feld miteinander kommunizierender rekonfigurierbarer Elemente, die für 25 den Busaufbau ausgebildet sind, vor dem Beginn des Busaufbaus; Fig. E2 das Feld von Fig. 1 nach dem ersten Busaufbauschritt; Fig. E3 das Feld von Fig. 1 nach dem zweiten Busaufbau- 30 schritt; Fig. E4 das Feld von Fig. 1, nachdem das Empfängerfeld erreicht wurde, mit unterschiedlichen, möglichen Busverbindungen; Fig. E5 die Anordnung mit dem ausgewählten Bus.
Nach Fig. 1 umfasst 'ein allgmein mit 1 bezeichnetes Feld 1 eine Vielzahl rekonfigurierbarer Zellen, die miteinander über selbstaufbauende Busse kommunizieren können.
Jede Zelle la, lb, lc usw., die am Busaufbau zu beteiligen ist, weist interne Logikelemente auf, die es ermöglichen, Informationen darüber zu speichern, ob die Zelle derzeit von einem Bus bereits verwendet wird (mit X gekennzeichnete Zellen in Feld 1) , ob die Zelle bereits als mögliche Buszelle bei einem aktuellen Busaufbau angesprochen wurde, und, wenn ja, in wie vielen vertikalen und horizontalen Schritten der Busaufbau bis zur Zelle erfolgte, wie viele Schritte insgesamt beim Busaufbau zurückgelegt wurden oder ob die Zelle noch vollständig frei ist und noch nicht angesprochen wurde. Um die Anzahl der horizontal bzw. vertikal von einem Bus bereits abgeschrittenen Zellen auf dem Weg zwischen einer möglichen Senderzelle S und einer möglichen Empfängerzelle e abzulegen, sind in jeder Zelle zwei Speicherbereiche vorgesehen, die in den Figuren mit H und V bezeichnet sind. Weiter ist ein Speicherbereich für die Gesamtzahl der durchlaufenen Schritte ablegbar, wie durch die grossen Zahlen 1 - 12 in den Figuren 1 - 5 dargestellt. Dabei ist die gewählte Maximalzahl 12 nur beispielhaft, da dies im gewählten Beispiel geringer Komplexität die erforderliche Schrittzahl zum Erreichen des Empfängers, ausgehend vom gewählten Sender, ist. Die Zellen sind weiter dazu ausgebildet, dann, wenn sie ein Busaufbauan- forderungssignal erhalten und frei. sind, an einem aufzubauenden Bus teilzunehmen, und zugleich an Nachbarstationen in einem nachfolgenden Schritt eine Anfrage zu senden, ob diese Nachbarstationen gleichfalls für den Busaufbau frei sind. Dazu weisen sie Signal-Sende- und -Empfangsverbindungs- 5 beschaltungen für die jeweils nächsten Nachbarn auf. Die einzelne Zelle ist weiter so ausgebildet, dass zusammen mit dem Busaufbauanforderungssignal Information bezüglich der insgesamt schon zurückgelegten Schrittweite und der Anzahl der horizontalen und vertikalen Teilschritte (H und V) an die 10 angesprochenen Stationen übermittelt werden kann.
Der Busaufbau geschieht im vorliegenden Fall wie folgt: Zunächst wird das dynamisch konfigurierbare Array derart betrieben, dass alle Busse aufgebaut seien. Es mögen dann
15. bestimmte Konfigurationen enden und es sei erforderlich, eine neue Konfiguration fragmentiert in freie Bereiche des Arrays hineinzukonfigurieren, weil eine hinreichende Anzahl funktioneil geeigneter Zellen derzeit nicht zur Verfügung steht. Es sei dabei weiter ein Fall gegeben, bei welchem alle Felder
20 bis auf die mit X bezeichneten für den Busaufbau zur Verfügung stehen.
Nun wird von jenen Zellen, die miteinander zu kommunizieren haben, um ein in das Array hineinzukonfigurierendes Makro
25 ausführen zu können, eine Sende- und eine Empfangszelle festgelegt. Dies kann durch die Konfiguration bzw. den Scheduler oder ähnliches geschehen. Diese sind in Fig. 1 mit S bezeichnet. Nun sendet die den Busaufbau bewirkende Senderzelle S ein erstes Busaufbauanforderungssignal an ihre unmittelbaren
30 Nachbarn, das heisst jene Zellen, die an deren Zellenkanten angrenzen, im dargestellten Beispiel also an vier Zellen. Diese Zellen stellen fest, dass sie frei sind, dass sie die ersten Stationen sind, die Busaufbauanforderungssignale erhalten, und dass sie jeweils einen Schritt horizontal oder vertikal respektive von der Sendezelle entfernt sind. Es wird nun in den Nachbarzellen entsprechend in den H- und V- Speicherbereich eine 0 bzw. 1 eingespeichert, und es wird eine 1 in den Schrittw'eitenspeicher der angefragten Zelle gespeichert.
Im zweiten Schritt spricht jede zuvor angesprochene freie Zelle wiederum ihre eigenen Nachbarzellen an und fragt bei diesen an, ob sie für den Busaufbau zur Verfügung stehen. Dies führt dazu, dass eine Reihe weiterer Zellen danach erkannt haben, dass sie für den Busaufbau benötigt werden und die zweiten Zellen im Verlauf eines möglicherweise aufgebau- ten Busses darstellen. Weiter werden entsprechende Vermerke über die horizontale bzw. vertikale Schrittweite in entsprechenden Speicherbereichen abgelegt. Die bereits mit X gekennzeichneten Zellen ignorieren hingegen das Busaufbauanforderungssignal, wie das in der 4. Zelle von links, 2. Zeile von unten der Fall ist.
Nachdem die ersten Zellen ihre Nachbarzellen angesprochen haben, ist klar, dass sie in weiteren Busaufbauschritten schweigen können; ein Busanforderungssignal wird so nur un- mittelbar im Schritt nach jenem ausgesandt, welcher die das Busaufbauanforderungssignal aussendende Zelle reserviert hat. Dies verhindert zwar, dass Zellen, die erst während des Busaufbaus freigegeben werden, später noch reservierbar sind, spart aber, da nicht immer wieder von allen bereits reser- vierten Zellen Busaufbauanforderungssignale ausgesandt werden müssen, was Treibe'rleistung erfordert, Energie und ist somit etwa für mobile Anwendungen bevorzugt, wo der erhaltene Vor- teil überwiegt gegenüber Lösungen, bei denen später freiwerdende Zellen auch noch in einen entstehenden Bus miteinbezogen werden können; hier wäre allerdings besonders etwa Sorge dafür zu tragen, dass stets in jenen Nachbarzellen der Bus-aufbau als relevant eingestuft wird, die die geringsten Schrittweiten längs des Busses erfordern. Im nächsten Busaufbauschritt sprechen nun die zweiten Zellen ihre jeweiligen Nachbarzellen wiederum an, wobei, da die Zellen 1 für den Busaufbau schon reserviert sind, die Zellen 2 nicht mehr zurücklaufen können, sondern nur nach vorne, weg vom Sender. Dies setzt sich fort, bis der Empfänger schließlich erreicht ist, vergleiche Fig. 4.
Es sind nun im Beispiel am Empfänger zwei Zellen gleichzeitig angekommen, die beide die gleiche Schrittweite 12 tragen und es ist, wie durch die verschieden gestrichelten Linien ersichtlich, möglich, über diese Zellen rückwärtsschreitend unterschiedliche Buswege aufzubauen. Es wäre hier, zwar prinzipiell eine zufällige Auswahl möglich, es wird aber, wie bevorzugt, zunächst bei jedem Abschreiten in Rückwärtsrichtung versucht, die V-Werte maximal zu halten. Dies führt zu dem durchgehend gezeichneten Bus in Fig. 5. Sobald der Busaufbau durch Rückwärtsschreiten bestätigt wurde, können alle Zellen, die nicht daran beteiligt sind, abgewiesen 'und wieder freigegeben werden. Dazu wird ein globales Busfreigabesignal ausgestrahlt, das anzeigt, dass alle derzeit nicht an einem aufgebauten Bus beteiligten Zellen sich zurücksetzen können.
Es sei erwähnt, dass die Art und Weise des Busaufbaus durch dynamische Selbstorganisation unter Verwendung geeigneter, dem Durchschnittsfachmann aus der Offenbarung ersichtlichen Hardwareschaltungen in der Zelle festlegbar ist.

Claims

Patentansprüche
1. Verfahren zur Auswahl eines aus einer Vielzahl von Wegen zur Erzielung eines Datenverarbeitungsergebnisses bei der
Datenverarbeitung unter zumindest möglicher Verwendung multidimensionaler Felder konfigurierbarer Datenhandhabungselemente, dadurch gekennzeichnet, daß den Datenhandhabungselementen konfigurationsabhängig lei- stungsaufnahmebezogene kennzeichnende Größen zugeordnet werden und eine Wegauswahl unter Zuordnungsbewertung erfolgt.
2. Verfahren nach dem vorhergehenden Anspruch, dadurch ge- kennzeichnet, daß einer aus einer Vielzahl unterschiedlicher Algorithmen ausgewählt wird.
3. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß eine aus einer Vielzahl unterschiedlicher Konfigurationen ausgewählt wird.
4. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß über die Zuordnung einer gegebenen Datenverarbeitungsaufgabe und/oder -teilaufgabe an ein multidimensionales Feld konfigurierbarer Datenhandhabungselemente und/oder einer anderen Datenverarbeitungsarchitektur, insbesondere an ein ASIC, und/oder an eine rein sequenziell arbeitende CPU bei der Wegauswahl entschieden wird.
5. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß ein zweidimensionales Feld konfigurierbarer Datenhandhabungselemente betrachtet wird.
6. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß eine Auswahl aus einem zur Laufzeit konfigurierbaren, insbesondere störungsfrei partiell rekonfigurierbaren Pro- zessorfeld vorgenommen wird.
7. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß als konfigurierbare Datenhandhabungselemente zumindest einige, bevorzugt alle der Elemente Busse, Register, ALUs, RAMs und/oder andere grobgranulare Datenhandhabungselemente betrachtet werden.
8. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß der kennzeichnende Wert unabhängig von der tatsächlichen aktuell zugeordneten Aufgabe nur davon abhängig gewählt wird, ob das jeweilige Datenhandhabungselement überhaupt verwendet wird oder nicht.
9. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß jeder Konfiguration eine eigene Kennzahl bei der Verwendung zugeordnet wird.
10. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß eine ström-, arbeits- und/oder lei- stungsbezogene Größe als verbrauchskennzeichnende Größe zugeordnet wird.
11. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß eine Auswahl unter Berücksichtigung eines Summenwertes verbrauchskennzeichnender Größen erfolgt.
12. Verfahren nach dem vorhergehenden unabhängigen An- spruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß eine Auswahl unter Berücksichtigung weiterer Größen erfolgt, insbesondere einer erforderlichen Ausführungszeit und/oder erforderlicher Ressourcen, einer aktuellen Prozessorauslastung und/oder einer aktuell ge- wünschten und/oder möglichen Leistungsaufnahme.
13. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß eine Auswahl vor der eigentlichen Datenverarbeitung erfolgt.
14. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß die Kennzeichnungsgrößen bei der Simulation einer Datenverarbeitung bereitgestellt und/oder ausgewählt werden.
15. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß eine Auswahl zur Laufzeit erfolgt.
16. Verfahren zum Betrieb eines multidimensionalen Feldes rekonfigurierbarer Elemente, worin Anordnungen von
Gruppen zusammen datenhandhabender Elemente in vorbestimmter Weise während der Laufzeit zur Abarbeitung vorgegebener Aufgaben in das Feld hinein konfiguriert wer- den, dadurch gekennzeichnet, daß für zumindest eine abzuarbeitende Aufgabe eine Mehrzahl von solchen Elementgruppenanordnungen im multidimensionalen Feld bestimmt wird, die zur Abarbeitung der vorgegebenen Aufgabe geeignet sind, für die Abarbeitung der vorgegebenen Aufgabe eine dann besonders geeignete Elementgruppenanordnung aus der Mehrzahl ausgewählt wird und die ausgewählte in das Feld hinein konfiguriert wird.
17. Verfahren nach dem vorhergehenden Anspruch dadurch gekennzeichnet, daß die Elementgruppenanordnung anhand ihrer Geometrie im Vergleich mit der Geometrie im Feld bereits für die Umkonfiguration verfügbarer und/oder vermutlich bald verfügbar werdender Elemente ausgewählt wird.
18. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , worin Elementgruppenanordnungen betreffende Konfigurationsdaten aus einem Speicher mit nicht vernachlässigbaren Zugriffszeiten eingelesen werden und/oder mit nicht vernachlässigbaren Generierungszeiten generiert werden, dadurch gekennzeichnet, daß zumindest für einige Konfigurationen für die Auswahl zunächst nur ein gegenüber dem Konfigurationsda- tensatz aller Konfigurationsdaten in der Größe reduzierter Kenndatensatz, insbesondere ein Satz von die Geometrie betreffenden Kenndaten, in eine Elementgruppenanordnungsauswahlstufe eingelesen werden, eine Auswahl aufgrund des Kenndatensatzes getroffen wird und dann im Ansprechen auf die Auswahl die Konfigurationsdaten aus dem Speicher gelesen oder generiert werden.
19. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , worin bei der Umkonfigu- rierung des Feldes zur Durchführung einer Mehrzahl zumindest teilweise simultan auszuführender Aufgaben, von denen für wenigstens zwei Gruppen zusammen Daten handhabender Elemente in vorbestimmter Weise während der Laufzeit zur Abarbeitung vorgegebener Aufgaben in das Feld hinein konfiguriert werden, eine Mehrzahl von solchen Elementgruppenanordnungen, die zur Abarbeitung der vorgegebenen Aufgabe geeignet sind, vorbestimmt werden, die zu einer gegebenen Zeit und/oder einem gegebenen Ereignis für die zumindest teilweise simultane Hineinkonfiguration verfügbarer Ressourcen bestimmt werden und jene Elementgruppenanordnungen aus der vorbestimmten Anzahl ausgewählt werden, mit denen eine simultane Abarbeitung besonders effizient möglich ist.
20. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß eine erste Elementgruppenanordnung in das Feld hineinkonfiguriert wird, mit dieser Elementgruppenanordnung begonnen wird, die Aufgabe abzuarbeiten, bis ein vorgegebenes Ereignis auftritt und danach unter zumindest partieller Rekonfiguration mit der Aufgabenabarbeitung in einer weiteren Elementgruppenanordnung fortgefahren wird.
21. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , worin die Elementgruppenanordnungen sich hinsichtlich der Abarbeitungsgeschwindigkeit unterscheiden und die Auswahl im Ansprechen auf die gegebenenfalls unter Berücksichtigung weiterer Aspekte maximal erzielbare Abarbeitungsgeschwindigkeit erfolgt .
22. Multidimensionales Prozessorfeld aufweisend eine Vielzahl benachbart angeordneter Datenverarbeitungszellen mit
Eingängen, die Daten von Vernetzungswegen erhalten, einer Operanden-Verknüpfungseinheit, die diese entsprechend der jeweiligen Funktion ihrer Operanden- Verknüpfungseinheit verknüpfen und
Ausgängen, um die Daten verknüpft auf Vernetzungswege aufzugeben, dadurch gekennzeichnet, daß die Datenverarbeitungszellen ein Aspektverhältnis aufwei- sen, das wenigstens 2:1, bevorzugt 2:1 beträgt.
23. Multidimensionales Prozessorfeld nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß die Datenverarbeitungszellen als grobgranular konfigurierbare Zellen ausgebildet sind.
24. Multidimensionales Prozessorfeld nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß Datenverarbeitungszellen in Reihen und Spalten angeordnet sind.
25. Prozessorfeld nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß zumindest bei einem Teil der Datenverarbeitungszellen Dateneingänge vorgesehen sind, um von einer oberen Reihe Daten zu erhalten und Datenausgänge, um an eine untere Reihe Daten auszugeben.
26. Prozessorfeld nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß die Datenverarbeitungseinheiten EALUs, ALU und/oder registerflankierte Zellen sind.
27. Verfahren zur Konfigurierung eines Prozessorfeldes nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , worin Zellen für die Konfiguration ausgewählt und in Funktion und Vernetzung bestimmt werden, wobei eine Vernetzung derart bestimmt wird, daß Daten von Zelle zu Zelle zumindest weitgehend verzögerungsfrei übertragbar sind, dadurch gekennzeichnet, daß als benachbarte Zellen, zwischen denen Daten binnen eines Taktes oder einer geringen Taktzahl übertragbar sind, auch solche berücksichtigt werden, die nicht unmittelbar nebeneinander liegen, sondern in der Breite durch eine Strecke getrennt sind, die geringer ist als die Länge der Zelle.
28. Multidimensionales Prozessorfeld aufweisend eine Vielzahl benachbart angeordneter Datenverarbeitungszellen mit
Eingängen, die Daten von Vernetzungswegen erhalten, einer Operanden-Verknüpfungseinheit, die diese entsprechend der jeweiligen Funktion ihrer Operanden- Verknüpfungseinheit verknüpfen und
Ausgängen, um die Daten verknüpft auf Vernetzungswege aufzugeben, dadurch gekennzeichnet, daß die Datenverarbeitungszellen ein Aspektverhältnis aufweisen, das wenigstens 2:1, bevorzugt 2:1 beträgt.
29. Multidimensionales Prozessorfeld nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß die Datenverarbeitungszellen als grobgranular konfigurierbare Zellen ausgebildet sind.
30. Multidimensionales Prozessorfeld nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß Datenverarbeitungszellen in Reihen und Spalten angeordnet sind.
31. Prozessorfeld nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß zumindest bei einem Teil der Datenverarbeitungszellen Dateneingänge vorgesehen sind, um von einer oberen Reihe Daten zu erhalten und Datenausgänge, um an eine untere Reihe Daten auszugeben.
32. Prozessorfeld nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß die Datenverarbeitungseinheiten EALUs, ALU und/oder registerflankierte Zellen sind.
33. Verfahren zur Konfigurierung eines Prozessorfeldes nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , worin Zellen für die Konfiguration ausgewählt und in Funktion und Vernetzung bestimmt werden, wobei eine Vernetzung derart bestimmt wird, daß Daten von Zelle zu Zelle zumindest weitgehend verzögerungsfrei übertragbar sind, dadurch gekennzeichnet, daß als benachbarte Zellen, zwischen denen Daten binnen eines Taktes oder ei- ner geringen Taktzahl übertragbar sind, auch solche berücksichtigt werden, die nicht unmittelbar nebeneinander liegen, sondern in der Breite durch eine Strecke getrennt sind, die geringer ist als die Länge der Zelle.
34. Datenverarbeitungsanordnung mit einem multidimensionalen Feld in Funktion und/oder Vernetzung konfigurierbarer Zellelemente und diesen zugeordneten Konfigurationsvorhaltemitteln zum lokalen Konfigurations-Vorhalten, dadurch gekennzeichnet, daß die Konfigurationsvorhaltemittel dazu ausgebildet sind, zumindest einen Teil der vorgehaltenen Konfigurationen nichtflüchtig vorzuhalten.
35. Datenverarbeitungsanordnung mit einem multidimensionalen Feld in Funktion und/oder Vernetzung konfigurierbarer Zelle- lemente und diesen zugeordneten Konfigurationsvorhaltemitteln zum lokalen Konfigurations-Vorhalten, dadurch gekennzeichnet, daß die Konfigurationsvorhaltemittel dazu ausgebildet sind, zumindest einen Teil der vorgehaltenen Konfigurationen nichtflüchtig vorzuhalten.
36. Datenverarbeitungsanordnung nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß die Funktion grobgranular konfigurierbar ist.
37. Datenverarbeitungsanordnung nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß die Vernetzung grobgranular konfigurierbar ist.
38. Datenverarbeitungsanordnung nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß als Zellelemente zumindest eines von ALUs, EAlUs, RAM-Zellen, I/0-Zellen, Logiblöcken vorgesehen sind.
39. Datenverarbeitungsanordnung nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß jedem Zellelement ein eigenes Konfigurationsvorhaltemittel zugeordnet ist.
40. Datenverarbeitungsanordnung nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß die Konfigurationsvorhaltemit- tel dazu ausgebildet sind, eine Vielzahl von Konfigurationen vorzuhalten.
41. Datenverarbeitungsanorndung, dadurch gekennzeichnet, daß mehrere fest vorgegebene nichtflüchtige Konfigurationen im Konfigurationsvorhaltemittel vorgegeben sind.
42. Datenverarbeitungsanordnung nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß die Anordnung dazu ausgebildet ist, eine wechselnde einer Vielzahl von vorgehaltenen Kon- figurationen zu verwenden, insbesondere im Wege der Wa- ve-Rekonfiguration oder des lokalen Sequencing.
43. Datenverarbeitungsanordnung nach dem vorhergehenden un- abhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß bei eingien Zellen im Betrieb mit veränderlichen Konfigurationen versehbare Konfigurationsvorhaltemittel vorgesehen sind.
44. Datenverarbeitungsanordnung nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß als Konfigurationsvorhaltemittel zunmindest eines aus ROM, EPROM, EEPROM, Flash- Speicher, Fuse-, Antifuse-programmierbare Speichermittel und/oder in insbesondere in oberen Lagen einer Siliziumstruktur fest vorgesehene Speichermittel gewählt sind.
45. Verfahren zur Herstellung einer dedizierten Datenverarbeitungsanordnung, dadurch gekennzeichnet, daß ein multidimensionales Feld mit in Funktion und/oder Vernetzung konfigurierbaren Zellelemente und diesen zugeordneten Konfigurationsvorhaltemitteln zum lokalen Konfigurations - Vorhalten vorgegeben wird, bestimmt wird, welche Konfigurationen in diesen vorzuhalten sind, und dann nichtflüchtige Konfigurationsvorhaltemittel so vorgesehen werden, daß sie zumindest einen Teil der vorgehaltenen Konfigurationen nichtflüchtig vorhalten.
46. Verfahren nach dem vorhergehenden Anspruch, dadurch ge- kennzeichnet, daß von einem zur laufzeitrekonfigurierbaren multidimensionalen Feld ausgegangen wird.
47. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, daß zunächst von einem zur laufzeitrekonfigurierbaren multidimensionalen Feld mit re- konfigurationsbeschaltung ausgegangen wird und dann für rekonfiguration nichtbenötigte Felder weggelassen werden.
48. Rekonfigurierbare Signalverarbeitungsvorrichtung mit einer Vielzahl von miteinander, insbesondere konfigurierbar verknüpfbaren Signalverarbeitungsschaltkreisen, die in ihrer Funktion veränderlich sind, wobei diese einen Ausgang aufweisen, über welchen eine Umkonfigu-rierung angefordert und/oder eine Akzeptierung einer Umkonfiguration vorgesehen werden kann, dadurch gekennzeichnet, dass zumindest ein Teil der verknüpfbaren Signalverarbeitungs- Schaltkreise analoge Signalverarbeitungsschaltkreise sind, wobei weiter eine Rekonfigurationseinheit zur Vorgabe von Konfigurationen für die das Analogsignal verarbeitenden Schaltkreise vorgesehen ist.
49. Rekonfigurierbare Signalverarbeitungsvorrichtung nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass ein Teil der Signalverarbeitungsschaltkreise digitale Schaltkreise sind.
50. Datenverarbeitungsvorrichtung mit einem Datenverar- beitungslogikzellenfeld und zumindest einer Sequenziell- CPU, dadurch gekennzeichnet, dass eine Ankopplung der Sequenziell-CPU und des Datenverarbeitungslogikzellenfeldes zum Datenaustausch in insbesondere blockweiser Form durch zu einem Cache-Speicher führende Leitungen möglich ist.
1. Verfahren zum dynamischen Aufbau einer Verbindung zwischen einem Sender und einem Empfänger über einen einer Vielzahl möglicher Wege, der von Station zu Station fortschreitet,
dadurch gekennzeichnet, dass
ausgehend von einer den Busaufbau wirkenden Einheit (Sen- der und/oder Empfänger) eine Anfrage an nächstliegende Stationen gesandt wird, welche für den Busaufbau bereit stehen, diesen Stationen eine Kennziffer zugeordnet wird, ausgehend von wenigstens einer Vielzahl, bevorzugt jeder freien Station, der eine Kennziffer zugeordnet wurde, eine Anfrage an nächstliegende Stationen nach der Verfügbarkeit der Stationen für einen Busaufbau gesandt wird, den verfügbaren Stationen eine weitere Kennziffer zuge- ordnet wird, und dies fortgesetzt wird, bis das gewünschte Ende des Busses erreicht ist.
52. Verfahren nach dem vorhergehenden Anspruch, worin von
Station zu Station, die jeweils für ein Fortschreiten des Busaufbaus verfügbar ist, unabhängig davon, ob mit dieser Station das Ziel erreicht werden wird oder nicht, eine veränderte Kennziffer zugewiesen wird.
53. Verfahren nach dem vorhergehenden Anspruch, dadurch ge- kennzeichnet, dass die Veränderung von Station zu Station nachvollziehbar gewählt wird, wobei insbesondere eine In- crementierung oder Decrementierung eines Zählwertes um eine feste Größe erfolgt, insbesondere mit Schrittweite gegebenenfalls durch zyklisches Zählen, d.h. Zählen in einem endlichen, zyklischen Zahlenraum.
54. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass zyklisch bis mindestens drei verschiedene Zählwerte zur Charakterisierung der Station durchgezählt werden.
55. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, daß nach Aufbau eines Bus-Weges zwischen Sender und Empfänger nicht benötigte Stationen wieder freigegeben werden.
56. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, dass ein Bus als aufgebaut betrachtet wird, sobald von einer Station aus das Ziel erreicht worden ist.
57. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass nach dem Aufbau eines ersten Busses der Aufbau weiterer Busverbindungen unterbunden wird.
58. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass den an einem aufgebauten Bus beteiligten Stationen das Erreichen des Busaufbaues mitgeteilt wird.
59. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass den an einem aufgebauten Bus beteiligten Stationen das Erreichen des Busaufbaues mit- geteilt wird, indem ausgehend vom Ziel in Rückwärtsrichtung den am Bus beteiligten Stationen ein Busbeteiligungssignal zugesandt wird, insbesondere durch Übertragen von Signalen entlang des Busses.
60. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass die Identifikation der am aufgebauten Bus beteiligten Stationen erfolgt, indem ausgehend vom Ziel die den erreichbaren Stationen gegebenenfalls zugeordneten Zahlenwerte verglichen werden und jene Stationen ausgewählt werden, die einen buszugehörigkeitsindikativen Zahlenwert besitzen.
61. Verfahren nach dem vorhergehenden Anspruch, worin ausgehend von einer Startposition die Zahlenwerte incrementiert werden, während beim Busaufbau von Station zu Station fortgeschritten wird und worin nach Erreichen des Ziels jene Stationen als zum Bus zugehörig identifi- ziert werden, die jeweils die kleinsten Zahlenwerte erreichbarer Stationen besitzen.
62. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass eine Freigabe nicht für eine Busverbindung benötigter Stationen durch Markierung jener Stationen, die an einem aufgebauten, benötigten Bus teilhaben, und Freigeben aller nicht dergestalt markierten Stationen, insbesondere durch das Senden eines globalen Freigabesignals erfolgt.
63. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, dass die Freigabe nicht benötigter Stationen wellenartig durch Zurücklaufen von einer Ziel- zu einem Starteinheit erfolgt und/oder durch Rückwärtslaufen vom Ziel zum Start unter Freigabe nicht benötigter Stationen durch Senden eines Freigabesignals durch jeweils jene Station, die bei der freizugebende Station zuvor angefragt hatte, ob sie für den Busaufbau zur Verfügung stehe.
64. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , worin simultan eine
Vielzahl von Busverbindungen aufgebaut wird, dadurch gekennzeichnet, dass zu jeder für den Aufbau einer Busverbindung angesprochenen Station ein Richtungswert zugeordnet wird, insbesondere in der Station abgespei- chert wird, der angibt, aus welcher Richtung oder von welcher ansprechenden Station ein Busaufbauanforderungssignal erhalten wurde.
65. Verfahren nach dem vorhergehenden Anspruch, dadurch ge- kennzeichnet, dass die Busverifikation durch Auswertung der Signale erfolgt, die anzeigen, von welcher ansprechenden Station aus ein Busaufbauanforderungssignal gesandt wurde und worin der Busaufbau zu dieser anfordernden Station hin erfolgt.
66. Verfahren nach dem vorhergehenden unabhängigen Anspruch oder einem Unteranspruch hierzu , dadurch gekennzeichnet, dass bei Vorliegen mehrerer, eine gleiche Anzahl von Stationen benötigender Busse, die potenziell aufbaubar sind, ein Bus anhand eines dem Bus zuweisbaren und/oder zugewiesenen Beurteilungskriterium ausgewählt wird.
67. Verfahren nach dem vorhergehenden Anspruch, dadurch gekennzeichnet, dass als Busbeurteilungskriterium die Anzahl horizontal und/oder vertikal durchlaufender Stationen und/oder die Anzahl registerbehafteter Stationen und/oder die Verbindungsdichte existierender Busverbindungen längs der Stationen und/oder die Größe verbleibender freier Felder, die nicht durch den Bus verteilt werden, herangezogen wird.
68. Multidimensionales Feld rekonfigurierbarer Elemente, wobei zumindest zwischen einigen der konfigurierbaren Elemenmte dynamisch aufbaubare Busse vorgesehen sind, dadurch gekennzeichnet, dass im Bussystem Einheiten vorgesehen sind, die dazu ausgebildet sind, direkt oder über Fernbusse indirekt benachbarte Gruppen in Bussegmenten anzusprechen und/oder eine Busstationsnummer zu speichern und/oder eine Beförderungssignalrichtung zu speichern und/oder einen Abbau von temporär gehaltenen Verbindungen zu womöglich für einen Busaufbau benötigten Stationen nach Feststellung des Nichtbenötigens durch Freigabe zu ermöglichen.
69. Datenverarbeitungsvorrichtung mit einem Datenverarbei- tungslogikzellenfeld und zumindest einer Sequenziell-CPU, dadurch gekennzeichnet, dass eine Ankopplung der Sequenziell-CPU und des Datenverarbeitungslogikzellenfeldes zum Datenaustausch in insbesondere blockweiser Form durch zu einem Cache-Speicher führende Leitungen möglich ist.
PCT/EP2003/008081 2002-08-07 2003-07-23 Verfahren und vorrichtung zur datenverarbeitung WO2004021176A2 (de)

Priority Applications (4)

Application Number Priority Date Filing Date Title
US10/523,763 US7657861B2 (en) 2002-08-07 2003-07-23 Method and device for processing data
AU2003286131A AU2003286131A1 (en) 2002-08-07 2003-07-23 Method and device for processing data
EP03776856.1A EP1537501B1 (de) 2002-08-07 2003-07-23 Verfahren und vorrichtung zur datenverarbeitung
US12/621,860 US8281265B2 (en) 2002-08-07 2009-11-19 Method and device for processing data

Applications Claiming Priority (60)

Application Number Priority Date Filing Date Title
DE10236269.6 2002-08-07
DE10236272 2002-08-07
DE10236271.8 2002-08-07
DE10236271 2002-08-07
DE10236272.6 2002-08-07
DE10236269 2002-08-07
EPPCT/EP02/10065 2002-08-16
PCT/EP2002/010065 WO2003017095A2 (de) 2001-08-16 2002-08-16 Verfahren zum übersetzen von programmen für rekonfigurierbare architekturen
DE10238172A DE10238172A1 (de) 2002-08-07 2002-08-21 Verfahren und Vorrichtung zur Datenverarbeitung
DE10238174A DE10238174A1 (de) 2002-08-07 2002-08-21 Verfahren und Vorrichtung zur Datenverarbeitung
DE10238174.7 2002-08-21
DE10238172.0 2002-08-21
DE10238173.9 2002-08-21
DE10238173A DE10238173A1 (de) 2002-08-07 2002-08-21 Rekonfigurationsdatenladeverfahren
DE10240000A DE10240000A1 (de) 2002-08-27 2002-08-27 Busssysteme und Rekonfigurationsverfahren
DE10240000.8 2002-08-27
DE10240022.9 2002-08-27
DE10240022 2002-08-27
PCT/DE2002/003278 WO2003023616A2 (de) 2001-09-03 2002-09-03 Verfahren zum debuggen rekonfigurierbarer architekturen
DEPCT/DE02/03278 2002-09-03
DE2002141812 DE10241812A1 (de) 2002-09-06 2002-09-06 Rekonfigurierbare Sequenzerstruktur
DE10241812.8 2002-09-06
EPPCT/EP02/10084 2002-09-09
PCT/EP2002/010084 WO2003025770A2 (de) 2001-09-07 2002-09-09 Rekonfigurierbares system
PCT/EP2002/010479 WO2003025781A2 (de) 2001-09-19 2002-09-18 Verfahren zur konfiguration der verbindung zwischen datenverarbeitungszellen
EP0210464 2002-09-18
DE2002143322 DE10243322B4 (de) 2002-09-18 2002-09-18 Analoge rekonfigurierbare Datenverarbeitungseinrichtung
EPPCT/EP02/10464 2002-09-18
EPPCT/EP02/10479 2002-09-18
DE10243322.4 2002-09-18
EPPCT/EP02/10536 2002-09-19
EPPCT/EP02/10572 2002-09-19
PCT/EP2002/010572 WO2003036507A2 (de) 2001-09-19 2002-09-19 Rekonfigurierbare elemente
EP0210536 2002-09-19
EP02022692.4 2002-10-10
EP02022692 2002-10-10
EP02027277 2002-12-06
EP02027277.9 2002-12-06
DE10300380.0 2003-01-07
DE10300380 2003-01-07
DEPCT/DE03/00152 2003-01-20
PCT/DE2003/000152 WO2003060747A2 (de) 2002-01-19 2003-01-20 Reconfigurierbarer prozessor
PCT/EP2003/000624 WO2003071418A2 (de) 2002-01-18 2003-01-20 Übersetzungsverfahren
EPPCT/EP03/00624 2003-01-20
PCT/DE2003/000489 WO2003071432A2 (de) 2002-02-18 2003-02-18 Bussysteme und rekonfigurationsverfahren
DEPCT/DE03/00489 2003-02-18
DE10310195.0 2003-03-06
DE2003110195 DE10310195A1 (de) 2003-03-06 2003-03-06 Datenverarbeitungsergebniserzielungswegoptimierungsverfahren
DEPCT/DE03/00942 2003-03-21
PCT/DE2003/000942 WO2003081454A2 (de) 2002-03-21 2003-03-21 Verfahren und vorrichtung zur datenverarbeitung
DE10315295.4 2003-04-04
DE10315295 2003-04-04
EP03009906.3 2003-04-30
EP03009906 2003-04-30
DE10321834.3 2003-05-15
DE10321834 2003-05-15
EP03013694 2003-06-17
EP03013694.9 2003-06-17
EP03015015.5 2003-07-02
EP03015015 2003-07-02

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US10523763 A-371-Of-International 2003-07-23
US12/621,860 Division US8281265B2 (en) 2002-08-07 2009-11-19 Method and device for processing data

Publications (2)

Publication Number Publication Date
WO2004021176A2 true WO2004021176A2 (de) 2004-03-11
WO2004021176A3 WO2004021176A3 (de) 2005-02-03

Family

ID=56290461

Family Applications (2)

Application Number Title Priority Date Filing Date
PCT/EP2003/008081 WO2004021176A2 (de) 2002-08-07 2003-07-23 Verfahren und vorrichtung zur datenverarbeitung
PCT/EP2003/008080 WO2004015568A2 (en) 2002-03-21 2003-07-24 Data processing method and device

Family Applications After (1)

Application Number Title Priority Date Filing Date
PCT/EP2003/008080 WO2004015568A2 (en) 2002-03-21 2003-07-24 Data processing method and device

Country Status (5)

Country Link
US (1) US8156284B2 (de)
EP (1) EP1535190B1 (de)
JP (1) JP2005535055A (de)
AU (2) AU2003286131A1 (de)
WO (2) WO2004021176A2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007158722A (ja) * 2005-12-05 2007-06-21 Canon Inc 画像処理装置及びその制御方法、プログラム、記憶媒体

Families Citing this family (182)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US8686549B2 (en) * 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
AU5805300A (en) * 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US9250908B2 (en) 2001-03-05 2016-02-02 Pact Xpp Technologies Ag Multi-processor bus and cache interconnection system
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9141390B2 (en) 2001-03-05 2015-09-22 Pact Xpp Technologies Ag Method of processing data with an array of data processors according to application ID
US9552047B2 (en) 2001-03-05 2017-01-24 Pact Xpp Technologies Ag Multiprocessor having runtime adjustable clock and clock dependent power supply
US9411532B2 (en) * 2001-09-07 2016-08-09 Pact Xpp Technologies Ag Methods and systems for transferring data between a processing device and external devices
US9436631B2 (en) 2001-03-05 2016-09-06 Pact Xpp Technologies Ag Chip including memory element storing higher level memory data on a page by page basis
US10031733B2 (en) 2001-06-20 2018-07-24 Scientia Sol Mentis Ag Method for processing data
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) * 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
EP1483682A2 (de) 2002-01-19 2004-12-08 PACT XPP Technologies AG Reconfigurierbarer prozessor
US20110161977A1 (en) * 2002-03-21 2011-06-30 Martin Vorbach Method and device for data processing
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US9170812B2 (en) 2002-03-21 2015-10-27 Pact Xpp Technologies Ag Data processing system having integrated pipelined array data processor
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
JP4388895B2 (ja) 2002-09-06 2009-12-24 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト リコンフィギュアラブルなシーケンサ構造
DE112004000026D2 (de) * 2003-04-04 2006-06-14 Pact Xpp Technologies Ag Verfahren und Vorrichtung für die Datenverarbeitung
US20130111188A9 (en) * 2003-07-24 2013-05-02 Martin Vorbach Low latency massive parallel data processing device
US7747659B2 (en) * 2004-01-05 2010-06-29 International Business Machines Corporation Garbage collector with eager read barrier
US7669035B2 (en) * 2004-01-21 2010-02-23 The Charles Stark Draper Laboratory, Inc. Systems and methods for reconfigurable computing
US7886136B2 (en) * 2004-05-21 2011-02-08 Samsung Electronics Co., Ltd. Computer system, method, and medium for switching operating system
US7487497B2 (en) * 2004-08-26 2009-02-03 International Business Machines Corporation Method and system for auto parallelization of zero-trip loops through induction variable substitution
US20060156399A1 (en) * 2004-12-30 2006-07-13 Parmar Pankaj N System and method for implementing network security using a sequestered partition
WO2006110069A1 (en) * 2005-04-13 2006-10-19 Telefonaktiebolaget Lm Ericsson (Publ) Data value coherence in computer systems
US8966223B2 (en) * 2005-05-05 2015-02-24 Icera, Inc. Apparatus and method for configurable processing
US7844968B1 (en) * 2005-05-13 2010-11-30 Oracle America, Inc. System for predicting earliest completion time and using static priority having initial priority and static urgency for job scheduling
US7984447B1 (en) 2005-05-13 2011-07-19 Oracle America, Inc. Method and apparatus for balancing project shares within job assignment and scheduling
US8214836B1 (en) 2005-05-13 2012-07-03 Oracle America, Inc. Method and apparatus for job assignment and scheduling using advance reservation, backfilling, and preemption
US7743378B1 (en) 2005-05-13 2010-06-22 Oracle America, Inc. Method and apparatus for multi-dimensional priority determination for job scheduling
US7752622B1 (en) 2005-05-13 2010-07-06 Oracle America, Inc. Method and apparatus for flexible job pre-emption
US7685572B1 (en) * 2005-08-19 2010-03-23 Sun Microsystems, Inc. Method of static analysis for race condition detection
EP1974265A1 (de) * 2006-01-18 2008-10-01 PACT XPP Technologies AG Hardwaredefinitionsverfahren
US20080104601A1 (en) * 2006-10-26 2008-05-01 Nokia Corporation Scheduler for multiple software tasks to share reconfigurable hardware
KR100883655B1 (ko) * 2006-12-04 2009-02-18 삼성전자주식회사 재구성 가능한 프로세서를 갖는 문맥 교환 시스템 및 방법
US7724684B2 (en) * 2007-05-24 2010-05-25 Modelware, Inc. System and method for designing and implementing packet processing products
WO2008143622A1 (en) * 2007-05-24 2008-11-27 Modelware, Inc. System and method for designing and implementing packet processing products
JP4497184B2 (ja) * 2007-09-13 2010-07-07 ソニー株式会社 集積装置およびそのレイアウト方法、並びにプログラム
US8028150B2 (en) * 2007-11-16 2011-09-27 Shlomo Selim Rakib Runtime instruction decoding modification in a multi-processing array
DE112008003643A5 (de) * 2007-11-17 2010-10-28 Krass, Maren Rekonfigurierbare Fliesskomma- und Bit- ebenen Datenverarbeitungseinheit
US20110173596A1 (en) * 2007-11-28 2011-07-14 Martin Vorbach Method for facilitating compilation of high-level code for varying architectures
WO2009071329A1 (en) * 2007-12-07 2009-06-11 Pact Xpp Technologies Ag Using function calls as compiler directives
KR20100101585A (ko) * 2007-12-10 2010-09-17 샌드브리지 테크놀로지스, 인코포레이티드 신호 프로세서에서의 역추적 가속화
JP4474570B2 (ja) * 2008-01-28 2010-06-09 エヌイーシーコンピュータテクノ株式会社 キャッシュコヒーレンシ制御方法
US8145849B2 (en) * 2008-02-01 2012-03-27 International Business Machines Corporation Wake-and-go mechanism with system bus response
US8640141B2 (en) 2008-02-01 2014-01-28 International Business Machines Corporation Wake-and-go mechanism with hardware private array
US8127080B2 (en) 2008-02-01 2012-02-28 International Business Machines Corporation Wake-and-go mechanism with system address bus transaction master
US8225120B2 (en) 2008-02-01 2012-07-17 International Business Machines Corporation Wake-and-go mechanism with data exclusivity
US8250396B2 (en) * 2008-02-01 2012-08-21 International Business Machines Corporation Hardware wake-and-go mechanism for a data processing system
US8516484B2 (en) 2008-02-01 2013-08-20 International Business Machines Corporation Wake-and-go mechanism for a data processing system
US8171476B2 (en) 2008-02-01 2012-05-01 International Business Machines Corporation Wake-and-go mechanism with prioritization of threads
US8880853B2 (en) 2008-02-01 2014-11-04 International Business Machines Corporation CAM-based wake-and-go snooping engine for waking a thread put to sleep for spinning on a target address lock
US8312458B2 (en) 2008-02-01 2012-11-13 International Business Machines Corporation Central repository for wake-and-go mechanism
US8015379B2 (en) * 2008-02-01 2011-09-06 International Business Machines Corporation Wake-and-go mechanism with exclusive system bus response
US8788795B2 (en) * 2008-02-01 2014-07-22 International Business Machines Corporation Programming idiom accelerator to examine pre-fetched instruction streams for multiple processors
US8452947B2 (en) * 2008-02-01 2013-05-28 International Business Machines Corporation Hardware wake-and-go mechanism and content addressable memory with instruction pre-fetch look-ahead to detect programming idioms
US8732683B2 (en) 2008-02-01 2014-05-20 International Business Machines Corporation Compiler providing idiom to idiom accelerator
US8316218B2 (en) * 2008-02-01 2012-11-20 International Business Machines Corporation Look-ahead wake-and-go engine with speculative execution
US8341635B2 (en) 2008-02-01 2012-12-25 International Business Machines Corporation Hardware wake-and-go mechanism with look-ahead polling
US8612977B2 (en) * 2008-02-01 2013-12-17 International Business Machines Corporation Wake-and-go mechanism with software save of thread state
US8386822B2 (en) * 2008-02-01 2013-02-26 International Business Machines Corporation Wake-and-go mechanism with data monitoring
US8725992B2 (en) 2008-02-01 2014-05-13 International Business Machines Corporation Programming language exposing idiom calls to a programming idiom accelerator
US20090213946A1 (en) * 2008-02-25 2009-08-27 Xilinx, Inc. Partial reconfiguration for a mimo-ofdm communication system
US8453134B2 (en) * 2008-06-04 2013-05-28 Intel Corporation Improving data locality and parallelism by code replication
US8677338B2 (en) * 2008-06-04 2014-03-18 Intel Corporation Data dependence testing for loop fusion with code replication, array contraction, and loop interchange
JP5294304B2 (ja) * 2008-06-18 2013-09-18 日本電気株式会社 再構成可能電子回路装置
US20090328016A1 (en) * 2008-06-27 2009-12-31 Microsoft Corporation Generalized expression trees
US8755515B1 (en) 2008-09-29 2014-06-17 Wai Wu Parallel signal processing system and method
FR2937161B1 (fr) * 2008-10-14 2010-12-17 Highdeal Procede de conversion et convertisseur de formule en code executable,programme et support d'enregistrement pour ce procede, procede d'implementation de cette formule.
US8320448B2 (en) * 2008-11-28 2012-11-27 Microsoft Corporation Encoder with multiple re-entry and exit points
US8312442B2 (en) * 2008-12-10 2012-11-13 Oracle America, Inc. Method and system for interprocedural prefetching
ES2334196B2 (es) * 2009-02-17 2011-02-09 Univ Madrid Politecnica Dispositivo para la mejora de la seguridad de microprocesadores en sistemas empotrados
US8230201B2 (en) * 2009-04-16 2012-07-24 International Business Machines Corporation Migrating sleeping and waking threads between wake-and-go mechanisms in a multiple processor data processing system
US8145723B2 (en) * 2009-04-16 2012-03-27 International Business Machines Corporation Complex remote update programming idiom accelerator
US8082315B2 (en) * 2009-04-16 2011-12-20 International Business Machines Corporation Programming idiom accelerator for remote update
US8886919B2 (en) 2009-04-16 2014-11-11 International Business Machines Corporation Remote update programming idiom accelerator with allocated processor resources
US8645935B2 (en) * 2009-05-01 2014-02-04 University Of Maryland Automatic parallelization using binary rewriting
US20110047358A1 (en) * 2009-08-19 2011-02-24 International Business Machines Corporation In-Data Path Tracking of Floating Point Exceptions and Store-Based Exception Indication
US8458684B2 (en) * 2009-08-19 2013-06-04 International Business Machines Corporation Insertion of operation-and-indicate instructions for optimized SIMD code
US8290922B2 (en) * 2009-10-23 2012-10-16 Microsoft Corporation Data framework to enable rich processing of data from any arbitrary data source
US8578343B2 (en) * 2010-01-15 2013-11-05 Oracle America, Inc. System and method for overflow detection using partial evaluations
US20110208552A1 (en) * 2010-02-25 2011-08-25 International Business Machines Corporation Leveraging business services for soa solution development
US8667236B2 (en) 2010-09-29 2014-03-04 Hewlett-Packard Development Company, L.P. Host based write ordering for asynchronous replication
CN102609240B (zh) * 2011-01-20 2016-04-06 瑞昱半导体股份有限公司 处理器电路及读取数据的方法
US8566030B1 (en) 2011-05-03 2013-10-22 University Of Southern California Efficient K-nearest neighbor search in time-dependent spatial networks
US9595074B2 (en) * 2011-09-16 2017-03-14 Imagination Technologies Limited Multistage collector for outputs in multiprocessor systems
US8745607B2 (en) * 2011-11-11 2014-06-03 International Business Machines Corporation Reducing branch misprediction impact in nested loop code
US10157060B2 (en) 2011-12-29 2018-12-18 Intel Corporation Method, device and system for control signaling in a data path module of a data stream processing engine
JP5865091B2 (ja) * 2012-01-20 2016-02-17 日立オートモティブシステムズ株式会社 ソフトウェア検証支援装置、ソフトウェア検証支援方法、ソフトウェア検証支援プログラム
US9424038B2 (en) * 2012-12-10 2016-08-23 Nvidia Corporation Compiler-controlled region scheduling for SIMD execution of threads
US9619229B2 (en) 2012-12-27 2017-04-11 Intel Corporation Collapsing of multiple nested loops, methods and instructions
US10133557B1 (en) * 2013-01-11 2018-11-20 Mentor Graphics Corporation Modifying code to reduce redundant or unnecessary power usage
US9495154B2 (en) 2013-03-13 2016-11-15 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode vector processing, and related vector processors, systems, and methods
US9275014B2 (en) 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
US10062135B2 (en) * 2013-07-31 2018-08-28 National Technology & Engineering Solutions Of Sandia, Llc Graphics processing unit management system for computed tomography
CN103440130A (zh) * 2013-08-26 2013-12-11 成都金山数字娱乐科技有限公司 一种数据处理方法以及装置
US10331583B2 (en) 2013-09-26 2019-06-25 Intel Corporation Executing distributed memory operations using processing elements connected by distributed channels
US9195436B2 (en) * 2013-10-14 2015-11-24 Microsoft Technology Licensing, Llc Parallel dynamic programming through rank convergence
EP3058456A4 (de) * 2013-10-18 2018-01-24 Marvell World Trade Ltd. Systeme und verfahren zur registerzuweisung
US9798827B2 (en) * 2013-10-25 2017-10-24 Uc Mobile Co., Ltd. Methods and devices for preloading webpages
US9520180B1 (en) 2014-03-11 2016-12-13 Hypres, Inc. System and method for cryogenic hybrid technology computing and memory
US9710245B2 (en) 2014-04-04 2017-07-18 Qualcomm Incorporated Memory reference metadata for compiler optimization
US20160139901A1 (en) * 2014-11-18 2016-05-19 Qualcomm Incorporated Systems, methods, and computer programs for performing runtime auto parallelization of application code
US9749548B2 (en) 2015-01-22 2017-08-29 Google Inc. Virtual linebuffers for image signal processors
JP2016178229A (ja) 2015-03-20 2016-10-06 株式会社東芝 再構成可能な回路
US9769356B2 (en) 2015-04-23 2017-09-19 Google Inc. Two dimensional shift array for image processor
US9772852B2 (en) 2015-04-23 2017-09-26 Google Inc. Energy efficient processor core architecture for image processor
US10291813B2 (en) 2015-04-23 2019-05-14 Google Llc Sheet generator for image processor
US9785423B2 (en) 2015-04-23 2017-10-10 Google Inc. Compiler for translating between a virtual image processor instruction set architecture (ISA) and target hardware having a two-dimensional shift array structure
US10095479B2 (en) 2015-04-23 2018-10-09 Google Llc Virtual image processor instruction set architecture (ISA) and memory model and exemplary target hardware having a two-dimensional shift array structure
US9965824B2 (en) 2015-04-23 2018-05-08 Google Llc Architecture for high performance, power efficient, programmable image processing
US9756268B2 (en) 2015-04-23 2017-09-05 Google Inc. Line buffer unit for image processor
CN106708499B (zh) 2015-11-13 2020-10-27 财团法人工业技术研究院 绘图处理程序的分析方法与分析系统
US9830150B2 (en) 2015-12-04 2017-11-28 Google Llc Multi-functional execution lane for image processor
US10313641B2 (en) 2015-12-04 2019-06-04 Google Llc Shift register with reduced wiring complexity
US10642617B2 (en) * 2015-12-08 2020-05-05 Via Alliance Semiconductor Co., Ltd. Processor with an expandable instruction set architecture for dynamically configuring execution resources
US10204396B2 (en) 2016-02-26 2019-02-12 Google Llc Compiler managed memory for image processor
US10387988B2 (en) 2016-02-26 2019-08-20 Google Llc Compiler techniques for mapping program code to a high performance, power efficient, programmable image processing hardware platform
US10380969B2 (en) 2016-02-28 2019-08-13 Google Llc Macro I/O unit for image processor
US20180007302A1 (en) 2016-07-01 2018-01-04 Google Inc. Block Operations For An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005346A1 (en) 2016-07-01 2018-01-04 Google Inc. Core Processes For Block Operations On An Image Processor Having A Two-Dimensional Execution Lane Array and A Two-Dimensional Shift Register
US20180005059A1 (en) 2016-07-01 2018-01-04 Google Inc. Statistics Operations On Two Dimensional Image Processor
US10546211B2 (en) 2016-07-01 2020-01-28 Google Llc Convolutional neural network on programmable two dimensional image processor
US9984004B1 (en) * 2016-07-19 2018-05-29 Nutanix, Inc. Dynamic cache balancing
US10372413B2 (en) 2016-09-18 2019-08-06 International Business Machines Corporation First-in-first-out buffer
US10157164B2 (en) * 2016-09-20 2018-12-18 Qualcomm Incorporated Hierarchical synthesis of computer machine instructions
US10402168B2 (en) 2016-10-01 2019-09-03 Intel Corporation Low energy consumption mantissa multiplication for floating point multiply-add operations
US10416999B2 (en) 2016-12-30 2019-09-17 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10474375B2 (en) 2016-12-30 2019-11-12 Intel Corporation Runtime address disambiguation in acceleration hardware
US10558575B2 (en) 2016-12-30 2020-02-11 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10572376B2 (en) 2016-12-30 2020-02-25 Intel Corporation Memory ordering in acceleration hardware
US10394536B2 (en) * 2017-03-02 2019-08-27 International Business Machines Corporation Compiling a parallel loop with a complex access pattern for writing an array for GPU and CPU
US10838910B2 (en) * 2017-04-27 2020-11-17 Falcon Computing Systems and methods for systolic array design from a high-level program
US10552206B2 (en) * 2017-05-23 2020-02-04 Ge Aviation Systems Llc Contextual awareness associated with resources
JP2018206175A (ja) 2017-06-07 2018-12-27 富士通株式会社 コンパイラ、情報処理装置及びコンパイル方法
US10387319B2 (en) 2017-07-01 2019-08-20 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with memory system performance, power reduction, and atomics support features
US10467183B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods for pipelined runtime services in a spatial array
US10445234B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with transactional and replay features
US10515046B2 (en) 2017-07-01 2019-12-24 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator
US10469397B2 (en) 2017-07-01 2019-11-05 Intel Corporation Processors and methods with configurable network-based dataflow operator circuits
US10445451B2 (en) 2017-07-01 2019-10-15 Intel Corporation Processors, methods, and systems for a configurable spatial accelerator with performance, correctness, and power reduction features
US10515049B1 (en) 2017-07-01 2019-12-24 Intel Corporation Memory circuits and methods for distributed memory hazard detection and error recovery
US11086816B2 (en) 2017-09-28 2021-08-10 Intel Corporation Processors, methods, and systems for debugging a configurable spatial accelerator
US10496574B2 (en) * 2017-09-28 2019-12-03 Intel Corporation Processors, methods, and systems for a memory fence in a configurable spatial accelerator
US10445098B2 (en) 2017-09-30 2019-10-15 Intel Corporation Processors and methods for privileged configuration in a spatial array
US10380063B2 (en) 2017-09-30 2019-08-13 Intel Corporation Processors, methods, and systems with a configurable spatial accelerator having a sequencer dataflow operator
FR3075431B1 (fr) * 2017-12-14 2020-01-10 Bull Sas Dispositif, chaine de traitement de donnees et procede de commutation de contexte
US10445250B2 (en) 2017-12-30 2019-10-15 Intel Corporation Apparatus, methods, and systems with a configurable spatial accelerator
US10417175B2 (en) 2017-12-30 2019-09-17 Intel Corporation Apparatus, methods, and systems for memory consistency in a configurable spatial accelerator
US10565134B2 (en) 2017-12-30 2020-02-18 Intel Corporation Apparatus, methods, and systems for multicast in a configurable spatial accelerator
US10365860B1 (en) 2018-03-08 2019-07-30 quadric.io, Inc. Machine perception and dense algorithm integrated circuit
JP7386543B2 (ja) * 2018-03-28 2023-11-27 クアドリック.アイオー,インコーポレイテッド 機械知覚および高密度アルゴリズム集積回路を実装するためのシステムおよび方法
US11307873B2 (en) 2018-04-03 2022-04-19 Intel Corporation Apparatus, methods, and systems for unstructured data flow in a configurable spatial accelerator with predicate propagation and merging
US10564980B2 (en) 2018-04-03 2020-02-18 Intel Corporation Apparatus, methods, and systems for conditional queues in a configurable spatial accelerator
US11847553B2 (en) 2018-06-14 2023-12-19 International Business Machines Corporation Parallel computational architecture with reconfigurable core-level and vector-level parallelism
US10459866B1 (en) 2018-06-30 2019-10-29 Intel Corporation Apparatuses, methods, and systems for integrated control and data processing in a configurable spatial accelerator
US11200186B2 (en) 2018-06-30 2021-12-14 Intel Corporation Apparatuses, methods, and systems for operations in a configurable spatial accelerator
US10891240B2 (en) 2018-06-30 2021-01-12 Intel Corporation Apparatus, methods, and systems for low latency communication in a configurable spatial accelerator
US10853073B2 (en) 2018-06-30 2020-12-01 Intel Corporation Apparatuses, methods, and systems for conditional operations in a configurable spatial accelerator
US10691430B2 (en) * 2018-08-27 2020-06-23 Intel Corporation Latency scheduling mehanism
US11803507B2 (en) 2018-10-29 2023-10-31 Secturion Systems, Inc. Data stream protocol field decoding by a systolic array
US10678724B1 (en) 2018-12-29 2020-06-09 Intel Corporation Apparatuses, methods, and systems for in-network storage in a configurable spatial accelerator
GB2580664B (en) 2019-01-22 2021-01-13 Graphcore Ltd Double load instruction
US10824370B2 (en) * 2019-02-07 2020-11-03 quadric.io, Inc. Systems and methods for implementing random access memory in a flow-based machine perception and dense algorithm integrated circuit based on computing and coalescing of indices
US10915471B2 (en) 2019-03-30 2021-02-09 Intel Corporation Apparatuses, methods, and systems for memory interface circuit allocation in a configurable spatial accelerator
US10817291B2 (en) 2019-03-30 2020-10-27 Intel Corporation Apparatuses, methods, and systems for swizzle operations in a configurable spatial accelerator
US11029927B2 (en) 2019-03-30 2021-06-08 Intel Corporation Methods and apparatus to detect and annotate backedges in a dataflow graph
US10965536B2 (en) 2019-03-30 2021-03-30 Intel Corporation Methods and apparatus to insert buffers in a dataflow graph
US11422812B2 (en) * 2019-06-25 2022-08-23 Advanced Micro Devices, Inc. Method and apparatus for efficient programmable instructions in computer systems
US11037050B2 (en) 2019-06-29 2021-06-15 Intel Corporation Apparatuses, methods, and systems for memory interface circuit arbitration in a configurable spatial accelerator
CN110704360B (zh) * 2019-09-29 2022-03-18 华中科技大学 一种基于异构fpga数据流的图计算优化方法
US11907713B2 (en) 2019-12-28 2024-02-20 Intel Corporation Apparatuses, methods, and systems for fused operations using sign modification in a processing element of a configurable spatial accelerator
CN114722384B (zh) * 2022-06-02 2022-08-19 南京中成越科技有限公司 端对端远程通讯的风险数据传输处理方法、系统
US20240094944A1 (en) * 2022-09-21 2024-03-21 Xilinx, Inc. Implementing data flows of an application across a memory hierarchy of a data processing array

Family Cites Families (590)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US2067477A (en) * 1931-03-20 1937-01-12 Allis Chalmers Mfg Co Gearing
GB971191A (en) 1962-05-28 1964-09-30 Wolf Electric Tools Ltd Improvements relating to electrically driven equipment
US3564506A (en) * 1968-01-17 1971-02-16 Ibm Instruction retry byte counter
GB1253309A (en) 1969-11-21 1971-11-10 Marconi Co Ltd Improvements in or relating to data processing arrangements
US3753008A (en) 1970-06-20 1973-08-14 Honeywell Inf Systems Memory pre-driver circuit
DE2057312A1 (de) 1970-11-21 1972-05-25 Bhs Bayerische Berg Planetenradgetriebe mit Lastdruckausgleich
US5459846A (en) * 1988-12-02 1995-10-17 Hyatt; Gilbert P. Computer architecture system having an imporved memory
US3855577A (en) 1973-06-11 1974-12-17 Texas Instruments Inc Power saving circuit for calculator system
DE2713648A1 (de) 1976-03-26 1977-10-06 Tokyo Shibaura Electric Co Stromzufuhr-steuervorrichtung fuer speichervorrichtungen
US4233667A (en) 1978-10-23 1980-11-11 International Business Machines Corporation Demand powered programmable logic array
US4442508A (en) 1981-08-05 1984-04-10 General Instrument Corporation Storage cells for use in two conductor data column storage logic arrays
US4498134A (en) * 1982-01-26 1985-02-05 Hughes Aircraft Company Segregator functional plane for use in a modular array processor
US4590583A (en) 1982-07-16 1986-05-20 At&T Bell Laboratories Coin telephone measurement circuitry
US4498172A (en) * 1982-07-26 1985-02-05 General Electric Company System for polynomial division self-testing of digital networks
US4667190A (en) 1982-07-30 1987-05-19 Honeywell Inc. Two axis fast access memory
JPS5936857A (ja) 1982-08-25 1984-02-29 Nec Corp プロセツサユニツト
US4663706A (en) 1982-10-28 1987-05-05 Tandem Computers Incorporated Multiprocessor multisystem communications network
US4594682A (en) 1982-12-22 1986-06-10 Ibm Corporation Vector processing
US4739474A (en) 1983-03-10 1988-04-19 Martin Marietta Corporation Geometric-arithmetic parallel processor
US4566102A (en) * 1983-04-18 1986-01-21 International Business Machines Corporation Parallel-shift error reconfiguration
US5123109A (en) 1983-05-31 1992-06-16 Thinking Machines Corporation Parallel processor including a processor array with plural data transfer arrangements including (1) a global router and (2) a proximate-neighbor transfer system
US4571736A (en) * 1983-10-31 1986-02-18 University Of Southwestern Louisiana Digital communication system employing differential coding and sample robbing
USRE34363E (en) 1984-03-12 1993-08-31 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
US4870302A (en) 1984-03-12 1989-09-26 Xilinx, Inc. Configurable electrical circuit having configurable logic elements and configurable interconnects
JPS60198618A (ja) 1984-03-21 1985-10-08 Oki Electric Ind Co Ltd ダイナミツク論理回路
US4761755A (en) 1984-07-11 1988-08-02 Prime Computer, Inc. Data processing system and method having an improved arithmetic unit
US4682284A (en) 1984-12-06 1987-07-21 American Telephone & Telegraph Co., At&T Bell Lab. Queue administration method and apparatus
US4623997A (en) 1984-12-13 1986-11-18 United Technologies Corporation Coherent interface with wraparound receive and transmit memories
DE3681463D1 (de) 1985-01-29 1991-10-24 Secr Defence Brit Verarbeitungszelle fuer fehlertolerante matrixanordnungen.
US4720778A (en) * 1985-01-31 1988-01-19 Hewlett Packard Company Software debugging analyzer
US5023775A (en) 1985-02-14 1991-06-11 Intel Corporation Software programmable logic array utilizing "and" and "or" gates
US5247689A (en) 1985-02-25 1993-09-21 Ewert Alfred P Parallel digital processor including lateral transfer buses with interrupt switches to form bus interconnection segments
US4706216A (en) 1985-02-27 1987-11-10 Xilinx, Inc. Configurable logic element
US5015884A (en) 1985-03-29 1991-05-14 Advanced Micro Devices, Inc. Multiple array high performance programmable logic device family
US5225719A (en) * 1985-03-29 1993-07-06 Advanced Micro Devices, Inc. Family of multiple segmented programmable logic blocks interconnected by a high speed centralized switch matrix
US4972314A (en) 1985-05-20 1990-11-20 Hughes Aircraft Company Data flow signal processor method and apparatus
US4967340A (en) 1985-06-12 1990-10-30 E-Systems, Inc. Adaptive processing system having an array of individually configurable processing components
GB8517376D0 (en) 1985-07-09 1985-08-14 Jesshope C R Processor array
US4720780A (en) * 1985-09-17 1988-01-19 The Johns Hopkins University Memory-linked wavefront array processor
JPS62109451A (ja) 1985-11-04 1987-05-20 インタ−ナショナル ビジネス マシ−ンズ コ−ポレ−ション データ伝送ネットワークの通信パス確立・不可用性データ収集方法
US4852048A (en) 1985-12-12 1989-07-25 Itt Corporation Single instruction multiple data (SIMD) cellular array processing apparatus employing a common bus where a first number of bits manifest a first bus portion and a second number of bits manifest a second bus portion
US4720822A (en) 1986-03-07 1988-01-19 International Business Machines Corporation High frequency signal measurement method and apparatus
US5021947A (en) 1986-03-31 1991-06-04 Hughes Aircraft Company Data-flow multiprocessor architecture with three dimensional multistage interconnection network for efficient signal and data processing
US4882687A (en) 1986-03-31 1989-11-21 Schlumberger Technology Corporation Pixel processor
US5034914A (en) 1986-05-15 1991-07-23 Aquidneck Systems International, Inc. Optical disk data storage method and apparatus with buffered interface
GB8612396D0 (en) 1986-05-21 1986-06-25 Hewlett Packard Ltd Chain-configured interface bus system
US4791603A (en) 1986-07-18 1988-12-13 Honeywell Inc. Dynamically reconfigurable array logic
US4910665A (en) 1986-09-02 1990-03-20 General Electric Company Distributed processing system including reconfigurable elements
US4860201A (en) 1986-09-02 1989-08-22 The Trustees Of Columbia University In The City Of New York Binary tree parallel processor
US5367208A (en) 1986-09-19 1994-11-22 Actel Corporation Reconfigurable programmable interconnect architecture
US4884231A (en) 1986-09-26 1989-11-28 Performance Semiconductor Corporation Microprocessor system with extended arithmetic logic unit
GB2211638A (en) * 1987-10-27 1989-07-05 Ibm Simd array processor
FR2606184B1 (fr) * 1986-10-31 1991-11-29 Thomson Csf Dispositif de calcul reconfigurable
US4918440A (en) 1986-11-07 1990-04-17 Furtek Frederick C Programmable logic cell and array
US4811214A (en) * 1986-11-14 1989-03-07 Princeton University Multinode reconfigurable pipeline computer
US5226122A (en) 1987-08-21 1993-07-06 Compaq Computer Corp. Programmable logic system for filtering commands to a microprocessor
CA1299757C (en) 1987-08-28 1992-04-28 Brent Cameron Beardsley Device initiated partial system quiescing
US5119290A (en) 1987-10-02 1992-06-02 Sun Microsystems, Inc. Alias address support
CA1286421C (en) 1987-10-14 1991-07-16 Martin Claude Lefebvre Message fifo buffer controller
US5115510A (en) 1987-10-20 1992-05-19 Sharp Kabushiki Kaisha Multistage data flow processor with instruction packet, fetch, storage transmission and address generation controlled by destination information
US4918690A (en) 1987-11-10 1990-04-17 Echelon Systems Corp. Network and intelligent cell for providing sensing, bidirectional communications and control
US5113498A (en) 1987-11-10 1992-05-12 Echelon Corporation Input/output section for an intelligent cell which provides sensing, bidirectional communications and control
NL8800053A (nl) 1988-01-11 1989-08-01 Philips Nv Videoprocessorsysteem, alsmede afbeeldingssysteem en beeldopslagsysteem, voorzien van een dergelijk videoprocessorsysteem.
USRE34444E (en) 1988-01-13 1993-11-16 Xilinx, Inc. Programmable logic device
NL8800071A (nl) 1988-01-13 1989-08-01 Philips Nv Dataprocessorsysteem en videoprocessorsysteem, voorzien van een dergelijk dataprocessorsysteem.
DE68917326T2 (de) * 1988-01-20 1995-03-02 Advanced Micro Devices Inc Organisation eines integrierten Cachespeichers zur flexiblen Anwendung zur Unterstützung von Multiprozessor-Operationen.
US5303172A (en) 1988-02-16 1994-04-12 Array Microsystems Pipelined combination and vector signal processor
US4959781A (en) 1988-05-16 1990-09-25 Stardent Computer, Inc. System for assigning interrupts to least busy processor that already loaded same class of interrupt routines
US4939641A (en) 1988-06-30 1990-07-03 Wang Laboratories, Inc. Multi-processor system with cache memories
JPH06101043B2 (ja) 1988-06-30 1994-12-12 三菱電機株式会社 マイクロコンピュータ
US5287511A (en) * 1988-07-11 1994-02-15 Star Semiconductor Corporation Architectures and methods for dividing processing tasks into tasks for a programmable real time signal processor and tasks for a decision making microprocessor interfacing therewith
US5010401A (en) 1988-08-11 1991-04-23 Mitsubishi Denki Kabushiki Kaisha Picture coding and decoding apparatus using vector quantization
US4901268A (en) 1988-08-19 1990-02-13 General Electric Company Multiple function data processor
US5204935A (en) 1988-08-19 1993-04-20 Fuji Xerox Co., Ltd. Programmable fuzzy logic circuits
US5353432A (en) 1988-09-09 1994-10-04 Compaq Computer Corporation Interactive method for configuration of computer system and circuit boards with user specification of system resources and computer resolution of resource conflicts
ATE98833T1 (de) 1988-09-22 1994-01-15 Siemens Ag Schaltungsanordnung fuer fernmeldevermittlungsanlagen, insbesondere pcmzeitmultiplex-fernsprechvermittlungsanlagen mit zentralkoppelfeld und angeschlossenen teilkoppelfeldern.
EP1462964A3 (de) 1988-10-05 2006-06-07 Quickturn Design Systems, Inc. Verfahren zur Stimulierung einer funktionellen logischen Schaltung mit einem logischen Stimulus
JP2930341B2 (ja) 1988-10-07 1999-08-03 マーチン・マリエッタ・コーポレーション データ並列処理装置
US5014193A (en) 1988-10-14 1991-05-07 Compaq Computer Corporation Dynamically configurable portable computer system
US5136717A (en) 1988-11-23 1992-08-04 Flavors Technology Inc. Realtime systolic, multiple-instruction, single-data parallel computer system
US4901665A (en) * 1988-11-30 1990-02-20 Carlin Paul J Line mark book mark
US5041924A (en) 1988-11-30 1991-08-20 Quantum Corporation Removable and transportable hard disk subsystem
US5081375A (en) * 1989-01-19 1992-01-14 National Semiconductor Corp. Method for operating a multiple page programmable logic device
GB8906145D0 (en) * 1989-03-17 1989-05-04 Algotronix Ltd Configurable cellular array
US5203005A (en) 1989-05-02 1993-04-13 Horst Robert W Cell structure for linear array wafer scale integration architecture with capability to open boundary i/o bus without neighbor acknowledgement
US5237686A (en) 1989-05-10 1993-08-17 Mitsubishi Denki Kabushiki Kaisha Multiprocessor type time varying image encoding system and image processor with memory bus control table for arbitration priority
US5109503A (en) 1989-05-22 1992-04-28 Ge Fanuc Automation North America, Inc. Apparatus with reconfigurable counter includes memory for storing plurality of counter configuration files which respectively define plurality of predetermined counters
JP2584673B2 (ja) 1989-06-09 1997-02-26 株式会社日立製作所 テストデータ変更回路を有する論理回路テスト装置
US5343406A (en) 1989-07-28 1994-08-30 Xilinx, Inc. Distributed memory architecture for a configurable logic array and method for using distributed memory
CA2021192A1 (en) * 1989-07-28 1991-01-29 Malcolm A. Mumme Simplified synchronous mesh processor
US5212652A (en) 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US5233539A (en) 1989-08-15 1993-08-03 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure, input/output structure and configurable logic block
US5489857A (en) * 1992-08-03 1996-02-06 Advanced Micro Devices, Inc. Flexible synchronous/asynchronous cell structure for a high density programmable logic device
US5128559A (en) 1989-09-29 1992-07-07 Sgs-Thomson Microelectronics, Inc. Logic block for programmable logic devices
JP2968289B2 (ja) 1989-11-08 1999-10-25 株式会社リコー 中央演算処理装置
GB8925723D0 (en) * 1989-11-14 1990-01-04 Amt Holdings Processor array system
GB8925721D0 (en) 1989-11-14 1990-01-04 Amt Holdings Processor array system
US5522083A (en) 1989-11-17 1996-05-28 Texas Instruments Incorporated Reconfigurable multi-processor operating in SIMD mode with one processor fetching instructions for use by remaining processors
US5212777A (en) 1989-11-17 1993-05-18 Texas Instruments Incorporated Multi-processor reconfigurable in single instruction multiple data (SIMD) and multiple instruction multiple data (MIMD) modes and method of operation
EP0428770B1 (de) 1989-11-21 1995-02-01 Deutsche ITT Industries GmbH Datengesteuerter Arrayprozessor
US5099447A (en) * 1990-01-22 1992-03-24 Alliant Computer Systems Corporation Blocked matrix multiplication for computers with hierarchical memory
AU7305491A (en) 1990-01-29 1991-08-21 Teraplex, Inc. Architecture for minimal instruction set computing system
US5125801A (en) 1990-02-02 1992-06-30 Isco, Inc. Pumping system
US5036493A (en) 1990-03-15 1991-07-30 Digital Equipment Corporation System and method for reducing power usage by multiple memory modules
US5142469A (en) 1990-03-29 1992-08-25 Ge Fanuc Automation North America, Inc. Method for converting a programmable logic controller hardware configuration and corresponding control program for use on a first programmable logic controller to use on a second programmable logic controller
US5555201A (en) 1990-04-06 1996-09-10 Lsi Logic Corporation Method and system for creating and validating low level description of electronic design from higher level, behavior-oriented description, including interactive system for hierarchical display of control and dataflow information
EP0463721A3 (en) 1990-04-30 1993-06-16 Gennum Corporation Digital signal processing device
US5355508A (en) 1990-05-07 1994-10-11 Mitsubishi Denki Kabushiki Kaisha Parallel data processing system combining a SIMD unit with a MIMD unit and sharing a common bus, memory, and system controller
US5198705A (en) 1990-05-11 1993-03-30 Actel Corporation Logic module with configurable combinational and sequential blocks
US5483620A (en) * 1990-05-22 1996-01-09 International Business Machines Corp. Learning machine synapse processor system apparatus
US5193202A (en) * 1990-05-29 1993-03-09 Wavetracer, Inc. Processor array with relocated operand physical address generator capable of data transfer to distant physical processor for each virtual processor while simulating dimensionally larger array processor
US5111079A (en) 1990-06-29 1992-05-05 Sgs-Thomson Microelectronics, Inc. Power reduction circuit for programmable logic device
CA2045773A1 (en) 1990-06-29 1991-12-30 Compaq Computer Corporation Byte-compare operation for high-performance processor
SE9002558D0 (sv) 1990-08-02 1990-08-02 Carlstedt Elektronik Ab Processor
DE4129614C2 (de) 1990-09-07 2002-03-21 Hitachi Ltd System und Verfahren zur Datenverarbeitung
US5274593A (en) 1990-09-28 1993-12-28 Intergraph Corporation High speed redundant rows and columns for semiconductor memories
US5144166A (en) 1990-11-02 1992-09-01 Concurrent Logic, Inc. Programmable logic cell and array
US5765011A (en) 1990-11-13 1998-06-09 International Business Machines Corporation Parallel processing system having a synchronous SIMD processing with processing elements emulating SIMD operation using individual instruction streams
US5794059A (en) 1990-11-13 1998-08-11 International Business Machines Corporation N-dimensional modified hypercube
US5708836A (en) * 1990-11-13 1998-01-13 International Business Machines Corporation SIMD/MIMD inter-processor communication
US5617577A (en) 1990-11-13 1997-04-01 International Business Machines Corporation Advanced parallel array processor I/O connection
US5734921A (en) 1990-11-13 1998-03-31 International Business Machines Corporation Advanced parallel array processor computer package
US5588152A (en) 1990-11-13 1996-12-24 International Business Machines Corporation Advanced parallel processor including advanced support hardware
US5590345A (en) 1990-11-13 1996-12-31 International Business Machines Corporation Advanced parallel array processor(APAP)
ATE180586T1 (de) 1990-11-13 1999-06-15 Ibm Paralleles assoziativprozessor-system
US5625836A (en) 1990-11-13 1997-04-29 International Business Machines Corporation SIMD/MIMD processing memory element (PME)
CA2051222C (en) 1990-11-30 1998-05-05 Pradeep S. Sindhu Consistent packet switched memory bus for shared memory multiprocessors
US5613128A (en) 1990-12-21 1997-03-18 Intel Corporation Programmable multi-processor interrupt controller system with a processor integrated local interrupt controller
US5276836A (en) * 1991-01-10 1994-01-04 Hitachi, Ltd. Data processing device with common memory connecting mechanism
US5301284A (en) 1991-01-16 1994-04-05 Walker-Estes Corporation Mixed-resolution, N-dimensional object space method and apparatus
US5301344A (en) 1991-01-29 1994-04-05 Analogic Corporation Multibus sequential processor to perform in parallel a plurality of reconfigurable logic operations on a plurality of data sets
JP2867717B2 (ja) 1991-02-01 1999-03-10 日本電気株式会社 マイクロコンピュータ
US5212716A (en) 1991-02-05 1993-05-18 International Business Machines Corporation Data edge phase sorting circuits
US5218302A (en) 1991-02-06 1993-06-08 Sun Electric Corporation Interface for coupling an analyzer to a distributorless ignition system
DE59109046D1 (de) 1991-02-22 1998-10-08 Siemens Ag Programmierverfahren für einen Logikbaustein
JPH04290155A (ja) 1991-03-19 1992-10-14 Fujitsu Ltd 並列データ処理方式
JPH04293151A (ja) 1991-03-20 1992-10-16 Fujitsu Ltd 並列データ処理方式
US5617547A (en) 1991-03-29 1997-04-01 International Business Machines Corporation Switch network extension of bus architecture
WO1992018935A1 (en) 1991-04-09 1992-10-29 Fujitsu Limited Data processor and data processing method
JPH04328657A (ja) * 1991-04-30 1992-11-17 Toshiba Corp キャッシュメモリ
US5446904A (en) 1991-05-17 1995-08-29 Zenith Data Systems Corporation Suspend/resume capability for a protected mode microprocessor
JPH06507990A (ja) 1991-05-24 1994-09-08 ブリティッシュ・テクノロジー・グループ・ユーエスエイ・インコーポレーテッド コンピュータのための最適化コンパイラ
US5659797A (en) 1991-06-24 1997-08-19 U.S. Philips Corporation Sparc RISC based computer system including a single chip processor with memory management and DMA units coupled to a DRAM interface
JP3259969B2 (ja) 1991-07-09 2002-02-25 株式会社東芝 キャッシュメモリ制御装置
US5347639A (en) 1991-07-15 1994-09-13 International Business Machines Corporation Self-parallelizing computer system and method
US5338984A (en) 1991-08-29 1994-08-16 National Semiconductor Corp. Local and express diagonal busses in a configurable logic array
US5581731A (en) 1991-08-30 1996-12-03 King; Edward C. Method and apparatus for managing video data for faster access by selectively caching video data
US5550782A (en) 1991-09-03 1996-08-27 Altera Corporation Programmable logic array integrated circuits
US5260610A (en) * 1991-09-03 1993-11-09 Altera Corporation Programmable logic element interconnections for programmable logic array integrated circuits
US5633830A (en) 1995-11-08 1997-05-27 Altera Corporation Random access memory block circuitry for programmable logic array integrated circuit devices
FR2681791B1 (fr) * 1991-09-27 1994-05-06 Salomon Sa Dispositif d'amortissement des vibrations pour club de golf.
CA2073516A1 (en) 1991-11-27 1993-05-28 Peter Michael Kogge Dynamic multi-mode parallel processor array architecture computer system
AU2939892A (en) 1991-12-06 1993-06-28 Richard S. Norman Massively-parallel direct output processor array
US5208491A (en) 1992-01-07 1993-05-04 Washington Research Foundation Field programmable gate array
FR2686175B1 (fr) 1992-01-14 1996-12-20 Andre Thepaut Systeme de traitement de donnees multiprocesseur.
US5412795A (en) 1992-02-25 1995-05-02 Micral, Inc. State machine having a variable timing mechanism for varying the duration of logical output states of the state machine based on variation in the clock frequency
JP2791243B2 (ja) * 1992-03-13 1998-08-27 株式会社東芝 階層間同期化システムおよびこれを用いた大規模集積回路
US5452401A (en) 1992-03-31 1995-09-19 Seiko Epson Corporation Selective power-down for high performance CPU/system
JP2647327B2 (ja) 1992-04-06 1997-08-27 インターナショナル・ビジネス・マシーンズ・コーポレイション 大規模並列コンピューティング・システム装置
US5493663A (en) * 1992-04-22 1996-02-20 International Business Machines Corporation Method and apparatus for predetermining pages for swapping from physical memory in accordance with the number of accesses
JP2572522B2 (ja) 1992-05-12 1997-01-16 インターナショナル・ビジネス・マシーンズ・コーポレイション コンピューティング装置
US5611049A (en) * 1992-06-03 1997-03-11 Pitts; William M. System for accessing distributed data cache channel at each network node to pass requests and data
JP3737104B2 (ja) 1992-06-04 2006-01-18 ジリンクス,インコーポレーテッド プログラム可能な集積回路デバイスにユーザ回路を配置するタイミング駆動式の方法
DE4221278C2 (de) 1992-06-29 1996-02-29 Martin Vorbach Busgekoppeltes Mehrrechnersystem
US5475803A (en) 1992-07-10 1995-12-12 Lsi Logic Corporation Method for 2-D affine transformation of images
JP3032382B2 (ja) 1992-07-13 2000-04-17 シャープ株式会社 デジタル信号のサンプリング周波数変換装置
US5365125A (en) 1992-07-23 1994-11-15 Xilinx, Inc. Logic cell for field programmable gate array having optional internal feedback and optional cascade
US5386154A (en) * 1992-07-23 1995-01-31 Xilinx, Inc. Compact logic cell for field programmable gate array chip
US5590348A (en) 1992-07-28 1996-12-31 International Business Machines Corporation Status predictor for combined shifter-rotate/merge unit
US5802290A (en) 1992-07-29 1998-09-01 Virtual Computer Corporation Computer network of distributed virtual computers which are EAC reconfigurable in response to instruction to be executed
US5581778A (en) * 1992-08-05 1996-12-03 David Sarnoff Researach Center Advanced massively parallel computer using a field of the instruction to selectively enable the profiling counter to increase its value in response to the system clock
DE59301609D1 (de) * 1992-08-28 1996-03-21 Siemens Ag Verfahren zum betrieb eines rechnersystems mit mindestens einem mikroprozessor und mindestens einem coprozessor
EP0586189B1 (de) 1992-09-03 2000-06-28 Sony Corporation Datenaufzeichnungsgerät und -verfahren
US5572710A (en) 1992-09-11 1996-11-05 Kabushiki Kaisha Toshiba High speed logic simulation system using time division emulation suitable for large scale logic circuits
US5425036A (en) 1992-09-18 1995-06-13 Quickturn Design Systems, Inc. Method and apparatus for debugging reconfigurable emulation systems
JPH06180653A (ja) 1992-10-02 1994-06-28 Hudson Soft Co Ltd 割り込み処理方法および装置
GB9223226D0 (en) 1992-11-05 1992-12-16 Algotronix Ltd Improved configurable cellular array (cal ii)
US5857109A (en) * 1992-11-05 1999-01-05 Giga Operations Corporation Programmable logic device for real time video processing
US5497498A (en) * 1992-11-05 1996-03-05 Giga Operations Corporation Video processing module using a second programmable logic device which reconfigures a first programmable logic device for data transformation
US5392437A (en) 1992-11-06 1995-02-21 Intel Corporation Method and apparatus for independently stopping and restarting functional units
US5361373A (en) 1992-12-11 1994-11-01 Gilson Kent L Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
US5311079A (en) 1992-12-17 1994-05-10 Ditlow Gary S Low power, high performance PLA
US5428526A (en) 1993-02-03 1995-06-27 Flood; Mark A. Programmable controller with time periodic communication
US5386518A (en) * 1993-02-12 1995-01-31 Hughes Aircraft Company Reconfigurable computer interface and method
GB9303084D0 (en) 1993-02-16 1993-03-31 Inmos Ltd Programmable logic circuit
JPH06276086A (ja) 1993-03-18 1994-09-30 Fuji Xerox Co Ltd フィールドプログラマブルゲートアレイ
US5548773A (en) 1993-03-30 1996-08-20 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Digital parallel processor array for optimum path planning
US5596742A (en) * 1993-04-02 1997-01-21 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5418953A (en) 1993-04-12 1995-05-23 Loral/Rohm Mil-Spec Corp. Method for automated deployment of a software program onto a multi-processor architecture
US5473266A (en) 1993-04-19 1995-12-05 Altera Corporation Programmable logic device having fast programmable logic array blocks and a central global interconnect array
WO1994025917A1 (en) * 1993-04-26 1994-11-10 Comdisco Systems, Inc. Method for scheduling synchronous data flow graphs
DE4416881C2 (de) 1993-05-13 1998-03-19 Pact Inf Tech Gmbh Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
US5435000A (en) 1993-05-19 1995-07-18 Bull Hn Information Systems Inc. Central processing unit using dual basic processing units and combined result bus
US5349193A (en) 1993-05-20 1994-09-20 Princeton Gamma Tech, Inc. Highly sensitive nuclear spectrometer apparatus and method
IT1260848B (it) 1993-06-11 1996-04-23 Finmeccanica Spa Sistema a multiprocessore
US5829007A (en) 1993-06-24 1998-10-27 Discovision Associates Technique for implementing a swing buffer in a memory array
US5444394A (en) 1993-07-08 1995-08-22 Altera Corporation PLD with selective inputs from local and global conductors
JPH0736858A (ja) 1993-07-21 1995-02-07 Hitachi Ltd 信号処理プロセッサ
US5581734A (en) 1993-08-02 1996-12-03 International Business Machines Corporation Multiprocessor system with shared cache and data input/output circuitry for transferring data amount greater than system bus capacity
CA2129882A1 (en) 1993-08-12 1995-02-13 Soheil Shams Dynamically reconfigurable interprocessor communication network for simd multiprocessors and apparatus implementing same
US5457644A (en) 1993-08-20 1995-10-10 Actel Corporation Field programmable digital signal processing array integrated circuit
GB2282244B (en) 1993-09-23 1998-01-14 Advanced Risc Mach Ltd Integrated circuit
US5440538A (en) 1993-09-23 1995-08-08 Massachusetts Institute Of Technology Communication system with redundant links and data bit time multiplexing
US6219688B1 (en) 1993-11-30 2001-04-17 Texas Instruments Incorporated Method, apparatus and system for sum of plural absolute differences
US5455525A (en) 1993-12-06 1995-10-03 Intelligent Logic Systems, Inc. Hierarchically-structured programmable logic array and system for interconnecting logic elements in the logic array
US5535406A (en) 1993-12-29 1996-07-09 Kolchinsky; Alexander Virtual processor module including a reconfigurable programmable matrix
US5680583A (en) 1994-02-16 1997-10-21 Arkos Design, Inc. Method and apparatus for a trace buffer in an emulation system
US5870302A (en) * 1994-02-17 1999-02-09 Waterlink Systems, Inc. Evapotranspiration remote irrigation control system
DE69519426T2 (de) 1994-03-22 2001-06-21 Hyperchip Inc Zellenbasierte fehlertolerante Architektur mit vorteilhafter Verwendung der nicht-zugeteilten redundanten Zellen
US5574927A (en) 1994-03-25 1996-11-12 International Meta Systems, Inc. RISC architecture computer configured for emulation of the instruction set of a target computer
US5561738A (en) 1994-03-25 1996-10-01 Motorola, Inc. Data processor for executing a fuzzy logic operation and method therefor
US5761484A (en) 1994-04-01 1998-06-02 Massachusetts Institute Of Technology Virtual interconnections for reconfigurable logic systems
US5504439A (en) 1994-04-01 1996-04-02 Xilinx, Inc. I/O interface cell for use with optional pad
US5781756A (en) 1994-04-01 1998-07-14 Xilinx, Inc. Programmable logic device with partially configurable memory cells and a method for configuration
US5430687A (en) 1994-04-01 1995-07-04 Xilinx, Inc. Programmable logic device including a parallel input device for loading memory cells
US5896551A (en) 1994-04-15 1999-04-20 Micron Technology, Inc. Initializing and reprogramming circuitry for state independent memory array burst operations control
US5426378A (en) 1994-04-20 1995-06-20 Xilinx, Inc. Programmable logic device which stores more than one configuration and means for switching configurations
JP2671804B2 (ja) 1994-05-27 1997-11-05 日本電気株式会社 階層型資源管理方法
US5532693A (en) 1994-06-13 1996-07-02 Advanced Hardware Architectures Adaptive data compression system with systolic string matching logic
EP0690378A1 (de) 1994-06-30 1996-01-03 Tandem Computers Incorporated Werkzeug und Verfahren zur Fehlerdiagnose und -korrektur in einem Rechnerprogramm
JP3308770B2 (ja) 1994-07-22 2002-07-29 三菱電機株式会社 情報処理装置および情報処理装置における計算方法
US5600845A (en) * 1994-07-27 1997-02-04 Metalithic Systems Incorporated Integrated circuit computing device comprising a dynamically configurable gate array having a microprocessor and reconfigurable instruction execution means and method therefor
JP3365581B2 (ja) 1994-07-29 2003-01-14 富士通株式会社 自己修復機能付き情報処理装置
US5574930A (en) 1994-08-12 1996-11-12 University Of Hawaii Computer system and method using functional memory
US5513366A (en) 1994-09-28 1996-04-30 International Business Machines Corporation Method and system for dynamically reconfiguring a register file in a vector processor
US5619720A (en) 1994-10-04 1997-04-08 Analog Devices, Inc. Digital signal processor having link ports for point-to-point communication
US5450022A (en) 1994-10-07 1995-09-12 Xilinx Inc. Structure and method for configuration of a field programmable gate array
EP0707269A1 (de) 1994-10-11 1996-04-17 International Business Machines Corporation Cachespeicherkohärenznetzwerk für Multiprozessor-Datenverarbeitungssystem
US5530946A (en) 1994-10-28 1996-06-25 Dell Usa, L.P. Processor failure detection and recovery circuit in a dual processor computer system and method of operation thereof
US5815726A (en) 1994-11-04 1998-09-29 Altera Corporation Coarse-grained look-up table architecture
JPH08137824A (ja) 1994-11-15 1996-05-31 Mitsubishi Semiconductor Software Kk セルフテスト機能内蔵シングルチップマイコン
US6154826A (en) 1994-11-16 2000-11-28 University Of Virginia Patent Foundation Method and device for maximizing memory system bandwidth by accessing data in a dynamically determined order
US5584013A (en) 1994-12-09 1996-12-10 International Business Machines Corporation Hierarchical 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
EP0721157A1 (de) 1994-12-12 1996-07-10 Advanced Micro Devices, Inc. Mikroprozessor mit auswählbarer Taktfrequenz
US5537580A (en) 1994-12-21 1996-07-16 Vlsi Technology, Inc. Integrated circuit fabrication using state machine extraction from behavioral hardware description language
JP3598139B2 (ja) 1994-12-28 2004-12-08 株式会社日立製作所 データ処理装置
US6128720A (en) 1994-12-29 2000-10-03 International Business Machines Corporation Distributed processing array with component processors performing customized interpretation of instructions
US5682491A (en) 1994-12-29 1997-10-28 International Business Machines Corporation Selective processing and routing of results among processors controlled by decoding instructions using mask value derived from instruction tag and processor identifier
US5696791A (en) 1995-01-17 1997-12-09 Vtech Industries, Inc. Apparatus and method for decoding a sequence of digitally encoded data
US5493239A (en) * 1995-01-31 1996-02-20 Motorola, Inc. Circuit and method of configuring a field programmable gate array
US5532957A (en) 1995-01-31 1996-07-02 Texas Instruments Incorporated Field reconfigurable logic/memory array
US6052773A (en) * 1995-02-10 2000-04-18 Massachusetts Institute Of Technology DPGA-coupled microprocessors
US5742180A (en) 1995-02-10 1998-04-21 Massachusetts Institute Of Technology Dynamically programmable gate array with multiple contexts
US5659785A (en) 1995-02-10 1997-08-19 International Business Machines Corporation Array processor communication architecture with broadcast processor instructions
US5537057A (en) 1995-02-14 1996-07-16 Altera Corporation Programmable logic array device with grouped logic regions and three types of conductors
US5892961A (en) 1995-02-17 1999-04-06 Xilinx, Inc. Field programmable gate array having programming instructions in the configuration bitstream
EP0727750B1 (de) * 1995-02-17 2004-05-12 Kabushiki Kaisha Toshiba Server für kontinuierliche Daten und Datentransferschema für mehrfache gleichzeitige Datenzugriffe
US5675743A (en) 1995-02-22 1997-10-07 Callisto Media Systems Inc. Multi-media server
US5570040A (en) 1995-03-22 1996-10-29 Altera Corporation Programmable logic array integrated circuit incorporating a first-in first-out memory
US5757207A (en) 1995-03-22 1998-05-26 Altera Corporation Programmable logic array integrated circuit incorporating a first-in first-out memory
US5752035A (en) 1995-04-05 1998-05-12 Xilinx, Inc. Method for compiling and executing programs for reprogrammable instruction set accelerator
US5748979A (en) 1995-04-05 1998-05-05 Xilinx Inc Reprogrammable instruction set accelerator using a plurality of programmable execution units and an instruction page table
JP3313007B2 (ja) * 1995-04-14 2002-08-12 三菱電機株式会社 マイクロコンピュータ
US6077315A (en) 1995-04-17 2000-06-20 Ricoh Company Ltd. Compiling system and method for partially reconfigurable computing
US5794062A (en) 1995-04-17 1998-08-11 Ricoh Company Ltd. System and method for dynamically reconfigurable computing using a processing unit having changeable internal hardware organization
US5933642A (en) 1995-04-17 1999-08-03 Ricoh Corporation Compiling system and method for reconfigurable computing
WO1996034346A1 (en) * 1995-04-28 1996-10-31 Xilinx, Inc. Microprocessor with distributed registers accessible by programmable logic device
GB9508931D0 (en) 1995-05-02 1995-06-21 Xilinx Inc Programmable switch for FPGA input/output signals
US5701091A (en) 1995-05-02 1997-12-23 Xilinx, Inc. Routing resources for hierarchical FPGA
US5600597A (en) * 1995-05-02 1997-02-04 Xilinx, Inc. Register protection structure for FPGA
US5541530A (en) 1995-05-17 1996-07-30 Altera Corporation Programmable logic array integrated circuits with blocks of logic regions grouped into super-blocks
US5649179A (en) 1995-05-19 1997-07-15 Motorola, Inc. Dynamic instruction allocation for a SIMD processor
US5821774A (en) 1995-05-26 1998-10-13 Xilinx, Inc. Structure and method for arithmetic function implementation in an EPLD having high speed product term allocation structure
JPH08328941A (ja) * 1995-05-31 1996-12-13 Nec Corp メモリアクセス制御回路
JP3677315B2 (ja) * 1995-06-01 2005-07-27 シャープ株式会社 データ駆動型情報処理装置
US5671432A (en) 1995-06-02 1997-09-23 International Business Machines Corporation Programmable array I/O-routing resource
US5652529A (en) 1995-06-02 1997-07-29 International Business Machines Corporation Programmable array clock/reset resource
US5815715A (en) 1995-06-05 1998-09-29 Motorola, Inc. Method for designing a product having hardware and software components and product therefor
US5646544A (en) 1995-06-05 1997-07-08 International Business Machines Corporation System and method for dynamically reconfiguring a programmable gate array
US5889982A (en) 1995-07-01 1999-03-30 Intel Corporation Method and apparatus for generating event handler vectors based on both operating mode and event type
US5559450A (en) 1995-07-27 1996-09-24 Lucent Technologies Inc. Field programmable gate array with multi-port RAM
US5978583A (en) 1995-08-07 1999-11-02 International Business Machines Corp. Method for resource control in parallel environments using program organization and run-time support
US5649176A (en) 1995-08-10 1997-07-15 Virtual Machine Works, Inc. Transition analysis and circuit resynthesis method and device for digital circuit modeling
US5996083A (en) 1995-08-11 1999-11-30 Hewlett-Packard Company Microprocessor having software controllable power consumption
GB2304438A (en) 1995-08-17 1997-03-19 Kenneth Austin Re-configurable application specific device
US5583450A (en) 1995-08-18 1996-12-10 Xilinx, Inc. Sequencer for a time multiplexed programmable logic device
US5784313A (en) 1995-08-18 1998-07-21 Xilinx, Inc. Programmable logic device including configuration data or user data memory slices
US5646545A (en) 1995-08-18 1997-07-08 Xilinx, Inc. Time multiplexed programmable logic device
US5778439A (en) 1995-08-18 1998-07-07 Xilinx, Inc. Programmable logic device with hierarchical confiquration and state storage
US5737565A (en) 1995-08-24 1998-04-07 International Business Machines Corporation System and method for diallocating stream from a stream buffer
US5737516A (en) 1995-08-30 1998-04-07 Motorola, Inc. Data processing system for performing a debug function and method therefor
US5734869A (en) 1995-09-06 1998-03-31 Chen; Duan-Ping High speed logic circuit simulator
US6430309B1 (en) 1995-09-15 2002-08-06 Monogen, Inc. Specimen preview and inspection system
US5745734A (en) 1995-09-29 1998-04-28 International Business Machines Corporation Method and system for programming a gate array using a compressed configuration bit stream
US5652894A (en) 1995-09-29 1997-07-29 Intel Corporation Method and apparatus for providing power saving modes to a pipelined processor
US5754827A (en) 1995-10-13 1998-05-19 Mentor Graphics Corporation Method and apparatus for performing fully visible tracing of an emulation
US5815004A (en) 1995-10-16 1998-09-29 Xilinx, Inc. Multi-buffered configurable logic block output lines in a field programmable gate array
US5642058A (en) 1995-10-16 1997-06-24 Xilinx , Inc. Periphery input/output interconnect structure
US5608342A (en) * 1995-10-23 1997-03-04 Xilinx, Inc. Hierarchical programming of electrically configurable integrated circuits
US5656950A (en) 1995-10-26 1997-08-12 Xilinx, Inc. Interconnect lines including tri-directional buffer circuits
US5675262A (en) 1995-10-26 1997-10-07 Xilinx, Inc. Fast carry-out scheme in a field programmable gate array
US5943242A (en) 1995-11-17 1999-08-24 Pact Gmbh Dynamically reconfigurable data processing system
US5732209A (en) 1995-11-29 1998-03-24 Exponential Technology, Inc. Self-testing multi-processor die with internal compare points
US5773994A (en) 1995-12-15 1998-06-30 Cypress Semiconductor Corp. Method and apparatus for implementing an internal tri-state bus within a programmable logic circuit
JPH09231788A (ja) 1995-12-19 1997-09-05 Fujitsu Ltd シフトレジスタ及びプログラマブル論理回路並びにプログラマブル論理回路システム
US5804986A (en) 1995-12-29 1998-09-08 Cypress Semiconductor Corp. Memory in a programmable logic device
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
JP3247043B2 (ja) 1996-01-12 2002-01-15 株式会社日立製作所 内部信号で障害検出を行う情報処理システムおよび論理lsi
US5760602A (en) 1996-01-17 1998-06-02 Hewlett-Packard Company Time multiplexing a plurality of configuration settings of a programmable switch element in a FPGA
JP2795244B2 (ja) 1996-01-17 1998-09-10 日本電気株式会社 プログラムデバッグシステム
US5854918A (en) 1996-01-24 1998-12-29 Ricoh Company Ltd. Apparatus and method for self-timed algorithmic execution
US5898602A (en) 1996-01-25 1999-04-27 Xilinx, Inc. Carry chain circuit with flexible carry function for implementing arithmetic and logical functions
US5936424A (en) 1996-02-02 1999-08-10 Xilinx, Inc. High speed bus with tree structure for selecting bus driver
US5635851A (en) 1996-02-02 1997-06-03 Xilinx, Inc. Read and writable data bus particularly for programmable logic devices
US5727229A (en) 1996-02-05 1998-03-10 Motorola, Inc. Method and apparatus for moving data in a parallel processor
US5754459A (en) 1996-02-08 1998-05-19 Xilinx, Inc. Multiplier circuit design for a programmable logic device
KR0165515B1 (ko) 1996-02-17 1999-01-15 김광호 그래픽 데이터의 선입선출기 및 선입선출 방법
GB9604496D0 (en) 1996-03-01 1996-05-01 Xilinx Inc Embedded memory for field programmable gate array
US6020758A (en) 1996-03-11 2000-02-01 Altera Corporation Partially reconfigurable programmable logic device
US5841973A (en) 1996-03-13 1998-11-24 Cray Research, Inc. Messaging in distributed memory multiprocessing system having shell circuitry for atomic control of message storage queue's tail pointer structure in local memory
US6279077B1 (en) 1996-03-22 2001-08-21 Texas Instruments Incorporated Bus interface buffer control in a microprocessor
US6311265B1 (en) 1996-03-25 2001-10-30 Torrent Systems, Inc. Apparatuses and methods for programming parallel computers
US6154049A (en) 1998-03-27 2000-11-28 Xilinx, Inc. Multiplier fabric for use in field programmable gate arrays
US5956518A (en) 1996-04-11 1999-09-21 Massachusetts Institute Of Technology Intermediate-grain reconfigurable processing device
US5687325A (en) 1996-04-19 1997-11-11 Chang; Web Application specific field programmable gate array
US6173434B1 (en) 1996-04-22 2001-01-09 Brigham Young University Dynamically-configurable digital processor using method for relocating logic array modules
US5960200A (en) 1996-05-03 1999-09-28 I-Cube System to transition an enterprise to a distributed infrastructure
US5894565A (en) 1996-05-20 1999-04-13 Atmel Corporation Field programmable gate array with distributed RAM and increased cell utilization
US5784636A (en) 1996-05-28 1998-07-21 National Semiconductor Corporation Reconfigurable computer architecture for use in signal processing applications
US5892370A (en) 1996-06-21 1999-04-06 Quicklogic Corporation Clock network for field programmable gate array
JP2000513523A (ja) 1996-06-21 2000-10-10 オーガニック システムズ インコーポレイテッド プロセスの即時制御を行う動的に再構成可能なハードウェアシステム
US6785826B1 (en) 1996-07-17 2004-08-31 International Business Machines Corporation Self power audit and control circuitry for microprocessor functional units
US6023742A (en) * 1996-07-18 2000-02-08 University Of Washington Reconfigurable computing architecture for providing pipelined data paths
US6023564A (en) * 1996-07-19 2000-02-08 Xilinx, Inc. Data processing system using a flash reconfigurable logic device as a dynamic execution unit for a sequence of instructions
KR100280285B1 (ko) * 1996-08-19 2001-02-01 윤종용 멀티미디어 신호에 적합한 멀티미디어 프로세서
US5838165A (en) 1996-08-21 1998-11-17 Chatter; Mukesh High performance self modifying on-the-fly alterable logic FPGA, architecture and method
US5933023A (en) 1996-09-03 1999-08-03 Xilinx, Inc. FPGA architecture having RAM blocks with programmable word length and width and dedicated address and data lines
US6624658B2 (en) 1999-02-04 2003-09-23 Advantage Logic, Inc. Method and apparatus for universal program controlled bus architecture
US5859544A (en) * 1996-09-05 1999-01-12 Altera Corporation Dynamic configurable elements for programmable logic devices
US6049866A (en) * 1996-09-06 2000-04-11 Silicon Graphics, Inc. Method and system for an efficient user mode cache manipulation using a simulated instruction
JP3934710B2 (ja) 1996-09-13 2007-06-20 株式会社ルネサステクノロジ マイクロプロセッサ
US5828858A (en) 1996-09-16 1998-10-27 Virginia Tech Intellectual Properties, Inc. Worm-hole run-time reconfigurable processor field programmable gate array (FPGA)
US6178494B1 (en) * 1996-09-23 2001-01-23 Virtual Computer Corporation Modular, hybrid processor and method for producing a modular, hybrid processor
US5694602A (en) 1996-10-01 1997-12-02 The United States Of America As Represented By The Secretary Of The Air Force Weighted system and method for spatial allocation of a parallel load
SG125044A1 (en) 1996-10-14 2006-09-29 Mitsubishi Gas Chemical Co Oxygen absorption composition
US5832288A (en) 1996-10-18 1998-11-03 Samsung Electronics Co., Ltd. Element-select mechanism for a vector processor
US5901279A (en) 1996-10-18 1999-05-04 Hughes Electronics Corporation Connection of spares between multiple programmable devices
US5892962A (en) 1996-11-12 1999-04-06 Lucent Technologies Inc. FPGA-based processor
US5844422A (en) 1996-11-13 1998-12-01 Xilinx, Inc. State saving and restoration in reprogrammable FPGAs
US5895487A (en) 1996-11-13 1999-04-20 International Business Machines Corporation Integrated processing and L2 DRAM cache
US5860119A (en) * 1996-11-25 1999-01-12 Vlsi Technology, Inc. Data-packet fifo buffer system with end-of-packet flags
US6005410A (en) 1996-12-05 1999-12-21 International Business Machines Corporation Interconnect structure between heterogeneous core regions in a programmable array
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
DE19654593A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh Umkonfigurierungs-Verfahren für programmierbare Bausteine zur Laufzeit
US6338106B1 (en) * 1996-12-20 2002-01-08 Pact Gmbh I/O and memory bus system for DFPS and units with two or multi-dimensional programmable cell architectures
DE19654846A1 (de) 1996-12-27 1998-07-09 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen Umladen von Datenflußprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o. dgl.)
ATE243390T1 (de) 1996-12-27 2003-07-15 Pact Inf Tech Gmbh Verfahren zum selbständigen dynamischen umladen von datenflussprozessoren (dfps) sowie bausteinen mit zwei- oder mehrdimensionalen programmierbaren zellstrukturen (fpgas, dpgas, o.dgl.)
US6427156B1 (en) 1997-01-21 2002-07-30 Xilinx, Inc. Configurable logic block with AND gate for efficient multiplication in FPGAS
EP0858168A1 (de) 1997-01-29 1998-08-12 Hewlett-Packard Company Feldprogrammierbarer Gatterprozessor
EP0858167A1 (de) 1997-01-29 1998-08-12 Hewlett-Packard Company Feldprogrammierbarer Prozessor
DE19704044A1 (de) 1997-02-04 1998-08-13 Pact Inf Tech Gmbh Verfahren zur automatischen Adressgenerierung von Bausteinen innerhalb Clustern aus einer Vielzahl dieser Bausteine
US5865239A (en) * 1997-02-05 1999-02-02 Micropump, Inc. Method for making herringbone gears
US6055619A (en) 1997-02-07 2000-04-25 Cirrus Logic, Inc. Circuits, system, and methods for processing multiple data streams
DE19704728A1 (de) 1997-02-08 1998-08-13 Pact Inf Tech Gmbh Verfahren zur Selbstsynchronisation von konfigurierbaren Elementen eines programmierbaren Bausteines
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
DE19704742A1 (de) 1997-02-11 1998-09-24 Pact Inf Tech Gmbh Internes Bussystem für DFPs, sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen, zur Bewältigung großer Datenmengen mit hohem Vernetzungsaufwand
US6150837A (en) 1997-02-28 2000-11-21 Actel Corporation Enhanced field programmable gate array
WO1998038958A1 (en) 1997-03-05 1998-09-11 Massachusetts Institute Of Technology A reconfigurable footprint mechanism for omnidirectional vehicles
US6125408A (en) 1997-03-10 2000-09-26 Compaq Computer Corporation Resource type prioritization in generating a device configuration
US5884075A (en) 1997-03-10 1999-03-16 Compaq Computer Corporation Conflict resolution using self-contained virtual devices
US5857097A (en) * 1997-03-10 1999-01-05 Digital Equipment Corporation Method for identifying reasons for dynamic stall cycles during the execution of a program
US6085317A (en) 1997-08-15 2000-07-04 Altera Corporation Reconfigurable computer architecture using programmable logic devices
US6349379B2 (en) * 1997-04-30 2002-02-19 Canon Kabushiki Kaisha System for executing instructions having flag for indicating direct or indirect specification of a length of operand data
US6321366B1 (en) 1997-05-02 2001-11-20 Axis Systems, Inc. Timing-insensitive glitch-free logic system and method
US6389379B1 (en) 1997-05-02 2002-05-14 Axis Systems, Inc. Converification system and method
US6035371A (en) 1997-05-28 2000-03-07 3Com Corporation Method and apparatus for addressing a static random access memory device based on signals for addressing a dynamic memory access device
US6421817B1 (en) 1997-05-29 2002-07-16 Xilinx, Inc. System and method of computation in a programmable logic device using virtual instructions
US6047115A (en) 1997-05-29 2000-04-04 Xilinx, Inc. Method for configuring FPGA memory planes for virtual hardware computation
US6339840B1 (en) 1997-06-02 2002-01-15 Iowa State University Research Foundation, Inc. Apparatus and method for parallelizing legacy computer code
US6011407A (en) * 1997-06-13 2000-01-04 Xilinx, Inc. Field programmable gate array with dedicated computer bus interface and method for configuring both
US5996048A (en) 1997-06-20 1999-11-30 Sun Microsystems, Inc. Inclusion vector architecture for a level two cache
US5838988A (en) 1997-06-25 1998-11-17 Sun Microsystems, Inc. Computer product for precise architectural update in an out-of-order processor
US6240502B1 (en) 1997-06-25 2001-05-29 Sun Microsystems, Inc. Apparatus for dynamically reconfiguring a processor
US5970254A (en) 1997-06-27 1999-10-19 Cooke; Laurence H. Integrated processor and programmable data path chip for reconfigurable computing
US5966534A (en) 1997-06-27 1999-10-12 Cooke; Laurence H. Method for compiling high level programming languages into an integrated processor with reconfigurable logic
US6437441B1 (en) 1997-07-10 2002-08-20 Kawasaki Microelectronics, Inc. Wiring structure of a semiconductor integrated circuit and a method of forming the wiring structure
US6020760A (en) * 1997-07-16 2000-02-01 Altera Corporation I/O buffer circuit with pin multiplexing
US6282701B1 (en) 1997-07-31 2001-08-28 Mutek Solutions, Ltd. System and method for monitoring and analyzing the execution of computer programs
US6170051B1 (en) * 1997-08-01 2001-01-02 Micron Technology, Inc. Apparatus and method for program level parallelism in a VLIW processor
US6026478A (en) * 1997-08-01 2000-02-15 Micron Technology, Inc. Split embedded DRAM processor
US6078736A (en) 1997-08-28 2000-06-20 Xilinx, Inc. Method of designing FPGAs for dynamically reconfigurable computing
US6038656A (en) 1997-09-12 2000-03-14 California Institute Of Technology Pipelined completion for asynchronous communication
JP3612186B2 (ja) 1997-09-19 2005-01-19 株式会社ルネサステクノロジ データ処理装置
US6539415B1 (en) 1997-09-24 2003-03-25 Sony Corporation Method and apparatus for the allocation of audio/video tasks in a network system
US5966143A (en) 1997-10-14 1999-10-12 Motorola, Inc. Data allocation into multiple memories for concurrent access
SG82587A1 (en) * 1997-10-21 2001-08-21 Sony Corp Recording apparatus, recording method, playback apparatus, playback method, recording/playback apparatus, recording/playback method, presentation medium and recording medium
US6212544B1 (en) 1997-10-23 2001-04-03 International Business Machines Corporation Altering thread priorities in a multithreaded processor
US6076157A (en) 1997-10-23 2000-06-13 International Business Machines Corporation Method and apparatus to force a thread switch in a multithreaded processor
JP4128251B2 (ja) 1997-10-23 2008-07-30 富士通株式会社 配線密度予測方法およびセル配置装置
US6247147B1 (en) 1997-10-27 2001-06-12 Altera Corporation Enhanced embedded logic analyzer
US5915123A (en) 1997-10-31 1999-06-22 Silicon Spice Method and apparatus for controlling configuration memory contexts of processing elements in a network of multiple context processing elements
US6122719A (en) 1997-10-31 2000-09-19 Silicon Spice Method and apparatus for retiming in a network of multiple context processing elements
US6108760A (en) 1997-10-31 2000-08-22 Silicon Spice Method and apparatus for position independent reconfiguration in a network of multiple context processing elements
US6127908A (en) 1997-11-17 2000-10-03 Massachusetts Institute Of Technology Microelectro-mechanical system actuator device and reconfigurable circuits utilizing same
JP4197755B2 (ja) * 1997-11-19 2008-12-17 富士通株式会社 信号伝送システム、該信号伝送システムのレシーバ回路、および、該信号伝送システムが適用される半導体記憶装置
US6212650B1 (en) 1997-11-24 2001-04-03 Xilinx, Inc. Interactive dubug tool for programmable circuits
US6091263A (en) 1997-12-12 2000-07-18 Xilinx, Inc. Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM
EP0926594B1 (de) 1997-12-17 2007-05-23 Hewlett-Packard Company, A Delaware Corporation Erst- und Zweitprozessoren verwendendes Verfahren
WO1999031574A1 (en) 1997-12-17 1999-06-24 Hewlett-Packard Company Implementation of multipliers in programmable arrays
DE69841256D1 (de) 1997-12-17 2009-12-10 Panasonic Corp Befehlsmaskierung um Befehlsströme einem Prozessor zuzuleiten
DE69827589T2 (de) 1997-12-17 2005-11-03 Elixent Ltd. Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6260114B1 (en) 1997-12-30 2001-07-10 Mcmz Technology Innovations, Llc Computer cache memory windowing
US6172520B1 (en) * 1997-12-30 2001-01-09 Xilinx, Inc. FPGA system with user-programmable configuration ports and method for reconfiguring the FPGA
US6049222A (en) 1997-12-30 2000-04-11 Xilinx, Inc Configuring an FPGA using embedded memory
US6105106A (en) 1997-12-31 2000-08-15 Micron Technology, Inc. Computer system, memory device and shift register including a balanced switching circuit with series connected transfer gates which are selectively clocked for fast switching times
US6301706B1 (en) 1997-12-31 2001-10-09 Elbrus International Limited Compiler method and apparatus for elimination of redundant speculative computations from innermost loops
US6216223B1 (en) 1998-01-12 2001-04-10 Billions Of Operations Per Second, Inc. Methods and apparatus to dynamically reconfigure the instruction pipeline of an indirect very long instruction word scalable processor
US6034538A (en) 1998-01-21 2000-03-07 Lucent Technologies Inc. Virtual logic system for reconfigurable hardware
US6389579B1 (en) 1998-01-26 2002-05-14 Chameleon Systems Reconfigurable logic for table lookup
US6230307B1 (en) 1998-01-26 2001-05-08 Xilinx, Inc. System and method for programming the hardware of field programmable gate arrays (FPGAs) and related reconfiguration resources as if they were software by creating hardware objects
DE69919059T2 (de) 1998-02-04 2005-01-27 Texas Instruments Inc., Dallas Datenverarbeitungssytem mit einem digitalen Signalprozessor und einem Koprozessor und Datenverarbeitungsverfahren
US6086628A (en) * 1998-02-17 2000-07-11 Lucent Technologies Inc. Power-related hardware-software co-synthesis of heterogeneous distributed embedded systems
US7152027B2 (en) 1998-02-17 2006-12-19 National Instruments Corporation Reconfigurable test system
US6198304B1 (en) 1998-02-23 2001-03-06 Xilinx, Inc. Programmable logic device
US6096091A (en) 1998-02-24 2000-08-01 Advanced Micro Devices, Inc. Dynamically reconfigurable logic networks interconnected by fall-through FIFOs for flexible pipeline processing in a system-on-a-chip
DE19807872A1 (de) 1998-02-25 1999-08-26 Pact Inf Tech Gmbh Verfahren zur Verwaltung von Konfigurationsdaten in Datenflußprozessoren sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstruktur (FPGAs, DPGAs, o. dgl.
US6088800A (en) 1998-02-27 2000-07-11 Mosaid Technologies, Incorporated Encryption processor with shared memory interconnect
US6298043B1 (en) 1998-03-28 2001-10-02 Nortel Networks Limited Communication system architecture and a connection verification mechanism therefor
US6374286B1 (en) 1998-04-06 2002-04-16 Rockwell Collins, Inc. Real time processor capable of concurrently running multiple independent JAVA machines
US6456628B1 (en) 1998-04-17 2002-09-24 Intelect Communications, Inc. DSP intercommunication network
US6421808B1 (en) 1998-04-24 2002-07-16 Cadance Design Systems, Inc. Hardware design language for the design of integrated circuits
US6084429A (en) 1998-04-24 2000-07-04 Xilinx, Inc. PLD having a window pane architecture with segmented and staggered interconnect wiring between logic block arrays
US6173419B1 (en) * 1998-05-14 2001-01-09 Advanced Technology Materials, Inc. Field programmable gate array (FPGA) emulator for debugging software
US6449283B1 (en) 1998-05-15 2002-09-10 Polytechnic University Methods and apparatus for providing a fast ring reservation arbitration
US5999990A (en) 1998-05-18 1999-12-07 Motorola, Inc. Communicator having reconfigurable resources
US6298396B1 (en) 1998-06-01 2001-10-02 Advanced Micro Devices, Inc. System for loading a current buffer desciptor register with a value different from current value to cause a previously read buffer descriptor to be read again
US6092174A (en) 1998-06-01 2000-07-18 Context, Inc. Dynamically reconfigurable distributed integrated circuit processor and method
JP3123977B2 (ja) * 1998-06-04 2001-01-15 日本電気株式会社 プログラマブル機能ブロック
US6282627B1 (en) 1998-06-29 2001-08-28 Chameleon Systems, Inc. Integrated processor and programmable data path chip for reconfigurable computing
US6202182B1 (en) 1998-06-30 2001-03-13 Lucent Technologies Inc. Method and apparatus for testing field programmable gate arrays
DE69803373T2 (de) 1998-07-06 2002-08-14 Hewlett Packard Co Verdrahtung von Zellen in logischen Feldern
KR100385370B1 (ko) 1998-07-21 2003-05-27 시게이트 테크놀로지 엘엘씨 개선된 메모리 시스템 장치 및 방법
US6609088B1 (en) 1998-07-24 2003-08-19 Interuniversitaire Micro-Elektronica Centrum Method for determining an optimized memory organization of a digital device
DE19835189C2 (de) 1998-08-04 2001-02-08 Unicor Rohrsysteme Gmbh Vorrichtung zur kontinuierlichen Herstellung von nahtlosen Kunststoffrohren
US6137307A (en) 1998-08-04 2000-10-24 Xilinx, Inc. Structure and method for loading wide frames of data from a narrow input bus
US20020152060A1 (en) 1998-08-31 2002-10-17 Tseng Ping-Sheng Inter-chip communication system
JP2000076066A (ja) 1998-09-02 2000-03-14 Fujitsu Ltd 信号処理回路
US7100026B2 (en) 2001-05-30 2006-08-29 The Massachusetts Institute Of Technology System and method for performing efficient conditional vector operations for data parallel architectures involving both input and conditional vector values
US6205458B1 (en) 1998-09-21 2001-03-20 Rn2R, L.L.C. Adder and multiplier circuits employing logic gates having discrete, weighted inputs and methods of performing combinatorial operations therewith
JP3551353B2 (ja) * 1998-10-02 2004-08-04 株式会社日立製作所 データ再配置方法
US6215326B1 (en) 1998-11-18 2001-04-10 Altera Corporation Programmable logic device architecture with super-regions having logic regions and a memory region
EP1351153A3 (de) 1998-11-20 2008-11-05 Altera Corporation Rechnersystem mit rekonfigurierbarer, programmierbarer Logik-Vorrichtung
US6977649B1 (en) 1998-11-23 2005-12-20 3Dlabs, Inc. Ltd 3D graphics rendering with selective read suspend
JP2000181566A (ja) 1998-12-14 2000-06-30 Mitsubishi Electric Corp マルチクロック並列処理装置
US6044030A (en) 1998-12-21 2000-03-28 Philips Electronics North America Corporation FIFO unit with single pointer
GB9828381D0 (en) * 1998-12-22 1999-02-17 Isis Innovation Hardware/software codesign system
US6434695B1 (en) 1998-12-23 2002-08-13 Apple Computer, Inc. Computer operating system using compressed ROM image in RAM
US6757847B1 (en) 1998-12-29 2004-06-29 International Business Machines Corporation Synchronization for system analysis
US6496902B1 (en) 1998-12-31 2002-12-17 Cray Inc. Vector and scalar data cache for a vector multiprocessor
JP3585800B2 (ja) 1999-01-13 2004-11-04 株式会社東芝 情報処理装置
US6539438B1 (en) 1999-01-15 2003-03-25 Quickflex Inc. Reconfigurable computing system and method and apparatus employing same
US6490695B1 (en) 1999-01-22 2002-12-03 Sun Microsystems, Inc. Platform independent memory image analysis architecture for debugging a computer program
US6321298B1 (en) 1999-01-25 2001-11-20 International Business Machines Corporation Full cache coherency across multiple raid controllers
DE10028397A1 (de) 2000-06-13 2001-12-20 Pact Inf Tech Gmbh Registrierverfahren
US6243808B1 (en) 1999-03-08 2001-06-05 Chameleon Systems, Inc. Digital data bit order conversion using universal switch matrix comprising rows of bit swapping selector groups
US6512804B1 (en) * 1999-04-07 2003-01-28 Applied Micro Circuits Corporation Apparatus and method for multiple serial data synchronization using channel-lock FIFO buffers optimized for jitter
GB9909196D0 (en) 1999-04-21 1999-06-16 Texas Instruments Ltd Transfer controller with hub and ports architecture
US6286134B1 (en) 1999-04-23 2001-09-04 Sun Microsystems, Inc. Instruction selection in a multi-platform environment
JP2000311156A (ja) 1999-04-27 2000-11-07 Mitsubishi Electric Corp 再構成可能並列計算機
US6381624B1 (en) 1999-04-29 2002-04-30 Hewlett-Packard Company Faster multiply/accumulator
US6298472B1 (en) 1999-05-07 2001-10-02 Chameleon Systems, Inc. Behavioral silicon construct architecture and mapping
US7007096B1 (en) * 1999-05-12 2006-02-28 Microsoft Corporation Efficient splitting and mixing of streaming-data frames for processing through multiple processing modules
US6748440B1 (en) 1999-05-12 2004-06-08 Microsoft Corporation Flow of streaming data through multiple processing modules
US6211697B1 (en) 1999-05-25 2001-04-03 Actel Integrated circuit that includes a field-programmable gate array and a hard gate array having the same underlying structure
DE19926538A1 (de) 1999-06-10 2000-12-14 Pact Inf Tech Gmbh Hardware und Betriebsverfahren
EP1061439A1 (de) 1999-06-15 2000-12-20 Hewlett-Packard Company Speicher und Befehlen in Rechnerarchitektur mit Prozessor und Coprozessor
US6757892B1 (en) 1999-06-24 2004-06-29 Sarnoff Corporation Method for determining an optimal partitioning of data among several memories
US6347346B1 (en) 1999-06-30 2002-02-12 Chameleon Systems, Inc. Local memory unit system with global access for use on reconfigurable chips
JP3420121B2 (ja) 1999-06-30 2003-06-23 Necエレクトロニクス株式会社 不揮発性半導体記憶装置
JP4046444B2 (ja) * 1999-07-16 2008-02-13 三菱電機株式会社 車両用交流発電機
GB2352548B (en) 1999-07-26 2001-06-06 Sun Microsystems Inc Method and apparatus for executing standard functions in a computer system
US6745317B1 (en) 1999-07-30 2004-06-01 Broadcom Corporation Three level direct communication connections between neighboring multiple context processing elements
US6370596B1 (en) 1999-08-03 2002-04-09 Chameleon Systems, Inc. Logic flag registers for monitoring processing system events
US6341318B1 (en) * 1999-08-10 2002-01-22 Chameleon Systems, Inc. DMA data streaming
US6204687B1 (en) 1999-08-13 2001-03-20 Xilinx, Inc. Method and structure for configuring FPGAS
US6507947B1 (en) 1999-08-20 2003-01-14 Hewlett-Packard Company Programmatic synthesis of processor element arrays
US6438747B1 (en) 1999-08-20 2002-08-20 Hewlett-Packard Company Programmatic iteration scheduling for parallel processors
US6606704B1 (en) 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6349346B1 (en) * 1999-09-23 2002-02-19 Chameleon Systems, Inc. Control fabric unit including associated configuration memory and PSOP state machine adapted to provide configuration address to reconfigurable functional unit
US6288566B1 (en) 1999-09-23 2001-09-11 Chameleon Systems, Inc. Configuration state memory for functional blocks on a reconfigurable chip
US6311200B1 (en) 1999-09-23 2001-10-30 Chameleon Systems, Inc. Reconfigurable program sum of products generator
US6631487B1 (en) 1999-09-27 2003-10-07 Lattice Semiconductor Corp. On-line testing of field programmable gate array resources
DE19946752A1 (de) 1999-09-29 2001-04-12 Infineon Technologies Ag Rekonfigurierbares Gate-Array
US6412043B1 (en) * 1999-10-01 2002-06-25 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6598128B1 (en) * 1999-10-01 2003-07-22 Hitachi, Ltd. Microprocessor having improved memory management unit and cache memory
US6665758B1 (en) 1999-10-04 2003-12-16 Ncr Corporation Software sanity monitor
US6434642B1 (en) 1999-10-07 2002-08-13 Xilinx, Inc. FIFO memory system and method with improved determination of full and empty conditions and amount of data stored
JP2001167066A (ja) 1999-12-08 2001-06-22 Nec Corp プロセッサ間通信方法及びマルチプロセッサシステム
US6625654B1 (en) * 1999-12-28 2003-09-23 Intel Corporation Thread signaling in multi-threaded network processor
US6633181B1 (en) 1999-12-30 2003-10-14 Stretch, Inc. Multi-scale programmable array
DE60138145D1 (de) 2000-01-07 2009-05-07 Nippon Telegraph & Telephone Funktionsrekonfigurierbare Halbleitervorrichtung und integrierte Schaltung zum Konfigurieren der Halbleitervorrichtung
JP2001202236A (ja) 2000-01-20 2001-07-27 Fuji Xerox Co Ltd プログラマブル論理回路装置によるデータ処理方法、プログラマブル論理回路装置、情報処理システム、プログラマブル論理回路装置への回路再構成方法
US6701431B2 (en) 2000-01-28 2004-03-02 Infineon Technologies Ag Method of generating a configuration for a configurable spread spectrum communication device
US6496971B1 (en) 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
US6487709B1 (en) 2000-02-09 2002-11-26 Xilinx, Inc. Run-time routing for programmable logic devices
US6519674B1 (en) * 2000-02-18 2003-02-11 Chameleon Systems, Inc. Configuration bits layout
JP2001236221A (ja) 2000-02-21 2001-08-31 Keisuke Shindo マルチスレッドを利用するパイプライン並列プロセッサ
US6865663B2 (en) 2000-02-24 2005-03-08 Pts Corporation Control processor dynamically loading shadow instruction register associated with memory entry of coprocessor in flexible coupling mode
JP3674515B2 (ja) 2000-02-25 2005-07-20 日本電気株式会社 アレイ型プロセッサ
US6434672B1 (en) 2000-02-29 2002-08-13 Hewlett-Packard Company Methods and apparatus for improving system performance with a shared cache memory
US6539477B1 (en) 2000-03-03 2003-03-25 Chameleon Systems, Inc. System and method for control synthesis using a reachable states look-up table
KR100841411B1 (ko) 2000-03-14 2008-06-25 소니 가부시끼 가이샤 전송장치, 수신장치, 전송방법, 수신방법과 기록매체
US6657457B1 (en) 2000-03-15 2003-12-02 Intel Corporation Data transfer on reconfigurable chip
US6871341B1 (en) 2000-03-24 2005-03-22 Intel Corporation Adaptive scheduling of function cells in dynamic reconfigurable logic
US6624819B1 (en) 2000-05-01 2003-09-23 Broadcom Corporation Method and system for providing a flexible and efficient processor for use in a graphics processing system
US6362650B1 (en) 2000-05-18 2002-03-26 Xilinx, Inc. Method and apparatus for incorporating a multiplier into an FPGA
US6373779B1 (en) 2000-05-19 2002-04-16 Xilinx, Inc. Block RAM having multiple configurable write modes for use in a field programmable gate array
US6725334B2 (en) 2000-06-09 2004-04-20 Hewlett-Packard Development Company, L.P. Method and system for exclusive two-level caching in a chip-multiprocessor
US7340596B1 (en) 2000-06-12 2008-03-04 Altera Corporation Embedded processor with watchdog timer for programmable logic
EP1342158B1 (de) * 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US6285624B1 (en) 2000-07-08 2001-09-04 Han-Ping Chen Multilevel memory access method
DE10036627A1 (de) 2000-07-24 2002-02-14 Pact Inf Tech Gmbh Integrierter Schaltkreis
DE10129237A1 (de) 2000-10-09 2002-04-18 Pact Inf Tech Gmbh Verfahren zur Bearbeitung von Daten
JP2002041489A (ja) 2000-07-25 2002-02-08 Mitsubishi Electric Corp 同期信号生成回路、それを用いたプロセッサシステムおよび同期信号生成方法
US6538468B1 (en) 2000-07-31 2003-03-25 Cypress Semiconductor Corporation Method and apparatus for multiple boot-up functionalities for a programmable logic device (PLD)
US6542844B1 (en) 2000-08-02 2003-04-01 International Business Machines Corporation Method and apparatus for tracing hardware states using dynamically reconfigurable test circuits
US6754805B1 (en) 2000-08-07 2004-06-22 Transwitch Corporation Method and apparatus for configurable multi-cell digital signal processing employing global parallel configuration
EP1356401A2 (de) 2000-08-07 2003-10-29 Altera Corporation Software-zu-hardware-kompiler
EP1182559B1 (de) 2000-08-21 2009-01-21 Texas Instruments Incorporated Mikroprozessor
US7249351B1 (en) 2000-08-30 2007-07-24 Broadcom Corporation System and method for preparing software for execution in a dynamically configurable hardware environment
US6829697B1 (en) 2000-09-06 2004-12-07 International Business Machines Corporation Multiple logical interfaces to a shared coprocessor resource
US7346644B1 (en) 2000-09-18 2008-03-18 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US6538470B1 (en) 2000-09-18 2003-03-25 Altera Corporation Devices and methods with programmable logic and digital signal processing regions
US6518787B1 (en) 2000-09-21 2003-02-11 Triscend Corporation Input/output architecture for efficient configuration of programmable input/output cells
US20040015899A1 (en) * 2000-10-06 2004-01-22 Frank May Method for processing data
US7595659B2 (en) 2000-10-09 2009-09-29 Pact Xpp Technologies Ag Logic cell array and bus system
US6525678B1 (en) 2000-10-06 2003-02-25 Altera Corporation Configuring a programmable logic device
US20020045952A1 (en) 2000-10-12 2002-04-18 Blemel Kenneth G. High performance hybrid micro-computer
US6398383B1 (en) 2000-10-30 2002-06-04 Yu-Hwei Huang Flashlight carriable on one's person
JP3636986B2 (ja) 2000-12-06 2005-04-06 松下電器産業株式会社 半導体集積回路
GB2370380B (en) 2000-12-19 2003-12-31 Picochip Designs Ltd Processor architecture
EP1346280A1 (de) 2000-12-20 2003-09-24 Koninklijke Philips Electronics N.V. Datenverarbeitungseinrichtung mit einer konfigurierbaren funktionseinheit
US6483343B1 (en) 2000-12-29 2002-11-19 Quicklogic Corporation Configurable computational unit embedded in a programmable device
US6426649B1 (en) 2000-12-29 2002-07-30 Quicklogic Corporation Architecture for field programmable gate array
US6392912B1 (en) 2001-01-10 2002-05-21 Chameleon Systems, Inc. Loading data plane on reconfigurable chip
US7020673B2 (en) 2001-01-19 2006-03-28 Sony Corporation Reconfigurable arithmetic device and arithmetic system including that arithmetic device and address generation device and interleave device applicable to arithmetic system
US20020099759A1 (en) 2001-01-24 2002-07-25 Gootherts Paul David Load balancer with starvation avoidance
US6847370B2 (en) * 2001-02-20 2005-01-25 3D Labs, Inc., Ltd. Planar byte memory organization with linear access
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US7210129B2 (en) 2001-08-16 2007-04-24 Pact Xpp Technologies Ag Method for translating programs for reconfigurable architectures
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6792588B2 (en) 2001-04-02 2004-09-14 Intel Corporation Faster scalable floorplan which enables easier data control flow
US20020143505A1 (en) 2001-04-02 2002-10-03 Doron Drusinsky Implementing a finite state machine using concurrent finite state machines with delayed communications and no shared control signals
WO2002082267A1 (en) 2001-04-06 2002-10-17 Wind River Systems, Inc. Fpga coprocessing system
US6836842B1 (en) 2001-04-24 2004-12-28 Xilinx, Inc. Method of partial reconfiguration of a PLD in which only updated portions of configuration data are selected for reconfiguring the PLD
US6999984B2 (en) 2001-05-02 2006-02-14 Intel Corporation Modification to reconfigurable functional unit in a reconfigurable chip to perform linear feedback shift register function
US6802026B1 (en) 2001-05-15 2004-10-05 Xilinx, Inc. Parameterizable and reconfigurable debugger core generators
US6976239B1 (en) * 2001-06-12 2005-12-13 Altera Corporation Methods and apparatus for implementing parameterizable processors and peripherals
US7657877B2 (en) * 2001-06-20 2010-02-02 Pact Xpp Technologies Ag Method for processing data
JP3580785B2 (ja) 2001-06-29 2004-10-27 株式会社半導体理工学研究センター ルックアップテーブル、ルックアップテーブルを備えるプログラマブル論理回路装置、および、ルックアップテーブルの構成方法
US7043416B1 (en) 2001-07-27 2006-05-09 Lsi Logic Corporation System and method for state restoration in a diagnostic module for a high-speed microprocessor
US7383421B2 (en) 2002-12-05 2008-06-03 Brightscale, Inc. Cellular engine for a data processing system
US7036114B2 (en) 2001-08-17 2006-04-25 Sun Microsystems, Inc. Method and apparatus for cycle-based computation
US6868476B2 (en) 2001-08-27 2005-03-15 Intel Corporation Software controlled content addressable memory in a general purpose execution datapath
US6874108B1 (en) 2001-08-27 2005-03-29 Agere Systems Inc. Fault tolerant operation of reconfigurable devices utilizing an adjustable system clock
US7216204B2 (en) 2001-08-27 2007-05-08 Intel Corporation Mechanism for providing early coherency detection to enable high performance memory updates in a latency sensitive multithreaded environment
US20030056091A1 (en) 2001-09-14 2003-03-20 Greenberg Craig B. Method of scheduling in a reconfigurable hardware architecture with multiple hardware configurations
US7472230B2 (en) 2001-09-14 2008-12-30 Hewlett-Packard Development Company, L.P. Preemptive write back controller
US20030055861A1 (en) 2001-09-18 2003-03-20 Lai Gary N. Multipler unit in reconfigurable chip
US20030052711A1 (en) 2001-09-19 2003-03-20 Taylor Bradley L. Despreader/correlator unit for use in reconfigurable chip
US6854073B2 (en) 2001-09-25 2005-02-08 International Business Machines Corporation Debugger program time monitor
US6625631B2 (en) 2001-09-28 2003-09-23 Intel Corporation Component reduction in montgomery multiplier processing element
US6798239B2 (en) 2001-09-28 2004-09-28 Xilinx, Inc. Programmable gate array having interconnecting logic to support embedded fixed logic circuitry
US7000161B1 (en) * 2001-10-15 2006-02-14 Altera Corporation Reconfigurable programmable logic system with configuration recovery mode
US20060264508A1 (en) 2001-10-16 2006-11-23 Stone Richard A Modulation of ocular growth and myopia by gaba drugs
US20030123579A1 (en) 2001-11-16 2003-07-03 Saeid Safavi Viterbi convolutional coding method and apparatus
US6886092B1 (en) 2001-11-19 2005-04-26 Xilinx, Inc. Custom code processing in PGA by providing instructions from fixed logic processor portion to programmable dedicated processor portion
US6668237B1 (en) 2002-01-17 2003-12-23 Xilinx, Inc. Run-time reconfigurable testing of programmable logic devices
US20030154349A1 (en) 2002-01-24 2003-08-14 Berg Stefan G. Program-directed cache prefetching for media processors
US6476634B1 (en) 2002-02-01 2002-11-05 Xilinx, Inc. ALU implementation in single PLD logic cell
DE10204044A1 (de) 2002-02-01 2003-08-14 Tridonicatco Gmbh & Co Kg Elektronisches Vorschaltgerät für Gasentladungslampe
US6961924B2 (en) 2002-05-21 2005-11-01 International Business Machines Corporation Displaying variable usage while debugging
US6976131B2 (en) * 2002-08-23 2005-12-13 Intel Corporation Method and apparatus for shared cache coherency for a chip multiprocessor or multiprocessor system
US7167954B2 (en) 2002-09-09 2007-01-23 Broadcom Corporation System and method for caching
US6803787B1 (en) 2002-09-25 2004-10-12 Lattice Semiconductor Corp. State machine in a programmable logic device
US7873811B1 (en) * 2003-03-10 2011-01-18 The United States Of America As Represented By The United States Department Of Energy Polymorphous computing fabric
EP1634182A2 (de) 2003-06-17 2006-03-15 PACT XPP Technologies AG Datenverarbeitungseinrichtung und verfahren
US7412581B2 (en) 2003-10-28 2008-08-12 Renesas Technology America, Inc. Processor for virtual machines and method therefor
US7870182B2 (en) 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7840627B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Digital signal processing circuit having input register blocks
US7567997B2 (en) 2003-12-29 2009-07-28 Xilinx, Inc. Applications of cascading DSP slices
US8495122B2 (en) 2003-12-29 2013-07-23 Xilinx, Inc. Programmable device with dynamic DSP architecture
US7472155B2 (en) 2003-12-29 2008-12-30 Xilinx, Inc. Programmable logic device with cascading DSP slices
US7038952B1 (en) 2004-05-04 2006-05-02 Xilinx, Inc. Block RAM with embedded FIFO buffer
US7759968B1 (en) 2006-09-27 2010-07-20 Xilinx, Inc. Method of and system for verifying configuration data
US7971051B2 (en) 2007-09-27 2011-06-28 Fujitsu Limited FPGA configuration protection and control using hardware watchdog timer
US20090193384A1 (en) 2008-01-25 2009-07-30 Mihai Sima Shift-enabled reconfigurable device
JP2010277303A (ja) 2009-05-28 2010-12-09 Renesas Electronics Corp 半導体装置及び異常検出方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007158722A (ja) * 2005-12-05 2007-06-21 Canon Inc 画像処理装置及びその制御方法、プログラム、記憶媒体

Also Published As

Publication number Publication date
AU2003286131A8 (en) 2004-03-19
US20070050603A1 (en) 2007-03-01
WO2004015568A2 (en) 2004-02-19
AU2003286131A1 (en) 2004-03-19
WO2004015568A3 (en) 2004-10-07
EP1535190A2 (de) 2005-06-01
EP1535190B1 (de) 2012-06-20
US8156284B2 (en) 2012-04-10
WO2004021176A3 (de) 2005-02-03
AU2003260323A8 (en) 2004-02-25
AU2003260323A1 (en) 2004-02-25
JP2005535055A (ja) 2005-11-17

Similar Documents

Publication Publication Date Title
WO2004021176A2 (de) Verfahren und vorrichtung zur datenverarbeitung
EP0948842B1 (de) VERFAHREN ZUM SELBSTÄNDIGEN DYNAMISCHEN UMLADEN VON DATENFLUSSPROZESSOREN (DFPs) SOWIE BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALEN PROGRAMMIERBAREN ZELLSTRUKTUREN (FPGAs, DPGAs, o.dgl.)
DE4416881C2 (de) Verfahren zum Betrieb einer Datenverarbeitungseinrichtung
US8281265B2 (en) Method and device for processing data
EP1057117B1 (de) VERFAHREN ZUM HIERARCHISCHEN CACHEN VON KONFIGURATIONSDATEN VON DATENFLUSSPROZESSOREN UND BAUSTEINEN MIT ZWEI- ODER MEHRDIMENSIONALER PROGRAMMIERBARER ZELLSTRUKTUR (FPGAs, DPGAs, o.dgl.)
EP1228440B1 (de) Sequenz-partitionierung auf zellstrukturen
DE69827589T2 (de) Konfigurierbare Verarbeitungsanordnung und Verfahren zur Benutzung dieser Anordnung, um eine Zentraleinheit aufzubauen
DE60213601T2 (de) Programmierbare hardwarelogik, welche ein programmierbares interface und eine zentrale recheneinheit beinhaltet
EP1402382B1 (de) Verfahren zur bearbeitung von daten
US7822897B2 (en) System and methods for connecting multiple functional components
WO2004038599A1 (de) Rekonfigurierbare sequenzerstruktur
WO2002013000A2 (de) Pipeline ct-protokolle und -kommunikation
DE19722365A1 (de) Rekonfigurierbares Rechenbauelement
EP1329816A2 (de) Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
DE102009053578A1 (de) Verfahren und Vorrichtung zum Durchführen eines parallelen Routens unter Verwendung einer Multithreaded-Routing-Prozedur
EP1599794A2 (de) Prozessor mit verschiedenartigen steuerwerken für gemeinsam genutzte ressourcen
WO2002071196A2 (de) Verfahren und vorrichtung zu datenbe- und/oder verarbeitung
EP1611528A2 (de) Verfahren und vorrichtung für die datenverarbeitung
EP1537501A2 (de) Verfahren und vorrichtung zur datenverarbeitung
DE10347975B4 (de) Einrichtung der programmierbaren Logik
EP1789889B1 (de) Rechnereinrichtung mit rekonfigurierbarer architektur zur aufnahme eines globalen zellularen automaten
DE10243322B4 (de) Analoge rekonfigurierbare Datenverarbeitungseinrichtung
DE4447706B4 (de) Partiell zur Laufzeit rekonfigurierbarer Datenflussprozessor
EP1506496A2 (de) Rekonfigurierbare digitale logikeinheit
DE4447707B4 (de) Videointerface mit zur Laufzeit rekonfigurierbarer Schaltlogik

Legal Events

Date Code Title Description
AK Designated states

Kind code of ref document: A2

Designated state(s): AE AG AL AM AT AU AZ BA BB BG BR BY BZ CA CH CN CO CR CU CZ DE DK DM DZ EC EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX MZ NO NZ OM PH PL PT RO RU SC SD SE SG SK SL TJ TM TN TR TT TZ UA UG US UZ VC VN YU ZA ZM ZW

AL Designated countries for regional patents

Kind code of ref document: A2

Designated state(s): MZ SD SL SZ AM AZ BY KG KZ MD RU TJ TM AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HU IE IT LU MC NL PT RO SE SI SK TR BF BJ CF CG CI CM GA GN GQ GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
WWE Wipo information: entry into national phase

Ref document number: 2003776856

Country of ref document: EP

WWP Wipo information: published in national office

Ref document number: 2003776856

Country of ref document: EP

WWE Wipo information: entry into national phase

Ref document number: 2006248317

Country of ref document: US

Ref document number: 10523763

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: JP

WWW Wipo information: withdrawn in national office

Country of ref document: JP

WWP Wipo information: published in national office

Ref document number: 10523763

Country of ref document: US