US20220035767A1 - Risc processor having specialized datapath for specialized registers - Google Patents
Risc processor having specialized datapath for specialized registers Download PDFInfo
- Publication number
- US20220035767A1 US20220035767A1 US16/941,485 US202016941485A US2022035767A1 US 20220035767 A1 US20220035767 A1 US 20220035767A1 US 202016941485 A US202016941485 A US 202016941485A US 2022035767 A1 US2022035767 A1 US 2022035767A1
- Authority
- US
- United States
- Prior art keywords
- data path
- data
- operand
- circuit
- port
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 claims description 37
- 238000010586 diagram Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000007792 addition Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
Images
Classifications
-
- 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/82—Architectures of general purpose stored program computers data or demand driven
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30101—Special purpose registers
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/3012—Organisation of register space, e.g. banked or distributed register file
Definitions
- the subject matter described herein relates to a RISC processor architecture, and more particularly to a RISC processor architecture having a data path interacting with specialized registers.
- RISC processors typically have a number of registers which act as temporary memory storage locations for calculations performed by data path circuits.
- the registers are used for storing various types of calculation variables for the data path calculations, and are therefore each configured to be used for each type of calculation variable. Because each register is capable of being used for each type of calculation variable, each register is implemented in a register file circuit having all of the features needed for each of the calculation variables. Accordingly, the data path interacts with each type of register file identically. Registers requiring less die area and data paths interacting therewith are needed in the art.
- the data path block circuit includes a first data path circuit having a plurality of a logic circuits, each configured to receive data to be used as first and second operands, and to perform a data path operation to generate a result based on the first and second operands.
- the data path block circuit also includes a first operand multiplexer, having a first plurality of data inputs, each connected to one of a first register file, including a first quantity of read and write ports, and a second register file, including a second quantity of read and write ports, where the first quantity of read and write ports is different from the second quantity of read and write ports.
- the data path block circuit also includes a second operand multiplexer, having a second plurality of data inputs, each connected to one of the first register file, and the second register file, where at least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the first register file. At least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the second register file.
- the data path block circuit includes an operation signal port configured to receive an operation signal including data identifying a first read port of one of the first and second register files for the first operand, and a second read port of one of the first and second register files for the second operand, where the first operand multiplexer is configured to receive data identifying the first read port and to select a first data input based on the received data identifying the first read port, and where the second operand multiplexer is configured to receive data identifying the second read port and to select a second data input based on the received data identifying the second read port.
- the first read port is connected to the first register file
- the second read port is connected to the second register file
- the first operand multiplexer is configured to provide data from the first data input to the first data path circuit as the first operand
- the second operand multiplexer is configured to provide data from the second data input to the first data path circuit as the second operand.
- the operation signal further identifies a particular data path operation of the first data path circuit, and the first data path circuit is configured to select a particular logic circuit based on the operation signal.
- the selected particular logic circuit is configured to perform the particular data path operation on the first and second operands to generate the result.
- the operation signal further identifies a particular write port for the result, and where the first data path circuit is configured to provide the result to the particular write port.
- the first read port is connected to the first register file
- the second read port is connected to the second register file
- the first read port and the second read port are connected to the first register file, and the particular write port is connected to the second register file.
- the data path block circuit includes a second data path circuit including a plurality of logic circuits, each configured to receive data to be used as third and fourth operands, and to perform a second data path operation to generate a second result based on the third and fourth operands, and an operation signal port configured to receive an operation signal identifying a first read port of one of the first and second register files for the third operand, and a second read port of one of the first and second register files for the fourth operand.
- the first read port is connected to the first register file
- the second read port is connected to the second register file
- the operation signal further identifies a particular data path operation of the second data path circuit, and the second data path circuit is configured to select a particular logic circuit based on the operation signal.
- the selected particular logic circuit is configured to perform the particular data path operation on the third and fourth operands to generate the result, the operation signal further identifies a particular write port for the result, and the second data path circuit is configured to provide the result to the particular write port.
- the first read port is connected to the first register file
- the second read port is connected to the second register file
- the first read port and the second read port are connected to the first register file, and the particular write port is connected to the second register file.
- Another inventive aspect is a method of using a data path block circuit.
- the method includes receiving an operation signal including data identifying a first read port of one of first and second register files for a first operand, and identifying a second read port of one of the first and second register files for a second operand, where the first register file includes a first quantity of read and write ports, where the second register file includes a second quantity of read and write ports, and where the first quantity of read and write ports is different from the second quantity of read and write ports.
- the method also includes, with a first operand multiplexer, receiving data from the operation signal identifying the first read port, with the first operand multiplexer, selecting a first data input based on the received data identifying the first read port, with a second operand multiplexer, receiving data from the operation signal identifying the second read port, with the second operand multiplexer, selecting a second data input based on the received data identifying the second read port, with a logic circuit of a first data path circuit, receiving data from the first and second operand multiplexers to be used as first and second operands, and with the logic circuit, and performing a data path operation to generate a result based on the first and second operands, where at least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the first register file, and where at least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the second register file.
- the method also includes, with the first operand multiplexer, providing data from the first data input to the logic circuit as the first operand, and with the second operand multiplexer, providing data from the second data input to the logic circuit as the second operand.
- the operation signal further identifies a particular write port for the result
- the method further includes, with the logic circuit providing the result to the particular write port.
- the first read port is connected to the first register file
- the second read port is connected to the second register file
- the first read port and the second read port are connected to the first register file, and the particular write port is connected to the second register file.
- FIG. 1 is a schematic diagram of an embodiment of a processor circuit.
- FIG. 2 is a schematic diagram of an embodiment of a data path block circuit which may be used in the processor circuit of FIG. 1 .
- FIG. 3 is a schematic diagram of an embodiment of a data path block circuit which may be used in the processor circuit of FIG. 1 .
- FIG. 4 is a flowchart diagram illustrating a method 500 of using a data path block circuit.
- FIG. 5 is a flowchart diagram illustrating a method 600 of using a data path block circuit.
- Processor register files interface with data path circuits according to the number of read and write ports the register files have.
- Embodiments discussed herein disclose a data path circuit which interfaces with specialized register files having specialized numbers of read and write ports.
- Processors such as RISC processors, use a LOAD/CALCULATE/STORE procedure for processing instructions, where data is LOADED into one or more registers, a CALCULATION is performed on the register data using a data path block of a datapath having multiple data path blocks, and calculation results from the data path block are STORED in one or more registers.
- Read and write access is provided to each register by read and write ports for both the memory and the data path blocks of the datapath.
- designers determine the number of registers and register files based on trade-offs between, for example, execution speed and circuit die area.
- designers determine a number of read and write ports for both the memory and the datapath to be used for the register files.
- Each register file requires a certain amount of circuit die area and a certain amount of power.
- some register files may be used as general purpose register files, which have a designed number of each port type.
- result variable register files may have two read ports and one write port
- constant variable register files may have one port and one write port.
- other register files having other port configurations may be used. Because the result variable and constant variable registers use fewer ports, they use less area and less power. Therefore, using these specialized registers in the place of a number of general purpose registers uses less circuit die area and less power for the same number of registers.
- Embodiments of data path circuits disclosed herein allow for specialized data path circuits to interface with the specialized register.
- Embodiments of register files disclosed herein include general purpose register files, that have a determined number of read and write ports for the memory and the datapath, and also have specialized registers, that use a different number of ports according to how each of the registers is to be used.
- Data path circuits configured to communicate with multiple types of register files is discussed. Functionality of a particular processor circuit having data register files, an instruction decoder, and a data path block is discussed with reference to FIG. 1 . Functionality of particular data path block circuits configured to interface with multiple types of register files having particular port configurations is discussed with reference to FIGS. 2 and 3 . Methods of using data path circuits for communicating with multiple types of register files are discussed with reference to FIGS. 4 and 5 .
- FIG. 1 is a schematic diagram of an embodiment of a processor circuit 100 interfacing with memory 50 .
- Processor circuit 100 includes data register files circuit 120 , data path block circuit 140 , and instruction decoder circuit 160 .
- each of the data register files of data register files circuit 120 includes one of:
- one read port for interfacing with data path block circuit 140 and one write port for interfacing with memory 50 .
- register files having other numbers of ports interfacing with data path block circuit 140 may be used.
- register files having other numbers of ports interfacing with memory 50 may be used.
- Processor circuit 100 may be used as a portion of a central processing unit (CPU) having other processor circuits known to those of skill in the art. In some embodiments, processor circuits having features other than those specifically discussed herein with reference to processor circuit 100 may be used.
- the registers of data register files having five read ports and two write ports for interfacing with data path block circuit 140 , and one read port and one write port for interfacing with memory 50 may, for example, be used as general purpose registers.
- the registers of data register files having one read port and one write port for interfacing with data path block circuit 140 , and one read port for interfacing with memory 50 may, for example be used as result registers, which store results of calculations operations, where the results may be stored in memory 50 .
- the registers of data register files having one read port for interfacing with data path block circuit 140 , and one write port for interfacing with memory 50 may, for example be used as constant registers, which store constants, which do not change for a number of data path instructions.
- a group of data path instructions may be associated with a loop in the source code compiled to generate the data path instructions, and constant registers may be used to store values of constants which do not change during the execution of the data path instructions associated with the loop.
- Memory circuit 50 may be any memory structure, as understood by those of skill in the art. Memory circuit 50 stores at least processing instructions and data. After an instruction and data are received by processor circuit 100 , the processor circuit 100 performs operations using the read data based on the read instruction.
- Instruction decoder circuit 160 is configured to receive data path instructions from memory circuit 50 , where the data path instructions cause data path block circuit 140 to generate a result which is stored in data register files circuit 120 .
- Each data path instruction encodes at least a data path operation to be performed, a result register within data register files circuit 120 where the result of the data path operation is to be stored, and one or more operand registers within data register files circuit 120 which store data to be used as operands for the data path operation.
- the result register where the result of the data path operation is to be stored is the same as an operand register storing data to be used as an operand for the data path operation.
- instruction decoder circuit 160 is configured to generate register signals for data register files circuit 120 which encode the one or more result registers within which one or more results of one or more data path operations are to be stored, a write port for each result register to be used for writing the one or more results of the one or more data path operations to the one or more result registers, the one or more operand registers within data register files circuit 120 which store the data to be used as operands for the one or more data path operations, and a read port for each operand register to be used for reading the operand data therefrom.
- instruction decoder circuit 160 is configured to generate operation signals for data path block circuit 140 which encode the one or more operations to be performed, the write port for each result register to be used for writing the one or more results of the one or more data path operations to the one or more result registers, and the read port for each operand register to be used for reading the operand data therefrom.
- Data register files circuit 120 is configured to receive the register signals from instruction decoder circuit 160 which encode the one or more result registers, the write port for each result register to be used for writing the one or more results of the one or more data path operations to the one or more result registers, the one or more operand registers, and the read port for each operand register to be used for reading the operand data therefrom.
- the data register files circuit 120 Based on the received register signals from instruction decoder circuit 160 which encode the one or more registers which store the data to be used as operands for the one or more data path operations, the data register files circuit 120 generates operand data signals for data path block circuit 140 .
- the register signals may identify a particular register file and a particular register within the particular register file for each of the one or more registers storing data to be used as operands for the one or more data path operations.
- the data from the identified particular registers is read and provided to data path block circuit 140 as the operand data signals.
- the data register files circuit 120 reads the data from the identified particular registers and provides the data read to the read ports identified in the received register signals.
- Data path block 140 is configured to receive the operation signals from instruction decoder circuit 160 which encode the one or more data path operations to be performed.
- data path block 140 is configured to receive the operation signals from instruction decoder circuit 160 which identify the read port for each operand data signal to be used for reading the operand data.
- data path block 140 accesses the identified read ports of data register files circuit 120 to receive the operand data signals which encode the data to be used as operands for the one or more data path operations.
- An embodiment of a data path block circuit is discussed below with reference to FIG. 2 , which illustrates an example of a data path block circuit configured to access identified read ports based on a received operation signal.
- Data path block 140 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals.
- data path block 140 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art, data path block 140 may additionally comprise one or more of each of a number of other logic circuits.
- data path block 140 Based on the received operation signals, which encode the one or more data path operations to be performed, data path block 140 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the operand data signals which encode the data to be used as operands for the one or more data path operations.
- the selected logic circuits In response to the operand data signals, the selected logic circuits generate one or more results according to the logic circuitry of the selected logic circuits, as understood by those of skill in the art.
- the generated one or more results are provided to data register files circuit 120 .
- data path block 140 comprises a number of separate data paths, where each data path comprises a number of each of: shifters, adders, multipliers, and other data path logic circuits.
- each data path is used to simultaneously calculate separate results.
- the operation signals received by data path block 140 from instruction decoder circuit 160 encode one or more data path operations to be performed with one or more of the separate data paths.
- the operand data signals received by data path block 140 from data register files circuit 120 encode the data to be used as operands for the one or more data path operations to be performed with the one or more separate data paths.
- data path block circuit 140 Based on the received operation signals from instruction decoder circuit 160 which identify the write port for each result register to be used for writing the one or more results to the one or more result registers of data register files circuit 120 , data path block circuit 140 provides the one or more results to the identified one or more write ports of data register files circuit 120 .
- An embodiment of a data path block circuit is discussed below with reference to FIG. 2 , which illustrates an example of a data path block circuit configured to provide results to an identified write port based on a received operation signal.
- the one or more results provided to the identified write ports of data register files circuit 120 are written to specified registers within the data register files circuit 120 based on the register signals from instruction decoder 160 which identify the one or more result registers within which the one or more results are to be stored, and the write port for each result register to be used for the writing.
- the instruction decoder circuit 160 decodes the one or more data path instructions
- the data path block circuit 140 receives the operand data signals from data register files circuit 120 and provides the one or more results to data register files circuit 120 , and the one or more results are written to data register files circuit 120 in a single CPU clock cycle.
- the instruction decoder circuit 160 decodes the one or more data path instructions.
- the data path block circuit 140 receives the operation signals from instruction decoder 160 , receives the operand data signals from data register files circuit 120 , calculates the one or more results, and provides the one or more results to data register files circuit 120 , which stores the one or more results in the one or more registers specified in the one or more data path instructions received by instruction decoder circuit 160 .
- Instruction decoder circuit 160 is also configured to receive memory instructions from memory circuit 50 , where the memory instructions cause either data to be read from register files circuit 120 to memory circuit 50 or to be written to register files circuit 120 from memory circuit 50 .
- Each memory instruction encodes at least a memory operation (read from register files circuit 120 or write to register files circuit 120 ) to be performed, a register within data register files circuit 120 which is read or written, and an address in memory 50 .
- instruction decoder circuit 160 is configured to generate register signals for data register files circuit 120 which encode the memory instructions.
- Data register files circuit 120 is configured to receive the register signals from instruction decoder circuit 160 . Based on the received register signals from instruction decoder circuit 160 , the data register files circuit 120 interacts with the memory circuit according to the memory instruction, for example, by reading data from a specified register and writing the read data to memory 50 at a specified address, or by reading data from a specified address in memory 50 and writing the read data to a specified register.
- FIG. 2 is a schematic diagram of an embodiment of a data path block circuit 200 .
- Data path block circuit 200 may be used, for example, as data path block circuit 140 of processor circuit 100 of FIG. 1 .
- Embodiments of processor circuit 100 may use embodiments of other data path block circuits.
- embodiments of data path block circuit 200 may be used in other embodiments of processor circuits.
- Data path block circuit 200 includes first operand multiplexer 210 , second operand multiplexer 220 , result multiplexer 230 , and data path 240 .
- Data path block circuit 200 is configured to receive operation signals from, for example, an instruction decoder circuit, such as instruction decoder circuit 160 of FIG. 1 .
- the operation signals encode a data path operation to be performed.
- the operation signals also identify the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data register files circuit 120 of FIG. 1 .
- data path block circuit 200 is configured to receive an operation signal comprising an operation identifier OP, a result port signal Result Port, a first operand port signal OP 1 Port, and a second operand port signal OP 2 Port.
- the operation identifier OP encodes the operation to be performed by the data path block circuit 200 .
- the result port signal Result Port encodes the register file write port to be used for writing the result to the register file.
- the first operand port signal OP 1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the data path block circuit 200 .
- the second operand port signal OP 2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the data path block circuit 200 .
- operation signals include zero or one operand port signals.
- some operations require more than two operands.
- data path block circuit 200 includes one or more additional operand multiplexers, and for instructions requiring more than two operands, the operation signals include more than two (e.g. 3 or 4) operand port signals.
- first operand multiplexer 220 accesses the first read port identified by the first operand port signal OP 1 Port, and provides the operand data signal thereon to data path circuit 240 as the first operand input for the operation to be performed by data path circuit 240 .
- second operand multiplexer 210 accesses the second read port identified by the second operand port signal OP 2 Port, and provides the operand data signal thereon to data path circuit 240 as the second operand input for the operation to be performed by data path circuit 240 .
- Data path circuit 240 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals.
- data path circuit 240 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art, data path circuit 240 may additionally comprise one or more of each of a number of other logic circuits.
- data path circuit 240 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the first and second operands which encode the data to be used as operands for the data path operation.
- the selected logic circuits In response to the first and second operands, the selected logic circuits generate a result according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art.
- the generated result is provided to result multiplexer 230 .
- result multiplexer 230 Based on the result port signal Result Port at its selector input, because result port signal Result Port encodes the register file write port to be used for writing the result to the register file, result multiplexer 230 provides the result to the identified write port of the register file.
- the result provided to the identified write port of the register file is written to specified register within the register file.
- some logic circuits generate more than one result.
- Embodiments of data path block circuits which accommodate logic circuits which generate more than one result have one or more additional result multiplexers which each receive an additional result, and provide the received result to one identified write port of the available write ports, where the identification is included in an additional result port signal in the operation signal.
- each operand multiplexer has an input for the read ports of each of the register files circuits.
- one or more operand multiplexers don't have inputs a particular type of register file.
- all of the data inputs of one or more operand multiplexers are connected to either general purpose register files or result register files.
- all of the data inputs of one or more operand multiplexers are connected to either general purpose register files or constant register files.
- all of the data inputs of one or more operand multiplexers are connected to either result register files or constant register files.
- one or more operand multiplexers have inputs only for a particular type of register file. For example, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to general purpose register files. Additionally or alternatively, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to result register files. Additionally or alternatively, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to constant register files.
- data path circuits use different read ports for different operands.
- the operands for one or more operations are assigned to or are selectively connectable to a first set of read ports, and other operands for one or more operations are assigned to or are selectively connectable to a second set of read ports.
- the first and second sets overlap. In some embodiments, the first and second sets are non-overlapping.
- FIG. 3 is a schematic diagram of an embodiment of a data path block circuit 300 .
- Data path block circuit 300 may be used, for example, as data path block circuit 140 of processor circuit 100 of FIG. 1 .
- Embodiments of processor circuit 100 may use embodiments of other data path block circuits.
- embodiments of data path block circuit 300 may be used in other embodiments of processor circuits.
- Data path block circuit 300 includes first data path 340 and second data path 440 .
- Data path block circuit 300 also includes first operand multiplexer 310 , second operand multiplexer 320 , and result multiplexer 330 for first data path 340 .
- Data path block circuit 300 also includes first operand multiplexer 410 , second operand multiplexer 420 , and result multiplexer 430 for second data path 440 .
- Data path block circuit 300 is configured to receive operation signals from, for example, an instruction decoder circuit, such as instruction decoder circuit 160 of FIG. 1 .
- the operation signals encode one or more data path operations to be performed.
- the operation signals also identify the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data register files circuit 120 of FIG. 1 .
- data path block circuit 300 is configured to receive an operation signal comprising an operation identifier DP 1 OP, a result port signal DP 1 Result Port, a first operand port signal DP 1 OP 1 Port, a second operand port signal DP 1 OP 2 Port, an operation identifier DP 2 OP, a result port signal DP 2 Result Port, a first operand port signal DP 2 OP 1 Port, and a second operand port signal DP 2 OP 2 Port.
- an operation signal comprising an operation identifier DP 1 OP, a result port signal DP 1 Result Port, a first operand port signal DP 1 OP 1 Port, a second operand port signal DP 1 OP 2 Port, an operation identifier DP 2 OP, a result port signal DP 2 Result Port, a first operand port signal DP 2 OP 1 Port, and a second operand port signal DP 2 OP 2 Port.
- the operation identifier DP 1 OP encodes the operation to be performed by the first data path 340 .
- the result port signal DP 1 Result Port encodes the register file write port to be used for writing the result of the operation to be performed by the first data path 340 to the register file.
- the first operand port signal DP 1 OP 1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the first data path 340 .
- the second operand port signal DP 1 OP 2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the first data path 340 .
- the operation identifier DP 2 OP encodes the operation to be performed by the second data path 440 .
- the result port signal DP 2 Result Port encodes the register file write port to be used for writing the result of the operation to be performed by the second data path 440 to the register file.
- the first operand port signal DP 2 OP 1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the second data path 440 .
- the second operand port signal DP 2 OP 2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the second data path 440 .
- operation signals include zero or one operand port signals.
- some operations require more than two operands.
- data path block circuit 300 includes one or more additional operand multiplexers, and for instructions requiring more than two operands, the operation signals include more than two (e.g. 3 or 4) operand port signals.
- first operand multiplexer 320 accesses the first read port identified by the first operand port signal DP 1 OP 1 Port, and provides the operand data signal thereon to first data path circuit 340 as the first operand input for the operation to be performed by first data path circuit 340 .
- second operand multiplexer 310 accesses the second read port identified by the second operand port signal DP 1 OP 2 Port, and provides the operand data signal thereon to first data path circuit 340 as the second operand input for the operation to be performed by first data path circuit 340 .
- first operand multiplexer 420 accesses the first read port identified by the first operand port signal DP 2 OP 1 Port, and provides the operand data signal thereon to first data path circuit 440 as the first operand input for the operation to be performed by first data path circuit 440 .
- second operand multiplexer 410 accesses the second read port identified by the second operand port signal DP 2 OP 2 Port, and provides the operand data signal thereon to second data path circuit 440 as the second operand input for the operation to be performed by second data path circuit 440 .
- First data path circuit 340 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals.
- first data path circuit 340 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art, first data path circuit 340 may additionally comprise one or more of each of a number of other logic circuits.
- first data path circuit 340 Based on the operation identifier DP 1 OP, which encodes the data path operation to be performed by the first data path circuit 340 , first data path circuit 340 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the first and second operands from first and second multiplexer circuits 310 and 320 , where the first and second operands encode the data to be used as operands for the selected first data path operation logic circuits.
- the selected logic circuits of the first data path circuit 340 In response to the first and second operands from the first and second multiplexer circuits 310 and 320 , the selected logic circuits of the first data path circuit 340 generate a first result according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art. The generated first result is provided to result multiplexer 330 .
- Second data path circuit 440 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals.
- second data path circuit 440 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art, second data path circuit 440 may additionally comprise one or more of each of a number of other logic circuits.
- second data path circuit 440 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the first and second operands from first and second multiplexer circuits 410 and 420 , where the first and second operands encode the data to be used as operands for the selected second data path operation logic circuits.
- the selected logic circuits of the second data path circuit 440 In response to the first and second operands from the first and second multiplexer circuits 410 and 420 , the selected logic circuits of the second data path circuit 440 generate a second result according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art. The generated second result is provided to result multiplexer 430 .
- result multiplexer 330 Based on the result port signal DP 1 Result Port at its selector input, because result port signal DP 1 Result Port encodes the register file write port to be used for writing the result of the data path operation performed by the first data path circuit 340 to the register file, result multiplexer 330 provides the first result to the identified write port of the register file. Based on the result port signal DP 2 Result Port at its selector input, because result port signal DP 2 Result Port encodes the register file write port to be used for writing the result of the data path operation to be performed by the second data path circuit 440 to the register file, result multiplexer 430 provides the second result to the identified write port of the register file.
- the first and second results provided to the identified write ports of the register file are written to specified registers within the register file.
- Embodiments of data path block circuits which accommodate logic circuits which generate more than one result have one or more additional result multiplexers which each receive an additional result, and provide the received result to one identified write port of the available write ports, where the identification is included in an additional result port signal in the operation signal.
- FIG. 4 is a flowchart diagram illustrating a method 500 of using a data path block circuit.
- the method 500 may be performed, for example, by or with processor circuit 100 of FIG. 1 .
- the method 500 may be performed, for example, by or with either of data path block circuits 200 of FIG. 2 and 300 of FIG. 3 .
- the data path block circuit receives an operation signal from, for example, an instruction decoder circuit, such as instruction decoder circuit 160 of FIG. 1 .
- the operation signal encodes a data path operation to be performed.
- the operation signal also identifies the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data register files circuit 120 of FIG. 1 .
- the data path block circuit may receive an operation signal comprising an operation identifier OP, a result port signal Result Port, a first operand port signal OP 1 Port, and a second operand port signal OP 2 Port.
- the operation identifier OP encodes the operation to be performed by the data path block circuit.
- the result port signal Result Port encodes the register file write port to be used for writing the result to the register file.
- the first operand port signal OP 1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the data path block circuit.
- the second operand port signal OP 2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the data path block circuit.
- a read port identified by the first operand port signal OP 1 Port is accessed and provides the operand data signal thereon to a data path circuit as the first operand input for the operation to be performed by the data path circuit.
- a read port identified by the second operand port signal OP 2 Port is accessed and provides the operand data signal thereon to a data path circuit as the second operand input for the operation to be performed by the data path circuit.
- a logic circuit of the data path circuit is selected based on the operation identifier OP, where the selected logic circuit corresponds with the function of the operation identifier OP. As a result of the selection, the selected logic circuit receives the first and second operands which encode the data to be used as operands for the data path operation of the selected logic circuit.
- the selected logic circuit generates a result based on the first and second operands according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art.
- the method 500 may be performed by a data path block circuit having multiple data paths, such as data path block circuit 300 , which has first data path 340 and second data path 440 .
- first operand multiplexer 310 , second operand multiplexer 320 , first data path 340 , and result multiplexer 330 may or may be used to perform method 500 .
- first operand multiplexer 410 , second operand multiplexer 420 , second data path 440 , and result multiplexer 430 also may or may be used to perform the method 500 .
- first operand multiplexer 310 , second operand multiplexer 320 , first data path 340 , and result multiplexer 330 perform or are used to perform the method 500
- first operand multiplexer 410 , second operand multiplexer 420 , second data path 440 , and result multiplexer 430 also perform or are used to perform the method 500 , such that the method 500 is performed for both first data path circuit 340 and second data path circuit 440 concurrently.
- the method 500 is performed for both first data path circuit 340 and second data path circuit 440 serially or consecutively.
- all of the actions discussed with reference to FIG. 4 occur within a single calculation cycle.
- all of the actions discussed with reference to FIG. 4 occur within a single CPU clock cycle.
- FIG. 5 is a flowchart diagram illustrating a method 600 of using a data path block circuit.
- the method 600 may be performed, for example, by or with processor circuit 100 of FIG. 1 .
- the method 600 may be performed, for example, by or with either of data path block circuits 200 of FIG. 2 and 300 of FIG. 3 .
- the data path block circuit receives an operation signal from, for example, an instruction decoder circuit, such as instruction decoder circuit 160 of FIG. 1 .
- the operation signal encodes a data path operation to be performed.
- the operation signal also identifies the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data register files circuit 120 of FIG. 1 .
- the data path block circuit may receive an operation signal comprising an operation identifier OP, a result port signal Result Port, a first operand port signal OP 1 Port, and a second operand port signal OP 2 Port.
- the operation identifier OP encodes the operation to be performed by the data path block circuit.
- the result port signal Result Port encodes the register file write port to be used for writing the result to the register file.
- the first operand port signal OP 1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the data path block circuit.
- the second operand port signal OP 2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the data path block circuit.
- a logic circuit of the data path circuit is selected based on the operation identifier OP, where the selected logic circuit corresponds with the function of the operation identifier OP. As a result of the selection, the selected logic circuit receives the first and second operands which encode the data to be used as operands for the data path operation of the selected logic circuit.
- the selected logic circuit generates a result based on the first and second operands according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art.
- a write port identified by the result port signal Result Port is accessed, and at 650 , the result generated by the selected logic circuit is provided to the accessed write port.
- the method 600 may be performed by a data path block circuit having multiple data paths, such as data path block circuit 300 , which has first data path 340 and second data path 440 .
- first operand multiplexer 310 , second operand multiplexer 320 , first data path 340 , and result multiplexer 330 may or may be used to perform method 600 .
- first operand multiplexer 410 , second operand multiplexer 420 , second data path 440 , and result multiplexer 430 also may or may be used to perform the method 600 .
- first operand multiplexer 310 , second operand multiplexer 320 , first data path 340 , and result multiplexer 330 perform or are used to perform the method 600
- first operand multiplexer 410 , second operand multiplexer 420 , second data path 440 , and result multiplexer 430 also perform or are used to perform the method 600 , such that the method 600 is performed for both first data path circuit 340 and second data path circuit 440 concurrently.
- the method 600 is performed for both first data path circuit 340 and second data path circuit 440 serially or consecutively.
- all of the actions discussed with reference to FIG. 5 occur within a single calculation cycle.
- all of the actions discussed with reference to FIG. 5 occur within a single CPU clock cycle.
- phrases such as “at least one of” or “one or more of” may occur followed by a conjunctive list of elements or features.
- the term “and/or” may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features.
- the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.”
- a similar interpretation is also intended for lists including three or more items.
- the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.”
- Use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Executing Machine-Instructions (AREA)
- Logic Circuits (AREA)
Abstract
Description
- This application is related to U.S. patent application Ser. No. ______ titled RISC PROCESSOR HAVING SPECIALIZED REGISTERS, Attorney Docket 102768-1203640(009400US), filed herewith, which is incorporated herein by reference in its entirety for all purposes.
- The subject matter described herein relates to a RISC processor architecture, and more particularly to a RISC processor architecture having a data path interacting with specialized registers.
- RISC processors typically have a number of registers which act as temporary memory storage locations for calculations performed by data path circuits. The registers are used for storing various types of calculation variables for the data path calculations, and are therefore each configured to be used for each type of calculation variable. Because each register is capable of being used for each type of calculation variable, each register is implemented in a register file circuit having all of the features needed for each of the calculation variables. Accordingly, the data path interacts with each type of register file identically. Registers requiring less die area and data paths interacting therewith are needed in the art.
- One inventive aspect is a data path block circuit. The data path block circuit includes a first data path circuit having a plurality of a logic circuits, each configured to receive data to be used as first and second operands, and to perform a data path operation to generate a result based on the first and second operands. The data path block circuit also includes a first operand multiplexer, having a first plurality of data inputs, each connected to one of a first register file, including a first quantity of read and write ports, and a second register file, including a second quantity of read and write ports, where the first quantity of read and write ports is different from the second quantity of read and write ports. The data path block circuit also includes a second operand multiplexer, having a second plurality of data inputs, each connected to one of the first register file, and the second register file, where at least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the first register file. At least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the second register file.
- In some embodiments, the data path block circuit includes an operation signal port configured to receive an operation signal including data identifying a first read port of one of the first and second register files for the first operand, and a second read port of one of the first and second register files for the second operand, where the first operand multiplexer is configured to receive data identifying the first read port and to select a first data input based on the received data identifying the first read port, and where the second operand multiplexer is configured to receive data identifying the second read port and to select a second data input based on the received data identifying the second read port.
- In some embodiments, the first read port is connected to the first register file, and the second read port is connected to the second register file.
- In some embodiments, the first operand multiplexer is configured to provide data from the first data input to the first data path circuit as the first operand, and the second operand multiplexer is configured to provide data from the second data input to the first data path circuit as the second operand.
- In some embodiments, the operation signal further identifies a particular data path operation of the first data path circuit, and the first data path circuit is configured to select a particular logic circuit based on the operation signal.
- In some embodiments, the selected particular logic circuit is configured to perform the particular data path operation on the first and second operands to generate the result.
- In some embodiments, the operation signal further identifies a particular write port for the result, and where the first data path circuit is configured to provide the result to the particular write port.
- In some embodiments, the first read port is connected to the first register file, and the second read port is connected to the second register file.
- In some embodiments, the first read port and the second read port are connected to the first register file, and the particular write port is connected to the second register file.
- In some embodiments, the data path block circuit includes a second data path circuit including a plurality of logic circuits, each configured to receive data to be used as third and fourth operands, and to perform a second data path operation to generate a second result based on the third and fourth operands, and an operation signal port configured to receive an operation signal identifying a first read port of one of the first and second register files for the third operand, and a second read port of one of the first and second register files for the fourth operand.
- In some embodiments, the first read port is connected to the first register file, and the second read port is connected to the second register file.
- In some embodiments, the operation signal further identifies a particular data path operation of the second data path circuit, and the second data path circuit is configured to select a particular logic circuit based on the operation signal.
- In some embodiments, the selected particular logic circuit is configured to perform the particular data path operation on the third and fourth operands to generate the result, the operation signal further identifies a particular write port for the result, and the second data path circuit is configured to provide the result to the particular write port.
- In some embodiments, the first read port is connected to the first register file, and the second read port is connected to the second register file.
- In some embodiments, the first read port and the second read port are connected to the first register file, and the particular write port is connected to the second register file.
- Another inventive aspect is a method of using a data path block circuit. The method includes receiving an operation signal including data identifying a first read port of one of first and second register files for a first operand, and identifying a second read port of one of the first and second register files for a second operand, where the first register file includes a first quantity of read and write ports, where the second register file includes a second quantity of read and write ports, and where the first quantity of read and write ports is different from the second quantity of read and write ports. The method also includes, with a first operand multiplexer, receiving data from the operation signal identifying the first read port, with the first operand multiplexer, selecting a first data input based on the received data identifying the first read port, with a second operand multiplexer, receiving data from the operation signal identifying the second read port, with the second operand multiplexer, selecting a second data input based on the received data identifying the second read port, with a logic circuit of a first data path circuit, receiving data from the first and second operand multiplexers to be used as first and second operands, and with the logic circuit, and performing a data path operation to generate a result based on the first and second operands, where at least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the first register file, and where at least one of the first operand multiplexer and the second operand multiplexer includes a data input connected to the second register file.
- In some embodiments, the method also includes, with the first operand multiplexer, providing data from the first data input to the logic circuit as the first operand, and with the second operand multiplexer, providing data from the second data input to the logic circuit as the second operand.
- In some embodiments, the operation signal further identifies a particular write port for the result, and the method further includes, with the logic circuit providing the result to the particular write port.
- In some embodiments, the first read port is connected to the first register file, and the second read port is connected to the second register file.
- In some embodiments, the first read port and the second read port are connected to the first register file, and the particular write port is connected to the second register file.
- The accompanying drawings, which are incorporated in and constitute a part of this specification, show certain aspects of the subject matter disclosed herein and, together with the description, help explain some of the principles associated with the disclosed implementations.
-
FIG. 1 is a schematic diagram of an embodiment of a processor circuit. -
FIG. 2 is a schematic diagram of an embodiment of a data path block circuit which may be used in the processor circuit ofFIG. 1 . -
FIG. 3 is a schematic diagram of an embodiment of a data path block circuit which may be used in the processor circuit ofFIG. 1 . -
FIG. 4 is a flowchart diagram illustrating amethod 500 of using a data path block circuit. -
FIG. 5 is a flowchart diagram illustrating amethod 600 of using a data path block circuit. - When practical, similar reference numbers denote similar structures, features, or elements.
- Particular embodiments of the invention are illustrated herein in conjunction with the drawings. Particular embodiments of the invention are illustrated herein in conjunction with the drawings.
- Various details are set forth herein as they relate to certain embodiments. However, the invention can also be implemented in ways which are different from those described herein. Modifications can be made to the discussed embodiments by those skilled in the art without departing from the invention. Therefore, the invention is not limited to particular embodiments disclosed herein.
- Processor register files interface with data path circuits according to the number of read and write ports the register files have. Embodiments discussed herein disclose a data path circuit which interfaces with specialized register files having specialized numbers of read and write ports.
- Processors, such as RISC processors, use a LOAD/CALCULATE/STORE procedure for processing instructions, where data is LOADED into one or more registers, a CALCULATION is performed on the register data using a data path block of a datapath having multiple data path blocks, and calculation results from the data path block are STORED in one or more registers. Read and write access is provided to each register by read and write ports for both the memory and the data path blocks of the datapath. For an implementation, designers determine the number of registers and register files based on trade-offs between, for example, execution speed and circuit die area. In addition, designers determine a number of read and write ports for both the memory and the datapath to be used for the register files. Each register file requires a certain amount of circuit die area and a certain amount of power.
- In some embodiments, some register files may be used as general purpose register files, which have a designed number of each port type. In addition, result variable register files may have two read ports and one write port, and constant variable register files may have one port and one write port. In some embodiments, other register files having other port configurations may be used. Because the result variable and constant variable registers use fewer ports, they use less area and less power. Therefore, using these specialized registers in the place of a number of general purpose registers uses less circuit die area and less power for the same number of registers.
- Embodiments of data path circuits disclosed herein allow for specialized data path circuits to interface with the specialized register. Embodiments of register files disclosed herein include general purpose register files, that have a determined number of read and write ports for the memory and the datapath, and also have specialized registers, that use a different number of ports according to how each of the registers is to be used.
- Data path circuits configured to communicate with multiple types of register files is discussed. Functionality of a particular processor circuit having data register files, an instruction decoder, and a data path block is discussed with reference to
FIG. 1 . Functionality of particular data path block circuits configured to interface with multiple types of register files having particular port configurations is discussed with reference toFIGS. 2 and 3 . Methods of using data path circuits for communicating with multiple types of register files are discussed with reference toFIGS. 4 and 5 . -
FIG. 1 is a schematic diagram of an embodiment of aprocessor circuit 100 interfacing withmemory 50.Processor circuit 100 includes dataregister files circuit 120, datapath block circuit 140, andinstruction decoder circuit 160. As illustrated, in this embodiment, each of the data register files of data registerfiles circuit 120 includes one of: - five read ports and two write ports for interfacing with data
path block circuit 140, and one read port and one write port for interfacing withmemory 50; - one read port and one write port for interfacing with data
path block circuit 140, and one read port for interfacing withmemory 50; and - one read port for interfacing with data
path block circuit 140, and one write port for interfacing withmemory 50. - In other embodiments, register files having other numbers of ports interfacing with data
path block circuit 140 may be used. In other embodiments, register files having other numbers of ports interfacing withmemory 50 may be used.Processor circuit 100 may be used as a portion of a central processing unit (CPU) having other processor circuits known to those of skill in the art. In some embodiments, processor circuits having features other than those specifically discussed herein with reference toprocessor circuit 100 may be used. - The registers of data register files having five read ports and two write ports for interfacing with data
path block circuit 140, and one read port and one write port for interfacing withmemory 50 may, for example, be used as general purpose registers. - The registers of data register files having one read port and one write port for interfacing with data
path block circuit 140, and one read port for interfacing withmemory 50, may, for example be used as result registers, which store results of calculations operations, where the results may be stored inmemory 50. - The registers of data register files having one read port for interfacing with data
path block circuit 140, and one write port for interfacing withmemory 50, may, for example be used as constant registers, which store constants, which do not change for a number of data path instructions. For example, a group of data path instructions may be associated with a loop in the source code compiled to generate the data path instructions, and constant registers may be used to store values of constants which do not change during the execution of the data path instructions associated with the loop. -
Memory circuit 50 may be any memory structure, as understood by those of skill in the art.Memory circuit 50 stores at least processing instructions and data. After an instruction and data are received byprocessor circuit 100, theprocessor circuit 100 performs operations using the read data based on the read instruction. -
Instruction decoder circuit 160 is configured to receive data path instructions frommemory circuit 50, where the data path instructions cause datapath block circuit 140 to generate a result which is stored in dataregister files circuit 120. Each data path instruction encodes at least a data path operation to be performed, a result register within dataregister files circuit 120 where the result of the data path operation is to be stored, and one or more operand registers within dataregister files circuit 120 which store data to be used as operands for the data path operation. As understood by those of skill in the art, for some data path instructions, the result register where the result of the data path operation is to be stored is the same as an operand register storing data to be used as an operand for the data path operation. - Based on the received data path instructions from
memory circuit 50,instruction decoder circuit 160 is configured to generate register signals for data registerfiles circuit 120 which encode the one or more result registers within which one or more results of one or more data path operations are to be stored, a write port for each result register to be used for writing the one or more results of the one or more data path operations to the one or more result registers, the one or more operand registers within dataregister files circuit 120 which store the data to be used as operands for the one or more data path operations, and a read port for each operand register to be used for reading the operand data therefrom. - In addition, based on the received data path instructions from
memory circuit 50,instruction decoder circuit 160 is configured to generate operation signals for datapath block circuit 140 which encode the one or more operations to be performed, the write port for each result register to be used for writing the one or more results of the one or more data path operations to the one or more result registers, and the read port for each operand register to be used for reading the operand data therefrom. - Data register
files circuit 120 is configured to receive the register signals frominstruction decoder circuit 160 which encode the one or more result registers, the write port for each result register to be used for writing the one or more results of the one or more data path operations to the one or more result registers, the one or more operand registers, and the read port for each operand register to be used for reading the operand data therefrom. - Based on the received register signals from
instruction decoder circuit 160 which encode the one or more registers which store the data to be used as operands for the one or more data path operations, the dataregister files circuit 120 generates operand data signals for datapath block circuit 140. For example, the register signals may identify a particular register file and a particular register within the particular register file for each of the one or more registers storing data to be used as operands for the one or more data path operations. In response to the register signals, the data from the identified particular registers is read and provided to datapath block circuit 140 as the operand data signals. - Based on the received register signals from
instruction decoder circuit 160 which identify the read port for each operand register to be used for reading the operand data therefrom, the dataregister files circuit 120 reads the data from the identified particular registers and provides the data read to the read ports identified in the received register signals. - Data path block 140 is configured to receive the operation signals from
instruction decoder circuit 160 which encode the one or more data path operations to be performed. In addition, data path block 140 is configured to receive the operation signals frominstruction decoder circuit 160 which identify the read port for each operand data signal to be used for reading the operand data. - Based on the received operation signals, data path block 140 accesses the identified read ports of data register
files circuit 120 to receive the operand data signals which encode the data to be used as operands for the one or more data path operations. An embodiment of a data path block circuit is discussed below with reference toFIG. 2 , which illustrates an example of a data path block circuit configured to access identified read ports based on a received operation signal. - Data path block 140 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals. For example, data path block 140 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art, data path block 140 may additionally comprise one or more of each of a number of other logic circuits.
- Based on the received operation signals, which encode the one or more data path operations to be performed, data path block 140 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the operand data signals which encode the data to be used as operands for the one or more data path operations.
- In response to the operand data signals, the selected logic circuits generate one or more results according to the logic circuitry of the selected logic circuits, as understood by those of skill in the art.
- The generated one or more results are provided to data register
files circuit 120. - In some embodiments, data path block 140 comprises a number of separate data paths, where each data path comprises a number of each of: shifters, adders, multipliers, and other data path logic circuits. In these embodiments, each data path is used to simultaneously calculate separate results. Accordingly, in these embodiments, the operation signals received by data path block 140 from
instruction decoder circuit 160 encode one or more data path operations to be performed with one or more of the separate data paths. In addition, the operand data signals received by data path block 140 from data registerfiles circuit 120 encode the data to be used as operands for the one or more data path operations to be performed with the one or more separate data paths. - Based on the received operation signals from
instruction decoder circuit 160 which identify the write port for each result register to be used for writing the one or more results to the one or more result registers of data registerfiles circuit 120, datapath block circuit 140 provides the one or more results to the identified one or more write ports of data registerfiles circuit 120. An embodiment of a data path block circuit is discussed below with reference toFIG. 2 , which illustrates an example of a data path block circuit configured to provide results to an identified write port based on a received operation signal. - The one or more results provided to the identified write ports of data register
files circuit 120 are written to specified registers within the dataregister files circuit 120 based on the register signals frominstruction decoder 160 which identify the one or more result registers within which the one or more results are to be stored, and the write port for each result register to be used for the writing. - In some embodiments, the
instruction decoder circuit 160 decodes the one or more data path instructions, the datapath block circuit 140 receives the operand data signals from data registerfiles circuit 120 and provides the one or more results to data registerfiles circuit 120, and the one or more results are written to dataregister files circuit 120 in a single CPU clock cycle. In response to an indication of a new clock cycle, theinstruction decoder circuit 160 decodes the one or more data path instructions. In addition, the datapath block circuit 140 receives the operation signals frominstruction decoder 160, receives the operand data signals from data registerfiles circuit 120, calculates the one or more results, and provides the one or more results to data registerfiles circuit 120, which stores the one or more results in the one or more registers specified in the one or more data path instructions received byinstruction decoder circuit 160. -
Instruction decoder circuit 160 is also configured to receive memory instructions frommemory circuit 50, where the memory instructions cause either data to be read fromregister files circuit 120 tomemory circuit 50 or to be written to registerfiles circuit 120 frommemory circuit 50. Each memory instruction encodes at least a memory operation (read fromregister files circuit 120 or write to register files circuit 120) to be performed, a register within dataregister files circuit 120 which is read or written, and an address inmemory 50. - Based on the received memory instructions from
memory circuit 50,instruction decoder circuit 160 is configured to generate register signals for data registerfiles circuit 120 which encode the memory instructions. - Data register
files circuit 120 is configured to receive the register signals frominstruction decoder circuit 160. Based on the received register signals frominstruction decoder circuit 160, the dataregister files circuit 120 interacts with the memory circuit according to the memory instruction, for example, by reading data from a specified register and writing the read data tomemory 50 at a specified address, or by reading data from a specified address inmemory 50 and writing the read data to a specified register. -
FIG. 2 is a schematic diagram of an embodiment of a datapath block circuit 200. Datapath block circuit 200 may be used, for example, as datapath block circuit 140 ofprocessor circuit 100 ofFIG. 1 . Embodiments ofprocessor circuit 100 may use embodiments of other data path block circuits. In addition, embodiments of datapath block circuit 200 may be used in other embodiments of processor circuits. - Data
path block circuit 200 includesfirst operand multiplexer 210,second operand multiplexer 220,result multiplexer 230, anddata path 240. - Data
path block circuit 200 is configured to receive operation signals from, for example, an instruction decoder circuit, such asinstruction decoder circuit 160 of FIG. 1. The operation signals encode a data path operation to be performed. The operation signals also identify the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data registerfiles circuit 120 ofFIG. 1 . - In the illustrated embodiment, data
path block circuit 200 is configured to receive an operation signal comprising an operation identifier OP, a result port signal Result Port, a first operand port signal OP1 Port, and a second operand port signal OP2 Port. The operation identifier OP encodes the operation to be performed by the datapath block circuit 200. The result port signal Result Port encodes the register file write port to be used for writing the result to the register file. The first operand port signal OP1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the datapath block circuit 200. The second operand port signal OP2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the datapath block circuit 200. - As understood by those of skill in the art, some operations require fewer than two operands. For those operations, operation signals include zero or one operand port signals. In addition, as understood by those of skill in the art, some operations require more than two operands. For data path block circuits supporting more than two operands for an instruction, data
path block circuit 200 includes one or more additional operand multiplexers, and for instructions requiring more than two operands, the operation signals include more than two (e.g. 3 or 4) operand port signals. - Based on the first operand port signal OP1 Port at its selector input,
first operand multiplexer 220 accesses the first read port identified by the first operand port signal OP1 Port, and provides the operand data signal thereon todata path circuit 240 as the first operand input for the operation to be performed bydata path circuit 240. - Based on the second operand port signal OP2 Port at its selector input,
second operand multiplexer 210 accesses the second read port identified by the second operand port signal OP2 Port, and provides the operand data signal thereon todata path circuit 240 as the second operand input for the operation to be performed bydata path circuit 240. -
Data path circuit 240 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals. For example,data path circuit 240 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art,data path circuit 240 may additionally comprise one or more of each of a number of other logic circuits. - Based on the operation identifier OP, which encodes the data path operation to be performed,
data path circuit 240 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the first and second operands which encode the data to be used as operands for the data path operation. - In response to the first and second operands, the selected logic circuits generate a result according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art. The generated result is provided to result
multiplexer 230. - Based on the result port signal Result Port at its selector input, because result port signal Result Port encodes the register file write port to be used for writing the result to the register file,
result multiplexer 230 provides the result to the identified write port of the register file. - The result provided to the identified write port of the register file is written to specified register within the register file.
- In alternative embodiments, some logic circuits generate more than one result. Embodiments of data path block circuits which accommodate logic circuits which generate more than one result have one or more additional result multiplexers which each receive an additional result, and provide the received result to one identified write port of the available write ports, where the identification is included in an additional result port signal in the operation signal.
- In the embodiment of
FIG. 2 , each operand multiplexer has an input for the read ports of each of the register files circuits. In alternative embodiments, one or more operand multiplexers don't have inputs a particular type of register file. For example, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to either general purpose register files or result register files. Additionally or alternatively, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to either general purpose register files or constant register files. Additionally or alternatively, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to either result register files or constant register files. In some embodiments, one or more operand multiplexers have inputs only for a particular type of register file. For example, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to general purpose register files. Additionally or alternatively, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to result register files. Additionally or alternatively, in some embodiments, all of the data inputs of one or more operand multiplexers are connected to constant register files. - In some embodiments, data path circuits use different read ports for different operands. In some embodiments, the operands for one or more operations are assigned to or are selectively connectable to a first set of read ports, and other operands for one or more operations are assigned to or are selectively connectable to a second set of read ports. In some embodiments, the first and second sets overlap. In some embodiments, the first and second sets are non-overlapping.
-
FIG. 3 is a schematic diagram of an embodiment of a datapath block circuit 300. Datapath block circuit 300 may be used, for example, as datapath block circuit 140 ofprocessor circuit 100 ofFIG. 1 . Embodiments ofprocessor circuit 100 may use embodiments of other data path block circuits. In addition, embodiments of datapath block circuit 300 may be used in other embodiments of processor circuits. - Data
path block circuit 300 includesfirst data path 340 andsecond data path 440. Datapath block circuit 300 also includesfirst operand multiplexer 310,second operand multiplexer 320, and result multiplexer 330 forfirst data path 340. Datapath block circuit 300 also includesfirst operand multiplexer 410,second operand multiplexer 420, and result multiplexer 430 forsecond data path 440. - Data
path block circuit 300 is configured to receive operation signals from, for example, an instruction decoder circuit, such asinstruction decoder circuit 160 ofFIG. 1 . The operation signals encode one or more data path operations to be performed. The operation signals also identify the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data registerfiles circuit 120 ofFIG. 1 . - In the illustrated embodiment, data
path block circuit 300 is configured to receive an operation signal comprising an operation identifier DP1 OP, a result port signal DP1 Result Port, a first operand port signal DP1 OP1 Port, a second operand port signal DP1 OP2 Port, an operation identifier DP2 OP, a result port signal DP2 Result Port, a first operand port signal DP2 OP1 Port, and a second operand port signal DP2 OP2 Port. - The operation identifier DP1 OP encodes the operation to be performed by the
first data path 340. The result port signal DP1 Result Port encodes the register file write port to be used for writing the result of the operation to be performed by thefirst data path 340 to the register file. The first operand port signal DP1 OP1 Port encodes the register file to be used for reading the first operand of the operation to be performed by thefirst data path 340. The second operand port signal DP1 OP2 Port encodes the register file to be used for reading the second operand of the operation to be performed by thefirst data path 340. - The operation identifier DP2 OP encodes the operation to be performed by the
second data path 440. The result port signal DP2 Result Port encodes the register file write port to be used for writing the result of the operation to be performed by thesecond data path 440 to the register file. The first operand port signal DP2 OP1 Port encodes the register file to be used for reading the first operand of the operation to be performed by thesecond data path 440. The second operand port signal DP2 OP2 Port encodes the register file to be used for reading the second operand of the operation to be performed by thesecond data path 440. - As understood by those of skill in the art, some operations require fewer than two operands. For those operations, operation signals include zero or one operand port signals. In addition, as understood by those of skill in the art, some operations require more than two operands. For data path block circuits supporting more than two operands for an instruction, data
path block circuit 300 includes one or more additional operand multiplexers, and for instructions requiring more than two operands, the operation signals include more than two (e.g. 3 or 4) operand port signals. - Based on the first operand port signal DP1 OP1 Port at its selector input,
first operand multiplexer 320 accesses the first read port identified by the first operand port signal DP1 OP1 Port, and provides the operand data signal thereon to firstdata path circuit 340 as the first operand input for the operation to be performed by firstdata path circuit 340. - Based on the second operand port signal DP1 OP2 Port at its selector input,
second operand multiplexer 310 accesses the second read port identified by the second operand port signal DP1 OP2 Port, and provides the operand data signal thereon to firstdata path circuit 340 as the second operand input for the operation to be performed by firstdata path circuit 340. - Based on the first operand port signal DP2 OP1 Port at its selector input,
first operand multiplexer 420 accesses the first read port identified by the first operand port signal DP2 OP1 Port, and provides the operand data signal thereon to firstdata path circuit 440 as the first operand input for the operation to be performed by firstdata path circuit 440. - Based on the second operand port signal DP2 OP2 Port at its selector input,
second operand multiplexer 410 accesses the second read port identified by the second operand port signal DP2 OP2 Port, and provides the operand data signal thereon to seconddata path circuit 440 as the second operand input for the operation to be performed by seconddata path circuit 440. - First
data path circuit 340 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals. For example, firstdata path circuit 340 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art, firstdata path circuit 340 may additionally comprise one or more of each of a number of other logic circuits. - Based on the operation identifier DP1 OP, which encodes the data path operation to be performed by the first
data path circuit 340, firstdata path circuit 340 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the first and second operands from first andsecond multiplexer circuits - In response to the first and second operands from the first and
second multiplexer circuits data path circuit 340 generate a first result according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art. The generated first result is provided to resultmultiplexer 330. - Second
data path circuit 440 comprises a number of logic circuits, each configured to receive a particular number of operands. Each of the logic circuits is also configured to perform a particular data path operation to generate one or more results based on the received operand data signals. For example, seconddata path circuit 440 may comprise one or more of each of the following logic circuits: shifters, adders, and multipliers. As understood by those of skill in the art, seconddata path circuit 440 may additionally comprise one or more of each of a number of other logic circuits. - Based on the operation identifier DP2 OP, which encodes the data path operation to be performed by the second
data path circuit 440, seconddata path circuit 440 selects one or more of the logic circuits. As a result of the selection, the selected logic circuits receive the first and second operands from first andsecond multiplexer circuits - In response to the first and second operands from the first and
second multiplexer circuits data path circuit 440 generate a second result according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art. The generated second result is provided to resultmultiplexer 430. - Based on the result port signal DP1 Result Port at its selector input, because result port signal DP1 Result Port encodes the register file write port to be used for writing the result of the data path operation performed by the first
data path circuit 340 to the register file,result multiplexer 330 provides the first result to the identified write port of the register file. Based on the result port signal DP2 Result Port at its selector input, because result port signal DP2 Result Port encodes the register file write port to be used for writing the result of the data path operation to be performed by the seconddata path circuit 440 to the register file,result multiplexer 430 provides the second result to the identified write port of the register file. - The first and second results provided to the identified write ports of the register file are written to specified registers within the register file.
- As understood by those of skill in the art, some logic circuits generate more than one result. Embodiments of data path block circuits which accommodate logic circuits which generate more than one result have one or more additional result multiplexers which each receive an additional result, and provide the received result to one identified write port of the available write ports, where the identification is included in an additional result port signal in the operation signal.
-
FIG. 4 is a flowchart diagram illustrating amethod 500 of using a data path block circuit. Themethod 500 may be performed, for example, by or withprocessor circuit 100 ofFIG. 1 . Themethod 500 may be performed, for example, by or with either of datapath block circuits 200 ofFIG. 2 and 300 ofFIG. 3 . - At 510, the data path block circuit receives an operation signal from, for example, an instruction decoder circuit, such as
instruction decoder circuit 160 ofFIG. 1 . The operation signal encodes a data path operation to be performed. The operation signal also identifies the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data registerfiles circuit 120 ofFIG. 1 . - For example, the data path block circuit may receive an operation signal comprising an operation identifier OP, a result port signal Result Port, a first operand port signal OP1 Port, and a second operand port signal OP2 Port. The operation identifier OP encodes the operation to be performed by the data path block circuit. The result port signal Result Port encodes the register file write port to be used for writing the result to the register file. The first operand port signal OP1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the data path block circuit. The second operand port signal OP2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the data path block circuit.
- At 520, with a first multiplexer, a read port identified by the first operand port signal OP1 Port is accessed and provides the operand data signal thereon to a data path circuit as the first operand input for the operation to be performed by the data path circuit.
- At 530, with a second multiplexer, a read port identified by the second operand port signal OP2 Port is accessed and provides the operand data signal thereon to a data path circuit as the second operand input for the operation to be performed by the data path circuit.
- At 540, a logic circuit of the data path circuit is selected based on the operation identifier OP, where the selected logic circuit corresponds with the function of the operation identifier OP. As a result of the selection, the selected logic circuit receives the first and second operands which encode the data to be used as operands for the data path operation of the selected logic circuit.
- At 550, the selected logic circuit generates a result based on the first and second operands according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art.
- The
method 500 may be performed by a data path block circuit having multiple data paths, such as datapath block circuit 300, which hasfirst data path 340 andsecond data path 440. For example, with reference to datapath block circuit 300,first operand multiplexer 310,second operand multiplexer 320,first data path 340, and result multiplexer 330 may or may be used to performmethod 500. In addition,first operand multiplexer 410,second operand multiplexer 420,second data path 440, and result multiplexer 430 also may or may be used to perform themethod 500. In some embodiments,first operand multiplexer 310,second operand multiplexer 320,first data path 340, and result multiplexer 330 perform or are used to perform themethod 500, whilefirst operand multiplexer 410,second operand multiplexer 420,second data path 440, and result multiplexer 430 also perform or are used to perform themethod 500, such that themethod 500 is performed for both firstdata path circuit 340 and seconddata path circuit 440 concurrently. In some embodiments, themethod 500 is performed for both firstdata path circuit 340 and seconddata path circuit 440 serially or consecutively. - In some embodiments, all of the actions discussed with reference to
FIG. 4 occur within a single calculation cycle. For example, all of the actions discussed with reference toFIG. 4 occur within a single CPU clock cycle. -
FIG. 5 is a flowchart diagram illustrating amethod 600 of using a data path block circuit. Themethod 600 may be performed, for example, by or withprocessor circuit 100 ofFIG. 1 . Themethod 600 may be performed, for example, by or with either of datapath block circuits 200 ofFIG. 2 and 300 ofFIG. 3 . - At 610, the data path block circuit receives an operation signal from, for example, an instruction decoder circuit, such as
instruction decoder circuit 160 ofFIG. 1 . The operation signal encodes a data path operation to be performed. The operation signal also identifies the read port for each operand data signal to be used for reading the operand data from, for example, a register file, such as those of data registerfiles circuit 120 ofFIG. 1 . - For example, the data path block circuit may receive an operation signal comprising an operation identifier OP, a result port signal Result Port, a first operand port signal OP1 Port, and a second operand port signal OP2 Port. The operation identifier OP encodes the operation to be performed by the data path block circuit. The result port signal Result Port encodes the register file write port to be used for writing the result to the register file. The first operand port signal OP1 Port encodes the register file to be used for reading the first operand of the operation to be performed by the data path block circuit. The second operand port signal OP2 Port encodes the register file to be used for reading the second operand of the operation to be performed by the data path block circuit.
- At 620, a logic circuit of the data path circuit is selected based on the operation identifier OP, where the selected logic circuit corresponds with the function of the operation identifier OP. As a result of the selection, the selected logic circuit receives the first and second operands which encode the data to be used as operands for the data path operation of the selected logic circuit.
- At 630, the selected logic circuit generates a result based on the first and second operands according to the logic circuitry of the selected logic circuit, as understood by those of skill in the art.
- At 640, with a multiplexer, a write port identified by the result port signal Result Port is accessed, and at 650, the result generated by the selected logic circuit is provided to the accessed write port.
- The
method 600 may be performed by a data path block circuit having multiple data paths, such as datapath block circuit 300, which hasfirst data path 340 andsecond data path 440. For example, with reference to datapath block circuit 300,first operand multiplexer 310,second operand multiplexer 320,first data path 340, and result multiplexer 330 may or may be used to performmethod 600. In addition,first operand multiplexer 410,second operand multiplexer 420,second data path 440, and result multiplexer 430 also may or may be used to perform themethod 600. In some embodiments,first operand multiplexer 310,second operand multiplexer 320,first data path 340, and result multiplexer 330 perform or are used to perform themethod 600, whilefirst operand multiplexer 410,second operand multiplexer 420,second data path 440, and result multiplexer 430 also perform or are used to perform themethod 600, such that themethod 600 is performed for both firstdata path circuit 340 and seconddata path circuit 440 concurrently. In some embodiments, themethod 600 is performed for both firstdata path circuit 340 and seconddata path circuit 440 serially or consecutively. - In some embodiments, all of the actions discussed with reference to
FIG. 5 occur within a single calculation cycle. For example, all of the actions discussed with reference toFIG. 5 occur within a single CPU clock cycle. - In the descriptions above and in the claims, phrases such as “at least one of” or “one or more of” may occur followed by a conjunctive list of elements or features. The term “and/or” may also occur in a list of two or more elements or features. Unless otherwise implicitly or explicitly contradicted by the context in which it used, such a phrase is intended to mean any of the listed elements or features individually or any of the recited elements or features in combination with any of the other recited elements or features. For example, the phrases “at least one of A and B;” “one or more of A and B;” and “A and/or B” are each intended to mean “A alone, B alone, or A and B together.” A similar interpretation is also intended for lists including three or more items. For example, the phrases “at least one of A, B, and C;” “one or more of A, B, and C;” and “A, B, and/or C” are each intended to mean “A alone, B alone, C alone, A and B together, A and C together, B and C together, or A and B and C together.” Use of the term “based on,” above and in the claims is intended to mean, “based at least in part on,” such that an unrecited feature or element is also permissible.
- The subject matter described herein can be embodied in systems, apparatus, methods, and/or articles depending on the desired configuration. The implementations set forth in the foregoing description do not represent all implementations consistent with the subject matter described herein. Instead, they are merely some examples consistent with aspects related to the described subject matter. Although a few variations have been described in detail above, other modifications or additions are possible. In particular, further features and/or variations can be provided in addition to those set forth herein. For example, the implementations described above can be directed to various combinations and subcombinations of the disclosed features and/or combinations and subcombinations of several further features disclosed above. In addition, the logic flows depicted in the accompanying figures and/or described herein do not necessarily require the particular order shown, or sequential order, to achieve desirable results. Other implementations may be within the scope of the following claims.
Claims (20)
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/941,485 US11243905B1 (en) | 2020-07-28 | 2020-07-28 | RISC processor having specialized data path for specialized registers |
CN202180003873.6A CN114008603B (en) | 2020-07-28 | 2021-06-28 | Data path block circuit and method of using the same |
PCT/CN2021/102676 WO2022022195A1 (en) | 2020-07-28 | 2021-06-28 | Risc processor having specialized datapath for specialized registers |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/941,485 US11243905B1 (en) | 2020-07-28 | 2020-07-28 | RISC processor having specialized data path for specialized registers |
Publications (2)
Publication Number | Publication Date |
---|---|
US20220035767A1 true US20220035767A1 (en) | 2022-02-03 |
US11243905B1 US11243905B1 (en) | 2022-02-08 |
Family
ID=80003348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/941,485 Active US11243905B1 (en) | 2020-07-28 | 2020-07-28 | RISC processor having specialized data path for specialized registers |
Country Status (2)
Country | Link |
---|---|
US (1) | US11243905B1 (en) |
WO (1) | WO2022022195A1 (en) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020169944A1 (en) * | 1999-02-17 | 2002-11-14 | Elbrus International | Method for prioritizing operations within a pipelined microprocessor based upon required results |
US6629232B1 (en) * | 1999-11-05 | 2003-09-30 | Intel Corporation | Copied register files for data processors having many execution units |
US6704858B1 (en) * | 1999-06-09 | 2004-03-09 | Nec Electronics Corporation | Information processor and method for switching those register files |
US20070063745A1 (en) * | 2003-04-16 | 2007-03-22 | Koninklijke Philips Electronics N.V. | Support for conditional operations in time-stationary processors |
US7206925B1 (en) * | 2000-08-18 | 2007-04-17 | Sun Microsystems, Inc. | Backing Register File for processors |
US7246218B2 (en) * | 2004-11-01 | 2007-07-17 | Via Technologies, Inc. | Systems for increasing register addressing space in instruction-width limited processors |
US20070239970A1 (en) * | 2006-04-06 | 2007-10-11 | I-Tao Liao | Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File |
US20080133893A1 (en) * | 2005-08-29 | 2008-06-05 | Centaurus Data Llc | Hierarchical register file |
US20080270750A1 (en) * | 2006-10-06 | 2008-10-30 | Brucek Khailany | Instruction-parallel processor with zero-performance-overhead operand copy |
US7490208B1 (en) * | 2004-10-05 | 2009-02-10 | Nvidia Corporation | Architecture for compact multi-ported register file |
US20140025927A1 (en) * | 2012-07-18 | 2014-01-23 | International Business Machines Corporation | Reducing register read ports for register pairs |
US20140122841A1 (en) * | 2012-10-31 | 2014-05-01 | International Business Machines Corporation | Efficient usage of a register file mapper and first-level data register file |
US20170060593A1 (en) * | 2015-09-02 | 2017-03-02 | Qualcomm Incorporated | Hierarchical register file system |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6343356B1 (en) | 1998-10-09 | 2002-01-29 | Bops, Inc. | Methods and apparatus for dynamic instruction controlled reconfiguration register file with extended precision |
CN100378653C (en) | 2005-01-20 | 2008-04-02 | 西安电子科技大学 | Dual ALU RISC 8-bit Microcontroller |
CN101403963A (en) | 2008-11-13 | 2009-04-08 | 戴葵 | Asynchronous data triggering micro-processor architecture |
US10110233B2 (en) | 2016-06-23 | 2018-10-23 | Altera Corporation | Methods for specifying processor architectures for programmable integrated circuits |
-
2020
- 2020-07-28 US US16/941,485 patent/US11243905B1/en active Active
-
2021
- 2021-06-28 WO PCT/CN2021/102676 patent/WO2022022195A1/en active Application Filing
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020169944A1 (en) * | 1999-02-17 | 2002-11-14 | Elbrus International | Method for prioritizing operations within a pipelined microprocessor based upon required results |
US6704858B1 (en) * | 1999-06-09 | 2004-03-09 | Nec Electronics Corporation | Information processor and method for switching those register files |
US6629232B1 (en) * | 1999-11-05 | 2003-09-30 | Intel Corporation | Copied register files for data processors having many execution units |
US7206925B1 (en) * | 2000-08-18 | 2007-04-17 | Sun Microsystems, Inc. | Backing Register File for processors |
US20070063745A1 (en) * | 2003-04-16 | 2007-03-22 | Koninklijke Philips Electronics N.V. | Support for conditional operations in time-stationary processors |
US7490208B1 (en) * | 2004-10-05 | 2009-02-10 | Nvidia Corporation | Architecture for compact multi-ported register file |
US7246218B2 (en) * | 2004-11-01 | 2007-07-17 | Via Technologies, Inc. | Systems for increasing register addressing space in instruction-width limited processors |
US20080133893A1 (en) * | 2005-08-29 | 2008-06-05 | Centaurus Data Llc | Hierarchical register file |
US20070239970A1 (en) * | 2006-04-06 | 2007-10-11 | I-Tao Liao | Apparatus For Cooperative Sharing Of Operand Access Port Of A Banked Register File |
US20080270750A1 (en) * | 2006-10-06 | 2008-10-30 | Brucek Khailany | Instruction-parallel processor with zero-performance-overhead operand copy |
US20140025927A1 (en) * | 2012-07-18 | 2014-01-23 | International Business Machines Corporation | Reducing register read ports for register pairs |
US20140122841A1 (en) * | 2012-10-31 | 2014-05-01 | International Business Machines Corporation | Efficient usage of a register file mapper and first-level data register file |
US20170060593A1 (en) * | 2015-09-02 | 2017-03-02 | Qualcomm Incorporated | Hierarchical register file system |
Non-Patent Citations (1)
Title |
---|
Agarwal, P. R., Hardware Synthesis from C with Multiple Register files in Data path, 2003, Dept. of Computer Science and Engr. Indian Institute of Technology Delhi, 114 pages. (Year: 2003) * |
Also Published As
Publication number | Publication date |
---|---|
WO2022022195A1 (en) | 2022-02-03 |
US11243905B1 (en) | 2022-02-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100227276B1 (en) | Method and processor using single cycle micro instruction | |
EP0428326A1 (en) | Processor array system | |
EP1267256A2 (en) | Conditional execution of instructions with multiple destinations | |
KR19980069856A (en) | Scalable Width Vector Processor Architecture | |
US4388685A (en) | Central processor with apparatus for extended virtual addressing | |
US7308559B2 (en) | Digital signal processor with cascaded SIMD organization | |
US8572355B2 (en) | Support for non-local returns in parallel thread SIMD engine | |
CN101194228B (en) | Performance microprocessor and device of fast return of microcontroller subroutine | |
US20210117375A1 (en) | Vector Processor with Vector First and Multiple Lane Configuration | |
US7805590B2 (en) | Coprocessor receiving target address to process a function and to send data transfer instructions to main processor for execution to preserve cache coherence | |
JP5052713B2 (en) | Vector data processor with conditional instructions | |
US7925862B2 (en) | Coprocessor forwarding load and store instructions with displacement to main processor for cache coherent execution when program counter value falls within predetermined ranges | |
US11243905B1 (en) | RISC processor having specialized data path for specialized registers | |
US11126588B1 (en) | RISC processor having specialized registers | |
US20070300042A1 (en) | Method and apparatus for interfacing a processor and coprocessor | |
US8108658B2 (en) | Data processing circuit wherein functional units share read ports | |
US8200945B2 (en) | Vector unit in a processor enabled to replicate data on a first portion of a data bus to primary and secondary registers | |
US7793072B2 (en) | Vector execution unit to process a vector instruction by executing a first operation on a first set of operands and a second operation on a second set of operands | |
US6408380B1 (en) | Execution of an instruction to load two independently selected registers in a single cycle | |
CN114008603B (en) | Data path block circuit and method of using the same | |
JP2003241960A (en) | Processor, operation instruction processing method and operation control method in the processor | |
US20090037702A1 (en) | Processor and data load method using the same | |
US7085973B1 (en) | Testing address lines of a memory controller | |
US20040128475A1 (en) | Widely accessible processor register file and method for use | |
EP1050800A1 (en) | A pipelined execution unit |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: GOODIX TECHNOLOGY INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:HEO, JAEHOON;REEL/FRAME:053334/0298 Effective date: 20200726 |
|
FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: SHENZHEN GOODIX TECHNOLOGY CO., LTD., CHINA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:GOODIX TECHNOLOGY INC.;REEL/FRAME:055011/0720 Effective date: 20210104 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |