2009-12-24 61 views
6

閱讀關於低延遲計算的一些精彩演講。他們參考了IBM的XL C/C++編譯器數據高速緩存操作__dcbt(數據高速緩存塊觸摸),以獲取它們的cell編譯器。該操作將一塊內存加載到L1緩存中。Visual Studio是否支持數據緩存操作?

Visual Studio(或G ++或Intel)對英特爾處理器有類似的功能嗎?如果是這樣,並且解決方案是平臺特定的(例如Windows或* nix),請說明。

+1

我想專門解決這個問題,以包含塊加載後會發生什麼的概念。它是否受到相同的退休邏輯的影響,還是會保留在CPU中直到被明確卸載? – 2009-12-24 03:29:00

+1

對於目前的英特爾硬件,預取塊與其他塊相同。它沒有鎖定到緩存中。 – Crashworks 2009-12-24 03:31:33

回答

4

是的,Visual Studio支持所有的SSE和MMX內在操作。這裏簡要描述高速緩存控制操作:http://www.tommesani.com/SSECacheabilityControl.html 並在Intel's instruction set reference中詳細解釋。

微軟documents their intrinsics for cache control at MSDN。雖然它們看起來像函數,但編譯器實際上將它們歸結爲適當的硬件指令。請務必查看SSE1和SSE2緩存控制指令,這些指令在不同的類別下列出(請參閱其頁面左側的擴展樹)。

x86相當於dcbt_mm_prefetch。沒有直接等價於dcbz,但最接近的模擬是_mm_stream_si128

我相信GCC使用相同的內部名稱(因爲它們取自英特爾編譯器)。

相關問題