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

نحوه تشخیص miss , hit (سازمان حافظه) - alice - 03 دى ۱۳۹۲ ۰۷:۳۵ ب.ظ

سلاااااااام دوستان عزیز
میشه یکی برام توضیح بده در تست پایین چجوری باید بفهمم کدوم آدرس miss و کدوم hit ؟؟؟؟ Exclamation


یک حافظه اصلی به بزرگی ۲۵۶K کلمه و یک حافظه نهان به بزرگی ۴ بلوک ۴ کلمه ای موجود است.روش نگاشت مستقیم استفاده می شود.با فرض خالی بودن cache ,نرخ برخورد در انتهای صدور آدرس های ذیل ( از چپ به راست ) از طرف پردازنده کدام است؟

۱۷۰,۲۵۷,۱۶۸,۲۴۶,۱۷۶,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۶,۱۷۵,۱۷۴,۱۷۳,۱۷۲,۱۷۱,​۱۷۰,۱۶۹,۱۶۸,۱۶۷,۱۶۸,۱۶۵,۱۶۴

RE: نحوه تشخیص miss , hit (سازمان حافظه) - e.shrm - 03 دى ۱۳۹۲ ۰۸:۳۳ ب.ظ

(۰۳ دى ۱۳۹۲ ۰۷:۳۵ ب.ظ)alice نوشته شده توسط:  سلاااااااام دوستان عزیز
میشه یکی برام توضیح بده در تست پایین چجوری باید بفهمم کدوم آدرس miss و کدوم hit ؟؟؟؟ Exclamation


یک حافظه اصلی به بزرگی ۲۵۶K کلمه و یک حافظه نهان به بزرگی ۴ بلوک ۴ کلمه ای موجود است.روش نگاشت مستقیم استفاده می شود.با فرض خالی بودن cache ,نرخ برخورد در انتهای صدور آدرس های ذیل ( از چپ به راست ) از طرف پردازنده کدام است؟

۱۷۰,۲۵۷,۱۶۸,۲۴۶,۱۷۶,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۶,۱۷۵,۱۷۴,۱۷۳,۱۷۲,۱۷۱,​۱۷۰,۱۶۹,۱۶۸,۱۶۷,۱۶۸,۱۶۵,۱۶۴

کل حافظه اصلی قراره تو این ۴ تا بلاک قرار بگیره. هر بلاک هم که ۴ تا کلمه است.
بنابراین داریم :
بلاک ۰ : (کلمه ۰ تا ۳) (کلمه ۱۶ تا ۱۹)
بلاک ۱ : (کلمه ۴ تا ۷) ......................
بلاک ۲ : (کلمه ۸ تا ۱۱) ........................
بلاک ۳ : (کلمه ۱۲ تا ۱۵) ......................

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

به این نکته توجه کن که اگه مثلا آدرس یعد از این یه چیزی بود که دوباره تو بلوک ۰ لود میشد ، دیگه آدرس های قبلی که داشتیم تو این بلوک همه از بین میرن و به ازای اونا miss خواهیم داشت.
حواست به این هم باشه که شماره ها از ۰ شروع میشه. یعنی اگه شماره کلمه ات در اومد ۳ این یعنی چهارمین کلمه و آخرین کلمه از بلوک.

یه کم توضیحش سخت بود با نوشتن. سعی کردم واضح توضیح بدم.

RE: نحوه تشخیص miss , hit (سازمان حافظه) - alice - 03 دى ۱۳۹۲ ۱۰:۴۶ ب.ظ

(۰۳ دى ۱۳۹۲ ۰۸:۳۳ ب.ظ)e.sharmi نوشته شده توسط:  کل حافظه اصلی قراره تو این ۴ تا بلاک قرار بگیره. هر بلاک هم که ۴ تا کلمه است.
بنابراین داریم :
بلاک ۰ : (کلمه ۰ تا ۳) (کلمه ۱۶ تا ۱۹)
بلاک ۱ : (کلمه ۴ تا ۷) ......................
بلاک ۲ : (کلمه ۸ تا ۱۱) ........................
بلاک ۳ : (کلمه ۱۲ تا ۱۵) ......................

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

به این نکته توجه کن که اگه مثلا آدرس یعد از این یه چیزی بود که دوباره تو بلوک ۰ لود میشد ، دیگه آدرس های قبلی که داشتیم تو این بلوک همه از بین میرن و به ازای اونا miss خواهیم داشت.
حواست به این هم باشه که شماره ها از ۰ شروع میشه. یعنی اگه شماره کلمه ات در اومد ۳ این یعنی چهارمین کلمه و آخرین کلمه از بلوک.

یه کم توضیحش سخت بود با نوشتن. سعی کردم واضح توضیح بدم.

دوست عزیز از راهنماییت واقعا متشکرم TongueTongue

RE: نحوه تشخیص miss , hit (سازمان حافظه) - e.shrm - 03 دى ۱۳۹۲ ۱۰:۵۴ ب.ظ

(۰۳ دى ۱۳۹۲ ۱۰:۴۶ ب.ظ)alice نوشته شده توسط:  
(03 دى ۱۳۹۲ ۰۸:۳۳ ب.ظ)e.sharmi نوشته شده توسط:  

دوست عزیز از راهنماییت واقعا متشکرم TongueTongue

خواهش میکنم

RE: نحوه تشخیص miss , hit (سازمان حافظه) - soheila2012 - 04 دى ۱۳۹۲ ۱۲:۳۷ ق.ظ

خوش به حالت که متوجه شدی!!

RE: نحوه تشخیص miss , hit (سازمان حافظه) - bestgirl - 10 دى ۱۳۹۲ ۱۱:۲۹ ب.ظ

