竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS ぼくのかんがえたさいきょうCPU: 2017.05 概要と基本フォーマット

<<   作成日時 : 2017/05/17 02:24   >>

ブログ気持玉 0 / トラックバック 4 / コメント 0

 ぼくのかんがえたさいきょうCPUも考え続けていつのまにか十年くらい経ってしまった。いろいろな命令セットアーキテクチャを調べるほどにいじくりまわしたくなるのだが、そろそろまとめてみようかとおもう。

ぼくのかんがえたさいきょうCPU 2017版 ユーザモード定義

・汎用レジスタはR0〜R63の64本
・汎用レジスタ以外のレジスタはプログラムカウンタ(PC)と浮動小数点状態レジスタ(FCR)
・汎用レジスタにはそれぞれ内部にタグを持ち、型を扱う。型によりレジスタのデータ幅、整数/浮動小数点数、スカラ/SIMDなどを扱う。
・データ幅は2^(n-1)バイト。(1バイト=8bit)
・ユーザモードで割り込みは扱わない。割り込み事象はスーパバイザ側で扱う。
・メモリ空間とメモリコンシステンシはスーパバイザ側から用意される。
・命令は8bit単位の可変長。
・命令の引数は可変のnオペランド命令。
・命令セットには拡張の余地を残す。
・データの扱いはMSB側が上位のリトルエンディアン。
・前命令の演算結果や状態フラグは後続の命令から参照することができる。分岐で飛んできても同様。
・命令はレジスタ間で演算を行う演算命令、レジスタとメモリ間の転送を行うメモリ操作命令、分岐命令、その他の命令で構成される。
・演算命令の前後でデータのサイズは変化しない。
・演算命令の一部はデータの型により演算方法が変わる。
・メモリ操作命令はデータのサイズしか意識しない。レジスタに付随する型の情報は(明に操作しないかぎり)消える。
・SIMDのレーン指定はレーンの幅を2^(n-1)バイト単位で与える。


命令フォーマット

命令列:={命令CO|命令CO オペランドOP}*
命令CO:={CO1|CO2|CO3}
オペランドOP:={OPC|OP1C|OP2|OP3S|OPL}

CO 0xxxxxxx
OP 1xxxxxxx

CO1 00_xxxxxx 1バイト命令 よく使われる操作
CO2 010_xxxxx_xxdddddd 2バイト命令 標準的な命令(dddddd:デスティネーションレジスタ指定など)
CO3 011_xxxxx_xxdddddd_yyyyyyyy 3バイト命令 拡張用

OPC 10_LLLLLL 1バイトオペランド LLLLLL=6bit定数 ショート即値
OP1C 1100_aaaa_aaLLLLLL 2バイトオペランド aaaaaa=Ra Raと6bit定数
OP2 1101_aaaa_aabbbbbb 2バイトオペランド RaとRb
OP3S 1110_aaaa_aabbbbbb_sscccccc 3バイトオペランド Ra,Rb,Rcと2bitのモード指定
OPL 1111_nnnn 以降7×nnnnビット定数 2〜16バイトオペランド 7〜105bit定数 ロング即値
2バイト目以降の値はbit7が"1"、残りの7bitで値を表現 →?8bitでも良さそうな気がしてきたぞ

OP_Reserved 1111_0000

※1 Ra番号のbit順はRa[3:0]_Ra[5:4]となる。Rb,RcはそれぞれRb[5:0],Rc[6:0]
※2 ショート即値はL[5:0]
※3 ロング即値は下位から順にn[6:0]、n[13:7]、n[20:14]……のようにつながる


以下、各命令{CO1|CO2|CO3}詳細につづく

CO1:={A1||L1|J1|M1}
0000_cond J1:分岐命令
 分岐条件
0001_xxxx A1:算術演算命令
0010_logc L1:論理演算命令
0011_xxxx

CO2:={A2|L2|M2}
0100_xxxx_00_dddddd
0100_xxxx_01_dddddd A2:算術演算命令
0100_logc_10_dddddd L2:論理演算命令
0100_xxxx_11_dddddd
0101_wwww_mm_dddddd M2:メモリ操作命令



1/4000 外洋型航宙可潜艦 黒のリヴァイアス ブラックメッキエディション1/4000 外洋型航宙可潜艦 黒のリヴァイアス ブラックメッキエディション

アオシマ
売り上げランキング : 331651

Amazonで詳しく見る
by G-Tools


テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(4件)

タイトル (本文) ブログ名/日時
ぼくのかんがえたさいきょうCPU: 2017.05 メモリ操作命令
 メモリ操作命令は汎用レジスタとメモリ間の転送を行う。メモリ操作命令はデータのサイズしか意識しない。 ...続きを見る
竹下世界塔の計算機よもやま話
2017/05/19 00:56
ぼくのかんがえたさいきょうCPU: 2017.05 分岐命令
 分岐命令は条件により命令の流れを変える。相対アドレスによる分岐、1命令スキップ、Conditional Moveを行う。 ...続きを見る
竹下世界塔の計算機よもやま話
2017/05/21 04:38
ぼくのかんがえたさいきょうCPU: 2017.05 論理演算命令
 論理演算命令は汎用レジスタどうしでAND,ORなどの論理演算を行う。論理演算はbitごとに行われるものでデータ幅が変わっても論理演算の結果は変化しない。データ幅が変わることで結果が変わるシフト、ローテートやPOPCなどは別扱いにする。 ...続きを見る
竹下世界塔の計算機よもやま話
2017/05/23 02:55
ぼくのかんがえたさいきょうCPU: 2017.06 算術演算命令
 算術演算命令はデータを数として扱い、四則演算を行う。整数型や浮動小数点型はソースレジスタRaの形式に合わせて変換され、Rdに保存される。演算結果はRaと同じレジスタ幅、レーン構成になる。 ...続きを見る
竹下世界塔の計算機よもやま話
2017/06/02 19:26

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




ぼくのかんがえたさいきょうCPU: 2017.05 概要と基本フォーマット 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる