デュアルコアCPUがクアッドコアCPUとして認識されるのはなぜですか?


52

私のプロセッサはIntel Core i3-380mです。ご覧のとおり、2コアと4スレッドです。

ただし、Ubuntu 11.04とWindows 7はどちらもクアッドコアCPUだと考えているようです。

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

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

どうしてこれなの?コアごとに2つのスレッドがあり、CPUを4つの処理ユニットに分割しているためですか?

回答:


43

前述のように、コアあたり2スレッドのデュアルコアシステムがあります。

これはIntelによってハイパースレッディングとして販売されており、さまざまなメーカーによって長年にわたってさまざまな方法で行われてきました。

最も単純な形式で説明すると、各CPUコアは「コア」と、各スレッドの状態とプロセス情報を保持するコア周辺のさまざまなアーキテクチャで構成されます。シングルスレッドコアは、一度に1スレッド分の状態情報を保持するアーキテクチャを備えています。ハイパースレッドコアは、2つの異なる状態情報セットを保持し、コアの異なる部分を必要とする限り、2つの独立したプロセスを同時に実行できます(これは、コアが複数の異なるタイプの処理ユニットの複数のユニットで構成されているために発生する可能性があります。

システムに対するCPUの認識方法を簡素化するため、各ハイパースレッドは個別のCPUとして認識されるため、デュアルコア、コアあたり2スレッドのプロセッサはクアッドコアプロセッサとして表示されます。

オペレーティングシステムでコアパーキング(新しいIntelプロセッサの機能)を使用して、オペレーティングシステムがハイパースレッドコアの半分を中断できるようにすることもできます。コアが2つのスレッド間でキャッシュを共有しなくなったために増加し、オンコアキャッシュを単一のスレッドに完全に割り当てることができるようになりました。


説明ありがとう。それで、ここで、スレッドはコアに対するものであり、コアはプロセッサに対するものであると言えますか?
seriousdev

2
ある意味、はい。OSはプロセッサを認識し、そのプロセッサ上にあるコアの数と、各コアがサポートするスレッドの数を認識します。これにより、現在のCPU使用量は「コアごと」ではなく「スレッドごと」になります。そうではありません、非常に単純な(各スレッドは、実際に本格的なCPUコアなどの非ハイパースレッディング意識OSに表示されないように)それはそれの一般的な考えです。
木梅

@Mokubaiコアパーキングリンクが機能しません。
ビスワプリヨ

49

理由は、プロセッサがサポートするハイパースレッディングです。ハイパースレッディングは、追加のプロセッサに相当するものではありませんが、マルチスレッドアプリケーションのパフォーマンスを実際に向上させることができます。物理的に存在する各プロセッサコアについて、オペレーティングシステムは2つの仮想プロセッサに対応し、可能な場合はそれらの間でワークロードを共有します。


7
これは物理コアと論理コアとして知られていますか?
-xdumaine

11
はい、物理的なコアは-まあ...物理的です。あなたはそれに触れることができます。ハイパースレッドコアは本物ではないため、論理的です。また、仮想化を通じて物理コアを論理コアに分割することもできます。
ケルタリ

3
@Keltariは、実際には物理的な部分があります...ハイパースレッディングは、CPUコアのハードウェアコンポーネントです(ハードウェアレベルでのみ無効にできます)。詳細については、このIntelホワイトペーパーを参照してください。基本的に、2つの物理実行ユニット間でコアのリソースを共有します。技術的には、OSから見たハイパースレッドコアの両方のコアは「論理的」であり、物理的でも論理的でもありません。
ブレークスルー

1
本当、ハイパースレッディングはプロセッサの物理的な部分ですが、物理的なコアではありません。
ケルタリ

1
HTを考える最良の方法は、別のコアよりも多くのリソースを兄弟と共有する「コアアンドハーフ」です。ただし、「独自に」スレッドを実行することができ、OSはスレッドをスレッド実行ユニット(コアに関連付けられている)として扱います。
古典的な

12

状況は、1クロックサイクルあたり1 CPU命令の時代よりもはるかに複雑です。

現在、多数のステップで構成される各命令のパイプラインがあります。私は41回も聞いたことがありますが、それは少し前のことであり、現在のCPUパイプラインがどのように見えるのか分かりません。パイプラインが十分に長い場合、最後の命令が終了する前に、場合によっては同じクロックサイクルで、新しい命令をパイプラインで開始できるため、シングルコアが効果的に2つのことを同時に行うことができます。

ただし、ここにはトリックがあります。これを使用して、特定のプログラムからの命令をプロセッサが噛む速度を上げることはできません。関連する正確性の問題があります。次の命令は、前の命令の未定の結果に依存する可能性があります。長いパイプラインを安全に利用するために、チップはオペレーティングシステムスケジューラに2つの別個のプロセッサコアを提供し、同じ「コア」への2つの命令が同時にパイプラインにないように各コアに代替命令を送信します。このようにして、同時に実行される命令が互いに干渉しないことを確認できます。これはハイパースレッディングと呼ばれます。

ここで、ハイパースレッディングはCPUから取得する作業量を大幅に増加させることができますが、物理コアをそれほど多く持っていないことに注意してください。ワークロードに応じて、15%程度の改善または40%の改善を意味する場合があります。状況によっては、この機能を無効にして、残りのコアがそのコアのL1 / L2キャッシュに完全に排他的にアクセスできるようにすることもできます(これは専用データベースサーバーで行われることがあります)。

チップが4つのスレッドを備えた2つのコアを持っていると宣伝する場合、それはハイパースレッディングをサポートするデュアルコアプロセッサであることを意味します。


2

見てください、このインテルのページでは -それは、ハイパースレッディングがあなたの作業をスピードアップする方法を示すアニメーションがたくさんあります。

これUtilization of Processor Resourcesは最高のアニメーションです。それを見て、「進む」ボタンをクリックしてください。


1

どうしてこれなの?コアごとに2つのスレッドがあり、CPUを4つの処理ユニットに分割しているためですか?

簡単に言えば、答えはイエスです。CPUの各コアは2つの独立したスレッドをサポートできるため、合計4つです。しかし、それはクアッドコアシングルスレッドCPUと同じパフォーマンスを持っているという意味ではありません。実際には、デュアルコアのダブルスレッドCPUのパフォーマンスは、クアッドコアのシングルスレッドCPUのパフォーマンスよりも低くなります。AMD Phenom X4のように。


なぜなのかご存知ですか?
seriousdev

1
その理由は、ダブルスレッドコアではハードウェアリソース(リオーダーバッファーなど)が2つのスレッド間で共有されるのに対し、シングルスレッドCPUではすべてのリソースが1つのコア専用であるためです。マルチスレッドコアを使用すると、ハードウェアの使用率とスループットが向上しますが、待機時間は長くなります。多くのトレードオフが関係しています。したがって、ここでは「パフォーマンス」という言葉は本当にあいまいです。一般の人々にとって、それは単一スレッドのレイテンシーを意味します。
-aminfar
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.