سازمان ثبات های عمومی

Download Report

Transcript سازمان ثبات های عمومی

‫مهدی ایل بیگی‬
‫دانشگاه پیام نور دماوند‬
‫• ‪ :ALU‬مجری دستورات‬
‫• ‪ :CU‬ایجاد سیگنال های کنترلی الزم‬
‫• ‪ :REGISTERS‬ذخیره داده های میانی‬
‫مجموعه ثبات‬
‫واحد کنترل‬
‫‪ALU‬‬
‫‪2‬‬
‫• سازمان تک انباره ای‬
‫• سازمان ثبات های عمومی (چند ثباتی)‬
‫• سازمان پشته ای‬
‫‪3‬‬
‫• همواره یکی از اپرندها آکوموالتور است‪.‬‬
‫• نتایج عملیات به آکوموالتور انتقال داده می شود‪.‬‬
‫‪BUS‬‬
‫‪4096*16 RAM‬‬
‫‪ADDRESS‬‬
‫‪AR‬‬
‫‪PC‬‬
‫‪DR‬‬
‫‪AC‬‬
‫‪ALU‬‬
‫‪INPR‬‬
‫‪IR‬‬
‫‪TR‬‬
‫‪OUTR‬‬
‫‪4‬‬
‫• در این رش از چنند ثبنات عمومنوی‪GENERAL REGISTERS‬‬
‫استفاده می شود‪.‬‬
‫• تمننامی ثبننات هننا مننی توانننند بننه عنننوان اپراننند دسننتورا م هننای ‪ ALU‬بکننار‬
‫برده شوند‪( .‬هم ب نوان مبداء ش هم ب نوان مقصد)‬
‫• مثال‪ :‬رجیسترهای داده در پردازنده پنتیوم‪.‬‬
‫‪5‬‬
‫ورودی‬
‫حافظه‬
R1
R2
R3
R4
R5
R6
R7
DEC
SelA
MUX1
MUX2
A
SelB
B
SelD
Operation
ALU
6
‫بخش های مختلف یک دستورا م ‪:‬‬
‫•‬
‫• انتخاب عم در ‪ 5( ALU‬بیت)‬
‫• انتخاب رجیسترهای مبداء‬
‫– مو تی پلکسر ‪ 3(1‬بیتی)‬
‫– مو تی پلکسر ‪ 3( 2‬بیتی)‬
‫• انتخاب رجیستر مقصد‬
‫– دیکدر (‪ 3‬بیتی)‬
‫‪7‬‬
‫‪3‬‬
‫‪3‬‬
‫‪3‬‬
‫‪5‬‬
‫‪D‬‬
‫‪S2‬‬
‫‪S1‬‬
‫‪OP-CODE‬‬
‫• پشته یک ساختار )‪ Last In First Out (LIFO‬است‪.‬‬
‫• دش عم اصلی رشی پشته قاب انجام است‪ PUSH :‬ش ‪POP‬‬
‫• دسترس ن ی طق ن بننه عنصننر بنناالی پشننته امکانر ن یر اسننت ش ب نرای دسترس ن ی بننه ای ن عنصننر‬
‫‪SP = STACK‬‬
‫طقن یننک اشنناره زننر نینناز دارآننم کننه نننام آن‬
‫‪ POINTER‬می باشد‪.‬‬
‫• در ابتندا مقندار ‪ SP = 0‬منی باشند ش اش نین عنصنر در خاننه شنماره ‪ 1‬درج منی زنردد‪ .‬ش‬
‫آخرآ عنصر در آدرس ‪ 0‬ذخیره خواهد شد‪.‬‬
‫• پن ازنر ‪ SP = 0‬شنود ش عملینات قبلنی درج باشند پشنته پنر خواهند شند ش ازنر ‪SP‬‬
‫‪ = 0‬شود ش عملیات قبلی ح ف باشد پشته خالی خواهد شد‪.‬‬
‫‪8‬‬
‫• رآز عم های الزم برای انجام عملیات ‪ ،Push‬بشرطی که پشته پر نباشد‪:‬‬
‫‪SP ← SP+1‬‬
‫‪M[SP] ← DR‬‬
‫اگر مدردار ‪ SP‬مر ب ب ابر بررا ‪ 111‬باشرد بررا ‪IF (SP=0) THEN (FULL←1) //‬‬
‫اعم ر ر ر ررال در در شر ر ر ر ر ه ‪ SP‬ب ابر ر ر ر ر ‪000‬‬
‫‪EMPTY ← 0‬‬
‫خواهد شد و این یعنی ش ه پ است‪.‬‬
‫• رآز عم های الزم برای انجام عملیات ‪ Pop‬بشرطی که پشته خالی نباشد‪:‬‬
‫]‪DR ← M[SP‬‬
‫‪SP ← SP-1‬‬
‫‪IF (SP=0) THEN (EMPTY←1) //‬‬
‫بررا ‪ 001‬باشرد بررا‬
‫‪ SP‬ب ابر ر ر ‪000‬‬
‫‪FULL ← 0‬‬
‫اگر مدردار ‪ SP‬مر ب ب ابر‬
‫اعم ر ررال حر ر ر ا شر ر ر ه‬
‫خواه ررد ش ررد و ای ررن یعن رری شر ر ه خ ررا ش ررده‬
‫است‪.‬‬
‫‪9‬‬
‫• یکننی از کاردردهننای پشننته‪ ،‬ارزآنناتی عبننارات م اسننباتی مننی باشنند‪ .‬ا بتننه ای ن عب نارات باینند‬
‫به شک هستانی )‪ (Postfix‬نمایش داده شود‪.‬‬
‫• مثال‪A*B+C/D => Polish Notation = AB*CD/+ :‬‬
‫• عملیات الزم برای م اسبه عبارت طوق با استفاده از پشته‪:‬‬
‫‪B‬‬
‫‪A‬‬
‫مح ویات‬
‫شه‬
‫‪D‬‬
‫‪C‬‬
‫‪A*B‬‬
‫‪C/D‬‬
‫‪A*B‬‬
‫‪10‬‬
‫‪A*B+ C/D‬‬
‫‪PUSH A‬‬
‫‪PUSH B‬‬
‫)‪MUL // (POP,POP, PUSH A*B‬‬
‫‪PUSH C‬‬
‫‪PUSH D‬‬
‫)‪DIV // (POP,POP,PUSH C/D‬‬
‫)‪ADD // (POP,POP, PUSH RESULT‬‬
PUSH A
POP A
SP ←SP-1
MEM[SP] ←A
A ←MEM[SP]
SP ←SP+1
1
SP ←SP+1
MEM[SP] ←A
A ←MEM[SP]
SP ←SP-1
2
MEM[SP] ←A
SP ←SP-1
SP ←SP+1
A ←MEM[SP]
3
‫سه‬

