ハイパースレッディング並列コンピューティング技術。 ハイパースレッディングとは何ですか? BIOS でのサポートを有効にするにはどうすればよいですか? テクノロジーの技術的説明

「…そして我々は誇りに思っているし、我々の敵も誇りに思っている」
さあ、怠惰のことは忘れてください。 見てみましょう、
最後は誰が誰のブーツを持っているのか
ついに膝を曲げます…」
©映画『アルタニャンと三銃士』

少し前に、著者はインテル ハイパー スレッディングによる新しいパラダイムについて「少し不平を言う」ことを自分に許可しました。 インテルの名誉のために言っておきますが、著者の当惑は見過ごされませんでした。 したがって、著者は、( 企業の経営者がどのように繊細に評価したか) ハイパー スレッディング テクノロジを使用した「実際の」状況。 まあ、真実を知りたいという意欲は賞賛するしかありません。 そうではありませんか、親愛なる読者の皆さん。 少なくとも、これは自明の理の 1 つです。 本当、それはいいことだ。 そうですね、この言葉に従って行動してみます。 また、確かに一定の新情報も出てきています。

まず、ハイパー スレッディング テクノロジについて正確に知っていることを定式化しましょう。

1. このテクノロジは、プロセッサの効率を向上させるように設計されています。 実際のところ、Intel の推定によれば、ほとんどの場合、30% しか機能しません ( ちなみに、これはかなり物議を醸している数字ですが、その計算の詳細は不明です。) プロセッサー内のすべてのアクチュエーター。 同意します、これはかなり攻撃的です。 そして、残りの 70% を何らかの方法で「合計」するというアイデアが生まれたという事実は、非常に論理的であるように見えます ( さらに、このテクノロジーが実装される Pentium 4 プロセッサ自体は、メガヘルツあたりの過剰なパフォーマンスに悩まされることはありません。)。 したがって、著者は、この考えが非常に健全であることを認めざるを得ません。

2. ハイパー スレッディング テクノロジの本質は、プログラムの 1 つの「スレッド」の実行中に、アイドル状態の実行デバイスがプログラムの別の「スレッド」の実行を開始できることです ( または「糸」 別のプログラム)。 または、たとえば、あるコマンド シーケンスを実行するときに、別のシーケンスを実行するためにメモリからのデータを待ちます。

3. 当然のことながら、異なる「スレッド」を実行する場合、プロセッサはどのコマンドがどの「スレッド」に属するかを何らかの方法で区別する必要があります。 これは、何らかのメカニズムがあることを意味します( 何らかのマーク)、これにより、プロセッサはコマンドがどの「スレッド」に属しているかを識別します。

4. x86 アーキテクチャの汎用レジスタの数が少ないことを考慮すると、次のことも明らかです ( 合計8)、各スレッドには独自のレジスタのセットがあります。 ただし、これはもはやニュースではありません。このアーキテクチャ上の制限は、「レジスタ名の変更」を使用してかなり長い間回避されてきました。 言い換えれば、論理レジスタよりも物理レジスタの方がはるかに多く存在します。 Pentium III プロセッサにはその数が 40 個ありますが、Pentium 4 のこの数は確かに大きくなります。これには何の根拠もありません。 「対称性」の考慮を除く:-) およそ何百ものものがあるという意見があります。 その数に関する信頼できる情報は見つかりませんでした。 まだ未確認のデータによると、それらは256個あります。 他の情報源によると、別の数字もあります。 一般的に、完全に不確実です... ちなみにインテルの立場は これ理由はまったく理解できません:-( 作者は何がそのような秘密を引き起こしたのか理解していません.

5. 複数の「スレッド」が同じリソースを要求する場合、または「スレッド」の 1 つがデータを待機している場合、パフォーマンスの低下を避けるために、プログラマは特別な「一時停止」を挿入する必要があることも知られています。指示。 当然のことながら、これにはプログラムをもう一度再コンパイルする必要があります。

6. 複数の「スレッド」を同時に実行しようとすると、パフォーマンスの低下につながる状況があることも明らかです。 たとえば、L2 キャッシュのサイズは無限ではなく、アクティブな「スレッド」がキャッシュをロードしようとするため、そのような「キャッシュの争奪戦」により、キャッシュのクリアと再ロードが継続的に行われる可能性があります。 2次キャッシュ内のデータ。

7. Intel は、このテクノロジー向けにプログラムを最適化すると、最大 30% の利益が得られると主張しています。 ( というか、Intel は、今日のサーバー アプリケーションとシステムでは最大 30% のパフォーマンスが得られると主張しています。)うーん……。 これは最適化にとって十分すぎる動機となります。

さて、いくつかの機能を定式化しました。 ここで、いくつかの影響について考えてみましょう ( 可能な限り、私たちが知っている情報に基づいて)。 何と言えますか? まず、私たちに正確に何が提供されているのかを詳しく見る必要があります。 このチーズは本当に「無料」なのでしょうか? まず、複数の「スレッド」の「同時」処理がどのように正確に行われるかを考えてみましょう。 ところで、インテルの「スレッド」という言葉は何を意味するのでしょうか?

筆者はこんな感想を抱いています( 間違っている可能性があります)、この場合、これはマルチタスク オペレーティング システムがマルチプロセッサ ハードウェア システムのプロセッサの 1 つに実行のために割り当てるプログラム フラグメントを指します。 "待って!" 注意深い読者は、「これは定義の 1 つです。ここに何が新しいのですか?」と言うでしょう。 そして何も入っていない 与えられた著者はこの質問の独創性を主張しません。 Intel の「オリジナル」が何だったのか知りたいです :-)。 まあ、それを作業仮説として考えてみましょう。

次に、あるスレッドが実行されます。 一方、コマンドデコーダ( ちなみに、完全に非同期であり、悪名高いネットバーストの 20 ステージには含まれていません。) サンプリングと復号化を実行します ( すべての相互依存性を伴う)V マイクロインストラクション。 ここで、著者が「非同期」という言葉で何を意味するのかを明確にする必要があります。事実は、マイクロ命令内の x86 コマンドの「崩壊」の結果が復号化ブロックで発生するということです。 各 x86 命令は、1 つ、2 つ、またはそれ以上のマイクロ命令にデコードできます。 同時に処理段階では相互依存関係を明確にし、必要なデータをシステムバス経由で受け渡します。 したがって、このブロックの動作速度はメモリからのデータ アクセスの速度に依存することが多く、最悪の場合はメモリからのデータ アクセスの速度によって決まります。 実際にマイクロ操作が実行されるパイプラインからそれを「切り離す」のは論理的です。 これは、復号化ブロックを配置することによって行われました。 前にトレースキャッシュ。 これで何を達成しようとしているのでしょうか? そして、この「ブロックの再配置」の助けを借りて、単純なことを実現します。トレース キャッシュに実行用のマイクロ命令があれば、プロセッサはより効率的に動作します。 当然のことながら、このユニットは Rapid Engine とは異なり、プロセッサ周波数で動作します。 ちなみに、筆者はこのデコーダは10~15段くらいのベルトコンベアのような印象を受けました。したがって、キャッシュからデータを取得して結果を取得するまで、およそ 30 ~ 35 の段階があることになります ( ネットバーストパイプラインを含む、Microdesign Resources August 2000 マイクロプロセッサ レポート Volume14 Archive8、12 ページを参照してください。

結果として得られるマイクロ命令のセットは、すべての相互依存関係とともに、同じキャッシュ内のトレース キャッシュに蓄積されます。これには約 12,000 のマイクロオペレーションが含まれます。 大まかな推定によれば、そのような推定のソースは P6 マイクロ命令の構造です。 実際のところ、基本的に命令の長さが劇的に変わる可能性は低いです ( マイクロ命令の長さをサービスフィールドと合わせて考慮すると、約 100 ビットになります。) トレース キャッシュ サイズは次から取得されます。 96 KBから 120 KB!!! しかし! このような背景に対して、データ キャッシュのサイズは 8 KB はどういうわけか非対称に見えます :-)… そして青白く見えます。 もちろん、サイズが大きくなると、アクセス遅延も増加します( たとえば、32KB に増加すると、遅延は 2 クロック サイクルではなく 4 クロック サイクルになります。)。 しかし、このデータ キャッシュへのアクセス速度は、レイテンシーが 2 クロック サイクル増加するほど重要なのでしょうか ( コンベア全体の全長を背景に)そのような量の増加は採算を悪くしますか? それとも単に結晶サイズを大きくしたくないだけなのでしょうか? しかし、0.13 ミクロンに移行するときの最初のステップは、この特定のキャッシュを増やすことでした ( 二次キャッシュではありません)。 この説を疑う人は、一次キャッシュの増加による Pentium から Pentium MMX への移行を思い出してください。 倍増したほぼすべてのプログラムのパフォーマンスが 10 ~ 15% 向上しました。 この増加について何が言えるでしょうか? 四倍 (特にプロセッサの速度が 2 GHz に増加し、乗算係数が 2.5 から 20 に増加したことを考慮すると、)? 未確認のレポートによると、Pentium4 (Prescott) コアの次の修正では、一次キャッシュが 16 KB または 32 KB に増加される予定です。 2次キャッシュも増加します。 しかし、現時点ではこれらはすべて噂にすぎません。率直に言って、これは少し混乱した状況です。 ただし、保留しておきますが、そのような考えが特定の理由によって妨げられていることを著者は完全に認めています。 例として、ブロックの配置の幾何学的形状に対する特定の要件や、コンベア近くの空きスペースの平凡な不足( データ キャッシュを ALU の近くに配置する必要があることは明らかです。).

