💻 Modül 6 · Yazılım Yığını · Bölüm 6.3 · 9 dk okuma

RISC-V Firmware

SIDRA çipinin içindeki RISC-V çekirdek — yerel kontrol akışı.

Bu bölümde öğreneceklerin

  • Y1 çipinde gömülü RISC-V çekirdek rolünü açıkla
  • Firmware'in driver ile iletişim protokolünü tanımla
  • RISC-V ISA temellerini ve neden açık standart olduğunu söyle
  • Boot sequence ve calibration firmware adımlarını oku
  • Y10+ firmware genişlemelerini özetle

Açılış: Çipin Beyni RISC-V

SIDRA Y1 çipinde bir RISC-V çekirdek gömülü. Görev:

  • Boot kalibrasyon (başlatma).
  • Driver komutlarını işleme (model yükle, inference başlat).
  • Hata izleme + raporlama.
  • Power management komutları.
  • Firmware update.

Niye RISC-V? Açık ISA → lisans yok, Türkiye için stratejik (ARM lisans almıyor).

Sezgi: Mikrokontrolcü Çipin İçinde

Y1 RISC-V:

  • 32-bit RV32IM (integer + multiply).
  • 100 MHz saat.
  • 64 KB ROM (boot + recovery firmware).
  • 256 KB SRAM (runtime).
  • DMA + interrupt controller.

Driver bir komut yazınca: RISC-V o komutu yorumlar, crossbar’lara talimat verir, sonucu döndürür. Komuta bir “scheduler” gibi.

Formalizm: Firmware Kod

L1 · Başlangıç

Boot sequence:

void boot(void) {
    init_clock(100_000_000);
    init_dma();
    init_thermal_sensors();
    
    // Crossbar kalibrasyon
    for (int c = 0; c < N_CLUSTERS; c++)
        calibrate_cluster(c);
    
    // Driver hazır sinyali
    write_register(REG_STATUS, STATUS_READY);
    
    // Komut bekle
    main_loop();
}

void main_loop(void) {
    while (1) {
        wait_for_command();  // interrupt veya polling
        cmd_t cmd = read_command();
        switch (cmd.type) {
            case CMD_LOAD_MODEL:
                handle_load_model(cmd);
                break;
            case CMD_INFER:
                handle_inference(cmd);
                break;
            case CMD_CALIBRATE:
                handle_calibration(cmd);
                break;
            // ...
        }
    }
}

Inference handler:

void handle_inference(cmd_t cmd) {
    // Input vektörü DMA'dan oku
    read_dma(cmd.input_addr, input_buffer, cmd.input_size);
    
    // Crossbar'lara MVM komutları
    for (int layer = 0; layer < model.n_layers; layer++) {
        run_mvm(layer, input_buffer, output_buffer);
        apply_activation(layer);
        swap_buffers();
    }
    
    // Output DMA'ya yaz
    write_dma(output_buffer, cmd.output_addr, output_size);
    
    // Driver'a interrupt
    raise_interrupt(INT_INFERENCE_DONE);
}
L2 · Tam

RISC-V ISA temelleri:

RISC-V (Reduced Instruction Set Computing - Five) Berkeley 2010+. Açık standard. Modüler:

  • RV32I/RV64I: temel integer.
  • RV32M: çarpma.
  • RV32F/D: float (Y1’de yok, gerek yok).
  • RV32C: compressed (16-bit instructions).

Y1 RV32IM yeterli. Crossbar kontrol için karmaşık matematik yok.

Tipik RISC-V instructions:

addi t0, x0, 100      # t0 = 100
lw   t1, 0(s0)        # t1 = mem[s0]
sw   t0, 4(s0)        # mem[s0+4] = t0
beq  t0, t1, label    # if t0 == t1, jump

Firmware boyut:

64 KB ROM yeter (Y1):

  • Boot: 4 KB.
  • Komut handler’lar: 20 KB.
  • Crossbar driver: 15 KB.
  • Power management: 5 KB.
  • DMA: 5 KB.
  • Recovery: 15 KB (firmware fail-safe).
L3 · Derin

Firmware update:

