FrontPage

RISC-V

Contents

What is RISC-V ?

  • 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

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-Vx
    ARM-32more than 11x
    x86-32more 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”)


  • 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

siiba(Ryusei Shiiba)


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2019-07-04 (木) 10:08:11 (817d)