Patent EA-003407-B1 (EA)
Title: METHOD FOR CONFIGURING DATA FLOW PROCESSORS AND MODULES WITH A TWO- OR MULTIDIMENSIONAL PROGRAMMABLE CELL STRUCTURE (FPGAs, DPGAs OR SIMILAR) WITHOUT PRODUCING DEADLOCKS
Inventor: VORBACH MARTIN
IPC: G06F12/084
Filed: 1999-02-25
Abstract: 1. Method of deadlock-free, automatic configuration and reconfiguration of modules having a two- or multidimensional cell arrangement (e.g. FPGAs, DPGAs, DFPs or the like), characterized in that a unit for controlling the configuration and reconfiguration manages a set of associated configurable elements, the set being a subset or the total set of all configurable elements, and the management takes place as follows: 1.1 reconfiguration requests from the associated configurable elements are sent to the unit; 1.2 the unit processes the requests in that a) the instantaneous status of the configurable elements is saved; b) the configuration data still to be loaded of the existing previous requests is loaded, if possible, from a buffer memory (FILMO) into the configurable elements; c) the reconfiguration request is converted to the address of the configuration data to be loaded in the memory of the unit, if the configuration data exists it the memory of the unit; d) the configuration data with the respective ID is requested from a higher level unit and loaded if the configuration data does not exist in the memory of the unit; 1.3 the unit processes the configuration data of the command sequence by a) loading the configuration dace into the configurable elements if the configurable elements can accept the data; b) loading the configuration data of the configurable elements that cannot accept the data into the buffer memory (FILMO) in chronological order; 1.4 after the configuration data has been fully processed, new requests are accepted again, the configuration data still to be loaded of the existing previous requests being loaded from a buffer memory (FILMO) into the configurable elements until a new request occurs. 2. Method according to Claim 1. characterized in that configuration data that is not accepted by the configurable elements is written to the end of the buffer memory (FILMO). 3. Method according to Claims 1 and 2, characterized in that configuration data to be written into the configurable elements is read from the beginning to the end of the buffer memory, the buffer memory always being run through completely. 4. Method according to the Claims 1 through 3 characterized in that configuration data written into the configurable elements at the beginning of the buffer memory is deleted in the buffer memory, i.e., the read pointer is set behind the written data. 5. Method according to Claims 1 through 4, characterized in that configuration data written into the configurable elements from the middle of the buffer memory a) is either marked as deleted in the buffer memory and thus skipped during a new read run, b) or is deleted in the buffer memory (FILMO) in that the still existing configuration data is shifted from the memory location to be deleted to the beginning or to the end of the buffer memory (FILMO) so that the deleted memory location having the existing configuration data is filled and the pointers are adapted to the beginning or the end of the memory accordingly. 6. Method according to Claims 1 through 5, characterized in that a state machine (garbage collector) manages the memory (CTR) of the unit so that no memory gaps are created by shifting memory gaps with existing configuration data from the beginning of the memory gap to the end of the memory (CTR) so that the deleted memory location having the existing configuration data is filled and the pointer is moved to the end of the memory and the translation of the ID is adapted to the shifted memory locations accordingly. 7. Method according to Claims 1 through 6, characterized in that requests received at the unit are translated into a unique identifier (ID) of a configuration routine, and the ID points to a memory location in the memory (CTR). 8. Method according to Claims 1 through 7, characterized in that configuration data causes additional configuration data to be loaded (EXECUTE). 9. Method according to Claims 1 through 8, characterized in that the units are hierarchically arranged in a tree structure. 10. Method according to Claims 1 through 9, characterized in that the highest unit in the tree structure shares a common memory with a higher level computer and the higher level computer controls the sequences in the module via communication with the higher level unit. 11. Method according to Claims 1 through 10, characterized in that units of the middle and highest hierarchical levels respond to requests from IDs in addition to conventional requests (triggers), translation of the ID into the address of the memory location of the referenced configuration routine taking place and translation of a trigger into are ID being omitted. 12. Method according to Claims 1 through 11, characterized in that configuration data causes other configuration data to be executed in the other units (TRIGGER) upon request to another the requests a) being transmitted as a broadcast to all other units; b) being only transmitted to the immediately higher level unit; c) being only transmitted to the immediately lower level unit(s); d) being transmitted to a certain addressed unit. 13. Method according to Claim 1, characterized in that certain configuration data of the configurable elements which cannot accept data is loaded into the buffer memory (FILMO) and all subsequent configuration data of a command sequence is also loaded into the buffer memory. 14. Method according to Claim 1, characterized in that certain configuration data of the configurable elements is only loaded into the configurable elements it all of the previous configuration data of a command sequence could be goaded into the configurable elements. 15. Method according to Claims 1, 13, and 14, characterized in that a fixed predefined configuration sequence is maintained within the command sequence by the use of the method according to claim 13 and/or Claim 14. 16. Method according to Claim 1, characterized in that the reconfiguration request received from the associated elements is translated into a unique identification number of the respective command sequence. 17. Method according to Claims 1 and 16, characterized in that a reconfiguration request not referenced during translation into an identification number is recognized, marked as not referenced, and processed. 18. Method according to Claim 1 and 16, characterized in that the identification numbers are translated via a lookup table. 19. Method according to Claim 1, characterized in that the reconfiguration request received from the associated elements is already provided with a unique identification number. 20. Method according to Claims 1 and 16 trough 19, characterized in that the unique identification number is translated into the address of the respective command sequence in the memory. 21. Method according to Claims 1 and 20, characterized in that if no valid address exists, the corresponding command sequence is loaded into the memory and the address reference is formed. 22. Method according to Claims 1 and 20, characterized in that the translation of the identification number to the address takes place via a lookup table. 23. Method according to Claims 1 through 22, characterized in that the buffer memory is not designed to separate memory, it corresponds exactly with the command sequence, non-configurable configuration words being marked as such, so that when the command sequence is called up again only the marked configuration words are processed again. 24. Method according to Claims 1 and 23, characterized in that the command sequences are linked via pointers so that the time sequence in loading the previously non-configurable configuration words into the configurable elements is maintained. 25. Method according to Claims 1 and 23, characterized in that the command sequences are fully linked via pointers, so that a garbage collector runs over all the command sequences using the links and overwrites a command sequence to be removed with the subsequent command sequence, removing it from the pointer link.