Nios II Gen2 プロセッサー・リファレンス・ガイド

ID 683836
日付 10/28/2016
Public
ドキュメント目次

3.7.11.2. 外部割り込みコントローラーによるネスト式例外

EIC では、ネスト型割り込みの処理は、内部割り込みコントローラーよりも洗練されています。ただし、割り込みではない例外の処理は同様です。

個々の外部割り込みに専用のシャドー・レジスター・セットがある場合、Nios II プロセッサーはレジスター・コンテンツを保存するためにオーバーヘッドなしで高速割り込み処理をサポートします。高速割り込み処理を最大限に活用するには、システム・ソフトウェアが特定の条件を設定する必要があります。次の条件を満たすと、ISR は開始と終了時のレジスター内容の保存および復元の必要はありません。

  • 自動ネスト型割り込みが有効になる場合
  • 各割り込みが専用のシャドー・レジスター・セットに割り当てられている場合
  • 同じ RIL を持つすべての割り込みが専用のシャドー・レジスター・セット二割荒れられている場合
  • 異なる RIL を持つ複数の割り込みが 1 つのシャドー・レジスター・セットに割り当てられる場合。ただし、複数のレジスターセットがある場合、あるシャドー・レジスター・セットに割り当てられた RIL を別のレジスターセットに割り当てられた RIL とオーバーラップさせないようにする必要がある。

    次の表は、レジスターセット内のプリエンプションが有効状態の際のレジスターセットの割り当ての妥当性を示しています。

表 47.  不正な RIL 割り当ての例
RIL レジスターセット 1 レジスターセット 2
1 IRQ0  
2 IRQ1  
3   IRQ2
4 IRQ3  
5   IRQ4
6   IRQ5
7   IRQ6
表 48.  正当な RIL 割り当ての例
RIL レジスターセット 1 レジスターセット 2
1 IRQ0  
2 IRQ1  
3 IRQ3  
4   IRQ2
5   IRQ4
6   IRQ5
7   IRQ6
注: 割り込み以外の例外ハンドラーは通常のレジスターセットで実行されるため、常にレジスター内容を保存して復元する必要があります。

複数の割り込みは、レジスターセットを共有できますが、パフォーマンスはいくらか低下します。レジスターセットの共有は、次の 2 つの方法があります。

  • status.RSIEを 0 に設定します。ISR が特定のレジスターセットで実行中の場合、プロセッサーは同じレジスターセットに割り当てられたマスク可能割り込みを受け取りません。このような割り込みは、それらの割り込みレベルに関係なく、実行中の ISR が完了するまで待機する必要があります。
注: この方法は優先順位を逆にする可能性があります。
  • それぞれの ISR がエントリーおよび終了時にレジスターを保存および復元し、レジスターが保存された後にstatus.RSIEを 1 に設定するようにします。特定のレジスターセットで ISR が実行されている場合、プロセッサーはより高い割り込みレベルを有する場合、同じレジスターセット内の割り込みを取ります。

Nios II プロセッサーはマスク可能割り込みを受け取る際に割り込みを無効にします ( マスク不能割り込みは常にマスク可能割り込みを無効にします )。個別の ISR は、この章の「内部割り込みコントローラーのネスト式例外」の説明に従って、status.PIEを 1 に設定することで、ネスト化割り込みを再び有効にできます。