Arch3 (Path)
Arch3 (Path)
CPI
ﭘﺲ ﺍﺯ ﺍﻳﻦ 2ﻣﺮﺣﻠﻪ ﺳﺎﻳﺮ ﺍﻋﻤﺎﻝ ﻻﺯﻡ ﺑﺮﺍﻱ ﺗﻜﻤﻴﻞ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﻪ ﺭﺩﻩ ﻳﺎ
ﻛﻼﺱ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ .ﻛﻪ ﺧﻮﺷﺒﺨﺘﺎﻧﻪ ﺑﺮﺍﻱ ﻫﺮ 3ﺭﺩﻩ
ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺍﻋﻤﺎﻝ ﻻﺯﻡ ﻳﻜﺴﺎﻥ ﺍﺳﺖ.
14
ﭘﻴﺎﺩﻩ ﺳﺎﺯی ﺟﺰﺋﻴﺎﺕ
ﺑﺮﺍﻱ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺟﺰﺋﻴﺎﺕ ﻧﻴﺎﺯ ﺑﻪ ﺍﻓﺰﻭﺩﻥ ﻭﺍﺣﺪﻫﺎﻱ ﻋﻤﻠﻴﺎﺗﻲ ﺑﻴﺸﺘﺮ،ﺍﻓﺰﺍﻳﺶ ﺍﺗﺼﺎﻻﺕ ﺑﻴﻦ
ﻭﺍﺣﺪﻫﺎ ﻭ ﺍﻓﺰﻭﺩﻥ ﻭﺍﺣﺪ ﻛﻨﺘﺮﻟﻲ ﺩﺍﺭﻳﻢ.
ﻣﺴﻴﺮ ﺩﺍﺩﻩ ﺗﻚ ﭼﺮﺧﻪ ﺍﻱ ﻛﻪ ﻣﻔﺎﻫﻴﻢ ﺁﻥ ﺩﺭ ﺍﻳﻦ ﺑﺨﺶ ﻣﻮﺭﺩ ﺑﺤﺚ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ ﺑﺎﻳﺪ
ﺣﺎﻓﻈﻪ ﺩﺍﺩﻩ ﻭ ﺣﺎﻓﻈﻪ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺟﺪﺍﮔﺎﻧﻪ ﺍﻱ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺯﻳﺮﺍ:
-1ﻗﺎﻟﺐ ﺩﺍﺩﻩ ﻭ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎ ﺩﺭ MIPSﻣﺘﻔﺎﻭﺕ ﺍﺳﺖ ﻭ ﺍﺯ ﺍﻳﻦ ﺭﻭ ﺣﺎﻓﻈﻪ ﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ
ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ.
State Element
combinational elements –
state (sequential) elements –
RAMemRead
RARegWrite
29 Advanced Computer Architecture & Design
Science & Research Branch
CarryIn
A
Adder • 32
Adder
Sum
32
B Carry
32
Selec
t
MUX • A
32
MUX
Y
32
B
32
–ﻭﺍﮐﺸﯽ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ
–ﮐﺪﺑﺮﺩﺍﺭی ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎ ﻭ ﺧﻮﺍﻧﺪﻥ ﻋﻤﻠﻮﻧﺪﻫﺎ
–ﻣﺤﺎﺳﺒﻪ ﮐﺮﺩﻥ ﻋﻤﻞ
–ﺑﺎﺯﻧﻮﻳﺴﯽ ﻧﺘﻴﺠﻪ
31 26 21 16 0
BRANCH: •
op rs rt displacement
beq rs, rt, imm – 6 bits 5 bits 5 bits 16 bits
Read registers rs and rt .1
Feed to ALU to compare .2
Add PC to disp; update PC .3
35
Advanced Computer Architecture & Design
Science & Research Branch
ﺩﺭ ﺍﻳﻨﺠﺎ ﺩﺭﺑﺎﺭﻩ R-formatﺻﺤﺒﺖ ﻣﯽ ﮐﻨﻴﻢ:
• ﺍﻳﻦ ﺷﻜﻞ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ ﻛﻪ ﭼﮕﻮﻧﻪ ﺍﻳﻦ ﺳﻪ ﻋﻨﺼﺮ ﺑﺎ ﻫﻢ ﺗﺮﻛﻴﺐ ﻣﻲ ﺷﻮﻧﺪ ﺗﺎ ﻣﺴﻴﺮ ﺩﺍﺩﻩ ﺍﻱ ﺭﺍ
ﺗﺸﻜﻴﻞ ﺩﻫﻨﺪ ﻛﻪ ﻭﻇﻴﻔﻪ ﺑﺮﺩﺍﺷﺖ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎ ﻭ ﺍﻓﺰﺍﻳﺶ PCﺑﺮﺍﻱ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩﻥ
ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺗﺮﺗﻴﺒﻲ ﺑﻌﺪﻱ ﺭﺍ ﺑﻪ ﺍﻧﺠﺎﻡ ﻣﻲ ﺭﺳﺎﻧﺪ.
• ﺗﻤﺎﻡ ﺍﻳﻦ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎ 2 ،ﺭﺟﻴﺴﺘﺮ ﺭﺍ ﻣﻲ ﺧﻮﺍﻧﻨﺪ،ﻳﻚ ﻋﻤﻞ ALUﺭﺍ ﺑﺮ ﺭﻭﻱ ﻣﺤﺘﻮﻳﺎﺕ ﺍﻳﻦ
2ﺭﺟﻴﺴﺘﺮ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﻨﺪ ﻭ ﻧﺘﻴﺠﻪ ﺭﺍ ﻣﻲ ﻧﻮﻳﺴﻨﺪ.
5 Read
Instruction
Read reg 1
data 1 zero
5
Read reg 2 ALU
5 Registers ALU Read
Write reg Address
data
Write data Read Data
data 2 Memory
Write
data
RegWrite
16 sign 32 MemRead
extend
• if Reg[rs] != Reg[rd],
– PCcurrent=(PCprevious+4) + (offset*4)
Multiply constant
by 4 to get offset
51
MIPS ﻳﮏ ﻣﺴﻴﺮﺩﺍﺩﻩ ﺳﺎﺩﻩ ﺑﺮﺍی ﻣﻌﻤﺎﺭی
PCSrc=1
branches
To PC+4+(offset×4).
PCSrc=0
continues
4 to PC+4
52
ﻭﺍﺣﺪ ﮐﻨﺘﺮﻝ
<26:31>
<0:5>
<21:25>
<16:20>
<11:15>
Inst
<0:15>
Memory
Adr
Op Fun Rt Rs Rd Imm16
Control
DATA PATH
R-type:
op rs rt rd shamt funct
31 25 20 15 0
31 25 0
J-type:
op target address
Main 3
000 and ALUOp ALU
Control To
Unit Control ALU ALU
001 or
control
010 add input
110 sub
6
111 slt (set less than)
Instruction
funct field
Main 3
ALUOp ALU
Control To
Unit Control ALU
ALU
control
input
Instruction
funct field
59
ﺍﻓﺰﻭﺩﻥ ﻭﺍﺣﺪ ﮐﻨﺘﺮﻝ ﺍﺻﻠﯽ
ﻋﻤﻠﻴﺎﺕ Aluﺭﺍ ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ ،ﺳﻴﮕﻨﺎﻟﻬﺎﻱ ﺭﺟﻴﺴﺘﺮ ﻓﺎﻳﻞ ﻭ ﺣﺎﻓﻈﻪ ﺭﺍ ﺗﻮﻟﻴﺪ ﻧﻤﺎﻳﺪ ،ﺟﺮﻳﺎﻥ ﺩﺍﺩﻩ ﺍﺯ ﻃﺮﻳﻖ •
ﻣﺎﻟﺘﻲ ﭘﻠﻜﺴﺮﻫﺎ ﺭﺍ ﻛﻨﺘﺮﻝ ﻧﻤﺎﻳﺪ.
ﻣﻼﺣﻈﺎﺕ
– ﺁﺩﺭﺱ ﺭﺟﻴﺴﺘﺮﻫﺎﺋﻲ ﻛﻪ ﺑﺎﻳﺪ ﺧﻮﺍﻧﺪﻩ ﺷﻮﻧﺪ ﺗﻮﺳﻂ ﻓﻴﻠﺪ ) rsﺑﻴﺖ ﻫﺎﻱ (21-25ﻭﻓﻴﻠﺪ ) rtﺑﻴﺖ
ﻫﺎﻱ (20-16ﻣﺸﺨﺺ ﻣﻴﺸﻮﻧﺪ.
– ﺁﺩﺭﺱ ﺭﺟﻴﺴﺘﺮﻱ ﻛﻪ ﺑﺎﻳﺪ ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ ﺩﺭﻳﻜﻲ ﺍﺯ ﺩﻭ ﻣﻜﺎﻥ ﺍﺳﺖ :ﻓﻴﻠﺪ rtﺑﺮﺍﻱ ﺩﺳﺘﻮﺭ lwﻭ ﻓﻴﻠﺪ
rdﺑﺮﺍﻱ ﺩﺳﺘﻮﺭﺍﺕ R-Type
71
Single Cycle Datapath with Control Unit
72
ﺗﻨﻈﻴﻢ ﺧﻄﻮﻁ ﮐﻨﺘﺮﻟﯽ ﺑﺎ ﻣﻴﺪﺍﻥ ﻫﺎی ﮐﺪ ﻋﻤﻞ ﺍﺯ
ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 zero
Data 1
Data
Read
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
75
ﻣﺴﻴﺮ ﺩﺍﺩﻩ ﺍی ﺩﺭ ﺣﺎﻝ ﮐﺎﺭ ﺑﺮﺍی ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﺎﺭ ﮐﺮﺩﻥ
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 zero
Data 1
Data
Read
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
78
ﻋﻤﻠﮑﺮﺩ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺍﻧﺸﻌﺎﺏ ﺩﺭ ﺻﻮﺭﺕ ﺑﺮﺍﺑﺮی
-1ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﺑﺮﺩﺍﺷﺖ ﻣﯽ ﺷﻮﺩ ﻭ PCﺍﻓﺰﺍﻳﺶ ﻣﯽ ﻳﺎﺑﺪ
-2ﺩﻭ ﺭﺟﻴﺴﺘﺮ $t2,$t3ﺍﺯ ﻓﺎﻳﻞ ﺭﺟﻴﺴﺘﺮ ﺧﻮﺍﻧﺪﻩ ﻣﯽ ﺷﻮﺩ
ALU-3ﺑﺮ ﺭﻭی ﻣﻘﺎﺩﻳﺮ ﺧﻮﺍﻧﺪﻩ ﺷﺪﻩ ﺍﺯ ﻓﺎﻳﻞ ﺭﺟﻴﺴﺘﺮ ﻋﻤﻞ ﺗﻔﺮﻳﻖ ﺭﺍ ﺍﻧﺠﺎﻡ
ﻣﯽ ﺩﻫﺪ.ﻣﻘﺪﺍﺭ PC+4ﺑﺎ 16ﺑﻴﺖ ﮐﻢ ﺍﺭﺯﺵ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﮐﻪ 2ﺑﻴﺖ ﺑﻪ
ﺳﻤﺖ ﭼﭗ ﺷﻴﻔﺖ ﻳﺎﻓﺘﻪ ﻭ ﺑﻴﺖ ﻋﻼﻣﺖ ﺁﻥ ﮔﺴﺘﺮﺵ ﻳﺎﻓﺘﻪ ﺟﻤﻊ ﻣﯽ
ﺷﻮﺩ.ﻧﺘﻴﺠﻪ ﺣﺎﺻﻞ ﺁﺩﺭﺱ ﻫﺪﻑ ﺍﻧﺸﻌﺎﺏ ﺍﺳﺖ.
-4ﺧﺮﻭﺟﯽ ﺻﻔﺮ ALUﺗﻌﻴﻴﻦ ﻣﯽ ﮐﻨﺪ ﮐﻪ ﻧﺘﻴﺠﻪ ﮐﺪﺍﻡ ﺟﻤﻊ ﮐﻨﻨﺪﻩ ﺩﺭ PC
ﺫﺧﻴﺮﻩ ﻣﯽ ﺷﻮﺩ.
Advanced Computer Architecture & Design
80
Science & Research Branch
Branch Instruction Data/Control Flow
0
Add
Add 1
4 Shift
left 2 PCSrc
ALUOp Branch
MemRead
Instr[31-26] Control MemtoReg
Unit MemWrite
ALUSrc
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 zero
Data 1
Data
Read
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
81
Adding the Jump Operation
Instr[25-0] 1
Shift
28 32
26 left 2
PC+4[31-28]
0
Add 0
Add 1
4 Shift
left 2 PCSrc
Jump
ALUOp Branch
MemRead
Instr[31-26] Control MemtoReg
Unit MemWrite
ALUSrc
RegWrite
RegDst
ovf
Instr[25-21] Read Addr 1
Instruction
Register Read Address
Memory Instr[20-16] Read Addr 2 zero
Data 1
Data
Read
PC Instr[31-0] 0 File
ALU Memory Read Data 1
Address Write Addr
1 Read 0
Instr[15 Data 2 Write Data 0
Write Data
-11] 1
82