RISC-V

重要性

RISC-Vの製作者は、自由に利用可能ないくつものCPUデザインをBSDライセンス下で提供することを目指している。同ライセンスは、RISC-Vチップの設計や派生成果物を、RISC-V自身と同様オープンかつ自由に、またはクローズドで独占的に、作成することを許可する。
対照的に、商業チップ製造者、たとえばARMホールディングスやミップス・テクノロジーズは、彼らの特許を利用するにあたり、相当のライセンス料を課する。彼らはまた、設計の優位性や命令セットを記した文書を渡す前に秘密保持契約を要求する。
CPUの設計開発は、電子論理回路・コンパイラ・オペレーティングシステムにまたがる専門的な知識を要する。プロの設計部隊以外でこうした専門知識を有する組織は極めて稀である。そのため、現代的かつ高品質な汎用コンピュータ命令セットで広く利用可能なものはなく、また学術分野を除けば詳しい解説もなされていない。こうした背景があるため、多くのRISC-Vの貢献者（Contributor）は、RISC-Vをコミュニティの総力による賜物だとみなしている。そうした多くの貢献者からの要求があったことが、RISC-Vが幅広い利用目的に合うように設計された理由の一つに挙げられる。
また、RISC-Vの製作者たちは、CPU設計の検証にあたって、実機・シミュレーション問わず研究・利用の両方の立場での豊富な経験を持っている。RISC-V ISAの直接的な起源は、継続的に行われた学術的なコンピュータ設計プロジェクトにあり、それらのプロジェクトを補佐する狙いもあって始まったものである。

先行開発

「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である。

財団

カリフォルニア大学バークレイ校のKrste Asanovićは、オープンソースのコンピュータシステムが広く普及している状況を認識していた。2010年、彼は「夏の3ヶ月の短期間プロジェクト」の中で、RISC-Vを開発、公開することを決意した。この計画は、研究者や企業のユーザーに役立つものだったため、バークレイ校のデイビッド・パターソンも協力した。もともとパターソンは、バークレイRISCの特性を定めた人物であり、RISC-Vは、彼のRISC-Vの研究プロジェクトの長い経歴の一つである。初期の開発では、DARPAが財政支援を行っていた。
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などがある。

開発動機

RISC-Vの設計者は、命令セットは、ハードウェアとソフトウェアの中間に存在する故に、コンピュータのインタフェースの中心であると主張している。もし、良い命令セットがオープンで誰もが利用できるなら、ソフトウェアの再利用がより可能になり、そのコストは劇的に削減されるだろう。また、ハードウェア製造者間の競争が促進され、ハードウェア製造者は、より多くのリソースを設計に使えるようになり、ソフトウェア・サポートに使うリソースは少なくできる。
彼らの主張によれば、命令セットの設計では新しい設計原理が現れることはほとんどなく、過去40年の中で最も成功した設計はますます似通って来ている。失敗した設計のほとんどは、出資した企業が商業的に失敗したのであり、命令セットが技術的に劣っていたからではない。よって、よく設計されたオープンな命令セットが、十分に確立された設計原理を用いて設計されれば、多くのベンダーが長期間に渡ってサポートする気になるだろう。
先行のオープンなISAのほとんどは、ライセンスにGNU General Public License（GPL）を使用することで、ユーザーにコピーや利用するにあたって、実装をオープンにするようにさせていた。
他の学術目的の設計とは異なり、RISC-V命令セットは、研究内容の説明のための簡略化に最適化するのではなく、実用的なコンピュータに最適化した簡略化にすると宣言されている。この簡略化はコンピュータの速度向上を目的とするが、コストや電力使用量も削減される。この命令セットに含まれるものは、ロード/ストア アーキテクチャ、CPU内部のマルチプレクサを単純化するビット・パターン、簡略化された標準に基いた浮動小数点、アーキテクチャに中立な設計、および、最上位の符号ビットを固定とすることによる符号拡張の高速化である。符号拡張は、しばしば、クリティカル・タイミング・パスになると言われている。
命令セットは、幅広い層のユーザー向けに設計されている。32-、64-、128-ビットの3つのワード幅、様々なサブセットをサポートする。各サブセットの定義は、3つワード幅間で、わずかに変化する。サブセットは、小さな組み込みシステム、パーソナルコンピュータ、ベクタプロセッサを持つスーパーコンピュータ、および、ウェアハウス・スケールのラック・マウント型並列計算マシンをサポートする。
命令セットは、可変長幅で、拡張可能であるため、より多くのエンコード・ビットが追加可能である。ISAには128ビットまで拡張されたバージョンまで予約されている。これは、過去60年の業界の歴史の中で、過去の命令セットでメモリアドレス空間が不足していたことが原因で、取り返しのつかない失敗が起きたことを反映している。2016年現在、128-ビットのISAは、その巨大なメモリシステムに関する知見がほとんどないために、意図的に未定義にされている。
しかしながら、RISC-Vは、設計者の学術利用もサポートしている。整数命令のサブセットは単純であるため、学生が初歩的な練習をすることができ、整数命令サブセットはシンプルなISAであるため、ソフトウェアによる研究用マシンの制御にも利用できる。可変長のISAは、学生の練習と研究のための拡張を可能にする。別定義の特権命令セットを用いれば、OSの研究を、コンパイラを再設計せずにサポートできる。RISC-Vのオープンな知的財産によって、設計を公開したり、再利用したり、修正が可能になる。

