تالار گفتمان مانشت
فصل حافظه صفحه ۲۰۳ پوران مثال دوم - نسخه‌ی قابل چاپ

فصل حافظه صفحه ۲۰۳ پوران مثال دوم - fa_karoon - 02 آبان ۱۳۹۲ ۱۲:۰۸ ق.ظ

سلام دوستان، این سوال رو یه نفر دیگه قبلا در کنار چند تا سوال دیگه پرسیده بود، اما مثل اینکه چون چند سواله بوده این یکی جواب نگرفته بود.
-صفحه ۲۰۳ پوران برای مثال دوم:
فرض کنید CPI base=1
نرخ کلاک ۵۰۰MHz
زمان دسترسی حافظه اصلی ۲۰۰ns
نرخ نقصان دستورات در کش l1 برابر۵ درصد
ماشین چند برابر سریع میشود اگر از یک کش l2 که زمان دسترسی ۲۰ns دارد استفاده کنیم؟نرخ نقصان به حافظه ی اصلی به ۲درصدکاهش میابد()
cpi -1 با درنظر گرفتن کش l2 چطوری بدست اومده؟
۲- ۵۰۰ مگاهرتز چه جوری شده ۲ نانو ثانیه؟
۳- تو رو خدا این اصطلاحات Mem Stall Cycles per Instruction و L2 Stalls per Instruction و Mem Stalls per Instruction رو توضیح بدید، در کل با کلمه ی Stall مشکل دارم؟
مرسی دوستان

RE: فصل حافظه صفحه ۲۰۳ پوران مثال دوم - fa_karoon - 08 آبان ۱۳۹۲ ۰۲:۲۸ ب.ظ

فهمیدم که چون فرکانس و پریود کلاک رابطه عکس دارند می شود اینجوری نوشت که : [tex]\frac{1}{5\times 10^{8}}[/tex] بعد اگر ده به توان ۸ را بیاوریم بالا می شود ۱۰ به توان منفی ۸، از آن سو [tex]\frac{1}{5}[/tex] هم معادل ۰/۲ هست و می توان آن را به صورت [tex]2\times 10^{-1}[/tex] نوشت در نتیجه داریم [tex]2\times 10^{-1} \times 10^{-8} = 2 \times 10^{-9} [/tex] که ۱۰ به توان منفی ۹
معادل نانو ثانیه است.

اما مشکل با مفهوم stall همچنان باقی ست

RE: فصل حافظه صفحه ۲۰۳ پوران مثال دوم - jahanmanesh - 11 دى ۱۳۹۲ ۰۸:۲۳ ب.ظ

سلام درباره stall پرسیدی ، پوران کام نگفته ولی به هر حال صفحه ۲۰۱ بود فک کنم ، پاراگراف ۴ اخر خط نوشته :
مدت زمانی که Cpu باید منتظر نوشتن در حافظه اصلی باشد Write Stall

حالا از این جمله میتونیم نتیجه بگیریم ، مدت زمانیه که Cpu منتظر میشه (به فرایند دیگه ای Switch نمیکنه ) برای حافظه (چه Ram، چه Cache) میشه Memory Stall یا Stall

خب ، فرمول محاسبش هم میشه :
Read Stall = Read_instructions * Miss Rate * Miss Penalty
Write Stall = Write _instructions * Miss Rate * Miss Penalty
میبینی که هر دوتا یه فرمول دارن ، اگر توو سوال حرفی از نوشتن یا خوندن جداگونه بود که باید از این فرمولا مقدار Stall (مقدار زمانیکه Cpu رو معطل میکنه) رو حساب کنی ، اگر هم فقط نوشته بود.

کلا این قضیه توی محاسبه سرعت برنامه مطرح میشه، که مدت زمانی که Cpu باید کار انجام بشه میشه زمان اجرای برنامه ،

CpuTime = Cpi * Instructions * T که T کلاک ریت پردازنده هستش و Cpi هم مقدار کلاک برای اجرای هر دستور هستش

معمولا توو فصل حافظه سرعت پردازنده رو برابر با CPI مییره یعنی هرجا دیدی سرعت پردازنده ، سرعت برنامه .... منظورش CPI هستش ،
و این Stall ها هم برا همینجا خوبن که مثلا میگه ۱۰% دستورات برنامه Load هستن ، یعنی نیاز به خوندن از حافظه دارن ، حالا سرعت برنامه رو ، تسریعو ، ... رو حساب کن
فرمولاش که همونجا توو صفحه ۲۰۳ نوشته ، فقط یه نکته رو بت بگم شاید ندونی یا دقت نکرده باشی

Miss Penalty تعداد کلاک هایی که CPU منتظر میشه هستش . یعنی مثلا اگر سرعت RAM ، برابر ۴۰۰نانوثانیه هستش و کلاک ریت CPu برابر ۲نانو ثانیه هستش ، یعنی هر کلاکش ۲نانوثانیه طول میکشه ، پس MissPenalty میشه ۴۰۰/۲=۲۰۰کلاک پردازنده باید صبر کنه واسه انجام اون Stall