فن آوری Hyper-Threading چیست

فن آوری Hyper-Threading چیست



فن آوری Hyper-Threading چیست: عرضه پردازنده‌هاي Core i7 بار ديگر تکنولوژي Hyper Threading را سر زبان‌ها انداخت. شرکت اينتل نخستين بار اين تکنولوژي را با پردازنده‌هاي Pentium 4 معرفي کرد ولي پس از به پايان رسيدن عمر اين پردازنده‌ها و ظهور مهندسي Core 2 اين تکنولوژي ديگر هيچ گاه به کار گرفته نشد. Hyper Threading بار ديگر زنده شده و بسياري از پردازنده‌هاي کنوني اينتل از آن بهره مي‌برند. هم اکنون پردازنده‌هاي Atom، Core i7 و برخي مدل‌هاي Core i5 از اين تکنولوژي بهره مي‌برند. امروز قصد داريم Hyper Threading و نحوه عملکرد آن‌را براي شما باز کرده و تاثير به کارگيري آن روي کارآيي پردازنده را بررسي کنيم (فن آوری Hyper-Threading چیست).

چرا MultiThreading

پردازنده‌ها به‌طور معمول مي‌توانند از هر نرم‌افزار يا برنامه تنها يک دستورالعمل را در يک لحظه معين پردازش کنند. اين قانون حتي در مورد پردازنده‌هاي چند هسته‌اي هم برقرار است، يعني هر هسته پردازشي درون پردازنده در يک زمان مشخص، تنها يک دستورالعمل را پردازش مي‌کند. اين دستورالعمل‌ها به اصطلاح thread ناميده مي‌شوند.

خيلي از کاربران وقتي چندين نرم‌افزار را به صورت همزمان اجرا مي‌کنند (Multi tasking) فکر مي‌کنند پردازنده کامپيوتر آن‌ها برخلاف گفته بالا عمل مي‌کنند ولي در عمل شيوه عملکرد پردازنده به همان صورتي است که در بالا گفته شده يعني در هر لحظه، تنها يک دستورالعمل دريافتي پردازش مي‌شود. بديهي است که يک پردازنده چهار هسته‌اي طبق گفته بالا در هر لحظه مي‌تواند 4 دستورالعمل را پردازش کند.

اما اين‌که وقتي چندين نرم‌افزار را با هم اجرا مي‌کنيد چه اتفاقي مي‌افتد؟ پاسخ بسيار ساده است. پردازنده زمان و توان خود را بين برنامه‌هاي در حال اجرا و دستورالعمل‌هاي رسيده از آن‌ها تقسيم مي‌کند. اين رفت و برگشت و سوييچ کردن ميان نرم‌افزارها به قدري سريع صورت مي‌گيرد که کاربر فکر مي‌کند پردازنده تمامي دستورالعمل‌ها را همزمان اجرا مي‌کند و به همين دليل حس Multi Tasking به کاربر القا مي‌شود (فن آوری Hyper-Threading چیست).

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

Hyper Threading چيست؟

تکنولوژي “Hyper Threading” به پردازنده اين امکان را مي‌دهد که در هر لحظه، دو بسته اطلاعاتي را پردازش کند. اين بدان معناست که اگر پردازنده شما اين قابليت را داشته باشد، هر هسته پردازشي قرار گرفته روي آن مي‌تواند در يک لحظه دو دستورالعمل (thread) را پردازش کند. در واقع با اين تکنولوژي سيستم‌عامل به هر هسته پردازشي به چشم يک دو هسته‌اي نگاه مي‌کند که قابليت پردازش همزمان دو دستورالعمل را دارد.

زماني‌که سيستم عامل مورد استفاده شما از اين تکنولوژي پشتيباني ‌کند و پردازنده نيز داراي چنين قابليتي باشد، هر هسته فيزيکي قرار گرفته روي پردازنده، از نظر سيستم عامل يک دو هسته‌اي خواهد بود. بنابراين سيستم عامل يک تک هسته‌اي با تکنولوژي Hyper Threading را به عنوان يک دو هسته‌اي مي‌شناسد و اگر به پنجره Task Manager برويد، دقيقا دو هسته پردازشي براي آن در نظر خواهد گرفت. به همين ترتيب يک چهار هسته‌اي با تکنولوژي Hyper Threading از نظر سيستم‌عامل يک 8 هسته‌اي خواهد بود (فن آوری Hyper-Threading چیست).

اينتل سه مزيت عمده براي تکنولوژي Hyper Threading برشمرده است:
  • بهبود پشتيباني از کدهاي Multi -Thread
  • امکان اجراي هم زمان چندين thread
  • بهبود زمان پاسخگويي و عکس العمل پردازنده به دستور العمل‌هاي دريافتي.

طبق اطلاعات منتشر شده از سوي اینتل، مزيت اول تنها 5 درصد به سطح فيزيکي پردازنده افزوده (افزايش اندازه فيزيکي پردازنده) ولي در عوض 15 تا 30 درصد، کارآيي را افزايش مي‌دهد، به علاوه اينتل ادعا مي‌کند يک پردازنده با تکنولوژي Hyper Threading از يک پردازنده کاملا مشابه بدون اين تکنولوژي تا 30 درصد سريع‌تر است.

تاثير اين تکنولوژي روي کارآيي تا حدود زيادي به نرم‌افزار مورد استفاده وابسته است. ضمن اين‌که بايد اشاره کرد که اکثر نرم‌افزارهاي جديد، از ساختار Multi Thread بهره برده و توانايي ارسال همزمان چندين دستورالعمل به پردازنده را دارند (فن آوری Hyper-Threading چیست).

Multi Thread يا MultiCore

ممکن است اين سوال در ذهن شما شکل گرفته باشد که با افزايش تعداد هسته‌هاي پردازشي هم مي‌توان تعداد زيادي دستورالعمل همزمان روي پردازنده جريان پيدا کرده و پردازش شوند و ديگر چه لزومي به استفاده از تکنولوژي Hyper Threading است. در جواب بايد گفت که افزايش تعداد هسته‌هاي پردازشي فيزيکي در پردازنده يکي از راه‌هاي افزايش قدرت پردازنده در اجراي هم زمان چندين دستورالعمل است ولي بايد توجه داشت که افزايش تعداد هسته‌هاي پردازشي فيزيکي، اندازه پردازنده و مصرف انرژي را تا حد زيادي افزايش مي‌دهد. ولي Hyper Threading چنين عيبي را ندارد چرا که تنها راه را براي استفاده بهينه واحدهاي پردازشي پردازنده باز مي‌کند. اين تکنولوژي واحدهاي پردازشي خالي را با دستورالعمل‌ها پر کرده و در واقع به پردازنده اين امکان را مي‌دهد که از حداکثر توان پردازشي خود استفاده کند (فن آوری Hyper-Threading چیست).

سخت‌افزار و نرم‌افزارهاي سازگار

هم اکنون تمامي پردازنده‌هاي Core i7 از تکنولوژي Hyper Threading بهره مي‌برند. اکثر پردازنده‌هاي کم مصرف Atom نيز به HT مجهز شده‌اند و تنها چند مدل محدود از آن‌ها فاقد اين تکنولوژي هستند. يکي از دلايل موفقيت پلتفرم اتم و پردازنده‌هاي اتم که در نت‌بوک‌ها به کار گرفته مي‌شود، وجود همين تکنولوژي به حساب مي‌آيد.

پردازنده‌هاي Core i5 سري 600 نيز که اخيرا از خانواده پردازنده‌هاي Clarkdale معرفي شده‌اند از HT بهره مي‌برند. ضمن اين‌که Core i3هاي سري 300 که براي لپ‌تاپ‌ها در نظر گرفته شده‌اند از Hyper Threading پشتيباني مي‌کنند.

سيستم‌عامل‌هاي جديد اعم از ويندوز 7، ويندوز ويستا و گونه‌هاي مختلف لينوکس همگي با Hyper Threading سازگاري کامل دارند.

براي استفاده از Hyper Threading بايد اين قابليت را از درون بايوس مادربورد فعال کنيد. در اين صورت سيستم‌عامل تعداد هسته‌هاي پردازنده شما را دو برابر تعداد هسته‌هاي واقعي پردازنده خواهد ديد.


