HOME»基本情報技術者試験掲示板»基本情報技術者試験の勉強中の疑問
投稿する
いいえ、違います。
プログラムは電子データの形で、磁気ディスクなり、SSDなり、USBメモリなりに格納されています。この時点では主記憶には命令は配置されていません。
この状態において、
このプログラムを実行する指示を与える(例:プログラムのアイコンをダブルクリックする)ことで、プログラムが主記憶に読み込まれ(ロード load)、すなわち、
プログラムを主記憶にロードし終えたら、
最初に実行すべき命令の主記憶上のアドレスがプログラムカウンタ(命令アドレスレジスタ)に設定されて、プログラムの実行(命令語を命令レジスタに取り出し、デコーダで解読する)が始まります。
»[5803] 試験範囲とテキストについて 投稿数:3
»[5802] 再起的な手続きを用いてn桁の2進数を全て出力する 投稿数:3
基本情報技術者試験の勉強中の疑問 [5805]
いときさん(No.1)
ある参考書で試験勉強していて疑問ができたのでどなたか教えていただけると嬉しいです。
CPU内部の制御システムには容量が極小の記憶装置(レジスタ)があって、それらが命令実行サイクルに関わっている事を学び、そのサイクルの流れもざっくりと学びました。それが次のようなものでした。
①プログラムカウンタ(命令アドレスレジスタ)で命令の主記憶上のアドレスを記憶
②命令レジスタでそのアドレスの命令語を記憶
③その命令語の中の命令部分はデコーダで解読にかけて演算装置に伝える。アドレス部分(これをアドレスレジスタで計算すると命令を実行したいデータのアドレス(実効アドレス)が得られる)はアドレスレジスタに計算させ、求まった実効アドレスを主記憶上に提出(これが格納?)させる。
④演算装置が「主記憶上に提出(格納)された実効アドレス」に配置されているデータを取り出して伝わってきた解読済みの命令(演算)をそのデータにおこなって、その演算結果を再度主記憶上に提出(格納)する
このサイクルをだいたいは理解できたのですが、この①②から私はそもそも命令のアドレスを記憶するところから入るということは、主記憶上には前提として様々な命令が何個も格納されていてアドレスさえわかればそのアドレスの命令を実行するだけでいいという状態なのかなと思いました。ただ参考書にはそのあたりのことは載っていなかったので主記憶上にはもうすでにたくさんのパターンの命令が配置されていてどの命令をするかは命令の主記憶上のアドレスを記憶するだけでいいという理解が正しいのか教えていただきたいです。長文失礼しました。
CPU内部の制御システムには容量が極小の記憶装置(レジスタ)があって、それらが命令実行サイクルに関わっている事を学び、そのサイクルの流れもざっくりと学びました。それが次のようなものでした。
①プログラムカウンタ(命令アドレスレジスタ)で命令の主記憶上のアドレスを記憶
②命令レジスタでそのアドレスの命令語を記憶
③その命令語の中の命令部分はデコーダで解読にかけて演算装置に伝える。アドレス部分(これをアドレスレジスタで計算すると命令を実行したいデータのアドレス(実効アドレス)が得られる)はアドレスレジスタに計算させ、求まった実効アドレスを主記憶上に提出(これが格納?)させる。
④演算装置が「主記憶上に提出(格納)された実効アドレス」に配置されているデータを取り出して伝わってきた解読済みの命令(演算)をそのデータにおこなって、その演算結果を再度主記憶上に提出(格納)する
このサイクルをだいたいは理解できたのですが、この①②から私はそもそも命令のアドレスを記憶するところから入るということは、主記憶上には前提として様々な命令が何個も格納されていてアドレスさえわかればそのアドレスの命令を実行するだけでいいという状態なのかなと思いました。ただ参考書にはそのあたりのことは載っていなかったので主記憶上にはもうすでにたくさんのパターンの命令が配置されていてどの命令をするかは命令の主記憶上のアドレスを記憶するだけでいいという理解が正しいのか教えていただきたいです。長文失礼しました。
2025.02.22 21:47
jjon-comさん(No.2)
★FE プラチナマイスター
> 主記憶上には前提として様々な命令が何個も格納されていて
> 主記憶上にはもうすでにたくさんのパターンの命令が配置されていて
いいえ、違います。
プログラムは電子データの形で、磁気ディスクなり、SSDなり、USBメモリなりに格納されています。この時点では主記憶には命令は配置されていません。
この状態において、
このプログラムを実行する指示を与える(例:プログラムのアイコンをダブルクリックする)ことで、プログラムが主記憶に読み込まれ(ロード load)、すなわち、
> 主記憶上にたくさんのパターンの命令が配置されて
プログラムを主記憶にロードし終えたら、
最初に実行すべき命令の主記憶上のアドレスがプログラムカウンタ(命令アドレスレジスタ)に設定されて、プログラムの実行(命令語を命令レジスタに取り出し、デコーダで解読する)が始まります。
2025.02.23 00:49
いときさん(No.3)
丁寧な説明ありがとうございます!
別の場所に格納されているプログラムをロードすることで初めて、たくさんの指示を一度主記憶上に配置することができ、その後に私が習った実行サイクルが始まると言うことなんですね。
主記憶上に元々配置してあるという考え方は容量がいくらあっても足りないですもんね。
簡単なプログラムの例で
①整数型の変数の箱Aを用意
②最初にそのAに1を代入
③以降そのAが5になるまでAにA+1を代入
みたいなものを考えると、このプログラムをロードするとこの三つの命令が主記憶上に配置されて①を実行するために先ほどのサイクルをする、②を実行するためにサイクルをする、③を実行するためにサイクルをするって感じなんですね。
別の場所に格納されているプログラムをロードすることで初めて、たくさんの指示を一度主記憶上に配置することができ、その後に私が習った実行サイクルが始まると言うことなんですね。
主記憶上に元々配置してあるという考え方は容量がいくらあっても足りないですもんね。
簡単なプログラムの例で
①整数型の変数の箱Aを用意
②最初にそのAに1を代入
③以降そのAが5になるまでAにA+1を代入
みたいなものを考えると、このプログラムをロードするとこの三つの命令が主記憶上に配置されて①を実行するために先ほどのサイクルをする、②を実行するためにサイクルをする、③を実行するためにサイクルをするって感じなんですね。
2025.02.23 09:49
その他のスレッド
»[5804] 正しく申し込みできてたら受かっていたのだろうか… 投稿数:2»[5803] 試験範囲とテキストについて 投稿数:3
»[5802] 再起的な手続きを用いてn桁の2進数を全て出力する 投稿数:3