(۰۳ دى ۱۳۹۲ ۰۸:۳۳ ب.ظ)e.sharmi نوشته شده توسط:  
(03 دى ۱۳۹۲ ۰۷:۳۵ ب.ظ)alice نوشته شده توسط:  سلاااااااام دوستان عزیز
میشه یکی برام توضیح بده در تست پایین چجوری باید بفهمم کدوم آدرس miss و کدوم hit ؟؟؟؟ Exclamation


یک حافظه اصلی به بزرگی ۲۵۶K کلمه و یک حافظه نهان به بزرگی ۴ بلوک ۴ کلمه ای موجود است.روش نگاشت مستقیم استفاده می شود.با فرض خالی بودن cache ,نرخ برخورد در انتهای صدور آدرس های ذیل ( از چپ به راست ) از طرف پردازنده کدام است؟

۱۷۰,۲۵۷,۱۶۸,۲۴۶,۱۷۶,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۶,۱۷۵,۱۷۴,۱۷۳,۱۷۲,۱۷۱,​۱۷۰,۱۶۹,۱۶۸,۱۶۷,۱۶۸,۱۶۵,۱۶۴

کل حافظه اصلی قراره تو این ۴ تا بلاک قرار بگیره. هر بلاک هم که ۴ تا کلمه است.
بنابراین داریم :
بلاک ۰ : (کلمه ۰ تا ۳) (کلمه ۱۶ تا ۱۹)
بلاک ۱ : (کلمه ۴ تا ۷) ......................
بلاک ۲ : (کلمه ۸ تا ۱۱) ........................
بلاک ۳ : (کلمه ۱۲ تا ۱۵) ......................

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

به این نکته توجه کن که اگه مثلا آدرس یعد از این یه چیزی بود که دوباره تو بلوک ۰ لود میشد ، دیگه آدرس های قبلی که داشتیم تو این بلوک همه از بین میرن و به ازای اونا miss خواهیم داشت.
حواست به این هم باشه که شماره ها از ۰ شروع میشه. یعنی اگه شماره کلمه ات در اومد ۳ این یعنی چهارمین کلمه و آخرین کلمه از بلوک.

یه کم توضیحش سخت بود با نوشتن. سعی کردم واضح توضیح بدم.

خیلی قشنگ توضیح دادی مرسیییییییTongue

RE: نحوه تشخیص miss , hit (سازمان حافظه) - soheila2012 - 10 دى ۱۳۹۲ ۱۱:۵۴ ب.ظ

ای بابا پ چرا من متوجه نمیشم.

RE: نحوه تشخیص miss , hit (سازمان حافظه) - آنجلا - ۰۳ بهمن ۱۳۹۲ ۰۸:۱۰ ق.ظ

ببینید فلسفه این کارو باید بفهمید تا هر سوالی بهتون دادن راحت بدونید چه کار کنید: ما یه حافظه ی اصلی داریم یه دونه هم حافظه ی کش..هر بار باید بریم از حافظه اصلی یه خونه رو بیاریم بریزیم توی کش...شما اصل محلی بودن رو که میدونید: میگه ما الان با هر خونه ی حافظه سر و کار داشته باشیم تا چند لحظه ی دیگه به همجواراش نیاز پیدا میکنیم مثلا ما اگه الان با خونه ی ۰ حافظه کار داریم چند لحظه بعد به خونه ی ۱ و چند لحظه ی بعدتر به ۲ و .. نیاز خواهیم داشت..پس میایم چیکار میکنیم : میگیم ما که داریم خونه ی صفر رو میاریم چه کاریه! خونه های ۱ و ۲و ۳و ۴و ..و در واقع همجواراش رو هم میاریم که چند لحظه ی بعد که به ۱ کار داریم از قبل توی کش آورده بوده باشیم...حالا یه چیزی: نمیشه همینجوری ۰ رو آوردیم ۱و۲و۳و۴و۵و.. همه رو بیاریم که اصن جا نیس که بیاریم به همین خاطر باید تیکه تیکه یا همون توی معماری بهش میگن بلاک بلاک باید بیاریم..حالا این تیکه چقدره و کی سایزش رو تعیین میکنه ؟ جواب: کش...در واقع باید ببینید هر خونه ی کش یا همون هر بلاک کش چه تعداد کلمه جا میشه مثلا توی این مثال ۴تا ..پس میاین حافظه ی اصلی رو ۴ تا ۴ تا تیکه تیکش میکنی مثلا ۰و۱و۲و۳ توی تیکه یا همون بلاک ۰ ...۴و۵و۶و۷ توی بلاک ۱///۸و۹و۱۰و۱۱ توی بلاک ۲/// و الی آخر ..حالا یه چیز دیگه رو میخوام بگم: مثلا الان ۹ توی کدوم بلاکه و چندمین کلمه ی اون بلاکه؟ باید ۹ رو بر تعداد خونه ها یا همون تعداد بلاک های کش که ۴ تاست تقسیم کنید تا بفهمید توی تیکه چندم حافظه ی اصلیه و چندمین کلمه اش؟: ۹/۴=۲ و یه دونه هم باقیمانده میاره خارج قسمت همون شماره بلاک رونشون میده باقی موندش هم چندمین کلمه ی او ن بلاک بودن رو نشون میده مثلا اینجا ۹ کلمه ی دوم از بلاک شماره ۲ هست پس یه کلمه قبل از این و دو کلمه بعد از ۹ هم با هم تشکیل یه بلاک رو میدن و با هم میان میرن توی خونه ی دوم کش..پس واسه ۹ میس شد ولی اگه دور بعد به ۱۰ و ۱۱ نیاز داشته باشیم دیگه توی کش هستند و میس رخ نمیده بقیه ش که همون چیزایی که بالاتر مفصل دوستمون گفتن..نوشتنی نمیشه توضیح داد..