تفاوت Thread , Core

ما این را یاد گرفته ایم که CPU مغز کامپیوتر است!  به نظر می رسد اغلب افراد این مسئله را فراموش می‌کنند. احتمالاً به این دلیل است که بیشتر  در وهله اول در مورد CPU ها اطلاعات کمی داریم.  نمی‌دانیم که پردازنده ها چطور کار می‌کنند؟ یا از عواملی که در سرعت و کارایی آن ها اهمیت دارند، بی خبریم؛ و به همین دلیل  اکثر افراد به هنگام خرید لپ تاپ یا آل این وان، انتخاب پردازشگر را تصادفی و بر اساس شانس یا نظر فروشندگان پایان می‌دهند.  چند نکته اساسی وجود دارد که شما باید در مورد CPU بدانید. در  مقاله مجله  DELL  اندک  توضیحاتی درباره واحد پردازشگر مرکزی، به تعریف هسته و هسته مجازی پرداخته و سپس تفاوت های Core و Thread را برای شما شرح می دهیم؛  


هسته یا Core در پردازنده ها چیست؟

پیش از بیان تفاوت Core و Thread، به تعریف برخی از مفاهیم اصلی بپردازیم. قبل از ساخت  پردازنده های چند هسته ای، CPU ها (منظور یک چیپ فیزیکی است که بر روی سوکت به مادربورد متصل بود) تنها میتوانستند در یک زمان تنها یک کار (single task) را انجام دهند.

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

  • تامین برق اختصاصی و منابع نصب برای هر CPU ضروری بود. زیرا تراشه‌های مختلفی  بودند. این واقعاً چیز خوبی نبود.
  • طراحی و اجرای چنین مدار هایی که دارای چندین پردازشگر بودند، بسیار پیچیده و هزینه بر می شد.
  • قیمت یک پردازنده زیاد بود و  باید بجای یکی چند تا از آن را بخرید.
  • در نتیجه ، یک مجموعه از چندین CPU می‌توانند گرمای زیادی تولید کنند، بنابراین باید از تجهیزات خنک سازی بیشتری نیز استفاده می شد.
  •  اینگونه شد که مفاهیم جدید مانند Hyper-Threading و Multi-Core وارد این عرصه  شدند.

هسته های چندگانه در یک پردازنده

ایده اتصال تراشه‌های مختلف CPU بر روی مادربورد هر چند شدنی بنظر می رسید، اما هزینه بالا باعث محدودیت می شد؛ بنابراین این ایده واقعا خوب نبود، البته در کامپیوتر های حرفه ای و Workstation نظیر کیس تاور های Alienware امروزه ما شاهد وجود بیش دو پردازنده مرکزی و دو پردازنده گرافیکی هستیم که عملکرد بی نظیری دارند و استفاده آن ها فقط برای افراد حرفه ای مناسب است؛ زیرا هنوز هم قیمت بالایی دارند.



بنابراین، به عنوان گام موثر بعدی برای بهبود عملکرد پردازنده ها، تولید کنندگان به این فکر افتادند که درون یک واحد پردازنده واحد های پردازشی کوچک تری قرار دهند که این واحد ها «هسته» این واحدها «Core» نامیده می‌شدند.

شرکت های تولید کننده پردازنده هسته‌های اضافی را به واحد مرکزی پردازش افزودند. یک پردازنده دو هسته‌ای «Dual Core» دارای دو واحد پردازشی است، بنابراین ما یک پردازنده را در نظر می گیریم که دارای 2 هسته در داخل آن است ولی در سیستم عامل آن را دو پردازنده در نظر می گیرد. پروسه‌های مختلف می‌توانند از هر دو هسته به صورت همزمان استفاده کند. این می‌تواند سرعت سیستم را بالا ببرد، چون کامپیوتر می‌تواند چند کار را به صورت همزمان انجام دهد. فکرش را کنید که این دو هسته تبدیل به هشت هسته و یا بیشتر شود!

تعداد هسته بالا چه فایده ای به غیر سرعت می تواند برای کاربران داشته باشد؟

هر چه یک کامپیوتر، Core یا هسته بیشتری داشته باشد، کارهای بیشتری را می‌تواند به صورت همزمان انجام دهد. این موضوع کارایی را به طور کلی افزایش می‌دهد، حتی اگر در حال انجام فقط یک کار هم باشید، کامپیوتر باید در پس‌زمینه کارهای دیگری هم انجام دهد. با یک پردازنده چند هسته‌ای، کامپیوتر می‌تواند هسته‌های دیگر را به این کارهای پس‌زمینه‌ای اختصاص دهد، تا از کند شدن برنامه مورد نیاز شما جلوگیری شود. پیدایش پردازنده‌های دو هسته‌ای تجربه بسیار بهتری را برای کاربران کامپیوترهای شخصی به ارمغان آورد. البته همانطور که در بخش بالا به آن اشاره شد در حال حاضر پردازنده های 6 و 8 هسته ای نیز به بازار آمده اند که در کنار شش یا هشت هسته اصلی از 12 هسته مجازی نیز پشتیبانی می کنند که یکی از این محصولات Core i7-5820K می باشد که دارای 15 مگابایت حافظه کش است؛ این مدل یکی از 5 پردازنده پر سرعت دنیا در زمان خود به حساب می آمد، البته در خانواده کامپیوترهای خانگی.

thread چیست و چه کاربردی در CPU دارد؟

می دانیم که منتظرید تفاوت Core و Thread را بدانید،  پیش از بیان تفاوت هسته و هسته مجازی یک مفهوم دیگر را توضیح دهیم. thread یا نخ اصطلاحا به رشته دستورالعمل هایی گفته می شود که به پردازنده ارسال می گردد. پردازنده ها در حالت معمول می توانند فقط یک دستورالعمل را از نرم افزار دریافت کرده و پردازش کنند یا به صورت واقعی تر هر برنامه در حالت عادی تنها بر روی یک ترد عملیات خود را انجام می دهد که به آن Main گفته می شود. در حالت عادی و single thread دستورالعمل 2 باید منتظر اجرای دستورالعمل 1 بماند تا نوبت آن شود و این یعنی کاهش سرعت و عملکرد پردازنده. در پردازنده های دو و چند هسته ای هم همینطور است یعنی هر هسته در یک زمان مشخص فقط یک دستور را اجرا خواهد کرد. اگه 4 هسته وجود داشته باشد، می شود 4 دستور اما با تکنولوژی هایپر تردینگ Hyper-Threading شرکت اینتل، هسته های واقعی در پردازنده به هسته های مجازی تقسیم می شوند. یعنی اگه یک پردازنده 2 هسته واقعی داشته باشد، این دو هسته هر کدام به 2 هسته مجازی تقسیم می شوند که هر کدام از آن ها می توانند یک دستورالعمل را اجرا کنند، یعنی ما با دو هسته واقعی در آن واحد 4 دستور اجرا می کنیم.

در حالیکه در حالت بدون تکنولوژی Hyper Threading با دو هسته واقعی تنها 2 دستور را می توان اجرا کرد. در این عمل، توان یک هسته واقعی بین دو هسته مجازی تقسیم می شود. مثال واضح به این صورت است که شما 4 برنامه را همزمان اجرا کرده اید. Word، فتوشاپ، گوگل کروم و Media Player. حالا هر کدام از این ترد ها یا هسته های مجازی مسئولیت یکی از این برنامه ها را به عهده خواهند گرفت. بنابراین هر ترد کار خود را انجام می دهد و حتی اگه یکی از برنامه ها هنگ کرده برنامه های دیگر به کار خود ادامه خواهند داد؛ در حالی که در گذشته ما شاهد آن بودیم که اگر برنامه ای هنگ می کرد تمام برنامه ها و سیستم عامل مختل می شدند. این تکنولوژی برای مدتی کنسل شد، اما مجددا در پردازنده های core i7 ظهور کرد و امروزه به صورت گسترده از آن استفاده می شود.

البته لازم است که سیستم عامل و یا نرم افزاری که دستور را به پردازنده ارسال می کند، باید از این تکنولوژی پشتیبانی کرده که امروزه اکثر برنامه ها به صورت multi thread نوشته می شوند. با استفاده از تکنولوژی Hyper Threading اگر شما 2 هسته واقعی داشته باشید و پردازنده شما ۴ ترد داشته باشد سیستم عامل شما واقعا باور خواهد کرد که در حال کار با 4 پردازنده جداگانه است.