WO2007015258A1 - A microprocessor with a configurable control unit - Google Patents

A microprocessor with a configurable control unit Download PDF

Info

Publication number
WO2007015258A1
WO2007015258A1 PCT/IN2005/000261 IN2005000261W WO2007015258A1 WO 2007015258 A1 WO2007015258 A1 WO 2007015258A1 IN 2005000261 W IN2005000261 W IN 2005000261W WO 2007015258 A1 WO2007015258 A1 WO 2007015258A1
Authority
WO
WIPO (PCT)
Prior art keywords
component
instruction
microprocessor
control
cycle
Prior art date
Application number
PCT/IN2005/000261
Other languages
French (fr)
Inventor
Kumar Bulusu Gopi
Desikan Murali
Original Assignee
Kumar Bulusu Gopi
Desikan Murali
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Kumar Bulusu Gopi, Desikan Murali filed Critical Kumar Bulusu Gopi
Priority to PCT/IN2005/000261 priority Critical patent/WO2007015258A1/en
Publication of WO2007015258A1 publication Critical patent/WO2007015258A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/3001Arithmetic instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/32Address formation of the next instruction, e.g. by incrementing the instruction counter
    • G06F9/322Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address
    • G06F9/325Address formation of the next instruction, e.g. by incrementing the instruction counter for non-sequential address for loops, e.g. loop detection or loop counter

Definitions

  • the present invention relates to the field of microprocessors and more specifically to configurable microprocessors. More particularly the present invention relates to a microprocessor with a configurable control unit .
  • a typical microprocessor includes data paths containing registers and one or more execution units and a control path to coordinate the program execution.
  • the control unit is responsible for fetching program instructions from memory, decoding
  • control unit of a microprocessor depends on the number of execution paths, number of instructions and the number of stages in execution of an instruction.
  • One way to design a control unit involves representing the control logic entirely though the interconnections between the various components of the logic
  • a control unit designed using such a method is known as a hardwired control unit.
  • the logic circuit is responsible for generating appropriate control signals for each processor cycle based on the input instruction and the current state. For each cycle one basic operation is performed as specified by the
  • a micro-programmed control unit stores the control signals as microinstructions in a memory area within the control unit. For each processor instruction, a sequence of microinstructions will be fetched from this memory and corresponding control signals will be activated to perform the required operations.
  • a micro-programmed control unit can represent more complex operations and can be modified by updating the micro-program memory with updated microinstructions. However, it is generally slower than a hardwired control unit.
  • microprocessor is developed. To overcome this limitation, the present invention
  • control unit which can be configured using the control information specified in the program instructions themselves.
  • the present invention relates to a microprocessor having a configurable control
  • the instructions of the processor according to the invention include control information associated with the operation code (opcode) and the operands. This control information is provided as clock cycle count and cycle type attributes.
  • instruction decoder of the processor reads the instruction and decodes it. The control
  • cycle type attribute could have one of the values "read”, "execute” or "write”. If cycle type, of the selected component is "read”, then the corresponding operand is read from memory or register. If the cycle type of the component is "write”, then the operand corresponding to the component is written to memory or register file. If the cycle type of the component is "execute”, then the operation specified by the
  • control unit decrements the cycle counts of all components of the current instruction. This process is repeated till the instruction has no component with cycle count zero, which means that the instruction execution is complete and the next instruction is fetched from memory.
  • FIG. 1 is a block diagram of a microprocessor with a configurable control unit implemented in accordance with an embodiment of the invention.
  • FIG. 2 is a block diagram of the configurable control unit implemented in accordance with an embodiment of the invention.
  • FIG. 3 is a diagram of the instruction format of a microprocessor implemented in accordance with an embodiment of the invention.
  • FIG. 4 is a flow diagram of a method describing the steps involved in the execution of instructions on a microprocessor implemented in accordance with an
  • FIG. 1 shows a particular embodiment of the microprocessor with configurable control unit according to the present invention.
  • the microprocessor 100 according to the described embodiment includes an instruction buffer 101 in which the instructions
  • an instruction decoder 102 which decodes the instruction
  • a configurable control unit 103 which controls instruction execution
  • one or more functional units 104 one or more functional units 104
  • a register file 105 for storing data
  • a memory interface 106 which interfaces with the system memory.
  • FIG. 2 shows the configurable control unit 103 in detail.
  • the control unit 103 contains a component selector 201, which selects a particular component (operand or operation code) of the decoded instruction for execution.
  • the control logic 202 is the control logic 202 .
  • control signals to read or write operands or to perform an operation. This is done based on the cycle type attribute specified for the component selected by the
  • FIG. 3 shows the format of instructions for the present microprocessor.
  • Each instructions includes an operation code (opcode) 200 which specifies the operation performed by the instruction, opcode control attributes 201 which is a set of values for cycle count and cycle type for the opcode and one or more operands 202 and operand
  • control attributes 203 which again is a list of values for cycle count and cycle type for the operand.
  • the cycle count is a numerical value, which specifies when a particular component of the instruction should be considered for execution. A component with cycle count of zero is considered first for execution.
  • the cycle type attribute of a component of an instruction can take one of three values -viz. read,
  • the read cycle type is used for input operands, the write cycle type for output operands and the execute cycle type for operations.
  • FIG. 3 only shows a high-level format of the instructions for the microprocessor according to the present invention. A person skilled in the art can implement the actual representation of the instructions or the present
  • microprocessor in many different ways.
  • FIG. 4 shows the steps of a method according to the preset invention for executing instructions of the microprocessor according to the invention.
  • the method starts at block 400 where an instruction is fetched from memory for execution and
  • the instruction is taken from the instruction buffer 101 and
  • the component selector 201 of the configurable control unit 103 selects the component 205 of the instruction with cycle count zero.
  • the cycle type associated with the instruction component 205 is
  • control logic 202 If it is found to be a read cycle, then at block 405, the control logic 202 generates read control signals 203 to read (fetch) the operand
  • control proceeds to block 410. If, at block 404, the control logic 202 finds that the
  • cycle type is not "read", then control goes to block 406 instead of 405.
  • control logic 202 checks if the cycle type of the instruction component 205 is execute. If it is, then control passes to block 407, where the control
  • control proceeds to block 410. If, at block 406, the control logic 202 finds that the cycle type is not "execute”, then control goes to block 408 instead of 407.
  • control logic 202 checks if the cycle type of the instruction
  • control goes to block 410.
  • control logic 202 decrements the cycle counts of all the components of the instruction by one and then control passes back to block 401 to select another component of the instruction for execution.
  • ADD is the operation code representing addition
  • Rl and R2 are the input operands
  • R3 is the output operand for holding the result of the addition.
  • the above instruction is expanded by attaching attributes to each component of the instruction. This can be represented
  • the instruction is fetched from memory and placed in instruction buffer 101. Then the instruction decoder 102 decodes it.
  • the component selector 201 of the control unit 103 obtains the decoded instruction and selects the component with cycle count zero. In the above case, the selected component will be the operand Rl.
  • the control logic 202 then checks the cycle type of this component and generates read
  • control signals 203 This causes the value to be read from register Rl in the register file 105. Then the control logic decrements the cycle counts of all the components of the instruction. At this stage, the attribute values for the instruction will be as shown below:

Abstract

The invention relates to a microprocessor with a configurable control unit which is dynamically configurable. The information about when to read the operands, when to perform operations and when to write results are specified in the instructions of the microprocessor as control attributes. The control unit executes these instructions based on these attributes. This allows for easy configuration of the microprocessor and simplifies microprocessor design.

Description

A MICROPROCESSOR WITH A CONFIGURABLE CONTROL UNIT
FIELD OF THE INVENTION
The present invention relates to the field of microprocessors and more specifically to configurable microprocessors. More particularly the present invention relates to a microprocessor with a configurable control unit .
BACKGROUND OF THE INVENTION
A typical microprocessor includes data paths containing registers and one or more execution units and a control path to coordinate the program execution. The control unit is responsible for fetching program instructions from memory, decoding
the instructions, fetching data required for the operation from memory or registers,
generating control signals to perform required operation and then writing the result to memory or register.
The complexity of the control unit of a microprocessor depends on the number of execution paths, number of instructions and the number of stages in execution of an instruction. One way to design a control unit involves representing the control logic entirely though the interconnections between the various components of the logic
circuitry. A control unit designed using such a method is known as a hardwired control unit. In this type of control unit, the logic circuit is responsible for generating appropriate control signals for each processor cycle based on the input instruction and the current state. For each cycle one basic operation is performed as specified by the
control signals.
In contrast to a hardwired control unit, a micro-programmed control unit stores the control signals as microinstructions in a memory area within the control unit. For each processor instruction, a sequence of microinstructions will be fetched from this memory and corresponding control signals will be activated to perform the required operations. A micro-programmed control unit can represent more complex operations and can be modified by updating the micro-program memory with updated microinstructions. However, it is generally slower than a hardwired control unit.
In the existing prior art, it is not possible to configure the control logic once the
microprocessor is developed. To overcome this limitation, the present invention
describes a control unit, which can be configured using the control information specified in the program instructions themselves.
SUMMARY OF THE INVENTION
The present invention relates to a microprocessor having a configurable control
unit . It describes a microprocessor with a control unit that can be configured dynamically. The machine instructions themselves provide the information about
when operands have to be fetched, when the execution should take place and when
result of the operation should be written back to register or primary memory. This greatly simplifies the control logic of the processor.
The instructions of the processor according to the invention include control information associated with the operation code (opcode) and the operands. This control information is provided as clock cycle count and cycle type attributes. The
instruction decoder of the processor reads the instruction and decodes it. The control
unit then selects the component (opcode or operand) of the instruction with cycle count as zero and performs the associated operation as specified by the cycle type attribute. The cycle type attribute could have one of the values "read", "execute" or "write". If cycle type, of the selected component is "read", then the corresponding operand is read from memory or register. If the cycle type of the component is "write", then the operand corresponding to the component is written to memory or register file. If the cycle type of the component is "execute", then the operation specified by the
component is performed. Once a read, write or execute operation is performed, the
control unit decrements the cycle counts of all components of the current instruction. This process is repeated till the instruction has no component with cycle count zero, which means that the instruction execution is complete and the next instruction is fetched from memory.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram of a microprocessor with a configurable control unit implemented in accordance with an embodiment of the invention.
FIG. 2 is a block diagram of the configurable control unit implemented in accordance with an embodiment of the invention.
FIG. 3 is a diagram of the instruction format of a microprocessor implemented in accordance with an embodiment of the invention.
FIG. 4 is a flow diagram of a method describing the steps involved in the execution of instructions on a microprocessor implemented in accordance with an
embodiment of the invention. DESCRIPTION OF THE PREFERRED EMBODIMIENT
FIG. 1 shows a particular embodiment of the microprocessor with configurable control unit according to the present invention. The microprocessor 100 according to the described embodiment includes an instruction buffer 101 in which the instructions
fetched from memory is placed, an instruction decoder 102, which decodes the instruction, a configurable control unit 103, which controls instruction execution, one or more functional units 104, a register file 105 for storing data and a memory interface 106, which interfaces with the system memory.
FIG. 2 shows the configurable control unit 103 in detail. The control unit 103 contains a component selector 201, which selects a particular component (operand or operation code) of the decoded instruction for execution. The control logic 202
generates control signals to read or write operands or to perform an operation. This is done based on the cycle type attribute specified for the component selected by the
component selector.
FIG. 3 shows the format of instructions for the present microprocessor. Each instructions includes an operation code (opcode) 200 which specifies the operation performed by the instruction, opcode control attributes 201 which is a set of values for cycle count and cycle type for the opcode and one or more operands 202 and operand
control attributes 203 which again is a list of values for cycle count and cycle type for the operand. The cycle count is a numerical value, which specifies when a particular component of the instruction should be considered for execution. A component with cycle count of zero is considered first for execution. The cycle counts for each
component of an instruction are assigned in the order in which the components should be executed. The ordering should be in such a way that operands are first fetched from register or memory. So3 input operands (operands that should be read from register or memory) of the instruction should have lower cycle counts. Then the operation specified by the instruction should be performed. So the opcode component should get a cycle count that is higher than that the input operands. Finally, the higher values of cycle count are assigned to output operand (operands which store the result of the operation or operands which are updated as a side-effect of the operation). The cycle type attribute of a component of an instruction can take one of three values -viz. read,
write and execute. The read cycle type is used for input operands, the write cycle type for output operands and the execute cycle type for operations. The instructions with
the corresponding attributes are either generated by a compiler tool which specifies the cycle attributes for each component of the instruction or they could be written manually be a programmer. FIG. 3 only shows a high-level format of the instructions for the microprocessor according to the present invention. A person skilled in the art can implement the actual representation of the instructions or the present
microprocessor in many different ways.
FIG. 4 shows the steps of a method according to the preset invention for executing instructions of the microprocessor according to the invention. The method starts at block 400 where an instruction is fetched from memory for execution and
placed in the inst ruction buffer 101.
At block 401 the instruction is taken from the instruction buffer 101 and
decoded in the instruction decoder 102. Here the type of operation and the operands
are identified. At block 402 the component selector 201 of the configurable control unit 103 selects the component 205 of the instruction with cycle count zero.
At block 403 it is checked if any component with cycle count zero is available. If no such component is found, then processing returns to block 401. If a component with cycle count zero is found at block 403, then control flows to block 404.
At block 404, the cycle type associated with the instruction component 205 is
checked by the control logic 202. If it is found to be a read cycle, then at block 405, the control logic 202 generates read control signals 203 to read (fetch) the operand
from memory or from the register file 105 as specified in the instruction. From block 405 control proceeds to block 410. If, at block 404, the control logic 202 finds that the
cycle type is not "read", then control goes to block 406 instead of 405.
At block 406, the control logic 202 checks if the cycle type of the instruction component 205 is execute. If it is, then control passes to block 407, where the control
logic 202 generates execute control signals 204 to execute the operation specified by the opcode of the instruction on an appropriate functional unit 104. After block 407
control proceeds to block 410. If, at block 406, the control logic 202 finds that the cycle type is not "execute", then control goes to block 408 instead of 407.
At block 408, the control logic 202 checks if the cycle type of the instruction
component 205 is "write". If it is, then control flows to block 409, where the control
logic generates write control signals 203 to write data to memory or register file 105 as it is dictated by the operand. From block 409 and also from block 408 if cycle type
is not "write", control goes to block 410.
At block 410, the control logic 202 decrements the cycle counts of all the components of the instruction by one and then control passes back to block 401 to select another component of the instruction for execution.
The method according to FIG. 4 is illustrated with an example below.
Consider an instruction that adds the contents of two registers and places the result in another register. This is a basic instruction supported by any microprocessor. This instruction can be represented in assembly code as follows:
ADD Rl, R2, R3
Here, ADD is the operation code representing addition, Rl and R2 are the input operands and R3 is the output operand for holding the result of the addition. For the
microprocessor according to the present invention, the above instruction is expanded by attaching attributes to each component of the instruction. This can be represented
as follows:
ADD {cycle count=2, cycle type=execute} Rl {cycle count=0, cycle type=read}, R2 {cycle count=l, cycle type=read},
R3 {cycle count=3, cycle type=write}
The cycle count and cycle type attributes attached to each component of the
instruction is shown within braces {}.
The instruction is fetched from memory and placed in instruction buffer 101. Then the instruction decoder 102 decodes it. The component selector 201 of the control unit 103 obtains the decoded instruction and selects the component with cycle count zero. In the above case, the selected component will be the operand Rl. The control logic 202 then checks the cycle type of this component and generates read
control signals 203. This causes the value to be read from register Rl in the register file 105. Then the control logic decrements the cycle counts of all the components of the instruction. At this stage, the attribute values for the instruction will be as shown below:
ADD {cycle count=l, cycle type=execute}
RI {cycle count=-I, cycle type=read}, R2 {cycle count=O, cycle type=read}, R3
{cycle count=2, cycle type— write}
The above process is repeated and now R2 is selected and its value is read from register file 105. Again, the cycle counts of all components are decremented by one to obtain the following state:
ADD {cycle count=O, cycle type=execute}
RI {cycle count=-2, cycle type=read}, R2 {cycle count=-I, cycle type=read}5 R3
{cycle count= I, cycle type=write}
Now, the operation ADD has cycle count zero and this is selected by the
component selector 201 and executed. During the next cycle, the operand R3 will have cycle count zero and the result of the addition will be written to R3 in register file 105. After this stage, no component of the instruction will have a cycle count of zero. So5 the next instruction is felched from memory and this process is repeated. The above description and diagrams describe the invention with respect to certain preferred embodiments. It will be understood that various modifications are possible to the embodiments without deviating from the broader scope of the invention.
Accordingly, the specification and drawings should be considered illustrative rather
than restricting the invention to a particular embodiment.

