242    CHAPTER EIGHT   Central Processing Unit
Figure 8·1   Major components   of CPU.
                       a task that in large part involves choosing the hardware for implementing the
                       machine instructions. The user who programs the computer in machine or
                       assembly language must be aware of the register set, the memory structure,
                       the type of data supported by the instructions, and the function that each
                       instruction performs.
                            Design examples of simple CPUs are carried out in Chaps. 5 and 7. This
                       chapter describes the organization and architecture of the CPU with an empha
                       sis on the user's view of the computer. We briefly describe how the registers
                       communicate with the ALU through buses and explain the operation of the
                       memory stack. We then present the type of instruction formats available, the
                       addressing modes used to retrieve data from memory, and typical instructions
                       commonly incorporated in computers. The last section presents the concept of
                       reduced instruction set computer        (RISQ.
                       s,z     General Register Organization
                       In the programming examples of Chap. 6, we have shown that memory
                       locations are needed for storing pointers, counters, return addresses, tempo
                       rary results, and partial products during multiplication. Having to refer to
                       memory locations for such applications is time consuming because memory
                       access is the most time-consumin\;, oqerati!lR i.R � <:.<'-w..�\'1!1. . \\ ).1; more conve
                       nlent and more efficient to store these intermediate values in processor regis
                       ters. When a large number of registers are included in the CPU, it is most
                       efficient to connect them through a common bus system. The registers commu
                       nicate with each other not only for direct data transfers, but also while perform
                       ing various microoperations. Hence it is necessary to provide a common unit
                       that can perform all the arithmetic, logic, and shift microoperations in the
                       processor.
bus system                 A bus organization for seven CPU registers is shown in Fig. 8-2. The
                       output of each register is connected to two multiplexers (MUX) to form the two
                       buses A and B . The selection lines in each multiplexer select one register or the
                       input data for the particular bus. The         A and B buses form the inputs to a
-        Rl
,_      RZ
..._    R3
-        R4
,_.     RS
,_.     R6
>--      R1
    Load
  (71i,..)                                                       }saB
       3 x8
       -                                                 Bblll
       ttt
       sao
              OPR
                    [ ::::
                       3         3         3
                 I   SF.I..A I SELl!   I
                                       SEI.D   I   OPR
                                 (b)C<nrolwml
                l"ipft 8-2 Reciau .., with common ALU.
244     CHAPTER EIGHT   Central Processing Unit
                        common arithmetic logic unit (ALU). The operation selected in the ALU deter
                        mines the arithmetic or logic microoperation that is to be performed. The result
                        of the microoperation is available for output data and also goes into the inputs
                        of all the registers. The register that receives the information from the output
                        bus is selected by a decoder. The decoder activates one of the register load
                        inputs, thus providing a transfer path between the data in the output bus and
                        the inputs of the selected destination register.
                               The control unit that operates the CPU bus system directs the information
                        flow through the registers and ALU by selecting the various components in the
                        system. For example, to perform the operation
                                                         R 1 <-- R2 + R3
                        the control must provide binary selection variables to the following selector
                        inputs:
                            1. MUX A selector (SELA): to place the content of R2 into bus A .
                            2 . MUX B selector (SELB): to place the content o f R 3 into bus B .
                            3.   ALU operation selector (OPR): to provide the arithmetic addition
                                 A + B.
                            4.   Decoder destination selector (SELD): t o transfer the content o f the
                                 output bus into R 1 .
                              The four control selection variables are generated i n the control unit and
                        must be available at the beginning of a clock cycle. The data from the two source
                        registers propagate through the gates in the multiplexers and the ALU, to the
                        output bus, and into the inputs of the destination register, all during the clock
                        cycle interval. Then, when the next clock transition occurs, the binary informa
                        tion from the output bus is transferred into R 1. To achieve a fast response time,
                        the ALU is constructed with high-speed circuits. The buses are implemented
                        with multiplexers or three-state gates, as shown in Sec. 4-3.
                        Control Word
                        There are 14 binary selection inputs in the unit, and their combined value
control word            specifies a control word. The 14-bit control word is defined in Fig. 8-2(b). It
                        consists of four fields. Three fields contain three bits each, and one field has
                        five bits. The three bits of SELA select a source register for the A input of the
                        ALU. The three bits of SELB select a register for the B input of the ALU. The
                        three bits of SELD select a destination register using the decoder and its seven
                        load outputs. The five bits of OPR select one of the operations in the ALU. The
                        14-bit control word when applied to the selection inputs specify a particular
                        microoperation.
                              The encoding of the register selections is specified in Table 8-1 . The 3-bit
                                          SECTION 8-2    General Register Organization   245
                        TABLE 8.. 1 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
      binary code listed in the first column of the table specifies the binary code for
      each of the three fields. The register selected by fields SELA, SELB, and SELD
      is the one whose decimal number is equivalent to the binary number in the
      code. When SELA or SELB is 000, the corresponding multiplexer selects the
      external input data. When SELD = 000, no destination register is selected but
      the contents of the output bus are available in the external output.
ALU         The ALU provides arithmetic and logic operations. In addition, the CPU
      must provide shift operations. The shifter may be placed in the input of the
      ALU to provide a preshift capability, or at the output of the ALU to provide
      postshifting capability. In some cases, the shift operations are included with
      the ALU. An arithmetic logic and shift unit was designed in Sec. 4-7. The
      function table for this ALU is listed in Table 4-8. The encoding of the ALU
      operations for the CPU is taken from Sec. 4-7 and is specified in Table 8-2. The
      OPR field has five bits and each operation is designated with a symbolic name.
                            TABLE 8-2 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
246   CHAPTIR EIGHT   Centtal Processing Unit
                  Examples of Microoperations
                      A control word of 14 bits is needed to specify a rnicrooperation in the CPU. The
                      control word for a given microoperation can be derived from the selection
                      variables. For example, the subtract rnicrooperation given by the statement
                                                             R 1 <- R 2 - R3
                      specifies R2 for the A input of the ALU, R3 for the B input of the ALU, R1 for
                      the destination register, and an ALU operation to subtract A - B. Thus the
                      control word is specified by the four fields and the corresponding binary value
                      for each field is obtained from the encoding listed in Tables 8-1 and 8-2. The
                      binary control word for the subtract rnicrooperation is 010 011 001 00101 and
                      is obtained as follows:
                                       Field:                SELA           SELB      SELD        OPR
                                       Symbol:                   R2            R3         R1       SUB
                                       Control word:          010              011        001     00101
                      The control word for this rnicrooperation and a few others are listed in
                      Table 8-3.
                           The increment and transfer rnicrooperations do not use the B input of the
                      ALU. For these cases, the B field is marked with a dash. We assign 000 to any
                      unused field when formulating the binary control word, although any other
                      binary number may be used. To place the content of a register into the output
                      terminals we place the content of the register into the A input of the ALU, but
                      none of the registers are selected to accept the data. The ALU operation TSFA
                      places the data from the register, through the ALU, into the output terminals.
                      The direct transfer from input to output is accomplished with a control word
                                         TABLE       8�3 Examples   of   Microoperations for the CPU
                                                         Symbolic Designation
                          Microoperation        SELA       SELB          SELD        OPR           Control Word
                         R 1 <-- R2 - R3        R2          R3           R1          SUB        010 0 1 1 001 00101
                         R4 <-- R4 V R5         R4          R5           R4          OR         100 101 100 01010
                         R6 <-- R6 + 1          R6                       R6          INCA       110 000 110 00001
                         R 7 <-- R 1            R1                       R7          TSFA       001 000 1 1 1 00000
                         Output <-- R2          R2                       None        TSFA       010 000 000 00000
                         Output <-- lnput       Input                     None       TSFA       000 000 000 00000
                         R4 <-- sh1 R4          R4                       R4          SHLA       100 000 100 1 1000
                         RS <-- 0               RS          RS            RS         XOR        101 101 101 01100
                                                              SECTION 8-3   Scack Organizarion   24 7
                of all 0' s (making the B field 000). A register can be cleared to 0 with an
                exclusive-OR operation. This is because x Ell x = 0.
                      It is apparent from these examples that many other microoperations can
                be generated in the CPU. The most efficient way to generate control words with
                a large number of bits is to store them in a memory unit. A memory unit that
                stores control words is referred to as a control memory. By reading consecutive
                control words from memory, it is possible to initiate the desired sequence of
                microoperations for the CPU. This type of control is referred to as micropro
                grammed controL A microprogrammed control unit is shown in Fig. 7-8. The
                binary control word for the CPU will come from the outputs of the control
                memory marked "micro-ops."
                8-3     Stack Organization
                A useful feature that is included in the CPU of most computers is a stack or
UFO             last-in, first-out (UFO) list. A stack is a storage device that stores information
                in such a manner that the item stored last is the first item retrieved. The
                operation of a stack can be compared to a stack of trays. The last tray placed
                on top of the stack is the first to be taken off.
                      The stack in digital computers is essentially a memory unit with an
                address register that can count only (after an initial value is loaded into it). The
stack pointer   register that holds the address for the stack is called a stack pointer (SP) because
                its value always points at the top item in the stack. Contrary to a stack of trays
                where the tray itself may be taken out or inserted, the physical registers of a
                stack are always available for reading or writing. It is the content of the word
                that is inserted or deleted.
                      The two operations of a stack are the insertion and deletion of items. The
                operation of insertion is called push (or push-down) because it can be thought
                of as the result of pushing a new item on top. The operation of deletion is called
                pop (or pop-up) because it can be thought of as the result of removing one item
                so that the stack pops up. However, nothing is pushed or popped in a com
                puter stack. These operations are simulated by incrementing or decrementing
                the stack pointer register.
                Register Stack
                A stack can be placed in a portion of a large memory or it can be organized as
                a collection of a finite number of memory words or registers. Figure 8-3 shows
                the organization of a 64-word register stack. The stack pointer register SP
                contains a binary number whose value is equal to the address of the word that
                is currently on top of the stack. Three items are placed in the stack: A, B, and
                C, in that order. Item C is on top of the stack so that the content of SP is now
                3. To remove the top item, the stack is popped by reading the memory word