You are on page 1of 17

UNIT-2

CPU DESIGN AND COMPUTER ARITHMETIC


SYLLABUS: CPU DESIGN: Instruction Cycle. Memory: Reference Instructions- Input Output and
Interrupt, Addressing Modes, DATA Transfer and Manipulation, Program Control
INSTRUCTION CYCLE: The program consists of a sequence of instructions. The program is executed in
the computer by going through a cycle for each instruction. Each instruction cycle in turn is subdivided in to
a sequence of sub cycles or phrases.
Instruction cycle consists of following phrases
1. Fetch an instruction from memory
2. Decode the instruction
3. Read the effective address the memory if the instructions has an indirect address
4. Execute the instructions
This process continues indefinitely unless halt instruction is encountered.
FETCH AND DECODE:

The program counter PC is loaded with address of the first instruction in the program. The sequence

counter SC is cleared to 0, providing a decoded timing signal To.


After each clock pulse, SC is incremented by one. So that the timing signals go through a sequence

TO,T1,T2 and so on
Ex: T0 : ARPC
T1: IR:M[AR], PCPC+1
T2: D0..D7 Decode IR(12-14), ARIR(0-11), IIR(15)
In timing signals to the address of an instruction is transferred in to address register AR.
In T1the instruction from the memory is transferred to IR(instruction register) & program counter is

incremented.
In T2 decode the instruction .the address part is transferred to AR.the mode bit is transferred to I &

OPCODE values is transferred to 0.


To provide data path for the transfer of PC to AR, we must apply timing signal T0 to achieve the

following connection.
Place the content of PC onto the bus by making the bus selection inputs S2,S1,S0 equal to 010.
Transfer the content of the bus to AR by enabling the LD input of AR.

The next timing signal T1 provide the following connection in the bus system.
T1: IRM[AR],PCPC+1
1) Enable the read input of memory.
2) Place the content of memory onto the bus by making S2,S1,S0 =111
3) Transfer the content of the bus IR by enabling the LD input of IR.
4) Increment pc by enabling the INR Input of PC.
Type of instruction:
The instruction cycle is shown in the figure
Decoder output D7 is equal to1 if the operation code is equal to binary 111. The instruction must be
register-reference or input-output type.
If D7=0,the operation code must be one of the seven values 000 through 110 specifying a memory
reference instruction.
If D7=0, and I=1, we have a memory reference instruction with an indirect address condition can be
symbolized by the register transfer statement

Time To, AR is connected to the address inputs of memory, it is necessary to transfer the address from
PC to AR during the clock transition associated with timing signal T0.
The instruction read from memory is then placed in the instruction register with the clock transition

associated with timing signal T1. At the same time, it is incremented by one to prepare it for the address
of the next instruction in the program.
At the time T2, the operation code in IR is decoded, the indirect bit is transferred to flip flop I and the

address part of the instructions is transferred to AR.


Note that SC is incremented after each clock pulse to produce the sequence T0,T1

ARM [AR]
AR holds the address part of instruction. This address is used during the memory read operation .The word
at the address given by AR is read from memory and placed on the common bus. The LD input of AR is
then enabled to receive the indirect address that resided in the 12 least significant bits of the memory word.
The three instruction types are subdivided into four different paths.the selected operation is activated with
the clock transition associated with timing signal T3.
D71IT3 : AR M[AR]
D71I1T3 : nothing
D7I1T3 : execute a register reference instruction
D7IT3 : executes an input-output
Note: The SC is either incremented or cleared to 0 with every positive clock transition. when SC is to be
cleared, we will include the statement SC0

REGISTER-REFERENCE INSTRUCTIONS:
These are recognized by the control when D7=1 and I=0. These instructions use bits 0 through 11 of
the instruction code to specify one of the 12 instructions. These 12 bits are available in IR (0-11). They
are also transferred to AR during time T2.
D7I1T3 = r (common to all register reference instructions)
IR (i) = Bi [bit in IR (0-11) that specifies the operation]
The control function is distinguished by one of the bits in IR(0-11). By assigning the symbol B i to bit i of
IR, all control functions can be simply denoted by rBi.
Ex: The instruction CLA has hexadecimal code 7800=0111 1000 00000 0000.
The first bit is a zero which is equivalent to I1.
The next three bits constitute the operation code and are recognized from decoder output D7.
Bit 11 in IR is 1 & is recognized from B11.
The control function which initiates the micro operation for this instruction is D7I1T3B11=rB11

MEMORY REFERENCE INSTRUCTIONS:


The decoded output Di for i=0, 1, 2, 3, 4, 5, 6 from the operation decoder that belongs to each
instruction is included in the table.
The effective address of the instruction is in the address register AR and was placed there during
timing signal T2 when I=0 or during timing signal T3 when I=1.
The execution of the memory reference instructions starts with timing signal T4.

AND to AC: This is an instruction that performs the AND logic operation on pairs of bits in AC and the
memory word specified by the effective address. The result of the operation is transferred to AC.

ADD TO AC : This instruction adds the content of the memory word specified by the effective address to
the value of AC. The sum is transferred into AC and the output carry C out is transferred to the E (extended
accumulator) flip-flop. The micro operations needed to execute this instruction are

Load to AC: This instruction transfers the memory word specified by the effective address to AC. The
micro operations needed to execute this instruction are

STA: Store AC: This instruction store the content of AC into the memory word specified by the effective
address.
Branch unconditionally: The effective address from AR is transferred through the common bus to PC.
Resetting SC to 0, transfers control to T0. The next instruction is then fetched and executed from the
memory address given by the new value in PC.
Branch and save return address: The branch instruction stores the address of the next instruction (which
is available in PC) into a memory location specified by the effective address. The effective address plus one
is then transferred to PC to serve as the address of the first instruction in the subroutine.

Increment and skip if zero: It is not possible to increment a word inside the memory, it is necessary to read
the word into DR, increment DR and store the word back into memory.

INPUT-OUTPUT AND INTERRUPT:


Instructions and data stored in memory must come from some input device. Computational results must be
transmitted to the user through some output device. Commercial computers include many types of input and
output devices.

The terminal sends and receives serial information. Each quantity of information has 8 bits of an
alphanumeric code.
The serial information from the keyboard is shifted into the input register INPR. The serial
information for the printer is stored in the output register OUTR. These two registers communicate
with a communication interface serially and with the AC in parallel.
The input register INPR consists of 8bits and holds an alphanumeric input information. The 1-bit
input flag FGI is a control flip-flop.
The flag bit is set to 1, when new information is available in the input device and is cleared to 0,
when the information is accepted by the computer.
The flag is needed to synchronize the timing rate difference between the input device and the
computer.
The output flag FGO is set to 1, the information from AC is transferred in parallel to OUTR and
otherwise FGO is cleared to 0.
The computer does not load a new character into OUTR when FGO is 0. Because this condition
indicates that the output device is in the process of printing the character.
Input-output instructions:
These instructions are needed for transferring information to and from AC register, for checking the
flag bits, and for controlling the interrupt facility.
Input-output instructions have an opcode 1111 and are recognized by the control when D7=1 and
I=1. The remaining bits of an instruction specify the particular operation.
D7IT3 = P (Common to all input-output instructions)
IR (i) = Bi (bit in IR (6-11) that specifies the instruction)
The control function is distinguished by one of the bits in IR (6-11). By assigning the symbol Bi to
bit i of IR, all control function can be denoted by PBi for i=6 through 11. The SC is cleared to 0
when P=D7IT3=1.
7

The INP instruction transfers the input information from INPR into the 8 low-order bits of AC and
also clears the input flag to 0.
The OUT instruction transfers the 8 LSBs of AC into the output register OUTR and clears the output
flag to 0.
If the flag is 1, the branch instruction is skipped and an input or output instruction is executed.
The last two instructions are set and clear an interrupt enable flip flop IEN.
PROGRAM INTERRUPT:
When IEN is cleared to 0, the flags cannot interrupt the computer.
When IEN is set to 1, the computer can be interrupted.
An interrupt flip-flop R is included in the computer. When R=0, the computer goes through an
instruction cycle.
During the execute phase of the instruction cycle IEN is checked by the control. If it is 0, it indicates
that the programmer does not want to use the interrupt, So control continues with the next instruction
cycle. If IEN is 1, control checks the flag bits, If both flags are 0, it indicates that neither the input
nor the output registers are ready for transfer of information.

In this case, control continues with the next instruction cycle. If either flag is set to 1 while IEN=1,
flip flop R is set to 1.
At the end of the execute phase, control checks the value of R, and if it is equal to 1, it goes to an
interrupt cycle instead of an instruction cycle.
The interrupt cycle is a hardware implementation of a branch and save return address operation. The
return address available in PC is stored in a specific location where it can be found later when the
program return to the instruction at which it was interrupted. This location may be a processor
register, a memory stack, or a specific memory location.
Here we choose the memory location at address 0 as the place for storing the return address. Control
then inserts address 1 into PC and clear IEN and R so that no more interrupts can occur until the
interrupt request from the flag has been serviced.

Suppose that an interrupt occurs and R is set to 1, while the control is executing the instruction at
address 255. At this time, the return address 256 is in PC.
The programmer has previously placed on I/0 service program in memory starting from address 1120
and a BUN 1120 instruction at address 1 [fig a].
When the control signal reaches timing signal T0 and finds that R=1, it proceeds with the interrupt
cycle. The content of PC (256) is stored in memory location 0, PC is set to 1 and R is cleared to 0.
At the beginning of the next instruction cycle, the instruction that is read from memory is in address 1
since this is the content of PC.
The branch instruction at address 1 causes the program to transfer to the input-output service program at
address 1120.
This program checks the flags, determines which flag is set and then transfers the required input or
output information. Once this is done, ION is executed to set IEN to1, & the program returns to the
location where it was interrupted.
INTERRUPT CYCLE:
The interrupt cycle is initiated after the last execute phase if the interrupt flip-flop R is equal to 1. This flipflop is set to 1 if IEN=1and either FGI or FGO are equal to 1. This can happen with any clock transition
except when timing signals To, T1orT2 are active.
The condition for setting flip-flop R to 1can be expressed as
The symbol + indicates logic OR operation between FGI and FGO. This is AND with IEN and To T1
T2.
The interrupt cycle stores the return address (available in PC) into memory location 0, branches to memory
location 1, and clears IEN, R & SC too. This can be done with the following sequence of micro operations

During the first timing signal AR is cleared to 0,and the content of PC is transferred to the temporary
register TR.
10

With the second timing signal, the return address is stored in memory at location 0 and PC is closed to
0.
The third timing signal increments PC to 1, clears IEN and R and control goes back to T o by clearing
SC to 0.

ADDRESSING MODES: When a microprocessor accesses memory to either read or write data, it
must specify the memory address it needs to access. An assembly languages instruction may use one of
several addressing modes to generate this address.
Eg: LD AC---it loads data from memory into the microprocessors AC register.
1) Direct Mode: The instruction includes a memory address.
Eg: LD AC 5
reads the data from memory location 5 and stores the data in the CPUS
accumulator.
2) Indirect Mode: in this the instruction includes the address of a memory location that contains the
address of an operand.
Eg: LD AC (5) - It first receives the content of location 5 that is 10 the CPU reads the data from
location 10 and loads into accumulator.
3) Register direct mode: The instruction includes the register it contains data value.
Eg: LDAC R the data loaded from register R to accumulator.
4) Register Indirect mode: the instruction contains the register that contains the address of an operand.
Eg: LOAD (R)
5) Immediate mode: the actual data is stored in instruction itself.
Ex: LOAD #5 the value 5 is loaded into AC register.
6) Implicit Mode: The instruction implicitly specifies the operand because it always applies to a
specific register.
Ex: CLAC Clear accumulator register.
7) Relative Mode: In this mode, the operand is an object, not the actual address. it is added to the
contents of the CPUS program counter to generate the required address.
The AC contains the address of the next instruction.
Ex: LD AC $5
8) Index mode: the address specified in the instruction is added to the contents of tan index register to
get the actual address of an operand.
Ex: LD AC 5(X)
9) Base address mode: the address specified in instruction is added to base address register content to
get the actual address of tan operand.
Ex: LD AC 5(BR)
Example:
a) 0: LD AC 5 instruction gets data form location 5
5:10 stores values in CPU
b) 0: LD AC @5 Instruction gets address from location 5
5:10 then gets the data from location 10
10:20 Stores value in CPU
11

c) 0: LDAC R instruction gets data from register R


R:5 Store the value in CPU
d) 0:LD AC (R) Instruction gets the data from register R
R:5 Then gets the data from location 5
e) 0:LD AC#5 Stores value from instruction in CPU
f) 0:LD AC(implicit) instruction gets value from the stack
Stack Stores value in CPU
g) 0:LD AC$5
1:Address of next instruction (i.e. pc=1)
5:address of given instruct
6:12 stores the value in CPU
h) 0:LD AC 5(X)
X=10 instruction gets value from instruction register
15:30 stores value in CPU
i) 0:LDAC 5(R)
R:10 instruction gets value from base register
15:30 stores value in CPU

DATA TRANSFER AND MANIPULATION:


Most computer instructions can be classified into three categories:
1. Data Transfer Instructions
2. Data manipulation Instructions
3. Program control Instructions
DATA TRANSFER INSTRUCTION:
Data Transfer instructions cause transfer data from one location to another without changing the binary
information content.
The most common transfers are between memory and processor registers between processor registers
and input or output, and between the processor registers themselves.

LOAD: The load instruction has been used mostly to designate a transfer from memory to a processor
register, usually an accumulator.
12

Store: The store instruction designates a transfer from a processor to memory.


Move: The move instruction has been used in computer with multiple CPU registers to designate a transfer
from one register to another. It has also been used for data transfers between CPU registers and memory or
between two memory words.
EXCHANGE: The exchange instruction swaps information between two registers or a registers and a
memory word.
INPUT-OUTPUT: The input and output instructions transfer data among processor registers and input or
output terminals.
PUSH-POP: The push-pop instructions transfer data between processor registers and a memory stack.
DATA MANIPULATION INSTRUCTIONS:
Data manipulation Instructions are divided into three basic types :
1. Arithmetic Instructions.
2. Logical and bit manipulation Instructions.
3. Shift Instructions.
Arithmetic Instructions:
The basic four arithmetic operations are addition, subtraction, multiplication & division.
The Increment Instructions adds 1 to the value stored in a register or memory word. Common
characteristic of the increment operations when executed in processor is that a binary number of all
1s when incremented produces a result of all 0s.
The decrement instruction subtracts 1 from a value stored in a register or memory word. A number
with all 0s , when decremented, produces a number with all 1s.
A special carry flip flop is used to store the carry from an operation. The Instruction add with carry
performs the addition on two operands plus the value of the carry from the previous computation.
The subtract with borrowinstruction subtracts two words and a borrow which have resulted from a
precious subtract operation.
The negate instruction forms the 2s complement of a number, effectively reversing the sign of an
integer when represented in the sign 2s complement form.

Logical and bit manipulation:


There are three bit manipulation operations possible: a selected bit can be cleared to 0, or can be set to
1, or can be complemented.
13

The AND Instruction is used to clear a bit or a selected group of bits of an operand. For any Boolean
variable x, the relationships x b0 = 0 and x b1=x dictate that a binary value ANDed with a 0 produces
a 0; but the variable does not change in value when ANDed with a 1.

The OR instruction is used to set a bit or a selected group of bits of an operand. For any Boolean
variable x, the relationships x+1=1 and x+0=x dictate that a binary variable ORed with a 1 produces a
1; but the variable does not change when ORed with a 0.
The XOR instruction is used to selectively complement bits of an operand. This is because of the
boolean relationships x 1=x and x 0=x.
Shift Instructions:
Shifts are operations in which the bits of a word are moved to the left or right . The bit shifted in at the
end of the word determines the type of shift used . Shift instructions may specify either logical shifts ,
arithmetic shifts , or rotate type operations . In either case the shift may be to the right or the left

The logical shift inserts 0 to the end position. The end position is the left more bit for shift right and
the right most bit position for the shift left.
14

