İPUCU

Donanım Bilgisayar Donanımı İle İlgili Yardımlaşma Bölümümüz ...

Seçenekler

İşlemciler hakkında bilmeniz gerekenler, çift çekirdek nedir??

Craagle - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2007
Nereden:
İzmir
Mesajlar:
4.115
Konular:
275
Teşekkür (Etti):
290
Teşekkür (Aldı):
1003
Ticaret:
(0) %
26-12-2009 10:39
#1
İşlemciler hakkında bilmeniz gerekenler, çift çekirdek nedir??
Dual-Core yani çift çekirdekli işlemciler genel manada yeni yeni kullanıma başlasalar da arkasına aldığı teknolojiler çok uzun zamandır tartışılan ve geliştirilen teknolojiler. Şu anda anladığımız mantalitede bilgisayarın icad olmasından beri kafa yorulan sorular ve çözümler var. Ve dahası Dual-Core'dan daha fazlası artık hayatımızda: Quad-core(dört çekirdekli) ve yıllar geçtikçe firmalar daha fazla işlemci çekirdeğini aynı yere sığdırmaya çalışacaklar.
Makale boyunca bana ilk duyduğumda garip gelen ve bilgisayarla yeni tanışmış okurlara da uzak durabilecek terimleri açıklamaya çalıştım. Ama açık olmayan yerler olursa lütfen forumlarda sorun cevaplayalım.
Çok çekirdekli işlemcileri açıklamaya çalışırken önce işlemcilerin nasıl çalıştığından bahsedeceğiz .Ardından çok çekirdekli işlemci ne demek, çoklu iş görme, vb konulara açıklık getirmeye çalışıp, günümüzde var olan çok çekirdekli işlemciler ile beraber firmaların yakın ve uzak zamanda çıkarmayı düşündüğü yeni işlemcilere de göz atıyoruz. Yer yer bu teknolojinin verimliliğini tartışıyoruz. Umarız güzel bir araştırma olmuştur.
Bazı Kavramlar

Öncelikle şu çekirdek olayına değinmek gerek. Çekirdek ya da "core" aslında fiziksel manada işlemcinin kendisidir. Zar ya da "die" içinde yakın zamana kadar sadece bir işlemci çekirdeği bulunuyordu. Dual-Core ya da genel ismiyle çift çekirdekli işlemcilerde bir zar içinde iki işlemci çekirdeği bulunuyor.
"Cache" ya da ön bellek denilen kısım gerçekten de bir hafızadır. İşlemci kendine gönderilen yönergeleri uygularken bu bellek üzerinde işlem yapar. Yönerge ise temelde çok ilkel işlem parçalarıdır. Mesela "şu bellek adresindeki bilgiyi al, şu bellek adresine taşı. Sonra ona iki ekle ve şu adrese taşı" denebilecek tarzda işlemlerdir. Bu işlemlerin bir de işlemci yönünde 1 ve 0'lar ile ifadeleri de vardır.
Çok çekirdekli işlemcileri anlatırken mutlaka kullanılması gereken bir kavram da "thread" kavramı. Bu kavramın Türkçesi "iş parçacığı" fakat "threading" olarak kullanıldığında iple bağlama gibi bir anlam kazanıyor. Aslında bu çok da yanlış bir anlam değil zira programcılıkta "threading" yapabilme sayınız kaç tane işlemciye bağlı olduğunuz ile orantılı. İşlemciler için ise "threading" aynı anda birden fazla iş parçacığını işleme sokabilmek manasında kullanılıyor. Intel patentli Hyper Threading buna güzel bir örnek. Thread kelimesindeki karmaşadan dolayı yazı boyunca olduğu gibi kullandık.
Çoklu işleme ya da "multi processing" kavramı da çok çekirdekli işlemciler ile can ciğer kuzu sarması olan bir kavram. Aslında çoklu işleme ile multi threading arasında çok fazla fark yok. Çoklu işleme; threading ve çekirdekler ile yapılan çoklu işlemlerin tümü. Yani daha genel bir kavram. Bir bakıma multi processing, multi threading ve multi core kavramlarını kapsayan genel bir kavram diyebiliriz.
Değinmeden geçemeyeceğimiz son kavram ise "multi tasking" yani çoklu görevlendirme ya da çoklu iş görme. Bu kavram Windows ile hayatımıza çoktan girmiş bir kavram. Temelde birden fazla programın aynı anda çalıştırılmasını sağlayan bir teknoloji fakat eğer sistemde sadece bir işlemci varsa pek de manasını bulmaz. Zira programlar birbirinden bağımsız çalışıyor görünseler de aslında sadece öyle görünürler. Yani Windows bir şekilde farklı programlardan gelen yönergeleri sıralar ve işlemciye gönderir. Aslında bu kavramın ilk çıkış yeri bilgisayarın ilk kullanımına kadar gider. İlk bilgisayarda işlemci, bir "interrupt" ya da kesme aldığında, mesela klavyeden veri girildiğinde, hiç bir şey yapmadan bekliyordu. Bunun yerine kesme süresince işlemciyi çalıştırmak için ortaya atılan bu kavram. Günümüze kadar gelmiş durumda.
Zar ya da İngilizcesi ile "die", işlemcinin silikon kısmı demek.
Bir İşlemci Nasıl Çalışır?

