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

یک مثال و یک تست تالیفی از فصل حافظه پوران - M a h d i - 02 اسفند ۱۳۹۵ ۰۴:۲۴ ب.ظ

در مثال کتاب ، چرا فیلد Tag برابر ۱۶ شد؟ تعداد کلمات حافظه [tex]2^{32}[/tex] است و تعداد کلمات کش هم [tex]2^{14}[/tex] است پس باید Tag برابر [tex]32-14=18[/tex] بشه. ( طبق رابطه m-c در کتاب.)

و اما در تست گفته شده ، خودم با توجه به فرمت آدرس به جواب رسیدم اما با توضیحات تست ،مشکل دارم. اونجا که گفته شده " در هر آدرس دو کلمه جای می دهد." منظورش چیه؟

تشکر از دوستانی که پاسخ می دهند.

RE: یک مثال و یک تست تالیفی از فصل حافظه پوران - msour44 - 06 اسفند ۱۳۹۵ ۰۸:۱۳ ب.ظ

سلام
در مورد مثال لزوما فرمت ادرس سه بخشی نیست بلکه می تونه فیلد چهارمی تحت عنوان byte offset برای ادرسی دهی بایت های داخل کلمه استفاده می شود البته اگر ماشین چنین قابلیتی داشته باشد.این مثال هم درمورد همین موضوع است و اون ۲ اضافه شده مربوط به بایت افست که در مثال گفته در هر کلمه ۴ بایت وجود دارد.
در مورد تست از فرمت نگاشت ادرس هم مشخص است که در k-way set associative هر kکلمه مقدار فیلد word یکسانی دارند.فیلد set مجموعه رو مشخص می کنه ولی داخل این مجموعه k تا بلوک وجود داره که کلمات متناظر داخل هر بلوک یک word offset یکسان دارند.

RE: یک مثال و یک تست تالیفی از فصل حافظه پوران - M a h d i - 06 اسفند ۱۳۹۵ ۰۹:۴۳ ب.ظ

(۰۶ اسفند ۱۳۹۵ ۰۸:۱۳ ب.ظ)msour44 نوشته شده توسط:  سلام
در مورد مثال لزوما فرمت ادرس سه بخشی نیست بلکه می تونه فیلد چهارمی تحت عنوان byte offset برای ادرسی دهی بایت های داخل کلمه استفاده می شود البته اگر ماشین چنین قابلیتی داشته باشد.این مثال هم درمورد همین موضوع است و اون ۲ اضافه شده مربوط به بایت افست که در مثال گفته در هر کلمه ۴ بایت وجود دارد.
در مورد تست از فرمت نگاشت ادرس هم مشخص است که در k-way set associative هر kکلمه مقدار فیلد word یکسانی دارند.فیلد set مجموعه رو مشخص می کنه ولی داخل این مجموعه k تا بلوک وجود داره که کلمات متناظر داخل هر بلوک یک word offset یکسان دارند.

سلام و ممنون
روی قسمت دوم جوابتون نزدیک نیم ساعت فکر کردم تا متوجه شدم چی به چیه Smile

RE: یک مثال و یک تست تالیفی از فصل حافظه پوران - Saman - 11 اسفند ۱۳۹۵ ۱۰:۰۷ ق.ظ

(۰۲ اسفند ۱۳۹۵ ۰۴:۲۴ ب.ظ)M a h d i نوشته شده توسط:  در مثال کتاب ، چرا فیلد Tag برابر ۱۶ شد؟ تعداد کلمات حافظه [tex]2^{32}[/tex] است و تعداد کلمات کش هم [tex]2^{14}[/tex] است پس باید Tag برابر [tex]32-14=18[/tex] بشه. ( طبق رابطه m-c در کتاب.)

و اما در تست گفته شده ، خودم با توجه به فرمت آدرس به جواب رسیدم اما با توضیحات تست ،مشکل دارم. اونجا که گفته شده " در هر آدرس دو کلمه جای می دهد." منظورش چیه؟

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

در مثال :
آدرس پردازنده ۳۲ بیت هست، یه مستطیل بلند ۳۲ بیتی بکشید.
نوع نگاشت مستقیم و کش ۶۴k هست با تعدادی بلاک،که در اینجا گفته هر بلاک یک کلمه و هر کلمه ۴ بایت است.چرا؟!

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

