نوشته شده توسط
the king
پس بنظرتون اینتل در توضیحات Intel Turbo Boost اشتباه می کنه که میگه وقتی بار کاری کاربر از پردازنده درخواست کارایی بالاتر می کنه فرکانس رو بالاتر از حد عادی میبره؟ شما دارید درست عکس چیزی رو میگید که Intel از تکنولوژی اش توصیف میکنه.
بعد به نظرتون این بالا بردن فرکانس کاری پردازنده وقتی فشار کاری روی اون نیست با چه هدفیه؟ افزایش مصرف برق؟ کاهش عمر پردازنده؟ افزایش اتلاف حرارتی؟ یا همه شون؟ وقتی بار کاری خاصی روی پردازنده نیست که نیازی به کارایی و فرکانس پردازش بالاتری نداریم، برای چی فرکانس رو ببریم بالاتر؟
کد HTML:
When the processor is operating below these limits and the user's workload demands additional performance, the processor frequency will dynamically increase until the upper limit of frequency is reached. Intel® Turbo Boost Technology 2.0 has multiple algorith
https://www.intel.com/content/www/us...echnology.html
سلامی مجدد
خیلی ممنون استاد .
من به اینترنت بین الملل دسترسی ندارم . نمیتونم این مطالب را تحقیق کنم .
بنابراین نمیدونم منظور از these limits در جمله ی بالا ، کدوم محدودیت را میگه . همچنین ممکنه این مطلب ادامه داشته باشه و همچنین مطالب و مقالات دیگه وجود داشته باشه که من فعلا اینترنت ندارم که تحقیق کنم .
ضمن اینکه همونطور که گفت ، این تکنولوژی چندین نسخه اش اومد . این هم میگه الگوریتم های مختلف میتونن داشته باشن . مثلا درباره ی پردازنده ی Ryzen 3600 (که پردازنده ی جدیدی هم هست) ، فرکانس پایه اش 3.6 و فرکانس turbo boost اش 4.2 هست . اگه اشتباه نکنم در این پردازنده ، حتی اگه همه ی هسته هاش با تمام توانشون فعال باشن ، باز هم کلاک اش ، بیشتر (شاید هم خیلی بیشتر) از کلاک فرکانس پایه اش هست . (در این مورد ، دقیق نمیدونم . گفتم شاید) . کلا میگم که بستگی به پردازنده اش و همونطور که نوشته ، الگوریتم هاش داره . بنابراین ممکنه پردازنده ای باشه که با افزایش بار کاریش ، فرکانسش کم نشه .
نوشته شده توسط
the king
این مطلب رو در کجا خوندید؟ منبعش کجا است؟
ولی در اینکه پایه ی این قضیه ، همین ای هست که (در پست قبل) بهتون گفتم ، شک ندارم .
فعلا هم اینترنت (بین الملل) ندارم که براتون لینکی یا چیزی بذارم (وگرنه همون انجمن میامدم خودم ها ) ولی اگه شک دارین ، اولا من خودم این قضیه رو دارم میبینم (که با افزایش بار کاری پردازنده ام ، فرکانسش کمتر میشه تا به فرکانس پایه میرسه) و دوما همین چک کردن نرم افزار را که گفتین انجام دادم که در زیر ، گزارش اش را میدم و سوما اگه سئوال تون اینه که از کجا میدونم ، مباحث سخت افزاری رو یه کم پی گیری میکنم و چهارما دیگه اگه حرفم را قبول ندارین ، میتونین از بچه های سخت افزار و کسانی که توی سخت افزار علم دارن ، این موضوع را هم بپرسین . یا من تاپیک بزنم و بپرسم و بهتون لینک اون تاپیک رو بدم تا جواب رو نگاه کنین (اگه مایلید ، بگین) . چون به هر حال من فعلا اینترنت ندارم.
نوشته شده توسط
the king
عملکرد Turbo Boost برای همه هسته ها یکسانه :
دقیق در این باره خبر ندارم ولی گمان نکنم.
چون الان توی بایوس ام که رفته بودم ، وقتی turbo boost را که فعال کنم ، زیرش لیست هر هسته (کلا 4 هسته) میاد و جلوی هر کدوم ، فرکانس شون را مینویسه (نه اینکه مثلا یک هسته ی خاص را مشخص کنه و مثلا بگه هسته ی 0 فرکانس اش فلان هه . بلکه فرکانس یکی از هسته ها رو میگه که فلان فرکانس رو داره) . یعنی برام این جوری نوشته بود (دقیق جملاتش را حضور ذهن ندارم ولی کلا همین بود) :
turbo boost core 3.4Ghz
turbo boost core 3.3Ghz
turbo boost core 3.2Ghz
turbo boost core 3.2Ghz
اینها بصورت پیش فرض بودن که میشد تغییر هم داد ولی نمیدونم تغییرات اعمال بشه یا نه . چون تغییراتش (افزایش فرکانس اش) ، احتمالا اورکلاک حساب میشه و مادربردم سری H هست که اورکلاک را ساپورت نمیکنه (البته بعضی ها میگن میکنه که نمیدونم) . مادربرد سری Z اورکلاک را ساپورت میکنه . (برای اورکلاک هم خود پردازنده هم فکر کنم باید سری K را داشته باشه . این معمولی ها فکر نکنم بشه) . به هر حال ، تنظیمات کلاک پیش فرض اش را تا حالا دست نزدم .
نوشته شده توسط
the king
خیر. تمامی هسته های پردازنده لپ تاپ من همواره در حالت عادی 2.4GHz میمونند و به 3.4GHz حداکثری Max Turbo شون نمی رسند، چه فشار کاری روشون باشه و چه نباشه، چون اصلا تنظیم Turbo Boost در BIOS اش وجود نداره که بخواد فعالش کنه.
مطمئنید در بایوس تون همچین تنظیماتی نیست؟
اولا اینکه پردازنده تون پشتیبانی میکنه؟ اگه بکنه ، به احتمالا بسیار زیاد ، توی تنظیمات بایوس لپتاپ تون باید همچین گزینه ای باشه .
مثلا واسه ی من در بایوس مادربرد (uefi) ، در قسمت M.I.T و بعد در قسمت advanced frequency cpu و بعد turbo boost clock بود .
اگه همچین گزینه ای را در بایوس تون ندیدین ، ببینین بایوس تون چه پروفایل هایی داره . مثلا بجز default profile ، پروفایل دیگه ای هم شاید داشته باشه که اگه اون را فعال کنین ، خودش turbo boost clock رو فعال کنه .
نوشته شده توسط
the king
اما شما که مدعی هستید عملکرد Turbo Boost منجر به تفاوت بازدهی هسته ها شده، می توانید در سیستم خودتون غیر فعالش کنید و ببینید که کاهش عملکرد دو نخ در دو برنامه مجزا نسبت به حالتی که یک نخ به تنهایی اجرا می شد ربطی به Turbo Boost نداره و وقتی Turbo Boost رو غیر فعال هم می کنید همچنان همین مساله هست.
بله این کار را کردم که گزارش را میدم .
اول این رو بگم که در هر دو حالت (با فعال کردن و غیرفعال کردن Turbo Boost) ، برنامه ی شما ، در حالت های مختلف (یک نخی در یک پروسه و تک نخی در دو پروسه . دو نخی در یک پروسه و دو نخی در دو پروسه) ، هیچ فرقی با گزارش هایی که قبلا دادم ، نکرد . من فکر میکردم مقدار cpu usage در برنامه ی شما ، سرعت پردازش را میده اما اگه اشتباه نکنم ، مقدار این رو میده که یک هسته چند درصدش فعال بود (درسته؟) . یعنی سرعت پردازش نخ را نمیسنجه پس فرکانس برای اون هسته ، چه بالا باشه یا پایین ، فرقی به آمارش نداره .
بنابراین برای سنجش سرعت پردازش نخ ام ، همون الگوریتم ساده ی خودم (حلقه ی for) را استفاده کردم (کد اول درپست اول) .
دو کد زیر ، دو تابع اصلی اش هستن :
private void SingleThread()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (long i = 0; i < 10000000000; i++)
{
}
stopwatch.Stop();
long elapsed = stopwatch.ElapsedMilliseconds;
MessageBox.Show("elspsed : " + elapsed.ToString() + " ms", "Main Thread");
}
private void NewThreadMethod_1()
{
Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();
for (long counter = 0; counter < 10000000000; counter++)
{
}
stopwatch.Stop();
long elapsed = stopwatch.ElapsedMilliseconds;
MessageBox.Show("elspsed : " + elapsed.ToString() + " ms", "New Thread");
}
و در 4 دکمه ، که در هر کدوم ، یه نخ براش اضافه میکردم .
یعنی در دکمه ی اول ، کد :
private void TcSingleThread_Click(object sender, EventArgs e)
{
this.SingleThread();
}
و در دکمه ی دوم ، کد :
private void TcDualThread_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(this.NewThreadMethod_1));
thread.Start();
this.SingleThread();
}
و در دکمه ی سوم ، کد :
private void TcThreeThread_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(this.NewThreadMethod_1));
thread.Start();
Thread thread_2 = new Thread(new ThreadStart(this.NewThreadMethod_1));
thread_2.Start();
this.SingleThread();
}
و در دکمه ی چهارم ، کد :
private void TcFourThread_Click(object sender, EventArgs e)
{
Thread thread = new Thread(new ThreadStart(this.NewThreadMethod_1));
thread.Start();
Thread thread_2 = new Thread(new ThreadStart(this.NewThreadMethod_1));
thread_2.Start();
Thread thread_3 = new Thread(new ThreadStart(this.NewThreadMethod_1));
thread_3.Start();
this.SingleThread();
}
را گذاشتم .
Turbo Boost Clock را غیر فعال کردم (یعنی پردازنده ام با فرکانس 3.18 تا 3.19 فقط کار میکرد) :
1 نخ در 1 پروسه :
2 نخ در 1 پروسه :
3 نخ در 1 پروسه :
4نخ در 1 پروسه :
1 نخ در 2 پروسه (کلا 2 نخ) :
2 نخ در 2 پروسه (کلا 4 نخ) :
چون در یک پست ، بیشتر از 5 عکس رو نمیشه قرار داد ، ادامه را در دو پست بعدی میذارم ....
نوشته شده توسط
the king
جواب این سوال بله و خیر نیست. در هر پردازنده ای شرایط متفاوتی میتونه باشه، شاید اصلا Cache Level 3 نداشته باشه یا Cache Level 5 مشترک داشته باشه.
اصولا در سیستمی با پاسخگویی بلادرنگ که معماری خاص خودش رو هم داره از هر وقفه ای در اجرای نخ اجتناب می کنند، اما حالا فرض کنیم یک هسته شون خیلی داغ شده و ناچار به سوئیچ شدن، اگر قراره سوئیچی صورت بگیره همون لحظه و بدون وقفه از پردازنده فلان به به بهمان منتقل میشه و مشابه گفته شما از نزدیکترین و سریعترین حافظه مشترک بین شون استفاده میشه. همچین چیزی مثلا برای جاهایی که روی زمان حساسیت زیاد ئه، فرضا سیستم های هدایت هواپیما کاربرد داره.
ولی در سیستم عامل متعارفی مثل ویندوز که اینقدر پاسخگویی به نخ بلادرنگ نیست، که نخ از این هسته فوری بپره به یک هسته دیگه. اگر نخ تون در این هسته اجراش تموم شده تا اجرای بعدیش وقفه ایجاد میشه. لزومی نداره که وضعیتش در Cache مشترک جابجا بشه.
سوئیچ کردن یک عملیاتی است با نظارت سیستم عامل و یکسری عملیات اضافی هم داره که سربار میشه ولی نیاز پردازنده نیست، مربوط به کارکرد سیستم عامل ئه. در اینجور سوئیچ ها از یک هسته فیزیکی به یک هسته فیزیکی دیگه همینطور درجا و بدون وقفه نیست.
اول نخ متوقف میشه، وضعیت اجرایی اش به حافظه اصلی منتقل میشه، ممکنه دز حافظه Cache مشترک باقی بمونه ولی شاید جایگزین بشه و برای استفاده اون یکی هسته باقی نمونه.
چه بسا مدت کوتاهی حتی فرصت اجرا در اون یکی هسته بهش داده نشه. وقتی هم که نوبت اجرا در هسته دیگه بهش رسید مرجع نهایی همچنان حافظه اصلی است که حتی شاید در اون هم نباشه و در انتها به حافظه مجازی روی دیسک رجوع بشه.
در نظر بگیرید که فرضا یک پردازنده با 6 مگابایت Cache مشترک نمی تونه مدت طولانی چیزی رو داخلش نگه داره.
خیلی ممنون استاد .