Saturday, July 26, 2008

マルチコアCPUとWindows

結局、コメントのリンク先の記述にあるように、windowsの仕様ってことだそうですが・・・。
When single-threaded workloads run on multiprocessor systems that include dual-core configurations, the workloads may migrate across available CPU cores. This behavior is a natural artifact of how Windows schedules work across available CPU resources.


これがパフォーマンス低下にはそれほど繋がらないということなのか、単にWindows XPではマルチコアでの処理が最適化されていないのか、何なのかはNTカーネルのことをよく勉強しないとわからないのかもしれません。

Core2Quadでシングルスレッドを動かすと、処理が"ニコイチ"コアの間にまたがることもあれば片方の"Core2Duo"だけで処理されることもあります。この挙動を見る限り、どう考えてもWindows XPはマルチコアを最適に使っているとは思えないんですよね。Intel compilerを使うと変わったりするんでしょうか? また、Windows Vista 64bit/Server 2008, *nix ではどのように処理されているのか、気になります。

AMDもこれからは"ニコイチ"CPUを出すと言ってますし、IntelはNehalem世代でNUMAをサポートし、ニコイチだけでなくsimultaneous multithreading (SMT)を復活すると言ってます。そうするとコンシューマ向けのCPUであっても、ニコイチやSMTの技術によってコア間の距離や各コアの性能がまちまちになってくるってことですよね。Windows 7が出る頃には、マルチコアに対する最適化の性能差によって過去のOSからの移行が進む、なんてことが起きたりするのかもしれません(?)。

No comments: