
توی این درس می خوایم ،فرمول speedUP یک pipe نسبت به noPipe رو درک کنیم.
زمان اجرای n وظیفه در سیستم غیر لوله ای :
به عبارت دیگه میخوام فرمول سرعت اجرای دستورات در سیستم لوله ای نسبت به سیستم غیر لوله ای رو یاد بگیریم.
در یه سیستم غیر لوله ای فرض کنید n کار(task) داریم و متوسط زمان اجرای هر task برابر T_n نانو ثانیه هست.
پس کلا n*T_n نانو ثانیه زمان برای اجرای کل اونا لازمه.
==
زمان اجرای n وظیفه در سیستم لوله ای:
حالا اگه همین n تا Task رو بخوایم توسط سیستم خط لوله ای که k طبقه داره اجرا کنیم داریم :
ابتدا n سیکل طول میکشه تا آخرین کار وارد خط لوله بشه(البته از اون طرف هم ممکنه بعضی از task های قبل اجراشون تمام شده باشه و از لوله خارج شده باشن)
سپس k-1 سیکل طول می کشه تا آخرین task کارش به اتمام برسه.
یعنی کلا n+k-1 سیکل و هر سیکل به اندازه T_pipe نانو ثانیه زمان برای اجرا مصرف می کنه.
پس کلا (T_pipe * (n+k-1نانوثانیه طول میکشه تا n کار توی سیستم لوله ای k قسمتی اجرا بشه.
یعنی به طور کلی فرمول زیر بدست میاد :
speedup=nTRun(nk−1)Tpipe
==
مثال(مسئله ی ۴ فصل ۹ خط لوله و پردازش موازی_موریس مانو_کتاب جلد سبز):
یک سیستم غیرلوله ای برای اجرای کاری ۵۰ نانوثانیه زمان لازم دارد.همین کار را می توان با یک خط لوله ی ۶ قسمتی با پالس ساعت ۱۰ نانوثانیه ای اجرا نمون.میزان افزایش سرعت خط لوله را برای ۱۰۰ کار تعیین نمایید.
حل :
تعداد هر کار یا n هست : ۱۰۰
زمان اجرای هر کار یا T_n هست : ۵۰ نانوثانیه
تعداد طبقه/قسمت یا k هست : ۶
پالس ساعت یا T_pipe یا حالا T_pulse هست : ۱۰ نانوثانیه
پس داریم :
speedup=100∗50(1006−1)∗10=4.76
می تونید به حل مسائل معماری کامپیوتر مانو ناقوس(فصل ۹)(تالیف سید رضی) مراجعه کنید.
===
نکته : اگر به سوال فوق اضافه کنیم که حداکثر افزایش سرعتی را که می توان به آن رسید محاسبه نمایید، داریم:
باید برای محاسبه ی حداکثر افزایش سرعت ، T_n رو به T_p تقسیم کنیم یعنی:
smax=TnTp=5010=5
===========
توی این درس میخوایم کمی روی مبحث cache مانور بدیم :
ابتدا چند سوال آسون از حافظه ی نهان :
Cache 2way یعنی چه ؟
کش ۲way یعنی یه حافظه ی نهان ،که اگه اونو به صورت یک جدول فرض کنیم،توی هر set یا دسته یا سطرش ۲ تا بلاک جا می گیره.
==
تعداد بلاک های Cache رو چطوری باید محاسبه کرد ؟
کافیه اندازه ی کش رو بدونیم ، اندازه ی بلاک هم بدونیم. سپس اندازه ی کش رو به اندازه ی بلاک تقسیم می کنیم و تعداد بلاک های کش بدست میاد
==
در یک کش n_way تعداد set ها رو چطوری محاسبه کنیم؟
همونطور که از اسم set می فهمیم یعنی دسته
یعنی تعداد دسته هایی که n بلوک رو توی اونا جا می زنیم.
پس باید تعداد کل بلوک یا همون بلاک ها رو داشته باشیم و به n تقسیم کنیم.
==
مثال :در یک کش ۲Way ،به اندازه ی ۲۵۶ بایت،تعدا set ها را محاسبه کنید اگر اندازه ی هر بلوک ۱۶ باید باشد؟
حل:
ابتدا باید تعداد بلوک ها رو حساب کنیم پس ۲۵۶/۱۶=۱۶ بلوک
حالا تعداد بلوک ها رو به n یا همون ۲ تقسیم می کنیم(چون کش ما ۲way بود n=2 هست) : ۱۶/۲ = ۸ دسته یا set.
===
از مبحث فوق برای بخش miss-rate یا محاسبه ی نرخ زمان هدر رفته برای آوردن یک داده از حافظه به cache استفاده میشه(بهش miss penalty هم می گن)
می تونید به یه مثال مهم در این لینک مراجعه کنید :
مهمان عزیز شما قادر به مشاهده پیوندهای انجمن مانشت نمیباشید. جهت مشاهده پیوندها ثبت نام کنید.
===
یه مثال دیگه مربوط به حافظه های تداعیگر میارم:
این مثال رو می تونید توی کتاب معماری کامپیوتر پوران پژوهش هادی یوسفی فصل ۷ سازمان حافظه پیدا کنید:
مثال)یک کامپیوتر با مشخصات زیر داریم:
-یک پردازنده
-۳۲ بیت virtual address
-(۲ به توان ۳۲)بایت حافظه ی اصلی
-سایز page برابر (۲ به توان ۱۴)
-یک کش(cache) با (۲ به توان ۱۰) عدد set(سطر/دسته) و ساختار ۴way set associative و سایز(اندازه) بلاک های آن ۸ بایت
چقدر داده می تواند در کش ذخیره شودمنظورش اینه که ظرفیت کش رو بدست بیاریم)؟
=
حل :
اول سه تا شکل رو می کشیم که یادمون نره:
آدرس مجازی شامل سه بخش هست: tag+index+word
آدرس تولیدی پردازنده شامل دو بخش هست : tag+index
خود index شامل دو بخش هست : index=block+word
سه مطلب فوق رو بعدا توضیح خواهیم داد(در بخش های جلوتر)
توجه کنید که توی سوالات کنکور ممکنه یه سری چیزهای اضافه بدن که بیشتر برای گیج کردن هست و تو حل سوال بکار نمیان.فقط کافیه درک کنید سوال چ میخواد و چیا رو داریم چیارو باید بدست بیاریم.بریم سر اصل مطلب:
ظرفیت کش=اندازه ی جدول کش=تعداد سطرهای کش*اندازه ی هر سطر
سطر همون set هست که توی سوال گفته (۲ به توان ۱۰ )تا سطر داریم.
چون ۴way هست یعنی توی هر سطر ۴ بلوک جا می گیره
و چون ظرفیت هر بلوک هم ۸ بایت هست پس ظرفیت یا اندازه ی هر سطر میشه ۴*۸=۳۲ بایت
پس ظرفیت کش میشه : (۲ به توان ۱۰) ضربدر (۳۲) بایت = ۳۲*۱۰۲۴ بایت = ۳۲ کیلوبایت
==
دوستان لطفا فقط بازدید نکنید . با فشردن دکمه ی سپاس از مطالب استقبال کنید تا در صورت برزو رسانی مطالب از طریق پیام به شما خبر بدیم.