web-dev-qa-db-ja.com

単一のプロセスを複数のコアで実行できますか?

単一のプロセスで異なるコアで異なるスレッドを実行できますか?

(私は彼らができると思います)

その場合、異なるコアは同じアドレス空間を共有しますが、キャッシュは異なりますか?それはキャッシュが冗長になることを意味しますか?

ありがとう!

13
user3597931

はい、1つのプロセスで異なるコアで複数のスレッドを実行できます。

キャッシングはハードウェアに固有です。最近の多くのIntelプロセッサには、3層のキャッシュがあり、最後のレベルのキャッシュがコア間で共有されます。

非共有キャッシュが冗長であることを意味するわけではありませんが、マルチコアのパフォーマンスに影響を及ぼします。特に、あるコアが別のコアのプライベートキャッシュに現在存在するアドレス空間の値を更新する場合は、キャッシュコヒーレンスプロトコルを実行して、別のコアが古い値を読み取れないようにする必要があります。

8
merlin2011

基盤となるシステムがスレッド(プロセスではなく)の実行をスケジュールしている場合(別名カーネルスレッド)、単一のプロセスが複数のプロセッサで同時にスレッドを実行できます。これは、最近のほとんどのシステム(Windows、Linuxなど)でスレッドが実装される方法です。

ただし、プロセスの実行をスケジュールするシステムはまだいくつかあります。このようなシステムでは、スレッドはライブラリ(別名ユーザースレッド)によってスケジュールされます。つまり、プロセスは独自のスレッドを実行するようにスケジュールします。これらのシステムでは、同じプロセッサで実行されているプロセスのスレッド。

5
user3344003