リネオブログ

RISC-Vについて学ぶ-後編

2024 年 01 月 10 日   Linux 技術ネタ

目次

はじめに

技術にはクローズドなものとオープンなものがあります。OSS という用語に代表されるように、オープンというとソフトウェアを連想する方が多いのではないでしょうか。しかし 1970 年代にはソフトウェアもコード非公開のクローズドなものでした。今のオープンソースの流れは 1980 年代に利用者が立ち上げた流れを汲むものです。
一方、ハードウェア、特に CPU は、高度な専門性が必要なため、長年 Arm, Intel に代表される企業がシェアを持つブラックボックス、クローズドな技術でした。RISC-V は、CPU の回路情報をオープンにし、誰でも開発できるようにしようという現状に一石を投じる活動です。歴史を振り返ってみると、商用 Unix の時代に一石を投じた Linux に似ています。オープン OS としてソフトウェアの分野で普及し、地位を確立した Linux のように、将来 RISC-V もハードウェアの分野で普及し、ソフトもハードもオープンな時代が来ることを期待します。

本ブログは 2 部構成となっており、後編では RISC-Ⅴ のセキュリティに関わる機能と市場について紹介します。

前編はこちら「RISC-V について学ぶ-前編」。

3. RISC-V のセキュリティ機能

3.1 特権モード

RISC-V は、標準で以下 3 つの特権モードを用意し、OS やユーザーアプリがアクセスできるレジスタに制限を設けています(レジスタ分離)。U が最も権限が弱く、M が最も権限が強いモードです。類似機能に ARM の Exception Level があります。

  1. U-mode (User mode) : ユーザーアプリが動作する
  2. S-mode (Supervisor mode) : OS やブートローダなどが動作する
  3. M-mode (Machine mode) : OpenSBI というファームウェアを動かすことが一般的。プロセッサのコアに大きな影響を与える操作はこのモードでのみ実行する。

特権モード

RISC-V Supervisor Binary Interface Specification

ユーザーアプリなどの弱い権限しか持たないソフトウェアが自身の特権モードでは許可されていない操作を実行したい場合は、割り込みの発行などを通してより強い特権モードで動いているソフトウェア(OS など)に操作を依頼する必要があります。このようにそれぞれの特権モードでアクセスできるハードウェア資源に制限を設けることで、権限の弱いソフトウェア(例えば、ユーザーアプリなど)がクラッシュした場合でもプロセッサ全体が悪影響を受けないようにしています。

3.2 ハイパーバイザ

仮想化技術を安全かつ高速に実行するために、ハイパーバイザのホスト側/ゲスト側に応じて特権レベルを分離する Hypervisor extension("H")があります。
この拡張ではまず従来の U/S/M の3種のモードに代わり、S-mode をハイパーバイザ向けに拡張した HS-mode(Hypervisor-extended supervisor mode) に置き換えた U/HS/M の 3 種の特権モードが利用可能となります。

  1. U-mode (User mode) : ユーザーアプリが動作する(H 拡張なしと同一)
  2. HS-mode (Hypervisor-extended supervisor mode) : Hypervisor、またはホスト OS が動作する
  3. M-mode (Machine mode) : OpenSBI というファームウェアを動かすことが一般的(H 拡張なしと同一)

さらに仮想化されたゲスト環境で動作するアプリケーションや OS 向けに、VU/VS という新たな特権モードが用意されます。これら 2 つの特権モードは HS-mode によって管理されます。

  1. VU-mode (Virtual user mode) : 仮想化環境での U-mode に相当するモード
  2. VS-mode (Virtual supervisor mode) : 仮想化環境での S-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

3.3 TEE(Trusted Execution Environment)

TEE とは、ハードウェア支援により提供される OS から隔離された実行環境です。Arm TrustZone, Intel SGX が有名です。RISC-V は、オープンアーキテクチャのため、様々な実装が存在します。ここでは、カリフォルニア大学バークレー校で開発されている Keystone を紹介します。

Keystone

Keystone は、RISC-V の PMP(Physical Memory Protection)というハードウェア機能を活用し、U-mode と S-mode をSecure World と Normal World にメモリ分離します。

PMP は、以下の特長を持つ、ソフトウェアに対するメモリ保護機構です(レジスタ群)。

  • U-mode および S-mode から指定メモリ領域にアクセスする際の権限を制御する。
  • レジスタ数は RV32 の場合 32 個、RV64 の場合 64 個。
  • pmp0 が最も優先度が高く、pmpN が最も優先度が低い。

