Dijital Signal Processors (DSP) yüksek hızlı numeric hesaplamalar için mimar olan özel mikroişmanlardır, özellikle gerçek zamanlı ses, iletişim, radar ve görüntü işleme sistemleri. benzersiz eğitim setleri, paralel uygulama birimleri ve hafıza hiyerarşileri, genel amaçlı CPU amaçlı CPU'lara kıyasla farklı bir yaklaşım talep eder. DSP'de optimal performans gerektirir, ancak aynı zamanda şişeleri, hafıza tezgahlarını sistematik olarak tanımlamakta ve boru hatları tehlikeler.

DSP Mimarlık'ı Etkili Debugging için Anlamak

Herhangi bir cazlanma veya profillendirme çaba başlamadan önce, hedef DSP'nin mimarisinin derin bir anlayışı gereklidir.Genel amaçlı işlemciler aksine, DSPler genellikle birden çok uygulama birimini içerir, değiştirilmiş Harvard mimarisi (separate programı ve veri hafızası), ve çarpık donanımlar gibi.

Memory Hierarchy ve Access Patterns

DSP'ler genellikle program ve veriler için ayrı hafıza alanlarına sahip olabilir (örneğin, SRAM veya önbellek) ve daha büyük bir bellek hafızaya erişim, farklı hafıza bölgelerine erişim, veri toplama ve veri hafızalarını azaltma konusunda başarısız olabilir. Örneğin, DSP'ler programlamak için ayrı bellek alanları olabilir ve veri hafızalarını azaltabilir ve önbelleklemeler için çok sayıda banka (örneğin, x ve Y bellek) ve kontrol cihazına erişim sağlar.

Boru ve Paralelizm

DSP boru hatları derin olabilir (10+ aşamaya kadar) ve genellikle öğretim seviyesinde paralellik için birden fazla sorun yuvaları içerir. Modern VLIW (Very Long Instruction Word) DSP, derleyici paketler, çok sayıda işlem (örneğin, bir MAC, bir yük ve bir mağaza) tek uzun bir öğretimde, programcıya göre tüm görünür değildir, kayıt olmayan veya yazılım boru hatlarının sabit bir şekilde değiştirilmesi veya yazılım boru hatlarının yanlış sonuçlar doğurabilir.

DSP Kod için Stratejileri

1. Donanım Debuggers ve Emulators kullanın

