You are on page 1of 11

‫المحاضرة التاسعة ‪ :‬المعالج ‪processer‬‬

‫عند كتابة برنامج بأحد اللغات العالٌة المستوى ٌقوم برنامج الترجمة ‪ compiler‬بتحوٌل البرنامج الى‬
‫برنامج هدفً بالغة األلة‪ .....‬وبعدها ٌتم تحمٌل هذا البرنامج الهدفً فً الذاكرة الرئٌسٌة‪....‬‬
‫األن ٌقوم المعالج بتنقٌد هذا البرنامج على مرحلتٌن‪:‬‬
‫‪ ‬المرحلة األولى مرحلة التجهٌز ‪.FETCH‬‬
‫‪ ‬المرحلة الثانٌة مرحلة التنقٌد ‪.EXECUTE‬‬

‫هناك الكثٌر من أنواع المعالج المتوفرة ‪ ،‬سنقوم بدراسة نوع صغٌر جدا فقط للتوضٌح‪.‬‬
‫ٌحتوي المعالج التوضٌحً على مسجل التعلٌمة ‪ ) IR ) Instruction Register‬لتخزٌن نسخة من‬
‫التعلٌمة المراد تنفٌدها من برنامجنا الموجود فً الذاكرة الرئٌسٌة المراد تنقٌده‪.‬‬
‫( ‪ ) PC‬لتخزٌن عنوان‬ ‫وٌحتوي معالجنا التوضٌحً على مسجل العداد ‪Program Counter‬‬
‫التعلٌمة التالٌة للتنفٌذ فً برنامجنا المراد تنقٌده فً الذاكرة الرئٌسٌة‪.‬‬
‫أٌضا ‪ٌ ،‬حتوي معالجنا التوضٌحً على مسجل ذو أغراض عامة مسجل ‪.Y‬‬

‫أٌضا ٌحتوي معالجنا التوضٌحً ألة للجمع ‪ ADD‬وألة للطرح ‪.SUB‬‬

‫و ‪. Reset Button‬‬ ‫كذلك ٌحتوي معالجنا التوضٌحً ‪Start Button‬‬

‫د‪.‬سمٌر امبارك‬
‫تشغيل المعالج‪:‬‬
‫عند تشغٌل المعالج التوضٌحً تكون محتوٌات مسجل العداد ‪.PC=0‬‬

‫المرحلة األولى مرحلة ‪: FETCH‬مرحلة التجهٌز تتكون من خطوتٌن‪:‬‬

‫الخطوة األولى‪:‬‬
‫ٌتم أخد نسخة من أول تعلٌمة من البرنامج المراد تنقٌده فً الذاكرة الرئٌسٌة السطر صفر وتخزٌنها فً‬
‫مسجل ‪ IR‬بالمعالج التوضٌحً‬

‫)‪IR <------ M(0‬‬

‫الخطوة الثانٌة‪:‬‬
‫تتغٌر محتوٌات مسجل ‪ PC‬لتشٌر الى عنوان التعلٌمة التالٌة للتنفٌذ فً برنامجنا المراد تنقٌده‬

‫‪PC <----- PC + 1‬‬

‫المرحلة الثانية مرحلة ‪EXECUTE‬‬

‫فٌها ٌتم ترجمة وتفسٌر وتنفٌد تعلٌمة برنامجنا الموجود نسخة منها داخل مسجل ‪.IR‬‬

‫األن ٌقوم معالجنا التوضٌحً للرجوع الى مرحلة ‪ FETCH‬من جدٌد لتجهٌر التعلٌمة التالٌة للتنفٌذ فً‬
‫برنامجنا المراد تنفٌذه حٌث ٌشٌر إلٌها قٌمة مسجل ‪PC‬‬

‫)‪IR <------- M(PC‬‬

‫‪PC <------ PC +1‬‬

‫واألن ٌقوم معالجنا التوضٌحً للرجوع الى مرحلة ‪ EXECUTE‬حٌث ٌتم ترجمة وتفسٌر وتنفٌد تعلٌمة‬
‫برنامجنا الموجود نسخة منها داخل مسجل ‪IR‬‬
‫‪....‬‬
‫‪....‬‬
‫وهكذا بٌن مرحلة ‪FETCH‬‬
‫ومرحة ‪EXECUTE‬‬
‫‪....‬‬
‫‪....‬‬
‫الى أٌن تأتً تعلٌمة من برنامجنا المراد تنقٌده فً الذاكرة الرئٌسٌة ٌكون ترجمتها وتفسٌرها النهاٌة‬
‫فٌتوقف المعالج‪.‬‬

‫د‪.‬سمٌر امبارك‬
‫فً مرحلة التنقٌد ‪ٌ EXECUTE‬تم تقسٌم محتوٌات ‪ IR‬الى جزئٌٌن‪:‬‬

‫الجزء األٌسر ‪ٌ :‬تكون من ‪ 3‬خانات )‪ (bits‬الٌسرى وٌسمى‬

‫)‪OPERATION CODE (OP‬‬

‫ومن خالله ٌتم معرفة نوع األمر المراد تنقٌده وذلك بالرجوع الى جدول التعلٌمات الخاص للمعالج‬
‫التوضٌحً ‪.‬‬

‫الجزء االٌمن ‪ :‬وهو باقً الخانات وٌسمى الحقل ‪Z‬‬

‫جدول التعلٌمات ‪ INSTRUCTIONS SET‬الخاص للمعالج التوضٌحً‬

‫‪op‬‬ ‫‪INSTRUCTIONS EXECUATION‬‬


‫‪000‬‬ ‫‪LOADI‬‬ ‫‪Y<----- Z‬‬
‫‪000‬‬ ‫‪STORE‬‬ ‫‪M(Z)<---- Y‬‬
‫‪000‬‬ ‫‪JUMP‬‬ ‫‪PC <----- Z‬‬
‫‪000‬‬ ‫‪LOAD‬‬ ‫)‪Y <----- M(Z‬‬
‫‪000‬‬ ‫‪ADD‬‬ ‫)‪Y <---- Y+M(Z‬‬
‫‪000‬‬ ‫‪SUB‬‬ ‫)‪Y <----- Y- M(Z‬‬
‫‪000‬‬ ‫‪JUMPFL‬‬ ‫‪if FLAG=1‬‬ ‫‪PC<---- Z‬‬
‫‪000 )d=0001( DATAIN‬‬ ‫‪Y<----- EX.DV‬‬
‫)‪000) d=0010‬‬ ‫‪SKIPNG‬‬ ‫‪if Y neg.‬‬ ‫‪PC<---- PC+1‬‬
‫(‪000 )d=0100‬‬ ‫‪STROBE‬‬ ‫‪EX.DV. <--- Y‬‬
‫(‪000 )d=1000‬‬ ‫‪HULT‬‬ ‫‪STOP‬‬

‫د‪.‬سمٌر امبارك‬
‫مثال‪ :‬قم بمتابعة هذا البرنامج‬
‫‪0‬‬ ‫‪00000000000‬‬
‫‪0‬‬ ‫‪00000000000‬‬
‫‪2‬‬ ‫‪00000000000‬‬
‫‪3‬‬ ‫‪00000000000‬‬
‫‪4‬‬ ‫‪00000000000‬‬
‫‪5‬‬ ‫‪00000000000‬‬
‫‪6‬‬ ‫‪00000000000‬‬
‫‪7‬‬ ‫‪00000000000‬‬
‫‪8‬‬ ‫‪00000000000‬‬
‫الحل‪:‬‬
‫عند تشغٌل المعالج التوضٌحً تكون محتوٌات المسجل‬
‫‪PC =0‬‬

‫األن عملٌة ‪FETCH‬‬

