Central Processing Unit        1
Module 4:
          CENTRAL PROCESSING UNIT
                              By:
                           Mitul Patel
   Computer Organization                 Computer Architectures Lab
Central Processing Unit                     2
                      CENTRAL PROCESSING UNIT
                           • Introduction
                           • General Register Organization
                           • Stack Organization
                           • Instruction Formats
                           • Addressing Modes
                           • Data Transfer and Manipulation
                           • Program Control
                           • Reduced Instruction Set Computer
   Computer Organization                                      Computer Architectures Lab
Central Processing Unit        3
                            CPU
      • The part of the computer that performs the bulk of
        data processing operations is called the central
        processing unit(CPU).
      • The CPU is made up of three major parts as shown in
        Figure.
      • Computer Architecture sometimes defined as the
        computer structure and behaviour as seen by the
        programmer that uses machine language
        instructions.
      • This includes the instruction formats, addressing
        modes, the instruction set and the general
        organization of the CPU registers.
   Computer Organization                      Computer Architectures Lab
Central Processing Unit                   4                                       Introduction
                    MAJOR COMPONENTS OF CPU
    • Storage Components
              Registers
              Flags
    • Execution (Processing) Components
              Arithmetic Logic Unit(ALU)
                   Arithmetic calculations, Logical computations, Shifts/Rotates
    • Transfer Components
              Bus
    • Control Components
              Control Unit                             Register
                                                         File                 ALU
                                                                   Control Unit
   Computer Organization                                          Computer Architectures Lab
Central Processing Unit                      5
                                    REGISTERS
   • In Basic Computer, there is only one general purpose register,
     the Accumulator (AC)
   • In modern CPUs, there are many general purpose registers
   • It is advantageous to have many registers
        – Transfer between registers within the processor are relatively fast
        – Going “off the processor” to access memory is much slower
   Computer Organization                                             Computer Architectures Lab
Central Processing Unit                          6                    General Register Organization
              GENERAL REGISTER ORGANIZATION
                                    Clock                             Input
                               R1
                               R2
                               R3
                               R4
                               R5
                               R6
                               R7
                     Load
                   (7 lines)
                                    SELA   {   MUX             MUX              } SELB
                           3x8                  A bus              B bus
                          decoder
                           SELD
                                       OPR              ALU
                                                          Output
   Computer Organization                                                   Computer Architectures Lab
Central Processing Unit                      7                                    Control
                   OPERATION OF CONTROL UNIT
    The control unit
        Directs the information flow through ALU by
          - Selecting various Components in the system
          - Selecting the Function of ALU
    Example: R1 ← R2 + R3
       [1] MUX A selector (SELA): BUS A ← R2
       [2] MUX B selector (SELB): BUS B ← R3
       [3] ALU operation selector (OPR): ALU to ADD
       [4] Decoder destination selector (SELD): R1 ← Out Bus
                              3      3       3         5
    Control Word           SELA   SELB    SELD        OPR
    Encoding of register selection fields
                                     Binary
                                     Code      SELA       SELB
                                     SELD
                                     000 Input Input None
                                     001 R1 R1 R1
                                     010 R2 R2 R2
                                     011 R3 R3 R3
                                     100 R4 R4 R4
                                     101 R5 R5 R5
                                     110 R6 R6 R6
                                     111 R7 R7 R7
   Computer Organization                                         Computer Architectures Lab
Central Processing Unit                     8                                                               Control
                            ALU CONTROL
     Encoding of ALU operations              OPR
                                            Select           Operation Symbol
                                            00000            Transfer A TSFA
                                            00001            Increment A      INCA
                                            00010            ADD A + B ADD
                                            00101            Subtract A - B SUB
                                            00110            Decrement A      DECA
                                            01000            AND A and B      AND
                                            01010            OR A and B       OR
                                            01100            XOR A and B      XOR
                                            01110            Complement A COMA
                                            10000            Shift right A    SHRA
                                            11000            Shift left A SHLA
     Examples of ALU Microoperations
                                  Symbolic Designation
                           Microoperation        SELA SELB SELD OPR                  Control Word
                           R1 ← R2 − R3           R2         R3            R1    SUB       010 011 001
                           00101
                           R4 ← R4 ∨ R5           R4         R5 R4         OR        100 101 100 01010
                           R6 ← R6 + 1                  R6             -        R6    INCA    110 000 110
                           00001
                           R7 ← R1              R1           -    R7      TSFA  001 000 111 00000
                           Output ← R2            R2         -         None TSFA   010 000 000 00000
                           Output ← Input       Input        -         None TSFA   000 000 000 00000
                           R4 ← shl R4                  R4             -     R4  SHLA    100 000 100
   Computer Organization   11000                                                      Computer Architectures Lab
