プロが教えるわが家の防犯対策術!

 去年にintelがCore 2 Duoシリーズを発表して以来、CPUの主役は2つのコアを持つCPU(Quadもありますが)が主役です。そこで質問なのですが、複数あるコアはどう仕事を分担しているのですか。教えてください。

A 回答 (5件)

基本的に、OSが適当に割り振ります。


プログラム側でコアを指定する方法はありません。

Core2Duo等の複数コアに対応したアプリケーションというのは、内部の処理を「スレッド」という単位に分けて実行します。これが複数のコアに等しく割り振られると、効率的に処理ができます。
    • good
    • 0

まず、プログラムは実行されると最低ひとつのプロセスを生成します。

またプロセスはひとつ以上のスレッドから成り立っています。二つ以上のスレッドが存在するとき同時に処理しても問題ないことはプログラマにより保証されています。(よって処理するとまずいプログラムもかけます。)


さてマルチコアはこのスレッドを各コアに割り当てることで作業分担をしています。
つまりはプログラムAがスレッドA1を生成し、プログラムBがスレッドB1とB2、B3を生成したとき、シングルコアだとA1、B1、B2、B3を時間で区切って処理していきます。A1を一定時間処理してB1を一定時間処理してB2も一定時間だけ処理してB3も一定時間だけ処理してまたA1を一定時間処理してとしているわけです。この一定時間が非常に短いので外からは同時に処理しているように見えます。これがマルチコアだと各コアにスレッドをそれぞれ割り当て真に同時に処理します。

ここでプログラムBが終了した場合、プログラムAのスレッドはひとつしかありません。この場合マルチコアであっても稼動状態となるのはひとつのコアのみで他のコアは何もしません。これがマルチコアに対応したプログラムか否かの違いです。

さらに書いておくとスレッドの切り替えにも若干の時間がかかることにも注意してください。
    • good
    • 0
この回答へのお礼

大変参考になりました、ありがとうございます!! A1、B2と具体的に例をだして説明したところがよかったです

お礼日時:2007/07/18 22:58

こんなところをご参考にどうぞ。


下記は VAIO のサイトですが、VAIO 搭載の CPU だからではなく、
もちろん、他のパソコンに搭載される CPU にも共通する内容です。

http://www.jp.sonystyle.com/Style-a/Special/Inte …
    • good
    • 0

・2つのスレッドが同時に処理出来ます。



例えば、CPU100%近く(あるいは100%)使う動画のエンコードとか
長時間していても、それは1つのコアを使う訳です。もう一つのコア
で、別の業務が可能です。

・プログラムの処理時間を短く出来ます。

 デュアルコア対応のプログラムを開発したら、並行処理出来る部
分を内部で別スレッドにすることにより、全体の処理時間を短くす
るプログラムの開発が可能となります。
    • good
    • 0

> 複数あるコアはどう仕事を分担しているのですか。



予測不可能です。Windowsのシステムが勝手に割り当てます。ですから予想しても意味が無いです。

今のPCはマルチタスクで動いています。つまり,一度に複数のプログラムが動いています(正確には動いているように見える)。CPUコアが1つだけの場合,短い時間でプログラムを切り替える必要がありますが,コアが2つあると同時に2つのプログラムを実行できます。ですから速くなるのです。
    • good
    • 0

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