プロが教える店舗&オフィスのセキュリティ対策術

専門の方がみたら「当たり前だから」と言われてしまいそうですが、なぜCPUが4つ入っているのに速度が4倍にならないのでしょうか?
分散処理をすると正味4倍にならなくても2倍くらいにはなってほしいと思うところですが、そんなに早くもならないみたいなのですがそれならなぜ4つもコアを入れる必要があるのでしょうか?

A 回答 (7件)

こんにちは。

それは、仕事の分け方によるからです。
全く作業量が同一に分けられれば4つで分担すれば所要時間は四分の一になります。
但し、そういう作業分担をきちんとできる人がいる事が絶対条件ですね。
これを分担するのがOS(ウィンドウズなど)やアプリケーション(エクセルとかワードとか・・・)で、そういう作業分担が出来る人がいない場合は、上手に仕事を割り振る事が出来ず、おかしな分担にしてかえって時間がかかってしまうような事も起こります。
つまりOSやアプリケーションがクワッドなどのマルチコアに対応していない場合ですね。

ちゃんと対応してる場合でも、「作業分担を決める」という作業が出来てしまうので、正確に所要時間が四分の一にはなりません。
また、いくつかに分担したのはいいけれど、全ての作業時間が同じになるとは限りませんので、最終結果が出来るのは、一番長い作業分担が終わったあとという事になります。

以上のような現象が必ず生じるので単純にコア数分の一にはなりません。
現在のOS、アプリケーションではマルチコアがもっとも有効に働くのはいくつかのアプリケーションを同時に処理するような場合でしょう。
昔なら固まってしまったような現象が起こりにくくなります。
    • good
    • 0
この回答へのお礼

なるほど、割り振りの仕方がうまくいかないということはとてもよくわかりました。ご回答ありがとうございました。

お礼日時:2009/11/23 01:04

今回話題になっている並列化したときの性能向上に関する話を、


もう少し一般化したものに「アムダールの法則」という物があります。

以下のページの説明がグラフも載っていて分かりやすいと思います。


アムダールの法則 - Wikipedia
http://ja.wikipedia.org/wiki/%E3%82%A2%E3%83%A0% …

【後藤弘茂のWeekly海外ニュース】 2010年代の100コアCPU時代に向けて走るCPUメーカー
http://pc.watch.impress.co.jp/docs/column/kaigai …
    • good
    • 0

他の方々の説明も大きな間違いはないと思いますが、質問者さんは基本的な部分で勘違いされていませんでしょうか?


極論ですが1コアが4コアに4倍に増えても単一の仕事をするのに処理速度は変わりません。
1Gで動作するCPUコアが4Gにクロックアップすると、処理速度は4倍(理屈の上で)に早くなります。
ですからマルチコアに対応していないアプリケーションでは、2.6Gのクアッドコアより3GのシングルコアのCPUの方が処理速度は明らかに速くなります。
マルチコアの性能を活かすには、アプリケーションの設計段階で、並列処理を働かせるような構造に設計しないと意味がありません。
例えば一時間に15個の煉瓦を積む能力のある人Aさん・Bさんの二人と、20個煉瓦を積む能力のある人Cさんが居たとします。
煉瓦を20個上に積み上げる競争を3人それぞれですると、当然Cさんが1時間で完成、AさんとBさんはそれぞれ1時間20分かかってしまいます。
でもAさんとBさんが共同作業で煉瓦を交互に積んでいけば、おそらく1時間20分よりはかなり早く20段積む事が出来そうですよね。
あるいは20個積み上げた物を2列作るという競争なら、Cさんの2時間に対してAさんBさんチームは1時間20分で完了と言う事になりますね。
今話題のスーパーコンピューターは、6コアのCPUを二つ積んだコンピュータを数千台も並列に繋いだ物です。
当然その性能を活かすためには、数万~数十万コアの並列処理を活かせるようなプログラムを走らせてやらないと、意味がありません。
    • good
    • 0

> なぜCPUが4つ入っているのに速度が4倍にならないのでしょうか?


・アプリケーションソフトが、シングルコア対応で作成されているものがある。
・メモリ容量が十分に無いと、スワップアウト/スワップインが頻繁に発生する。
(プログラム、データ等を一時的にHDDへ退避、戻しを行う動作)
・使用(動作)ソフトの数に対して、ハードディスクの数が少ないと、入出力が頻繁に発生して待ちが発生するのと、元々動作速度が遅い。
ハードディスクは機械的動作を伴うので、書き込み/読み出し速度が遅い。
など、CPU以外の要素も関係してきます。

ソフト/ハードそれぞれが、総合的にバランスが取れないと、せっかくの性能も発揮できなくなってくることになってきます。
同じような条件の場合、シングルコア、デュアルコア、クアッドコアと、CPUの数が倍々となっても、実質の処理速度が向上するのは、せいぜい2~3割程度と思います。
 
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。実測で、2割というのがすごくインパクト大きかったです。

お礼日時:2009/11/23 17:49

コアを4つ入れても速度が4倍にならないのは、他の回答者の書かれたとおりです。



コアの複数化の理由は、処理速度の限界が見えるようになったので、CPUの複数化で処理の待ち時間を極力少なくしていこうとなったのです。
それで複数のソフトを同時に処理しやすくなったのがメリットになっています。
大型コンピュータの方が先にできていたのです。
(というよりも1コアのCPUを4台並べて処理していた)
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。なるほど、時間当たりの処理はもう限界に来ているので、仕事量をどれだけ見た目上あげるか、というところにCPUの発展は来ているのですね。

お礼日時:2009/11/23 10:00

プログラムの組み方に原因の一つがあります。


世間に出回っている大半のプログラムは、コア数を意識しないものとなっています。
つまり、1コアの石であろうと、4コアの石であろうと、8コアの石であろうと
同じプログラムがそれなりにがんばって稼働しているわけです。

4コアの石をフル稼働させたければ、4コアに特化した、4コアだけでしか動かないようなプログラムを組むという方法を取るべきなのです。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。プログラム側に対応があれば早くなる、ということですね。確かに、動画のエンコードなどは早くなると聞いたことがありました。

お礼日時:2009/11/23 10:34

例えばここに4人います。


10メートルの長さの塀をペンキでぬることを考えてみましょう。
一人でやると4時間かかるならば、4人でやったら何時間かかりますか?
ま、1時間で終わるような気がしますよね。でももしペンキを塗るハケが1本しかなかったらどのくらい時間がかかりますか?
やっぱし4時間かかるような気がしませんか?
つまり、そういうことなんです。仕事をきれいに分担できれば同じ仕事を4分の1でできるんですが、分担できないとかかる時間は同じになっちゃうんです。
なぜ4つもあるかというと、普通コンピュータというのはひとつの仕事だけでなく複数の仕事をちょっとずつちょっとずつやってるんです。だからコアが4つあると仕事を分担して全体では早く終わるのです。
    • good
    • 0
この回答へのお礼

一つの作業をしているわけではなく、複数の仕事をいっぺんにできるというところが進んだわけですね。ご回答ありがとうございました。

お礼日時:2009/11/23 01:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!