■デュアルコア・プロセッサを採用したシステムなら,複数のサービスやアプリケーションを同時実行したり,マルチスレッド対応アプリケーションを実行したりする場合に,システム全体の処理性能を上げられる。
■デュアルコア・システムならば,1CPUにしか対応していないWindows XP Home Editionでも最大4スレッドを同時実行できる。

(山口 哲弘=ITpro


図1●デュアルコア・プロセッサ
1つのソケットに装着するパッケージに,通常のCPU2個分のコアが封止されている。
 Windowsマシンに利用されているx86プロセッサに,「デュアルコア・プロセッサ」が登場した。デュアルコア・プロセッサは,文字通り,1個のプロセッサに,完全なCPUの機能(コア)を2つ分備えたもの(図1)。1個のプロセッサで2つのプログラム(スレッド)を同時実行できる。つまりデュアルコア・プロセッサは,1つのプロセッサながら,デュアル・プロセッサ構成と同様な特徴を持っている。

 似た技術にインテルの「ハイパースレッディング・テクノロジ」がある。これはOSからは2個のCPUとして認識され,2つのスレッドが同時に動作する点でデュアルコアと同じだが,命令を処理する演算器は1組しかない。デュアルコアは演算器も2組ある点で,ハイパースレッディング・テクノロジとは異なる技術である。

 ここでは,デュアルコアの仕組みを解説し,それを使ったシステムの性能を簡単なベンチマーク・テストで検証した。2つのプログラムを同時実行すると,処理性能が約2倍に向上することが確認できた。さらに,Windowsをデュアルコア・システムで稼働したときに,対応するCPUの数についても調べた。Windowsはエディションによって対応するCPUの数に制限がある。例えばWindows XP Home Editionは1つである。デュアルコア・プロセッサを利用すると,Windows XP Home Editionでも最大4つの論理CPUを利用できることが確認できた。

1CPUでは同時処理に限界がある

図2●シングルコア・システムで処理される命令の流れ
複数のプログラムを1個のCPUで処理する。そのため,ある複雑な処理をするプログラム(赤い車)を動かしていると,同時に実行している別のプログラム(青い車)の動作が鈍くなってしまう。
 Windowsマシンでは,クライアントあるいはサーバーにかかわらず,複数のプログラムが同時に動作する。例えば,(1)メール・クライアントで定期的にメールをチェックしつつ,Webブラウザを使用し,その背後ではウイルス対策ソフトがセキュリティを監視する,(2)ユーザー認証サービスやファイル共有サービスが同時に動作し,複数のユーザーからのリクエストに応答する——などだ。

 だがCPUが1個のシステムでは,ある一瞬をとらえると,そのときに動作しているプログラムは1つだけである。Windowsが,動かすプログラムを短い時間ごとに次々と変えることで,複数のプログラムがあたかも同時に動作しているように見せている。そのため,複雑な処理をするプログラムを動かしているときは,別のプログラムの動作が遅くなってしまうということを,多くのユーザーが経験していることだろう(図2)。

図3●デュアルコア・システムで処理される命令の流れ
1つのCPUの中に演算器が2つあり,2つのプログラムを同時に実行できる。ある複雑な処理をするプログラム(赤い車)が動いていても,もう1つの演算器(車線)が空いているので,別のプログラム(青い車)の動作が鈍くなることはない。
 例えば,(1)音楽をエンコーディングしながら動画を再生すると動画がコマ落ちしたり止まってしまったりする,(2)1台のサーバー機で,データベースとWebアプリケーションなど,複数のサーバー機能を運用した場合,ある複雑なデータベース処理を実行しているとWebアプリケーションの応答が鈍くなる——などだ。

 これらの状況は,より高速なCPUにしても,1CPU構成のままだとあまり改善されない。例えばデータベース処理とWebアプリケーションを同時に実行する場合,より高速なCPUにしてもデータベース処理が依然としてCPU使用率を100%にしてしまい,Webアプリケーションに十分なCPUの処理能力を割り当てられないからだ。より高速なCPUにすれば,複雑なデータベース処理は短時間で済み,Webアプリケーションの応答が鈍くなっている時間は短くなるだろう。だが,Webアプリケーションの応答が全く鈍くならないようにすることは難しい。

 この問題はデュアルコアCPUなら簡単に解決する。1つのコアのCPU使用率がデータベース処理で100%になったとしても,もう1つのコアは空いている。Webアプリケーションはそのコアを使って動けるからだ(図3)。

2つの機能を1つに集約

 Windowsは,システムに複数のCPU(コア)があることを認識すると,複数のプログラムの実行を1つのCPUに集中するのではなく,なるべく負荷の低いCPUに振り分けようとする。そのためユーザーは,プログラムごとにそれを実行させるCPUを指定する必要はない。

 サーバーと違ってクライアントでは,複数のプログラムを高負荷の状態で同時に動作させることは少ないかもしれない。ただ,最近はマルチスレッド化されたアプリケーション・ソフトが増えてきており,これらをデュアルコア・プロセッサ上で利用すれば,高速化が見込める。

 例えば,画像処理ソフトの特殊効果,動画のエンコーディングなどである。1つの画像を2分割して,それぞれの領域に対して同時に特殊効果をかけるようにすれば,2倍近く高速化される。また動画のエンコーディングでも,音声と映像を同時にエンコーディングすれば,それぞれ順次処理する場合よりも短時間で済む。

 さらに最近ではセキュリティに対する認識が高まり,ウイルス対策ソフトやパーソナル・ファイアウオールなどを動かしているユーザーが大部分だろう。デュアルコア・プロセッサのシステムならば,これらのセキュリティ対策ソフトと,オフィス・ソフトなど一般のアプリケーション・ソフトを別のコアで実行させられ,セキュリティ対策ソフトを導入してもユーザーの操作性を損なうことはない。