Central Processing Unit                            9                               Stack Organization
                 REGISTER STACK ORGANIZATION
       Stack
          - Very useful feature for nested subroutines, nested interrupt services
          - Also efficient for arithmetic expression evaluation
          - Storage which can be accessed in LIFO
          - Pointer: SP
          - Only PUSH and POP operations are applicable
                                                                             stack     Address
       Register Stack                                        Flags                       63
                                                       FULL        EMPTY
                                                       Stack pointer                    4
                                                              SP               C        3
                                                             6 bits            B        2
                                                                               A        1
       Push, Pop operations                                                             0
                                                                              DR
              /* Initially, SP = 0, EMPTY = 1, FULL = 0 */
               PUSH                            POP
             SP ← SP + 1                DR ← M[SP]
             M[SP] ← DR                 SP ← SP − 1
             If (SP = 0) then (FULL ← 1)      If (SP = 0) then (EMPTY ←
             1)
             EMPTY ← 0                  FULL ← 0
   Computer Organization                                                   Computer Architectures Lab
Central Processing Unit                  10                           Stack Organization
                   MEMORY STACK ORGANIZATION
                                                                             1000
      Memory with Program, Data,                               Program
                                                PC          (instructions)
         and Stack Segments
                                                                Data
                                                AR           (operands)
                                                SP                           3000
                                                                stack
                                                                             3997
                                                                             3998
                                                                             3999
                                                                             4000
                                                                             4001
       - A portion of memory is used as a stack with a                       Stack grows
            processor register as a stack pointer                            In this direction
       - PUSH: SP ← SP - 1
                  M[SP] ← DR
       - POP: DR ← M[SP]
                  SP ← SP + 1
       - Most computers do not provide hardware to check stack overflow (full
         stack) or underflow (empty stack) 🡪 must be done in software
   Computer Organization                                     Computer Architectures Lab
Central Processing Unit                            11                          Stack Organization
                          REVERSE POLISH NOTATION
     • Arithmetic Expressions: A + B
                  A+B          Infix notation
                  +AB          Prefix or Polish notation
                  AB+          Postfix or reverse Polish notation
                                   - The reverse Polish notation is very suitable for stack
                                      manipulation
     • Evaluation of Arithmetic Expressions
             Any arithmetic expression can be expressed in parenthesis-free
             Polish notation, including reverse Polish notation
                          (3 * 4) + (5 * 6)   ⇒     34*56*+
                                                         6
                               4               5         5   30
                    3          3       12     12        12   12   42
                    3          4       *      5         6    *    +
   Computer Organization                                               Computer Architectures Lab
Central Processing Unit         12
            REEVERSE POLICE NOTATION
      • Exercise 1:
      • Reverse polish notation of A*B + C*D ???
      • Stack content ???
      • Exercise 2:
      • Reverse polish notation of (A + B)*[C*(D + E) + F]???
      • Stack content???
   Computer Organization                        Computer Architectures Lab
Central Processing Unit            13
                           EXERCISE
      • Convert the following numerical arithmetic
        expression into reverse polish notation and show the
        stack operations for evaluating the numeric result.
        (3 + 4)[10 ( 2 + 6) + 8]
   Computer Organization                       Computer Architectures Lab
Central Processing Unit                      14
                      PROCESSOR ORGANIZATION
     • In general, most processors are organized in one of 3 ways
          – Single register (Accumulator) organization
               » Basic Computer is a good example
               » Accumulator is the only general purpose register
               » ADD X
          – General register organization
               » Used by most modern computer processors
               » Any of the registers can be used as the source or destination for
                 computer operations
               » ADD R1,R2,R3
               » MOV R1,R2
          – Stack organization
               » All operations are done using the hardware stack
               » For example, an OR instruction will pop the two top elements from the
                 stack, do a logical OR on them, and push the result on the stack
               » ADD
   Computer Organization                                             Computer Architectures Lab
Central Processing Unit                      15                          Instruction Format
                           INSTRUCTION FORMAT
 • Instruction Fields
       OP-code field - specifies the operation to be performed
       Address field - designates memory address(es) or a processor register(s)
       Mode field    - determines how the address field is to be interpreted (to
                       get effective address or the operand)
 • The number of address fields in the instruction format
      depends on the internal organization of CPU
 • The three most common CPU organizations:
              Single accumulator organization:
                 ADDX               /* AC ← AC + M[X] */
              General register organization:
                 ADDR1, R2, R3         /* R1 ← R2 + R3 */
                ADD R1, R2                /* R1 ← R1 + R2 */
                 MOV       R1, R2              /* R1 ← R2 */
                ADD R1, X                 /* R1 ← R1 + M[X] */
              Stack organization:
                 PUSH      X              /* TOS ← M[X] */
                ADD
   Computer Organization                                         Computer Architectures Lab
Central Processing Unit                   16                          Instruction Format
       THREE, AND TWO-ADDRESS INSTRUCTIONS
  • Three-Address Instructions
        Program to evaluate X = (A + B) * (C + D) :
            ADD     R1, A, B /* R1 ← M[A] + M[B]     */
               ADD      R2, C, D /* R2 ← M[C] + M[D]    */
               MUL      X, R1, R2     /* M[X] ← R1 * R2        */
                   - Results in short programs
                   - Instruction becomes long (many bits)
  • Two-Address Instructions
         Program to evaluate X = (A + B) * (C + D) :
             MOV      R1, A        /* R1 ← M[A]         */
             ADD      R1, B         /* R1 ← R1 + M[B]   */
             MOV      R2, C        /* R2 ← M[C]         */
             ADD      R2, D         /* R2 ← R2 + M[D]   */
             MUL      R1, R2        /* R1 ← R1 * R2     */
             MOV      X, R1         /* M[X] ← R1         */
   Computer Organization                                      Computer Architectures Lab
Central Processing Unit                      17                         Instruction Format
       ONE, AND ZERO-ADDRESS INSTRUCTIONS
  • One-Address Instructions
        - Use an implied AC register for all data manipulation
        - Program to evaluate X = (A + B) * (C + D) :
                 LOAD A          /* AC ← M[A]       */
                 ADD      B      /* AC ← AC + M[B] */
                 STORE T          /* M[T] ← AC      */
                 LOAD C          /* AC ← M[C]       */
                 ADD      D      /* AC ← AC + M[D] */
                 MUL      T       /* AC ← AC * M[T] */
                 STORE X         /* M[X] ← AC       */
  • Zero-Address Instructions
        - Can be found in a stack-organized computer
        - Program to evaluate X = (A + B) * (C + D) :
                   PUSH    A   /*   TOS ← A */
                   PUSH    B   /*   TOS ← B */
                   ADD         /*   TOS ← (A + B)     */
                   PUSH    C   /*   TOS ← C */
                   PUSH    D   /*   TOS ← D */
                   ADD         /*   TOS ← (C + D)     */
                   MUL         /*   TOS ← (C + D) * (A + B) */
                   POP     X   /*   M[X] ← TOS */
   Computer Organization                                         Computer Architectures Lab
Central Processing Unit        18
                           EXERCISE
     • Write a program to evaluate the arithmetic statement:
    a. Using a general register organization with three
       address instructions.
    b. Using a general register organization with two
       address instructions.
    c. Using a accumulator type computer with one address
       instructions.
    d. Using a stack organized computer with zero address
       operation instructions.
   Computer Organization                      Computer Architectures Lab
Central Processing Unit                    19                            Addressing Modes
                            ADDRESSING MODES
    • Addressing Modes
         * Specifies a rule for interpreting or modifying the
           address field of the instruction (before the operand
           is actually referenced)
         * Variety of addressing modes
               - to give programming flexibility to the user
               - to use the bits in the address field of the
                 instruction efficiently
   Computer Organization                                          Computer Architectures Lab
