تفاوت بین Hyper-Threading ، Multi-Threading و Super-Threading در CPU ها چیست ؟

تفاوت بین Hyper-Threading ، Multi-Threading و Super-Threading در CPU ها چیست ؟

قبلا در خصوص انواع CPU و به ویژه تفاوت CPU های Core I7 و Core I5 صحبت کردیم و اشاره کردیم که 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 برای مثال ۴ عدد دستور صادر شود ، همه آنها فقط یک Process را ایجاد می کنند. Hyper-Threading یک قدم از این مرحله نیز جلوتر گذاشته است، در Hyper-Threading به شما اجازه داده می شود که پردازش های مختلف در یک لحظه صادر شوند، در بازگشت زمان پرتCPU بهینه سازی می شود، ما قصد داریم معرفی متفاوت تری از این سه مورد ارائه کنیم. هر چیزی که در بالا گفتیم را به خاطر بسپارید اما در ادامه تعاریف دیگری از این سه قابلیت مهم در 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 است اجرا کنید.

 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 چیست ؟

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

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

 

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

 

https://www.favaafzar.com/5366/education/%d8%b4%d8%a8%da%a9%d9%87-%da%a9%d8%a7%d9%85%d9%be%db%8c%d9%88%d8%aa%d8%b1%db%8c-network-%da%86%db%8c%d8%b3%d8%aa-%d8%b4%d8%a8%da%a9%d9%87-%d9%86%db%8c%d8%a7.aspx