回答編集履歴
6
ちょっと読みやすくした
test
CHANGED
@@ -46,17 +46,21 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
-
EAX(`__cpuid`の第2引数`function_id`
|
49
|
+
EAXが1の場合(`__cpuid`の第2引数`function_id`に1を渡した場合)、EDX (`data[3]`) の28ビット目が、ハイパースレッディングの有効・無効を表しているようです。
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
|
53
|
+
> EAX=1 CPUID feature bits
|
54
54
|
|
55
|
-
|
55
|
+
>
|
56
56
|
|
57
|
-
|
|
57
|
+
> | ビット | Short | 機能 |
|
58
58
|
|
59
|
+
> |------|-------|-----|
|
60
|
+
|
61
|
+
> | … | … | … |
|
62
|
+
|
59
|
-
| 28 | htt | Hyper-threading |
|
63
|
+
> | 28 | htt | Hyper-threading |
|
60
64
|
|
61
65
|
|
62
66
|
|
5
ハイパースレッディング状態を取得するための条件を記載
test
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
-
EDX (`data[3]`) の28ビット目が、ハイパースレッディングの有効・無効を表しているようです。
|
49
|
+
EAX(`__cpuid`の第2引数`function_id`)が1の場合、EDX (`data[3]`) の28ビット目が、ハイパースレッディングの有効・無効を表しているようです。
|
50
50
|
|
51
51
|
|
52
52
|
|
4
Wikipediaからの引用を追加
test
CHANGED
@@ -47,6 +47,16 @@
|
|
47
47
|
|
48
48
|
|
49
49
|
EDX (`data[3]`) の28ビット目が、ハイパースレッディングの有効・無効を表しているようです。
|
50
|
+
|
51
|
+
|
52
|
+
|
53
|
+
| ビット | Short | 機能 |
|
54
|
+
|
55
|
+
|------|-------|-----|
|
56
|
+
|
57
|
+
| … | … | … |
|
58
|
+
|
59
|
+
| 28 | htt | Hyper-threading |
|
50
60
|
|
51
61
|
|
52
62
|
|
3
ハイパースレッディングの有効・無効は、EAXではなくEDXの28ビット目だった
test
CHANGED
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
|
48
48
|
|
49
|
-
E
|
49
|
+
EDX (`data[3]`) の28ビット目が、ハイパースレッディングの有効・無効を表しているようです。
|
50
50
|
|
51
51
|
|
52
52
|
|
2
説明順を整理
test
CHANGED
@@ -50,11 +50,11 @@
|
|
50
50
|
|
51
51
|
|
52
52
|
|
53
|
-
|
53
|
+
- [論理/物理プロセッサコア数の取得 - yohhoyの日記](http://d.hatena.ne.jp/yohhoy/20140811/p1)
|
54
54
|
|
55
55
|
|
56
56
|
|
57
|
-
|
57
|
+
C++で物理コア数を取得するほかの方法としては、Boost Thread Libraryの`boost::thread::physical_concurrency()`静的メンバ関数を使用するものがあります。
|
58
58
|
|
59
59
|
|
60
60
|
|
1
引用したソースコードのコメントを日本語訳
test
CHANGED
@@ -88,6 +88,8 @@
|
|
88
88
|
|
89
89
|
// a bit too strict: Windows XP with SP3 would be sufficient
|
90
90
|
|
91
|
+
// Windows XP SP3より古いと実装は難しい
|
92
|
+
|
91
93
|
#if BOOST_PLAT_WINDOWS_RUNTIME \
|
92
94
|
|
93
95
|
|| ( BOOST_USE_WINAPI_VERSION <= BOOST_WINAPI_VERSION_WINXP ) \
|