第一章 コンピュータとその仕組み

1.1 コンピュータの構成要素
□コンピュータの構成
コンピュータは、次の5つの機能を備えたものとされる。
記憶、演算、制御、入力、出力
これをコンピュータの5大機能という。そして、それぞれの機能を果たすために、
主記憶装置、演算装置、制御装置、入力装置、出力装置
の5つの装置がコンピュータには備わっている。
また、主記憶装置の記憶容量は限られるため、これの機能充実を図るために、補助記憶装置を加えることが一般的である。
これら5大装置と補助記憶装置との関係、およびデータの流れを図1−1に示す。
図1−1
□記憶装置
実行すべきプログラムやそれに関連するデータ、演算の途中結果を記憶する機能を持つ装置。
通常はコンピュータシステムが主に使用する主記憶装置に記憶させるが、主記憶装置の記憶容量は小さいので、保存が必要な命令や情報、データなどは、磁気ディスク装置や磁気テープ装置などがある。

□処理装置(演算装置、制御装置)
コンピュータシステムの頭脳あるいは中枢部をなす装置。
中央処理装置は、制御装置(control unit)と演算装置(ALU:Arithmetic-Logic Unit)から構成される。
制御装置:記憶装置(主記憶装置)にある、処理のためのプログラムの各命令を取り出し、解読し、命令に従って実行の制御やデータの制御、入出力の制御などを行う装置。
演算装置(ALU):すべての算術演算(計算)と論理演算が行われる装置。

□入出力装置
入力装置:コンピュータにデータを投入する装置。
例)キーボード、マウス、カード読取装置、イメージスキャナ、バーコードリーダー
出力装置:コンピュータ内で処理されたデータを、情報としてコンピュータの外部に、人間が認識できる形で出力する装置。
例)ページプリンタ、ブラウン管ディスプレイ(CRT)、液晶ディスプレイ

1.2 コンピュータ内におけるデータの表現
□数の体系と基数変換
◇2進数と16進数
コンピュータ内部では、データを表現するのに、「電流が流れる」と「流れない」、あるいは、「+」と「−」、「N」と「S」といった、電気的あるいは磁気的特性を使っている。
これらを「1」と「0」として表現したのが、2進数である。
2進数:0と1の組合せだけで数値を表す。
16進数:10進数は、10になるとけたが1つ繰り上がるが、このけたの繰り上がる基準となる数のことを基数(radix)という。
この基数を16にしたのが、16進数である。
16進数は、1から16までをそれぞれ1つの文字で表現させる。
また、16進数は、2進数を人間により取り扱いやすくさせることに役立つ。10進数、2進数、16進数の関係を次に示す。

10進数 2進数 16進数
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
10 1010
11 1011
12 1100
13 1101
14 1110
15 1111

◇基数変換   ・・・省略
□2進数の計算・・・省略

◇補数(Complement)
補数で、負の数を表す。
・基本概念
補数とは、ある数を、基準となる数から引いた数をいう。
基準となる数−ある数=ある数の補数
この基準となる数には、次の2種類がある。たとえば、4けたの2進数の場合は、
(1111)・・・4けたの2進数の最大数
(10000)・・・4けたの2進数の最大数+1
基準となる数が2種類あるのは、それに対応する補数も2種類あるからである。
1の補数:そのけた内の最大数から、ある数を引いたもの。
例)4けたの2進数(1011)のとき
(1111)−(1011)=(0100)・・・1の補数
2の補数:そのけた内の最大数+1からある数を引いたもの。
例)4けたの2進数(1011)のとき
(10000)−(1011)=(0101)・・・2の補数
10進数の補数も、同じように考えることが出来る。
例)10進数  935の補数
  9の補数  999−935=64
 10の補数  1000−935=65
・補数の求め方
1の補数の求め方・・・もとの数のビットを反転する。
2の補数の求め方・・・1の補数に+1をする。
・2の補数による減算
nけたの10進数どうしの2数の減算は、たとえば、
893−605
=893+(1000−605)
=893+395
=1
288→3けた分で、288
というように、引く数の10の補数を加えたもののnけた以内の部分で求められる。
これは2進数にもあてはまる。
ある2進数Aからある2進数Bを引く場合、Aに、Bの2の補数を加えた結果、nけた分と同じになる。
このことを利用して、2の補数を用いて減算ができる。
例)(1101)−(0111)
=(1101)+(10000−0111)
=(1101)+(1001)
=(1
0110
4けたなので、答えは(0110)
・16進数の加減算
16進数の加減算は、一度2進数に変換して計算し、算出された2進数での結果を、もう一度16進数に変換することで簡単に得られる。
例(AB1C)−(7B3)
(1010101100011100)−(000001111011011)
                           ↓2の補数
=(1010101100011100)−(1111100001001101)
そこで、
  (1010101100011100)
+(1111100001001101)
  11010001101101001
(1010 0011 0110 1001)
          ↓16進数
        (A369)

□文字の表現
◇情報量の単位
コンピュータで情報の大きさを表す単位の代表的なものには、次の3つがある。
ビット・・・0または1で表せるデータ。
バイト・・・8ビットの集まりを1バイトとする。
ワード・・・数ビットをまとめたもの。16ビット、32ビット、36ビット、48ビットなどがある。
◇文字コード
nけたの2進数(nビットの2進数)によって2種類のコードがつくられ、これと1対1の対応をつけることによって2種類の文字(英字、数字、カナ、漢字)と種々の記号を表現できる。
◇2進化10進コード(BCDコード:Binary Coded Decimal code)
10進数の各けたを、4ビットの2進数で表現する。
例)10進数で、83
  1000 0011
    
    
