FPGA開発日記

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

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

キャッシュのコヒーレンス・プロトコルについてまとめる (MOESIプロトコル)

マルチコアにおいて、キャッシュ・コヒーレンス・プロトコルというのは切っても切り離せない問題だ。 幾つかのプロトコルについてメモを書いたので、一応ここに残しておく。 MOESIプロトコル 前回まとめたMESIプロトコルに対して、O(Owned)状態を加える。 O(…

キャッシュのコヒーレンス・プロトコルについてまとめる (MSI/MESIプロトコル)

マルチコアにおいて、キャッシュ・コヒーレンス・プロトコルというのは切っても切り離せない問題だ。 幾つかのプロトコルについてメモを書いたので、一応ここに残しておく。 MSIプロトコル MESIプロトコル MOESIプロトコル MSIプロトコル キャッシュ内のブロ…

自作CPUのフロントエンドデータ幅とバックエンドデータ幅の分離検討

現在の自作CPUは、簡易的にフロントエンドとバックエンドのデータ幅を一致させている。 例えば、バックエンドのキャッシュラインの幅が64Bであれば、フロントエンドも64Bにしている。 しかし、さすがにフロントエンドのデコードラインで64Bを一気にデコード…

"Constructing a Weak Memory Model" を読む (4. GAMのOOOMPへの拡張)

Weak Memory Modelについてもう少し知識をつけたかったので、論文を読んでみることにした。 arxiv.org 基本的にDeepLに翻訳してもらったものを、自分で読み直しながら直しているだけなので、自分でまとめているわけではない。 冗長なのは無編集でブログに貼…

"Constructing a Weak Memory Model" を読む (3. モデルの構築)

Weak Memory Modelについてもう少し知識をつけたかったので、論文を読んでみることにした。 arxiv.org 基本的にDeepLに翻訳してもらったものを、自分で読み直しながら直しているだけなので、自分でまとめているわけではない。 冗長なのは無編集でブログに貼…

"Constructing a Weak Memory Model" を読む (2. 背景と形式的定義)

Weak Memory Modelについてもう少し知識をつけたかったので、論文を読んでみることにした。 arxiv.org 基本的にDeepLに翻訳してもらったものを、自分で読み直しながら直しているだけなので、自分でまとめているわけではない。 冗長なのは無編集でブログに貼…

"Constructing a Weak Memory Model" を読む (1. 概要 / Introduction)

Weak Memory Modelについてもう少し知識をつけたかったので、論文を読んでみることにした。 arxiv.org 基本的にDeepLに翻訳してもらったものを、自分で読み直しながら直しているだけなので、自分でまとめているわけではない。 冗長なのは無編集でブログに貼…

自作CPUとサイクルモデルシミュレータのサイクル性能比較

自作CPUとサイクル精度シミュレータのサイクル比較を行っている。 モデルのパラメータが違っているので、いろいろと調整が必要だが、おおむね大きな流れとしては間違っていないように見える。 あとは分岐予測だな。RTL側の分岐予測がやはりうまく動いていな…

自作CPUの命令発行ポリシの最適化検討 (1. 初期改良とその評価)

現在、自作CPUにおけるLSUのIQ(命令発行キュー)は、LSUパイプライン毎に分割されている。 これ自体を修正することも考えられるのだが、問題はIQへのディスパッチが偏りすぎていることだ。 現在の実装は非常にサボっていて、一度に発行できるメモリアクセス命…

自作CPUの面積削減検討 (7. 再現パタンによる性能デグレードの解決策の考察)

前回の解析で、なんとなく要因が分かってきたので、とりあえずの解決策を適用する。 つまり、ALUからのフォワーディングは直接データを受け取るように部分的に変更を加える。 それ以外のフォワーディング(LSUから、CSUから)などはフォワーディングを受け取ら…

自作CPUの面積削減検討 (6. 再現パタンによる性能デグレードの解析)

自作CPUの面積削減の試行をしている間、どこかの段階でサイクル性能がデグレードしてしまった。 デグレードする前のリビジョンを特定したので、デグレード前とデグレード後の実行ログは取得できたのだが、Dhrystoneの実行ログは非常に長いので、どこが原因な…

RISC-VにおけるAcquire・ReleaseアノテーションとSpinlockの実現方法について

前回、FENCE命令における命令の順序について紹介したが、メモリアクセスにおいてより厳密な定義がある: Acquire アノテーション:ある命令に対してこのアノテーションが付属していると、この命令以降がクリティカルセクションであることを意味し、この命令…

RISC-VにおけるFENCE命令の詳細について

RISC-Vにおけるメモリアクセスのフェンス命令は、以下のFENCE命令が定義されている。 基本的には、FENCE命令の前後におけるメモリアクセスの順序を強制するというのがこの命令の目的なのだが、オプションを見てわかる通りもう少し細かな制御ができる。 prede…

自作CPUの面積削減検討 (5. リプレイの要因解析)

自作CPUの面積削減の試行をしている間、どこかの段階でサイクル性能がデグレードしてしまった。 デグレードする前のリビジョンを特定したので、デグレード前とデグレード後の実行ログは取得できたのだが、Dhrystoneの実行ログは非常に長いので、どこが原因な…

自作CPUの面積削減検討 (4. サイクルデグレード解析用のスクリプトを作成)

自作CPUの面積削減の試行をしている間、どこかの段階でサイクル性能がデグレードしてしまった。 デグレードする前のリビジョンを特定したので、デグレード前とデグレード後の実行ログは取得できたのだが、Dhrystoneの実行ログは非常に長いので、どこが原因な…

RISC-VにおけるRVWMOの仕様について読み直す (RISC-V仕様書 : Appendix A. RVWMO Explanatory Material, Version 0.1)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com A.4 メインメモリを超えて RVWMOは、現時点では、FENCE.I、SF…

RISC-VにおけるRVWMOの仕様について読み直す (6)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com セクションA.3.9では、パイプライン依存性に関する規則12と13…

RISC-V IOMMU の構成についてマニュアルを読んでまとめる

github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 仕様書の構成: 導入:IOMMUの概要、用途、配置とデータフロー、および主要機能。 データ構造:デバイスディレクトリテーブル(DDT)、プロセスディレクトリテーブル(PDT)など…

RISC-VにおけるRVWMOの仕様について読み直す (5)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com セクションA.3.8では、RISC-VのRVWMOメモリモデルにおける構…

RISC-VにおけるRVWMOの仕様について読み直す (4)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com RISC-V命令セットアーキテクチャにおける明示的な同期に関す…

RISC-VにおけるRVWMOの仕様について読み直す (3)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com A.3.6 フェンス(規則4) 規則4によれば、FENCE命令はプログ…

RISC-VにおけるRVWMOの仕様について読み直す (2)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com A.3 RVWMOルールの説明 RISC-Vアーキテクチャの重要な部分で…

RISC-VにおけるRVWMOの仕様について読み直す (1)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 ここでの内容は、公理や保存プログラム順序の規則の意味と意図を明確にすることを目的と…

RISC-VにおけるRVWMOの仕様について読み直す (3. Preserved Program Order / Memory Model Axioms)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 ChatGPTの力を借りながら、要点をまとめていく。 保存されたプログラム順序 プログラムの任意の実行におけるグローバルメモリのアクセス順序は、各HARTのプログラム順序の一部を尊…

MX: Enhancing RISC-V's Vector ISA for Ultra-Low Overhead, Energy-Efficient Matrix Multiplication の論文を読む

MX: Enhancing RISC-V's Vector ISA for Ultra-Low Overhead, Energy-Efficient Matrix Multiplication 本論文において、Dense Matrix Multiplication(MatMul)は、線形代数、デジタル信号処理(DSP)、グラフィックス、及び機械学習など、多岐にわたる計算…

RISC-VにおけるRVWMOの仕様について読み直す (2. 構文依存性の定義)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 ChatGPTの力を借りながら、要点をまとめていく。 Syntactic Dependencies RVWMOメモリモデルの定義は、構文依存性の概念に部分的に基づいており、以下のように定義されている: レ…

RISC-VにおけるRVWMOの仕様について読み直す (1. RVWMOの概要)

RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 ChatGPTの力を借りながら、要点をまとめていく。 本章においては、RISC-Vのメモリ一貫性モデルに関する定義を述べる。 メモリ一貫性モデル: メモリのロードが返す値を規定する規則…