Çok çekirdekli işlemci

**Çok çekirdekli işlemci**, ikiden fazla işlemciden (çekirdek) oluşan bir hesaplama birimi. Bilgisayarlarda temel komut kümesi işlemlerini gerçekleştirir.

## Dağıtık sistem modeli
Dağıtık sistemlerde bilgi işleme, tek bir makinede sınırlanmamış birkaç bilgisayar üzerine dağıtılmıştır. Büyük bilgisayar tabanlı sistemlerin çoğu dağıtık sistemlere geçmiştir. Dağıtık sistemlerde; donanım ve yazılım kaynaklarının paylaşımı yapılabilir, bir hata oluştuktan sonra operasyona devam edilebilir, eşzamanlı işleme sayesinde performans arttırılabilir, farklı sağlayıcılardan gelen yazılım ve donanımlar kullanılabilir. Tüm bu faydaları dışında dağıtık sistemler genelde merkezi sistemlere göre daha karmaşıktırlar ve sistem yönetimi için daha fazla uğraş gerekir. Çoklu işlemci mimarileri en basit dağıtık sistem modelidir. Çoklu işlemcilerde, sistem farklı işlemler üzerinde çalışabilecek çoklu işlemlerden oluşur.

### Çok çekirdekli kavramı
Çok çekirdekli işlemcilerde, çekirdek diye bahsedilen aslında fiziksel manada işlemcinin kendisidir. Zar(die) içinde çok yakın bir zamana kadar sadece bir tane işlemci çekirdeği bulunuyordu. Ancak, mesela çift çekirdekli işlemcileri ele aldığımızda, bir zar içerisinde iki tane işlemci çekirdeği bulunduğunu görürüz. Çok çekirdekli işlemciler denildiği zaman mutlaka değinilmesi gereken çeşitli kavramlar vardır:
* Process (İşlem):Çalışır durumdaki program parçacığıdır.
* Thread (Alt işlem):Process, threadlara görevleri paylaştırır.
* İple bağlama (Threading): Aynı anda birden fazla iş parçacığını işleme sokabilmektir.
* Çoklu işleme (Multi processing): Threading ve çekirdekler ile yapılan çoklu işlemlerin tümüdür. 
* Çoklu görevlendirme (Multi tasking): Birden fazla programın aynı anda çalıştırılmasını sağlar.

### Çoklu çekirdek tasarımı
Çoklu çekirdek tasarımının en büyük avantajı, aynı anda birden fazla işlem yapabilme kapasitesidir. Bu tür işlemcilerde hızı sağlayan asıl etken, aynı zar üzerindeki iki işlemcinin etkileşmesinin, ayrı ayrı işlemcilerin etkilenmesinden daha hızlı olmasıyla oluyor. Çok çekirdekli işlemcilerde, iki çekirdek aynı veriyolu ve aynı bellek bant genişliğini kullanacağından bu verimin düşmesine neden olur.

İşlemci piyasasında işlemci başarımı çok önemlidir ve bu yüzden başarımı en mükemmel yapmak gerekir. Var olan üretim teknolojisi kullanılarak saat hızı ve işleme birimleri arasındaki dengeyi en iyi şekilde sağlayarak başarımı en iyi duruma getiren taraf, işlemci piyasasındaki başarım mücaadelesini kazanabilir.

Çok iş parçacıklı yazılımlar, çok çekirdekli tek işlemcili ve tek çekirdekli çok işlemcililerde işletim sisteminin iş parçacıklarını çekirdekler arasında paylaştırır. Bir bilgisayarın başarımını artırmak için saat hızını yükseltmektense daha fazla sayıda çekirdek eklemek başarımı daha fazla arttırır.

### Çok çekirdekli işlemciler
Eski 8086 işlemcilerinden, Athlon 64 ve Intel Pentium 4’e kadarki tüm işlemciler tek çekirdeklidir. Yani bunlar, üzerlerinde tek bir işlem birimi taşıyan işlemcilerdir. Tek vuruşlu işlemcilerde, tek bir uygulama varken saat hızları yüksek olduğunda başarım yüksek olabilir.

Çift işlem çekirdeğine sahip olmak demek teorikte çift işlem gücü demektir ancak işlem gücünün artabilmesi için uygulamaların çok çekirdekli işlemcilere göre uyarlanmış olması gereklidir.

Eğer yazılım çok iş parçacıklı çalışmak üzere tasarlanmışsa, daha yüksek hesaplama gücüne ihtiyaç duyan ağır bir yazılımdır. Bu tür yazılımları çalıştırmak için çift çekirdekli işlemcileri kullanmak kullanıcıya kolaylık sağlayacaktır. Ayrıca çift çekirdek, kullanıcı internette dolaşırken aynı anda elektronik posta gönderebilmesi gibi birden fazla uygulamayı aynı anda çalıştırmada kolaylık sağlar. Yani çift çekirdek sayesinde aynı anda birçok uygulama sorunsuz çalışır.

