Yazılımların donanım üzerinde daha verimli çalışmasını sağlamak amacıyla, işlemci komutlarının ne kadar sürede çalıştığı analiz edilir. Bu analiz, donanım mimarisini veya uygulamaları belirli bir mimariye göre optimize etmek için kullanılır. Ancak bir donanım araştırmacısı, Christopher Domas, bu yaklaşımın tam tersini deneyerek işlemci komutlarını olabildiğince yavaşlatmaya odaklanan bir proje başlattı: 'CPU Deoptimization Leaderboard'. Bu proje, tek bir komutun en yüksek gecikme süresini ölçmeyi amaçlıyor.
Bu alandaki mevcut lider, 198 milyar döngüyü aşan ve tam 62 saniye süren 'fxrstor64' komutu oldu. Bu komut, SIMD (Tek Yönergeli Çoklu Veri) hesaplamaları için kullanılan yazmaçların durumunu 512 baytlık bir bellek konumuna geri yükler. En yüksek (en yavaş) puanı elde etmek için Domas, önce kendi geliştirdiği bir araçla dahili PCIe yapısında yüksek gecikme süresine sahip bir alan belirledi. Ardından, işlemciyi MMIO (Bellek Eşlenmiş G/Ç) üzerinden 512 baytlık bir durumu mümkün olduğunca yavaş bir şekilde yüklemeye zorladı. Bu işlemin kendisi, 74 milyar döngüye ve 23 saniyeyi aşan bir süreye mal oldu.
Domas, işi bir adım daha ileri taşıyarak, bu yükleme işlemi sırasında PCIe yapısını 'aç bıraktı'. Bunu, başka bir yüksek gecikmeli MMIO kaydından 4 baytlık okuma işlemleri serisi kullanarak yaptı. Bu durum, işlemcinin PCIe kök kompleksini aşırı yükleyerek durum geri yükleme işlemini gereksiz okuma işlemlerinin arkasına sıraya soktu. Bir sonraki adımda ise Intel'in Sapphire Rapids işlemcilerinde bulunan AMX komutlarını kullanarak bu işlemi daha da zorlaştırmayı hedefliyor. Durum alanı 512 bayt'tan 8 KB'a çıkarılarak, komutun bir trilyon döngüden fazla sürmesi bekleniyor.
x86 işlemci komutları için hazırlanan bu sıralama listesi artık herkese açık. Domas'ın gelecekte ARM ve RISC-V için de benzer listeler hazırlaması bekleniyor. Bu yarışmanın kuralları oldukça net: Herhangi bir donanım kurulumu serbest ancak sadece tek bir komutun yürütülmesi puanlanıyor. Kesintiye uğrayabilen komutlar veya işlemci tarafından emüle edilen komutların puanlanması kabul edilmiyor. Tüm süreler, işlemcinin temel saat hızına göre normalize ediliyor ve platformlarda herhangi bir donanım değişikliği yapılmıyor.
Burada asıl önemli olan, belirli bir komutun kendisinden çok, o komutla ne yapıldığıdır.
Domas bu testlerde ağırlıklı olarak iki işlemci kullandı: Intel Core i7-8559U ve AMD Ryzen 7 5800H (Trigkey S5 içinde). Ancak 'rdmsr' komutu için, 2000'lerin başlarından kalma gömülü işlemcilerden biri olan VIA Eden çipini kullandı. 'rdmsr' komutu, model özelinde bir yazmacı (MSR) okumak için kullanılır. Domas'a göre, VIA'nın kullandığı belgelenmemiş bir 0x133 kaydı, aşırı yüksek yanıt sürelerine neden oluyor. Bu komutun çalışması 202 mikrosaniye veya 161.602 döngü sürdü.
Bu, Domas'ın düşük seviyeli komutlarla yaptığı ilk çılgın deney değil. Daha önceki 'movfuscator' adlı projesi, yalnızca 'mov' (taşıma) komutunu kullanan bir C derleyicisiydi.