DSP kodu, JTAG veya benzeri arayüzle bağlantılı bir donanımla doludur. Tools like ESFLT:0Contexts[/FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=STRNT=FONT=S FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FO

2.In-Chip Debugging Özellikler

Modern DSPs, gibi özel debug donanımları dahil ediyor:

  • [FONT:0)Performance sayacı[[Dönetici: 1) - Kont döngüleri, talimat önbellekleri, veri önbellekleri, boru hatları tezgahları ve şube yanlış tahminleri.Bu karşıları koddaki stratejik noktalarda okumak şişeleri ölçebilir.
  • [FONT:0]Trace buffers[[Dönetici: 1 ) – Son öğretim adreslerinden veya verilerin yapılandırılabilir bir dizisini kayıt edin veya bir kesinti veya istisnadan sonra kontrol akışı için kullanışlı.
  • [FONT:0]Diagnostic kayıtları[[Dönetici: 1) - İç FIFO'ların durumunu göster, DMA kontrolör kanallarını ve hafıza koruma birimlerini göster (MPU). Bu kayıtların azaltılması nedeniyle gecikmeler yakalandı.
  • [FONT:0]Watchdog ve olay dedektörleri[[Dönetici: 1 ) – DSP belirli olaylarda bir kesintiye yol açıyor (örneğin, veri adresi maç, yığın aşırı akış) ve sonra kesme anında bağlamı incelemek için bir debugger kullanın.

Örneğin, Texas Instruments C6000 serisi DSP, Event ve Data Trace makros belirli bir adres aralığına hafıza erişimleri yakalamak için yapılandırılabilir ve kaynak kodu olmadan okuma-yazma tehlikelerini tespit etmek mümkün olabilir.

3. Yazılım Instrumentation and Logging

Donanım debuggers güçlü olsa da, her zaman sabit döngülerde kullanılamazlar. Yazılım enstrümanı, seri bir porta çıktıyı, özel bir iz bellek veya bir arka plan görevi ile tekrarlama işlemine izin vermek için bir GPIO profiline izin vermek zorundadır.DSP kodu yüksek hızda ve sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sıkılır.

4. Debug'a ortak Pitfall

  • [FONT:0)Dataeks[DÜT:1) - Birçok DSP'ler, verimli yükler / istasyonlar için 2 veya 4baylı sınırlarda uyumlu olması için veri gerektirir.
  • [FONT:0]Circular buffer sarma-yaklaşık – DSPs FIR filtreler ve FFTs için donanıma genel olarak hitap ediyor.
  • [FONT:0) Geçim geç saatler[[Dönetici:0)[[Dönetici:0)))) Sürekli yazılmamıştır (örneğin, kesintiler çok uzun süre boyunca kesintiye uğratılır), sistem cevap süreleri ölçmek için gerçek zamanlı bir analizör kullanabilir.
  • [FONT:0]Compiler optimizasyon eserleri) - En iyi kodlandığında, derleme talimatları tekrar sipariş edebilir veya değişkenleri ortadan kaldırır. Bu, amaçlanan operasyonların gerçekleştirildiğini doğrulamak için sık sık gereklidir.

Performans Optimizasyonu için Profilleme Teknikleri

DSP kodu genel uygulama süresini ölçmenin ötesine geçer. Çünkü DSP uygulamaları genellikle sert gerçek zamanlı kısıtlamalara sahiptir, profilleme döngüsü düzeyinde davranışı, hafıza tezgahlarını ve boru hattı kullanımını ortaya çıkarmalıdır.

1.Kaplak Counters ile birlikte profilli Profil

DSP'lerin çoğu, kod bölgeleri için döngü sayısı elde edebilir - örneğin TI'nin C6000 DSP'leri, INFLT:2CLTS (Time-Stamp Counter Low)) ile ilgili olarak, kayıt işlemine göre, zamanlayıcı tabanlı bir profil üzerinden kayıt olabilirsiniz. Örneğin, TI'nin C6000 DSP'leri, DSP'leri genişleterek, ayrıntılı olarak belirlenen zamanı ayırt edebilirsiniz.[D)[DSPT:3)[değiştir | kaynağı değiştir]

2. Memory System Profiling

Memory access genellikle DSP kodundaki birincil şişenck. Ölçmek için performans sayacı kullanın:

  • [FONT:0)Cache özleniyor[[DÜDÜT:1) – Hem L1 hem de L2 önbellekli özleme oranları düşük veri yerelliği gösterir. Önbellekli konfigürasyon gibi Strategies ve önbellek yapılandırmayı ayarlayabilir (eğer izin verilen) performans artırabilir.
  • [FONT=0]DRAM banka çatışmaları) - DSP'lerde birden fazla SDRAM bankaları ile aynı bankaya erişimler sıra dışı erişimler, aktivasyon gecikmeleri için sipariş veya banka-intereard adresini kullanarak bu cezaları azaltır.
  • [FONT:0]DMA transfer çakışması[[Dönetici:0))[Döneticileri test etmek için veri transferlerini tam olarak bekleymiş olup olmadığını ortaya çıkarabilir. TI'sİLFLT:2DMA Performans Analizi Görselleştirme transfer talepleri ve tamamlama olayları.

Örneğin, bir FFT uygulamasında, önbellekli bir özleme için düzinelerce tezgah ekleyebilir. bellek erişim modelini analiz ederek ve veri düzeninin döngülülüğünü kullanarak yeniden yapılandırılabilir, önbellekli özleme sayısı dramatik bir şekilde azaltılabilir. Dış referanslar: 0)TI Application Report SPRAA88 - "Cache Use for the TMS320C6000").

3. Boru Stall Analizleri

DSP derleyicileri genellikle boru hattı kullanımını gösteren bir geri bildirim raporu, kaynak çatışmaları ve yazılım borunun durumu için. Örneğin, TI'nin Kod Kompatörü, aİLFLT:0)software boru hattı çekirdek görünümü), hangi hatların hangi talimatların altında olduğunu gösteren görüntülere bağlıdır.

  • [FONT:0]Loop-carried bağımlılıklar[DÜT:1) – Bir önceki iterasyondan bir sonuç gerektirdiğinde, boru hattı çakılamaz.
  • [FONT:0)Kayıt baskı[[Döncükler)[[Dönderlik)[[Dönderlik)[[Döncük basınç[[Döncükler) – Yeterli kayıtlar güç dökülme/işim kodu hafızaya, boru hattı sürekliliği kırın.
  • [FONT:0]Kaynak çatışmaları) - İki talimat aynı yürütme ünitesini kullanmaya çalışır (örneğin, her ikisi de aynı döngüde MAC ünitesine ihtiyaç duyar).

4. Power Profiling

Düşük güç DSP uygulamaları (örneğin, kod başına güç tahminleri, işitme yardımları), performans optimizasyonu da enerji tüketimini dikkate almalıdır. Birçok DSPsurFLT:0) Güç tahmin araçları), en iyi enerji tasarrufu sağlar veya kodlanan güç için mevcut sensörleri kullanır.DSP ekosistemi[değiştir | kaynağı değiştir][değiştir | kaynağı değiştir][değiştir | kaynağı değiştir]

Optimizasyon Teknikleri Profiling tarafından Bilgilendirildi

Bir kez profilleme şişeleri tespit etti, hedefli optimizasyonlar uygulanabilir. Aşağıdakiler DSP kodu için yaygın olarak etkilidir:

1. Kayıtsız ve Yazılım Pipelining

Çevrimdışı döngüyü azaltır ve daha fazla paralellik gösterir. ancak, aşırı kayıt dışı sipariş, önbellek kaçırıcısı özleyeter.En iyi kayıt faktörü bulmak için profilli geri bildirimler kullanın. Software boru hattında çakışmanıza izin verir.If the compiler does not automatically a loop, the programr can need to retori the loop (e.g., move depend instructions apart) or manually schedule instructions using intrinsics or assembly.

2. Veri paylaşımı ve Ambalajlama

Bu dizilerin ve tamponların doğal hafıza sınırlarına uyumlu olmasını sağlayın (örneğin, 64 bit yük için 8byte hizalama) Kombinasyonlar (TI) veya ) (GCC) ek olarak, çoklu veri elementlerini tek bir kayıtta SIMD intrinsics kullanarak paketleyin. birçok DSPs desteği / cihazı birden fazla element (örneğin,FLT:0))

3. Özelleştirilmiş Intrinsics ve yerleşik Fonksiyonların Kullanımı

Satışcılar, DSP donanım özelliklerine doğrudan erişim sağlar. Örnekler dahil:

  • [FONT:0) Çok-Ayrılabilir[[Dönetici: 1) [FONT:0)
  • [FONT:0]Circular tampon işlemleri[Dönetici: 1) C565xx'da.
  • [0]Bit-reversal[[Dönemli: 1 ) FFTs için (Ücretsiz)
  • [FONT=0) Tek-dönüş bölme[Döneticiler)[Dönler)[Dönler.

Bu intrinsicler sadece eşdeğer C kodundan daha hızlı değil, aynı zamanda derleyici daha iyi zamanlama bilgilerini de verir.

4. Memory Management ve DMA

Sık sık sık sık sık sık kullanılan verileri çip hafıza (örneğin, program RAM veya önbellek) bir sonraki DMA'yı önbellek verileri önbellekli veya doğrudan kayıt altına almak için CPU'nun ihtiyaç duyduğu işlem süresinden daha kısa olmalıdır. Çift-buffering (ping-pong buffers) aksi takdirde, işlemcinin bir sonraki DMA'yı doldurabilmesi için bir tampon üzerinde çalışmasına izin verir.

Tool Öneriler ve Entegrasyon

Debugging ve profilleme araçları seçimi satıcıya özeldir, ancak aşağıdakiler endüstride yaygın olarak kullanılır:

  • [FONT=0)Texas Instruments[[[Dönetici: 0:1) – Kod Kompatör XDS emülatörleri, Sistem (profiling), UIA (gerçek zamanlı iz için sistem analizi).
  • [FONT=0)Analog Cihazları[[DDDDX) – CrossCore Gömülü Studio, ICE-1000/2000 emülatörleri, Gerçek Zaman Data Exchange (RTDX) akış verileri için.
  • [FONT:0]NXP – MCUXpresso IDE, SEGGER J-Link Pros ve performans karşı entegrasyon.
  • [FONT=0)ARM DSP[DÜT:1) – DS-5/Streamline ile ARM Development Studio ve Perf ve Gprof gibi açık kaynak araçları ( Linux tabanlı DSP uygulamaları için).

Bir satıcı-neutral yaklaşım için, iyi bir IDE, bir donanım emülatörü kullanmayı düşünün:0)MISRA C Sürekli hataları azaltmak için kodlama yönergeleri ve sonra düşük seviyeli analiz için donanım debugger'e güvenir. iyi bir IDE, bir donanım emülatörü ve gerçek zamanlı bir iz aracının kombinasyonu DSP gelişimi için en güçlü bir kurulumdur.

Debugging ve Profiling DSP Kod için En İyi Uygulamalar

  • [FONT:0) Açık bir mimari anlayışla başlayın[Dönem: 1) Harita hafıza bölgeleri, periferiklar ve kod yazmadan önce öncelikleri kesin.
  • [FONT=0) Donanım uç noktalarının erken) - Kod değiştirmeden mantıksal hataları yakalarlar. Sadece yazılım uç noktaları kullanın (bu yazım talimatlarının üzerinde) donanım noktaları yetersiz olduğunda.
  • [FONT:0)Profile optimizasyonundan önce[[Dönetici: 1))) - Erken optimizasyondan kaçının. Bir temel çizgisi kurmak için döngü sayacı kullanın, sonra bir kez bir değişiklik uygulayın ve etkisini ölçmek.
  • [FONT:0)Anlyze derleyici raporları[DDDK): Çoğu DSP derleyici, kayıt paylaşımı ve hafıza kullanımı hakkında ayrıntılı bilgi verir.Bu raporların derleyicinin neden bazı kararlar aldığını anlamak için okuyun.
  • [[DÜSÜ:0) Farklı optimizasyon seviyelerindeki test[DÜT:1) - Sadece optimizasyon seviyesindeki bir hata (veya daha yüksek) genellikle değişkenli değişkenin optimize edilmesi veya her seviyedeki bir yarış koşulu ile ortaya çıkarılması nedeniyle. Mark paylaşılan değişkenlere sahiptir.
  • [[Dönetici:0) Algoritma testi için ev sahibine simülasyon/emulation ([Dönetici:0) Uygulamalı bir sistem için simülasyonu kullanın.Invision-accurate Simulators that run on a PC. while Simülasyon is better than Hardware, it allows full visible into pipeline state and memory accesses without impacting a real-time system.Use the Simulator to correctness, then move to deploy for cycle-accurate profiling.
  • [FONT:0] Tüm enstrümantasyon[[Dönetici:0)[[Dönetici:0) Tüm enstrümantasyon[[Dönetici: 1 ) – Hangi debug özelliklerini (karşılamalar, iz, GPIO toggles) kullanmak ve her önlemi tekrarlamak için aynı donanım kaynaklarını yeniden kullanarak karışıklıktan kaçınır.

DSP donanımınızın titiz bir şekilde anlaşılması ve profilleme metodolojileri ile sistematik olarak bir şekilde bir araya getirerek, hem de kodunuzun güvenilirliğini ve yürütme hızını önemli ölçüde artırabilirsiniz. profilin iteratif döngüsü, analiz, optimize ve yeniden profil, yüksek performanslı DSP programlamanın temelidir.