ページ 11

CPUとメモリの理解に関して

Posted: 2018年4月23日(月) 23:48
by pocket
お世話になっております。
あまりC言語とは関係ない質問で申し訳ありません。
ですが、C言語ではメモリに関して意識すべきだと思いましたので、こちらで質問させて頂きました。

現在メモリやCPUについて調べているのですが、少し疑問に思った点について質問させて頂きます。
よくCPUは算術演算の機能しか無いという説明を見かけます。
メモリに格納された数値同士を計算することしか出来ないという説明です。
ですが、PCはブラウジングも出来ますし、Wordで文書の作成も出来ます。

CPUは算術演算しか出来ないという説明と、PCは様々な処理が出来るという現状に非常にギャップがあるように感じます。
私自身、あまりハードウェアに詳しく無いので、想像出来ないだけかもしれませんが、
納得できるようになる為にはどうしたらよいでしょうか。
具体的には以下の質問に答えることが出来るようになりたいです。

「PCの頭脳であるCPUは算術演算しかできないのに、ブラウジングやWordのような処理ができるのはなぜか」

解決の方向性が全く見えていない状況ですので、アドバイス頂ければ幸いです。
よろしくお願いいたします。

参考までに私の知識レベルを記載いたします。
・アセンブリ言語がなんとなく分かるレベル
・メモリの仕組みがざっくり分かるレベル

Re: CPUとメモリの理解に関して

Posted: 2018年4月24日(火) 04:52
by よもやま
CPUには算術演算以外にも
・MMU
・メモリ保護機構
・A/Dセンサー
とか機能として保有していたりしますけど。。
インテル系x86CPU(MPU)だとプロテクトモードでしたっけ。
扱う話題・議論・意見の範囲が狭いようで広いです。
CAN(https://ja.wikipedia.org/wiki/Controller_Area_Network)とかも。。

Re: CPUとメモリの理解に関して

Posted: 2018年4月24日(火) 11:09
by かずま
算術演算(add, sub, mul, div)だけではありません。比較演算(cmp) や
ビット演算(and, or, xor)などもあります。演算以外に、jmp, je, jne,
call, ret など実行の順序を制御する命令もあります。

一番重要なのが転送命令(mov) です。
これで、メモリと CPU内部のレジスタとの間でデータを転送します。

メモリは CPU と接続されていますが、
メモリのある部分は外部の装置にも接続されていたりします。

外部の装置とは、液晶ディスプレイの画面だったり、キーボードのどの行の
どの列が押されているのかそうでないかを検知するものだったりします。

キーボードに接続されているメモリのデータを CPU に転送することによって
どのキーが押されたかを知ることができます。

液晶画面に接続されているメモリに CPUからデータを転送することによって、
ある画素の色や明るさを変えることができます。

外部装置に接続されているメモリとのデータの転送は、オペレーティング
システム(OS)が行うので、ブラウザやワープロなどのアプリケーション
プログラムは、API を使って OS とデータのやりとりを行うことによって
様々な処理を実行することができます。

Re: CPUとメモリの理解に関して

Posted: 2018年4月25日(水) 23:47
by pocket
返信が遅くなってしまい申し訳ありません。

>よもやまさん
回答頂きありがとうございます。
CPUの算術演算以外の機能を教えて頂きありがとうございます。
CANも名前だけは知っていたのですが、あまり詳しくないので、少し調べてみようと思います。

>かずまさん
丁寧に回答頂きありがとうございます。
ある程度イメージすることが出来ました。
ちなみに、かずまさんがおっしゃっている
「メモリのある部分は外部の装置にも接続されていたりします」
に関してですが、Windowsの場合は、「システム情報>ハードウェアリソース>メモリ」にて
参照できる情報の事でしょうか?
もし可能でしたら、返信頂ければ幸いです。
よろしくお願いします。

Re: CPUとメモリの理解に関して

Posted: 2018年4月26日(木) 12:01
by よもやま
pocket さんが書きました:
1年前

「メモリのある部分は外部の装置にも接続されていたりします」
参考がてらですが、IBM PC/ATでのメモリマップなどをば・・
IBM PC/ATのメモリマップ
メモリマップのうち「グラフィック予約領域」が外部VDPにも接続されている部分ですな。

Re: CPUとメモリの理解に関して

Posted: 2018年4月29日(日) 01:10
by pocket
よもやまさん

参考リンクを記載頂きありがとうございます。
昔のメモリは、容量が少なく比較的理解しやすいですね。

メモリとCPUの関係について自分でも調べていまして、
雰囲気は理解することが出来ましたので、
ひとまず解決とさせて頂きます。

私の疑問について考えて下さった方に、感謝いたします。
ありがとうございました。

Re: CPUとメモリの理解に関して

Posted: 2018年5月03日(木) 15:12
by あたっしゅ
>メモリに格納された数値同士を計算することしか出来ないという説明です。

 メモリから CPU に読み込む命令を LD(ロード)、CPU からメモリに書き込む命令を ST(ストア)、 LD, ST を合わせてMV(ムーブ)と呼びます。それぞれ、load, store, move から来ています。 move 移動と呼ばれていますが、コンピュータの場合は、移動元は消えないで残っています。
  画面表示に関して言えば、書きこまれた内容を、人間の目に見える形で表示するメモリがあるのです。 VRAM と呼ばれています。説明の為に簡略化した例ですが、例えば、000 が書き込まれれば真っ黒な点、 255 が書き込まれれば真っ白な点が表示されるとして、その点が 5 * 5 = 25 個集まっているとすれば、

000, 000, 255, 000, 000
000, 255, 000, 255, 000
255, 000, 000, 000, 255
255, 255, 255, 255, 255
255, 000, 000, 000, 255

黒字に白地の「大文字の A」が表示できるわけです。 「大文字の A」という文字コードを受信したら、 メインメモリ上の「大文字の A」のデータが格納されているところから、 VRAM に転送(ムーブ)してやれば 人間の目に見えるようになります。