The present application claims priority from Japanese patent application No. JP 2005-105812 filed on Apr. 1, 2005, the content of which is hereby incorporated by reference into this application.
The present invention relates to semiconductor integrated circuits and, particularly, to a technology effective when applied to the configuration of a semiconductor integrated circuit in which logical functions are dynamically reconfigurable.
In recent years, in the field of computer architecture, dynamic reconfigurable technologies have attracted attention. The dynamic reconfigurable technologies are those in which internal logical functions are switched during the operation of an LSI, thereby implementing a function required for processing at required timing. A dynamic reconfigurable processor using such technologies can achieve process performance as high as that of a dedicated LSI by incorporating many processing cells in which logical functions can be switched. Also, such a processor has a feature in which these processing cells can be shared among a plurality of processes through division in a time-domain direction, thereby achieving area-saving compared with the case in which a plurality of dedicated LSI are incorporated.
To implement a different logical function for each processing cell, configuration data defining logical functions is required for each processing cell. Also, to execute processing by switching a plurality of logical functions, each processing cell requires a plurality of pieces of configuration data. As such, since the dynamic reconfigurable processor requires a large amount of configuration data for executing processing, degradation in performance due to transfer of configuration data tends to occur.
To get around the problem, a configuration in which configuration data is stored inside the processor (for example, refer to Design Wave Magazine, CQ Publishing Co., Ltd., August, 2004, Vol. 81, pp. 19-79) and a configuration in which configuration data required for subsequent processing is read in advance (for example, refer to Japanese Patent Laid-Open Publication No. 2004-32016) have been known.
Moreover, processing is suspended when the logical functions are dynamically switched. This causes a time required for changing the configuration data to become an overhead for the processing.
To get around the problem, a configuration have been known in which a sequencer is provided inside the processor and the sequencer controls the change of the configuration data, thereby achieving high speed processing (for example, refer to Design Wave Magazine, CQ Publishing Co., Ltd., August, 2004, Vol. 81, pp. 19-79).
Meanwhile, the inventors have studied the above-described dynamic reconfigurable technologies and the following has become evident.
In general, when various applications are executed on a dynamic reconfigurable processor, an enormous amount of configuration data is required. Therefore, all pieces of configuration data cannot be stored inside the processor.
Therefore, the configuration data is required to be retained in memory outside of the processor. This means a degradation in process performance due to memory access outside the processor. To prevent such a degradation in processing performance, a configuration in which a storage area inside the processor can be efficiently utilized.
That is, reasons for degradation in processing performance of the dynamic reconfigurable processor includes a time required for transferring the configuration data and a time required for changing the configuration data.
For the former, the configuration data required for subsequent processing is read in advance during a process, thereby effectively hiding the configuration data transfer time. However, the configuration described in Japanese Patent Laid-Open Publication No. 2004-32016 is such that the processing unit is divided into a plurality of slots, and the configuration data is written in a halted slot while several slots execute a process. This poses a problem that not all processing units can be effectively used at the same time.
On the other hand, for the latter, that is, in order to reduce a time required for changing the configuration data, as described in Design Wave Magazine, CQ Publishing Co., Ltd., August, 2004, Vol. 81, pp. 19-79, it is effective to provide a sequencer inside the processor. Here, the sequencer desirably handles various types of sequences so as to easily and efficiently implement various application programs. However, such a sequencer capable of handling complex sequences has an increased circuitry size and power consumption, thereby making it difficult to improve an operation frequency.
An object and a novel feature of the present invention will be apparent from the description of the present specification and the attached drawings.
Of aspects of the invention disclosed in the present application, those that are typical are briefly described as follows.
That is, a semiconductor integrated circuit according to the present invention includes: a processing unit including a plurality of processing cells for performing a process; a data memory for retaining a process data; a data memory control unit including a plurality of data memory control cells for controlling an access to the data memory; a sequence manager for controlling a state sequence; and a configuration manager for controlling a transfer of configuration data defining logical functions of the processing cells and the data memory control cells, wherein the configuration manager includes a first storage area for storing the configuration data transferred from an external memory via a first bus, each of the plurality of processing cells and the plurality of data memory control cells includes a second storage area for storing the configuration data transferred via a second bus from the configuration manager, and each of the plurality of processing cells and the plurality of data memory control cells can dynamically reconfigure the logic functions by changing the configuration data.
Also, the semiconductor integrated circuit according to the present invention includes: a processing unit including a plurality of processing cells for performing a process; a data memory for retaining a process data; a data memory control unit including a plurality of data memory control cells for controlling an access to the data memory; a sequence manager for controlling a state sequence; and a configuration manager for controlling a transfer of configuration data defining logical functions of the processing cells and the data memory control cells, wherein each of the plurality of processing cells and the plurality of data memory control cells can dynamically reconfigure the logic functions by changing the configuration data. Also, the sequence manager has a first table having stored therein a number provided to a switch destination and a second table having stored therein the number provided to the switch destination, a current number, and a switching condition. Furthermore, the sequence manager has a function of switching between a first mode for use in the first table and a second mode for use in the second table during operation.
Furthermore, the semiconductor integrated circuit according to the present invention includes: a processing unit including a plurality of processing cells for performing a process; a data memory for retaining a process data; a data memory control unit including a plurality of data memory control cells for controlling an access to the data memory; a sequence manager for controlling a state sequence; and a configuration manager for controlling a transfer of configuration data defining logical functions of the processing cells and the data memory control cells, wherein the configuration manager includes a first storage area having stored in the configuration information transferred from an external memory via a first bus, and each of the plurality of processing cells and the plurality of data memory control cells includes a second storage area for storing the configuration data transferred via a second bus from the configuration manager. Also, each of the plurality of processing cells and the plurality of data memory control cells can dynamically reconfigure the logic functions by changing the configuration data. Furthermore, the sequence manager has a first table having stored therein a number provided to a switch destination and a second table having stored therein the number provided to the switch destination, a current number, and a switching condition, and also has a function of switching, during operation, between a first mode of using the first table and a second mode of using the second table.
The effects which are obtained by a typical one among the inventions disclosed in the present application are briefly described below.
A semiconductor integrated circuit with low power consumption or high processing performance can be achieved.
A preferred embodiment of the semiconductor integrated circuit according to the present invention is described below with reference to the attached drawings. Although not particularly restricted, the circuit elements forming each block in the embodiment are formed on one semiconductor board made of, for example, single crystal silicon, through a known semiconductor integration technology for CMOS (complementary metal oxide semiconductor), bipolar transistor, and others. Here, throughout the drawings for describing the embodiments, the same components are denoted with the same reference numeral, and are not repeatedly described.
Although not particularly restricted, a dynamic reconfigurable processor 10 includes a sequence manager 40, a configuration manager 50, a processing unit 60, a data memory control unit 70, a data memory 80, and others, and is formed on one semiconductor board. Inside the dynamic reconfigurable processor 10, the sequence manager 40 is connected to the configuration manager 50, the processing unit 60, and the data memory control unit 70. The configuration manager 50 is connected to the processing unit 60 and the data memory control unit 70 via a second bus. The processing unit 60 is connected to the data memory control unit 70. The data memory control unit 70 is connected to the data memory 80. Also, the dynamic reconfigurable processor 10, a CPU 20, and a memory 30 are connected to a bus (first bus) 90.
The memory 30 includes a configuration storage area that retains, although not shown, a program and data for executing software in the dynamic reconfigurable processor 10 and the CPU 20. Here, the memory 30 is assumed to be a DRAM serving as a main memory and, although not particularly restricted, may be the same chip as that of the dynamic reconfigurable processor 10 and/or the CPU 20 or may be a chip different from that thereof.
The CPU 20 sequentially executes CPU instructions stored in the memory 30, and also controls transfer of control data including configuration data defining logical functions of the dynamic reconfigurable processor 10 and operation data.
The sequence manager 40 performs, based on the control data, management of the internal state of the dynamic reconfigurable processor 10 and control of a state sequence.
The configuration manager 50 includes a configuration buffer (first storage area) 1000 for storing configuration data and controlling transfer of configuration data to the processing unit 60 and the data memory control unit 70.
The processing unit 60 includes, for example, a plurality of processing cells 1600 including a configuration register (second storage area) 1800 for storing input configuration data, decoding, and performing processing (refer to
The data memory control unit 70 includes, for example, a plurality of data memory control cells 2100 including a configuration register (second storage area) 2300 for storing input configuration data, decoding, and performing a memory access to the data memory 80 (refer to
Next, in the dynamic reconfigurable processor 10 according to the present embodiment, the detailed configuration and operation of the processing unit 60, the data memory control unit 70, sequence manager 40, and the configuration manager 50 are described.
Although not particularly restricted, the instruction decoder 1700 in the present embodiment reads configuration data from the relevant bank of the configuration register 1800 based on a bank number and a sequence request input from the sequence manager 40, and outputs a decoded instruction to the programmable logic unit 2000 (this operation is not shown).
Although not particularly restricted, the configuration store control unit 1900 in the present embodiment stores the configuration data in a relevant bank of the configuration register 1800 based on a write request, a cell number of the write destination, a bank number of the write destination, and the configuration data input from a configuration manager 50 (this operation is not shown).
Although not particularly restricted, the programmable logic unit 2000 in the present embodiment determines, based on an instruction input from the instruction decoder 1700, an arithmetic and logic operation to be executed and an input/output connection among other processing cells 1600 and data memory control cells 2100 (this operation is not shown).
Although not particularly restricted, the instruction decoder 2200 in the present embodiment reads configuration data from the relevant bank of the configuration register 2300 based on a bank number and a sequence request input from the sequence manager 40. Also, based on an operation state and an initialization request input from the sequence manager 40, the instruction decoder 2200 performs reading, and outputs a decoded instruction to the programmable logic unit 2500 (this operation is not shown).
Although not particularly restricted, the configuration store control unit 2400 in the present embodiment stores configuration data in a relevant bank of the configuration register 2300 based on a write request, a cell number of the write destination, a bank number of the write destination, and the configuration data input from a configuration manager 50.
Although not particularly restricted, the programmable logic unit 2500 in the present embodiment determines, based on an instruction input from the instruction decoder 2200, a type of memory access to be executed and an input/output connection among other data memory control cells 2100 and processing cells 1600 (this operation is not shown).
Here, the configuration registers 1800 and 2300 may be implemented by, for example, RAM or non-volatile memory, and others.
The limited sequence control table 200 is a table restricted so as to be able to handle only a state sequence in which each state can make a transition only to another single state, and has a feature in which, even if the number of states in the table is increased, a sequence condition determination can be performed at high speed. On the other hand, the sequence control table 300 can handle unrestricted state sequences, but, compared with the limited sequence control table 200, requires time for determining a sequence condition. By using these tables of two types and performing a state sequence, a flexible state sequence required for executing various applications can be supported without degrading process performance.
The fields 201 and 202 are fields for specifying sequence conditions, and indicate an operate state condition (COp) and an event condition (CEv), respectively. Although not particularly restricted, it is assumed that an event means the number of state sequences, the number of elapsed clock cycles, and others. In consideration of the case where condition settings are not particularly required, the operate state condition (COp) and the event condition (CEv) can be set so as to be unconditionally satisfied. Based on these settings, a sequence condition determination is performed at the sequence control unit 400.
The fields 203 to 205 are fields for specifying a sequence mode after transition (TMd), an operate state after transition (TOp), and a state number after transition (TSt), respectively.
The fields 206 to 209 are fields regarding a process for preloading configuration data required for the subsequent processing from the configuration manager 50 to the processing unit 60 and the data memory control unit 70 at the time of a state sequence, and specify a preload request (PrR), a preload mode (PrM), a preload state number (PrSt), and a preload bank (PrBk), respectively. Although their details will be described further below, the preload request (PrR) indicates whether to preload and transfer configuration data regarding a state after state transition from the configuration buffer 1000 inside the configuration manager 50 (refer to
The fields 301 to 304 are fields for specifying sequence conditions, and indicate a state number condition (CSt), a operate state condition (COp), an event condition (CEv), and a trigger input condition (CTrg), respectively. A trigger is input from the processing unit 60, and is used for performing a state sequence depending on the processing result of the processing unit 60. In consideration of the case where condition settings are not particularly required, the state number condition (CSt), the operate state condition (COp), the event condition (CEV), and the trigger input condition (CTrg) can be set so as to be unconditionally satisfied. Based on these settings, a sequence condition determination is performed at the sequence control unit 400.
The fields 305 to 307 are fields for specifying a sequence mode after transition (TMd), an operate state after transition (TOp), and a state number after transition (TSt), respectively.
The fields 308 to 311 are fields for specifying, for the configuration data, a preload request (PrR), a preload mode (PrM), a preload state number (PrSt), and a preload bank (PrBk), respectively.
The sequence control register 100, the limited sequence control table 200, and the sequence control table 300 may be implemented by, for example, RAM, non-volatile memory, or others. Also, in order to provide hardware with fixed control data optimized particularly for a specific application, the limited sequence control table 200 and the sequence control table 300 may be implemented by ROM or a wired logic.
The sequence control unit 400 performs a sequence control shown in the following (1) to (6) based on the settings on the sequence control register 100, the limited sequence control table 200 and the sequence control table 300.
(1) Sequence Condition Determination
In a sequence condition determination, it is determined whether a condition for a transition from the current state to the next state has been satisfied. Based on the sequence mode (Md) specified in the field 101 of the sequence control register 100, a sequence condition determination is performed using different tables. In the following, a sequence condition determination and a sequence process for each sequence mode are described.
(1-1) Limited Mode
In a limited mode, the limited sequence control table 200 is used to perform a sequence condition determination. First, a relevant entry in the limited sequence control table 200 is specified from the state of the field 101 (Md) of the sequence control register 100. Then, based on the operate state condition (COp) set in the field 201 and the event condition (CEv) set in the field 202 of the specified entry, a condition determination is made to the operate state (Op) in the field 102 of the sequence control register 100 and the occurrence of a predetermined event. If both condition determinations are satisfied, a sequence condition determination in the limited mode is satisfied.
(1-2) Normal Mode
In a normal mode, the sequence control table 300 is used to perform a sequence condition determination. First, the field 301 (CSt) of every entry on the sequence control table 300 are searched. Then, an entry having stored therein a state matching with the state in the field 103 (St) of the sequence control register 100 is selected. Then, as for the selected entry, a condition determination is performed on the operate state (Op) in the field 102 of the sequence control register 100, the occurrence of a predetermined event, and a predetermined trigger, based on the operate state condition set in the field 302, the event condition (CEv) set in the field 303, and the trigger condition (CTrg) set in the field 304 of the sequence control table 300. If all conditions are determined as being satisfied, the sequence conditions in the normal mode are determined as being satisfied. If sequence conditions have simultaneously been satisfied in a plurality of entries on the sequence control table 300, one of the entries in which a sequence condition is satisfied is selected in accordance with a predetermined priority. More preferably, priorities among entries with respect to satisfaction of a sequence condition can be variably set by a register.
(2) Configuration Data Transfer Request Control
If the sequence condition is determined as being satisfied, a request for searching a configuration register management table 1200 (refer to
On the other hand, a search error means that configuration data regarding the transition destination's state has not yet been transferred. In this case, a process of transferring the configuration data regarding the transition destination's state is performed. The sequence manager 40 generates, at the time of search hit, a transfer request, a transfer state number, and a preload bank based on, in the limited mode, the settings in the fields 206 to 209 of a relevant entry on the limited sequence control table 200 and, in the normal mode, the settings in the field 308 to 311 of a relevant entry on the sequence control table 300, for output to the configuration manager 50. Here, in the limited mode, based on the setting in the field 207 of the relevant entry on the limited sequence control table 200, it is determined whether to generate a preload bank number from the field 209 of that entry or through a random method. In the normal mode, based on the setting in the field 309 of the relevant entry on the sequence control table 300, it is determined whether to generate a preload bank number from the field 311 of that entry or through a random method. In both sequence modes, the preload bank number may be generated through a scheme other than the random method, for example, an LRU method or a FIFO method. Also, a generation method may be selected based on the settings of the register. On the other hand, at the time of a search error, the state number of the transition destination is taken as a transfer state number, and a preload bank number is generated through a random method. Then a transfer request is generated for output to the configuration manager 50. As described above, the preload bank number may be generated through an LRU method or a FIFO method. Also, a generation method may be selected based on the settings of the register.
(3) State Update Process
In a state update process, if the sequence condition is satisfied, the fields 101 to 103 of the sequence control register 100 are updated, thereby making a transition of the state. Specifically, the fields 203 to 205 (TMd, TOp, TSt) of the relevant entry on the limited sequence control table 200 in the limited mode and the fields 305 to 307 (TMd, TOp, TSt) of the relevant entry on the sequence control table 300 in the normal mode are stored in the fields 101 to 103 (Md, Op, St) of the sequence control register 100.
(4) Sequence Request Control
After the state update process in the above (3), the bank number corresponding to the operate state (Op) in the field 102, the state number (St) in the field 103 of the sequence control register 100, and a sequence request indicative of the occurrence of a state sequence are output to the processing unit 60 and the data memory control unit 70.
(5) Preload Bank Number Change Request Control
During the transfer request control in the above (2), a request for changing a preload bank number input from the configuration manager 50 is received to generate a preload bank number through a random method for output to the configuration manager 50. As described above, the preload bank number may be generated through an LRU method or a FIFO method. Also, the generation method may be selected based on the settings of the register.
(6) State Register Save/Resume Process
During the transfer request control in the above (2), a suspend request may be input from the configuration manager 50. The suspend request is a request that causes the processing unit 60 and the data memory control unit 70 to be suspended and also cause a transition to a state where neither processing nor memory access is performed. If such a suspend request is accepted, execution thereof is suspended, the contents in the field 102 (Op) of the sequence control register 100 are saved to a save state register, and then a transition of the operate state is made to a suspend state. If a resume request is accepted from the configuration manager 50 under the suspend state, the contents of the field 102 (Op) of the sequence control register 100 are resumeed, and then the suspended transfer request control in the above (2) is executed again.
In the operation example in
Here, the fields 201 and 202 are assumed, although not particularly restricted, to take a value indicative of an operate condition (COp) and a value indicative of an event condition (CEv), respectively. With the above operation, the sequence condition in the present operation example is determined as being satisfied.
In the operation example in
Although not particularly restricted, in the present operation examples, a logical OR of each bit between the trigger condition and a trigger input is calculated, and it is assumed that the trigger condition is satisfied when all logical ORs are “1”. Here, a logical OR is calculated so as to allow a mask bit to be set. If the trigger condition and the trigger input are required to be in a perfect match with no mask bit allowed to be set, the processing result has to be processed again by using the plurality of processing cells 1600 for an appropriate trigger input, thereby degrading processing performance. The fields 304 (CTrg) of the relevant entries (Ent1, Ent2) indicate “0xFE” and “0xFF”, respectively, and the trigger 600 (Trg) input from the processing unit 60 indicates “00x01”. Therefore, the trigger condition for both entries is satisfied.
Here, although not particularly restricted, the fields 301 to 304 on the sequence control table 300 take a state number (CSt), a value indicative of an operate state condition (COp), a value indicative of an event condition (CEv), and a value indicative of a trigger condition (CTrg), respectively. With this, the sequence condition of both entries (Ent1, Ent2) is determined as being satisfied. Although the priority in the sequence condition determination is not particular restricted, if the priority is set higher as the entry number is smaller, it is selected in the present operation example that, through the priority determination, the sequence condition of the entry 1 (Ent1) is determined as being satisfied.
Also, as shown in
Here, the configuration control register 900, the configuration buffer 1000, the state define table 1100, and the configuration register management table 1200 may be implemented by, for example, RAM, non-volatile memory, or others. Also, in order to provide hardware with fixed control data optimized particularly for a specific application, the configuration buffer 1000 and the state define table 1100 may be implemented by ROM or a wired logic scheme.
The configuration control unit 1300 performs a process of transferring the configuration data as shown in the following (1) to (7) based on the settings of the configuration control register 900, the configuration buffer 1000, the state define table 1100, and the configuration register management table 1200 and inputs from the CPU 20 and the sequence manager 40.
(1) Process of Transferring Configuration Data upon a Configuration Data Transfer Request
In a process of transferring configuration data upon a configuration data transfer request, in response to a configuration data transfer request input from the sequence manager 40, a write request, the cell number of the write destination, the bank number of the write destination, and the configuration data are output from the processing unit 60 and the data memory control unit 70. Based on the pointer indicative of the relevant cell number of the relevant state in the state define table 1100, configuration data to be transferred from the configuration buffer 1000 is determined. Here, the state number of the state define table 1100 is specified by a transfer state number input from the sequence manager 40. On the other hand, the write request and the bank number of the write destination are generated from the transfer request and the bank number of the transfer destination input from the sequence manager 40. In the present embodiment, the cell number of the write destination is generated by fixedly determining the order of writing. Alternatively, the order of writing may be variable depending on the settings of the register. If the bank number of the write destination is equal to the bank number in which the configuration data corresponding to the state after transition, the configuration data transfer process is suspended, and then a preload bank number change request is output to the sequence manager 40.
(2) Process of Transferring Configuration Data upon a Configuration Data Transfer Command Request
In a process of transferring configuration data upon a configuration data transfer command request, in response to a configuration data transfer command request input from the CPU 20, a process similar to that in the above (1) is performed. It should be noted herein that the state number of the state define table 1100, the write request for output to the processing unit 60 and the data memory control unit 70, and the bank number of the write destination are a transfer state number, a transfer command request, and a preload bank number, input from CPU 20, respectively.
(3) Configuration Register Management Table Search Process
In a configuration register management table search process, in response to a configuration register management table search request input from the sequence manager 40, whether configuration data regarding the state after transition has been stored the configuration registers 1800 and 2300 inside of the processing cell 1600 and the data memory control cell 2100, respectively, is determined by searching the configuration register management table 1200, and then the search result is output to the sequence manager 40. If a search error occurs, a suspend state flag is set up in the field 902 of the configuration control register 900, and a suspend request is output to the sequence manager 40.
(4) Suspend Request Due to the Occurrence of a State Transition While Configuration Data is Being Transferred
If a state sequence occurs during the configuration data transfer process of the above (1) or (2), a suspend state flag is set up in the field 902 of the configuration control register 900, and then a suspend request is output to the sequence manager 40. The active configuration data transfer process being performed is continued.
(5) Error Notification upon a Configuration Data Transfer Command Request While Configuration Data is Being Transferred
If a configuration data transfer command request is issued from the CPU 20 during the configuration data transfer process of the above (1) or (2), an error notification is made to the sequence manager 40. It is assumed that the process after error depends on the settings of the sequence manager 40.
(6) State Update Process
In a state update process, a state indicative of whether update information is being transferred to the configuration register is set. Specifically, at the time of starting the configuration data transfer, a transfer flag (TrFlg) is set in the field 901 of the configuration control register 900, and then, based on the preload bank number input from the sequence manager 40, the field 1201 (V) of a relevant bank on the configuration register management table 1200 is invalidated. At the time of completion of the configuration data transfer, a transfer flag (TrFlg) in the field 901 of the configuration control register 900 is released, and the field 1201 (V) of the relevant bank on the configuration register management table 1200 is validated. Also, the transfer state number input from the sequence manager 40 is written in the field 1202 (Bst) of the relevant bank.
(7) Resume Request
After the completion of the configuration data transfer process in a suspend state, the suspend state flag in the field 902 of the configuration control register 900 is released, and a resume request is output to the sequence manager 40.
As depicted in
Here, description is made only to an operation regarding a first row (a row including ExC0), but a similar operation is performed in parallel on the other rows. Upon a start of transferring the configuration data (
Upon a start of a configuration data transfer process, as shown in
Upon completion of the configuration data transfer process, as shown in
Therefore, according to the semiconductor integrated circuit of the present embodiment, configuration data is hierarchically stored, thereby reducing the storage capacity required inside the processor. Also, by using an internal wide-band bus, a high-speed data transfer is performed among layers. Thus, low power consumption can be achieved, and processing performance can be increased.
Furthermore, without suspending the active process, configuration data required for subsequent processing is transferred in advance among layers, thereby reducing performance overhead.
Still further, by using the limited sequence mode and the sequence mode without limitation in appropriate combination, flexibility in state sequence and a high operating frequency can be both achieved, thereby facilitating implementation.
In the foregoing, the invention devised by the inventorss has been specifically described based on the embodiment. However, as a matter of course, the present invention is not restricted to the above-described embodiment, and can be variously modified without deviating from the gist of the present invention.
The present invention can be applied to a device having implemented thereon a semiconductor integrated circuit in which logical functions are dynamically reconfigurable.
Number | Date | Country | Kind |
---|---|---|---|
JP2005-105812 | Apr 2005 | JP | national |