> 2002/12/16 (月) 00:42:10 ◆ ▼ ◇ [mirai]> > だからそもそも命令を置き換えた時点で動作クロック数が変わってくるから置き換えただけじゃだめだっつーに
> > 仮にI/Oのエミュレーション部分を組んだとしても
> 動作クロックが変わっても同期を取ってるのは
> VBlankだから問題なさそうだと思うが?
> 二つのCPUは実機でも非同期で動いてて片一方を止めて共有メモリにアクセスしてるはずだし
あー1から説明すんのか?(;´Д`)
そう言ったエミュレーション手法を取るにはCPUの各命令毎にクロックコストを設定して完璧なエミュレーションを行う必要がある。
その上で複数のプロセッサを動かし周辺機器にアクセスした場合のレジスタやメモリの動きなども完全にエミュレーションする必要があるわけだ。
そうなると、まずサターンの例だけで言うならSHが2つ、音源用に68000(ちょっとこの辺自信ない(;´Д`))がCPU。
さらに、サターンの場合描画演算プロセッサとは正確な意味では違うがまぁ似たような物がたしか2個。
たしか、そんな感じでCPUと呼べる物が8こ位ある。
これらを並列に動かし、同期を取らないでエミュレーションをするには実際にはかなりのクロック数がかかることになる。
そう言った意味では命令の置き換えという手法はある意味有効ではある。
最近のエミュレーターではUltraHLEなんかがその手法を取っていた。
古くはx68KでFCのROMをコンパイルする物などもあった。
しかし、この手法にはいくつかの問題点がある。
つまり、一番処理のかかる命令にRISCならではの理由により足を引っ張られる。
仮に、命令を3クロックで実現できるとしよう。
しかし、一個の命令だけは12クロックかかるとする。
そうなるとその命令にスピードを会わせなければその命令からCPUの挙動がおかしくなってしまうために全ての命令を12クロックで実現する必要がある。
故に、命令の置き換えは現実的じゃない。解った?
参考:2002/12/16(月)00時33分01秒