Driver’dan firmware güncellenebilir:

  1. Yeni firmware binary driver’a yüklenir.
  2. Driver IOCTL ile RISC-V’e gönderir.
  3. RISC-V kendisi flash’a yazar (signature check ile).
  4. Reboot.

Güvenlik: firmware imzalı (RSA-2048). Yetkisiz firmware reddedilir.

Türkiye için RISC-V tercihi:

ARM lisansı:

  • $1-10M tek-time + royalty.
  • ABD/UK politik kontrol.

RISC-V:

  • Lisans yok.
  • Türkiye akademik özgürlük.
  • BİLGEM, üniversiteler RISC-V çekirdek tasarladı.

SIDRA RISC-V seçimi = strateji (klasik lisanstan kaçınma).

Y10+ firmware genişlemesi:

  • Y10: RISC-V 64-bit, 200 MHz. STDP learning kontrol.
  • Y100: RISC-V multi-core (4 çekirdek). Karmaşık scheduling.
  • Y1000: RISC-V + AI accelerator (firmware kendi AI yapar).

Test ve simülasyon:

Firmware geliştirme:

  • QEMU RISC-V emulator.
  • Verilator (RTL simulator) ile çip + firmware birlikte simulate.
  • FPGA prototyping.

CI/CD: Her commit’te test suite çalışır.

Kod tabanı:

Firmware kaynağı: aether-firmware/ repo.

  • C kod ~3000 satır.
  • RISC-V GCC ile build.
  • Boyut optimization (-Os).

Deney: SIDRA Boot Sequence

Y1 power-on:

T = 0:    Voltage rails up (1 ms)
T = 1:    Clock stabilize (1 ms)
T = 2:    RISC-V reset deassert
T = 2.1:  ROM boot kod execute
T = 3:    DMA + interrupt init (10 ms)
T = 13:   Thermal sensor init (5 ms)
T = 18:   Crossbar kalibrasyon başla
T = 100:  Cluster 0 done
T = 200:  Cluster 1 done
...
T = 1700: All 16 clusters done
T = 1701: REG_STATUS = READY
T = 1702: Driver detects READY, sends LOAD_MODEL command
T = 2342: Model loaded (640 ms)
T = 2350: Inference ready

Toplam boot: ~2.4 saniye. Bir kez çalışır, sonra çip sürekli açık.

Power-off recovery:

Power kesildiğinde:

  • RAM kayıp.
  • Memristör non-volatile → model kalır.
  • Kalibrasyon kayıp → boot tekrarlanır.

Kısa Sınav

1/6Y1 firmware hangi mimaride?

Laboratuvar Görevi

aether-firmware test cycle.

Senaryo: Yeni komut ekle (CMD_THERMAL_REPORT).

Adımlar:

  1. firmware/cmd.h’a CMD_THERMAL_REPORT = 10 ekle.
  2. firmware/handlers.c’de yeni handler:
void handle_thermal(cmd_t cmd) {
    int temp = read_thermal_sensor(cmd.cluster);
    write_response(temp);
}
  1. Build: riscv32-unknown-elf-gcc -Os -o sidra_fw.elf ....
  2. QEMU test: qemu-riscv32 -kernel sidra_fw.elf.
  3. Verilator full-chip sim.
  4. Pratik: SIDRA Y1 prototipinde flash + reboot.

Süre: 30 dakika (deneyimli developer).

Özet Kart

  • Y1 RISC-V: RV32IM, 100 MHz, 64 KB ROM, 256 KB SRAM.
  • Görev: boot kalibrasyon + komut işleme + crossbar kontrol.
  • Boot: ~2.4 saniye.
  • Update: driver IOCTL ile, imza kontrol.
  • Stratejik: RISC-V açık → Türkiye için ARM bağımsızlığı.
  • Y10+: RV64, multi-core, STDP kontrol.

Vizyon: Ulusal RISC-V Ekosistemi

SIDRA RISC-V firmware ulusal ekosistemin parçası:

  • BİLGEM RISC-V çekirdekleri (TÜBİTAK).
  • Üniversite araştırma (BOĞAZİÇİ, ODTÜ, İTÜ).
  • ASELSAN ürünleri.

SIDRA bu ekosistemde en büyük tek kullanım. Y10+ ile binlerce SIDRA çipi sahada → Türk RISC-V ürün cesareti.

Daha İleri