سخت افزار

چرا افزایش هسته‌های CPU همیشه باعث افزایش کارایی نمی‌شود؟

اگر چند سال پیش از کسی می‌پرسیدی پردازنده قوی یعنی چه، احتمالاً می‌گفت «فرکانس بالا». امروز اما بیشتر نگاه‌ها رفته سمت تعداد هسته‌ها و تردها. روی کاغذ هم منطقی به نظر می‌رسد؛ هرچه هسته بیشتر، یعنی توان پردازش هم بیشتر. اما در دنیای واقعی سخت‌افزار، ماجرا به این سادگی نیست. خیلی وقت‌ها می‌بینیم پردازنده‌ای با هسته‌های کمتر، عملکرد بهتری نسبت به مدلی با هسته‌های بیشتر دارد و همین موضوع کاربران را سردرگم می‌کند. اینجاست که باید عمیق‌تر نگاه کنیم و بفهمیم چرا افزایش هسته‌های CPU همیشه مساوی با افزایش کارایی نیست.

محدودیت نرم‌افزارها در استفاده از هسته‌ها

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

قانون آمدال و سقف واقعی موازی‌سازی

در دنیای مهندسی نرم‌افزار مفهومی به نام قانون آمدال وجود دارد که به زبان ساده می‌گوید هرچقدر هم هسته اضافه کنی، بخشی از برنامه که غیرقابل موازی‌سازی است، جلوی رشد کارایی را می‌گیرد. یعنی اگر فقط ۳۰ درصد یک برنامه بتواند همزمان روی چند هسته اجرا شود، حتی با بی‌نهایت هسته هم نهایتاً به همان سقف می‌رسی. این قانون دقیقاً توضیح می‌دهد چرا افزایش هسته‌ها بعد از یک نقطه خاص، بازدهی کمتری دارد و هزینه‌ای که پرداخت می‌کنی، لزوماً به کارایی واقعی تبدیل نمی‌شود.

فرکانس و IPC؛ چیزهایی که کمتر دیده می‌شوند

تعداد هسته فقط یکی از فاکتورهای عملکرد CPU است. دو عامل بسیار مهم دیگر، فرکانس و IPC یا همان تعداد دستورالعمل در هر سیکل کلاک هستند. پردازنده‌ای با هسته کمتر اما IPC بالاتر و فرکانس بیشتر، می‌تواند در بسیاری از سناریوها سریع‌تر از مدلی با هسته‌های زیاد ولی IPC پایین‌تر باشد. به همین دلیل است که مثلاً بعضی پردازنده‌های رده‌بالای گیمینگ با ۶ یا ۸ هسته، عملکرد بهتری نسبت به پردازنده‌های ۱۲ یا ۱۶ هسته‌ای ورک‌استیشنی دارند. چون بار کاری بازی‌ها بیشتر وابسته به قدرت تک‌هسته‌ای است.

سربار هماهنگی بین هسته‌ها

هرچه تعداد هسته‌ها بیشتر می‌شود، هزینه هماهنگی بین آن‌ها هم بالا می‌رود. هسته‌ها برای اشتراک داده‌ها باید از حافظه کش مشترک یا RAM استفاده کنند و این رفت‌وبرگشت‌ها زمان‌بر است. به این سربار، هزینه Synchronization می‌گویند. در بعضی بارهای کاری، این هزینه آن‌قدر زیاد می‌شود که سود داشتن هسته‌های بیشتر را از بین می‌برد. مخصوصاً در برنامه‌هایی که وابستگی داده‌ای بالایی دارند، افزایش هسته‌ها حتی می‌تواند باعث کاهش کارایی شود.

گلوگاه حافظه و کش پردازنده

پردازنده فقط به خودش وابسته نیست. اگر حافظه RAM یا معماری کش نتواند داده‌ها را به‌موقع به هسته‌ها برساند، هسته‌ها بیکار می‌مانند. در این حالت به اصطلاح CPU دچار Memory Bottleneck می‌شود. پردازنده‌های چند‌هسته‌ای پرقدرت، فشار زیادی به زیرسیستم حافظه وارد می‌کنند و اگر این بخش ضعیف باشد، اضافه شدن هسته‌ها عملاً بی‌اثر می‌شود. به همین دلیل است که در بعضی سیستم‌ها ارتقای RAM یا انتخاب پردازنده با کش L3 بزرگ‌تر، تأثیر بیشتری از افزایش تعداد هسته دارد.

مصرف انرژی و محدودیت‌های حرارتی

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

تفاوت سناریوهای کاری واقعی

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

نگاه هوشمندانه به عدد هسته‌ها

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

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دوازده + دوازده =

دکمه بازگشت به بالا