Transcript PUSH
Department of Computer and IT Engineering
University of Kurdistan
Computer Architecture
CPU Structure
By: Dr. Alireza Abdollahpouri
اجزا تشکیل دهنده CPU
داده ها را ذخيره ميکند
مجموعه رجيسترها
Control
ALU
عمليات محاسباتی و منطقی را انجام ميدهد
2
•مشخص ميکند که چه عملی در چه زمانی انجام
گيرد.
•از کالک استفاده ميکند
•بصورت سخت افزاری و يا ميکروپروگرام
سيگنال الزم را به بخشهای مختلف ميفرستد.
معماريهاي مختلف CPU
• سازمان تک انباره ای
• سازمان چند رجيستري مانند SPARC, MIPS, Alpha,
• سازمان پشته ای
مثال :ماشين های X86دارای يک معماری با مجموعه دستورات پيچيده
ای است که تمامی جنبه های معماری های فوق را در بر ميگيرد.
3
اهمیت معماری CPUچقدر است؟
• استفاده کننده نهائی:
هیچ!
• برنامه نویس سطح باال
خیلی کم .تا حدی که بتواند کامپایلر مناسب را انتخاب نموده و عملکرد برنامه را بهینه
کند.
• برنامه نویس سطح پائین /طراح OS
این افراد باید اطالعات کافی در مورد رجیسترها ،ساختار حافظه ،انواع داده های موجود و
عملکرد دستورات داشته باشند.
• طراحان کامپیوتر:
این افراد نیز باید اطالعات فوق را داشته باشند تا بتوانند اجزا سخت افزای مورد نیاز را
انتخاب کنند.
4
ساختار رجیسترها
• یکی از مهمترین ویژگی های تعیین کننده برا ی یک CPUساختار رجیسترهای داخلی آن است .این
رجیستر ها به دو دسته تقسیم بندی میشوند:
• رجیسترهائی که استفاده کننده آنها را می بیند! و میتواند از طریق برنامه نویس ی به آنها دسترس ی
داشته باشد
– Data registers
– Address registers
• index register
• segment pointer
• stack pointer
– )Condition codes (flags
• رجیسترهائی که برای کنترل و نگهداری وضعیت CPUبکار میروند .این رجیسترها توسط واحد
کنترل برای اجرای دستورات مورد استفاده واقع میشوند.
– Program counter
– Instruction register
5
سازمان تک انباره ای
• يک آکوموالتور
• مشابه با کامپيوتر پايه
فصل پنجم
4096*16 RAM
BUS
ADDRESS
AR
PC
DR
AC
ALU
INPR
همواره يکی از
اپرندها
اکوموالتور است
6
IR
TR
OUTR
سازمان رجيستر عمومی
• GENERAL REGISTER
• تمامی رجيسترها می توانند به عنوان اپراند دستورالعملهای ALU
بکار برده شوند.
• مثال :رجيسترهای داده در پردازنده پنتيوم
7
)ورودي خارجي(حافظه
clock
R1
R2
R3
R4
R5
R6
R7
Loads
DEC
S1
MUXA
MUXB
A
B
S2
D
OP-CODE
ALU
8
Output
مجموعه رجیسترهای عمومی و ALUمشترک
در شکل فوق:
• خروجی هر رجیستر به دو MUXمتصل شده است .اینکار باعث میشود تا
هر یک از آنان را بتوان آزادانه بعنوان مبدا عملیات ALUانتخاب نمود.
• برای اینکه بتوان خروجی ALUرا به هر یک از رجیستر ها منتقل نمود این
خروجی به ورودی تمام رجیسترها متصل شده و عالوه بر آن با استفاده از یک
دیکودر مقصد عملیات را مشخص میکنیم.
• یک ALUممکن است که قادر به انجام عملیات مختلفی باشد ،برای
انتخاب یک عمل مورد نیاز از خطوط کنترلی OPRاستفاده میشود.
9
مثالی از عملیات 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منتقل نماید.
10
قالب دستورالعملها
•
•
انتخاب عمل در ALU
انتخاب رجيسترهای مبدا
– مولتی پلکسر 1
– مولتی پلکسر 2
•
انتخاب رجيستر مقصد
– ديکدر
•اين چهار قسمت قبل از وارد شدن پالس ساعت بايد آماده ياشند.
• ALUاز مدارات بسيار سريع ساخته ميشود تا نتيجه را سريعتر آماده كند.
3
D
3
3
5
S2
S1
OP-CODE
Register
Binary
code
Input
000
R1
001
R2
010
R3
011
R4
100
R5
101
R6
110
R7
11
111
عمليات ALU
• در CPUانجام عمليات محاسباتی
و منطقی بر عهده ALUاست.
عمل شيفت را ميتوان توسط يک
Shifterکه قبل و يا بعد از ALU
قرار ميگيرد انجام داد .در مواردی
هم ممکن است عمل شيفت توسط
خود ALUانجام شود .در فصل 4
طراحی چنين ALUرا ديديم که
عمليات آن در جدول مقابل ذکر شده
است.
12
Symbol
Operation
OPcode
TSFA
Transfer A
00000
INCA
Increment A
00001
ADD
Add A + B
00010
SUB
Subtract A – B
00101
DECA
Decrement A
00110
AND
And A and B
01000
OR
OR A and B
01010
XOR
XOR A and B
01100
COMA
Complement A
01110
SHRA
Shift right A
10000
SHLA
Shift left A
11000
مثال
• برای انجام ميکرواپريشن زير
R1 R2 – R3
ميبايست کلمه کنترلی بصورت زير انتخاب شود:
D
S2
S1
OP-code
Field:
R1
R3
R2
SUB
Symbol
001
011
010
00101
Control word
همانطور که قبال ديديم يک راه پياه سازی واحد کنترل استفاده از
ميکروپروگرامينگ است که در آن هر کلمه کنترلی در يک محل از حافظه
ROMذخيره خواهد شد.
13
ارتباط با حافظه
INPUT
R1
R2
R3
R4
R5
R6
R7
DEC
MUX
MUX
ALU
14
سازمان پشته يا Stack
•
•
•
•
•
•
15
ساختار LIFO
PUSH
POP
دسترسی فقط به عنصر باالی پشته امکانپذير است
فقط يک اشاره گر نياز داريم
SP = STACK POINTER
PUSH
• SP ← SP+1
• M[SP] ← DR
• IF ( SP=0) THEN
(FULL←1)
• EMPTY ← 0
كلمه اي64 يك پشته
63
FULL
EMPTY
3
SP
2
بيتي6
1
0
DR
16
POP
•
•
•
•
DR ← M[SP]
SP ← SP-1
IF ( SP=0) THEN ( EMPTY ←1)
FULL ← 0
FULL
63
EMPTY
3
SP
2
بيتي6
1
0
DR
17
استفاده برای صدا زدن برنامه فرعی- کاربرد
(Procedure call)• صدا زدن برنامه فرعی
– call label
Push return address on stack;
Jump to label
(Procedure return) • برگشت از تابع
– ret
Pop address from stack;
Jump to address
18
کاربرد -استفاده در برنامه هاي برگشت پذير
)(recursive
•
•
•
•
•
19
استفاده از پشته باعث میشود تا امکان پیاده سازی برنامه های برگشت پذیر
فراهم گردد.
با استفاده از پشته میتوان برای هر نسخه از تابع صدا زده شده حافظه
جداگانه ای در نظر گرفت
آرگومانها و متغیرهای محلی را میتوان در پشته ذخیره نمود.
آدرس دهی متغیرهای محلی و آرگومانها نسبت به موقعیت پشته انجام میشود.
بازگشت از توابع عکس حالتی است که صدا زده شده اند
کاربرد
عبارات محاسباتی
A*B+C/D
POLISH NOTATION
AB*CD/+
•
•
•
•
20
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)
21
AB*CD/+
PUSH A
PUSH B
B
A
22
AB*CD/+
PUSH A
PUSH B
MUL
PUSH C
PUSH D
D
C
A*B
23
AB*CD/+
PUSH A
PUSH B
MUL
PUSH C
PUSH D
DIV
C/D
A*B
24
AB*CD/+
PUSH A
PUSH B
MUL
PUSH C
PUSH D
DIV
ADD
A*B+ C/D
25
کدام مجموعه از عمليات ذيل می تواند يک پشته را پياده سازی نمايد ؟
PUSH A
POP A
SP ←SP-1
A ←MEM[SP]
MEM[SP] ←A
SP ←SP+1
SP ←SP+1
A ←MEM[SP]
MEM[SP] ←A
SP ←SP-1
MEM[SP] ←A
SP ←SP+1
SP ←SP-1
A ←MEM[SP]
هر سه
1,3
2,3
1
2
3
1,2
26
انواع ساختار پشته
• پشته رجيستري
– سرعت دسترسی باال
– قيمت زياد
– تعداد کم
• پشته حافظه ای
– کند
– ارزان
– حجم زياد
27
تاثير نوع CPUبر قالب دستورات
• تک انباره
– معموال يک اپرند آکوموالتور است
– دستورات تک آدرسی
• چندرجيستری )رجيسترهاي عمومي(
– اپرندها رجيستر هستند
– دستورات سه آدرسی ) يا دو آدرسی(
• پشته ای
– فقط اپرند مربوط به پوش يا پاپ
– دستورات يک آدرسی و صفر آدرسی
28
تاثير قالب دستورالعمل ها بر روی سرعت اجرا
• مقايسه يک عمليات يکسان در سه حالت مختلف
• محاسبه )X= (A+B)*(C+D
–
–
–
–
29
دستورات سه آدرسی
دستورات دو آدرسی
دستورات يک آدرسی
دستورات صفرآدرسی
دستورات سه آدرسی
در کامپيوترهای سهآدرسی ،هر قسمت آدرس ،برای مشخص نمودن يک ثبات
پردازنده و يا آدرس يک عملوند در حافظه تخصيص داده میشود.
)X = (A+B) * (C+D
]R1 M[A] + M[B
]R2 M[C] + M[D
M[X] R1 × R2
30
ADD R1, A, B
ADD R2, C, D
MUL X, R1, R2
دستورات دو آدرسی
دستورات دوآدرسی معمولترين فرمت دستور در کامپيوترها هستند .قسمت آدرس
میتواند يک رجيستر پردازنده يا يک خانه حافظه را مشخص نمايد.
)X = (A+B) * (C+D
31
]R1 M[A
MOV R1, A
]R1 R1 + M[B
ADD R1, B
]R2 M[C
MOV R2, C
]R2 R2 + M [D
ADD R2, D
R1 R1 × R2
MUL R1, R2
M[X] R1
MOV X, R1
دستورات يک آدرسی
راAC رجيستر اکوموالتور، برای تمام عمليات بر روی دادهها،دستورات يکآدرسی
.بهکار میبرند
X = (A+B) * (C+D)
LOAD A
AC M[A]
ADD B
AC AC + M[B]
STORE T
M[T] AC
LOAD C
AC M[C]
ADD D
AC AC + M[D]
MUL T
AC AC × M[T]
STORE X
M[X] AC
32
دستورات صفرآدرسی
X = (A+B) * (C+D)
•
•
•
•
•
•
•
•
PUSH A
PUSH B
ADD
PUSH C
PUSH D
ADD
MUL
POP X
33
RISC دستورات كامپيوترهاي
X = (A + B) × (C + D)
LOAD
LOAD
LOAD
LOAD
ADD
ADD
MUL
STORE
R1, A
R2, B
R3, C
R4, D
R1, R1, R2
R3, R3, R4
R1, R1, R3
X, R1
R1 M[A]
R2 M[B]
R3 M[C]
R4 M[D]
R1 R1 + R2
R3 R3 + R4
R1 R1 × R3
M[X] R1
34
روشهاي آدرسدهی
دستورات یک کامپیوتر عملی را بر روی داده ذخیره شده در حافظه و یا
رجیسترهای CPUانجام میدهند .روش مشخص کردن عملوند یک
دستورالعمل حاالت آدرس دهی و یا addressing modeنامیده
میشود .
اصوال حاالت مختلف آدرسدهی عملوند دستور ،تسهیالت زیر را در
سیستم فراهم میآورد:
.1
قابلیت ایجاد شمارنده برای برنامه حلقه ،و شاخصبندی در دادهها
و همچنین ایجاد اشارهگر حافظه و جابجایی برای کاربر فراهم
میشود
.2
35
امکان تقلیل تعداد بیتهای قسمت آدرس دستور ،فراهم میشود.
•
•
•
•
•
•
•
•
•
•
انواع حالت های آدرس دهی
Implied Addressing Mode
Immediate Addressing Mode
Register Addressing
Register Indirect Addressing
Autoincrement or Autodecrement
Direct Addressing Mode
Indirect Addressing Mode
Relative Addressing Mode
Index Addressing Mode
Base Register Addressing Mode
آدرس دهی ضمنی
آدرس دهی بالدرنگ
آدرس دهی ثبات
آدرس دهی غير مستقيم بکمک ثبات
آدرس دهی افزايش و يا کاهشی خودکار
آدرس دهی مستقيم
آدرس دهی غير مستقيم
آدرس دهی نسبی
آدرس دهی شاخص
آدرس دهی با ثبات پابه
36
•
•
•
•
•
•
•
•
•
•
آدرس دهی ضمنی
• Implied Addressing Mode
در اين روش اپراندها بصورت ضمنی در داخل دستورالعمل مشخص
ميشوند .
– مثل دستور CMAکه محتوی آکوموالتور را متمم ميکند.
– دستورات صفر آدرسی مورد استفاده در کامپيوترهای stack machineنيز از
آدرس دهی ضمنی استفاده ميکنند زيرا عملوندها بطور ضمنی در باالی پشته در
نظر گرفته ميشوند.
37
آدرس دهی بالدرنگ
• Immediate Addressing Mode
در اين روش مقدار عملوند در داخل خود دستورالعمل داده ميشود.
اين مد آدرس دهی برای مقدار دهی رجيسترها بکار ميرود.
– مثل دستور زير در پردازنده x86
MOV CX, 1024
Operand
38
Instruction
آدرس دهی رجيستري
•
Register Addressing
در اين روش عملوندها در داخل رجيسترهای پردازنده قرار دارند .با
استفاده از Kبيت ميتوان تعداد 2kرحيستر را مشخص نمود.
– مثل دستور زير در پردازنده x86
ADD AL, BL
CPU registers
R
Instruction
Operand
39
آدرس دهی رجيستري غير مستقيم
• Register Indirect Addressing
• در اين روش دستورالعمل رجيستری را مشخص ميکند که محتوی
آن آدرس عملوند در حافظه را مشخص خواهد نمود.
– مثل دستور زير در پردازنده x86
]MOV BX,[SI
Memory
CPU registers
Instruction
Operand
40
R
آدرس دهی افزايش و يا کاهشی خودکار
• Autoincrement or Autodecrement addressing
• اين روش مشابه آدرس دهی رجيستري غير مستقيم است با اين
تفاوت که مقدار رجيستر بعد يا قبل از استفاده برای محاسبه آدرس
موثر افزايش و يا کاهش ميابد.
Memory
Operand
CPU registers
R
Instruction
R=R+1
R=R-1
41
آدرس دهی مستقيم
• Direct Addressing Mode
در اين روش آدرس عملوند در داخل دستورالعمل ذکر ميشود.
– مثل دستور زير در پردازنده x86
]MOV AX,[3000
Memory
Instruction
Operand
42
Address
آدرس دهی غير مستقيم
• Indirect Addressing Mode
در اين روش آدرس موجود در دستورالعمل محلی از حاقطه را مشخص ميکند که
آدرس عملوند درآنجا قرار دارد .در اين حالت برای دسترسی به عملوند دوبار
رجوع به حافطه مورد نياز است :يکبار برای پيدا کردن آدرس آن و بار ديگر
برای خواندن مقدار آن .
Memory
Instruction
Operand
Address
43
آدرس دهی نسبی
Relative Addressing Mode •
• در اين روش آدرس موثر از جمع آدرس مشخص شده در داخل
: حاصل ميشودPC دستورالعمل و محتوی
Effective Address= address part of instruction + content of PC
Memory
Instruction
Address
Operand
+
PC
44
آدرس دهی شاخص دار
• Index Addressing Mode
• در اين روش آدرس موثر از جمع آدرس مشخص شده در داخل دستورالعمل و محتوی يک رجيستر
مخصوص که رجيستر ايندکس ناميده ميشود حاصل ميشود:
Effective Add.= address part of instruction + content of index register
• معموال از اين روش برای دسترسی به داده های يک آرايه استفاده ميشود .که محل شروع داده ها در
حافظه در دستورالعمل مشخص ميشود و فاصله داده مورد نظر تا محل شروع توسط رجيستر ايندکس
تعيين ميگردد.
Memory
Instruction
Operand
Address
+
Index Register
45
آدرس دهی با ثبات پايه
• Base Register Addressing Mode
• اين روش مشابه آدرس دهی با ثبات شاخص است با اين تفاوت که
بجای ثبات شاخص از ثبات پايه استفاده ميشود .تفاوت اين دو
روش در نحوه استفاده از رجيسترهاست .
Effective Add.= address part of instruction + content of Base register
Memory
Instruction
Operand
Address
+
Base Register
46
مثال عددی
حافظه
مقدار آکوموالتور در صورت اجرای
دستور موجود در آدرس 200برای
حالتهای مختلف آدرس دهی چيست؟
حالت
آدرس
بارکردن AC
200
= 500آدرس
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
مجموعه دستورات کامپيوتر
•
•
•
•
49
دستورات مورد استفاده درکامپيوترهای مختلف از لحاظ تعداد،
عملکرد ،نشانه های مورد استفاده برای اسمبلی ،و کد باينری بسيار
متفاوت هستند با اين وجود تمامی آنها دارای دستوراتی از گروههای
زير ميباشند:
دستورات انتقال داده
دستورات محاسباتی ،منطقی و جابجائی
دستورات کنترل برنامه
دستورات معمول انتقال اطالعات
50
فرم سمبولیک
نام
LD
Load
ST
Store
MOV
Move
انتقال داده بين رجيسترها
انتقال داده بين حافظه و رجيسترها
XCH
Exchange
تعويص داده های دو رحيستر و يا
يک رجيستر و حافظه
IN
Input
OUT
Output
PUSH
Push
POP
Pop
انتقال داده بين حافظه و
رجيسترها
انتقال داده بين
ورودی/خروجی و رجيسترها
انتقال داده بين پشته و
رجيسترها
هشت حالت آدرسدهی برای دستور بارکردن
زبان اسمبلی
عملكرد
حالت آدرسدهی
]AC M[ADR
LD ADR
]]AC M [M[ADR
LD @ADR
آدرسدهی غیرمستقیم
]AC M [PC + ADR
LD $ADR
آدرسدهی نسبی
AC NBR
LD #NBR
آدرسدهی بالفصل
]AC M [ADR + XR
)LD ADR (X
آدرسدهی شاخص
AC RI
LD RI
]AC M [RI
)LD (RI
AC M [RI], RI RI + 1
LD (RI)+
51
آدرسدهی مستقیم
آدرسدهی ثبات
آدرسدهی رجیستري غیرمستقیم
آدرسدهی افزایش خودکار
دستورات معمولی ریاضی
نام دستور
نماد دستور
افزایشدهنده یک
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
52
دستورات منطقی و عملیات روی بیت
نام دستور
نماد دستور
CLR
Clear
صفر کردن
COM
Complement
مکمل کردن
AND
AND
AND
OR
OR
OR
XOR
XOR
XOR
CLRC
Clear carry
صفر کردن بیت نقلی
SETC
Set carry
یک کردن بیت نقلی
COMC
Complement carry
مکمل کردن بیت نقلی
EI
Enable Interrupt
فعال کردن وقفه
DI
Disable Interrupt
غیرفعال کردن وقفه
53
دستورات معمولی شیفت
نام دستور
فرم نمادین
شیفت به راست
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
54
دستورات متداول کنترل برنامه
نام دستور
فرم
نمادین
انشعاب
Branch
BR
پرش
Jump
JMP
رد کردن
SKIP
SKP
صدا زدن
Call
CALL
بازگشت
Return
RET
مقایسه
Compare( By subtraction)
CMP
تست
Test( By ANDing)
TST
55
بيت های وضعيت
A
B
16-bit ALU
C15
C16
F15-F0
شرطهايي كه بر اساس آنها تصميم در
مورد پرش گرفته ميشود بر اساس اين
بيتها هستند.
C
S
Z
V
F15
Check For Zero Output
Output F
56
مقايسه اعداد عالمت دار و بدون عالمت
سوال:
Aو Bكدام بزرگترند؟
A= 11110000
جواب :بستگي دارد آنها را عالمت دار و يا بدون عالمت
در نظر بگیريم.
بدون عالمت)(A>B
57
B= 00010100
عالمت دار)(A<B
َA= 240
َA= -16
B = 20
B = 20
وقفه
انواع مختلف وقفه در کامپيوتر
• وقفه های خارجی
– اين وقفه ها سخت افزاری بوده و توسط يک وسيله خارجی نظير IOو يا تايمر رخ
ميدهد.
• وقفه های داخلی
– در اثر استفاده غلط و نابجای يک دستور حاصل ميشود .مثل رخ دادن Overflowانجام
يک تقسيم بر صفر ،يک کد دستورالعمل غلط ،سرريز شدن پشته ،و protection
violation
– برنامه سرويس دهی به وقفه در هر مورد در باره عکس العمل مناسب تصميم ميگيرد .اين
وقفه گاهی trapناميده ميشود.
• وقفه های نرم افزاری
– نوع خاصی از صدا زدن برنامه فرعی هستند .برای انجام عمليات خاصی نظير تغيير مد
برنامه از حالت userبه supervisorو يا انجام سرويس خاصي) مثال چاپ يك
كاراكتر(بکار ميروند.
58
قالب دستورالعمل ها
• قالب دستورالعملها وابسته به نوع طراحی CPUاست.
• بخش های مختلف يک دستورالعمل
– OP-CODE
– آدرس ) حافظه ،ثبات (....
– شيوه آدرسدهی
59
طول دستورالعمل
• ثابت
• متغير
• تنوع دستورالعملها
– کامپيوترهای ) CISCپر دستور (
– کامپيوترهای ) RISCکم دستور (
60
کامپيوترهای با مجموعه دستورات پيچيده CISC
• معماری يک کامپيوتر متاثر از مجموعه دستورات انتخاب شده برای آن است.
• در کامپيوتر های اوليه سعی بر اين بود تا تعداد دستورات کم و ساده باشد تا
پياده سازی سخت افزاری آن ممکن باشد.
• با پيشرفت در زمينه سخت افزار و ارزان شدن آن تعداد دستورات کامپيوترها
افزايش يافته و بر پيچيدگی آنها افزوده گرديد .هدف اين بود تا هر چه بيشتر
نياز های کاربران را در سخت افزار گنجانده وبا کاهش فاصله بين زبانهای
سطح باال و دستورات کامپيوتر کار ترجمه دستورات سطح باال را ساده تر
کنند .اين نوع کامپيوترها گاها تا 200دستور و تعداد بسيار زيادی مد آدرس
دهی داشتند .اين کامپيوتر ها را Complex instruction set
)computer (ciscمينامند.
61
ويژگی های کامپيوترهای CISC
•
•
•
•
•
•
62
تعداد زيادی دستورالعمل دارند ) 100تا 200عدد(
دستوراتی برای انجام کارهای ويژه دارند که معموال بندرت مورد
استفاده قرار ميگيرند
تعداد زيادی مد آدرس دهی دارند
طول دستورالعمل ها متفاوت است
دستوراتی دارند که عملياتی را بر روی اپراندهای موجود در حافظه
انجام ميدهند.
برای اجرای دستورات به چندين کالک نياز هست.
کامپيوترهای با مجموعه دستورات کاهش يافته RISC
• معماری RISCابداعی مهم در زمينه سازمان کامپيوتر بشمار
ميرود.
• در اين معماری سعی شده است تا با ساده تر کردن مجموعه
دستورالعمل ها بر قدرت پردازنده افزوده شود.
63
با پيشرفت زيانهای سطح باال اختالف بين برنامه
های سطح باال و زبان ماشين گسترش
يافت.هر يک از معماريهای فوق روش
مختلقی برای کاهش اين اختالف معرفی
کردند تا ترجمه زبانهای سطح باال بطرز
موثرتری انجام شود.
زبان سطح باال
زبان ماشين
• نگرش : CISCدستورات زبان ماشين پيچيده تر و به زبان سطح
باال نزديکتر گردد.
• نگرش : RISCدستورات زبان ماشين ساده تر و به نيازهای
برنامه نزديکتر گردد.
64
The Semantic Gap
The Semantic Gap
دستورات پرمصرف در کامپيوتر کدامند؟
• مطالعات زيادی که برای تعيين مشخصات و الگوی دستورات
حاصل از ترجمه برنامه های سطح باال انجام گرفت نشان ميدهد
که:
• از لحاظ تعداد دفعات استفاده از دستورات روند زير بطور تقريب
وجود داشته است:
moves: 33%
conditional branch: 20%
arithmetic/logic: 16%
others: between 0.1% and 10%
دستورات ساده پر مصرف تر هستند
65
–
–
–
–
دستورات پرمصرف در کامپيوتر کدامند؟
• از لحلظ مد آدرس دهی:
– تقريبا 18 %مواقع از مدهای آدرس دهی پيچيده نظير memory
indirect, indexed+indirect, displacement+indexed,
stackاستفاده شده است.
– در بيشتر موارد از مدهای آدرس دهی ساده که امکان محاسبه آدرس در
يک سيکل وجود داشته استفاده ميشود .نظير register, register
indirect, displacement
مدهای آدرس دهی ساده ارجح هستند.
66
دستورات پرمصرف در کامپيوتر کدامند؟
•
•
•
•
از لحاظ نوع عملوندها:
75%عملوندها مقاديرعددی نظيرمقادير صحيح ،حقيقی و يا
کاراکتری هستند که ميتوان آنها را در رجيسترها ذخيره نمود.
بقيه آنها آرايه ها و استراکچها هستند که بيشتر بصورت متغيرهای
خارجی مورد استفاده قرار ميگيرند.
80%عملوندهای عددی بصورت متغيرهای محلی مورد استفاده
قرار ميگيرند.
اکثر عملوندها بصورت متغیرهای عددی محلی هستند که ميتوان آنها رادر
رجيستر ذخیره نمود.
67
دستورات پرمصرف در کامپيوتر کدامند؟
• از لحاظ زمانی که برای اجرای دستورات مصرف ميشود:
– با وجود آنکه دستورات مربوط به صدا زدن برنامه فرعی و بازگشت از آن
تقريبا 15%از دستورات برنامه را تشکيل ميدهند ،اغلب وقت cpu
صرف اجرا آنها ميشود.
– دستورات callو returnبه مجموعه بزرگی از دستورات زبان ماشين
ترجمه ميشوند که بسيار نياز به رجوع به حافظه دارند.
• مطالعات آماری برروی صدا زدن توابع نشان ميدهد که:
• فقط 2%توابع بيشتر از 6پارامتر دارند
• فقط 7%توابع بيشتر از 6متغير محلی دارند
• زنجيره توابعی که يکديگر را صدا بزنند کوتاه بوده و بندرت از 6تابع بيشتر ميشود.
بهينه کردن عمل صدا زدن تابع و بازگشت از آن ميتواند کارآيی پردازنده را افزايش دهد
68
ويژگی های RISC
• دستورات ساده و کمی دارند
–
–
–
–
69
هدف اين است که بتوان دستورات را بسرعت اجرا کرد .اغلب دستورات
RISCدر يک سيکل اجرا ميشوند )بعد ازواکشی و رمزگشايی(
چون دستورات در زمان مشابهی اجرا ميشوند عمل pipelineدارای
بازده بااليی خواهد بود.
کم بودن دستورات باعث ساده شدن واحد کنترل ومسيرهای ارتباطی
ميشود که منجر به کم شدن تعداد ترانزيستورهای مورد نياز برای ساخت
پردازنده ميشود اينکار سرعت پردازنده را نيز افزايش ميدهد..
در ضمن ميتوان واحد کنترل را بروش سيم بندی ساخت.
ویژگی های RISC
• دسترس ی به حافظه محدود به دستورات load , Storeاست
– از آنجائیکه عمل رجوع به حافظه معموال در یک سیکل امکانپذیر
نمیباشد،تمهیداتی در کامپایلر استفاده میشود تا pipelineبطور موثرتری
استفاده شود.
– باقی دستورات بر روی محتوی رجیسترها عمل میکنند.
70
RISC ویژگی های
• تعداد مد های آدرس دهی آنها کم است
:– معموال فقط از مدهای آدرس دهی زیر استفاده میشود
•
•
•
•
register addressing
direct addressing
register indirect addressing
displacement addressing
71
ویژگی های RISC
• دستورات طول و فرمت یکسانی دارند
• اینکار باعث میشود تا خواندن دستورات و رمزگشائی آنها سریع و ساده
باشد.زیرا الزم نیست تا معلوم شدن طول دستور برای رمزگشایی آن صبر
کرد.
• یکسانی فرمت باعث سهولت رمزگشایی میگردد زیرا کد و ادرس همه
دستورات در محل یکسانی قرار دارند.
72
ویژگی های RISC
• تعداد رجیسترهای زیادی دارند.
– کم شدن دستورات باعث کوچگ شدن واحد کنترل و آزاد شدن فضا برای
گنجاندن تعداد بیشتری رجیستر میشود.
– متغیرهای محلی ،نتایج میانی و پارامترهای توابع در داخل رجیسترها ذخیره شده و
تعداد رجوع به حافظه کاهش پیدا میکند.
73
ساير ويژگی های RISC
•
•
•
•
74
استفاده ازتکنيک pipeliningکه باهمپوشانی سيکل های واکشی،
رمزگشائی و اجرا شده و نهايتا به اجرای هر دستور در يک سيکل
منجر ميشود.
تعداد زيادی رجيستر در داخل cpuوجود دارد
استفاده از تکنيک همپوشانی register windowsکه باعث
افزايش سرعت صدا زدن تابغ و بازگشت از آن ميشود.
حمايت از کامپايلر برای افزايش کارائی در ترجمه برنامه های
سطح باال
مقايسه RISC, CISC
• برای مثال ترجمه دستور a = a * bبرای دو معماری فوق
بصورت زير خواهد بود:
•
•
برای مثال ترجمه دستور a = a * bبرای دو
معماری فوق بصورت زير خواهد بود:
در معماری CISCسعی بر اين است که با تعداد
کمی دستورزبان ماشين عمل مورد نظر انجام
شود .در حاليکه در RISCسعی بر اين است که
از دستوراتی استفاده شود که هر دستور در يک
پالس قابل اجرا باشند .در نتيجه برنامه RISC
دارای چندين خط دستور خواهد بود که احتياج به
حاقظه بيشتری دارد.
75
MULT a, b
CISC
LOAD R1, a
LOAD R2, b
MUL R1,R2
STORE a, R1
RISC
مقايسهRISC, CISC
• فرمول محاسبه کارائی
• اگر از فرمول زير برای محاسبه کارائی کامپيوتر
استفاده شود:
CISCسعی ميکند تا اين
قسمت کاهش پيدا کند
76
RISCسعی ميکند تا اين
قسمت کاهش پيدا کند
پيشگامان RISC
• ايده RISCدر دهه 80معرفی گرديد .از جمله
پيشگامان آن ميتوان به موارد زير اشاره نمود
– IBM 801
– Stanford MIPS
– Berkeley RISC 1 and 2
77
کاربردهای RISC
• عمده پردازنده های کامپيوترهای سرور و workstarionاز نوع
RISCهستند.
• تعدادی از پردازنده های مشهور مبتنی بر RISCعبارتند از:
–
–
–
–
–
78
ARM/StrongARMکه در تلفنهای همراه استفاده ميشود
MIPS Rxx00که در برخی دستگاه های بازی مورد استفاده است.
Hitachi SHمورد استفاده در سيستم های embedded
POWER/PowerPCمورد استفاده در کامپيوترهایMAC
Intel Pentium II and IIIاگرچه از معماری CISCپيروی ميکنند
ولی بسياری از ويژگی های RISCرا استفاده ميکنند.
overlapped register windows
• ديديم که صدا زدن برنامه فرعی و بازگشت از آن بخش مهمی از
اجرای برنامه را بخود اختصاص ميدهد .لذا سرعت بخشيدن به آن
ميتواند تاثير زيادی در افزايش کارائی پردازنده داشته باشد.
• هنگام صدا زدن يک برنامه فرعی دستوراتی استفاده ميشوند که
مقادير رجيسترها را ذخيره کنند ،و پارامترها را انتقال دهند.
• برای بازگشت از برنامه فرعی مقدار بازگشتی تابع به برنامه صدا
زننده منتقل شده و مقادير ذخيره شده رجيسترها بازيابی ميشوند.
79
overlapped register windows
•
•
•
•
80
دربرخی از معمارهای RISCبرای سهولت انتقال بين توابع از
همپوشانی پنجره ای رجيسترها استفاده ميشود تا نياز به ذخيره و
بازيافت مقادير رجيسترها را حذف نمايند.
هر زمان که تابعی که صدا زده ميشود پنجره ای از رجيسترها از
ميان بانک رجيسترموجود در پردازنده به آن اختصاص ميابد.
اينکار از طريق افزايش پوينتری انجام ميشود .با برگشت از تابع
پوينتر به مقدار قبلی آن کاهش داده ميشود.
پنجره مورد استفاده برای تواب همجوار همپوشانی دارند تا امکان به
اشتراک گذاشتن داده ها بين دو تابع وجود داشته باشد.
overlapped register windows
pointer
pointer
pointer
از قسمت
مشترک
برای انتقال
اطالعات
استفاده ميشود
با برگشت تابع پوينتر
کاهش داده ميشود
81
پنجره رجيستر
اوليه
پنجره جديد
با صدا زدن تابع پنجره جديدی
از رجيسترها به آن اختصاص
داده ميشود.
بانک رجيستر
مثال
• در کتاب سيستمی معرفی شده است که دارای بانک رجيستری با
مشخصات زير است:
–
–
–
–
–
–
82
اين بانک دارای 74رجيستر است.
رجيستر های R0تا R9بعنوان رجيسترهای عمومی قابل استفاده تمامی
توابع هستند
بقيه رحيسترها به به 4گروه A,B,C,Dتقسيم شده اند .
هر پنجره دارای 10رجيستر اختصاصی و دو دسته رجيستر 6تائی
مشترک با با پنجره های مجاور است.
از رجيسترهای اختصاصی برا ذخيره متغيرهای محلی و از رجيسترهای
مشترک برای انتقال پارامترها استفاده ميشود.
به اين ترنيب هر تابع ميتواند از 32رحيستر استفاده نمايد
مثال
Common to D and A
R15
R10
R73
Local to D
R64
R63
Common to D and C
R58
Proc. D
R57
R48
Local to C
R47
R42
Proc. C
Common to B and C
R41
R32
R9
Local to B
R31
R26
Proc.B
R10
Global Registers
Common to B and A
R25
R16
R15
R10
Local to A
Common to D and A
Proc.A
83
overlapped register windows
• نحوه محاسبه رجيسترهای قابل استفاده برای هر تابع به صورت زير
است.
–
–
–
–
= Gتعداد رجيسترهای عمومی
= Lتعداد رجيسترهای اختصاصی هر پنجره
= Cتعداد رجيسترهای مشترک بين دو پنجره
= Wتعداد پنجره ها
= L+2C+Gاندازه پنجره
= (L+C)W+Gتعداد کل رجيسترها در بانک رجيستری
84
مثالی از پردازندهBerekely RISC I: RISC
• يکی از اولين معماری های RISCاست که در دانشگاه برکلی
مطرح شد.
• اين پردازنده 32بيتی:
–
–
–
–
85
دارای آدرس 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
Rs
Rd
14 13
12
0
S2
1
Register Immediate mode: S2=operand
31
24 23
19 18
Opcode COND
0
Y
PC relative Mode
86