یعنی اینکه خیلی از برنامه نمی تونن 100 درصد از سی پی یو استفاده کنن و معمولا در شرایط پردازش سنگین از تمام توان سی پی یو استفاده نمیشه منتها یه سری برنامه ها ذاتی این توانایی رو دارن مثل تری دی مکس که هنگام رندر میتونه از تمام هسته ها به صورت 100 درصد استفاده کنه البته اونم مثلا در ورژن 2009 نمی تونست به طور کامل از توان یه شش هسته ای ام دی استفاده کنه که در ورژن 2010 اصلاح شد و همون فایل در ورژن 2010 توست یه شش هسته ای ای ام دی سریعتر رندر میشه .
اینکه یک برنامه تا چه حد از توان هسته های مختلف استفاده کنه، بستگی به شیوه برنامه نویسی اون برنامه داره. برای اینکه یک برنامه بتونه به درستی از چند هسته استفاده کنه، باید پردازش های خودش را به بخش های کوچکتری تقسیم کنه، و هر بخش را به یک Thread برای اجرا واگذار کنه. برنامه های زیادی هستند که ممکنه از دو یا چند Thread در زمان اجرا استفاده کنند، اما یک مسئله دیگه ایی که اینجا وجود داره، این هست که اون برنامه چقدر میتونه در صورت وجود هسته های متعدد، خودش را به خوبی Scale کنه؟ مثلا اگر 2 هسته پردازشی موجود بود، پردازش ها را به دو بخش، و اگر 4 هسته موجود بود، به 4 بخش تقسیم کنه. مسئله دیگه امکان بخش کردن پردازش های یک برنامه هست، یک برنامه باید با الگوریتم هایی نوشته بشه که قابلیت بخش پذیری را به پردازش مربوطه بدهند.
به طور کلی، کنترل همگی این مسائل کار مشکلی هست، به همین جهت در ابزارهای برنامه نویسی مختلف، کتابخانه ها و ابزارهای مختلفی برای ساده کردن این فرآیندها ایجاد شدند (و میشند)، تا برنامه نویس بیشتر بر روی الگوریتم تمرکز کنه، و مسائلی مثل Scale یا Work Stealing توسط اون ابزارها مدیریت بشند.
اگر برنامه بدون دید موازی سازی نوشته بشه، امید چندانی به بهره گیری آن از چند هسته نیست. اگر برنامه ایی با دید موازی سازی نوشته بشه، ولی بدون توجه به Scale مناسب، میتونه روی تعداد هسته های خاصی کارایی بهتری از خودش نشان بده، اما با افزایش تعداد هسته ها، تغییر محسوسی در کارایی آن بوجود نمیاد. اگر برنامه ایی با دید موازی سازی نوشته بشه، و در اون به Scale مناسب هم توجه بشه، در اون صورت، با افزایش تعداد هسته ها، کارایی برنامه هم افزایش پیدا میکنه. هدف این هست که نرم افزارها به این سمت حرکت کنند؛ ولی کار سختی هست، چون باید خیلی از دیدگاه و عادت های فعلی در عرصه تولید نرم افزار تغییر کنند.
در مورد کش اونم یه سوال کلی و خیلی دقیق نمیشه گفت ولی در کل کارایی کش خیلی بالا نیست بیشتر هسته ها مهم هستن تا کش .
هر چیزی اهمیت خاص خودش را داره؛ طراحی نامناسب Cache، یا سرعت پایین Cache میتونه برای CPU گلوگاه ایجاد کنه، چون CPU فقط Cache را به عنوان منبع تامین داده هایش می شناسه. در واقع داده ها از RAM به Cache و از Cache به Rigsterهای CPU منتقل میشند. عملکرد ضعیف Cache موجب انتظارهای بی مورد CPU و کاهش کارایی اون میشه.