Hesaplama Motoru ve DMA
Crossbar dışındaki her şey — aktivasyon, bias, veri akışı.
Önkoşul
Bu bölümde öğreneceklerin
- Compute engine'in crossbar dışındaki rolünü tanı (aktivasyon, bias, normalize)
- DMA (Direct Memory Access) mekanizmasını ve SIDRA veri akışını açıkla
- Aktivasyon fonksiyonlarının LUT (Look-Up Table) implementasyonunu yaz
- Compute engine güç ve alan bütçesini Y1 için hesapla
- Katmanlar arası veri akışının routing matrix üzerinden nasıl çalıştığını söyle
Açılış: MVM'den Sonra Ne Olur?
Crossbar bir MVM’yi 15 ns’de yapar. Ama AI modelleri sadece MVM değildir. Ek işlemler:
- Bias ekleme: y = Wx + b. b vektörünü Wx’e ekle.
- Aktivasyon fonksiyonu: ReLU, sigmoid, GELU, softmax. Non-lineerlik.
- Layer normalization: mean/std ölç, normalize et.
- Scale factor: kuantizasyon için.
- Concatenation, split, reshape: tensör manipülasyon.
Bunların hepsi CMOS’ta Compute Engine’de yapılır. Crossbar MVM motoru, compute engine her şey motorudur.
DMA (Direct Memory Access): veri cluster/CU/crossbar arası taşınır. CPU’yu yormadan.
Sezgi: CMOS Yardımcısı
Her CU’da:
- 16 crossbar (MVM motoru, analog).
- 1 compute engine (CMOS dijital).
Compute engine:
- ALU (Arithmetic Logic Unit): 32-bit integer/float toplam, çarpım, bit-shift.
- Aktivasyon LUT: 256-entry tablo (ReLU, sigmoid, GELU). Tek-saat dönüşüm.
- Scaler: ara sonuçları re-scale (INT8 için).
- DMA controller: veri transferi.
- Küçük SRAM (32 KB): ara buffer.
Saat: 1 GHz. CU başı 1 compute engine → 16 crossbar paralelleştirilir; compute engine sırayla çıkışları işler.
DMA:
Y1 bellek hiyerarşisi:
- L3 SRAM (chip) 16 MB
- L2 SRAM (cluster) 2 MB × 16 = 32 MB
- L1 SRAM (CU) 128 KB × 400 = 50 MB
DMA bu katmanlar arası veri taşır, CPU instruction olmadan. Her cluster’da 1 DMA controller.
Formalizm: Compute Engine İşlemleri
Temel compute engine işlemleri:
1. Bias ekleme:
Crossbar çıkışı . Bias ekle:
Her element için 1 add. 256 element × 1 ns = 256 ns (veya 256 ALU paralel → 1 ns).
2. Aktivasyon (ReLU):
Hardware: basit comparator + MUX. 256 paralel → 1 ns.
3. Sigmoid / GELU (LUT):
Karmaşık fonksiyonlar için Look-Up Table:
- 256 entry pre-computed.
- Giriş 8-bit → tablo index → çıkış 8-bit.
- 1 saat çevrimi (1 ns).
Alan: 256 × 8 bit = 2 kbit SRAM.
4. Softmax:
Hardware:
- 256 exp LUT okuma.
- 256 toplam (log_2 256 = 8 seviye tree).
- 256 bölme (yeniden LUT).
- Süre: ~20 ns. Transformer attention’da sık kullanılır.
5. Layer norm:
- : 256 toplam / 256 → 1 bölme.
- : (x - μ)² toplam / 256, karekök.
- Süre: ~50 ns.
DMA (Direct Memory Access):
Görev: bellek bölgesinden başka bir belleğe veri kopyala. CPU yok, DMA controller tek başına.
Y1 DMA tipik işlemi:
- CPU DMA controller’a “şu adresten şu adrese N byte kopya” der.
- DMA controller SRAM’lar arası veriyi kopyalar.
- Biten işlem interrupt veya flag → CPU biliyor.
DMA bandwidth: 10 GB/s per cluster → toplam 160 GB/s Y1.
Inference dataflow örneği (GPT-2 1 token):
1. CPU input token PCIe'den L3 SRAM'a yükler (4 KB).
2. DMA L3 → L2 (active cluster'a).
3. DMA L2 → L1 (active CU).
4. CU crossbar MVM yapar (attention Q).
5. Compute engine scale, softmax.
6. Sonuç L1 → L2 → L3 (DMA).
7. Sonraki layer tekrarla.Her layer: ~1 µs (MVM + compute + DMA).
12 layer × 1 µs = 12 µs / token.
Hmm, önceki hesap 1.4 µs demişti (5.4’te). Fark: bu daha realist (DMA dahil). 1.4 µs = sadece MVM çekirdek süresi.
Veri hareketi güç:
DMA transfer: L1 → L2 ~1 pJ/byte. L2 → L3 ~5 pJ/byte. L3 → PCIe ~20 pJ/byte.
1 MB DMA intra-chip = 1M × 5 pJ = 5 mJ. Inference enerjisinin küçük payı.
Compute engine alan + güç Y1:
Her CU’da 1 compute engine:
- ALU × 256 paralel: ~50K transistör.
- LUT SRAM (10 KB): ~100K transistör.
- DMA controller: ~20K transistör.
- Toplam per CU: ~200K transistör ≈ 0.05 mm² 28nm.
Y1 400 CU × 0.05 mm² = 20 mm² compute engine alanı. Die’ın %20’si.
Güç:
Compute engine aktivite %50 (inference sırasında). CU tek tek 750 µW → Y1 toplam 300 mW. TDP %10 payı. Verimli.
DMA overhead:
Tipik layer: MVM 15 ns + compute 10 ns + DMA 50 ns = 75 ns. DMA baskın bile olabilir. Tasarım önceliği: veri hareketi minimize.
Fused operations:
Compile zamanında optimize: bias + ReLU tek operasyona birleştir → compute engine’de 1 saat çevrimi. Modern AI compiler’ları standart teknik.
On-chip cache hiyerarşisi:
L1 SRAM (128 KB) → aktif layer output. L2 SRAM (2 MB cluster) → 2-3 layer history. L3 SRAM (16 MB chip) → büyük buffer (KV cache transformer için).
KV cache: 12 layer × 768 dim × 2 byte = ~18 KB / token. 1024 token = 18 MB. Y1 L3’e sığmaz! Geçici buffer + DRAM.
Bu Y1’in uzun context handle edemediği bir sınırlama. Y10+ 1 GB HBM eklenecek.
Transformer attention fused:
Attention = Q · K^T / √d · softmax · V.
Fused: 3 MVM + 1 softmax + 1 MVM = 5 işlem. Compute engine orchestrate eder.
Tipik 1 attention head: ~200 ns.
Deney: GPT-2 Layer Inference Timing
Tek GPT-2 layer (attention + FFN):
Attention (768-dim, 12 head):
- Q = W_Q · x: 9 crossbar paralel MVM, 15 ns.
- K = W_K · x: 9 crossbar × 15 ns paralel.
- V = W_V · x: 9 crossbar × 15 ns paralel.
- Bağla: DMA 5 ns.
- Q · K^T: matris-matris, ~100 ns (64-dim per head × 12 head).
- Softmax: compute engine 20 ns.
- … · V: 100 ns.
- W_O ile proje: 9 crossbar MVM 15 ns.
Toplam attention: ~300 ns.
FFN:
- W1 · x: 36 crossbar (768 × 3072), paralel → ~50 ns.
- GELU: compute engine 10 ns.
- W2 · output: 36 crossbar paralel → ~50 ns.
Toplam FFN: ~110 ns.
Layer total: ~410 ns.
12 layer × 410 ns = 4.9 µs / token. Pratik GPT-2 inference.
Önceki 5.4 hesabı 1.4 µs diyordu (teorik ideal, sadece MVM). Bu gerçekçi (DMA + compute + attention overhead).
Enerji:
- MVM: 12 × (9+9+9+9+36+36) crossbar × 26 pJ = 33 nJ.
- Compute engine: 12 × 200 ns × 300 mW = 720 nJ.
- DMA: ~10 nJ.
- Toplam: ~760 nJ/token.
GPT-2 1000 token: 760 µJ. 3 W TDP’de ~250 µs wall-clock (batch bir kopya).
Daha agresif: 16 cluster paralel → 16 token/saat → 1000 token = 16 ms. Hızlı + verimli.
Kısa Sınav
Laboratuvar Görevi
SIDRA Y1’de Whisper-tiny (39M parameter, konuşma tanıma) inference analizi.
Model yapısı:
- Encoder: 4 transformer layer, 384 dim.
- Decoder: 4 transformer layer, 384 dim.
Compute parametreleri:
- Per layer MVM: ~400K MAC.
- Bias, LayerNorm, softmax ~%10 ek.
- KV cache: 4 layer × 384 × 2 byte = 3 kB/token.
Sorular:
(a) Tek layer inference süresi? (b) 1 saniyelik ses (100 tokens) toplam süre? (c) KV cache SRAM gereksinimi? (d) Compute engine / crossbar süre oranı? (e) Edge cihaz (3W TDP) için enerji tahmini?
Çözümler
(a) 400K MAC / 4.4 TOPS per crossbar = ~100 ns MVM + 50 ns compute + 50 ns DMA = ~200 ns / layer.
(b) 8 layer × 100 token × 200 ns = 160 µs. Hızlı! 1 saniyelik ses 160 µs’de işlenir.
(c) 100 token × 3 kB = 300 kB. Y1 L3 (16 MB) çok büyük. L1/L2 cluster’a sığar.
(d) Compute 50 / (100 + 50 + 50) = 25%. Crossbar 50%. DMA 25%. Dengeli.
(e) 3 W × 160 µs = 0.5 mJ. 1 milyar saniye = 32 yıl sürekli ses = 16 MJ. Edge cihazı 1 saatlik pil ömründe 24/7 tanıma yapabilir.
Gerçek ürün: SIDRA Y1 tabanlı akıllı asistan (akıllı hoparlör) 24 saat pil, always-on konuşma tanıma. H100 bunu yapamaz (700W).
Özet Kart
- Compute engine: CMOS dijital, crossbar’dan sonra. Bias, aktivasyon, norm, scale.
- ALU, LUT, scaler: ana bileşenler.
- DMA: veri bellek arası taşır, CPU-free.
- Y1 compute alan: ~%20 die. Güç %10 TDP.
- Layer süresi: ~400 ns (MVM 50 + compute 50 + DMA 50 + overhead).
- Fused ops: compile-time optimize, hız + enerji.
Vizyon: Compute Engine'in Geleceği
- Y3: compute engine RISC-V çekirdek (kontrol akışı flexible).
- Y10: “soft” compute engine — FPGA-style programmable logic. Layer özel.
- Y100: Fully analog post-MVM — aktivasyon da analog. CMOS gerektirmez.
- Y1000: Tüm compute analog + photonic. CMOS tamamen kalkar.
Türkiye için: Compute engine tasarımı VLSI mühendisliği birikimine dayanır. ASELSAN, Siemens Türkiye gibi yerleri bu konuda deneyimli. SIDRA bu birikimi nöromorfik AI’ya akıtıyor.
Daha İleri
- Bir sonraki bölüm: 5.10 — Gürültü Modelleri
- Önceki: 5.8 — MUX, Decoder, Analog ECC
- Compute engine tasarım: Hennessy & Patterson, Computer Organization and Design, 6. baskı.
- DMA: Intel 8237 klasik chipset reference.
- Modern AI dataflow: Jouppi et al., TPU ISCA 2017.