🔌 Modül 5 · Çip Donanımı · Bölüm 5.5 · 12 dk okuma

DAC — SAR + ISPP

Sayıdan voltaja, sonra hücreye — SIDRA programlama zincirinin başlangıcı.

Bu bölümde öğreneceklerin

  • DAC'ın temel rolünü ve SIDRA'da neden 8-bit yeterli olduğunu söyle
  • SAR (Successive Approximation Register) DAC mimarisini açıkla
  • ISPP algoritmasını adım adım pseudocode olarak yaz
  • DAC'ın enerji ve alan bütçesini Y1 için hesapla
  • Programlama vs okuma DAC'larının farkını anla

Açılış: Dijital Niyet, Analog Voltaj

SIDRA crossbar analog dünyada çalışır: Ohm yasası, Kirchhoff, voltaj ve akım. Ama yazılım dijital: bit, byte, integer. İkisi arasındaki köprü DAC (Digital-to-Analog Converter).

Y1’de iki DAC kullanımı var:

  1. Read DAC: inference sırasında her satıra giriş voltajı (8-bit input → 0-0.5 V).
  2. Programlama DAC: her hücreyi 256 seviyeden birine yazmak için ISPP voltajı (8-bit weight → SET pulse).

Yanlış bir DAC çıkışı tüm MVM’i bozar. Bu bölüm Y1 DAC tasarımı ve ISPP (Incremental Step Pulse Programming) algoritmasını detaylar.

Sezgi: Dijitali Voltaja Çevirme

DAC tek görev: 8-bit sayı (0-255) → analog voltaj (0-V_max).

Basit yaklaşım — bölünmüş referans:

256 farklı voltaj seviyesi sağlamak için:

  • Voltaj referans (V_ref = 0.5 V) bir direnç dizisinden geçer.
  • 256 seviyede tap (0, V_ref/256, 2V_ref/256, …, V_ref).
  • Multiplexer 8-bit input’a göre doğru tap’ı seçer.

Sayılar:

  • Adım: V_ref / 256 = 1.95 mV.
  • Hassasiyet: ±LSB/2 = ±0.97 mV.
  • 8-bit DAC ~256 seviye = SIDRA hücre kuantizasyonuna eş.

Gerçek tasarım — daha karmaşık:

256 direnç + 256:1 MUX → çok büyük alan. Pratik tasarım: kapasitor-tabanlı SAR DAC veya R-2R ladder:

  • R-2R ladder: sadece 2 direnç değeri (R, 2R), 16 direnç 8-bit için. Kompakt.
  • Kapasitör SAR: 256 birim kapasitör, binary-weighted.
  • Hibrit: 6-bit MSB + 2-bit LSB ayrı yapıyla.

SIDRA Y1’de R-2R ladder + buffer kullanılır (alan + güç dengesi).

ISPP nedir?

Hücreyi tam istediğin G değerine programlamak için tek pulse yetmez (gürültü, varyasyon). Iteratif yaklaşım:

  1. Düşük voltaj pulse uygula.
  2. Hücreyi oku (G_actual ölç).
  3. Hata varsa: pulse genişliği veya voltajını artır, tekrar.
  4. G_target ± tolerans aralığında bittiğinde dur.

5-15 iterasyon → 256 seviye için %1 hassasiyet.

Formalizm: SAR DAC ve ISPP Algoritması

L1 · Başlangıç

SAR DAC (Successive Approximation Register):

Aslında bir ADC tekniği, ama “ters çevrilmiş” → DAC. 8-bit SAR DAC:

input: 8-bit sayı n (0-255)
V_ref = 0.5 V

output: V_out = (n / 256) × V_ref

R-2R ladder yapısı:

             V_ref
              |
   R────R────R────R───...   (8 R, MSB → LSB)
   |    |    |    |
   2R   2R   2R   2R
   |    |    |    |
   b_7  b_6  b_5  ...  b_0
   ↓    ↓    ↓    ↓
   ←── output (V_out)

Her bit (b_i) açık/kapalı: V_ref/2^(i+1) katkısı.

V_out = V_ref × (b_7/2 + b_6/4 + b_5/8 + … + b_0/256).

Pratik enerji:

  • Birim direnç: ~10 kΩ.
  • DAC akımı: V_ref / R = 50 µA.
  • DAC enerjisi/conversion: 50 µA × 0.5 V × 10 ns = 0.25 pJ.

Y1: 256 DAC × 0.25 pJ = 64 pJ per CU MVM. Toplam Y1 1.6M DAC × 50M conv/s × 0.25 pJ = ~20 W. TDP’yi aşar!

Çözüm: DAC sadece aktif satırlarda çalıştırılır (sparsity). Aktivite %30 → 6 W. Hâlâ çok. Daha basit DAC (4-bit + dither) → 0.05 pJ. Y1 hibrit yaklaşım.

L2 · Tam

ISPP algoritması (pseudocode):

def ispp(cell, target_G, tolerance=1e-6):
    pulse_voltage = 1.0  # V (başlangıç)
    pulse_width = 10e-9  # 10 ns
    max_iterations = 15
    
    for i in range(max_iterations):
        # SET pulse uygula
        apply_pulse(cell, voltage=pulse_voltage, width=pulse_width)
        
        # Oku
        G_actual = read_cell(cell)
        error = target_G - G_actual
        
        if abs(error) < tolerance:
            return success
        
        if error > 0:  # daha fazla SET gerekli
            pulse_voltage += 0.05  # küçük artış
            pulse_width *= 1.2  # %20 artır
        else:  # aştık → kısmi RESET
            pulse_voltage = -0.5  # negatif (RESET)
            pulse_width = 5e-9  # küçük
    
    return failure

Tipik iterasyon: 5-15. Her iterasyon ~50 ns (pulse + read). Toplam: 250 ns - 750 ns/cell.

Crossbar paralel programlama:

Aynı satırdaki 256 hücre paralel programlanabilir mi? Hayır — aynı WL voltajı tüm hücrelere uygulanır, ama farklı hücreler farklı G_target’a ihtiyaç duyar. Her hücre ayrı ayrı pulse genişliği gerekebilir.

Strateji:

  • WL pulse: paralel (256 hücre aynı voltaj).
  • BL kontrolü: her hücre için ayrı (her sütun ayrı transistör kapısı).
  • Sonuç: 256 hücre aynı anda aynı pulse alır, ama hangi hücrenin “alacağını” BL transistör seçer.

Programlama sırası:

  • En düşük G_target hücreden en yüksek G_target’e doğru.
  • Her döngüde: pulse → 256 hücre okuma → hata kontrol → tekrar.

Süre: 256 hücre × ~5 iterasyon × 50 ns = 64 µs/satır. Tüm 256 satır × 64 µs = 16 ms/crossbar. Y1 6400 crossbar × 16 ms = 100 sn? Hayır, paralel cluster → ~5-10 saniye. Bir kez yapılır (model yükleme).

L3 · Derin

DAC hassasiyet ve doğrusallık:

DAC çıkışında iki hata türü:

  1. Diferansiyel doğrusallık (DNL): ardışık iki seviye arası fark sapması. İdeal: ±0.5 LSB.
  2. Bütünsel doğrusallık (INL): ideal düz çizgiden sapma. İdeal: ±1 LSB.

SIDRA Y1 DAC tipik:

  • DNL: ±0.5 LSB (iyi).
  • INL: ±1.5 LSB (orta).

INL kötüleşirse → bazı seviyeler arası fark büyür → MVM doğruluk düşer.

Termal etkiler:

DAC referans voltajı V_ref sıcaklığa duyarlı. Her 1°C → 100 ppm sapma. -25°C ile 85°C arası → 110°C × 100 ppm = %1.1 sapma.

Çözüm: Bandgap voltage reference (V_BG) — sıcaklığa karşı çok stabil (~10 ppm/°C). SIDRA Y1 her cluster’da 4 bandgap referansı.

Programlama vs okuma DAC farkları:

ÖzellikRead DACProgram DAC
Voltaj aralığı0-0.5 V-2 V ile +2 V
Hassasiyet8-bit8-bit (ama ISPP iteratif)
Hız10 ns100 ns/pulse
Sayı (Y1)1.6M (CU başı 256)Daha az (paylaşılan)
Enerji0.25 pJ/conv5 pJ/pulse

Programlama DAC’ları daha az çünkü sadece program-time gerekir, paylaşılır. Bir Cluster’da ortak.

ISPP ile %1 doğruluk:

Her hücreden farklı tepki → önce kalibrasyon. ISPP başlamadan:

  • Test pulse uygula → R_initial ölç.
  • R_initial → Pulse-G eğrisi tahmin (her hücre için ayrı).
  • ISPP target’ı bu eğriye göre ayarla.

Sonuç: hücre-hücre varyasyon %5 → ISPP sonrası %1.

Ömür etkisi:

Her ISPP cycle hücre yorgunluğuna katkı. 15 iterasyon = 15 SET. Endurance 10⁶ → ISPP-sonrası ~67K kez yeniden programlanabilir. Inference için fazlasıyla yeter.

Modern alternatifler:

  • Closed-loop SET: pulse sürerken in-situ ölç. Daha hızlı ama daha karmaşık.
  • Multi-shot programming: birden çok küçük pulse parallel.
  • Stochastic programming: rastgele pulse + filter.

SIDRA Y1 klasik ISPP. Y10+ hedefi closed-loop.

Deney: ISPP ile 50 µS Hedef

Bir hücreyi G_target = 50 µS’e programla. Toleransı ±1 µS.

İterasyon 0: G_initial = 5 µS (HRS).

İterasyon 1: Pulse 1.0 V, 10 ns. → G_1 = 28 µS. Hata: -22 µS.

İterasyon 2: Pulse 1.05 V, 12 ns. → G_2 = 41 µS. Hata: -9 µS.

İterasyon 3: Pulse 1.1 V, 14 ns. → G_3 = 49 µS. Hata: -1 µS. Başarılı!

3 iterasyon × 50 ns = 150 ns toplam.

Eğer aştıysak (G_actual = 55):

İterasyon 4: Negatif pulse -0.5 V, 5 ns. → G_4 = 49.5 µS. Başarılı.

Toplam pratik: 3-7 iterasyon, ~150-350 ns.

Tüm crossbar (65K hücre):

  • Her hücre 5 iterasyon ortalaması.
  • Aynı satır 256 hücre paralel ama her hücre farklı target → BL kontrol ile sıralı.
  • 256 satır × 5 iterasyon × 50 ns = 64 µs/satır × 256 = 16 ms/crossbar.
  • Y1 paralel 16 cluster → 1 ms/cluster ortalama.
  • Toplam Y1 model yükleme: ~640 ms.

Bir kez yapılır (model yüklendikten sonra non-volatile, kalıcı).

Kısa Sınav

1/6DAC ne yapar?

Laboratuvar Görevi

SIDRA Y1 DAC enerji bütçesi optimizasyonu.

Y1 DAC:

  • 1.6M DAC adet (her CU 256 read DAC).
  • Her DAC: 0.25 pJ/conversion.
  • Conversion rate: 50M MVM/s.

Toplam DAC enerjisi: 1.6 × 10⁶ × 50 × 10⁶ × 0.25 × 10⁻¹² = 20 W.

TDP 3W’ı aşar! Sorun.

Sorular:

(a) Aktivite faktörü 30% ile DAC enerjisi? (b) DAC bit derinliğini 8 → 4 bit + dither düşürürsek? (c) DAC sayısını yarıya indirirsek (paylaşılan)? Performans etkisi? (d) Y10 hedefi: TDC ile DAC bypass. Toplam tasarruf? (e) Y1 final pratik DAC enerji tahmini?

Çözümler

(a) 20 W × 0.30 = 6 W. Hâlâ TDP’nin 2 katı.

(b) 4-bit DAC: 16 seviye, 0.05 pJ/conv (4× az). 16 seviye INT4 inference için yeterli (modern AI). Toplam: 6 W × 0.20 = 1.2 W. Pratik.

(c) DAC paylaşımı (her 2 satır bir DAC). Yarı sayı = 800K DAC. Enerji: 0.6 W. Ama: aynı anda paralel okunamaz → MVM süresi 2× artar (15 ns → 30 ns). Throughput yarıya iner.

(d) TDC alternatifi (Modül 5.6): zaman alanında okuma → ADC bypass + DAC basitleşir. Tahmin: %50 enerji tasarruf. Y10’da DAC katkısı ~0.3 W.

(e) Y1 final tahmin: 4-bit dither + sparsity + paylaşım ile ~0.8 W DAC payı. TDP içinde. Y10’da ~0.2 W (TDC + 7 nm).

Ders: Analog AI çiplerinde ADC/DAC alan + güç dominant. Y1 tasarımı bu sınırlarla yapılır; Y10+ TDC ile aşılır.

Özet Kart

  • DAC: dijital sayı → analog voltaj. Crossbar girişine.
  • Y1 DAC: 8-bit, R-2R ladder, 0-0.5 V, 0.25 pJ/conversion.
  • ISPP: iteratif programlama. Pulse → ölç → ayarla → tekrar. 5-15 iterasyon, %1 hassasiyet.
  • Programlama vs read DAC: voltaj aralığı, sıklık, sayı farklı.
  • Y1 model yükleme: ~640 ms. Bir kez, sonra non-volatile.
  • Enerji bütçesi: DAC tek başına 20 W (worst case) → optimizasyonla 0.8 W (sparsity + dither).

Vizyon: DAC'ın Ötesi — Sigma-Delta ve Direkt Spike

Geleneksel SAR DAC analog AI çiplerin “dolduran” elemanı. Yeni mimariler:

  • Y1 (bugün): R-2R ladder DAC, 8-bit. Standart yaklaşım.
  • Y3 (2027): Sigma-Delta DAC — gürültü-formgiving ile etkin 12-bit (alanı düşür).
  • Y10 (2029): TDC (Time-to-Digital) okuma → DAC bypass. Voltaj zaman olarak kodlanır.
  • Y100 (2031+): Doğrudan spike-encoding. Giriş = spike treni → DAC yok. Bio-uyumlu.
  • Y1000 (uzun vade): Optik DAC — fotonik dalga kılavuzunda intensite encoding.

Türkiye için anlam: Karma-sinyal devre tasarımı (DAC, ADC) yarı iletken endüstrisinin “olgun” tarafı. Türkiye’de TÜBİTAK BİLGEM, ASELSAN gibi merkezler bu konuda güçlü. SIDRA bu birikimi nöromorfik AI’ya akıtır.

Beklenmedik: Bütüncül DAC-yok mimarisi. Spike-based encoding ile DAC tamamen ortadan kalkar. SIDRA Y100 bu yöne adım. Saat-driven dijital değil, olay-driven analog hesap.

Daha İleri

  • Bir sonraki bölüm: 5.6 — TDC: Zaman-Alanlı Okuma
  • Önceki: 5.4 — YILDIRIM Çip Mimarisi
  • DAC tasarım klasik: Razavi, Design of Analog CMOS Integrated Circuits, Bölüm 12.
  • SAR architecture: Wikipedia “Successive Approximation ADC”.
  • ISPP for memristor: Kim et al., Programming algorithms for multilevel-cell phase-change memory, ASP-DAC 2014.
  • Sigma-Delta DAC: Schreier & Temes, Understanding Delta-Sigma Data Converters, 2nd ed.