Claims

We Claim:
1. A microprocessor (100) with a configurable control unit (103) comprising : a register file (105) containing a plurality of registers for storing data; a plurality of functional units (104) for executing instructions of the microprocessor
(100);
an instruction decoder (102) for decoding the instructions fetched from memory of the microprocessor(lOO);
an instruction buffer (101) for placing the instructions which are fetched from the memory; and
a memory interface (106) for reading and writing instructions and data to and/or from the memory; wherein said configurable control unit comprises a component selector (201) and
control logic (202) and is configured by control attributes provided in the instructions of the microprocessor.
2. The microprocessor as claimed in claim 1 wherein a compiler is provided for generating control attributes for each component of the instructions of the
microprocessor (100).
3. The microprocessor as claimed in claim 1 wherein the component selector (201) is provided for selecting a component of a decoded instruction for execution based on the control attributes corresponding to said component; and the control logic
is provided for generating appropriate control signals for performing operations based on the control attributes corresponding to the component of the instruction selected by said component selector (201).
4. The microprocessor as claimed in claim 1 wherein the control attributes comprise cycle count and cycle type for each component of the instruction.
5. A method for controlling instruction execution on a microprocessor having a configurable control unit , said configurable control unit being based on control attributes of cycle count and cycle type corresponding to components of an instruction of the microprocessor, said method comprising the steps of:
(a) fetching an instruction from memory;
(b) decoding the fetched instruction;
(c) selecting a component of the instruction having cycle count control attribute as zero value by a component selector ;
(d) repeating step (a) if no component having a cycle count of value zero is located in step (c);
(e) generating read control signals to read operands specified by the component selected in step (c) from memory or register file when the cycle type attribute of said component is "read";
(f) generating execute control signals to execute the operation specified by the component selected in step ( c) when the cycle type attribute of said
component is "execute";
(g) generating write control signals to write operands specified by the component selected in step (c) into memory or register file when the. cycle type attribute of said component is "write"; (h) decrementing the cycle count control attributes of all components of the instruction by a value of one; and (i) repeating step (c ).
PCT/IN2005/000261 2005-08-04 2005-08-04 A microprocessor with a configurable control unit WO2007015258A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/IN2005/000261 WO2007015258A1 (en) 2005-08-04 2005-08-04 A microprocessor with a configurable control unit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/IN2005/000261 WO2007015258A1 (en) 2005-08-04 2005-08-04 A microprocessor with a configurable control unit

