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

سازمان حافظه - haamidit - 05 آبان ۱۳۹۱ ۰۱:۰۷ ب.ظ

باسلام
کسی میتونه توحل این مساله بم کمک کنه از رو پوران پژوهش حلشا دیدم ولی چیزی نفهمیدم Huh
یک حافظه کش دستو رباگنجایش ۲۵۶ بایت رادرنظربگیرید که هربلوک آن حاوی یک کلمه ۳۲بیتی است. فرض کنید یک حلقه حاوی ۶۵دستور متوالی برای ۳باراجرا میشود. بافرض این که حافظه کش در شروع کارخالی باشد. HIT RATE دردوحالت زیر چقدر است؟
(هردستور۳۲بیت است)
۱/اگرکش ازdirct mapاستفاده کند
۲/اگر کش به صورت fully associative باسیاست جایگزینی LRUباشد

RE: سازمان حافظه - masoud.bala - 06 آبان ۱۳۹۱ ۰۵:۳۴ ب.ظ

(۰۶ آبان ۱۳۹۱ ۰۴:۲۶ ب.ظ)Andrew S.Tanenbaum نوشته شده توسط:  با سلام.
ببینید دوست من:
ما ۲۵۶ بایت کش داریم.هر بلوک هم ۴بایت جا میگیره.پس ۲۵۶/۴=۶۴ بلوک داریم.یه نکته ای که تو اغلب سوالات گفته نمیشه اینه که معلوم نیس آدرس دهی در چه سطحی عنوان شده.مثلا در سطح بایت یا کلمه یا....این نکته رو حتی پترسون به عنوان لغزشگاه گفته.
ما اینجا آدرس دهی رو در سطح کلمه در نظر میگیریم.سوال گفته ۶۵ دستور عمل،این یعنی ۶۵ تا دسترسی به کش،یا همون آدرس دهی.پس ۶۵ تا آدرس داری که به کش نگاشت شده و هر ادرس یک کلمه رو نشون میده.در مقابل ۶۴ بلاک داری واسه کل آدرس ها.نتیجه اینکه تعداد بلاک ها از تعداد آدرس هات یکی کمتره.
در نگاشت مستقیم،آدرس اول(کلمه اول) به بلاک اول(کلمه اول در کش) نگاشته میشه.چون کش خالیه پس فقدان رخ داده و یک بلوک از حافظه اصلی به کش منتقل میشه.این بلوک حاوی یک کلمه س.یعنی خود همون کلمه وارد کش میشه و اتفاق خاصی نمیافته.آدرس دوم هم به همین صورت.....تا برسیم به آدرس ۶۵/این آدرس به بلاک اول نگاشت میشه.چون ۶۵ باقیمانده ش بر ۶۴ میشه ۱/پس کلمه اول که جا خوش کرده بود رو بیرون میندازیم.
حالا یکبار دیگه آدرس ها شروع میشه طبق صورت سوال.ادرس اول به بلاک اول نگاشت میشه.یعنی باید ۶۵ رو بندازی بیرون.ادرس دوم در کش موجوده.پس کاریش نداریم.تا برسیم به آدرس اخر یعنی ۶۵/این آدرس در کش موجود نیس،پس ۱ رو میندازه بیرون.
واسه سری اخر آدرس ها هم همین شکل سری دوم اتفاق میافته.
ما ۳*۶۵ دسترسی به حافظه داشتیم.ازین تعداد ۶۵ تای اول همش میس بود.از سری دوم و سوم هر کدوم ۲تا میس داشتیم.یعنی رو هم میشه ۶۹ تا میس.سری اول هیچی برخورد نداشتیم.سری دوم و سوم هرکدوم ۶۳ تا.یعنی میشه ۱۲۶ تا.
۱۲۶/۱۹۵=۴۲/۶۵
واسه نگاشت انجمنی،در سری اول آدرس اول داخل بلوک اول(اولین بلوک خالی)،و.....تا برسیم به آدرس ۶۵/این آدرس به یک نگاشت میشه.چرا؟؟؟چون تو کلمات کش،کلمه اولی قبل از همه بهش مراجعه داشتیم و تا الان کاری باهاش نداشتیم.پس طبق الگوریتم LRU باید بندازیش بیرون.
سری دوم،آدرس اول به بلاک ۲ نگاشت میشه،طبق همون دلیل و الگوریتم بالا و.....یعنی هر ادرس میاد بلوک به شماره یکی بزرگتر از خودشو خالی میکنه و خودشو جا میده.تا برسیم به ادرس اخر،یعنی ۶۵/این آدرس میاد بلاک دو رو خالی میکنه.چون کمترین استفاده رو داشته.
سری سوم.ادرس اول به بلاک ۳ نگاشت میشه.چون کمترین استفاده رو داشته.ادرس دو به بلاک ۴ و..تا اخر...
یعنی تو تمام مراجعات هیچی هیت نداشتیم و همش میس بود.پس هیت=۰/


موفق باشی.


سلام و با تشکر از پاسخت اما سوال من اینه که از کجا فهمیدی هر بلوک ۴ بایت جا میگیره توضیحت فوق العاده بود واسه hit دوباره بگو میس را فهمیدم که در سری دوم و سوم مشکل ما فقط ۶۵ و ۱ هست درست می گم بعنی در سری دوم ۲ بار و سری سوم هم ۲ بار فقط hit رو مثل میس بگی عالی می شه

RE: سازمان حافظه - masoud.bala - 07 آبان ۱۳۹۱ ۰۹:۲۲ ب.ظ

(۰۶ آبان ۱۳۹۱ ۰۸:۵۸ ب.ظ)Andrew S.Tanenbaum نوشته شده توسط:  سلام.ببینید صورت سوال گفته هر بلوک یک کلمه ۳۲ بیتی جا میگیره.خب ۳۲ بیت میشه ۴ بایت دیگهSmileSmileSmile
کجای هیت رو متوجه نشدی؟


دستت درد نکنه اگه می شه این تبدیلات بیت به بایت را بگی ممنون می شم تا مگابایت اگه می شه مرسیییییییییییییی

RE: سازمان حافظه - haamidit - 07 آبان ۱۳۹۱ ۱۰:۴۵ ب.ظ

Andrew S.Tanenbaum'
دمت گرم عالی بود

سازمان حافظه - csharpisatechnology - 17 آبان ۱۳۹۱ ۰۴:۰۰ ق.ظ

جناب تننباوم جان کاش می گفتی عدد ۴۲ این وسط از کجا پیدا شد و همینطوری تناسب رو نمی نوشتی:
==
x/65=125/195=> x=42
===============
در هر صورت کارت عالی بود و خدا شما رو از ما نگیره.WinkHeart