Reconfigurable computation devices may be used to perform many different functions. Given a variety of possible functions, there may be different control and/or memory requirements for different functions. In particular, a reconfigurable computational device may be capable of implementing various functions that require different parameters and operations. Such a reconfigurable computational device may be configured, for example, by means of control words that may be provided by, for example, a control unit processor or a state machine. As a result of the different parameters and/or operations, these functions may, for example, require different-length control words.
Furthermore, the amount of power used to access memory is proportional to the memory word length. That is, a longer word requires more power to access than a shorter word. Consequently, if one function does not require a word length as long as that of another function, power may be wasted in accessing an entire word having a length required to accommodate all functions.
Various embodiments of the invention will now be described in connection with associated drawings, in which:
In the following description, numerous specific details are set forth. However, it is understood that embodiments of the invention may be practiced without these specific details. In other instances, well-known circuits, structures, and/or techniques have not been shown in detail in order not to obscure an understanding of this description.
References to “one embodiment”, “an embodiment”, “example embodiment”, “various embodiments”, etc., indicate that the embodiment(s) of the invention so described may include a particular feature, structure, or characteristic, but not every embodiment necessarily includes the particular feature, structure, or characteristic. Further, repeated use of the phrase “in one embodiment” does not necessarily refer to the same embodiment, although it may.
In the following description and claims, the terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, “connected” may be used to indicate that two or more elements are in direct physical or electrical contact with each other. “Coupled” may mean that two or more elements are in direct physical or electrical contact. However, “coupled” may also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
The apparatus may further comprise a plurality (say, M) of parallel memory banks 104. The memory banks 104 may be of a uniform word length C bits. In this case, it may be possible to generate an entry (which may be, for example, a control word) having a length M×C bits by considering the outputs of all of the memory banks 104. Therefore, in a general system, M and C may be chosen such that M×C bits corresponds to the largest entry length that may be needed.
The apparatus may also include a prefix decoder 103. According to various embodiments of the invention, an initial portion of an entry stored in memory banks 104 may include an n-bit prefix. The prefix length n may be chosen so that 2n is greater than or equal to the number of different desired entry lengths that one may wish to use. Prefix decoder 103 may then use the prefix to determine how many of the memory banks 104 may be accessed to obtain a particular desired entry length.
The apparatus may further include a plurality of temporary registers 105, a plurality of multiplexers (MUXes) 106, and/or a plurality of output registers 107. The number of each of these pluralities may be equal to the number of memory banks 104, M. In such an embodiment, words may be read out of the memory banks 104 into the temporary registers 105. The temporary registers 105 may be coupled to the MUXes 106, and the MUX outputs may be coupled to the output registers 107.
In various embodiments of the invention, the apparatus may function as follows. The address generator 102 may provide enable signals and/or actual addresses used to memory banks 104. The address and enable signals may be dependent upon control information provided to address generator 102 by prefix decoder 103.
The prefix decoder 103 may output control information to address generator 102, where the control information may be used to indicate the size of the entry to be read out. Address generator 102 may then use this control information to generate MUX control signals to indicate which data may be passed from temporary registers 105 through which MUXes 106 to output registers 107, in order to output the appropriate portion of the full-length number of words that corresponds to the entry to be read out 203. The MUXes 106 may be M:1 MUXes (i.e., M inputs and one output), and the MUX width may be C bits. Each MUX 106 may be coupled to each of the temporary registers 105 and may allow any of the temporary register 105 contents to be output to an output register 107. In the illustrative example shown in
Once the appropriate amount of data has been read into output registers 107, a next address, if any, may be acquired 204 (e.g., from microprocessor, state machine, or other logic 101). The next address may designate a location from which next data may be read. Address generator 102 may determine 205 if the next address is more than a full-length number, M, of C-bit words away from the previously-read data. If so, then a new full-length number of words may be loaded 201, and the process may be repeated, as shown in
To illustrate the latter operations, it may be useful to again consider the illustrative example of M=10 and C=32 with two-bit prefixes. An initial prefix may indicate that the entry to be read out currently has a length of 64 bits (two 32-bit words). The next address may indicate that the next data to be read out may be included within the same 320 bits as the entry that was just output. Therefore, it may not be necessary to read an entire new 320 bits out of memory banks 104 to obtain the next data to be output. On the other hand, if the next address indicates that the next word to be output may begin beyond the current 320 bits, it may be necessary to read a new 320 bits (ten words) from memory banks 104.
Entry 1 may, as shown, consist of ten 32-bit words (one in each memory bank 104). The words labeled “1” may, upon receipt of control information by address generator 102 and subsequent output of control signals, be read into temporary registers 105, and the prefix of the word “1” that was stored in Bank 0, which is the first word in Entry 1, may be passed through a first MUX 106 such that its prefix may be fed to prefix decoder 103. The prefix in this case may indicate that Entry 1 may have 320 bits (ten words), which may then be read from output registers 107.
Upon receipt of control information by address generator 102, the next ten words, which may be contained in Banks 0-9, may be read into temporary registers 105 (following read-out of a full-length (in this example, ten-word) entry, a new full set of ten words may need to be obtained from memory banks 104). Entry 2 may consist of two words, as shown, stored in Banks 0 and 1. The prefix of the first word of Entry 2, which may be routed through the first MUX 106 to prefix decoder 103, may indicate that Entry 2 has 64 bits (two words). This prefix information may then be used to read the two words from two of the output registers 107.
In the example of
Subsequently, Entry 12 may replace Entry 3 in the temporary registers 105 (under the assumption that Entry 4 may be read next, whose address may be less than 320 bits away from the address of Entry 3). The process may continue in a similar fashion.
The invention has been described in detail with respect to various embodiments, and it will now be apparent from the foregoing to those skilled in the art that changes and modifications may be made without departing from the invention in its broader aspects. The invention, therefore, as defined in the appended claims, is intended to cover all such changes and modifications as fall within the true spirit of the invention.