気を散らさずに、プロセスをさらに見てみましょう。 パイプラインが実行されているため、現在のチームは ALU を使用できます。 FPU、SSE、SSE2などがアイドル状態であることは明らかです。 ハイパースレッディングが役に立つのはそのような幸運ではありません。 新しいスレッドのデータとともにマイクロ命令の準備ができていることに気づき、レジスタ名前変更ユニットは物理レジスタの一部を新しいスレッドに割り当てます。 ちなみに、物理レジスタのブロックはすべてのスレッドで共通であるか、各スレッドで個別であるかの 2 つのオプションが可能です。 Intel の Hyper Threading プレゼンテーションでは、レジスタ名変更ブロックが変更する必要があるブロックとしてリストされていないことから判断すると、最初のオプションが選択されています。 良いのか悪いのか? 技術者の観点からすると、トランジスタを節約できるので、これは明らかに良いことです。 プログラマーの観点から見ると、それはまだ不明です。 物理レジスタの数が実際に 128 である場合、適切な数のスレッドがあれば「レジスタ不足」の状況は発生しません。 それから彼らは( マイクロインストラクション) はスケジューラに送信され、実際にはスケジューラが実行デバイス ( 忙しくなければ)、またはこのアクチュエータが現在利用できない場合は「キューに入れられています」。 したがって、理想的には、既存のアクチュエータのより効率的な使用が達成されます。 この時私自身 CPU OSの観点から見ると 2 つの「論理」プロセッサのように見えます。 うーん...本当にすべてが雲一つないのでしょうか? 状況を詳しく見てみましょう: ある機器 ( キャッシュ、Rapid Engine、遷移予測モジュールなど) は両方のプロセッサに共通です。 ところで、 遷移予測精度これから、おそらくわずかに 苦しむでしょう。 特に、同時に実行しているスレッドが互いに接続されていない場合はそうです。 そしてその部分( たとえば、MIS マイクロ命令シーケンス プランナーは、事前にプログラムされた一般的な操作のシーケンスと RAT レジスタの名前変更テーブルのセットを含む ROM の一種です。) ブロックは、「異なる」プロセッサ上で実行されている異なるスレッドによって区別される必要があります。 途中( キャッシュコミュニティから) 2 つのスレッドがキャッシュに貪欲である場合 ( つまり、キャッシュを増やすと大きな効果があります)、 それ ハイパースレッディングを使用すると、さらに速度が低下する可能性があります。 これは、現時点ではキャッシュを争うための「競合」メカニズムが実装されているために発生します。つまり、その時点で「アクティブ」なスレッドが「非アクティブ」なスレッドに置き換わります。 ただし、キャッシュのメカニズムは明らかに変更される可能性があります。 スピードも明らかに( 少なくとも今のところは) は、正直な SMP で減少したアプリケーションでは減少します。 たとえば、SPEC ViewPerf は通常、シングルプロセッサ システムでより良い結果を示します。 したがって、ハイパー スレッディングを使用したシステムでは、使用しない場合よりも結果が低下する可能性があります。 実際に、ハイパースレッディングの実践テストの結果は、 で見ることができます。

ちなみにネット上に流出した情報は、 Pentium 4 16 ビットの ALU。 最初、著者はそのような情報について非常に懐疑的でした - 彼らは、羨望の的である人々はどう思ったと言います:-)。 そして、マイクロ デザイン レポートにそのような情報が掲載されたことで、私はこう考えました。「もしそれが本当だったらどうなるだろう?」 そして、これに関する情報は記事のテーマとは直接関係ありませんが、抵抗するのは困難です :-)。 著者が十分に「理解している」限り、重要なのは、ALU が実際に 16 ビットであるということです。 私は強調します ALUのみ。 これはプロセッサ自体のビット容量とは関係ありません。 したがって、半拍で ( それはカチカチと呼ばれています) アル ( 覚えているとおり、二重周波数) は 16 ビットのみを計算します。 2 番目の 16 は、次の半拍にわたって計算されます。 したがって、ちなみに、ALU を 2 倍高速にする必要があることは簡単に理解できます。これは、データをタイムリーに「粉砕」するために必要です。 したがって、完全な 32 ビットが完全なクロック サイクルで計算されます。 実際、ビットを「接着」および「剥がす」必要があるため、明らかに 2 サイクルが必要ですが、この問題を明確にする必要があります。 実際、発掘調査 (これについては別の詩を書くことができます) から次のことがわかりました。各 ALU は 2 つの 16 ビットの半分に分割されています。 最初の半サイクルは 16 ビットを処理します 残りの半分の数値と形式キャリー ビット。 残りの半分はこの時点で処理を終了します 前の数字。 ALU の 2 番目のティック前半は 16 ビットを処理します。 数値のペアを作成し、その転送を形成します。 後半は上位 16 ビットを処理します 最初のペア数値を計算し、準備ができた 32 ビットの結果を取得します。 1 つの結果を受信する際の遅延は 1 クロック サイクルですが、半クロック サイクルごとに 1 つの 32 ビット結果が生成されます。 非常に機知に富み、効果的です。この特定の ALU モデルが選択されたのはなぜですか? どうやら、このような組織により、インテルは一石で数鳥を殺したようです。

1. 16 ビット幅のパイプラインは 32 ビット幅のパイプラインよりもオーバークロックしやすいことは明らかです。これは単純にクロストークなどが存在するためです。

2. どうやらインテルは、整数計算操作が、FPU などではなく、ALU を高速化するのに十分な頻度であると考えていたようです。 整数演算の結果を計算する場合、テーブルまたは「キャリー累積」スキームが使用される可能性があります。 比較のために、1 つの 32 ビット テーブルは 2E32 アドレス、つまり 2E32 アドレスです。 4ギガバイト。 2 つの 16 ビット テーブルは 2x64kb または 128kb の違いを感じてください。 また、2 つの 16 ビット部分でのハイフンの蓄積は、1 つの 32 ビット部分でのハイフンの蓄積よりも速く発生します。

3. トランジスタと熱を節約します。 結局のところ、これらすべての建築上のトリックが熱狂的であることは周知の事実です。 どうやら、それはかなり大きかったようです(おそらく ) たとえば、サーマルモニターがテクノロジーとしてどのような価値があるのか​​という問題です。 結局のところ、そのようなテクノロジー自体はそれほど必要ではありません。もちろん、存在することは素晴らしいことです。 しかし、正直に言うと、十分な信頼性を得るには単純なブロックで十分です。 このような複雑な技術が提供されたということは、外出先でのこのような周波数変更が通常の動作モードの 1 つであるときに、このオプションが真剣に検討されたことを意味します。 それともメインかも? Pentium 4 がはるかに多数のアクチュエータを搭載して計画されているという噂があったのは当然のことでした。 そうなると、単純に暑さの問題がメインになるはずだった。 というか、同じ噂によると、放熱量は最大であったはずです。 150W。 そして、通常の冷却が提供されるシステムでのみプロセッサーが「フル稼働」で動作することを保証するための措置を講じることは非常に論理的です。 さらに、「中国」起源のケースのほとんどは、冷却の観点から思慮深いデザインが施されていません。 うーん……。 私たちは長い道のりを歩んできました:-)

しかし、これはすべて理論上の話です。 現在、このテクノロジーを使用しているプロセッサはありますか? 食べる。 こちらはゼオンです( プレストニア)およびXeonMP。 さらに、XeonMP が Xeon と異なるのは、最大 4 つのプロセッサをサポートしていることです ( IBM Summit などのチップセットは最大 16 個のプロセッサーをサポートし、その技術は ProFusion チップセットとほぼ同じです)、およびカーネルに統合された 512 KB と 1 MB の 3 次キャッシュの存在。 ところで、なぜ3次キャッシュを搭載したのでしょうか? 一次キャッシュが増加しないのはなぜですか?? 何か合理的な理由があるはずなんですが… なぜ二次キャッシュを増やさなかったのでしょうか? おそらくその理由は、Advanced Transfer Cache が比較的低いレイテンシを必要とするためです。 また、キャッシュ サイズを増やすと、レイテンシの増加につながります。 したがって、コアの 3 レベル キャッシュと 2 レベル キャッシュは通常、バスとして「表現」されます。 ただのタイヤ:-)。したがって、進歩はあります。データができるだけ早くコアに供給されるようにするためにすべてのことが行われています ( 同時に、メモリバスの負荷も軽減されました。).

さて、特にボトルネックはないことが分かりましたか? なぜ作者は「愚痴」を言えないのでしょうか? 1 つのプロセッサ - OS は 2 つのプロセッサを認識します。 大丈夫! 2 つのプロセッサと OS は 4 つを認識します。 美しさ! 停止! 4プロセッサで動作するOSは何ですか? 2 プロセッサ以上のコストを理解している Microsoft のオペレーティング システム 全然違うお金。 たとえば、2000 Professional、XP Professional、NT4.0 は 2 つのプロセッサのみを認識します。 そして、今のところこのテクノロジーはワークステーション市場を対象としているため、( とサーバー) 対応するプロセッサでのみ利用可能です。これはまったく攻撃的なものであることが判明しました。 現在、デュアルプロセッサボードを購入してインストールするだけで、このテクノロジーを搭載したプロセッサを使用できます。 1つ CPU。 不思議の国のアリスがよく言ったように、先に進むほど奇妙になります... つまり、このテクノロジーを使用したいと考えている人は、現在のオペレーティング システムの Server バージョンと Advanced Server バージョンを購入することを強いられるだけです。 ああ、「無料」プロセッサは少し高価です... おそらく、Intel が現在 Microsoft と積極的に「コミュニケーション」を図っており、ライセンス ポリシーを 物理的なプロセッサー。 少なくとも文書によれば、Microsoft の新しいオペレーティング システムは物理プロセッサによってライセンスが付与されます。 少なくとも WindowsXP は物理プロセッサの数に基づいてライセンスが付与されます。

当然のことながら、いつでも他のメーカーのオペレーティング システムを使用することができます。 正直に言うと、これは現在の状況から抜け出す良い方法ではありません... したがって、このテクノロジーを使用するかどうかをかなり長い間考えたインテルの躊躇も理解できます。

さて、かなり重要な結論を忘れないでください。 ハイパー スレッディングを使用すると、パフォーマンスの向上と低下の両方が起こる可能性があります。 さて、負けについてはすでに説明したので、勝つためには何が必要かを理解してみましょう。そして勝つためには、このテクノロジーについて知っている必要があります。

  1. マザーボード BIOS
  2. オペレーティング·システム (!!!)
  3. 実はアプリケーション自体が

この点についてさらに詳しく説明しますが、重要なのは BIOS が問題ではないということです。 オペレーティング システムについては少し前に説明しました。 ただし、たとえばメモリからのデータを期待するスレッドでは、特別なコマンドを入力する必要があります。 一時停止プロセッサの速度を低下させないように。 結局のところ、データが存在しない場合、スレッドは特定のアクチュエーターをブロックすることができます。 そして、このコマンドを挿入するには、アプリケーションを再コンパイルする必要があります。これは良くありませんが、Intel のおかげで、最近では誰もがそれに慣れ始めています :-)。 したがって、メイン ( 著者によると) ハイパー スレッディング テクノロジの欠点は、定期的なコンパイルが必要なことです。 このアプローチの主な利点は、途中で再コンパイルが行われることです ( おそらくもっと目立つでしょう :-)「正直な」デュアルプロセッサ システムのパフォーマンスが向上するため、これは歓迎すべきことです。 ちなみに、それを裏付ける実験研究はすでに行われています。 ほとんどの場合、SMP 用に最適化されたプログラム、ハイパー スレッディングの恩恵が 15% から 18% に増加します。 これはかなり良いですね。 ちなみに、どのような場合にハイパースレッディングがパフォーマンスの低下につながるのかもわかります。

そして最後に、何が変わるかを想像してみましょう ( 改善する)このアイデアをさらに発展させます。 このテクノロジーの開発が Pentium 4 コアの開発に直接関係することは明らかです。したがって、コアの潜在的な変更を想像してみましょう。 私たちの計画の次は何でしょうか? 0.09 ミクロン テクノロジー、90nm としてよく知られています…。 著者は信じる傾向にあります ( 現時点で)、このプロセッサ ファミリの開発は一度にいくつかの方向に進む予定です。

  • より「細かい」技術プロセスのおかげで、プロセッサ周波数はさらに高くなります。
  • データキャッシュが増えることを期待しましょう。 少なくとも32KBまで。
  • 彼らは「正直な」32 ビット ALU を作成します。 これにより生産性が向上するはずです。
  • システムバス速度を上げる ( ただし、これはすでに近い将来のことです).
  • 彼らはデュアルチャネル DDR メモリを製造する予定です ( 繰り返しますが、待ち時間は比較的短いです).
  • おそらく、彼らは x86-64 テクノロジーの類似物を導入するでしょう (このテクノロジーがあれば) AMDのおかげで)が根付きます。 同時に、作者はこのアナログが x86-64 と互換性があることを全力で望んでいます。 互いに互換性のない拡張機能を作成するのはやめてください... ここでも私たちにとって興味深いのは、ジェリー・サンダース氏です。彼は、AMD とインテルが昨年、Pentium4 システム・バスを除くすべての製品についてクロスライセンスに合意したと述べました。 これは、Intel が次の Pentium4 (Prescott) コアに x86-64 を組み込み、AMD がプロセッサにハイパー スレッディングを組み込むことを意味するのでしょうか? 興味深い質問...
  • おそらくアクチュエーターの数は増えるでしょう。 確かに、前のものと同様に、これはかなり物議を醸す点です。なぜなら、これにはカーネルのほぼ完全な再設計が必要であり、これは長くて労力のかかるプロセスだからです。

ハイパースレッディングのアイデアが開発されるのだろうか? 実際のところ、定量的には、それが発展する余地はなく、2 つの物理プロセッサが 3 つの論理プロセッサよりも優れていることは明らかです。 はい、そして位置決めは簡単ではありません... 興味深いことに、ハイパー スレッディングは、2 つの ( 以上) チップあたりのプロセッサ数。 さて、質的変化とは、通常のデスクトップにそのようなテクノロジーが存在することで、実際に大多数のユーザーが[ほぼ]デュアルプロセッサマシンで作業するようになるという事実につながることを意味しますが、これは非常に良いことです。 このようなマシンは、負荷が重い場合でも、はるかにスムーズに動作し、ユーザーのアクションに応答するため、これは良いことです。 これは作者の観点からすると非常に良いことです。

あとがきの代わりに

著者は、この記事の執筆中に、ハイパー スレッディングに対する態度が何度か変わったことを認めなければなりません。 情報が収集され、処理されるにつれて、態度は全体的に前向きになったり、その逆になったりしました :-)。 現時点では次のように書くことができます。

パフォーマンスを向上させる方法は 2 つしかありません。周波数を上げることと、クロックあたりのパフォーマンスを向上させることです。 そして、Pentium4 アーキテクチャ全体が最初のパス向けに設計されている場合、ハイパー スレッディングは 2 番目のパスにすぎません。 この観点からすれば、歓迎するほかない。 ハイパー スレッディングは、プログラミング パラダイムの変化、マルチプロセッシングの大衆化、プロセッサのパフォーマンスの向上など、いくつかの興味深い結果ももたらします。 ただし、この道にはいくつかの「大きな問題」があり、「行き詰まり」にならないようにすることが重要です。それは、オペレーティング システムによる通常のサポートの欠如と、最も重要なことに、再コンパイルの必要性です ( 場合によってはアルゴリズムを変更する) アプリケーションがハイパー スレッディングを最大限に活用できるようにします。 さらに、ハイパー スレッディングの存在により、現在のようにオペレーティング システムとアプリケーションを一度に 1 つずつではなく、実際に並行して実行できるようになります。 もちろん、十分な空きアクチュエータがあればの話ですが。

著者は感謝の意を強調したいと思います マキシム・レーニャ(別名 C.A.R.C.A.S.S.) イリヤ・ヴァイツマン(別名 Stranger_NN) には、記事を書く際に何度も貴重な支援をしていただきました。
また、貴重なご意見を繰り返していただきましたフォーラム参加者の皆様にも感謝申し上げます。

BIOS セットアップの内容を注意深く確認した場合は、そこに CPU ハイパー スレッディング テクノロジ オプションがあることに気付いたかもしれません。 そして、ハイパー スレッディング (またはハイパースレッディング、正式名はハイパー スレッディング テクノロジ、HTT) とは何なのか、そしてこのオプションは何のためにあるのか疑問に思われたかもしれません。

