5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RETROF-16 レジスタ構成と命令毎の内部動作

Last updated at Posted at 2020-02-02

 ①が本機RETROF-16のレジスタ(主メモリを含む)の構成図です。説明の都合上、入出力関係と画像表示関係の回路に相当する部分は割愛しています。図中の赤色の線はアドレスバスを、青色の線はデータバスを、緑色の線はALUバス(演算結果バス)を意味します。
 本機は汎用レジスタを256本有しますが、これらは主メモリの一部をレジスタと見做す「仮想レジスタ方式」です。具体的には主メモリの0x00番地から0xFF番地が0番レジスタから255番レジスタに対応します。従って例えば「0番地に値xを書き込む」と「0番レジスタに値xを書き込む」は同義となります。
令和版レジスタ - 2.png
本機の全ての機械語命令はSTAGE-0からSTAGE-6までの7つのSTAGEで処理されます。STAGE-0からSTAGE-5は2クロック、STAGE-6は1クロックを消費します。従って全STAGEは13クロックで処理されます。クロックは16MHz(62.5ns)ですから、全ての機械語命令は812.5nsで実行が完了します。
STAGE-0でPCの値をWに転送し(図②)、STAGE-1でWで示されるMの内容をIRとW自身に転送します(図③)。この時IRには命令コードの上位8bitをWには命令コードの下位8bit(上位8bitはゼロクリア)が格納されます。
8ビットリテラルアドレッシングの場合はSTAGE-2、STAGE-3は何もしません。Wには命令コードの下位8bitがそのまま残ります(図④)。
令和版レジスタ - 3.png
 レジスタアドレッシングの場合(図⑤)はWが示すMの値をW自身に格納します。STAGE-1終了後のWの値は0~255のいずれかですから、この処理終了後はWには主メモリの0~255番地のいずれかの値、すなわち0番レジスタ~255番レジスタのいずれかの値が格納されることになります。
 レジスタ間接アドレッシングの場合(図⑥)はWが示すMの値をW自身に格納する動作を2度行います。これによりWには0番レジスタ~255番レジスタのいずれかが示すメモリの値が格納されます。
 16ビットリテラルアドレッシングの場合(図⑦)は命令ワードの次のワードがWに格納されます。命令ワードの下位8bitは意味を持たなくなります。
#####アドレッシングモードとWの値の関係のまとめ

モード STAGE-3終了時のWの値
8bitリテラル 命令コードの下位8bit
レジスタ n番レジスタの値
レジスタ間接 n番レジスタで示される主メモリの値
16bitリテラル 命令コードの次のワード(16bit)

令和版レジスタ - 4.png

 分岐命令は現在のPCの値とWの値との演算結果をPCに格納します(図⑧)。演算種別はWの値をそのまま演算結果とする(絶対分岐)、PCにWの値を加える(前方相対分岐)、PCからWの値を引く(後方相対分岐)の3種類です。但し実際に分岐するか否かは命令コードとフラグレジスタの値で決まります。
 演算命令は現在のAccの値とWの値との演算結果をPCに格納します(図⑧)。演算種別はWの値をそのまま演算結果とする(ロード命令)を含め7種類です。演算命令はフラグが変化します。
 LDM(Load from memory)命令(図⑩)はWで示されるメモリの内容をAccにロードします。LDM(Store to memory)命令(図⑪)はAccの値をWで示されるメモリ番地にストアします。
 シフト命令(図⑫)はAccを単に1bit右シフトするだけです。Wの値(オペランド)は意味を持ちません。ちなみに左シフトはAccにAccの値を加えることで実現できるので機械語命令は存在しません。
 本機では未定義命令は全てHALT命令(実行停止命令)と見做します。命令コードが未定義命令の場合はSTAGE-4でステージカウンタ(回路図のU27 74LS163)を強制停止します(図⑬)。
令和版レジスタ - 5.png
 入力命令は基板上のスイッチ、もしくはキーボード等を接続する端子のいずれかの値を入力ポートバッファ(図⑭のIN、実体は74LS257)とALUを介してAccに格納します。Wの値(オペランド)は意味を持ちません。
 出力命令はWの値を基板上のLED(上段16個)に、Accの値を基板上のLED(下段16個)に表示します(図⑮)。本機は液晶ディスプレイを表示装置として使えますので、この基板上のLEDに対する出力命令は、ソフトウェア処理の途中経過を表示するのデバッグ的な使い方を想定しています。
 画像メモリからのロード(LDV命令、図⑯)と画像メモリへのストア(STV命令、図⑰)は対象となるメモリが異なるだけで基本的にはLDM命令とSTM命令と同じです。但し、画像メモリはLDM命令とSTM命令実行時以外は、CPUの動作とは無関係に毎秒75回のリフレッシュレートで画像を表示する必要がありますので、アドレスバスとデータバスにバスバッファを挿入し、回路的に独立させています(図⑱)

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?