US20150135191A1 - Compiler System, Method and Software for a Resilient Integrated Circuit Architecture - Google Patents
Compiler System, Method and Software for a Resilient Integrated Circuit Architecture Download PDFInfo
- Publication number
- US20150135191A1 US20150135191A1 US14/464,520 US201414464520A US2015135191A1 US 20150135191 A1 US20150135191 A1 US 20150135191A1 US 201414464520 A US201414464520 A US 201414464520A US 2015135191 A1 US2015135191 A1 US 2015135191A1
- Authority
- US
- United States
- Prior art keywords
- elements
- data
- composite circuit
- communication
- task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/173—Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
- G06F15/17356—Indirect interconnection networks
- G06F15/17362—Indirect interconnection networks hierarchical topologies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7867—Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
- G06F30/394—Routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/003—Modifications for increasing the reliability for protection
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/007—Fail-safe circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
- H03K19/17748—Structural details of configuration resources
- H03K19/17764—Structural details of configuration resources for reliability
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Definitions
- the present invention relates, in general, to compilers for integrated circuits and, more particularly, to a compiler for integrated circuitry having distributed and configurable circuit elements, distributed communication circuit elements, and distributed control circuit elements, for transferable functionality, fault tolerance and resilience.
- ICs integrated circuits
- FPGAs field programmable gate arrays
- the gate array is also coupled to one or more microprocessor cores, for the FPGA components to provide configurable, application-specific acceleration of selected computations.
- the logic elements in an FPGA are typically very “fine-grained”, as gate arrays which can be connected through data inputs and outputs (“I/O”) to provide a more advanced function such as addition, subtraction or comparison, without separate hard-wired, application-specific components directly providing such advanced functions.
- I/O data inputs and outputs
- the process for configuring the gate arrays of FPGAs is comparatively slow, typically through a serial configuration bus, so that FPGAs generally have not been capable of real-time re-configuration for immediate changes in functionality.
- configurable ICs have involved large-scale (or “coarse-grained” configurable logic elements which are capable of significant functionality, such as multimedia processing, arithmetic processing, and communication functionality. While these large-scale configurable logic elements provide extremely capable acceleration, each group of configurable logic elements is typically different and requires separate programming to carry out its functions. In addition, such large-scale configurable logic elements are not translatable to other functions, exhibiting similar constraints of application-specific ICs (“ASICs”).
- ASICs application-specific ICs
- Configurable capabilities have also been added to microprocessor, ASIC and memory ICs. For example, in memory ICs, extra or redundant rows and columns are fabricated; when subsequent testing may reveal that selected rows and columns have defects, those affected IC regions are disabled, with the balance of the memory IC being useable potentially and, with the redundancy, may still meet the memory capacity specification. In other circumstances, some amount of configurability may be added to correct for design errors and other defects after the IC has been fabricated, or to allow modification of inputs and outputs, such as for configurable I/O and configurable data path widths.
- such FPGAs, ASICs, processors, and other configurable logic do not exhibit resiliency. For example, if a portion of the IC becomes defective during operation, the entire IC fails instantly, losing all functionality. While the IC may be taken off line or removed, diagnosed, and depending upon the damage, possibly reconfigured, such ICs are not capable of real-time reconfiguration and transferring of functionality to unaffected portions of the IC.
- eFuse utilizes electromigration to create microscopic electrical fuses which disable selected or defective portions of the IC, with software utilized to open or close gates to re-route chip logic to the remaining good portions of the IC, such as to correct design flaws, fabrication defects, and manage power consumption.
- the eFuse technology can disable defective memory rows and columns, and eFuse software can change memory addresses so that data will be stored in the non-defective portions of the memory.
- None of these technologies addresses the increasing number of defects which are now arising in sub-100 nm IC fabrication. More particularly, as IC feature size continues to decrease below 90 nm, there are increasing levels of defects and decreased IC yields. In addition, while an IC initially may be sufficiently free of defects to operate for its intended use, the smaller feature size also increases the probability of IC failure during operation, such as due to tunneling and electromigration effects.
- a need remains for an integrated circuit architecture which is significantly resilient and robust despite fabrication or usage defects which can affect any components, without the expense of otherwise unused redundancy.
- Such an IC should provide for ongoing adaptation, such that when a defect arises, functionality may be transferred to an unaffected region in real-time or near-real time.
- Such technology should provide for configuration (programming or other software) for the IC which allows such transferable functionality, without requiring the entire program to be transferred to a completely redundant processor.
- a need remains for a compiler which can convert an algorithm into a form suitable for assignment to and execution by the resilient integrated circuit.
- the exemplary embodiments of the present invention provide a compiler for an integrated circuit architecture which is capable of significant resiliency, without otherwise unused redundancy.
- the exemplary IC embodiment may be adapted on an ongoing basis, as may be necessary in the event of a defect, or as may be desirable for incorporation of a new program or function. For example, in the event a defect arises, functionality may be transferred to an unaffected region in real-time or near-real time.
- the exemplary architecture and software for the IC also allows such transferable functionality, without requiring the entire program to be transferred to a completely redundant processor or otherwise unused computational block.
- the exemplary IC embodiments provide for a graceful degradation and notification with increasing defects or problems, which may occur during use (in addition to fabrication), rather than a catastrophic failure.
- an apparatus which comprises a plurality of composite circuit elements, a plurality of communication elements coupled to the plurality of composite circuit elements; and a state machine element coupled to the plurality of composite circuit elements and to the plurality of communication elements.
- Each composite circuit element comprises a corresponding element interface and a corresponding circuit element of a plurality of circuit element types, with each composite circuit element having at least one input and at least one output, and with a first composite circuit element of the plurality of composite circuit elements having a first circuit element type of the plurality of circuit element types and a second composite circuit element of the plurality of composite circuit elements having a second circuit element type of the plurality of circuit element types.
- the state machine element is adapted to assign a first action to the first composite circuit element, to assign a second action to the second composite circuit element, and to provide for a first virtual data link through a selected communication element, of the plurality of communication elements, from the at least one output of the first composite circuit element to the at least one input of the second composite circuit element.
- the plurality of circuit element types comprises at least one of the following circuit element types: a plurality of configurable element types, a memory element type, a plurality of communication element types; and a plurality of non-configurable element types.
- the first circuit element type is a first configurable element type of the plurality of configurable element types
- the second circuit element type is a second configurable element type of the plurality of configurable element types
- the state machine element is further adapted to assign the first action as a first configuration of the first composite circuit element and assign the second action as a second configuration of the second composite circuit element.
- the state machine element may be further adapted to obtain the first configuration and first configurable element type from a first symbolic netlist element and to obtain the second configuration and second configurable circuit element type from a second symbolic netlist element during a run-time binding of the first action and the second action.
- the first symbolic netlist element further comprises a pointer designating the first virtual data link as a data communication to the at least one input of the second composite circuit element
- the second symbolic netlist element may further comprise a pointer designating the virtual data link as a data communication from the at least one output of the first composite circuit element.
- the state machine element may be further adapted to assign the first action to the first composite circuit element and assign the second action to the second composite circuit element following a determination that both the first composite circuit element and the second composite circuit element are operating properly.
- the operational determination is at least one of the following determinations: a periodic diagnostic performed by at least one composite circuit element of the plurality of composite circuit elements; a background diagnostic performed as a selected context of at least one composite circuit element of the plurality of composite circuit elements; or a comparison test performed by a plurality of composite circuit elements of the same circuit element type.
- the state machine element is further adapted, in response to a detected fault of the first composite circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements, the third composite circuit element having a circuit element of the first circuit element type, and the state machine element further adapted to provide for a second virtual data link through a communication element, of the plurality of communication elements, from the at least one output of the third composite circuit element to the at least one input of the second composite circuit element.
- the state machine element is further adapted, in response to a detected fault of the first circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements, the third composite circuit element having a circuit element of a third circuit element type, and the state machine element further adapted to provide for a third virtual data link through a communication element, of the plurality of communication elements, from the at least one output of the third composite circuit element to the at least one input of the second composite circuit element.
- the state machine element is further adapted to use a stored transformation table having a reference to the third composite circuit element for transfer of the first action.
- a compilation method for an integrated circuit having a plurality of types of computational elements and having a plurality of communication elements.
- the exemplary compilation method comprises: converting an algorithm into a plurality of tasks; assigning a task identifier to each task of the plurality of tasks; determining an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; assigning a first action identifier to a first action of the plurality of actions; mapping the first action to a first type of computational element of the plurality of types of computational elements; determining a data input linkage or a data output linkage for the first action; and generating a compilation designating the first type of computational element and the data input linkage or the data output linkage for the first action.
- the data input linkage is data source and wherein the data output linkage is a data destination.
- the data input linkage or data output linkage is identified by a corresponding task identifier and a corresponding action identifier.
- the compilation further comprises a first task identifier and a first action identifier, and may further comprise a second task identifier and a second action identifier which identify the input linkage or the output linkage for the first action.
- the compilation further comprises a pointer which identifies the data input linkage or the data output linkage for the first action.
- the compilation is a symbolic netlist comprising the first type of computational element, a first task identifier, a first action identifier, a second task identifier, and a second action identifier, wherein the second task identifier and the second action identifier correspond to the data input linkage or to the data output linkage for the first action.
- the exemplary compilation method may also determine a proximity constraint for the first action or another type of a timing constraint for the first action.
- the first action corresponds to the function of the first type of computational element, and the first action identifier differentiates the first action from other actions of the plurality of actions of the first task.
- the compilation does not assign the first task and first action to a specific instance of the first type of computational element in the integrated circuit.
- the plurality of actions may comprise at least two of the following: signed addition, unsigned addition, multiplication, bit reordering, barrel shifting.
- the plurality of types of computational elements may comprise at least two of the following types of computational elements: an arithmetic logic unit, a multiplier, an adder, a barrel shifter, a bit re-ordering element, a processor.
- a computing system for compiling an algorithm for performance by an integrated circuit, with the integrated circuit having a plurality of types of computational elements and having a plurality of communication elements.
- the exemplary system comprises: a memory adapted to store the algorithm; and a processor coupled to the memory, with the processor being adapted to perform the compiling method described above.
- the processor is adapted to convert the algorithm into a plurality of tasks; to assign a task identifier to each task of the plurality of tasks; to determine an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; to assign a first action identifier to a first action of the plurality of actions; to map the first action to a first type of computational element of the plurality of types of computational elements; to determine a data input linkage or a data output linkage for the first action; and to generate a compilation designating the first type of computational element and the input linkage or the output linkage for the first action.
- a compilation method comprises: converting an algorithm into a plurality of tasks; assigning a task identifier to each task of the plurality of tasks; determining a first action, of a plurality of actions, corresponding to a first task of the plurality of tasks; assigning a first action identifier to the first action; mapping the first action to a first type of computational element of the plurality of types of computational elements; determining a second action, of a plurality of actions, corresponding to a second task of the plurality of tasks; assigning a second action identifier to the second action; mapping the second action to a second type of computational element of the plurality of types of computational elements; determining a data input linkage or a data output linkage between the first action and the second action; and generating a compilation designating the first type of computational element, the second type of computational element, and the data input linkage or the data output linkage between the first and second types of computational elements.
- a computer readable medium is encoded with a computer program having instructions for compiling an algorithm for an integrated circuit, with the computer program instructions comprising: a first program construct of a plurality of program constructs adapted to convert the algorithm into a plurality of tasks; a second program construct of the plurality of program constructs adapted to assign a task identifier to each task of the plurality of tasks; a third program construct of the plurality of program constructs adapted to determine an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; a fourth program construct of the plurality of program constructs adapted to assign a first action identifier to a first action of the plurality of actions; a fifth program construct of the plurality of program constructs adapted to map the first action to a first type of computational element of the plurality of types of computational elements; a sixth program construct of the plurality of program constructs adapted to determine a data input linkage or a data output linkage for the first action; and
- Another exemplary computing system embodiment comprises: a memory adapted to store the algorithm; and a processor coupled to the memory, the processor adapted to convert the algorithm into a plurality of tasks; to assign a task identifier to each task of the plurality of tasks; to determine an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; to assign a first action identifier to a first action of the plurality of actions; to map the first action to a first type of computational element of the plurality of types of computational elements; to determine a second action, of a plurality of actions, corresponding to a second task of the plurality of tasks; to assign a second action identifier to the second action; to map the second action to a second type of computational element of the plurality of types of computational elements; to determine a data input linkage or a data output linkage between the first action and the second action; and to generate a compilation designating the first type of computational element, a first task identifier, a first action identifier, the
- the plurality of composite circuit elements also may be adapted to store periodically a then current state and, in response to a detected fault, to retrieve the stored state and recommence operation using the stored state.
- each corresponding element interface comprises: a first memory coupled to the corresponding circuit element, the first memory adapted to store a plurality of configurations as corresponding contexts; an element controller coupled to the corresponding circuit element; and a second memory coupled to the corresponding circuit element, the second memory adapted to provide a plurality of input queues for data input to the corresponding circuit element.
- Each corresponding context defines a configuration of the corresponding circuit element, and either one or more data input sources or one or more data output destinations.
- the element interface may further comprise a third memory coupled to the circuit element, the third memory adapted to provide a plurality of output queues for data output from the circuit element. Alternatively, the element interface may include the third memory for output queues, without including the second memory for input queues.
- the element controller is adapted, for a selected context of the plurality of contexts, to direct an execution of the selected context by the circuit element when a selected input queue corresponding to the selected context has input data, when a selected output queue corresponding to the selected context has capacity to store output data, and when a status bit corresponding to the selected context is set for execution.
- the element controller may be further adapted to store a current state of a partial execution of a first context in the first memory, execute a second context, and retrieve the current state and resume execution of the first context.
- the element controller may be further adapted to arbitrate among a plurality of contexts which are ready for execution and to select a corresponding context for execution as a result of the arbitration.
- the arbitration implements at least one of the following arbitration methods: a round-robin, a priority, a most recently executed, a least recently executed, or a scheduled execution.
- each communication element of the plurality of communication elements further comprises a corresponding element interface and a corresponding communication circuit element
- the state machine element further comprises a corresponding element interface and a corresponding state machine circuit element
- the plurality of communication elements further comprise: a plurality of first communication elements, the plurality of first communication elements adapted both to route at least one first data word and to switch at least one second data word; and a full interconnect element coupled to the plurality of composite circuit elements and to the plurality of first communication elements, the full interconnect element adapted to couple any output of a composite circuit element of the plurality of composite circuit elements to any input of another composite circuit element of the plurality of composite circuit elements or to the plurality of first communication elements.
- the full interconnect element may be distributed among a plurality of switches, pass transistors, multiplexers or demultiplexers.
- the full interconnect element is a crossbar switch.
- the full interconnect element may be adapted to provide at least one of the following physical data links: a plurality of one-to-one input and output data links, a one-to-many broadcast data link, a many-to-one data link.
- the state machine element may provide for the first virtual data link through either a selected first communication element of the plurality of first communication elements or through the full interconnect element.
- a selected communication element may be further adapted to determine from the first virtual data link at least one first physical data link, of a plurality of physical data links, from the at least one output of the first composite circuit element to the at least one input of the second composite circuit element.
- the selected communication element is further adapted to create the plurality of physical data links at a selected time or a selected clock cycle using a routing table stored in a corresponding memory.
- the plurality of communication elements further comprise a plurality of second communication elements which are adapted to route or switch at least one third data word between a first array of the plurality of composite circuit elements and a second array of the plurality of composite circuit elements.
- the plurality of communication elements may also comprise an intercluster queue adapted to buffer at least one third data word from a first array of the plurality of composite circuit elements and transfer the at least one third data word to an adjacent second array of the plurality of composite circuit elements
- Exemplary embodiments may also include a message manager circuit coupled to the state machine element, the message manager circuit adapted to provide a communication interface to an external bus or an external memory.
- the message manager circuit may also provide a uniform address space for a distributed plurality of memory composite circuit elements.
- the plurality of circuit element types may comprise any of the following circuit element types: a configurable arithmetic logic unit, a configurable multiplier, a configurable bit reordering element a configurable multiply and accumulate element, a configurable Galois multiplier, a configurable barrel shifter, a configurable look-up table, a programmable controller, a configurable controller, and a configurable plurality of arithmetic logic units.
- the state machine element may be coupled to the plurality of composite circuit elements either directly or through at least one communication element of the plurality of communication elements.
- the state machine element is an external controller or external processor coupled to the plurality of composite circuit elements through at least one communication element of the plurality of communication elements.
- the state machine element further comprises: a finite state machine circuit and a memory adapted to store state information.
- another operating mode is provided.
- the state machine element provides for a first physical data link through the selected communication element from the at least one output of the first composite circuit element to the at least one input of the second composite circuit element, and wherein the state machine element is further adapted to provide for execution of the first action and the second action.
- an inventive apparatus comprises: (1) a plurality of circuit arrays, each circuit array of the plurality of circuit arrays comprising: (a) a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, each composite circuit element having at least one input and at least one output, the plurality of circuit element types comprising a plurality of configurable element types; (b) a full interconnect element coupled to the plurality of composite circuit elements, the full interconnect element adapted to couple any output of a first composite circuit element of the plurality of composite circuit elements to any input of a second composite circuit element of the plurality of composite circuit elements; (c) a plurality of first communication elements coupled to the full interconnect element; (d) a state machine element coupled to the plurality of composite circuit elements, to the full interconnect element, and to the plurality of first communication elements; and (2) an interconnect coupled to the plurality of circuit arrays, the interconnect comprising a plurality of second communication elements coupled to the pluralit
- an inventive apparatus comprises a plurality of circuit arrays, at least two circuit arrays of the plurality of circuit arrays comprising: (a) a plurality of configurable composite circuit elements, each composite circuit element comprising an element interface and a configurable circuit element of a plurality of configurable circuit element types, each composite circuit element having a plurality of inputs and a plurality of outputs; (b) an interconnect element coupled to the plurality of configurable composite circuit elements, the interconnect element adapted to couple an output of a first configurable composite circuit element of the plurality of configurable composite circuit elements to an input of a second configurable composite circuit element of the plurality of configurable composite circuit elements; (c) a plurality of first communication elements coupled to the interconnect element; and (d) a state machine element coupled to the plurality of configurable composite circuit elements, to the full interconnect element, and to the plurality of first communication elements, the state machine element adapted to assign a first action to a first configurable composite circuit element of a first circuit element type of
- an inventive integrated circuit comprises: (1) a plurality of circuit arrays, with each circuit array of the plurality of circuit arrays comprising: (a) a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, each composite circuit element having at least one input and at least one output, the plurality of circuit element types comprising a plurality of configurable element types; (b) a full interconnect element coupled to the plurality of composite circuit elements, the full interconnect element adapted to couple any output of a first composite circuit element of the plurality of composite circuit elements to any input of a second composite circuit element of the plurality of composite circuit elements; (c) a plurality of first communication elements coupled to the full interconnect element; (d) a state machine element coupled to the plurality of composite circuit elements, to the full interconnect element, and to the plurality of first communication elements, the state machine element adapted to assign a first action to a first composite circuit element of a first circuit element type of the plurality
- an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, each composite circuit element having an input and an output; and a state machine element coupled to the plurality of composite circuit elements, the state machine element adapted to assign a first function to a first composite circuit element of a first element type of the plurality of element types, to assign a second function to a second composite circuit element of a second element type of the plurality of element types, and to provide a first data link from the output of the first composite circuit element to the input of the second composite circuit element.
- an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising a corresponding element interface and a corresponding circuit element of a plurality of circuit element types, a first composite circuit element of the plurality of composite circuit elements having a first circuit element type of the plurality of circuit element types, a second composite circuit element of the plurality of composite circuit elements having a second circuit element type of the plurality of circuit element types; a plurality of communication elements coupled to the plurality of composite circuit elements; and a state machine element coupled to the plurality of communication elements, the state machine element adapted during run time to assign a first action to the first composite circuit element, to assign a second action to the second composite circuit element, and to provide for a first data link between the first composite circuit element and the second composite circuit element.
- an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types; and a state machine element coupled to the plurality of composite circuit elements, the state machine element adapted to assign a first function to a first composite circuit element, to assign a second function to a second composite circuit element, and to provide a first data link between the first composite circuit element and the second composite circuit element; the state machine element further adapted to, in response to an unavailability of the first composite circuit element, to assign the first function to a third composite circuit element of the plurality of composite circuit elements and to provide for a second data link between the third composite circuit element and the second composite circuit element.
- an inventive apparatus comprises: a plurality of communication elements; a plurality of composite circuit elements coupled to the plurality of communication elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, a first composite circuit element of the plurality of composite circuit elements having an assigned first action, a second composite circuit element of the plurality of composite circuit elements having an assigned second action, the first composite circuit element having a first data link to the second composite circuit element; and a state machine element coupled to the plurality of communication elements, the state machine element adapted to, in response to an unavailability of the first composite circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements and to provide for a second data link between the third composite circuit element and the second composite circuit element.
- the first composite circuit element may be unavailable due to a detected fault.
- the fault may be detected by at least one of the following operational determinations: a periodic diagnostic performed by at least one composite circuit element of the plurality of composite circuit elements; a background diagnostic performed as a selected context of at least one composite circuit element of the plurality of composite circuit elements; or a comparison test performed by a plurality of composite circuit elements of the same circuit element type.
- the state machine element is further adapted to discontinue all activity of the first composite circuit element and to designate the first composite circuit element as unavailable in a stored availability table or map.
- the first composite circuit element may be unavailable due to an assignment by the state machine element of a third action having a higher priority than the first action.
- the first composite circuit element and the third composite circuit element each have a first configurable element type of the plurality of configurable element types
- the second composite circuit element has a second configurable element type of the plurality of configurable element types
- the state machine element is further adapted to assign the first action as a first configuration of the third composite circuit element.
- the state machine element may be further adapted to obtain the first configuration and first configurable element type from a first symbolic netlist element.
- the first symbolic netlist element may further comprise a symbolic pointer designating the second data link as a virtual data communication between the third composite circuit element and the second composite circuit element
- the first composite circuit element has a first configurable element type of the plurality of configurable element types
- the second composite circuit element has a second configurable element type of the plurality of configurable element types
- the third composite circuit element has a third configurable element type of the plurality of configurable element types
- the state machine element is further adapted to assign the first action as a first configuration of the third composite circuit element.
- the state machine element may be further adapted to use a stored transformation table having a reference to the third composite circuit element for transfer of the first action.
- an inventive apparatus comprises: a plurality of first communication elements; an interconnect element coupled to the plurality of first communication elements; a plurality of configurable composite circuit elements coupled to the plurality of first communication elements and to the interconnect element, each configurable composite circuit element comprising an element interface and a configurable circuit element of a plurality of configurable circuit element types, each composite circuit element having at least one input and at least one output, a first configurable composite circuit element of the plurality of configurable composite circuit elements having a first action, a second configurable composite circuit element of the plurality of configurable composite circuit elements having a second action, the at least one output of the first configurable composite circuit element having a first data link to the at least one input of the second configurable composite circuit element through the interconnect element or a selected communication element of the plurality of communication elements; and a state machine element coupled to the plurality of configurable composite circuit elements, to the interconnect element and to the plurality of communication elements, the state machine element adapted to, in response to a detected fault of the first
- the state machine element when the first configurable composite circuit element and the third configurable composite circuit element have the same configurable circuit element type, the state machine element is further adapted to transfer at least one configuration of the first configurable composite circuit element to the third configurable composite circuit element.
- the state machine element may be further adapted to maintain a count of available configurable composite circuit elements of the plurality of configurable composite circuit element, and in response to detection of the fault of the first configurable composite circuit element having a plurality of contexts for performance of corresponding functions, to provide the plurality of contexts to one or more available configurable composite circuit elements of the plurality of configurable composite circuit elements to perform the corresponding functions.
- an inventive apparatus comprises: (1) a plurality of circuit arrays, each circuit array of the plurality of circuit arrays comprising: an interconnect element; a plurality of first communication elements coupled to the interconnect element; a plurality of composite circuit elements coupled to the interconnect element, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, a first composite circuit element of the plurality of composite circuit elements having a first action, a second composite circuit element of the plurality of composite circuit elements having a second action, the first composite circuit element having a first data link to the second configurable composite circuit element through the interconnect element or a selected first communication element of the plurality of first communication elements; and a state machine element coupled to the plurality of composite circuit elements, to the full interconnect element, and to the plurality of first communication elements, the state machine element adapted to, in response to an unavailability of the first composite circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements and to provide for
- a first state machine element of the first circuit array is further adapted provide for the first data link by transferring a routing request, through a second communication element, to a plurality of other state machine elements of other circuit arrays of the plurality of circuit arrays and by routing the first data link to a first communication element.
- an inventive self-healing integrated circuit comprising: a first plurality of composite circuit elements, a first composite circuit element of the first plurality of composite circuit elements adapted to perform a first function; a plurality of communication elements coupled to the first plurality of composite circuit elements; a second plurality of composite circuit elements coupled to the first composite circuit element through a first plurality of data links through at least one communication element of the plurality of communication elements for performance of the first function; and a state machine element coupled to the first plurality of composite circuit elements and adapted, in response to an unavailability of the first composite circuit element, to adapt a second composite circuit element of the first plurality of composite circuit elements to provide the first function and to provide a second plurality of data links between the second composite circuit element and the second plurality of composite circuit elements for performance of the first function.
- an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types; and a state machine element coupled to the plurality of composite circuit elements, the state machine element adapted to assign a first function to a first composite circuit element, to assign a second function to a second composite circuit element, and to provide a first data link between the first composite circuit element and the second composite circuit element; the state machine element further adapted to, in response to a detected fault of the first composite circuit element, to assign the first function to a third composite circuit element of the plurality of composite circuit elements and to provide for a second data link between the third composite circuit element and the second composite circuit element.
- FIG. 1 is a diagram illustrating, at a high or conceptual level, resiliency of an exemplary apparatus embodiment in accordance with the teachings of the present invention.
- FIG. 2 is a block diagram illustrating an exemplary first apparatus embodiment in accordance with the teachings of the present invention.
- FIG. 3 is a block diagram illustrating an exemplary second apparatus embodiment in accordance with the teachings of the present invention.
- FIG. 4 is a diagram illustrating an exemplary data packet and data word sequence in accordance with the teachings of the present invention.
- FIG. 5 is a block diagram illustrating a first exemplary circuit cluster in accordance with the teachings of the present invention.
- FIG. 6 is a block diagram illustrating a second exemplary circuit cluster in accordance with the teachings of the present invention.
- FIG. 7 is a block diagram illustrating a third exemplary circuit cluster in accordance with the teachings of the present invention.
- FIG. 8 is a block diagram illustrating in greater detail an exemplary composite circuit element within an exemplary circuit cluster in accordance with the teachings of the present invention.
- FIG. 9 is a block diagram of an exemplary multiplier configurable element in accordance with the teachings of the present invention.
- FIG. 10 is a block diagram of an exemplary triple-ALU configurable element in accordance with the teachings of the present invention.
- FIG. 11 is a flow diagram illustrating at a high level an exemplary compilation process in accordance with the teachings of the present invention.
- FIG. 12 is a flow diagram illustrating at a high level an exemplary operating system or process in accordance with the teachings of the present invention.
- FIG. 13 is a block diagram illustrating exemplary combinational logic circuitry for context availability determination within an exemplary apparatus in accordance with the teachings of the present invention.
- FIG. 14 is a flow diagram illustrating an exemplary algorithm or symbolic netlist run-time binding process in accordance with the teachings of the present invention.
- FIG. 15 is a flow diagram illustrating a first exemplary re-assignment and re-binding process in accordance with the teachings of the present invention.
- FIG. 16 is a diagram illustrating an exemplary configuration and control word in accordance with the teachings of the present invention.
- FIG. 17 is a block diagram illustrating exemplary combinational logic circuitry for context readiness determination within an exemplary apparatus in accordance with the teachings of the present invention.
- FIG. 18 is a block diagram illustrating a fourth exemplary circuit cluster in accordance with the teachings of the present invention.
- FIG. 19 is a block diagram illustrating an exemplary third apparatus embodiment in accordance with the teachings of the present invention.
- FIG. 20 is a block diagram illustrating an exemplary compiler system embodiment in accordance with the teachings of the present invention.
- one of the most novel features of the IC architecture of the present invention is its resiliency, providing adaptation for manufacturing defects, flaws which may arise during usage of the IC, and adaptability for new features, services, algorithms, and other events.
- the resiliency and robustness of the inventive IC architecture allows for increasing yields from IC fabrication, as the inventive ICs fabricated with various defects will nonetheless be quite useable and fully functional.
- this resiliency may be described as “neural” or biological self-healing, because in the event a portion of the IC is damaged or otherwise becomes unusable, another portion of the IC is effectively “recruited” or reassigned to take over and perform the functions of the damaged portion.
- new control and data pathways are also created, so that the transferred operations continue to perform seamlessly with other IC operations.
- Such adaptive resilience and self-healing may occur in real-time or near real-time, depending upon the selected embodiment. This allows the IC to continue to operate without disruption provided that sufficient computing resources remain operational.
- Such resiliency provides for a graceful degradation of performance in the event of damage to the IC, rather than a catastrophic failure, and is especially significant in health and safety applications.
- the compiler of the present invention is designed to meet these unique needs.
- the inventive compiler converts an algorithm into a form suitable for binding the operations to the IC during start up (or run-time), and then potentially re-binding the operations in the event a portion of the IC is damaged or otherwise becomes unusable. Accordingly, the inventive compiler converts the algorithm into a tasks and actions for each task, and then identifies types of computational elements, and their data inputs or data outputs, for performance of each such task, rather than assigning the action to an actual instance or instantiation of the element type on the IC.
- the result is then compiled into a “symbolic netlist”, as described in greater detail below, which may then be assigned and bound to the actual computational elements of the IC at run-time, and re-assigned and re-bound as may be necessary or advisable.
- the IC or other device is comprised of a plurality of “composite” circuit elements (which comprise various types of computational elements, a uniform I/O interface, and a uniform control structure); these composite circuit elements are effectively interchangeable or fungible, such that in the event of a loss of functionality of an element, its functions can be taken over by another composite circuit element (either identical or similar), when available.
- the plurality of computational elements is selected to enable the performance of virtually any functionality, that is, they are computationally complete.
- control functionality is distributed among a plurality of circuit “cluster” controllers, referred to herein as “state machine elements” or “finite state machine elements”, such that control functionality may be transferred between and among these distributed controllers, as needed.
- the composite circuit elements and/or their interconnections are configurable, to aid in the transfer of functionality and any corresponding routing of data and control paths.
- all selected operations are assigned and bound within the device at the initial run-time, and may be re-assigned and re-bound subsequently as may be needed to transfer corresponding functionality to other composite circuit elements and continue operations.
- FIG. 1 is a diagram illustrating, at a high or conceptual level, such resiliency of an exemplary apparatus 100 embodiment in accordance with the teachings of the present invention.
- various parts of the apparatus 100 embodied as an IC, such as various matrices 150 illustrated and discussed with reference to FIGS. 2-3 , are utilized to perform concurrently a plurality of functions, such as those which may be associated with a typical automobile, other vehicle, or computerized or complex system.
- an IC portion 102 is providing anti-lock braking (ABS) functionality
- an IC portion 104 is providing traction control functionality
- an IC portion 106 is providing video or other multimedia functionality
- an IC portion 108 is providing navigation functionality, such as through a satellite or radio link.
- a region 110 (marked with “X's”) of IC portion 102 has become unusable, such as due to physical wear or other damage to the IC. Such damage may be determined through self-testing or through other means discussed in greater detail below.
- ABS is a high priority function
- the functionality performed within region 110 is then reassigned (or bound) to region 112 , which previously had been performing video functionality, which has a lower priority for operation in a vehicle environment.
- new data and control pathways will also be created, so that the newly assigned regions continue to communicate properly with other regions of the IC, transparently, as if the reassignment never occurred.
- IC portion 106 may or may not continue to perform its video functionality, or may perform this functionality with lower bandwidth or speed. In either case, in spite of damage to the IC 100 , the higher priority ABS functions continue to be operational, and no catastrophic failure has occurred.
- regions 114 and 116 (marked with “X's”) of IC portion 108 have become unusable, and their functions are reassigned to regions 118 and 120 , respectively.
- traction control of region 104
- region 118 was available and not being completely used by the traction control functions (e.g., one or more composite circuit elements and/or contexts were available, as discussed below).
- a signal or other indication may be provided to the user, such as to have the vehicle serviced in the near future for IC replacement, for example.
- the reassigned functions may no longer perform optimally (e.g., they may be slower or have less bandwidth), but still perform. Again, such decline in performance is gradual and not catastrophic, with the capability for ample warnings to be provided.
- regions 122 , 124 , 126 and 128 (marked with “X's”) of IC portion 104 have become unusable, and their functions are reassigned to regions 132 , 138 , 134 and 136 , respectively.
- traction control (of region 104 ) generally would have a higher priority than the operation of the video system of IC portion 106 , those higher priority functions are reassigned to the unaffected areas of the IC.
- the video functionality could cease entirely, as the remaining usable portions of the IC are performing these higher priority functions, such as braking and traction control.
- a warning, signal or other indication also may be provided to the user, such as to have the vehicle serviced immediately for IC replacement, for example. Again, such decline in performance is gradual and not catastrophic, with the capability for high priority functions to continue to operate, despite significant failures within many portions of the IC that would cause a prior art IC to fail completely, suddenly, and potentially catastrophically.
- the biological parallels in the operation of the apparatus 100 are striking.
- a biological system which can heal itself such as a neurological system
- a damage such as a stroke with loss of neurons and corresponding neurological function
- other existing neurons are recruited, with new connections (synapses) created, to take over and restore the functionality previously performed by the damaged neurons.
- other existing portions of the IC circuit clusters and composite circuit elements (discussed below)
- the apparatus 100 is self-healing, enabling ongoing functionality despite IC damage.
- FIGS. 2-3 are block diagrams illustrating, in increasing levels of detail, exemplary first and second apparatuses 100 , 140 in accordance with the teachings of the present invention, typically embodied as an IC or portion of an IC.
- the apparatus 100 , 140 is highly distributed and computationally “flat”, with all computation performed by the plurality of composite circuit elements 260 .
- An “action” is the type of function or activity to be performed by a composite circuit element 260 (through its incorporated computational or other type of circuit element 270 ), such as multiplication or bit manipulation.
- composite circuit elements 260 there are various types of composite circuit elements 260 , illustrated as different types of composite circuit elements (equivalently referred to and abbreviated as “composite elements” (“CE”)) CE A , CE B , CE C , CE D , CE E , and CE M , which perform different actions and which may be configurable or non-configurable (illustrated and discussed with reference to FIGS. 5-8 ).
- the plurality of composite circuit elements 260 with other circuit structures discussed below, as a first grouping, are grouped into a corresponding plurality of circuit “clusters” 200 .
- the various groupings may also be considered arrays of a plurality of composite circuit elements 260 , at corresponding levels.
- the apparatus 100 , 140 may then be logically divided into or comprised of a plurality of levels, with this lower level referred to as a “cluster” level (or a first array), with the plurality of circuit clusters 200 then grouped through various (second) communication elements 210 and a second channel (or bus structure) 220 into an intermediate level (or a second array), as a second grouping, referred to as a cluster-grouping or “supercluster” level (a plurality of superclusters 185 ), which in turn are further grouped through various (third) communication elements 190 and third channel (or bus structure) 195 into a higher level, as a third grouping, referred to as a “matrix” level (a plurality of matrices 150 ) or unit level (or a third array), which are further grouped through a fourth channel (or bus structure) 160 into the apparatus 100 , 140 or device level, as a fourth grouping or array.
- a cluster-grouping or “supercluster” level a
- the various communication channels e.g., busses or bus structures
- interconnect 155 of the present invention, allowing communication of data and control information between and among any of the various clusters 200 and other IC components.
- Each of the apparatuses 100 , 140 typically is embodied as an integrated circuit, and may be a separate IC or part of a larger system-on-a-chip (“SOC”) or part of a network of ICs, such as coupled to other ICs on a circuit board, wiring network, network mesh, and so on.
- the two apparatus embodiments 100, 140 differ only in the location (and/or type) of the components within the various clusters 200 utilized to provide input and output (“I/O”) to other, external or non-integrated ICs or other devices, such as external memory (e.g., DDR-2) or external communication channels or busses (e.g., PCI or PCI-express (PCI-e)).
- external memory e.g., DDR-2
- PCI-e PCI or PCI-express
- apparatus 140 such external I/O has been concentrated within a selected matrix 150
- apparatus 100 such external I/O has been distributed among a plurality of matrices 150
- the apparatuses 100 , 140 are identical.
- any reference to apparatus 100 will be understood to mean and include the second embodiment illustrated as apparatus 140 , and apparatus 140 otherwise will not be further discussed as a separate embodiment.
- FIGS. 2 and 3 illustrate two matrices 150
- the apparatus 100 , 140 may include one or more matrices 150
- exemplary embodiments may include any number of matrices 150 , depending upon selected applications and various design parameters, such as IC area and power requirements.
- the apparatus 100 is logically divided into or comprised of a plurality of matrices 150 .
- Each matrix 150 is coupled through a corresponding plurality of third communication elements 190 and a fourth communication channel (or bus structure) 160 , and each has at least two input and two output data and control paths, separately illustrated as input and output (“I/O”) 170 and I/O 180 (of fourth channel (or bus structure) 160 ).
- I/O input and output
- the fourth channel (or bus structure) 160 may have combined control and data I/O paths (as illustrated), with data, configuration and control information utilizing the same bus structures, or such data, configuration and control may be separated onto different bus or interconnect structures (not separately illustrated).
- a plurality of third communication elements 190 are implemented through exemplary communication circuitry such as packet routing or waypoint circuitry.
- another third communication element 190 and the remaining I/O 170 , 180 are available to provide identical functionality, albeit potentially with a reduction in available communication bandwidth.
- the third communication elements 190 are implemented as a single, combined circuit element having four independent up link channels and four independent down link channels (with corresponding bus structures); alternatively, the various channels may also be implemented to provide full duplex communication.
- This use of a plurality of (at least two) communication elements and corresponding I/O portions of the bus structures (having combined control and data I/O paths), in exemplary embodiments, is repeated at each of the various logical, hierarchical levels, providing corresponding resiliency in the event of a failure of any of the various communication elements or I/O paths. For selected embodiments requiring less resiliency or subject to other constraints, however, such one or more additional sets of communication elements and corresponding I/O are optional and may be omitted.
- Each matrix 150 is logically divided into various hierarchical levels or subgroups, also with circuitry for communication between and among the various levels, such as the plurality of third communication elements 190 adapted to perform packet-based routing, self-routing, tunneling, or other types of data, configuration and control communication. More specifically, a matrix 150 is logically divided into a plurality of superclusters 185 , which are coupled to each other through the plurality of third communication elements 190 and third channel (or bus structure) 195 , and which further are coupled to superclusters 185 of other matrices 150 via fourth channel (or bus structure) 160 and other corresponding third communication elements 190 .
- the superclusters 185 are logically divided into a corresponding plurality of circuit clusters 200 (abbreviated and referred to herein simply as “clusters” or a “cluster”), which in turn are comprised of a plurality of circuitry elements referred to as composite circuit elements 260 (or, equivalently referred to and abbreviated as “composite elements” (“CE”) 260 ) and other components (including first communication elements 250 and state machine elements 290 ) discussed below.
- the communication between and among these various clusters 200 is provided through a plurality of second communication elements 210 (which also may provide packet-based routing, self-routing, tunneling, or other types of data, configuration and control communication) and a second channel (or bus structure) 220 .
- the various clusters 200 within a supercluster 185 are then further coupled to other clusters 200 of other superclusters 185 of the same or other matrices 150 via second channel (or bus structure) 220 , second communication elements 210 , third channel (or bus structure) 195 , and third communication elements 190 , and then to other matrices via fourth channel (or bus structure) 160 .
- second channel (or bus structure) 220 second communication elements 210 , third channel (or bus structure) 195 , and third communication elements 190
- fourth channel (or bus structure) 160 fourth channel (or bus structure) 160 .
- “fast path” connections may be provided between adjacent clusters, illustrated as connections 215 in FIG. 2 , and discussed in greater detail below.
- the various second and third communication elements 210 , 190 and levels of communication channels (bus structures) 160 , 195 , 220 collectively form an interconnect structure 155 of the present invention.
- the second and third communication elements 210 , 190 may be implemented as known or as becomes known in the art for transfer, routing or switching of data, configuration and control to and from addressable clusters 200 .
- the second and third communication elements 210 , 190 may be implemented as routing elements, self-routing elements, waypoints, circuit-switched, hybrid routing and circuit-switched elements, other switch-based communication elements, or other types of communication elements, and are considered equivalent.
- the various communication channels (bus structures) 160 , 195 , 220 may be implemented utilizing any conductive paths which may be available in IC fabrication and processing.
- this interconnect 155 (communication channels (bus structures) 160 , 195 , 220 ) will generally be “n” bits wide, with the number “n” selected depending upon the objectives of the selected embodiment. For example, in an exemplary embodiment, “n” is 17 or more bits, providing for a 16 bit data word and one or more control or signaling bits.
- the interconnect 155 comprising one or more busses, wires, conductors, transmission media or connection structures as illustrated in FIGS.
- the interconnect 155 also includes a plurality of communication elements ( 190 , 210 ) which accommodate the n-bit width and which provide routing or other transmission for data words (or packets), configuration words (or packets), and/or control words (or packets), between and among matrices 150 , superclusters 185 , and clusters 200 .
- these communication elements ( 190 , 210 ) may also provide arbitration or other routing conflict resolution, depending upon the degree of interconnectivity to be provided.
- the first communication elements 250 provide cluster I/O, providing intra-cluster circuit-based (or circuit-switched) connection capability in addition to inter-cluster data, configuration and control routing, creating direct communication links or connections to and from components within a cluster 200 and data, configuration and control routing from and to components of other clusters 200 .
- a message manager 265 within a cluster 200 or supercluster 185 is also utilized to provide inter-cluster communication of configuration and control and external input and output communication of any type of data, configuration and control.
- the selection of the number of levels within the apparatus 100 may be varied in any given embodiment, as a balancing of the amount of physical interconnect to be utilized in comparison with routing complexity, for a given number of computational elements.
- the use of four levels (matrix, supercluster, cluster, and composite circuit element levels) in comparison to three levels (with more components per level), for example, enables a substantial reduction in the amount of busses and wires of interconnect, resulting in a savings of area and capacitance, at the expense of additional routing complexity.
- one or more additional controllers (or processors, equivalently) 175 may be utilized, at any of the various matrix 150 , supercluster 185 or cluster 200 levels.
- additional controllers 175 may utilize such additional controllers 175 , may instead utilize one or more state machine elements 290 (discussed below) as one or more controllers, or both.
- the controller or processor 175 is implemented utilizing a commercially available processor or microprocessor, e.g., ARM or Micro-Blaze.
- the processor 175 also may be in a separate system 1200 , or may be integrated as part of the die of the apparatus 100 , 140 , etc., and may be any type of processor or controller, or also may be implemented using one or more SMEs 290 .
- the apparatus 100 (or 140 ) may also include other components, such as any other circuits or other devices which may be integrated or coupled with the apparatus, such as radio-frequency or cellular communication circuitry, memory circuitry, processors, microprocessors, etc., with all such variations considered within the scope of the present invention.
- circuit elements 260 are referred to as “composite” circuit elements 260 because in the exemplary embodiments, they are comprised of a first, constant or fixed portion, and a second, variable portion, which may be configurable or non-configurable (depending upon the type of composite circuit element 260 ).
- each composite circuit element 260 is comprised of: (1) a uniform or constant element interface and control 280 , which is the same for every composite circuit element 260 ; and (2) a selected type of “computational” or other circuit element 270 from a plurality of types of computational elements 270 (configurable or non-configurable), which are illustrated and discussed in greater detail with reference to FIGS. 5-8 .
- the computational circuit element 270 (also referred to more simply as an element 270 or circuit element 270 ) within composite circuit elements 260 vary by type and configurability; the computational elements 270 are referred to as “computational” for ease of reference only, as the various types of circuit elements 270 may have functionality which is not computational in any strict sense, such as memory functions, finite state machine functions, communication functions, etc.
- circuit elements 270 may be static or configurable computational elements of a plurality of types, static or configurable memory elements of a plurality of types, static or configurable communication elements or interfaces of a plurality of types, static or configurable state machine elements, and so on, resulting in a plurality of types of composite circuit elements 260 , such as configurable composite circuit elements 260 , configurable or nonconfigurable memory composite circuit elements 260 M , or configurable or nonconfigurable composite I/O or other communication circuit elements 260 (which may provide I/O interfaces for external communication, for example).
- any reference herein to a composite circuit element 260 will be understood to mean and include any of the various types, special cases or specific instances or instantiations of composite circuit elements 260 , such as configurable composite circuit elements 260 , state machine elements 290 , first communication elements 250 , and composite memory elements 260 M , unless the context requires or indicates otherwise.
- the first communication elements 250 may be implemented as a type of composite circuit element 260 , having an element interface and control 280 presented to other composite circuit elements 260 , and having a computational element 270 designed for communication functionality, and which may or may not be configurable.
- additional circuitry typically embodied as a state machine and referred to as a “message manager” circuit 265 is provided within various or selected clusters 200 to perform external communication functions, such as providing communication interfaces to external memory, busses and communication systems, e.g., providing interfaces which comply with various communication and other data transfer standards, and may also include interfaces for communication with other portions of an IC when the apparatus 100 is embodied as part of an SOC.
- a message manager 265 (as dedicated hardware) or a composite circuit element 260 (having a computational element 270 adapted for a communication function) may be utilized for such external communication, such as providing an Ethernet interface, a PCI interface, a PCI Express interface, a USB or USB2 interface, a DDR SDRAM interface or other type of memory interface, a wireless interface, an interface to another IC, and so on.
- the message manager may also be utilized for communication within the apparatus 100 , such as communication between clusters 200 and communication between state machine elements 290 , as discussed in greater detail below, such as for configuration and control messaging.
- external communication (such as for DDR-2, PCI, PCI-e) is provided by other components coupled to the interconnect 155 , and the message manager circuit 265 provides for interfacing between stream-based communication within a supercluster 185 and/or cluster 200 and packet-based communication on the interconnection networks 220 , 195 , 160 , 170 , 180 , essentially replacing the first and/or second communication elements 250 , 210 , such as in supercluster 185 C and cluster 200 C embodiments.
- the message manager circuit 265 may also be implemented as a finite state machine or as a state machine in conjunction with various combinational logic gates, and the message manager circuit 265 processes three kinds of messages: incoming messages, outgoing acknowledgements, and outgoing messages, all via interconnect 155 .
- Two types of messages are utilized, Data Write messages, and Data Copy messages.
- Data Write messages cause the payload data in the message to be written to an address specified in the message.
- Data Write messages for example, may be user task writes, writes to second memory element 255 , or writes over the configuration/control bus 285 , such as for writing to the SME 290 and modifying SME 290 executable code, or writes to configure any composite circuit element 260 within a cluster 200 .
- the message manager circuit 265 may write to the SME 290 , to provide SME 290 control.
- Data Copy messages cause a Data Write message to be sent from a specified source address to a specified destination address.
- Outgoing acknowledgements are generated by the message manager circuit 265 in response to an incoming Data Write message requesting a reply, and are themselves Data Write messages.
- Outgoing messages are assembled in the second memory element 255 (e.g., cluster 200 RAM) by the SME 290 and are then transmitted by the message manager circuit 265 , such as by setting a pointer to the start of the message and specifying the message size.
- the message assembly may be applicable to outgoing messages which do not require acknowledgment or extended to those which do require acknowledgment.
- the second memory element 255 forming cluster 200 RAM is implemented as eight 1 K times 16 blocks, with address generators provided within the memory-type composite circuit element 260 M , rather than use of the SME 290 for address generation.
- An additional register is also utilized, which if set, reserves the memory-type composite circuit element 260 M for use by the SME 290 , such as for storing instruction sets, and which if not set, enables use by other composite circuit elements 260 .
- Address generation may include, for example, FIFO, block read/write (including counting and striding), and 2-D or 3-D address generation.
- the second memory element 255 also could be a hierarchical memory with or without paged or cached memory structures.
- Priority for data input into the second memory element 255 is typically the message manager circuit 265 , to avoid data back ups on the interconnect 155 , the memory-type composite circuit element 260 M , followed by the SME 290 .
- the memory-type composite circuit element 260 M has additional features, such as being synchronous, and further allowing multiple processes/contexts to execute simultaneously (as long as there is no data collision).
- the message manager circuit 265 is also configured or adapted to manage the memory-type composite circuit elements 260 M distributed throughout the apparatus 100 .
- the message manager circuit 265 is adapted to provide a uniform address space for the distributed plurality of memory composite circuit elements. Through this use of the message manager circuit 265 , the distributed plurality of memory-type composite circuit elements 260 appears to the other composite circuit elements 260 and may be managed as one large memory array.
- Each of the configurable computational elements 270 are comprised of combinational logic (i.e., a group of logic gates forming a functional unit, such as an adder, a multiplier, arithmetic logic unit (“ALU”) etc.) having input, output, and other internal connections which are adapted to be changeable or are otherwise capable of being modified. More specifically, each configurable computational element 270 is designed such that its logic gates or other functional units may be coupled or connected (or decoupled or disconnected), through switching circuits, elements or other switching structures such as switches, multiplexers, demultiplexers, pass transistors, crossbar switches, routing elements, or other transistor configurations, in any of a plurality of ways, to perform a corresponding plurality of functions.
- combinational logic i.e., a group of logic gates forming a functional unit, such as an adder, a multiplier, arithmetic logic unit (“ALU”) etc.
- ALU arithmetic logic unit
- Each different way of connecting the various gates (or functional units) is a “configuration”, and a selected configuration may be represented as a plurality of bits which control the corresponding switches, multiplexers, demultiplexers, pass transistors, or other transistors or switching arrangements, creating the specific connections of the selected configuration.
- adders, multipliers and registers may be coupled in any number of various ways to perform a wide variety of functions, from simple arithmetic to discrete cosine transformation.
- a configuration may also indicate how input data is to be interpreted or used, such as signed or unsigned, a constant or a variable, consumable or non-consumable, etc.
- Other types of configurations and ways of configuring are known in the electronic arts, are considered equivalent and within the scope of the present invention.
- Each of the available or selected configurations for a configurable computational element 270 is stored locally within a memory of the element interface and control 280 of the composite circuit element 260 .
- each of these configurations, in conjunction with other information such as selected inputs, output destinations and control information is defined as or comprises a corresponding “context”.
- the same configuration of elements may have multiple contexts, with each context using different inputs and providing outputs to different locations, or utilizing different constants.
- different configurations will also provide different contexts, even if the different configurations will utilize the same inputs and provide outputs to the same destinations.
- the operations and control of composite circuit elements 260 is discussed in greater detail below with reference to FIGS. 5-8 and 16 , following the discussion of the internal and external communication and addressing utilized in exemplary embodiments of the invention.
- the various connections between composite circuit elements 260 within a cluster 200 , and routing or tunneling from one cluster to another (via communication elements 250 , 210 , or 190 ), are established at run-time by the operating system of the apparatus 100 , for implementation of a selected program, algorithm or function.
- such connections may change over time, and depending upon the selected embodiment, generally will change over time as may be needed, as briefly discussed above with reference to FIG. 1 and as discussed in greater detail below, for creation of new functionality, changing contexts and configurations, changing functionality, or resilient self-healing.
- the various connections also may be established prior to run-time and maintained in a memory within the apparatus 100 , with the potential for subsequent modification as may be necessary or desirable.
- a matrix 150 is logically divided into or comprises a plurality of superclusters 185 and one or more third communication elements 190 .
- the third communication elements 190 are communication circuitry (e.g., routers, waypoints, gateways, switches, or tunneling devices) which provide packet routing, switching, hybrid routing and switching, or tunneling of data and control into and out of a matrix 150 , for communication of data, configuration and control information, and may be considered to form part of interconnect 155 .
- the third communication elements 190 may also be considered waypoints or gateways, and are one of several communication structures utilized in accordance with the present invention.
- each third communication element 190 is coupled to each supercluster 185 of a selected matrix 150 and to other third communication elements 190 (via bus structure 160 ), such that communication to and from each supercluster 185 may occur through either third communication element 190 .
- another third communication element 190 is available to each supercluster 185 of a selected matrix 150 to provide identical communication functionality. While illustrated as separate third communication elements 190 , it will be understood that these independent circuits may be combined into one or more larger circuit structures providing the same independent communication function.
- a single third communication element 190 is utilized, similarly connected to each supercluster 185 and to other third communication elements 190 , with each third communication element 190 providing multiple and independent communication pathways (e.g., 4 down links and 4 up links), such that additional links are available in the event of failure of one or more links.
- multiple and independent communication pathways e.g., 4 down links and 4 up links
- Each supercluster 185 is further logically divided into or comprises a plurality of clusters 200 and one or more second communication elements 210 .
- the second communication elements 210 are also communication circuitry which provide packet routing, tunneling, switching or other transfer of data and control into and out of a supercluster 185 , for communication of data, configuration and control information, and also may be considered to form part of interconnect 155 .
- the second communication elements 210 also may also be considered waypoints or gateways, and are one of several communication structures utilized in accordance with the present invention.
- each second communication element 210 is coupled to each cluster 200 of a selected supercluster 185 , such that communication to and from each cluster 200 may occur through either second communication element 210 . Also as a result, in the event of a failure of a second communication element 210 , another second communication element 210 is available to each cluster 200 of a selected supercluster 185 to provide identical communication functionality. In a selected embodiment, these independent circuits may be combined into one or more larger circuit structures providing the same independent communication function. Also for example, a single, combined second communication element 210 is utilized, similarly connected to each cluster 200 and to one or more third communication elements 190 .
- each second communication element 210 provides multiple and independent communication pathways (e.g., 4 down links and 4 up links), such that additional links are available in the event of failure of one or more links. Again, in the event of such a failure, significant functionality is preserved, with graceful degradation and not catastrophic failure.
- the interconnect 155 moves from a matrix 150 level to a supercluster 185 level and to a cluster 200 level, the interconnect 155 provides packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information through a plurality of communication elements 190 and 210 and communication channels (bus structures) 160 , 195 , 220 .
- the interconnect 155 also provides circuit-switched (or circuit-based) communication, through first communication elements 250 .
- one of the novel features of the architecture of the present invention is the use of an interconnect structure 155 providing both packet-based and circuit-switched communication.
- the exemplary interconnect 155 comprises: (1) a plurality of routing (tunneling, waypoint or gateway) elements, namely, a plurality of third communication elements 190 , a plurality of second communication elements 210 , and a plurality of first communication elements 250 ; (2) a plurality of circuit switching elements, namely, the plurality of first communication elements 250 ; and (3) their corresponding busses, wires or other forms of physical connections or date transmission media (e.g., illustrated, for example, as busses or wires 160 , 195 and 220 which, as discussed above, are “n” bits wide).
- routing tunneling, waypoint or gateway
- one or more third communication elements 190 provide packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information, to and from other matrices 150 (via first bus 160 and I/O 170 , 180 ), and to and from a plurality of superclusters 185 , via one or more second communication elements 210 within each such supercluster 185 .
- one or more second communication elements 210 within such a supercluster 185 provides packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information, to and from the third communication elements 190 , and to and from a plurality of clusters 200 within the supercluster 185 , via one or more first communication elements 250 within each such cluster 200 .
- the one or more first communication elements 250 within a cluster 200 provides packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information to and from the cluster 200 , via the second communication elements 210 , such as to and from other clusters 200 , and provides circuit-switched communication for data and control within the cluster 200 , enabling communication between other clusters 200 and the composite circuit elements 260 , state machine element 290 , message manager 265 , memory elements 255 and/or other components within the cluster 200 .
- data produced from a composite circuit element 260 within a cluster 200 may be output through a direct or a circuit-switched connection to one of the plurality of first communication elements 250 , which then converts the data to packet form and routes the data packet to the second communication element 210 , for transmission to another cluster 200 , another supercluster 185 , or another matrix 150 .
- the first communication element 250 extracts the data and transfers the one or more data words to the corresponding composite circuit element 260 , state machine element 290 , memory elements 255 or other components within the cluster 200 .
- third communication elements 190 , second communication elements 210 , first communication elements 250 , the full interconnect element 275 and the distributed full interconnect element 295 discussed below may be designed to have any selected capacity, such as full interconnectivity to more limited interconnectivity.
- full interconnect element 275 or the distributed full interconnect element 295 providing for any output of a composite circuit element 260 to be coupled concurrently to any input of a composite circuit element 260 in the exemplary embodiments (with the exception of conflicts or contentions for the same inputs or outputs)
- more limited or partial interconnections within the cluster 200 may be provided, such as by using a partial interconnect element or a distributed partial interconnect element (not separately illustrated).
- the first communication elements 250 may provide 2 or more concurrent connections or routing, such as two up links to and two down links from second communication elements 210 , in addition to one or more concurrent connections to and from the composite circuit elements 260 and other components of a cluster 200 . More connectivity may also be provided in any given embodiment, as a trade-off of potential collisions with IC area.
- the various communication elements may also provide an arbitration functionality, which may be based on priority, round robin, sequential, etc., selecting a connection or routing for data transfer at any given time.
- FIG. 4 is a diagram illustrating an exemplary data transmission sequence in accordance with the teachings of the present invention.
- data and/or control packets are routed over the interconnect 155 by the various routing elements (third communication elements 190 , second communication elements 210 , and first communication elements 250 ) as a “train” or tunneling of data words, thereby reducing addressing overhead which would otherwise be associated with routing of individually addressed data words.
- a data transmission sequence 300 is comprised of a plurality of words (fields or data structures) 305 and 310 , and is “n” bits wide. Each such word 305 or 310 is transmitted sequentially, one after the other.
- the first word or field 305 comprises the address header with a data start indicator.
- the address header may comprise a destination address, or may comprise both a destination address and a source address (which may require more than one word).
- Such an address in the exemplary embodiments, has the form of [matrix number, supercluster number, cluster number], with the number of bits utilized to designate the address dependent upon the number of matrices 150 , superclusters 185 and clusters 200 implemented in the selected embodiment.
- the data start indicator within the first word or field 305 which may comprise a first flag having a predetermined value (e.g., flag being set, or other first predetermined or predesignated bit being a selected value), indicates that the current word 305 is an address header and that all subsequent packets are data words to be routed to the same addressed destination.
- all of the “m” words or fields 310 of data following the first field 305 are designated and transmitted as data words, namely, data words 310 0 , 310 1 , 310 2 through 310 (m-1) , which are automatically routed to the same addressed destination, without any need for separate or additional headers or addresses for each data word. Additional flags or bits may also be utilized for other purposes, such as to designate that the subsequent data words are placeholder values, for use in synchronization, particularly for branching operations.
- the last data word illustrated as word or field 310 (m-1) , comprises both data and a data end indicator, to indicate that the current data word is the last data word being transferred, and may comprise a second flag having a predetermined value (or other second predesignated bit having a selected value).
- This tunneling of data is implemented in an exemplary embodiment as a combination or hybrid of both packet routing and circuit switching. More particularly, the various routing elements (third communication elements 190 and second communication elements 210 ) provide for establishing one or more connections between and among clusters 200 using the address header of the first word or field 305 , and reserving and setting up a dedicated path from a source cluster 200 to a destination cluster 200 .
- the dedicated path may be formed by circuit-switching or other connections within, for example, a waypoint or gateway.
- the dedicated path is maintained until the complete packet has been transmitted, after which the various path elements are released for other communications.
- a plurality of paths may be used concurrently to support a broadcast mode. Also in the exemplary embodiment, a plurality of such data transmissions may occur concurrently between and among the same communication elements, such as by using the four uplinks and four downlinks previously mentioned for an exemplary embodiment, allowing transmission of multiple data streams concurrently.
- the plurality of communication elements (including the first communication elements 250 ) support any selected mode of communication, such as one-to-one input and output data links, one-to many (broadcast) data links, and many-to-one data links.
- a first communication element 250 receives data words from the various components of the cluster 200 , typically sequentially (one data word per one or more clock cycles) via the full interconnect element 275 , provides an address header, and transmits the sequence to a second communication element 210 for transmission to another cluster 200 , generally transmitting the entire sequence as a packet burst.
- the first communication element 250 receives and buffers the plurality of data words ( 310 0 , 310 1 , 310 2 through 310 (m-1) ), and sequentially provides them to the designated component of the cluster 200 , typically via the switching of the full interconnect element 275 .
- the source and/or destination addresses may be stored in any of a plurality of components, such as within any of the various routing elements (third communication elements 190 , second communication elements 210 , and first communication elements 250 ), and established during the binding process (discussed below) for each context utilizing intercluster communication.
- the one or more state machine elements (“SMEs”) 290 (or other controller(s) 175 or off-chip controller(s) or processor(s)) performing the binding process (the “binder”) assigns actions (i.e., functions or contexts) to the various composite circuit elements 260 , and establishes a “virtual” data linkage or routing between or among the composite circuit elements 260 , namely, assigning a data linkage between one or more composite circuit elements 260 , without necessarily specifying how that data linkage is to physically occur.
- actions i.e., functions or contexts
- the various communication elements (first communication element 250 , second communication elements 210 , third communication elements 190 , full interconnect element 275 and/or distributed full interconnect element 295 ), either clock cycle-by-cycle or at any given time, then are adapted to determine the physical route for the corresponding data transfer, creating the physical data linkage. For example, via switching and/or routing, a first physical data path or link between or within communication elements may be established for one instance of a transfer of a data packet (e.g., a train of data words) between two clusters 200 (and subsequently released), with a different physical data path or link established for a subsequent instance of a transfer of a data packet between the two clusters 200 .
- a data packet e.g., a train of data words
- Such physical data links may be stored and maintained, for example, within the various memories within the communication elements, such as stored as a routing table within the memories of the corresponding element interface and control 280 (discussed below), with any selected physical data link determined by the corresponding element controller 325 of the communication composite circuit element 260 .
- different physical data links may be established (and released) for data communication within the cluster 200 .
- the physical data linkages may also be established by the binder as part of the binding process.
- FIG. 5 is a block diagram illustrating a first exemplary cluster 200 in accordance with the teachings of the present invention.
- FIG. 6 is a block diagram illustrating a second exemplary cluster 200 A in accordance with the teachings of the present invention.
- a full interconnect element 275 (as a single or unitary circuit component) is utilized to provide complete interconnections between inputs and outputs of each of the composite circuit elements 260 and other cluster components as illustrated.
- the full interconnect element 275 may be implemented as a crossbar switch.
- a distributed full interconnect element 295 (as a distributed plurality of circuit components) is utilized to provide complete interconnections between inputs and outputs of each of the composite circuit elements 260 and other cluster components as illustrated.
- the distributed full interconnect element 295 may be implemented as a plurality of multiplexers and/or demultiplexers, such as the multiplexer 335 illustrated in FIG. 8 for a selected composite circuit element 260 .
- the clusters 200 , 200 A are identical.
- any reference to a cluster 200 will be understood to mean and include the second embodiment illustrated as cluster 200 A (and a third embodiment illustrated as cluster 200 B in FIG. 7 ), as one or more variations of a cluster 200 , and cluster 200 A (and cluster 200 B) otherwise will not be further discussed as a separate embodiment.
- the exemplary cluster 200 comprises a plurality of composite circuit elements 260 (or composite elements 260 ); a plurality of communication elements, namely, one or more first communication elements 250 and a full interconnect element 275 or a distributed full interconnect element 295 (also referred to as a full communication element or full interconnect bus (“FIBus”)); a state machine element (SME) 290 ; a message manager 265 ; and various communication structures, such as busses or other types of communication media.
- FIBus full communication element
- SME state machine element
- a state machine element 290 and message manager 265 is not required in every cluster 200 ; in various embodiments, depending upon the application to be run, selected clusters 200 may comprise predominantly composite circuit elements 260 (e.g., having digital signal processing (“DSP”) functions), with state machine and/or message management functionality provided by state machine elements 290 and message managers 265 of other clusters 200 (with corresponding communication via the first communication elements 250 ).
- DSP digital signal processing
- the corresponding functions may instead be implemented through the use of one or more external controllers 175 or other, off-chip controllers, state machines, or processors.
- the full interconnect element 275 may be implemented as a crossbar switch or pass-transistors (with or without arbitration capability), while the distributed full interconnect element 295 may be implemented as a plurality of switches, pass transistors, multiplexers and/or demultiplexers, for example.
- an exemplary cluster 200 may also include additional memory, such as second memory element 255 , which may be a type of queue, such as a long queue, for example; may also include an intercluster queue 245 , such as a FIFO, buffer or other memory structure, for transfer of data, control and/or configuration information between adjacent clusters 200 without utilizing the various first communication elements 250 and second communication elements 210 (creating the “fast path” connections 215 illustrated in FIG. 2 ); and may also include a separate or additional communication structure for communication between the SME 290 and other components within the cluster 200 , illustrated as configuration/control bus 285 .
- additional memory such as second memory element 255 , which may be a type of queue, such as a long queue, for example
- intercluster queue 245 such as a FIFO, buffer or other memory structure, for transfer of data, control and/or configuration information between adjacent clusters 200 without utilizing the various first communication elements 250 and second communication elements 210 (creating the “fast path” connections 215 illustrated in FIG. 2 );
- each element interface and control 280 also includes a memory, input queues, and an element controller (comprised of a plurality of conditional logic structures (gates)), discussed in greater detail with reference to FIG. 8 .
- first communication elements 250 may also include a memory structure, to transfer incoming data to a selected composite circuit element 260 , and to address and route outgoing data from a selected composite circuit element 260 . While FIGS.
- FIG. 5 and 6 illustrate a cluster 200 ( 200 A) comprising six composite circuit elements 260 , two first communication elements 250 , one state machine element (“SME”) 290 , one message manager 265 , and one full interconnect element 275 or distributed full interconnect element 295 , with possible additional memory such as second memory element 255 and one or more various communication structures such as intercluster queue 245 , it will be understood by those of skill in the electronic arts that any amounts and combinations of these components may be utilized, and that any and all such amounts and combinations are considered equivalent and within the scope of the invention.
- SME state machine element
- Each composite circuit element 260 is comprised of a computational circuit element 270 and a uniform (constant or fixed) element interface and control 280 . While generally referred to as a “computational” circuit element 270 , it is to be understood that a circuit element 270 may perform functions other than computations, such as bit reordering, memory functions, control functions, state machine functions, communication functions, instruction processing, and all such non-computational or other functionality is considered within the scope of a circuit element 270 of the invention regardless of nomenclature.
- the composite circuit elements 260 have (computational) elements 270 , which may be of the same or different type, and may be included within the cluster 200 in any selected combination or mix, and may be static (nonconfigurable) or configurable.
- the elements 270 are a configurable element (type “A”) 270 A , two configurable elements (type “B”) 270 B , a configurable element (type “D”) 270 D , a configurable element (type “E”) 270 E , and a configurable or non-configurable first memory circuit element 270 M .
- a communication circuit element 270 C is utilized in the first communication elements 250 , which is typically non-configurable but which could be implemented to be configurable.
- any selected elements 270 may also be implemented to be nonconfigurable, and all such variations are within the scope of the invention.
- the configurable computational elements 270 generally perform computation and/or bit manipulation and may be, for example, configurable arithmetic logic units (ALUs), configurable triple ALUs, configurable multiply and accumulate (MAC) units, configurable bit reordering elements (BREOs), configurable multipliers, configurable Galois multipliers, configurable barrel shifters, configurable look-up tables, configurable and programmable controllers, super or large ALUs (capable of a wide variety of arithmetic calculations, functions, comparisons and manipulations), and so on.
- the configurable computational elements 270 generally are comprised of combinatorial logic gates, but may also include conditional logic structures, as necessary or desirable, such as to evaluate the existence of a condition or event. Exemplary configurable elements 270 are illustrated in FIGS. 9 and 10 .
- elements 270 may also be implemented to provide communication functions, may be configurable or non-configurable, and may provide interfaces for internal communication, external communication, and memory access.
- external communication functions are provided through the message manager 265 , which provides a selected communication function of a plurality of communication functions, which typically differ between and among the various clusters.
- the plurality of communication functions may include, for example, providing an Ethernet interface, a PCI interface, a PCI Express interface, a USB or USB2 interface, a DDR SDRAM interface or other type of memory interface, a wireless interface, an interface to another IC, etc.
- the message manager 265 of a given cluster 200 provides one type of communication function, with the message managers 265 of other clusters 200 correspondingly providing other types of communication functions.
- the message manager 265 of a first cluster 200 may provide a PCI Express interface
- the message manager 265 of a second cluster 200 may provide a DDR-2 interface
- the message manager 265 of a third cluster 200 may provide an Ethernet interface.
- the message manager 265 may also have a direct connection to the interconnect 155 , or more particularly, the second communication channel or bus 220 , for intercluster communication independently of the various first communication elements 250 , such as for communication of configuration and/or control information between or among the state machine elements 290 and other components.
- the various configurations and data routings may be transmitted to the state machine elements 290 as messages via the message manager 265 .
- the message manager 265 is illustrated as directly coupled to or part of the state machine element 290 (e.g., without intervening or separate bus or communication structures).
- the first memory circuit element 270 M , second memory element 255 and/or memory within the element interface and control 280 may be any form of memory, machine-readable storage or memory media, whether volatile or non-volatile, including without limitation, RAM, FLASH, DRAM, SDRAM, SRAM, MRAM, FeRAM, ROM, EPROM or EPROM, or any other type of memory, storage medium, or data storage apparatus or circuit, which is known or which becomes known, or combinations thereof.
- the first memory element 270 M and the memory within the element interface and control 280 are implemented as content addressable memories (“CAMs”).
- CAMs content addressable memories
- the first memory element 270 M and the memory within the element interface and control 280 are implemented as SDRAM.
- the first communication elements 250 are similar to the composite circuit elements 260 , including an element interface and control 280 , and a circuit element 270 which, in this case, is a communication element 270 C , which may be configurable or non-configurable, depending upon the selected embodiment. For example, configuration may occur to determine switching or routing paths within the communication element 270 C .
- the communication element 270 C provides for packet switched data transmission and reception to and from the interconnect 155 , and circuit-switched communication within the cluster 200 .
- the state machine element 290 also comprises an element interface and control 280 , with its “computational” element ( 270 ) being the more specific case of a state machine element, which also may be configurable or non-configurable, depending upon the selected embodiment.
- the various memories 330 and input and output queues 320 , 315 for a state machine embodiment, alternatively may be provided as internal registers.
- Using the element interface and control 280 also provides for the state machine element 290 to have a plurality of contexts, such as for multithreading.
- state machine element 290 is illustrated as having direct access to the element interface and control 280 of the composite circuit elements 260 (via configuration/control bus 285 ) for ease of directly populating configurations, control, and receiving interrupts, and a direct connection to the first memory element 270 M (and/or second memory element 255 ) (e.g., through one port of a dual port RAM), to facilitate corresponding memory accesses for instruction/code processing and other data access.
- the state machine element 290 in conjunction with any of the available memories (e.g., a composite memory element 260 M or second memory element 255 ), constitutes a “controller” within the scope of the present invention, such as a cluster controller, a supercluster controller, a matrix controller, etc. Such a controller may also include the message manager 265 or similar functionality.
- the first communication elements 250 and state machine element 290 appear to the composite circuit elements 260 within the cluster 200 as simply another composite circuit element 260 , with corresponding advantages discussed below.
- the other composite circuit elements 260 then do not need to have any knowledge that their output is provided to or input is being received from a first communication element 250 or a state machine element 290 , and do not need to accommodate any different type of data reception or transmission.
- the composite circuit elements 260 may include some form of identification by type or kind of composite circuit element 260 (i.e., type of circuit element 270 within the composite circuit element 260 ), to facilitate identification by a state machine element (“SME”) 290 (or a controller 175 ).
- SME state machine element
- Such identification may be retained in an available memory within the cluster 200 in a wide variety of forms, such as hard-wired as a ROM within a composite circuit element 260 during fabrication, loaded into a memory during a boot process, and so on.
- type identification for example, may be maintained in a memory composite element 260 , second memory 255 , or within the memory 330 of the element interface and control 280 discussed below.
- the element interface and control 280 provides both (1) a uniform interface for input to and output from each configurable circuit element 270 , memory element, communication element, or state machine element; and (2) a uniform control structure, and is discussed in greater detail below with reference to FIGS. 8 and 16 . Because each element interface and control 280 has the same structure for every composite circuit element 260 , first communication element 250 , and state machine element 290 within every cluster 200 , every such element 260 , 250 , 290 may be controlled in a uniform, repeatable manner, without regard to the type of element, such as whether the element ( 270 ) is a configurable ALU, a configurable barrel shifter, a communication element, or a state machine element.
- every such composite circuit element 260 , first communication element 250 , and state machine element 290 may communicate with any other composite circuit element 260 , first communication element 250 , and state machine element 290 in a uniform, repeatable manner, without regard to the type of element (e.g., a configurable circuit element 270 ). More particularly, every composite circuit element 260 , first communication element 250 , and state machine element 290 may be addressed in a uniform manner, through the addressing scheme discussed above.
- each composite circuit element 260 and first communication element 250 may be generally unaware about its surroundings and functions.
- the state machine element 290 may have additional functionality for monitoring, testing and controlling other elements, so that it is knowledgeable about its surroundings and functions).
- each composite circuit element 260 , first communication element 250 , and state machine element 290 may be configured, addressed and queried in a uniform manner, also without regard to the type of element (e.g., type of circuit element 270 ).
- each composite circuit element 260 having a selected type of circuit element 270 is virtually completely interchangeable with any other composite circuit element 260 having the same selected type of circuit element 270 , except to the extent of any locality (distance) constraints for the performance of a particular computation or algorithm.
- any selected composite circuit element 260 having a selected type of circuit element 270 may be freely assigned or transferred to another composite circuit element 260 having the same selected type of circuit element 270 , without any detrimental effect.
- first communication element 250 or a state machine element 290 may also be transferred to other available first communication elements 250 and state machine elements 290 , as needed.
- the full interconnect element 275 and/or distributed full interconnect element 295 which respectively may be implemented as a full crossbar switch or as another arrangement of switches, multiplexers, demultiplexers, or other transistor arrangements, provides for any output of any composite circuit element 260 , first communication element 250 , and state machine element 290 to be coupled to any input of any (other) composite circuit element 260 , first communication element 250 , and state machine element 290 , and/or to be coupled to any other component within its cluster 200 or, via intercluster queue 245 , to the full interconnect element 275 and/or distributed full interconnect element 295 of an adjacent cluster 200 (for input to any composite circuit element 260 , first communication element 250 , and state machine element 290 or other component of the adjacent cluster 200 ).
- any output of a composite circuit element 260 , first communication element 250 , and state machine element 290 may be provided as an input to any other composite circuit element 260 , first communication element 250 , and state machine element 290 , in parallel and concurrently, through full interconnect element 275 and/or distributed full interconnect element 295 , for each composite circuit element 260 , allowing complete and concurrent communication between and among all composite circuit elements 260 , first communication elements 250 , and state machine element 290 (with the exception of potential conflicts requiring arbitration or other resolution).
- the outputs from a composite circuit element 260 may be switched in a plurality of ways, all of which are within the scope of the present invention.
- an optional output switching element 380 (illustrated in FIG. 8 ) may be provided for every composite circuit element 260 , which may switch the outputs for internal feedback within the composite circuit element 260 , switch the outputs to the full interconnect element 275 or distributed full interconnect element 295 , switch the outputs directly to a first communication element 250 , or switch the outputs directly to the state machine element 290 .
- internal feedback may be provided from any stage within a computational element 270 , and the computational element 270 outputs are provided to an output memory (or output queue or register) 315 and then directly to the full interconnect element 275 , for switching to other composite circuit elements 260 , to the state machine element 290 , or to the first communication elements 250 .
- inputs to a composite circuit element 260 may be provided in a plurality of ways, such as from the full interconnect element 275 or distributed full interconnect element 295 , or directly from the full interconnect element 275 and other sources, such as from second memory element 255 , the state machine element 290 , and/or first communication elements 250 .
- This communication functionality may be implemented based upon either or both data sources and/or data destinations.
- destination addresses for each context are typically stored in a routing table of an output queue 315 ( FIG. 8 ). Output is then provided for the corresponding address, with the full interconnect element 275 or distributed full interconnect element 295 configured for the corresponding destination address.
- these additional inputs may be provided sequentially.
- additional output fan-out may be provided, such that an output of one composite circuit element 260 may be input concurrently into a plurality of other composite circuit elements 260 , also via full interconnect element 275 , distributed full interconnect element 295 or other communication structures. Handshaking protocols may also be utilized, with the destination sending or not sending an acknowledgement upon receipt of data.
- source addresses for each context are typically stored in input queues 320 . Every source provides its output on a selected bus or communication lines of the full interconnect element 275 or distributed full interconnect element 295 .
- the corresponding input queue 320 determines whether the data is from a source designated for one or more of its contexts and, if so, when memory space is available, receives the corresponding data.
- This source-based communication provides ease of multicasting or broadcasting, as any and all destinations are enabled to concurrently receive any data of interest transmitted on the selected data lines. Handshaking protocols may also be utilized, with the destination sending or not sending a denial or other unavailability message when it is unable to receive the data transmitted (thereby providing for the source to resend the data at another time).
- no handshaking or other type of communication acknowledgement is utilized.
- Physical data links may be established at run time, as part of the binding process, with all corresponding computational processes allowed to execute, without a need to determine input data availability or space availability for output data.
- Such an implementation is useful for pipelining, such as for inner kernels of various algorithms.
- such an implementation is useful to avoid data stalls or data back pressure, when one data process may be waiting for incoming data and thereby affecting data throughput of other processes.
- combinations of these implementations may also be utilized, such as various components utilizing data flow-based operations, and other components not utilizing data flow-based operations.
- data flow-based operations may be utilized for operations within a cluster 200 , with other operations, such as communication operations, allowed to simply execute (e.g., route and switch).
- the full interconnect element 275 and distributed full interconnect element 295 are illustrated generally, for ease and clarity of illustration, to represent generally the types of communication within a cluster 200 , such as, for example: to provide for the input and output of any composite circuit element 260 to be coupled to other composite circuit elements 260 , to the state machine element 290 , to the message manager 265 , or to either (or both) first communication elements 250 or intercluster queue 245 , for data transfer to or from other clusters 200 ; communication between the state machine element (SME) 290 and any composite circuit element 260 (including memory elements and communication elements); communication between the SME 290 and either or both first communication elements 250 , for transfer of control information, queries, query responses, and so on; communication between the message manager 265 and interconnect 155 ; and communication between the first communication elements 250 and the various memories within the cluster 200 (e.g., second memory element 255 and the other memories within the various components of the cluster 200 ); and any other communication between or among
- the state machine element (SME) 290 functions as a (comparatively small) microprocessor (or microcontroller), such as a RISC processor, for execution of instructions, determination of conditions and events, operating system management, and control of the composite circuit elements 260 .
- the SME 290 can be utilized to implement legacy C programs and implement state for otherwise stateless dataflow operations of the composite circuit elements 260 .
- the state machine element 290 is adapted to function as a sequential processor, and its operations are augmented by the composite circuit elements 260 within the same cluster 200 .
- the SME 290 also may have internal memory, may utilize the second memory element 255 , a memory composite circuit element 260 M , or a memory 330 within a composite circuit element 260 , for storage of data and instructions (or actions).
- the second memory element 255 may be implemented as a plurality of “long” queues, having sufficient depth to store instructions which may be utilized by the state machine element 290 .
- the SME 290 may utilize any of the composite circuit elements 260 to perform calculations or other functions which will be needed in its execution of its program, such as to add or to compare two numbers, for example.
- the state machine element 290 performs control functions of computations, such as determinations of conditionals, represented in programming languages using statements such as IF, CASE, WHILE, FOR, etc.
- the SME 290 may also have control registers or other types of internal memory, such as to define and keep track of its control functions. As previously mentioned, not every cluster 200 is required to have a state machine element 290 .
- state machine element 290 is illustrated as having, in addition to direct access to the element interface and control 280 of the composite circuit elements 260 (via configuration/control bus 285 ), a direct connection to the first memory element 270 M (and/or second memory element 255 ), to facilitate corresponding memory accesses for instruction/code processing and other data access.
- configuration/control bus 285 such communication may be provided via the full interconnect element 275 or distributed full interconnect element 295 , for example.
- the state machine element 290 is utilized to implement a hardware operating system, and in a supervisory mode, has access to all of the resources within its cluster 200 , thereby able to program, control, and monitor all of the composite circuit elements 260 within the cluster 200 .
- the state machine element 290 will perform these functions and operations.
- the state machine element 290 is utilized in self-testing of cluster resources, loading or assigning tasks (actions (or instructions)), binding actions (or instructions) (e.g., run-time binding) to the composite circuit elements 260 , and in creating the connections between and among the various composite circuit elements 260 and clusters 200 .
- the assigning and binding process is discussed in greater detail with reference to FIG. 14 .
- the SMEs 290 within the clusters 200 function as a highly distributed controller, running the operating system of the apparatus 100 (in conjunction with any needed composite circuit elements 260 ), either with or without other controllers 175 .
- various SMEs 290 may take on additional functions, such performing a system boot process, operating as a master controller, and determining and mapping functional and nonfunctional composite circuit elements 260 and other components, for example.
- the operation of the SME 290 is also explained in greater detail below with reference to FIGS. 8-14 .
- the SME 290 may start a bound task of the composite circuit elements 260 within the cluster 200 , suspend a task, suspend an action or function of a composite circuit element 260 (as part of an overall task), halt a task and free its resources (such as to load and run a higher priority task), set a task to perform in a single-step mode, and move a task to another location (such as to perform self-testing of the composite circuit elements 260 currently performing the task).
- the message manager 265 in the first cluster 200 and second cluster 200 A embodiments, is utilized for communication external to the apparatus 100 , such as for an Ethernet interface, a memory interface (e.g., DDR-2 SDRAM), a PCI-Express interface, etc.
- the message manager 265 is coupled directly to the SME 290 , and more generally, also may be coupled to the full interconnect element 275 or distributed full interconnect element 295 , the first communication elements 250 , and/or the composite circuit elements 260 (not separately illustrated). For example, data words provided by the full interconnect element 275 may be output by the message manager 265 for storage in an external memory.
- incoming data, configuration or control may be transferred to the SME 290 (or stored in second memory element 255 ), such as to provide instructions for the SME 290 , or transferred to a composite circuit element 260 , for use and consumption in computations.
- the message manager 265 is also coupled to the second communication channel or bus 220 (of the interconnect 155 ).
- the message manager 265 is also utilized for communication within the apparatus 100 .
- the message manager 265 is also utilized for cluster 200 to cluster 200 communication, and for SME 290 to SME 290 communication.
- the message manager 265 is utilized for one composite circuit element 260 of a first cluster 200 to transfer information to another composite circuit element 260 of a second cluster 200 .
- each matrix 150 is provided with a total of six PCI-express interfaces implemented through the message managers 265 of six corresponding clusters 200 (one per supercluster 185 , in an embodiment in which superclusters 185 are implemented identically).
- each matrix 150 is provided with a total of one or two DDR-2 interfaces implemented through the message managers 265 of one or two corresponding clusters 200 .
- there are remaining clusters 200 which have corresponding message managers 265 which are not providing interfaces and control for external communication.
- the message manager 265 may be implemented in a wide variety of ways, depending upon the selected embodiment.
- the message manager 265 is implemented as a finite state machine and implements communication standards, such as those mentioned above. When implemented as a state machine, the message manager 265 may be implemented separately or combined as a part of the SME 290 .
- the message manager 265 is implemented as dedicated computational logic gates, also for the provision of a communication interface, with the SME 290 utilized to perform any conditional logic or other state machine functions.
- the composite circuit elements 260 will include some form of identification by type or kind of composite circuit element 260 (i.e., type of circuit element 270 within the composite circuit element 260 ), to facilitate identification by a state machine element (“SME”) 290 .
- SME state machine element
- a SME 290 will determine (and report to other SMEs 290 , as necessary) the types and context availability of the composite circuit elements 260 within its cluster 200 , for use in run-time binding.
- the SME 290 may determine that the cluster has one configurable barrel shifter-type element (corresponding to type “A”) 270 A , two configurable triple-ALU-type elements (corresponding to type “B”) 270 B , one configurable Galois multiplier-type element (corresponding to type “C”) 270 C , one configurable bit reordering (“BREO”)-type element (corresponding to type “D”) 270 D , and one content addressable memory element (corresponding to type “M”) 270 M .
- the SME 290 may also determine and report at another time that the BREO-type element of its cluster 200 is no longer functioning properly, so that the operations of its BREO-type element may be transferred to a BREO-type element of another cluster 200 .
- the second memory element 255 may receive input and provide output (be written to and read from) either directly or indirectly via the full interconnect element 275 or distributed full interconnect element 295 , from a plurality of sources, such as: (1) to and from the first communication elements 250 (for input from other clusters 200 , such as input of data, instructions or other control information for use by the SME 290 or for queuing data for use by composite circuit elements 260 ); (2) to and from one or more composite circuit elements 260 (including memory composite circuit element 260 M ) within the same cluster 200 ; (3) to and from the SME 290 ; or (4) to and from the message manager 265 .
- sources such as: (1) to and from the first communication elements 250 (for input from other clusters 200 , such as input of data, instructions or other control information for use by the SME 290 or for queuing data for use by composite circuit elements 260 ); (2) to and from one or more composite circuit elements 260 (including memory composite circuit element 260 M ) within the same cluster 200 ; (3) to and
- FIG. 7 is a block diagram illustrating a third exemplary cluster 200 B embodiment in accordance with the teachings of the present invention, as another variation of a cluster 200 .
- the cluster 200 B contains composite circuit elements 260 having communication functionality, such as to provide external communication functionality, e.g., for the communication functionality concentrated within a selected matrix 150 as illustrated in FIG. 3 .
- the message manager 265 is not utilized for such external communication, which instead is provided within dedicated communication composite circuit elements 260 , which may be configurable or nonconfigurable.
- each communication composite element 260 is utilized to provide a standard I/O interface for (external) communication to and from the apparatus 100 , such as DDR-2 or PCI-e interfaces.
- the communication composite elements 260 may have additional input and output bus or media structures to provide such interfaces, and are not confined to communicating outside the cluster 201 through the first communication elements 250 .
- additional communication composite elements 260 may be utilized for increased resiliency and immunity from catastrophic failure.
- the clusters 200 , 200 B are identical, and further differ from cluster 200 A in use of a full interconnect element 275 rather than a distributed full interconnect element 295 .
- any reference to a cluster 200 will be understood to mean and include the third embodiment illustrated as cluster 200 B, as a variation or more specific case of a cluster 200 , and cluster 200 B otherwise also will not be further discussed as a separate embodiment.
- the first cluster 200 embodiment may also be utilized for the communication functionality concentrated within a selected matrix 150 as illustrated in FIG. 3 .
- any other cluster 200 may communicate with the communication composite elements 260 and its cluster 201 , or communicate with a cluster 200 having a message manager 265 with an external communication interface, in same manner as any communication with any other composite circuit element 260 or cluster 200 .
- cluster 200 or composite circuit element 260 when a cluster 200 or composite circuit element 260 has a communication external to the apparatus 100 , all that is required is for that cluster 200 or composite circuit element 260 to have the address of the corresponding communication composite elements 260 (with the interface corresponding to the selected form of communication) and/or its cluster 201 , or the address of a cluster 200 having a message manager 265 with the interface corresponding to the selected form of communication.
- Such addressing may be provided by various components within the cluster 200 , such as the message manager 265 , the SME 290 , or the first communication elements 250 , for example.
- Such external communication is thereby provided through virtual addressing, e.g., via a message manager 265 or cluster 200 , or via a communication composite elements 260 or cluster 201 , and the composite element 260 does not need any further information concerning the location or type of the external interface.
- a cluster 200 or composite circuit element 260 does not need any information concerning whether its external communication is with a DDR SDRAM or is via an Ethernet protocol, or where these interfaces may be located on the apparatus 100 .
- a composite circuit element 260 also does not need any information concerning whether its communication is within another composite circuit element 260 within the same cluster 200 or a different cluster 200 .
- FIG. 18 is a block diagram illustrating a fourth exemplary circuit cluster 200 C in accordance with the teachings of the present invention.
- the fourth exemplary circuit cluster 200 C differs from the cluster embodiments discussed previously in that its topology has a degree of internal hierarchy, with the fourth exemplary circuit cluster 200 C divided into a plurality of zones 201 , illustrated as zones 201 A, 201 B, 201 C and 201 D, with each zone 201 having four composite circuit elements 260 (as illustrated) which are coupled to a separate interconnect 275 , 295 (which may be full or distributed), and with communication between each zone 201 occurring through a plurality of cluster queues 245 A (which are effectively identical to the previously described intercluster queues 245 ).
- the cluster queues 245 A are utilized for communication within a cluster 200 C, and not merely for “fast track” communication between clusters 200 .
- the full or distributed interconnect 275 , 295 is also source-based, as described in greater detail below, with each destination composite circuit element 260 monitoring the interconnect 275 , 295 for communication(s) from its corresponding data source.
- the full or distributed interconnect 275 , 295 may be destination-based, as described herein.
- the circuit cluster 200 C does not include first communication elements 250 . Instead, communication with other clusters 200 , superclusters 185 , matrices 150 , or external communication (such as to a PCI-e bus) (via second channel (or bus structure) 220 ) is accomplished through the message manager 265 , which provides the additional packet-based and circuit-switched communication functionality of the first communication elements 250 .
- Each of the composite circuit elements 260 illustrated as CE 0 through CE 14 , are coupled to the full or distributed interconnect 275 , 295 as described previously, with 4 inputs and 2 outputs to and from each composite circuit elements 260 .
- the cluster queues 245 A 12 through cluster queues 245 A 16 as illustrated, provide communication between and among the various zones 201 of composite circuit elements 260 within the circuit cluster 200 C.
- the cluster queues 245 A are implemented as multiple unidirectional ports, using any type of memory as discussed herein, and are implemented to provide several communication paths in both directions between zones 201 (one “hop” to any destination within a cluster 200 C, with one “hop” occurring per cycle, absent contention from other data sources) or between circuit clusters 200 C (one or two cycles or “hops” to an adjacent cluster 200 C, and one or more cycles or “hops” to any other destination).
- each cluster queue 245 A provides four communication paths, two in each direction.
- cluster queue 245 A 15 provides two communication paths from zone 201 B (as a data source) to zone 201 D (as a data destination), and provides two communication paths from zone 201 D (as a data source) to zone 201 B (as a data destination).
- each cluster queue 245 A also has eight contexts, providing eight virtual connections across each cluster queue 245 A in each direction and for each communication path.
- cluster queues 245 A and message manager circuit 265 are also considered “communication elements” within the scope of the present invention.
- FIG. 19 is a block diagram illustrating an exemplary third apparatus embodiment, comprising a supercluster 185 C, in accordance with the teachings of the present invention.
- the circuit clusters 200 C may be effectively tiled or arrayed with each other, to form a supercluster 185 , illustrated as supercluster 185 C, having sixteen circuit clusters 200 C, illustrated as C0 through C15.
- Each of the circuit clusters 200 C communicates with adjacent circuit clusters 200 C through the plurality of cluster queues 245 A.
- Such superclusters 185 C then do not utilize one or more second communication elements 210 , and instead connect to one or more third communication elements 190 through one or more message managers 265 within the supercluster 185 C.
- the cluster queues 245 A also provide intercluster communication with adjacent clusters 200 C, and may be viewed as a more generalized type of intercluster queues 245 .
- the peripheral cluster queues 245 A provide communication between the circuit cluster 200 C and its adjacent circuit clusters 200 C.
- the cluster queues 245 A may be implemented to provide one or two communication paths in each direction, depending on the selected embodiment.
- the peripheral cluster queues 245 A provide one communication path in each direction.
- cluster queue(s) 245 A 0 provides communication between circuit cluster 200 C and an adjacent “northwest” circuit cluster 200 C
- cluster queue(s) 245 A 1 and 245 A 2 provide communication between circuit cluster 200 C and an adjacent “north” circuit cluster 200 C
- cluster queue(s) 245 A 3 and 245 A 4 provide communication between circuit cluster 200 C and an adjacent “west” circuit cluster 200 C
- cluster queue(s) 245 A 5 provides communication between circuit cluster 200 C and an adjacent “southwest” circuit cluster 200 C.
- cluster queue(s) 245 A 11 (which may be considered part of an adjacent cluster 200 C) provide communication between circuit cluster 200 C and an adjacent “northeast” circuit cluster 200 C
- cluster queue(s) 245 A 10 and 245 A 9 (which may be considered part of an adjacent cluster 200 C) provide communication between circuit cluster 200 C and an adjacent “east” circuit cluster 200 C
- cluster queue(s) 245 A 8 (which may be considered part of an adjacent cluster 200 C) provides communication between circuit cluster 200 C and an adjacent “southeast” circuit cluster 200 C
- cluster queue(s) 245 A 6 and 245 A 7 (which may be considered part of an adjacent cluster 200 C) provide communication between circuit cluster 200 C and an adjacent “south” circuit cluster 200 C.
- routing may occur through a message manager 265 to or from a supercluster 185 or a circuit cluster 200 , and by routing to a designated composite circuit element 260 within a supercluster 185 C or a circuit cluster 200 C through any of the various cluster queues 245 A, using either the source-based or destination-based communication schemes described herein.
- This use of cluster queues 245 A for intercluster communication has the potential advantage of reduced latency compared to use of the first communication element 250 , insofar as multiple words are not required for assembly into a packet train, and instead may be communicated as they are generated.
- the supercluster 185 C and circuit cluster 200 C otherwise function as described herein for any supercluster 185 and circuit cluster 200 , respectively. Accordingly, any reference to a supercluster 185 or to a circuit cluster 200 shall be understood to correspondingly mean and include a supercluster 185 C or circuit cluster 200 C, respectively.
- FIG. 8 is a block diagram illustrating in greater detail an exemplary composite circuit element 260 within an exemplary cluster 200 in accordance with the teachings of the present invention.
- the composite circuit element 260 comprises an element interface and control 280 and a circuit element 270 (also referred to as a computational element 270 ), which is generally a configurable computational element, but which may also be a nonconfigurable computational element, a configurable or nonconfigurable communication element, a configurable or nonconfigurable finite state machine element, may be a configurable or nonconfigurable memory element, or may be other forms of circuitry selected for any particular application of an apparatus 100 .
- the element interface and control 280 comprises: (1) an element controller 325 ; (2) a memory 330 (such as a content addressable memory (“CAM”) or random access memory such as SDRAM) which stores contexts and control information (e.g., configuration words); (3) input queues 320 (as a form of memory); and (4) output queues (or registers) 315 (also as a form of memory).
- the element interface and control 280 may include the element controller 325 , the memory 330 , and either the input queues 320 or the output queues 315 , but not both.
- the element interface and control 280 may include the memory 330 , and either the input queues 320 or the output queues 315 , but not the element controller 325 . In the latter embodiment, once a SME 290 has assigned actions and established the data routing, no separate or additional control is utilized within the composite circuit elements 260 , with the composite circuit elements 260 allowed to freely and/or continuously execute an assigned context.
- the element interface and control 280 may also include an optional output switching element 380 such as one or more switches, transistors, multiplexers or demultiplexers, to provide direct switching capability for output data, such as for internal feedback within the composite circuit element 260 , or for providing output data to the SME 290 , to the message manager 265 , or to the first communication elements 250 , in addition to providing output data to the full interconnect element 275 or distributed full interconnect element 295 .
- the memory 330 , input queues 320 and output queues 315 may be implemented as any form of memory, including without limitation any of the memory types mentioned previously, such as CAM or SDRAM.
- the input queues 320 provide a plurality of inputs 365 into the configurable circuit element 270 , illustrated as an exemplary four inputs each having a width of one 16-bit data word. Alternatively, the width may be wider, such as to include a bit designating a placeholder, for example.
- the input queues 320 may be independent from each other or may be dependent upon each other, such as using 2 inputs for a combined 32-bit data word.
- input queues 320 are provided for each of the inputs into the circuit element 270 , with each of the input queues 320 providing a separate queue for each context which may be utilized by the circuit element 270 .
- the input queues 320 may be implemented as “short queues”, having a depth of 1 or 2 data words, although deeper queues and other forms of memory are within the scope of the invention.
- short queues having a depth of 1 or 2 data words, although deeper queues and other forms of memory are within the scope of the invention.
- eight contexts are utilized, for each of 4 inputs, with a depth of at least 2 data words.
- Contexts may also be combined, such as to implement a larger queue, e.g., 16 words, for a selected context.
- the input queues 320 may receive data from any of a plurality of input sources, depending upon the switching arrangements, either directly or via the full interconnect element 275 or distributed full interconnect element 295 , such as: (1) from the first communication elements 250 (for input from other clusters 200 ); (2) from one or more other composite circuit elements 260 (including memory composite element 260 M ) within the same cluster 200 ; (3) from the second memory element 255 ; (4) from the message manager 265 ; or (5) from the SME 290 (e.g., when utilized by the SME 290 for calculation of a value or comparison of 2 values, such as to evaluate a condition or an event). As illustrated in FIG.
- the input queues 320 receive data from either a full interconnect element 275 or a distributed full interconnect element 295 , illustrated as an exemplary multiplexer 335 .
- the multiplexer 335 is a 16-to-1 multiplexer, allowing the input queues 320 to obtain data from any assigned source by selecting busses of the interconnect 275 , 295 for input data.
- An output from a circuit element 270 also may be fed back to be provided as an input, through the input queues 320 , or directly within the circuitry of the element 270 , via an output switching element 380 mentioned above, or simply via the full interconnect element 275 .
- two output queues (registers or other forms of memory) 315 are provided, each having the corresponding eight contexts, each having a width of one 16-bit data word, and having a selected depth of 1, 2 or more data words. Alternatively, the width may be wider, such as to include a bit designating a placeholder, for example.
- the output queues 315 also may be independent from each other or may be dependent upon each other, such as using 2 output queues 315 for a combined 32-bit data word.
- the contexts may also be combined, such as to implement a larger queue, e.g., 8-16 words, for a selected context.
- the output queues 315 (utilizing an incorporated state machine) may also replicate output data, such as providing the same output data to additional contexts for distribution to additional destinations.
- a plurality of outputs 375 are provided from the output queues 315 of the circuit element 270 , illustrated as two outputs, also each having a width of one 16-bit data word (or wider, as discussed above, such as for inclusion of a placeholder bit, control information, or other data).
- the outputs 375 also may be independent from each other or may be dependent upon each other, such as using 2 outputs for a combined 32-bit data word.
- the outputs 375 are provided to the full interconnect element 275 or distributed full interconnect element 295 (or the optional output switching element 380 ), which may independently provide each of the plurality of outputs 375 to any of the following (via corresponding communication structures or bus 350 ): (1) to the first communication elements 250 (for output to other clusters 200 ); (2) to one or more (other) composite circuit elements 260 (including memory composite element 260 M ) within the same cluster 200 ; (3) to the SME 290 (such as when utilized by the SME 290 for calculation of a value or comparison of 2 values (e.g., to evaluate a condition or an event)); (4) to the message manager 265 ; or (5) to an optional second memory element 255 , such as a long queue for input into the SME 290 or other components.
- the optional output switching element 380 and other output switching arrangements are also available and will be apparent to those of skill in the electronic arts, are considered equivalent and are within the scope of the present invention.
- the memory 330 is implemented as a CAM, to facilitate searching and identification of stored task identifiers (task IDs) and stored action identifiers (action IDs).
- the memory 330 is implemented as RAM, with searching and identification performed utilizing other search methods, such as binary searching.
- Other types and combinations of memory may be utilized, however, and all are considered equivalent and within the scope of the present invention, whether volatile or non-volatile, including without limitation any type or combination of RAM, FLASH, DRAM, SDRAM, SRAM, MRAM, FeRAM, ROM, EPROM or EPROM, or any other type of memory, storage medium, or data storage apparatus or circuit, which is known or which becomes known, depending upon the selected embodiment.
- the memory 330 is utilized in the exemplary embodiments to store both contexts and control information, utilized to configure the configurable element 270 and direct its operations.
- contexts and control information is stored as a configuration word in the exemplary embodiments, as a plurality of information fields, and is discussed below with reference to FIG. 16 .
- configuration words may be altered, deleted, supplanted, added, and so on, and by modifying various bits within the configuration word, the execution of operations by the circuit element 270 may also be controlled.
- This local storage of contexts and control information provides for extremely fast execution capability, as configurations or instructions do not need to be fetched and read from a remote memory, but are instantly available as contexts for immediate configuration and control of the circuit element 270 .
- the apparatus 100 is not subject to the “von Neumann” bottleneck which limits the execution capabilities of typical processors.
- the various memories 330 function as a large, very highly distributed instruction memory which may be utilized advantageously, such as for distributed processing, distributed digital signal processing, distributed programming, and distributed rebinding of instructions (or actions) in the event of a component failure, for example.
- This use and local storage of contexts also allows for significant time multiplexing of operations of composite circuit elements 260 , first communication elements 250 , and state machine elements 290 .
- one context of a selected composite circuit element 260 may require input data which has not yet been created by another composite circuit element 260
- another context may be able to be executed on the selected composite circuit element 260 , rather than the composite circuit element 260 remaining idle.
- the use of a plurality of contexts by a state machine element 290 allows multithreaded operation.
- a SME 290 may commence execution of first code with a particular first data set for a first context, store interim results and a first code pointer, commence execution of second code with a second data set for a second context and provide an output, followed by returning to the first context for continued execution of the first code using the first code pointer and the stored, interim results.
- This use of time multiplexed contexts further allows interleaving of tasks and usage of resources which otherwise might be idle, allowing tasks to share resources and increasing the overall resource utilization of the IC.
- the element controller 325 may be implemented through combinational logic gates and/or as a finite state machine, and is utilized to control how the circuit element 270 is configured and when the circuit element 270 operates, utilizing the configuration word (contexts and control information) stored in memory 330 . More specifically, in exemplary embodiments, the circuit element 270 operates based on data flow, such that when it has data at its inputs, when it has an available destination to store or consume the output data to be produced, and when authorized by the element controller 325 , the circuit element 270 will commence operations (or fire) and perform its calculations or manipulations on the input data and provide the corresponding output data.
- the element controller 325 controls this data flow operation, based on a plurality of conditions and priorities (and other information stored as one or more configuration words in memory 330 ). For example, when more than one context is ready for execution, the element controller 325 may arbitrate which runs first, such as through round-robin, or evaluation of one or more priorities, a scheduled execution of an activity, or when the activity last occurred (e.g., a most recently executed action may have a lower priority in the arbitration, while a least recently executed action may have a higher priority in the arbitration).
- the element controller 325 may be implemented with varying levels of sophistication. As mentioned above, in one embodiment, the element controller 325 is not implemented, with the composite circuit elements 260 essentially operating in a continuous mode, subject to other constraints (e.g., control from any of the various SMEs 290 ). At the other extreme, the element controller 325 may provide multithreaded operation of the circuit element 270 , such as by storing a current state of a partial execution of a first context in the (first) memory 330 , executing a second context (via the circuit element 270 ), and retrieving the current state and resuming execution of the first context by the circuit element 270 .
- FIGS. 9 and 10 Exemplary configurable, computational elements 270 are illustrated in FIGS. 9 and 10 .
- FIG. 9 is a block diagram of an exemplary multiplier-type configurable element 270 F
- FIG. 10 is a block diagram of an exemplary triple-ALU-type configurable element 270 G .
- each has four 16-bit inputs 365 and two 16-bit outputs 375 , and depending upon the context, each is capable of utilizing all inputs 365 and outputs 375 .
- the configuration corresponding to a selected context is provided for mode selection of corresponding multiplexers, demultiplexers, and other switching elements to implement the selected configuration.
- the exemplary multiplier-type configurable element 270 F is configurable for several operating modes, such as for 32-bit multiplication, 16-bit multiplication, accumulation, and mixtures of 16- and 32-bit arithmetic.
- the multiplier-type configurable element 270 F may be configured using the 4 multiplexers 383 , 384 , 385 , 386 , using the 32-bit output select 387 , and using other configuration bits input into the adder/subtracter 382 and the multiplier 381 .
- the 32-bit output select 387 specifies whether the low 32 bits of the adder/subtracter 382 is output or which portion which portion of the 64-bit accumulation register 388 is output.
- the multiplexer 385 (A Select) specifies the A-input into the adder/subtracter 382 , as zero, I 1 , I 2 , or the accumulation register 388 ; the multiplexer 386 (B Select) specifies the alignment of the B-input into the adder/subtracter 382 , as one of four 16-bit portions of a 64-bit output from the multiplier 381 ; and configuration bits into the adder/subtracter 382 further specify whether the A-input is signed or unsigned and whether the B-input is added or subtracted.
- the multiplexer 383 (P Select) specifies the P-input into the multiplier 381 , as I 3 or I 2 , and whether signed or unsigned.
- the multiplexer 384 (Q Select) specifies the Q-input into the multiplier 381 , as I 1 or I 0 , and whether signed or unsigned.
- the multiplier-type configurable element 270 F also illustrates output feedback within the element 270 , from the 64-bit accumulation register 388 to multiplexer 385 .
- the exemplary triple-ALU-type configurable element 270 G is configurable for a wide variety of functions in including multiplication, addition and subtraction (in signed arithmetic), masking, arithmetic averaging, and rounding, for example.
- the exemplary triple-ALU-type configurable element 270 G may output a constant, pass one value (copying A or B to its output), perform logical functions (NOT, AND, OR, XOR), and may perform conditional or unconditional data flow.
- each of the shifters 393 , 394 , and 395 shift their corresponding inputs left (positive) or right (negative) by the designated amounts.
- the ABS blocks 389 , 399 either compute the absolute value of the input or pass the input, also depending on the configuration bits.
- the status multiplexer 396 generates a status word using flag bits from each of the ALUs 390 , 391 and 392 , which may be provided to the SME 290 , in which one flag bit designates a carry or comparison, a second flag bit indicates the result is the most significant bit, a third flag bit indicates the result is a negative one ( ⁇ 1), and a fourth flag bit indicates the result is zero.
- condition-swap multiplexers 397 and 398 are utilized to provide conditional execution on inputs I 3 , I 2 , and based on the result, passing I 0 and/or I 1 to outputs 375 , and further providing for swapping of inputs before being copied to outputs 375 .
- configurable elements 270 include bit re-ordering elements (“BREOs”), single ALU elements, “super” ALU elements (32-bit ALU), barrel shifter elements, look-up table elements, memory elements, programmable controller elements, communication elements, etc.
- BEOs bit re-ordering elements
- single ALU elements single ALU elements
- “super” ALU elements 32-bit ALU
- barrel shifter elements look-up table elements
- memory elements programmable controller elements
- communication elements etc.
- FIG. 11 is a flow diagram illustrating at an exemplary compilation process in accordance with the teachings of the present invention. It should be understood that the following discussion is very high level for purposes of explaining the present invention.
- the compilation process may be performed using any computer system or network, workstation, processing device, one or more microprocessors, electronic design automation (“EDA”) tools, electronic system-level (“ESL”) tools, etc.
- EDA electronic design automation
- ESL electronic system-level
- the method begins, start step 400 , with selection of an algorithm for compiling, step 405 .
- Such an algorithm may be expressed in a wide variety of ways, from a mathematical description to a source code or object code listing for a microprocessor, for example.
- the algorithm is converted or decomposed into a plurality of “tasks”, step 410 , which are high level descriptions of a function or process, such as performing an inverse Fast Fourier Transformation (IFFT).
- IFFT inverse Fast Fourier Transformation
- a task is then selected from the plurality of tasks and is assigned a task identifier (“task ID”), step 415 , which is typically a sufficiently unique identifier to differentiate the task from the other instances of tasks of the same algorithm or from tasks of other algorithms which will also be running concurrently on the apparatus 100 .
- task ID task identifier
- the selected task is then converted or decomposed into one or more actions to be performed by a composite circuit element 260 (including computational, state machine, and/or communication composite elements 260 , 290 , 250 ) to execute the task, step 420 .
- a composite circuit element 260 including computational, state machine, and/or communication composite elements 260 , 290 , 250
- an “action” is the type of function or activity to be performed by a composite circuit element 260 , such as multiplication, bit manipulation, and instruction processing, for example, and may be considered equivalent to an instruction which would be executed by a processor or a function performed by an ASIC or FPGA to achieve the same result.
- an IFFT task may be decomposed into a plurality of “butterfly” steps such as multiplication, addition and accumulation steps, each or all of which would constitute an action (or instruction), such as “multiply ‘a’ times ‘b’ (a ⁇ b)”, and which would correspond to one of the operational configurations of one of the composite circuit elements 260 .
- action or instruction
- functions or “activity” are used equivalently and interchangeably to mean any such circuit processes.
- an actions (or instructions) is selected and assigned an action identifier (“action ID”), step 425 , which is a sufficiently unique identifier to differentiate the action (or instruction) from other actions (or instructions) for the selected task.
- action ID is a sufficiently unique identifier to differentiate the action (or instruction) from other actions (or instructions) for the selected task.
- the task ID and action ID are utilized in the run-time binding process, discussed below with reference to FIG. 14 .
- Each action (or instruction) is then mapped or assigned as one or more contexts of one or more composite circuit elements 260 by type of composite circuit element(s) to be utilized, step 430 , and not to any specific composite circuit elements 260 or specific addresses within the architecture, to create a “symbolic”, generic or non-specific compilation which is not tied to particular hardware components.
- a multiplication and addition action (or instruction) may be mapped as a single context to an ALU-type composite element 260 (a composite element 260 having an ALU-type circuit element 270 ), and not to a specific ALU-type composite element 260 within a specific cluster 200 .
- More complicated actions (or instructions) may be mapped to multiple contexts of multiple types of composite circuit elements 260 .
- one or more specific composite circuit elements 260 of the selected type will be assigned to perform the action (or, equivalently, execute the instruction), as one or more of its (or their) available contexts.
- This distinction is important, as it allows the action (or instruction) to be assigned initially to one or more composite circuit elements 260 and then potentially reassigned to other composite circuit elements 260 , as may be needed, during operation of the apparatus 100 .
- this separate binding process may assign the action (or instruction) as one or more contexts which are available for the selected types of composite circuit elements 260 , with other contexts potentially remaining available for assignment of other actions (or instructions).
- corresponding “linkage” for each action is also determined, also at this generic, symbolic or non-specific level, step 435 , namely, as generic or symbolic “pointers”: for each action, information is generated and retained concerning either sources for input data or destinations for data output, or both. For example, action number “512” of task “418” will, in addition to being mapped to an ALU-type composite element 260 , have associated information that it will receive its input from action number “414” of task “229”, or that it will provide its output to action number “811” of task “319” (or both).
- this determination may be performed following either step 440 or 445 , such as when all actions (or instructions) for a task have been determined and mapped to the types of composite circuit elements 260 , or when all actions (or instructions) and tasks have been determined and mapped to the types of composite circuit elements 260 .
- the compilation process also determines any timing constraints in the program or algorithm which would correspondingly require a degree of proximity or locality of execution by the various composite circuit elements 260 , and provides corresponding regional constraints for the affected tasks and/or actions (or instructions), step 440 . For example, for various timing requirements, some processes may need to be executed within a single cluster 200 or within a group of clusters 200 within the same supercluster 185 , to avoid any delays which may be incurred from routing data packets on the interconnect 155 to and from other clusters 200 or other superclusters 185 .
- a regional requirement is provided in the compiled output (the “symbolic netlist” discussed below), such as by a “region” command or instruction designation, for example, to provide that the actions (or instructions) which follow must be performed within a single cluster 200 or within a single supercluster 185 , followed by an “end region” indication for the actions (or instructions) confined to the single cluster 200 or single supercluster 185 .
- a regional requirement may also be extended to zones 201 within a circuit cluster 200 , such as a circuit cluster 200 C.
- step 440 the method determines whether there are additional actions (or instructions) to be assigned an identifier and mapped to types of composite circuit elements 260 , step 445 , and if so, the method returns to step 425 and iterates, to select the next action (or instruction) and proceed through steps 425 , 430 (potentially 435 ) and 440 .
- step 450 determines whether additional tasks are to be compiled.
- additional tasks are to be compiled in step 450
- the method returns to step 415 and iterates, selecting the next task, assigning a task ID, and so on.
- step 450 When all tasks have been processed in step 450 , such that the selected algorithm has been converted into a plurality of tasks and actions (or instructions), which have then been symbolically (generically or non-specifically) mapped to types of composite circuit elements 260 and symbolically linked by either data input sources or data output destinations (or both) (e.g., using symbolic pointers), the method generates a composite circuit element and routing “symbolic netlist” or symbolic compilation, step 455 .
- This symbolic netlist, listing or compilation comprises a plurality of symbolic netlist elements, with each such symbolic netlist element corresponding to and containing information for execution of each action of each task of the algorithm or program.
- each symbolic netlist element contains information concerning: (1) the task ID; (2) the action ID; (3) one or more types of composite circuit elements 260 and the number of contexts needed for each type of composite circuit element 260 for execution of the action (or instruction) of the corresponding task ID and action ID; (4) input or output (or both) linkage information; and (5) any regional (i.e., proximity) constraints for the corresponding tasks or actions (or instructions).
- the compilation method is applicable to any of the various circuit and interconnect topologies described herein, including to the supercluster 185 C and circuit cluster 200 C topologies.
- actions may also be mapped to “macro-definitions” or “libraries”.
- Such “macro-definitions” or “libraries” are essentially pre-compiled tasks or actions, which have already been mapped to types of composite circuit elements 260 and which have been correspondingly linked (with regional constraints, if any), with a corresponding symbolic netlist.
- an IFFT may be mapped to an IFFT library, which contains all of the composite element-type and composite element-linkage information to carry out an IFFT using the apparatus 100 .
- Such library creation may occur at any of various levels, such as mapping various algorithms of H.264 for streaming media, for example.
- mappings and linkages for any selected action or task, which may be optimized for different goals, each of which may result in a different symbolic netlist.
- a task to be performed by a triple-ALU-type composite element 260 may instead be mapped to three single ALU-type composite elements 260 . While this could potentially decrease bandwidth or speed of performance, it may allow performance by the apparatus 100 when other, higher priority algorithms are utilizing all available contexts of all available triple-ALU-type composite elements 260 .
- a task to be performed by an ALU-type composite element 260 may instead be mapped to a plurality of addition- and multiplication-type composite elements 260 , creating yet another mapping and linking variation.
- any selected algorithm may have multiple symbolic netlists generated, each optimized or selected for a different goal, such as speed of performance, power minimization, ability to run with diminished resources, safety, redundancy, conflict resolution, and so on.
- a significant portion of the IC is damaged, such that the optimal algorithm for ABS no longer has sufficient IC resources to run, another (sub-optimal) version of the ABS functionality may be loaded and bound in the IC, enabling an important function to continue to operate and avoid potentially harmful consequences under circumstances in which another IC, such as a standard microprocessor, would fail completely.
- the compilation method determines whether additional algorithms are to be compiled or, as discussed above, additional versions or alternatives for a selected algorithm are to be compiled, step 455 , and if so, the method returns to step 405 and iterates. When no further algorithms or versions of algorithms are to be compiled in step 455 , the method may end, return step 460 .
- FIG. 20 is a block diagram illustrating an exemplary compiler system embodiment in accordance with the teachings of the present invention.
- the compiler 1200 may be implemented or embodied as any form of computer system (e.g., a mainframe computer, a personal computer, a computer workstation, server, or any other computer or device having processing power sufficient to execute the exemplary methods of the invention), comprising an input and output (I/O) interface 1205 , one or more processors 1215 , and a memory 1220 storing any type of data (such as one or more databases or file systems (individually and collectively referred to as data repositories) 1225 ).
- I/O input and output
- the database 1225 may be integrated, namely, that the information resides within a singular, co-located or otherwise centralized database structure or schema, or may be a distributed database, with information distributed between and among a plurality of databases, some of which may be remotely located from the other databases.
- a “data repository”, “database”, and “data warehouse”, as used herein, are considered interchangeable, and may be relational, object-oriented, object-relational, or use files or flat files, or any combinations of the above.
- a “processor” 1215 may be any type of controller or processor, and may be embodied as one or more processors 1215 , adapted to perform the functionality discussed herein.
- the processor may be in a separate system 1200 , or may be integrated as part of the die of the systems 100 , 140 , etc., and may be any type of processor or controller, such as a commercially available processor or microprocessor, e.g., ARM or Micro-Blaze, or may be implemented using one or more SMEs 290 .
- a processor 1215 may include use of a single integrated circuit (“IC”), or may include use of a plurality of integrated circuits or other components connected, arranged or grouped together, such as controllers, microprocessors, digital signal processors (“DSPs”), parallel processors, multiple core processors, custom ICs, application specific integrated circuits (“ASICs”), field programmable gate arrays (“FPGAs”), adaptive computing ICs, associated memory (such as RAM, DRAM and ROM), and other ICs and components.
- IC integrated circuit
- DSPs digital signal processors
- ASICs application specific integrated circuits
- FPGAs field programmable gate arrays
- adaptive computing ICs associated memory (such as RAM, DRAM and ROM), and other ICs and components.
- processor should be understood to equivalently mean and include a single IC, or arrangement of custom ICs, ASICs, processors, microprocessors, controllers, FPGAs, adaptive computing ICs, or some other grouping of integrated circuits which perform the functions discussed below, with associated memory, such as microprocessor memory or additional RAM, DRAM, SDRAM, SRAM, MRAM, ROM, FLASH, EPROM or EPROM.
- a processor (such as processor 1215 ), with its associated memory, may be adapted or configured (via programming, FPGA interconnection, or hard-wiring) to perform the methodologies of the invention.
- the methodology may be programmed and stored, in a processor 1215 with its associated memory (and/or memory 1220 ) and other equivalent components, as a set of program instructions or other code (or equivalent configuration or other program) for subsequent execution when the processor is operative (i.e., powered on and functioning).
- the processor 1215 may implemented in whole or part as FPGAs, custom ICs and/or ASICs, the FPGAs, custom ICs or ASICs also may be designed, configured and/or hard-wired to implement the methodology of the invention.
- the processor 1215 may be implemented as an arrangement of processors, controllers, microprocessors, DSPs and/or ASICs, collectively referred to as a “controller” or “processor”, which are respectively programmed, designed, adapted or configured to implement the methodology of the invention, in conjunction with a memory 1220 .
- the memory 1220 which may include a data repository (or database) 1225 , may be embodied in any number of forms, including within any computer or other machine-readable data storage medium, memory device or other storage or communication device for storage or communication of information, currently known or which becomes available in the future, including, but not limited to, a memory integrated circuit (“IC”), or memory portion of an integrated circuit (such as the resident memory within a processor 1215 ), whether volatile or non-volatile, whether removable or non-removable, including without limitation RAM, FLASH, DRAM, SDRAM, SRAM, MRAM, FeRAM, ROM, EPROM or EPROM, or any other form of memory device, such as a magnetic hard drive, an optical drive, a magnetic disk or tape drive, a hard disk drive, other machine-readable storage or memory media such as a floppy disk, a CDROM, a CD-RW, digital versatile disk (DVD) or other optical memory, or any other type of memory, storage medium, or data storage apparatus or circuit, which is known or which becomes
- the processor 1215 is programmed, using software and data structures of the invention, for example, to perform the compilation methodology of the present invention.
- the system and method of the present invention may be embodied as software which provides such programming or other instructions, such as a set of instructions and/or metadata embodied within a computer readable medium.
- metadata may also be utilized to define the various data structures of a look up table or a database.
- Such software may be in the form of source or object code, by way of example and without limitation. Source code further may be compiled into some form of instructions or object code (including assembly language instructions or configuration information).
- the software, source code or metadata of the present invention may be embodied as any type of code, such as C, C++, SystemC, LISA, XML, Java, Brew, SQL and its variations (e.g., SQL 99 or proprietary versions of SQL), DB2, Oracle, or any other type of programming language which performs the functionality discussed herein, including various hardware definition or hardware modeling languages (e.g., Verilog, VHDL, RTL) and resulting database files (e.g., GDSII).
- code such as C, C++, SystemC, LISA, XML, Java, Brew, SQL and its variations (e.g., SQL 99 or proprietary versions of SQL), DB2, Oracle, or any other type of programming language which performs the functionality discussed herein, including various hardware definition or hardware modeling languages (e.g., Verilog, VHDL, RTL) and resulting database files (e.g., GDSII).
- a “construct”, “program construct”, “software construct” or “software”, as used equivalently herein, means and refers to any programming language, of any kind, with any syntax or signatures, which provides or can be interpreted to provide the associated functionality or methodology specified (when instantiated or loaded into a processor or computer and executed, including the processor 1215 , for example).
- the software, metadata, or other source code of the present invention and any resulting bit file may be embodied within any tangible storage medium, such as any of the computer or other machine-readable data storage media, as computer-readable instructions, data structures, program modules or other data, such as discussed above with respect to the memory 1220 , e.g., a floppy disk, a CDROM, a CD-RW, a DVD, a magnetic hard drive, an optical drive, or any other type of data storage apparatus or medium, as mentioned above.
- the I/O interface 1205 may be implemented as known or may become known in the art, and may include impedance matching capability, voltage translation for a low voltage processor to interface with a higher voltage control bus, and various switching mechanisms (e.g., transistors) to turn various lines or connectors on or off in response to signaling from the processor 1215 .
- the I/O interface 1205 may also be adapted to receive and/or transmit signals externally to the system 200 , such as through hard-wiring, IR or RF signaling, for example, to receive information such as algorithms for compiling, for example.
- the I/O interface 1205 may provide connection to any type of bus or network structure or medium, using any selected architecture.
- such architectures include Industry Standard Architecture (ISA) bus, Enhanced ISA (EISA) bus, Micro Channel Architecture (MCA) bus, Peripheral Component Interconnect (PCI) bus, SAN bus, or any other communication or signaling medium, such as Ethernet, ISDN, T1, satellite, wireless, and so on.
- the I/O interface 1205 may be implemented as known or may become known in the art, to provide data communication between the processor 1215 and the network 180 , using any applicable standard (e.g., one of the various PCI, USB or Ethernet standards, for example and without limitation).
- FIG. 12 is a flow diagram illustrating at a high level an exemplary operating system or process in accordance with the teachings of the present invention. It should be understood that the following discussion is very high level for purposes of explaining the present invention. In addition to being performed by the various SMEs 290 , alternatively, this operating system functionality could be performed by one or more additional controllers 175 .
- the process begins, starting with step 500 , with the apparatus 100 being powered on, such as part of an SOC or within another system, such as a vehicle, a computer, a complex system, a mobile telephone, a personal digital assistant, an MP3 player, and so on.
- a self-test is performed, step 505 , typically by each of the state machine elements 290 , which may test themselves and, in exemplary embodiments, the various composite circuit elements 260 , first communication elements 250 , full interconnect element(s) 275 or distributed full interconnect elements 295 , other state machine elements 290 , and other logic, communication or memory elements within their corresponding clusters 200 or other clusters 200 (e.g., for those clusters 200 implemented without corresponding SMEs 290 ).
- the operational determination is performed by a composite circuit element (with composite circuit element utilized in its inclusive sense, including of all of the various composite circuit elements 260 , first communication elements 250 , full interconnect element(s) 275 or distributed full interconnect elements 295 , other state machine elements 290 , and other logic, communication or memory elements within their corresponding clusters 200 or other clusters 200 ), and is at least one of the following types of determinations: a periodic diagnostic performed by at least one composite circuit element of the plurality of composite circuit elements; a background diagnostic performed as a selected context of at least one composite circuit element of the plurality of composite circuit elements; or a comparison test performed by a plurality of composite circuit elements of the same circuit element type.
- each of the various types of composite circuit elements may each perform a diagnostic self-test, followed by comparing their corresponding results. If the results of a first composite circuit elements does not match the expected result, such as by comparison of the results of other composite circuit elements 260 of the same type, the first composite circuit element is deemed defective or not properly operational, and is not included within the map or list of available resources (step 515 , below).
- a boot program such as a program designed and stored for the apparatus 100 in an associated memory (e.g., flash or other EEPROM memory) or other data storage device, such as a hard disk drive, an optical drive, etc., which may be part of the same IC or associated system.
- an associated memory e.g., flash or other EEPROM memory
- other data storage device such as a hard disk drive, an optical drive, etc., which may be part of the same IC or associated system.
- Step 515 Two significant functions are performed as part of the boot process of the operating system in steps 515 and 520 .
- One or more of the SMEs 290 creates a map or list of available apparatus 100 resources, such as a list within a cluster 200 or supercluster 185 of which composite circuit elements 260 , first communication elements 250 , and other components are functioning properly, step 515 (e.g., similar to creating a bad or good sector map for a memory or disk drive).
- Step 515 may be performed, for example, by each SME 290 for its corresponding cluster 200 , or by one or more SMEs 290 (pre-designated or as determined in the boot program) for an entire supercluster 185 or matrix 150 .
- step 515 is performed by combinational logic elements, as illustrated in and as discussed below with reference to FIG. 13 , which may be located or distributed within a composite circuit element 260 , a cluster 200 , and throughout the matrix hierarchy.
- a master controller is determined, which may be one selected SME 290 or a plurality of SMEs 290 operating as a master controller, or may be one or more additional controllers 175 or other, off-chip controllers, processors, or state machines.
- a master controller is determined as a SME 290 having the lowest address (at the time).
- the operating system through one or more state machine elements 290 (or controllers 175 ), potentially with user input, then determines or selects which programs, algorithms or functions are to be performed, step 525 , such as selecting the ABS, traction control, video and navigational programs previously discussed.
- the operating system binds the symbolic netlist(s) of the selected programs to the available resources (determined in step 515 ), by assigning a task and action(s) (or instruction(s)) to a selected composite circuit element 260 (as one or more contexts), by linking the inputs of the selected composite circuit element 260 to the other corresponding composite circuit elements 260 which are its data sources, to provide its input data (which also correspondingly links these data source outputs to the inputs of the selected composite circuit element 260 as data destinations), and/or by linking the outputs of the selected composite circuit element 260 (as data sources) to the other corresponding composite circuit elements 260 which are its data destinations, to utilize the data produced by the selected composite circuit elements 260 (which also correspondingly links the inputs of these data destinations to the outputs of the selected composite circuit element 260 (as a data source)).
- the apparatus 100 commences execution or running of the corresponding programs or operations, step 535 , such as operating the ABS and traction control systems, playing a video for passengers, and providing a real-time navigational display for the driver.
- the binding (assigning and linking) process is discussed in detail below with reference to FIG. 14 .
- the control of the program (or operational) execution process in each composite circuit element 260 is discussed in greater detail below with reference to FIG. 16 .
- the operating system may also determine that new or different functionality is needed, step 540 , such as when a user or operator selects an additional program, or circumstances require a change in functionality, such as through a sensor detecting a particular condition. For example, in a vehicle environment, a sensor may detect a change in driving or road conditions, and adjust various programs accordingly.
- the method rebinds (re-assigns and re-links) the affected tasks and actions (or instructions), step 545 , and the apparatus 100 continues to operate with these various changes.
- the tasks and actions (or instructions) may be moved to new locations, or existing or new tasks and actions (or instructions) may be loaded, assigned and bound.
- the operating system may also bind or re-bind an entire program or functionality de novo.
- This re-binding step 545 may also include unbinding, that is, completely removing an assigned functionality, such as by deleting its corresponding contexts from memory. Such unbinding may occur, for example, when the apparatus 100 is already at capacity, and room must be created for the new or different functionality. Such unbinding was illustrated in FIG. 1 , when video functioning was removed as the apparatus 100 increasingly lost capacity through IC damage.
- the apparatus 100 through one or more state machine elements 290 (or controllers 175 ) performing the operating system (or as part of a built-in self test (“BIST”)), periodically performs a limited or full self-test, step 550 , to detect any changes in availability of resources, step 555 .
- the self-test may reveal that a BREO-type circuit element 270 is no longer functioning properly, and therefore should no longer be available for use within the apparatus 100 .
- step 555 the operating system (through the SMEs 290 or controllers 175 ) correspondingly modifies the map or list of available resources, step 560 , rebinds the affected tasks and actions (or instructions) using the modified list or map, step 565 , and the apparatus 100 continues to operate with these various changes.
- step 570 the apparatus 100 may continue operating, returning to step 535 .
- the apparatus 100 may shut down or power off, return step 575 .
- the plurality of composite circuit elements 260 may be implemented or adapted to store periodically a then current state, such as a “snapshot” of its current operations. Subsequently, in response to a detected fault, the composite circuit elements 260 are adapted to retrieve the stored state and recommence operation using the stored state.
- the inventive architecture in conjunction with the run-time binding of a symbolic netlist enable the self-healing and resiliency of the apparatus 100 . More particularly, when any of the composite circuit elements 260 , SMEs 290 , first communication elements 250 , full interconnect element(s) 275 or distributed full interconnect element(s) 295 , other cluster 200 components, or routing or other communications elements ( 190 , 210 ), either do not perform properly initially (as determined in step 515 during testing portions of the boot process) or during later operation (as determined during self-test or as determined by other components, steps 550 , 555 ), they are not placed on or are removed from the map or list of available resources, respectively.
- the affected component is never assigned any functionality in step 530 . If the affected component was originally functioning and is no longer (step 555 ), it is removed from the list or map of available resources, and its assigned functionality is moved or loaded to another available component and re-routed, separately or as part of the rebinding of the corresponding tasks or instructions of step 565 . If it has been determined that the data has been corrupted, the controlling task is notified so that the appropriate action can be taken. This binding process is explained in detail below.
- FIG. 13 is a block diagram illustrating exemplary combinational logic circuitry 600 for context availability determination within an exemplary apparatus 100 in accordance with the teachings of the present invention.
- Such circuitry 600 may be included within each composite circuit element 260 , such as within a circuit element 270 , an element controller 325 , within a SME 290 , or as separate combinational logic (not separately illustrated in FIG. 8 ).
- the number of available contexts for each type of composite circuit element 260 is determined for use in binding (or re-binding) a program or algorithm for performance within the apparatus 100 . Such determination may be made by one or more SMEs 290 , controllers (or other processors) 175 , or as illustrated in FIG. 13 , dedicated combinational logic circuitry 600 .
- each composite circuit element 260 is a state bit and a first condition bit, for each context.
- the state bit indicates whether the context has been assigned or allocated to an action (or instruction) or not, and is therefore free or available to be assigned (logic high or one), or is not free and available to be assigned (logic low or zero).
- the state may be determined by examining the memory 330 to determine whether the action ID and task ID fields are zero or non-zero for the selected context, indicating available (no assigned or allocated action ID and task ID) or unavailable (already assigned or allocated action ID and task ID), and then inverted to be utilized as the state bit in FIG. 13 .
- the first condition bit indicates whether the composite circuit element 260 is operational (logic high or one) or non-operational (logic low or zero), as determined from the various exemplary self-test processes discussed above.
- a first AND operation is performed on the corresponding state bit and first condition bit, via AND gates 605 (illustrated as the plurality of AND gates 605 0 , 605 1 , through 605 (m-1) , such that the result of the AND operation indicates that the context is both available and that the composite circuit element 260 is working properly (logic high or one), or that either the context is not available or that the composite circuit element 260 is not working properly (logic low or zero).
- a second, controller (SME 290 ) condition bit is utilized to indicate whether the SME 290 (within the cluster 200 ) is operational (logic high or one) or non-operational (logic low or zero), also as determined from the various exemplary self-test processes discussed above, and may be stored in any of the various memories within the composite circuit element 260 or cluster 200 .
- a second AND operation is performed using this first AND result (state and first condition bit) and the second, controller condition bit (via the plurality of AND gates 610 0 , 610 1 , through 610 (m-1) ), such that the result of the second AND operation indicates that the context is both available and that both the composite circuit element 260 and SME 290 are working properly (logic high or one), or that the context is not available, that the composite circuit element 260 is not working properly, or that the SME 290 is not working properly (logic low or zero).
- the first and second AND operations also may be performed as a single, combined AND operation having at least three inputs (state bit, first condition bit, and second condition bit).
- the results of the second AND operation for each context may be added, such as by using a “one-hot” adder 615 (or a SME 290 or other controller), providing the number of free contexts per composite circuit element 260 (with a working SME 290 ).
- this process may continue up the matrix hierarchy, with the number of free contexts per composite circuit element 260 added together for each type of composite circuit element 260 within a cluster 200 , then added together for each type of composite circuit element 260 within a supercluster 185 , then added together for each type of composite circuit element 260 within a matrix 150 , and then added together for each type of composite circuit element 260 within the apparatus 100 .
- These additional ADD operations may be performed using dedicated ADDERs (e.g., 620 , 625 , 630 ) or by using composite circuit elements 260 configured for ADD operations and under the control of their corresponding SMEs 290 .
- availability counts for each type of composite circuit element 260 may be determined and maintained at each level, namely, at a cluster 200 level, a supercluster 185 level, a matrix 150 level, and an apparatus level.
- Such counts at these various levels are particularly useful for determining whether a supercluster 185 or cluster 200 has availability to satisfy a regional constraint, such as when a number of operations must be performed with timing constraints using certain types of composite circuit elements 260 within a cluster 200 or supercluster 185 .
- composite circuit element 260 availability is determined and maintained rapidly, concurrently and in parallel for all clusters 200 , with delays only from several AND and ADD operations (e.g., two AND delays and four ADD delays total for an entire matrix 150 ).
- the SME 290 may be utilized to poll or examine the various registers of all of the memories 330 of the corresponding composite circuit elements 260 within the cluster 200 , and add up the results by type of composite circuit element 260 for each cluster, with one or more selected SMEs 290 then adding up results for each supercluster 185 and matrix 150 .
- Such availability determination may be top-down in the matrix hierarchy, such as initiated by a master controller (which may be a designated SME 290 or a controller 175 ), or bottom-up in the matrix hierarchy, such as illustrated in FIG. 13 or as provided by each of the SMEs 290 within each cluster 200 . It will be apparent to those of skill in the electronic arts that there are innumerable ways of providing this availability determination, using combinational, conditional or control logic, all of which are considered equivalent and within the scope of the present invention.
- FIG. 14 is a flow diagram illustrating an exemplary algorithm or symbolic netlist run-time binding process in accordance with the teachings of the present invention, and further illustrates significant functionality associated with the state machine elements 290 distributed throughout the apparatus 100 .
- this functionality could be performed by one or more additional controllers 175 , such as a controller 175 designated as a master controller for the apparatus 100 .
- controllers 175 such as a controller 175 designated as a master controller for the apparatus 100 .
- those of skill in the art will recognize that numerous variations of the methodology are available, and are considered equivalent and within the scope of the present invention. At least one such variation is also discussed below.
- the apparatus 100 performs a run-time binding operation of an algorithm provided as a symbolic netlist, which may be considered similar to a place and route operation for programmable resources with programmable routing.
- the programmable resources themselves have been placed on the IC, and the binding process then assigns an action (or instruction) (as part of a task) to one or more contexts of one or more available resources, and provides the corresponding routing or linkage of inputs and outputs.
- the methodology of the invention operates quite rapidly, on the scale of microseconds or milliseconds to seconds.
- the method begins, start step 700 , with the determination and/or maintenance of the availability counts for each type of composite circuit element 260 , preferably at the cluster, supercluster, and matrix levels, as discussed above.
- the first (or next) action i.e., function or instruction
- a master controller step 705 , which may be one or more designated SMEs 290 or one or more controllers 175 , for example.
- the designated SME 290 or controller 175 determines whether the action (function or instruction) includes a regional or proximity constraint, step 710 , and if so, proceeds to step 715 .
- the action (or instruction) does not include a regional constraint in step 710
- the action (or instruction) is provided to a supercluster and a cluster level having sufficient availability of resources for the instruction, step 750 , such as a sufficient number of available contexts for the one or more types of composite circuit elements 260 provided in the symbolic netlist.
- the SME(s) 290 of the available cluster(s) 200 assign(s) the action (or instruction) to one or more available composite circuit elements 260 in the cluster(s) 200 , step 755 , by storing the corresponding information (configuration, the task ID, the action ID, and the source (or destination) task ID and action ID) in the corresponding memory 330 of each such composite circuit element 260 , or stored in a memory composite circuit element 260 , the second memory element 255 , or other memory accessible to the SME 290 and the composite circuit element 260 .
- the amount and location of the stored information may vary among selected embodiments.
- the action (or instruction) is stored locally in the memory 330 (or otherwise within the cluster 200 ) as a configuration, task ID, action ID, with corresponding linkage information (either data source for inputs or data destination for outputs, also by task ID and action ID).
- the availability count is modified, step 760 , such as automatically modified as described above for FIG. 13 , or by decrementing a count maintained in a register when, for example, the various counts are maintained by a designated SME 290 or controller 175 .
- the method determines whether all actions (or instructions) have been assigned, step 765 . When there are actions (or instructions) remaining to be assigned, the method then determines whether there are available resources remaining, step 770 . When there are available resources remaining in step 770 , the method returns to step 705 and iterates, selecting and assigning the next action (or instruction). When there are no more actions (or instructions) remaining for assignment, the method proceeds to step 800 to commence with routing (i.e., linking) all of the assigned actions (or instructions).
- step 765 When there are actions (or instructions) remaining to be assigned in step 765 , but there are no more available resources in step 770 , indicating that the selected algorithm may not be able to operate on the apparatus 100 as currently configured (or available), an error or exception message is generated, step 775 , and the method may end, return step 780 , as the symbolic netlist of the selected program cannot be currently assigned.
- the designated SME 290 or controller 175 may delete lower priority programs or operations which are consuming or utilizing resources, to make room for the selected program or operations and allow the selected program to execute on the apparatus 100 .
- the designated SME 290 or controller 175 may select another version of the program which may be able to be assigned without removing such other programs. In other instances, it may indicate that a larger apparatus 100 with more resources is needed for the selected application.
- step 710 When the selected action (or instruction) includes a regional constraint in step 710 , the method proceeds to step 715 , as illustrated in FIG. 14B .
- a regional constraint may take the form of, for example:
- region 3 supercluster region 1 cluster actions I1, I2 I1 I2 end region region 2 cluster actions I3, I4 I3 I4 end region end region in which a supercluster regional (proximity) constraint incorporates two cluster-level regional constraints, each of which has included actions (or instructions) subject to the constraint (“constrained actions”).
- zone 201 constraints may also be utilized.
- actions (or instructions) I1 and I2 (as symbolic netlist elements) must be assigned within the same cluster 200
- actions (or instructions) I3 and I4 (as symbolic netlist elements) must be assigned within the same cluster 200 (as Region 2, which may be the same or a different cluster than the Region 1 cluster of I1 and I2). Both clusters 200 , however, must be in the same supercluster, as incorporated within the supercluster constraint (region 3).
- step 715 the designated SME 290 or controller 175 determines whether the constraint is a supercluster constraint, which would require the set of constrained actions to be assigned within the same supercluster 185 .
- the designated SME 290 or controller 175 provides the supercluster constraint to all available superclusters 185 which meet the availability requirements of the constraint, and temporarily designates or marks those one or more superclusters as candidates, step 720 .
- the constrained actions are provided to all available clusters 200 which meet the first cluster constraint (within one or more superclusters, if required by the previous constraint), such as the various clusters which meet the Region 1 constraint of the example, and those clusters 200 are temporarily designated as candidates, step 725 .
- the next set of cluster-level constrained actions, if any, are provided to all available clusters 200 which meet the next cluster constraint (within one or more superclusters, if required by the previous constraint), such as the various clusters which meet the Region 2 constraint of the example, and those clusters 200 are also temporarily designated as candidates, step 730 .
- step 735 the method returns to step 730 , and continues the temporary designation process.
- step 735 determines whether one or more matches (supercluster and/or cluster levels) have been found, step 740 .
- the designated SME 290 or controller 175 selects at least one such match, assigns the constrained actions (or instructions) to the selected candidate set, releases all the other tentative assignments, and proceeds to step 760 , to modify the availability counts and continue the assignment process, as discussed above.
- step 740 When no match has been found in step 740 , indicating that the selected algorithm may not be able to operate on the apparatus 100 as currently configured (or available), the method returns to step 775 and generates an error or exception message, and the method may end, return step 780 , as the symbolic netlist of the selected program with the constraints cannot be currently assigned.
- the designated SME 290 or controller 175 may delete lower priority programs or operations or may utilize another version of the program which may be assigned more readily.
- each action (or instruction) has input or output information stored symbolically with the configuration for the selected context of a selected composite circuit element 260 . More specifically, the input or output information is stored effectively as pointers, with one task ID and action ID pointing to another task ID and action ID as either its data source (for input data) or data destination (to provide output data). Such information is stored symbolically or generically, because until the action (or instruction) has been assigned, the actual address for the data source or data destination is unknown.
- data source information is utilized consistently, or data destination information is utilized consistently, only one such set of information is needed, although both can be utilized to potentially increase resiliency.
- data source or data destination information is utilized to connect the data inputs (for the input queues 320 ) of a composite circuit element 260 , for each context, with the data outputs 375 (via output queues 315 ) of a context of another composite circuit element 260 (or the same composite circuit element 260 , for a feedback configuration).
- the data connections may all be circuit-switched, through the cluster queues 245 A and corresponding full or distributed interconnect 275 , 295 .
- the routing process begins, step 800 , as illustrated in FIG. 14C .
- the process is “bottom-up”, beginning at the cluster 200 level (or zone 201 and cluster 200 C levels) and proceeding to higher levels (supercluster and matrix levels) as needed.
- the process may also be initiated from a “top-down” perspective, such as by the designated SME 290 or controller 175 transmitting a request to the SMEs 290 of the clusters 200 to initiate the routing process of step 800 .
- one or more SMEs 290 of the corresponding clusters 200 begin the routing process by selecting an action (or instruction) of a first context of a composite circuit element 260 , and determining the source (or destination) task and action identifiers stored as part of the selected action (or instruction).
- this process may be performed by each SME 290 of each cluster 200 as a parallel process, resulting in a very highly efficient binding routing process.
- another SME 290 within the supercluster 185 may be utilized.
- these source (or destination) task and action IDs are stored in the memory 330 of the element interface and control 280 of the composite circuit element 260 .
- the source (or destination) task and action identifiers may be stored in other memory elements, such as a memory-type composite circuit element 260 M , second memory element 255 , or other memory elements which may be included within a cluster 200 .
- the memory 330 (or other memory element) may be implemented as a content addressable memory (“CAM”), as mentioned above, or as any other type of memory.
- CAM content addressable memory
- a SME 290 may examine all of the memories ( 330 , 255 , 260 M , etc.) within its cluster 200 by these source (or destination) task and action identifiers of the first context (the composite circuit element 260 context to be routed) to find the corresponding action (or instruction) of another, second context which matches these source (or destination) task and action identifiers.
- the SME 290 may perform a search of the memory ( 330 , 255 , 260 M , or other memory storing the task ID and action ID), such as a binary search, to find the corresponding action (or instruction) of another, second context which matches these source (or destination) task and action identifiers.
- step 810 the SME 290 then knows to route the selected, first context to this second context having the matching or corresponding action (or instruction).
- step 815 when source task and action identifiers are stored, the SME 290 routes the input(s) of the first context (as a data destination) to the corresponding output of the second context (as a data source), and when destination task and action identifiers are stored, the SME 290 routes the output(s) of the first context (as a data source) to the corresponding input(s) of the second context (as a data destination).
- the SME 290 establishes these internal cluster connections via the full interconnect element 275 or distributed full interconnect element 295 .
- step 815 when there are additional actions (or instructions) to be routed in step 820 , the method continues iteratively, returning to step 800 , with a SME 290 or other controller selecting the next action (or instruction) to be routed.
- the SME 290 When the matching action (or instruction) (having the corresponding task and action identifiers) of a second context of a composite circuit element 260 has not been found within a memory ( 330 , 255 , 260 M , etc.) of its cluster 200 , in step 810 , the SME 290 then knows that the corresponding data source or destination is not within its cluster 200 (referred to as a first cluster 200 ).
- the SME 290 both: (1) routes the selected, first context to the periphery of the first cluster 200 (to one of the first communication elements 250 for data transmission via interconnect 155 , through the full interconnect element 275 , distributed full interconnect element 295 , or the message manager 265 , or otherwise directly to the first communication element 250 ); and (2) generates a routing request (query) to the supercluster-level controller (which may be a designated SME 290 or controller 175 having this assigned duty) to find a second context in another cluster 200 of its supercluster 185 which may have the matching or corresponding action (or instruction).
- the supercluster-level controller which may be a designated SME 290 or controller 175 having this assigned duty
- step 830 From the perspective of the SME 290 of the first cluster 200 , its routing of the first context is complete, and it may proceed with routing of other contexts (actions (or instructions)), if any, returning to step 820 , with the supercluster controller (designated SME 290 or controller 175 ) then proceeding to step 830 .
- the supercluster controller transmits a request or query to all (other) clusters 200 within its supercluster 185 , for those SMEs 290 to determine whether the corresponding action (or instruction) is located in one of their memories ( 330 , 255 , 260 M , etc.), for routing at a second level of hierarchy.
- this second cluster 200 When one of these other clusters 200 , as a second cluster 200 , has the matching or corresponding action (or instruction) (i.e., has the source (or destination) task and action identifiers of the first context) as a second context of one of its composite circuit elements 260 , step 835 , this second cluster 200 then knows that this second context is the source or destination for data which is to be routed to or from another, first cluster 200 .
- the second SME 290 of the second cluster 200 routes this second context to the periphery of the second cluster 200 (to one of the first communication elements 250 for data transmission via interconnect 155 , through the full interconnect element 275 , distributed full interconnect element 295 , the message manager 265 , or otherwise directly to the first communication element 250 ), and transmits a corresponding message to the supercluster controller (designated SME 290 or controller 175 ), indicating or providing information that it has the second context having the matching or corresponding action (or instruction).
- the supercluster controller designated SME 290 or controller 175
- the supercluster controller creates a corresponding linkage between the first cluster 200 and the second cluster 200 , for the corresponding contexts, step 845 , such as by storing corresponding routing information in a second communication element 210 , and the cluster-to-cluster routing is complete. From the perspective of the SME 290 of the second cluster 200 , its routing is also complete, and it may proceed with routing of its other contexts (actions (or instructions)), if any, also returning to step 820 .
- one or more of the SMEs 290 within the supercluster 185 C may perform all such routing within a cluster 200 C or within the entire supercluster 185 C, all through the various cluster queues 245 A. Referring to FIG.
- a SME 290 may provide: (1) corresponding routing within a selected zone 201 B, such as directly from CE 4 to CE 5 , for example, via the full or distributed interconnect 275 , 295 ; (2) corresponding routing within a selected circuit cluster 200 C, such as directly from CE 4 to CE 12 via the full or distributed interconnects 275 , 295 and cluster queue 245 A 15 ; (3) corresponding routing to a selected adjacent circuit cluster 200 C, such as directly from CE 4 to another composite circuit element 260 of another cluster 200 C within the supercluster 185 C via the full or distributed interconnects 275 , 295 , any intervening (zone to zone) cluster queues 245 A, and then through a peripheral cluster queue 245 A, such as 245 A 10 ; (4) corresponding routing to a selected, non-adjacent circuit cluster 200 C within the supercluster 185 C, such as directly from CE 4 to another composite circuit element 260 of another cluster 200 C via the full or distributed interconnects 275 , 295 , any interven intervening
- any selected cluster queue 245 A (with a corresponding selected context) is a data destination for a selected context of data producing composite circuit element 260 , and is in turn a data source for either a selected context of a data consuming composite circuit element 260 or another selected context of a cluster queue 245 A (such as for data routing through a plurality of cluster queues 245 A, such as for data routing between clusters 200 C, for example, using either source- or destination-based communication, as described herein).
- step 835 when none of these other clusters 200 within the selected, first supercluster 185 has the matching or corresponding action (or instruction) (with the source (or destination) task and action identifiers of the first context) in a second context of one of its composite circuit elements 260 , the supercluster controller then knows that the corresponding data source or destination is not within its supercluster 185 (referred to as a first supercluster 185 ). As a consequence, in step 860 (illustrated in FIG.
- the first supercluster controller both: (1) routes the first context to the periphery of the first supercluster 185 (i.e., to one of the second communication elements 210 or to one of the message managers 265 ); and (2) generates a routing request to the matrix-level controller (which also may be a designated SME 290 or controller 175 having this assigned duty) to find a second context in another supercluster 185 of its matrix 150 which may have the matching or corresponding action (or instruction), for routing at a third level of hierarchy. From the perspective of the designated SME 290 or controller 175 of the first supercluster 185 , its routing is complete, and the method returns to step 820 , to continue the routing process for other actions, as may be needed, and also proceeds to step 865 .
- the matrix-level controller which also may be a designated SME 290 or controller 175 having this assigned duty
- the matrix controller transmits a request or query to all (other) clusters 200 within its matrix 150 , for those SMEs 290 to determine whether the corresponding action (or instruction) is located in one of their memories ( 330 , 255 , 260 M , etc.), for routing at this third level of hierarchy.
- This routing request may be transmitted directly to SMEs 290 of the clusters 200 , or may be transmitted via supercluster controllers.
- this second cluster 200 When one of these other clusters 200 , as a second cluster 200 , has the matching or corresponding action (or instruction) (i.e., has the source (or destination) task and action identifiers of the first context) as a second context of one of its composite circuit elements 260 , step 870 , this second cluster 200 then knows that this second context is the source or destination for data which is to be routed to or from another, first cluster 200 .
- the second SME 290 of the second cluster 200 routes this second context to the periphery of the second cluster 200 (to one of the first communication elements 250 for data transmission via interconnect 155 , through the full interconnect element 275 , distributed full interconnect element 295 , the message manager 265 , or otherwise directly to the first communication element 250 ), and transmits a corresponding message to the matrix controller (designated SME 290 or controller 175 ), indicating or providing information that it has the second context having the matching or corresponding action (or instruction).
- the matrix controller designated SME 290 or controller 175
- the matrix controller creates a corresponding linkage between the first cluster 200 and the second cluster 200 , for the corresponding contexts, step 880 , such as by storing corresponding routing information in a third communication element 190 and a second communication element 210 , and the supercluster-to-supercluster routing is complete. From the perspective of the SME 290 of the second cluster 200 , its routing is also complete, and it may proceed with routing of its other contexts (actions (or instructions)), if any, also returning to step 820 .
- step 870 when none of these other clusters 200 within the selected, first matrix 150 has the matching or corresponding action (or instruction) (with the source (or destination) task and action identifiers of the first context) in a second context of one of its composite circuit elements 260 , the matrix controller then knows that the corresponding data source or destination is not within the first matrix 150 .
- the first matrix 150 both: (1) routes the first context to the periphery of the first matrix 150 (i.e., to one of the third communication elements 190 ); and (2) generates a routing request to the other matrix-level controllers (which also may be a designated SME 290 or controller 175 having this assigned duty) to find a second context in another matrix 150 of the device 100 which may have the matching or corresponding action (or instruction), for routing at a fourth level of hierarchy.
- the other matrix-level controllers which also may be a designated SME 290 or controller 175 having this assigned duty
- step 820 From the perspective of the designated SME 290 or controller 175 of the first matrix 150 , its routing is complete, and the method returns both to step 820 , to continue the routing process for other actions, as may be needed, and the method iteratively repeats steps 865 - 880 , as needed, at the apparatus 100 level.
- the matching or corresponding action is in a second context of a composite circuit element 260 in a cluster 200 of a supercluster 185 of one of the matrices 150 , and the method searches up to the matrix or apparatus level, as needed, with those corresponding matrix- or apparatus-level controllers (designated SME 290 or controller 175 ) routing to their corresponding peripheries (e.g., third communication elements 190 and any intervening second communication elements 210 ) using interconnect 155 and transmitting queries to their corresponding lower-level superclusters 185 and clusters 200 .
- SME 290 or controller 175 those corresponding matrix- or apparatus-level controllers
- all actions (or instructions) become routed, connecting all data sources or data destinations with their corresponding data destinations or data sources, respectively, either within the same cluster 200 (step 815 ), or between clusters 200 (steps 825 , 840 , and 845 ) which are within the same supercluster 185 , or within the same matrix 150 (steps 875 and 880 ), or just within the apparatus 100 .
- the designated SME 290 or controller 175 sets or enables the run status for the particular task ID, step 850 .
- step 855 When there are additional tasks of a program or algorithm which have actions remaining to be routed, step 855 , the method continues, returning to step 800 , and when there are no further tasks having actions to be routed, the method may end, return step 780 . It should also be noted that step 850 , which sets or enables the run status for the particular task, may also be performed following step 855 , when all of tasks have been routed.
- the run status is a field utilized in the configuration word for a context (stored in memory 330 ) and utilized by the element controller 325 to determine whether the circuit element 270 should execute a selected context (i.e., perform the corresponding action). In this case, it indicates that the task has been fully configured, with all actions (or instructions) assigned and routed, such that it may be ready to execute, provided that other conditions are also met, as discussed below.
- the run status may also be utilized to start or stop selected tasks, or to purge a selected task, such as to load a new task in its place.
- a top-level controller such as a matrix-level controller (designated SME 290 or controller 175 ) may initiate the routing process, examining the stored and linked actions (or instructions), determining the routing within and between the various clusters, and passing the various configurations (as contexts) to the affected composite circuit elements 260 .
- the top-level controller such as a matrix-level controller (designated SME 290 or controller 175 ) may simply transmit the corresponding actions (or instructions) to the clusters 200 , which then initiate the routing process as described above with reference to FIGS. 14C and 14D .
- any of the plurality of SMEs 290 may perform the various roles of supercluster 185 controller, matrix 150 controller, or apparatus 100 controller. In the event of harm or damage to a given SME 290 , innumerable other SMEs 290 are available to assume any of these roles.
- the time involved for this assignment and routing process is linear with respect to the number of actions (or instructions) “k”, and proceeds quite rapidly, as it is performed concurrently in a massively parallel process within each cluster 200 .
- the worst case amount of time per context (or instruction) is typically 3n+1 or 4n+1 clock or computation cycles, for messages to be transmitted and routing to be completed to the corresponding peripheries of each level.
- the routing time at a minimum, is a function of k 2 and, if optimized, is non-deterministic and has an unpredictable routing time.
- clusters 200 are not required to be the same, and may be quite different, with different mixes of types of composite circuit elements 260 , without impacting the ability to program the resulting device.
- any cluster 200 with many multiplier-type composite circuit elements 260 will simply have more availability for assignment of multiplication operations, such that those types of actions (or instructions) will automatically gravitate to those types of clusters 200 .
- the assignment and binding time would be the same for both homogeneous or heterogeneous clusters 200 .
- the cluster 200 or the individual component may be designated or marked as unavailable.
- any tasks and/or actions (or instructions) assigned to an affected composite circuit element 260 should be placed with one or more other composite circuit elements 260 , and this may be performed in a wide variety of ways.
- FIG. 15 is a flow diagram illustrating a first exemplary re-assignment and re-binding process in accordance with the teachings of the present invention.
- this first approach starting with step 900 , such as due to a failure indication during self-testing, one or more SMEs 290 (from within the same cluster 200 if unaffected by the damage or failure, or from another cluster 200 ) marks or designates the affected composite circuit element 260 as unavailable, step 905 , and directs the element controller 325 of the affected composite circuit element 260 to stop executing all contexts, step 910 , typically utilizing the run status bit.
- the SME 290 would also transmit a message to the linked data source composite circuit elements 260 , to direct those composite circuit element(s) 260 to stop producing data and transferring it to the affected composite circuit element 260 , step 915 .
- the SME 290 determines which (if any) other composite circuit elements 260 are available to take over the affected functionality (i.e., the functionality which had been performed by the affected and now unavailable composite circuit element 260 ), and copies the contexts stored in the memory 330 of the affected composite circuit element 260 to one or more memories 330 of the available composite circuit element(s) 260 of the same type which have available contexts, step 920 .
- the SME 290 may store and maintain a transformation table, which indicates which composite circuit elements 260 have availability and have the requisite type of circuit element 270 for such a transfer of functionality.
- the SME 290 may also copy the contents of the associated input queues 320 to the input queues 320 of the available composite circuit elements 260 , step 925 ; alternatively, for certain types of real-time data, the input data may be discarded or, equivalently, allowed to remain in the associated input queues, with operations resuming at the available composite circuit element(s) 260 using newly produced data.
- the SME 290 then re-routes the connections to and from the available composite circuit elements 260 , step 930 , such as by doing source (or destination) task and action identifier searches as discussed above and, in addition, if both source and destination task and action identifier information is not stored, performing a search for the affected actions (or instructions) in other memories 330 of other composite circuit elements 260 , to determine the corresponding data destinations (or sources) to complete the routing.
- Other routing steps as discussed above also may be utilized as needed (e.g., for routing between clusters 200 ).
- step 935 the SME 290 then resets the corresponding run status bits of the transferred contexts, to re-enable the execution of the affected actions (or instructions) by the available composite circuit element(s) 260 , and the re-assignment and re-binding process may end, return step 940 .
- the task may be re-assigned and re-bound (e.g., as illustrated in FIGS. 12-14 ) and, given the affected components are no longer available, no actions (or instructions) will be assigned to them.
- This approach also has the advantage of preserving any locality constraints, as such constraints will be included within the task actions (or instructions).
- this re-assignment and re-binding process proceeds rapidly, with minimal disruption, particularly when the number of affected actions (or instructions) is comparatively small.
- one of the designated SMEs 290 may also direct the element controller 325 of the affected composite circuit element 260 to stop executing all contexts, transmit a message to the linked data source composite circuit element(s) 260 to direct the source composite circuit element(s) 260 to stop producing data and transferring it to the affected composite circuit element 260 , copy the contents of the associated input queues 320 to the newly assigned, available composite circuit elements 260 , and reset the run status bits for the transferred contexts of the available composite circuit elements 260 .
- a program or algorithm that has been compiled as a symbolic netlist for the apparatus 100 has been assigned and routed within the apparatus 100 , creating all of the composite circuit element 260 configurations (stored as contexts) and data path connections (via full interconnect element 275 , distributed full interconnect element 295 , or interconnect 155 ). While the apparatus 100 has been designed to enable such assignment and routing in real time, it is not required to be performed in real-time and may be performed in advance, with all such assignment and routing within the scope of the present invention. With this background, the operation of and control of execution within the apparatus 100 may now be explained.
- FIG. 16 is a diagram illustrating an exemplary configuration and control word 1000 in accordance with the teachings of the present invention.
- the exemplary configuration word 1000 is comprised of a plurality of data fields, and comprises at least two or more of the following data fields, in any order: an element configuration field 1010 ; a task ID field 1015 ; an action ID field 1020 ; a destination (and/or source) address field 1025 (designating a destination (or source) composite circuit element 260 , a port, and context); an optional “fork” field 1030 ; a significant inputs (“SI”) field 1035 ; a significant outputs (“SO”) field 1040 ; an optional cycles (“CY”) field 1045 ; a run status field 1050 ; an optional priority field 1055 ; an optional state ready field 1060 ; an optional next field 1065 ; an optional last context field 1070 ; an optional interrupts field 1075 ; an optional single-step field 1080 ; and an optional constant mode field 1085 .
- SI significant input
- a corresponding configuration and control word 1000 it utilized for each context of the composite circuit element 260 it utilized for each context of the composite circuit element 260 . It will be apparent to those of skill in the electronic arts that additional or fewer fields may be utilized, depending upon the applications and objectives of the selected apparatus 100 and any incorporated system, and all such variations are within the scope of the present invention.
- a plurality of configuration words, one for each context, are utilized by the element controller 325 to control the configuration and execution of a configurable element 270 .
- Each configuration word is indexed by the context number.
- the one or more configuration bits which control how the configurable element 270 is to be configured or how data is to be interpreted is or are stored in element configuration field 1010 .
- the assigned and routed (bound) actions (or instructions) are stored as the corresponding task ID, in field 1015 , and the action ID in field 1020 .
- the data output and/or data input locations, as bound destination (and/or source) addresses, are stored in field 1025 .
- the data input and/or data output pointers may be stored, depending upon the methodology implemented for potential re-routing. For example, when an entire task is re-assigned and re-bound de novo, new routing information will be generated, rather than utilizing the previously stored source and destination information.
- the remaining control fields are utilized to control whether and when a given context is executed (for a corresponding action to be performed by the circuit element 270 ), how interrupts are serviced by the SME 290 , and how output data is provided to one or more destination addresses.
- the element controller 325 in exemplary embodiments, comprises combinational logic gates or elements, such as AND, OR and INVERTER gates, which provide a result (a given context executes or does not execute), based upon the values of the bits stored in the various fields (e.g., 1035 , 1040 , 1050 , 1060 ) of the exemplary configuration and control word 1000 .
- FIG. 17 is a block diagram illustrating exemplary combinational logic circuitry 1100 for context readiness determination within an exemplary apparatus in accordance with the teachings of the present invention.
- a context may execute when it has sufficient input data and a sufficiently free or available destination for the resulting output data.
- the significant input (SI) bits ( 1035 ) designate which of those inputs are to be utilized in the selected context.
- the input queues 320 are adapted to provide a first signal, referred to as “enough input” (“EI”), indicating that there is sufficient data in the corresponding input queues 320 .
- each of the SI bits are inverted, and each of the inverted SI bits and its corresponding EI signal are ORed (OR gates 1110 0 through 1110 n ), with all of their corresponding OR results (four results for four inputs) then ANDed together (AND gate 1115 ), to provide a “data input ready” signal, such that the AND result (data input ready) indicates that there is sufficient data available at the inputs which will be utilized by the selected context. More specifically, the data input ready signal is provided when (1) there is enough input data at the significant inputs, and (2) any other remaining input is not significant.
- the significant output (SO) bits ( 1040 ) designate which of those outputs and corresponding queues are to be utilized in the selected context.
- a second signal referred to as a “room for more” (“RFM”) signal is provided to indicate that the corresponding destination(s) have sufficient space available for output data, either from the output queues 315 or from the input queues 320 of the data destination, or potentially from an output register tracking output data consumption.
- the SO bits are inverted, and each of the inverted SO bits and its corresponding RFM signal are ORed (OR gates 1120 0 through 1120 n ), with all of their corresponding OR results (two results for two outputs) then ANDed together (AND gate 1125 ), to provide a “data output ready” signal, such that the AND result (data output ready) indicates that there is sufficient memory space available for data output by the selected context, namely, space available in the corresponding output queues 315 (or destination input queues 320 (or other memory)). More specifically, the data output ready signal is provided when (1) there is room for output data at the significant outputs, and (2) any other remaining output is not significant.
- the data input ready and data output ready then may be ANDed together (AND gate 1130 ), to provide an overall data “ready” status for a selected context.
- the ready status is equal to a logic one when both the data input(s) and data output(s) are ready, and is zero otherwise.
- the data input ready and data output ready results may be ANDed with other fields (state ready and run status, discussed below), to provide an overall indication that the context is ready for execution (a “context ready” signal).
- the run status stored in field 1050 indicates whether the context has been enabled for execution, and may be set following data input-output routing in the binding process, or set (or reset) at other times by the SME 290 .
- the task (of which the selected context is a part) may still be in the process of being configured and routed for other configurable elements 270 , and should not be enabled until such routing is complete.
- one of the SMEs 290 may have halted a task, for possible resumption at another time, or may be in the process of deleting tasks.
- the element controller 325 will execute a context only when enabled, as indicated by the run status in field 1050 .
- the SME 290 may also utilize one or more state ready bits (stored in optional field 1060 ) to control context execution based on various conditions or other events. For example, when a condition has been met, such as an initialization, a selected context may need to be run next, and is designated with the state ready bits. All of these bits (run status, state ready, data output ready signal, data input ready signal) may be ANDed (AND gate 1130 ), and the result may also be stored within the run status field 1050 or another field accessible by the element controller 325 . As a consequence, the conjunction of the state ready bits, the data input ready, data output ready and run status indicators, provide an indication to cause the element controller 325 to allow execution of the selected context. Alternatively, operations may be controlled through use of the run status (of field 1050 ), without the state ready bits, allowing the SME 290 to simply designate whether the context is or is not enabled for execution.
- the optional cycles field 1045 is utilized to designate the number of clock cycles required to execute the corresponding action. This field is utilized to avoid another, second context being executed while computations of a first context are still in progress.
- the optional single-step field 1080 is utilized to provide for a context to execute just once, such as for results to be examined by the SME 290 .
- Various testing contexts are often run in a single-step mode, with the SME 290 setting or clearing a single-step bit (e.g., for a test to be run at selected times, and to not be always available to run).
- the optional context field 1070 may be utilized as part of arbitration among potential execution of a plurality of contexts.
- the last context bit is set (and the last context bits of the other contexts are reset to zero).
- the last context bit is utilized to determine if one of the contexts just executed, and if so, allows the other context to execute, to avoid one context from completely dominating execution in the configurable element 270 .
- one or more optional priority bits (stored in field 1055 ) may be utilized to arbitrate and allow the higher priority context to execute first.
- the optional next indicator (stored in field 1065 ), also referred to as a “chain” indicator, is utilized to determine the next context to execute, and is particularly useful for controlling the sequence in which contexts are executed, i.e., chaining together a sequence of operations.
- the element controller 325 can commence execution of the “chain lead” context (the first context of the chain, also as designated within field 1065 ), when the other conditions discussed above have been met. Thereafter, the element controller 325 will execute the next context in the sequence, as designated in the field 1065 , also when the other conditions (e.g., EI, RFM, etc.) have been met, and otherwise will wait for the next context to become available. If the next context is the same as the current context, then execution of the sequence has been completed.
- This field 1065 may also include a designation as to whether the data input(s) will be consumed.
- the optional “fork” field 1030 is utilized for output replication, when the same output is to be provided (or replicated) to multiple destinations. Additional contexts are utilized to store these additional destinations.
- the element controller 325 can commence execution of the “fork lead” context (the first context of the fork, also as designated within field 1030 ), when the other conditions discussed above have been met. Thereafter, when the one or more bits of the fork field 1030 indicate another context, the current output will be provided (copied sequentially) as the output for that context, avoiding a need to re-execute a context based on the same data to provide the same output, just to a different location.
- an optional “interrupts” field 1075 may also be provided. This field may designate, as part of the configuration word 1000 , the setting, masking, and detecting of interrupts, including when a context executes. These interrupts are serviced by the SME 290 .
- an optional constant mode field 1085 may be utilized, to designate that one or more of the input data words is a constant. For such a constant, it is generally maintained (until changed), so the constant is not consumed during data operations.
- selected bits of the constant mode field 1085 are also utilized to indicate the next data read location (e.g., which data word in a two word input queue 320 ), such as for toggling or switching between two or more constant values.
- the element controller 325 may be implemented using a plurality of combinational logic gates, which evaluate the various fields of the configuration and control word 1000 (and other control signals) for each context. When the various fields and other signal indicate that a context is both ready and should be run, the element controller 325 loads the configuration of the context, and the corresponding task or action (or instruction) is executed.
- the present invention provides a compiler for a resilient and adaptive integrated circuitry with self-healing capabilities. Numerous advantages of the exemplary embodiments are readily apparent.
- the IC architecture of the present invention is resilient, providing adaptation for manufacturing defects, flaws which may arise during usage of the IC, and adaptability for new features, services, algorithms, and other events.
- This IC architecture is self-healing, because in the event a portion of the IC is damaged or otherwise becomes unusable, another portion of the IC is effectively “recruited” or reassigned to take over and perform the functions of the damaged portion.
- the present invention allows a single component to be switched out, and does not have the fixed wiring of the prior art.
- Coupled means and includes any direct or indirect electrical, structural or magnetic coupling, connection or attachment, or adaptation or capability for such a direct or indirect electrical, structural or magnetic coupling, connection or attachment, including integrally formed components and components which are coupled via or through another component.
- any signal arrows in the drawings/ Figures should be considered only exemplary, and not limiting, unless otherwise specifically noted. Combinations of components of steps will also be considered within the scope of the present invention, particularly where the ability to separate or combine is unclear or foreseeable.
- the disjunctive term “or”, as used herein and throughout the claims that follow, is generally intended to mean “and/or”, having both conjunctive and disjunctive meanings (and is not confined to an “exclusive or” meaning), unless otherwise indicated.
- “a”, “an”, and “the” include plural references unless the context clearly dictates otherwise.
- the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Logic Circuits (AREA)
- Hardware Redundancy (AREA)
- Semiconductor Integrated Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
- Display Devices Of Pinball Game Machines (AREA)
- Devices For Executing Special Programs (AREA)
- Pinball Game Machines (AREA)
Abstract
The exemplary embodiments provide a compiler for a reconfigurable integrated circuit having reconfigurable computational elements with a plurality of contexts. An exemplary compiler generates a compilation comprising a designation of a first type of reconfigurable computational element, the data input linkage or the data output linkage for a first action, and a portion of a first configuration for the first type of reconfigurable computational element comprising a first task identifier and the first action identifier. The reconfigurable integrated circuit utilizes the first task identifier and a run status designation in enabling and disabling corresponding contexts for execution by the reconfigurable computational elements. The first configuration, typically generated in a binding process, further comprises a first input data source address from the first data input linkage or a first output data destination address from the first data output linkage.
Description
- This application is a continuation of and claims the benefit of and priority to Kelem, Steven Hennick et al., U.S. patent application Ser. No. 11/766,034, filed Jun. 20, 2007, titled “Compiler System, Method and Software for a Resilient Integrated Circuit Architecture”, which is a continuation-in-part of and claims the benefit of and priority to Kelem, Steven Hennick et al., U.S. patent application Ser. No. 11/471,832, filed Jun. 21, 2006, titled “Fault Tolerant Integrated Circuit Architecture” (the “first related application”), which is commonly assigned herewith, the contents of all of which are incorporated herein by reference, and with priority claimed for all commonly disclosed subject matter.
- U.S. patent application Ser. No. 11/766,034 is also a continuation-in-part of and claims the benefit of and priority to Kelem, Steven Hennick et al., U.S. patent application Ser. No. 11/471,875, filed Jun. 21, 2006, titled “Resilient Integrated Circuit Architecture” (the “second related application”), which is commonly assigned herewith, the contents of all of which are incorporated herein by reference, and with priority claimed for all commonly disclosed subject matter.
- The present invention relates, in general, to compilers for integrated circuits and, more particularly, to a compiler for integrated circuitry having distributed and configurable circuit elements, distributed communication circuit elements, and distributed control circuit elements, for transferable functionality, fault tolerance and resilience.
- Historically, integrated circuits (“ICs”) which are configurable post-fabrication have been dominated by field programmable gate arrays (“FPGAs”), which provide an array of identical logic gates or other elements. In some integrated circuit embodiments, the gate array is also coupled to one or more microprocessor cores, for the FPGA components to provide configurable, application-specific acceleration of selected computations. The logic elements in an FPGA are typically very “fine-grained”, as gate arrays which can be connected through data inputs and outputs (“I/O”) to provide a more advanced function such as addition, subtraction or comparison, without separate hard-wired, application-specific components directly providing such advanced functions. The process for configuring the gate arrays of FPGAs is comparatively slow, typically through a serial configuration bus, so that FPGAs generally have not been capable of real-time re-configuration for immediate changes in functionality.
- In other circumstances, configurable ICs have involved large-scale (or “coarse-grained” configurable logic elements which are capable of significant functionality, such as multimedia processing, arithmetic processing, and communication functionality. While these large-scale configurable logic elements provide extremely capable acceleration, each group of configurable logic elements is typically different and requires separate programming to carry out its functions. In addition, such large-scale configurable logic elements are not translatable to other functions, exhibiting similar constraints of application-specific ICs (“ASICs”).
- Configurable capabilities have also been added to microprocessor, ASIC and memory ICs. For example, in memory ICs, extra or redundant rows and columns are fabricated; when subsequent testing may reveal that selected rows and columns have defects, those affected IC regions are disabled, with the balance of the memory IC being useable potentially and, with the redundancy, may still meet the memory capacity specification. In other circumstances, some amount of configurability may be added to correct for design errors and other defects after the IC has been fabricated, or to allow modification of inputs and outputs, such as for configurable I/O and configurable data path widths.
- In addition, after configuration and during operation, such FPGAs, ASICs, processors, and other configurable logic do not exhibit resiliency. For example, if a portion of the IC becomes defective during operation, the entire IC fails instantly, losing all functionality. While the IC may be taken off line or removed, diagnosed, and depending upon the damage, possibly reconfigured, such ICs are not capable of real-time reconfiguration and transferring of functionality to unaffected portions of the IC.
- Another technology created by IBM and referred to as “eFuse” utilizes electromigration to create microscopic electrical fuses which disable selected or defective portions of the IC, with software utilized to open or close gates to re-route chip logic to the remaining good portions of the IC, such as to correct design flaws, fabrication defects, and manage power consumption. For example, the eFuse technology can disable defective memory rows and columns, and eFuse software can change memory addresses so that data will be stored in the non-defective portions of the memory.
- None of these technologies, however, addresses the increasing number of defects which are now arising in sub-100 nm IC fabrication. More particularly, as IC feature size continues to decrease below 90 nm, there are increasing levels of defects and decreased IC yields. In addition, while an IC initially may be sufficiently free of defects to operate for its intended use, the smaller feature size also increases the probability of IC failure during operation, such as due to tunneling and electromigration effects.
- In addition, while each of these prior art technologies have their own advantages, such as an ability to correct design flaws and to work-around minor fabrication defects, none of these prior art technologies provide sustainable resiliency over time, during IC operation. Whether defects were created during fabrication or much later, during IC usage, these known technologies simply cannot accommodate both certain kinds of defects and certain levels of defects, and the entire IC fails completely. Such failure is often catastrophic, such that the entire IC fails instantly and without warning. For example, if a region of a microprocessor fails, the entire microprocessor becomes instantly useless.
- To attempt to provide some level of resiliency, these various technologies have simply added some redundancy. For example, multiple processors will be placed on the same IC, such that if a defect causes one processor to fail, a redundant processor is available to take over. In these circumstances, however, either the redundant processor was previously completely idle and unused, or its prior functioning has been superseded and completely lost. In either event, this resiliency is at the expense of approximately twice the IC area and significantly increased manufacturing costs. In addition, such basic redundancy efforts do not account for defects which may occur within all redundant components, as even small defects may cause such components to fail.
- As a consequence, a need remains for an integrated circuit architecture which is significantly resilient and robust despite fabrication or usage defects which can affect any components, without the expense of otherwise unused redundancy. Such an IC should provide for ongoing adaptation, such that when a defect arises, functionality may be transferred to an unaffected region in real-time or near-real time. Such technology should provide for configuration (programming or other software) for the IC which allows such transferable functionality, without requiring the entire program to be transferred to a completely redundant processor. Accordingly, a need remains for a compiler which can convert an algorithm into a form suitable for assignment to and execution by the resilient integrated circuit.
- The exemplary embodiments of the present invention provide a compiler for an integrated circuit architecture which is capable of significant resiliency, without otherwise unused redundancy. The exemplary IC embodiment may be adapted on an ongoing basis, as may be necessary in the event of a defect, or as may be desirable for incorporation of a new program or function. For example, in the event a defect arises, functionality may be transferred to an unaffected region in real-time or near-real time. The exemplary architecture and software for the IC also allows such transferable functionality, without requiring the entire program to be transferred to a completely redundant processor or otherwise unused computational block. In addition, the exemplary IC embodiments provide for a graceful degradation and notification with increasing defects or problems, which may occur during use (in addition to fabrication), rather than a catastrophic failure.
- In an exemplary embodiment, an apparatus is provided which comprises a plurality of composite circuit elements, a plurality of communication elements coupled to the plurality of composite circuit elements; and a state machine element coupled to the plurality of composite circuit elements and to the plurality of communication elements. Each composite circuit element comprises a corresponding element interface and a corresponding circuit element of a plurality of circuit element types, with each composite circuit element having at least one input and at least one output, and with a first composite circuit element of the plurality of composite circuit elements having a first circuit element type of the plurality of circuit element types and a second composite circuit element of the plurality of composite circuit elements having a second circuit element type of the plurality of circuit element types. The state machine element is adapted to assign a first action to the first composite circuit element, to assign a second action to the second composite circuit element, and to provide for a first virtual data link through a selected communication element, of the plurality of communication elements, from the at least one output of the first composite circuit element to the at least one input of the second composite circuit element.
- In an exemplary embodiment, the plurality of circuit element types comprises at least one of the following circuit element types: a plurality of configurable element types, a memory element type, a plurality of communication element types; and a plurality of non-configurable element types. For example, the first circuit element type is a first configurable element type of the plurality of configurable element types, the second circuit element type is a second configurable element type of the plurality of configurable element types, and wherein the state machine element is further adapted to assign the first action as a first configuration of the first composite circuit element and assign the second action as a second configuration of the second composite circuit element. The state machine element may be further adapted to obtain the first configuration and first configurable element type from a first symbolic netlist element and to obtain the second configuration and second configurable circuit element type from a second symbolic netlist element during a run-time binding of the first action and the second action. In addition, the first symbolic netlist element further comprises a pointer designating the first virtual data link as a data communication to the at least one input of the second composite circuit element, and the second symbolic netlist element may further comprise a pointer designating the virtual data link as a data communication from the at least one output of the first composite circuit element.
- The state machine element may be further adapted to assign the first action to the first composite circuit element and assign the second action to the second composite circuit element following a determination that both the first composite circuit element and the second composite circuit element are operating properly. The operational determination is at least one of the following determinations: a periodic diagnostic performed by at least one composite circuit element of the plurality of composite circuit elements; a background diagnostic performed as a selected context of at least one composite circuit element of the plurality of composite circuit elements; or a comparison test performed by a plurality of composite circuit elements of the same circuit element type.
- The state machine element is further adapted, in response to a detected fault of the first composite circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements, the third composite circuit element having a circuit element of the first circuit element type, and the state machine element further adapted to provide for a second virtual data link through a communication element, of the plurality of communication elements, from the at least one output of the third composite circuit element to the at least one input of the second composite circuit element. Alternatively, the state machine element is further adapted, in response to a detected fault of the first circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements, the third composite circuit element having a circuit element of a third circuit element type, and the state machine element further adapted to provide for a third virtual data link through a communication element, of the plurality of communication elements, from the at least one output of the third composite circuit element to the at least one input of the second composite circuit element. In an exemplary embodiment, the state machine element is further adapted to use a stored transformation table having a reference to the third composite circuit element for transfer of the first action.
- In an exemplary embodiment, a compilation method is provided for an integrated circuit having a plurality of types of computational elements and having a plurality of communication elements. The exemplary compilation method comprises: converting an algorithm into a plurality of tasks; assigning a task identifier to each task of the plurality of tasks; determining an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; assigning a first action identifier to a first action of the plurality of actions; mapping the first action to a first type of computational element of the plurality of types of computational elements; determining a data input linkage or a data output linkage for the first action; and generating a compilation designating the first type of computational element and the data input linkage or the data output linkage for the first action.
- Typically, the data input linkage is data source and wherein the data output linkage is a data destination. In an exemplary embodiment, the data input linkage or data output linkage is identified by a corresponding task identifier and a corresponding action identifier.
- In an exemplary embodiment, the compilation further comprises a first task identifier and a first action identifier, and may further comprise a second task identifier and a second action identifier which identify the input linkage or the output linkage for the first action. In another exemplary embodiment, the compilation further comprises a pointer which identifies the data input linkage or the data output linkage for the first action.
- As indicated above, in an exemplary embodiment, the compilation is a symbolic netlist comprising the first type of computational element, a first task identifier, a first action identifier, a second task identifier, and a second action identifier, wherein the second task identifier and the second action identifier correspond to the data input linkage or to the data output linkage for the first action.
- The exemplary compilation method may also determine a proximity constraint for the first action or another type of a timing constraint for the first action. Typically, the first action corresponds to the function of the first type of computational element, and the first action identifier differentiates the first action from other actions of the plurality of actions of the first task.
- Significantly, to allow for run-time binding and re-binding, the compilation does not assign the first task and first action to a specific instance of the first type of computational element in the integrated circuit.
- Also for example, the plurality of actions may comprise at least two of the following: signed addition, unsigned addition, multiplication, bit reordering, barrel shifting. Similarly, the plurality of types of computational elements may comprise at least two of the following types of computational elements: an arithmetic logic unit, a multiplier, an adder, a barrel shifter, a bit re-ordering element, a processor.
- In another exemplary embodiment, a computing system is provided for compiling an algorithm for performance by an integrated circuit, with the integrated circuit having a plurality of types of computational elements and having a plurality of communication elements. The exemplary system comprises: a memory adapted to store the algorithm; and a processor coupled to the memory, with the processor being adapted to perform the compiling method described above. For instance, the processor is adapted to convert the algorithm into a plurality of tasks; to assign a task identifier to each task of the plurality of tasks; to determine an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; to assign a first action identifier to a first action of the plurality of actions; to map the first action to a first type of computational element of the plurality of types of computational elements; to determine a data input linkage or a data output linkage for the first action; and to generate a compilation designating the first type of computational element and the input linkage or the output linkage for the first action.
- In another exemplary embodiment, a compilation method comprises: converting an algorithm into a plurality of tasks; assigning a task identifier to each task of the plurality of tasks; determining a first action, of a plurality of actions, corresponding to a first task of the plurality of tasks; assigning a first action identifier to the first action; mapping the first action to a first type of computational element of the plurality of types of computational elements; determining a second action, of a plurality of actions, corresponding to a second task of the plurality of tasks; assigning a second action identifier to the second action; mapping the second action to a second type of computational element of the plurality of types of computational elements; determining a data input linkage or a data output linkage between the first action and the second action; and generating a compilation designating the first type of computational element, the second type of computational element, and the data input linkage or the data output linkage between the first and second types of computational elements.
- In another exemplary embodiment, a computer readable medium is encoded with a computer program having instructions for compiling an algorithm for an integrated circuit, with the computer program instructions comprising: a first program construct of a plurality of program constructs adapted to convert the algorithm into a plurality of tasks; a second program construct of the plurality of program constructs adapted to assign a task identifier to each task of the plurality of tasks; a third program construct of the plurality of program constructs adapted to determine an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; a fourth program construct of the plurality of program constructs adapted to assign a first action identifier to a first action of the plurality of actions; a fifth program construct of the plurality of program constructs adapted to map the first action to a first type of computational element of the plurality of types of computational elements; a sixth program construct of the plurality of program constructs adapted to determine a data input linkage or a data output linkage for the first action; and a seventh program construct of the plurality of program constructs adapted to generate a compilation designating the first type of computational element and the input linkage or the output linkage for the first action. The computer readable medium may also include an eighth program construct adapted to determine a proximity or a timing constraint for the first action.
- Another exemplary computing system embodiment comprises: a memory adapted to store the algorithm; and a processor coupled to the memory, the processor adapted to convert the algorithm into a plurality of tasks; to assign a task identifier to each task of the plurality of tasks; to determine an action, of a plurality of actions, corresponding to a first task of the plurality of tasks; to assign a first action identifier to a first action of the plurality of actions; to map the first action to a first type of computational element of the plurality of types of computational elements; to determine a second action, of a plurality of actions, corresponding to a second task of the plurality of tasks; to assign a second action identifier to the second action; to map the second action to a second type of computational element of the plurality of types of computational elements; to determine a data input linkage or a data output linkage between the first action and the second action; and to generate a compilation designating the first type of computational element, a first task identifier, a first action identifier, the second type of computational element, a second task identifier, a second action identifier, and the data input linkage or the data output linkage between the first and second types of computational elements.
- Referring again to the inventive architecture, the plurality of composite circuit elements also may be adapted to store periodically a then current state and, in response to a detected fault, to retrieve the stored state and recommence operation using the stored state.
- Also in an exemplary embodiment, each corresponding element interface comprises: a first memory coupled to the corresponding circuit element, the first memory adapted to store a plurality of configurations as corresponding contexts; an element controller coupled to the corresponding circuit element; and a second memory coupled to the corresponding circuit element, the second memory adapted to provide a plurality of input queues for data input to the corresponding circuit element. Each corresponding context defines a configuration of the corresponding circuit element, and either one or more data input sources or one or more data output destinations. The element interface may further comprise a third memory coupled to the circuit element, the third memory adapted to provide a plurality of output queues for data output from the circuit element. Alternatively, the element interface may include the third memory for output queues, without including the second memory for input queues. In an exemplary embodiment, the element controller is adapted, for a selected context of the plurality of contexts, to direct an execution of the selected context by the circuit element when a selected input queue corresponding to the selected context has input data, when a selected output queue corresponding to the selected context has capacity to store output data, and when a status bit corresponding to the selected context is set for execution. Also, the element controller may be further adapted to store a current state of a partial execution of a first context in the first memory, execute a second context, and retrieve the current state and resume execution of the first context.
- The element controller may be further adapted to arbitrate among a plurality of contexts which are ready for execution and to select a corresponding context for execution as a result of the arbitration. For example, the arbitration implements at least one of the following arbitration methods: a round-robin, a priority, a most recently executed, a least recently executed, or a scheduled execution.
- Similarly, in an exemplary embodiment, each communication element of the plurality of communication elements further comprises a corresponding element interface and a corresponding communication circuit element, and the state machine element further comprises a corresponding element interface and a corresponding state machine circuit element.
- In an exemplary embodiment, the plurality of communication elements further comprise: a plurality of first communication elements, the plurality of first communication elements adapted both to route at least one first data word and to switch at least one second data word; and a full interconnect element coupled to the plurality of composite circuit elements and to the plurality of first communication elements, the full interconnect element adapted to couple any output of a composite circuit element of the plurality of composite circuit elements to any input of another composite circuit element of the plurality of composite circuit elements or to the plurality of first communication elements. The full interconnect element may be distributed among a plurality of switches, pass transistors, multiplexers or demultiplexers. In other exemplary embodiments, the full interconnect element is a crossbar switch. Also, the full interconnect element may be adapted to provide at least one of the following physical data links: a plurality of one-to-one input and output data links, a one-to-many broadcast data link, a many-to-one data link.
- The state machine element may provide for the first virtual data link through either a selected first communication element of the plurality of first communication elements or through the full interconnect element. A selected communication element may be further adapted to determine from the first virtual data link at least one first physical data link, of a plurality of physical data links, from the at least one output of the first composite circuit element to the at least one input of the second composite circuit element. In addition, the selected communication element is further adapted to create the plurality of physical data links at a selected time or a selected clock cycle using a routing table stored in a corresponding memory.
- In exemplary embodiments, the plurality of communication elements further comprise a plurality of second communication elements which are adapted to route or switch at least one third data word between a first array of the plurality of composite circuit elements and a second array of the plurality of composite circuit elements. The plurality of communication elements may also comprise an intercluster queue adapted to buffer at least one third data word from a first array of the plurality of composite circuit elements and transfer the at least one third data word to an adjacent second array of the plurality of composite circuit elements
- Exemplary embodiments may also include a message manager circuit coupled to the state machine element, the message manager circuit adapted to provide a communication interface to an external bus or an external memory. In addition, the message manager circuit may also provide a uniform address space for a distributed plurality of memory composite circuit elements.
- In exemplary embodiments, the plurality of circuit element types may comprise any of the following circuit element types: a configurable arithmetic logic unit, a configurable multiplier, a configurable bit reordering element a configurable multiply and accumulate element, a configurable Galois multiplier, a configurable barrel shifter, a configurable look-up table, a programmable controller, a configurable controller, and a configurable plurality of arithmetic logic units.
- In exemplary embodiments, the state machine element may be coupled to the plurality of composite circuit elements either directly or through at least one communication element of the plurality of communication elements. In other exemplary embodiments, the state machine element is an external controller or external processor coupled to the plurality of composite circuit elements through at least one communication element of the plurality of communication elements. Typically, the state machine element further comprises: a finite state machine circuit and a memory adapted to store state information.
- In exemplary embodiments, another operating mode is provided. In this mode, the state machine element provides for a first physical data link through the selected communication element from the at least one output of the first composite circuit element to the at least one input of the second composite circuit element, and wherein the state machine element is further adapted to provide for execution of the first action and the second action.
- In another exemplary embodiment, an inventive apparatus comprises: (1) a plurality of circuit arrays, each circuit array of the plurality of circuit arrays comprising: (a) a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, each composite circuit element having at least one input and at least one output, the plurality of circuit element types comprising a plurality of configurable element types; (b) a full interconnect element coupled to the plurality of composite circuit elements, the full interconnect element adapted to couple any output of a first composite circuit element of the plurality of composite circuit elements to any input of a second composite circuit element of the plurality of composite circuit elements; (c) a plurality of first communication elements coupled to the full interconnect element; (d) a state machine element coupled to the plurality of composite circuit elements, to the full interconnect element, and to the plurality of first communication elements; and (2) an interconnect coupled to the plurality of circuit arrays, the interconnect comprising a plurality of second communication elements coupled to the plurality of first communication elements, the plurality of second communication elements adapted to transfer data from a first circuit array to a second circuit array of the plurality of circuit arrays.
- In another exemplary embodiment, an inventive apparatus comprises a plurality of circuit arrays, at least two circuit arrays of the plurality of circuit arrays comprising: (a) a plurality of configurable composite circuit elements, each composite circuit element comprising an element interface and a configurable circuit element of a plurality of configurable circuit element types, each composite circuit element having a plurality of inputs and a plurality of outputs; (b) an interconnect element coupled to the plurality of configurable composite circuit elements, the interconnect element adapted to couple an output of a first configurable composite circuit element of the plurality of configurable composite circuit elements to an input of a second configurable composite circuit element of the plurality of configurable composite circuit elements; (c) a plurality of first communication elements coupled to the interconnect element; and (d) a state machine element coupled to the plurality of configurable composite circuit elements, to the full interconnect element, and to the plurality of first communication elements, the state machine element adapted to assign a first action to a first configurable composite circuit element of a first circuit element type of the plurality of configurable circuit element types, to assign a second action to a second configurable composite circuit element of a second circuit element type of the plurality of configurable circuit element types, and to provide for a first data link from a first output of the plurality of outputs of the first composite circuit element to a first input of the plurality of inputs of the second composite circuit element, the first data link through the interconnect element or through a first communication element of the plurality of first communication elements.
- In another exemplary embodiment, an inventive integrated circuit comprises: (1) a plurality of circuit arrays, with each circuit array of the plurality of circuit arrays comprising: (a) a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, each composite circuit element having at least one input and at least one output, the plurality of circuit element types comprising a plurality of configurable element types; (b) a full interconnect element coupled to the plurality of composite circuit elements, the full interconnect element adapted to couple any output of a first composite circuit element of the plurality of composite circuit elements to any input of a second composite circuit element of the plurality of composite circuit elements; (c) a plurality of first communication elements coupled to the full interconnect element; (d) a state machine element coupled to the plurality of composite circuit elements, to the full interconnect element, and to the plurality of first communication elements, the state machine element adapted to assign a first action to a first composite circuit element of a first circuit element type of the plurality of circuit element types, to assign a second action to a second composite circuit element of a second circuit element type of the plurality of circuit element types, to provide for a first data link from the at least one output of the first composite circuit element to the at least one input of the second composite circuit element, and in response to a detected fault of the first composite circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements and provide for a second data link from the at least one output of the third composite circuit element to the at least one input of the second composite circuit element; and (2) an interconnect coupled to the plurality of circuit arrays, the interconnect comprising a plurality of second communication elements coupled to the plurality of first communication elements, the plurality of second communication elements adapted to transfer data from a first circuit array to a second circuit array of the plurality of circuit arrays.
- In another exemplary embodiment, an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, each composite circuit element having an input and an output; and a state machine element coupled to the plurality of composite circuit elements, the state machine element adapted to assign a first function to a first composite circuit element of a first element type of the plurality of element types, to assign a second function to a second composite circuit element of a second element type of the plurality of element types, and to provide a first data link from the output of the first composite circuit element to the input of the second composite circuit element.
- In another exemplary embodiment, an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising a corresponding element interface and a corresponding circuit element of a plurality of circuit element types, a first composite circuit element of the plurality of composite circuit elements having a first circuit element type of the plurality of circuit element types, a second composite circuit element of the plurality of composite circuit elements having a second circuit element type of the plurality of circuit element types; a plurality of communication elements coupled to the plurality of composite circuit elements; and a state machine element coupled to the plurality of communication elements, the state machine element adapted during run time to assign a first action to the first composite circuit element, to assign a second action to the second composite circuit element, and to provide for a first data link between the first composite circuit element and the second composite circuit element.
- In another exemplary embodiment, an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types; and a state machine element coupled to the plurality of composite circuit elements, the state machine element adapted to assign a first function to a first composite circuit element, to assign a second function to a second composite circuit element, and to provide a first data link between the first composite circuit element and the second composite circuit element; the state machine element further adapted to, in response to an unavailability of the first composite circuit element, to assign the first function to a third composite circuit element of the plurality of composite circuit elements and to provide for a second data link between the third composite circuit element and the second composite circuit element.
- In another exemplary embodiment, an inventive apparatus comprises: a plurality of communication elements; a plurality of composite circuit elements coupled to the plurality of communication elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, a first composite circuit element of the plurality of composite circuit elements having an assigned first action, a second composite circuit element of the plurality of composite circuit elements having an assigned second action, the first composite circuit element having a first data link to the second composite circuit element; and a state machine element coupled to the plurality of communication elements, the state machine element adapted to, in response to an unavailability of the first composite circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements and to provide for a second data link between the third composite circuit element and the second composite circuit element.
- In exemplary embodiments, the first composite circuit element may be unavailable due to a detected fault. The fault may be detected by at least one of the following operational determinations: a periodic diagnostic performed by at least one composite circuit element of the plurality of composite circuit elements; a background diagnostic performed as a selected context of at least one composite circuit element of the plurality of composite circuit elements; or a comparison test performed by a plurality of composite circuit elements of the same circuit element type. In exemplary embodiments, the state machine element is further adapted to discontinue all activity of the first composite circuit element and to designate the first composite circuit element as unavailable in a stored availability table or map. In addition, the first composite circuit element may be unavailable due to an assignment by the state machine element of a third action having a higher priority than the first action.
- In exemplary embodiments, the first composite circuit element and the third composite circuit element each have a first configurable element type of the plurality of configurable element types, the second composite circuit element has a second configurable element type of the plurality of configurable element types, and the state machine element is further adapted to assign the first action as a first configuration of the third composite circuit element. The state machine element may be further adapted to obtain the first configuration and first configurable element type from a first symbolic netlist element. The first symbolic netlist element may further comprise a symbolic pointer designating the second data link as a virtual data communication between the third composite circuit element and the second composite circuit element
- In exemplary embodiments, the first composite circuit element has a first configurable element type of the plurality of configurable element types, the second composite circuit element has a second configurable element type of the plurality of configurable element types, the third composite circuit element has a third configurable element type of the plurality of configurable element types, and the state machine element is further adapted to assign the first action as a first configuration of the third composite circuit element. The state machine element may be further adapted to use a stored transformation table having a reference to the third composite circuit element for transfer of the first action.
- In another exemplary embodiment, an inventive apparatus comprises: a plurality of first communication elements; an interconnect element coupled to the plurality of first communication elements; a plurality of configurable composite circuit elements coupled to the plurality of first communication elements and to the interconnect element, each configurable composite circuit element comprising an element interface and a configurable circuit element of a plurality of configurable circuit element types, each composite circuit element having at least one input and at least one output, a first configurable composite circuit element of the plurality of configurable composite circuit elements having a first action, a second configurable composite circuit element of the plurality of configurable composite circuit elements having a second action, the at least one output of the first configurable composite circuit element having a first data link to the at least one input of the second configurable composite circuit element through the interconnect element or a selected communication element of the plurality of communication elements; and a state machine element coupled to the plurality of configurable composite circuit elements, to the interconnect element and to the plurality of communication elements, the state machine element adapted to, in response to a detected fault of the first configurable composite circuit element, to assign the first action to a third configurable composite circuit element of the plurality of composite circuit elements and to provide for a second data link from the at least one output of the third composite circuit element to the at least one input of the second composite circuit element through the interconnect element or a selected communication element of the plurality of communication elements.
- In exemplary embodiments, when the first configurable composite circuit element and the third configurable composite circuit element have the same configurable circuit element type, the state machine element is further adapted to transfer at least one configuration of the first configurable composite circuit element to the third configurable composite circuit element. In addition, the state machine element may be further adapted to maintain a count of available configurable composite circuit elements of the plurality of configurable composite circuit element, and in response to detection of the fault of the first configurable composite circuit element having a plurality of contexts for performance of corresponding functions, to provide the plurality of contexts to one or more available configurable composite circuit elements of the plurality of configurable composite circuit elements to perform the corresponding functions.
- In another exemplary embodiment, an inventive apparatus comprises: (1) a plurality of circuit arrays, each circuit array of the plurality of circuit arrays comprising: an interconnect element; a plurality of first communication elements coupled to the interconnect element; a plurality of composite circuit elements coupled to the interconnect element, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types, a first composite circuit element of the plurality of composite circuit elements having a first action, a second composite circuit element of the plurality of composite circuit elements having a second action, the first composite circuit element having a first data link to the second configurable composite circuit element through the interconnect element or a selected first communication element of the plurality of first communication elements; and a state machine element coupled to the plurality of composite circuit elements, to the full interconnect element, and to the plurality of first communication elements, the state machine element adapted to, in response to an unavailability of the first composite circuit element, to assign the first action to a third composite circuit element of the plurality of composite circuit elements and to provide for a second data link between the third composite circuit element and the second composite circuit element through the interconnect element or a selected first communication element of the plurality of first communication elements; and (2) a plurality of second communication elements coupled to the plurality of first communication elements, the plurality of second communication elements adapted to transfer data from a first circuit array to a second circuit array of the plurality of circuit arrays.
- In exemplary embodiments, a first state machine element of the first circuit array is further adapted provide for the first data link by transferring a routing request, through a second communication element, to a plurality of other state machine elements of other circuit arrays of the plurality of circuit arrays and by routing the first data link to a first communication element.
- In another exemplary embodiment, an inventive self-healing integrated circuit is provided, the integrated circuit comprising: a first plurality of composite circuit elements, a first composite circuit element of the first plurality of composite circuit elements adapted to perform a first function; a plurality of communication elements coupled to the first plurality of composite circuit elements; a second plurality of composite circuit elements coupled to the first composite circuit element through a first plurality of data links through at least one communication element of the plurality of communication elements for performance of the first function; and a state machine element coupled to the first plurality of composite circuit elements and adapted, in response to an unavailability of the first composite circuit element, to adapt a second composite circuit element of the first plurality of composite circuit elements to provide the first function and to provide a second plurality of data links between the second composite circuit element and the second plurality of composite circuit elements for performance of the first function.
- In another exemplary embodiment, an inventive apparatus comprises: a plurality of composite circuit elements, each composite circuit element comprising an element interface and a circuit element of a plurality of circuit element types; and a state machine element coupled to the plurality of composite circuit elements, the state machine element adapted to assign a first function to a first composite circuit element, to assign a second function to a second composite circuit element, and to provide a first data link between the first composite circuit element and the second composite circuit element; the state machine element further adapted to, in response to a detected fault of the first composite circuit element, to assign the first function to a third composite circuit element of the plurality of composite circuit elements and to provide for a second data link between the third composite circuit element and the second composite circuit element.
- These and additional embodiments are discussed in greater detail below. Numerous other advantages and features of the present invention will become readily apparent from the following detailed description of the invention and the embodiments thereof, from the claims and from the accompanying drawings.
- The objects, features and advantages of the present invention will be more readily appreciated upon reference to the following disclosure when considered in conjunction with the accompanying drawings and examples which form a portion of the specification, wherein like reference numerals are used to identify identical components in the various views, and wherein reference numerals with alphabetic characters are utilized to identify additional types, instantiations or variations of a selected component embodiment in the various views, in which:
-
FIG. 1 is a diagram illustrating, at a high or conceptual level, resiliency of an exemplary apparatus embodiment in accordance with the teachings of the present invention. -
FIG. 2 is a block diagram illustrating an exemplary first apparatus embodiment in accordance with the teachings of the present invention. -
FIG. 3 is a block diagram illustrating an exemplary second apparatus embodiment in accordance with the teachings of the present invention. -
FIG. 4 is a diagram illustrating an exemplary data packet and data word sequence in accordance with the teachings of the present invention. -
FIG. 5 is a block diagram illustrating a first exemplary circuit cluster in accordance with the teachings of the present invention. -
FIG. 6 is a block diagram illustrating a second exemplary circuit cluster in accordance with the teachings of the present invention. -
FIG. 7 is a block diagram illustrating a third exemplary circuit cluster in accordance with the teachings of the present invention. -
FIG. 8 is a block diagram illustrating in greater detail an exemplary composite circuit element within an exemplary circuit cluster in accordance with the teachings of the present invention. -
FIG. 9 is a block diagram of an exemplary multiplier configurable element in accordance with the teachings of the present invention. -
FIG. 10 is a block diagram of an exemplary triple-ALU configurable element in accordance with the teachings of the present invention. -
FIG. 11 is a flow diagram illustrating at a high level an exemplary compilation process in accordance with the teachings of the present invention. -
FIG. 12 is a flow diagram illustrating at a high level an exemplary operating system or process in accordance with the teachings of the present invention. -
FIG. 13 is a block diagram illustrating exemplary combinational logic circuitry for context availability determination within an exemplary apparatus in accordance with the teachings of the present invention. -
FIG. 14 , divided intoFIG. 14A ,FIG. 14B ,FIG. 14C andFIG. 14D , is a flow diagram illustrating an exemplary algorithm or symbolic netlist run-time binding process in accordance with the teachings of the present invention. -
FIG. 15 is a flow diagram illustrating a first exemplary re-assignment and re-binding process in accordance with the teachings of the present invention. -
FIG. 16 is a diagram illustrating an exemplary configuration and control word in accordance with the teachings of the present invention. -
FIG. 17 is a block diagram illustrating exemplary combinational logic circuitry for context readiness determination within an exemplary apparatus in accordance with the teachings of the present invention. -
FIG. 18 is a block diagram illustrating a fourth exemplary circuit cluster in accordance with the teachings of the present invention. -
FIG. 19 is a block diagram illustrating an exemplary third apparatus embodiment in accordance with the teachings of the present invention. -
FIG. 20 is a block diagram illustrating an exemplary compiler system embodiment in accordance with the teachings of the present invention. - While the present invention is susceptible of embodiment in many different forms, there are shown in the drawings and will be described herein in detail specific examples and embodiments thereof, with the understanding that the present disclosure is to be considered as an exemplification of the principles of the invention and is not intended to limit the invention to the specific examples and embodiments illustrated, and that numerous variations or modifications from the described embodiments may be possible and are considered equivalent. In this respect, before explaining at least one embodiment consistent with the present invention in detail, it is to be understood that the invention is not limited in its application to the details of construction and to the arrangements of components set forth above and below, illustrated in the drawings, or as described in the examples. Methods, systems and apparatuses consistent with the present invention are capable of other embodiments and of being practiced and carried out in various ways. Also, it is to be understood that the phraseology and terminology employed herein, as well as the abstract included below, are for the purposes of description and should not be regarded as limiting.
- As indicated above, one of the most novel features of the IC architecture of the present invention is its resiliency, providing adaptation for manufacturing defects, flaws which may arise during usage of the IC, and adaptability for new features, services, algorithms, and other events. The resiliency and robustness of the inventive IC architecture allows for increasing yields from IC fabrication, as the inventive ICs fabricated with various defects will nonetheless be quite useable and fully functional.
- In addition, during operation, this resiliency may be described as “neural” or biological self-healing, because in the event a portion of the IC is damaged or otherwise becomes unusable, another portion of the IC is effectively “recruited” or reassigned to take over and perform the functions of the damaged portion. In addition, as discussed in greater detail below, as the functions are reassigned, new control and data pathways are also created, so that the transferred operations continue to perform seamlessly with other IC operations. Such adaptive resilience and self-healing may occur in real-time or near real-time, depending upon the selected embodiment. This allows the IC to continue to operate without disruption provided that sufficient computing resources remain operational. Such resiliency provides for a graceful degradation of performance in the event of damage to the IC, rather than a catastrophic failure, and is especially significant in health and safety applications.
- The compiler of the present invention is designed to meet these unique needs. The inventive compiler converts an algorithm into a form suitable for binding the operations to the IC during start up (or run-time), and then potentially re-binding the operations in the event a portion of the IC is damaged or otherwise becomes unusable. Accordingly, the inventive compiler converts the algorithm into a tasks and actions for each task, and then identifies types of computational elements, and their data inputs or data outputs, for performance of each such task, rather than assigning the action to an actual instance or instantiation of the element type on the IC. The result is then compiled into a “symbolic netlist”, as described in greater detail below, which may then be assigned and bound to the actual computational elements of the IC at run-time, and re-assigned and re-bound as may be necessary or advisable.
- As discussed in greater detail below, several features of the exemplary embodiments of the present invention enable such resiliency, continued operation and eventual graceful degradation. First, the IC or other device is comprised of a plurality of “composite” circuit elements (which comprise various types of computational elements, a uniform I/O interface, and a uniform control structure); these composite circuit elements are effectively interchangeable or fungible, such that in the event of a loss of functionality of an element, its functions can be taken over by another composite circuit element (either identical or similar), when available. Second, the plurality of computational elements is selected to enable the performance of virtually any functionality, that is, they are computationally complete. Third, control functionality is distributed among a plurality of circuit “cluster” controllers, referred to herein as “state machine elements” or “finite state machine elements”, such that control functionality may be transferred between and among these distributed controllers, as needed. Fourth, the composite circuit elements and/or their interconnections are configurable, to aid in the transfer of functionality and any corresponding routing of data and control paths. Fifth, all selected operations are assigned and bound within the device at the initial run-time, and may be re-assigned and re-bound subsequently as may be needed to transfer corresponding functionality to other composite circuit elements and continue operations.
-
FIG. 1 is a diagram illustrating, at a high or conceptual level, such resiliency of anexemplary apparatus 100 embodiment in accordance with the teachings of the present invention. As illustrated inFIG. 1 , various parts of theapparatus 100, embodied as an IC, such asvarious matrices 150 illustrated and discussed with reference toFIGS. 2-3 , are utilized to perform concurrently a plurality of functions, such as those which may be associated with a typical automobile, other vehicle, or computerized or complex system. During time period “α”, anIC portion 102 is providing anti-lock braking (ABS) functionality, anIC portion 104 is providing traction control functionality, anIC portion 106 is providing video or other multimedia functionality, and anIC portion 108 is providing navigation functionality, such as through a satellite or radio link. - During time period “β”, a region 110 (marked with “X's”) of
IC portion 102 has become unusable, such as due to physical wear or other damage to the IC. Such damage may be determined through self-testing or through other means discussed in greater detail below. As ABS is a high priority function, the functionality performed withinregion 110 is then reassigned (or bound) toregion 112, which previously had been performing video functionality, which has a lower priority for operation in a vehicle environment. As discussed in greater detail below, as part of this reassignment process, new data and control pathways will also be created, so that the newly assigned regions continue to communicate properly with other regions of the IC, transparently, as if the reassignment never occurred. Depending upon the nature and scope of the new functionality assigned to this region,IC portion 106 may or may not continue to perform its video functionality, or may perform this functionality with lower bandwidth or speed. In either case, in spite of damage to theIC 100, the higher priority ABS functions continue to be operational, and no catastrophic failure has occurred. - Subsequently, during time period “γ”,
regions 114 and 116 (marked with “X's”) ofIC portion 108 have become unusable, and their functions are reassigned toregions region 118 was available and not being completely used by the traction control functions (e.g., one or more composite circuit elements and/or contexts were available, as discussed below). As more of the IC has degraded, however, a signal or other indication may be provided to the user, such as to have the vehicle serviced in the near future for IC replacement, for example. In addition, as mentioned above and as discussed in greater detail below, depending upon the availability of target destinations for the functionality to be reassigned and depending upon how the functionality is reassigned, the reassigned functions may no longer perform optimally (e.g., they may be slower or have less bandwidth), but still perform. Again, such decline in performance is gradual and not catastrophic, with the capability for ample warnings to be provided. - Subsequently, during time period “δ”,
regions IC portion 104 have become unusable, and their functions are reassigned toregions IC portion 106, those higher priority functions are reassigned to the unaffected areas of the IC. In this instance, it is plausible that the video functionality could cease entirely, as the remaining usable portions of the IC are performing these higher priority functions, such as braking and traction control. As more of the IC has degraded, however, a warning, signal or other indication also may be provided to the user, such as to have the vehicle serviced immediately for IC replacement, for example. Again, such decline in performance is gradual and not catastrophic, with the capability for high priority functions to continue to operate, despite significant failures within many portions of the IC that would cause a prior art IC to fail completely, suddenly, and potentially catastrophically. - The biological parallels in the operation of the
apparatus 100 are striking. As in a biological system which can heal itself, such as a neurological system, in the event of a damage such as a stroke with loss of neurons and corresponding neurological function, other existing neurons are recruited, with new connections (synapses) created, to take over and restore the functionality previously performed by the damaged neurons. In the case of theapparatus 100, in the event of damage to one or more parts of the IC, other existing portions of the IC (circuit clusters and composite circuit elements (discussed below)) are recruited, with new connections created, to take over and restore the functionality previously performed by the damaged regions of the IC. As a consequence, as in a biological system, theapparatus 100 is self-healing, enabling ongoing functionality despite IC damage. - A. Apparatus Architecture
-
FIGS. 2-3 are block diagrams illustrating, in increasing levels of detail, exemplary first andsecond apparatuses apparatus composite circuit elements 260. An “action” is the type of function or activity to be performed by a composite circuit element 260 (through its incorporated computational or other type of circuit element 270), such as multiplication or bit manipulation. As illustrated, there are various types ofcomposite circuit elements 260, illustrated as different types of composite circuit elements (equivalently referred to and abbreviated as “composite elements” (“CE”)) CEA, CEB, CEC, CED, CEE, and CEM, which perform different actions and which may be configurable or non-configurable (illustrated and discussed with reference toFIGS. 5-8 ). The plurality ofcomposite circuit elements 260, with other circuit structures discussed below, as a first grouping, are grouped into a corresponding plurality of circuit “clusters” 200. The various groupings may also be considered arrays of a plurality ofcomposite circuit elements 260, at corresponding levels. - The
apparatus circuit clusters 200 then grouped through various (second)communication elements 210 and a second channel (or bus structure) 220 into an intermediate level (or a second array), as a second grouping, referred to as a cluster-grouping or “supercluster” level (a plurality of superclusters 185), which in turn are further grouped through various (third)communication elements 190 and third channel (or bus structure) 195 into a higher level, as a third grouping, referred to as a “matrix” level (a plurality of matrices 150) or unit level (or a third array), which are further grouped through a fourth channel (or bus structure) 160 into theapparatus - The various communication channels (e.g., busses or bus structures) 160, 195, 220 and
communication elements interconnect 155 of the present invention, allowing communication of data and control information between and among any of thevarious clusters 200 and other IC components. - Each of the
apparatuses apparatus embodiments various clusters 200 utilized to provide input and output (“I/O”) to other, external or non-integrated ICs or other devices, such as external memory (e.g., DDR-2) or external communication channels or busses (e.g., PCI or PCI-express (PCI-e)). Forapparatus 140, such external I/O has been concentrated within a selectedmatrix 150, while forapparatus 100, such external I/O has been distributed among a plurality ofmatrices 150. In all other respects, theapparatuses apparatus 100 will be understood to mean and include the second embodiment illustrated asapparatus 140, andapparatus 140 otherwise will not be further discussed as a separate embodiment. Also, whileFIGS. 2 and 3 illustrate twomatrices 150, it should be understood that theapparatus more matrices 150, and that exemplary embodiments may include any number ofmatrices 150, depending upon selected applications and various design parameters, such as IC area and power requirements. - Referring to
FIGS. 2-3 , as indicated above, theapparatus 100 is logically divided into or comprised of a plurality ofmatrices 150. Eachmatrix 150 is coupled through a corresponding plurality ofthird communication elements 190 and a fourth communication channel (or bus structure) 160, and each has at least two input and two output data and control paths, separately illustrated as input and output (“I/O”) 170 and I/O 180 (of fourth channel (or bus structure) 160). Depending upon the selected embodiment, the fourth channel (or bus structure) 160 (with I/O 170 and 180) may have combined control and data I/O paths (as illustrated), with data, configuration and control information utilizing the same bus structures, or such data, configuration and control may be separated onto different bus or interconnect structures (not separately illustrated). In an exemplary embodiment, at thismatrix 150 level, such a plurality ofthird communication elements 190 are implemented through exemplary communication circuitry such as packet routing or waypoint circuitry. In the event of a failure of athird communication element 190 and/or one of the I/O third communication element 190 and the remaining I/O third communication elements 190 are implemented as a single, combined circuit element having four independent up link channels and four independent down link channels (with corresponding bus structures); alternatively, the various channels may also be implemented to provide full duplex communication. - This use of a plurality of (at least two) communication elements and corresponding I/O portions of the bus structures (having combined control and data I/O paths), in exemplary embodiments, is repeated at each of the various logical, hierarchical levels, providing corresponding resiliency in the event of a failure of any of the various communication elements or I/O paths. For selected embodiments requiring less resiliency or subject to other constraints, however, such one or more additional sets of communication elements and corresponding I/O are optional and may be omitted.
- Each
matrix 150, in turn, is logically divided into various hierarchical levels or subgroups, also with circuitry for communication between and among the various levels, such as the plurality ofthird communication elements 190 adapted to perform packet-based routing, self-routing, tunneling, or other types of data, configuration and control communication. More specifically, amatrix 150 is logically divided into a plurality ofsuperclusters 185, which are coupled to each other through the plurality ofthird communication elements 190 and third channel (or bus structure) 195, and which further are coupled tosuperclusters 185 ofother matrices 150 via fourth channel (or bus structure) 160 and other correspondingthird communication elements 190. - The
superclusters 185, in turn, are logically divided into a corresponding plurality of circuit clusters 200 (abbreviated and referred to herein simply as “clusters” or a “cluster”), which in turn are comprised of a plurality of circuitry elements referred to as composite circuit elements 260 (or, equivalently referred to and abbreviated as “composite elements” (“CE”) 260) and other components (includingfirst communication elements 250 and state machine elements 290) discussed below. The communication between and among thesevarious clusters 200 is provided through a plurality of second communication elements 210 (which also may provide packet-based routing, self-routing, tunneling, or other types of data, configuration and control communication) and a second channel (or bus structure) 220. Thevarious clusters 200 within asupercluster 185 are then further coupled toother clusters 200 ofother superclusters 185 of the same orother matrices 150 via second channel (or bus structure) 220,second communication elements 210, third channel (or bus structure) 195, andthird communication elements 190, and then to other matrices via fourth channel (or bus structure) 160. In addition, as an optional variation, “fast path” connections may be provided between adjacent clusters, illustrated asconnections 215 inFIG. 2 , and discussed in greater detail below. - The various second and
third communication elements interconnect structure 155 of the present invention. As indicated above, the second andthird communication elements addressable clusters 200. The second andthird communication elements - In exemplary embodiments, this interconnect 155 (communication channels (bus structures) 160, 195, 220) will generally be “n” bits wide, with the number “n” selected depending upon the objectives of the selected embodiment. For example, in an exemplary embodiment, “n” is 17 or more bits, providing for a 16 bit data word and one or more control or signaling bits. In addition to the
interconnect 155 comprising one or more busses, wires, conductors, transmission media or connection structures as illustrated inFIGS. 2-3 , theinterconnect 155 also includes a plurality of communication elements (190, 210) which accommodate the n-bit width and which provide routing or other transmission for data words (or packets), configuration words (or packets), and/or control words (or packets), between and amongmatrices 150,superclusters 185, andclusters 200. In exemplary embodiments, these communication elements (190, 210) may also provide arbitration or other routing conflict resolution, depending upon the degree of interconnectivity to be provided. - Within the
cluster 200 level, thefirst communication elements 250 provide cluster I/O, providing intra-cluster circuit-based (or circuit-switched) connection capability in addition to inter-cluster data, configuration and control routing, creating direct communication links or connections to and from components within acluster 200 and data, configuration and control routing from and to components ofother clusters 200. In exemplary embodiments, amessage manager 265 within acluster 200 orsupercluster 185 is also utilized to provide inter-cluster communication of configuration and control and external input and output communication of any type of data, configuration and control. - It should be noted that the selection of the number of levels within the
apparatus 100 may be varied in any given embodiment, as a balancing of the amount of physical interconnect to be utilized in comparison with routing complexity, for a given number of computational elements. In the exemplary embodiment, for the same number ofcomposite circuit elements 260, the use of four levels (matrix, supercluster, cluster, and composite circuit element levels) in comparison to three levels (with more components per level), for example, enables a substantial reduction in the amount of busses and wires of interconnect, resulting in a savings of area and capacitance, at the expense of additional routing complexity. - Continuing to refer to
FIGS. 2 and 3 , as an option or alternative, depending upon the selected embodiment, one or more additional controllers (or processors, equivalently) 175 may be utilized, at any of thevarious matrix 150,supercluster 185 orcluster 200 levels. For example, exemplary embodiments of run-time binding (discussed below with reference toFIG. 14 ) may utilize suchadditional controllers 175, may instead utilize one or more state machine elements 290 (discussed below) as one or more controllers, or both. In an exemplary embodiment, the controller orprocessor 175 is implemented utilizing a commercially available processor or microprocessor, e.g., ARM or Micro-Blaze. Theprocessor 175 also may be in aseparate system 1200, or may be integrated as part of the die of theapparatus more SMEs 290. In addition, the apparatus 100 (or 140) may also include other components, such as any other circuits or other devices which may be integrated or coupled with the apparatus, such as radio-frequency or cellular communication circuitry, memory circuitry, processors, microprocessors, etc., with all such variations considered within the scope of the present invention. - As an introduction to the operation of the
apparatus 100, data computations and manipulations are performed within the plurality ofclusters 200, throughcomposite circuit elements 260. Thesecircuit elements 260 are referred to as “composite”circuit elements 260 because in the exemplary embodiments, they are comprised of a first, constant or fixed portion, and a second, variable portion, which may be configurable or non-configurable (depending upon the type of composite circuit element 260). More particularly, eachcomposite circuit element 260 is comprised of: (1) a uniform or constant element interface andcontrol 280, which is the same for everycomposite circuit element 260; and (2) a selected type of “computational” orother circuit element 270 from a plurality of types of computational elements 270 (configurable or non-configurable), which are illustrated and discussed in greater detail with reference toFIGS. 5-8 . - The computational circuit element 270 (also referred to more simply as an
element 270 or circuit element 270) withincomposite circuit elements 260 vary by type and configurability; thecomputational elements 270 are referred to as “computational” for ease of reference only, as the various types ofcircuit elements 270 may have functionality which is not computational in any strict sense, such as memory functions, finite state machine functions, communication functions, etc. For example, somecircuit elements 270 may be static or configurable computational elements of a plurality of types, static or configurable memory elements of a plurality of types, static or configurable communication elements or interfaces of a plurality of types, static or configurable state machine elements, and so on, resulting in a plurality of types ofcomposite circuit elements 260, such as configurablecomposite circuit elements 260, configurable or nonconfigurable memorycomposite circuit elements 260 M, or configurable or nonconfigurable composite I/O or other communication circuit elements 260 (which may provide I/O interfaces for external communication, for example). Accordingly, any reference herein to acomposite circuit element 260 will be understood to mean and include any of the various types, special cases or specific instances or instantiations ofcomposite circuit elements 260, such as configurablecomposite circuit elements 260,state machine elements 290,first communication elements 250, andcomposite memory elements 260 M, unless the context requires or indicates otherwise. - Also for example, the first communication elements 250 (cluster I/O) may be implemented as a type of
composite circuit element 260, having an element interface andcontrol 280 presented to othercomposite circuit elements 260, and having acomputational element 270 designed for communication functionality, and which may or may not be configurable. In addition, as discussed below, additional circuitry typically embodied as a state machine and referred to as a “message manager”circuit 265 is provided within various or selectedclusters 200 to perform external communication functions, such as providing communication interfaces to external memory, busses and communication systems, e.g., providing interfaces which comply with various communication and other data transfer standards, and may also include interfaces for communication with other portions of an IC when theapparatus 100 is embodied as part of an SOC. For example, depending upon the selected embodiment, a message manager 265 (as dedicated hardware) or a composite circuit element 260 (having acomputational element 270 adapted for a communication function) may be utilized for such external communication, such as providing an Ethernet interface, a PCI interface, a PCI Express interface, a USB or USB2 interface, a DDR SDRAM interface or other type of memory interface, a wireless interface, an interface to another IC, and so on. In exemplary embodiments, the message manager may also be utilized for communication within theapparatus 100, such as communication betweenclusters 200 and communication betweenstate machine elements 290, as discussed in greater detail below, such as for configuration and control messaging. - In other exemplary embodiments, external communication (such as for DDR-2, PCI, PCI-e) is provided by other components coupled to the
interconnect 155, and themessage manager circuit 265 provides for interfacing between stream-based communication within asupercluster 185 and/orcluster 200 and packet-based communication on theinterconnection networks second communication elements supercluster 185C andcluster 200C embodiments. In this embodiment, themessage manager circuit 265 may also be implemented as a finite state machine or as a state machine in conjunction with various combinational logic gates, and themessage manager circuit 265 processes three kinds of messages: incoming messages, outgoing acknowledgements, and outgoing messages, all viainterconnect 155. Two types of messages are utilized, Data Write messages, and Data Copy messages. Data Write messages cause the payload data in the message to be written to an address specified in the message. Data Write messages, for example, may be user task writes, writes tosecond memory element 255, or writes over the configuration/control bus 285, such as for writing to theSME 290 and modifyingSME 290 executable code, or writes to configure anycomposite circuit element 260 within acluster 200. In this embodiment, also for example, themessage manager circuit 265 may write to theSME 290, to provideSME 290 control. Data Copy messages cause a Data Write message to be sent from a specified source address to a specified destination address. Outgoing acknowledgements are generated by themessage manager circuit 265 in response to an incoming Data Write message requesting a reply, and are themselves Data Write messages. Outgoing messages are assembled in the second memory element 255 (e.g.,cluster 200 RAM) by theSME 290 and are then transmitted by themessage manager circuit 265, such as by setting a pointer to the start of the message and specifying the message size. The message assembly may be applicable to outgoing messages which do not require acknowledgment or extended to those which do require acknowledgment. - In an exemplary embodiment, the
second memory element 255 formingcluster 200 RAM is implemented as eight1 K times 16 blocks, with address generators provided within the memory-typecomposite circuit element 260 M, rather than use of theSME 290 for address generation. An additional register is also utilized, which if set, reserves the memory-typecomposite circuit element 260 M for use by theSME 290, such as for storing instruction sets, and which if not set, enables use by othercomposite circuit elements 260. Address generation may include, for example, FIFO, block read/write (including counting and striding), and 2-D or 3-D address generation. Thesecond memory element 255 also could be a hierarchical memory with or without paged or cached memory structures. Priority for data input into thesecond memory element 255 is typically themessage manager circuit 265, to avoid data back ups on theinterconnect 155, the memory-typecomposite circuit element 260 M, followed by theSME 290. The memory-typecomposite circuit element 260 M has additional features, such as being synchronous, and further allowing multiple processes/contexts to execute simultaneously (as long as there is no data collision). - In another exemplary embodiment, the
message manager circuit 265 is also configured or adapted to manage the memory-typecomposite circuit elements 260 M distributed throughout theapparatus 100. For example, themessage manager circuit 265 is adapted to provide a uniform address space for the distributed plurality of memory composite circuit elements. Through this use of themessage manager circuit 265, the distributed plurality of memory-typecomposite circuit elements 260 appears to the othercomposite circuit elements 260 and may be managed as one large memory array. - Each of the configurable
computational elements 270 are comprised of combinational logic (i.e., a group of logic gates forming a functional unit, such as an adder, a multiplier, arithmetic logic unit (“ALU”) etc.) having input, output, and other internal connections which are adapted to be changeable or are otherwise capable of being modified. More specifically, each configurablecomputational element 270 is designed such that its logic gates or other functional units may be coupled or connected (or decoupled or disconnected), through switching circuits, elements or other switching structures such as switches, multiplexers, demultiplexers, pass transistors, crossbar switches, routing elements, or other transistor configurations, in any of a plurality of ways, to perform a corresponding plurality of functions. Each different way of connecting the various gates (or functional units) is a “configuration”, and a selected configuration may be represented as a plurality of bits which control the corresponding switches, multiplexers, demultiplexers, pass transistors, or other transistors or switching arrangements, creating the specific connections of the selected configuration. For example, adders, multipliers and registers may be coupled in any number of various ways to perform a wide variety of functions, from simple arithmetic to discrete cosine transformation. In other circumstances, a configuration may also indicate how input data is to be interpreted or used, such as signed or unsigned, a constant or a variable, consumable or non-consumable, etc. Other types of configurations and ways of configuring are known in the electronic arts, are considered equivalent and within the scope of the present invention. - Each of the available or selected configurations for a configurable
computational element 270 is stored locally within a memory of the element interface and control 280 of thecomposite circuit element 260. As discussed in greater detail below, each of these configurations, in conjunction with other information such as selected inputs, output destinations and control information is defined as or comprises a corresponding “context”. For example, the same configuration of elements may have multiple contexts, with each context using different inputs and providing outputs to different locations, or utilizing different constants. Also for example, different configurations will also provide different contexts, even if the different configurations will utilize the same inputs and provide outputs to the same destinations. The operations and control ofcomposite circuit elements 260 is discussed in greater detail below with reference toFIGS. 5-8 and 16, following the discussion of the internal and external communication and addressing utilized in exemplary embodiments of the invention. - In exemplary embodiments, the various connections between
composite circuit elements 260 within acluster 200, and routing or tunneling from one cluster to another (viacommunication elements apparatus 100, for implementation of a selected program, algorithm or function. In addition, such connections may change over time, and depending upon the selected embodiment, generally will change over time as may be needed, as briefly discussed above with reference toFIG. 1 and as discussed in greater detail below, for creation of new functionality, changing contexts and configurations, changing functionality, or resilient self-healing. In alternative embodiments within the scope of the invention, such as for applications which may not be subject to requirements for resiliency, the various connections also may be established prior to run-time and maintained in a memory within theapparatus 100, with the potential for subsequent modification as may be necessary or desirable. - Referring to
FIGS. 2 and 3 , amatrix 150 is logically divided into or comprises a plurality ofsuperclusters 185 and one or morethird communication elements 190. Thethird communication elements 190 are communication circuitry (e.g., routers, waypoints, gateways, switches, or tunneling devices) which provide packet routing, switching, hybrid routing and switching, or tunneling of data and control into and out of amatrix 150, for communication of data, configuration and control information, and may be considered to form part ofinterconnect 155. Thethird communication elements 190 may also be considered waypoints or gateways, and are one of several communication structures utilized in accordance with the present invention. In a first selected embodiment utilizing at least two or morethird communication elements 190, eachthird communication element 190 is coupled to eachsupercluster 185 of a selectedmatrix 150 and to other third communication elements 190 (via bus structure 160), such that communication to and from eachsupercluster 185 may occur through eitherthird communication element 190. As a result, in the event of a failure of any one of thethird communication elements 190, anotherthird communication element 190 is available to eachsupercluster 185 of a selectedmatrix 150 to provide identical communication functionality. While illustrated as separatethird communication elements 190, it will be understood that these independent circuits may be combined into one or more larger circuit structures providing the same independent communication function. For example, in a selected embodiment, a singlethird communication element 190 is utilized, similarly connected to eachsupercluster 185 and to otherthird communication elements 190, with eachthird communication element 190 providing multiple and independent communication pathways (e.g., 4 down links and 4 up links), such that additional links are available in the event of failure of one or more links. Again, in the event of such a failure, significant functionality is preserved, with graceful degradation and not catastrophic failure. - Each
supercluster 185 is further logically divided into or comprises a plurality ofclusters 200 and one or moresecond communication elements 210. Thesecond communication elements 210 are also communication circuitry which provide packet routing, tunneling, switching or other transfer of data and control into and out of asupercluster 185, for communication of data, configuration and control information, and also may be considered to form part ofinterconnect 155. Thesecond communication elements 210 also may also be considered waypoints or gateways, and are one of several communication structures utilized in accordance with the present invention. In a first selected embodiment utilizing at least twosecond communication elements 210, eachsecond communication element 210 is coupled to eachcluster 200 of a selectedsupercluster 185, such that communication to and from eachcluster 200 may occur through eithersecond communication element 210. Also as a result, in the event of a failure of asecond communication element 210, anothersecond communication element 210 is available to eachcluster 200 of a selectedsupercluster 185 to provide identical communication functionality. In a selected embodiment, these independent circuits may be combined into one or more larger circuit structures providing the same independent communication function. Also for example, a single, combinedsecond communication element 210 is utilized, similarly connected to eachcluster 200 and to one or morethird communication elements 190. In this embodiment, eachsecond communication element 210 provides multiple and independent communication pathways (e.g., 4 down links and 4 up links), such that additional links are available in the event of failure of one or more links. Again, in the event of such a failure, significant functionality is preserved, with graceful degradation and not catastrophic failure. - As a consequence, moving from a
matrix 150 level to asupercluster 185 level and to acluster 200 level, theinterconnect 155 provides packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information through a plurality ofcommunication elements cluster 200, theinterconnect 155 also provides circuit-switched (or circuit-based) communication, throughfirst communication elements 250. Indeed, one of the novel features of the architecture of the present invention is the use of aninterconnect structure 155 providing both packet-based and circuit-switched communication. - Continuing to refer to
FIGS. 2 and 3 , theexemplary interconnect 155 comprises: (1) a plurality of routing (tunneling, waypoint or gateway) elements, namely, a plurality ofthird communication elements 190, a plurality ofsecond communication elements 210, and a plurality offirst communication elements 250; (2) a plurality of circuit switching elements, namely, the plurality offirst communication elements 250; and (3) their corresponding busses, wires or other forms of physical connections or date transmission media (e.g., illustrated, for example, as busses orwires matrix 150, one or morethird communication elements 190 provide packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information, to and from other matrices 150 (viafirst bus 160 and I/O 170, 180), and to and from a plurality ofsuperclusters 185, via one or moresecond communication elements 210 within eachsuch supercluster 185. In turn, one or moresecond communication elements 210 within such asupercluster 185 provides packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information, to and from thethird communication elements 190, and to and from a plurality ofclusters 200 within thesupercluster 185, via one or morefirst communication elements 250 within eachsuch cluster 200. - In turn, the one or more
first communication elements 250 within acluster 200 provides packet routing, self-routing, tunneling, switching or other transfer of data, configuration and control information to and from thecluster 200, via thesecond communication elements 210, such as to and fromother clusters 200, and provides circuit-switched communication for data and control within thecluster 200, enabling communication betweenother clusters 200 and thecomposite circuit elements 260,state machine element 290,message manager 265,memory elements 255 and/or other components within thecluster 200. For example, data produced from acomposite circuit element 260 within acluster 200 may be output through a direct or a circuit-switched connection to one of the plurality offirst communication elements 250, which then converts the data to packet form and routes the data packet to thesecond communication element 210, for transmission to anothercluster 200, anothersupercluster 185, or anothermatrix 150. Similarly, when a data packet arrives via asecond communication element 210, which may be from anothercluster 200, anothersupercluster 185, or anothermatrix 150, thefirst communication element 250 extracts the data and transfers the one or more data words to the correspondingcomposite circuit element 260,state machine element 290,memory elements 255 or other components within thecluster 200. - These various communication elements (
third communication elements 190,second communication elements 210,first communication elements 250, thefull interconnect element 275 and the distributedfull interconnect element 295 discussed below) may be designed to have any selected capacity, such as full interconnectivity to more limited interconnectivity. For example, instead of thefull interconnect element 275 or the distributedfull interconnect element 295 providing for any output of acomposite circuit element 260 to be coupled concurrently to any input of acomposite circuit element 260 in the exemplary embodiments (with the exception of conflicts or contentions for the same inputs or outputs), more limited or partial interconnections within thecluster 200 may be provided, such as by using a partial interconnect element or a distributed partial interconnect element (not separately illustrated). Also for example, in exemplary embodiments, thefirst communication elements 250 may provide 2 or more concurrent connections or routing, such as two up links to and two down links fromsecond communication elements 210, in addition to one or more concurrent connections to and from thecomposite circuit elements 260 and other components of acluster 200. More connectivity may also be provided in any given embodiment, as a trade-off of potential collisions with IC area. In addition, where less than full interconnectivity is provided, the various communication elements (third communication elements 190,second communication elements 210, and first communication elements 250) may also provide an arbitration functionality, which may be based on priority, round robin, sequential, etc., selecting a connection or routing for data transfer at any given time. - While illustrated having
cluster 200,supercluster 185,matrix 150 andapparatus 100 levels, it will be understood by those of skill in the art that the number of levels may be extended or decreased in any selected embodiment. For example, a plurality of fourth communication elements (not illustrated), with theother interconnect 155, may be utilized to create another level of hierarchy within theapparatus 100, and so on, creating any selected number of levels within the hierarchy of theapparatus 100. -
FIG. 4 is a diagram illustrating an exemplary data transmission sequence in accordance with the teachings of the present invention. In the exemplary embodiments, data and/or control packets are routed over theinterconnect 155 by the various routing elements (third communication elements 190,second communication elements 210, and first communication elements 250) as a “train” or tunneling of data words, thereby reducing addressing overhead which would otherwise be associated with routing of individually addressed data words. More specifically, referring toFIG. 4 , adata transmission sequence 300 is comprised of a plurality of words (fields or data structures) 305 and 310, and is “n” bits wide. Eachsuch word field 305 comprises the address header with a data start indicator. The address header may comprise a destination address, or may comprise both a destination address and a source address (which may require more than one word). Such an address, in the exemplary embodiments, has the form of [matrix number, supercluster number, cluster number], with the number of bits utilized to designate the address dependent upon the number ofmatrices 150,superclusters 185 andclusters 200 implemented in the selected embodiment. - For example, when eight or
fewer matrices 150 are implemented, and with eachmatrix 150 containing eight orfewer superclusters 185, and with eachsupercluster 185 containing eight orfewer clusters 200, 9 bits are sufficient to provide addressing as [MMM,SSS,CCC]. The data start indicator within the first word orfield 305, which may comprise a first flag having a predetermined value (e.g., flag being set, or other first predetermined or predesignated bit being a selected value), indicates that thecurrent word 305 is an address header and that all subsequent packets are data words to be routed to the same addressed destination. As a consequence, all of the “m” words orfields 310 of data following thefirst field 305 are designated and transmitted as data words, namely,data words field 310 (m-1), comprises both data and a data end indicator, to indicate that the current data word is the last data word being transferred, and may comprise a second flag having a predetermined value (or other second predesignated bit having a selected value). - This tunneling of data is implemented in an exemplary embodiment as a combination or hybrid of both packet routing and circuit switching. More particularly, the various routing elements (
third communication elements 190 and second communication elements 210) provide for establishing one or more connections between and amongclusters 200 using the address header of the first word orfield 305, and reserving and setting up a dedicated path from asource cluster 200 to adestination cluster 200. The dedicated path may be formed by circuit-switching or other connections within, for example, a waypoint or gateway. The remaining data word (data words third communication elements 190, second communication elements 210), may be buffered and then transferred automatically as a packet on the switched or other dedicated path established within the communication element using the address header. The dedicated path is maintained until the complete packet has been transmitted, after which the various path elements are released for other communications. A plurality of paths may be used concurrently to support a broadcast mode. Also in the exemplary embodiment, a plurality of such data transmissions may occur concurrently between and among the same communication elements, such as by using the four uplinks and four downlinks previously mentioned for an exemplary embodiment, allowing transmission of multiple data streams concurrently. As a consequence, in the exemplary embodiments, the plurality of communication elements (including the first communication elements 250) support any selected mode of communication, such as one-to-one input and output data links, one-to many (broadcast) data links, and many-to-one data links. - In contrast, a
first communication element 250 receives data words from the various components of thecluster 200, typically sequentially (one data word per one or more clock cycles) via thefull interconnect element 275, provides an address header, and transmits the sequence to asecond communication element 210 for transmission to anothercluster 200, generally transmitting the entire sequence as a packet burst. For data fromother clusters 200, thefirst communication element 250 receives and buffers the plurality of data words (310 0, 310 1, 310 2 through 310 (m-1)), and sequentially provides them to the designated component of thecluster 200, typically via the switching of thefull interconnect element 275. In exemplary embodiments, the source and/or destination addresses may be stored in any of a plurality of components, such as within any of the various routing elements (third communication elements 190,second communication elements 210, and first communication elements 250), and established during the binding process (discussed below) for each context utilizing intercluster communication. - More particularly, the one or more state machine elements (“SMEs”) 290 (or other controller(s) 175 or off-chip controller(s) or processor(s)) performing the binding process (the “binder”) assigns actions (i.e., functions or contexts) to the various
composite circuit elements 260, and establishes a “virtual” data linkage or routing between or among thecomposite circuit elements 260, namely, assigning a data linkage between one or morecomposite circuit elements 260, without necessarily specifying how that data linkage is to physically occur. The various communication elements (first communication element 250,second communication elements 210,third communication elements 190,full interconnect element 275 and/or distributed full interconnect element 295), either clock cycle-by-cycle or at any given time, then are adapted to determine the physical route for the corresponding data transfer, creating the physical data linkage. For example, via switching and/or routing, a first physical data path or link between or within communication elements may be established for one instance of a transfer of a data packet (e.g., a train of data words) between two clusters 200 (and subsequently released), with a different physical data path or link established for a subsequent instance of a transfer of a data packet between the twoclusters 200. Such physical data links may be stored and maintained, for example, within the various memories within the communication elements, such as stored as a routing table within the memories of the corresponding element interface and control 280 (discussed below), with any selected physical data link determined by thecorresponding element controller 325 of the communicationcomposite circuit element 260. Similarly, at any instant in time or clock cycle, different physical data links may be established (and released) for data communication within thecluster 200. In other exemplary embodiments, rather than establishing a virtual data link, the physical data linkages may also be established by the binder as part of the binding process. -
FIG. 5 is a block diagram illustrating a firstexemplary cluster 200 in accordance with the teachings of the present invention.FIG. 6 is a block diagram illustrating a secondexemplary cluster 200A in accordance with the teachings of the present invention. Incluster 200, a full interconnect element 275 (as a single or unitary circuit component) is utilized to provide complete interconnections between inputs and outputs of each of thecomposite circuit elements 260 and other cluster components as illustrated. For example, thefull interconnect element 275 may be implemented as a crossbar switch. Incluster 200A, a distributed full interconnect element 295 (as a distributed plurality of circuit components) is utilized to provide complete interconnections between inputs and outputs of each of thecomposite circuit elements 260 and other cluster components as illustrated. For example, the distributedfull interconnect element 295 may be implemented as a plurality of multiplexers and/or demultiplexers, such as themultiplexer 335 illustrated inFIG. 8 for a selectedcomposite circuit element 260. In all other respects, theclusters cluster 200 will be understood to mean and include the second embodiment illustrated ascluster 200A (and a third embodiment illustrated ascluster 200B inFIG. 7 ), as one or more variations of acluster 200, andcluster 200A (andcluster 200B) otherwise will not be further discussed as a separate embodiment. - As illustrated in
FIGS. 5 and 6 , the exemplary cluster 200 (200A) comprises a plurality of composite circuit elements 260 (or composite elements 260); a plurality of communication elements, namely, one or morefirst communication elements 250 and afull interconnect element 275 or a distributed full interconnect element 295 (also referred to as a full communication element or full interconnect bus (“FIBus”)); a state machine element (SME) 290; amessage manager 265; and various communication structures, such as busses or other types of communication media. It should be noted that astate machine element 290 andmessage manager 265 is not required in everycluster 200; in various embodiments, depending upon the application to be run, selectedclusters 200 may comprise predominantly composite circuit elements 260 (e.g., having digital signal processing (“DSP”) functions), with state machine and/or message management functionality provided bystate machine elements 290 andmessage managers 265 of other clusters 200 (with corresponding communication via the first communication elements 250). In other exemplary embodiments, rather than or in addition to including one or morestate machine elements 290 within theclusters 200, the corresponding functions may instead be implemented through the use of one or moreexternal controllers 175 or other, off-chip controllers, state machines, or processors. In selected embodiments, thefull interconnect element 275 may be implemented as a crossbar switch or pass-transistors (with or without arbitration capability), while the distributedfull interconnect element 295 may be implemented as a plurality of switches, pass transistors, multiplexers and/or demultiplexers, for example. - Also in selected embodiments, as various options or variations, an
exemplary cluster 200 may also include additional memory, such assecond memory element 255, which may be a type of queue, such as a long queue, for example; may also include anintercluster queue 245, such as a FIFO, buffer or other memory structure, for transfer of data, control and/or configuration information betweenadjacent clusters 200 without utilizing the variousfirst communication elements 250 and second communication elements 210 (creating the “fast path”connections 215 illustrated inFIG. 2 ); and may also include a separate or additional communication structure for communication between theSME 290 and other components within thecluster 200, illustrated as configuration/control bus 285. - Not separately illustrated in
FIGS. 5 and 6 , each element interface andcontrol 280 also includes a memory, input queues, and an element controller (comprised of a plurality of conditional logic structures (gates)), discussed in greater detail with reference toFIG. 8 . In addition,first communication elements 250 may also include a memory structure, to transfer incoming data to a selectedcomposite circuit element 260, and to address and route outgoing data from a selectedcomposite circuit element 260. WhileFIGS. 5 and 6 illustrate a cluster 200 (200A) comprising sixcomposite circuit elements 260, twofirst communication elements 250, one state machine element (“SME”) 290, onemessage manager 265, and onefull interconnect element 275 or distributedfull interconnect element 295, with possible additional memory such assecond memory element 255 and one or more various communication structures such asintercluster queue 245, it will be understood by those of skill in the electronic arts that any amounts and combinations of these components may be utilized, and that any and all such amounts and combinations are considered equivalent and within the scope of the invention. - Each
composite circuit element 260 is comprised of acomputational circuit element 270 and a uniform (constant or fixed) element interface andcontrol 280. While generally referred to as a “computational”circuit element 270, it is to be understood that acircuit element 270 may perform functions other than computations, such as bit reordering, memory functions, control functions, state machine functions, communication functions, instruction processing, and all such non-computational or other functionality is considered within the scope of acircuit element 270 of the invention regardless of nomenclature. - Within a
cluster 200, thecomposite circuit elements 260 have (computational)elements 270, which may be of the same or different type, and may be included within thecluster 200 in any selected combination or mix, and may be static (nonconfigurable) or configurable. As illustrated inFIG. 5 , theelements 270 are a configurable element (type “A”) 270 A, two configurable elements (type “B”) 270 B, a configurable element (type “D”) 270 D, a configurable element (type “E”) 270 E, and a configurable or non-configurable firstmemory circuit element 270 M. Acommunication circuit element 270 C is utilized in thefirst communication elements 250, which is typically non-configurable but which could be implemented to be configurable. In addition, any selectedelements 270 may also be implemented to be nonconfigurable, and all such variations are within the scope of the invention. The configurablecomputational elements 270 generally perform computation and/or bit manipulation and may be, for example, configurable arithmetic logic units (ALUs), configurable triple ALUs, configurable multiply and accumulate (MAC) units, configurable bit reordering elements (BREOs), configurable multipliers, configurable Galois multipliers, configurable barrel shifters, configurable look-up tables, configurable and programmable controllers, super or large ALUs (capable of a wide variety of arithmetic calculations, functions, comparisons and manipulations), and so on. The configurablecomputational elements 270 generally are comprised of combinatorial logic gates, but may also include conditional logic structures, as necessary or desirable, such as to evaluate the existence of a condition or event. Exemplaryconfigurable elements 270 are illustrated inFIGS. 9 and 10 . - As mentioned above,
elements 270 may also be implemented to provide communication functions, may be configurable or non-configurable, and may provide interfaces for internal communication, external communication, and memory access. In an exemplary embodiment, such external communication functions are provided through themessage manager 265, which provides a selected communication function of a plurality of communication functions, which typically differ between and among the various clusters. The plurality of communication functions may include, for example, providing an Ethernet interface, a PCI interface, a PCI Express interface, a USB or USB2 interface, a DDR SDRAM interface or other type of memory interface, a wireless interface, an interface to another IC, etc. Typically, themessage manager 265 of a givencluster 200 provides one type of communication function, with themessage managers 265 ofother clusters 200 correspondingly providing other types of communication functions. For example, themessage manager 265 of afirst cluster 200 may provide a PCI Express interface, while themessage manager 265 of asecond cluster 200 may provide a DDR-2 interface, while themessage manager 265 of athird cluster 200 may provide an Ethernet interface. - In addition, the
message manager 265 may also have a direct connection to theinterconnect 155, or more particularly, the second communication channel orbus 220, for intercluster communication independently of the variousfirst communication elements 250, such as for communication of configuration and/or control information between or among thestate machine elements 290 and other components. For example, during run-time binding, the various configurations and data routings may be transmitted to thestate machine elements 290 as messages via themessage manager 265. As a consequence, themessage manager 265 is illustrated as directly coupled to or part of the state machine element 290 (e.g., without intervening or separate bus or communication structures). - The first
memory circuit element 270 M,second memory element 255 and/or memory within the element interface andcontrol 280 may be any form of memory, machine-readable storage or memory media, whether volatile or non-volatile, including without limitation, RAM, FLASH, DRAM, SDRAM, SRAM, MRAM, FeRAM, ROM, EPROM or EPROM, or any other type of memory, storage medium, or data storage apparatus or circuit, which is known or which becomes known, or combinations thereof. In a first exemplary embodiment, thefirst memory element 270 M and the memory within the element interface andcontrol 280 are implemented as content addressable memories (“CAMs”). In a second exemplary embodiment, thefirst memory element 270 M and the memory within the element interface andcontrol 280 are implemented as SDRAM. - The
first communication elements 250 are similar to thecomposite circuit elements 260, including an element interface andcontrol 280, and acircuit element 270 which, in this case, is acommunication element 270 C, which may be configurable or non-configurable, depending upon the selected embodiment. For example, configuration may occur to determine switching or routing paths within thecommunication element 270 C. Thecommunication element 270 C provides for packet switched data transmission and reception to and from theinterconnect 155, and circuit-switched communication within thecluster 200. - Similarly, the
state machine element 290 also comprises an element interface andcontrol 280, with its “computational” element (270) being the more specific case of a state machine element, which also may be configurable or non-configurable, depending upon the selected embodiment. Thevarious memories 330 and input andoutput queues control 280, as discussed below, also provides for thestate machine element 290 to have a plurality of contexts, such as for multithreading. In addition, thestate machine element 290 is illustrated as having direct access to the element interface and control 280 of the composite circuit elements 260 (via configuration/control bus 285) for ease of directly populating configurations, control, and receiving interrupts, and a direct connection to the first memory element 270 M (and/or second memory element 255) (e.g., through one port of a dual port RAM), to facilitate corresponding memory accesses for instruction/code processing and other data access. As mentioned above, thestate machine element 290, in conjunction with any of the available memories (e.g., acomposite memory element 260 M or second memory element 255), constitutes a “controller” within the scope of the present invention, such as a cluster controller, a supercluster controller, a matrix controller, etc. Such a controller may also include themessage manager 265 or similar functionality. - By utilizing the same (or similar) element interface and
control 280, thefirst communication elements 250 andstate machine element 290 appear to thecomposite circuit elements 260 within thecluster 200 as simply anothercomposite circuit element 260, with corresponding advantages discussed below. For example, the othercomposite circuit elements 260 then do not need to have any knowledge that their output is provided to or input is being received from afirst communication element 250 or astate machine element 290, and do not need to accommodate any different type of data reception or transmission. - In exemplary embodiments, the
composite circuit elements 260 may include some form of identification by type or kind of composite circuit element 260 (i.e., type ofcircuit element 270 within the composite circuit element 260), to facilitate identification by a state machine element (“SME”) 290 (or a controller 175). Such identification may be retained in an available memory within thecluster 200 in a wide variety of forms, such as hard-wired as a ROM within acomposite circuit element 260 during fabrication, loaded into a memory during a boot process, and so on. Such type identification, for example, may be maintained in a memorycomposite element 260,second memory 255, or within thememory 330 of the element interface andcontrol 280 discussed below. - The element interface and
control 280 provides both (1) a uniform interface for input to and output from eachconfigurable circuit element 270, memory element, communication element, or state machine element; and (2) a uniform control structure, and is discussed in greater detail below with reference toFIGS. 8 and 16 . Because each element interface andcontrol 280 has the same structure for everycomposite circuit element 260,first communication element 250, andstate machine element 290 within everycluster 200, everysuch element composite circuit element 260,first communication element 250, andstate machine element 290 may communicate with any othercomposite circuit element 260,first communication element 250, andstate machine element 290 in a uniform, repeatable manner, without regard to the type of element (e.g., a configurable circuit element 270). More particularly, everycomposite circuit element 260,first communication element 250, andstate machine element 290 may be addressed in a uniform manner, through the addressing scheme discussed above. - As a first result of such uniformity, no
composite circuit element 260,first communication element 250, andstate machine element 290 is required to know anything about any othercomposite circuit element 260,first communication element 250, andstate machine element 290 from which it receives input or to which it provides output, i.e., eachcomposite circuit element 260 andfirst communication element 250 may be generally ignorant about its surroundings and functions. (Depending upon the implementation, thestate machine element 290 may have additional functionality for monitoring, testing and controlling other elements, so that it is knowledgeable about its surroundings and functions). As a second result of such uniformity, eachcomposite circuit element 260,first communication element 250, andstate machine element 290 may be configured, addressed and queried in a uniform manner, also without regard to the type of element (e.g., type of circuit element 270). - As a third and very significant result, each
composite circuit element 260 having a selected type ofcircuit element 270 is virtually completely interchangeable with any othercomposite circuit element 260 having the same selected type ofcircuit element 270, except to the extent of any locality (distance) constraints for the performance of a particular computation or algorithm. As a consequence, subject to such constraints, for execution of a given algorithm, the operations performed by any selectedcomposite circuit element 260 having a selected type ofcircuit element 270 may be freely assigned or transferred to anothercomposite circuit element 260 having the same selected type ofcircuit element 270, without any detrimental effect. In the event of a failure or defect in a particularcomposite circuit element 260 having a selected type ofcircuit element 270, its operations may be transferred to: (1) another availablecomposite circuit element 260 having the same selected type ofcircuit element 270; (2) a group of availablecomposite circuit elements 260 which together are capable of performing the same operations; or (3) an otherwise unavailablecomposite circuit element 260 having the same selected type of circuit element 270 (or group of composite circuit elements 260) which had been performing another or a lower priority operation. For example, in the event of a failure of acomposite circuit element 260 having a triple ALUconfigurable element 270, its operations may be transferred to threecomposite circuit elements 260 which each have a single ALUconfigurable element 270, which may then be configured to perform the operations of the triple ALU. Similarly, the functions performed by afirst communication element 250 or astate machine element 290 may also be transferred to other availablefirst communication elements 250 andstate machine elements 290, as needed. - The
full interconnect element 275 and/or distributedfull interconnect element 295, which respectively may be implemented as a full crossbar switch or as another arrangement of switches, multiplexers, demultiplexers, or other transistor arrangements, provides for any output of anycomposite circuit element 260,first communication element 250, andstate machine element 290 to be coupled to any input of any (other)composite circuit element 260,first communication element 250, andstate machine element 290, and/or to be coupled to any other component within itscluster 200 or, viaintercluster queue 245, to thefull interconnect element 275 and/or distributedfull interconnect element 295 of an adjacent cluster 200 (for input to anycomposite circuit element 260,first communication element 250, andstate machine element 290 or other component of the adjacent cluster 200). (Feedback of output to input within the same composite circuit element may, in selected embodiments, be accomplished internally within thecomposite circuit element 260, such as through a multiplexer or other switching arrangement, not separately illustrated.) In an exemplary embodiment, any output of acomposite circuit element 260,first communication element 250, andstate machine element 290 may be provided as an input to any othercomposite circuit element 260,first communication element 250, andstate machine element 290, in parallel and concurrently, throughfull interconnect element 275 and/or distributedfull interconnect element 295, for eachcomposite circuit element 260, allowing complete and concurrent communication between and among allcomposite circuit elements 260,first communication elements 250, and state machine element 290 (with the exception of potential conflicts requiring arbitration or other resolution). - Depending upon the selected embodiment, the outputs from a
composite circuit element 260 may be switched in a plurality of ways, all of which are within the scope of the present invention. For example, an optional output switching element 380 (illustrated inFIG. 8 ) may be provided for everycomposite circuit element 260, which may switch the outputs for internal feedback within thecomposite circuit element 260, switch the outputs to thefull interconnect element 275 or distributedfull interconnect element 295, switch the outputs directly to afirst communication element 250, or switch the outputs directly to thestate machine element 290. In the selected embodiment discussed below with reference toFIG. 8 , internal feedback may be provided from any stage within acomputational element 270, and thecomputational element 270 outputs are provided to an output memory (or output queue or register) 315 and then directly to thefull interconnect element 275, for switching to othercomposite circuit elements 260, to thestate machine element 290, or to thefirst communication elements 250. Similarly, inputs to acomposite circuit element 260 may be provided in a plurality of ways, such as from thefull interconnect element 275 or distributedfull interconnect element 295, or directly from thefull interconnect element 275 and other sources, such as fromsecond memory element 255, thestate machine element 290, and/orfirst communication elements 250. - This communication functionality may be implemented based upon either or both data sources and/or data destinations. For destination-based communication, destination addresses for each context are typically stored in a routing table of an output queue 315 (
FIG. 8 ). Output is then provided for the corresponding address, with thefull interconnect element 275 or distributedfull interconnect element 295 configured for the corresponding destination address. For this embodiment, when one output from acomposite circuit element 260 is to be applied as input to more than onecomposite circuit element 260, these additional inputs may be provided sequentially. In other exemplary embodiments, additional output fan-out may be provided, such that an output of onecomposite circuit element 260 may be input concurrently into a plurality of othercomposite circuit elements 260, also viafull interconnect element 275, distributedfull interconnect element 295 or other communication structures. Handshaking protocols may also be utilized, with the destination sending or not sending an acknowledgement upon receipt of data. - For source-based communication, implemented in an exemplary embodiment, source addresses for each context are typically stored in
input queues 320. Every source provides its output on a selected bus or communication lines of thefull interconnect element 275 or distributedfull interconnect element 295. For incoming data, the correspondinginput queue 320 determines whether the data is from a source designated for one or more of its contexts and, if so, when memory space is available, receives the corresponding data. This source-based communication provides ease of multicasting or broadcasting, as any and all destinations are enabled to concurrently receive any data of interest transmitted on the selected data lines. Handshaking protocols may also be utilized, with the destination sending or not sending a denial or other unavailability message when it is unable to receive the data transmitted (thereby providing for the source to resend the data at another time). - In another exemplary embodiment, no handshaking or other type of communication acknowledgement is utilized. Physical data links may be established at run time, as part of the binding process, with all corresponding computational processes allowed to execute, without a need to determine input data availability or space availability for output data. Such an implementation is useful for pipelining, such as for inner kernels of various algorithms. In addition, such an implementation is useful to avoid data stalls or data back pressure, when one data process may be waiting for incoming data and thereby affecting data throughput of other processes. In addition, combinations of these implementations may also be utilized, such as various components utilizing data flow-based operations, and other components not utilizing data flow-based operations. For example, data flow-based operations may be utilized for operations within a
cluster 200, with other operations, such as communication operations, allowed to simply execute (e.g., route and switch). - Continuing to refer to
FIGS. 5 and 6 , thefull interconnect element 275 and distributedfull interconnect element 295 are illustrated generally, for ease and clarity of illustration, to represent generally the types of communication within acluster 200, such as, for example: to provide for the input and output of anycomposite circuit element 260 to be coupled to othercomposite circuit elements 260, to thestate machine element 290, to themessage manager 265, or to either (or both)first communication elements 250 orintercluster queue 245, for data transfer to or fromother clusters 200; communication between the state machine element (SME) 290 and any composite circuit element 260 (including memory elements and communication elements); communication between theSME 290 and either or bothfirst communication elements 250, for transfer of control information, queries, query responses, and so on; communication between themessage manager 265 andinterconnect 155; and communication between thefirst communication elements 250 and the various memories within the cluster 200 (e.g.,second memory element 255 and the other memories within the various components of the cluster 200); and any other communication between or among combinations of components within acluster 200. It will be understood by those of skill in the art that a wide variety of communication structures and communication media are available, and all such variations are considered equivalent and within the scope of the present invention. - The state machine element (SME) 290 functions as a (comparatively small) microprocessor (or microcontroller), such as a RISC processor, for execution of instructions, determination of conditions and events, operating system management, and control of the
composite circuit elements 260. TheSME 290 can be utilized to implement legacy C programs and implement state for otherwise stateless dataflow operations of thecomposite circuit elements 260. Thestate machine element 290 is adapted to function as a sequential processor, and its operations are augmented by thecomposite circuit elements 260 within thesame cluster 200. TheSME 290 also may have internal memory, may utilize thesecond memory element 255, a memorycomposite circuit element 260 M, or amemory 330 within acomposite circuit element 260, for storage of data and instructions (or actions). For example, thesecond memory element 255 may be implemented as a plurality of “long” queues, having sufficient depth to store instructions which may be utilized by thestate machine element 290. TheSME 290 may utilize any of thecomposite circuit elements 260 to perform calculations or other functions which will be needed in its execution of its program, such as to add or to compare two numbers, for example. Thestate machine element 290 performs control functions of computations, such as determinations of conditionals, represented in programming languages using statements such as IF, CASE, WHILE, FOR, etc. TheSME 290 may also have control registers or other types of internal memory, such as to define and keep track of its control functions. As previously mentioned, not everycluster 200 is required to have astate machine element 290. - In addition, the
state machine element 290 is illustrated as having, in addition to direct access to the element interface and control 280 of the composite circuit elements 260 (via configuration/control bus 285), a direct connection to the first memory element 270 M (and/or second memory element 255), to facilitate corresponding memory accesses for instruction/code processing and other data access. Alternatively to the use of the configuration/control bus 285, such communication may be provided via thefull interconnect element 275 or distributedfull interconnect element 295, for example. - The
state machine element 290 is utilized to implement a hardware operating system, and in a supervisory mode, has access to all of the resources within itscluster 200, thereby able to program, control, and monitor all of thecomposite circuit elements 260 within thecluster 200. For implementations in which one ormore clusters 200 do not have astate machine element 290 included within thecluster 200, one or more otherstate machine elements 290 ofother clusters 200 will perform these functions and operations. In addition to task control, thestate machine element 290 is utilized in self-testing of cluster resources, loading or assigning tasks (actions (or instructions)), binding actions (or instructions) (e.g., run-time binding) to thecomposite circuit elements 260, and in creating the connections between and among the variouscomposite circuit elements 260 andclusters 200. The assigning and binding process is discussed in greater detail with reference toFIG. 14 . Collectively, theSMEs 290 within theclusters 200 function as a highly distributed controller, running the operating system of the apparatus 100 (in conjunction with any needed composite circuit elements 260), either with or withoutother controllers 175. In exemplary embodiments,various SMEs 290 may take on additional functions, such performing a system boot process, operating as a master controller, and determining and mapping functional and nonfunctionalcomposite circuit elements 260 and other components, for example. The operation of theSME 290 is also explained in greater detail below with reference toFIGS. 8-14 . - For example, the
SME 290 may start a bound task of thecomposite circuit elements 260 within thecluster 200, suspend a task, suspend an action or function of a composite circuit element 260 (as part of an overall task), halt a task and free its resources (such as to load and run a higher priority task), set a task to perform in a single-step mode, and move a task to another location (such as to perform self-testing of thecomposite circuit elements 260 currently performing the task). - The
message manager 265, in thefirst cluster 200 andsecond cluster 200A embodiments, is utilized for communication external to theapparatus 100, such as for an Ethernet interface, a memory interface (e.g., DDR-2 SDRAM), a PCI-Express interface, etc. Themessage manager 265 is coupled directly to theSME 290, and more generally, also may be coupled to thefull interconnect element 275 or distributedfull interconnect element 295, thefirst communication elements 250, and/or the composite circuit elements 260 (not separately illustrated). For example, data words provided by thefull interconnect element 275 may be output by themessage manager 265 for storage in an external memory. Similarly, also for example, incoming data, configuration or control may be transferred to the SME 290 (or stored in second memory element 255), such as to provide instructions for theSME 290, or transferred to acomposite circuit element 260, for use and consumption in computations. In addition, in an exemplary embodiment, themessage manager 265 is also coupled to the second communication channel or bus 220 (of the interconnect 155). - In an exemplary embodiment, as an additional alternative, the
message manager 265 is also utilized for communication within theapparatus 100. In this embodiment, themessage manager 265 is also utilized forcluster 200 to cluster 200 communication, and forSME 290 toSME 290 communication. For example, themessage manager 265 is utilized for onecomposite circuit element 260 of afirst cluster 200 to transfer information to anothercomposite circuit element 260 of asecond cluster 200. - Also, in an exemplary embodiment, not all
message managers 265 in amatrix 150 are implemented to provide external communication. For example, in one alternative embodiment utilizing fourmatrices 150, eachmatrix 150 is provided with a total of six PCI-express interfaces implemented through themessage managers 265 of six corresponding clusters 200 (one persupercluster 185, in an embodiment in which superclusters 185 are implemented identically). Similarly, in this four matrix example, eachmatrix 150 is provided with a total of one or two DDR-2 interfaces implemented through themessage managers 265 of one or twocorresponding clusters 200. As a result, there are remainingclusters 200 which havecorresponding message managers 265 which are not providing interfaces and control for external communication. For these remainingclusters 200, theircorresponding message managers 265 transfer data to theseother clusters 200 having DDR-2 or PCI-express interfaces for storage in memory or external communication on a PCI-express bus, respectively, either through second communication elements 210 (supercluster-level) or third communication elements 190 (matrix-level). - The
message manager 265 may be implemented in a wide variety of ways, depending upon the selected embodiment. In a first selected embodiment, themessage manager 265 is implemented as a finite state machine and implements communication standards, such as those mentioned above. When implemented as a state machine, themessage manager 265 may be implemented separately or combined as a part of theSME 290. In a second selected embodiment, themessage manager 265 is implemented as dedicated computational logic gates, also for the provision of a communication interface, with theSME 290 utilized to perform any conditional logic or other state machine functions. - In exemplary embodiments, as indicated above, the
composite circuit elements 260 will include some form of identification by type or kind of composite circuit element 260 (i.e., type ofcircuit element 270 within the composite circuit element 260), to facilitate identification by a state machine element (“SME”) 290. Generally, aSME 290 will determine (and report toother SMEs 290, as necessary) the types and context availability of thecomposite circuit elements 260 within itscluster 200, for use in run-time binding. For example, for the illustratedcluster 200, theSME 290 may determine that the cluster has one configurable barrel shifter-type element (corresponding to type “A”) 270 A, two configurable triple-ALU-type elements (corresponding to type “B”) 270 B, one configurable Galois multiplier-type element (corresponding to type “C”) 270 C, one configurable bit reordering (“BREO”)-type element (corresponding to type “D”) 270 D, and one content addressable memory element (corresponding to type “M”) 270 M. TheSME 290 may also determine and report at another time that the BREO-type element of itscluster 200 is no longer functioning properly, so that the operations of its BREO-type element may be transferred to a BREO-type element of anothercluster 200. - Continuing to refer to
FIGS. 5 and 6 , thesecond memory element 255 may receive input and provide output (be written to and read from) either directly or indirectly via thefull interconnect element 275 or distributedfull interconnect element 295, from a plurality of sources, such as: (1) to and from the first communication elements 250 (for input fromother clusters 200, such as input of data, instructions or other control information for use by theSME 290 or for queuing data for use by composite circuit elements 260); (2) to and from one or more composite circuit elements 260 (including memory composite circuit element 260 M) within thesame cluster 200; (3) to and from theSME 290; or (4) to and from themessage manager 265. -
FIG. 7 is a block diagram illustrating a thirdexemplary cluster 200B embodiment in accordance with the teachings of the present invention, as another variation of acluster 200. In this embodiment, thecluster 200B containscomposite circuit elements 260 having communication functionality, such as to provide external communication functionality, e.g., for the communication functionality concentrated within a selectedmatrix 150 as illustrated inFIG. 3 . Also in this embodiment, as an option, themessage manager 265 is not utilized for such external communication, which instead is provided within dedicated communicationcomposite circuit elements 260, which may be configurable or nonconfigurable. In this embodiment, eachcommunication composite element 260 is utilized to provide a standard I/O interface for (external) communication to and from theapparatus 100, such as DDR-2 or PCI-e interfaces. In addition, the communicationcomposite elements 260 may have additional input and output bus or media structures to provide such interfaces, and are not confined to communicating outside the cluster 201 through thefirst communication elements 250. Depending upon the selected embodiment, additional communicationcomposite elements 260 may be utilized for increased resiliency and immunity from catastrophic failure. In all other respects, theclusters cluster 200A in use of afull interconnect element 275 rather than a distributedfull interconnect element 295. As a consequence, any reference to acluster 200 will be understood to mean and include the third embodiment illustrated ascluster 200B, as a variation or more specific case of acluster 200, andcluster 200B otherwise also will not be further discussed as a separate embodiment. It should be noted, however, that thefirst cluster 200 embodiment may also be utilized for the communication functionality concentrated within a selectedmatrix 150 as illustrated inFIG. 3 . - For the cluster embodiments, because of the same matrix, supercluster and cluster addressing, and because of the same element interface and
control 280, any other cluster 200 (or composite circuit element 260) may communicate with the communicationcomposite elements 260 and its cluster 201, or communicate with acluster 200 having amessage manager 265 with an external communication interface, in same manner as any communication with any othercomposite circuit element 260 orcluster 200. As a result, when acluster 200 orcomposite circuit element 260 has a communication external to theapparatus 100, all that is required is for thatcluster 200 orcomposite circuit element 260 to have the address of the corresponding communication composite elements 260 (with the interface corresponding to the selected form of communication) and/or its cluster 201, or the address of acluster 200 having amessage manager 265 with the interface corresponding to the selected form of communication. Such addressing may be provided by various components within thecluster 200, such as themessage manager 265, theSME 290, or thefirst communication elements 250, for example. Such external communication is thereby provided through virtual addressing, e.g., via amessage manager 265 orcluster 200, or via a communicationcomposite elements 260 or cluster 201, and thecomposite element 260 does not need any further information concerning the location or type of the external interface. For example, acluster 200 orcomposite circuit element 260 does not need any information concerning whether its external communication is with a DDR SDRAM or is via an Ethernet protocol, or where these interfaces may be located on theapparatus 100. Similarly, for internal communication, acomposite circuit element 260 also does not need any information concerning whether its communication is within anothercomposite circuit element 260 within thesame cluster 200 or adifferent cluster 200. -
FIG. 18 is a block diagram illustrating a fourthexemplary circuit cluster 200C in accordance with the teachings of the present invention. The fourthexemplary circuit cluster 200C differs from the cluster embodiments discussed previously in that its topology has a degree of internal hierarchy, with the fourthexemplary circuit cluster 200C divided into a plurality of zones 201, illustrated aszones separate interconnect 275, 295 (which may be full or distributed), and with communication between each zone 201 occurring through a plurality ofcluster queues 245A (which are effectively identical to the previously described intercluster queues 245). Thecluster queues 245A are utilized for communication within acluster 200C, and not merely for “fast track” communication betweenclusters 200. The full or distributedinterconnect composite circuit element 260 monitoring theinterconnect interconnect - The
circuit cluster 200C does not includefirst communication elements 250. Instead, communication withother clusters 200,superclusters 185,matrices 150, or external communication (such as to a PCI-e bus) (via second channel (or bus structure) 220) is accomplished through themessage manager 265, which provides the additional packet-based and circuit-switched communication functionality of thefirst communication elements 250. Each of thecomposite circuit elements 260, illustrated as CE0 through CE14, are coupled to the full or distributedinterconnect composite circuit elements 260. Thecluster queues 245A12 throughcluster queues 245A16, as illustrated, provide communication between and among the various zones 201 ofcomposite circuit elements 260 within thecircuit cluster 200C. - Typically, the
cluster queues 245A are implemented as multiple unidirectional ports, using any type of memory as discussed herein, and are implemented to provide several communication paths in both directions between zones 201 (one “hop” to any destination within acluster 200C, with one “hop” occurring per cycle, absent contention from other data sources) or betweencircuit clusters 200C (one or two cycles or “hops” to anadjacent cluster 200C, and one or more cycles or “hops” to any other destination). In an exemplary embodiment, eachcluster queue 245A provides four communication paths, two in each direction. For example,cluster queue 245A15 provides two communication paths from zone 201B (as a data source) to zone 201D (as a data destination), and provides two communication paths from zone 201D (as a data source) to zone 201B (as a data destination). In an exemplary embodiment, eachcluster queue 245A also has eight contexts, providing eight virtual connections across eachcluster queue 245A in each direction and for each communication path. - Accordingly, for this embodiment,
cluster queues 245A andmessage manager circuit 265 are also considered “communication elements” within the scope of the present invention. -
FIG. 19 is a block diagram illustrating an exemplary third apparatus embodiment, comprising asupercluster 185C, in accordance with the teachings of the present invention. Using this topology for acircuit cluster 200C, thecircuit clusters 200C may be effectively tiled or arrayed with each other, to form asupercluster 185, illustrated assupercluster 185C, having sixteencircuit clusters 200C, illustrated as C0 through C15. Each of thecircuit clusters 200C communicates withadjacent circuit clusters 200C through the plurality ofcluster queues 245A.Such superclusters 185C then do not utilize one or moresecond communication elements 210, and instead connect to one or morethird communication elements 190 through one ormore message managers 265 within thesupercluster 185C. - Referring again to
FIG. 18 , for this embodiment, thecluster queues 245A also provide intercluster communication withadjacent clusters 200C, and may be viewed as a more generalized type ofintercluster queues 245. As illustrated, theperipheral cluster queues 245A provide communication between thecircuit cluster 200C and itsadjacent circuit clusters 200C. For intercluster communication, thecluster queues 245A may be implemented to provide one or two communication paths in each direction, depending on the selected embodiment. For example, in an exemplary embodiment, theperipheral cluster queues 245A provide one communication path in each direction. Using typical geographic coordinates, for example, cluster queue(s) 245A0 provides communication betweencircuit cluster 200C and an adjacent “northwest”circuit cluster 200C, cluster queue(s) 245A1 and 245A2 provide communication betweencircuit cluster 200C and an adjacent “north”circuit cluster 200C, cluster queue(s) 245A3 and 245A4 provide communication betweencircuit cluster 200C and an adjacent “west”circuit cluster 200C, and cluster queue(s) 245A5 provides communication betweencircuit cluster 200C and an adjacent “southwest”circuit cluster 200C. Similarly, the cluster queue(s) 245A11 (which may be considered part of anadjacent cluster 200C) provide communication betweencircuit cluster 200C and an adjacent “northeast”circuit cluster 200C, cluster queue(s) 245A10 and 245A9 (which may be considered part of anadjacent cluster 200C) provide communication betweencircuit cluster 200C and an adjacent “east”circuit cluster 200C, cluster queue(s) 245A8 (which may be considered part of anadjacent cluster 200C) provides communication betweencircuit cluster 200C and an adjacent “southeast”circuit cluster 200C, and cluster queue(s) 245A6 and 245A7 (which may be considered part of anadjacent cluster 200C) provide communication betweencircuit cluster 200C and an adjacent “south”circuit cluster 200C. - In addition, for data routing assignments, such as in the run-time binding described below, rather than routing data or other information through a
second communication element 210 to or from asupercluster 185 and/or through afirst communication element 250 to or from acircuit cluster 200, routing may occur through amessage manager 265 to or from asupercluster 185 or acircuit cluster 200, and by routing to a designatedcomposite circuit element 260 within asupercluster 185C or acircuit cluster 200C through any of thevarious cluster queues 245A, using either the source-based or destination-based communication schemes described herein. This use ofcluster queues 245A for intercluster communication has the potential advantage of reduced latency compared to use of thefirst communication element 250, insofar as multiple words are not required for assembly into a packet train, and instead may be communicated as they are generated. Thesupercluster 185C andcircuit cluster 200C otherwise function as described herein for anysupercluster 185 andcircuit cluster 200, respectively. Accordingly, any reference to asupercluster 185 or to acircuit cluster 200 shall be understood to correspondingly mean and include asupercluster 185C orcircuit cluster 200C, respectively. -
FIG. 8 is a block diagram illustrating in greater detail an exemplarycomposite circuit element 260 within anexemplary cluster 200 in accordance with the teachings of the present invention. As illustrated inFIG. 8 , thecomposite circuit element 260 comprises an element interface andcontrol 280 and a circuit element 270 (also referred to as a computational element 270), which is generally a configurable computational element, but which may also be a nonconfigurable computational element, a configurable or nonconfigurable communication element, a configurable or nonconfigurable finite state machine element, may be a configurable or nonconfigurable memory element, or may be other forms of circuitry selected for any particular application of anapparatus 100. - In an exemplary embodiment, the element interface and
control 280 comprises: (1) anelement controller 325; (2) a memory 330 (such as a content addressable memory (“CAM”) or random access memory such as SDRAM) which stores contexts and control information (e.g., configuration words); (3) input queues 320 (as a form of memory); and (4) output queues (or registers) 315 (also as a form of memory). In other exemplary embodiments, the element interface andcontrol 280 may include theelement controller 325, thememory 330, and either theinput queues 320 or theoutput queues 315, but not both. In additional exemplary embodiments, the element interface andcontrol 280 may include thememory 330, and either theinput queues 320 or theoutput queues 315, but not theelement controller 325. In the latter embodiment, once aSME 290 has assigned actions and established the data routing, no separate or additional control is utilized within thecomposite circuit elements 260, with thecomposite circuit elements 260 allowed to freely and/or continuously execute an assigned context. - As mentioned above, in selected embodiments, the element interface and
control 280 may also include an optionaloutput switching element 380 such as one or more switches, transistors, multiplexers or demultiplexers, to provide direct switching capability for output data, such as for internal feedback within thecomposite circuit element 260, or for providing output data to theSME 290, to themessage manager 265, or to thefirst communication elements 250, in addition to providing output data to thefull interconnect element 275 or distributedfull interconnect element 295. As mentioned above, thememory 330,input queues 320 andoutput queues 315 may be implemented as any form of memory, including without limitation any of the memory types mentioned previously, such as CAM or SDRAM. - The
input queues 320 provide a plurality ofinputs 365 into theconfigurable circuit element 270, illustrated as an exemplary four inputs each having a width of one 16-bit data word. Alternatively, the width may be wider, such as to include a bit designating a placeholder, for example. Theinput queues 320 may be independent from each other or may be dependent upon each other, such as using 2 inputs for a combined 32-bit data word. In exemplary embodiments,input queues 320 are provided for each of the inputs into thecircuit element 270, with each of theinput queues 320 providing a separate queue for each context which may be utilized by thecircuit element 270. In addition, theinput queues 320 may be implemented as “short queues”, having a depth of 1 or 2 data words, although deeper queues and other forms of memory are within the scope of the invention. For an exemplary embodiment, eight contexts are utilized, for each of 4 inputs, with a depth of at least 2 data words. Contexts may also be combined, such as to implement a larger queue, e.g., 16 words, for a selected context. - The
input queues 320 may receive data from any of a plurality of input sources, depending upon the switching arrangements, either directly or via thefull interconnect element 275 or distributedfull interconnect element 295, such as: (1) from the first communication elements 250 (for input from other clusters 200); (2) from one or more other composite circuit elements 260 (including memory composite element 260 M) within thesame cluster 200; (3) from thesecond memory element 255; (4) from themessage manager 265; or (5) from the SME 290 (e.g., when utilized by theSME 290 for calculation of a value or comparison of 2 values, such as to evaluate a condition or an event). As illustrated inFIG. 8 , theinput queues 320 receive data from either afull interconnect element 275 or a distributedfull interconnect element 295, illustrated as anexemplary multiplexer 335. For an exemplary embodiment, themultiplexer 335 is a 16-to-1 multiplexer, allowing theinput queues 320 to obtain data from any assigned source by selecting busses of theinterconnect circuit element 270 also may be fed back to be provided as an input, through theinput queues 320, or directly within the circuitry of theelement 270, via anoutput switching element 380 mentioned above, or simply via thefull interconnect element 275. - In an exemplary embodiment, two output queues (registers or other forms of memory) 315 are provided, each having the corresponding eight contexts, each having a width of one 16-bit data word, and having a selected depth of 1, 2 or more data words. Alternatively, the width may be wider, such as to include a bit designating a placeholder, for example. The
output queues 315 also may be independent from each other or may be dependent upon each other, such as using 2output queues 315 for a combined 32-bit data word. The contexts may also be combined, such as to implement a larger queue, e.g., 8-16 words, for a selected context. In addition to storing output data, the output queues 315 (utilizing an incorporated state machine) may also replicate output data, such as providing the same output data to additional contexts for distribution to additional destinations. - A plurality of
outputs 375 are provided from theoutput queues 315 of thecircuit element 270, illustrated as two outputs, also each having a width of one 16-bit data word (or wider, as discussed above, such as for inclusion of a placeholder bit, control information, or other data). Theoutputs 375 also may be independent from each other or may be dependent upon each other, such as using 2 outputs for a combined 32-bit data word. Theoutputs 375 are provided to thefull interconnect element 275 or distributed full interconnect element 295 (or the optional output switching element 380), which may independently provide each of the plurality ofoutputs 375 to any of the following (via corresponding communication structures or bus 350): (1) to the first communication elements 250 (for output to other clusters 200); (2) to one or more (other) composite circuit elements 260 (including memory composite element 260 M) within thesame cluster 200; (3) to the SME 290 (such as when utilized by theSME 290 for calculation of a value or comparison of 2 values (e.g., to evaluate a condition or an event)); (4) to themessage manager 265; or (5) to an optionalsecond memory element 255, such as a long queue for input into theSME 290 or other components. As mentioned above, the optionaloutput switching element 380 and other output switching arrangements are also available and will be apparent to those of skill in the electronic arts, are considered equivalent and are within the scope of the present invention. - In a selected embodiment, the
memory 330 is implemented as a CAM, to facilitate searching and identification of stored task identifiers (task IDs) and stored action identifiers (action IDs). In another embodiment, thememory 330 is implemented as RAM, with searching and identification performed utilizing other search methods, such as binary searching. Other types and combinations of memory may be utilized, however, and all are considered equivalent and within the scope of the present invention, whether volatile or non-volatile, including without limitation any type or combination of RAM, FLASH, DRAM, SDRAM, SRAM, MRAM, FeRAM, ROM, EPROM or EPROM, or any other type of memory, storage medium, or data storage apparatus or circuit, which is known or which becomes known, depending upon the selected embodiment. - The
memory 330 is utilized in the exemplary embodiments to store both contexts and control information, utilized to configure theconfigurable element 270 and direct its operations. Such contexts and control information is stored as a configuration word in the exemplary embodiments, as a plurality of information fields, and is discussed below with reference toFIG. 16 . In addition, through thestate machine element 290, such configuration words may be altered, deleted, supplanted, added, and so on, and by modifying various bits within the configuration word, the execution of operations by thecircuit element 270 may also be controlled. This local storage of contexts and control information provides for extremely fast execution capability, as configurations or instructions do not need to be fetched and read from a remote memory, but are instantly available as contexts for immediate configuration and control of thecircuit element 270. As such, theapparatus 100 is not subject to the “von Neumann” bottleneck which limits the execution capabilities of typical processors. Indeed, thevarious memories 330 function as a large, very highly distributed instruction memory which may be utilized advantageously, such as for distributed processing, distributed digital signal processing, distributed programming, and distributed rebinding of instructions (or actions) in the event of a component failure, for example. - This use and local storage of contexts also allows for significant time multiplexing of operations of
composite circuit elements 260,first communication elements 250, andstate machine elements 290. For example, while one context of a selectedcomposite circuit element 260 may require input data which has not yet been created by anothercomposite circuit element 260, another context may be able to be executed on the selectedcomposite circuit element 260, rather than thecomposite circuit element 260 remaining idle. Similarly, the use of a plurality of contexts by astate machine element 290 allows multithreaded operation. For example, aSME 290 may commence execution of first code with a particular first data set for a first context, store interim results and a first code pointer, commence execution of second code with a second data set for a second context and provide an output, followed by returning to the first context for continued execution of the first code using the first code pointer and the stored, interim results. This use of time multiplexed contexts further allows interleaving of tasks and usage of resources which otherwise might be idle, allowing tasks to share resources and increasing the overall resource utilization of the IC. - The
element controller 325 may be implemented through combinational logic gates and/or as a finite state machine, and is utilized to control how thecircuit element 270 is configured and when thecircuit element 270 operates, utilizing the configuration word (contexts and control information) stored inmemory 330. More specifically, in exemplary embodiments, thecircuit element 270 operates based on data flow, such that when it has data at its inputs, when it has an available destination to store or consume the output data to be produced, and when authorized by theelement controller 325, thecircuit element 270 will commence operations (or fire) and perform its calculations or manipulations on the input data and provide the corresponding output data. Theelement controller 325 controls this data flow operation, based on a plurality of conditions and priorities (and other information stored as one or more configuration words in memory 330). For example, when more than one context is ready for execution, theelement controller 325 may arbitrate which runs first, such as through round-robin, or evaluation of one or more priorities, a scheduled execution of an activity, or when the activity last occurred (e.g., a most recently executed action may have a lower priority in the arbitration, while a least recently executed action may have a higher priority in the arbitration). - The
element controller 325 may be implemented with varying levels of sophistication. As mentioned above, in one embodiment, theelement controller 325 is not implemented, with thecomposite circuit elements 260 essentially operating in a continuous mode, subject to other constraints (e.g., control from any of the various SMEs 290). At the other extreme, theelement controller 325 may provide multithreaded operation of thecircuit element 270, such as by storing a current state of a partial execution of a first context in the (first)memory 330, executing a second context (via the circuit element 270), and retrieving the current state and resuming execution of the first context by thecircuit element 270. - Exemplary configurable,
computational elements 270 are illustrated inFIGS. 9 and 10 .FIG. 9 is a block diagram of an exemplary multiplier-typeconfigurable element 270 F, andFIG. 10 is a block diagram of an exemplary triple-ALU-typeconfigurable element 270 G. As illustrated, each has four 16-bit inputs 365 and two 16-bit outputs 375, and depending upon the context, each is capable of utilizing allinputs 365 and outputs 375. The configuration corresponding to a selected context is provided for mode selection of corresponding multiplexers, demultiplexers, and other switching elements to implement the selected configuration. - As illustrated in
FIG. 9 , the exemplary multiplier-typeconfigurable element 270 F is configurable for several operating modes, such as for 32-bit multiplication, 16-bit multiplication, accumulation, and mixtures of 16- and 32-bit arithmetic. As a brief, high-level explanation, the multiplier-typeconfigurable element 270 F may be configured using the 4multiplexers subtracter 382 and themultiplier 381. The 32-bit output select 387 specifies whether the low 32 bits of the adder/subtracter 382 is output or which portion which portion of the 64-bit accumulation register 388 is output. The multiplexer 385 (A Select) specifies the A-input into the adder/subtracter 382, as zero, I1, I2, or theaccumulation register 388; the multiplexer 386 (B Select) specifies the alignment of the B-input into the adder/subtracter 382, as one of four 16-bit portions of a 64-bit output from themultiplier 381; and configuration bits into the adder/subtracter 382 further specify whether the A-input is signed or unsigned and whether the B-input is added or subtracted. The multiplexer 383 (P Select) specifies the P-input into themultiplier 381, as I3 or I2, and whether signed or unsigned. The multiplexer 384 (Q Select) specifies the Q-input into themultiplier 381, as I1 or I0, and whether signed or unsigned. In addition, the multiplier-typeconfigurable element 270 F also illustrates output feedback within theelement 270, from the 64-bit accumulation register 388 tomultiplexer 385. - As illustrated in
FIG. 10 , the exemplary triple-ALU-typeconfigurable element 270 G is configurable for a wide variety of functions in including multiplication, addition and subtraction (in signed arithmetic), masking, arithmetic averaging, and rounding, for example. In addition, the exemplary triple-ALU-typeconfigurable element 270 G may output a constant, pass one value (copying A or B to its output), perform logical functions (NOT, AND, OR, XOR), and may perform conditional or unconditional data flow. As illustrated inFIG. 10 , depending upon the configuration bits, each of theshifters status multiplexer 396 generates a status word using flag bits from each of theALUs SME 290, in which one flag bit designates a carry or comparison, a second flag bit indicates the result is the most significant bit, a third flag bit indicates the result is a negative one (−1), and a fourth flag bit indicates the result is zero. The condition-swap multiplexers outputs 375, and further providing for swapping of inputs before being copied tooutputs 375. - As mentioned above, in addition to these types of
configurable elements 270, other anticipatedconfigurable elements 270 include bit re-ordering elements (“BREOs”), single ALU elements, “super” ALU elements (32-bit ALU), barrel shifter elements, look-up table elements, memory elements, programmable controller elements, communication elements, etc. - B. Program Compilation for the Apparatus
-
FIG. 11 is a flow diagram illustrating at an exemplary compilation process in accordance with the teachings of the present invention. It should be understood that the following discussion is very high level for purposes of explaining the present invention. The compilation process may be performed using any computer system or network, workstation, processing device, one or more microprocessors, electronic design automation (“EDA”) tools, electronic system-level (“ESL”) tools, etc. - Referring to
FIG. 11 , the method begins, startstep 400, with selection of an algorithm for compiling,step 405. Such an algorithm may be expressed in a wide variety of ways, from a mathematical description to a source code or object code listing for a microprocessor, for example. The algorithm is converted or decomposed into a plurality of “tasks”,step 410, which are high level descriptions of a function or process, such as performing an inverse Fast Fourier Transformation (IFFT). A task is then selected from the plurality of tasks and is assigned a task identifier (“task ID”),step 415, which is typically a sufficiently unique identifier to differentiate the task from the other instances of tasks of the same algorithm or from tasks of other algorithms which will also be running concurrently on theapparatus 100. - The selected task is then converted or decomposed into one or more actions to be performed by a composite circuit element 260 (including computational, state machine, and/or communication
composite elements step 420. As mentioned above, an “action” is the type of function or activity to be performed by acomposite circuit element 260, such as multiplication, bit manipulation, and instruction processing, for example, and may be considered equivalent to an instruction which would be executed by a processor or a function performed by an ASIC or FPGA to achieve the same result. For example, an IFFT task may be decomposed into a plurality of “butterfly” steps such as multiplication, addition and accumulation steps, each or all of which would constitute an action (or instruction), such as “multiply ‘a’ times ‘b’ (a×b)”, and which would correspond to one of the operational configurations of one of thecomposite circuit elements 260. Accordingly, as used herein, the terms “action”, “function” or “activity” are used equivalently and interchangeably to mean any such circuit processes. (As a result, such actions (or instructions), once assigned and bound, will be on the IC in the form of a configuration of one or more of the elements 270). Of the one or more actions (or instructions), an actions (or instructions) is selected and assigned an action identifier (“action ID”),step 425, which is a sufficiently unique identifier to differentiate the action (or instruction) from other actions (or instructions) for the selected task. The task ID and action ID are utilized in the run-time binding process, discussed below with reference toFIG. 14 . - Each action (or instruction) is then mapped or assigned as one or more contexts of one or more
composite circuit elements 260 by type of composite circuit element(s) to be utilized,step 430, and not to any specificcomposite circuit elements 260 or specific addresses within the architecture, to create a “symbolic”, generic or non-specific compilation which is not tied to particular hardware components. For example, a multiplication and addition action (or instruction) may be mapped as a single context to an ALU-type composite element 260 (acomposite element 260 having an ALU-type circuit element 270), and not to a specific ALU-typecomposite element 260 within aspecific cluster 200. More complicated actions (or instructions) may be mapped to multiple contexts of multiple types ofcomposite circuit elements 260. Later, as part of the binding process, one or more specificcomposite circuit elements 260 of the selected type will be assigned to perform the action (or, equivalently, execute the instruction), as one or more of its (or their) available contexts. This distinction is important, as it allows the action (or instruction) to be assigned initially to one or morecomposite circuit elements 260 and then potentially reassigned to othercomposite circuit elements 260, as may be needed, during operation of theapparatus 100. In addition, as indicated, in exemplary embodiments, this separate binding process may assign the action (or instruction) as one or more contexts which are available for the selected types ofcomposite circuit elements 260, with other contexts potentially remaining available for assignment of other actions (or instructions). - As part of this process, corresponding “linkage” for each action (or instruction) is also determined, also at this generic, symbolic or non-specific level,
step 435, namely, as generic or symbolic “pointers”: for each action, information is generated and retained concerning either sources for input data or destinations for data output, or both. For example, action number “512” of task “418” will, in addition to being mapped to an ALU-typecomposite element 260, have associated information that it will receive its input from action number “414” of task “229”, or that it will provide its output to action number “811” of task “319” (or both). Only one such set of either input linkage or output linkage is required, provided the set of information is generated consistently for all actions (or instructions), as linking an input to its data source automatically is linking the output of the data source to this input (destination) which will utilize the data, and vice-versa. In selected embodiments, it may be useful to have both sets of I/O linkage information. This relationship or “linkage” between input and output, through generic or symbolic pointers, is also useful as part of the task and action (or instruction) binding process discussed below. This input or output linkage determination ofstep 435 may be performed in the compilation process in a wide variety of orders and following any of various steps. For example, this determination may be performed following either step 440 or 445, such as when all actions (or instructions) for a task have been determined and mapped to the types ofcomposite circuit elements 260, or when all actions (or instructions) and tasks have been determined and mapped to the types ofcomposite circuit elements 260. - The compilation process also determines any timing constraints in the program or algorithm which would correspondingly require a degree of proximity or locality of execution by the various
composite circuit elements 260, and provides corresponding regional constraints for the affected tasks and/or actions (or instructions),step 440. For example, for various timing requirements, some processes may need to be executed within asingle cluster 200 or within a group ofclusters 200 within thesame supercluster 185, to avoid any delays which may be incurred from routing data packets on theinterconnect 155 to and fromother clusters 200 orother superclusters 185. In these circumstances, a regional requirement is provided in the compiled output (the “symbolic netlist” discussed below), such as by a “region” command or instruction designation, for example, to provide that the actions (or instructions) which follow must be performed within asingle cluster 200 or within asingle supercluster 185, followed by an “end region” indication for the actions (or instructions) confined to thesingle cluster 200 orsingle supercluster 185. Depending upon the selected embodiment, such regional constraints may also be extended to zones 201 within acircuit cluster 200, such as acircuit cluster 200C. - Following
step 440, the method determines whether there are additional actions (or instructions) to be assigned an identifier and mapped to types ofcomposite circuit elements 260,step 445, and if so, the method returns to step 425 and iterates, to select the next action (or instruction) and proceed throughsteps 425, 430 (potentially 435) and 440. When all actions (or instructions) for the task have been assigned an identifier and mapped to types of composite circuit elements 260 (and possibly input or output linked) instep 440, the method proceeds to step 450, and determines whether additional tasks are to be compiled. When additional tasks are to be compiled instep 450, the method returns to step 415 and iterates, selecting the next task, assigning a task ID, and so on. - When all tasks have been processed in
step 450, such that the selected algorithm has been converted into a plurality of tasks and actions (or instructions), which have then been symbolically (generically or non-specifically) mapped to types ofcomposite circuit elements 260 and symbolically linked by either data input sources or data output destinations (or both) (e.g., using symbolic pointers), the method generates a composite circuit element and routing “symbolic netlist” or symbolic compilation,step 455. This symbolic netlist, listing or compilation comprises a plurality of symbolic netlist elements, with each such symbolic netlist element corresponding to and containing information for execution of each action of each task of the algorithm or program. More particularly, each symbolic netlist element contains information concerning: (1) the task ID; (2) the action ID; (3) one or more types ofcomposite circuit elements 260 and the number of contexts needed for each type ofcomposite circuit element 260 for execution of the action (or instruction) of the corresponding task ID and action ID; (4) input or output (or both) linkage information; and (5) any regional (i.e., proximity) constraints for the corresponding tasks or actions (or instructions). In addition, the compilation method is applicable to any of the various circuit and interconnect topologies described herein, including to thesupercluster 185C andcircuit cluster 200C topologies. - As an alternative to mapping to one or more types of
composite circuit elements 260 instep 430 and linking instructions instep 435, actions (or instructions) may also be mapped to “macro-definitions” or “libraries”. Such “macro-definitions” or “libraries” are essentially pre-compiled tasks or actions, which have already been mapped to types ofcomposite circuit elements 260 and which have been correspondingly linked (with regional constraints, if any), with a corresponding symbolic netlist. For example, an IFFT may be mapped to an IFFT library, which contains all of the composite element-type and composite element-linkage information to carry out an IFFT using theapparatus 100. Such library creation may occur at any of various levels, such as mapping various algorithms of H.264 for streaming media, for example. - Moreover, there may be multiple sets of such mappings and linkages for any selected action or task, which may be optimized for different goals, each of which may result in a different symbolic netlist. For example, as mentioned above, a task to be performed by a triple-ALU-type
composite element 260 may instead be mapped to three single ALU-typecomposite elements 260. While this could potentially decrease bandwidth or speed of performance, it may allow performance by theapparatus 100 when other, higher priority algorithms are utilizing all available contexts of all available triple-ALU-typecomposite elements 260. Similarly, a task to be performed by an ALU-typecomposite element 260 may instead be mapped to a plurality of addition- and multiplication-typecomposite elements 260, creating yet another mapping and linking variation. - As a result of these mapping and linking variations which are available, any selected algorithm may have multiple symbolic netlists generated, each optimized or selected for a different goal, such as speed of performance, power minimization, ability to run with diminished resources, safety, redundancy, conflict resolution, and so on. For example, referring to
FIG. 1 , in the event a significant portion of the IC is damaged, such that the optimal algorithm for ABS no longer has sufficient IC resources to run, another (sub-optimal) version of the ABS functionality may be loaded and bound in the IC, enabling an important function to continue to operate and avoid potentially harmful consequences under circumstances in which another IC, such as a standard microprocessor, would fail completely. - Following symbolic netlist generation in
step 450, the compilation method determines whether additional algorithms are to be compiled or, as discussed above, additional versions or alternatives for a selected algorithm are to be compiled,step 455, and if so, the method returns to step 405 and iterates. When no further algorithms or versions of algorithms are to be compiled instep 455, the method may end, returnstep 460. -
FIG. 20 is a block diagram illustrating an exemplary compiler system embodiment in accordance with the teachings of the present invention. As illustrated inFIG. 20 , thecompiler 1200 may be implemented or embodied as any form of computer system (e.g., a mainframe computer, a personal computer, a computer workstation, server, or any other computer or device having processing power sufficient to execute the exemplary methods of the invention), comprising an input and output (I/O)interface 1205, one ormore processors 1215, and amemory 1220 storing any type of data (such as one or more databases or file systems (individually and collectively referred to as data repositories) 1225). Thedatabase 1225 may be integrated, namely, that the information resides within a singular, co-located or otherwise centralized database structure or schema, or may be a distributed database, with information distributed between and among a plurality of databases, some of which may be remotely located from the other databases. (A “data repository”, “database”, and “data warehouse”, as used herein, are considered interchangeable, and may be relational, object-oriented, object-relational, or use files or flat files, or any combinations of the above. - A “processor” 1215 may be any type of controller or processor, and may be embodied as one or
more processors 1215, adapted to perform the functionality discussed herein. The processor may be in aseparate system 1200, or may be integrated as part of the die of thesystems more SMEs 290. As the term processor is used herein, aprocessor 1215 may include use of a single integrated circuit (“IC”), or may include use of a plurality of integrated circuits or other components connected, arranged or grouped together, such as controllers, microprocessors, digital signal processors (“DSPs”), parallel processors, multiple core processors, custom ICs, application specific integrated circuits (“ASICs”), field programmable gate arrays (“FPGAs”), adaptive computing ICs, associated memory (such as RAM, DRAM and ROM), and other ICs and components. As a consequence, as used herein, the term processor should be understood to equivalently mean and include a single IC, or arrangement of custom ICs, ASICs, processors, microprocessors, controllers, FPGAs, adaptive computing ICs, or some other grouping of integrated circuits which perform the functions discussed below, with associated memory, such as microprocessor memory or additional RAM, DRAM, SDRAM, SRAM, MRAM, ROM, FLASH, EPROM or EPROM. A processor (such as processor 1215), with its associated memory, may be adapted or configured (via programming, FPGA interconnection, or hard-wiring) to perform the methodologies of the invention. For example, the methodology may be programmed and stored, in aprocessor 1215 with its associated memory (and/or memory 1220) and other equivalent components, as a set of program instructions or other code (or equivalent configuration or other program) for subsequent execution when the processor is operative (i.e., powered on and functioning). Equivalently, when theprocessor 1215 may implemented in whole or part as FPGAs, custom ICs and/or ASICs, the FPGAs, custom ICs or ASICs also may be designed, configured and/or hard-wired to implement the methodology of the invention. For example, theprocessor 1215 may be implemented as an arrangement of processors, controllers, microprocessors, DSPs and/or ASICs, collectively referred to as a “controller” or “processor”, which are respectively programmed, designed, adapted or configured to implement the methodology of the invention, in conjunction with amemory 1220. - The
memory 1220, which may include a data repository (or database) 1225, may be embodied in any number of forms, including within any computer or other machine-readable data storage medium, memory device or other storage or communication device for storage or communication of information, currently known or which becomes available in the future, including, but not limited to, a memory integrated circuit (“IC”), or memory portion of an integrated circuit (such as the resident memory within a processor 1215), whether volatile or non-volatile, whether removable or non-removable, including without limitation RAM, FLASH, DRAM, SDRAM, SRAM, MRAM, FeRAM, ROM, EPROM or EPROM, or any other form of memory device, such as a magnetic hard drive, an optical drive, a magnetic disk or tape drive, a hard disk drive, other machine-readable storage or memory media such as a floppy disk, a CDROM, a CD-RW, digital versatile disk (DVD) or other optical memory, or any other type of memory, storage medium, or data storage apparatus or circuit, which is known or which becomes known, depending upon the selected embodiment. Thememory 1220 may be adapted to store various look up tables, parameters, coefficients, other information and data, programs or instructions (of the software of the present invention), and other types of tables such as database tables. - As indicated above, the
processor 1215 is programmed, using software and data structures of the invention, for example, to perform the compilation methodology of the present invention. As a consequence, the system and method of the present invention may be embodied as software which provides such programming or other instructions, such as a set of instructions and/or metadata embodied within a computer readable medium. In addition, metadata may also be utilized to define the various data structures of a look up table or a database. Such software may be in the form of source or object code, by way of example and without limitation. Source code further may be compiled into some form of instructions or object code (including assembly language instructions or configuration information). The software, source code or metadata of the present invention may be embodied as any type of code, such as C, C++, SystemC, LISA, XML, Java, Brew, SQL and its variations (e.g., SQL 99 or proprietary versions of SQL), DB2, Oracle, or any other type of programming language which performs the functionality discussed herein, including various hardware definition or hardware modeling languages (e.g., Verilog, VHDL, RTL) and resulting database files (e.g., GDSII). As a consequence, a “construct”, “program construct”, “software construct” or “software”, as used equivalently herein, means and refers to any programming language, of any kind, with any syntax or signatures, which provides or can be interpreted to provide the associated functionality or methodology specified (when instantiated or loaded into a processor or computer and executed, including theprocessor 1215, for example). - The software, metadata, or other source code of the present invention and any resulting bit file (object code, database, or look up table) may be embodied within any tangible storage medium, such as any of the computer or other machine-readable data storage media, as computer-readable instructions, data structures, program modules or other data, such as discussed above with respect to the
memory 1220, e.g., a floppy disk, a CDROM, a CD-RW, a DVD, a magnetic hard drive, an optical drive, or any other type of data storage apparatus or medium, as mentioned above. - The I/
O interface 1205 may be implemented as known or may become known in the art, and may include impedance matching capability, voltage translation for a low voltage processor to interface with a higher voltage control bus, and various switching mechanisms (e.g., transistors) to turn various lines or connectors on or off in response to signaling from theprocessor 1215. In addition, the I/O interface 1205 may also be adapted to receive and/or transmit signals externally to thesystem 200, such as through hard-wiring, IR or RF signaling, for example, to receive information such as algorithms for compiling, for example. The I/O interface 1205 may provide connection to any type of bus or network structure or medium, using any selected architecture. By way of example and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Enhanced ISA (EISA) bus, Micro Channel Architecture (MCA) bus, Peripheral Component Interconnect (PCI) bus, SAN bus, or any other communication or signaling medium, such as Ethernet, ISDN, T1, satellite, wireless, and so on. The I/O interface 1205 may be implemented as known or may become known in the art, to provide data communication between theprocessor 1215 and thenetwork 180, using any applicable standard (e.g., one of the various PCI, USB or Ethernet standards, for example and without limitation). - In addition to the configuration illustrated in
FIG. 20 , those of skill in the art will recognize that there are innumerable equivalent configurations, layouts, kinds and types of control circuitry known in the art, which are within the scope of the present invention, suitable for implementing the inventive compiler. - C. Operating System
-
FIG. 12 is a flow diagram illustrating at a high level an exemplary operating system or process in accordance with the teachings of the present invention. It should be understood that the following discussion is very high level for purposes of explaining the present invention. In addition to being performed by thevarious SMEs 290, alternatively, this operating system functionality could be performed by one or moreadditional controllers 175. - The process begins, starting with
step 500, with theapparatus 100 being powered on, such as part of an SOC or within another system, such as a vehicle, a computer, a complex system, a mobile telephone, a personal digital assistant, an MP3 player, and so on. A self-test is performed,step 505, typically by each of thestate machine elements 290, which may test themselves and, in exemplary embodiments, the variouscomposite circuit elements 260,first communication elements 250, full interconnect element(s) 275 or distributedfull interconnect elements 295, otherstate machine elements 290, and other logic, communication or memory elements within their correspondingclusters 200 or other clusters 200 (e.g., for thoseclusters 200 implemented without corresponding SMEs 290). There are a wide variety of methods to determine whether these various components are operating properly. In an exemplary embodiment, the operational determination is performed by a composite circuit element (with composite circuit element utilized in its inclusive sense, including of all of the variouscomposite circuit elements 260,first communication elements 250, full interconnect element(s) 275 or distributedfull interconnect elements 295, otherstate machine elements 290, and other logic, communication or memory elements within their correspondingclusters 200 or other clusters 200), and is at least one of the following types of determinations: a periodic diagnostic performed by at least one composite circuit element of the plurality of composite circuit elements; a background diagnostic performed as a selected context of at least one composite circuit element of the plurality of composite circuit elements; or a comparison test performed by a plurality of composite circuit elements of the same circuit element type. For example, each of the various types of composite circuit elements, including the types ofelements 270, may each perform a diagnostic self-test, followed by comparing their corresponding results. If the results of a first composite circuit elements does not match the expected result, such as by comparison of the results of othercomposite circuit elements 260 of the same type, the first composite circuit element is deemed defective or not properly operational, and is not included within the map or list of available resources (step 515, below). - One or more of the SMEs 290 (or controllers 175) will then obtain and execute a boot program,
step 510, such as a program designed and stored for theapparatus 100 in an associated memory (e.g., flash or other EEPROM memory) or other data storage device, such as a hard disk drive, an optical drive, etc., which may be part of the same IC or associated system. - Two significant functions are performed as part of the boot process of the operating system in
steps SMEs 290 creates a map or list ofavailable apparatus 100 resources, such as a list within acluster 200 orsupercluster 185 of whichcomposite circuit elements 260,first communication elements 250, and other components are functioning properly, step 515 (e.g., similar to creating a bad or good sector map for a memory or disk drive). Step 515 may be performed, for example, by eachSME 290 for itscorresponding cluster 200, or by one or more SMEs 290 (pre-designated or as determined in the boot program) for anentire supercluster 185 ormatrix 150. In an exemplary embodiment,step 515 is performed by combinational logic elements, as illustrated in and as discussed below with reference toFIG. 13 , which may be located or distributed within acomposite circuit element 260, acluster 200, and throughout the matrix hierarchy. In addition, instep 520, a master controller is determined, which may be one selectedSME 290 or a plurality ofSMEs 290 operating as a master controller, or may be one or moreadditional controllers 175 or other, off-chip controllers, processors, or state machines. In an exemplary embodiment, a master controller is determined as aSME 290 having the lowest address (at the time). - The operating system, through one or more state machine elements 290 (or controllers 175), potentially with user input, then determines or selects which programs, algorithms or functions are to be performed,
step 525, such as selecting the ABS, traction control, video and navigational programs previously discussed. Next, instep 530, the operating system binds the symbolic netlist(s) of the selected programs to the available resources (determined in step 515), by assigning a task and action(s) (or instruction(s)) to a selected composite circuit element 260 (as one or more contexts), by linking the inputs of the selectedcomposite circuit element 260 to the other correspondingcomposite circuit elements 260 which are its data sources, to provide its input data (which also correspondingly links these data source outputs to the inputs of the selectedcomposite circuit element 260 as data destinations), and/or by linking the outputs of the selected composite circuit element 260 (as data sources) to the other correspondingcomposite circuit elements 260 which are its data destinations, to utilize the data produced by the selected composite circuit elements 260 (which also correspondingly links the inputs of these data destinations to the outputs of the selected composite circuit element 260 (as a data source)). - Once all tasks and actions (or instructions) are bound (assigned and linked), the
apparatus 100 commences execution or running of the corresponding programs or operations, step 535, such as operating the ABS and traction control systems, playing a video for passengers, and providing a real-time navigational display for the driver. The binding (assigning and linking) process is discussed in detail below with reference toFIG. 14 . The control of the program (or operational) execution process in eachcomposite circuit element 260 is discussed in greater detail below with reference toFIG. 16 . - The operating system may also determine that new or different functionality is needed,
step 540, such as when a user or operator selects an additional program, or circumstances require a change in functionality, such as through a sensor detecting a particular condition. For example, in a vehicle environment, a sensor may detect a change in driving or road conditions, and adjust various programs accordingly. When new or different functionality is needed instep 540, the method rebinds (re-assigns and re-links) the affected tasks and actions (or instructions),step 545, and theapparatus 100 continues to operate with these various changes. The tasks and actions (or instructions) may be moved to new locations, or existing or new tasks and actions (or instructions) may be loaded, assigned and bound. The operating system may also bind or re-bind an entire program or functionality de novo. Thisre-binding step 545 may also include unbinding, that is, completely removing an assigned functionality, such as by deleting its corresponding contexts from memory. Such unbinding may occur, for example, when theapparatus 100 is already at capacity, and room must be created for the new or different functionality. Such unbinding was illustrated inFIG. 1 , when video functioning was removed as theapparatus 100 increasingly lost capacity through IC damage. - The
apparatus 100, through one or more state machine elements 290 (or controllers 175) performing the operating system (or as part of a built-in self test (“BIST”)), periodically performs a limited or full self-test,step 550, to detect any changes in availability of resources,step 555. For example, the self-test may reveal that a BREO-type circuit element 270 is no longer functioning properly, and therefore should no longer be available for use within theapparatus 100. When such damage or loss of functionality occurs instep 555, the operating system (through theSMEs 290 or controllers 175) correspondingly modifies the map or list of available resources,step 560, rebinds the affected tasks and actions (or instructions) using the modified list or map,step 565, and theapparatus 100 continues to operate with these various changes. - When no such damage or loss of functionality has occurred in
step 555, or followingstep 565, the method proceeds to step 570. Instep 570, theapparatus 100 may continue operating, returning to step 535. In the event that operations are to cease instep 570, such as by the user selecting to turn off the device having theapparatus 100, theapparatus 100 may shut down or power off, returnstep 575. - Not separately illustrated in
FIG. 12 , in another exemplary embodiment, the plurality ofcomposite circuit elements 260 may be implemented or adapted to store periodically a then current state, such as a “snapshot” of its current operations. Subsequently, in response to a detected fault, thecomposite circuit elements 260 are adapted to retrieve the stored state and recommence operation using the stored state. - D. Symbolic Netlist Assignment and Run-Time Binding
- With this background in mind, the run-time binding process may now be explained. As indicated above, the inventive architecture in conjunction with the run-time binding of a symbolic netlist (or other program compilation) enable the self-healing and resiliency of the
apparatus 100. More particularly, when any of thecomposite circuit elements 260,SMEs 290,first communication elements 250, full interconnect element(s) 275 or distributed full interconnect element(s) 295,other cluster 200 components, or routing or other communications elements (190, 210), either do not perform properly initially (as determined instep 515 during testing portions of the boot process) or during later operation (as determined during self-test or as determined by other components, steps 550, 555), they are not placed on or are removed from the map or list of available resources, respectively. If not performing properly initially, the affected component is never assigned any functionality instep 530. If the affected component was originally functioning and is no longer (step 555), it is removed from the list or map of available resources, and its assigned functionality is moved or loaded to another available component and re-routed, separately or as part of the rebinding of the corresponding tasks or instructions ofstep 565. If it has been determined that the data has been corrupted, the controlling task is notified so that the appropriate action can be taken. This binding process is explained in detail below. - 1. Resource Availability
-
FIG. 13 is a block diagram illustrating exemplarycombinational logic circuitry 600 for context availability determination within anexemplary apparatus 100 in accordance with the teachings of the present invention.Such circuitry 600 may be included within eachcomposite circuit element 260, such as within acircuit element 270, anelement controller 325, within aSME 290, or as separate combinational logic (not separately illustrated inFIG. 8 ). As mentioned above, the number of available contexts for each type ofcomposite circuit element 260 is determined for use in binding (or re-binding) a program or algorithm for performance within theapparatus 100. Such determination may be made by one ormore SMEs 290, controllers (or other processors) 175, or as illustrated inFIG. 13 , dedicatedcombinational logic circuitry 600. - Referring to
FIG. 13 , as part of the information stored in thememory 330 within eachcomposite circuit element 260 is a state bit and a first condition bit, for each context. The state bit indicates whether the context has been assigned or allocated to an action (or instruction) or not, and is therefore free or available to be assigned (logic high or one), or is not free and available to be assigned (logic low or zero). Alternatively, the state may be determined by examining thememory 330 to determine whether the action ID and task ID fields are zero or non-zero for the selected context, indicating available (no assigned or allocated action ID and task ID) or unavailable (already assigned or allocated action ID and task ID), and then inverted to be utilized as the state bit inFIG. 13 . The first condition bit indicates whether thecomposite circuit element 260 is operational (logic high or one) or non-operational (logic low or zero), as determined from the various exemplary self-test processes discussed above. For each context (of “m” contexts), a first AND operation is performed on the corresponding state bit and first condition bit, via AND gates 605 (illustrated as the plurality of ANDgates composite circuit element 260 is working properly (logic high or one), or that either the context is not available or that thecomposite circuit element 260 is not working properly (logic low or zero). - A second, controller (SME 290) condition bit is utilized to indicate whether the SME 290 (within the cluster 200) is operational (logic high or one) or non-operational (logic low or zero), also as determined from the various exemplary self-test processes discussed above, and may be stored in any of the various memories within the
composite circuit element 260 orcluster 200. A second AND operation is performed using this first AND result (state and first condition bit) and the second, controller condition bit (via the plurality of ANDgates composite circuit element 260 andSME 290 are working properly (logic high or one), or that the context is not available, that thecomposite circuit element 260 is not working properly, or that theSME 290 is not working properly (logic low or zero). The first and second AND operations also may be performed as a single, combined AND operation having at least three inputs (state bit, first condition bit, and second condition bit). The results of the second AND operation for each context may be added, such as by using a “one-hot” adder 615 (or aSME 290 or other controller), providing the number of free contexts per composite circuit element 260 (with a working SME 290). - As illustrated, this process may continue up the matrix hierarchy, with the number of free contexts per
composite circuit element 260 added together for each type ofcomposite circuit element 260 within acluster 200, then added together for each type ofcomposite circuit element 260 within asupercluster 185, then added together for each type ofcomposite circuit element 260 within amatrix 150, and then added together for each type ofcomposite circuit element 260 within theapparatus 100. These additional ADD operations may be performed using dedicated ADDERs (e.g., 620, 625, 630) or by usingcomposite circuit elements 260 configured for ADD operations and under the control of theircorresponding SMEs 290. As a result, availability counts for each type ofcomposite circuit element 260 may be determined and maintained at each level, namely, at acluster 200 level, asupercluster 185 level, amatrix 150 level, and an apparatus level. - Such counts at these various levels are particularly useful for determining whether a
supercluster 185 orcluster 200 has availability to satisfy a regional constraint, such as when a number of operations must be performed with timing constraints using certain types ofcomposite circuit elements 260 within acluster 200 orsupercluster 185. In addition, using such combinational logic circuitry,composite circuit element 260 availability is determined and maintained rapidly, concurrently and in parallel for allclusters 200, with delays only from several AND and ADD operations (e.g., two AND delays and four ADD delays total for an entire matrix 150). - As an alternative for availability determination, the
SME 290 may be utilized to poll or examine the various registers of all of thememories 330 of the correspondingcomposite circuit elements 260 within thecluster 200, and add up the results by type ofcomposite circuit element 260 for each cluster, with one or moreselected SMEs 290 then adding up results for eachsupercluster 185 andmatrix 150. Such availability determination may be top-down in the matrix hierarchy, such as initiated by a master controller (which may be a designatedSME 290 or a controller 175), or bottom-up in the matrix hierarchy, such as illustrated inFIG. 13 or as provided by each of theSMEs 290 within eachcluster 200. It will be apparent to those of skill in the electronic arts that there are innumerable ways of providing this availability determination, using combinational, conditional or control logic, all of which are considered equivalent and within the scope of the present invention. - 2. Symbolic Netlist Assignment
-
FIG. 14 , divided intoFIGS. 14A , 14B, 14C and 14D, is a flow diagram illustrating an exemplary algorithm or symbolic netlist run-time binding process in accordance with the teachings of the present invention, and further illustrates significant functionality associated with thestate machine elements 290 distributed throughout theapparatus 100. Alternatively, this functionality could be performed by one or moreadditional controllers 175, such as acontroller 175 designated as a master controller for theapparatus 100. In addition to the binding process illustrated, those of skill in the art will recognize that numerous variations of the methodology are available, and are considered equivalent and within the scope of the present invention. At least one such variation is also discussed below. - As mentioned above, the
apparatus 100 performs a run-time binding operation of an algorithm provided as a symbolic netlist, which may be considered similar to a place and route operation for programmable resources with programmable routing. In this case, the programmable resources themselves have been placed on the IC, and the binding process then assigns an action (or instruction) (as part of a task) to one or more contexts of one or more available resources, and provides the corresponding routing or linkage of inputs and outputs. In contrast with prior art place and route methodologies, which may take hours or days to run, the methodology of the invention operates quite rapidly, on the scale of microseconds or milliseconds to seconds. - Referring to
FIG. 14A (FIG. 14A ), the method begins, startstep 700, with the determination and/or maintenance of the availability counts for each type ofcomposite circuit element 260, preferably at the cluster, supercluster, and matrix levels, as discussed above. The first (or next) action (i.e., function or instruction), as symbolic netlist elements, are provided to a master controller,step 705, which may be one or more designatedSMEs 290 or one ormore controllers 175, for example. The designatedSME 290 orcontroller 175 then determines whether the action (function or instruction) includes a regional or proximity constraint,step 710, and if so, proceeds to step 715. When the action (or instruction) does not include a regional constraint instep 710, the action (or instruction) is provided to a supercluster and a cluster level having sufficient availability of resources for the instruction,step 750, such as a sufficient number of available contexts for the one or more types ofcomposite circuit elements 260 provided in the symbolic netlist. - The SME(s) 290 of the available cluster(s) 200 assign(s) the action (or instruction) to one or more available
composite circuit elements 260 in the cluster(s) 200,step 755, by storing the corresponding information (configuration, the task ID, the action ID, and the source (or destination) task ID and action ID) in thecorresponding memory 330 of each suchcomposite circuit element 260, or stored in a memorycomposite circuit element 260, thesecond memory element 255, or other memory accessible to theSME 290 and thecomposite circuit element 260. The amount and location of the stored information may vary among selected embodiments. In an exemplary embodiment, the action (or instruction) is stored locally in the memory 330 (or otherwise within the cluster 200) as a configuration, task ID, action ID, with corresponding linkage information (either data source for inputs or data destination for outputs, also by task ID and action ID). Following the assignment, the availability count is modified,step 760, such as automatically modified as described above forFIG. 13 , or by decrementing a count maintained in a register when, for example, the various counts are maintained by a designatedSME 290 orcontroller 175. - The method then determines whether all actions (or instructions) have been assigned,
step 765. When there are actions (or instructions) remaining to be assigned, the method then determines whether there are available resources remaining,step 770. When there are available resources remaining instep 770, the method returns to step 705 and iterates, selecting and assigning the next action (or instruction). When there are no more actions (or instructions) remaining for assignment, the method proceeds to step 800 to commence with routing (i.e., linking) all of the assigned actions (or instructions). - When there are actions (or instructions) remaining to be assigned in
step 765, but there are no more available resources instep 770, indicating that the selected algorithm may not be able to operate on theapparatus 100 as currently configured (or available), an error or exception message is generated,step 775, and the method may end, returnstep 780, as the symbolic netlist of the selected program cannot be currently assigned. In that event, there are many potential courses of action. For example, the designatedSME 290 orcontroller 175 may delete lower priority programs or operations which are consuming or utilizing resources, to make room for the selected program or operations and allow the selected program to execute on theapparatus 100. In other instances, the designatedSME 290 orcontroller 175 may select another version of the program which may be able to be assigned without removing such other programs. In other instances, it may indicate that alarger apparatus 100 with more resources is needed for the selected application. - When the selected action (or instruction) includes a regional constraint in
step 710, the method proceeds to step 715, as illustrated inFIG. 14B . Such a regional constraint may take the form of, for example: -
region 3supercluster region 1 cluster actions I1, I2 I1 I2 end region region 2 cluster actions I3, I4 I3 I4 end region end region
in which a supercluster regional (proximity) constraint incorporates two cluster-level regional constraints, each of which has included actions (or instructions) subject to the constraint (“constrained actions”). As mentioned above, zone 201 constraints may also be utilized. As illustrated in this example, actions (or instructions) I1 and I2 (as symbolic netlist elements) must be assigned within thesame cluster 200, and actions (or instructions) I3 and I4 (as symbolic netlist elements) must be assigned within the same cluster 200 (asRegion 2, which may be the same or a different cluster than theRegion 1 cluster of I1 and I2). Bothclusters 200, however, must be in the same supercluster, as incorporated within the supercluster constraint (region 3). - In
step 715, the designatedSME 290 orcontroller 175 determines whether the constraint is a supercluster constraint, which would require the set of constrained actions to be assigned within thesame supercluster 185. When the regional constraint is for a supercluster instep 715, the designatedSME 290 orcontroller 175 provides the supercluster constraint to allavailable superclusters 185 which meet the availability requirements of the constraint, and temporarily designates or marks those one or more superclusters as candidates,step 720. Followingstep 720, or when the constraint is not a supercluster constraint instep 715, the constrained actions are provided to allavailable clusters 200 which meet the first cluster constraint (within one or more superclusters, if required by the previous constraint), such as the various clusters which meet theRegion 1 constraint of the example, and thoseclusters 200 are temporarily designated as candidates,step 725. The next set of cluster-level constrained actions, if any, are provided to allavailable clusters 200 which meet the next cluster constraint (within one or more superclusters, if required by the previous constraint), such as the various clusters which meet theRegion 2 constraint of the example, and thoseclusters 200 are also temporarily designated as candidates,step 730. In addition, those superclusters or clusters which had previously been candidates, but now do not contain sufficient available clusters to meet these additional constraints, may now be released and no longer designated as candidates for the regional constraints. While not separately illustrated, the same methodology may also be employed for any zone 201 constraints. When there are additional constraints to be processed,step 735, the method returns to step 730, and continues the temporary designation process. - When no further constraints need to be processed in
step 735, the method determines whether one or more matches (supercluster and/or cluster levels) have been found,step 740. When one or more matches have been found instep 740, the designatedSME 290 orcontroller 175 selects at least one such match, assigns the constrained actions (or instructions) to the selected candidate set, releases all the other tentative assignments, and proceeds to step 760, to modify the availability counts and continue the assignment process, as discussed above. When no match has been found instep 740, indicating that the selected algorithm may not be able to operate on theapparatus 100 as currently configured (or available), the method returns to step 775 and generates an error or exception message, and the method may end, returnstep 780, as the symbolic netlist of the selected program with the constraints cannot be currently assigned. As mentioned above, in that event, there are many potential courses of action. For example, the designatedSME 290 orcontroller 175 may delete lower priority programs or operations or may utilize another version of the program which may be assigned more readily. - 3. Run-Time Binding
- When all actions (or instructions) have been assigned in
step 765, the actions (or instructions) may be connected or routed, to establish all of the data communication paths which will be utilized during operation of theapparatus 100 to execute the selected program or algorithm. As indicated above, each action (or instruction) has input or output information stored symbolically with the configuration for the selected context of a selectedcomposite circuit element 260. More specifically, the input or output information is stored effectively as pointers, with one task ID and action ID pointing to another task ID and action ID as either its data source (for input data) or data destination (to provide output data). Such information is stored symbolically or generically, because until the action (or instruction) has been assigned, the actual address for the data source or data destination is unknown. Provided that either data source information is utilized consistently, or data destination information is utilized consistently, only one such set of information is needed, although both can be utilized to potentially increase resiliency. In accordance with the exemplary embodiments, such data source or data destination information is utilized to connect the data inputs (for the input queues 320) of acomposite circuit element 260, for each context, with the data outputs 375 (via output queues 315) of a context of another composite circuit element 260 (or the samecomposite circuit element 260, for a feedback configuration). This creates either direct data connections (circuit-switched within a cluster 200) or packet-routed (hybrid packet-routed and circuit switched between clusters) data connections for data flow and, in either case, data is provided without requiring intermediate or separate steps of data storage in a register and data fetching from a register. Depending on the selected embodiment, such as for asupercluster 185C andcircuit cluster 200C, the data connections may all be circuit-switched, through thecluster queues 245A and corresponding full or distributedinterconnect - Following
step 765, the routing process begins,step 800, as illustrated inFIG. 14C . In the exemplary embodiment illustrated inFIG. 14C , the process is “bottom-up”, beginning at thecluster 200 level (or zone 201 andcluster 200C levels) and proceeding to higher levels (supercluster and matrix levels) as needed. Not separately illustrated, the process may also be initiated from a “top-down” perspective, such as by the designatedSME 290 orcontroller 175 transmitting a request to theSMEs 290 of theclusters 200 to initiate the routing process ofstep 800. - Referring to
FIG. 14C ,step 800, one ormore SMEs 290 of the correspondingclusters 200 begin the routing process by selecting an action (or instruction) of a first context of acomposite circuit element 260, and determining the source (or destination) task and action identifiers stored as part of the selected action (or instruction). In exemplary embodiments, this process may be performed by eachSME 290 of eachcluster 200 as a parallel process, resulting in a very highly efficient binding routing process. In other exemplary embodiments, if not everycluster 200 has aSME 290, then anotherSME 290 within thesupercluster 185 may be utilized. - As indicated above, these source (or destination) task and action IDs, in selected embodiments, are stored in the
memory 330 of the element interface and control 280 of thecomposite circuit element 260. In alternative embodiments, the source (or destination) task and action identifiers may be stored in other memory elements, such as a memory-typecomposite circuit element 260 M,second memory element 255, or other memory elements which may be included within acluster 200. To facilitate routing, the memory 330 (or other memory element) may be implemented as a content addressable memory (“CAM”), as mentioned above, or as any other type of memory. Consequently, instep 805, for routing at a first level of hierarchy, aSME 290 may examine all of the memories (330, 255, 260 M, etc.) within itscluster 200 by these source (or destination) task and action identifiers of the first context (thecomposite circuit element 260 context to be routed) to find the corresponding action (or instruction) of another, second context which matches these source (or destination) task and action identifiers. When other forms of memory are utilized instead of a CAM, e.g., SDRAM, then theSME 290 may perform a search of the memory (330, 255, 260 M, or other memory storing the task ID and action ID), such as a binary search, to find the corresponding action (or instruction) of another, second context which matches these source (or destination) task and action identifiers. - When the matching action (or instruction) (having the corresponding task and action identifiers) of a second context of a
composite circuit element 260 has been found within a memory (330, 255, 260 M, etc.), instep 810, theSME 290 then knows to route the selected, first context to this second context having the matching or corresponding action (or instruction). As a consequence, instep 815, when source task and action identifiers are stored, theSME 290 routes the input(s) of the first context (as a data destination) to the corresponding output of the second context (as a data source), and when destination task and action identifiers are stored, theSME 290 routes the output(s) of the first context (as a data source) to the corresponding input(s) of the second context (as a data destination). Within thecluster 200 or zone 201, theSME 290 establishes these internal cluster connections via thefull interconnect element 275 or distributedfull interconnect element 295. Followingstep 815, when there are additional actions (or instructions) to be routed instep 820, the method continues iteratively, returning to step 800, with aSME 290 or other controller selecting the next action (or instruction) to be routed. - When the matching action (or instruction) (having the corresponding task and action identifiers) of a second context of a
composite circuit element 260 has not been found within a memory (330, 255, 260 M, etc.) of itscluster 200, instep 810, theSME 290 then knows that the corresponding data source or destination is not within its cluster 200 (referred to as a first cluster 200). As a consequence, instep 825, theSME 290 both: (1) routes the selected, first context to the periphery of the first cluster 200 (to one of thefirst communication elements 250 for data transmission viainterconnect 155, through thefull interconnect element 275, distributedfull interconnect element 295, or themessage manager 265, or otherwise directly to the first communication element 250); and (2) generates a routing request (query) to the supercluster-level controller (which may be a designatedSME 290 orcontroller 175 having this assigned duty) to find a second context in anothercluster 200 of itssupercluster 185 which may have the matching or corresponding action (or instruction). From the perspective of theSME 290 of thefirst cluster 200, its routing of the first context is complete, and it may proceed with routing of other contexts (actions (or instructions)), if any, returning to step 820, with the supercluster controller (designatedSME 290 or controller 175) then proceeding to step 830. - Having received a routing request (designating the second context), in
step 830, the supercluster controller transmits a request or query to all (other)clusters 200 within itssupercluster 185, for thoseSMEs 290 to determine whether the corresponding action (or instruction) is located in one of their memories (330, 255, 260 M, etc.), for routing at a second level of hierarchy. When one of theseother clusters 200, as asecond cluster 200, has the matching or corresponding action (or instruction) (i.e., has the source (or destination) task and action identifiers of the first context) as a second context of one of itscomposite circuit elements 260,step 835, thissecond cluster 200 then knows that this second context is the source or destination for data which is to be routed to or from another,first cluster 200. As a consequence, instep 840, thesecond SME 290 of thesecond cluster 200 routes this second context to the periphery of the second cluster 200 (to one of thefirst communication elements 250 for data transmission viainterconnect 155, through thefull interconnect element 275, distributedfull interconnect element 295, themessage manager 265, or otherwise directly to the first communication element 250), and transmits a corresponding message to the supercluster controller (designatedSME 290 or controller 175), indicating or providing information that it has the second context having the matching or corresponding action (or instruction). The supercluster controller, in turn, creates a corresponding linkage between thefirst cluster 200 and thesecond cluster 200, for the corresponding contexts,step 845, such as by storing corresponding routing information in asecond communication element 210, and the cluster-to-cluster routing is complete. From the perspective of theSME 290 of thesecond cluster 200, its routing is also complete, and it may proceed with routing of its other contexts (actions (or instructions)), if any, also returning to step 820. - While not separately illustrated, in another variation, such as for
supercluster 185C, one or more of theSMEs 290 within thesupercluster 185C may perform all such routing within acluster 200C or within theentire supercluster 185C, all through thevarious cluster queues 245A. Referring toFIG. 18 , aSME 290 may provide: (1) corresponding routing within a selected zone 201B, such as directly from CE4 to CE5, for example, via the full or distributedinterconnect circuit cluster 200C, such as directly from CE4 to CE12 via the full or distributedinterconnects cluster queue 245A15; (3) corresponding routing to a selectedadjacent circuit cluster 200C, such as directly from CE4 to anothercomposite circuit element 260 of anothercluster 200C within thesupercluster 185C via the full or distributedinterconnects cluster queues 245A, and then through aperipheral cluster queue 245A, such as 245A10; (4) corresponding routing to a selected,non-adjacent circuit cluster 200C within thesupercluster 185C, such as directly from CE4 to anothercomposite circuit element 260 of anothercluster 200C via the full or distributedinterconnects cluster queues 245A, and typically a plurality ofperipheral cluster queues 245A; and (5) corresponding routing to acircuit cluster 200C which is not within thesupercluster 185C, via amessage manager 265. - For example, when routed through any of the
cluster queues 245A, any selectedcluster queue 245A (with a corresponding selected context) is a data destination for a selected context of data producingcomposite circuit element 260, and is in turn a data source for either a selected context of a data consumingcomposite circuit element 260 or another selected context of acluster queue 245A (such as for data routing through a plurality ofcluster queues 245A, such as for data routing betweenclusters 200C, for example, using either source- or destination-based communication, as described herein). - In
step 835, when none of theseother clusters 200 within the selected,first supercluster 185 has the matching or corresponding action (or instruction) (with the source (or destination) task and action identifiers of the first context) in a second context of one of itscomposite circuit elements 260, the supercluster controller then knows that the corresponding data source or destination is not within its supercluster 185 (referred to as a first supercluster 185). As a consequence, in step 860 (illustrated inFIG. 14D ), the first supercluster controller both: (1) routes the first context to the periphery of the first supercluster 185 (i.e., to one of thesecond communication elements 210 or to one of the message managers 265); and (2) generates a routing request to the matrix-level controller (which also may be a designatedSME 290 orcontroller 175 having this assigned duty) to find a second context in anothersupercluster 185 of itsmatrix 150 which may have the matching or corresponding action (or instruction), for routing at a third level of hierarchy. From the perspective of the designatedSME 290 orcontroller 175 of thefirst supercluster 185, its routing is complete, and the method returns to step 820, to continue the routing process for other actions, as may be needed, and also proceeds to step 865. - Having received a routing request (designating the second context), in
step 865, the matrix controller transmits a request or query to all (other)clusters 200 within itsmatrix 150, for thoseSMEs 290 to determine whether the corresponding action (or instruction) is located in one of their memories (330, 255, 260 M, etc.), for routing at this third level of hierarchy. This routing request may be transmitted directly toSMEs 290 of theclusters 200, or may be transmitted via supercluster controllers. When one of theseother clusters 200, as asecond cluster 200, has the matching or corresponding action (or instruction) (i.e., has the source (or destination) task and action identifiers of the first context) as a second context of one of itscomposite circuit elements 260,step 870, thissecond cluster 200 then knows that this second context is the source or destination for data which is to be routed to or from another,first cluster 200. As a consequence, instep 875, thesecond SME 290 of thesecond cluster 200 routes this second context to the periphery of the second cluster 200 (to one of thefirst communication elements 250 for data transmission viainterconnect 155, through thefull interconnect element 275, distributedfull interconnect element 295, themessage manager 265, or otherwise directly to the first communication element 250), and transmits a corresponding message to the matrix controller (designatedSME 290 or controller 175), indicating or providing information that it has the second context having the matching or corresponding action (or instruction). The matrix controller, in turn, creates a corresponding linkage between thefirst cluster 200 and thesecond cluster 200, for the corresponding contexts,step 880, such as by storing corresponding routing information in athird communication element 190 and asecond communication element 210, and the supercluster-to-supercluster routing is complete. From the perspective of theSME 290 of thesecond cluster 200, its routing is also complete, and it may proceed with routing of its other contexts (actions (or instructions)), if any, also returning to step 820. - In
step 870, when none of theseother clusters 200 within the selected,first matrix 150 has the matching or corresponding action (or instruction) (with the source (or destination) task and action identifiers of the first context) in a second context of one of itscomposite circuit elements 260, the matrix controller then knows that the corresponding data source or destination is not within thefirst matrix 150. As a consequence, instep 885, thefirst matrix 150 both: (1) routes the first context to the periphery of the first matrix 150 (i.e., to one of the third communication elements 190); and (2) generates a routing request to the other matrix-level controllers (which also may be a designatedSME 290 orcontroller 175 having this assigned duty) to find a second context in anothermatrix 150 of thedevice 100 which may have the matching or corresponding action (or instruction), for routing at a fourth level of hierarchy. From the perspective of the designatedSME 290 orcontroller 175 of thefirst matrix 150, its routing is complete, and the method returns both to step 820, to continue the routing process for other actions, as may be needed, and the method iteratively repeats steps 865-880, as needed, at theapparatus 100 level. - As all actions (or instructions) had been assigned previously, the matching or corresponding action (or instruction) is in a second context of a
composite circuit element 260 in acluster 200 of asupercluster 185 of one of thematrices 150, and the method searches up to the matrix or apparatus level, as needed, with those corresponding matrix- or apparatus-level controllers (designatedSME 290 or controller 175) routing to their corresponding peripheries (e.g.,third communication elements 190 and any intervening second communication elements 210) usinginterconnect 155 and transmitting queries to their corresponding lower-level superclusters 185 andclusters 200. - As a result, all actions (or instructions) become routed, connecting all data sources or data destinations with their corresponding data destinations or data sources, respectively, either within the same cluster 200 (step 815), or between clusters 200 (
steps same supercluster 185, or within the same matrix 150 (steps 875 and 880), or just within theapparatus 100. When all actions (or instructions) have been routed instep 820, the designatedSME 290 orcontroller 175 sets or enables the run status for the particular task ID,step 850. When there are additional tasks of a program or algorithm which have actions remaining to be routed,step 855, the method continues, returning to step 800, and when there are no further tasks having actions to be routed, the method may end, returnstep 780. It should also be noted thatstep 850, which sets or enables the run status for the particular task, may also be performed followingstep 855, when all of tasks have been routed. - The run status, as discussed below, is a field utilized in the configuration word for a context (stored in memory 330) and utilized by the
element controller 325 to determine whether thecircuit element 270 should execute a selected context (i.e., perform the corresponding action). In this case, it indicates that the task has been fully configured, with all actions (or instructions) assigned and routed, such that it may be ready to execute, provided that other conditions are also met, as discussed below. The run status may also be utilized to start or stop selected tasks, or to purge a selected task, such as to load a new task in its place. - In addition, it will be apparent to those of skill in the electronic arts that a number of variations of the methodology of
FIG. 14 may be implemented equivalently and are within the scope of the present invention. For example, in the event that the actions (or instructions) are not stored locally in amemory 330, or in a memorycomposite element 260, or insecond memory element 255, but are stored centrally in a separate memory, a top-down approach may be utilized. Continuing with the example, a top-level controller such as a matrix-level controller (designatedSME 290 or controller 175) may initiate the routing process, examining the stored and linked actions (or instructions), determining the routing within and between the various clusters, and passing the various configurations (as contexts) to the affectedcomposite circuit elements 260. As another variation, the top-level controller such as a matrix-level controller (designatedSME 290 or controller 175) may simply transmit the corresponding actions (or instructions) to theclusters 200, which then initiate the routing process as described above with reference toFIGS. 14C and 14D . - Also, while one or
more controllers 175 may be utilized to implement the assignment and routing processes, it is also apparent that the use of a designatedSME 290 is a more robust and resilient solution. In these circumstances, any of the plurality of SMEs 290 (of the corresponding plurality of clusters 200) may perform the various roles ofsupercluster 185 controller,matrix 150 controller, orapparatus 100 controller. In the event of harm or damage to a givenSME 290, innumerableother SMEs 290 are available to assume any of these roles. - Significantly, the time involved for this assignment and routing process is linear with respect to the number of actions (or instructions) “k”, and proceeds quite rapidly, as it is performed concurrently in a massively parallel process within each
cluster 200. For example, depending upon the number of cluster-, supercluster- and matrix-levels “n” involved, the worst case amount of time per context (or instruction) is typically 3n+1 or 4n+1 clock or computation cycles, for messages to be transmitted and routing to be completed to the corresponding peripheries of each level. This is in sharp contrast with prior art routing methodologies in which the routing time, at a minimum, is a function of k2 and, if optimized, is non-deterministic and has an unpredictable routing time. - Another advantage of this assignment and binding process of the present invention is the ability to assign and route tasks and actions (or instructions) to a plurality of
heterogeneous clusters 200. More particularly,clusters 200 are not required to be the same, and may be quite different, with different mixes of types ofcomposite circuit elements 260, without impacting the ability to program the resulting device. For example, anycluster 200 with many multiplier-typecomposite circuit elements 260 will simply have more availability for assignment of multiplication operations, such that those types of actions (or instructions) will automatically gravitate to those types ofclusters 200. In addition, the assignment and binding time would be the same for both homogeneous orheterogeneous clusters 200. - As discussed above with reference to
FIG. 1 , in the event of damage to or failure of one or more components within acluster 200, such as acomposite circuit element 260 orSME 290, thecluster 200 or the individual component may be designated or marked as unavailable. Under these circumstances, any tasks and/or actions (or instructions) assigned to an affectedcomposite circuit element 260 should be placed with one or more othercomposite circuit elements 260, and this may be performed in a wide variety of ways. -
FIG. 15 is a flow diagram illustrating a first exemplary re-assignment and re-binding process in accordance with the teachings of the present invention. In this first approach, starting withstep 900, such as due to a failure indication during self-testing, one or more SMEs 290 (from within thesame cluster 200 if unaffected by the damage or failure, or from another cluster 200) marks or designates the affectedcomposite circuit element 260 as unavailable,step 905, and directs theelement controller 325 of the affectedcomposite circuit element 260 to stop executing all contexts,step 910, typically utilizing the run status bit. TheSME 290 would also transmit a message to the linked data sourcecomposite circuit elements 260, to direct those composite circuit element(s) 260 to stop producing data and transferring it to the affectedcomposite circuit element 260,step 915. TheSME 290 then determines which (if any) othercomposite circuit elements 260 are available to take over the affected functionality (i.e., the functionality which had been performed by the affected and now unavailable composite circuit element 260), and copies the contexts stored in thememory 330 of the affectedcomposite circuit element 260 to one ormore memories 330 of the available composite circuit element(s) 260 of the same type which have available contexts,step 920. In an exemplary embodiment, theSME 290 may store and maintain a transformation table, which indicates whichcomposite circuit elements 260 have availability and have the requisite type ofcircuit element 270 for such a transfer of functionality. TheSME 290 may also copy the contents of the associatedinput queues 320 to theinput queues 320 of the availablecomposite circuit elements 260,step 925; alternatively, for certain types of real-time data, the input data may be discarded or, equivalently, allowed to remain in the associated input queues, with operations resuming at the available composite circuit element(s) 260 using newly produced data. - The
SME 290 then re-routes the connections to and from the availablecomposite circuit elements 260,step 930, such as by doing source (or destination) task and action identifier searches as discussed above and, in addition, if both source and destination task and action identifier information is not stored, performing a search for the affected actions (or instructions) inother memories 330 of othercomposite circuit elements 260, to determine the corresponding data destinations (or sources) to complete the routing. Other routing steps as discussed above also may be utilized as needed (e.g., for routing between clusters 200). Instep 935, theSME 290 then resets the corresponding run status bits of the transferred contexts, to re-enable the execution of the affected actions (or instructions) by the available composite circuit element(s) 260, and the re-assignment and re-binding process may end, returnstep 940. - In a second approach, the task may be re-assigned and re-bound (e.g., as illustrated in
FIGS. 12-14 ) and, given the affected components are no longer available, no actions (or instructions) will be assigned to them. This approach also has the advantage of preserving any locality constraints, as such constraints will be included within the task actions (or instructions). In addition, as the duration of the assignment and binding process is linear with respect to the number of actions (or instructions), this re-assignment and re-binding process proceeds rapidly, with minimal disruption, particularly when the number of affected actions (or instructions) is comparatively small. As part of this process, one of the designatedSMEs 290 may also direct theelement controller 325 of the affectedcomposite circuit element 260 to stop executing all contexts, transmit a message to the linked data source composite circuit element(s) 260 to direct the source composite circuit element(s) 260 to stop producing data and transferring it to the affectedcomposite circuit element 260, copy the contents of the associatedinput queues 320 to the newly assigned, availablecomposite circuit elements 260, and reset the run status bits for the transferred contexts of the availablecomposite circuit elements 260. - As a consequence, a program or algorithm that has been compiled as a symbolic netlist for the
apparatus 100 has been assigned and routed within theapparatus 100, creating all of thecomposite circuit element 260 configurations (stored as contexts) and data path connections (viafull interconnect element 275, distributedfull interconnect element 295, or interconnect 155). While theapparatus 100 has been designed to enable such assignment and routing in real time, it is not required to be performed in real-time and may be performed in advance, with all such assignment and routing within the scope of the present invention. With this background, the operation of and control of execution within theapparatus 100 may now be explained. - E. Apparatus Operation and Control of Execution
-
FIG. 16 is a diagram illustrating an exemplary configuration andcontrol word 1000 in accordance with the teachings of the present invention. As illustrated inFIG. 16 , theexemplary configuration word 1000 is comprised of a plurality of data fields, and comprises at least two or more of the following data fields, in any order: anelement configuration field 1010; atask ID field 1015; anaction ID field 1020; a destination (and/or source) address field 1025 (designating a destination (or source)composite circuit element 260, a port, and context); an optional “fork”field 1030; a significant inputs (“SI”)field 1035; a significant outputs (“SO”)field 1040; an optional cycles (“CY”)field 1045; arun status field 1050; anoptional priority field 1055; an optional stateready field 1060; an optionalnext field 1065; an optionallast context field 1070; an optional interruptsfield 1075; an optional single-step field 1080; and an optionalconstant mode field 1085. A corresponding configuration andcontrol word 1000 it utilized for each context of thecomposite circuit element 260. It will be apparent to those of skill in the electronic arts that additional or fewer fields may be utilized, depending upon the applications and objectives of the selectedapparatus 100 and any incorporated system, and all such variations are within the scope of the present invention. - A plurality of configuration words, one for each context, are utilized by the
element controller 325 to control the configuration and execution of aconfigurable element 270. Each configuration word is indexed by the context number. The one or more configuration bits which control how theconfigurable element 270 is to be configured or how data is to be interpreted is or are stored inelement configuration field 1010. Similarly, the assigned and routed (bound) actions (or instructions) are stored as the corresponding task ID, infield 1015, and the action ID infield 1020. - The data output and/or data input locations, as bound destination (and/or source) addresses, are stored in
field 1025. Alternatively, the data input and/or data output pointers (as source/destination task IDs and action IDs) may be stored, depending upon the methodology implemented for potential re-routing. For example, when an entire task is re-assigned and re-bound de novo, new routing information will be generated, rather than utilizing the previously stored source and destination information. The remaining control fields are utilized to control whether and when a given context is executed (for a corresponding action to be performed by the circuit element 270), how interrupts are serviced by theSME 290, and how output data is provided to one or more destination addresses. - The
element controller 325, in exemplary embodiments, comprises combinational logic gates or elements, such as AND, OR and INVERTER gates, which provide a result (a given context executes or does not execute), based upon the values of the bits stored in the various fields (e.g., 1035, 1040, 1050, 1060) of the exemplary configuration andcontrol word 1000.FIG. 17 is a block diagram illustrating exemplarycombinational logic circuitry 1100 for context readiness determination within an exemplary apparatus in accordance with the teachings of the present invention. - As mentioned above, in a data flow environment, a context (task) may execute when it has sufficient input data and a sufficiently free or available destination for the resulting output data. As there are multiple inputs and corresponding
multiple input queues 320 into theconfigurable element 270, the significant input (SI) bits (1035) designate which of those inputs are to be utilized in the selected context. In addition, theinput queues 320 are adapted to provide a first signal, referred to as “enough input” (“EI”), indicating that there is sufficient data in thecorresponding input queues 320. For example, in theelement controller 325, each of the SI bits are inverted, and each of the inverted SI bits and its corresponding EI signal are ORed (ORgates 1110 0 through 1110 n), with all of their corresponding OR results (four results for four inputs) then ANDed together (AND gate 1115), to provide a “data input ready” signal, such that the AND result (data input ready) indicates that there is sufficient data available at the inputs which will be utilized by the selected context. More specifically, the data input ready signal is provided when (1) there is enough input data at the significant inputs, and (2) any other remaining input is not significant. - Similarly, as there are
multiple output queues 315 andoutputs 375 from theconfigurable element 270, the significant output (SO) bits (1040) designate which of those outputs and corresponding queues are to be utilized in the selected context. In addition, a second signal referred to as a “room for more” (“RFM”) signal is provided to indicate that the corresponding destination(s) have sufficient space available for output data, either from theoutput queues 315 or from theinput queues 320 of the data destination, or potentially from an output register tracking output data consumption. Also for example, in theelement controller 325, the SO bits are inverted, and each of the inverted SO bits and its corresponding RFM signal are ORed (ORgates 1120 0 through 1120 n), with all of their corresponding OR results (two results for two outputs) then ANDed together (AND gate 1125), to provide a “data output ready” signal, such that the AND result (data output ready) indicates that there is sufficient memory space available for data output by the selected context, namely, space available in the corresponding output queues 315 (or destination input queues 320 (or other memory)). More specifically, the data output ready signal is provided when (1) there is room for output data at the significant outputs, and (2) any other remaining output is not significant. - These two results, the data input ready and data output ready then may be ANDed together (AND gate 1130), to provide an overall data “ready” status for a selected context. For example, the ready status is equal to a logic one when both the data input(s) and data output(s) are ready, and is zero otherwise. Alternatively, as illustrated in
FIG. 17 , the data input ready and data output ready results may be ANDed with other fields (state ready and run status, discussed below), to provide an overall indication that the context is ready for execution (a “context ready” signal). - The run status stored in
field 1050 indicates whether the context has been enabled for execution, and may be set following data input-output routing in the binding process, or set (or reset) at other times by theSME 290. For example, the task (of which the selected context is a part) may still be in the process of being configured and routed for otherconfigurable elements 270, and should not be enabled until such routing is complete. In other circumstances, one of theSMEs 290 may have halted a task, for possible resumption at another time, or may be in the process of deleting tasks. As a consequence, theelement controller 325 will execute a context only when enabled, as indicated by the run status infield 1050. - The
SME 290 may also utilize one or more state ready bits (stored in optional field 1060) to control context execution based on various conditions or other events. For example, when a condition has been met, such as an initialization, a selected context may need to be run next, and is designated with the state ready bits. All of these bits (run status, state ready, data output ready signal, data input ready signal) may be ANDed (AND gate 1130), and the result may also be stored within therun status field 1050 or another field accessible by theelement controller 325. As a consequence, the conjunction of the state ready bits, the data input ready, data output ready and run status indicators, provide an indication to cause theelement controller 325 to allow execution of the selected context. Alternatively, operations may be controlled through use of the run status (of field 1050), without the state ready bits, allowing theSME 290 to simply designate whether the context is or is not enabled for execution. - The
optional cycles field 1045 is utilized to designate the number of clock cycles required to execute the corresponding action. This field is utilized to avoid another, second context being executed while computations of a first context are still in progress. - The optional single-
step field 1080 is utilized to provide for a context to execute just once, such as for results to be examined by theSME 290. Various testing contexts are often run in a single-step mode, with theSME 290 setting or clearing a single-step bit (e.g., for a test to be run at selected times, and to not be always available to run). - In a selected embodiment, the
optional context field 1070 may be utilized as part of arbitration among potential execution of a plurality of contexts. When a context has been executed, the last context bit is set (and the last context bits of the other contexts are reset to zero). In the event of competing contexts which are ready for execution, the last context bit is utilized to determine if one of the contexts just executed, and if so, allows the other context to execute, to avoid one context from completely dominating execution in theconfigurable element 270. In addition, in the event of competing contexts which did not just execute, one or more optional priority bits (stored in field 1055) may be utilized to arbitrate and allow the higher priority context to execute first. - In an exemplary embodiment, the optional next indicator (stored in field 1065), also referred to as a “chain” indicator, is utilized to determine the next context to execute, and is particularly useful for controlling the sequence in which contexts are executed, i.e., chaining together a sequence of operations. In this embodiment, the
element controller 325 can commence execution of the “chain lead” context (the first context of the chain, also as designated within field 1065), when the other conditions discussed above have been met. Thereafter, theelement controller 325 will execute the next context in the sequence, as designated in thefield 1065, also when the other conditions (e.g., EI, RFM, etc.) have been met, and otherwise will wait for the next context to become available. If the next context is the same as the current context, then execution of the sequence has been completed. Thisfield 1065 may also include a designation as to whether the data input(s) will be consumed. - In another exemplary embodiment, when destination-based (rather than source-based) data transmission is utilized, the optional “fork”
field 1030 is utilized for output replication, when the same output is to be provided (or replicated) to multiple destinations. Additional contexts are utilized to store these additional destinations. In this embodiment, theelement controller 325 can commence execution of the “fork lead” context (the first context of the fork, also as designated within field 1030), when the other conditions discussed above have been met. Thereafter, when the one or more bits of thefork field 1030 indicate another context, the current output will be provided (copied sequentially) as the output for that context, avoiding a need to re-execute a context based on the same data to provide the same output, just to a different location. Other contexts which are not part of the “fork” sequence are not executed during this sequential output replication. If the next context is the same as the current context, then execution of the forking (output duplication) has been completed. When no fork is indicated infield 1030, theelement controller 325 simply determines what other contexts may be ready for execution, and proceeds accordingly. - In a selected embodiment, an optional “interrupts”
field 1075 may also be provided. This field may designate, as part of theconfiguration word 1000, the setting, masking, and detecting of interrupts, including when a context executes. These interrupts are serviced by theSME 290. - Also in a selected embodiment, an optional
constant mode field 1085 may be utilized, to designate that one or more of the input data words is a constant. For such a constant, it is generally maintained (until changed), so the constant is not consumed during data operations. In this embodiment, selected bits of theconstant mode field 1085 are also utilized to indicate the next data read location (e.g., which data word in a two word input queue 320), such as for toggling or switching between two or more constant values. - As a consequence, as discussed above, the
element controller 325 may be implemented using a plurality of combinational logic gates, which evaluate the various fields of the configuration and control word 1000 (and other control signals) for each context. When the various fields and other signal indicate that a context is both ready and should be run, theelement controller 325 loads the configuration of the context, and the corresponding task or action (or instruction) is executed. - In summary, the present invention provides a compiler for a resilient and adaptive integrated circuitry with self-healing capabilities. Numerous advantages of the exemplary embodiments are readily apparent. The IC architecture of the present invention is resilient, providing adaptation for manufacturing defects, flaws which may arise during usage of the IC, and adaptability for new features, services, algorithms, and other events. This IC architecture is self-healing, because in the event a portion of the IC is damaged or otherwise becomes unusable, another portion of the IC is effectively “recruited” or reassigned to take over and perform the functions of the damaged portion. The present invention allows a single component to be switched out, and does not have the fixed wiring of the prior art. In addition, as the functions are reassigned, new control and data pathways are also created, using the inventive symbolic netlist compilation, so that the transferred operations continue to perform seamlessly with other IC operations. Such resiliency provides for a graceful degradation of performance in the event of damage to the IC, rather than a catastrophic failure, and is especially significant in health and safety applications.
- Although the invention has been described with respect to specific embodiments thereof, these embodiments are merely illustrative and not restrictive of the invention. In the description herein, numerous specific details are provided, such as examples of electronic components, electronic and structural connections, materials, and structural variations, to provide a thorough understanding of embodiments of the present invention. One skilled in the relevant art will recognize, however, that an embodiment of the invention can be practiced without one or more of the specific details, or with other apparatus, systems, assemblies, components, materials, parts, etc. In other instances, well-known structures, materials, or operations are not specifically shown or described in detail to avoid obscuring aspects of embodiments of the present invention. In addition, the various Figures are not drawn to scale and should not be regarded as limiting.
- Reference throughout this specification to “one embodiment”, “an embodiment”, or a specific “embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention and not necessarily in all embodiments, and further, are not necessarily referring to the same embodiment. Furthermore, the particular features, structures, or characteristics of any specific embodiment of the present invention may be combined in any suitable manner and in any suitable combination with one or more other embodiments, including the use of selected features without corresponding use of other features. In addition, many modifications may be made to adapt a particular application, situation or material to the essential scope and spirit of the present invention. It is to be understood that other variations and modifications of the embodiments of the present invention described and illustrated herein are possible in light of the teachings herein and are to be considered part of the spirit and scope of the present invention.
- It will also be appreciated that one or more of the elements depicted in the Figures can also be implemented in a more separate or integrated manner, or even removed or rendered inoperable in certain cases, as may be useful in accordance with a particular application. Integrally formed combinations of components are also within the scope of the invention, particularly for embodiments in which a separation or combination of discrete components is unclear or indiscernible. In addition, use of the term “coupled” herein, including in its various forms such as “coupling” or “couplable”, means and includes any direct or indirect electrical, structural or magnetic coupling, connection or attachment, or adaptation or capability for such a direct or indirect electrical, structural or magnetic coupling, connection or attachment, including integrally formed components and components which are coupled via or through another component.
- Furthermore, any signal arrows in the drawings/Figures should be considered only exemplary, and not limiting, unless otherwise specifically noted. Combinations of components of steps will also be considered within the scope of the present invention, particularly where the ability to separate or combine is unclear or foreseeable. The disjunctive term “or”, as used herein and throughout the claims that follow, is generally intended to mean “and/or”, having both conjunctive and disjunctive meanings (and is not confined to an “exclusive or” meaning), unless otherwise indicated. As used in the description herein and throughout the claims that follow, “a”, “an”, and “the” include plural references unless the context clearly dictates otherwise. Also as used in the description herein and throughout the claims that follow, the meaning of “in” includes “in” and “on” unless the context clearly dictates otherwise.
- The foregoing description of illustrated embodiments of the present invention, including what is described in the summary or in the abstract, is not intended to be exhaustive or to limit the invention to the precise forms disclosed herein. From the foregoing, it will be observed that numerous variations and modifications may be effected without departing from the spirit and scope of the novel concept of the invention. It is to be understood that no limitation with respect to the specific methods and apparatus illustrated herein is intended or should be inferred. It is, of course, intended to cover by the appended claims all such modifications as fall within the scope of the claims.
Claims (20)
1. A computer-implemented compilation method for a reconfigurable integrated circuit, the integrated circuit having a plurality of reconfigurable computational elements each having a plurality of contexts, each reconfigurable computational element having a memory storing at least one configuration and control word for each context, the plurality of reconfigurable computational elements having different types of reconfigurable computational elements, the computer-implemented method performed by a computer system having one or more processors, the method comprising:
generating a plurality of tasks for execution of a program or algorithm by the reconfigurable integrated circuit;
generating a plurality of actions for each task of the plurality of tasks;
assigning a different task identifier of a plurality of task identifiers to each task of the plurality of tasks, wherein the reconfigurable integrated circuit is adapted to selectively enable or disable execution of a specific task assigned a corresponding task identifier by broadcasting a message having the corresponding task identifier to the plurality of reconfigurable computational elements;
mapping the pluralities of tasks or actions to different reconfigurable computational elements of the plurality of types of reconfigurable computational elements;
determining corresponding data input or output linkages among the reconfigurable computational elements for execution of the plurality of tasks; and
without assigning an action to a specific reconfigurable computational element and without assigning an input data source address or an output data destination address, generating a compilation comprising, for each selected action of the plurality of actions, a designation of the type of reconfigurable computational element, the data input linkage or the data output linkage for the selected action, and at least a portion of a configuration and control word for the selected type of reconfigurable computational element comprising the corresponding task identifier and configuration bits for the selected action.
2. The computer-implemented method of claim 1 , wherein the reconfigurable integrated circuit is to independently and substantially concurrently enable and disable execution of the selected task by enabling or disabling a corresponding plurality of contexts of the plurality of different reconfigurable computational elements assigned to perform the selected task through the broadcast message, whereby only those contexts of reconfigurable computational elements having the configuration control word with a matching task identifier for the selected task are enabled or disabled.
3. The computer-implemented method of claim 1 , wherein the stored configuration and control word further comprises a corresponding input data source address from a corresponding data input linkage or a corresponding output data destination address from a corresponding data output linkage.
4. The computer-implemented method of claim 1 , wherein the reconfigurable integrated circuit further is to utilize a run status designation in the broadcast message to enable or disable the corresponding plurality of contexts for execution by the plurality of reconfigurable computational elements, each context of the corresponding plurality of contexts having a corresponding configuration and control word having the corresponding task identifier.
5. The computer-implemented method of claim 1 , wherein the compilation further comprises a pointer which identifies a corresponding data input linkage or the corresponding data output linkage for the selected action.
6. The computer-implemented method of claim 1 , wherein the compilation is a symbolic netlist comprising a corresponding type of reconfigurable computational element, a first task identifier, a first action identifier, a second task identifier, and a second action identifier, wherein the second task identifier and the second action identifier correspond to the data input linkage or to the data output linkage for the selected action.
7. The computer-implemented method of claim 1 , wherein the selected action corresponds to a function of a selected type of reconfigurable computational element.
8. A computing system for compiling an algorithm or a program for performance by a reconfigurable integrated circuit, the integrated circuit having a plurality of reconfigurable computational elements each having a plurality of contexts, each reconfigurable computational element having a memory storing at least one configuration and control word for each context, the plurality of reconfigurable computational elements having different types of reconfigurable computational elements, the system comprising:
a memory to store the algorithm or program; and
one or more processors coupled to the memory, the one or more processors adapted to generate a plurality of tasks for execution of a program or algorithm by the reconfigurable integrated circuit; to generate a plurality of actions for each task of the plurality of tasks; to assign a different task identifier of a plurality of task identifiers to each task of the plurality of tasks, wherein the reconfigurable integrated circuit is adapted to selectively enable or disable execution of a specific task assigned a corresponding task identifier by broadcasting a message having the corresponding task identifier to the plurality of reconfigurable computational elements; to map the pluralities of tasks or actions to different reconfigurable computational elements of the plurality of types of reconfigurable computational elements; to determine corresponding data input or output linkages among the reconfigurable computational elements for execution of the plurality of tasks; and without assigning an action to a specific reconfigurable computational element and without assigning an input data source address or an output data destination address, to generate a compilation comprising, for each selected action of the plurality of actions, a designation of the type of reconfigurable computational element, the data input linkage or the data output linkage for the selected action, and at least a portion of a configuration and control word for the selected type of reconfigurable computational element comprising the corresponding task identifier and configuration bits for the selected action.
9. The computing system of claim 8 , wherein the reconfigurable integrated circuit is to independently and substantially concurrently enable and disable execution of the selected task by enabling or disabling a corresponding plurality of contexts of the plurality of different reconfigurable computational elements assigned to perform the selected task through the broadcast message, whereby only those contexts of reconfigurable computational elements having the configuration control word with a matching task identifier for the selected task are enabled or disabled.
10. The computing system of claim 8 , wherein the stored configuration and control word further comprises a corresponding input data source address from a corresponding data input linkage or a corresponding output data destination address from a corresponding data output linkage.
11. The computing system of claim 8 , wherein the reconfigurable integrated circuit further is to utilize a run status designation in the broadcast message to enable or disable the corresponding plurality of contexts for execution by the plurality of reconfigurable computational elements, each context of the corresponding plurality of contexts having a corresponding configuration and control word having the corresponding task identifier.
12. The computing system of claim 8 , wherein the one or more processors are further adapted to generate the compilation further comprising a pointer which identifies a corresponding data input linkage or the corresponding data output linkage for the selected action.
13. The computing system of claim 8 , wherein the one or more processors are further adapted to generate the compilation as a symbolic netlist comprising a corresponding type of reconfigurable computational element, a first task identifier, a first action identifier, a second task identifier, and a second action identifier, wherein the second task identifier and the second action identifier correspond to the data input linkage or to the data output linkage for the selected action.
14. The computer-implemented method of claim 1 , wherein the selected action corresponds to a function of a selected type of reconfigurable computational element.
15. A non-transitory computer readable medium encoded with a computer program for execution by a computer system having one or more processors, the computer program having instructions for compiling an algorithm or program for a reconfigurable integrated circuit, the integrated circuit having a plurality of reconfigurable computational elements each having a plurality of contexts, each reconfigurable computational element having a memory storing at least one configuration and control word for each context, the plurality of reconfigurable computational elements having different types of reconfigurable computational elements, the computer-implemented method performed by a computer system having one or more processors, the non-transitory computer readable medium comprising:
one or more program constructs to generate a plurality of tasks for execution of a program or algorithm by the reconfigurable integrated circuit; to generate a plurality of actions for each task of the plurality of tasks; to assign a different task identifier of a plurality of task identifiers to each task of the plurality of tasks, wherein the reconfigurable integrated circuit is adapted to selectively enable or disable execution of a specific task assigned a corresponding task identifier by broadcasting a message having the corresponding task identifier to the plurality of reconfigurable computational elements; to map the pluralities of tasks or actions to different reconfigurable computational elements of the plurality of types of reconfigurable computational elements; to determine corresponding data input or output linkages among the reconfigurable computational elements for execution of the plurality of tasks; and without assigning an action to a specific reconfigurable computational element and without assigning an input data source address or an output data destination address, to generate a compilation comprising, for each selected action of the plurality of actions, a designation of the type of reconfigurable computational element, the data input linkage or the data output linkage for the selected action, and at least a portion of a configuration and control word for the selected type of reconfigurable computational element comprising the corresponding task identifier and configuration bits for the selected action.
16. The non-transitory computer readable medium of claim 15 , wherein the reconfigurable integrated circuit is to independently and substantially concurrently enable and disable execution of the selected task by enabling or disabling a corresponding plurality of contexts of the plurality of different reconfigurable computational elements assigned to perform the selected task through the broadcast message, whereby only those contexts of reconfigurable computational elements having the configuration control word with a matching task identifier for the selected task are enabled or disabled.
17. The non-transitory computer readable medium of claim 15 , wherein the stored configuration and control word further comprises a corresponding input data source address from a corresponding data input linkage or a corresponding output data destination address from a corresponding data output linkage.
18. The non-transitory computer readable medium of claim 15 , wherein the reconfigurable integrated circuit further is to utilize a run status designation in the broadcast message to enable or disable the corresponding plurality of contexts for execution by the plurality of reconfigurable computational elements, each context of the corresponding plurality of contexts having a corresponding configuration and control word having the corresponding task identifier.
19. The non-transitory computer readable medium of claim 15 , wherein the one or more program constructs further are to generate the compilation further comprising a pointer which identifies a corresponding data input linkage or the corresponding data output linkage for the selected action.
20. The non-transitory computer readable medium of claim 15 , wherein the one or more program constructs further are to generate the compilation as a symbolic netlist comprising a corresponding type of reconfigurable computational element, a first task identifier, a first action identifier, a second task identifier, and a second action identifier, wherein the second task identifier and the second action identifier correspond to the data input linkage or to the data output linkage for the selected action.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/464,520 US20150135191A1 (en) | 2006-06-21 | 2014-08-20 | Compiler System, Method and Software for a Resilient Integrated Circuit Architecture |
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/471,875 US7429870B2 (en) | 2006-06-21 | 2006-06-21 | Resilient integrated circuit architecture |
US11/471,832 US7427871B2 (en) | 2006-06-21 | 2006-06-21 | Fault tolerant integrated circuit architecture |
US11/766,034 US8850411B2 (en) | 2006-06-21 | 2007-06-20 | Compiler system, method and software for a resilient integrated circuit architecture |
US14/464,520 US20150135191A1 (en) | 2006-06-21 | 2014-08-20 | Compiler System, Method and Software for a Resilient Integrated Circuit Architecture |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/766,034 Continuation US8850411B2 (en) | 2006-06-21 | 2007-06-20 | Compiler system, method and software for a resilient integrated circuit architecture |
Publications (1)
Publication Number | Publication Date |
---|---|
US20150135191A1 true US20150135191A1 (en) | 2015-05-14 |
Family
ID=38834089
Family Applications (17)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/765,986 Expired - Fee Related US7397275B2 (en) | 2006-06-21 | 2007-06-20 | Element controller for a resilient integrated circuit architecture |
US11/766,034 Expired - Fee Related US8850411B2 (en) | 2006-06-21 | 2007-06-20 | Compiler system, method and software for a resilient integrated circuit architecture |
US11/765,906 Expired - Fee Related US8516427B2 (en) | 2006-06-21 | 2007-06-20 | Program binding system, method and software for a resilient integrated circuit architecture |
US11/766,310 Expired - Fee Related US7548084B2 (en) | 2006-06-21 | 2007-06-21 | Fault tolerant integrated circuit architecture |
US11/766,297 Expired - Fee Related US7616024B2 (en) | 2006-06-21 | 2007-06-21 | Resilient integrated circuit architecture |
US12/131,896 Expired - Fee Related US7750672B2 (en) | 2006-06-21 | 2008-06-02 | Element controller for a resilient integrated circuit architecture |
US12/463,040 Expired - Fee Related US7880497B2 (en) | 2006-06-21 | 2009-05-08 | Fault tolerant integrated circuit architecture |
US12/567,785 Expired - Fee Related US7982489B2 (en) | 2006-06-21 | 2009-09-27 | Resilient integrated circuit architecture |
US12/785,433 Expired - Fee Related US8072239B2 (en) | 2006-06-21 | 2010-05-22 | Element controller for a resilient integrated circuit architecture |
US12/977,319 Expired - Fee Related US8384416B2 (en) | 2006-06-21 | 2010-12-23 | Fault tolerant integrated circuit architecture |
US13/160,345 Expired - Fee Related US8446166B2 (en) | 2006-06-21 | 2011-06-14 | Resilient integrated circuit architecture |
US13/280,630 Expired - Fee Related US8618830B2 (en) | 2006-06-21 | 2011-10-25 | Element controller for a resilient integrated circuit architecture |
US13/747,299 Abandoned US20130127491A1 (en) | 2006-06-21 | 2013-01-22 | Fault Tolerant Integrated Circuit Architecture |
US13/865,415 Abandoned US20130229204A1 (en) | 2006-06-21 | 2013-04-18 | Resilient Integrated Circuit Architecture |
US13/942,865 Expired - Fee Related US8776001B2 (en) | 2006-06-21 | 2013-07-16 | Program binding system, method and software for a resilient integrated circuit architecture |
US14/293,355 Abandoned US20140351782A1 (en) | 2006-06-21 | 2014-06-02 | Program Binding System, Method and Software for a Resilient Integrated Circuit Architecture |
US14/464,520 Abandoned US20150135191A1 (en) | 2006-06-21 | 2014-08-20 | Compiler System, Method and Software for a Resilient Integrated Circuit Architecture |
Family Applications Before (16)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/765,986 Expired - Fee Related US7397275B2 (en) | 2006-06-21 | 2007-06-20 | Element controller for a resilient integrated circuit architecture |
US11/766,034 Expired - Fee Related US8850411B2 (en) | 2006-06-21 | 2007-06-20 | Compiler system, method and software for a resilient integrated circuit architecture |
US11/765,906 Expired - Fee Related US8516427B2 (en) | 2006-06-21 | 2007-06-20 | Program binding system, method and software for a resilient integrated circuit architecture |
US11/766,310 Expired - Fee Related US7548084B2 (en) | 2006-06-21 | 2007-06-21 | Fault tolerant integrated circuit architecture |
US11/766,297 Expired - Fee Related US7616024B2 (en) | 2006-06-21 | 2007-06-21 | Resilient integrated circuit architecture |
US12/131,896 Expired - Fee Related US7750672B2 (en) | 2006-06-21 | 2008-06-02 | Element controller for a resilient integrated circuit architecture |
US12/463,040 Expired - Fee Related US7880497B2 (en) | 2006-06-21 | 2009-05-08 | Fault tolerant integrated circuit architecture |
US12/567,785 Expired - Fee Related US7982489B2 (en) | 2006-06-21 | 2009-09-27 | Resilient integrated circuit architecture |
US12/785,433 Expired - Fee Related US8072239B2 (en) | 2006-06-21 | 2010-05-22 | Element controller for a resilient integrated circuit architecture |
US12/977,319 Expired - Fee Related US8384416B2 (en) | 2006-06-21 | 2010-12-23 | Fault tolerant integrated circuit architecture |
US13/160,345 Expired - Fee Related US8446166B2 (en) | 2006-06-21 | 2011-06-14 | Resilient integrated circuit architecture |
US13/280,630 Expired - Fee Related US8618830B2 (en) | 2006-06-21 | 2011-10-25 | Element controller for a resilient integrated circuit architecture |
US13/747,299 Abandoned US20130127491A1 (en) | 2006-06-21 | 2013-01-22 | Fault Tolerant Integrated Circuit Architecture |
US13/865,415 Abandoned US20130229204A1 (en) | 2006-06-21 | 2013-04-18 | Resilient Integrated Circuit Architecture |
US13/942,865 Expired - Fee Related US8776001B2 (en) | 2006-06-21 | 2013-07-16 | Program binding system, method and software for a resilient integrated circuit architecture |
US14/293,355 Abandoned US20140351782A1 (en) | 2006-06-21 | 2014-06-02 | Program Binding System, Method and Software for a Resilient Integrated Circuit Architecture |
Country Status (6)
Country | Link |
---|---|
US (17) | US7397275B2 (en) |
EP (2) | EP2033316A4 (en) |
JP (2) | JP5420401B2 (en) |
KR (1) | KR101444075B1 (en) |
TW (3) | TWI441078B (en) |
WO (5) | WO2007149494A2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11125572B2 (en) * | 2016-11-21 | 2021-09-21 | Hitachi Automotive Systems, Ltd. | Electronic control device for autonomous driving of a vehicle |
Families Citing this family (62)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8407429B2 (en) * | 2006-06-21 | 2013-03-26 | Element Cxi, Llc | Multi-context configurable memory controller |
US7397275B2 (en) * | 2006-06-21 | 2008-07-08 | Element Cxi, Llc | Element controller for a resilient integrated circuit architecture |
US8390325B2 (en) * | 2006-06-21 | 2013-03-05 | Element Cxi, Llc | Reconfigurable integrated circuit architecture with on-chip configuration and reconfiguration |
US8456191B2 (en) * | 2006-06-21 | 2013-06-04 | Element Cxi, Llc | Data-driven integrated circuit architecture |
US8395414B2 (en) * | 2006-06-21 | 2013-03-12 | Element Cxi, Llc | Hierarchically-scalable reconfigurable integrated circuit architecture with unit delay modules |
US8156480B2 (en) | 2006-09-29 | 2012-04-10 | Intel Corporation | Methods and apparatus to form a resilient objective instruction construct |
US8510481B2 (en) * | 2007-01-03 | 2013-08-13 | Apple Inc. | Memory access without internal microprocessor intervention |
US8131975B1 (en) | 2008-07-07 | 2012-03-06 | Ovics | Matrix processor initialization systems and methods |
US8327114B1 (en) | 2008-07-07 | 2012-12-04 | Ovics | Matrix processor proxy systems and methods |
US8145880B1 (en) | 2008-07-07 | 2012-03-27 | Ovics | Matrix processor data switch routing systems and methods |
US7958341B1 (en) | 2008-07-07 | 2011-06-07 | Ovics | Processing stream instruction in IC of mesh connected matrix of processors containing pipeline coupled switch transferring messages over consecutive cycles from one link to another link or memory |
US20100010965A1 (en) * | 2008-07-08 | 2010-01-14 | International Business Machines Corporation | Query Management Systems |
JP2010128572A (en) * | 2008-11-25 | 2010-06-10 | Fuji Xerox Co Ltd | Data control device, storage device, and method of connecting data control device |
US8529346B1 (en) * | 2008-12-30 | 2013-09-10 | Lucasfilm Entertainment Company Ltd. | Allocating and managing software assets |
TWI415000B (en) * | 2009-08-05 | 2013-11-11 | Dfi Inc | Motherboard for selecting one of sub-systems immediately |
US9779057B2 (en) * | 2009-09-11 | 2017-10-03 | Micron Technology, Inc. | Autonomous memory architecture |
US8766666B2 (en) * | 2010-06-10 | 2014-07-01 | Micron Technology, Inc. | Programmable device, hierarchical parallel machines, and methods for providing state information |
TWI437390B (en) | 2011-01-07 | 2014-05-11 | Ind Tech Res Inst | Hybrid simulation system and method |
US8869087B2 (en) * | 2011-05-06 | 2014-10-21 | Xcelemor, Inc. | Computing system with data and control planes and method of operation thereof |
US9543956B2 (en) * | 2011-05-09 | 2017-01-10 | Intel Corporation | Systems and methods for configuring an SOPC without a need to use an external memory |
US9130596B2 (en) * | 2011-06-29 | 2015-09-08 | Seagate Technology Llc | Multiuse data channel |
US9720668B2 (en) | 2012-02-29 | 2017-08-01 | Red Hat, Inc. | Creating and maintaining multi-tenant applications in a platform-as-a-service (PaaS) environment of a cloud computing system |
US9665411B2 (en) * | 2012-05-01 | 2017-05-30 | Red Hat, Inc. | Communication between a server orchestration system and a messaging system |
US8850514B2 (en) | 2012-05-01 | 2014-09-30 | Red Hat, Inc. | Cartridges in a multi-tenant platforms-as-a-service (PaaS) system implemented in a cloud computing environment |
US8935040B2 (en) * | 2012-08-27 | 2015-01-13 | GM Global Technology Operations LLC | Method and system for actively locating bus faults |
CN103092807B (en) * | 2012-12-24 | 2015-09-09 | 杭州华为数字技术有限公司 | Node Controller, parallel computation server system and method for routing |
EP2963824B1 (en) | 2013-03-01 | 2020-08-19 | Axion Research Inc. | Data processing device and control method therefor |
US10454999B2 (en) * | 2013-03-14 | 2019-10-22 | Red Hat, Inc. | Coordination of inter-operable infrastructure as a service (IAAS) and platform as a service (PAAS) |
JP6225444B2 (en) | 2013-03-26 | 2017-11-08 | 船井電機株式会社 | Tuning circuit |
US9098352B2 (en) * | 2013-07-17 | 2015-08-04 | Deja Vu Security, Llc | Metaphor based language fuzzing of computer code |
US9461815B2 (en) * | 2013-10-18 | 2016-10-04 | Advanced Micro Devices, Inc. | Virtualized AES computational engine |
US10003675B2 (en) | 2013-12-02 | 2018-06-19 | Micron Technology, Inc. | Packet processor receiving packets containing instructions, data, and starting location and generating packets containing instructions and data |
US9448872B2 (en) * | 2014-02-12 | 2016-09-20 | Apple Inc. | Hardware state data logger for silicon debug |
US8875073B1 (en) * | 2014-02-20 | 2014-10-28 | Xilinx, Inc. | Generation of internal interfaces for a block-based design |
CN108717400A (en) * | 2014-04-03 | 2018-10-30 | 华为技术有限公司 | A kind of field programmable gate array and communication means |
TWI644253B (en) * | 2014-07-18 | 2018-12-11 | 軸子研究有限公司 | Data processing device and control method thereof |
US10523207B2 (en) * | 2014-08-15 | 2019-12-31 | Altera Corporation | Programmable circuit having multiple sectors |
US9952915B2 (en) * | 2014-11-06 | 2018-04-24 | Microsoft Technology Licensing, Llc | Event processing development environment |
JP6607966B2 (en) * | 2015-06-12 | 2019-11-20 | 華為技術有限公司 | On-chip optical interconnect structure and network |
CN104991507B (en) * | 2015-06-17 | 2017-08-22 | 东莞市诚博自动化设备有限公司 | A kind of automatically upper disk machine |
JP6489954B2 (en) * | 2015-06-19 | 2019-03-27 | ルネサスエレクトロニクス株式会社 | Semiconductor device and control method thereof |
US9356642B1 (en) | 2015-07-27 | 2016-05-31 | Qrc, Inc. Dba Qrc Technologies | Systems and methods for managing reconfigurable integrated circuit applications on a radiofrequency transceiver device |
US9898261B1 (en) * | 2015-09-30 | 2018-02-20 | Open Text Corporation | Method and system for configuring processes of software applications using activity fragments |
US9477451B1 (en) * | 2015-11-06 | 2016-10-25 | International Business Machines Corporation | Generating dynamic measurement metadata for efficient compilation and optimization on a target device |
US9698794B1 (en) * | 2015-12-22 | 2017-07-04 | Altera Corporation | Systems and methods for coalescing regions on a virtualized programmable logic device |
RU168894U1 (en) * | 2016-07-01 | 2017-02-27 | Акционерное общество "Всероссийский научно-исследовательский институт радиотехники" | DIGITAL SIGNAL PROCESSING DEVICE AND INFORMATION |
US10996658B1 (en) * | 2017-01-05 | 2021-05-04 | 6Th Street, Inc. | Dynamically reallocating state machines |
US10963265B2 (en) | 2017-04-21 | 2021-03-30 | Micron Technology, Inc. | Apparatus and method to switch configurable logic units |
KR20200096248A (en) | 2017-12-13 | 2020-08-11 | 엔체인 홀딩스 리미티드 | Systems and methods for securely sharing cryptographic materials |
US10481818B2 (en) * | 2018-02-28 | 2019-11-19 | Micron Technology, Inc. | Meta data processing during startup of storage devices |
CN108259976B (en) * | 2018-03-07 | 2021-02-26 | 海信视像科技股份有限公司 | Television channel sorting method and television |
US20190042329A1 (en) * | 2018-06-29 | 2019-02-07 | Utkarsh Y. Kakaiya | System with programmable multi-context accelerator circuitry |
JP7201381B2 (en) * | 2018-10-05 | 2023-01-10 | 日立Astemo株式会社 | Electronic controller, parallel processing method |
US10853541B1 (en) * | 2019-04-30 | 2020-12-01 | Xilinx, Inc. | Data processing engine (DPE) array global mapping |
US11605166B2 (en) | 2019-10-16 | 2023-03-14 | Parsons Corporation | GPU accelerated image segmentation |
US11303306B2 (en) | 2020-01-20 | 2022-04-12 | Parsons Corporation | Narrowband IQ extraction and storage |
US11619700B2 (en) | 2020-04-07 | 2023-04-04 | Parsons Corporation | Retrospective interferometry direction finding |
US11569848B2 (en) | 2020-04-17 | 2023-01-31 | Parsons Corporation | Software-defined radio linking systems |
US11575407B2 (en) | 2020-04-27 | 2023-02-07 | Parsons Corporation | Narrowband IQ signal obfuscation |
CN112507652B (en) * | 2020-12-11 | 2022-12-23 | 恒为科技(上海)股份有限公司 | Grouping method and device for double-rate synchronous dynamic random access memory |
US11849347B2 (en) | 2021-01-05 | 2023-12-19 | Parsons Corporation | Time axis correlation of pulsed electromagnetic transmissions |
CN117250439B (en) * | 2023-11-08 | 2024-01-30 | 国网四川省电力公司电力科学研究院 | Three-layer type studying and judging analysis system for multi-source ground fault |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021266A (en) * | 1996-09-12 | 2000-02-01 | Sharp Kabushiki Kaisha | Method of designing an integrated circuit using scheduling and allocation with parallelism and handshaking communication, and an integrated circuit designed by such method |
US6650694B1 (en) * | 2000-02-18 | 2003-11-18 | Texas Instruments Incorporated | Correlator co-processor for CDMA RAKE receiver operations |
US20030237027A1 (en) * | 2002-06-24 | 2003-12-25 | International Business Machines Corporation | Method, apparatus, and program for a state machine framework |
US20040044514A1 (en) * | 2002-09-04 | 2004-03-04 | Granny Nicola V. | Polymorphic computational system and method in signals intelligence analysis |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4419701A (en) * | 1981-09-21 | 1983-12-06 | Quantum Corporation | Data transducer position control system for rotating disk data storage equipment |
US6480995B1 (en) * | 1996-04-15 | 2002-11-12 | Altera Corporation | Algorithm and methodology for the polygonalization of sparse circuit schematics |
US6091258A (en) * | 1997-02-05 | 2000-07-18 | Altera Corporation | Redundancy circuitry for logic circuits |
US6611932B2 (en) * | 1997-12-05 | 2003-08-26 | Lightspeed Semiconductor Corporation | Method and apparatus for controlling and observing data in a logic block-based ASIC |
US6175247B1 (en) * | 1998-04-14 | 2001-01-16 | Lockheed Martin Corporation | Context switchable field programmable gate array with public-private addressable sharing of intermediate data |
US6530036B1 (en) * | 1999-08-17 | 2003-03-04 | Tricord Systems, Inc. | Self-healing computer system storage |
US6574763B1 (en) * | 1999-12-28 | 2003-06-03 | International Business Machines Corporation | Method and apparatus for semiconductor integrated circuit testing and burn-in |
US6426650B1 (en) * | 1999-12-28 | 2002-07-30 | Koninklijke Philips Electronics, N.V. | Integrated circuit with metal programmable logic having enhanced reliability |
JP2001202236A (en) * | 2000-01-20 | 2001-07-27 | Fuji Xerox Co Ltd | Data processing method for programmable logic circuit device and the same device and information processing system and circuit reconstituting method for the same device |
US6904475B1 (en) * | 2000-11-06 | 2005-06-07 | Sony Corporation | Programmable first-in first-out (FIFO) memory buffer for concurrent data stream handling |
US7164669B2 (en) * | 2001-01-19 | 2007-01-16 | Adaptix, Inc. | Multi-carrier communication with time division multiplexing and carrier-selective loading |
US6986021B2 (en) * | 2001-11-30 | 2006-01-10 | Quick Silver Technology, Inc. | Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements |
US7415594B2 (en) * | 2002-06-26 | 2008-08-19 | Coherent Logix, Incorporated | Processing system with interspersed stall propagating processors and communication elements |
US20040027155A1 (en) * | 2002-08-08 | 2004-02-12 | Schlansker Michael S. | System and method for self configuration of reconfigurable systems |
JP4023281B2 (en) * | 2002-10-11 | 2007-12-19 | 株式会社日立製作所 | Packet communication apparatus and packet switch |
US7399043B2 (en) * | 2002-12-02 | 2008-07-15 | Silverbrook Research Pty Ltd | Compensation for uneven printhead module lengths in a multi-module printhead |
JP4700611B2 (en) * | 2003-08-28 | 2011-06-15 | ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト | Data processing apparatus and data processing method |
JP4004052B2 (en) | 2003-09-24 | 2007-11-07 | 株式会社東芝 | Logic circuit device and programmable logic circuit operating method |
US20060070067A1 (en) * | 2004-06-03 | 2006-03-30 | Dell Products L.P. | Method of using scavenger grids in a network of virtualized computers |
JP2006011705A (en) * | 2004-06-24 | 2006-01-12 | Fujitsu Ltd | Processor and semiconductor device |
JP4547198B2 (en) | 2004-06-30 | 2010-09-22 | 富士通株式会社 | Arithmetic device, control method of arithmetic device, program, and computer-readable recording medium |
US7429870B2 (en) * | 2006-06-21 | 2008-09-30 | Element Cxi, Llc | Resilient integrated circuit architecture |
US7427871B2 (en) * | 2006-06-21 | 2008-09-23 | Element Cxi, Llc | Fault tolerant integrated circuit architecture |
US7397275B2 (en) * | 2006-06-21 | 2008-07-08 | Element Cxi, Llc | Element controller for a resilient integrated circuit architecture |
-
2007
- 2007-06-20 US US11/765,986 patent/US7397275B2/en not_active Expired - Fee Related
- 2007-06-20 JP JP2009516571A patent/JP5420401B2/en not_active Expired - Fee Related
- 2007-06-20 JP JP2009516554A patent/JP5491176B2/en not_active Expired - Fee Related
- 2007-06-20 KR KR1020097001175A patent/KR101444075B1/en not_active IP Right Cessation
- 2007-06-20 US US11/766,034 patent/US8850411B2/en not_active Expired - Fee Related
- 2007-06-20 WO PCT/US2007/014394 patent/WO2007149494A2/en active Search and Examination
- 2007-06-20 US US11/765,906 patent/US8516427B2/en not_active Expired - Fee Related
- 2007-06-20 WO PCT/US2007/014395 patent/WO2007149495A2/en active Search and Examination
- 2007-06-20 WO PCT/US2007/014353 patent/WO2007149472A2/en active Search and Examination
- 2007-06-20 WO PCT/US2007/014465 patent/WO2007149527A2/en active Search and Examination
- 2007-06-20 EP EP07796326A patent/EP2033316A4/en not_active Withdrawn
- 2007-06-20 WO PCT/US2007/014474 patent/WO2007149532A2/en active Application Filing
- 2007-06-20 EP EP07796285.0A patent/EP2033315B1/en not_active Not-in-force
- 2007-06-21 US US11/766,310 patent/US7548084B2/en not_active Expired - Fee Related
- 2007-06-21 US US11/766,297 patent/US7616024B2/en not_active Expired - Fee Related
- 2007-12-10 TW TW096146977A patent/TWI441078B/en not_active IP Right Cessation
- 2007-12-10 TW TW096146976A patent/TW200900916A/en unknown
- 2007-12-10 TW TW096146978A patent/TWI436590B/en not_active IP Right Cessation
-
2008
- 2008-06-02 US US12/131,896 patent/US7750672B2/en not_active Expired - Fee Related
-
2009
- 2009-05-08 US US12/463,040 patent/US7880497B2/en not_active Expired - Fee Related
- 2009-09-27 US US12/567,785 patent/US7982489B2/en not_active Expired - Fee Related
-
2010
- 2010-05-22 US US12/785,433 patent/US8072239B2/en not_active Expired - Fee Related
- 2010-12-23 US US12/977,319 patent/US8384416B2/en not_active Expired - Fee Related
-
2011
- 2011-06-14 US US13/160,345 patent/US8446166B2/en not_active Expired - Fee Related
- 2011-10-25 US US13/280,630 patent/US8618830B2/en not_active Expired - Fee Related
-
2013
- 2013-01-22 US US13/747,299 patent/US20130127491A1/en not_active Abandoned
- 2013-04-18 US US13/865,415 patent/US20130229204A1/en not_active Abandoned
- 2013-07-16 US US13/942,865 patent/US8776001B2/en not_active Expired - Fee Related
-
2014
- 2014-06-02 US US14/293,355 patent/US20140351782A1/en not_active Abandoned
- 2014-08-20 US US14/464,520 patent/US20150135191A1/en not_active Abandoned
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6021266A (en) * | 1996-09-12 | 2000-02-01 | Sharp Kabushiki Kaisha | Method of designing an integrated circuit using scheduling and allocation with parallelism and handshaking communication, and an integrated circuit designed by such method |
US6650694B1 (en) * | 2000-02-18 | 2003-11-18 | Texas Instruments Incorporated | Correlator co-processor for CDMA RAKE receiver operations |
US20030237027A1 (en) * | 2002-06-24 | 2003-12-25 | International Business Machines Corporation | Method, apparatus, and program for a state machine framework |
US20040044514A1 (en) * | 2002-09-04 | 2004-03-04 | Granny Nicola V. | Polymorphic computational system and method in signals intelligence analysis |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11125572B2 (en) * | 2016-11-21 | 2021-09-21 | Hitachi Automotive Systems, Ltd. | Electronic control device for autonomous driving of a vehicle |
Also Published As
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8776001B2 (en) | Program binding system, method and software for a resilient integrated circuit architecture | |
US8624622B2 (en) | Fault tolerant integrated circuit architecture | |
US7812629B2 (en) | Resilient integrated circuit architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |