Basic Computer Organization and Design
Basic Computer Organization and Design
1
5-1 Instruction Codes
• The Internal organization of a digital
system is defined by the sequence of
microoperations it performs on data
stored in its registers
• The user of a computer can control the
process by means of a program
• A program is a set of instructions that
specify the operations, operands, and the
processing sequence
2
5-1 Instruction Codes cont.
• A computer instruction is a binary code that
specifies a sequence of micro-operations for the
computer. Each computer has its unique
instruction set
• Instruction codes and data are stored in memory
• The computer reads each instruction from
memory and places it in a control register
• The control unit interprets the binary code of the
instruction and proceeds to execute it by issuing
a sequence of micro-operations
3
5-1 Instruction Codes cont.
• An Instruction code is a group of bits that
instructs the computer to perform a
specific operation (sequence of
microoperations). It is divided into parts
(basic part is the operation part)
• The operation code of an instruction is a
group of bits that defines certain
operations such as add, subtract, shift,
and complement
4
5-1 Instruction Codes cont.
• The number of bits required for the
operation code depends on the total
number of operations available in the
computer
• 2n (or little less) distinct operations n
bit operation code
5
5-1 Instruction Codes cont.
Memory It’s an
ADD
operation
Op code
Control
110010?????????? Unit
Read instruction
from memory
6
5-1 Instruction Codes cont.
• An operation must be performed on some
data stored in processor registers or in
memory
• An instruction code must therefore specify
not only the operation, but also the
location of the operands (in registers or in
the memory), and where the result will be
stored (registers/memory)
7
5-1 Instruction Codes cont.
• Memory words can be specified in instruction
codes by their address
• Processor registers can be specified by
assigning to the instruction another binary
code of k bits that specifies one of 2k registers
• Each computer has its own particular
instruction code format
• Instruction code formats are conceived by
computer designers who specify the
architecture of the computer
8
5-1 Instruction Codes cont.
Stored Program Organization
• An instruction code is usually divided into
operation code, operand address,
addressing mode, etc.
• The simplest way to organize a computer
is to have one processor register
(accumulator AC) and an instruction code
format with two parts (op code, address)
9
5-1 Instruction Codes
Stored Program Organization
cont.
15 12 11 0 Memory
Opcode Address 15
4096x16
0
Instruction Format
Instructions
15 0
(program)
Binary Operand
Operands
(data)
15 0
Processor register
(Accumulator AC)
10
5-1 Instruction Codes
Indirect Address
• There are three Addressing Modes used for
address portion of the instruction code:
– Immediate: the operand is given in the address
portion (constant)
– Direct: the address points to the operand stored
in the memory
– Indirect: the address points to the pointer
(another address) stored in the memory that
references the operand in memory
• One bit of the instruction code can be used to
distinguish between direct & indirect addresses
11
5-1 Instruction Codes
Indirect Address cont.
Instruction Format Effective
15 14 12 11 0 address
I Opcode Address
300 1350
457 Operand
1350 Operand
+ +
AC AC
12
5-1 Instruction Codes
Indirect Address cont.
• Effective address: the address of the
operand in a computation-type instruction
or the target address in a branch-type
instruction
• The pointer can be placed in a processor
register instead of memory as done in
commercial computers
13
5-2 Computer Registers
• Computer instructions are normally stored
in consecutive memory locations and
executed sequentially one at a time
• The control reads an instruction from a
specific address in memory and executes
it, and so on
• This type of sequencing needs a counter
to calculate the address of the next
instruction after execution of the current
instruction is completed
14
5-2 Computer Registers cont.
• It is also necessary to provide a register in
the control unit for storing the instruction
code after it is read from memory
• The computer needs processor registers
for manipulating data and a register for
holding a memory address
15
In order to cover the basic
concepts behind designing a
computer, a model (an imaginary
system) will be presented to you
throughout this chapter. This
model will be called the “Basic
Computer”
16
Registers in the Basic Computer
11 0
PC
11 0
AR Memory
15 0 4096 x 16
IR
15 0 15 0
TR DR
7 0 7 0 15 0
OUTR INPR AC
List of BC Registers
DR 16 Data Register Holds memory operand
AR 12 Address Register Holds address for memory
AC 16 Accumulator Processor register
IR 16 Instruction Register Holds instruction code
PC 12 Program Counter Holds address of instruction
TR 16 Temporary Register Holds temporary data
INPR 8 Input Register Holds input character
OUTR 8 Output Register Holds output character
17
S2
S1 Bus
S0
Memory unit 7
4096 x 16
Address
Write Read
AR 1
LD INR CLR
PC 2
LD INR CLR
DR 3
LD INR CLR
Adder E
and
logic
AC 4 Computer Registers
LD INR CLR Common Bus System
INPR
IR 5
LD
TR 6
LD INR CLR
OUTR
Clock
LD
16-bit common bus
18
5-2 Computer Registers
Common Bus System cont.
• S2S1S0: Selects the register/memory that would
use the bus
• LD (load): When enabled, the particular register
receives the data from the bus during the next
clock pulse transition
• E (extended AC bit): flip-flop holds the carry
• DR, AC, IR, and TR: have 16 bits each
• AR and PC: have 12 bits each since they hold a
memory address
19
5-2 Computer Registers
Common Bus System cont.
• When the contents of AR or PC are
applied to the 16-bit common bus, the four
most significant bits are set to zeros
• When AR or PC receives information from
the bus, only the 12 least significant bits
are transferred into the register
• INPR and OUTR: communicate with the
eight least significant bits in the bus
20
5-2 Computer Registers
Common Bus System cont.
• INPR: Receives a character from the input
device (keyboard,…etc) which is then
transferred to AC
• OUTR: Receives a character from AC and
delivers it to an output device (say a Monitor)
• Five registers have three control inputs: LD
(load), INR (increment), and CLR (clear)
• Register binary counter with parallel load and
synchronous clear
21
5-2 Computer Registers
Memory Address
• The input data and output data of the memory
are connected to the common bus
• But the memory address is connected to AR
• Therefore, AR must always be used to specify a
memory address
• By using a single register for the address, we
eliminate the need for an address bus that would
have been needed otherwise
22
5-2 Computer Registers
Memory Address cont.
• Register Memory: Write operation
• Memory Register: Read operation (note
that AC cannot directly read from
memory!!)
• Note that the content of any register can
be applied onto the bus and an operation
can be performed in the adder and logic
circuit during the same clock cycle
23
5-2 Computer Registers
Memory Address cont.
• The transition at the end of the cycle
transfers the content of the bus into the
destination register, and the output of the
adder and logic circuit into the AC
• For example, the two microoperations
DR←AC and AC←DR (Exchange)
can be executed at the same time
• This is done by:
24
5-2 Computer Registers
Memory Address cont.
• 1- place the contents of AC on the bus
(S2S1S0=100)
• 2- enabling the LD (load) input of DR
• 3- Transferring the contents of the DR
through the adder and logic circuit into AC
• 4- enabling the LD (load) input of AC
• All during the same clock cycle
• The two transfers occur upon the arrival of
the clock pulse transition at the end of the
clock cycle 25
5-3 Computer Instructions
26
BASIC COMPUTER INSTRUCTIONS
Hex Code
Symbol I = 0 I=1 Description
AND 0xxx 8xxx AND memory word to AC
ADD 1xxx 9xxx Add memory word to AC
LDA 2xxx Axxx Load AC from memory
STA 3xxx Bxxx Store content of AC into memory
BUN 4xxx Cxxx Branch unconditionally
BSA 5xxx Dxxx Branch and save return address
ISZ 6xxx Exxx Increment and skip if zero
3x8
decoder
7 6543 210
D0
I
D7 Control Control
logic outputs
gates
T15
T0
15 14 . . . . 2 1 0
4 x 16
Sequence decoder
32
- Generated by 4-bit sequence counter and 4x16 decoder
- The SC can be incremented or cleared.
T0
T1
T2
T3
T4
D3
CLR
SC
33
5-4 Timing & Control cont.
• A memory read or write cycle will be initiated
with the rising edge of a timing signal
• Assume: memory cycle time < clock cycle time!
• So, a memory read or write cycle initiated by a
timing signal will be completed by the time the
next clock goes through its positive edge
• The clock transition will then be used to load the
memory word into a register
• The memory cycle time is usually longer than
the processor clock cycle wait cycles
34
5-4 Timing & Control cont.
• T0: AR←PC
– Transfers the content of PC into AR if timing signal T0
is active
– T0 is active during an entire clock cycle interval
– During this time, the content of PC is placed onto the
bus (with S2S1S0=010) and the LD (load) input of AR
is enabled
– The actual transfer does not occur until the end of the
clock cycle when the clock goes through a positive
transition
– This same positive clock transition increments the
sequence counter SC from 0000 to 0001
– The next clock cycle has T1 active and T0 inactive
35
5-5 Instruction Cycle
• A program is a sequence of instructions
stored in memory
• The program is executed in the computer
by going through a cycle for each
instruction (in most cases)
• Each instruction in turn is subdivided into a
sequence of sub-cycles or phases
36
5-5 Instruction Cycle cont.
• Instruction Cycle Phases:
– 1- Fetch an instruction from memory
– 2- Decode the instruction
– 3- Read the effective address from memory if
the instruction has an indirect address
– 4- Execute the instruction
• This cycle repeats indefinitely unless a
HALT instruction is encountered
37
5-5 Instruction Cycle
Fetch and Decode
• Initially, the Program Counter (PC) is
loaded with the address of the first
instruction in the program
• The sequence counter SC is cleared to 0,
providing a decoded timing signal T0
• After each clock pulse, SC is incremented
by one, so that the timing signals go
through a sequence T0, T1, T2, and so on
38
5-5 Instruction Cycle
Fetch and Decode cont.
– T0: AR←PC (this is essential!!)
The address of the instruction is moved to AR.
T1 S2
T0 S1 Bus
S0
Memory
7
unit
Address
Read
AR 1
LD
PC 2
INR
IR 5
LD Clock
Common bus
40
Start DETERMINE THE TYPE OF INSTRUCTION
SC 0
T0
AR PC
T1
IR M[AR], PC PC + 1
T2
Decode Opcode in IR(12-14),
AR IR(0-11), I IR(15)
T3 T3 T3 T3
Execute Execute AR M[AR] Nothing
input-output register-reference
instruction instruction
SC 0 SC 0 Execute T4
memory-reference
instruction
SC 0
D'7IT3: AR M[AR]
D'7I'T3: Nothing
D7I'T3: Execute a register-reference instr.
D7IT3: Execute an input-output instr.
41
REGISTER REFERENCE INSTRUCTIONS
Register Reference Instructions are identified when
- D7 = 1, I = 0
- Register Ref. Instr. is specified in B0 ~ B11 of IR
- Execution starts with timing signal T3
Operation
Symbol Symbolic Description
Decoder
AND D0 AC AC M[AR]
ADD D1 AC AC + M[AR], E Cout
LDA D2 AC M[AR]
STA D3 M[AR] AC
BUN D4 PC AR
BSA D5 M[AR] PC, PC AR + 1
ISZ D6 M[AR] M[AR] + 1, if M[AR] + 1 = 0 then PC PC+1
- The effective address of the instruction is in AR and was placed there during
timing signal T2 when I = 0, or during timing signal T3 when I = 1
- Memory cycle is assumed to be short enough to be completed in a CPU cycle
- The execution of MR Instruction starts with T4
AND to AC
D0T4: DR M[AR] Read operand
D0T5: AC AC DR, SC 0 AND with AC
ADD to AC
D1T4: DR M[AR] Read operand
D1T5: AC AC + DR, E Cout, SC 0 Add to AC and store carry in E
43
MEMORY REFERENCE INSTRUCTIONScont.
LDA: Load to AC
D2T4: DR M[AR]
D2T5: AC DR, SC 0
STA: Store AC
D3T4: M[AR] AC, SC 0
BUN: Branch Unconditionally
D4T4: PC AR, SC 0
BSA: Branch and Save Return Address
M[AR] PC, PC AR + 1
Memory, PC, AR at time T4 Memory, PC after execution
20 0 BSA 135 20 0 BSA 135
Return address: PC = 21 Next instruction 21 Next instruction
AR = 135 135 21
136 Subroutine PC = 136 Subroutine
45
Memory-reference instruction
D0 T 4 D1 T 4 D2 T 4 D 3T 4
D0 T 5 D1 T 5 D2 T 5
AC AC DR AC AC + DR AC DR
SC <- 0 E Cout SC 0
SC 0
D4 T 4 D5 T 4 D6 T 4
PC AR M[AR] PC DR M[AR]
SC 0 AR AR + 1
D5 T 5 D6 T 5
PC AR DR DR + 1
SC 0
D6 T 6
M[AR] DR
If (DR = 0)
then (PC PC + 1)
SC 0
46
5-7 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
• For the system to communicate with an
input device, serial information is shifted
into the input register INPR
• To output information, it is stored in the
output register OUTR
47
5-7 Input-Output and
Interruptcont.
AC
Transmitter
Keyboard interface INPR FGI
48
5-7 Input-Output and
Interruptcont.
• INPR and OUTR communicate with a
communication interface serially and with
the AC in parallel. They hold an 8-bit
alphanumeric information
• I/O devices are slower than a computer
system we need to synchronize the
timing rate difference between the
input/output device and the computer.
• FGI: 1-bit input flag (Flip-Flop) aimed to
control the input operation
49
5-7 Input-Output and Interrupt
cont.
53
Input-Output Instructions
• Needed for:
– Transferring information to and from AC register
– Checking the flag bits
– Controlling the interrupt facility
• The control unit recognize it when D7=1 and I = 1
• The remaining bits of the instruction specify the
particular operation
• Executed with the clock transition associated with
timing signal T3
• Input-Output instructions are summarized next
54
Input-Output Instructions
D7IT3 = p
IR(i) = Bi, i = 6, …, 11
55
Program Interrupt
• The process of communication just
described is referred to as Programmed
Control Transfer
• The computer keeps checking the flag bit,
and when it finds it set, it initiates an
information transform (this is sometimes
called Polling)
• This type of transfer is in-efficient due to
the difference of information flow rate
between the computer and the I/O device
56
Program Interruptcont.
• The computer is wasting time while
checking the flag instead of doing some
other useful processing task
• An alternative to the programmed
controlled procedure is to let the external
device inform the computer when it is
ready for the transfer
• This type of transfer uses the interrupt
facility
57
Program Interruptcont.
• While the computer is running a program,
it does not check the flags
• Instead:
– When a flag is set, the computer is
immediately interrupted from proceeding with
the current program
58
Program Interruptcont.
– The computer stops what it is doing to take care
of the input or output transfer
– Then, it returns to the current program to continue
what it was doing before the interrupt
• The interrupt facility can be enabled or disabled
via a flip-flop called IEN
• The interrupt enable flip-flop IEN can be set and
cleared with two instructions (IOF, ION):
– IOF: IEN 0 (the computer cannot be
interrupted)
– ION: IEN 1 (the computer can be interrupted)
59
Program Interruptcont.
• Another flip-flop (called the interrupt flip-
flop R) is used in the computer’s interrupt
facility to decide when to go through the
interrupt cycle
• FGI and FGO are different here compared
to the way they acted in an earlier
discussion!!
• So, the computer is either in an
Instruction Cycle or in an Interrupt
Cycle 60
Program Interruptcont.
• The interrupt cycle is a hardware
implementation of a branch and save
return address operation (BSA)
• The return address available in PC is
stored in a specific location where it can
be found later when the program returns to
the instruction at which it was interrupted
• This location may be a processor register,
a memory stack, or a specific memory
location
61
Program Interruptcont.
• For our computer, we choose the
memory location at address 0 as a place
for storing the return address
• Control then inserts address 1 into PC:
this means that the first instruction of the
interrupt service routine should be stored
in memory at address 1, or, the
programmer must store a branch
instruction that sends the control to an
interrupt service routine!!
62
Program Interruptcont.
R = Interrupt flip-flop
Execute =0
IEN
instructions
=1 Branch to location 1
PC 1
=1
FGI
=0
=1 IEN 0
FGO R 0
=0
R1
63
Program Interruptcont.
• IEN, R 0: no more interruptions can
occur until the interrupt request from the
flag has been serviced
• The service routine must end with an
instruction that re-enables the interrupt
(IEN 1) and an instruction to return to
the instruction at which the interrupt
occurred
• The instruction that returns the control to
the original program is "indirect BUN 0"
64
Program Interruptcont.
• Example: the computer is interrupted
during execution of the instruction at
address 255 Memory
Before interrupt After interrupt cycle
0 0 256
1 0 BUN 1120 PC = 1 0 BUN 1120
Main Main
255 Program 255 Program
PC = 256 256
1120 1120
I/O I/O
Program Program
1 BUN 0 1 BUN 0
65
Interrupt Cycle
• The fetch and decode phases of the
instruction cycle must be :
(Replace T0, T1, T2 R'T0, R'T1, R'T2
(fetch and decode phases occur at the
instruction cycle when R = 0)
• Interrupt Cycle:
– RT0: AR 0, TR PC
– RT1: M[AR] TR, PC 0
– RT2: PC PC + 1, IEN 0, R 0, SC 0
66
R
T0 0 S0
+ S1
S2
T1
T2
write
Memory 7
Address
CLR
PC 2
INR
Register transfers
LD
TR 6
for the Interrupt
Cycle
AR 1
CLR
0 IEN
J
CLR SC R
0 J
Clock
67
Interrupt cont.
• Further Questions:
– How can the CPU recognize the device requesting
an interrupt?
– Since different devices are likely to require
different interrupt service routines, how can the
CPU obtain the starting address of the
appropriate routine in each case?
– Should any device be allowed to interrupt the CPU
while another interrupt is being serviced?
– How can the situation be handled when two or
more interrupt requests occur simultaneously?
68
5-8 Complete Computer Description
start
SC 0, IEN 0, R 0
69
5-8 Complete Computer
Descriptioncont.
Fetch R’T0: AR PC
R’T1: IR M[AR], PC PC + 1
Decode R’T2: D0, ..., D7 Decode IR(12 ~ 14), AR IR(0 ~ 11), I IR(15)
Interrupt:
T0’T1’T2’(IEN)(FGI + FGO): R1
RT0: AR 0, TR PC
RT1: M[AR] TR, PC 0
RT2: PC PC + 1, IEN 0, R 0, SC 0
Memory-Reference:
AND D0T4: DR M[AR]
D0T5: AC AC . DR, SC 0
ADD D1T4: DR M[AR]
D1T5: AC AC + DR, E Cout, SC 0
LDA D2T4: DR M[AR]
D2T5: AC DR, SC 0
STA D3T4: M[AR] AC, SC 0
BUN D4T4: PC AR, SC 0
BSA D5T4: M[AR] PC, AR AR + 1
D5T5: PC AR, SC 0
ISZ D6T4: DR M[AR]
D6T5: DR DR + 1
D6T6: M[AR] DR, if(DR=0) then (PC PC + 1), SC 0
70
5-8 Complete Computer
Register-Reference:
Descriptioncont.
D7I’T3 = r (Common to all register-reference instructions)
IR(i) = Bi (i = 0,1,2, ..., 11)
r: SC 0
CLA rB11: AC 0
CLE rB10: E0
CMA rB9: AC AC’
CME rB8: E E’
CIR rB7: AC shr AC, AC(15) E, E AC(0)
CIL rB6: AC shl AC, AC(0) E, E AC(15)
INC rB5: AC AC + 1
SPA rB4: If(AC(15) =0) then (PC PC + 1)
SNA rB3: If(AC(15) =1) then (PC PC + 1) Table 5-6
SZA rB2: If(AC = 0) then (PC PC + 1)
SZE rB1: If(E=0) then (PC PC + 1)
HLT rB0: S0
Input-Output:
D7IT3 = p (Common to all input-output instructions)
IR(i) = Bi (i = 6,7,8,9,10,11)
p: SC 0
INP pB11: AC(0-7) INPR, FGI 0
OUT pB10: OUTR AC(0-7), FGO 0
SKI pB9: If(FGI=1) then (PC PC + 1)
SKO pB8: If(FGO=1) then (PC PC + 1)
ION pB7: IEN 1
IOF pB6: IEN 0
71