特集

RISC-V
E Tラボ

横田 英史

SHコンサルティング

河崎 俊平

日本アイ・ビー・エム シニア・リサーチャー 宗 藤 誠 治

FPGA開発日記
産業技術総合研究所

須崎 有康

1

ハードだってオープンソース、
パラダイムシフトを牽引する新世代プロセッサー「RISC-V」
E Tラボ

横田 英史

x86とArmが席巻していたマイクロプロ

マイクロプロセッサーが今、変革期を迎分野で80％を超えるシェアを占め、他のセッサーの世界が変わるかもしれない。命えている。大きく変わろうとしているのは、マ

ISAにつけ入るスキを与えなかった。
この構

令セットアーキテクチャー（ISA）
をオープ

イクロプロセッサーの「命令セットアーキテ

図が、ISAのパラダイムを根底から変える

ンソースにしたRISC-Vが、ハードウェア

クチャ ー（ I S A：I n s t r u c t i o n S e t

RISC-Vの登場によって大きく変化しようとのLinuxとして着実に地歩を築き始めた

Architecture）」である。性能や消費電力、 している。

からだ。RISC-VのISAは、無償で公開さコストに大きな影響をもたらし、
マイクロプ

れ 、ライセンス料とL S Iごとのロイヤリ

ロセッサーの性格を特徴づけるISAに、 解説する。第1部ではRISC-Vを巡る状況

ティーを支払うことなく、誰でも自由に改「RISC-V（リスクファイブと発音）」と呼ぶ新を概観し、第2部で命令セットの仕様や動良・再配布が可能である。RISC-V準拠

たな風が吹き始めたのだ。

作モードなどの技術的な特徴を明らかに

本特集は5部構成で、RISC-Vについて

CPUコアや他のIP、開発環境とともに、マイクロプロセッサーのISAは、米Intelする。
第3部以降は実践編である。
第3部でオ ープ ンソースを 集 め た W e b サ イト社のx86アーキテクチャー、英Arm社のはCPUコアや評価ボード選択のポイント、

GitHubで公開されている。アプリケー

Armアーキテクチャーが市場を席巻し、こ第4部ではオープンソースの開発環境をの10年以上にわたって「凪」の状態が続い活用したFPGAへの実装法、第5部ではセていた。前者はパソコンやサーバー、後者

キュアな実行環境TEE（Trusted Execu

はスマホをはじめとするモバイル機器やコ

tion Environment）
について開発者自らンピューター周辺装置、制御機器といったが論じる。

ションに最適な構造をもつユーザー所望のマイクロプロセッサーが、手軽に手に入る世界がすぐそこまで来ている。

RISC-V

Bulletin JASA 2019 Apr. vol.69

1Google、
IBM、
NVIDIA、
Samsung、WDなどが標準化団体に参加
RISC-Vが脚光を浴び始めたキッカケは、
RISC-Vの標準化や啓蒙活動を手がける
RISC-V Foundation（RISC-V基金）の設立である。
支援環境がこれで整った。
設立時には、米Google社や米IBM社、米NIVDIA社、米Western Digital（WD）社といった大手企業が名を連ね、一躍注目をさ

図2 日本で開催されたワークショップRISC-V Dayの会場風景れるようになった。その後も米 H e w l e t t

左は2017年12月に東京大学伊藤謝恩ホール、右は2018年10月に慶應義塾大学藤原洋記念ホールで開かれたRISC-V Dayの様子。企業、大学などから前者は350人、後者は250人が出席した。

Packard Enterprise社、米Seagate社、米Tesla社、韓国Samsung Electronics社、台Deep Learning Accelerator：NVDLA）
お採用」というニュースが飛び込んだこともあっ

湾TSMC、
中国Alibaba Groupなどそうそう

よび推論エンジンとRISC-Vとを組合わせたて、会場の東京大学伊藤謝恩ホールは満員たる企業が加わった。
2018年12月末時点でプラットフォームを公表した。

で立ち見が出るほどだった。

RISC-V Foundationに参加する企業・団

実際、RISC-Vへの関心はこのところ急速

体・教育機関は200ほどに達している（図1）。

に高まっている。RISC-V Foundationがオープンソースでハードウエアの特にインパクトが大きいのがWestern

2015年から半年に1回の頻度で開いている

Linuxを目指す

D i g i t a l 社とN V I D I A 社 の 動きである。 RISC-Vワークショップは多くの参加者を集パラダイムシフトをもたらすRISC-Vの特徴

Western Digital社は、2019年あるいはめている。
2018年12月に米国カリフォルニア

は大きく2つある。
1つはオープンソースという2020年以降に発売するHDDとSSDのコント

州サンタクララでRISC-V Summitと題して開点。
もう1つはDomain Speciﬁc Architec-

ローラーのCPUコアをRISC-Vに全面移行

催し、
約1000人の参加者を集めた。
ほぼ1年

ture（ドメイン固有アーキテクチャー）と呼ぶすることを2017年11月に明らかにした。1年前の第7回ワークショップの参加者が500人

設計思想を取り入れている点だ。

間の出荷台数はCPUコアにして10億個に達ほどだったので倍増したことになる。

RISC-Vは、米カリフォリニア大学バークする。人工知能向けGPUの最大手である

日本の動きも急だ。
日本版RISC-Vワーク

レー校（UCB）
が研究目的で開発したISAでNVIDIA社も積極的だ。GPUを制御するコ

ショップ「RISC-V Day」は2017年12月とある。
校内で使うことを想定していたが、部外ントローラー・ユニットとしてRISC-Vを採用

2018年10月の2回開かれ、それぞれ350人者が利用するようになったことから仕様をすると発表したほか、2018年12月には同社と250人の参加者を集めた（図2）。特に第1

オープンソースとして公開し、商業製品にもの深層学習アクセラレーター（NVIDIA

回は、「Western Digital社がRISC-Vを全面利用しやすいBSDライセンス条件のもとで誰でも自由に使えるISAとした。
つまり無償で公開され、使用料（ライセンス料）とLSIごとのロイヤリティーを支払うことなく、誰でも自由に改良・再配布が可能である。
マイクロプロセッサーを独自に開発する場合に気になる特許侵害の懸念も払拭できる。
こうすることでRISC-VはISAを使う敷居を下げ、企 業や組 織の枠を越えたコミュニティーの衆知を集めて、低コストでの技術の開発と改善を促す。
オープンソースのOSとして確かな地歩を築いたLinuxと同様の考え方である。端的に言えば、RISC-Vは「ハード
ウェアのLinux」を狙っているのだ。RISC-V

図1 RISC-V Foundationのメンバー

2は実際、
コミュニティーによって改良が続け

RISC-Vの仕様策定や標準化、啓蒙活動などを推進する、2015年設立の非営利団体。2018年末の時点で約200の企業、団体、教育機関が加盟する。出典：RISC-V SummitにおけるRISC-V FoundationのRick OʼConnor氏の講演「Welcome & RISC-V ISA & Foundation Overview」

られた。
現在は、
RISC-Vを採用したCPUコア（https://content.riscv.org/wp-content/uploads/2018/12/Welcome-RISC-V-ISA-Foundation-Overview-Rick-OConnor.pdf）

ともに、
オープンソースの情報を集めたWeb

Bulletin JASA 2019 Apr. vol.69

やSoCといった他のオープンハードウェアと特集 RISC-V
サイトGitHubで公開されている。
このあたり

Amdahlの法則

は第3部以降で紹介する。
ちなみに、ここにきて様々な業界団体のRISC-V Foundationは2018年12月に、
L i n u x の 普 及 を 促 進 する非 営 利 団 体
Linux Foundationとの協業を発表した。両性能（［MIPS］［SPEC］）

RISC-Vへのシフトが加速し始めた。例えば

マルチコアの時代

Foundationは、
RISC-Vプロセッサーを使っ

Dennardスケーリングの終焉

RICSの時代

CICSの時代たシステムのLinuxへの対応だけではなく、組込みOS「Zephyr」の開発・普及でも協力体制を敷く。
さらに2019年1月にはRaspberマイクロプロセッサの市場投入時期（年）

ry Pi Foundationが、RISC-V Foundation

図4 マイクロプロセッサーの処理性能の推移

への参加を明らかにした。

Domain Speciﬁc Architectureの設計思想を取り込む
台頭の背景にある第2の要因は、半導体の技術的問題に対応する潜在能力を秘めて

