The present disclosure relates generally to Integrated Circuits (ICs), and more particularly to a method and system to access a set of parallel registers orthogonally.
A variety of devices, e.g., central processing unit (CPU) or other electronic device s, may comprise therein registers to control various functions. Typically, these registers may be implemented in a parallel fashion, such as a parallel register in which data may be read from and/or written to the parallel register concurrently. However, there may be instances in which only a particular bit in a set of parallel registers needs to be accessed to control certain functions. For example, for an 8-bit input and output (I/O) port, it may take 3 bits in a set of parallel registers to define a particular mode for a particular I/O bit, e.g., bit 3 of a set of three parallel registers may define the mode, and thus take three 8-bit parallel registers to fully describe the 8-bit I/O port. To set the mode for only one of the bits in the 8-bit I/O port, all three 8-bit parallel registers may have to be sequentially written, which can be both inefficient and time-consuming.
A system includes a plurality of parallel registers, each storing multiple register bits; and a decoder to access a first set of register bits in the plurality of parallel registers in an orthogonal fashion to produce an orthogonal register output, responsive to an orthogonal access command. The decoder may also access a second set of register bits in the plurality of parallel registers in a parallel fashion to produce a parallel register output, responsive to a parallel access command. The decoder is configured to generate a row select signal for selecting a row from the plurality of parallel registers, or to generate a column select signal for selecting a column from the plurality of parallel registers. The system further comprises a selector coupled to each register bit of the plurality of parallel registers to select between the parallel register output and the orthogonal register output.
A method includes providing a plurality of parallel registers, each parallel register storing multiple register bits; and accessing a first set of register bits in the plurality of parallel registers in an orthogonal arrangement to produce an orthogonal register output, responsive to an orthogonal access command. The method further comprises accessing a second set of register bits in the plurality of parallel registers in a parallel arrangement to produce a parallel register output, responsive to an parallel register access command. The method comprises selecting one of a row or column from the plurality of parallel registers, wherein the selected row corresponds to the parallel arrangement, and wherein the selected column corresponds to the orthogonal arrangement; performing an operation for the selected row or column; generating the parallel register output from the selected row; and generating the orthogonal register output from the selected column.
The foregoing and other objects, advantages and features will become more readily apparent by reference to the following detailed description in conjunction with the accompanying drawings.
A particular bit in the set of parallel registers, such as bit 0s, bit 1s, . . . , or bit 7s of the parallel registers R0-R7, may be accessed orthogonally by reading from and/or writing to one of the plurality of orthogonal register R8-R15. For example, as shown in
The parallel registers R0-R7 may be implemented using physical storage elements, while the orthogonal registers R8-R15 may be implemented as virtual registers. An example implementation of the orthogonal register access system 100 will be described below in greater detail. Although
Thus, instead of accessing sequentially through the parallel registers R0-R7 in order to access a particular bit in the set of parallel registers R0-R7, system 100 may access a particular bit in the set of parallel registers R0-R7 via an orthogonal register, such as the orthogonal registers R8-R15. System 100 thus allows for fast and efficient access to a particular bit in the set of parallel registers R0-R7.
A subset of the logical registers LR0-LR15 may be matched directly to the set of parallel registers R0-R7, while another subset of the logic parallel registers LR0-LR15 may be matched to the individual bits within the parallel registers R0-R7 in an orthogonal fashion. For instance, logical register LR15 may map to all bit 7s in physical registers R0-R7.
In some embodiments, the logical registers LR0-LR7 may each be matched to one of the physical registers R0-R7, e.g., logical registers LR0 may be matched to parallel registers R0, logical register LR1 may be matched to parallel register R1, . . . , and logical register LR7 may be matched to parallel register R7. On the other hand, each of the logical registers LR8-LR15 may be matched orthogonally to the individual bits within the physical parallel registers R0-R7, e.g., logical register LR8 may be matched to all bit 0s of the parallel registers R0-R7, logical register LR9 may be matched to all bit 1s of the parallel registers R0-R7, . . . , and logical register LR15 may be matched to all bit 7s of the parallel registers R0-R7. In other words, the logical registers LR0-LR7 may each be matched to one of the parallel registers R0-R7, while the logical registers LR8-LR15 may each be matched to one of the orthogonal registers R8-R15.
Referring to
When a particular row ROW 0-ROW 7 or a particular column COL 0-COL 7 is to be accessed, the decoder 30 may first decode an address 62 placed on an address bus (not shown). The decoder 30 may also receive control signals 60 from a processor or host device (not shown). The control signals 60 may include read/write operation commands, as well as other control commands. Based on the decoded address, the decoder 30 may select a particular row ROW 0-ROW 7 or a particular column COL 0-COL 7 by generating a ROW or COLUMN SELECT signal 64 and one of SEL 0, SEL 1, SEL2, . . . , or SEL 7 signal. Although
Table 1 below illustrates an example address decoding by decoder 30 for a 4-bit address 62. Although Table 1 shows that the address 62 is only 4 bits long, the decoder 30 may decode any address of arbitrary length, e.g., 16-bit address, or 32-bit address.
As shown in Table 1, when address 62 is “0000”, decoder 30 may generate a ROW SELECT signal 64 and SEL 0 signal at the output to enable ROW 0. On the other hand, when address 62 is “1000”, decoder 30 may generate a COL SELECT signal 64 and COL 0 at the output to enable COL 0.
Once a particular row ROW 0-ROW 7 is selected or enabled, a register operation may be performed for each bit in the selected row to produce a parallel register output 50 such as by reading or writing each bit of the selected row to a parallel register e.g., the parallel registers R0-R7). Similarly, once a particular column COL 0-COL 7 is selected, a register operation may be performed for each bit in the selected column to produce an orthogonal register output 70, such as by reading or writing each bit in the selected column to an orthogonal register, e.g., the orthogonal registers R8-R15. For example, when ROW 0 is enabled, then bit 0, bit 1, . . . , and bit 7 of ROW 0 may be enabled, e.g., the “SEL” signal associated with each of bit 0, bit 1, . . . , and bit 7 may be used to indicate that the particular bit is selected, to carry out a register operation, and thus produce a parallel register output 50. On the other hand, when COL 0 is enabled, then all bit 0s in COL 0 may be enabled, e.g., the “SEL” signals of bit 0 of R0, bit 0 of R1, . . . , and bit 0 of R7 may be used to indicated that the particular bit is enabled, to perform a register operation, and thus produce an orthogonal register output 70. Although it is not shown in
Selector logic 80 may be used at an output of each register bit, e.g., bit 0, bit 1, . . . , and bit 7, to select between the parallel register output 50 and the orthogonal register output 70. That is, if a parallel register output 50 is selected, then the register bit may be accessed in a parallel fashion by reading or writing the register bit to a parallel register, such as parallel registers R1-R7, else if an orthogonal register output 70 is selected, then the register bit may be accessed in an orthogonal fashion by reading or writing the register bit to an orthogonal register, such as orthogonal registers R8-R15. Although
Embodiments of the invention relate to a method and system for accessing a set of parallel registers orthogonally. A decoder may be used to select a particular row or column of the set of parallel registers to perform register operations in a parallel fashion or in an orthogonal fashion. Thus, when a particular row is selected, a register operation may be carried out in a parallel fashion for each bit of the selected row to produce a parallel register output, such as by reading/writing each bit of the selected row to a parallel register. On the other hand, when a particular column is selected, a register operation may be carried out for each bit of the selected column, such as by reading/writing each bit of the selected column to an orthogonal register. The orthogonal register access allows for fast and efficient access to a particular bit in the set of parallel registers.
Further modifications and alternative embodiments of this invention will be apparent to those skilled in the art in view of this description. Accordingly, this description is to be construed as illustrative only and is for the purpose of teaching those skilled in the art the manner of carrying out the invention. Various changes may be made in the shape, size and arrangement and types of components or devices. For example, equivalent elements or materials may be substituted for those illustrated and described herein, and certain features of the invention may be utilized independently of the use of other features, all as would be apparent to one skilled in the art after having the benefit of this description of the invention. Alternative embodiments are contemplated and are within the spirit and scope of the following claims.
This application claims the benefit of U.S. Provisional Application No. 60/912,399, filed Apr. 17, 2007, which is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
60912399 | Apr 2007 | US |