5

ソース アーキテクチャとターゲット アーキテクチャが異なると仮定すると、エミュレータはメモリ バリアをどのように効率的に変換するのでしょうか? 一般に、最新のエミュレーターは JIT を使用してソースISAからターゲット ISA に変換することを知っていますが、どのコードが複数のプログラム カウンターによって到達可能であり、どのコードが到達可能でないかを知り、どの命令を並べ替えても安全かを知ることは非常に難しいと思われます。 (ISAの違いにより、JITが効率的なものを生成するために必要になる可能性があります)、そうではないものは非常にトリッキーに思えます。

命令ストリームで明示的なメモリ バリアを見つけることさえ保証されていません。たとえば、x86 の多くの人々は、整列されたワード書き込みがアトミックであることを信頼しています。エミュレーターは保守的に、整列されたすべてのワード書き込みを並べ替えることができないと想定していますか? これは潜在的に巨大なオーバーヘッドのように思われるため、この種の問題に取り組むための既知の分析があるかどうか疑問に思います。

4

0 に答える 0