deniz.in

Piyasalar

Hava durumu

Hava durumu yükleniyor

· kaynak Hacker News – Front Page (native)

Fursoy: mainline Linux'u başlatan açık kaynaklı, sıra dışı çalışan bir RISC-V çekirdeği

Sıfırdan yazılmış, 128 girişli reorder buffer ve Sv39 sayfalama içeren bir SystemVerilog RISC-V çekirdeği, Verilator üzerinde Linux 6.6.50'yi başlatıyor ve 45 nm kütüphanesinde 500 MHz zamanlamasını karşılıyor.

Fursoy: mainline Linux'u başlatan açık kaynaklı, sıra dışı çalışan bir RISC-V çekirdeği

SystemVerilog ile sıfırdan yazılmış 64 bitlik, sıra dışı çalışan süperskalar bir RISC-V işlemcinin, mainline Linux 6.6.50'yi BusyBox kullanıcı alanına kadar başlattığı gösterildi. Fursoy Slice-1 adlı proje 14 Kasım'da Hacker News ana sayfasına çıktı; GitHub deposu (FURSOY/fursoy-cpu), register renaming, Sv39 demand paging, ayrıcalık ayrımı ve küçük bir sistem-on-chip kapsayan bir tasarımı tanımlıyor — ancak şu ana kadar doğrulama silikonda değil, simülasyon ve blok düzeyinde sentezle yapılmış durumda.

İki genişlikli, sıra dışı çalışan bir makine

Depoya göre çekirdek fetch, decode ve rename aşamalarında iki genişlikli; emirler 128 girişli bir reorder buffer üzerinden sıralı olarak tamamlanıyor. Renaming, mimari registerları 160 girişli fiziksel tamsayı register dosyasına eşliyor ve 128 girişli spekülatif bir boş liste kullanılıyor; sekiz branch checkpoint'i, register alias tablolarının yanlış öngörüden sonra spekülatif durumu tek döngüde geri almasını sağlıyor. Yürütme ayrı issue queue'lara dayanıyor: tamsayı ve bellek işlemleri için 32'şer giriş, 64 fiziksel registerlı bir kayan nokta birimi ve 48 fiziksel registerlı, 256 bit vektör uzunluğuna ve 64 bit elemanlara sahip bir birimi besleyen, bağımsız çalışan sekiz girişli bir vektör kuyruğu. Aritmetik işlemler ALU ve branch biriminde tek döngülü paralel-önek (Kogge-Stone) toplayıcılardan, üç aşamalı borulu bir çarpıcıdan ve bir donanım bölücünden geçiyor. Uygulanan komut seti RV64IMAFDV artı Zba, Zbb, Zicsr ve Zifencei; makine, süpervizör ve kullanıcı ayrıcalık modları mevcut.

Sv39 adres çevirisi ve çevresindeki SoC

Her birinci kademe önbellek 16 KiB ve 4 yönlü set-assosiyatif. Komut önbelleği sanal adresli ve fiziksel etiketli; bir sonraki satır prefetcher'ı ve iki miss-status register içeriyor. Veri önbelleği sekiz banklı ve engellemesiz; 16 girişli bir load kuyruğu, 16 girişli bir store kuyruğu, dört MSHR ve iki girişli bir geri yazma tamponu var. Adres çevirisi her iki tarafta Sv39; her biri 64 girişli 4 yönlü temel TLB artı 2 MiB ve 1 GiB süpersayfalar için sekiz girişli bir CAM içeriyor, veri yolu ise 32 girişli bir çeviri istek tablosu ekliyor. Paylaşımlı donanım sayfa tablosu gezgini, veri önbelleğindeki kirli satırları izliyor; böylece sayfa tablosu yazıları, gezgin için satır tahliyesi zorlamadan görünür oluyor ve SFENCE.VMA işleyişi store kuyruğunu boşaltıp önbellek temizliğiyle eşzamanlıyor.