以下は、Keystone における PMP の割り当て例です(2 つの TEE(Enclave 1 と Enclave 2)が存在する構成例)。

Keystone Secure Monitor に pmp0 、OS に pmpN を割り当てた上で、pmp1 から順番に TEE を割り当てます。U-mode および S-mode からメモリアクセスする際、pmp0 から pmpN の走査によりアクセス可否を決定し、メモリ分離を実現します。

Executing an Enclave

Keystone Enclave

4. RISC-V 市場

4.1 評価ボード

現在販売されている評価ボードのうち、Linux が動作可能なものを 7 つピックアップして紹介します。

提供元 評価ボード名 CPU・GPUスペック OS サポート URL
Allwinner Nezha Nezha Allwinner D1 SoC
  • Xuantie C906
    コア数:1
    周波数:1GHz
    ISA:RV64IMAFDCV
    (RV64GCV)
    特権モード:M,S,U
  • GPU なし
  • Debian
  • Fedora
  • Gentoo
  • OpenSUSE
  • Ubuntu
  • Yocto
Allwinner Nezha
Microchip Polarfire SoC
FPGA Icicle Kit
Polarfire SoC
PolarFire SoC FPGA
  • SiFive U54
    コア数:4
    周波数:1.0GHz
    ISA:RV64IMAFDC(RV64GC)
    特権モード:M,S,U
  • SiFive E51
    コア数:1
    ISA:RV64IMAC
    特権モード:M,U
  • GPU なし
  • Debian
  • OpenBSD
  • Ubuntu
PolarFire SoC FPGA Icicle Kit
SiFive HiFive Unmatched
HiFive Unmatched
SiFive FU740-C000 SoC
  • SiFive U74
    コア数:4
    周波数:1.2GHz
    ISA:RV64IMAFDC(RV64GC)
    特権モード:M,S,U
  • SiFive S7
    コア数:1
    ISA:RV64IMAC
    特権モード:M,U
  • GPU なし
  • Debian
  • FreeBSD
  • Gentoo
  • OpenBSD
  • OpenSUSE
  • OpenWRT
  • Ubuntu
SiFive HiFive Unmatched
クイックスタートガイドv1p4
Sispeed Lichee PI 4At
Lichee PI 4At
Alibaba T-Head TH1520 SoC
  • Xuantie C910
    コア数:4
    周波数:2GHz
    ISA:RV64IMAFDC(RV64GC)
    特権モード:M,S,U
  • SiFive E51
    コア数:1
    ISA:RV64IMAC
    特権モード:M,U
  • GPU
    Imagination BXM-4-64
  • Android
  • Debian
  • Fedora
  • OpenWRT
Sipeed Lichee Series
Best RISC-V Linux Practical Platform
StarFive VisionFive 2
VisionFive 2
StarFive JH7110 64bit SoC
  • SiFive U74
    コア数:4
    周波数:1.5GHz
    ISA:RV64IMAFDC(RV64GC)
    特権モード:M,S,U
  • SiFive S7
    コア数:1
    ISA:RV64IMAC
    特権モード:M,U
  • GPU
    Imagination BXM-4-32
  • Gentoo
  • OpenSUSE
  • Ubuntu
  • Yocto
SiFive HiFive Unmatched
クイックスタートガイドv1p4
BeagleBoard BeagleV®-Ahead
BeagleV®-Ahead
Alibaba T-Head TH1520 SoC
(Lichee PI 4A と同じ)
  • Debian
  • FreeBSD
  • Gentoo
  • OpenSUSE
  • Yocto
BeagleV®-Ahead
Renesas RZ/Five Module Board
RZ/Five Module Board
RZ/Five SoC
  • Andes AX45MP Single
    コア数:1
    周波数:1GHz
    ISA:RV64IMAFDCP(RV64GCP)
    特権モード:M,S,U
  • GPU なし
  • Yocto
RZ/Five-Evaluation-Board-Kit
※ 画像は URL より抜粋

4.2 OSS コミュニティの支援

現在、以下の代表的な 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

5. まとめ

本ブログエントリでは、RISC-V の概要、特長とメリット・デメリット、セキュリティに関わる機能、市場について紹介しました。

  • RISC-V は 2010 年に開発が開始された新しい命令セットアーキテクチャ (ISA)
  • ISA に対して、ライセンス料もロイヤリティも支払う必要がないが、導入時の技術的ハードルが高い。
  • 国際政治において中立の立場をとっており、どの国や企業に対しても利用する機会が平等に与えられている。
  • モジュラー方式の ISA を採用しているため、中核となる基本命令セットは不変で、目的に応じて拡張機能命令セットを取捨選択可能。また、独自の拡張機能命令セットを設計・実装することが可能。
  • U/S/M の 3 つの特権モードを用意し、OS やユーザーアプリがアクセスできるレジスタを制限する。
  • 仮想ゲスト環境で動作するアプリケーションや OS 向けの VU/VS 特権モードを追加することにより、ハイパーバイザに対応可能。
  • 物理メモリ保護機能(PMP)によるメモリ分離にて TEE に対応可能。
  • RISC-V の CPU コアを採用している SoC が様々な企業から発売されており、評価ボードも充実しつつある。また、OSS コミュニティの支援も進んでいる。

RISC-V の知名度は、一般の人からすると市場実績がある Arm や Intel 社に比べてまだまだであると想像しますが、多くの技術者が関わることにより日々成長しています。ひと昔前の Linux を思い出してみると、パソコンにインストールするだけでも一苦労でした。多くの人が MBR の破壊により Windows 共々起動しなくなる経験をしたのではと思います。それが今では少ない手順で誰でも手軽に仮想マシンへインストールできるようになりました。RISC-V も現在、これと同じ道を辿っているのだと思います。いつの日か私たちにとって、より身近な存在になると期待します。

参考文献

組込みLinuxセキュリティ基礎講座
Vigiles サポート
Yocto Project よもやま話
Yocto よもやま話 第 14 回 「Yocto 4.3 Nanbield リリース」
Yocto よもやま話 第 14 回 「Yocto 4.3 Nanbield リリース」

2024 年 03 月 26 日 Yocto Project よもやま話

Yocto よもやま話 第 13 回 「Yocto Project の最新動向 2023 夏」
Yocto よもやま話 第 13 回 「Yocto Project の最新動向 2023 夏」

2023 年 07 月 25 日 Yocto Project よもやま話

Yocto よもやま話 第 12 回 「Yocto Project 始めます その 2」
Yocto よもやま話 第 12 回 「Yocto Project 始めます その 2」

2023 年 06 月 20 日 Yocto Project よもやま話

Linux 技術ネタ
RISC-Vについて学ぶ-後編
RISC-Vについて学ぶ-後編

2024 年 01 月 10 日 Linux 技術ネタ

RISC-Vについて学ぶ-前編
RISC-Vについて学ぶ-前編

2023 年 12 月 12 日 Linux 技術ネタ

イベントレポート
EdgeTech+ West 2024 出展レポート
EdgeTech+ West 2024 出展レポート

2024 年 07 月 26 日 イベントレポート

Advanced Technology Forum 2024 Summer 参加レポート
Advanced Technology Forum 2024 Summer 参加レポート

2024 年 07 月 09 日 イベントレポート

リクルート
新卒採用、絶賛募集中!
新卒採用、絶賛募集中!

2023 年 05 月 30 日 リクルート

国立大学オンライン研修レポート 2022
国立大学オンライン研修レポート 2022

2022 年 09 月 27 日 リクルート

信州リネオ便り
リネオに雪が積もりました
リネオに雪が積もりました

2024 年 11 月 29 日 信州リネオ便り

社内BBQを開催しました!
社内BBQを開催しました!

2024 年 09 月 25 日 信州リネオ便り

夏季休業明け、スイカを頂きました!
夏季休業明け、スイカを頂きました!

2024 年 08 月 20 日 信州リネオ便り

ソリューション統括部
シリコンバレー探検記 2019 ~番外編~
シリコンバレー探検記 2019 ~番外編~

2019 年 12 月 10 日 ソリューション統括部

シリコンバレー探検記 2019 ~後編~
シリコンバレー探検記 2019 ~後編~

2019 年 12 月 10 日 ソリューション統括部

シリコンバレー探検記 2019 ~前編~
シリコンバレー探検記 2019 ~前編~

2019 年 12 月 10 日 ソリューション統括部

マーケティング統括部
大成功決起大会!!(ET2019)
大成功決起大会!!(ET2019)

2019 年 12 月 13 日 マーケティング統括部

ESEC 2019 決起大会
ESEC 2019 決起大会

2019 年 04 月 25 日 マーケティング統括部

シリコンバレー探検記 その 2
シリコンバレー探検記 その 2

2018 年 12 月 18 日 マーケティング統括部