FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

2015-05-01から1ヶ月間の記事一覧

RISC-VのCSR転送命令は何故即値をデコードしないのか?(回答編)

RISC-V のCSR転送命令は何故即値をデコードしないのか? - FPGA開発日記msyksphinz.hatenablog.com の疑問をRISC-Vのチームに聞いてみた。理由としては、即値で数ビットを同時に編集できるほうが用途としては有利だし、ハードウェア的にも軽くなるから、との…

RISC-V のCSR転送命令は何故即値をデコードしないのか?

RISC-Vのシステム系命令には、CSRRSI, CSRCIという命令が存在する。 http://riscv.org/spec/riscv-privileged-spec-v1.7.pdf The CSRRWI, CSRRSI, and CSRRCI variants are similar to CSRRW, CSRRS, and CSRRC respectively, except they update the CSR us…

RISC-V のマイクロ命令セットのドラフト版が公開!

RISC-V Draft Compressed ISA Version 1.7 Released | RISC-V BLOG RISC-Vは基本的に32ビット固定長命令なのだが、これに加えて16ビットのスモールサイズの命令セットが公開された。 ARMで言うところのThumb命令セットみたいなものか。 命令長が16bit レジス…

自作RISC-Vシミュレータを利用してriscv-tests の基本命令セットのテストをしてみた(基本命令全パス)

よっしゃー。基本命令が全パスしたぞ。 msyksphinz/swimmer_riscvgithub.com 修正ポイントは、 AMO命令(アトミック操作命令)を実装 ストアのアドレスを生成するビットフィールドの修正(S-type) あたりかな、機能的のところを実装したら、大体パスした。 まあ…

自作RISC-Vシミュレータを利用してriscv-tests の基本命令セットのテストをしてみた

いろいろとセグるのを修正したり、バグを直したりして、ある程度テストパタンを使ってシミュレータの機能をチェックできるようになった。 そこで、基本命令セットのテストパタンを利用して、現在自作シミュレータがどの程度正しくアーキテクチャをシミュレー…

CMakeでバージョン番号を管理する

CMakeのチュートリアルに書いてあるのだが、CMakeでビルドする度にバージョン番号やリビジョン番号を設定するためには、以下のような方法がある。 http://www.cmake.org/cmake-tutorial/ msyksphinz/swimmer_riscvgithub.com CMakeLists.txtの中で以下のよう…

ビルドシステムとしてCMakeを導入する

RISC-VシミュレータのビルドシステムとしてCMakeを導入してみた。 CMake CMakeは、クロスプラットフォームのビルドシステム。LLVMなどで採用されているものだ。Makefileと違って、Windowsなどでもビルドシステムを構築することができるため、汎用的なシステ…

自作RISC-Vシミュレータを拡張してシステムレジスタを実装する(単純なパタンがPASSするようになった)

だいぶ改造を加えて、自作RISC-VシミュレータがRISC-Vのパタンをパスできるようになってきた。 Func: discard SCALL/SBREAK · msyksphinz/swimmer_riscv@77f45a3github.com どうやら、旧世代に登場していたSCALL/SBREAK命令は取り下げられたらしい。出来立て…

自作RISC-Vシミュレータを拡張してシステムレジスタを実装する(テストパタンを試す)

RISC-Vのシミュレータの実装を続けて、取り敢えずCSRのレジスタを参照できるようにした。 Func: update CSR operation instructions · msyksphinz/swimmer_riscv@cdae2ebgithub.com ところが、riscv-testsで単純な命令を実行してみると、どうやらtohost/from…

はじめてのOSコードリーディング を(とりあえず)読了

はじめてのOSコードリーディング ~UNIX V6で学ぶカーネルのしくみ (Software Design plus)作者: 青柳隆宏出版社/メーカー: 技術評論社発売日: 2013/01/09メディア: 単行本(ソフトカバー)購入: 56人 クリック: 1,959回この商品を含むブログ (29件) を見る …

自作RISC-Vシミュレータを拡張してシステムレジスタを実装する(途中2)

とりあえずCSRのビットフィールドを定義した。 msyksphinz/swimmer_riscvgithub.com $sysreg_table[37] = Array[0x243, 'HRW', 'hbadaddr' , Array[Array[31, 0, 'hbadaddr' , 'RW']]] # temporary implementation $sysreg_table[38] = Array[0xA01, 'HRW', …

自作RISC-Vシミュレータを拡張してシステムレジスタを実装する(途中)

自作RISC-Vシミュレータを作っている。 msyksphinz/swimmer_riscvgithub.com 基本的な整数命令セットしか備えていなかったが、せっかくシステムレベル制御命令とか、システムレジスタの仕様が公開されたので、命令セットシミュレータに追加してみようと思う…

RISC-Vの命令セットテストベンチはどのようになっているのか (最後のPass/Fail判定)

RISC-Vのriscv-testsの最後のテスト判定は、 000024f0 <fail>: 24f0: 0ff0000f fence 24f4: 000e0863 beqz t3,2504 <fail+0x14> 24f8: 001e1e13 slli t3,t3,0x1 24fc: 001e6e13 ori t3,t3,1 2500: 51ee1073 csrw tohost,t3 2504: 0000006f j 2504 <fail+0x14> 00002508 <pass>: 2508: 0ff0000f </pass></fail+0x14></fail+0x14></fail>…

RISC-Vの命令セットテストベンチはどのようになっているのか

RISC-Vには、命令セットをテストするためのテストベンチが付いている。 riscv/riscv-testsgithub.com これを使うと、自前のシミュレータを使ってシミュレータの機能をテストできる。 どのような構造になっているのか調べてみる。 rv32ui-p-add をダンプして…