CISCからRISC、マルチコアといった手法で性能を高めてきたが、ここにきて向上のペースは鈍っている。
こうした状況をドメイン固有のアーキテクチャー（Domain Specific Architecture）を取ることで補う。Patterson氏によるとCISC時代は年率22％、RISC時代は同52%、マルチコアの時代は同12％で性能は向上していた。
しかしAmdahlの法則によって、コア数を増やしても性能が高まらない時代に突入している。現在は年率3％程度しか性能は高まっていないという。
RISC-V SummitにおけるDavid Paterson氏の基調講演「A New Golden Age for Computer Architecture: History,
Challenges and Opportunities」（https://content.riscv.org/wp-content/uploads/2018/12/A-New-Golden-Age-forComputer-Architecture-History-Challenges-and-Opportunities-David-Patterson-.pdf）
を参考に作成。

いることだ。
マイクロプロセッサーの性能向上

手っ取り早い方法は、半導体技術の微細化が壁にぶつかっているのは図3と図4を見るに応じて動作周波数を高めることである。
ととよく分かるが、
RISC-Vにはこの問題を想定

ころが消費電力が大きくなりすぎるために、 ロセッサーを特定の処理向けに最適化する

したDomain Speciﬁc Architectureの仕組

動作周波数を高められなくなってきた。図3

Domain Speciﬁc Architectureである（図

みが組込まれている。
特定分野に的を絞ったから、2005年ころを境に動作周波数の向上4）。最近になって米Amazon.com社や米

機能や仕組みをプロセッサーに組込むことに急ブレーキがかかっているのが分かる。 Microsoft社、Google社といった情報技術

で、対象となる分野について高速処理を達

2005年からしばらくは、1つのLSIに複数の （IT）の巨大企業が、AIやクラウドコンピュー成する。

プロセッサコアを内蔵し、並列処理を行うこ

ティングに向けた専用チップの開発に動いてとで性能を高めてきた。
しかし、それも限界にいるのも、この流れでとらえることができる。

マイクロプロセッサーの性能を向上させる

近づきつつある。
こうした状況に対応するのが、
マイクロプ

RISC-VのISAには、
ドメイン固有の処理に
図3 マイクロプロセッサーの動作周波数の推移対応した命令を組込むための余地が開発当

2005年を境に動作周波数はほとんど横ばい状態である。

初から残されている。
市場規模にもよるが、自動車や家電製品、制御装置、製造装置といったドメインに特化したRISC-Vチップが登場する可能性もある。UCBの元教授で、RISC-V開発者の一人であるDavid Patters o n 氏（ 現 在はG o o g l e R e s e a r c h ）は

動作周波数
［MHz］

RISC-Vの設計思想について、
著書「RISC-V
原典」（日経BP社刊）
でこう述べている。
ムーアの法則が通用しなくなったときにコスト・パフォーマンスを大きく向上させる唯一の道
は、特定のドメイン向け命令を追加することである。例えばディープラーニング、拡張現実、組
み合せ最適化、
グラフィックスなどのドメインが考えられる。つまり今日のISAにとって、オペ
コードの拡張の余地を予め確保しておくことが重要になっている。
マイクロプロセッサの市場投入時期（年）

Bulletin JASA 2019 Apr. vol.69

3

特集 ● RISC-V

2

RISC-VのISAと普及活動の状況
SHコンサルティング 代表
命令セット仕様（Instruction Set Architecture：ISA）
は、特許で独占的使用権を確保する。

河崎 俊平

ISAをオープンソースとし使用権を制限されないISAとしてRISC-Vが登場した。
広い汎用性を持たせ全応用に適用できる。

本記事では、
RISC-VのISAの特徴とプログラム環境整備状況、
IoTやAIのエッジデバイスセキュリティー保護への取り組みを紹介する。

RISC-Vでは、32ビット以上の全応用領ある。RV64GCが得意とするのは、MPEG

Debianサポートに必要な、binutils、域をカバーするため、モジュラーアーキテク

映像データ変換（同20%）、線形代数演算

gcc,llvm、
glibc、Linux、
ミドルウェア、プロ

チャー方式を採用している（図１）。基本が同38%などである。

グラミング言語などの上流サポートには年ワード長、命令機能、特権モードなどは応間億単位の費用が必要なため、RV32ま用を考慮し選択実装することで各応用を64ビットのみのRISC-VGCCと経済的に実装できる。

Linuxサポート

でケアできない。

RISC-V ISAの特権モードでは、「マシン

RISC-Vチームは、RV64のbinutils、RISC-VへのDebianによる関与の歴史

モード（最高特権）」
が必須で「スーパーバgcc、glibc、LinuxをアップストリームしDebianでは、安定版（stable）とし、
テス

イザーモード」「ユーザーモード（最低特ABIを安定させる作業を進めている。

ト版（testing）、不安定版（unstable）の3権）」
はオプションだ。仮想マシン上でリッLinux対応RV32ハードとLinux試作版

世代のディストロを並行に公式リリースすチOSを実行する時は、3つの特権モードすが2016年ごろ存在したが今は姿を消しる。2019年3月時点の安定版Debianはべてを実装する。マイコンは概ね「マシンた。DDR実装量が増加して4GBの物理メ

GNU/Linux 9コードネーム「stretch」
でモード」
のみで実装されている。

モリーは珍しくない。
ラスベリーパイですらある。2019年からGNU/Linux 10コード

RISC-Vの基本命令長は32ビットだが、 1GBのDDRを標準実装する。Linux対応

ネーム「buster」に移行する。

命令フィールド内の2ビットで命令長が決Arm32は価格が暴落した。
ラズベリーパイ

まり、16ビット圧縮命令（C）
もオプションとゼロボードは5 米ドルで売られている。 ト移植はしばらくゆっくりだった。
それらのしてあり、命令空間の4分の1が圧縮命令

RedHat / Fedoraはサーバークラスのに割り当てられる。命令密度はThumb命RV64ハードウェアにしか興味がない。 のアップストリーム化は驚異的速さで進ん

ABI問題、法律問題などでRISC-Vソフ

問題が解決するとRISC-Vツールチェーン

令すなわちArm Cortex M0と理論的には等価である。CSiBEベンチマークは、gccコ
ンパイラ設計者がコード最適化に使うベンチマークであり、893種のベンチマークがアーカイブされている。C o r t e x M 0と
RV64GCでCSiBEを2016年頃の未熟なGCCでコンパイルした。平均コードサイズ
は、RV64GCはM0比15%増、RV32GCは同11％増だった。
M0、RISC-V ISAでは、
コード効率ベンチマークで得意不得意がはっきりする。
M0が得意とするのは、Linuxカーネルタス
ク初期化（対RV64GCでサイズが52%）、
組込みTCPIPプロトコル（同43%）などで4Bulletin JASA 2019 Apr. vol.69

図1

RISC-Vのモジュラーアーキテクチャー使用例（Linuxが走るRV64GCの場合）だ。
アセンブラやリンカ（binutils）
は2017
年3月に、
コンパイラー（gcc）
は2017年5月に、ライブラリー（glibc）
は2018年2月にリリースされた。エミュレーター（qemu）
も2018年4月にqemu 2.12の一部としてリリースされ、
デバッガ（GDB Linux）、高性
能コンパイラー（LLVM / Clang）、
ジャバ
JIT（Java / OpenJDK JIT）、Rust言語、
Go言語、
フリーパスカル、V8（GoogleのJavascriptエンジン）
はRISC-Vに移植中である。

RISC-V Debian自動ビルドの状況
RISC-Vを含むi386以外の全アーキテ
クチャーのパッケージ・コンパイル状況は
Debianの自動ビルダーネットで集中管理

図2

2018年前半期における各アーキテクチャーのビルド成功率されている。
RISC-Vは：①上流ツールチェーン・サ
ポート体制が存在する。②Debianパッなど）上で全ビルドが動作する。⑧移植作

ケージ管理システムの不安定新アーキテ

業インフラ（Porterbox）
が利用可能である。 （ⅱ）buildに十分な冗長性を持つ。
（ ⅲ）

トーラ
（Debian-Installer）のサポート。

クチャー（dpkg/unstable）
サポート体制

図2は、2018年前半期時点での各アー

Debian自動ビルダーネットが管理するが存在する。③自動ビルダ・ネットワークがキテクチャーのビルド成功率（Y軸）を示

ハードがラックマウント可能でゾーン外リ稼働し新パッケージがビルドできる。
このす。RISC-Vは、2018年半ばに成功率をモート管理機能を持ち、スペアハードウェ

ためRISC-VのDebian格付けは「Debian

80%から88%に急増させた。PowerPC64

ア準備がある）。
（ ⅳ）
アーキテクチャー固第 2 クラス・ア ー キテクチャ ー 」別 名

は、95%を維持している。SH4は、
アーキテ

有の問題を処理する最低3人の開発者を「 D e b i a n 移 植 アー キテクチャ ー 群

クチャー責任者（メンテナ）が無給与なのアサインする。

（debian-ports）」
である。

でビットロット状態が続き81%~84%にまR I S C - Vを「 Debian正式アーキテク

