フェッチ速度の最適化
■固定命令語長とハーバードアーキテクチャ
命令とオペランド(or リテラル)の組み合わせを全て固定長ビット内に納めるように、命令セットを設計する。例えば、
add reg1, reg2, reg3; reg1 = reg2 + reg3
のような単純計算を例にとると、add命令種別に8bit、レジスタ種別に8bitを割り当てると、上記命令は32bit幅に格納することができる。また、レジスタ幅を16bitに固定できるならば、
mov reg1, 0xffff; reg1 = 0xffff
のような代入式は、命令種別に8bit、レジスタ種別に8bit、リテラルに16bitで、やはり32bit幅に格納することができる。
通常、RISCアーキテクチャでは、固定命令語長を採用するが、オペランド、リテラルについてはその限りではない。そこで、オペランド、リテラルまでを含んで固定命令語長にすることにより、見かけ上、1命令実行を1サイクルで行うことが可能になるため、ハーバードアーキテクチャ的なアプローチとなりえる。
※これらは、メモリバスが32bitであることを前提としている。メモリバスが64bitであれば、後述する仕組みによって、1回のフェッチサイズを64bitにすることで、フェッチ速度の最適が行われる。
※これらの実装はマイクロコード実行の際の仕様である。
■VLIW(Very Long Instruction Word)とマイクロプログラミング