#author("2019-07-04T08:57:07+09:00","","")
#author("2019-07-04T10:08:11+09:00","","")
[[FrontPage]]

*RISC-V [#me0901ed]

*Contents [#oa43a020]

** What is RISC-V ? [#pd40af58]

-''Definition'' ~
An open-source hardware instruction set architecture (ISA) based on established reduced instruction set computer (RISC) principles.~
大学発(カリフォルニア大学バークレー校)のオープンソースで開発されているCPUのISAの一種. ~
現在はGoogleやMicrosoft,IBM, Huaweiなど名だたる企業が参加する一大プロジェクト. ~

[[https://cdn-blog.adafruit.com/uploads/2018/08/Untitled-2.jpg]]~
[[https://blog.adafruit.com/2018/08/29/darkriscv-an-open-source-risc-v-core-for-fpgas/]]~
~

-''Birth story'' ~
UCBはMIPSを開発したが、研究用として新たにRISC-Vが開発.~
従来のCPU開発においては、ISAは特定の企業でのみ利用可能だった.~
~
例~
case x86:~
 IntelとAMDのみ利用可能
~
case ARM;~
 Armにライセンス料を支払う必要あり.(構成にもよるが数千万~数千億)
~
~
チップ開発に, ISAの存在は参入障壁でもあった.~
しかし、RISC-Vはオープンソースであり、ISAを使うためのライセンス料を
支払う必要はない.(BSDライセンスとして提供)~
元々の設計思想として....~
もし良い命令セットがオープンで誰もが利用できるなら、ソフトウェアの再利用が
可能となり、コストも劇的に削減されるだろう.~
また、ハードウェア製造者間の競争が促進され、より多くのリソースを設計に使えるようになり、
ソフトウェア・サポートに使うリソースは少なくできる.~
の2点が考慮されていた.~



**Technical Fetures [#gbb7488c]
RISC-Vの技術的特徴について考えていく ~

-''ISA''~
RISC-Vという名称は,UC Berkeleyが開発した5世代目のメジャーISAが由来.~
とてもシンプルに構成されているISA.~
シンプルな分、もちろんISAの数も少ない.~

---Add~
  add x1,x2,x3 (in RISC-V) == a = b + c (in C)
---Sub~
  sub x3,x4,x5 (in RISC-V) == d = e - f (in C)
---Addi~
  addi x3,x4,-10 (in RISC-V) == f = g - 10(in C)
~
--- a = b + c + d - e (in C)~
 add x10,x1,x2
 add x10,x10,x3
 add x10,x10,x4

--Berkeley RISCアーキテクチャファミリ~
RISC-I->RISC-II->SOAR->SPUR->RISC-V

--Vの意味~
「Variations(バリエーション: 変種)」や「vectors(ベクタ)~

--ISAの構成の記法~
 RV32I or RV64I or RV128I + 拡張命令

--ISA語数の違い~
~
|名前|ISA語数|
|RISC-V  |x                       |
|ARM-32|more than 11x  |
|x86-32 |more than 28x |
~
~
ISAがシンプルなことによって...~
---プロセッサのサイズが小さくなる~
---性能も向上させやすい~
---命令も追加しやすい~
~

--命令がシンプルだと命令数が大きくなるのでは...?~
複雑な命令が存在しない分、同じプログラムをコンパイル
するとトータルで使う命令数は大きくなりがち.~
下記グラフを参照~
RISC-Vの命令セット効率性を示すベンチマークのグラフ.~
x-axis = ベンチマークの名前, y-axis = ベンチマークプログラムを実行するのに必要な命令のバイト数~
---実際,RV32(ここにはないけど)とRV64Gはx86/ARMと比べると大きい時がある~
---しかし、RV64GCは12のうち9の項目で最もバイト数が小さい~

[[https://www.aps-web.jp/academy/risc-v/02/images/fig02.png]]~
[[https://riscv.org/wp-content/uploads/2016/07/Tue1130celio-fusion-finalV2.pdf/]]~
~
--なぜ??~
---Compressed Instruction~
RISC-Vのよりコンパクトな命令セット群であるCompressed Instructionを使用することでトータルの命令長を抑えている.~
デフォルトは32bit長の命令セットだが、Compressed Instructionは16bit長~
~
---Micro Architecture~
例え命令長が長くなってしまっても、実際にプロセッサで実行する際にMicro Fusionという手法で
実行命令数を削減している,~
下記の例だと、2つの命令を1つの命令としてデコードし、LSU(load store unit)で実行される,~
そのため、add命令のために確保されたALUは解放され、後続の命令で使えるため、性能の向上が測れる.~
---例~
 indexed load rd[rs1 + rs2]
 add rd,rs1,rs2
 ld rd,0(rd)
~
-''Number of register''~
RISC-Vは32個のレジスタがある.~
x0-x31~
x0に関しては、常に0の値を持つ.~
つまり変数を持てるのは31個のレジスタ.~

--なぜ32なのか~
Smaller is faster, but too small is	bad.	Goldilocks principle ~
(“This  porridge is	too	hot;	This	porridge	is too cold; this porridge is just right”)~
~
-''Easy to extend ISA''~
RISC-Vは既存の命令セットだけではなく、自分でオリジナルの命令が追加できる.(楽しそう!!)~
以下のマップの赤い四角で囲まれた四つのフィールドはユーザーが定義できる命令マップ.~
[[https://www.aps-web.jp/academy/risc-v/02/images/fig08.png]]~
[[https://riscv.org/wp-content/uploads/2016/07/Tue1130celio-fusion-finalV2.pdf/]]~

~
-''Domain Specific Architectures''~
トランジスタの高速化が鈍化し、電力の提言もスローに.~
トランジスタの高速化が鈍化し、電力の低減もスローに.~
すでにマルチコア化も進んでいる.~
さらなる性能向上には...~
Domain specificなアーキテクチャの導入が必要.~

--Domain specificなアーキテクチャとは?~
特定の分野の処理性能を劇的に向上させるためのプロセッサ命令やユニット.~
少量の回路と電力の追加で、その分野のタスクの大幅な高速化が可能に.~
応用領域としては、機械学習やネットワークの高速パケット処理などが考えられる.~

--このような急速に分野のアルゴリズムが発展する分野の要求に対応するには...~
汎用性のある命令セットのプロセッサ + 命令拡張が容易(オペコードスペースがある)な命令セット~
そのため、オープンソースで命令セット拡張が容易にできるRISC-Vが解として当てはまっている.~
~
~
[[https://cdn-ak.f.st-hatena.com/images/fotolife/k/k0b0/20180211/20180211165732.png]]~
[[https://www.k0b0srecord.com/entry/2018/02/13/115654]]~
~


**Reference [#rc43637b]
-  [[2016 RISC-V Workshop 4 Macro-op Fusion
:https://riscv.org/wp-content/uploads/2016/07/Tue1130celio-fusion-finalV2.pdf]]
-  [[RISC-Vの命令セット
:https://www.aps-web.jp/academy/risc-v/02]]
- [[海外で急激に盛り上がる新CPU命令アーキテクチャ「RISC-V」
:https://pc.watch.impress.co.jp/docs/column/kaigai/1094808.html]]
- [[コンピュータの構成と設計(下):https://www.amazon.co.jp/%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E3%81%AE%E6%A7%8B%E6%88%90%E3%81%A8%E8%A8%AD%E8%A8%88-%E7%AC%AC5%E7%89%88-%E4%B8%8B-%E3%83%87%E3%82%A4%E3%83%93%E3%83%83%E3%83%89%E3%83%BB-%E3%83%BB%E3%83%91%E3%82%BF%E3%83%BC%E3%82%BD%E3%83%B3/dp/4822298434/ref=sr_1_3?keywords=%E3%83%91%E3%82%BF%E3%83%98%E3%83%8D&qid=1560335884&s=gateway&sr=8-3]]




siiba(Ryusei Shiiba)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS