17 puan yazan khwl1026 2026-01-07 | 6 yorum | WhatsApp'ta paylaş

4 CPU ve 2 SoC tasarımı üzerinden yapılan uygulamalarla RISC-V CPU tasarımının temellerini öğrenmeyi sağlayan basic_RV32s’i tanıtıyoruz.

basic_RV32s özeti

  • Askerlik hizmeti sırasında 6 ayda yapılmış, FPGA üzerinde çalışabilen softcore RISC-V RV32I CPU
  • Dhrystone 1.11 DMIPS/MHz, Coremark 1.10 Coremark/MHz performansına ulaşıyor
    Yurt içinde tasarlanan RV32I tabanlı CPU makaleleri arasında en üst sıralarda yer alan performans.
    (Yazı tarihi itibarıyla RISS’teki 126 makale içinde RV32I benchmark içeren 11 makale referans alındı.)
    (@50MHz çalışmada)
  • Kademeli CPU tasarım süreci ve SoC tasarımı
    • 3 tek çevrimli çekirdek, (37F, 43F, 46F)
    • 1 adet 5 aşamalı pipeline çekirdeği, (46F5SP)
    • Pipeline çekirdeğini içeren 2 SoC tasarımı
      (46F5SP_SoC - Debug, Benchmark)
  • Sezgisel ve anlaşılması kolay yüksek seviyeli modül soyutlaması ve tasarım
  • RISC-V CPU tasarımını öğrenmek için çeşitli belgeler sunuluyor
    • RV32I Cheatsheet Excel
    • Geliştirme günlüğü, debug kayıtları
    • Mimari tasarım kılavuzları
    • Tüm mimari ve modül bazlı mantık açıklama belgeleri
    • Bare-metal portlama kılavuzları
      • RISC-V GNU GCC Toolchain RV32I build kılavuzu
      • Dhrystone benchmark RV32I bare-metal çalıştırma kılavuzu vb.
    Reklam
  • Yorumsuz temiz kod ile yorum eklenmiş çift formatlı yapıdaki kod birlikte sunuluyor
  • Sinyal seviyesinde mimari blok diyagramları sunuluyor
  • İkinci sınıfta okuyan iki lisans öğrencisi, tek başlarına makale göndererek ISOCC 2025’te konferans sunumu yaptı
  • RISC-V resmi öğrenme deposu riscv/learn içine eklendi
    • Learning Resources - Intermediate-Level Resource

Geliştirme arka planı

15 Aralık 2024’te, askerlik hizmeti sırasında bir dönem arkadaşımla birlikte doğrudan CPU yapma projesine başlamıştık. Kısa süre önce de 1. yıl dönümünü geride bıraktık!

Temel bilgisayar mimarisi kuramına dayalı bir RISC-V CPU yapmak, kuramsal kaynakların ve ders kitaplarının bolluğu sayesinde nispeten kolay öğrenilebiliyordu. Ancak klavyenin başına geçince bu bambaşka bir meseleye dönüştü.

Okulda yüzeysel olarak öğrendiğimiz VerilogHDL ile ciddi bir projeye ilk kez başlıyorduk; fakat kodlama becerisinin ötesinde, RISC-V CPU yapmak için gereken dokümanları, kılavuzları ve rehberleri içeren gerçek açık kaynaklı RISC-V örneklerinin neredeyse hiç olmadığını fark ettik. (riscv/learn - open implementations ölçütüne göre.)

Elbette NEORV32 ya da DarkRISCV gibi halihazırda uygulanmış çekirdekleri parçalayıp analiz etmek öğrenmek için iyi bir yöntem; ancak tasarım felsefesi, geliştirme kayıtları gibi tasarım meselelerinde, o tasarımın hangi gerekçeyle ve neden yapıldığını doğru biçimde anlamak ve bulmak oldukça zordu.

Reklam

Bu yüzden bu projeyi yalnızca açık kaynaklı bir RISC-V CPU uygulaması olarak bırakmayıp, RISC-V RV32I CPU yapmak için uçtan uca açık kaynaklı bir kılavuz haline getirmeye karar verdim. Bir aceminin gelişim kaydının, ardından gelecek diğer acemiler için iyi bir iz bırakabileceğini düşündüm.

basic_RV32s tanıtımı

Yukarıdaki özette yazdığı gibi, geliştirme günlükleri, çekirdek tasarımına ilişkin belgeler ve RISC-V CPU üretimiyle ilgili hata notları da yer alıyor; temel mimari olarak Patterson-Hennessy metodolojisini esas alıyor ve benim gibi RISC-V donanım tasarımına yeni başlayanları hedefliyor.

Temel tasarım, RV32I içinde 37 komutu destekleyen 37F mimarisiyle başlıyor ve aşağıdaki gibi kademeli olarak genişliyor.

  • 37F : temel mimari, tek çevrimli.
  • 43F : 6 adet Zicsr genişletme komutunu destekler
  • 46F : EBREAK, ECALL, mret komutlarını destekler
  • 46F5SP : veri forwarding ve 2 bit FSM dinamik branch predictor içeren 5 aşamalı pipeline genişletmesi