Central Processing Unit                  20                           Addressing Modes
                  TYPES OF ADDRESSING MODES
     • Implied Mode
           Address of the operands are specified implicitly
           in the definition of the instruction
            - No need to specify address in the instruction
            - EA = AC, or EA = Stack[SP]
            - Examples from Basic Computer
                CLA, CME, INP
     • Immediate Mode
           Instead of specifying the address of the operand,
           operand itself is specified
                - No need to specify address in the instruction
                - However, operand itself needs to be specified
                - Sometimes, require more bits than the address
                - Fast to acquire an operand
   Computer Organization                                      Computer Architectures Lab
Central Processing Unit                   21                              Addressing Modes
                  TYPES OF ADDRESSING MODES
      • Register Mode
            Address specified in the instruction is the register address
                - Designated operand need to be in a register
                - Shorter address than the memory address
                - Saving address field in the instruction
                - Faster to acquire an operand than the memory addressing
       • Register   Indirect Mode
            Instruction specifies a register which contains
            the memory address of the operand
               - Saving instruction bits since register address
                 is shorter than the memory address
               - Slower to acquire an operand than both the
                 register addressing or memory addressing
      • Autoincrement or Autodecrement Mode
            - When the address in the register is used to access memory, the
       value in the register is incremented or decremented by 1
            automatically
   Computer Organization                                          Computer Architectures Lab
Central Processing Unit                 22                           Addressing Modes
                  TYPES OF ADDRESSING MODES
   • Direct Address Mode
         Instruction specifies the memory address which
         can be used directly to access the memory
              - Faster than the other memory addressing modes
              - Too many bits are needed to specify the address
              for a large physical memory space
           - EA = IR(addr) (IR(addr): address field of IR)
   • Indirect Addressing Mode
        The address field of an instruction specifies the address of a memory
    location that contains the address of the operand
           - When the abbreviated address is used large physical memory can be
         addressed with a relatively small number of bits
           - Slow to acquire an operand because of an additional memory access
           - EA = M[IR(address)]
   Computer Organization                                     Computer Architectures Lab
Central Processing Unit                 23                           Addressing Modes
                  TYPES OF ADDRESSING MODES
 • Relative Addressing Modes
      The Address fields of an instruction specifies the part of the address
      (abbreviated address) which can be used along with a designated
  register to calculate the address of the operand
          - Address field of the instruction is short
          - Large physical memory can be accessed with a small number of
           address bits
          - EA = f(IR(address), R), R is sometimes implied
       3 different Relative Addressing Modes depending on R;
           * PC Relative Addressing Mode (R = PC)
                - EA = PC + IR(address)
           * Indexed Addressing Mode (R = IX, where IX: Index Register)
                - EA = IX + IR(address)
            * Base Register Addressing Mode
                  (R = BAR, where BAR: Base Address Register)
                 - EA = BAR + IR(address)
   Computer Organization                                     Computer Architectures Lab
Central Processing Unit                           24                                Addressing Modes
             ADDRESSING MODES                                      - EXAMPLES -
                                                                       Address    Memory
                                                                        200   Load to AC Mode
                                                        PC = 200        201     Address = 500
                                                                        202     Next instruction
                                                        R1 = 400
                                                                        399         450
                                                        XR = 100
                                                                        400         700
                                                          AC
                                                                        500         800
                                                                        600         900
         Addressing     Effective                          Content      702         325
         Mode           Address                            of AC
      Direct address 500 /* AC ← (500)       */   800
      Immediate operand -        /* AC ← 500      */    500             800         300
      Indirect address     800 /* AC ← ((500)) */       300
      Relative address     702 /* AC ← (PC+500)         */  325
      Indexed address      600 /* AC ← (RX+500)         */  900
      Register           - /* AC ← R1        */   400
      Register indirect    400       /* AC ← (R1) */    700
      Autoincrement400 /* AC ← (R1)+         */   700
      Autodecrement        399 /* AC ← -(R)       */    450
   Computer Organization                                                 Computer Architectures Lab
