2024 年 01 月 10 日 Linux 技術ネタ
技術にはクローズドなものとオープンなものがあります。OSS という用語に代表されるように、オープンというとソフトウェアを連想する方が多いのではないでしょうか。しかし 1970 年代にはソフトウェアもコード非公開のクローズドなものでした。今のオープンソースの流れは 1980 年代に利用者が立ち上げた流れを汲むものです。
一方、ハードウェア、特に CPU は、高度な専門性が必要なため、長年 Arm, Intel に代表される企業がシェアを持つブラックボックス、クローズドな技術でした。RISC-V は、CPU の回路情報をオープンにし、誰でも開発できるようにしようという現状に一石を投じる活動です。歴史を振り返ってみると、商用 Unix の時代に一石を投じた Linux に似ています。オープン OS としてソフトウェアの分野で普及し、地位を確立した Linux のように、将来 RISC-V もハードウェアの分野で普及し、ソフトもハードもオープンな時代が来ることを期待します。
本ブログは 2 部構成となっており、後編では RISC-Ⅴ のセキュリティに関わる機能と市場について紹介します。
前編はこちら「RISC-V について学ぶ-前編」。
RISC-V は、標準で以下 3 つの特権モードを用意し、OS やユーザーアプリがアクセスできるレジスタに制限を設けています(レジスタ分離)。U が最も権限が弱く、M が最も権限が強いモードです。類似機能に ARM の Exception Level があります。
RISC-V Supervisor Binary Interface Specification
ユーザーアプリなどの弱い権限しか持たないソフトウェアが自身の特権モードでは許可されていない操作を実行したい場合は、割り込みの発行などを通してより強い特権モードで動いているソフトウェア(OS など)に操作を依頼する必要があります。このようにそれぞれの特権モードでアクセスできるハードウェア資源に制限を設けることで、権限の弱いソフトウェア(例えば、ユーザーアプリなど)がクラッシュした場合でもプロセッサ全体が悪影響を受けないようにしています。
仮想化技術を安全かつ高速に実行するために、ハイパーバイザのホスト側/ゲスト側に応じて特権レベルを分離する Hypervisor extension("H")があります。
この拡張ではまず従来の U/S/M の3種のモードに代わり、S-mode をハイパーバイザ向けに拡張した HS-mode(Hypervisor-extended supervisor mode) に置き換えた U/HS/M の 3 種の特権モードが利用可能となります。
さらに仮想化されたゲスト環境で動作するアプリケーションや OS 向けに、VU/VS という新たな特権モードが用意されます。これら 2 つの特権モードは HS-mode によって管理されます。
RISC-V Supervisor Binary Interface Specification
従来通り U/HS/M のモードで各種アプリや OS などを動作させながら、HS-mode 上の OS で仮想化環境をホストして VU/VS モードで動かすことが可能です。
なお、SiFive 社が 2021 年〜 2022 年にかけて発表したプロセッサコアの P650 及び P670 では、Hypervisor extension に対応しているそうです。
SiFive Performance P650/P670
TEE とは、ハードウェア支援により提供される OS から隔離された実行環境です。Arm TrustZone, Intel SGX が有名です。RISC-V は、オープンアーキテクチャのため、様々な実装が存在します。ここでは、カリフォルニア大学バークレー校で開発されている Keystone を紹介します。
Keystone は、RISC-V の PMP(Physical Memory Protection)というハードウェア機能を活用し、U-mode と S-mode をSecure World と Normal World にメモリ分離します。
PMP は、以下の特長を持つ、ソフトウェアに対するメモリ保護機構です(レジスタ群)。
以下は、Keystone における PMP の割り当て例です(2 つの TEE(Enclave 1 と Enclave 2)が存在する構成例)。
Keystone Secure Monitor に pmp0 、OS に pmpN を割り当てた上で、pmp1 から順番に TEE を割り当てます。U-mode および S-mode からメモリアクセスする際、pmp0 から pmpN の走査によりアクセス可否を決定し、メモリ分離を実現します。
現在販売されている評価ボードのうち、Linux が動作可能なものを 7 つピックアップして紹介します。
提供元 | 評価ボード名 | CPU・GPUスペック | OS サポート | URL |
---|---|---|---|---|
Allwinner | Nezha | Allwinner D1 SoC
|
|
Allwinner Nezha |
Microchip | Polarfire SoC FPGA Icicle Kit |
PolarFire SoC FPGA
|
|
PolarFire SoC FPGA Icicle Kit |
SiFive | HiFive Unmatched |
SiFive FU740-C000 SoC
|
|
SiFive HiFive Unmatched クイックスタートガイドv1p4 |
Sispeed | Lichee PI 4At |
Alibaba T-Head TH1520 SoC
|
|
Sipeed Lichee Series Best RISC-V Linux Practical Platform |
StarFive | VisionFive 2 |
StarFive JH7110 64bit SoC
|
|
SiFive HiFive Unmatched クイックスタートガイドv1p4 |
BeagleBoard | BeagleV®-Ahead |
Alibaba T-Head TH1520 SoC
(Lichee PI 4A と同じ) |
|
BeagleV®-Ahead |
Renesas | RZ/Five Module Board |
RZ/Five SoC
|
|
RZ/Five-Evaluation-Board-Kit |
現在、以下の代表的な OSS プロジェクトで RISC-V への対応が進んでいます。
項目 | RISC-V に対応している OSS |
---|---|
ツールチェーン | Binutils, GCC, GDB, Glibc, LLVM, Newlib |
OS | Linux, Android, FreeBSD, OpenBSD, NetBSD |
Linux ディストリビューション | Debian, Ubuntu, Fedora, Arch Linux, Slackware, Chromium OS, OpenSUSE, Gentoo |
組込み Linux | Yocto Project, Open Embedded, openWRT |
仮想環境 | Qemu, Spike |
本ブログエントリでは、RISC-V の概要、特長とメリット・デメリット、セキュリティに関わる機能、市場について紹介しました。
RISC-V の知名度は、一般の人からすると市場実績がある Arm や Intel 社に比べてまだまだであると想像しますが、多くの技術者が関わることにより日々成長しています。ひと昔前の Linux を思い出してみると、パソコンにインストールするだけでも一苦労でした。多くの人が MBR の破壊により Windows 共々起動しなくなる経験をしたのではと思います。それが今では少ない手順で誰でも手軽に仮想マシンへインストールできるようになりました。RISC-V も現在、これと同じ道を辿っているのだと思います。いつの日か私たちにとって、より身近な存在になると期待します。
2024 年 09 月 02 日 Vigiles サポート
2024 年 03 月 01 日 Vigiles サポート
2023 年 08 月 28 日 Vigiles サポート
2024 年 03 月 26 日 Yocto Project よもやま話
2023 年 07 月 25 日 Yocto Project よもやま話
2023 年 06 月 20 日 Yocto Project よもやま話
2024 年 01 月 10 日 Linux 技術ネタ
2023 年 12 月 12 日 Linux 技術ネタ
2023 年 03 月 31 日 Linux 技術ネタ
2024 年 07 月 26 日 イベントレポート
2024 年 07 月 09 日 イベントレポート
2024 年 06 月 03 日 イベントレポート
2023 年 05 月 30 日 リクルート
2022 年 12 月 27 日 リクルート
2022 年 09 月 27 日 リクルート
2024 年 09 月 25 日 信州リネオ便り
2024 年 08 月 20 日 信州リネオ便り
2024 年 08 月 07 日 信州リネオ便り
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 10 日 ソリューション統括部
2019 年 12 月 13 日 マーケティング統括部
2019 年 04 月 25 日 マーケティング統括部
2018 年 12 月 18 日 マーケティング統括部