Daha önce multi core işlemcileri ve Intel x86 multicore organizasyonunu araştırmıştım. Bilgisayarda, arşivimi kurcalarken denk geldim ve burada paylaşmak istedim. Aşağıdaki bilgileri birçok çeşitli kaynaktan alıntı yapıp düzenleyerek hazırladım. Hatırlayabildiğim kaynakları en alta yazacağım. Çok çekirdekli işlemcileri merak edenler için güzel bir yazı olacağını düşünüyorum. Eksik veya hatalı yazdığım bir yer varsa yoruma yazabilirsiniz.
Araştırdığım konularda temele inme gibi bir özelliğim vardır. Bu konuda da aynı şekilde ilerleyeceğiz. Örneğin, multicore işlemcileri bilmek için öncelikle “işlemci“, “mikro” ve “mikroişlemci” gibi kavramları bilmeniz gerekiyor.
Öyleyse başlayalım…
İŞLEMCİ NEDİR?
Bilgisayarın birimlerinin çalışmasını ve bu birimler arasındaki veri (data) akışını kontrol eden, veri işleme (verilerin değerlendirilip yeni veriler üretilmesi) görevlerini yerine getiren elektronik aygıtlara işlemci (Central Process Unit, CPU) denir. İşlemci için bir bilgisayarın beynidir ifadesini kullanmak doğru olacaktır.
Bilgisayardaki işlemci tıpkı bir insandaki beyin gibi; hangi bilginin nerede olduğunu bilir, gerekli işlemleri gerçekleştirir ve gerekli yerlere göndermektedir. Bilgisayar üzerinde yapılan her işlem ve hareket işlemcinin bilgisi dahilindedir. İşlemci mekanik parçası bulunmayan entegre devrelerdir. Günümüzde piyasada birçok çeşitte işlemci bulunmaktadır. Bulaşık makinesi, çamaşır makinesi, televizyon, fabrikalardaki otomatik makine ve cihazlar gibi daha birçok elektronik alette işlemciler bulunmaktadır. Nasıl ki insan beyni tüm organları sinir sistemi vasıtasıyla yönetiyorsa, bu elektronik aletlerde de işlemci aynı görevi yapmaktadır.
1970’lerde mikroişlemcilerin üretilmesiyle işlemcinin kullanım alanları da genişlemiştir. Bu sayede şuan kullanılan otomobiller, cep telefonları, bilgisayarlar ve daha birçok üründe bu işlemcilerden kullanılmaktadır.
MİKROİŞLEMCİ NEDİR?
Mikroişlemci, hafıza ve giriş çıkış birimlerini bulunduran yapının geneline mikrobilgisayar; CPU‘yu bulunduran entegre devre çipine ise mikroişlemci denir. Aslında mikroişlemciler en basit halleriyle bilgisayarlardır ve 3 temel bölümde incelenirler.
► CPU (Merkezi İşlem Birimi) (Central Processing Unit)
► Hafıza (Memory)
► Donanım (Giriş çıkış birimleri)
ÇEKİRDEK NEDİR?
İşletim sistemi çekirdeği, kısaca çekirdek (kernel), işletim sisteminin kalbidir. Uygulamalar ve donanım seviyesindeki bilgi işlemleri arasında bir köprü görevi görür. Çekirdeğin görevleri sistemin kaynaklarını yönetmeyi de kapsamaktadır. Genellikle çekirdek, işletim sisteminin temel bir elemanı olarak, yazılımın fonksiyonunu yerine getirebilmesi için kontrol etmesi gereken kaynaklar için düşük seviye soyutlama katmanı sağlayabilir. İşletim sistemi görevleri, tasarımları ve uygulanmalarına göre farklı çekirdekler tarafından farklı şekillerde yapılır. Sistem açılırken belleğe yüklenir ve sistem kapatılıncaya kadar ana bellekte kalır.
Çekirdek, ayrıcalıklı bir işlem seviyesi olan Kernel Mode‘da çalışır. Bu işlem seviyesinde çalışan kod, donanıma ve sistemin tamamına tam yetki ile müdahale edebilir. Uygulama programları ise, User Mode denilen daha kısıtlı bir işlem seviyesinde çalışır. User mode’da çalışan uygulamalar, çekirdeğin ya da başka uygulamaların bellek bölgelerine erişemezler, bazı kısıtlanmış işlemci komutlarını çalıştıramazlar ve donanım kaynaklarına doğrudan müdahale edemezler.
ÇOK ÇEKİRDEKLİ KAVRAMI
Ç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 İş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.
ÇOK ÇEKİRDEKLİ İŞLEMCİLER (MULTI-CORE PROCESSORS)
Bilgisayar mimarisi konusunda kullanılan bir teknolojidir. İşlemcinin alt çekirdeklerinin oluşturulması ve yükün bu çekirdekler üzerine dağıtılarak, aynı anda işlenmesini ve böylece işlem gücü elde edilmesini hedefler.
Çok çekirdekli işlemci mimarisinin anlaşılabilmesi için öncelikle çekirdek (core) kavramını anlamalıyız. Çekirdek, temel olarak bir işlemcinin okuma ve çalıştırma yapan kısmıdır (read and execute). Klasik bütün işlemciler tek çekirdeklidir. Bunun anlamı, klasik bir işlemcide, tek bir okumadan ve çalıştırmadan sorumlu parça bulunur. Dolayısıyla klasik bir işlemci, aynı anda tek bir işlem çalıştırabilir. Çok çekirdekli mimarilerde, birden fazla çekirdek (genelde 2 4 veya 6 gibi 2’nin katları şeklinde) çekirdek, entegre devre olarak bulunur. Bu entegre devre yaklaşımından dolayı, literatürde, CMP (chip multi processor) tabiri de, çok çekirdekli işlemciler için kullanılmaktadır.
Çok çekirdekli işlemciler, oldukça geniş alanlarda kullanılabilir. Örneğin resim işleme, bilimsel verilerin işlenmesi veya dijital sinyal işleme gibi alanlarda kullanılabilirler. Problemlerin paralelleştirilebilmesi, işlemcideki hız artışı ile doğru orantılıdır. Örneğin, çok çekirdekli bir işlemci, paralel hale getirilemeyen bir problem için bir hız avantajı sağlamayabilir.
Dikkat edilmesi gereken bir nokta, çok çekirdekli mimariler ile çok işlemcili mimariler arasında fark olduğudur. Çok çekirdek ile kast edilen bir işlemcinin içerisinde birden fazla çekirdek bulunmasıdır.
Yukarıdaki şekilde görüldüğü üzere, Tek bir veriyoluna bağlı çok sayıda çekirdek ve her çekirdeğin kendi içerisinde 1. seviye önbellek (level 1 cache, L1 cache) bulunmakta, 2. seviye önbellek ise, veri yolu üzerinde durmaktadır. Bu sayede önbellek açısından (cache), her çekirdek kendi belleğini kullanırken, aynı zamanda, veri yolu üzerinde paylaşılmış bir önbellek kullanımı da mümkündür.
ÇOK ÇEKİRDEKLİ İŞLEMCİLERİN FARKI
Bir süre önce kullandığımız bilgisayarlar, tek çekirdekli işlemcilerden ibaretti. Şimdilerde ise PC‘lerimizde, laptop’larımızda ve tabletlerimizde kullanılan işlemciler çift, dört hatta sekiz çekirdekliler. Çift çekirdekli bir işlemciyle dört çekirdekli işlemci arasındaki farkları kısaca 3 maddede özetleyebiliriz.
- Her işlemci çekirdeği, ayrı bir merkezi işlem birimidir. Örneğin çift çekirdekli işlemci, tek çipli bir işlemci gibi görünür ancak içerisinde iki işlem birimi vardır. Ek merkezi işlem birimleri, birden çok işi aynı anda yapabilirler.
- Saat hızı, işlemcilerin ne kadar hızlı çalıştığını belirler (ancak tek başına hızı ölçmekte yeterli değildir). Örneğin Intel’in Core i5-3330 işlemcisi, 3GHz ile çalışan dört çekirdeğe sahiptir. Bu çekirdeklerin her biri 3GHz’de çalışır.
- Bilgisayar yazılımlarının çoğu tek iş parçacığı kullanacak şekilde yazıldığından, işi birden fazla işlemciye dağıtmaz. Dolayısıyla tek iş parçacıklı bir yazılımı 4 çekirdekli bir işlemcide çalıştırdığınızda, sadece tek çekirdekte çalışacaktır; diğer işlemciler ise farklı işler için boşta, hazır olarak bekleyeceklerdir. Bazı uygulamalar, çoklu çekirdeklerin sunduğu avantajları kullanırlar. Bunlar arasında Google Chrome web tarayıcısı, bazı oyunlar, sıkıştırma yazılımları bulunuyor. Ancak çoğu yazılım, tek çekirdeğinizi kullanacaktır. Çift çekirdekli bir işlemciye sahip olmanız, MS Office’i iki kat hızlı çalıştıracağınız anlamına gelmez. Ancak birçok yazılımı aynı anda kullanıyorsanız veya sanal makinelerden faydalanıyorsanız, çoklu çekirdeğin farkını hissedeceksiniz.
ÇOK ÇEKİRDEKLİ İŞLEMCİ ÇALIŞMALARI
• INTEL
Intel’in 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, 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.
INTEL CORE SERISI
Yeni bir bilgisayar sistemi kurmak isteyenlerin satın almadan önce en çok dikkat etmesi gereken bileşenler işlemcilerdir. Aynı zamanda yeni sistemde ilk karar vermeniz gereken bileşen de işlemcidir. Bunun nedeni ise tüm sistemin seçeceğiniz işlemciye göre şekillenecek olmasıdır.
Intel‘in en üst seviye modelleri Core i5 ve Core i7 serilerinde yer alıyor. Pentium, Core 2 Duo ve Core 2 Quad gibi daha eski serileri bir kenara bırakırsak geriye Core i serisi modeller kalıyor. Core i serisi de kendi arasında Core i3, Core i5 ve Core i7 olarak üçe ayrılıyor.
Core i3 modelleri giriş seviyesinde olduğu için hangi modelin kime hitap ettiği daha rahat anlaşılabiliyor. Ancak iş Core i5 ve Core i7 arasındaki farkları anlamaya gelince işin biraz daha derinlerine inmek şart oluyor.
INTEL CORE i5 VE i7 FARKLARI
Çok temel olarak bakıldığında Core i5 işlemcilerin orta seviye, Core i7 modellerinin ise üst seviye olduğu söylenebilir. Ancak iki seri arasındaki farklar aslında bu kadar kesin çizgilerle ayrılmış değil. Core i5 modellerinin hepsi LGA 1156 soketini kullanan işlemciler. Core i5 işlemcilerinin ya iki ya da dört çekirdekli modelleri bulunuyor. Öte yandan Core i7 modelleri kullandıkları soketlere göre ikiye ayrılıyorlar. Bazı Core i7’ler LGA 1366 soketini kullanırken bazı modeller ise LGA 1156 soketine uyuyorlar. Core i7’lerde iki çekirdekli model bulunmazken, dördün dışında altı çekirdekli bazı işlemciler de bu seriye dahiller.
MULTI-CORE İŞLEMCİ KRİTERLERİ
DONANIM PERFORMANS KRİTERLERİ
Mikroişlemci tasarımındaki organizasyona yönelik geliştirmeler temel olarak instruction-level parallellism’i artırmaya yöneliktir. Her clock cycle’da olabildiği kadar çok sayıda komut çalıştırılmaya çalışılır. Instruction-level paralellism’e yönelik ilk geliştirme superscalar mimaridir.
- Superscalar mimaride birden fazla pipeline ile execution kaynakları artırılır.
- Simultaneous multithreading mimarisinde, çok sayıda PC ve çok sayıda register bulunur. Böylelikle birden fazla process arasında geçiş yapılarak programlar çalıştırılır.
- Multicore mimarisinde, çok sayıda CPU kendisine ait L1 cache belleğe sahiptir. L2 cache bellek paylaşılarak kullanılır.
- Mikroişlemci içerisindeki transistör sayısı arttıkça, pipelining, superscalarve SMT tasarımları geliştirildikçe güç gereksinimi artmaktadır.
- Mikroişlemci içerisindeki yoğunluk arttıkça ve clock frekans arttıkça güç gereksinimi artmaktadır. Hafızada birim alanda harcanan güç, mantık devrelerinde harcanandan daha düşüktür. Mikroişlemcideki cache bellek alanı artmıştır.
YAZILIM PERFORMANS KRİTERLERİ
- Multicore organizasyonun performansı çoklu kaynakların çalışmakta olan uygulama tarafından etkin kullanımını artırmakla orantılıdır.
- Multicore bir mikroişlemcide 8 core bulunmaktadır.
- Multicore işlemcilerde işlerin dağıtılması, cache coherence sağlanması ve iletişim için overhead oluşur.
- Veritabanı uygulamaları, işletim sistemleri ve middleware yazılımlarda speedup faktörü yüksektir.
MULTI-CORE ORGANİZASYONU
Multicore organizasyondaki temel değişkenler:
- Chip içerisinde core işlemci sayısı
- Cache bellek seviye sayısı
- Paylaşılan cache bellek miktarı
Bu araştırmanın sonucunda, işlemcilerdeki gelişmeyi öğrenmiş ve çekirdek kavramını anlamış olduk. Gelişen multicore işlemciler ile çoklu işlemcilerin teknoloji dünyasında birçok fayda sağladığını söyleyebiliriz. Bu multicore işlemcilerin özelliklerini ve içyapısını öğrenmiş, aralarındaki farkları da anlamış olduk.
Tüm bu özelliklere baktığım zaman kişisel olarak düşünceme dayanarak, Intel Core i7 favori durumundadır. Gerek özellikleri gerekse diğer işlemciler ile arasındaki farklardan olsun, işime yarayacağını düşündüğüm ve şu an için en iyi olarak tanımlayabileceğim bir yapıya sahip.
Teknolojinin hızla gelişmesi ile çok daha iyi işlemcilerin üretileceğinden şüphem yok. Araştırma sonucunda bu yönde çalışmalar yapıldığını da öğrenmiş oldum. Bize de bu teknoloji dünyasının bir parçası olarak gelişmeleri takip etmek ve örnek almak düşüyor.
Kaynaklar: tr.wikipedia.org , bilgisayarkavramlari.com , chip.com.tr, gazi.edu.tr , engineering.uottawa.ca
Bir yanıt yazın