◇文字コードの標準化
・拡張2進化10進符号(EBCDIC:Extended Binary Coded Decimal Interchange Code)
BCDコードの拡張版。IBM社によって開発された。
8ビットで表現する。
・ASCII(American national Standard Code for Information Interchange)
米国において標準化された7ビットのコード。
先頭ビットに0またはパリティビットを付加し、8ビットで扱われることが多い。
パソコンなどで広く使われている。
・ISO(International Organization for Standardization:国際標準化機構)コード
国際的に共通して使われる文字、数字および記号などを7ビットの情報交換用符号としてISOが定めたコード。
・JISコード
JIS X0201コード(7ビット/8ビット:ISOコードとほぼ同じ)とJIS X0208コード(漢字コード/2バイト)がある。

□数値の表現
コンピュータ内部で用いられる数値データは、次のように分類される。
10進数―――ゾーン10進数
         パック10進数
2進数 ―――固定小数点数
         浮動小数点数

◇10進数の表現
・ゾーン10進数
<形式>
10進数1けたの値を8ビットで表現する。
8ビットのうち上位4ビットをゾーン部とよび、データが数値であることを示すコード(JISでは(0011)、EBCDICでは(1111))が格納される。
ただし、符号を表すために最下位けたのゾーン部は、正数の場合には(1100)、負数の場合には(1101)
例)(−56)のゾーン10進数
   (5)=(
00110101)
   (6)=(
00110110)
であるから
  (−56)=(
00110101 11010110)
<特徴>
入出力時に用いられる。演算効率が悪く、通常はパック10進法に変換されてから演算が行われる。
ゾーン部があるため、格納効率が悪い。
・パック10進法
<形式>
10進数の各けたをBCDコードを用いて表現するのはゾーン10進数と同じ。
1バイトには10進数値2けたが格納される。
最下位けたの末尾4ビットが符号を表す(符号ビットはゾーン10進数と同じ)。
例)(−56)のパック10進数
   (5)=(0101)
   (6)=(0110)
  (−56)=(0000 0101 0110 1101)
<特徴>
演算時に用いられる。演算が速く、格納効率もよい。
・パックとアンパック
パック・・・ゾーン10進数をパック10進数へ変換する。
アンパック・・・パック10進数をゾーン10進数へ変換する。
◇固定小数点数
<形式>
数字の並びの適当な場所に、仮想的に小数点があるものと想定し、決まった位置に重み付けが固定されている(小数点の位置は、機種によって異なる)。
正負の表現は、2の補数を用いる。
<特徴>
解釈しやすい。演算処理がしやすい。
また、2の補数表現のため、数値の減算もすべて加算によって行える。
しかし、けたあふれ(オーバフロー)しやすい。
◇浮動小数点数
<形式>
小数点の位置を一定とせず、数値の正負を示す符号部、有効数字を表示する仮数部、小数点の位置を指定する指数部を用いて表す。
<特徴>
科学技術計算用。小数の異なる数値間の演算が自動的に行える。
乗算の場合は指数部のけた落ち(アンダフロー)を生ずることがある。

1.3記憶装置
□記憶の原理
◇記憶回路
・コンデンサを利用した記憶セル
コンデンサ(蓄電器)が充電されているか否かによってできる1ビットの記憶セルに、スイッチとしてトランジスタをつけたものが、DRAM(Dynamic RAM)とよばれるものである。
・フリップフロップ(双安定回路)
2個のトランジスタと2個のOR回路を用いて1ビットの情報を記憶する。
一般にSRAM(Static RAM)として使用される。
◇磁気記憶
磁性面を利用した記憶素子では、通常は媒体側が移動することによって読み書き動作が可能になる(フロッピーディスク→磁性面が回転する。磁気テープ→磁性面が巻き取られる)。
◇その他の記憶素子
レーザー光線の反射などで識別する光ディスクなどがある。

□主記憶装置
◇ICメモリ(半導体メモリ)
記憶素子は、通常は数ミリ角の半導体チップに多くの回路を集積化したIC(Integrated Circuit:集積回路)が使われる。
主記憶装置の記憶領域はこのICメモリを多数使用して構成される。
ICメモリは、基本的には揮発性(電源を切ると記憶内容が失われる)のRAM(Random Access Memory)と、不揮発性(電源を切っても記憶内容は失われない)のROM(Read Only Memory)に大別できる。

