iT邦幫忙

2022 iThome 鐵人賽

DAY 1
1
Software Development

RISC-V: 深入淺出從入門到放棄系列 第 1

DAY1: RISC-V: 大綱與特權模式

  • 分享至 

  • xImage
  •  

DAY1: RISC-V: 大綱與特權模式

0. 前言

第一次參與這個比賽,既期待又怕沒有足夠實力體力完成,看著前人所寫的文章洋洋灑灑,為後人鋪路,不論是技術性的文章,亦或是記錄下來留給自己的紀念,對於後人的幫助或多或少,也願自己的拙作能幫助到需要的朋友。這次比賽不僅能幫助增進自己的基本能力,也能養成每日閱讀的良好習慣,最後當然是能提高自己的知識水平啦。

在同事半推慫恿之下參與了此次比賽,當下除了錯愕之外也滿是驚喜,錯愕的是不確定是否真的有能力完成每日一篇文章的習慣,但驚喜的是,剛好藉由此次比賽也能分享在公司,所學習到的相關知識,算是對自己的一次評量。正所謂千里之行始於足下,雖然目前實力不如許多大神,但期許通過一次次的學習,在日後能與他們旗鼓相當。

希望自己的用字遣詞,能順利傳達給每位朋友,若有不正確或是不明白的地方歡迎一同討論。

1. 文章安排與架構

此次比賽主要是介紹 risc-v 相關議題,但並不會 risc-v 的總總細節都探討,預計會探討的部份,包含 risc-v CSR、特權模式、PLIC,再到較新穎的 AIA(Advanced Interrupt Architecture) 架構,最後則會介紹 perf,過去 perf 在 risc-v 上會遇到哪些限制,以及該如何處理,都會在這個系列當中與大家分享。
下圖是大概的行程規劃:

2. 適合對象

  • 對 risc-v 有興趣者
  • 對硬體有些許了解者
  • 對作業系統有些許了解者

3. RISC-V 特權架構介紹

以為筆者會從什麼是 risc-v 歷史開始介紹嗎?不!可不會呢~不過附上 wiki 連結也是 Okder ,看完肉肉的 wiki 不知是否對 risc-v 有概念了呢?下面讓筆者介紹 risc-v 的特權架構吧!

本系列聚焦在機器模式( Machine mode )與監管者模式(Supervisor mode),以下簡稱 M-mode, S-mode。
RISC-V 一大特色是利用不同特權等級來保護系統的安全,M-mode 是唯一硬體必須實作也是最高權限的特權模式,能夠存取所有硬體資源,S-mode 是作業系統層級的軟體,或是教科書上所說的核心模式(kernel mode), 這一層可以啟用虛擬記憶體,再上一層就是使用者模式(user mode). 示意圖可參考下圖,越往下表示權限越高。

硬體實作可以根據需求,選擇不同的特權等級的組合:

  1. 機器模式(M):簡單嵌入式系統,或稱 bare-metal
  2. 機器模式(M)+使用者模式(U):即時作業系統(RTOS)
    • 如 FreeRTOS, Zephyr
  3. 機器模式(M)+監管者模式(S)+使用者模式(U):通用型作業系統
    • 如 Linux

以 Linux 來舉例,Linux 核心本身即運作在監管者模式的軟體,而所有從呼叫第一隻使用者空間(userspace)程式 /sbin/init (常見的為 busybox 用於嵌入式系統與 Ubuntu 等 Linux 發行版使用的 systemd) 開始到我們的 shell, daemon 與各種套件將執行在使用者模式,透過 exception 與 interrupt 在各層之間移交權限,例如透過 ecall 產生環境呼叫異常(environment call exception)將權限升級並處理之後用 mretsret 來退回低權限的環境。這種軟體主動觸發異常的方式, RISC-V 的分別有 SBI(Supervisor binary interface)與 ABI(Application binary interface)兩個界面來統一各層的呼叫方式,前者也有規格書定義, 這個系列關注的軟體實作是 OpenSBI,後者則是 GNU C Library (glibc)來包裝系統呼叫。

RISC-V 大部分功能都能透過使用 csr* 系列控制狀態暫存器 (CSR) 讀寫指令來操作硬體。

未來會介紹如何使用 csr* 相關指令以及 sbi_ecall 的使用方式

後記

今天介紹了 risc-v 的特權架構,簡單歸納重點,risc-v 分為三種特權模式 M、S、U mode,想從 S mode 到 M mode 需要特定方式,也就是 sbi_ecall 的方式。

明天介紹 risc-v 的 CSR,由於 CSR 的數量不少,因此筆者並不會一個個介紹,而是挑出筆者認為相對常使用的。那我們明天見吧!開心 (ノ>ω<)ノ 第一天就這樣過去了。

參考資料

《The RISC-V Instruction Set Manual Volume II: Privileged Architecture》


下一篇
DAY2: RISC-V: 不懂 CSR 那就放棄吧(一)
系列文
RISC-V: 深入淺出從入門到放棄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
高魁良
iT邦新手 2 級 ‧ 2022-09-11 17:34:07

Go go go, 千里之行始於足下!

我要留言

立即登入留言