ثبت بازخورد

لطفا میزان رضایت خود را از دیجیاتو انتخاب کنید.

واقعا راضی‌ام
اصلا راضی نیستم
چطور میتوانیم تجربه بهتری برای شما بسازیم؟

نظر شما با موفقیت ثبت شد.

از اینکه ما را در توسعه بهتر و هدفمند‌تر دیجیاتو همراهی می‌کنید
از شما سپاسگزاریم.

تکنولوژی

مبانی CPU ها: پردازشگرهای چندگانه، چند هسته ای و پردازشگر هایی با تکنولوژی Hyper-Threading

اساسا کار واحد پردازش مرکزی (CPU = Central Processing Unit) رایانه ی شما انجام محاسبات و اجرای برنامه ها است. اما CPU های تک هسته ای در هر لحظه فقط قادر به انجام یک وظیفه ...

مجتبی بوالحسنی
نوشته شده توسط مجتبی بوالحسنی | ۲۱ شهریور ۱۳۹۳ | ۲۱:۰۰

اساسا کار واحد پردازش مرکزی (CPU = Central Processing Unit) رایانه ی شما انجام محاسبات و اجرای برنامه ها است. اما CPU های تک هسته ای در هر لحظه فقط قادر به انجام یک وظیفه هستند، در حالیکه پردازنده های چندگانه، چند هسته ای و پردازنده های Hyper-Threading اینگونه نیستند.

با داشتن چند CPU تک هسته ای می توان چند برنامه به طور همزمان اجرا کرد، و در این حالت می توانید اطمینان حاصل کنید که رایانه ی شما با انجام فعالیت های همزمان هماهنگ خواهد بود - بخصوص در هنگام انجام امور چند وظیفگی یا انجام محاسبات پیچیده مانند رندر کردن ویدئو ها.

در ادامه مطلب با دیجیاتو همراه باشید تا با انواع CPU ها بیشتر آشنا شویم.

CPU های چندگانه

بیشتر رایانه ها فقط یک CPU دارند که ممکن این CPU چند هسته ای یا از نوع hyper-threading باشد -که بعدا در مورد اینگونه CPU ها نیز صحبت می کنیم- اما اکنون بحث ما در مورد CPU های یگانه ای است که در یک سوکت بر روی مادربرد (Motherboard) قرار داده می شوند.

قبل از ورود CPU های hyper-threading و چند هسته ای، مردم برای افزایش قدرت پردازشی رایانه هایشان، چند CPU مجزای دیگر به آن اضافه می کردند. انجام این کار نیاز به مادربرد هایی داشت که چند سوکت برای اتصال CPU داشتند. هر CPU در یکی از این سوکت ها قرار داده میشد. همچنین مادربرد ها برای اتصال این سوکت های CPU به RAM و سایر منابع، به سخت افزار اضافی دیگری نیاز داشتند. البته این تمام ماجرا نیست -اگر CPU ها نیاز به ارتباط با یکدیگر داشته باشند زمان تاخیر بیشتری برای این ارتباط نیاز است و سیستم هایی که چند CPU جداگانه دارند، انرژی بیشتری نیز مصرف می کنند، و مادربرد ها نیز نیاز به سخت افزار و سوکت های بیشتری دارند.

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

2-kjdhfauhifu

تکنولوژی Hyper-Threading

قبل از هر چیز اجازه دهید تا شما را با مفهوم Hyper-Threading آشنا کنیم:

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

هایپرتردینگ اولین تلاش شرکت اینتل برای ورود امکان انجام محاسبات موازی روی کامپیوترهای شخصی کاربران عادی بود. این تکنولوژی در CPU رایانه های شخصی پنیتوم ۴ عرضه شد که به سال ۲۰۰۲ بر می گردد. رایانه های پنتیوم ۴ در اصل تنها یک CPU تک هسته ای داشتند که می توانست در هر لحظه تنها یک کار انجام دهد - اما تکنولوژی Hyper-Threading تلاش کرد تا این وضعیت را بهبود بخشد.

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

