<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Elektronik İstihbarat Algoritma Yazılımlarının OpenMP Kullanılarak Çok Çekirdekli İşlemciler Üzerinde Paralelleştirilmesi</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Murat Sever</string-name>
          <email>msever@aselsan.com.tr</email>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alparslan Fişne</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Anahtar Kelimeler: DSP·OpenMP·Sinyal İşleme·Paralelleştirme·Gömülü Sistemler·Comint</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>REHİS, ASELSAN</institution>
          ,
          <addr-line>Ankara</addr-line>
          ,
          <country country="TR">Türkiye</country>
        </aff>
      </contrib-group>
      <fpage>703</fpage>
      <lpage>708</lpage>
      <abstract>
        <p>Digital Signal Processors have an extensive use in embedded systems. There is a growing popularity in integration of many cores into one chip due to power consumption and heating considerations. In parallel with the multicore trend, an important aspect of software development today is proper migration to multicore environment. In this paper, we investigate parallelization in existing communication intelligence algorithms. Parallelized versions of selected algorithms are implemented on 8-core Texas Instruments (TI) DSP using OpenMP framework. We will present performance results, obtained by Unified Instrumentation Architecture (UIA) and report scalability of OpenMP parallelization.</p>
      </abstract>
      <kwd-group>
        <kwd>DSP</kwd>
        <kwd>OpenMP</kwd>
        <kwd>Signal Processing</kwd>
        <kwd>Paralellization</kwd>
        <kwd>Embedded Systems</kwd>
        <kwd>Comint</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Moore yasası, işlemci hesap güçlerinin her 18 ayda bir ikiye katlanacağını
öngörmüş ve bu kural uzun bir süre geçerliliğini korumuştur. İşlemcilerin saat
hızlarının arttırılması, yakalanan performans başarısı yanında ciddi problemleri de
doğurmuştur: Aşırı güç tüketimi ve ısınma. Tek bir işlem birimi ile mümkün
olabilecek performans sınırına yaklaşılması çip üreticilerini işi aralarında paylaşıp
aynı anda çalışabilen daha verimli çok çekirdekli işlemcilere yöneltmiş ve birden
fazla işlem birimi içeren yongalar piyasaya sunulmuştur. Çok çekirdekli mimari
sayesinde veri eş-zamanlı olarak işlenerek daha yüksek performans elde edilmektedir.</p>
    </sec>
    <sec id="sec-2">
      <title>Ancak tek çekirdekli mimaride çalışan kodun çok çekirdekli mimariye aktarılması</title>
      <p>kolay bir iş olmayıp ayrıyeten bir takım kütüphane ve derleyici desteği de
gerektirmektedir. Texas Insruments (TI) firması kendi geliştirme ortamları olan Code</p>
    </sec>
    <sec id="sec-3">
      <title>Composer Studio'ya (CCS) OpenMP desteği sunarak bu yolda önemli bir adım</title>
      <p>atmıştır.</p>
      <p>
        Bu çalışmada, Aselsan bünyesinde tek çekirdekli işlemcilerde çalıştırılmak üzere
