特定のオブジェクトがCPUキャッシュにあるかどうかをJavaでチェックする方法はありますか?そのフィールドの1つを読み書きするとキャッシュミスが発生するかどうかをテストする方法はありますか?
私は過去にJavaプログラムを作成しましたが、複雑なプログラムは作成していません。現在、Javaでいくつかの学術研究を行う必要があります。
これが不可能な場合、この種のことをシミュレートする一般的な方法はありますか?そして、これはCなどの低レベルプログラミングで可能ですか?
特定のオブジェクトがCPUキャッシュにあるかどうかをJavaでチェックする方法はありますか?そのフィールドの1つを読み書きするとキャッシュミスが発生するかどうかをテストする方法はありますか?
私は過去にJavaプログラムを作成しましたが、複雑なプログラムは作成していません。現在、Javaでいくつかの学術研究を行う必要があります。
これが不可能な場合、この種のことをシミュレートする一般的な方法はありますか?そして、これはCなどの低レベルプログラミングで可能ですか?
TL;DR-いいえ
Javaでは、JVMはCPUからユーザーを保護するため、この種の低レベルの情報は、設計上、プログラムに公開されません。
さらに、低レベルの言語(Cなど)を使用してアセンブリレベルのハックを使用した場合でも、次の理由により、キャッシュステータスに関する意味のあるデータをどこで取得できるかはほとんど想像できません。キャッシュは動的です-新しいデータは継続的にロードされ、(古い)データが継続的にフラッシュされます。与えられた瞬間ごとに、CPU上で複数のプロセスが実行され、それぞれが少なくとも1つのスレッド(おそらくそれ以上)を生成します。これらすべてのスレッドのアクティビティの組み合わせは、キャッシュとそれに格納されているデータに影響します。
したがって、質問に対するY / Nの回答を取得できたとしても、is object X in cache
この回答は取得した瞬間に廃止されます。
他の人がすでに言ったように:いいえ。
また、特定のデータについてキャッシュにクエリを実行できたとしても、そのような低レベルにはそのような概念がないため、オブジェクト全体がキャッシュにあるかどうかはわかりません。