Elle yazılan Assembly kodu Rust derleyicisini geride bıraktı
Öne çıkanlar
- AArch64 için elle yazılan assembly yorumlayıcısı, Rust derleyicisine göre yüzde 30 hız kazandı.
- Merkezi dallanma döngüsü kaldırılarak her işlem kodunun sonuna doğrudan atlama makrosu eklendi.
- Kritik sanal makine durumları ve yığın indisleri doğrudan 9 adet CPU yazmacına atandı.
Uxn mimarisi için geliştirilen raven-uxn yorumlayıcısının AArch64 assembly diliyle yeniden yazılan sürümü, Rust derleyicisinin ürettiği koda kıyasla yüzde 30'a varan performans artışı sağladı. Derleyicilerin doğrudan makine kodu üretiminde üstün olduğu yönündeki genel kabule rağmen, yorumlayıcı döngülerindeki özel durumlar elle optimize edilen çözümlerin hâlâ avantaj sağlayabileceğini gösterdi. Geliştirici, 256 işlem koduna sahip yığın tabanlı sanal işlemci için hazırladığı yeni yorumlayıcıyı modern ARM mimarisinde doğrudan optimize etti.
İlk analizlerde Rust derleyicisinin ürettiği kodun bazı kritik durum değerlerini yazmaçlar yerine bellekte tuttuğu ve merkezi bir dallanma tablosu kullandığı belirlendi. Bu yaklaşım, işlemcinin komut tahmin mekanizmasını zorlayarak çalışma süresinin önemli bir bölümünü merkezi dağıtım döngüsünde harcamasına yol açtı. Geliştirici, LuaJIT projesinde de kullanılan dolaylı iş parçacığı (indirect threading) modelini benimsedi. Durum verileri AArch64 genel amaçlı yazmaçlarına sabitlendi ve her işlem kodu bir sonraki işlemi doğrudan çağıracak şekilde makrolarla kurgulandı.
İki yoğun işlem yükü içeren Fibonacci ve Mandelbrot testlerinde elde edilen sonuçlar, assembly sürümünün temel Rust sürümüne göre süreyi sırasıyla 1,38 saniyeden 1,00 saniyeye ve 1,56 saniyeden 1,10 saniyeye indirdiğini gösterdi. Rust tarafındaki girdi ve aygıt G/Ç işlevleri ise C uyumlu köprüler (shims) aracılığıyla assembly koduna bağlandı. Yapılan ölçümlerde WebAssembly hedefinin yerel çalışmaya kıyasla belirgin bir gecikme eklediği, doğrudan makine kodunun ise referans yorumlayıcıya göre belirgin bir hız üstünlüğü sunduğu kaydedildi.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.