RVC命令の切り出しの部分を改善について実装を進めていて、Dhrystoneでの基本的な動作を検証している。
おおよそRVCの16ビットの切り出しについては動作するようになった。周波数的にも許容範囲だ。 問題はキャッシュブロックを跨いだ時だ。 キャッシュブロックを跨いだ時、前のブロックの情報を覚えておいてデコードを行う必要がある。
この時、16ビットの命令ビットを覚えていると、その時にデコードしないといけない命令フィールドは仮想的に16ビット増える。 こうするとさらに余計に16ビットデコードしないといけない感じがするが、実際にはそうではない。
前のキャッシュブロックの16ビットと、次のキャッシュブロックの16ビットは絶対に結合されるのだから、デコードは1番目のブロックだけRVIで決め打ちでデコードして、それ以降のブロックはシフトする必要はない。 こうすることで、デコード幅が増えることを防ぐことができるように思う。