FPGA開発日記

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

2016-11-01から1ヶ月間の記事一覧

自作プロセッサの性能解析とその対策(7. コンパイラ最適化オプションの調整)

CPU

前回の記事で、-O3付きでコンパイルできないという問題が残っていたのだが、それを何とか回避できないか試行してみた。 そもそも-O3とはどのようなオプションなのだろうか?調査してみると、-O2に対して以下の最適化オプションを追加したものが-O3らしい。 g…

自作プロセッサの性能解析とその対策(6. コンパイラの最適化オプション追加とそれによる性能変化)

CPU

だんだんネタも無くなってきたので、CoremarkをRISC-VのGCCでコンパイルするにあたり、本当に最適なオプションになっていたのかを調査してみようと思う。 以前までのCoremarkは、以下のオプションでコンパイルしていた。 PORT_CFLAGS = -O2 -g $(MACHINE_TAR…

自作プロセッサの性能解析とその対策(5. タグフォワーディング)

CPU

リザベーションステーションを実装していると、連続して同じレジスタを使うような命令が連続する場合、通常の実装ではどうしてもストールが1サイクル入ってしまう問題があった。 上記のような演算器の実装をしていると、どうしても演算器の結果の直後にFFが…

CUIからVivadoを立ち上げて論理合成するためのスクリプト

自作RISC-Vプロセッサの設計もおおよそ完了してきたので、FPGA向けに論理合成する環境を構築している。 GUIを立ち上げてボタンをポチポチ押すのはあまり好きではないので、VivadoをCUIで立ち上げて動作させる環境を構築した。 VivadoのtclはDesign Compiler…

自作プロセッサの性能解析とその対策(4. 分岐予測アルゴリズムの改善)

CPU

自作RISC-Vプロセッサの性能向上対策その4。分岐予測アルゴリズムを、4ステートの分岐予測方式に切り替える。 これまでは、単純な2ステートの分岐予測アルゴリズムを利用していた。 当該命令で分岐すると、次に同じ命令では分岐と予測する 当該命令で分岐し…

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…

自作プロセッサの性能解析とその対策(3. Loadデータのレイテンシを1つ削減)

CPU

自作RISC-Vプロセッサの性能向上対策その3。 ロード命令のレイテンシは、プロセッサの性能に重大な影響を与えることは既知の通りだ。 プロセッサのLoad-Useの性能を向上させるために、ロード命令のレイテンシを1つ短縮しよう。 もともとこれはロード処理の直…

自作プロセッサの性能解析とその対策(2. 分岐命令用エントリ数の増強)

CPU

自作RISC-Vプロセッサの性能解析をしているのだが、パイプライントレースを解析していてまず気になったのは、分岐予測の結果が悪いことだ。 分岐予測では、即値による分岐、PC相対分岐をターゲットにしており、単純な分岐ではあるがそれなりにヒットするはず…

自作プロセッサの性能解析とその対策(1.ReservationStationエントリ数と性能の関係)

CPU

自作プロセッサにおいて、性能面でどうしても納得出来ないところがあり、調査していた。 (Cm13,53)[PC=000017a8] R15<=00008184 : LW r15,0x004,r11 (46) 909 (Cm14,--)[PC=000017ac] : SH r13,0x002,r15 910 (Cm18,31)[PC=000017bc] R14<=00000003 : ANDI r…

FPGA開発日記 記事整理インデックスを更新しました

FPGA開発日記の記事整理インデックスを更新して、ここ数ヶ月の記事を追加しました。 FPGA開発日記 記事整理インデックス 主に、 FreeBSD on RISC-V情報 Vivado HLS試行 あたりが追加されています。

L1データキャッシュの実装設計(LSUとの接続部の設計)

L1データキャッシュについて、ロード命令とストア命令を1つのキューで制御した場合、コミットの制御とフラッシュの制御が面倒になる、というのを前回までで考えた。 msyksphinz.hatenablog.com そのときの解決策の一つとして、ロード命令も一旦コミットを待…

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

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

L1データキャッシュの実装設計(LSUとの接続部の検討)

CPU

L1データキャッシュは、L1命令キャッシュと違って書き込みにも対応する必要がある。もちろん、LSUもReadとWriteを同様に対応しなければならないのだが、いくつかの問題にぶち当たった。 一般的なLSUの構成 一般的なLSUの構成は、Hisa Ando氏の本にあるように…

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

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

L1データキャッシュの実装検討(ステートマシン作成)

CPU

前回までの実装で分岐予測の機構までは実装できたが、L1データキャッシュの実装がまだできていない。 L1命令キャッシュの実装は完了しているのだが、L1データキャッシュは、さらに以下の実装が必要だろう。 データ書き込み処理 データ書き込み時の、キャッシ…

分岐予測実装に関する考察と実装(3. 自作RISC-Vプロセッサを使った実験)

CPU

前回までで、分岐予測の実装についておおよそ解説した。分岐予測は、 予測を早いステージで実行する。複数命令を同時に実行する場合は、どのウェイを有効にするかよく考えること 予測結果は分岐ユニットで判別する。無条件分岐命令でも、レジスタ相対ジャン…

分岐予測実装に関する考察(2. 分岐予測の結果反映と、結果のリプレース)

CPU

前回の続き。分岐予測を実行するところまで書いたが、今度は分岐が当たったかどうかを調査しなければならない。 msyksphinz.hatenablog.com 分岐予測の成功条件、分岐予測の更新条件 分岐予測に成功した、というのは何だろうか? 当該命令が「予測した」命令…

分岐予測実装に関する考察(1. 分岐予測する場所と、フェッチラインの考察)

CPU

2016/11/09 図に誤りあり。一部差し替えました。 CPUにおける分岐予測といえば、複数命令を同時発行させる現代のCPUにおいて不可欠な技術であり、投機実行の技術を支える重要な高速化技法であるが、だいたいのの解説書の場合、以下のような記述で説明がなさ…

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…

FreeBSD on ZedBoardを試行(3. PreBuild Imageをブートしたがpackageのインストールで失敗)

前回、FreeBSD on ZedBoardの起動に成功したのだが、パッケージをビルドしようとすると詰まってしまった。 msyksphinz.hatenablog.com msyksphinz.hatenablog.com apacheをインストールしてサーバを立ち上げてみようと思ったのだが、no space left on device…

「ゼロから作るディープラーニング」を買った

しばらくAmazonで品切れになっていたのだけれども、ふと見ると紀伊国屋で1冊だけ在庫があって、さっそく注文したら2日くらい発送に時間がかかって、そうこうしている内にAmazonで在庫復活という得したのか分からない状態で入手した。 最初のPythonのあたりは…

FreeBSD on ZedBoardを試行(2. PreBuild Imageをダウンロードして試行)

前回、途中でビルドの方法が分からず詰まってしまったので、既にビルドされているSDカード用イメージをダウンロードし書き込みを行い、ZedBoardでブートの試行を行ってみた。 msyksphinz.hatenablog.com ZedBoard用FreeBSDのプレビルドバイナリ ZedBoard用Fr…

ZedBoard向けFreeBSDのビルド試行

ZedBoard向けにFreeBSDをビルドすることができるらしい。つまり、ZynqのARM用にFreeBSDをビルドすることができるということか。 これまでいろいろ試行していたのは、RISC-V向けのFreeBSDのビルドだ。だが、FreeBSDをZynqのARMで動作させることができれば、こ…

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

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

はてなブログ5周年ありがとうキャンペーンお題第1弾「はてなブロガーに5つの質問」

オリジナルボールペン&ミニノートほしいにゃー。 はてなブログ5周年ありがとうキャンペーンお題第1弾「はてなブロガーに5つの質問」 1.はてなブログを始めたきっかけは何ですか? 何かしら情報発信をしたくて。技術的な情報は、もちろん自分で勉強すること…

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…