種類 特徴 主な用途
RAM DRAM(Dynamic RAM):コンデンサに蓄えられた電荷の有無で情報(ビット)を記憶する。
時間が経つと放電により電荷がなくなるため、数ミリ秒ごとに内容を書き直す(このことをリフレッシュという)必要がある。
SRAMに比べ低速で集積度が高い。
大容量。ビット当たりの単価が安い。
消費電力が少ない。
主記憶
SRAM(Static RAM):フリップフロップ回路を用いる。
時間が経過しても電荷がなくなることはなくリフレッシュの必要なし
パイボーラ型:接合型パイボーラトランジスタを素子としたもの 高速だが、集積度低い。小容量。ビット当たりの単価が高い。消費電力が多い キャッシュメモリ
MOS型:MOS(Metal Oxide Semiconductor)型トランジスタを素子としたもの パイボーラ型よりは低速。集積度高い。中容量。ビット当たりの単価は中。消費電力はやや多い 主記憶
ROM マスクROM 工場出荷時にその内容が確定されてしまう 主記憶の一部
制御記憶
PROM(Programable ROM) あとで情報を書き換えることができる
EPROM(Erasable PROM) 内容を削除、再書き込みができる(消去は紫外線の照射で行い、時間がかかる)
EEPROM(Electronic EPROM) 内容を1ブロックずつ電気的に消去可能であるEPROM
フラッシュ型 内容を電気的に一括消去、再書き込み可能

◇主記憶装置の構成
図1−2のように、主記憶領域とアドレス選択回路、読み書き回路から構成される。
図1−2
□補助記憶装置
・磁気ディスク
プラスチックや金属の円盤の表面に、磁性材料を塗布したもので、磁化された向きによって情報を記録するもの。
物理的な稼動部分をもつ補助記憶装置としては、最も普及している。
ハードディスク(固定ディスク)やフロッピーディスクがこれにあたる。
最近では、ハードディスクそのものの大容量化がかなり進み、1つの装置で12GBもの容量をもつものも登場している。
また、フロッピーディスクの容量は最大1.44MBであるが、使い勝手はフロッピーディスクとそう変わりなく、しかも大容量を記憶できるスーパーフロッピーディスク(LS-120)や、ZIPドライブなどの新技術が最近次々と登場している。
・磁気テープ、DDS(DAT)
ポリエステルなどの細長いテープの表面に磁性体塗料を塗布したもの。
磁気ディスクと同様、磁化の向きで情報を記録する。
速度が遅く、データを必ず先頭からアクセスしなければならないなどの欠点がある。
磁気ディスクのバックアップ用として利用されることが多い。
オープンリールテープやカートリッジテープがある。
最近では、PCサーバなどのバックアップとして、もともと音楽用であったDATをコンピュータ用に規格したDDSとよばれるテープもよく利用される。
・光磁気ディスク(MO:Magnet-Optical disk)
書き換え型の光ディスク。
データの読み出しだけでなく、データの消去、書き換えも可能である。
磁気ヘッドとレーザー光の両方で情報を書き込む仕組みになっている。
容量は現在128MB、230MB、540MB、640MBの4種類がある。
もともとMOにおけるデータの書き換えは、まず書かれているデータを消去したあとに書き直すようになっているが、最近では消去せずに直接上書きすることでデータの書きこみ時間の短縮を実現したダイレクト・オーバー・ライト(OW)という方法に対応したものもある。
・CD−ROM
読み出し専用の光ディスク。
ICメモリのROMと同じで、内容を読み取ることはできるが、書き換えや消去はできない。
アルミ盤表面にあけたビットとよばれる凹みの傾きでビットを表現し、それをレーザー光線の反射で識別する。
現在では材料も安価になり、最も普及している媒体である。
・CD−R
CD−ROMの、書き込みができないという欠点を解消したものがCD−R(CD-Recordable)である。
CD−ROMと同様の円盤に記録層を塗布してあり、そこにレーザー光をあてて記録層の有機色素を焼き、光の屈折率を変えることで情報ビットを記録する。
ただし一度だけしか書込みできない(読み込みは何度でも可)。
CD−Rは媒体が安価なこともあり、現在普及しつつある。
ただし、CD−Rのフォーマット規格がさまざまなレベルにあり、フォーマットによってはほかのコンピュータで使用できないことがある、という問題点も指摘されている。
・CD−RW
CD−Rの“1度しか書込みできない”という欠点を解消したのが、CD−RW(CD-ReWritable)である。
CD−Rを改良し、繰り返し書込み直しできるようになっている。
◇ハードディスク装置の構造
ハードディスク装置は、ディスク、スピンドル、アクセスアーム、磁気ヘッド、ヘッドポジショナ(ヘッド位置決め装置)によって構成される(1−3図)。
ディスク:情報が記録される媒体そのもの。
表面に磁性体が塗布されている。磁化の向きで情報が記録される。
スピンドル:ディスクを回転させるための軸。
アクセスアーム:磁気ヘッドとヘッドポジショナを結び付けるアーム。
磁気ヘッド:ディスク表面の磁性体に情報を書き込んだり読み出したりする。
電磁誘導の原理を用いる。
ヘッドポジショナ:磁気ヘッドをディスクの適切な場所に移動させるためのもの。ディスク円周の接点と直角をなす方向に駆動する。
◇ハードディスクの記録/読み出しに関する構成
サーフェス:ハードディスクの有効的な記録面。1枚構成のものでは、両面が記録可能となる。
複数枚のものだと、最上面と最下面は使わないことが多い。
サーフェスの数は、磁気ヘッドの数と同じである。
トラック:1枚のディスクの1つの円周のこと。
シリンダ:何枚かのディスクの中心から距離の等しいトラックをすべて合わせた、筒状(シリンダ)とみなせるもの。
セクタ:通常、トラックは、いくつかの単位に分割されてアクセスされるが、この分割されたそれぞれをセクタとよぶ。
1トラック当たりのセクタ数は、どのトラックでも同じである。
1つのセクタに記録できる容量を、セクタ長という。
セクタとは扇型という意味である。
◇ハードディスクの容量の計算
セクタ長=C
トラック当たりのセクタ数=S
サーフェス当たりのトラック数(シリンダ数)=T
ディスク装置当たりのサーフェス数=H
とすると、
トラック容量=C*S
シリンダ容量=トラック容量*H
サーフェス容量=トラック容量*T
装置全体の容量=シリンダ容量*T=サーフェス容量*H
          =C*S*T*H
