aytugyayman.com.tr

Windows · AMD Ryzen izleme ve ayar

Özel depo · yakında

ZenStation

ZenStation, Windows için yazdığım bir AMD Ryzen izleme ve ayar uygulaması. Saatleri, sıcaklıkları, gücü ve bellek zamanlamalarını gösteriyor. Güç limitlerini, saatleri, voltajları ve P-state'leri ayarlayabiliyor. Yapılan ayarın kararlı olup olmadığını da test ediyor. Bunlar için normalde birkaç ayrı araç açmak gerekiyor.

Ryzen masaüstü işlemcilerde ve Ryzen APU'larda (family 17h ve sonrası) çalışıyor. Geliştirme ve testleri bir Ryzen 5 3400G (Picasso) ve DDR4 bellekle yapıyorum. İşlemciye göre değişen bir özellik, o işlemcide komutu ya da kayıt düzeni bilinmiyorsa kapalı geliyor.

Uygulama GPL-3.0 lisanslı. Kaynak kodu şimdilik özel bir depoda, ilk sürümü hazırlıyorum.

Sayfalar

Sol taraftaki menü sayfaları üç gruba ayırıyor: Monitor, Tune ve Tools. Ayarlar ve Hakkında en altta duruyor. Her sayfa 1040 × 640 pencereden 1920 × 1080'e kadar çalışıyor.

  • Genel bakış

    En yüksek ve ortalama çekirdek saati, sıcaklık (Tctl ya da Tdie) ve limiti, çekirdek ve SoC voltajı, paket gücü. Her çekirdek için saat, efektif saat, C0 oranı, P-state, VID, sıcaklık ve güç. SMU PM tablosundan canlı telemetri, termal durum (HTC, PROCHOT) ve on dakikalık geçmiş.

  • Sensörler

    İşlemci, ekran kartı, anakart, bellek, disk, ağ ve pil sensörleri tek bir ağaçta, en düşük ve en yüksek değerleriyle. Bir sensöre tıklayınca son on dakikasının grafiği açılıyor. Ayrıca ZenStation'ın adını bildiği her PM tablosu değeri.

  • Güç

    STAPM, PPT, TDC, EDC ve sıcaklık limitleri, canlı değer ve kullanım çubuğuyla. Çekirdek başına C0, CC1 ve CC6 oranları. PM tablosundan bağımsız okumalar da var: RAPL enerji sayaçlarından paket ve çekirdek gücü, SVI2 voltaj regülatörü telemetrisi.

  • Bellek

    Bellek denetleyicisinden çözülen zamanlamalar (kanal başına), BIOS'taki denetleyici ayarları (ProcODT, Rtt, sürücü güçleri), DDR4 modüllerin SPD'si (üretici, parça numarası, JEDEC ve XMP 2.0 profilleri, ham 512 bayt) ve 5 ila 8 saniye süren bir gecikme ve bant genişliği testi. DDR5 modüllerin SPD'si okunmuyor.

  • CPU ayarı

    Manuel hız aşırtma, güç, akım ve sıcaklık limitleri, PBO ölçeği, Curve Optimizer (tüm çekirdekler ya da tek tek), P-state düzenleme, boost ve C-state anahtarları, APU saat limitleri. Profiller dosyaya kaydediliyor. Bir profili yüklemek yalnızca alanları dolduruyor, Apply'a basmadan hiçbir şey gönderilmiyor.

  • Windows güç planı

    Etkin güç planındaki işlemci ayarları, gizli olanlar dahil, prizde ve pilde ayrı ayrı. Windows'un işlemciyi ACPI P-state'leriyle mi yoksa CPPC ile mi yönettiğini anlatan bir bölüm var. İlk değişiklikten önce orijinal değerler saklanıyor.

  • Sistem bilgisi

    İşlemci (kod adı, CPUID, mikrokod, SMU sürümü, PM tablosu, kilitli limitler), önbellekler, komut setleri, sanallaştırma, ekran kartı, bellek modülleri, anakart ve BIOS, işletim sistemi. Hepsi tek tıkla metin olarak kopyalanabiliyor.

  • Kararlılık

    Tüm çekirdeklerde ya da tek tek çekirdeklerde stres testi: kayan nokta, tam sayı, önbellek ve bellek yükleri. Her iş bloğu sonucunu bir referansla karşılaştırıyor, tek bir yanlış hesap hata sayılıyor. Windows'un kaydettiği WHEA donanım hataları çekirdek ve birim bilgisiyle listeleniyor.

  • Hata ayıklama

    Seçilen SMU posta kutusuna mesaj gönderme (adlandırılmış mesaj kataloğu ve risk sınıflarıyla), SMN, MSR ve CPUID okuma, 256 SMN kaydına kadar canlı izleme ve ham PM tablosu.

  • Ayarlar ve Hakkında

    Altı tema, yenileme aralıkları, Windows ile başlatma, sistem tepsisi, profil otomasyonu ve güncelleme kanalı. Hakkında sayfasında sürüm, lisans, sistem özeti ve kullanılan açık kaynak bileşenler.

