マルチプロセッサーオペレーション

マルチタスクは、同時に複数の処理をしているように見せる事。って、いきなり何を言っているんだと思われるような書き方ですが 実際PCの中でやっているのもPPCの中でやっているのも同じような作業が行われています。
例えば、じゃあマルチでなくPalmのようにシングルタスクで動かせば切り替えに使う時間がなくなる分高速で動作できる可能性があるのか? といわれるとそのとおりなのだが50歩100歩の世界なのである。
そこを管理しているOSの問題で OSとアプリケーション自身もマルチタスクといえば言えるようなOSも沢山ありますし、それ以上に利用される関数なんがか並行して動いていたりしますから厳密にマルチタスクではないと言い切れるようなものが無くなってきています。
ここにマルチCPUという概念が加わって話は一気にややこしくなってきました。
例えば3つの仕事が来たときに、最初に来た仕事はCPU1に二つ目に来た仕事はCPU2にと振り分けます。で、どちらかのCPUの仕事が終われば仕事3を割り振ります。といえば簡単ですが、いつ仕事が終わったんでしょうCPUは?
現在、マルチタスクのCPUは時間によって仕事を切り替えているわけですから仕事の途中でも新しい仕事が来れば時間を割り振って切り替えて実行するわけです。
じゃあ仕事3が来たとき、どちらかのCPUの仕事が終わらなくても仕事3を割り付けてしまいます。
仕事1の方に仕事3が割り振られた状態で、実は仕事1が非常に時間がかかる仕事で重たい仕事1を抱えながら仕事3をCPU1はしているのですが、CPU2は早々に終わって遊んでいる。ということが発生する可能性があります。
実際はスレッド単位の管理をしているので、このとおりではまったく無いのですが仕事を振り分けるという事はそういった意味での問題を抱えています。
この問題は、CPUの数が増えれば増えるほど発生します。全体の駆動率をどう上げてゆくか。
100の速度のシングルプロセッサーに対して、2個のコアのプロセッサーは200の速度で動きます。これが、シングルタスクしか実行しなければ100の速度でしか動かないわけです。二つ目のCPUの動く時間が無いからです。
現在二つのコアを実装して効果があるのは、二つのCPUにいかにうまく仕事を割り振っていけるかが速度を上げるためのポイントになってきます。
もちろん、windowsはマルチプロセッサー対応OSですから、例えばWordとExcelを同時に立ち上げて作業をしているときにパフォーマンスメーターを見れば両方のCPUの作業状況を見れば 右が高くなったり左が高くなったりして両方に仕事が割り振られている事が判ります。しかし、これは 何かの作業をしている最中に他の作業が出来るようになっただけで 実は速くなったわけではないのです。
ただし、全体としてみた場合に同じ時間にした仕事が多かったので速くなっているだけなのです。
ところが所詮一人の作業。現在コンピューターに待たされる作業なんて 印刷をかけるとかそういったいくつかの作業で無い限り 砂時計を見る事は少なくなったと思います。もちろんWEBやメールの砂時計は回線の遅さにおける待ちや、HDDに大量に置かれたデータの並び替え等でデータがHDDに行っている事によるデータ転送の遅れです。
現在、間違いなく対応しているのはSQLサーバーなどデータベースソフト。今、メモリーもCPUのパワーも最も必要とするソフトの一つでしょう。64Bit化もデーターベースで扱うメモリー量を増やしたいというのがスタートでしょうから。
しかし、家庭ではその恩恵にあずかる事は稀になります。
では、マルチコア(CPU)環境になってどういった恩恵を受けるのか。
一番わかりやすい例は、ビデオデーターの変換等です。
よく、新しいマルチコアCPUのプレビューで使われていますが、それはマルチコア(マルチCPU)を顕著に有効に使えるアプリケーションがそれぐらいしかないからです。
あそこに効果測定が簡単だからといって、SQLサーバーのようなデータベースソフトの速度評価を書いてもぴんと来ないと思います。
ただ、効率化をそこに求めた場合 現在の省電力技術の CPUクロックを変化させる方法(AMDはクロックを落とすと動的に電圧下げているんですね 知らなかったCOMPUTEXでデータシート貰っていたのに見てなくて気がついていませんでした 凄いですね)以外に複数のCPUを持って負荷の少ないときにはそのCPUの電気を切ってしまう方が消費電力を下げやすいというような、特に携帯電話やPDAなんかであれば 消費電力に貢献できる事であればなんでも利用するでしょうから遠くない時代に出てくるでしょう。
PalmOSがそのときに存在できるのか?なんて問題はCobaltが登場すれば対応するんでしょう程度の事ですからそれはいいとして、プログラムを作る側もマルチCPUを意識したアプリケーションを組む必要が出てくるでしょう。
勿論、プログラムを作成するためのツールが対応してくるのでしょうが、それ以前の対応しないアプリケーションが混在したときに、省電力の為に普段休止されるべきCPUに割り振られたらそれっきりそのCPUが休止できないままアプリケーションが終了するのを待つ可能性があります。
今までのアプリケーションの多くが使用できないような事態に・・・・・
PDAにおけるマルチコアの時代は、波乱含みに始まりそうです・・・・