تالار گفتمان مانشت
سوال حافظه علوم کامپیوتر ۸۱ - نسخه‌ی قابل چاپ

سوال حافظه علوم کامپیوتر ۸۱ - fa_karoon - 27 آذر ۱۳۹۱ ۰۷:۱۲ ب.ظ

سلام دوستان این سوال رو لطفا راهنمایی کنید چه جوری حل شدن؟
در یک سیستم که یک حافظه اصلی ویک Cache با ساختار Direct map دارد، اندازه قسمت داده مربوط به Cache برابر ۶۴ کیلو می باشد.تعداد خطوط آدرس ۳۰ می باشد و اندازه هر بلاک Cache 32 بیت می باشد. حافظه لازم برای کل Cache چقدر است؟ جواب : ۷۵۲ کیلو بیت
لطفا طریقه محاسبه این سوال رو بفرمایید.

سوال حافظه علوم کامپیوتر ۸۱ - csharpisatechnology - 29 آذر ۱۳۹۱ ۱۱:۱۹ ب.ظ

تعداد بلوک ها = اندازه ی دیتا تقسیم بر اندازه ی یک بلوک
پس اگه ۶۴kbyte رو تقسیم به ۴ بایت کنیم میشه :

[tex]tedadeBlock=\frac{(64*1024)Bytes}{(4)Bytes}=2^{14}[/tex]

(در این سوال چون اندازه ی هر کلمه رو نگفته باید فرض کنیم هر بلوک شامل یک کلمه هست و یعنی تعداد کلمات با تعداد بلوک ها برابره)
[tex]2^{14}[/tex] کلمه داریم. پس برای دسترسی آدرس دهی این کلمه ها یا بلوک ها ۱۴ بیت نیازه یعنی:
index=14
==
توی سوال گفته اندازه ی هر کلمه ۳۲ بیت هست که باید به بایت بیان بشه یعنی ۴ بایت.یعنی هر کلمه از ۴ خانه ی ۱ بایتی تشکیل شده .پس برای آدرس دهی این ۴ خونه ۲ بیت نیازه درنتیجه :
word=2
==
کل بیت ها ۳۰ تا بود پس:
۳۰=tag+index+word
۳۰=tag+14+2
پس:
tag=14
=======
دقت کنید به ازای هر بلوک یک فیلد Valid و یک فیلد Tag داریم که فیلد Valid اندازش ۱ بیت هست. پس برای هر یک از (۲ به توان ۱۴)بلوک باید ۱۵ بیت یعنی تا اینجا میشه :
[tex]tedadBlock*(Tag Valid)=2^{14}*(14 1)bit=[2^4*2^{10}*15]bit=240_{KiloBit}[/tex]

===
اندازه ی فوق بر حسب کیلو بیت بود(چون توی صورت سوال بر حسب کیلو بیت می خواسته که اینا هم نکات ریز کنکوری هستن که خیلی اذیت می کنن آدموBig Grin)
===
اندازه ی کل Data هم توی سوال اومده ۶۴ کیلو بایت.
چون هر بایت ۸ بیت هست اگه در ۸ ضربش کنیم بر حسب میشه ۵۱۲ کیلو بیت.
==
حالا اندازه ی کل کش میشه :
کل دیتا + تعداد بلوک *(بیت اعتبار + اندازه ی تگ)
یا :
۲۴۰+۵۱۲ = ۷۵۲ کیلو بیت
==
می تونید به پوران پژوهش و مقسمی مراجعه کنید.البته هر دوشون افتضاح توضیح دادن و من خودم جونم در اومد تا یکم این مطلب رو به زبون قابل فهم تری در آوردم.