نقل قول نوشته شده توسط the king مشاهده تاپیک
حتما لینک منبع چیزی رو که گفتید پیدا کنید، لازمش دارم، این مساله مهمی که شما پیدا کردید در سایت اینتل که نبود، چیزی که اینتل عمومی اعلامش نکنه حتما ارزشمنده.
شما اگر از این بچه های سخت افزار کسی رو سراغ دارید که معلوماتشون در حد جزئیات پردازنده های مدرن اینتل باشه معرفی شون کنید ولی توقع نداشته باشید که یک دانشجو یا استاد رشته سخت افزار اینها رو بدونه.
چون در ایران فناوری سخت افزاری و سطح آموزشی در این موارد خیلی سطح پایین و منسوخ ئه و همچین افرادی کیمیا هستند.


بله شما درست میگید، لابد اینتل داره اشتباه میگه. من عین متن سوال و جواب رو از FAQ اینتل نقل قول کردم :
https://www.intel.com/content/www/us...rocessors.html
که متن کاملش رو هم پیوست همین پست کردم.


بله. اصلا مورد عجیبی نیست. خیلی عادیه. سازنده لپ تاپ با توجه به توان تغذیه باطری و سیستم خنک کننده ای که بکار برده ممکنه ببینه نمیتونه از عهده تامین انرژی و حرارت فرکانس بالاتر پردازنده بربیاد و در نتیجه ترجیح بده غیر فعال نگهش داره.


من هم دونه به دونه گزینه های BIOS سیستم ام رو میشناسم و هم با انواع مختلف BIOS ها کار کردم.
گمان نمی کنم کسی که برای تغییر تنظیمات BIOS برنامه اسمبلی مینوشته برای اینکه تشخیص بده یک مورد ساده ای مثل Turbo Boost در بین تنظیمات هست یا نه نیاز به راهنمایی داشته باشه.


اجرای یک نخ به تنهایی در یک برنامه و بدون محدودیت در انتخاب هسته دقیقا مشابه همون کاری است برنامه در 10 ثانیه ابتدایی میکنه و باید 100 یا نزدیک به 100 باشه، به قول شما هم ربطی به فرکانس پردازنده نداره، چون مقایسه نسبی است، وقتی یکسان باشند باید 100 درصد باشه.
ارتباط مستقیمی هم به توان هسته نداره، یک زمانی طول میکشه که اون تک نخ اجرا بشه که اون زمان میشه معیار مقایسه.
اما برسیم به مقایسه اون معیار با اجرای دو نخ در دو برنامه مجزا. شما مدعی شدید که Turbo Boost در حالتی که یک هسته کارکرد بالا داره نسبت به حالتی که تعداد هسته بیشتری کارکرد بالا دارن فرکانس بالاتری اعمال میکنه.
و گفتید به همین خاطر در اجرای دو نخ در دو برنامه که بیشتر از یک هسته درگیر شدن کارکرد هر نخ کمتر از اون اجرای تک نخی 100% یا فرضا 98% شده.
اینکه ربطی به برنامه من نداره که فرکانس هسته چی باشه، هر چقدر فرکانس بالاتر باشه پردازش سریعتر میشه و زمان اجرای نخ کمتر میشه. برنامه زمانی درصد رو کمتر یا بیشتر نشون میده که زمان سپری شده از زمان اجرای تک نخی اول برنامه کمتر یا بیشتر باشه.
اگر این تغییر فرکانس بین اجرای تک نخی و چند نخی بوجود بیاد، در برنامه خودش رو بصورت درصد بالا و پایین نشون میده. اگر دلیل شما دخالت Turbo Boost در فرکانس هسته ها است، حالا که غیر فعال ئه، چرا همچنان همون شرایط برقرار ئه؟

خیلی ممنون استاد .
استاد ، برای من که همه ی اسناد و مدارک نشون میده که هر نخی که میسازیم (توسط کلاس Thread) ، درون یک هسته ی منطقی (چه میخواد اون هسته ی منطقی داخل یک هسته ی فیزیکی باشه یا نباشه) ، بصورت همزمان اجرا میشه .
سند آخر اینکه شما میگین هر تعداد نخ که میسازیم ، در یک لحظه فقط در یک هسته ی فیزیکی اجرا میشه ، پس چرا کد زیر :


