(۰۳ دى ۱۳۹۲ ۰۷:۳۵ ب.ظ)alice نوشته شده توسط: سلاااااااام دوستان عزیز
میشه یکی برام توضیح بده در تست پایین چجوری باید بفهمم کدوم آدرس miss و کدوم hit ؟؟؟؟ 
یک حافظه اصلی به بزرگی ۲۵۶K کلمه و یک حافظه نهان به بزرگی ۴ بلوک ۴ کلمه ای موجود است.روش نگاشت مستقیم استفاده می شود.با فرض خالی بودن cache ,نرخ برخورد در انتهای صدور آدرس های ذیل ( از چپ به راست ) از طرف پردازنده کدام است؟
۱۷۰,۲۵۷,۱۶۸,۲۴۶,۱۷۶,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۶,۱۷۵,۱۷۴,۱۷۳,۱۷۲,۱۷۱,۱۷۰,۱۶۹,۱۶۸,۱۶۷,۱۶۸,۱۶۵,۱۶۴
کل حافظه اصلی قراره تو این ۴ تا بلاک قرار بگیره. هر بلاک هم که ۴ تا کلمه است.
بنابراین داریم :
بلاک ۰ : (کلمه ۰ تا ۳) (کلمه ۱۶ تا ۱۹)
بلاک ۱ : (کلمه ۴ تا ۷) ......................
بلاک ۲ : (کلمه ۸ تا ۱۱) ........................
بلاک ۳ : (کلمه ۱۲ تا ۱۵) ......................
بنابراین برای هر آدرسی که بهت میدن باید پیدا کنی توی کدوم بلاک قرار میگره و چندمین کلمه هست.
اگه آدرسی که بهت دادن تقسیم بر اندازه بلاک کنی (اینجا گفته ۴ کلمه) باقیمانده میشه اینکه چندمین کلمه تو بلاکه.
مثلا برای ۳ ، تقسیم بر ۴ ، باقیمانده میشه ۳ که یعنی شماره کلمه ۳ هست. (آخرین کلمه بلوک)
جالا باید ببینم تو کدوم بلوک قرار میگیره ، اون خارج قسمتی که بدست اومده را نقسیم بر تعداد بلوک کش میکنیم (اینجا ۴ تا بلوک). باقیمانده میشه اینکه تو کدوم بلوک هست.
مثلا برای آدرس ۱۹ ، اول تقسیم بر ۴ میکنیم باقیمانده میشه ۳ ، و خارج قسمت میشه ۴ .
این ۴ رو نقسیم بر ۴ میکنیم ، باقیمانده میشه ۰ .
پس این آدرس آخرین کلمه از بلاک شماره ۰ هست.
حالا در مورد سوال :
مثلا آدرس ۱۷۰ :
اون تقسیم بر ۴ میکنیم : باقیمانده = ۲ خارج قسمت میشه ۴۲ ، ۴۲ رو تقسیم ۴ میکنی باقیمانده میشه ۲/
یعنی کلمه شماره ۲ از بلوک شماره ۲ هست. بنابراین با درخواست ای آدرس بلوک شماره دو هر چی که قبلا داشت پاک میشه این مقادیر جدید از حافظه خونده میشه و جاش قرار میگیره.
این یعنی آدرس هایی که باهاش لود میشه (۱۶۸ تا ۱۷۱ هست ) بنابراین به ازای ۱۷۰ ما miss داریم ولی اگر بعد از اون ۱۶۸ رو بخوان دیگه ما اونو تو حافظه داریم پس hit میشه.
در مورد ۲۵۷ :
تقسیم بر ۴ میشه باقیمانده میشه ۱ ، و ۶۴ تقسیم بر ۴ باقیمانده میشه ۰ . یعنی آدرس (۲۵۶ تا ۲۵۹ ) تو بلوک ۰ لود میشن. پس به ازای این miss داریم.
به این نکته توجه کن که اگه مثلا آدرس یعد از این یه چیزی بود که دوباره تو بلوک ۰ لود میشد ، دیگه آدرس های قبلی که داشتیم تو این بلوک همه از بین میرن و به ازای اونا miss خواهیم داشت.
حواست به این هم باشه که شماره ها از ۰ شروع میشه. یعنی اگه شماره کلمه ات در اومد ۳ این یعنی چهارمین کلمه و آخرین کلمه از بلوک.
یه کم توضیحش سخت بود با نوشتن. سعی کردم واضح توضیح بدم.