آدرس دهی ضمنی

Download Report

Transcript آدرس دهی ضمنی

Department of Computer and IT Engineering
University of Kurdistan
Computer Architecture
Instruction Set Architecture (ISA)
By: Dr. Alireza Abdollahpouri
‫)‪Instruction Set Architecture (ISA‬‬
‫ﻣﺸﺘﻤﻞ ﺑﺮ ﺗﻤﺎم آن ﭼﻴﺰي اﺳﺖ ﻛﻪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﺎن (برنامه نویسان به زبان سطح پایین و‬
‫طراحان کامپایلر) ﺑﺮاي ﺧﻠﻖ ﺑﺮﻧﺎﻣﻪاي ﺑﺎ ﻋﻤﻠﻜﺮدي درﺳﺖ ﻧﻴﺎزﻣﻨﺪ داﻧﺴﺘﻦ آنﻫﺎ ﻫﺴﺘﻨﺪ‪.‬‬
‫همچنین مجموعه اطالعاتی است که یک طراح پردازنده برای پیاده سازی به آن نیاز دارد‪.‬‬
‫در واقع نقطه اشتراک طراحان نرم افزار و سخت افزار میباشد‪.‬‬
‫‪2‬‬
‫)‪Instruction Set Architecture (ISA‬‬
‫ﻳﻜﻲ از ﻛﻠﻴﺪي ﺗﺮﻳﻦ واﺳﻂﻫﺎي ﺑﻴﻦ ﺳﺨﺖاﻓﺰار و ﻧﺮم اﻓﺰار ﺳﻄﺢ ﭘﺎﻳﻴﻦ‪ ،‬ﻣﻌﻤﺎري‬
‫ﻣﺠﻤﻮﻋﻪي دﺳﺘﻮراﻟﻌﻤﻞ )‪ (ISA‬اﺳﺖ‪ ISA .‬یک ﺳﻄح ﺗﺠﺮﻳﺪ اﺳﺖ ﻛﻪ اﻳﻦ‬
‫اﻣﻜﺎن را ﻓﺮاﻫﻢ آورده ﺗﺎ ﭘﻴﺎدهﺳﺎزيﻫﺎي ﻣﺘﻌﺪد ﺑﺎ ﻗﻴﻤﺖ و ﻛﺎرآﻳﻲ ﻣﺘﻔﺎوت از ﻳﻚ‬
‫ﺳﺨﺖاﻓﺰار ﺧﺎص وﺟﻮد داﺷﺘﻪ ﺑﺎﺷﺪ و ﻫﻤﻪي آنﻫﺎ ﺑﺘﻮاﻧﻨﺪ ﻧﺮم اﻓﺰار واﺣﺪي را‬
‫اﺟﺮا ﻛﻨﻨد‪.‬‬
‫‪AMD‬‬
‫‪3‬‬
‫‪Intel Pentium‬‬
‫)‪Instruction Set Architecture (ISA‬‬
‫‪ ISA‬شامل موارد زیر است‪:‬‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫•‬
‫‪4‬‬
‫مجموعه دستورالعملها ( تعداد و نوع آنها)‬
‫قالب دستورالعملها‬
‫مجموعه رجیسترها‬
‫محل ذخیره سازی عملوندها‬
‫روشهای آدرسدهی (نحوه دسترس ی به عملوندها)‬
‫نحوه برخورد با استثناها و وقفه ها‬
‫و تصمیمات کلی دیگر (نحوه فراخوانی زیربرنامه ها ‪ -‬ترتیب بایتها در حافظه و ‪)...‬‬
‫اهمیت ‪ ISA‬چقدر است؟‬
‫• برای استفاده کننده نهائی‬
‫هیچ!‬
‫• برای برنامه نویس سطح باال‬
‫خیلی کم‪ .‬تا حدی که بتواند کامپایلر مناسب را انتخاب نموده و عملکرد برنامه را بهینه‬
‫کند‪.‬‬
‫• برای برنامه نویس سطح پائین‪ /‬طراح ‪OS‬‬
‫این افراد باید اطالعات کافی در مورد رجیسترها‪ ،‬ساختار حافظه‪ ،‬انواع داده های‬
‫موجود و عملکرد دستورات داشته باشند‪.‬‬
‫• برای طراحان کامپیوتر‬
‫این افراد نیز باید اطالعات فوق را داشته باشند تا بتوانند اجزا سخت افزای مورد نیاز را‬
‫انتخاب کنند‪.‬‬
‫‪5‬‬
How to speak to Computers?
High Level Language
Program
Compiler
temp = v[k];
v[k+1] = temp;
Assembly Language
Program
Assembler
Machine Language
Program
Machine Interpretation
‫زبان سطح باال‬
v[k] = v[k+1];
0000
1010
1100
0101
lw $15,
lw $16,
sw $16,
sw $15,
0($2)
4($2)
0($2)
4($2)
1001
1111
0110
1000
0110
1000
1111
1001
1100
0101
1010
0000
‫زبان اسمبلی‬
1010
0000
0101
1100
1111
1001
1000
0110
0101
1100
0000
1010
1000
0110
1001
1111
‫زبان ماشین‬
Control Signal
Specification
6
ISA- Where are the instructions?
Harvard architecture
Von-Neumann architecture
Instruction
Storage
CPU
CPU
Inst.
&
data
Storage
Data
Storage
CPU
L1
Inst.
Cache
L2
Cache
Memory
L1
Data
Cache
7
Key ISA decisions
operations
– how many?
– which ones
operands
– how many?
– location
– types
– how to specify?
operation
destination operand
c=a+b
Source operands
(Add R1,R2,R6)
instruction format
– size
– how many formats?
8
‫قالب دستورالعمل ها‬
‫‪ ‬قالب دستورالعملها وابسته به نوع طراحی ‪ CPU‬است‪.‬‬
‫‪ ‬بخش های مختلف یک دستورالعمل‬
‫‪OP-CODE ‬‬
‫‪ ‬آدرس آپراندها ( حافظه ‪ ،‬ثبات ‪)....‬‬
‫‪ ‬شیوه آدرسدهی‬
‫‪memory address‬‬
‫مثال‪:‬‬
‫]‪R3  M[36‬‬
‫‪9‬‬
‫‪register‬‬
‫‪op-code‬‬
‫‪Mode‬‬
‫‪36‬‬
‫‪R3‬‬
‫‪load‬‬
‫‪direct‬‬
‫‪00100100‬‬
‫‪011‬‬
‫‪0101‬‬
‫‪00‬‬
‫قالب دستورالعمل ها – طول دستورالعمل‬
‫طول دستور ثابت است‬
‫طول دستور متغیراست‬
‫در مورد مزایا و معایب هر کدام بحث کنید‬
‫‪10‬‬
‫مجموعه دستورات کامپیوتر‬
‫‪ ‬دستورات مورد استفاده درکامپیوترهای مختلف از لحاظ تعداد‪،‬‬
‫عملکرد‪ ،‬نشانه های مورد استفاده برای اسمبلی‪ ،‬و کد باینری بسیار‬
‫متفاوت هستند با این وجود تمامی آنها دارای دستوراتی از گروههای‬
‫زیر میباشند‪:‬‬
‫ دستورات انتقال داده‬‫ دستورات محاسباتی‪ ،‬منطقی و جابجائی‬‫‪ -‬دستورات کنترل برنامه‬
‫‪11‬‬
‫دستورات معمول انتقال اطالعات‬
‫‪12‬‬
‫فرم سمبولیک‬
‫نام‬
‫‪LD‬‬
‫‪Load‬‬
‫‪ST‬‬
‫‪Store‬‬
‫‪MOV‬‬
‫‪Move‬‬
‫انتقال داده بین رجیسترها‬
‫انتقال داده بین حافظه و رجیسترها‬
‫‪XCH‬‬
‫‪Exchange‬‬
‫تعویص داده های دو رجیستر و یا یک‬
‫رجیستر و حافظه‬
‫‪IN‬‬
‫‪Input‬‬
‫‪OUT‬‬
‫‪Output‬‬
‫‪PUSH‬‬
‫‪Push‬‬
‫‪POP‬‬
‫‪Pop‬‬
‫انتقال داده بین حافظه و رجیسترها‬
‫انتقال داده بین ورودی‪/‬خروجی‬
‫و رجیسترها‬
‫انتقال داده بین پشته و‬
‫رجیسترها‬
‫دستورات معمول محاسباتی‬
‫نام دستور‬
‫نماد دستور‬
‫افزایشدهنده یک‬
Increment
INC
‫کاهشدهنده یک‬
Decrement
DEC
‫جمع‬
Add
ADD
‫تفریق‬
Subtract
SUB
‫ضرب‬
Multiply
MUL
‫تقسیم‬
Divide
DIV
‫جمع با بیت نقلی‬
Add with carry
ADDC
‫تفریق با بیت قرض ی‬
Subtract with borrow
SUBB
2 ‫مکمل‬
Negate (2’s
complement)
NEG
13
‫دستورات منطقی و عملیات روی بیت‬
‫نماد دستور‬
‫‪14‬‬
‫نام دستور‬
‫‪CLR‬‬
‫‪Clear‬‬
‫صفر کردن‬
‫‪COM‬‬
‫‪Complement‬‬
‫مکمل کردن‬
‫‪AND‬‬
‫‪AND‬‬
‫‪-‬‬
‫‪OR‬‬
‫‪OR‬‬
‫‪-‬‬
‫‪XOR‬‬
‫‪XOR‬‬
‫‪-‬‬
‫‪CLRC‬‬
‫‪Clear carry‬‬
‫صفر کردن بیت نقلی‬
‫‪COMC‬‬
‫‪Complement carry‬‬
‫مکمل کردن بیت نقلی‬
‫‪EI‬‬
‫‪Enable Interrupt‬‬
‫فعال کردن وقفه‬
‫‪DI‬‬
‫‪Disable Interrupt‬‬
‫غیرفعال کردن وقفه‬
‫دستورات شیفت‬
‫نام دستور‬
‫فرم نمادین‬
‫شیفت به راست‬
Logical Shift Right
SHR
‫شیفت به چپ‬
Logical Shift Left
SHL
‫شیفت ریاض ی به راست‬
Arithmetic Shift Right
SHRA
‫شیفت ریاض ی به چپ‬
Arithmetic Shift Left
SHLA
‫چرخش به راست‬
Rotate Right
ROR
‫چرخش به چپ‬
Rotate Left
ROL
‫چرخش به راست از طریق بیت نقلی‬
Rotate Right through carry
RORC
‫چرخش به چپ از طریق بیت نقلی‬
Rotate Left through carry
ROLC
15
‫دستورات متداول کنترل برنامه‬
‫نام دستور‬
‫فرم نمادین‬
‫انشعاب‬
Branch
BR
‫پرش‬
Jump
JMP
‫رد کردن‬
SKIP
SKP
‫صدا زدن‬
Call
CALL
‫بازگشت‬
Return
RET
‫مقایسه‬
Compare( By subtraction)
CMP
‫تست‬
Test( By ANDing)
TST
16
Operand Location (‫)محل عملوندها‬
• Accumulator (‫)انباره‬
• Stack (‫)پشته‬
• Registers (‫)ثباتها‬
• Memory (‫)حافظه‬
We can classify most machines into 4 types:
1- accumulator, 2- stack, 3- register-memory (most
operands can be registers or memory) , 4- load-store
(arithmetic operations must have register operands).
Operand Location
18
‫سازمان رجيستر عمومی‬
‫‪General Registers ‬‬
‫‪ ‬تمامی رجیسترها می توانند به عنوان اپراند دستورالعملهای ‪ ALU‬بکار‬
‫برده شوند‪.‬‬
‫‪ ‬مثال‪ :‬رجیسترهای پردازنده ‪MIPS‬‬
‫‪19‬‬
clock
R0
R1
R2
R3
R4
R5
R6
R7
Loads
DEC
S1
MUXA
MUXB
A
B
S2
D
OPR
ALU
Output
20
‫مجموعه رجیسترهای عمومی و عملیات ‪ALU‬‬
‫در شکل قبل‪:‬‬
‫• خروجی هر رجیستر به دو ‪MUX‬متصل شده است‪ .‬اینکار باعث‬
‫میشود تا هر یک از آنان را بتوان آزادانه بعنوان مبدا عملیات‬
‫‪ ALU‬انتخاب نمود‪.‬‬
‫• برای اینکه بتوان خروجی ‪ ALU‬را به هر یک از رجیستر ها‬
‫منتقل نمود این خروجی به ورودی تمام رجیسترها متصل شده و‬
‫عالوه بر آن با استفاده از یک دیکودر مقصد عملیات را مشخص‬
‫میکنیم‪.‬‬
‫• یک ‪ALU‬ممکن است که قادر به انجام عملیات مختلفی باشد‪.‬‬
‫برای انتخاب یک عمل مورد نیاز از خطوط کنترلی ‪ OPR‬استفاده‬
‫میشود‪.‬‬
‫‪21‬‬
‫مثالی از عملیات ‪ALU‬‬
‫برای مثال فرض کنید که میخواهیم عملیات زیر را انجام دهیم‪:‬‬
‫‪R1  R2 + R3‬‬
‫برای انجام این عمل واحد کنترل باید سیگنالهای الزم را برای انتخاب ورودیهای‬
‫متناسب دیکودر ‪MUXA, MUXB,‬و ‪ALU‬انتخاب نماید‪:‬‬
‫‪ .1‬تعیین مقدار مناسب برای ورودی ‪ MUXA‬یعنی ‪ S1‬طوری که محتوی‬
‫رجیستر ‪R2‬در روی باس ‪ A‬قرار گیرد‪.‬‬
‫‪ .2‬تعیین مقدار مناسب برای ورودی ‪ MUXB‬یعنی ‪ S2‬طوری که محتوی‬
‫رجیستر ‪R3‬در روی باس ‪ B‬قرار گیرد‪.‬‬
‫‪ .3‬تعیین مقدار الزم برای ورودی ‪OPR‬که ‪ALU‬را وادار به انجام عمل‬
‫جمع ‪ A+B‬نماید‪.‬‬
‫‪ .4‬در نهایت انتخاب مقدار مناسب برای دیکور ‪ D‬به نحویکه خروجی‬
‫‪ALU‬را به رجیستر ‪R1‬منتقل نماید‪.‬‬
‫‪22‬‬
‫سازمان پشته يا ‪Stack‬‬
‫‪ ‬ساختار ‪LIFO‬‬
‫‪PUSH ‬‬
‫‪POP ‬‬
‫‪ ‬دسترس ی فقط به عنصر باالی پشته امکانپذیر است‬
‫‪ ‬فقط یک اشاره گر نیاز داریم ‪SP = STACK POINTER‬‬
‫‪23‬‬
AB*CD/+







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)
24
AB*CD/+
PUSH A
PUSH B
B
A
25
AB*CD/+
PUSH A
PUSH B
MUL
PUSH C
PUSH D
D
C
A*B
26
AB*CD/+
PUSH A
PUSH B
MUL
PUSH C
PUSH D
DIV
C/D
A*B
27
AB*CD/+
PUSH A
PUSH B
MUL
PUSH C
PUSH D
DIV
ADD
A*B+ C/D
28
)Instruction Count(
‫ بر تعداد دستورالعملها‬ISA ‫تاثیر‬
Code sequence for A = B+C for five classes of
instruction sets:
Memory to Memory
mov A B
add A C
Accumulator
load B
add C
store A
Stack
push B
push C
add
pop A
Register
(Register-memory)
load R1,B
add R1,C
store A,R1
Register
(Load-store)
Load R1, B
Load R2,C
Add R1,R1,R2
Store A,R1
‫ از این نوع است‬MIPS ‫پردازنده‬
29
Instruction cycle
The CPU uses repeating machine cycles to execute
instructions in the program, one by one, from beginning to
end. A simplified cycle can consist of three phases: fetch,
decode and execute
30
Example: c = a+ b (first step)
Load R0, a
Load R1, b
ADD R2,R0,R1
Store c, R2
a
b
c
31
Example: c = a+ b (second step)
Load R0, a
Load R1, b
ADD R2,R0,R1
Store c, R2
a
b
c
32
Example: c = a+ b (third step)
Load R0, a
Load R1, b
ADD R2,R0,R1
Store c, R2
a
b
c
33
Example: c = a+ b (fourth step)
Load R0, a
Load R1, b
ADD R2,R0,R1
Store c, R2
a
b
c
34
Addressing Objects: Endianess and Alignment
Big Endian: address of most significant byte = word address (xx00 = Big End
of word)
IBM 360/370, Motorola 68k, MIPS, Sparc, HP PA
Little Endian: address of least significant byte = word address (xx00 = Little
End of word)
Intel 80x86, DEC Vax, DEC Alpha (Windows NT)
little endian byte 0
3
2
1
0
0
lsb
msb
0
1
2
3
1
2
3
Aligned
big endian byte 0
Alignment: require that objects fall on address
that is multiple of their size.
Not
Aligned
35
‫روشهاي آدرسدهی‬
‫دستورات یک کامپیوتر عملی را بر روی داده ذخیره شده در حافظه و یا رجیسترهای‬
‫‪CPU‬انجام میدهند‪ .‬روش مشخص کردن عملوند یک دستورالعمل حاالت آدرس‬
‫دهی و یا ‪ addressing mode‬نامیده میشود‪.‬‬
‫اصوال حاالت مختلف آدرسدهی عملوند دستور‪ ،‬تسهیالت زیر را در سیستم فراهم میآورد‪:‬‬
‫‪.1‬‬
‫قابلیت ایجاد شمارنده برای برنامه حلقه‪ ،‬و شاخصبندی در دادهها و همچنین ایجاد‬
‫اشارهگر حافظه و جابجایی برای کاربر فراهم میشود‪.‬‬
‫‪.2‬‬
‫‪36‬‬
‫امکان تقلیل تعداد بیتهای قسمت آدرس دستور‪ ،‬فراهم میشود‪.‬‬
‫انواع حالت های آدرس دهی‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪ 37‬‬
‫آدرس دهی ضمنی (‪(Implied‬‬
‫آدرس دهی بالدرنگ (‪(Immediate‬‬
‫آدرس دهی ثبات (‪(Register‬‬
‫آدرس دهی غیر مستقیم بکمک ثبات (‪(Register Indirect‬‬
‫آدرس دهی افزایش و یا کاهشی خودکار ( ‪ Autoincrement‬یا‬
‫‪(Autodecrement‬‬
‫آدرس دهی مستقیم (‪(direct‬‬
‫آدرس دهی غیر مستقیم (‪(Indirect‬‬
‫آدرس دهی نسبی (‪(relative‬‬
‫آدرس دهی شاخص (‪(index‬‬
‫آدرس دهی با ثبات پایه‬
‫آدرس دهی ضمنی‬
‫‪Implied Addressing Mode ‬‬
‫در این روش اپراندها بصورت ضمنی در داخل دستورالعمل مشخص میشوند‪.‬‬
‫‪ ‬مثل دستور ‪ CMA‬که محتوی آکوموالتور را متمم میکند‪.‬‬
‫‪ ‬دستورات صفر آدرس ی مورد استفاده در کامپیوترهای ‪ stack machine‬نیز از آدرس‬
‫دهی ضمنی استفاده میکنند زیرا عملوندها بطور ضمنی در باالی پشته در نظر گرفته‬
‫میشوند‪.‬‬
‫‪38‬‬
‫آدرس دهی بالدرنگ‬
‫‪Immediate Addressing Mode ‬‬
‫در این روش مقدار عملوند در داخل خود دستورالعمل داده میشود‪.‬‬
‫این مد آدرس دهی برای مقدار دهی رجیسترها بکار میرود‪.‬‬
‫‪ ‬مثل دستور زیر در پردازنده ‪x86‬‬
‫‪MOV CX, 1024‬‬
‫‪Operand‬‬
‫‪39‬‬
‫‪Instruction‬‬
‫آدرس دهی رجیستري‬
‫‪‬‬
‫‪Register Addressing‬‬
‫در این روش عملوندها در داخل رجیسترهای پردازنده قرار دارند ‪.‬با‬
‫استفاده از ‪ K‬بیت میتوان تعداد ‪ 2k‬رحیستر را مشخص نمود‪.‬‬
‫‪ ‬مثل دستور زیر در پردازنده ‪x86‬‬
‫‪ADD AL, BL‬‬
‫‪CPU registers‬‬
‫‪R‬‬
‫‪Operand‬‬
‫‪40‬‬
‫‪Instruction‬‬
‫آدرس دهی رجيستري غیر مستقیم‬
‫‪Register Indirect Addressing ‬‬
‫‪ ‬در این روش دستورالعمل رجیستری را مشخص میکند که محتوی‬
‫آن آدرس عملوند در حافظه را مشخص خواهد نمود‪.‬‬
‫‪ ‬مثل دستور زیر در پردازنده ‪x86‬‬
‫‪Memory‬‬
‫‪CPU registers‬‬
‫]‪MOV BX,[SI‬‬
‫‪Instruction‬‬
‫‪Operand‬‬
‫‪0100‬‬
‫‪R‬‬
‫‪0100‬‬
‫‪41‬‬
‫آدرس دهی افزایش و یا کاهش ی خودکار‬
‫‪Autoincrement or Autodecrement addressing ‬‬
‫‪ ‬این روش مشابه آدرس دهی رجيستري غیر مستقیم است با این‬
‫تفاوت که مقدار رجیستر بعد یا قبل از استفاده برای محاسبه آدرس‬
‫موثر افزایش و یا کاهش میابد‪.‬‬
‫‪Memory‬‬
‫‪CPU registers‬‬
‫‪Instruction‬‬
‫‪Operand‬‬
‫‪0100‬‬
‫‪R‬‬
‫‪0100‬‬
‫‪42‬‬
‫‪R=R+1‬‬
‫‪R=R-1‬‬
‫آدرس دهی مستقیم‬
‫‪Direct Addressing Mode ‬‬
‫در این روش آدرس عملوند در داخل دستورالعمل ذکر میشود‪.‬‬
‫‪ ‬مثل دستور زیر در پردازنده ‪x86‬‬
‫]‪MOV AX,[3000‬‬
‫‪Memory‬‬
‫‪Instruction‬‬
‫‪Operand‬‬
‫‪43‬‬
‫‪Address‬‬
‫آدرس دهی غیر مستقیم‬
‫‪Indirect Addressing Mode ‬‬
‫در این روش آدرس موجود در دستورالعمل محلی از حاقطه را مشخص میکند که آدرس‬
‫عملوند درآنجا قرار دارد‪ .‬در این حالت برای دسترس ی به عملوند دوبار رجوع به حافطه‬
‫مورد نیاز است‪ :‬یکبار برای پیدا کردن آدرس آن و بار دیگر برای خواندن مقدار آن‪.‬‬
‫‪Memory‬‬
‫‪Operand‬‬
‫‪Instruction‬‬
‫‪00010001‬‬
‫‪Address‬‬
‫‪00010001‬‬
‫‪44‬‬
‫‪10010111‬‬
‫آدرس دهی نسبی‬
Relative Addressing Mode 
‫ در این روش آدرس موثر از جمع آدرس مشخص شده در داخل‬
:‫ حاصل میشود‬PC ‫دستورالعمل و محتوی‬
Effective Address= address part of instruction + content of PC
Memory
Instruction
Address
Operand
+
PC
45
‫آدرس دهی شاخص دار‬
‫‪Index Addressing Mode ‬‬
‫‪ ‬در این روش آدرس موثر از جمع آدرس مشخص شده در داخل دستورالعمل و محتوی یک رجیستر‬
‫مخصوص که رجیستر ایندکس نامیده میشود حاصل میشود‪:‬‬
‫‪Effective Add.= address part of instruction + content of index register‬‬
‫‪ ‬معموال از این روش برای دسترس ی به داده های یک آرایه استفاده میشود ‪.‬که محل شروع داده ها در حافظه‬
‫در دستورالعمل مشخص میشود و فاصله داده مورد نظر تا محل شروع توسط رجیستر ایندکس تعیین‬
‫میگردد‪.‬‬
‫‪Memory‬‬
‫‪Instruction‬‬
‫‪Operand‬‬
‫‪Address‬‬
‫‪+‬‬
‫‪Index Register‬‬
‫‪46‬‬
‫مثال‬
‫حافظه‬
‫مقدار آکوموالتور در صورت اجرای دستور‬
‫موجود در آدرس ‪ 200‬برای حالتهای مختلف‬
‫آدرس دهی چیست؟‬
‫حالت‬
‫بارکردن ‪AC‬‬
‫‪ = 500‬آدرس‬
‫دستور بعدی‬
‫آدرس‬
‫‪200‬‬
‫‪201‬‬
‫‪202‬‬
‫‪PC = 200‬‬
‫‪R1 = 400‬‬
‫‪450‬‬
‫‪399‬‬
‫‪700‬‬
‫‪400‬‬
‫‪800‬‬
‫‪500‬‬
‫‪XR = 100‬‬
‫‪AC‬‬
‫‪47‬‬
‫‪900‬‬
‫‪600‬‬
‫‪325‬‬
‫‪702‬‬
‫‪300‬‬
‫‪800‬‬
‫مثال‬
‫‪48‬‬
‫حاالت آدرسدهی‬
‫آدرس مؤثر‬
‫محتوای اکوموالتور‬
‫مستقیم‬
‫‪500‬‬
‫‪800‬‬
‫بالفصل‬
‫‪201‬‬
‫‪500‬‬
‫غیرمستقیم‬
‫‪800‬‬
‫‪300‬‬
‫نسبی‬
‫‪702‬‬
‫‪325‬‬
‫شاخصدار‬
‫‪600‬‬
‫‪900‬‬
‫ثبات‬
‫‪-‬‬
‫‪400‬‬
‫غیرمستقیم از طریق ثبات‬
‫‪400‬‬
‫‪700‬‬
‫افزایش خودکار‬
‫‪400‬‬
‫‪700‬‬
‫کاهش خودکار‬
‫‪399‬‬
‫‪450‬‬
‫‪RISC vs. CISC‬‬
‫دو دیدگاه متفاوت در معماری کامپیوتر‬
‫‪49‬‬
‫کامپیوترهای با مجموعه دستورات پیچیده‪CISC‬‬
‫‪ ‬معماری یک کامپیوتر متاثر از مجموعه دستورات انتخاب شده برای آن است‪.‬‬
‫‪ ‬در کامپیوتر های اولیه سعی بر این بود تا تعداد دستورات کم و ساده باشد تا پیاده‬
‫سازی سخت افزاری آن ممکن باشد‪.‬‬
‫‪ ‬با پیشرفت در زمینه سخت افزار و ارزان شدن آن تعداد دستورات کامپیوترها‬
‫افزایش یافته و بر پیچیدگی آنها افزوده گردید‪ .‬هدف این بود تا هر چه بیشتر نیاز‬
‫های کاربران را در سخت افزار گنجانده وبا کاهش فاصله بین زبانهای سطح باال و‬
‫دستورات کامپیوتر کار ترجمه دستورات سطح باال را ساده تر کنند‪ .‬این نوع‬
‫کامپیوترها گاها تا ‪ 200‬دستور و تعداد بسیار زیادی مد آدرس دهی داشتند‪ .‬این‬
‫کامپیوتر ها را )‪Complex instruction set computer (CISC‬‬
‫مینامند‪.‬‬
‫‪50‬‬
‫ویژگی های کامپیوترهای ‪CISC‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪51‬‬
‫تعداد زیادی دستورالعمل دارند ) مثال ‪ 200‬عدد(‬
‫دستوراتی برای انجام کارهای ویژه دارند که معموال بندرت مورد استفاده‬
‫قرار میگیرند‬
‫تعداد زیادی مد آدرس دهی دارند‬
‫طول دستورالعمل ها متفاوت است‬
‫دستوراتی دارند که عملیاتی را بر روی اپراندهای موجود در حافظه‬
‫انجام میدهند‪.‬‬
‫برای اجرای دستورات به چندین کالک نیاز هست‪.‬‬
‫کامپیوترهای با مجموعه دستورات کاهش یافته ‪RISC‬‬
‫‪ ‬معماری ‪ RISC‬ابداعی مهم در زمینه سازمان کامپیوتر بشمار‬
‫میرود‪.‬‬
‫‪ ‬در این معماری سعی شده است تا با ساده تر کردن مجموعه‬
‫دستورالعمل ها بر قدرت پردازنده افزوده شود‪.‬‬
‫‪52‬‬
‫‪The Semantic Gap‬‬
‫‪The Semantic‬‬
‫‪Gap‬‬
‫با پیشرفت زیانهای سطح باال اختالف بین برنامه‬
‫های سطح باال و زبان ماشین گسترش یافت‪.‬‬
‫هر یک از معماریهای فوق روش مختلقی برای‬
‫کاهش این اختالف معرفی کردند تا ترجمه‬
‫زبانهای سطح باال بطرز موثرتری انجام شود‪.‬‬
‫زبان سطح باال‬
‫زبان ماشین‬
‫• نگرش ‪ : CISC‬دستورات زبان ماشین پیچیده تر و به زبان سطح‬
‫باال نزدیکتر گردد‪.‬‬
‫• نگرش ‪ : RISC‬دستورات زبان ماشین ساده تر و به نیازهای‬
‫برنامه نزدیکتر گردد‪.‬‬
‫‪53‬‬
‫ویژگی های ‪RISC‬‬
‫‪ ‬دستورات ساده و کمی دارند‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪54‬‬
‫هدف این است که بتوان دستورات را بسرعت اجرا کرد‪ .‬اغلب‬
‫دستورات ‪ RISC‬در یک سیکل اجرا میشوند )بعد ازواکش ی و‬
‫رمزگشایی(‬
‫چون دستورات در زمان مشابهی اجرا میشوند عمل‪ pipeline‬دارای‬
‫بازده باالیی خواهد بود‪.‬‬
‫کم بودن دستورات باعث ساده شدن واحد کنترل ومسیرهای ارتباطی‬
‫میشود که منجر به کم شدن تعداد ترانزیستورهای مورد نیاز برای‬
‫ساخت پردازنده میشود اینکار سرعت پردازنده را نیز افزایش میدهد‪..‬‬
‫در ضمن واحد کنترل بروش سیم بندی ساخته می شود‪.‬‬
‫ویژگی های ‪RISC‬‬
‫• دسترسی به حافظه محدود به دستورات‬
‫و ‪ Store‬است‬
‫‪load‬‬
‫– از آنجائیکه عمل رجوع به حافظه معموال در یک سیکل امکانپذیر نمیباشد‬
‫تمهیداتی در کامپایلر استفاده میشود تا ‪pipeline‬بطور موثرتری استفاده‬
‫شود‪.‬‬
‫– باقی دستورات بر روی محتوی رجیسترها عمل میکنند‪.‬‬
‫‪55‬‬
RISC ‫ویژگی های‬
‫• تعداد مدهای آدرس دهی آنها کم است‬
:‫– معموال فقط از مدهای آدرس دهی زیر استفاده میشود‬
register addressing •
direct addressing •
register indirect addressing •
displacement addressing •
56
‫ویژگی های ‪RISC‬‬
‫• دستورات طول و فرمت یکسانی دارند‬
‫ اینکار باعث میشود تا خواندن دستورات و رمزگشائی‬‫آنها سریع و ساده باشد‪ .‬زیرا الزم نیست تا معلوم شدن طول دستور‬
‫برای رمزگشایی آن صبر کرد‪.‬‬
‫ یکسانی فرمت باعث سهولت رمزگشایی میگردد زیرا کد‬‫و ادرس همه دستورات در محل یکسانی قرار دارند‪.‬‬
‫‪57‬‬
‫ویژگی های ‪RISC‬‬
‫• تعداد رجیسترهای زیادی دارند‪.‬‬
‫– کم شدن دستورات باعث کوچگ شدن واحد کنترل و‬
‫آزاد شدن فضا برای گنجاندن تعداد بیشتری رجیستر‬
‫میشود‪.‬‬
‫– متغیرهای محلی‪ ،‬نتایج میانی و پارامترهای توابع در‬
‫داخل رجیسترها ذخیره شده و تعداد رجوع به حافظه‬
‫کاهش پیدا می کند‪.‬‬
‫‪58‬‬
‫سایر ویژگی های ‪RISC‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪59‬‬
‫استفاده ازتکنیک ‪ pipelining‬که باهمپوشانی سیکل های‬
‫واکش ی‪ ،‬رمزگشائی و اجرا شده و نهایتا به اجرای هر دستور در یک‬
‫سیکل منجر میشود‪.‬‬
‫تعداد زیادی رجیستر در داخل ‪ CPU‬وجود دارد‬
‫استفاده از تکنیک همپوشانی ‪ register windows‬که باعث‬
‫افزایش سرعت صدا زدن تابغ و بازگشت از آن میشود‪.‬‬
‫حمایت از کامپایلر برای افزایش کارائی در ترجمه برنامه های سطح‬
‫باال‬
‫مقایسه ‪RISC, CISC‬‬
‫‪ ‬برای مثال ترجمه دستور ‪ a = a * b‬برای دو معماری فوق‬
‫بصورت زیر خواهد بود‪:‬‬
‫•‬
‫•‬
‫برای مثال ترجمه دستور ‪ a = a * b‬برای دو‬
‫معماری فوق بصورت زیر خواهد بود‪:‬‬
‫در معماری ‪ CISC‬سعی بر این است که با تعداد‬
‫کمی دستورزبان ماشین عمل مورد نظر انجام شود ‪.‬‬
‫در حالیکه در‪ RISC‬سعی بر این است که از‬
‫دستوراتی استفاده شود که هر دستور در یک پالس‬
‫قابل اجرا باشند ‪.‬در نتیجه برنامه ‪ RISC‬دارای‬
‫چندین خط دستور خواهد بود که احتیاج به‬
‫حاقظه بیشتری دارد‪.‬‬
‫‪60‬‬
‫‪MULT a, b‬‬
‫‪CISC‬‬
‫‪LOAD R1, a‬‬
‫‪LOAD R2, b‬‬
‫‪MUL R1,R2‬‬
‫‪STORE a, R1‬‬
‫‪RISC‬‬
‫مقایسه‪RISC, CISC‬‬
‫‪ ‬فرمول محاسبه کارائی‬
‫‪Instruction‬‬
‫‪Clock‬‬
‫‪X CPI X‬‬
‫‪Count‬‬
‫‪Cycle Time‬‬
‫‪RISC‬سعی میکند تا این‬
‫قسمت کاهش پیدا کند‬
‫‪61‬‬
‫=‬
‫‪CPU‬‬
‫‪Execution‬‬
‫‪Time‬‬
‫‪CISC‬سعی میکند تا این‬
‫قسمت کاهش پیدا کند‬
‫پیشگامان ‪RISC‬‬
‫‪ ‬ایده ‪ RISC‬در دهه ‪ 80‬معرفی گردید ‪.‬از جمله پیشگامان آن‬
‫میتوان به موارد زیر اشاره نمود‬
‫‪IBM 801 ‬‬
‫‪Stanford MIPS ‬‬
‫‪Berkeley RISC 1 and 2 ‬‬
‫‪62‬‬
‫کاربردهای ‪RISC‬‬
‫• تعدادی از پردازنده های مشهور مبتنی بر ‪RISC‬‬
‫عبارتند از‪:‬‬
‫–‬
‫–‬
‫–‬
‫–‬
‫–‬
‫‪63‬‬
‫‪ ARM/StrongARM‬که در تلفنهای همراه استفاده میشود‬
‫‪ MIPS Rxx00‬که در برخی دستگاه های بازی مورد استفاده است‬
‫‪ Hitachi SH‬مورد استفاده در سیستم های ‪embedded‬‬
‫‪ POWER/PowerPC‬مورد استفاده در کامپیوترهای‪MAC‬‬
‫‪ Intel Pentium II and III‬اگرچه از معماری ‪ CISC‬پیروی میکنند‬
‫ولی بسیاری از ویژگی های ‪ RISC‬را دارا هستند‪.‬‬
‫‪overlapped register windows‬‬
‫‪ ‬صدا زدن برنامه فرعی و بازگشت از آن بخش مهمی از اجرای‬
‫برنامه را بخود اختصاص میدهد‪ .‬لذا سرعت بخشیدن به آن‬
‫میتواند تاثیر زیادی در افزایش کارائی پردازنده داشته باشد‪.‬‬
‫‪ ‬هنگام صدا زدن یک برنامه فرعی دستوراتی استفاده میشوند که‬
‫مقادیر رجیسترها را ذخیره کنند‪ ،‬و پارامترها را انتقال دهند‪.‬‬
‫‪ ‬برای بازگشت از برنامه فرعی مقدار بازگشتی تابع به برنامه صدا‬
‫زننده منتقل شده و مقادیر ذخیره شده رجیسترها بازیابی میشوند‪.‬‬
‫‪64‬‬
‫‪overlapped register windows‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪65‬‬
‫دربرخی از معمارهای ‪ RISC‬برای سهولت انتقال بین توابع از‬
‫همپوشانی پنجره ای رجیسترها استفاده میشود تا نیاز به ذخیره و‬
‫بازیافت مقادیر رجیسترها را حذف نمایند‪.‬‬
‫هر زمان که تابعی صدا زده میشود پنجره ای از رجیسترها از میان‬
‫بانک رجیسترموجود در پردازنده به آن اختصاص می یابد‪.‬‬
‫اینکار از طریق افزایش پوینتری انجام میشود‪ .‬با برگشت از تابع پوینتر‬
‫به مقدار قبلی آن کاهش داده میشود‪.‬‬
‫پنجره مورد استفاده برای توابع همجوار (فراخوانی شونده و فراخوانی‬
‫کننده) همپوشانی دارند تا امکان به اشتراک گذاشتن داده ها بین دو‬
‫تابع وجود داشته باشد‪.‬‬
‫مثال‬
‫‪ ‬در کتاب «مانو» سیستمی معرفی شده است که دارای بانک رجیستری‬
‫با مشخصات زیر است‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫این بانک دارای ‪ 74‬رجیستر است‪.‬‬
‫رجیستر های ‪ R0‬تا ‪R9‬بعنوان رجیسترهای عمومی قابل استفاده تمامی‬
‫توابع هستند‪.‬‬
‫بقیه رجیسترها به ‪ 4‬گروه (پنجره) ‪ A,B,C,D‬تقسیم شده اند‪.‬‬
‫هر پنجره دارای ‪ 10‬رجیستر اختصاص ی و دو دسته رجیستر ‪ 6‬تائی مشترک‬
‫با با پنجره های مجاور است‪.‬‬
‫از رجیسترهای اختصاص ی برای ذخیره متغیرهای محلی و از رجیسترهای‬
‫مشترک برای انتقال پارامترها استفاده میشود‪.‬‬
‫به این ترتیب هر تابع میتواند از ‪ 32‬رجیستر استفاده نماید‬
‫مثال‬
Common to D and A
R15
R10
R73
Local to D
R64
R63
R58
Common to D and C
R57
Local to C
Proc. D
R48
R47
R42
Proc. C
Common to B and C
R41
R32
R9
Local to B
R31
Common to B and A
R26
Proc.B
R10
Global Registers
R25
R16
R15
Local to A
Common to D and A
R10
Proc.A
67
‫‪overlapped register windows‬‬
‫‪ ‬نحوه محاسبه رجیسترهای قابل استفاده برای هر تابع به صورت زیر‬
‫است‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪= G‬تعداد رجیسترهای عمومی‬
‫‪= L‬تعداد رجیسترهای اختصاص ی هر پنجره‬
‫‪= C‬تعداد رجیسترهای مشترک بین دو پنجره‬
‫‪= W‬تعداد پنجره ها‬
‫‪ = L+2C+G‬اندازه پنجره‬
‫‪ = (L+C)W+G‬تعداد کل رجیسترها در بانک رجیستری‬
‫‪68‬‬
‫مثالی از پردازنده‪Berekely RISC I : RISC‬‬
‫‪ ‬یکی از اولین معماری های ‪ RISC‬است که در دانشگاه برکلی مطرح‬
‫شد‪.‬‬
‫‪ ‬این پردازنده ‪ 32‬بیتی است‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪69‬‬
‫دارای آدرس ‪ 32‬بیتی بوده و میتواند از داده های‪ 8‬و‪16‬و ‪32‬بیتی‬
‫استفاده نماید‪.‬‬
‫سه مد آدرس دهی دارد‪ :‬رجیستری‪ ،‬بالدرنگ و نسبی‬
‫یک بانک رجیستری ‪ 138‬تائی شامل ‪ 10‬رجیستر عمومی و ‪ 8‬پنجره ‪32‬‬
‫رجیستری دارد‪.‬‬
‫‪31‬دستورالعمل دارد‪.‬‬
Brekely RISC I ‫فرمت دستورات‬
31
24 23
Opcode
19 18
14 13
Rs
Rd
0
12
5 4
Not Used
0
S2
Register mode: S2=register
31
24 23
Opcode
19 18
14 13
Rs
Rd
12
0
S2
1
Register Immediate mode: S2=operand
31
24 23
Opcode
19 18
COND
0
Y
PC relative Mode
70
Questions
71