Donanıma nasıl erişiyor

İşlemciye erişmek için tek bir çekirdek sürücüsü kullanıyor: imzalı PawnIO (yeni sekmede açılır) sürücüsü. PawnIO yüklü değilse uygulama açılıyor ama işlemciyi okuyamıyor.

İşlemci tespiti, SMU posta kutuları, PM tablosu ve bellek denetleyicisi çözümlemesi ZenStates-Core (yeni sekmede açılır) üzerinden yapılıyor. Ekran kartı, anakart ve disk gibi diğer sensörler LibreHardwareMonitorLib (yeni sekmede açılır) ile okunuyor.

Tüm donanım erişimi tek bir ayrılmış iş parçacığında sırayla çalışıyor. İki kütüphane de çekirdek başına kayıtları okurken iş parçacığını o çekirdeğe sabitliyor. Okumalar aynı anda yapılırsa eski değerler karışabiliyor. Tek iş parçacığı bu sorunu ortadan kaldırıyor.

Güvenlik önlemleri

Hız aşırtma bilgisayarı dondurabilir, yanlış voltaj donanıma zarar verebilir. Bu yüzden her yazmanın bilinçli ve izlenebilir olmasına dikkat ettim.

  • Ayar sayfalarındaki hiçbir değişiklik onaysız yazılmıyor. Onay penceresi gönderilecek her kaydı, SMU mesajını ve değeri tek tek gösteriyor.
  • Her yazmadan önce diske bir niyet satırı, ardından sonuç satırı yazılıyor. Bilgisayar donsa bile günlükte son denenen yazma görünüyor.
  • Değişikliklerin hepsi geçici. Yeniden başlatınca BIOS ayarları geri geliyor. ZenStation BIOS'a, SPD'ye ya da kalıcı bir ayara yazmıyor. Kalıcı olan tek şeyler Windows güç planı değerleri ve oturum açma görevi, ikisi de geri alınabiliyor.
  • Bilinmeyen, kapalı demek. Mesajı ya da kayıt düzeni o işlemci için doğrulanmamış kontroller devre dışı ve nedeni yanında yazıyor.
  • Profil otomasyonu varsayılan olarak kapalı. Açılırsa yalnızca güç, akım, sıcaklık ve APU saat limitlerini uyguluyor, hız aşırtmayı, voltajları ve Curve Optimizer'ı hiçbir zaman otomatik uygulamıyor. Bir oturum beklenmedik şekilde biterse otomasyon kendini durduruyor.

