アプリ版:「スタンプのみでお礼する」機能のリリースについて

最近マルチコアのCPUをよく見かけます、

それで、例えば、Core2DuoとCore2Quadを比べた質問、についてですが、
この手の質問では、Quadはマルチスレッド対応アプリを使わなければ
Duoと大きな違い感じられないという回答がよく見られます。
又、むしろ消費電力が大きくなり2コアに比べクロック数も低いので
対応アプリを使わなければ逆に4コアは不利であるという意見もあります。

しかしどうも疑問を感じます。
上記の内容はあくまで一つのアプリを動作させた場合の事を想定した物なのでは?
ごく日常での使用ではコア数が多い方が有利なのではないですか?

私の考えとしては、まずPCを扱う際一つのアプリのみを起動しPCを使用する人はまずいないという事から、
使用中に他のアプリや別のプログラムを実行するという場合も大いに考えられますし、
実際にタスクマネージャなどを見てもOSを起動起動するだけでかなりのプロセスが実行されいくらかCPUを食っています。
するとその様なマルチコア向けのアプリケーションを使用せずとも多数のシングルスレッドのプロセス実行と共に
複数のスレッドが発生し、結果例え速度的な変化は感じられずともマルチコアの恩恵を受ける事が出来るのではないか?
と、私は思うのですがこれは間違いなのでしょうか。

それとも実際は上記の内容は間違いでそう都合良くは出来ていない物なのでしょうか?

長くなってしまいましたが回答いただけると幸いです、よろしくお願いします。

A 回答 (12件中1~10件)

マルチコアがどれくらい有効なのかは、ユーザーの使用の仕方で大きく変わってきます。


具体的な「使用中に他のアプリや別のプログラムを実行する」の頻度次第ですね。
しかも、単に複数のシングルスレッドアプリを立ち上げるだけでは、マルチコアの意味はありません。

まず、通常の利用方法である、同時に1アプリしか使っていない状況でも、
デュアルコアの意味はあります。「OS」と「使用しているアプリケーション」の2スレッド。でも、この場合は3コア以上あっても意味無し。
あるアプリの使用中に他のアプリを立ち上げても、その両方を同時に使うのでなく、切り替えて使う場合は、使ってない方のアプリはCPU時間を消費しません。

ここで「常時稼働してCPU時間を消費する」ようなアプリを裏で稼働させるような作業をして、初めて3コア目が役に立ちます。
たとえば、「通常の作業をしながら、裏でウィルス対策ソフトによるスキャンをする」とかですね。この場合、ウィルス対策ソフトは常時稼働していますから、ユーザーが操作しているアプリとOSと併せて3コア分は意味があります。

そんな感じで、日常的に「単に起動しているだけではなく、稼働してCPU時間を多大に消費している」ようなアプリをコア数に匹敵するだけの多数動かしているのであれば、「コア数が多い方が有利」といえるでしょう。
そうでなければ、コアが多くても無駄なだけです。

具体的には、タスクマネージャでプロセスタブを選んで、「CPU」をクリックしてCPU使用率の順で並べたときに、
「CPU使用率の高いプロセス」がどれだけあるかで判断できるでしょう。
CPUを使ってるプロセスが1つしかないとか、System Idle Process が一番高いとかだったら、マルチコアの恩恵はほとんどありません。
「30%ぐらいのプロセスが3つある」とかいった状況だったらクアッドコアの意味が出てくるでしょう。
    • good
    • 2
この回答へのお礼

>ここで「常時稼働してCPU時間を消費する」ようなアプリを裏で稼働させるような作業をして、初めて3コア目が役に立ちます。
>たとえば、「通常の作業をしながら、裏でウィルス対策ソフトによるスキャンをする」とかですね。この場合、ウィルス対策ソフトは常時稼働していますから、ユーザーが操作しているアプリとOSと併せて3コア分は意味があります。

>「CPU使用率の高いプロセス」がどれだけあるかで判断できるでしょう。
>CPUを使ってるプロセスが1つしかないとか、System Idle Process が一番高いとかだったら、マルチコアの恩恵はほとんどありません。
>「30%ぐらいのプロセスが3つある」とかいった状況だったらクアッドコアの意味が出てくるでしょう。
非常に参考になります。
要するにCPUを使用するアプリが複数あればマルチコアは有効である、という解釈でよろしいのですね?

