読者です 読者をやめる 読者になる 読者になる

FPGA開発日記

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

RISC-V

RISC-VのSpike-ISSを使ったFreeRTOSの起動ルーティンの解析(3)

前回の続きで、ROMにはさらにいくつかの情報を挿入しなければならない。0x1020から挿入しなければならないのが、以下のRISC-Vのコンフィグレーションに関する情報だ。 前回の記事で紹介した以下のものになる。 platform { vendor ucb; arch spike; }; rtc { …

RISC-VのSpike-ISSを使ったFreeRTOSの起動解析

前回の続きで、どうしても自作ISSとSpike-ISSの動作結果が一致しないところがあり、何が悪いんだろうと調べていた。 まず、spikeにはRISCV_ENABLE_COMMITLOGというログ出力用のフォーマットがある事は紹介した。 これだけでは情報としては不十分で、例えば実…

RISC-V のISS "Spike"のログフォーマットを拡張する方法

RISC-VにはUC-Berkeleyの開発した命令セットシミュレータであるSpikeが存在する。 github.com このSpikeというシミュレータ、高速でLinuxもブートできる優れものなのだが、欠点はログがほとんど見れず、プログラムが誤作動を起こしても何が起きているのかさ…

FreeRTOSをRISC-V Spike ISSで動作させるためのオプション

しばらくFreeRTOSをRISC-Vの自作ISSや、Spikeシミュレータで動作させることが出来ず悩んでいたのだが、いつの間にかSpike-ISSに以下のオプションが追加されているのを発見した。 $ spike --help spike: unrecognized option --help usage: spike [host optio…

FreeRTOS-RISCVの起動シーケンスを追いかける(1)

FreeRTOSの話題の続き。前回FreeRTOSのRISC-V版を少しエミュレータで試してみたものの、何も動作せずに終わっていたのだった。 (そしてそれを特に原因究明せず放置していた。) msyksphinz.hatenablog.com それではあまりにもつまらないので、自作ISSを使って…

RocketChip/BOOMプロセッサの波形ダンプの方法

RISC-VのUC Berkeley実装であるRocketChip/BOOMはエミュレーション時にVerilatorを使用している。 基本的な命令トレースなどは出力することが出来るが、波形を出力するためのオプションが存在する。 make CONFIG=BOOMConfig output/rv64ui-p-add.vcd テスト…

RISC-VがLinley GroupのRISC-V chosen as Best Technology of 2016に選ばれました

riscv.org The Linley Group Announces Winners of Annual Analysts' Choice Awards The Linley Group - The Linley Group Announces Winners of Annual Analysts' Choice Awards まあ私は関係者でもなんでもないんだけど、おめでとうございます。 Linley Gr…

教育用RISC-V実装Clarviの調査 (Modelsim Altera starter editionのインストールとコンパイル)

前回Clarviの調査ということで概要を把握したのだが、SystemVerilogを実行できるシミュレータを持っていなかったため、シミュレーションが実行できなかった。 msyksphinz.hatenablog.com ところがその後各方面から「Modelsim Altera starter editionを使えば…

FreeRTOSのRISC-V移植版

RISC-Vのメーリングリストを読んでいて知ったのだが、FreeRTOSという無償のリアルタイム向けOSがあるらしい。これをRISC-V向けに移植している人がいるそうだ。 www.freertos.org RISC-Vへの移植が進められており、Privilege v.1.9への移植版が公開されていた…

教育用RISC-V実装Clarviの調査

Twitterでvengineerさんに教えてもらった教育用RISC-V実装、Clarviについて簡単に調査してみた。 Clarviは大学が教育用に作成したRISC-Vプロセッサで、もちろんRISC-Vの仕様に完全に準拠しているわけではないが、非常にコンパクトな実装と、教育用に簡単な拡…

RISC-V実装におけるのリグレッションテスト実施方針

RISC-VにおけるテストセットのPass/Fail判定 過去の記事でも少し解説したが、RISC-Vではriscv-testsというテストパタンセットが用意されている。 msyksphinz.hatenablog.com パタンの説明では、どうやら0x8000_1000への書き込みでもってパタンの終了を判定し…

RISC-Vの特権レジスタ群のアクセス権限まとめ

Reserved Writes Ignored, Reads Ignore Values (WIRI) WIRIビットフィールドの例 Reserved Writes Preserve Values, Reads Ignore Values (WPRI) WPRIビットフィールドの例 Write/Read Only Legal Values (WLRL) WLRLビットフィールドの例 Write Any Values…

RISC-Vの特権レジスタ群の割り当てまとめ

訳あってRISC-Vの特権レジスタ群の仕様を読み込んでいるのだが、Privilege Instructionの仕様書をしっかり読むとなかなか面白い。 Chapter-2のControl and Status Registers(CSR)ではCSRレジスタ群についてまずは簡単に分類がされているのだが、いろんなこと…

128bitまで対応したRISC-VエミュレータでLinuxが動く (しかも超高速)

ダウンロードとビルド riscvemuを動作させる riscvemuの実行方法 risvemuを利用したSimple Linuxの起動 シレっとRISC-Vメーリングリストに投稿されたこれ、QEMUの開発者でもあるFabrice BellardがRISC-Vの128bitモードまで対応したエミュレータを開発したと…

RISC-Vのテストパタンセット riscv-tests

最近はほとんどテストベンチのメンテナンスを行っていなかったのだが、Privileged Instructions v1.9.1に対応させるために、久し振りにriscv-testsを使ったISSのリグレッションを実行してみた。 しばらくずっと触っていなかったのだけれども、昔メンテナンス…

BOOM RISC-V実装RTLにてベンチマークを計測する

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の16日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-V 5th Workshopの発表紹介 (RISC-V Vector Extension)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の15日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-VのOoOプロセッサ、BOOMの性能を読み解く(1)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の9日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

組み込み向けプロセッサの性能評価指標、ベンチマークを動作させる

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の9日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-V 5th Workshopの発表紹介 (Fast Instruction Set Simulator)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の7日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-V 5th Workshopの発表紹介 (Time Traveling Coherence Algorithm)

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の6日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-Vの特権命令まとめ

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の5日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-Vアーキテクチャの実装についてまとめ

この記事は ハードウェア開発、CPUアーキテクチャ Advent Calendar 2016 - Qiita の2日目の記事です。 Advent-Calendarを埋めてくれるかた、今からでも募集中です!是非参加してください! 僕一人では、クオリティのある記事を続けられそうにありません。。…

RISC-VのFreeBSD実装をZedBoardで動作させたい(解決したがFPGAで動作不良)

結局、いろいろ調べたところFreeBSDのカーネルを作るのにはもう一段階くらい必要で、 riscv - FreeBSD Wiki のWikiでFreeBSDをビルドする際、 make TARGET_ARCH=riscv64 buildworld の次に、 make TARGET_ARCH=riscv64 KERNCONF=ROCKET buildkernel を追加し…

RISC-VのFreeBSD実装をZedBoardで動作させたい(トラブルあり未解決)

(画像はriscv.org, freebsd.orgより拝借) FreeBSDは現在RISC-Vに移植されており、RISC-Vで動作させることが出来るらしい。 いろいろチュートリアルはあるのだが、まだちゃんと動作させたことが無い。 riscv - FreeBSD Wiki BBLというものをビルドしなければ…

RISC-Vの実装をZedBoardで手っ取り早く試すためのチュートリアル

自分でも良く分からなくなるのでまとめておく。RISC-Vを手っ取り早くFPGAボードで動作させたいときのために、githubからいろんなビルド済みの何かをダウンロードして動作させる方法をまとめておく。 用意するもの FPGAボード (ZedBoard, Zybo, zc706) 私はZe…

MicrosemiのFPGA向けRISC-Vソフトコア

Microsemiが自社のFPGA向けに、RISC-Vのソフトコアを発表した(FPGA向けは世界初ということだが)。 www.newelectronics.co.uk (画像はMicrosemiのウェブサイトより引用。) Microsemiの発表によれば、自社のFPGA(SmartFusionおよびIGLOO)向けのRISC-Vソフトコ…

RISC-Vのトレードマークと商標利用について(1)

RISC-VのMLにて、商標利用およびトレードマークの扱いについて議論が起きている。 正直、商標や、著作権などについては全くの素人のため、あまり詳しい部分は分かっていないのだが、現状のRISC-Vの商標について調べてみた。 ロゴについて riscv.org RISC-V商…

Debian on RISC-V情報

Twitterで知ったのだが、Debian GNU/LinuxのRISC-Vへの移植プロジェクトが進んでいるようだ。先日、メーリングリストが公開された。 New mailing list created for porting Debian to free and open RISC-V CPU arch https://t.co/o2q5TjZ5pj— The Debian Pr…

RISC-V BOOMプロセッサのRTLシミュレーションを実行(VCS用プロジェクトで試行)

前回は、Verilator用の生成ファイルおよび環境を移植して、VeritakでのRTLシミュレーションを試行しようとしたが、シミュレーションが始まらず失敗したのだった。 いろいろ調査していると、Verilator用だけでなく、SynopsysのRTLシミュレータであるVCSでのシ…

RISC-V BOOMプロセッサのRTLシミュレーションを実行したい(Veritakで挑戦→解析中)

RISC-Vのアウトオブオーダ実装であるBOOM (Berkeley Out-of-Order Machine)のRTLシミュレーションは、基本的にverilatorを使って実行されている。 それもそのはず、BOOMはオープンソースハードウェアであるため、オープンソースのシミュレータを使わないと万…

RISC-VプロセッサBOOMを分解 (vhierによる内部構造把握)

RISC-Vプロセッサの実装バリエーションのうち、性能重視のプロセッサであるBOOM (Barkeley Out-of-Order Machine)は、どのような構造で実装されているのだろう。 git clone https://github.com/ucb-bar/rocket-chip.git cd rocket-chip git checkout boom gi…

5th RISC-V workshop @ Google Mountain View のアジェンダが公開されました

5th RISC-V Workshop @ Google Mountain View のアジェンダが公開されました。 riscv.org 日時 : November 29-30, 2016 場所 : Google’s Quad campus (468 Ellis Street, Mountain View, CA 94043) Mountain Viewなんて行けないけど、イベント後には毎回資料…

RISC-Vで実機動作可能な実装まとめ

RISC-Vは、様々なグループ、団体がその実装を行っており、RISC-V Workshopではいくつかの実装の発表も行われている。 そこで、現時点で一般ユーザが入手可能なRISC-Vとしてはどのようなものがあるか、ここでまとめておきたい。 この記事は情報がアップデート…

FreeBSD 11.0でのRISC-V環境生成試行 (4. RISC-V QEMUのビルド)

(画像はriscv.org, freebsd.orgより拝借) RISC-V向けQEMUのビルドでハマったのでメモしておく。 基本的には以下のページを参照してビルドすれば良いのだが、いくつかハマる点がある。パッケージのインストールが必要なのと、環境変数の設定だ。 riscv - Free…

RISC-V BOOMについて (2. ビルド試行とVagrant環境構築)

(画像は riscv.org より拝借) RISC-V BOOMについて、環境構築を行っている。例によってVagrant上にRISC-V BOOMのビルドを行うことのできる環境を作っておきたい。 前回のFreeBSD on RISC-Vの環境と同様に、Vagrant上の環境を作成したのでメモしておく。 msyk…

FreeBSD 11.0でのRISC-V環境生成試行 (3. Vagrantでの環境構築完成)

(画像はriscv.org, freebsd.orgより拝借) 前回、FreeBSD 11.0のRISC-V環境構築を試行したのだが、うまく行かなくて止まってしまっていた。 msyksphinz.hatenablog.com 結局RISC-Vのメーリングリストに質問して、うまく行く方法が分かった。Vagrantの環境を構…

RISC-V BOOMについて、とビルド試行 (1. チェックアウトとビルド、シミュレーションまで)

RISC-Vについては様々な団体からISAを実装したプロセッサコアが登場していうが、そもそもRISC-Vを提唱した Berkeley が開発したRISC-Vプロセッサコアは、以下の2種類であるという理解でいる。 RocketCore BOOM (Berkeley Out-of-Order Machine) RocketCoreに…

FreeBSD 11.0でのRISC-V環境生成試行 (2. ツールチェインがビルドできない問題点)

(画像はriscv.org, freebsd.orgより拝借) msyksphinz.hatenablog.com FreeBSD 11.0でRISC-Vアーキテクチャがサポートされたとのことで、休日にビルド試行を行っていたのだが、どうもまだうまく行かない。 FreeBSDの仮想マシン上でRISC-Vのツールチェインをビ…

FreeBSD 11.0ではRISC-Vをサポートしている (環境構築試行)

(画像はriscv.org, freebsd.orgより拝借) The FreeBSD Project FreeBSD 11.0-RELEASE Announcement FreeBSD 11.0がリリースされた。アーキテクチャのサポートとして、ARM64およびRISC-Vのサポートが追加されたらしい。 FreeBSDは、昔から積極的にRISC-Vをサ…

FreeBSD on RISC-Vのビルド試行(1)

(画像はriscv.org, freebsd.orgより拝借) FreeBSD on RISC-Vの開発が進んでいるという話を以前紹介した。 msyksphinz.hatenablog.com これ、ちゃんとシミュレータや実機で動作させることができるらしい。そうと分かれば、自分でビルドして使ってみたい。 ris…

CPUのテストパタンを自動生成する方式の検討

趣味でRISC-VのCPUコアを設計しているのだが、デバッグおよび性能検証を行うためのパタンが必要になる。 様々なアプリケーションを使って検証すれば良いのだが、網羅的かどうかも分からない。また、基本的な命令セットの性能検証も行う必要がありそうだ。 そ…

FreeBSD on RISC-VとRISC-V近況

FreeBSD on RISC-V あまりフォローしていなかったのだが、FreeBSDのRISC-Vへの移植が進んでいるようだ。 riscv - FreeBSD Wiki サポート状況なのだが、Spike ISSにてサポートが完了しているようだ。また、実機であるRocketChip, QEMUでのエミュレーションも…

xv6ブートとISSの機能拡張(デバッグ用トレースを常にflushさせる)

xv6のブートをRISC-VのISSで再現させている。途中までうまくいっているのだがどこで止まっているのかわからない。そのときは階層トレース機能を使ってどの関数まで飛んできたかをチェックする。 <FunctionCall 183795: main(0x80104ec8)> <FunctionCall 183803: kinit1(0x80103a98)> <FunctionCall 183814: initlock(0x80106d2c)> <Return: initlock> <FunctionCall 183836: freerange(0x80103b38)> </functioncall></return:></functioncall></functioncall></functioncall>

RISC-Vのオペランドフォーマットについて(デコードの容易性とISSの修正)

RISC-Vのオペコードは、取り揃えはおそらくMIPSをベースにしているが、その命令フォーマットはMIPSのそれとは異なっている。 一応、彼らの言い分としてはデコードのしやすさを基準に設計してあるらしいが、それが本当に有用かどうかは正直分からない。 特に…

RISC-Vユーザレベル命令セットVer.2.1が公開

RISC-Vのユーザレベル命令セットの改版Ver.2.1が公開された。 http://www.eecs.berkeley.edu/Pubs/TechRpts/2016/EECS-2016-118.pdf 64ビットよりも大きいデータを扱う命令において、RDフィールドが移動しないためのフォーマット変更 CSR命令を整数命令の章…

RISC-V向けISSの修正(32ビットモードと64ビットモードの混在)

RISC-V向けISSでは、32ビットモードと64bitモードを1つのオプションで混在できるようにしている。 ここ最近、32ビットモードでベンチマークを走らせてどうしても動かない場所があったのだが、突き詰めていくとアドレス計算と符号拡張のところにバグを仕込ん…

CSRのVerilogモデルを自動生成するためのジェネレータ

RISC-V対応のパイプラインプロセッサをちまちま作ってみている。基本的な命令発行制御などはできるようになってきたが、プロセッサとしてベンチマークなどを動作させるために必要になってくるのは、やはりシステムレジスタの実装だ。 RISC-Vのシステムレジス…

RISC-Vのptパタン(timer付きパタン)の調査

画像: UCB-BAR: RISC-V Instruction Set Architecture より。 ISSにRISC-Vのタイマー機能を搭載したら、pt系のパタンが軒並み落ちるようになった。 もともとあまりカバーしていなかった部分なので、これを機にパタンが通るように修正しようとしたのだが、だ…

RISC-VパタンをPASSさせるためのいくつかのISS修正(AMO命令)

画像: UCB-BAR: RISC-V Instruction Set Architecture より。 RISC-Vにおいて、アトミック命令としてAMO命令群が存在している。これは、 メモリリード データ操作 メモリライト、レジスタアクセス をアトミックに実行する。例えば、AMOSWAP命令は amoswap.w …