31 Ekim 2009 Cumartesi

Çok Çekirdekli Sistemler

Çok Çekirdekli Sistemler
Aşağıdaki linkten ManyCore Computing Workshop'un detaylarına erişebilirsiniz. Çok Çekirdekli sistemlerin geleceği ve uygulamalar ile ilgili çeşitli bilgiler / sunumlar yer almaktadır.

Link: http://science.officeisp.net/ManycoreComputingWorkshop07/default.aspx

Notlar:

* İntel'e göre Moore Yasası güncelliğini devam ettirmektedir...
* Aynı büyüklükteki tek çekirdekli işlemci performansı ile çok çekirdekli işlemci performansı arasındaki fark çok çekirdekli sistemlerden yana artmaktadır.
* Çok çekirdekli sistemler oldukça yaygın bir haldedir ...
* Önceye göre çekirdek artış hızı da artmıştır, bir tahmine göre çekirdek sayısı 2015'te 128 ve 2020 ise 1024 olacaktır.
* Çekirdek sayısının artması ile performansda aynı oranda artacak mıdır? Bu kadar çekirdeği verimli bir şekilde kullanabilecek miyiz?
* Çok Çekirdekli sistemler ile ilgili temel sorular/konular şunlardır

Cores
Kaç tane? Hangi Büyüklükte
Homojen, heterojen
Programlanabilir, Ayarlanabilir, Sabit fonksiyonlu

Chip-level
Arabağlantı: Topoloji, bandgenişliği
Koordinasyon
Yönetim

Memory Hierarchy
Seviye sayısı, paylaşım, içerme
Bandgenişliği, yeni teknoloji
Entegrasyon/Paketleme

I/O Bandwidth
Silikon tabanlı photonics (ışık bilimi)
Terabit bağlantılar

Yazılım Konuları
Bu kadar geniş bir yapıda paralelizmi nasıl programlayacağız?

Performans, verim, güvenlik gibi bir sürü anahtar yazılım geliştirme konusu mevcuttur. Paralelizim, diğer ihtiyaçlarla birlikte ele alınmalıdır.

Paralel Yaklaşımlar için aşağıdakiler gereklidir.
Daha düşük programlama verimi
Yazılım mimarilerinde köklü değişiklikler
Her taraftaki kod yapılarında önemli değişiklikler
Karmaşık debug ve test
Çok versiyon bakım ihtiyacı
Farklı geliştirme ihtiyaçları (yüksek destek maliyeti)
Modüler olmayan etkileşim
>Kod üzerindeki değişiklikler yüksek koordinasyon gerektirir
>Bağımlılıklar arasındaki uygunluğu artırır


Paralelizmde Aşlağıdaki Gibi Çarpıcı Buluşlara İhtiyaç Bulunmaktadır.

- Sıralı programlamaya göre daha az efort
- Paralel programlamanın programlama karmaşıklığını artırmaması
- Paralel programlama ileriye doğru ölçeklenebilirliğe sahip olması
  • Sürekli yenilenen donanım platformları üzerinde daha hızlı uygulama geliştirme.
  • Ölçekli veri setleri, ölçeklenen çıkış kalitesi- tekrar programlama olmadan daha fazla paralelizm.
- Paralel programlama teknikleri yüksek ve kararlı paralel performans sağlamalı.
  • Yüksek seviyede programlamaya izin vermeli
  • İş yükünü, algoritmayı ve veri düzensizliğini yönetebilmeli
  • Donanım farklılıklarını ve düzensizliklerini yönetebilmeli
- Paralel programlamayı destekleyen donanım mimari geliştirmeleri

Paralelizmin Yazılım Kararlılığını Artırılmasında Kullanılması
Programlar genellikle yanlış davranışlar: buglar, güvenlik açıkları, donanım hataları gibi.
Run-time araçları çok yavaş
Çok çekirdekli sistemler ile ilgili debugging konularındaki güçlükler artmakta

Araştırma Konuları:
- Debugging için çok çekirdekli sistemlerin ilave performanslarının kullanılması
- Yazılım hatalarının otomatik tesbiti ve giderilmesi. Bir çekirdek üzerindeki programın davranışlarının dinamik olarak gözlenmesi ve hataların anlaşılması için program tarihçesini kullanma.
- Etkin dinamik program izleme & donanım tarafından tutulan loglara göre yeniden çalıştırma, sistem tarafından yönetim ve yazılımı yönlendirme.

YKGS2008: Yazılım Kalitesi ve Yazılım Gelistirme Araçları 2008 (9-10 ekim 2008, İstanbul)

Sempozyum İle ilgili okunabilecek diğer makaleler şunlardır.
  • Çok Çekirdekli Sistemlerin Yazılım Kalitesi Üzerine Etkileri (Ben bu konuda derinleşmeyi düşünüyorum)
  • Yazılım Fonksiyonel Büyüklüğünün Yazılım Proje Yönetiminde Kullanılması
  • Üç Adımda Yazılım Süreç Dünyasına Giriş
  • Yazılımda Fikri Mülkiyet Haklarının Korunması
  • Yazılım Metriklerini Kullanarak Düşük Kaliteli / Yüksek Kaliteli Modüllerin Otomatik Tespiti
  • Emniyet-Kritik Sistemlerin Yazılım Doğrulama Süreci
  • Yazılım Geliştirme Süreçlerinin Ölçülebilir Şekilde İyileştirilmesine Yönelik Etkin Bir Altyapının Kurulması ve İşletilmesi
  • Yazılım Konfigürasyon Tetkikleri
  • Paralel Yazılım Geliştirme Sürecinde Yarış Durumu Denetimi
  • Doğal Dilde Yazılmış Gereksinimlerin Analiz Yöntemleri ve Bu Yöntemlerin Türçe İçin Uygulanabilirliği
  • Yazılım Projelerinde Gözden Geçirmeleri Başarısız Kılan Faktörler
  • Etkin ve Uygulanabilir Bir Yazılım İnceleme Modeli
  • Yazılım Ürün Gözden Geçirmelerinin Önemi, Hazırlık Süreci ve Bir Uygulama Örneği
  • Mobil Uygulama Yazılımlarında Yazılım Metriklerinin Kullanılması
  • Yazılım Proje Danışmalarının Yazılım Kalitesinin Artırılmasındaki Rolleri
  • Dağıtık Benzetim Sistemleri İçin Entegrasyon ve Test Yaklaşımları
  • Rol Modellerinin Yazılım Kalitesine Katkıları
  • DO-178B Sertikasyonuna Uygun Yazılım Geliştirme