تالار گفتمان مانشت
تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - نسخه‌ی قابل چاپ

تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - masoud67 - 14 بهمن ۱۳۹۲ ۱۰:۲۹ ق.ظ

سلام
من این جملات را میگم ببینید کدومش غلطه و بهم بگید
اینجا منظورم از بیت تگ ، تعداد بیت Tag در فیلد آدرس نیست ، بلکه تعداد فیلدهای تگی هست که در کش ذخیره میشه

۱/ توی نگاشت مستقیم direct ما به ازای هر بلوک (که میتونه شامل چند کلمه باشه) یک فیلد تگ و یک بیت اعتبار داریم (فرض کنید همین یه دونه بیت کنترلی باشه)
۲/ توی نگاشت کاملا شرکت پذیر fully باز هم به ازای هر بلوک یک فیلد تگ و یک بیت اعتبار داریم
۳/ توی نگاشت مجموعه ای set ، به ازای هر مجموعه چند تا بلاک داریم و به ازای هر بلاک یک فیلد تگ و یک بیت اعتبار داریم

۴/ پس با این اوصاف اگر در سه نگاشت بالا که تعداد کلمات داخل هر بلاک یکسان باشه ، تعداد فیلد تگ و اعتبار ذخیره شده در کش (نه تعداد بیت برای آدرس دهی آنها) برای هر سه مورد یکی میشه

مثلا در کش مستقیم که حاوی ۶۴ بلوک هست، حداکثر میتونه ۶۴ فیلد تگ و ۶۴ فیلد اعتبار ذخیره کنه

آیا این جملاتی که گفتم درسته ؟

RE: تعداد بیت تگ و اعتبار کدام نگاشت بیشتر است ؟ - e.shrm - 14 بهمن ۱۳۹۲ ۱۰:۴۰ ق.ظ

(۱۴ بهمن ۱۳۹۲ ۱۰:۲۹ ق.ظ)masoud67 نوشته شده توسط:  سلام
من این جملات را میگم ببینید کدومش غلطه و بهم بگید

۱/ توی نگاشت مستقیم ما به ازای هر بلوک (که میتونه شامل چند کلمه باشه) یک فیلد تگ و یک بیت اعتبار داریم (فرض کنید همین یه دونه بیت کنترلی باشه)
۲/ توی نگاشت کاملا شرکت پذیر باز هم به ازای هر بلوک یک فیلد تگ و یک بیت اعتبار داریم
۳/ توی نگاشت مجموعه ای ، به ازای هر مجموعه چند تا بلاک داریم و به ازای هر بلاک یک فیلد تگ و یک بیت اعتبار داریم

۴/ پس با این اوصاف اگر در سه نگاشت بالا که تعداد کلمات داخل هر بلاک یکسان باشه ، تعداد بیت تگ و اعتبار برای هر سه مورد یکی میشه

آیا این جملاتی که گفتم درسته ؟
یه ساعت دارم فکر میکنم "نگاشت کاملا شرکت پذیر باز" چیه که تا حالا ندیدم! ترجمه جالبی بود !
کلا یه موردی رو باید حواسمون باشه اینکه بلاک که میگیم منظورمون بلاکه حافظه اصلیه با بلاک cache .
کلا به تعداد لگاریتم تعداد بلوک حافظه اصلی بیت تگ داریم فکر میکنم.
در مورد حالت سوم ، باید حواسمون باشه که بیت تگ + بیت set با هم میشن به اندازه لگاریتم تعداد بلوک حافظه اصلی

RE: تعداد بیت تگ و اعتبار کدام نگاشت بیشتر است ؟ - unicornux - 14 بهمن ۱۳۹۲ ۱۰:۵۵ ق.ظ

(۱۴ بهمن ۱۳۹۲ ۱۰:۲۹ ق.ظ)masoud67 نوشته شده توسط:  سلام
من این جملات را میگم ببینید کدومش غلطه و بهم بگید
اینجا منظورم از بیت تگ ، تعداد بیت Tag در فیلد آدرس نیست ، بلکه تعداد فیلدهای تگی هست که در کش ذخیره میشه

۱/ توی نگاشت مستقیم ما به ازای هر بلوک (که میتونه شامل چند کلمه باشه) یک فیلد تگ و یک بیت اعتبار داریم (فرض کنید همین یه دونه بیت کنترلی باشه)
۲/ توی نگاشت کاملا شرکت پذیر باز هم به ازای هر بلوک یک فیلد تگ و یک بیت اعتبار داریم
۳/ توی نگاشت مجموعه ای ، به ازای هر مجموعه چند تا بلاک داریم و به ازای هر بلاک یک فیلد تگ و یک بیت اعتبار داریم

۴/ پس با این اوصاف اگر در سه نگاشت بالا که تعداد کلمات داخل هر بلاک یکسان باشه ، تعداد بیت تگ و اعتبار برای هر سه مورد یکی میشه

آیا این جملاتی که گفتم درسته ؟

تعداد بیت اعتبار که همیشه ۱ پس کلا مهم نیست. در واقع سوالت اینه که " آیا با تعداد یکسان بلاک در یک کش تعداد بیت های tag یکسانه؟ " ؟

RE: تعداد بیت تگ و اعتبار کدام نگاشت بیشتر است ؟ - masoud67 - 14 بهمن ۱۳۹۲ ۱۱:۰۲ ق.ظ

(۱۴ بهمن ۱۳۹۲ ۱۰:۴۰ ق.ظ)e.sharmi نوشته شده توسط:  یه ساعت دارم فکر میکنم "نگاشت کاملا شرکت پذیر باز" چیه که تا حالا ندیدم! ترجمه جالبی بود !
کلا یه موردی رو باید حواسمون باشه اینکه بلاک که میگیم منظورمون بلاکه حافظه اصلیه با بلاک cache .
کلا به تعداد لگاریتم تعداد بلوک حافظه اصلی بیت تگ داریم فکر میکنم.
در مورد حالت سوم ، باید حواسمون باشه که بیت تگ + بیت set با هم میشن به اندازه لگاریتم تعداد بلوک حافظه اصلی
ظاهرا سوالمو خیلی بد پرسیدم ، سوالو اصلاحش کردم
اینجا منظورم از بیت تگ ، تعداد بیت Tag در فیلد آدرس نیست ، بلکه تعداد فیلدهای تگ و اعتباری هست که در کش ذخیره میشه

(۱۴ بهمن ۱۳۹۲ ۱۰:۵۵ ق.ظ)unicornux نوشته شده توسط:  تعداد بیت اعتبار که همیشه ۱ پس کلا مهم نیست. در واقع سوالت اینه که " آیا با تعداد یکسان بلاک در یک کش تعداد بیت های tag یکسانه؟ "
سوالمو اصلاح کردم. خیلی افتضاح پرسیده بودم

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - e.shrm - 14 بهمن ۱۳۹۲ ۱۱:۳۷ ق.ظ

به نظرم اینا هیچ ربطی بهم ندارند.
تعداد بیت تگ کل برابر تعداد بیت تگ یه بلاک ضربدر تعداد بلاکه.
تعداد بیت تگ هر بلاک تو هرکدوم از اینا هم با هم متفاوته. و حتی تعداد بلاک ها. مثلا برای مورد سوم کاملا بستگی به تعداد way داره و . . .
من برای اینکه مطمئن بشم. سوال سال ۹۱ رو با بلاک سایز ۶۴ برای همه حل کردم ، شما هم حل کنید میبینید که پاسخ هاشون یکسان نمیشه.

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - hosshah - 14 بهمن ۱۳۹۲ ۱۱:۵۰ ق.ظ

خب اونجور که من متوجه شدم شما یه چیزه بدیهی رو پرسیدی
اگر حجم حافظه اصلی تو همه حالت ها یکسان باشه و تو همه این کش ها تعداد بلاک ها برابر باشه (فارق از تعداد way ها برای Set-Associative ) خب مسلما تعداد بیت تگی که به این ها اختصاص داده میشه برابره دیگه، هاااا؟ Wink
درست منظور رو گرفتم؟

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - e.shrm - 14 بهمن ۱۳۹۲ ۱۲:۰۱ ب.ظ

(۱۴ بهمن ۱۳۹۲ ۱۱:۵۰ ق.ظ)hosshah نوشته شده توسط:  خب اونجور که من متوجه شدم دوستمون یه چیزه بدیهی رو پرسیدن
اگر حجم حافظه اصلی تو همه حالت ها یکسان باشه و تو همه این کش ها تعداد بلاک ها برابر باشه (فارق از تعداد way ها برای Set-Associative ) خب مسلما تعداد بیت تگی که به این ها اختصاص داده میشه برابره دیگه، هاااا؟ Wink
درست منظور رو گرفتم؟
حافظه ۶۴ کیلو بایت. آدرس ۳۲ بیتی
در حالت دایرکت : سایز بلاک برابر ۶۴
تعداد بلاک = ۲ به نمای ۱۰
تعداد بیت تگ یک بلاک = ۱۶
تعداد بیت تگ کل = دو به نمای ۱۴
-----------------------------------------------------------------
حافظه ۶۴ کیلو بایت. آدرس ۳۲ بیتی
در حالت Fully associative : سایز بلاک برابر ۶۴
تعداد بلاک = دو به نمای ۱۰
تعداد بیت تگ یک بلاک = ۲۶
تعداد بیت تگ کل = ۱۳ در ۲ به نمای ۱۱

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - keywan78 - 14 بهمن ۱۳۹۲ ۱۲:۰۳ ب.ظ

