TTL でCPUを作成、16bitの手作りコンピューター TANACOM-1 誕生

動作原理


TANACOM-1 が命令を実行する仕組み

TANACOM-1 の中で、命令はどうやって実行されて行くのでしょう。それをご説明いたします。
一般的にコンピューターが、命令を実行すると言うのは、

  1. フェッチサイクル ・・・メインメモリから命令を取り出す。
  2. デコード・・・命令の解読(解釈)
  3. エグゼキュートサイクル ・・・実行

でありまして、停止の指示があるまで、これを繰り返します。

TANACOM-1 でも、全く同じです。
具体的には、この動作を制御装置の Phase Control が担当します(回路図は、こちらです)。
この回路が、TANACOM-1 の中で一番大切な回路です。

まず、回路図をご覧頂きますと解りますが、水晶発振器を使ったクロック回路にて、10 MHzのパルスが作られます。1周期は、100 nSになります。
これを3進カウンタに通し、300 nSのパルスに変換します。このパルスが、TANACOM-1 を順序よく、決められた通りに動かすための、「号令」の基本となります。

その先に、D型フリップフロップ(以下、D-FF と表現)を連ねて、循環させた回路があります。一番先頭のD-FF には、「M1」と名前がついています。
このD-FF 達が、300 nSの号令に従い、まるでドミノ倒しのように、順繰り、順繰り、300 nSごとに動いていきます。
一番、最後のD-FF の信号は、一番先頭のD-FF に接続されていますので、「停止」の指示があるまで、
永遠に循環します。
このD-FF について、先頭から順番に、

  1. フェッチサイクル
  2. デコード
  3. エグゼキュートサイクル

と、役割を割り当てやり、ぐるぐると循環させれば、あっという間にコンピューターと称されるマシンがそこに誕生します。どうです、とても簡単でしょ!

実際は、より便利で、もっと複雑な動きが出来るように、さらなる役割を持たせたD-FF を追加してあります。
また、「デコード」という、命令を解釈する行程は、短時間で出来ますので、フェッチサイクルの行程終り付近で「デコード」作業をさせ、独立したD-FF は使いませんでした。


それでは、より具体的にご説明いたします。
TANACOM-1 の命令は、次の3つの系統があります。

< メモリ参照命令系 >

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
0 OP Code R1/
R0
Ix Id M/
im
Address or  immediate

< ブランチ命令系 >

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 OP Code CNT Ix Id C/
Z
Address

< コントロール命令系 >

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
1 1 1 1 OP Code Operand


これらを組み合わせて、目的の動作をさせるために、メモリ上に書き込まれたプログラムの1命令、1命令について、制御装置は、次の様に実行していきます。

命令サイクル解説図

赤文字で示した記号は、役割を割り当てた1個1個のD-FF の名称を表しています。
但し、「」については、直列につないだ、2個のD-FF で構成されています。

TANACOM-1 のメインメモリに採用したSRAMは、アクセスタイムが、450 nSでした。
そこで、メモリアクセスを必要とするフェーズには、必ずD-FF が2個関わる(2個で600 nSを作り、450 nSをしっかりカバーする)様に設計しました。

TANACOM-1 の先の3系統の命令達は、命令の性格により、また条件により、使うD-FF 違ってきます。
それを表にまとめてみました。
フェッチサイクルである M1+M2 だけは、皆同じです。

命令の実行サイクル

TANACOM-1 は、この様に、最速で 0.9μS、遅くても1.8μSで、命令が処理されている事が解ります(割込の場合を除く)。

また、目的の動作を「実行」するエグゼキュートサイクルに於いて、メモリアクセスに関わらない、ブランチ命令系、コントロール命令系、イミデートを使うメモリ参照命令系は、1個のD-FF( E2 )で済むようにして、少しでも命令実行速度を稼ぐように、工夫しました。

アクセスタイムの早い SRAMを使える様になれば、この制御装置の Phase Control は、大きく変わるでしょう。
実は、この回路をどう設計するかが、コンピューター設計者の腕の見せ所です。
皆様も、ぜひ、やってみませんか?

クロック回路のタイミング詳細

具体的にクロック回路の動作を解説いたします。


3進カウンタ

前項で説明しました Phase Control に於いて、水晶発振器にて作られた 10 MHzのパルスは上図の、①から入って来ます。1周期は、100 nSになります。
その 100 nSのパルスが、2個のJKフィリップフロップ( 以下 JK-FF )で構成される3進カウンタを通ると、その出力②、③は、

画像の説明
のようになります。
②、③は、3進カウンタの出力ですから、当然、その周期は 300 nS になります。

さあ、ここで制御回路は、この②のパルスの立ち上がり( ポジティブ・エッジ )を利用して、先のフェーズ用D-FFを順序よく動かしていきます。

そして、③を正式なCLOCK信号として、各レジスタやカウンタに、送り出します。
各レジスタ等は、③CLOCKパルスの立ち下がり( ネガティブ・エッジ )で、動作確定するように配線されています。

上図の最後は、各フェーズのD-FFが循環していくタイミング例を概念的に表現してみました。
この絵のごとく、各フェーズとフェーズの切り替わり点では、微妙に両者の信号が重なり合うシーンが見られます。
しかし、全ての動作は、③CLOCKパルスのネガティブ・エッジでしか起こりませんので、その時点で、全ての信号は安定した状態にあり、重なったり混線する事は、絶対に起こらないのです。


powered by Quick Homepage Maker 5.3
based on PukiWiki 1.4.7 License is GPL. QHM

最新の更新 RSS  Valid XHTML 1.0 Transitional