SuperSimpleController(その7)マシン語の実装検討 [OriginalCPU]
前回の記事でジャンプ命令が動くようになったのでマシン語の実装検討を進めています。
今回のオリジナルCPUはROM内に制御信号を格納する方式でALU自体もROMで実現しているので自由度は高いのですが、例えばALUの入力をビットフィールドで指定するなどのような機構がないので、一般的なCPUのマシン語にあるディスティネーションレジスタを指定するビットフィールド等のようなものがありません。
そのため、対称性とか直行性とは無縁(チップ数を倹約しないのであればできなくもないですが)です。
RAMはまだ未結線状態でRAM関連のマシン語は検討中なのですが、ALU関連のマシン語等について暫定版ができたので下図に示します。
ALUの検討の記事で書いたように4bitで機能指定しますが、この4bitはマシン語コードの下位4bitで指定するようにしました。
★変更 2021/02/16
マシン語構成検討からの反映でジャンプ命令のコードを変更
下のリストは今回使用した試験用のプログラムです。uCODE内のそれぞれのコードを実行するようしています。
コメント中の「x数字」はそこまでの命令実行に必要なクロック数で、このクロック数分だけ実行して確認するようにしています。
始めはuCODEを記述するのが大変でしたが、次第に慣れてきたので思惑通りに動くようになってきました。
途中まで実行してはロジアナで確認し、問題あれば修正する作業を繰り返して、最後まで動くようになりました。
図中のA1カーソルが先頭のCLR_R0でA2カーソルが最後のHALT実行後のタイミングになります(HALTは以降繰り返します)
まだ途中ではありますが、レジスタ操作と条件ジャンプのマシン語ができたのでナイトライダーのようなデモを作ってみました。
クロックは試験用に50Hzにしていますが、高速動作時にボトルネックになるのはメモリアクセス時間(100ns程度)なので10MHzくらいまでは動作するのではないかと思います。
ROM式ALUから派生したコマンドであるMSBとLSBのチェックという少し変わったコードを下記のリストで使用しています。
twitterにポストした動画付きメッセージを貼っておきます。
[TOP] [ 前へ ] 連載記事 [ 次へ ]
今回のオリジナルCPUはROM内に制御信号を格納する方式でALU自体もROMで実現しているので自由度は高いのですが、例えばALUの入力をビットフィールドで指定するなどのような機構がないので、一般的なCPUのマシン語にあるディスティネーションレジスタを指定するビットフィールド等のようなものがありません。
そのため、対称性とか直行性とは無縁(チップ数を倹約しないのであればできなくもないですが)です。
RAMはまだ未結線状態でRAM関連のマシン語は検討中なのですが、ALU関連のマシン語等について暫定版ができたので下図に示します。
ALUの検討の記事で書いたように4bitで機能指定しますが、この4bitはマシン語コードの下位4bitで指定するようにしました。
マシン語コード表(作成中) |
|
マシン語構成検討からの反映でジャンプ命令のコードを変更
下のリストは今回使用した試験用のプログラムです。uCODE内のそれぞれのコードを実行するようしています。
コメント中の「x数字」はそこまでの命令実行に必要なクロック数で、このクロック数分だけ実行して確認するようにしています。
始めはuCODEを記述するのが大変でしたが、次第に慣れてきたので思惑通りに動くようになってきました。
uCODE試験用プログラム(アセンブリ言語) |
|
途中まで実行してはロジアナで確認し、問題あれば修正する作業を繰り返して、最後まで動くようになりました。
図中のA1カーソルが先頭のCLR_R0でA2カーソルが最後のHALT実行後のタイミングになります(HALTは以降繰り返します)
試験プログラム実行時のロジアナ画面 |
|
まだ途中ではありますが、レジスタ操作と条件ジャンプのマシン語ができたのでナイトライダーのようなデモを作ってみました。
クロックは試験用に50Hzにしていますが、高速動作時にボトルネックになるのはメモリアクセス時間(100ns程度)なので10MHzくらいまでは動作するのではないかと思います。
ROM式ALUから派生したコマンドであるMSBとLSBのチェックという少し変わったコードを下記のリストで使用しています。
Simple8Z 初めてのデモプログラム(アセンブリ言語) |
|
twitterにポストした動画付きメッセージを貼っておきます。
ROMとGALを使ったオリジナルCPUでマシン語の構成を検討中です
— skyriver (@wcinp) February 14, 2021
まだサブセット分しかできていませんがレジスタ操作と条件ジャンプができたのでナイトライダー風の簡単なデモプログラムを作ってみた
ようやくCPUらしくなってきた^^https://t.co/2u4ekrqgAE#Simple8Z #27C322 #GAL22V10 pic.twitter.com/WKTPKYrLlX
[TOP] [ 前へ ] 連載記事 [ 次へ ]