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