2025-01-01から1年間の記事一覧
chipsandcheese.com 上記の文章が面白かったので日本語にしてみる: 分岐予測 高速で正確な分岐予測は、性能と電力効率の両方にとって非常に重要である。SiFiveはP550に9.1KiBの分岐履歴テーブルを持たせ、コアが過去の分岐動作と分岐結果を関連付けるのを助…
chipsandcheese.com 上記の文章が面白かったので日本語にしてみる: RISC-Vは比較的若く、オープンソースの命令セットである。 これまでのところ、RISC-Vはマイクロコントローラーや学術用アプリケーションで支持を得ている。 例えば、Nvidiaは自社のGPUに搭…
PULPの開発する、ハードウェア開発用の依存関係解決ツールBenderについて調査している。 github.com repo_B がマイナーバージョンアップした場合: 次に、 repo_B が下位互換性を維持しつつマイナーバージョンアップした場合を考える。これを、マイナーバー…
msyksphinz.hatenablog.com 時間をかけたが、いろんな部分をつまみ食いしながらだいぶ読み切った。 今まで、適当に理解していた部分とかを結構カバーできたと思う。やはり時間をかけてちゃんと読むのはいいな。 途中の、歴史的なパイプラインの変遷とか、VLI…
PULPの開発する、ハードウェア開発用の依存関係解決ツールBenderについて調査している。 github.com 試しに、以下のようなリポジトリを作ってみよう。 repo_A リポジトリと repo_B リポジトリはそれぞれモジュール A と B を管理している。 $ cd repo_A $ ca…
IOMMUのアドレス変換プロセス デバイスコンテキストの特定 メモリアクセスを行ったデバイスの識別子(device_id)を利用してデバイスディレクトリテーブル(DDT)を参照する。 このDDTを辿ることで、対応するデバイスコンテキスト(Device Context, DC)を特…
サイクル精度シミュレータを使って、各種分岐予測の実装でCoremarkの性能がどのように変化するかちょっと興味があって計ってみることにした。 サイクル精度シミュレータとしてはSniperを使用する。Sniperにはフロントエンドの分岐予測器の実装があって、これ…
サイクル精度シミュレータを使って、各種分岐予測の実装でCoremarkの性能がどのように変化するかちょっと興味があって計ってみることにした。 サイクル精度シミュレータとしてはSniperを使用する。Sniperにはフロントエンドの分岐予測器の実装があって、これ…
PULPの開発する、ハードウェア開発用の依存関係解決ツールBenderについて調査している。 github.com まず概要部分を日本語に翻訳してみよう。 Benderはハードウェア設計プロジェクトのための依存関係管理ツールです。IP間の依存関係を定義し、単体テストを実…
多分仕様書を読むと当たり前のように書いてあるのだろうけど、ふと気になったのでやってみた。 Verilogにおいて、パラメータなどを使ってgenerate ifで生成するデザインを切り替えるような場合、ifの成立しない側にめちゃくちゃなことを書いていても問題ない…
IOMMUが取り扱うべきアドレスについてまとめよう。CPUには通常仮想アドレス(Virtual Address: VA)と物理アドレス(Physical Address: PA)が定義されている。 しかし、ハイパーバイザが入ってくると話は別になってくる。ハイパーバイザは、ユーザソフトウェア…
次に、IOMMUが実際のシステム内でどのように使われるのか、仕様書に含まれる図を眺めながら見てみよう。 下記の図には、大きく分けて以下の重要なコンポーネントが含まれている。 RISC-V Cores: RISC-V CPU自体である。 IOデバイス: IO Device AとIO Device …
Chapter 1: IOMMU(入力出力メモリ管理ユニット)とは? IOMMUとは、その名の通りIOデバイス向けのMMUである。IOデバイスというのは、GPGPU、AI Acceleratorなどの”CPU”以外のデバイスを指す。 MMUというのは、Memory Management Unitで、基本的な機能として…
並列コンピュータ 非定量的アプローチ作者:天野 英晴オーム社Amazon 結構前に勝って積読していた本を読み直そうとしている。 前書きの所に書いてあるが、この本は「非定量的アプローチ」というところで具体的な数値やグラフなどを一切排除している。 その結…
例えば、4CPU + L2キャッシュが存在している状態をまずは考えよう。前回の記事の状態から、CPU2が書き込みを発生させるとどうなるか。 ※以下の説明はChatGPTにかなり頼っているところがある。間違っているところもあるかもしれない... ACEプロトコル ACE に…
adventofcode.com 久しぶりにC++を使ってプログラミングしている。なんかソフトウェアが書けなくなって参ってしまうな... 6日目。マップを通りながら、石にぶつかると方向を変えていく。何ステップで脱出できるかという話だが、素直にマップ上をシミュレーシ…
例えば、4CPU + L2キャッシュが存在している状態をまずは考えよう。前回の記事の状態から、さらに、この状態でCPU1が同じキャッシュラインXを読み込もうとした場合はどうなるか。 ※以下の説明はChatGPTにかなり頼っているところがある。間違っているところも…
例えば、4CPU + L2キャッシュが存在している状態をまずは考えよう。まずは誰もキャッシュをロードしていない状態で、CPUコア0がキャッシュをロードするとどうなるか。 ※以下の説明はChatGPTにかなり頼っているところがある。間違っているところもあるかもし…
前回の入門:msyksphinz.hatenablog.com 並列プログラミングに改めて入門するために並行プログラミング入門を読んでみることにした(積読しまくっている)。 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ作者:高野 祐輝オライリー…
例えば、4CPU + L2キャッシュが存在している状態をまずは考えよう。まずは誰もキャッシュをロードしていない状態で、CPUコア0がキャッシュをロードするとどうなるか。 ※以下の説明はChatGPTにかなり頼っているところがある。間違っているところもあるかもし…
前回の入門:msyksphinz.hatenablog.com 並列プログラミングに改めて入門するために並行プログラミング入門を読んでみることにした(積読しまくっている)。 並行プログラミング入門 ―Rust、C、アセンブリによる実装からのアプローチ作者:高野 祐輝オライリー…
サイクル精度シミュレータのSniperは、CPUをモデル化して性能を見積もることができるシミュレータが、深く探っているといろいろと問題が出てくる。 例えば、モデルの制限上同一キャッシュラインへのアクセスについて、ヒット・ミスの履歴が正確に表示されな…
ACE / CHI / TileLink のチャネル構成の違い それぞれのバスプロトコルについて、チャネルの構成の違いをまとめてみた。一部ChatGPTに教えてもらっている。 ACE チャネル名 方向 概要・役割 AW (Address Write) マスター → スレーブ 書き込みアドレスを送信…
ACE / CHI / TileLinkの違い ACEはAXI4にコヒーレンス機能を拡張した比較的シンプルなプロトコルで、小~中規模SoC向け。 CHIはACEの次世代規格で、大規模・高性能SoCを視野に入れ、ディレクタリベースのコヒーレンスやNoC対応などスケーラビリティや柔軟性…
あけましておめでとうございます。今年も、FPGA開発日記をよろしくお願いします。 2025年1月4日で、FPGA開発日記は10年目を迎えます。 今年、やりたいテーマをメモしていたのでこれをひたすら列挙しておく: UVMについての理解を深める。自作CPUプロジェクト…