یه نکته دذ مورد گزینه ۴ : تعداد فیلد تگ به انداره تعداد بلوک ذخیره میشه، ولی اندازه تگ فرق میکنه.

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - e.shrm - 14 بهمن ۱۳۹۲ ۱۲:۰۷ ب.ظ

من تازه صورت مساله رو گرفتمBig Grin
تعداد بیت نه! اساسا فیلد تگ. Big Grin
----------
تعداد فیلد تگ میشه ، اندازه تعداد بلاک ها ، تعداد بلاک ها هم برابر اندازه حافظه اصلی تقسیم بر تعداد کلماته. پس اگه تعداد کلمات هر بلاک یکی باشه ، بله تعداد فیلد تگ یکسانه. همینطور برای بیت اعتبار.
-----------
از اون سوالا بود که آدم باید دقیق میخوند.

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - hosshah - 14 بهمن ۱۳۹۲ ۱۲:۱۴ ب.ظ

بله من باید میگفتم تعداد بیت بلاک ها هم برابر باشه درسته مرسی

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - e.shrm - 14 بهمن ۱۳۹۲ ۱۲:۱۶ ب.ظ

(۱۴ بهمن ۱۳۹۲ ۱۲:۱۴ ب.ظ)hosshah نوشته شده توسط:  بله من باید میگفتم تعداد بیت بلاک ها هم برابر باشه درسته مرسی
تو مثال بالا کلا همه چیز یکسانه.
به نظرم این مثال متقاعد کننده ست برای اینکه بدونیم از نظر تعداد بیت تگ این روش ها اساسا ربطی بهم ندارند.

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - hosshah - 14 بهمن ۱۳۹۲ ۱۲:۲۳ ب.ظ

بله باز هم سوتی
متوجه شدم مرسی ولی تو دایرکت و مجموعه ای دیگه برابرن Big Grin

RE: تعداد فیلد تگ و اعتبار کدام نگاشت بیشتر است ؟ - masoud67 - 14 بهمن ۱۳۹۲ ۱۲:۲۳ ب.ظ

تشکر از همه دوستان
بالاخره بعد از یه ساعت ریاضت ، تونستم جوابم را پیدا کنم Cool
فقط خداوکیلی فیلد تگ را با بیت های تگ اشتباه نگیرید Big Grin

اگر در هر سه روش تعداد کلمات در هر بلاک برابر باشه، و تعداد بلوک کش در هر سه حالت برابر باشه، تعداد فیلدهای tag و valid ذخیره شده در کش در هر سه حالت برابر هستن , چون تعداد فیلد ذخیره شده در کش برای تگ و اعتبار همیشه میشه برابر با تعداد بلاک کش

اما تعداد بیتی که بابت اینها ذخیره میشه بستگی به شرایط تعداد بلوک و way داره
ولی این یکی برقراره که تعداد بیت تگی که نگاشت مستقیم ذخیره میکنه، همیشه کوچکتر مساوی تعداد بیت تگی هست که نگاشت مجموعه ای ذخیره میکنه

با یه مثال توضیح میدم که اگر یه موقع با این سوال گیج شدید، حداقل نفرین به من نکنید
مثلا فرض کنید که کش ما [tex]2^b[/tex] بلوک داره (در هر سه حالت)
و مثلا تعداد کلمات در هر بلوک بشه [tex]2^w[/tex]
و مثلا تعدا کلمات حافظه بشه [tex]2^m[/tex]
و نگاشت مجموعه ای هم باشه kway که [tex]2^t=k[/tex]

تو هر سه حالت تعداد فیلد ذخیره شده برابر است با [tex]2^b[/tex]
ولی تعداد بیت ذخیره شده برای تگ (فعلا بیخیال بیت اعتبار میشیم) به شرح زیر است

حالا تو نگاشت مستقیم داریم . برای هر فیلد تعداد بیت های آدرس این میشه
[tex]word = w[/tex]

[tex]blocks = b[/tex]

[tex]tag = m - b - w[/tex]

خب حالا تعداد بیت تگ ذخیره شده برابر
[tex]total-tag-cache = 2^b( m - b - w)[/tex]


تو نگاشت مجموعه ای داریم . برای هر فیلد تعداد بیت های آدرس این میشه
[tex]word = w[/tex]

[tex]Set= b-t[/tex]

[tex]tag = m - b - w t[/tex]

خب حالا تعداد بیت تگ ذخیره شده برابر
[tex]total-tag-cache = 2^b( m - b - w t)[/tex]
با این فرمول معلوم میشه که تعداد بیت تگ ذخیره شده واسه نگاشت مجموعه ای به واسطه حضور t همیشه بزرگتر مساوی نگاشت مستقیم میشه

و در نگاشت کامل
[tex]word = w[/tex]

[tex]tag = m - w[/tex]

خب حالا تعداد بیت تگ ذخیره شده برابر
[tex]total-tag-cache = 2^b( m - w)[/tex]

سوال ما به سر رسید ، کلاغه .... Big Grin