2007/07/19

シングルコアとデュアルコアの比較

CPUが一つであるシングルコアと二つ存在するデュアルコア
これらにはどのような差があるのだろうか。


シングルコアは、全てのプロセスで一つのCPUを共有する。

あるプロセスに負荷がかかりCPUを使い切る「ビジー状態」になったとき、他のプロセスはその終了を待たなければいけななくなる。

ただし、待っているだけでは一度に一つのことしかできない昔のPCに逆戻りしてしまう。
OS上では「プロセスの優先度」を使用することでこれを回避している。

まず、優先度が高い順番からCPUを割り振っていく。
あるプロセスがビジー状態になっても、そのプロセスより優先度の高いものがあればそちらに優先的にCPUの時間を割り振る。
優先度が同じ場合は、均等な時間をそれぞれのプロセスに割り振る。

しかし、自分より低い優先度のプロセスには余っている時間のみを渡す。
例えば、優先度が最高である「リアルタイム」のプロセスがビジー状態になると、マウスやその他一切の処理を受け付けないという事態になってしまうことがある。


デュアルコアはどうだろう。
単純にシングルコアの2倍の性能をもったもの、と考えていいのか?


…そうではないようだ。
シングルコアとデュアルコアは性質が異なる。


実は、デュアルコアでは一つのプロセスは二つのCPUのうち、片方しか使わない
計算結果などをきちんと管理する必要があるので、別々のCPUを使うと不都合が生じるためだ。


軽いプロセス



上の画像は動画の再生を行っているときのもの。
主に右側のCPUが使われているのがわかると思う。

では、次の画像を。



重いプロセス



前の動画よりはるかに重い動画を再生させているときのものだ。
右側のCPUがほぼ使い切られ、その使用率は約50%になっている。

…実はこの動画、きちんと表示されていない
画像の処理が追いつかずにカクカクしている。

CPUを100%使い切ればもっとまともに表示されるだろうが、それでもCPU使用率は50%。

力不足のクセに本気を出していない。

…というか出せない。


それでは意味がない。
そこで左のCPUに注目してみよう。

最初の画像より若干左のCPUの使用率が上がっている。
右のCPUが動画再生に、左のCPUにシステムなどの処理が割り振られているためだ。
つまり、あるプロセスがビジー状態でCPUを独占していても、他のことを別のCPUが請け負ってくれる。

この時、動画はまともに表示されず見られたものではないが、システムの動作は安定している。


…さて、ここからが本領発揮だ。

この状態で別の重いプロセスを起動してみる。


重いプロセスを二つ



両方のCPUをほぼ使い切っている。
左と右のCPUを使用しているのはそれぞれ別のプロセスだ。

この状態で初めてデュアルコアの真価が発揮される。
一つのプロセスでは最大50%しか使えないが、二つあれば100%利用可能!!というわけだ 。



…あれ…?



…………。




…デュアルコアの振る舞いが何となくわかったと思う。
限界は高くないが、並行作業に強いというのがデュアルコアの性質。



現在主流になってきているのがデュアルコアを含むマルチコアプロセッサである。
例えば Core 2 Quad などはCPUが4基存在する。

一度に一つの作業しか行わないときには全性能のわずか25%しか使用できない。
しかし、四つの作業を同時に行えば100%利用可能!!というわけだ。



…………。



一昔前のPCの”4倍のスピード”ではなく、”4台同時に使ったようなもの”考えればわかりやすいだろう。


…え? 単純に4倍の能力をもったCPUを作ったほうが無駄が少なくていいんじゃないかって?





作ってください!






0 件のコメント: