(03 دى 1392 07:35 ب.ظ)alice نوشته شده توسط: [ -> ]سلاااااااام دوستان عزیز
میشه یکی برام توضیح بده در تست پایین چجوری باید بفهمم کدوم آدرس miss و کدوم hit ؟؟؟؟
یک حافظه اصلی به بزرگی ۲۵۶K کلمه و یک حافظه نهان به بزرگی ۴ بلوک ۴ کلمه ای موجود است.روش نگاشت مستقیم استفاده می شود.با فرض خالی بودن cache ,نرخ برخورد در انتهای صدور آدرس های ذیل ( از چپ به راست ) از طرف پردازنده کدام است؟
۱۷۰,۲۵۷,۱۶۸,۲۴۶,۱۷۶,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۶,۱۷۵,۱۷۴,۱۷۳,۱۷۲,۱۷۱,۱۷۰,۱۶۹,۱۶۸,۱۶۷,۱۶۸,۱۶۵,۱۶۴
کل حافظه اصلی قراره تو این 4 تا بلاک قرار بگیره. هر بلاک هم که 4 تا کلمه است.
بنابراین داریم :
بلاک 0 : (کلمه 0 تا 3) (کلمه 16 تا 19)
بلاک 1 : (کلمه 4 تا 7) ......................
بلاک 2 : (کلمه 8 تا 11) ........................
بلاک 3 : (کلمه 12 تا 15) ......................
بنابراین برای هر آدرسی که بهت میدن باید پیدا کنی توی کدوم بلاک قرار میگره و چندمین کلمه هست.
اگه آدرسی که بهت دادن تقسیم بر اندازه بلاک کنی (اینجا گفته 4 کلمه) باقیمانده میشه اینکه چندمین کلمه تو بلاکه.
مثلا برای 3 ، تقسیم بر 4 ، باقیمانده میشه 3 که یعنی شماره کلمه 3 هست. (آخرین کلمه بلوک)
جالا باید ببینم تو کدوم بلوک قرار میگیره ، اون خارج قسمتی که بدست اومده را نقسیم بر تعداد بلوک کش میکنیم (اینجا 4 تا بلوک). باقیمانده میشه اینکه تو کدوم بلوک هست.
مثلا برای آدرس 19 ، اول تقسیم بر 4 میکنیم باقیمانده میشه 3 ، و خارج قسمت میشه 4 .
این 4 رو نقسیم بر 4 میکنیم ، باقیمانده میشه 0 .
پس این آدرس آخرین کلمه از بلاک شماره 0 هست.
حالا در مورد سوال :
مثلا آدرس 170 :
اون تقسیم بر 4 میکنیم : باقیمانده = 2 خارج قسمت میشه 42 ، 42 رو تقسیم 4 میکنی باقیمانده میشه 2.
یعنی کلمه شماره 2 از بلوک شماره 2 هست. بنابراین با درخواست ای آدرس بلوک شماره دو هر چی که قبلا داشت پاک میشه این مقادیر جدید از حافظه خونده میشه و جاش قرار میگیره.
این یعنی آدرس هایی که باهاش لود میشه (168 تا 171 هست ) بنابراین به ازای 170 ما miss داریم ولی اگر بعد از اون 168 رو بخوان دیگه ما اونو تو حافظه داریم پس hit میشه.
در مورد 257 :
تقسیم بر 4 میشه باقیمانده میشه 1 ، و 64 تقسیم بر 4 باقیمانده میشه 0 . یعنی آدرس (256 تا 259 ) تو بلوک 0 لود میشن. پس به ازای این miss داریم.
به این نکته توجه کن که اگه مثلا آدرس یعد از این یه چیزی بود که دوباره تو بلوک 0 لود میشد ، دیگه آدرس های قبلی که داشتیم تو این بلوک همه از بین میرن و به ازای اونا miss خواهیم داشت.
حواست به این هم باشه که شماره ها از 0 شروع میشه. یعنی اگه شماره کلمه ات در اومد 3 این یعنی چهارمین کلمه و آخرین کلمه از بلوک.
یه کم توضیحش سخت بود با نوشتن. سعی کردم واضح توضیح بدم.