ハイパー スレッディングは、Intel が Pentium アーキテクチャ プロセッサ向けに開発した比較的新しいテクノロジです。 実践が示しているように、ハイパー スレッディング テクノロジを使用すると、多くの場合、CPU パフォーマンスを約 20 ~ 30% 向上させることができます。

ここで、コンピュータの中央プロセッサが一般的にどのように動作するかを覚えておく必要があります。 コンピュータの電源を入れてプログラムを実行するとすぐに、CPU はコンピュータに含まれる、いわゆるマシンコードで書かれた命令の読み取りを開始します。 各命令を順番に読み取り、順番に実行します。

ただし、多くのプログラムでは、複数のソフトウェア プロセスが同時に実行されます。 さらに、最新のオペレーティング システムでは、ユーザーは複数のプログラムを同時に実行できます。 そして、単にそれを許可しているだけではありません。実際、オペレーティング システムで単一のプロセスが実行されている状況は、今日ではまったく考えられません。 したがって、古いテクノロジを使用して開発されたプロセッサは、複数のプロセスを同時に処理する必要がある場合のパフォーマンスが低かったのです。

もちろん、この問題を解決するには、システムに複数のプロセッサ、または複数の物理コンピューティング コアを使用するプロセッサを含めることができます。 しかし、このような改善には費用がかかり、技術的にも複雑であり、実際的な観点から見て必ずしも効果的であるとは限りません。

開発経緯

そこで、1つの物理コア上で複数のプロセスを処理できる技術を開発することにした。 この場合、プログラムに関しては、外見上はシステム内に一度に複数のプロセッサ コアがあるように見えます。

ハイパー スレッディング テクノロジのサポートは、2002 年に初めてプロセッサに導入されました。 これらは、Pentium 4 ファミリのプロセッサと 2 GHz を超えるクロック速度の Xeon サーバー プロセッサでした。 当初、このテクノロジーのコード名は「Jackson」でしたが、その後、一般の人々にとってより理解しやすい名前、つまり「スーパー スレッディング」に名前が変更されました。

同時に、Intelによると、ハイパースレッディングをサポートするプロセッサクリスタルの表面積は、サポートしていない前モデルと比較してわずか5%増加し、平均パフォーマンスは20%向上しました。

このテクノロジは一般に十分に実証されているという事実にもかかわらず、さまざまな理由から、Intel は、Pentium 4 に代わる Core 2 ファミリ プロセッサでハイパー スレッディング テクノロジを無効にすることを決定しました。ただし、ハイパー スレッディングは、後に、コア 2 プロセッサで再び使用されるようになりました。 Sandy Bridge および Ivy アーキテクチャ Bridge および Haswell は大幅に再設計されました。

テクノロジーの本質

ハイパー スレッディング テクノロジは Intel プロセッサの重要な機能の 1 つであるため、理解することが重要です。

プロセッサーはこれまでさまざまな成功を収めてきましたが、重大な欠点が 1 つあります。それは、プロセッサーが一度に 1 つの命令しか実行できないことです。 テキストエディタ、ブラウザ、Skypeなどのアプリケーションを同時に起動したとします。 ユーザーの観点から見ると、このソフトウェア環境はマルチタスクであると言えますが、プロセッサの観点から見ると、これは当てはまりません。 プロセッサ コアは引き続き、一定期間ごとに 1 つの命令を実行します。 この場合、プロセッサのタスクは、プロセッサ時間リソースを個々のアプリケーション間で分散することです。 この命令の順次実行は非常に迅速に行われるため、ユーザーはそれに気づきません。 そして、遅延はないようです。

しかし、まだ遅れがあります。 遅延は、各プログラムがプロセッサにデータを供給する方法によって発生します。 各データ ストリームは特定の時間に到着し、プロセッサによって個別に処理される必要があります。 ハイパー スレッディング テクノロジにより、各プロセッサ コアがデータ処理をスケジュールし、2 つのスレッドにリソースを同時に分散することが可能になります。

最新のプロセッサのコアには、いわゆる実行デバイスがいくつかあり、それぞれがデータに対して特定の操作を実行するように設計されていることに注意してください。 この場合、これらの実行デバイスの一部は、1 つのスレッドからのデータの処理中にアイドル状態になる可能性があります。

この状況を理解するには、組立工場でコンベア上で働き、さまざまな種類の部品を加工する労働者に例えることができます。 各作業者には、タスクを実行するために設計された特定のツールが装備されています。 しかし、部品が間違った順序で到着すると、作業を開始するために列に並んで待機する作業者が発生するため、遅延が発生します。 ハイパー スレッディングは、これまでアイドル状態だった作業者が他の作業者に関係なく作業を実行できるようにするために、作業場に敷設された追加のコンベア ベルトにたとえることができます。 ワークショップは依然として 1 つですが、部品はより迅速かつ効率的に処理され、ダウンタイムが減少します。 したがって、ハイパー スレッディングにより、1 つのスレッドからの命令の実行中にアイドル状態になっていたプロセッサ実行ユニットをオンにすることが可能になりました。

ハイパー スレッディングをサポートするデュアルコア プロセッサを搭載したコンピュータの電源を入れ、[パフォーマンス] タブで Windows タスク マネージャを開くとすぐに、そこに 4 つのグラフが表示されます。 ただし、これは実際に 4 つのプロセッサ コアがあることを意味するわけではありません。

これは、Windows が各コアに 2 つの論理プロセッサがあると認識するために発生します。 「論理プロセッサ」という用語は面白く聞こえますが、物理的に存在しないプロセッサを意味します。 Windows はデータのストリームを各論理プロセッサに送信できますが、実際に作業を行うのは 1 つのコアだけです。 したがって、ハイパー スレッディング テクノロジを備えた単一コアは、個別の物理コアとは大きく異なります。

ハイパー スレッディング テクノロジには、次のハードウェアとソフトウェアのサポートが必要です。

  • CPU
  • マザーボードのチップセット
  • オペレーティング·システム

テクノロジーの利点

ここで、次の質問について考えてみましょう。ハイパー スレッディング テクノロジはコンピュータのパフォーマンスをどの程度向上させますか? インターネットサーフィンやタイピングなどの日常的な作業では、テクノロジーの利点はそれほど明らかではありません。 ただし、今日のプロセッサーは非常に強力であるため、日常のタスクでプロセッサーを完全に活用することはほとんどないことに注意してください。 さらに、ソフトウェアの作成方法にも多くのことが依存します。 複数のプログラムを同時に実行している可能性がありますが、負荷グラフを見ると、コアあたり 1 つの論理プロセッサーのみが使用されていることがわかります。 これは、ソフトウェアがコア間のプロセスの分散をサポートしていないために発生します。

ただし、より複雑なタスクの場合は、ハイパー スレッディングの方が便利です。 3D モデリング プログラム、3D ゲーム、音楽またはビデオのエンコード/デコード プログラム、および多くの科学アプリケーションなどのアプリケーションは、マルチスレッドを最大限に活用するように作成されています。 そのため、難易度の高いゲームをプレイしたり、音楽を聴いたり、映画を見たりしながら、ハイパー スレッディング対応コンピュータのパフォーマンスの利点を体験できます。 パフォーマンスの向上は最大 30% に達する可能性がありますが、ハイパー スレッディングがまったくメリットをもたらさない状況もあるかもしれません。 場合によっては、両方のスレッドがすべてのプロセッサー実行ユニットに同じタスクをロードすると、パフォーマンスがわずかに低下する場合もあります。

ハイパー スレッディング パラメータを設定できる BIOS セットアップの対応するオプションの存在に戻ると、ほとんどの場合、この機能を有効にすることが推奨されます。 ただし、コンピュータの実行中にエラーが発生したり、パフォーマンスが予想よりも低いことが判明した場合は、いつでも無効にすることができます。

結論

ハイパースレッディングを使用した場合の性能向上は最大30%であるため、プロセッサコア数を2倍にしたことに相当するとは言えません。 ただし、ハイパー スレッディングは便利なオプションであり、コンピュータの所有者にとって害を及ぼすものではありません。 その利点は、たとえば、マルチメディア ファイルを編集したり、Photoshop や Maya などの専門的なプログラムのワークステーションとしてコンピュータを使用したりする場合に特に顕著です。

以前、Intel プロセッサで使用されている同時マルチスレッディング (SMT) テクノロジについて説明しました。 また、当初はオプションの可能性として Jackson Technology というコード名が付けられていましたが、Intel は昨秋の IDF フォーラムでそのテクノロジーを正式に発表しました。 コードネームの Jackson は、より適切な Hyper-Threading に置き換えられました。 したがって、新しいテクノロジーがどのように機能するかを理解するには、ある程度の初期知識が必要です。 つまり、スレッドとは何か、これらのスレッドがどのように実行されるかを知る必要があります。 なぜアプリケーションは機能するのでしょうか? プロセッサは、どのデータに対してどのような操作を実行する必要があるかをどのようにして知るのでしょうか? この情報はすべて、実行中のアプリケーションのコンパイルされたコードに含まれています。 そして、アプリケーションがユーザーからコマンドやデータを受け取るとすぐに、スレッドがプロセッサーに即座に送信され、その結果、ユーザーの要求に応じて実行する必要がある処理が実行されます。 プロセッサの観点から見ると、スレッドは実行する必要がある命令のセットです。 Quake III Arena で発射物が当たったとき、または Microsoft Word 文書を開いたとき、プロセッサには実行する必要がある特定の命令セットが送信されます。

プロセッサは、これらの命令をどこで取得すればよいかを正確に知っています。 めったに言及されないプログラム カウンター (PC) と呼ばれるレジスタは、この目的のために設計されています。 このレジスタは、次に実行される命令が格納されるメモリ内の場所を指します。 スレッドがプロセッサに送信されると、スレッドのメモリ アドレスがこのプログラム カウンターにロードされるため、プロセッサはどこから実行を開始するかを正確に知ることができます。 各命令の後、このレジスタの値はインクリメントされます。 このプロセス全体は、スレッドが終了するまで実行されます。 スレッドの実行の終了時に、次に実行される命令のアドレスがプログラム カウンタに入力されます。 スレッドは相互に割り込むことができ、プロセッサはプログラム カウンタの値をスタックに保存し、新しい値をカウンタにロードします。 ただし、このプロセスには依然として制限があり、単位時間当たり実行できるスレッドは 1 つだけです。

この問題を解決するよく知られた方法があります。 これは 2 つのプロセッサを使用することで構成されます。1 つのプロセッサが一度に 1 つのスレッドを実行できる場合、2 つのプロセッサは同じ時間単位内にすでに 2 つのスレッドを実行できます。 この方法は理想的ではないことに注意してください。 他にも多くの問題が伴います。 おそらくすでによく知っているものもあるでしょう。 まず、複数のプロセッサは常に 1 つのプロセッサよりも高価になります。 次に、2 つのプロセッサを管理することもそれほど簡単ではありません。 さらに、プロセッサ間のリソースの分割を忘れないでください。 たとえば、AMD 760MP チップセットが導入される前は、マルチプロセッシングをサポートするすべての x86 プラットフォームは、利用可能なすべてのプロセッサ間ですべてのシステム バス帯域幅を共有していました。 しかし、主な欠点は異なります。そのような作業では、アプリケーションとオペレーティング システム自体の両方がマルチプロセッシングをサポートする必要があります。 複数のスレッドの実行をコンピュータ リソース全体に分散する機能は、多くの場合、マルチスレッドと呼ばれます。 同時に、オペレーティング システムはマルチスレッドをサポートする必要があります。 コンピューターのリソースを最大限に活用するには、アプリケーションがマルチスレッドをサポートしている必要もあります。 マルチスレッドの問題を解決する別のアプローチであるインテルの新しいハイパー スレッディング テクノロジを検討する際には、このことを念頭に置いてください。

生産性だけでは決して十分ではない

効率については常に話題になります。 企業環境や重大なプロジェクトだけでなく、日常生活でも同様です。 ホモサピエンスは脳の能力を部分的にしか使っていないと言われています。 同じことが現代のコンピューターのプロセッサーにも当てはまります。

たとえば、Pentium 4 には合計 7 つの実行ユニットがあり、そのうちの 2 つは 1 クロック サイクルあたり 2 つの演算 (マイクロオペレーション) の 2 倍の速度で動作します。 しかし、いずれにせよ、これらすべてのデバイスに命令を入力できるプログラムは見つからないでしょう。 従来のプログラムは、単純な整数の計算と、データのロードと保存といういくつかの操作で済みますが、浮動小数点演算は無視されます。 他のプログラム(Maya など)は主に浮動小数点デバイスに作業をロードします。

状況を説明するために、算術論理ユニット (整数 ALU)、浮動小数点ユニット (FPU)、およびロード/ストア ユニット (メモリへのデータの書き込みと読み取り用) の 3 つの実行ユニットを備えたプロセッサを想像してみましょう。 さらに、プロセッサが 1 クロック サイクルであらゆる操作を実行でき、3 つのデバイスすべてに同時に操作を分散できると仮定します。 次の命令のスレッドが実行のためにこのプロセッサに送信されると想像してみましょう。

以下の図は、アクチュエータの負荷レベルを示しています (灰色はアイドル状態のデバイスを示し、青色は動作中のデバイスを示します)。

したがって、各クロック サイクルですべてのアクチュエータの 33% だけが使用されていることがわかります。 今回は、FPU は完全に未使用のままです。 Intel によると、ほとんどの IA-32 x86 プログラムは、Pentium 4 プロセッサの実行ユニットの 35% しか使用していません。

別のスレッドを想像して、実行のためにプロセッサに送信してみましょう。 今回はデータのロード、データの追加、保存の操作で構成されます。 これらは次の順序で実行されます。

繰り返しになりますが、アクチュエーターにかかる負荷はわずか 33% です。

この状況から抜け出す良い方法は、命令レベル並列処理 (ILP) です。 この場合、プロセッサは一度に複数の並列実行ユニットを満たすことができるため、いくつかの命令が同時に実行されます。 残念ながら、ほとんどの x86 プログラムは ILP に適切に適応していません。 したがって、生産性を向上させる別の方法を見つける必要があります。 したがって、たとえば、システムが 2 つのプロセッサを同時に使用する場合、2 つのスレッドが同時に実行される可能性があります。 このソリューションはスレッドレベル並列処理 (TLP) と呼ばれます。 ちなみに、このソリューションはかなり高価です。

最新の x86 プロセッサのパフォーマンスを向上させる他の方法はありますか?

ハイパースレッディング

アクチュエータが十分に活用されていないという問題には、いくつかの理由があります。 一般に、プロセッサが必要な速度でデータを受信できない場合 (システム バスとメモリ バスの帯域幅が不十分なためにこれが発生します)、アクチュエータは効率的に使用されません。 さらに、もう 1 つの理由があります。それは、ほとんどのコマンド スレッドで命令レベルでの並列処理が欠如していることです。

現在、ほとんどのメーカーはクロック速度とキャッシュ サイズを増やすことでプロセッサの速度を向上させています。 もちろん、この方法でパフォーマンスを向上させることはできますが、それでもプロセッサーの潜在能力を最大限に活用することはできません。 複数のスレッドを同時に実行できれば、プロセッサをより効率的に使用できるようになります。 これはまさにハイパー スレッディング テクノロジの本質です。

ハイパー スレッディングは、以前は x86 の世界の外に存在していたテクノロジ、同時マルチ スレッディング (SMT) の名前です。 このテクノロジーの背後にある考え方はシンプルです。 1 つの物理プロセッサはオペレーティング システムには 2 つの論理プロセッサとして認識され、オペレーティング システムは 1 つの SMT プロセッサと 2 つの通常のプロセッサの違いを認識しません。 どちらの場合も、オペレーティング システムはデュアル プロセッサ システムであるかのようにスレッドをルーティングします。 さらに、すべての問題はハードウェア レベルで解決されます。

ハイパー スレッディングを備えたプロセッサでは、各論理プロセッサに独自のレジスタ セット (個別のプログラム カウンタを含む) があり、テクノロジをシンプルに保つために、2 つのスレッドでのフェッチ/デコード命令の同時実行は実装されていません。 つまり、そのような命令は 1 つずつ実行されます。 通常のコマンドのみが並列実行されます。

このテクノロジーは昨年秋のインテル開発者フォーラムで正式に発表されました。 このテクノロジーは Xeon プロセッサ上でデモンストレーションされ、レンダリングは Maya を使用して実行されました。 このテストでは、ハイパースレッディングを備えた Xeon は標準の Xeon よりも 30% 優れたパフォーマンスを示しました。 素晴らしいパフォーマンスの向上ですが、最も興味深いのは、このテクノロジーが既に Pentium 4 および Xeon コアに存在しており、それがオフになっているだけであるということです。

このテクノロジーはまだリリースされていませんが、0.13 ミクロン Xeon を購入し、このプロセッサを更新された BIOS を備えたボードにインストールした人は、おそらく BIOS にハイパー スレッディングを有効/無効にするオプションがあることに驚いたでしょう。

それまでの間、Intel はハイパー スレッディング オプションをデフォルトで無効のままにする予定です。 ただし、これを有効にするには、BIOS を更新するだけで済みます。 これはすべてワークステーションとサーバーに当てはまりますが、パーソナル コンピュータ市場に関しては、同社は近い将来このテクノロジーに関する計画はありません。 可能ではありますが、マザーボード メーカーは特別な BIOS を使用してハイパー スレッディングを有効にする機能を提供します。

