Godson-3のqemu支援命令セット
Godson-3はx86の命令実行ユニットをMIPS命令で駆動するプロセサと要約できる。(他にreconfigurableなチップ間ネットワークなどx86 specificでない特徴もある)
MICRO誌の"Godson-3: A Scalable Multicore RISC Processor with x86 Emulation"にある。
評価は同じGodsonでMIPSバイナリとx86バイナリを比較することで行われ、EEMBCで9割程度の性能を達成している。もっとも、他のベンチマークは3割とか5割といった性能のものもあり、何より既存のx86やMIPSとは比較していない。
EFlags生成とフラグベースのジャンプ
もっともわかりやすいx86機能はALUでのフラグ生成だろう。これはSETFLAGプレフィクスによって発動し、後続する演算命令の結果によって(ハードウェアで)EFlagsを更新する。
x86SUBとかx86JLEのような合成済の命令も提供する。
境界チェックの強制
bound registerによる境界チェックを強制し、x86のセグメント方式に適応している。
バイト処理命令
RISCプロセサは通常ワード単位の処理以外を提供しないが、x86では部分レジスタとしてレジスタの下位8bitだけを更新したり、アラインされていないデータにアクセスできる。
Godson-3では、レジスタの任意のバイト位置を操作できる命令を追加している。
CAM命令
CAM(Content Addressable Memory)を直接サポートする命令を追加している。Godson-3のCAMは64エントリであり、専用の命令によってlookupできる。
記事では、CAM命令は間接命令の実装に利用されることになっている。つまり、qemuがバイナリ変換を行うと実際の実行コードのアドレスは不明になるが、そのアドレスの変換をCAM命令を使って行う。
CAMにはprocess-idフィールドがあるとされていて、もしかしたらコンテキストスイッチでの保存対象外としているかもしれない。