Document 7590796
Download
Report
Transcript Document 7590796
MIPS پردازنده
معماری
Patterson & Henessi & کتاب
Amirkabir University of Technology
Computer Engineering & Information Technology Department
مراحل طراحی یک پردازنده
با آنالیز مجموعه دستورات نیازمندیهای DataPathرا
مشخص میکنیم
اجزا DataPathو روش Clockingرا انتخاب میکنیم
اجزا DataPathرا در کنار هم قرار میدهیم
با آنالیز هر دستورالعمل نقاط کنترلی را که مسیر داده را تحت
تاثیر قرار میدهند را مشخص میکنیم
منطق Controlرا پیاده سازی میکنیم
بلوک دیاگرام کلی
crystal
oscillator
2-phase
clock
generator
memread
memw rite
ph1
ph2
reset
MIPS
processor
adr
w ritedata
memdata
832
832
832
external
memory
اجزای اصلی پردازنده
memwrite
memread
controller
aluop[1:0]
reset
32
adr[7:0]
writedata[7:0]
32
32
memdata[7:0]
datapath
alucontrol[2:0]
ph2
funct[5:0]
irwrite[3:0]
regwrite
iord
regdst
memtoreg
pcsource[1:0]
pcen
alusrcb[1:0]
alusrca
zero
op[5:0]
ph1
alucontrol
Data Path & Control path
Data pathمسیری است که مشخص میکند داده ها چگونه بین
پردازنده و سایر المانهای اصلی رد و بدل میشود .اجزای آن عبارتند از:
combinational elements
state (sequential) elements
Control pathمشخص میکند که سیگنالهای کنترلی و
زمانبندی چگونه به المانهای Data Pathمیرسد.
مراحل الزم برای اجرای دستور
واکشی دستور از محلی که PCاشاره میکند
خواندن محتوی 0و یا 1ویا 2رجیستر بنا به فیلدهای
مشخص شده در دستور
انجام محاسبات ALU
همه دستورات بنوعی به ALUنیاز دارند:
دستورات انتقال داداه :برای محاسبه آدرس
دستورات محاسباتی :برای انجام محاسبه
دستورات انشعاب :برای محاسبه آدرس موثر
تفاوت در اجرای دستورات
دستورات انتقال داده
load: access memory for read data {ld R1, 0(R2)}
store: access memory for write data {ld 0(R2), R1}
ALUدستورات
no memory access for operands
access a register for write of result {add R1,R2,
R3}
دستورات انشعاب
change PC content based on comparison {bnez
R1, Loop}
مراحل مورد نیاز دستورات مختلف
Fetch Decode
Read
Registers
Compute
Access
Memory
add/sub
X
X
X
X
load
X
X
X
X
X
store
X
X
X
X
X
conditional
branch
X
X
X
X
unconditional
branch
X
X
X
Write
Registers
X
X
معماری چندمرحله ایMulti Sateged :
اجرای دستورات در MIPSطی مراحل زیر انجام میشود:
]IR <-- Mem[PC
PC <-- PC + 4
decode I31..26
]ALUop A <-- Reg[IR25..21
]ALUop B <-- Reg[IR20..16
ALUOut <-- PC + (sgnxtnd(IR15..0)) << 2
))ALUOut <-- A + (B or sgnxtnd(IR15..0
))if ((op == branch) && (A == B
PC <-- ALUOut
)if (op == jump
)PC <-- PC31..28 || (IR25..0 << 2
]MDR <-- Mem[ALUOut
//load
or
Mem[ALUOut] <-- B
)if (op == 0
Reg[IR15..11] <-- ALUOut
Reg[IR20..16] <-- MDR
دستور از محل مشخص شده توسط PCواکشی شده و در IR
قرار داده میشود.
دستور موجود در IRدیکد میشود ،مقدار بعدی PCمحاسبه
میشود ،و اپراندهای موردنیاز از رجیسترفایل خوانده میشود.
IF
Instruction
Fetch
ID
Instruction
Decode
عملیات مربوط به ALUدر این مرحله انجام میشوند.
EX
Execute
اگر دستور فعلی loadباشدداده از حافظه خوانده
میشود.اگردستور storeباشد داده در حافظه نوشته میشود و
برای سایر دستورات عملی انجام نمیشود.
MA
Memory
Access
برای دستوراتی که نتیجه ای تولیدمیکنند ،نتایج در رجیستر فایل
نوشته میشود.
تقریبا تمامی دستورات به این مرحله نیاز دارند.
WB
WriteBack
Data Path اجزای
باید شامل المانهای ترکیبی وData Path حداقل اجزای
.ترتیبی باشد که بتواند عملیات زیر را اجرا نماید
Fetch instructions and data from memory
Decode instructions and dispatch them to the
execution unit
Execute arithmetic & logic operations
Update state elements (registers and memory)
رجیستر فایل
گانه پردازنده در ساختاری به اسم32 •رجیسترهای
.رجیستر فایل نگهداری میشوند
•هر یک از رجیسترها را میتوان با مشخص کردن شماره
.آن خواند و یا نوشت
•Register File’s I/O structure
–3 inputs derived from current
instruction to specify register
operands (2 for read and 1 for
write)
–1 input to write data into a register
–2 outputs carrying contents of the
specified registers
5
Register
5
numbers
5
Data
32
Read reg 1
Read
data 1
64
Read reg 2
Write reg
Registers
Write data
Read
data 2
32
RegWrite
•Register file’s outputs are always
available on the output lines
•Register write is controlled by
RegWrite lead
مدارات ترکیبی
input
n
combinational
n
logic
•Output determined entirely by input
•Contains no storage element
output
سایر مدارات
•Multiplexor selects one out of
inputs
2n
M
2n
X
n
•ALU performs arithmetic & logic
operations
–AND: 000
–OR: 001
–add: 010
–subtract: 110
–set on less than: 111
–other 3 combinations unused
1
U
32
zero
ALU
32
3
32
result
اجزای ترتیبی
write
•State element has storage (i.e.,
memory)
•State defined by storage content
•Output depends on input and the
state
input
State Element
storage
•Write lead controls storage update
•Clock lead determines time of update
•Examples: main memory, registers, PC
clock
output
روش اعمال کالک
•Needed to prevent simultaneous
read/write to state elements
•Edge-triggered methodology:
state elements updated at rising
clock edge
State
element
1
clock input
Combinationa
l
logic
State
element
2
ورودی خروجی اجزا
State
element
1
Combinationa
l
logic
•Combinational elements take input from one state element
at clock edge and output to another state element at the
next clock edge,
•Within a clock cycle, state elements are not updated and
their stable state is available as input to combinational
elements,
•Output can be derived from a state element at the edge of
one cycle and input into the same state at the next.
Datapath Schematic
Data
PC
Instruction
Memory
Address
Register #
Register #
Registers
ALU
ALU
Address
Instruction
Data
Memory
Register #
Data
Datapath Building Blocks:
واکشی دستورات
محتوی PCتوسط یک جمع کننده
با 4جمع میشود تا آدرس دستور
بعدی محاسبه شود.
مقدار PCبه حافظه داده میشود تا
دستور واکشی شده و به سایر
اجزای Data Pathارسال شود
فرض میشودکه دستورو داده در
دو حافظه مجزا نگهداری میشوند.
( بعدا به دالیل آن اشاره خواهد
شد)
ALU
Adder
4
Instruction
Read
address
32
Instruction
Memory
PC
Datapath Building Blocks:
دیکد دستورات
و سایر فیلدهای الزم دستور به واحدopcode باید مقدار
.کنترل فرستاده شوند
.رجیسترهای الزم هم از رجیستر فایل خوانده شوند
Control
Unit
Instruction
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
Write Data
Data 2
Datapath Building Blocks:
R-Type Instruction
6
func
برای دستورات محاسباتی و منطقی
که توسط این فرمت نشان داده
میشوند الزم است تا دو رجیستر از
رجیستر فایل خوانده شده و داده آنها
به ALUمنتقل شود.
عمل ALUبر اساس نوع دستور
تعیین شده و بر روی محتوی
zero
رجیسترها انجام میشود.
نتیجه در رجیستر مقصد نوشته
میشود.
سیگناهای کنترلی باید ایجاد شود تا
نتیجه در لبه کالک در رجیستر
مقصد نوشته شود .همچنین سیگنال
ALUopباید تولید شود تا عمل
ALUرا تعیین کند.
5
5
5
5
rd shamt
rt
rs
6
opcode
R-Type Format
ALUop
Read
data 1
ALU
ALU
Read reg 1
Read reg 2
Register
Write reg File
Read
data 2
Write data
RegWrite
5
5
5
Instruction
I-Type Instruction: load/store
برای محاسبه آدرس باید
مقدار افست 16بیتی
موجود در دستورالعمل
بصورت یک عدد عالمت
دار 32بیتی تبدیل شده وبا
مقدار پایه موجود در rs
جمع شود.
16
5
5
immediate
rt
rs
6
I-Type opcode
)LW R2, 232(R1
)SW R5, -88(R4
32
sign
extend
16
I-Type Instruction: load/store
بنابراین اجرای این دستور با اجزای زیر درارتباط خواهد بود:
Register file
Sign extender
برای تبدیل آدرس
ALU
برای دسترسی به رجیستر پایه و رجیستر مقصد
برای جمع کردن آدرس پایه و مقدار افست توسعه داده شده
Data memory to load/store data
مقادیر آدرس ،و داده ورودی یاخروجی باید به حافظه فرستاده شوند
سیگناهای کنترلی MemRead, MemWrite, Clockباید به حافظه فرستاده شوند
Datapath Building Blocks:
load/store
6
I-Type
opcode
5
5
16
rs
rt
immediate
ALUop
MemWrite
5
Instruction
5
5
Read
data 1
Read reg 1
zero
Read reg 2
Write reg
ALU
ALU
Registers
Read
data 2
Write data
Read
data
Data
Memory
Write
data
RegWrite
16
Address
sign
extend
32
MemRead
I-Type Instruction: bne
از آنجائیکه. بدست می آیدPC مقصد دستور انشعاب از جمع مقدار افست با
بار به2 نیاز است تا مقدار افست به اندازه،باشد4 این مقصد باید مضربی از
.سمت چپ شیفت داده شود
6
if Reg[rs] != Reg[rd],
I-Type opcode
5
16
rs
rt
immediate
PCcurrent=(PCprevious+4) + Imm<< 2
bne R1, R2, Imm
else if Reg[rs] == Reg[rt]
5
PCcurrent=(PCprevious+4)
1
6
sign
extend
shift
32
32
left 2
ALU
Adder
PC+4
I-Type Instruction: bne
برای مقایسه رجیسترهای دستور bneاز ALUاستفاده میشود .از
اینرو نتیجه این مقایسه با سیگنال Zeroکه در خروجی ALUتعبیه
شده است مشخص میگردد.
بعلت درگیر بودن ALUبرای محاسبه آدرس مقصد از یک جمع کننده
دیگر استفاده میشود.
Datapath Building Blocks: bne
6
I-Type opcode
5
5
16
rs
rt
immediate
Instruction
5
5
Read reg 1
ALUop = subtract
Read
data 1
Read reg 2
control logic
ALU
ALU
Registers
Write reg
Write data
To branch
zero
Read
data 2
RegWrite
16
sign
32
extend
PC+4 from
Instruction Datapath
shift
left 2
ALU
Adder
Branch target
Datapath Building Blocks: bne
Add
4
Add
Shift
left 2
Branch
target
address
ALU control
PC
Instruction
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
Write Data
16
Data 2
Sign
Extend
32
zero (to branch
control logic)
ALU
Datapath Building Blocks:
jump instruction
اجرای دستور jumpاز طریق المانهای زیر انجام میشود:
26بیت مقدار موجود در دستورالعمل به اندازه 2بیت به
سمت چپ شیفت داده شده و با 28بیت کم ارزش PCجایگزین
میشود.
Add
4
4
Jump
address
28
Instruction
Memory
Shift
left 2
Instruction
26
Read
Address
PC
ساخت یک Data Pathواحد بااجزای فوق
اجزای مورد نیاز برای قسمت های مختلف در کنار هم قرار
داده شده و سیگناهای کنترلی و مالتی پلکسرهای مورد نیاز به
آن افزوده میشوند.
در طراحی Single Cycleهمه مراحل واکشی ،دیکد و اجرا
در یک کالک انجام میشود!
زمان این کالک برابر خواهد بود با زمان الزم برای طی کردن
طوالنی ترین مسیر که میتواند زمان زیادی باشد.
عالوه برآن امکان به اشتراک گذاشتن سخت افزار برای
عملیات یکسان وجود ندارد.
Fetch, R, and Memory Access
Portions
Add
RegWrite
ALUSrc ALU control
4
MemtoReg
ovf
zero
Instruction
Memory
PC
MemWrite
Read
Address
Instruction
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
Write Data
Address
ALU
Write Data
Data 2
Sign
16 Extend
Data
Memory Read Data
MemRead
32
افزودن واحد کنترل
این واحد باید :
عملیات Aluرا مشخص نماید ،سیگناهای رجیستر فایل و حافظه را تولید نماید ،جریان داده
از طریق مالتی پلکسرها را کنترل نماید.
مالحظات
مقدار اپکد همیشه در بیت های 26-31قراردارد
آدرس رجیسترهائی که باید خوانده شوند توسط فیلد ( rsبیت های 21-25وفیلد ( rtبیت های
)20-16مشخص میشوند.
آدرس رجیستری که باید نوشته شوند دریکی از دو مکان زیر است :فیلد rtبرای دستور lwو
فیلد rdبرای دستورات R-Type
مقدار افست در بیت های 15-0است.
0
5
10
shamt funct
0
15
20
rd
rt
15
address offset
20
rt
0
25
rs
25
rs
25
target address
31
R-type: op
31
op
I-Type:
31
op
J-type:
Single Cycle Datapath with Control Unit
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
R-type Instruction Data/Control Flow
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
Load Word Instruction Data/Control Flow
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
Branch Instruction Data/Control Flow
0
Add
Add
Shift
left 2
4
ALUOp
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
Adding the Jump Operation
Instr[25-0]
Shift
left 2
26
1
28
32
0
PC+4[31-28]
0
Add
Jump
ALUOp
Add
Shift
left 2
4
1
PCSrc
Branch
MemRead
MemtoReg
MemWrite
Instr[31-26] Control
Unit
ALUSrc
RegWrite
RegDst
Instruction
Memory
PC
Read
Address
Instr[31-0]
ovf
Instr[25-21] Read Addr 1
Register Read
Instr[20-16] Read Addr 2 Data 1
File
0
Write Addr
Read
1
Instr[15
-11]
Instr[15-0]
Write Data
zero
ALU
Data
Memory Read Data
1
Write Data
0
0
Data 2
1
Sign
16 Extend
Address
32
Instr[5-0]
ALU
control
مزایا و معایب معماری Single Cycle
زمان کالک بطور موثر استفاده نمیشود زیرا بر اساس طوالنی ترین
دستور تنظیم شده است .این امر در صورت داشتن دستورات پیچیده مثل
دستورات اعشاری میتواند خیلی وخیم باشد.
فضای بیشتری در روی چیپ الزم دارد زیرا تعداد بیشتری از المانهای
سخت افزاری الزم دارد.
ساده و قابل فهم است.
Cycle 2
Cycle 1
Clk
Waste
sw
lw
محاسبه طوالنی ترین دستورالعمل
Instruction
class
Instruction
memory
Register
read
ALU
operation
Data
memory
Register
write
Total
(ps)
ALU type
200
50
100
0
50
400
lw
200
50
100
200
50
600
Sw
200
50
100
200
Branch
200
50
100
Jump
200
550
350
200
طول کالک باید بر اساس زمان الزم برای طوالنی ترین
600 ps .دستور طراحی شود
نگرش Multicycle Datapath
هر دستور به تعدادی مرحله کوچکتر تقسیم شده و هر یک از این
مراحل در یک کالک اجرا میشوند .بدین ترتیب برای اجرای هر دستور
به تعدادی کالک کوچک تر نیاز خواهیم داشت.
مراحل طوری انتخاب میشوند که کار انجام گرفته در آنها متعادل باشد.
در هر مرحله فقط از یکی از بلوک های سخت افزاری اصلی استفاده
میشود.
هر دستور تعداد متفاوتی کالک الزم دارد.
فقط به یک حافظه نیاز دارد .البته در هر سیکل فقط میتوان یکبار به
حافظه دسترسی داشت.
فقط به یک ALU/adderنیاز دارد .البته در هر سیکل بیش از یکبار
از ALUنمیتوان استفاده نمود.
Write Data
ALU
ALUout
Read Addr 1
Register Read
Read Addr 2Data 1
File
Write Addr
Read
Data
2
Write Data
B
Address
Read Data
(Instr. or Data)
A
IR
Memory
MDR
PC
Multicycle Datapath نگرش
در این معماری مقادیری که در سیکلهای بعدی دستور مورد نیاز
در نتیجه باید اجزای زیر به.هستند در رجیسترهائی ذخیره میشوند
:معماری افزوده شوند
MDR – Memory Data Register
IR – Instruction Register
ALUout – ALU output register A, B – regfile read data registers
The Multicycle Datapath with Control Signals
Memory
1
1
Write Data
1
Read Data
(Instr. or Data)
0
Write Data
Shift
left 2
Instr[25-0]
Read Addr 1
Register Read
Read Addr 2 Data 1
File
Write Addr
Read
IR
Address
MDR
PC
Instr[31-26]
0
PC[31-28]
Data 2
Instr[15-0] Sign
Extend 32
Instr[5-0]
Shift
left 2
2
0
1
0
1
zero
ALU
4
0
28
0
1
2
3
ALU
control
ALUout
MemRead
MemWrite
MemtoReg
IRWrite
PCSource
ALUOp
Control
ALUSrcB
ALUSrcA
RegWrite
RegDst
A
IorD
B
PCWriteCond
PCWrite
Datapath
control
points
...
واحد کنترل Multicycle
Combinational
control logic
...
State Reg
Next State
...
Inst
Opcode
در معماری Multicycleسیگنالهای کنترل را نمیتوان فقط از روی بیت های دستورالعمل
بدست آورد .زیرا اطالعاتی در مورد سیکلهای دستورالعمل در اپکد آن ذخیره میشود.
از اینرو از یک ماشین FSMبرای طراحی واحد کنترل استفاده میشود.
تعدادی stateمحدود برای پردازنده فرض میشود که در state reg
ذخیره میشوند.
stateبعدی از روی stateفعلی ومقادیر ورودی تعیین میشوند.
load گانه دستور5 مراحل
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5
lw
IFetch
Dec
Exec
Mem
WB
IFetch: Instruction Fetch and Update PC
Dec: Instruction Decode, Register Read, Sign
Extend Offset
Exec: Execute R-type; Calculate Memory
Address; Branch Comparison; Branch and Jump
Completion
Mem: Memory Read; Memory Write Completion;
R-type Completion (RegFile write)
WB: Memory Read Completion (RegFile write)
مراحل اجرای دستورات مختلف
اجرای دستورات متفاوت زمانهای مختلفی نیاز دارد.
اجرای دستورات MIPSبه 3تا 5سیکل نیاز دارند.
اجزای اصلی واحد کنترل
بخش مشترک
واکشی
دیکد و خواندن دستور
اجزای مربوط به دستورات
S ta rt
I n s tru c tio n fe tc h / d e c o d e a n d re g is te r fe tc h
(F ig u re 5 .3 7 )
M e m o ry a c c e s s
in s tru c tio n s
(F ig u re 5 .3 8 )
R -ty p e in s tru c tio n s
(F ig u re 5 . 3 9 )
B ra n c h in s tru c tio n
(F ig u re 5 .4 0 )
J u m p in s tru ctio n
(F ig u re 5 .4 1 )
بخش مشترک
واکشی
دیکد و خواندن دستور
I n s t r u c t io n d e c o d e /
In s tru c tio n fe tc h
R e g is te r fe tc h
0
M em R e a d
1
A L U S rc A = 0
Io rD
= 0
A L U S rc A = 0
IR W rite
S ta rt
A L U S rc B = 0 1
A L U S rc B = 1 1
A L U O p = 0 0
A L U O p = 0 0
P C W rite
(O p = 'J M P ')
P C S o u rc e = 0 0
M e m o ry re fe re n c e F S M
R - ty p e F S M
B ra n c h F S M
Jum p F S M
( F ig u r e 5 . 3 8 )
( F ig u r e 5 . 3 9 )
( F ig u r e 5 . 4 0 )
( F ig u r e 5 . 4 1 )
F ro m
s ta te 1
( O p = 'L W ') o r ( O p = 'S W ')
M e m o r y a d d r e s s c o m p u t a t io n
2
دسترسی به حافظه
A L U S rc A = 1
A L U S rc B = 1 0
( O p = 'L W ' )
A L U O p = 00
M e m o ry
M e m o ry
a cce ss
a cce ss
3
محاسبه آدرس
ترتیب خواندن از حافظه
خواندن از حافظه
ذخیره در رجیستر
ترتیب نوشتن در حافظه
نوشتن در حافظه
5
M em R ead
Io rD = 1
M e m W r ite
Io r D = 1
W r it e - b a c k s t e p
4
R e g W r it e
T o s ta t e 0
M e m to R e g = 1
(F ig u r e 5 .3 7 )
R eg D st = 0
F r o m s ta te 1
( O p = R - ty p e )
R-type دستورات
E x e c u t io n
6
اجرای دستورات
نوشتن نتیجه در رجیستر
A L U S rc A = 1
A L U S rc B = 0 0
A LU O p = 10
R - ty p e c o m p le t io n
7
R egD st = 1
R e g W rite
M e m to R e g = 0
T o s ta te 0
( F ig u r e 5 .3 7 )
Branch دستور
F r o m s ta te 1
( O p = 'B E Q ' )
B r a n c h c o m p le t i o n
8
A L U S rc A = 1
A L U S rc B = 0 0
ALUOp = 01
P C W r it e C o n d
P C S o u rc e = 0 1
T o s ta te 0
( F ig u r e 5 . 3 7 )
:در یک مرحله اجرامیشود
با آدرسPC اگرشرط درست باشد
.دستورانشعاب پر میشود
Jump دستور
From state 1
(Op = 'J')
Jump completion
9
PCWrite
PCSource = 10
To state 0
(Figure 5.37)
. با آدرس محل انشعاب پر میشودPC
ماشین حالت کامل
In s t r u c tio n
In s tru c tio n
fe tc h
re g is te r
d e c o d e /
fe tc h
0
M e m R e a d
A L U S rc A
Io rD
IR W
S ta rt
=
1
=
0
0
A L U S rc A
r ite
A L U S rc B
A L U O p
A L U S rc B
=
0 1
=
A L U O p
=
=
=
0
1 1
0 0
0 0
P C W rite
M e m o ry
=
0 0
a d d r e s s
( O p = 'J ' )
P C S o u rc e
B ra n c h
c o m p u ta tio n
E x e c u tio n
2
c o m p le tio n
6
=
A L U S rc B
A L U O p
1
=
=
A L U S rc A
1 0
A L U S rc B
0 0
9
A L U S rc B
= 1
=
A L U O p =
0 0
A L U O p
=
( O p = 'L W ')
3
a c c e s s
5
1 0
R -ty p e
7
R e g D s t =
M e m R e a d
Io rD
=
M e m W r ite
Io rD
1
W
r ite - b a c k
4
R e g D s t = 0
R e g W
r ite
M e m to R e g = 1
s te p
=
1
R e g W
1
r ite
M e m to R e g
=
1
0 0
0 1
P C W r it e C o n d
M e m o ry
a c c e s s
=
=
P C S o u rc e
M e m o ry
c o m p le t io n
8
A L U S rc A
A L U S rc A
0
J u m p
c o m p le tio n
=
0 1
P C W
r ite
P C S o u rc e
=
1 0
Finite State Machine for
Control
P C W rite
P C W rite C o n d
Io rD
M em R e ad
M e m W rite
IR W rite
C o n tro l lo g ic
M e m to R e g
P C S o u rc e
ALUO p
O u tp u ts
A L U S rc B
A L U S rc A
R e g W rite
R egD st
NS3
NS2
NS1
In s tru c tio n re g is te r
o p c o d e fie ld
S0
S1
S2
NS0
S3
O p0
O p1
O p2
O p3
Op4
O p5
In p u ts
S ta te re g is te r
تمرین
واحد کنترل MultiCycleرا بصورت میکروپروگرام پیاده
سازی کنید.
مزایا و معایب معماری Multicycle
زمان یک کالک براساس طوالنی ترین مرحله تعیین میشود( و نه
طوالنی ترین دستورالعمل) .درنتیجه از کالک بطور موثرتری استفاده
میشود.
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9Cycle 10
Clk
sw
R-type
IFetch
Mem
Exec
Dec
IFetch
lw
WB
Mem
Exec
Dec
IFetch
این امکان بوجود می آید که در طول یک دستوراز یک بلوک سخت
افزاری در کالک های مختلف استفاده نمود.
نیاز به تعدادی رجیستر داخلی ،تعداد بیشتری مالتی پلکسر ،وروش
کنترل پیچیده تری دارد.
مقایسه زمان بندی تک سیکل و چند سیکل
Single Cycle Implementation:
Cycle 1
Cycle 2
Clk
lw
sw
multicycle clock
slower than 1/5th of
single cycle clock
due to state register
overhead
Multiple Cycle Implementation:
Clk
Waste
Cycle 1 Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9Cycle 10
lw
IFetch
sw
Dec
Exec
Mem
WB
IFetch
R-type
Dec
Exec
Mem
IFetch
فصل بعد
MIPS pipelined datapath review
Reading assignment – PH, Chapter 6.16.3