基礎知識

ハードウェアの分類

入力装置
ユーザからの入力を受ける装置。キーボードやマウスが入力装置にあたります。

記憶装置
入力されたデータを記録する装置。ハードディスクやメモリが記憶装置にあたります。

演算装置
記憶装置に保存されたデータを演算する装置。CPU内部に演算装置が含まれています。

制御装置
ハードウェアの各装置を制御する装置。CPU内部に制御装置が含まれています。

出力装置
演算結果のデータをユーザに対して出力する装置。ディスプレイやプリンタが出力装置にあたります。

ハードウェアは、こうした各種装置の集まりです。各装置はバスと呼ばれる信号を通して、データのやり取りをしています。

CPU内部には、ALUと呼ばれる演算装置が含まれています。ALUは、算術論理演算回路(Arithmetic Logic Unit)の略です。ALUは加算や減算をはじめとした算術演算、AND演算、OR演算、NOT演算などの論理演算を実行する回路となっています。CPU内部には、データや命令を一時的に記憶しておく回路があります。これをレジスタといいます。レジスタはビットを記憶する記憶装置です。レジスタは、使用用途によっていくつかの種類があります。

命令デコーダは命令を解読し、実行部へ指示信号を出す回路です。また、命令を解読することをデコード(decode)といいます。命令デコーダは、CPU内部に含まれています。

プログラム・データは、メモリに記憶された後に実行されます。メモリには、プログラム・データを格納する場所を示すアドレスがつけられています。アドレスを『番地』と呼ぶこともあります。

名 前 内 容
プログラムカウンタ 次に命令を取り出すアドレスを記憶するレジスタ。
プログラムレジスタ、PCとも呼ばれる。
命令レジスタ 取り出した命令を一時的に記憶するレジスタ。IRとも呼ばれる。
ベースレジスタ プログラムの先頭アドレスを保持するレジスタ。
指標レジスタ
(インデックスレジスタ)
データを連続的に取り出す際に使われるレジスタ。
アキュムレータ 演算対象、演算結果を格納するレジスタ。
汎用レジスタ 目的の定められていないレジスタ。
通常は演算結果などを記憶するために使われる。

コンピュータはまず、プログラムをメモリに読み込みます。そして、CPUによってメモリに記憶された命令を取り出し、解読、実行することによって処理を行います。命令処理の動作の基本は次のようになっています。

命令と取り出し

プログラムカウンタに示されたアドレスから、命令を取り出します。命令を取り出すことをフェッチともいいます。取り出した命令は命令レジスタに保持されます。次の命令が取り出せるように、プログラムカウンタを1つ繰り上げます。ここでは、プログラムカウンタで示された0003番地から命令を取り出し、カウンタを1つ繰り上げています。

命令解読

取り出した命令が加算命令であることを命令デコーダが解読(デコード)します。加算器を動作させる信号が送られます。

オペランド読み出し

データが格納されているアドレスを算出し、データを汎用レジスタなどに取り出します。ここでは、0001番地から値が2のデータを取り出しています。この計算対象となるデータをオペランドといいます。

演算実行

演算を実行して結果をレジスタに書き戻します。ここでは汎用レジスタのデータを加算しています。

これで計算ができました。さらに続けて、@〜Cの処理を繰り返すことになります。プログラムカウンタには次のアドレスが格納されていますから、メモリ上の命令を順番に実行することになります。このように一般的なコンピュータは、メモリから順番に命令を取り出し、実行するようになっています。このコンピュータは、あらかじめメモリにプログラムを記憶させておくため、プログラム内臓方式と呼ばれます。 現在のコンピュータはプログラム内臓方式が基本となっています。このコンピュータはノイマン型コンピュータとも呼ばれます。

アドレス指定方式

即値方式
即値方式は、計算対象となる命令中に直接指定する方式です。この方式では、命令内のデータをそのまま使用します。アドレスの計算は行いません。

即値方式

直接アドレス指定方式
直接アドレス指定方式は、データが格納されているアドレスを指定する方式です。

直接アドレス指定方式

間接アドレス指定方式
間接アドレス指定方式は、データのアドレスが格納されている場所のアドレスを間接的に指定する方法です。

間接アドレス指定方式

指標アドレス指定方式
指標アドレス(インデックスアドレス)指定方式は、命令中にアドレスと指標レジスタ番号を指定する方式です。指標レジスタに記憶されているアドレスを調べ、2つを加算する方式です。

指標アドレス指定方式

ベースアドレス指定方式
ベースアドレス指定方式は、命令中に指定されたアドレスとベースレジスタのアドレスを加算する方式です。ベースレジスタには、プログラムの先頭アドレスが格納されています。このため、ベースアドレス指定をすることで、メモリ上のどこに配置されても動作するプログラムとすることができます。

ベースアドレス指定方式

相対アドレス指定方式
相対アドレス指定方式は、命令中に指定したアドレスとプログラムカウンタのアドレスを加算する方法です。ベースレジスタをもたない場合に使われることがあります。

