Doksanlı yılların ortalarından bu yana, masaüstü CPU’lar tek bir pakette birden fazla CPU çekirdeği sunmaktadır. Bu çok çekirdekli bir işlemcidir. İlk tasarımlar iki veya dört CPU çekirdeği ile sınırlıyken, modern CPU’lar tek bir CPU üzerinde 64’e kadar fiziksel çekirdek sunmaktadır. Bu kadar yüksek çekirdek sayıları masaüstü CPU’lar için standart değildir ve genellikle üst düzey iş istasyonları veya sunucular için ayrılmıştır. Modern masaüstü CPU’lardaki tipik çekirdek sayıları 4 ila 16 arasındadır. Peki çok çekirdekli CPU’ları modern bilgisayarlarda baskın hale getiren şey nedir?

Tek çekirdek

Tarihsel olarak, tek çekirdekli bir CPU aynı anda yalnızca tek bir görevi yerine getirmekle sınırlıydı. Bu durum bir dizi sorunu da beraberinde getirmektedir. Örneğin, modern bir bilgisayarda çalışan çok sayıda arka plan işlemi vardır. Eğer bir CPU aynı anda sadece tek bir şeyi işleyebiliyorsa, bu arka plandaki işlemlerin ön plandaki işlemden işlem süresi çalması gerektiği anlamına gelir. Ek olarak, önbellek ıskalamaları, verilerin – nispeten yavaş – RAM’den alınması gerektiği anlamına gelir. Verilerin RAM’den getirildiği süre boyunca işlemci boşta kalır, çünkü verileri alana kadar hiçbir şey yapamaz. Bu durum, çalışan sürecin yanı sıra sürecin tamamlanmasını bekleyen diğer süreçleri de geciktirir.

Modern tek çekirdekli işlemciler, çok çekirdekli CPU’ların yükselişi sayesinde gerçek anlamda bir şey olmasa da, daha hızlı çalışmak için diğer modern hileleri kullanabilirler. Bir ardışık düzen, bir talimatın işlenmesinin her farklı bölümünün aynı anda kullanılmasına izin vererek, saat döngüsü başına ardışık düzenin yalnızca bir aşamasının kullanılmasına kıyasla önemli bir performans artışı sağlayacaktır. Geniş bir boru hattı, saat döngüsü başına her boru hattı aşamasında birden fazla talimatın işlenebildiğini görecektir. Sıra Dışı işleme, talimatların daha zaman verimli bir şekilde programlanmasını sağlayacaktır. Bir dallanma tahmincisi, bir dallanma komutunun sonucunu tahmin edebilecek ve varsayılan cevabı önceden çalıştırabilecektir.

Tüm bu faktörler iyi çalışacak ve bir miktar performans sağlayacaktır. Ancak bir ya da daha fazla çekirdek eklemek tüm bunlara olanak tanır ve tek seferde iki kat fazla verinin işlenmesini sağlar.

Multicore

İkinci bir çekirdek eklemek ham performansı iki katına çıkaracakmış gibi görünür. Ne yazık ki işler bundan daha karmaşıktır. Program mantığı genellikle tek iş parçacıklıdır, yani bir programın herhangi bir zamanda yapmaya çalıştığı tek bir şey vardır. Bununla birlikte, diğer işlemler aynı anda diğer çekirdeği kullanabilir. Çoğu bireysel program için doğal bir performans artışı olmasa da, ekstra bir işlem kaynağının sağlanması, sınırlı bir kaynak için rekabeti etkili bir şekilde azaltır ve bu da bir performans artışı sağlar. CPU zamanı için rekabeti azaltmaktan kaynaklanan bu performans artışı en çok tek çekirdekli bir CPU’dan çift çekirdekli bir CPU’ya geçerken fark edilir, çekirdek sayısını daha da artırmanın getirileri azalır, ancak daha fazlası genellikle daha iyidir.

Çok çekirdekli sistemlerden uygun şekilde yararlanmak ve gerçekten sağlam bir performans artışı görmek için, programların birden fazla işlem iş parçacığı kullanacak şekilde programlanması gerekir. Çok iş parçacıklı mantığı güvenilir bir şekilde yapmak oldukça zordur çünkü öğrenmesi genellikle zordur ve birçok potansiyel tuzak vardır. Örnek bir tuzak yarış koşulu olarak bilinir. Yarış koşulunda bir süreç, başlattığı başka bir sürecin sorunsuz çalışacağını varsayar, ardından diğer sürecin sorunsuz çalışmasına bağlı olan bir şey yapmaya çalışır. Örneğin, bir sürecin bir belgeyi kapatıp diğerini açmak için başka bir süreci başlattığını düşünün. Orijinal süreç ikinci sürecin tamamlanıp tamamlanmadığını düzgün bir şekilde kontrol etmezse, bu beklenmedik sonuçlara neden olabilir. Örneğin, ilk belgenin kapatılmasında bir sorun varsa, orijinal süreç belgeye daha fazla veri yazdığında belge hala açık olabilir.

Bu yarış koşulunda, bir değişkenin değeri, yeni değer yazılmadan önce ikinci kez okunur ve bu da genel cevabın yanlış olmasına neden olur.

Termal sorunlar

Çok çekirdekli işlemcilerin mücadele ettiği en büyük sorunlardan biri ısıdır. Bir CPU çekirdeği çok fazla ısı üretmezken, ikisi daha fazla ısı yayar. Yüksek çekirdek sayısına sahip CPU’larda, bu ısı yoğunluğu, CPU sıcaklığını yönetirken daha düşük bir destek saatine neden olabilir. Daha düşük bir destek saati, tek iş parçacıklı uygulamalarda daha düşük performansa neden olacaktır. Bu durum genellikle oyun performansı kıyaslamalarında görülebilir. Video oyunları genellikle tek bir iş parçacığına bağımlıdır. Bu nedenle, tek iş parçacıklı performans genellikle oyun oynamak için kritik öneme sahiptir. 16-çekirdekli modeller gibi yüksek çekirdek sayısına sahip CPU’lar genellikle yüksek performans kutularındandır. Buna rağmen, tek iş parçacıklı kıyaslamalarda daha düşük çekirdek sayısına sahip “daha düşük” CPU’lar tarafından düzenli olarak daha iyi performans gösterdikleri görülebilir. Bu sorun, saat hızının üst düzey masaüstü CPU’lardan belirgin şekilde daha düşük olduğu 64 çekirdekli AMD Threadripper gibi ultra yüksek çekirdek sayılı CPU’larda daha da belirgindir.

Başarılar

Birçok uygulama birden fazla CPU çekirdeğini uygun şekilde kullanabilir. Örneğin, CPU render işlemini paralelleştirmek nispeten kolay bir iştir. Şu anda hiçbir CPU 64’ten fazla çekirdek sunmasa da, 64 çekirdeğe kadar ve daha yüksek performans iyileştirmeleri görülebilir. Birçok uygulama sıralı mantığa dayandığından çok iş parçacıklı olamaz. Bunlar çok iş parçacıklı bir programın hızına yakın bir yerde görülmese de, çok iş parçacıklı programların ve diğer tek iş parçacıklı programların diğer CPU çekirdeklerini kullanabilmesi, işlemci zamanını serbest bırakarak daha iyi performans sağlar.

Mimari seçenekler

Masaüstü işlemcilerde, çok çekirdekli bir CPU içindeki her CPU çekirdeği genellikle aynıdır. Bu homojenlik, çekirdekler üzerinde iş programlamayı kolaylaştırır. Aynı yinelenen tasarımın kullanılması da geliştirme maliyetlerinin düşük tutulmasına yardımcı olur. Ancak mobil işlemciler uzun zamandır heterojen çekirdek mimarileri kullanmaktadır. Bu tasarımda, iki ya da üç katmanlı CPU çekirdeği vardır. Her katman aynı işlemleri çalıştırabilir, ancak bazıları güç verimliliği için tasarlanmıştır ve diğerleri performans için ayarlanmıştır. Bu, pille çalışan cihazlar için bir başarı reçetesi olduğunu kanıtlamıştır, çünkü birçok görev daha yavaş, daha güç verimli çekirdekleri kullanabilir, pil ömrünü uzatırken, yüksek öncelikli işlemler gerektiğinde hala yüksek hızda çalıştırılabilir.

Masaüstü CPU mimarisi de heterojen bir çekirdek tasarımı yönünde ilerliyor. Intel’in Alder Lake 12inci nesil Core CPU serisi bunu yapan ilk masaüstü CPU’dur. Bu durumda, daha küçük çekirdeklerin ana itici faktörü mutlaka güç verimliliği değil, termal verimliliktir, ancak bunlar aynı madalyonun iki yüzüdür. Birden fazla güçlü çekirdeğe sahip olmak yüksek performans sağlarken, birçok verimli çekirdek ana çekirdekleri çok fazla etkilemeden arka plan görevlerini yerine getirebilir.

Sonuç

Çok çekirdekli bir CPU, yalnızca aynı kalıpta olmasa da genellikle tek bir pakette birden fazla işlem çekirdeği içeren bir CPU’dur. Çok çekirdekli CPU’lar birçok programa doğrudan bir performans artışı sağlamaz, ancak çekirdek sayısını artırarak tek iş parçacıklı programların CPU zamanı için çok fazla rekabet etmesine gerek kalmaz. Bazı programlar birden fazla çekirdekten tam olarak faydalanabilir ve mevcut olan çekirdek sayısını doğrudan kullanabilir. Bu, büyük bir performans artışı sağlar, ancak termal ve güç kısıtlamaları nedeniyle bu artış, çekirdeklerin iki katına çıkarılmasıyla doğrudan performansın iki katına çıkarılması anlamına gelmez