‫)‪1- IR <----- M(PC‬‬


‫‪IR= 01100000111‬‬

‫‪2. PC <----- PC +1‬‬


‫‪PC= 1‬‬

‫األن عملٌة ‪EXECUTE‬‬

‫تقسم محتوٌات ‪ IR‬الى‬

‫]‪OP code[011‬‬
‫]‪Z [00000111‬‬
‫بالرجوع الى جدول التعلٌمات الخاص للمعالج التوضٌحً نجد ]‪ OP[011‬تعنً‬

‫عملٌة ‪LOAD‬‬

‫)‪Y <----- M(Z‬‬


‫)‪Y <------M(7‬‬
‫]‪Y=[00000001100‬‬
‫‪Y = 12‬‬

‫د‪.‬سمٌر امبارك‬
‫األن عملٌة ‪FETCH‬‬

‫)‪1- IR <----- M(PC‬‬


‫)‪IR <------ M(1‬‬
‫‪IR <------ 00000000000‬‬
‫‪2- PC <----- PC +1‬‬
‫‪PC <----- 2‬‬
‫األن عملٌة ‪ : EXECUTE‬تقسم محتوٌات ‪ IR‬الى‬

‫]‪OP code[100‬‬
‫]‪Z [00001000‬‬
‫وبالرجوع الى جدول التعلٌمات الخاص للمعالج التوضٌحً نجدد ]‪ OP[100‬تعنً‬

‫عملٌة ‪ADD‬‬

‫)‪Y<----- Y+M(Z‬‬
‫)‪Y <------ 12 + M(8‬‬
‫‪Y <------ 12 + 6‬‬
‫األن عملٌة ‪FETCH‬‬

‫)‪1- IR<------ M(PC‬‬


‫)‪IR <------ M(2‬‬
‫‪IR=01000000101‬‬

‫‪2- PC <------ PC +1‬‬


‫‪PC=3‬‬
‫‪ :‬تقسم محتوٌات ‪ IR‬الى‬ ‫األن عملٌة ‪EXECUTE‬‬

‫]‪OP code [010‬‬


‫]‪Z [00000101‬‬
‫وبالرجوع الى جدول التعلٌمات الخاص للمعالج التوضٌحً نجد ]‪ OP[010‬تعنً عملٌة ‪JUMP‬‬

‫‪PC <----- Z‬‬


‫‪PC = 5‬‬

‫د‪.‬سمٌر امبارك‬
‫األن عملٌة ‪FETCH‬‬

‫)‪0- IR <------ M(PC‬‬


‫)‪IR <------ M(5‬‬
‫‪IR <------00000000000‬‬

‫‪2-PC<----- PC +1‬‬
‫‪PC =6‬‬
‫األن عملٌة ‪ : EXECUTE‬تقسم محتوٌات ‪ IR‬الى‬

‫]‪OP code [000‬‬


‫]‪Z[00010000‬‬
‫وبالرجوع الى جدول التعلٌمات الخاص للمعالج التوضٌحً نجد ]‪ OP [000‬تعنً‬

‫عملٌة ‪LOADI‬‬

‫‪Y <----- Z‬‬


‫]‪Y =[00010000‬‬
‫‪Y = 16‬‬
‫األن عملٌة ‪FETCH‬‬

‫)‪1- IR <----- M(PC‬‬


‫)‪IR <------ M(6‬‬
‫]‪IR =[11100001000‬‬

‫‪2- PC <------ PC +1‬‬


‫‪PC = 7‬‬
‫األن عملٌة ‪ : EXECUTE‬تقسم محتوٌات ‪ IR‬الى‬

‫]‪OP code [111‬‬

‫فً هذه الحالة نحتاج الحقل ‪ d‬وهو ‪4‬خانات الٌمنى من ‪ Z‬وهً [‪]0000‬‬

‫]‪Z[00001000‬‬

‫وبالرجوع الى جدول التعلٌمات الخاص للمعالج التوضٌحً نجد ]‪ OP[111‬والحقل ]‪ d[1000‬تعنً‬

‫عملٌة ‪STOP‬‬

‫فٌقف المعالج عن التشغٌل‬

‫د‪.‬سمٌر امبارك‬
‫مثال ‪ :‬قم بمتابعة هذا البرنامج‬
‫‪0‬‬ ‫‪00000000000‬‬
‫‪0‬‬ ‫‪00000000000‬‬
‫‪2‬‬ ‫‪00000000000‬‬
‫‪3‬‬ ‫‪00000000000‬‬
‫‪4‬‬ ‫‪00000000000‬‬
‫‪5‬‬ ‫‪00000000000‬‬
‫‪6‬‬ ‫‪00000000000‬‬
‫‪7‬‬ ‫‪00000000000‬‬
‫‪8‬‬ ‫‪00000000000‬‬
‫‪9‬‬ ‫‪00000000000‬‬
‫‪00‬‬ ‫‪00000000000‬‬
‫‪00‬‬ ‫‪00000000000‬‬
‫‪02‬‬ ‫‪00000000000‬‬

‫الحل‪:‬‬
‫عند تشغٌل المعالج التوضٌحً تكون محتوٌات‬
‫المسجل ‪PC=0‬‬

‫عملٌة ‪FETCH‬‬

‫)‪1- IR <------ M(0‬‬


‫]‪IR=[00000001010‬‬
‫‪2- PC <----- PC +1‬‬
‫‪PC=1‬‬
‫عملٌة ‪: EXECUTE‬‬

‫]‪OP CODE [000‬‬


‫]‪Z [00001010‬‬
‫‪Y <----- Z‬‬
‫]‪Y=[00001010‬‬
‫‪Y= 10‬‬
‫عملٌة ‪FETCH‬‬

‫)‪1- IR <----- M(1‬‬


‫]‪IR =[00100000100‬‬
‫‪2- PC=2‬‬

‫د‪.‬سمٌر امبارك‬
: EXECUTE ‫عملٌة‬

OP CODE [001]
Z=[00000100]
M(Z) <---- Y
M(4) = 10
M(4)=[00000001010]

FETCH ‫عملٌة‬

1- IR <---- M(2)
IR =[11100000100]
2- PC =3
: EXECUTE ‫عملٌة‬

OP CODE [111]
d ‫نحتاج الحقل‬
d[0100]
STROBE ‫نوع العملٌة‬
EX.DV. <------ Y
FLAG=1 ‫هنا تصبح قٌمة‬
EX.DV. = 10
FETCH ‫عملٌة‬

1- IR <---- M(3)
IR =[11000000111]
2- PC =4
: EXECUTE ‫عملٌة‬

OP CODE [110]
Z [00000111]
JUMPFL ‫التعلٌمة‬
if FLAG =1

‫إذا‬ ‫نعم تحقق الشرط‬


PC <---- Z
PC =7

‫سمٌر امبارك‬.‫د‬
FETCH ‫عملٌة‬

1- IR <----- M(7)
IR =[10100000110]

2- PC = 8
: EXECUTE ‫عملٌة‬

OP CODE [101]
Z =[00000110]
Y <------ Y - M(Z)
Y <----- 10 - M(6)
Y <------ 10 - 15
Y = -5
FETCH ‫عملٌة‬

1- IR <---- M(8)
IR =[11100000010]
2- PC =9
: EXECUTE ‫عملٌة‬

OP CODE [111]
d[0010]
SKIPNG ‫عملٌة‬
‫ إذا‬، ‫نعم تحقق الشرط‬ ‫ سالبة‬if Y
PC<-----PC +1
PC=10
FETCH ‫عملٌة‬

1- IR <----- M(10)
IR =[11100000001]
2- PC =11
: EXECUTE ‫عملٌة‬

OP CODE [111]
DATAIN ‫عملٌة‬ ‫ من الجدول نجد انها‬d[0001]
Y <------ EX.DV
Y =10 / FLAG=0 ‫هنا تصبح قٌمة‬

‫سمٌر امبارك‬.‫د‬
FETCH ‫عملٌة‬

1- IR <----- M(11)
IR =[11100001000]
2- PC = 12
EXECUTE ‫عملٌة‬

OP CODE [111]
d[1000]
STOP

‫سمٌر امبارك‬.‫د‬
‫د‪.‬سمٌر امبارك‬

You might also like