相対アドレス指定方式

問題

同一メモリ上で転送するとき、転送元の開始アドレス、転送先の開始アドレス、方向フラグ及び転送語数をパラメタとして指定することでブロック転送が行えるCPUがある。図のようにアドレス1001から1004の内容をアドレス1003から1006に転送する場合、パラメタとして適切なものはどれか。ここで、転送は開始アドレスから1語ずつ行われ、方向フラグを0を指定するとアドレス昇順に、1を指定するとアドレスの降順に転送を行うものとする。

2-1問題
転送元の開始アドレス 転送先の開始アドレス 方向フラグ 転送語数
1001 1003 0 4
1001 1003 1 4
1004 1006 0 4
1004 1006 1 4

答えを表示



ページの先頭へ

プログラムの実行

コンピュータでは、命令を実行する際には、メモリから順番に命令を取り出して実行していきます。命令の集まりであるプログラムは、ハードディスクなどの補助記憶装置に保存されていきます。
そこで、プログラムを実行する際には、まず、補助記憶装置に記憶されたプログラムを、主記憶装置に読み込むことが必要です。これをロードといいます。
プログラムが終了したときなどには、プログラムが使用したメモリを別のプログラムが利用できるように空き容量にしてやらなければなりません。これをメモリの解放といいます。 メモリが解放されないとメモリリークという状態が起こります。メモリリークによって使用できるメモリが減ってしまうと、プログラムの動作が不安定になってしまいます。メモリリークを防ぐには、ガーベジコレクションと呼ばれる機能が必要になります。ガーベジコレクションは、利用されていないのに解放されていないメモリ領域を解放してくれます。

固定区画方式

主記憶装置の中にどのようにプログラムを読み込み、配置するかについては、いくつかの方式があります。まず、一定区画にプログラムを読み込む方法を、固定区画方式といい,固定区画方式には、単一区画方式と多重区画方式があります。

単一区画方式
単一区画方式では、メモリを1つの区画とし、この区画にプログラムを読み込みます。つまり、1つのプログラムをロードすることしかできません。

多重区画方式
多重区画方式とは、メモリを区画に分割し、区画ごとにプログラムをロードする方法です。ただし、区画よりも大きなサイズのプログラムを読み込んで実行することはできません。

可変区画方式

固定区画方式に対して、区画の大きさを変えることができる方式を可変区画方式といいます。
ただし、可変区画方式では、プログラムの実行や終了を繰り返すことによって、プログラムをロードすることができなくなってしますことがあります。全体として十分なメモリが空いているにもかかわらず、実行しようとするプログラムに応じた領域が確保できなくなってしまうからです。この状態を断片化(フラグメンテーション)といいます。このとき、プログラムを配置し直し、空いているメモリ領域を集めて空きを作ると、プログラムが実行できるようになります。配置し直す作業をコンパクションといいます。

小容量のメモリでプログラム起動

プログラムを実行する際には、プログラムをメモリに読み込んでおく必要があります。しかし、実際にはメモリの容量は限られているので、足りなくなる場合があります。そこで、小さなメモリで大きなプログラムを実行する必要があります。

オーバレイ
プログラムを分割し、必要な部分だけをメモリに読み込む方式。メモリの容量がプログラムの大きさよりも小さい場合に使われることがあります。

スワッピング
優先度の高いプログラムを処理するときに、優先度の低いプログラムを補助記憶装置に追い出して処理を行う方式。必要になったときに追い出したプログラムを再度メモリに読み込んで実行します。
優先度の高いプログラムを補助記憶装置からメモリに読み込むことを、スワップインといい、メモリから補助記憶装置へ優先度の低いプリグラムを追い出すことをスワップアウトといいます。

補助記憶装置を利用して、実際の主記憶よりも大きなメモリ空間を作り出す仕組みを仮想記憶といいます。これに対して実際のメモリ上の空間は実記憶といいます。

ページング方式
プログラムをページと呼ばれる固定長に区切り、仮想記憶と実記憶との仮想記憶対応表としてページテーブルを用意します。ページテーブルには、ページがメインメモリ上に存在する場合のアドレスが記憶されています。 ページング方式では、プログラムを実行する際にページテーブルを調べ、必要なページがメモリ上に存在するかどうか調べます。
ページがメモリ上に存在しないことをページフォールトといいます。このとき、メインメモリ上の必要のないページを補助記憶装置に追い出し、補助記憶装置から必要なページをメインメモリに読み込みます。補助記憶装置にページを追い出すことをページアウト、補助記憶装置からページを読み込むことをページインといいます。追い出すページを決める基準を「置換え方式」といいます。置換え方式には次のようなものがあります。

方 式 内 容
LRU
(Least Recently Used)
最後に参照されてからの時間が最も長いページを追い出す方式
FIFO
(First In First Out)
最初に記憶したページを追い出す方式
LFU
(Least Frequently Used)
参照頻度が最も少ないページを追い出す方式

 

inserted by FC2 system