ソフトウェア

新しい命令セットを作る際に一般的な問題点は、CPUの設計とソフトウェアが存在しないことであるが、RISC-Vのウェブサイトには、オペレーティングシステムをサポートするために、ユーザーモード命令の仕様と、汎用目的の特権命令セットの予備仕様が用意されている。
オープンソースのCPU設計としては、64-bit Berkeley Out of Order Machine（BOOM）、64-bit Rocket、Berkeleyによる5種類の32-bit Sodor CPUの設計、Clifford Wolfによるpicorv32、Syntacoreによるscr1、ETH Zürich / University of BolognaによるPULPino（Riscy and Zero-Riscy）などが存在する。第3世代のSodor CPUは小型の組み込みCPUに適しているように考えられている。Rocketは小型の低消費電力の個人用中型コンピュータに適している可能性がある。BOOMはRocket向けに作られた命令の多くを使用しており、パーソナルコンピュータ、スーパーコンピュータ、データセンタースケールのコンピュータに適している可能性がある。picorvおよび scr1は32ビットのマイクロコントローラ・ユニット（microcontroller unit; MCU）クラスのRV32IMCのVerilog実装である。PULPinoのコアは、マイクロコントローラ（Zero-Riscy）または組み込み信号処理のためのカスタムDSP拡張を搭載したより強力なRV32IMFC ISA向けの、シンプルなPV32IMC ISAを実装している。
設計用ソフトウェアには設計コンパイラのChiselがあり、デバイスで使用するためのVerilogでの設計工数を削減することができる。ウェブサイトでは、コアの実装をテストするための検証用データが公開されている。
現在利用可能なRISC-Vソフトウェアのツールとしては、GNU Compiler Collection（GCC）ツールチェーン（GDBおよびデバッカーを含む)、LLVMツールチェーン、OVPsim simulator（およびRISC-V Fast Processor Modelsのライブラリ）、Spike simulator、およびQEMU内のシミュレータが存在する。
オペレーティング・システムのサポートも、Linuxカーネル、FreeBSD、NetBSDに存在しているが、特権モード命令は2019年3月14日現在は標準化されていないため、暫定的な対応となっている。RISC-Vアーキテクチャへの予備のFreeBSD移植版は2016年2月にアップストリームに反映され、FreeBSD 11.0で公開された。DebianへのポートおよびFedoraへのポートはすでに安定している。Das U-Bootへのポートが存在する。UEFI仕様v2.7のRISC-Vバインディングおよびtianocoreへのポートは、HPEのエンジニアによって完了しており、アップストリームに反映されることが期待されている。seL4マイクロカーネルのポートも存在する。ウェブブラウザ上でRISC-V Linuxが動作するシミュレータシステムがJavaScriptで書かれている。

設計

ハードウェアのコアはRocket Core Generatorを使用して生成できる。