private void TransparentControl4_Click(object sender, EventArgs e)
{
Thread[] thread = new Thread[16];


for (int i = 0; i < thread.Length; i++)
{
thread[i] = new Thread(new ThreadStart(this.NewThreadMethod_1));
}


for (int i = 0; i < thread.Length; i++)
{
thread[i].Start();
}



}


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 هسته ی فیزیکی داره) ، تعداد آرایه ی thread را اگه 1 یا 2 یا 3 یا 4 عضو بگیرم (یعنی 1 یا 2 یا 3 یا 4 نخ میسازم و اجرا میکنم) ، تقریبا زمان شون با هم یکی هست (با اختلاف 2 تا 3 ثانیه) و تقریبا همه شون بین 23 تا 26 ثانیه ، کدش اجرا میشه اما تعداد این آرایه را از 4 تا که بیشتر میکنم (5 و بالاتر) ، هر بار 7 ثانیه به اجراش اضافه تر میشه و دیرتر تموم میشه؟

یعنی وقتی 5 نخ (5 عضو برای اون آرایه ی thread) میسازم ، 32 ثانیه طول میکشه ، 6 نخ ، 40 ثانیه طول میکشه ، 7 نخ ، 45 ثانیه طول میکشه ، 8 نخ ، 51 ثانیه طول میکشه ، 10 نخ ، 63 ثانیه طول میکشه ، 12 نخ ، 75 ثانیه طول میکشه و 16 نخ ، 100 ثانیه طول میکشه؟

چرا تا تعداد نخ هام ، هنوز برابر با تعداد هسته هام نشد ، اجرای همه شون تقریبا 25 ثانیه زمان میبرد ولی تعداد نخ هام که بیشتر از تعداد هسته هام شد ، به همون اندازه ، اجراشون بیشتر طول کشید؟
چرا زمانی که 8 نخ ساختم ، تقریبا 2 برابر بیشتر از زمانی که 1 نخ یا 2 نخ یا 3 نخ یا 4 نخ ساختم ، طول کشید؟
چرا زمانی که 16 نخ ساختم ، تقریبا 4 برابر بیشتر از زمانی که 1 نخ یا 2 نخ یا 3 نخ یا 4 نخ ساختم ، طول کشید؟

قطعا شما هم اگه توی پردازنده تون از 8 نخ بیشتر بسازین ، به همون مقدار ، به زمان اش اضافه میشه اما زیر 8 نخ (مخصوصا 4 نخ چون 4 هسته ی فیزیکی دارین) ، زمان شون فرق خاصی نخواهند داشت .



نقل قول نوشته شده توسط the king مشاهده تاپیک
من در همون پست قبلی گفتم که شما وقتی Turbo Boost رو غیر فعال کنید همین شرایط برقرار ئه و ربطی به Turbo Boost نداره. Turbo Boost نقش اش افزایش کارایی است، اگر قرار بود هر چقدر از پردازنده بیشتر کار میکشیم Turbo Boost هسته ها رو کندتر کنه که همه غیر فعالش می کردند. کی خوشش میاد پردازنده اش وقتی که نیاز به پردازش بالاتر داره کندتر بشه.
همون عکسی که دادین ، 3 سئوال مونده به آخری را دقت کنین :


how can i see the highest turbo boost frequency for my processor?
if you set the number of cores to one in the BIOS and run the intel proccessor identification utility , it shows the highest turbo boost frequency .

اگه اشتباه نکنم ترجمه اش اینه :
"اگر تعداد هسته را به (مقدار) 1 در بایوس تنظیم کنید ، و برنامه ی intel proccessor identification را اجرا کنید ، بیشترین فرکانس turbo boost را نمایش میده ."

اگه ترجمه را تایید میکنید پس بگید چرا گفته وقتی میتونید متوجه ی بیشترین فرکانس turbo boost بشید که تعداد هسته را در بایوس تون به 1 تنظیم کنید (و موقتا بقیه ی هسته ها را نادیده بگیرید) ؟