آدرس دهی ضمنی
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