تکنولوژی Hyper-Threading اجازه می دهد دو هسته ی منطقی CPU منابع فیزیکی اجرایی را به اشتراک بگذارند. این عمل باعث می شود سرعت تا حدودی افزایش یابد. اگر یکی از هسته های مجازی، متوقف شده و یا در حالت انتظار باشد، هسته ی مجازی دیگر می توانند منابع اجرایی از آن خود کنند و از آن ها استفاده نمایند. هایپرتردینگ می تواند به افزایش سرعت سیستم شما کمک نماید، اما این افزایش سرعت به هیچ عنوان مانند افزایش سرعتی که داشتن هسته های اضافی به ارمغان می آورند نیست.

خوشبختانه اکنون Hyper-Threading یک امتیاز مثبت است. درحالیکه پردازنده هایی که از تکنولوژی هایپرتردینگ بهره می برند در اصل تنها یک هسته دارند ولی خود را به صورت چند هسته ای نشان می دهد. CPU های مدرن شرکت اینتل، اکنون علاوه بر اینکه دارای چند هسته می باشند از این تکنولوژی نیز استفاده می کنند. CPU های دو هسته ای هایپرتردینگ شما در سیستم عامل، به صورت ۴ هسته شناخته می شوند و همچنین CPU های چهار هسته ای Hyper-Threading شما نیز به عنوان ۸ هسته در سیستم عامل شناخته می شوند. Hyper-Threading فقط یک اسم برای افزایش تعداد هسته ها نیست. یک CPU دو هسته ای با تکنولوژی هایپرتردینگ نسبت به یک CPU دو هسته ای بدون بهره بردن از این تکنولوژی باید کارایی بهتری داشته باشد.

3-dkjdhafkdhfa

CPU های چند هسته ای

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

برخلاف Hyper-Threading اینجا هیچ ترفندی وجود ندارد -به معنای واقعی کلمه دو واحد پردازش مرکزی بر روی چیپ CPU وجود دارد - یک CPU چهار هسته ای، چهار واحد پردازش مرکزی، یک CPU هشت هسته ای، هشت واحد پردازش مرکزی دارد و...

افزایش تعداد هسته ها به طور چشمگیری به افزایش کارایی کمک می کند. سایز واحد فیزیکی CPU کوچک باقی می ماند و بنابراین در یک سوکت جای می گیرد. فقط نیاز به یک سوکت برای قرار دادن یک CPU است -و نه چهار سوکت با چهار CPU مختلف، که هر کدام نیاز به منبع انرژی، خنک کننده، و سخت افزارهای جداگانه ی دیگر دارند. همچنین زمان تاخیر ارتباط بین هسته ها کمتر است زیرا در این حالت به دلیل قرار داشتن هسته ها در روی یک چیپ، می توانند با سرعت بیشتری با یکدیگر ارتباط برقرار کنند.

بخش TaskManager ویندوز ۸ این موضوع را به خوبی نشان می دهد. در اینجا CPU ما دارای چهار هسته بوده و از تکنولوژی Hyper-Threading نیز بهره می برد. پس به صورت ۸ عدد CPU پردازشی منطقی نشان داده خواهد شد.

4-kdjhfaiduf

امروز اکثر رایانه ها، CPU های چند هسته ای دارند که کارآمدترین گزینه در این مبحث است. به هر حال CPU های شرکت اینتل از تکنولوژی Hyper-Threading نیز بهره می برند که این یک امتیاز اضافی محسوب می گردد. برخی رایانه ها که نیاز به قدرت پردازشی خیلی زیاد دارند ممکن است دارای چندین CPU جداگانه نیز باشند اما برخلاف نامشان کارایی کمتری دارند. CPU های چند هسته ای بر روی تلفن های هوشمند و تبلت ها نیز وجود دارند و به دلایلی که در بالا گفتیم برای این دستگاه ها نیز بسیار کاربردی هستند.

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

در نهایت باید بگوییم ظهور CPU های دو هسته ای به طور چشمگیری تجربه ی کاربری بهتری را برای کاربران رایانه های شخصی به ارمغان آورده است.