しかし今思うと私の質問の書き方に問題があったのかもしれません、
確かに私は"使用中に他のアプリや別のプログラムを実行する"とは書きましたが、
ただ起動しCPUを使わず待機させておくのであればコアが2つだろうと4つだろうと意味がない
という事は承知して書いたつもりでした。
もっと回答者様がおっしゃったような具体的な例、
"通常の作業をしながら、裏でウィルス対策ソフトによるスキャンをする"
というような形で質問を書けば良かったのかもしれませんね。

参考になるご回答ありがとうございました。

お礼日時:2008/05/30 08:58

シングルスレッドのアプリケーションが2本同時に動いている場合、シングルコアよりもデュアルコアの方が処理速度が向上します。

例えばウィルス対策ソフトを使っていると、明らかにデュアルコアのPCの方がシングルコアより軽く感じます。これは、OSが処理を各コアに割り振ってくれているからですね。同様に、4本のシングルスレッドアプリケーションだと、クアッドコアが有利です。補足にもある、ゲームとエンコを同時実行というケースでも、複数コアは非常に効きます。

逆に、シングルスレッドアプリケーションが一本しか動いていない状態のところへ、マルチコアを持ってきても効果はありません。

まとめると、コア数をいくら増やしてもシングルスレッドアプリケーション自体の実行速度は変わらないが、アプリケーションが複数存在する場合は負荷分散が行われるため、速度低下が発生しにくくなる、よってマルチコアのメリットはあると言うことになります。これでよろしいですか?
    • good
    • 1
この回答へのお礼

非常に簡潔で分かり易い説明をありがとうございます。
ご回答どうもありがとうございました、とても参考になりました。

お礼日時:2008/06/01 07:32

http://www.forest.impress.co.jp/article/2008/01/ …
最近だとこんなソフトがあります。
これつかえばプロセスの各CPU割り当てを自分で設定できるので
効率よくマルチコアOSを運用できるでしょう。

最近のCPUは低負荷時にはクロックを落とす技術が当たり前になっていますから
プロセスごとにコアで処理が分散されれば有効性はあがる気がしますね。

個人的にはマルチコアと仮想化技術がもっと有効活用されれば面白いですね。
OSごとの対応アプリを気にせず複数のOSを仮想化技術ですべてネイティブに起動させておきホストOS側でアプリを起動すると対応したゲストOS側に処理を渡してくれるとかやってくれないかな)
各一つのアプリといっても外部の動的ライブラリを大量に呼び出しているわけだしその動的ライブラリの動作もOS側が自動で各コアに割り当てて動いてくれないものかな?

マルチスレッドのソフト作るよりプロセス間通信を利用してマルチタスクのプログラミングの方がらくだ。


回答者の中にも
・マルチタスク(プロセス)
・マルチスレッド
の違いがあまりわかってない人が多い気がしますね。
    • good
    • 0
この回答へのお礼

>これつかえばプロセスの各CPU割り当てを自分で設定できるので
>効率よくマルチコアOSを運用できるでしょう。
おぉ、このようなソフトがあるのですか。
確かにこれがあれば単純思考ですが例えば、これはこのコアこれはこのコアで、
といったような形で各コアを任意の配分で動かすという事ができそうですね?
説明を読む限りではマルチコアをとても効率よく動かせるような印象を受けました。

>個人的にはマルチコアと仮想化技術がもっと有効活用されれば面白いですね。
仮想化技術については私も興味がありますね。
詳しく語れる程知識はありませんが、こういったものが日常的に使われる様になれば
本来なら何台もの本体が必要な場合でも一台で済むような、又、より柔軟な事も出来そうです。

しかし本題のマルチコアについてですが、察するに、
複数のアプリを同時に処理を行わせればコアは有効的に活用される、
と考えても果たしてよろしいのでしょうかね・・?
どうも根本的な仕組みを理解していないせいなのか
いまいち皆さんの回答がすんなり飲み込めないんですよね。

ご回答ありがとうございました。

お礼日時:2008/05/31 20:01

