Windows 7 Professional、Intel i7 CPUを使用しています。i7にはハイパースレッディングがあり、これが理由だと思います。
シングルスレッドプログラムの実行中に、タスクマネージャーで12〜13%のCPUしか使用しないことがわかりました。これは、クアッドコアCPUのCPU時間の1/8です。HTが原因でタスクマネージャーの問題ですか、それともコアの半分しか使用していないのですか?
実際には半分以上のコアを使用しています。オペレーティングシステムには、それを判断する方法がありません。1つの仮想コアがアイドル状態であるため、コアの半分のみが使用されていると想定しています。しかし、それは真実ではありません。単一の仮想コアは、可能であれば物理コア上のすべての実行リソースを使用できます。そうしないと、ハイパースレッディングはCPUのパフォーマンスを2倍にし、10〜15%しか追加しません。
—
デビッドシュワルツ
それは、OSがHTをサポートしているため、OSが適切なCPU使用量を把握すると仮定しただけです
—
...-K.Steff
問題は、ベースラインがないことです。コアができるだけ早く命令を処理している場合でも、一部の実行ユニットは使用されません。(たとえば、整数演算のみを実行している場合、浮動小数点ユニットはアイドル状態です。)そのレベルでの使用率は明確に定義されていません。OSが知っているのは、8つのスレッドを実行でき、1つのスレッドを実行している、つまり12%であるということだけです。HT対応とは、スレッドをスケジュールするコアと、物理コアがアイドル状態になっているタイミングを認識することを意味します。また、実行ユニットの使用率を実際に測定する場合、実行している負荷に関係なく、100%近くに達することはありません。
—
デビッドシュワルツ