تالار گفتمان مانشت
سوال: نگاشت k-way set associative همراه با بلاک بندی - نسخه‌ی قابل چاپ

سوال: نگاشت k-way set associative همراه با بلاک بندی - masume_ml - 25 آذر ۱۳۹۲ ۰۱:۵۸ ب.ظ

با سلام به دوستان گل مانشتی
وقتی جافظه کش رو با استفاده از نگاشت k-way set associative بلاک بندی میکنیم تعداد کلمات حافظه کش و نحوه ی پیدا کردن کلمه وقتی cpu ادرسی را تولید میکند چطوریه؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟؟
با تشکر فرررررررررررررررررررراون

RE: سوال: نگاشت k-way set associative همراه با بلاک بندی - maryam.raz - 25 آذر ۱۳۹۲ ۰۴:۱۲ ب.ظ

وقتی که کش چند تا WAY داره واسه اینکه بدونیم برای آدرس دهی کش به چند بیت نیاز داریم تنها چیزی که مهم هست تعداد SET هاست همون سطرها.اگه مثلا ۴تا سطر داشتیم و هر سطر هم ۲ ستون بود یعنی WAY=2 کاری به ستون نداریم و فقط چون۴ تا سطر داریم پس به ۲بیت واسه آدرس دهی کش نیاز داریم
فقط یه نکته داره که خود سطرها بر اساس ستونها تعیین میشن. وقتی میگن مثلا کش ۸تا بلاک داره خب باید توجه کنیم که اینجا هر سطری ۲تا بلاک داره(به دلیل WAY=2) نه یک بلاک، پس کلا ۴تا سطر داریم نه ۸تا!
کل آدرس هم مث زمانیه که نگاشت مستقیم داریم فقط در اینجا باید آدرس کش رو براساس WAY و SET حساب کنیم.
سرچ کنید مطالب زیاد هست حتی با شکل

RE: سوال: نگاشت k-way set associative همراه با بلاک بندی - masume_ml - 26 آذر ۱۳۹۲ ۰۱:۴۴ ق.ظ

(۲۵ آذر ۱۳۹۲ ۰۴:۱۲ ب.ظ)maryam.raz نوشته شده توسط:  وقتی که کش چند تا WAY داره واسه اینکه بدونیم برای آدرس دهی کش به چند بیت نیاز داریم تنها چیزی که مهم هست تعداد SET هاست همون سطرها.اگه مثلا ۴تا سطر داشتیم و هر سطر هم ۲ ستون بود یعنی WAY=2 کاری به ستون نداریم و فقط چون۴ تا سطر داریم پس به ۲بیت واسه آدرس دهی کش نیاز داریم
فقط یه نکته داره که خود سطرها بر اساس ستونها تعیین میشن. وقتی میگن مثلا کش ۸تا بلاک داره خب باید توجه کنیم که اینجا هر سطری ۲تا بلاک داره(به دلیل WAY=2) نه یک بلاک، پس کلا ۴تا سطر داریم نه ۸تا!
کل آدرس هم مث زمانیه که نگاشت مستقیم داریم فقط در اینجا باید آدرس کش رو براساس WAY و SET حساب کنیم.
سرچ کنید مطالب زیاد هست حتی با شکل

واقعا ممنونم دوست عزیز

من اینطوری فکر میکنم که در هر سطر بلاک قرار نمیگیره بلکه یه کلمه از بلاک قرار میگیره . اینطوری که یک بلاک قرار بگیره طول کلمه ی حافظه کش بسته به بلاک بندی ما متفاوت میشه!!!!!!!
و اینجاست که کلا قاطی میکنم.....
درست فکر میکنم؟؟؟؟؟؟؟؟؟؟؟
نظرتون رو بگید خوشحال میشمBlush

RE: سوال: نگاشت k-way set associative همراه با بلاک بندی - maryam.raz - 26 آذر ۱۳۹۲ ۰۴:۳۲ ب.ظ

