FPGA開発日記

FPGAというより、コンピュータアーキテクチャかもね! カテゴリ別記事インデックス https://sites.google.com/site/fpgadevelopindex/

RISC-V

RISC-V仕様のFormal表現いろいろ

8th RISC-V Workshop in Barcelona で非常に気になったワーキンググループの一つ、RISC-V Formal Specification について調べた。 Formal Group は、 RISC-Vの仕様を、英語で書かれた仕様書としてだけでなく、マシンでもチェック可能なプログラムのような形…

RISC-V Fedora ディスクイメージを立ち上げるための BBL (Berkeley Boot Loader) をコンパイルする

前回の続き。前回は QEMU for RISC-V のビルド実行 Fedora の vmlinux, bbl, ディスクイメージをダウンロード (http://msyksphinz.hatenablog.com/entry/2018/05/07/040000) まで実施した。次に、フルスクラッチからこれらの環境を作るために以下のことをや…

RISC-V版QEMUでLinuxを立ち上げる試行

QEMU が RISC-Vのプラットフォームに対応した。 v.2.12 から、RISC-Vに対応している。 QEMU ChangeLog/2.12 (RISC-V) ChangeLog/2.12 - QEMU さっそくダウンロードして使ってみる。ついでに、いくつかRISC-Vに対応しているLinuxプラットフォームがあるので試…

2018年のRISC-V Workshopのスケジュールが公開されました

2018年のRISC-V Workshopのスケジュールが公開されたようです。 日本でもRISC-V Day Tokyoの第2回が開催のようですね。 riscv.org RISC-V Workshop in スペイン・バルセロナ (05/07 - 05/10) RISC-V Day 上海 (06/30) RISC-V Workshop in インド・チェンナイ…

RISC-VツールセットをインストールしたDockerコンテナ作成(3. 自作RISC-Vエミュレータのリグレッション)

RISC-V 対応の自作エミュレータを作成している。テストパタンセットであるriscv-toolsがかなりPassできるようになってきた。 前回RISC-Vのツールセットが入ったDockerコンテナを用意したので、RISC-Vのテストパタンセットを動作させてみる。 以下のようなDoc…

RISC-VツールセットをインストールしたDockerコンテナ作成(2. RISC-Vコンテナの作成)

RISC-V 対応の自作エミュレータを作成している。テストパタンセットであるriscv-toolsがかなりPassできるようになってきた。 満足したところで公開したいので、一応リグレッションテストをいつでも実行できるような状態にしておきたい。 とりあえず自分で色…

RISC-Vの32bitモードと64bitモードの動作の違いについて

RISC-V にはRV32とRV64のモードが存在しており、これはアドレッシングモードのみを示しているものと思いがちだが、 RV32 : 汎用レジスタ長は32ビット (XLEN=32) RV64 : 汎用レジスタ長は64ビット (XLEN=64) と決められている。 For RV32, the x registers ar…

RISC-VツールセットをインストールしたDockerコンテナ作成(1. 検討)

RISC-V 対応の自作エミュレータを作成している。テストパタンセットであるriscv-toolsがかなりPassできるようになってきた。 満足したところで公開したいので、一応リグレッションテストをいつでも実行できるような状態にしておきたい。 というわけで、RISC-…

RISC-VのシステムレジスタCSRの定義について

RISC-Vのシステムレジスタの仕様は、RISC-V Privileged ISA Manual に記載されている。 ここにはシステムレジスタCSRの定義がいくつか記述されている。このなかには、いくつかの略語が使われており、CSR内部のフィールドの扱い方が説明されている。 riscv.or…

RISC-Vの浮動小数点命令について

RISC-Vの自作エミュレータを作成している。 テスト自体はriscv-testsリポジトリを使えばよいのだが、パタンが落ちた時の解析がなかなか大変だ。少しずつテストパタンを確認しながら進めている。 特に浮動小数点命令について、 単純にsoftfloatライブラリを使…

RISC-V の メモリプロテクション機構について (PMP : Physical Memory Protection)

RISC-V はどのようなターゲットにも適用することの出来るCPUアーキテクチャを目指している。 それはMPU(Micro Processor Unit) だけでなく MCU(Micro Controller Unit)としても活用することができる。 MCUで多く使用される(MPUもだろうけど) メモリ保護の機…

APSにRISC-Vの記事を寄稿しました (第2回 RISC-Vの命令セット)

APSさんにRISC-Vの記事を寄稿しました。第2回。たぶん1か月に1回くらいの更新です。 www.aps-web.jp 初心者向けとか言いながら、ISAの少し深いところにも立ち寄っています。まあこういう記事に興味を持つ人って、ぶっちゃけあまり初学者じゃないですよね。 A…

RISC-Vの仮想アドレス→物理アドレス変換機構の構成と実装について (Ver.1.10版)

RISC-Vはシンプルな構成を特徴としているISAではあるが、一つの特徴としてMMUの構成があまりシンプルではないということがある。 シンプルなRISC-Vの構成の中で、ハードウェアページテーブルウォークを採用したRISC-Vは、それも一緒に実装しないと仮想アドレ…

RISC-Vテストパタン riscv-tests を使った命令セットシミュレータの検証 (Vモードのテストパタンの解析)

RISC-V の実装や命令セットシミュレータ (Instruction Set Simulator) を作ったとき、その実装の正当性をチェックするためにriscv-toolsのテストパタンを使用するという方法がある。 riscv-testsにはいくつかの種類があって、 rv32ui-p (32-bitモード、整数…

RISC-Vテストパタン riscv-tests を使った命令セットシミュレータの検証 (Vモードのテストパタンの解析)

RISC-V の実装や命令セットシミュレータ (Instruction Set Simulator) を作ったとき、その実装の正当性をチェックするためにriscv-toolsのテストパタンを使用するという方法がある。 riscv-testsにはいくつかの種類があって、 rv32ui-p (32-bitモード、整数…

FireSimを使ってRocket-ChipをAmazon F1インスタンスで動かす試行

FireSim Demo v1.0 on Amazon EC2 F1 | FireSim via kwout RISC-V の実装であるRocket-CoreとかBOOMとか、マルチコアの環境ではどのようになるのだろう?気になることは多い。 とりあえず fpga-zynq リポジトリを使えばシングルコアのRocket-Coreを試すこと…

RISC-Vのカスタマイズ用テンプレートProject-Template を試す

RISC-V にはカスタマイズ用の "Project-Template" というリポジトリが用意されている。これは、自分のRISC-Vのプロジェクトを作成するときに使用するらしい。 Rocket-Chip 用のものと、BOOMを開発したChristopher Celio氏が用意したBOOM templateが用意され…

RISC-V BOOMv2 で命令レイテンシ・スループットを測定する環境の構築 (2. レイテンシ・スループットをRocket-Chipと比較する)

Rocket-Chip で測定したベンチマークプログラムを、アウトオブオーダプロセッサであるBOOMでも測定してみたい。 BOOMはVersion1 (BOOMv1) と Version2 (BOOMv2) が存在しているのだが、とりあえずBOOMv2 で試してみよう。 レイテンシとスループットを測定し…

RISC-V BOOMv2 で命令レイテンシ・スループットを測定する環境の構築 (1. 環境の構築)

Rocket-Chip で測定したベンチマークプログラムを、アウトオブオーダプロセッサであるBOOMでも測定してみたい。 BOOMはVersion1 (BOOMv1) と Version2 (BOOMv2) が存在しているのだが、とりあえずBOOMv2 で試してみよう。 結構試行錯誤しないと動作しなかっ…

Rocket-Chip で命令レイテンシ・スループットを測定する環境の構築 (3. レイテンシ・スループットまとめ)

前回、RISC-V Rocket-Chip を使って、コアの基本体力である命令のレイテンシ・スループットを測定する環境作成に取り掛かった。 整数命令についてはおおよそ測定できるようになった。次は浮動小数点命令だ。四則演算など、基本的なところから手を付けて行き…

Rocket-Chip で命令レイテンシ・スループットを測定する環境の構築 (2. 浮動小数点命令系)

前回、RISC-V Rocket-Chip を使って、コアの基本体力である命令のレイテンシ・スループットを測定する環境作成に取り掛かった。 整数命令についてはおおよそ測定できるようになった。次は浮動小数点命令だ。四則演算など、基本的なところから手を付けて行き…

Rocket-Chip で命令レイテンシ・スループットを測定する環境の構築 (1. 整数命令系)

前回の記事で、Rocket-Chip で任意のプログラムを実行できるような環境が構築できた。 これでRocket-Chipの体力測定ができそうだ。 まずは各命令のレイテンシ・スループットを測定するのがよさそうだ。 命令の実行レイテンシやスループットは、一般的には、…

Rocket-Chip を改造して外部SRAMからプログラムをロードして実行する

RISC-V の実装である Rocket-Chip を改造して、外部にSRAMを接続してそこにプログラムを置き、RISC-V Rocket-Chipからプログラムをフェッチして実行できるようにする。 Rocket-Chipの概観はこうだ。 Rocket-Chip はTileと呼ばれるコアの部分と、そこから外へ…

APSにRISC-Vの記事を寄稿しました (第1回 RISC-V発展の背景)

APSさんにRISC-Vの記事を寄稿しました。たぶん1か月に1回くらいの更新です。 www.aps-web.jp 最初はRISC-Vの紹介から。初心者向けということなので、あまり深い話を乗せるつもりはありませんが、手の出しやすい範囲の、分かりやすい記事を書いていこうかと思…

Chiselを使ったビルド環境を作ってTileLinkの検証環境を作ってみる

Chisel で記述された TileLink は環境を構築するのが大変だ。 そこで、ChiselのTileLinkの実装を最大限活用しつつ、TileLinkのバスを使ったSoCモデルを作成して、モデルを作ってみよう。 github.com Chisel → FIRRTL → Verilog で必要なこと とりあえず試行…

RISC-VのアウトオブオーダプロセッサBOOMの構成について

BOOM(Berkeley Out-of-order Machine)には、基本的に以下の3種類の構成方式がある。 BOOMの情報源 情報源というか、githubくらいしか情報がないのである。 ucb-bar.github.io 図. BOOMv2のマイクロアーキテクチャ (https://content.riscv.org/wp-content/upl…

RISC-V BOOM2 を改造してSoC環境を構築する (1. BOOM2 のブートの仕組み解析)

BOOM (Berkeley Out-of-Order Machine) は、UCBが開発して管理(現在はRISC-VでHPC/AIの参入を発表しているEsperanto?)しているRISC-Vのアウトオブオーダプロセッサだ。 BOOM (Berkeley Out-of-Order Machine) について これまで、BOOMについては以下のような…

Freedom E300 Everywhere を改造して外部SRAMからプログラムをロードして実行する

RISC-V の実装であるFreedom E300 Everywhere を改造して、外部にSRAMを接続してそこにプログラムを置き、RISC-V Rocket-Chipからプログラムをフェッチして実行できるようにする。 オリジナルの構成では、Freedom E300 EverywhereではQSPIが乗っていた部分を…

Freechips Project Rocket-Core と SiFive Freedom E300 Everywhere Rocket-Core のブートシーケンス

RISC-Vの実装であるRocket-Chipは、RISC-Vの最新使用に追従しているため最初に見るべきデザインとしてはよくできているが、 Chiselで記述されており(初心者には)可読性が低い。 外部のSoCプラットフォームについて情報がない ことから、なかなかオリジナルの…

8th RISC-V Workshopはスペイン・バルセロナで開催・発表の募集が開始されました

第8回のRISC-V WorkshopのCall for Paperのアナウンスがありました。 日付 : 2018年5月7日 - 10日 場所 : バルセロナ・スーパーコンピューティング・センター (スペイン・バルセロナ) 発表形式 : 25分または12分 8th RISC-V Workshop Call for Papers - RISC…