SlideShare ist ein Scribd-Unternehmen logo
1 von 80
Downloaden Sie, um offline zu lesen
ICT1012 – Computer Systems


Lecture 6 – Inner Workings of the Central
             Processing Unit

               Lakshman Jayaratne




Learning Objectives
Computer architecture
  Components of a simple central processing unit:
   o   registers, ALU, control unit and buses
  Other hardware components of a computer:
   o   Buses, clocks, peripheral devices, memory
Features of computers
  Speed and reliability
  Components and CPU registers
  Memory organization
Fetch–decode–execute cycle and its use to
Fetch– decode–
execute instructions in a simple computer




                                                    1
Hardware Components of a Typical
Computer


 Peripheral          Central
                    Processing             Memory
  Devices           Unit (CPU)


Buses allow components to pass data to each
other




Hardware Components of a Typical
Computer - CPU

 Peripheral          Central
                    Processing             Memory
  Devices           Unit (CPU)


 Central Processing Unit (CPU)
   Performs the basic operations
   Consists of two parts:
     Arithmetic / Logic Unit (ALU) - data manipulation
     Control Unit - coordinate machine’s activities
                               machine’




                                                         2
Central Processing Unit (CPU)

  Fetches, decodes and executes program
  instructions
  Two principal parts of the CPU
     Arithmetic-Logic Unit (ALU)
     Arithmetic-
      o Connected to registers and memory by a
         data bus
      o All three comprise the Datapath
     Control unit
      o Sends signals to CPU components to perform
         sequenced operations




CPU: Registers, ALU and Control Unit

 Registers
   Hold data that can be readily accessed by the CPU
   Implemented using D flip-flops
                           flip-
    o A 32-bit register requires 32 D flip-flops
        32-                           flip-
 Arithmetic-logic unit (ALU)
 Arithmetic-
   Carries out logical and arithmetic operations
   Often affects the status register (e.g., overflow, carry)
   Operations are controlled by the control unit
 Control unit (CU)
   Policeman or traffic manager
   Determines which actions to carry out according to the values in
   a program counter register and a status register




                                                                      3
Hardware Components of a Typical
Computer - Memory

 Peripheral          Central
                    Processing            Memory
  Devices           Unit (CPU)


Main Memory
   Holds programs and data
   Stores bits in fixed-sized chunks: “word” (8, 16,
                  fixed-               word”
   32 or 64 bits)
   Each word has a unique address
   The words can be accessed in any order
    random-access memory or “RAM”
    random-                      RAM”




Memory
Consists of a linear array of addressable
storage cells




A memory address is represented by an
unsigned integer
Can be byte-addressable or word-addressable
       byte-               word-
  Byte-addressable: each byte has a unique address
  Byte-
  Word-addressable: a word (e.g., 4 bytes) has a unique
  Word-
  address




                                                          4
Memory: Example

 A memory word size of a machine is 16 bits
 A 4MB × 16 RAM chip gives us 4 megabytes of
 16-bit memory locations
 16-
   4MB = 22 * 220 = 222 = 4,194,304 unique locations (each
   location contains a 16-bit word)
                       16-
   Memory locations range from 0 to 4,194,303 in unsigned
   integers
 2N addressable units of memory require N bits
 to address each location
   Thus, the memory bus of this system requires at least 22
   address lines
   The address lines “count” from 0 to 222 -1 in binary
                      count”




Hardware Components of a Typical
Computer – Peripheral Devices that
Communicate with the Outside World

  Peripheral             Central
                        Processing              Memory
   Devices              Unit (CPU)


   Input/Output (I/O)
      Input: keyboard, mouse, microphone, scanner,
      sensors (camera, infra-red), punch-cards
                        infra-     punch-
      Output: video, printer, audio speakers, etc
   Communication
      modem, ethernet card




                                                              5
Hardware Components of a Typical
Computer – Peripheral Devices that
Store Data Long Term
   Secondary (mass) storage
   Stores information for long periods of
   time as files
     Examples: hard drive, floppy disk, tape, CD-
                                               CD-
     ROM (Compact Disk Read-Only Memory), flash
                           Read-
     drive, DVD (Digital Video/Versatile Disk)




Hardware Components of a Typical
Computer – Buses

   Peripheral         Central
                     Processing           Memory
    Devices          Unit (CPU)

  Buses
    Used to share data between system components
    inside and outside the CPU
    Set of wires (lines) that
       act as a shared path
       allow parallel movement of bits




                                                     6
Typical Bus Transactions

 Sending an address (for performing a read
 or write)
 Transferring data from memory to register
 and vice versa
 Transferring data for I/O reads and writes
 from peripheral devices




Buses
Physically a bus is a group of
conductors that allows all the
bits in a binary word to be
copied from a source component
to a destination component
Buses move binary values inside
the CPU between registers and
other components
Buses are also used outside the CPU, to copy values
between the CPU registers and main memory, and
between the CPU registers and the I/O sub-system
                                      sub-




                                                      7
Types of Buses: Source and Destination

 Point-to-point:
 Point- to- point:
 connects two
 specific components
 Multi-point: a shared
 Multi- point:
 resource that
 connects several
 components
   access to it is
   controlled through
   protocols, which are
   built into the hardware




Types of Buses: Contents
 Data bus: conveys bits from one device to another
      bus:
 Control bus: determines the direction of data flow and
         bus:
 when each device can access the bus
 Address bus: determines the location of the source
          bus:
 or destination of the data




                                                          8
Clock
Every computer contains at least one clock that
synchronizes the activities of its components
  A fixed number of clock cycles are required to carry out each
  data movement or computational operation
  The clock frequency determines the speed of all operations
   o    Measured in megaHertz or gigaHertz
Generally the term clock refers to the CPU (master)
clock
  Buses can have their own clocks which are usually slower
Most machines are synchronous
  Controlled by a master clock signal
  Registers must wait for the clock to tick before loading new data
                                                               data




Clock Speed (I)

 Clock cycle time is the reciprocal of clock
 frequency
    Example, an 800 MHz clock has a cycle time of 1.25 ns
    o   1/800,000,000 = 0.00000000125 = 1.25 * 10-9

 Clock-speed ≠ CPU-performance
 Clock-        CPU-
   The CPU time required to run a program is given by the
   general performance equation:




                                                                      9
Clock Speed (II)
 Therefore, we can improve CPU throughput
 when we reduce
   the number of instructions in a program
   the number of cycles per instruction
   the number of nanoseconds per clock cycle
 But, in general
   Multiplication takes longer than addition
   Floating point operations require more cycles than
   integer operations
   Accessing memory takes longer than accessing
   registers




Features of Computers: Speed and
Reliability

  Speed
    CPU speed
    System-clock / Bus speed
    System-
    Memory-access speed
    Memory-
    Peripheral device speed
  Reliability




                                                        10
