基本情報技術者試験(FE) ~コンピュータシステム「コンピュータの構成要素(CPU)」~ 【第1回】

この記事は2013年5月31日に書かれたものです。内容が古い可能性がありますのでご注意ください。


コンピュータシステム

 

コンピュータの構成要素(CPU) その1

 

CPUの構成

 
「CPU」は、以下に示す装置からなります。
 
コンピュータを構成する要素には、以下のようなものがあります。
 

種類 内容
デコーダ CPUで実行する命令を解読する装置
プログラムカウンタ (プログラムレジスタ) 実行する命令が保持されている主記憶装置のアドレスを保持するレジスタ
命令レジスタ 主記憶装置から取り出した命令を格納するレジスタ
メモリアドレスレジスタ 操作の対象となるアドレスを保持するレジスタ
汎用レジスタ 演算に使用するデータを格納する汎用的なレジスタ
ALU 四則演算や論理演算を行う装置

 
また、各種装置は、以下に示すような構成でつながっています。
 
kihon2-01-03
 

バスの種類と特徴

 
「バス」とは、装置間のデータのやり取りに使われるデータの通り道のことです。コンピュータ内部では、各装置がバスによって物理的に接続されています。
「バス」は、配置されている場所によって、「内部バス」、「外部バス」、「拡張バス」に分類されます。

①内部バス
「内部バス」とは、CPU内部のデータのやり取りに使用する伝送路のことです。「CPU内部バス」ともいいます。

②外部バス
「外部バス」とは、CPUや主記憶装置、周辺機器の間でのデータのやり取りに使用する伝送路のことです。CPUや主記憶装置間を結ぶ高速な「システムバス」とCPUと周辺機器(入出力装置など)を結ぶ低速な「入出力バス」に分類されます。
また、「外部バス」は、用途によって、以下のような分類に分かれます。
 

種類 内容
アドレスバス アドレス情報を送るバス。
データバス 処理するデータを送るバス。
コントロールバス 制御情報を送るバス。

 
③拡張バス
「拡張バス」とは、コンピュータに機能を追加するときに使用する拡張カードとCPU間でのデータのやり取りに使用する伝送路のことです。
拡張バスの代表的なものに「PCIバス」があります。ハードディスクなど高速なデータのやり取りが求められる周辺機器接続するときに使われます。
 

バスのアーキテクチャと性能

 
「バス」では、処理速度を向上するための技術として、以下のようなアーキテクチャがあります。
 

名称 説明
ハーバードアーキテクチャ 命令とデータの転送をバスで分類したアーキテクチャ。
ノイマンアーキテクチャ 命令とデータを分離せず同じバスを利用するアーキテクチャ。

 
バスの性能を評価する指標に、「バス幅」があります。
「バス幅」とは、バスが一度のクロックで同時に送られるデータ量のことをいいます。
バスが何本の信号線でできているかによって決まり、バスの信号線が多いほど多くのデータが処理できます。
「バス幅」は、ビット単位で表します。
例えば、32ビットCPUの場合、ワンクロック(クロック回路が1回信号を送る間)ごとに、CPU内部で32ビットのデータがやり取りされます。
内部バスのクロック周波数を「コアクロック周波数」、外部バスのクロック周波数を「外部クロック周波数」といいます。
 

命令語

 
プログラムは、アルゴリズムを命令語で記述したもので、プログラムを実行するということは、プログラムを構成する命令語を1つずつ実行することになります。

命令語は、以下に示すように「命令部」と「オペランド部(アドレス部)」で構成され、「命令部」に「実行する操作に対応した命令」、「オペランド部」に「操作対象のデータやアドレス」を指定します。
 
kihon2-02-01
 

命令実行の流れ

 
1つの命令語の実行は、以下の手順を踏んで実行されます。
 

ステージ 内容
①命令の取出し プログラムカウンタが示すメモリ番地から命令を取り出し、命令レジスタへ取り込む。
(命令フェッチ)
②命令デコード 命令レジスタの命令を解読する。
③実行アドレス計算 メモリからデータを取り出す命令の場合、オペランド部から取り出し元のアドレスを計算し、メモリアドレスレジスタへ格納する。
④データの取出し メモリまたは汎用レジスタからデータを取り出す。
⑤命令の実行 命令部に指定した命令をALUで実行する。
⑥結果の格納 メモリまたはレジスタへ結果を格納する。

 
命令実行の例として、「汎用レジスタの値とメモリ上にあるデータ値を使用して演算を行い、結果を汎用レジスタへ格納」する命令の実行の流れを以下に示します。
 
kihon2-02-02
 

アドレス修飾とアドレス指定方式

 
プログラムは、「主記憶装置」に格納され、「制御装置」によって1命令ずつより取り出され、実行されます。このとき、処理対象となるデータの位置を指し示すため、「アドレス修飾」が行われます。

「アドレス修飾」とは、命令が指定するアドレスをもとに、実際にアクセスするアドレスの値を求めるための機能です。そして、「アドレス修飾」の方式を、「アドレス指定方式(アドレッシングモード)」といいます。
また、「アドレス修飾」された結果、実際にアクセスするアドレスを「有効アドレス(実効アドレス)」といいます。ここでいう、「アドレス」とは、データや命令がどこに格納されているのかを示すメモリ上の番地のようなものです。
 
「有効アドレス(実効アドレス)」の指定方法には、以下のような方式があり、アルゴリズムやプログラムの特性に適した方式を用います。
 

方式 内容
即値アドレス方式
(イミディエイトアドレス方式)
オペランド部に操作対象のデータを指定する方式。主記憶装置からデータの取出しを行わない。
直接アドレス方式
(絶対アドレス方式)
オペランド部の値を実行アドレスとする方式。
間接アドレス方式 オペランド部を指定したアドレスに格納されたデータを実行アドレスとする方式。
相対アドレス方式 オペランド部の値とプログラムカウンタの値を加算した結果を実行アドレスとする方式。
指標アドレス方式
(インデックスアドレス方式)
オペランド部の値とインデックスレジスタの値を加算した結果を実行アドレスとする方式。
基底アドレス方式
(ベースアドレス方式)
オペランド部の値とベースアドレスの値を加算した結果を実行アドレスとする方式。

 
各アドレス指定方式の実行例を以下に示します。
 
kihon2-02-03
 

次回は、「レジスタとは」から説明していきたいと思います。

 

  • このエントリーをはてなブックマークに追加

PAGE TOP