2009-12-24 10 views
6

Düşük gecikme bilgisine ilişkin bazı harika sunumları okuma. Onlar, cell derleyicileri için IBM'in XL C/C++ derleyici veri önbellekleme işlemine __dcbt (Veri Önbellek Engelleme) başvurusunda bulundular. İşlem bir blok belleği L1 önbelleğine yükler.Visual Studio veri önbellek işlemlerini destekliyor mu?

Visual Studio'nun (veya G ++ veya Intel) Intel İşlemciler için benzer işlevleri var mı? Eğer öyleyse ve çözüm platforma özelse (yani sadece Windows veya * nix) lütfen belirtin.

+1

Bu soruya, blok yüklendikten sonra ne olacağına dair fikir eklemek için uzmanlaşmak isterim. Aynı emeklilik mantığına mı bağlı, yoksa açık bir şekilde boşaltılıncaya kadar CPU'da mı kalacak? –

+1

Günümüzün Intel donanımı söz konusu olduğunda, önceden yüklenmiş bir blok diğer herhangi bir blokla aynı emekliye tabidir. Önbellekte kilitlenmez. – Crashworks

cevap

4

Evet, Visual Studio, tüm SSE ve MMX içsel işlemlerini desteklemektedir. Önbellek denetim işlemleri kısaca burada açıklanmaktadır: http://www.tommesani.com/SSECacheabilityControl.html ve uzunluğu Intel's instruction set reference'da açıklanmıştır.

Microsoft documents their intrinsics for cache control at MSDN. İşlevler gibi görünseler de, derleyici aslında onları uygun donanım yönergesine doğru indirir. Ayrı kategoriler altında listeledikleri SSE1 ve SSE2 önbellek denetimi talimatlarına baktığınızdan emin olun (sayfalarının sol tarafındaki genişleyen ağaçlara bakın).

dcbt için x86 eşdeğeri _mm_prefetch'dir. dcbz'a doğrudan eşdeğer yoktur, ancak en yakın analog _mm_stream_si128'dur.

GCC'nin aynı içsel adları kullandığını düşünüyorum (Intel derleyicisinden alındığı gibi).

İlgili konular