|
|
|||||||||
|
|||||||||
|
|
HW 28 - DRエミュレータのキャッシュ(8-Apr-96)
Q: 新しいダイナミック・リコンパイリング・エミュレータ(Dynamic Recompiling emulator、DRエミュレータ)を搭載したMacintoshでは、私たちの68Kアプリケーションはクラッシュします。 A: 本件は、DRエミュレータのバグではありません。DRエミュレータは、68020、030および040のように、フラッシュを行う必要のあるインストラクション・キャッシュを有しています。 DRエミュレータは、以前のエミュレータのように、あたかも自分自身が68020プロセッサであるかのように情報を返しますが、可変長のインストラクション・キャッシュを有しています(実際のプロセッサの固定長キャッシュとは異なります)。アプリケーションの中には、インストラクション・キャッシュの存在に気づかなかったり、あるいは、実際に680x0プロセッサをテストした結果をもとに、ある程度のコードを実行すればキャッシュのフラッシュは自然に行われると仮定しているために、キャッシュのフラッシュを行わないものもあります。クラッシュを解決するには、キャッシュをフラッシュすることです。もし、特定の条件でキャッシュのフラッシュを行っていたり、あるいは、キャッシュの一貫性を損なうような操作を行っているのであれば、無条件にキャッシュをフラッシュしてください。
PowerPCを搭載したMacintoshがPPCおよび68Kのどちらのモードで動作している場合でも、インストラクション・キャッシュをフラッシュする最善の方法は、
しかし、もしコードを修正しているのであれば、PPCコード中でインストラクション・キャッシュとデータキャッシュの両方をフラッシュする必要があるでしょう。というのも、コードはときとしてデータとして扱われることがあり、それゆえに、そのコード自体がデータキャッシュに含まれているからです。したがって、インストラクション・キャッシュだけフラッシュするのは得策ではありません(インストラクションがデータキャッシュに残ってしまいます)。
これらのコール(ただし
以下の資料もご参照ください。
[ Technical Q&A's : Hardware (for Mac OS) : HW28 ] |
|