• 締切済み

CPUがメモリ上の命令を実行する流れについての質問

CPUがメモリ上の命令を実行する流れについての質問です。 CPUがメモリ上の命令を実行流れについてなのですが たとえば,「Wordが起動する」までの流れがあるとして ① 「Wordを起動する」という命令がメモリ上にある ② CPUがその命令を読み取り,Wordを起動し,その演算結果をメモリに返す ③ メモリ上に「Wordが起動されている」結果が一時的に保存されている おおまかな流れはこうではないのでしょうか?

みんなの回答

  • i-q
  • ベストアンサー率28% (972/3408)
回答No.4

1、2はありません。。 ユーザからの入力に対して処理が実行されるので、 CPUが勝手に読みに行ったりはしません。

  • kzr260v2
  • ベストアンサー率48% (790/1623)
回答No.3

>>おおまかな流れはこうではないのでしょうか? 残念ですが適切な説明ではないと思います。 印象としてになりますが、質問主さんの表現ですと、「細胞ひとつひとつの説明」と言いながら、次にいきなり「細胞の動作として腕の関節の動作を例としている」みたいな感じです。そこには、腕が骨や筋肉や神経や血管などなどの組み合わさりや、特化した細胞がそれぞれで多数あつまりそれぞれの箇所を構成している、などの必要な説明が抜けている訳です。 ※ CPUの内部動作の流れは、とても細かく厳密です。残念ですが、CPUのおおまかな流れの説明としては適切ではないと、私は感じました。なぜなら、CPUが内蔵している命令セットは、【とても低レベル】です。CPUのワンステップの命令で「Wordを起動」なんてものは存在しないのです。例えば(理解する必要がないのでざっくり読んでください)、アキュムレータという計算をする所にデータを読み込み、そのデータといずれかのデータでいずれかの計算をし、結果により分岐したりします。質問主さんは「意味が分からない」と思われるかもしれませんが、それは正しい反応です。WindowsのようなOSも、Wordのようなアプリも、CPU上ではとても低レベルな命令で実行されますので、意味がわからなくて当然なのです。 Wordのようなアプリを作成するプログラマーは、CPUの命令をワンステップずつ記述することは、ほとんどありません。C言語やC++などの高級言語で記述することで、ワンステップ記述よりも効率的にプログラミングしています。 ※ どうしてもWordを例になさりたいなら、「ユーザーの操作などによりWordの起動のリクエストがきて、Wordの起動のためのOSの予備動作や、Word自身によるWord起動時の初期化動作などがあり、画面としてWordが表示される」といったCPUという単語は使わないものになります。 ※ 「Wordを起動する」といった、一見すると些細な動作ですが、周辺機器やOSの動作などが多数介在します。 例えば、マウスでWordのアイコンをダブルクリックした直後、OSのマウスデバイスドライバはマウスからの信号を受け取り、一定期間内にクリックが連続したとして、ダブルクリックのメッセージの発生をOSに通知します。OSはフォーカスを受けているアプリへメッセージを通知します。この後はアプリの起動に向けた様々な動作をします。場合によりインストール状態をレジストリから読み取ることもあります。メモリー空き容量などのチェックを経て、特定したアプリをストレージからメモリーへロードする、、、なんて流れです。この時点でまだWord自体は動作前ということをご理解ください。 このように、Wordがロードされる以前の段階で、様々なプログラムが動作します。そして、今ご案内した内容は、CPUのステップではありません。OSがどのように動作しているかの流れです。 ※ CPUという言葉を使われたいなら、「CPUはプログラムカウンターが示しているアドレスを読み出し、その命令に沿って実行する。実行結果によりプログラムカウンターがプラス1され次のアドレスを指し示す、という場合もあれば、先程のプログラムカウンターを別のアドレスへ変更し、そちらの処理をする場合もある」なんて使い方になります。 以上、参考にならなかったらごめんなさい。

  • dragon-man
  • ベストアンサー率19% (2701/13654)
回答No.2

CPUがメモリ上の命令を実行する流れ プログラム(OS、Wordなどのアプリ)は実行命令(インストラクション)の羅列。メモリに書き込まれている。 CPUの中のレジスタ(インストラクションカウンター)が命令をメモリから書かれた順番通り読み取って次々に実行する。途中に分岐命令があるとそこへ飛んで読み取り実行を続ける。 これが命令を実行する流れです。OSもアプリも例外ではありません。

  • kamura01
  • ベストアンサー率30% (61/200)
