AURIX™ TriCore™ CPUのCPU負荷を減らす方法は? – KBA234357
- RSS フィードを購読する
- 新着としてマーク
- 既読としてマーク
- ブックマーク
- 購読
- 印刷用ページ
- 不適切なコンテンツを報告
Translated by: MaMi_1205306
Original KBA: How to decrease the CPU load of an AURIX™ TriCore™ CPU? – KBA234357
バージョン: **
質問:AURIX™ TriCore™ CPUのCPU負荷を減らす方法は?
回答:
CPUの負荷を軽減するには、次の方法を適用できます。
1. 負荷の大部分を消費する機能とタスクの識別:
ツールを使用して、各タスクの期間とタスクの再パーティション化を経時的に測定できます。インフィニオンのWebサイトで、この種のトレースおよびリアルタイム監視ツールを提案できるパートナーのリストを見つけることができます。
さらに、各コアでいくつかのパフォーマンスカウンターを使用できます。 これらは、CPUのパフォーマンスを測定するために使用できます:CCNT(CPUクロックカウントレジスタ)、ICNT(命令カウントレジスタ)、およびMxCNT(マルチカウントレジスタx、x = 1,2,3)。
2. キャッシュのアクティブ化とソフトウェアでのキャッシュ可能なアドレスの使用:
各CPUには、データキャッシュと命令キャッシュの2種類のキャッシュがあります。 これらを個別にアクティブ化して、フラッシュリソースへの平均アクセス時間を短縮できます。
3. CPUyのローカルRAMに重要なリソースをマップします(y = 0,1,2)。
CPUxは、ローカルRAMにアクセスするために0の待機状態を必要とします。
ほとんどの時間アクセスするCPUのDSPR(データスクラッチパッドRAM)の変数をマップします。
この関数を呼び出すCPUxのローカルPSPR(プログラムスクラッチパッドRAM)の重要な関数のマップコード。
4. コンパイラオプションの使用:
関数とコードサイズの実行速度を上げるために、各コンパイラでいくつかのオプションを使用できます。
5. 効率的なアドレス指定:
特定のアドレス指定タイプを使用すると、実行時間を短縮できます。顧客は、リソース(レジスタ、メモリなど)にアクセスするために必要な命令が少なくなります。
1. ショートアドレッシング(グローバルベースレジスタ(A0、A1、A8、A9)を使用したベース+ロングオフセットアドレッシングは、64 KBのアドレス範囲で効率的なデータアクセスを提供します)。
2. ニアアドレッシング(お客様はニアセグメントを使用して変数と定数を見つけることができます(各TriCore™ 256MBメモリセグメントの最初の16KBにあります)。
3. フラッシュにアクセスするための待機状態の構成を確認します。(ユーザーマニュアルで利用可能な計算式)。
4. クロックが正しく構成されているかを確認します。(CPU、SRI(共有リソース相互接続)、SPB(システムペリフェラルバス)など)
5. 潜在的な最適化の追加:
エミュレーションライブラリの代わりに、単精度浮動小数点ユニット(コンパイラオプション)を使用できます。
--no-doubleオプションを設定することにより、コンパイラはdouble型の変数をfloatとして扱います。
9. 組み込み関数:
いくつかの組み込み関数は、Cで同等性を持たない特定のアセンブリ命令を使用するために提案されます。
10. 重要な機能/タスクは、アセンブラによる指示を最適化:
この場合、TriCore™スーパースカラーパイプラインの使用を最適化します(命令IP、LS、およびLPのシーケンスで遅延時間を最適化します)。
インラインアセンブラはCコードで直接使用できます(C変数をオペランドとして渡すことができます)。
詳細については、アプリケーションノートAP32168を参照してください。
注:このKBAは、次の一連のAURIX™ MCUに適用されます。
- AURIX™ TC2xxシリーズ
- AURIX™ TC3xxシリーズ