05092024

Last update2016/05/28 14:38

Back 現在地: Home パートナー segger-tools embOS割り込みレイテンシ

embOS割り込みレイテンシ

 


embOS割り込みレイテンシ

割り込み

割り込みはハードウェアによって引き起こされるプログラムの中断があります。割り込みが発生した場合、CPUは通常、そのレジスタの一部を保存し、割り込みサービスルーチンと呼ばれるサブルーチン、またはISRを実行します。ISRが完了すると、プログラムがREADY状態で最も優先順位の高いタスクに戻ります。通常の割り込みは、ノンマスカブルです。彼らは、CPUの "割り込み禁止"命令に無効にされない限り、彼らはいつでも発生する可能性があります。ISRはまた、ネストは、彼らが認識され、他のISR内で実行することができます。

割り込みルーチンを使用するためのいくつかの理由があります。彼らはこのような入力、シリアル·インタフェースを介して文字の伝送のハードウェアタイマ、受信または完了の期限、またはその他のイベントのステータスの変化などの外部イベントに非常に迅速に対応することができます。割り込みは、効果的にそれらが発生すると、イベントが処理することができます。

割り込みレイテンシ

割り込みレイテンシは、割り込みサービス·ルーチンの最初の命令の割り込み要求と実行の間の時間です。すべてのコンピュータシステムが割り込みレイテンシを持っています。レイテンシは、さまざまな要因に依存し、同じコンピュータシステム上でも異なります。1は、典型的に興味を持っている値は、ワーストケースの割り込みレイテンシです。割り込みレイテンシは、以下に説明する別の小さな遅延のロットの合計です。

割り込み遅延の原因

  • 最初の遅延は、ハードウェアで一般的に次のとおりです。割り込み要求信号は、CPUクロックに同期する必要があります。割り込み要求がCPUコアに達する前に同期ロジックに応じて、通常、最大3つのCPUサイクルが失われる可能性があります。
  • CPUは通常、現在の命令を完了します。この命令は、サイクルの多くを取ることができます。ほとんどのシステムでは、除算、プッシュプル複数またはメモリコピー命令は、ほとんどのクロックサイクルを必要とする命令です。CPUが必要なサイクルの上に、メモリアクセスに必要な追加のサイクルは、ほとんどの場合があります。ARM7システムでは、命令STMDB SP、{R0-R11、LR};!プッシュパラメータとパーマ。レジスタは、通常、最悪の場合の命令です。それはスタック上に13の32ビット·レジスタに格納します。CPUは15クロックサイクルを必要とします。
  • メモリシステムは、待機状態の追加サイクルが必要な場合があります。
  • 現在の命令の完了後、CPUはモードスイッチを実行するか、スタック上のレジスタ(通常はPCとフラグ·レジスタ)をプッシュします。一般的に、現代のCPUは、(例えば、ARMのような)レジスタ退避未満のCPUサイクルを必要とするモード·スイッチを実行します。
  • パイプラインは、記入してください:最近のほとんどのCPUはパイプライン化されています。命令の実行はパイプラインのさまざまな段階で発生します。それはパイプラインの最終段階に達したときに命令が実行されます。モードスイッチがパイプラインをフラッシュしているので、いくつかの余分なサイクルがパイプラインを再充填してする必要があります。

割り込みレイテンシのためにその他の原因

割り込みレイテンシのために追加の原因が考えられます。これらは、使用するシステムのタイプによって異なりますが、我々はそれらのいくつかをリストします。

  • キャッシュ·ラインに起因するレイテンシは記入してください:メモリシステムでは1つまたは複数のキャッシュを持っている場合、これらは必要なデータを含めることはできません。この場合には、必要なデータだけでなく、メモリからロードされていますが、多くの場合に完全なラインの塗りはメモリから複数の単語を読んで、実行する必要があります。
  • キャッシュに起因するレイテンシは、ライトバック:キャッシュミスは、置換する行を引き起こす可能性があります。このラインはダーティとしてマークされている場合は、追加の遅延を引き起こし、メインメモリに書き戻される必要があります。
  • MMU変換テーブルウォークによって引き起こされる待ち時間:変換テーブルウォークは、彼らが潜在的に低速なメインメモリへのアクセスを含む、特に、かなりの時間を取ることができます。リアルタイム割り込みハンドラ、変換テーブルにハンドラ、および/またはそれが大幅に割り込みレイテンシを増やすことができます。アクセスするデータの翻訳を含んでいないTLBによって引き起こし歩く。
  • アプリケーション·プログラムは:もちろん、アプリケーション·プログラムを追加する可能性があります。割り込みを無効にすることによってレイテンシ。これは、いくつかの状況で意味をなすが、もちろん追加させることができます。待ち時間。
  • ルーチンを中断する:ほとんどのシステムでは、1つの割り込みを無効にし、さらに割り込み。割り込みは、ISRに再有効化されている場合でも、これは追加の原因は、いくつかの手順をとります。

RTOS(リアルタイムオペレーティングシステム):RTOSはまた、一時的にRTOSのAPI-関数を呼び出すことができ、割り込みを無効にする必要があります。いくつかのなRTOSが効果的にすべての割り込みの割り込みレイテンシの悪化、すべての割り込みを無効にするには、いくつかの(embOSのような)のみ優先順位の低い割り込みを無効にし、それによって優先順位の高い割り込みのレイテンシに影響を与えません。

ゼロ割り込みレイテンシ

厳密な意味でゼロ割り込みレイテンシは、上述のようにすることはできません。embOSを使用したシステムはなく、実行中のシステムとして優先順位の高い割り込みの同じワーストケースの割り込みレイテンシを持ちます、我々は "ゼロ割り込みレイテンシは、"優先度の高い割り込みレイテンシはRTOSに影響されないことであると言うとき。

高/低優先度の割り込み

異なる優先度を持つほとんどのCPUをサポートする割り込み。異なる優先順位は、2つの効果があります。

  • 別の割り込みが同時に発生した場合、優先順位の高い割り込みが優先され、それが最初のISRが実行されている。
  • 割り込みは、優先順位が同じまたはより低いレベルの他の割り込みによって中断することはできません

CPUと割り込みコントローラに依存する方法多くの割り込みのさまざまなレベルがあります。詳細は、CPU / MCU / SOCマニュアルやembOSポート固有のドキュメントで説明されています。高/低優先度の割り込み。embOSは、割り込み2つの異なるレベルを区別する embOSポート固有のドキュメントは、 "線が描かれている"ここで説明して、割り込みが高いと割り込みが優先順位が低いとみなされると見なされている。 一般的に、違いは以下のとおりです。

優先順位の低い割り込み

  • embOS API関数を呼び出すことができます
  • embOSに起因するレイテンシ

優先度の高い割り込み

  • embOS API関数を呼び出すことはできません
  • embOSによって引き起こさないレイテンシなし(ゼロレイテンシー)

別の割り込み優先レベルの例

M16C CPUをサポート8割り込み優先レベル。embOSと、3つの最高の優先度レベルが "高優先度の割り込み"であるとして扱われます。ARM CPUは、通常の割り込み(IRQ)と高速割り込み(FIQ)をサポートしています。embOS使用して、FIQは、 "優先順位の高い割り込み"であるとして扱われます。