現 在 進 行 中 の D e b i a n 1 0 、通 称で下落した。Trust Moduleに使用するた 「Buster」では「遷移フリーズ」
「ソフトフ

チャー
（Regular Debian Architecture）」 めSH用gccツールを開発したが、Debian

リーズ」「完全フリーズ」
が、2019年第１四に格上げするには、
以下の追加条件を満たが使用するアップストリーム化の予定はま

半期に始まるのでRISC-Vは間に合わなす必要がある。④アーカイブ中の95％以上

だない。

い。
「リリースアーキテクチャー」となれるののパッケージが 正しくビルドされる。⑤は、少なくともD e b i a n 1 1 以 降である。

Debianアーカイブ中に「未リリース」パッ 「リリースアーキテクチャ」
への道

RISC-VのようなオープンISAとオープン

ケージがない。
⑥Debianパッケージ管理シ

ソースのCPU IPがDebian「リリースアー

Debianは、安定版リリースが出る度にステム安定版でアーキテクチャーサポート 「リリースアーキテクチャー」となれば、RISC-Vの目指すを認定する。 キテクチャー」が利用できる。
⑦Debianシステム管理シス

RISC-Vが認定されるためには、次の条件

テムにつながる物理ハード
（ボード、
ボックス

を満たす必要がある。
（ ⅰ）Debianインス

頂点=サーバーに一挙に近づく。

Bulletin JASA 2019 Apr. vol.69

5

オープンSoCを支援する

Linux Foundationに合流することで、
グ

こでは、
（a）
日本発のRISC-Vの発表、（b）「チップ連合」設立

ローバルな組織基盤を確立し、米中半導

日本のRISC-Vチップ開発、（ c）日本語Linux Foundationは下部組織として（ d）
日本RISC-V法人が必体 戦 争などの 影 響を受けづらくする。 RISC-V書籍、「チップ連合」（CHIPS Alliance）
を2019

RISC-V Foundationは米国基盤でISA規要という意見が出た。
これを受けて、2018

年3月に発足した。企業と個人が協力し格管理とイベント運営を担う。複眼的な組

年に活動を加速した。
その結果(a)(b)(c)はオープンCPUとシステムオンチップ（SoC） 織構成になりつつある。

実現できた。2019年は、東京国分寺に新の設計資源を作り出す。
対象分野は①モバ

設される日立馬場記念ホールを使わせてイル、②コンピューティング、③家電製品、④

日本でのRISC-Vの取り組み

いただき9月30日に開催する。

IoT、である。Google社、Western Digital

筆者は2014年夏からRISC-Vのイベン

RISC-Vは、
当初バイエンディアンとして社、
Esperanto社、SiFive社が後援する。

トに参加してきた。RISC-V Foundation

誕生した。後に、ビッグエンディアンを仕様

AI、機械学習、
インフラ向け計算基盤を

は、
モーター、
ロボット、民生応用の聖地でから削除した。
４回に渡りビッグエンディア

RISC-Vが担うにはオープンSoCの解が必ある日本は、RV64の中位製品を開発する

ン追加要求があったが、ツールがネックで要である。RISC-Vに加え、まちまちなライことを期待した。2016年頃欧米アジアと日実現しなかった。
しかし、通信インフラ、
ベー

センス条件や開発言語で散在するオープ

本の間にRISC-Vに関する大きな情報格

スバンド、工場インフラ、電力インフラ、航ンハードをSoC基盤ブロックにまとめる努

差があることに危機感を持ち、SHコンサル

空、軍事、宇宙応用などはビッグエンディア力も重要だ。

ティングとしてRISC-V Foundationに加ンが主流だ。Debian「リリースアーキテク

OpenRISC、
レトロCPU（例：Z80）、グラ

入した。その後、2017年にはテカナリエ

チャー」のうち、arm64、arm（32）、MIPS、

フィックスIP、
セキュリティーIP、
アナログIP社、2018年にはNSITEXE（デンソーのグ

ppc64elはバイエンディアンでLinuxもビッを整備する動きもある。オープンソースIP

ループ企業）、ペジーコンピュータ、2019

グリトルを両方完全にサポートしている。

基盤ブロックが必要である。Google社は、 年にはソニーセミコンダクタソリューション

Armのビッグエンディアンは、iPhoneのRISC-V向けに、高ストレスランダム検証命ズが加入した。

ベースバンドチップに使われている。エン2017年12月にRISC-V Foundationかディアン間のソフト移植はエラーが生じやら要請があり「RISC-Vの１日」
と呼ぶ年１

すいため、
ビッグエンディアンRISC-Vの10年の計を持つRISC-Vには安定した回の国内の催しを開催した。第1回の開催

ニーズはある。
近くRISC-Vビッグエンディア

政治地盤も重要だ。基盤を欧州に持つ

後に関係者が集まり反省会を行なった。
そン・コンパイラーの調査移植を行う。

令ストリーム生成ツールを提供することをコミットした。

オープンな仕組みを活用してエッジデバイスのセキュリティーを守る

T E E ）と物 理 耐タンパ性を持つT r u s tModule、産業用途、
セキュリティーインフ
ラなどの応用技術をテーマとしている。

つながるデバイスのセキュリティー技術指したものだ。日立製作所、慶應義塾大をソフトとハードのオープンソース・パッ

学、産業技術総合研究所、SHコンサル

ケージとして展開する活動を、NEDOのティング、セコム、電気通信大学、東京大「高効率・高速処理を可能とするAIチッ

は、メインCPU群で学が参加している。
このプロジェクトでは、 nt =トラスト実行環境）

プ・次世代コンピューティングの技術開

アプリAPIから応用プログラマがシステム動作するリッチOS（例：Linux）の追加機能

発」
プロジェクトで進めている。将来のIoT

セキュリティーを担保するトラスト実行環である。
TEE API群を介しメモリー隔離ハー

やAIエッジデバイス用SoCでの利用を目

（TEE）
を使う。
TEEのAPIは抽象化さ境（Trusted Execution Environment： ド機構

6Bulletin JASA 2019 Apr. vol.69

2段構えでエッジデバイスを守る
TEE（Trusted Execution Environme特 集 RISC-V

れているのでハードが変わってもアプリのセ
キュリティースキームは移行できる。
よく、TEE以外になぜTrust Moduleが必要なのか、と聞かれる。TEEは、
リッチ
OSとTEEが正しく立ち上がった時だけ機能する。TEEが搭載されてないチップ単体に固有鍵を注入することもある。
ボードに組み込まれた後、IoTを個人化（Persona
lization）
する。LinuxやTEEが動作しない
IoTデバイスを退役させることもTrust
Moduleの仕事だ。
また、デバッグのために
ICEを繋げることもあるが、これも固有鍵を使い暗号化された通信を行う。
このように
図3

TEEが起動される前後に多様なライフサ

トラストモジュール・アーキテクチャー

イクル処理がある。
Trust Moduleは、鍵注入処理、バイオ

を高速に生成し、PBXに安全に送る。固有

合体のこと。

メトリ情報、セキュアブート機能、デバッグ

鍵が正しく書き込まれたかもチェックする。

⑧Trust Module:セキュアMCUマクロセ

機能、ストレージ暗号化機能などを、モ

②認証（CA）
サーバー：Trust Moduleがル。
セキュアOSを実行する。
セキュアMCU

ジュール単体で行える独立したコンピュー

生成したデジタル署名を検証する。

は、
乱数生成、
暗号アクセラレーター、
耐タン

ター（マイコン）である。PKIアルゴリズムを③データサーバー（DS）：Trust Module

パ機能を持つ。
セキュアOSは、
自己充足的な使い、統一された暗号ワークフローで鍵管内の資格証明書を使い、ユーザーセキュリ

コンピュータシステムでユーザープログラム

理を安全に行う。Trust Moduleは、海外

ティー運用を行う。

をダウンロード実行できる。
セキュアOSは、

政府暗号調達基準（FIPS140-2など）の④トラスト開発デスクトップキット（TDK）：

暗号ライブラリーを機能の一部として持つ。

コアプレッ
物理セキュリティー規定に対応できる。 Trust Module用アプレットと、⑨メイルボックス：コアプレックスから

FIPS140-2暗号境界（TOE境界）を半導

クス用アプリを開発するためのツールキッ

Trust Moduleのメモリー空間をアクセスす体のマクロセル境界を合致させ、境界内のトをホストするPC。

ることはできない。
セキュアMCUは、
メイル

ハードとソフトを独立認定する。応用シス⑤パーソナリゼーションセーフボックス

ボックスを介してコアプレックス空間をバス：Trust Moduleに鍵と個別化デー
テムを認定せずとも、Trust Module認定 （PBX）

マスターとしてアクセスすることができる。

で調達基準を充足できる。

タを注入する。Trust Module外部ピンに

図3に、Trust Moduleのアーキテク

電気的につながるテスター、
プローバ、
ハン

本論文は、Creative Commons「CC-BY

チャーを示す。⑥のSoCは、
３つのサー

ドラーとのインタフェースを備える。HTMと-4.0ライセンス」
でライセンスされます。

バーと１つのデスクトップと１つのセーフ

認証交信する機能も持つ。
使用状況により掲載した研究の一部は東大VDECの設備

ボックスから構成される。

タンパ検出機能も持つ。

とファブを使用させていただいた。

⑥SoC:リッチOS（Linux + TEE）
を実行

参考文献：Karsten Merker , Porting

各要素の説明を簡単にする。

①ハードウェアトラストモジュール（HTM） できるチップ。

Debian to the RISC-V architecture ,サーバー：Trust Moduleの不揮発性メモ⑦コアプレックス：CPUコア群。
マルチコア

Tales from a long quest , February 2.

リーにチップ製造工程で書き込む固有鍵とMMU、L1キャッシュ、L2キャッシュの集

2019

Bulletin JASA 2019 Apr. vol.69

7

特集 ● RISC-V

3

RISC-Vベースのエッジ向けプロセッサー
日本アイ・ビー・エム シニア・リサーチャー
IoTのエッジ向けプロセッサーでは英Arm社の「Cortexシリーズ」
が広く利用されている。

宗藤 誠治

その一方で、近年、オープンな命令セットを採用した「RISC-V」という新しい選択肢が注目されている。
RISC-Vの普及とともに、さまざまなRISC-Vのコアが発表され、選択肢が広がってきた。
ここでは、現在利用可能なRISC-Vの各種実装の紹介と、選択のポイントについて解説する。
特にスイス連邦工科大学チューリッヒ校（ETH Zurich）
で開発が進められている「PULP」と、
米SiFive社の「Freedom」
についてその概要を紹介する。

R I S C - V は オ ープ ンな 命 令 セット（Instruction Set Architecture：ISA）
である点が特徴である。
つまり、誰でも自由におり、ソフトウェア開発もその他のISAを利用した場合と同等になりつつある。

コアであることを示す。

組込みの場合、利用できるメモリーサイ

RISC-VのISAは32ビット、64ビット、 ズが限られていることから、バイナリコード

RISC-VのISAをサポートしたプロセッサー

128ビットに対応しており、組込みでは32を開発することができる。開発したプロセッ

ビットのコアが利用される場合が多い。 トを用いた場合、Arm社のCortexシリー

サーはオープンソースとして公開すること

RISC-VのISAにはいくつかのグループがズとほぼ同等のコードサイズとなる。
さら

サポートする命令によってコアのサイも、商用製品として利用することもできる。 あり、に、組込み用に命令を絞ったE（Embedd

RISC-VのISAはRISC-V Foundation

ズが異なる。
そのため、RISC-Vのプロセッ（https://riscv.org/）
によって管理されて

サ ー コ ア で は 、対 応 す る I S A をが小さいことが重要になる。縮小命令セッed）命令セットも用意されている。

おり、基本的には、各社のRISC-Vプロセッ 「RV32IMC」のような形で表記する。RV

市販のSoCを利用したソフトウェア開発

サー上で同じバイナリコードを実行するこ

32IMCとは、32ビットで整数（Integer）、

市販されているRISC-Vを採用したプロとが可能である。
コンパイラーやオペレー

乗算器（Multiplier）、縮小命令セット

セッサーはまだ多くはない。
それでも、表１に対応したプロセッサー
ティング・システムのRISC-V対応も進んで （Compressed）に示すように、いくつかのプロセッサーと評

表1 RISC-VのSoCを搭載した評価ボード一覧

8

評価ボード

HiFive1

HiFive1 rev B

KD233

VEGA

価格

$59

$59

$49.99無料

開発元

SiFive(米)SiFive(米)Kendryte(中)NXP(蘭)

SoC名

FE310-G000

FE310-G002

K210

RV32M1

コア

SiFive E31

SiFive E31

不明 (2 core)

RI5CY/ZERO-RISCYISA

RV32IMAC

RV32IMAC

RV64GCRV32IMC

パイプライン

5-stage

5-stage不明

4-stage/2-stage

命令メモリー(キャッシュ)

16KB

16KB

32KBx2

4KB

データメモリー

16KB

16KB

32KBx2

その他SRAM

8MB

256KB/128KB

アクセラレータ

KPU, APU, FFT, AES, SHA256

AES, DES, SHA256, RSA, ECC

GPIO, UART, SPI, I2C, I2S, PWM

GPIO, UART, I2C, SPI

外部インターフェース

GPIO, UART, PWM, SPI

ASIC

TSMC 180nm

TSMC 28nm

動作周波数（MAX)320MHz400MHz72MHz

SW開発環境SDK, IDE提供

SDK, IDE提供

SDK提供

Toolchain提供

OS

FreeRTOS, Zephyr

FreeRTOS, Zephyr

FreeRTOSFreeRTOS, Zephyr

URL

https://www.siﬁve.com/boards/
hiﬁve1

https://www.crowdsupply.com/siﬁve/
hiﬁve1-rev-b

https://kendryte.com/

https://open-isa.org/

Bulletin JASA 2019 Apr. vol.69

GPIO, UART, PWM, SPI, I2C

価ボードが入手可能になってきた。
こうし

ている。
コアに関しても、表2に示すようにの検証には制約がある。現状ではChisel

た評価ボードを利用することで、RISC-V

様々なコアが様々な組織（大学、企業）かに慣れた開発者が少ないことが課題と言向けのソフトウェアの開発を実機上で進めらオープンソースとして公開されている。
まえる。今後ドメイン固有アーキテクチャーをることができる。SiFive社の「HiHive1」 た、商用のコアも発表されている。

実現するために、命令を追加したり、
コ・プ

は、日本国内でも入手可能なArduino互

2015年にETH ZurichがPULPinoを

ロセッサーを組み合わせたりする作業に換ボードであり、RISC-V上で何かソフト

Github上でリリースした。
その後、2016年

は、カリフォルニア大学バークレー校が開

ウェアを動作させるにはお手頃な製品であにカリフォルニア大 学 バ ークレー 校の発した新しい言語と開発環境の利用は検る。各種の開発ホスト環境向けのクロスコ

RISC-V開発チームが立ち上げたSiFive

討の価値がある。

ンパイラーを含むSDKもリリースされてお社により開発されたFreedomもGitHub

こうしたコアの選択のポイントとしては、り、Arduino IDEを使い、自由にプログラム上 で 公 開 され た 。2 0 1 8 年 末 には 米以下の項目について注意する必要がある。

の開発＆実行ができる。

Western Digital社がRISC-Vのコアを公●メモリー構成

開している 。今 後 も 各 社 で 開 発した●セキュリティー機能

RISC-Vのコアを一般に公開する動きが続●デバッグ機能（JTAG）

RISC-Vを採用する動機の一つが、独自くと思われる。選択肢が増えることは好まし●ソフトウェア・サポートのSoC開発であろう。RISC-Vには特定のいが、利用に際しては自分たちに適したコ

アプリケーションに特化して最適化を進め

アがどれなのかを見極める必要がある。

独自SoCの開発

一般に、命令実行用とデータ用の二つ

るド メ イン 固 有 ア ー キ テ ク チ ャ ー（Domain Speciﬁc Architecture）
を実現するための、最も先進的な仕組みが備わっ

GAPUINO
100,00€
GreenWaves Technologies(仏)GAP8
RI5CY (8 core)
RV32IMC
4-stage64KB(L1)

RISC-V実装の選択のポイント

CNN
UART, SPI, I2C, I2S, PWM, GPIO
TSMC 55LP
250MHz
SDK提供
FreeRTOS
https://greenwaves-technologies.com/
product/gapuino/の内部メモリー（SRAM）
が必要となる。
こ

RISC-Vのプロセッサーの開発言語としれらがキャッシュとして実装される場合は、ては、SystemVerilogとChiselの二つがプロセッサーチップの外部に、より大きなメ

広く用いられている。一般的なハードウェ

モリーを接続することとなる。
アプリケー

ア開発では、SystemVerilogの利用が一ションは外部に接続されたフラッシュメモ

般的であり、SystemVerilogで記述されたリーなどに保存される。

RISC-V実装は多くのエンジニアに受け入

メモリーマップはそれぞれの実装で異なれられやすい。
またAXI/APBのようなバスるため、
ソフトウェアで複数のSoCをサポーを採用している場合が多く、既存のIPを組トする場合は注意が必要であるが、これは込みやすい。

Armコアを用いる場合でも同様である。

一方、Chiselはカリフォルニア大学バークレー校で開発された高位のハードウェア

512KB(L2)