Central Processing Unit        25
                           EXERCISE
     • An instruction is stored at location 300 with its
       address field at location 301.The address field has
       the value 400.A processor register R1 contains the
       number 200.Evaluate the effective address if the
       addressing mode of the instruction is
    a. Direct
    b. Immediate
    c. Relative
    d. Register indirect
    e. Index with R1 as the index register.
   Computer Organization                       Computer Architectures Lab
Central Processing Unit                       26                   Data Transfer and Manipulation
                  DATA TRANSFER INSTRUCTIONS
       • Typical Data Transfer Instructions
                             Name       Mnemonic
                            Load      LD
                            Store     ST
                            Move      MOV
                            Exchange     XCH
                            Input     IN
                            Output    OUT
                            Push      PUSH
                            Pop    POP
        • Data Transfer Instructions with Different Addressing Modes
                                         Assembly
                           Mode          Convention Register Transfer
                      Direct address LD ADR AC ← M[ADR]
                      Indirect address   LD @ADR AC ← M[M[ADR]]
                      Relative address   LD $ADR AC ← M[PC + ADR]
                      Immediate operand LD #NBR AC ← NBR
                      Index addressing   LD ADR(X)   AC ← M[ADR + XR]
                      Register LD R1     AC ← R1
                      Register indirect  LD (R1) AC ← M[R1]
                      Autoincrement LD (R1)+ AC ← M[R1], R1 ← R1 + 1
                      Autodecrement       LD -(R1)  R1 ← R1 - 1, AC ← M[R1]
   Computer Organization                                             Computer Architectures Lab
Central Processing Unit                        27                Data Transfer and Manipulation
            DATA MANIPULATION INSTRUCTIONS
    • Three Basic Types: Arithmetic instructions
                                  Logical and bit manipulation instructions
                                  Shift instructions
    • Arithmetic Instructions
                       Name                    Mnemonic
                      Increment                INC
                      Decrement                 DEC
                      Add                      ADD
                      Subtract                  SUB
                      Multiply                  MUL
                      Divide                    DIV
                      Add with Carry            ADDC
                      Subtract with Borrow      SUBB
                      Negate(2’s Complement)    NEG
    • Logical and Bit Manipulation Instructions               • Shift Instructions
            Name              Mnemonic                       Name                   Mnemonic
            ClearCLR                                        Logical shift right    SHR
            Complement      COM                             Logical shift leftSHL
            AND AND                                         Arithmetic shift right SHRA
            OR OR                                           Arithmetic shift left SHLA
            Exclusive-OR XOR                                Rotate right      ROR
            Clear carry     CLRC                            Rotate left ROL
            Set carry SETC                                  Rotate right thru carry    RORC
            Complement carry    COMC                        Rotate left thru carry ROLC
            Enable interruptEI
            Disable interrupt   DI
   Computer Organization                                           Computer Architectures Lab
Central Processing Unit                     28                                        Program Control
            PROGRAM CONTROL INSTRUCTIONS
                              +1
                              In-Line Sequencing (Next instruction is fetched
                              from the next adjacent location in the memory)
           PC
                              Address from other source; Current Instruction,
                              Stack, etc; Branch, Conditional Branch,
                              Subroutine, etc
     • Program Control Instructions
                    Name                Mnemonic
                   Branch                 BR
                   Jump                   JMP
                   Skip                   SKP
                   Call                   CALL
                   Return                 RTN
                   Compare(by − )          CMP
                   Test(by AND)           TST
                                * CMP and TST instructions do not retain their
                                  results of operations ( − and AND, respectively).
                                  They only set or clear certain Flags.
   Computer Organization                                                Computer Architectures Lab
Central Processing Unit                          29
                 FLAG, PROCESSOR STATUS WORD
    • 8-bit ALU with 4 status registers:
         –   C (Carry): Set to 1 if the carry out of the ALU is 1
         –   S (Sign): The MSB bit of the ALU’s output
         –   Z (Zero): Set to 1 if the ALU’s output is all 0’s
         –   V (Overflow): Set to 1 if there is an overflow
         – Let A=11110000 and B=00010100
         – Perform A-B
                                                                       Status Flag Circuit
                                                                                   A           B
                                                                                       8           8
                                                                       c7
                                                                        c8         8-bit ALU
                                                                                    F7 - F 0
                                                           V Z S C
                                                                        F7
                                                                      Check for            8
                                                                     zero output
                                                                                       F
   Computer Organization                                              Computer Architectures Lab
