Transcript Document
جزوه
درسی
معماری کامپیوتر
• گرد آورنده:
• دکتر
صابری مقدم
معماری کامپیوتر
(1معماری مجموعه دستورات)(ISA
• مجموعه دستورات
• مجموعه ثبات ها
• فرمت دستورات
(2معماری سخت افزار)(HSA
• اجزاء سخت افزاری
• حافظه نهان
• چگونگی اجرای دستورات
ساختار اساسی کامپیوتر:
ماشین های فن نیومن :
ماشین های فن نیومن همان کامپیوتر هایی هستند که که ما با آنها آشنا هستیم این ماشین ها دارای
3زیر سیستم است
.1یک CPU
.2سیستم حافظه اصلی
.3سیستمI/O
شکل ، 1 - 1اجزای اصلی یک کامپیوتر را نشان می دهد .
حافظه اصلی
c
c
ثبات ها
AlU
واحد کنترل
c
I/O
CPU
اجزای اصلی CPU
.1واحد کنترل ) (CUکه عملیات کامپیوتر را کنترل می کند .
.2واحد محاسبه و منطق ) (ALUکه عملیات حسابی ،منطقی ،شیفت و ...را انجام می دهد
.3یک مجموعه ثبات ها که مقادیر مختلفی را در حین عملیات کامپیوتر ذخیره میکند.
در این درس فرض بر این است که دانشجو در مورد مطالب زیر آشنایی پیدا کرده است :• دیکدر ها
• مالتی پلکسر ها
• ثبات ها
• شیفت رجیستر ها
انتقال ثبات ها و ریز عملیات :
مقدمه :
زبان انتقال ثبات : RTLیک سیستم دیجیتالی مجموعه ای از ماژول های )(Module
سخت افزاری متصل به هم می باشند که در زمینه پردازش داده ها کار خاصی را انجام می
دهند .ماژول ها از اجزایی چون رجیسترها (ثبات ها) ،دیکدر ها(رمز گشا ) ،عناصر
حسابی و کنترل منطقی ساخته می شوند .
ریز عملیات operation
: micro
عملیاتی که روی داده ها ذخیره شده و در ثبات ها صورت می گیرند را ریز عملیات می نامند .
مثال هایی از ریز عملیات ها عبارتند از :
شیفت)، (Shiftشمارش )، (countپاک کردن ) ،(clearبار کردن )(Load
سازمان داخلی یک کامپیوتر دیجیتال به بهترین نحو توسط موارد زیر مشخص می
شود :
.1مجموعه ثبات های آن و وظایف آن .
.2رشته ریز عملیات انجام شده روی اطالعات باینری ذخیره شده در ثبات ها .
.3واحد کنترلی که موجب آغاز رشته ریز عملیات می شود .
*
نحوه بیان نمادین مورد استفاده برای بیان انتقال های ریز عملیات در بین رجیسترها زبان انتقال
رجیستر) (RTLنامیده می شود .
)RTL(Register Transfer Language
سیستمی است برای بیان رشته ریز عملیات بین ثبات های یک ماژول به صورت نمادین RTL.
از این زبان برای تسهیل روند طراحی سیستم های دیجیتالی استفاده می شود .
انتقال داده ها از یک رجیستر به رجیستر دیگر را انتقال رجیستر می نامند .ثبات های کامپیوتربا
حروف بزرگ انگلیسی ( گاهی عددهایی به دنبال آنها ) برای نشان دادن کار ثبات
مشخص می شوند .
برای مثال :
• ثبات آدرس حافظه )(MAR=Memory Address Register
• برای ثبات شمارنده برنامه از ) (PC=Program Counterاستفاده می شود .
• برای ثبات دستور العمل) (IR=Instruction Registerاستفاده می شود .
•
برای ثبات پردازنده 𝑛𝑅استفاده می شود .
•
R2استفاده می شود ( .در این عبارت
برای انتقال داده از یک ثبات به ثبات دیگر از R1
محتوای ثبات R1در ثبات R2قرار می گیرد و پس از انتقال محتوای R1تغییر نمی کند ).
اگر بخواهیم انتقال تحت شرایط کنترلی از پیش تعیین شده انجام شود به صورت زیر عمل
می شود :
) R1
که در آن Pیک سیگنال کنترلی است.
تابع کنترلی یک متغییر بولی است برای مثال :
If ( p = 1 ) then ( R2
P:R2
R1
P=y x+x
*
هریک از عبارات نوشته شده به زبان انتقال ثبات ها داللت بر وجود یک ساختار سخت افزاری
برای پیاده سازی انتقال دارد.
شکل 1انتقال از ثبات R2 R1را وقتی P=1را نشان میدهد.
CLK
𝑅1
مدار کنترلی
nتعداد بیت
شکل 1-2
𝑅2
از کاما( )،برای جدا کردن 2یا چند عمل که همزمان انجام می شوند استفاده می شود مانند:
T:R2 R1 , R1 R2
عبارت باال نشان دهنده عملی است که محتوای دو ثبات در طول یک پالس ساعت مشترک با
یکدیگر تعویض می شوند مشروط بر اینکه T=1باشد.
مثال :عبارت شرطی زیر را در نظر بگیرید :
)if (T1 =1 ) then (R0 R1) else if (T2 =1 ) then (R0 R2
(aعبارت زبان انتقال رجیستر ) (RTLاین عیارت شرطی را بدست آورید .
(bبلوک سخت افزاری آنرا رسم کنید .
حل :
(aدر عبارت شرطی فوق دو عمل انتقال داریم که این دو عمل با دو عبارت ) (RTLزیر بیان
می شود :
T1 : R0
R1
T1 T2 :R0
R2
(b
به کمک مالتی پلکسر 2به 1و گیت های مناسب به صورت زیر رسم میشود(RTL).بلوک دیاگرام
شکل _3
مالتی پلکسر از andو ORتشکیل شده است و در اینجا چون 2 to 1است یک خط ادرس دارد.
شکل 4
زبان) (RTLزیر داده شده است بلوک دیاگرام این عبارت RTLرا رسم کنید و شرح دهید.
R1
R1 + R1,, R2
P+q : R1
انتقال های حافظه ای :
انتقال داده از رجیستر به حافظه یا حافظه به رجیستر را انتقال حافظه می نامند .
انتقال داده از یک کلمه حافظه به محیط خارج را ” می ”READو انتقال داده جدیدی را که در حافظه
ذخیره می شود را ”“writeنامند.
اگر حافظه کامپیوتر با رجیستر )(AR = Address Registerآدرس دهی و داده های حافظه به
رجیستر )(DR = Data Registerمنتقل گردد عملیات Writeو Readبه صورت روابط زیر
مشخص می شود .
Read : DR
]M[AR
این عبارت موجب انتقال داده از کلمه حافظه Mکه توسط آدرس موجود در ARانتخاب شده به
DRمیگردد.
]Write : M[AR
R1
عبارت فوق موجب انتقال داده از R1به کلمه حافظه , Mانتخاب شده توسط آدرس موجود در AR
میگردد.
باس در انتقال داده :
مسیر مشترکی که برای انتقال داده ها بین رجیستر ها و حافظه مورد نیاز است
را باس ( گذرگاه )
می نامند .
*
یک راه ساخت یک سیستم گذرگاه مشترک با استفاده از مالتی پلکسر یا
بافرهای سه حالته می باشد .
پیاده سازی باس با مالتی پلکسر و بافر سه حالته :
به طور کلی یک سیستم گذرگاه Kثابت nبیتی برای تشکیل یک گذر گاه nخطی
راه دهی میکند.
تعداد مالتی پلکسرهای مورد نیاز برای ساخت گذرگاه برابر nاست .که همان تعداد بیت ها
تدر هر ثبات است .اندازه هر مالتی پلکسر باید K*1باشد.زیرا Kخط داده را رهدهی میکند.
مثال :یک گذرگاه به طول 4بیت و 4رجیستر پیاده سازی کنید .
تکلیف : 2
شکل 4-3صفحه 99کتاب مانو شکل را رسم کرده و توضیح دهید .
شکل _6
بیت های هم ارزش در هر ثبات به ورودی های یک مولتی پلکسر متصل
می شوند تا یک خط گذرگاه را تشکیل دهند مولتی پلکسر 0چهار بیت 0
ثبات ها را راهدهی می کند ،مولتی پلکسر 1چهار بیت 1ثبات ها را
راهدهی می کند .مولتی پلکسر 2چهار بیت 2ثبات ها را راهدهی می کند
،مولتی پلکسر 3چهار بیت 3ثبات ها را راهدهی می کند.
دو خط انتخاب به انتخاب هر 4مولتی پلکسر متصل اند .
خطوط انتخاب چهار بیت یک ثبات را انتخاب کرده و آنها را به گذرگاه
مشترک منتقل می نمایند. .
شکل _6
• ثبات Aبه شرطی انتخاب می شود که خط انتخاب صفر و یک برابر صفر
باشد.زیرا خروجی این ثبات به ورودی داده ی مولتی پلکسر متصل شده
است .
• ثبات Bبه شرطی انتخاب می شود که S0 S1 =01باشد .
• ثبات Cبه شرطی انتخاب می شود که S0 S1 =10باشد.
• ثبات Dبه شرطی انتخاب می شود که S0 S1 =11باشد .
گیت سه حالته :
جدول درستی :
خروجیy
ورودیx
کنترلs
HIGH-Z
x
0
0
0
1
1
1
1
باس با استفاده از مالتی پلکسر سه حالته :
شکل _8
خروجی دیکدر
S0
S1
A
0
0
B
1
0
C
0
1
D
1
1
ریز عملیات :
(1ریز عملیات انتقال ثبات :این نوع ریز عملیات محتوای اطالعات را به
هنگام انتقال از ثبات های مبدا به ثبات های مقصد تغییر نمی دهد .
(2ریز عملیات حسابی :در این نوع ریز عملیات در ثبات ها عملیات پایه
جمع و تفریق ،افزایش ،کاهش و شیفت انجام می شود .مانند :
ریز عمل جمع :
R1 + R2
R3
ریز عمل تفریق :
R1 - R2
R3
R1بعالوه مکمل 2از R2تفریق :
R1 + R2
R3
+1
)3ریز عملیات منطقی :
عملیات منطقی که روی داده های رجیستر در یک پالس ساعت انجام می شود را ریز عملیات
منطقی می نامند .در ریز عملیات منطقی از Vبرای ORو از ^ برای ANDاستفاده میشود.
مثال :
R5 V R6
R2 + R3 , R4
P+q :R1
توجه :عالمت +بین دو متغیر کنترلی qو Pیعنی ORو عالمت جمع بین R3و R2به معنی
جمع است,عالمت Vبین R5و R6همان ORاست.
مدار شکل زیر چهار عمل اصلی را اجرا می کند .
شکل _9
خروجی
عمل
S0
S1
AND
E=A∧B
0
0
OR
E=A∨B
1
0
XOR
E=A⨁B
0
1
E=A
1
1
مکمل
)4ریز عملیات شیفت :
ریز عملیات شیفت برای انتقال یا جابجایی داده ها بکار می روند .
سه نوع ریز عمل شیفت وجود دارد :
(aعملیات شیفت منطقی :
به دو صورت شیفت به راست)(shrو شیفت به چپ ) (shLانجام میشود.
SHR R1
R1
SHL R2
R2
این دو نوع ریز عمل هستند که محتوای ثبات R1را یک بیت به راست و محتوای ثبات R2
را یک بیت به چپ شیفت می دهد .
(bعملیات شیفت چرخشی :
بیت های ثبات را از طریق دو انتها بدون از دست دادن هرگونه اطالعات می چرخاند .این عمل با
اتصال خروجی سری به ورودی سری ثبات تحقق می یابد .
از نماد های CILو CIRبرای شیفت چرخشی به چپ و شیفت چرخشی به راست استفاده
می کنند.
(Cشیفت حسابی :
ریز عملی است که یک عدد دودویی عالمتدار را به چپ یا راست شیفت می دهد بدون اینکه
به
عالمت را تغییر دهد .از دو نماد ASHLو ASHRترتیب برای شیفت حسابی به چپ و شیفت
حسابی به راست استفاده می کنند .شیفت حسابی به چپ یک عدد باینری عالمت دار را در
2ضرب می کند و یک شیفت حسابی به راست یک عدد باینری را به 2تقسیم می کند .
شکل زیر یک نمونه از ثبات nبیتی را نشان میدهد.
بیت Rn-1در سمت چپ ترین مکان بیت عالمت را نگه می دارد .
بیت Rn-2با ارزشترین بیت و R0کم ارزشترین بیت است.
ASHRبیت عالمت را عوض نمی کند و همه بیت هارا ( از جمله بیت عالمت ) را به سمت راست
شیفت می دهد .
تکلیف :
عدد ACHرایک بیت به راست شیفت حسابی دهید و حاصل را به صورت هگز بنویسید.
در ASHLبیت عالمت باید حفظ شود و بیت قبل از بیت عالمت از بین می رود .
اگر بیت عالمت Rn-1پس از شیفت عوض شود عالمت معکوس می شود و این وقتی رخ می دهد
که ضرب در 2سبب سرریز شود .سرریز در شیفت به چپ وقتی رخ می دهد که قبل از شیفت
Rn-1و Rn-2مساوی نباشند.
یک فیلیپ فالپ سرریز برای کشف سرریز حاصل از شیفت حسابی به چپ مورد استفاده قرار
می گیرد .
Vs = Rn-1
Rn-2
F
Y
X
0
0
0
1
1
0
1
0
1
0
1
1
اگر V=0باشد یعنی سرریز وجود ندارد و اگر V=1باشد سر ریز وجود
دارد و پس از شیفت عالمت عوض می شود .
واحد حساب و منطق : ALU
در کامپیوترها به جای اینکه ثبات های مختلف ،ریز عملیات را مستقیما انجام دهند از تعدادی
ثبات ذخیره ساز استفاده می شود که به واحدی به نام واحد حساب و منطق (واحد )ALU
متصل است.این واحد یک مدار ترکیبی است که مجموعه ریز عملیات های حسابی و منطقی
را
انجام می دهد .ریز عمل شیفت اغلب در یک واحد جدا انجام می شود .
گاهی واحد شیفت جزیی از واحد ALUاست .طراحی واحد ALUدر سه مرحله انجام میشود.
مرحله اول :طراحی قسمت حسابی
مرحله دوم :طراحی قسمت منطقی
مرحله سوم :ترکیب قسمت های حسابی و منطقی
طراحی مدار حسابی :
شکل روبه رو یک مدار حسابی را نشان می دهد.
شکل : 1یک مدار حسابی
مدار گسترده شکل باال در کتاب مانو شکل 4_9
نشان داده شده است.
جدول 1
ریز عمل
خروجی
ورودی
انتخاب
F=A+Y+Cin
Y
cin
S0
S1
دهدهی
جمع
F=A+B
B
0
0
0
0
جمع با نقلی
F=A+B+1
B
1
0
0
1
تفریق با قرض
F=A+B
B
0
1
0
2
تفریق
F=A+B+1
B
1
1
0
3
انتقال
F=A
0
0
0
1
4
افزایش A
F=A+1
0
1
0
1
5
کاهش
F=A-1
1
0
1
1
6
انتقال
F=A
1
1
1
1
7
شرح :
اگر S0 S1 = 01باشد،مکمل Bبه ورودی های Yجمع کننده اعمال می شود.
حال اگر Cin = 1باشد F =A+B+1،خواهد بود.این عمل تفریق A-Bرا تولید می کند.
اگر Cin = 1باشد F =A+B،خواهد شد.این عمل معادل تفریق بدون قرض کردن
یعنی A-B-1می باشد.
تکلیف :
در سطر متناظر با عدد دهدهی 6در جدول باال چرا F = A – 1؟
حل :اگر S0 S1 =11باشد به داخل ورودی های Yجمع کننده تمامآ 1وارد می شود
تا عمل کاهش یک واحد وقتیکه CIN=0است یعنی F=A-1صورت گیرد
دلیل این مطلب این است که عددی که تمامآ 1است باید متمم 2عدد را بدست آورد ( متمم 2
عدد ،0001عدد 1111می شود ) .جمع عدد Aبا متمم 2عدد 1برابر است با .A-1
طراحی مدار منطقی :
شکل_2
عملیات
S0
خروجی
S1
AND
E= A ^ B
0
0
OR
E= A v B
1
0
E= A
0
1
E= A
1
1
XOR
مکمل
B
طراحی مدار منطقی واحد منطقی:
ریز عملیات منطقی عملیاتی هستند که روی تک تک بیت های Regانجام می گیرد و نتیجه هر
بیت وابسته به بیت های قبل و بعد آن نیست .شکل – 2یک طبقه از واحد منطقی را نشان می
دهد که 4ریز عمل اصلی منطقی را اجرا می کند .این مدار شامل 4گیت و یک mux
می باشد برای طراحی مدار nبیتی ,دیاگرام شکل _ 2باید nبار تکرار گردد و در کنار
منطقی
یکدیگر رسم شود.
ترکیب مدار حسابی و مدار منطقی :
شکل _3
جدول – 2
انتخاب عمل کننده
تابع
خروجی
cin
S0
S1
S2
S3
انتقال
F=A
0
0
0
0
0
افزایش
F=A+1
1
0
0
0
0
جمع
F=A+B
0
1
0
0
0
جمع با رقم نقلی
F=A+B+1
1
1
0
0
0
تفریق با قرض
F= A+B
0
0
1
0
0
F= A+B+1
1
0
1
0
0
کاهش A
F= A - 1
0
1
1
0
0
انتقال A
F=A
1
1
1
0
0
AND
E= A ^ B
X
0
0
1
0
OR
E= A v B
X
1
0
1
0
E= A
X
0
1
1
0
E= A
X
1
1
1
0
F= shr A
X
X
X
0
1
F= shl A
X
X
X
1
1
تفریق
XOR
مکمل
شیفت Aبه راست و به داخل F
شیفت Aبه چپ و به داخل F
B
ترکیب مدار منطقی و ریاضی :
با ترکیب مدارهای ریاضی و منطقی طراحی شده در شکل های 1و 2در باال می توان یک واحد
ALUرا طراحی کرد.ورودی های Aiو Biبه هردو مدار حسابی و منطقی اعمال شوند .
متغییر های انتخاب S1و S0نیز به طور مشترک برای هر دو مدار است و با آنها یک زیر عمل خاص
انتخاب خاص انتخاب می شود .
یک مالتی پلکسر 1←4خروجی مدار حسابی یا مدار منطقی را بر می شگیرن .
خطوط انتخاب در این S3,Muxو S2هستند .جدول – ، 2جدول درستی مدار شکل – 3است .
این جدول 14عمل ALUرا لیست نموده است 8 .تای اول اعمال حسابی هستند (جدول 1-را
ببینید) و توسط S3 S2 = 00انتخاب می شوند.
4عمل بعدی منطقی هستند و توسط S3 S2 = 01انتخاب می شوند .ورودی نقلی در اعمال منطقی
هیچ اثری ندارد و با ( Xحالت بی اهمیت ) مشخص شده است و 2عمل آخر عمل شیفت
عالمت
هستند که با S3 S2 =10,11انتخاب می شوند .در این حالت ورودی های دیگر تاثیری بر شیفت
ندارد.
طراحی یک کامپیوتر پایه :
در این قسمت می خواهیم اجزا یک کامپیوتر پایه و ساده را بررسی کنیم .هر کامپیوتر دارای یک
حافظه اصلی و یک پردازنده مرکزی و I/Oمی باشد که CPUخود شامل تعدادی ثبات ALU ،
و واحد کنترل است .کامپیوتر پایه فرضی ما دارای یک حافظه 4096×16است یعنی 4096کلمه
16بیتی دارد .
4096*16
0
1
16b data
.
.
.
.
4096
12 bit
آدرس
تعاریف :
دستورالعمل کامپیوتر یک مجموعه کد های باینری است که رشته ای از ریز عملیات را برای
کامپیوتر مشخص می کند .
کد دستورالعمل به همراه داده در حافظه ذخیره می شود .کد دستورالعمل معموال به چند
فیلد تقسیم می شود مهم ترین فیلدهای فرمت دستورالعمل به شرح زیر است .
کد عملوند – : OPCodeنوع عملیاتی که توسط دستورالعمل ها انجام می گیرد را مشخص
می کنیم .این فیلد یک مجموعه بیت اسکی که عملیات مختلف پردازنده مانند جمع ،تفریق
،مکمل ،شیفت و ...را تعریف می کند .تعداد بیت های OPCodeبه تعداد کل دستورات
ماشین بستگی دارد .اگر ماشین دارای2nیا کمتر دستور باشد کد عملیاتی باید nبیتی
باشد .
فیلد آدرس :این فیلد آدرس حافظه با کد برای انتخاب یک REGپردازنده است .
فیلد : MODEاین فیلد روشهای آدرس دهی OPERANDدستورالعمل را مشخص می کند .
آدرس دهی غیر مستقیم :شکل – 2فرمت فریم دستورالعمل را نشان می دهد .
شکل _2
شکل _3
آدرس دهی مستقیم
آدرس دهی غیر مستقیم
در سه شکل باال دستور ،سه بیت کد
عملیات 12 ،بیت آدرس و یک بیت مربوط
به روش آدرس دهی مستقیم است یا
غیر مستقیم است کد
( ) INDIRECTبرای آدرس دهی
با
مستقیم I=0است .این عملوند در آدرس 30از حافظه قرار دارد I=0است.
پس دستور از نوع آدرس دهی مستقیم است .کد عمل دستور ADDرامشخص می
کند و بخش آدرس یک عدد باینری با 300می باشد .واحد کنترل عملوند را در آدرس
300پیدا می کند و آن را با محتویات ACجمع می کند عملوند AC← AC +در شکل
سوم I=1 ،است پس آدرس دهی غیر مستقیم است .کنترل به آدرس 300مراجعه
میکند تا آدرس عملوند را بیابد که در این جا آدرس عملوند 400است .در آدرس دهی
مستقیم فیلد آدرس را آدرس موثر می نامند .در حالت غیر مستقیم فیلد آدرس
،فیلد آدرس آدرس عملوند است .در این حالت آدرس موثر 400است .
ثبات های کامپیوتر پایه :
* ثبات ( Pcشمارنده برنامه) ) :( Program Counter
آدرس دستوراتی که باید اجرا شوند در این ثبات ذخیره شده اند پس این ثبات 12بیتی است .
* DRیا :(Memory Data Register) MDRثبات داده است و عملوندی که از حافظه خوانده
میشوند را در خود نگه میدارد این ثبات 16بیتی است .
* (IRثبات دستور العمل ) : :دستورات در داخل حافظه قرار دارند و برای اینکه اجرا شوند باید از
حافظه خوانده شوند و در ثبات دستورالعمل IRقرار گیرند .این ثبات 16بیتی است .
* ثبات :(Accumulator) ACثبات همه منظوره است .بعضی از دستورات مانند جمع ،همیشه
یکی از عملوند هایشان در ACاست و حاصل نیز در ACقرار می گیرند مثال در این ماشین
دستور جمع به صورت ADD Xنوشته می شود .این دستور ACرا با محتویات خانه ای از حافظه
که آدرس اش Xاست جمع می کند و حاصل را در ACقرار میدهد.
]: AC←AC+M[xاین ثبات
* :(ADDRESS REG) ARآدرس عملوند را نشان می دهد مثال در دستور ] X,ADD[Xکه آدرس
عملوند است در ARقرار می گیرد و سپس ] M[Xدر DRقرار میگیرد و سپس ACبا DRجمع
میشود و حاصل به ACمنتقل میگردد.این ثبات 16بیتی است.
* :(Temporary REG) TRبرای ذخیره داده های موقت بکار می رود .این ثبات 16بیتی است .
* (INPRثبات ورودی) :کاراکتر ورودی را نگه می دارد .این ثبات 8بیتی است .
* (OUTRثبات خروجی):کاراکتر را نگه میدارد 8.بیتی است.
این کامپیوتر دارای 8ثبات 1 ،حافظه و واحد کنترل است .ثبات ها و حافظه از طریق 1گذرگاه مشترک
بهم متصل اند .
در شکل – 1اتصاالت ثبات ها و حافظه های کامپیوتر مورد نظر به باس نشان داده شده است مقادیر دهدهی
که در امتداد هر خروجی نوشته شده است معادل عدد دودویی الزم را برای
انتخاب نشان می دهد .برای مثال در کنار خروجی DRعدد 3نوشته شده است .
لذا 16بیت خروجی DRهنگامی روی گذرگاه قرار می گیرد که S2 S1S0 = 011باشد .برای اینکه
یک ثبات محتویات خود را روی باس قرار دهد باید انتخاب شود و برای اینکه محتویات باس به یک
ثبات وارد شود (LDبارکردن ) آن ثبات باید فعال گردد .برای اینکه حافظه روی باس قرار دهد
باید انتخاب شود S2 S1S0 = 111فرمان Readداده شده و آدرس توسط ARمشخص شود .
برای اینکه محتویات BUSبه حافظه منتقل شود باید Writeفعال شده تا آدرس توسط ARمشخص
شود .با توجه به شکل 1-عمل ] AC←M[ARدر یک کالک انجام نمی شود یعنی یک ریز عمل
نیست بلکه ابتدا باید یک ریز عمل ] DR←M[ARانجام شود و سپس ریز عمل AC←DRاز طریق
ALUانجام می شود.
سیکل دستورالعمل :
برنامه ای که در واحد حافظه ذخیره شده است از دنباله ای از دستورالعمل ها تشکیل شده است که این برنامه
طی سیکل های اجرایی دستورالعمل اجرا می گردد .
مراحل اجرای دستور را سیکل دستور می نامند .در این ماشین سیکل دستور شامل مراحل زیر است:
_1واکشی ) (FETCHفراخوانی دستور از حافظه
_ 2ترجمه) (DECODEدستور(رمزگشائی دستور)
_3پیدا کردن آدرس موثر برای دستورات غیر مستقیم
_4اجرای دستور
این سیکل ،ترتیبی است و نیاز به زمان بندی دارد برای زمان بندی می توان از یک شمارنده 4
بیتی و 1دیکدر 4→16استفاده کرد و 16سیگنال زمانی T0تا T15تولید کرد توجه کنید که
سیکل دستور نوشته شده شامل 4مرحله کلی است وهرمرحله خود ممکن است به چند کالک
نیاز داشته باشد .برای ترجمه دستورات نیز می توان از یک دیکدر 3→8استفاده کرد و
OPCodeرا DECODEکرد .شکل – 3سخت افزار مربوط به زمان بندی را نشان می دهد.
ثبات دستورالعمل
شکل _2
انواع دستورات :
در شکل های زیر دستورات مختلف ماشین دیده می شود این دستورات 3نوع اند :
.1دستورات حافظه ای
.2دستورات ثباتی
.3دستورات I/O
توصیف
ANDکلمه حافظه با AC
دستورات حافظه ای
]AC←AC^M[address
ADDکلمه با AC
نام دستور
AND
ADD
بار کردن کلمه حافظه با AC
]AC←M[address
ذخیره Aبه حافظه
STORE AC
پرش بدون شرط
M[address]←AC
STA
PC←address
BUN
M[address]←PC
PC←PC+1
BSA
]M[address
←M[address]+1
IF M[address]=0 THEN
PC←PC+1
ISZ
پرش با دخیره ادرس بازگشت
افزایش یک واحد کلمه حافظه و
پرش از دستور بعدی اگر نتیجه
صفر بود
LDA
دستورات ثباتی :
دستورات :I/O
توصیف
دستورات ثباتی
نام دستور
دریافت کاراکتر و انتقال آن به
AC
Input character
INP
برداشتن کاراکتر از ACو انتقال
آن به خروجی
Output character
OUT
پرش به ورودی
Skip on Input flag
SKI
پرش به خروجی
Skip on Output flag
SKO
فعال کردن وقفه
Interrupt Enable on
ION
غیر فعال کردن وقفه
Interrupt Enable off
IOF
تکلیف :
فلوچارت شکل 5-15را بطور کامل شرح دهید .صفحه 158
واحد پردازش مرکزی :(CENTRAL PROCESSING UNIT) CPU
CPUبخشی از کامپیوتر است که وظیفه پردازش داده ها به عهده آن است .
اجزا اصلی :CPU
•
واحدکنترل
ثبات ها •
ALUواحد •
Register
Control unit
CPUشکل _ 1اجزای اصلی
ALU
3
3
OPR
شکل _ 3
SEL D
3
SEL B
3
SEL A
کلمه کنترلی را مشخص میکند
OPR
00101
SEL D
001
SEL B
011
SEL A
010
شکل_ 4عمل تفریق را مشخص میکند
واحد کنترلی
سازمان های ثبات های عمومی :
CPUبرای انجام اعمال خود نیاز به ذخیره اطالعات و بازیابی به موقع آنها را دارد .به
همین دلیل در داخل CPUیک یا چند ثبات به عنوان حافظه مورد نیاز استفاده
می شود .این ثبات ها باید با هم ارتباط داشته باشند.
شکل – : 2ساختار این ارتباط در این شکل مشخص است .خروجی ثبات ها از طریق
MUX 2به ALUوارد می شود و ALUعملیات خود را روی 2ثبات ورودی انجام
انجام می دهد و خروجی ALUنیز به ورودی ثبات ها متصل است که از طریق یک
دیکدر 3×8یکی از ثبات ها بار می شود .کلمه کنترلی که در شکل دیده می شود.
تمام ثبات ها و عملیات داخل ALUرا کنترل می کند برای مثال ،برای انجام ریز
عمل R1 R2 + R3در شکل_ 2ابتدا SEL Aمحتویات R2و SEL Bمحتویات R3را به
خروجی MUXها می برد OPR .نیز عمل جمع را برای ALUمشخص میکند و SEL D
ورودی بار شدن ثبات R1را فعال میکند تا خروجی ALUبه R1منتقل شود OPR.دارای
5بیت است(شکل_ )4و می توان 32ریز عمل را برای ALUمشخص کند SEL A .و
SEL Bمیتواند ورودی هشتمی را نیز انتخاب کنند.این ورودی ورودی حافضه است.
برای مثال برای انجام ریز عمل R1 R2 + R3کلمه کنترلی شکل 4مورد نیاز است.
سازمان پشته :
پشته حافظه ای است که اطالعات را به نحوی ذخیره می کند که دارای ساختار
(LAST IN FIRST OUT) LIFOآخرین ورودی ذخیره شده ،اولین خروجی قابل برداشت )
می باشد .پشته می تواند خود حافظه جداگانه ای باشد یا بخشی از حافظه اصلی یک
کامپیوتر را می توان به عنوان پشته تعریف کرد 2 .عمل روی پشته تعریف می شود .
_1عمل :PUSHکه موجب درج یک عنصر در باالی پشته میشود.
_2عمل :POPکه موجب حذف عنصر از باالی پشته میشود.
ثباتی که آدرس پشته را در خود ذخیره می کند ثبات پشته نام دارد .
شکل – 5ساختار یک پشته 64کلمه ای را نشان می دهد که به صورت حافظه ای مجزا
طراحی شده است .
شکل_5
(STACK POINTER) SPهمواره آدرس کلمه باالی پشته را در خود دارد پس طبق شکل – 5
C,روی پشته قرار دارد و پس SP=3است .برای POPکردن ،کلمه ای که در آدرس 3قرار
دارد را باید برداشت و SPرا یک عدد کم کرد .برای PUSHکردن ,ابتدا باید SPرا با یک جمع
کرد و سپس کلمه را داخل پشته وارد کرد.
برای چک پر و خالی بودن پشته دو پرچم استفاده میشود FULLو EMPTYاگر پشته خالی
شود EMPTY 1و اگر پشته پر شود .FULL 1عملیات POPو PUSHبه صورت زیر است.
PUSH
if (FULL = 0) thenv
{
Sp sp+1
)افزایش (sp
M[sp] DR
)نوشتن کلمه در باالی پشته(
)If (sp = 0) then (FULL 1
)چک پر بودن پشته)
EMPTY
0
(مشخص کردن خالی نبودن پشته)
}
POP
if (EPMPTY = 0) then
{
]DR M[sp
)خواندن کلمه از باالی پشه(
Sp sp -1
)کاهش (sp
(چک خالی بودن شرط) If (sp = 0), then EMPTY 1
FULL 1
(مشخص کردن اینکه پشته پر نیست)
}
توجه sp :در هر دو حالت پر یا خالی بودن پشته به خانه صفر پشته اشاره میکند ,ولی
بیت های FULLو EMPTYتمایز بین این دو حالت را نشان میدهند.
نکته :برای Pushمیتوان ابتدا دیتا را در پشته قرار داد و سپس Spرا افزایش دهیم و
برای popابتدا spرا کاهش داده و سپس بخوانیم.
پشته حافظه ای
پشته در داخل حافظه اصلی نیز در نظر گرفت.کافی است قسمتی از حافظه اصلی را
برای عملیات پشته در نظر بگیریم.شکل_ 6قسمتی از حافظه اصلی کامپیوتر را
نشان میدهد که به سه بخش تقسیم شده است,برنامه,داده و پشته.
spبه کلمه باالی پشته اشاره میکند.
همانطور که میدانیم ثبات ARو PCنیز آدرس حافظه را در اختیار میگزاردPC.در هنگام
های
عملیات واکشی استفاده میشود و به قسمت دستورات اشاره میکند AR.در فاز اجرا
برای خواندن عملوند مورد نیاز است,و SPبه منظور pushیا popکردن کلمات استفاده
برنامه
میشود.
pc
(دستورات)
داده
Push
AR
Sp
sp – 1
M[sp] DR
…………………………
sp
Pop
3000
پشته
3998
شکل_6
4001
]M[sp
sp + 1
DR
Sp
طبق شکل_ 6اولین کلمه پشته دارای آدرس 4001می باشد
و پشته با کاهش آدرس رشد می کند.بنا بر این اولین کلمه
در آدرس 4000ذخیره شده و آخرین کلمه در آدرس 3000
ذخیره شده.می توان برای چک پر یا خالی بودن پشته از دو
ثبات استفاده کرد که یکی آدرس پایین پشته و دیگری آدرس
باالی پشته را در خود دارد.بعد از هر SP,PUSHبا ثبات باالی
پشته مقایسه می شود و سپس از POPبا ثبات پایین پشته.
در شکل_ 6عملیات PUSHو POPمالحظه می شود.
برنامه
(دستورات)
داده
3000
3998
4001
pc
AR
پشته
sp
عملیات پشته :
برای استفاده از پشته برای محاسبه عملیات ریاضی ،باید عبارات را به فرم پسوندی
یا فرم معکوس لهستانی) (RPNنوشت .ما غالبآ با فرم میانوندی کار داریم.
برای مثال عبارت A*B-C*Dیک فرم میانوندی است یا برای مثال عبارت A+Bیک فرم
میانوندی است که فرم RPNآن به صورت AB+نوشته می شود.
مثال :عبارت4*5 – 3*4را محاسبه کنید .
*45*34حل :ابتدا آن را به فرم RPNمی نویسیم :
سپس از ست چپ با رسیدن به هر عملوند آنرا به پشته PUSHمی کنیم و با رسیدن به
هر عملگر دو عملوند باالی پشته را برداشته و با هم عمل می کنیم و حاصل را به پشته
بر میگردانیم.
4
شکل _7
12
3
3
5
8
20
20
20
20
-
*
4
PUSH
3
PUSH
*
4
5
PUSH
4
4
PUSH
تمرین :
بافرض داشتن ماشین پشته ای مشخص کنید دستورات زیر چه عبارتی را اجرا می کند ؟
( سراسری X )86را باید به دست آوریم که به صورت یک عبارت میاوندی می شود .
PUSH A
PUSH B
MUL
PUSH C
SUB
PUSH D
DIV
PUSH C
PUSH E
DIV
PUSH A
ADD
PUSH B
PUSH F
MUL
SUB
ADD
POP X
فرمت های دستورالعمل :
مهمترین فیلد های فرمت دستورالعمل عبارتند از :
* کد عملوند ( کد عملیاتی )) : (OP Codeکه نوع عملیاتی کد توسط دستورالعمل انجام
می گیرد را مشخص می کند .
* فیلد آدرس :که یک آدرس حافظه یا ثبات را مشخص می کند .
* فیلد modeآدرس دهی :این فیلد روش های آدرس دهی Operandدستور العمل را
مشخص می کند .
اغلب کامپیوترها دارای سه نوع ساختار کلی CPUهستند .
.1
.2
.3
سازمان مبتنی بر یک آکوموالتور
سازمان چند ثباتی
سازمان پشته ای
)(Single accumulator org
)(Multiple register org
)(Stack org
توضیح : 1فرمت دستور در کامپیوتر با سازمان یک اکوموالتور )(ACدارای یک فیلد آدرس است .
AC
مانند دستور ADDXکه یعنی محتویات خانه xرا با Acجمع کنAC + M[x] .
توضیح : 2در کامپیوتر با چند ثبات ( شکل 2در همین فصل ) کامپیوتر به 3فیلد آدرس نیاز دارد
مانند دستور ADD R1,R2,R3که به معنی R2 + R3
دو تا باشد مانند ADD R1,R2که به معنی R1 + R2
معنی ] R1 R1 + M[xاست.
.R1در این نوع تعداد فیلد آدرس می تواند
R1است یا دستور ADD R1,xکه به
توضیح : 3در کامپیوتر با سازمان پشته ای از دستورات Pushو popاستفاده می شود که یک فیلد
آدرس نیاز دارد.مثال ,Push Xکلمه ای که در آدرس xقرار دارد را به باالی پشته منتقل می کند
دستور
در این نوع ( فرمت ) ،ماشین دو عملوند باالی پشته را برداشته و جمع کرده و حاصل را به پشته بر
می گرداند .
بیشتر کامپیوتر ها مشخصات هر سه نوع کامپیوتر مذکور را دارند .
مثال :
فرض می خواهیم عبارت )] M[x]=(M[A]+M[B])*(M[C]+M[Dرا با دستورات ،صفر ،
یک ،دو و سه آدرس محاسبه می کنیم؟
حل:
– 1دستورات سه آدرسه :
ADD R1,A,B
;
R1
]M[A]+M[B
ADD R2,C,D
;
R2
]M[C]+M[D
MULL X,R1,R2
;
]M[X
R1 * R2
مزیت :کوتاهی برنامه
عیب :طوالنی بودن دستور
– 2دستورات دو آدرسه :
]M[A
]R1 + M[B
]M[C
]R2 + M[D
R1 * R2
R1
R1
R1
R2
R2
R1
]M[X
;
;
;
;
;
;
MOV R1,A
ADD R1,B
MOV R2,C
ADD R2,D
MUL R1,R2
MOV X,R1
. استفاده می کنندAC این نوع دستورات از ثبات: دستورات تک آدرسه
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]
MULL T
;
AC
AC*M[T]
Store X
;
M[X]
AC
: دستورات بدون فیلد آدرس
دارای یک فیلد آدرس هستند و سایر دستوراتPush, POP فقط، در ماشین های پشته ای
. فیلد آدرسی ندارند
Push A
Push B
ADD
Push C
Push D
ADD
Mul
POP X
;
;
;
;
;
;
;
;
TOS ← A
TOS ← B
TOS ← A+B
TOS ← c
TOS ← D
TOS ←C+D
TOS (C+D)*(A+B)
M[X] ←TOS
دستوراتReduced Instruction Set Computer = RISC
کامپیوتر ها با مجموعه دستورات کاهش یافته
دستورات : RISCدستوراتی که در این نوع ماشین بکار میروند و با حافظه کار دارند محدود به
Load , Storeهستند یعنی این دو دستور می توانند ارتباط بین ثبات های CPUو حافظه را فراهم
کنند و سایر ثبات ها فقط روی ثبات ها عمل می کنند و هیچ مراجعه ای به حافظه ندارند .
]R1 M[A
]R2 M[B
]R3 M[C
]R4 M[D
R1 R1 + R2
R3
R3 + R4
R1 R1 *R3
M[X] R1
;
;
;
;
;
;
;
;
Load R1,A
Load R2,B
Load R3,C
Load R4,D
ADD R1,R2
ADD R3,R4
MUL R1 ,R3
Store X,R1
دستورات کامپیوتر :
دستورات اغلب به صورت های زیر دسته بندی می شوند :
.1
.2
.3
.4
دستورات انتقال داده
دستورات دستکاری داده
دستورات کنترل برنامه
دستورات خاص
دستورات انتقال داده :
شرح
اختصار
نام دستور
برای بار گذاری داده به /حافظه /ثبات
ها
LD
Load
برای ذخیره داده به /حافظه/ثبات ها
ST
Store
برای انتقال داده به /حافظه /ثبات ها
MOV
Move
انتقال داده از ورودی به ثبات ها
IN
Input
انتقال داده از ثبات به خروجی
OUT
Output
برای انتقال داده ها از ثبات به حافظه
PUSH
Push
برای انتقال داده ها از حافظه به ثبات
ها
POP
Pop
محتویات دو ثبات را عوض می کند
XCH
EXCHANGE
دستورات کنترل برنامه :
اختصار
دستور
انشعاب
BR
Branch
پرش
JMP
Jump
عبور
SKP
Skip
فراخوانی
CALL
Call
بازگشت
RET
Return
تحقیق و مقایسه
COMP
)Compare (By Subtraction
Andرا انجام بده و سپس تست
کن
TST
)Test (By Anding
دستورات دستکاری داده ها :
این دستورات به سه قسمت تقسیم می شوند :
.1دستورات حسابی
.2دستورات منطقی
.3دستورات شیفت
: دستورات حسابی
دستور
اختصار
INCREMENT
INC
DECREMENT
DEC
ADD
ADD
SUBTRACT
SUB
MULTIPLY
MUL
DIVIDE
DIV
ADD WITH CARRY
ADDC
SUBTRACT WITH BORROW
SUBB
NEGATE
NEG
: دستورات منطقی
دستور
اختصار
Clear
CLR
Complement
COM
And
AND
OR
OR
Exclusive OR
XOR
Clear Carry
CLRC
Set Carry
SETC
Complement Carry
COMC
Enable Interrupt
EI
Disable Interrupt
DI
: دستورات شیفت
دستور
اختصار
Logical Shift Right
SHR
Logical Shift Left
SHL
Arithmetic Shift Left
SHLA
Arithmetic Shift Right
SHRA
Rotate right
ROR
Rotate Left
ROL
Rotate Right Through Carry
RORC
Rotate Left Through Carry
ROLC
مدهای آدرس دهی :
(Operandاپرند) عملوند ،اطالعاتی است که دستور بر روی آنها عملیات انجام می دهند .
مد آدرس مشخص می کند که عملوند چگونه انتخاب شود .روش های مختلفی که پردازنده می
تواند به اطالعات یا اپرند دسترسی داشته باشد را روش ها یا مد ( حالت ) های آدرس
دهی
می نامند .این مدها عبارتند از :
.1
.2
.3
.4
.5
.6
.7
مد آدرس
مد آدرس
مد آدرس
مد آدرس
مد آدرس
مد آدرس
مد آدرس
دهی
دهی
دهی
دهی
دهی
دهی
دهی
بالفصل ) (Immediate Operand
ثبات )(Register mode
مستقیم ( ) Direct mode
غیر مستقیم
غیر مستقیم ثباتی
نسبی با ثبات پایه
نسبی با ثبات Index
مد آدرس دهی بالفصل :
در این روش عملوند در خود دستور نهفته است بنابراین ،این مد دارای فیلد عملوند است نه فیلد
آدرس.
مثال :
Mov AX, 1235, AX←1235
ADD BL, 35H, BL←BL+35H
مد آدرس دهی مستقیم :در این نوع اپراند در حافظه موجود است و اپراند در دستور قرار دارد
.
حافظه
.
مثال :
.
]Mov AL, [4000
12
AL
4000
.
.
حافظه
اطالعات در خانه حافظه با آفست آدرس 4000قرار دارد که با این دستور محتوای خانه حافظه مذکور وارد
ثبات ALمیشود.اگر کرو شه ] [4000قرار داده نشود در این صورت عدد 4000وارد ثبات ALمیشود.
مد آدرس دهی غیر مستقیم :در این نوع آدرس دهی آدرس اطالعات در متن دستور نیست
بلکه در یکی از ثبات های BP,BX,SI,DIوجود دارد
مانند :
]Mov DL,[BX
شرح مثال :
اطالعاتی که آدرس آن)در Segmentداده( در ثبات BXاست به ثبات DLمنتقل می شود.
مد آدرس دهی غیر مستقیم نسبی با ثبات پایه :
در این روش Offsetآدرس موثر ) (EAاطالعات در حافظه برابر محتوای یکی از ثبات های BXیا BP
EA=BX+disp
به عالوه یک مقدار جابه جایی که همان Offsetاست یعنی
]mov CL,[BX+10H
محتوای خانه حافظه به آ فست آدرس BX+10به ثباتCLمنتقل می شود
]mov AX,[BX+2
AL
AH
12
11
mov AX
12
11
+2
0005
0006
0007
0005
0003
BX
شرایط بیت های وضعیت :
در کامپیوتر ها ،ثباتی مانند ALUدر نظر گرفته می شود که بیت های وضعیت ) (Status Bitدر آن
ذخیره می گردد .بیت های وضعیت را بیت های شرط یا بیت های پرچم نیز می نامند .
در شکل ، 1بلوک دیاگرام یک , ALUهشت بیتی را همراه ثبات وضعیت را نشان می دهد.
بیت های وضعیت را با C,S,Z,Vنشان میدهند.
* بیت ( Cرقم نقلی) :یک می شود اگر C8یک شود در غیر اینصورت صفر است.
* بیت (Sعالمت) :زمانی یک می شود که در بیت عالمت ( با ارزش ترین بیت )MSBیعنی F7
برابر یک باشد.
* بیت ( Zبیت صفر)( :صفر بودن نتیجه) یک می شود اگر خروجی برابر صفر شود.
* بیت :(Overflow)Vیک میشود اگر ) (XNORدو رقم نقلی آخر برابر یک شود.بیت Vسرریز عملیات
منطقی ALUو در حقیقت خطا دار بودن حاصل را نشان می دهد.
C7
V=C8
تکلیف : 1
نشان دهید چرا اگزنور دو رقم نقلی آخر برابر یک شود بیت Vیک میشود؟
صدا کردن و بازگشت از زیر روال:
یک زیر روال یک رشته دستورات است که عملی را انجام می دهد.هر زمان که زیر روال
فراخوانی
می شود,یک پرش به ابتدای زیر روال انجام میگیرد و پس از اتمام اجرای زیر روال یک پرش به
برنامه اصلی صورت میگیرد.دستوری که کنترل را در برنامه به یک زیر روال می برد،دارای
اسامی متفاوتی است.معمول ترین این نام ها عبارتند از« :صدا کردن زیر روال» « ،پرش
به زیر روال»
پرش به زیر روال دو عمل انجام میدهد:
_1آدرس دستور بعدی)محتویات (PCدر مکانی ذخیره میشود.
_2کنترل به ابتدای زیر روال منتقل میشود.آخرین دستور هر زیر روال که معموأل بازگشت از
زیر روال
) (Returnنامیده می شود آدرس بازگشت را که ذخیره شده بود به PCمنتقل میکند.
کامپیوتر ها برای ذخیره آدرس بازگشت می تواند از بخشی از حافظه یا از پشته یا از یک ثبات
استفاده کنند.
یا می توانند در آدرس بازگشت را ابتدای زیر روال ذخیره کنند.اگر زیر روال دیگری توسط زیر
خواهد شد ،فراخوانی pushروال فعلی صدا زده شود،آدرس بازگشت جدید در پشته
زیر روال را می توان با ریز عملیات زیر انجام داد.
دستورات CALL
(کاهش اشاره کر پشته)
SP SP-1
)ذخیره PCدر پشته(
]M[SP
SP
(انتقال کنترل به زیر روال)
PC
آدرس مؤثر
دستوری که از زیر روال باز میگردد توسط ریز عملیات زیر پیاده سازی می شود
)پشته را POPکرده و محتویات به PCمنتقل می شود(
(به اشاره گر پشته یک واحد اضافه می کند)
]M[sp
SP + 1
PC
SP
وقفه:
وقفه فرآیندی است که به انتقال ,کنترل برنامه,از برنامه در حال اجرا به یک برنامه دیگر گفته می شود.
پس از اجرای برنامه سرویس وقفه ،کنترل به برنامه عادی باز می گردد.
روال کار وقفه مانند صدا زدن زیر برنامه است ولی با سه تفاوت زیر:
_1یک وقفه با یک سیگنال داخلی یا خارجی رخ می دهد نه با اجرای یک دستور(به جز وقفه های نرم افزاری)
_2آدرس برنامه سرویس دهی به وقفه,سخت افزاری مشخص می شود نه از روی فیلد آدرس دستور
_3یک پروسه وقفه معموآل تمام اطالعات الزم برای تعین حالت (CPUمثل بیت های وضعیت)
را ذخیره می کند ولی فرا خوانی زیر روال فقط PCرا ذخیره می کند.
اگر وقفه در حین اجرای دستور رخ دهد,اجرای دستور خاتمه می یابد و پس از اجرا,پردازنده چک می کند
آیا وقفه رخ داده است یا خیر که در صورت وقوع وقفه,روتین پاسخ دهی به وقفه اجرا می شود.
انواع وقفه:
_1وقفه های خارجی
_2وقفه های داخلی _3وقفه های نرم افزاری
_1وقفه های خارجی:
این نوع وقفه از وسایل ,I/Oاز یک وسیله زمان سنجی یا از هر منبع خارجی دیگری می آید.
مثال هایی از این نوع وقفه عبارتند از :وسیله I/Oدرخواست انتقال داده کند,وسیله I/Oانتقال
داده را خاتمه داده باشد .یا مانند اشکال در سیستم برق.
_2وقفه های داخلی:
این نوع وقفه به علت استفاده نادرست از دستورات یا داده ها رخ می دهد.به این نوع وقفه Trap
نیز می گویند.
مثال :تقسیم بر صفر,یک کد عملیاتی نامعتبر,سر ریز پشته...,
تفاوت وقفه داخلی با خارجی:
یکی منبع بروز آنها است و دیگری اینکه وقفه های داخلی با برنامه سنکرون هستند یعنی هر بار
برنامه اجرا شود در یک مکان و زمان ثابت رخ می دهد ولی وقفه های خارجی آسنکرون
هستند یعنی در اجراهای متفاوت برنامه ممکن است در مکان های مختلف رخ دهند یا اصآل
رخ ندهند .این وقفه ها توسط سیگنال هایی که در CPUرخ می دهد راه اندازی می شود.
_3وقفه نرم افزاری:
توسط اجرای یک دستور رخ می دهد.یک وقفه نرم افزاری در واقع یک دستورالعمل callویژه است
که شبیه وقفه عمل میکند.
کامپیوتر CISC
کامپیوتر (Complex Instruction Set Computer) CISCکامپیوترهایی با تعداد دستورات زیاد
می باشد .مشخصات اصلی این کامپیوترها عبارتند از :
دستورات زیاد( .حدود 100تا 250دستور)
دارای بعضی دستورات خاص هستند که به ندرت استفاده می شود.
مدهای آدرس دهی زیادی دارند(.بین 5تا 20مختلف است)
طول دستورات متفاوت است.
دارای دستوراتی هستند که می توانند با عملوندهای حافظه ای سروکار داشته باشند.
کامپیوتر (Reduse Instruction Set Computer) RISC
ایده معماری RISCتالشی برای کاهش زمان اجرای دستورات با ساده سازی مجموعه دستورات بود.
مشخصات اصلی کامپیوترهای RISCعبارتند از :
.1
.2
.3
.4
.5
.6
.7
.8
دستورات نسبتاً کم
مدهای آدرس دهی نسبتاً کم
طول دستورات غالباً ثابت است و به راحتی کامپایل می شوند.
اجرای دستورات معموال ً در یک سیکل انجام می شود.
دسترسی به حافظه فقط منحصر به دستورات LOADو STOREاست.
تمام عملیات داخل ثبات های CPUانجام می شوند.
استفاده موثر از پایپالین دستورالعمل.
تعداد ثبات زیاد پردازنده.
پردازش موازی
به معنی به کارگیری تکنیک های متنوع در پردازش همزمان داده هاست که به
منظور افزایش سرعت محاسبات سیستم های کامپیوتری مورد استفاده قرار می
گیرند.مثال ً وجود پردازنده در یک سیستم یا وجود چندین واحد اجرایی یا وجود
چندین ALUنمونه هایی از پردازش موازی هستند.
روش های مختلفی برای طبقه بندی پردازش موازی وجود دارد،یکی از دسته
بندی ها توسط M . Y . Flynnپیشنهاد گردید که کامپیوتر ها را از نظر تعداد
پردازنده ها ،تعداد داده ها،تعداد دستورات و حافظه به 4گروه تقسیم می کند:
SISD (Single Instruction Stream Single Data Stream))1
دارای یک CPUهستند که یک دستور روی یک داده می توانند اجرا کنند.یعنی
یک واحد کنترل و یک واحد کنترل و یک ALUدارند.بعضی منابع ،این نوع معماری
فن نیومن نیز می گویند.
البته به طور داخلی می توتنند با کمک پایپالین از پردازش موازی بهره ببرند(.در
برخی منابع گفته شده است که پایپالین MSIDاست)(حتی بعضی منابع گفته
اند پایپالین MIMDاست)
SIMD (Single Instruction Stream Multiple Data Stream))2
یک واحد کنترل و چندین واحد پردازشگر ))PE:Processing Elementدارند.واحد
کنترل برای همه PEها یک دستور را صادر می کنند و PEها دستور را روی داده
های مختلف انجام می دهند.
آرایه های پردازنده ) )Array Processorدر این دسته هستند.
شکل( )1مثالی از یک ماشین SIMDرا نشان می دهد که به آن ماشین برداری
) )Vector Machineگویند.این ماشین دارای nواحد محاسباتی ) )ALUاست که
ورودی ها به صورت بردارهای Nتایی وارد می شوند و هر ALUروی یک مؤلفه از
این بردار عملی مثل جمع را انجام می دهد.
شکل 2کامپیوتر ILLIAC IVرا نشان می دهد که یک array processorاست و
یک نوع SIMDاست .یک واحد کنترل دارد که دستورات را به پردازنده ها اعمال
می کند و هر پردازنده ،دستور را روی داده های حافظه خود اجرا می کند.پردازنده
آرایه ای،مخصوصاً برای محاسبات ماتریس مناسب است.
MISD )3
فقط از نظر تئوری حائز اهمیت است چون عمال ً هیچ سیستمی با چنین
سازمانی ساخته نشده است.در برخی منابع گفته شده که سیستم های تحمل
پذیر خطا ( )Fault tolerantدر این دسته هستند.همچنین پایپالین نیز در برخی
منابع نوعی MISDمعرفی شده است.
MIMD)4
می توانند چندین برنامه را در یک زمان روی داده های متفاوت اجرا کنند.سیستم
های چند پردازنده ای و چند کامپیوتری در این دسته هستند.
شکلa 3یک چند پردازنده ای را نشان میدهد که از یک حافظه اشتراکی
استفاده می کند.به منظور کاهش تداخل دسترسی ها ،هر پردازنده می تواند
حافظه محلی نیز داشته باشد که در شکل b 3نمایش داده شده است.
توجه:طبقه بندی Flynnهمه معماریها را پوشش نمی دهد.
مسئله:فرض کنید برنامه ای روی یک پردازنده،زمان اجرای tدارد .حال همین
برنامه را روی pپردازنده مشابه تقسیم کرده ایم.در حالت ایده آل انتظار
داریم زمان اجرا شود ولی در واقعیت چنین نیست.چون میزان مبادله
اطالعات بین pپردازنده ،زمان اجرا را افزایش می دهد.عالوه بر این ممکن
است دستوراتی وجود داشته باشند که قابل موازی شدن ،نباشد.فرض
) قابل موازی شدن نیستند،یعنی
کنید fدرصد از دستورات برنامه (
به هم وابستگی دارند و باید توسط یک پردازنده اجرا شوند که به آن مؤلفه
ترتیبی برنامه گویند.اگر از زمان مبادله اطالعات صرف نظر کنیم ،زمان
(f +است.بنابراین تسریع pپردازنده نسبت
اجرای pپردازنده برابر (t
به یک پردازنده برابر است با:
حال اگر تعداد پردازنده ها را به سمت بی نهایت میل دهیم ،حداکثر تسریع
حاصل می شود:
یعنی اگر در برنامه ای 20درصد دستورات موازی نشوند آنگاه تسریع از یعنی
5کمتر است.این برنامه برای چند پردازنده ها یک عامل محدود کننده
است.یعنی ما باید به دنبال روشی باشیم که بتوان عملیات ترتیبی را
تسریع کند که برای این منظور می توان از پایپالن بهره جست.
Eاست .مثال اگر در برنامه ای روی
نکته:بازدهی یا کارایی pپردازنده برابر
یک پردازنده در 10ثانیه و روی 5پردازنده در 2/5ثانیه اجرا شود آنگاه
Eبازدهی می باشد.
Sو
تسریع
پایپالین(خط لوله)
پایپالین تکنیکی است که یک عمل سری را به عملیات جزئی تفکیک می کند و
هر عمل جزئی همزمان با سایر عملیات جزئی قابل انجام است.
در واقع پایپالین از تعدادی بند( )stage ،stateتشکیل شده است که هر بند
وظیفه خاصی به عهده دارد و بند ها می توانند همزمان عملیات خاص خود را
انجام دهند .مثال فرض کنید یک خط لوله شامل 4بند است و (کارها) taskها به
ترتیب وارد این بندها می شوند.فرض کنید هر بند یک کالک به طول می انجامد
.بنابراین در کالک ،1کار 1وارد بند 1می شود و در کالک 2کار 1وارد بند 2و کار
2وارد بند 1می شود و در کالک 3کار 1وارد بند 3و کار 2وارد بند 2و کار 3وارد
بند 1م شود:
همانطور که در شکل 4دیده می شود از کالک 4به بعد با هر کالک یک کار از
پایپ خارج می شود.حال می خواهیم یک خط لوله با بند kبند را بررسی
کنیم.به ازای هر بند یک ثبات (لچ) الزم است و به ثبات ها کالک زده می
شود تا بندها با هم سنکرون شوند.پریود کالک باید طوری تنظیم شود که
بندها فرصت کنند عملیات خود را کامل کنند .اگر تآخیر بند iبرابر( )i
و تآخیر ثبات برابر tLباشد آنگاه پریود کالک حداقل باید max(ti)+tLباشد
شکل 5پایپ kبندی را نشان می دهد که بندها با Siو لچ ها با Liنشان داده
شده اند .اگر پریود کالک Tفرض شود و nتا کار وارد این پایپ شوند آنگاه
اولین کار نیاز به kکالک دارد که از پایپ خارج شود ولی سایر کارها هر یک
با یک کالک از پایپ خارج می شوند پس زمان اجرا برابر KT + (n-1) T
است.
حال اگر بخواهیم این nکار را بدون پایپ اجرا کنیم آنگاه زمان اجرا برابر
) n×(t1+t2+…+tkمی باشد(.دقت کنید بدون پایپ ؛ لچ ها نیاز نیستند ).اگر تآخیر
بندها یکسان باشد و تآخیر لچ ناچیز فرض شود آنگاه زمان اجرای بدون پایپ برابر
nKTمی باشد.بنابراین تسریع پایپ نسبت به بدون پایپ برابر است با:
زمان بدون پایپ
𝑇𝐾𝑛
𝐾𝑛
=S
=
=
𝑇 𝐾𝑇+ 𝑛−1
)𝐾+(𝑛−1
زمان پایپ
حداکثر تسریع وقتی حاصل می شود که تعداد کارها ) (nافزایش یابد پس:
=Smax
𝑆
𝐾
=
lim
𝑎 𝑛
→
بنابراین خط لوله ای که kبند دارد می تواند حداکثر ،سرعت را با kبرابر
کند.دقت کنید این نتیجه با این فرض که تآخیر بندها یکسان است و تآخیر لچ
ناچیز بدست آمده است.
مثال:فرض کنید یک خط لوله 4بند دارد که تآخیر بندها 60و50و90و 80نانوثانیه
است و تآخیر ثبات 10نانوثانیه می باشد.حداکثر تسریع این خط لوله
نسبت به اجرای غیر خط لوله ای را محاسبه کنید.
پاسخ:تعداد کارها را nفرض می کنیم .
90+10 100ns T MAX (ti)+tLپریود کالک
t14100+(n-1)100100n+300زمان پایپ
t2 n(60+50+90+80)280nزمان بدون پایپ
Sتسریع
همانطور که دیدیم تسریع حداکثر ،برابر 4نشد.بنابراین خط لوله وقتی خوب
است که تآخیر بندهای آن یکسان باشد.
توجه:می توان بازدهی یا کارایی خط لوله را برابر Eیعنی حاصل تقسیم
تسریع به تعداد بندها تعریف کرد.در مثال قبل اگر n10آنگاه . E 54
مثال:اجرای 100کار روی یک خط لوله 8بندی چند کالک طول می کشد اگر
الف)کارها به صورت عادی وارد خط لوله شوند.
ب)کارها به صورت دسته های مجزای 20تایی وارد شوند.
ج)کارها به صورت دسته های 40و20و20و10و 10دستوری وارد شوند.
د)کارها به صورت دسته های 40و20و10و10و10و 10دستوری وارد شوند.
پاسخ:
جواب 8T+99T=107Tاست.
الف)طبق فرمولKT+(n-1)T
ب)منظور این است که 20دستور اول پشت سر هم وارد خط لوله می شوند و
دستور 21وقتی وارد خط لوله می شود که دستور 20از خط لوله خارج
شود.کافیست زمان اجرای 20دستور را محاسبه کنیم و در 5ضرب می کنیم:
5×(8T+19T)=135T
=(8T+39T)+(8T+19T)+(8T+19T)+(8T+9T)+(8T+9T)=135Tزمان
=(8t+39T)+(8T+19T)+(8T+9T)×4=142Tزمان
نکته:اگر nدستور به صورت mدسته مجزا وارد خط لوله kبندی شوند،زمان اجرا
برابر mKT+(n-m)Tاست (اثبات کنید) .دقت کنید مهم نیست هر دسته شامل
چند دستور است.
مثال:فرض کنید می خواهیم عمل ترکیبی i=1,2,…,7 ,Ai*Bi+Ciرا انجام می دهیم.
همانطور که در جدول دیدیم با 9کالک عملیات کامل می شود)(3T+6T=9T
پایپالن محاسباتی
این نوع برای پیاده سازی عملیات ممیز شناور ،ضرب اعداد ممیز ثابت.وسایر اعمال
محاسباتی استفاده می شود.
فرض کنید بخواهیم دو عدد نرمال شده ممیز شناور X A 2aو Y B 2bرا با هم
جمع و تفریق کنیمA.و Bمانتیس و bو aنما هستند.می توان جمع و تفریق را
در 4بند مطابق شکل( )6انجام داد.
ثبات هایی که با Rمشخص شده اند بین طبقات به منظور ذخیره نتایج میانی
استفاده می شوند.عملیاتی که در این 4بند انجام می شود عبارت است از:
_1مقایسه نماها _2تنظیم مانتیس _3جمع و تفریق مانتیس ها _4نرمال کردن
نتیجه.
نماها با کم شدن از یکدیگر مقایسه می شوند.تفاضل نماها نشان می دهد که
مانتیس مربوط به نمای کوچکتر،چند واحد به سمت راست باید شیفت
یابد.این عمل موجب مساوی شدن نماها و تنظیم مانتیس می شود.در بند 2
مانتیس ها جمع یا تفریق می شوند و در بند 4نتیجه نرمال می شود.اگر
سرریز در مانتیس رخ دهد.مانتیس نتیجه،به راست شیفت می یابد و نمای آن
یک واحد افزوده می شود و اگر زیرریز در مانتیس رخ دهد،تعداد صفرهای
سمت چپ مانتیس نشان می دهد که نتیجه چند واحد به چپ باید شیفت
یابد.
تمام بند های مذکور در شکل()6را می توان با مدار ترکیبی طراحی نمود.
فرض کنید تآخیر هر بند به ترتیب برابر است با t1=60nsو t2=70nsو t3=100nsو
t4=80nsو تآخیر ثبات های میانی برابر است با t3=10nsپریود کالک باید برابر
tp=t3+t2+100+10=110nsباشد.یک جمع کننده/تفریق کننده بدون پایپالین دارای
تآخیری برابر tn=t1+t2+t3+t4+tr=320nsمی باشد(.دقت کنید در این محاسبه یک
ثبات برای نگهداری نتیجه نهایی برای غیر پایپ در نظر گرفته شده است)که
320
= 2/9در واقع تسریع عبارت است از :
حداکثر تسریع برابر است با
110
⟹Smax=320
110
𝑛320
4+(𝑛−1)110
=S
پایپالن دستور
سیکل دستور یک سیکل ترتیبی است که با کمک پایپالن می توان مراحل را روی هم انداخت .مثال
فرض کنید در یک ماشین مراحل اجرای دستور عبارتند از:
-1واکشی دستور)(FI
-2ترجمه دستور و محاسبه آدرس مؤثر )(DA
-3واکشی عملوند)(FO
-4اجرا و ذخیره حاصل در یک مکان مناسب
فرض کنید حافظه دستور و داده مجزا هستند ،اگر دستورات هیچ وابستگی به
هم نداشته باشند و دستورات انشعاب نیز در برنامه وجود نداشته باشند آنگاه
دستورات بطور عادی وارد خط لوله می شوند.پس زمان اجرای nدستور برابر
4T+(n-1)Tخواهد بود.
مثالزمان اجرای 100دستور برابر 4T+99T=103Tمی باشد.ولی در خط لوله
دستورالعمل،نوع مشکل یا مخاطره وجود دارد که باعث می شود خط لوله دچار
تآخیر شود.این مشکالت عبارتند از:
_1مخاطره ساختاریSTRUCTURAL HAZARD
_2مخاطره داده ای
_3مخاطره کنترلی
_1مخاطره ساختاری یعنی کمبود منابع مثل حافظه.مثال فرض کنید حافظه
دستور و داده یکسان هستند آنگاه بندهای FIو FOبا هم نمی توانند انجام
شوند و اگر هیچ وابستگی بین دستورات نباشد،نحوه اجرای دستورات به شکل
زیر است:
همانطور که مالحظه می شود،دو دستور اول 5کالک و بعد از آن هر 2دستور 4
کالک کامل می شوند یعنی 100دستور نیاز به 5+49×4=201کالک دارد .در
شکل فوق فرض کرده ایم که EXنتیجه را در یک ثبات قرار می دهد.
البته اگر فرض کنیم EXنیز نتیجه را در حافظه می نویسد،آنگاه FOبا EXنیز
همزمان قابل انجام نبود و تآخیر بیشتر می شود.
_2مخاطره داده ای یعنی وابستگی بین دستورات .مثال یک دستور در مرحله FO
ممکن است نیاز به واکشی عملوندی دارد که در همان لحظه توسط دستور قبلی
در مرحله EXدر حال تولد است.در این صورت دستور دوم باید صبر کند.
البته این نوع مخاطره ممکن است به علت وابستگی آدرس نیز پیش آید.
برای رفع مخاطره داده ای روشهایی پیشنهاد شده است.یکی از این روشها
operand
یا
ارسال عملوند ( bypassingیاinternal forwarding
)forwardingنام دارد که مسیرهایی به سخت افزار اضافه می کند که نتیجه
یک دستور را بتوان به دستور بعدی فرستاد.مثال نتیجه حاصل از ALUبتواند
مستقیما به ورودی ALUبرای استفاده دستور بعدی وارد شود.این روش به یک
سخت افزار برای شناسایی وضعیت و مالتی پلکسر نیاز دارد.
روش دیگر بارکردن با تآخیر ) (delayed loadنام دارد.کامپایلر در برخی ماشین
ها چنان طراحی شده است که با جابجایی دستورات و در صورت لزوم استفاده
ازدستورات .NO_OPاین مخاطره را برطرف می کند.در واقع دستوراتی که به هم
وابسته هستند باید از هم دور شوند و بین آنها دستورات دیگری قرار داده شود.
روش دیگری موسوم به hardvare interlockدر برخی منابع برای رفع مشکل
داده ای ارائه شده است.
_3مخاطره کنترلی یعنی وجود دستورات انشعاب بخصوص انشعاب
شرطی.دستورات انشعاب شرطی ممکن است ترتیب اجرای دستورات انشعاب
را به هم بزنند و تا دستور اجرا نشود مشخص نیست دستور بعدی کدام است
.دستور انشعاب غیرشرطی نیز همواره ترتیب اجرا را به هم می زند.شکل زیر
اجرای تعدادی دستور را نشان می دهد که دستور سوم آن انشعاب است.و
فرض شده که به محض تشخیص این دستور از ورود دستور بعدی جلوگیری می
شود تا نتیجه مشخص شود.
روش های رفع مخاطره کنترلی عبارتند از( :برخی از این روش ها تا حدودی تآخیر را
کاهش می دهند).
_1واکشی دستور بعد از پرش و دستور مقصد پرش تا مشخص شود که آیا انشعاب
انجام می شود( )takenو یا خیر (.)not taken
_2استفاده از بافر مقصد پرش( BTB.)BTB.Branch Target Bufferیک حافظهء
انجمنی (در فصل حافظه ها معرفی شده است)است که در مرحله واکشی پایپالین
کار گذاشته می شود.خانه های BTBشامل آدرس دستورات پرش به همراه آدرس
مقصد آنهاست.وقتی یک دستور انشعاب ترجمه می شود BTB،جستجو می شود
،اگر آدرس این پرش در BTBباشد،دستور مقصد مستقیما در BTBهست و نیاز به
واکشی ندارد.مزیت BTBاین است که دستورات پرشی که قبال اتفاق افتاده اند بدون
توقف در پایپالین موجودند.
_3استفاده از بافر حلقه (. )Loop bufferاین بافر یک بانک ثبات است که تحت
نظر بند واکشی قرار دارد.وقتی یک حلقه در برنامه شناسایی می شود،در یک
بافر حلقه ،دستورات این حلقه ذخیره می شوند و بدون نیاز به دسترسی به
حافظه،حلقه اجرا می شود.
_4پیش بینی انشعاب( )branch predictionواحد سخت افزاری وجود دارد که
بر اساس دستورات پرش،نتیجه پرش را پیش بینی می کند .
_5انشعاب یا تآخیر ( )Delayed Branchکه در اکثر پردازنده های RISCاستفاده
می شود.کامپایلر با جابجایی دستورات سعی می کند دستورات مفیدی که حتما
باید اجرا شوندو ربطی به نتیجه انشعاب ندارند،بعد از انشعاب وارد خط لوله کند تا
خط لوله همیشه مشغول باشد.البته ممکن است کامپایلر دستورات NO_OP
بعد از انشعاب وارد خط لوله کند.
مثال(:مخاطره داده ای )فرض کنید خط لوله یک پردازنده RISCشامل 3مرحله
است:
E
A
I
بند Iواکشی دستور است.در بند Aدستور ترجمه شده و ثباتهای الزم انتخاب
می شوند و آدرس مؤثر برای دستورات
Load & Storeمحاسبه می شود و آدرس ،مقصد انشعاب محاسبه
می شود.در واقع در این بند Eعمل ALUانجام می شود .بند Eخروجی ALUرا
بسته به نوع دستور (ثباتی،پرش،ذخیره یا بارگذاری حافظه) به مقصد درست
ارسال می کند .نحوه اجرای دستورات زیر در این خط لوله را نشان می دهیم:
]1:R1← M [address1
]2:R2 ←M [adrees2
3:R3←R1+R2
4:M[adrees3] ←R3
دقت کنید دستور 3در زمان 4نمی تواند عمل Aرا انجام دهد زیرا نیاز به R2
دارد که توسط دستور 2هنوز آماده نیست پس از روش Deleyed Load
استفاده کرده ایم و NOPبعد از دستور 2وارد خط لوله شده است البته
اگر دستوری در برنامه وجود می داشت که کامپلیر می توانست بعد از
دستور 2وارد خط لوله کند،بجای NOPآن دستور وارد می شود.مثال فرض
کنید دستور 5در برنامه R4←R4+R5باشد می توان این دستور را بعد از
دستور 2وارد خط لوله کرد.
مثال(:مخاطره کنترلی) پایپ مثال قبل را در نظر بگیرید و اجرای دستورات زیر
را نشان دهید.
]1:R1←M [address
2:R2← R2 + 1
3:R3← R3 - R4
4:R5← R5 ─ R6
5: Branch x
.
.
X: R7←R7 – 1
پاسخ:کامپایلر می تواند از روش deleyed branchاستفاده کند و بعد از
انشعاب NOPوارد کند تا زمانیکه دستور انشعاب اجرا شود و آدرس مقصد
مشخص شود.بنابراین نیاز به دو دستور NOPهست:
یعنی اجرا 10کالک طول می کشد.ولی کامپلیر می تواند بهتر عمل کند و
دستورات 3و 4را بعد از دستور انشعاب وارد خط لوله کند:
که اجرا در 8کالک کامل می شود.
مثال(:عملیات برداری) فرض کنید می خواهیم حاصل C=A1B1+…+…A16B16را با
پایپالین زیر محاسبه کنیم.این خط لوله دارای دو بخش ضرب کننده و جمع کننده است
که هر کدام 4بند دارند.
در اولین کالک A1B1و A5B5در بند اول جمع کننده با هم جمع می شوند.سیکل
دهم A2B2+A6B6را آغاز می کند و عمل به همین ترتیب ادامه دارد.با این الگو جمع به
4بخش زیر تقسیم می شود.
C=A1B2+A5B5+A9B9+A13B13
+A2B2+A+B6+A10B10+A14B14
+A3B3+A7B7+A11B11+A15B15
+A4B4+A8B8+A12B12+A16B16
وقتی که دیگر جمله ضربی برای جمع شدن وجود نداشته باشد،سیستم 4صفر به
داخل خط لوله ضرب ارسال می کند.سپس در هر یک از 4بند ،تنها یک ضرب جزئی
وجود خواهد داشت که مربوط به 4جمع در سطر معادله فوق است4.جمع جزئی در
نهایت با هم جمع می شوند تا حاصل جمع نهایی حاصل گردد.
نکته:خط لوله می تواند سنکرون نباشد در این صورت بین هر دو بند سیگنال
های readyو( ACKتایید) وجود دارد.
نکته:خط لوله می تواند غیر خطی باشد به این معنی که یک بند بتواند نتیجه
اش را به چند بند ارسال کند.
نکته:اگر پریود کالک Tو فرکانس کالک Fباشد آنگاه ( through putتوان
عملیاتی) برابر fاست.اگر خط لوله بدون مشکل پر شود یعنی در هر
کالک یک کار از خط لوله خارج شود(.توان عملیاتی تعداد کارهای انجام
شده در واحد زمان است).
نکته:فرض کنید tزمان اجرای یک کار بدون خط لوله باشد .حال همین برنامه
را تبدیل به خط لوله kبندی کنیم آنگاه پریود کالک +dاست که تآخیر لچ
= fمی باشد.هزینه کل پایپ
است.بنابراین حداکثر توان عملیاتی
مراحل پایپ و hهزینه هر لچ
c+khمی باشدکه cهزینه کل
می باشد.نسبت کارایی به هزینه برابر است با:
PCR
با توجه به این رابطه بهترین مقدار kبرابر است با
مشتق بگیرید و برابر صفر قرار هید.
(از PCRبر حسب K
_7یک واحد محاسباتی با ساختار خط لوله ای دارای Kمرحله ( )stageبا زمان
اجرای t1است.میزان تسریع این واحد محاسباتی نسبت به حالت غیر لوله ای
برای انجام nمحاسبه چقدر است؟
K)1
nK)2
)3
𝑘𝑛
k+n
𝑘𝑛
)4
k+n−1
_8اگر Kتعداد مراحل یک سیستم خط لوله ای باشد.آنگاه این سیستم خط لوله
ای نسبت به یک سیستم بدون خط لوله حداکثر چند برابر سریعتر می باشد؟
2K-1)4
2K)3
K)2
2K+1)1
_9در رابطه با pipelineکدام عبارت صحیح است؟
)1پیاده سازی pipelineبرای CPUهایی با طول دستورالعمل ثابت نسبت به CPU
هایی با طول دستورالعمل متغیر سخت تر است چون تعداد خطوط الزم برای واکشی
دستورالعمل از قبل باید ثابت باشد.
)2پیاده سازی pipelineبرای CPUهایی با طول دستورالعمل ثابت نسبت به CPU
هایی با طول دستورالعمل متغیر آسان تر است چون احتیاجی به decodeندارد.
)3پیاده سازی pipelineبرای CPUهایی با طول دستورالعمل ثابت نسبت بهCPU
هایی با طول دستورالعمل متغیر آسان تر است چون احتیاجی به تشخیص طول
دستورالعمل وجود ندارد.
)4پیاده سازی pipelineبرای CPUهایی با طول دستورالعمل ثابت نسبت به CPU
هایی با طول دستورالعمل متغیر سخت تر است چون DECORDEآنها پیچیده تر
است.
واسط ورودی-خروجی :
واسط ورودی-خروجی واحدی سخت افزاری است که روشی را برای انتقال داده ها بین حافظه
داخلی سیستم و دستگاه های I/Oدر اختیار می گیرد.
منظور از قرار دادن واسط ،حل مشکالت موجود به دلیل تفاوتهای اساسی بین دستگاههای
I/Oو خود کامپیوتر است.
عمده تفاوتها عبارتند از :
_1دستگاه های ) I/Oدستگاههای جانبی (Peripheral Devicesعموماً الکترومکانیکی یا
الکترونیکی هستند .پس تبدیالت اطالعات امری ضروری است.
الکترو مغناطیسی هستند در حالیکه حافظه و CPUالکترونیکی هستند.
پس تبدیالت اطالعات امری ضروری است.
_2نرخ انتقال داده در دستگاههای جانبی کندتر از CPUو حافظه است پس باید مکانیزمی برای
سنکرون کردن آنها وجود داشته باشد.
کدها و فرمت های داده ها در دستگاههای جانبی با فرمت کلمات در CPUو حافظه متفاوت است
_3
_4مد های عملیاتی دستگاه های مختلف جانبی با یکدیگر متفاوت اند و باید هر کدام توسط کنترل
کننده خاص خود هدایت شود.
به مدار سخت افزاری بین CPUو جانبی ها را مدار واسط) (Interfaceمی نامند.
شکل 1واسط های سخت افزاری بین CPUو چند دستگاه جانبی را نشان می دهد.
گذرگاه :I/O
پردازنده برای برقراری ارتباط با جانبی ها نیاز به باس I/Oدارد (باس داده +باس آدرس +باس
کنترل) .گذرگاه CPU,I/Oرا به همه واسط ها متصل می کند.
CPUبرای ایجاد ارتباط با یک دستگاه جانبی ،ابتدا آدرس خاص آن را برای گذرگاه I/Oمی فرستد.
هر کدام از مدارهای واسط یک دیکدر آدرس دارد که تشخیص می دهد آیا آدرس موجود روی خطوط
آدرس مربوط به دستگاه خودش است یا خیر .چنانچه این آدرس را از خود دانست مسیر بینCPU
و دستگاههای مربوط به خود را فعال می کند و بقیه واسط ها غیرفعال می شوند.
فرمان:I/O
در طول مدتی که آدرس خاص روی خطوط آدرس فعال است CPUمی تواند بر روی خطوط کنترلی
کدهایی را ارسال کند که واسط ،این کدها را دریافت کرده و مسئول پاسخ دادن به آنهاست .این
کدها که باید توسط واسط اجرا شود را فرمان I/Oمی نامند.
چهار نوع فرمان I/Oوجود دارد:
.I
.II
.III
.IV
فرمان کنترلی :این فرمان یک دستگاه جانبی را فعال می کند.
فرمان وضعیت :این فرمان برای بررسی حالتهای مختلف جانبی یا واسط به کار
می رود.
فرمان خروجی داده :باعث می شود تا واسط آنچه بر روی خطوط داده در
گذرگاه I/Oقرار دارد را به ثبات خود منتقل کند.
فرمان ورود داده :باعث می شود تا واسط داده ای را که از دستگاه جانبی دریافت
نموده و در ثبات آن موجود است بر روی خطوط داده از گذرگاه I/Oقرار دهد .
گذرگاه I/Oو گذرگاه حافظه :
پردازنده عالوه بر ارتباط با I/Oنیاز به ارتباط با حافظه دارد .گذرگاه I/Oو گذرگاه حافظه به 3روش
می توانند در کنار یکدیگر قرار بگیرند :
_1استفاده از دو باس مجزا
_2یک گذرگاه نیمه مشترک با خطوط کنترلی مجزا برای گذرگاه I/Oو گذرگاه حافظه
_3یک گذرگاه مشترک برای گذرگاه I/Oو گذرگاه حافظه
_1گذرگاه مجزا :
در این روش کامپیوتر دارای یک مجموعه مجزا BUSهای داده ،آدرس و کنترل است و هر کدام برای
دسترسی به حافظه و I/Oاستفاده می شود .
در این حالت برای کار با ,I/Oپردازنده جداگانه ای ) (IOPتعبیه می شود.این پردازنده با I/Oو حافظه
ارتباط دارد.
_2گذرگاه نیمه مشترک (روش I/Oایزوله
شده(مجزا شده)
:(Isolated
هنگامی که CPUآدرس روی گذرگاه مشترک قرار می دهد با فعال نمودن I/O Readیا I/O Write
اعالم می نماید که آدرس مربوط به واسط های I/Oمی باشد و یا با فعال نمودن Memory Read
و یا Memory Writeمشخص می نماید که آدرس مربوط به مکانی از حافظه است .
_3گذرگاه مشترک)روش :(Memory-Mapped
در این روش بخشی از کل فضای آدرس به حافظه و بخش دیگر به ثبات های واسط I/Oاختصاص
دارد .در این روش دستورات جداگانه ای برای I/Oو حافظه وجود ندارد .و فقط آدرس مشخص می
کند که هدف برقراری ارتباط با واسط است یا حافظه.
انتقال داده :
.1
.2
آسنکرون ( غیر همزمان )
سنکرون ( همزمان )
انتقال داده سنکرون:
عملیات داخلی یک سیستم دیجیتالی به صورت سنکرون انجام می شود بدین معنی که دارای یک
پالس ساعت مشترک هستند که تمام عملیات را به طور همزمان انجام می دهند .
انتقال داده آسنکرون:
اما بیشتر واحد های I/Oو CPUمستقل از هم عمل می کند و لذا پالس ساعت مخصوص به خود
دارند .بنابراین انتقال داده بین این دو واحد نا همزمان خواهد بود .برای انتقال داده به طور آسنکرون
بین دو دستگاه مستقل ،باید بین آنها سیگنال های کنترلی تبادل شود تا انتقال داده و آماده
بودن داده را اعمال نمایند .مبادله این سیگنال ها به دو روشStrobeو Hand shaking
قابل انجام است.
کنترل : Strobeدر این روش تنها یک سیگنال کنترلی به نام Strobeبرای هر انتقال الزم
است.این می تواند «فعال شونده توسط مبداء» یا «فعال شونده توسط مقصد » باشد.
.aفعال شونده توسط مبدا
همانطور که در شکل یک دیده می شود مبدا ابتدا داده را روی گذرگاه داده قرار می دهد
و بعد از مدت اندکی که از پایداری داده اطمینان حاصل شد ،سیگنال Strobeرا فعال
می کند .این سیگنال به همراه داده مدتی فعال می ماند تا مقصد فرصت کافی برای غیرفعال
نموده و بعد از مدتی داده را Strobeانتقال داده داشته باشد .مبدا سیگنال
نیز از روی گذرگاه داده بر می دارد.
.bفعال شونده توسط مقصد :
در شکل 2مشاهده می شود که مقصد توسط Strobeاز مبدا درخواست داده می کند.
مبدا نیز در پاسخ داده را روی گذرگاه قرار می دهد .بعد از مدتی مقصد Strobeرا غیرفعال می کند
و در همان زمان می تواند داده را نیز به ثبات های داخلی خود منتقل کند و سپس به دنبال آن مبدا
نیز داده را از روی گذرگاه بر می دارد.
مثال:
عملیات خواندن و نوشتن بین CPUو حافظه مثال هایی از دو حالت باال هستند.
در حالت اول CPU :مبدا و حافظه مقصد است و سیگنال Strobeسیگنال writeمی باشد.
در حالت دوم CPU :مقصد و حافظه مبدا و سیگنال Strobeسیگنال Readمی باشد.
: Hand Shaking
از معایب روش Strobeاین است که در حالتی که واحد مبدا انتقال را شروع می کند روشی وجود
ندارد تا مشخص کند که آیا مقصد داده های روی باس ،داده را دریافت نموده یا خیر؟
به طور مشابه اگر مقصد انتقال را شروع کند روشی وجود ندارد که مشخص کند که آیا مبدا داده
ای را روی باس داده قرار داده است یا خیر؟
روش Hand Shakingاین عیب را مرتفع می سازد .در این روش 2سیگنال کنترل خواهیم
داشت :
یک سیگنال کنترلی به همراه داده از مبدا به مقصد ارسال می شود تا اعتبار داده اعالم نماید و
سیگنال دیگر در جهت معکوس از سوی مقصد به مبدا اعالم می نماید که داده دریافت شده
است( .شکل_ )3روش انتقال داده ها را موقع شروع کننده انتقال ،واحدها باشد را نشان می
دهد .در صورتیکه شروع کننده انتقال،واحد مقصد باشد ،خطوط Hand Shakingبه صورت
شکل _ 4می باشد.
)1(
)3(
)2(
)4(
مبدا
مقصد
انتقال داده باس و فعال
نمودن داده
معتبر
دریافت داده از باس و فعال
نمودن دریافت داده
غیرفعال نمودن داده معتبر و
غیر فعال نمودن گذرگاه داده
غیر فعال نمودن دریافت داده
و آماده سازی برای دریافت
داده بعدی
واحد مبداء
واحد مقصد
قرار دادن داده روی باس
فعال کردن خط داده معتبر
آماده دریافت داده
فعال نمودن خط آماده
برای دریافت داده
غیر فعال کردن خط داده معتبر
غیرفعال کردن خط داده معتبر
دریافت داده از گذرگاه غیر فعال
کردن خط آماده برای داده
شکل_ 4
حالت های انتقال داده ها (mode of data transfering) :
3روش انتقال اطالعات وجود دارد که در زیر آنها را بررسی می کنیم :
_1ورودی – خروجی تحت کنترل برنامه ):(Programmed I/O
در این حالت دستگاه I/Oارتباط مستقیم با حافظه ندارد و هرگونه انتقال داده از I/Oبه حافظه به
اجرای چند دستور توسط CPUنیاز دارد .در این روش CPUداده ها را از واسط می خواند و به واسط
می نویسد و واسط خود با ایجاد ارتباط با دستگاه I/Oداده را گرفته یا آن را می فرستد.
در این روش CPUدر یک حلقه برنامه قرار می گیرد تا واحد I/Oمشخص کند که آماده انتقال داده
است و در این زمان CPUبیکار است و این یکی از معایب این روش است.
واسط
گذرگاه I/O
دستگاه
I/O
شکل _7
ثبات داده
اعتبار داده
گذرگاه داده
گذرگاه آدرس
خواندن
دریافت داده
F
ثبات وضعیت
بیت پرچم
نوشتن
CPU
_2ورودی – خروجی وقفه دهنده ):(Interrupt Initiated I/O
همانطورکه در روش ورودی خروجی تحت کنترل برنامه CPUدائمآ درحال بررسی بیت پرچم
می باشد تا حضور داده اعالم شود و این سبب هدر رفتن وقت CPUگفتیم می شود.
اما در این روش (ورودی – خروجی وقفه دهنده) را الزامآ تحت نظر ندارد و به انجام کار
عادی خود یا اجرای برنامه دیگر مشغول است و واسط وقفه ای را جهت دریافت یا ارسال داده به CPU
ارسال می کند.
CPUبعد از اجرای دستورالعمل جاری خود به وقفه پاسخ می دهد و با ذخیره سازی آدرس برگشت در
پشته به سرویس روتین وقفه مربوط به انتقال I/Oمی رود
بعد از اتمام عملیات دریافت داده /اجرای عادی برنامه قبلی را ازآدرس که هنگام دریافت وقفه ذخیره
نموده بود ادامه میدهد.به دست آوردن آدرسبرنامه سرویس I/Oبه دو صورت امکان دارد :aوقفه
برداری) )vectored int.و (:bوقفه غیر برداری()nonvectored int.
:Bوقفه غیربرداری:در این حالت آدرس پرش هنگام وقوع وقفه مکان ثابتی در حافظه است و همه وقفه
ها یک روتین وقفه مشترک دارند.
:Aوقفه برداری:منبع وقفه دهنده خود اطالعات مربوط به پرش را معین می نماید که این اطالعات بردار
وقفه را تشکیل میدهد.
_3دسترسی مستقیم به حافظه : (Direct Memory Access) DMA
انتقال داده بین یک دستگاه I/Oو حافظه توسط CPUمحدود می شود.حذف CPUاز مسیر و ایجاد
امکان کنترل سیستم گذرگاه حافظه توسط دستگاه جانبی,سرعت انتقال را بهبود می بخشد.
این روش انتقال دستیابی مستقیم به حافظه ) (DMAنام دارد .از روش DMAدر مواقعی که بخواهیم
حجم زیادی از اطالعات را بین حافظه و واحدهای جانبی رد و بدل کنیم استفاده می شود.
در طول DMAواحد CPUاز باس های حافظه آدرس و کنترل استفاده نمی کند و آنها را در
اختیار کنترلی DMAانتقال قرار می دهد.
DMAآدرسی دارد که خطوط DSو RSآن را فعال می کند CPU .از طریق گذر گاه داده مقادیر
اولیه ثبات های DMAرا معین می کند و سپس با یک دستور کنترلی شروع عمل انتقال را از
DMAدرخواست می نماید.این دستور کنترلی وارد ثبات کنترل DMAمیگردد.
شکل_ 1جایگاه DMAرا در سیستم کامپیوتر نشان می دهد:
وقتی دستگاه های جانبی تقاضایی به ی DMAمی فرستد ( در خواست DMA,)DMAبا فعال
از CPUدر خواست گذرگاه می کند CPU .پاسخ خود را توسط خط BGاعالم می نماید.
نمودن BR
با این پاسخ DMAمیفهمد که گذرگاه آزاد است و مقدار کنونی ثبات آدرس خود را بر روی گذرگاه
آدرس قرار می دهد.
)خط موافقت ( DMAوقتی دستگاه جانبی تایید در خواست خود را دریافت کرد کلمه ای را روی
گذرگاه داده قرار می دهد و یا از گذرگاه دریافت می کند و داده مستقیما ولی تحت کنترل DMA
بین دستگاه جانبی و حافظه جا به جا می شود و DRAMآدرس حافظه و حالت خطوط WRو
RDرا تحت کنترل خود قرار می دهد.
BR:BUS Request
BC:BUS Grandted
تکلیف :
انتقال داده با روش DMAرا کامال شرح دهید .
جواب :
طبق شکل صفحه قبل :
وقتی که وسیله جانبی درخواست DMAرا ارسال می کند کنترل کننده DMAخط BRرا فعال
می نماید,و به این طریق به CPUاطالع می دهد که گذرگاه ها را رها کند.
CPUبا فعال کردن خط BGبه DMAاطالع می دهد که گذرگاههای آن غیر فعالند پس DMA
مقدار فعلی ثبات آدرس خود را روی گذرگاه آدرس قرار داده ،سیگنال RDیا WRدر کنترل کننده
DMAدو جهته است جهت انتقال بستگی به وضعیت خط BGدارد .وقتی که BG=0باشد
خطوط RDو WRبرای DMAورودی بوده و این امکان را برای CPUفراهم می کند که با ثباتهای
DMAارتباط برقرار کند .وقتی که BG=1باشد RDو WRخطوط خروجی از کنترل کننده DMA
به RAMبوده و عمل خواندن و نوشتن را مشخص می کنند.
وقتی که وسیله جانبی یک سیگنال موافقت را از DMAدریافت می کند کلمه ای را در گذرگاه
داده قرار می دهد (برای نوشتن) یا کلمه ای را از گذرگاه داده دریافت می کند (برای خواندن)
پس DMAعمل خواندن و نوشتن را کنترل می کند و آدرس حافظه را فراهم می کند.
واحد جانبی سپس با حافظه از طریق گذرگاه داده برای انتقال مستقیم بین دو واحد ارتباط برقرار
می کند و این مدت CPUموقتاً غیرفعال است .برای هر کلمه ای که انتقال یابد DMAثبات آدرس
را افزایش داده و ثبات شمارش کلمه را کاهش می دهد .اگر شمارش کلمه به صفر نرسد DMA
خط درخواست واسطه از وسیله جانبی را چک می کند برای یک وسیله سریع ،خط به محض خاتمه
انتقال قبلی فعال خواهد شد سپس دومین انتقال آغاز می شود و روند تا انتقال کامل بالک ممکن
ادامه می یابد اگر سرعت وسیله جانبی کندتر باشد خط درخواست DMAاست قدری
دیرتر برسد.
در اینصورت DMAخط درخواست گذرگاه را فعال می کند تا CPUبتواند به اجرای برنامه خود ادامه
دهد.
وقتی که دستگاه جانبی درخواست انتقال کرد DMAمجدداً گذرگاه ها را درخواست می کند ,اگر ثبات
شمارش به صفر برسد DMAاز ارسال بیشتر انتقال خودداری می کند و درخواست گذرگاه خود را
حذف می نماید و CPUرا از اتمام کار بوسیله وقفه مطلع می سازد وقتی که CPUبه وقفه پاسخ
دهد ،محتوای ثبات شمارش کلمه را می خواند مقدار صفر در این ثبات به معنی انتقال موفقیت آمیز
کلیه کلمات است.
CPUدر هر لحظه قادر به خواندن این ثبات می باشد و کلماتی را که قبال ً منتقل منتقل شده اند
وارسی میکند.
کنترل ریز برنامه ریزی شده ):(MICRO – PROGRAMMED CONTROL
وظیفه واحد کنترل در یک کامپیوتر تولید ریز عملیات است و این امر عمدتا به 2روش انجام می
شود .
_1کنترل سیم بندی شده )(HARD WIRRED CONTROL
_2کنترل ریز برنامه ریزی شده ((MICRO – PROGRAMMED CONTROL
حال در زیر روش کنترل ریز برنامه ریزی شده مورد بررسی قرار می گیرد.
* کلمه کنترلی :متغیرهای کنترلی که توسط واحد کنترل تولید می شود ،دنباله ای از صفر و یک
ها هستند که به آنها کلمه کنترلی می گویند .
* ریز دستور :هر کلمه در یک حافظه کنترلی شامل یک ریز دستور است .
* ریز عمل :هر ریز دستور یک یا چند ریز عمل را برای سیستم مشخص می کند .
* ریز برنامه :دنباله ای از دستورات ریز برنامه را تشکیل می دهد.
* یک ریز برنامه از یک حافظه جانبی به یک حافظه کنترلی بار می شود این حافظه کنترلی قابل
نوشتن است .
* حافظه کنترلی با حافظه اصلی سیستم متفاوت است هر دستور در حافظه اصلی موجب
اجرای رشته ای از ریز دستورات دز حافظه کنترلی می گردد ،ریز عملیات مربوط به واکشی
و ترجمه و اجرای دستورات را تولید می کند .
شکل – 1ساختار کلی یک واحد کنترل ریز برنامه ریزی شده را نشان داده است
ثبات آدرس کنترل :(CAR=CONTROL ADDRESS REGIDTER):آدرس ریز دستور را مشخص می کند .
ثبات ) :(CDR=CONTROL DATA REGISTERریز دستوری که از حافظه کنترل خوانده می شود را
داده کنترل:
در خود ذخیره می کند .
CDRریز دستور فعلی را در خود ذخیره می کند در حالیکه همزمان ،آدرس بعدی ریز
دستور محاسبه می شود .
مولد آدرس بعدی : SEQUENCERآدرس ریز دستور بعدی در حافظه کنترلی را تولید می کند.
شکل – 2واحد کنترل MICRO PROGRAMMEDیک کامپیوتر را نشان می دهد .
حافظه کنترلی ROMبه صورت 64کلمه 6بیتی است .رجیستر CARبا دو MUXکنترل می شود.
برای هر آدرس دهی حافظه کنترلی 64کلمه ای نیاز به 6بیت آدرس ،برای انتخاب 8ورودی
) MUX(2نیاز به 3بیت ،برای انتخاب آدرس CARتوسط ) MUX(1نیاز به 1بیت و با داشتن یک
کلمه کنترلی 16بیتی جمعا ریز دستور واحد ریز برنامه ریزی شده 26عدد خواهد شد .
بیت های وضعیت از واحد پردازش به ورودی های ) MUX(2اعمال می شوند .اگر ورودی های
انتخاب شده 1باشد در آن صورت خط LOADفعال و آدرس 6بیتی از خروجی ) MUX(1به CAR
بار می شود .اگر خط انتخاب ورودی " "0باشد ورودی INCREMENTو رجیستر CARفعال و به
آن 1واحد اضافه می شود پس وقتی خطوط انتخاب ) MUX(2معادل 000به CARیک واحد
اضافه می شود وقت یکه خطوط انتخاب ) MUX(2معادل 001شود خط LOADثبات CAR
فعال و آدرس جدید در آن بار می شود که این حالت را پرش شرطی می نامند .
ورودی CARبا بیت 17ریز دستورالعمل انتخاب می گردد.اگر بیت 17برابر " "0باشد فعال می باشد
آدرس خروجی در CARبار می شود .
بخشی از واحد8مثال :در شکل
کنترل ریز برنامه پذیر می باشد
مشخص کنید.
** شکل Aدر اسالید ** 111
شکل _2
اگر A=36,SELECT=(011),CAR=20و پردازنده دستور R1- R2را اجرا کرده باشد R1- R2
( بدون عالمت فرض می شوند) و تفریق به روش مکمل 2انجام می شود.مشخص کنید کدام
گزاره صحیح است.
21
36 else CAR
1. IF (R1≥ R2 ) then CAR
36
21 else CAR
2. IF (R1≤ R2 ) then CAR
شکل _2
21
36 else CAR
1. IF (R1≥ R2 ) then CAR
حل :گزینه 1درست است .
در تفریق با روش مکمل ، 2اگر R1 ≥ R2باشد رقم نقلی C=1است و اگر R1 < R2باشد رقم
نقلی C=0است .در مورد فوق خط SELECT=011است و خروجی ,Muxبه صورتCرقم نقلی
زیر می باشد.
طبق مدار فوق اگر C=1باشد یا به عبارتی اگر R1≥ R2باشد خط Loadفعال و CAR=36
می شود .اگر C=0شود یا به عبارتی R1 < R2گردد خط INCفعال شده و به ثبات CAR
یک واحد به آن اضافه شده یا CAR=21می شود .یا به عبارتی :
If (C=1) then CAR = 36 else CAR = 21
شکل _A
مسئله :سیگنال زمان بندی ارتباط بین کامپیوتر و چاپگر را رسم کنید و شرح دهید .
DAV= DATA AVNILABLE
RDY = DATA READY
حل :شکل را حل کرده ولی شرح را خودمان باید بنویسیم :
RDY
DATA
DAV
فصل هفتم :سازمان حافظه
سلسله مراتب حافظه
در یک کامپیوتر انواع مختلف حافظه وجود دارد که از لحاظ سرعت،ظرفیت و هزینه
تولید با یکدیگر متفاوتند .این حافظه ها به صورت سلسله مراتبی هستند.هر چه
حافظه به Cpuنزدیکتر باشد ( )high levelسرعت و هزینه تولید آن بیشتر است و
ظرفیت کمتر .نزدیکترین حافظه به پردازنده حافظه نهان ( )cachاست که زمان
دسترسی آن تقریبا با زمان پریود کالک پردازنده ( )click cycle timeیکسان است.
در کش اطالعاتی که بیشتر مورد استفاده پردازنده هستند ذخیره می شود .هر بیت
کش در یک فلیپ ذخیره می شود.سطح بعدی حافظه ،حافظه اصلی است.وقتی
برنامه ای قرار است اجرا شود از حافظه جانبی به حافظه اصلی منتقل می
شود.حافظه جانبی شامل همه اطالعاتی است که در یک سیستم ذخیره شده
است.شکل 1سلسله مراتب حافظه را نشان می دهد.
درواقع اصل محلی بودن مراجعات ( )Locality of referencesاست که وجود
سلسله مراتب حافظه را توجیه می کند.به این معنی که برنامه ها تمایل دارند در
هر زمان فقط به قسمت کوچکی از فضای آدرسشان دسترسی یابند.دو نوع
لوکالیتی وجود دارد:
_زمانی ( : )temporalیعنی اگر به یک آیتم رجوع شد؛احتماال مجددآ به آن رجوع
خواهد شد(مثل حلقه ها)
_مکانی( : )spatialاگر به یک آیتم رجوع شد،به آیتم های مجاورش نیز رجوع
خواهد شد(مثل آرایه ها یا دستورات پشت سر هم برنامه)
حافظه اصلی
معموآل حافظه اصلی RAMاست ولی می تواند شامل ROMنیز باشد.
RAMحافظه ای است با دستیابی تصادفی یعنی دسترسی به همه مکان های
آن با یک زمان ثابت انجام می شود .این حافظه خواندنی نوشتنی است()RWM
و فرار است یعنی اطالعات را تا زمانی حفظ می کند که توان الکتریکی به آن
اعمال می شود RAM.را با دو شیوه می توان ساخت:استاتیک و دینامیک.در
RAMاستاتیک ( )SRAMبیت ها در فلیپ فالپ ها ذخیره می شوند و سرعت و
هزینه شان از RAMدینامیک()DRAMبیشتر است.در DRAMبیت ها در خازن ها
شارژ می شوند و ازآنجایی که خازن به مرور زمان دشارژ می شود این حافظه
متناوبآ باید تازه نویسی( )refreshشود.
DRAMدارای توان مصرفی کمتری است و ظرفیت آن از SRAMبیشتر است.
ROMحافظه ای است فقط با قابلیت خواندن و اطالعات آن دائمی
هستند.دستیابی به این حافظه نیز همانند RAMتصادفی است.
تراشه های RAMو ROM
یک تراشه RAMباید دارای خطوط دو طرفه دیتا و یک طرفه آدرس و همچنین
خطوط کنترلی باشد.
شکل 2یک تراشه RAM 128˟8را نشان میدهد:
برای آنکه بتوان از این تراشه خواند یا نوشت باید )chip select( CS=1باشد.
در این صورت اگر RD=1یعنی خواندن و اگر WR=1یعنی نوشتن .اگر
RD=WR=0یا اگر CS=0آنگاه خطوط دیتا همگی در حالت باز( high
)impedanceخواهند بود و هیچ سیگنالی را عبور نمی دهند.البته خطوط RDو
WRمی توانند فقط یک خط باشند ( )RD/𝑊Rاگر این خط یک بود یعنی خواندن و
اگر صفر بود یعنی نوشتن.
حال فرض کنید می خواهیم با کمک تراشه شکل 2یک حافظه به اندازه 512˟8
بسازیم.برای این منظور به 4تراشه نیازمندیم و کل خطوط آدرس پردازنده باید
حداقل 9خط ( )A8…A1A0باد.به تراشه 7خط کم ارزش آدرس متصل می کنیم
( )A6…A0و از A8A7برای انتخاب تراشه ها استفاده می کنیم.شکل 3نحوه
ساخت حافظه 512˟8با حافظه های 128˟8را نشان می دهد:
با توجه به شکل RAM1 ، 3وقتی فعال می شود که ، A8A7=0 0پس آدرس های
0تا 127به ترتیب در RAM1هستند به همین ترتیب:
م قادی ر ده ده ي أدرس ه ا
A0
A1
A2
A3
A4
0 -1 2 7
*
*
*
*
*
1 2 8 -2 5 5
*
*
*
*
*
*
2 5 6 -3 8 2
*
*
*
*
*
*
0
3 8 4 -5 1 1
*
*
*
*
*
*
1
تراش ه
A5
A6
A7
A8
*
0
0
1
0
RAM 2
1
RAM 3
1
RAM 4
به ساخت حافظه بزرگ با تراشه های کوچک
اصطالحا برگ برگ سازی ( )interleavingگویند;
و اگر از بیت های با ارزش آدرس برای انتخاب
تراشه ها استفاده شود (شکل )3به آن
high order interleavingگویند.می توان
برا انتخاب تراشه ها از سایر خطوط آدرس
نیز استفاده کرد مثال می توان از A1A0برای
این منظور استفاده کرد که به آن
Liw order interleavingگویند.
RAM 1
با توجه به شکل RAM ،4وقتی فعال است که A1A0=0 0یعنی همه آدرس های
مضرب 3در این تراشه هستند و به ترتیب:
با توجه به اینکه پردازنده معموآل آدرس های متوالی را مورد دسترسی قرار می
دهد،در روش Low orderمی توان هزمان به چندین آدرس دسترسی پیدا
کرد.مثآل در شکل 5اگر پردازنده آدرس صفر را تولید کند همه تراشه ها همزمان
خانه صفرشان مورد دسترسی قرار می گیرد و می توان با وجود شرایطی کلمات
موجود در آدرس های 0و 1و 2و 3را که پردازنده می خواهد به طور موازی
خواند.ولی در روش high orderاین امکان وجود ندارد زیرا آدرس های متوالی
همگی در یک تراشه هستند.البته گفته می شود تحمل پذیری روش high
orderدر مقابل خرابی بیشتر است زیرا اگر یکی از تراشه ها آسیب
ببیند.تعدادی برنامه (و نه همه برنامه ها) از بین می روند.
به طور کلی اینکه براساس کدام خطوط آدرس برگ برگ سازی صورت
گیرد.بستگی دارد به آدرس هایی که پردازنده متوالیآ تولیدمی کند.
مثال :می خواهیم یک ماتریس 8˟8را بصورت سطری در حافظه ذخیره کنیم .اگر
حافظه شامل 8تا تراشه 8kبایتی باشد،براساس کدام خطوط آدرس برگ برگ
سازی کنیم تا سرعت دسترسی به عناصر ستون دوم افزایش یابد.
پاسخ:کل فضای آدرس دهی 8˟8k=64kبایت است،پس نیاز به 16خط آدرس
( )A15…A0می باشد باید کاری کنیم که عناصر ستون دوم در تراشه های مختلف
و در یک مکان از این تراشه ها توزیع شود.اگر عنصر اول در آدرس صفر ذخیره
شود ،آدرس عناصر ستون دوم عبارت است از 1:و 9و 17و 25و ....واضح است
که در این آدرس ها بیت های A5A4A3متغیر است و باید بر اساس این بیت ها
برگ برگ سازی کنیم تا در این صورت این آدرس ها همگی در آدرس یک (دومین
خانه) از 8تراشه مختلف توزیع شوند:
الزم به ذکر است که در این مثال با توجه به برگ برگ سازی انجام شده
دسترسی به عناصر هر ستونی با سرعت زیاد صورت می گیرد.
توجه:معموآل برای آنکه سخت افزار کاهش یابد،تراشه ها دارای دو خط CS
هستند.
مثال:با توجه به تراشه های RAM 128˟8و ROM 512˟8در شکل ( 6الزم به ذکر
است که سلول های ROMاز RAMفضای کمتری اشغال می کنند) یک
سیستم حافظه به روش high orderبسازید که شامل RAM 512˟8و ROM
512˟8باشد:
پاسخ:خطوط آدرس A9…A0می باشند( 10خط ادرس نیاز است چون 1024مکان
باید آدرس داده شود)می خواهیم آدرس 0تا 511برای RAMو 512تا 1023برای
ROMباشد پس اگر A9=0یعنی RAMباید فعال شود و اگر A9=1باید ROM
فعال شود.همچنین A8A7مشخص می کند کدام یک ازتراشه های RAMباید
فعال شوند.شکل 7پیکربندی را نشان می دهد.
با توجه به شكل 7هرگاه 𝐴9 = 0یكي از RAMها فعال است واگر 𝐴9 = 1به شرطي كه پردازنده درخواست
خواندن ( )RD=1داده باشد RAMفعال است.
4Kبسازيم .تعداد تراشه هاي
مثال :باتراشه هاي RAM1Kمیخواهیم حافظه
مورد نیاز و اندازه ديكدر را مشخص كنید.
پس dec2×4نیاز است ولي تعداد تراشه هاي الزم 4×2=8است
پاسخ:
چون ديتاي تراشه ها 4بیتي است ولي نیاز به ديتا 8بیتي داريم:
نكته :براي برگ برگسازي مي توان از مالتي پلكسر نیز استفاده كرد به اين صورت
كه ديتاي تراشه ها را از طريق مالتي پلكسر انتخاب كنیم (به تست 11
مراجعه كنید).
حافظه كش
حافظه اي است نسبتاً سريع و كوچك بین حافظه اصلي و پردازنده .سرعت اين
حافظه 5تا 10برابر حافظه اصلي است و اطالعاتي كه به آنها مراجعه زياد است
در اين حافظه نگهداري مي شوند .در واقع پردازنده هر درخواستي كه مي دهد
براي حافظه اصلي است ولي اين درخواست ها به كش نیز اعمال مي شود و اگر
ديتاي مورد نظردر كش باشد( )hitبا سرعت زياد خوانده يا نوشته میشود.ولي اگر
در كش نباشد( ، )missاين ديتا و احتماال ً اطرافش به كش منتقل مي شوند و
سپس CPUاين ديتا را مي خواند يا مي نويسد .البته CPUممكن است منتظر
نوشته شدن ديتا واطراف آن به كش نباشد و مستقیم ديتا را از حافظه اصلي
دريافت كند.
در شكل 9اگر پردازنده آدرس Aيا Dرا تولید ،برخورد ( )hitرخ دهد ولي اگر آدرس
كار كند نقصان ( )missاست.
تعداد𝑡𝑖ℎ
=ℎ
تعداد كل مراجعات
اگر missاتفاق بیافتد ،بالك مورد نظر بايد از حافظه اصلي به كش منتقل شودو
ديتاي مورد نظر به CPUداده شود كه زمان اين عملیات را miss penaltyگويند.
اگرفرض كنیم زمان دسترسي به حافظه اصلي 𝑚𝑡 وزمان دسترسي 𝑐𝑡 و نرخ
برخورد hاست آنگاه زمان متوسط دسترسي ) 𝑒𝑣𝑎𝑡( برابر است با
𝑡ave = ht c + (1 − h)t m
با اين فرض كه حافظه اصلي مستقیماً مي تواند به CPUديتا بدهد.ولي اگر
حافظه اصلي مستقیم به CPUديتا ندهد يعني
آنگاه زمان متوسط دسترسي برابر است با :
tave=htc+(1-h)(tm+tc)=tc+(1-h)tm
درواقع اگرداده داخل كش باشد ( )hزمان 𝑐𝑡 را تحمل مي كنیم ولي اگرداده
داخل كش نباشد ( )1-hهم 𝑚𝑡 وهم 𝑐𝑡 را تحمل مي كنیم.
فرمول فوق را مي توان براي چندين Levelحافظه گسترش داد:
tave=t1+(1-h)t2+(1-h1)(1-h2)t3
اگرفرض كنیم Mem1كش سطح 1و Mem2و Mem3حافظه اصلي است ،مي
توان فرمول 3را به شكل زير نوشت:
فرمول :4
tave=L1 hit time + L1 miss rate ×L2 hit time + L2 miss rate × L2 miss penalty
اگر CPUمستقیماً به حافظه ها نیز متصل باشد مي توان فرمول 3را به شكل زير
نوشت:
فرمول :5
tave=h1t1+(1-h)h2t2+(1-h1)(1-h2)t3
نگاشت()Mapping
هنگام بروز missبالك مورد نظر از حافظه اصلي به كش منتقل مي شود بهه ايهن
عمل نگاشت گويند .منظور از بالك تعدادي كلمهه مجهاور در حافظهه اصهلي اسهت.
نحوه انتقال بالك از حافظه اصلي به كش 3روش عمده دارد:
-1نگاشت مستقیم direct
-2نگاشت انجمني(Fully)associative
-3نگاشت شركت پذير مجموعه اي Set associatintive
-1نگاشت مستقيم
در اين روش هر بالك از حافظه اصلي به يك مكان مشخص از كش منتقل مي
شود .در واقع اين روش از فرمول زير براي يافتن آدرس بالك دركش استفاده مي
كند:
(تعداد بالك هاي كش) ( modآدرس بالك حافظه اصلي)= آدرس بالك كش
مثال :فرض كنید حافظه اصلي داراي 64كلمه يك بايتي است و حافظه كش
داراي 16كلمه است .هر بالك را يك كلمه فرض مي كنیم .به اين ترتیب حافظه
اصلي داراي 64بالك و كش شامل 16بالك است وبالك با آدرس از حافظه اصلي
به بالك ( )imod16از كش منتقل میشود:
در اين مثال آدرسي كه پردازنده تولید مي كند 6بیتي است كه 4بیت سمت
راست آن ( )indexآدرس كش را مشخص مي كند(مد 16مي شود 4بیت سمت
راست).
و 2بیت سمت چپ آدرس ( )tagمشخص میكند آيا ديتاي مورد نظردركش هست
يا خیر.در واقع به ازاي هر پالك در كش tagنیز ذخیره مي شود و هر آدرسي كه
پردازنده مي دهدtag ،اين ادرس با tagبالكي كه در كش توسط فیلد
indexمشخص شده ،مقايسه مي شود .اگر مساوي بود يعني Hitو در غیر اين
صورت يعني miss.
البته هر بالك كش نیاز به يك بیت Validنیز دارد كه مشخص مي كند ديتاي آن
بالك معتبر است يا خیر چون ممكن است هیچ ديتايي از حافظه اصلي به آن بالك
منتقل نشده باشد به شكل زير توجه كنید.
با توجه به شكل فوق ،آدرسي كه پردازنده تولید كرده 17است وچون
17mod16=1پس بايد در آدرس يك از كش بررسي كنیم كه hitيا missوچون در
آدرس يك tag=01,V=1 ،پس يعني . hit
اگر به ازاي يك بالك از كش V=0يعني آن بالك معتبر نیست.
در اين مثال كل بیت هاي موجود دركش 16×8bitديتا بعالوه tag16×2bitبعالوه
16×1bitبیت validيعني جمعاً 16×8+16×2+16×1=176bitاست.
مثال :حافظه اصلي و كش را مشابه مثال قبل در نظر بگیريد و اين بار هر بالك را
شامل 4كلمه از حافظه اصلي فرض كنید.پس حافظه داراي 16بالك و كش شامل
4بالك خواهد بودو بالك از حافظه اصلي به بالك ( )i mod4از كش منتقل مي
شود.
در شكل فوق فرض كنید ،پردازنده آدرس 17را تولید كند( )010001دو بیت وسط
اينادرس مشخص كننده بالك كش( )b0است ودو بیت سمت راست مشخص
كننده كلمه در بالك است .حال اگر Vدر بالك برابر يك باشد و tagآن با tag
آدرس تولید شده برابر باشد يعني hitكه در شكل فوق hitرخ داده است و كلمه
با آدرس 1ازكش كلمه مورد نظر است .تعداد كل بیت هاي كش در شكل فوق
برابر است با:
140bit =32× 8bit +4× 2bit+4× 1bit
پس هرچه اندازه بالك بزرگتر باشد ،تعداد بیت هاي كش كاهش مي يابد.
توجه :در برخي منابع مثل موريس مانو ،به ازاي هر كلمه كش بیت tag ,V,
در
كه
است
شده
ذخیره
تست ها چنین نبوده است .ما به ازاي هربالك ،بیت tag ,V,در نظر مي
گیريم.
نتیجه :اگرحافظه اصلي شامل 2 mكلمه dبیتي باشد و حافظه شامل 2 c
كلمه و اندازه هر بالك 2 Wكلمه باشد آنگاه فرمت آدرس در نكاشت
مستقیم عبارت است از:
تعداد بالكهاي موجود در كش است پس فیلد blockبرابر بیت است وچون
تعداد كلمات در هر بالك است اندازه فیلد wordبرابر wبیت است.در
برخي سیستم ها فیلد چهارمي به نام byte offsetسمت راست فرمت
آدرس وجود دارد كه مشخص كننده بايد در wordاست .مثال ً اگر هر كلمه
شامل 4بايت باشد و سیستم بتواند به بايد آدرس دهد 2 ،بیت براي
byteoffsetبايد در نظر گرفت با توجه به مشخصات گفته شده تعداد كل
بیت هاي موجود در كش عبارت است از :
مثال :يك كش با نگاشت مستقیم با 64كیلو بايت ديتا ،با اين فرض كه هر بالك
يك كلمه و هر كلمه 4بايت باشد كال ً چند بیت است؟ فرض كنید آدرس
پردازنده 32بیتي است.
است و فیلد tagبرابر
پاسخ :تعداد كلمات كش (تعداد بالك كش) برابر
32-(14+2)=16بیت است پس تعداد كل بیت هاي كش:
64kByte+16k×16bit+16K×1bit=784bit
مثال :يك كش مستقیم داراي 64بالك 16بايتي است آدرس بايت 1200به
كدام بالك از كش نگاشته مي شود؟
از حافظه اصلي است كه به بالك
پاسخ :آدرس 1200در بالك شماره
شماره 75mod64=11از كش نگاشته مي شود.
مثال :یک کش مستقیم شامل 8پالک 4کلمه ای است و پردازنده ازآدرس 0
تا 63را 10بار تولید کرده است .کش درابتدا خالی است نرخ برخورد
رامحاسبه کنید.
پاسخ :ازآدرس 0تا 31کش را پر می کند وازآدرس 32تا 63موجب خروج
دیتاهای 0تا 21از کش می شوند .به ازای هر 4آدرس اولی missو 3تای
بعدی hitاست .مثال اولین آدرس یعنی صفر missاست ولی 1و2وhim 3
هستند چون هنگام missمالک شامل کلمات 0و1و2و 3سه کش منتقل
می شود .پس h= =%75
مثال :درمثال قبل کش شامل 4پالک 8کلمه ای است نرخ برخورد؟
7
8
پاسخ :ازهر 8آدرس اولی missو 7تای بعدی hitاست h= = 87/5%
مثال :درمقابل قبل کش شامل 8پالک کلمه ای است .نرخ برخورد؟
پاسخ :بار اول 8تا missوجود دارد ولی بار دوم تا دهم missنداریم پس:
10×64−8
=79/80
10×64
=h
نکته :هر چه اندازه بزرگتر باشد(تا یک حدی) .از لوکالیتی مکانی بهتر بهره می
برد ونرخ برخورد افزایش می یابد ولی اگر بالک خیلی بزرگ شودآنگاه تعداد بالک
های کش کاهش می یابد وممکن است کلمات یک بالک همگی استفاده نشوند
وبالک ازکش توسط بالک دیگری خارج شود یعنی نرخ برخورد کاهش یابد .عیب
دیگر بالک های بزرگ افزایش هزینه زمانی missاست چون هنگام missباید یک
بالک از حافظه به کش منتقل شود که miss penaltvافزایش می یابد.
-2نگاشت ( Fully associativeانجمنی)
هنگام ،missبالک ازحافظه اصلی به کش منتقل می شود ودرهر بالک ازکش
ممکن است نگاشته شود یعنی جای مشخصی برای بالک وجود ندارد در واقع
هرآدرسی که پردازنده تولید می کند ،به طور موازی tagاین آدرس با tagهمه
بالک های کش مقایسه می شود ومشخص می شود hitیا missدر صورت بروز
.missبالک از حافظه به کش منتقل میشود ودر اولین بالک خالی کش (بالکی
که )v=0نگاشته می شود .اگر بالک خالی درکش وجود نداشت طبق الگوریتم
های جابجایی مثل )least recently used( lruیک مکان برای بالک مشخص
می شود.
مثال :حافظه اصلی 64×8وهر بالک یک بایت وکش شامل 16بالک رافرض کنید.
هرآدرسی که پردازنده تولید می کند 6 ،بیتی است که درصورت بروز ،missبالک
مورد نظر حافظه به کش منتقل می شود ودریک بالک کش به همراه tagکه در
این مثال 6بیتی است ذخیره می شود .در شکل فوق سه آدرس 20و10و9
نشان داده شده است که درکش ذخیره شده اند .درواقع تعداد بیت های کل
کش برابر ( 16× )8+6+1است.
مثال :حافظه اصلی 64×8وهر بالک 4بایت وکش شامل 4بالک رافرض کنید.
هر آدرس که پردازنده می دهد 6بیتی است که فرمت آن
tag word
است
فیلد tagکه 2بیتی است همزمان با 4تا tagموجود درکش مقایسه می شود
وباهرکدام مساوی بود یعنی hitفرض کنید پردازنده آدرس 5را تولید می کند
وکش خالی باشد دراین صورت بالک شامل این آدرس به اولین بالک کش نگاشته
می شود یعنی کلمات با آدرس 4و5و6و 7به کش منتقل می شوند و tagآنها که
)0001( 2است نیز ذخیره می شود( درشکل نشان داده شده است)
بنابراین دراین روش نگاشت به ازای هربالک کش یک مقایسه کننده الزم است
که بتوان مقایسه را موازی انجام داد درواقع حافظه این روش بسیار گران است
وفقط برای کش کوچک مناسب است.
-3نگاشت ( Set-Associativeانجمن مجموعه ای)
این روش درواقع یک روش میانی دو روش قبلی است .کش به تعدادی setتقسیم می شود وهر set
شامل تعدادی بالک از حافظه اصلی است درنگاشت مستقیم دیدیم که دو بالک با ایندکس مساوی باهم
درکش حضور نداشتند .مثال کشی که 4بالک دارد ،بالک های صفر وچهار باهم نمی توانند درکش
حضور داشته باشند ،نگاشت انجمنی مجموعه ای این مشکل را تاحدی برطرف می کند .دو روش k-
. way set associativeهر setکش می تواند شامل kبالک از حافظه اصلی باشد .این kبالک
همگی ایندکس یکسان دارند.
مثال :حافظه اصلی 64×8وکش شامل 4مجموعه ( )setونگاشت 2-wayوهر بالک حافظه اصلی
شامل 4کلمه (بایت) رافرض کنید:
هر بالک حافظه اصلی شامل 4کلمه (بایت) رافرض کنید:
هربالک کش یک فیلد tagوفیلد ( vدر شکل نشان داده نشده) دارد یعنی هر 2 set
تا tagو 2تا vاست .هرآدرسی که پردازنده می دهد 6بیتی است که فرمت آن به
صورت زیر است.
فیلد setمشخص کننده مجموعه درکش است وفیلد tagبه طورهمزمان باهر دوtag
موجود درآن مجموعه مقایسه می شود وباهرکدام که مساوی بود ،بالک داخل
مجموعه مشخص می شود که باتوجه به فیلد wordمشخص می شود کدام
کلمه در آن بالک ،مثال اگر آدرس تولیدی پردازنده 6=000110باشد ،باید در set1
جستجو کرد و tag=00با هر دو tagمقایسه می شود ودرصورت ،hitفیلد word
که 10است مشخص کننده کلمه مورد نظر در بالک است.
نتیجه :تعداد کلمات حافظه اصلی ، 2mتعداد کلمات هر بالک ،2wکش درمجموع می
تواند 2cکلمه از حافظه اصلی رادرخود جای دهد ونگاشت k-wayبافرضk=2t
رادرنظر بگیرید آنگاه:
= =2c-wتعداد الکی که درکش جا می شود
= =2c-w-tتعداد setموجود درکش
فرمت آدرس:
توجه :ممکن است فیلد byte offsetنیز سمت راست فرمت آدرس وجود داشته
باشد.
سیاست های نوشتن
فرض کنید پردازنده درخواست writeداده است .اگر نوشتن فقط در کش صورت گیرد و حافظه اصلی
تغییر نکند آن گاه نسخه ای که در حافظه اصلی است با نسخه کش همسان ( )consistentنیست.
یک راه ساده برای همسان کردن حافظه اصلی و کش این است که با هر عمل writeدیتا هم به کش و
هم به حافظه اصلی نوشته شود.
این روش را ( write throughکامل نویسی) می نامیم.
فرض کنید پردازنده درخواست writeداده است و missاتفاق افتاده ،اگر هر بالک فقط یک کلمه
باشد ،الزم نیست بالک از حافظه اصلی به کش منتقل شود و سپس پردازنده در کش بنویسد بلکه
پردازنده می تواند بالک را از حافظه اصلی به کش منتقل نکند بلکه در مکانی از کش که index
مشخص می کند هم دیتا و هم tagرا بنویسد و هم چنین با توجه به آدرس تولید شده ،دیتا را در
حافظه اصلی نیز بنویسد .ولی اگر بالک بیش از یک کلمه باشد حتما موقع ، missبالک باید از
حافظه اصلی به کش منتقل شود.
به هر حال روش کامل نویسی ،دارای سرعت کمی است و ترافیک باس آن زیاد است.
مثال:
فرض کنید %13دستورات یک برنامه storeهستند .اگر CPIبدون missبرابر 2/1
باشد و هر 10 ، writeسیکل طول بکشد آن گاه CPIنهایی
2/1 +10× 13% =5/2می شود یعنی کارایی را بیش از 2برابر کاهش می دهد.
یک راه حل مشکل کامل نویسی در واقع کاهش زمان توقف CPUبه خاطر
( ، ) write stallاستفاده از بافر نوشتن ( write
نوشتن در حافظه اصلی
) bufferاست.
پس از آن که دیتا در کش نوشته شد در بافر نوشتن ،نوشته می شود و منتظر
می ماند تا به حافظه اصلی نوشته شود و در این مدت انتظار پردازنده می تواند
به اجرای دستورات عادی خود ادامه دهد.
روش دیگر نوشتن ( write backپس نویسی ) است .در این سیاست فقط دیتا
در کش نوشته می شود و فقط زمانی به حافظه اصلی نیز منتقل می شود که
بخواهیم بالک مربوطه را از کش خارج کنیم .پس در این سیاست هر بالک کش
نیاز به یک بیت به نام modifyیا dirtyدارد که مشخص می کند ،آیا بالکی که
می خواهیم از کش خارج کنیم ،از زمان حضورش در کش تغییر یافته یا خیر .پیاده
سازی پس نویسی از کامل نویسی دشوارتر است چون باید مراقب درخواست
های DMAنیز باشد زیرا DMAبدون توجه به کش ،حافظه اصلی و I/Oرا به
هم ارتباط می دهد در صورتی که حافظه اصلی دارای اطالعاتی قدیمی و به
صورت روز نشده است.
نکته :پس نویسی از کاملنویسی توان کمتری مصرف می کند و پهنای باند کمتری مصرف
می کند.
نکته :ازآن جایی که هنگام نوشتن الزم نیست دیتا در کش باشد دو گزینه هنگام write
missوجود دارد:
: write allocate )1یعنی اگردرخواست writeموجب missشود ،بالگ به کش منتقل
می شود.
: no write allocate)2یعنی اگردرخواست writeموجب missشود ،بالگ از حافظه به
کش منتقل نمی شود و فقط در حافظه اصلی ،نوشتن انجام می شود .این روش در
سیاست کامل نویسی مناسب است.
مثال:
فرض کنید کش خالی Fully associativeبا توجه به 5آدرس داده شده به جدول زیر دقت
کنید.
no write allocate
write allocate
درخواست
Miss
Miss
]Write m[100
Miss
hit
]Write m[100
Miss
Miss
]read m[200
hit
hit
]Write m[200
Miss
hit
]Write m[100
:نکاتی از کارایی
صرف اجرایCPU کالک سایکلهایی که:به دو بخش تقسیم می شودCPU زمان
. برای سیستم حافظه منتظر استCPU برنامه می کند و کالک سایکلهایی که
هستند بخشی از زمان اجرایhit فرض می کنیم هزینه دسترسی به کش که
: استCPU عادی
CPU time=(CPU execution clock cycles + memory stall clock
cycles)×clock cycle time
:و داریم
memory stall clock cycles = read stall cycles + write stall cycles
و
read stall cycles = reads/program * read miss rate * read miss
penalty
دو منبع برای، باشدwrite through اگر سیاست، write stall برای محاسبه
که وقتیbuffer write و دیگری توقف هایwrite miss یکی: وجود داردstall
: پر باشدbuffer write ، پیش می آید که وقتی درخواست نوشتن باشد
write stall cycles =( writes/program*write miss rate*wraite miss
penalty)+write buffer stall
اگر buffer writeبه اندازه کافی بزرگ باشد می توان ازwrite buffer stall
صرف نظر کرد که در این صورت جریمه missبرای خواندن و نوشتن یکسان می
شود که همان زمان واکشی بالک از حافظه است و بنابراین فرمول عبارت است
از :
memory stall clock cycles = memory accesses/program*miss
rate*miss penalty
که می توان این فرمول را به شکل مقابل نوشت:
memory stall clock cycles = instructions*misses/program *miss penalty
instructions
مثال:
فرض کنید نرخ نقصان دستورات 2درصد ،نرخ نقصان دیتا درصد و CPIبدون missبرابر 2و
جریمه missبرابر 40سیکل باششد ،اگر 36درصد کل دستورات loadو storeباشد ،
سرعت ماشین چند برابر می شود اگر اصال missوجود نداشته باشد؟
پاسخ:
اگر تعداد دستورات Iفرض شود :
Instructions miss cycles = I*0.02 * 40 = 0.8 I
Data miss cycles = I*0.36* 0.04 * 40 = 0.56 I
دقت کنید که فقط 36درصد دستورات سراغ حافظه دیتا می روند .در نتیجه:
Total number of memory stall cycles= 0.8 I+0.56 I=1/36I
بنا براین CPIبا توجه به stallها برابر 2+36/1=36/3است پس :
𝑬𝑳𝑪𝒀𝑪 𝑲𝑪𝑶𝑳𝑪 𝑳𝑳𝑨𝑻𝑺𝑰𝑷𝑪 ∗𝒊
𝑬𝑳𝑪𝒀𝑪 𝑲𝑪𝑶𝑳𝑪∗ 𝑻𝑪𝑬𝑭𝑹𝑬𝑷𝑰𝑷𝑪 ∗𝑰
=
𝐥𝐥𝐚𝐭𝐬 𝐡𝐭𝐢𝐰 𝐞𝐦𝐢𝐭 𝐔𝐏𝐂
𝐞𝐡𝐜𝐚𝐜 𝐭𝐜𝐞𝐟𝐫𝐞𝐩 𝐡𝐭𝐢𝐰 𝐞𝐦𝐢𝐭 𝐔𝐏𝐂
=1/68
=Seed up
𝟔𝟑𝟑/
𝟐
𝑳𝑳𝑨𝑻𝑺𝑰𝑷𝑪
𝑻𝑪𝑬𝑭𝑹𝑬𝑷𝑰𝑷𝑪
مثال:
فرض کنید ( CPI bass =1اگر همه درخواست ها به کش hit ، l1باشد ) .نرخ
کالک .500 MH zزمان دسترسی حافظه اصلی .200nsنرخ نقصان دستورات در
کش l1برابر . %5ماشین چند برابر سریع می شود اگر از یک کش l2که زمان
دسترسی 20nsدارد استفاده کنیم .در ضمن در این صورت نرخ نقصان به حافظه
اصلی به %2کاهش می یابد.
پاسخ:
Clock rate = 500MH z
= 100clock cycles
clock cycle time = 2 ns
𝑠𝑛200
𝑠𝑛
𝑠𝑛
𝑠𝑒𝑙𝑐𝑦𝑐 𝑘𝑐𝑜𝑙𝑐2
= miss penalty
clock cycles
CPI = CPIbass + Mem stall cycles per instructionبدون کش l2
= 1+ 0.05 *100 = 6
با وجود کش ، l2عدم برخورد کش l1ممکن است در l2یا حافظه اصلی موفق
20
باشد .جریمه missکش l2برابر =10کالک سایکل است:
2
2
CPI = stall per instruction 1+l2+Mem stall per instructionبا کش l2
= 1 + 0.05* 10 + 0.02* 100 = 5/3
بنابراین سرعت =7/1
6
3/5
برابر می شود.
پهنای باند حافظه
برابر است با تعداد کلمه ای که می توان در ثانیه( از /به حافظه) منتقل کرد .مثال َ
اگر کالک باس 500MHzباشد و عرض باس 32 bitو در هر کالک یک دسترسی
به حافظه داشته باشیم و در هر دسترسی بتوانیم 4بایت از حافظه بخوانیم یا
بنویسیم در این صورت پهنای باند( )BWبرابر است با:
(توجه کنید 500MHzمعادل 𝑠𝑛 2است).
2GByte
s
=
𝑒𝑡𝑦𝑏4
2ns
×BW=1
حافظه انجمنی ()Associative Memory
این حافظه ساختاری دارد که برای ذخیره جداولی که در آینده عناصر آن ها قابل
جستجو می باشند به کار می رود .در این نوع حافظه به جای آدرس ورودی برای
دسترسی به عناصر حافظه ،خود محتوی مکان حافظه برای دسترسی استفاده می
گردد .این نوع حافظه عالوه بر حافظه انجمنی« ،حافظه قابل دسترسی توسط
محتوی» ( )Content Access Memory-CAMنیز نامیده می شود .نوشتن در این
حافظه نیاز به آدرس ندارد و خود حافظه ساختاری دارد که داده ورودی را در اولین
مکان خالی حافظه وارد می نماید و خواندن از این حافظه نیز با تصدیق یک کلمه
ورودی (یا بخشی از آن) با کلیه کلمات مکان های حافظه (یا بخشی از آنها) صورت
می پذیرد و مکان هایی از حافظه که مطابق کلمه ورودی باشد برای خواندن مشخص
می شوند .یک حافظه CAMعالوه بر داشتن سلول های ذخیره بیت ،مانند حافظه
های RAMدارای مدارات منطقی تطبیق نیز می باشد .شمای کلی یک حافظه
CAMدر شکل( )10آمده است .در این حافظه mکلمه nبیتی وجود دارد ،در این
حافظه عالوه بر خطوط کنترلی خواندن و نوشتن و خطوط داده ورودی و خروجی،
ورودی دیگر نیز وجود دارد .این ورودی کلمه ای است که می باید با تک تک کلمات
حافظه مقایسه شود .این کلمه در ثباتی با نام «ثبات آرگومان» قرار داد .ثبات دیگری
نیز وجود دارد که عمل ماسک نمودن مقایسه بعضی بیت ها را انجام می دهد که به
«ثبات کلید» معروف است .بدین معنی که مقایسه تنها در مورد بیت هایی صورت می
پذیرد که متناظر با آنها در ثبات کلید ،بیت یک وجود داشته باشد .بعد از مقایسه ،در
ثبات سازگاری ،Mبیت متناظر هر کلمه یا ردیف که با کلمه ورودی مطابق باشد یکی
شود و در صورت عدم تطابق کامل ،بیت مربوطه صفر می گردد.
به طور کلی امکانات یک حافظه شرکت پذیری را می توان به صورت زیر خالصه
کرد.
-1خواندن کلمه ای از حافظه
-2نوشتن در کلمه ای از حافظه
-3یافتن کلمه یا کلماتی که حاوی داده بخصوصی هستند.
-4نوشتن همزمان در کلمه یا کلماتی که حاوی داده بخصوصی هستند.
( : Argument register )Aثبات آرگومان مورد جستجو
( : Key register )Kثبات کلید که نشان دهنده بیتهایی از ثبات آرگومان است که
باید به عنوان کلید جستجو مورد استفاده قرار گیرد.
: Match registerپس از عمل جستجو و مقایسه همزمان محتویات ثبات
آرگومان با تمامی کلمات حافظه در صورتی که در مورد هر کدام از کلماتی
تطبیقی صورت گرفت بیت متناظر آن در این ثبات یک می شود.
مثال زیر چگونگی یک جستجو را در این نوع حافظه نشان می دهد.
شکل( )11نیز سخت افزار مربوط به یک سلول CAMرا نشان می دهد این تک
سلول دارای مدار منطقی برای تطابق بیت ها می باشد که سه ورودی K ، Aو F
دارد F .بیت ذخیره شده (از یک کلمه حافظه) A ،یک بیت از کلمه ورودی و Kنیز
بیت مربوط به عمل ماسک می باشد .این بیت در صورت صفر بودن ،عمل
مقایسه را غیرفعال می کند به صورتی که مقایسه بیت های متناظر از کلمه
ورودی و کلمه موجود در حافظه در نتیجه مقایسه اثری ندارد و در صورت یک بودن
بیت یاد شده عمل مقایسه Fو Aانجام می گیرد و اگر یکسان باشند خروجی
مدار( )Mیک خواهد بود.
برای کلمه حافظه در ،CAMخروجی Mاز هر سلول تشکیل دهنده کلمه حافظه
با یکدیگر ANDمی شوند تا خروجی نهایی حاصل از تطبیق یک ردیف را تولید
نمایند.
به ازای .j=2،1،...،nدو بیت در
کلمه iبا آرگومان Aمساوی است اگر
صورتی مساوی هستند که یا هر دو صفر یا یک باشند ،پس تساوی دو
نشان داد ،که می باشد فقط
بیت را می توان با تابع منطقی
در صورتی که جفت بیت موقعیت jمساوی باشند .ولی همانطور که گفته
شد .دو بیت و فقط در صورتی مقایسه می شوند که بیت متناظر در
مقایسه انجام نمی شود از
ثبات کلید یعنی برابر 1باشد و اگر
طرفی برای آنکه کلمه iام با آرگومان Aمساوی باشد باید بیت هایی که
متناظرشان در ثبات کلید Kیک است ،مساوی باشد ،پس می توان
نوشت:
یعنی می توان نوشت:
یعنی بیت iهم ثبات Mفقط در صورتی یک می شود که با ازای هر بیت یا
باشد و یا در غیر این صورت
مدار برای انطباق یک کلمه در شکل( )12نشان داده شده است.
با توجه به شکل مشخص است که اگر بیت های ثبات kتماما صفر باشند در این صورت خروجی 𝑖𝑀
بدون توجه به Aیک می شود.
عمل خواندن
با اعمال کلمه مورد جستجو به حافظه ،خروجی مربوط به مکانی از حافظه که با کلمه ورودی یا
بخشی از آن یکسان است یک می گردد و البته اگر چند مکان حافظه این خاصیت را داشته باشند،
چندین خروجی ممکن است یک شوند و کلماتی که خروجی تطابق آنها یک باشد ،خوانده می شوند،
البته در صورتی که خروجی Mبه ورودی کنترلی خواندن حافظه وصل شود ،با پیدا کردن عنصری
خاص همزمان خواندن آن نیز انجام می گیرد با شرط اینکه این تطابق تنها در مورد یک ردیف یا کلمه
حافظه وجود داشته باشد.
سازمان حافظه :
واحد حافظه هر کامپیوتر دیجیتالی یکی از بخش های اصلی این واحد است زیرا
برای ذخیره برنامه ها و داده ها مورد استفاده قرار می گیرد .ظرفیت کل هر
کامپیوتر را می توان به صورت یک سیستم سلسله مراتبی از اجزا تصور کرد که
شامل چند سطح حافظه با سرعت و اندازه متفاوت است .هرچه حافظه به
cpuنزدیکتر باشد،سرعت و هزینه تولید آن بیشتر است و ظرفیت آن کمتر
.نزدیکترین حافظه به ، cpuحافظه نهان است که زمان دسترسی به آن با
پریود کالک پردازنده برابر است.سطح بعدی حافظه ،حافظه اصلی است.وقتی
برنامه ای قرار است اجرا شود از حافظه جانبی به حافظه اصلی منتقل میشود
.حافظه جانبی شامل همه اطالعاتی است که در یک سیستم ذخیره شده است
شکل 2بلوک دیاگرام سلسله مراتب حافظه نشان میدهد.در واقع اصل محلی
بودن مراجعات( )locality of refe rencesاست.که وجود سلسله مراتب
حافظه را توجیه میکند به این معنی که برنامه ها تمایل دارند در هر زمان فقط
به قسمت کوچکی از فضای آدرسشان دسترسی یابند.دو نوع لوکالیتی وجود
دارد .1زمانی(:)temporalیعنی اگر به یک آیتم رجوع شد احتماال مجددا به آن
رجوع خواهد شد(مثل حلقه ها) .2مکانی(:)spatialاگر به یک آیتم رجوع شود
به آیتم های مجاورش نیز رجوع خواهد شد(.مثل آرایه ها یا دستورات پشت سر
هم).
حافظه کمکی
نوار مغناطیسی
پردازنده I/O
حافظه اصلی
دیسک مغناطیسی
CACHE
حافظه نهان
CPU
*
.1
.2
.3
در طراحی واحد حافظه 3پرسش مطرح است :
*
ظرفیت چقدر است ؟
سرعت چقدر است ؟
هزینه چقدر است ؟
حافظه های سریع دارای قیمت بیشتر و اندازه کوچکتر هستند و حافظه های کند
تر دارای حجم بیشتر و ارزان تر می باشند .
حافظه اصلی:
معموال حافظه اصلی RAM،است ولی می تواند شامل ROMنیز باشند .
RAMحافظه ای است با دستیابی تصادفی یعنی دسترسی به همه مکانهای آن
با یک زمان ثابت انجام می شود .این حافظه خواندنی – نوشتنی است RAMفرار
است .یعنی اطالعات را تا مدت زمانی که توان الکتریکی به آن اعمال شود حفظ
می کند .
RAMرا به دو صورت می توان ساخت :
SRAM = Static RAM
DRAM = Dynamic RAM
در ساخت SRAMبیت ها در فیلیپ فالپ ذخیره می شوند و سرعت و هزینه شان از
DRAMبیشتر است.
در DRAMبیت ها در خازن ها شارژ می شوند و هر سلول حافظه یک خازن است و
چون خازن به مرور زمان دشارژ می شود لذا باید ریفرش ) (Refreshگردد .
توان مصرفی در DRAMکمتر است و ظرفیت آن از SRAMبیشتر است .
حافظه Romحافظه ای است فقط با قابلیت خواندن و اطالعات آن دائمی
هستند.دست یابی به این حافظه مانند Ramتصادفی است.
1.
2.
تراشه های ROMو : RAM
.شکل 3-یک RAM ،128*8را نشان می دهد.یک تراشه RAMباید دارای خطوط داده
2طرفه و آدرس یک طرفه و همچنین خطوط کنترلی باشد.
برای اینکه عمل خواندن یا نوشتن بایدCS =1ب شود در اینصورت RD=1یعنی خواندن
انجام شود
و WR=1یعنی نوشتن .
اگر WR=RD=0یا اگر CS=0باشد آنگاه خطوط داده همگی در حالت Hi-Zهستند و
هیچ سیگنالی از تراشه عبور نمی کند.
خطوط Writeو Readمی تواند یک خط باشند در اینصورت فرمان آن به اینصورت
نوشته می شود .)RD/WR(.اگر این یک بود یعنی خواندن و اگر صفر بود یعنی نوشتن
CS
8 bit
RD
128 * 8
WR
داده
شکل _3
ADD
7bit
حال فرض کنید می خواهیم با کمک تراشه شکل 4یک حافظه به اندازه 512*8بسازیم.برای این منظور به 4
) باشد.به هر تراشه 7خط کم
تراشه نیاز داریم و کل خطوط آدرس پردازنده باید حداقل 9خط (
برای انتخاب تراشه ها استفاده میکنیم.شکل
) و از
ارزش آدرس را متصل میکنیم( A6
4نحوه ساخت حافظه 512*8با حافظه های 128*8را نشان میدهد.
D7-D°
RAMI
CS
RD
WR
ADD
WR
Cpu
A8 A7 A6……………….Ao RD
در
باشد.پس آدرس های
با توجه به شکل RAM 1،4وقتی فعال میشود که
باشد.پس
RAM1هستند.به همین ترتیب RAM2وقتی فعال می شود که
آدرس های 128-255در RAM2قرار دارند.به ساخت حافظه بزرگ با تراشه کوچک را
اصطالحا برگ برگ سازی ( )INTERLEAVINGمی نامند.اگر برای انتخاب تراشه ها از
بیت های با ارزش آدرس استفاده شود(شکل)4به آن برگ برگ سازی با مرتبه باال می
نامند.
پردازنده
شکل _2
حافظه نهان باال ترین سطح حافظه سلسله مراتبی است .در شکل – 1ارتباط بین
حافظه نهان و حافظه اصلی و CPUنشان داده شده است می دانیم Cacheشامل
یک کپی از بخش هایی از حافظه اصلی است .هنگامیکه CPUبرای خواندن کلمه ای
از حافظه ،پوشش می کند .
ابتدا وضعیت را بررسی می کند تا ببیند این کلمه در Cacheقرار دارد یا خیر .
اگر چنین باشد کلمه به CPUتحویل داده می شود در غیر اینصورت بلوکی از حافظه
آورده می شود و آنگاه کلمه مورد Cacheشامل تعداد ثتی کلمه خوانده شده و به
نیاز به CPUتحویل می شود .
زمان دستیابی :زمان متوسط الزم برای رسیدن به یک مکان ذخیره سازی در حافظه و دریافت محتوای
آن .
حافظه نهان (Cache):
CPU
CACHE
شکل 1 -
حافظه اصلی
واحد انتقال:کلمه
واحد انتقال:بلوک
دسترسی به سطوح مختلف حافظه :
در سیستم های حافظه سلسه مراتبی تمامی داده های ذخیره شده در حافظه های
سطوح باالتر در حافظه های سطح پایین ذخیره شدند .
هرچه حافظه از CPUدورتر باشد سطح آن پایین تر و زمان دسترسی به آن طوالنی تر
خواهد بود .در یک حافظه سلسه مراتبی که شامل چند سطح است در یک زمان داده
ها بین دو سطح مجاور کپی گردند .
مینیمم واحد اطالعات که می تواند در دو سطح مجاور حضور داشته باشد را بالک می
نامند .
شکل – 5بالک های اطالعاتی ذخیره شده در دو سطح مجاور حافظه را نشان می
دهد .
اگر CPUداده ای را در خواست کند و این داده در بلوکی از حافظه سطح باال )(Cache
باشد آنرا Hitمی نامند .
اگر داده ی در خواستی در حافظه سطح باال وجود نداشته باشد مسلما در
حافظه
اصلی که در آن صورت آنرا Missمی نامند .
نسبت تعداد Hitها تقسیم بر تعداد کل ارجاعات Cpuبه حافظه ) (Hit + Missرا
نسبت Hitمی نامند .
در صد دسترسی نا موفق به حافظه سطح باال را نسبت Missمی نامند .
اگر فرض کنیم زمان دسترسی به حافطه اصلیTm
و زمان دسترسی به cacheبرابر tcو نرخ برخورد hباشد و زمان دسترسی
متوسط taveباشدtave ،برابر است با tave=htc+c1(1-h)Tm
با این فرض که
حافظه می تواند مستقیما به cpuداده بدهد.اما اگر حافظه اصلی مستقیما به
cpuداده ندهد آنگاه زمان متوسط دسترسی برابر است با:
شکل 5
حافظه
اصلی
tave=tc+c1(1-h)Tm
cache
cpu
مشخصه اصلی حافظه Cacheزمان دستیابی سریع آن است .انتقال داده از حافظه
اصلی به حافظه Cacheرا بر آیند نگاشت به هنگام بررسی سازمان حافظه Cache
مورد توجه قرار می گیرد .
.1نگاشت انجمنی
.2نگاشت مستقیم
.3نگاشت انجمن – مجموعه ای
برای درک بهتر این روشها از مثال خاصی برای سازمان حافظه از شکل – 6استفاده می کنیم .
حافظه اصلی می تواند 32Kکلمه 12بیتی را ذخیره کند .برای هر کلمه که در Cacheذخیره
شود یک نسخه کپی در حافظه اصلی وجود دارد.
CPUبا هر دو حافظه ارتباط دارد ابتدا آدرس 15بیتی را به حافظه Cacheارسال می کنیم
* اگر HITصورت گیرد CPUداده 12بیتی را از Cacheمی پذیرد.
* اگر MISSصورت گیرد CPUکلمه را از حافظه اصلی می خواند و سپس آن کلمه را به حافظه
CACHEمنتقل می کند.
حافظه اصلی
CPU
CACHE
512*12
32K*12
نگاشت مستقیم:در این روش هر بلوک از حافظه اصلی به یک مکان مشخص از
cacheمنتقل می شود..
این روش از فرمول زیر برای یافتن آدرس بلوک در کش استفاده می کند.
(تعداد بلوک های (mod) Cacheآدرس بلوک حافظه اصلی)=آدرس بلوک
cache
نگاشت انجمنی:هنگام missبلوک از حافظه اصلی به cacheمنتقل می شود و
در هر بلوک از کش ممکن است نگاشته شود،یعنی جای مشخص برای بلوک
وجود ندارد.در واقع هر آدرسی که پردازنده تولید می کند به طور موازی tag
این آدرس با tagهمه بلوک های cacheمقایسه می شود و missیاhit
مشخص می شود.در صورت بروز missبلوک ازحافظه به کش منتقل می شود
و در اولین بلوک خالی کش(بلوکی که v=0است) نگاشته می شود.اگر بلوک
خالی در کش وجود نداشته باشد طبق الگوریتم جا بجایی LRNیک مکان
برای بلوک مشخص می شود.
نگاشت انجمنی مجموعه:این روش یک روش میانی دو روش قبلی است.کش به
تعدادی setتقسیم می شود و هر setشامل تعدادی بلوک از حافظه اصلی
است.در این روش هر setکش میتواند شامل kبلوک از حافظه اصلی باشد
این kبلوک همگی ایندکس یکسان دارند.
علم و علم اندوزی در آئینه قرآن:
در قرآن کریم شواهد و نمونه های زیادی دا ّل بر فضیلت علم و علم آموزی وجود
دارد از آن جمله :یرْ ف ِع هللاُ الَّ ِذیْن آم ُنوا ِم ْنکُ ْم و الَّ ِذیْن أُو ُتوا ال ِع ْلم درجات .یعنی
خداوند کسانی از شما را که ایمان آورده اند باال میبرد و بر کسانیکه بهره ای از
علم دارند درجات بزرگی میبخشد .سوره مجادله آیه ی .11ابن عباس در تفسیر
این آیه فرموده است :علمای عاملین نسبت به سایر مؤمنان عامی هفتصد درجه
برتری دارند ،که فاصله هر درجه نسبت به درجه دیگر ،پانصد قدم راه است .و
باز خداوند متعال در سوره زمر آیه 9میفرماید :قُ ْل ه ْل یسْ ت ِوی الَّ ِذیْن یعْ لم ُْون و
الَّ ِذین الیعْ لم ُْون یعنی بگو آیا کسانیکه میدانند و کسانیکه نمیدانند مساوی هستند؟
هرگز .باز میفرمایدِ :ا َّنما ی ْخشی هللا ِمنْ ِعبا ِد ِه العُلما ُء .یعنی و تنها بندگان دانا و
دانشمند از خدا ،ترس آمیخته با تعظیم دارند .سوره فاطر آیه .28باز میفرماید :و
اس و ما یعْ قِلُها ِاال العالِم ُْون .یعنی اینها مثالهایی هستند که
ِت ْلک األ ْمثا ُل نضْ ِربُها لِل َّن ِ
ما برای مردم میزنیم و جز فرزانگان ،آنها را فهم نمیکنند و ِسوای خردمندان از
آنها عبرت نمیگیرند و درس زندگی نمیآموزند .سوره عنکبوت آیه .43