اسلايد۵

Report
Central Processing Unit
CPU
‫واحد پردازش مرکزی (‪ )CPU‬قسمتی از‬
‫کامپیوتر است که اعظم پردازش داده ها در‬
‫آن انجام می شود‪.‬‬
‫می توان گفت ‪ CPU‬از سه قسمت اصلی تشکیل‬
‫شده است‪ ،‬که در شکل زیر آمده است‪.‬‬
‫‪Register set‬‬
‫‪CONTROL‬‬
‫‪ALU‬‬
‫ثباتها داده های موقت را که برای اجرای‬
‫دستورات نیاز هستند‪ ،‬در خود ذخیره می‬
‫کنند‪ .‬البته می توان این داده ها را در‬
‫حافظه اصلی نیز ذخیره کرد‪ ،‬ولی حافظه یکی‬
‫‪ CPU‬برای انجام اعمال خود نیاز به ذخیره‬
‫عمومی ‪:‬‬
‫ثباتهای‬
‫موقع آنها دارد‪.‬‬
‫بازیابی به‬
‫سازمان و‬
‫اطالعات‬
‫مثال برای نگهداری آدرس بازگشت در‬
‫فراخوانی برنامه ها و یا دخیره نتایج‬
‫موقت محاسبات و ‪ ...‬این حافظه مورد نیاز‬
‫اگر در خارج از ‪ CPU‬باشد‪ ،‬اتالف زمان زیادی‬
‫برای ‪ CPU‬در پی دارد و بهتر این است که در‬
‫خود ‪ CPU‬قرار گیرد و البته ظرفیت آن‬
‫محدود خواهد بود‪.‬‬
‫یک یا چند ثبات درون ‪ CPU‬این حافظه را‬
‫تشکیل می دهند‪.‬‬
‫ثباتهای داخل ‪ CPU‬با یکدیگر در ارتباط‬
‫باشند‪.‬‬
External Input
Clock
Input
: ‫سازمان ثباتهای عمومی‬
R1
R2
R3
R4
R5
R6
R7
Load
(7 lines)
MUX
SELA
MUX
A bus
3×8
decoder
SELD
OPR
B bus
Arithmetic logic unit
(ALU)
External Output
Output
‫تعداد بیت ها‬
(a) Block diagram
3
SELA
3
SELB
3
SELD
(b) Control word
5
OPR
SELB
‫ ‪   +‬‬
‫‪Clock‬‬
‫‪Input‬‬
‫‪R1‬‬
‫‪R2‬‬
‫‪R3‬‬
‫‪R4‬‬
‫‪R5‬‬
‫‪R6‬‬
‫‪R7‬‬
‫‪SELB‬‬
‫‪MUX‬‬
‫‪MUX‬‬
‫‪B bus‬‬
‫‪SELA‬‬
‫‪A bus‬‬
‫‪Arithmetic logic unit‬‬
‫)‪(ALU‬‬
‫‪Load‬‬
‫)‪(7 lines‬‬
‫‪3×8‬‬
‫‪decoder‬‬
‫‪SELD‬‬
‫‪OPR‬‬
‫ابتدا ‪، SELA‬محتوای  و‬
‫محتوای‪ SELB‬محتوای  را‬
‫به خروجی ‪ MUX‬ها می برند‪.‬‬
‫‪ OPR‬نیز عمل جمع را‬
‫برای ‪ ALU‬مشخص میکند‪.‬و‬
‫‪ SELD‬و نیز ورود بار ثبات‬
‫را فعال میکند تا‬
‫خروجی ‪ ALU‬به  منتقل‬
‫شود‪ SELA .‬و ‪ SELB‬که یکی‬
‫از هفت ثبات را انتخاب می‬
‫کنند‪ .‬ورود هشتمی را نیز‬
‫انتخاب کنند‪ .‬این ورودی‬
‫حافظه است‪.‬‬
‫‪ ، OPR‬پنچ بیت است و می‬
‫تواند ‪ 32‬ریز عمل را‬
‫برای ‪ ALU‬مشخص کند‪ .‬مثال‬
‫کافیست‬
‫ریز عمل‬
‫انجام‬
‫برای‬
‫‪SELA‬‬
‫‪SELB‬‬
‫‪SELD‬‬
‫‪OPR‬‬
‫کلمه کنترلی به شکل زیر‬
‫باشد‪:‬‬
‫‪1‬‬
‫‪Output‬‬
‫‪(a) Block diagram‬‬
‫‪5‬‬
‫‪3‬‬
‫‪OPR‬‬
‫‪SELD‬‬
‫‪3‬‬
‫‪SELB‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪1‬‬
‫‪0‬‬
‫‪0‬‬
‫‪1‬‬
‫‪0‬‬
‫‪3‬‬
‫‪SELA‬‬
‫‪(b) Control word‬‬
‫که عمل جمع را مشخص میکند‪.‬‬
‫پشته حافظه ای است که اطالعات را به نحوی‬
‫سازمانمیپشته‬
‫کند‪ :‬که آخرین عنصر ذخیره شده‪ ،‬اولین‬
‫ذخیره‬
‫عنصر قابل برداشت است؛ یعنی دارای یک ساختار‬
‫آخرین ـ ورودی ـ اولین ـ خروجی ـ (‪)LIFO‬‬
‫میباشد‪ .‬پشته می تواند خود حافظه ای جداگانه‬
‫باشد و یا بخشی از حافظه اصلی کامپیوتر را به‬
‫عنوان پشته تعریف کرد‪.‬دو عمل روی پشته قابل‬
‫عمل به‬
‫تواند‬
‫تعریفمی‬
‫‪SP‬‬
‫‪ PUSH‬که موجب درج عنصری در‬
‫است‪:‬‬
‫باالی پر‬
‫خانه‬
‫پشتهو عمل ‪ POP‬که موجب حذف عنصر‬
‫باالی شود‬
‫پشته می‬
‫پشتهیا به‬
‫باالیکند‬
‫اشاره‬
‫میگردد‪.‬ثباتی که آدرس پشته را‬
‫از‬
‫که میاین‬
‫خانهخودخالی‬
‫کند‪ ،‬ثبات (‪)SP‬پشته نام‬
‫ذخیره‬
‫در‬
‫پیاده‬
‫به‬
‫بستگی‪.‬‬
‫دارد‬
‫شکل‬
‫دارد‪.‬‬
‫سازی‬
‫ساختار یک پشته ‪64‬‬
‫کلمه ای را نشان‬
‫میدهد که به صورت‬
‫‪Last Item‬‬
‫مجزا‬
‫ای‬
‫حافظه‬
‫طراحی شده است‪ ،‬به‬
‫پیاده‬
‫نوع‬
‫این‬
‫‪Address‬‬
‫‪64‬‬
‫‪FULL‬‬
‫‪EMTY‬‬
‫‪4‬‬
‫‪3‬‬
‫‪C‬‬
‫‪2‬‬
‫‪B‬‬
‫‪1‬‬
‫‪A‬‬
‫‪0‬‬
‫‪DR‬‬
‫‪SP‬‬
‫در این شکل‪ SP،‬همواره‬
‫‪Address‬‬
‫پشته‪:‬‬
‫سازمان‬
‫باالی پشته‬
‫کلمه‬
‫آدرس‬
‫را در خود دارد‪ .‬طبق‬
‫‪64‬‬
‫شکل ‪ C‬روی پشته قرار‬
‫دارد‪ .‬بنابراین ‪SP=3‬‬
‫‪FULL‬‬
‫‪EMTY‬‬
‫می باشد‪ POP .‬برای‬
‫کردن‪ ،‬کلمه ای که در‬
‫آدرس ‪ 3‬قرار دارد را‬
‫‪4‬‬
‫‪C‬‬
‫‪SP‬‬
‫باید برداشت و ‪ SP‬را‬
‫‪3‬‬
‫‪B‬‬
‫‪2‬‬
‫یکی کم کرد‪ .‬برای‬
‫‪A‬‬
‫‪1‬‬
‫‪ PUSH‬کردن ابتدا باید‬
‫‪0‬‬
‫‪Last Item‬‬
‫‪ SP‬را بای یک جمع کرد‬
‫و سپس کلمه را داخل‬
‫‪DR‬‬
‫پشته وارد کرد‪.‬در این‬
‫دو پرچم‪ ،‬برای چک پر یا خالی بودن پشته‬
‫‪ ، SP‬شش‬
‫شکل ثبات‬
‫‪ .‬و ‪ . FULL‬اگر پشته خالی‬
‫‪EMTY‬‬
‫استفاده می شود‪ :‬است‬
‫بیتی‬
‫شود ‪ EMTY‬و اگر ‪ FULL‬پرشود ‪ .‬هرگاه ‪ SP‬شامل‬
‫آدرس‪ 63‬باشد‪ ،‬جمع آن با یک‪SP ،‬را صفر می‬
‫کند‪ ،‬پس آخرین عنصر در خانه صفر قرار می‬
‫گیرد و پشته پر می شود‪.‬‬
‫توجه به شکل‬
PUSH:
SP  SP  1
M [ SP ]  DR
SP = 0,
EMTY = 1,
FULL = 0
:‫سازمان پشته‬
‫ با‬POP‫ و‬PUSH ‫عملیات‬
:‫به این صورت است‬
: Increment SP
: Write to the stack
If ( SP  0) then ( FULL  1) : Check if stack is full
EMTY  0
POP: DR  M [ SP]
: Mark not empty
: Read from the top of stack
: Decrement Stack Pointer
SP  SP  1
If ( SP  0) then ( EMTY  1) : Check if stack is empty
Mark not full
FULL
 0‫ حالت پر یا خالی‬: ‫دو‬
‫پشته به‬
‫بودن‬
‫ در هر‬SP :‫توجه‬
FULL ‫ ولی بیت های‬،‫خانه صفر پشته اشاره می کند‬
.‫ تمایز بین این دو حالت را نشان می دهد‬EMTY‫و‬
‫ دیتا را در پشته‬،‫ می توان ابتدا‬PUSH ‫ برای‬:‫نکته‬
‫ ابتدا‬POP ‫ را افزایش دهیم و برای‬SP ‫قرار داد سپس‬
. ‫ را کاهش دهیم و سپس بخوانیم‬SP
‫پشته‬
‫سازمان‬
‫از‪:‬حافظه‬
‫قسمتی‬
‫‪ ‬شکل‬
‫ای‪:‬‬
‫اصلی حافظه‬
‫پشته‬
‫را نشان‬
‫کامپیوتر‬
‫می دهد که به سه بخش‬
‫تقسیم شده است‪:‬‬
‫برنامه‪ ،‬داده و پشته ‪SP‬‬
‫ به کلمه باالی پشته‬‫اشاره میکند‪ .‬همانطور‬
‫که می دانیم ثباتهای ‪AR‬‬
‫و ‪ PC‬نیز آدرس حافظه را‬
‫در اختیار میگذارند‪.‬‬
‫ ‪ PC‬در هنگام عملیات‬‫واکشی استفاده می شود و‬
‫به قسمت دستورات اشاره‬
‫می کند‪ ،‬در فاز اجرا‬
‫برای خواندن عملوند‬
‫مورد نیاز است‪ ،‬و به‬
‫منظور ‪ PUSH‬یا ‪POP‬‬
‫کردن کلمات استفاده می‬
‫شود‪.‬‬
‫‪Address‬‬
‫‪Memory unit‬‬
‫‪1000‬‬
‫‪PC‬‬
‫‪Program‬‬
‫)‪(instructions‬‬
‫‪2000‬‬
‫‪AR‬‬
‫‪Data‬‬
‫)‪(operands‬‬
‫‪3000‬‬
‫‪Stack‬‬
‫‪3997‬‬
‫‪SP‬‬
‫‪3998‬‬
‫‪3999‬‬
‫‪4000‬‬
‫‪4001‬‬
‫‪DR‬‬
‫سازمان پشته‪:‬‬
‫‪* Error Condition‬‬
‫پشته حافظه ‪= 1‬ای‬
‫‪PUSH when:‬‬
‫‪FULL‬‬
‫‪POP when EMTY = 1‬‬
‫مثال‪:‬‬
‫‪M [ SP]  DR‬‬
‫‪The first item is stored at address 4000‬‬
‫کلمه‪POP‬‬
‫اولین ‪: DR‬‬
‫پشته‬
‫‪ ‬طبق‬
‫شکل‪ M [ SP‬‬
‫]‬
‫‪* Memory Stack‬‬
‫‪PUSH = Address‬‬
‫‪* Register Stack‬‬
‫‪PUSH = Address‬‬
‫‪SP = 4001‬‬
‫‪Address‬‬
‫‪Memory unit‬‬
‫‪1000‬‬
‫‪PC‬‬
‫‪Program‬‬
‫)‪(instructions‬‬
‫‪2000‬‬
‫‪AR‬‬
‫‪Data‬‬
‫)‪(operands‬‬
‫‪3000‬‬
‫‪Stack‬‬
‫‪3997‬‬
‫‪SP‬‬
‫‪3998‬‬
‫‪3999‬‬
‫‪4000‬‬
‫‪4001‬‬
‫‪Start Here‬‬
‫‪DR‬‬
‫‪Memory Stack :‬‬
‫‪PUSH : SP  SP  1‬‬
‫‪ SP‬می باشد‬
‫‪4001‬‬
‫آدرس‬
‫‪ SP‬‬
‫دارای ‪ 1‬‬
‫و پشته با کاهش آدرس‪ ،‬رشد‬
‫میکند‪ .‬بنابراین اولین‬
‫کلمه در آدرس ‪ 4000‬ذخیره‬
‫شده و آخرین کلمه در آدرس‬
‫‪ ،3000‬می توان برای چک پر‬
‫یا خالی بودن پشته از دو‬
‫ثبات استفاده کرد که یکی‬
‫آدرس پایین پشته و دیگری‬
‫آدرس باالی پشته را در خود‬
‫دارد‪.‬‬
‫‪ ‬بعد از هر ‪ SP،PUSH‬با‬
‫ثبات باالی پشته و پس از‬
4000
4001
4002
4003
4004
4005
4006
:‫سازمان پشته‬
:‫پشته حافظه ای‬
:‫مثال‬
…
…
…
…
Call sub1
…
…
5005
5002
Main program
5000
5001
5002
5003
5004
5005
5006
…
Call sub2
…
…
Call sub2
…
RET
Sub1
4005
…
…
…
…
…
…
RET
Sub2
Stack
‫کاربرد پشته در محاسبه عبارات‬
‫ریاضی‪:‬‬
‫منظور استفاده از پشته برای عبارات‬
‫‪ ‬به‬
‫ریاضی‪ ،‬باید عبارت را به فرم پسوندی یا‬
‫فرم معکوس لهستانی نوشت‪.‬‬
‫‪ ‬مثال‪:‬‬
‫‪A * B + C * D  AB * CD * +‬‬
‫‪: ( 3 * 4 ) + ( 5 * 6 )  34 * 56 * +‬‬
‫‪l‬‬
‫‪6‬‬
‫‪30‬‬
‫‪5‬‬
‫‪5‬‬
‫‪4‬‬
‫‪42‬‬
‫‪12‬‬
‫‪12‬‬
‫‪12‬‬
‫‪12‬‬
‫‪3‬‬
‫‪3‬‬
‫‪+‬‬
‫*‬
‫‪6‬‬
‫‪5‬‬
‫*‬
‫‪4‬‬
‫‪3‬‬
‫‪ ‬نکته ‪:‬‬
‫‪ -1‬به تعداد عملوند‪ PUSH ،‬کرده ایم یعنی ‪4‬‬
‫عمل ‪ PUSH‬انجام داده ایم‪.‬‬
‫‪ -2‬تعداد کلمات مورد نیاز در پشته مطابق شکل‬
‫‪ 3‬کلمه است‪.‬‬
‫فرمت دستورات در فصل قبل برای‬
‫شد‪.‬‬
‫فرمت دستور العمل‪:‬‬
‫ماشین پایه بررسی‬
‫معموال هر فرمت دستور شامل فیلدهای زیر است‪:‬‬
‫‪ -1‬یک فیلد کد عملیات )‪(OPCODE‬‬
‫عملی است که انجام میشود‪.‬‬
‫‪ -2‬یک فیلد آدرس که یک آدرس حافظه یا یک ثبات‬
‫پردازنده را مشخص میکند‪.‬‬
‫‪ -3‬یک فیلد‪ ،‬مد آدرس دهی را مشخص می کند؛ یعنی‬
‫روشی که عملوند پیدا میشود را تعیین می کند‪.‬‬
‫سایر فیلدها نیز می توانند استفاده شوند‪ ،‬مثال‬
‫فیلدی که تعداد شیفت ها را در یک دستور شیفت مشخص‬
‫می کند‪.‬‬
‫که مشخص کننده نوع‬
‫اغلب کامپیوترها دارای سه نوع ساختار کلی هستند‪:‬‬
‫‪ -1‬ساختار مبتنی بر یک آکوموالتور( مانند ماشین‬
‫پایه در فصل قبل)‬
‫‪ -2‬ساختار چندثباتی (مبتنی بر ثباتهای عمومی)‬
‫‪ -3‬ساختار پشته ای‬
‫‪ -1‬ساختار مبتنی بر یک آکوموالتور‪:‬‬
‫کامپیوتر معرفی شده در فصل قبل مبتنی بر ‪ AC‬است‪.‬‬
‫ماشین فقط دارای یک فیلد آدرس‬
‫در این‬
‫فرمت دستور‬
‫فرمت‬
‫العمل‪:‬‬
‫دستور‬
‫است ‪.‬‬
‫مثل ‪ ، ADD X‬محتویات حافظه ‪ X‬را با ‪ AC‬جمع می‬
‫کند‪AC AC+M[X]:‬‬
‫‪ -2‬ساختار چندثباتی (مبتنی بر ثباتهای عمومی)‪:‬‬
‫مثالی از ساختار کامپیوترهای چندثباتی در قبال بیان‬
‫شده است‪ .‬در این کامپیوتر احتیاج به ‪ 3‬فیلد یا ‪2‬‬
‫فیلد آدرس دارد‪ .‬مثال دستور  ‪، ADD  ,  ,‬ا  را با‬
‫ جمع و حاصل را به  منتقل می کند ‪   +  .‬‬
‫‪ -3‬ساختار پشته ای‪:‬‬
‫از دستورات ‪ PUSH‬و ‪ POP‬استفاده می کنند که این‬
‫دستورات احتیاج به یک فیلد آدرس دارند‪ .‬بنابراین‬
‫دستور ‪ PUSH X‬کلمه ای که در آدرس ‪ X‬قرار دارد را به‬
‫باالی پشته منتقل میکند‪.‬‬
‫در این ماشین‪ ،‬دستوراتی که روی عملوند ها‪ ،‬عمل می‬
‫کنند نیاز به فیلد آدرس ندارند‪.‬‬
‫مثال دستور ‪ ADD‬در این نوع ماشین دو عملوند باالی‬
‫پشته را برداشته و جمع کرده و حاصل را به پشته باز‬
‫فرمت دستور العمل‪:‬‬
‫• مثال‪:‬‬
‫می خواهیم عبارت )]‪M[X]=(M[A]+M[B])*(M[C]+M[D‬‬
‫را با دستورات صفر‪ ،‬یک‪ ،‬دو و سه آدرسی محاسبه‬
‫کنیم‪:‬‬
‫)‪• X = (A + B)*(C + D‬‬
‫‪1) Three-Address‬‬
‫] ‪R1  M [ A]  M [ B‬‬
‫‪ADD‬‬
‫‪R1, Instruction‬‬
‫‪A, B‬‬
‫] ‪R 2  M [C ]  M [ D‬‬
‫‪R2, C, D‬‬
‫‪ADD‬‬
‫‪M [ X ]  R1  R 2‬‬
‫‪X, R1, R2‬‬
‫‪MUL‬‬
‫• مزیت ‪:‬کوتاهی برنامه ها‬
‫• عیب‪ :‬طوالنی بودن دستور‬
:‫فرمت دستور العمل‬
X = (A +
• 2) Two-Address Instruction
R1  M [ A]
R1  R1  M [ B ]
MOV
R1, A
ADD
R1, B
MOV
R2, C
ADD
R2, D
R 2  M [C ]
R2  R2  M [ D]
MUL
R1, R2
R1  R1  R 2
MOV
X, R1
M [ X ]  R1
• 3) One-Address Instruction
LOAD
A
AC  M [ A]
ADD
B
STORE
T
LOAD
C
ADD
D
MUL
T
STORE
X
AC  AC  M [ B ]
M [T ]  AC
AC  M [C ]
AC  AC  M [ D ]
AC  AC  M [T ]
M [ X ]  AC
:‫• ادامه مثال‬
B)*(C + D)
:‫فرمت دستور العمل‬
:‫• ادامه مثال‬
X = (A +
• 4) Zero-Address Instruction
PUSH
A
PUSH
B
ADD
PUSH
C
PUSH
D
TOS  ( A  B )
TOS  C
TOS  D
TOS  (C  D )
TOS  (C  D )  ( A  B )
ADD
MUL
POP
TOS  A
TOS  B
X
M [ X ]  TOS
B)*(C + D)
‫دستورات ‪:RISC‬‬
‫‪REDUCED INSTRUCTION SET‬‬
‫‪COMPUTER‬‬
‫• دستورات در این ماشین محدود به ‪ load‬و ‪ store‬می باشد‪.‬‬
‫• ارتباط بین ثبات های پردازنده و حافظه از طریق این دو‬
‫دستور می باشد‪.‬‬
‫• سایر دستورات فقط روی ثبات ها عمل می کنند و هیچ‬
‫)‪X=(A+B)*(C+D‬‬
‫‪ l‬مثال‪:‬‬
‫مراجعه ای به حافظه ندارند‪.‬‬
‫]‪R1  M [ A‬‬
‫]‪R2  M [ B‬‬
‫] ‪R 3  M [C‬‬
‫‪LOAD R1, A‬‬
‫‪LOAD R2, B‬‬
‫‪LOAD R3, C‬‬
‫]‪R4  M [ D‬‬
‫‪R1, R1, R2 R1  R1  R 2‬‬
‫‪R3, R3, R4 R 3  R 3  R 4‬‬
‫‪ADD‬‬
‫‪R1, R1, R3 R1  R1  R 3‬‬
‫‪MUL‬‬
‫‪LOAD R4, D‬‬
‫‪X, R1 M [ X ]  R1‬‬
‫‪ADD‬‬
‫‪STORE‬‬
‫مدهای آدرس دهی‪:‬‬
‫• مد آدرس دهی مشخص می کند که عملوند چگونه‬
‫انتخاب شود‪.‬‬
‫ برای برنامه نویس امکاناتی از قبیل اشاره گر به‬‫حافظه‪ ،‬شمارنده برای حلقه و ‪ ...‬فراهم می کند‪.‬‬
‫ کاهش تعداد بیت در فیلد آدرس در دستور‬‫ دستور برای داشتن چندین مد آدرس دهی باید دارای‬‫باشد مثال‬
‫فیلد مد آدرس دهی‬
‫‪Opcode‬‬
‫‪Address‬چند بیتی‪Mode‬‬
‫مدهای آدرس دهی‪:‬‬
‫• مد ضمنی ‪:implied‬‬
‫•‬
‫•‬
‫عملوند به صورت ضمنی در دستورالعمل مشخص است‬
‫‪Examples‬‬
‫•‬
‫مکمل کردن انباره ‪Com:‬‬
‫•‬
‫•‬
‫عملوند در ثبات انباره است‬
‫‪PUSH : Stack push‬‬
‫•‬
‫عملوند باالی پشته قرار می گیرد‬
‫• مد بالفصل ‪:immediate‬‬
‫•‬
‫•‬
‫•‬
‫فیلد عملوند شامل عملوند واقعی است‬
‫برای مقدار دهی اولیه ثبات ها استفاده می شود‬
‫‪LD # 50‬‬
‫‪Example : LD #NBR‬‬
‫• مد ثباتی ‪:register made‬‬
‫•‬
‫•‬
‫عملوندها در ثبات ها هستند‬
‫ثبات مورد نظر با توجه به فیلد آدرس دهی ثبات در دستورالعمل‬
‫تعیین می شود‬
‫•‬
‫‪k-bit‬‬
‫‪specify‬‬
‫‪any one of 2k registers‬‬
‫‪Mode‬‬
‫‪ACregister‬‬
‫‪ R1 field canImplied‬‬
‫مدهای آدرس دهی‪:‬‬
‫• مد ثباتی غیر مستقیم ‪:register indirect made‬‬
‫•‬
‫•‬
‫تعیین یک ثبات که آدرس عملوند را در خود دارد‬
‫)‪Example : LD (R1‬‬
‫]‪AC  M [R1‬‬
‫• مد افزاینده یا کاهنده خودکار ‪Autoincrement or‬‬
‫‪AC  M [ R1], R1  R1  1‬‬
‫‪Autodecrement Mode‬‬
‫‪Example (Autoincrement) : LD (R1)+‬‬
‫• مد آدرس دهی مستقیم یا مطلق ‪direct-absolute‬‬
‫•‬
‫•‬
‫آدرس موثر در فیلد آدرس قرار می گیرد‬
‫‪Example : LD ADR‬‬
‫• مد آدرس دهی غیر مستقیم ‪indirect address mode‬‬
‫•‬
‫است‪AC ،‬‬
‫‪ M [M‬‬
‫آدرس موثر در آدرسی از]]‪[ ADR‬‬
‫که آن آدرس‪ ،‬در فیلد عملوند‬
‫حافظه‬
‫قرار دارد‬
‫•‬
‫‪Example : LD @ADR‬‬
‫مدهای آدرس دهی‪:‬‬
‫• مد آدرس دهی نسبی ‪relative‬‬
‫مقدار ‪ PC‬به فیلد آدرس اضافه می شود تا آدرس موثر تولید گردد‪ .‬البته‬
‫یافت‬
‫افزایش‬
‫‪AC ‬‬
‫برنامه‪M [ PC ‬‬
‫بعد از اینکه شمارنده ]‪ADR‬‬
‫•‬
‫‪Example : LD $ADR‬‬
‫• مد آدرس دهی ایندکس یا شاخص دار ‪indexed‬‬
‫•‬
‫‪ AC‬اضافه می شود تا آدرس موثر‬
‫آدرس‬
‫فیلد‬
‫مقدار ‪ ( XR‬ثبات شاخص] )‬
‫‪M‬‬
‫به‪[ ADR‬‬
‫‪ XR‬‬
‫تولید گردد‪.‬‬
‫•‬
‫)‪Example : LD ADR(XR‬‬
‫• مد آدرس دهی ثبات پایه ‪base register‬‬
‫•‬
‫مقدار ‪ BR‬ثبات پایه به فیلد آدرس اضافه می شود تا آدرس موثر تولید‬
‫گردد‪.‬‬
‫مدهای آدرس دهی‪:‬‬
‫قرار دارد‬
‫مثال‪ :‬در آدرس های ‪ 200‬و ‪ 201‬دستور ‪Load to AC‬‬
‫که فیلد آدرس آن شامل عدد ‪ 500‬است‪ .‬فیلد دوم دستور که‬
‫در کلمه اول دستور واقع است‪ ،‬مد آدرس دهی است‪ .‬می‬
‫خواهیم با توجه به مقادیر مشخص شده در شکل اثر مدهای‬
‫مختلف را بررسی کنیم‪.‬‬
‫‪Memory‬‬
‫‪Mode‬‬
‫‪Load to AC‬‬
‫‪Address‬‬
‫‪200‬‬
‫‪PC = 200‬‬
‫‪AC‬‬
‫آدر‬
‫س‬
‫موث‬
‫ر‬
‫‪202‬‬
‫‪400‬‬
‫‪800‬‬
‫‪500‬‬
‫مستقیم‬
‫‪202‬‬
‫‪400‬‬
‫‪500‬‬
‫‪201‬‬
‫بالفصل‬
‫‪202‬‬
‫‪400‬‬
‫‪300‬‬
‫‪800‬‬
‫غیرمستقیم‬
‫‪202‬‬
‫‪400‬‬
‫‪325‬‬
‫‪702‬‬
‫نسبی‬
‫‪400‬‬
‫‪900‬‬
‫‪600‬‬
‫شاخص دار‬
‫‪400‬‬
‫‪-‬‬
‫ثباتی‬
‫‪700‬‬
‫‪400‬‬
‫ثباتی غیر‬
‫مستقیم‬
‫‪400‬‬
‫پس افزاینده‬
‫‪PC‬‬
‫‪R1‬‬
‫‪Address = 500‬‬
‫‪201‬‬
‫‪Next instruction‬‬
‫‪202‬‬
‫‪450‬‬
‫‪399‬‬
‫‪700‬‬
‫‪400‬‬
‫‪800‬‬
‫‪500‬‬
‫‪900‬‬
‫‪600‬‬
‫‪202‬‬
‫‪325‬‬
‫‪702‬‬
‫‪202‬‬
‫‪400‬‬
‫‪202‬‬
‫‪400‬‬
‫‪300‬‬
‫‪800‬‬
‫‪R1 = 400‬‬
‫‪XR = 100‬‬
‫‪AC‬‬
‫‪202‬‬
‫‪401‬‬
‫‪700‬‬
‫مد آدرس دهی‬
:‫دستورات کامپیوتر‬
:‫• دستورات اغلب کامپیوترها در سه شکل دسته بندی می شوند‬
•
‫• دستورات‬
‫• دستورات‬
‫دستورات انتقال داده‬
‫دستکاری داده ها‬
‫خاص پردازنده‬
:‫دستورات انتقال داده‬
•
•
•
•
•
•
Load : transfer from memory to a processor register, usually an AC (memory read)
Store : transfer from a processor register into memory (memory write)
Move : transfer from one register to another register
Exchange : swap information between two registers or a register and a memory word
Input/Output : transfer data among processor registers and input/output device
Push/Pop : transfer data between processor registers and a memory stack
:load ‫مدهای آدرس دهی برای دستور‬
•
•
•
•
•
@ : Indirect Address
$ : Address relative to PC
# : Immediate Mode
( ) : Index Mode, Register Indirect, Autoincrement register
•
‫دستورات کامپیوتر‪:‬‬
‫• دستورات دستکاری داده ها‬
‫•‬
‫• دستورات‬
‫• دستورات‬
‫دستورات حسابی‬
‫منطقی و دستکاری بیت‬
‫شیفت‬
‫• دستورات کنترل برنامه‬
‫مانند …‪branch , jump, call, return, compare,‬‬
:‫شرایط بیت های وضعیت‬
‫ در نظر گرفته شده است که در‬ALU ‫در کامپیوترها ثباتی همراه با‬
.‫آن بیت های وضعیت ذخیره می شوند‬
Z
C
S
V
• Bit C (carry) : set to 1 if the end carry C8 is 1
• Bit S (sign) : set to 1 if F7 is 1
• Bit Z (zero) : set to 1 if the output of the ALU contains all 0’s
• Bit V (overflow) : set to 1 if the exclusive-OR of the last two carries (C8 and C7) is
equal to 1
•
‫کامپیوتر ‪:RISC‬‬
‫‪REDUCED INSTRUCTION SET‬‬
‫‪COMPUTER‬‬
‫•‬
‫)‪Complex Instruction Set Computer (CISC‬‬
‫•‬
‫• بعضی دستورات کاربرد خاص دارند و بندرت بکار می روند‬
‫• مدهای آدرس دهی زیاد دارند‪ .‬بین ‪ 5‬تا ‪ 20‬مد مختلف‬
‫• دستورات با طول متفاوت‬
‫• دارای دستوراتی که می توانند با عملوند های حافظه ای‬
‫دستورات زیاد معموال بین ‪ 100‬تا ‪250‬‬
‫سروکار دارند‪.‬‬
‫• )‪Reduced Instruction Set Computer (RISC‬‬
‫•‬
‫• مدهای آدرس دهی نسبتا کم‬
‫• دسترسی به حافظه در اینجا فقط منحصر به ‪ load‬و ‪ store‬است‪.‬‬
‫• تمام عملیات داخل ثبات های پردازنده انجام می شود‪.‬‬
‫• دستورات طول ثابت دارند که براحتی ترجمه می شوند‪.‬‬
‫• اجرای دستورات معموال در یک سیکل انجام می شود‪.‬‬
‫• واحد کنترل سیم بندی شده است‪.‬‬
‫دستورات نسبتا کم‬
‫همپوشي پنجره ها در ماشین ‪:RISC‬‬
‫•‬
‫شش ثبات‬
‫روال‪،‬‬
‫برای سرعت بخشیدن به عملیات فراخواني و برگشت از زیر مشترک‬
‫‪A,D‬‬
‫پنجره های همپوشانی شده استفاده می گردد‪.‬‬
‫•‬
‫ده ثبات محلی ‪D‬‬
‫این پنجره ها برای جلوگیری مصرف زمان برای انتقال پارامترها‬
‫شش ثبات‬
‫مشترک‬
‫‪C,D‬‬
‫و برگشت نتایج بین روال ها می باشد‪.‬‬
‫•‬
‫به هر فراخوانی زیر برنامه‪ ،‬یک پنجره جدید که شامل تعدادی‬
‫ثبات از فایل ثبات است‪ ،‬تخصیص می یابد‪.‬‬
‫•‬
‫ده ثبات محلی ‪C‬‬
‫شش ثبات‬
‫فراخوانی زیر برنامه‬
‫در واقع یک اشاره گر وجود دارد که هنگام‬
‫مشترک‬
‫‪C, B‬‬
‫افزایش می یابد و پنجره جدید را فعال می کند‬
‫و هنگام بازگشت‬
‫پنجرهمحلی‬
‫ده ثبات‬
‫قبلی‪ B‬فعال‬
‫از زیر برنامه‪ ،‬اشاره گر کاهش یافته و‬
‫شش ثبات‬
‫اختیار‬
‫می شود و و پنجره زیربرنامه مشترک متغیرها‬
‫ثبات‬
‫مشترک را درده‬
‫‪B, A‬‬
‫انتقال پارامترها‬
‫پنجره فعال فعلی قرار می گیرد و سرعت‬
‫عمومی‬
‫به زیر روال ها افزایش می یابد‪ .‬ده ثبات محلی ‪A‬‬

similar documents