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

 ぼくのかんがえたさいきょうCPUは最大長で32768バイトの汎用レジスタを定義しているが実現性はさておきどんな問題が起こるか。

 シフト命令のシフト量が最大262144になってしまう。18bit必要だ。こんなものバレルシフタで作ったらとんでもないことになってしまうし分割して複数サイクルでシフトするにしてもそもそもそんなにシフト量は必要かという話になる。

 ではシフトをビット単位のシフトとバイト単位のシフトに分けて考えてみる。ビット単位だと0~7を指定し、それ以上はバイト単位にする。
バイト単位のシフト量を3bitまでと考えると全体では6bit、0~63までシフト量を指定できる。これは現行の64bitプロセッサに少し足りない。
バイト単位のシフト量を8bitまでと考えると全体では11bit、0~2047までシフト量を指定できる。
バイト単位のシフト量を16bitまでと考えると全体では19bitで完全にカバーできる。
命令ではバイト単位は16bit幅まで指定可能にして、あとは内部実装で複数サイクルで回せばよさそう。1サイクルでシフトできる量は4程度でよいのではなかろうか。


 ついでにINSERT/EXTRACT命令について考える。
シフト命令、ビットフィールド命令

ローテート命令はすでにあるとすると、POWERのRotate Left then AND with MASKを参考に、元レジスタの特定位置、幅でしめされるデータを対象レジスタの同一箇所に上書きする命令を追加する。REPLACE命令としておくか。

ROL Rs1,value →ローテートした結果はtempDへ
REPLACE pos,size,Rs2,Rd → tempDのpos位置からsize幅のデータをRs2の同一箇所に上書き、Rdに保存

2命令だけど実装によってこの並びの命令だったらより複雑な演算器で1サイクルで処理してもよい。

pos,sizeの指定について。posはデータのLSB側でsize分MSB側に伸ばしたものとすれば計算機側の都合はいいかもしれない。


アンティーク電話/ローテート有線電話/ホームオフィスデスクトップ有線/機械式着メロL22CM * W18CM * H20CM ( 色 : ゴールド )アンティーク電話/ローテート有線電話/ホームオフィスデスクトップ有線/機械式着メロL22CM * W18CM * H20CM ( 色 : ゴールド )

GFL
売り上げランキング :

Amazonで詳しく見る
by G-Tools

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック