情報系の授業を取ってる大学生やコンピュータの知識を深めたいと思っている方に役立ってもらえれば嬉しいです。
コンピュータは以下の要素から構成される。それぞれの装置の間には、データ、アドレス、制御信号を送受信する伝送路(バス)がある。
1:主記憶装置(メインメモリ)
2:中央処理装置(CPU: Central Processing Unit, またはプロセッサ)
・制御装置
・演算装置(プログラムカウンタ、演算レジスタ、キャッシュメモリ等)
3:周辺機器
キーボード、マウス、マイク、プリンタ、etc...
1:主記憶装置
主記憶装置は様々なデータやプログラムを記憶するための装置である。
主記憶装置には、半導体で構成されたメモリチップが使われている。メインメモリとも呼ばれている。
主記憶装置にはアドレスがあり、それに対して値が格納されている。値は、プログラムのコードであることもあれば、数値や文字列であることもある。主記憶装置の容量は性能を表し、それはアドレスの種類の多さを用いて表現される。例えばメインメモリが1Gバイトのコンピュータは、1バイトのコンピュータより多くのプログラムやデータを記憶することができる(バイトはデータの大きさを測る単位)
一般に容量の大きい記憶装置は、データの読み書きの時間がかかる。例えばキャッシュメモリと呼ばれる記憶装置は、レジスタよりも低速であるが、主記憶装置よりも速くデータを読み書きすることができ、よく使用するプログラムのデータを一時的に保存しておくために使用されている。ただし、キャッシュメモリはメインメモリよりも容量が小さいため、メインメモリのすべてのプログラムやデータを格納しておくことはできない。高速の記憶装置を大量にコンピュータの中に入れておけばいいと考えるかもしれないが、一般に高速な記憶装置は高価である。
コンピュータの電源を切ると、主記憶装置内のすべての内容は消去される。このように通電していなければ内部のデータが消えてしまう記憶装置を揮発性メモリという。主記憶装置に使われている半導体メモリは揮発性メモリである。それに対して、ハードディスクやUSBメモリは不揮発性メモリであるため、通電していなくても内容は消えない。
速い→遅い
レジスタ→キャッシュメモリ→メインメモリ→SSD→磁気ディスク、光ディスク→磁気テープ
2:中央処理装置(CPU)
CPUはコンピュータの計算の役割を担っている。
メインメモリ上に書かれたプログラミング言語はJavaやC言語ではなく機械語に翻訳されたプログラムであり、このようなプログラムは、複数の命令から構成されていて、通常は一つ一つ処理の順番に従って連続したアドレスに格納される。
プログラムは以下のように処理が進み、終了するまで繰り返される。
→プログラムカウンタを参照し、次の命令が格納されているメモリ上のアドレスを特定
→プログラムカウンタが指し示している主記憶装置のアドレスに格納されている命令を取り出す
→制御装置は取り出した命令を解釈して実行
・指定されたメインメモリのアドレスからデータを取り出し、演算レジスタに格納
・演算装置に処理の実行を依頼。これによって、プログラムカウンタの値が書き換えられる。通常は、プログラムカウンタの値が一つ増える。これは、次の命令を実行するための準備である。
なぜ処理に必要なデータをメインメモリから演算レジスタに持っていくかというと、データの読み書きに要する時間が記憶装置によって異なるからである。演算レジスタは単一の値しか格納できないが、データを読み書きするのがもっとも早い。
3:周辺機器
色々あるが主に補助記憶装置について説明したい。
補助記憶装置には、ハードディスクドライブ(HDD:Hard Disk Drive)やSSD(Solid State Drive)などがある。外部記憶装置ともいう。
外部記憶装置は不揮発性メモリである。例えば、ハードディスクには磁気ディスクが使われていて、磁気ディスクは、円盤に磁性体が塗布されており、それを磁化させることでデータを記録する。それゆえハードディスクに記録されたデータは、HDDの電源を切っても消えない。
HDDは強い衝撃を与えると、回転軸が折れたり、ディスクが傷ついたりするといった物理的な弱点がある。
今後はSSDがHDDに代わって使われる機会が増えると思われる。SSDは、HDDと違い機械的な動作を持たない。SSDの内部にはデータを記憶するためのメモリチップと。それを読み書きするための制御装置が入っている。機械的な動きがない分、静かで落下にも強いという利点がある。
USBメモリはSSDの一種である。