You are on page 1of 37

Chapter 4

The Processor
§4.1 Introduction
Introduction
processor design ‫رح نحكي بهاد التشابتر عن ال‬ ◼

‫ بالتالي رح نتعامل مع مجموعه محدده‬design ‫رح نتعلم االفكار الرئيسيه لنعمل‬ ◼


: ‫ وهي‬instruction ‫من ال‬

◼ Memory reference: lw, sw


◼ Arithmetic/logical: add, sub, and, or, slt
◼ Control transfer: beq, j

‫ الي رح نتعامل معهم ومهم نرجع نتزكر ال‬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

address instruction to be executed


‫ الي بدي انفذه‬next instruction ‫ ال‬address ‫ بأشر ع‬pc ‫◼ ال‬

◼ PC  target address or PC + 4

Lilas qawasmeh
Instruction Execution
2. Decoding
control ‫ ويحدد قيم ال‬instruction ‫ لل‬decoding ‫هون رح ينعمل‬ ◼

‫ الي بدي ياه‬instruction ‫ الي رح تختار ال‬signal


3. Execution
instruction ‫بعتمد ع نوع ال‬ ◼

◼ Use ALU to calculate

◼ Arithmetic result :
arithmetic/logical operation ‫ وبنستخدم ال‬add‫مثل ال‬ ◼

◼ Memory address for load/store :

‫ و بنحتاج‬address ‫ والعمليه الي رح تصير هون هي حساب ال‬sw ‫ و‬lw ‫مثل ال‬ ◼

memory ‫ عل ال‬access
◼ Branch target address

ALU ‫ رح نعمل مقارنه بال‬.1 ◼

target address ‫ رح نحسب ال‬.2 ◼

Lilas qawasmeh
‫‪CPU Overview‬‬
‫▪ هال رح نبلش نتعلم ‪ design‬ال ‪CPU‬‬

‫▪ الي رح نعمله انو رح نشوف كل ‪ instruction‬كيف بشتغل و كيف ال ‪ design‬البسيط‬


‫الو ونرسمه بعدين رح ندمج كل شي مع بعض‬

‫▪ والي رح يتحكم بشو ح يصير هو ال ‪control signal‬‬

‫▪ رح نبلش جزء جزء وبالتفصيل‬

‫▪ بالبدايه رح يكون الشرح الجزء معينه من ال ‪ instruction‬وشوي شوي رح نفوت‬


‫بالتفصيل اكتر ف ركزوا ع الشي الي بكون مكتوب و الباقي كلو رح يتوضح‬

‫▪ الموضوع بسيط بس شوية تركيز‬

‫‪Lilas qawasmeh‬‬
‫‪CPU Overview‬‬
‫رح نبلش بال ‪add instraction‬‬ ‫◼‬

‫◼‬ ‫‪Add $s1, $s2, $s3‬‬


‫تعلمنا انو الي رح يصير كالتالي ‪ :‬بنجمع ‪ s2‬مع ‪ s3‬وبنخزنهم ب ‪s1‬‬ ‫◼‬

‫وحكينا انو ال ‪ register‬كلهم موجودين ب ‪ file register‬ف انا ح اخد‬ ‫◼‬

‫قيتيم منه و اجمعهم‬


‫وعملية الجمع بتصير بال ‪ALU‬‬ ‫◼‬

‫ف هيك فينا نعمل ال ‪ design‬التالي‬ ‫◼‬

‫‪S2‬‬

‫‪S2+S3‬‬
‫‪S3‬‬ ‫‪+‬‬

‫‪Lilas qawasmeh‬‬
‫‪CPU Overview‬‬
‫هالء نيجي لل ‪lw instraction‬‬ ‫◼‬

‫◼‬ ‫)‪lw $s1, 32($s2‬‬


‫تعلمنا انو الي رح يصير كالتالي ‪:‬‬ ‫◼‬

‫رح نجمع ال ”‪ address”32‬مع قيمة ال ‪ register s2‬لنحصل على ال ‪target‬‬ ‫◼‬

‫‪address‬‬
‫وعرفنا انو ال ‪ 32‬بنحصل عليها من ال ‪instruction‬‬ ‫◼‬

‫وعملية الجمع بتصير بال ‪ALU‬‬ ‫◼‬

‫ف هيك فينا نعمل ال ‪ design‬التالي‬ ‫◼‬

‫‪S2‬‬

‫‪S2+32‬‬
‫‪32‬‬ ‫‪+‬‬

‫‪instruction‬‬ ‫‪Lilas qawasmeh‬‬


‫‪CPU Overview‬‬
‫طيب الحظنا انو ال ‪ add‬وال ‪ lw‬بستخدمه ال ‪ ALU‬وانه اول ‪ input‬الها دايما من ال‬ ‫◼‬

‫‪ register file‬والتاني بختلف‬


‫ف مش منطقي استخدم ‪ tow ALU‬بعمله نفس الشي بسبب اختالف ‪ input‬الهم‬ ‫◼‬

‫الي رح نعمله انو رح نستخدم ‪ ALU‬وحده وندخل ال ‪ two input‬ونصير نختار اي وحده‬ ‫◼‬

‫بدي حسب النوع‬


‫الشي الي بستخدمه الختار بين تنين او اكتر هو ال ‪multiplexer‬‬ ‫◼‬

‫‪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

‫ بغير ع قيمة ال‬edge ‫ ف عند ال‬c|k ‫ مشبوكين ب‬register‫ال‬ ◼

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

‫ اذا‬edge ‫ عند ال‬flip flop ‫ رح يسمحلي اكتب ع ال‬write control ‫◼ عنا‬


‫ فقط‬active ‫كان‬

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

‫فيها قيمة ال‬next instruction


beq ‫ او‬jump ‫في حال مافي‬ ◼Lilas qawasmeh
R-Format Instructions
file register ‫ مخزنين بال‬32 register ‫حكينا انو عنا‬ ◼

‫ ل‬write ‫ و‬tow register ‫ ل‬read ‫ بسمحلي اعمل‬file register ‫ال‬ ◼


‫ واحد بنفس الوقت‬register

◼Lilas qawasmeh
R-Format Instructions
◼ Add $s1,$s2,$s3 tow register ‫ال‬
read ‫الي ح اعمللهم‬
register‫ال‬
‫الي ح ينعمله‬
write

op Rs Rt Rd …

‫ االول‬register ‫رقم ال‬


read ‫الي بدي اعملو‬

‫ التاني‬register ‫رقم ال‬


read ‫الي بدي اعملو‬

‫ الي‬register ‫رقم ال‬


write ‫بدي اعمل عليه‬

‫ الي بدي‬data ‫ال‬


Rd ‫اخزنها بال‬ ‫ بستخدمه لما بدي اعدل على ال‬Control
»s2+s3« write register
R-Format Instructions
ALU ‫طيب عملية الجمع حكينا انها رح تصير بال‬ ◼

: ALU ‫خلينا نتعرف ع ال‬ ◼

‫ بتحكم‬Control 2 output ‫ وبتطلع‬2 Input ‫ بتاخد‬ALU ‫ال‬ ◼


‫بنوع ال‬
operation

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 ‫ال‬ ◼

/ / ‫ للمكان الي رح‬address


‫اقراء منو او اكتب عليه‬
32-bit 32-bit

‫ رح‬store ‫اذا بدي اعمل‬


‫ الي بدي‬data ‫ال‬
/ ‫ لل‬active ‫نعمل‬

32-bit
‫اخزنها‬ Memwrite

‫ رح اعمل‬load ‫و بال‬ ◼
Memread ‫ لل‬active
‫ بتحكم‬Control
‫بالقراءه من‬
read register‫ال‬

◼Lilas qawasmeh
Load/Store Instructions
◼ Lw $s1 , 64($s2)

op Rs Rt Offset

‫ الي في‬register ‫ال‬ ‫ الي رح‬register ‫ال‬


base address ‫ال‬ load ‫اعمل عليه‬

target address ‫مشان احسب ال‬ ◼


Offset
offset 32-bit ◼ Target = offset + base
◼ Target = 64 + $rs
16_bit , offset ‫ال‬ ◼

32_bit , rs ‫ال‬ ◼

‫ ويكرره‬bit ‫رح ياخد اخر‬ offset ‫ لل‬sign-extend ‫الجمعهم بعمل‬ ◼

‫ مره‬16

◼Lilas qawasmeh
‫‪Branch Instructions‬‬
‫◼‬ ‫‪Beq $s1,$s2,labels‬‬

‫‪op‬‬ ‫‪Rs‬‬ ‫‪Rt‬‬ ‫‪Offset‬‬

‫◼ بال ‪ beq‬رح نعمل عمليتين بنفس الوقت‬


‫‪ )1‬رح نوجد ال ‪ target address‬عن طريق عمل ‪add‬‬
‫‪target address = pc + offset*4‬‬
‫‪ )2‬رح نعمل ‪ subtraction‬بين قيم ال ‪ , two register‬اذا كان الجواب صفر بعرف انهم‬
‫متساويات وبعمل ‪ branch‬واال ما رح نعمل ‪branch‬‬

‫** عملية ال ‪ subtraction‬رح تكون بال ‪ ALU‬بالتالي رح نستخدم ‪ Add‬خاص لل‬


‫‪address‬‬

‫بالساليد التالي <<‬

‫◼‬‫‪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

‫هون رح يشيك اذا‬


beq‫تحقق ال ل‬

Sign-bit wire
replicated
◼Lilas qawasmeh
‫‪Branch Instructions‬‬
‫رح يحط اول‬ ‫بدنا نوضح الي بصير بال ‪ sign-extend‬وال ‪shift‬‬ ‫◼‬
‫> ‪tow bit‬‬
‫‪zero‬‬ ‫ال ‪ sift‬عملية اعادة ترتيب االسالك‬ ‫◼‬

‫ال ‪ sign-extend‬هي عملية تكرر اخر سلك‬ ‫◼‬

‫‪0‬‬

‫‪0‬‬
‫‪0 bit‬‬
‫‪0 bit‬‬

‫‪15 bit‬‬

‫‪29 bit‬‬ ‫يكرر اخر سلك‬


‫‪31 bit‬‬
‫‪ 16‬مره‬
‫وباقي ال ‪bit‬‬
‫زي ما همه‬

‫◼‬‫‪Lilas qawasmeh‬‬
‫هيك بنكون حكينا عن ‪ 3‬انواع من ال ‪ instruction‬كل واحد لحال‬ ‫◼‬

‫ضل ال ‪ jump‬رح نرجعلو اخر شي‬ ‫◼‬

‫هالء بدنا نشوف كيف بنربطهم ببعض‬ ‫◼‬

‫وكيف بنحدد ال ‪ path‬حسب نوع ال ‪instruction‬‬ ‫◼‬

‫وكيف ح نستخدم ال ‪control signal‬‬ ‫◼‬

‫رح نبلش فيهم بالتدريخ لنفهم ال ‪ full bath‬كامل‬ ‫◼‬

‫◼‬‫‪Lilas qawasmeh‬‬
R-Type/Load/Store Datapath
lw/sw ‫ مع ال‬R-type ‫ لل‬datapath ‫هاي بتمثل ال‬ ◼

ALU ‫ لل‬input ‫بيختلفو بتاني‬ ◼

output ‫وبمكان تخزين ال‬ ◼


input ‫ بتتحكم بال‬ALUSrc control ‫ال‬
Instruction ‫ حسب نوع ال‬ALU ‫التاني لل‬
‫ بتتحكم بال‬MemtoReg control ‫ال‬
‫ لوين‬memory ‫ الي طالع من ال‬output
Instruction ‫رايح حسب نوع ال‬

◼Lilas qawasmeh
‫هاي بتمثل ال ‪ datapath‬السابق مع ال ‪branch‬‬ ‫◼‬

‫‪Full Datapath‬‬ ‫ال ‪ branch‬بتختلف بقيمة ال ‪pc‬‬ ‫◼‬

‫ال ‪ PCSrc control‬بتتحكم بال‬


‫قيمه الي رح ارجعها لل ‪PC‬‬
‫حسب اذا ح يصير ‪ Branch‬او‬
‫الء‬

‫◼‬ ‫‪Lilas qawasmeh‬‬


§4.4 A Simple Implementation Scheme
ALU Control
ALUop ‫ رح يحدد ال‬OpCode ‫ال‬ ◼

ALU Control ‫ رح يحددوا ال‬funCode ‫ مع ال‬ALUop ‫ال‬ ◼

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 ‫حكينا انو ال‬ ◼

‫ حسب المطلوب‬6 ‫ ممكن انفذ اي واحد من ال‬r-type ‫بال‬ ◼