>回答者様のおっしゃるワードとエクセルに限らず例えば起動するだけでいくらか処理がかかる常駐アプリなど、


何も動かさないPCでタスクマネージャを見たことがあります?
私のPCは0%と1%を行ったり来たりですが。

>もう少し具体的に説明していただけると納得できたような気もするのですが。
私、業務では20数個CPUマシンを使っていますが、無駄なく使わせるのは大変ですよ。
かなり多重でアプリケーションを動かしますし、設計段階でCPU効率が良いように考えていますし。
そんな経験から言うと、1人が使うPCで4個以上のCPUを効率よく使わせるアプリケーション設計はなかなか難しいと思いますよ。
    • good
    • 1
この回答へのお礼

>何も動かさないPCでタスクマネージャを見たことがあります?
>私のPCは0%と1%を行ったり来たりですが。
私の方も0~1%を行ったりきたりしていますね。
質問の書き方に問題があったのかもしれません、
もう少し具体的に、例えばエンコードをしながらゲームを起動する、など書けば良かったかもしれません。
起動中のアプリがCPUを使用していないのならシングルであろうと
デュアルであろうと差が感じられないという事は承知しております。

私としては、ただ単に複数のアプリを同時に動かした際、
単純にコアが多い方が処理を行うにあたって有利なのでは?という事を聞きたかったんですよ。

ご回答ありがとうございました。

お礼日時:2008/05/31 19:11

単純に考えれば、確かにコアが多い方が有利になりますが、たかが数%の処理のために別コアを用意するのは非効率的です。

また、コアだけ増えても、ハードディスクやメモリやビデオカードなどのリソースは一つしかありませんから、複数プロセスやスレッドから単一リソースに同時にアクセスが発生すると、必ずどちらか片方を待たせる必要があります。さもないと、ファイルやメモリ内容が各コアの勝手に変更されることになり、収拾がつかなくなってしまいます。

このように、重複使用を避けるための排他管理や負荷分散処理が複数コアのシステムでは必須ですが、これはコアが増えれば増えるほど処理量が増大し、またコアが待たされる可能性も高まります。つまり、実行効率が下がるわけです。2コアと4コアを比較して、4コアが二倍の性能にならないのはそのためです。

将来的により多コア化が進むと、この問題はますます深刻化します。OSだけでなく、システム全体の考え方を根本から見直さないと、処理能力は頭打ちになるでしょう。どう実行すれば一番効率的か考えているより、とにかく手当たり次第に実行した方が速かったなんてことじゃ、笑い話にもなりません。
    • good
    • 0
この回答へのお礼

>コアだけ増えても、ハードディスクやメモリやビデオカードなどのリソースは一つしかありませんから、複数プロセスやスレッドから単一リソースに同時にアクセスが発生すると、必ずどちらか片方を待たせる必要があります。さもないと、ファイルやメモリ内容が各コアの勝手に変更されることになり、収拾がつかなくなってしまいます。
なるほどなるほど、とても納得できます。
しかし、他のハードとの問題ももちろん大事なのですが、
あくまで全体的な話でなくCPU単体として考えた場合、
2コアよりも4コアの方が複数のアプリには強いのでしょうか?
今回知りたかったのはマルチスレッド非対応アプリ複数を起動、処理させた際に
コアが動いてくれるのか、少なくとも動こうとするのかどうか、という様な事が聞きたかったのですが。

ただ回答者様のご意見は非常に参考になります、
CPUのみが優れていてもパフォーマンス向上は見込めないという事が良く分かります。

どうもありがとうございました。

お礼日時:2008/05/31 18:57

>もう少し具体的に説明していただけると納得できたような気もするのですが。



最先端の技術者が必死になって取り組んでいることです

ここで具体的に簡単に説明などできません
関連書籍を購入するなり資料を調べるなりして研鑽してください
簡単に聞けても 簡単には説明できません

windows98クラスでも どのくらい複雑なことを行なっているかも調べてください

全く関係の無いことを複数実行するのは簡単です

しかし それならば マルチコアマルチスレッド対応の複雑な制御を行なうよりは 別々のハードウェアで実行したほうが、単純で無駄な動作がありませんから高速に実行できます
(実行を制御するソフトも単純です、単純と言うことは、少ない操作で実現できることです、すなわち高速です)

