web-dev-qa-db-ja.com

HTがオンになっている場合、シングルスレッドのCPU速度は半分になりますか?

たとえば、単一の2.6GHzコアがある場合、ハイパースレッディングでは、アプリが持っている単一のスレッドに対して1.3GHzしかないことを意味しますか、それとも使用する場合にのみオンデマンドになります(アプリが実行される唯一のものであるとしましょう)コンピューター上で... OSが実行されない場合のために)

シングルスレッドシングルコアHTなし:スレッドは2.6GHzで実行シングルスレッドシングルコアHT付き:スレッドは1.3GHzで実行されますか?

実行しているスレッドが1つしかない場合、速度が半分ではない場合、HTをオンにするとどの程度の劣化が発生しますか? 10%?そうしないと?

1
Jas

いいえ、それはそれを意味するものではありません。すべてのタスクは、単一のスレッドでフルコア速度で実行できます。これらの1つがブロックされると(たとえば、メインメモリからの比較的遅いIO)を待機している間)、別のスレッドがフルコア速度で実行できます。

シングルコア、デュアルスレッドのセットアップでは、同時に1つのスレッドで一部のリソースしか使用できないことに注意してください。例えば。実行したいスレッドが2つあり、両方がメインメモリからデータを読み取る必要がある場合、それを実行できるのは1つのスレッドだけです。もう一方は待たなければなりません。 2つのスレッドがあり、一方が純粋にオンダイで何かを実行している(たとえば、ALUを使用している)一方で、もう一方がメインメモリから読み取っている場合、両方を同時に実行できます。

従業員が2人で、レジが1つしかないショップがあると考えてください。両方がレジにアクセスする必要がある場合は、待つ必要があります(何もしません)。または、運が良ければ、一方だけがレジにアクセスする必要があり、もう一方は、最初の人がレジを操作している間、次の顧客と話すのに忙しいです。 (したがって、2つのことを同時に実行します)。

実行しているスレッドが1つしかない場合、速度が半分ではない場合、HTをオンにするとどの程度の劣化が発生しますか? 10%?そうしないと?

プログラムごとに異なります。私が聞いた最悪のライブケースは、合計30%の減速です* 2 (HTをオンにすると実際には遅くなります)。理論上の最良のケースは、ほぼ100%のゲインです。実際には、HTを使用しない場合に比べて平均して約30%の速度向上が見られます。


* 2:30%の速度低下は、Webスパイダーの実際の製品コードにありました。しかし、もっと悪いことが起こり得ます。例えば。データベースでは、2コアで2つのスレッド、4スレッドのCPU、および同じ物理コアで両方のスレッドを永続的にスケジュールするスケジューラーのみが許可されていました。

2014年10月9日:関連情報を含む2つのリンクを追加しました。
ウィキペディア: ハイパースレッディング
ウィキペディア: 同時マルチスレッディング

1
Hennes

いいえ、クロック速度はそのようには機能しません。コア内の実行ユニットは、それらが代わりに動作しているスレッドに関係なく、または物理コアでHTが有効か無効かに関係なく、同じ速度で実行されます。

3
David Schwartz