Dört çekirdekli işlemcilerin ise güçlerini gösterebildikleri az sayıda uygulama var. Çünkü uygulamaların birçoğu çok çekirdekli işlemcilere göre uyarlanmamıştır. Dört çekirdekli işlemciler, dört adet işlem çekirdeğinin ortak bir önbellekte tek bir yonga içine sokulmasıyla üretilirler.

## Firmaların çok çekirdek çalışmaları
Çok çekirdekli işlemciler üzerinde çalışan birçok firma bulunmaktadır. Bunların bazılarının çalışmaları aşağıdaki gibidir:

### Intel

İntel firmasının 1989 yılında yayınladıkları bir makalede 2000 yılında çift çekirdekli işlemci hedeflediklerini açıklamışlardı ancak hayallerine 2005 yılına kadar gerçekleştiremediler. Intelin 2002 senesinde NetBurst mimarisindeki işlemcilerinde kullandığı “Hyper Threading” ilk çoklu işleme teknolojisi oldu. Hyper Threading, eşzamanlı multi threading denilen bir yöntem kullanıyordu ve Intel bu teknolojiden % 30 verim artışı beklemesine rağmen, % 15 verim artışı alabildi. Çünkü yeniden yürütme sisteminde hatalar vardı bu da performansı düşürüyordu. HT teknolojisinin güvenlik yönünden de eksikleri vardı.

Core 2 Duo mimarisinde akıllı önbellek teknolojisi kullanıldı ve bu teknoloji ile amaçlanan hiçbir çakışma olmadan iki yürütme çekirdeğinin aynı belleği kullanmasıydı. Core 2 duo mimarisinde iki çekirdeğin aynı anda farklı programları rahat rahat çalıştırabilmesi hedefleniyordu.

Intel, bu tür amaçlar doğrultusunda 2005 yılında ilk çok çekirdekli işlemcisini Pentium Extreme Edition ile piyasaya sundu. Bu işlemciler, aynı saat hızına sahip işlemcilerin tek bir zar üzerine yerleştirilmesiyle elde edilmiştir. Daha sonraları Intel, Pentium-M mimarisini geliştirerek Core Duo ile dizüstü bilgisayarlar için ilk çift çekirdekli işlemciyi üretti ve aynı mimariyle Core2 Duo ile de masaüstü için üretti.

Intel, 2006 yılında 4 çekirdekli işlemci üretmek için harekete geçmiştir ve 2007'de Intel Core 2 Extreme ile birlikte ilk 4 çekirdekli işlemci de hazır hale geldi.Günümüzde ise i7 serisinin yyyyX işlemcilerinde 6 veya 8 çekirdek bulunmaktadır.Bu çekirdekler hyper threading ile 16 veya 12'ye kadar yükselebilmekte.

### AMD

AMD çok çekirdekli işlemciler konusunda Intel'in biraz gerisinde kalmıştır. AMD'nin çok çekirdekli ilk işlemcisi 2005 yılında piyasaya sürdüğü çift çekirdeğe sahip Opteron'dur. AMD hemen 1 ay içerisinde Athlon 64 X2 ile masaüstü bilgisayarlar için olan çift çekirdekli işlemcisini de piyasaya sürdü.

AMD çok çekirdekli işlemcilerinde, her çekirdek başına bir önbellek sağlıyor. AMD “Direct Connect” denilen bir teknoloji ile performans artışı sağlamaktadır. Bu mimaride farklı programlar aynı anda düzgünce çalışabilecektir ama aynı programın aynı veri üzerinde çalışması kolay olmayacaktır.

Intel mimarisinde muhtemel sıkışmalar olabilir, AMD mimarisinde ise yürütme çekirdekleri doğrudan belleklere bağlı ve bellekler ayrıdır. AMD, 2006 yılında yaptığı açıklamaya göre 4 çekirdekli işlemcilerini 2007 yılında piyasaya sundu.

### IBM
IBM, 2000 yılında POWER4 işlemcileri ile ilk çift çekirdekli işlemciyi üreten firmadır. Aynı yıl içerisinde IBM'in, Sony ve Toshiba ile kurduğu STI, Cell adlı çok çekirdekli işlemci geliştirmeye başladı. Cell işlemcileri; güç işlemcisi elemanı, sinerjetik işleme elemanları ve eleman ara bağlama yolu olmak üzere 3 temel kısımdan oluşur.

### Sun Microsystems
Sun, Niagara kod adlı UltraSpac T1 işlemcisini normal işlemcilerden farklı bir mimari ile tasarladı. Niagara'da ayrıca farklı bir kod yapısı kullanıldı ve OpenSparc projesi ile Niagara'nın kodu tüm kullanıcılara açıldı.