Transcript ساختار CPU
ساختار CPU
& فصل 8کتاب مانو
اجزا تشکیل دهنده CPU
داده ها را ذخیره میکند
Register Set
Control
ALU
عملیات محاسباتی و منطقی را انجام میدهد
مشخص میکند که چه عملی در چه زمانی انجام
گیرد.
بصورت سخت افزاری و یا میکروپروگرام سیگنال
الزم را به یخشهای مختلف میفرستد.
CPUاز دید استفاده کننده
از دید یک برنامه نویس که به زبان سطح پایین برنامه نویسی
میکند یک CPUدارای مشخصه های زیر خواهد بود
Instruction format
The instruction Set
Addressing modes
Register organization
معماری های مختلف CPU
Accumulator machine
Register machine :PowerPC
Stack machine :the Java virtual machine
مثال :ماشین های X86دارای یک معماری با مجموعه دستورات پیچیده ای است که تمامی جنبه
های معماری های فوق را در بر میگیرد.
اهمیت معماری CPUچقدر است؟
استفاده کننده نهائی:
هیچ!
برنامه نویس سطح باال
خیلی کم .تا حدی که بتواند کامپایلر مناسب را انتخاب نموده و عملکرد
برنامه را بهینه کند
برنامه نویس سطح پائین /طراح OS
این افراد باید اطالعات کافی در مورد رجیسترها ،ساختار حافظه ،انواع
داده های موجود و عملکرد دستورات داشته باشند.
ساختار رجیسترها
یکی از مهمترین ویژگی های تعیین کننده برا ی یک CPUساختار رجیسترهای داخلی آن است.
این رجیستر ها به دو دسته تقسیم بندی میشوند:
رجیسترهائی که استفاده کننده آنها را می بیند! و میتواند از طریق برنامه نویسی به آنها دسترسی
داشته باشد
Data registers
Address registers
index register
segment pointer
stack pointer
)Condition codes (flags
رجیسترهائی که برای کنترل و نگهداری وضعیت CPUبکار میروند .این رجیسترها توسط واحد
کنترل برای اجرای دستورات مورد استفاده واقع میشوند
Program counter
Instruction register
رجیسترهای عمومی
محلی برای ذخیره داده ها هستند که در داخل CPUتعبیه شده
اند تا با فراهم آوردن دسترسی سریع و آسان عملکرد CPUرا
افزایش دهند.
این رجیستر ها توسط یک باس مشترک مخصوص به هم وصل
میشوند
استفاده کننده میتواند از این رجیسترها برای کاربردهای مختلف
محاسباتی ،منطقی و شیفت استفاده نماید.
مشترکALU مجموعه رجیسترهای عمومی و
Clock
Input
R1
R2
R3
R4
R5
R6
R7
Load (7 inputs)
3x8
decoder
SETD
SETA
MUX
A bus
OPR
MUX
B bus
Arithmetic logic unit
(ALU)
Output
SETB
مجموعه رجیسترهای عمومی و ALUمشترک
در شکل فوق:
خروجی هر رجیستر به دو MUXمتصل شده است .اینکار باعث میشود
تا هر یک از آنان را بتوان آزادانه بعنوان مبدا عملیات ALUانتخاب
نمود.
برای اینکه بتوان خروجی ALUرا به هر یک از رجیستر ها منتقل
نمود این خروجی به ورودی تمام رجیسترها متصل شده و عالوه بر آن با
استفاده از یک دیکودر مقصد عملیات را مشخص میکنیم.
یک ALUممکن است که قادر به انجام عملیات مختلفی باشد ،برای
امتخاب یک عمل مورد نیاز از خطوط کنترلی OPRاستفاده میشود.
مثالی از عملیات ALU
برای مثال فرض کنید که میخواهیم میکرو اپریشن زیر را انجام دهیم:
R1 R2 + R3
برای انجام این عمل واحد کنترل باید سیگنالهای الزم را برای انتخاب ورودیهای متناسب
دیکودر MUXA, MUXB,و ALUانتخاب نماید:
.1تعیین مقدار مناسب برای ورودی MUXAیعنی SELAطوری که محتوی رجیستر
R2در روی باس Aقرار گیرد.
.2تعیین مقدار مناسب برای ورودی MUXBیعنی SELBطوری که محتوی رجیستر
R3در روی باس Bقرار گیرد.
.3تعیین مقدار الزم برای ورودی OPRکه ALUرا وادار به انجام عمل جمع A+B
نماید.
.4در نهیت انتخاب مقدار مناسب برای دیکور SELDبه نحویکه خروجی ALUرا به
رجیستر R1منتقل نماید.
کلمه کنترل
در مثال نشان داده شده
تعداد 14متغیر باینری
وجود دارند که مقدار آنها
باید توسط واحد کنترل
تعیین گردد .هر ترکیب این
متغیرها یک کلمه کنترل
نامیده میشود .این کلمه به
4فیلد تقسیم میشود
OPR
SELA
SELD
SELB
SELD
SELB
SELA
Binary code
None
Input
Input
000
R1
R1
R1
001
R2
R2
R2
010
R3
R3
R3
011
R4
R4
R4
100
R5
R5
R5
101
R6
R6
R6
110
R7
R7
R7
111
ALU عملیات
OPR Select
Operation
Symbol
00000
Transfer A
TSFA
00001
Increment A
INCA
00010
Add A + B
ADD
00101
Subtract A – B
SUB
00110
Decrement A
DECA
01000
And A and B
AND
01010
OR A and B
OR
01100
XOR A and B
XOR
01110
Complement A
COMA
10000
Shift right A
SHRA
11000
Shift left A
SHLA
انجام عملیاتCPU
در
محاسباتی و منطقی بر عهده
عمل شیفت را. استALU
کهShifter میتوان توسط یک
قرارALU قبل و یا بعد از
در مواردی هم.میگیرد انجام داد
ممکن است عمل شیفت توسط
در فصل.انجام شودALU خود
را دیدیمALU طراحی چنین4
که عملیات آن در جدول مقابل
ذکر شده است
مثال
برای انجام میکرواپریشن زیر
R1 R2 – R3
میبایست کلمه کنترلی بصورت زیر انتخاب شود:
OPR
SUB
00101
SELD
R1
001
SELB
R3
011
Field: SELA
Symbol
R2
Control word 010
همانطور که قبال دیدیم یک راه پیاه سازی واحد کنترل استفاده از
میکروپروگرامینگ است که در آن هر کلمه کنترلی در یک محل از
حافظه ROMذخیره خواهد شد.
Stacks
موارد استفاده از پشته
ذخیره متغیرهای یک برنامه
ذخیره محتوی سایر رجیسترها وقتی که یک برنامه فرعی صدا زده میشود
کمک به ترجمه عملیات محاسباتی با روش RPN
رجیستر Spمحل آخرین داده ذخیره شده در پشته را مشخص میکند
پیاده سازی پشته
.1
.2
پیاده سازی پشته بوسیله رجیسترها
پیاده سازی پشته در قسمتی از حافظه RAM
پیاده سازی پشته بوسیله رجیسترها
63
EMPTY
5
4
3
C
2
B
1
A
0
SP
DR
FULL
عملیات روی پشته
Push
SPSP+1
M[SP]DR ,EMTY0
if(SP=0) Then (FULL1)
POP
DRM[SP] , FULL0
SPSP-1
if(SP=0) Then (EMTY1)
پیاده سازی پشته در قسمتی از حافظه RAM
1000
2000
حافظه برنامه
(دستورات)
حافظه داده ها
(عملوند ها)
PC
AR
3000
حافظه پشته
3997
3998
SP
3999
4000
4001
DR
عملیات روی پشته
Push
SPSP-1
M[SP]DR
POP
DRM[SP]
SPSP+1
محدودیت های پشته
هنگام استفاده از پشته:
باید مواظب بود که بزرگ شدن پشته باعث دست اندازی آن به
داده های سایر برنامه ها در RAMنشود .همچنین برنامه
های دیگر پشته را خراب نکنند.
نمایش لهستانی معکوس
)Reverse Polish Notation (RPN
روش معمولی نمایش عبارات ریاضی:
A*B+C*D
روش PNبرای نمایش عبارات ریاضی :عملگرها قبل از
عملوندها قرارمیگیرند.
+*AB*CD
روش RPNبرای نمایش عبارات ریاضی :عملگرها بعد از
عملوندها قرا میگیرند
AB*CD*+
استفاده از پشته برای پیاده سازی RPN
در برخی ماشینهای حساب و کامپیوترها از ترکیب پشته و
RPNبرای محاسبه عبارات ریاضی استفاده میکنند.
.1ابتدا عبارت بصورت RPNنوشته میشود ) معموال اینکار
توسط کامپایلر انجام میشود(
.2در هنگام محاسبه
با برخورد به عملوندها آنها را در پشته PUSHمیکنیم
با برخورد با عملگرها ،دو داده موجود در باالی پشته POPشده
و عمل مورد نظر بر روی آنها انجام و حاصل درپشته PUSH
میشود.
مثال
برای محاسبه عبارت زیر یک کامپایلر ممکن است کد زیر را
;a = b + c * d
تولید نماید.
عبارت معادل RPNبصورت زیر خواهد بود:
b
c
d
bcd*+
در اینصورت محتوی پشته بصورت زیر خواهد بود:
a
PUSH
PUSH
PUSH
MUL
ADD
POP
d
b+c*d
pop
ADD
c*d
c
c
b
b
b
MUL
d
c PUSH
PUSH
b
b
PUSH
فرمت دستورالعمل
معمولترینفرمتیکدستورالعمل
.1
قسمت آپ کد ،مشخصکننده نوع عملیات دستور
.2
قسمت آدرس ،مشخصکننده آدرس یک خانه حافظه یا
ثبات پروسسور
.3
قسمت حالت آدرسدهی ،تعیینکننده عملوند یا آدرس
مؤثر
Add/reg
Mode
Opcode
دستوراتسهآدرسی
در کامپیوترهای سهآدرسی ،هر قسمت آدرس ،برای
مشخص نمودن یک ثبات پردازنده و یا آدرس یک عملوند در
حافظه تخصیص داده میشود.
]R1 M[A] + M[B
]R2 M[C] + M[D
M[X] R1 × R2
ADD R1, A, B
ADD R2, C, D
MUL X, R1, R2
دستورات دوآدرسی
دستورات دوآدرسی معمولترین فرمت دستور در کامپیوترها
هستند .قسمت آدرس میتواند یک ثبات پردازنده یا یک
خانه حافظه را مشخص نماید.
]R1 M[A
MOV R1, A
]R1 R1 + M[B
ADD R1, B
]R2 R2 + M [D
ADD R2, D
R1 R1 × R2
MUL R1, R2
M[A] R1
MOV X, R1
دستوراتیکآدرسی
دستورات یکآدرسی ،برای تمام عملیات بر روی دادهها،
ثبات اکومولیتور ACرا بهکار میبرد.
]AC M[A
LOAD A
]AC AC + M[B
ADD B
M[T] AC
STORE T
]AC M[C
LOAD C
]AC AC + M[D
ADD
D
]AC AC × M[T
MUL T
M[X] AC
STORE X
دستوراتصفرآدرسی
دستورات صفر آدرسی ،برای تمام عملیات بر روی دادهها ،از
پشته استفاده می کند.
Push A
Push B
ADD
Push C
D
Push
ADD
MUL
POP X
دستورات کامپیوترهای RISC
در کامپیوترهای مبتنی بر معماری RISCفقط دو دستور
وجود دارند که مستقیما با محتوی حافظه کار میکنند:
دستور ذخیره کردن STORE :
دستور بار کردن LOAD :
بقیه دستورات نطیر دستورات محاسباتی فقط با رجبسترها کار
میکنند.
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
حاالتآدرسدهی
دستورات یک کامپیوتر عملی را بر روی داده ذخیره شده در حافظه و یا
رجیسترهای CPUانجام میدهند .روش مشخص کردن عملوند یک
دستورالعمل حاالت آدرس دهی و یا
addressing modeنامیده
میشود .
اصوال حاالت مختلف آدرسدهی عملوند دستور ،تسهیالت زیر را در
سیستم فراهم میآورد:
.1
قابلیت ایجاد شمارنده برای برنامه حلقه ،و شاخصبندی در دادهها و
همچنین ایجاد اشارهگر حافظه و جابجایی برای کاربر فراهم میشود
.2
امکان تقلیل تعداد بیتهای قسمت آدرس دستور ،فراهم میشود.
انواع حالت های آدرس دهی
آدرس دهی ضمنی
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
آدرس دهی با ثبات پابه
آدرس دهی ضمنی
Implied Addressing Mode
در این روش اپراندها بصورت ضمنی در داخل دستورالعمل مشخص
میشوند .
مثل دستور CMAکه محتوی آکوموالتور را متمم میکند.
دستورات صفر آدرسی مورد استفاده در کامپیوترهای stack machine
نیز از آدرس دهی ضمنی استفاده میکنند زیرا عملوندها بطور ضمنی در
باالی پشته در نظر گرفته میشوند.
آدرس دهی بالدرنگ
Immediate Addressing Mode
در این روش مقدار عملوند در داخل خود دستورالعمل داده میشود.
این مد آدرس دهی برای مقدار دهی رجیسترها بکار میرود.
مثل دستور زیر در پردازنده x86
MOV CX, 1024
Operand
Instruction
آدرس دهی ثبات
Register Addressing
در این روش عملوندها در داخل رجیسترهای پردازنده قرار
دارند .با استفاده از Kبیت میتوان تعداد 2kرحیستر را
مشخص نمود.
مثل دستور زیر در پردازنده x86
ADD AL, BL
CPU registers
R
Operand
Instruction
آدرس دهی غیر مستقیم بکمک ثبات
Register Indirect Addressing
در این روش دستورالعمل رجیستری را مشخص میکند که
محتوی آن آدرس عملوند در حافظه را مشخص خواهد نمود.
مثل دستور زیر در پردازنده x86
]MOV BX,[SI
Memory
CPU registers
Instruction
Operand
R
آدرس دهی افزایش و یا کاهشی خودکار
Autoincrement or Autodecrement addressing
این روش مشابه آدرس دهی غیر مستقیم بکمک ثبات است با
این تفاوت که مقدار رجیستر بعد از استفاده برای محاسبه
آدرس موثر افزایش و یا کاهش میابد.
Memory
CPU registers
Instruction
Operand
R
R=R+1
آدرس دهی مستقیم
Direct Addressing Mode
در این روش آدرس عملوند در داخل دستورالعمل ذکر میشود.
مثل دستور زیر در پردازنده x86
]MOV AX,[3000
Memory
Instruction
Operand
Address
آدرس دهی غیر مستقیم
Indirect Addressing Mode
در این روش آدرس موجود در دستورالعمل محلی از حاقطه را مشخص
میکند که آدرس عملوند درآنجا قرار دارد .در اینحالت برای دسترسی به
عملوند دوبار رجوع به حافطه مورد نیاز است :یکبار برای پیدا کردن
آدرس آن و بار دیگر برای خواندن مقدار آن .
Memory
Instruction
Operand
Address
آدرس دهی نسبی
Relative Addressing Mode
در این روش آدرس موثر از جمع آدرس مشخص شده در
داخل دستورالعمل و محتوی PCحاصل میشود:
Effective Address= address part of instruction + content of PC
آدرس دهی نسبی در دستورالعمل های انشعابی که آدرس پرش در نزدیکی دستور قراردارد
Memory
Instruction
Operand
Address
+
PC
آدرس دهی شاخص
Index Addressing Mode
در این روش آدرس موثر از جمع آدرس مشخص شده در داخل دستورالعمل و محتوی
یک رجیستر مخصوص که رجیستر ایندکس نامیده میشود حاصل میشود:
Effective Add.= address part of instruction + content of index register
معموال از این روش برای دسترسی به داده های یک آرایه استفاده میشود .که محل شروع
داده ها در حافظه در دستورالعمل مشخص میشود و فاصله داده مورد نظر تا محل شروع
توسط رجیستر ایندکس تعیین میگردد.
Memory
Instruction
Operand
Address
+
Index Register
آدرس دهی با ثبات پابه
Base Register Addressing Mode
این روش مشابه آدرس دهی با ثبات شاخص است با این تفاوت
که بجای ثبات شاخص از ثبات پایه استفاده میشود .تفاوت ایندو
روش در نحوه استفاده از رجیسترهاست .
Effective Add.= address part of instruction + content of Base register
Memory
Instruction
Operand
Address
+
Base Register
مثال عددی
حافظه
حالت
مقدار آکوموالتور در صورت
اجرای دستور موجود در
آدرس 200برای حالتهای
مختلف آدرس دهی چیست؟
PC = 200
R1 = 400
بارکردنAC
200
= 500آدرس
201
دستوربعدی
202
450
399
700
400
800
500
900
XR = 100
AC
آدرس
600
325
702
300
800
مثال عددی
حاالت آدرسدهی
آدرس مؤثر
محتوای اکومولیتور
مستقیم
500
800
بالفصل
201
500
غیرمستقیم
800
300
نسبی
702
325
شاخصدار
600
900
ثبات
-
400
غیرمستقیم از طریق ثبات
400
700
افزایش خودکار
400
700
کاهش خودکار
399
450
مجموعه دستورات کامپیوتر
دستورات مورد استفاد ه درکامپیوترهای مختلف از لحاظ
تعداد ،عملکرد ،نشانه های مورد استفاده برای اسمبلی ،و کد
باینری بسیار متفاوت هستند با این وجود تمامی آنها دارای
دستوراتی از گروههای زیر میباشند:
دستورات انتقال داده
دستورات محاسباتی ،منطقی و جابجائی
دستورات کنترل برنامه
دستوراتمعمولانتقال
اطالعات
فرم سمبولیک
نام
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
2مکمل
Negate (2’s
complement)
NEG
دستوراتمنطقیوعملیاترویبیت
نام دستور
نماد دستور
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
غیرفعال کردن وقفه
دستوراتمعمولیشیفت
نامدستور
فرم
نمادین
شیفتبهراست
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
دستورات متداول کنترل برنامه
نامدستور
فرمنمادین
انشعاب
Branch
BR
پرش
Jump
JMP
ردکردن
SKIP
SKP
صدازدن
Call
CALL
بازگشت
Return
RET
مقایسه
Compare( By subtraction)
CMP
تست
Test( By ANDing)
TST
بیت های وضعیت
A
16-bit ALU
C15
C16
V
Z
S
B
F15-F0
C
F15
Check For Zero Output
Output F
وقفه
انواع مختلف وقفه د رکامپیوتر
وقفه های خارجی
وقفه های داخلی
این وقفه ها سخت افزاری بوده و توسط یک وسیله خارجی رخ میدهد.
در اثر استفاده غلط و نابجای یک دستور حاصل میشود .مثل رخ دادن
Overflowانجام یک تقسیم بر صفر ،سرریز شدن پشته
برنامه سرویس دهی به وقفه در هر مورد در باره عکس العمل مناسب تصمیم
میگیرد .این وقفه گاهی trapنامیده میشود.
وقفه های نرم افزاری
نوع خاصی از صدا زدن برنامه فرعی هستند .برای انجام عملیات خاصی نظیر
تغییر مد برنامه از حالت userبه supervisorبکار میروند.
کامپیوترهای با مجموعه دستورات پیچیده
CISC
معماری یک کامپیوتر متاثر از مجموعه دستورات انتخاب شده برای آن
است.
در کامپیوتر های اولیه سعی بر این بود تا تعداد دستورات کم و ساده
باشد تا پیاده سازی سخت افزاری آن ممکن باشد.
با پیشرفت در زمینه سخت افزار و ارزان شدن آن تعداد دستورات
کامپیوتر ها افزایش یافته و بر پیچیدگی آنها افزوده گردید .هدف این
بود تا هر چه بیشتر نیاز های کاربران را در سخت افزار گنجانده وبا
کاهش فاصله بین زبانهای سطح باال و دستورات کامپیوترکار ترجمه
دستورات سطح باال را ساده تر کنند .این نوع کامپیوترها گاها تا 200
دستور و تعداد بسیار زیادی مد آدرس دهی داشتند .این کامپیوتر ها را
)Complex instruction set computer (ciscمینامند.
ویژگی های کامپیوترهای CISC
تعداد زیادی دستورالعمل دارند ) 100تا 200عدد(
دستوراتی برای انجام کارهای ویژه دارند که معموال بندرت
مورد استفاده قرار میگیرند
تعداد زیادی مد آدرس دهی دارند
طول دستورالعمل ها متفاوت است
دستوراتی دارند که عملیاتی را بر روی اپراندهای موجود در
حافظه انجام میدهند.
برای اجرای دستورات به چندین کالک نیاز هست.
ویژگی های RISC
دستورات ساده و کمی دارند
هدف این است که بتوان دستورات را بسرعت اجرا کرد .اغلب
دستورات RISCدر یک سیکل اجرا میشوند )بعد ازواکشی و
رمزگشایی(
چون دستورات در زمان مشابهی اجرا میشوند عمل pipeline
دارای بازده باالیی خواهد بود.
کم بودن دستورات باعث ساده شدن واحد کنترل ومسیرهای ارتباطی
میشود که منجر به کم شدن تعدادقطعات مورد نیاز برای ساخت
پردازنده میشود اینکار سرعت پردازنده را نیز افزایش میدهد..
در ضمن میتوان واحد کنترل را بروش سیم بندی ساخت.
ویژگی های RISC
دسترسی به حافظه محدود به دستورات load , Storeاست
باقی دستورات بر روی محتوی رجیسترها عمل میکنند.
تعداد مد های آدرس دهی آنها کم است
معموال فقط از مدهای آدرس دهی زیر استفاده میشود:
register addressing
direct addressing
register indirect addressing
displacement addressing
ویژگی های RISC
دستورات طول و فرمت یکسانی دارند
اینکار باعث میشود تا خواندن دستورات و رمزگشائی آنها
سریع باشد.زیرا الزم نیست تا معلوم شدن طول دستور برای
رمزگشایی آن صبر کرد.
یکسانی فرمت باعث سهولت رمزگشایی میگردد زیرا کد و
ادرس همه دستورات در محل یکسانی قرار دارند.
ویژگی های RISC
تعداد رجیسترهای زیادی دارند.
کم شدن دستورات باعث کوچک شدن واحد کنترل و آزاد شدن فضا
برای گنجاندن تعداد بیشتری رجیستر میشود.
متغیرهای محلی ،نتایج میانی و پارامترهای توابع در داخل
رجیسترها ذخیره شده و تعداد رجوع به حافظه کاهش پیدا میکند.
ستفاده از تکنیک همپوشانی register windowsکه باعث
افزایش سرعت صدا زدن تابغ و بازگشت از آن میشود.
overlapped register windows
صدا زدن برنامه فرعی و بازگشت از آن بخش مهمی از
اجرای برنامه را بخود اختصاص میدهد .لذا سرعت بخشیدن
به آن میتواند تاثیر زیادی در افزایش کارائی پردازنده داشته
باشد.
هنگام صدا زدن یک برنامه فرعی دستوراتی استفاده میشوند
که مقادیر رجیسترها را ذخیره کنند ،و پارامترها را انتقال
دهند.
برای بازگشت از برنامه فرعی مقدار بازگشتی تابع به برنامه
صدا زننده منتقل شده و مقادیر ذخیره شده رجیسترها بازیابی
میشوند.
overlapped register windows
دربرخی از معمارهای RISCبرای سهولت انتقال بین توابع از
همپوشانی پنجره ای رجیسترها استفاده میشود تا نیاز به ذخیره و
بازیافت مقادیر رجیسترها را حذف نمایند.
هر زمان که تابعی که صدا زده میشود پنجره ای از رجیسترها از میان
بانک رجیسترموجود در پردازنده به آن اختصاص میابد.
اینکار از طریق افزایش پوینتری انجام میشود .با برگشت از تابع پوینتر
به مقدار قبلی آن کاهش داده میشود.
پنجره مورد استفاده برای توابع همجوار همپوشانی دارند تا امکان به
اشتراک گذاشتن داده ها بین دو تابع وجود داشته باشد.
overlapped register windows
pointer
pointer
pointer
از قسمت
مشترک
برای انتقال
اطالعات
استفاده میشود
با برگشت تابع پوینتر
کاهش داده میشود
پنجره رجیستر
اولیه
پنجره جدید
با صدا زدن تابع پنجره جدیدی
از رجیسترها به آن اختصاص
داده میشود.
بانک رجیستر
مثال
در کتاب سیستمی معرفی شده است که دارای بانک رجیستری با
مشخصات زیر است:
این بانک دارای 74رجیستر است.
رجیستر های R0تا R9بعنوان رجیسترهای عمومی قابل استفاده تمامی توابع
هستند
بقیه رجیسترها به 4گروه A,B,C,Dتقسیم شده اند .
هر پنجره دارای 10رجیستر اختصاصی و دو دسته رجیستر 6تائی مشترک با
پنجره های مجاور است.
از رجیسترهای اختصاصی برا ی ذخیره متغیرهای محلی و از رجیسترهای
مشترک برای انتقال پارامترها استفاده میشود.
به این ترتیب هر تابع میتواند از 32رحیستر استفاده نماید
R15
Common to D and A
مثال
R10
R73
Local to D
R64
R63
Common to D and C
R58
R57
Proc. D
R48
Local to C
R47
R42
Proc. C
Common to B and C
R41
R32
R9
Local to B
R31
R26
Proc.B
Common to B and A
R25
R0
R16
R15
Global Registers
R10
Proc.A
Local to A
Common to D and A
overlapped register windows
نحوه محاسبه رجیسترهای قابل استفاده برای هر تابع به
صورت زیر است.
= Gتعداد رجیسترهای عمومی
= Lتعداد رجیسترهای اختصاصی هر پنجره
= Cتعداد رجیسترهای مشترک بین دو پنجره
= Wتعداد پنجره ها
= L+2C+Gاندازه پنجره
= (L+C)W+Gتعداد کل رجیسترها در بانک رجیستری