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

سوال از حافظه ی مجازی - ali.majed.ha - 02 اسفند ۱۳۹۵ ۱۱:۳۳ ق.ظ

با عرض سلام
من فصل حافظه ی کتاب مدرسان رو چند بار خوندم. فیلم های آقای گودرزی رو هم از دانشگاه شریف دیدم. ولی متوجه نشدم قسمت Data در حافظه ی مجازی چه جوری محاسبه می شه. مثلا توی مدرسان گفته که حافظه ی ۶۴k * 16 داریم. پس یعنی ۶۴k کلمه ی ۱۶ بیتی، یعنی قسمت Data می شه ۱۶ بیت. ولی اگه بر اساس گفته های آقای گودرزی بخوایم حساب کنیم، چون در هر بلوک (خط) حافظه ی نهان ۴ کلمه داریم، و هر کلمه ۱۶ بیت هست، پس قسمت Data می شه ۴ * ۱۶ بیت نه ۱۶بیت . می شه لطفا راهنمایی بفرمایید.
با تشکر

RE: سوال از حافظه ی مجازی - hasanmousavi - 02 اسفند ۱۳۹۵ ۰۱:۲۰ ب.ظ

(۰۲ اسفند ۱۳۹۵ ۱۱:۳۳ ق.ظ)alimamala نوشته شده توسط:  با عرض سلام
من فصل حافظه ی کتاب مدرسان رو چند بار خوندم. فیلم های آقای گودرزی رو هم از دانشگاه شریف دیدم. ولی متوجه نشدم قسمت Data در حافظه ی مجازی چه جوری محاسبه می شه. مثلا توی مدرسان گفته که حافظه ی ۶۴k * 16 داریم. پس یعنی ۶۴k کلمه ی ۱۶ بیتی، یعنی قسمت Data می شه ۱۶ بیت. ولی اگه بر اساس گفته های آقای گودرزی بخوایم حساب کنیم، چون در هر بلوک (خط) حافظه ی نهان ۴ کلمه داریم، و هر کلمه ۱۶ بیت هست، پس قسمت Data می شه ۴ * ۱۶ بیت نه ۱۶بیت . می شه لطفا راهنمایی بفرمایید.
با تشکر
محاسبه قسمت data در کش در تصویری که گذاشته اید درست است ، وقتی میگه حافظه اصلی ۶۴k کلمه ی ۱۶ بیتی، یعنی ۱ - هر کلمه ۱۶ بیت، یعنی ۲ بایت هست ۲ - ما هر بار که به حافظه اصلی آدرس میدیم دوبایت میخونیم ( چیزی که میاریم توی کش بعنوان بخش دیتا هم ذخیره می کنیم برای مراجعات بعدی هم ، قاعدتا کلمه حافظه هست) بنابراین هر وقت گفته میشه بخش دیتای کش چند بیت هست ، منظور اینه که هر کلمه حافظه چند بیت است
امیدوارم تونسته باشم درست مفهوم رو برسونم

RE: سوال از حافظه ی مجازی - ali.majed.ha - 02 اسفند ۱۳۹۵ ۰۱:۳۳ ب.ظ

یعنی تفاوت نداره توی هر بلوک کش چند کلنه قرار می گیره ؟
توی این مثال می گه ۲ بیت برای Byte Offset داریم، یعنی ۴ بایت و هر بایت ۸ بیت، پس بخش Data می شه ۳۲ بیت. حال از این روش بخوایم برای مثال قبل بریم می شه ۴ کلمه و هر کلمه ۱۶ بیت یعنی ۴*۱۶ بیت. اشتباه می گم ؟

RE: سوال از حافظه ی مجازی - hasanmousavi - 02 اسفند ۱۳۹۵ ۰۲:۰۵ ب.ظ

(۰۲ اسفند ۱۳۹۵ ۰۱:۳۳ ب.ظ)alimamala نوشته شده توسط:  یعنی تفاوت نداره توی هر بلوک کش چند کلنه قرار می گیره ؟
توی این مثال می گه ۲ بیت برای Byte Offset داریم، یعنی ۴ بایت و هر بایت ۸ بیت، پس بخش Data می شه ۳۲ بیت. حال از این روش بخوایم برای مثال قبل بریم می شه ۴ کلمه و هر کلمه ۱۶ بیت یعنی ۴*۱۶ بیت. اشتباه می گم ؟
ببینید ما میتونیم به کلمه آدرس بدیم یا به بایت های یه کلمه آدرس بدیم.
این نکته ای که عرض کردم برای همه حالت ها جواب میده ، توی این مثال هم وقتی میگه ۲ بیت برای Byte Offset داریم یعنی ما اینجا به جای اینکه به کلمه حافظه آدرس بدیم به بایتهای هر کلمه آدرس میدیم ، چون گفته ۲ بیت پس نتیجه می گیریم هر کلمه حافظه ۴ بایت ( با دو بیت میشه چهار بایت رو آدرس داد ) بنابراین قسمت دیتای کش میشه ۳۲ بیت ، شما همیشه اینجوری در نظر بگیر که ما همیشه وقتی میس رخ میده بلاک حاوی کلمه مد نظر ( که شامل کلمه آدرس داده شده و کلمات دیگری هست) رو به داخل کش میاریم حالا تو این مورد ما به بایتهای یه کلمه آدرس میدیم و بلاک حاوی کلمه بایت آدرس داده شده به داخل کش میاد ، شما همیشه در نظر داشته باشید که سایز هر کلمه حافظه با هر کلمه کش برابر است و همچنین سایز هر بلاک حافظه با هر لاین کش

RE: سوال از حافظه ی مجازی - ali.majed.ha - 02 اسفند ۱۳۹۵ ۰۲:۰۹ ب.ظ

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