web-dev-qa-db-ja.com

ハイパースレッディングクアッドコアプロセッサには実際に8つの「コア」がありますか

私は2011年初頭のクアッドコアi7Macを持っています。ハイパースレッディングのため、多くのプログラムが8つの「コア」を報告します。並行して実行するプログラムを作成する場合、このプログラムのインスタンスを8つ開始できますか、それとも4つだけ開始できますか?

必要な数のスレッドを開始できますが、プログラムの4つまたは8つのインスタンスが並行して実行されますか?

1
Tyler DeWitt

Intel Core i7プロセッサには4つの物理コアがありますが、各コアには一度に最大2つのスレッドを入力する機能があり、オペレーティングシステムに「使用可能な論理CPU」の形式で合計8つのスレッドを表示します。

実際には、単一のコアは一度に1つのスレッドしか処理できませんが、2つのスレッドを「パイプライン」の異なるステージに同時に配置できるようにするための特別なキューイング/タイミング/スケジューリングメカニズムがあります。これにより、CPUは、一度に1つしか処理しない場合よりも早く2つのスレッドを終了できます。両方のスレッドが同じパイプラインを共有しているため、パフォーマンス上の利点は明らかに2倍にはなりません。ほとんどのテストでは、実行される命令のタイプに応じて、10%から50%の間のどこかにメリットがあります。

あなたの質問に答えて、プログラムの4、8、または16のインスタンスを開始すると、それらはすべて「実行中」になりますが、使用可能なTHREADの数に応じて、それぞれの命令がキューに入れられます。使用可能なPHYSICALCORESの数(5以上など)を超えると、ベース4を超えるスレッドは物理CPUコアを共有するため、パフォーマンスが低下します。

最後に、使用可能なCPUスレッド機能の制限(8スレッドを超える)に達すると、OSはスケジューリング/キューイング命令を開始し、パイプライン内の命令が完了するまで待機します。理想的には、パフォーマンスに悪影響を及ぼし、システムのボトルネックになる可能性があるため、使用可能なスレッドを超えないようにする必要があります。

3
Joshua