تالار گفتمان مانشت

نسخه‌ی کامل: سوال از حافظه ی مجازی
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
با عرض سلام
من فصل حافظه ی کتاب مدرسان رو چند بار خوندم. فیلم های آقای گودرزی رو هم از دانشگاه شریف دیدم. ولی متوجه نشدم قسمت Data در حافظه ی مجازی چه جوری محاسبه می شه. مثلا توی مدرسان گفته که حافظه ی ۶۴k * 16 داریم. پس یعنی ۶۴k کلمه ی ۱۶ بیتی، یعنی قسمت Data می شه ۱۶ بیت. ولی اگه بر اساس گفته های آقای گودرزی بخوایم حساب کنیم، چون در هر بلوک (خط) حافظه ی نهان ۴ کلمه داریم، و هر کلمه ۱۶ بیت هست، پس قسمت Data می شه ۴ * ۱۶ بیت نه ۱۶بیت . می شه لطفا راهنمایی بفرمایید.
با تشکر
(02 اسفند 1395 11:33 ق.ظ)alimamala نوشته شده توسط: [ -> ]با عرض سلام
من فصل حافظه ی کتاب مدرسان رو چند بار خوندم. فیلم های آقای گودرزی رو هم از دانشگاه شریف دیدم. ولی متوجه نشدم قسمت Data در حافظه ی مجازی چه جوری محاسبه می شه. مثلا توی مدرسان گفته که حافظه ی ۶۴k * 16 داریم. پس یعنی ۶۴k کلمه ی ۱۶ بیتی، یعنی قسمت Data می شه ۱۶ بیت. ولی اگه بر اساس گفته های آقای گودرزی بخوایم حساب کنیم، چون در هر بلوک (خط) حافظه ی نهان ۴ کلمه داریم، و هر کلمه ۱۶ بیت هست، پس قسمت Data می شه ۴ * ۱۶ بیت نه ۱۶بیت . می شه لطفا راهنمایی بفرمایید.
با تشکر
محاسبه قسمت data در کش در تصویری که گذاشته اید درست است ، وقتی میگه حافظه اصلی ۶۴k کلمه ی ۱۶ بیتی، یعنی 1 - هر کلمه 16 بیت، یعنی 2 بایت هست 2 - ما هر بار که به حافظه اصلی آدرس میدیم دوبایت میخونیم ( چیزی که میاریم توی کش بعنوان بخش دیتا هم ذخیره می کنیم برای مراجعات بعدی هم ، قاعدتا کلمه حافظه هست) بنابراین هر وقت گفته میشه بخش دیتای کش چند بیت هست ، منظور اینه که هر کلمه حافظه چند بیت است
امیدوارم تونسته باشم درست مفهوم رو برسونم
یعنی تفاوت نداره توی هر بلوک کش چند کلنه قرار می گیره ؟
توی این مثال می گه ۲ بیت برای Byte Offset داریم، یعنی ۴ بایت و هر بایت ۸ بیت، پس بخش Data می شه ۳۲ بیت. حال از این روش بخوایم برای مثال قبل بریم می شه ۴ کلمه و هر کلمه ۱۶ بیت یعنی ۴*۱۶ بیت. اشتباه می گم ؟
(02 اسفند 1395 01:33 ب.ظ)alimamala نوشته شده توسط: [ -> ]یعنی تفاوت نداره توی هر بلوک کش چند کلنه قرار می گیره ؟
توی این مثال می گه ۲ بیت برای Byte Offset داریم، یعنی ۴ بایت و هر بایت ۸ بیت، پس بخش Data می شه ۳۲ بیت. حال از این روش بخوایم برای مثال قبل بریم می شه ۴ کلمه و هر کلمه ۱۶ بیت یعنی ۴*۱۶ بیت. اشتباه می گم ؟
ببینید ما میتونیم به کلمه آدرس بدیم یا به بایت های یه کلمه آدرس بدیم.
این نکته ای که عرض کردم برای همه حالت ها جواب میده ، توی این مثال هم وقتی میگه ۲ بیت برای Byte Offset داریم یعنی ما اینجا به جای اینکه به کلمه حافظه آدرس بدیم به بایتهای هر کلمه آدرس میدیم ، چون گفته 2 بیت پس نتیجه می گیریم هر کلمه حافظه 4 بایت ( با دو بیت میشه چهار بایت رو آدرس داد ) بنابراین قسمت دیتای کش میشه 32 بیت ، شما همیشه اینجوری در نظر بگیر که ما همیشه وقتی میس رخ میده بلاک حاوی کلمه مد نظر ( که شامل کلمه آدرس داده شده و کلمات دیگری هست) رو به داخل کش میاریم حالا تو این مورد ما به بایتهای یه کلمه آدرس میدیم و بلاک حاوی کلمه بایت آدرس داده شده به داخل کش میاد ، شما همیشه در نظر داشته باشید که سایز هر کلمه حافظه با هر کلمه کش برابر است و همچنین سایز هر بلاک حافظه با هر لاین کش
بسیار سپاسگزارم دوست عزیز. خیلی خوب توضیح دادین. تشکر
لینک مرجع