メモリは机でCPUは脳
昨晩だったか、それは違う!とかいう某掲示板の「まとめ」を見たので。
例えば料理作るときの、キッチン台が「メモリ」に相当する。
その上に料理の作り方が書かれた「レシピ本」が置かれる。
これが「プログラム」に相当する。
そして、野菜だの魚だの肉だのの「材料」。
これが「データ」に相当する。
そしてレシピ本みながら、材料を加工して調理するオカン。
これが「CPU」に相当する。
「メモリは机でCPUは脳」という例えは、何も間違ってないだろ?
ちなみに材料が保管されてる冷蔵庫が「HDD」等の記憶媒体(ストレージ)に相当する。
レシピ本も、キッチン台の上に出しっぱなしにはしないで、通常はキッチンにある棚とかにしまってあるだろう。
このキッチンにある戸棚などの収納スペースも「HDD」に相当する。
ゲームのアプリケーションなんかを考えると分かりやすい。
プレイヤーのキー入力に応じて、自機の座標を+1したり-1したり、あるいは敵を動かしたり、攻撃したり、HPの増減を計算したりする計算処理部分の「プログラム」と、自機や敵のドット絵(今だと3Dモデルデータだろうか)の「データ」は両方とも「物理メモリ」に読み込まれるのが普通。
またCPU自身も「内部メモリ」というものを実は持っている。
「キャッシュ」の事ではない。
「レジスタ」と呼ばれるものだ。
何かを計算する時、物理メモリにあるデータをいったんCPUの内部メモリにまず読み込む。
そのうえで計算を行い、結果を物理メモリに戻すというのが基本。
また、物理メモリのどこに書かれた命令を実行中かを管理しているPC(プログラムカウンタ)も、CPUの内部メモリ、レジスタの一種だ。
料理作ってるオカンが、いまレシピ本のどのページのどこの作業をしてるのか、頭の中に記憶してるのと同じだ。
なお最近のコンピュータはCPUが全ての作業を行うわけではない。
例えば冷蔵庫から肉や魚を取り出すのは、オカンではない。
「ちょっとたかしー、どうせ暇なんだから冷蔵庫から魚の切り身出してちょーだい!」とか、あるいは料亭みたいなとこだと、板長に見習い新人板前が言われてやらされる。
このたかし君や新人板前が、SATAコントローラにあたる。
デバイスマネージャ見れば、必ず居るはずだ。
そのほかにも映像はグラフィックチップが、音声はサウンドチップが、キーボードやマウスからの入力はUSBコントローラがCPUに代わって管理・運用している。
CPUはそれらに指令を出して、データを貰ったり渡したりしているだけだ。
「はいじゃあ画面にこういう絵描いて」とか「はいこれ楽譜、これに沿って音楽演奏して」みたいな感じ。
USBコントローラには、「接続されてるキーボードやマウスに動きがあったら教えてね」って。
USBコントローラはキーボートの入力やマウスの動きやクリックが発生した時に、「割り込み」という信号を使ってCPUに知らせる。
「割り込み」信号を受け取ったCPUは、いま実行中の計算処理を一時中断して、何のキーが押されたのか確認して、それに対応した処理を行い、それが済んだら一時停止していた元のプログラムの実行を再開する。
こうする事で、プログラム側でいちいち「キーボードの入力あったかな?」「マウス動かされたかな?」って確認する処理をしないで済むわけだ。
昔のBASICのプログラムなどはいちいち入力確認をプログラム側で行っていた。
だからキーを押してもすぐにキャラクターが動かないなんてゲームもあった。
PC88時代の初期の頃の「ウルティマ」って言うRPGなんですけどねw
まぁそんな事はどうでもいい。
受験勉強と同じく、単語や年表や公式を丸暗記しただけで、分かったような気分になるなと。
だから応用がきかない。
工業大学だの専門学校だの卒業して入社しても、プログラマとして使えない人間になってしまうのだと。
例えば料理作るときの、キッチン台が「メモリ」に相当する。
その上に料理の作り方が書かれた「レシピ本」が置かれる。
これが「プログラム」に相当する。
そして、野菜だの魚だの肉だのの「材料」。
これが「データ」に相当する。
そしてレシピ本みながら、材料を加工して調理するオカン。
これが「CPU」に相当する。
「メモリは机でCPUは脳」という例えは、何も間違ってないだろ?
ちなみに材料が保管されてる冷蔵庫が「HDD」等の記憶媒体(ストレージ)に相当する。
レシピ本も、キッチン台の上に出しっぱなしにはしないで、通常はキッチンにある棚とかにしまってあるだろう。
このキッチンにある戸棚などの収納スペースも「HDD」に相当する。
ゲームのアプリケーションなんかを考えると分かりやすい。
プレイヤーのキー入力に応じて、自機の座標を+1したり-1したり、あるいは敵を動かしたり、攻撃したり、HPの増減を計算したりする計算処理部分の「プログラム」と、自機や敵のドット絵(今だと3Dモデルデータだろうか)の「データ」は両方とも「物理メモリ」に読み込まれるのが普通。
またCPU自身も「内部メモリ」というものを実は持っている。
「キャッシュ」の事ではない。
「レジスタ」と呼ばれるものだ。
何かを計算する時、物理メモリにあるデータをいったんCPUの内部メモリにまず読み込む。
そのうえで計算を行い、結果を物理メモリに戻すというのが基本。
また、物理メモリのどこに書かれた命令を実行中かを管理しているPC(プログラムカウンタ)も、CPUの内部メモリ、レジスタの一種だ。
料理作ってるオカンが、いまレシピ本のどのページのどこの作業をしてるのか、頭の中に記憶してるのと同じだ。
なお最近のコンピュータはCPUが全ての作業を行うわけではない。
例えば冷蔵庫から肉や魚を取り出すのは、オカンではない。
「ちょっとたかしー、どうせ暇なんだから冷蔵庫から魚の切り身出してちょーだい!」とか、あるいは料亭みたいなとこだと、板長に見習い新人板前が言われてやらされる。
このたかし君や新人板前が、SATAコントローラにあたる。
デバイスマネージャ見れば、必ず居るはずだ。
そのほかにも映像はグラフィックチップが、音声はサウンドチップが、キーボードやマウスからの入力はUSBコントローラがCPUに代わって管理・運用している。
CPUはそれらに指令を出して、データを貰ったり渡したりしているだけだ。
「はいじゃあ画面にこういう絵描いて」とか「はいこれ楽譜、これに沿って音楽演奏して」みたいな感じ。
USBコントローラには、「接続されてるキーボードやマウスに動きがあったら教えてね」って。
USBコントローラはキーボートの入力やマウスの動きやクリックが発生した時に、「割り込み」という信号を使ってCPUに知らせる。
「割り込み」信号を受け取ったCPUは、いま実行中の計算処理を一時中断して、何のキーが押されたのか確認して、それに対応した処理を行い、それが済んだら一時停止していた元のプログラムの実行を再開する。
こうする事で、プログラム側でいちいち「キーボードの入力あったかな?」「マウス動かされたかな?」って確認する処理をしないで済むわけだ。
昔のBASICのプログラムなどはいちいち入力確認をプログラム側で行っていた。
だからキーを押してもすぐにキャラクターが動かないなんてゲームもあった。
PC88時代の初期の頃の「ウルティマ」って言うRPGなんですけどねw
まぁそんな事はどうでもいい。
受験勉強と同じく、単語や年表や公式を丸暗記しただけで、分かったような気分になるなと。
だから応用がきかない。
工業大学だの専門学校だの卒業して入社しても、プログラマとして使えない人間になってしまうのだと。