• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CPUと同時処理の関係)

CPUの同時処理についての疑問

このQ&Aのポイント
  • CPUの同時処理について疑問に思ったので質問させてください。4スレッドのCPUであれば軽い動作でも同時に処理できるのでしょうか?
  • また、メモリが同時処理に関係してくると言われますが、具体的にどういうことなのでしょうか?
  • 初心者なのでわかりにくい質問かもしれませんが、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

>corei5の4コア、4スレッドのPCの場合、上記の作業は問題なく同時に処理してくれると認識していました。 違います。 >質問1 >のように軽い動作であれば同時に処理できるのでしょうか? できません。 >このような感じになると思ってましたが・・・ そのようにはなりません。 まず「シングルコア(シングルスレッド)」のCPUの動作に付いて理解する必要があります。 CPUは、1命令を処理するのに、以下の動作を「順次」に実行します。 A・プログラムメモリから、命令コードの読み取り B・命令コードの解釈 C・データメモリから、メモリのデータ読み取り(あれば) D・命令コードの実行(計算など) E・データメモリへ、計算結果のデータ書き込み(あれば) A~Cの手順は「A~Eの順」に行ないます。 この時、A、Cでは「メモリのリード」が起きます。Eでは「メモリへのライト」が起きます。 また、CとEは、命令によっては「無い」場合もあります。 マルチコアでは、上記のA~Eを「コアごとに、タイミングをズラして」行います。 なぜ「ズラす」のかというと「メモリアクセスは、同時に行なえない」からです。 話を簡単にする為に「2コア(2スレッド)」で考えます。 それぞれのコアで、以下のようにタイミングをズラして「A~E」を順に行ないます。 コア1:A B C D A B C D E A B D E・・・ コア2:-A B C D E -A B D E A B・・・ まず、コア1で「A」を行ない、コア1がメモリアクセスします。コア1がメモリアクセスしているので、コア2は「A」を実行できず、メモリアクセス出来る状態まで待たされます(「-」の状態) 次に、コア1で「B」をやっている時は、コア1はメモリアクセスしないので、コア2が同じタイミングで「A」を行い、コア2がメモリアクセスします。 次に、コア1で「C」をやっている時、コア1がメモリアクセスしますが、同じタイミングでコア2が「B」を行なうので、コア2はメモリアクセスしません。 このように「片方がメモリアクセスする処理のタイミングで、もう片方がメモリアクセスしない処理をする」と言うのを、両方で順次に実行して行きます。 上記の例の2つのコアで「AとCとE」が同時に発生しないようになっている事に注目して下さい(7つ目のサイクルで、コア1が「C」を行なっているので、コア2が「A」を行なえずに、待たされています) 実際には「命令コードの長さが可変長になっている」ので、もっと複雑になりますが、説明の都合で「簡略化」してあり、本当は、上記の「A~E」のような単純な処理ではなく「命令フェッチ」「命令デコード」「実行」「メモリアクセス」「レジスタライトバック」など、様々な処理が行なわれています。 >質問2 >メモリが関係してくるというのは、どういうことでしょうか。 上記の例のように「AとCとEは同時に行なえない」ので、メモリのアクセスに時間がかかると「1つのコアがメモリを読み書きしている間、他のコアがメモリアクセスできず、何もせずに、メモリアクセス出来るようになるまで待ちぼうけする」のです。 メモリへのアクセスも「1サイクルで簡単に終わる訳ではない」ので、メモリの応答速度が大変に重要になって来ます。 詳しくは「命令パイプライン」で検索してみて下さい。

その他の回答 (4)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.5

あのですね 基本、CPUは 周辺装置や、人に、 比べて 極めて、早い の、です 1つの、論理CPUに ワンタスク、だけに すると 周辺待ちが 頻繁に、しかも大量に、 出て 処理速度に 多大な、影を 落とします 其処で パイプライン処理の 継続する、範囲 とか、 手頃な、ところで 処理を、分割して スレットを 沢山、用意して おいて 待ちの、ものは 手を、付けず 出来る、ものから スレッドを、切り替えながら 動きます 此の、様に 効率化の、ため ハイパースレッディングの 無い、頃から マルチタスク(スレッド)化は、進んで いきました 言い、変えれば 1論理CPUに 1つの、スレッドは 今や、非常識 なの、ですね スレッドは、切り替えて 沢山を 同時処理する、もの なの、ですよ 所で、此 人でも、出来ますよ 相手の、話 とか、 何か、する時 とか、 全てを 主たる、処理に 当てなくても 十分、解りますよね? そういう、合間に 何か、処理をする 待ちを、減らす 人でも、出来る の、ですよ? さて では、やってみましょう そうすれば 何故、容量に 左右、されるか 体感、できますよ?

  • catpow
  • ベストアンサー率24% (620/2527)
回答No.3

質問1 コンピュータのマルチタスクは、CPUのスレッド数と直接の関係はありません。 人間の目からすれば、CPUが1スレッドであっても、10タスク、100タスク同時処理とかも可能です。 もちろん、スレッド数が多いほうが、処理が早く終わる可能性が高いですが。 質問2 人間がテーブルの上で複数の作業を同時並行して行うと考えてみてください。 テーブルが狭いと、一時中断の作業に関係するものを、テーブルから片付けたり、再開時は、またテーブルに戻さないといけない。 テーブルが広ければ、片付けなくてもいい。 メモリが多い=テーブルが広いってことで、有利ってことですね。

  • OKWavex
  • ベストアンサー率22% (1222/5383)
回答No.2

はやくて同時に見えるだけで、コア数以上は同時に処理できません

  • t_ohta
  • ベストアンサー率38% (5238/13705)
回答No.1

Core i5の4コア/4スレッドの場合、CPUが同時に処理できるのは4つの処理までです。 「クリック程度の動作」はCPUの処理スピードに人間が追いつけませんので、一つ一つの処理は人間が次の動作へ移る前に終えているので、人間にとっては沢山の処理を平行してやってくれているように感じるだけです。 また、多くの処理はCPU自体が処理している時間よりも、HDDからデータを読み出したり、通信をしてデータを取得するのに要する時間の方が圧倒的に長いためCPUは遊んでいる事になります。 その遊んでいる時間を使って他の処理を実行するために、処理を待っているモノのデータをメモリに置いておき、データが揃っているモノから順次CPUで処理します。 メモリが沢山あると処理待ちのデータを沢山ストックしておけると言う事になりますので、CPUを遊ばせずに短時間で沢山の処理が出来ます。 CPUは同時並行で4つしか処理を行えませんが、データが揃うのを待っている間には他の処理が行えるので、人間から見ると同時に沢山の処理が行われているように見えます。

関連するQ&A