Spin-lock optimizasyonu gecikmeyi düşürürken enerji tüketimini 5,4 kat azalttı
Öne çıkanlar
- Bellek sıralamasının acquire ve release olarak düzenlenmesi x86 üzerinde kilit açma maliyetini hafifletti.
- Salt okunur bekleme ve _mm_pause kullanımı L1 veri önbelleği kaçırma oranını yüzde 61'den yüzde 17'ye düşürdü.
- Üstel geri çekilme mekanizması dört iş parçacığında işlem süresini 43 nanosaniyeye, harcanan enerjiyi 11,92 jule indirdi.
Basit bir spin-lock yapısının C++ üzerinde adım adım optimize edilmesi, dört iş parçacıklı senaryoda kilit bekleme süresini 246 nanosaniyeden 43 nanosaniyeye indirdi. Yapılan ölçümlerde en yalın döngü tabanlı kilit modeli ile gelişmiş yöntemler karşılaştırıldı. Çalışma, bellek modellerinin ve işlemci mimarisi komutlarının doğru kurgulanmasıyla eşzamanlı kilit mekanizmalarının 5,7 kat daha hızlı çalışabildiğini ve enerji tüketimini 5,4 kat düşürdüğünü gösterdi.
İlk aşamada varsayılan sıralama yerine acquire ve release bellek modelleri tercih edildi. Bu düzenleme, x86 mimarisinde kilit açma işlemindeki atomik okuma-değiştirme-yazma yükünü yalın bir bellek yazma işlemine dönüştürerek süreyi 131 nanosaniyeye çekti. Ardından sürekli yazma yerine salt okunur bekleme döngüsü ve _mm_pause komutu devreye sokuldu. Bu yöntem önbellek hattı çekişmesini düşürerek L1 veri önbelleği kaçırma oranını belirgin biçimde geriletti.
Son aşamada ise tüm iş parçacıklarının aynı anda uyanmasını engellemek için Intel kılavuzlarında önerilen üstel geri çekilme yöntemi uygulandı. Bekleme döngülerinin kademeli olarak uzatılması sayesinde dört iş parçacıklı yük altında işlem paketi enerji harcaması 64,92 jul seviyesinden 11,92 jule indi. Yüksek frekanslı alım satım gibi enerji sınırının ve gecikmenin kritik olduğu alanlarda donanıma uygun kilit tasarımının önemi ortaya kondu.
Bu özet yapay zekâ ile hazırlanmıştır; ayrıntılar ve doğrulama için orijinal kaynağa başvurun.