回答No.1

CPUとストレージ(質問で言うword)の間でデータの受け渡しをするのが主な機能です。 CPUの処理が速い為、ストレージの転送を待つ間にメインメモリがあらかじめデータを蓄えてCPUへデータを受け渡ししています。 ストレージにあるデータは高速なメモリに蓄えられ、メモリを経由してCPUに送って処理の最速化をしています。

関連するQ&A

  • CPUがメモリ上に書かれている命令を実行した後

    CPUがメモリ上に書かれている命令を実行した後の流れについての質問です。 たとえばメモリ上に「Wordを開く」などの命令があるとき, CPUはその命令を実行すると思いますが,命令を実行とは CPUは, ① ストレージにあるWordのファイルにアクセスする(CPUが直接) それとも ② Wordを開くという演算結果をメモリに返し,その結果,Wordが起動する(CPUの演算結果がメモリを経由) ①と②のどちらでしょうか?

  • CPUがメモリ上の命令を実行した後の流れについての

    CPUがメモリ上の命令を実行した後の流れについての質問です。 メモリ上の「Wordを起動する」という命令をCPUが読み取り,Wordを起動したとします。 その「Wordが起動した」という状況はメモリ上に保存されているのですか? つまり, ① メモリ上に「Wordを起動する」という命令がある ② CPUがWordのファイルにアクセスし,Wordが起動 ③ Wordが起動したという情報がメモリに残る

  • OSとCPUとメモリの関係についての質問です。

    OSとCPUとメモリの関係についての質問です。 OSがCPU上で実行されるときの流れですが ① OSのある処理がメモリにロードされる ② CPUがメモリにアクセスして,OSの処理を実行する ③ CPUで実行した処理がメモリ上に返される ④ 出力される おおまかな流れはこれで合っていますでしょうか?

  • 複数バイト命令実行のタイミング

    1バイト単位でメモリの各アドレスにデータが保存されているコンピューターにおいて、複数のバイトで表される命令がどのように実行されるのか教えて下さい。 メモリには一つのアドレスごとに8ビット(1バイト)のデータが入っており、CPUはプログラムカウンタで示されたメモリ上のアドレスにあるデータや命令を一つずつ順番に読み込んで、それをデコーダーが解釈し各回路への指令に変換することでプログラムを実行していくということは理解しています。 しかし現在の32ビットコンピューターなどにおいてアセンブリの命令、例えば「MOV A,B」(Bレジスタの内容をAレジスタにコピーする)といった命令は、「B90001」などの3バイトのマシン語で表されるとすると、メモリ上では アドレス  内容 0000  0xB9 0001  0x00 0002  0x01 のように3つの連続するアドレスにまたがってデータが存在し、CPUが「MOV A,B」を読み込み、それを順次デコーダーに送るまでには「MOV」、「A」、「B」の3クロックを要すると思います。 その際、デコーダーが命令を解釈し各回路に指令の信号を送るタイミングというのは、最後の「B」のデータを読み込んだ時点になるのでしょうか?もしそうならば、3クロック目に最後の「B」のデータがデコーダーに到着するまでの間、「MOV」と「A」のデータというのはCPUにメモリから読み込まれた後はどのように扱われるのでしょうか? 少し質問が分かりにくく恐縮ですが、情報工学を独学で勉強しており、プログラムが実際の回路でどのように実行されるのか理解したいと思っています。 どうぞご回答よろしくお願い致します。

  • PICの命令 ADDWF f,d のメモリアクセス

    ファイルレジスタf1が定義されていて ADDWF f1,f ;f1=W+f1(=は代入演算子)を実行するとき, (1) W+f1を行なうには,f1のメモリにアクセスする必要があります。 (2)f1=W+f1を行なうには,再度f1のメモリにアクセスする必要があると思いますが, この命令は1命令サイクルで実行されます。 ところで, MOVWF f ; W->f も1命令サイクルで実行されます。 しかし,この命令はメモリに一度アクセスするだけです。 ADDWF f1,f は1命令サイクルで本当に2度メモリアクセスしているのでしょうか? それとも,また違った方法で実行されているのでしょうか? (出典付き,でお教えていただけるとありがたいですが)

  • CPUについて教えて下さい。

    CPUについてこれまで調べて分かったことは、  ・処理能力の目安となる数値として、クロック周波数を用いる  ・レジスタに記憶されているデータに対して演算を行う  ・レジスタからメモリーやその他の部品にデータを転送する  ・メモリやその他の部品から、レジスタにデータを転送する があります。 それ以外に・・・  (1)補助記憶装置からのみ命令を読み取り、命令を実行する  (2)内部に主記憶装置(メモリ)を持つ  (3)CPUは演算を行い、制御機能は持たない  (4)主記憶が多ければ多いほどCPUの動作は遅くなる  (5)クロック信号が発生する間隔が短いほど、CPUの動作は高速になる この中から最も適切なものを1つ選ばなくてはなりません。 (1)は“補助記憶装置からのみ”というのが違うと思います。 それ以外はちょっと分からないので、どなたかお知恵をかして下さい。 解説も添えてもらえると助かります。 回答よろしくお願いします!

  • CPUとメモリの違い

    CPUとメモリについて質問させてください。 この二つについて色々と検索してみたのですが、どうもよくわかりませんでした。 ・CPUの性能が良いほど、パソコンの処理能力があがる。 ・メモリ量が多いほどPCの動作は速く、快適に使えるようになる。 という事がわかったのですが、具体的にはどうなのでしょう?? パソコンの起動速度、ワードソフト等の起動速度、 動画編集の速度、アプリケーションを多く起動している状態の安定度、 スムーズな動画の再生、 これらはUPUとメモリのどちらに影響されるのでしょうか? よろしくお願いします。

  • CPUの回路について教えてほしいです!

    ・5ビットCPU:CPUが5ビットずつ読み出し専用メモリからデータを取り込む。 ・レジスタ:2ビットを記憶できるレジスタを1つ持っている。 ・アドレス空間:CPUは2ビットの異なるアドレスを参照できる。 ・メモリ:読み出し専用メモリと書き込み専用メモリを持っている。読み出し専用は5ビット、4ワード。書き込み専用は2ビット、1ワード ・機械語:5ビット中、上位3ビットがOPコード、下位2ビットがオペランドとなる。 ・命令:CPUの命令は以下の5種類。 ・加算命令:レジスタの値とオペランドの値を加算し、その値をレジスタにセット。 ・減算命令:レジスタの値からオペランドの値を減算し、その値をレジスタにセット。 ・ロード命令:オペランドの値をレジスタにセット。 ・ストア命令:書き込み専用メモリにレジスタの数値を書き込む。下位2ビットは無視される。 ・ジャンプ命令:オペランドの値が示す読み出し専用メモリのアドレスに書かれた命令を次に実行する命令とする。 このような仕様にに基づくUPUの回路図を教えてください。 また減算命令、ジャンプ命令、メモリへの書き込みをするような回路について文章でよいので説明していただけるとありがたいです。

  • CASL2(減算命令と比較命令の違い)

    CASL2勉強用のテキストに【以下】のような説明文がありました。前半部分の意味は分かるのですが、後半部分(SFに設定される・・・)という所からの説明の意味がよく分かりません。 【比較演算命令の特徴】  比較減算命令(CPA、CPL)の大きな特徴は、命令の実行によって状態が変化するハードウェアはFRだけである点である。比較演算命令の実行によって、汎用レジスタや主記憶装置の状態はまったく変化しない。  SFに設定される値は、比較命令では比較される数値の大小によって決定されるが、減算命令では演算結果の最上位ビットの値が設定される。このことから減算命令ではSFの値だけから元の数値の大小を判定することができない。 (1)減算命令の結果の最上位ビットがマイナスになって大小関係が判定できない場合などあるのでしょうか?(例)12-15=-3 → 12<15 このように判定できているように思うのですが? (2)そもそも大小の判定は減算によって判定しているのではないのでしょうか?それでは、内部的にはどのようにして大小判定を行っているのでしょうか? そもそも文章を理解できていないのかも知れませんが・・・ よろしくお願いします。

  • CPUのハード的な仕組みがわかりません

    CPUがメモリに格納された命令を読み取って 命令を解釈して実行をする。 この「読み取り」「解釈」「実行」の3つがハード的にどのような仕組みで動いているのか ピタゴラスイッチのようなアナロジーで分かりやすく教えて下さい。 よろしくお願いします。

専門家に質問してみよう