تالار گفتمان مانشت

نسخه‌ی کامل: 3 سوال از فصل حافظه پوران
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام
همه خسته نباشیدSmile
1.tag نشان دهنده ی چه چیزی میتونه باشد مثلا برای کش انجمنی مجموعه ای؟
2-چگونه درخواست write موجب missمیشود؟یه ادرس میدیم توش بنویسیم بعد اگه بلاک مربوط به این ادرس در کش نبود درخواستمون miss میشه؟
3-صفحه 203 پوران برای مثال دوم:
فرض کنید CPI base=1
نرخ کلاک 500MHz
زمان دسترسی حافظه اصلی 200ns
نرخ نقصان دستورات در کش l1 برابر5 درصد
ماشین چند برابر سریع میشود اگر از یک کش l2 که زمان دسترسی 20ns دارد استفاده کنیم؟نرخ نقصان به حافظه ی اصلی به 2درصدکاهش میابد()
cpi با درنظر گرفتن کش l2 چطوری بدست اومده؟
(20 آذر 1391 09:54 ق.ظ)mahsa.tsi نوشته شده توسط: [ -> ]۲-چگونه درخواست write موجب missمیشود؟یه ادرس میدیم توش بنویسیم بعد اگه بلاک مربوط به این ادرس در کش نبود درخواستمون miss میشه؟
miss شدن یعنی میخوایم یک داده ای رو بخونیم ولی موجود نیست ، پس مجبوریم از سطح بعدی حافظه استفاده کنیم(کش های سطح بالاتر یا نهایتا از ram )
توضیحی که دادید درسته فقط به جای "بنویسیم" باید کلمه "بخوانیم" باشه.
سلام... در مورد سوال اول: Block#=TAG+index
Block#=اگر آدرس حافظه رو داشته باشیم و آن را بر اندازه بلاک تقسیم کنیم خارج قسمت شماره بلاکش میشه و باقیماندش مکان قرار گیریword در بلاک است..
index=آدرس کش
برای اینکه حساب کنیم هر بلاک حافظه اصلی توی کدوم بلاک کش قرار میگیره اونو بر تعداد خونه های کش تقسیم میکنیم باقیماندش میشه index
حالا Tag چیه؟ همیشه یه بلاک های خاصی از حافظه اصلی میرن توی بلاکهای خاصی از کش... برای اینکه ما بدونیم کدومشون الان توی اون آدرس از کش هستند باید شماره بلاکشو توی اون آدرس از کش ذخیره کنیم از اونجایی که بیت های انتهایی شماره بلاک همون index مون هستند و چون ما توی همون index قرار داریم پس لازم نیست اون بیت ها ذخیره شن پس ما بقی بیت ها ی باقیمونده از شماره بلاک میشن Tag.. یه مثال:آدرس حافظه: 0011011101011101 داده شده ...تعداد خونه های کش هم 8 تاست اندازه بلاکش هم 4 تاست... اگر آدرس حافظه رو بر 4 تقسیم کنیم دو چیز بدست میاد اول شماره بلاک که توی این مثال میشه14 بیت از سمت چپ (00110111010111).. دوم شماره word توی اون بلاک که توی این مثال میشه دو بیت اول از سمت راست (01)... حالا از کجا بفهمیم این شماره بلاک توی کدوم خونه از کشه؟ باقیمانده شماره بلاک(00110111010111) بر تعداد خونه های کش رو محاسبه میکنیم که میشه: index=111 سه بیت سمت راست شماره بلاک...و Tag= ما بقی بیتهایی که از شماره بلاک باقی مونده یعنی:00110111010 ... اگه دقت کنین میبینین که همه آدرس هایی که توی این index از کش ذخیره میشن index شبیه به هم دارن ولی Tag شون با هم فرق خواهد داشت پس برای کم شدن اندازه بیتهای سربار کش اون سه بیت ایندکسو دیگه ذخیره نمیکنن و با Tag میفهمن که الان کدوم بلاک از حافظه اصلی توی کشه.... امیدوارم بد توضیح نداده باشم... در مورد سوال دوم هم write با read فرق داره..اگه از سیاست write thr استفاده کنیم وقتی cpu دستور نوشتن میده هم توی کش باید نوشته بشه هم توی حافظه ... اینکه miss میشه یعنی یه بلاک دیگه ای توی اون آدرسه بوده... پس اگه اون بلاک قبلی dirty بوده باید توی حافظه نوشته بشه در غیر اینصورت میتونیم بدون هیچ نگرانی داده ی جدید رو جاش بنویسیم چون یه نمونش توی حافظه وجود داره...در واقع بیشتر به درد همون دیتای قبلی میخوره
لینک مرجع