◇ハードディスクの処理時間の計算
まずは、ヘッドをレコードのあるシリンダに移動するためのシーク時間(位置決め時間)がかかり、次に該当レコードをふくむセクタが磁気ヘッドのしたにくるまでの回転待ち時間、最後にデータ転送時間がかかる。
1レコードのアクセス時間
=シーク時間+回転待ち時間+データ転送時間
セクタ長=C(バイト)
トラック当たりのセクタ数=T
ブロック長=L(バイト)
ブロック数=N
ブロック当たりのセクタ数=S
ディスク回転数=r
ディスク1回転の時間=t(ミリ秒)
平均シーク時間=P(ミリ秒)
平均回転待ち時間=R(ミリ秒)
セクタ当たりデータ転送時間=D(ミリ秒)
とすると、次のような関係がある。
S=L/C (切上げ)
t=(60/r)*1000
R=t/2
D=t/T
1ブロック当たりの処理時間=(P+R)+D*S
ファイル処理時間=(ブロック処理時間)*N

1.4処理装置(CPU)の機能と演算の仕組み
□処理装置
コンピュータの、いわば心臓部ともいえる処理装置(CPU:中央処理装置、またはプロセッサともいう)は、演算装置および制御装置からなる。
◇演算装置
演算装置は算術論理演算装置ともよばれ、四則演算や論理演算、大小比較などを行う。
次のような回路から構成される。
・加算器
2数の和を求める。
・アキュムレータ
四則演算や論理演算などの結果を一時的にとっておく。
けたあふれ、正負といった少量の演算結果の値(コンディションコード)が格納されるレジスタである。
COMETコンピュータでは、フラグレジスタという。
・補数器
補数をつくる。
◇制御装置
コンピュータシステムを構成している各装置を制御・監視する装置。
主に、主記憶装置内にある命令(機械語)の取出し、解読、実行を行う。制御装置は、次のような回路から構成される。
・命令アドレスレジスタ(命令カウンタ、プログラムカウンタ、逐次制御カウンタ)
主記憶内の命令アドレスを記憶する。
・命令レジスタ
取り出した命令そのものを格納する。
・デコーダ(命令解読器、複合器)
命令レジスタに入っている命令を解読する。
・汎用レジスタ
2進数の四則演算や論理演算などの過程で、一時的に情報を格納する(プログラムで使い方を自由に決められる)。
・ベースレジスタ
主記憶上のプログラムの先頭位置を記憶する。
・インデックスレジスタ(指標レジスタ)
主記憶上でのデータのアドレスを求めるときなどに、基準からの増減値(オフセット値)を記憶する。
・PSW(Processor Status Word)
現在実行中の処理装置の状態を示す。

□演算の仕組み
◇論理回路
コンピュータの基本的な論理回路には、次の3つがある。
・AND回路(直列回路)
すべての入力値が‘1’(ビットオン)のときに‘1’を出力し、それ以外のときは‘0’(ビットオフ)を出力するAND演算(論理積)を行う。
・OR回路(並列回路)
ある入力値が‘1’のときに‘1’を出力し、すべての入力値が‘0’のときは‘0’を出力するOR演算(論理和)を行う。
・NOT回路(否定回路、インバータ回路)
入力値が‘0’のときに‘1’を、‘1’のときに‘0’を出力する。
◇加算器
複雑な計算を行う演算回路は、膨大な量の論理回路を組み合わせてできている。
それは2進数の1+1の計算とビットシフトの操作の組合せになっている。
2進数の演算を行うためには、次の表のような出力が得られる回路が必要である。

A+B
けた上がり 1けた目

