ア−キテクチャ−: コンピュータの仕組み

コンピュータの基本構成要素

コンピュータ(computer, 正式にはelectronic computer 電子式計算機)の基本 構成を上図に示す.コンピュータは何らかの入力を外部から受け取り, 計算・処理を施し,結果を外部に出力する.入力と出力は入出力装置が受け持 つ.CPU(Central Processing Unit 中央処理装置)はデータや処理の流 れ全体を制御し(図中,→はデータの流れを,…> は制御の流れを表す),計算を行う.

コンピュータが処理を行うためには処理の手順を記述したプログラム(program) が必要である.プログラムには一連の命令や命令が使用するデータが含まれて いるがこれらはすべてメモリ中に一旦置かれる.CPUはメモリ中の命令を一つ 一つ取り出し(fetch)ては,どんな命令であるのか解釈し(decode),その命令 にそったアクションを起こす(execture).図中,メモリからCPUへつながって いる→はデータのみならず命令そのものも含まれていることに注意.

現在のほとんどすべてのコンピュータはメモリ中にプログラムを格納する (store)ことによって命令を実行する.逆に言えばプログラムが異なれば 異なる計算を行うことができる.このような方式のコンピュータをプログラム 内蔵型コンピュータ(program-stored computer)と呼んでいる.コンピュータ の基本構成と働きについて研究する分野をコンピュータアーキテクチャー (computer architecture 構造,建築)と呼んでいる.言い方を変えると, ハードウェア(hardware,金物)に関連した事項を取り扱うと言ってもよい. これに対しプログラムなどはソフトウェア(software,適切な和訳はない. 強いて言えば柔物)に属する.ソフトウェアはハードウェアをいかに適切に使 うかのノウハウの塊とも言える.

CPUとメモリの詳細

CPUの中心にあるのが制御機構.この働きはのちほど解説.演算機構は 文字通り数値演算,論理演算を行う.あとCPU内には特殊なメモリが いくつか存在する. 現実のCPU(プロセッサ)ではもっと多くの,かつ 多様な目的を持った特殊なメモリ(レジスタ)が存在するがCPUの基本的な機能を 理解する上では上記のメモリだけで十分である.

【レジスタ】記録するという意味がある.通常アクセスに関しメモリよりは 高速.

メモリ自体がどうなっているかは述べない.メモリの一定領域が番地に よって区別されるということが重要.番地に関係する特殊なメモリとして 命令カウンタ,番地レジスタ,インデックスレジスタがある.命令カウンタは これから実行する命令がメモリ中の何番地にあるかを記憶している. 番地レジスタは命令が参照するデータ(あるいは別の命令)の番地を保持 している.インデックスレジスタについては後述する.

命令レジスタは命令自体を保持するためのメモリである.アキュムレータは 演算を行う際,被演算子の値を保持するためのメモリである. 分かりにくいかもしれないが,CPUはメモリとの間で直接計算を行わず, データを一旦アキュムレータに保存する.このことは後でまた説明する.

CPUとメモリとの間ではデータのやりとりを行うためにデータバスを 使用する(データの中には命令も含まれることに注意). またメモリに対しデータを読み書きできるためには事前に準備が必要となる. 準備のための制御信号が通るバスが制御バスである.

命令セットとコンピュータの働き

基本的な命令セットを用意し,簡単な計算を例にコンピュータの働きを説明す る.

命令セット(『改定コンピュータサイエンス入門』A.I.フォーサイス他共 著,倍風館1978年,絶版より引用)

特殊レジスタ名前
アキュムレータ Acc
番地レジスタ AR
命令カウンタ IR
命令レジスタ OR

命令(3文字) インデックスアドレス(10進3桁) 番地(10進4桁)

ここでは計算を行う時,常にメモリ中のデータを一旦アキュムレータに移す ようなアーキテクチャを仮定している.したがって,メモリからアキュムレー にデータを移す命令LDA(LoaD Accumulator)や,アキュムレータから メモリに移す命令STO(STOre)が必要になる.また,計算(たとえば 加算)は片方の被演算子がアキュムレータに,もう一方の被演算子がメモリに ある状態で行い,結果を再度アキュムレータに戻すことを仮定している.

【例題】次のような疑似プログラム


  B = 1
  C = 2
  A = B + c
を上記の命令を使ったプログラムに変換する(どうやるかはここでは述べない) と以下のようなプログラムになる.

(番地)
 0000  LDA 000 0200
 0001  STO 000 0101
 0002  LDA 000 0201
 0003  STO 000 0102
 0004  LDA 000 0101
 0005  ADD 000 0102
 0006  STO 000 0100
 …
 0100  ?              # 変数Aのための領域,最初の値は未定
 0101  ?              # 変数Bのための領域
 0102  ?              # 変数Cのための領域
 …
 0200  1              # 定数1のための領域
 0201  2              # 定数2のための領域

0000番地と0001番地の命令を図示すると次のようになる.

また,0004番地と0005番地の命令は次のような処理を行っている.

次に,各命令を処理している間のCPU内の各レジスタの値を見てみる. たとえば,最初の命令(LDA 000 0200)を実行した直後の各レジスタの 値は次のようになっている.


(IC) : 0000   (AR) : 0200  (OR) : LDA  (IR) : 000 (Acc) : 1

【課題1】0000番地から0006番地までの命令に対し,上記で図示した ような図を書いてみよ.

【課題2】同じく各命令を順次実行した時の上記レジスタ,およびメモリの 値がどのように変化していくか例にならって書き出してみよ.

【課題3】上記の機械語によるプログラムには無駄な部分がある. 2命令削ってより短いプログラムになるようにせよ.(ヒント:被演算子の 一方がアキュムレータにあれば,直ちに加算ができる.)

様々な入出力装置とファイル

すでに示したコンピュータの内部構成を少し変形し,データの通り道であるバ スを中心に下記直したものが上図である.そして前の図では入力と出力がメモ リと直結しているかのような形で描かれているのをもう少し正確にバス上に入 力,出力に関係する装置を接続したものが上図である.

これ以外にも様々な装置が接続されているのが普通であるがここではハードディ スク(hard disk)と呼ばれる特別な記憶装置について言及しておく.一般に メモリ中に置かれたプログラム,データは電源が切れた場合,消失する.これ をファイル(file)という形でハードディスク上に保存することで恒久的にプロ グラムやデータを保存できる.ハードディスク自体は磁気ディスクを重ねたも のが現状は普通である(将来はまた違ったメディアは登場するかもしれない). またファイルというのは論理的な単位であり,実体はハードディスク上のいく つかの記憶領域を集めたものからなる.