elektronik istihbarat amaçlı geliştirilen kod parçacıkları paralelleştirme imkanları
açısından incelenecek, paralelleştirme kabiliyeti barındıran kodlar OpenMP
programlama modeli kullanarak paralelleştirilip CCS ortamına aktarılacak ardından
hedef DSP platformu olan TMDSEVM6678LE üzerinde çalıştırılarak zaman
ölçümleri alınacaktır. Zaman ölçümlerinin alımında System Analyzer bileşeni
kullanılarak gerçek zamanlı çalışan koda en az biçimde müdahale edileecektir. Farklı
alanlardan birçok uygulamanın C6678 hedef DSP platformu üzerinde paralelleştirme
örneğini görmek mümkündür. Yakın zamanda yer alan çalışmalardan birinde, HEVC
video çözümleme işlemi OpenMP kullanılarak paralelleştirilmiş ve tek çekirdeğe
kıyasla %70 civarında hızlanma kaydedilmiştir [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. Yine TI tarafından yapılan
çalışmada Sentetik Açıklıklı Radar (SAR) algoritmaları C6678 platformu üzerinde
      </p>
    </sec>
    <sec id="sec-4">
      <title>OpenMP yardımıyla çok çekirdekli mimariye aktarılmış ve SAR algoritmalarının 2, 4</title>
      <p>
        ve 8 çekirdek üzerinde başarılı bir biçimde ölçeklendiği teyit edilmiştir [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ].
      </p>
    </sec>
    <sec id="sec-5">
      <title>Bu çalışma şu şekilde biçimlendirilmiştir: Elektronik istihbarat amaçlı kullanılan</title>
      <p>algoritmalara 2. bölümde yer verilmiştir. 3. Bölümde paralelleştirme ve OpenMP ile
alakalı genel bilgiler sunulacaktır. Çalışmada kullanılan gömülü platformlar 4.
bölümde tanıtılacaktır. Gerçeklemeye ilişkin detaylar ve sonuçlar 5. bölümde ele
alınmıştır. Son bölümde ise çalışmadan elde edilen neticeler değerlendirilecektir.
2</p>
      <sec id="sec-5-1">
        <title>Elektronik İstihbarat Algoritmaları</title>
        <p>Elektronik istihbarat yeteneklerinin ani tepkilere karşı duyarlı olabilmesi için ilgili
algoritmaların hızlı bir şekilde çalıştırabilir olması gerekmektedir. Gelişen işlemci
mimarisine bağlı olarak algoritmaların çalışma süreleri giderek azalmakta, paralel
işlemeye uygun algoritmaların kullanılması bu süreleri daha da kısaltmaktadır.
Elektronik istihbarat algoritmalarının çok sayıda alt branşı vardır. Bunlardan en
önemlileri, telsiz yayınların kip-çözme işlemleri ve ortamdaki yayın tespitidir. Bu
çalışmada algoritma paralelleştirme çalışmalarına örnek olarak Kip-Çözme (Demodülasyon)</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>Algoritması ve Yayın Tespit Algoritması ele alınmaktadır. Bu iki algoritma paralelleştirmeye uygun olduğu için çalışmamızın odak noktasını oluşturmuştur.</title>
      <p>2.1</p>
      <sec id="sec-6-1">
        <title>Kip-Çözme Algoritması</title>
      </sec>
    </sec>
    <sec id="sec-7">
      <title>Kip-Çözme Algoritması’nda ele alınan işlem genlik kiplenimine sahip yayınların dinlenmesidir. Almaçlardan alınan taban banda indirgenmiş kompleks verinin genliği alınarak sayısal ses verisi oluşturulmaktadır [3]. Kip-Çözme senaryosu Fig. 1’de sunulmuştur.</title>
      <p>Taban Bant
Kompleks Ham Veri
Kip Çözme
İşlemleri</p>
    </sec>
    <sec id="sec-8">
      <title>Almaçlardan alınan frekans uzamındaki veri üzerinde öncelikle spektrum oluşturma işlemi yapılmaktadır. Kullanıcı tarafından girilen eşik değerine bağlı olarak spektrumdaki eşik noktasını geçen noktalar yayın olarak tespit edilmektedir. Yayın tespitine ilişkin senaryo Fig. 2’de gösterilmektedir.</title>
      <p>Frekans Uzamındaki
Kompleks Ham Veri
Spektrum Oluşturma ve
Eşikleme İşlemleri
Yayın Tespit Listesi
Oluşturma</p>
    </sec>
    <sec id="sec-9">
      <title>Donanımdaki çok çekirdekli mimariye geçiş eğilimi ile birlikte, yazılım dünyasın</title>
      <p>da da tek çekirdek üzerinde çalışan kodların çok çekirdekli mimaride çalışmasına
yönelik birçok paralel programlama modelleri oluşturulmuştur. Message-Passing</p>
    </sec>
    <sec id="sec-10">
      <title>Interface (MPI), Pthreads, Open Computing Language (OpenCL) ve Open Multi</title>
      <p>processing (OpenMP) bu çabanın bir sonucu olarak ortaya çıkmıştır. MPI genelde
dağıtık bellek mimarili platformlarda, OpenCL ise heterojen sistemlerde yoğun olarak
kullanılmaktadır. OpenMP ise paylaşımlı bellek mimarili çok çekirdekli platformlar
için bir programlama çatısı sunmaktadır.</p>
      <p>Çatallanma</p>
      <p>Birleşme
Fig. 3. OpenMP Fork/Join modeli</p>
      <p>Ana iş parçacığı</p>
      <p>İş parçacıkları
Ana iş parçacığı</p>
    </sec>
    <sec id="sec-11">
      <title>OpenMP yeni bir programlama dili olmayıp, mevcut sıralı bir şekilde işleyen</title>
      <p>kodların çok çekirdekli mimarilere kolay bir şekilde taşınabilmesine yönelik derleyici
direktifleri içermektedir. Direktifler kodun hangi parçasının paralel bir şekilde
çekirdeklere dağıtılarak çalıştırılacağını belirtir. Uygulama OpenMP desteği ile
çalıştırıldığında paralel çalışırken, OpenMP desteği belirtilmediğinde kaynak kodda
herhangi bir değişiklik gerektirmeksizin tek çekirdekte çalıştığı gibi çalışabilmektedir.</p>
    </sec>
    <sec id="sec-12">
      <title>Böylece paralel versiyon ile sıralı versiyon tek bir kaynak kodda tutulabilmektedir.</title>
    </sec>
    <sec id="sec-13">
      <title>Uygulama ilk çalıştığında tek bir iş parçacığı ile çalışmaya başlar. Paralel bölgeye</title>
      <p>
        ulaşıldığında ise iş parçacıkları oluşturulur ve bu iş parçacıkları farklı çekirdekler
üzerine atanarak çalıştırılır. Paralel bölgenin sonunda ise senkronizasyon işlemi
gerçekleştirilir ve kod ana iş parçacığı üzerinden çalışmaya devam eder. Paralel
bölgenin başlangıcı #pragma omp parallel direktifi ile belirtilir. Bu durum Fig. 3'de
sunulmuştur [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ].
      </p>
      <p>OpenMP yapıları sayesinde mevcut iş yükünün bütün çekirdekler üzerinde
paylaşılmasını sağlayan “veri paralelleştirmesi” kolayca tanımlanabilir. Veri
paralelleştirmesinin en kolay uygulanacağı bölgeler ise for döngüsü içeren kod
parçalarıdır. Yalnız kodda yer alan her for döngüsü iş yükü paylaştırması açısından
uygun olmayabilir. OpenMP yalnızca paralelleştirilecek bölgelerin tanımlanmasına ve
kullanılacak çekirdek sayısına kontrol imkanı sunar. Kodun tek çekirdek üzerinde
çalışma süresini T1; aynı kod parçasının P adet çekirdek üzerinde paralel çalıştığında
geçen zamanı TP olarak kabul edersek, hızlanma (speedup) (1) numaralı formüldeki
gibi tanımlanır. Hızlanma çekirdek sayısıyla doğru orantılı bir biçimde artarsa
sistemin ölçeklenebilir olduğu söylenebilir.</p>
      <p>=
 1
 
(1)
4</p>
      <sec id="sec-13-1">
        <title>Gömülü Platform</title>
        <p>
          Çalışmada bahsedilen algoritmalar iki farklı gömülü platform üzerinde
çalıştırılarak ölçümler alınmıştır. Bunlardan ilki algoritmaların asıl üzerinde koştuğu
PowerPC platformudur. Platform, 1.0 Ghz işlemci hızına, 32kB L1, 1MB L2 belleğe
ve toplamda 35W’lık güç tüketimine sahiptir. OpenMP paralelleştirmenin
gerçekleneceği platform ise çok çekirdekli TI6678 platformudur. TMDSEVM6678LE
modülü üzerinde 8 adet birbiri ile eşdeğer C66x çekirdeği barındıran, hem sabit hem
kayar nokta işlem gücüne sahip bir DSP platformudur. 1GHz saat hızında sadece 10W
gibi düşük güç tüketimine sahip oluşu platformu gömülü sistemlerde popüler hale
getirmiştir. Sistem 32kBL1, 512 kBL2 belleğe sahiptir. C6678 aynı zamanda
4096kB'lık paylaşılır bir belleğe (MSMCRAM) sahiptir [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. Bu çalışmada L1
bellekler önbellek olarak L2 bellek ise iş parçacıklarına özel alan olarak
tanımlanmıştır. TI OpenMP gerşekleşiminde ise MSMCRAM alanı hem
önbelleklenebilir hem de önbelleklenmez olarak kullanıcının erişimine sunulmuştur
[
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. Kod ve sabitler önbelleklenebilir alana, çekirdekler arası erişilmesi gereken
değişkenler ise önbelleklenemez alana yerleştirilmiştir.
        </p>
        <p>Çok Çekirdekli Gerçekleştirim</p>
        <p>Bu bölümde seçili, tek çekirdek için yazılmış mevcut elektronik istihbarat
algoritmalarının nasıl CCS ortamına aktarıldığı anlatılacaktır. Algoritmalar içindeki
veri paralelleştirmesi kullanılarak değişen sayıda çekirdek kullanarak (1,2,...,8) zaman
ölçümleri UIA aracılığı ile alınır. OpenMP kütüphanesinde yer alan
omp_set_num_threads metodu ile iş paylaşımı yapacak çekirdek sayısı çalışma
anında belirlenebilir. #pragma omp parallel for derleyici direktifi ile
paralel bölgenin başlangıcı belirtilir. Zaman ölçümü ise UIA aracı vasıtasıyla</p>
      </sec>
    </sec>
    <sec id="sec-14">
      <title>Log_write2 metodu ile başlama ve bitiş olayları yayınlayarak yapılır.</title>
      <p>5.1</p>
      <sec id="sec-14-1">
        <title>Test Sonuçları</title>
      </sec>
    </sec>
    <sec id="sec-15">
      <title>Seçilen algoritmalar ilk olarak tek çekirdekli PowerPC8640D (PPC) platformu</title>
      <p>üzerinde çalıştırılmış ve ölçümler alınmıştır. Ardından C6678 hedef DSP platformuna
taşınmış ve burada çok çekirdekli mimaride çalıştırılarak ölçümler tekrarlanmıştır.
AM Kip-Çözme için OpenMP paralelleştirmesi neticesinde, 8 çekirdek kullanım
durumunda, PPC tek çekirdeğe göre 6,24 kat, TI tek çekirdeğe göre ise yaklaşık 7 kat
hızlanma sağlanmıştır. Hızlanmaya ait grafik Fig. 4'te gösterilmiştir.
8
7
6
a 5
m 4
lan 3
z 2
ıH 1
İdeal</p>
      <p>Hızlanma
PPC (Tek çekirdek)</p>
      <p>Hızlanma
TI (Tek çekirdek)
1
1
0,88
1,00
2
2
1,78
2,02
3
3
2,56
2,91
4
4
3,36
3,82
5
5
4,12
4,68
6
6
4,86
5,52
7
7
5,55
6,31
8
8
6,24
7,09</p>
      <p>Yayın tespitine ait algoritma da benzer şekilde ilk olarak PPC üzerinde ardından
paralelleştirilerek hedef DSP platformunda çalıştırılmıştır. Yayın tespiti için
hesaplamada kullanılan nokta sayısı 6400 adet tutulduğunda ölçeklenebilir bir
hızlanma sağlanamamıştır. Bu durum, iş yükünün çekirdeklere dağıtılması esnasında
mecburen harcanan zamanın (overhead) fazla olmasından kaynaklanmaktadır. Yayın
tespitindeki nokta sayısı 25600'e çıkarıldığında ise orijinal tek çekirdekli PPC
platformuna göre 3 kata yakın hızlanma sağlanmıştır. Burada önemli bir diğer husus
da güç tüketimidir. C6678 platformu 10W'lık, PPC platformu ise 35W'lık bir güç
tüketimine sahiptir. Bu durumda yaklaşık üçte birlik bir güç tüketimi ile üç kata varan
bir performans artışı kaydedildiği unutulmamalıdır. Yayın tespitine ilişkin hızlanmaya
ait grafik Fig. 5'te verilmiştir.</p>
      <p>)
e
a r
m gö
n e
a y
lz '
ı C
H P</p>
      <p>P
(</p>
      <sec id="sec-15-1">
        <title>Sonuç</title>
        <p>Bu çalışmada, Aselsan içinde elektronik istihbarat amaçlı tek çekirdekli
mimarilerde çalışması için yazılmış sinyal işleme algoritmalarının, OpenMP
kullanılarak paralelleştirilmesi ve TI tarafından geliştirilen C6678 çok çekirdekli DSP
platformu üzerinde gerçeklenmesi ele alınmıştır. OpenMP, bellek paylaşımlı
mimarilerde algoritmaların hızlı ve kolay bir biçimde paralelleştrimesine olanak
sağlayan bir programlama modelidir. Seçilen algoritmalar, hedef platform bellek
mimarisi de gözetilerek OpenMP'nin sunduğu iş-paylaşımlı yapılar sayesinde kolayca
çok çekirdekli mimaride çalışacak şekilde modifiye edilmiş, yapılan ölçümler
neticesinde paralelleştirmeden ölçeklenebilir bir fayda sağlandığı gözlenmiştir. İş
yükünün çekirdeklere paylaştırılması sayesinde, seçili algoritmalarında tek çekirdekli
orijinal platformdakinin sadece üçte biri kadarlık güç tüketiminde 3 kattan 6 kata
varan hız artışı saptanmıştır.</p>
      </sec>
      <sec id="sec-15-2">
        <title>Kaynaklar</title>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <given-names>M.</given-names>
            <surname>Chavarrías</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Pescador</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. J.</given-names>
            <surname>Garrido</surname>
          </string-name>
          ,
          <string-name>
            <given-names>E.</given-names>
            <surname>Juárez</surname>
          </string-name>
          and
          <string-name>
            <given-names>C.</given-names>
            <surname>Sanz</surname>
          </string-name>
          ,
          <article-title>"A Multicore DSP HEVC Decoder Using an Actor-based Dataflow Model,"</article-title>
          <source>in IEEE International Conference on Consumer Electronics (ICCE)</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <given-names>D.</given-names>
            <surname>Wang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Ali</surname>
          </string-name>
          and
          <string-name>
            <given-names>E.</given-names>
            <surname>Blinka</surname>
          </string-name>
          ,
          <article-title>"Synthetic Aperture Radar (SAR) Implementation on a TMS320C6678 Multicore DSP,"</article-title>
          <source>Texas Instruments</source>
          ,
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3. [Çevrimiçi].http://www.radio
          <article-title>-electronics.com/info/rf-technology-design/amreception/amplitude-modulation-detection-demodulation</article-title>
          .
          <source>php. [12 May</source>
          <year>2015</year>
          ].
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>C.</given-names>
            <surname>Chapman</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            <surname>Jost and R. Van Der Pas</surname>
          </string-name>
          , Using OpenMP, The MIT Press,
          <year>2008</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>C.</given-names>
            <surname>Hu</surname>
          </string-name>
          and
          <string-name>
            <given-names>D.</given-names>
            <surname>Bell</surname>
          </string-name>
          ,
          <article-title>"KeyStone Memory Architecture,"</article-title>
          <source>Texas Instruments</source>
          ,
          <year>2010</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>OMP (OpenMP Runtime for</surname>
            <given-names>SYS</given-names>
          </string-name>
          /BIOS) Users Guide, Texas Instruments.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>