2024-01-01から1年間の記事一覧
前回、FENCE命令における命令の順序について紹介したが、メモリアクセスにおいてより厳密な定義がある: Acquire アノテーション:ある命令に対してこのアノテーションが付属していると、この命令以降がクリティカルセクションであることを意味し、この命令…
RISC-Vにおけるメモリアクセスのフェンス命令は、以下のFENCE命令が定義されている。 基本的には、FENCE命令の前後におけるメモリアクセスの順序を強制するというのがこの命令の目的なのだが、オプションを見てわかる通りもう少し細かな制御ができる。 prede…
自作CPUの面積削減の試行をしている間、どこかの段階でサイクル性能がデグレードしてしまった。 デグレードする前のリビジョンを特定したので、デグレード前とデグレード後の実行ログは取得できたのだが、Dhrystoneの実行ログは非常に長いので、どこが原因な…
自作CPUの面積削減の試行をしている間、どこかの段階でサイクル性能がデグレードしてしまった。 デグレードする前のリビジョンを特定したので、デグレード前とデグレード後の実行ログは取得できたのだが、Dhrystoneの実行ログは非常に長いので、どこが原因な…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com A.4 メインメモリを超えて RVWMOは、現時点では、FENCE.I、SF…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com セクションA.3.9では、パイプライン依存性に関する規則12と13…
github.com RISC-V IOMMUの構成について、概略をざっくり理解するためのメモ。 仕様書の構成: 導入:IOMMUの概要、用途、配置とデータフロー、および主要機能。 データ構造:デバイスディレクトリテーブル(DDT)、プロセスディレクトリテーブル(PDT)など…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com セクションA.3.8では、RISC-VのRVWMOメモリモデルにおける構…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com RISC-V命令セットアーキテクチャにおける明示的な同期に関す…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com A.3.6 フェンス(規則4) 規則4によれば、FENCE命令はプログ…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 msyksphinz.hatenablog.com A.3 RVWMOルールの説明 RISC-Vアーキテクチャの重要な部分で…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 もうちょっと詳しく、RISC-V仕様書のAppendxx A. RVWMOの節を読み解いていくことにした。 ここでの内容は、公理や保存プログラム順序の規則の意味と意図を明確にすることを目的と…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 ChatGPTの力を借りながら、要点をまとめていく。 保存されたプログラム順序 プログラムの任意の実行におけるグローバルメモリのアクセス順序は、各HARTのプログラム順序の一部を尊…
MX: Enhancing RISC-V's Vector ISA for Ultra-Low Overhead, Energy-Efficient Matrix Multiplication 本論文において、Dense Matrix Multiplication(MatMul)は、線形代数、デジタル信号処理(DSP)、グラフィックス、及び機械学習など、多岐にわたる計算…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 ChatGPTの力を借りながら、要点をまとめていく。 Syntactic Dependencies RVWMOメモリモデルの定義は、構文依存性の概念に部分的に基づいており、以下のように定義されている: レ…
RISC-VにおけるRVWMOのメモリモデルについて、仕様書を読み直すことにした。 ChatGPTの力を借りながら、要点をまとめていく。 本章においては、RISC-Vのメモリ一貫性モデルに関する定義を述べる。 メモリ一貫性モデル: メモリのロードが返す値を規定する規則…
ROBの削減効果の確認。デバッグして一応テストパタンが通るようになってきたので、Vivadoで論理合成してその効果を確認していきたい。 ROB面積削減適用前 +-------------------------+----------------------------+------------+------------+---------+---…
自作CPUの面積が結構大きいので、面積削減を検討していきたい。 次に、ROBの削減について考えていきたい。 現状、ROBの面積が非常に大きくなってしまっているのを確認している。 明らかに問題なのは、例外を扱う論理だ。 ROBの各エントリで律儀に例外情報と…
例えば以下の2つのVerilogファイルを持ったプロジェクトを考える。 package.sv package normal_package; localparam SIZE = 32; endpackage // normal_package module2.sv module module2 import normal_package::*; ( input logic clk, input logic reset, …
自作CPUの面積が結構大きいので、面積削減を検討していきたい。 まずはStore Queue(STQ)から。いろいろ見ていると、フォワーディングパスからストアデータの取得のための判定論理が大きいようだ。 STQは、ストア命令のアドレスとデータを保持して、データを…
SNS界隈で少し話題になっていた記事、「How to Design ISA」を読んでみた。 https://queue.acm.org/detail.cfm?id=3639445 要点を以下にまとめてみた。 ISAの役割と重要性: ISAはコンパイラとマイクロアーキテクチャ間の「共通言語」であり、コンパイラの中…
ちょっと気になって、NaxRiscvの面積解析を行った。 結構小さくまとまっている。どうやって作っているのかな? msyksphinz.hatenablog.com
ベクトル演算システムの構造をまとめておこうと思う。 1. システムの全体構成 ベクトル演算システムは、主にベクトル演算側とベクトルLSU側の二つの部分に分類される。 フロントエンド部分では、スカラ演算機能にベクトル用のリネームユニットなどを追加し、…
前回、ベンチマークのためにAXPYを動かした。 ハザードが発生しても、投機実行を継続するためにuopを生成し続けるポリシを採用すると、MSHRへの割り当て以外の時にも長いハザードが発生してしまい、結果的に性能が大きく落ちていた。 ISS CYCLE is updated t…
ベンチマーキングのために、RISC-Vのベクトル命令で構成されたAXPYを動作させてみることにする。 前回の実行では、各イタレーションで、かなりの空きサイクルがある。MSHRの空きも大きい。やはりもうちょっとアグレッシブにMSHRの割り当てを行って、可能な限…
ベンチマーキングのために、RISC-Vのベクトル命令で構成されたAXPYを動作させてみることにする。 #include "vector_defines_m8.h" void axpy_intrinsics(double a, double *dx, double *dy, int n) { int i; long gvl = _MM_VSETVLI(e64, n); //PLCT // _MMR…
実装の考え直しをして、Uop Generatorを移動して、アドレス生成の調整を行う。 1uop分しかReplay Queueには格納されないので、再度パイプラインに流すときのアドレスの調整を行う必要がある。 通常は、最初のアドレスがrs1+0でそれをベースにaddress generat…
ベクトル命令の実装検討、リプレイキューの構造について考え直す。 ベクトル命令は1命令で複数のuopに分解されるが、一度ハザードが発生してそれ以降のuopをすべてリプレイキューに格納すると、必要なリプレイキューの大きさが非常に大きくなってしまう。 そ…
RISC-VのRVVにはFixed-Point命令セットが含まれており、完全にRVV1.0を名乗るためにはこれらもサポートしなければならない。 12. Vector Fixed-Point Arithmetic Instructions 12.1. Vector Single-Width Saturating Add and Subtract 12.2. Vector Single-W…
RISC-Vのベクトル・パイプラインには、実際には演算が適用されない領域がある。それが、 Prestart Region Masked Element Tail Region というものだ。PrestartはVSTARTよりも小さな値(要するに、ベクトル命令がリスタートするときの最初の要素) Masked Ele…