RISC-V 割り込みと例外処理
割り込みとは
一般的には周辺装置側からCPUにI/O処理の完了などを通知する仕組み
周辺装置(GPIO, タイマ, シリアル, LAN など)
割り込み番号
- 割込みを一意に識別する識別子(1以上の整数値)
割込み優先度
- 割込みの優先順位を決定するための数値(数値が大きい順に処理)
特権レベルスタック
- 割り込み時,1つ前の特権状態をステータスレジスタに保持(復帰命令で特権状態をもとに戻す )
割り込み流れ
- 周辺装置 -> 割り込みコントローラ(PLIC) -> CPU -> OS -> デバイスドライバ
PLIC(プラットフォームレベル割り込みコントローラ)
さまざまなデバイス割り込みをHartコンテキストの外部割り込みラインに多重化し,割り込み優先度をハードウェアでサポート.
割り込みはまずPLICが吸収.その後,CPUコアの各実行モードに割り振られる.
RISC-Vの処理(割り込み / 例外 発生後)
- PCを<trap_vector>アドレスにジャンプ.
<trap_vector>アドレス
<trap_vector>アドレスの追加
実行モード
- 割り込みや例外は,基本的にマシンモードで処理
Trap Delegation Register(トラップ代理レジスタ)
各実行モードはTDRを持つ.
割り込みや例外の種類に応じて実行モードを変更して処理できる.したがって,別の実行モードで動いているタスクに直接割り込みを通達できる.便利.
それでは.いろはにへとへと.