دیدگاه‌ها و نظرات خود را بنویسید
مجموع نظرات ثبت شده (26 مورد)
  • مرتضی
    مرتضی | ۳۱ تیر ۱۳۹۴

    سلام
    من کار رندرینگ انجام میدم یه راهنمایی میخواستم
    میخوام سی پی یو بگیرم 4790k یا 5820K
    turbo clock speed 5820K = 3.6 4790K = 4.4
    l3 cache 5820K = 15MB 4790K = 8MB
    کدوم یکی بهتر هستن واسه من؟
    ممنون

  • babanoel
    babanoel | ۱۳ آبان ۱۳۹۳

    در مورد هایپرتردینگ هم باید بگم که همه ی cpu ها این قابلیت رو نمیونن ساپورت کنن!!
    باید حتما فول کش و فول باس باشن!
    چون هایپرتردینگ از طریق باس, کش پردازشگر رو به دو دسته ی کش ورودی و کش خروجی اطلاعات تقسیم میکنه و از اون استفاده میکنه.و هر چه این کش بیشتر باشه برای هایپرتردینگ کردن بهتر جواب میده.
    هایپرتردینگ قابلیتی هست که امروزه بیشتر مادربردها دارند.
    خودم سیستمی دارم که روی اون cpu 2.8 با باس 533 و اگه اشتباه نکنم با 1 مگ کش روی مادربردی که هایپرتردینگ داشت امتحان کردم و این قابلیت براش غیر فعال بود ولی روی همون مادربرد cpu 2.8 با باس 800 و 2مگ کش این قابلیت فعال و در حال استفاده از اون هستم.

  • babanoel
    babanoel | ۱۳ آبان ۱۳۹۳

    مطالب خوب و ساده گفته شده.

    اما باید بگم که قسمت آخر متاسفانه اشتباه عامیانه ای هست!!
    اون جایی که گفتید" هر چه رایانه دارای تعداد بیشتری cpu باشد عملکرد افزایش پیدا میکند...."
    در صورتی که اینجور نیست!!و به خیلی از فاکتورها بستگی دارد از جمله درجه ی چند برنامگی و نوشتم مولتی تردینگ برنامه و بهینه سازی برنامه برای چند پردازشی و....
    این رو هم باید اضافه کنم که تا حدی میتوان تعداد پردازشگرها رو اضافه کرد بیشتر از اون نه تنها سرعت افزایش پیدا نمیکنه بلکه شاید کارایی اون از یک تک پردازنده ای هم کمتر بشه!
    مثال ساده ی آن این است که یک برنامه که به صورت ساده نوشته شده وقتی روی چند پردازنده اجرا میشود هیچ فرقی با زمانی که روی یک سیستم با دو یا چهار یا حتی 8 پردازنده اجرا میشود ندارد حتی در برخی موارد از 8 پردازنده ای با سرعت نظیر تک پردازنده ای سرعت اجرای کمتری دارد.
    چون در سیستم هایی با پردازنده های بالا معمولا مشکلی به نام رقابت پردازنده ها بر سر اجرای دستورالعمل به وجود می آید که یکی دیگر از مشکلات چند پردازنده ای هست که با الگوریتم های پیچیده و گاهی ناکارامد برای تعداد بالای پردازنده ها سعی بر حل این مشکل میکنند که خود وقت گیر هست!!و از طرف برنامه قابلیت این رو ندارد که روی چند پردازنده به طور همزمان اجرا شود (بیشتر برنامه های موجود بازار اینگونه هستند) و باید روی یک پردازنده اجرا شود پس بقیه ی پردازشگرها بلااستفاده میمانند!!!

    یک مثال ساده و عامیانه ی آن سرعت پردازش گوشی های آیفون نسبت به گوشی های 8 هسته ای سامسونگ هست که با تعداد هسته ی کمتر و حتی رم کمتر نسبت به گوشی سامسونگ عملکردی بهتر در بنجمارکها از خود نشان داده است.

    برای مطالعه ی بیشتر به کتابهای سیستم عامل بخشهای" سیستم های عامل متقارن و نامتقارن" و کتابهای پردازش موازی مراجعه کنید.

نمایش سایر نظرات و دیدگاه‌ها
مطالب پیشنهادی