実は、けた上がりの結果は、A AND B、1けた目の結果はA EOR Bの演算結果に対応している。
A EOR B=(A AND B) OR (A AND B)
なので、図1−5のように回路を構成する。
この回路を半加算器という。
半加算器は、複数けたの場合に、下位けたからのけた上げを考慮していないので、実際には不充分である。
このけた上げを考慮したものが、全加算器図1−6)である。

□命令とアドレス方式
コンピュータが処理する一連の動作は、最終的には、コンピュータが理解できる機械語の集まりとして表現される。
◇命令の種類
コンピュータに備わっている命令の種類は、機種ごとに異なり、少ないもので数十種類、多いもので百数十種類ほどになる。
代表的なものを例にとると、命令は次のように大別される。
なお、以下の例は、COMETの命令である。
・算術命令(固定小数点演算、浮動小数点演算、10進演算)
例)ADD、SUB
・論理演算命令
例)AND、OR、EOR
・転送命令
例)LD、LEA、ST
・比較命令
例)CPA、CPL
・分岐命令
例)JPZ、JMI、JNZ、JZE、JMP
・シフト命令
例)SLA、SRA、SLL、SRL
・入出力命令
例)COMETでは、特に用意されていない。
◇CISCとRISC
処理装置(CPU)が実行できる命令の種類は、設計時に決められるが、この命令語の集まりを命令セットという。
機械語命令の実行に必要な処理装置内の動作を、レジスタ間のデータ転送、シフト操作、演算回路の使用などの、ハードウェアを直接制御するマイクロ命令の組合せで実現する方式を、マイクロプログラム制御方式という。
この方式で、複雑な動作の命令をふくんだ命令セットをもつコンピュータを、CISC(Complex Instruction Set Computer:複合命令セットコンピュータ)とよぶ。
CISCは、
・論理回路全体は単純になり、設計・製造がしやすい
・マイクロプログラムを記憶した制御記憶を変更することで、新しい命令やより複雑な処理のための命令を追加できるなど、機能拡張がしやすい
・同一の回路を複数もうける必要がない
などの利点をもつ。しかし、命令ごとの実行時間に差があるため、
・実行時間のかかる命令にひきずられて、後続の命令実行が待たされ、パイプライン処理(命令を先読みすることで、複数の処理をオーバーラップさせ、命令をいちいち読む時間を短縮して実行する処理)には不向きある
・処理速度や信頼性の向上が難しい
などの欠点も明らかになってきた。
そこで、CISC以前のコンピュータの仕組みを発展させた、RISC(Reduced Instruction Set Computer:縮小命令セットコンピュータ)が登場した。
RISCは、
・単純な動作をする命令セットだけを準備し、命令数を減らすことで構造を単純化して、設計作業を容易にした
・命令ごとの実行時間をすべて1サイクルで行うようにそろえたため、パイプライン処理が効果的に行える
という利点がある。
このRISCが生まれた背景には、CPU自体の高性能化がある。
現在、RISCは、主にワークステーションなどで使用されている。
◇命令の構成
一般に、機械語の命令は次の2つから構成される。
(1)命令部(演算部、命令コード、オペレーション部)
どのような動作をするかを表す。
(2)番地部(アドレス部、オペランド部)
処理したいデータが、主記憶上のどの場所(番地)にあるか、どのレジスタを使うかを表す。
命令部を構成するビット数によって、そのコンピュータのもつ命令の種類の最大数が決まる。
また、1つの命令にふくまれるアドレスを示す部分の数によって、1アドレス方式、2アドレス方式、3アドレス方式、・・・といった形式の命令がある。
例)100番地のないように101番地の内容を加えて200番地へ格納する処理
1アドレス命令の場合

LD 100
ADD 101
ST 200

100番地にあるデータをアキュムレータに記憶
101番地にあるデータをアキュムレータに加算
アキュムレータの内容を200番地に格納

2アドレス命令の場合

MV 100 200
ADD 101 200

100番地にあるデータを200番地に移動
101番地にあるデータを200番地に加算

3アドレス命令の場合

ADD 100 101 200

100番地にあるデータと101番地にあるデータを加算して200番地へ格納

