2012-07-11 17 views
17

This question ve son zamanlarda bir Epik Cevap olarak etiketlenmiş olan cevabı, merak etmemi sağladı; Windows'da çalışan bir uygulamanın performansını, CPU dalı tahmini hataları açısından ölçebilir miyim? Bazı statik analiz araçlarının mevcut olduğunu biliyorum, bu durum, şube tahmini durumlarında iyi performans için kodun optimize edilmesine yardımcı olabilir ve manuel teknikler yalnızca değişiklikler yaparak ve yeniden test ederek yardımcı olabilir, ancak bazı otomatik mekanizmalar arıyorum. Windows uygulaması çalıştığında, bir süre boyunca, şube tahmini hatalarının toplam sayısını bildirir ve Visual C++ için bazı Profiler aracının bana yardımcı olabileceğini umuyorum. Bu sorunun uğruna Modern Intel Core CPU'larda şube tahmini hatalarını ölçebilir miyim?

, söz konusu uygulama örneğin GCC, FreePascal, Delphi veya TurboAssembler olarak Visual Windows için C++ veya başka yerli derleyici kullanarak, gibi yerel bir-derleyici ile inşa edilmiştir ya. Yürütülebilir dosyada hiç hata ayıklama bilgisi olmayabilir. Şube tahmini hatalarını tespit edip edemeyeceğimi, belki de WMI gibi bir Windows servisi aracılığıyla dahili CPU bilgilerini okuyabildiğimi veya tamamen VirtualBox kullanarak Windows çalıştıran sanal bir ortamda çalışıp çalışamayacağını bilmek istiyorum. Sanal Kutu içinde sanallaştırılmış windows ortamı, VirtualBox içinde sanal CPU'nun çalışma zamanı analizi. Ya da bilmediğim başka bir teknik, bu yüzden bu soru.

Evet, googled. Umut verici görünen tek şey, AMD'den this PDF. Page 18, yapmak istediklerime çok yakın bir şeyden bahseder, fakat herhangi bir işletim sistemi olmayan, ham değerlendirme donanım platformlarında çalışanlar için yazılmış gibi görünür:

5.1. Dallar. Uygulanabilirliği. Koşullu şube yanlış tahminleri, birçok karar verme mantığına sahip kodda önemli bir sorun olabilir. gerçek veya yanlış yolu seçme olasılığı rastgele olduğunda veya 50-50 bölünmenin yakınında olduğunda koşullu dallar yanlış tahmin edilebilir. şube tahmini donanımı bir modeli "öğrenemez" ve dalları doğru olarak tahmin edilmeyen . Toplamak. = Şube kullanılan oran Taken_branches/ Ret_instructions:

Dallar dalları alındığında hızını ve bu formüllerle dal başına talimatlar sayısı oranı hesaplamak: dal tahmin performansını ölçmek için bu tablo olayları toplamak Şube başına Şubesi alınan oran = Taken_branches/Dallar
Talimatlar = Ret_instructions/Dallar

Güncelleme: Ben Intel Core i7 PMU modülü veya diğer eşdeğer işlevleri okumak için bir yol arıyorum söyleyebiliriz sanırım CPU'lar. Görünüşe göre Intel VTUNE (Adrian'ın yorumlarından) istediğim şeye çok yakın.

+1

bir cevap bu koymak için yeterince emin değilim, ama profilleme eğer VTune Intel en az, cevapsız şube öngörüleri hakkında söylemek mümkün olacağını düşünüyorum Intel işlemcide. –

+0

Bu? (http://software.intel.com/en-us/articles/intel-vtune-amplifier-xe/) - vay canına. Etkileyici görünüyor. Sadece bir PMU-okuyucu için, bu da var gibi görünüyor: http://software.intel.com/en-us/articles/intel-performance-counter-monitor/ –

+0

@Adrian McCarthy: benim bilgi doğru. vTune pahalı olmasa da oldukça etkileyici. Ne yazık ki, Intel CPU'lara sınırlama, birçok kullanım durumunda bir sorun olabilir. – 0xC0000022L

cevap

5

VTune Performans Çözümleyicisi bunu yapabilir! Btw, bu konuları inceliyorsan, Intel Press'ten "Optimizasyon Yemek Kitabı" na bir göz at.

Not: Yorumlar aynı cevabı belirtiyor ancak bazı belirsizlikler nedeniyle VTune kullanıyordum ve Intel CPU'nun şube tahmini oranını ölçtüm. Yani% 100 eminim.

here is the link for VTune

here is the link for the book

+0

Kitap bağlantısı maalesef modası geçmiş, ancak referans için teşekkürler! – andreee