計算機システム概論
目次
はじめに
計算機システム概論 第1回ビデオ教材〜において、聞いた内容をまとめてみる。
計算の構造
計算機システム概論 第2回ビデオ教材を参考にする。
概要を語る上で必要な登場人物をまとめる。
- 計算システムにおける計算とは・・・人が解くべき知的な問題解決(と仮定する)
- 計算機とは・・・人と同様に知的問題の解決能力を持つ機械
- 計算機システムとは・・・計算機を中核とする汎用的な問題解決システム
計算機システムの問題解決原理とその構造を理解していく。
人間の知的活動とは、言語を用いた思考であると言える。
つまりある情報を有限なシンボル列(文)で表現し、最終的な別なシンボル列(文)を生成する作業と言える。
計算機による情報処理とは、データや処理手順をコード化しプログラムによって処理し、別なコードを生成する作業と言える。
この2つは同形構造であると言える。これが計算機の基本構造である。
計算機の基本構造を以下のように定義する。
- 有限のシンボル集合を用いる
- データや処理手順をシンボル集合の要素またはそれを組み合わせたシンボル列でコード化する
- シンボル列を格納する記憶装置を有する
- 計算機の状態と記憶装置に書かれたシンボルまたはシンボル列で決まる規則を適用する
- 規則の適用によって記憶装置上のシンボルの書き換えや次の状態に遷移する
シンボルを用いた情報の表現(コード化)
計算機システム概論 第3回ビデオ教材を参考にする。
全ての情報は有限記号集合を用いて表現可能である。
有限記号集合とはラテン文字等のアルファベットを含む集合。
原則:
- どのようなラテン文字(記号列)でも良い
- 無数(無限)の表現方法がある
- 表現方法のルールに従えば、誰でも機械的に情報を取り出せる
近代の計算機では上記の原則が以下のように適用されている。
- {0, 1}をラテン文字とする
- 基本的データ(整数、浮動小数点、文字、文字列等)の表現する
情報の表現とは、何で何を表現するのか。
例えば、数とは我々がすでに知っている抽象的な実体であり、これを2進数で表現しようとすれば{0,1}の列となる。
つまり情報の表現とは、(何らかの規則で生成される)記号列で(我々が知っている)情報を表現することである。
例えば、2進数によって自然数を表現したり、文字に通し番号を付けて表現(いわゆるASCIIコード)する等が当てはまる。
より複雑な情報の表現も可能である。
例えば、以下の木構造を考える。
[A]
/ \
[B] [C]
/ \
[D] [E]
これを 根、左(部分木)、右(部分木)の順で再帰的に読み出すと A(B()())(C(D()())(E()()))
が得られる。
この時与えられるシンボル集合を{(,),A,B,C,D,E}とする。
さらに、得られた表現を{0,1}で表現(ビット表現)することもできる。
このように、コード化とは階層的に定義できる。
また情報に名前を付け参照することもでき、これは情報のコード化における最も基本的な機能である。
これにデータ(実際はメモリ上のアドレスに格納された値)に対する名前付けや、ポインタ表現(アドレスを参照するためのコード化)が該当する。
先程の木構造を名前を使った表現に書き換えると以下のようになる(左辺が名前、右辺が対応する根または木)。
- CA = A(CB)(CC)
- CB = B()()
- CC = C(CD)(CE)
- CD = D()()
- CE = E()()
同様にポインタ表現も可能である(左辺がアドレス、右辺が対応するコード)。
- PA = (A, PB, PC)
- PB = (B, ∅ ∅)
- PC = (C, PD, PE)
- PD = (D, ∅ ∅)
- PE = (E, ∅ ∅)
計算機の構造
計算機システム概論 第4回ビデオ教材を参考にする。
チューリング機械とは
- 文字集合∑を持つ
- 1字ずつ読み込み可能なテープデバイスを持つ
- 制御機構として以下のものを持つ
- 有限の状態集合があり
- 動作関数 (p, s) → (p’, s’, (left or right)) を持つ。これは状態pとテープシンボルsを読み込み、次の状態p’とテープにシンボルs’を書き出し、そしてテープの移動方向(left or right)を決定する
近代的ハードウェアは
- 文字集合を{0,1}の電気的状態で表現
- 動作関数は論理ゲートで表現
- 状態を保持可能な電子回路や記憶装置を持つ
状態を持つ逐次機械を同期逐次機械(Syncronous Sequential Machine)と言う。
[Output(出力)]
|
[Output Decoder(出力の生成)]
|
| +---------------------- Clock(状態の書き換え)
| v
[Memory(状態の保持)]-------------------+
| |
[Next State Decoder(次の状態の生成)]<--+
|
[Input(入力)]
同期逐次機械の状態を表すビット列として情報をコード化することが、デジタルコンピュータの動作原理である。
つまり計算機アーキテクチャとは、同期逐次機械(というごく単純な構造)の上に様々な構造を論理回路として持つ、より高機能な仮想機械と捉えることができる。
参考
計算機システム概論も必要に応じて参照する。