Bu kadar çok çekirdek lazım mı?

Bilgisayarınızdaki çekirdek sayısını artırmak her zaman, özellikle de bir son kullanıcıysanız çok fazla işinize yarıyor mu? Bu yazıda çekirdek meselesine biraz değinmek istiyorum.

tilera_islemci_on_arka

Tilera Tile Gx isimli işlemcisiyle 100 çekirdeğe ulaştı.

Her ne kadar ne kadar çekirdek sayısı üzerine pazarlama fetişizmi geliştirilecek kadar önemli bir rakam da olsa kullanıcıların fark etmediği veya kasıtlı olarak gözden uzak tuttuğu bir gerçek var: Ne yazık ki günümüzde yazılımların çoğunluğu çok izlekli (multi-threading) yapıya sahip değil. Yani, kaç tane bağımsız yuvada kaç çekirdekli işlemciniz olursa olsun, yazılım sadece bütün bu donanımsal kaynaktan sadece tek bir çekirdeği kullanabiliyor.

Programcıların derdi

Açık konuşalım: Bir uygulamayı izleklere bölmek çok zor bir iş. Zamanında Intel desteğiyle Boğaziçi Üniversitesi‘nde açılan ve bu tür uygulamalar geliştirilmesi için tahsis edilen laboratuarda öğretim görevlileriyle konuşurken onların bile “bir gün birisi çıksa ve 3 GHz değil 10 GHz işlemci ürettik, tek yoldan daha fazla hız için uğraşacağız ve artık böyle ilerlenecek dese, kimse bu işlerle uğraşmaz” dediğini dün gibi hatırlıyorum. Dolayısıyla mimarilere ve çekirdek sayılarına göre, kaynak yönetimini (önbellek tutarlılıklarının (cache coherency) sağlanması, çekirdekler arası iletişim ve iş bölümü) sistem seviyesine bırakıp sadece işi yapan kodu kendisini her yere uyarlayabilen ve verimlilik kaybı yaşamadan çalışabilen kod yazmak zor iş.

crysis_nanoluadam

Yerli kardeşlerin zoraki yalanı

Intel’in de desteklediği Crytek’in Crysis oyunu bütün dünyada çok büyük ilgi gördü. Tabii “Yahu bu adamlar Türk işte” diyerek mesnetsiz bir sahiplenme duygusuyla sarıldığımız Crytek’in sahibi Türk kökenli Yerli kardeşler, İstanbul’daki bir toplantıda “Peki çok çekirdeğin oyun performansına bir etkisi var mı” sorularına, var var diyerek cevap verdiler. Tabii, nasıl var çok da açıklayamadılar. Burada iki nokta vardı ve toplantıda, donanımdan anlayan herkes bunları çok iyi biliyordu:

  • Crysis, işlemci ve bellek performansından etkilense de oyun içindeki performans anlamında ekran kartına daha çok bağımlı bir oyun. Bunu en önemli iş ortakları olan Nvidia kadar iyi biliyorlar.
  • Crysis oyununun motoru çok izlekli bir yapıya sahip değil. Yani dört çekirdekli bir işlemciniz varsa crysis.exe en fazla %25 işlemci yükü yaratabilecek ve tek çekirdeğin performansıyla sınırlı kalacak. En azından bu konuşmanın geçtiği sıralarda durum buydu.

Peki Yerli kardeşler durumu nasıl topladı? Saniyede gösterilen kare sayısını sabit tutarak performansa katkı yapıyormuş. Yani zaten çok çekirdeğe para vermemizin sebebi, çalışan ana yazılımların kendilerine bir çekirdeği ayırabilmesi, geri kalan arka plan işlerinin de boştaki çekirdek veya çekirdeklere aktarılması sayesinde ana yazılımın sorunsuz biçimde ve performans kaybına uğramadan çalışması değil mi?

Uzman uygulamalarla hayat bulan çekirdekler

Kısıtlı miktarda da olsa bazı ev kullanıcısı ve uzmanlara yönelik uygulamalarda çok çekirdek destekli uygulamalar var. Bu çok çekirdekli uygulamalar bazı noktalarda yeterince verimli olamayabiliyor. Örneğin Nero Move it ilk çıktığında sergilediği düşük çok çekirdek kullanım yeteneği sebebiyle bende hayal kırıklığı yaşatmıştı.

nero_move_it_logowork

We like to… move it!

Adobe gibi sayısal içerik üretimi konusunda uzman bir şirket bile bu konuda muzdarip. En son montaj masasına oturduğum zaman, ilginç şekilde After Effects’in çoklu izlek desteğinin olduğunu, fakat çatır çutur çıkış almanız gereken ve aslında daha çok kullanılan bir üretim yazılımı olan Premiere’de ise bu desteğin bulunmadığını görmüştüm. Dolayısıyla gidilecek daha çok yol var.

Özel işlemciler ve ekran kartları

Peki gelelim, yazının girişinde gördüğünüz resmin sebebine. Tilera isimli şirket, 100 tane çekirdeği bir araya getirdiği bir işlemciden bahsediyor. Bu işlemcileri özel yapan şey, ekran kartlarındaki akış mantığını benimsemiş olmaları. Peki, bunlar bizim ne işimize yarıyor? Aslında, nasıl sorusu daha fazla anlam ifade ediyor.

opengl_logo350Ekran kartlarını OpenGL ve DirectX gibi API’lar için
birer hızlandırıcı olarak düşünebiliriz.