CPUの性能向上の9割は OSやアプリの使い勝手の向上に向けられ、処理速度の向上には1割程度しか利用されていないのが ここ十数年の歴史です
    • good
    • 0
この回答へのお礼

なんとなくマルチコアの利点についての話からは反れた物になっているような気がするのですが。

私としては唯よく、マルチスレッド対応のアプリを使用しないならマルチコアの意味はない、という内容の物が気になり、
対応アプリを使わずともただ単にアプリを複数立ち上げ同時に処理を行わせる事でマルチコアが有効に働く事はあるのか?ないのか?、という、
そういった単純な事が知りたかっただけなのですけど。
それともその答えを導き出す事は難しい、のでしょうか?
もしくは私の質問の書き方にも問題があったのでしょうか。

ご回答ありがとうございました。

お礼日時:2008/05/30 09:43

マルチコアに対応している場合各コアに分散して計算を行わせます、これはOSでもアプリでも同じ事です。


では、マルチコアに対応していないアプリの場合たいていは1番目のコアに処理をさせます。複数アプリを立ち上げた場合一つのコアに処理が集中し遊んでいるコアができるという状態になります、それではもったいないのでOSが処理を分散させたりしますがすべてがそう都合がよく処理される訳では有りません。
パソコンの処理スピードはCPUの性能のみで決まる訳では有りません、測定値のみではなく実際の使用感によって判断するのも一つの手段です。要は全く同じパソコンでも使用するアプリによって使用感は変わるという事です。
回答になっていないかもしれませんがご参考に
    • good
    • 0
この回答へのお礼

>マルチコアに対応している場合各コアに分散して計算を行わせます、これはOSでもアプリでも同じ事です。
そうだったのですか、対応している物の場合は4コアなら4コアに処理を分散して計算を行わせるのですね。

>では、マルチコアに対応していないアプリの場合たいていは1番目のコアに処理をさせます。複数アプリを立ち上げた場合一つのコアに処理が集中し遊んでいるコアができるという状態になります、それではもったいないのでOSが処理を分散させたりしますがすべてがそう都合がよく処理される訳では有りません。
さっきとは逆に対応していない物の場合はうまく処理の分散が行えず残りのコアが余る、
余ったコアに処理を分散させようとするがそう都合よくはいかない、のですね?

色々な方から回答を得られるのはとても嬉しいのですが、
色々な意見もあり、何がなんだか、と言う気持ちも出てきています。

どうもご回答ありがとうございました。

お礼日時:2008/05/30 09:16

マルチコアCPUが対応アプリケーションで無ければ恩恵が少ないと言うのはWindowsアプリケーションの基本を有る程度知っていれば理解できると思います。



Windowsアプリケーションは「イベントドリブン」といって「ユーザーの操作」や「内部タイマー」等の何かしらの条件が揃った時に処理を開始します。
それ以外の場合は、「待機」状態になり殆どCPUに負荷をかけません。

http://e-words.jp/w/E382A4E38399E383B3E38388E383 …

ですから、例え同時に10個のアプリケーションを立ち上げても何も操作をしなければ、CPUに負担がかからないのでシングルコアとマルチコアの差は出ません。
また、IE、Word、Excelを同時に立ち上げた場合も同時に操作する事は出来ないので、シングルコアとマルチコアの差は殆ど出ません。

マルチコア非対応のアプリケーションを複数立ち上げてマルチコアの恩恵があると思われるのは、動画のエンコードの様に処理時間の長いアプリケーションを動作させながら並行して他の操作を行った様な場合のみです。
    • good
    • 0
この回答へのお礼

>Windowsアプリケーションは「イベントドリブン」といって「ユーザーの操作」や「内部タイマー」等の何かしらの条件が揃った時に処理を開始します。
>それ以外の場合は、「待機」状態になり殆どCPUに負荷をかけません。
確かに例えばエディタや特定時にしか動かないようなツールであれば
無操作時CPUは使用せずメモリだけを使用し待機している様子が見受けられますね。

>例え同時に10個のアプリケーションを立ち上げても何も操作をしなければ、CPUに負担がかからないのでシングルコアとマルチコアの差は出ません。
>また、IE、Word、Excelを同時に立ち上げた場合も同時に操作する事は出来ないので、シングルコアとマルチコアの差は殆ど出ません。
これについては全くその通りだと思います。

>マルチコア非対応のアプリケーションを複数立ち上げてマルチコアの恩恵があると思われるのは、動画のエンコードの様に処理時間の長いアプリケーションを動作させながら並行して他の操作を行った様な場合のみです。
なるほど、例えばエンコードやファイルの圧縮やゲームや自動巡回ツール、
動画音楽の再生などこういった動作時間が長く処理が持続的に行われる物、無操作でも処理が行われる物を、
複数同時に行った際ならマルチコアの恩恵が受けられる、と判断しても良いのでしょうか?
この辺が事実であれば非常に参考になります。

どうも回答によって色々な意見があり、
どういった状況でならマルチコアが優位に働くかどうかいまいち分からずにいます。
結果、やや疑問的なお礼になってしまい申し訳なく思います。

ご回答ありがとうございました。

お礼日時:2008/05/30 08:38

>それとも実際は上記の内容は間違いでそう都合良くは出来ていない物なのでしょうか?



都合よく出来てません。
だって、交通整理をするOSが「それぞれのコアにアプリを振り分ける」と言った行為が出来ませんので。アプリ自体が「こっち空いてるからこっちで作業しよう」なんて自己判断は当然しませんしね。
    • good
    • 1
この回答へのお礼

>都合よく出来てません。
そうなのですか、確かにコンピュータが独断で、こっち空いてるからこっちで作業しよう、
なんて事をしてくれるワケはないと思いますが。
すなわちそれの意味する事は、
対応アプリでなければ他の空いたコアを使用する事がそもそも出来ない、という事なのでしょうか?

ご回答ありがとうございました。

お礼日時:2008/05/30 07:57

>私の考えとしては~(省略)~と、私は思うのですがこれは間違いなのでしょうか。



CPUの各コアがどのデータを処理するかというのはソフト側からの命令で判断します。ところが、現状のソフトはシングルスレッド専用というよりはマルチスレッド非対応という感じなので処理の振り分けが下手なんです。そのため、4つの別々のスレッドが走っている時にコアごとに振り分けないで全部のコアで4つのスレッドを走らせています。これは複数のプログラムを起動した時のコアごとのCPU使用率を見れば分かると思います。全てのコアが同じ位の使用率になりますよね?そのため、同じ動作クロックのCPUの場合は同じ速度で処理します。違うのは各コアのCPU使用率だけです。

ちなみに、私の普段の使い方はTV視聴アプリ+2Dオンラインゲーム+IE7です。この状態で少し前まではPentium Dual-Core E2160を使っていました。現在はCore 2 Quad Q6700ですが使っていて差を感じることはありません。流石にE2160はQ6700と比べてクロックが低いのでオーバークロックしていましたけどね。クロックあたりの性能差を考えるとQ6700(2.66GHz)とE2160(1.6GHz⇒3.2GHz)でシングルスレッド性能なら釣り合いが取れているかE2160が若干下なのでシングルスレッドではデュアルコアとクアッドコアの差が小さいということが言えると思います。
    • good
    • 0
この回答へのお礼

>そのため、4つの別々のスレッドが走っている時にコアごとに振り分けないで全部のコアで4つのスレッドを走らせています。
>これは複数のプログラムを起動した時のコアごとのCPU使用率を見れば分かると思います。全てのコアが同じ位の使用率になりますよね?
という事は?マルチスレッドに対応してる場合一つのコアが100%処理を請け負うが
非対応の場合コアが4つなら25% 25% 25% 25% というように処理が分散してしまうという事なのでしょうか?

>クロックあたりの性能差を考えるとQ6700(2.66GHz)とE2160(1.6GHz⇒3.2GHz)でシングルスレッド性能なら釣り合いが取れているかE2160が若干下なのでシングルスレッドではデュアルコアとクアッドコアの差が小さいということが言えると思います。
どの辺りからデュアルコアとクアッドコアの差が小ささが見とれるのかちょっとよく分からないのですが、理解力が低く申し訳ない。

ご回答ありがとうございました。

お礼日時:2008/05/30 07:53

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