Çekirdeği FPGA üzerinde gerçeklemek için 46F5SP_SoC tasarlandı ve iki sürüm hazırlandı.

Reklam
  • Debug sürümü
    Komutları debug ederken, adım adım yürütme süreci bir düğmeye basılarak UART iletişimi üzerinden görülebiliyor.
  • Benchmark sürümü
    Dhrystone ya da Coremark gibi testler çalıştırılarak sonuçlar doğrudan UART üzerinden alınabiliyor.

Yakın zamanda güncellenen 46F5SP_MMIO_SoC, UART çıktısını destekleyen MMIO gerçekleştirmesi ile printf işlevini destekliyor. Bu SoC, uygun linker, boot script, syscall gibi BSP dosyalarıyla derlendiğinde Dhrystone 2.1 ya da Coremark gibi çeşitli C programlarının sonuçlarını doğrudan alabiliyor.

Kapanış

RISC-V konusundaki tutkumuzun yeni başlayanların ilk adımı atmasına yardımcı olmasını umuyoruz. Ve en önemli nokta şu: bu projenin tamamı açık kaynak!
Bu da, bu projeyi kullanarak RISC-V topluluğu için daha iyi öğrenme eğitimleri, belgeler ve işlemci tasarımları üretilebileceği ve herkesin özgürce katkı sunabileceği anlamına geliyor.

Bu amaca ulaşmak için daha fazlasına ihtiyaç olduğunu hissediyorum. Proje boyunca doğrulamanın sonu olmadığını öğrendim; ayrıca uzman olmadığım için, çeşitli hazard’lar dahil bilmediğim birçok hata içerebilir. Bu nedenle depo frozen durumda değil ve açık kalmaya devam ediyor! Uzman kişilerin çalışmamıza bakıp geri bildirim vermesi gerçekten çok yardımcı olacaktır. Bu yalnızca bize değil, projeyi görüp bundan öğrenen herkese de katkı sağlar.

Sonrası

Şu anda RV32I sonrasında RV64I genişletmesini tamamlamış durumdayız; sıradaki hedefimiz RV64IM’e genişlemek ve daha da ileride asıl hayalimiz olan Güney Kore’nin genel amaçlı CPU’sunu (RVA23) yapmak. Şu an ima_make_rv64 adlı depoda RV64IMA genişletmesine kadar olan geliştirmeye odaklanıyoruz. Takip ederseniz gerçekten çok seviniriz.

6 yorum

 
gwondori 2026-01-09

Gerçekten harika!!!

 
khwl1026 2026-01-09

İyi değerlendirmeniz için teşekkür ederim (_ _)

 
calofmijuck 2026-01-07

CPU üzerine çalışan bir öğrenciyim, güzel kaynak için teşekkürler! Destekliyorum!

 
khwl1026 2026-01-09

Desteğiniz için teşekkür ederim. Kullanırken merak ettiğiniz bir şey olursa lütfen istediğiniz zaman söyleyin..!

 
m00nny 2026-01-12

Geçmişte "askerlik sırasında devam ediyor" diye yazılmış bir proje gördüğümü hatırlıyorum, ama o kişi miydi bilmiyorum. O projenin devamı olsun ya da olmasın, gerçekten hayranlık uyandırıyor. Apaçık göründüğü sanılan öncüller hakkında bile "neden?" diye soran tavır bilimin temelidir; gerçekten çok etkileyici ve içtenlikle destekliyorum.
Özellikle açık kaynak olması çok harika. Çünkü bilim herkesten önce herkesin olmalı. Tamamen açık kaynak bir donanım olsa nasıl olur diye düşünüp en başından beri RISC-V'e çok ilgi duymuştum, ama zamanla devre tarafıyla aram açıldı ve ilgili bilgileri de yazarın dediği gibi bulmak zor olduğu için bunu usulca rafa kaldırmıştım. Benim de yeniden çalışmak isteğim uyandı; ayrıca izlerken de çok yardımcı olacağını düşünüyorum. Kendi deneme-yanılmalarınızı ve edindiğiniz bilgileri herkesle paylaşıp katkıda bulunduğunuz için teşekkür ederim. Bundan sonra yapacaklarınızı da ayrıca destekleyeceğim.

 
khwl1026 2026-01-12

Ben de o kişinin projesini okuyunca biraz şaşırmıştım. Askerde CPU yapıp, hem de aynı dönemde bir ASIC projesine dahil olarak üretmiş olması gerçekten öyleydi haha..

Değerli yorumunuzu keyifle okudum. Ben de bahsettiğiniz noktada çok fazla tıkanmışlık hissettiğim için bu projeye başlamamın en büyük sebebi sanırım buydu. Ve neden sorusunun ötesine geçince, doğal olarak "daha farklı, daha iyi bir yöntem yok mu?" sorusu da peşinden geliyordu.

Bu RV64'ü bitirdikten sonra tasarım felsefesini bir ölçüde yeniden ayarlayıp yeni bir mikro mimari kurgulamayı düşünüyorum.

Desteğiniz için gerçekten çok teşekkür ederim. Bundan sonra da elimden gelenin en iyisini yapmaya devam edeceğim.!

Merak ettiğiniz bir şey olursa lütfen istediğiniz zaman yazın!!