Publications (1)

Publication Number Publication Date
WO2007015258A1 true WO2007015258A1 (en) 2007-02-08

Family

ID=37708568

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/IN2005/000261 WO2007015258A1 (en) 2005-08-04 2005-08-04 A microprocessor with a configurable control unit

Country Status (1)

Country Link
WO (1) WO2007015258A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4633390A (en) * 1980-04-25 1986-12-30 Tokyo Shibaura Denki Kabushiki Kaisha Microprogram control system
US4714991A (en) * 1984-02-21 1987-12-22 International Computers Limited Microprogram control apparatus having variable mapping between microinstruction control bits and generated control signals
US6026490A (en) * 1997-08-01 2000-02-15 Motorola, Inc. Configurable cryptographic processing engine and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4633390A (en) * 1980-04-25 1986-12-30 Tokyo Shibaura Denki Kabushiki Kaisha Microprogram control system
US4714991A (en) * 1984-02-21 1987-12-22 International Computers Limited Microprogram control apparatus having variable mapping between microinstruction control bits and generated control signals
US6026490A (en) * 1997-08-01 2000-02-15 Motorola, Inc. Configurable cryptographic processing engine and method

Similar Documents

Publication Publication Date Title
JP3592230B2 (en) Data processing device
US6405302B1 (en) Microcomputer
CN108139908B (en) Move prefix instructions
US5574942A (en) Hybrid execution unit for complex microprocessor
US8024548B2 (en) Integrated circuit microprocessor that constructs, at run time, integrated reconfigurable logic into persistent finite state machines from pre-compiled machine code instruction sequences
CN103098020A (en) Mapping between registers used by multiple instruction sets
JPH0810428B2 (en) Data processing device
US9547493B2 (en) Self-timed user-extension instructions for a processing device
WO2012136975A1 (en) A data processing apparatus and method for performing vector operations
JP2011086298A (en) Program flow control
KR100995269B1 (en) Processor apparatus and complex condition processing method
JPH1165839A (en) Instruction control mechanism of processor
JP2005508554A (en) Method and apparatus for calculating and processing data using data manipulation
EP3329361B1 (en) Vector operand bitsize control
JP3727395B2 (en) Microcomputer
EP0447101A2 (en) Processor with data format-independent instructions
WO2007015258A1 (en) A microprocessor with a configurable control unit
JP3841820B2 (en) Microcomputer
JP3958239B2 (en) Microcontroller
JPH03201030A (en) Command decording device
JP3164915B2 (en) Data processing device and data processing method
JPH07129399A (en) Microcomputer executing multi-function instruction by use of instruction attribute register
JP3472504B2 (en) Command decoding method, command decoding device and data processing device
JPH0876996A (en) Programmable controller
Navabi et al. Computer Architecture

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 1096/CHENP/2008

Country of ref document: IN

122 Ep: pct application non-entry in european phase

Ref document number: 05788451

Country of ref document: EP

Kind code of ref document: A1