حالا سوال اینه که چند تا از این بلاکا داری؟ باید اندازه کش رو تقسیم بر چهار کنید که میشه ۱۶ تا، حالا داخل هر یک از این ۱۶ تا ۴ تا بایته که بالا توضیحش دادیم.
حالا با توجه به نوع نگاشت مستطیلی رو که برای اون ۳۲ بیت کشیدیم جدا جدا کنیم :
اولا برای اون ۴ باید اول یه ۲ بیت میخوایم که از ۳۲ بیته جداش میکنیم، یه کم دیگه میایم جلو یه دونه ۱۶ کیلویی داریم (دقت کنید که ۱۶k خط داریم که باید بهش آدرس بدیم) که میشه : [tex]16k=16\times2^{10}=2^{14}[/tex] خب یعنی ۲ به توان ۱۴ تا خط،(قبلا هم گفتیم داخل هر خط ۴ تا بایته){حالا پوران باید میگفت اون چهار تا خط آدرس پذیره!!!}
این ۱۴ بیتم از اون مستطیل ۳۲ بیتی جدا کن ، بعدش با توجه به نوع نگاشتت که مستقیمه ۳۲ بیت برای tag داری.

اینم عرض کنم که با فرض بر عدم وجود آفست هم میشه مقدار tag رو محاسبه کرد

RE: یک مثال و یک تست تالیفی از فصل حافظه پوران - msour44 - 11 اسفند ۱۳۹۵ ۱۲:۱۵ ب.ظ

(۱۱ اسفند ۱۳۹۵ ۱۰:۰۷ ق.ظ)samanbeigmiri نوشته شده توسط:  
(02 اسفند ۱۳۹۵ ۰۴:۲۴ ب.ظ)M a h d i نوشته شده توسط:  در مثال کتاب ، چرا فیلد Tag برابر ۱۶ شد؟ تعداد کلمات حافظه [tex]2^{32}[/tex] است و تعداد کلمات کش هم [tex]2^{14}[/tex] است پس باید Tag برابر [tex]32-14=18[/tex] بشه. ( طبق رابطه m-c در کتاب.)

و اما در تست گفته شده ، خودم با توجه به فرمت آدرس به جواب رسیدم اما با توضیحات تست ،مشکل دارم. اونجا که گفته شده " در هر آدرس دو کلمه جای می دهد." منظورش چیه؟

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

در مثال :
آدرس پردازنده ۳۲ بیت هست، یه مستطیل بلند ۳۲ بیتی بکشید.
نوع نگاشت مستقیم و کش ۶۴k هست با تعدادی بلاک،که در اینجا گفته هر بلاک یک کلمه و هر کلمه ۴ بایت است.چرا؟!

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

حالا سوال اینه که چند تا از این بلاکا داری؟ باید اندازه کش رو تقسیم بر چهار کنید که میشه ۱۶ تا، حالا داخل هر یک از این ۱۶ تا ۴ تا بایته که بالا توضیحش دادیم.
حالا با توجه به نوع نگاشت مستطیلی رو که برای اون ۳۲ بیت کشیدیم جدا جدا کنیم :
اولا برای اون ۴ باید اول یه ۲ بیت میخوایم که از ۳۲ بیته جداش میکنیم، یه کم دیگه میایم جلو یه دونه ۱۶ کیلویی داریم (دقت کنید که ۱۶k خط داریم که باید بهش آدرس بدیم) که میشه : [tex]16k=16\times2^{10}=2^{14}[/tex] خب یعنی ۲ به توان ۱۴ تا خط،(قبلا هم گفتیم داخل هر خط ۴ تا بایته){حالا پوران باید میگفت اون چهار تا خط آدرس پذیره!!!}
این ۱۴ بیتم از اون مستطیل ۳۲ بیتی جدا کن ، بعدش با توجه به نوع نگاشتت که مستقیمه ۳۲ بیت برای tag داری.

اینم عرض کنم که با فرض بر عدم وجود آفست هم میشه مقدار tag رو محاسبه کرد
سلام
ببخشید اینکه داخل اکولاد گفتید که حالا پوران باید می گفت اون چهار تا خط ادرس پذیره مگه تمام خطوط کش ادرس پذیر نیستن؟ یا منظورشما ۴ تا بایته داخل هر خط؟

RE: یک مثال و یک تست تالیفی از فصل حافظه پوران - Saman - 11 اسفند ۱۳۹۵ ۱۲:۲۹ ب.ظ

بله همون چهار تا بایت داخل هر خط،
حالا من برای روشن شدن موضوع اینو میگم، وگرنه در اصل ۲ بیت اشاره گر به اون ۴ بایت داریم
خظوط کش هم که همه آدرس پذیرن دیگه