address ‫ لل‬Add ‫ رح تعمل‬ALU ‫ ف دايما ال‬lw/sw ‫اما ال‬ ◼

‫ لحتى تقارن بينهم‬register ‫ لقيم ال‬sub ‫ رح تعمل‬beq ‫وال‬ ◼

ALU control Function


0000 AND
0001 OR ALU control ‫ الو‬func ‫كل‬
‫بعبر عنو‬
0010 add
0110 subtract
0111 set-on-less-than
◼Lilas qawasmeh
1100 NOR
ALU Control
< lw/sw & beq ‫ لل‬funct ‫ال‬
don’t carry
‫ الهم ثابته دائما زي‬operation ‫النو ال‬
‫ما حكينا بالساليد السابق‬

opcode ALUOp Operation funct ALU function ALU control


lw 00 load word XXXXXX add 0010
sw 00 store word XXXXXX add 0010
beq 01 branch equal XXXXXX subtract 0110
R-type 10 add 100000 add 0010
subtract 100010 subtract 0110
AND 100100 AND 0000
OR 100101 OR 0001
set-on-less-than 101010 set-on-less-than 0111

ALU ‫ح يحددو ال‬


Control ◼Lilas qawasmeh
The Main Control Unit
‫عدد مرات‬ ‫ واحد‬datapath ‫ صممنا الهم‬instruction ‫ من ال‬3 format ‫عنا‬ ◼

shift ‫ال‬ ‫ ح نوضحها تحت‬, ‫ بطريقه مختلفه‬instruction ‫ بجزء محتوى ال‬format ‫هالء كل‬ ◼

R-type 0 rs rt rd shamt funct


31:26 25:21 20:16 15:11 10:6 5:0

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

opcode always read, write for


read except R-type sign-extend
for load and load and add
‫ ثابتين‬6 bit ‫ بمثله رقم‬5 bit ‫ بمثله رقم‬5 bit
‫بمثله ال‬ read ‫اول‬ ‫ بمثله رقم‬5 bit write ‫ال‬ ‫ بمثله رقم‬16 bit
opcode ‫ دائما‬register read ‫تاني‬ register offset address ‫ال‬
register
‫ح نعمل‬ ‫رح نزبط ال‬
‫ لقيمة‬increment target address
pc ‫ال‬

opcode ‫جزء ال‬


‫رح يروح ع ال‬
control unit
‫ليحدد جميع ال‬
control signal

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‬‬

‫بتتحكم بقيمة ال ‪ pc‬الي ح ترجع لل ‪pc‬‬


‫حسب وجود ‪ branch‬او الء‬

‫بتتحكم بال ‪ output‬الي طالع من ال‬ ‫بتتحكم بالقراءه من‬


‫‪ memory‬لوين رايح حسب‬ ‫ال ‪memory‬‬

‫بتحدد نوع ال ‪ operation‬بال‬


‫بتتحكم بال ‪ input‬التاني‬ ‫‪ALU‬‬
‫لل ‪ALU‬‬

‫بتتحكم بالكتابه ع‬
‫ال ‪memory‬‬

‫بتتحكم بالكتابه ع‬
‫ال ‪Register‬‬
‫◼‬‫‪Lilas qawasmeh‬‬
‫‪R-Type Instruction‬‬
‫كونا بال ‪ R-type‬رح يكون ال‬
‫‪ branch=0‬بحيث رح ناخد‬
‫كونا بال ‪ R-type‬رح يكون‬
‫قيمة ال ‪ pc+4‬لل ‪pc‬‬
‫ال‪ ALUSrc=0‬بحيث رح‬
‫يكون تاني ‪ input‬لل ‪ALU‬‬
‫من ال ‪register file‬‬

‫كونا بال ‪ R-type‬رح يكون‬


‫ال‪ MemtoReg=0‬بحيث رح‬
‫ناخد القيمه الي نتجة من ال‬
‫‪ ALU‬مباشره ع ال‬
‫‪ Register file‬بدون ما نعمل‬
‫شي بال ‪memory‬‬

‫كونا بال ‪ R-type‬رح يكون ال‬


‫‪ RegDest=1‬بحيث رح اخد ع ال‬
‫‪ write register‬قيمة ال ‪rd‬‬
‫◼‬‫‪Lilas qawasmeh‬‬
‫‪Load Instruction‬‬
‫كونا بال ‪ load‬رح يكون‬
‫كونا بال ‪ load‬رح يكون ال‬
‫ال‪ ALUSrc=1‬بحيث رح يكون‬
‫‪ branch=0‬بحيث رح ناخد‬
‫تاني ‪ input‬لل ‪ ALU‬من ال ‪sign‬‬
‫قيمة ال ‪ pc+4‬لل ‪pc‬‬
‫‪extend‬‬
‫النو رح اجمع ال ‪address‬‬
‫ال ‪ offset‬مع ال ‪base‬‬
‫‪ address‬الموجود ب ‪rs‬‬

‫كونا بال ‪ load‬رح يكون‬


‫ال‪ MemtoReg=1‬بحيث رح‬
‫نقراء من ال ‪ Memory‬قيمة ال‬
‫‪ address‬الي نتج من ال‬
‫‪ALU‬‬
‫وبعدين نخزنها بال ‪file‬‬
‫‪redister‬‬

‫كونا بال ‪ load‬رح يكون ال‬


‫‪ RegDest=0‬بحيث رح اخد ع ال‬
‫‪ write register‬قيمة ال ‪rt‬‬
‫◼‬‫‪Lilas qawasmeh‬‬
‫‪Branch-on-Equal Instruction‬‬
‫كونا بال ‪ Bracch‬رح يكون ال‬
‫‪branch=1‬‬ ‫لنعمل ‪ branch‬الزم يتحقق شرطين ‪:‬‬
‫‪ (1‬ال ‪branch=1‬‬
‫عندما يكون نوع ال ‪instruction = branch‬‬
‫‪ )2‬ال ‪Zero=1‬‬
‫لما يتحقق شرط ال ‪ branch‬بان قيم ال‬
‫‪ regiser‬متساويه‬

‫كونا بال ‪ Bracch‬رح يكون‬


‫ال‪ ALUSrc=0‬بحيث رح يكون‬
‫تاني ‪ input‬لل ‪ ALU‬من ال ‪file‬‬
‫‪register‬‬
‫النو رح اطرح قيمة ال ‪rs – rt‬‬
‫كونا بال ‪ Bracch‬ف قيمة ال‬
‫القارن بينهم‬
‫‪ RegDest‬ما بتهمني النو ما ح‬
‫اكتب ع اي ‪register‬ؤ‬
‫◼‬‫‪Lilas qawasmeh‬‬
Implementing Jumps
Jump 2 address
31:26 25:0

: jump ‫نيجي لل‬ ◼

‫ مباشره بدون اي شرط‬label ‫ اعرفنا انو رح ينقلنا ع مكان ال‬, jump ‫ال‬ ◼

‫ عن‬pc ‫ ونوديه لل‬jump ‫ ال‬address ‫الشي الوحيد الي ح نعمله انو نزبط‬ ◼

wirs ‫طريق ترتيب ال‬


◼ Target = pc[28-31] _ offset _ 00

most significant bit ‫ال‬ ‫ اي ضرب‬shift lift ‫لتعمل‬


pc ‫من ال‬ 26-bit jump address
4‫ب‬

◼Lilas qawasmeh
Datapath With Jumps Added

‫الحظ انو ما ح يستخدم اي من‬


‫ او اال‬ALU ‫ او ال‬register file
Memory
Lilas qawasmeh

‫ التالي‬instruction ‫مثال يوضح سير ال‬ ◼

◼ Add $s1 , $s2 , $s3


increment ‫ح نعمل‬
pc ‫لقيمة ال‬

0
‫ لل‬input ‫تاني‬
‫ رح يكون‬ALU
Reg file ‫من ال‬

s2 0
0
s3
address
instruction
add s1 ‫رح ناخد ناتج ال‬
ALU=
S2+S3
‫رح نقراء‬ 1 ‫ويخزنها بال‬
‫ من‬instruction‫ال‬ Register file
instruction
memory

‫ما ح يعمل اي شي‬


memory ‫بال‬
‫رح نخزن قيمة ال‬ ‫رح يتجزء ال‬ ‫ح يقراء قيم ال‬ ‫رح ينفذ ال‬
‫ ع‬operation instruction register operation
s1 ‫ الي هي‬rd wire ‫على ال‬ $s1&$s3 s2+s3

You might also like