CPUとメモリの動作原理とは?:データの密接なやり取りを分かりやすく解説🌱
こんにちは!皆さんの中には普段パソコンを使って仕事をしている方も多いと思いますが、パソコンの中でCPUとメモリがどのようにデータをやり取りしているのか、その動作原理についてはご存じでしょうか?
コンピュータの中で、CPUと主記憶装置は密接に連携して働いています。この記事では、各構成要素がどのようにデータをやり取りしているのか、詳しく解説していきますね✨
コンピュータを構成する5大装置
まずはコンピュータを構成している5大装置について復習しておきましょう。一般的には以下の5つの装置を5大装置と呼んでいます。
入力装置:データや指示をコンピュータに送る装置。
出力装置:コンピュータが処理したデータを表示する装置。
記憶装置:データやプログラムを保存する装置。
演算装置:四則演算を行う装置。
制御装置:コンピュータ全体の動作を管理する装置。
各要素の詳細な内容については、以下の記事で詳しく説明しているので、良ければ読んでみて下さい👇
今回は、この中でも演算装置と制御装置をまとめた中央処理装置(CPU)と記憶装置の中でも一時的な記憶を担当する主記憶装置の間でどのようなデータのやり取りが行われているのかについて、説明したいと思います🌱
CPUと主記憶装置の構成要素
ここでは、CPUと主記憶装置の構成要素について詳しく見ていきましょう。CPUは、コンピュータの頭脳とも言える部分で、以下の主要な要素で構成されています:
制御装置
プログラムカウンタ(PC):次に実行する命令のアドレスを保持
命令レジスタ(IR):現在実行中の命令を保持
命令解読器:命令の内容を解析
クロックジェネレータ:CPUの動作タイミングを制御
演算装置
算術論理演算装置(ALU):計算や論理演算を実行
汎用レジスタ:一時的にデータを保存
次に、主記憶装置は、CPUが処理するデータや命令を保存する場所です。ここには以下のものが格納されています:
主記憶装置
命令・データ:プログラムの実行手順と処理対象の情報
アドレス:データや命令の保存場所を示す番地
これらを図で表したものがこちらです。この時点では、命令やデータは何も入っておらず、ただ各アドレスだけが決まっている状態です。まずは全体の構成について抑えてもらえればOKです✨
CPUと主記憶装置のデータのやり取り
では、CPUと主記憶装置がどのようにデータをやり取りしているのか、順を追って説明します。
ここでは、2つの数値を足し算するという非常にシンプルな演算を行う例について説明します。2つの数値を足し算する命令、足し合わせる10と11という数字が主記憶装置に配置されているところからスタートします。
プログラムカウンタ0
まずは、制御装置の中のプログラムカウンタが0を指していますので、主記憶装置のアドレスが0の命令を読みに行きます(①参照)。
すると、READ A, 100と書かれていますね。この情報を制御装置内の命令レジスタに持ち帰ります(②読込)。命令レジスタはCPU内部にある記憶領域で、この命令を一時的に保存しておくことが出来ます。この時点ではただデータを読みだして保存しただけで、命令の意味までは分かっていない状態です。
この命令を命令解読器に送って初めて、この命令の意味を理解します(③解読)。この命令には、”READ A, 100”と書かれていますね。これは、
”演算装置内における汎用レジスタのAというアドレスに、主記憶装置の100というアドレスの値を読み込んでください”
ということを示しています。
今回主記憶装置の100というアドレスには⑩という数値が入っているので、この10という値を汎用レジスタのAというアドレスに読み込みます(④READ)。
ここまでで、プログラムカウンタ0の処理が一通り完了しました。データの流れを図で表すと以下のようになります。
プログラムカウンタ1
それでは次にプログラムカウンタを1にカウントアップして、処理を進めましょう。詳細は割愛しますが、全く同じようなデータの流れが行われることで、以下の図のような状態になります。
汎用レジスタのアドレスBに11という数値が読み込まれましたね。
プログラムカウンタ2
それでは、プログラムカウンタを2にカウントアップしましょう。すると次は、どのようになるでしょうか?少し想像してみて下さい🤔
正解はこのようになります👇
少し難しかったかもしれませんね。まず、プログラムカウンタ2においては、”ADD A,B”という命令が含まれています。これは、
”汎用レジスタのアドレスAとアドレスBの数値を足し合わせてください”
という命令になります。ここで、演算装置内の算術論理演算装置(ALU)が登場します。この装置は簡単に言えば四則演算を行う機能を持っています。したがって、プログラムカウンタ2が完了した時点で(⑫ADD)、算術論理演算装置がはじき出した21という計算結果が汎用レジスタCに保存されている状態になります。
プログラムカウンタ3
それでは次にプログラムカウンタを3にカウントアップしましょう。完了後は、このような状態になります👇
プログラムカウンタ3には、”WRITE 102, C”という命令が含まれていますね。この意味は、
”主記憶装置の102というアドレスに、汎用レジスタのCというアドレスのデータを書き込んでください”
ということです。したがって、21という数値が主記憶装置の102というアドレスに書き込まれました(⑯WRITE)。
プログラムカウンタ4
さて、次にプログラムカウンタを4にカウントアップすると、以下のようになります。
命令は、”STOP”ということなので、ここで実行が完了です。
10+11=21
という演算を無事に完了し、その結果を主記憶装置に保存することが出来ました🎊
おっと、一個だけ触れていなかった機能がありますね。そう、クロックジェネレータです。
クロックジェネレータは、クロック信号と呼ばれる各装置の動作タイミングを合わせる周期的な信号を生成する装置です。このクロック信号のタイミングに合わせて、上記のような参照、読込、解読といった手順が進んでいきます。
このクロック信号の1秒間の数のことをクロック周波数と呼びます。このクロック周波数が大きいほどに、素早く処理を行うことが出来るため、高速な動作が実現するという訳ですね。
上記の図では、分かりやすく3Hzと6Hzの例が載っていますが、実際のCPUのクロック周波数はGHzという単位が一般的になりました。
ご自身が持っているパソコンのクロック周波数は、以下の手順で確認することが出来ますよ✨
設定→システム→バージョン情報→デバイスの仕様→プロセッサ
私が使用しているパソコンの場合は、2.20 GHzなので、1秒間に22億回の処理を行うことが出来ます。
ぜひ皆さんもご自身のパソコンで調べてみて下さい💡
まとめ📝
CPUと主記憶装置は、絶え間なくデータをやり取りしながら協力して動作しています。CPUが頭脳だとすれば、主記憶装置は短期記憶のような役割を果たしていると言えるでしょう。
この連携により、コンピュータは高速で複雑な処理を実行することができるのです。この記事を通じて、コンピュータの中核部分であるCPUと主記憶装置の連携について、基本的な理解が深まれば幸いです!
この記事が勉強になったよという方は、スキお待ちしています🥰
今後も、半導体やテクノロジーに関する分かりやすい記事をお届けしますので、見逃したくない方はフォローも忘れないでくださいね!
最後まで読んでいただき、ありがとうございました!
#コンピュータ #入力装置 #出力装置 #記憶装置 #CPU