تالار گفتمان مانشت

نسخه‌ی کامل: نگاشت شرکت پذیر مجموعه ای
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
کسی می تونه این نگاشته رو یه جور واضح واسه من توضیح بده
من خودم توی دور اول که خوندمش تقریبا متوجه شدم ولی الان باز یادم رفت سیستمش چطوریه
فکر می کنم اگه یه شکل مختصر ازش بکشم بهتر می تونم حلش کنم ولی بعضی اوقات با همین کشیدن شکلشم مشکل پیدا می کنم.
فرمولاشم دلم نمیخواد حفظ کنم.
یکی لطف کنه این نگاشت شرکت پذیر مجموعه ای رو واسه من بازش کنه.

مثلا توی این سوال
در یک حافظه نهان شرکت پذیر مجموعه ای با دو بلوک در هر مجموعه (Two-way Set Associative Cache) از بلوک های 4 کلمه ای استفاده می شود. این حافظه نهان می تواند در مجموع 2048 کلمه از حافظه اصلی را در خود جای دهد. اندازه حافظه اصلی 128K کلمه است. برچسب (Tag) در این حافظه چند بیت است؟
6
7
8
9
جواب 7 میشه.
اگه یه شکل کوچولو هم ازش بکشید خیلی خوب میشه Big Grin
مرسی
دوستان نظرتون رو راجع به این تاپیک بگین. لطفا...
من که هرچی از اینها تست حل کردم(جالبه که خیلی هاشو درست میزدم) اما آخرش هم نفهمیدم چی به چیه!!!!
جواب:
راحته حلش .

ببینید شما اول باید تکلیف 2 تا چیز را مشخص کنید‌: 1- اندازه حافظه نهان 2- اندازه حافظه اصلی
با داشتن این دو می تونیم تعداد بیت های مورد نیاز برای آدرس دهی هر کدام را بدست بیاریم.

آدرس تولید شده توسط پردازنده بطور کلی شامل 2 قسمت میشه‌: tag , Index که خود Index شامل یکسری اجزای دیگه هست که بستگی به نوع حافظه نهان ما داره.

اندازه حافظه اصلی ما 128K هستش‌، [tex]n=log(128k)= 17 bits[/tex] اندازه آدرسی که پردازنده تولید می کنه .
خود n با توجه شکل مشخصات حافظه نهان 3 قسمتی هستش

حافظه نهان ما میتونه 2048 کلمه از حافظه اصلی را در خودش جای بده اما چون هر دو کلمه در یک مجموعه قرار میگیرن بنابرین اندازه حافظه نهان ما برابر 2048/2 = 1024 میشه . یعنی 1024 مجموعه 2 کلمه ای که از اندیس 0 تا 1023 شماره گذاری میشه.

[tex]Index = set word = log(1024) = 10 bits[/tex]

[tex]n = Tag Index = 17 \Rightarrow Tag = 7 bits[/tex]
خیلی ممنون Smile

فقط من بعضی جاها که اومده سر خود کلمات رو 1 بایتی یا 4 بایتی گرفته و وقتی 4 بایتی گرفته 2 بیت هم به byteoffset اختصاص داده رو نمیدونم چه جوریه.
ممنونم
tag چی رو مشخص میکنه؟
مگه توی شکلی که کشیدین 2 تا ستون منظور 2 تا مجموعه نیست که هر کدون یه tag دارن؟
tag اینو مشخص میکنه که داده ما داخل حافظه نهان هست یا خیر .
طبق شکل هر ردیف شامل 2 کلمه یا دو تا داده هست( در یک مجموعه )که آدرس یکسان یعنی index یکسان در کش دارند ولی با tag های متفاوت . برای همین 2048 را بر 2 تقسیم کردیم.
گاهی که می گن بلوک مثلا 4 کلمه ایست، سایز word رو باید 2 در نظر بگیریم یا اینکه باید سایز هر بلوک رو به بایت تبدیل کنیم بعد مثلا [tex]4*2^{2}[/tex]؟ تو بعضی سوالات به بایت تبدیل کرده تو بعضی دیگه اومده همون تعداد بیت برای word رو در نظر گرفته. چه باید کرد؟Undecided
یعنی 2048کلمه همزمان نمیتونه توی حافظه کش باشه.
و به خاطر همین هم توی آدرسدهی فیلدی برای شماره بلوک گذاشته نمیشه.
درست برداشت کردم دوستان؟
در جواب سوال Arshad90 به نظر من بستگی به این داره که سطح دسترسی در سیستم به بایت باشه یا کلمه.
یعنی اگر قراره تو برنامه روی بایتها کار بشه پس باید به اندازه لگاریتم تعداد بایتهای هر بلوک فیلد اختصاص داده بشه توی آدرس

و اگر قراره به کلمه دسترسی بشه به اندازه لگاریتم تعداد کلمات بلوک فیلد نیاز داریم.
2048 کلمه میتونه همزمان در کش قرار بگیره‌، ولی فقط ما با 1024 آدرس میتونیم اونها را آدرس دهی و بیابیم در نتیجه تعداد بیت ایندکس ما 10 بیت است
در اصل اندازه حافظه نهان ما 1024 مجموعه 2 کلمه ای هست که میشه 2048 کلمه.
سلام . می دونم این پست دیگه قدیمی شده اما امیدوارم هنوز خواننده داشته باشه... سوالم اینه که‌: در متن سوال گفته شده
(21 بهمن 1389 08:35 ق.ظ)zr2358 نوشته شده توسط: [ -> ]با دو بلوک در هر مجموعه (Two-way Set Associative Cache) از بلوک های ۴ کلمه ای استفاده می شود
و در پاسخ گفته شده
(21 بهمن 1389 09:39 ب.ظ)mohanddes نوشته شده توسط: [ -> ]چون هر دو کلمه در یک مجموعه قرار میگیرن
.... مفهوم مجموعه یا همون set چیه دقیقا؟ در یک مجموعه 2 کلمه قرار می گیرد یا در یک مجموعه 2 بلوک که هر کدوم 4 کلمه دارند قرار می گیرد؟؟
از طرح این سوال و پاسخش بسیار ممنونم ..

لینک مرجع