‫ه‬
1,3
2,3
1,2
11
‫• پشته ثباتی‪ :‬استفاده از ت دادی ثبات برای پیاده سازی پشته‪:‬‬
‫– شآژگی ها‪:‬‬
‫• سرعت دسترس ی باال‬
‫• قیمت زآاد‬
‫• ت داد کم خانه های پشته‬
‫• پشته حاطظه ای‪ :‬استفاده از قسمتی از حاطظه به عنوان پشته‪:‬‬
‫– شآژگی ها‪:‬‬
‫• سرعت دسترس ی پایین‬
‫• ارزان‬
‫• حجم زآاد‬
‫‪12‬‬
‫• ‪ CPU‬تک انباره‪:‬‬
‫– م موال یک اپرند آکوموالتور است‪.‬‬
‫– دستورات ارجاع به حاطظه‪ ،‬تک آدرس ی خواهند بود‪.‬‬
‫• ‪ CPU‬چندثباتی‪:‬‬
‫– اپرندها ثبات هستند‪.‬‬
‫– دستورات سه آدرس ی ( یا دش آدرس ی)‪.‬‬
‫• ‪ CPU‬ش ه ای‪:‬‬
‫– اپرند تنها مردوط به دستورات ‪ Push‬ش ‪ Pop‬می باشد‪.‬‬
‫– دستورات یک آدرس ی ش صفر آدرس ی‪.‬‬
‫‪13‬‬
‫• برای بررس ی ای موضوع به مقایسه یک عملیات یکسنان در چهنار حا نت مختلنف بنرای‬
‫آدرس دهی می پردازآم‪:‬‬
‫• مثال‪ :‬م اسبه ‪ A*B+C/D‬با استفاده از‪:‬‬
‫– دستورات سه آدرس ی‬
‫– دستورات دش آدرس ی‬
‫– دستورات یک آدرس ی‬
‫– دستورات صفرآدرس ی‬
‫‪14‬‬
‫• م اسبه ‪ A*B+C/D‬با استفاده از دستورات سه آدرس ی‪:‬‬
‫‪MUL R1, A, B‬‬
‫‪DIV R2, C, D‬‬
‫‪ADD R3, R1, R2‬‬
‫• م اسبه ‪ A*B+C/D‬با استفاده از دستورات دش آدرس ی‪:‬‬
‫‪R1, A‬‬
‫‪R1, B‬‬
‫‪R2, C‬‬
‫‪R2, D‬‬
‫‪R1, R2‬‬
‫‪15‬‬
‫‪MOV‬‬
‫‪MUL‬‬
‫‪MOV‬‬
‫‪DIV‬‬
‫‪ADD‬‬
LDA
MUL
STA
LDA
DIV
ADD
PUSH
PUSH
MUL
PUSH
PUSH
DIV
ADD
:‫ با استفاده از دستورات تک آدرس ی‬A*B+C/D ‫م اسبه‬
•
:‫ با استفاده از دستورات صفر آدرس ی‬A*B+C/D ‫م اسبه‬
•
A
B
TEMP
C
D
TEMP
A
B
C
D
16
‫• قا ب دستورا م ها شابسته به نوع طراحی ‪ CPU‬است‪.‬‬
‫• بخش های مختلف یک دستورا م ‪:‬‬
‫– ‪OP-CODE‬‬
‫– آدرس ( حاطظه ‪ ،‬ثبات ‪)....‬‬
‫– شیوه آدرسدهی‬
‫• طول دستورا م ‪:‬‬
‫– می تواند ثابت باشد‪.‬‬
‫– می تواند متغیر باشد‪.‬‬
‫• تنوع دستورا م ها‪:‬‬
‫– کامریوترهای ‪( CISC‬دارای ت داد زآادی دستورا م )‬
‫– کامریوترهای ‪( RISC‬دارای ت داد کمی دستورا م )‬
‫‪17‬‬
‫ک ننامریوتر ه ننای مانن نند س ننری ‪ 80×86‬اینت ن ش س ننری ه ننای ب نناالتر مث ن پنتی ننوم‪ ،‬از دس ننته‬
‫‪ CISC‬بشمار می رشند‪.‬‬
‫در ای کامریوترها ت داد دستورا م ها زآاد (‪ 100‬تا ‪ )500‬است‪.‬‬
‫دارای دستورا م هایی هستند که ندرتا استفاده می شوند‪.‬‬
‫دارای رش های آدرسدهی متنوع (‪ 5‬تا ‪ 20‬رش ) می باشند‪.‬‬
‫در ای کامریوترها قا ب دستورات با طول متغیر می باشد‪.‬‬
‫در ای کامریوترها دستوراتی با عملوند حاطظه ای شجود دارند‪.‬‬
‫در ای کامریوترها برنامه نویس ی آسان است‪.‬‬
‫دارای دستورا م هایی هستند که کارهای زآادی انجام می دهند‪.‬‬
‫در ای کامریوترها دیکد کردن دستورات به طول می انجامد‪.‬‬
‫در ای کامریوترها دسترس ی به عملوند های حاطظه ای زمانبر است‪.‬‬
‫در ای کامریوترها کار کامرایلر ساده است‪.‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪18‬‬
‫‪19‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫در ای کامریوترها ت داد دستورات کم است‪.‬‬
‫دارای رش های آدرس دهی کمی هستند‪.‬‬
‫دارای رجیسترهای زآادی می باشند‪.‬‬
‫در ای کامریوترها اپرندها همواره در رجیسترها هستند‪.‬‬
‫مراج ات به حاطظه تنها در دستورات ‪ load‬ش ‪ store‬می باشد‪.‬‬
‫در ای کامریوترها دستورات با طول ثابت می باشند‪.‬‬
‫اجرای هر دستور در یک سیک زمانی صورت می پ یرد‪.‬‬
‫شاحد کنترل سخت اطزاری طراحی می زردد‪.‬‬
‫برنامه های ای کامریوتر طوالنی خواهند شد‪.‬‬
‫سرعت اجرای برنامه ها باال خواهد بود‪.‬‬
‫دیکد دستورات سریع می باشد‪.‬‬
‫استفاده از پرداز ‪ pipeline‬بصورت کارا‪.‬‬
‫استفاده از پنجره های همروشان برای طراخوانی سریع زآردرنامه ها‪.‬‬
‫•‬
‫در ‪ RISC‬برای طراخوانی زآردرنامنه هنا از پشنته هنای حاطظنه ای بنرای ارسنال پارامترهنا شرشدی ش‬
‫درآاطن ننت پارامترهن ننای خرشمن ننی اسن ننتفاده نمن ننی شن ننود‪ ،‬ش بجن ننای آن از پنجن ننره هن ننای ثبن نناتی همروشن ننان‬
‫استفاده می زردد‪.‬‬
‫•‬
‫پنجره های ثباتی همروشان دارای‪:‬‬
‫– ثبات های م لی (‪ )local‬برای نگهداری متغیرهای م لی می باشند‪.‬‬
‫– ثب ننات ه ننای عم ننومی (‪ )global‬بن نرای نگه ننداری پارامتره ننای مش ننتر ب ننین هم ننه رشآ ننه ه ننا م ننی‬
‫باشند‪.‬‬
‫– ثبات های مشتر با‬
‫• پنجره قبلی برای درآاطت پارامترهای شرشدی می باشند‪.‬‬
‫• پنجره ب دی برای ارسال پارامترهای خرشمی می باشند‪.‬‬
‫‪20‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪21‬‬
‫هر زآردرنامه ثبات های همروشان (پنجره) مخصوص به خود را دارد‪.‬‬
‫اشاره زری شجود دارد که به پنجره ط ال اشاره دارد‪.‬‬
‫با طراخوانی هر زآردرنامه ای اشاره زر یک شاحد اطزایش می یابد‪.‬‬
‫با باززشت از زآردرنامه ای اشاره زر یک شاحد کاهش می یابد‪.‬‬
‫با طراخوانی زآردرنامه‪:‬‬
‫‪ .1‬پارامترهای ارسالی را در بخش مشتر (با رشآه ب دی) قرار می دهیم‪.‬‬
‫‪ .2‬اشاره زر را یک شاحد اطزایش می هیم‪.‬‬
‫‪ .3‬پ ن از اج نرای زآردرنام ننه پارامتره ننای باززش ننتی را در بخ ننش مش ننتر (ب ننا رشآ ننه قبل ننی)‬
‫قرار می دهیم‪.‬‬
‫‪ .4‬اشاره زر را کاهش می دهیم‪.‬‬
common
win1
local
:‫تعداد ثبات های قابل دسترس ی توسط ه دریچه‬
Windows Size = L + 2C + G
common
win2
local
: ‫تعداد کل ثبات های مورد نیا در پ دا شگ‬
common
Total = W(L + C) + G
local
win3
common
General
Registers
win4
local
common
22
‫• مشخصات ای ‪:CPU‬‬
‫– رجیسترهای ‪ 32‬بیتی‬
‫– قا ب دستورات ‪ 32‬بیتی‬
‫– ت داد دستورات = ‪31‬‬
‫– رش های آدرسدهی‪:‬‬
‫• بالطص‬
‫• ثباتی‬
‫• نسبی‬
‫‪23‬‬
‫• یکی از شآژگی های ‪ CISC‬رش های مت دد آدرسدهی حاطظه می باشد‪.‬‬
‫• در هر دستورا م ت دادی از بیت ها م ین کننده نوع آدرس دهی هستند‪.‬‬
‫• تنوع رش های آدرس دهی‪ ،‬زمان اجرا را اطزایش می دهد‪.‬‬
‫‪ADDRESS‬‬
‫‪24‬‬
‫‪ADD-MODE‬‬
‫‪OP-CODE‬‬
‫‪ -1‬آدرس دهی ضمنی‪ :‬عملوند در خود دستور مستتر است‪ .‬مثال‪:‬‬
‫– ‪CMA‬‬
‫– ‪CLE‬‬
‫‪ -2‬آدرس دهی بالطص ‪ :‬خود عملوند (ش نه آدرس آن) در دستور قرار داده می شود‪ .‬مثال‪:‬‬
‫– ‪MOV AX, 100‬‬
‫– ‪ADD CX, 25H‬‬
‫‪ -3‬آدرس دهی ثباتی‪ :‬عملوند یکی از ثبات های ‪ CPU‬است‪ .‬مثال‪:‬‬
‫– ‪MOV AX,BX‬‬
‫– ‪SUB CX,AX‬‬
‫‪25‬‬
‫‪ -4‬رش خود اطزایش ی یا خود کاهش ی‪ :‬در ای رش آدرس عملوند در ثبات شجنود دارد ش پن‬
‫حاطظه مقدار آدرس بصورت خودکار اطزایش یا کاهش می یابد‪ .‬مثال‪:‬‬
‫– ‪ Loop‬در پردازنده پنتیوم‬
‫از اسنتفاده از‬
‫‪ -5‬آدرس دهی مستقیم (‪ :)Direct‬آدرس عملوند در داخ دستورا م قرار دارد‪ .‬مثال‪:‬‬
‫‪Add‬‬
‫– ‪M‬‬
‫– ‪LDA temp‬‬
‫‪ -6‬آدرس دهننی ریرمسننتقیم (‪ :)Indirect‬در داخن دسننتورا م مکننان (آدرس)‪ ،‬آدرس عملوننند را قنرار مننی‬
‫دهیم‪ .‬مثال‪:‬‬
‫– ]‪Mov ax,[m‬‬
‫– ]‪Mov ax,[bx‬‬
‫‪26‬‬
‫‪ -7‬آدرس دهی نسبی‪ :‬شمارنده برنامه به آدرس درشن دستور اضاطه می شود‪:‬‬
‫‪Effective Address = ADDRESS + PC‬‬
‫‪ -8‬آدرس دهی شاخصدار (‪:)Indexed‬‬
‫م توای ثبات شاخص )‪ (Index Register‬به آدرس دستور اضاطه می شود‪.‬‬
‫‪ -9‬آدرس دهی با ثبات پایه (‪:)BASE‬‬
‫م توای رجیستر ‪ Base‬به آدرس دستور اضاطه می شود‪.‬‬
‫‪27‬‬
MODE
SYMBOL
RTL
DIRECT
LD ADR
AC←M[ADR]
INDIRECT
LD @ADR
AC ←M[M(ADR)]
RELATIVE
LD $ADR
AC ←M[PC+ADR]
IMMEDIATE
LD #NBR
AC ←NBR
INDEX
LD ADR(X)
AC ←M[ADR+XR]
REGISTER
LD R1
AC ←R1
REGISTER
INDIRECT
LD (R1)
AC ←M[R1]
INCREMENT
LD (R1)+
AC ←M[R1] ,R1++
DECREMENT
LD -(R1)
AC ←M[R1] ,R1- 28
‫• مقننادیر اش یننه ثبننات هننای ‪ R2 ،R1 ،PC‬ش موجننودی حاطظننه در ذی ن داده شننده‬
‫است‪ .‬مشخص کنید اجنرای دسنتورات برنامنه زآنر مقنادیر طنوق را چنه تغیینری منی دهند‪.‬‬
‫توجه شود که ثبات ها ‪ 16‬بیتی‪ ،‬دستورات ‪ 2‬بایتی ش هر خانه حاطظه یک بایتی اسنت‪.‬‬
‫‪ ++‬عالمننت آدرسنندهی پن اطزاینننده (‪ )post increment‬مننی باشنند ش کلیننه اعننداد‬
‫در مبنن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ننای ‪ 16‬هسن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ن ننتند‪.‬‬
‫مقادیر اش یه ‪:‬‬
‫‪PC = 308 h‬‬
‫‪R1 = 100 h‬‬
‫‪R2 = FFE0 h‬‬
‫‪MEM[100 h] = 20 h‬‬
‫‪Add [R1],R2.low‬‬
‫‪Mov [R2]++,R1‬‬
‫‪29‬‬
‫بننا اجنرای دسننتور اشل ‪8‬بیننت پننایینی ثبننات ‪ R2‬بننا م توآننات خانننه ای از حاطظننه کننه ‪ R1‬بننه آن اشنناره‬
‫می کند جمع می شود ش در همان خانه از حاطظه ذخیره منی زنردد‪ .‬بند ی اینکنه خاننه هنای حاطظنه ‪8‬‬
‫بیتننی هسننتند ش طق ن ‪ 8‬بیننت پننایینی حاصن جمننع (‪ ،)100h‬ی نننی )‪ (00h‬در حاططننه ذخیننره خواهنند‬
‫شد‪:‬‬
‫•‬
‫‪Mem[100]= E0+20=00‬‬
‫‪Add [r1],r2.low‬‬
‫بننا اجنرای دسننتور دشم ابتنندا مقنندار ثبننات ‪ R1‬در خانننه ای از حاطظننه کننه ثبننات ‪ R2‬بننه آن اشنناره مننی‬
‫نماینند ذخیننره مننی زننردد ش سن بننه د ین شجننود عملگننر (‪ )++‬مقنندار ثبننات ‪ R2‬نیننی یننک شاحنند اطنزایش‬
‫می یابد‪.‬‬
‫•‬
‫‪Mem[ffe0]= 00 h‬‬
‫‪R2=ffe1‬‬
‫‪Mov [r2]++,r1‬‬
‫مقنندار شننمارنده برنامننه ‪ PC‬نیننی بننا اج نرای هننر کنندام از دسننتورها دش شاحنند اط نزایش مننی یابنند زآ نرا هننر‬
‫دستور دشدایتی است ش در دش خانه از حاطظه ذخیره می زردد‪:‬‬
‫•‬
‫‪30‬‬
‫‪Pc=308+4=30c h‬‬