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

نگاشت مستقیم - ابراهیم۱ - ۱۳ دى ۱۳۹۱ ۰۵:۴۶ ب.ظ

سلام خسته نباشین
مهندسی کامپیوتر ۸۱
یک حافظه اصلی به بزرگیk 256 کلمه ویک حافظه نهان (cash) به بزرگی ۴ بلوک ۴کلمه ای موجود است از روش نگاشت مستقیم استفاده می شود با فرض خالی بودن cash نرخ برخورد در انتهای صدور ادرسهای زیر چیست؟
(شروع)
۱۷۰,۲۵۷,۱۶۸,۲۴۶,۱۷۶,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۵,۱۷۶,۱۷۷,۱۷۶,۱۷۵,۱۷۴,۱۷۳,۱۷۲,۱۷۱,​۱۷۰,۱۶۹,۱۶۸,۱۶۷,۱۶۸,۱۶۵,۱۶۴
۱)۲۷/۲۱ ۲)۲۷/۲۰ ۳)۲۷/۱۰ ۴)۲۷/۹ (جواب گزینه ۱)
مگه در نگاشت مستقیم ما ادرسها را اینطوری نگاشت نمی کنیم
I :ادرس حافظه اصلی
I mod تعداد بلاک کش=I mod 4
پس چرا پوران ان را۱۶ I mod در نظر گرفته؟؟؟؟؟؟؟؟؟؟؟؟
ممنون موفق باشین

نگاشت مستقیم - armin_b00ter - 14 دى ۱۳۹۱ ۰۱:۱۶ ق.ظ

مطمئن نیستم دارم درست می گم یا نه. ولی فکر می کنم به خاطر اینکه آدرس های داده شده بر حسب شماره ی کلمات داده شده نه شماره بلاک بنابراین اول باید بینیم چه شماره ای بین ۰ تا ۱۵ می گیره و بعد بر اساس اون تصمیم بگیریم کدوم بلاک را وارد کش کنیم. مثلا ۱۷۰ میشه ۱۰ که جز بلاک ۳ میشه بنابراین آدرس های ۱۶۸ ۱۶۹ ۱۷۰ ۱۷۱ رو وارد خونه های ۸ ۹ ۱۰ ۱۱ کش می کنیم. امیدوارم توضیحاتم کافی بوده باشه.

RE: نگاشت مستقیم - mp1368 - 14 دى ۱۳۹۱ ۰۱:۱۹ ق.ظ

سلام .

ببین این که پوران با چه سیستمی حل کرده زیاد مهم نیست اگه خودت بلدی که از همین روش دو مرحله ای استفاده کنی دیگه مهم نیست پوران چکار کرده . من ابتدا روش معمولی خودمون رو با مثال توضیح میدم بعد روش پوران رو هم بررسی میکنیم .

برای خونه ۱۷۰ مثال میزنیم :
الف ) اول تقسیم ۱۷۰ رو بر ۴ میگیریم تا به بلاک حاوی این بایت توی حافظه اصلی برسیم سپس باقیمانده میگیریم تا به شماره خونه اون برسیم
[tex]170$ div 4 = 42[/tex]
[tex]170$ mod 4 = 2[/tex]
خونه ی ۱۷۰ توی بلاک ۴۲ و خونه ی سوم این بلاک هستش (از ۰ شروع میشه خونه های هر بلاک)
حالا باید ببینیم این بلاک حافظه که حاوی خونه ی ۱۷۰ هستش به کجای کش نگاشت میشه . باقیمانده بلاک به تعداد بلاک های کش :

[tex]42$ mod 4 = 2[/tex]

خب پس بلاک ۴۲ به بلاک سوم کش نگاشت میشه (بلاک های کش از ۰ شروع میشون ) و چون خونه ۱۷۰ خودش سومین خونه ی بلاک بود پس در مجموع میشه خونه ی ۱۰ حافظه کش

[attachment=8711]

حالا اگه بخوایم روی روش پوران کار کنیم : این اومده دیگه این روال دو مرحله ای ما رو پیش نبرده یعنی ابتدا بلوک حافظه ی اصلی رو پیدا کنه و سپس مکان این بلوک رو توی کش پیدا کنه بلکه مستقیم این دو روال رو با تقسیم عدد به ۱۶ پیدا کرده عکس زیر رو ببین

[attachment=8710]

پ.ن : واقعا انتقال مفهموم این سوال در قالب متن خیلی سخت بود اگه جایی ابهام داشتی بگو بیشتر توضیح بدم