k0b0's record.

Computer Engineering, Arts and Books

RISC-Vについて

f:id:k0b0:20180117142129p:plain

最近、注目を集めているRISC-Vについてメモ。

RISC-Vって?

 RISC-Vは、カリフォルニア大学バークレイ校(UCB)のKreste Asanović教授、David Patterson教授らが中心になって開発したRISCのISA(Instruction Set Architecture)である。UCBはコンピュータアーキテクチャ研究の名門であり、1981年に発表されたRISC-1からのRISCプロセサの開発の歴史がある。RISC-Vはこの歴史の流れで5代目であるRISCアーキテクチャであるので、V(ファイブ)と名付けられている。

 RISC-VはISAであり、どのようなレジスタや命令があり、各命令を実行すると、レジスタやメモリの状態がどう変わるかということを定義している。一方、それをどのように実装するかというマイクロアーキテクチャは規定していない。つまり、マイクロアーキテクチャを設計する立場からするとISAに準拠して設計すれば問題なく、様々な工夫やアイディアをマイクロアーキテクチャに組み込むことができる。

なんでRISC-Vが必要なの?

IntelやARMのプロセッサじゃダメなの?

 Intel、ARMなどのアーキテクチャはオープンではなく、事実上、他社がIntelアーキテクチャのプロセッサを開発することはできない。一方、ARMアーキテクチャのプロセッサを開発するには、ARMからライセンスを購入する必要があり、相当な額のライセンス料を払う必要がある。それと比較してRISC-Vのようなオープンなアーキテクチャではこのようなコストはなく、誰でも自由に開発することができる。

(要するにライセンス料等のお金をかけずに、オープンなISAに基づいてプロセッサが自由に開発できるよというお話。)

・オープンなISAの標準がない!?

 OS、コンパイラ、ネットワーク等の分野では誰でも無償で使える標準があり、その標準に基づいて多くの製品が開発されている。しかし、マイクロプロセッサのISAはオープンな標準はなく、異なるISAのプロセッサ間での開発やプログラムの移植にはそれなりの手間がかかる。

 リコンパイルすれば、新しいISAのプロセッサのバイナリプログラムが作れるので問題ないように思えるが、リコンパイルするための新しいISAに対応したコンパイラを開発する必要がある。加えて、デバッガやその他の開発ツールも作る必要がある。また、リコンパイルしたプログラムが正常に動作するか検証する必要もある。このような観点から、RISC-Vのような標準ISAが整備され、それを利用してプロセッサを設計すれば、このような開発コストを削減することができると考えられる。

(要するに統一して標準ISAでプロセッサを設計しとけば、プログラムの移植とかデバッガ等の整備に手間をかけなくてすみますよというお話。)

RISC-Vの設計思想と特徴

  • 命令数の少ないシンプルな命令セット
  • ベースISAと拡張ISAからなるモジュラー設計
  • 命令セットの拡張や特殊化が容易(Domain-Specific Architecture(DSA))
  • 遅延スロットなし
  • フラグなし

RISC-V ISA

  命令セット
アーキテクチャ
内容
基本命令 RV32I 32ビット・アーキテクチャ 整数命令
32ビット汎用レジスタ×32本
RV32E 32ビット・アーキテクチャ 整数命令
32ビット汎用レジスタ×16本
RV64I 64ビット・アーキテクチャ 整数命令
64ビット汎用レジスタ×32本
RV128I 128ビット・アーキテクチャ 整数命令
128ビット汎用レジスタ×32本
拡張命令 M 整数乗算命令・整数除算命令
A アトミックアクセス命令(メモリアクセス時に他のバス・マスタのアクセスを許可しない)
F 単精度浮動小数点演算命令(32ビット)
D 倍精度浮動小数点演算命令(64ビット)
Q 4倍精度浮動小数点演算命令(128ビット)
L 10進浮動小数点演算命令(128ビット)
C 短縮命令(16ビット長命令)
B ビット操作命令
J 動的言語対応命令(javajavascript等の動的チェックやガーべジ・コレクション)
T ソフトウェア・トランザクショナルメモリ対応命令(並列計算の共有メモリアクセス)
P パックド形式SIMD命令
V ベクタ演算命令
N ユーザ・レベル割り込み対応命令

(※ Interface 2018 2号 p106から引用)

参考

riscv.org

news.mynavi.jp