2024-06-01から1ヶ月間の記事一覧 - FPGA開発日記

FPGA開発日記

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

2024-06-01から1ヶ月間の記事一覧

CPUのRunahead実行に関する資料を読む(3. AVD予測)

ちょっといろいろとCPUの投機実行について調べる必要があって,Runahead実行についていい資料があったのでまとめてみることにした. 資料自体は以下:Runahead Executionを最初に提案した Onur Mutlu 先生直々の講義資料なので,これを読めばまあ間違いなか…

RISC-V Summit in Europe 2024 でのいろんな出来事

SiFive の Essential シリーズの第4世代が発表 そもそもEssential シリーズに世代があることを知らなかったのだが,第4世代のEssential シリーズがリリースされた. Essential シリーズは SiFive の中では性能ではなくコストパフォーマンスを重視した製品群(…

CPUのRunahead実行に関する資料を読む(2. 概要)

ちょっといろいろとCPUの投機実行について調べる必要があって,Runahead実行についていい資料があったのでまとめてみることにした. 資料自体は以下:Runahead Executionを最初に提案した Onur Mutlu 先生直々の講義資料なので,これを読めばまあ間違いなか…

CPUのRunahead実行に関する資料を読む(1. 概要)

ちょっといろいろとCPUの投機実行について調べる必要があって,Runahead実行についていい資料があったのでまとめてみることにした. 資料自体は以下:Runahead Executionを最初に提案した Onur Mutlu 先生直々の講義資料なので,これを読めばまあ間違いなか…

自作CPUの動作周波数改善検討 (4. フロントエンドの実装全体を検討する)

RVCの実装からフロントエンド全体の実装まで考え直して,一応の方針を立てることにした. 全体的なモジュールとしては,まず命令キャッシュからの命令ブロックを受け取り,これをRVC解析用のモジュールに通す. デコード済みの命令を格納する命令バッファは…

自作CPUの動作周波数改善検討 (3. RVCのデコード方法検討)

RVCの判定条件に付いて,もうちょっと考え直した. ある16ビット命令グループが,命令の下位16ビットグループであるというのは,以下の条件のどちらかであるはずだ. これを, inst_16bit_valid[7:0] として,inst_16bit_valid[i] が命令の下位16ビットグル…

自作CPUのVIPTキャッシュポリシ導入検討 (9. AAPGのデバッグ)

自作CPUのVIPT化について,テストを強化してAAPGで実行してみようと思う. とりあえずバグの解析と問題の特定ができた.これはVIPTに関係なく発生する問題のように思えたけど,それでもとりあえずその部分を修正すると正しくPASSするようになった. 修正後の…

自作CPUのVIPTキャッシュポリシ導入検討 (8. AAPGでのランダムテスト)

自作CPUのVIPT化について,テストを強化してAAPGで実行してみようと思う. AAPGの実行方法はかなり昔に確立した.以下のようなコマンドで,AAPGのランダムテストの生成からパタンの実行まで行ってくれる. for config in `ls -1 ../tests/aapg/configs/core_…

自作CPUの動作周波数改善検討 (2. RVCデコーダの改善検討)

RVCの判定条件に付いて,もう少し考えを推し進めた. まず,insn_rvcの生成方法だが,これを正確に生成することがまず難しい. 例えばデコードブロックのサイズが128-bitの場合,8つの16-bitブロックに分割してRVC判定を行うことになる. しかし,ここでRVC…

自作CPUの動作周波数改善検討 (1. RVCデコーダの改善検討)

自作CPUのフロントエンドデコーダ部分が非常に重たいのだが,この改良を考えている. 重たい部分というのは,RVC命令(16-bit命令)を拡張して32-bit命令に変換する部分だ. RVC命令は32-bit命令(RVI命令)の中に混在して現れ,しかもRVCをサポートしている環境…

GCCのiquoteオプションについて

GCCのiquoteオプションを初めて知った. gcc.gnu.org 要するに,-Iオプションとの違いは, -I オプションは #include <file> と #include "file" の両方のファイルの検索に使われる -iquote オプションは #include "file" の検索にのみ使われる ということらしい.</file>…

自作CPUのSpikeモデルシミュレータ環境の変更 (5. Spikeの挙動解析と環境修正)

自作CPUのSpikeシミュレータをかなり久しぶりにアップデートすると、いろんな関数が変わっていてかなり戸惑ってしまった。 Spikeの挙動にも若干の変換がみられるか?Misalignedのアクセスにおいても,例外が発生するとともに命令のトレースログにも残ってい…

自作CPUの動作周波数改善検討 (フロントエンドデコード処理対応検討)

フロントエンドの,デコーダの部分が非常に重たい. Slack (VIOLATED) : -17.096ns (required time - arrival time) Source: u_scariv_tile/u_frontend/u_scariv_inst_buffer/u_inst_queue/r_outptr_reg[1]/C (rising edge-triggered cell FDCE clocked by i…

Register Flush-free Runahead Execution for Modern Vector Processorsを読む(1)

ベクトルアーキテクチャに関して面白そうな論文があったので読んでみることにした: https://ieeexplore.ieee.org/document/9651636 Register Flush-free Runahead Execution for Modern Vector Processors 現代のベクトルプロセッサにおいて,ベクトル・ロ…

マイクロアーキテクチャ・シミュレータのトレースログに必要な情報の解析についての論文を読む (5)

前回の続き: msyksphinz.hatenablog.com msyksphinz.hatenablog.com 4. 手法と結果 CVP-1トレースをChampSimフォーマットに変換した後でChampSimのメインブランチで変更の影響を評価した. フロントエンドの分岐予測では,16KエントリのBTBと64KBのITTAGEと…

マイクロアーキテクチャ・シミュレータのトレースログに必要な情報の解析についての論文を読む (4)

前回の続き: msyksphinz.hatenablog.com msyksphinz.hatenablog.com 3.2. 分岐命令 ChampSimは分岐ターゲットバッファ(BTB)を含む比較的詳細なプロセッサ・フロントエンドをモデル化している. ChampSimは異なるタイプの分岐を区別し,分岐命令が読み書き…

自作CPUのVIPTキャッシュポリシ導入検討 (7. Vivadoでのクリティカルパスの確認)

自作CPUのキャッシュについて,VIPTを導入して実装を開始した. もうちょっとクリティカルパスを特定するために,LiteXとは独立した環境でVivadoを実行し,Retimingを適用してみる. その結果をもって,現在の真のクリティカルパスを特定しようという訳だ. …

Vivado 2024.1 でMicroBlaze V が使えるようになった?

Vivado 2024.1 でMicroBlaze Vが使えるようになったようなので,詳細を見てみることにした.使ってみるのはのちのち. https://japan.xilinx.com/products/design-tools/microblaze-v.html#processor-details japan.xilinx.com サポートする命令セットアーキ…

マイクロアーキテクチャ・シミュレータのトレースログに必要な情報の解析についての論文を読む (3)

前回の続き: msyksphinz.hatenablog.com 3.1.1. mem-regsの改善 CVP-1 のトレースは、0 から 3 までの書き込みレジスタを持つ命令で構成される。 プリフェッチ・ロードとストアは、CVP-1トレースには書き込みレジスタがない(ベース・アップデートを行うス…

マイクロアーキテクチャ・シミュレータのトレースログに必要な情報の解析についての論文を読む (2)

前回の続き: msyksphinz.hatenablog.com トレースの解析と変換の決定 ChampSimのトレースフォーマット 各命令が64バイトを占有する固定フォーマット 命令ポインタ(8B) / is_branch(1B) / branch_taken (1B) / 書き込みレジスタ (2×1B) / ソースレジスタ (4×…

マイクロアーキテクチャ・シミュレータのトレースログに必要な情報の解析についての論文を読む (1)

特に意味はないのだが,論文をあさっていて以下の論文が気になったのでメモを取りながら読んでみることにした. https://ieeexplore.ieee.org/document/10289581 マイクロアーキテクチャの研究だと,主にパイプラインをモデル化したシミュレータを使って性能…