(۲۶ آذر ۱۳۹۲ ۰۱:۴۴ ق.ظ)masume_ml نوشته شده توسط:  
(25 آذر ۱۳۹۲ ۰۴:۱۲ ب.ظ)maryam.raz نوشته شده توسط:  وقتی که کش چند تا WAY داره واسه اینکه بدونیم برای آدرس دهی کش به چند بیت نیاز داریم تنها چیزی که مهم هست تعداد SET هاست همون سطرها.اگه مثلا ۴تا سطر داشتیم و هر سطر هم ۲ ستون بود یعنی WAY=2 کاری به ستون نداریم و فقط چون۴ تا سطر داریم پس به ۲بیت واسه آدرس دهی کش نیاز داریم
فقط یه نکته داره که خود سطرها بر اساس ستونها تعیین میشن. وقتی میگن مثلا کش ۸تا بلاک داره خب باید توجه کنیم که اینجا هر سطری ۲تا بلاک داره(به دلیل WAY=2) نه یک بلاک، پس کلا ۴تا سطر داریم نه ۸تا!
کل آدرس هم مث زمانیه که نگاشت مستقیم داریم فقط در اینجا باید آدرس کش رو براساس WAY و SET حساب کنیم.
سرچ کنید مطالب زیاد هست حتی با شکل

واقعا ممنونم دوست عزیز

من اینطوری فکر میکنم که در هر سطر بلاک قرار نمیگیره بلکه یه کلمه از بلاک قرار میگیره . اینطوری که یک بلاک قرار بگیره طول کلمه ی حافظه کش بسته به بلاک بندی ما متفاوت میشه!!!!!!!
و اینجاست که کلا قاطی میکنم.....
درست فکر میکنم؟؟؟؟؟؟؟؟؟؟؟
نظرتون رو بگید خوشحال میشمBlush
ظرفیت کش همیشه براساس بلاک گفته مشه ، کش کاری به کلمه نداره فقط بلاک رو میشناسه. حالا اگر ما یک way داشتیم پس هر بلاکی در یه سطر قرار میگیره و اگر ۲تا way داشتیم در هرسطر ۲بلاک وهمینجور ...
وقتی تعداد way و set مشخص بشه ما فقط به یک طریق میتونیم بلاک بندی کنیم چیزی دست ما نیست. این خود کش هست که ممکنه ساختار متفاوتی داشته باشه و تعداد بیت های آدرسش هم بسته به way ,set تغییر میکنه

RE: سوال: نگاشت k-way set associative همراه با بلاک بندی - masume_ml - 26 آذر ۱۳۹۲ ۰۶:۰۹ ب.ظ

[/quote]
ظرفیت کش همیشه براساس بلاک گفته مشه ، کش کاری به کلمه نداره فقط بلاک رو میشناسه. حالا اگر ما یک way داشتیم پس هر بلاکی در یه سطر قرار میگیره و اگر ۲تا way داشتیم در هرسطر ۲بلاک وهمینجور ...
وقتی تعداد way و set مشخص بشه ما فقط به یک طریق میتونیم بلاک بندی کنیم چیزی دست ما نیست. این خود کش هست که ممکنه ساختار متفاوتی داشته باشه و تعداد بیت های آدرسش هم بسته به way ,set تغییر میکنه
[/quote]

مرسی دوست عزیز
کتاب پوران نوشته که بر اساس کلمه است و با بلاک بندی میتونیم اونو بهبودش بدیم !!!!!!!!!
HuhHuhHuhHuhHuhHuhHuhHuhHuhHuhHuhHuhHuh
شدید گیج شدم

RE: سوال: نگاشت k-way set associative همراه با بلاک بندی - maryam.raz - 27 آذر ۱۳۹۲ ۰۴:۱۱ ب.ظ

ظرفیت کش همیشه براساس بلاک گفته مشه ، کش کاری به کلمه نداره فقط بلاک رو میشناسه. حالا اگر ما یک way داشتیم پس هر بلاکی در یه سطر قرار میگیره و اگر ۲تا way داشتیم در هرسطر ۲بلاک وهمینجور ...
وقتی تعداد way و set مشخص بشه ما فقط به یک طریق میتونیم بلاک بندی کنیم چیزی دست ما نیست. این خود کش هست که ممکنه ساختار متفاوتی داشته باشه و تعداد بیت های آدرسش هم بسته به way ,set تغییر میکنه
[/quote]

مرسی دوست عزیز
کتاب پوران نوشته که بر اساس کلمه است و با بلاک بندی میتونیم اونو بهبودش بدیم !!!!!!!!!
HuhHuhHuhHuhHuhHuhHuhHuhHuhHuhHuhHuhHuh
شدید گیج شدم
[/quote]
خب ما هم از روش بهبود یافته استفاده می کنیم Smileخود آقای اجلالی هم گفتن بر اساس بلاک هست سوالات رو هم ببینی بر اساس بلاک گفتن.شما تعداد بیت های آدرس کش رو ازت خواستن بر اساس بلاک مشخص کن
البته این لغات بلاک و کلمه توی هر کتابی یه معنی میده!

RE: سوال: نگاشت k-way set associative همراه با بلاک بندی - jahanmanesh - 11 دى ۱۳۹۲ ۰۷:۱۷ ب.ظ

سلام این این حرف درست نیس که کش همیشه بر اساس بلاک گفته میشه ، خیلی از سوالا رو میبینیم که ظرفیت بر اساس تعداد کلمات حافظه گفته میشه ،
ببین اول باید بدونی چجوری پردازنده ادرسشو پیدا میکنه ، ما از یه مجموعه استفاده کردیم ، شما یه جدول ساده رو در نظر بگیر ، هر سطر یه مجموعه میشه Set .
حالا هر سطر این جدولو به K بخش تقسیم کردیم (K-Way) یعنی هر سطرمون K قسمت شده (به هر بخش یه بلاک میگیم)، مابرای پیدا کردن هر قسمت بش یه Tag میدیم که وقتی امدیم توی این سطر مثلا بتونیم به قسمت ۳وم دسترسی داشته باشیم(پس برای هر قسمت یه Tag ذخیره میکنیم)، توی هرکدوم از این قسمت ها هم میتونیم چندتا کلمه قرار بدیم ، تا اینجاش فک کنم بتونی تصور کنی چه شکلیه ، حالا وقتی پردازنده میخواد یه کلمه از کش رو بخونه ، اول میاد و سطرمون توی این جدولو پیدا میکنه،بعدش باید Tag ادرس رو با خونهای سطر مقایسه کنه تا بدونه کدوم قسمت از این سطر رو نیاز داریم ، و بعدش از توی این قسمت کلمه مورد نظرشو برداره

پس اگر ما یه حافظه کش داشته باشیم مثلا ۴way ، و حافظه کش مثلا شامل ۶۴ کلمه باشه و در هر بلاک ۴ کلمه هست و ادرس های پردازنده ۸ بیتی باشن ،
۱/ حافظه اصلی دارای ۲به توانه ۸ بیت ادرس است . یعنی ۲۵۶ کلمه مختلف
۲/کش دارای ۶۴ کلمه است که هر ۴ کلمه توی ۱ بلاک قرار میگیرند ، پس ۶۴/۴ برابر میشه با ۱۶ بلاک
۳/سوال گفته ۴way یعنی در هر مجموعه(در هر سطر جدول) ۴تا بلاک داریم ، پس از ۱۶/۴ برابر میشه با ۴ مجموعه Set
۴/برای هر بلاک یه Tag قرار دادیم ، پس تعداد ( Tag=Block= 16 )
۵/طبق نتیجه گیریمون ۸ بیت هر ادرس پردازنده داره ، خب همونطور که گفتم ، اول باید سطر رو پیذاکنه توی جدول (اول باید مجموعه رو پیدا کنیم ) خب میبینیم که ۴تا Set توی کش داریم ، پس برای نمایش ۴ عدد (برای انتخاب بین این ۴تا )۲ بیت نیاز داریم ، بعدش که مجموعه رو پیدا کردیم باید بلاک رو پیدا کنیم (یعنی باید توی سطرمون ، اون بخش مورد نظرمونو پیدا کنیم) ، چجوری؟ خب میدونیم که گفتیم برای هر بلاک یه Tag قرار دادیم که بتونیم راحت اون بلاکو پیدا کنیم ، پس ، Tag ادرس رو با ۴تا تگ موجود توی این Set مقاییسه میکنیم تا پیدا تگ پیدا بشه و بلاکمون رو بفهمیم کدوم ، ولی راستی Tag چند بیت داره ؟ خب ما ۱۶تا بلاک توو کل کش داریم ، یعنی برای هر بلاک یه تگ ذخیره کردیم ، پس ۱۶ عدد متفاوت داریم برای نمایش ۱۶ عدد ۴ بیت میخوایم دیگه ، پس تگ هامون ۴ بیتی هستن ، حالا که بلاک رو پیدا کردیم ، باید از داخل کلماتش یکیو انتخاب کنیم ، گفته توی هر بلاک ۴ کلمه داریم ، دقت کن مقدار کلمه برامون مهم نیس ، ما ۴تا کلمه دارین که صفر میشه اولین کلمه ، ۱ میشه دومین ... مقدارش مهم نیس جای قرار گیریش مهمه ، حالا برای این ۴ عدد ، ۲ بیت میخوایم که نشون بده کدوم کلمه انتخاب شده

۶/پس ۲بیت برای انتخاب کلمه ، ۲ بیت برای انتخاب ست و ۴ بیت برای انتخاب Tag

شکلشم کشیدم توو عکس هست