Skip to content

Yapay Zeka Hızlandırıcısı (NPU)

Tasarımımızda sensörlerden gelen ses verilerini mikrodenetleyici üzerinde işleyebilmek için TFLite Micro Speech modeline uygun özel bir yapay zeka hızlandırıcısı geliştirdik.


Veri Akışı ve Katmanlar

Hızlandırıcının donanım seviyesindeki hesaplama aşamaları sırasıyla şu şekildedir:

  1. Yeniden Şekillendirme (Reshape): Gelen verinin boyutları ayarlanır.
  2. Depthwise Convolution: Ağın en ağır yükünü çeken bu katman için donanımda 8 adet paralel işlem elemanı (PE) tasarladık. Giriş verisi bu birimlere eşzamanlı olarak dağıtılır.
  3. ReLU ve Flatten: Aktivasyon ve düzleştirme işlemleri.
  4. Tam Bağlı Katman (Fully Connected): Bu aşamada 3 kademeli bir toplama ağacı (adder tree) kullandık fakat denemeler sonucu bu yapıda değişikliğe gidebilme durumu bulunmaktadır. Performansı artırmak için bias değerleri başlangıçta doğrudan akümülatörlere yüklenir.
  5. Softmax: Bölme işlemi donanımda fazla kaynak tüketeceği için LUT (Lookup Table) tabanlı bir yaklaşım benimsedik. Bunun için 256x8 boyutunda bir tablo kullanıyoruz.

Optimizasyon ve Bellek Kullanımı

Veriyolu üzerindeki trafiği azaltmak ve NPU'yu hızlandırmak için özel donanım buffer'ları eklendi:

  • Line Buffer: 120 byte kapasitesinde.
  • Ağırlık Register Dosyası: 640 byte kapasitesinde.

Ayrıca NPU, dışarıdan (UART-Stream üzerinden) gelen verilerin yazıldığı 30 kB boyutunda çift portlu özel bir belleğe sahiptir. İşlemci (CPU), işlemi başlatmak için AXI-Lite üzerinden NPU'ya konfigürasyon yazar. NPU işlemi bitirdiğinde CPU'ya bir kesme (interrupt) üretir. CPU sonucu yine NPU'nun kontrol yazmaçlarından (CSR) okur.

Doğrulama ve Test (Golden Reference)

Henüz geliştirme aşamasında.