تالار گفتمان مانشت
۳ سوال از فصل حافظه پوران - نسخه‌ی قابل چاپ

۳ سوال از فصل حافظه پوران - mahsa.tsi - 20 آذر ۱۳۹۱ ۰۹:۵۴ ق.ظ

سلام
همه خسته نباشیدSmile
۱/tag نشان دهنده ی چه چیزی میتونه باشد مثلا برای کش انجمنی مجموعه ای؟
۲-چگونه درخواست write موجب missمیشود؟یه ادرس میدیم توش بنویسیم بعد اگه بلاک مربوط به این ادرس در کش نبود درخواستمون miss میشه؟
۳-صفحه ۲۰۳ پوران برای مثال دوم:
فرض کنید CPI base=1
نرخ کلاک ۵۰۰MHz
زمان دسترسی حافظه اصلی ۲۰۰ns
نرخ نقصان دستورات در کش l1 برابر۵ درصد
ماشین چند برابر سریع میشود اگر از یک کش l2 که زمان دسترسی ۲۰ns دارد استفاده کنیم؟نرخ نقصان به حافظه ی اصلی به ۲درصدکاهش میابد()
cpi با درنظر گرفتن کش l2 چطوری بدست اومده؟

۳ سوال از فصل حافظه پوران - fatima1537 - 20 آذر ۱۳۹۱ ۰۳:۰۴ ب.ظ

(۲۰ آذر ۱۳۹۱ ۰۹:۵۴ ق.ظ)mahsa.tsi نوشته شده توسط:  ۲-چگونه درخواست write موجب missمیشود؟یه ادرس میدیم توش بنویسیم بعد اگه بلاک مربوط به این ادرس در کش نبود درخواستمون miss میشه؟
miss شدن یعنی میخوایم یک داده ای رو بخونیم ولی موجود نیست ، پس مجبوریم از سطح بعدی حافظه استفاده کنیم(کش های سطح بالاتر یا نهایتا از ram )
توضیحی که دادید درسته فقط به جای "بنویسیم" باید کلمه "بخوانیم" باشه.

RE: 3 سوال از فصل حافظه پوران - آنجلا - ۲۱ آذر ۱۳۹۱ ۱۲:۱۵ ب.ظ

سلام... در مورد سوال اول: Block#=TAG+index
Block#=اگر آدرس حافظه رو داشته باشیم و آن را بر اندازه بلاک تقسیم کنیم خارج قسمت شماره بلاکش میشه و باقیماندش مکان قرار گیریword در بلاک است..
index=آدرس کش
برای اینکه حساب کنیم هر بلاک حافظه اصلی توی کدوم بلاک کش قرار میگیره اونو بر تعداد خونه های کش تقسیم میکنیم باقیماندش میشه index
حالا Tag چیه؟ همیشه یه بلاک های خاصی از حافظه اصلی میرن توی بلاکهای خاصی از کش... برای اینکه ما بدونیم کدومشون الان توی اون آدرس از کش هستند باید شماره بلاکشو توی اون آدرس از کش ذخیره کنیم از اونجایی که بیت های انتهایی شماره بلاک همون index مون هستند و چون ما توی همون index قرار داریم پس لازم نیست اون بیت ها ذخیره شن پس ما بقی بیت ها ی باقیمونده از شماره بلاک میشن Tag.. یه مثال:آدرس حافظه: ۰۰۱۱۰۱۱۱۰۱۰۱۱۱۰۱ داده شده ...تعداد خونه های کش هم ۸ تاست اندازه بلاکش هم ۴ تاست... اگر آدرس حافظه رو بر ۴ تقسیم کنیم دو چیز بدست میاد اول شماره بلاک که توی این مثال میشه۱۴ بیت از سمت چپ (۰۰۱۱۰۱۱۱۰۱۰۱۱۱).. دوم شماره word توی اون بلاک که توی این مثال میشه دو بیت اول از سمت راست (۰۱)... حالا از کجا بفهمیم این شماره بلاک توی کدوم خونه از کشه؟ باقیمانده شماره بلاک(۰۰۱۱۰۱۱۱۰۱۰۱۱۱) بر تعداد خونه های کش رو محاسبه میکنیم که میشه: index=111 سه بیت سمت راست شماره بلاک...و Tag= ما بقی بیتهایی که از شماره بلاک باقی مونده یعنی:۰۰۱۱۰۱۱۱۰۱۰ ... اگه دقت کنین میبینین که همه آدرس هایی که توی این index از کش ذخیره میشن index شبیه به هم دارن ولی Tag شون با هم فرق خواهد داشت پس برای کم شدن اندازه بیتهای سربار کش اون سه بیت ایندکسو دیگه ذخیره نمیکنن و با Tag میفهمن که الان کدوم بلاک از حافظه اصلی توی کشه.... امیدوارم بد توضیح نداده باشم... در مورد سوال دوم هم write با read فرق داره..اگه از سیاست write thr استفاده کنیم وقتی cpu دستور نوشتن میده هم توی کش باید نوشته بشه هم توی حافظه ... اینکه miss میشه یعنی یه بلاک دیگه ای توی اون آدرسه بوده... پس اگه اون بلاک قبلی dirty بوده باید توی حافظه نوشته بشه در غیر اینصورت میتونیم بدون هیچ نگرانی داده ی جدید رو جاش بنویسیم چون یه نمونش توی حافظه وجود داره...در واقع بیشتر به درد همون دیتای قبلی میخوره