CH 4
CH 4
• Register Transfer
• Arithmetic Microoperations
• Logic Microoperations
• Shift Microoperations
Registers
• A register is a group of flip-flop with each flip-
flop capable of storing one bit of information.
• An n-bit register has a group of n flip-flop and is
capable of storing any binary information of n
bits.
• In addition to the flip-flops, a register may have
combinational gates that perform certain data-
processing tasks.
• Various types of registers are available
commercially.
• The transfer of new information into a register is
referred to as loading the register.
MICROOPERATIONS
• The operations that are performed on the data stored in
registers are called microoperations.
• The result of the microoperation may replace the
previous binary information of a register or may be
transferred to another register.
• The functions built into registers are examples of
microoperations like-----
– Shift
– Load
– Clear
– Increment
–…
MICROOPERATION Contd..
R f(R, R)
f: shift, load, clear, increment, add, subtract, complement,
and, or, xor, …
Computer Organization Computer Architectures
Register Transfer & -operations 7 Register Transfer Language
DESIGNATION OF REGISTERS
• Registers are designated by capital letters, sometimes followed
by numbers (e.g., A, R13, IR)
• Often the names indicate function:
– MAR - memory address register
– PC - program counter
– IR - instruction register
MAR
DESIGNATION OF REGISTERS
• Designation of a register
- a register
- portion of a register
- a bit of a register
15 0 15 8 7 0
R2 PC(H) PC(L)
Numbering of bits Subfields
REGISTER TRANSFER
• Information transfer (the contents) of one register to
another is a register transfer.
REGISTER TRANSFER
• A register transfer such as
R3 R5
CONTROL FUNCTIONS
• Normally, we want the transfer to occur only under a
predetermined control condition. Often actions need to
only occur if a certain condition is true.
• This is similar to an “if” statement in a programming
language.
like ---- If (P= 1) then (R1 R2)
• In digital systems, this is often done via a control signal,
called a control function generated by control section. (P
is a Boolean variable equal 0 or 1)
– If the signal is 1, the action takes place
• This is represented as: P: R2 R1
Which means “if P = 1, then load the contents of register
R1 into register R2”, i.e., if (P = 1) then (R2 R1)
Load
Transfer occurs here Timing diagram
The next positive transition of the clock at time t+1 finds the load input
active and the data inputs of R2 are then loaded into the register in
parallel. P may go back to 0 at time t+1, (transfer will occur with every
clock pulse while P is remains active).
Computer Organization Computer Architectures
Register Transfer & -operations 16
SIMULTANEOUS OPERATIONS
• If two or more operations are to
occur simultaneously, they are
separated with commas:
P: R3 R5, MAR IR
• Here, if the control function P = 1,
load the contents of R5 into R3, and
at the same time (clock), load the
contents of register IR into register
MAR.
Computer Organization Computer Architectures
Register Transfer & -operations 18 Register Transfer
CONNECTING REGISTRS
• In a digital system with many
registers, it is impractical to have
data and control lines to directly
allow each register to be loaded with
the contents of every possible other
registers.
• To completely connect n registers
n(n-1) lines are required
• O(n2) cost.
CONNECTING REGISTRS
1 1 D
4 x1 4 x1 4 x1 4 x1
n bits = n MUX MUX1 MUX2 MUX3 MUX4
Size of MUX = k x 1
x
(k is the no of registers) select
y
S0 0
Select 2X4
1
S1 Decoder
2
Enable 3
Bus lines
Reg. R0 Reg. R1 Reg. R2 Reg. R3
D0 D1 D2 D3
z E (enable)
Select 2x4
w
Decoder
E (enable)
Reg. R3
D3
Reg. R2
D2
Decoder
2x4
D1
D0
Reg. R1
w
z
Select
Reg. R0
Computer Organization Computer Architectures
Register Transfer & -operations 26 Bus and Memory Transfers
or
R2 R1
R1the bus is implicit, but in
BUS case
• In the former
the latter,
R2it
is explicitly
BUS indicated
MEMORY (RAM)
• Memory (RAM) can be thought as a sequential circuits containing
some number of registers.
• These registers hold the words of memory.
• Each of the r registers is indicated by an address.
• These addresses range from 0 to r-1
• Each register (word) can hold n bits of data.
• Assume the RAM contains r = 2k words n bit each. It needs the
following:
– n data input lines
data input lines
– n data output lines
– k address lines n
MEMORY TRANSFER
• Collectively, the memory is viewed at the register level as
a device, M.
• Since it contains multiple locations, we must specify
which address in memory we will be using.
• This is done by indexing memory references.
• Memory is usually accessed in computer systems by
putting the desired address in a special register, the
Memory Address Register (MAR, or AR).
• When memory is accessed, the contents of the MAR get
sent to the memory unit’s address lines
M
Read
Memory
AR
unit
Write
Memory
Address Lines
MEMORY READ
• To read a value from a location in memory and load it into a register,
the register transfer language notation looks like this:
or R1 M[AR]
R1 M[MAR]
• This causes the following to occur--
– The contents of the MAR/AR get sent to the memory address
lines.
– A Read (= 1) gets sent to the memory unit.
– The contents of the specified address are put on the memory’s
output data lines.
– These get sent over the bus to be loaded into register R1.
MEMORY WRITE
• To write a value from a register to a location in memory looks
like this in register transfer language:
R1
M[MAR]
or M[AR] R1
• This causes the following to occur
– The contents of the MAR/AR get sent to the memory address
lines.
– A Write (= 1) gets sent to the memory unit.
– The values in register R1 get sent over the bus to the data
input lines of the memory.
– The values get loaded into the specified address in the
memory.
MICROOPERATIONS
ARITHMETIC MICROOPERATIONS
• The basic arithmetic microoperations are
– Addition
– Subtraction
– Increment
– Decrement
HALF Adder
A combinational circuit that performs the arithmetic addition of two
bits is called a half-adder . One that performs the addition of
three bits (two significant bits and a previous carry) is called a
full-adder. Two half adder are needed to implement a full adder.
HALF ADDER: The input variables x and y represents the two
significant bits to be added. The output variables the sum and
carry.
X Y
C S
0 0
0 0
0 1
0 1
1 0
Computer 0Organization
1 Computer Architectures
Register Transfer & -operations 35
FULL Adder
It consists of three inputs and two outputs . Two of the
inputs variables, denoted by x and y, represents the two
significant bits to be added . The third input z represents
the carry from the previous lower significant bit position.
The two Boolean expression for the full adder :
S = x y z
C = xy + (x y )z
x y z c
s
0 0 0 0
0
0 0 1 0
1
0 1 0 0
1
0 1 1 1
0
1 0 0 0
1
Computer Organization Computer Architectures
Register Transfer & -operations 36 Arithmetic Microoperations
BINARY ADDER
Binary Adder (4 bit binary adder)
B3 A3 B2 A2 B1 A1 B0 A0
FA C3 FA C2 FA C1 FA C0
C4 S3 S2 S1 S0
B3 A3 B2 A2 B1 A1 B0 A0
C3 C2 C1 C0
FA FA FA FA
Mode input
C4 S3 S2 S1 S0 M=0 adder
M=1
subtractor
Computer Organization Computer Architectures
Register Transfer & -operations 38 Arithmetic Microoperations
BINARY INCREMENTER
Binary Incrementer
A3 A2 A1 A0 1
x y x y x y x y
HA HA HA HA
C S C S C S C S
C4 S3 S2 S1 S0
Computer Organization Computer Architectures
Register Transfer & -operations 39 Arithmetic Microoperations
ARITHMETIC CIRCUIT
Cin
S1
S0
A0 X0 C0
S1 D0
S0 FA
B0 0 4x1 Y0 C1
1 MUX
2
3
A1 X1 C1
Output can be
S1 FA D1 calculated
S0
B1 0 4x1 Y1 C2 from
1 MUX
2
3 D = A + Y + Cin
A2 X2 C2
S1 FA D2
S0
B2 0 4x1 Y2 C3
1 MUX
2
3
A3 X3 C3
S1 D3
S0 FA
B3 0 4x1 Y3 C4
1 MUX
2
3 Cout
0 1
ARITHMETIC CIRCUIT
LOGIC MICROOPERATIONS
• Specify binary operations on the strings of bits in registers
– Logic microoperations are bit-wise operations, i.e., they work on the
individual bits of data
– useful for bit manipulations on binary data
– useful for making logical decisions based on the bit value
• There are, in principle, 16 different logic functions that can
be defined over two binary input variables
A B F0 F1 F2 … F13 F14 F15
0 0 0 0 0 … 1 1 1
0 1 0 0 0 … 1 1 1
1 0 0 0 1 … 0 1 1
1 1 0 1 0 … 1 0 1
Ai
There are 16 logic 0
Bi
microoperations,
most computers 1
4X1 Fi
use only four- MUX
AND, OR, XOR, 2
and complement.
3 Select
S1
S0
Function table
S1 S0 Output -operation
0 0 F=AB AND
0 1 F = AB OR
1 0 F=AB XOR
1 1 F = A’ Complement
– Selective-set AA+B
– Selective-complement AAB
– Selective-clear A A • B’
– Mask (Delete) AA•B
– Clear AAB
– Insert A (A • B) + C
– Compare AAB
– ...
SELECTIVE SET
• The selective set operation sets to 1 the bits in register A
where there are corresponding 1’s in register B .
1100 At
1010 B
1110 At+1 (A A OR B)
SELECTIVE COMPLEMENT
• The selective complement operation complement bits in A
where there are corresponding 1’s in B. It does not affect bit
positions that have 0’s in B.
1100 At
1010 B
0110 At+1 (A A B)
SELECTIVE CLEAR
• The selective clear operation clears to 0 the bit in
A only where there are corresponding 1’s in B.
1100 At
1010 B
0100 At+1 (A A B’)
MASK OPERATION
1100 At
1010 B
1000 At+1 (A A B)
CLEAR OPERATION
• The clear operation compares the
words in A and B and produces an all
0’s result if the two numbers are equal.
1 1 0 0 At
1010 B
0 1 1 0 At+1 (A A B)
1 0 1 0 At
1010 B
0 0 0 0 At+1 (A A B)
Computer Organization Computer Architectures
Register Transfer & -operations 50 Logic Microoperations
INSERT OPERATION
• An insert operation is used to introduce a specific bit pattern into A
register, leaving the other bit positions unchanged
• This is done as
– A mask operation to clear the desired bit positions, followed by
– An OR operation to introduce the new bits into the desired
positions
– Example
» Suppose you wanted to introduce 1010 into the low order four
bits of A: 1101 1000 1011 0001 A (Original)
1101 1000 1011 1010 A
(Desired)
SHIFT MICROOPERATIONS
• There are three types of shifts
– Logical shift (left and right)
– Circular shift (left and right)
– Arithmetic shift (left and right)
• What differentiates them is the information that goes into
the serial input
LOGICAL SHIFT
• In a logical shift the serial input to the shift is a 0.
CIRCULAR SHIFT
• In a circular shift the serial input is the bit that is shifted out of
the other end of the register.
ARITHMETIC SHIFT
• An arithmetic shift is meant for signed binary numbers
(integer)
• An arithmetic left shift multiplies a signed number by two
• An arithmetic right shift divides a signed number by two
• The main distinction of an arithmetic shift is that it must keep
the sign of the number the same as it performs the
multiplication or division
• A right arithmetic shift operation:
sign
bit
ARITHMETIC SHIFT
• An left arithmetic shift operation must be checked for the
overflow
0
sign
bit
S
MUX H0 Function Table
0
1
Select Output
A0
S S H0 H1 H2 H3
A1 H1
0 MUX
1
0 IR A0 A1 A2
A2
1 A1 A2 A3 IL
A3
S
MUX H2
0
1
S
MUX H3
0
1
Serial
input (IL)
Arithmetic D i
Circuit
Select
Ci+1
0 4x1 Fi
1 MUX
2
3
Ei
Logic
Bi Circuit
Ai
Ai-1 shr
Ai+1 shl