私のプロセッサは Intel Core i3-380m です。ご覧のとおり、コアは2つ、スレッドは4つです。
ただし、Ubuntu 11.04とWindows 7はどちらも、クアッドコアCPUだと思っているようです。
どうしてこれなの?コアごとに2つのスレッドがあり、CPUを4つの処理ユニットに分割しているためですか?
前述のように、コアあたり2スレッドのデュアルコアシステムがあります。
これはIntelによって hyperthreading として販売されており、長年にわたってさまざまなメーカーによってさまざまな方法で行われてきました。
最も簡単な形で説明すると、各CPUコアは「コア」と、各スレッドの状態およびプロセス情報を保持するそのコアの周りのさまざまなアーキテクチャで構成されます。シングルスレッドコアは、一度に1スレッド分の状態情報を保持するアーキテクチャを備えています。ハイパースレッドコアは、2つの異なる状態情報のセットを保持するため、コアの異なる部分を必要とする限り、2つの別個のプロセスを同時に実行できます(これは、コアが複数の異なるタイプの処理ユニットの複数のユニットで構成されるため、合理的に発生する可能性があります。
システムでCPUがどのように認識されるかを単純化するために、各ハイパースレッドは個別のCPUとして認識されるため、デュアルコア、コアあたり2スレッドのプロセッサーはクアッドコアプロセッサーとして表示されます。
オペレーティングシステムで Core-parking (新しいIntelプロセッサの機能)を使用することもできます。これにより、オペレーティングシステムはハイパースレッディングコアの半分を一時停止できるため、ハイパースレッディングの追加処理能力がコアが2つのスレッド間でキャッシュを共有しなくなったため、シングルスレッドのパフォーマンスが向上し、コア上のキャッシュをシングルスレッドに完全に割り当てることができるようになりました。
理由は hyperthreading であり、これはプロセッサーがサポートしています。ハイパースレッディングは、追加のプロセッサと同等ではありませんが、マルチスレッドアプリケーションのパフォーマンスを実際に向上させることができます。物理的に存在するプロセッサコアごとに、オペレーティングシステムは2つの仮想プロセッサに対応し、可能な場合はそれらの間でワークロードを共有します。
物事は、1クロックサイクルごとに1つのCPU命令があった時代よりもはるかに複雑です。
これで、いくつかのステップで構成される各命令にパイプラインができました。 41もの音を聞いたことがありますが、それは少し前のことであり、現在のCPUパイプラインがどのように見えるかわかりません。パイプラインが十分に長い場合、最後の命令が完了する前にパイプラインを下って新しい命令を開始できる場合があることを知っています。時には同じクロックサイクルで、1つのコアが2つのことを同時に実行します。
ただし、ここにはトリックがあります。これを使用して、プロセッサが特定のプログラムからの命令を噛む速度を速めることはできません。関連する正確性の問題があります。次の命令は、前の命令のまだ未定の結果に依存する可能性があります。長いパイプラインを安全に利用するために、チップは2つの個別のプロセッサコアをオペレーティングシステムスケジューラに提示し、各コアに送信される代替命令により、同じ「コア」に対する2つの命令が同時にパイプラインに存在することはありません。これにより、同時に実行されるすべての命令が互いに干渉しないことが確認できます。これはhyperthreadingと呼ばれます。
ここで注目に値するのは、ハイパースレッディングはCPUから得られる作業量を大幅に増やすことができますが、それだけ多くの物理コアを使用するほど優れているわけではないということです。作業負荷によっては、わずか15%の改善または40%の改善を意味する場合があります。状況によっては、機能を無効にして、残りのコアがそのコアのL1/L2キャッシュに完全に排他的にアクセスできるようにすることもできます(これは専用データベースサーバーで行われる場合があります)。
チップが4スレッドの2コアを持っていると宣伝している場合、それはハイパースレッディングをサポートするデュアルコアプロセッサであることを意味します。
見てみましょう このIntelページで -ハイパースレッディングがタスクを高速化する方法を示すアニメーションがたくさんあります。
Utilization of Processor Resources
は最高のアニメーションです。それを見て、「進む」ボタンをクリックしてください。
どうしてこれなの?コアごとに2つのスレッドがあり、CPUを4つの処理ユニットに分割しているためですか?
簡単に言えば、答えはイエスです。 CPUの各コアは2つの独立したスレッドをサポートできるため、合計で4つです。しかし、それがクアッドコアのシングルスレッドCPUと同じパフォーマンスを持っているという意味ではありません。事実上、デュアルコアダブルスレッドCPUのパフォーマンスは、クアッドコアシングルスレッドCPUのパフォーマンスよりも低くなります。 AMD Phenom X4のように。