近日,有開發者在 RISC-V 基礎指令集架構與特權架構規範的基礎上開源了一份以F# 實現的 RISC-V ISA(指令集架構)規範,併發布在了 GitHub上,其主要內容包括“功能和當前狀態”、“代碼示例”以及實際“操作方式”等。
今年 7 月份,RISC-V 基金會在官網上發佈公告,宣佈批准 RISC-V 基礎指令集架構與特權架構規範。而本次開源的內容,則是以 RISC-V 基金會發布的 RISC-V ISA 規範爲基礎,利用 F#編寫而成。
RISC-V 基礎指令集架構與特權架構規範
RISC-V 基礎指令集架構與特權架構規範發佈於今年7月,這被認爲是RISC-V生態系統發展過程中的一個重要里程碑。
RISC-V 基礎指令集架構應用於軟件與硬件之間,是連接兩者的“橋樑”。而 RISC-V ISA 規範的發佈,則意味着,只要按照該規範編碼的軟件都將能夠在 RISC-V 處理器上持續使用,即使其處理器架構通過開發新擴展模塊也不受到影響。
基礎指令集架構獲得批准,開發者可以進一步放心,他們爲RISC-V編寫的軟件將可以一直運行在所有類似的 RISC-V 核心上。 ——RISC-V基金會董事會主席Krste Asanović
特權架構應用於軟件堆棧的不同組件之間,提供保護的同時,嘗試執行當前權限模式,不允許的操作將會引發異常。RISC-V特權架構涵蓋了非特權ISA之外的RISC-V系統的所有方面,包括特權指令、運行操作系統以及連接外部設備所需的附加功能。另外,每個特權級別都有一組核心特權ISA擴展,包括機器ISA、主管ISA和管理程序ISA等。
RISC-V特權架構是RISC-V硬件和軟件(如Linux和FreeBSD)之間的一種契約。對RISC-V來說,這些標準獲得通過是一個里程碑標誌。 ——RISC-V特權架構任務組主席Andrew Waterman
RISC-V ISA規範的 F# 實現
F#是由微軟發展的爲.NET語言提供運行環境的程序設計語言,是一種函數編程語言(FP,Functional Programming)。目前,F#已經接近成熟,支持高階函數、柯里化、惰性求值、Continuations、模式匹配、閉包、列表處理、元編程等。
此次開源的RISC-V ISA 規範編碼實現,使用“非常基礎”的 F# 編寫,目的是爲了讓不瞭解 F# 且不打算學習 F# 的開發者們也可以閱讀並使用該規範實現。
目前,該實現還在不斷的完善中,現在的功能與狀態如下:
- 支持以下功能
- 基本指令集:RV32I
- 正在開發中的功能
- 基本指令集:RV64I
- 標準擴展 M(整數乘/除)
- 標準擴展 A(原子內存操作)
- 標準擴展 C(精簡的16位指令)
- 標準擴展 F(單精度浮點數)
- 標準擴展 D(雙精度浮點)
- M級特權(Machine)
- U級特權(User)
- S級特權(Supervisor),虛擬內存方案SV32,SV39和SV48
- 應用程序可以作爲一個靈活的具有CLI(命令行界面)支持的 F#程序被執行,它會依次執行RISC-V ELF二進制文件。這是一種順序解釋:一次一個指令的順序存儲器模型。
- 正在開發中的 RISC-V測試:
- 基本指令流程
rv32ui-p-*, rv64ui-p-*
(基本指令集)rv32um-p-*, rv64um-p-*
(M 擴展)rv32ua-p-*, rv64ua-p-*
(A 擴展)rv32uc-p-*, rv64uc-p-*
(C 擴展)