View
230
Download
7
Embed Size (px)
Citation preview
MIPS پردازنده
الین پایپ
کتاب Patterson & Henessi
Amirkabir University of TechnologyComputer Engineering & Information Technology Department
الین پایپPipelining ریزتر عملیات به ترتیبی فرایند یک تجزیه از است عبارت
همزمان بصورت اختصاصی بخش یک بوسیله بتوان را یک هر بنحویکهداد انجام
قسمت به و داده انجام داده روی را خاصی کار الین ازپایپ قسمت هر . در نتیجه شد رد قسمتها همه از داده که وقتی میدهد تحویل بعدی
. بود خواهد آماده الین پایپ خروجی. است شده گرفته اتومبیل مونتاژ خط از عمل این نام مدارترکیبی یک و رجیستر یک شامل میتواند الین پایپ از قسمت هر
آن. روی را الزم عمل ومدارترکیبی میدارد نگه را داده رجیستر باشد. شود بعدی قسمت رجیستر تحویل بعد کالک در تا میدهد انجام
رجیستر
مدار
رجیستر
مدار
رجیستر
مدار
رجیستر
مدارinput
clock
الین پایپ از مثالی . دهیم انجام ها داده از ای دنباله روی بر را وضرب جمع عمل میخواهیم
Ai=Bi+Ci for i=1,2,3,..,7 . داد انجام الین پایپ از قسمت یک در میتوان را عمل هر
T1: R1 Ai , R2Bi T2: R3 R1*R2 , R4Ci T3: R5 R3+R4
R1 R2
Multiplier
R3 R4
Adder
R5
Ai Bi
الین پایپ
را عمل یک بتوان باید مناسب کارآیی داشتن برایلحاظ ) از یکسان تقریبا پیچیدگی با اجزائی به
. ) نمود تقسیم اجرا زمان
time-spaceنمودار
نمودار با میتوان را الین پایپ time-spaceعملکرد . داد نشان
به کار یک برای kاگر باشد شده تقسیم قسمتبه nانجام نیاز خواهیم )k+)n-1عمل نیاز پالس
داشت.1 2 3 4 5 6 7 8 9
T1 T2 T3 T4 T5 T6
T1 T2 T3 T4 T5 T6
T1 T2 T3 T4 T5 T6
T1 T2 T3 T4 T5 T6
1
2
3
4
Segment
time-spaceنمودار
سرعت افزایش مقدار تئوری لحاظ kاز. بود برابرخواهد
: کرد کار سرعت این با همیشه نمیتوان درعمل اما داشته متفاوتی زمان است ممکن مختلف های قسمت
آنها. ترین کند اساس بر کالک صورت دراین باشندمیشود تنظیم
رجیسترهائی الین پایپ بصورت سیستم یک طراحی باالزم عادی حالت در که میشود اضافه سیستم به
نیستند.
دستورالعمل الین پایپ
حال در دستور یک حالیکه در الین پایپ نوع این در . میشوند خوانده حافظه از بعدی دستورات اجراست
. اینکار برای میشود اجرا و واکشی همزمانی باعث اینکاراجرا و واکشی برای مجزا دوواحد دارای باید کامپیوتر
باشد. بافر یک از میتوان واکشی واحد . FIFOبرای نمود استفاده باشد نداشته حافظه به نیازی اجرا واحد که زمان هر در
بافر در و خوانده حافظه از را دستورات واکشی واحد . اینعمل میدهد . instruction prefetchقرار میشود نامیده
اجرا واحد
دستورات صف
دستورالعمل الین پایپ
الین پایپ نوع این با باشند مساوی اجرا و واکشی زمان اگر . چنین عمل در اما میشود برابر دو دستورات اجرای سرعت
: . زیرا افتد نمی اتفاقی واحد لذا است واکشی زمان از بیشتر معموال اجرا زمان
. کند صبر اجرا شدن تمام تا است مجبور واکشی اجرای توالی تا میشود باعث شرطی انشعاب دستورات وجود
مقصد وآدرس شرط شدن معلوم با و خورده بهم دستوراتدورریخته را بافر دستورات تمامی میشود مجبور واکشی واحد . مجبور اجرا واحد حالت این در کند شروع را واکشی مجددا و
. کند صبر دستور واکشی تا است. داشت خواهد مشابهی تاثیر هم وقفه دادن رخ
الین پایپ
: باشد موثر الین پایپ اینکه برای. باشند یکسان طول دارای باید دستورات همه باشد محدود دستورات فرمت دستورات به محدود حافظه به باشد storeو loadدسترسی
: میکنند مشکل را الین پایپ زیر موارد structural hazards: suppose we had only one memory control hazards: need to worry about branch
instructions data hazards: an instruction depends on a previous
instruction
دستورات مختلف MIPSمراحل
در میتوان را دستورات پردازنده این انجام 5در زیر مرحلهداد:
IFetch: Fetch Instruction, Increment PCDecode Instruction, Read RegistersExecute:
Mem-ref: Calculate Address Arith-log: Perform Operation
Memory: Load: Read Data from Memory Store: Write Data to Memory
Write Back: Write Data to Register
: دستورات واکشی اول مرحله
: میشود انجام زیر عملیات مرحله این در از استفاده شده PCبا خوانده حافظه از دستور
در .IRو میگیرد قرارPC اندازه آدرس 4به تا یابد می افزایش واحد
. شود تعیین بعدی دستور
IR Memory[PC] NPC PC + 4
: دستورات دیکد دوم مرحلهرجیسترها مقادیر وخواندن
رجیسترهای به که دستوراتی نیاز rt , rsدر. میشود خوانده رجیسترفایل از آنها مقدار دارند
محاسبه مقصد آدرس انشعاب دستورات برایمیشود.
A Reg[IR[25-21]] B Reg[IR[20-16]] IMM SE(Reg[IR[15-0]])
است ممکن دستورالعمل نوع به ALUبسته: دهد انجام را زیر اعمال از یکی
Memory Reference:ALUOut A + Imm
R-type:ALUOut A func BALUOut A op Imm
Branch:ALUOut NPC+ImmCond (A op 0)
اجرا: 3مرحله
حافظه: 4مرحله به دسترسیتعیین PCو
مقدارPC پر آن جدید مقدار با دستورات همه برایمیشود.
PC NPC دستوراتLoad ,Store. پیدامیکنند دسترسی حافظه به
MemoryMDR Memory[ALUOut];
orMemory[ALUOut] B;
Branchif )cond( PC ALUOut
در: 5مرحله نتایج نوشتنرجیسترها
R-type instructions finish
Reg[IR[15-11]] ALUOut;
or Reg[IR[20-16]] ALUOut;Load instruction
Reg[IR[20-16]] MDR;
الین پایپ در دستور اجرای
از باید دستورات . 5همه کنند عبور فوق مرحلهالزم دستورات همه برای فوق مراحل همه ازآنجائیکه
موارد برخی در عملی stageنیست انجام بدون ها. میکنند منتقل خروجی به را ورودی
IFtch Dcd Exec Mem WB
IFtch Dcd Exec Mem WB
IFtch Dcd Exec Mem WB
IFtch Dcd Exec Mem WB
IFtch Dcd Exec Mem WB
IFtch Dcd Exec Mem WB
Time
Basic Idea
What do we need to add to actually split the datapath into stages?
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Instruction
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
ReaddataAddress
Datamemory
1
ALUresult
Mux
ALUZero
IF: Instruction fetch ID: Instruction decode/register file read
EX: Execute/address calculation
MEM: Memory access WB: Write back
الین پایپ رجیسترهای
: میشود داده قرار رجیستری مرحله هر بین در بعدی و قبل مرحله دو نام اساس بر رجیسترها این نامگذاری
تولید. های داده رجیستر است این در مرحله یک در شدهمیشود داده . قرار شود منتقل بعدی مرحله به تا
Example: IF/ID register gets
instruction PC+4
مرحله از . WBبعد در نتایح زیرا باشد نمی رجیستر به نیازی . مورد مراحل بین در خود که اند شده نوشته فایل رجیستر
. گرفت خواهند قرار استفاده
Pipelined Datapath
Can you find a problem even if there are no dependencies? What instructions can we execute to manifest the problem?
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
1
ALUresult
Mux
ALUZero
ID/EX
Datamemory
Address
Corrected Datapath
Instructionmemory
Address
4
32
0
Add Addresult
Shiftleft 2
Inst
ruct
ion
IF/ID EX/MEM MEM/WB
Mux
0
1
Add
PC
0
Address
Writedata
Mux
1Registers
Readdata 1
Readdata 2
Readregister 1
Readregister 2
16Sign
extend
Writeregister
Writedata
Readdata
Datamemory
1
ALUresult
Mux
ALUZero
ID/EX
Pipeline Control
PC
Instructionmemory
Address
Inst
ruct
ion
Instruction[20– 16]
MemtoReg
ALUOp
Branch
RegDst
ALUSrc
4
16 32Instruction[15– 0]
0
0Registers
Writeregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux
1Write
data
Read
data Mux
1
ALUcontrol
RegWrite
MemRead
Instruction[15– 11]
6
IF/ID ID/EX EX/MEM MEM/WB
MemWrite
Address
Datamemory
PCSrc
Zero
AddAdd
result
Shiftleft 2
ALUresult
ALU
Zero
Add
0
1
Mux
0
1
Mux
به ای مرحله از داده نظیر نیز کنترلی سیگنالهاییابند می انتقال دیگر مرحله
Pipeline Control
Execution/Address Calculation stage control lines
Memory access stage control lines
Write-back stage control
lines
InstructionReg Dst
ALU Op1
ALU Op0
ALU Src Branch
Mem Read
Mem Write
Reg write
Mem to Reg
R-format 1 1 0 0 0 0 0 1 0lw 0 0 0 1 0 1 0 1 1sw X 0 0 1 0 0 1 0 Xbeq X 0 1 0 1 0 0 0 X
Control
EX
M
WB
M
WB
WB
IF/ID ID/EX EX/MEM MEM/WB
Instruction
Datapath with Control
PC
Instructionmemory
Inst
ruct
ion
Add
Instruction[20– 16]
Mem
toR
eg
ALUOp
Branch
RegDst
ALUSrc
4
16 32Instruction[15– 0]
0
0
Mux
0
1
Add Addresult
RegistersWriteregister
Writedata
Readdata 1
Readdata 2
Readregister 1
Readregister 2
Signextend
Mux
1
ALUresult
Zero
Writedata
Readdata
Mux
1
ALUcontrol
Shiftleft 2
RegW
rite
MemRead
Control
ALU
Instruction[15– 11]
6
EX
M
WB
M
WB
WBIF/ID
PCSrc
ID/EX
EX/MEM
MEM/WB
Mux
0
1
Mem
Writ
e
AddressData
memory
Address
الین پایپ گرافیک نمایش
IM Reg DM Reg
IM Reg DM Reg
CC 1 CC 2 CC 3 CC 4 CC 5 CC 6
Time )in clock cycles(
lw $10, 20)$1(
Programexecutionorder)in instructions(
sub $11, $2, $3
ALU
ALU
Instr.
Order
Load
Add
Store
Sub
Or
I$
Time )clock cycles(
I$
AL
U
Reg
Reg
I$
D$
AL
U
AL
U
Reg
D$
Reg
I$
D$
RegA
LU
Reg Reg
Reg
D$
Reg
D$
AL
U
)In Reg, right half highlight read, left half write(
Reg
I$
الین پایپ گرافیک نمایش
الین پایپ نمودار
1 2 3 4 5 6 7 8 9i IF ID EX MEM WB i+1 IF ID EX MEM WB i+2 IF ID EX MEM WB i+3 IF ID EX MEM WB i+4 IF ID EX MEM WB
پائین به باال از عمودی بصورت دستورات دنباله. میشود داده نشان
راست به چپ از افقی بصورت زمانی سیکلهای. میشود داده نشان
دارای باید داستور اگر 5هر حتی باشد مرحله. باشد نداشته آن به نیازی
پایپ از حاصله سرعت افزایشالین
: باشد زیر بصورت مراحل از یک هر زمان کنید فرضFive steps, take 50, 50, 60, 50, 50 ns respectively
در دستور یک اجرای برای نتیجه به Unpipelined MIPSدر260ns. داشت خواهیم نیاز
ها رجیستر افزودن طوالنی 5nsاگر باشد کرده اضافه تاخیر: داشت خواهد الزم با برابر زمانی مرحله ترین
60 + 5 = 65ns/stage یک در نتیجه دستور Pipelined Mipsدر هر 65nsاجرای
. کشید خواهد طول
Speedup = 260/65 = 4x improvement
Speed Up Equation for Pipelining
pipelined
unpiplined
TimeCycle
TimeCycle
Piped CPI
Unpiped CPI Speedup
Avg. instruction time with pipelining
Avg. Instruction time without pipelining
Pipeline Speedup
Speed Up Equation for Pipelining
pipelined
dunpipeline
TimeCycle
TimeCycle
CPI stall Pipeline CPI Idealdepth Pipeline CPI Ideal
Speedup
pipelined
dunpipeline
TimeCycle
TimeCycle
CPI stall Pipeline 1depth Pipeline
Speedup
Instper cycles Stall Average CPI Ideal CPIpipelined
For simple RISC pipeline, CPI = 1:
Pipeline Depth
Unpiped CPI Ideal CPI
سرعت افزایش هزینه
مراحل اجرای زمان تقریبی ساختن یکساناست سختی کار
بین نمیتوان را افزاری سخت های بلوکسخت از باید و گذاشت اشتراک به مراحل
. کرد استفاده اضافی افزار
الین پایپ طول تاثیر
آن کارائی شود بیشتر الین پایپ طول چه هربدنبال را زیر مسایل امر این ولی میشود بیشتر
: آورد خواهد نتیجه در و تاخیر بروز باعث قطعات بین داده انتقال
. میشود اجرا زمان شدن طوالنی تر پیچیده کنترل واحد میشوند بیشتر ها واحد چه هر
میشود.
Pipeline Hazards
میتواند زیر برخوردهای بروز الین پایپ یک در: گردد کارائی کاهش باعث
منابع در : resource conflictبرخورد ای داده : Data Dependencyوابستگی انشعاب از ناشی : Branch difficultiesمشکالت
منابع در resourceبرخوردconflict :
Structural Hazards برخو نوع واحد راین دو که آید می بوجود وقتی د
هم پیدا زبطور دسترسی حافظه به بخواهند مانکنند.
حافظه دو اختصاص با برخورد این مواقع بعضی در. میشود حل داده و دستور برای جداگانه
شدن آزاد تا دستورات اجرای اینصورت غیر درافتاد خواهد تاخیر به منابع
Read same memory twice in same clock cycle
I$
Load
Instr 1
Instr 2
Instr 3
Instr 4A
LU I$ Reg D$ Reg
AL
U I$ Reg D$ Reg
AL
U I$ Reg D$ RegA
LUReg D$ Reg
AL
U I$ Reg D$ Reg
Instr.
Order
Time (clock cycles)
Structural Hazard Single Memory
Structural Hazard Single Memory
: حل راه حافظه کنار در داده برای مجزا حافظه یک کردن اضافه
. اینکار میتوان اما است هزینه پر کاری دستورات برای ای: کرد عملی ابتکاری با را
دوcache : برای یکی میشود اضافه سیستم به یک سطح. داده برای دیگری و دستورات
دارد نیاز ای پیچیده کنترل مدار به اینکار having two Level 1 Caches
have both an L1 Instruction Cache and an L1 Data Cache
ای داده : Data Hazardوابستگی
نتیجه به دستور یک اجرای که آید می بوجود وقتیبستگی است نشده آماده هنوز که قبلی دستور
باشد داشته 1 2 3 4 5 6 7 8 9
ADD R1, R2, R3 IF ID EX MEM WB
SUB R4, R5, R1 IF IDsub EX MEM WB
AND R6, R1, R7 IF IDand EX MEM WB
OR R8, R1, R9 IF IDor EX MEM WB
XOR R10,R1,R11 IF IDxor EX MEM WB
IF: Instruction fetchID: Instruction decode/register readEX: ExecuteMEM: Memory accessWB: Write Back results in register
Data Hazard
از: بعد دستورات تمام .ADDمثال دارند نیاز آن نتیجه به
Pipeline Stall
شرایط باشد نشده اندیشیده حلی راه صورتیکه در. شد خواهند الین پایپ توقف باعث فوق
نام به افزاری وظیفه Hardware interlockسختتاخیر ایجاد با و داشته عهده بر را برخورد تشخیص
حل را مشکل بعدی دستورات اجرای در الزممیکند.
1 2 3 4 5 6 7 8 9
ADD R1, R2, R3 IF ID EX MEM WB
SUB R4, R5, R1 IF stall stall IDsub EX MEM WB
AND R6, R1, R7 stall stall IF IDand EX MEM WB
Hazard Detection Unit
Stall by letting an instruction that won’t write anything go forward
PCInstruction
memory
Registers
Mux
Mux
Mux
Control
ALU
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Hazarddetection
unit
Forwardingunit
0
Mux
IF/ID
Inst
ruct
ion
ID/EX.MemRead
IF/I
DW
rite
PC
Wri
te
ID/EX.RegisterRt
IF/ID.RegisterRd
IF/ID.RegisterRt
IF/ID.RegisterRt
IF/ID.RegisterRs
RtRs
Rd
Rt EX/MEM.RegisterRd
MEM/WB.RegisterRd
کردن NOPاضافه
با میتوان کامپایلر توسط ای داده وابستگی تشخیص صورت درالین NOP افزودن پایپ توقف از مربوطه دستورات بین در
کرد .جلوگیری
MEM
2 3 4 5 6
ID EX WB
71
IF
IF ID EX MEM
8
WB
ANOP
NOP
B
Register file design: D1: A writes into register $1 in first-half of cycle 5 and B reads it in second half
A : add $1, $2, $3B : add $4, $1, $5
Operand Forwarding مقدار چه اگر که میشویم متوجه فوق مثال در دقت کمی هنوز R1با
مرحله خروجی WBدر در مقدار این اما است نشده نوشته ALUهنوزمرحله خروجی . EXیعنی داشته وجود مداری اگر نتیجه در است موجود
مرحله خروجی از مسیری ایجاد با دهد، تشخیص را امر این که EXباشدورودی وقوع ALUبه از .Data Hazardمیتوان کرد جلوگیری
1 2 3 4 5 6 7
ADD R1, R2, R3 IF ID EXadd MEMadd WB
SUB R4, R5, R1 IF ID EXsub MEM WB
AND R6, R1, R7 IF ID EXand MEM WB
مرحله : دو انجام با دو Operand Forwardingمثال داشتن به نیاز کهورودی به جدید .ALUمسیر شد الین پایپ توقف مانع میتوان است
Operand Forwarding
الین پایپ توقف جز ای چاره زیر مثال مورد درنداریم
1 2 3 4 5 6 7 8 9
LW R1,)R0( IF ID EX MEM WB
SUB R4, R1, R5 IF ID stall EXsub MEM WB
AND R6, R1 R7 IF stall ID EX MEM WB
OR R8, R1, R9 stall IF ID EX MEM WB
Forwarding Logic
A pipeline register contains destination register and write data
A pipeline register upstream contains the same register as source
Forwarding source: ALU output, data memory output
Forwarding target: ALU input, data memory input, zero detection unit input
Many different cases can arise
HW Change for Forwarding
MEM
/WR
ID/E
X
EX
/MEM
DataMemory
ALU
mux
mux
Registe
rs
NextPC
Immediate
mux
Forwarding Unit for R-R Type Instruction
PC
IF EXID MEM WB
MUX
MUX
Forwarding Unit
Forwarding
PCInstruction
memory
Registers
Mux
Mux
Control
ALU
EX
M
WB
M
WB
WB
ID/EX
EX/MEM
MEM/WB
Datamemory
Mux
Forwardingunit
IF/ID
Inst
ruct
ion
Mux
RdEX/MEM.RegisterRd
MEM/WB.RegisterRd
Rt
Rt
Rs
IF/ID.RegisterRd
IF/ID.RegisterRt
IF/ID.RegisterRt
IF/ID.RegisterRs
مرحله دو با کالک از استفاده
مثال دستور Data Hazard زیر در از ADDو ORناشیدر رجیستر در نوشتن که نمود حل صورت این به میتوان را
خواند و کالک اول بیافتد ننیمه اتفاق دوم نیمه در آن از
1 2 3 4 5 6 7 8 9
ADD R1, R2, R3 IF ID EX MEM WB
SUB R4, R5, R1 IF IDsub EX MEM WB
AND R6, R1, R7 IF IDand EX MEM WB
OR R8, R1, R9 IF IDor EX MEM WB
XOR R10,R1,R11 IF IDxor EX MEM WB
کامپایلر کمک
های پردازنده برخورد RISCدر مشکل حل براینام با روشی از استفاده delayed loadدستورات
برخورد تشخیص وظیفه کامپایلر آن در که میشودایجاد مانع دستورات جابحائی با و داشته برعهده را
میگردد برخورد
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
LW Rb, bIF
ID EX M WB
LW Rc, c IF ID EX M WB
Add Ra,Rb, Rc
IF ID stall EX M WB
SW Ra, a
IF stall ID EX M WB
LW Rf, f stall IF ID EX M WB
Sub Rd, Ra, Rf
IF ID stall EX M WB
SW Rd, d
IF stall ID EX M WB
LW Rg, g stall IF ID EX M WB
LW Rh, h IF ID EX MWB
Sub Re, Rg, Rh
IF ID stall EX MWB
SW Re, e
IF stall ID EX M WB
توقف
مثال
شود الین پایپ توقف مانع دستورات جایجائی با میتواند کامپایلر
Instruction
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Explanation
LW Rb, b IF ID EX M WB
LW Rc, c IF ID EX M WB
LW Rf, f IF ID EX M WB
Add Ra, Rb, Rc
IF ID EX M WB Rb read in second half of ID; Rc forwarded
SW Ra, a IF ID EX M WB Ra forwarded
Sub Rd, Ra, Rf
IF ID EX M WB Rf read in second half of ID; Ra forwarded
LW Rg, g IF ID EX M WB
LW Rh, h IF ID EX M WB
SW Rd, d IF ID EX M WB Rd read in second half of ID;
Sub Re, Rg, Rh
IF ID EX M WB Rg read in second half of ID; Rh forwarded
SW Re, e IF ID EX M WB Re forwarded
دستورات جابجائیLW Rb, b
LW Rc, c
Add Ra,Rb, Rc
SW Ra, a
LW Rf, f
Sub Rd, Ra, Rf
SW Rd, d
LW Rg, g
LW Rh, h
Sub Re, Rg, Rh
SW Re, e
LW Rb, b
LW Rc, c
LW Rf, f
Add Ra, Rb, Rc
SW Ra, a
Sub Rd, Ra, Rf
LW Rg, g
LW Rh, h
SW Rd, d
Sub Re, Rg, Rh
SW Re, e
انشعاب از ناشی مشکالت Branch difficulties :
Control Hazards در موجود دستورات از الین پایپ عادی حالت در
صورت در میشود، پر حافظه متوالی های خانهمقدار باید انشعاب، دستور مقصد PCوجود با
جدیدی محل از دستورات و شده پر نظر مورد. شوند اجرا
از جلوگیری برای مختلفی افزاری سخت روشهایدارد وجود برخورد نوع این
الین پایپ توقف
دستور تشخیص محض به که است این راه یکپایپ انشعاب مقصد شدن مشخص تا انشعاب
. کنیم متوقف را الین این انشعاب دستورات تکرار فراوانی به توجه با
تا را الین پایپ کارائی میتواند کاهش 50کار دردهد.
Branch IF ID EX MEM WB
Branch successor
IF(stall) stall stall IF ID EX MEM WB
Branch successor+1
IF ID EX MEM WB
Flushing Instructions
PCInstruction
memory
4
Registers
Mux
Mux
Mux
ALU
EX
M
WB
M
WB
WB
ID/EX
0
EX/MEM
MEM/WB
Datamemory
Mux
Hazarddetection
unit
Forwardingunit
IF.Flush
IF/ID
Signextend
Control
Mux
=
Shiftleft 2
Mux
Branch Prediction . الین پایپ در باشد داشته حالت دو میتواند شرطی انشعاب دستور یک نتیجه
زودتر را انشعاب شرط کردن چک عمل افزار سخت کردن اضافه با میتوانمرحله در . IDمثال مقصد با زودتر الین پایپ نیاز صورت در درنتیجه داد انجام
. میشود پر انشعاب
Untaken Branch Instr
IF ID EX MEM WB
Instr i+1 IF ID EX MEM WB
Instr i+2 IF ID EX MEM WB
Taken Branch Instr
IF ID EX MEM WB
Instr i+1 IF idle idle idle idle
Branch target
IF ID EX MEM WB
Branch target+1
IF ID EX MEM WB
Delayed Branch های پردازنده تشخیص RISCدر انشعاب دستور کامپایلر بکمک
عمل که میشوند جابجا طوری ماشین زبان دستورات و شده داده . کردن جابجا امکان که صورتی در نشود متوقف الین پایپ
دستور نباشد، .NOOPدستورات میشود اضافه: شوند: جابجا کامپایلر توسط میتواند زیر دستورات اجرای مثال
loop: LW R1, 0)R(
ADDI R1,R1,#1
SW R1, 0)R2(
ADDI R2, R2, #4
SUB R4, R3, R2
BENZ R4, loop
از استفاده صورت در الین بصورت forwardingپایپ ی بعد دستور واکشی وبود خواهد زیر
1 2 3 4 5 6 7 8
l: LW R1,0)R2( IF ID EX ME WB
ADDI R1,R1,#1 IF ID stall EX ME WB
SW R1, 0)R2( IF stall ID EX ME WB
ADDI R2,R2,#4 IF ID EX ME WB
SUB R2,R3,R2 IF ID EX ME WB
BENZ R4, l IF ID EX ME WB
if not taken IF idle idle idle
l: (if taken) IF
1 2 3 4 5 6
l: LW R1,0)R2( IF ID EX ME WB
ADDI R2,R2,#4 IF ID EX ME WB
SUB R4,R3,R2 IF ID EX ME WB
ADDI R1,R1,#1 IF ID EX ME WB
BENZ R4, l IF ID EX ME WB
SW R1, 0)R2( IF ID EX ME WB
IF
از استفاده صورت وجابجائی Branch Delayدریاید می در زیر بصورت الین پایپ دستورات
Branch target buffer
حافظه یک الین پایپ واکشی بخش به روش این درانشعاب، به مربوط دستورات که میشود اضافه سریع
. میگردند ذخیره آن در و شده جستجو حافظه این انشعاب دستور مشاهده با
این از نظر مورد دستور ، شدن یافت صورت در. میگردد اجرا حافظه
که روش این از نوعی نامیده loop bufferدردر مربوطه دستورات کل حلقه یک تشخیص میشود،با. میشود استفاده محل این از و شده ذخیره حافظه این
Important Pipeline Characteristics
Latency Time it takes an instruction to go through the
pipe Latency = # stages * stage-delay Dominant feature if there are a lot of
exceptions… Throughput
Determined by the rate at which instructions can start/finish
Dominant feature if there are few exceptions
Improving Performance
Try and avoid stalls! E.g., reorder these instructions:
lw $t0, 0($t1)lw $t2, 4($t1)sw $t2, 0($t1)sw $t0, 4($t1)
Add a “branch delay slot” the next instruction after a branch is always executed rely on compiler to “fill” the slot with something useful
Superscalar: start more than one instruction in the same cycle
Dynamic Scheduling
The hardware performs the “scheduling” hardware tries to find instructions to execute out of order execution is possible speculative execution and dynamic branch prediction
All modern processors are very complicated DEC Alpha 21264: 9 stage pipeline PowerPC and Pentium: branch history table Compiler technology important
Single Cycle, Multiple Cycle, vs. Pipeline
Clk
Cycle 1
Multiple Cycle Implementation:
Ifetch Reg Exec Mem Wr
Cycle 2 Cycle 3 Cycle 4 Cycle 5 Cycle 6 Cycle 7 Cycle 8 Cycle 9Cycle 10
Load Ifetch Reg Exec Mem Wr
Ifetch Reg Exec MemLoad Store
Pipeline Implementation:
Ifetch Reg Exec Mem WrStore
Clk
Single Cycle Implementation:
Load Store Waste
IfetchR-type
Ifetch Reg Exec Mem WrR-type
Cycle 1 Cycle 2