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