قبلا در خصوص انواع CPU و به ویژه تفاوت CPU های Core I5 و Core I7 صحبت کردیم و اشاره کردیم که CPU های Core I7 تفاوت اصلی که با Core I5 ها دارند دو چیز است که Turbo Boost و Hyper-Threading است. در این مطلب می خواهیم به شما تفاوت بین Hyper-Threading ، Multi-Threading و Super-Threading را در CPU ها معرفی کنیم و تفاوت های هر کدام را عنوان کنیم. بصورت کلی زمانیکه صحبت از Hyper-Threading می کنیم در خصوص استفاده از یک CPU صحبت می کنیم که بصورت منطقی به چندین CPU یا Core تقسیم بندی شده است اما این مزیت را به ما می دهند که از امکانات پردازشی چند CPU و البته استفاده از منابع سیستمی معادل یک CPU سخت افزاری استفاده کنیم. در چنین حالتی پردازش های شما درست است که وارد یک CPU سخت افزاری می شوند اما در نهایت بین دو هسته CPU تقسیم خواهند شد، اینکار با استفاده از به اشتراک گذاری، پارتیشن بندی و همچنین تقسیم کردن منابع بین دو عدد هسته CPU انجام می شود. در واقع قابلیت Hyper- Threading به ما اجازه استفاده همزمان از چندین نرم افزار بدون کاهش سرعت پردازشی در سیستم را می دهد.

 

Multi- Threading زمانی اتفاق می افتد که پردازش ها بصورت قطعه قطعه شده بر روی CPU ها بصورت زمانبندی شده اجرا می شوند و این تصور را برای کاربر ایجاد می کنند که تمامی برنامه ها بصورت همزمان اجرا می شوند. این در واقع کاری است که بصورت روزمره در کامپیوترهای شما اجرا می شوند. Super- Threading این اجازه را به ما می دهد که Thread های از پردازش های مختلف را بتوانیم بصورت همزمان اجرا کنیم اما بر خلاف Multi-Threading که هر Process برای خودش یک وهله زمانی یا Time Slot دریافت می کرد در Super-Threading فقط Thread های مخصوص یک Process اجرا خواهند شد. اما هر باری که برای CPU برای مثال 4 عدد دستور صادر شود، همه آنها فقط یک Process را ایجاد می کنند. Hyper-Threading یک قدم از این مرحله نیز جلوتر گذاشته است، در Hyper-Threading به شما اجازه داده می شود که پردازش های مختلف در یک لحظه صادر شوند، در بازگشت زمان پرت CPU بهینه سازی می شود، البته این فرآیند اصلا ساده نیست اما به هر حال برای اطلاعات بیشتر در این خصوص پیشنهاد می کنم نگاهی به وب سایت شرکت Intel بیندازید. البته تا این لحظه تعاریفی که از Hyper-Threading ، Multi-Threading و Super-Threading گفتیم با توجه به جستجوهای مختلف بوده است که در وب سایت های مختلف منتشر شده اند اما نکته در اینجاست که درست است تعاریفی که تاکنون گفتیم در خصوص این موارد درست است اما اکثر ما این قابلیت ها را به شکل دیگری شنیده ایم و ما قصد داریم معرفی متفاوت تری از این سه مورد ارائه کنیم. هر چیزی که در بالا گفتیم را به خاطر بسپارید اما در ادامه تعاریف دیگری از این سه قابلیت مهم در CPU ها را ارائه خواهیم کرد.

Multi-Threading چیست ؟


Multi-Threading به کامپیوترهایی گفته می شود که دارای سخت افزارهایی هستند که قابلیت اجرای بهینه چندین Thread را دارند. در واقع زمانیکه صحبت از Multi-Threading می شود باید سیستم های چند پردازشی یا Multiprocessing System ها مثل سیستم های چند هسته ای که یک CPU فیزیکی دارای چندین هسته درون خود است را در ذهن تصور کنیم که در چنین حالتی Thread ها از منابع به اشتراک گذاری شده در یک هسته از این CPU ها با سایر CPU ها می توانند استفاده کنند. سیستم های Multiprocessing شامل قسمت های پردازشی، کش CPU و Transaction Look Aside Buffer یا TLB هستند. زمانیکه سیستم های چند پردازنده ای یا Multiprocessing شامل چند CPU هستند، در Multithreading اولویت با انجام دستورات و thread ها بصورت موازی بر روی Core های موجود بر روی یک CPU قرار داده شده است. این دو تکنیک در واقع مکمل همدیگر هستند و برخی اوقات پیش می آید که در سیستم ها چندین CPU با قابلیت Multithreading دارای چندین هسته با قابلیت Multithreading هستند. بنابراین بصورت ساده شما در Multi-Threading می توانید چندین Thread را بصورت موازی در یک CPU که دارای چندین هسته CPU است اجرا کنید (فن آوری Hyper-Threading چیست).

