Çok Çekirdekli İşlemcilerde Nesnelerin Dağıtılması

thumbnail.default.placeholder
Tarih
2009-10-19
Yazarlar
Kayar, Tolga
Süreli Yayın başlığı
Süreli Yayın ISSN
Cilt Başlığı
Yayınevi
Fen Bilimleri Enstitüsü
Institute of Science and Technology
Özet
Çok çekirdekli işlemcilerde yazılım geliştirme son zamanlarda üzerinde durulan konulardan bir tanesidir. Çok çekirdekli işlemcilerde programlama üzerine yapılmış birçok araştırma bulunmaktadır. Eski tip işlemcilerle çok çekirdekli işlemciler arasında yazılım geliştirme açısından farklılıklar bulunmaktadır. Şu anda kullanımda olan ve çok çekirdekli işlemcilere uygun bir biçimde geliştirilmemiş yazılımlar bu işlemciler üzerinde verimli çalışmamaktadır. Bu sorun hiçte kolay olmayan bir adaptasyon süreci ortaya çıkarmaktadır. Bu süreçte en büyük iş programcılara düşmektedir. Bu sorunu işaret eden birçok kitap ve yayın bulunmaktadır. Yazılım geliştirme sürecinde şu anda en çok tercih edilen yöntem nesneye dayalı programlamadır. Günümüzde üzerinde durulan bir diğer önemli ve popüler konu çok çekirdekli işlemcilerde nesneye dayalı yazılım geliştirmedir. Bu araçlar çok iplikli yapı ile paralelliği sağlamaktadır. Bu paralelleştirmeden faydalanabilmek için programcının bu araçların sağladığı özel komutları kullanması gerekmektedir. Paralelleştirme için kullanılan bir diğer yöntem otomatik paralelleştirmedir. Fakat otomatik paralelleştirme nesneler düzeyinde değil fonksiyonlar düzeyinde yapılmaktadır. Nesneye dayalı programlama foksiyonlardan değil nesnelerden oluştuğundan dolayı fonksiyonlar düzeyinde paralelleştirme tam olarak uygun olmamaktadır. Bu tezde nesnelerin çekirdeklere derleme seviyesinde dağıtılmasına ilişkin önerilen algoritmayla daha iyi performans ve paralellik sağlanmıştır. Nesneleri çekirdeklere dağıtmak, nesneyi önceden belirli bir çekirdekte yaratıp daha sonra yapılan tüm yordam çağrılarını nesnenin yaratıldığı çekirdeğe yapmaktır. Önerilen algoritmanın nesneleri rastgele dağıtmaktan veya ilk boş bulunan çekirdeğe atmaktan daha iyi ve anlamlı olduğu gösterilmiştir. Bu sonuç birinci ve ikinci seviye önbellekten kaynaklanmaktadır. Nesnelerin niteliklerinden ve paylaşılan verilerinden dolayı nesnelerin aynı işlemcide hatta aynı çekirdekte kalması performansı arttırmış ve önbelleklerin daha iyi kullanılmasını sağlamıştır.
Software development on multicore processors is an interesting research issue. There are lots of researches about multicore programming. Current softwares, that are not designed to work on multicore CPUs, do not work efficiently on multicore CPUs. This problem reveals an adaptation process that is not easy. In this process the most significant responsibility is on software developers. Object oriented programming is popular and prefered programming method. Software development on multicore with object oriented programming is another popular issue nowadays. There are tools to develop parallel object oriented software. They provide parallelism with multithreading. The other method for parallelism is automatic (implicit) parallelism. However automatic parallelism is not made on object level, it is made on function level. Since object oriented programming consists of objects not functions, function level parallelism is not suitable. In this thesis we propose an algorithm for the distribution of objects to cores on compile level to provide better performance and parallelism. Distribution of objects to cores means creating an object on specific core and calling its methods on the core which the object is created on. We show that our algorithm is more efficient and meaningful than random distribution or distribution to the first empty core methods. For each object staying in the same processor, even in the same core results better use of caches and increases performance due to the attributes and shared data of objects among cores of the processors.
Açıklama
Tez (Yüksek Lisans) -- İstanbul Teknik Üniversitesi, Fen Bilimleri Enstitüsü, 2009
Thesis (M.Sc.) -- İstanbul Technical University, Institute of Science and Technology, 2009
Anahtar kelimeler
çok çekirdekli işlemciler, zaman çizelgesi, nesneye dayalı programlama, multicore processors, scheduler, object oriented programming
Alıntı