Hardware Flowchart - SERC - Indian Institute of Science
Hardware Flowchart - SERC - Indian Institute of Science
Hardware Flowchart - SERC - Indian Institute of Science
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
CISC Processor Design<br />
<strong>Hardware</strong> <strong>Flowchart</strong><br />
Virendra Singh<br />
<strong>Indian</strong> <strong>Institute</strong> <strong>of</strong> <strong>Science</strong><br />
Bangalore<br />
virendra@computer.org<br />
Computer<br />
Design<br />
Laboratory<br />
& Test<br />
Advance Computer Architecture
Processor - Block Diagram<br />
Clock-Phase Reset & Power-On Logic<br />
Generator<br />
Bus Controller<br />
Interrupt Logic<br />
Control<br />
Store<br />
Next State<br />
Control<br />
Branch Control<br />
unit<br />
IR<br />
Decoder<br />
Encoded Control Word Fields<br />
Control Word Decoder<br />
Decoded d Datapath Control<br />
Instruction<br />
Prefetch<br />
Register<br />
Address<br />
Out Reg.<br />
PC R0 R1<br />
Internal A Bus<br />
Rn Shifter ALU<br />
Internal B Bus<br />
Datapath<br />
Data<br />
Reg.<br />
Advance Computer Architecture 2<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
<strong>Hardware</strong> <strong>Flowchart</strong><br />
<strong>Hardware</strong> <strong>Flowchart</strong><br />
‣ Tells us how to get from the architecture to the<br />
implementation<br />
i<br />
‣ Links programmer’s (external) model and the<br />
hardware (internal) implementation<br />
‣ Specify exactly how commands from the<br />
instruction set are carried out using Datapath<br />
Advance Computer Architecture 3<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
<strong>Hardware</strong> <strong>Flowchart</strong><br />
Pre-requisites: ii<br />
Instruction set summary<br />
‣ Instruction Format<br />
‣ Operations<br />
‣ Addressing modes<br />
‣ Registers<br />
Datapath<br />
‣ Programmer’s register set<br />
‣ Additional registers<br />
‣ ALU and any special<br />
functional units<br />
‣ Internal data paths<br />
‣ Rules <strong>of</strong> operation<br />
• Datapath will evolve<br />
Advance Computer Architecture 4<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Development <strong>of</strong><br />
Implementation<br />
Clock Phase<br />
Generator<br />
Datapath<br />
‣ The architecture<br />
t<br />
specification is the only<br />
input<br />
‣ Begin with a guess <strong>of</strong><br />
Datapath<br />
‣ Do flowchart for the<br />
instructions<br />
‣ This modifies and<br />
refines the Datapath<br />
and develops the<br />
control store and<br />
control strategy<br />
‣ The final Datapath is<br />
derived output<br />
Advance Computer Architecture 5<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Development <strong>of</strong><br />
Implementation<br />
Clock Phase<br />
Generator<br />
Control<br />
Store<br />
Control Word<br />
‣ Once flowcharts are<br />
fairly complete, derive<br />
the control word<br />
format using the<br />
flowchart states<br />
‣ When the flowcharts<br />
are complete, so is<br />
the Datapath<br />
‣ Control word format<br />
is derived output<br />
Datapath<br />
Advance Computer Architecture 6<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Development <strong>of</strong><br />
Implementation<br />
Clock Phase<br />
Generator<br />
Control<br />
Store<br />
‣ After defining control<br />
word format, you<br />
assign bit patterns to<br />
the control fields in a<br />
way that minimizes<br />
control word decoders<br />
between the control<br />
store and the<br />
Datapath<br />
Control Word Decoder<br />
Datapath<br />
Advance Computer Architecture 7<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Development <strong>of</strong><br />
Implementation<br />
Clock Phase<br />
Generator<br />
Control<br />
Store<br />
Instruction<br />
Decoder<br />
‣ Instruction decoders<br />
are defined the<br />
flowcharts and the<br />
architecture<br />
specification<br />
Control Word Decoder<br />
Datapath<br />
Advance Computer Architecture 8<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Development <strong>of</strong><br />
Implementation<br />
Clock Phase<br />
Generator<br />
Control<br />
Store<br />
Bus Controller<br />
Instruction<br />
Decoder<br />
‣ Completed flowchars,<br />
control word format,<br />
and the initial bus<br />
specification defines<br />
the bus controller<br />
Control Word Decoder<br />
Datapath<br />
Advance Computer Architecture 9<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Development <strong>of</strong><br />
Implementation<br />
Clock Phase<br />
Generator<br />
Control<br />
Store<br />
Control Word Decoder<br />
State<br />
Sequencer<br />
Datapath<br />
Bus Controller<br />
Instruction<br />
Decoder<br />
‣ Last is the logic <strong>of</strong> the<br />
state sequencer, the<br />
part <strong>of</strong> the chip that<br />
says what to do next<br />
(where is the next<br />
control word?)<br />
‣ Once every thing<br />
around it is defined,<br />
you build exactly<br />
what you need! (The<br />
state sequencer is<br />
derived output)<br />
Advance Computer Architecture 10<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
<strong>Flowchart</strong> Objective<br />
<strong>Flowchart</strong> Objective<br />
‣ Limit controller size to some fraction <strong>of</strong> chip area<br />
‣ Make CPU as fast as possible<br />
‣ Complete the project as early as possible<br />
‣ Make the flowcharts easy to translate into<br />
hardware<br />
Advance Computer Architecture 11<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
MIN Instruction ti Set<br />
Instruction Format<br />
First Word<br />
Op-code Rx Mode Ry<br />
Operation First Second First<br />
Code<br />
Operand<br />
Register<br />
Second Word<br />
Operand<br />
Address<br />
Mode<br />
Displacement<br />
st<br />
Operand<br />
Register<br />
Optional, depending on second operand address mode<br />
Programmer’s<br />
Register Set<br />
R0<br />
R1<br />
R2<br />
.<br />
.<br />
.<br />
Rn<br />
Advance Computer Architecture 12<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
MIN Instruction ti Set<br />
MIN Instruction Set<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
ADD<br />
AND<br />
BZ – Branch if zero bit is set. (Register Indirect only)<br />
LOAD – Second operand is source and Rx is destination<br />
POP – Postincrement with register indirect only<br />
PUSH – Predecrement with register indirect only<br />
STORE<br />
SUB<br />
TEST<br />
Advance Computer Architecture 13<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
MIN Instruction ti Set<br />
Second Operand Address<br />
Mode<br />
Second Operand<br />
Address Mode<br />
Ry<br />
First Operand<br />
Register<br />
Address Modes<br />
‣ AB - Base (Ry) plus displacement (second instruction<br />
word) is an operand address<br />
‣ AI – Register indirect. Ry holds an operand address<br />
‣ AR – Register direct: The result is stored in Ry. For two<br />
operand dinstructions, ti Ry also is an operand source<br />
Advance Computer Architecture 14<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
MIN Datapath<br />
th<br />
IRE<br />
IRF<br />
Internal A Bus<br />
DO<br />
AO PC T2 R0 R1 Rn T1 ALU<br />
k<br />
Internal B Bus<br />
DI<br />
External Address<br />
Bus (EAB)<br />
External Data<br />
Bus (EDB)<br />
Advance Computer Architecture 15<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
MIN Datapath<br />
th<br />
Rules <strong>of</strong> Operation<br />
1. A transfer from source to bus to destination takes one state time<br />
2. A source can drive up to three destination loads<br />
3. Inputs to the ALU are from A (internal) bus and either k (values 0,<br />
+1, -1) or the B (internal) bus<br />
4. When ALU is destination. Ti is automatically loaded from the ALU<br />
output<br />
5. A transfer to AO activates the on-chip external bus controller. This<br />
bus controller postpones the next state until the external transfer<br />
is complete.<br />
Advance Computer Architecture 16<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
<strong>Flowchart</strong>s<br />
ADD RX AR RY<br />
ADD RX AI (RY)<br />
Register-to-Register<br />
Register-to-Memory<br />
R → R ADD R → M ADD<br />
rx → a → alu<br />
ry → b → alu<br />
edb → di<br />
ry → b → ao<br />
State<br />
t1 → b → ry<br />
di → b → alu<br />
rx → a → alu<br />
Sequence<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1 A Bus<br />
Rn T1 ALU<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
ry → b → ao<br />
t1 → a → do<br />
Advance Computer Architecture 17<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
<strong>Flowchart</strong>s<br />
ADD RX AR RY<br />
Register-to-Register<br />
R → R<br />
edb → if irf<br />
pc → b → ao<br />
rx → a → alu<br />
ry → b → alu<br />
t1 → b → ry<br />
pc → a → alu<br />
+1 → alu<br />
t1 → b → pc<br />
ADD<br />
ADD RX AI (RY)<br />
Register-to-Memory<br />
R → M ADD<br />
edb → irf<br />
pc → b → ao<br />
edb → di<br />
ry → b → ao<br />
di → b → alu<br />
rx → a → alu<br />
ry → b → ao<br />
t1 → a → do<br />
pc → a → alu<br />
+1 → alu<br />
t1 → b → pc<br />
‣ Execution<br />
Speed<br />
Advance Computer Architecture 18<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
MIN Datapath<br />
th<br />
IRE<br />
IRF<br />
Internal A Bus<br />
DO<br />
AO PC T2 R0 R1 Rn T1 ALU<br />
k<br />
Internal B Bus<br />
DI<br />
External Address<br />
Bus (EAB)<br />
External Data<br />
Bus (EDB)<br />
Advance Computer Architecture 19
Level 1 <strong>Flowchart</strong> - ADD<br />
ADD RX AR RY<br />
Register-to-Register<br />
R → R<br />
ADD<br />
rx → a → alu<br />
ry → b → alu<br />
edb → irf<br />
pc → b → ao<br />
pc → a → alu<br />
+1 → alu<br />
t1 → b → ry<br />
irf → ire<br />
t1 → b → pc<br />
IRE<br />
IRF<br />
Operation<br />
tasks<br />
Housekeeping<br />
tasks<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
Internal<br />
B Bus<br />
(EAB)<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Advance Computer Architecture 20
Level 2 <strong>Flowchart</strong> - ADD<br />
R → R<br />
ADD RX AR RY<br />
Register-to-Register<br />
rx → a → alu<br />
ry → b → alu<br />
t1 → b → ry<br />
ADD<br />
edb → irf<br />
pc → b → ao<br />
pc → a → alu<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
R → R<br />
rx → a → alu<br />
ry → b → alu<br />
ADD<br />
edb → irf<br />
pc → a → alu, ao<br />
t1 → b → ry<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
Merger<br />
• Speed<br />
• Identical states<br />
Advance Computer Architecture 21
Level 2 <strong>Flowchart</strong> - ADD<br />
ADD RX AI (RY)<br />
R → M ADD<br />
Register-to-Memory<br />
edb → irf<br />
R → M ADD<br />
pc → a → alu, ao<br />
edb → di<br />
edb → irf<br />
+1 → alu<br />
ry → b → ao<br />
di → b → alu<br />
rx → a → alu<br />
pc → b → ao<br />
pc → a → alu<br />
+1 → alu<br />
edb → di<br />
ry → b → ao<br />
t1 → a → pc<br />
ry → b → ao<br />
t1 → a → do<br />
Internal<br />
AO PC R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
irf → ire<br />
t1 → b → pc<br />
IRE<br />
k<br />
IRF<br />
DO<br />
DI<br />
(EDB)<br />
di → b → alu<br />
rx → a → alu<br />
t1 → a → do<br />
ry → b → ao<br />
irf → ire<br />
Advance Computer Architecture<br />
22
Level 2 <strong>Flowchart</strong> - ADD<br />
ADD RX AI (RY)<br />
Register-to-Memory<br />
R → M ADD<br />
edb → di<br />
ry → b → ao<br />
di → b → alu<br />
rx → a → alu<br />
ry → b → ao<br />
t1 → a → do<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
R → M<br />
di → b → alu<br />
rx → a → alu<br />
irf → ire<br />
t1 → a → do<br />
t2 → b → ao<br />
ADD<br />
edb → irf<br />
edb → irf<br />
pc → a → alu, ao<br />
pc → b → ao<br />
+1 → alu<br />
pc → a → alu<br />
edb → di<br />
+1 → alu<br />
ry → b → ao, t2<br />
t1 → a → pc<br />
irf → ire<br />
t1 → b → pc<br />
IRE<br />
k<br />
IRF<br />
DO<br />
DI<br />
(EDB)<br />
Advance Computer Architecture<br />
23
Level 2 <strong>Flowchart</strong> - ADD<br />
ADD RX AR RY<br />
Register-to-Register<br />
R → R ADD<br />
rx → a → alu<br />
when AO is connected<br />
ry → b → alu<br />
to B (internal) bus only<br />
edb → irf<br />
pc → b → ao<br />
Do level2 flowchart <strong>of</strong> the fastest<br />
instruction<br />
t1 → a → ry<br />
Point out inadequacy in Datapath<br />
pc → a → alu<br />
+1 → alu<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
k<br />
IRF<br />
DO<br />
DI<br />
(EDB)<br />
irf → ire<br />
t1 → b → pc<br />
Advance Computer Architecture<br />
24
<strong>Flowchart</strong><br />
<strong>Flowchart</strong><br />
‣ How many sequences?<br />
‣ Motorola 68000 (14 address modes and 50<br />
instruction types)<br />
Control Word Sequence<br />
‣ Address Mode Sequence<br />
‣ Calculate address (may or may not include operand fetch)<br />
‣ Execution Sequence<br />
‣ Completes the execution (after address mode sequence)<br />
Advance Computer Architecture<br />
25
Control Word Sequence<br />
Address Mode Sequence<br />
‣ Can be shared for different instructions<br />
‣ Calculate l the operand address<br />
‣ Fetch the operand<br />
‣ Place the operand in DIN<br />
Execution Sequence<br />
‣ Address mode sequences can be shared<br />
‣ Find the operand in DIN<br />
‣ Execute the instruction (without knowing how the address<br />
was calculated etc..)<br />
Advance Computer Architecture<br />
26
Level1 <strong>Flowchart</strong><br />
Level1 <strong>Flowchart</strong><br />
‣ At the beginning <strong>of</strong> instruction execution, IRE is<br />
assumed to contain the current instruction<br />
i<br />
‣ Instruction execution begins with the address<br />
mode sequence<br />
‣ The execution sequences for Register-to-<br />
Register instructions cannot be shared<br />
‣ The execution sequences for standard dual<br />
operand instructions are identical<br />
Advance Computer Architecture<br />
27
Level 1 <strong>Flowchart</strong>-<br />
Address Mode Sequences<br />
Base Plus Displacement<br />
Register Indirect<br />
edb → di<br />
pc → a → alu, ao<br />
+1 → alu<br />
edb → di<br />
ry → b → ao, t2<br />
t1 → a → pc<br />
di → b → alu<br />
ry → a → alu<br />
edb → di<br />
t1 → b → ao, t2<br />
Advance Computer Architecture<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
28<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)
Level 1 <strong>Flowchart</strong>-<br />
Address Mode Sequences<br />
Branch Instruction<br />
ti<br />
edb → irf<br />
ry → a → alu, ao<br />
+1 → alu<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Z = 1 (Branch)<br />
irf → ire<br />
t1 → b → pc<br />
Z = 0 (no branch)<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
Advance Computer Architecture<br />
29
Level 1 <strong>Flowchart</strong> -<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
LOAD<br />
di → b → rx, t2<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
STORE<br />
rx → a → alu, do<br />
edb → if irf<br />
t2 → b → ao pc → a → alu, ao<br />
0 → alu +1 → alu<br />
t2 → a → alu<br />
0 → alu<br />
irf → ire<br />
t1 → b → pc<br />
irf → ire<br />
t1 → b → pc<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Advance Computer Architecture<br />
30
Level 1 <strong>Flowchart</strong> -<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
di → b → alu<br />
rx → a → alu<br />
ADD<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
di → b → alu<br />
rx → a → alu<br />
SUB<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
t1 → a → do<br />
t2 → b → ao<br />
irf → ire<br />
t1 → b → pc<br />
t1 → a → do<br />
t2 → b → ao<br />
irf → ire<br />
t1 → b → pc<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Advance Computer Architecture<br />
31
Level 1 <strong>Flowchart</strong> -<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
di → b → alu<br />
rx → a → alu<br />
AND<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
di → b → t2<br />
TEST<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
t1 → a → do<br />
t2 → b → ao<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
irf → ire<br />
t1 → b → pc<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Advance Computer Architecture<br />
32
Level 1 <strong>Flowchart</strong> -<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
LOAD<br />
ry → a → alu,rx<br />
0 → alu<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
rx → a → alu, ry<br />
0 → alu<br />
STORE<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Advance Computer Architecture<br />
33
Level 1 <strong>Flowchart</strong> -<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
rx → a → alu<br />
ry → b → alu<br />
ADD<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
rx → a → alu<br />
ry → b → alu<br />
SUB<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
t1 → a → ry<br />
irf → ire<br />
t1 → a → pc<br />
t1 → a → ry<br />
irf → ire<br />
t1 → a → pc<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Advance Computer Architecture<br />
34
Level 1 <strong>Flowchart</strong> -<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
POP<br />
edb → di<br />
ry → a → alu, ao<br />
+1 → alu<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ry → a → alu<br />
-1 → alu<br />
PUSH<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
di → b → rx<br />
t1 → a → ry<br />
irf → ire<br />
t1 → a → pc<br />
rx → a → do<br />
t1 → b → ao, ry<br />
irf → ire<br />
t1 → a → pc<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Advance Computer Architecture<br />
35
Merged Level 1 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Base Plus Displacement<br />
Register Indirect<br />
edb → di<br />
pc → a → alu, ao<br />
+1 → alu<br />
t1 → a → pc<br />
di → b → alu<br />
ry → a → alu<br />
abdm1<br />
abdm2<br />
abdm3<br />
edb → di<br />
ry → b → ao, t2<br />
adrm1<br />
edb → di<br />
Internal<br />
A Bus<br />
t1 → b → ao, t2<br />
AO PC T2 R0 R1 Rn T1 ALU<br />
abdm4<br />
(EAB)<br />
Advance Computer Architecture<br />
Internal<br />
B Bus<br />
36<br />
IRE<br />
k<br />
IRF<br />
DO<br />
DI<br />
(EDB)
Merged Level 1 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Branch Instruction<br />
ti<br />
edb → irf<br />
ry → a → alu, ao<br />
+1 → alu<br />
brzz1<br />
IRE<br />
Internal<br />
AO PC T2 R0 R1<br />
A Bus<br />
Rn T1 ALU<br />
(EAB)<br />
Internal<br />
B Bus<br />
IRF<br />
DO<br />
k<br />
DI<br />
(EDB)<br />
Z = 1 (Branch)<br />
irf → ire<br />
t1 → b → pc<br />
brzz2<br />
Z = 0 (no branch)<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
brzz3<br />
irf → ire<br />
t1 → b → pc<br />
brzz4<br />
Advance Computer Architecture<br />
37
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
LOAD<br />
di → b → rx, t2<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
LOAD<br />
di → b → rx, t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
t2 → a → alu<br />
0 → alu<br />
irf → ire<br />
t1 → b → pc<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
ldrm1<br />
ldrm2<br />
Advance Computer Architecture<br />
38
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
STORE<br />
STORE<br />
rx → a → alu, do<br />
edb → if irf<br />
t2 → b → ao pc → a → alu, ao<br />
0 → alu +1 → alu<br />
rx → a → alu, do<br />
t2 → b → ao<br />
0 → alu<br />
strm1<br />
irf → ire<br />
t1 → b → pc<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
strm2<br />
irf → ire<br />
t1 → b → pc<br />
strm3<br />
Advance Computer Architecture<br />
39<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
ADD, AND, SUB<br />
di → b → alu<br />
rx → a → alu<br />
t1 → a → do<br />
t2 → b → ao<br />
ADD<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
di → b → alu<br />
rx → a → alu<br />
t1 → a → do<br />
t2 → b → ao<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
oprm1<br />
oprm2<br />
oprm3<br />
oprm4<br />
Advance Computer Architecture<br />
40<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
di → b → t2<br />
t2 → a → alu<br />
0 → alu<br />
TEST<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
TEST<br />
di → b → t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
test1<br />
test2<br />
Advance Computer Architecture<br />
41<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
LOAD<br />
ry → a → alu,rx<br />
0 → alu<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
LOAD<br />
edb → irf<br />
pc → a → alu, ao<br />
ry → a → rx, t2<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
ldrr1<br />
ldrr2<br />
Advance Computer Architecture<br />
42<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register and special instructions<br />
STORE<br />
STORE<br />
rx → a → alu, ry<br />
0 → alu<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
edb → irf<br />
pc → a → alu, ao<br />
rx → b → ry, t2<br />
+1 → alu<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
strr1<br />
strr2<br />
Advance Computer Architecture<br />
43<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
rx → a → alu<br />
ry → b → alu<br />
t1 → a → ry<br />
ADD<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
ADD, SUB, AND<br />
rx → a → alu<br />
ry → b → alu<br />
edb → irf<br />
pc → a → alu, ao<br />
t1 → a → ry<br />
+1 → alu<br />
oprr1<br />
oprr2<br />
irf → ire<br />
t1 → a → pc<br />
oprr3<br />
Advance Computer Architecture<br />
44<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 1 <strong>Flowchart</strong> -<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
POP<br />
edb → di<br />
ry → a → alu, ao<br />
+1 → alu<br />
di → b → rx<br />
t1 → a → ry<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
POP<br />
edb → di<br />
ry → a → alu, ao<br />
+1 → alu<br />
di → b → rx<br />
t1 → a → ry<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
popr1<br />
popr2<br />
popr3<br />
popr4<br />
Advance Computer Architecture<br />
45<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 1 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
PUSH<br />
PUSH<br />
ry → a → alu<br />
-1 → alu<br />
edb → irf<br />
push1<br />
ry → a → alu<br />
pc → a → alu, ao<br />
-1 → alu<br />
rx → a → do<br />
+1 → alu<br />
t1 → b → ao, ry<br />
push2<br />
rx → a → do<br />
t1 → b → ao, ry<br />
irf → ire<br />
t1 → a → pc<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
irf → ire<br />
t1 → a → pc<br />
push3<br />
push4<br />
Advance Computer Architecture<br />
46<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>s<br />
Format for Level 2 flowchart state ‣ DR – Data Read<br />
‣ DW – Data Write<br />
Label A<br />
Label B<br />
‣ IR - Instruction Read<br />
Access Type ‣ NA – No aceess<br />
State ID<br />
Tasks<br />
Synonym<br />
ALU and CC •S–Set<br />
Duplicates •N–Not set<br />
Page and Loc<br />
•X–Don’t care<br />
Acess<br />
Next State • BC – Branch conditionally<br />
Width<br />
• IB – Instruction branch<br />
• SB – Sequence branch<br />
• StateID – Direct branch<br />
Advance Computer Architecture<br />
47<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Base Plus Displacement<br />
(RY+d)@<br />
edb → di<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
di → b → alu<br />
ry → a → alu<br />
na<br />
add-n<br />
abdm1<br />
t1 → a → pc<br />
abdm2<br />
na<br />
x-n<br />
abdm3<br />
edb → di<br />
t1 → b → ao, t2<br />
abdm4<br />
dr<br />
x-n<br />
abdm2<br />
abdm3<br />
abdm4<br />
sb<br />
Advance Computer Architecture<br />
48<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Register Indirect<br />
RY@<br />
edb → di<br />
ry → b → ao, t2<br />
adrm1<br />
dr<br />
x-n<br />
sb<br />
Advance Computer Architecture<br />
49<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Branch Instruction<br />
edb → irf<br />
ry → a → alu, ao<br />
+1 → alu<br />
brzz1<br />
ir<br />
add-n<br />
bc<br />
Z = 0 (no branch)<br />
Z = 1 (Branch)<br />
na<br />
irf → ire<br />
x-n<br />
t1 → b → pc<br />
brzz2<br />
ib<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
brzz3<br />
irf → ire<br />
t1 → b → pc<br />
ir<br />
add-n<br />
brzz4<br />
na<br />
x-n<br />
Advance Computer Architecture<br />
brzz4<br />
50<br />
ib
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
Mem → RX<br />
di → b → rx, t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ldrm1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
ldrm2<br />
LOAD<br />
ir<br />
add-x<br />
ldrm2<br />
na<br />
add-s<br />
ib<br />
Advance Computer Architecture<br />
51<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
RX → Mem<br />
rx → a → alu, do<br />
t2 → b → ao<br />
0 → alu<br />
STORE<br />
dw<br />
add-s<br />
strm1<br />
strm2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
irf → ire<br />
t1 → b → pc<br />
strm3<br />
na<br />
x-n<br />
ib<br />
strm2<br />
strm3<br />
Advance Computer Architecture<br />
52<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
RX OP Mem → Mem<br />
ADD, AND, SUB<br />
di → b → alu<br />
rx → a → alu<br />
na<br />
op-s<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
oprm1 oprm2 oprm3 oprm3<br />
t1 → a → do<br />
t2 → b → ao<br />
dw<br />
x-s<br />
irf → ire<br />
t1 → b → pc<br />
oprm2 oprm3 oprm4 ib<br />
na<br />
x-n<br />
Advance Computer Architecture<br />
53<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
Mem → ALU TEST<br />
di → b → t2<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
test1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
test2<br />
ir<br />
add-x<br />
test2<br />
na<br />
add-s<br />
ib<br />
Advance Computer Architecture<br />
54<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RX OP RY → RY<br />
ADD, SUB, AND<br />
rx → a → alu<br />
ry → b → alu<br />
na<br />
op-s<br />
irf → ire<br />
t1 → a → pc<br />
na<br />
x-n<br />
oprr1<br />
oprr2<br />
edb → irf<br />
pc → a → alu, ao<br />
t1 → a → ry<br />
+1 → alu<br />
ir<br />
add-n<br />
oprr3<br />
ib<br />
oprr2<br />
oprr3<br />
Advance Computer Architecture<br />
55<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RX → RY<br />
edb → irf<br />
pc → a → alu, ao<br />
ry → a → rx, t2<br />
+1 → alu<br />
ldrr1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
LOAD<br />
ir<br />
add-x<br />
ldrr2<br />
na<br />
add-s<br />
RX → RY<br />
edb → irf<br />
pc → a → alu, ao<br />
rx → b → ry, t2<br />
+1 → alu<br />
strr1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
STORE<br />
ir<br />
add-x<br />
strr2<br />
na<br />
add-s<br />
ldrr2 ib strr2 ib<br />
Advance Computer Architecture<br />
56<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RY@ → RX<br />
RY+1 → RY<br />
edb → di<br />
ry → a → alu, ao<br />
+1 → alu POP<br />
dr<br />
add-n<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
popr1 popr2 popr3 popr4<br />
di → b → rx<br />
t1 → a → ry<br />
na<br />
x-n<br />
irf → ire<br />
t1 → a → pc<br />
popr2 popr3 popr4 ib<br />
na<br />
x-n<br />
Advance Computer Architecture<br />
57<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Base Plus Displacement<br />
(RY+d)@<br />
edb → di<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
di → b → alu<br />
ry → a → alu<br />
na<br />
add-n<br />
abdm1<br />
t1 → a → pc<br />
abdm2<br />
na<br />
x-n<br />
abdm3<br />
edb → di<br />
t1 → b → ao, t2<br />
abdm4<br />
dr<br />
x-n<br />
abdm2<br />
abdm3<br />
abdm4<br />
sb<br />
Advance Computer Architecture<br />
58<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Register Indirect<br />
RY@<br />
edb → di<br />
ry → b → ao, t2<br />
adrm1<br />
dr<br />
x-n<br />
sb<br />
Advance Computer Architecture<br />
59<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Branch Instruction<br />
edb → irf<br />
ry → a → alu, ao<br />
+1 → alu<br />
brzz1<br />
ir<br />
add-n<br />
bc<br />
Z = 0 (no branch)<br />
Z = 1 (Branch)<br />
na<br />
irf → ire<br />
x-n<br />
t1 → b → pc<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
brzz3<br />
ir<br />
add-n<br />
brzz2<br />
brzz2<br />
ib<br />
Advance Computer Architecture<br />
60<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
Mem → RX<br />
di → b → rx, t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
LOAD<br />
ir<br />
add-x<br />
Mem → RX<br />
rx → a → alu, do<br />
t2 → b → ao<br />
0 → alu<br />
STORE<br />
dw<br />
add-s<br />
ldrm1<br />
ldrm2<br />
strm1<br />
brzz3<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
na<br />
add-s<br />
ldrm2<br />
ib<br />
Advance Computer Architecture<br />
61<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
RX OP Mem → Mem<br />
di → b → alu<br />
rx → a → alu<br />
ADD, AND, SUB<br />
na<br />
op-s<br />
oprm1<br />
oprm2<br />
t1 → a → do<br />
t2 → b → ao<br />
dw<br />
x-s<br />
Mem → ALU<br />
di → b → t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
test1<br />
TEST<br />
ir<br />
add-x<br />
ldrm2<br />
oprm2<br />
brzz3<br />
Advance Computer Architecture<br />
62<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RX → RY<br />
LOAD<br />
RX OP RY → RY ADD, SUB, AND<br />
edb → irf<br />
ir<br />
na<br />
rx → a → alu<br />
pc → a → alu, ao<br />
add-x<br />
op-s<br />
ry → b → alu<br />
ry → a → rx, t2<br />
+1 → alu<br />
oprr1 oprr2 ldrr1 ldrm2<br />
edb → irf<br />
pc → a → alu, ao<br />
t1 → a → ry<br />
+1 → alu<br />
oprr2<br />
ir<br />
add-n<br />
brzz2<br />
RX → RY<br />
edb → irf<br />
pc → a → alu, ao<br />
rx → b → ry, t2<br />
+1 → alu<br />
STORE<br />
ir<br />
add-x<br />
strr1<br />
ldrm2<br />
Advance Computer Architecture<br />
63<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RY@ → RX<br />
RY+1 → RY<br />
edb → di<br />
ry → a → alu, ao<br />
+1 → alu<br />
POP<br />
dr<br />
add-n<br />
RY-1 → RY<br />
RY@ → RX<br />
ry → a → alu<br />
-1 → alu<br />
PUSH<br />
na<br />
add-n<br />
popr1<br />
di → b → rx<br />
t1 → a → ry<br />
popr2<br />
na<br />
x-n<br />
push1<br />
rx → a → do<br />
t1 → b → ao, ry<br />
push2<br />
dw<br />
x-n<br />
popr2 brzz3 push2 brzz3<br />
Advance Computer Architecture<br />
64<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Processor Block Diagram<br />
Control<br />
Store<br />
Next<br />
State<br />
Control<br />
IB<br />
SB<br />
BC<br />
DB<br />
Instruction<br />
Decoder<br />
Control Word<br />
Register<br />
OP TY NA<br />
Control Fields (dynamic)<br />
Branch<br />
Control<br />
Control word<br />
Decoders<br />
Control Fields<br />
(Static)<br />
IRE<br />
Control lines<br />
Condition<br />
Codes<br />
IRF<br />
Datapath<br />
Advance Computer Architecture<br />
65<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>s<br />
Format for Level 2 flowchart state ‣ DR – Data Read<br />
‣ DW – Data Write<br />
Label A<br />
Label B<br />
‣ IR - Instruction Read<br />
Access Type ‣ NA – No aceess<br />
State ID<br />
Tasks<br />
Synonym<br />
ALU and CC •S–Set<br />
Duplicates •N–Not set<br />
Page and Loc<br />
•X–Don’t care<br />
Acess<br />
Next State • BC – Branch conditionally<br />
Width<br />
• IB – Instruction branch<br />
• SB – Sequence branch<br />
• StateID – Direct branch<br />
Advance Computer Architecture<br />
66<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Base Plus Displacement<br />
(RY+d)@<br />
edb → di<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
di → b → alu<br />
ry → a → alu<br />
na<br />
add-n<br />
abdm1<br />
t1 → a → pc<br />
abdm2<br />
na<br />
x-n<br />
abdm3<br />
edb → di<br />
t1 → b → ao, t2<br />
abdm4<br />
dr<br />
x-n<br />
abdm2<br />
abdm3<br />
abdm4<br />
sb<br />
Advance Computer Architecture<br />
67<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Register Indirect<br />
RY@<br />
edb → di<br />
ry → b → ao, t2<br />
adrm1<br />
dr<br />
x-n<br />
sb<br />
Advance Computer Architecture<br />
68<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Branch Instruction<br />
edb → irf<br />
ry → a → alu, ao<br />
+1 → alu<br />
brzz1<br />
ir<br />
add-n<br />
bc<br />
Z = 0 (no branch)<br />
Z = 1 (Branch)<br />
na<br />
irf → ire<br />
x-n<br />
t1 → b → pc<br />
brzz2<br />
ib<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
brzz3<br />
irf → ire<br />
t1 → b → pc<br />
ir<br />
add-n<br />
brzz4<br />
na<br />
x-n<br />
Advance Computer Architecture<br />
brzz4<br />
69<br />
ib
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
Mem → RX<br />
di → b → rx, t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ldrm1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
ldrm2<br />
LOAD<br />
ir<br />
add-x<br />
ldrm2<br />
na<br />
add-s<br />
ib<br />
Advance Computer Architecture<br />
70<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
RX → Mem<br />
rx → a → alu, do<br />
t2 → b → ao<br />
0 → alu<br />
STORE<br />
dw<br />
add-s<br />
strm1<br />
strm2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
irf → ire<br />
t1 → b → pc<br />
strm3<br />
na<br />
x-n<br />
ib<br />
strm2<br />
strm3<br />
Advance Computer Architecture<br />
71<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
RX OP Mem → Mem<br />
ADD, AND, SUB<br />
di → b → alu<br />
rx → a → alu<br />
na<br />
op-s<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
oprm1 oprm2 oprm3 oprm3<br />
t1 → a → do<br />
t2 → b → ao<br />
dw<br />
x-s<br />
irf → ire<br />
t1 → b → pc<br />
oprm2 oprm3 oprm4 ib<br />
na<br />
x-n<br />
Advance Computer Architecture<br />
72<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
Mem → ALU TEST<br />
di → b → t2<br />
edb → if irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
test1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
test2<br />
ir<br />
add-x<br />
test2<br />
na<br />
add-s<br />
ib<br />
Advance Computer Architecture<br />
73<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RX OP RY → RY<br />
ADD, SUB, AND<br />
rx → a → alu<br />
ry → b → alu<br />
na<br />
op-s<br />
irf → ire<br />
t1 → a → pc<br />
na<br />
x-n<br />
oprr1<br />
oprr2<br />
edb → irf<br />
pc → a → alu, ao<br />
t1 → a → ry<br />
+1 → alu<br />
ir<br />
add-n<br />
oprr3<br />
ib<br />
oprr2<br />
oprr3<br />
Advance Computer Architecture<br />
74<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RX → RY<br />
edb → irf<br />
pc → a → alu, ao<br />
ry → a → rx, t2<br />
+1 → alu<br />
ldrr1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
LOAD<br />
ir<br />
add-x<br />
ldrr2<br />
na<br />
add-s<br />
RX → RY<br />
edb → irf<br />
pc → a → alu, ao<br />
rx → b → ry, t2<br />
+1 → alu<br />
strr1<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
STORE<br />
ir<br />
add-x<br />
strr2<br />
na<br />
add-s<br />
ldrr2 ib strr2 ib<br />
Advance Computer Architecture<br />
75<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RY@ → RX<br />
RY+1 → RY<br />
edb → di<br />
ry → a → alu, ao<br />
+1 → alu POP<br />
dr<br />
add-n<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
popr1 popr2 popr3 popr4<br />
di → b → rx<br />
t1 → a → ry<br />
na<br />
x-n<br />
irf → ire<br />
t1 → a → pc<br />
popr2 popr3 popr4 ib<br />
na<br />
x-n<br />
Advance Computer Architecture<br />
76<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Base Plus Displacement<br />
(RY+d)@<br />
edb → di<br />
pc → a → alu, ao<br />
+1 → alu<br />
ir<br />
add-n<br />
di → b → alu<br />
ry → a → alu<br />
na<br />
add-n<br />
abdm1<br />
t1 → a → pc<br />
abdm2<br />
na<br />
x-n<br />
abdm3<br />
edb → di<br />
t1 → b → ao, t2<br />
abdm4<br />
dr<br />
x-n<br />
abdm2<br />
abdm3<br />
abdm4<br />
sb<br />
Advance Computer Architecture<br />
77<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Register Indirect<br />
RY@<br />
edb → di<br />
ry → b → ao, t2<br />
adrm1<br />
dr<br />
x-n<br />
sb<br />
Advance Computer Architecture<br />
78<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Address Mode Sequences<br />
Branch Instruction<br />
edb → irf<br />
ry → a → alu, ao<br />
+1 → alu<br />
brzz1<br />
ir<br />
add-n<br />
bc<br />
Z = 0 (no branch)<br />
Z = 1 (Branch)<br />
na<br />
irf → ire<br />
x-n<br />
t1 → b → pc<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
brzz3<br />
ir<br />
add-n<br />
brzz2<br />
brzz2<br />
ib<br />
Advance Computer Architecture<br />
79<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
Mem → RX<br />
di → b → rx, t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
LOAD<br />
ir<br />
add-x<br />
Mem → RX<br />
rx → a → alu, do<br />
t2 → b → ao<br />
0 → alu<br />
STORE<br />
dw<br />
add-s<br />
ldrm1<br />
ldrm2<br />
strm1<br />
brzz3<br />
irf → ire<br />
t1 → b → pc<br />
t2 → a → alu<br />
0 → alu<br />
na<br />
add-s<br />
ldrm2<br />
ib<br />
Advance Computer Architecture<br />
80<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences with memory operand reference<br />
RX OP Mem → Mem<br />
di → b → alu<br />
rx → a → alu<br />
ADD, AND, SUB<br />
na<br />
op-s<br />
oprm1<br />
oprm2<br />
t1 → a → do<br />
t2 → b → ao<br />
dw<br />
x-s<br />
Mem → ALU<br />
di → b → t2<br />
edb → irf<br />
pc → a → alu, ao<br />
+1 → alu<br />
test1<br />
TEST<br />
ir<br />
add-x<br />
ldrm2<br />
oprm2<br />
brzz3<br />
Advance Computer Architecture<br />
81<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RX → RY<br />
LOAD<br />
RX OP RY → RY ADD, SUB, AND<br />
edb → irf<br />
ir<br />
na<br />
rx → a → alu<br />
pc → a → alu, ao<br />
add-x<br />
op-s<br />
ry → b → alu<br />
ry → a → rx, t2<br />
+1 → alu<br />
oprr1 oprr2 ldrr1 ldrm2<br />
edb → irf<br />
pc → a → alu, ao<br />
t1 → a → ry<br />
+1 → alu<br />
oprr2<br />
ir<br />
add-n<br />
brzz2<br />
RX → RY<br />
edb → irf<br />
pc → a → alu, ao<br />
rx → b → ry, t2<br />
+1 → alu<br />
STORE<br />
ir<br />
add-x<br />
strr1<br />
ldrm2<br />
Advance Computer Architecture<br />
82<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Merged Level 2 <strong>Flowchart</strong>:<br />
Execution Sequences<br />
Execution sequences for Register-to-Register to and special instructions<br />
RY@ → RX<br />
RY+1 → RY<br />
edb → di<br />
ry → a → alu, ao<br />
+1 → alu<br />
POP<br />
dr<br />
add-n<br />
RY-1 → RY<br />
RY@ → RX<br />
ry → a → alu<br />
-1 → alu<br />
PUSH<br />
na<br />
add-n<br />
popr1<br />
di → b → rx<br />
t1 → a → ry<br />
popr2<br />
na<br />
x-n<br />
push1<br />
rx → a → do<br />
t1 → b → ao, ry<br />
push2<br />
dw<br />
x-n<br />
popr2 brzz3 push2 brzz3<br />
Advance Computer Architecture<br />
83<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Processor Block Diagram<br />
Control<br />
Store<br />
Next<br />
State<br />
Control<br />
IB<br />
SB<br />
BC<br />
DB<br />
Instruction<br />
Decoder<br />
Control Word<br />
Register<br />
OP TY NA<br />
Control Fields (dynamic)<br />
Branch<br />
Control<br />
Control word<br />
Decoders<br />
Control Fields<br />
(Static)<br />
IRE<br />
Control lines<br />
Condition<br />
Codes<br />
IRF<br />
Datapath<br />
Advance Computer Architecture<br />
84<br />
Computer<br />
Design<br />
Laboratory<br />
& Test
Thank You<br />
Advance Computer Architecture 85<br />
Computer<br />
Design<br />
Laboratory<br />
& Test