The Rotate instructions produce a circular shift. Bits shifted out at one end of the word are not lost as
in a logical Shift but are circulated back into the other end.
To rotate through carry instruction treats a carry bit as an extension of the register whose word is being
rotated.
A rotate left through carry instruction carry instruction treats the carry bit into the right most bit
position of the register, transfers the left most bit position into the carry, and at the same time, shifts
the entire register to the left.
The arithmetic shift right instruction must preserve the sign bit in left most position. The sign bit is
shifted to right together with the rest of the number, but the sign bit itself remains unchanged.
The arithmetic Shift left inserts 0 to the end position and itself it is identical to the logical shift left.
The instruction code format of a shift instruction:
OP REG TYPE
RL
COUNT
OP: Operation Code
REG: register address that specifies the location of operand.
TYPE: 2 bit field, specifying the four different types of shift.
COUNT: It is a K field specifying upto 2k-1 shifts.
PROGRAM CONTROL:
Program control instructions specify conditions for altering the content of the program counter. When
execute this type of instruction, that may change the address value in the program counter and cause the
flow of control to be altered.
The change in the value of program counter as a result of the execution of a program control instruction
causes a break in the sequence of instruction execution.
The branch and jump instructions are used interchangeably to mean the same thing but sometimes they
are used to denote different addressing modes.

Branch and jump instructions may be conditional or unconditional.


An unconditional branch instruction causes a branch to the specified address without any conditions.
The conditional branch instruction specifies a condition such as branch if positive or branch if zero.
15

If the condition is met, the program counter is loaded with the branch address and the next instruction is
taken from this address.
If the condition is not met, the PC is not changed and the next instruction is taken from the next location
from the next location in sequence.
SKIP: This instruction does not need an address field and is therefore a zero-address instruction. A
conditional skip instruction will skip the next instruction if the condition is met. This causes increments
the PC. If the condition is not met, Control proceeds with the next instruction in sequence where the
programmer inserts an unconditional branch instruction.
Compare: This instruction performs a subtraction between two operands, but the result of the operation is
not retained. Certain status bit conditions are set as a result of the operation.
Test: The test instruction performs the logical AND of two operands and updates certain bits without
retaining the result or changing the operands.
Program interrupt:
Program interrupt refers to the transfer of program control from a currently running program to another
service program as a result of an external or internal generated request. Control returns to the original
program after the service program is executed.
The interrupt procedure is quite similar to a subroutine call except for three variations
1. The interrupt is usually intimated by an internal or external signal rather than from the execution of an
instruction.
2. The address of the interrupt service program is determined by the hardware rather than from the address
field of an instruction.
3. An interrupt procedure usually stores all the information necessary to define the state of the CPU rather
than storing only the program counter.
Hardware Procedure:
The state of the CPU is pushed into a memory stack and the beginning address of the service routine is
transferred to a program counter. The beginning address of the service routine is determined by the
hardware rather than the address field of an instruction.
The service routine must then determine what caused the interrupt and proceed to service it.
Types of interrupts: There are three major types of interrupts that cause break in the normal execution of
a program.
1. External interrupts
2. Internal Interrupts
3. Software Interrupt
1. External interrupts: External interrupts come from I/O devices, from a timing device, from a power
supply, or from any external source.
Examples: I/O device requesting transfer of data, I/O device finished transfer of data, elapsed time of an
event, or power failure.
2. Internal Interrupts: These arise from illegal or erroneous use of an instruction or data. Internal
Interrupts are also called traps.
Examples: These are caused by register overflow, attempt to divide by zero, an invalid operation code,
stack overflow, and Protection violation.
Difference:
16

1. Internal Interrupt is initiated by some exceptional condition caused by the program itself rather than by
an external event.
2. Internal Interrupts are synchronous with the program while external Interrupts are synchronous.
3. If the program is even is return, the internal interrupts will occur in the same place each time. External
Interrupts depends on external conditions that are independent of the program being executed at the
time.
3. Software Interrupt: A software interrupt is initiated by executing an instruction. Software Interrupt is
a special call instruction that behaves like an interrupt rather than a subroutine call. It can be used by
the programmer to initiate an interrupt procedure at any desired point in the program.
The most common use of Software interrupt is associated with a supervisor call instruction. This
instruction provides means for switching from a CPU user mode to the supervisor mode.
The CPU is normally in the user mode when executing user programs. When the CPU is executing a
program that is part of the operating system, it is said to be in the supervisor mode or system mode.
Certain instructions are privileged and can be executed in this mode only.
When an input or output transfer is required, the supervisor mode is requested by means of a supervisor
call instruction.

17

You might also like