iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0
tags: 鐵人賽

0. 前言

今日我們繼續介紹 IMSIC 今天會是 IMSIC 系列的最後一天~加油!!

1. Top external interrupt CSRs (mtopei, stopei, vstopei)

mtopei 直接與 machine level 的 interrupt file 互動,如果實現 supervisor mode, stopei 也能直接與 supervisor level 的 interrupt file 互動,同樣的如果實現了 hypervisor extension, vstopei 與選定的 guset interrupt file 互動。

*topei CSR 的值表示在 interrupt file 當下最高的優先權的 interrupt (越低的 interrupt ID 表示越高的優先權)。

如果 interrupt 在 interrupt file 的 eip array 中沒有 pending 的 interrupt,或是在 eie array 中 沒有 enable 的 interrupt ,或是 interrupt 的優先度小於 eithreshold,則讀取 *topei CSR 返回 0,否則,讀取 *topei 會返回以下:

*topei 的 interrupt ID 是 hart external interrupt 的次要 ID

寫入 *topei 將清除 interrupt file 中相對應的 interrutp 的 pending bit

2. Interrupt delivery and handling

IMSIC 的 interrupt file 向 hart 提供 external interrupt signal,每個 interrupt file 提供一個 interrupt signal。來自 machine level interrupt file 的 interrupt signal 表示, mip 舉起 bit MEIP;來自 supervisor level interrupt file 的 interrupt signal 在 mip 以及 sip 舉起 bit SEIP;同樣的,來自 guest interrupt file 的 interrupt signal 在 hgeip pending bit 被舉起。

當 interrupt file 的 eidelivery 為 0 時,interrupt delivery 是關閉的,interrupt signal 將無效。而當 interrupt file 的 eidelivery 為 1 時,interrupt pending 以及 enable bit 被舉起時,且優先度大於 eithreshold ,interrupt signal 才有效。

通過 IMSIC 的 external interrupt trap handler流程大致如下:

  1. 儲存 processor 暫存器
  2. i = 讀取 mtopei 或是 stopei ,同時 claim interrupt
  3. i = i >> 16
  4. 呼叫 interrupt handler 去處理 external interrupt i
  5. 恢復 processor 暫存器
  6. 從 trap 中返回

原文圖片附在下方

後記

今日介紹有哪些 CSR 可以直接影響 interrupt file,並且介紹 interrupt 的處理,我的理解也就是一個 exteranl interrupt 的過程,是必要經過以下行為,首先 pending 以及 enable bit 要被舉起且優先度要大於 theshold,接著送給 hart 若 hart 接受,則會 claim 該 interrupt 並且把 pending bit 放下,接著去處理 ISR (interrutp service routine 也可以說是 interrupt handler),處理完之後再通知 hart 發 complete 以表示順利執行完成,接著恢復 prcoessor 暫存器,最後從 trap 離開。

明日我們將進入 APLIC 的系列,與 PLIC 有何不同呢?又與 IMSIC 有何不同呢?就明天見吧,掰撲!!


上一篇
DAY11: RISC-V: IMSIC(三)
下一篇
DAY13: RISC-V: APLIC(一)
系列文
RISC-V: 深入淺出從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言