nanoMIPS 調査その3 32bit長命令の特別な例と注目の命令

 nanoMIPSの命令調査、これで終わりです。(金など積まれたら考えます) 前回まで: nanoMIPS 調査その2 16bit長命令 nanoMIPS 調査その1 48bit長命令 nanoMIPS調査(Googleスプレッドシート) ・32bit長命令の特別な例  メモリ操作でよく使うソースレジスタを固定してそ…
トラックバック:0
コメント:0

続きを読むread more

nanoMIPS 調査その2 16bit長命令

 nanoMIPSの16bit長命令について抜き出して調べた。 前回:nanoMIPS 調査その1 48bit長命令 nanoMIPS調査(Googleスプレッドシート) 32bit長の命令から16bit長にするためにはbit数を削減するためにいくつかの制限がある。 ・指定できるレジスタ数 32本(5bit)→8本(3b…
トラックバック:1
コメント:0

続きを読むread more

nanoMIPS 調査その1 48bit長命令

 前回のnanoMIPS 第一印象の続き。命令セットの一覧表を作って調べてみた。必要ならコピーしてご自由にお使いください。 nanoMIPS調査(Googleスプレッドシート) nanoMIPSとは: 16/32/48bit長命令の32bitアーキ 遅延スロットはない 乗除算で使ってたHI/LOレジスタはない 16/…
トラックバック:2
コメント:0

続きを読むread more

IBM System/360の形式記述

 こういう話もあったので。RISC-V仕様のFormal表現いろいろ(FPGA開発日記)  命令セットアーキテクチャは色々あるけれども、どれも自然言語による定義と擬似コードによる動作の補足説明があるくらい。IBMのSystem/360はAPLで記述してあるらしいことはどっかで聞いたことがあった。 検索してみると:IBM System…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU 演算結果のバイパス

 以下をもうちょっと考えてみたもの。 ぼくのかんがえたさいきょうCPU:連鎖性言語の特徴を取り入れてみる 乗算を使わずに%r1の値を3倍するコードを考えてみる。 SLL %r1,1,%r2 ; ADD %r2,%r1,%r3 SLL命令で%r2には%r1の2倍がはいり、ADDでもとの%r1と加算されて%r3に…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU レジスタの本数と拡張

 命令フォーマットでは汎用レジスタの番号指定を6bit用意している。64本が指定可能で、RISC系プロセッサの汎用レジスタ31(32)本+浮動小数点レジスタ32本をカバーできると考えた。  で、常に64本必要だろうか?インタラプトが発生した時は割り込み処理用に8本くらいでも良さそうだし、数値計算向けに大量に必要になるかもしれない。とい…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU 2018命令フォーマットメモ

 1バイト単位の可変長命令についてドバッと思いついたのをメモ。Wikiサービスを探して整理する予定。 8bit可変長命令フォーマット 命令列 := {CO|CO OP}* CO := 0_xxxxxxx オペコード OP := 1_xxxxxxx オペランド CO := {CO1|CO2|CO3} CO1 :…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU オペランド簡略化

 可変長8bit単位の命令フォーマットのうち、オペランド部分を変更。 ぼくのかんがえたさいきょうCPU 8bit可変長命令フォーマット続き ぼくのかんがえたさいきょうCPU 8bit可変長命令フォーマット オペコードは 0xxxxxxx で始まり、オペランドは 1xxxxxxx で始まる。  オペランドは以下の2種類…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU レジスタを覗く窓

 ぼくのかんがえたさいきょうCPUは最大長で32768バイトの汎用レジスタを定義しているが仮に実現したとして演算器をどうするか。もうなんかドリフのコント「もし汎用レジスタが異常に長かったら」みたいなタイトルになってきてるが。  レジスタの領域をチップ内に持つのはそう難しくないだろうが、32Kバイト長と32Kバイト長を入力として演算…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU シフト命令のシフト量

 ぼくのかんがえたさいきょうCPUは最大長で32768バイトの汎用レジスタを定義しているが実現性はさておきどんな問題が起こるか。  シフト命令のシフト量が最大262144になってしまう。18bit必要だ。こんなものバレルシフタで作ったらとんでもないことになってしまうし分割して複数サイクルでシフトするにしてもそもそもそんなにシフト量…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU:eval

 ぼくのかんがえたさいきょうCPUは最大長で32768バイトの汎用レジスタを定義しているが実現性はさておきこれをどう活用するか。  レジスタに命令列を入れて実行させるEVAL命令というのはどうか。  EVAL レジスタ番号,実行ステップ数  この命令に当たると、レジスタ番号で指定された汎用レジスタの内容をフェッチする直…
トラックバック:0
コメント:0

続きを読むread more

ぼくのかんがえたさいきょうCPU レジスタ番号と定数

 演算に定数をつかうときは 1. レジスタに即値を代入する または 2. 即値をオペランドに指定する という感じになるのだけれども、1, はいったん即値を代入する操作が必要になり、2.はオペランドのフォーマットが長くなってしまう。ではどうしようか。  64本の汎用レジスタを使うことを考えると、これを表現するためには6bitあればよ…
トラックバック:0
コメント:0

続きを読むread more

iAPX432の命令とアドレッシング・モード

 前回の続き。 CHAPTER 3 DATA MANIPULATION 3.4命令  命令はオペレータとオペランドの組み合わせでオペランドは最大3つ。命令列はハードウェアで認識されるメモリ上のInstruction Segments内にある。命令は可変長ビット(バイトじゃないよ!)で現在の実装では32bit単位で読み込…
トラックバック:0
コメント:0

続きを読むread more