3

マルチコア ARM チップとシングル コア チップで Dalvik+JIT を実行するとペナルティがあるのでしょうか?

たとえば、Android システム ビルドでマルチコア サポートを無効にし、電話全体を単一の CPU コアで実行すると、シングルスレッドの Java ベンチマークを実行したときにパフォーマンスが向上しますか?

マルチコアでのメモリバリアと同期のコストはいくらですか?

シングル コアの電話とデュアル コアの電話のシングル スレッドのベンチマーク スコアを見たのを漠然と覚えているので、質問しています。Mhz がほぼ同じである限り、2 つの電話に大きな違いはありません。デュアルコア電話の速度低下を予想していました....

4

2 に答える 2

1

簡単な答えは、「試してみませんか?」 です。

複雑な答えは次のとおりです。マルチコア同期を行うにはコストがかかりますが、複数のコアを持つことには利点もあります。間違いなく、プログラムが同期プリミティブの追加のオーバーヘッドに悩まされ、そのパフォーマンスに深く影響されるという病理学的なケースを考え出すことができます。これは通常、レベルが深すぎる (高速ループ内) でのロックが原因です。しかし、一般的なケースでは、多数の他のシステム プログラムが他のコアで CPU 時間を取得できるという事実と、プロセスを中断する代わりにカーネル サービスの割り込みと IO がそれらのコアで発生するペナルティを大幅に圧倒する可能性があります。 MP同期。

あなたの質問への回答として、DSB は数十または数百のサイクルを要し、DMB はおそらくよりコストがかかります。実装に応じて、排他的なロード/ストア命令は非常に高速または非常に低速になる可能性があります。WFE は数マイクロ秒を消費する可能性がありますが、競合が発生していない場合は必要ありません。

于 2012-11-02T01:54:03.657 に答える
0

背景: http://developer.android.com/training/articles/smp.html

SMP 用にビルドされた Dalvik には追加のオーバーヘッドがあります。Java メモリ モデルでは、特定の保証を適用する必要があります。これは、特に揮発性フィールドと不変オブジェクトを扱う場合に、追加のメモリ バリアを発行することを意味します。

追加のオーバーヘッドが目立つかどうかは、正確に何をしているのか、どのデバイスを使用しているかによって異なりますが、一般的に言えば、ターゲットを絞ったベンチマークを実行していない限り、それに気付くことはほとんどありません.

複数のコアを搭載したデバイスで UP 用にビルドして Dalvik を実行すると、不安定な動作が見られる場合があります。上記のドキュメントの「SMP エラーの例」の付録を参照してください。

于 2013-01-15T19:30:57.133 に答える