ورود

نسخه کامل مشاهده نسخه کامل : خاصيت Multi Threading



Gabana
18-11-2007, 18:42
مقدمه...

زماني كه پردازنده هاي دو هسته اي روانه بازار شدند بحث بر سر اين بود كه آيا نرم افزار ها و خصوصا بازي هاي فعلي توانايي كافي براي استفاده از تمام قابليت هاي چند هسته اي ها را دارند يا خير.
مقالات متعددي منتشر شده و همگي بر اين قضيه اذعان داشتند كه بازي ها و نرم افزار هاي موجود توانايي استفاده از قابليت هاي خاص پردازنده هاي چند هسته را ندارند. بهمين دليل بود كه در چند ماهه اول ورود اين پردازنده ها همچنان پردازنده هاي تك هسته اي محبوب گيمر ها بودند .
اما به تدريج و با بررسي هاي انجام شده بازي و نرم افزار هاي جديد خاصيت Multi Thread بودن را در خود ايجاد كردند.

Multi Threading بحثي بوده كه بار هاي توي فروم بررسي شده و همينطور سوالات زيادي هم پرسيده شده.
سعي كردم در اين رابطه مقدمه كوتاهي بنويسم تا بيشتر و بهتر با اين مفهوم آشنا بشيم .
هر چند در اين مورد جستجو زياد داشتم ولي هنوز در قالب كلي يك مطلب نميشه ارايه داد بنابراين بهمين چند خط اكتفا مي كنم .

توضيح...

اما در اين بين Software Developer ها چه بايد بكنند ؟ يكي ديگر از مواردي كه باعث محدوديت در استفاده از قابليت هاي پردازنده هاي چند هسته اي مي شود نرم افزاري است كه بر روي آن به اجرا در مي آيد. براي اكثر كاربران بهترين حالت بهره از پردازنده هاي چند هسته اي زماني اتفاق مي افتد كه نياز به Multi Tasking داسته باشند. براي مثال در كنار گوش دادن به موسيقي از فتوشاپ هم استفاده كنند و يا در هنگام ديدن صفحات وب ويروس يابي نيز داشته باشند. در اين هر Task به يك Core تخصيص داده مي شود.

اما اگر همين كاربر يك نرم افزار را بر روي پردازنده چند هسته اي به اجرا در آورد كارآيي قابل توجهي را ملاحظه نخواهد كرد. به اين دليل كه اكثر نرم افزار هاي واقعا Multi Thread واقعي نيستند . Application ها مي توانند ظاهرا Multi thread باشند. بدين معني كه وقتي رابط گرافيكي يه ويروس ياب را فعال مي كنيد در كنار آن ويروس اسكن را نيز فعال كنيد. در اين حالت GIU در يك Thread و Virus Scan در Thread ديگر فعال مي شود. اما در واقع اين حالت Multi Thread واقعي نيست. Multi Thread واقعي زماني است كه كل حجم كاري به ميزان مساوي بين هسته هاي پردازنده تقسيم شود. در اين مثال حجم كاري GIU مسلما كمتر از حجم كاري Virus scan است .

توسعه يك نرم افزاري كه بتواند حالت واقعي Multi Thread را داشته باشد كار دشواري است . چراكه زمان زيادي را به سيكل توسعه نرم افزار اضافه مي كند و بهمين دليل افزايش هزينه ناگزير خواهد بود. بهمين دليل است كه در حال حاضر بسياري از نرم افزار هاي كاربردي بصورت واقعي Multi Thread نيستند .
بنابراين استفاده از هسته هاي پردازنده هاي Multi Core نيازمند نرم افزار هاي و Game هايي است كه بطور واقعي از اين خاصيت پشتيباني كنند. در حال حاضر تعدادي از بازي هاي جديد توانايي پشتيباني از اين خاصيت را حتي بر روي پردازنده چهار هسته اي نيز دارا هستند ...

ختم كلام .. :دي

msnasiri
18-11-2007, 19:48
مطمئنم خودتون خیلی بهتر و بیشتر می تونید بگید ولی گفتم بطور خلاصه باز کامل تر کنم مطلب زیر رو بگم
multi threading یعنی اینکه خود برنامه بیاد بگه اینا جدا از همن و می شه که اینا همزمان با هسته های مختلف کار کنن
ولی اگر این خاصیت نبود برنامه کاملاً یکپارچه بود و هسته ها نمی دونستن که آیا می تونن که مثلاً فلان تکه رو از هم جدا کنن یا نه واسه همین از هم جدا نمی کنن ولی اگه این خاصیت باشه دیگه این مشکل نیست چون خود برنامه نویس برای سخت افزار مشخص می کنه و دیگه مسلماً سرعت می ره بالاتر

اگرم خراب گفتم اول به بزرگواری خودتون ببخشید بعدشم تصحیحش کنید

Gabana
20-11-2007, 20:55
پست اول Update شد ..