SubRISC+
命令数を4つに限定することで小型/低消費電力化を図った。
この4つとは何か?と話題になったので調べた。
引き算して結果が負だったらジャンプ
ビットAND
シフト
メモリアクセス(load/store?、詳細は下記)
Here we briefly explain the basics of SubRISC+ to the extent of highlighting our contributions in this paper. SubRISC+ was developed on the basis of a one-instruction set computer (OISC) whose unique instruction is ‘‘subtraction and branch on negative’’ that is capable of realizing any operations and hence is Turing complete. By extending the instruction set architecture (ISA) of this OISC, SubRISC+ handles four instructions (subtraction, bitwise AND, shift, and memory access) that can be flexibly expressed in either 16 bits (for compactness) or 32 bits (to support an immediate value or branch) to improve computing and power efficiency while retaining simplicity with a very limited circuit overhead.
https://gyazo.com/f67cc8123a482f7b21279f8d29bcae62
AとBがnot equalならジャンプ、という命令は「AからBを引いて負ならジャンプ、BからAを引いて負ならジャンプ」で表現できる
ビット演算のnotはフルビット立ってる-1からの引き算で表現できる
無条件ジャンプ
https://gyazo.com/567d984c3e024ff3a3c970f2cdbc82c1
正の数が入ってるPOSと、ゼロが入ってるZを用意する
無条件ジャンプは「Z - POSが負ならジャンプ」で実現できる
ジャンプ先で「Z = Z - Z」を実行してゼロに戻しておく
メモリアクセス命令について
論文には「メモリアクセス」としか書いてないので詳細がわからない
1つだけ?片方向にしか動かせない?と思ってたが光成さんから「x86ならloadとstoreあわせて一つのmov命令」との指摘があったので、確かにそれなら「メモリアクセス」の一言で済ませそうと思った
別の意見
kazuho レジスタからのストア命令じゃないかなと思った。回路規模を抑えるって意味で、subnegの2引数をメモリとレジスタ、デスティネーションをレジスタにして、ストアを別命令にするあたりがバランスいいんじゃないか さらに追記