このほかにも、レジスタどうしの演算を行う命令など、番地を示す必要がない場合の0アドレス方式もある。
COMETでは、機械語命令は、次に示すような32ビットの列になっている。
◇アドレス修飾
命令の番地部において指定されたアドレスをもとに、実際にアクセスするアドレスの値(有効アドレス、または実行アドレス)を求めることをアドレス修飾という。
アドレス修飾の方法には、次のようなものがある(例は、COMETでの命令)
・直接アドレス指定方式
命令後の番地部で指定されたアドレスを、有効アドレスとする。
・間接アドレス方式
命令後の番地部で指定された領域に格納された値そのものを、有効アドレスとする。
・インデックスアドレス(インデックス修飾、指標アドレス)指定方式
指定した指標レジスタの内容に定数部のアドレス値を加えて(このことをインデックス修飾という)有効アドレスとする。
・ベースアドレス指定方式
主記憶領域にロードされたプログラムの先頭アドレスをベースレジスタに設定しておき、命令の番地部には、プログラムの先頭を0番地としたときのデータのアドレス(相対位置0)を入れておく。
・相対アドレス指定方式
自己相対アドレス指定方式ともいう。
命令の番地部に、命令アドレスレジスタの値からの変位(オフセット)を入れておき、命令実行時に、命令アドレスレジスタの値と番地部の値を加えて、有効アドレスとする。
・即値アドレス指定方式
命令後の番地部の値そのもの、または、命令語の番地部に指標レジスタ部で指定された汎用レジスタの値を加えた値を有効アドレスとする方式。
◇COMETのハードウェア構成
COMETは、1語が16ビットのワードマシンである。
・汎用レジスタ
汎用レジスタは、いろいろな用途(アキュムレータや指標レジスタなど)に使えるレジスタである。
COMETには、5つの汎用レジスタ(GR:General purpose Register)があるが、GR0はアキュムレータとしてのみ使える。
・フラグレジスタ
フラグレジスタ(FR:Flag Register)は、演算命令などによって汎用レジスタに得られた値の正負、または比較演算の結果を格納するレジスタである。

演算結果
FRに設定される値 00 01 10

・命令アドレスレジスタ
COMETは、プログラム内蔵方式であり、逐次制御方式である。
この逐次制御方式を実現するためには、主記憶装置中の何番地に格納されている機械語命令を取り出して実行すればよいのかがわからなければならない。
このために、実行する命令が格納されている主記憶のアドレスを格納するのが、命令アドレスレジスタである。

□プログラムの実行
人間が記述したプログラムは、機械の理解できる機械語に変換され、プログラムの実行段階には、主記憶装置上に機械語の命令の集まりとして用意される。
コンピュータは、主記憶装置からその機械語を1つひとつ制御装置へ取り出し、解読・実行していくことで処理を遂行していく。
このように、命令を受け付けてから命令語を主記憶装置から取り出し、解読・実行するまでの時間をサイクルタイムという。
◇命令取出し段階(instruction fetch cycle)
この段階のことをIサイクル、Fサイクルとよぶこともある。
@前の命令の実行が終わると、プログラムカウンタの内容をもとにもどして、主記憶装置上から命令レジスタに命令を取り出す
A命令部を調べて命令の長さを求め、プログラムカウンタに加算する(次の命令を取り出すための準備。ただし、COMETでは、命令実行段階まで加算をしない)
Bさらに命令部を調べ、主記憶装置へのアクセスを行う命令であれば、有効アドレスの計算を行う
◇命令実行段階(execution cycle)
この段階のことをEサイクルとよぶこともある。
@命令取出し段階で求めた有効アドレスをもとにして、演算すべきデータを主記憶装置上から読み出す
A命令レジスタの命令部をデコーダが解読して、命令実行に必要な制御信号を演算装置や入出力装置に送り出す

□CPUの速度と処理時間
◇命令の実行速度
・命令の実行速度(時間)
基本動作時間(クロック時間)×命令実行に必要なクロック数で求められる。
・クロック
CPUの内部にあり、各部の動作の同期をとるために設けられるもの。
クロックの速さは、周波数(単位はMHz)で評価される。
クロック周波数が大きいほどCPUが高速に動くことを示している(たとえば、66MHzよりも100MHzのほうが速い)。
・MIPS(Million Instruction Per Second)
ある種類の機種の代表的な命令が1秒間に何百万回実行したか、という単位である。
・クロック周波数とMIPS
あるCPUのクロック周波数が大きいからといって一概にMIPSが高いとはいえない。
なぜならば、機種によって命令体系が異なるため、MIPSは機種に依存した値といえるからである。

1.5コンピュータの高速化
□CPUと主記憶装置の性能のギャップを埋める仕組み
◇CPU、主記憶装置、補助記憶装置の性能の“ギャップ”
CPU、主記憶装置、補助記憶装置は、半導体技術の進歩によってそれぞれ高性能化が進んでいるが、どうしてもその動作速度に差が生じているのが現状である。
それぞれの装置の速度を向上させても、装置間の速度の差が大きすぎて、実際にはその性能を発揮できないことが多い。
この“差”を埋めるための技術がいろいろ考えられている。

□キャッシュメモリ(Cache Memory)
高速バッファメモリまたは緩衝記憶装置ともよぶ。
高速読出しが可能だが、小容量なため、主記憶装置からの読出し速度向上のためにのみ働くようになっている。
◇キャッシュメモリの管理方式
キャッシュメモリの管理方式には、以下のようなものがある。
・置き換え方式
普通はLRU(Least Recently Used)方式といい、参照された時期が最も古いブロックをあけるようにする。
・記憶制御方式
セットアソシアティブ方式:主記憶装置とキャッシュメモリを同じ大きさのブロックに分けておき、主記憶装置のあちこちのブロックエリアをキャッシュメモリのブロックに、順番に格納しておく。
フルアソシアティブ方式:主記憶装置のブロックをその都度キャッシュメモリのブロックの任意のブロックに格納する。
・書込み制御方式

