竹下世界塔の計算機よもやま話

アクセスカウンタ

zoom RSS シンプルでオープンな命令セットアーキテクチャ RISC-V

<<   作成日時 : 2014/08/21 00:56   >>

面白い ブログ気持玉 1 / トラックバック 0 / コメント 0

The RISC-V Instruction Set Architecture
Low RISC

RISC-V: An Open Standard for SoCs The case for an open ISA Krste Asanović & David Patterson, UC Berkeley
RISC creator is pushing open source chips for cloud computing and the internet of things
 
 オープンな標準化、TCP/IPやLinuxといったオープンソースソフトウエアで工業は進化したのになぜもっとも重要なインターフェースのひとつはプロプライエタリなのだろう?歴史的な理由、ビジネスの関係から命令セットはプロプライエタリだが、フリーであるべき、と。

 アーキテクトはKrste AsanovićDavid A. Patterson。パターソンはおなじみですね。(RISC I/RISC II →SPARC)

 これはHOTCHIPS25(2013年)のポスター。
 http://www.hotchips.org/wp-content/uploads/hc_archives/hc25/HC25-posters/HC25.26.p70-RISC-V-Warterman-UCB.pdf(PDF)

 これによると:

なぜ新しい命令セットアーキテクチャなのか
現実的でシンプルな命令セットアーキテクチャ(ISA)
完全にオープンなISA
特定のマイクロアーキテクチャ形式や実装技術を避ける
ただしそれらの効率のよい実装は可能にする

RISC-Vベース ユーザーレベルISA
32bit長命令セット
首尾一貫したレジスタの指定位置
圧縮エンコーディングとISA拡張での命令長拡張をサポート
RV32Iでは45命令、RV64Iでは12命令追加
ロードストアアーキテクチャ
マルチプロセッサ間の同期 fetch&opとload-reserved/store-conditional
効率的な位置独立コードをサポート
ディレイスロットなし

RISC-Vのゴール
デスクトップ/サーバ向けの64bitアドレス空間サポート
小規模、省電力のための32bitアドレス空間サポート
IEEE754-2008R実装
ISA拡張が容易、バリエーションも作れる
ハーパーバイザ開発を簡単にするために完全仮想化が可能
高度なマルチコア/マルチプロセッサ実装をサポート
教育目的のためのシンプルなサブセットと新しい実装を立ち上げるための複雑さを縮小

45nm RISC-V Processor IBM 45nm SOI(Siricon On Insulator)で1GHz超

RISC-VスーパーバイザISA
ユーザモードとスーパバイザモードのISAは、異なったスーパバイザの実装をやりやすくするために分けて定義する
現在のRV64 スーパーバイザISAは:
3レベルページテーブル;ページサイズは8K/8M/8GB
内部プロセッサ割り込み ?
タイマ
ホストマシンとの接続。ディスクやフレームバッファのため

RISC-Vソフトウェアエコシステム
GCC4.6.1+newlib,glibc
Linux/Akaros cloud research operating system
python3
LLVMは近い将来サポート

Rocket シングルイシュー インオーダのRISC-V実装
ZedBoardでLinuxのデモ

実装例:
https://github.com/ucb-bar
https://github.com/tommythorn/yarvi

qemuによるエミュレータ。MacOSXの環境にてMethod 1はあっさり動いた。
riscv-qemu

 ユーザレベルのInstructionSetArchitecture仕様書。
https://s3-us-west-1.amazonaws.com/riscv.org/riscv-spec-v2.0.pdf

 仕様書を読んでみる。条件フラグ関連を除き、ヘネパタ初版で使われていた仮想のRISC、DLX命令セットに似ている。

・32bitを基本とした可変長命令。頻度の高い命令は16bit長。→ARMのThumb命令のような後付けではない。どちらかと言えばTRONCHIPに似ている。
・プレフィックス指定でVLIW向けの命令グルーピングも考慮してある。
・リトルエンディアン。→理由としては普及したARMやx86に合わせたとあるが、この方が自然。
・整数基本命令I、乗除算命令M、アトミック操作命令A、単精度浮動小数点演算命令F、倍精度浮動小数点命令Dと分類してある。実装によりIMA、IMAFD(=G)と呼んでいる。
・Q(四倍精度浮動小数点)、L(BCD浮動小数点)が定義してある。
・C(圧縮)、B(ビット操作)、T(トランザクショナルメモリ)、P(Packed-SIMD)も定義。
・これらを基本に必要な命令を拡張しやすくしてある。

・汎用レジスタはx1-x31の31本。x0はゼロレジスタ。それとプログラムカウンタのみで、条件フラグや特殊なレジスタはない。
・乗除算命令のオーバーフローなどでトラップは発生しないが、結果で判断できる。
・除算命令と剰余命令を連続させ1命令の様に扱うと実装により性能向上。
・キャリー/ボローはない。
・レジスタのビット幅は任意。ビット幅はXLEN命令で取得できる。
・ディレイド分岐命令はない。
・静的分岐予測のヒントはない。
・分岐命令は比較を合わせたCompare&Branch命令。1命令で2レジスタを比較して飛ぶ。
・メモリコンシステンシはRelax Ordering。ロードやストアが入れ替わっても良い。→実装による。単純な実装だとStrong Orderingになるでしょう。
・メモリに対するアトミック命令としてLR/SC命令とCAS命令がある。
・ロード/ストア命令はアライメントをまたいでも例外は発生しない。遅くなるだけ。
・アセンブラのニーモニックはMIPSに似ている。

 印象としてはMIPS→Alpha→RISC-Vと進化してるのではないかな。ロードストアアーキテクチャの最新のかたち。


 さて、これを読んで自信を深めることができたよ。ぼくのかんがえたさいきょうCPUとして色々考えていたことと方向は合っていたようだ。

テーマ

注目テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ
気持玉数 : 1
面白い

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文




シンプルでオープンな命令セットアーキテクチャ RISC-V 竹下世界塔の計算機よもやま話/BIGLOBEウェブリブログ
文字サイズ:       閉じる