İşlemci ya da Merkezi İşleme Birimi (Central Processing Unit, CPU) yönergelerin işlendiği yegane aygıttır. Bu yönergeler bahsettiğimiz gibi çok basit yönergelerdir. Bu yönergeler işleyecekleri verileri "register" yani yazmaç denilen bölgelerde tutar. İşlemci bu yazmaçlara sistem belleğinden daha hızlı bir şekilde erişir.
İşlemci, yönergeleri senkronize etmek için kendine göre bir saat mekanizması kullanır. İşlemcinin hızı genellikle işlemcinin saat hızı demektir. Mesela 3GHz bir işlemcinin saati saniyede 3 milyar kere vurur. (GHz, gigahertz'in kısaltılmışıdır. Hertz, bir saniyede yapılan salınımdır. Giga, Mega'dan bin kat Mega da Kilo'dan bin kat fazladır. Kilo da bin kat demektir yani bir Giga 1 milyar kere demektir.) Her vuruş bir çevrim (cycle) olarak adlandırılır. Her bir yönergenin (instruction) ne kadar çevrimde sonuçlanacağı işlemciden işlemciye değişir. Genellikle işlemci ne kadar büyük saat hızına sahipse o kadar fazla işlemi aynı anda yapar denilebilir. İşlemcilerin nasıl çalıştığı ile ilgili makalemize buraya tıklayarak ulaşabilirsiniz.
Çoklu Çekirdek Tasarımı


Çoklu çekirdek tasarımının ilk göze çarpan avantajı elbette aynı anda birden fazla işlem yapabilme kapasitesi oluyor. Fakat bu tip bir avantaj asıl hızını, aynı zar üzerinde iki çekirdeğin ayrı ayrı işlemcilerden daha hızlı etkileşmesi ile buluyor. Aynı bellekte işlem yapan çekirdekler böylece belleğin farklı yerlerini kullanarak daha verimli kullanılmasını sağlıyor.
Aynı zar üzerinde iki çekirdek barınmasıyla, silikonun daha verimli kullanılmış oluyor ve kullanılmayan alan küçülüyor.
Öte yandan çoklu çekirdek mimarisindeki bir işlemcinin kullanımı işletim sisteminin becerisinden geçiyor. Zira ilk etapta şu sorun ile karşılaşılıyor: yönergeleri birbirinden bağımsız aynı anda çalıştırmak mümkün mü? Bu sorunun cevabı yönergenin kendisi ile alakalı. Bir yönerge kendinden sonraki yönerge için hesaplama yapıyorsa yani bu iki yönerge birbirine bağlıysa o zaman bu iki yönergeyi aynı anda çalıştırmak imkansız olacaktır. Mesela ocağı yak yemeği pişir gibi iki yönerge bir biri ile bağlıdır. Aynı anda bir thread üzerinden ocağı yakıp diğeri üzerinden yemeği pişiremeyiz. Ama tabii ki bir thread ile ocağı yakıp yemeği pişirirken diğer thread üzerinde salata da yapabiliriz. Bu bağlamda diyebiliriz ki, günümüz oyunları tek çekirdekli mimariye göre yazıldığı için 3 GHz ve tek çekirdekli bir işlemcide 2 GHz ve çift çekirdekli bir işlemciden daha hızlı çalışacaktır. Çünkü birden fazla thread ile çalışacak programlar ona uygun şekilde programlanmalıdır. Bu programlamada da esas olan yukarıda belirtildiği gibi bir yanda yemeği pişirirken bir yandan salata yapmak olmalı. Fakat şu anda bu tip dizayna sahip oyunların sayısı fazla değil. Dolayısıyla bir oyun için işlemci tek bir işlemci durumunda. Yani performans çoğu oyunda saat hızı ile orantılı durumda. Elbette ileride bu tip oyunlar yazılacaktır fakat multithreading destekli program yazmanın maliyeti çok fazla. Zira eklenecek her thread için kod yeniden ele alınmalı. Örneğin Valve'nin çok çekirdekli sistemler için geliştirdiği özel bir oyun motoru bulunmakta
Üretim açısından ise litografideki gelişmelere rağmen çok çekirdekli bir işlemci üretiminden alınacak sonuç normalden daha az olmakta. Çünkü işlemci üzerinde çizilecek devre oldukça küçük. Sony'nin IBM ile tasarladığı ve Play Station 3 için kullanacğı Cell işlemcisinin üretim sorunu bu. Zira ürettikleri silikon gofretlerden (wafer) çok düşük verim alıyorlar. Çünkü Cell üzerinde 9 çekirdek bulunuyor ve bu kadar ince bir dizayn üretimi oldukça kısırlaştırıyor.
Başka bir dez avantaj ise iki çekirdeğin de aynı veriyolu ve bellek bant genişliğini kullanacak olmasında kaynaklanan verim düşüklüğü. Zira iki çekirdekli bir işlemci tek çekirdekli bir işlemcinin kullanacağı kaynakları aralarında paylaşacaklardır. Fakat tek çekirdekli iki işlemci hem çift çekirdekli işlemcinin yapabileceklerini yapıp hem de bu kaynakları paylaşmadan kullanabilir. Dolayısıyla çoklu çekirdek mimarisi beraberinde yeni anakart dizaynları da getirmelidir.
Çoklu İşleme Niçin Kullanılır?

Çoklu işleme ile bir anlamda çoklu görevlendirme (multi tasking) gerçek manasını bulacaktır. İşletim sistemi aynı anda iki programı birbiri ile alakası olmadan çalıştırabilecektir. Aslında bu gücü kullanırken güvenliği arttıracak iyileştirmelere gidilebiliyor. Mesela bir yandan anti virüs yazılımı tüm sistemi tararken öte yandan diğer programlar anti virüs yazılımının performan harcamasından etkilenmeden çalışabilirler. Böylece anti virüs devreye girene kaar geçecek sürede (yani işlemci anti virüs yazılımının yönergelerini sıraya sokana kadar) kötü niyetli kod parçaları işleme alınmamış olur.
Aynı zamanda çok performans isteyen bazı işler, mesela ses/video işleme gibi, normal program döngüsünden ayrılarak sistemi rahatsız etmeyecek bir şekilde yürütülebilirler.
Tabii ki çoklu işleme bazı programların yapısında var. Mesela grafik tasarım için kullanılan araçlar, Maya, 3D S-max gibi, aynı anda birden fazla işlemciyi kullanabilme yetisine sahiptirler. Böylece bir sahne render edilirken iş daha hızlı bitirilmiş olur. Aynı şekilde geliştiricilerin program derlerken harcayacakları vakit neredeyse çekirdek sayısı oranınca azalabiliyor.
Günlük ev kullanımında biraz daha uzaklaşırsak, bilimsel sahada süper bilgisayarların kullanımı bazı araştırmalar için kaçınılmaz durumda. Aslında bir süper bilgisayar yüzlerce işlemcinin aynı anda işlem yapabildiği makineler ve genellikle bi tane işlemcinin kabiliyetleri işlemci sayısı ile çarpılıyor. Eğer işlemci aynı anda daha fazla çekridek barındırırsa bu aynı alanda daha fazla işlem gücü demektir.
Sunucularda çoklu işleme kullanımı açık sebeplerden yarar sağlamakta. Çünkü sunucu genellikle bir birinden bağımsız işlemleri aynı anda yürütmeye çalışır. Mesela bir web sunucusu farklı kullanıcılar ile farklı sayfalar ile çalışmak durumunda. Bundan dolayı sunucularda aynı anda yapılabilecek işlem sayısı önemli bir verimlilik sağlamakta. Aynı şekilde bir bilgisayarın donanımını bir kaç bilgisayara paylaştırarak yapılan sanallaştırma (virtualization) olayında da işlemci üstüne binen yükü paylaştırmak için çoklu işleme ya da çok çekirdekli işlemciler büyük rol oynar.

ALINTIDIR....
---------------------

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı