2023-10-01から1ヶ月間の記事一覧
データ・プリフェッチの技法であるBingoの論文を読んでいるので、概要をまとめる。 https://ieeexplore.ieee.org/document/8675188 github.com Bingoは、空間データ・プリフェッチの技術で、TAGEにインスパイアされたプリフェッチ技法である。 TAGEというの…
現在自作CPUではFPUの演算器としてIPのcvfpu(FPNew)を使用している。これはかなりまともに使える演算器IPだと思うので、現在サポートしようとしているベクトル命令のFPU演算命令もFPNewを使ってサポートしていきたい。 スカラFPUの場合はcvfpu内の各ユニット…
ChampSimの環境構築メモ: github.com git clone https://github.com/ChampSim/ChampSim.git cd ChampSim/ git submodule update --init --recursive vcpkg/vcpkg install ./config.sh champsim_config.json make wget https://dpc3.compas.cs.stonybrook.ed…
https://ieeexplore.ieee.org/document/1410068 次に性能評価について: 以下の表に示すように、SPEC2000のベンチマーク・スイートのサブセットを使用した。 SPECfp SPECint ammp mcf art tolf wupwise vpr swim praser lucas gap mgrid bzip2 applu galgel …
現在自作CPUではFPUの演算器としてIPのcvfpu(FPNew)を使用している。これはかなりまともに使える演算器IPだと思うので、現在サポートしようとしているベクトル命令のFPU演算命令もFPNewを使ってサポートしていきたい。 スカラFPUの場合はcvfpu内の各ユニット…
自作RISC-Vコアの実装がかなり安定してきたので、AAPGでさらなるテストを流している。 gitlab.com 前回はFRMの問題を修正して再度ランダムテストをすべて流した。600本程度テストを流して、落ちたのは以下。25本程度。 check_all_202310200609/result.json: …
https://ieeexplore.ieee.org/document/1410068 プリフェッチにはいろんなアルゴリズムがあるが、プリフェッチが効果を発揮するためのいくつかの要素がある: 正確に次のデータを予測すること タイムリーにデータを取得できること 過度なプリフェッチを行わ…
LiteXの合成環境を使って、各種コアの動作周波数とサイズを見積もった時のメモ。tag 2023.8でRocketが合成できなくなってしまっていた。 VexRiscv python3 -m litex_boards.targets.digilent_zedboard --cpu-type=vexriscv --build 論理合成結果: VexRiscv…
自作CPUにおいて、ある程度ベクトル移動命令が動作するようになってきた。 次はマスク命令の動作について考えてみる。マスク命令は、通常の算術演算命令と動作が違うのでちょっと厄介。 実装の方針をちょっとまとめる。 ベクトル演算におけるレーンとデータ…
自作RISC-Vコアの実装がかなり安定してきたので、AAPGでさらなるテストを流している。 gitlab.com もともとshakti向けに提供されている例を使って検証を拡充してみることにした。 落ちた命令を大きく区分けしてみた。半分以上が、csrwi命令によるFRMレジスタ…
自作RISC-Vコアの実装がかなり安定してきたので、AAPGでさらなるテストを流している。 gitlab.com もともとshakti向けに提供されている例を使って検証を拡充してみることにした。 atomicアクセス系の命令がFAILとなるのは要因がわかった。LSUパイプライン中…
自作CPUにおいて、ある程度ベクトル移動命令が動作するようになってきた。 ある程度基本的な算術演算命令が動くようになってきたので、今度はVLEN != DLENの動作について考えてみる。 VLEN != DLENの場合は、VLEN/DLENの回数だけ命令が流れていき、順番に処…
自作RISC-Vコアの実装がかなり安定してきたので、AAPGでさらなるテストを流している。 gitlab.com もともとshakti向けに提供されている例を使って検証を拡充してみることにした。 Shaktiで用意されているテストパタンが結構流れ始めた。それぞれのテストパタ…
自作CPUにおいて、ある程度ベクトル移動命令が動作するようになってきた。 ある程度基本的な算術演算命令が動くようになってきたので、今度はVLEN != DLENの動作について考えてみる。 VLEN != DLENの場合は、VLEN/DLENの回数だけ命令が流れていき、順番に処…
Intelのマイクロアーキテクチャで採用されているプリフェッチャの構成について調べたくなったので、いろんな文献を探して調査した。 参考にしたのは、"Resolving a L2-prefetch-caused parallel nonscaling on Intel Core microarchitecture"という文献。 ht…
https://ieeexplore.ieee.org/document/9923831 概要を大きくまとめる。 それでは、実際のPMP(Pattern Merge Prefetcher)の実装に移る。本プリフェッチメカニズムはトレーニングとプリフェッチのプロセスが2つ平行に動作する。 学習フェーズ: パタン・マー…
https://ieeexplore.ieee.org/document/9923831 概要を大きくまとめる。 用語確認: リージョン:アドレス空間上の領域。この論文ではページ(4KB)と同じサイズに設定。 ジェネレーション:一定時間に、あるリージョンに対してアクセスされたラインの集合 メモ…
自作RISC-Vコアの実装がかなり安定してきたので、AAPGでさらなるテストを流している。 gitlab.com もともとshakti向けに提供されている例を使って検証を拡充してみることにした。 gitlab.com Configファイルを読んで、それに基づいてAAPGを生成して実行する…
自作CPUにおいて、ある程度ベクトル移動命令が動作するようになってきた。 ベクトル命令のオペランドは、ベクトル・レジスタ、整数レジスタ、浮動小数点レジスタ、即値が選択できる。 これをどのように制御するかについて考えた。 scariv_vec_alu_datapath u…
自作CPUにおいて、ある程度ベクトル移動命令が動作するようになってきた。 ベクトルレジスタにデータを配置できるようになってきたので、次は算術演算命令を実装してみよう。 { "name":"vadd.vv v[11:7],v[24:20],v[19:15]vm[25:25]", "length":"32", "xlen"…
自作CPUにおいて、ある程度ベクトル移動命令が動作するようになってきた。 アウト・オブ・オーダ実行を前提とするので、ある程度高速にベクトル・ループが回ることを確認したい。 以下のようなベクトル・ループを作成した。 main: li a5,0 li a1,100 li a2,9…
自作CPUにベクトル実行エンジンを追加する試行をしている。 vsetvli命令で決定したvl値を使ってベクトル演算を行う場合、VLがVLMAXよりも小さい場合、過去の値をキープする必要がある。 アウトオブオーダ実行の場合古い値をもう一度とってきて書き込みをする…
自作CPUにベクトル実行エンジンを追加する試行をしている。 vl/vtypeレジスタはリネームをしないとなかなか性能的に厳しい。これを実現するための方法についていろいろ考えている。 ベクトル拡張命令で使用されるvlレジスタとvtypeレジスタは、プロセッサ内…
ちょっと諸事情で、Spatial Memory Streamingの論文を読んでいる。 https://ieeexplore.ieee.org/document/1635957 あまり時間をかけて読みたくなかったので、概要を理解するためにChatGPTにお願いした。以下はほとんどChatGPTで生成されたもの: 空間的メモ…
自作アウト・オブ・オーダRISC-Vコアについて。 幾つか改造して、整数側の物理レジスタのサイズと、浮動小数点側の物理レジスタのサイズを変えることができるように変更した。 localparam XPR_FLIST_SIZE = XPR_PRF_SIZE_PER_GRP; localparam FPR_FLIST_SIZE…
自作CPUにベクトル実行エンジンを追加する試行をしている。 ベクトルエンジンの基本的な価値を実装している。各データ型に応じて演算を切り替える、基本的な形だ。 generate for (genvar d_idx = 0; d_idx < riscv_vec_conf_pkg::DLEN_W / 64; d_idx++) begi…
最近はプリフェッチャの論文を読み漁っている。 https://ieeexplore.ieee.org/document/4147648 FDP (Feedback Directed Prefetching) のベースとなるアイデア プリフェッチ精度の情報収集:2つのカウンタを用意する preftotal : メモリに送られたプリフェッ…
最近はプリフェッチャの論文を読み漁っている。 https://ieeexplore.ieee.org/document/4147648 高性能プロセッサは、メインメモリのレイテンシの影響を軽減するためにハードウェアデータのプリフェッチを使用する。 プリフェッチは多くのプログラムで性能を…
ちょっと調べなければならなくなったので、メモ: https://ieeexplore.ieee.org/document/7856594 Efficiently Prefetching Complex Address Patterns VDLPのポイントは、上記のようにデルタ・ヒストリ・バッファ(Delta History Buffer: DHB) を元に次のプリ…
ちょっと調べなければならなくなったので、メモ: https://ieeexplore.ieee.org/document/7856594 Efficiently Prefetching Complex Address Patterns このプリフェッチャの概要として、キャッシュラインの差分の履歴を構築して、それらの履歴を使用して予測…