Windows · AMD Ryzen izleme ve ayar
Özel depo · yakındaZenStation
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ı
0x58moda 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”0x3Fmesajı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.
- ZenStates-Core (yeni sekmede açılır) (irusanov): CPU modülü
- LibreHardwareMonitor (yeni sekmede açılır): sensör motoru
- PawnIO (yeni sekmede açılır) (namazso): donanım sürücüsü ve modülleri
- RyzenAdj (yeni sekmede açılır): PM tablosu ofsetleri
- ZenTimings (yeni sekmede açılır), ZenStates (yeni sekmede açılır) ve SMUDebugTool (yeni sekmede açılır) (irusanov): bellek denetleyicisi tabloları ve referans
- SPD-Reader-Writer (yeni sekmede açılır): DDR4 SPD alan haritası
- PboStudio (yeni sekmede açılır): WHEA izleyici ve kendini doğrulayan stres yükü
- G-Helper (yeni sekmede açılır): güç planı okuma/yazma ve oturum açma görevi
- zenpower3 (yeni sekmede açılır) ve zenmonitor (yeni sekmede açılır): SVI2 akım ölçeği ve RAPL kayıtları