2021-11-01から1ヶ月間の記事一覧
RISC-V Day Tokyo 2021 Autumnで配布されたChisel本、「Chiselで始めるデジタル回路設計」を献本いただきました。 RISC-V Day Tokyo幹事団の皆様、ありがとうございます。 本書の翻訳の進捗については私は全く関わっていないのですが、Slack上で議論が行われ…
自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 次に検討するのは、LDQ/STQの最適化だ。以前の記事で説明したとおり、LDQとSTQの間でインタフェースを作成し、STQからのパイプライン…
自作CPUの実装、ロードストア命令の物理アドレスが決まらないうえでのハザードが性能ボトルネックになっているのを見た。 次に検討するのは、LDQ/STQの最適化だ。以前の記事で説明したとおり、LDQとSTQの間でインタフェースを作成し、STQからのパイプライン…
はてなブログ10周年特別お題「はてなブロガーに10の質問」 これははてなブログの企画です。別に記念日でも何でもありませんが、せっかくなので乗っかることにしました。 FPGA開発日記は2015年からおおよそ6年間続いています。10の質問に答えることでこの6年…
RISC-VのPrivileged仕様Version 1.12 ではePMPレジスタ群(PMP Enhancements)についての仕様が検討されている。 これについて調査してみよう。 仕様書は以下に置いてある。誰でもダウンロードできる。 https://raw.githubusercontent.com/riscv/riscv-tee/mai…
RISC-VのPrivileged仕様Version 1.12 ではCMO命令群(Cache Management Operation)についての仕様が検討されている。 これについて調査してみよう。 仕様書は以下に置いてある。誰でもダウンロードできる。 github.com キャッシュ操作命令については以下の3種…
自作CPUの実装、ロードストア命令のバンク化を実現した結果分岐予測の性能ボトルネックが明らかになった。 性能ボトルネックになっているのは、s0ステージで命令フェッチ、s2ステージで分岐先を予測とということで合計2サイクル分岐予測に必要だったため、命…
自作CPUの性能向上のために、これまで単一バンクだったデータキャッシュを作り変えてみよう。 バンク化の効果を確かめる。以下のようなプログラムを作ってLSUパイプラインの2つから別のバンクにアクセスをかけ、コンフリクトが発生するかどうかを確認する。 …
自作CPUの性能向上のために、これまで単一バンクだったデータキャッシュを作り変えてみよう。 一般的に高性能プロセッサでは複数のLSUパイプラインが同時にデータキャッシュにアクセスする。しかしSRAMは一般的に1ポートしか読み込みポートが存在しないので…
前回読んだ資料を基に、自作CPUのLSUを作り変えてみようと思う。 EECS 470 Lecture 12 Memory Speculation https://web.eecs.umich.edu/~twenisch/470_F07/lectures/12.pdf 現時点で私の自作CPUはLDQとSTQが別々に実装されているが、LDQはパイプライン実行時…
ある程度頭に入っているつもりだが、CPUにおけるアウトオブオーダ実行でのメモリアクセス命令の取り扱いについて確認する。 EECS 470 Lecture 12 Memory Speculation https://web.eecs.umich.edu/~twenisch/470_F07/lectures/12.pdf 動的にメモリ操作の順序…
性能評価用に各命令のレイテンシを測りたいのだけれども、最終的な出力ではレイテンシが大きい順番に命令をソートして出力したい。 DPIを使用すれば上手く行きそうだがDPIを使うこと自体が面倒くさい。なんかSystemVerilogで良い機能無いかなーと探していた…
分岐予測は設計経験がないうえにいろいろ試行錯誤しながら作っているのだが、なかなか性能が伸びない。 RASの実装についていろいろ考えなおして、やっとこさある程度安定して動きそうな構成を見つけてきた。 Dhrystoneはまだ完走していないが、殆ど完走でき…
UHDMというのは、ハードウェアを表現するためのデータモデルで、YAML形式で表現されている。 エコシステム全体でSystemVerilogをサポートするための共通オブジェクトフォーマットとして、UHDMが定義されており、このための論文を読んでみることにした。 体裁…
UHDMというのは、ハードウェアを表現するためのデータモデルで、YAML形式で表現されている。 エコシステム全体でSystemVerilogをサポートするための共通オブジェクトフォーマットとして、UHDMが定義されており、このための論文を読んでみることにした。 体裁…