ベンチマークプログラムをリポジトリとして公開します

CPU

といっても、まだMIPS用ではCoremarkしかないし、Coremark-Proはきちんと移植できていないけど... msyksphinz/benchmarksgithub.com tree . -L 2 -d . ├── archive │ └── mibench ├── coremark_v1.0 │ ├── barebones │ ├── barebones_mips32r5_gcc51_O2 │ ├─…

RISC-Vの開発環境を自動的に構築できる仮想環境を作った

MIPSに続き、こちらも Vagrantfile と Chef ファイルを置いておいた。 やっていることは殆ど同じだ。ただしRISC-Vの方はQEMUなどもあり、パッケージを余計にインストールしているのと、インストールのためにriscv-toolsリポジトリをクローンしてビルドしてい…

MIPS用 GCC5.1 をビルド環境をVagrantで自動的に構築できるようにした

GCC

Vagrantfile と Chef ファイルを置いておいた。 msyksphinz/vagrant-mips51github.com git clone https://github.com/msyksphinz/vagrant-mips51 --recursive # 中でsubmoduleとしてChefのリポジトリを読んでいるので--recursiveが必要 cd vagrant-mips51 va…

binutilsでmips32r5 を使えるように無理矢理改造した話 (あっているのかどうか本当に分からない)

GCC

GCC 5.1でmips32r5とか、mips32r6とかがサポートになったとしても、何故だかコンパイルはできても、リンクが出来ない。 unrecognised emulation mode : -ips32 (詳細メモしておくの忘れた...) どうやら、binutilsがちゃんとこれらのオプションをサポートして…

RISC-V の Privileged Instruction Set の仕様書Ver1.7が公開 (仮想化管理のモード)

RISC-Vの仮想化管理には複数のモードが存在する。 どのように設定するかの調査はさておき、とりあえずどのようなモードがあるのか調査してみよう。 仮想化のモードは、mstatusレジスタのVM[4:0]ビットで設定する。以下のような割付になっている。 0x00 (Mbar…

RISC-V の Privileged Instruction Set の仕様書Ver1.7が公開 (Supervisor Level ISA)

Supervisorレベルの命令は、以下の1命令が定義されていた。 メモリのフェンス、メモリアクセスが全て完了するまでパイプラインを待ち合わせる。 全てのメモリ管理の操作が完了することを保証するもの。 (これってスーパバイザ命令なんだろうか....?)

RISC-V の Privileged Instruction Set の仕様書Ver1.7が公開 (Machine Level ISA)

RISC-V の Privileged Instruction Set の続き。 http://www.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-49.pdf 第3章はMachine-Level ISAの章になっている。Machine-Levelでアクセスできるシステムレジスタの紹介と、命令セットの紹介。 システムレジ…

MIPS用GCC5.1をビルドするVagrant環境を構築してみた

GCCの評価とか、シミュレーションを回したりするのはUbuntuの上でやっているのだけれども、VMware Player上でUbuntuを再構築することが多く、何度もGCCの評価環境を構築し直すことがある。 だんだん面倒になってきたので、最近流行りのVagrantとChefを使って…

RISC-V の Privileged Instruction Set の仕様書Ver1.7が公開 (Control Status Registers)

いわゆるシステムレジスタ群がこのCSR (Control Status Register)に相当する。 CSRはシステムレジスタIDでマッピングされており、これらのアドレスを指定することでアクセスする。 CSRにアクセスできるのは以下の命令になる。 (以下のアーキテクチャ仕様書か…

RISC-V の Privileged Instruction Set の仕様書Ver1.7が公開

今朝MLで飛んでいたが、RISC-VのPrivileged Instruction SetのVer1.7が公開されたようだ。 RISC-V Draft Privileged Architecture Version 1.7 Released | RISC-V BLOG http://www.eecs.berkeley.edu/Pubs/TechRpts/2015/EECS-2015-49.pdf 55ページある。ユ…

MIPS版GCC5.1でアーキテクチャRelease 6を試行

前の記事でも紹介したとおり、GCC 5.1になってMIPS Architecture Release-6 に対応したので、早速ビルドして使ってみた。 ビルドの方法も、今回も例によってVagrantで仮想化してみたので、このやり方も後日まとめておこうと思う。あとChef化したい。 さて、…

GCC 5.1でMIPS Release 6がサポートされている!

GCC

GCC 5 Release Series — Changes, New Features, and Fixes - GNU Project - Free Software Foundation (FSF) GCC5.1 で MIPS Release6がサポートされている!早速使ってみなければ! とは言っても、まだコマンドラインオプションだけサポートとか、実験的な…

RISC-Vの開発環境をVagrantとChefで構築する (2. ChefにRISC-Vの環境をインストールする設定を記述する)

RISC-Vの開発環境をVagrantとChefで構築する (1. Vagrantの環境を立ち上げる) - FPGA開発日記msyksphinz.hatenablog.com の続き。ChefにRISC-Vのインストールする設定を記述していく。 基本的に、前回立ち上げたVagrantの環境(Vagrantfileがあるディレクトリ…

RISC-Vの開発環境をVagrantとChefで構築する (1. Vagrantの環境を立ち上げる)

よくVMの環境を入れ替えたりするのだけれども、その度にRISC-Vの開発環境を入れ直すのが、「どうだっけ?」となるのが面倒なので、 VagrantでUbuntuの仮想マシンを自動的に構築し、Chefを使ってRISC-Vの環境を構築できないか試してみた。 参考にしたのは、 W…