非常に興味深い疑問が残ります。なぜインテルはこのオプションを無効のままにしたいのでしょうか?

テクノロジーをさらに深く掘り下げる

前の例の 2 つのスレッドを覚えていますか? 今回は、プロセッサにハイパースレッディングが搭載されていると仮定します。 これら 2 つのスレッドを同時に実行しようとすると何が起こるかを見てみましょう。

前と同様に、青い四角形は最初のスレッドの命令の実行を示し、緑色の四角形は 2 番目のスレッドの命令の実行を示します。 灰色の長方形は未使用の実行デバイスを示し、赤色の長方形は、異なるスレッドからの 2 つの異なる命令が同じデバイスに到着したときの競合を示します。

それで、何が見えるでしょうか? スレッド レベルでの並列処理が失敗し、実行デバイスの使用効率がさらに低下し始めました。 プロセッサはスレッドを並列実行するのではなく、ハイパースレッディングを使用しない場合よりもゆっくりとスレッドを実行します。 理由はとても簡単です。 非常によく似た 2 つのスレッドを同時に実行しようとしました。 結局のところ、どちらもロード/ストア操作と加算操作で構成されています。 「整数」アプリケーションと浮動小数点アプリケーションを並行して実行できれば、はるかに良い状況になるでしょう。 ご覧のとおり、ハイパー スレッディングの有効性は、PC の負荷の種類に大きく依存します。

現在、ほとんどの PC ユーザーは、ほぼこの例で説明したとおりにコンピュータを使用しています。 プロセッサは、非常によく似た多くの操作を実行します。 残念ながら、同様の業務を行う場合には、さらなる管理上の困難が生じます。 必要なタイプのアクチュエータが残っていない場合があり、運が良ければ通常の 2 倍の命令が存在します。 ほとんどの場合、家庭用コンピュータのプロセッサがハイパー スレッディング テクノロジを使用した場合、パフォーマンスは向上せず、おそらく 0 ~ 10% の低下さえあります。

ただし、ワークステーションでは、ハイパー スレッディングによって生産性が向上する可能性がさらに高くなります。 しかし一方で、それはすべてコンピュータの特定の用途に依存します。 ワークステーションとは、3D グラフィックスを処理するハイエンド コンピューター、または単に高負荷のコンピューターを意味します。

ハイパー スレッディングの使用によるパフォーマンスの最大の向上は、サーバー アプリケーションで観察されます。 これは主に、プロセッサに送信されるさまざまな操作が原因です。 トランザクションを使用するデータベース サーバーは、ハイパー スレッディング オプションを有効にすると 20 ~ 30% 高速に実行できます。 Web サーバーやその他の領域では、わずかに小さいパフォーマンスの向上が観察されます。

ハイパースレッディングによる最大効率

Intel は、自社のサーバー プロセッサ シリーズのためにのみハイパー スレッディングを開発したと思いますか? もちろん違います。 そうであれば、他のプロセッサのチップスペースを無駄にすることはないでしょう。 実際、Pentium 4 および Xeon で使用されている NetBurst アーキテクチャは、同時マルチスレッドをサポートするカーネルに最適です。 もう一度プロセッサを想像してみましょう。 今回は、もう 1 つのアクチュエータ、つまり 2 番目の整数デバイスが含まれます。 両方のデバイスでスレッドが実行された場合に何が起こるかを見てみましょう。

2 番目の整数デバイスを使用すると、最後の操作で唯一の競合が発生しました。 私たちの理論上のプロセッサは、Pentium 4 にある程度似ています。これには、3 つもの整数デバイス (2 つの ALU とローテーション シフト用の低速整数デバイス) が 1 つあります。 さらに重要なのは、どちらの Pentium 4 整数デバイスも 2 倍の速度で実行でき、クロック サイクルごとに 2 つのマイクロオペレーションを実行できることです。 これは、これら 2 つの Pentium 4/Xeon 整数デバイスのいずれかが、異なるスレッドから 1 クロック サイクルでこれら 2 つの加算演算を実行できることを意味します。

しかし、これでは問題は解決しません。 ハイパースレッディングのパフォーマンスを向上させるために、プロセッサに実行ユニットを単に追加するだけではほとんど意味がありません。 シリコンのスペースを考えると、これは非常に高価になります。 代わりにインテルは、開発者がハイパースレッディング用にプログラムを最適化することを提案しました。

HALT 命令を使用すると、論理プロセッサの 1 つを一時停止できるため、ハイパー スレッディングの恩恵を受けないアプリケーションのパフォーマンスが向上します。 そのため、アプリケーションの実行速度が低下することはなく、論理プロセッサの 1 つが停止され、システムは 1 つの論理プロセッサ上で実行され、パフォーマンスはシングルプロセッサ コンピュータと同じになります。 その後、アプリケーションがパフォーマンスにおいてハイパー スレッディングの恩恵を受けると判断すると、2 番目の論理プロセッサは単純に作業を再開します。

Intel Web サイトには、ハイパー スレッディングを最大限に活用するためのプログラミング方法を正確に説明したプレゼンテーションがあります。

結論

最新のすべての Pentium 4/Xeon のコアにハイパー スレッディングが搭載されているという噂を聞いたとき、私たちは皆非常に興奮しましたが、それでも、あらゆる場面で無料のパフォーマンスが得られるわけではありません。 理由は明らかですが、家庭用コンピューターを含むすべてのプラットフォームでハイパー スレッディングが実行されるようになるまで、このテクノロジーには長い道のりがあります。 そして、開発者のサポートがあれば、このテクノロジーは、Pentium 4、Xeon、および Intel の次世代プロセッサーの強力な味方となることは間違いありません。

現在の制限と利用可能なパッケージング技術を考慮すると、ハイパースレッディングは、たとえば AMD の SledgeHammer アプローチよりも消費者市場にとって賢明な選択であるように思えます。これらのプロセッサは 2 つのコアを使用します。 また、バンプレス ビルドアップ レイヤーのようなパッケージング テクノロジが成熟するまでは、マルチコア プロセッサの開発コストが法外に高くなる可能性があります。

過去数年間で AMD と Intel がどのように変わったかに注目するのは興味深いことです。 結局のところ、AMDはかつてIntelプロセッサを実質的にコピーしたことがありました。 現在、企業はサーバーやワークステーション用の将来のプロセッサに対して、根本的に異なるアプローチを開発しています。 実際、AMD は非常に長い道のりを歩んできました。 また、Sledge Hammer プロセッサが実際に 2 つのコアを使用する場合、そのようなソリューションはハイパー スレッディングよりもパフォーマンスの効率が高くなります。 実際、この場合、すべてのアクチュエータの数が 2 倍になることに加えて、上で説明した問題も解消されます。

ハイパー スレッディングはしばらくは主流の PC 市場には登場しないでしょうが、開発者のサポートが充実していれば、サーバー レベルから主流の PC にまで浸透する次のテクノロジになる可能性があります。

ハイパー スレッディング テクノロジ (HT、ハイパースレッディング) は、15 年前の 2002 年に Pentium 4 および Xeon プロセッサに初めて登場し、それ以来 Intel プロセッサ (Core i ライン、一部の Atom、そして最近では Pentium にも) に登場しました。その後姿を消しました (Core 2 Duo および Quad ラインではサポートされていませんでした)。 そしてこの間に、それは神話的な特性を獲得しました。彼らは、その存在によってプロセッサーのパフォーマンスがほぼ 2 倍になり、弱い i3 が強力な i5 に変わると言われています。 同時に、HT はよくあるマーケティング戦略であり、ほとんど役に立たないと言う人もいます。 真実は、いつものように中間です。いくつかの場所では、ある程度の意味はありますが、2 倍の増加を期待するべきではありません。

テクノロジーの技術的説明

Intel Web サイトに記載されている定義から始めましょう。

インテル® ハイパー・スレッディング・テクノロジー (インテル® HT) は、各コアで複数のスレッドを実行できるようにすることで、プロセッサー・リソースのより効率的な使用を可能にします。 パフォーマンスの面では、このテクノロジーによりプロセッサのスループットが向上し、マルチスレッド アプリケーションの全体的なパフォーマンスが向上します。

一般に、明確なことは何もないことは明らかです。一般的な表現だけですが、テクノロジーについて簡単に説明しています。HT を使用すると、1 つの物理コアが複数 (通常は 2 つ) の論理スレッドを同時に処理できます。 しかし、どうやって? ハイパースレッディングをサポートするプロセッサ:

  • 複数の実行中のスレッドに関する情報を一度に保存できます。
  • 1 セットのレジスタ (つまり、プロセッサ内の高速メモリのブロック) と 1 つの割り込みコントローラ (つまり、即座の対応が必要なイベントの発生に対する要求を順次処理する機能を担う内蔵プロセッサ ユニット) が含まれています。論理 CPU ごとに異なるデバイス)。
