8

x86 の PAUSE 命令に相当するものはありますか? これはビジーな待機ループ内に配置され、特に SMT マシンや PowerPC でパフォーマンスを向上させますか?

4

3 に答える 3

11

Linux カーネルでは、これは arch/powerpc/include/asm/processor.h にあります。

/* Macros for adjusting thread priority (hardware multi-threading) */
#define HMT_very_low()   asm volatile("or 31,31,31   # very low priority")
#define HMT_low()    asm volatile("or 1,1,1      # low priority")
#define HMT_medium_low() asm volatile("or 6,6,6      # medium low priority")
#define HMT_medium()     asm volatile("or 2,2,2      # medium priority")
#define HMT_medium_high() asm volatile("or 5,5,5      # medium high priority")
#define HMT_high()   asm volatile("or 3,3,3      # high priority")

x86 PAUSE には詳しくありませんが、「または 31,31,31」が必要なようです。

どの powerpc プロセッサでこれを実行していますか? SMT の場合、POWER5、6、または 7 でなければなりませんか?

于 2011-03-25T01:08:50.963 に答える
4

ここに画像の説明を入力してください

于 2011-09-28T20:05:14.940 に答える
4

Cell 内の PowerPC は、特定の NOP エンコーディングを、コア内の 2 つの物理スレッドの相対的な優先度を調整するための指標として認識します。ドキュメントには、これらの特別な NOP の 、 、および拡張ニーモニックがリストcctplcctpmれています。cctph

他の Google の結果を見ると、おそらく IBM RS64 ラインには同様の特別な NOP 命令があったように見えるため、この機能はおそらくかなり長い間、さまざまな IBM PowerPC チップの「Book IV」に含まれていました。

Power ISA 2.06ドキュメントyieldには、第 3 章に追加の特別な NOP 定義があり、mdoio、 、 などの拡張ニーモニックがありmdoomます。また、Cellcctplと同じ NOP を定義します。cctpm

于 2011-03-25T00:02:25.083 に答える