Control Unit
Control Unit¶
Overview¶
The Control Unit is a core component of the CPU that decodes instructions and coordinates all components within the CPU by generating appropriate control signals. In this lesson, we'll learn about the role of the control unit, two implementation approaches (hardwired and microprogrammed control), and the structure of microinstructions.
Difficulty: βββ
Prerequisites: CPU Architecture Basics, Logic Circuits, State Machines
Table of Contents¶
- Role of the Control Unit
- Hardwired Control
- Microprogrammed Control
- Control Signal Generation
- Microinstructions
- Practice Problems
1. Role of the Control Unit¶
1.1 Basic Functions of the Control Unit¶
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Role of Control Unit β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Inputs β β
β β β β
β β βββββββββββββββ βββββββββββββββ βββββββββββββββ β β
β β βInstruction β β Clock β β Status β β β
β β β IR (Opcode,β β β β Signals β β β
β β β Funct) β β β β (Flags, β β β
β β ββββββββ¬βββββββ ββββββββ¬βββββββ β Ready) β β β
β βββββββββββββΌβββββββββββββββββββΌβββββββββββββββββββ¬ββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Control Unit β β
β β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Control Logic / Microprogram β β β
β β ββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Outputs - Control Signals β β
β β β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββββββββββ β β
β β β RegWriteβ β ALUOp β β MemRead β β MemWrite β β β
β β β ALUSrc β β Branch β β MemtoRegβ β PCSrc β β β
β β βββββββββββ βββββββββββ βββββββββββ βββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1.2 Main Tasks of the Control Unit¶
| Task | Description |
|---|---|
| Instruction Decoding | Analyze opcode and function fields in IR to identify instruction type |
| Timing Generation | Determine execution sequence and timing for each operation |
| Control Signal Generation | Output signals to control each component in the datapath |
| State Management | Track current execution state and determine next state |
| Exception Handling | Detect and handle exceptional situations like interrupts and errors |
1.3 Control Signals and Datapath¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Relationship between Control Signals and Datapath β
β β
β ββββββββββββββββββ β
β β Control Unit β β
β βββββββββ¬βββββββββ β
β β β
β ββββββββββββββββββββββββΌβββββββββββββββββββββββ β
β β β β β
β βΌ βΌ βΌ β
β βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ β
β βRegister Control β β ALU Control β β Memory Control β β
β β β β β β β β
β β - RegWrite β β - ALUOp β β - MemRead β β
β β - RegDst β β - ALUSrc β β - MemWrite β β
β ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ ββββββββββ¬βββββββββ β
β β β β β
β βΌ βΌ βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Datapath β β
β β β β
β β ββββββββββββ ββββββββββββ ββββββββββββββββββββ β β
β β β Register ββββββΊβ ALU ββββββΊβ Memory β β β
β β β File β β β β β β β
β β ββββββββββββ ββββββββββββ ββββββββββββββββββββ β β
β β β² β β β
β β βββββββββββββββββββββββββββββββββββββββ β β
β β (Write Back) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2. Hardwired Control¶
2.1 Hardwired Control Concept¶
Hardwired control implements control logic directly using combinational and sequential logic circuits.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Hardwired Control Unit β
β β
β IR [31:26] βββββββββββββββββββββββββββββββββββββββββββ β
β (Opcode) βββββββΊβ β β
β β Combinational Logic β β
β IR [5:0] β β β
β (Funct) βββββββΊβ ββββΊ Control Signals
β β - Decoders β β
β Status Flags β - Logic Gates (AND, OR) β β
β (Flags) βββββββΊβ - Multiplexers β β
β βββββββββββββββββββββββββββββββββββββββββββ β
β β² β
β β β
β βββββββββββββββ΄ββββββββββββββ β
β β β β
β βββββββββββββββββββ΄ββββββββββββββββββββββββββββ΄ββββββββββββ β
β β Timing/Sequencer β β
β β (State Registers, Counters, Decoders) β β
β β β β
β β ββββββββββ ββββββββββ ββββββββββ β β
β β β State βββββΊβ State βββββΊβ Timing β β β
β β βRegisterβ βDecoder β β Signalsβ β β
β β ββββββββββ ββββββββββ ββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β² β
β Clock βββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2.2 MIPS Single-Cycle Control Unit¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MIPS Single-Cycle Control (Simplified) β
β β
β Opcode [5:0] β
β β β
β βΌ β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Main Decoder β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€ β
β β Opcode β RegDst β ALUSrc β MemtoReg β RegWrite β ... β β
β ββββββββββββΌβββββββββΌβββββββββΌβββββββββββΌβββββββββββΌβββββββββ€ β
β β R-type β 1 β 0 β 0 β 1 β β β
β β (000000) β β β β β β β
β ββββββββββββΌβββββββββΌβββββββββΌβββββββββββΌβββββββββββΌβββββββββ€ β
β β lw β 0 β 1 β 1 β 1 β β β
β β (100011) β β β β β β β
β ββββββββββββΌβββββββββΌβββββββββΌβββββββββββΌβββββββββββΌβββββββββ€ β
β β sw β x β 1 β x β 0 β β β
β β (101011) β β β β β β β
β ββββββββββββΌβββββββββΌβββββββββΌβββββββββββΌβββββββββββΌβββββββββ€ β
β β beq β x β 0 β x β 0 β β β
β β (000100) β β β β β β β
β ββββββββββββ΄βββββββββ΄βββββββββ΄βββββββββββ΄βββββββββββ΄βββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2.3 ALU Control Unit¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ALU Control Unit β
β β
β ALUOp (2-bit) Funct (6-bit) β
β β β β
β β β β
β βΌ βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββ β
β β ALU Control Unit β β
β β β β
β β ββββββββββ¬βββββββββ¬βββββββββββββββββ β β
β β β ALUOp β Funct β ALU Operation β β β
β β ββββββββββΌβββββββββΌβββββββββββββββββ€ β β
β β β 00 βxxxxxx β Add (lw/sw) β β β
β β β 01 βxxxxxx β Sub (beq) β β β
β β β 10 β100000 β Add β β β
β β β 10 β100010 β Sub β β β
β β β 10 β100100 β And β β β
β β β 10 β100101 β Or β β β
β β β 10 β101010 β Slt β β β
β β ββββββββββ΄βββββββββ΄βββββββββββββββββ β β
β ββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β ALU Control (4-bit) β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β ALU Control β Operation β β β
β ββββββββββββββββΌβββββββββββββββββββββ€ β β
β β 0000 β AND β β β
β β 0001 β OR β β β
β β 0010 β Add β β β
β β 0110 β Sub β β β
β β 0111 β Slt β β β
β β 1100 β NOR β β β
β ββββββββββββββββ΄βββββββββββββββββββββ β β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2.4 Multi-Cycle Hardwired Control¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Multi-Cycle Control: Finite State Machine (FSM) β
β β
β ββββββββββββ β
β βββββΊβ State 0 βββββββββββββββββββ β
β β β (IF) β β β
β β ββββββ¬ββββββ β β
β β β β β
β β βΌ β β
β β ββββββββββββ β β
β β β State 1 β β β
β β β (ID) β β β
β β ββββββ¬ββββββ β β
β β β β β
β ββββββββββ΄ββββββββββΌββββββββββ¬ββββββββββββββ€ β
β β β β β β
β βΌ βΌ βΌ β β
β ββββββββββββ ββββββββββββ ββββββββββββ β β
β β State 2 β β State 6 β β State 8 β β β
β β (MemAddr)β β (R-EX) β β (BEQ) ββββββ β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββββββββ β
β β β β
β ββββββ΄βββββ β β
β β β β β
β βΌ βΌ βΌ β
β ββββββββββββ ββββββββββββ ββββββββββββ β
β β State 3 β β State 5 β β State 7 β β
β β (MemRead)β β(MemWrite)β β (R-WB) β β
β ββββββ¬ββββββ ββββββ¬ββββββ ββββββ¬ββββββ β
β β β β β
β βΌ β β β
β ββββββββββββ β β β
β β State 4 β β β β
β β (LW-WB) β β β β
β ββββββ¬ββββββ β β β
β β β β β
β ββββββββββββββ΄βββββββββββββ΄βββββββββββββββββββββββΊ(State 0) β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
2.5 Control Signals by State¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Control Signal Table by State β
βββββββββ¬ββββββββ¬ββββββββ¬ββββββββ¬ββββββββ¬ββββββββ¬ββββββββ¬ββββββββ¬βββββββββββββ€
β State βPCWriteβIRWriteβRegWriteβALUSrcAβALUSrcBβALUOp βMemReadβDescription β
βββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌβββββββββββββ€
β 0 β 1 β 1 β 0 β 0 β 01 β 00 β 1 β IF β
β (IF) β β β β β β β βInstr Fetch β
βββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌβββββββββββββ€
β 1 β 0 β 0 β 0 β 0 β 11 β 00 β 0 β ID β
β (ID) β β β β β β β βInstr Decodeβ
βββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌβββββββββββββ€
β 2 β 0 β 0 β 0 β 1 β 10 β 00 β 0 β MemAddr β
β β β β β β β β βAddr Calc β
βββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌβββββββββββββ€
β 3 β 0 β 0 β 0 β 0 β 00 β 00 β 1 β MemRead β
β β β β β β β β βMemory Read β
βββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌβββββββββββββ€
β 4 β 0 β 0 β 1 β 0 β 00 β 00 β 0 β LW WB β
β β β β β β β β βLoad Write β
βββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌβββββββββββββ€
β 6 β 0 β 0 β 0 β 1 β 00 β 10 β 0 β R-type EX β
β β β β β β β β βR-type Exec β
βββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌββββββββΌβββββββββββββ€
β 7 β 0 β 0 β 1 β 0 β 00 β 00 β 0 β R-type WB β
β β β β β β β β βR-type Writeβ
βββββββββ΄ββββββββ΄ββββββββ΄ββββββββ΄ββββββββ΄ββββββββ΄ββββββββ΄ββββββββ΄βββββββββββββ
2.6 Advantages and Disadvantages of Hardwired Control¶
| Advantages | Disadvantages |
|---|---|
| Fast speed (only propagation delay) | High design complexity |
| Can be optimized | Difficult to modify/extend |
| Area efficient (for simple instruction sets) | Difficult to debug |
| Suitable for RISC processors | Requires circuit redesign for new instructions |
3. Microprogrammed Control¶
3.1 Microprogrammed Control Concept¶
Microprogrammed control stores control signals as a microprogram (firmware) and generates control signals by sequentially executing them.
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Microprogrammed Control Unit β
β β
β IR (Opcode) β
β β β
β βΌ β
β ββββββββββββββββββββ β
β β Mapping ROM β β
β β (Address Mapping)β β
β ββββββββββ¬ββββββββββ β
β β Start Address β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β βββββββββββββββ β β
β β β MicroPC ββββββββββββββββββββββββββββββββ β β
β β β (Micro β β β β
β β β Program β β β β
β β β Counter) β β β β
β β ββββββββ¬βββββββ β β β
β β β β β β
β β βΌ β β β
β β ββββββββββββββββββββββββββββββββββββββ β β β
β β β Control Store (ROM) β β β β
β β β (Microprogram Storage) β β β β
β β β β β β β
β β β Address Microinstruction β β β β
β β β 0x00 [Control Signals | Next] β β β β
β β β 0x01 [Control Signals | Next] β β β β
β β β 0x02 [Control Signals | Next] β β β β
β β β ... β β β β
β β βββββββββββββββββ¬βββββββββββββββββββββ β β β
β β β β β β
β β βββββββββββββββββ΄ββββββββββββββββ β β β
β β β β β β β
β β βΌ βΌ β β β
β β βββββββββββββββ ββββββββββββββββββ β β β
β β β Control β β Sequencer ββββ β β
β β β Signals β β (Next Address) β β β
β β β (Output) β ββββββββββββββββββ β β
β β βββββββββββββββ β β
β β β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3.2 Control Store Structure¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Control Store (ROM) β
β β
β Address Microinstruction (e.g., 32-bit) β
β ββββββββ¬ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β ALU βReg βMem βMem βALU βReg βPC β IR βNextβSequence β β
β β Addr β Op βDst βReadβWrt βSrc βWrt βSrc βWrt βAddrβ Control β β
β ββββββββΌββββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββββββββ€ β
β β 0x00 β 00 β x β 1 β 0 β 0 β 0 β 0 β 1 β0x01β SEQ β β
β β β β β β β β β β β β(Sequential)β β
β ββββββββΌββββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββββββββ€ β
β β 0x01 β 00 β x β 0 β 0 β 0 β 0 β x β 0 βDISPβ DISPATCH β β
β β β β β β β β β β β β (Branch) β β
β ββββββββΌββββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββββββββ€ β
β β 0x02 β 00 β 0 β 0 β 0 β 1 β 0 β x β 0 β0x03β SEQ β β
β β β β β β β β β β β β (lw/sw) β β
β ββββββββΌββββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββββββββ€ β
β β 0x03 β xx β x β 1 β 0 β x β 0 β x β 0 β0x04β SEQ β β
β β β β β β β β β β β β (lw mem) β β
β ββββββββΌββββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββββββββ€ β
β β 0x04 β xx β 0 β 0 β 0 β x β 1 β x β 0 β0x00β FETCH β β
β β β β β β β β β β β β (lw wb) β β
β ββββββββΌββββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββΌβββββββββββ€ β
β β ... β β β β β β β β β β β β
β ββββββββ΄ββββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3.3 Sequencer Operation¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Sequencer β
β β
β Determines next address based on sequence control field of current β
β microinstruction β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Sequence Controlβ Next Address Determination β β
β βββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ€ β
β β SEQ β MicroPC β MicroPC + 1 β β
β β (Sequential) β Proceed to next microinstruction β β
β βββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ€ β
β β BRANCH β MicroPC β Next address field β β
β β (Branch) β Jump to specified address β β
β βββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ€ β
β β DISPATCH β MicroPC β Mapping ROM[IR.Opcode] β β
β β (Dispatch) β Branch to routine based on instr type β β
β βββββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββ€ β
β β FETCH β MicroPC β 0 (Return to IF state) β β
β β (Fetch) β Start next instruction fetch β β
β βββββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββ β
β β
β Next address selection via MUX: β
β β
β MicroPC+1 βββββΊβββββββββ β
β Branch Addr βββΊβ MUX ββββββΊ Next MicroPC β
β Dispatch AddrββΊβ β β
β 0 (Fetch) βββββΊβββββββββ β
β β² β
β β β
β Sequence Control Signal β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
3.4 Advantages and Disadvantages of Microprogrammed Control¶
| Advantages | Disadvantages |
|---|---|
| Flexible design (only ROM needs modification) | Slower than hardwired |
| Easy to implement complex instructions | ROM access delay |
| Easy to debug | Additional hardware (Control Store) needed |
| Suitable for CISC processors | Increased power consumption |
| Microcode can be updated | Increased area |
3.5 Real-World Examples¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Microcode Usage in Real Processors β
β β
β Intel x86 family: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β - Implements complex CISC instructions with microcode β β
β β - Simple instructions handled quickly with hardwired logic β β
β β - Microcode updates for security patches (e.g., Spectre/ β β
β β Meltdown) β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β AMD processors: β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β - Similarly handles complex instructions with microcode β β
β β - Microcode updates via BIOS/UEFI β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Hybrid approach (most modern processors): β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β - Frequently used instructions: Hardwired (fast) β β
β β - Complex instructions: Microcode (flexibility) β β
β β - Example: x86 ADD is hardwired, REP MOVS is microcode β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4. Control Signal Generation¶
4.1 Main Control Signals List¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Main Control Signals β
ββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Control Signalβ Function β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β RegDst β Select write register (rt=0, rd=1) β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β RegWrite β Enable writing to register file β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ALUSrc β Select second ALU input (Register=0, Immediate=1) β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β ALUOp β Specify ALU operation (00=add, 01=sub, 10=R-type) β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β MemRead β Enable memory read β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β MemWrite β Enable memory write β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β MemtoReg β Select data to write to register (ALU=0, Memory=1) β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β PCSrc β Select PC value (PC+4=0, Branch target=1) β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Branch β Is conditional branch instruction β
ββββββββββββββββΌβββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Jump β Is unconditional jump instruction β
ββββββββββββββββ΄βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4.2 Control Signal Values by Instruction¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Control Signal Truth Table by Instruction β
ββββββββββββ¬ββββββββ¬βββββββββ¬ββββββββ¬ββββββββ¬βββββββββ¬ββββββββββ¬βββββββββ¬βββββββββ€
βInstructionβRegDst βALUSrc βMemtoRegβRegWriteβMemReadβMemWriteβBranch βALUOp β
ββββββββββββΌββββββββΌβββββββββΌββββββββΌββββββββΌβββββββββΌββββββββββΌβββββββββΌβββββββββ€
β R-type β 1 β 0 β 0 β 1 β 0 β 0 β 0 β 10 β
β (add,sub)β β β β β β β β β
ββββββββββββΌββββββββΌβββββββββΌββββββββΌββββββββΌβββββββββΌββββββββββΌβββββββββΌβββββββββ€
β lw β 0 β 1 β 1 β 1 β 1 β 0 β 0 β 00 β
ββββββββββββΌββββββββΌβββββββββΌββββββββΌββββββββΌβββββββββΌββββββββββΌβββββββββΌβββββββββ€
β sw β x β 1 β x β 0 β 0 β 1 β 0 β 00 β
ββββββββββββΌββββββββΌβββββββββΌββββββββΌββββββββΌβββββββββΌββββββββββΌβββββββββΌβββββββββ€
β beq β x β 0 β x β 0 β 0 β 0 β 1 β 01 β
ββββββββββββΌββββββββΌβββββββββΌββββββββΌββββββββΌβββββββββΌββββββββββΌβββββββββΌβββββββββ€
β addi β 0 β 1 β 0 β 1 β 0 β 0 β 0 β 00 β
ββββββββββββΌββββββββΌβββββββββΌββββββββΌββββββββΌβββββββββΌββββββββββΌβββββββββΌβββββββββ€
β j β x β x β x β 0 β 0 β 0 β x β xx β
ββββββββββββ΄ββββββββ΄βββββββββ΄ββββββββ΄ββββββββ΄βββββββββ΄ββββββββββ΄βββββββββ΄βββββββββ
x = don't care (any value is acceptable)
4.3 Control Signal Generation Logic Circuit¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Control Signal Generation Logic Circuit β
β β
β Opcode [5:0] β
β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β Decoder β β β
β β β β β β
β β β Opcode R-type lw sw beq addi j β β β
β β β 000000 ββββββΊ β β β
β β β 100011 ββββββββββΊ β β β
β β β 101011 βββββββββββββββΊ β β β
β β β 000100 ββββββββββββββββββββΊ β β β
β β β 001000 βββββββββββββββββββββββββΊ β β β
β β β 000010 ββββββββββββββββββββββββββββββΊ β β β
β β βββββββββββββββββββββββββββββββββββββββββββββββββββββββ β β
β β β β β β β β β β
β β βΌ βΌ βΌ βΌ βΌ βΌ β β
β β β β
β β RegDst = R-type β β
β β ALUSrc = lw | sw | addi β β
β β MemtoReg = lw β β
β β RegWrite = R-type | lw | addi β β
β β MemRead = lw β β
β β MemWrite = sw β β
β β Branch = beq β β
β β ALUOp[1] = R-type β β
β β ALUOp[0] = beq β β
β β Jump = j β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
4.4 Timing Diagram¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LW Instruction Execution Timing (Single-Cycle) β
β β
β CLK βββββ βββββββββββββββββββββββββββββββ ββββββ β
β β β β β β
β βββββββ βββββββ β
β β
β PC βββββͺββββββββββββββββββββββββββββββββββββββββββͺβββ β
β 0x04β β0x08 β
β β
β IR βββββͺββββββββββββββββββββββββββββββββββββββββββͺβββ β
β β lw $t0, 4($s0) β β
β β
β RegRead βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β βΌ Read $s0 value β
β β
β ALU ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β βΌ Calculate $s0 + 4 β
β β
β MemRead βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β βΌ Read Memory[$s0+4] β
β β
β RegWrite ββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β βΌ Write to $t0 β
β β
β ββββIFββββΌβββIDββββΌβββEXββββΌβββMEMβββΌβββWBββββ€ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
5. Microinstructions¶
5.1 Microinstruction Format¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Microinstruction Format β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Horizontal Microinstruction β β
β β β β
β β ββββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββ¬βββββββββ β β
β β βALU βReg βReg βMem βMem βALU βALU βPC β IR βSeq β Next β β β
β β βOp βDst βWrt βRd βWrt βSrcAβSrcBβWrt βWrt βCtl β Addr β β β
β β β4bitβ1bitβ1bitβ1bitβ1bitβ1bitβ2bitβ1bitβ1bitβ2bitβ 6bit β β β
β β ββββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββ΄βββββββββ β β
β β β β
β β Features: All control signals explicitly encoded β β
β β - Fast decoding β β
β β - Wide bit width (requires more ROM) β β
β β - Parallel operations possible β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Vertical Microinstruction β β
β β β β
β β ββββββββββββββ¬βββββββββββββ¬βββββββββββββ¬βββββββββββββββββββ β β
β β β Operation β Source βDestination β Next Address β β β
β β β (op) β (src) β (dst) β β β β
β β β 4bit β 4bit β 4bit β 6bit β β β
β β ββββββββββββββ΄βββββββββββββ΄βββββββββββββ΄βββββββββββββββββββ β β
β β β β
β β Features: Control signals represented in encoded format β β
β β - Narrow bit width (less ROM) β β
β β - Additional decoding required (slower) β β
β β - One operation at a time β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
5.2 Microinstruction Example (LW Instruction)¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β LW $t0, offset($s0) Microprogram β
β β
β Address Microinstruction Description β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β 0x00: PCWrite=1, IRWrite=1, ALUSrcA=0, // Instruction Fetch(IF) β
β ALUSrcB=01, ALUOp=00, MemRead=1, β
β NextAddr=0x01, SeqCtl=SEQ β
β β
β 0x01: ALUSrcA=0, ALUSrcB=11, ALUOp=00, // Instruction Decode(ID)β
β NextAddr=DISPATCH, SeqCtl=DISPATCH β
β β
β --- lw instruction dispatch β β
β β
β 0x10: ALUSrcA=1, ALUSrcB=10, ALUOp=00 // Address calculation β
β NextAddr=0x11, SeqCtl=SEQ // A = $s0 + offset β
β β
β 0x11: MemRead=1 // Memory read β
β NextAddr=0x12, SeqCtl=SEQ // MDR β Mem[A] β
β β
β 0x12: RegDst=0, RegWrite=1, MemtoReg=1 // Write Back (WB) β
β NextAddr=0x00, SeqCtl=FETCH // $t0 β MDR β
β β
β Micro-operation sequence: β
β 1. MAR β PC; IR β Mem[MAR]; PC β PC + 4 β
β 2. A β Regs[$s0] β
β 3. ALUOut β A + sign_extend(offset) β
β 4. MDR β Mem[ALUOut] β
β 5. Regs[$t0] β MDR β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
5.3 Microinstruction Sequencing¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Microinstruction Sequencing Example β
β β
β Start β
β β β
β βΌ β
β ββββββββββ β
β β 0x00 β IF: Instruction fetch β
β β (IF) β MARβPC, IRβMem[MAR], PCβPC+4 β
β βββββ¬βββββ β
β β SEQ β
β βΌ β
β ββββββββββ β
β β 0x01 β ID: Instruction decode, register read β
β β (ID) β AβRegs[rs], BβRegs[rt] β
β βββββ¬βββββ β
β β DISPATCH (based on opcode) β
β β β
β ββββββ΄βββββ¬βββββββββββββ¬βββββββββββββ¬βββββββββββββ β
β β β β β β β
β βΌ βΌ βΌ βΌ βΌ β
β ββββββββ ββββββββ ββββββββ ββββββββ ββββββββ β
β β 0x10 β β 0x20 β β 0x30 β β 0x40 β β 0x50 β β
β β lw β β sw β βR-typeβ β beq β β j β β
β ββββ¬ββββ ββββ¬ββββ ββββ¬ββββ ββββ¬ββββ ββββ¬ββββ β
β β β β β β β
β βΌ βΌ βΌ β β β
β ββββββββ ββββββββ ββββββββ β β β
β β 0x11 β β 0x21 β β 0x31 β β β β
β βMemRd β βMemWr β β R-WB β β β β
β ββββ¬ββββ ββββ¬ββββ ββββ¬ββββ β β β
β β β β β β β
β βΌ β β β β β
β ββββββββ β β β β β
β β 0x12 β β β β β β
β β LW-WBβ β β β β β
β ββββ¬ββββ β β β β β
β β β β β β β
β ββββββββββ΄ββββββββββββ΄ββββββββββββ΄ββββββββββββ΄ββββΊ(Return to 0x00) β
β FETCH β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
5.4 Horizontal vs Vertical Microinstruction Comparison¶
| Feature | Horizontal | Vertical |
|---|---|---|
| Bit Width | Wide (50-100 bits) | Narrow (16-32 bits) |
| Decoding | Not needed/minimal | Additional decoding required |
| Speed | Fast | Slow |
| Parallelism | High (simultaneous control) | Low (sequential) |
| ROM Size | Large | Small |
| Flexibility | High | Medium |
5.5 Nanoprogramming¶
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Nanoprogramming β
β β
β Uses two-level control storage to optimize Control Store size β
β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β β
β β MicroPC ββββΊβββββββββββββββββββββββ β β
β β β Control Store β β β
β β β (Micro ROM) β β β
β β β β β β
β β β ββββββββ¬βββββββββ β β β
β β β βNanoPCβNextAddrβ ββββΊ Sequence Control β β
β β β ββββ¬ββββ΄βββββββββ β β β
β β ββββββββΌβββββββββββββββ β β
β β β β β
β β βΌ β β
β β βββββββββββββββββββββββ β β
β β β Nano Store β β β
β β β (Nano ROM) β β β
β β β β β β
β β β Actual control ββββΊ Control Signal Output β β
β β β signal encoding β β β
β β βββββββββββββββββββββββ β β
β β β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Advantage: Save ROM by sharing repeated control signal patterns β
β Disadvantage: Additional access delay β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
6. Practice Problems¶
Basic Problems¶
-
Explain three main roles of the control unit.
-
Compare the differences between hardwired control and microprogrammed control.
-
Explain the role of the following control signals:
- (a) RegWrite
- (b) ALUSrc
- (c) MemtoReg
Control Signal Analysis Problems¶
- Determine the value of each control signal when executing the following MIPS instruction:
ADD $t0, $t1, $t2
- RegDst = ?
- ALUSrc = ?
- MemtoReg = ?
- RegWrite = ?
- MemRead = ?
- MemWrite = ?
- Branch = ?
-
ALUOp = ?
-
Determine all control signals for the
SW $t0, 100($s0)instruction.
Microprogram Problems¶
-
Explain the role of the sequencer in microprogrammed control.
-
Compare the advantages and disadvantages of horizontal and vertical microinstructions.
-
Write the microinstruction sequence for the
BEQ $t0, $t1, labelinstruction.
Advanced Problems¶
- Explain which control method (hardwired/microprogrammed) is more suitable for the following situations:
- (a) Designing a simple RISC processor
- (b) Designing a complex CISC processor
-
(c) When microcode updates are needed
-
List all states that the lw instruction goes through in a multi-cycle CPU FSM (Finite State Machine), and explain the control signals activated in each state.
Answers
1. Main roles of the control unit: - Instruction decoding: Analyze IR opcode to identify instruction type - Timing generation: Determine execution sequence and timing for each operation - Control signal generation: Output signals to control each component in datapath 2. Comparison: - Hardwired: Implemented directly with logic circuits, fast but difficult to modify - Microprogrammed: Executes program stored in ROM, flexible but slower 3. Control signal roles: - (a) RegWrite: Enable writing data to register file - (b) ALUSrc: Select second ALU input source (0=register, 1=immediate) - (c) MemtoReg: Select data to write to register (0=ALU, 1=memory) 4. ADD instruction control signals: - RegDst = 1 (use rd) - ALUSrc = 0 (register) - MemtoReg = 0 (ALU result) - RegWrite = 1 - MemRead = 0 - MemWrite = 0 - Branch = 0 - ALUOp = 10 (R-type) 5. SW instruction control signals: - RegDst = x (don't care) - ALUSrc = 1 (immediate 100) - MemtoReg = x - RegWrite = 0 - MemRead = 0 - MemWrite = 1 - Branch = 0 - ALUOp = 00 (add) 6. Sequencer role: - Interprets sequence control field of current microinstruction - Determines next microinstruction address (sequential, branch, dispatch, fetch) - Updates MicroPC value 7. Horizontal vs Vertical: - Horizontal: Fast execution, parallel control possible, wide bit width, large ROM - Vertical: Narrow bit width, small ROM, additional decoding required, slower 8. BEQ microinstructions: - IF: MARβPC, IRβMem[MAR], PCβPC+4 - ID: AβRegs[$t0], BβRegs[$t1], ALUOutβPC+(offset<<2) - EX: if (A==B) PCβALUOut β 0x00 (return to IF) 9. - (a) RISC: Hardwired (instructions are simple and speed is important) - (b) CISC: Microprogrammed (easy to implement complex instructions) - (c) Updates needed: Microprogrammed (only ROM needs modification) 10. lw instruction states: - State 0 (IF): MemRead=1, IRWrite=1, PCWrite=1 - State 1 (ID): (register read) - State 2 (MemAddr): ALUSrcA=1, ALUSrcB=10, ALUOp=00 - State 3 (MemRead): MemRead=1 - State 4 (LW-WB): RegDst=0, MemtoReg=1, RegWrite=1Next Steps¶
- 09_Instruction_Set_Architecture.md - CISC vs RISC, Addressing Modes
References¶
- Computer Organization and Design (Patterson & Hennessy)
- Computer Architecture: A Quantitative Approach (Hennessy & Patterson)
- MIPS Control Unit Implementation
- Digital Design and Computer Architecture (Harris & Harris)