Temel işletim sistemi (işlem denetimi ve sürücülerin bileşenlere hükmetmesi diye özetleyelim) haricinde (ve aslında bunların bazıları da dahil) her bir iş çeşitli yazılımsal katmanların belirli nesnelere yaptırmaları ve sisteme geri dönmesi olarak tanımlanabilir. Biz bunlara genellikle API, yani yazılım programlama arayüzü diyoruz. Örneğin DirectX ve openGL arayüzleri, ekran kartına grafik kökenli işleri yaptırıyorlar. Ekran kartı dediğimiz şey aslında işletim sistemlerindeki programlama arayüzleri için birer hızlandırıcı gibi çalışıyor. Bu mantıkla herhangi bir API için herhangi bir hızlandırıcı yazabilirsiniz. Bunun oyuncuların en çok bileceği örnek vermek gerekirse, PhysX diyebiliriz. Önceleri kendi hızlandırıcısına sahip olan PhysX şimdilerde CUDA teknolojisinden faydalanarak Nvidia ekran kartları üzerinden çalışıyor.

Toshiba Quad Core HD ve Tilera

Toshiba’nın, Quad Core HD dediği ama aslında Sony, Toshiba ve IBM’in ortaklara üretimi olan ve Playstation 3’te de kullanılan Cell işlemcisinin bir türevi olan sistem, benzer biçimde dizüstü bilgisayarların video sıkıştırma ve açma yeteneklerini değiştiren bir işlemci. Bu işlemci kendisine özel yazılımlardan faydalanarak bu işlemleri, sistemdeki işlemciye yük bindirmeden yapabiliyor.

products_TILEmpower_diagram

Tilera TILEPro64 kullanılan bir bağımsız sistemin yapı planı (ürün için tıklayın)

Tilera’nın durumu biraz daha farklı. Kendisine has mimarisiyle çalışan Tilera’nın Tile serisi işlemcileri, bağımsız olarak kullanılabiliyor. Bu şekilde çok fazla akışa ihtiyaç duyduğunuzda Tilera’nın çözümleri sizi kendinize getirebilir. Tabii altyapı konusunda duruma özel sistemler kurmanız gerekebilecektir. Elbette temelde bu işin CUDA veya ATI Stream’den çok az farkı var gibi görünüyor ama Tilera’nın çözümü kendisine has bağımsız sistemlerde de kullanılabildiği için daha işe yarar bir çözüm.

Java yongaları gelecek mi? 🙂

Elbette burada BYTE’ın yanılmıyorsam 1996’da kullandığı bir kapaktaki konuyu paylaşmazsam olmaz. Java dili, sanal makine üzerine çalışan ve bu sebeple her türlü platformda neredeyse hiç müdahale gerektirmeden çalışabilen bir sistem. Bununla ilgili hazırlanan kapak konusu muhtemel Java yongalarını konu alıyordu. Yani Java uygulamalarını kendisi işleyerek sistemdeki yükünü azaltacak bir şeylerden bahsediyoruz. Dile kolay 13 sene geçmiş, bilgisayarlarda adanmış Java yongaları yok fakat en azından bilişimciler uygulamalara yönelik hızlandırıcıları hızla keşfediyor ve bunların önemini daha iyi anlıyor.

Etiketleri: , , , , , , , ,

“Bu kadar çok çekirdek lazım mı?” konusu için 2 yorum var

  1. Alper Güçlü demiş ki:

    Güzel bir yazı olmuş Berkin eline sağlık.
    Multi thread’in yüksek verim hedefleyen iş uygulamalarında ne kadar önemli bir konu olduğu da böylece ortaya çıkıyor aslında.
    Çekirdeklerimizi kullanabilmeliyiz değil mi 🙂 4 çekirdekli mimaride işlemci kaynağının % 25’ini kullanabilmekten bahsediyoruz ama bahsettiğin 100 çekirdekli de durum % 1 olacak.
    Bunun için her bir isteği bir thread olarak ele alan web sunucuları üzerinde geliştirilen web uygulamalarının bir avantajı var ama ne kadar yeterli göreceğiz.

  2. Güren GÜRSEL demiş ki:

    Ellerine sağlık Berkin yoldaş! 🙂 Tilera adlı arkadaşlar 1.5-2 sene önce de adlarını duyurmuşlardı. 100 dolara 32 çekirdek… isteyene 200 dolara 64 çekirdek gibi böyle çekirdek dağıtıyordu. Benim ilgimi çekmişti ve PC World’e yazmıştım taa o zamanlarda haber olarak. Aradan geçen senelerde pek bişey değişmemiş gibi göründü gözüme. Hatırladığım kadarıyla çekirdekler çok, ama hızları düşük 800 MHz ya da 900 MHz gibi diye hatırlıyorum. Çok uzatmak istemiyorum çünkü ciddiye alınacak bir yenilik olduğunu düşünmüyorum. Intel ve AMD’yi emüle etmek için bir kısmını kullansa zaten geriye pek bişey kalmıyor 🙂 Fakat şöyle bir durum var. Bu çekirdekleri shader’a dönüştürüp ekran kartı piyasasına girebilir diye düşünüyorum 🙂 Çünkü yazılımcılar 4 çekirdeğe bile tam hakim yazılımlar yazmakta zorlanırken 100 çekirdekle kimsenin uğraşacağını sanmıyorum 🙂

Yorum Yapın

*