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
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);
} 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, jumpFirmware 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).
Firmware update:
Driver’dan firmware güncellenebilir:
- Yeni firmware binary driver’a yüklenir.
- Driver IOCTL ile RISC-V’e gönderir.
- RISC-V kendisi flash’a yazar (signature check ile).
- 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 readyToplam 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
Laboratuvar Görevi
aether-firmware test cycle.
Senaryo: Yeni komut ekle (CMD_THERMAL_REPORT).
Adımlar:
firmware/cmd.h’aCMD_THERMAL_REPORT = 10ekle.firmware/handlers.c’de yeni handler:
void handle_thermal(cmd_t cmd) {
int temp = read_thermal_sensor(cmd.cluster);
write_response(temp);
}- Build:
riscv32-unknown-elf-gcc -Os -o sidra_fw.elf .... - QEMU test:
qemu-riscv32 -kernel sidra_fw.elf. - Verilator full-chip sim.
- 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
- Bir sonraki bölüm: 6.4 — ISPP Algoritması Adım Adım
- Önceki: 6.2 — Linux Kernel ve aether-driver
- RISC-V spec: riscv.org “RISC-V ISA Manual”.
- Embedded firmware: Yiu, The Definitive Guide to ARM Cortex-M, eşdeğer RISC-V kitap.
- Türkiye RISC-V: TÜBİTAK BİLGEM raporları.