簡単な例を見てみましょう。

プロセッサーに 2 つのタスクがあるとします。 プロセッサーにコアが 1 つある場合はそれらを順次に実行し、2 つのコアがある場合は 2 つのコアで並行して実行します。両方のタスクの実行時間は、より重いタスクに費やされた時間と等しくなります。 しかし、プロセッサがシングルコアであってもハイパースレッディングをサポートしている場合はどうなるでしょうか? 上の図でわかるように、1 つのタスクを実行するとき、プロセッサは 100% ビジーではありません。一部のプロセッサ ブロックは単にこのタスクでは必要ありません。どこかで分岐予測モジュールがエラーを起こしています (分岐予測モジュールがエラーを起こすかどうかを予測するために必要です)。条件分岐がプログラム内で実行されます)、どこかでキャッシュ アクセス エラーが発生しています。一般に、タスクの実行時にプロセッサが 70% を超えるビジー状態になることはほとんどありません。 そして、HT テクノロジは、空いているプロセッサ ブロックに 2 番目のタスクを「押し込む」だけで、2 つのタスクが 1 つのコアで同時に処理されることがわかります。 ただし、明らかな理由でパフォーマンスが 2 倍になることはありません。非常に多くの場合、2 つのタスクがプロセッサー内に同じコンピューティング ユニットを必要とすることが判明し、その後、単純なタスクが表示されます。つまり、1 つのタスクが処理されている間に、2 番目のタスクが単純に実行されるということです。この時点で停止します (青い四角 - 最初のタスク、緑 - 2 番目、赤 - プロセッサ内の同じブロックにアクセスしているタスク)。

その結果、HT を備えたプロセッサーが 2 つのタスクに費やす時間は、最も重いタスクの計算に必要な時間よりも長くなりますが、両方のタスクを順番に評価するのに必要な時間よりは短いことがわかります。

テクノロジーの長所と短所

HT サポートのあるプロセッサ ダイは、HT のないプロセッサ ダイよりも物理的に平均 5% 大きく (これは、追加のレジスタ ブロックと割り込みコントローラが占める量です)、HT サポートにより、プロセッサが 90 ~ 95% 向上した場合、HT なしの 70 % と比較すると、増加はせいぜい 20 ~ 30% であることがわかります。この数字は非常に大きいです。

ただし、すべてがそれほど良いわけではありません。HT によるパフォーマンスの向上がまったくないこともあれば、HT によってプロセッサのパフォーマンスが悪化することさえあります。 これはさまざまな理由で発生します。

  • キャッシュメモリが不足しています。 たとえば、最新のクアッドコア i5 には 6 MB (コアあたり 1.5 MB) の L3 キャッシュが搭載されています。 HT を搭載したクアッドコア i7 では、キャッシュはすでに 8 MB ですが、論理コアが 8 つあるため、コアごとに得られるのは 1 MB のみです。計算中に、一部のプログラムにはこのボリュームが十分にない可能性があり、キャッシュの低下につながります。パフォーマンス。
  • ソフトウェアの最適化が欠如している。 最も基本的な問題は、プログラムが論理コアを物理コアとみなしていることです。そのため、1 つのコアでタスクを並列実行すると、タスクが同じ計算ユニットにアクセスするために遅延が発生することが多く、最終的には HT によるパフォーマンスの向上がゼロになってしまいます。
  • データの依存性。 これは前の点から続きます。あるタスクを完了するには別のタスクの結果が必要ですが、それはまだ完了していません。 そして再びダウンタイムが発生し、CPU 負荷が軽減され、HT によるわずかな増加が発生します。
ハイパースレッディングを使用できるプログラム

HT 計算では、これは天からのマナであるため、それらはたくさんあります。熱放散は実際には増加せず、プロセッサーもそれほど大きくならず、適切な最適化を行うことで最大 30% の増加が得られます。 したがって、アーカイバ (WinRar)、2D/3D モデリング用プログラム (3ds Max、Maya)、写真およびビデオ処理用プログラム (Sony Vegas、Photoshop、コーレルドロー) 。

ハイパースレッディングで適切に動作しないプログラム

従来、これが大部分のゲームであり、通常は適切に並列化することが難しいため、多くの場合、ゲームには高周波数の 4 つの物理コア (i5 K シリーズ) で十分であり、i7 の 8 つの論理コアを使用して並列化すると、不可能な任務。 ただし、バックグラウンド プロセスが存在することも考慮する価値があります。プロセッサが HT をサポートしていない場合、その処理は物理コアに委ねられ、ゲームの速度が低下する可能性があります。 ここでは、HT を搭載した i7 が勝ちます。伝統的にすべてのバックグラウンド タスクの優先順位が低いため、ゲームの 1 つの物理コアとバックグラウンド タスクで同時に実行すると、ゲームの優先順位が高くなり、バックグラウンド タスクがコアの「気を散らす」ことはありません。ゲームで忙しい - だからこそ、ゲームのストリーミングや録画には、ハイパースレッディングを備えた i7 を使用することをお勧めします。

結果

おそらく、ここで残る疑問は 1 つだけです。HT を搭載したプロセッサを採用するのは意味があるのでしょうか? 5 つのプログラムを同時に開いておき、同時にゲームをプレイしたい場合、または写真処理、ビデオ、またはモデリングに従事している場合は、もちろん、受講する価値があります。 また、重いプログラムを起動する前に他のプログラムをすべて閉じることに慣れていて、処理やモデリングには手を出さないのであれば、HT を搭載したプロセッサは役に立ちません。

2002 年 2 月に遡ると、Intel 独自のテクノロジであるハイパー スレッディングがデビューしました。 これは何ですか?なぜ今日それがほぼ普遍的なものになったのでしょうか? この質問に対する答えなどについては、この資料で説明します。

HT技術の出現の歴史

論理マルチスレッドをサポートした最初のデスクトップ プロセッサは、第 4 世代 Pentium でした。 ハイパー スレッディングは、この場合、1 つの物理コアで 2 つのデータ ストリームを同時に処理できるようにするテクノロジーです。 さらに、このチップは PGA478 プロセッサ ソケットに取り付けられ、32 ビット コンピューティング モードで動作し、クロック周波数は 3.06 GHz でした。 これまでは、XEON シリーズのサーバー プロセッサ デバイスにのみ搭載されていました。

このニッチ市場で成功した結果を達成した後、Intel は HT をデスクトップセグメントに拡張することを決定しました。 その後、このようなプロセッサのファミリー全体が PGA478 内でリリースされました。 LGA775 ソケットが登場した後、NT は一時的に忘れられました。 しかし、2009年にLGA1156の販売が開始されたことで第二の風が吹きました。 それ以来、これは、ウルトラ パフォーマンス セグメントと低価格コンピュータ システムの両方において、インテルのプロセッサ ソリューションの必須の属性となっています。

この技術のコンセプト

インテル ハイパー スレッディング テクノロジの本質は、開発者がマイクロプロセッサ デバイスのレイアウトを最小限に変更することで、システムおよびソフトウェア レベルでコードが 1 つの物理コア上の 2 つのスレッドで処理されるようにすることです。 コンピューティング モジュールのすべての要素は変更されておらず、特殊レジスタと再設計された割り込みコントローラのみが追加されています。

何らかの理由で物理コンピューティング モジュールがアイドル状態になり始めると、2 番目のプログラム スレッドが起動され、最初のプログラム スレッドは必要なデータまたは情報の受信を待ちます。 つまり、以前はチップのコンピューティング部分の動作におけるダウンタイムが頻繁に発生していた場合、ハイパー スレッディングによってこの可能性がほぼ完全に排除されます。 この技術がどのようなものかを以下で見てみましょう。

ハードウェアレベルで

ハイパースレッディングを使用する場合、ハードウェアに対する要件が増加します。 マザーボード、BIOS、プロセッサーがそれをサポートしている必要があります。 少なくとも PGA478 プロセッサ ソケット内では、そのような互換性には特別な注意を払う必要がありました。 この場合、すべてのシステム ロジック セットが、プロセッサ デバイスと同様に NT の使用を指向しているわけではありません。 また、マザーボードの命名法にこのような切望された略語が存在したとしても、BIOS を更新する必要があるため、チップが正しく初期化されたことを意味するものではありません。

この場合の状況は、LGA1156 以降劇的に変化しました。 このコンピューティング プラットフォームは、もともとハイパー スレッディングを使用するために設計されました。 したがって、この場合、ユーザーは後者の使用に関して重大な問題に遭遇することはありませんでした。 これは、LGA1155、LGA1151、LGA1150 などの後続のプロセッサ ソケットにも当てはまります。