CPU Speed

  CPU clock speed: in cycles per second
  ("hertz")
    Example: 700MHz Pentium III, 3GHz
    Pentium IV
  but different CPU designs do different
  amounts of work in one clock cycle
  Other measures of speed
    “flops” (floating-point operations per second)
     flops” (floating-
    “mips” (million instructions per second)
     mips”




System-Clock / Bus Speed

 Speed of communication between CPU,
 memory and peripheral devices
 Depends on main board design
   Examples:
   Examples:
   o Intel
         1.50GHz Pentium-4 works on a 400MHz bus
                 Pentium-
     speed




                                                     11
Memory-Access Speed

 RAM
   about 60ns (1 nanosecond = a billionth of a
   second), and getting faster
   may be rated with respect to “bus speed’’ (e.g.,
                                     speed’’
   PC-100)
   PC-
 Cache memory
   faster than main memory (about 20ns access
   speed), but more expensive
   contains data which the CPU is likely to use next




Peripheral Device Speed

 Mass storage
   Examples:
       o 3.5in 1.4MB floppy disk: about 200kb/sec at 300 rpm
         (revolutions per minute)
       o Hard drive: up to 160 GB of storage, average seek time
         about 6 milliseconds, and 7,200 rpm
 Communications
   Examples: modems at 56 kilobits per second, and
   network cards at 10 or 100 megabits per second
 I/O
   Examples: ISA, PCI, IDE, SCSI, ATA, USB, etc....




                                                                  12
Cache Memory and Virtual Memory

 Cache memory – random access memory
 that a processor can access more quickly
 than regular RAM
 Virtual memory – an “extension” of RAM
 using the hard disk
  allows the computer to behave as though it has
  more memory than what is physically available




Interrupts and Exceptions

 Events that alter the normal execution of a
 program
 Exceptions are triggered within the processor
   Arithmetic errors, overflow or underflow
   Invalid instructions
   User-defined break points
   User-
 Interrupts are triggered outside the processor
   I/O requests
 Each type of interrupt or exception is
 associated with a procedure that directs the
 actions of the CPU




                                                   13
Fetch-decode-execute Cycle
A computer runs programs by performing
fetch-decode-execute cycles
        fetch next instruction from   Example: instruction word
                                      Example:
         memory ( word pointed to     at mem[PC] is 0x20A9FFFD
                                         mem[PC]
           by PC ) and place in IR
                                      001000 00101 01001 1111111111111101
    decode instruction in the IR      Opcode 8 is “add immediate”,
                                                        immediate”
        to determine type             source reg is $5, “target” reg
                                                    $5, target”
                                      is reg $9, add amount is –3
                                             $9,

           execute instruction        Send reg $5 and -3 to ALU,
                                      add them, put result in reg $9

        go to the next instruction
                                      PC = PC + 4
         (next word in memory)




Accessing Memory (I)

 Every memory access needs an address
 word to be sent from CPU to memory
   Address range is 0x00000000 to 0xFFFFFFFF
    o   about 4 billion bytes of addressable space
 Addresses output by the CPU go to the
 Memory Address Register (MAR)
   During a fetch access, the PC value is copied to
   MAR
   During a load/store access, a “computed
   address” from the ALU is copied to MAR
   address”




                                                                            14
Accessing Memory (II)

 Why compute load/store addresses?
    32(instruction bits) – 6(opcode bits) =
    26(available bits)
    26(available
    insufficient to hold a full memory address
 Solution: register based addressing
    use 26-bits to specify a base address GPR, a
         26-                               GPR,
    target GPR, plus a 16-bit signed offset
            GPR,        16-
    ALU computes memory reference address “on
    the fly” as: MAR = base GPR + offset
        fly”
    target GPR receives/supplies memory data




Memory Segments
Memory is organized into segments, each with its own
                         segments,
purpose
0x00000000                                  kernel code
                     reserved for OS
0x00400000            text segment          user’s code
                                            user’

0x10000000            data segment          free space,
                                            grows and
 memory                                     shrinks as
                         (heap)
                          heap)
addresses                                   stack/data
                     stack segment           segments
0x80000000                                    change
                    reserved for the        kernel code
0xFFFFFFFF        Operating System (OS)      and data




                                                          15
Text Segment

 Starts at memory address 0x00400000
   runs up to address 0x0FFFFFFF
 Contains user’s executable program code
 (often called the code segment )
 PC register value is a CPU “reference” into
 this memory segment




Data Segment

 Starts at memory address 0x10000000
   expands upwards towards stack
 Contains program’s static data, i.e., data and
           program’        data,
 variables whose location in memory is fixed
 (and known to the assembler)

       In C               In Java
       global variables   public, static
       string constants   objects




                                                  16
Stack Segment
 Starts at memory address 0x7FFFFFFF
   grows in the direction of decreasing memory
   addresses ( i.e., towards the data segment)
 Contains system stack
 Used for temporary storage of:
   local variables of functions
   function parameter values
   return addresses of functions
   saved register values




Heap

 Technically part of data segment
   located at end of data segment, after all static
   data
 Empty at start of program execution
 Dynamically allocated memory is taken from
 heap for program to use
 Freed memory (by user or garbage
 collection) is returned to heap




                                                      17
Block Diagram of the System

A Von Neuman         Control     CENTRAL
Machine               Unit       PROCESSING
                                 UNIT
                    Arithmetic
                      Logic
                       Unit      BUS



   INPUT             Code                 OUTPUT
                    Segment
   1001100101001                  0010011100011
                      Data
                    Segment
                                 MEMORY




 Arithmetic Logic Unit

  ALU
    The part of a computer that performs all
    arithmetic computations, such as addition and
    multiplication, and all comparison operations




    A typical schematic symbol for an ALU: A & B
    are operands; R is the output; F is the input
    from the Control Unit; D is an output status




                                                    18
Arithmetic Logic Unit…

  The component where data is held
  temporarily
  Calculations occur here
  It knows how to perform operations such as
  ADD, SUB, LOAD, STORE, SHIFT
  It knows the commands that make up the
  machine language of the CPU
  It is the calculator




Control Unit
A computer’s control unit keeps things
  computer’
synchronized
  Makes sure that the correct components are activated as
  the components are needed
  Sends bits down control lines to trigger events
   o   E.g., when Add is performed, the control signal tells the ALU to
       Add
  How do these control lines become asserted?
   o Hardwired control: controllers implement this
                 control:
     program using digital logic components
   o Microprogrammed control: a small program is
                          control:
     placed into read-only memory in the microcontroller
                 read-




                                                                          19
Control Unit: Hardwired Control
Physically connect all of the control lines to the actual
machine instruction
    Instructions are divided into fields and different bits are
    combined with various digital logic components (which
    drive the control line)
The control unit is implemented
using hardware
    The digital circuit uses inputs to
    generate the control signal to
    drive various components
Advantage: very fast
Disadvantage: instruction set
and digital logic are locked




Control Unit: Microprogrammed
Control
 Microprogram: software stored in the CPU control unit
 Converts machine instructions (binary) into control
 signals
 One subroutine for each
 machine instruction
 Advantage: very flexible
 Disadvantage: additional
 layer of interpretation




                                                                  20
Registers

 “A register is a single, permanent storage
 location within the CPU used for a
 PARTICULAR, defined purpose”
                          purpose”
 “A register is used to hold a binary value
 temporarily for storage, for manipulation,
 and/or for simple calculations”
                   calculations”
 Registers have special addresses




Von Neuman Machine Model
                      Main Memory
                    10110111 00110111
     Input                                 Output
                    01101001 11101001
     Data and                              Data
                    00110100 01110100               CPU Cycle
     Instructions
                      ….         ….
                                               Fetch an instruction
                      ….         ….           from the memory cell
        10110111                               where the PC points

PC      01101001                     Bus
        00110100                             Decode the instruction

        01111101           ALU
                                                    Execute the
        11100000                                    instruction
             ….            Control
                            Unit                  Increment the PC
     Program
     Counter               CPU




                                                                      21
Registers

  CPU                          R0                                Input devices




                                                      BUS
                               R1
   Arithmetic/ Logic                                             Output devices
                                      …
            Unit
                               Rn                                Main Memory

                                                                 Secondary
                   Control Unit                                  Storage

Registers are used to hold the data immediately applicable to the operation at
hand;

Main memory is used to hold the data that will be needed in the near future

Secondary storage is used to hold data that will be likely not be needed in the
near future




  Example: Machine Architecture

                                                                  00   0001 0001
     Consider a machine with                                      01   0011 0000
        256 byte Main Memory: 00-FF
                              00-                                 02   0001 0010
                                                                  03   0100 0000
        16 General Purpose Registers: 0-F
                                      0-
                                                                  04   0011 0001
        16 Bit Instruction                                             0100 0000

        8 Bit Integer Format (2’s Complement)
                              (2’
        8 Bit Floating Point Format
        o    1 Sign Bit
        o    3 Exponent Bits
        o    4 Bit Mantissa
        16 Instructions: 1-F
                         1-

                                                                  ff   0100 0000




                                                                                   22
Example: Addition Operation
A   1001 1001
                        R1 10011001
B   0110 1101                                       LOAD R11 ,, A
                                                     LOAD R     A

                        R2 01101101                 LOAD R22 ,, B
                                                     LOAD R     B

                                                    ADD
                                                    ADD     R00 ,, R11 ,,R22
                                                            R      R     R

X                A+B                                STORE R00 ,, X
                                                     STORE R     X
                        R0 01010100


Load the first number from memory cell A into register R1

Load the second number from memory cell B into register R2

Adding the numbers in these two registers and put the result in register R0

Store the result in R0 into the memory call X




Block Diagram of the CPU

                                                       CPU - Central
                                                       Processing Unit

                                                       MAR - Memory Address
                                                       Register

                                                       IR - Instruction Register

                                                       MDR - Memory Data
                                                       Register

                                                       PC - Program Counter

                                                       ALU - Arithmetic Logic
                                                       Unit




                                                                                   23
Instruction Fetch

 The address in the Program Counter is
 placed in MAR

 The addressed instruction is read from
 memory (through the MDR) and placed into
 the Instruction Register




Instruction Execute

 The Instruction Decoder examines the
 instruction in the Instruction Register and
 sends appropriate signals to other parts of the
 CPU to carry out the actions specified by the
 instruction. This may include:
   Reading operands from memory or registers into the
   Arithmetic Logic Unit,
                    Unit,
   Enabling the circuits of the Arithmetic Logic Unit to
   perform arithmetic or other computations,
   Storing data values into memory or registers,
   Changing the value of the Program Counter




                                                           24
The CPU Cycle

 The processor endlessly repeats the cycle:

fetch, execute, fetch, execute, fetch, execute,
fetch, execute, fetch, execute, fetch, execute,
fetch, execute, fetch, execute, fetch, execute,
fetch ...




Fetch and Execute Cycle

 At the beginning of each cycle the CPU
 presents the value of the program counter
 on the address bus

 The CPU then fetches the instruction from
 main memory (possibly via a cache and/or
 a pipeline) via the data bus into the
 instruction register




                                                  25
Fetch and Execute Cycle

 From the instruction register, the data
 forming the instruction is decoded and passed
 to the control unit

 It sends a sequence of control signals to the
 relevant function units of the CPU to perform
 the actions required by the instruction such as
 reading values from registers, passing them to
 the ALU to add them together and writing the
 result back to a register




Fetch and Execute Cycle

 The program counter is then incremented
 to address the next instruction and the
 cycle is repeated




                                                   26
Instruction Set Architecture (ISA)
Instruction sets – definition and features
  Instruction types
  Operand organization
  Number of operands and instruction length
  Addressing
  Instruction execution – pipelining
Features of two machine instruction sets
(CISC and RISC)
Instruction format


                                                        53




Instruction Set Architecture (ISA)
Machine instructions
  Opcodes and operands
High level languages
  Hide detail of the architecture from the programmer
  Easier to program
Why learn computer architectures and
assembly language?
  To understand how the computer works
  To write more efficient programs




                                                             27
Instruction Set Architecture (ISA)
Instruction sets are differentiated by
  Instructions
     types of instructions
     instruction length and number of operands
 Operands
     type (addresses, numbers, characters) and access mode
     location (CPU or memory)
     organization (stack or register based)
       o number of addressable registers
 Memory organization
     byte- or word-addressable
     byte- word-
 CPU instruction execution
     with/without pipelining




Instruction Set Architecture (ISA)
 The instruction set format is critical to the
 machine’s architecture
 machine’
 Performance of instruction set architectures is
 measured by
    Main memory space occupied by a program
    Instruction complexity
    Instruction length (in bits)
    Total number of instructions




                                                             28
Instruction Set Architecture (ISA)
Instruction types
Operand organization
Number of operands and instruction length
Addressing
Instruction execution – pipelining




Instruction Set Architecture (ISA)
 An instruction set, or instruction set architecture
                  set,
 (ISA) describes the aspects of a computer architecture
 visible to a programmer, including the native data-
                                               data-
 types, instructions, registers, addressing modes,
 memory architecture, interrupt and exception handling,
 and external I/O (if any)
 An ISA includes a specification of the set of all binary
 codes (opcodes) that are the native form of
 commands implemented by a particular CPU design
 The set of opcodes for a particular ISA is also known
 as the machine language for the ISA




                                                            29
Instruction Set Architecture (ISA)
 ISAs commonly implemented in hardware
  Alpha AXP (DEC Alpha)
  ARM (Acorn RISC Machine) (Advanced RISC Machine now ARM
  Ltd)
  IA-64 (Itanium)
  IA-
  MIPS
  Motorola 68k
  PA-RISC (HP Precision Architecture)
  PA-
  IBM POWER
  PowerPC
  SPARC
  SuperH
  VAX (Digital Equipment Corporation)
  x86 (IA-32, Pentium, Athlon) (AMD64, EM64T)
       (IA-




Machine Instructions

 Data Transfer: transfer data between
 registers and memory cells

 Arithmetic/Logic Operations: perform
 addition, AND, OR, XOR and etc.

 Control Operations: control the execution
 of the program




                                                            30
Data Transfer Instructions

1. L R , A           LOAD the register R with the
                     content of memory cell A
2. LI R , I          LOAD the register R with I (I is
                     called an immediate number)
3. ST R , A          STORE the content of the register R
                     to the memory cell whose address
                     is A
4. LR R1 , R2 LOAD the register R1 with the
              content of the register R2




 Example: Data Transfer Instructions

Swap the content of two memory cells 30(16) and 40(16)

                                            30   0110 1101


                                            40   10011010
 L 1 ,, 30
  L 1 30       /*Load R with the content
              /*Load R11with the content
               in memory cell 30 */
              in memory cell 30 */

 L 2 ,, 40
  L 2 40       /* Load R with the content
              /* Load R22with the content
               in memory cell 40 */
              in memory cell 40 */

 ST 1 ,, 40
  ST 1 40      /* Store R to 40 */
              /* Store R11to 40 */

                                            R1 01101101
 ST 2 ,, 30
  ST 2 30      /* Store R to 30 */
              /* Store R22to 30 */
                                            R2 10011010




                                                             31
Example: Data Transfer Instructions

Swap the content of two memory cells 30(16) and 40(16)

                                                 10011010
                                            30   0110 1101

                                                 01101101
                                            40   10011010
 L 1 ,, 30
  L 1 30       /*Load R with the content
              /*Load R11with the content
               in memory cell 30 */
              in memory cell 30 */

 L 2 ,, 40
  L 2 40       /* Load R with the content
              /* Load R22with the content
               in memory cell 40 */
              in memory cell 40 */

 ST 1 ,, 40
  ST 1 40      /* Store R to 40 */
              /* Store R11to 40 */

                                            R1 01101101
 ST 2 ,, 30
  ST 2 30      /* Store R to 30 */
              /* Store R22to 30 */
                                            R2 10011010




 Arithmetic/Logic Instructions (I)
Arithmetic Instructions

5. ADD R0, R1, R2             ADD the numbers in R1 and
                              R2 representing in 2’s
                                                 2’
                              complement and place the
                              result in R0


6. AFP R0, R1, R2             ADD the numbers in R1 and
                              R2 representing in floating-
                                                 floating-
                              point and place the result in
                              R0




                                                              32
Arithmetic/Logic Instructions (I)

                                    Memory
 Example: Addition
                               A0   10011001    = -25
                               A1   01101101    = 109




                               X0   01010100    = 84
  L 1 ,, A0
   L 1 A0

  L 2 ,, A1
   L 2 A1
                                    Registers
  ADD 0 ,,1 ,,2
  ADD 0 1 2
                               R0 01010100
  ST 0 ,, X0
   ST 0 X0
                               R1 10011001

                               R2 01101101




 Arithmetic/Logic Instructions (II)

Logic Instructions

7. OR R0, R1, R2     OR the bit patterns in R1 and
                     R2 and place the result in R0


8. AND R0, R1, R2    AND the bit patterns in R1 and
                     R2 and place the result in R0

9. XOR R0, R1, R2 XOR the bit patterns in R1 and
                  R2 and place the result in R0




                                                        33
Arithmetic/Logic Instructions (II)

                                                Memory
Example: Mask the first 4 bits of
the binary string in memory A0             A0   10011011




                                           X0   00001011
 L 1 ,, A0
  L 1 A0

 LI 2 ,, OF
  LI 2 OF
                                                Registers
 ADD 0 ,,1 ,,2
 ADD 0 1 2
                         R0 00001011       R0
 ST 0 ,, X0
  ST 0 X0
                         R1 10011011       R1 10011011

                         R2 00001111       R2 00001111




 Arithmetic/Logic Instructions (II)
Example: Masking                           A0   10011001
                                                10011001
                                           A1   11011011
                                                11011011

 L 1 ,, A0
  L 1 A0

 L 2 ,, A1
  L 2   A1                                 X0   11011001
                                                11011001


 LI 3 ,, 0F
  LI 3 0F

 LI 4 ,, F0
  LI 4 F0
                           R0   11011001   R0

 AND 1 ,,1 ,,3
 AND 1 1 3
                                00001001
                                00001001   R1   10011001
                           R1
 AND 2 ,,2 ,,4
 AND 2 2 4
                           R2   11010000
                                11010000   R2   11011011

 OR 0 ,,1 ,,2
 OR 0 1 2
                           R3   00001111   R3   00001111

 ST 0 ,, X0
  ST 0 X0
                           R4   11110000   R4   11110000




                                                            34
Arithmetic/Logic Instructions (III)
Bit String Operating Instructions

B. RR R , I                  ROTATE the bit patterns in R
                             to right I times. Each time
                             place the bit that started at the
                             low-order end at the high-
                             low-                    high-
                             order end
Example RR , 0 , 02
          Original String        1   0   1   1   0   0   0   1


                                 1   1   0   1   1   0   0   0


          Resulting String       0   1   1   0   1   1   0   0




 Control Instructions

E. JMP R , A                 JUMP the instruction located
                             in the memory cell A if the bit
                             pattern in R is equal to the
                             one in R


F. HALT                      HALT the execution




                                                                 35
Example: Control Instructions


30   LI 0 ,, 0A
      LI 0    0A
                                                                                           R0 = 0A
32   LI 1 ,, 00
      LI 1    00

                                                                                           R1 = 00
34   LI 2 ,, 01
      LI 2    01
                                                            R0        00001010
36   ADD 3 ,, 1, 2
     ADD 3 1, 2
                                                                                           R2 = 01
                                                            R1        00000000
38   JMP 3 ,, 3E
      JMP 3 3E
                                                            R2        00000001            R3 = R1 +R2
3A   LR 1 ,,3
      LR 1 3
                                                                                                         Yes
                                                            R3        00000001
3C   JMP 0 ,,36
      JMP 0 36                                                                              R3 = R0 ?

                                                                                                  No
3E   HALT
     HALT
                                                                                            R1 = R3




                                                                                          Instruction
                                                                          Program         Register
     The CPU Cycle                                                        Counter

                                                                                    Control Unit
                                                                          8 bit
                                                                          bus                          Circuits


      Code Segment

     A   30   21   17   31   80   21   F5   31   81   11   80   12   81                              General
         3C   23   FF   94   23   23   01   52   34   53   12   33   82
     d   48   11   82   22   80   83   12   20   00   E3   5E   11   80                              Purpose
     d   54   12   81   31   7F   31   80   12   7F   32   81   F0   00                              Registers
     r   74
     e   80
     s   8C
         98
     s
         Main Memory                         Data Segment
                                                                                    ALU




                                                                                                                  36
Operand Organization


 Three choices
   Accumulator architecture
   General Purpose Register (GPR) architecture
   Stack architecture




Operand Organization – Accumulator
Architecture
 One operand of a binary operation is
 implicitly in the accumulator
 Advantage
   Minimizes the internal complexity of the machine
   Allows for very short instructions
 Disadvantage
   Memory traffic is very high
   Programming is cumbersome




                                                      37
Operand Organization – General
Purpose Register (GPR) Architecture
 Uses sets of general purpose registers
 Advantage
   Register sets are faster than memory
   Easy for compilers to deal with
   Due to low costs large numbers of these registers
   are being added
 Disadvantage
   Results in longer instructions (longer fetch and
   decode times)




Operand Organization – General
Purpose Register (GPR) Architecture
 Three types
   Memory-memory
   Memory-
    o may have two or three operands in memory
    o an instruction may perform an operation without
      requiring any operand to be in a register
   Register-memory
   Register-
    o at least one operand must be in a register and one
      in memory
   Load-store
   Load-
    o requires data to be moved into registers before any
      operation is performed




                                                            38
Operand Organization – Stack
Architecture
Uses a stack to execute instructions
Operations:
  PUSH – put a value on
  top of the stack
  POP – read top value
  and move down the
  “stack pointer”
          pointer”
Example:                              5
                                      9
  POP                                 7
  PUSH 9                              2




Operand Organization – Stack
Architecture
Instructions implicitly refer to values at the top
of the stack
  data can be accessed only from the top of the stack,
  one word at a time
Advantage
  Good code density
  Simple model for evaluation of expressions
Disadvantage
  Restricts the sequence of operand processing
  Execution bottleneck (the stack is located in memory)




                                                          39
Operand Organization – Stack
Architecture
Stack architecture requires us to think about
arithmetic expressions in a new way
  We are used to Infix notation
   o E.g., Z = X + Y

  Stack arithmetic requires Postfix notation:
                                    notation:
   o E.g., Z = XY+
   o Postfix notation is also know as
     Reverse Polish Notation




Stack Architecture – Postfix Notation
Postfix notation doesn’t need parentheses
                   doesn’
E.g.,
   The infix expression      Z = (X * Y) + (W * U)
   is the postfix expression Z = X Y * W U * +
  Calculating Z = X Y * W U * +     in a stack ISA
          PUSH X
          PUSH   Y
          MULT               Binary operators
          PUSH   W           • pop the two operands on the
          PUSH   U             stack top, and
          MULT               • push the result on the stack
          ADD
          POP    Z




                                                              40
Number of Operands and Instruction
 Length
   The number of operands in each instruction
   affects the length of the instruction
   Instruction length can be
       Fixed – quick to decode but wastes space
       Variable – more complex to decode but saves space
   All architectures limit the number of operands
   allowed per instruction
       Stack architecture has 0 or 1 explicit operand
       Accumulator architecture has 0 or 1 explicit operand
       GPR architecture has 1, 2 or 3 operands




 Number of Operands - Example
 Calculating the infix expression Z = X * Y + W * U

     One operand            Two operands          Three operands

     LOAD     X             LOAD    R1,X          MULT R1,X,Y
     MULT     Y             MULT    R1,Y          MULT R2,W,U
     STORE    TEMP          LOAD    R2,W          ADD Z,R1,R2
     LOAD     W             MULT    R2,U
     MULT     U             ADD     R1,R2
     ADD      TEMP          STORE   Z,R1
     STORE    Z
                              The first operand is often the
The accumulator is the        destination for the result of the
destination for the           instruction
result of the instruction




                                                                   41
Coding Instruction

16 bit Instruction (2 bytes)
      High-Order Byte
      High-                                Low-Order Byte
                                           Low-




                                                     Bits 4-15 Operands
                                                          4-

                                                     Bits 0-3 OpCode
                                                          0-


 0   0    1   0   0   1       0   0    0   1     1   1      1   1      0   0

         LI               4                            7C


 The machine code 0010010001111100 represents the instruction LI 4 , 7C




Instruction Formats

16 bit Instruction (2 bytes)

 Format 1         Register            Immediate Value


 Format 2         Register            Memory Address


 Format 3         Register            Register           Register


 Format 4         Unused (zero) Register                 Register




                                                                               42
Format 1 Instruction

Format 1 Instruction

Format 1   Register       Immediate Value


Opcode     Instruction         Meaning
  2        LI    R , I         Load Immediate
  A        RL     R , I        Rotate Left
  B        RR     R , I        Rotate Right
  C        SL     R, I         Shift Left
  D        SR     R , I        Shift Right




Format 1 Instruction


Format 1   Register       Immediate Value




1. COPY THE BIT PATTERN IN THE LOW-ORDER BYTE
                               LOW-
   INTO THE SPECIFIED REGISTER , OR
2. SHIFT/ROTATE THE BITS IN THE SPECIFIED
   REGISTER THE NUMBER OF PLACES SPECIFIED
   IN THE LOW-ORDER BYTE.
          LOW-




                                                43
Format 2 Instruction

Format 2 Instruction

Format 2      Register        Memory Address



Opcode         Instruction           Meaning
    1          L R , A               Load from Memory
    3          ST R , A              Store to Memory
    E          JMP R , A             Conditional Jump




Format 2 Instruction

Format 2      Register        Memory Address




1. Load - Copy the value stored at the Memory Address
   into the specified register
2. Store - Copy the value in the specified register to the
   Memory Address
3. Jump - Compare the contents of the specified register
   and the contents of Register 0. If equal reset the
   Program Counter to the Memory Address




                                                             44
Format 3 Instruction

Format 3 Instruction

Format 3      Register         Register     Register


Opcode        Instruction                  Meaning
   5          ADD R0, R1, R2               Load Immediate
   6          AFP     R 0, R 1, R 2        Rotate Left
   7          OR      R 0, R 1, R 2        Rotate Right
   8          AND     R 0, R 1, R 2        Shift Left
   9          XOR     R 0, R 1, R 2        Shift Right




Format 3 Instruction


Format 3      Register         Register     Register




Apply the operation to the two values in the registers
specified in the Low-Order byte and store the result in the
                 Low-
register specified in the High-Order byte
                          High-




                                                              45
Format 4 Instruction

Format 4 Instruction


Format 4      Unused (zero) Register         Register




Opcode        Instruction           Meaning
    4         LR R1 , R2            Load Register




Format 4 Instruction



Format 4      Unused (zero) Register         Register




Copy the value in the second register specified in the
Low-Order byte to the first register specified in the
Low-
Low-Order byte
Low-




                                                         46
Full Instruction Set

 1. L
1. L     R ,, A
         R    A                           9. XOR R00,, R11, R22
                                           9. XOR R    R, R

2. LI R ,, II
 2. LI R                                  A. RL
                                          A. RL    R ,, II
                                                   R

3. ST R ,, A
 3. ST R   A                              B. RR
                                          B. RR      R ,, II
                                                     R

4. LR R11,, R22
 4. LR R    R                              C. SL
                                          C. SL      R ,, II
                                                     R

5. ADD R00,, R11, R22
 5. ADD R    R, R                         D. SR
                                          D. SR      R ,, II
                                                     R

6. AFP R00,, R11, R22
 6. AFP R    R, R                         E. JMP R ,, A
                                           E. JMP R A

 7. OR
7. OR     R00,, R11, R22
          R     R, R                       F. HALT
                                          F. HALT

8. AND R00,, R11, R22
 8. AND R    R, R




Examples of OpCode
         Name              Comment                   Syntax
                          TRANSFER
   MOV              Move (copy)               MOV Dest,Source
   PUSH             Push onto stack           PUSH Source
   POP              Pop from stack            POP Dest
   IN               Input                     IN Dest, Port
   OUT              Output                    OUT Port, Source

                          ARITHMETIC
   ADD              Add                       ADD Dest,Source
   SUB              Subtract                  SUB Dest,Source
   DIV              Divide (unsigned)         DIV Op
   MUL              Multiply (unsigned)       MUL Op
   INC              Increment                 INC Op
   DEC              Decrement                 DEC Op
   CMP              Compare                   CMP Op1,Op2




                                                                  47
Examples of OpCode
          Name                 Comment             Syntax
                                 LOGIC
    NEG                Negate (two-complement) NEG Op
                               (two-
    NOT                Invert each bit         NOT Op
    AND                Logical and             AND Dest,Source
    OR                 Logical or              OR Dest,Source
    XOR                Logical exclusive or    XOR Dest,Source

                                JUMPS
    CALL               Call subroutine             CALL Proc
    JMP                Jump                        JMP Dest
    JE                 Jump if Equal               JE Dest
    JZ                 Jump if Zero                JZ Dest
    RET                Return from subroutine      RET
    JNE                Jump if not Equal           JNE Dest
    JNZ                Jump if not Zero            JNZ Dest




 Coding Program: Example
                                                               10   0001 0001
Assembler
Assembler          Machine Code
                   Machine Code                Hexa
                                               Hexa
                                                               11   0011 0000

L 1 ,, 30
 L 1 30        0001 0001 0011 0000
              0001 0001 0011 0000               1130
                                               1130            12   0001 0010
                                                               13   0100 0000
L 2 ,, 40
 L 2 40        0001 0010 0100 0000
              0001 0010 0100 0000               1240
                                               1240            14   0011 0001
                                                               15   0100 0000
ST 1 ,, 40
 ST 1 40       0011 0001 0100 0000
              0011 0001 0100 0000               3140
                                               3140
                                                               16   0011 0010

ST 2 ,, 30
 ST 2 30       0011 0010 0011 0000
              0011 0010 0011 0000               3230
                                               3230            17   0011 0000




     30    0110 1101     A
                              R1   0110 1101                   30   0110 1101

     40    1001 1001     B
                              R2   1001 1001                   40   1001 1001




                                                                                48
CPU Cycle (Machine Cycle)

                                                FETCH
          CPU Cycle                             DECODE
      Fetch an instruction
                                                EXECUTE
     from the memory cell
      where the PC points


                                1.   Retrieve the next                                 2.    Decode the bit
     Decode the instruction          instruction from                                        pattern in the
                                     memory (as                                              instruction
                                     indicated by the                                        register
                                     program counter)
                                     and then increment
          Execute the




                                                                             D
                                     the program counter




                                                                              ec
                                                                                od
          instruction




                                                           h




                                                                                  e
                                                        tc
                                                      Fe
       Increment the PC
                                                                    Execute


                                                           3.   Perform the action
                                                                requested by the
                                                                instruction in the
                                                                instruction register




Program Execution: Swap Example

                                     PC               10        0001 0001

      FETCH                                           11        0011 0000
                                                                                            R0
                                                      12        0001 0010
      DECODE
                                                      13        0100 0000
      EXECUTE                                                                               R1
                                                      14        0011 0001
                                                      15        0100 0000
                                                      16
                                                                                            R2
                                                                0011 0010
                                                      17        0011 0000
                                                                                                      …..
LL    1 ,, 30
       1 30              1130
                        1130

LL    2 ,, 40
       2 40              1240
                        1240                                                                RF

ST 1 ,, 40
 ST 1 40                 3140
                        3140
                                                      30        0110 1101

ST 2 ,, 30
 ST 2 30                 3230
                        3230
                                                      40        1001 1001




                                                                                                              49
Execute a Program
                                              R0
                        PC   10   0001 0001

   FETCH                     11   0011 0000
                                              R1
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0001 0011 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101

                                              ST 1 ,, 40
                                               ST 1    40
                             40   1001 1001
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                        PC   10   0001 0001

   FETCH                     11   0011 0000
                                              R1
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0001 0011 0000                    RF


                                              LL  1 ,, 30
                                                   1    30
Operation-code : 0001
Operation-
                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101
Register       : 0001
                                              ST 1 ,, 40
                                               ST 1     40
Memory address : 0011 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2     30




                                                                50
Execute a Program
                                              R0
                        PC   10   0001 0001

   FETCH                     11   0011 0000
                                              R1
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0001 0011 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
Operation-code : 0001
Operation-
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101
Register       : 0001
                                              ST 1 ,, 40
                                               ST 1    40
Memory address : 0011 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                        PC   10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0001 0011 0000                    RF


                                              LL  1 ,, 30
                                                   1    30
Operation-code : 0001
Operation-
                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101
Register       : 0001
                                              ST 1 ,, 40
                                               ST 1     40
Memory address : 0011 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2     30




                                                                51
Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                        PC   12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0001 0011 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
Operation-code : 0001
Operation-
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101
Register       : 0001
                                              ST 1 ,, 40
                                               ST 1    40
Memory address : 0011 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                        PC   12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0010 0100 0000                    RF


                                              LL  1 ,, 30
                                                   1    30

                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101

                                              ST 1 ,, 40
                                               ST 1     40
                             40   1001 1001
                                              ST 2 ,, 30
                                               ST 2     30




                                                                52
Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                        PC   12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0010 0100 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
Operation-code : 0001
Operation-
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101
Register       : 0010
                                              ST 1 ,, 40
                                               ST 1    40
Memory address : 0100 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                        PC   12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0010 0100 0000                    RF


                                              LL  1 ,, 30
                                                   1    30
Operation-code : 0001
Operation-
                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101
Register       : 0010
                                              ST 1 ,, 40
                                               ST 1     40
Memory address : 0100 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2     30




                                                                53
Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                        PC   12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                             14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0001 0010 0100 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
Operation-code : 0001
Operation-
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101
Register       : 0010
                                              ST 1 ,, 40
                                               ST 1    40
Memory address : 0100 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                        PC   14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
                             17   0011 0000
                                              RF


                                              LL  1 ,, 30
                                                   1    30

                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101

                                              ST 1 ,, 40
                                               ST 1     40
                             40   1001 1001
                                              ST 2 ,, 30
                                               ST 2     30




                                                                54
Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                        PC   14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0011 0001 0100 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101

                                              ST 1 ,, 40
                                               ST 1    40
                             40   1001 1001
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                        PC   14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0011 0001 0100 0000                    RF


                                              LL  1 ,, 30
                                                   1    30
Operation-code : 0011
Operation-
                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101
Register       : 0001
                                              ST 1 ,, 40
                                               ST 1     40
Memory address : 0100 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2     30




                                                                55
Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                        PC   14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0011 0001 0100 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
Operation-code : 0011
Operation-
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101
Register       : 0001
                                              ST 1 ,, 40
                                               ST 1    40
Memory address : 0100 0000   40   1001 1001
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                        PC   14   0011 0001
                             15   0100 0000          …..
                             16   0011 0010
Instruction:
                             17   0011 0000
       0011 0001 0100 0000                    RF


                                              LL  1 ,, 30
                                                   1    30
Operation-code : 0011
Operation-
                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101
Register       : 0001
                                              ST 1 ,, 40
                                               ST 1     40
Memory address : 0100 0000   40   0110 1101
                                              ST 2 ,, 30
                                               ST 2     30




                                                                56
Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                             14   0011 0001
                             15   0100 0000          …..
                      PC     16   0011 0010
                             17   0011 0000
                                              RF


                                              LL   1 ,,
                                                    1      30
                                                          30
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101

                                              ST 1 ,, 40
                                               ST 1    40
                             40   0110 1101
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                             14   0011 0001
                             15   0100 0000          …..
                      PC     16   0011 0010
Instruction:
                             17   0011 0000
       0011 0010 0011 0000                    RF


                                              LL  1 ,, 30
                                                   1    30

                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101

                                              ST 1 ,, 40
                                               ST 1     40
                             40   0110 1101
                                              ST 2 ,, 30
                                               ST 2     30




                                                                57
Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                             14   0011 0001
                             15   0100 0000          …..
                        PC   16   0011 0010
Instruction:
                             17   0011 0000
       0011 0010 0011 0000                    RF


                                              LL   1 ,,
                                                    1      30
                                                          30
Operation-code : 0011
Operation-
                                              LL   2 ,,
                                                    2      40
                                                          40
                             30   0110 1101
Register       : 0010
                                              ST 1 ,, 40
                                               ST 1    40
Memory address : 0011 0000   40   0110 1101
                                              ST 2 ,, 30
                                               ST 2    30




Execute a Program
                                              R0
                             10   0001 0001

   FETCH                     11   0011 0000
                                              R1   0110 1101
                             12   0001 0010
   DECODE
                             13   0100 0000
   EXECUTE                                    R2   1001 1001
                             14   0011 0001
                             15   0100 0000          …..
                        PC   16   0011 0010
Instruction:
                             17   0011 0000
       0011 0010 0011 0000                    RF


                                              LL  1 ,, 30
                                                   1    30
Operation-code : 0011
Operation-
                                              LL  2 ,, 40
                                                   2    40
                             30   0110 1101
Register       : 0010
                                              ST 1 ,, 40
                                               ST 1     40
Memory address : 0011 0000   40   0110 1101
                                              ST 2 ,, 30
                                               ST 2     30




                                                                58
Execute a Program
                                                               R0
                                       10     0001 0001

    FETCH                              11     0011 0000
                                                               R1   0110 1101
                                       12     0001 0010
    DECODE
                                       13     0100 0000
    EXECUTE                                                    R2   1001 1001
                                       14     0011 0001
                                       15     0100 0000               …..
                               PC      16     0011 0010
 Instruction:
                                       17     0011 0000
          0011 0010 0011 0000                                  RF


                                                               LL   1 ,,
                                                                     1      30
                                                                           30
 Operation-code : 0011
 Operation-
                                                               LL   2 ,,
                                                                     2      40
                                                                           40
                                       30     1001 1001
 Register             : 0010
                                                               ST 1 ,, 40
                                                                ST 1    40
 Memory address : 0011 0000            40     0110 1101
                                                               ST 2 ,, 30
                                                                ST 2    30




 Coding Program: An Example
Assembler
Assembler         Machine Code
                  Machine Code             Hexa
                                           Hexa           10    0001 0001
                                                          11    0011 0000
L 1 ,, 30
 L 1 30       0001 0001 0011 0000
             0001 0001 0011 0000            1130
                                           1130           12    0001 0010
                                                          13    0100 0000
L 2 ,, 40
 L 2 40       0001 0010 0100 0000
             0001 0010 0100 0000            1240
                                           1240
                                                          14    0011 0001

ST 1 ,, 40
 ST 1 40      0011 0001 0100 0000           3140          15    0100 0000
             0011 0001 0100 0000           3140
                                                          16    0011 0010
ST 2 ,, 30
 ST 2 30      0011 0010 0011 0000
             0011 0010 0011 0000            3230
                                           3230           17    0011 0000




     30   1001 1001   A   R1   0110 1101
                                                          30    1001 1001

     40   0110 1101   B   R2   1001 1001
                                                          40    0110 1101




                                                                                 59
Assembler Code for A:=23, B:=-11;



LI 1 ,, 17
LI 1 17      LOAD 23 IN HEX INTO R1
             LOAD 23 IN HEX INTO R1

ST 1 ,, A
ST 1    A    STORE VALUE AT A
             STORE VALUE AT A

LI 1 ,, F5
LI 1 F5      LOAD --11 IN HEX INTO R1
             LOAD 11 IN HEX INTO R1

ST 1 ,, B
ST 1 B       STORE VALUE AT B
             STORE VALUE AT B




 Machine Code for A:=23, B:=-11;



LI 1 ,, 17
LI 1 17      2117
             2117   00100001 00010111
                    00100001 00010111

ST 1 ,, A
ST 1 A       3180
             3180   00110001 10000000
                    00110001 10000000

LI 1 ,, F5
LI 1 F5      21F5
             21F5   00100001 11110101
                    00100001 11110101

ST 1 ,, B
ST 1    B    3181
             3181   00110001 10000001
                    00110001 10000001




                                        60
Assembler Code for C:=A-B;

L 1 ,, A
L 1 A                LOAD A INTO R1
                     LOAD A INTO R1
L 2 ,, B
L 2    B             LOAD B INTO R2
                     LOAD B INTO R2
LI 3 ,, FF
LI 3 FF              SET MASK TO FLIP B
                     SET MASK TO FLIP B
XOR 4 ,, 2 ,, 3
XOR 4 2 3            FLIP B
                     FLIP B
LI 3 ,, 01
LI 3 01              LOAD 1 INTO R3
                     LOAD 1 INTO R3
ADD 2 ,, 3 ,, 4
ADD 2 3 4            ADD 1 TO FLIPPED B
                     ADD 1 TO FLIPPED B
ADD 3 ,, 1 ,, 2
ADD 3 1 2            NOW DO R3 = A + B
                     NOW DO R3 = A + B
ST 3 ,, C
ST 3 C               STORE R3 AT C
                     STORE R3 AT C




 Machine Code for C:=A-B;

L 1 ,, A
L 1 A             1180
                  1180    00010001 10000000
                          00010001 10000000
L 2 ,, B
L 2    B          1281
                  1281    00010010 10000001
                          00010010 10000001
LI 3 ,, FF
LI 3 FF           23FF
                  23FF    00100011 11111111
                          00100011 11111111
XOR 4 ,, 2 ,, 3
XOR 4 2 3         9423
                  9423    10010100 00100011
                          10010100 00100011
LI 3 ,, 01
LI 3 01           2301
                  2301    00100011 00000001
                          00100011 00000001
ADD 2 ,, 3 ,, 4 5234
ADD 2 3 4 5234            01010010 00110100
                          01010010 00110100
ADD 3 ,, 1 ,, 2 5312
ADD 3 1 2 5312            01010011 00010010
                          01010011 00010010
ST 3 ,, C
ST 3 C            3382
                  3382    00110011 10000010
                          00110011 10000010




                                              61
Example Program
PROGRAM Sort;
   VAR
       A,B,C : INTEGER;
   PROCEDURE Swap (VAR X,Y : INTEGER);
  VAR
       Temp : INTEGER;
BEGIN {Swap}
  Temp := A;
  A := B;
  B := Temp;
END {Swap};
BEGIN {Sort}
  C := A-B;
       A-
  IF C = 0 THEN
      Swap (A,B);
END {Sort}.




 Assembler and Machine Code

30   LI 1,17     2117     48   L 1,C       1182
32   ST 1,A      3180     4A   LI 2,80     2280
34   LI 1,F5     21F5     4C   AND 3,1,2   8312
36   ST 1,B      3181     4E   LI 0,00     2000
38   L 1,A       1180
                          50   JMP 3,5E    E35E
3A   L 2,B       1281
                          52   L 1,A       1180
3C   LI 3,FF     23FF
                          54   L 2,B       1281
3E   XOR 4,2,3   9423
40   LI 3,01     2301     56   ST 1,TEMP   317F
42   ADD 2,3,4   5234     58   ST 2,A      3180
44   ADD 3,1,2   5312     5A   L 2,TEMP    127F
46   ST 3,C      3382     5C   ST 2,B      3281
                          5E   HALT        F000




                                                  62
Code Loaded in Memory


      30        21        17        31        80        21        F5   31   81   11   80   12   81
      3C        23        FF        94        23        23        01   52   34   53   12   33   82
      48        11        82        22        80        83        12   20   00   E3   5E   11   80
      54        12        81        31        7F        31        80   12   7F   32   81   F0   00

      74
      80
      8C
      98




                                                                                           Instruction
The CPU Cycle                                                          Program
                                                                       Counter
                                                                                           Register

Cycle Status (illustration only)
                                                                                  Control Unit
                                                                       8 bit
       FETCH                                                           bus                           Circuits
       DECODE
       EXECUTE

                Code Segment
  A   30   21   17   31   80   21   F5   31   81   11   80   12   81                                 General
      3C   23   FF   94   23   23   01   52   34   53   12   33   82
  d   48   11   82   22   80   83   12   20   00   E3   5E   11   80
                                                                                                     Purpose
  d   54   12   81   31   7F   31   80   12   7F   32   81   F0   00                                 Registers
  r   74
  e   80
  s   8C
      98
  s
      Main Memory                             Data Segment
                                                                                  ALU




                                                                                                                 63
The CPU Cycle
                                                                       Control Unit

  FETCH                                                           30
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                       Control Unit

  FETCH                                                           30                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48
 54
      11
      12
           82
           81   21
                22
                31
                     80
                     7F
                          83
                          31
                               12
                               80
                                    20
                                    12
                                         00
                                         7F
                                              E3
                                              32
                                                   5E
                                                   81
                                                        11
                                                        F0
                                                             80
                                                             00

 74
 80
 8C
 98

 Main Memory                                                           ALU




                                                                                           64
The CPU Cycle
                                                                   Control Unit

  FETCH                                                           30              21 17
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80
 54   12   81   31   17
                     7F   31   80   12   7F   32   81   F0   00

 74
 80
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                   Control Unit

  FETCH                                                           32              21 17
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80
 8C
 98

 Main Memory                                                           ALU




                                                                                          65
The CPU Cycle
                                                                   Control Unit

  FETCH                                                           32              21 17
                                                                                  21
  DECODE
  EXECUTE                                                                    LI

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                   Control Unit

  FETCH                                                           32              21 17
                                                                                  21
  DECODE
  EXECUTE                                                                    LI

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C
 48
      23
      11
           FF
           82
                94
                22
                     23
                     80
                          23
                          83
                               01
                               12
                                    52
                                    20
                                         34
                                         00
                                              53
                                              E3
                                                   12
                                                   5E
                                                        33
                                                        11
                                                             82
                                                             80              17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80
 8C
 98

 Main Memory                                                           ALU




                                                                                          66
The CPU Cycle
                                                                   Control Unit

  FETCH                                                           32              31 17
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   31
                          83   12   20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                   Control Unit

  FETCH                                                           32              31 80
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48
 54
      11
      12
           82
           81
                22
                31
                     80
                     7F
                          83
                          31
                               12
                               80
                                    80
                                    20
                                    12
                                         00
                                         7F
                                              E3
                                              32
                                                   5E
                                                   81
                                                        11
                                                        F0
                                                             80
                                                             00
                                                                         17



 74
 80
 8C
 98

 Main Memory                                                           ALU




                                                                                          67
The CPU Cycle
                                                                   Control Unit

  FETCH                                                           34              31 80
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                   Control Unit

  FETCH                                                           34              31 80
                                                                                  21
  DECODE
  EXECUTE

                                                                         ST
 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80
                                                                         17
 8C
 98

 Main Memory                                                           ALU




                                                                                          68
The CPU Cycle
                                                                   Control Unit

  FETCH                                                           34              31 80
                                                                                  21
  DECODE
  EXECUTE

                                                                         ST
 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00
                17
 74
 80
                                                                         17
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                   Control Unit

  FETCH                                                           34              21 80
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   21
                                    20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80 17
 8C
 98

 Main Memory                                                           ALU




                                                                                          69
The CPU Cycle
                                                                   Control Unit

  FETCH                                                           34              21 F5
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   F5
                                         00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80 17
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                   Control Unit

  FETCH                                                           36              21 F5
                                                                                  21
  DECODE
  EXECUTE

 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80 17
 8C
 98

 Main Memory                                                           ALU




                                                                                          70
The CPU Cycle
                                                                   Control Unit

  FETCH                                                           36               21 F5
                                                                                   21
  DECODE
  EXECUTE

                                                                              LI
 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80 17
                                                                              17
 8C
 98

 Main Memory                                                           ALU




The CPU Cycle
                                                                   Control Unit

  FETCH                                                           36               21 F5
                                                                                   21
  DECODE
  EXECUTE

                                                                              LI
 30   21   17   31   80   21   F5   31   81   11   80   12   81
 3C   23   FF   94   23   23   01   52   34   53   12   33   82
 48   11   82   22   80   83   12   20   00   E3   5E   11   80          17
 54   12   81   31   7F   31   80   12   7F   32   81   F0   00

 74
 80 17
                                                                              F5
 8C
 98

 Main Memory                                                           ALU




                                                                                           71
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu
Lecture#06   inner workings of the cpu

Weitere ähnliche Inhalte

Was ist angesagt?

Online Systems, Functions, and Platforms
Online Systems, Functions, and PlatformsOnline Systems, Functions, and Platforms
Online Systems, Functions, and PlatformsMaria Eloisa Blanza
 
Chapter 5 - Digital Security, Ethics, Privacy.pptx
Chapter 5 - Digital Security, Ethics, Privacy.pptxChapter 5 - Digital Security, Ethics, Privacy.pptx
Chapter 5 - Digital Security, Ethics, Privacy.pptxFannyKwok1
 
Multimedia Issues and Problems
Multimedia Issues and ProblemsMultimedia Issues and Problems
Multimedia Issues and Problemslondonnrmitchell
 
Introduction to Software Licensing
Introduction to Software LicensingIntroduction to Software Licensing
Introduction to Software Licensingtravellingpolander
 
Software for home, personal, and educational use
Software for home, personal, and educational useSoftware for home, personal, and educational use
Software for home, personal, and educational usearietskee
 
Chapter 10 Communications and Networks
Chapter 10 Communications and NetworksChapter 10 Communications and Networks
Chapter 10 Communications and Networksxtin101
 
Chapter 4 : SOUND
Chapter 4 : SOUNDChapter 4 : SOUND
Chapter 4 : SOUNDazira96
 
Privacy , Security and Ethics Presentation
Privacy , Security and Ethics PresentationPrivacy , Security and Ethics Presentation
Privacy , Security and Ethics PresentationHajarul Cikyen
 
Statutory laws pertaining to cybercrimes in india
Statutory laws pertaining to cybercrimes in indiaStatutory laws pertaining to cybercrimes in india
Statutory laws pertaining to cybercrimes in indiaDr. Arun Verma
 
L1 introduction to information and communication technology
L1 introduction to information and communication technologyL1 introduction to information and communication technology
L1 introduction to information and communication technologyLevie Catalbas
 
The Internet and World Wide Web
The Internet and World Wide WebThe Internet and World Wide Web
The Internet and World Wide Websamina khan
 
The evolution of media
The evolution of mediaThe evolution of media
The evolution of mediaJasseinOppus
 
Computer Security Presentation
Computer Security PresentationComputer Security Presentation
Computer Security PresentationPraphullaShrestha1
 
Workshop on Cyber security and investigation
Workshop on Cyber security and investigationWorkshop on Cyber security and investigation
Workshop on Cyber security and investigationMehedi Hasan
 

Was ist angesagt? (20)

Defamation on the Internet
Defamation on the InternetDefamation on the Internet
Defamation on the Internet
 
Online Systems, Functions, and Platforms
Online Systems, Functions, and PlatformsOnline Systems, Functions, and Platforms
Online Systems, Functions, and Platforms
 
Chapter 5 - Digital Security, Ethics, Privacy.pptx
Chapter 5 - Digital Security, Ethics, Privacy.pptxChapter 5 - Digital Security, Ethics, Privacy.pptx
Chapter 5 - Digital Security, Ethics, Privacy.pptx
 
Multimedia Issues and Problems
Multimedia Issues and ProblemsMultimedia Issues and Problems
Multimedia Issues and Problems
 
Multimedia Evolution
Multimedia EvolutionMultimedia Evolution
Multimedia Evolution
 
Introduction to Software Licensing
Introduction to Software LicensingIntroduction to Software Licensing
Introduction to Software Licensing
 
Software for home, personal, and educational use
Software for home, personal, and educational useSoftware for home, personal, and educational use
Software for home, personal, and educational use
 
ICT Today
ICT TodayICT Today
ICT Today
 
Multimedia
MultimediaMultimedia
Multimedia
 
Chapter 10 Communications and Networks
Chapter 10 Communications and NetworksChapter 10 Communications and Networks
Chapter 10 Communications and Networks
 
Chapter 4 : SOUND
Chapter 4 : SOUNDChapter 4 : SOUND
Chapter 4 : SOUND
 
Privacy , Security and Ethics Presentation
Privacy , Security and Ethics PresentationPrivacy , Security and Ethics Presentation
Privacy , Security and Ethics Presentation
 
Web 3.0 semantics
Web 3.0 semanticsWeb 3.0 semantics
Web 3.0 semantics
 
Statutory laws pertaining to cybercrimes in india
Statutory laws pertaining to cybercrimes in indiaStatutory laws pertaining to cybercrimes in india
Statutory laws pertaining to cybercrimes in india
 
pre-colonial period
pre-colonial periodpre-colonial period
pre-colonial period
 
L1 introduction to information and communication technology
L1 introduction to information and communication technologyL1 introduction to information and communication technology
L1 introduction to information and communication technology
 
The Internet and World Wide Web
The Internet and World Wide WebThe Internet and World Wide Web
The Internet and World Wide Web
 
The evolution of media
The evolution of mediaThe evolution of media
The evolution of media
 
Computer Security Presentation
Computer Security PresentationComputer Security Presentation
Computer Security Presentation
 
Workshop on Cyber security and investigation
Workshop on Cyber security and investigationWorkshop on Cyber security and investigation
Workshop on Cyber security and investigation
 

Ähnlich wie Lecture#06 inner workings of the cpu

Computer Structures
Computer StructuresComputer Structures
Computer Structuresguestfc2f62
 
ICTCoreCh11
ICTCoreCh11ICTCoreCh11
ICTCoreCh11garcons0
 
Intermediate machine architecture
Intermediate machine architectureIntermediate machine architecture
Intermediate machine architectureJohn Cutajar
 
computer processors intel and amd
computer processors intel and amdcomputer processors intel and amd
computer processors intel and amdRohit Gada
 
Inside the computer
Inside the computerInside the computer
Inside the computerZafar Ayub
 
Short_Term_Course_on_Phoenix_and_its_App.ppt
Short_Term_Course_on_Phoenix_and_its_App.pptShort_Term_Course_on_Phoenix_and_its_App.ppt
Short_Term_Course_on_Phoenix_and_its_App.pptNaveeN547338
 
COMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptx
COMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptxCOMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptx
COMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptxPannaBushratul
 
A+ certification (Core hardware) Pc Maintenance
 A+ certification (Core hardware) Pc Maintenance  A+ certification (Core hardware) Pc Maintenance
A+ certification (Core hardware) Pc Maintenance muhammadishrat11
 
Components of a digital computer.ppt
Components of a digital computer.pptComponents of a digital computer.ppt
Components of a digital computer.pptDibyenduBiswas31
 
Lesson three hardware basics
Lesson three hardware basicsLesson three hardware basics
Lesson three hardware basicsMik Endale
 
Components of the System Unit.pdf
Components of the System Unit.pdfComponents of the System Unit.pdf
Components of the System Unit.pdfODINARARCH
 
Introduction To Computer
Introduction To ComputerIntroduction To Computer
Introduction To Computerimtiazalijoono
 
Coa module1
Coa module1Coa module1
Coa module1cs19club
 

Ähnlich wie Lecture#06 inner workings of the cpu (20)

PCT SLIDE3
PCT SLIDE3PCT SLIDE3
PCT SLIDE3
 
Computer Structures
Computer StructuresComputer Structures
Computer Structures
 
ICTCoreCh11
ICTCoreCh11ICTCoreCh11
ICTCoreCh11
 
Intermediate machine architecture
Intermediate machine architectureIntermediate machine architecture
Intermediate machine architecture
 
computer processors intel and amd
computer processors intel and amdcomputer processors intel and amd
computer processors intel and amd
 
Inside the computer
Inside the computerInside the computer
Inside the computer
 
Short_Term_Course_on_Phoenix_and_its_App.ppt
Short_Term_Course_on_Phoenix_and_its_App.pptShort_Term_Course_on_Phoenix_and_its_App.ppt
Short_Term_Course_on_Phoenix_and_its_App.ppt
 
Computer hardware
Computer hardwareComputer hardware
Computer hardware
 
COMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptx
COMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptxCOMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptx
COMPUTER BASIC AND FUNDAMENTAL AND ITS ORGANISATION.pptx
 
A+ certification (Core hardware) Pc Maintenance
 A+ certification (Core hardware) Pc Maintenance  A+ certification (Core hardware) Pc Maintenance
A+ certification (Core hardware) Pc Maintenance
 
Components of a digital computer.ppt
Components of a digital computer.pptComponents of a digital computer.ppt
Components of a digital computer.ppt
 
Lesson three hardware basics
Lesson three hardware basicsLesson three hardware basics
Lesson three hardware basics
 
Ppt Lesson 04
Ppt Lesson 04Ppt Lesson 04
Ppt Lesson 04
 
Microcontroller part 1
Microcontroller part 1Microcontroller part 1
Microcontroller part 1
 
The system unit
The system unitThe system unit
The system unit
 
Microprocessor
MicroprocessorMicroprocessor
Microprocessor
 
Chapter 1 CSC118
Chapter 1 CSC118 Chapter 1 CSC118
Chapter 1 CSC118
 
Components of the System Unit.pdf
Components of the System Unit.pdfComponents of the System Unit.pdf
Components of the System Unit.pdf
 
Introduction To Computer
Introduction To ComputerIntroduction To Computer
Introduction To Computer
 
Coa module1
Coa module1Coa module1
Coa module1
 

Kürzlich hochgeladen

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 

Kürzlich hochgeladen (20)

CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 

Lecture#06 inner workings of the cpu

  • 1. ICT1012 – Computer Systems Lecture 6 – Inner Workings of the Central Processing Unit Lakshman Jayaratne Learning Objectives Computer architecture Components of a simple central processing unit: o registers, ALU, control unit and buses Other hardware components of a computer: o Buses, clocks, peripheral devices, memory Features of computers Speed and reliability Components and CPU registers Memory organization Fetch–decode–execute cycle and its use to Fetch– decode– execute instructions in a simple computer 1
  • 2. Hardware Components of a Typical Computer Peripheral Central Processing Memory Devices Unit (CPU) Buses allow components to pass data to each other Hardware Components of a Typical Computer - CPU Peripheral Central Processing Memory Devices Unit (CPU) Central Processing Unit (CPU) Performs the basic operations Consists of two parts: Arithmetic / Logic Unit (ALU) - data manipulation Control Unit - coordinate machine’s activities machine’ 2
  • 3. Central Processing Unit (CPU) Fetches, decodes and executes program instructions Two principal parts of the CPU Arithmetic-Logic Unit (ALU) Arithmetic- o Connected to registers and memory by a data bus o All three comprise the Datapath Control unit o Sends signals to CPU components to perform sequenced operations CPU: Registers, ALU and Control Unit Registers Hold data that can be readily accessed by the CPU Implemented using D flip-flops flip- o A 32-bit register requires 32 D flip-flops 32- flip- Arithmetic-logic unit (ALU) Arithmetic- Carries out logical and arithmetic operations Often affects the status register (e.g., overflow, carry) Operations are controlled by the control unit Control unit (CU) Policeman or traffic manager Determines which actions to carry out according to the values in a program counter register and a status register 3
  • 4. Hardware Components of a Typical Computer - Memory Peripheral Central Processing Memory Devices Unit (CPU) Main Memory Holds programs and data Stores bits in fixed-sized chunks: “word” (8, 16, fixed- word” 32 or 64 bits) Each word has a unique address The words can be accessed in any order random-access memory or “RAM” random- RAM” Memory Consists of a linear array of addressable storage cells A memory address is represented by an unsigned integer Can be byte-addressable or word-addressable byte- word- Byte-addressable: each byte has a unique address Byte- Word-addressable: a word (e.g., 4 bytes) has a unique Word- address 4
  • 5. Memory: Example A memory word size of a machine is 16 bits A 4MB × 16 RAM chip gives us 4 megabytes of 16-bit memory locations 16- 4MB = 22 * 220 = 222 = 4,194,304 unique locations (each location contains a 16-bit word) 16- Memory locations range from 0 to 4,194,303 in unsigned integers 2N addressable units of memory require N bits to address each location Thus, the memory bus of this system requires at least 22 address lines The address lines “count” from 0 to 222 -1 in binary count” Hardware Components of a Typical Computer – Peripheral Devices that Communicate with the Outside World Peripheral Central Processing Memory Devices Unit (CPU) Input/Output (I/O) Input: keyboard, mouse, microphone, scanner, sensors (camera, infra-red), punch-cards infra- punch- Output: video, printer, audio speakers, etc Communication modem, ethernet card 5
  • 6. Hardware Components of a Typical Computer – Peripheral Devices that Store Data Long Term Secondary (mass) storage Stores information for long periods of time as files Examples: hard drive, floppy disk, tape, CD- CD- ROM (Compact Disk Read-Only Memory), flash Read- drive, DVD (Digital Video/Versatile Disk) Hardware Components of a Typical Computer – Buses Peripheral Central Processing Memory Devices Unit (CPU) Buses Used to share data between system components inside and outside the CPU Set of wires (lines) that act as a shared path allow parallel movement of bits 6
  • 7. Typical Bus Transactions Sending an address (for performing a read or write) Transferring data from memory to register and vice versa Transferring data for I/O reads and writes from peripheral devices Buses Physically a bus is a group of conductors that allows all the bits in a binary word to be copied from a source component to a destination component Buses move binary values inside the CPU between registers and other components Buses are also used outside the CPU, to copy values between the CPU registers and main memory, and between the CPU registers and the I/O sub-system sub- 7
  • 8. Types of Buses: Source and Destination Point-to-point: Point- to- point: connects two specific components Multi-point: a shared Multi- point: resource that connects several components access to it is controlled through protocols, which are built into the hardware Types of Buses: Contents Data bus: conveys bits from one device to another bus: Control bus: determines the direction of data flow and bus: when each device can access the bus Address bus: determines the location of the source bus: or destination of the data 8
  • 9. Clock Every computer contains at least one clock that synchronizes the activities of its components A fixed number of clock cycles are required to carry out each data movement or computational operation The clock frequency determines the speed of all operations o Measured in megaHertz or gigaHertz Generally the term clock refers to the CPU (master) clock Buses can have their own clocks which are usually slower Most machines are synchronous Controlled by a master clock signal Registers must wait for the clock to tick before loading new data data Clock Speed (I) Clock cycle time is the reciprocal of clock frequency Example, an 800 MHz clock has a cycle time of 1.25 ns o 1/800,000,000 = 0.00000000125 = 1.25 * 10-9 Clock-speed ≠ CPU-performance Clock- CPU- The CPU time required to run a program is given by the general performance equation: 9
  • 10. Clock Speed (II) Therefore, we can improve CPU throughput when we reduce the number of instructions in a program the number of cycles per instruction the number of nanoseconds per clock cycle But, in general Multiplication takes longer than addition Floating point operations require more cycles than integer operations Accessing memory takes longer than accessing registers Features of Computers: Speed and Reliability Speed CPU speed System-clock / Bus speed System- Memory-access speed Memory- Peripheral device speed Reliability 10
  • 11. CPU Speed CPU clock speed: in cycles per second ("hertz") Example: 700MHz Pentium III, 3GHz Pentium IV but different CPU designs do different amounts of work in one clock cycle Other measures of speed “flops” (floating-point operations per second) flops” (floating- “mips” (million instructions per second) mips” System-Clock / Bus Speed Speed of communication between CPU, memory and peripheral devices Depends on main board design Examples: Examples: o Intel 1.50GHz Pentium-4 works on a 400MHz bus Pentium- speed 11
  • 12. Memory-Access Speed RAM about 60ns (1 nanosecond = a billionth of a second), and getting faster may be rated with respect to “bus speed’’ (e.g., speed’’ PC-100) PC- Cache memory faster than main memory (about 20ns access speed), but more expensive contains data which the CPU is likely to use next Peripheral Device Speed Mass storage Examples: o 3.5in 1.4MB floppy disk: about 200kb/sec at 300 rpm (revolutions per minute) o Hard drive: up to 160 GB of storage, average seek time about 6 milliseconds, and 7,200 rpm Communications Examples: modems at 56 kilobits per second, and network cards at 10 or 100 megabits per second I/O Examples: ISA, PCI, IDE, SCSI, ATA, USB, etc.... 12
  • 13. Cache Memory and Virtual Memory Cache memory – random access memory that a processor can access more quickly than regular RAM Virtual memory – an “extension” of RAM using the hard disk allows the computer to behave as though it has more memory than what is physically available Interrupts and Exceptions Events that alter the normal execution of a program Exceptions are triggered within the processor Arithmetic errors, overflow or underflow Invalid instructions User-defined break points User- Interrupts are triggered outside the processor I/O requests Each type of interrupt or exception is associated with a procedure that directs the actions of the CPU 13
  • 14. Fetch-decode-execute Cycle A computer runs programs by performing fetch-decode-execute cycles fetch next instruction from Example: instruction word Example: memory ( word pointed to at mem[PC] is 0x20A9FFFD mem[PC] by PC ) and place in IR 001000 00101 01001 1111111111111101 decode instruction in the IR Opcode 8 is “add immediate”, immediate” to determine type source reg is $5, “target” reg $5, target” is reg $9, add amount is –3 $9, execute instruction Send reg $5 and -3 to ALU, add them, put result in reg $9 go to the next instruction PC = PC + 4 (next word in memory) Accessing Memory (I) Every memory access needs an address word to be sent from CPU to memory Address range is 0x00000000 to 0xFFFFFFFF o about 4 billion bytes of addressable space Addresses output by the CPU go to the Memory Address Register (MAR) During a fetch access, the PC value is copied to MAR During a load/store access, a “computed address” from the ALU is copied to MAR address” 14
  • 15. Accessing Memory (II) Why compute load/store addresses? 32(instruction bits) – 6(opcode bits) = 26(available bits) 26(available insufficient to hold a full memory address Solution: register based addressing use 26-bits to specify a base address GPR, a 26- GPR, target GPR, plus a 16-bit signed offset GPR, 16- ALU computes memory reference address “on the fly” as: MAR = base GPR + offset fly” target GPR receives/supplies memory data Memory Segments Memory is organized into segments, each with its own segments, purpose 0x00000000 kernel code reserved for OS 0x00400000 text segment user’s code user’ 0x10000000 data segment free space, grows and memory shrinks as (heap) heap) addresses stack/data stack segment segments 0x80000000 change reserved for the kernel code 0xFFFFFFFF Operating System (OS) and data 15
  • 16. Text Segment Starts at memory address 0x00400000 runs up to address 0x0FFFFFFF Contains user’s executable program code (often called the code segment ) PC register value is a CPU “reference” into this memory segment Data Segment Starts at memory address 0x10000000 expands upwards towards stack Contains program’s static data, i.e., data and program’ data, variables whose location in memory is fixed (and known to the assembler) In C In Java global variables public, static string constants objects 16
  • 17. Stack Segment Starts at memory address 0x7FFFFFFF grows in the direction of decreasing memory addresses ( i.e., towards the data segment) Contains system stack Used for temporary storage of: local variables of functions function parameter values return addresses of functions saved register values Heap Technically part of data segment located at end of data segment, after all static data Empty at start of program execution Dynamically allocated memory is taken from heap for program to use Freed memory (by user or garbage collection) is returned to heap 17
  • 18. Block Diagram of the System A Von Neuman Control CENTRAL Machine Unit PROCESSING UNIT Arithmetic Logic Unit BUS INPUT Code OUTPUT Segment 1001100101001 0010011100011 Data Segment MEMORY Arithmetic Logic Unit ALU The part of a computer that performs all arithmetic computations, such as addition and multiplication, and all comparison operations A typical schematic symbol for an ALU: A & B are operands; R is the output; F is the input from the Control Unit; D is an output status 18
  • 19. Arithmetic Logic Unit… The component where data is held temporarily Calculations occur here It knows how to perform operations such as ADD, SUB, LOAD, STORE, SHIFT It knows the commands that make up the machine language of the CPU It is the calculator Control Unit A computer’s control unit keeps things computer’ synchronized Makes sure that the correct components are activated as the components are needed Sends bits down control lines to trigger events o E.g., when Add is performed, the control signal tells the ALU to Add How do these control lines become asserted? o Hardwired control: controllers implement this control: program using digital logic components o Microprogrammed control: a small program is control: placed into read-only memory in the microcontroller read- 19
  • 20. Control Unit: Hardwired Control Physically connect all of the control lines to the actual machine instruction Instructions are divided into fields and different bits are combined with various digital logic components (which drive the control line) The control unit is implemented using hardware The digital circuit uses inputs to generate the control signal to drive various components Advantage: very fast Disadvantage: instruction set and digital logic are locked Control Unit: Microprogrammed Control Microprogram: software stored in the CPU control unit Converts machine instructions (binary) into control signals One subroutine for each machine instruction Advantage: very flexible Disadvantage: additional layer of interpretation 20
  • 21. Registers “A register is a single, permanent storage location within the CPU used for a PARTICULAR, defined purpose” purpose” “A register is used to hold a binary value temporarily for storage, for manipulation, and/or for simple calculations” calculations” Registers have special addresses Von Neuman Machine Model Main Memory 10110111 00110111 Input Output 01101001 11101001 Data and Data 00110100 01110100 CPU Cycle Instructions …. …. Fetch an instruction …. …. from the memory cell 10110111 where the PC points PC 01101001 Bus 00110100 Decode the instruction 01111101 ALU Execute the 11100000 instruction …. Control Unit Increment the PC Program Counter CPU 21
  • 22. Registers CPU R0 Input devices BUS R1 Arithmetic/ Logic Output devices … Unit Rn Main Memory Secondary Control Unit Storage Registers are used to hold the data immediately applicable to the operation at hand; Main memory is used to hold the data that will be needed in the near future Secondary storage is used to hold data that will be likely not be needed in the near future Example: Machine Architecture 00 0001 0001 Consider a machine with 01 0011 0000 256 byte Main Memory: 00-FF 00- 02 0001 0010 03 0100 0000 16 General Purpose Registers: 0-F 0- 04 0011 0001 16 Bit Instruction 0100 0000 8 Bit Integer Format (2’s Complement) (2’ 8 Bit Floating Point Format o 1 Sign Bit o 3 Exponent Bits o 4 Bit Mantissa 16 Instructions: 1-F 1- ff 0100 0000 22
  • 23. Example: Addition Operation A 1001 1001 R1 10011001 B 0110 1101 LOAD R11 ,, A LOAD R A R2 01101101 LOAD R22 ,, B LOAD R B ADD ADD R00 ,, R11 ,,R22 R R R X A+B STORE R00 ,, X STORE R X R0 01010100 Load the first number from memory cell A into register R1 Load the second number from memory cell B into register R2 Adding the numbers in these two registers and put the result in register R0 Store the result in R0 into the memory call X Block Diagram of the CPU CPU - Central Processing Unit MAR - Memory Address Register IR - Instruction Register MDR - Memory Data Register PC - Program Counter ALU - Arithmetic Logic Unit 23
  • 24. Instruction Fetch The address in the Program Counter is placed in MAR The addressed instruction is read from memory (through the MDR) and placed into the Instruction Register Instruction Execute The Instruction Decoder examines the instruction in the Instruction Register and sends appropriate signals to other parts of the CPU to carry out the actions specified by the instruction. This may include: Reading operands from memory or registers into the Arithmetic Logic Unit, Unit, Enabling the circuits of the Arithmetic Logic Unit to perform arithmetic or other computations, Storing data values into memory or registers, Changing the value of the Program Counter 24
  • 25. The CPU Cycle The processor endlessly repeats the cycle: fetch, execute, fetch, execute, fetch, execute, fetch, execute, fetch, execute, fetch, execute, fetch, execute, fetch, execute, fetch, execute, fetch ... Fetch and Execute Cycle At the beginning of each cycle the CPU presents the value of the program counter on the address bus The CPU then fetches the instruction from main memory (possibly via a cache and/or a pipeline) via the data bus into the instruction register 25
  • 26. Fetch and Execute Cycle From the instruction register, the data forming the instruction is decoded and passed to the control unit It sends a sequence of control signals to the relevant function units of the CPU to perform the actions required by the instruction such as reading values from registers, passing them to the ALU to add them together and writing the result back to a register Fetch and Execute Cycle The program counter is then incremented to address the next instruction and the cycle is repeated 26
  • 27. Instruction Set Architecture (ISA) Instruction sets – definition and features Instruction types Operand organization Number of operands and instruction length Addressing Instruction execution – pipelining Features of two machine instruction sets (CISC and RISC) Instruction format 53 Instruction Set Architecture (ISA) Machine instructions Opcodes and operands High level languages Hide detail of the architecture from the programmer Easier to program Why learn computer architectures and assembly language? To understand how the computer works To write more efficient programs 27
  • 28. Instruction Set Architecture (ISA) Instruction sets are differentiated by Instructions types of instructions instruction length and number of operands Operands type (addresses, numbers, characters) and access mode location (CPU or memory) organization (stack or register based) o number of addressable registers Memory organization byte- or word-addressable byte- word- CPU instruction execution with/without pipelining Instruction Set Architecture (ISA) The instruction set format is critical to the machine’s architecture machine’ Performance of instruction set architectures is measured by Main memory space occupied by a program Instruction complexity Instruction length (in bits) Total number of instructions 28
  • 29. Instruction Set Architecture (ISA) Instruction types Operand organization Number of operands and instruction length Addressing Instruction execution – pipelining Instruction Set Architecture (ISA) An instruction set, or instruction set architecture set, (ISA) describes the aspects of a computer architecture visible to a programmer, including the native data- data- types, instructions, registers, addressing modes, memory architecture, interrupt and exception handling, and external I/O (if any) An ISA includes a specification of the set of all binary codes (opcodes) that are the native form of commands implemented by a particular CPU design The set of opcodes for a particular ISA is also known as the machine language for the ISA 29
  • 30. Instruction Set Architecture (ISA) ISAs commonly implemented in hardware Alpha AXP (DEC Alpha) ARM (Acorn RISC Machine) (Advanced RISC Machine now ARM Ltd) IA-64 (Itanium) IA- MIPS Motorola 68k PA-RISC (HP Precision Architecture) PA- IBM POWER PowerPC SPARC SuperH VAX (Digital Equipment Corporation) x86 (IA-32, Pentium, Athlon) (AMD64, EM64T) (IA- Machine Instructions Data Transfer: transfer data between registers and memory cells Arithmetic/Logic Operations: perform addition, AND, OR, XOR and etc. Control Operations: control the execution of the program 30
  • 31. Data Transfer Instructions 1. L R , A LOAD the register R with the content of memory cell A 2. LI R , I LOAD the register R with I (I is called an immediate number) 3. ST R , A STORE the content of the register R to the memory cell whose address is A 4. LR R1 , R2 LOAD the register R1 with the content of the register R2 Example: Data Transfer Instructions Swap the content of two memory cells 30(16) and 40(16) 30 0110 1101 40 10011010 L 1 ,, 30 L 1 30 /*Load R with the content /*Load R11with the content in memory cell 30 */ in memory cell 30 */ L 2 ,, 40 L 2 40 /* Load R with the content /* Load R22with the content in memory cell 40 */ in memory cell 40 */ ST 1 ,, 40 ST 1 40 /* Store R to 40 */ /* Store R11to 40 */ R1 01101101 ST 2 ,, 30 ST 2 30 /* Store R to 30 */ /* Store R22to 30 */ R2 10011010 31
  • 32. Example: Data Transfer Instructions Swap the content of two memory cells 30(16) and 40(16) 10011010 30 0110 1101 01101101 40 10011010 L 1 ,, 30 L 1 30 /*Load R with the content /*Load R11with the content in memory cell 30 */ in memory cell 30 */ L 2 ,, 40 L 2 40 /* Load R with the content /* Load R22with the content in memory cell 40 */ in memory cell 40 */ ST 1 ,, 40 ST 1 40 /* Store R to 40 */ /* Store R11to 40 */ R1 01101101 ST 2 ,, 30 ST 2 30 /* Store R to 30 */ /* Store R22to 30 */ R2 10011010 Arithmetic/Logic Instructions (I) Arithmetic Instructions 5. ADD R0, R1, R2 ADD the numbers in R1 and R2 representing in 2’s 2’ complement and place the result in R0 6. AFP R0, R1, R2 ADD the numbers in R1 and R2 representing in floating- floating- point and place the result in R0 32
  • 33. Arithmetic/Logic Instructions (I) Memory Example: Addition A0 10011001 = -25 A1 01101101 = 109 X0 01010100 = 84 L 1 ,, A0 L 1 A0 L 2 ,, A1 L 2 A1 Registers ADD 0 ,,1 ,,2 ADD 0 1 2 R0 01010100 ST 0 ,, X0 ST 0 X0 R1 10011001 R2 01101101 Arithmetic/Logic Instructions (II) Logic Instructions 7. OR R0, R1, R2 OR the bit patterns in R1 and R2 and place the result in R0 8. AND R0, R1, R2 AND the bit patterns in R1 and R2 and place the result in R0 9. XOR R0, R1, R2 XOR the bit patterns in R1 and R2 and place the result in R0 33
  • 34. Arithmetic/Logic Instructions (II) Memory Example: Mask the first 4 bits of the binary string in memory A0 A0 10011011 X0 00001011 L 1 ,, A0 L 1 A0 LI 2 ,, OF LI 2 OF Registers ADD 0 ,,1 ,,2 ADD 0 1 2 R0 00001011 R0 ST 0 ,, X0 ST 0 X0 R1 10011011 R1 10011011 R2 00001111 R2 00001111 Arithmetic/Logic Instructions (II) Example: Masking A0 10011001 10011001 A1 11011011 11011011 L 1 ,, A0 L 1 A0 L 2 ,, A1 L 2 A1 X0 11011001 11011001 LI 3 ,, 0F LI 3 0F LI 4 ,, F0 LI 4 F0 R0 11011001 R0 AND 1 ,,1 ,,3 AND 1 1 3 00001001 00001001 R1 10011001 R1 AND 2 ,,2 ,,4 AND 2 2 4 R2 11010000 11010000 R2 11011011 OR 0 ,,1 ,,2 OR 0 1 2 R3 00001111 R3 00001111 ST 0 ,, X0 ST 0 X0 R4 11110000 R4 11110000 34
  • 35. Arithmetic/Logic Instructions (III) Bit String Operating Instructions B. RR R , I ROTATE the bit patterns in R to right I times. Each time place the bit that started at the low-order end at the high- low- high- order end Example RR , 0 , 02 Original String 1 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 Resulting String 0 1 1 0 1 1 0 0 Control Instructions E. JMP R , A JUMP the instruction located in the memory cell A if the bit pattern in R is equal to the one in R F. HALT HALT the execution 35
  • 36. Example: Control Instructions 30 LI 0 ,, 0A LI 0 0A R0 = 0A 32 LI 1 ,, 00 LI 1 00 R1 = 00 34 LI 2 ,, 01 LI 2 01 R0 00001010 36 ADD 3 ,, 1, 2 ADD 3 1, 2 R2 = 01 R1 00000000 38 JMP 3 ,, 3E JMP 3 3E R2 00000001 R3 = R1 +R2 3A LR 1 ,,3 LR 1 3 Yes R3 00000001 3C JMP 0 ,,36 JMP 0 36 R3 = R0 ? No 3E HALT HALT R1 = R3 Instruction Program Register The CPU Cycle Counter Control Unit 8 bit bus Circuits Code Segment A 30 21 17 31 80 21 F5 31 81 11 80 12 81 General 3C 23 FF 94 23 23 01 52 34 53 12 33 82 d 48 11 82 22 80 83 12 20 00 E3 5E 11 80 Purpose d 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 Registers r 74 e 80 s 8C 98 s Main Memory Data Segment ALU 36
  • 37. Operand Organization Three choices Accumulator architecture General Purpose Register (GPR) architecture Stack architecture Operand Organization – Accumulator Architecture One operand of a binary operation is implicitly in the accumulator Advantage Minimizes the internal complexity of the machine Allows for very short instructions Disadvantage Memory traffic is very high Programming is cumbersome 37
  • 38. Operand Organization – General Purpose Register (GPR) Architecture Uses sets of general purpose registers Advantage Register sets are faster than memory Easy for compilers to deal with Due to low costs large numbers of these registers are being added Disadvantage Results in longer instructions (longer fetch and decode times) Operand Organization – General Purpose Register (GPR) Architecture Three types Memory-memory Memory- o may have two or three operands in memory o an instruction may perform an operation without requiring any operand to be in a register Register-memory Register- o at least one operand must be in a register and one in memory Load-store Load- o requires data to be moved into registers before any operation is performed 38
  • 39. Operand Organization – Stack Architecture Uses a stack to execute instructions Operations: PUSH – put a value on top of the stack POP – read top value and move down the “stack pointer” pointer” Example: 5 9 POP 7 PUSH 9 2 Operand Organization – Stack Architecture Instructions implicitly refer to values at the top of the stack data can be accessed only from the top of the stack, one word at a time Advantage Good code density Simple model for evaluation of expressions Disadvantage Restricts the sequence of operand processing Execution bottleneck (the stack is located in memory) 39
  • 40. Operand Organization – Stack Architecture Stack architecture requires us to think about arithmetic expressions in a new way We are used to Infix notation o E.g., Z = X + Y Stack arithmetic requires Postfix notation: notation: o E.g., Z = XY+ o Postfix notation is also know as Reverse Polish Notation Stack Architecture – Postfix Notation Postfix notation doesn’t need parentheses doesn’ E.g., The infix expression Z = (X * Y) + (W * U) is the postfix expression Z = X Y * W U * + Calculating Z = X Y * W U * + in a stack ISA PUSH X PUSH Y MULT Binary operators PUSH W • pop the two operands on the PUSH U stack top, and MULT • push the result on the stack ADD POP Z 40
  • 41. Number of Operands and Instruction Length The number of operands in each instruction affects the length of the instruction Instruction length can be Fixed – quick to decode but wastes space Variable – more complex to decode but saves space All architectures limit the number of operands allowed per instruction Stack architecture has 0 or 1 explicit operand Accumulator architecture has 0 or 1 explicit operand GPR architecture has 1, 2 or 3 operands Number of Operands - Example Calculating the infix expression Z = X * Y + W * U One operand Two operands Three operands LOAD X LOAD R1,X MULT R1,X,Y MULT Y MULT R1,Y MULT R2,W,U STORE TEMP LOAD R2,W ADD Z,R1,R2 LOAD W MULT R2,U MULT U ADD R1,R2 ADD TEMP STORE Z,R1 STORE Z The first operand is often the The accumulator is the destination for the result of the destination for the instruction result of the instruction 41
  • 42. Coding Instruction 16 bit Instruction (2 bytes) High-Order Byte High- Low-Order Byte Low- Bits 4-15 Operands 4- Bits 0-3 OpCode 0- 0 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 LI 4 7C The machine code 0010010001111100 represents the instruction LI 4 , 7C Instruction Formats 16 bit Instruction (2 bytes) Format 1 Register Immediate Value Format 2 Register Memory Address Format 3 Register Register Register Format 4 Unused (zero) Register Register 42
  • 43. Format 1 Instruction Format 1 Instruction Format 1 Register Immediate Value Opcode Instruction Meaning 2 LI R , I Load Immediate A RL R , I Rotate Left B RR R , I Rotate Right C SL R, I Shift Left D SR R , I Shift Right Format 1 Instruction Format 1 Register Immediate Value 1. COPY THE BIT PATTERN IN THE LOW-ORDER BYTE LOW- INTO THE SPECIFIED REGISTER , OR 2. SHIFT/ROTATE THE BITS IN THE SPECIFIED REGISTER THE NUMBER OF PLACES SPECIFIED IN THE LOW-ORDER BYTE. LOW- 43
  • 44. Format 2 Instruction Format 2 Instruction Format 2 Register Memory Address Opcode Instruction Meaning 1 L R , A Load from Memory 3 ST R , A Store to Memory E JMP R , A Conditional Jump Format 2 Instruction Format 2 Register Memory Address 1. Load - Copy the value stored at the Memory Address into the specified register 2. Store - Copy the value in the specified register to the Memory Address 3. Jump - Compare the contents of the specified register and the contents of Register 0. If equal reset the Program Counter to the Memory Address 44
  • 45. Format 3 Instruction Format 3 Instruction Format 3 Register Register Register Opcode Instruction Meaning 5 ADD R0, R1, R2 Load Immediate 6 AFP R 0, R 1, R 2 Rotate Left 7 OR R 0, R 1, R 2 Rotate Right 8 AND R 0, R 1, R 2 Shift Left 9 XOR R 0, R 1, R 2 Shift Right Format 3 Instruction Format 3 Register Register Register Apply the operation to the two values in the registers specified in the Low-Order byte and store the result in the Low- register specified in the High-Order byte High- 45
  • 46. Format 4 Instruction Format 4 Instruction Format 4 Unused (zero) Register Register Opcode Instruction Meaning 4 LR R1 , R2 Load Register Format 4 Instruction Format 4 Unused (zero) Register Register Copy the value in the second register specified in the Low-Order byte to the first register specified in the Low- Low-Order byte Low- 46
  • 47. Full Instruction Set 1. L 1. L R ,, A R A 9. XOR R00,, R11, R22 9. XOR R R, R 2. LI R ,, II 2. LI R A. RL A. RL R ,, II R 3. ST R ,, A 3. ST R A B. RR B. RR R ,, II R 4. LR R11,, R22 4. LR R R C. SL C. SL R ,, II R 5. ADD R00,, R11, R22 5. ADD R R, R D. SR D. SR R ,, II R 6. AFP R00,, R11, R22 6. AFP R R, R E. JMP R ,, A E. JMP R A 7. OR 7. OR R00,, R11, R22 R R, R F. HALT F. HALT 8. AND R00,, R11, R22 8. AND R R, R Examples of OpCode Name Comment Syntax TRANSFER MOV Move (copy) MOV Dest,Source PUSH Push onto stack PUSH Source POP Pop from stack POP Dest IN Input IN Dest, Port OUT Output OUT Port, Source ARITHMETIC ADD Add ADD Dest,Source SUB Subtract SUB Dest,Source DIV Divide (unsigned) DIV Op MUL Multiply (unsigned) MUL Op INC Increment INC Op DEC Decrement DEC Op CMP Compare CMP Op1,Op2 47
  • 48. Examples of OpCode Name Comment Syntax LOGIC NEG Negate (two-complement) NEG Op (two- NOT Invert each bit NOT Op AND Logical and AND Dest,Source OR Logical or OR Dest,Source XOR Logical exclusive or XOR Dest,Source JUMPS CALL Call subroutine CALL Proc JMP Jump JMP Dest JE Jump if Equal JE Dest JZ Jump if Zero JZ Dest RET Return from subroutine RET JNE Jump if not Equal JNE Dest JNZ Jump if not Zero JNZ Dest Coding Program: Example 10 0001 0001 Assembler Assembler Machine Code Machine Code Hexa Hexa 11 0011 0000 L 1 ,, 30 L 1 30 0001 0001 0011 0000 0001 0001 0011 0000 1130 1130 12 0001 0010 13 0100 0000 L 2 ,, 40 L 2 40 0001 0010 0100 0000 0001 0010 0100 0000 1240 1240 14 0011 0001 15 0100 0000 ST 1 ,, 40 ST 1 40 0011 0001 0100 0000 0011 0001 0100 0000 3140 3140 16 0011 0010 ST 2 ,, 30 ST 2 30 0011 0010 0011 0000 0011 0010 0011 0000 3230 3230 17 0011 0000 30 0110 1101 A R1 0110 1101 30 0110 1101 40 1001 1001 B R2 1001 1001 40 1001 1001 48
  • 49. CPU Cycle (Machine Cycle) FETCH CPU Cycle DECODE Fetch an instruction EXECUTE from the memory cell where the PC points 1. Retrieve the next 2. Decode the bit Decode the instruction instruction from pattern in the memory (as instruction indicated by the register program counter) and then increment Execute the D the program counter ec od instruction h e tc Fe Increment the PC Execute 3. Perform the action requested by the instruction in the instruction register Program Execution: Swap Example PC 10 0001 0001 FETCH 11 0011 0000 R0 12 0001 0010 DECODE 13 0100 0000 EXECUTE R1 14 0011 0001 15 0100 0000 16 R2 0011 0010 17 0011 0000 ….. LL 1 ,, 30 1 30 1130 1130 LL 2 ,, 40 2 40 1240 1240 RF ST 1 ,, 40 ST 1 40 3140 3140 30 0110 1101 ST 2 ,, 30 ST 2 30 3230 3230 40 1001 1001 49
  • 50. Execute a Program R0 PC 10 0001 0001 FETCH 11 0011 0000 R1 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0001 0011 0000 RF LL 1 ,, 1 30 30 LL 2 ,, 2 40 40 30 0110 1101 ST 1 ,, 40 ST 1 40 40 1001 1001 ST 2 ,, 30 ST 2 30 Execute a Program R0 PC 10 0001 0001 FETCH 11 0011 0000 R1 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0001 0011 0000 RF LL 1 ,, 30 1 30 Operation-code : 0001 Operation- LL 2 ,, 40 2 40 30 0110 1101 Register : 0001 ST 1 ,, 40 ST 1 40 Memory address : 0011 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 50
  • 51. Execute a Program R0 PC 10 0001 0001 FETCH 11 0011 0000 R1 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0001 0011 0000 RF LL 1 ,, 1 30 30 Operation-code : 0001 Operation- LL 2 ,, 2 40 40 30 0110 1101 Register : 0001 ST 1 ,, 40 ST 1 40 Memory address : 0011 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 Execute a Program R0 PC 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0001 0011 0000 RF LL 1 ,, 30 1 30 Operation-code : 0001 Operation- LL 2 ,, 40 2 40 30 0110 1101 Register : 0001 ST 1 ,, 40 ST 1 40 Memory address : 0011 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 51
  • 52. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 PC 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0001 0011 0000 RF LL 1 ,, 1 30 30 Operation-code : 0001 Operation- LL 2 ,, 2 40 40 30 0110 1101 Register : 0001 ST 1 ,, 40 ST 1 40 Memory address : 0011 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 PC 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0010 0100 0000 RF LL 1 ,, 30 1 30 LL 2 ,, 40 2 40 30 0110 1101 ST 1 ,, 40 ST 1 40 40 1001 1001 ST 2 ,, 30 ST 2 30 52
  • 53. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 PC 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0010 0100 0000 RF LL 1 ,, 1 30 30 Operation-code : 0001 Operation- LL 2 ,, 2 40 40 30 0110 1101 Register : 0010 ST 1 ,, 40 ST 1 40 Memory address : 0100 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 PC 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0010 0100 0000 RF LL 1 ,, 30 1 30 Operation-code : 0001 Operation- LL 2 ,, 40 2 40 30 0110 1101 Register : 0010 ST 1 ,, 40 ST 1 40 Memory address : 0100 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 53
  • 54. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 PC 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0001 0010 0100 0000 RF LL 1 ,, 1 30 30 Operation-code : 0001 Operation- LL 2 ,, 2 40 40 30 0110 1101 Register : 0010 ST 1 ,, 40 ST 1 40 Memory address : 0100 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 PC 14 0011 0001 15 0100 0000 ….. 16 0011 0010 17 0011 0000 RF LL 1 ,, 30 1 30 LL 2 ,, 40 2 40 30 0110 1101 ST 1 ,, 40 ST 1 40 40 1001 1001 ST 2 ,, 30 ST 2 30 54
  • 55. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 PC 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0011 0001 0100 0000 RF LL 1 ,, 1 30 30 LL 2 ,, 2 40 40 30 0110 1101 ST 1 ,, 40 ST 1 40 40 1001 1001 ST 2 ,, 30 ST 2 30 Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 PC 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0011 0001 0100 0000 RF LL 1 ,, 30 1 30 Operation-code : 0011 Operation- LL 2 ,, 40 2 40 30 0110 1101 Register : 0001 ST 1 ,, 40 ST 1 40 Memory address : 0100 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 55
  • 56. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 PC 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0011 0001 0100 0000 RF LL 1 ,, 1 30 30 Operation-code : 0011 Operation- LL 2 ,, 2 40 40 30 0110 1101 Register : 0001 ST 1 ,, 40 ST 1 40 Memory address : 0100 0000 40 1001 1001 ST 2 ,, 30 ST 2 30 Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 PC 14 0011 0001 15 0100 0000 ….. 16 0011 0010 Instruction: 17 0011 0000 0011 0001 0100 0000 RF LL 1 ,, 30 1 30 Operation-code : 0011 Operation- LL 2 ,, 40 2 40 30 0110 1101 Register : 0001 ST 1 ,, 40 ST 1 40 Memory address : 0100 0000 40 0110 1101 ST 2 ,, 30 ST 2 30 56
  • 57. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 14 0011 0001 15 0100 0000 ….. PC 16 0011 0010 17 0011 0000 RF LL 1 ,, 1 30 30 LL 2 ,, 2 40 40 30 0110 1101 ST 1 ,, 40 ST 1 40 40 0110 1101 ST 2 ,, 30 ST 2 30 Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 14 0011 0001 15 0100 0000 ….. PC 16 0011 0010 Instruction: 17 0011 0000 0011 0010 0011 0000 RF LL 1 ,, 30 1 30 LL 2 ,, 40 2 40 30 0110 1101 ST 1 ,, 40 ST 1 40 40 0110 1101 ST 2 ,, 30 ST 2 30 57
  • 58. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 14 0011 0001 15 0100 0000 ….. PC 16 0011 0010 Instruction: 17 0011 0000 0011 0010 0011 0000 RF LL 1 ,, 1 30 30 Operation-code : 0011 Operation- LL 2 ,, 2 40 40 30 0110 1101 Register : 0010 ST 1 ,, 40 ST 1 40 Memory address : 0011 0000 40 0110 1101 ST 2 ,, 30 ST 2 30 Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 14 0011 0001 15 0100 0000 ….. PC 16 0011 0010 Instruction: 17 0011 0000 0011 0010 0011 0000 RF LL 1 ,, 30 1 30 Operation-code : 0011 Operation- LL 2 ,, 40 2 40 30 0110 1101 Register : 0010 ST 1 ,, 40 ST 1 40 Memory address : 0011 0000 40 0110 1101 ST 2 ,, 30 ST 2 30 58
  • 59. Execute a Program R0 10 0001 0001 FETCH 11 0011 0000 R1 0110 1101 12 0001 0010 DECODE 13 0100 0000 EXECUTE R2 1001 1001 14 0011 0001 15 0100 0000 ….. PC 16 0011 0010 Instruction: 17 0011 0000 0011 0010 0011 0000 RF LL 1 ,, 1 30 30 Operation-code : 0011 Operation- LL 2 ,, 2 40 40 30 1001 1001 Register : 0010 ST 1 ,, 40 ST 1 40 Memory address : 0011 0000 40 0110 1101 ST 2 ,, 30 ST 2 30 Coding Program: An Example Assembler Assembler Machine Code Machine Code Hexa Hexa 10 0001 0001 11 0011 0000 L 1 ,, 30 L 1 30 0001 0001 0011 0000 0001 0001 0011 0000 1130 1130 12 0001 0010 13 0100 0000 L 2 ,, 40 L 2 40 0001 0010 0100 0000 0001 0010 0100 0000 1240 1240 14 0011 0001 ST 1 ,, 40 ST 1 40 0011 0001 0100 0000 3140 15 0100 0000 0011 0001 0100 0000 3140 16 0011 0010 ST 2 ,, 30 ST 2 30 0011 0010 0011 0000 0011 0010 0011 0000 3230 3230 17 0011 0000 30 1001 1001 A R1 0110 1101 30 1001 1001 40 0110 1101 B R2 1001 1001 40 0110 1101 59
  • 60. Assembler Code for A:=23, B:=-11; LI 1 ,, 17 LI 1 17 LOAD 23 IN HEX INTO R1 LOAD 23 IN HEX INTO R1 ST 1 ,, A ST 1 A STORE VALUE AT A STORE VALUE AT A LI 1 ,, F5 LI 1 F5 LOAD --11 IN HEX INTO R1 LOAD 11 IN HEX INTO R1 ST 1 ,, B ST 1 B STORE VALUE AT B STORE VALUE AT B Machine Code for A:=23, B:=-11; LI 1 ,, 17 LI 1 17 2117 2117 00100001 00010111 00100001 00010111 ST 1 ,, A ST 1 A 3180 3180 00110001 10000000 00110001 10000000 LI 1 ,, F5 LI 1 F5 21F5 21F5 00100001 11110101 00100001 11110101 ST 1 ,, B ST 1 B 3181 3181 00110001 10000001 00110001 10000001 60
  • 61. Assembler Code for C:=A-B; L 1 ,, A L 1 A LOAD A INTO R1 LOAD A INTO R1 L 2 ,, B L 2 B LOAD B INTO R2 LOAD B INTO R2 LI 3 ,, FF LI 3 FF SET MASK TO FLIP B SET MASK TO FLIP B XOR 4 ,, 2 ,, 3 XOR 4 2 3 FLIP B FLIP B LI 3 ,, 01 LI 3 01 LOAD 1 INTO R3 LOAD 1 INTO R3 ADD 2 ,, 3 ,, 4 ADD 2 3 4 ADD 1 TO FLIPPED B ADD 1 TO FLIPPED B ADD 3 ,, 1 ,, 2 ADD 3 1 2 NOW DO R3 = A + B NOW DO R3 = A + B ST 3 ,, C ST 3 C STORE R3 AT C STORE R3 AT C Machine Code for C:=A-B; L 1 ,, A L 1 A 1180 1180 00010001 10000000 00010001 10000000 L 2 ,, B L 2 B 1281 1281 00010010 10000001 00010010 10000001 LI 3 ,, FF LI 3 FF 23FF 23FF 00100011 11111111 00100011 11111111 XOR 4 ,, 2 ,, 3 XOR 4 2 3 9423 9423 10010100 00100011 10010100 00100011 LI 3 ,, 01 LI 3 01 2301 2301 00100011 00000001 00100011 00000001 ADD 2 ,, 3 ,, 4 5234 ADD 2 3 4 5234 01010010 00110100 01010010 00110100 ADD 3 ,, 1 ,, 2 5312 ADD 3 1 2 5312 01010011 00010010 01010011 00010010 ST 3 ,, C ST 3 C 3382 3382 00110011 10000010 00110011 10000010 61
  • 62. Example Program PROGRAM Sort; VAR A,B,C : INTEGER; PROCEDURE Swap (VAR X,Y : INTEGER); VAR Temp : INTEGER; BEGIN {Swap} Temp := A; A := B; B := Temp; END {Swap}; BEGIN {Sort} C := A-B; A- IF C = 0 THEN Swap (A,B); END {Sort}. Assembler and Machine Code 30 LI 1,17 2117 48 L 1,C 1182 32 ST 1,A 3180 4A LI 2,80 2280 34 LI 1,F5 21F5 4C AND 3,1,2 8312 36 ST 1,B 3181 4E LI 0,00 2000 38 L 1,A 1180 50 JMP 3,5E E35E 3A L 2,B 1281 52 L 1,A 1180 3C LI 3,FF 23FF 54 L 2,B 1281 3E XOR 4,2,3 9423 40 LI 3,01 2301 56 ST 1,TEMP 317F 42 ADD 2,3,4 5234 58 ST 2,A 3180 44 ADD 3,1,2 5312 5A L 2,TEMP 127F 46 ST 3,C 3382 5C ST 2,B 3281 5E HALT F000 62
  • 63. Code Loaded in Memory 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Instruction The CPU Cycle Program Counter Register Cycle Status (illustration only) Control Unit 8 bit FETCH bus Circuits DECODE EXECUTE Code Segment A 30 21 17 31 80 21 F5 31 81 11 80 12 81 General 3C 23 FF 94 23 23 01 52 34 53 12 33 82 d 48 11 82 22 80 83 12 20 00 E3 5E 11 80 Purpose d 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 Registers r 74 e 80 s 8C 98 s Main Memory Data Segment ALU 63
  • 64. The CPU Cycle Control Unit FETCH 30 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 30 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 54 11 12 82 81 21 22 31 80 7F 83 31 12 80 20 12 00 7F E3 32 5E 81 11 F0 80 00 74 80 8C 98 Main Memory ALU 64
  • 65. The CPU Cycle Control Unit FETCH 30 21 17 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 54 12 81 31 17 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 32 21 17 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Main Memory ALU 65
  • 66. The CPU Cycle Control Unit FETCH 32 21 17 21 DECODE EXECUTE LI 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 32 21 17 21 DECODE EXECUTE LI 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 48 23 11 FF 82 94 22 23 80 23 83 01 12 52 20 34 00 53 E3 12 5E 33 11 82 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Main Memory ALU 66
  • 67. The CPU Cycle Control Unit FETCH 32 31 17 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 31 83 12 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 32 31 80 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 54 11 12 82 81 22 31 80 7F 83 31 12 80 80 20 12 00 7F E3 32 5E 81 11 F0 80 00 17 74 80 8C 98 Main Memory ALU 67
  • 68. The CPU Cycle Control Unit FETCH 34 31 80 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 34 31 80 21 DECODE EXECUTE ST 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 17 8C 98 Main Memory ALU 68
  • 69. The CPU Cycle Control Unit FETCH 34 31 80 21 DECODE EXECUTE ST 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 17 74 80 17 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 34 21 80 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 21 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 17 8C 98 Main Memory ALU 69
  • 70. The CPU Cycle Control Unit FETCH 34 21 F5 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 F5 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 17 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 36 21 F5 21 DECODE EXECUTE 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 17 8C 98 Main Memory ALU 70
  • 71. The CPU Cycle Control Unit FETCH 36 21 F5 21 DECODE EXECUTE LI 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 17 17 8C 98 Main Memory ALU The CPU Cycle Control Unit FETCH 36 21 F5 21 DECODE EXECUTE LI 30 21 17 31 80 21 F5 31 81 11 80 12 81 3C 23 FF 94 23 23 01 52 34 53 12 33 82 48 11 82 22 80 83 12 20 00 E3 5E 11 80 17 54 12 81 31 7F 31 80 12 7F 32 81 F0 00 74 80 17 F5 8C 98 Main Memory ALU 71