پردازنده ۲ هستهاي، ۴ هستهاي، ۶ هستهاي يا حتي پردازنده با هستههاي بيشتر در بازار يافت ميشوند. در بسياري از كامپيوترها و حتي ابزارهاي موبايل، تعداد هستههاي بيشتر، به يك عامل مهم در فروش محصولات تبديل شده است و كاربران ترجيح ميدهند تا دستگاهي را تهيه كنند كه به پردازنده با هستههاي بيشتر مجهز شده باشد. در نگاه كلي، تعداد هستههاي بيشتر به معني قدرت پردازش بالاتر است. هرچند اين عبارت هميشه صادق نيست، اما در معماري و طراحي يكسان، هر چه تعداد هستهها افزايش يابد، قدرت پردازشِ پردازنده بيشتر ميشود.
پردازندهي مركزي يا CPU وظيفهي محاسبهي دستورات را برعهده دارد. هر CPU ميتواند بصورت همزمان يك تسك يا كار را پردازش كند. در قديم كامپيوترهايي كه نياز به قدرت پردازش بالاتر داشتند از چند CPU بر روي يك مادربرد بهره ميبرند. در اين حالت، مصرف انرژي افزايش مييافت و ارتباط بين CPUها با تاخير قابل ملاحظهاي انجام ميشد. همچنين براي آنكه پردازندههاي مختلف بتوانند به حافظهي رم و ديگر اجزاء سختافزاري بصورت مشترك دسترسي داشته باشند، به قطعات بيشتر از آنچه در مادربردهاي معمولي استفاده ميشد، نياز خواهيم داشت كه خود باعث افزايش هزينه مادربردها ميشد.
در همين راستا توليدكنندگان پردازنده به فكر ساخت CPUهايي افتادند كه به چند هسته مجهز باشند تا هر كدام بتوانند نقش يك CPU مستقل را ايفا كرده و يك تسك را پردازش كنند. به عنوان مثال تصور كنيد كه قرار است عمليات رياضي زير توسط يك پردازندهي تك هسته محاسبه شود:
2x20x60x187
در اين حالت پردازنده ابتدا ۲ را در ۲۰ ضرب كرده و سپس حاصل را در ۶۰ ضرب كرده و نتيجه را در ۱۸۷ ضرب ميكند.
2x20
40x60
2400x187
اما يك پردازندهي دو هستهاي ميتواند دو عمليات اول را همزمان پردازش كرده و سپس عمليات سوم را پردازش كند. اين كار كه Parallelization يا پردازش موازي نام گذاري شده، باعث ميشود تا سرعت اجراي دستورات بيشتر شود.
حالا در نظر بگيريد كه برنامههاي پيچيده بتوانند دستورات بسيار زياد خود را بين چند هسته تقسيم كرده و همزمان به پردازش آنها بپردازد. نرمافزارهايي مانند ويراستارهاي ويديو، فشردهسازهاي فايل يا حتي آنهايي كه عمليات رمزگشايي را انجام ميدهند جزو مواردي هستند كه استفاده از پردازش موازي در سرعت اجراي دستورات آنها بسيار تاثير گذار است.
چرا تعداد هستههاي CPU به اندازهي GPU نيست؟
حال اين سوال مطرح ميشود كه اگر پردازش موازي باعث افزايش سرعت ميشود چرا CPUها مثل GPUها از چندين هسته بهره نميبرند؟ GPUها نيز وظيفهي پردازش امور را برعهده دارد اما اين پردازندهها از چندين هسته بهره ميبرند. به عنوان مثال كارت گرافيك قدرتمند GeForce 1080 انويديا از ۲۵۶۰ هسته بهره ميبرد اين در حالي است كه CPU كامپيوترهاي دسكتاپ حداكثر ۱۰ هسته دارند.
GPU / CPU
بيشتر بخوانيد:
تفاوت بين CPU، GPU و APU چيست؟ هر كدام چه مأموريتي دارند؟
هرچند GPU تعداد هستههاي به مراتب بيشتري نسبت به CPUها دارند، اما اين هستهها، بسيار ضعيفتر بوده و با فركانس پايينتري كار ميكنند. پاسخ كوتاه به اين پرسش اين است كه GPU يا پردازنده گرافيكي همانطور كه از نامش پيدا است براي پردازش امور مرتبط با گرافيك مانند رندر تصاوير بازيها يا نرمافزارهاي سه بعدي يا اديت ويديو بكار ميروند. اما در عوض CPU قادر به انجام پردازشهاي مختلف براي امور گوناگون است. اموري كه براي پردازش به GPU سپرده ميشوند، عموما امكان خرد كردن آنها و پردازش موازي گستردهشان وجود دارد. حتي در بازيها نيز بعضي از امور مانند هوش مصنوعي توسط CPU پردازش ميشود چرا كه هستههاي ضعيف GPU قادر به پردازش تسكهاي بزرگ و پيچيدهي مربوط به هوش مصنوعي نيستند و از طرفي خرد كردن اين دستورات در چندين تسك كوچك نيز كار دشواري است.
پس پردازندههاي گرافيكي براي انجام امور مرتبط با تصوير و گرافيك طراحي شدهاند و اين دست از امور به شكل سادهتري قادر به خرد شدن و پردازش موازي بين هستههاي زياد هستند اما در عوض CPU براي پردازش طيف وسيعتري از امور طراحي شده است و در عوض دستورات پردازش شده توسط CPU سختتر خرد ميشوند. براي درك بهتر اين موضوع ويديو كوتاه انويديا در اين باره را تماشا كنيد:
فناوري Hyper Threading
اين فناوري كه توسط اينتل توسعه داده شده امكان اجراي تسكهاي همزمان بيشتر در پردازنده را ميسر ميكند. هايپر-تردينگ اولين بار در سال ۲۰۰۲ و به همراه Pentium 4 HT معرفي شد. پنتيوم ۴ تنها يك هسته داشت و قادر به اجراي همزمان يك دستور بود؛ اما به كمك فناوري هايپر-تردينگ در نسخهي HT اين پردازنده، امكان اجراي همزمان دو دستور فراهم شد.
Hyper Threading
در فناوري هايپر-تردينگ دو يا چند هستهي منطقي به ازاء هر هستهي فيزيكي ايجاد ميشود و رفتار سيستمعامل با اين هستههاي منطقي درست مثل هستههاي فيزيكي است. به اين ترتيب تسكها بصورت موازي پردازش شده و پردازنده با توان بيشتر شروع به پردازش امور ميكند. در واقع پردازنده، به نوعي سيستمعامل را فريب و به كمك مكانيزم خاصي پردازش موازي را در هر هسته شكل ميدهد. در اين حالت منابع پردازنده به دو بخش تقسيم ميشوند. اگر يكي از هستههاي مجازي پردازش تسك مورد نظر خود را به پايان برساند و به حالت انتظار برود، منابع در دسترس آن به پردازش سريعتر تسك موازي آن به هستهي مجازي ديگر قرض داده ميشود. در اكثر شرايط فناوري هايپر-تردينگ به خوبي شرايطي كه پردازنده دو برابر هسته داشته باشد كار ميكند.
پردازندههاي جديد امروزي نه تنها از چند هسته بهره ميبرند بلكه فناوري Hyper-Threading را نيز دارند. در اين حالت مثلا پردازندهي دو هستهاي با فناوري هايپر-تردينگ همچون پردازندهي ۴ هستهاي در سيستمعامل شناخته ميشود.
پردازندههاي چند هستهاي
پردازندههاي اوليه تنها يك هسته داشتند. اين بدين معني است كه هر پردازنده تنها يك واحد پردازش مركزي داشت. براي افزايش بازده و قدرت پردازنده، توليدكنندگان به فكر افزايش هستهها در CPU افتادند. در همين راستا پردازندههاي دو هستهاي توليد شدند كه در واقع دو واحد پردازش مركزي داشتند و سيستمعاملها نيز آنها را دو پردازنده مستقل ميديدند و تسكها را بصورت موازي به آنها ارسال ميكردند.
برخلاف فناوري هاپير-تردينگ در اين حالت دو هستهي فيزيكي وجود دارد كه همچون دو CPU مستقل عمل ميكنند با اين تفاوت كه هر دو CPU در دل يك تراشه قرار دارند. نزديك شدن هستهها به يكديگر ارتباط بين آنها را سريعتر كرده و دسترسي آنها به المانهاي ديگر پردازنده مانند حافظههاي كش و غيره را تسريع ميكند.
امروزه پردازندههاي ۴ هستهاي، ۸ هستهاي، ۱۶ هستهاي يا حتي ۲۲ هستهاي نيز وجود دارد و اكثر آنها نيز از فناوري هايپر-تردينگ يا فناوري مشابه آن پشتيباني ميكنند كه باعث ميشود تعداد هستههاي منطقي و فيزيكي آنها به ۸، ۱۶ يا ۳۲ يا ۴۴ هسته افزايش يابد. مزيت اصلي افزايش هستهها در يك پردازنده آن است كه نيازي به استفاده از ۴ يا ۸ سوكت در يك مادربرد نيست و همچنين ارتباط بين هستهها به مراتب بهينهتر انجام ميشود.
AMD CPU
توليدكنندگان عموما هستههاي پردازنده را در يك IC مجتمع ميكنند و از اين چيپ به عنوان مالتيپراسسور يا CMP ياد ميشود. پردازندهي چند هستهاي ميتواند بسته به معماري آن به شكل متفاوتي به منابع پردازنده دسترسي داشته باشند. به عنوان مثال در بعضي از معماريها هر كدام از هستهها حافظهي كش خود را دارند و برخي نيز از حافظهي كش مشترك بهره ميبرند. برخي از آنها روشهاي متفاوتي براي ارتباط بين هستهها و ارسال پيام به يكديگر دارند و نحوهي دسترسي آنها به حافظهي رم نيز متفاوت است. شبكه با توپولوژيهاي متفاوتي نيز براي ارتباط بين هستهها مانند باس، رينگ و غيره به كار گرفته ميشود.
بيشتر بخوانيد
بررسي عميق معماري big.LITTLE آرم
هستهها در پردازندههاي چند هستهاي ميتوانند همگن يا ناهمگن باشند. در پردازندههاي همگن تمام هستهها دقيقا يكسان هستند. اما در پردازندههاي چند هستهاي با هستههاي ناهمگن، ممكن است هستههاي متفاوتي داشته باشند. مثلا در معماري big.LITTLE كه توسط آرم توسعه داده ميشود دو جفت هسته با معماري كاملا متفاوت استفاده ميشود.
در نظر داشته باشيد كه بازدهي حاصل از پردازش چند-هستهاي به الگوريتمهاي نرمافزاري، نحوهي خرد كردن دستورات و موازيسازي بستگي دارد. به طور مشخص بسياري از اپليكيشنهاي فعلي قادر به موازي سازي دستورات نيستند و نميتوانند آنها را به دستورات كوچكتر خرد كرده و از تمام هستهها بهره ببرند. به عنوان مثال برخي از بازيها نميتوانند بخشهايي كه توسط CPU پردازش ميشود را بصورت موازي پردازش كنند. دليل اين موضوع نيز آن است كه برخي از دستورات بايد پشت سر هم و پس از پردازش بخش اول انجام شوند و همچنين بعضي نيز در شرايط خاصي شكل ميگيرند مانند پاسخي كه هوش مصنوعي در اثر انجام كار غير منتظره از سمت گيمر بايد انجام دهد.
با اين حال برخي از توليدكنندگان بازيهاي ويديويي مانند Remedy, Valve, Epic Games و يوبيسافت، از موتورهايي براي توليد بازيهاي خود استفاده ميكنند كه از پردازش موازي پشتيباني ميكنند و البته هنوز هم بخشهايي از برنامه تنها فقط از طريق يك هسته پردازش ميشوند.
اما اگر نرمافزاري به خوبي از پس موازيسازي برآيند، عملكرد آن به ميزان تعداد هستهها قابل افزايش است.
چرا بسياري از نرمافزارها از پردازش موازي پشتيباني نميكنند؟
اگر به بخش Task Manager سيستمعامل خود مراجعه كنيد متوجه ميشويد كه بسياري از نرمافزارها تنها از توان يكي از هستهها استفاده ميكنند و در اكثر شرايط باقي هستهها بلامصرف هستند. اگر نرمافزارها نميتوانند از توان پردازندهها استفاده كنند، چرا خود پردازنده يا سيستمعامل دستورات مربوط به آنها را خرد نكرده و به پردازنده ارسال نميكنند؟ متاسفانه راهي وجود ندارد كه نرمافزارها را جوري تغيير داد كه بتوانند از چند هسته استفاده كنند. دليل اين موضوع نيز در آن است كه تنها سازندهي نرمافزار و شخصي كه كدهاي مربوط به آن را نوشته ميتواند دستورات مربوط به آن را جوري تغيير دهد كه دستورات خرد شده و بين هستهها تقسيم شوند در غير اينصورت اگر دستورات خرد شوند ممكن است تقدم و تاخر اجراي آنها بهم خورده و برنامه درست كار نكند.
شايد برخي بر اين باور باشند كه اگر دو هسته بر روي يك دستور كار كنند سرعت اجراي آن افزايش يابد؛ اما چنين موضوعي امكان پذير نيست براي درك بهتر موضوع تصور كنيد كه يك شخص قرار باشد با دو ماشين از يك مكان به مكان ديگر منتقل شود، شخص بايد يكي از خودروها را براي انتقال خود انتخاب كند و حتي اگر هر دو هسته به سمت مقصد حركت كنند باز هم شخص در يك زمان مشخص به مقصد ميرسد و وجود دو خودرو نميتواند وي را زودتر به نتيجه برساند.
پس در نهايت با ارائهي پردازندههاي چند هستهاي قدرت آنها به شدت افزايش يافت و سرعت كامپيوترها زياد ميشود. اما اگر نرمافزارها براي پردازش موازي دستوارت طراحي نشده باشند، قدرت و بازدهي پردازندهي تك هستهاي با همان معماري اما هستههاي بيشتر چندان متفاوت نيست. تقريبا تمام سيستمعاملها از ويندوز تا مك تا توزيعهاي لينوكس همگي از پردازش موازي پشتيباني ميكنند. بسياري از اپليكيشنهاي بزرگ مانند محصولات ادوبي، نرمافزارهاي ويرايش تصاوير يا ويديو، نرمافزارهاي فشردهسازي، اپليكيشنهاي رمزگشايي يا فشرده سازي، نرمافزارهاي مهم سرورها و همچنين برخي از بازيهاي مجهز به موتورهاي پيشرفته قادر به استفاده از توان چند هسته در پردازنده هستند. اما عموم اپليكيشنهاي موبايل و نرمافزارهاي سادهي تحت سيستمعاملهاي دسكتاپ قادر به موازي سازي نيستند. فرايند موازي سازي نرمافزارها بحث بسيار پيچيدهاي است كه پياده سازي آن توسط عموم توسعهدهندگان نرمافزاري دشوار است و اغلب از آن صرفنظر ميكنند.
پردازنده ۲ هستهاي، ۴ هستهاي، ۶ هستهاي يا حتي پردازنده با هستههاي بيشتر در بازار يافت ميشوند. در بسياري از كامپيوترها و حتي ابزارهاي موبايل، تعداد هستههاي بيشتر، به يك عامل مهم در فروش محصولات تبديل شده است و كاربران ترجيح ميدهند تا دستگاهي را تهيه كنند كه به پردازنده با هستههاي بيشتر مجهز شده باشد. در نگاه كلي، تعداد هستههاي بيشتر به معني قدرت پردازش بالاتر است. هرچند اين عبارت هميشه صادق نيست، اما در معماري و طراحي يكسان، هر چه تعداد هستهها افزايش يابد، قدرت پردازشِ پردازنده بيشتر ميشود.
پردازندهي مركزي يا CPU وظيفهي محاسبهي دستورات را برعهده دارد. هر CPU ميتواند بصورت همزمان يك تسك يا كار را پردازش كند. در قديم كامپيوترهايي كه نياز به قدرت پردازش بالاتر داشتند از چند CPU بر روي يك مادربرد بهره ميبرند. در اين حالت، مصرف انرژي افزايش مييافت و ارتباط بين CPUها با تاخير قابل ملاحظهاي انجام ميشد. همچنين براي آنكه پردازندههاي مختلف بتوانند به حافظهي رم و ديگر اجزاء سختافزاري بصورت مشترك دسترسي داشته باشند، به قطعات بيشتر از آنچه در مادربردهاي معمولي استفاده ميشد، نياز خواهيم داشت كه خود باعث افزايش هزينه مادربردها ميشد.
در همين راستا توليدكنندگان پردازنده به فكر ساخت CPUهايي افتادند كه به چند هسته مجهز باشند تا هر كدام بتوانند نقش يك CPU مستقل را ايفا كرده و يك تسك را پردازش كنند. به عنوان مثال تصور كنيد كه قرار است عمليات رياضي زير توسط يك پردازندهي تك هسته محاسبه شود:
2x20x60x187
در اين حالت پردازنده ابتدا ۲ را در ۲۰ ضرب كرده و سپس حاصل را در ۶۰ ضرب كرده و نتيجه را در ۱۸۷ ضرب ميكند.
2x20
40x60
2400x187
اما يك پردازندهي دو هستهاي ميتواند دو عمليات اول را همزمان پردازش كرده و سپس عمليات سوم را پردازش كند. اين كار كه Parallelization يا پردازش موازي نام گذاري شده، باعث ميشود تا سرعت اجراي دستورات بيشتر شود.
حالا در نظر بگيريد كه برنامههاي پيچيده بتوانند دستورات بسيار زياد خود را بين چند هسته تقسيم كرده و همزمان به پردازش آنها بپردازد. نرمافزارهايي مانند ويراستارهاي ويديو، فشردهسازهاي فايل يا حتي آنهايي كه عمليات رمزگشايي را انجام ميدهند جزو مواردي هستند كه استفاده از پردازش موازي در سرعت اجراي دستورات آنها بسيار تاثير گذار است.
چرا تعداد هستههاي CPU به اندازهي GPU نيست؟
حال اين سوال مطرح ميشود كه اگر پردازش موازي باعث افزايش سرعت ميشود چرا CPUها مثل GPUها از چندين هسته بهره نميبرند؟ GPUها نيز وظيفهي پردازش امور را برعهده دارد اما اين پردازندهها از چندين هسته بهره ميبرند. به عنوان مثال كارت گرافيك قدرتمند GeForce 1080 انويديا از ۲۵۶۰ هسته بهره ميبرد اين در حالي است كه CPU كامپيوترهاي دسكتاپ حداكثر ۱۰ هسته دارند.
GPU / CPU
بيشتر بخوانيد:
تفاوت بين CPU، GPU و APU چيست؟ هر كدام چه مأموريتي دارند؟
هرچند GPU تعداد هستههاي به مراتب بيشتري نسبت به CPUها دارند، اما اين هستهها، بسيار ضعيفتر بوده و با فركانس پايينتري كار ميكنند. پاسخ كوتاه به اين پرسش اين است كه GPU يا پردازنده گرافيكي همانطور كه از نامش پيدا است براي پردازش امور مرتبط با گرافيك مانند رندر تصاوير بازيها يا نرمافزارهاي سه بعدي يا اديت ويديو بكار ميروند. اما در عوض CPU قادر به انجام پردازشهاي مختلف براي امور گوناگون است. اموري كه براي پردازش به GPU سپرده ميشوند، عموما امكان خرد كردن آنها و پردازش موازي گستردهشان وجود دارد. حتي در بازيها نيز بعضي از امور مانند هوش مصنوعي توسط CPU پردازش ميشود چرا كه هستههاي ضعيف GPU قادر به پردازش تسكهاي بزرگ و پيچيدهي مربوط به هوش مصنوعي نيستند و از طرفي خرد كردن اين دستورات در چندين تسك كوچك نيز كار دشواري است.
پس پردازندههاي گرافيكي براي انجام امور مرتبط با تصوير و گرافيك طراحي شدهاند و اين دست از امور به شكل سادهتري قادر به خرد شدن و پردازش موازي بين هستههاي زياد هستند اما در عوض CPU براي پردازش طيف وسيعتري از امور طراحي شده است و در عوض دستورات پردازش شده توسط CPU سختتر خرد ميشوند. براي درك بهتر اين موضوع ويديو كوتاه انويديا در اين باره را تماشا كنيد:
فناوري Hyper Threading
اين فناوري كه توسط اينتل توسعه داده شده امكان اجراي تسكهاي همزمان بيشتر در پردازنده را ميسر ميكند. هايپر-تردينگ اولين بار در سال ۲۰۰۲ و به همراه Pentium 4 HT معرفي شد. پنتيوم ۴ تنها يك هسته داشت و قادر به اجراي همزمان يك دستور بود؛ اما به كمك فناوري هايپر-تردينگ در نسخهي HT اين پردازنده، امكان اجراي همزمان دو دستور فراهم شد.
Hyper Threading
در فناوري هايپر-تردينگ دو يا چند هستهي منطقي به ازاء هر هستهي فيزيكي ايجاد ميشود و رفتار سيستمعامل با اين هستههاي منطقي درست مثل هستههاي فيزيكي است. به اين ترتيب تسكها بصورت موازي پردازش شده و پردازنده با توان بيشتر شروع به پردازش امور ميكند. در واقع پردازنده، به نوعي سيستمعامل را فريب و به كمك مكانيزم خاصي پردازش موازي را در هر هسته شكل ميدهد. در اين حالت منابع پردازنده به دو بخش تقسيم ميشوند. اگر يكي از هستههاي مجازي پردازش تسك مورد نظر خود را به پايان برساند و به حالت انتظار برود، منابع در دسترس آن به پردازش سريعتر تسك موازي آن به هستهي مجازي ديگر قرض داده ميشود. در اكثر شرايط فناوري هايپر-تردينگ به خوبي شرايطي كه پردازنده دو برابر هسته داشته باشد كار ميكند.
پردازندههاي جديد امروزي نه تنها از چند هسته بهره ميبرند بلكه فناوري Hyper-Threading را نيز دارند. در اين حالت مثلا پردازندهي دو هستهاي با فناوري هايپر-تردينگ همچون پردازندهي ۴ هستهاي در سيستمعامل شناخته ميشود.
پردازندههاي چند هستهاي
پردازندههاي اوليه تنها يك هسته داشتند. اين بدين معني است كه هر پردازنده تنها يك واحد پردازش مركزي داشت. براي افزايش بازده و قدرت پردازنده، توليدكنندگان به فكر افزايش هستهها در CPU افتادند. در همين راستا پردازندههاي دو هستهاي توليد شدند كه در واقع دو واحد پردازش مركزي داشتند و سيستمعاملها نيز آنها را دو پردازنده مستقل ميديدند و تسكها را بصورت موازي به آنها ارسال ميكردند.
برخلاف فناوري هاپير-تردينگ در اين حالت دو هستهي فيزيكي وجود دارد كه همچون دو CPU مستقل عمل ميكنند با اين تفاوت كه هر دو CPU در دل يك تراشه قرار دارند. نزديك شدن هستهها به يكديگر ارتباط بين آنها را سريعتر كرده و دسترسي آنها به المانهاي ديگر پردازنده مانند حافظههاي كش و غيره را تسريع ميكند.
امروزه پردازندههاي ۴ هستهاي، ۸ هستهاي، ۱۶ هستهاي يا حتي ۲۲ هستهاي نيز وجود دارد و اكثر آنها نيز از فناوري هايپر-تردينگ يا فناوري مشابه آن پشتيباني ميكنند كه باعث ميشود تعداد هستههاي منطقي و فيزيكي آنها به ۸، ۱۶ يا ۳۲ يا ۴۴ هسته افزايش يابد. مزيت اصلي افزايش هستهها در يك پردازنده آن است كه نيازي به استفاده از ۴ يا ۸ سوكت در يك مادربرد نيست و همچنين ارتباط بين هستهها به مراتب بهينهتر انجام ميشود.
AMD CPU
توليدكنندگان عموما هستههاي پردازنده را در يك IC مجتمع ميكنند و از اين چيپ به عنوان مالتيپراسسور يا CMP ياد ميشود. پردازندهي چند هستهاي ميتواند بسته به معماري آن به شكل متفاوتي به منابع پردازنده دسترسي داشته باشند. به عنوان مثال در بعضي از معماريها هر كدام از هستهها حافظهي كش خود را دارند و برخي نيز از حافظهي كش مشترك بهره ميبرند. برخي از آنها روشهاي متفاوتي براي ارتباط بين هستهها و ارسال پيام به يكديگر دارند و نحوهي دسترسي آنها به حافظهي رم نيز متفاوت است. شبكه با توپولوژيهاي متفاوتي نيز براي ارتباط بين هستهها مانند باس، رينگ و غيره به كار گرفته ميشود.
بيشتر بخوانيد
بررسي عميق معماري big.LITTLE آرم
هستهها در پردازندههاي چند هستهاي ميتوانند همگن يا ناهمگن باشند. در پردازندههاي همگن تمام هستهها دقيقا يكسان هستند. اما در پردازندههاي چند هستهاي با هستههاي ناهمگن، ممكن است هستههاي متفاوتي داشته باشند. مثلا در معماري big.LITTLE كه توسط آرم توسعه داده ميشود دو جفت هسته با معماري كاملا متفاوت استفاده ميشود.
در نظر داشته باشيد كه بازدهي حاصل از پردازش چند-هستهاي به الگوريتمهاي نرمافزاري، نحوهي خرد كردن دستورات و موازيسازي بستگي دارد. به طور مشخص بسياري از اپليكيشنهاي فعلي قادر به موازي سازي دستورات نيستند و نميتوانند آنها را به دستورات كوچكتر خرد كرده و از تمام هستهها بهره ببرند. به عنوان مثال برخي از بازيها نميتوانند بخشهايي كه توسط CPU پردازش ميشود را بصورت موازي پردازش كنند. دليل اين موضوع نيز آن است كه برخي از دستورات بايد پشت سر هم و پس از پردازش بخش اول انجام شوند و همچنين بعضي نيز در شرايط خاصي شكل ميگيرند مانند پاسخي كه هوش مصنوعي در اثر انجام كار غير منتظره از سمت گيمر بايد انجام دهد.
با اين حال برخي از توليدكنندگان بازيهاي ويديويي مانند Remedy, Valve, Epic Games و يوبيسافت، از موتورهايي براي توليد بازيهاي خود استفاده ميكنند كه از پردازش موازي پشتيباني ميكنند و البته هنوز هم بخشهايي از برنامه تنها فقط از طريق يك هسته پردازش ميشوند.
اما اگر نرمافزاري به خوبي از پس موازيسازي برآيند، عملكرد آن به ميزان تعداد هستهها قابل افزايش است.
چرا بسياري از نرمافزارها از پردازش موازي پشتيباني نميكنند؟
اگر به بخش Task Manager سيستمعامل خود مراجعه كنيد متوجه ميشويد كه بسياري از نرمافزارها تنها از توان يكي از هستهها استفاده ميكنند و در اكثر شرايط باقي هستهها بلامصرف هستند. اگر نرمافزارها نميتوانند از توان پردازندهها استفاده كنند، چرا خود پردازنده يا سيستمعامل دستورات مربوط به آنها را خرد نكرده و به پردازنده ارسال نميكنند؟ متاسفانه راهي وجود ندارد كه نرمافزارها را جوري تغيير داد كه بتوانند از چند هسته استفاده كنند. دليل اين موضوع نيز در آن است كه تنها سازندهي نرمافزار و شخصي كه كدهاي مربوط به آن را نوشته ميتواند دستورات مربوط به آن را جوري تغيير دهد كه دستورات خرد شده و بين هستهها تقسيم شوند در غير اينصورت اگر دستورات خرد شوند ممكن است تقدم و تاخر اجراي آنها بهم خورده و برنامه درست كار نكند.
شايد برخي بر اين باور باشند كه اگر دو هسته بر روي يك دستور كار كنند سرعت اجراي آن افزايش يابد؛ اما چنين موضوعي امكان پذير نيست براي درك بهتر موضوع تصور كنيد كه يك شخص قرار باشد با دو ماشين از يك مكان به مكان ديگر منتقل شود، شخص بايد يكي از خودروها را براي انتقال خود انتخاب كند و حتي اگر هر دو هسته به سمت مقصد حركت كنند باز هم شخص در يك زمان مشخص به مقصد ميرسد و وجود دو خودرو نميتواند وي را زودتر به نتيجه برساند.
پس در نهايت با ارائهي پردازندههاي چند هستهاي قدرت آنها به شدت افزايش يافت و سرعت كامپيوترها زياد ميشود. اما اگر نرمافزارها براي پردازش موازي دستوارت طراحي نشده باشند، قدرت و بازدهي پردازندهي تك هستهاي با همان معماري اما هستههاي بيشتر چندان متفاوت نيست. تقريبا تمام سيستمعاملها از ويندوز تا مك تا توزيعهاي لينوكس همگي از پردازش موازي پشتيباني ميكنند. بسياري از اپليكيشنهاي بزرگ مانند محصولات ادوبي، نرمافزارهاي ويرايش تصاوير يا ويديو، نرمافزارهاي فشردهسازي، اپليكيشنهاي رمزگشايي يا فشرده سازي، نرمافزارهاي مهم سرورها و همچنين برخي از بازيهاي مجهز به موتورهاي پيشرفته قادر به استفاده از توان چند هسته در پردازنده هستند. اما عموم اپليكيشنهاي موبايل و نرمافزارهاي سادهي تحت سيستمعاملهاي دسكتاپ قادر به موازي سازي نيستند. فرايند موازي سازي نرمافزارها بحث بسيار پيچيدهاي است كه پياده سازي آن توسط عموم توسعهدهندگان نرمافزاري دشوار است و اغلب از آن صرفنظر ميكنند.