ライトスルー方式:キャッシュメモリのブロックに書き込む際、同時に主記憶のブロックにも書き込む。
ライトバック方式:キャッシュメモリからブロックの内容をなくすときに、同時に主記憶のブロックの書き換えを行う。
◇局所性
キャッシュメモリを有効活用するためには、命令やデータを順番に取り出して実行させることが必要である。
このことを実行時の局所性という。
◇NFPとヒット率
キャッシュメモリは小容量である。
そのために、次の実行に必要な命令やデータがキャッシュメモリ上にないことがある。
この確率をNFP(Not Found Probability)という。
その逆に、必要な命令やデータがキャッシュメモリにある確率をヒット率という。
NFPとヒット率とは、次の式が成り立つ。
NFP+ヒット率=1

□メモリインタリーブ
主記憶装置をバンクとよばれるいくつかのブロックに分割し、バンクごとにアクセスパスを設定する。
そしてあるバンクの情報に対するアクセスがあるときには、それに続くすべてのバンクの情報を、それぞれのアクセスパスを経由して同時に読み出す、という方法のこと。
これにより、実行の読出し速度が向上する。

□ディスクキャッシュ
◇半導体メモリによるディスクキャッシュ
実行に必要な情報を磁気ディスク装置からトラック単位でキャッシュメモリに取り出す方法。
◇主記憶装置を利用したディスクキャッシュ
主記憶装置の一部を拡張記憶装置として使用する方法。
主記憶からは、拡張記憶部分がディスクの番地と同様にみなせるようにしておく。

1.6入出力装置
□入出力装置の種類と仕組み
・入力装置
文字や図形などの入力データをビットデータに変換する装置。
・出力装置
ビットデータを文字や図形に変換し、情報として人間が利用できるようにする装置。
入出力装置には、次のようなものがある。
◇対話形式の入出力装置
キーボード:多数のキーを並べて、あるキーを押さえるとその位置に対応した文字コード(各文字に対応したビットデータ)を発生させるようになっている入力装置。
ディスプレイ:コンピュータからの出力データを人間に見える形にして、CRT(Cathode Ray Tube:陰極線管、ブラウン管などのこと)や液晶パネル(TFT方式、STN方式など)、プラズマパネルなどの画面に出力する出力装置。
以前は、文字・記号のみを表示するキャラクタディスプレイと、図形なども表示可能なグラフィックディスプレイという区別があったが、最近はワークステーションやパソコンのディスプレイにはグラフィックディスプレイが使われ、広く普及してきて、あまり区別をしなくなってきている。
音声入力装置:音声でコンピュータに情報を入力する装置。
音声入力ワードプロセッサなどもある。
音声応答装置:コンピュータから音声を出力する装置。
NTTの電話番号案内などに利用されている。
マウス:平面上で移動させ、その方向と移動量によって、画面中のカーソルを動かして入力を行う機器。
そこにあるボールの回転によって移動方向・移動量を検出する機械式と、網模様のアルミ板上を移動させ、発光ダイオードと光センサで検出する光学式がある。
ライトペン:受光素子をつけたペン先で、CRT画面の位置を直接指定し、その位置を入力するのに使う。
最近では、タッチパネルの普及によってあまり使われていない。
タッチパネル:パネル上を指で触れた位置をデータとして入力する装置。
タッチパネルをかぶせた画面をタッチスクリーンとよぶ。
銀行のキャッシュディスペンサなどに多く使われる。
ジョイスティック:レバーを前後左右に動かして、その方向に画面中のカーソルを移動させるのに使用する機器。
主にゲーム機などに使われる。
トラックボール:ボールを手で回転させ、回転方向とその量に対応させて、画面のカーソルを移動させる機器。
ディジタイザ:設計図などの図形を入力する装置。
製図板のような平面上の位置をカーソルで指定し、その座標をデータとして読み取る。
A3板以下の小型のディジタイザのことをタブレットとよぶ。
◇シート形式の入出力装置
光学式文字読取装置(OCR:Optical Character Reader):
人間が読める文字や記号のデータを、光をあてて読み取り、文字コード(各文字に対応したビットデータ)に変換する装置。
人間の手書きの文字を読み取ることのできる手書き文字読取用OCRと、規格どおりに印刷した文字を読み取る規格文字読取用のOCRがある。
この規格文字(英数字、カナ文字、記号)はJISで定められているが、これ以外に、漢字を認識することのできる漢字OCRもある。
OCRは、文字の書かれた紙に光を当て、反射した光のパターンと、装置内部に記憶した基準となる文字を順次照合して、文字を認識する。
そのため、誤読する場合もあるが、認識技術の進歩で、認識率もだいぶ向上してきた。
光学式マーク読取装置(OMR:Optical Mark Reader):
マークシートやマークカードのマークの有無を、光を当てて読み取る装置。
プリンタなどで印刷したマークや、人間が鉛筆などによって塗りつぶしたマークなどを読み取ることができる。
試験の答案やアンケート調査などに用いられることが多い。
マークシートのマークの位置などのレイアウトやチェックは、ソフトウェア的に行えるので、比較的自由にマーク位置などを設定できる。
しかし、マークシートの汚れに弱い、シート1枚の記録密度が小さい、などの欠点もある。
磁気インク文字読取装置(MICR:Magnetic Ink Character Reader):
磁性体をふくむインクで印刷された特殊な文字(磁気インク文字)を磁気ヘッドで読み取り、コンピュータに入力する装置。
磁気インク文字は特殊な印刷装置を必要とする。
しかし、磁性体で文字を認識するため、帳票の汚れの影響を受けにくく、しかもいったん書いた文字は書き換えられないといった利点から、小切手や手形などに利用されている。
プリンタ:
コンピュータからデータを印刷(印字)する出力装置。
印字方式、印字単位などによっていろいろな分類ができる。
<印字方式による分類>
インパクト式・・・印字の際に、たたいたり打ちつけたりして機械的に紙に衝撃を与えて印字する方式。
わかりやすい例として、タイプライタがある。
与える衝撃によって騒音を発生しやすいが、比較的安価であり、カーボン紙を挟むことで同時に複数枚印字できる。
ドット方式、活字ドラム方式、活字チェーン方式などがある。
ノンインパクト式・・・機械的な衝撃を与えずに、熱などによって印字する方式。
低騒音で高速印字が可能だが、高価である。
複数枚を同時には印字できない。
サーマルプリンタ(感熱式、熱転写式)、インクジェット式、電子写真式(レーザ方式)がある。
<印字処理による分類>
シリアルプリンタ・・・一度に1文字ずつ印字するプリンタ。
ラインプリンタ・・・一度に1行ずつ印字するプリンタ。
ページプリンタ・・・一度に1ページずつ印字するプリンタ。
◇その他の入出力装置
バーコードリーダ太さの違う縦線の組み合わせ(=バーコード)で表現した文字データに、レーザ光を当てて光学的に読み取り、文字コードに変換する装置。
バーコードの部分をセンサでなぞる(当てる)方式と、読取装置上でバーコードの付いたものを移動させる方式がある。
簡単な操作で比較的精密にデータを読み取れるため、POS(Point Of Sales)端末などに広く使われている。
バーコードは、JISによってJAN(Japan Article Numbering)として体系化されている。
イメージスキャナ:絵や写真、図面などの画像情報に当てた光の反射光を、CCD(Charged Coupled Device:電荷結合素子)という光センサで取り込み、コンピュータに入力する装置。
最近では、カラーデータも扱えるようになっている。
センサが移動しながら読む方式が、特にパソコン用に普及しつつある。
磁気カード読取装置磁気ストライプに記憶された情報によって情報交換ができるメモリカードを読み取る装置。
キャッシュカードやクレジットカード、定期乗車券、テレホンカードなどに幅広く普及している。