Zor kısımlar

  • Picasso'da manuel hız aşırtmadan çıkmak

    Raven Ridge, Picasso ve Dali APU'larda (Ryzen 5 2400G, 3400G gibi) tüm çekirdeklere bir saat verildiğinde işlemci manuel hız aşırtma moduna giriyor. Bu moddan çıkmanın doğrulanmış bir yolu yok. Bu işlemcilerde MP1 mesajı 0x58 moda girmek için, çıkmak için değil. README'nin eski bir sürümünde bunu yanlış yazmıştım. Şimdi “Restore automatic boost” 0x3F mesajını 0 argümanıyla gönderiyor ve ardından saat geçersiz kılma dedektörünü çalıştırıyor. Çekirdekler hâlâ sabitse tek çözüm yeniden başlatmak ve uygulama bunu açıkça söylüyor.

  • PM tablosundaki adlar

    SMU'nun PM tablosu yüzlerce değerden oluşuyor ve hangi sıranın ne olduğu işlemciye ve tablo sürümüne göre değişiyor. ZenStation her adın nereden geldiğini gösteriyor: gerçek donanımda doğrulanmış, yayımlanmış bir tablo haritası, bir referans, CPU modülü ya da sensör haritası. Yalnızca bir referanstan bilinen değerler siz açmadıkça görünmüyor.

  • SVI2 akımları

    SVI2 telemetrisindeki akım ölçeği anakarta göre değişiyor. Bu yüzden SVI2'den hesaplanan akım ve güç değerleri tahmin olarak işaretli. Ölçeğin PM tablosuyla uyuşup uyuşmadığını gösteren bir satır da var.

  • Stres testinin sınırı

    Stres yükleri ZenStation'ın kendi yönetilen kodu (AVX2 ve FMA). Ryzen 5 3400G'de 2,84 GHz'te ağır kayan nokta yükü yaklaşık 38–39 W çekiyor. Yalnızca yerel bir AVX2 güç virüsüyle çöken sınırda bir ayar bu testi geçebilir. Bunu uygulamada da yazıyorum. Yerel bir yük ileride eklenebilir.

İmzalı güncellemeler

ZenStation kendini güncelleyebiliyor. Sunucudaki güncelleme bilgisi ECDSA P-256 ile imzalı. Uygulama önce imzayı kendi içindeki anahtarla doğruluyor, sonra paketin boyutunu, SHA-256 özetini, yeni exe'nin sürümünü ve gereken .NET sürümünü kontrol ediyor.

Güncelleme, uygulama yalnızca yöneticilerin değiştirebildiği bir klasördeyse (örneğin C:\Program Files\ZenStation) yükleniyor. ZenStation her zaman yönetici olarak çalışıyor. Sıradan programların değiştirebildiği bir klasörden kendini güncellemesi güvenli olmazdı. Güncelleyici değiştirdiği dosyaların yedeğini tutuyor, bir sorun çıkarsa geri alıyor.

Güncelleme sunucusu henüz kurulu değil. Adresi ve imza anahtarı eklenene kadar her derleme “Update server not configured yet” diyor ve hiçbir yere bağlanmıyor.

Durum ve sıradakiler

Kaynak kodu şimdilik özel. İlk sürüm için güncelleme sunucusu, alan adı ve imza anahtarı kaldı. Ertelediğim ama listemde duran işler şunlar:

  • .NET 8 desteği 10 Kasım 2026'da bitiyor. .NET 10 LTS'ye geçiş, her sayfanın altı temada denenmesini gerektiriyor.
  • Hata tespiti yapan ve çekirdeğe sabitlenebilen yerel bir AVX2 stres yükü.
  • PM tablosu haritasını canlı değerlerle kontrol eden salt okunur bir test.
  • Bellek modülü sıcaklığını SPD okuması sırasında DIMM sensöründen almak.
  • Modern Standby'dan uyanmayı da algılamak.

Dayandığı projeler

ZenStation birçok açık kaynak projenin üzerine kurulu. Hepsi uygulamanın Hakkında sayfasında lisanslarıyla birlikte listeleniyor.