高性能ソケット LGA1366、LGA2011、および LGA2011-v3 も、HT の使用に関して同様の問題が発生しないことを誇る可能性があります。 おまけに、Intel の直接の競争相手である AMD は、AM4 用の最新世代のプロセッサに非常によく似た論理マルチタスク テクノロジである SMT を実装しました。 ほぼ同じ概念が使用されています。 唯一の違いは名前です。

ソフトウェア側の主要コンポーネント

NT がハードウェア リソースによって完全にサポートされている場合でも、ソフトウェア レベルで常に正常に動作するとは限らないことに注意してください。 まず、オペレーティング システムは複数のコンピューティング コアを同時に動作できなければなりません。 現在の古いバージョンの MS-DOS または Windows 98 システム ソフトウェアには、この機能がありません。 しかし、Windows 10 の場合は問題は発生せず、このオペレーティング システムは最初からパソコンのそのようなハードウェア リソース向けに設計されています。

次に、Windows でハイパー スレッディングを有効にする方法を見てみましょう。これを行うには、必要なすべての制御アプリケーション ソフトウェアがコンピュータにインストールされている必要があります。 通常、これはマザーボード CD に収録されている特別なユーティリティです。 BIOS の値をリアルタイムで変更できる特別なタブがあります。 これにより、オペレーティング システムを再起動しなくても、ハイパー スレッディング オプションが有効の位置になり、追加の論理スレッドがアクティブ化されます。

テクノロジーを実現する

多くの初心者ユーザーは、新しいコンピュータを使用する初期段階で、ハイパー スレッディングに関する 1 つの重要な質問をすることがよくあります。それは、ハイパー スレッディングを有効にするにはどうすればよいですか?ということです。 この問題を解決するには 2 つの方法が考えられます。 そのうちの 1 つは BIOS を使用することです。 この場合、次のことを行う必要があります。

  • PC の電源を入れると、BIOS に入る手順が初期化されます。 これを行うには、テスト画面が表示されたときに DEL ボタンを押し続けるだけです (場合によっては F2 を押し続ける必要があります)。
  • ブルー スクリーンが表示されたら、ナビゲーション キーを使用して [ADVANCED] タブに移動します。
  • 次に、その上に Hyper-Threading 項目が見つかります。
  • その反対側で、値を有効に設定する必要があります。

この方法の主な欠点は、この操作を実行するためにパーソナル コンピュータを再起動する必要があることです。 実際の代替方法は、マザーボード構成ユーティリティを使用することです。 この方法については、前のセクションで詳しく説明しました。 この場合、BIOS に入る必要はまったくありません。

NTの無効化

NT をオンにする方法と同様に、この機能を無効にする方法は 2 つあります。 そのうちの 1 つは、コンピュータ システムの初期化中にのみ実行できます。 これは、実際にはまったく便利ではありません。 したがって、専門家は、マザーボード上のコンピューター ユーティリティの使用に基づく 2 番目の方法を選択します。 最初のケースでは、次の操作が実行されます。

  1. 電子コンピュータをロードするときは、前述の方法に従って基本的な入出力システム (その 2 番目の名前は BIOS) に入ります。
  2. カーソル キーを使用して、[詳細] メニュー項目に移動します。
  3. 次に、[ハイパー スレッディング] メニュー項目を見つける必要があります (一部のマザーボード モデルでは、HT として指定されている場合があります)。 その反対側で、PG DN および PG UP ボタンを使用して、値を Disabled に設定します。
  4. F10 を使用して、破棄された変更を保存します。
  5. BIOS を終了し、パソコンを再起動します。

2 番目のケースでは、マザーボード診断ユーティリティを使用する場合、PC を再起動する必要はありません。 これがその主な利点です。 この場合のアルゴリズムは同じです。 違いは、マザーボードの製造元から事前にインストールされている特別なユーティリティを使用することです。

以前、ハイパー スレッディングを無効にする 2 つの主な方法について説明しました。 2 番目の方法は名目上、より複雑であると考えられていますが、コンピューターを再起動する必要がないため、より実用的です。

NTをサポートするプロセッサモデル

前述のように、当初、ハイパー スレッディングのサポートは Pentium 4 シリーズ プロセッサ デバイスおよび PGA478 バージョンにのみ実装されていました。 しかし、すでに LGA1156 以降のコンピューティング プラットフォームの枠組み内で、この資料で説明されているテクノロジはほぼすべての可能なチップ モデルで使用されています。 そのおかげで、Celeron プロセッサはシングルコアからデュアルスレッド ソリューションに変わりました。 次に、Penrium と i3 は、その助けを借りてすでに 4 つのコード ストリームを処理できます。 i7 シリーズの主力ソリューションは、8 つの論理プロセッサを同時に動作させることができます。

明確にするために、Intel の現在のコンピューティング プラットフォーム (LGA1151) 内での NT の使用を示します。

  • Celeron シリーズの CPU はこのテクノロジーをサポートしておらず、コンピューティング ユニットは 2 つしかありません。
  • Pentium ラインチップは 2 コアと 4 スレッドを備えています。 結果として、この場合の NT は完全にサポートされます。
  • Core i3 モデル範囲のより強力なプロセッサ デバイスも同様のレイアウトを持ち、2 つの物理モジュールが 4 つのスレッドで動作できます。
  • ほとんどの低価格 Celeron チップと同様、Core i5 には HT サポートが装備されていません。
  • フラッグシップ i7 ソリューションも HT をサポートします。 この場合のみ、2 つの実際のコアではなく、すでに 4 つのコード処理ユニットが存在します。 これらはすでに 8 スレッドで動作可能です。

ハイパースレッディング - このテクノロジーとは何ですか?またその主な目的は何ですか? これは論理マルチタスクであり、最小限のハードウェア調整によって、コンピュータ システム全体のパフォーマンスを向上させることができます。

このテクノロジーはどのような場合に最適に使用されますか?

場合によっては、前述したように、NT によってプロセッサがプログラム コードを処理する速度が向上します。 ハイパー スレッディングは、ホット ソフトウェアでのみ効果的に機能します。 典型的な例としては、ビデオおよびオーディオ エンコーダ、プロ仕様のグラフィック パッケージ、アーカイバなどがあります。 また、このようなテクノロジーの存在により、サーバー システムのパフォーマンスが大幅に向上する可能性があります。 しかし、プログラム コードをシングル スレッドで実装すると、ハイパー スレッディングの存在は平準化されます。つまり、1 つのコアで 1 つのタスクを解決する通常のプロセッサが得られます。

長所と短所

Intel ハイパースレッディング テクノロジには特定の欠点があります。 1 つ目は、CPU のコストの増加です。 しかし、高速化とシリコン チップ レイアウトの改善により、いずれにしても CPU の価格は上昇します。 また、プロセッサデバイスの半導体ベースの面積の増加は、消費電力と温度の増加につながります。 この場合の違いはわずかで、5% を超えることはありませんが、依然として存在します。 この場合、他に重大な欠点はありません。

次にメリットについてです。 Intel 独自の NT テクノロジはパフォーマンスやパフォーマンスに影響を与えません。つまり、そのようなコンピュータは特定のしきい値を下回ることができません。 ソフトウェアが並列コンピューティングを完全にサポートしていれば、速度と、もちろん生産性がある程度向上します。

テストによると、場合によっては増加が 20% に達する可能性があります。 この場合に最も最適化されたソフトウェアは、さまざまなマルチメディア コンテンツのトランスコーダ、アーカイバ、およびグラフィック パッケージです。 しかし、ゲームに関してはすべてがそれほど良いわけではありません。 さらに、これらは 4 スレッドで動作することができるため、この場合、フラッグシップ チップは中級レベルのプロセッサ ソリューションを上回るパフォーマンスを発揮できません。

AMD の最新の代替品

現在、この種のテクノロジはハイパー スレッディング テクノロジだけではありません。 彼女には本当の選択肢がある。 AM4 プラットフォームのリリースにより、AMD は SMT という形でそれにふさわしい競合相手を提供しました。 ハードウェア レベルでは、これらは同一のソリューションです。 Intel の主力チップだけが 8 スレッドを処理でき、主要な AMD チップは 16 スレッドを処理できます。この状況だけでも、2 番目のソリューションがより有望であることがわかります。

したがって、Intelは製品計画を緊急に調整し、AMDの新参者と競合できるまったく新しいプロセッサソリューションを提供する必要に迫られている。 今日だけ、それらはまだ再配置されていません。 したがって、手頃な価格のコンピューター プラットフォームが必要な場合は、Intel の LGA1151 を選択することをお勧めします。 パフォーマンスの向上が必要な場合は、AMD の AM4 をお勧めします。

トピックの続き:
その他

最近では、たとえばコンピュータからオシロスコープを作成する代わりに、単純にデジタル USB オシロスコープを購入することを好む人が多くいます。 しかし、歩いた後は…