Super-threading چیست ؟


Super-Threading در واقع چیزی شبیه به Multi-threading است که امکان اجرای چندین Thread مختلف بر روی یک CPU تکی بدون اینکه واقعا آنها را در یک وهله زمانی و بصورت همزمان اجرا شوند را می دهد. در واقع از Super-Threading می توان به عنوان یک نوع Multi-Threading یاد کرد که بصورت موقتی انجام می شود و از وهله های زمانی یا Time Slice کردن Thread ها برای آنها استفاده می کند تا اینکه مشابه Multi-Threading آنها را بصورت همزمان اجرا کند. در واقع منطق Super-Threading استفاده از ظرفیت های پرت CPU در زمانی است که مشغول رسیدگی به یک thread است، یعنی اینکه زمانیکه CPU شما در حال انجام پردازش بر روی یک Thread است شما می توانید از ظرفیت های خالی پردازشی CPU بصورت بهینه استفاده کنید. در واقع در Super-Threading سیستم به دنبال چرخه ها یا Cycle های بلااستفاده CPU می گردد و به محض مشاهده آنها Thread دیگری که در صف اجرا بوده است را وارد می کند تا اجرا شود (فن آوری Hyper-Threading چیست).

Hyper-Threading چیست ؟


همانطور که شرکت اینتل برای پردازنده های دو هسته ای یا Dual Core خود اسم Core 2 Due را قرار داد ، برای تکنولوژی Multi-Threading همزمان خود نیز یک علامت تجاری به نام Hyper-Threading قرار داد و در پرازنده های Pentium 4 ، Atom ، Core I7 و برخی از Xeon های خود نیز از آنها استفاده کرد. در واقع Hyper-Threading نسخه Intel ای قابلیت Simultaneous Multithreading یا Multithreading همزمان است. این قابلیت را بصورت خلاصه بر روی CPU ها بصورت HTT که مخفف کلمات Hyper-Threading Technology است نیز عنوان می کنند. تکنولوژی HTT که امروزه به صورت اختصای برای CPU های شرکت اینتل مورد استفاده قرار می گیرد برای بالا بردن فرآیند موازی کاری در محاسبات یا انجام چندین وظیفه یا Task بصورت همزمان بر روی Microprocessor ها به بازار ارائه شد (فن آوری Hyper-Threading چیست).

یک پردازنده با قابلیت Hyper-Threading اینطور به سیستم عامل القا می کند که سیستم شما دارای دو عدد CPU است. در چنین حالتی در سیستم بصورت سخت افزاری یک CPU وجود دارد اما از هسته های این CPU برای تقسیم کردن بار کاری سیستم استفاده می شود و در واقع ما در یک CPU دو عدد Virtual CPU از نظر سیستم عامل خواهیم داشت. اگر می خواهید از قابلیت های موجود در Hyper-Threading استفاده کنید هم سیستم عامل و هم CPU شما باید از این قابلیت پشتیبانی کند ، اگر CPU شما قابلیت Hyper-Threading داشته باشد اما سیستم عامل شما این قابلیت را پشتیبانی نکند قطعا کاهش کارایی سیستم را تجربه خواهید کرد و این امر بصورت برعکس نیز انجام می شود. برای مثال توجه کنید که شرکت Intel پیشنهاد نمی کند که قابلیت Hyper-Threading را روی ویندوز 2000 فعال کنید زیر این سیستم عامل قابلیت پشتیبانی از چندین CPU بصورت همزمان را ندارد (فن آوری Hyper-Threading چیست).

نویسنده : محمد نصیری منبع : انجمن تخصصی فناوری اطلاعات ایران