2017-09-21 25 views
2

コードの一部が重要で高速で確定的な時間に実行する必要がある場合は、組み込みプロジェクト(ARM Cortex-Mを使用する)を使用しているとしますできるだけ。ARM:キャッシュメモリを使用してクリティカルコードを高速化する

L1キャッシュの一部を犠牲にしてクリティカルコード/データ用に予約することは可能でしょうか?私はその後、重要なコード/データを読み込み、常にL1キャッシュ速度で実行/アクセスすることができました。

+0

一部のARMマイクロコントローラには、強く結合したメモリ(TCM)がありますが、これは本質的にあなたが求めているものです。 – EOF

+0

したがって、TCMの速度はL1キャッシュの速度と同じですか? – Kostas

+0

ほとんどすべてがフラッシュより速いsramを持っていますが、フラッシュはしばしばsramの最高速度の半分で、最悪の場合は数倍遅くなります。単純にそのコードをsramに移動すると、あなたにブーストが与えられます。次に、キャッシュをオンにするだけです。決定論的なことは必ずしも起こらず、整列や他のいくつかのことを制御する必要があります。命令を追加または削除することが慎重でない場合は、クリティカルセクションの全体的な性能を変更することができます。 –

答えて

1

私は答えが「技術的に言えば、いいえ」と思います。キャッシュメモリとして割り当てられたメモリは、キャッシュコントローラが必要とする処理、つまりキャッシングを行うために使用されます。

チップベンダーは、利用可能な最速メモリからコードを実行する方法を提供してくれたらうれしいことです。チップにTCMがある場合は、クリティカルコードをロードすると、L1キャッシュにキャッシュされたときに実行されるように高速で実行する必要があります。チップがフラッシュとRAMを提供する場合は、重要なコードをRAMにロードすることもずっと高速になるはずです。後者の場合、キャッシュコントローラが存在する場合、キャッシュされたコードを実行するために同じRAMを使用するように構成できます。

+0

TCMは使用しませんが、ROMよりはるかに速いオンボードのスタティックRAMにプログラムをロードするトリックも使用します。 – Surt

関連する問題