SoC, çekirdeği 256 MiB DRAM'a, bir CLINT zamanlayıcısına, 31 harici kesme kaynağı olan bir PLIC'e, bir 16550 UART'a ve SBI 2.0 uygulayan özel M-mode firmware'ine bağlıyor; hepsi açlığa karşı korumalı arbitrajlı beş yönlü öncelikli bir crossbar arkasında.

Linux açılışı, döngü döngü hesaplı

Öne çıkan sonuç, Verilator'da Linux 6.6.50'nin tamamen açılması: 89,9 milyon simüle döngüsü boyunca tasarım 76,2 milyon komut tamamladı — döngü başına iki komut işleyebilen bir makinede IPC 0,848 — bu sırada 2.255 demand page fault'a ve yaklaşık 2,2 milyon kullanıcı modu komut işlemine hizmet verdi; depo hiçbir kernel panic, oops ya da erişim hatası bildirmiyor. Proje ayrıca boru hattını her döngüyü karşılıklı dışlayan sekiz kovaya ayiren döngü hassasiyetinde sayaçlarla donatıyor. Açılış sırasında döngülerin %47,9'u faydalı iş yaptı, %16,7'si branch yanlış öngörü ve istisna kurtarmasına, %16,5'i boşta beklemeye ve boru hattı boşaltmalarına gitti; rename ve bellek duraklamaları birlikte %12,5 daha tüketti. Kovaların toplamı döngü sayacına tam olarak eşit; proje bunu sıfır sakıntı hatası olarak raporluyor.

500 MHz zamanlama kapanışı, blok düzeyinde

Fiziksel tahminler için çekirdeğin sekiz işlevsel bloğu, 2 ns saat periyodu hedefiyle Nangate 45 nm kütüphanesine karşı Yosys 0.33, sv2v ve OpenSTA 3.1.0 ile sentezlendi. Eniyileme sonrası sekiz blok da zamanlamayı karşıladı; toplam yaklaşık 219 kGE standart hücre, 111.019 hücreye yayıldı. Depo sınırlarına açık sözlü: tüm SoC için yerleşim-yönlendirme ve SRAM makro derlemesi henüz çalıştırılmadı; dolayısıyla 500 MHz bir blok başına sentez sonucu, bitmiş bir çipin ölçümü değil.

Çalışmayı yeniden üretmek için Ubuntu veya WSL2 üzerinde Verilator ve bir RISC-V araç zinciri gerekiyor. Depoda lint, regresyon ve sentez betikleri yer alıyor; yalnızca Linux açılışının kapanışı yaklaşık 1,5 ila 2 saat sürüyor.

Neden önemli

Mainline Linux'u başlatmak bir CPU'nun karşılaşabileceği en zor entegrasyon testlerinden biri: ayrıcalık modlarını, sayfa tablosu gezinmelerini, kesmeleri, zamanlayıcıları ve konsol girdi-çıktısını sınar ve bunlardan herhangi birindeki bir hata genellikle açılışı sonlandırır. Sıfırdan yazılmış açık bir tasarımın bu çıtayı süperskalar, sıra dışı çalışan bir çekirdekle aşması — ticari üreticilerin taç mücevheri IP saydıkları bir mimari tarzı — açık donanım ile çağdaş işlemci mühendisliği arasındaki boşluğu anlamlı biçimde daraltıyor. Açık EDA akışı da önemli: Yosys ve OpenSTA'nın önemsiz olmayan ardışık lojik bloklarında 500 MHz zamanlamayı kapatması, açık araç zincirinin gerçek lojik derinliğiyle başa çıkabildiğini gösteriyor. Döngü muhasebesi telemetrisi kendi başına kayda değer bir disiplin; çünkü her simüle döngünün tam olarak tek bir kategoriye düştüğünü kanıtlamak, bütün bir sınıf muhasebe hatasını yakalar. Uyarılar gerçek — yerleşim-yönlendirme yok, SRAM makroları yok, silikon yok — ama modern çekirdeklerin gerçekte nasıl kurulduğuna dair okunabilir bir SystemVerilog referansı olarak Fursoy, önemli bir açık donanım kilometre taşı.

  • #risc-v
  • #open-source
  • #systemverilog
  • #linux
  • #open-hardware

İlgili yazılar