□チャネルと出力割込み
処理装置(電気的処理)と入出力装置(機械的処理)との間には、比較にならないほどの処理速度の差がある。
たとえば、プリンタで1行印刷する間に、処理装置では何万個もの命令を実行できる。
処理装置がこの入出力処理の実行が終わるまでいつも待機するようでは、全体の処理速度は非常に遅くなってしまう。
そこで、処理装置と入出力装置の間にチャネルをおき、入出力に関する処理はこのチャネルに任せることによって、処理装置は入出力装置の実行の終了を待たずに次の処理を実行することができる。
入出力処理の終了は、入出力割込みという機能によって処理装置に伝えられる。
これで、処理装置は入出力が終わったことを認識する。

□入出力インタフェース
◇入出力インタフェース
いろいろな種類の入出力装置や補助記憶装置は、入出力インタフェースを介してコンピュータの主記憶装置に接続される。
入出力インタフェースは、汎用コンピュータやワークステーションでは、
・入出力チャネル
・入出力制御装置
という2つの装置になり、パソコンでは、インタフェースボードなどの専用の制御回路になる。
いずれにせよ、インタフェースには事実上標準化されているものがいくつか存在する。
◇標準入出力インタフェース
RS−232C(Recommended Standard 232C):
EIA
(Electronic Industries Association:米国電子工業会)によって規格化されたもの。
もともとはモデムを接続するための通信用の規格だったが、現在ではモデム以外の、入出力装置の接続にも用いられる。
シリアル(1ビットずつ順にデータを送る)転送を行う。
セントロニクスインタフェース:
米国セントロニクス社が提案したプリンタ接続用のインタフェース。パラレル転送を行う。
SCSI(Small Computer System Interface):
ANSI(American National Standards Institute:米国規格協会)が定めた小型コンピュータ用のインタフェースで、主にハードディスクなどの高速のデータ転送が要求される周辺装置の接続用に用いられる。
パラレル
(並行)で一度に8ビット転送ができる。
GPIB(General Purpose Interface Bus):
米国ヒューレットパッカード社で開発され、IEEEにおいて標準化された、周辺機器や測定器などに接続するディジタル機器の汎用インタフェースシステム用Bus。


 TOPへ  第二章へ