Central Processing Unit                           30                            Program Control
           CONDITIONAL BRANCH INSTRUCTIONS
                 Mnemonic Branch condition         Tested condition
                    BZ    Branch if zero Z = 1
                    BNZ   Branch if not zero    Z=0
                    BC    Branch if carry C = 1
                    BNC   Branch if no carry    C=0
                    BP    Branch if plus S = 0
                    BM    Branch if minus S = 1
                    BV    Branch if overflow    V=1
                    BNV   Branch if no overflowV = 0
                      Unsigned compare conditions (A - B)
                    BHI Branch if higherA > B
                    BHE Branch if higher or equal A ≥ B
                    BLO Branch if lower A < B
                    BLOE     Branch if lower or equal A ≤ B
                    BE Branch if equal A = B
                    BNE Branch if not equal A ≠ B
                      Signed compare conditions (A - B)
                    BGT Branch if greater than     A>B
                    BGE Branch if greater or equal A ≥ B
                    BLT Branch if less than A < B
                    BLE Branch if less or equal    A≤B
                    BE Branch if equal A = B
                    BNE Branch if not equal A ≠ B
   Computer Organization                                              Computer Architectures Lab
Central Processing Unit                  31                           Program Control
                SUBROUTINE CALL AND RETURN
                           Call subroutine
   • Subroutine Call       Jump to subroutine
                           Branch to subroutine
                           Branch and save return address
   • Two Most Important Operations are Implied;
          * Branch to the beginning of the Subroutine
             - Same as the Branch or Conditional Branch
          * Save the Return Address to get the address
            of the location in the Calling Program upon
            exit from the Subroutine
                                                                  CALL
   • Locations for storing Return Address                          SP ← SP - 1
            • Fixed Location in the subroutine (Memory)            M[SP] ← PC
            • Fixed Location in memory                             PC ← EA
            • In a processor Register
            • In memory stack                                     RTN
                 - most efficient way                             PC ← M[SP]
                                                                   SP ← SP + 1
   Computer Organization                                    Computer Architectures Lab
Central Processing Unit                  32                             Program Control
                           PROGRAM INTERRUPT
  Types of Interrupts
     External interrupts
          External Interrupts initiated from the outside of CPU and Memory
          - I/O Device → Data transfer request or Data transfer complete
          - Timing Device → Timeout
          - Power Failure
          - Operator
      Internal interrupts (traps)
          Internal Interrupts are caused by the currently running program
          - Register, Stack Overflow
          - Divide by zero
          - OP-code Violation
          - Protection Violation
      Software Interrupts
          Both External and Internal Interrupts are initiated by the computer HW.
          Software Interrupts are initiated by the executing an instruction.
          - Supervisor Call → Switching from a user mode to the supervisor mode
                            → Allows to execute a certain class of operations
                                                                        which are
           not allowed in the user mode
   Computer Organization                                      Computer Architectures Lab
Central Processing Unit                     33                             Program Control
                           INTERRUPT PROCEDURE
     Interrupt Procedure and Subroutine Call
        - The interrupt is usually initiated by an internal or
          an external signal rather than from the execution of
          an instruction (except for the software interrupt)
        - The address of the interrupt service program is
          determined by the hardware rather than from the
          address field of an instruction
        - An interrupt procedure usually stores all the
          information necessary to define the state of CPU
          rather than storing only the PC.
                The state of the CPU is determined from;
                   Content of the PC
                   Content of all processor registers
                   Content of status bits
                Many ways of saving the CPU state
                 depending on the CPU architectures
   Computer Organization                                         Computer Architectures Lab
Central Processing Unit        34
                            RISC
      • Reduced Instruction Set Computer.
      • Use of Load and Store instructions when
        communicating with CPU. All other instructions are
        executed within Registers of the CPU without
        referring to the memory.
   Computer Organization                       Computer Architectures Lab
Central Processing Unit       35
                           THANK YOU
   Computer Organization               Computer Architectures Lab