PDA

مشاهده نسخه کامل : Threads چیست ؟



bill geits
26-03-10, 15:49
سلام . توی نرم افزار cpu-z در زبانه اول برای پردازنده عددی نشون میده تحت نام :
Threads
چیه ؟ و مثلا چرا برای یک پردازنده تک هسته ای مثل پریسکات و هم برای e5300 که دو هسته ای هست ، 2 نشون میده ؟

Labyrinth
26-03-10, 19:20
Threadsدر نرم افزار CPUz نماد تعداد رشته های پردازنده هست

به زبان ساده Threads همان هسته هایی هست که شما در ویندوز در Task Manager دارید

:give_rose:

bill geits
29-03-10, 13:39
پس فرقش با core چیه ؟ مثلا برای یک پردازنده تک هسته ای یک قسمت بیشتر توی task manager بیشتر نیست . اما واسه پریسکات که تک هسته ای هست دو تا Threads نشون میده

Labyrinth
29-03-10, 14:14
پس فرقش با core چیه ؟ مثلا برای یک پردازنده تک هسته ای یک قسمت بیشتر توی task manager بیشتر نیست . اما واسه پریسکات که تک هسته ای هست دو تا Threads نشون میده

تعداد رشته ها وابسته به تکنولوژی پردازنده هست مثلا Corei7 چهار هسته دارد و هشت رشته

به زبان ساده تر هر رشته مثل یک خط فرمان میمونه

8 رشته مساوی 8 خط فرمان برای اجرای دستورات و 2 رشته یعنی 2 خط فرمان !! این رو هم توجه داشته باشید که در تعداد دستورات بالا سرعت اون پردازنده ای بیشتره که تعداد رشته هایش بیشتر هست

موفق باشید

Jagvar
29-03-10, 14:25
البته من با جناب سید موافقم و معماری پردازنده ها کاملا وابسته هست.
به این معنی که سی پی یو هایی که تک هسته ای هستن ولی دو رشته نشان داده می شوند و سی پی یو هایی که دو هسته دارن باز دو رشته نشان می دهند فرقشون توی اینه که
در سی پی یو های تک هسته ای دو رشته ای بخواطر استفاده شدن HT (hyper threading) و این تکنلوژِ در حقیقت برای پردازنده دو هسته مجازی می سازه! نسخه های متفاوتی هم داره که الان نسخه 3 استفاده میشه و مزیت هاشون نسبت به همدیگه رو نمی دونم
اما در سی پی یو های دو هسته ای در حقیقت دو هسته فیزیکی دارند که خوب متعاقبا باید دورشته پردازشی داشته باشیم!
:give_rose:

Shahryar
29-03-10, 14:29
Only the registered members can see the link

موفق باشید ! :give_rose:

bill geits
29-03-10, 23:06
یعنی core هسته فیزیکی و Threads هسته مجازی است ؟
و این که پریسکات دو تا رشته داره ( با وجود تک هسته ای بودن ) و e5300 دو هسته ای هم دو تا رشته داره ، یک حسن برای پریسکات محسوب میشه ؟
بعد یه پردازنده تک هسته ای مثل پریسکات که دو تا رشته داره توی نرم افزار های تست دما دارای یک دما برای سی پی یو هست یا دو تا ؟
ممنون

Jagvar
30-03-10, 00:18
یعنی core هسته فیزیکی و Threads هسته مجازی است ؟
و این که پریسکات دو تا رشته داره ( با وجود تک هسته ای بودن ) و e5300 دو هسته ای هم دو تا رشته داره ، یک حسن برای پریسکات محسوب میشه ؟
بعد یه پردازنده تک هسته ای مثل پریسکات که دو تا رشته داره توی نرم افزار های تست دما دارای یک دما برای سی پی یو هست یا دو تا ؟
ممنون

البته شاید توضیح من یکم بد بوده! ولی هر چی هست و نیست زیر سر HT هستش و انیکه ایا مزیت هست یا نه باید در کارایی دید. چون در اپتدای این که این تکنلوژی وارد بازار بشه ملت فکر می کردن که خیلی توپ هستش ولی در نسخه های اولیه و اپتدای کار کارایی خودشو نشون نداد!
- نه دیگه قرار نیست برای چیزی که وجود نداره دما نشون داده بشه:wink:

JEskandari
30-03-10, 00:52
بهتر بودن یک پردازنده هم به Thread ها بسته هست هم به معماری خود پردازنده.
اگر معماری دو پردازنده یکی باشه اونوقت هسته های حقیقی بهتر از هسته مجازی هستند.
توجه کنید در Core I7 حالت hyperthreading را داره با فعال کردن اون عملکرد دو برابر افزایش پیدا نمیکنه
بلکه بسته به بهینه بودن برنامه برای اونها قدرت پردازش حداکثر تا 25% تغییر پیدا میکنه.

Labyrinth
30-03-10, 11:06
رشته ها اینجوری حساب میشن

پردازنده 5300 دارای دو هسته فیزیکی و برای هر هسته یک رشته
پردازنده Corei7 920 دارای 4 هسته ی فیزیکی و برای هر هسته دو رشته

ایجا شما به فرکانس هم باید توجه کنید

amir.45
30-03-10, 12:05
کل این صفرو خوندم هیچی نفهمیدم!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!

JEskandari
30-03-10, 12:12
کل این صفرو خوندم هیچی نفهمیدم!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!

با چی هیچی نفهمیدی Core ها تعداد هسته های حقیقی توی پردازنده هست.
Thread هم تعداد پردازش هایی هست که هر پردازنده در یک لحظه انجام میده.
تعداد Thread با تعدا core برابر هستش مگر آنکه اون پردازنده از تکنولوژی HyperThtrad
استفاده کنه که در این صورت تعداد thread ها دو برابر تعداد Core ها هستش
یعنی در حالت معمول هر هسته فقط یک پردازش در لحظه انجام میده ولی اگر این
تکنولوژی را داشته باشه میتونه دو پردزش را همزمان انجام بده

تمام شد و رفت

Xtreme
30-03-10, 13:11
سلام ..

فکر می کنم بهتر باشه به Thread بصورت یک مفهوم نگاه کنید. Thread اصلا ربطی به Core ( یا همون هسته ) نداره و یک مفهومه .
Thread یا به قول دوستان همون رشته " اصلی ترین واحد پردازش در پردازنده هست " بعنوان مثال شما قراره یک پروسه مثل : 2*3+2-(2+1) رو در پردازنده انجام بدین. اسم این رو گذاشتیم Process .
بنابراین شما نمی تونید این پروسس رو بسته بندی کنید و تحت لوای یک دستور یا یک واحد پردازش بدید به پردازنده تا پردازش بشه.
این پروسس خودش شما مجموعه ای از Instruction هاس. برای آنکه پردازنده بتونه این Process رو پردازش کنه باید این پروسس تبدیل بشه به یک یا چند Thread ( حالا شاید بهتر متوجه بشید که Thread به نوعی کوچکترین واحد پردازشی در پردازنده هست )
اونوقه این پروسس تبدلیل میشه به چند Thread و برای پردازش به هسته پردازشگر می ره.

مفهوم Multi Threading هم بر همین اساس است. این چیزی که بهش هسته مجازی می گن شاید کمی ذهن رو از واقعیت قضیه دور کنه. ما فقط یک هسته فیزیکی داریم با قابلیت Multi Threading .
در این صورت وقتی رشته اول وارد Core و پس از طی مقداری از پردازش , رشته دوم هم وارد میشه. یعنی هسته صبر نمی کنه تا پردازش رشته اول کامل تموم بشه و رشته دوم رو بگیره.
نهایتا از این پردازنده چند رشته ای باید به مفهوم پردازش موازی برسیم. یعنی منابع " تا زمان تمام شدن پردازش یک واحد قابل پردازش یا همون رشته " نباید بیکار باشن و پردازش رشته دوم رو شروع می کنن.

امیدوارم درست توضیح داده باشم !
ممنون

Stream
30-03-10, 20:24
سلام ..


مفهوم Multi Threading هم بر همین اساس است. این چیزی که بهش هسته مجازی می گن شاید کمی ذهن رو از واقعیت قضیه دور کنه. ما فقط یک هسته فیزیکی داریم با قابلیت Multi Threading .
در این صورت وقتی رشته اول وارد Core و پس از طی مقداری از پردازش , رشته دوم هم وارد میشه. یعنی هسته صبر نمی کنه تا پردازش رشته اول کامل تموم بشه و رشته دوم رو بگیره.
نهایتا از این پردازنده چند رشته ای باید به مفهوم پردازش موازی برسیم. یعنی منابع " تا زمان تمام شدن پردازش یک واحد قابل پردازش یا همون رشته " نباید بیکار باشن و پردازش رشته دوم رو شروع می کنن.

امیدوارم درست توضیح داده باشم !
ممنون

سلام رئیس بزرگ،

برادر این توضیحاتی که دادید تا جایی که ما می دونستیم به مفهوم Instruction Pipeline برمی گشت. یعنی با بالا بردن Stage های Pipeline باعث میشن در کل Throughput پردازنده (تعداد Instruction ها در هر Cycle) بالا بره... مثل عکس زیر:



Only the registered members can see the link



در Cycle اول Instruction اول وارد میشه، ولی پردازش Instruction اول 5 Clock Cycle طول می کشه، به جای اینکه صبر کنند تا Instruction اول کل پردازشش تموم بشه، بعد از یک Cycle ؛ Instruction بعدی رو وارد می کنند. اگه دقت کنید پردازش هر Instruction پنج مرحله داره (در این مثال) ، و این مراحل همگی توسط قسمت متفاوتی از پردازنده انجام میشن. برای همین هم در یک Clock Cycle خاص هیچ گاه دو نوع پردازش همنوع دیده نمیشه (خطوط عمودی) ... این کار باعث میشه موقع پردازش موقعی که Instruction هایی برای پردازش وجود دارند قسمتی از پردازنده بیکار باقی نمونه و اصطلاح علمی Instruction Starvation در قسمتی از پردازنده بوجود نیاد. عکس بالا یک Five Stage Pipeline رو نشون میده.

مثلا مایکروکنترلر های AVR/PIC اکثرا 2 مرحله Pipeline دارند، و بعضی پردازنده های Intel Pentium 4 حتی 20 مرحله Pipeline هم داشتند. Intel Core i7 ها هم که کلا مراحل Pipeline اشون کاملا Dynamic شده ... این به این معنی نیست به تعداد مرحله ها Thread داریم.


زمانی می تونیم بگیم این پردازنده دو Thread داره، که بتونه در یک Clock Cycle ، دو پردازش مثل هم رو پردازش کنه. مثلا اگه می تونست در Cycle اول ، Instruction 1 و Instruction 2 رو همزمان وارد کنه، و مثلا دو پردازش مختلف IF یا EX یا ... رو در یک Cycle انجام بده، اون جا می تونستیم بگیم این به معنی Multithreading است.


امیدوارم کمک کرده باشه.
مخلصیم