RISC-V

RISC-V（リスク ファイブ）はカリフォルニア大学バークレー校で開発されオープンソースで提供されている命令セットアーキテクチャである。 
本稿ではISAであるRISC-Vの実装（RISC-Vコア）およびエコシステム（対応OS、開発ツール）を含めて解説する。 
概要.
他の多くの命令セットアーキテクチャ（ISA）設計とは異なり、RISC-V ISAは、使用料のかからないオープンソースライセンスで提供されている。多くの企業がRISC-Vハードウェアを提供したり、発表したりしており、RISC-Vをサポートするオープンソースのオペレーティングシステムが利用可能であり、いくつかの一般的なソフトウェアツールチェーンで命令セットがサポートされている。 
RISC-Vは縮小命令セットコンピュータ (RISC) の原則に基づいている。RISC-V ISAの注目すべき特徴は、ロードストア・アーキテクチャ、CPU内のマルチプレクサを簡素化するビットパターン、IEEE 754浮動小数点、アーキテクチャ的に中立な設計、符号拡張を高速化するために最上位ビットを固定位置に配置することなどである。命令セットは、幅広い用途に対応できるように設計されている。可変幅で拡張可能なので、常により多くのエンコーディングビットを追加することができる。32、64、128ビットの3つのワード幅と、さまざまなサブセットをサポートしている。各サブセットの定義は、3つのワード幅によって若干異なる。サブセットは、小型の組み込みシステム、パーソナルコンピュータ、ベクトルプロセッサを搭載したスーパーコンピュータ、倉庫規模の19インチラックマウント並列コンピュータをサポートしている。
ISAの128ビット伸張版の命令セットスペースが確保されたのは、60年にわたる業界の経験から、最も回復不可能な命令セット設計上の誤りはメモリに対するアドレス空間の不足であることが示されているからである。2016年時点で、128ビットISAは意図的に未定義のままであるが、これは、このような大規模なメモリシステムでの実用的な経験がまだほとんどないためである。
このプロジェクトは2010年にカリフォルニア大学バークレー校で開始されたが、貢献者の多くは大学とは関係のないボランティアである。他のアカデミックな設計は、一般的に説明を簡単にするためだけに最適化されているのに対し、RISC-Vの命令セットは、実用的なコンピュータで使用できるように設計されている。
2019年6月の時点で、ユーザスペースISAのバージョン2.2と特権ISAのバージョン1.11は凍結されており、ソフトウェアとハードウェアの開発を進めることができる。デバッグ仕様は、ドラフトとしてバージョン0.13.2が用意されている。 
開発動機.
オープンなISA.
命令セットアーキテクチャはコンピュータにおけるハードウェアとソフトウェアのインターフェースである。良いISA/インターフェースはソフトウェアの再利用性を上げコストを低減する。また、ハードウェア製造者間の競争が促進され、ハードウェア製造者は、より多くのリソースを設計に使えるようになり、ソフトウェア・サポートに使うリソースは少なくできる。
商業的に成功し広く用いられていたISAはクローズドにライセンシングされてきた。たとえばARMホールディングスやミップス・テクノロジーズは、彼らの特許を利用するにあたり、相当のライセンス料を課する。彼らはまた、設計の優位性や命令セットを記した文書を渡す前に秘密保持契約を要求する。クローズドなISAおよびIPは改変を禁止されるケースが多く、性能向上を目的としたISAの改良や教育を目的としたISAの変更が妨げられていた。このような背景から、オープンかつフリーなISAには一定の需要があった。
RSIC-V以前のオープンISAのほとんどはGNU General Public License（GPL）を使用し、ユーザーにコピーや利用するにあたって実装をオープンにするようにさせていた。RISC-Vでは自由に利用可能なCPUデザインをBSDライセンス下で提供することを目指している。BSDライセンスは、RISC-Vチップの設計や派生成果物を、RISC-V自身と同様オープンかつ自由に、"または"クローズドで独占的に、作成することを許可する。
実用可能かつシンプルなISA.
彼らの主張によれば、命令セットの設計では新しい設計原理が現れることはほとんどなく、過去40年の中で最も成功した設計はますます似通って来ている。失敗した設計のほとんどは、出資した企業が商業的に失敗したのであり、命令セットが技術的に劣っていたからではない。よって、よく設計されたオープンな命令セットが、十分に確立された設計原理を用いて設計されれば、多くのベンダーが長期間に渡ってサポートする気になるだろう。
他の学術目的の設計とは異なり、RISC-V命令セットは、研究内容の説明のための簡略化に最適化するのではなく、実用的なコンピュータに最適化した簡略化にすると宣言されている。この簡略化はコンピュータの速度向上を目的とするが、コストや電力使用量も削減される。この命令セットに含まれるものは、ロード/ストア アーキテクチャ、CPU内部のマルチプレクサを単純化するビット・パターン、簡略化された標準に基いた浮動小数点、アーキテクチャに中立な設計、および、最上位の符号ビットを固定とすることによる符号拡張の高速化である。符号拡張は、しばしば、クリティカル・タイミング・パスになると言われている。
命令セットは、幅広い層のユーザー向けに設計されている。32-、64-、128-ビットの3つのワード幅、様々なサブセットをサポートする。各サブセットの定義は、3つワード幅間で、わずかに変化する。サブセットは、小さな組み込みシステム、パーソナルコンピュータ、ベクタプロセッサを持つスーパーコンピュータ、および、ウェアハウス・スケールのラック・マウント型並列計算マシンをサポートする。
命令セットは、可変長幅で、拡張可能であるため、より多くのエンコード・ビットが追加可能である。ISAには128ビットまで拡張されたバージョンまで予約されている。これは、過去60年の業界の歴史の中で、過去の命令セットでメモリアドレス空間が不足していたことが原因で、取り返しのつかない失敗が起きたことを反映している。2016年現在、128-ビットのISAは、その巨大なメモリシステムに関する知見がほとんどないために、意図的に未定義にされている。
RISC-Vのシンプルさは教育上有効でもある。整数命令のサブセットは単純であるため、学生が初歩的な練習をすることができ、整数命令サブセットはシンプルなISAであるため、ソフトウェアによる研究用マシンの制御にも利用できる。可変長のISAは、学生の練習と研究のための拡張を可能にする。別定義の特権命令セットを用いれば、OSの研究を、コンパイラを再設計せずにサポートできる。RISC-Vのオープンな知的財産によって、設計を公開したり、再利用したり、修正が可能になる。
歴史.
先行開発.
「RISC」という用語は1980年頃に作られた。それ以前は、よりシンプルな設計のコンピュータは効率的な可能性があるといういくつかの知見は存在したが、そのような設計指針はまだ広まってはいなかった。単純で効率的なコンピュータは、常に学術的な関心にとどまっていた。
研究者は、RISC命令セットのDLXを、1990年に初版の『コンピュータ・アーキテクチャ 設計・実現・評価の定量的アプローチ』のために作成した。著者のデイビッド・パターソンは、後にRISC-Vを支援した。しかし、DLXは教育目的用だったため、研究者やホビーストはDLXをFPGAを使って実装したが、商業的には成功しなかった。
ARM CPUのバージョン2とその前は、パブリックドメインの命令セットであり、現在もまだGNUコンパイラコレクションによってサポートされている。このISA向けに、3つのオープンソースのコアが存在するが、もはや製造されていない。
OpenRISCは、DLXをベースとしたオープンソースのISAであり、RISCの実装の1つである。OpenRISCはGCCとLinuxの実装を完全にサポートしているが、商業的な実装は少ない。
RISC-Vという名称は、カリフォルニア大学バークレイ校が発表したRISC ISAの5番目のメジャー・バージョンであることを表している。RISC-Vの前の4つのバージョンは、それぞれRISC-I、RISC-II、SOAR、およびSPURである。
RISC-V財団とRISC-V International.
カリフォルニア大学バークレイ校のクルステ・アサノビッチ（）は、オープンソースのコンピュータシステムが広く普及している状況を認識していた。2010年、彼は「夏の3ヶ月の短期間プロジェクト」の中で、RISC-Vを開発、公開することを決意した。この計画は、研究者や企業のユーザーに役立つものだったため、バークレイ校のデイビッド・パターソンも協力した。もともとパターソンは、バークレイRISCの特性を定めた人物であり、RISC-Vは、彼のRISC-Vの研究プロジェクトの長い経歴の一つである。初期の開発では、DARPAが財政支援を行っていた。
RISC-V財団は2015年に設立された。RISC-V財団をサポートしている組織としては、アドバンスト・マイクロ・デバイセズ、Andes Technology、BAEシステムズ、Berkeley Architecture Research、Bluespec, Inc.、Cortus、Google、GreenWaves Technologies、ヒューレット・パッカード・エンタープライズ、華為技術、IBM、Imperas Software、中国科学院、IIT Madras、ラティスセミコンダクター、Mellanox Technologies、Microsemi、マイクロン・テクノロジ、NVIDIA、NXPセミコンダクターズ、オラクル、クアルコム、Cryptography Research、ウェスタン・デジタル、SiFiveなどがある。
2019年11月に、RISC-V財団は米国の貿易制限に対する懸念からスイスへの移転を表明し、2020年3月にはスイスの国際交流協会RISC-V Internationalが設立された。
RISC-V Internationalは、RISC-Vをソフトウェアおよびハードウェア設計に自由に利用できるようRISC-Vの仕様を公開している。仕様の策定はRISC-V Internationalの会員により行われる。さらに、会員組織は製品に対して「RISC-V Compatible™」ロゴの使用を許可される。
実装.
RISC-Vオーガニゼーションは、RISC-VのCPUとSoCの実装リストを管理している。 
既存.
既存の商用実装には以下のようなものがある。
オープンソース.
以下のように多くのオープンソースのRISC-V CPUの設計（IP）がある。
ソフトウェア.
新しい命令セットを作る際に一般的な問題点は、CPUの設計とソフトウェアが存在しないことである。
現在利用可能なRISC-Vソフトウェアのツールとしては以下が挙げられる：
UEFI仕様v2.7のRISC-Vバインディングおよびtianocoreへのポートは、HPEのエンジニアによって完了しており、アップストリームに反映されることが期待されている。seL4マイクロカーネルのポートも存在する。ウェブブラウザ上でRISC-V Linuxが動作するシミュレータシステムがJavaScriptで書かれている。
OSサポート.
RISC-VではOSをサポートするために、ユーザーモード命令の仕様と汎用目的の特権命令セットの予備仕様が用意されている。OSのサポートはLinuxカーネル、FreeBSD、NetBSDに存在しているが、特権モード命令はは標準化されていないため、暫定的な対応となっている。RISC-Vアーキテクチャへの予備のFreeBSD移植版は2016年2月にアップストリームに反映され、FreeBSD 11.0で公開された。DebianへのポートおよびFedoraへのポートはすでに安定している。Das U-Bootへのポートが存在する。
設計.
設計用ソフトウェアには設計コンパイラのChiselがあり、デバイスで使用するためのVerilogでの設計工数を削減することができる。ウェブサイトでは、コアの実装をテストするための検証用データが公開されている。
ハードウェアのコアはRocket Core Generatorを使用して生成できる。