Professional Documents
Culture Documents
اركي شرح ليلاس
اركي شرح ليلاس
First lecture
Slid 7 >
1- Application software
مكتوب بلغه عالية المستوى و يقدم خدمه للمستخدم
2- System software
للمستخدمapplication يهياء المكان المناسب لتشغيل ال
1) High-level language
2) Assembly language
3) Hardware representation
م
,
Second lecture
Response Time and Throughput
• Response time
How long it takes to do a task
• Throughput
Total work done per unit time
عكش مع الوقت
ي ** من هاد القانون بقدر اعرف انو ال Performanceبتتناسب
ف كلما كان الوقت اقل كانت ال Performanceافضل
𝒙 𝒇𝒓𝒆𝒑
• If > 1 → perf x petter than perf y
𝒚 𝒇𝒓𝒆𝒑
𝒙 𝒇𝒓𝒆𝒑
• If <1 → perf y petter than perf x
𝒚 𝒇𝒓𝒆𝒑
𝒙 𝒇𝒓𝒆𝒑
• If = 1 → perf x = perf y
𝒚 𝒇𝒓𝒆𝒑
𝒙 𝒇𝒓𝒆𝒑
• If = n → x is n time fastar than y
𝒚 𝒇𝒓𝒆𝒑
- 1G= 109
• Unit time (sec)
- 10−3 msec
- 10−6 𝜇sec
- 10−9 nsec
- 10−12 psec
- EX: freq = 1 GHz =109 Hz find cycle time?
- Cycle time = 1\109 = 10−9 sec = 1 nsec
Third lecture
ن
بحيث كلcycly عباره عن مجموعه من الCPU clock بالمحاضه الماضيه انو ال حكينا
ن
cycle time معي يسىم الها وقتcycle
Performance improved by
_ Reducing number of clock cycles
_ Increasing clock rate
_ Hardware designer must often trade off clock rate against cycle count
ن
rate او بزيادة الcycle ب تقليل عدد الPerformance تحسي ال يمكن
مثال :
ic Cpi
10x 3
5y 4
5z 2
ن
معي بحتاج لمده زمنيه محدده ليشتغل ف الزم بحكيل :انو لو كان نظام ف هاد القانون
ي
اعرف وين ضاع هاد الوقت
ن
يعن بضل لل other
بحكيل انو ال multiplyبتستهلك %80من الوقت ي
ي هاد السؤال
(الشغالت التانيه ) %20من الوقت
كل خمس مرات
بحكيل كم بحتاج احسن ع ال multiplyبحيث يتحسن االداء ال ي
ي
االصل ن
يعن بدي يصب خمس الوقت
ي الكل 100%Tبدي يحسن خمس مرات ي
هالء الوقت ي
Tnew = T/5 = 0.2T
كالتال
ي العرف كم الزم احسن ع قيمة ال multiplyبعمل
𝑇80%
= Tnew + 20%T
𝑥
𝑇0.8
= 0.2T + 0.2T
𝑥
Example
• 20% of time doing integer instructions
• 35% percent of time doing I/O
?–Which is the better tradeoff
•Compiler optimization that reduces number of
integer instructions by 25% (assume each integer
)instruction takes the same amount of time
•Hardware optimization that reduces the latency of each IO operations
from 6us to 5us
ال ال I/Oبقل من 6ل 𝜇 𝑠𝑒𝑐 5ف شو ح يصب الوقت انو بحكيل ن
تحسي تانطيب ن
ي ي ي
الكل؟
للوقت ي
ن
شغالي عال ال I/O deviceمش ع ال مع شوي بدي تعرفو انو الI/Oهون ركزو ي
ن
المحاضه الماضيه ال اخدناهم ن ن
يعن ما بنطبق عليهم قواني ال timeي
processorي
طيب كيف ح نحسب الوقت الجديد ؟ بستخدم النسبه والتناسب
6 𝜇 𝑠𝑒𝑐 → 0.35
ر
التشابت عن ال Instruction formatو ال memory نحك بهاد _ رح
ي
_ ورح نتعامل مع ال MIPS Processor
_ ال MIPSك unit of speedر
بتعت عن عدد ال instruction per unit of timeبس
تعتت مقياس دقيق النو ما بعرف شو نوعية هاي ال instruction
ه ال ر
ي
ش بينعمل ع ال hardwareارسع من انو ينعمل ع ال softwareبس اذا عملت _ اي ي
ئ
ابط النو بدل ما يتعامل مع basic complete sit يصت
كتت اشياء ع ال hardwareرح ر ر
ئ
ابط بصت ر
بصت معقد اكت و ر بالتال ر
ي رح يتعامل الف instruction
_ال MIPSي
مبن بشكل بسيط ع امل انو يطلع ال softwareارسع من ال hardware
Register Operands:
• Arithmetic instructions use register operands
operands معيني الخزن فيهم ال
ر Register مع انو ح استخدم
هون ح يفرق ي
file register بنحكيلهمRegister مجموعة ال
• MIPS has a 32 × 32-bit register file
31 ل0 ترقيمهم من32-bit كل واحد يف32 register عنديMIPS بال
word بنسميهم32-bit كل
- Numbered 0 to 31
• Assembler names
رمز خاص فيه منهمregister عنا لكلMIPS بال
t بالحرف10 register -
s بالحرف8 register -
قبل$ بانو بنحط اشارةregister ** مهم تنتبه لطريقة كتابة اسم ال
كالتال:
ي مع الحل
ال قبل رح يفرق ي
يعن لو بدنا نرجع للمثال ي
ي
رح نفرض انو ال gمخزنه ع ال s1وال hع ال s2وال iع ال s3وال jع ال s4وال fع s0
ونحط اسم ال registerبدل الحرف
add $t0, $s1, $s2
add $t1, $s3, $s4
sub $s0, $t0, $t1
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Memory Operands :
ش مخزن بال memoryالزم اعرف ال addressتبعه
هالء لما بدي استخدم ي
تعو نتعرف ع memoryال : MIPSي
ه عباره عن
-byte address
-word a line
يعن كل addressعباره عن byte=8-bit
ي
وكل سطر 4byteبمثل wordالنو ال word = 32-bit
طريقتي معروفات
ر نحك عن طريقة تخزين ال dataبالميموري وعنا
ي هالء ح
1) Big Endian: Most-significant byte at least address of a word
ال هو ال Most-significantرح يتخزن ب
بحيل لما بدي اخزن wordف اول byteي
ي
ال رقمه اقل
االدرس ي
مثال لو عندي هاد الرقم بالهيكسا AB-CD-F0-02
كالتال :
ي رفي بنخزنهم ب byte
يعن كل ح ر
كل حرف 4bitي
0 1 2 3
AB CD F0 02
ال هو ال least-significantرح
بحيل لما بدي اخزن wordف اخر byteي
ي هون
ال رقمه اقل
يتخزن ب االدرس ي
~~~~~~~~~~~~~~~~~~
تنتي :
نحك عن العمليات ع الميموري و همه ر
ي هالء ح
1) load (lw) :
ر
للريجست *بنقل ال dataمن الميموري
Form : lw destination , address in memory
EX:
;]C code: g = h + A[8
g in $s1, h in $s2, base address of A in $s3
? Find compiled MIPS code
معطين كل رمز ع اي Registerموجود :
ي ين كود بال cوبدو احوله لكود MIPSو
معط ي
ر
ريجست و ارري وحكينا انو االري بتكون ع الميموري والعمليات هالء عندي عملية جمع ربي
تنتي بس همه " " load and sort ال بقدر اعملها ع الميموري ر
ي
ر
ريجست القدر اجمعها ال بدي ياها من االري ع
ف رح اعمل loadللقيمه ي
كيف بعمل ال load؟
Form : lw destination , address in memory
ر
رجست انا بختاره الخزن يف مثال $t0 ال destinationهو اي
ال address in memoryهو ] address A[8وكيف ح نطلعو حكينا هو عباره عن
Address A[n] = 4*n + base address
Address A[8] = 4*8 + $s3
بنكتبه هيك 32($s3) = 4*n ( base address ) :
بصت الكود عنا :
ف ر
lw $t0, 32($s3) # load word
وبعدين بجمعهم :
Sixth Lecture
op rs rt rd shamt funct
6 5 5 5 5 6
bits bits bits bits bits bits
arithmetic and وتحديدا الMIPS بالInstruction هو عباره عن طريقه لكتابة ال
معي
اش رال فوق بتدل ع ي
بحيث انو كل خانه من ي, shift Instruction
• Instruction fields:
- op: operation code (opcode)
format بحددل كيف اعرف نوع ال
ي
"000000" تحديدا بكونوR-format و بال
- rs: first source register number
ر
" source register" ريجست رقم اول
- rt: second source register number
ر
" source register" ريجست تان
رقم ي
ش برقم
اعت عن كل ي
ان ر
ثالت خطوه ي
مع
وحكينا انو كل registerالو رقم الزم اكون حافظه اما الفنكشن ف بكون ي
op rs rt constant or address
6 5 5 16
bits bits bits bits
Immediate arithmetic and load/store لكتابة الformat بستخدم هاد ال
instructions
Instruction fields:
- op: operation code (opcode)
- rs , rt first and second register number
ورحload/store اوImmediate arithmetic و عل شو بدلو بالزبط بتختلف ازا كان
اوضحها كمان شوي
- constant or address
Shift Operations:
حكينا انو بستخدمله ال R-Formatوانو خانة ال shamtبتمثل عدد مرات ال shift
◼ Shift left logical
** مالحظه :
وال بساوي 14
يصت 01110ي
ال بساوي 7وعملتله sllرح ر
مع الرقم 00111ي
لو ي
يعن بنالحظ انو عمليت ال Shift left logicalكانها عملية ضب ب 2طيب لو عملت sll
ي
مرتي كانو ضب ب 4طيب ثلث مرات ضب ب 8وهيك بستنتج القاعده : ر
** ** sll by i bits multiplies by 2i
Seventh Lecture
Conditional Operations:
بصت ::
فالكود كامل ر
Compiled MIPS code:
Loop: sll $t1, $s3, 2
add $t1, $t1, $s6
)lw $t0, 0($t1
bne $t0, $s5, Exit
addi $s3, $s3, 1
j Loop
… Exit:
~~~~~~~~~~~~~~~~~~~~~~~~~~
More Conditional Operations:
Slt: set one if less than
كالتال :
ي الصيغه الو
slt rd, rs, rt
;if (rs < rt) rd = 1; else rd = 0
كالتال :
ي وممكن يكون Immediateبانو يقارن ربي محتوى registerوعدد ثابت
slti rt, rs, constant
;if (rs < constant) rt = 1; else rt = 0
االنستكشن ر
اكت بس ال ر رح يكون عددsoftware يف حال كان ع ال-
اكت
ابسط ورسعته رhardware
Eighth Lecture
ر
باالنستكشن هو ال offsetوهو بحدد كم wordبدي ابعد عن ال pc ال
ال addressي
مع ؟
ال ي
طيب كيف بنحصل عل ال target addressمن ال offsetي
ال عنا بكون word_ addressوانو memoryال MIPS احنا اعرفنا انو ال addressي
ه عملية
عباره عن byte_ addressف الزم اضبه ب " 4عملية الضب ب 4بالبايتي ي
لتي " "00للرقم "
اضافة مت ر
يعن ال addressي
ال بدي اروحله هو عباره عن وين مكان ي
ي طيب انا عرف كم الزم ابعد عن
انا هالء " " pcوكم بدي ابعد
Target address = PC + offset × 4
- Note :
ال بدي انفذه 1) pc : ر
هو ادرس النكست انستكشن ي
2) PC already incremented by 4 by this time
op address
6 26
bit bits
ال قبل انو عباره عن wordوبدي اضبه ب 4بس هون
ال addressهون نفس فكرت ي
كالتال
ي بقرق عندي انو 26-bitف رح اتعامل معه
اليمي "للضب ب "4ر )1بضيف 2bitع
)2بضيف 4bitع الشمال من ال PC31…28
EX:
ال معوالجزئي ي
ر العرف ال offsetالزم اتخلص من
كبت
ش رال الرينج الهم ربي 2و 2وهو ي
31 28
بتعت عن اخر 4bitيمع 8000وال pcر ال يالرقم ي
بالتال فيه اشيلهم وما بأثره ع القيمه
ي مع ف حيكونه اصفارال يع الرقم ي
اما بالنسبه للصفرين ف همه اجو من الضب ب 4بتخلص منهم بالقسمه ع 4
8000 /4=2000
بالتال ال offsetيساوي 2000
ي
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
مع 32-bit
** اما بال jumpف ي
EX:
beq $s0,$s1, L1
L2: …..
.
.
……L1 :
كالتال
ي كتت عن ال Beqح اعدل ع الكود
لو كانت ال L2بعيده ر
نحك عن ال normalized
ي بس قبل ما نبلش يف رح
Normalized :
يعن ان يكون ع شمال الفاصله" "one non zero digitبس عدد واحد وما يكون صفر
ي
نغي ع قيمته مثال
طيب لما بدنا نعمل normalizedلرقم decimal numberبدون ما ر
109 > 1.09 * 102
0.025 > 2.5 * 10-2
7.87676 > already normalized
طيب لو كان < binary
)1حكينا ع شمال الفاصله الزم عدد واحد و ما يكون صفر ف بحالة ال binaryرح
يكون دايما 1النو ما عنا اال 0و 1
)2تذكر اساس ال binaryهو 2
1101 > 1.101 * 23
0.011 > 1.1 * 2-2
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
S:
1. + > 0
2. - > 1
اول bitبتمثل اشارة الرقم اذا كان موجب 0واذا كان سالب 1
EXPONENT :
تعي عن االس و االس الو شاره مختلفه ممكن يكون موجب او سالب ,ف ممكن
رح ر
نستخدم ال two’s complement
ه signed magnitudeف
لكن عنا بال formatال Fractionبال unsignedو ال sي
وجدو انو تمثيل ال two’s complementمعهم رح يغلب
بنيج بنضيف ل
ف حكو بدل ما نمثلهم ك signed numberبال two’s complementر ي
كل رقم bias valueبحيث تعمله موجب ,ورح نوضحها بمثال
Fraction:
باف ال Bitاصفار
ال Fractionرح ناخده زي ما هو و بحطه بمكانه و بضيف ي
0 10000010 0100110...00
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
EX 3 :
0 11000111 00011010…000
كاالتال
ي بنعمل
1.fraction * 2exp-127
Fraction = 00011010
Exp = 110001112 => 19910
1.00011010 * 2199-127
1.00011010 * 272
~~~~~~~~~~~~~~~~~~~~~~~~
Note ::
بعد االفصله ر6-decimal digit يسمح بتمثيلSingle precision ال
العشيه
اكي
ال قبله بس هون الحجم ر
بنتعامل معه بنفس طريقة ي
2) Exponent = 1111 1111 & Fraction=Non zero >> not a number
الي رح نتعامل معهم ومهم نرجع نتزكر الinstruction بس هاي ال ◼
الهم ونكون فاهمينها وحافظينهاformat
Lilas qawasmeh
Instruction Execution
؟instruction كيف بنفذ ال ◼
1. fetch instruction
النو ماCPU للmemory من الinstruction ◼ هي عملية انو اقراء ال
memory ح اشتغل عليه وهو بال
هاد الaddress بديmemory من الinstruction ◼ طيب الجيب ال
PC بكون موجود بالaddress
◼ PC (program counter ) : instruction memory , Store
◼ PC target address or PC + 4
Lilas qawasmeh
Instruction Execution
2. Decoding
control ويحدد قيم الinstruction للdecoding هون رح ينعمل ◼
◼ Arithmetic result :
arithmetic/logical operation وبنستخدم الaddمثل ال ◼
و بنحتاجaddress والعمليه الي رح تصير هون هي حساب الsw وlw مثل ال ◼
memory عل الaccess
◼ Branch target address
Lilas qawasmeh
CPU Overview
▪ هال رح نبلش نتعلم designال CPU
Lilas qawasmeh
CPU Overview
رح نبلش بال add instraction ◼
S2
S2+S3
S3 +
Lilas qawasmeh
CPU Overview
هالء نيجي لل lw instraction ◼
address
وعرفنا انو ال 32بنحصل عليها من ال instruction ◼
S2
S2+32
32 +
الي رح نعمله انو رح نستخدم ALUوحده وندخل ال two inputونصير نختار اي وحده ◼
M
u
x
S
instruction
Lilas qawasmeh
Combinational Elements
: الي رح نستخدمهمgate بعض ال ◼
◼ AND-gate ◼ Adder A
Y
+
◼ Y=A&B ◼ Y=A+B B
A
Y
B
◼ Arithmetic/Logic Unit
◼ Multiplexer ◼ Y = F(A, B)
◼ Y = S ? I1 : I0
A
I0 M
u Y ALU Y
I1 x
B
S F
Lilas qawasmeh
Sequential Elements
◼ Register: stores data in a circuit
◼ Uses a clock signal to determine when to update the
stored value
◼ Edge-triggered: update when Clk changes from 0 to 1
register
Clk
D Q D
Clk Q
Lilas qawasmeh
◼
Sequential Elements
◼ Register with write control
Only updates on clock edge when write control input
◼
is 1
◼ Used when stored value is required later
Clk
D Q
Write
Write
Clk D
◼Lilas qawasmeh
Clocking Methodology
◼ Combinational logic transforms data during
clock cycles
◼ Between clock edges
◼ Input from state elements, output to state
element
◼ Longest delay determines clock period
Instruction Fetch
increment رح تعملinstruction وعرفنا اول ما يبلش تنفيذ الpc حكينا عن ال ◼
next instruction لتروح ع ال4 بمقدار
pc والناتج رح يرجع ع الadd بستخدام4 معpc ف رح اجمع ال ◼
Increment by
4 for next
instruction
32-bit
register
◼Lilas qawasmeh
R-Format Instructions
◼ Add $s1,$s2,$s3 tow register ال
read الي ح اعمللهم
registerال
الي ح ينعمله
write
op Rs Rt Rd …
input اول
/ 1 بتكونflag هاي
32-bit لما يكون ال
input تاني result =0
/
/ 32-bit
32-bit ناتج ال, output ال
operation
◼Lilas qawasmeh
Load/Store Instructions
بتحكمControl store والload ال ◼
بالكتابه على ع الaccess بيعملو
write registerال
memory
اليaddress ال
بدي اخزن عليه بتاخد الmemory ال ◼
32-bit
اخزنها Memwrite
رح اعملload و بال ◼
Memread للactive
بتحكمControl
بالقراءه من
read registerال
◼Lilas qawasmeh
Load/Store Instructions
◼ Lw $s1 , 64($s2)
op Rs Rt Offset
32_bit , rs ال ◼
مره16
◼Lilas qawasmeh
Branch Instructions
◼ Beq $s1,$s2,labels
◼Lilas qawasmeh
Branch Instructions
Pc+4 >
increment pc
Target address
pc
Offset*4
Lilas qawasmeh
◼
: ** الي رح يصير
Branch Instructions register من الrt وrs رح يقراء ال
ويشيكALU وبعدين رح يطرحهم بالfile
zero controlع ال
ما بعمل0 واذاbranch بعمل1 اذا كان
branch
op Rs Rt Offset
Just
re-routes
wires
Sign-bit wire
replicated
◼Lilas qawasmeh
Branch Instructions
رح يحط اول بدنا نوضح الي بصير بال sign-extendوال shift ◼
> tow bit
zero ال siftعملية اعادة ترتيب االسالك ◼
0
0
0 bit
0 bit
15 bit
وباقي ال bit
زي ما همه
◼Lilas qawasmeh
هيك بنكون حكينا عن 3انواع من ال instructionكل واحد لحال ◼
◼Lilas qawasmeh
R-Type/Load/Store Datapath
lw/sw مع الR-type للdatapath هاي بتمثل ال ◼
◼Lilas qawasmeh
هاي بتمثل ال datapathالسابق مع ال branch ◼
OpCode / ALUOP /
6-bit 2-bit
/ ALU
Control
funCode / 4-bit
6-bit
◼Lilas qawasmeh
§4.4 A Simple Implementation Scheme
ALU Control
◼ ALU used for
◼ Load/Store: F = add
◼ Branch: F = subtract
◼ R-type: F depends on funct field
6-function رح تعملALU حكينا انو ال ◼
shift ال ح نوضحها تحت, بطريقه مختلفهinstruction بجزء محتوى الformat هالء كل ◼
Load/
35 or 43 rs rt address
Store
31:26 25:21 20:16 15:0
Branch 4 rs rt address
31:26 25:21 20:16 15:0
Rs
Rt
الaddress في
اليinstruction Rd
بدي انفذه
offset
رح نقراء
منinstructionال
instruction
memory
رح اقراء او اكتب
memory ع ال
رح يتجزء ال ح يقراء قيم ال sign رح نعمل رح ينفذ ال
instruction register للextend operation
wire على ال المطلوبه offset المطلوبه
Datapath With Control
رح تتحكم بال bitالي داخلين ع ال write registerبحيث بحالة ال
R-Typeبناخد جزء ال rdاما بال lo/swبناخد جزء rt
بتتحكم بالكتابه ع
ال memory
بتتحكم بالكتابه ع
ال Register
◼Lilas qawasmeh
R-Type Instruction
كونا بال R-typeرح يكون ال
branch=0بحيث رح ناخد
كونا بال R-typeرح يكون
قيمة ال pc+4لل pc
ال ALUSrc=0بحيث رح
يكون تاني inputلل ALU
من ال register file
مباشره بدون اي شرطlabel اعرفنا انو رح ينقلنا ع مكان ال, jump ال ◼
عنpc ونوديه للjump الaddress الشي الوحيد الي ح نعمله انو نزبط ◼
◼Lilas qawasmeh
Datapath With Jumps Added
0
للinput تاني
رح يكونALU
Reg file من ال
s2 0
0
s3
address
instruction
add s1 رح ناخد ناتج ال
ALU=
S2+S3
رح نقراء 1 ويخزنها بال
منinstructionال Register file
instruction
memory
Lilas qawasmeh
Performance Issues
بضل عنا مشكله انو لما بدي اعمل jumpمثال رح انجبر استنى وقت ◼
وانو بالوقت الي انا بعمل في fetchمثال بكون شغاله ع ال memory ◼
Lilas qawasmeh
§4.5 An Overview of Pipelining
Pipelining Analogy
خلينا ناخد مثال من شي عملي بحياتنا لنفهم ◼
الفكره
ح نحكي عن الغسيل وهو بتضمن اربع عمليات ◼
Lilas qawasmeh
§4.5 An Overview of Pipelining
Pipelining Analogy
◼ Pipelined laundry: overlapping execution
◼ Parallelism improves performance
◼ Four loads:
◼ Speedup
= 8/3.5 = 2.3
لما كررنا العمليه2.3 السرعه زادة تقريبا ◼
مرات4
◼ Non-stop:
رقمn من المرات بحيثn طيب لو كررناها ◼
◼ Speedup
= 2n/0.5n + 1.5 ≈ 4
= number of stages
Lilas qawasmeh
MIPS Pipeline
5 stages رح نقسمه لfullpath • طيب لنحل مشكلة ال
: كالتالي
1. IF: Instruction fetch from memory
2. ID: Instruction decode & register read
3. EX: Execute operation or calculate address
4. MEM: Access memory operand
5. WB: Write result back to register
Lilas qawasmeh
Pipeline Performance
بتحتاج الوقت التاليstage رح نفرض كل ◼
اليstages كم رح يحتاج وقت حسب الinstruction طيب خلينا نشوف كل نوع من ال ◼
بحتاجها
lw اكتر اشي بحتاج وقت هو ال ◼
Lilas qawasmeh
Pipeline Performance
800ps رح تحتاجcycle كلfullpath كان ع الdesign لو حكينا ال ◼
Lilas qawasmeh
Pipeline Performance
طيب لو عدلنا ليصير ع ال Pipelineمدة كل ال stageالزم يكونو ◼
Lilas qawasmeh
Pipeline Performance
طيب لو بدنا نحسب ال speedup ◼
تأثيرها قليل
ح يطلع تقريبا ال Speedup =4 ◼
ما طلع 5ع عدد ال stagesالنو زدنا وقت stageمن 100ل 200 ◼
Lilas qawasmeh
Pipeline Speedup
◼ If all stages are balanced
◼ i.e., all take the same time
◼ Time between instructionspipelined
= Time between instructionsnonpipelined
Number of stages
◼ If not balanced, speedup is less
◼ Speedup due to increased throughput
◼ Latency (time for each instruction) does not
decrease
Pipelining and ISA Design
◼ MIPS ISA designed for pipelining
◼ All instructions are 32-bits
◼ Easier to fetch and decode in one cycle
◼ c.f. x86: 1- to 17-byte instructions
◼ Few and regular instruction formats
◼ Can decode and read registers in one step
◼ Load/store addressing
◼ Can calculate address in 3rd stage, access memory
in 4th stage
◼ Alignment of memory operands
◼ Memory access takes only one cycle
Hazards
المشاكل الي رح تواجهنا بال pipeline ◼
رح نحكي عن هاي المشاكل بتفصيل اكتر ونالقي حلول بالساليد الجاي ,ف اذا مش كتير
واضحه مش مشكله
Lilas qawasmeh
Structure Hazards
◼ Conflict for use of a resource
◼ In MIPS pipeline with a single memory
◼ Load/store requires data access
◼ Instruction fetch would have to stall for that
cycle
◼ Would cause a pipeline “bubble”
◼ Hence, pipelined datapaths require
separate instruction/data memories
◼ Or separate instruction/data caches
Data Hazards
حكينا انو ال data hazardsانو بكون عنا instructionبعتمد ع قيمة dataبتنتج ◼
زي هاد المثال ال subبتحتاج قيمة ال s0وبنالحظ انو ال addبتغير ع قيمة ال s0 ◼
قبل ما نبلش بالحل ولحتى نفهمه في شغله مهمه الزم نعرفها ◼
Lilas qawasmeh
Data Hazards
اول حل عنا وهو انو نستنى فتره بين ال instructionلحتى تجهز قيمة s0وتتخزن ◼
ال bubbleبتاخرلي ال instructionالي بدي ياه لحتى اكون جاهز استخدمه ◼
ال codeالي بدي انفذه يعني عم اضيع وقت بلى ما اعمل شي ليجهز الي بدي ياه
ال dataالي بدي ياها من ال addبتكون جاهزه بال WB Stageبحيث انو بالنص ◼
االول بعمللها writeوبالنص التاني بتكون جاهزه وبقدر اعمللها readبشكل صحيح
بالتالي الزم ال ID stageلل subما تبداء قبل ما اصل ال WB Stageبال add ◼
Lilas
Data Hazards
بعملrea ما بعمل بعمل writeل ناتج الجمع ع
بعمل fetch بجمع
dلل شي بال s0بالنص االول من ال
لل add t0+t1
t0,t1 mem cycle
ال bubble
الحظ بلش يعمل بعملو على تاخير
fetchلل subلما instructionال sub
كان ال addبال Two cycle
MEM stageبدل
من وهو بال ID
stage
الفكره الي عنا انو قيمة ال s0بتجهز بنهاية ال EX stageو انا بستنى two ◼
cycleلحتى يخزنها وارجع اقرئها ,بالوقت الي انا بهمني قيمة ناتج الجمع بس
الستخدمها بال sub
فالحل التاني انو اعمل forwardingوهو اني استخدم قيمة s0الي هي ناتج الجمع ◼
Lilas qawasmeh
)Forwarding (aka Bypassing
ناتج الجمع بعمل writeل ناتج الجمع ع
بعمل read بجمع
هون بكون s0بالنص االول من ال
بعمل fetch لل t0,t1 t0+t1
جهز cycle
لل add
بعمل fetch
لل sub هون رح يصيرعنا خيارين
الحظ ما بعمل readلل s0 ورح احتاج احط
رح ناخد ناتج الجمع
ضيعت وال اي ورح يقراء قيمه غلط multiplexerيختارلي
والي هو بمثل القيمه
cycle النو ال s0لسا ما الصح
الصح الي بدي ياها
تخزنة
Lilas qawasmeh
Load-Use Data Hazard
بس الزم نعرف انو ال forwardingمش دايما بقدر استغني في عن ال bubble ◼
بالتالي الحل الي ضل عنا انو نستنى cycleلحتى يكون قراء القيمه من ال memory ◼
solution
طريقة ال recodingوهي انو اعيد ترتيب ال codeاذا بقدر بطريقه انو ااخر ال ❑
Beq $1,$2,label
Any instruction
Lilas qawasmeh
Stall on Branch
اول حل هو انو نبكر عملية ال branchبحيث انو بال ID stageرح نعمل ال ◼
مقارنه بين ال registerونحسب ال target addressبالتالي بنكسب cycle
الي ح يصير انو عملية المقارنه فينا نحسبها ب extra getوهي ال xnor + ◼
and
رح تتوضح اكتر كيف بتخلص ال branchبال ID stageبس هالء المهم نعرف ◼
انو فينها نخلصها ابكر
هون ال معناتو ال next instructionرح يستنى one cycle ◼
branchرح
تخلص
Lilas qawasmeh
Branch Prediction
تاني حل هو ال < branch predictionبنحاول نحزر وين ال branchرح ◼
توديني اذا حزرت صح بكمل وبكون حققت ال full speedواذا حزرت غلط
بحذف الي عملته وببلش بالصح
لو كان الي عنا whileبنكون رح نكررها nمن المرات ف بنفرض انو ال ◼
branchدائما takenالنو رح تزبط nمن المرات ومره وحده ما رح تزبط
اما بأي كود عادي ف غالبا ال branchرح تكون not takenالنو ما في معنى ◼
من انو اكتب كود ودائما اقفز عنو ,هي بتصير takenبحاالت معينه مثل ال
errorاو ال special case
Lilas qawasmeh
MIPS with Predict Not Taken
Prediction
correct
Prediction
incorrect
اذا كان الفرض غلط
رح نعمل الي فرضنا
bubbleيعني ح نصفر كل
ال controlالو بحيث ما
يأثر ع ال codeوبعدين رح
نبداء بالصح
ف رح نضيع بس one
cycle
Lilas qawasmeh
More-Realistic Branch Prediction
عنا نوعين من ال : predication ◼
القادمه
يعني اذا الفرض takenوالكود طلع not takenرح نخلي الفرض للمره الجاي not taken ◼
Lilas qawasmeh
Branch Prediction
بس رح يضل عنا مشكلتين ◼
االولى :اذا كنت بدي احزر انها takenوانا بال ID stageما بعرف شو ال target ◼
addressاال لتخلص ال stage
التانيه :كيف بدي اعرف انو ال instructionالي عندي branchوانا ب stageال ◼
fetch؟
لحتى اتحزر الزم اكون متاكد انو انا عندي branchوانا بال fetch stage ◼
Lilas qawasmeh
Pipeline Summary
The BIG Picture
MEM
Right-to-left
flow leads to WB
hazards
Lilas qawasmeh
Pipeline registers
◼ Need registers between stages
مشان نخزن في المعلومات اللي بتلزم الstages بين الregister بنحتاج يكون عنا ◼
Pipeline
registers Lilas qawasmeh
Pipeline Operation
وحدهcycle خاللdatapath
◼ “multi-clock-cycle” diagram
cycle خالل مجموعه من الinstruction توضيح شو ح يصير لل ◼
Lilas qawasmeh
We’ll look at “single-clock-cycle”
diagrams for load & store
Lilas qawasmeh
IF for Load, Store, …
instruction للfetch » رح نعملIF “fetch” stage بال ◼
Target address
offset والregister قيم ال
Lilas qawasmeh
MEM for Load
target قيمة الmemory » رح نقراء من الMEM “memory” stage بال ◼
address
Lilas qawasmeh
WB for Load
register ع الread data » رح نخزن قيمة الWB “write bake” stage بال ◼
instr رح يكون صار فيWB stage بالload هون ح يصير عنا مشكله انو لما ال ◼
write مختلف الو رقمinstr رح يكون عناID stage ف بالstage مختلفين بباقي ال
غلطreg عwrite بالتالي رح يعملload غير الي للreg
Wrong
register
number
Read data Lilas
qawasmeh
Corrected Datapath for Load
wb لحتى اصل للstage معنا عبر كل الwrite reg لنحل المشكله رح ناخد رقم ال ◼
الصحreg واكتب ع ال
reg الموجوده بالwrite data وياخد الaddress رح يحسب الEX stage بال ◼
معو
next stage لهيك باخدها معي ع الwrite data ف بنالحظ هون انو الي بهمني هو ◼
Target address
+ write data
Lilas qawasmeh
WB for Store
ما رح نعمل شيWB stageبال ◼
Lilas qawasmeh
مالحظه :بالمثالين السابقات كنا عم نتتبع تنفيذ ال lw/swع ال single- ◼
clock-cycleو كنا نشوف كيف بنتقل عبر ال stage
بدي تعرفو انو باقي ال stagesما رح يكونو فاضين ,يعني رح يكون فيهم ◼
instructionمختلفين بس نحنا كان بهمنا نشوف ال lw/sw
هالء خلونا نشوف كيف بنرسم ال , Multi-Cycleالي حكينا انها رح تعبر ◼
عن مجموعة instخالل اكتر من cycle
Lilas qawasmeh
Multi-Cycle Pipeline Diagram
◼ Form showing resource usage
Lilas qawasmeh
Multi-Cycle Pipeline Diagram
◼ Traditional form
Lilas qawasmeh
Single-Cycle Pipeline Diagram
◼ State of pipeline in a given cycle
Lilas qawasmeh
Pipelined Control (Simplified)
الي حكينا عنها وحكينا انو فيناdata hazard هالء بدنا نحل مشكلة ال ◼
Lilas qawasmeh
Dependencies & Forwarding
Lilas qawasmeh
مثال : ◼
Lilas qawasmeh
Cycle 1 :
Lilas qawasmeh
Cycle 2 :
ما عنا اي مشاكل لهالء,sub للfetch بنعمل, next stage “ID” ح تنتقل للadd ال ◼
Lilas qawasmeh
Cycle 3 :
و ح بنعملID stage ح تنتقل للsub و ال, next stage “EX” ح تنتقل للadd ال ◼
and للfetch
$1 رح تقراء قيمه غلط للsub هون ال ◼
Lilas qawasmeh
Cycle 4 :
ال addح تنتقل ل” , ”MEMو ال subح تنتقل لل ” “EXوال andح تنتقل لل ” “IDو ◼
Or $5,$2,$5 ID and $6,$7,$1 EX sub $4,$1,$5 MEM add $1,$2,$3
Lilas qawasmeh
Cycle 5 :
ال addح تنتقل ل” , WBو ال subح تنتقل لل ” “MEMوال andح تنتقل لل ”“EX ◼
fetch or EX and $6,$7,$1 MEM sub $4,$1,$5 WB add
$1,$2,$3
Lilas qawasmeh
هالء عرفنا وين ال data hazardصارت تعو نحلها ◼
Lilas qawasmeh
Cycle 4 :
اما مكان القيمه الي ح ينعمللها forwardح تكون اما بال EX/MEM regاو بال ◼
MEM/WB reg
ف رح نضيف two muxعند كل inputلل ALUوكل muxرح يختار بين 3قيم :
Lilas qawasmeh
Forwarding Paths
Lilas qawasmeh
Forwarding Paths
ال forwardرح يصير ل
rsبالتالي رح نشغل
خلينا نشوف كيف ح ينفذ عليها لل : cycle 4 ◼
forwardA
وكونو ال addبال exف
رح ناخد القيمه الي جاي
EX sub $4,$1,$5 MEM add $1,$2,$3
من EX/MEM reg
Lilas qawasmeh
Forwarding Conditions
؟active متى رح يكونforward طيب ال ◼
destination بغير ع قيمة الinstruction بصير لما يكون عناforward هالء ال ◼
رح يعدل ع قيمة الinstruction الي بخلينا نميز انو الcontrol signal طيب شو ◼
؟؟destination register
اال لما بدنا نعدل ع قيمةactive الي ما بكونcontrol signal هي الRegwrite ال ◼
Lilas qawasmeh
Detecting the Need to Forward
: تلخيص للحكي السابق
Lilas qawasmeh
Forwarding Conditions
طيب تاني شي هو انو يكون ال instructionالي بعده بعتمد ع قيمة destination ◼
register
وهاد الشي بنعرفه اذا تساوى رقم ال destination registerمع رقم ال rsاو rtلل ◼
instructionالتاني
طيب عرفنا انو ال forwardبتصير بين two instructionو انو ال instruction ◼
Lilas qawasmeh
Detecting the Need to Forward
: تلخيص للحكي السابق
01
»m« 00في حال ما عنا forward ◼
10
»u« 01في حال كان ال forwardمن ◼
01
ال MEM stage
10
forwardعال rs
او forwardBبتحكم بقيمة ال ◼
forwardعال rt
Lilas qawasmeh
Forwarding Paths
هالء صرنا نعرف انو اذا قيمة ال ◼
01
regيعني ال instrبال MEMبتساوي
واحد «ما بتساوي صفر» معناتو الي
10
برجع ع ال forwardمن ال MEM
يعني ح نختار »10« xمن ال mux
00
01
اما اذا كانت Regwriteالموجوده بال ◼
10
MEM/WBهي الي قيمتها واحد يعني
ال instrبال WBبتساوي واحد «ما
بتساوي صفر» معناتو الي برجع ع ال
forwardمن ال WBيعني ح نختار u
« »01من ال mux
Lilas qawasmeh
Forwarding Paths
بس بهمنا كمان مع قيمة ال Regwrite ◼
01
شو ال regالي رح يصير الو forward
10
00
EX/MEMاو بال MEM/WBبتساوي
قيمة rsبال ID/EX
01
10
معناها انو ال ForwardAهو ال ◼
active
ForwardBهو ال active
Lilas qawasmeh
Forwarding Conditions
: تلخيص للحكي السابق
◼ EX hazard
◼ if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRs))
ForwardA = 10
◼ if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRt))
ForwardB = 10
◼ MEM hazard
◼ if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)
and (MEM/WB.RegisterRd = ID/EX.RegisterRs))
ForwardA = 01
◼ if (MEM/WB.RegWrite and (MEM/WB.RegisterRd ≠ 0)
and (MEM/WB.RegisterRd = ID/EX.RegisterRt))
ForwardB = 01
Lilas qawasmeh
Forwarding Conditions
: توضيح الشرط
◼ EX hazard
◼ if (EX/MEM.RegWrite and (EX/MEM.RegisterRd ≠ 0)
and (EX/MEM.RegisterRd = ID/EX.RegisterRs))
ForwardA = 10
بعدل على قيمة الinstr ال تساوي صفر «هيك يعني عناstage بنفس الRd
»destination register
اليRs register » بساوي رقمEX/MEM« stage بهاي الRd واذا كان رقم ال ◼
Lilas qawasmeh
Double Data Hazard
◼ Consider the sequence:
add $1,$1,$2
add $1,$1,$3
add $1,$1,$4
الحظ انو هون بقدر اعمل forwardمن ال two stageالنو الشرط الي حطينا بتحقق فيهم التنين ◼
طيب القيمه الصح الي الزم اعمللها forwardواوديها لل EXهي القيمه االحدث يعني القيمه ◼
EX stage منforward الزم ما يكون فيMEM stage من الforward لحتى يصير في ◼
Lilas qawasmeh
Load-Use Hazard Detection
خلينا نشوف شو كيف ح نتعامل مع ال data hazardبحالة ال ”load “lw ◼
لو بدنا نطبق عليها نفس Forwardالي عملنا قبل شوفو شو الي ح يصير ◼
ف لما تكون ال addبال EXال lwرح تكون بال MEMف ما رح تكون قيمة ال $1 ◼
جاهزه بالتالي الزم نستخدم ال bubbles
Lilas qawasmeh خلينا نشوف شو ح يصير بكل cycle ◼
Cycle 1 :
lw للfetch بنعمل ◼
Fetch Lw $1,8($2)
Lilas qawasmeh
Cycle 2 :
ما عنا اي مشاكل لهالء,add للfetch بنعمل, next stage “ID” ح تنتقل للlw ال ◼
Lilas qawasmeh
Cycle 3 :
و ح بنعملID stage ح تنتقل للadd و ال, next stage “EX” ح تنتقل للlw ال ◼
Lilas qawasmeh
Cycle 4 :
ال lwح تنتقل ل ” ”MEMبس ما بدي ال addتتحرك لل ” next stage ”EXوبدي ◼
Lilas qawasmeh
Cycle 4 :
وهيك للباقيEX ح تنتقل للadd ” و الWB” ح تنتقل لlw ال ◼
bubble
fetch ID next inst EX Add $3,$1,$4 WB Lw $1,8($2)
Lilas
qawasmeh
Datapath with Hazard Detection
بتحدد اذا ح يصير رحbubble بحال عنا
او الءbubble تعمل كل ال بعد التعديلdatapath هيك ح يصير ال ◼
control=0
Lilas qawasmeh
Load-Use Hazard Detection
طيب شو الشي الي بخليني اعرف انو عندي lw؟ ◼
ال MemReadلما يكون , 1حيث انو ال MemReadما بتكون واحد اال ◼
بحالة ال lwالنها الحاله الوحيده الي بقراء فيها من ال memory
بال ثلث ساليد التاليه عم يشرح نفس الفكره بس ع ال Multi-Cycleبدل من ال ◼
single-Cycle
Lilas qawasmeh
Load-Use Data Hazard
Need to stall
for one cycle
Lilas qawasmeh
Stall/Bubble in the Pipeline
Stall inserted
here
Lilas qawasmeh
Stall/Bubble in the Pipeline
Or, more
accurately…
Lilas qawasmeh
Datapath with Hazard Detection
بحيث رح يسمح للbubble اذا ما عناactive رح يكونIF/IDWrite Control
IF/ID register يخزن ع الnext instruction بعد التعديلdatapath شكل ال
بحيث ما رح يسمح انو نغير على الdicactive رح يكونbubble اما اذا كان عنا
IF/ID register
next cycle الي معو للinstruction ليحافظ على ال
PC/Write
رحControl
اذاactive يكون
bubble ما عنا
بحيث رح يسمح
يقراء قيمةpc لل
next ال
instruction
اما اذا كان عنا
رحbubble
يكون
disactive
بحيث ما يقراء
instruction
جديد ويحافظ ع
قيمة ال
instruction
الي معو لل
next cycle Lilas qawasmeh
Branch Hazards
حكينا عن ال Branch Hazards ◼
رح نضيف
رح نضيف Branchبال ID stage
xnorو and
adderيحسبلنا
بعملو ك عملية
ال target
مقارنه «هل
address
يساوي »
طيب كيف ح نعمل هاد الشي ؟ ◼
Lilas qawasmeh
§4.8 Control Hazards
Branch Hazards
◼ If branch outcome determined in MEM
Flush these
instructions
(Set control
values to 0)
PC
Lilas qawasmeh
Reducing Branch Delay
◼ Move hardware to determine outcome to ID
stage
◼ Target address adder
◼ Register comparator
◼ Example: branch taken
36: sub $10, $4, $8 branch اما بعد التعديل ونقل عمليات ال
40: beq $1, $3, 7 لل
44: and $12, $2, $5 bed لو اجينا لهاد المثال ف لما اصل ال
48: or $13, $2, $6 والand الزم احدد شو الي ح يتنفذ «ال
» lw ال
52: add $14, $4, $2
56: slt $15, $6, $7 خلينا نشوف شو الي رح يصير
...
72: lw $4, 50($7)
Lilas qawasmeh
Reducing Branch Delay
◼ Move hardware to determine outcome to ID
stage
◼ Target address adder
◼ Register comparator
◼ Example: branch taken
36: sub $10, $4, $8 branch اما بعد التعديل ونقل عمليات ال
40: beq $1, $3, 7 ID stage لل
44: and $12, $2, $5 bed لو اجينا لهاد المثال ف لما اصل ال
48: or $13, $2, $6 والand الزم احدد شو الي ح يتنفذ «ال
52: add $14, $4, $2 » lw ال
56: slt $15, $6, $7
خلينا نشوف شو الي رح يصير
...
72: lw $4, 50($7)
Lilas qawasmeh
Example: Branch Taken
رح نعمل fetchلل inst هون ح يحدد قيمة ال
الي بعده لحتى تعرف شو targetو قيمة ال
الصح بنقرر نكمل او نغير branch
Lilas qawasmeh
Example: Branch Taken
للfetch رح يعمل
رح نحط هون beq رح تنتقل ال في حال كانت ال
الي عند الinst ورحnext stageلل taken» beq
bubble
lw وهو الtarget تكون قيمتها جاهزه
Lilas qawasmeh
Data Hazards for Branches
عنا مشكله تانيه وهي اذا صار عنا data hazardsمع ال branch ◼
المشكله انو نحنا صرنا بدنا قيم ال registerبال ID stageبدل ال EXبالتالي بدنا ◼
القيم ل Stageقبل يعني قبل ب cycle
Lilas qawasmeh
Data Hazards for Branches
ف الموضوع بنحل بالData Hazards او اكتر عناinst بbeq اذا كان قبل ال ◼
… IF ID EX MEM WB
Lilas qawasmeh
Data Hazards for Branches
R- وكان من نوع الData Hazards مباشره بينهمbrq الي قبل الinstr اما اذا كان ال ◼
beq stalled IF ID
Lilas qawasmeh
Data Hazards for Branches
load وكان من نوع الData Hazards مباشره بينهمbrq الي قبل الinstr اما اذا كان ال ◼
beq stalled IF ID
beq stalled ID
Lilas qawasmeh
Branch Prediction
ساليد مكرر بس ارجعوا اتذكروا الي حكينا هون
< branch predictionبنحاول نحزر وين ال branchرح توديني اذا حزرت ◼
صح بكمل وبكون حققت ال full speedواذا حزرت غلط بحذف الي عملته
وببلش بالصح
لو كان الي عنا whileبنكون رح نكررها nمن المرات ف بنفرض انو ال ◼
branchدائما takenالنو رح تزبط nمن المرات ومره وحده ما رح تزبط
اما بأي كود عادي ف غالبا ال branchرح تكون not takenالنو ما في معنى ◼
من انو اكتب كود ودائما اقفز عنو ,هي بتصير takenبحاالت معينه مثل ال
errorاو ال special case
Lilas qawasmeh
Branch Prediction
يعني فينا نحكي اذا كان ال branchبعمل jumpلالعلى معناها غالبا رح يكون ◼
taken
اما اذا كان بعمل jumpلالسفل ف غالبا رح يكون not taken ◼
Lilas qawasmeh
More-Realistic Branch Prediction
ساليد مكرر بس ارجعوا اتذكروا الي حكينا هون
القادمه
يعني اذا الفرض takenوالكود طلع not takenرح نخلي الفرض للمره الجاي not taken ◼
Lilas qawasmeh
Branch Prediction
لو فرضنا قيم ال brachطلعة كالتالي : ◼
Lilas qawasmeh
Dynamic Branch Prediction
Dynamic Branch Prediction عنا نوعين من ال ◼
» بتحكيلي انو اذا توقعت غلط رح اغير الفرض مباشرهOne bit Prediction نبلش بال ◼
NT
Not
Taken
Taken
T
NT رح نغير الفرض لNT اما اذا اجىT رح نضل ع الT واجىT لو كان فرضنا ◼
Lilas qawasmeh
Branch Prediction
لو فرضنا قيم ال brachطلعة كالتالي : ◼
لو بنحل ع ال One bit dynamic branch predictionوكان الفرض taken ◼
Lilas qawasmeh
1-Bit Predictor: Shortcoming
لو كان عنا nested loobواستخدمنا ال 1-Bit Predictorالي رح يصير كالتالي : ◼
… outer:
…
… inner:
…
beq …, …, inner
…
beq …, …, outer
لما ينفذ ال innerاول مره بضل ياخد Tلحتى يكملها الول مره وبس يغلط ح ◼
Lilas qawasmeh
2-Bit Predictor
الية عمل : 2-Bit Predictor ◼
بنبلش الفرض من ال strong takenاذا طلع takenرح اضل ع نفس الفرض اما ازا غلط ◼
الول مره وطلع not takenف رح يضل فرضنا takenبس ح يصير week
هالء اذا رجع طلع معنا not takenيعني غلطنا كمان مره رح نعدل ع الفرض ويصير not ◼
بس في حاله ممكن يغير بغلط واحد وهي اذا غيرت الفرض وصرت ع ال week not taken ◼
وبعديه اجى takenف رح يغير لل taken
فينا نحكي انو اذا كان فرضنا strongبدي غلطين ليغيروا بس اذا كان weekبتغير من اول ◼
غلط
Lilas qawasmeh
2-Bit Predictor
: 2-Bit Predictor توضيح الية عمل ◼
strong week
strong week
Lilas qawasmeh
Branch Prediction
لو فرضنا قيم ال brachطلعة كالتالي : ◼
لو بنحل ع ال two bit dynamic branch predictionوكان الفرض taken ◼
االولى :اذا كنت بدي احزر انها takenوانا بال ID stageما بعرف شو ال target ◼
addressاال لتخلص ال stage
التانيه :كيف بدي اعرف انو ال instructionالي عندي branchوانا ب stageال ◼
fetch؟
لحتى اتحزر الزم اكون متاكد انو انا عندي branchوانا بال fetch stage ◼
Lilas qawasmeh
Branch Prediction buffer
الstage وانا بbranch الي عنديinstruction كيف بدي اعرف انو ال ◼
؟fetch
يعني ما عندي اي معلومه عنو غير الIF stage بالinstruction لما يكون ال ◼
» الوaddress «الpc
Branch Prediction
buffer Lilas qawasmeh
Branch target buffer
» كيف اعرف الtaken« prediction وكان الbranch طيب اعرفت انو ◼
؟target address
ويحسبلي ياهID stage الزم نستنى ليكمل ال ◼
طيب كونو ما اخدنا ال addressلل instructionكامل ,كيف اتاكد انو هاد نفس ◼
ال instructionالي عندي ؟
بال bufferفي جزء بمثل ال tagوهو بحتوي على باقي ال bitاللي لل ◼
addressف بس االقي ال indexرح اقارن هل ال tagالي في نفس تكملة ال
addressعندي
اذا اه رح اكون عرفت ال targetلل instructionالي معي ◼
IF وانا بالBranch Prediction buffer بس الفكره الي بتهمنا انو اذا عندي ◼
next instruction بقدر ابلش احزر شو ال
اال بالbranch ما رح اعرف انو عناBranch Prediction buffer وبدون ال ◼
ID stage
”ليالس قواسمه“