(۰۲ اسفند ۱۳۹۵ ۰۴:۲۴ ب.ظ)M a h d i نوشته شده توسط: در مثال کتاب ، چرا فیلد Tag برابر ۱۶ شد؟ تعداد کلمات حافظه 232 است و تعداد کلمات کش هم 214 است پس باید Tag برابر 32−14=18 بشه. ( طبق رابطه m-c در کتاب.)
و اما در تست گفته شده ، خودم با توجه به فرمت آدرس به جواب رسیدم اما با توضیحات تست ،مشکل دارم. اونجا که گفته شده " در هر آدرس دو کلمه جای می دهد." منظورش چیه؟
تشکر از دوستانی که پاسخ می دهند.
سلام(خواهشان از این به بعد تک سوال بگذارید)
پیشنهاد من اینه که:
برای حل این مدل سوالات شکل بکشید به نظرم که همه ی اتفاقی که توی حافظه میفته براتون تصویر سازی بشه
در مثال :
آدرس پردازنده ۳۲ بیت هست، یه مستطیل بلند ۳۲ بیتی بکشید.
نوع نگاشت مستقیم و کش ۶۴k هست با تعدادی
بلاک،که در اینجا گفته هر بلاک یک کلمه و هر کلمه ۴ بایت است.چرا؟!
من اینجا مفهوم بلاک رو روشون کنم :
این بلاک یعنی این که شما یه فضای خالی از کش داری که داخلش چند تا خونه هست، یا گاهی یه دونه خونه یا گاهی چند تا واحد آدرس پذیر، واحد آدرش پذیرم که گاهی در سوالات بیان میشه یعنی این که مثلا به ازای هر واحد یه دونه آدرس تولید کنیم
حالا سوال اینه که چند تا از این بلاکا داری؟ باید اندازه کش رو تقسیم بر چهار کنید که میشه ۱۶ تا، حالا داخل هر یک از این ۱۶ تا ۴ تا بایته که بالا توضیحش دادیم.
حالا با توجه به نوع نگاشت مستطیلی رو که برای اون ۳۲ بیت کشیدیم جدا جدا کنیم :
اولا برای اون ۴ باید اول یه ۲ بیت میخوایم که از ۳۲ بیته جداش میکنیم، یه کم دیگه میایم جلو یه دونه ۱۶ کیلویی داریم (دقت کنید که ۱۶k خط داریم که باید بهش آدرس بدیم) که میشه :
16k=16×210=214 خب یعنی ۲ به توان ۱۴ تا خط،(قبلا هم گفتیم داخل هر خط ۴ تا بایته){حالا پوران باید میگفت اون چهار تا خط آدرس پذیره!!!}
این ۱۴ بیتم از اون مستطیل ۳۲ بیتی جدا کن ، بعدش با توجه به نوع نگاشتت که مستقیمه ۳۲ بیت برای tag داری.
اینم عرض کنم که با فرض بر عدم وجود آفست هم میشه مقدار tag رو محاسبه کرد