メモリー構成記述言語であり、Scala言語をベースに設

セキュリティー機能
IoTのエッジデバイスではセキュリティー

計されたドメイン特化言語（DSL）である。 の確保が重要になる。RISC-Vのコア自体
同校で開 発されているR I S C - V 実 装ののセキュリティー機能としては特権レベル「Rocket-core」
はChiselで記述されておとメモリー保護機能（Physical Memory

り、先に述べたSiFive社のFreedomもProtection：PMP）がある。現時点では、

Chiselで記述されている。
この場合、内部

暗号処理向けの命令セットはまだ策定中

バスはTileLinkとよばれる独自のものであであり、暗号処理を高速化、低消費電力化

る。Verilogなどで書かれたIPを組み込むするためには、独自命令の追加、暗号アクことは可能であるが、Chiselの開発環境でセラレーターの追加などが必要である。

Bulletin JASA 2019 Apr. vol.69

9表2 エッジ向けのRISC-Vコア一覧
SoC名

PULPinoPULPissimo

コア

RI5CY

RI5CY

開発元

ETH Zurich ETH Zurich ETH Zurich ETH Zurich UCB

ISAZero-Riscy

RV32IMCX RV32IMCX RV32IMC

パイプライン 4-stage

4-stage

Briey

Freedom E300

2-stage

Micro-Riscy Z-Scale

E300

E51

E31

E24

SiFiveSiFiveSiFiveSiFiveSpinalHDL

Cliﬀord Wolf

RV32IMAFC/
RV32IMCRV32IMAC

RV32IMCRV32IM

RV32IMAC RV64IMAC RV31IMAFC RV32IMC

2-stage

3-stage

5-stage

5-stage

5-stage

I-Cache,D-SRAM

I-Cache,D-SRAM

I-Cache,D-SRAM

1KB

TileLink

TileLink

TileLink

AXI45-stage

3-stage

内部バス

AXI/APB

AXI/APB

Privilegelevels

M

M

M,(U)

M.U

M.U

M,U

PMP

N/A

N/A

16

Max 16

Max 16

Max 16

設計言語

SystemVerilog SystemVerilog SystemVerilog SystemVerilog Verilog

ChiselChiselChiselChiselChisel

1.8

1.61

1.61

1.38

2.76

2.73

3.01

3.1

AHB-Lite

Dhrystone（DMIPS/MHz）

1.35

CoreMark（CoreMarks/MHz）

3.19

I/F

I2C, UART,
GPIO, SPI

デバッグ

SPI Slave経由

FPGA

ZedBoard

2.44

PicoRV32

RV32EC

32KB I-SRAM,
内部メモリー 32KB D-SRAM

0.91

5-stageM

SpinalHDL

Verilog
0.31

SPI, UART
JTAG

JTAG

JTAG

LX9 Microboard Arty A7

ソフトウェア開発環境 pulp-builder SDK pulp-builder SDK

Arduino,Freedom-SDK

OS

FreeRTOSFreeRTOS,
Zephyr

ライセンス

Solderpad HW Solderpad HW Solderpad HW Solderpad HW BSD

BSD

Githubhttps://github.com/ https://github.com/ https://github.com/
pulp-platform/
pulp-platform/
pulp-platform/
pulpinopulpissimo
zero-riscy

商用

商用

商用

商用

DE1-SoC,
DE0-NanoiCE40-HX8K

MIT

ISC

https://github.com/
https://github.com/
cliﬀordwolf/picorv32/
SpinalHDL/VexRiscv
tree/master/picosoc

https://github.com/ https://github.com/
siﬁve/freedom
ucb-bar/vscale

特権レベルについてはM（Machine） RISC-Vに対応しており、各ホスト環境に応

ASIC化を支援するサービスも始まってきモードとU（User）
モードの二つをサポート

じたクロスコンパイラーが入手可能であており、将来は簡単にチップが作れる時代する場合が多い。
これとPMPを組み合わる。各種のコアは最低限クロスコンパイがくるかもしれない。

せることで、
ファームウェアを保護すること

ラーには対応している。
ものによっては、ができる。RISC-V Foundationでは、一般

BSPを含むSDKや、IDEが提供される場合にTEE（Trusted Execution Environmeもある。O S についてもF r e e R T O S や

nt）と呼ばれるセキュアな実行環境を、
こうZephyrなどのRISC-V対応が進んでいる。 なETH ZurichのPULPinoとSiFiveの進められている。

ETH ZurichのPULPino
ここからは、RISC-Vの実装として代表的Freedomについて概要を紹介する。

した機能を用いて実現するための作業がASIC化のサポート

まず P U L P i n oであるが 、元々E T H

GitHub上で公開されている実装は、主

ZurichはOpenRISCコアを使った低消費にFPGAでの評価までの情報しか公開さ

電力プロセッサーの研究を進めており、それていない。機能評価はFPGAを使った環のプロセッサーコアをRISC-Vに変更したもJTAGのサポートの有無も重要である。 境で十分だが、最終的にシリコンに落とすのが、PULPinoである。
そのため公開当初

OpenOCD経由でデバッグできることが望際には、各種テクノロジーに依存したライからSoC用コアとして十分な機能を持ってましい。

ブラリーやメモリー、I/OなどのIPが必要といた。
またFPGAでの検証環境もサポートしなる。
この部分はまだ敷居が高いのが現実ている。設計はSystemVerilogで記述されである。社内にそうしたサポートがない場

おり、内部バスもAXI/APBであるため、組一般的にはCもしくはC++を用いてソフ合は、商用の支援サービスを利用するのも込みプロセッサーの開発経験があれば簡トウェアの 開 発を行う。G C Cはすでに一つの方法である。近年はクラウド上で単に機能の追加や変更が可能である。

デバッグ機能プロセッサーのデバッグとして一般的なソフトウェア開発環境

10

E21/E20

PicoSoC

Bulletin JASA 2019 Apr. vol.69

特 集 RISC-V
Raven

IcicleArtyS7-RPU-SoC SHAKTI E-Class SHAKTI C-Class SweRV Core N25/N25F

NX25/NX25F Piccolo

Mi-V

RPU

Mi-V

Riscy-SoC

mriscv

PicoRV32 Icicle(Icicle)mriscvcore ORCA

efabless
Grahamengineering Edgecombe

Aleksandar
Kostovic

OnchipUIS

VectorBlox Colin Riley

RV64I

RV32I

RV32IM

RV32I
5-stage
4KB

Verilog

ORCA

RV32I

4 or 5-stage

8KB

SystemVerilog Verilog

E-Class

C-Class

SweRV EH1 N25/N25F

NX25/NX25F Piccolo

IIT-Madras

IIT-Madras

Western Digital Andes

Andes

RV32/64-IMAC RV64IMAFD RV32IMC
3-stage

6-stage

5-stage

AMBA

AHB or AXI AHB or AXI

M

M, U

M,U

N/A?

16 regions

16 regions

VHDL

VHDL

Bluespec System Bluespec System
SystemVerilog Verilog
Verilog
Verilog

1.67
2.2

iCE40-HX8K iCE 40

5-stage

AXI4, APB

0.98

UART

RV32IMA,

4KB SRAM

Verilog

ADC, DAC,
GPIO, SPI

3.22

3.58

3.52

8KB I-Cache,
8KB D-Cache

M,U

Verilog

2.85

3-stageBluespec System
Verilog
Verilog

UART, QSPI,
I2C

DE2-115,
iCE5LP4K, ZED

Arty S7-50 Artix7 FPGANEXYS44.9

Microsemi

RV32IMAC RV64IMAC RV32ACIMU RV32IMF

I-Cache & D-Cache, I-Cache & D-Cache,
I-Cache、ECC 8KB to 64KB
8KB to 64KB

0.31

GPIO, ADC, DAC,
UART,SPISPI, UART

9-stageBluespec

N/A
N/A

M2GL025
AndeSight IDE AndeSight IDE
FreeRTOS,
Zephyr

ISC

ISC

MIT

MIT/BSD

BSD

Apache2.0

GPL 3 /BSD BSD

Apache2.0

商用

商用

Apache2.0
https://github.com/
https://github.com/ RISCV-on-Microsemi
bluespec/Piccolo -FPGA/M2GL025Creative-Board

https://github.com/ https://github.com/ https://github.com/
https://github.com/ https://gitlab.com/ https://gitlab.com/ https://github.com/
https://github.com/ https://github.com/
efabless/ravengrahamedgecombe/ AleksandarKostovic/
Domipheus/ArtyS7- shaktiproject/cores/ shaktiproject/cores/ westerndigitalcorpo
onchipuis/mriscv vectorblox/orca
picorv32
icicleRiscy-SoC
e-class
c-class
RPU-SoC
ration/swerv̲eh1

FPGAの評価環境はXiinx社のZinqをを用いて、FPGAやASICのネットリストを簡単にRISC-Vの世界が体験できる環境用いる。ARMのコアを経由してRISC-V側生成する。Tilelinkと呼ばれる独自の内部を提供している。FPGA版の実装のソフトにアクセスするので、開発環境の構築に少バスを採用しており、既存IPの利用には制ウェアのアップロードはJTAG、OpenOCD

し手間が掛かる。表１に挙げたVEGAや約がある。

経由で行うため、JTAGアダプターが別途

GAPUINOはコアとしてETH Zurichで開発されたRI5CYを採用している。

ペリフェラルの追加はChiselでの再設計が望ましい。
そのため、新規にChisel言語の習得が必要となるが、Rocket-coreへ

SiFiveのFreedom

必要となる。

まとめの命令の追加やRoCCと呼ばれるコ・プロ

以上、
エッジ向けのRISC-Vコア、SoCを一方、Freedomは、SiFive社の組込みセッサー機能などがあり、ドメインに特化し簡単に紹介したが、RISC-Vのエコシステ

用のSoCで、カリフォルニア大学バーク

た最適化に適した開発環境である。
この他

ムはこの数年で急速に広がってきており、レー校が開発しているRocket-coreをベーにもSiFive社は表２に示すような性質の異今後一般に入手可能なプロセッサーやスに、組込みで必要となるペリフェラルをなる商用コアもいくつかリリースしているのボードも増えてくると思われる。
そうした既追加し、SoCの形にまとめたものである。 で、製品で使用する場合はそうしたコアの存のチップを使ってエッジ機器を作るだけ

ScalaベースのDSL（ドメイン固有言語）
で採用も可能である。表１に挙げたArduino

でなく、SoCレベルで自由に最適化を試み

あるChiselで記述されており、構成変更が互換のボードも入手可能である。

ることができる点が、RISC-Vと従来ISAと

容 易 で ある。実 際 には 、C h i s e l から

また、GitHubで公開されているChiselの大きな違いである。組込みの場合安価な

FIRRTLと呼ばれる独自のRTL記述に変のソースコードを元に実際にFPGAで動FPGAボードを使い、手軽にRISC-Vの評

換され、さらにVerilogのRTLコードが生作させるまでの作業も体験できる。
ソフト

価を始めることができるので、ぜひオープン成される。以降は通常の論理合成ツール

ウェア開発環境もリリースされており、最もなISAのメリットを体験していただきたい。

Bulletin JASA 2019 Apr. vol.69

11

特集 ● RISC-V

4

RISC-Vを触ってみる。無料で始められる
RISC-V開発環境の構築とFPGA実装

FPGA開発日記「RISC-V」のISAはオープンソースであり、様々な企業や団体がRISC-Vに対応したオープンソースCPUコアを公開している。
RISC-Vを触ってみたい技術者はネット上から情報を入手でき、無料のRISC-Vコアを使用してFPGAに実装したり、ASICを起こすことができる。
ここでは、
RISC-V対応のオープンソースCPUコアを使うための様々な開発環境の紹介と、その構築方法についてイントロダクションを行う。

2019年現在、ネット上にはRISC-Vに関

RISC-Vソフトウェア開発環境のれている「 r i s c v - t o o l s 」（https://する多様なリソースが公開されている。 構築手順

github.com/riscv/riscv-tools）
は、
これRISC-V ISAの仕様書、オープンソースのRISC-Vソフトウェアを開発するためにまらの環境がすべて入っているリポジトリー

CPUコア、
コンパイラーからLinux、無料のず必要なのは、コンパイラーやシミュレーである。
このリポジトリーをダウンロードす

開発環境まで様々だ。技術者は自分の興

ターなどのツール群だ。GitHubに公開さると、とりあえず必要なツール群を一式揃

味のある部分からRISC-Vを触り始めるこ

コード1とができる。
RISC-Vをどのように使っていきたいのか。

git clone https://github.com/riscv/riscv-tools.git
cd riscv-tools

その活用法は人によって千差万別である。

export RISCV=/home/msyksphinz/riscv64

以下の項目に注目して、はじめの一歩を踏み

MAKEFLAGS=“-j8” ./build.sh

出すための手順について解説していきたい。

...

● とりあ えず 手 元 の C プ ロ グ ラム を

RISC-V ISAでコンパイルして、命令セッ

cd {RISCV}/
export PATH={RISCV}/bin:{PATH}
export LD_LIBRARY_PATH={RISCV}/lib:{LD_LIBRARY_PATH}

ト・シミュレーターで動かしてみたい。
●オープンソースのRISC-V CPUコアを使ってR T Lシミュレーションを行い、FPGAで動かしてみたい。
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・
・

コード2

#include <stdio.h>
int gcd (int a, int b){
int c;

筆者がRISC-Vについて調査を始めた
2015年当時、RISC-Vのソフトウェア環境

 if (a < b) { int tmp; tmp = b; b = a; a = tmp;とハードウェア環境はほとんど公開されて}いなかった。
しかし、現在はQEMUのようwhile (b != 0) {なエミュレーターからLinuxのようなOS、 c = a % b; a = b; b = c;}

GCC（GNU Compiler Collection）や

return a;

LLVMなどコンパイラー関連、そして多くの}団体から公開されたオープンソースCPU

int main ()コアまでよりどりみどりの状態になった。

{
printf ("Calling GCD ...\n");ネットを検索すればすぐに多くの情報を入printf ("GCD(411, 27117) = %d\n", gcd(411, 27117));手できるので、今回紹介するもの以外でも興味があれば、ぜひ調べてみてほしい。

12

Bulletin JASA 2019 Apr. vol.69

return 0;
}

コード3

riscv64-unknown-elf-gcc gcd.c -o gcd
spike pk gcd<<set terminal>><<reset terminal>>
Calling GCD ...
GCD(411, 27117) = 3<<reset terminal>>
コード4

git clone https://github.com/freechipsproject/rocket-chip.git --recurse-submodules
cd rocket-chip
cd emulator  # Verilatorを使う場合
cd vsim    # Synopsys VCSを使う場合
make CONFIG=DefaultConfig # DefaultConfig構成でビルド(RTL作成)
コード5

make output/rv64ui-p-add.out

えることができる（ただしリポジトリーのサRocket-Chipを使った

イズは数GBにおよぶので、すべてダウン

RTLシミュレーションとFPGA実装

ロードするときはディスク容量に注意しておそらく多くの技術者にとってみれば、
このChiselという言語のハードルが最も次に、RISC-Vのオープンソースによる高いであろうと思われる。
しかし、Rocket-

CPU実装の手順を見てみよう。RISC-VのChipをダウンロードしてそのまま使うので以下の手順でツールセットをダウンロー

オープンソース実装は現在では多くの企あれば、Chiselの知識は必要ない。全自動

ドしてビルドする。ここで 環 境 変 数「 $業や団体から公開されている。最も有名なでVerilogに変換されRTLシミュレーショ

{RISCV}(=/home/msyksphinz/

ものはカリフォルニア大学バークレー校やンからFPGAの構築まで行うことができる

riscv64)」を設定しているが、このディレク米SiFive社が管理している「Rocket-Chip

ので、ユーザーはChiselの知識は全く必

トリーにツール群がインストールされること （https://github.com/freechipsproject/

要ないのである（ただし改造しようとなるとになる。
（コード1）

rocket-chip）」だろう。Rocket-Chipは

Chiselの勉強をしっかり行わないといけ

で は 、早 速 C 言 語 の プ ログ ラムを

RTLシミュレーション、FPGA実装、
はては

ない）。

「RISC-V GCC」でコンパイルして、命令AWS F1インスタンスでの動作と、様々なセット・シミュレーター「spike」
で実行して環境をサポートしている。

欲しい）。

みる。以下のような最大公約数（gcd）
を計

このRocket-Chipの特徴としては、算するプログラムをコンパイルしてみよう。

●ソースコードがすべて公開されており、（コード2）

無料

Rocket-Chipのダウンロードとビルド
Rocket-Chipのダウンロードとビルドは、
以下のように行う。
（コード4）

Rocket-ChipをRTLシミュレーションす「riscv64-unknown-elf-gcc」
でコンパ● RISC-Vの仕様決定に近いメンバーがる手段として、無料のRTLシミュレーショイルし、spikeで実行する。spikeはRISC-V

開発しているので、最新仕様にかなり追ン・ツールである「Verilator」
を使用するの 命 令 セット・シミュレーターであり、従している。

か、米Synopsys社の有料RTLシミュレー「printf()」呼び出しなどのシステムコール● 開発の経緯がすべてGitHub上で公開

ターである
「VCS」
を使う方法の２つが提にも対応している。
（コード3）

されており、現在でもアップデートが続供されている。使用するツールに応じていており開発が活発。

ディレクトリーが異なるので、適切なディレ

コンパイルし、RISC-Vシミュレーターでそ●ソースコードはVerilogやVHDLではな

クトリーに移動して「make」
コマンドを実の動作を確認することができる。

くChiselと呼ばれるハードウェア開発言

行する。すると現在の構成パラメーター

語で記述されている。

（今回はDefaultConﬁgとした）に応じてこのように、簡単にC言語のプログラムを

Bulletin JASA 2019 Apr. vol.69

13

コード6

$ grep "\[1\] pc=" output/rv64ui-p-add.out
C0:  53763 [1] pc=[0000000824] W[r 0=0000000000000000][0] R[r 8=0000000000000000] R[r0=0000000000000000] inst=[fe0408e3] beqz 
C0:  s0, pc - 1653764 [1] pc=[0000000814] W[r 8=0000000000000000][1] R[r 0=0000000000000000]

R[r20=0000000000000003] inst=[f1402473] csrr 
C0:  8=0000000000000000] inst=[10802023] sw  
C0:  s0, mhartid

53767 [1] pc=[0000000818] W[r 0=0000000000000100][0] R[r 0=0000000000000000] R[rs0, 256(zero)

53773 [1] pc=[000000081c] W[r 0=0000000000000400][1] R[r 8=0000000000000000] R[r0=0000000000000000] inst=[40044403] lbu   s0, 1024(s0)C0:  53781 [1] pc=[0000000820] W[r 8=0000000000000000][1] R[r 8=0000000000000000] R[r3=0000000000000003] inst=[00347413] andi 
C0:  53782 [1] pc=[0000000824] W[r 0=0000000000000000][0] R[r 8=0000000000000000] R[r0=0000000000000000] inst=[fe0408e3] beqz 
C0:  s0, s0, 3
s0, pc - 1653783 [1] pc=[0000000814] W[r 8=0000000000000000][1] R[r 0=0000000000000000]

R[r20=0000000000000003] inst=[f1402473] csrr 
C0:  8=0000000000000000] inst=[10802023] sw  
C0:  s0, mhartid

53786 [1] pc=[0000000818] W[r 0=0000000000000100][0] R[r 0=0000000000000000] R[rs0, 256(zero)

53792 [1] pc=[000000081c] W[r 0=0000000000000400][1] R[r 8=0000000000000000] R[r0=0000000000000000] inst=[40044403] lbu   s0, 1024(s0)
...
コード7

git clone https://github.com/ucb-bar/fpga-zynq.git --recurse-submodules
cd zedboard # zedboard / zybo / zc706のどれかを選択する。
makeVerilogのコードが生成される。
実際にテストベンチを渡してRTLシミュ（コード5）
RTLの実行トレースが出力されているのプログラムカウン
レーターでシミュレーションするためには、 で、見易いように加工する。

ZedBoardを使用したRocketChipのFPGAインプリメント
Rocket-Chipは単体のCPU環境だが、以下のように実行する。以下はRISC-Vのターとアップデートされたレジスタファイル

これを米Xilinx社のFPGAにインプリメン

テストパターンである「rv64ui-p-add（加の情報などが記録されており、テストベンチトするための環境も公開されている（図算命令のテスト）」を実行した結果である。

の実行結果を確認できる。
（コード6）

1）。
「 fpga-zynq」
リポジトリー（https://github.com/ucb-bar/fpga-zynq）
もしくは、「 freedomプラットフォーム」
リポジト
リー（ h t t p s : / / g i t h u b . c o m / s i ﬁ v e /freedom）
である。実はfpga-zynqリポジト
リーはアップデートがほとんど行われていない。freedomプラットフォームならば最新に追従しているのだが、筆者はXilinx社の「ZYNQ」
をメインに使用しているので、
fpga-zynqを使用する。
Rocket-ChipでのZYNQ環境の構築は非常に単純で、fpga-zynqリポジトリーをダウンロードしてから（こちらもRocketChipをサブモジュールとしてダウンロード

図1 RISC-Vの実装であるRocket-Chipは、
Xilinx社のさまざまなボードでサポートされている

14

Bulletin JASA 2019 Apr. vol.69

するためサイズが非常に大きいため要注

特 集 RISC-V
コード8

root@zynq:~# ./fesvr-zynq pk hello
hello!
コード9

root@zynq:~# mkdir /sdcard
root@zynq:~# mount /dev/mmcblk0p1 /sdcard
root@zynq:~# ./fesvr-zynq +disk=/sdcard/riscv/root.bin bbl /sdcard/riscv/vmlinux意）、
ビルドしたいFPGAボードのディレク

た）に差して電源を入れればよい。
こうする

ルから以下のように入力する。
（コード8）

トリーに移動してmakeを実行するだけでことで、まずはArmコア上でPetaLinuxがhelloと表示されれば、Rocket-Chipがある。
これだけで、FPGAのブートに必要なブートされる。ZedBoardからの出力を観FSBL、U-Boot、制御用Armコアのブート測するために、ZedBoardからUSBシリア

さらに、
フロントエンドからRocket-Chipに必要な「PetaLinux」のビルドなどもすべ

ル ポ ートを 接 続 する 。今 回 は 接 続 に上でLinuxを立ち上げることもできる。図3て全自動で行ってくれる。
（コード7）

TeraTermを使用し、図2のような設定をはRocket-Chip上でLinuxをブートさせた

しばらくするとビルド が 完 了する 。 行った。

動作していることを確認できる。

様子である。
（コード9）

R o c k e t - C h i pのVe r i l o gファイルと、

PetaLinuxにログインできたら、次はこのように、R I S C - Vを試してみたいと

Vivadoプロジェクトの生成、そしてFPGA

Rocket-Chipを動作させる。Rocket-Chip

思ったとき、様々な手段が用意されている。

に書き込むためのファイルの生成などすべはZYNQのPL部（ProgrammableLogic

特にFPGAでの実装は、好みのカスタマイて自動的に実行される。
そして、生成された部 ）に 書 き 込 ま れて いるため 、P S 部ズなどが容易なため、RISC-Vの導入を検ビルドファイル群をSDカードに書き込み、 （ProcessingSystem部、
つまりArmコア） 討したい場合には一度試行してみるとよい
ZYNQボード（今回はZedBoardを使用しから制御する必要がある。Armのコンソー

図2 Rocket-Chipの動作を観測するためのTeraTermの設定だろう。

図3 Rocket-Chip上でLinuxをブートさせた様子

Bulletin JASA 2019 Apr. vol.69

15

特集 ● RISC-V

TEEを中心とする
CPUセキュリティーの動向

5

産業技術総合研究所

須崎 有康

スマートフォンでの指紋認証のような漏洩してはいけないデータの処理や、PCでリモートから機密情報を扱う処理を、
OSとは独立してCPUで実行できる仕組みが求められている。

こうした要望を実現するため、最近のCPUには、OSとは独立して安全に実行できる環境を提供する機能「Trusted Execution Environment（TEE）」
が搭載されるようになった。

現状で活用できるTEEとして、
英Arm社の「TrustZone」と米Intel社の「SGX（Software Guard Extensions）
」
がある。
そして、
オープンソース・アーキテクチャーとして普及が進むRISC-Vでも、TEEの機能を取り込む研究が進んできている。
ここでは、それに関係する技術動向を概観する。

TEEとは、OSとは独立して、プログラムをZoneであり、電源投入時からTEE環境を

OSとは独立に実行すること、②それぞれの安全に実行できる環境のことである。
その

用意する。
ここには
「Trusted OS」が実装

TAは独立して実行すること、③信頼された目的や実際の実装は、提供するサービスにされ、その上で「Trusted Application

者のみがTrusted OSとTAを修正できるこ

よって大きく異なる。誤解を恐れずにユー （TA）」
を動かすことが想定されている。後と、④ブートプロセスがSoC（System on

スケースを定義すると、大きく二つに大別者に対応するのがIntel社のSGXであり、 Chip）にバインドされ、TEEファームウエア

できる。一つは、
スマートフォンなどのモバ要求があるたびに独立した実行環境であとTAの真正性と完全性を強制できること、

イルデバイスにおいて、デバイスが得た情る「Enclave」を用意する。RISC-V向けに⑤信頼できるストレージを用意すること、報をOSとは独立して外部に出さずに処理

ついては、
このEnclaveを発展させたTEE⑥ペリフェラルには安全にアクセスするこするようなケース（例えば指紋認証）。
もうの研究が進んでいる。

と、⑦最新の暗号化技術を使うこと、であ

一つは、PCなどで、外部から機密情報を含る。
これらすべての要件を満たすのは、モバんだ処理（例えば暗号通貨に関わる処理） GlobalPlatfromのTEE要件と仕様

イルデバイス型のTEEである。

を依頼する際に、OSとは独立に処理する
ようなケースである。
前者に対応するのがArm社のTrust-

ICカードのセキュリティー仕様を定義しGlobalPlatformでは、CPUがNormalている「GlobalPlatform」
では、TEEとしてWorldとSecure Worldに分かれているこの７つの要件を定義している。
すなわち、①とと想定しており、それぞれで通常のOSと

図1

16Bulletin JASA 2019 Apr. vol.69

GlobalPlatformが定義するTEEの概要図

図2

Trusted OSを起動する。
この様子を図１に示す。Trusted OSは通常のOSと異な

Cortex-AのTrustZone実装概念図のOSとTrusted OSを起動する。

動時に決まるが、CPUコアはSMC命令でArm社のTrustZoneの歴史は古く、 モードが変わるので動的に役割が変わる。

り、
ストレージやI/Oの機能がない。
このた

2003年の「ARMv6K」から導入されていまた、Cortex-Aでは、割込みをSecure

めTAとして、通常のアプリケーションをそる。
ただし、実際に使わるようになったのはWorldとNormal Worldそれぞれに割り当のままでは動かすことはできない。

「ARMv7」「ARMv8」からである。
また、スて、「Fast Interrupt reQuest（FIQ）」
また

マートフォンで 使われている高 性 能のは「Interrupt ReQuest（IRQ）」
として割込

Secure WorldのTAは、通常のOSでア

プリケーションとして動くTA Clientから 「Cortex-A」と、組込みで使われてCPUパ

みを受けつける。

ロード、起動、停止される。
「TA Client」がワーに対する高い応答性が要求される

Cortex-AのTrustZone起動手順を図使うAPIは、「 GlobalPlatform Client「Cortex-M」
ではアーキテクチャーが異な３に示す。図中のBLはBootLoaderのレベAPI」として定義されており、TAがTrust-

る。
ここではCortex-Aを中心にTrust-

ルを表しており、BL1からBL33まである。

ed OSとやり取りを行うAPIは「Global

Zoneを説明する。

電 源 投 入 直 後 に 実 行 され る B L 1 はPlatform Internal Core API」
で定義されCortex-AでのTrustZoneの実装を図B o o t R O MでS o C 固 有のものであり、ている。Internal Core APIはPOSIXと大２に示す。C o r t e x - A では特 権レベル

Secure WorldのEL3（Secure）
で処理さきく異なり、暗号化のためのBig Integerな （Exception Level）が4つあり、Secure -れる。BL1ではBL2である「Trusted Bootどを扱う。

Firmware」
を検出して、EL1で制御を渡WorldとNormal Worldそれぞれでこれら4つを利用してOSを動かすことができる。 す。BL2ではSecure Worldで使うメモリー

Arm TrustZone

Normal WorldとSecure Worldの双方をの確保やペリフェラルの割り当てを行う。
そArmコアは、
モバイルデバイス型のTEE

行き来する際にはSMC命令を実行し、 の後はBL31をSecurWorldのEL3でを代表するCPUコアである。GlobalPlat-

S e c u r e M o n i t o rを通して通 信する。 「Secure Monitor」
を、Secure Worldのformの定義と同様に、CPUをSecure -Secure Worldに割り当てられるハードEL1でSecure OSを、Normal WorldのWorldとNormal Worldに分割して、通常ウェアによってメモリーやペリフェラルが起EL1でNormal OSをそれぞれ起動し、定Bulletin JASA 2019 Apr. vol.69

17図3 Cortex-AのTrustZone起動手順

常状態へ移行する。

と呼ばれる脆弱性れに基づくAPIを提供しており、図中の 「Boomerang Flaw」
TA C l i e n tをTAがそれぞれ 従わせる。 は、多くの実装で生じる。Boomerang -Trusted OS

TA ClientはLinuxの/dev/tee0を通して

Flawは、TAのポイント操作を悪用する攻Cortex-AのTrustZoneでは、
いくつか

TAのロード、起動、終了を管理する。
ロー

撃であり、TrustZoneがSecure WorldののTrusted OSが使われている。商用としてドするTAにはOP-TEEの秘密鍵で署名さ任意のメモリー空間にアクセスできることは「iPhone」の「Secure Enclave」、韓国れた「signature」が付けられており、これを 利 用 す る 。攻 撃 さ れ た T A か ら 、Samsung Electronics社の「Knox」、米をOP-TEEが検証することでロードする。 Normal Worldで機密情報を含むメモ

Qualcomm社の「QTEE」、中国Huawei

また、ロードする際には「UUID」が付けらリー空間にアクセスして情報を盗む。
その社の「TrustedCore」などがある。
オープン

れ、
このUUIDでTAを識別する。TAからTAから攻撃者のNormal Worldのアプリ

ソースとしては、
フィンランのアールト大学

I/Oの要求などは、「/dev/teeprev0」
を通ケーションに伝えるため、Boomerang -の「 O p e n - T E E 」、米 G o o g l e 社 のして、Linux上の「TEE-Supplicant」に要

Flawと呼ばれる。

「Trusty」、Arm用Linuxカーネルを開発求する。

Intel SGX

する 非 営 利 組 織 で ある L i n a r o の「OP-TEE」などがある。
ここでは、我々が

SGXはIntel CPUで2015年にリリース

Arm TrustZoneについての脆弱性はされた「Skylake」
から追加されたセキュリ

図４に O P - T E E の 構 成 図 を 示 す。 いくつか報告されているが、多くはTrust-

ティー機能である。先に説明したように、外OP-TEEではGlobalPlatformが定義する

ed OSおよびTAの実装上の脆弱性であ部からの処理依頼をOSとは独立に行うたClient APIとInternal core APIのそれぞる。
このうち、NDSS2018で発表された

めのハードウエア機 構である。S G Xは使っているOP-TEEを基に説明する。

18

Arm TrustZoneの脆弱性

Bulletin JASA 2019 Apr. vol.69

特 集 RISC-V「Enclave」と呼ぶ隔離された実行環境をては、コンテナの安全な実行するが挙げらないが、FPGAあるいは米Amazon.com社

動的に提供するが、ここでの実行レベルはれる。代 表 的 なプ ロジェクトとしてはのFPGAが使える「AWS」
でも実行できる。

ユーザーレベルである「Ring3」のみであSCONEがあり、オープンソースとして提また、米SiFive社が販売している「RISC-Vる。メモリーもEnclave専用の物理メモ

供されている。

unleashed ボード」上では実際にサンプ

リー空間が割り当てられ、この領域はOSからアクサスされることはない。OSを提供

ルが動作することを筆者が確認している。

RISC-V Sanctum/Keystone
RISC-V TEE WGするための異なる特権レベルはなく、基本

RISC-Vに向けたTEEには、Intel SGX

的にOSをEnclaveで実行することはできを発展させたマサチューセッツ工科大学

Keystoneは大学発の実験的なTEE拡

ない。
また、Arm TrustZoneと異なり、
ペリの「Sanctum」とカリフォルニア大学バー張であるが 、R I S C - V の仕 様を決める

フェラルを使うことができない。割込みがクレイ校の「Keystone」がある。いずれも

RISC-V FoundationでもTEEの仕様策

上がった場合はEnclaveの実行を中断しIntel SGXと同様にEnclaveを動的に作定が進んでいる。
これを進めているのはてOSの割込みハンドラを実行した後に成できるが、特権レベルが1つではなく、複S e c u r i t y C h a p t e r の 下 にあるT E E

Enclaveに戻ってくる機構がある。

数に分かれており、Trusted OSとTAの分

Working Groupであり、米NVIDIA社の離ができる構造になっているが、まだ実装

Joe Xi氏がチェアを務めている。
まだ、仕

例がない。

様は確定していないが、ペリフェラルの分Intel社では、SGXで実行するバイナ
リーが正規にデバイス上で動作することを確認する「Remote Attestation」機能をKeystoneは2018年12月のRISC-V

提供している。Remote AttestationによSummitにおいてオープンソース提供がアり、
デバイス上のBIOS/UEFIが最新である

ナウンスされた。現在の利用方法は3通り離も想定されており、モバイルデバイス型のTEEになる予定である。

NEDO「セある。 ［謝辞］ 本研究成果の一部は、か、enclave内で実行しようとしているバイ （QEMU、FPGA、RISC-V board）
ナリーが意図したものであるかを外部から

QEMUエミュレーターで利用可能であり、 キュアオープンアーキテクチャ基盤技術と確認することができる。

RISC-Vハードウエアがなくても、誰でも動そのAIエッジ応用研究開発」の支援によっ

作を確認することができる。
筆者は試していて実施したものである。

SGXを使った代表的なターゲットとし

図4

OP-TEEの構成図

Bulletin JASA 2019 Apr. vol.69

19